TW201042451A - Microprocessor, method for accessing data cache in a microprocessor and computer program product - Google Patents
Microprocessor, method for accessing data cache in a microprocessor and computer program product Download PDFInfo
- Publication number
- TW201042451A TW201042451A TW099116092A TW99116092A TW201042451A TW 201042451 A TW201042451 A TW 201042451A TW 099116092 A TW099116092 A TW 099116092A TW 99116092 A TW99116092 A TW 99116092A TW 201042451 A TW201042451 A TW 201042451A
- Authority
- TW
- Taiwan
- Prior art keywords
- array
- cache
- data
- modified
- functional unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
201042451 六、發明說明: 【發明所屬之技術領域】 曰本lx明係有關於微處理器内之快取記憶體,特 別疋有關於其快取列之一致性狀態架構。 【先前技術】 現7的微處理器包含快取記憶體(cache memory),用來減少記憶體存取指令之延遲。快取記 憶體通常包括資料陣列以及標籤陣列;資料陣列用 以儲存資料的實際快取列(cache Hne),而標籤陣 2,用以儲存與資料陣列内之快取列相關之位址標 籤。私籤陣列所儲存的每一項目也一併記錄著快取 列之狀態。此外,快取列狀態用來指示資料陣列内 之對應快取列是否為有效的’以及該快取列自被分 配後是否已被修改過。 另外’現今的微處理器,特別是超純量 (SUperscaiar)處理器,包括許多個功能單元可對快 取5己體進行存取,例如不同的载入單元與儲存單 元。快取記憶體的資料陣列與標籤陣列通常具有多 重埠使仵母一功能皁元可以同時存取資料陣列與 標籤陣列’以將效能最佳化。然而,具多重蜂之陣 列將大幅地增加面積與功率消耗。再者,在從事微 處理器的平面規劃(fl〇or_planning )時,因為陣列 面積通常已相對較大,若更大時將會更難以將其納 CNTR2485I00-TW/ 0608-A42144-TW/fmal 4 201042451 入0 τ對此一問題之解 列,使得每—功能單_ 、方式,即是複製標籤陣 使得標籤陣列變成單1有自己的標籤陣列,進而 合微處理器上蜂:^然此解決方式需要集 小,便減輕平面規劃之負擔,且陣列面積較 可單獨電源管理的,額外地§ ; •一標籤陣列 Ο 〇 使用此—解決方式之有利⑤電源管理°然而, 或狀能需#f在於,當快取列之標籤及/ 而要更新時,必須存取所有標籤陣列,用以 =母:個標籤陣列所相應的快取列之標籤及/或 狀心、。廷將消耗許多標籍 次 更新時,所有標藏陣列m取頻寬,且進行 述的=:需要一種快取記憶想架構,用《解決上 【發明内容】 界勺拓t面’本發明提供一種微處理器。該微處理 =匕括第一與第二功能單元’每一功能單元於一資 料絲及被配置用以存取該資料快取。該資料快取包 括-貝料陣列’具有一既定架構。該資料陣列包括— 寫入埠該第-功能單元透過該寫入埠將資料寫入至該 貧料陣列之一快取列。該資料快取包括一修改位元陣 列’具有該資轉狀㈣應既定架構。該修改位 兀陣列包括-寫入埠,該第一功能單元透過該寫入蜂 CNTR2485I00-TW/ 〇608-A42144-TW/final 5 201042451 設定該修改位元陣列之一已修改位元,用以指示於該資 料陣列中,由4第—功能單元所寫人之該對應快取列已 被^改。玄修改位元陣列亦包括一讀取蜂,該第二功 能單元透過該讀取埠從該修改位元陣列讀取該已修改 位兀,用以判斷該快取列是否已被修改。該資料快取 亦包括一標籤陣歹|卜具有該資料陣列之該對應既定 架構。該標籤陣列包括一讀取埠,該第二功能單元透 過该讀取埠從該資料陣列中讀取該對應快取列之一部 分狀態。該部份狀態不指示該快取列是否已被修改。該 標籤陣列中不包含有提供該第一功能單元更新該快取 列之該部分狀態的一埠。 另一方面,本發明提供一種微處理器之資料快 取存取方法,用於第一與第二功能單元,其中,該 資料快取包括具有一既定架構之一資料陣列、與具 有该對應既定架構之一標籤陣列。該方法包括該第 一功能單元透過該資料陣列之一寫入埠,將資料寫 入至該資料陣列之一快取列。該方法亦包括設定該 資料快取之一修改位元陣列之一已修改位元,用以指示 於该資料陣列中,由該第一功能單元所寫入之該對應快 取列已被修改,其中,該修改位元陣列具有該資料陣列 之该對應既定架構。該第一功能單元透過該修改位元陣 列之一寫入埠設定該已修改位元。該方法亦包括該第 一功能方塊透過該修改位元陣列之一讀取埠,讀取 該修改位元陣列之該已修改位元,用以判斷該快取 CNTR2485I00-TW/ 0608-A42144-TW/fmal 6 201042451 列疋否已被修改。該方法亦包括該第二功能單元透 過該標籤陣列之一讀取埠,讀取該資料陣列之該對應 快取列之一部份狀態。該部份狀態不指示該快取列是 否已被修改。該標籤陣列中不包含有提供該第一功能單 元更新該快取列之該部分狀態的一埠。 另一方面’本發明提供一電腦程式產品’用於 電腦λ置’該電腦程式產品包括一電腦可使用之 ❹儲存媒體,包括該儲存媒體内建之電腦可讀取程式 碼,用以指定微處理器。該電腦可讀取程式碼包括第 一転式碼,用以指定第一與第二功能單元,各自耦 接於一貧料快取及被配置用以存取該資料快取。該電 腦可讀取程式碼亦包括第二程式碼,用以指定該資 料快取。該資料快取包括一資料陣列,具有一既定 架構。該資料陣列包括—寫人埠,該第—功能單元透 過該寫入埠將資料寫入該資料陣列之一快取列。該資 ° 料快取包括一修改位元陣列,具有該資料陣列之該 對應既定架構。該修改位元陣列包括一寫入埠,該 第一功能單元透過該寫入埠設定該修改位元陣列之一 已修改位兀,用以指示於該資料陣列中,由該第一功能 單兀所寫入之該對應快取列已被修改。該修改位元陣 列亦包括一讀取埠,該第二功能單元透過該讀取埠 讀取該修改位元陣列之該已修改位元,用以判斷該 快取列是否已被修改。該資料快取亦包括一標籤陣 列,具有該資料陣列之該對應既定架構。該標陣 CNTR2485I00-TW/ 0608-A42144-TW/fmal 1 201042451 —讀取埠’該第:功能單元透過該讀取埠從該 2 ^餘該對應絲狀—部分㈣。該部份狀 '曰不該快取列是否已被修改。該標籤陣列中不包含 有提供該第一功能單元更新該快取列之該部分狀態的 一蜂。 ^ 本2明之優點在於快取列之修改需要對應地更 斤二狀恶,修改位元陣列之存在減輕了存取標籤陣 列來^新快取列狀態之需求,從而減少標籤陣列之 存取里。除此之外,於其他具有多重標籤陣列之實 # Η中修改位元陣列之存在簡化了微處理器内標 鐵陣列之平面規劃,使其具有較佳電源管理,且沒 有上述額外頻寬消耗之問題。 一為使本發明之上述目的、特徵和優點能更明顯 易丨重,下文特舉實施例,並配合所附圖式,詳細說 明如下。 【實施方式】 多考第1圖’係顯示依據本發明之微處理器1 〇 〇 方塊圖。微處理器100包括指令快取(instructi〇n cache) 102 ’用以儲存程式指令。這些程式指令是微 處理裔100自系統記憶體(未圖示)所取得且由微 處理器100執行。舉例而言,程式指令包括用以存 取记憶體之指令,像是x86 MOV、PUSH或POP指 •7,或者將導致微處理器1〇〇存取記憶體的指令, CNTR2485IOO-TW/ 0608-A42144-TW/fma] 〇 201042451 像是若收到轉譯查詢緩衝器不命中(translation lookaside buffer,TLB, missing)訊號時執行頁面表 格查找(page table walk)。 如支處理器100亦包括指令轉譯器(instruction translator) 104,用以由指令快取ι〇2接收指令,且 將指令(亦被稱為巨集指令)轉譯為一或多個微指 令或為微操作(micro_operati〇ns)。微操作係指微處
理器110之執行單元與記憶體子系統112實際執行 之簡化指令。特別地,微指令可包括载入微指令與 儲存微指令,或者包括載入指令與儲存指令。載入 指令,係用以將記憶體某位置之内容載入至微處理 器 100 之結構化暫存器(architecturairegister) 116 中:儲存指令’係用以將微處理1 1GG之結構化暫 存器Π6之内容儲存至記憶體某位置。於其他之實 施例中’载人與儲存指令,係為微處理器⑽之原 生指令集之一部分。 微處理器⑽_包括暫存器別名表(register aH=Me,RAT)康,用以接收來自指令轉譯器ι〇4 暫存器別名表1〇6依照程式順序接收來自 1 曰:::!Γ04之轉譯指令,以及決定微處理器1〇〇 未退出指令之每一指令之相依性。暫存器 :名表106儲存與微處理器100内之每一未退奸 “目關之暫存器重命名資訊。暫存器重命名資心 CNTR2485I00-TW/ 0608-Α42144-TW/fmal 9 201042451 括程f順序,則重排序緩衝器(reorder buffer, ROB ) 116錯此依照程式順序退出指令。在指令分配至指 令排序器108之前’暫存器別名S 106為每-指令 在重排序緩衝器U6配置—筆項目。當指令來源運 算子根據暫存器別名表1〇6所產生之相依性資訊判 斷為可使用時且當執行單元與記憶體子系統ιΐ2為 可使用$才曰7排序器108由暫存器別名表106接 收“ 7 ϋ將^令發送至執行單元與記憶體子系統 112°。於一實施例中’微處理器議為一亂序執行微 處理器(out-0f-order executi〇n如⑽㈣⑽⑽小重排 序緩衝器116輕接於暫存器別名表1()6、指令排序 器1〇δ、以及執行單元與記憶體子系統112。 、行單元與a己憶體子系統丨丨2包括·資料快取 ⑶、載入單幻22、儲存單元124、儲存㈣^職^ =6、二階(level_2,⑷快取132、與匯流排介面 早凡(bUSlnterfaceunit,BIU) 134,均麵接於資料 快取128。於此,載入單元122、儲存單元a*與儲 存仔列126,可被稱為功能單元。載入單元122執 行載入指令,以由資料快取128載人f料至結構化 暫存器116。儲存單元124與儲存件列126執行儲 存指令’ _將結構化暫存器116之轉儲存於資 料快取128。匯流排介面單^ 134,作為微處理器 1〇〇與微處理器刚匯流排之介面,使得微處理器 00傳輸貢料至記憶體與週邊裝置。— CNTR2485I00-TW/ 0608-Λ42144-TW/fmal ·Λ ’ 匯 10 201042451 Ο 〇 排介面單元134窺探(snoop)微處理器100匯流排, 並且對應地執行針對資料快取128之窺探操作。除 此之外,快取列將由資料快取128收回至二階快 取。於一實施例中’由於資料快取128之各種陣列 (第2圖之m/歷議8) _個時脈週期來 進行存取,因此,載入單元122、儲存單元124及 儲存佇列126均為多重階層之管線架構。下文將詳 細說明資料快取128之架構,以及與載入單元122、 儲存單元124、儲存佇列126、二階快取132及匯流 排介面單元134間之互動。 於一實施例中,微處理器、100之巨集架構為 1^:32巨集架構(亦稱為χ86架構)。如果一個處理 器,夠正確地執行大多數被設計用來於ΙΑ-32微處 理器上執行之制程式,㈣微處理器被視為具有 ΙΑ-32巨集架構。而一個應用程式正確地被執行是指 能得到該應用程式所·的結果。然而,其他實施 例中,微處理器之巨集架構可有別於Χ86巨集架 構,不過仍包括資料快取128及修改位元陣列216 (於第2圖中),用以實現其優點。 參考第2圖,係顯示依據本發明第1圖微處理 态1〇〇 +之執行單元與記憶體子系統112部份方塊 圖如第2圖所不,係顯示第〗圖之執行單元與記 匕版子系、统112之载入單元122、儲存單元】μ與 CNTR2485I〇〇.TW/0608-A42144-TW/fi 11 201042451 列二第二圖所示的資料快取128包含第2 改衍一 ώ 軚紙陣列212、儲存標籤陣列214、修 例令列二6與資料陣列218。於第2圖之實施 之單—人彳錢陣列212包括純於载人單元122 另-讀it寫入埠,而載入標籤陣列212不包含有 124更^^人埠連接至儲存單& 124,供儲存單元 更新載入標籤陣列212中 包括耦接㈣入置”項資料陣列218 伊籤陳= 單一讀取/寫入埠;儲存 :入追4包括耦接於儲存單幻24之單-讀取/ ,’'阜’而錯存標籤陣列214不包含有另一讀取/寫 至載入單元122’供載入單元122更新儲 包:Γ:列214中的項目;以及修改位元陣列216 t 載入單元122之寫入埠及輕接於儲存單 讀取埠。於一實施例中,修改位元陣列216 既=寫入(write_through)陣列’也就是說,於一 ==脈週期中,當儲存單元124讀取修改位元陣 之位置與載入單元122寫入修改位元陣列216 之^相同時’則修改位元陣列216將該位置新寫 :::提供至儲存單元124。於其他實施例中,資 二、128包括衝突檢測與回復邏輯,用以檢測上 :的衝,’並ί於下一時脈週期中’提供新寫入數 >。由於儲存單元122與資料陣列218間具有單一 =/寫人埠’儲存㈣126將執行—快取寫入請求 並提供至第2圖實施例之載入單元122。 CNTR2485I00-TW/ 〇608-A42l44-TW/finaI \2 201042451 載入標籤陣列212、儲存標籤陣列214及修改位 兀陣列216之架構方式與資料陣列2〗8相同,且載 入I籤陣列212、儲存標籤陣列2丨4、及資料陣列 218係由許多個儲存元件所組成。舉例來講,於一 實,例中,資料陣列218、载入標籤陣列212、儲存 標籤陣列214與修改位元陣列216,各自為四集合 關聯記憶體陣列(4_way set ass〇ciative咖二 〇 memory array)’ 藉由載入(1 ⑽0、儲存(store)、 窺探(Sn〇〇P)與收回(eviction)位址之索引部份 (較低位址位元),用以編成索引,其中,該位址用 以選擇資料陣列218之一集合或一列,且每一集合 具有四項目。於資料陣列218之某一被選中的集: 之每一項目將儲存一快取列。於載入標籤陣列212 與儲存標籤陣列214之該被選中的集合之每一項目 ,儲存對應至資料陣列218之該快取列的一位址標 〇 籤與快取列狀態。於該位元陣列216之該被選中的 二口之每一項目將儲存一已修改位元,用以指示資 料p車列218之對應快取列是否被已修改。在另一實 ,例中,資料陣列218、載入標籤陣列212、儲存標 籤陣列214與修改位元陣列216,各自為M集合關 聯記憶體陣列(M-Way set ass〇ciative以㈤咖腑乂 array ) ’ M是自然數,例如M=2,即資料陣列、 载入標籤陣列212、儲存標籤陣列214與修改位元 陣列216,各自為二集合關聯記憶體陣列,而每個 CNTR2485I00-TW/ 0608-A42144-TW/final n 201042451 陣列可包含有N個集合。於一實施例中,根據習知 之MESI快取一致性協定,快取狀態為四種可能狀 態其中之一,該四種可能狀態為:已修改(M〇dified ) 狀態、獨佔(Exclusive)狀態、共用(Shared)狀 態或無效(Invalid)狀態。然而,其他實施例中’ 修改位元陣列216用以儲存已修改位元,表示對應 之快取列已修改,而且已修改位元可用以計算其他 快取一致性協定架構中之快取列完整狀態。於一實 把例中,g資料快取12 8分配一快取列至資料陣列 218時,也同時將該快取列之完整MESI狀態寫入至 載入標籤陣列212以及儲存標籤陣列214,並清除 修改位元陣列216之對應已修改位元。於另一實施 例中,當資料快取128使快取列無效時,清除修改 位元陣列216之對應已修改位元。 於第2圖之實施例中,除了快取寫入請求226 外,載入單元122亦處理載入請求222與收回請求 因為這些操作必須存取資料陣列218,而且載 入單元122為耦接至資料陣列21 8之單一讀取/寫入 阜之唯單元。於第2圖之實施例申,儲存單元124 处里儲存4求228與窺探請求224,係各自配合第4 圖與第5圖詳細說明如下。 於第2圖之貫施例中,資料快取j 28持續更新 载入標籤陣列212,用以反映資料陣列218之對應 CNTR2485I〇〇.TW/〇6〇8a42i44 -TW/fmal μ 201042451 快取列之完整狀態。然而,資料快取128並不會為 了反映資料陣列218之對應快取列之完整狀態而持 續更新儲存標籤陣列214。具體地,當儲存佇列126 執行一快取寫入請求226來更新一快取列時,儲存 標籤陣列214並未被更新為快取列之新MESi狀 態。相反地,載入單元122設定修改位元陣列216 之對應已修改位元。因此,儲存標籤陣列214僅儲 存快取列之部份MESI狀態,而修改位元陣列216 儲存之已修改位元,用來表示快取列已被修改。接 著,當儲存單元124需要知道快取列之完整的mesi 狀心日守儲存單元124 —起讀取修改位元陣列216 之快取列之已修改位元234與儲存標籤陣列214之 快取列之部份MESI狀態232,且儲存單元124之組 合邏輯208將使用第3a圖之表i或第3b圖之表2 之任一不意圖來計算快取列之完整MESI狀態236 〇 (亦提供給儲存佇列126),其中,第3a圖與第3b 圖將詳細說明如下。 參考第3a圖,係顯示依據本發明第丨圖之資料 陕取128所使用之表1示意圖,透過部分快
取列狀態與一已修改位元,用以計算出完整MESI 快取列狀態。 表1包括二個攔位。第一欄位指定資料陣列218 之對應快取列之部份MESI快取列狀態,例如自第2 CNTR2485I00-TW/ 〇608-A42l44-TW/fmal 15 201042451 f之儲存標籤陣列214所讀取之部份MESI狀態 2。t攔位指糊陣列218之制快取列之已 >改位兀’例如自修改位元陣列216所讀取之已修 改位7L 234。第三攔位指定資料陣列之對應快 取列之凡王MESI狀態,例如第2圖之組合邏輯2〇8 所產生之完整MESI狀態236。 於第一列中,表1係顯示若部份MESI狀態為 =改狀態時’則不管已修改位元之數值為何,所 計算之完整MESI狀態亦為已修改狀態。於第二列 中,表1係顯示若部份MESI狀態為獨佔狀態且已 修改位元被設定時,所計算之完整MESI狀態為已 修改狀態。於第三列中,表】係顯示若部份mesi 狀態為獨佔狀態且已修改位元被重置(聰。時, 所計算之完整MESI狀態為獨佔狀態。於第四列中, 表1係顯示若部份MESI狀態為共用狀態且已修改 位7L被設定時,計算之完整MESI狀態為已修改狀 恝。此狀況指示快取列正處於被升級至獨佔狀態之 過耘中,且會發生早期儲存合併。第3a圖之實施例 具有此狀況之優勢,且將快取列升級至已修改狀 態。於第五列中,表1係顯示若部份MESI狀態為 共用狀態且已修改位元被重置時,所計算之完整 MESI狀恶為共用狀態。於第六列中,表1係顯示若 部份MESI狀態為無效狀態,則不管已修改位元之 數值為何,所計算之完整MESI狀態為無效狀態。 CNTR2485I00-TW/ 0608-A42144-TW/final 201042451 從以上的實施例中,可以理解部份MESI狀態無法 正確指出所對應的快取列是否已被修改,必須加上該 快取列所對應的已修改位元,計算得到完整MESI狀 態才能正確判斷該快取列的狀態是否為已修改狀 態。換句話說,該快取列所對應的已修改位元可以 被視為另一個部分MESI狀態,而該快取列之完整 MESI狀態可經由兩個部分MESI狀態加以計算得 到。 〇 參考第3b圖係顯示依據本發明另一實施例,說 明第1圖之資料快取128所使用之表2示意圖,透 過部分MESI快取列狀態與一已修改位元,用以計 算出完整MESI快取列狀態。表2類似於第3a圖之 表1。然而,於表2中,若部份MESI狀態為共用狀 態,則不管已修改位元之數值為何,所計算之完整 MESI狀態為共用狀態。 〇 參考第4圖,係顯示依據本發明第1圖之微處 理器100之操作流程圖,其中,微處理器100具有 第2圖實施例之執行單元與記憶體子系統112,用 以執行一儲存指令。流程始於步驟模塊402。 於步驟模塊402中,儲存單元124接收儲存請 求228。接收儲存請求228後,儲存單元124針對 與儲存位址相關之快取列,執行儲存詢問操作。流 程前進至步驟模塊404。 CNTR2485I00-TW/ 0608-A42144-TW/fmal 17 201042451 於步驟模塊404中,針對與儲存指令之儲存位 址相關之快取列,儲存詢問操作從儲存標籤陣列2 j 4 讀取部份MESI狀態232,並從第2圖之修改位元陣 列2!6讀取已修改位元234。流程前進至步騾模塊 406 ° 於步驟模塊406中,根據第3a圖之表丨或第讣 圖之表2,儲存單元124之組合邏輯208計算快取 列之π整MESI狀態236。流程前進至步驟模塊4〇8。 於步驟模塊408中,儲存單元124於儲存佇列 126 t分配-項目’並將由儲存請求228所指定之 儲存資料及儲存位址寫人至分配項目。流 步驟模塊412。 於決定步驟模塊412中,儲存佇列126判斷 驟模塊406所計算之完整MESI狀態236是否 =狀態或獨佔狀態其中之一。若步驟模塊修所 整MESI狀態236為已修改狀態或獨佔狀 :/、中之一,則流程前進至步驟模塊416,否則, 流程前進至步驟模塊414。 、 於步驟模塊414中,儲左於s, m ^入 介而里-” _甲储存心列126命令匯流排 π 4執行一匯流排寫入無效操作,使得且 ===其他快取之快取列無效,並取得快 獨佔所有權。資料快取128回應地將 戴陣列幻2與儲存標籤陣列21 :、 CNTR24_隱A42i44 Tw/fmai 18 1 狀態升級
20104245J 至獨佔狀態。流程前進至步驟模塊416。 於步驟模塊416中,儲存佇列126執行一快取 f入請求226,用以指定新MESI狀態為已修改狀 態,並將該快取寫入請求226提供至載入單元122。 流程同時前進至步驟模塊426與決定步驟模塊418。 八於步驟模塊426中,載入單元122將與儲存指 令之儲存位址相關之快取列的資料寫入資料陣列 〇 128對應之項目。 另一方面,於決定步驟模塊418中,載入單元 122判斷步驟模塊4〇6所計算之完整狀態 疋否為已修改狀態。若步驟模塊406所計算之完整 MESI狀態236為已修改狀態,則流程結束,否則, 流程同時前進至步驟模塊422與決定步驟模塊424。 於步驟模塊422中’針對與儲存指令之儲存位 〇 址相關之快取列,載入單元122將已修改狀態寫入 至載入標籤陣列212對應於該快取列之項目。流程 結束於步驟模塊422。 於步驟模塊424中’針對與儲存指令之儲存位 址相關之快取列,载入單元122設定修改位元陣列 216對應於該快取列之項目中之已修改位元。儘管 這時儲存標籤陣列214並未同時記錄快取列之完整 MESI狀態(也就是說部份MESi狀態232不是已修 CNTR2485I00-TW/ 〇6〇8-A42144-TW/final 19 201042451 改狀您),這樣的設計有助於之後儲存單元丨24得 =計算資料陣列218之對應快取列之完整MESI狀 態236。流程結束於步驟模塊424。 由第4圖之流程圖中可發現,當資料快取128 執仃快取寫入請求226,用以修改資料陣列218之 快取列時,資料快取128對具有已修改新狀態之載 入標籤陣列212進行更新至最新的已修改狀態(除 非狀態已經為已修改狀態,如第4圖所示之相關步 驟模塊418、422與424),並設定修改位元陣列216 之對應已修改位元。然而,這樣設計之優點在於, 貝料快取128並沒有對儲存標籤陣列214更新為已 修改狀態。不過,儲存單元124可透過同時存取儲 存標籤陣列214與修改位元陣列216,如第4圖之 相關步驟模塊404 (或者第5圖之步驟模塊5〇4 )所 示,用以计异快取列之完整MESI狀態236,如第4 圖之相關步驟模塊406(或者第5圖之步驟模塊5〇6) 所示。 參考第5圖,係顯示依據本發明第丨圖之微處 理為100之操作流程圖,其中,微處理器i 〇〇具有 第2圖實施例之執行單元與記憶體子系統112,用 以執行一無效窺探請求。流程始於步驟模塊5〇2。 於步驟模塊502中,儲存單元124接收一無效 窺探請求(invalidating snoop request) 224,儲存單 CNTR2485I00-TW/ 0608-A42144-TW/final 20 201042451 元124針對與窺探位址相關之快取列,對自己執行 一窺探詢問操作。流程前進至步驟模塊504。 於步驟模塊504中’針對與窺探位址相關之快 取列’窺探詢問操作從儲存標籤陣列214讀取部份 MESI狀態232 ’並從第2圖之修改位元陣列216讀 取已修改位元234。流程前進至步驟模塊506。 於步驟模塊506中,儲存單元124之組合邏輯 〇 208根據第3a圖之表1或第3b圖之表2其中之—, 用以計算快取列之完整MESI狀態236。流程前進至 決定步驟模塊508。 於決定步驟模塊508中,儲存單元124判斷步 驟模塊506所計算之完整MESI狀態236是否為已 Ο改狀,¾。若疋’流程前進至步驟模塊5丨2 ’否則, 流程前進至步驟模塊514。 〇 八於步驟模塊512中,儲存單元124命令匯流排 介面單元134執行匯流排操作,用以將修改快取列 寫回至系統記憶體。流程前進至步驟模塊514。 於步驟模塊5M中,儲存單元124對自己執行 一狀態更新操作,並對載入單元122執行一狀態更 ,作,每一更新係指定新卿狀態為無效狀態。 〜程同時前進至步驟模塊516、518與522。 於步驟模塊516中,斜斟&盘柯& , τ 矸對與窺採位址相關之快 CNTR2485I00-TW/ 〇6〇8-Α42144^/&1η1 21 201042451 取列,载入單元122將無效狀態寫入至載入標鐵陣 列212對應該快取列之項目。流程結束於步驟模塊 516 ° 於步驟模塊518中,針對與窥探位址相關之快 取列,載入單元122清除修改位元陣列216項目對 應《亥决取列之已修改位元。於—實施例令,當資料 陣列218項目為無效時,資料快取12 8並不重置修 改位元陣列216之已修改位元,而是等到對應快取 列被分配至資料陣列218時重置該已修改位元。流 程結束於步驟模塊518。 於步驟模塊522令,針對與窺探位址相關之快 取列,儲存單元124將無效狀態寫入至儲存標籤陣 列214對應該快取列之項目。流程結束於步驟模 522 〇 ' 於第2圖之實施例中,由於儲存單元丨24管線 不像載入單元122管線繁忙,因此窺探詢問操作由 儲存單元124管線來處理。然而,於另一實施例中, 窺探詢問操作由載入單元122處理,而非儲存單元 U4,係因載入標籤陣列212亦提供快取列之完整 MESI 狀態。 70 於第2圖之實施例(以及第6、9與12圖之與 施例)中,載入請求222與收回請求242由載入^ 元122處理,係因載入單元122可存取資料陣列2 = CNTR2485I00-TW/ 0608-A42144-TW/fmal 22 201042451 ,一§胃料。處理載人請求222僅需知道載入位 疋否命中資料快取128,也就是說,處理載入請 =222僅需知道是否有—快取線可表示著戴入地址 ::於資料快取128中。(若載入位址之索弓丨部份編 成索引可指引至載入標籤陣列212之一集合且載入 :址之標籤部份可與該集合中的其中一有效標籤配 對,則表示载入位址命中資料快取128。.)麸而, 收回操作242 (與窺探詢問)需要知道快取列之完 整MESI狀態。收回操作242自第2圖實施例之載 入標籤陣列212中接收完整MESI狀態。 —進步,最低限度上,儲存操作僅需知道所指 疋,取列之狀態是否至少為獨佔狀態(亦即,順工 狀態為獨佔狀態或已修改狀態),以便知道是否可立 即寫入快取列,或者,儲存操作在進行步驟模塊々Μ 時是否需要先取得快取列之獨佔所有權。然而,第 4圖實施例包括對決定步驟模塊418之進行最佳化 設計’也就是當執行步驟模塊418時,若所指定快 取列之狀態已經為已修改狀態,且修改位元陣列 之已修改位兀被設定時,則儲存單元124放棄更新 載入標籤陣列212與修改位元陣列216,進=達到 消耗較少功率之優點。 一般而言,當需要知道快取列之完整Mesi狀 態時’才需要對修改位元陣歹,j 216進行讀取操作。 CNTR2485I00-TW/ 0608-A42144-TW/final 201042451 122或者儲存單元 需對修改位元陣列 任一功能單元進行 212/214 ’ 以及(2) 問操作時(或者儲 7圖實施例所包含 因此,任一功能單元(載入單元 I24)滿足下列條件時,功能單元 216進行讀取,其條件是:” 快取寫人時並未更新其標籤陣列 任功能單元進行收回或窺探詢 存洶問刼作,具有在第4圖及第 之最佳化)。 戈明6圖’係、顯示依據本發明另—實施例, 體微處理器100中,執行單元與記憶 多方=部份方塊圖。第6圖之實施例在許 ^圖之貝施例,且相同編號之元件 為相似的。茲就不同處加以說明。 ^第6圖之實施例t ’修改位元陣列216具有 兩個言買取埠,苴令一瑝田 _ 、f I用以將已修改位元234提供 ^存早=124,而另一埠則將已修改位元634提 载:早元122。除此之外,修改位元陣列216 寫入蟑純於儲存“ 126,於執行快取寫入請 求226時,儲存仔列126藉以更新修改位元陣列216。 ^ 6圖之#_中’載人單元122亦包括組 口璉專608,用以從載入標籤陣列212接收部份 MESI狀悲632,並從修改位元陣列216之第二讀取 埠接,修該已修改位元634,並使用如第3a圖之表
1或第%圖之表2其中之一,用以計算完整MESI CNTR2485I00-TW/0608-A42l44-TW/fmal 24 201042451 狀態63 6
於载入Μ -貫施例中,資料陣列218包括耦接 之寫入:=22之讀取蜂,以及轉接於館存仵歹"26 勃:: 以致能儲存佇列對資料陣列21S 仃、寫入請求226。也就是說,儲存 直接對資料陣列s 文% , ^ 126 寫入(! ^ 位元陣列216執行快取 寫入切求226’而非將其傳送至第2圖之载 Ο 〇 二。因此,載入標蕺陣列212與儲存標鐵陣列叫 Ρ不會因為處理快取寫人請求咖而被更新 ^改新狀態°更確切'地說’處理快取寫入請求226 叹疋修改位元陣歹,J 216之對應已修改位元。 參考第7圖,係顯示依據本發明第1圖之微声 :里器⑽之操作流程圖,其中,微處理器100具; 弟6圖貫施例之執行單元與記憶體子系統112,用 以執行一儲存指令。第7圖之流程圖與第4圖之流 程圖相似。然而’帛7圖之步驟模塊716取代第^ 圖之步驟模塊416,其中’儲存佇列126執行直接 針對資料陣列218之快取寫入請求226,進而寫入 儲存資料。除此之外’因為資料陣列218於步驟模 塊716中直接被寫人,第7圖之流程圖並無包括第 1圖之步驟模塊426。進一步,因為儲存仔们26並 ’又有將新的修改快取列狀態更新至儲存標藏陣列 2!2(亦沒有更新至儲存標籤陣列214),則於第7 0608-Α42144-TW/fmal 25 201042451 圖之流程圖中,並益舍括笛/ S3 M h 广 圖之步驟模塊心2。 取後,饭如於決定步驟模塊4
灿能*此* a 所判斷完整MESI 狀悲亚非為已修改狀態,則笫 5, ,, ^ , ⑴弟7圖之步驟模塊724 取代弟4圖之步驟模塊似,使得 行直接針對修改位元陣列216 126執 996,田、^ 之决取寫入請求 6 ’用以設定對應已修改位元。 依據本發明第1圖實施丫 W只她例之倣處理器100之操 作,,、第5圖所示之操作相似发 目七墙 俏似具中,微處理器100 具有第6圖實施例之勃并苗_ 11〇 執订早凡與記憶體子系統 ’用以執行一無效窺探請求。 。。參考第8圖,係顯示依據本發明第丨圖之微處 理為100—之操作流程圖’其中,微處理器_具有 第圖m知例之執行單元與記憶體子系統工12,用 以執行一收回請求242。流程開始於步驟模塊8〇2。 咕於步驟模塊802中,載入單元122接收一收回 月求242後,载入單元122針對與收回位址相關之 决取列,執行一收回操作。流程前進至步驟模塊8〇4。 於步驟模塊804中,針對與收回位址相關之快 取列,收回操作從载入標籤陣列212讀取部份MESI 狀心632,並從第6圖之修改位元陣列us讀取已 I改位元634。流程前進至步驟模塊806。 方、v ‘1^模塊806中’載入單元^ 22之組合邏輯 CNTR2485I00-TW/ 0608.A42l44.TW/fina! 201042451 208根據第3a圖之表1或第3b之表2,用以計算快 取列之完整MESI狀態636。流程前進至步驟模换 808。 於步驟模塊808中,載入單元122從資料陣列 讀取收回位址所指定之快取列。流程前進至步 驟模塊812。 於步驟模塊812中,載入單元122將步驟模塊 ❹ 806所計算之完整MESI狀態與步驟模塊808所讀取 之快取列提供至第1圖之二階快取132,用以執行 收回操作。流程結束於步驟模塊812。 參考第9圖,係顯示依據本發明另一實施例, 說明於第1圖之微處理器1〇〇中,執行單元與記憶 ,子系統112之部份方塊圖。第9圖之實施例在許 多方面類似於第6圖之實施例,且相同編號之元件 Q 為相似的。茲就不同處加以說明。 於第9圖之貫施例中,修改位元陣列216包括 單一碩取埠,而非如第6圖之兩個讀取埠。因此, 儲存單元124並不包括組合邏輯2〇8,而且不會產 生π整MESI狀態236。相反地,儲存標籤陣列214 將邛伤MESI狀態232直接提供至儲存佇列126。所 以第9圖之資料快取128所執行之儲存請求228 與^前實施例不同,其内容詳述於下文第1〇圖相關 之說明。最後,載入單元122接收窺探請求224, CNTR2485I00-TW/ 0608-A42144-TW/fmal ?7 201042451 而非儲存單元124。 128 ,、'·α果疋,第9圖之資料快取 所執仃之窺探請求224亦右ζ门 11 „ 么“4亦有不同,將於下文第 陣列216 °於第9圖之實施例中,修改位元 124之第包括將已修改位元提供至儲存單元 元mlT取璋,這是因為窺探詢問係由載入單 行如i於第1G圖中儲存單元124並沒有執 圖與第7圖中決定步驟模塊々a所進行的 狀離,禮^i因此並不需要知道快取列之完整MESi 1 〇心圖之=道M E S1狀態是否至少為獨佔狀態(第 之二、1U拉塊】〇12) ’其可由儲存標籤陣列214 之# MESI狀態232來加以判斷。 理-t^ W圖’係顯示依據本發明第1圖之微處 :1之操作流程圖,其中,微處理器1〇〇具有 圖貝轭例之執行單元與記憶體子系統⑴,用 =執行-儲存指令。第1Q圖之流程圖與第7圖之流 .相似。然而’第10圖之步驟模塊1〇〇4取代第 7圖之步驟模塊404,這僅僅將部份MESI狀態232 從儲存標籤陣列214被讀取,而非如第7圖步驟模 塊4〇4所示,需從修改位元陣列216讀取已修改位 凡234。除此之外,第1〇圖並不存在步驟模塊4的, 且流㈣接由步驟模塊1〇〇4前進至步驟模塊彻。 更進第10圖之決定步驟模塊1012取代第7 圖之步驟模塊412 ’這使得儲存符列126將判斷在 收之28部份聰1狀態是否至少為 201042451 獨佔狀態(而非如第7圖之決定步驟模塊412判斷 於其步驟拉塊406中所計算之完整MESI狀態236 是否為獨佔狀態或已修改狀態)。最後,由於儲存佇 列126不需要存取快取列之完整Mesi狀態,因此, 第10圖之流程圖不包括第7圖之決定步驟模塊 418,不用進行第7圖之決定步驟模塊Aw之最佳 化,相反地,流程直接由步驟模塊76前進至步驟 模塊724。 參考第11圖,係顯示依據本發明第1圖之微處 理器100之刼作流程圖,其中,微處理器^⑼具有 第9圖實施例之執行單元與記憶體子系統丨12,用 以執行然效規探請求。流程開始於步驟模塊〗丨〇2。 ^於步驟杈塊1102中,載入單元122接收一無效 窺探請求224。作為回應,針對與窺探位址相關之 快取列’載人單元122冑自己執行-窺探詢問操 作。流程前進至步驟模塊11〇4。 於步驟模塊1104中,針對與窺探位址相關之快 取歹覌.木询問刼作從載入標籤陣列212讀取部份 窺探請求632’並從第9圖之修改位元陣列216讀 取已修改位元634。流程前進至步驟模塊11〇6。 於步驟模塊1106中,載入單元122之组合邏輯 6〇8根據第3a圖之表!或第补圖之表2其中之一, 用以計算快取列之完整MESI狀態咖。流程前進至 CNTR2485I00-TW/ 0608-A42144-TW/fmal 29 201042451 步驟模塊1108。 於決定步驟模塊1108中,載入單元112判斷在 步驟模塊1106所計算之完整MESI狀態636是否為 已修改狀態。若是,流程前進至步驟模塊1112 ;否 則’流程前進至步驟模塊1114。 於步驟模塊1112中,載入單元122命令匯流排 介面單元134執行匯流排操作,將該快取列寫回至 系統記憶體。流程前進至步驟模塊1丨14。 於步驟模塊1114中,載入單元丨22對自己執行 一狀態更新操作,以及對儲存單元124執行一狀態
更新操作,其中,每一狀態更新操作指定新MESI 狀悲為無效狀態。流程同時前進至步驟模塊111 ό與 步驟模塊1122。 於步驟模塊1Π6中’針對與窺探位址相關之快 取列載入單元122將無效狀態寫入至載入標籤陣 列212對應之項目。流程結束於步驟模塊Μ"。 於步驟模塊1122中,針對與窺探位址相關之快 ::存單元124將無效狀態寫入儲存標藏陣列 …之項目。流程結束於步驟模塊1122。 快取的是’於第9圖之實施例中,當對應 决取=讀時,職置修㈣列21 兀,而非如兹ς闽々止_ ° χ ^ Θ V 才果塊5 18在收到窺探請求 CNTO2485IOO-TW/0608-A42l44-TW/fmal 201042451 2 2 4就進行重置。 爹可弟12圖 說明於笛7 你頒不依據本發明另一實施例, 體子系统^之微處理^⑽中’執行單元與記憶 多方面^部份方塊圖。第12圖之實施例在許 為相似I/於第9圖之實施例’且相同編號之元件 為相似的。茲就不同處加以說明。
於第12圖之實施例中’儲存佇列126對儲存單 ^4執行快取寫入請求226 (而非對第2圖之載 入早凡122 ’或者直接對第6圖與第9圖之資料陣 列218與修改位元陣歹"16)。資料陣列218之寫入 埠與修改位轉列216之寫人埠均_於儲存單元 124’使彳于儲存單元124(而非第9圖之資料佇列I%) 將快取列寫人至資料陣列218,並更新修改位元陣 列216之已修改位元,用以回應於資料佇列之 快取寫入請求226。儲存單元124將快取列之完整 MESI狀態更新至儲存標籤陣列214,使得儲存單元 124執行最佳化,其中,上述之最佳化,與第*圖 與第7圖之決定步驟模塊418中,載入單元122與 儲存佇列126所分別執行之最佳化類似,而儲存標 籤陣列214將完整MESI狀態1232提供至儲存佇列 126。 此外’儲存單元124接收窺探請求224,而非载 入單元122。因此’第12圖之儲存單元ι24執行窺 CNTR2485I00-TW/ 0608-A42144-TW/fmal 31 201042451 探請求224,此方式類似於第5圖相關之說明,除 了儲存單it 124係直接由儲存標籤陣列214接收完 整MESI狀態123¾而非由固 > 么人 开田弟2圖之組合邏輯2〇8)。 然而’因為載入單Tt 122亦提供完整MESI狀能 於另-實施例中’載入單元122負責處理窺探 請求224,流程如上述第丨丨圖相關之說明。 最後,收回請求242由載入單元122處理,類 似於上述第8圖之處理方式。 、 參考第13圖,係顯示依據本發明另一實施例, 說明於第1 ®之微處理器!⑼中,執行單元與記憶 體子系統112之部分方塊圖。第13圖之實施例許多 方面類似於第6圖之實施例’且相似數字之元件為 相似的。茲將不同處說明如下。 … 第13圖之實施例包括單一雙蟑標籤陣列 ΠΗ,亦稱為統-標籤陣列1314,而非载入標藏陣 列212與儲存標籤陣列214。也就是說,統一 陣列1314具有耦接於載入單元122之第一讀取:寫 入埠,以及耦接於儲存單元124之第二讀取/寫二 埠。第一讀取/寫入埠將部份MESI狀態DM提供至 載入單元122之組合邏輯_,而第二讀取/寫:埠 將部份MESI狀態232提供至儲存單元124之組人 邏輯208。於第13之實施例中,當儲存仔列126^ 订快取寫入請求226時,資料快取128並不將統一 CNTR2485I00-TW/ 0608-A42144-TW/final 201042451 標戴陣列UU以已修改新狀態進行更新,此一優點 在於,將減少統一標籤陣列1314之麥塞狀況。不 過,透過同時存取統-標籤陣列1314與修改位元陣 歹J ^16信者存單兀124可計算快取列之完整mesi 狀態236,而載入單亓^ _ MESI„ 1332。早疋122可计鼻快取列之完整 Ο Ο —類似於上述第9圖之實施例,於第㈣之另一 例中’載人單it 122處理窺探請求224,且儲 子單7L 124不執行決定步驟模塊418之最佳化,這 ^寻儲存單it m不用產生完整mesi狀態236,而 修改位元陣列216可具有_於載人單元122之單 一讀取埠,而非兩個讀取埠。 :第u圖之實施例中,儘管並無享有獨立載入 =陣列212與館存標籤陣列214之實施例所帶來 =面關及電源管理之好處,第㈣之實施例仍 =二位元㈣之優勢’意即,減少標藏 羞基進一步’第13圖之實施例有利於空 所具有之高效率雙埠標籤陣列設計,遠小於 兩個單一埠標籤陣列所消耗之總空間 、 本發明雖以較佳實施例揭露如上,然宜並非用 Γ艮定本發明的範園’任何所屬技術領域中具有通 吊知識者,在残離本㈣之精神和範圍内,每可 做些許的更動與潤錦。舉例來說,軟體可以致能此 CNTR2485I00-TW/ 〇608-A42144-TW/finaI 3 201042451 處所述之裝置及方法,如致能裝置及方法之功能、 製造、模型、模擬、性質及/或測試。例如,經由使 用一般之程式語言(例如C或C++)、包括Verilog HDL、VHDL 等之硬體描述語言 (hardware description language, HDL )、或其它可使用之程式來 完成。此類軟體可被安裝於任何已知電腦可用之媒 體中,例如半導體、磁碟或光碟(像是CD-ROM、 DVD-ROM等)。此處所述裝置及方法之實施例可被 包含於一半導體智慧財產核心(semiconductor intellectual property core )中,如微處理器的核心(以 HDL實現),之後再以積體電路之製造轉換成硬體。 另外,此處所述之裝置及方法可由硬體及軟體來組 合實現。故本發明不應侷限於此處所述之具體實施 例,而應以其後所附之申請專利保護範圍及其相同 範圍為準。具體地,本發明可於通用型電腦所使用 之微處理器裝置中實現。最後,所屬技術領域中具 有通常知識者應能在不脫離本發明範疇的前提下, 以所附之申請專利保護範圍所揭露之概念及特定實 施例為基礎,設計或修改與本發明執行相同功能之 其他結構。 CNTR2485IOO-TW/ 0608-A42144-TW/fmal 34 201042451 【圖式簡單說明】 第1圖係顯示依據本發明之微處理器方塊圖。 ―第2圖係顯示依據本發” 1圖微處理器之執 仃早元與記憶體子系統部份方塊圖。 Ο Ο 第3 a圖係顯示依據本發明第i圖之資料快取所 ^表格示意圖,透過部分_SI快取列狀態與 一已修改位1用以計算出完整_si快取列狀態。 第%圖係顯示依據本發明另—實施例,說 二圖之臟取所使用之表格示意 :ESI快取列狀態與-已修改位元,用以計算出』; MESI快取列狀態。 1井疋埜 第4圖係顯示依據本發 操作流程圖,其中,微圖之微處理器之 執行單元與記憶體子系統,用二第2圖實施例之 丁凡用以執行一儲存指令。 第5圖係顯示依據本發 操作流程圖,其中,微處= 執行單元與記憶體子系統 *施例之 求。 用以執仃一無效窺探請 第6圖係顯示依據本 第1圖之微處理器令,執行„!另—實施例’說明於 部份方塊圖。 丁早疋與記憶體子系統之 圖之微處理器之 第7圖係顯示依據本 CNTR2485I〇〇.TW/ 0608-A42144-TW/fmal 35 201042451 操作流程圖,其中’微處理哭且 執行單元與記,it體m ; 4 6圖實施例之 ^ 丁凡用以執行一儲存指令。 第8圖係顯示依據本發 操作流程圖,其中,微處理器:1圖=理器之 執行單元與記憶體子系統,用;^第6圖實施例之 用以執行一收回請求。 第9圖係顯示依據本發 第!圖之微處理器中,執另:貫施例’說明於 部份方塊圖。 執仃早兀與記憶體子系統之 第10圖係顯示依據本發明 摔作冷弟1圖之微處理器之 知作4圖,其中’微處理 執行單元與記憶體子系統,用以:第9 例之 丁凡用以執行一儲存指令。 nJ 11圖係顯示依據本發明第1圖之微處理器之 :輪呈圖’其中’微處理器具有第9圖實施例之 ^單元與記憶體子系統’用以執行一無效窺探請 第12圖係顯示依據本發明另_實施例,說明於 弟1圖之微處理器中,勃耔留__ Λ ^ 部份方塊圖。 執仃早-與記憶體子系統之 第u圖係顯示依據本發明另一實施例,說明於 第1圖之微處理器⑽中,執行單元與記憶體子系 統112之部分方塊圖。 、 【主要元件符號說明】 CNTR2485I00-TW/ 0608-Α42144-TW/fmal 36 201042451 100〜微處理器; 104〜指令轉譯器; 108〜指令排序器; 102〜指令快取; 106〜暫存_名表; 112〜執行單元與記憶體子系統;
〜重排序緩衝器(腦)與結構化 122〜載入單元; 124〜儲存單元; 126〜儲存佇列; 128〜資料快取;
132〜二階(L2)快取; 134〜匯流排介面單元(BRJ); 208、608〜組合邏輯; 212〜載入標籤陣列; 216〜修改位元陣列; 222〜載入請求; 226〜快取寫入請求; 214〜儲存標籤陣列 218〜資料陣列; 224〜窺探請求; 228〜儲存請4
232、632、1332〜部份 MESI 狀態; 234、634〜已修改位元; 236、636、1232〜完整MESI狀態;及 242〜收回。 CNTR2485IOO-TW/0608-A42144-TW/fmal 37
Claims (1)
- 201042451 七、申請專利範圍: 1. 一種微處理器,包括: 第一與第二功能單元,各自耦接及存取一資料快取; 及 該育料快取,包括· 一資料陣列,具有一既定架構,包括: 一寫入琿,該第一功能單元透過該寫入埠將 資料寫入至該資料陣列之一快取列; 一修改位元陣列,具有該資料陣列之該對應既定 架構,包括: 一寫入埠,該第一功能單元透過該寫入埠設 定該修改位元陣列之一已修改位元,用以指示對 應於該資料陣列中由該第一功能單元所寫入之該 對應快取列已被修改;及 一讀取埠,該第二功能單元透過該讀取埠從 該修改位元陣列讀取該已修改位元,用以判斷對 應於該資料陣列之該快取列是否已被修改;及 一標籤陣列,具有該資料陣列之該對應既定架 構,包括: 一讀取埠,該第二功能單元透過該讀取埠讀 取對應該資料陣列之該快取列之一部分狀態,其 中,該部份狀態無法正確指示該快取列是否已被 修改, 其中,該標籤陣列不包含有一埠以提供該第 CNTR2485I00-TW/ 0608-A42144-TW/fmal 38 201042451 一功能單元藉由該璋更新該快取列之該部分狀 態。 2. 如申請專利範圍第1項所述之微處理器,其 中,該標籤陣列被配置用以儲存對應於該資料陣列之該 快取列之一位址標籤,其中,該修改位元陣列沒有儲存 位址標籤。 3. 如申請專利範圍第1項所述之微處理器,更包 0 括. 一第三功能單元,耦接及存取該資料快取, 其中,該修改位元陣列更包括: 一第二讀取埠,該第三功能單元透過該第二讀取 埠,從該修改位元陣列讀取該已修改位元,用以判斷 該快取列是否已被修改。 4. 如申請專利範圍第3項所述之微處理器,其 ^ 中,該資料快取更包括: 一第二標籤陣列,具有該資料陣列之該對應既定架 構,包括: 一讀取淳,該第三功能單元透過該讀取埠讀取對 應該資料陣列之該快取列之一部份狀態,其中,該部 份狀態無法證確指示該快取列是否已被修改, 其中,該第二標籤陣列中不包含有一埠提供該第 一功能單元藉以更新該對應快取列之該部分狀態。 CNTR2485I00-TW/ 0608-A42144-TW/final 39 201042451 5.如申請專利範圍第3項所述之微處理 i 中,該標籤陣列更包括: °八 一第二讀取埠,該第三功能單元透過該第二 取對應該⑽_之_取狀-部分狀態,其中,^ 份狀態無法正確指示該快取列是否已被修改。 6·一如申請專利範圍第1項所述之微處理器,其 中二該第-功能單元包括一資料佇列單元,係被配置來 執行一快取寫人操作,用以將該資料寫人至該資料陣列 之„亥快取列’並用以設定該修改位元陣列之該已修改位 元。 7. 士申明專利範圍第1項所述之微處理器,其 中,該第二功能單元係被配置從該資料陣列讀取該對應 快取列’用以執行一載入指令。 8·如申請專利範圍第1項所述之微處理器,其 中,該第二功能單元係被配置從該資料陣列讀取該對應 快取列,用以執行一收回請求,以收回該資料快取之該 對應快取列。 9.如申請專利範圍第1項所述之微處理器,其 中,該第二功能單元係被配置從該修改位元陣列讀取該 已修改位7G,並從該標籤陣列讀取該部份狀態,用以計 异忒對應快取列之一完整狀態,以執行指向該對應快取 列之一窺探請求。 CNTR2485I00-TW/ 0608-A42144-TW/fmal 4〇 201042451 Η).如申請。專利範圍帛丨項所述之微處理器,其 中,該第二功能單元係配置從該修改位元陣列讀取該已 修改位元,並從該標籤陣列讀取該部份狀態,用以計/算 該快取列之一完整狀態,以執行一請求來收回該快取 列。 11.如申請專利範圍第丨項所述之微處理器,其 中,該第二功能單元係被配置從該修改位元陣列讀取該 〇 已修改位兀且從該標籤陣列讀取該部份狀態,用以計算 該快取列之一完整狀態,以執行一儲存指令。 12·如申請專利範圍第U項所述之微處理器,其 中,若由該第二功能單元所計算之完整狀態判斷該快取 列已被修改,該第一功能單元係被配置用以避免設定該 對應快取列之該修改位元陣列之該已修改位元。 13.如申請專利範圍第丨項所述之微處理器,其 〇 中,該資料快取更包括: 、 一第二標籤陣列,具有該資料陣列之該對應既定架 構,包括: 一寫入槔,該第一功能單元係透過該寫入埠寫入 對應該資料陣列之該快取列之一完整狀態,用以指示 由該第一功能單元所寫入之該快取列已被修改。 14·如申睛專利範圍第丨3項所述之微處理器,其 中,該第二標籤陣列亦包括一讀取埠,該第一功能單元 CNTR2485IOO-TW/ 0608-A42144-TW/fmal 41 201042451 透過该讀取埠讀取對應該資料陣列之該快取列之該完 整狀態。 15 ·如申請專利範圍第1項所述之微處理器,其 中,當該資料快取將該快取列分配至該資料快取時,該 第一功此單元係被配置來重置該修改位元陣列之該已 修改位元,用以指示該資料陣列之該對應快取列未被修 改0 16·如申晴專利範圍第1項所述之微處理器,其 中’該標籤陣列更包括: 寫入埠,5亥第一功此單元透過該寫入埠寫入對應該 資料陣列之該快取列之該部份狀態, 其中,虽该第二功能單元寫入該快取列之該部份狀 態,使該快取列無效時,該第—功能單元係被配置用以重 置該修改位元陣列之該對應已修改位元。 —種微處理器之資料快取存取方法,用於第一 與第二功能單元,其中,該資料快取包括具有—既Μ 構之一資料陣列、與具有該對應既定架構之一標藏陣 列’該方法包括: 透過該資料陣列之-寫入埠,將資料寫入至該資料陣 列之一快取列,其中,該資料寫人由該第-功能單元執行; 设疋该貧料快取之-修改位元陣列之一已修改位元, 用以指示於該資料陣列中由該第—功能單元所寫入之該對 CNTR2485I00-TW/ 〇608-A42144-TW/fmal 42 201042451 =快取列已被修改,其中,該修改位元陣列具有該資料陣 二:ί!應:定架構’其中’該已修改位元之設定由該第 力月b早兀透過該修改位元陣列之一寫入埠執行; =該似位辑狀該已糾位元,心判_快 取列疋否已被修改,其中,該已修改位元之讀取由 功能單位透職修改位元陣狀—讀科執行;及 ❹ 項取對應該資料陣列之該快取列之一部份狀態,其 中,該部份狀態無法正確指示該快取列是否已被修^,其 中’,部份狀態之讀取由該第三功能單元透過該標藏陣列 之一讀取埠執行,其中,該該標籤陣列不包含有-埠以提 供該第一功能單元藉由該埠更新該快取列之該部分狀離。 ” I8.如申請專利範圍第17項所述之微處理器之資 料决取存取方法,其申,該標籤陣列被配置用以儲存該 資料陣列之該對應快取狀—位址標籤,其中,該修改 位元陣列沒有儲存位址標籤。 “ 19.如申請專利範圍第17項所述之微處理器之資 ,快取存取方法,其中,該微處理器更包括—第三功能 單元’用以存取該資料快取,該方法進一步包括: 第二次讀取該修改位元陣列之該已修改位元,用以判 斷該快取列是否已被修改,其中,該已修改位元之第二次 5賣取由該第三功能單元透過該修改位元陣列之一第二讀取 埠執行。 43 CNTR2485I00-TW/ 〇608-A42144-TW/fmal 201042451 … 4申明專利範圍第19項所述之微處理器之資 :快取存取方法,其中,該資料快取更包括—第二標鐵 1:力::中’該第二標藏陣列具有該資料陣列之該對應 既疋木構,該方法進一步包括·· 第一-人讀取對應該資料陣列之該快取列之一部分狀 態’其中,該部份狀態不指示該快取列是否已被修改,I 令,該快取列之該部份狀態之第二次讀取由該第三功能單 π透過該第二標籤陣狀—讀取埠執行,其中,該第一功 能單元更新該賴快取狀該部錄態所使用之—蜂係不 包含於該第二標籤陣列中。 21.如申請專利範圍帛19項所述 料快取存取方法,進一步包括: 益之貢 ▲第二次讀取對應該資料陣列之該快取列之一部分狀 態’其中’該部份狀態無法正確指示該快取列是否已被修 改’其中’該快取列之該部份狀態之第二次讀取由該第三 功能單元透過補籤陣狀_第二讀取埠執行。 22·如申請專利範圍$ π項所述之微處理器之資 料快取存取方法,其中,該第—功能單元包括—資料仔 列早心係被配置來執行-快取寫人操作,用以執行該 資料陣列之該快取列之該資料寫人,以及該修改位元陣 列之该已修改位元之設定。 23·如申請專利範圍第17項所述之微處理器之資 CNTR2485I00-TW/ 0608-A42144-TW/fmal 44 201042451 料快取存取方法,進一步包括: 令,d:::列之該對應快取列,用以執行-載入指 '、 销應快取狀讀取由該第二功能單元執行。 24·如申請專利範圍第17項所 料快取存取方法,進—步包括··狀4處理益之資 從該資料陣财讀取該快取列,用 回該資料陣列玄矾仃明求以收 Ο 二功能單元2 其中,該讀取該快取列由該第 料快請專㈣圍第17韻述之微處理器之資 计陕取存取方法,進-步包括: 列立元陣列讀取該已修改位元,並從該標籤陣 狀態’用以計算該快取列之一完整狀態’以 整心之;一窺探請求,其中,該快取列之該完 〜又冲异由該弟二功能單元執行。 Ο 料快=專r步:r所述之微處理器之資 列許位r陣列讀取該已修改位元,並從該標籤陣 執^二2狀態’用以計算該快取列之一完整狀態,以 能:;:::來收回該快取列,其中,該快取列之該完整狀 態之计异由該第二功能單元執行。 料二項所述之微處理器之資 CNTR2485I00-TW/0608.A42144.TW/fmal ^ 201042451 從該修改位元陣列讀取該已修改位元,並從該標籤陣 列讀取該部份狀態,用以計算該快取列之一完整狀態,以 執行一儲存指令,其中,該快取列之該完整狀態之計算由 該第二功能單元執行。 28. 如申請專利範圍第27項所述之微處理器之資 料快取存取方法,進一步包括: 若由該第二功能單元所計算之完整狀態判斷該快取列 已被修改,避免設定對應該快取列之該修改位元陣列之該 已修改位元。 29. 如申請專利範圍第17項所述之微處理器之資 料快取存取方法,其中,該資料快取更包括一第二標籤 陣列,具有該資料陣列之該對應既定架構,該方法進一 步包括: 寫入該資料陣列之該快取列之一完整狀態,用以指示 由該第一功能單元所寫入之該快取列已被修改,其中,該 快取列之該完整狀態之寫入由該第一功能單元透過該第二 標籤陣列之一寫入埠執行。 30. 如申請專利範圍第29項所述之微處理器之資 料快取存取方法,進一步包括: 讀取對應該資料陣列中該快取列之該完整狀態,其 中,該快取列之該完整狀態之讀取由該第一功能單元透過 該第二標籤陣列之一讀取埠執行。 CNTR2485I00-TW/ 0608-A42144-TW/final 46 201042451 31.如申請專利範圍第I?項所述之微處理器之資 料快取存取方法,進一步包括: 將該快取列分配至談資料快取;及 重置該修改位元陣列之該已修改位元,用以指示該資 料陣列之该快取列未被修改,以回應於該快取列之分配, 其中,該已修改位元之重置由該第一功能單元執行。 32.如申請專利範圍第I?項所述之微處理器之資 ❹ 料快取存取方法,進一步包括: 寫入對應戎資料陣列之該快取列之該部份狀態,用以 使該快取列無效,其中,該快取列之該部份狀態之寫入用 以使該快取列無效由該第二功能單元透過該標藏陣列之一 寫入埠執行;及 重置對應該修改位元陣狀該已修改位元,其中,該 已修改位元之重置由該第一功能單元執行。 0 33. —種電腦程式產品,用於 程式產.品包括: 一電腦裝置,該電腦 儲存媒體内建之電腦 該電腦可讀取程式碼 一電腦可使用儲存媒體,包括該 可讀取程式碼,用以指定微處理器, 包括: 及 第-程式碼,用以指定第一與 摩禹接於-資料快取及被配置^存取該_=各 該資料快取 第二程式碼’用以指定該資料快取 CNTR2485I00-TW/ 〇608-A42144-TW/final 47 201042451 包括: 一資料陣列,具有一既定架構,包括: 一寫入埠,該第一功能單元透過該寫入 槔將資料寫入該資料陣列之一快取列; 一修改位元陣列,具有該資料陣列之該對應 既定架構,包括: 一寫入埠,該第一功能單元透過該寫入 埠設定該修改位元陣列之一已修改位元,用 以指示於該資料陣列中由該第一功能單元所 寫入之該對應快取列已被修改;及 一讀取埠,該第二功能單元透過該讀取 埠讀取該修改位元陣列之該已修改位元,用 以判斷該快取列是否已被修改;及 一標籤陣列,具有該資料陣列之該對應既定 架構,包括: 一讀取埠,該第二功能單元透過該讀取 埠從該資料陣列讀取該對應快取列之一部分 狀態,其中,該部份狀態無法正確指示該快 取列是否已被修改, 其中,該標籤陣列不包含有一埠以提供 該第一功能單元藉由該埠更新該快取列之該 部分狀態。 CNTR2485!00-TW/0608-A42144-TW/fmal 48
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/472,766 US8108624B2 (en) | 2009-05-27 | 2009-05-27 | Data cache with modified bit array |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201042451A true TW201042451A (en) | 2010-12-01 |
TWI417725B TWI417725B (zh) | 2013-12-01 |
Family
ID=42717594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099116092A TWI417725B (zh) | 2009-05-27 | 2010-05-20 | 微處理器、微處理器之資料快取存取方法與電腦程式產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8108624B2 (zh) |
CN (1) | CN101833518B (zh) |
TW (1) | TWI417725B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102176138B (zh) * | 2011-03-01 | 2013-04-03 | 上海维宏电子科技股份有限公司 | 数控系统中硬件端口的对象化管理控制方法 |
US20130173853A1 (en) * | 2011-09-26 | 2013-07-04 | Nec Laboratories America, Inc. | Memory-efficient caching methods and systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555379A (en) * | 1994-07-06 | 1996-09-10 | Advanced Micro Devices, Inc. | Cache controller index address generator |
US5802586A (en) * | 1995-02-27 | 1998-09-01 | Motorola, Inc. | Cache memory having a read-modify-write operation and simultaneous burst read and write operations and a method therefor |
US6412051B1 (en) * | 1996-11-27 | 2002-06-25 | International Business Machines Corp. | System and method for controlling a memory array in an information handling system |
US5999474A (en) * | 1998-10-01 | 1999-12-07 | Monolithic System Tech Inc | Method and apparatus for complete hiding of the refresh of a semiconductor memory |
US6804162B1 (en) * | 2001-04-05 | 2004-10-12 | T-Ram, Inc. | Read-modify-write memory using read-or-write banks |
US6981111B1 (en) * | 2003-03-31 | 2005-12-27 | Emc Corporation | Data storage system |
US7287126B2 (en) * | 2003-07-30 | 2007-10-23 | Intel Corporation | Methods and apparatus for maintaining cache coherency |
US7506100B2 (en) * | 2005-02-23 | 2009-03-17 | United Memories, Inc. | Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a data cache and separate read and write registers and tag blocks |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
EP1930811A1 (en) * | 2006-12-05 | 2008-06-11 | Telefonaktiebolaget LM Ericsson (publ) | Methods and devices for cache enhancing |
US7822911B2 (en) * | 2007-08-15 | 2010-10-26 | Micron Technology, Inc. | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same |
-
2009
- 2009-05-27 US US12/472,766 patent/US8108624B2/en active Active
-
2010
- 2010-05-20 CN CN2010101798078A patent/CN101833518B/zh active Active
- 2010-05-20 TW TW099116092A patent/TWI417725B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20100306478A1 (en) | 2010-12-02 |
US8108624B2 (en) | 2012-01-31 |
CN101833518B (zh) | 2011-12-07 |
TWI417725B (zh) | 2013-12-01 |
CN101833518A (zh) | 2010-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US9274856B2 (en) | Improving processor performance for instruction sequences that include barrier instructions | |
US8321634B2 (en) | System and method for performing memory operations in a computing system | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US9563568B2 (en) | Hierarchical cache structure and handling thereof | |
US20080010417A1 (en) | Read/Write Permission Bit Support for Efficient Hardware to Software Handover | |
US8898395B1 (en) | Memory management for cache consistency | |
CN106897230B (zh) | 用于处理原子更新操作的装置和方法 | |
US10042580B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
TW201030609A (en) | Metaphysical address space for holding lossy metadata in hardware | |
US20160314069A1 (en) | Non-Temporal Write Combining Using Cache Resources | |
TW200908009A (en) | Hierarchical cache tag architecture | |
US6950909B2 (en) | System and method for reducing contention in a multi-sectored cache | |
CN107038125A (zh) | 具有加速预取请求的独立流水线的处理器高速缓存 | |
US20170293559A1 (en) | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation | |
US20230259459A1 (en) | Memory Cache with Partial Cache Line Valid States | |
CN111201518A (zh) | 用于管理能力元数据的设备和方法 | |
WO2020083720A1 (en) | I/o coherent request node for data processing network with improved handling of write operations | |
TWI407306B (zh) | 快取記憶體系統及其存取方法與電腦程式產品 | |
CN115176237B (zh) | 具有混合回写和透写的数据高速缓存 | |
US20180307601A1 (en) | Managing cache operations using epochs | |
TWI723069B (zh) | 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法 | |
TW201042451A (en) | Microprocessor, method for accessing data cache in a microprocessor and computer program product | |
US20140115257A1 (en) | Prefetching using branch information from an instruction cache |