发明名称 Cache prefetch and bypass using stride registers
摘要 A technique and a mechanism accurately determines the correct prefetch line for loops with strides of 1, N, or a combination of stride values. Stride registers are used to assist in prefetching. Furthermore, stride register values can be used to specify "cacheability" of data on an object by object basis to prevent "cache flushing". The compiler uses a new instruction, "MOVE GPR TO STRIDE REGISTER", prior to a loop to insert the "calculated stride value(s)" into the stride register(s) associated with the index register(s) which will be incremented by that stride value. At the end of the loop, a second new instruction, "CLEAR STRIDE REGISTER SET", is used to place a value of zero in all of the stride registers to inhibit prefetching of data which would most likely not be used. A zero value in the stride registers inhibits prefetching. Non-zero values in the stride registers clearly mark the execution of a loop, which is where prefetching makes the most sense. It also clearly indicates the correct offset from the current address to use in determining the prefetch address. Since the offset is dependent on the particular index register used in specifying the storage address, data for loops with multiple strides can be correctly prefetched. A hardware managed set of stride registers provides a subset of the benefits afforded by the software managed implementation.
申请公布号 US5357618(A) 申请公布日期 1994.10.18
申请号 US19910686221 申请日期 1991.04.15
申请人 INTERNATIONAL BUSINESS MACHINES CORPORATION 发明人 MIRZA, JAMSHED H.;WHITE, STEVEN W.
分类号 G06F9/32;G06F9/312;G06F9/345;G06F9/38;G06F12/08;(IPC1-7):G06F13/14 主分类号 G06F9/32
代理机构 代理人
主权项
地址