專利名稱::微處理器及微處理器的數(shù)據(jù)快取存取方法
技術(shù)領(lǐng)域:
:本發(fā)明有關(guān)于微處理器內(nèi)的快取存儲器,特別是有關(guān)于其快取列的一致性狀態(tài)結(jié)構(gòu)。
背景技術(shù):
:現(xiàn)今的微處理器包含快取存儲器(cachememory),用來減少存儲器存取指令的延遲。快取存儲器通常包括數(shù)據(jù)陣列以及標簽陣列(tagarray);數(shù)據(jù)陣列為用以儲存實際快取列(cacheline)數(shù)據(jù)的數(shù)據(jù)陣列,而標簽陣列,用以儲存與數(shù)據(jù)陣列內(nèi)的快取列相關(guān)的地址標簽。標簽陣列所儲存的每一項目(entry)也一并記錄著快取列的狀態(tài)。此外,快取列狀態(tài)用來指示數(shù)據(jù)陣列內(nèi)的對應(yīng)快取列是否有效,以及該快取列自被分配后是否已被修改過。另外,現(xiàn)今的微處理器,特別是超純量(superscalar)處理器,包括多個功能單元可對快取存儲器進行存取,例如不同的載入單元與儲存單元??烊〈鎯ζ鞯臄?shù)據(jù)陣列與標簽陣列通常具有多重端口,使得每一功能單元可以同時存取數(shù)據(jù)陣列與標簽陣列,以將效能最佳化。然而,具有多重端口的陣列將大幅地增加面積與功率消耗。再者,在從事微處理器的平面規(guī)劃(floor-planning)時,因為陣列面積通常已相對較大,若更大時將會更難以將其納入。針對這一問題的解決方式,即是復制標簽陣列,使得每一功能單元擁有自己的標簽陣列,進而使得標簽陣列變成單一端口。雖然此解決方式需要集合微處理器上更多的空間,但因為每一標簽陣列面積較小,便減輕了平面規(guī)劃的負擔,且由于每一標簽陣列可進行單獨的電源管理,從而額外地有利于電源管理。然而,使用此一解決方式的問題在于,當快取列的標簽及/或狀態(tài)需要更新時,必須存取所有標簽陣列,用以更新每一個標簽陣列所相應(yīng)的快取列的標簽及/或狀態(tài)。這將消耗許多標簽陣列的存取頻寬,且進行更新時,所有標簽陣列需要消耗功率。因此,需要一種快取存儲器結(jié)構(gòu),用以解決上述的問題。
發(fā)明內(nèi)容本發(fā)明提供一種微處理器。該微處理器包括第一功能單元與第二功能單元,每一功能單元均耦接至一數(shù)據(jù)快取及被配置用以存取該數(shù)據(jù)快取。該數(shù)據(jù)快取包括一數(shù)據(jù)陣列,該數(shù)據(jù)陣列具有一既定結(jié)構(gòu)。該數(shù)據(jù)陣列包括一寫入端口,該第一功能單元通過該數(shù)據(jù)陣列的寫入端口將數(shù)據(jù)寫入至該數(shù)據(jù)陣列的一快取列。該數(shù)據(jù)快取包括一修改位陣列,該修改位陣列具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu)。該修改位陣列包括一寫入端口,該第一功能單元通過該修改位陣列的寫入端口設(shè)定該修改位陣列的一已修改位,以指示于該數(shù)據(jù)陣列中,由該第一功能單元所寫入的該快取列已被修改。該修改位陣列還包括一讀取端口,該第二功能單元通過該修改位陣列的讀取端口從該修改位陣列讀取該已修改位,以判斷該快取列是否已被修改。該數(shù)據(jù)快取還包括一標簽陣列,該標簽陣列具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu)。該標簽陣列包括一讀取端口,該第二功能單元通過該標簽陣列的讀取端口從該數(shù)據(jù)陣列中讀取該快取列的一部分狀態(tài)。該部分狀態(tài)不指示該快取列是否已被修改。該標簽陣列中不包含提供該第一功能單元更新該快取列的該部分狀態(tài)的一端口。本發(fā)明還提供一種微處理器的數(shù)據(jù)快取存取方法,用于第一功能單元與第二功能單元,其中,該數(shù)據(jù)快取包括具有一既定結(jié)構(gòu)的一數(shù)據(jù)陣列、與具有該既定結(jié)構(gòu)的一標簽陣列。該方法包括該第一功能單元通過該數(shù)據(jù)陣列的一寫入端口,將數(shù)據(jù)寫入至該數(shù)據(jù)陣列的一快取列。該方法還包括設(shè)定該數(shù)據(jù)快取的一修改位陣列的一已修改位,以指示于該數(shù)據(jù)陣列中,由該第一功能單元所寫入的該快取列已被修改,其中,該修改位陣列具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu)。該第一功能單元通過該修改位陣列的一寫入端口設(shè)定該已修改位。該方法還包括該第二功能方塊通過該修改位陣列的一讀取端口,讀取該修改位陣列的該已修改位,以判斷該快取列是否已被修改。該方法還包括該第二功能單元通過該標簽陣列的一讀取端口,讀取該數(shù)據(jù)陣列的該快取列的一部分狀態(tài)。該部分狀態(tài)不指示該快取列是否已被修改。該標簽陣列中不包含提供該第一功能單元更新該快取列的該部分狀態(tài)的一端口。本發(fā)明還提供一計算機程序產(chǎn)品,用于一計算機裝置,該計算機程序產(chǎn)品包括一計算機可使用的儲存介質(zhì),包括該儲存介質(zhì)內(nèi)建的計算機可讀取程序代碼,用以指定微處理器。該計算機可讀取程序代碼包括第一程序代碼,用以指定第一功能單元與第二功能單元,各自耦接于一數(shù)據(jù)快取及被配置用以存取該數(shù)據(jù)快取。該計算機可讀取程序代碼還包括第二程序代碼,用以指定該數(shù)據(jù)快取。該數(shù)據(jù)快取包括一數(shù)據(jù)陣列,具有一既定結(jié)構(gòu)。該數(shù)據(jù)陣列包括一寫入端口,該第一功能單元通過該寫入端口將數(shù)據(jù)寫入該數(shù)據(jù)陣列的一快取列。該數(shù)據(jù)快取包括一修改位陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu)。該修改位陣列包括一寫入端口,該第一功能單元通過該寫入端口設(shè)定該修改位陣列的一已修改位,用以指示于該數(shù)據(jù)陣列中,由該第一功能單元所寫入的該快取列已被修改。該修改位陣列還包括一讀取端口,該第二功能單元通過該讀取端口讀取該修改位陣列的該已修改位,用以判斷該快取列是否已被修改。該數(shù)據(jù)快取還包括一標簽陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu)。該標簽陣列包括一讀取端口,該第二功能單元通過該讀取端口從該數(shù)據(jù)陣列讀取該快取列的一部分狀態(tài)。該部分狀態(tài)不指示該快取列是否已被修改。該標簽陣列中不包含提供該第一功能單元更新該快取列的該部分狀態(tài)的一端口。本發(fā)明的優(yōu)點在于快取列的修改需要對應(yīng)地更新其狀態(tài),修改位陣列的存在減輕了存取標簽陣列來更新快取列狀態(tài)的需求,從而減少標簽陣列的存取量。除此之外,于其它具有多重標簽陣列的實施例中,修改位陣列的存在簡化了微處理器內(nèi)標簽陣列的平面規(guī)劃,使其具有較佳電源管理,且沒有上述額外頻寬消耗的問題。圖1顯示依據(jù)本發(fā)明的微處理器方塊圖。圖2顯示依據(jù)本發(fā)明圖1微處理器的執(zhí)行單元與存儲器子系統(tǒng)部分方塊圖。圖3a顯示依據(jù)本發(fā)明圖1的數(shù)據(jù)快取所使用的表格示意圖,通過部分MESI快取列狀態(tài)與一修改位,用以計算出完整MESI快取列狀態(tài)。圖3b顯示依據(jù)本發(fā)明另一實施例,說明圖1的數(shù)據(jù)快取所使用的表格示意圖,通過部分MESI快取列狀態(tài)與一修改位,用以計算出完整MESI快取列狀態(tài)。圖4顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖2實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一儲存指令。圖5顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖2實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一無效窺探請求。圖6顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器中,執(zhí)行單元與存儲器子系統(tǒng)的部分方塊圖。圖7顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖6實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一儲存指令。圖8顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖6實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一收回請求。圖9顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器中,執(zhí)行單元與存儲器子系統(tǒng)的部分方塊圖。圖10顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖9實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一儲存指令。圖11顯示依據(jù)本發(fā)明圖1的微處理器的操作流程圖,其中,微處理器具有圖9實施例的執(zhí)行單元與存儲器子系統(tǒng),用以執(zhí)行一無效窺探請求。圖12顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器中,執(zhí)行單元與存儲器子系統(tǒng)的部分方塊圖。圖13顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器100中,執(zhí)行單元與存儲器子系統(tǒng)112的部分方塊圖。具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖式,詳細說明如下。參考圖1,顯示依據(jù)本發(fā)明的微處理器100方塊圖。微處理器100包括指令快取(instructioncache)102,用以儲存程序指令。這些程序指令是微處理器100自系統(tǒng)存儲器(未圖示)所取得且由微處理器100執(zhí)行。舉例而言,程序指令包括用以存取存儲器的指令,像是x86M0V、PUSH或POP指令,或者將導致微處理器100存取存儲器的指令,像是若收到轉(zhuǎn)譯查詢緩沖器不命中(translationlookasidebuffer,TLB,missing)信號時執(zhí)行頁面表格查找(pagetablewalk)。微處理器100還包括指令轉(zhuǎn)譯器(instructiontranslator)104,用以由指令快取102接收指令,且將指令(還被稱為宏指令)轉(zhuǎn)譯為一或多個微指令或微操作(micro-operations)。微操作是指微處理器100的執(zhí)行單元與存儲器子系統(tǒng)112實際執(zhí)行的簡化指令。特別地,微指令可包括載入微指令與儲存微指令,或者包括載入指令與儲存指令。載入指令,用以將存儲器某位置的內(nèi)容載入至微處理器100的結(jié)構(gòu)化暫存器(architecturalregister)116中。儲存指令,用以將微處理器100的結(jié)構(gòu)化暫存器116的內(nèi)容儲存至存儲器某位置。于其他的實施例中,載入指令與儲存指令為微處理器100的原生指令集的一部分。微處理器100還包括暫存器別名表(registeraliastable,RAT)106,用以接收來自指令轉(zhuǎn)譯器104的指令。暫存器別名表106依照程序順序接收來自指令轉(zhuǎn)譯器104的轉(zhuǎn)譯指令,以及決定微處理器100內(nèi)的其他未退出指令的每一指令的相依性。暫存器別名表106儲存與微處理器100內(nèi)的每一未退出指令相關(guān)的暫存器重命名信息。暫存器重命名信息包括程序順序,則重排序緩沖器(reorderbuffer,ROB)116借此依照程序順序退出指令。在指令尚未分配至指令排序器108之前,暫存器別名表106為每一指令在重排序緩沖器116配置一筆項目。當指令來源運算自根據(jù)暫存器別名表106所產(chǎn)生的相依性信息判斷為可使用時且當執(zhí)行單元與存儲器子系統(tǒng)112為可使用時,指令排序器108由暫存器別名表106接收指令,并將指令發(fā)送至執(zhí)行單元與存儲器子系統(tǒng)112。于一實施例中,微處理器100為一亂序執(zhí)行微處理器(out-of-orderexecutionmicroprocessor)。重排序緩沖器116耦接于暫存器別名表106、指令排序器108以及執(zhí)行單元與存儲器子系統(tǒng)112。執(zhí)行單元與存儲器子系統(tǒng)112包括數(shù)據(jù)快取128、載入單元122、儲存單元124、儲存隊列(queue)126、二階(level_2,L2)快取132與總線接口單元(businterfaceunit,BIU)134,載入單元122、儲存單元124、儲存隊列126、二階快取132與總線接口單元134均耦接于數(shù)據(jù)快取128。于此,載入單元122、儲存單元124與儲存隊列126,可被稱為功能單元。載入單元122執(zhí)行載入指令,以由數(shù)據(jù)快取128載入數(shù)據(jù)至結(jié)構(gòu)化暫存器116。儲存單元124與儲存隊列126執(zhí)行儲存指令,用以將結(jié)構(gòu)化暫存器116的數(shù)據(jù)儲存于數(shù)據(jù)快取128??偩€接口單元134,作為微處理器100與微處理器100總線的接口,使得微處理器100傳輸數(shù)據(jù)至存儲器與外圍設(shè)備。進一步,總線接口單元134窺探(snoop)微處理器100總線,并且對應(yīng)地執(zhí)行針對數(shù)據(jù)快取128的窺探操作。除此之外,快取列將由數(shù)據(jù)快取128收回至二階快取。于一實施例中,由于數(shù)據(jù)快取128的各種陣列(圖2中的212、214、216及218)需要多個時脈周期來進行存取,因此,載入單元122、儲存單元124及儲存隊列126均為多重階層的管線結(jié)構(gòu)。下文將詳細說明數(shù)據(jù)快取128的結(jié)構(gòu),以及數(shù)據(jù)快取128與載入單元122、儲存單元124、儲存隊列126、二階快取132及總線接口單元134間的互動。于一實施例中,微處理器100的宏結(jié)構(gòu)為IA-32宏結(jié)構(gòu)(還稱為x86結(jié)構(gòu))。如果一個處理器能夠正確地由執(zhí)行大多數(shù)被設(shè)計用來于IA-32微處理器上執(zhí)行的應(yīng)用程序,則該微處理器被視為具有IA-32宏結(jié)構(gòu)。而一個應(yīng)用程序正確地被執(zhí)行是指能得到該應(yīng)用程序所預期的結(jié)果。然而,其他實施例中,微處理器的宏結(jié)構(gòu)可有別于x86宏結(jié)構(gòu),不過仍包括數(shù)據(jù)快取128及修改位陣列216(于圖2中),用以實現(xiàn)其優(yōu)點。參考圖2,顯示依據(jù)本發(fā)明圖1微處理器100的執(zhí)行單元與存儲器子系統(tǒng)112部分方塊圖。如圖2所示,顯示圖1的執(zhí)行單元與存儲器子系統(tǒng)112的載入單元122、儲存單元124與儲存隊列126。圖1所示的數(shù)據(jù)快取128包含圖2中的元件載入標簽陣列212、儲存標簽陣列214、修改位陣列216與數(shù)據(jù)陣列218。于圖2的實施例中,載入標簽陣列212包括耦接于載入單元122的單一讀取/寫入端口,而載入標簽陣列212不包含另一讀取/寫入端口連接至儲存單元124,供儲存單元124更新載入標簽陣列212中的項目;數(shù)據(jù)陣列218包括耦接于載入單元122的單一讀取/寫入端口;儲存標簽陣列214包括耦接于儲存單元124的單一讀取/寫入端口,而儲存標簽陣列214不包含另一讀取/寫入端口連接至載入單元122,以供載入單元122更新儲存標簽陣列214中的項目;以及修改位陣列216包括耦接于載入單元122的寫入端口及耦接于儲存單元124的讀取端口。于一實施例中,修改位陣列216為直接寫入(write-through)陣列,也就是說,于一既定時脈周期中,當儲存單元124讀取修改位陣列216的位置與載入單元122寫入修改位陣列216的位置相同時,則修改位陣列216將該位置新寫入數(shù)值提供至儲存單元124。于其他實施例中,數(shù)據(jù)快取128包括沖突檢測與回復邏輯,用以檢測上述的沖突,并且于下一時脈周期中,提供新寫入數(shù)值。由于載入單元122與數(shù)據(jù)陣列218間具有單一讀取/寫入端口,儲存隊列126將執(zhí)行一快取寫入請求226,并提供至圖2實施例的載入單元122。載入標簽陣列212、儲存標簽陣列214及修改位陣列216的結(jié)構(gòu)方式與數(shù)據(jù)陣列218相同,且載入標簽陣列212、儲存標簽陣列214及數(shù)據(jù)陣列218由多個儲存元件所組成。舉例來講,于一實施例中,數(shù)據(jù)陣列218、載入標簽陣列212、儲存標簽陣列214與修改位陣列216,各自為四集合關(guān)聯(lián)存儲器陣列(4-waysetassociativecachememoryarray),通過載入(load)、儲存(store)、窺探(snoop)與收回(eviction)地址的索引部分(較低地址位),用以編成索引,其中,該地址用以選擇數(shù)據(jù)陣列218的一集合或一列,且每一集合具有四項目。于數(shù)據(jù)陣列218的某一被選中的集合的每一項目將儲存一快取列。于載入標簽陣列212與儲存標簽陣列214的該被選中的集合的每一項目將儲存對應(yīng)至數(shù)據(jù)陣列218的該快取列的一地址標簽與快取列狀態(tài)。于修改位陣列216的該被選中的集合的每一項目將儲存一已修改位,用以指示數(shù)據(jù)陣列218的對應(yīng)快取列是否被已修改。在另一實施例中,數(shù)據(jù)陣列218、載入標簽陣列212、儲存標簽陣列214與修改位陣列216,各自為M集合關(guān)聯(lián)存儲器陣列(M-waysetassociativecachememoryarray),M是自然數(shù),例如M=2,艮口數(shù)據(jù)陣列218、載入標簽陣列212、儲存標簽陣列214與修改位陣列216,各自為二集合關(guān)聯(lián)存儲器陣列,而每個陣列可包含N個集合。于一實施例中,根據(jù)現(xiàn)有的MESI快取一致性協(xié)議(coherencyprotocol),快取狀態(tài)為四種可能狀態(tài)其中之一,該四種可能狀態(tài)為已修改(Modified)狀態(tài)、獨占(Exclusive)狀態(tài)、共用(Shared)狀態(tài)或無效(Invalid)狀態(tài)。然而,其他實施例中,修改位陣列216用以儲存已修改位,表示對應(yīng)的快取列已修改,而且已修改位可用以計算其他快取一致性協(xié)議結(jié)構(gòu)中的快取列完整狀態(tài)。于一實施例中,當數(shù)據(jù)快取128分配一快取列至數(shù)據(jù)陣列218時,也同時將該快取列的完整MESI狀態(tài)寫入至載入標簽陣列212以及儲存標簽陣列214,并清除修改位陣列216的對應(yīng)已修改位。于另一實施例中,當數(shù)據(jù)快取128使快取列無效時,清除修改位陣列216的對應(yīng)已修改位。于圖2的實施例中,除了快取寫入請求226外,載入單元122還處理載入請求222與收回請求242。因為這些操作必須存取數(shù)據(jù)陣列218,而且載入單元122為耦接至數(shù)據(jù)陣列218的單一讀取/寫入端口的唯一單元。于圖2的實施例中,儲存單元124處理儲存請求228與窺探請求224,各自配合圖4與圖5詳細說明如下。于圖2的實施例中,數(shù)據(jù)快取128持續(xù)更新載入標簽陣列212,用以反映數(shù)據(jù)陣列218的對應(yīng)快取列的完整狀態(tài)。然而,數(shù)據(jù)快取128并不會為了反映數(shù)據(jù)陣列218的對應(yīng)快取列的完整狀態(tài)而持續(xù)更新儲存標簽陣列214。具體地,當儲存隊列126執(zhí)行一快取寫入請求226來更新一快取列時,儲存標簽陣列214并未被更新為快取列的新MESI狀態(tài)。相反地,載入單元122設(shè)定修改位陣列216的對應(yīng)已修改位。因此,儲存標簽陣列214僅儲存快取列的部分MESI狀態(tài),而修改位陣列216儲存的已修改位,用來表示快取列已被修改。接著,當儲存單元124需要知道快取列的完整的MESI狀態(tài)時,儲存單元124—起讀取修改位陣列216的快取列的已修改位234與儲存標簽陣列214的快取列的部分MESI狀態(tài)232,且儲存單元124的組合邏輯208將使用圖3a的表1或圖3b的表2的任一示意圖來計算快取列的完整MESI狀態(tài)236(還提供給儲存隊列126),其中,圖3a與圖3b將詳細說明如下。參考圖3a,顯示依據(jù)本發(fā)明圖1的數(shù)據(jù)快取128所使用的表1示意圖,通過部分MESI快取列狀態(tài)與一已修改位,用以計算出完整MESI快取列狀態(tài)。表1包括三個欄位。第一欄位指定數(shù)據(jù)陣列218的對應(yīng)快取列的部分MESI快取列狀態(tài),例如自圖2的儲存標簽陣列214所讀取的部分MESI狀態(tài)232。第二欄位指定數(shù)據(jù)陣列218的對應(yīng)快取列的已修改位,例如自修改位陣列216所讀取的已修改位234。第三欄位指定數(shù)據(jù)陣列218的對應(yīng)快取列的完整MESI狀態(tài),例如圖2的組合邏輯208所產(chǎn)生的完整MESI狀態(tài)236。于第一行中,表1顯示若部分MESI狀態(tài)為已修改狀態(tài)時,則不管已修改位的數(shù)值為何,所計算的完整MESI狀態(tài)還為已修改狀態(tài)。于第二行中,表1顯示若部分MESI狀態(tài)為獨占狀態(tài)且已修改位被設(shè)定時,所計算的完整MESI狀態(tài)為已修改狀態(tài)。于第三行中,表1顯示若部分MESI狀態(tài)為獨占狀態(tài)且已修改位被重置(reset)時,所計算的完整MESI狀態(tài)為獨占狀態(tài)。于第四行中,表1顯示若部分MESI狀態(tài)為共用狀態(tài)且已修改位被設(shè)定時,計算的完整MESI狀態(tài)為已修改狀態(tài)。此狀況指示快取列正處于被升級至獨占狀態(tài)的過程中,且會發(fā)生早期儲存合并。圖3a的實施例具有此狀況的優(yōu)勢,且將快取列升級至已修改狀態(tài)。于第五行中,表1顯示若部分MESI狀態(tài)為共用狀態(tài)且已修改位被重置時,所計算的完整MESI狀態(tài)為共用狀態(tài)。于第六行中,表1顯示若部分MESI狀態(tài)為無效狀態(tài),則不管已修改位的數(shù)值為何,所計算的完整MESI狀態(tài)為無效狀態(tài)。從以上的實施例中,可以理解部分MESI狀態(tài)無法正確指出所對應(yīng)的快取列是否已被修改,必須加上該快取列所對應(yīng)的已修改位,計算得到完整MESI狀態(tài)才能正確判斷該快取列的狀態(tài)是否為已修改狀態(tài)。換句話說,該快取列的已修改位可以被視為另一個部分MESI狀態(tài),而該快取列的完整MESI狀態(tài)可通過兩個部分MESI狀態(tài)加以計算得到。參考圖3b顯示依據(jù)本發(fā)明另一實施例,說明圖1的數(shù)據(jù)快取128所使用的表2示意圖,通過部分MESI快取列狀態(tài)與一已修改位,用以計算出完整MESI快取列狀態(tài)。表2類似于圖3a的表1。然而,于表2中,若部分MESI狀態(tài)為共用狀態(tài),則不管已修改位的數(shù)值為何,所計算的完整MESI狀態(tài)為共用狀態(tài)。參考圖4,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖2實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一儲存指令。流程始于步驟模塊402。于步驟模塊402中,儲存單元124接收儲存請求228。接收儲存請求228后,儲存單元124針對與儲存地址相關(guān)的快取列,執(zhí)行儲存詢問操作。流程前進至步驟模塊404。于步驟模塊404中,針對與儲存指令的儲存地址相關(guān)的快取列,儲存詢問操作從儲存標簽陣列214讀取部分MESI狀態(tài)232,并從圖2的修改位陣列216讀取已修改位234。流程前進至步驟模塊406。于步驟模塊406中,根據(jù)圖3a的表1或圖3b的表2,儲存單元124的組合邏輯208計算快取列的完整MESI狀態(tài)236。流程前進至步驟模塊408。于步驟模塊408中,儲存單元124于儲存隊列126中分配一項目,并將由儲存請求228所指定的儲存數(shù)據(jù)及儲存地址寫入至分配項目。流程前進至步驟模塊412。于決定步驟模塊412中,儲存隊列126判斷步驟模塊406所計算的完整MESI狀態(tài)236是否為已修改狀態(tài)或獨占狀態(tài)其中之一。若步驟模塊406所計算的完整MESI狀態(tài)236為已修改狀態(tài)或獨占狀態(tài)其中之一,則流程前進至步驟模塊416,否則,流程前進至步驟模塊414。于步驟模塊414中,儲存隊列126命令總線接口單元134執(zhí)行一總線寫入無效操作,使得具有快取列備份的其他快取的快取列無效,并取得快取列的獨占所有權(quán)。數(shù)據(jù)快取128響應(yīng)地將載入標簽陣列212與儲存標簽陣列214的MESI狀態(tài)升級至獨占狀態(tài)。流程前進至步驟模塊416。于步驟模塊416中,儲存隊列126執(zhí)行一快取寫入請求226,用以指定新MESI狀態(tài)為已修改狀態(tài),并將該快取寫入請求226提供至載入單元122。流程同時前進至步驟模塊426與決定步驟模塊418。于步驟模塊426中,載入單元122將與儲存指令的儲存地址相關(guān)的快取列的數(shù)據(jù)寫入數(shù)據(jù)陣列128對應(yīng)的項目。另一方面,于決定步驟模塊418中,載入單元122判斷步驟模塊406所計算的完整MESI狀態(tài)236是否為已修改狀態(tài)。若步驟模塊406所計算的完整MESI狀態(tài)236為已修改狀態(tài),則流程結(jié)束,否則,流程同時前進至步驟模塊422與決定步驟模塊424。于步驟模塊422中,針對與儲存指令的儲存地址相關(guān)的快取列,載入單元122將已修改狀態(tài)寫入至載入標簽陣列212對應(yīng)于該快取列的項目。流程結(jié)束于步驟模塊422。于步驟模塊424中,針對與儲存指令的儲存地址相關(guān)的快取列,載入單元122設(shè)定修改位陣列216對應(yīng)于該快取列的項目中的已修改位。盡管這時儲存標簽陣列214并未同時記錄快取列的完整MESI狀態(tài)(也就是說部分MESI狀態(tài)232不是已修改狀態(tài)),這樣的設(shè)計有助于之后儲存單元124得以計算數(shù)據(jù)陣列218的對應(yīng)快取列的完整MESI狀態(tài)236。流程結(jié)束于步驟模塊424。由圖4的流程圖中可發(fā)現(xiàn),當數(shù)據(jù)快取128執(zhí)行快取寫入請求226,用以修改數(shù)據(jù)陣列218的快取列時,數(shù)據(jù)快取128對具有已修改新狀態(tài)的載入標簽陣列212進行更新至最新的已修改狀態(tài)(除非狀態(tài)已經(jīng)為已修改狀態(tài),如圖4所示的相關(guān)步驟模塊418、422與424),并設(shè)定修改位陣列216的對應(yīng)已修改位。這樣設(shè)計的優(yōu)點在于,數(shù)據(jù)快取128并沒有對儲存標簽陣列214更新為已修改狀態(tài)。不過,儲存單元124可通過同時存取儲存標簽陣列214與修改位陣列216,如圖4的相關(guān)步驟模塊404(或者圖5的步驟模塊504)所示,用以計算快取列的全部完整MESI狀態(tài)236,如圖4的相關(guān)步驟模塊406(或者圖5的步驟模塊506)所示。參考圖5,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖2實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一無效窺探請求。流程始于步驟模塊502。于步驟模塊502中,儲存單元124接收一無效窺探請求(invalidatingsnooprequest)224,儲存單元124針對與窺探地址相關(guān)的快取列,對自己執(zhí)行一窺探詢問操作。流程前進至步驟模塊504。于步驟模塊504中,針對與窺探地址相關(guān)的快取列,窺探詢問操作從儲存標簽陣列214讀取部分MESI狀態(tài)232,并從圖2的修改位陣列216讀取已修改位234。流程前進至步驟模塊506。于步驟模塊506中,儲存單元124的組合邏輯208根據(jù)圖3a的表1或圖3b的表2其中之一,用以計算快取列的完整MESI狀態(tài)236。流程前進至決定步驟模塊508。于決定步驟模塊508中,儲存單元124判斷步驟模塊506所計算的完整MESI狀態(tài)236是否為已修改狀態(tài)。若是,流程前進至步驟模塊512,否則,流程前進至步驟模塊514。于步驟模塊512中,儲存單元124命令總線接口單元134執(zhí)行總線操作,用以將修改快取列寫回至系統(tǒng)存儲器。流程前進至步驟模塊514。于步驟模塊514中,儲存單元124對自己執(zhí)行一狀態(tài)更新操作,并對載入單元122執(zhí)行一狀態(tài)更新操作,每一更新用以指定新MESI狀態(tài)為無效狀態(tài)。流程同時前進至步驟模土夬516,518與522。于步驟模塊516中,針對與窺探地址相關(guān)的快取列,載入單元122將無效狀態(tài)寫入至載入標簽陣列212對應(yīng)該快取列的項目。流程結(jié)束于步驟模塊516。于步驟模塊518中,針對與窺探地址相關(guān)的快取列,載入單元122清除修改位陣列216項目對應(yīng)該快取列的已修改位。于一實施例中,當數(shù)據(jù)陣列218項目為無效時,數(shù)據(jù)快取128并不重置修改位陣列216的已修改位,而是等到對應(yīng)快取列被分配至數(shù)據(jù)陣列218時重置該已修改位。流程結(jié)束于步驟模塊518。于步驟模塊522中,針對與窺探地址相關(guān)的快取列,儲存單元124將無效狀態(tài)寫入至儲存標簽陣列214對應(yīng)該快取列的項目。流程結(jié)束于步驟模塊522。于圖2的實施例中,由于儲存單元124管線不像載入單元122管線繁忙,因此窺探詢問操作由儲存單元124管線來處理。然而,于另一實施例中,窺探詢問操作由載入單元122而非儲存單元124處理,因為載入標簽陣列212還提供快取列的完整MESI狀態(tài)。于圖2的實施例(以及圖6、9及12的實施例)中,載入請求222與收回請求242由載入單元122處理,因為載入單元122可存取數(shù)據(jù)陣列218的單一讀取端口。處理載入請求222僅需知道載入地址是否命中數(shù)據(jù)快取128,也就是說,是否有一快取線可表示載入地址存在于數(shù)據(jù)快取128中。(若載入地址的索引部分編成索引可指引至載入標簽陣列212的一集合且載入地址的標簽部分可與該集合中的其中一有效標簽配對,則表示載入地址命中數(shù)據(jù)快取128。)然而,收回操作242(與窺探詢問)需要知道快取列的完整MESI狀態(tài)。收回操作242自圖2實施例的載入標簽陣列212中接收完整MESI狀態(tài)。進一步,最低限度上,儲存操作僅需知道所指定快取列的狀態(tài)是否至少為獨占狀態(tài)(還即,MESI狀態(tài)為獨占狀態(tài)或已修改狀態(tài)),以便知道是否可立即寫入快取列,或者,儲存操作在進行步驟模塊414時是否需要先取得快取列的獨占所有權(quán)。然而,圖4實施例包括對決定步驟模塊418的進行最佳化設(shè)計,也就是當執(zhí)行步驟模塊418時,若所指定快取列的狀態(tài)已經(jīng)為已修改狀態(tài),且修改位陣列216的已修改位被設(shè)定時,則儲存單元124放棄更新載入標簽陣列212與修改位陣列216,進而達到消耗較少功率的優(yōu)點。一般而言,當需要知道快取列的完整MESI狀態(tài)時,才需要對修改位陣列216進行讀取操作。因此,任一功能單元(載入單元122或者儲存單元124)滿足下列條件時,功能單元需對修改位陣列216進行讀取,其條件是(1)任一功能單元進行快取寫入時并未更新其標簽陣列212、214,以及(2)任一功能單元進行收回或窺探詢問操作時(或者儲存詢問操作,具有圖4及圖7實施例所包含的最佳化)。參考圖6,顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器100中,執(zhí)行單元與存儲器子系統(tǒng)112的部分方塊圖。圖6的實施例在許多方面類似于圖2的實施例,且相同編號的元件為相似的。僅就不同處加以說明。于圖6的實施例中,修改位陣列216具有兩個讀取端口,其中之一用以將已修改位234提供至儲存單元124,而另一端口則將已修改位634提供至載入單元122。除此之外,修改位陣列216的寫入端口耦接于儲存隊列126,于執(zhí)行快取寫入請求226時,儲存隊列126借以更新修改位陣列216。于圖6的實施例中,載入單元122還包括組合邏輯608,用以從載入標簽陣列212接收部分MESI狀態(tài)632,并從修改位陣列216的第二讀取端口接收修該已修改位634,并使用如圖3a的表1或圖3b的表2其中之一,用以計算完整MESI狀態(tài)636。于圖6的實施例中,數(shù)據(jù)陣列218包括耦接于載入單元122的讀取端口以及耦接于儲存隊列126的寫入端口,用以致能儲存隊列126對數(shù)據(jù)陣列218執(zhí)行快取寫入請求226。也就是說,儲存隊列126直接對數(shù)據(jù)陣列218及修改位陣列216執(zhí)行快取寫入請求226,而非將其傳送至圖2的載入單元122。因此,載入標簽陣列212與儲存標簽陣列214兩者都不會因為處理快取寫入請求226而被更新為已修改新狀態(tài)。更確切地說,處理快取寫入請求226僅設(shè)定修改位陣列216的對應(yīng)已修改位。參考圖7,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖6實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一儲存指令。圖7的流程圖與圖4的流程圖相似。然而,圖7的步驟模塊716取代圖4的步驟模塊416,其中,儲存隊列126執(zhí)行直接針對數(shù)據(jù)陣列218的快取寫入請求226,進而寫入儲存數(shù)據(jù)。除此之外,因為數(shù)據(jù)陣列218于步驟模塊716中直接被寫入,圖7的流程圖并不包括圖4的步驟模塊426。進一步,因為儲存隊列126并沒有將新的修改快取列狀態(tài)更新至儲存標簽陣列212(還沒有更新至儲存標簽陣列214),則于圖7的流程圖中,并無包括圖4的步驟模塊422。最后,假如于決定步驟模塊418所判斷完整MESI狀態(tài)并非為已修改狀態(tài),則圖7的步驟模塊724取代圖4的步驟模塊424,使得儲存隊列126執(zhí)行直接針對修改位陣列216的快取寫入請求226,用以設(shè)定對應(yīng)已修改位。依據(jù)本發(fā)明圖1實施例的微處理器100的操作,與圖5所示的操作相似,其中,微處理器100具有圖6實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一無效窺探請求。參考圖8,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖6實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一收回請求242。流程開始于步驟模塊802。于步驟模塊802中,載入單元122接收一收回請求242后,載入單元122針對與收回地址相關(guān)的快取列,執(zhí)行一收回操作。流程前進至步驟模塊804。于步驟模塊804中,針對與收回地址相關(guān)的快取列,收回操作從載入標簽陣列212讀取部分MESI狀態(tài)632,并從圖6的修改位陣列216讀取已修改位634。流程前進至步驟模塊806。于步驟模塊806中,載入單元122的組合邏輯208根據(jù)圖3a的表1或第3b的表2,用以計算快取列的完整MESI狀態(tài)636。流程前進至步驟模塊808。于步驟模塊808中,載入單元122從數(shù)據(jù)陣列218讀取收回地址所指定的快取列。流程前進至步驟模塊812。于步驟模塊812中,載入單元122將步驟模塊806所計算的完整MESI狀態(tài)與步驟模塊808所讀取的快取列提供至圖1的二階快取132,用以執(zhí)行收回操作。流程結(jié)束于步驟模塊812。參考圖9,顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器100中,執(zhí)行單元與存儲器子系統(tǒng)112的部分方塊圖。圖9的實施例在許多方面類似于圖6的實施例,且相同編號的元件為相似的。僅就不同處加以說明。于圖9的實施例中,修改位陣列216包括單一讀取端口,而非如圖6的兩個讀取端口。因此,儲存單元124并不包括組合邏輯208,而且不會產(chǎn)生完整MESI狀態(tài)236。相反地,儲存標簽陣列214將部分MESI狀態(tài)232直接提供至儲存隊列126。所以,圖9的數(shù)據(jù)快取128所執(zhí)行的儲存請求228與先前實施例不同,其內(nèi)容詳述于下文圖10相關(guān)的說明。最后,由載入單元122而非儲存單元124接收窺探請求224。其結(jié)果是,圖9的數(shù)據(jù)快取128所執(zhí)行的窺探請求224還有不同,將于下文圖11相關(guān)的說明。于圖9的實施例中,修改位陣列216無需包括將已修改位提供至儲存單元124的第二讀取端口,這是因為窺探詢問由載入單元122處理,且于圖10中儲存單元124并沒有執(zhí)行如圖4與圖7中儲存單元124的最佳化的決定步驟模塊418,也因此并不需要知道快取列的完整MESI狀態(tài),僅需知道MESI狀態(tài)是否至少為獨占狀態(tài)(圖10的步驟模塊1012),其可由儲存標簽陣列214的部分MESI狀態(tài)232來加以判斷。參考圖10,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖9實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一儲存指令。圖10的流程圖與圖7的流程圖相似。然而,圖10的步驟模塊1004取代圖7的步驟模塊404,這僅僅將部分MESI狀態(tài)232從儲存標簽陣列214被讀取,而非如圖7步驟模塊404所示,需從修改位陣列216讀取已修改位234。除此之外,圖10并不存在步驟模塊406,且流程直接由步驟模塊1004前進至步驟模塊408。更進一步,圖10的決定步驟模塊1012取代圖7的步驟模塊412,這使得儲存隊列126將判斷在步驟模塊1004所接收的部分MESI狀態(tài)是否至少為獨占狀態(tài)(而非如圖7的決定步驟模塊412判斷于其步驟模塊406中所計算的完整MESI狀態(tài)236是否為獨占狀態(tài)或已修改狀態(tài))。最后,由于儲存隊列126不需要存取快取列的完整MESI狀態(tài),因此,圖10的流程圖不包括圖7的決定步驟模塊418,不用進行圖7的決定步驟模塊418的最佳化;相反地,流程直接由步驟模塊716前進至步驟模塊724。參考圖11,顯示依據(jù)本發(fā)明圖1的微處理器100的操作流程圖,其中,微處理器100具有圖9實施例的執(zhí)行單元與存儲器子系統(tǒng)112,用以執(zhí)行一無效窺探請求。流程開始于步驟模塊1102。于步驟模塊1102中,載入單元122接收一無效窺探請求224。作為響應(yīng),針對與窺探地址相關(guān)的快取列,載入單元122對自己執(zhí)行一窺探詢問操作。流程前進至步驟模塊1104。于步驟模塊1104中,針對與窺探地址相關(guān)的快取列,窺探詢問操作從載入標簽陣列212讀取部分窺探請求632,并從圖9的修改位陣列216讀取已修改位634。流程前進至步驟模塊1106。于步驟模塊1106中,載入單元122的組合邏輯608根據(jù)圖3a的表1或圖3b的表2其中之一,用以計算快取列的完整MESI狀態(tài)636。流程前進至步驟模塊1108。于決定步驟模塊1108中,載入單元112判斷在步驟模塊1106所計算的完整MESI狀態(tài)636是否為已修改狀態(tài)。若是,流程前進至步驟模塊1112;否則,流程前進至步驟模塊1114。于步驟模塊1112中,載入單元122命令總線接口單元134執(zhí)行總線操作,將該快取列寫回至系統(tǒng)存儲器。流程前進至步驟模塊1114。于步驟模塊1114中,載入單元122對自己執(zhí)行一狀態(tài)更新操作,以及對儲存單元124執(zhí)行一狀態(tài)更新操作,其中,每一狀態(tài)更新操作指定新MESI狀態(tài)為無效狀態(tài)。流程同時前進至步驟模塊1116與步驟模塊1122。于步驟模塊1116中,針對與窺探地址相關(guān)的快取列,載入單元122將無效狀態(tài)寫入至載入標簽陣列212對應(yīng)的項目。流程結(jié)束于步驟模塊1116。于步驟模塊1122中,針對與窺探地址相關(guān)的快取列,儲存單元124將無效狀態(tài)寫入儲存標簽陣列214對應(yīng)的項目。流程結(jié)束于步驟模塊1122。值得注意的是,于圖9的實施例中,當對應(yīng)快取列被分配時,則重置修改位陣列216的已修改位,而非如圖5的步驟模塊518在收到窺探請求224就進行重置。參考圖12,顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器100中,執(zhí)行單元與存儲器子系統(tǒng)112的部分方塊圖。圖12的實施例在許多方面類似于圖9的實施例,且相同編號的元件為相似的。僅就不同處加以說明。于圖12的實施例中,儲存隊列126對儲存單元124執(zhí)行快取寫入請求226(而非對圖2的載入單元122,或者直接對圖6與圖9的數(shù)據(jù)陣列218與修改位陣列216)。數(shù)據(jù)陣列218的寫入端口與修改位陣列216的寫入端口均耦接于儲存單元124,使得儲存單元124(而非圖9的數(shù)據(jù)隊列126)將快取列寫入至數(shù)據(jù)陣列218,并更新修改位陣列216的已修改位,用以響應(yīng)于數(shù)據(jù)隊列126的快取寫入請求226。儲存單元124將快取列的完整MESI狀態(tài)更新至儲存標簽陣列214,使得儲存單元124執(zhí)行最佳化,其中,上述的最佳化,與圖4與圖7的決定步驟模塊418中,載入單元122與儲存隊列126所分別執(zhí)行的最佳化類似,而儲存標簽陣列214將完整MESI狀態(tài)1232提供至儲存隊列126。此外,由儲存單元124而非載入單元122接收窺探請求224。因此,圖12的儲存單元124執(zhí)行窺探請求224,此方式類似于圖5相關(guān)的說明,除了儲存單元124系直接由儲存標簽陣列214接收完整MESI狀態(tài)1232(而非由圖2的組合邏輯208)。然而,因為載入單元122還提供完整MESI狀態(tài)636,于另一實施例中,載入單元122負責處理窺探請求224,流程如上述圖11相關(guān)的說明。最后,收回請求242由載入單元122處理,類似于上述圖8的處理方式。參考圖13,顯示依據(jù)本發(fā)明另一實施例,說明于圖1的微處理器100中,執(zhí)行單元與存儲器子系統(tǒng)112的部分方塊圖。圖13的實施例許多方面類似于圖6的實施例,且相似數(shù)字的元件為相似的。僅將不同處說明如下。圖13的實施例包括單一的雙端口標簽陣列1314,還稱為統(tǒng)一標簽陣列1314,而非載入標簽陣列212與儲存標簽陣列214。也就是說,統(tǒng)一標簽陣列1314具有耦接于載入單元122的第一讀取/寫入端口,以及耦接于儲存單元124的第二讀取/寫入端口。第一讀取/寫入端口將部分MESI狀態(tài)1332提供至載入單元122的組合邏輯608,而第二讀取/寫入端口將部分MESI狀態(tài)232提供至儲存單元124的組合邏輯208。于圖13的實施例中,當儲存隊列126執(zhí)行快取寫入請求226時,數(shù)據(jù)快取128并不將統(tǒng)一標簽陣列1314以已修改新狀態(tài)進行更新,此一優(yōu)點在于,將減少統(tǒng)一標簽陣列1314的擁塞狀況。不過,通過同時存取統(tǒng)一標簽陣列1314與修改位陣列216,儲存單元124可計算快取列的完整MESI狀態(tài)236,而載入單元122可計算快取列的完整MESI狀態(tài)1332。類似于上述圖9的實施例,于圖13的另一實施例中,載入單元122處理窺探請求224,且儲存單元124不執(zhí)行決定步驟模塊418的最佳化,這使得儲存單元124不用產(chǎn)生完整MESI狀態(tài)236,而修改位陣列216可具有耦接于載入單元122的單一讀取端口,而非兩個讀取端口。于圖13的實施例中,盡管并無享有獨立載入標簽陣列212與儲存標簽陣列214的實施例所帶來的平面規(guī)劃及電源管理的好處,圖13的實施例仍可實現(xiàn)修改位陣列216的優(yōu)勢,意即,減少標簽陣列的擁塞。進一步,圖13的實施例有利于空間,其所具有的高效率雙端口標簽陣列設(shè)計,遠小于兩個單一端口標簽陣列所消耗的總空間。本發(fā)明雖以較佳實施例揭露如上,然其并非用以限定本發(fā)明的范圍,本領(lǐng)域普通技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),當可做些許的更動與潤飾。舉例來說,軟件可以致能此處所述的裝置及方法,如致能裝置及方法的功能、制造、模型、模擬、性質(zhì)及/或測試。例如,通過使用一般的程序語言(例如C或C++)、包括VerilogHDL、VHDL等硬件描述語言(hardwaredescriptionlanguage,HDL)、或其它可使用的程序來完成。此類軟件可被安裝于任何已知計算機可用的介質(zhì)中,例如半導體、磁盤或光盤(像是⑶-ROM、DVD-ROM等)。此處所述裝置及方法的實施例可被包含于一半導體知識產(chǎn)權(quán)核(semiconductorintellectualpropertycore)中,如微處理器核(以HDL實現(xiàn)),之后再以集成電路的制造轉(zhuǎn)換成硬件。另外,此處所述的裝置及方法可由硬件及軟件來組合實現(xiàn)。故本發(fā)明不應(yīng)局限于此處所述的具體實施例,而應(yīng)以其所附的權(quán)利要求的保護范圍為準。具體地,本發(fā)明可于通用型計算機所使用的微處理器裝置中實現(xiàn)。最后,本領(lǐng)域普通技術(shù)人員應(yīng)能在不脫離本發(fā)明范疇的前提下,以權(quán)利要求范圍所揭露的概念及特定實施例為基礎(chǔ),設(shè)計或修改與本發(fā)明執(zhí)行相同功能的其他結(jié)構(gòu)。附圖中部分符號的說明如下100微處理器;102指令快?。?04指令轉(zhuǎn)譯器;106暫存器別名表;108指令排序器;112執(zhí)行單元與存儲器子系統(tǒng);116重排序緩沖器(ROB)與結(jié)構(gòu)化暫存器;122載入單元;124儲存單元;126儲存隊列;128數(shù)據(jù)快??;132二階(L2)快??;134總線接口單元(BIU);208,608組合邏輯;212載入標簽陣列;214儲存標簽陣列;216修改位陣列;218數(shù)據(jù)陣列;222載入請求;224窺探請求;226快取寫入請求;228儲存請求;232、632、1332部分MESI狀態(tài);234,634已修改位;236、636、1232完整MESI狀態(tài);242收回請求。權(quán)利要求一種微處理器,其特征在于,包括第一功能單元與第二功能單元,各自耦接及存取一數(shù)據(jù)快??;及該數(shù)據(jù)快取,包括一數(shù)據(jù)陣列,具有一既定結(jié)構(gòu),包括一寫入端口,該第一功能單元通過該寫入端口將數(shù)據(jù)寫入至該數(shù)據(jù)陣列的一快取列;一修改位陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),包括一寫入端口,該第一功能單元通過該寫入端口設(shè)定該修改位陣列的一已修改位,以指示對應(yīng)于該數(shù)據(jù)陣列中由該第一功能單元所寫入的該快取列已被修改;及一讀取端口,該第二功能單元通過該讀取端口從該修改位陣列讀取該已修改位,以判斷對應(yīng)于該數(shù)據(jù)陣列的該快取列是否已被修改;及一標簽陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),包括一讀取端口,該第二功能單元通過該讀取端口讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)無法正確指示該快取列是否已被修改,其中,該標簽陣列不包含該第一功能單元通過其更新該快取列的該部分狀態(tài)的一端口。2.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該標簽陣列被配置用以儲存對應(yīng)于該數(shù)據(jù)陣列的該快取列的一地址標簽,其中,該修改位陣列沒有儲存地址標簽。3.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括一第三功能單元,耦接及存取該數(shù)據(jù)快取,其中,該修改位陣列還包括一第二讀取端口,該第三功能單元通過該第二讀取端口,從該修改位陣列讀取該已修改位,以判斷該快取列是否已被修改。4.根據(jù)權(quán)利要求3所述的微處理器,其特征在于,該數(shù)據(jù)快取還包括一第二標簽陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),包括一讀取端口,該第三功能單元通過該讀取端口讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)無法正確指示該快取列是否已被修改,其中,該第二標簽陣列中不包含該第一功能單元通過其更新該快取列的該部分狀態(tài)的一端口。5.根據(jù)權(quán)利要求3所述的微處理器,其特征在于,該標簽陣列還包括一第二讀取端口,該第三功能單元通過該第二讀取端口讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)無法正確指示該快取列是否已被修改。6.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第一功能單元包括一數(shù)據(jù)隊列單元,該數(shù)據(jù)隊列單元被配置來執(zhí)行一快取寫入操作,以將該數(shù)據(jù)寫入至該數(shù)據(jù)陣列的該快取列及設(shè)定該修改位陣列的該已修改位。7.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第二功能單元被配置從該數(shù)據(jù)陣列讀取該快取列,以執(zhí)行一加載指令。8.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第二功能單元被配置從該數(shù)據(jù)陣列讀取該快取列,以執(zhí)行一收回請求,以收回該數(shù)據(jù)快取的該快取列。9.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第二功能單元被配置從該修改位陣列讀取該已修改位,并從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行指向該快取列的一窺探請求。10.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第二功能單元被配置從該修改位陣列讀取該已修改位,并從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行一請求來收回該快取列。11.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該第二功能單元被配置從該修改位陣列讀取該已修改位且從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行一儲存指令。12.根據(jù)權(quán)利要求11所述的微處理器,其特征在于,若由該第二功能單元所計算的完整狀態(tài)判斷出該快取列已被修改,該第一功能單元被配置用以避免設(shè)定該快取列的該修改位陣列的該已修改位。13.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該數(shù)據(jù)快取還包括一第二標簽陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),包括一寫入端口,該第一功能單元通過該寫入端口寫入對應(yīng)該數(shù)據(jù)陣列的該快取列的一完整狀態(tài),以指示由該第一功能單元所寫入的該快取列已被修改。14.根據(jù)權(quán)利要求13所述的微處理器,其特征在于,該第二標簽陣列還包括一讀取端口,該第一功能單元通過該讀取端口讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的該完整狀態(tài)。15.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,當該數(shù)據(jù)快取將該快取列分配至該數(shù)據(jù)陣列時,該第一功能單元被配置來重置該修改位陣列的該已修改位,以指示該數(shù)據(jù)陣列的該快取列未被修改。16.根據(jù)權(quán)利要求1所述的微處理器,其特征在于,該標簽陣列還包括一寫入端口,該第二功能單元通過該寫入端口寫入對應(yīng)該數(shù)據(jù)陣列的該快取列的該部分狀態(tài),其中,當該第二功能單元寫入該快取列的該部分狀態(tài),使該快取列無效時,該第一功能單元被配置用以重置該修改位陣列的該已修改位。17.—種微處理器的數(shù)據(jù)快取存取方法,其特征在于,用于第一功能單元與第二功能單元,其中,該數(shù)據(jù)快取包括具有一既定結(jié)構(gòu)的一數(shù)據(jù)陣列與具有該既定結(jié)構(gòu)的一標簽陣列,該方法包括通過該數(shù)據(jù)陣列的一寫入端口,將數(shù)據(jù)寫入至該數(shù)據(jù)陣列的一快取列,其中,該數(shù)據(jù)的寫入由該第一功能單元執(zhí)行;設(shè)定該數(shù)據(jù)快取的一修改位陣列的一已修改位,以指示于該數(shù)據(jù)陣列中由該第一功能單元所寫入的該快取列已被修改,其中,該修改位陣列具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),其中,該已修改位的設(shè)定由該第一功能單元通過該修改位陣列的一寫入端口執(zhí)行;讀取該修改位陣列的該已修改位,以判斷該快取列是否已被修改,其中,該已修改位的讀取由該第二功能單元通過該修改位陣列的一讀取端口執(zhí)行;及讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)無法正確指示該快取列是否已被修改,其中,該部分狀態(tài)的讀取由該第二功能單元通過該標簽陣列的一讀取端口執(zhí)行,其中,該標簽陣列不包含該第一功能單元通過其更新該快取列的該部分狀態(tài)的一端口。18.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,該標簽陣列被配置用以儲存該數(shù)據(jù)陣列的該快取列的一地址標簽,其中,該修改位陣列沒有儲存地址標簽。19.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,該微處理器還包括一第三功能單元,該第三功能單元用以存取該數(shù)據(jù)快取,該方法進一步包括第二次讀取該修改位陣列的該已修改位,以判斷該快取列是否已被修改,其中,該已修改位的第二次讀取由該第三功能單元通過該修改位陣列的一第二讀取端口執(zhí)行。20.根據(jù)權(quán)利要求19所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,該數(shù)據(jù)快取還包括一第二標簽陣列,其中,該第二標簽陣列具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),該方法進一步包括第二次讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)不指示該快取列是否已被修改,其中,該快取列的該部分狀態(tài)的第二次讀取由該第三功能單元通過該第二標簽陣列的一讀取端口執(zhí)行,其中,該第一功能單元更新該快取列的該部分狀態(tài)所使用的一端口不包含于該第二標簽陣列中。21.根據(jù)權(quán)利要求19所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括第二次讀取對應(yīng)該數(shù)據(jù)陣列的該快取列的一部分狀態(tài),其中,該部分狀態(tài)無法正確指示該快取列是否已被修改,其中,該快取列的該部分狀態(tài)的第二次讀取由該第三功能單元通過該標簽陣列的一第二讀取端口執(zhí)行。22.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,該第一功能單元包括一數(shù)據(jù)隊列單元,該數(shù)據(jù)隊列單元被配置來執(zhí)行一快取寫入操作,以執(zhí)行該數(shù)據(jù)陣列的該快取列的該數(shù)據(jù)的寫入及該修改位陣列的該已修改位的設(shè)定。23.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括讀取該數(shù)據(jù)陣列的該快取列,以執(zhí)行一加載指令,其中,該快取列的讀取由該第二功能單元執(zhí)行。24.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括從該數(shù)據(jù)陣列中讀取該快取列,以執(zhí)行一請求以收回該數(shù)據(jù)陣列的該快取列,其中,該讀取該快取列由該第二功能單元執(zhí)行。25.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括從該修改位陣列讀取該已修改位,并從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行指向該快取列的一窺探請求,其中,該快取列的該完整狀態(tài)的計算由該第二功能單元執(zhí)行。26.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括從該修改位陣列讀取該已修改位,并從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行一請求來收回該快取列,其中,該快取列的該完整狀態(tài)的計算由該第二功能單元執(zhí)行。27.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括從該修改位陣列讀取該已修改位,并從該標簽陣列讀取該部分狀態(tài),以計算該快取列的一完整狀態(tài),以執(zhí)行一儲存指令,其中,該快取列的該完整狀態(tài)的計算由該第二功能單元執(zhí)行。28.根據(jù)權(quán)利要求27所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括若由該第二功能單元所計算的完整狀態(tài)判斷出該快取列已被修改,避免設(shè)定對應(yīng)該快取列的該修改位陣列的該已修改位。29.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,該數(shù)據(jù)快取還包括一第二標簽陣列,具有該數(shù)據(jù)陣列的該既定結(jié)構(gòu),該方法進一步包括寫入該數(shù)據(jù)陣列的該快取列的一完整狀態(tài),以指示由該第一功能單元所寫入的該快取列已被修改,其中,該快取列的該完整狀態(tài)的寫入由該第一功能單元通過該第二標簽陣列的一寫入端口執(zhí)行。30.根據(jù)權(quán)利要求29所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括讀取對應(yīng)該數(shù)據(jù)陣列中該快取列的該完整狀態(tài),其中,該快取列的該完整狀態(tài)的讀取由該第一功能單元通過該第二標簽陣列的一讀取端口執(zhí)行。31.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括將該快取列分配至該數(shù)據(jù)快??;及重置該修改位陣列的該已修改位,以指示該數(shù)據(jù)陣列的該快取列未被修改,以響應(yīng)于該快取列的分配,其中,該已修改位的重置由該第一功能單元執(zhí)行。32.根據(jù)權(quán)利要求17所述的微處理器的數(shù)據(jù)快取存取方法,其特征在于,進一步包括寫入對應(yīng)該數(shù)據(jù)陣列的該快取列的該部分狀態(tài),以使該快取列無效,其中,寫入該快取列的該部分狀態(tài)以使該快取列無效的操作由該第二功能單元通過該標簽陣列的一寫入端口執(zhí)行;及重置對應(yīng)該修改位陣列的該已修改位,其中,該已修改位的重置由該第一功能單元執(zhí)行。全文摘要一種微處理器及微處理器的數(shù)據(jù)快取存取方法,該微處理器包括第一功能單元、第二功能單元及數(shù)據(jù)快取,該數(shù)據(jù)快取包括具有寫入端口的數(shù)據(jù)陣列、具有讀取端口與寫入端口的修改位陣列及具有讀取端口的標簽陣列。每一陣列具有對應(yīng)既定結(jié)構(gòu)。第一功能單元寫入數(shù)據(jù)至數(shù)據(jù)陣列的快取列,并設(shè)定修改位陣列的已修改位,表示數(shù)據(jù)陣列的該快取列已被修改。第二功能單元從修改位陣列讀取該已修改位,以判斷該快取列是否已被修改及從標簽陣列讀取該快取列的部分狀態(tài)。標簽陣列不指示該快取列是否已被修改。第一功能單元更新該快取列的該部分狀態(tài)所使用的端口不包含于標簽陣列中。本發(fā)明減少了微處理器內(nèi)標簽陣列的存取量,簡化了標簽陣列的平面規(guī)劃。文檔編號G06F12/08GK101833518SQ20101017980公開日2010年9月15日申請日期2010年5月20日優(yōu)先權(quán)日2009年5月27日發(fā)明者G·葛蘭·亨利,柯林·艾迪,羅德尼·E·虎克申請人:威盛電子股份有限公司