專利名稱:本地存儲器數(shù)據(jù)的一致性高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有本地存儲器的處理器系統(tǒng),具體而言涉及在多處理器系統(tǒng)中本地存儲器數(shù)據(jù)的一致性高速緩存。
背景技術(shù):
一直存在著提高處理器系統(tǒng)的速度和使它們處理更大量數(shù)據(jù)的能力的驅(qū)動力。為了實現(xiàn)提高速度的目的,并行技術(shù)得到了更多的應(yīng)用,利用并行技術(shù)將復(fù)雜的程序作為多個復(fù)雜度較低的例程同時運(yùn)行來執(zhí)行以提高性能。另一種用來提高速度的手段是提供高速緩沖存儲器。
高速緩沖存儲器通過將常用的一部分?jǐn)?shù)據(jù)和指令的拷貝從主系統(tǒng)存儲器存儲到緊耦合、低時延的高速緩沖存儲器中來進(jìn)行工作。這意味著被頻繁訪問的數(shù)據(jù)或指令是從高速緩沖存儲器中獲取的,從而避免了訪問主系統(tǒng)存儲器的需求。因此,每當(dāng)發(fā)出新的讀和寫命令時,系統(tǒng)首先查詢高速緩沖存儲器,以確定信息是否存儲在高速緩存中。如果信息在高速緩沖存儲器中,就不需要訪問主系統(tǒng)存儲器,而可以更容易地執(zhí)行命令或者訪問數(shù)據(jù)。
高速緩沖存儲器系統(tǒng)的本質(zhì)是一種保證一個或者多個處理器高速緩存和主系統(tǒng)存儲器本身中的數(shù)據(jù)拷貝之間的一致性的需求。一種確保一致性的方法是“MESI”協(xié)議,其包括每個高速緩存塊的狀態(tài)信息。所述狀態(tài)信息包括指示高速緩存行(cache line)是否被修改(Modified)、共享(Shared)、獨(dú)占(Exclusive)和無效(Invalid)(MESI)。
在MESI系統(tǒng)中,當(dāng)未共享的高速緩存行被訪問時,其被標(biāo)記為“獨(dú)占”(E)。其后的讀將不會改變其狀態(tài),但是隨后對該高速緩存行的寫將其狀態(tài)改變?yōu)椤靶薷摹?M)。如果多處理器系統(tǒng)中的另一處理器將高速緩存數(shù)據(jù)裝載進(jìn)其自身的高速緩存中,則高速緩存行被標(biāo)記為“共享”(S)。如果處理器想向共享的高速緩存寫數(shù)據(jù),則必須向所有其它處理器發(fā)送無效命令,或者至少向所有其它具有所述共享數(shù)據(jù)的拷貝的處理器發(fā)送無效命令。在處理器能夠從修改的高速緩存行中載入數(shù)據(jù)前,具有修改的高速緩存行的處理器必須將所述數(shù)據(jù)寫回存儲器中,并且將所述數(shù)據(jù)標(biāo)記為共享(S)。對被標(biāo)記為無效(I)的高速緩存行的任何讀或者寫均會導(dǎo)致高速緩存未命中(cache miss)。
以上介紹的協(xié)議,例如MESI協(xié)議,確保了高速緩沖存儲器保持一致性,這使得它們在多處理器系統(tǒng)中對于軟件是透明的。關(guān)于高速緩沖存儲器和高速緩沖存儲器一致性的進(jìn)一步內(nèi)容可以在出版物John L.Hennessy和David A.Patterson的Computer Architecture aQuantitative Approach(計算機(jī)體系結(jié)構(gòu)一量化研究方法),2003,第三版中找到。
雖然高速緩沖存儲器提供了上述優(yōu)點(diǎn),但是它們也具有與其它類型的存儲器設(shè)備相比設(shè)計復(fù)雜、相對昂貴的缺點(diǎn)。例如,高速緩沖存儲器需要比較器來檢查標(biāo)簽與呈現(xiàn)的地址,以及需要選擇器來選擇匹配的方式。高速緩沖存儲器還具有用于管理數(shù)據(jù)替換的最近最少使用(LRU)位,并且需要回拷(copyback)功能來管理修改數(shù)據(jù)的寫回。高速緩沖存儲器還由于高速緩沖存儲器中位的訪問方式,而比其它類型的存儲器消耗更多的能量。進(jìn)一步地,在高速緩存中數(shù)據(jù)命中或者未命中的方式取決于替換策略(典型地為LRU),其對于軟件而言難于預(yù)測。
處理器系統(tǒng),例如用于數(shù)字信號處理的處理器,還使用本地存儲器作為提高處理速度的方式。本地存儲器使得能夠在處理器和本地存儲器之間直接進(jìn)行讀和/或?qū)懖僮?,而不是和單?dú)的主存儲器,例如隨機(jī)訪問存儲器(RAM)來進(jìn)行。盡管對于訪問本地存儲器的特定處理器而言,本地存儲器允許其處理速度提高,但對于多處理器系統(tǒng)其卻未提供任何更多的優(yōu)勢。
本發(fā)明的目的是提供一種多處理器系統(tǒng),其中提供本地存儲器數(shù)據(jù)的一致性高速緩存。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種多處理器系統(tǒng),包括多個處理器,所述處理器中的一個或者多個具有關(guān)聯(lián)的高速緩沖存儲器;系統(tǒng)總線,用于連接所述多個處理器;與所述多個處理器中的一個相關(guān)聯(lián)的本地存儲器;其中所述本地存儲器用于由其關(guān)聯(lián)的處理器進(jìn)行訪問,還用于由所述多處理器系統(tǒng)中的所述多個處理器中的另外一個進(jìn)行訪問。
本發(fā)明的優(yōu)點(diǎn)是提供具有可預(yù)測的定時特性的、快速的、低能秏的、廉價的本地存儲器,同時優(yōu)點(diǎn)還有使多處理器系統(tǒng)中的其它處理器也能訪問所述本地存儲器。
根據(jù)本發(fā)明的另一方面,提供了一種在多處理器系統(tǒng)中處理數(shù)據(jù)的方法,所述多處理器系統(tǒng)包括多個連接到系統(tǒng)總線的處理器,所述多個處理器中的至少一個具有高速緩沖存儲器,所述方法包括以下步驟提供本地存儲器,所述本地存儲器連接到關(guān)聯(lián)的處理器;以及配置所述本地存儲器使得其能夠由與其關(guān)聯(lián)的處理器直接訪問,并且能夠由其它處理器中的一個或者多個通過所述系統(tǒng)總線訪問。
為了更好地理解本發(fā)明,以及更清晰地示出其如何執(zhí)行生效,將僅通過舉例的方式來參照下面的附圖,其中圖1示出了根據(jù)本發(fā)明優(yōu)選實施例的多處理器系統(tǒng)的概要視圖;圖2示出了描述根據(jù)本發(fā)明的讀操作的流程圖;圖3示出了描述根據(jù)本發(fā)明的寫操作的流程圖。
具體實施例方式
圖1示出了根據(jù)本發(fā)明的多處理器系統(tǒng)1。多處理器系統(tǒng)1包括多個處理器21至25,系統(tǒng)總線30和主系統(tǒng)存儲器40。每個處理器21至25連接到各自的高速緩沖存儲器41至45,而每個高速緩沖存儲器41至45又連接到系統(tǒng)總線30。如上所述,高速緩沖存儲器41至45存儲各個處理器21至25常用的數(shù)據(jù)或者指令的拷貝,從而處理器21至25在每個讀或者寫操作期間不需要訪問主系統(tǒng)存儲器40。
處理器25連接到具有多個數(shù)據(jù)塊(未示出)的本地存儲器50。根據(jù)本發(fā)明,本地存儲器50具有用于連接到與其關(guān)聯(lián)的處理器25的第一端口51。另外,本地存儲器50具有連接到系統(tǒng)總線30的第二端口52,從而允許其它處理器21至24中的一個或者多個來訪問本地存儲器50。
注意,雖然優(yōu)選實施例示出了處理器25除了連接到本地存儲器50之外還連接到高速緩沖存儲器45,但是應(yīng)該注意,高速緩沖存儲器45是可選的,處理器25可以僅簡單地連接到本地存儲器50。進(jìn)一步地,還應(yīng)該注意,雖然優(yōu)選實施例中的多處理器系統(tǒng)顯示為只有一個處理器25具有本地存儲器50,但是應(yīng)該理解,其它處理器21至24中的一個或者多個也能夠連接到各自的本地存儲器。
因此,應(yīng)該理解,本地存儲器50的第二端口52允許除了關(guān)聯(lián)的處理器25以外的其它處理器21至24訪問本地存儲器50(雖然沒有處理器25和本地存儲器50之間的訪問那么快)。
本發(fā)明允許其它處理器21至24以對軟件透明的方式對本地存儲器50中的數(shù)據(jù)進(jìn)行高速緩存。這使得具有本地存儲器和高速緩存一致性的系統(tǒng)更容易編程。
通過將第一和第二狀態(tài)位與本地存儲器50中的每個塊相關(guān)聯(lián)來使本地存儲器50的一致性成為可能。優(yōu)選地,在該系統(tǒng)中本地存儲器中的每個數(shù)據(jù)塊具有和高速緩存一致性粒度相同的大小(典型地為32或者64字節(jié))。
第一狀態(tài)位被定義為共享位,當(dāng)系統(tǒng)中的另一處理器通過共享讀命令讀取所述塊時其被置位。
第二狀態(tài)位被定義為無效位,當(dāng)系統(tǒng)中的另一個處理器通過獨(dú)占讀命令讀取所述數(shù)據(jù)塊或者向所述數(shù)據(jù)塊發(fā)布升級命令時其被置位。
和本地存儲器50關(guān)聯(lián)的處理器25,即“擁有”本地存儲器50的處理器25,只要訪問其本地存儲器50就檢查共享和無效位。
圖2示出了描述由處理器25對其本地存儲器50執(zhí)行的讀操作的流程圖。在步驟201中,處理器25檢查本地存儲器50中正被訪問的數(shù)據(jù)塊的無效位。如果無效位未被置位,則在步驟207處理器25簡單地繼續(xù)讀操作。然而,如果無效位已被置位,則處理器25在步驟203向系統(tǒng)總線30發(fā)出一個高速緩存查詢和降級命令。所述高速緩存查詢和降級命令要求任何持有處于修改狀態(tài)的數(shù)據(jù)塊的處理器21至25將修改的數(shù)據(jù)塊發(fā)送回本地存儲器50。在步驟204接收到修改的數(shù)據(jù)塊之后,無效位在步驟205被清零,共享位在步驟206被置位。然后在步驟207照常完成讀操作。注意,共享位被置位是因為提供數(shù)據(jù)塊的處理器21至25在其各自的高速緩沖存儲器41至45中保存了處于共享狀態(tài)的數(shù)據(jù)塊的拷貝。由上所述,注意,處理器25還能夠?qū)ζ浔镜卮鎯ζ髦写鎯Φ臄?shù)據(jù)進(jìn)行高速緩存。這可以發(fā)生在不基于存儲器地址而基于指令的操作碼在本地和系統(tǒng)存儲器之間進(jìn)行選擇的處理器中。
圖3示出了描述了對本地存儲器50的寫操作的流程圖。在步驟301中,進(jìn)行寫操作的處理器25檢查正在寫的數(shù)據(jù)塊的無效位和共享位。在步驟302中,處理器25確定是否有其中一個位被置位。如果其中一個位被置位,則處理器25在步驟303向系統(tǒng)總線發(fā)出高速緩存查詢和無效命令。所述高速緩存查詢和無效命令要求在其各自的高速緩沖存儲器41至45中緩存有數(shù)據(jù)塊的處理器21至25無效所述數(shù)據(jù)塊。
如果處理器21至25中的一個具有處于修改狀態(tài)的數(shù)據(jù)塊,則各個處理器在無效之前將修改的數(shù)據(jù)塊寫回本地存儲器50。在修改的數(shù)據(jù)塊被接收回本地存儲器50之后,無效位在步驟307清零,并且在步驟308完成寫操作。
應(yīng)該理解,步驟304至306由具有處于修改狀態(tài)的數(shù)據(jù)塊的各個處理器來執(zhí)行。
如果在步驟302中確定無效或共享位均未被置位,則寫操作在步驟308照常繼續(xù)。
數(shù)據(jù)的回拷(由于其是“被犧牲的”)導(dǎo)致了本地存儲器中其數(shù)據(jù)塊的無效位的重置。這是因為只要新的數(shù)據(jù)塊被裝載到數(shù)據(jù)高速緩存中,老數(shù)據(jù)就必須從該數(shù)據(jù)高速緩存中移除來給新數(shù)據(jù)留出空間。老數(shù)據(jù)就是所謂的被犧牲了。如果老數(shù)據(jù)已經(jīng)被處理器修改了,則該數(shù)據(jù)必須被寫回其源于的存儲器,也就是回拷。
第一和第二狀態(tài)位,也就是共享位和無效位,存儲在數(shù)據(jù)最初存儲的位置,而不是其被高速緩存的位置。換言之,第一和第二狀態(tài)位被存儲在本地存儲器中,而不是高速緩沖存儲器中。
“共享讀”,“獨(dú)占讀”,“高速緩存查詢和降級”,以及“高速緩存查詢和無效”操作都是在支持高速緩存一致性的典型的總線協(xié)議中的命令。具體而言-共享讀用于為了讀數(shù)據(jù)而讀數(shù)據(jù)。
-獨(dú)占讀用于為了修改數(shù)據(jù)而讀數(shù)據(jù)。
-高速緩存查詢和降級要求具有處于修改狀態(tài)的數(shù)據(jù)的處理器將其改變回共享狀態(tài)。
-高速緩存查詢和無效要求在其高速緩存中具有數(shù)據(jù)的處理器將數(shù)據(jù)從高速緩存中移除。
上述本發(fā)明介紹了具有本地存儲器的處理器如何結(jié)合到具有高速緩存一致性的系統(tǒng)中。其它的處理器可以在本地存儲器中高速緩存數(shù)據(jù)而不必要求軟件獲知此信息。
進(jìn)一步地,本發(fā)明的優(yōu)點(diǎn)是提供了本地存儲器數(shù)據(jù)的一致性高速緩存、本地存儲器相比于高速緩存設(shè)計起來更加容易、具有可預(yù)測的定時特性、更快。另外,本地存儲器使用更少的能量并且更便宜。
應(yīng)當(dāng)注意,上述實施例用于解釋而非限制本發(fā)明,本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求限定的范圍的情況下,能夠設(shè)計出許多其它的實施例?!鞍ā边@個詞并不排除權(quán)利要求中列出的元件或者步驟之外的其它元件或者步驟,“一個”或“一種”也不排除多個,以及單個處理器或者其它單元可以實現(xiàn)權(quán)利要求中引用的若干個單元的功能。權(quán)利要求中的任何標(biāo)號不應(yīng)被解釋為對所述權(quán)利要求范圍的限制。
權(quán)利要求
1.一種多處理器系統(tǒng),包括多個處理器,所述處理器中的一個或者多個具有關(guān)聯(lián)的高速緩沖存儲器;系統(tǒng)總線,用于連接所述多個處理器;與所述多個處理器中的一個相關(guān)聯(lián)的本地存儲器;其中所述本地存儲器用于由其關(guān)聯(lián)的處理器進(jìn)行訪問,還用于由所述多處理器系統(tǒng)中的所述多個處理器中的另外一個進(jìn)行訪問。
2.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其中所述本地存儲器包括用于直接和與其關(guān)聯(lián)的處理器進(jìn)行通信的第一端口,以及用于通過所述系統(tǒng)總線來和其它處理器中的一個或者多個進(jìn)行通信的第二端口。
3.根據(jù)權(quán)利要求1或2所述的多處理器系統(tǒng),其中所述本地存儲器被配置來作為一致性高速緩沖存儲器。
4.根據(jù)權(quán)利要求3所述的多處理器系統(tǒng),其中所述本地存儲器用于在數(shù)據(jù)塊中存儲信息,給每個數(shù)據(jù)塊分配第一狀態(tài)位和第二狀態(tài)位,所述第一狀態(tài)位和所述第二狀態(tài)位用于在所述本地存儲器和一個或者多個高速緩沖存儲器之間維持一致性。
5.根據(jù)權(quán)利要求4所述的多處理器系統(tǒng),其中所述第一狀態(tài)位用于指示特定數(shù)據(jù)塊是否正被共享,以及其中所述第二狀態(tài)位用于指示所述特定數(shù)據(jù)塊是否無效。
6.根據(jù)權(quán)利要求4或5所述的多處理器系統(tǒng),其中所述系統(tǒng)用于在所述數(shù)據(jù)塊最初存儲的本地存儲器中存儲所述第一和第二狀態(tài)位。
7.根據(jù)權(quán)利要求4所述的多處理器系統(tǒng),其中所述本地存儲器用于按照與所述系統(tǒng)的高速緩存一致性粒度相對應(yīng)的塊大小來存儲數(shù)據(jù)。
8.一種在多處理器系統(tǒng)中處理數(shù)據(jù)的方法,所述多處理器系統(tǒng)包括多個連接到系統(tǒng)總線的處理器,所述多個處理器中的至少一個具有高速緩沖存儲器,所述方法包括以下步驟提供本地存儲器,所述本地存儲器連接到關(guān)聯(lián)的處理器;以及配置所述本地存儲器使得其能夠由與其關(guān)聯(lián)的處理器直接訪問,并且能夠由其它處理器中的一個或者多個通過所述系統(tǒng)總線訪問。
9.根據(jù)權(quán)利要求8所述的方法,還包括將第一和第二狀態(tài)位分配給存儲在所述本地存儲器中的每個數(shù)據(jù)塊的步驟,所述第一和第二狀態(tài)位用于在所述本地存儲器和所述一個或者多個高速緩沖存儲器之間維持一致性。
10.根據(jù)權(quán)利要求9所述的方法,其中所述第一狀態(tài)位指示特定數(shù)據(jù)塊是否正被共享,以及其中所述第二狀態(tài)位指示所述特定數(shù)據(jù)塊是否無效。
11.根據(jù)權(quán)利要求10所述的方法,還包括在所述數(shù)據(jù)塊最初存儲的本地存儲器中存儲所述第一和第二狀態(tài)位的步驟。
12.根據(jù)權(quán)利要求10或11所述的方法,其中處理器和與其關(guān)聯(lián)的本地存儲器之間的讀操作包括以下步驟確定所訪問的數(shù)據(jù)塊的狀態(tài),并且如果所述數(shù)據(jù)塊被確定為無效,則執(zhí)行以下步驟通過所述系統(tǒng)總線從在其關(guān)聯(lián)的高速緩沖存儲器中存儲有修改的數(shù)據(jù)塊的一個或者多個其它處理器中的每一個獲取修改的數(shù)據(jù)塊;將所述無效狀態(tài)位清零;置位所述共享狀態(tài)位;以及完成所述讀操作。
13.根據(jù)權(quán)利要求10或11所述的方法,其中處理器和與其關(guān)聯(lián)的本地存儲器之間的寫操作包括以下步驟確定所寫的數(shù)據(jù)塊的狀態(tài),并且如果所述數(shù)據(jù)塊被確定為無效或者共享,則執(zhí)行以下步驟確定是否有任何其它處理器具有修改的數(shù)據(jù)塊,如果是,則請求這樣的處理器將所述修改的數(shù)據(jù)塊寫回到所述本地存儲器;以及使所述其它處理器中的每一個各自的存儲器中的數(shù)據(jù)塊無效;將所述無效狀態(tài)位清零;以及完成所述寫操作。
14.根據(jù)權(quán)利要求8所述的方法,其中所述本地存儲器按照與所述系統(tǒng)的高速緩存一致性粒度相對應(yīng)的塊大小來存儲數(shù)據(jù)。
全文摘要
一種多處理器系統(tǒng),包括多個處理器21至25,系統(tǒng)總線30和主系統(tǒng)存儲器40。每個處理器21至25連接到各自的高速緩沖存儲器41至45,而每個高速緩沖存儲器41至45又連接到系統(tǒng)總線30。高速緩沖存儲器41至45存儲各個處理器21至25常用的數(shù)據(jù)或者指令的拷貝,從而消除處理器21至25在每個讀或者寫操作期間訪問主系統(tǒng)存儲器40的需求。處理器25連接到具有多個數(shù)據(jù)塊(未示出)的本地存儲器50。根據(jù)本發(fā)明,本地存儲器50具有用于連接到其各自的處理器25的第一端口51。另外,本地存儲器50具有連接到系統(tǒng)總線30的第二端口52,從而允許其它處理器21至24中的一個或者多個來訪問本地存儲器50。本發(fā)明使用比高速緩沖存儲器更便宜、更快、具有更可預(yù)測的定時的本地存儲器設(shè)備實現(xiàn)了本地存儲器數(shù)據(jù)的一致性高速緩存。
文檔編號G06F12/08GK101065735SQ200580040176
公開日2007年10月31日 申請日期2005年11月8日 優(yōu)先權(quán)日2004年11月24日
發(fā)明者J·霍格布呂格 申請人:皇家飛利浦電子股份有限公司