Coherency controller with reduced data buffer

US9639469B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9639469-B2
Application numberUS-201313941483-A
CountryUS
Kind codeB2
Filing dateJul 13, 2013
Priority dateSep 28, 2012
Publication dateMay 2, 2017
Grant dateMay 2, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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.

Assignees

Inventors

Classifications

  • using a bus scheme, e.g. with bus monitoring or watching means · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9639469B2 cover?
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 d…
Who is the assignee on this patent?
Moll Laurent, Lecler Jean-Jacques, Proujansky-Bell Jonah, and 1 more
What technology area does this patent fall under?
Primary CPC classification G06F12/0831. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 02 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).