发明名称 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