IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0263743
(2002-10-03)
|
발명자
/ 주소 |
- Tierney, Gregory E.
- Van Doren, Stephen R.
|
출원인 / 주소 |
- Hewlett-Packard Development Company, L.P.
|
인용정보 |
피인용 횟수 :
8 인용 특허 :
29 |
초록
▼
A retry-based mechanism resolves late race conditions in a computer system between a first processor writing modified data back to main memory and a second processor trying to obtain a copy of the modified data. A low occupancy cache coherency protocol tracks ownership and sharing status of memory b
A retry-based mechanism resolves late race conditions in a computer system between a first processor writing modified data back to main memory and a second processor trying to obtain a copy of the modified data. A low occupancy cache coherency protocol tracks ownership and sharing status of memory blocks. When a memory reference operation forwarded from the second processor results in a miss at the first processor's cache, because the requested memory block was written back to memory, the first processor issues a Retry command to the second processor. In response to the Retry command, the second processor issues another memory reference operation. This time, however, the operation explicitly specifies the version of the memory block being written back to main memory. Once the memory block has been written back to main memory, thereby providing main memory with the desired version, a copy is sent to the second processor.
대표청구항
▼
1. In a computer system having a plurality of processors and a main memory organized into a plurality of memory blocks, the processors having one or more caches, a method for resolving a late race condition between a first processor and a second processor for a given memory block, the method compris
1. In a computer system having a plurality of processors and a main memory organized into a plurality of memory blocks, the processors having one or more caches, a method for resolving a late race condition between a first processor and a second processor for a given memory block, the method comprising the steps of:forwarding from main memory to the first processor a memory request specifying the given memory block, the memory request initiated by the second processor; writing back a modified version of the given memory block from the first processor's cache to main memory; in response to the memory request, issuing a Retry command from the first processor to the second processor; in response to the Retry command, issuing a memory version request from the second processor to main memory, the memory version request specifying a selected version of the given memory block; sending the given memory block from main memory to the second processor provided that the version of the given memory block at main memory matches the selected version specified in the memory version request from the second processor. 2. The method of claim 1 further comprising the step of sending a Retry command from main memory to the second processor provided that the version of the given memory block at main memory does not match the selected version specified in the memory version request from the second processor.3. The method of claim 2 wherein the selected version specified in the memory version request is the modified version being written back to main memory by the first processor.4. The method of claim 2 further comprising the step of determining whether the version of the given memory block as stored in main memory corresponds to the selected version specified in the memory version request.5. The method of claim 1 wherein the memory request forwarded to the first processor results in a miss at the first processor's cache as a result of the given memory block being written back to main memory.6. The method of claim 2 further comprising the step of sending a second memory version request from the second processor to main memory in response to the Retry command from main memory, the second memory version request specifying the selected version of the given memory block.7. The method of claim 4 whereinthe computer system further includes at least one directory for use in maintaining coherence of the memory blocks configured at main memory, the directory having, for each memory block, an owner field specifying the owner of the respective memory block, a sharer list specifying zero, one or more processors that have a shared copy of the respective memory block, and a writer field specifying the last processor to have written the respective memory block back to main memory, and the writing back step comprises the step of entering an identifier (ID) assigned to the first processor in the writer field of the directory entry for the selected memory block. 8. The method of claim 7 wherein the determining step comprises the step of comparing the writer field of the directory entry for the given memory block with the selected version specified in the memory version request.9. The method of claim 8 wherein, if the writer field matches the selected version, performing the step of sending the given memory block from main memory to the second processor.10. The method of claim 1 wherein the memory request is one of a Forwarded_Read command requesting shared access to the given memory block and a Forwarded_Read_Modify command requesting write access to the given memory block.11. The method of claim 10 wherein the memory version request is a Request_Version command.12. The method of claim 1 further comprising the step of defining a plurality of channels within the computer system for exchanging command packets among the processors and main memory, the channels including a Q0 channel for carrying requests for memory blocks, a Q1 channel, having a higher priority than the Q0 channel, for carrying probes in response to Q0 requests, and a Q2 channel, having a higher priority than the Q1 channel, for carrying responses to Q0 requests, whereinthe writing back step comprises the step of issuing a WB command to main memory, the WB and Retry commands are issued in the Q2 channel, and the memory version request is issued in the Q0 channel. 13. The method of claim 12 whereinthe computer system has physical interconnect links and buffering resources coupling the processors and main memory, and each channel is an independently flow-controlled virtual channel of commands that shares the physical interconnect link and buffering resources with the other channels. 14. A computer system comprising:a plurality of processors, each processor having one or more caches; and a main memory coupled to the plurality of processors by an interconnect fabric, the main memory organized to store data in terms of memory blocks at least one or more of which are shared by the plurality of processors, wherein, one or more processors are configured to (1) issue a Retry command in response to a memory request received by the one or more processors that specifies a given memory block that the one or more processors have written back from the one or more processor's cache to main memory, and (2) respond to a Retry command by issuing a memory version request that specifies a selected version of the given memory block. 15. The computer system of claim 14 wherein main memory sends a processor that issued the memory version request the given memory block provided that the version of the given memory block at main memory matches the selected version specified in the memory version request.16. The computer system of claim 14 wherein main memory sends the processor that issued the memory version request a Retry command that does not include the given memory block provided that the version of the given memory block at main memory does not match the selected version specified in the memory version request.17. The computer system of claim 14 wherein,the memory request specifying the given memory block originates from a source processor and is received at a target processor that wrote the given memory block back to main memory, the Retry command is issued to the source processor, and includes a processor identifier (PID) assigned to the target processor, the selected version specified in the memory version request corresponds to the PID of the target processor. 18. The computer system of claim 17 further comprising one or more directories for use in maintaining coherence of the memory blocks, the one or more directories having an entry for each memory block, each directory entry including an owner field for specifying an owner of the memory block, and a writer field for specifying the last processor to have written the memory block back to the main memory, whereinthe version of the given memory block matches the version specified in the memory version request when the writer field of the directory entry for the given memory block corresponds to PID of the target processor as specified in the memory version request. 19. The computer system of claim 18 wherein the one or more directories support execution of a low occupancy cache coherency protocol permitting multiple memory requests to the same memory block to be executing within the computer system substantially simultaneously.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.