Pushing of clean data to one or more processors in a system having a coherency protocol
Summary by NHIP
Data push to processors
The method transmits a data push request to processors and a memory controller, then sets corresponding data to a clean state upon acceptance. The clean state is defined as a Shared state for write-back protocols or a Valid state for write-through protocols.
Claim Score by NHIP
Term
Term ended
Expired 10 July 2025, 1.2 years ago.
- Priority and filed
- Granted
- Expired
- Today
38 claims: 8 independent, 30 dependent
- 1A method comprising:transmitting to a plurality of processors and a memory controller, a request to push data from an agent external to the one or more processors;determining whether each of the processors and the memory controller has accepted the request;and if each of the processors and the memory controller have accepted the request, then for each processor having data corresponding to the data to be pushed from the agent, setting a state of the corresponding data to a clean state, if not already in a clean state, and overwriting the corresponding data with the data pushed from the agent.
- 10A system comprising:a plurality of processors;a memory controller;and a bus agent coupled with each of the plurality of processors and the memory controller to transmit to the plurality of processors and the memory controller a request to push data to at least one processor and to determine whether each of the plurality of processors and the memory controller receiving the request have accepted the request;wherein if each of the processors and the memory controller have accepted the request, then for each processor having data corresponding to the data to be pushed, the processor sets a state of the corresponding data to a clean state, if not already in a clean state, and overwrites the corresponding data with the pushed data.
- 12The system of 10 wherein the plurality of processors comprises a subset of processors in a multi-processor system.
- 19Broadest claimClaim Score 77, broad(NHIP)An agent in an electronic system comprising:a bus interface;control circuitry coupled with the bus interface to transmit a request to push data to a plurality of processors and a memory controller over the bus interface and to determine whether each of the processors and the memory controller have accepted the request, in response to each of the processors and the memory controller accepting the request, the control circuit causing data to be transmitted to each of the processors and to the memory controller with an indication to store the data in a clean state.
- 20The agent of 19 wherein at least one of the processors, after accepting the request, rejects the transmitted data.
- 21The agent of 19 wherein the plurality of processors comprises a subset of processors in a multi-processor system.
- 26An apparatus comprising:means for transmitting to a plurality of processors and a memory controller, a request to push data from an agent external to the one or more processors;means for determining whether each of the processors and the memory controller have accepted the request;means for setting a state of the corresponding data to a clean state, if not already in a clean state, in each processor having data corresponding to the data to be pushed from the agent, and means for overwriting the corresponding data with the data pushed from the agent if each of the processors and the memory controller have accepted the request;and means for storing the data pushed from the external agent in a clean state in each processor not having data corresponding to the data to be pushed from the agent if each of the processors and the memory controller have accepted the request.
- 31A system comprising:a substantially omni-directional antenna;at least one of a plurality of processors coupled with the antenna;and a bus agent coupled with the plurality of processors and a memory controller to transmit a request to push data to at least a subset of the processors and the memory controller and to determine whether each of the processors receiving the request have accepted the request;wherein if each of the processors and the memory controller have accepted the request, for each processor having data corresponding to the data to be pushed the processor, sets a state of the corresponding data to a clean state, if not already in a clean state, and overwrites the corresponding data with the pushed data and for each processor not having data corresponding to the data to be pushed, to store the pushed data in a clean state.
Independent claims8
46 paragraphs in 5 sections, as filed
TECHNICAL FIELD
0001Embodiments of the invention relate to multi-processor computer systems. More particularly, embodiments of the invention relate to allowing bus agents to push clean data to caches corresponding to multiple processors in a coherent multi-processor computer system.
BACKGROUND
0002In current multi-processor systems, including Chip Multi-Processors, it is common for an input/output (I/O) device such as, for example, a network media access controller (MAC), a storage controller, a display controller, to generate temporary data to be processed by a processor core. Using traditional memory-based data transfer techniques, the temporary data is written to memory and subsequently read from memory by the processor core. Thus, two memory accesses are required for a single data transfer.
0003Because traditional memory-based data transfer techniques require multiple memory accesses for a single data transfer, these data transfers may be bottlenecks to system performance. The performance penalty can be further compounded by the fact that these memory accesses are typically off-chip, which results in further memory access latencies as well as additional power dissipation. Thus, current data transfer techniques result in system inefficiencies with respect to performance and power.
BRIEF DESCRIPTION OF THE DRAWINGS
0004Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
0005<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of one embodiment of a computer system.
0006<figref idref="DRAWINGS">FIG. 2</figref> is a conceptual illustration of a push operation from an external agent.
0007<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to multiple target processors having cache memories in a system using a write-back coherency protocol.
0008<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to multiple target processors having cache memories in a system using a write-through coherency protocol.
0009<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to a memory controller in a system using a write-through or a write-back coherency protocol.
0010<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of one embodiment of a technique for pushing a partial cache line to multiple target processors having cache memories.
0011<figref idref="DRAWINGS">FIG. 7</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to a memory controller in a system using a write-through or a write-back coherency protocol.
DETAILED DESCRIPTION
0012In the following description, numerous specific details are set forth. However, embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.
0000Overview
0013In traditional cache designs having hardware support for cache coherency, a caching agent must obtain an exclusive ownership of a cache line before the agent can modify the cache line in the cache(s) controlled by the agent. Described in greater detail below, are architectures and techniques that allow external devices connected to a processor to push data directly to the processor cache(s) without the agent controlling the cache obtaining exclusive ownership of the line.
0014In one embodiment, an external (to the multiple processors having the cache memories receiving the data) agent preparing to push data to a multiprocessor system may initially notify all processors and the memory system (e.g., a memory controller) of the coming push operation. In a shared bus system, for example, notification messages may be accomplished by the processors snooping a shared address bus transaction. In a point-to-point system, notification messages may be sent to all processors as well as to the memory controller.
0015In the shared bus system there may be a single multicast data transfer that all processors and the memory controller. In point-to-point system, the data may be individually transmitted to all processors as well as to one or more memory controllers. If the request is accepted by all processors and the memory controller(s), the data to be written may be transmitted to all processors and to memory. Acceptance of the request may be determined by acknowledgement messages and/or absence of retries or stalls. It is also possible to have a shared bus for the address transactions and point-to-point connections for data transactions, and vice versa.
0016In one embodiment, in the point-to-point system, data may be individually transmitted to each processor and to memory. Each processor may write (or overwrite) data in a cache memory and update the coherency state (e.g., to Shared in a MSI/MESI/MOESI system or to Valid in a VI system). The corresponding memory location may also be updated.
0017In one embodiment, one or more of the following states may be used for coherency purposes. Modified refers to data that has been modified and is stored in a cache memory and the corresponding data in memory may not have been correspondingly modified and therefore may be invalid. Shared refers to data that may be stored by multiple cache memories and the corresponding copy in memory may be valid. Exclusive refers to data that may be stored in only one cache memory and the corresponding copy in memory may be valid. Owned refers to data that may be stored in only one cache memory and the corresponding copy in memory may be invalid. Invalid refers to data stored in a cache memory that may be invalid. Valid refers to data stored in a cache memory that may be valid.
0018<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of one embodiment of a computer system. The computer system illustrated in <figref idref="DRAWINGS">FIG. 1</figref> is intended to represent a range of computer systems. Alternative computer (or non-computer) systems can include more, fewer and/or different components.
0019In one embodiment, computer system <b>100</b> may include interconnect <b>110</b> to communicate information between components. Processor <b>120</b> may be coupled to interconnect <b>110</b> to process information. Further, processor <b>120</b> may include internal cache <b>122</b>, which may represent any number of internal cache memories. In one embodiment, processor <b>120</b> may be coupled with external cache <b>125</b>. Computer system <b>100</b> may further include processor <b>130</b> that may be coupled to interconnect <b>110</b> to process information. Processor <b>130</b> may include internal cache <b>132</b>, which may represent any number of internal cache memories. In one embodiment, processor <b>130</b> may be coupled with external cache <b>135</b>.
0020While computer system <b>100</b> is illustrated with two processors, computer system <b>100</b> may include any number of processors and/or co-processors. Computer system <b>100</b> may also include random access memory controller <b>140</b> coupled with interconnect <b>110</b>. Memory controller <b>140</b> may act as an interface between interconnect <b>110</b> and memory subsystem <b>145</b>, which may include one or more types of memory. For example, memory subsystem <b>145</b> may include random access memory (RAM) or other dynamic storage device to store information and instructions to be executed by processor <b>120</b> and/or processor <b>130</b>. Memory subsystem <b>145</b> also can be used to store temporary variables or other intermediate information during execution of instructions by processor <b>120</b> and/or processor <b>130</b>. Memory subsystem may further include read only memory (ROM) and/or other static storage device to store static information and instructions for processors <b>120</b> and/or processor <b>130</b>.
0021Interconnect <b>110</b> may also be coupled with input/output (I/O) devices <b>150</b>, which may include, for example, a display device, such as a cathode ray tube (CRT) controller or liquid crystal display (LCD) controller, to display information to a user, an alphanumeric input device, such as a keyboard or touch screen to communicate information and command selections to processor <b>120</b>, and/or a cursor control device, such as a mouse, a trackball, or cursor direction keys to communicate direction information and command selections to processor <b>102</b> and to control cursor movement on a display device. Various I/O devices are known in the art.
0022Computer system <b>100</b> may further include network interface(s) <b>160</b> to provide access to one or more networks, such as a local area network, via wired and/or wireless interfaces. Storage device <b>170</b> may be coupled to interconnect <b>110</b> to store information and instructions.
0023Instructions are provided to memory subsystem <b>145</b> from storage device <b>170</b>, such as magnetic disk, a read-only memory (ROM) integrated circuit, CD-ROM, DVD, via a remote connection (e.g., over a network via network interface <b>160</b>) that is either wired or wireless, etc. In alternative embodiments, hard-wired circuitry can be used in place of or in combination with software instructions. Thus, execution of sequences of instructions is not limited to any specific combination of hardware circuitry and software instructions.
0024An electronically accessible medium includes any mechanism that provides (i.e., stores and/or transmits) content (e.g., computer executable instructions) in a form readable by an electronic device (e.g., a computer, a personal digital assistant, a cellular telephone). For example, a machine-accessible medium includes read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals); etc.
0025<figref idref="DRAWINGS">FIG. 2</figref> is a conceptual illustration of a push operation from an external agent. The example of <figref idref="DRAWINGS">FIG. 2</figref> corresponds to an external (to the processor) agent that may push data to one or more processors and memory. In one embodiment, the data that is pushed by the external agent may be stored by the processors and memory in a clean state (e.g., Shared or Valid). The external agent may be, for example, a direct memory access (DMA) device or a digital signal processor (DSP).
0026As will be described in greater detail below, the data that is pushed by external agent <b>200</b> may correspond to a full cache line or the data may correspond to a partial cache line. In one embodiment, during push operation <b>210</b>, external agent <b>200</b> may push data to internal cache <b>122</b> of processor <b>120</b>, internal cache <b>132</b> of processor <b>130</b> and memory controller <b>140</b>. The data pushed by external agent <b>200</b> then exists coherently in a clean state in the cache of each processor as well as in memory. Thus, the data may be available for a cache hit on a subsequent load to the corresponding address by any of the processors. Because the pushed data is stored in a clean state, when any of the processors replace the data, for example, as the result of a conflict or capacity miss, the replacement may be performed without a write-back operation to memory.
0000Example Push Operations for Full Cache Lines
0027<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to multiple target processors having cache memories in a system using a write-back coherency protocol. In one embodiment, a push request may be transmitted to each target agent (e.g., processor) in a system, <b>300</b>. Transmission of the push request may be accomplished, for example, by a broadcast message to all processors in a multiprocessor system using a shared bus as the interconnect, or by individual messages to each processor in case of a point-to-point interconnect.
0028If the request is not accepted by all target agents, <b>310</b>, a retry procedure may be performed, <b>320</b>. If all target agents accept the request, <b>310</b>, each target agent determines whether the cache line being pushed is present in its cache memory, <b>330</b>. In one embodiment, if the cache line is present, <b>330</b>, the state of the cache line may be updated to or maintained as Shared, <b>340</b>. The cache line may be overwritten with data being pushed by the external agent, <b>350</b>.
0029If the cache line is not present in the cache memory of the target agent, <b>330</b>, the agent may allocate a cache line in the Shared state, <b>360</b>. The allocated cache line may be filled with the data pushed by the external agent, <b>370</b>. When the data from the external agent has been stored in the cache of the target agent (<b>350</b> or <b>370</b>), the data is stored in the Shared state and is available for each of the target agents.
0030<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to multiple target processors having cache memories in a system using a write-through coherency protocol. In one embodiment, a push request may be transmitted to each target agent (e.g., processor) in a system, <b>400</b>. Transmission of the push request may be accomplished, for example, by a broadcast message to all processors in a multiprocessor system using a shared bus as the interconnect, or by individual messages to each processor in case of a point-to-point interconnect.
0031If the request is not accepted by all target agents, <b>410</b>, a retry procedure may be performed, <b>420</b>. If all target agents accept the request, <b>410</b>, each target agent determines whether the cache line being pushed is present in its cache memory, <b>430</b>. In one embodiment, if the cache line is present, <b>430</b>, the state of the cache line may be maintained in the Valid state, <b>440</b>. The cache line may be overwritten with data being pushed by the external agent, <b>450</b>.
0032If the cache line is not present in the cache memory of the target agent, <b>430</b>, the agent may allocate a cache line in the Valid state, <b>460</b>. The allocated cache line may be filled with the data pushed by the external agent, <b>470</b>. When the data from the external agent has been stored in the cache of the target agent (<b>450</b> or <b>470</b>), the data is stored in the Valid state and is available for each of the target agents.
0033<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of one embodiment of a technique for pushing a full cache line to a memory controller in a system using a write-through or a write-back coherency protocol. In one embodiment, a memory controller may receive a push request that has been transmitted to all target devices in a system, <b>500</b>.
0034In response to receiving the push request, the memory controller may determine whether all target devices in the system have accepted the push request, <b>510</b>. If all target devices accept the push request, <b>510</b>, the memory controller causes the pushed data line to be written to the appropriate memory location <b>530</b>. If all target devices do not accept the push request, <b>510</b>, a retry procedure may be implemented, <b>520</b>.
0000Example Push Operations for Partial Cache Lines
0035<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of one embodiment of a technique for pushing a partial cache line to multiple target processors having cache memories. In one embodiment, a push request may be transmitted to each target agent (e.g., processor) in a system, <b>600</b>. Transmission of the push request may be accomplished, for example, by a broadcast message to all processors in a multiprocessor system using a shared bus as the interconnect, or by individual messages to each processor in case of a point-to-point interconnect.
0036If the request is not accepted by all target agents, <b>605</b>, a retry procedure may be performed, <b>610</b>. If all target agents accept the request, <b>605</b>, each target agent determines whether the cache line being pushed is present in its cache memory, <b>620</b>.
0037In one embodiment, if the data line is not present in the cache memory of the target agent, <b>620</b>, the push attempt is rejected, <b>660</b>. The agent may read the corresponding data from memory, <b>665</b>. The retrieved data may be stored in the of the target agent, <b>670</b>.
0038In one embodiment, if the data is present in the cache memory of the target agent, <b>620</b>, the target agent may determine whether the cache line including the data is stored in a clean state, <b>625</b>. If the line is stored in a clean state, the pushed, partial line of data may be merged with the existing data stored in the cache, <b>630</b>.
0039If the line is not stored in a clean state, the target agent may reject the push attempt, <b>640</b>. The target agent may then write the data in the dirty cache line to memory, <b>645</b>. The state of the cache line may then be updated to Shared, <b>650</b>.
0040<figref idref="DRAWINGS">FIG. 7</figref> is a flow diagram of one embodiment of a technique for pushing a partial cache line to a memory controller in a system using a write-through or a write-back coherency protocol. In one embodiment, a memory controller may receive a push request that has been transmitted to all target devices in a system, <b>700</b>.
0041In response to receiving the push request, the memory controller may determine whether all target devices in the system have accepted the push request, <b>710</b>. If all target devices accept the push request, <b>710</b>, the memory controller causes the pushed, partial cache line to be written to the appropriate memory location <b>730</b>. If all target devices do not accept the push request, <b>710</b>, a retry procedure may be implemented, <b>720</b>.
CONCLUSION
0042Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
0043While the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8806153B2 | Cited by | United States of America | Applicant |
| US2004002992A1 | Cites | United States of America | Search report |
| US2005050281A1 | Cites | United States of America | Search report |
| US2005273560A1 | Cites | United States of America | Search report |
| US2007039002A1 | Cites | United States of America | Search report |
| US5119485A | Cites | United States of America | Search report |
| US5652915A | Cites | United States of America | Search report |
| US5903911A | Cites | United States of America | Search report |
| US6842822B2 | Cites | United States of America | Search report |
2 priority claims, no other members on record
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 88160704 | United States of America | A | |
| US20040881607 | – | – | – |
42 transactions on the USPTO file
Allowed after 2 non-final rejections.
- Non-final rejections
- 2
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Correspondence Address ChangeC.ADB | C.ADB | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Notice of Informal or Non-Responsive AmendmentNINA | NINA | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| New or Additional Drawing FiledC614 | C614 | |
| Informal or Non-Responsive Amendment after Examiner ActionA.I. | A.I. | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 07366845
- Publication, DOCDB
- 7366845
- Publication, EPODOC
- US7366845
- Application
- 10881607
- Application, DOCDB
- 88160704
- Application, EPODOC
- US20040881607
Titles
- English
- Pushing of clean data to one or more processors in a system having a coherency protocol
Patent term adjustment
- A delay
- +415 daysthe office missed an examination deadline
- Applicant delay
- −39 days
- Net adjustment
- 376 days
Classification
- CPC, 4
- G06F12/0833
- G06F12/00
- G06F12/0835
- G06F12/08
- IPC, 2
- G06F12 00
- G06F12 08
- USPC, 4
- 711144000
- 711141000
- 711E12034
- 711E12035
