In order to improve the performance and efficiency of computing systems, for example PC's, servers, etc., prefetching data and instructions that a processor may need at a later time is considered beneficial. However, conventional prefetching has not been able to accurately predict which cache lines should or should not be prefetched.
In various embodiments, methods and apparatuses of predictive prefetching are presented. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that embodiments of the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the invention.
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined in any suitable manner in one or more embodiments.
Referring now to
PTB 112 may contain entries, as shown in greater detail in reference to
PTB handler 116 may attempt to accurately predict the instructions and data that will be needed by core(s) 106, as described in more detail hereinafter. In one embodiment, PTB handler 116 prefetches those cache lines of a cache page added to TLB 110 (for example after a TLB miss) that PTB 112 indicates were accessed during a prior instantiation. PTB handler 116 may read PTB 112 entries from, and write back PTB 112 entries to, page tracker memory table 118. PTB handler 116 may also update entries in PTB 112, for example as additional cache lines are accessed by core(s) 106. PTB handler 116 may be implemented in other hardware, such as a prefetch module, or software or a combination of hardware and software. PTB handler 116 may be applied to data and instruction prefetching independently and may co-exist with other prefetchers.
Memory 104 may represent any type of memory, such as static or dynamic random access memory (RAM). In one embodiment, memory 104 represents double data rate synchronous dynamic RAM (DDR-SDRAM), however the present invention is not limited to any type of memory. Memory 104 may be logically divided into pages, such as page 120, for caching and addressing. Each page 120 may contain a fixed number of lines 122. In one embodiment, page 120 contains 64 lines 122. In another embodiment, page 120 represents a memory region whose size may be configurable through firmware or software.
Referring now to
While shown as including 28 bits, address 202 may contain more or fewer bits for identifying a page 120 (or another memory region). While shown as including 64 bits, access signature 204 and reuse signature 206 may contain more or fewer bits for identifying lines 122 of a page 120. In one embodiment, set bits of access signature 204 indicate the lines 122 of page 120 that were accessed by core(s) 106 in a prior addressing of page 120 in TLB 110. In one embodiment, set bits of reuse signature 206 indicate the lines 122 of page 120 that were accessed multiple times by core(s) 106 in a prior addressing of page 120 in TLB 110.
Referring now to
Referring now to
Embodiments may be implemented in many different system types. Referring now to
Still referring to
Furthermore, chipset 590 includes an interface 592 to couple chipset 590 with a high performance graphics engine 538. In turn, chipset 590 may be coupled to a first bus 516 via an interface 596. As shown in
Embodiments may be implemented in code and may be stored on a storage medium having stored thereon instructions which can be used to program a system to perform the instructions. The storage medium may include, but is not limited to, any type of disk including floppy disks, optical disks, compact disk read-only memories (CD-ROMs), compact disk rewritables (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic random access memories (DRAMs), static random access memories (SRAMs), erasable programmable read-only memories (EPROMs), flash memories, electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions.
While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.
Number | Name | Date | Kind |
---|---|---|---|
5752261 | Cochcroft, Jr. | May 1998 | A |
5931945 | Yung et al. | Aug 1999 | A |
5941981 | Tran | Aug 1999 | A |
5960454 | Mandal et al. | Sep 1999 | A |
6047363 | Lewchuk | Apr 2000 | A |
6055621 | Puzak | Apr 2000 | A |
6223309 | Dixon et al. | Apr 2001 | B1 |
6317810 | Lopez-Aguado et al. | Nov 2001 | B1 |
6473836 | Ikeda | Oct 2002 | B1 |
6523093 | Bogin | Feb 2003 | B1 |
6535966 | Cherabuddi et al. | Mar 2003 | B1 |
6640285 | Bopardikar et al. | Oct 2003 | B1 |
6678795 | Moreno et al. | Jan 2004 | B1 |
6804769 | Carlson | Oct 2004 | B1 |
7467131 | Gharachorloo et al. | Dec 2008 | B1 |
7480769 | Diefendorff | Jan 2009 | B2 |
7496730 | Wang et al. | Feb 2009 | B2 |
7975108 | Holscher et al. | Jul 2011 | B1 |
8332587 | Luick | Dec 2012 | B2 |
20010001873 | Wickeraad et al. | May 2001 | A1 |
20020073282 | Chauvel et al. | Jun 2002 | A1 |
20030191900 | Hooker | Oct 2003 | A1 |
20050172082 | Liu et al. | Aug 2005 | A1 |
20070022422 | Tirumalai et al. | Jan 2007 | A1 |
20070198779 | Wang | Aug 2007 | A1 |
20080235458 | van Riel | Sep 2008 | A1 |
20080282032 | Shen et al. | Nov 2008 | A1 |
20090006800 | Bellofatto et al. | Jan 2009 | A1 |
20090182947 | van Riel | Jul 2009 | A1 |
20090276572 | Heil et al. | Nov 2009 | A1 |
20100235579 | Biles et al. | Sep 2010 | A1 |
20100262750 | Deshpande et al. | Oct 2010 | A1 |
20100306473 | Luick | Dec 2010 | A1 |
20100306474 | Luick | Dec 2010 | A1 |
20120198176 | Hooker | Aug 2012 | A1 |
20150309936 | Hooker | Oct 2015 | A1 |
Number | Date | Country |
---|---|---|
H04259048 | Sep 1992 | JP |
2005302034 | Oct 2005 | JP |
2007122667 | May 2007 | JP |
2008102745 | May 2008 | JP |
WO 0188717 | Nov 2001 | WO |
2011163407 | Dec 2011 | WO |
2011163407 | Apr 2012 | WO |
Entry |
---|
International Search Report and Written Opinion for PCT Patent Application No. PCT/US2011/041511, mailed on Feb. 17, 2012, 9 pages. |
Taiwanese Patent Office, Office Action mailed Apr. 8, 2014 in Taiwan application No. 100121833. |
European Patent Office, Office Action mailed Mar. 4, 2014 in European application No. 11798876.6. |
Japanese Patent Office, “Decision of Rejection,” in Patent Application 2013-516745, Translation by Ryuka Law Firm, Aug. 12, 2014. |
Taiwanese Patent Office, Office Action dated Nov. 5, 2014 in Taiwan application No. 100121833. |
Chinese Patent Office, Chinese Office Action mailed Apr. 30, 2015 in Chinese Patent Application No. 201180041024.6. |
State Intellectual Property Office of the People's Republic of China, Second Chinese Office Action mailed Nov. 25, 2015 Application No. 201180041024.6. |
China State Intellectual Property Office, Third Office Action mailed Mar. 21, 2016 in Chinese Patent Application No. 201180041024.6. |
Number | Date | Country | |
---|---|---|---|
20110320762 A1 | Dec 2011 | US |