IP Library Granted Patent US 9,258,565
Granted Patent B1
US 9,258,565 · App. 13/172,775 · Granted Feb 9, 2016

Context model cache-management in a dual-pipeline CABAC architecture

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 9,258,565
App. No.
13/172,775
Granted
Feb 9, 2016
Kind
B1
Abstract

A method and system are disclosed for managing cache memory in a dual-pipelined CABAC encoder. A request for a context model is received from both encoder pipelines. If the requested context model is not stored in cache, the requested context model is retrieved from a context table. At least one context model stored in cache is written to the context table. The retrieved context model is updated and written to the cache. If the requested context model is stored in cache, and if the requested context model was updated in the previous clock cycle, the requested context model is retrieved from the pipeline, updated, and written to cache. If the requested context model is not stored in cache, and if the requested contest model was not updated in the previous clock cycle, the requested context model retrieved from cache, updated, and written back to cache.

Claims (117)

1. A method for managing cache memory in context-adaptive binary arithmetic coding (CABAC) implemented in a synchronous dual-pipelined environment, the method comprising:

receiving, at a CABAC encoder cache memory in a first clock cycle, a first request for a first context model from a first context lookup module communicatively coupled to a first encoder and a second request for a second context model from a second context lookup module communicatively coupled to a second encoder;

determining if the first context model is stored in cache memory, wherein the cache memory is configured to store at least one previously updated context model;

responsive to a determination that a cached version of the first context model is stored in the cache memory, determining whether an updated version of the first context model is available at a respective output of either the first encoder or the second encoder;

responsive to a determination that the updated version of the first context model is available at the respective output, retrieving the updated version of the first context model from the respective output;

providing the updated version of the first context model to the first encoder, wherein the first encoder is configured to

utilize the updated version of the first context model to encode a first bin, and

update the updated version of the first context model to produce a subsequent version of the first context model;

receiving, at the cache memory in a second clock cycle, the subsequent version of the first context model from the output of the first encoder; and

writing the subsequent version of the first context model in the cache memory in response to the receiving the subsequent version at the cache memory.

2. The method of claim 1 , further comprising:

writing the subsequent version of the first context model in a context table, wherein

the cache memory is communicatively coupled to the context table,

the context table stores an older version of the first context model, and

the subsequent version of the first context model overwrites the older version of the first context model in the context table.

3. The method of claim 2 , further comprising:

determining which of the at least one previously updated context model stored in the cache memory was least recently updated; and

writing the determined previously updated context model to the context table.

4. The method of claim 2 , further comprising:

determining which of the at least one previously updated context model stored in the cache memory was most recently requested; and

writing the determined previously updated context model to the context table.

5. The method of claim 2 , further comprising:

determining which of the at least one previously updated context model stored in the cache memory is least likely to be requested in the future; and

writing the determined previously updated context model to the context table.

6. The method of claim 1 , further comprising:

writing the updated version of the first context model in the cache memory, wherein

the cached version of the first context model is stored at a particular location in the cache memory, and

the updated version of the first context model is written to the particular location in the cache memory.

7. The method of claim 1 , further comprising:

responsive to a determination that the first context model is not stored in cache memory,

retrieving a stored version of the first context model from a context table, wherein

the context table is configured to store a plurality of context models utilized in the synchronous dual-pipelined environment; and

providing the stored version of the first context model to the first encoder, wherein the first encoder is configured to

utilize the stored version of the first context model to encode the first bin, and

update the stored version of the first context model to produce the subsequent version of the first context model.

8. The method of claim 1 , further comprising:

responsive to a determination that the updated version of the first context model is not available at the respective output, retrieving the cached version of the first context model from the cache memory; and

providing the cached version of the first context model to the first encoder, wherein the first encoder is configured to

utilize the cached version of the first context model to encode the first bin, and

update the cached version of the first context model to produce the subsequent version of the first context model.

9. The method of claim 1 , wherein the method is implemented in an H.264 video encoder.

10. The method of claim 1 , wherein the requested first context model and the requested second context model comprise the same context model.

11. The method of claim 1 , wherein the first context lookup module is configured to:

receive the first bin;

issue the first request for the first context module based on the first bin; and

output the first bin to the first encoder; and

wherein the second context lookup module is configured to:

receive a second bin;

issue the second request for the second context module based on the second bin; and

output the second bin to the second encoder.

12. The method of claim 1 , the method further comprising:

determining if the second context model is stored in the cache memory;

responsive to a determination that a cached version of the second context model is stored in the cache memory, determining whether an updated version of the second context model is available at the respective output of either the first encoder or the second encoder;

responsive to a determination that the updated version of the second context model is available at the respective output, retrieving the updated version of the second context model from the respective output;

providing the updated version of the second context model to the second encoder, wherein the second encoder is configured to

utilize the updated version of the second context model to encode a second bin, and

update the updated version of the second context model to produce a subsequent version of the second context model;

receiving, at the cache memory in the second clock cycle, the subsequent version of the second context model from the output of the second encoder; and

writing the subsequent version of the second context model in the cache memory in response to the receiving the subsequent version of the second context model at the cache memory.

13. A system for managing cache memory in context-adaptive binary arithmetic coding (CABAC) implemented in a synchronous dual-pipelined environment, the system comprising:

a cache memory manager configured to:

receive, in a first clock cycle, a first request for a first context model from a first context lookup module communicatively coupled to a first encoder and a second request for a second context model from a second context lookup module communicatively coupled to a second encoder;

determine if the first context model is stored in cache memory, wherein the cache memory is configured to store at least one previously updated context model;

responsive to a determination that a cached version of the first context model is stored in the cache memory, determine whether an updated version of the context model is available at a respective output of either the first encoder or the second encoder;

responsive to a determination that the updated version of the first context model is available at the respective output, retrieve the updated version of the first context model from the respective output;

provide the updated version of the first context model to the first encoder;

receive, in a second clock cycle, a subsequent version of the first context model from the output of the first encoder; and

write the subsequent version of the first context model in the cache memory in response to receipt of the subsequent version.

14. The system of claim 13 , wherein the cache memory manager is further configured to:

write the subsequent version of the first context model to a context table, wherein

the cache memory is communicatively coupled to the context table,

the context table stores an older version of the first context model, and

the subsequent version of the first context model overwrites the older version of the first context model in the context table.

15. The system of claim 14 , wherein the cache memory manager is further configured to:

determine which of the at least one previously updated context model stored in the cache memory was least recently updated; and

write the determined previously updated context model to the context table.

16. The system of claim 14 , wherein the cache memory manager is further configured to:

determine which of the at least one previously updated context model stored in the cache memory was most recently requested; and

write the determined previously updated context model to the context table.

17. The system of claim 14 , wherein the cache memory manager is further configured to:

determine which of the at least one previously updated context model stored in the cache memory is least likely to be requested in the future; and

write the determined previously updated context model to the context table.

18. The system of claim 13 , wherein the cache memory manager is further configured to:

write the updated version of the first context model in the cache memory, wherein

the cached version of the first context model is stored at a particular location in cache memory, and

the updated version of the first context model is written to the particular location in the cache memory.

19. The system of claim 13 , wherein the cache memory manager is further configured to:

responsive to a determination that the first context model is not stored in cache memory,

retrieve a stored version of the first context model from a context table, wherein

the context table is configured to store a plurality of context models utilized in the synchronous dual-pipelined environment; and

provide the stored version of the first context model to the first encoder.

20. The system of claim 13 , wherein the cache memory manager is configured to:

responsive to a determination that the updated version of the first context model is not available at the respective output, retrieve the cached version of the first context model from the cache memory; and

provide the cached version of the first context model to the first encoder.

21. The system of claim 13 , wherein the system is implemented in an H.264 video encoder.

22. The system of claim 13 , wherein the requested first context model and the requested second context model comprise the same context model.

23. The system of claim 13 , wherein

the cache memory manager is coupled to a selection input of a multiplexer gate,

the multiplexer gate has a first input coupled to receive a stored context model from a context table, a second input coupled to receive a cached context model from the cache memory, a third input coupled to receive a first updated context model from the output of the first encoder, and a fourth input coupled to receive a second updated context model from the output of the second encoder, and

the cache memory manager is configured to

select one of the first, second, third, and fourth inputs that receives a most recently updated version of the first context model, wherein

an output of the multiplexer gate provides the most recently updated version to an input of the first encoder.

24. A computer readable storage medium structured to store instructions executable by a processing system for managing cache memory in context-adaptive binary arithmetic coding (CABAC) implemented in a synchronous dual-pipelined environment, wherein the instructions when executed cause the processing system to:

receive, at a CABAC encoder cache memory in a first clock cycle, a first request for a first context model from a first context lookup module communicatively coupled to a first encoder and a second request for a second context model from a second context lookup module communicatively coupled to a second encoder;

determine if the first context model is stored in cache memory, wherein the cache memory is configured to store at least one previously updated context model;

responsive to a determination that a cached version of the first context model is stored in the cache memory, determine whether an updated version of the first context model is available at a respective output of either the first encoder or the second encoder;

responsive to a determination that the updated version of the first context model is available at the respective output, retrieve the updated version of the first context model from the respective output;

provide the updated version of the first context model to the first encoder; and

receive, at the cache memory in a second clock cycle, a subsequent version of the first context model from the output of the first encoder; and

writing the subsequent version of the first context model in the cache memory in response to the receiving the subsequent version at the cache memory.

25. The computer readable storage medium of claim 24 , the instructions when executed further causing the processing system to:

responsive to a determination that the first context model is not stored in the cache memory:

retrieve a stored version of the first context model from a context table, wherein the context table is configured to store a plurality of context models utilized in the synchronous dual-pipelined environment, and

provide the stored version of the first context model to the first encoder;

responsive to a determination that the updated version of the first context model is not available at the respective output:

retrieve the cached version of the first context model from the cache memory, and

provide the cached version of the first context model to the first encoder.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
CHANGE OF NAME Recorded Jan 27, 2015
From: ZENVERGE, INC.
To: ZENVERGE, LLC
Reel/Frame 034817/0375 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: ZENVERGE LLC
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 034766/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2011
From: JACOB, ROJIT
To: ZENVERGE, INC.
Reel/Frame 026533/0358 →