IP Library Granted Patent US 8,520,740
Granted Patent B2
US 8,520,740 · App. 12/874,564 · Granted Aug 27, 2013

Arithmetic decoding acceleration

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,520,740
App. No.
12/874,564
Granted
Aug 27, 2013
Kind
B2
Abstract

Mechanisms for performing decoding of context-adaptive binary arithmetic coding (CABAC) encoded data. The mechanisms receive, in a first single instruction multiple data (SIMD) vector register of the data processing system, CABAC encoded data of a bit stream. The CABAC encoded data includes a value to be decoded and bit stream state information. The mechanisms receive, in a second SIMD vector register of the data processing system, CABAC decoder context information. The mechanisms process the value, the bit stream state information, and the CABAC decoder context information in a non-recursive manner to generate a decoded value, updated bit stream state information, and updated CABAC decoder context information. The mechanisms store, in a third SIMD vector register, a result vector that combines the decoded value, updated bit stream state information, and updated CABAC decoder context information. The mechanisms use the decoded value to generate a video output on the data processing system.

Claims (41)

1. A method, in a data processing system, for performing decoding of context-adaptive binary arithmetic coding (CABAC) encoded data, comprising:

receiving, in a first single instruction multiple data (SIMD) vector register of the data processing system, CABAC encoded data of a bit stream, wherein the CABAC encoded data comprises a value to be decoded and bit stream state information, wherein the CABAC encoded data of the bit stream is retrieved from a bit stream buffer, and wherein the method further comprises:

generating, in response to an amount of bit stream data in the bit stream buffer falling below a threshold, an interrupt to a bit stream service handler for loading a next portion of the bit stream into the bit stream buffer;

receiving, in a second SIMD vector register of the data processing system, CABAC decoder context information;

processing, by a processor, the value, the bit stream state information, and the CABAC decoder context information in a non-recursive manner to generate a decoded value, updated bit stream state information, and updated CABAC decoder context information;

storing, in a third SIMD vector register, a result vector that combines the decoded value, updated bit stream state information, and updated CABAC decoder context information; and

using the decoded value to generate a video output on the data processing system.

2. The method of claim 1 , wherein the first SIMD vector register stores the CABAC encoded data of the bit stream using a same data format in the first SIMD vector register as a data format of the CABAC decoder context information stored in the second SIMD vector register.

3. The method of claim 2 , wherein the result vector stored in the third SIMD vector register has a same data format as the CABAC encoded data of the bit stream stored in the first SIMD vector register and the CABAC decoder context information stored in the second SIMD vector register.

4. The method of claim 1 , wherein the result vector in the third SIMD vector register is provided as at least a portion of the CABAC decoder context information in the second SIMD vector register for a next iteration of the method.

5. The method of claim 1 , wherein the first, second, and third SIMD vector registers are general purpose registers of the data processing system.

6. The method of claim 1 , wherein the method is implemented using a pipeline-able decode instruction.

7. The method of claim 1 , wherein the method is iterated, in the data processing system, for a plurality of different bit streams, and wherein each iteration of the method is executed in parallel in the data processing system at substantially a same time.

8. A data processing system, comprising:

a processor; and

a memory coupled to the processor, wherein the memory comprises instructions which, when executed by the processor, cause the processor to perform a context-adaptive binary arithmetic coding (CABAC) decode operation by:

receiving, in a first single instruction multiple data (SIMD) vector register of the processor, CABAC encoded data of a bit stream, wherein the CABAC encoded data comprises a value to be decoded and bit stream state information, wherein CABAC encoded data of the bit stream is retrieved from a bit stream buffer, and wherein the CABAC decode operation is further performed by:

generating, in response to an amount of bit stream data in the bit stream buffer falling below a threshold, an interrupt to a bit stream service handler for loading a next portion of the bit stream into the bit stream buffer;

receiving, in a second SIMD vector register of the processor, CABAC decoder context information;

processing the value, the bit stream state information, and the CABAC decoder context information in a non-recursive manner to generate a decoded value, updated bit stream state information, and updated CABAC decoder context information;

storing, in a third SIMD vector register of the processor, a result vector that combines the decoded value, updated bit stream state information, and updated CABAC decoder context information; and

using the decoded value to generate a video output on the data processing system.

9. The system of claim 8 , wherein the first SIMD vector register stores the CABAC encoded data of the bit stream using a same data format in the first SIMD vector register as a data format of the CABAC decoder context information stored in the second SIMD vector register.

10. The system of claim 9 , wherein the result vector stored in the third SIMD vector register has a same data format as the CABAC encoded data of the bit stream stored in the first SIMD vector register and the CABAC decoder context information stored in the second SIMD vector register.

11. The system of claim 8 , wherein the result vector in the third SIMD vector register is provided as at least a portion of the CABAC decoder context information in the second SIMD vector register for a next iteration of the method.

12. The system of claim 8 , wherein the first, second, and third SIMD vector registers are general purpose registers of the data processing system.

13. The system of claim 8 , wherein the CABAC decode operation is implemented using a pipeline-able decode instruction.

14. The system of claim 8 , wherein the CABAC decode operation is iterated, in the data processing system, for a plurality of different bit streams, and wherein each iteration of the CABAC decode operation is executed in parallel in the data processing system at substantially a same time.

15. A computer program product comprising a non-transitory computer readable storage medium having a computer readable program stored therein, wherein the computer readable program, when executed on a computing device, causes the computing device to perform a context-adaptive binary arithmetic coding (CABAC) decode operation by:

receiving, in a first single instruction multiple data (SIMD) vector register of the computing device, CABAC encoded data of a bit stream, wherein the CABAC encoded data comprises a value to be decoded and bit stream state information, wherein CABAC encoded data of the bit stream is retrieved from a bit stream buffer, and wherein the CABAC decode operation is further performed by:

generating, in response to an amount of bit stream data in the bit stream buffer falling below a threshold, an interrupt to a bit stream service handler for loading a next portion of the bit stream into the bit stream buffer;

receiving, in a second SIMD vector register of the computing device, CABAC decoder context information;

processing the value, the bit stream state information, and the CABAC decoder context information in a non-recursive manner to generate a decoded value, updated bit stream state information, and updated CABAC decoder context information;

storing, in a third SIMD vector register of the computing device, a result vector that combines the decoded value, updated bit stream state information, and updated CABAC decoder context information; and

using the decoded value to generate a video output on the computing device.

16. The computer program product of claim 15 , wherein the first SIMD vector register stores the CABAL encoded data of the bit stream using a same data format in the first SIMD vector register as a data format of the CABAC decoder context information stored in the second SIMD vector register.

17. The computer program product of claim 16 , wherein the result vector stored in the third SIMD vector register has a same data format as the CABAC encoded data of the bit stream stored in the first SIMD vector register and the CABAC decoder context information stored in the second SIMD vector register.

18. The computer program product of claim 15 , wherein the result vector in the third SIMD vector register is provided as at least a portion of the CABAC decoder context information in the second SIMD vector register for a next iteration of the method.

19. The computer program product of claim 15 , wherein the first, second, and third SIMD vector registers are general purpose registers of the computing device.

20. The computer program product of claim 15 , wherein the CABAC decode operation is implemented using a pipeline-able decode instruction.

21. The computer program product of claim 15 , wherein the CABAC decode operation is iterated, in the computing device, for a plurality of different bit streams, and wherein each iteration of the CABAC decode operation is executed in parallel in the computing device at substantially a same time.

Assignments (5)
CHANGE OF NAME Recorded Oct 13, 2016
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY INTERACTIVE ENTERTAINMENT INC.
Reel/Frame 040350/0891 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2011
From: SONY NETWORK ENTERTAINMENT PLATFORM INC.
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 027446/0443 →
CHANGE OF NAME Recorded Dec 26, 2011
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY NETWORK ENTERTAINMENT PLATFORM INC.
Reel/Frame 027444/0452 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2010
From: FLACHS, BRIAN; JOHNS, CHARLES R.; MICHAEL, BRAD W.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 024936/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2010
From: KUTNER, MICHAEL A.; WANG, NAXIN
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 024937/0265 →