When a processor requests a computing device for data, the processor can initially check if the data is included in a cache of the processor. If the data is available, a cache hit will have occurred and the data can be retrieved from the cache. If the data is not available, a cache miss will have occurred and the processor can proceed to access a main memory component of the computing device to retrieve the data.
Various features and advantages of the disclosed embodiments will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate, by way of example, features of the disclosed embodiments.
A computing device can include one or more node components with a node controller and processor sockets. For the purposes of this application, a node component is a hardware component of the computing device, such as an expansion card, which can couple one or more processor sockets included on the node component to the computing device. A processor socket is a computing component which includes a cache and one or more processor cores. A processor core can read and execute data and/or instructions from one or more components of the computing device. A node controller manages and controls access to the processor sockets included on the node component.
One of the node components can be a home node component including a home processor socket with a home core which is hidden from one or more components of the computing device. In one embodiment, the home core can be hidden by the home controller through a firmware of the computing device. As the home core remains hidden, the home core fetches data from a memory component to reside on the home cache of the home processor socket. The memory component can include random access memory and/or any additional volatile or non-volatile memory of the computing device. By using the home core to fetch data onto the home cache, another processor core of the computing device, such as a source core, can request for the data residing on the cache and the data can ha forwarded to the requesting source core.
For the purposes of this application, a source core is a processor core which issues a request for data. The source core can be included on a source processor socket couple to a source node component of the computing device. In one embodiment, when requesting for data, the source core specifies which address of a cache, the data resides in. A source controller coupled to the source processor socket transmits a request for the data to the home controller on the home processor socket. If the requested data is included in the home cache, the requested data can be forwarded to the source core by the home controller.
In one embodiment, the home controller can issue the request for data to a home agent of the processor socket. For the purposes of this application, the home agent is a hardware and/or software module which owns and manages the data residing on the home cache. The home agent issues a snooping request at the requested address of the home cache to transition the data residing at the requested address to a modified state. The data corresponding to the requested address is forwarded back to the source core as requested data. As a result, the home cache of the home processor socket can be utilized to receive and store data to be requested by a source core. Further, by providing the requested data from the home cache as opposed to a memory component, bandwidth, time, and/or resources can be saved as the computing device provides the source core the requested the data.
For the purposes of this application, the home node component 130 is an expansion module of the computing device 100 which includes at least one processor socket, such as the home processor socket 135 and a home node controller 110. The home processor socket 135 is a computing component which includes a home core 120 and a home cache 125. The home core 120 is a processor core which is hidden from components of the computing device 100 by the home node controller 110. The home node controller 110 is a hardware component which manages processor sockets included on the home node component 130.
The home node controller 110 can utilize a firmware residing on the home node controller 110, the home processor socket 135, the home node component 130, and/or on the computing device 100 to hide the home core 120 from other components of the computing device 100. In one embodiment, the home node controller 110 can utilize the firmware to mask the home core 120 such that it is not visible or appears disabled to other components of the computing device 100. In another embodiment, the home node controller 110 can use the firmware to access a basic input/output system of the computing device 100 to hide the home core 120.
The home node controller 110 can also manage communication between the home processor socket 135 and another processor socket of the computing device 100, such as a source processor socket 145. Similar to the home processor socket 135, the source processor socket 145 is a computing component which includes one or more processor cores, such as a source core 140. In one embodiment, the source processor socket 145 resides on a separate node component of the computing device 100, such as a source node component. The home node component 130 is coupled to source node component through a communication channel 150. The communication channel 150 can be a communication bus or interface to for the node components to communicate with one another.
As the home core 120 is hidden from components of the computing device 100, the home core 120 can fetch data onto a home cache 125 of the home processor socket 135 from a memory component. For the purposes of this application, the home cache 120 is a memory bank which is coupled to the home core 120 and the memory component. In one embodiment, the home cache 125 includes a lower level cache of the home processor socket 135. The memory component can be random access memory residing on the home node component 130 and/or on the computing device 100. The memory component can include data to be fetched onto the home cache 125. In one embodiment, the data can include lines of code or instructions which can be executed by the source core 140 or another processing core.
As the home core 120 continues to fetch data onto the home cache 125, the home node controller 110 can detect for a request for data. The request for data can be received from the source core 140 on the source processor socket 145. The source core 140 is a processor core included on the source processor socket 145 which can request for data. The request can be sent by the source core 140 as an instruction and/or as a signal to the home node controller 110. In one embodiment, the request for data can specify an address of the home cache 125 where the data is expected to be included.
In response to receiving the request for data, the home node controller 110 can determine whether any data resides at the address of the home cache 125 specified by the request for data. If any data is included at the requested address of the home cache 125, the home node controller 110 can proceed to forward the requested data from the home cache 125 to the source core 140. As a result, by utilizing the home core 120 to fetch data to be stored on the home cache 125, data requested by a source core 140 can be forwarded from the home cache 125 as opposed to a main memory component of the computing device 100 thereby saving bandwidth, time, and/or resources.
When hiding a processor core, such as the home core 220, a home node controller 210 included on the home node component 230 can use an accessible firmware 285 to hide the home core 220. As noted above, the home node controller 210 is a hardware component which manages the home processor socket 235 by hiding the home core 220. For the purposes of this application, the firmware 385 includes software and/or instructions executable by the home node controller 210 to hide the home core 220. The firmware 385 can be included on the home node controller 210, the home node component 230, the home processor socket 235, and/or on another component of the computing device 200.
In one embodiment, the home node controller 210 can use the firmware 285 to mask the home core 220 such as that it appears invisible or disabled to other components of the computing device 200. In another embodiment, the home node controller 210 can use the firmware to modify a BIOS (Basic Input/Output System) of the computing device 200, such that the home core 220 is not accessible to other components of the computing device 200. In other embodiment, the home node controller 210 can use additional methods to hide the home core 220 in addition to and/or in lieu of those noted above.
As the home core 220 remains hidden, the home core 220 can fetch data onto the home cache 225 from a memory component 270. As noted above, the home cache 225 is a memory bank coupled to the home core 220 and a memory component 270. In one embodiment, the home cache 225 includes a lower level cache of the home processor socket 235. The memory component 270 can include random access memory and/or any additional memory included on the home node component 230 or the computing device 200. The data included on the memory component 270 can include lines of executable code which may be requested by a core induced on the home node component 230 and/or by another core included on another node component.
In one embodiment, as shown in
The home node controller 210 can also detect for a request for data from another node controller coupled to the computing device. The request for the data can be initiated by a source core 240 and can be sent as a signal and/or instruction from the source core 240. As noted above, the request for data can specify an address of a cache which the source core 240 presumes the requested data is present in. As shown in
As the source core 240 issues the request for data, the source node controller 280 receives the request from the source processor socket 265 and proceeds to forward the request to the home node component 230 through the communication channel 250. If the computing device 200 includes additional node components, the request for data can be sent to the additional node components through the communication channel 280. In response to receiving the request for data, the home node controller 210 can forward the requested data if the home cache 225 includes the requested data.
In response to receiving the Read Data request or the Read Code request, the home node controller 310 can issue a Read Current request to a home agent 315 of the home processor socket 335. The Read Current request is an instruction from the home node controller 310 to react the current contents of the cache at a specified address. For the purposes of this application, the home agent 315 is a hardware or software module which manages data included on the home cache 325. In response to receiving the Read Current request from the home node controller 310, the home agent 315 proceeds to issue a Snoop Current request to the home cache 325. The Snoop Current request is an instruction to look for data residing at the specified address of the home cache 325.
By issuing the Snoop Current request to the specified address, any data included at the specified address remains or transitions to a modified state. If the data at the specified address is already in the modified state, the data remains in the modified state. If the data is not in the modified state, the data transitions to the modified state. For the purposes of this application, if any data of the home cache 325 is in a modified state, the corresponding data is forwarded from the home cache 325 as requested data. If the specified address of the home cache 325 includes any data, the home agent 315 determines that the requested data is found. The requested data is then forwarded from the home cache 325 to the home agent 315. The requested data is then forwarded to the home controller 310, which forwards the requested data to the source node controller 380. The source node controller 380 then provides the requested data to the source core 340.
In one embodiment, if the specified address of the home cache 325 does not include any data, an Invalid Snoop Response is generated indicating that a cache miss has occurred. In response to a cache miss, the home agent 315 issues a Memory Read request to the memory component 370 for the requested data. If the requested data is included in the memory component 370, the requested data is discarded from the memory component 370 and is sent to the source core 340 through the home agent 315, home node controller 310, and the source node controller 380.
In another embodiment, as shown in
In response to receiving the Read for Ownership request, the Home Agent issues a Snoop for Ownership request to the home cache 325. For the purposes of this application, the Snoop for Ownership request from the home agent 315 causes any data residing at the specified address of the home cache 325 to transition to an invalid state. For the purposes of this application, if the data included within the home cache 325 is in an invalid state, the requested data is forwarded from the home cache 325 to the home agent 313. The home agent 315 then forwards the requested data to the home node controller 310 to provide for the source node controller 380. The source node controller 380 can then provide the requested data to the source core 340.
Similar to above, if the specified address of the home cache 325 does not include any data, an Invalid Snoop Response is generated indicating that a cache miss has occurred and the home agent 315 issues a Memory Read request to the memory component 370 for the requested data. If the requested data is included in the memory component 370, the requested data is discarded from the memory component 370 and is sent to the source core 340 through the home agent 315, home node controller 310, and the source node controller 380.
When writing-back to the memory component 470, the source core 440 can issue a write-back instruction of the evicted data to the source node controller 480. The write-back instruction is an instruction for the evicted data on the source cache to be written back into the memory component 370. The write-back instruction can be forwarded to the home node controller 410. The home node controller 410 can then issue a non-coherent write instruction to the home agent 415. In response to receiving the non-coherent write instruction, the home agent 415 proceeds to write the evicted data to the memory component 470. By issuing the non-coherent write instruction, the home agent 415 can properly determine that the data to be evicted is to be written to the memory component 370 as opposed to another cache or be retained on the home cache 425.
In one embodiment, the home core 520 can execute the setup in response the home node component hiding the home core 520 and before any data is fetched onto the home cache 525. In another embodiment, the home core 520 can execute this setup each time after data is forwarded from the home cache 525 to a source core. In other embodiments, the home core 520 can execute additional requests and/or instructions for data to be forwarded from the home cache 525 in addition to and/or in lieu of those noted above and illustrated in
The home node controller can then issue a Read Current request to the home agent at 740. The Read Current requests causes the home agent to issue a Snoop Current request at a specified address of the home cache for the data at the specified address to remain in the modified state at 750. Because the requested data is in the modified state, the requested data is forwarded to the home node controller and subsequently to the source core at 760. In one embodiment, as the source core continues to receive requested data, the requested data can be stored and/or modified on a source cache coupled to the source core. If the source cache, reaches capacity, the data on the source cache is evicted and the source cache writes the data back to the memory component. The home node controller receives the write back instruction and proceeds to issue a non-coherent write request to the home agent at 770. The method is then complete. In other embodiments, the method of
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/035761 | 4/30/2012 | WO | 00 | 9/24/2014 |