TWI417725B - 微處理器、微處理器之資料快取存取方法與電腦程式產品 - Google Patents
微處理器、微處理器之資料快取存取方法與電腦程式產品 Download PDFInfo
- Publication number
- TWI417725B TWI417725B TW099116092A TW99116092A TWI417725B TW I417725 B TWI417725 B TW I417725B TW 099116092 A TW099116092 A TW 099116092A TW 99116092 A TW99116092 A TW 99116092A TW I417725 B TWI417725 B TW I417725B
- Authority
- TW
- Taiwan
- Prior art keywords
- array
- cache
- data
- modified
- microprocessor
- 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
本發明係有關於微處理器內之快取記憶體,特別是有關於其快取列之一致性狀態架構。
現今的微處理器包含快取記憶體(cache memory),用來減少記憶體存取指令之延遲。快取記憶體通常包括資料陣列以及標籤陣列;資料陣列用以儲存資料的實際快取列(cache line),而標籤陣列,用以儲存與資料陣列內之快取列相關之位址標籤。標籤陣列所儲存的每一項目也一併記錄著快取列之狀態。此外,快取列狀態用來指示資料陣列內之對應快取列是否為有效的,以及該快取列自被分配後是否已被修改過。
另外,現今的微處理器,特別是超純量(superscalar)處理器,包括許多個功能單元可對快取記憶體進行存取,例如不同的載入單元與儲存單元。快取記憶體的資料陣列與標籤陣列通常具有多重埠,使得每一功能單元可以同時存取資料陣列與標籤陣列,以將效能最佳化。然而,具多重埠之陣列將大幅地增加面積與功率消耗。再者,在從事微處理器的平面規劃(floor-planning)時,因為陣列面積通常已相對較大,若更大時將會更難以將其納入。
針對此一問題之解決方式,即是複製標籤陣列,使得每一功能單元擁有自己的標籤陣列,進而使得標籤陣列變成單一埠。雖然此解決方式需要集合微處理器上更多空間,因為每一標籤陣列面積較小,便減輕平面規劃之負擔,且由於每一標籤陣列可單獨電源管理的,額外地有利於電源管理。然而,使用此一解決方式之問題在於,當快取列之標籤及/或狀態需要更新時,必須存取所有標籤陣列,用以更新每一個標籤陣列所相應的快取列之標籤及/或狀態。這將消耗許多標籤陣列之存取頻寬,且進行更新時,所有標籤陣列需要消耗功率。
因此,需要一種快取記憶體架構,用以解決上述的問題。
一方面,本發明提供一種微處理器。該微處理器包括第一與第二功能單元,每一功能單元於一資料快取及被配置用以存取該資料快取。該資料快取包括一資料陣列,具有一既定架構。該資料陣列包括一寫入埠該第一功能單元透過該寫入埠將資料寫入至該資料陣列之一快取列。該資料快取包括一修改位元陣列,具有該資料陣列之該對應既定架構。該修改位元陣列包括一寫入埠,該第一功能單元透過該寫入埠
設定該修改位元陣列之一已修改位元,用以指示於該資料陣列中,由該第一功能單元所寫入之該對應快取列已被修改。該修改位元陣列亦包括一讀取埠,該第二功能單元透過該讀取埠從該修改位元陣列讀取該已修改位元,用以判斷該快取列是否已被修改。該資料快取亦包括一標籤陣列,具有該資料陣列之該對應既定架構。該標籤陣列包括一讀取埠,該第二功能單元透過該讀取埠從該資料陣列中讀取該對應快取列之一部份狀態。該部份狀態不指示該快取列是否已被修改。該標籤陣列中不包含有提供該第一功能單元更新該快取列之該部份狀態的一埠。
另一方面,本發明提供一種微處理器之資料快取存取方法,用於第一與第二功能單元,其中,該資料快取包括具有一既定架構之一資料陣列、與具有該對應既定架構之一標籤陣列。該方法包括該第一功能單元透過該資料陣列之一寫入埠,將資料寫入至該資料陣列之一快取列。該方法亦包括設定該資料快取之一修改位元陣列之一已修改位元,用以指示於該資料陣列中,由該第一功能單元所寫入之該對應快取列已被修改,其中,該修改位元陣列具有該資料陣列之該對應既定架構。該第一功能單元透過該修改位元陣列之一寫入埠設定該已修改位元。該方法亦包括該第二功能方塊透過該修改位元陣列之一讀取埠,讀取該修改位元陣列之該已修改位元,用以判斷該快取
列是否已被修改。該方法亦包括該第二功能單元透過該標籤陣列之一讀取埠,讀取該資料陣列之該對應快取列之一部份狀態。該部份狀態不指示該快取列是否已被修改。該標籤陣列中不包含有提供該第一功能單元更新該快取列之該部份狀態的一埠。
另一方面,本發明提供一電腦程式產品,用於一電腦裝置,該電腦程式產品包括一電腦可使用之儲存媒體,包括該儲存媒體內建之電腦可讀取程式碼,用以指定微處理器。該電腦可讀取程式碼包括第一程式碼,用以指定第一與第二功能單元,各自耦接於一資料快取及被配置用以存取該資料快取。該電腦可讀取程式碼亦包括第二程式碼,用以指定該資料快取。該資料快取包括一資料陣列,具有一既定架構。該資料陣列包括一寫入埠,該第一功能單元透過該寫入埠將資料寫入該資料陣列之一快取列。該資料快取包括一修改位元陣列,具有該資料陣列之該對應既定架構。該修改位元陣列包括一寫入埠,該第一功能單元透過該寫入埠設定該修改位元陣列之一已修改位元,用以指示於該資料陣列中,由該第一功能單元所寫入之該對應快取列已被修改。該修改位元陣列亦包括一讀取埠,該第二功能單元透過該讀取埠讀取該修改位元陣列之該已修改位元,用以判斷該快取列是否已被修改。該資料快取亦包括一標籤陣列,具有該資料陣列之該對應既定架構。該標籤陣列包括一
讀取埠,該第二功能單元透過該讀取埠從該資料陣列讀取該對應快取列之一部份狀態。該部份狀態不指示該快取列是否已被修改。該標籤陣列中不包含有提供該第一功能單元更新該快取列之該部份狀態的一埠。
本發明之優點在於快取列之修改需要對應地更新其狀態,修改位元陣列之存在減輕了存取標籤陣列來更新快取列狀態之需求,從而減少標籤陣列之存取量。除此之外,於其他具有多重標籤陣列之實施例中,修改位元陣列之存在簡化了微處理器內標籤陣列之平面規劃,使其具有較佳電源管理,且沒有上述額外頻寬消耗之問題。
為使本發明之上述目的、特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式,詳細說明如下。
參考第1圖,係顯示依據本發明之微處理器100方塊圖。微處理器100包括指令快取(instruction cache)102,用以儲存程式指令。這些程式指令是微處理器100自系統記憶體(未圖示)所取得且由微處理器100執行。舉例而言,程式指令包括用以存取記憶體之指令,像是x86 MOV、PUSH或POP指令,或者將導致微處理器100存取記憶體的指令,像是若收到轉譯查詢緩衝器不命中(translation lookaside buffer,TLB,missing)訊號時執行頁面表格查找(page table walk)。
微處理器100亦包括指令轉譯器(instruction translator)104,用以由指令快取102接收指令,且將指令(亦被稱為巨集指令)轉譯為一或多個微指令或為微操作(micro-operations)。微操作係指微處理器110之執行單元與記憶體子系統112實際執行之簡化指令。特別地,微指令可包括載入微指令與儲存微指令,或者包括載入指令與儲存指令。載入指令,係用以將記憶體某位置之內容載入至微處理器100之結構化暫存器(architectural register)116中。儲存指令,係用以將微處理器100之結構化暫存器116之內容儲存至記憶體某位置。於其他之實施例中,載入與儲存指令,係為微處理器100之原生指令集之一部分。
微處理器100亦包括暫存器別名表(register alias table,RAT)106,用以接收來自指令轉譯器104之指令。暫存器別名表106依照程式順序接收來自指令轉譯器104之轉譯指令,以及決定微處理器100內之其他未退出指令之每一指令之相依性。暫存器別名表106儲存與微處理器100內之每一未退出指令相關之暫存器重命名資訊。暫存器重命名資訊包括程式順序,則重排序緩衝器(reorder buffer,ROB)116藉此依照程式順序退出指令。在指令分配至指令排序器108之前,暫存器別名表106為每一指令在重排序緩衝器116配置一筆項目。當指令來源運算子根據暫存器別名表106所產生之相依性資訊判斷為可使用時且當執行單元與記憶體子系統112為可使用時,指令排序器108由暫存器別名表106接收指令,並將指令發送至執行單元與記憶體子系統112。於一實施例中,微處理器100為一亂序執行微處理器(out-of-order execution microprocessor)。重排序緩衝器116耦接於暫存器別名表106、指令排序器108、以及執行單元與記憶體子系統112。
執行單元與記憶體子系統112包括:資料快取128、載入單元122、儲存單元124、儲存佇列(queue)126、二階(level-2,L2)快取132、與匯流排介面單元(bus interface unit,BIU)134,均耦接於資料快取128。於此,載入單元122、儲存單元124與儲存佇列126,可被稱為功能單元。載入單元122執行載入指令,以由資料快取128載入資料至結構化暫存器116。儲存單元124與儲存佇列126執行儲存指令,用以將結構化暫存器116之資料儲存於資料快取128。匯流排介面單元134,作為微處理器100與微處理器100匯流排之介面,使得微處理器100傳輸資料至記憶體與週邊裝置。進一步,匯流排介面單元134窺探(snoop)微處理器100匯流排,並且對應地執行針對資料快取128之窺探操作。除此之外,快取列將由資料快取128收回至二階快取。於一實施例中,由於資料快取128之各種陣列(第2圖之212/214/216/218)需要多個時脈週期來進行存取,因此,載入單元122、儲存單元124及儲存佇列126均為多重階層之管線架構。下文將詳細說明資料快取128之架構,以及與載入單元122、儲存單元124、儲存佇列126、二階快取132及匯流排介面單元134間之互動。
於一實施例中,微處理器100之巨集架構為IA-32巨集架構(亦稱為x86架構)。如果一個處理器能夠正確地執行大多數被設計用來於IA-32微處理器上執行之應用程式,則該微處理器被視為具有IA-32巨集架構。而一個應用程式正確地被執行是指能得到該應用程式所預期的結果。然而,其他實施例中,微處理器之巨集架構可有別於x86巨集架構,不過仍包括資料快取128及修改位元陣列216(於第2圖中),用以實現其優點。
參考第2圖,係顯示依據本發明第1圖微處理器100之執行單元與記憶體子系統112部份方塊圖。如第2圖所示,係顯示第1圖之執行單元與記憶體子系統112之載入單元122、儲存單元124與儲存佇列126。第1圖所示的資料快取128包含第2圖元件:載入標籤陣列212、儲存標籤陣列214、修改位元陣列216與資料陣列218。於第2圖之實施例中,載入標籤陣列212包括耦接於載入單元122之單一讀取/寫入埠,而載入標籤陣列212不包含有另一讀取/寫入埠連接至儲存單元124,供儲存單元124更新載入標籤陣列212中的項目;資料陣列218包括耦接於載入單元122之單一讀取/寫入埠;儲存標籤陣列214包括耦接於儲存單元124之單一讀取/寫入埠,而儲存標籤陣列214不包含有另一讀取/寫入埠連接至載入單元122,供載入單元122更新儲存標籤陣列214中的項目;以及修改位元陣列216包括耦接於載入單元122之寫入埠及耦接於儲存單元124之讀取埠。於一實施例中,修改位元陣列216為直接寫入(write-through)陣列,也就是說,於一既定時脈週期中,當儲存單元124讀取修改位元陣列216之位置與載入單元122寫入修改位元陣列216之位置相同時,則修改位元陣列216將該位置新寫入數值提供至儲存單元124。於其他實施例中,資料快取128包括衝突檢測與回復邏輯,用以檢測上述的衝突,並且於下一時脈週期中,提供新寫入數值。由於儲存單元122與資料陣列218間具有單一讀取/寫入埠,儲存佇列126將執行一快取寫入請求226,並提供至第2圖實施例之載入單元122。
載入標籤陣列212、儲存標籤陣列214及修改位元陣列216之架構方式與資料陣列218相同,且載入標籤陣列212、儲存標籤陣列214、及資料陣列218係由許多個儲存元件所組成。舉例來講,於一實施例中,資料陣列218、載入標籤陣列212、儲存標籤陣列214與修改位元陣列216,各自為四集合關聯記憶體陣列(4-way set associative cache memory array),藉由載入(load)、儲存(store)、窺探(snoop)與收回(eviction)位址之索引部份(較低位址位元),用以編成索引,其中,該位址用以選擇資料陣列218之一集合或一列,且每一集合具有四項目。於資料陣列218之某一被選中的集合之每一項目將儲存一快取列。於載入標籤陣列212與儲存標籤陣列214之該被選中的集合之每一項目將儲存對應至資料陣列218之該快取列的一位址標籤與快取列狀態。於該位元陣列216之該被選中的集合之每一項目將儲存一已修改位元,用以指示資料陣列218之對應快取列是否被已修改。在另一實施例中,資料陣列218、載入標籤陣列212、儲存標籤陣列214與修改位元陣列216,各自為M集合關聯記憶體陣列(M-way set associative cache memory array),M是自然數,例如M=2,即資料陣列218、載入標籤陣列212、儲存標籤陣列214與修改位元陣列216,各自為二集合關聯記憶體陣列,而每個陣列可包含有N個集合。於一實施例中,根據習知之MESI快取一致性協定,快取狀態為四種可能狀態其中之一,該四種可能狀態為:已修改(Modified)狀態、獨佔(Exclusive)狀態、共用(Shared)狀態或無效(Invalid)狀態。然而,其他實施例中,修改位元陣列216用以儲存已修改位元,表示對應之快取列已修改,而且已修改位元可用以計算其他快取一致性協定架構中之快取列完整狀態。於一實施例中,當資料快取128分配一快取列至資料陣列218時,也同時將該快取列之完整MESI狀態寫入至載入標籤陣列212以及儲存標籤陣列214,並清除修改位元陣列216之對應已修改位元。於另一實施例中,當資料快取128使快取列無效時,清除修改位元陣列216之對應已修改位元。
於第2圖之實施例中,除了快取寫入請求226外,載入單元122亦處理載入請求222與收回請求242。因為這些操作必須存取資料陣列218,而且載入單元122為耦接至資料陣列218之單一讀取/寫入埠之唯一單元。於第2圖之實施例中,儲存單元124處理儲存請求228與窺探請求224,係各自配合第4圖與第5圖詳細說明如下。
於第2圖之實施例中,資料快取128持續更新載入標籤陣列212,用以反映資料陣列218之對應快取列之完整狀態。然而,資料快取128並不會為了反映資料陣列218之對應快取列之完整狀態而持續更新儲存標籤陣列214。具體地,當儲存佇列126執行一快取寫入請求226來更新一快取列時,儲存標籤陣列214並未被更新為快取列之新MESI狀態。相反地,載入單元122設定修改位元陣列216之對應已修改位元。因此,儲存標籤陣列214僅儲存快取列之部份MESI狀態,而修改位元陣列216儲存之已修改位元,用來表示快取列已被修改。接著,當儲存單元124需要知道快取列之完整的MESI狀態時,儲存單元124一起讀取修改位元陣列216之快取列之已修改位元234與儲存標籤陣列214之快取列之部份MESI狀態232,且儲存單元124之組合邏輯208將使用第3a圖之表1或第3b圖之表2之任一示意圖來計算快取列之完整MESI狀態236(亦提供給儲存佇列126),其中,第3a圖與第3b圖將詳細說明如下。
參考第3a圖,係顯示依據本發明第1圖之資料快取128所使用之表1示意圖,透過部分MESI快取列狀態與一已修改位元,用以計算出完整MESI快取列狀態。
表1包括三個欄位。第一欄位指定資料陣列218之對應快取列之部份MESI快取列狀態,例如自第2圖之儲存標籤陣列214所讀取之部份MESI狀態232。第二欄位指定資料陣列218之對應快取列之已修改位元,例如自修改位元陣列216所讀取之已修改位元234。第三欄位指定資料陣列218之對應快取列之完整MESI狀態,例如第2圖之組合邏輯208所產生之完整MESI狀態236。
於第一列中,表1係顯示若部份MESI狀態為已修改狀態時,則不管已修改位元之數值為何,所計算之完整MESI狀態亦為已修改狀態。於第二列中,表1係顯示若部份MESI狀態為獨佔狀態且已修改位元被設定時,所計算之完整MESI狀態為已修改狀態。於第三列中,表1係顯示若部份MESI狀態為獨佔狀態且已修改位元被重置(reset)時,所計算之完整MESI狀態為獨佔狀態。於第四列中,表1係顯示若部份MESI狀態為共用狀態且已修改位元被設定時,計算之完整MESI狀態為已修改狀態。此狀況指示快取列正處於被升級至獨佔狀態之過程中,且會發生早期儲存合併。第3a圖之實施例具有此狀況之優勢,且將快取列升級至已修改狀態。於第五列中,表1係顯示若部份MESI狀態為共用狀態且已修改位元被重置時,所計算之完整MESI狀態為共用狀態。於第六列中,表1係顯示若部份MESI狀態為無效狀態,則不管已修改位元之數值為何,所計算之完整MESI狀態為無效狀態。從以上的實施例中,可以理解部份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。
於步驟模塊404中,針對與儲存指令之儲存位址相關之快取列,儲存詢問操作從儲存標籤陣列214讀取部份MESI狀態232,並從第2圖之修改位元陣列216讀取已修改位元234。流程前進至步驟模塊406。
於步驟模塊406中,根據第3a圖之表1或第3b圖之表2,儲存單元124之組合邏輯208計算快取列之完整MESI狀態236。流程前進至步驟模塊408。
於步驟模塊408中,儲存單元124於儲存佇列126中分配一項目,並將由儲存請求228所指定之儲存資料及儲存位址寫入至分配項目。流程前進至步驟模塊412。
於決定步驟模塊412中,儲存佇列126判斷步驟模塊406所計算之完整MESI狀態236是否為已修改狀態或獨佔狀態其中之一。若步驟模塊406所計算之完整MESI狀態236為已修改狀態或獨佔狀態其中之一,則流程前進至步驟模塊416,否則,流程前進至步驟模塊414。
於步驟模塊414中,儲存佇列126命令匯流排介面單元134執行一匯流排寫入無效操作,使得具有快取列備份之其他快取之快取列無效,並取得快取列之獨佔所有權。資料快取128回應地將載入標籤陣列212與儲存標籤陣列214之MESI狀態升級至獨佔狀態。流程前進至步驟模塊416。
於步驟模塊416中,儲存佇列126執行一快取寫入請求226,用以指定新MESI狀態為已修改狀態,並將該快取寫入請求226提供至載入單元122。流程同時前進至步驟模塊426與決定步驟模塊418。
於步驟模塊426中,載入單元122將與儲存指令之儲存位址相關之快取列的資料寫入資料陣列128對應之項目。
另一方面,於決定步驟模塊418中,載入單元122判斷步驟模塊406所計算之完整MESI狀態236是否為已修改狀態。若步驟模塊406所計算之完整MESI狀態236為已修改狀態,則流程結束,否則,流程同時前進至步驟模塊422與決定步驟模塊424。
於步驟模塊422中,針對與儲存指令之儲存位址相關之快取列,載入單元122將已修改狀態寫入至載入標籤陣列212對應於該快取列之項目。流程結束於步驟模塊422。
於步驟模塊424中,針對與儲存指令之儲存位址相關之快取列,載入單元122設定修改位元陣列216對應於該快取列之項目中之已修改位元。儘管這時儲存標籤陣列214並未同時記錄快取列之完整MESI狀態(也就是說部份MESI狀態232不是已修改狀態),這樣的設計有助於之後儲存單元124得以計算資料陣列218之對應快取列之完整MESI狀態236。流程結束於步驟模塊424。
由第4圖之流程圖中可發現,當資料快取128執行快取寫入請求226,用以修改資料陣列218之快取列時,資料快取128對具有已修改新狀態之載入標籤陣列212進行更新至最新的已修改狀態(除非狀態已經為已修改狀態,如第4圖所示之相關步驟模塊418、422與424),並設定修改位元陣列216之對應已修改位元。然而,這樣設計之優點在於,資料快取128並沒有對儲存標籤陣列214更新為已修改狀態。不過,儲存單元124可透過同時存取儲存標籤陣列214與修改位元陣列216,如第4圖之相關步驟模塊404(或者第5圖之步驟模塊504)所示,用以計算快取列之完整MESI狀態236,如第4圖之相關步驟模塊406(或者第5圖之步驟模塊506)所示。
參考第5圖,係顯示依據本發明第1圖之微處理器100之操作流程圖,其中,微處理器100具有第2圖實施例之執行單元與記憶體子系統112,用以執行一無效窺探請求。流程始於步驟模塊502。
於步驟模塊502中,儲存單元124接收一無效窺探請求(invalidating snoop request)224,儲存單元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是否為已修改狀態。若是,流程前進至步驟模塊512,否則,流程前進至步驟模塊514。
於步驟模塊512中,儲存單元124命令匯流排介面單元134執行匯流排操作,用以將修改快取列寫回至系統記憶體。流程前進至步驟模塊514。
於步驟模塊514中,儲存單元124對自己執行一狀態更新操作,並對載入單元122執行一狀態更新操作,每一更新係指定新MESI狀態為無效狀態。流程同時前進至步驟模塊516、518與522。
於步驟模塊516中,針對與窺探位址相關之快取列,載入單元122將無效狀態寫入至載入標籤陣列212對應該快取列之項目。流程結束於步驟模塊516。
於步驟模塊518中,針對與窺探位址相關之快取列,載入單元122清除修改位元陣列216項目對應該快取列之已修改位元。於一實施例中,當資料陣列218項目為無效時,資料快取128並不重置修改位元陣列216之已修改位元,而是等到對應快取列被分配至資料陣列218時重置該已修改位元。流程結束於步驟模塊518。
於步驟模塊522中,針對與窺探位址相關之快取列,儲存單元124將無效狀態寫入至儲存標籤陣列214對應該快取列之項目。流程結束於步驟模塊522。
於第2圖之實施例中,由於儲存單元124管線不像載入單元122管線繁忙,因此窺探詢問操作由儲存單元124管線來處理。然而,於另一實施例中,窺探詢問操作由載入單元122處理,而非儲存單元124,係因載入標籤陣列212亦提供快取列之完整MESI狀態。
於第2圖之實施例(以及第6、9與12圖之實施例)中,載入請求222與收回請求242由載入單元122處理,係因載入單元122可存取資料陣列218之單一讀取埠。處理載入請求222僅需知道載入位址是否命中資料快取128,也就是說,處理載入請求222僅需知道是否有一快取線可表示著載入地址存在於資料快取128中。(若載入位址之索引部份編成索引可指引至載入標籤陣列212之一集合且載入位址之標籤部份可與該集合中的其中一有效標籤配對,則表示載入位址命中資料快取128。)然而,收回操作242(與窺探詢問)需要知道快取列之完整MESI狀態。收回操作242自第2圖實施例之載入標籤陣列212中接收完整MESI狀態。
進一步,最低限度上,儲存操作僅需知道所指定快取列之狀態是否至少為獨佔狀態(亦即,MESI狀態為獨佔狀態或已修改狀態),以便知道是否可立即寫入快取列,或者,儲存操作在進行步驟模塊414時是否需要先取得快取列之獨佔所有權。然而,第4圖實施例包括對決定步驟模塊418之進行最佳化設計,也就是當執行步驟模塊418時,若所指定快取列之狀態已經為已修改狀態,且修改位元陣列216之已修改位元被設定時,則儲存單元124放棄更新載入標籤陣列212與修改位元陣列216,進而達到消耗較少功率之優點。
一般而言,當需要知道快取列之完整MESI狀態時,才需要對修改位元陣列216進行讀取操作。因此,任一功能單元(載入單元122或者儲存單元124)滿足下列條件時,功能單元需對修改位元陣列216進行讀取,其條件是:(1)任一功能單元進行快取寫入時並未更新其標籤陣列212/214,以及(2)任一功能單元進行收回或窺探詢問操作時(或者儲存詢問操作,具有在第4圖及第7圖實施例所包含之最佳化)。
參考第6圖,係顯示依據本發明另一實施例,說明於第1圖之微處理器100中,執行單元與記憶體子系統112之部份方塊圖。第6圖之實施例在許多方面類似於第2圖之實施例,且相同編號之元件為相似的。茲就不同處加以說明。
於第6圖之實施例中,修改位元陣列216具有兩個讀取埠,其中一埠用以將已修改位元234提供至儲存單元124,而另一埠則將已修改位元634提供至載入單元122。除此之外,修改位元陣列216之寫入埠耦接於儲存佇列126,於執行快取寫入請求226時,儲存佇列126藉以更新修改位元陣列216。
於第6圖之實施例中,載入單元122亦包括組合邏輯608,用以從載入標籤陣列212接收部份MESI狀態632,並從修改位元陣列216之第二讀取埠接收修該已修改位元634,並使用如第3a圖之表1或第3b圖之表2其中之一,用以計算完整MESI狀態636。
於第6圖之實施例中,資料陣列218包括耦接於載入單元122之讀取埠,以及耦接於儲存佇列126之寫入埠,用以致能儲存佇列126對資料陣列218執行快取寫入請求226。也就是說,儲存佇列126直接對資料陣列218及修改位元陣列216執行快取寫入請求226,而非將其傳送至第2圖之載入單元122。因此,載入標籤陣列212與儲存標籤陣列214兩者都不會因為處理快取寫入請求226而被更新為已修改新狀態。更確切地說,處理快取寫入請求226僅設定修改位元陣列216之對應已修改位元。
參考第7圖,係顯示依據本發明第1圖之微處理器100之操作流程圖,其中,微處理器100具有第6圖實施例之執行單元與記憶體子系統112,用以執行一儲存指令。第7圖之流程圖與第4圖之流程圖相似。然而,第7圖之步驟模塊716取代第4圖之步驟模塊416,其中,儲存佇列126執行直接針對資料陣列218之快取寫入請求226,進而寫入儲存資料。除此之外,因為資料陣列218於步驟模塊716中直接被寫入,第7圖之流程圖並無包括第4圖之步驟模塊426。進一步,因為儲存佇列126並沒有將新的修改快取列狀態更新至儲存標籤陣列212(亦沒有更新至儲存標籤陣列214),則於第7圖之流程圖中,並無包括第4圖之步驟模塊422。最後,假如於決定步驟模塊418所判斷完整MESI狀態並非為已修改狀態,則第7圖之步驟模塊724取代第4圖之步驟模塊424,使得儲存佇列126執行直接針對修改位元陣列216之快取寫入請求226,用以設定對應已修改位元。
依據本發明第1圖實施例之微處理器100之操作,與第5圖所示之操作相似,其中,微處理器100具有第6圖實施例之執行單元與記憶體子系統112,用以執行一無效窺探請求。
參考第8圖,係顯示依據本發明第1圖之微處理器100之操作流程圖,其中,微處理器100具有第6圖實施例之執行單元與記憶體子系統112,用以執行一收回請求242。流程開始於步驟模塊802。
於步驟模塊802中,載入單元122接收一收回請求242後,載入單元122針對與收回位址相關之快取列,執行一收回操作。流程前進至步驟模塊804。
於步驟模塊804中,針對與收回位址相關之快取列,收回操作從載入標籤陣列212讀取部份MESI狀態632,並從第6圖之修改位元陣列216讀取已修改位元634。流程前進至步驟模塊806。
於步驟模塊806中,載入單元122之組合邏輯208根據第3a圖之表1或第3b之表2,用以計算快取列之完整MESI狀態636。流程前進至步驟模塊808。
於步驟模塊808中,載入單元122從資料陣列218讀取收回位址所指定之快取列。流程前進至步驟模塊812。
於步驟模塊812中,載入單元122將步驟模塊806所計算之完整MESI狀態與步驟模塊808所讀取之快取列提供至第1圖之二階快取132,用以執行收回操作。流程結束於步驟模塊812。
參考第9圖,係顯示依據本發明另一實施例,說明於第1圖之微處理器100中,執行單元與記憶體子系統112之部份方塊圖。第9圖之實施例在許多方面類似於第6圖之實施例,且相同編號之元件為相似的。茲就不同處加以說明。
於第9圖之實施例中,修改位元陣列216包括單一讀取埠,而非如第6圖之兩個讀取埠。因此,儲存單元124並不包括組合邏輯208,而且不會產生完整MESI狀態236。相反地,儲存標籤陣列214將部份MESI狀態232直接提供至儲存佇列126。所以,第9圖之資料快取128所執行之儲存請求228與先前實施例不同,其內容詳述於下文第10圖相關之說明。最後,載入單元122接收窺探請求224,而非儲存單元124。其結果是,第9圖之資料快取128所執行之窺探請求224亦有不同,將於下文第11圖相關之說明。於第9圖之實施例中,修改位元陣列216毋需包括將已修改位元提供至儲存單元124之第二讀取埠,這是因為窺探詢問係由載入單元122處理,且於第10圖中儲存單元124並沒有執行如第4圖與第7圖中決定步驟模塊418所進行的最佳化,也因此並不需要知道快取列之完整MESI狀態,僅需知道MESI狀態是否至少為獨佔狀態(第10圖之步驟模塊1012),其可由儲存標籤陣列214之部份MESI狀態232來加以判斷。
參考第10圖,係顯示依據本發明第1圖之微處理器100之操作流程圖,其中,微處理器100具有第9圖實施例之執行單元與記憶體子系統112,用以執行一儲存指令。第10圖之流程圖與第7圖之流程圖相似。然而,第10圖之步驟模塊1004取代第7圖之步驟模塊404,這僅僅將部份MESI狀態232從儲存標籤陣列214被讀取,而非如第7圖步驟模塊404所示,需從修改位元陣列216讀取已修改位元234。除此之外,第10圖並不存在步驟模塊406,且流程直接由步驟模塊1004前進至步驟模塊408。更進一步,第10圖之決定步驟模塊1012取代第7圖之步驟模塊412,這使得儲存佇列126將判斷在步驟模塊1004所接收之部份MESI狀態是否至少為獨佔狀態(而非如第7圖之決定步驟模塊412判斷於其步驟模塊406中所計算之完整MESI狀態236是否為獨佔狀態或已修改狀態)。最後,由於儲存佇列126不需要存取快取列之完整MESI狀態,因此,第10圖之流程圖不包括第7圖之決定步驟模塊418,不用進行第7圖之決定步驟模塊418之最佳化;相反地,流程直接由步驟模塊716前進至步驟模塊724。
參考第11圖,係顯示依據本發明第1圖之微處理器100之操作流程圖,其中,微處理器100具有第9圖實施例之執行單元與記憶體子系統112,用以執行一無效窺探請求。流程開始於步驟模塊1102。
於步驟模塊1102中,載入單元122接收一無效窺探請求224。作為回應,針對與窺探位址相關之快取列,載入單元122對自己執行一窺探詢問操作。流程前進至步驟模塊1104。
於步驟模塊1104中,針對與窺探位址相關之快取列,窺探詢問操作從載入標籤陣列212讀取部份窺探請求632,並從第9圖之修改位元陣列216讀取已修改位元634。流程前進至步驟模塊1106。
於步驟模塊1106中,載入單元122之組合邏輯608根據第3a圖之表1或第3b圖之表2其中之一,用以計算快取列之完整MESI狀態636。流程前進至步驟模塊1108。
於決定步驟模塊1108中,載入單元112判斷在步驟模塊1106所計算之完整MESI狀態636是否為已修改狀態。若是,流程前進至步驟模塊1112;否則,流程前進至步驟模塊1114。
於步驟模塊1112中,載入單元122命令匯流排介面單元134執行匯流排操作,將該快取列寫回至系統記憶體。流程前進至步驟模塊1114。
於步驟模塊1114中,載入單元122對自己執行一狀態更新操作,以及對儲存單元124執行一狀態更新操作,其中,每一狀態更新操作指定新MESI狀態為無效狀態。流程同時前進至步驟模塊1116與步驟模塊1122。
於步驟模塊1116中,針對與窺探位址相關之快取列,載入單元122將無效狀態寫入至載入標籤陣列212對應之項目。流程結束於步驟模塊1116。
於步驟模塊1122中,針對與窺探位址相關之快取列,儲存單元124將無效狀態寫入儲存標籤陣列214對應之項目。流程結束於步驟模塊1122。
值得注意的是,於第9圖之實施例中,當對應快取列被分配時,則重置修改陣列216之已修改位元,而非如第5圖之步驟模塊518在收到窺探請求224就進行重置。
參考第12圖,係顯示依據本發明另一實施例,說明於第1圖之微處理器100中,執行單元與記憶體子系統112之部份方塊圖。第12圖之實施例在許多方面類似於第9圖之實施例,且相同編號之元件為相似的。茲就不同處加以說明。
於第12圖之實施例中,儲存佇列126對儲存單元124執行快取寫入請求226(而非對第2圖之載入單元122,或者直接對第6圖與第9圖之資料陣列218與修改位元陣列216)。資料陣列218之寫入埠與修改位元陣列216之寫入埠均耦接於儲存單元124,使得儲存單元124(而非第9圖之資料佇列126)將快取列寫入至資料陣列218,並更新修改位元陣列216之已修改位元,用以回應於資料佇列126之快取寫入請求226。儲存單元124將快取列之完整MESI狀態更新至儲存標籤陣列214,使得儲存單元124執行最佳化,其中,上述之最佳化,與第4圖與第7圖之決定步驟模塊418中,載入單元122與儲存佇列126所分別執行之最佳化類似,而儲存標籤陣列214將完整MESI狀態1232提供至儲存佇列126。
此外,儲存單元124接收窺探請求224,而非載入單元122。因此,第12圖之儲存單元124執行窺探請求224,此方式類似於第5圖相關之說明,除了儲存單元124係直接由儲存標籤陣列214接收完整MESI狀態1232(而非由第2圖之組合邏輯208)。然而,因為載入單元122亦提供完整MESI狀態636,於另一實施例中,載入單元122負責處理窺探請求224,流程如上述第11圖相關之說明。
最後,收回請求242由載入單元122處理,類似於上述第8圖之處理方式。
參考第13圖,係顯示依據本發明另一實施例,說明於第1圖之微處理器100中,執行單元與記憶體子系統112之部分方塊圖。第13圖之實施例許多方面類似於第6圖之實施例,且相似數字之元件為相似的。茲將不同處說明如下。
第13圖之實施例包括單一雙埠標籤陣列1314,亦稱為統一標籤陣列1314,而非載入標籤陣列212與儲存標籤陣列214。也就是說,統一標籤陣列1314具有耦接於載入單元122之第一讀取/寫入埠,以及耦接於儲存單元124之第二讀取/寫入埠。第一讀取/寫入埠將部份MESI狀態1232提供至載入單元122之組合邏輯608,而第二讀取/寫入埠將部份MESI狀態232提供至儲存單元124之組合邏輯208。於第13之實施例中,當儲存佇列126執行快取寫入請求226時,資料快取128並不將統一標籤陣列1314以已修改新狀態進行更新,此一優點在於,將減少統一標籤陣列1314之壅塞狀況。不過,透過同時存取統一標籤陣列1314與修改位元陣列216,儲存單元124可計算快取列之完整MESI狀態236,而載入單元122可計算快取列之完整MESI狀態1332。
類似於上述第9圖之實施例,於第13圖之另一實施例中,載入單元122處理窺探請求224,且儲存單元124不執行決定步驟模塊418之最佳化,這使得儲存單元124不用產生完整MESI狀態236,而修改位元陣列216可具有耦接於載入單元122之單一讀取埠,而非兩個讀取埠。
於第13圖之實施例中,儘管並無享有獨立載入標籤陣列212與儲存標籤陣列214之實施例所帶來之平面規劃及電源管理之好處,第13圖之實施例仍可實現修改位元陣列216之優勢,意即,減少標籤陣列之壅塞。進一步,第13圖之實施例有利於空間,其所具有之高效率雙埠標籤陣列設計,遠小於兩個單一埠標籤陣列所消耗之總空間
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾。舉例來說,軟體可以致能此處所述之裝置及方法,如致能裝置及方法之功能、製造、模型、模擬、性質及/或測試。例如,經由使用一般之程式語言(例如C或C++)、包括Verilog HDL、VHDL等之硬體描述語言(hardware description language,HDL)、或其它可使用之程式來完成。此類軟體可被安裝於任何已知電腦可用之媒體中,例如半導體、磁碟或光碟(像是CD-ROM、DVD-ROM等)。此處所述裝置及方法之實施例可被包含於一半導體智慧財產核心(semiconductor intellectual property core)中,如微處理器的核心(以HDL實現),之後再以積體電路之製造轉換成硬體。另外,此處所述之裝置及方法可由硬體及軟體來組合實現。故本發明不應侷限於此處所述之具體實施例,而應以其後所附之申請專利保護範圍及其相同範圍為準。具體地,本發明可於通用型電腦所使用之微處理器裝置中實現。最後,所屬技術領域中具有通常知識者應能在不脫離本發明範疇的前提下,以所附之申請專利保護範圍所揭露之概念及特定實施例為基礎,設計或修改與本發明執行相同功能之其他結構。
100...微處理器
102...指令快取
104...指令轉譯器
106...暫存器別名表
108...指令排序器
112...執行單元與記憶體子系統
116...重排序緩衝器(ROB)與結構化暫存器
122...載入單元
124...儲存單元
126...儲存佇列
128...資料快取
132...二階(L2)快取
134...匯流排介面單元(BIU)
208、608組合邏輯
212...載入標籤陣列
214...儲存標籤陣列
216...修改位元陣列
218...資料陣列
222...載入請求
224...窺探請求
226...快取寫入請求
228...儲存請求
232、632、1332...部份MESI狀態
234、634...已修改位元
236、636、1232...完整MESI狀態
及
242...收回
第1圖係顯示依據本發明之微處理器方塊圖。
第2圖係顯示依據本發明第1圖微處理器之執行單元與記憶體子系統部份方塊圖。
第3a圖係顯示依據本發明第1圖之資料快取所使用之表格示意圖,透過部分MESI快取列狀態與一已修改位元,用以計算出完整MESI快取列狀態。
第3b圖係顯示依據本發明另一實施例,說明第1圖之資料快取所使用之表格示意圖,透過部分MESI快取列狀態與一已修改位元,用以計算出完整MESI快取列狀態。
第4圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第2圖實施例之執行單元與記憶體子系統,用以執行一儲存指令。
第5圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第2圖實施例之執行單元與記憶體子系統,用以執行一無效窺探請求。
第6圖係顯示依據本發明另一實施例,說明於第1圖之微處理器中,執行單元與記憶體子系統之部份方塊圖。
第7圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第6圖實施例之執行單元與記憶體子系統,用以執行一儲存指令。
第8圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第6圖實施例之執行單元與記憶體子系統,用以執行一收回請求。
第9圖係顯示依據本發明另一實施例,說明於第1圖之微處理器中,執行單元與記憶體子系統之部份方塊圖。
第10圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第9圖實施例之執行單元與記憶體子系統,用以執行一儲存指令。
第11圖係顯示依據本發明第1圖之微處理器之操作流程圖,其中,微處理器具有第9圖實施例之執行單元與記憶體子系統,用以執行一無效窺探請求。
第12圖係顯示依據本發明另一實施例,說明於第1圖之微處理器中,執行單元與記憶體子系統之部份方塊圖。
第13圖係顯示依據本發明另一實施例,說明於第1圖之微處理器100中,執行單元與記憶體子系統112之部分方塊圖。
100...微處理器
102...指令快取
104...指令轉譯器
106...暫存器別名表
108...指令排序器
112...執行單元與記憶體子系統
116...重排序緩衝器(ROB)與結構化暫存器
122...載入單元
124...儲存單元
126...儲存佇列
128...資料快取
132...二階(L2)快取
及
134...匯流排介面單元(BIU)
Claims (33)
- 一種微處理器,包括:第一與第二功能單元,各自耦接及存取一資料快取;及該資料快取,包括:一資料陣列,具有一既定架構,包括:一寫入埠,該第一功能單元透過該寫入埠將資料寫入至該資料陣列之一快取列;一修改位元陣列,具有該資料陣列之該對應既定架構,包括:一寫入埠,該第一功能單元透過該寫入埠設定該修改位元陣列之一已修改位元,用以指示對應於該資料陣列中由該第一功能單元所寫入之該對應快取列已被修改;及一讀取埠,該第二功能單元透過該讀取埠從該修改位元陣列讀取該已修改位元,用以判斷對應於該資料陣列之該快取列是否已被修改;及一標籤陣列,具有該資料陣列之該對應既定架構,包括:一讀取埠,該第二功能單元透過該讀取埠讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改,其中,該標籤陣列不包含有一埠以提供該第 一功能單元藉由該埠更新該快取列之該部份狀態。
- 如申請專利範圍第1項所述之微處理器,其中,該標籤陣列被配置用以儲存對應於該資料陣列之該快取列之一位址標籤,其中,該修改位元陣列沒有儲存位址標籤。
- 如申請專利範圍第1項所述之微處理器,更包括:一第三功能單元,耦接及存取該資料快取,其中,該修改位元陣列更包括:一第二讀取埠,該第三功能單元透過該第二讀取埠,從該修改位元陣列讀取該已修改位元,用以判斷該快取列是否已被修改。
- 如申請專利範圍第3項所述之微處理器,其中,該資料快取更包括:一第二標籤陣列,具有該資料陣列之該對應既定架構,包括:一讀取埠,該第三功能單元透過該讀取埠讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改,其中,該第二標籤陣列中不包含有一埠提供該第 一功能單元藉以更新該對應快取列之該部份狀態。
- 如申請專利範圍第3項所述之微處理器,其中,該標籤陣列更包括:一第二讀取埠,該第三功能單元透過該第二讀取埠讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改。
- 如申請專利範圍第1項所述之微處理器,其中,該第一功能單元包括一資料佇列單元,係被配置來執行一快取寫入操作,用以將該資料寫入至該資料陣列之該快取列,並用以設定該修改位元陣列之該已修改位元。
- 如申請專利範圍第1項所述之微處理器,其中,該第二功能單元係被配置從該資料陣列讀取該對應快取列,用以執行一載入指令。
- 如申請專利範圍第1項所述之微處理器,其中,該第二功能單元係被配置從該資料陣列讀取該對應快取列,用以執行一收回請求,以收回該資料快取之該對應快取列。
- 如申請專利範圍第1項所述之微處理器,其中,該第二功能單元係被配置從該修改位元陣列讀取該 已修改位元,並從該標籤陣列讀取該部份狀態,用以計算該對應快取列之一完整狀態,以執行指向該對應快取列之一窺探請求。
- 如申請專利範圍第1項所述之微處理器,其中,該第二功能單元係配置從該修改位元陣列讀取該已修改位元,並從該標籤陣列讀取該部份狀態,用以計算該快取列之一完整狀態,以執行一請求來收回該快取列。
- 如申請專利範圍第1項所述之微處理器,其中,該第二功能單元係被配置從該修改位元陣列讀取該已修改位元且從該標籤陣列讀取該部份狀態,用以計算該快取列之一完整狀態,以執行一儲存指令。
- 如申請專利範圍第11項所述之微處理器,其中,若由該第二功能單元所計算之完整狀態判斷該快取列已被修改,該第一功能單元係被配置用以避免設定該對應快取列之該修改位元陣列之該已修改位元。
- 如申請專利範圍第1項所述之微處理器,其中,該資料快取更包括:一第二標籤陣列,具有該資料陣列之該對應既定架構,包括:一寫入埠,該第一功能單元係透過該寫入埠寫入對應該資料陣列之該快取列之一完整狀態,用以指示 由該第一功能單元所寫入之該快取列已被修改。
- 如申請專利範圍第13項所述之微處理器,其中,該第二標籤陣列亦包括一讀取埠,該第一功能單元透過該讀取埠讀取對應該資料陣列之該快取列之該完整狀態。
- 如申請專利範圍第1項所述之微處理器,其中,當該資料快取將該快取列分配至該資料快取時,該第一功能單元係被配置來重置該修改位元陣列之該已修改位元,用以指示該資料陣列之該對應快取列未被修改。
- 如申請專利範圍第1項所述之微處理器,其中,該標籤陣列更包括:一寫入埠,該第二功能單元透過該寫入埠寫入對應該資料陣列之該快取列之該部份狀態,其中,當該第二功能單元寫入該快取列之該部份狀態,使該快取列無效時,該第一功能單元係被配置用以重置該修改位元陣列之該對應已修改位元。
- 一種微處理器之資料快取存取方法,用於第一與第二功能單元,其中,該資料快取包括具有一既定架構之一資料陣列、與具有該對應既定架構之一標籤陣列,該方法包括:透過該資料陣列之一寫入埠,將資料寫入至該資料陣 列之一快取列,其中,該資料寫入由該第一功能單元執行;設定該資料快取之一修改位元陣列之一已修改位元,用以指示於該資料陣列中由該第一功能單元所寫入之該對應快取列已被修改,其中,該修改位元陣列具有該資料陣列之該對應既定架構,其中,該已修改位元之設定由該第一功能單元透過該修改位元陣列之一寫入埠執行;讀取該修改位元陣列之該已修改位元,用以判斷該快取列是否已被修改,其中,該已修改位元之讀取由該第二功能單位透過該修改位元陣列之一讀取埠執行;及讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改,其中,該部份狀態之讀取由該第二功能單元透過該標籤陣列之一讀取埠執行,其中,該標籤陣列不包含有一埠以提供該第一功能單元藉由該埠更新該快取列之該部份狀態。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,其中,該標籤陣列被配置用以儲存該資料陣列之該對應快取列之一位址標籤,其中,該修改位元陣列沒有儲存位址標籤。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,其中,該微處理器更包括一第三功能單元,用以存取該資料快取,該方法進一步包括:第二次讀取該修改位元陣列之該已修改位元,用以判 斷該快取列是否已被修改,其中,該已修改位元之第二次讀取由該第三功能單元透過該修改位元陣列之一第二讀取埠執行。
- 如申請專利範圍第19項所述之微處理器之資料快取存取方法,其中,該資料快取更包括一第二標籤陣列,其中,該第二標籤陣列具有該資料陣列之該對應既定架構,該方法進一步包括:第二次讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改,其中,該快取列之該部份狀態之第二次讀取由該第三功能單元透過該第二標籤陣列之一讀取埠執行,其中,該第一功能單元更新該對應快取列之該部份狀態所使用之一埠係不包含於該第二標籤陣列中。
- 如申請專利範圍第19項所述之微處理器之資料快取存取方法,進一步包括:第二次讀取對應該資料陣列之該快取列之一部份狀態,其中,當該部份狀態與該已修改位元結合時,可正確指示該快取列是否已被修改,其中,該快取列之該部份狀態之第二次讀取由該第三功能單元透過該標籤陣列之一第二讀取埠執行。
- 如申請專利範圍第17項所述之微處理器之資 料快取存取方法,其中,該第一功能單元包括一資料佇列單元,係被配置來執行一快取寫入操作,用以執行該資料陣列之該快取列之該資料寫入,以及該修改位元陣列之該已修改位元之設定。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:讀取該資料陣列之該對應快取列,用以執行一載入指令,其中,該對應快取列之讀取由該第二功能單元執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:從該資料陣列中讀取該快取列,用以執行一請求以收回該資料陣列之該快取列,其中,該讀取該快取列由該第二功能單元執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:從該修改位元陣列讀取該已修改位元,並從該標籤陣列讀取該部份狀態,用以計算該快取列之一完整狀態,以執行指向該快取列之一窺探請求,其中,該快取列之該完整狀態之計算由該第二功能單元執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:從該修改位元陣列讀取該已修改位元,並從該標籤陣 列讀取該部份狀態,用以計算該快取列之一完整狀態,以執行一請求來收回該快取列,其中,該快取列之該完整狀態之計算由該第二功能單元執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:從該修改位元陣列讀取該已修改位元,並從該標籤陣列讀取該部份狀態,用以計算該快取列之一完整狀態,以執行一儲存指令,其中,該快取列之該完整狀態之計算由該第二功能單元執行。
- 如申請專利範圍第27項所述之微處理器之資料快取存取方法,進一步包括:若由該第二功能單元所計算之完整狀態判斷該快取列已被修改,避免設定對應該快取列之該修改位元陣列之該已修改位元。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,其中,該資料快取更包括一第二標籤陣列,具有該資料陣列之該對應既定架構,該方法進一步包括:寫入該資料陣列之該快取列之一完整狀態,用以指示由該第一功能單元所寫入之該快取列已被修改,其中,該快取列之該完整狀態之寫入由該第一功能單元透過該第二標籤陣列之一寫入埠執行。
- 如申請專利範圍第29項所述之微處理器之資料快取存取方法,進一步包括:讀取對應該資料陣列中該快取列之該完整狀態,其中,該快取列之該完整狀態之讀取由該第一功能單元透過該第二標籤陣列之一讀取埠執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:將該快取列分配至該資料快取;及重置該修改位元陣列之該已修改位元,用以指示該資料陣列之該快取列未被修改,以回應於該快取列之分配,其中,該已修改位元之重置由該第一功能單元執行。
- 如申請專利範圍第17項所述之微處理器之資料快取存取方法,進一步包括:寫入對應該資料陣列之該快取列之該部份狀態,用以使該快取列無效,其中,該快取列之該部份狀態之寫入用以使該快取列無效由該第二功能單元透過該標籤陣列之一寫入埠執行;及重置對應該修改位元陣列之該已修改位元,其中,該已修改位元之重置由該第一功能單元執行。
- 一種電腦程式產品,用於一電腦裝置,該電腦程式產品包括:一電腦可使用儲存媒體,包括該儲存媒體內建之電腦 可讀取程式碼,用以指定微處理器,該電腦可讀取程式碼包括:第一程式碼,用以指定第一與第二功能單元,各自耦接於一資料快取及被配置用以存取該資料快取;及第二程式碼,用以指定該資料快取,該資料快取包括:一資料陣列,具有一既定架構,包括:一寫入埠,該第一功能單元透過該寫入埠將資料寫入該資料陣列之一快取列;一修改位元陣列,具有該資料陣列之該對應既定架構,包括:一寫入埠,該第一功能單元透過該寫入埠設定該修改位元陣列之一已修改位元,用以指示於該資料陣列中由該第一功能單元所寫入之該對應快取列已被修改;及一讀取埠,該第二功能單元透過該讀取埠讀取該修改位元陣列之該已修改位元,用以判斷該快取列是否已被修改;及一標籤陣列,具有該資料陣列之該對應既定架構,包括:一讀取埠,該第二功能單元透過該讀取埠從該資料陣列讀取該對應快取列之一部份狀態,其中,當該部份狀態與該已修改位元 結合時,可正確指示該快取列是否已被修改,其中,該標籤陣列不包含有一埠以提供該第一功能單元藉由該埠更新該快取列之該部份狀態。
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 TW201042451A (en) | 2010-12-01 |
TWI417725B true 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 |
Citations (6)
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 |
US20020056022A1 (en) * | 1998-10-01 | 2002-05-09 | Monolithic System Technology, Inc. | Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same |
US20060190676A1 (en) * | 2005-02-23 | 2006-08-24 | United Memories, Inc. Colorado Springs | 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 |
US7236421B1 (en) * | 2001-04-05 | 2007-06-26 | T-Ram Semiconductor, Inc. | Read-modify-write memory using read-or-write banks |
TW200837563A (en) * | 2006-12-05 | 2008-09-16 | Ericsson Telefon Ab L M | Methods and devices for cache enhancing |
TW200915179A (en) * | 2007-08-15 | 2009-04-01 | Micron Technology Inc | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
-
2009
- 2009-05-27 US US12/472,766 patent/US8108624B2/en active Active
-
2010
- 2010-05-20 TW TW099116092A patent/TWI417725B/zh active
- 2010-05-20 CN CN2010101798078A patent/CN101833518B/zh active Active
Patent Citations (6)
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 |
US20020056022A1 (en) * | 1998-10-01 | 2002-05-09 | Monolithic System Technology, Inc. | Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same |
US7236421B1 (en) * | 2001-04-05 | 2007-06-26 | T-Ram Semiconductor, Inc. | Read-modify-write memory using read-or-write banks |
US20060190676A1 (en) * | 2005-02-23 | 2006-08-24 | United Memories, Inc. Colorado Springs | 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 |
TW200837563A (en) * | 2006-12-05 | 2008-09-16 | Ericsson Telefon Ab L M | Methods and devices for cache enhancing |
TW200915179A (en) * | 2007-08-15 | 2009-04-01 | Micron Technology Inc | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same |
Also Published As
Publication number | Publication date |
---|---|
US20100306478A1 (en) | 2010-12-02 |
CN101833518B (zh) | 2011-12-07 |
US8108624B2 (en) | 2012-01-31 |
TW201042451A (en) | 2010-12-01 |
CN101833518A (zh) | 2010-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US9268708B2 (en) | Level one data cache line lock and enhanced snoop protocol during cache victims and writebacks to maintain level one data cache and level two cache coherence | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US9372808B2 (en) | Deadlock-avoiding coherent system on chip interconnect | |
TWI522802B (zh) | 確保微處理器之快取記憶體層級之資料一致性的裝置與方法 | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
US20060179229A1 (en) | L2 cache controller with slice directory and unified cache structure | |
WO2016042353A1 (en) | Cache management request fusing | |
US20170185515A1 (en) | Cpu remote snoop filtering mechanism for field programmable gate array | |
US10108548B2 (en) | Processors and methods for cache sparing stores | |
KR20170120635A (ko) | 캐시 메인터넌스 명령 | |
US20130346683A1 (en) | Cache Sector Dirty Bits | |
TWI407306B (zh) | 快取記憶體系統及其存取方法與電腦程式產品 | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
TWI723069B (zh) | 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法 | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
TWI417725B (zh) | 微處理器、微處理器之資料快取存取方法與電腦程式產品 | |
TWI782754B (zh) | 微處理器和在微處理器中實現的方法 | |
US20230099256A1 (en) | Storing an indication of a specific data pattern in spare directory entries |