專利名稱:使用存儲屬性的技術的制作方法
技術領域:
本發(fā)明的實施例涉及微處理器和微處理器系統(tǒng)。更具體地,本發(fā)明的實施例涉及 使用、校驗和設置存儲器狀態(tài)或與一個或多個存儲器位置相關聯(lián)的其它信息的技術,該技 術使用與所述一個或多個存儲器位置相對應的屬性位。
背景技術:
現(xiàn)代計算機系統(tǒng)中,微處理器或微處理器核可以訪問大量存儲器地址空間,其可 能包括很多種存儲器類型。例如,計算機系統(tǒng)中存儲器的一地址范圍可能存儲只能由特定 的處理器或處理器核訪問的信息,而其它地址范圍則可被多個處理器或處理器核訪問。存 儲器的排他性僅是一個可能與存儲器地址范圍相關聯(lián)的屬性。一些現(xiàn)有技術系統(tǒng)中,操作系統(tǒng)(OS)以虛擬存儲頁的相對粗糙的粒度,通過虛擬 存儲器管理來控制存儲器許可或訪問規(guī)則。在一些現(xiàn)有技術系統(tǒng)中,虛擬存儲頁的粒度大 小從約4千字節(jié)(KB)到很多兆字節(jié)(MB)不等??紤]到系統(tǒng)等待時間、芯片占地面積(die real estate)或系統(tǒng)成本,改變存儲器權限將是個開銷大的操作。在某些情況下,程序在訪問存儲器之前要先校驗存儲器地址。例如,當在各種計算 機編程語言(如Java)中調試程序、校驗邊界和類型安全性時,為了分析程序性能而剖析 (prof i 1 ing)程序時,或者由于其它原因,程序在訪問存儲器之前要先校驗地址。如果程序按照一組規(guī)則進行地址校驗,那么它至少可使用兩種現(xiàn)有方法一種方 法是使用OS來確保不滿足規(guī)則的地址將被虛擬存儲器管理檢測出。這種方法中,粒度可能 被限制成虛擬存儲器管理尋址模式的相對粗糙顆粒,且改變訪問規(guī)則代價很高;另一種方 法是在利用地址訪問存儲器之前,在程序本身內(nèi)對該地址進行一組校驗,這組校驗可以在 任何粒度下將該地址與任何一組規(guī)則進行比較。該方法的缺點是為了進行適當?shù)男r?,?每一次存儲器引用(memory reference)都要付出大量的運行開銷。
發(fā)明內(nèi)容
本發(fā)明的實施例涉及微處理器和微處理器系統(tǒng)。更具體地,本發(fā)明的實施例涉及 使用存儲屬性位以高效率的方式來校驗各種存儲性能。在本發(fā)明的一個實施例中,與存儲器的特定段或者“塊”相關聯(lián)的存儲屬性可以被 用來指示所述存儲器塊的各種特性。例如,在一個實施例中,用戶可以通過定義與每一個 存儲器塊相關聯(lián)的屬性位,來指示它們所關聯(lián)的存儲器塊的任何數(shù)量的特性,例如,訪問權 限。在一個實施例中,每一個存儲器塊可對應于高速緩沖存儲器的一特定行,例如一級(Li) 或二級(L2)高速緩沖存儲器內(nèi)的高速緩存行,且所述的屬性用定位于高速緩沖存儲器的 行或者以其他方式與高速緩沖存儲器的行相關聯(lián)的位存儲位置來表示。在其它的實施例中,屬性所關聯(lián)的存儲器塊可能包括不止一個高速緩沖存儲器行,或者與其它類型的存儲 器相關聯(lián),例如DRAM。
本發(fā)明的實施例通過舉例進行說明,而不局限于附圖中的實施例,其中相同的附 圖標記表示相似的部件,且其中圖1示出了根據(jù)本發(fā)明的一個實施例的高速緩沖存儲器,其中各種高速緩存行 (cache line)具有與其相關聯(lián)的一個或者多個屬性位。圖2示出了在其中使用了本發(fā)明的至少一個實施例的計算機系統(tǒng)存儲器分級體系。圖3示出了根據(jù)本發(fā)明的一個實施例,與校驗與一個或者多個高速緩存行相關聯(lián) 的屬性有關的操作的流程圖。圖4示出了在其中使用了本發(fā)明的至少一個實施例的共享總線計算機系統(tǒng)。圖5示出了在其中使用了本發(fā)明的至少一個實施例的點對點總線計算機系統(tǒng)。
具體實施例方式圖1示出了根據(jù)本發(fā)明的一個實施例的高速緩沖存儲器的一部分,它的每一行都 具有一組相關的屬性位存儲位置。具體地,圖1所示的高速緩沖存儲器100包括高速緩存 行105,其對應于一個特定的存儲器塊(未示出)。所述的高速緩存行105具有與其相關聯(lián) 的以位的形式存儲在存儲位置110內(nèi)的多個屬性。在一個實施例中,存儲位置是寄存器堆, 然而在其它實施例中,可以使用另一種類型的存儲區(qū)。在所述的存儲位置110內(nèi)是一組與 高速緩存行105相關聯(lián)的屬性位115,其可以存儲用來表示高速緩存行的各種屬性的位,其 可以由訪問高速緩存行105的軟件程序使用。在圖1中所示的實施例中,該組屬性位包含4位,其可以表示所述的高速緩存行的 一個或者多個屬性,這取決于如何分配所述屬性位。例如,在一個實施例中,這些屬性位指 示最近已經(jīng)校驗過程序,從而所述的存儲器塊適合被所述程序的當前部分訪問。在另外的 實施例中,所述的屬性位可以指示程序已經(jīng)記錄了對該存儲器塊的最近的訪問,以利用例 如性能監(jiān)控工具隨后進行分析。在另外的實施例中,屬性位可以指定其它許可、特性等。除了所述的屬性位之外,高速緩沖存儲器的每一行也可以具有與其相關聯(lián)的存儲 在狀態(tài)存儲位置120中的狀態(tài)值。例如,在一個實施例中,所述的狀態(tài)存儲位置120包括 與高速緩存行105相關聯(lián)的狀態(tài)位125,其指明所述的高速緩存行是修改狀態(tài)(M)、獨占狀 態(tài)(E)、共享狀態(tài)(S)還是無效狀態(tài)(I)。所述MESI狀態(tài)能夠控制各種軟件線程、核或者處 理器是否能夠使用和/或修改存儲在該特定高速緩存行中的信息。在一些實施例中,所述 MESI狀態(tài)屬性包含在高速緩存行105的屬性位115中。在一個實施例中,具有相關聯(lián)屬性位的、與圖1類似的一種高速緩沖存儲器,可以 由多核處理器中的多個核訪問,每一個處理器核能夠執(zhí)行從操作系統(tǒng)內(nèi)的序列發(fā)生器發(fā)出 的多個軟件線程。通過為每一個高速緩存行分配合適的屬性位,在計算機系統(tǒng)中每一個處 理器的每一個核內(nèi)的每一個線程都可以具有其可以訪問、控制和/或修改的一個或者多個 高速緩存行。
6
圖2是從計算機系統(tǒng)內(nèi)的處理器核上執(zhí)行的軟件線程的觀點出發(fā),本發(fā)明的實施 例如何簡化高速緩沖存儲器的體系結構的概念性說明。例如,在圖2中每個線程可以概 念化為具有相關高速緩沖存儲器205-20m的單線程核心201-20Π,所述高速緩沖存儲器由 被指定為只能由在所述概念化單線程核心上運行的該特定對應線程控制的高速緩存行構 成。例如,在一個實施例中,對于概念化高速緩沖存儲器205-20m,僅僅由表示為單線程核 心201-20Π的線程修改它們的MESI狀態(tài)。雖然實際上高速緩沖存儲器205_20m中每一個 都可以由遍及一個或多個高速緩沖存儲器分布的高速緩存行組成,但是以圖2中所示的方 式概念化所述布置將有助于理解本發(fā)明的某些實施例。在本發(fā)明的一個實施例中,可以利用特定操作,例如指令或者從指令中解碼的微 操作,來訪問、修改和以其他方式控制與存儲器塊相關聯(lián)的屬性。例如,在一個實施例中,可 以使用從高速緩存行中加載信息并設置相應的屬性位的指令(例如,“l(fā)oad_Set”指令)。 在另一個實施例中,除了 IoacLset指令之外,還可以使用從高速緩存行加載信息并校驗相 應屬性位的指令(例如,“ load_check"指令)。在其它的實施例中,可以使用其它指令來控制屬性位以及存取相應高速緩存數(shù) 據(jù)。例如,在一個實施例中,可以使用將信息存儲到高速緩存行同時校驗或者設置(校驗并 設置)相應屬性位的指令(例如,“store_set”和/或“st0re_check”指令)。在一些實 施例中,可以使用指令來控制或者存取沒有相關聯(lián)高速緩沖存儲器操作(例如加載或者存 儲)的屬性位。在指令校驗與高速緩存行相關聯(lián)的屬性的情況下,可以在一個或者多個處理核心 中定義一個或者多個結構化方案(architectural scenario),以便基于被校驗的屬性執(zhí)行 某些事件。可能存在響應于屬性校驗被執(zhí)行的其它類型的事件。例如,在一個實施例中,可 以定義一結構化方案,以將屬性位與一組具體數(shù)據(jù)進行比較,并且基于比較結果調用輕量 輸出(light weight yield)事件。所述輕量輸出事件尤其在將控制返回系統(tǒng)中運行的線 程或者其它進程之前,調用響應于所述方案結果執(zhí)行各種操作的服務程序。在另一個實施 例中,可以設置標記或者寄存器來指示該結果。在又一個實施例中,寄存器可以被寫入特定 值??梢园ㄆ渌录鳛楹线m的響應。例如,可定義的方案是這樣一個方案,其在檢測到意外存儲狀態(tài)時調用輕量輸出 和相應處理程序。如果線程或者其它進程試圖訪問希望其處于某種MESI狀態(tài)的高速緩存 行,而該高速緩存行處于另一種存儲狀態(tài)(表明該高速緩存行可能并不與該特定線程或進 程相關聯(lián)),這是有用的。這樣,只有由特定線程控制的高速緩存行才可以被成功地訪問、 修改或者校驗。在其它的實施例中,可以基于高速緩存行存儲屬性的校驗定義其它的方案。 在其它的實施例中,也可以校驗比高速緩存行粒度更精細的存儲位置的屬性。圖3是說明本發(fā)明的至少一個實施例的操作的流程圖,其中使用IoacLset和 load_check指令來設置或者校驗與特定高速緩存行或者高速緩存行內(nèi)的地址范圍相關的 屬性位。在其它實施例中,可以使用其他的指令或者微指令執(zhí)行如圖3所示的操作。在操 作301,確定是否執(zhí)行l(wèi)oacLset或loacLcheck指令。如果執(zhí)行了 load_Set指令,則在操 作305中修改與由該指令的加載部分尋址的高速緩存行相關的屬性位。在一個實施例中, load_set指令可以包含從IoacLset指令解碼的加載微指令和設置微指令。在其他的實施 例中,可以與加載和設置操作一起包含其它操作。
如果執(zhí)行的指令是loacLcheck指令,而后在操作310讀取與由loacLcheck指令 的加載部分指定的地址相關聯(lián)的屬性位。在一個實施例中,所述loacLcheck指令可以包括 從loacLcheck指令解碼的加載微指令和校驗微指令。在其他的實施例中,可以與加載和校 驗操作一起包含其他操作。在操作315,基于屬性位的狀態(tài)執(zhí)行一個方案。在一個實施例中, 所述方案通過校驗來查看在操作310讀取的屬性位是否指示所述高速緩存行的未知狀態(tài)。 如果是,而后在操作320,發(fā)生合適的事件。在一個實施例中,發(fā)生輕量輸出,并且執(zhí)行事件 處理程序以響應于其執(zhí)行操作。完成事件處理程序之后(或者在一些實施例中,在事件處 理程序完成之前),在由其發(fā)生輕量輸出的指令之后,控制以程序順序(program order)返 回到所述指令。一個備選實施例是代替校驗屬性位,簡單地將屬性位讀入到寄存器中。而后由程 序使用該值。一個例子是程序可以比較該值,并且根據(jù)該值有條件地轉移到不同的代碼路 徑分支。圖4說明了其中使用了本發(fā)明的一個實施例的前端總線(FSB)計算機系統(tǒng)。處理 器405從一級(Li)高速緩沖存儲器410和主存儲器415存取數(shù)據(jù)。在本發(fā)明的另一個實 施例中,高速緩沖存儲器可以是二級(L2)高速緩存或者計算機系統(tǒng)存儲器分級結構內(nèi)的 其它存儲器。此外,在一些實施例中,圖4的計算機系統(tǒng)可以既包含Ll高速緩存又包含L2 高速緩存。在圖4的處理器內(nèi)示出的是機器狀態(tài)的存儲區(qū)406。在一個實施例中,存儲區(qū)可以 是一組寄存器,而在其他的實施例中存儲區(qū)可以是其它存儲器結構。根據(jù)一個實施例,也在 圖4中示出的是用于保存區(qū)段的存儲區(qū)407。在另一個實施例中,保存區(qū)段可以在其他設備 或者存儲器結構中。所述處理器可以有任何數(shù)量的處理核心。但是,本發(fā)明的其它實施例, 可以在系統(tǒng)內(nèi)的其它設備(例如獨立總線代理)中實施,或者以硬件、軟件或其組合貫穿整 個系統(tǒng)分布。主存儲器可以以各種存儲器資源實施,例如動態(tài)隨機存取存儲器(DRAM)、硬盤驅 動器(HDD)420或者通過網(wǎng)絡接口 430從包含各種存儲設備和技術的計算機系統(tǒng)遠程定位 的存儲器源。高速緩沖存儲器可定位于處理器內(nèi)或者非常接近處理器,例如在處理器的本 地總線407上。此外,高速緩沖存儲器可包含相對快速的存儲單元,例如六晶體管(6T)單元,或 者其它具有近似相同或者更快存取速度的存儲單元。圖4的計算機系統(tǒng)可以是總線代理的 點對點(PtP)網(wǎng)絡,所述總線代理例如是微處理器,其經(jīng)由總線在PtP網(wǎng)絡上通信專用于每 個代理的信號。圖5示出以點對點(PtP)配置設置的計算機系統(tǒng)。具體地,圖5示出了通 過多個點對點接口將處理器、存儲器和輸入/輸出設備互連的系統(tǒng)。圖5的系統(tǒng)可以包含若干個處理器,為了清楚僅僅示出了 2個處理器,即處理 器570、580。處理器570、580可分別包括與存儲器22、24連接的本地存儲器控制集線器 (MCH) 572、582。處理器570、580可使用PtP接口電路578、588經(jīng)由點對點(PtP)接口 550 交換數(shù)據(jù)。處理器570、580可分別使用點對點接口電路576、594、586、598經(jīng)由獨立的PtP 接口 552、554與芯片組590交換數(shù)據(jù)。芯片組590也可以通過高性能圖形接口 539與高性 能圖形電路(graphics circuit) 538交換數(shù)據(jù)。本發(fā)明的實施例可以位于具有任何數(shù)量的 處理核心的任意處理器內(nèi),或者圖5中的每一個PtP總線代理內(nèi)。
但是,本發(fā)明的其它實施例,可以存在于圖5的系統(tǒng)內(nèi)的其他電路、邏輯單元或設 備中。此外,在本發(fā)明的其它實施例中,本發(fā)明的實施例可以遍布于圖5所示的若干電路、 邏輯單元或設備。在這里描述的本發(fā)明的實施例可以通過使用互補金屬氧化物半導體器件的電路, 或者“硬件”實現(xiàn),或者使用存儲在介質中的一組指令(當由例如處理器的機器執(zhí)行這組指 令時,這組指令執(zhí)行與本發(fā)明的實施例相關聯(lián)的操作),或者“軟件”來實現(xiàn)?;蛘?,本發(fā)明 的實施例可以使用硬件和軟件的結合來實現(xiàn)。雖然已經(jīng)根據(jù)說明性實施例描述了本發(fā)明,但不應當以限制性的意義理解該描 述。對于本領域技術人員來說顯而易見的、對所述說明性實施例的各種修改以及其他實施 例,都被認為包含在本發(fā)明的精神和范圍內(nèi)。
權利要求
一種使用存儲屬性的裝置,包括存儲塊,所述存儲塊具有與包含多個軟件線程的程序的僅一個軟件線程相對應的一組相關屬性,其中響應于load_set指令或load_check指令中的一個或多個來訪問所述存儲塊,其中所述load_set指令和load_check指令是用戶級指令。
2.根據(jù)權利要求1所述的裝置,其中所述存儲塊與高速緩沖存儲器中的高速緩存行相關聯(lián)。
3.根據(jù)權利要求2所述的裝置,其中所述高速緩沖存儲器包括用來存儲該組屬性的屬 性位存儲區(qū)的存儲區(qū)。
4.根據(jù)權利要求3所述的裝置,其中所述位存儲區(qū)具有至少一個與僅一個高速緩存行 相關聯(lián)的位存儲子區(qū)域。
5.根據(jù)權利要求4所述的裝置,其中該組屬性包括指示該僅一個高速緩存行對應于所 述多個軟件線程中的哪一個的信息。
6.根據(jù)權利要求5所述的裝置,其中所述高速緩沖存儲器的每一個高速緩存行都具有 與其相關聯(lián)的屬性位。
7.根據(jù)權利要求6所述的裝置,其中所述高速緩沖存儲器是數(shù)據(jù)高速緩沖存儲器。
8.根據(jù)權利要求6所述的裝置,其中所述高速緩沖存儲器是用來存儲數(shù)據(jù)和指令的統(tǒng) 一高速緩沖存儲器。
9.一種使用存儲屬性的方法,該方法包括下列步驟讀取與高速緩存行相關聯(lián)的屬性位,所述高速緩存行與多線程程序中的僅一個軟件線 程對應,其中響應于IoacLset指令或loacLcheck指令中的一個或多個來執(zhí)行讀取,其中所 述load_Set指令和loacLcheck指令是用戶級指令; 確定該屬性位的值;響應于確定所述屬性位的值來執(zhí)行輕量輸出事件。
10.根據(jù)權利要求9所述的方法,其中確定所述屬性位的值包括在處理器中執(zhí)行結構化方案。
11.根據(jù)權利要求9所述的方法,進一步包括設置屬性位。
12.根據(jù)權利要求9所述的方法,進一步包括校驗所述屬性位作為執(zhí)行一個指令的結^ ο
13.根據(jù)權利要求12所述的方法,進一步包括通過執(zhí)行l(wèi)oacLcheck指令讀取所述屬性。
14.根據(jù)權利要求12所述的方法,進一步包括通過執(zhí)行IoacLset指令設置所述屬性。
15.根據(jù)權利要求10所述的方法,進一步包括通過所述方案確定所述高速緩存行是否 處于意外狀態(tài)。
16.一種使用存儲屬性的系統(tǒng),包括存儲器,用于存儲load_set指令和load_check指令,其中所述load_set指令和load_ check指令是用戶級指令;至少一個處理器,其具有至少一個處理核心,用于提取IoacLset和loacLcheck指令中 的至少一個。
17.根據(jù)權利要求16所述的系統(tǒng),其中所述IoacLset指令用來從高速緩存行加載信息 并設置相關屬性位。
18.根據(jù)權利要求16所述的系統(tǒng),其中所述loacLcheck指令用來從高速緩存行加載信 息并校驗相關屬性位。
19.根據(jù)權利要求18所述的系統(tǒng),其中所述至少一個處理器包括響應于校驗所述屬性 位來執(zhí)行方案的邏輯電路。
20.根據(jù)權利要求19所述的系統(tǒng),其中如果所述屬性指示所述高速緩存行處于意外狀 態(tài),則所述方案導致輕量輸出事件。
21.根據(jù)權利要求20所述的系統(tǒng),其中如果導致了輕量輸出事件,則調用處理程序以 對檢測出的意外狀態(tài)作出響應。
22.根據(jù)權利要求16所述的系統(tǒng),其中所述load_Set指令和loacLcheck指令與包含 多個軟件線程的程序中的僅一個軟件線程相關聯(lián)。
23.根據(jù)權利要求17或18所述的系統(tǒng),其中所述屬性位是與所述高速緩存行相關聯(lián)的 多個屬性位中的一個。
24.根據(jù)權利要求23所述的系統(tǒng),其中所述多個屬性位是用戶定義的。
25.—種處理器,包括取指令單元,用于提取用來設置與高速緩存行相關聯(lián)的多個屬性位的第一指令以及用 來校驗所述多個位的第二指令,其中所述第一指令和第二指令是用戶級指令;邏輯電路,用于響應于對所述多個屬性位的校驗來執(zhí)行方案。
26.根據(jù)權利要求25所述的處理器,進一步包括多個處理核心,每一個處理核心能夠 執(zhí)行多個軟件線程。
27.根據(jù)權利要求26所述的處理器,其中如果所述多個屬性位指示相應的高速緩存行 處于意外狀態(tài),則用于執(zhí)行方案的邏輯電路引發(fā)處理程序的執(zhí)行。
28.根據(jù)權利要求27所述的處理器,其中所述高速緩存行能夠處于多種狀態(tài)中的一 種,所述多種狀態(tài)包括修改狀態(tài)、獨占狀態(tài)、共享狀態(tài)以及無效狀態(tài)。
29.根據(jù)權利要求28所述的處理器,進一步包括其中包含高速緩存行的高速緩沖存儲器。
30.根據(jù)權利要求25所述的處理器,其中所述第一指令和第二指令包括從所述高速緩 存行加載信息的操作。
31.一種使用存儲屬性的方法,包括將屬性位存儲在存儲位置;讀取與高速緩存行相關聯(lián)的屬性位,該屬性位指示程序是否已經(jīng)記錄了對該高速緩存 行的先前引用,來供工具分析,所述工具選自包括性能監(jiān)測工具和調試工具的組,其中響應 于IoacLset指令或loacLcheck指令中的一個或多個來執(zhí)行讀取,其中所述load_Set指令 和loacLcheck指令是用戶級指令;確定所述屬性位的值。
32.根據(jù)權利要求31所述的方法,其中所述高速緩存行與多線程程序中的軟件線程對應。
33.根據(jù)權利要求31所述的方法,進一步包括響應于確定所述屬性位的值來執(zhí)行輕量輸出事件。
34.根據(jù)權利要求31所述的方法,其中確定所述屬性位的值包括在處理器中執(zhí)行結構化方案。
35.根據(jù)權利要求31所述的方法,其中所述程序是測試設備程序。
全文摘要
本發(fā)明涉及使用存儲屬性的技術。本發(fā)明尤其涉及一種使用存儲屬性向程序或者其它代理傳遞信息的技術。更具體地,本發(fā)明的實施例涉及以高效率的方式使用存儲屬性來校驗各種存儲性能。
文檔編號G06F9/38GK101916231SQ201010275040
公開日2010年12月15日 申請日期2007年2月7日 優(yōu)先權日2006年2月7日
發(fā)明者A·-R·阿德爾-塔巴塔拜, A·布雷斯, B·薩哈, G·希菲爾, G·蔡亞, H·王, J·沈, K·多施, M·默滕, P·哈馬隆德, Q·雅各布森, S·斯里尼瓦斯 申請人:英特爾公司