專利名稱:使用索引查找的存儲至加載前傳緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器領(lǐng)域,更具體地,涉及在微處理器內(nèi)執(zhí)行存儲至加載前傳(store-to-load forwarding,STLF)。
背景技術(shù):
在高性能微處理器中,加載存儲單元通常包括用于等待訪問L1高速緩沖存儲器的多個突出的加載及存儲操作的存儲器(storage)。一般可用于此類微處理器架構(gòu)的性能增強是實現(xiàn)一種將源自較舊的存儲操作(程序指令中較早出現(xiàn)的存儲操作)的數(shù)據(jù)前傳至較新的加載操作(程序指令中較晚出現(xiàn)的加載操作)的機制。
通過規(guī)避訪問L1數(shù)據(jù)高速緩沖存儲器,此數(shù)據(jù)的存儲至加載前傳顯著地改善了執(zhí)行效率。通常獲得STLF的方法是去搜索所有較舊的存儲操作,此時加載操作處于執(zhí)行管線(pipeline)的數(shù)據(jù)高速緩沖存儲器訪問階段。將加載操作的地址與所有駐留在加載存儲單元內(nèi)存儲操作的地址作比較。首先,確定所有與該加載操作有相同目標地址的存儲操作,然后通過排除任何比該加載操作還新的存儲操作以精簡此組操作(grouping)。一旦確定了所有比該加載操作還舊的存儲操作,比較這些存儲操作的相對期齡(relative ages)以找出比該加載操作還舊的最新存儲操作。然后,將與此最新存儲操作有關(guān)的數(shù)據(jù)前傳至加載操作,讓它正常完成而不需訪問L1數(shù)據(jù)高速緩沖存儲器。
用來找出與加載操作具有相同目標地址的最新存儲操作的“地址比較與搜尋算法”是相對復雜并且在實現(xiàn)上需要許多層次的組合邏輯。通常該加載存儲單元存儲多個等待要以訪問L1來完成的操作。此存儲器的每一條線(line)包括多個加載或存儲操作所用的條目(entry)。當加載操作的地址變得可用時,它必須與每個條目的地址作比較并且所有匹配的條目必須核實為存儲操作。一旦確定了匹配加載操作的目標地址的所有存儲操作條目,則可用“找出-第一算法(find-firstalgorithm)”來確定比加載操作還舊的最新匹配的存儲操作。然后,可得來自適當條目的數(shù)據(jù)并將其前傳至加載操作。
就高性能微處理器而言,此STLF功能通常為完成加載操作的要徑(critical path)的一部分,因而對有效加載等待時間(effective loadlatency)有顯著影響。執(zhí)行上述程序中的每一個所花費的時間都分擔于此有效加載等待時間,且在某些實施例中,可能限制微處理器可操作的最大頻率。
發(fā)明內(nèi)容
在此公開了執(zhí)行“索引存儲至加載前傳”的方法與系統(tǒng)的不同實施例。在一個實施例中,微處理器可以包括分配單元(其配置成分配加載及存儲操作),和加載存儲單元(其配置成存儲與該分配單元所分配的加載及存儲操作有關(guān)的信息)。該加載存儲單元包括STLF緩沖器,其包括多個條目。該加載存儲單元配置成產(chǎn)生取決于加載操作的地址的索引,可使用該索引選定該多個條目中的一個條目,并前傳包括在該多個條目的一個條目中的數(shù)據(jù)作為該加載操作的結(jié)果。可將STLF緩沖器中該多個條目中選定的條目配置成存儲與存儲操作有關(guān)的地址、數(shù)據(jù)和數(shù)據(jù)大小(data size)??捎砂ㄔ谠摰刂返牡刂肺坏娜炕虿糠之a(chǎn)生索引。該地址可為物理地址或虛擬地址。包括索引STLF緩沖器的微處理器可包括在計算器系統(tǒng)中。
在一個實施例中,可將該加載存儲單元配置成如果包括在該多個條目的一個條目中的信息與和加載操作有關(guān)的信息不匹配,則不前傳包括在該多個條目的一個條目中作為該加載操作結(jié)果的數(shù)據(jù)。
可將該加載存儲單元配置成通過產(chǎn)生取決于存儲操作的地址的至少一部分的附加索引,來選定該多個條目中的哪一個條目可分配給存儲操作。在某些實施例中,可將該加載存儲單元配置成產(chǎn)生該附加索引(其取決于存儲操作的地址以及存儲操作所操作的數(shù)據(jù)的一些字節(jié))。同樣地,可將該加載存儲單元配置成產(chǎn)生加載操作所用的索引(其取決于該加載操作的地址以及加載操作所操作的數(shù)據(jù)的一些字節(jié))。在一個實施例中,通過將該存儲操作定為目標的地址的低位部分右移,其中右移量等于該存儲操作所操作的數(shù)據(jù)字節(jié)數(shù)以2為底的對數(shù),而產(chǎn)生該附加索引。
該加載存儲單元可包括STLF檢驗器,其配置成核對STLF緩沖器的操作??蓪⒃揝TLF檢驗器配置成執(zhí)行關(guān)聯(lián)地址比較(associativeaddress comparison)以確定所有與加載操作具有相同目標地址的已發(fā)出存儲操作,并且執(zhí)行“找出一第一算法”以選定比加載操作還舊的、最新已發(fā)出存儲操作。可將該STLF檢驗器配置成如果該STLF檢驗器檢測到該STLF緩沖器的不正確操作,則重新進行該加載操作。也可將該STLF檢驗器配置成如果該STLF檢驗器檢測到該STLF緩沖器的不正確操作,則重新進行一個或更多個取決于加載操作的附加操作。將該加載存儲單元配置成確定該加載操作的結(jié)果為推測值(speculativevalue)以響應作為加載操作結(jié)果的包括在該STLF緩沖器的多個條目的一個條目中的數(shù)據(jù)前傳。如果該STLF檢驗器核實STLF緩沖器對加載操作操作正確,則將該加載存儲單元配置成表示該加載操作的結(jié)果不是推測值。
參考以上本發(fā)明的詳細描述,結(jié)合附圖,將更能了解本發(fā)明。
圖1是顯示根據(jù)一個實施例的包括STLF緩沖器的微處理器。
圖2是顯示根據(jù)一個實施例的加載存儲單元的方塊圖。
圖3是根據(jù)一個實施例,用于操作包括STLF緩沖器的微處理器的方法的流程圖。
圖4是根據(jù)一個實施例,用于操作加上STLF檢驗器與存儲至加載前傳緩沖器的微處理器的方法的流程圖。
圖5顯示根據(jù)一個實施例加上一個具有STLF緩沖器的微處理器的示例性計算器系統(tǒng)。
圖6顯示根據(jù)另一實施例的示例性計算器系統(tǒng)。
具體實施例方式
盡管本發(fā)明易有不同的修改與替代形式,其特定具體實施例以實施例圖標于附圖且在此予以詳述。不過,應當了解,附圖及其詳細說明不是要將本發(fā)明限定為所公開的特定形式,相反地,本發(fā)明是要涵蓋所有落入所附權(quán)利要求書所界定的本發(fā)明的精神與范疇內(nèi)的修改、等效以及替代。應當注意,諸標題只是用在組織上的目的而不是有意用來限定或解釋說明內(nèi)容或權(quán)利要求書。此外,應注意本申請書中所用的“可以”一詞有非約束性的意思(即,具有可能性,能夠),而無強制性的意思(即,必須)?!鞍ā边@一詞及其衍生詞的意思為“包括,但不限定于”。“連接”這一詞意思為“直接或間接連接”,以及“耦接”這一詞意思為“直接或間接耦接”。
圖1為方塊圖,顯示包括在微處理器100的具體實施例的邏輯組件,該微處理器100結(jié)合存儲至加載前傳(STLF)緩沖器140。將微處理器100配置成執(zhí)行存儲在系統(tǒng)內(nèi)存200中的指令。許多該些指令對于存儲在系統(tǒng)內(nèi)存200中的數(shù)據(jù)進行操作。應當注意,系統(tǒng)內(nèi)存200實際上可以分散在計算器系統(tǒng)各處并且可以被一個或更多個微處理器100訪問。在一些具體實施例中,可將該微處理器100設計成與x86架構(gòu)兼容。應當注意,除了在此圖標的組件以外,微處理器100還可以包括和/或連接至許多其它的組件。例如,在微處理器100與系統(tǒng)內(nèi)存200之間,可包括附加幾層級的高速緩沖存儲器(內(nèi)建和/或外接至微處理器100)。同樣,在某些具體實施例中,微處理器100可包括配置成控制系統(tǒng)內(nèi)存200的內(nèi)存控制器。此外,邏輯組件之間的互連在各具體實施例之間會有所不同。
微處理器100可包括指令高速緩沖存儲器106與數(shù)據(jù)高速緩沖存儲器128。微處理器100可包括連接至該系統(tǒng)內(nèi)存200的預取單元108。預取單元108可從系統(tǒng)內(nèi)存200預取指令碼以存儲在指令高速緩沖存儲器106內(nèi)。在一個具體實施例中,可將預取單元108配置成將指令碼從系統(tǒng)內(nèi)存200叢發(fā)(burst)至指令高速緩沖存儲器106。預取單元108可應用多種特定編碼預取技術(shù)及算法??蓮南到y(tǒng)內(nèi)存200提取指令以響應在指令高速緩沖存儲器106中丟失的給定地址。
可將分配單元104配置成從指令高速緩沖存儲器106接收指令并且從追蹤高速緩沖存儲器(trace cache)160接收已解碼和/或已部分解碼的操作。該分配單元104可包括可將接收自指令高速緩沖存儲器106的指令解碼的解碼單元140。該分配單元104也可包括一個在處理微碼指令時所使用的微碼單元。
將該分配單元104配置成分配操作至一個或多個排程器118。可將一個或更多個排程器118連接成可從分配單元104接收分配的操作,并且將操作發(fā)給一個或更多個執(zhí)行核心124。一個或多個執(zhí)行核心124可包括加載存儲單元126,其配置成訪問數(shù)據(jù)高速緩沖存儲器128。可將一個或多個執(zhí)行核心124所產(chǎn)生的結(jié)果輸出到結(jié)果總線130。這些結(jié)果可用來當作用于隨后發(fā)出的指令和/或存儲于寄存器文件116的操作數(shù)數(shù)值(operand value)。回收排隊(retire queue)102可連接至一個或多個排程器118,以及分配單元104。該回收排隊配置成判定何時可回收每個已發(fā)出的操作。
在分配單元104收到指令之前,指令高速緩沖存儲器106可暫時存儲這些指令。通過由預取單元108從系統(tǒng)內(nèi)存200預取指令碼,可提供指令碼至指令高速緩沖存儲器106。可用不同的結(jié)構(gòu)實現(xiàn)指令高速緩沖存儲器106(例如,分組關(guān)系型(set-associative)、完全關(guān)系型(fully-associative)、或直接映射型(direct-mapped))。
分配單元104可輸出包括有可由一個或多個執(zhí)行核心124執(zhí)行的位編碼操作(bit-encoded operation)、以及操作數(shù)地址信息、立即數(shù)據(jù)和/或位移數(shù)據(jù)(displacement data)的多個信號。解碼單元140可用來將某些指令解碼為在一個或多個執(zhí)行核心124內(nèi)可執(zhí)行的一個或更多個操作。簡單的指令可對應于單一操作。較復雜的指令可對應于多個操作。一旦收到涉及更新寄存器的操作,該分配單元104可在寄存器文件116內(nèi)保留寄存器位置以存儲推測的寄存器狀態(tài)(在另一具體實施例中,重新排序緩沖器(reorder buffer)可用來為每一個寄存器存儲一個或更多個推測的寄存器狀態(tài))。寄存器映射(register map)可將來源與目的地操作數(shù)的邏輯寄存器名稱翻譯為物理寄存器名稱以利于寄存器的重新命名。此一寄存器映射可追蹤寄存器文件116內(nèi)哪些寄存器目前是已分配的以及未分配的。
當分配單元104處理操作時,如果必需的操作數(shù)為寄存器的位置,則寄存器地址信息可路由至寄存器映射或重新排序緩沖器。例如,在x86架構(gòu)中,有8個32位邏輯寄存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI、和ESP)。物理寄存器文件116(或重新排序緩沖器)包括改變這些邏輯寄存器的內(nèi)容(允許無序執(zhí)行)的結(jié)果的存儲器??煞峙浼拇嫫魑募?16中的物理寄存器以存儲每一變更這些邏輯寄存器之一的內(nèi)容的操作結(jié)果。因此,執(zhí)行特定程序期間,在不同的位置,寄存器文件116(或另一具體實施例的重新排序緩沖器)可能有一個或更多個包括給定邏輯寄存器的已推測執(zhí)行的內(nèi)容(speculativelyexecuted contents)的寄存器。
寄存器映射可指定物理寄存器至具體指定當作操作之目的地操作數(shù)的特定邏輯寄存器。寄存器文件116可具有一個或更多個先前已分配的物理寄存器(其是經(jīng)指定至具體指定當作給定操作來源操作數(shù)的邏輯寄存器)。該寄存器映射可為最近指定至那一邏輯寄存器的物理寄存器提供標記。此標記可用來訪問該寄存器文件116內(nèi)的操作數(shù)數(shù)值,或經(jīng)由在結(jié)果總線130上前傳的結(jié)果接收該數(shù)據(jù)值。如果該操作數(shù)對應于內(nèi)存位置,則可透過加載存儲單元126而將該操作數(shù)值供給結(jié)果總線(用于前傳結(jié)果和/或存儲于寄存器文件116)。當一個或多個排程器118中之一發(fā)出操作時,可提供操作數(shù)數(shù)據(jù)值至一個或多個執(zhí)行核心124。應當注意,另一具體實施例中,在分配操作的時候(而非在發(fā)出操作時將其供給對應的執(zhí)行核心124),可提供操作數(shù)數(shù)值至對應的排程器118。
在分配單元104的輸出處所提供的位編碼操作和立即數(shù)據(jù)可以被路由至一個或更多個排程器118。應注意,在此所用的排程器為一種器件,它檢測何時操作備妥執(zhí)行且將備妥的操作發(fā)給一個或更多個執(zhí)行單元。例如,保留站(reservation staion)為排程器。每一排程器118能夠保留多個等待發(fā)給執(zhí)行核心124的等待操作的操作信息(例如,位編碼執(zhí)行位,以及操作數(shù)數(shù)值、操作數(shù)標記、和/或立即數(shù)據(jù))。某些具體實施例中,每一排程器118可以不提供操作數(shù)數(shù)值存儲器。相反,每一排程器可以監(jiān)視寄存器文件116內(nèi)可用的已發(fā)出操作和結(jié)果,以判斷何時操作數(shù)數(shù)值可供一個或多個執(zhí)行核心124讀取(由寄存器文件116或結(jié)果總線130)。某些具體實施例中,每一排程器118可以與專屬執(zhí)行核心124相聯(lián)系。其它的具體實施例中,單一排程器118可以將多個操作發(fā)給一個以上的執(zhí)行核心124。
可以提供多個排程器118以暫時存儲要由一個或多個執(zhí)行核心124執(zhí)行的操作信息。如前所述,每一排程器118可以存儲等待操作(pending operation)的操作信息。此外,每一排程器可以存儲已執(zhí)行但仍要再發(fā)出的操作的操作信息。將操作發(fā)給一個或多個執(zhí)行核心124執(zhí)行,以響應任何所需的一個或多個操作數(shù)變成可及時執(zhí)行時的數(shù)值。因此,操作執(zhí)行的順序可能與原始程序指令序列的順序不同。
在一個具體實施例中,一個或多個執(zhí)行核心124的每一個可以包括多個組件,其配置成執(zhí)行加減法的整數(shù)算術(shù)操作,以及移位、旋轉(zhuǎn)、邏輯操作、與分支操作。還可以包括進行浮點操作的浮點單元。執(zhí)行核心124的一個或更多個配置成執(zhí)行將要由加載存儲單元126所執(zhí)行的加載與存儲內(nèi)存操作的地址產(chǎn)生。
如果寄存器數(shù)值正在更新,則一個或多個執(zhí)行核心124內(nèi)的組件所產(chǎn)生的結(jié)果可以在結(jié)果總線130上輸出至寄存器文件116。如果內(nèi)存位置的內(nèi)容正在改變,則可以將一個或多個執(zhí)行核心124內(nèi)所產(chǎn)生的結(jié)果提供給該加載存儲單元126。
加載存儲單元126提供了在一個或多個執(zhí)行核心124與數(shù)據(jù)高速緩沖存儲器128之間的接口。在一個具體實施例中,可將加載存儲單元126配置有包含多個存儲位置的加載存儲緩沖器,該存儲位置用于存儲等待加載或存儲操作的數(shù)據(jù)與地址信息。該加載存儲單元126也可執(zhí)行加載指令對等待存儲指令的相依性檢查(dependency checking),以確保維持數(shù)據(jù)連貫性(data coherency)。
數(shù)據(jù)高速緩沖存儲器128為高速緩沖存儲器內(nèi)存,其提供給暫時存儲正在加載存儲單元126與系統(tǒng)內(nèi)存200間傳送的數(shù)據(jù)。與上述的指令高速緩沖存儲器106類似,數(shù)據(jù)高速緩沖存儲器128可以多種特定的內(nèi)存組態(tài)實現(xiàn),包括分組關(guān)系型組態(tài)。此外,在某些具體實施例中,數(shù)據(jù)高速緩沖存儲器106與指令高速緩沖存儲器128可以整合高速緩沖存儲器實現(xiàn)。
加載存儲單元圖2顯示根據(jù)一個具體實施例的加載存儲單元126,其包括存儲至加載前傳(STLF)緩沖器305。加載存儲單元126也包括操作存儲器307,用于已分配但未回收的未處理操作。操作存儲器307可以追蹤加載存儲單元126內(nèi)所有的未處理(outstanding)操作。操作存儲器307可包括每一個已分配加載與每一個已分配存儲的條目310。
條目310可包括表示該條目是否分配給加載或存儲的信息313(或者是,在某些具體實施例中,條目可以表示它包括加載與存儲兩者,如果它對應的操作是操作由內(nèi)存地址加載的數(shù)值且將結(jié)果存入內(nèi)存地址)。此外,條目310可包括標記315(例如,確定微處理器100內(nèi)的操作和/或其結(jié)果)、地址317、和/或數(shù)據(jù)319。分配條目310以響應分配單元104分配操作,以及解除分配該條目310以響應回收排隊102回收該操作。
在STLF緩沖器305內(nèi)的每一條目320可由唯一的索引選定。該加載存儲單元126可由操作的地址的全部或部分產(chǎn)生索引,并且使用該索引選定那一個條目可訪問那個操作。例如,該加載存儲單元126可由地址內(nèi)位的子集合產(chǎn)生索引。所用的地址可為物理地址或虛擬地址。在某些具體實施例中,索引也取決于操作的數(shù)據(jù)大小。
在某些具體實施例中,當存儲操作的地址與數(shù)據(jù)兩者均可用時,該存儲操作變成可將其數(shù)據(jù)前傳至較新的、目標地址相同的加載操作。這時,該加載存儲單元可將STLF緩沖器305內(nèi)的條目320分配給該存儲操作。該加載存儲單元126可通過從存儲操作的地址的至少一部分算出索引來選定哪一個條目320可分配給該存儲操作??蓪⒛莻€索引所選定的條目320分配給該存儲操作。STLF緩沖器305內(nèi)的條目320可包括已配置條目的存儲操作的地址321、數(shù)據(jù)327、以及數(shù)據(jù)大小329(例如,由存儲操作所操作數(shù)據(jù)的字節(jié)數(shù))的部分或全部。STLF緩沖器305內(nèi)的所有條目可包括足夠的容量以存儲與存儲操作有關(guān)的最大數(shù)據(jù)量。
每當加載操作的地址變得可用時,該加載存儲單元126可基于全部或部分的加載地址產(chǎn)生索引,以選定該STLF緩沖器305內(nèi)的條目320。如果包括在選定的條目320的地址信息321和/或數(shù)據(jù)大小信息329與加載操作有關(guān)的地址信息和/或數(shù)據(jù)大小信息匹配,則該STLF緩沖器305可前傳那個條目內(nèi)的數(shù)據(jù)327當作該加載操作的結(jié)果。應當注意,“匹配”的條件為如果包括在條目320內(nèi)的地址信息321、數(shù)據(jù)大小信息329、和/或任何其它信息與和加載操作有關(guān)的信息至少是部分匹配的。例如,響應條目信息的子集或部分匹配于和加載有關(guān)的信息,條目可視為匹配。其它具體實施例中,“匹配”的條件為僅若條目的信息與加載的信息完全匹配。
某些具體實施例中,條目320的索引可包括操作地址的下方位(lower order bits)。在其它具體實施例中,可通過對操作地址做轉(zhuǎn)換功能以產(chǎn)生索引。在某些具體實施例中,可產(chǎn)生索引使得任何給定的地址與數(shù)據(jù)大小對映射至單一的索引(應注意可由多個不同地址形成相同的索引)。因此,每當加載操作的地址用于索引STLF緩沖器305時,會選定單一的條目320。使用索引STLF緩沖器305可使得存儲至加載前傳要完成的周期少于使用常規(guī)STLF緩沖器做存儲至加載前傳所需的周期。
在某些具體實施例中,STLF緩沖器305的大小可能有限,因此相對于存儲于加載存儲單元的操作存儲器307的操作個數(shù)而言,只能存儲有限個數(shù)的條目。在某些情況下,這可能導致STLF緩沖器305的條目320間有沖突。例如,STLF緩沖器305可以有存儲16個條目的容量,對應地址為0x0h至0xFh。指令序列可能導致發(fā)出一序列存儲操作(每個存儲4個字節(jié)的數(shù)據(jù))。這一序列的存儲操作可以一序列內(nèi)存地址為目標,使得第一個存儲操作目標為地址0x00h,第二個目標為0x04h,第三個目標為0x08h,等等。在使用直接映射索引法的具體實施例中,頭4個存儲操作可能造成在索引0x0h、0x4h、0x8h、以及0xCh產(chǎn)生STLF緩沖器305內(nèi)的條目320。序列中下一個存儲操作可能以地址0x10h為目標,而產(chǎn)生給此存儲操作的條目320的索引可能為0x0h。因為此索引與產(chǎn)生給第一個存儲操作(目標為地址0x00h)的索引相同,所以該等加載存儲單元126選了STLF緩沖器內(nèi)同一條目320給這兩個存儲操作。
由于有地址0x10h的存儲操作與有地址0x00h的存儲操作以同一條目為索引,這兩個存儲操作可能不會同時出現(xiàn)在STLF緩沖器內(nèi),即使STLF緩沖器305內(nèi)其它的條目目前未被分配。如果STLF緩沖器305內(nèi)沒有條目分配給新的存儲操作,則該加載存儲單元126可能不會將與該新的存儲操作有關(guān)的數(shù)據(jù)立即前傳到以相同地址為目標的加載操作。另一方面,如果該條目分配給有地址0x10h的新存儲操作,將有地址0x00h的存儲操作的信息覆寫(overwriting),則該加載存儲單元126可能不會將與舊的存儲操作有關(guān)的數(shù)據(jù)立即前傳到以相同地址為目標的加載操作。
在STLF緩沖器305內(nèi)產(chǎn)生索引的時候,可通過應用散列函數(shù)(hashing function)或其它地址變換方法來降低訪問連續(xù)地址的序列的存儲操作間可能造成的沖突。在一個具體實施例中,該加載存儲單元126可將操作的地址右移且右移量等于log2(數(shù)據(jù)大小)來形成各索引。在以上給出的實施例中,所應用的散列函數(shù)會將以地址0x00h為目標的存儲操作翻譯成索引為0x0h的條目320。對于以地址0x04h為目標的存儲操作,該加載存儲單元126會配置索引為0x1h的條目。同樣,該加載存儲單元會將以索引0x2h選定的條目分配給有地址0x08h的存儲操作。以地址0x10h為目標的存儲操作(它先前與以地址0x00h為目標的存儲操作相沖突)會分配以索引0x4選定的條目并且不會再產(chǎn)生沖突。因此,將散列函數(shù)或其它的變換方法納入產(chǎn)生STLF緩沖器305內(nèi)的條目320的索引,可增加STLF緩沖器存儲容量的利用率。
如上述轉(zhuǎn)換用于加載及存儲操作的目標地址以產(chǎn)生索引于STLF緩沖器305之內(nèi),可讓同一最大數(shù)據(jù)大小區(qū)段內(nèi)的不同字節(jié)分配給多個存儲操作的條目以同時存在于STLF緩沖器305內(nèi)。不過,當將下方位移出時會損失一點精確度,且有必要將地址321與數(shù)據(jù)大小329作比較以判定在STLF緩沖器305內(nèi)是否命中(hit)。例如,至地址0x00h、0x02h、以及0x04h的2字節(jié)存儲操作的條目可分別與索引位在0x0h、0x1h、以及0x2h的共存于STLF緩沖器305之內(nèi)。試圖匹配以0x04h為目標地址的4字節(jié)加載操作在STLF緩沖器305內(nèi)會產(chǎn)生0x1h的索引以找到有效條目,但是因為在0x1h產(chǎn)生條目的存儲操作只操作2個字節(jié)的數(shù)據(jù),所以該加載存儲單元對該試圖匹配應產(chǎn)生一個沒有命中的信號(miss)。將加載操作的地址與數(shù)據(jù)大小兩者均與STLF緩沖器305內(nèi)的條目作比較可杜絕至少一些錯誤的匹配。
在某些具體實施例中,即使當使用地址變換以產(chǎn)生索引至STLF緩沖器305內(nèi),仍有可能出現(xiàn)兩個或更多個存儲操作映射至同一STLF緩沖器條目320的情形。在這些情形之下,有可能加載操作與這些存儲操作目標于相同的地址,以載送從錯誤存儲操作來的數(shù)據(jù)。在某些具體實施例中,STLF緩沖器305可能未將數(shù)據(jù)正確前傳,STLF緩沖器305可能將前傳結(jié)果確定為推測的。例如,可將與前傳數(shù)據(jù)有關(guān)的位設定成表示數(shù)據(jù)為推測的。這些結(jié)果可能被確定為推測的,直到用核對機制例如STLF檢驗器303加以核對為止。
STLF檢驗器303為一種核對STLF操作正確性的工具。在某些具體實施例中,可將STLF檢驗器303以常規(guī)的STLF緩沖器實現(xiàn),其執(zhí)行關(guān)聯(lián)查找(associative lookups)以及找出一第一算法。因此,STLF檢驗器303可將加載操作之地址與加載存儲單元126的操作存儲器307內(nèi)的所有的存儲操作作比較。一旦確定所有匹配的條目310,該STLF檢驗器307可用找出一第一算法確定配給最新存儲操作(比加載操作舊)的條目310。然后,可將已確定條目310的數(shù)據(jù)319選定為要當作加載操作的結(jié)果前傳的數(shù)值。該STLF檢驗器303執(zhí)行存儲至加載前傳可能要花費比STLF緩沖器305明顯較多的周期。
STLF檢驗器303可以精確確定要前傳至加載操作的數(shù)據(jù)的正確來源。如果STLF檢驗器303與STLF緩沖器305確定存儲操作與將數(shù)據(jù)當作給定加載操作的結(jié)果前傳的來源相同,則由STLF緩沖器305當作加載操作的結(jié)果所前傳的數(shù)據(jù)可能不再是推測的,且該加載存儲單元可能產(chǎn)生此作用的標示。例如,可清除與前傳數(shù)據(jù)有關(guān)的位以表示該數(shù)據(jù)不再是推測的。另一方面,如果STLF檢驗器303所確定的存儲操作不同于用來由STLF緩沖器305前傳數(shù)據(jù)的存儲操作,則該加載操作以及任何操作該推測數(shù)據(jù)的后續(xù)操作可能已產(chǎn)生無效的結(jié)果。該STLF檢驗器303可能也檢測STLF緩沖器305未將數(shù)據(jù)當作加載操作的結(jié)果前傳的情形,即使那個加載操作應該已經(jīng)由較早的存儲操作前傳數(shù)據(jù)。
該STLF檢驗器303可以刪除在STLF緩沖器305內(nèi)不正確前傳的或在STLF緩沖器305內(nèi)不正確地不前傳的加載操作。在此情況中,該STLF檢驗器303可能造成重新進行該加載操作(例如,通過提供訊號至排程器118)。該STLF檢驗器303也可以由不正確前傳的(或不正確地不前傳的)加載操作產(chǎn)生確定該存儲操作的應該前傳的信息。當在加載存儲單元126內(nèi)重新進行加載操作時,該加載存儲單元126可以用此信息來從被STLF檢驗器303確定為加載操作結(jié)果的存儲操作前傳數(shù)據(jù)??蛇x地,可將該加載存儲單元126配置成可抑制STLF檢驗器303所刪除的以及因STLF緩沖器305不正確操作而造成重新加載操作結(jié)果的前傳。
圖3為流程圖,顯示依照一個具體實施例包括存儲至加載前傳緩沖器的微處理器的操作方法。當在405處存儲操作的目標地址與相關(guān)數(shù)據(jù)均為有效時,在410處可基于由該存儲操作的地址和/或數(shù)據(jù)大小的全部或部分所產(chǎn)生的索引,選定該存儲至加載前傳緩沖器內(nèi)的條目用來配置于該存儲操作。選定的條目可存儲存儲操作所用的目標地址的全部或部分(例如,條目可以存儲包括不用來產(chǎn)生索引的目標地址的上方位(high-order bits))的標記。該條目也可以存儲與存儲操作有關(guān)的數(shù)據(jù)以及表示數(shù)據(jù)大小的數(shù)值。
當在415處收到與加載操作有關(guān)的地址時,該加載存儲單元可以基于420處的地址產(chǎn)生進入STLF緩沖器內(nèi)的索引。如果該索引所選定的條目是有效的,則在425處該加載存儲單元可以將條目的地址和數(shù)據(jù)大小與加載操作的地址和數(shù)據(jù)大小作比較。在430處,源自匹配條目的數(shù)據(jù)可被前傳作為該加載操作的結(jié)果。如果選定條目的地址和/或數(shù)據(jù)大小與該加載操作者不匹配,則就不會有數(shù)據(jù)被前傳當作加載的結(jié)果。
圖4為流程圖,顯示用來操作具體實施例的微處理器的方法,該微處理器除了有索引存儲至加載前傳緩沖器以外,還加上一個STLF檢驗器。當在505處收到用于加載操作的地址時,與圖3的操作420至435同時,該STLF檢驗器也可以開始在操作存儲所內(nèi)尋找具有匹配的目標地址確定所有駐留的存儲操作。由一組比加載操作舊的存儲操作,在515處該STLF檢驗器可以選定最新的操作當作前傳至加載操作數(shù)據(jù)的正確來源。在520處,該加載存儲單元可以拿選定要由STLF緩沖器(430處)前傳數(shù)據(jù)至加載操作的存儲操作與在515處被STLF檢驗器確定的存儲操作作比較。如果數(shù)據(jù)由任何不是STLF檢驗器在515處所確定的存儲操作所前傳至負載操作,或者是如果沒有數(shù)據(jù)被前傳至加載操作(435處)且在515處有一個匹配的存儲操作被該STLF檢驗器確定,則在525處該加載存儲單元可以重新進行該加載操作以及任何后續(xù)的操作,此是取決于該加載操作結(jié)果。某些具體實施例中,該加載存儲單元可以提供在515處確定為可前傳至加載操作數(shù)據(jù)的正確來源的存儲操作本身以用于加載的后續(xù)再處理。其它的具體實施例中,該加載存儲單元可以抑制加載操作的后續(xù)再處理時的存儲至加載前傳。
示例性的計算器系統(tǒng)圖5為方塊圖,顯示計算器系統(tǒng)900的具體實施例,該計算器系統(tǒng)900包括微處理器100,是透過總線橋接器902連接至各種系統(tǒng)組件。微處理器100可以包括加載存儲單元,該加載存儲單元包括如上述的STLF緩沖器305與檢驗器303。計算器系統(tǒng)的其它具體實施例是有可能的且可預期的。在圖標的系統(tǒng)中,主內(nèi)存200是透過內(nèi)存總線906連接至總線橋接器902,以及圖形控制器908透過AGP總線910連接至總線橋接器902。多個PCI器件912A-912B透過PCI總線914連接至總線橋接器902。也可加上第二總線橋接器916以透過EISA/ISA總線920提供電氣接口至一個或更多個EISA或ISA器件918。此實施例中,微處理器100是透過CPU總線924連接至總線橋接器902,且連接到可選的L2高速緩沖存儲器928。某些具體實施例中,該微處理器100可以包括整合的L1高速緩沖存儲器(未圖標)。
總線橋接器902提供在微處理器100、主內(nèi)存200、圖形控制器908、以及附接于PCI總線914的器件之間的接口。當由連接至總線橋接器902的器件收到操作時,總線橋接器902確定該操作的目標(例如,一特定的器件或,就PCI總線914的情形而言,目標是在PCI總線914上)??偩€橋接器902將該操作路由至目標器件。總線橋接器902通常將由來源器件或總線所用的協(xié)議來放入操作翻譯為目標器件或總線所用的協(xié)議。
除了為PCI總線914提供接口至ISA/EISA總線以外,第二總線橋接器916可以加上額外的功能。輸入/輸出控制器(未圖標)(外接的或與第二總線橋接器916整合)也可以包括于計算器系統(tǒng)900以提供操作支持于鍵盤與鼠標922以及各種串行與并行端口。其它的具體實施例中,外部高速緩沖存儲器單元(未圖標)也可以連接至在微處理器100與總線橋接器902之間的CPU總線924??蛇x地,外部高速緩沖存儲器可以連接至總線橋接器902,以及可以將外部高速緩沖存儲器所用的高速緩沖存儲器控制邏輯電路整合至總線橋接器902內(nèi)。L2高速緩沖存儲器928出現(xiàn)在微處理器100的后方結(jié)構(gòu)。應注意L2高速緩沖存儲器928可能與微處理器100分開,與微處理器100一起整合至卡匣(例如,插槽1或插槽A),或者甚至與微處理器100一起整合至半導體基板。
主內(nèi)存200為存儲應用程序于其中的內(nèi)存以及為主要執(zhí)行微處理器100的內(nèi)存。適當?shù)闹鲀?nèi)存200可包括DRAM(動態(tài)隨機訪問內(nèi)存)。例如,合適的內(nèi)存為有多個內(nèi)存庫的SDRAM(同步DRAM)或RambusDRAM(RDRAM)。
PCI器件912A-912B為例示各種的周邊器件,例如網(wǎng)絡接口卡、視頻加速卡、聲卡、硬盤或軟盤驅(qū)動控制器、SCSI(小型計算器系統(tǒng)接口)適配器與電話卡。同樣,ISA器件918例示有各種類型的周邊器件,例如調(diào)制解調(diào)器、聲卡、以及各種的數(shù)據(jù)擷取卡例如GPIB或現(xiàn)場總線接口卡。
提供圖形控制器908以控制顯示器926上文字與圖案的呈現(xiàn)。圖形控制器908可包括熟悉此項技術(shù)者所普遍習知的典型圖形加速器,可呈現(xiàn)三維數(shù)據(jù)結(jié)構(gòu)(它可有效地由主內(nèi)存200轉(zhuǎn)進及轉(zhuǎn)出)。因此,圖形控制器908可為AGP總線910的主要器件,其中可請求與接收訪問至在總線橋接器902內(nèi)的目標接口,從而得以訪問主內(nèi)存200。專用的圖形總線提供由主內(nèi)存200快速取回數(shù)據(jù)。對于某些操作,可將圖形控制器908進一步配置成可產(chǎn)生AGP總線910上的PCI協(xié)議異動(protocol transaction)。因此,橋接器902的AGP接口可包括可支持AGP協(xié)議異動以及PCI協(xié)議目標與激活者異動(initiator transactions)的功能。顯示器926為任何可顯示圖案或文字的顯示器。適當?shù)娘@示器926包括陰極射線管(“CRT”)、液晶顯示器(“LCD”)等等。
應注意,盡管以上描述是將AGP、PCI、以及ISA或EISA總線作為實施例,但必要時可用任何總線架構(gòu)取代之。應進一步注意,計算器系統(tǒng)900可為包括額外微處理器的多元處理計算器系統(tǒng)(例如,圖標微處理器100a為計算器系統(tǒng)900的可選組件)。微處理器100a可類似于微處理器100。更具體而言,微處理器100a可為微處理器100的完全相同的副本。微處理器100a可經(jīng)由獨立總線連接至總線橋接器902(如圖5所示)或可與微處理器100共享CPU總線924。此外,微處理器100a可連接至可選的L2高速緩沖存儲器928a(與L2高速緩沖存儲器928類似)。
請參考圖6,是圖標包括如上述微處理器100的計算器系統(tǒng)900的另一具體實施例。其它的具體實施例是有可能的且可預期的。在圖6的具體實施例中,計算器系統(tǒng)900包括多個處理節(jié)點1012A、1012B、1012C、以及1012D。每一處理節(jié)點經(jīng)由內(nèi)存控制器1016A至1016D(包括在每一個別的處理節(jié)點1012A至1012D)連接至個別的內(nèi)存200A至200D。此外,諸處理節(jié)點1012A至1012D包括用來在處理節(jié)點1012A至1012D間通訊的接口邏輯。例如,處理節(jié)點1012A包括用來與處理節(jié)點1012B通訊的接口邏輯1018A、用來與處理節(jié)點1012C通訊的接口邏輯1018B、以及用來與另一處理節(jié)點(未圖標)通訊的第三接口邏輯1018C。同樣,處理節(jié)點1012B包括接口邏輯1018D、1018E、以及1018F;處理節(jié)點1012C包括接口邏輯1018G、1018H、以及1018I;以及處理節(jié)點1012D包括接口邏輯1018J、1018K、以及1018L。處理節(jié)點1012D經(jīng)連接成可經(jīng)由接口邏輯1018L而與多個輸入/輸出器件通訊(例如,菊花鏈(daisy-chain)組態(tài)的器件1020A至1020B)。其它的處理節(jié)點可用類似的方式與其它的輸入/輸出器件通訊。
處理節(jié)點1012A至1012D以數(shù)據(jù)包為基底的連結(jié)以利處理節(jié)點間的通訊而實現(xiàn)。在本具體實施例中,該連結(jié)是經(jīng)具體實作為數(shù)組單向線(例如,線1024A為用來傳送數(shù)據(jù)包,由處理節(jié)點1012A至處理節(jié)點1012B,以及線1024B用來傳送數(shù)據(jù)包,由處理節(jié)點1012B至處理節(jié)點1012A)。數(shù)組其它的線1024C至1024H用來在其它的處理節(jié)點之間傳送數(shù)據(jù)包,如圖6所示。一般而言,每一組線1024可包括一條或更多條數(shù)據(jù)線、一條或更多條對應至數(shù)據(jù)線的時鐘線路(clock line)、以及一條或更多條表示所傳遞的數(shù)據(jù)包類型的控制線。連結(jié)以高速緩沖存儲器連貫方式(cache coherent fashion)運作以利處理節(jié)點之間的通訊,或者是連結(jié)以不連貫方式(non-coherent fashion)運作以利處理節(jié)點與輸入/輸出器件(或是至常規(guī)結(jié)構(gòu)的輸入/輸出總線,例如PCI總線或ISA總線,的總線橋接器)之間的通訊。此外,可能以在輸入/輸出器件之間使用菊花鏈結(jié)構(gòu)的不連貫方式運作連結(jié),如圖標。應注意要由處理節(jié)點傳送至另一個的數(shù)據(jù)包可通過一個或更多個中間節(jié)點。例如,由處理節(jié)點1012A至處理節(jié)點1012D所傳送的數(shù)據(jù)包可通過處理節(jié)點1012B或者是處理節(jié)點1012C,如圖6所示??墒褂萌魏芜m當?shù)穆酚伤惴?routing algorithm)。計算器系統(tǒng)900的其它具體實施例可包括比圖標在圖6的具體實施例更多或更少個處理節(jié)點。
一般言之,在節(jié)點間的諸線1024上,可用一個或更多個位時間(bittime)傳送數(shù)據(jù)包。位時間為對應時鐘線路上的時脈訊號的上升波緣或下降波緣。數(shù)據(jù)包可包括激活異動的命令數(shù)據(jù)包(command packet)、維護高速緩沖存儲器連貫性的探查數(shù)據(jù)包(probe packet)、以及反應探查與命令的反應數(shù)據(jù)包(response packet)。
處理節(jié)點1012A至1012D,除了內(nèi)存控制器與接口邏輯之外,可包括一個或更多個微處理器。概括而言,處理節(jié)點包括至少一個微處理器且可選地包括內(nèi)存控制器,用于必要時與內(nèi)存及其它的邏輯通訊。在某些具體實施例中,每一微處理器可包括STLF緩沖器305且/或STLF檢驗器303。更具體而言,每一處理節(jié)點1012A至1012D可包括一份或更多份微處理器100的副本。外部接口單元1012D可包括節(jié)點內(nèi)的接口邏輯1018L以及內(nèi)存控制器1016D。
內(nèi)存200A至200D可包括任何適當?shù)膬?nèi)存組件。例如,內(nèi)存200A至200D可包括一個或更多個RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、靜態(tài)RAM等等內(nèi)存。在內(nèi)存200A至200D間分割計算器系統(tǒng)900的地址空間。每一處理節(jié)點1012A至1012D可包括內(nèi)存映射(memory map),該內(nèi)存映射用來判斷那些地址映射至那些內(nèi)存200A至200D,以及因而應將特定地址的內(nèi)存請求路由至那一個處理節(jié)點1012A至1012D。在一個具體實施例中,計算器系統(tǒng)900內(nèi)地址的連貫點(coherency point for an address)為內(nèi)存控制器1016A至1016D(其是連接至存儲對應至該地址的字節(jié)的內(nèi)存)。換言之,該內(nèi)存控制器1016A至1016D負責確保每次內(nèi)存訪問至對應的內(nèi)存200A至200D的方式都是高速緩沖存儲器連貫的。諸內(nèi)存控制器1016A至1016D可包括接口至內(nèi)存200A至200D的控制電路。此外,諸內(nèi)存控制器1016A至1016D可包括請求排隊內(nèi)存請求的請求排隊(request queue)。
接口邏輯1018A至1018L可包括各種由連結(jié)接收數(shù)據(jù)包的緩沖器以及用來緩沖要在連結(jié)上傳送的數(shù)據(jù)包的緩沖器。計算器系統(tǒng)900可利用任何適于傳送數(shù)據(jù)包的流程控制機制。例如,在一個具體實施例中,每一接口邏輯1018存儲接收器(在連接至接口邏輯的連結(jié)的另一端)內(nèi)的每一類型的緩沖器個數(shù)總計。該接口邏輯不傳送數(shù)據(jù)包,除非接收的接口邏輯有空閑的緩沖器可存儲數(shù)據(jù)包。當接收緩沖器將數(shù)據(jù)包向前路由而空閑時,該接收接口邏輯傳送訊息至發(fā)送接口邏輯表明緩沖器已閑置。此機制可稱作以“聯(lián)票為基礎(chǔ)”(coupon-based)的系統(tǒng)。
輸入/輸出器件1020A至1020B可為任何適當?shù)妮斎?輸出器件。例如,輸入/輸出器件1020A至1020B可包括用來與另一計算器系統(tǒng)通訊的器件,它可連接至諸器件(例如網(wǎng)絡接口卡或調(diào)制解調(diào)器)。此外,輸入/輸出器件1020A至1020B可包括視頻加速卡、聲卡、硬盤或軟盤驅(qū)動控制器、SCSI(小型計算器系統(tǒng)接口)適配器與電話卡、聲卡、以及各種數(shù)據(jù)擷取卡(例如GPIB或場總線接口卡)。應注意術(shù)語“輸入/輸出器件”與“周邊器件”在此意思是同義的。
在此所用的“時脈周期”是指指令處理管線的不同階段完成工作的一段時間。根據(jù)時脈周期所界定的時脈訊號,指令與計算值被內(nèi)存組件(例如寄存器或數(shù)組)所捕獲。例如,內(nèi)存組件可獲得時脈訊號的上升波緣或下降波緣的數(shù)值。
以上討論是描述“確認的(asserted)”訊號。當訊號傳送表明一段特定信息的數(shù)值時,界定它為確認的。當特定訊號傳送二進制的1值或者是傳送二進制的0值時,界定它為確認的。
當熟諳此技術(shù)者完全了解以上的公開內(nèi)容時,即可知道本發(fā)明有許多的變更與修正。權(quán)利要求書將涵蓋所有的變更與修正。
產(chǎn)業(yè)利用性本發(fā)明通常可用于微處理器領(lǐng)域。
權(quán)利要求
1.一種微處理器(100),包括分配單元(104)配置成分配加載及存儲操作;以及加載存儲單元(126)配置成存儲與該分配單元(104)所分配的加載及存儲操作有關(guān)的信息,其中該加載存儲單元(126)包括存儲至加載前傳STLF緩沖器(305),其中該STLF緩沖器(305)包括多個條目(320);其中該加載存儲單元(126)配置成產(chǎn)生索引,該索引是根據(jù)加載操作的地址的至少一部分,使用該索引選定多個條目(320)中的一個條目,以及前傳包含于多個條目(320)中的一個條目的數(shù)據(jù)以當成該加載操作的結(jié)果。
2.根據(jù)權(quán)利要求1所述的微處理器(100),其中該加載存儲單元(126)配置成如果包含于多個條目(320)中的一個條目的信息與和該加載操作有關(guān)的信息不匹配,則不將包含于多個條目(320)中的一個條目的數(shù)據(jù)當成加載操作的結(jié)果前傳。
3.根據(jù)權(quán)利要求1所述的微處理器(100),其中該加載存儲單元(126)配置成通過產(chǎn)生根據(jù)該存儲操作的地址的至少一部分的附加索引,選定多個條目(320)中的一個條目分配給存儲操作。
4.根據(jù)權(quán)利要求1所述的微處理器(100),其中該加載存儲單元(126)還包括配置成核對該STLF緩沖器(305)操作的STLF檢驗器(303)。
5.根據(jù)權(quán)利要求4所述的微處理器(100),其中該STLF檢驗器(303)配置成執(zhí)行關(guān)聯(lián)地址比較以確定所有已發(fā)出存儲操作標定于和該加載操作相同的地址,以及實行找出—第一算法以選定比該加載操作舊且最新的已發(fā)出存儲操作。
6.一種計算器系統(tǒng)(900),包括系統(tǒng)內(nèi)存(200);以及微處理器(100)連接至系統(tǒng)內(nèi)存(200),該微處理器包括分配單元(104)配置成分配加載及存儲操作;以及加載存儲單元(126)配置成存儲與由該分配單元(104)所分配的加載及存儲操作有關(guān)的信息,其中該加載存儲單元(126)包括存儲至加載前傳STLF緩沖器(305),其中該STLF緩沖器(305)包括多個條目(320);其中該加載存儲單元(126)配置成產(chǎn)生索引,該索引是根據(jù)加載操作的地址的至少一部分,使用該索引選定多個條目(320)中的一個條目,以及前傳包含于多個條目(320)中的一個條目的數(shù)據(jù)以當成該加載操作的結(jié)果。
7.一種方法,包括接收加載操作的地址;產(chǎn)生對應該地址的索引;使用該索引從包括在存儲至加載前傳STLF緩沖器(305)的多個條目(320)中選定條目;以及將包括在該條目的數(shù)據(jù)當成該加載操作的結(jié)果前傳。
8.根據(jù)權(quán)利要求7所述的方法,還包括該STLF緩沖器(305)的操作核對,通過執(zhí)行關(guān)聯(lián)地址比較以確定所有已發(fā)出存儲操作標定于與該加載操作相同的地址,以及實行找出—第一算法以選定比該加載操作舊且最新的已發(fā)出存儲操作。
9.根據(jù)權(quán)利要求8所述的方法,還包括如果該確定核對出該STLF緩沖器(305)操作不正確,則重新進行該加載操作。
10.根據(jù)權(quán)利要求8所述的方法,進一步包括確定該加載操作的結(jié)果為推測數(shù)值以響應前傳包括于該STLF緩沖器(305)條目中的該數(shù)據(jù)當成該加載操作結(jié)果;以及如果該確定核對出該STLF緩沖器(305)對該加載操作運作正確,則表示該加載操作的結(jié)果不是推測的。
全文摘要
一種微處理器(100)可包括配置成分配加載及存儲操作的分配單元(104),以及配置成存儲與由分配單元(104)所分配的加載及存儲操作有關(guān)的信息的加載存儲單元(126)。該加載存儲單元(126)包括STLF(存儲至加載前傳)緩沖器,其中該STLF緩沖器包括多個條目(320)。該加載存儲單元配置成產(chǎn)生根據(jù)加載操作的地址的至少一部分的索引,使用該索引選定多個條目(320)中的一個條目,并前傳包括在該多個條目的一個條目中的數(shù)據(jù)以作為該加載操作的結(jié)果。
文檔編號G06F9/38GK1836207SQ200480019687
公開日2006年9月20日 申請日期2004年6月2日 優(yōu)先權(quán)日2003年7月8日
發(fā)明者M·A·菲利波, J·K·皮克特 申請人:先進微裝置公司