发明名称 |
Store queue with store-merging and forward-progress guarantees |
摘要 |
Some embodiments of the present invention provide a system that performs stores in a memory system. During operation, the system performs a store for a first thread, which involves creating an entry for the store in a store queue for the first thread. It also involves attempting to store-mark a corresponding cache line for the first thread by sending a store-mark request for the first thread to the memory system, wherein a store-mark on the cache line indicates that one or more store queue entries are waiting to be committed to the cache line. If the attempt to store-mark the cache line fails because a second thread holds a store-mark on the cache line, and if obtaining the store-mark will ensure forward progress for the first thread, the system forces the second thread to release the store-mark, so the first thread can acquire a store-mark for the cache line. |
申请公布号 |
US8850120(B2) |
申请公布日期 |
2014.09.30 |
申请号 |
US200812335019 |
申请日期 |
2008.12.15 |
申请人 |
Oracle America, Inc. |
发明人 |
Cypher Robert E.;Zeffer Haakan E. |
分类号 |
G06F12/00;G06F9/38;G06F12/08 |
主分类号 |
G06F12/00 |
代理机构 |
Park, Vaughan, Fleming & Dowler LLP |
代理人 |
Park, Vaughan, Fleming & Dowler LLP ;Park A. Richard |
主权项 |
1. A method for performing a store in a memory system, comprising:
performing the store for a first thread, wherein performing the store comprises:
creating an entry for the store in a store queue for the first thread; andattempting to store-mark a cache line for the store by sending a store-mark request to the memory system, wherein the store-mark request comprises requesting a store-mark on the cache line for the store, and wherein the store-mark indicates that one or more store queue entries are waiting to be committed to the cache line; upon receiving a response to the store-mark request, updating state information in an entry for the store-mark request in a structure for storing thread-level state information for store-marking; and when the response to the store-mark request indicates that the store-mark request failed because a second thread holds a store-mark on the cache line, and when an ordered pointer points to the entry for the store-mark request in the structure, sending a forward-progress-read-to-own (FPRTO) request for the cache line to the second thread to force the second thread to release the store-mark so that the first thread can store-mark the cache line. |
地址 |
Redwood Shores CA US |