Data processing apparatus and method for performing load-exclusive and store-exclusive operations
US-9223701-B2 · Dec 29, 2015 · US
US9639469B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9639469-B2 |
| Application number | US-201313941483-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jul 13, 2013 |
| Priority date | Sep 28, 2012 |
| Publication date | May 2, 2017 |
| Grant date | May 2, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A coherency controller with a data buffer store that is smaller than the volume of pending read data requests. Data buffers are allocated only for requests that match the ID of another pending request. Buffers are deallocated if all snoops receive responses, none of which contain data. Buffers containing clean data have their data discarded and are reallocated to later requests. The discarded data is later read from the target. When all buffers are full of dirty data requests with a pending order ID are shunted into request queues for later service. Dirty data may be foisted onto coherent agents to make buffers available for reallocation. Accordingly, the coherency controller can issue snoops and target requests for a volume of data that exceeds the number of buffers in the data store.
Opening claim text (preview).
What is claimed is: 1. A coherency controller comprising: a primary interface to receive read requests for data from an initiator and to provide responses, including the data, to the initiator; a snoop interface to send snoops to a coherent agent in response to the read requests received on the primary interface and to receive snoop responses from the coherent agent, wherein at least one of the snoop responses includes the data requested of a respective read request; and a data store, comprising a pool of buffers, wherein the data store is configured to dynamically allocate at least one buffer from the pool of buffers to temporarily store the data included in the at least one snoop response, wherein a capacity of the pool of buffers is less than a volume of the data requested in the read requests pending from the primary interface. 2. The coherency controller of claim 1 wherein a volume of data requested in pending snoops exceeds the capacity of the pool of buffers. 3. The coherency controller of claim 1 wherein the data store is configured to allocate at least one buffer from the pool of buffers to a read request received at the primary interface only if the read request has, an ID matching an ID of another pending read request. 4. The coherency controller of claim 1 wherein, when a snoop of an ID is pending, and the last previous request of the ID is issued, a buffer is deallocated. 5. The coherency controller of claim 1 wherein the coherency controller is configured to determine a type of a snoop based on a number of available buffers in the pool of buffers of the data store. 6. The coherency controller for claim 1 wherein the coherency controller is configured to determine a quality-of-service value based on a number of available buffers in the pool of buffers of the data store. 7. The coherency controller of claim 1 wherein the data store is configured to not allocate any buffers of the pool of buffers to a pending read request until a snoop response, corresponding to the pending read request, is received at the snoop interface. 8. The coherency controller of claim 1 wherein, the coherency controller is configured to apply back pressure to the initiator at the primary interface when the primary interface receives a read request and none of the buffers included in the pool of buffers are available for allocating. 9. The coherency controller of claim 1 wherein the data store is configured to allocate at least one buffer from the pool of buffers in response to sending a snoop to the coherent agent on the snoop interface. 10. The coherency controller of claim 9 wherein the data store is configured to deallocate the at least one buffer when a snoop response is received if the snoop response contains no data. 11. The coherency controller of claim 1 wherein the data store is configured to discard data stored in at least one of the buffers of the pool of buffers and to reallocate the at least one buffer in response determining that the data stored in the at least one buffer is clean data. 12. The coherency controller of claim 11 wherein the data store is configured to choose the at least one buffer with which to discard the data based on a value associated with a pending read request. 13. The coherency buffer of claim 9 wherein the value is a transaction urgency. 14. The coherency controller of claim 1 further comprising a monitor. 15. The coherence controller of claim 14 wherein the monitor increments at least one counter corresponding to a state when the number of buffers in the state is beyond a threshold. 16. The coherency controller of claim 1 wherein, the data store is configured to push data stored in at least one of the buffers of the pool of buffers to another coherency controller and to deallocate the at least one buffer in response to determining that a number of the buffers contain dirty data. 17. The coherency controller of claim 1 further comprising: a secondary interface to send read requests to a target and to receive responses from the target; and a queue, wherein a later read request, received with an ID corresponding to a read request of an earlier read request that is pending to the target, is stored in the queue, without generating a snoop. 18. The coherency controller of claim 17 wherein the head of the queue is held until a time. 19. The coherency controller of claim 18 wherein the time is when a response to the earlier read request is received. 20. The coherency controller of claim 18 wherein the time is based on a prediction of when the response from the target will be received and a prediction of the time for all queried coherent agents to provide a response. 21. The coherency controller of claim 17 comprising a plurality of queues. 22. The coherency controller of claim 21 wherein the plurality of queues are allocated to pending ID values dynamically. 23. The coherency controller of claim 21 wherein the plurality of queues are allocated to ID values based on a hashing algorithm. 24. A method comprising: receiving a read request for data at a primary interface of a coherency controller from an initiator; sending snoops from a snoop interface of the coherency controller to a coherent agent in response to the read requests received on the primary interface; receiving snoop responses at the snoop interface from the coherent agent, wherein at least one of the snoop responses includes the data requested of a respective read request; and dynamically allocating at least one buffer from a pool of buffers included in a data store of the coherency controller to temporarily store the data included in the at least one snoop response, wherein a capacity of the pool of buffers is less than a volume of the data requested in the read requests pending from the primary interface. 25. A non-transistory computer readable medium that includes program code encoded therein, which when executed by a processor directs a coherency controller to: receive a read request for data at a primary interface of the coherency controller from an initiator; send snoops from a snoop interface of the coherency controller to a coherent agent in response to the read requests received on the primary interface; receive snoop responses at the snoop interface from the coherent agent, wherein at least one of the snoop responses includes the data requested of a respective read request; and dynamically allocate at least one buffer from a pool of buffers included in a data store of the coherency controller to temporarily store the data included in the at least one snoop response, wherein a capacity of the pool of buffers is less than a volume of the data requested in the read requests pending from the primary interface.
using a bus scheme, e.g. with bus monitoring or watching means · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.