專利名稱:可鎖定碼的快取及其處理器、控制器與控制方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于處理器,尤指一種高速緩存以及快取部分鎖定的系統(tǒng)與方法。
背景技術(shù):
電路設(shè)計者致力于降低從存儲器位置擷取儲存的數(shù)據(jù)和指令所需的時間以增加處理器運作的速度。一種加速處理器存取碼(code)的方法是利用高速緩存暫存處理器最近一次自主存儲器讀取的編碼復(fù)本,由于軟件程序習(xí)慣于做循環(huán)因而一再擷取存儲器中相同的位置,因此在與處理器溝通的過程中,合并快取系統(tǒng)的部分形式可以加速擷取所需的碼,當(dāng)處理器要求的碼存在于快取中,稱為“快取尋到(cache hit)”,相對于要求的碼不存在于快取中稱為“快取失誤(cache miss)”?!翱烊さ健钡拇a可以更快速地被擷取,如果發(fā)生快取失誤,處理器則必須自主存儲器讀取碼,而所需花費的時間為自高速緩存擷取碼的上百倍。
快取是由快取控制器(cache controller)控制,包含有算法以決定儲存哪些碼。當(dāng)新的碼自主存儲器被擷取并且分配于快取中時,配置算法決定哪一個已存在于快取中的碼要被丟棄。上述配置算法是基于統(tǒng)計機率學(xué)的概念下,判斷哪一個碼最有可能將再一次被使用到。舉例而言,“輪替(round-robin)”方法是基于已決定的次序簡單地將下一個位置的碼丟棄;而“最少使用(least recently used)”方法是持續(xù)追蹤每一登錄快取的快取線(cache line)并丟棄最舊的碼,為較復(fù)雜的方法。
當(dāng)處理器發(fā)出要求讀取碼時,快取控制器會比對上述要求的碼的地址與快取中的地址,以確認上述碼是否已存在于快取中。例如,4K字節(jié)快取的地址有32位,其中,20位(地址[31:12])是卷標位(tag bits)以及12位(地址[11:0])是偏移位(offset bits)。卷標位分別儲存于卷標快取,并且識別主存儲器的220快取線中哪些要被儲存于給定的快取地址;12偏移位指出碼將被儲存在212字節(jié)快取中的哪個位置。
快取控制器依照快取的架構(gòu)來使用偏移位,例如,“直接映像(directmap)”是快取的一種形式。有特定偏移位的編碼被儲存在快取中的唯一位置,例如,假設(shè)32字節(jié)快取線有地址范圍自0000_0700(十六進制)至0000_071F(十六進制)儲存于快取中偏移地址700至71F,且假設(shè)第二快取線有地址范圍自1234_5700至1234_571F。上述第二快取線無法同時與第一快取線被儲存,因為這兩個快取線有相同的偏移地址700至71F。然而,因為編碼編譯的隨機性質(zhì),這類的沖突很容易發(fā)生。
因為直接映像會伴隨著這類的問題,發(fā)展出一種“集合關(guān)系型”的快取架構(gòu)。例如,“雙向”集合關(guān)系型快取是將整個快取分成兩個相同大小的快取通道(cache ways)。額外的位用于指示要儲存于兩個快取通道中哪一個的特定快取線,其中上述額外位是取自于偏移地址中特定的位。算法可以用來編譯這種額外位并且決定要儲存在哪一個快取線,或者,卷標地址可以用來比較并檢測上述快取線是被儲存在第一或是第二快取通道。
快取可以被分為數(shù)個部分,例如,“四向”集合關(guān)系型快取有四個快取信道,以及八向集合關(guān)系型快取有八個快取通道。通過允許有相同偏移位的快取線能夠同時儲存于不同的快取通道中,可增加快取尋到的比率。直接映像的快取尋到的機率為65%,是合理的數(shù)值;而使用四向集合關(guān)系型快取,快取尋到的機率可以被提高至90%,隨之增加處理器的擷取速度。因為編碼地址通常傾向于有相同的偏移位,使用多通道的快取架構(gòu)是比較好的。
另一種作法,快取被設(shè)計成各個快取線可被儲存于快取中的任何地方,這種形式的快取稱為完全集合關(guān)系型(fully set-associative)快取,亦或完全可擷取存儲器(content accessible memory)或CAM。CAM需要大量的比較電路(comparators)與關(guān)聯(lián)邏輯且最終會導(dǎo)致緩慢的擷取時間,四向與八向集合關(guān)系型快取只需要四個或八個比較電路,通??商峁┹^佳的擷取速度。
快取控制器的配置算法廣被注意,不幸地,產(chǎn)業(yè)標準的配置算法存在限制,即是平均來說能提供較佳的性能,但可能無法每次都對系統(tǒng)的關(guān)鍵性工作提供最佳性能。處理器處理的其它工作在時間上可能并不緊急,但部分工作可能需要快速的處理,像是“實時”工作,因此,軟件程序通常以緊急實時工作中斷其它工作的方式寫入,而后,一旦中斷完成,上述軟件程序可回歸至正常工作并且繼續(xù)做處理。
中斷或是實時工作可能不會常常發(fā)生,當(dāng)一旦發(fā)生時,卻希望他們能夠快速地被執(zhí)行。舉例來說,假設(shè)中斷慣例程序因手機來電而產(chǎn)生鈴聲信號,雖然上述中斷可能好幾天才發(fā)生一次,但當(dāng)發(fā)生時,因為它是實時事件,所以必須執(zhí)行的夠快。當(dāng)電話來時,手機可能正在執(zhí)行背景畫面,但是鈴聲中斷取得優(yōu)先權(quán),想要快速執(zhí)行中斷或是其它高優(yōu)先權(quán)的碼必須加載至快取中并且加以“鎖定(lock)”,如此一來上述碼將不會被丟棄。這種方法改善了中斷的慣例程序,因為這種方法可以保證想要擷取的中斷慣例程序?qū)诳烊≈斜粚さ讲⑶铱焖俚貓?zhí)行。一般的配置算法對于高優(yōu)先權(quán)碼的認知通常不夠成熟,因此,軟件程序?qū)<冶仨氄J知碼的哪些部分相較于其它部分具有較高的優(yōu)先權(quán),進而時時將上述部分碼鎖定在快取中以便可供隨時使用。
另一種快取鎖定用在使用頻繁的工作。假設(shè)軟件程序設(shè)計者意識到某特定的碼段被執(zhí)行的次數(shù)遠遠高于其它工作,為了最佳化快取尋到的比率,軟件程序設(shè)計者可選擇將上述使用頻繁的碼鎖定于快取中。同時,根據(jù)編碼和處理器的分析,由于使用頻繁的碼在短時間內(nèi)一再被使用,因此可能被放置在最近使用分類中以免被丟棄。丟棄上述碼并且立刻自主存儲器擷取上述碼將會浪費處理器的時間,因此,鎖定上述碼是有益的。
傳統(tǒng)的處理器通過鎖定整個快取信道來鎖定功能性運算,雖然鎖定改善了中斷與頻繁使用的碼的執(zhí)行性能,但擷取其余碼的性能將會下降。假設(shè)4K四向快取的每一快取通道儲存1K,以及600字節(jié)的中斷慣例程序被鎖定于快取中,在上述鎖定的快取通道中有424個沒有使用的字節(jié)被浪費了,軟件程序設(shè)計者可以鎖定其它編碼,但是將會很難決定要在上述剩余的空間中放入哪些編碼。另一方面,假設(shè)有64K字節(jié)的四向快取,每一快取通道為16K,如果一樣鎖定600字節(jié)于其中一個快取通道,將會有約15K字節(jié)被浪費。因為近來的趨勢傾向于設(shè)計較大的快取,每個快取通道必然也較大,不必要的鎖定浪費了快取通道的空間。因此,為了滿足上述的不足和不適當(dāng),盡量減少快取通道空間的浪費在此產(chǎn)業(yè)中是必須的。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種鎖定編碼(例如數(shù)據(jù)或是指令)于快取中的系統(tǒng)與方法,同時,本發(fā)明所提出的處理器可以提供電路設(shè)計者描述鎖定編碼的特征,并且能節(jié)省快取空間。于一實施例中,本發(fā)明所提出的處理器包含有快取和快取控制器,上述快取可暫存存儲器中的編碼復(fù)本,且上述快取可分成多個快取通道(cache way),每個快取通道又可分成多個快取通道部分(cache way portion);上述快取控制器利用第一和第二信號來控制上述快取,其中,第一信號是指出哪一個快取信道為部分快取信道(partial cache way),而第二信號是定義部分快取通道中的哪些快取通道部分是被鎖定。
此外,于另一實施例中,上述快取控制器控制快取中編碼的配置,包含有暫存器以儲存部分快取信道信號,上述部分快取信道信號指出哪一個快取信道為部分快取信道,其中,部分快取通道又分為多個快取通道部分;上述快取控制器也可包含另一暫存器以儲存鎖定部分信號(locked portionsignal),其中,上述鎖定部分信號說明部分快取信道中的每一個快取通道部分為鎖定或是沒有鎖定。
于另一實施例中,本發(fā)明揭示一種快取,包含有數(shù)個快取通道,每個快取通道可分為多個快取通道部分,所有快取通道中至少一個快取通道會被指定為部分快取通道,每一個快取通道部分有各自的地址,且部分快取通道中的每個快取通道部分會被標明是鎖定或沒有鎖定。
再者,于另一實施例中,本發(fā)明揭示一種鎖定編碼于快取中的方法,上述方法包含自數(shù)個快取通道中指定一快取信道,有較低地址(lower address)的快取通道被定義為鎖定,有較高地址(higher address)的快取通道則被定義為沒有被鎖定,而被指定的快取通道的每個部分會被標明是被鎖定或是沒有被鎖定。
圖1為本發(fā)明實施例的計算機系統(tǒng)的方塊圖。
圖2為本發(fā)明實施例于圖2中上述快取系統(tǒng)的方塊圖。
圖3為本發(fā)明實施例于圖2中上述快取控制器的方塊圖。
圖4A與4B為舉例說明直接映像快取的圖示。
圖4C為圖3中被鎖定部分信號被加載至被鎖定部分暫存器的圖標。
圖5A與5B為舉例說明四向集合關(guān)系型快取的圖標。
圖5C為舉例說明圖3中部分快取信道信號被加載至上述部分快取信道暫存器的圖標。
圖5D為舉例說明圖3中被鎖定部分信號被加載至被鎖定部分暫存器的圖標。
圖6A與6B為舉例說明八向集合關(guān)系型快取的圖標。
圖6C為舉例說明圖3中部分快取信道信號被加載至上述部分快取信道暫存器的圖標。
圖6D為例說明圖3中被鎖定部分信號被加載至被鎖定部分暫存器的圖標。
圖7為本發(fā)明實施例的目前揭示的執(zhí)行方法流程圖。
具體實施例方式
為讓本發(fā)明的上述和其它目的、特征、和優(yōu)點能更明顯易懂,下文特舉出較佳實施例,并配合所附圖式,作詳細說明如下實施例通常來說,快取系統(tǒng)可以根據(jù)其性能來分析,通過分析快取尋到的百分比與處理器的總計擷取時間,電路設(shè)計者可以根據(jù)這些信息來最佳化快取性能。本發(fā)明揭示一種和處理器合并的架構(gòu),上述架構(gòu)能使電路設(shè)計者讓快取使用的最佳化更佳,并且允許電路設(shè)計者鎖定可能被使用到的碼段以加快擷取速度。本發(fā)明提出一種系統(tǒng)與方法使設(shè)計者能鎖定快取通道中單一部分,取代前案直接鎖定整個快取通道的做法,對最佳化快取空間提供較佳的彈性。本發(fā)明所謂的快取空間舉例來說可包含,程序編碼、數(shù)據(jù)、或兩者皆是,所謂的“碼”是用于表現(xiàn)快取中任何可能的內(nèi)容。本發(fā)明中,部分或完全鎖定一快取部分可簡單地被解釋成沒有被丟棄的數(shù)據(jù)的部分,上述的鎖定沒有必要防止快取鎖定部分的單獨更新。
由于較大快取通道的需求持續(xù)增加,提供有效率地使用較小部分的低集合關(guān)系型快取的系統(tǒng)和方法是需要的,像是四向或是八向集合關(guān)系型快取。本發(fā)明提出的系統(tǒng)允許電路設(shè)計者鎖定低集合關(guān)系型快取的較小部分以避免浪費不必要的快取空間。本發(fā)明提出分割快取通道至較小部分的處理器,使電路設(shè)計者能鎖定更精確的較小快取空間并且不會浪費大量剩余的快取空間。電路設(shè)計者可自行決定需要被鎖定的高優(yōu)先權(quán)碼與使用頻繁的碼,而比較不重要的快取空間可以保留給這些碼,接著加載并鎖定這些編碼至保留的快取空間,如此一來,剩余的較大快取部分可以作為正??烊∥恢?。因此,可以快速地擷取高優(yōu)先權(quán)編碼與高使用頻率編碼,亦可以最佳化一般編碼的快取尋到機率,因而增加處理器整體速度。
圖1為本發(fā)明實施例計算機系統(tǒng)10的方塊圖,其中包含有處理器12、主存儲器14與輸入/輸出(I/O)裝置16,每個元件之間由內(nèi)部總線18連接,如圖2所示。處理器12包含快取系統(tǒng)20,快取系統(tǒng)20包含有快取控制器22與快取24。
快取24是第一階層1(L1)快取,或稱為主要快取。舉例來說,其可包含有32K字節(jié)的同步隨機擷取系統(tǒng)(SRAM),快取24用于暫時儲存處理器12可能會再使用到的碼的區(qū)域復(fù)本。主存儲器14包含動態(tài)隨機擷取存儲器(DRAM),通常較SRAM便宜,但需要較多的擷取時間。因為自主存儲器14擷取數(shù)據(jù)必須經(jīng)過總線18,而速度受限于總線18的clock,因此,最好盡量使用快取24內(nèi)的碼。
快取24可以包含有集合關(guān)系型架構(gòu),或者換句話說,其包含有數(shù)個快取通道??烊?4可為直接映像快取,映像快取沒有如集合關(guān)系型架構(gòu)的分割的快取信道,集合關(guān)系型架構(gòu)的每一個快取通道儲存有數(shù)個快取線,每一條快取線代表數(shù)個編碼項目,其中每一個編碼項目通常是1字節(jié)。于某些實施例中,每一條快取線可為32字節(jié)。根據(jù)本發(fā)明的揭示,快取24的每一快取通道是分割成數(shù)個快取通道部分,每一快取通道部分將會有數(shù)條快取線,每一快取通道部分被設(shè)計成有各自的地址,其可獨自分別于其它的部分被尋址,同時,每一快取通道部分可以分別被指定為鎖定或非鎖定。
快取控制器22用以控制快取24相關(guān)的操作。當(dāng)處理器12要求自主存儲器14擷取數(shù)據(jù)或指令時,快取控制器22以快取24的快取線的地址確認要求的地址是否存在于快取24中,如果存在,則此擷取稱為“快取尋到”,且數(shù)據(jù)可以立即自快取24中擷取。如果數(shù)據(jù)不在快取24中,則此結(jié)果稱為“快取失誤”,處理器12必須要求自主存儲器14擷取數(shù)據(jù)并且儲存數(shù)據(jù)的復(fù)本于快取24中,以供下次使用到上述筆數(shù)據(jù)的可能性。當(dāng)碼自主存儲器14被讀取,處理器12需要等待大約10到100時鐘的周期。
舉例來說,處理器12可被設(shè)計成用32位地址空間為主存儲器14運作,對有4K字節(jié)的快取而言,前20位(位31到12)是卷標地址,并且被儲存于標簽快取,可以通過比較要求的卷標地址來確認上述要求的編碼是否在快取中。后12位(位11到0)為“偏移位”,“偏移位”指出快取中上述編碼被儲存的位置,偏移位的12位中的位地址[4:0]是作為快取線偏移位,與同一個32字節(jié)快取線相關(guān)聯(lián)。每一條快取線的大小是由快取線偏移位的長度決定,例如,使用12位的偏移位中的位地址[4:0]作為快取線偏移位,快取線的大小為25(32)字節(jié),12位偏移位中的位地址[11:5]是定義為標簽偏移位,與有相同卷標地址的快取線有關(guān)聯(lián)。在直接映像快取中,快取項目將會基于后半段的12個位被儲存在快取中唯一位置,因此,兩個有相同的偏移的快取線將無法同時被儲存在快取中。
快取控制器22使用快取配置算法來決定快取24中的哪個位置要被新接收的碼取代。同時,快取配置算法決定哪些碼要自快取24被丟棄,丟棄策略可包含輪替(round robin)技術(shù)、最不常使用(least recently used)技術(shù)或是其它合適的技術(shù)。
除了執(zhí)行快取配置算法之外,快取控制器22也儲存“部分快取信道”信號,此信號是指出全部快取通道中哪一個快取通道被部分鎖定。此信號類似于前案用來判斷哪一個快取信道被鎖定的信號,不同的部分在于,本發(fā)明所揭示的部分快取信道信號可通過處理器12的進一步信息表明快取信道是完全被鎖定、完全沒有被鎖定或是部分鎖定,沒有被部分快取信道信號指明為部分快取信道的快取信道則是完全被鎖定或是完全沒有被鎖定,沒有被鎖定的快取信道即可供標準配置運用。
一個四向集合關(guān)系型快取有快取通道0到3,使用一個長度為2位的部分快取信道信號來定義鎖定樣式以及標明特定快取通道。數(shù)值為00的一部分快取信道信號代表(如果有鎖定部分的話)鎖定部分只會出現(xiàn)在第0個快取通道;數(shù)值01代表第0個快取通道被完全鎖定,并且第1個快取通道可能有部分部分被鎖定,而第2和第3快取通道沒有被鎖定且可供標準配置使用;數(shù)值10代表第0和第1快取通道被完全鎖定且第2快取通道有可能有部分部分被鎖定,第3快取通道則沒有被鎖定;數(shù)值11代表第0到2快取通道都被完全鎖定,且第3快取通道可能被部分鎖定。對一個八向快取而言,部分快取信道信號為3位,而十六向快取的部分快取信道信號則為4位,以此類推。
快取控制器22同時也儲存“鎖定部分信號”,鎖定部分信號標明部分鎖定快取信道的快取信道部分為鎖定或是可供標準配置使用,鎖定部分信號定義上述部分快取通道為完全鎖定、完全沒有鎖定或是部分鎖定。電路設(shè)計者可以建立任何合適的符號來表示被鎖定和沒有鎖定的部分,鎖定部分信號的每一位代表相對應(yīng)的快取通道部分的鎖定狀態(tài),“0”表示上述部分被鎖定,而“1”則表示上述部分沒有被鎖定(或是開放可供標準配置使用)。舉例來說,一個快取可能每個快取通道分成四個快取通道部分,快取通道部分的鎖定狀態(tài)由包含四位的鎖定部分信號定義,例如,如果想鎖定特定快取通道的第1、第3和第4部分,則鎖定部分信號為0100;有八個快取通道部分的快取信道的鎖定部分信號則有8位。先前所提的部分快取信道信號與鎖定部分信號的結(jié)合可以提供電路設(shè)計者在鎖定的快取空間利用上較前案有更好的解決方式,因此,較小的部分像是1K或2K字節(jié)的部分可以依照需要的時候被鎖定。
經(jīng)由處理器12的設(shè)計平臺,允許電路設(shè)計者通過設(shè)定部分快取信道信號與鎖定部分信號來建立高優(yōu)先權(quán)編碼所需的快取。這些信號可利用各種合適的方法加入快取控制器22,一旦加載高優(yōu)先權(quán)碼,部分快取信道信號與鎖定部分信號將會被永久地設(shè)定,因此在處理器12做標準操作的期間,這些信號會保持固定。
圖3為本發(fā)明實施例圖2中快取控制器22的方塊圖,快取控制器包含有控制模塊26、部分快取信道暫存器28與鎖定部分暫存器30。快取控制器22控制快取24中的編碼配置,控制模塊26在處理器12設(shè)計期間中接收來自電路設(shè)計者的信號,信號所指出的快取信道和快取信道部分將會被鎖定??刂颇K26發(fā)出部分快取信道信號將會被寫入快取信道暫存器28,上述的部分快取信道信號指定快取24中一快取信道為部分快取信道。上述部分快取通道又分成數(shù)個快取信道部分,響應(yīng)電路設(shè)計者所給的信號??刂颇K26發(fā)出鎖定部分信號并且被寫入鎖定部分暫存器30,上述的鎖定部分信號標明每個快取通道部分是否被鎖定。
無論上述碼所在的快取信道或是快取信道部分是否被鎖定,控制模塊26同時也控制快取通道中碼的擷取??刂颇K26也保證自主存儲器14接收到的碼不會取代已鎖定的碼而使已鎖定的碼被丟棄,自主存儲器14接收到的碼只會被放置快取24中到?jīng)]有被鎖定的部分??刂颇K26包含配置編碼以及丟棄舊的或是不需要碼的配置算法,且更進一步設(shè)計成使程序能將被鎖定的碼加載到至少一個快取通道部分。控制模塊26能分別根據(jù)儲存于部分快取信道暫存器28的部分快取信道信號和儲存于鎖定部分暫存器30的鎖定部分信號,使加載的碼鎖定在至少一個快取通道部分中。
圖4A為直接映像快取的示意圖。在本實施例中,是一個64K字節(jié)的快取。例如有地址偏移范圍自0000(十六進制)至FFFF(十六進制),快取可以被分成數(shù)個部分,數(shù)量不限,如圖4B所示。上述快取分成16個部分,每個部分為4K字節(jié),編碼地址中的四個位是用來確定是16個部分中的哪一個特定部分。因為直接映像快取沒有快取通道,所以在此例中快取控制器22沒有必要儲存部分快取信道信號。但是,一個十六位的鎖定部分信號仍是必須用來標明十六個部分中哪一個要被鎖定,“0”代表鎖定的部分,“1”代表沒有被鎖定的部分,如圖4C圖示。如果鎖定部分信號為0011_1111_1111_1111,則第一和第二部分是要被鎖定的,而剩余的十四個部分是沒有被鎖定的。在鎖定這兩個部分之前,電路設(shè)計者可加載8K字節(jié)的數(shù)據(jù)或指令到要被鎖定的部分中,接著這16位的鎖定部分信號會被加載到鎖定部分暫存器30以便鎖定這兩個部分。
圖5A為一個四向集合關(guān)系型快取的示意圖。在本實施例中,上述快取總共有64K字節(jié),而且這四個各有16K字節(jié)的快取信道均有14位的地址偏移,范圍自0000至3FFF,每一快取通道可以被分成數(shù)個部分。在圖5B圖示中,每一個快取通道被分成8個快取通道部分,每一部分為2K字節(jié)。在這個四向快取結(jié)構(gòu)中,編碼地址中的0到10的位用來指出各自的快取信道地址的2K數(shù)據(jù)地址的偏移;3個位(地址[13:11])用來區(qū)別快取通道部分(如同圖5B的快取通道部分左方所示);以及這兩個最高位的位(地址[15:14])則是指明上述編碼將被儲存于四個快取通道中哪個快取通道。在本實施例中,快取控制器22儲存一個長度為2位的部分快取信道信號以指明四個快取通道中的某一個為部分快取通道,此外,也儲存一個八位的鎖定部分信號以指明八快取通道部分中的哪些(如果有的話)是被鎖定的。
例如,參考圖5C與圖5D圖示,如果部分快取信道信號是01以及鎖定部分信號是0101_1111,則快取通道0是完全被鎖定與快取通道2和3是完全沒有被鎖定。在快取通道1中,第1和第3快取通道部分000和010是被0鎖定,并且快取通道1中其余的六個快取通道部分(001、011、100、101、110與111)是沒有被鎖定。2位的部分快取信道信號被加載至部分快取信道暫存器28中(圖5C),以及8位鎖定部分信號是被加載鎖定部分暫存器30(圖5D)。
假設(shè)一快取包含有32K字節(jié)的四向集合關(guān)聯(lián)架構(gòu),其中,每一快取通道被分成八個快取通道部分,每一快取信道為8K字節(jié)以及每一快取通道部分為1K字節(jié)。較低地址只需要15位來定義地址,10位(地址[9:0])定義1K部分快取通道的偏移;接下來的3位(地址[12:10])是定義各個快取信道的快取信道部分,最上面的兩個位(地址[14:13])是用來定義四個快取通道。
假設(shè)一個四向集合關(guān)系型快取中的每一快取通道分為四個快取通道部分。如果想要鎖定第一快取通道全部部分以及第二快取通道的第三個部分,則部分快取信道信號為01,并且四位的鎖定部分信號為1101。另外一個例子,如果想要鎖定第一快取通道的第一和第四部分,則部分快取信道信號為00且鎖定部分信號為0110。
圖6A為一個八向集合關(guān)系型快取示意圖。此實施例中,上述快取總共64K字節(jié),而且這八個有8K字節(jié)的快取信道有地址偏移自0000至1FFF,每一快取通道分為數(shù)個部分。如圖6B圖示,每一快取通道分成四個快取通道部分,每個部分為2K字節(jié)。在上述八向快取架構(gòu)中,位0到10的位用來指出各自的快取信道地址的2K數(shù)據(jù)地址的偏移;2位(地址[12:11])定義快取通道部分;以及最高位中的三個位(地址[15:13])指出編碼被儲存在八個快取通道中的哪一個??烊】刂破?2儲存一個長度為3位的部分快取信道信號以指定八個快取通道中哪一個為部分快取通道,同時也儲存一個長度為4位的鎖定部分信號以指定要鎖定選取的快取通道的四個快取通道部分中的哪一個快取通道部分。
參考圖6C與圖6D,如果部分快取信道信號是001以及鎖定部分信號是1101,則快取通道0是完全被鎖定,而快取通道2到7則是完全沒有被鎖定??烊⌒诺?中,只有快取通道部分10被鎖定,其余的三個快取通道(00、01和11)部分則沒有被鎖定。3位的部分快取信道信號被加載至部分快取信道暫存器28中(圖6C),以及4位鎖定部分信號是被加載鎖定部分暫存器30(圖6D)。
本發(fā)明描述了四向與八向集合關(guān)系型快取的范例,雖然在本發(fā)明中四向與八向快取為較佳實施例,但是要注意的是,快取24可以按照電路設(shè)計者的希望分割成任何合適數(shù)目的快取通道。同時,在此以分割成四個或八個快取通道部分的快取信道為范例,雖然這也是較佳實施例,但是仍要注意的是,快取信道可以按照電路設(shè)計者的希望分割成任何合適數(shù)目的快取通道部分。
本發(fā)明同時定義了鎖定編碼于快取中的方法,包含有自數(shù)個快取通道中指定一快取通道,其中,排序在上述快取信道之前的快取信道皆被完全鎖定,排序在后的則完全沒有被鎖定,而被指定的快取通道則會被指定每個部分是被鎖定或是沒有被鎖定。本方法的優(yōu)點是提供簡單且有效率的方式,通過鎖定快取中較小的部分以減低快取空間的浪費。
圖7為本發(fā)明鎖定數(shù)據(jù)或碼于快取中的方法的流程圖。如方塊32所示,上述方法包含自數(shù)個快取通道中指定一快取通道,在方塊34中,地址比指定的快取信道低的快取信道被定義為鎖定。在方塊36中,地址比指定的快取通道高的則被定義為沒有被鎖定。被指定的快取通道則會被指定每個部分是被鎖定或是沒有被鎖定,如方塊38所示。
基于處理器對編碼擷取的分析,電路設(shè)計者可選擇依序鎖定給定的碼于快取中,以改善處理器的效能。根據(jù)分析,電路設(shè)計者可利用本發(fā)明所提出的鎖定特征來描述要鎖定的碼,知道了要被鎖定的碼,設(shè)計者可將上述碼載入至可用的快取通道部分并且輸入部分快取信道信號和鎖定部分信號的值以把碼鎖定于快取中。因此,借著減低空間浪費,較大的快取剩余空間可以使快取尋到機率提高,同時,借著將高優(yōu)先權(quán)的編碼鎖定于快取中,上述編碼可被快速地擷取以掌握實時或是頻繁的使用。
于本發(fā)明的實施例中,還可以計算當(dāng)發(fā)生快取遺失時的遺失數(shù)據(jù)長度,接著比較上述遺失數(shù)據(jù)和上述指定快取通道中被標明為非鎖定部分的長度。當(dāng)遺失數(shù)據(jù)的長度比上述指定快取通道中非鎖定部分的長度較小或是相同,加載上述遺失數(shù)據(jù)至上述指定快取通道中被標明為非鎖定的部分。當(dāng)上述遺失數(shù)據(jù)的長度大于上述指定快取通道中非鎖定部分的長度,加載上述遺失數(shù)據(jù)至上述非鎖定的快取通道。
本發(fā)明雖以較佳實施例揭露如上,然其并非用以限定本發(fā)明的范圍,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動與潤飾,因此本發(fā)明的保護范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準。
權(quán)利要求
1.一種可鎖定碼的快取系統(tǒng)的處理器,包含有快取,用于暫存主存儲器中的碼的復(fù)本,其中,上述快取是分割為多個快取通道,上述每一快取通道分割成多個快取通道部分;以及快取控制器,用于控制上述快取,其中,上述快取控制器利用第一信號指定上述多個快取通道中的一快取信道為部分快取信道,以及利用第二信號指定哪些上述部分快取信道中的快取信道部分是被鎖定的。
2.根據(jù)權(quán)利要求1所述的處理器,其中,上述快取控制器包含部分快取信道暫存器以儲存上述第一信號作為部分快取信道信號,上述快取控制器包含鎖定部分暫存器以儲存上述第二信號作為鎖定部分信號。
3.一種可鎖定碼的快取控制器,用以控制快取中碼的配置,上述快取被分割成多個快取通道,上述快取控制器包含有部分快取信道暫存器,用以儲存部分快取信道信號,上述部分快取信道信號是指定上述快取多個快取通道中的一快取信道作為部分快取信道,上述部分快取通道分成多個快取通道部分;以及鎖定部分暫存器,用以儲存鎖定部分信號,上述鎖定部分信號是標明上述部分快取通道的每一快取通道部分是否被鎖定。
4.根據(jù)權(quán)利要求3所述的快取控制器,包含控制模塊,用以控制上述快取通道中上述碼的配置以及控制那些沒有被鎖定的快取通道部分。
5.根據(jù)權(quán)利要求4所述的快取控制器,其中,上述控制模塊使得碼被加載到至少一快取通道部分,其中,上述控制模塊使得上述加載的碼被鎖定在至少一快取通道部分,上述快取通道部分是對應(yīng)上述部分快取信道信號與上述鎖定部分信號。
6.一種可鎖定碼的快取,其包含有數(shù)個快取信道,其特征在于每一快取通道是分割成多個快取通道部分,上述數(shù)個快取通道中,至少一快取通道能被指定為部分快取通道;每一快取通道部分是可被分別尋址的;以及上述部分快取通道的每一快取通道部分是被標明為被鎖定或是非鎖定的。
7.根據(jù)權(quán)利要求6所述的快取,其中,相較于上述被指定的快取信道,有較低地址的快取信道被標明為鎖定,相較于上述被指定的快取信道,有較高地址的快取信道則被標明為非鎖定的。
8.一種高速緩存中鎖定碼的方法,包含有自多個快取通道中指定一快取通道,相較于上述被指定的快取信道,有較低地址的快取信道被標明為鎖定,相較于上述被指定的快取信道,有較高地址的快取信道則被標明為非鎖定的;以及標明上述指定的快取通道中的數(shù)個部分為鎖定的或是非鎖定的。
9.根據(jù)權(quán)利要求8所述的方法,包含有當(dāng)有上述快取通道被標明為鎖定時,加載碼至上述被定義為鎖定的快取通道;鎖定上述被標明為鎖定的快取通道;當(dāng)有上述被標明為鎖定的部分時,載入碼至上述被標明為鎖定的部分;以及鎖定上述被標明為鎖定的部分。
10.根據(jù)權(quán)利要求8所述的方法,包含有計算當(dāng)發(fā)生快取遺失時的遺失數(shù)據(jù)長度;比較上述遺失數(shù)據(jù)和上述指定快取通道中被標明為非鎖定部分的長度;以及當(dāng)遺失數(shù)據(jù)的長度比上述指定快取通道中非鎖定部分的長度較小或是相同時,加載上述遺失數(shù)據(jù)至上述指定快取通道中被標明為非鎖定的部分。
全文摘要
本發(fā)明實施例揭示一種于高速緩存鎖定編碼的系統(tǒng)與方法。實施例中,處理器(processor)包含有快取(cache)以及快取控制器(cachecontroller)。上述快取用于暫存主存儲器中的編碼的復(fù)本。同時,上述快取被分割成數(shù)個快取通道(cache way),每一快取通道是分割成數(shù)個快取通道部分(cache way portion)。上述快取控制器是利用第一信號以指定數(shù)個快取通道中的一快取信道為部分快取信道,以及第二信號用于定義上述部分快取通道中的哪些快取通道部分是要被鎖定(lock)。
文檔編號G06F12/08GK101046775SQ20071010450
公開日2007年10月3日 申請日期2007年5月25日 優(yōu)先權(quán)日2006年7月18日
發(fā)明者威廉V·米勒 申請人:威盛電子股份有限公司