為了改進(jìn)計(jì)算系統(tǒng)(例如PC、服務(wù)器等等)的性能和效率,預(yù)?。╬refetch)處理器稍后可能需要的數(shù)據(jù)和指令被認(rèn)為是有利的。然而,常規(guī)預(yù)取不能夠精確地預(yù)測哪些緩存行(cache line)應(yīng)當(dāng)預(yù)取或不應(yīng)當(dāng)預(yù)取。
附圖說明
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例處理器和存儲器的框圖;
圖2是根據(jù)本發(fā)明的實(shí)施例的示例頁跟蹤器緩沖器的框圖;
圖3是根據(jù)本發(fā)明的實(shí)施例的用于利用存取簽名的示例方法的流程圖;
圖4是根據(jù)本發(fā)明的實(shí)施例的用于利用重用簽名的示例方法的流程圖;
圖5是根據(jù)本發(fā)明的實(shí)施例的示例系統(tǒng)的框圖。
具體實(shí)施方式
在各種實(shí)施例中,提出了預(yù)測性預(yù)取的方法和裝置。在下面的描述中,為了解釋的目的,陳述了大量具體的細(xì)節(jié)以便于提供本發(fā)明的透徹的理解。然而,對于本領(lǐng)域技術(shù)人員來說將顯而易見的是,本發(fā)明的實(shí)施例能夠在沒有這些具體的細(xì)節(jié)的情況下實(shí)施。在其他實(shí)例中,以框圖的形式示出了結(jié)構(gòu)和設(shè)備以避免使本發(fā)明不清楚。
貫穿本說明書對“一個(gè)實(shí)施例”或“實(shí)施例”的提及意味著在本發(fā)明的至少一個(gè)實(shí)施例中包括了連同實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性。因此,短語“在一個(gè)實(shí)施例中”或“在實(shí)施例中”在貫穿本說明書的各個(gè)地方的出現(xiàn)不一定全部都指相同的實(shí)施例。此外,可以在一個(gè)或多個(gè)實(shí)施例中以任何合適的方式結(jié)合特定特征、結(jié)構(gòu)或特性。
現(xiàn)在參考圖1,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例處理器和存儲器的框圖。如在圖1中所示出的,系統(tǒng)100可以包括處理器102和存儲器104。處理器102可以包括核心(一個(gè)或多個(gè))106、一級緩存108、轉(zhuǎn)換后備(translation lookaside)緩沖器(TLB)110、頁跟蹤器緩沖器(PTB)112、二級緩存114以及PTB處理機(jī)116。盡管將處理器102示出為包括一級緩存108和二級緩存114,但處理器102可以包括任何數(shù)量的緩存級別。同樣的,盡管將處理器102示出為包括能夠存儲從虛擬地址到物理地址的地址轉(zhuǎn)換的TLB 110,但本發(fā)明可以在沒有TLB的處理器中實(shí)施。
如參考圖2更詳細(xì)地示出的,PTB 112可以包含指示特定存儲器區(qū)域的哪些部分(例如,特定緩存頁或其他存儲器區(qū)域的哪些緩存行)先前已經(jīng)被核心(一個(gè)或多個(gè))106存取的項(xiàng)目(entry)。在一個(gè)實(shí)施例中,PTB 112還包含指示特定緩存頁的哪些緩存行已經(jīng)多次被核心(一個(gè)或多個(gè))106存取的項(xiàng)目,這潛在地指示可能最希望保持常駐在緩存中的那些緩存行。
如在下文中更詳細(xì)地描述的,PTB處理機(jī)116可以嘗試精確地預(yù)測核心(一個(gè)或多個(gè))106將需要的指令和數(shù)據(jù)。在一個(gè)實(shí)施例中,PTB處理機(jī)116預(yù)取PTB 112指示在先前實(shí)例化期間被存取的、(例如在TLB失敗之后)添加到TLB 110的緩存頁的那些緩存行。PTB處理機(jī)116可以從頁跟蹤器存儲器表118讀取PTB 112項(xiàng)目,以及將PTB 112項(xiàng)目寫回到頁跟蹤器存儲器表118。例如當(dāng)核心(一個(gè)或多個(gè))106存取附加的緩存行時(shí),PTB處理機(jī)116還可以更新PTB 112中的項(xiàng)目。可以以其他硬件(例如預(yù)取模塊)或軟件或硬件和軟件的組合來實(shí)現(xiàn)PTB處理機(jī)116??梢詫TB處理機(jī)116獨(dú)立地應(yīng)用于數(shù)據(jù)和指令預(yù)取并且可以與其他預(yù)取器共存。
存儲器104可以表示任何類型的存儲器,例如靜態(tài)或動態(tài)隨機(jī)存取存儲器(RAM)。在一個(gè)實(shí)施例中,存儲器104表示雙數(shù)據(jù)率同步動態(tài)RAM(DDR-SDRAM),然而本發(fā)明并不限于任何類型的存儲器。存儲器104可以在邏輯上劃分為頁(例如頁120)用于緩存和尋址。每個(gè)頁120可以包含固定數(shù)量的行122。在一個(gè)實(shí)施例中,頁120包含64個(gè)行122。在另一個(gè)實(shí)施例中,頁120表示可以通過固件或軟件配置其大小的存儲器區(qū)域。
現(xiàn)在參考圖2,示出根據(jù)本發(fā)明的實(shí)施例的示例頁跟蹤器緩沖器的框圖。如在圖2中所示出的,頁跟蹤器緩沖器112可以包括可通過索引208存取的任何數(shù)量的項(xiàng)目,所述項(xiàng)目的每個(gè)可以包括地址202、存取簽名(access signature)204以及重用簽名(reuse signature)206。在一個(gè)實(shí)施例中,PTB 112可以包括與TLB 110相同數(shù)量的項(xiàng)目。在其他實(shí)施例中,PTB 112可以包括比TLB 110更多或者更少的項(xiàng)目。在一個(gè)實(shí)施例中,PTB 112可以包括64個(gè)項(xiàng)目。在另一個(gè)實(shí)施例中,PTB 112可以包括1024個(gè)項(xiàng)目。
盡管將地址202示出為包括28比特,但地址202可以包含更多或者更少的比特用于標(biāo)識頁120(或另一個(gè)存儲器區(qū)域)。盡管將存取簽名204和重用簽名206示出為包括64比特,但存取簽名204和重用簽名206可以包含或者更多或者更少的比特用于標(biāo)識頁120的行122。在一個(gè)實(shí)施例中,存取簽名204的置位(set bit)指示在TLB 110中的頁120的先前尋址中被核心(一個(gè)或多個(gè))106存取的頁120的行122。在一個(gè)實(shí)施例中,重用簽名206的置位指示在TLB 110中的頁120的先前尋址中被核心(一個(gè)或多個(gè))106多次存取的頁120的行122。
現(xiàn)在參考圖3,示出根據(jù)本發(fā)明的實(shí)施例的用于利用存取簽名的示例方法的流程圖。如在圖3中所示出的,該方法開始于PTB處理機(jī)116在將任何被逐出(evicted)的項(xiàng)目寫回到頁跟蹤器存儲器表118之后將與緩存頁120關(guān)聯(lián)的存取簽名204載入(302)到PTB 112中。在一個(gè)實(shí)施例中,在TLB 110失?。╩iss)之后PTB處理機(jī)116載入存取簽名204并且寫回正被替換的任何存取簽名。接著,PTB處理機(jī)116可以將例如,由存取簽名204指示為先前已經(jīng)被核心(一個(gè)或多個(gè))106存取的行122預(yù)?。?04)到二級緩存114。最后,PTB處理機(jī)116可以更新(306)存取簽名204。在一個(gè)實(shí)施例中,當(dāng)請求并取出任何附加的行時(shí),PTB處理機(jī)116對取回的存取簽名204增加比特。在另一個(gè)實(shí)施例中,PTB處理機(jī)116可以將取回的存取簽名204用于預(yù)取并且可以重新生成存取簽名用于寫回到存儲器以供在隨后的頁存取中使用。
現(xiàn)在參考圖4,示出根據(jù)本發(fā)明的實(shí)施例的用于利用重用簽名的示例方法的流程圖。如在圖4中所示出的,該方法開始于PTB處理機(jī)116在將任何被逐出的項(xiàng)目寫回到頁跟蹤器存儲器表118之后將與緩存頁120關(guān)聯(lián)的重用簽名206載入(402)到PTB 112中。在一個(gè)實(shí)施例中,PTB處理機(jī)116在TLB 110失敗之后載入重用簽名206。接著,PTB處理機(jī)116可以優(yōu)先化(404)由重用簽名206指示為先前已經(jīng)多次被核心(一個(gè)或多個(gè))106存取的二級緩存114中的那些緩存行的替換策略。在一個(gè)實(shí)施例中,PTB處理機(jī)116可以用重用簽名206中的位組將那些緩存行設(shè)置為最近最多使用。在另一個(gè)實(shí)施例中,PTB處理機(jī)116可以將那些緩存行設(shè)置為最近最少使用,而無需重用簽名206中的位組。最后,當(dāng)多次請求任何附加的行時(shí),PTB處理機(jī)116可以更新(406)重用簽名206。
實(shí)施例可以以許多不同的系統(tǒng)類型來實(shí)現(xiàn)?,F(xiàn)在參考圖5,示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。如在圖5中所示出的,多處理器系統(tǒng)500是點(diǎn)到點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)到點(diǎn)互連550耦合的第一處理器570和第二處理器580。如在圖5中所示出的,處理器570和580的每一個(gè)可以是包括第一和第二處理器核心(即,處理器核心574a和574b以及處理器核心584a和584b)的多核處理器。每個(gè)處理器可以包括根據(jù)本發(fā)明的實(shí)施例的PTB硬件、軟件以及固件。
仍然參考圖5,第一處理器570還包括存儲控制器集線器(MCH,memory controller hub)572以及點(diǎn)到點(diǎn)(P-P)接口576和578。類似地,第二處理器580包括MCH 582和P-P接口586和588。如在圖5中所示出的,MCH 572和582將處理器耦合到相應(yīng)的存儲器(即存儲器532和存儲器534),其可以是本地附連到相應(yīng)處理器的主存儲器(例如,動態(tài)隨機(jī)存取存儲器(DRAM))的一部分,根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述相應(yīng)處理器的每一個(gè)可以包括頁跟蹤器存儲器表。第一處理器570和第二處理器580可以經(jīng)由P-P互連552和554分別耦合到芯片組590。如在圖5中所示出的,芯片組590包括P-P接口594和598。
此外,芯片組590包括用于將芯片組590與高性能圖形引擎538耦合的接口592。而芯片組590可以經(jīng)由接口596耦合到第一總線516。如在圖5中所示出的,各種I/O設(shè)備514可以與將第一總線516耦合到第二總線520的總線橋518一起耦合到第一總線516。在一個(gè)實(shí)施例中各種設(shè)備可以耦合到第二總線520,包括例如,鍵盤/鼠標(biāo)522、通信設(shè)備526以及可以包括代碼530的數(shù)據(jù)存儲單元528(例如磁盤驅(qū)動器或其他大容量存儲設(shè)備)。此外,音頻I/O 524可以耦合到第二總線520。
實(shí)施例可以以代碼來實(shí)現(xiàn)并且可以存儲在具有存儲于其上的指令的存儲介質(zhì)上,存儲介質(zhì)能夠用來對系統(tǒng)編程以執(zhí)行這些指令。存儲介質(zhì)可以包括但不限于:任何類型的盤(包括軟盤、光盤、光盤只讀存儲器(CD-ROM)、可重寫光盤(CD-RW)以及磁光盤)、半導(dǎo)體設(shè)備(例如只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)(例如動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM))、可擦寫可編程只讀存儲器(EPROM)、閃速存儲器、電可擦寫可編程只讀存儲器(EEPROM)、磁卡或光卡)或適合存儲電子指令的任何其他類型的媒體。
盡管已經(jīng)關(guān)于有限數(shù)量的實(shí)施例描述了本發(fā)明,但本領(lǐng)域技術(shù)人員將從中意識到大量的修改和改變。所附的權(quán)利要求書旨在覆蓋落入本發(fā)明的實(shí)質(zhì)精神和范圍內(nèi)的所有此類修改和改變。