專利名稱:用于多級處理的方法、系統(tǒng)和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機數(shù)據(jù)處理并特別涉及多處理器數(shù)據(jù)處理。本發(fā)明更特別地涉及用于同步多級處理器的設(shè)備、方法和系統(tǒng)。
背景技術(shù):
由于近來在技術(shù)和架構(gòu)上的改進,單個微處理器的能力已經(jīng)在性能、速度和復(fù)雜性上持續(xù)增長。這一改進在最近遇到了回報遞減。由于增長的存儲器/處理器速度差距和因芯片內(nèi)的導(dǎo)體造成的延遲,單個處理器的性能已經(jīng)開始達到其極限。同時,因較高的組件密度帶來的功率和熱管理限制造成了在時鐘速率增加上的放緩。盡管單個處理器的性能正在達到其極限,但是由于新的多媒體應(yīng)用、更復(fù)雜的數(shù)字信號處理、諸如天氣的建模等科學(xué)應(yīng)用、以及使用CAD工具來設(shè)計復(fù)雜系統(tǒng)的其它工程應(yīng)用,對計算能力的需求正在增長。盡管技術(shù)仍在改進,從而以更高速度在每個芯片上制造更多的晶體管,但是單個處理器的架構(gòu)不能繼續(xù)有效地利用這些改進。結(jié)果是使產(chǎn)業(yè)界轉(zhuǎn)向單個芯片上的多核。產(chǎn)業(yè)界最近已制造出單個芯片上的雙核、四核和八核,并且用戶期待獲得性能上的成比例的增益。此外,利用單個芯片上的多處理器系統(tǒng),直到最近對許多人仍是遙不可及的并行處理,現(xiàn)在可以以可負擔(dān)的成本來提供了。多處理器系統(tǒng)的性能增益也被主要由于同步和通信開銷所引起的基本問題所限制?,F(xiàn)有的解決同步問題的嘗試只取得有限的成功。并行處理器必須將應(yīng)用分割成可以通過共享數(shù)據(jù)來被并發(fā)地執(zhí)行并且可以使用網(wǎng)絡(luò)和存儲器相互通信的處理。數(shù)據(jù)的共享通常使用互斥而在時間上串行。在并行計算中經(jīng)常使用Amdahl定律來預(yù)測通過使用多個處理器而可獲得的理論最大提速。在并行計算中使用多個處理器對程序的提速被程序的順序片段所需的時間所限制。例如,如果程序使用單個處理器核需要20小時,并且一個I小時的特定部分不能被并行化,而其余19小時(95%)的期望部分可以被并行化,則不管我們將多少處理器投入該程序的并行執(zhí)行,最小執(zhí)行時間都不能少于該關(guān)鍵的I小時。因此提速被限制在最多20倍。已經(jīng)聲明,最樂觀的結(jié)果當然是有人想出如何制造隨著核的數(shù)量增加而高效地工作的可靠的并行軟件。這將提供構(gòu)建未來30年的微處理器硬件的亟需的基礎(chǔ)。即使每個芯片上的晶體管數(shù)量每一年或每兩年即翻倍的慣例會停止——即摩爾定律令人害怕的終結(jié),革新的封裝也會允許從多個芯片創(chuàng)建經(jīng)濟的系統(tǒng),這就維持了消費者長久以來享受的性能增益。在多處理器系統(tǒng)中使用特定原子指令來實現(xiàn)同步,該原子指令允許每個處理器先獲取稱作鎖的特定存儲器位置,然后才具有使用共享的數(shù)據(jù)項或進入關(guān)鍵的代碼區(qū)段的權(quán)限。這牽涉到所有N個處理器使用網(wǎng)絡(luò)或總線來競爭以獲取鎖并等待所有其它處理器。處理器在等待期間,在密閉的環(huán)路中自循環(huán),從而浪費了時間和功率。每當處理器獲取鎖時,它都必須在完成時釋放該鎖。這牽涉到使用總線或網(wǎng)絡(luò)使供獲取和釋放每個鎖用的鎖位置無效。SGI 0rigin3000系統(tǒng)中的32處理器的同步的時間成本是花去232000個周期,在此期間32個處理器原本可以執(zhí)行2千2百萬每秒浮點運算次數(shù)(22兆FLOPS),并且這明確地顯示出傳統(tǒng)的同步損害了系統(tǒng)性能。對于使用8個處理器來說,鎖對于使用用于偵聽的芯片外部的網(wǎng)絡(luò)的傳統(tǒng)的多處理器的可擴展性的影響擴展至僅約為6,然而當使用32個處理器時,可擴展性降至I。當使用32個處理器時,具有芯片內(nèi)快速網(wǎng)絡(luò)的多處理器擴展至僅約12。傳統(tǒng)的多核處理器使用特定原子指令作為加載鏈接,再接著使用存儲條件指令來用于同步。LL (加載鏈接)指令將一個數(shù)據(jù)塊載入高速緩存中,然后后續(xù)的存儲條件(SC)指令嘗試寫入同一塊。它只有當從前一 LL起該塊還未被訪問時才成功。在LL與SC對之間的來自另一處理器對該塊的任何訪問都造成SC失敗。這種情況的同步成本是使用總線或網(wǎng)絡(luò)的等待時間,以及每當處理器失敗時,它必須反復(fù)地使用總線以從高速緩存載入塊(因為無效),同時在密閉的環(huán)路中自循環(huán)以等待成功的SC,從而浪費了時間和功率。解決這一問題的一種途徑是多個處理器的研究加速器(RAMP =ResearchAccelerator for Multiple Processors)研究工程。RAMP提議在嘗試開發(fā)用于大規(guī)模并行計算機的有效軟件中,使用現(xiàn)場可編程門陣列(FPGA)來構(gòu)建大規(guī)模海量并行處理器(MPP)(多達1000個處理器)。這種方法的問題是它對大規(guī)模多處理器系統(tǒng)進行仿真但并不精確地代表它的行為。例如,當RAMP使用真實的處理器時,處理器/存儲器速度比變得非常大,造成對大量的處理器的性能增益的限制,并需要隱藏存儲器差距的大的等待時間。FPGA仿真實現(xiàn)了相對于真實系統(tǒng)的少于100倍的減緩。因此,它不能被用于真實的大規(guī)模并行處理系統(tǒng)。事務(wù)存儲器(TM)是作為改進并行處理性能的另一種嘗試而被開發(fā)的。事務(wù)存儲器嘗試通過以原子方式無鎖地執(zhí)行大代碼的事務(wù)來降低同步開銷。如果事務(wù)失敗,則它不提交,因而支持它的開銷被浪費。事務(wù)存儲器系統(tǒng)的關(guān)鍵挑戰(zhàn)是降低實施原子性、一致性和隔離特性的開銷。硬件TM限制是由于在存儲器分級體系的低級別中強制系統(tǒng)進入溢出狀態(tài)的硬件緩沖所導(dǎo)致的。軟件TM當它被促使操縱元數(shù)據(jù)以跟蹤讀和寫集合、附加指令時具有附加限制,該附加指令當被執(zhí)行時增加存儲器系統(tǒng)中的開銷和功耗。以上提到的兩種方法都不能有效地應(yīng)對可擴展性問題。RAMP使處理器減緩,以隱藏真實的快速處理器可能需要幾千條并行的指令來執(zhí)行的巨大的存儲器等待時間。TM限制大塊的代碼并行地運行,并且依賴在事務(wù)間具有并發(fā)性,從而阻止細粒度并行機制,使得系統(tǒng)性能被限制于最慢事務(wù)的性能。最近,研究者已提議了非對稱芯片多處理器(ACM)以改進并行應(yīng)用的串行部分的性能并且還改進關(guān)鍵的區(qū)段,而不是每個處理器使用鎖來運行關(guān)鍵區(qū)段中的代碼,單個處理器對大核(特定的強大的處理器)發(fā)送運行關(guān)鍵區(qū)段的請求,然后發(fā)送請求的處理器可以繼續(xù)執(zhí)行。該方法要求附加的開銷來發(fā)送和接收從每個處理器至大核處理器的消息。關(guān)鍵區(qū)段中的數(shù)據(jù)和代碼必須使用總線而被傳送至大處理器,增加了額外的開銷。這種方法以串行方式一次只能運行一個關(guān)鍵區(qū)段的代碼,并且即使處理器的多個并發(fā)的組不相同也不能允許它們在各自的關(guān)鍵區(qū)段中運行。所有的處理器都一起競爭以得到使用大處理器的權(quán)限,因此一次只有一個處理器成功,而其它處理器必須等待。
ACM所帶來的改進主要是因為大處理器比所有處理器更快并且它可以加速串行代碼。限制在于大處理器消耗更多的功率并且就硅而言要耗費更多來實施。ACM中的另一限制在于,當所有其它處理器使用大處理器來執(zhí)行各自的串行代碼時,大處理器的高速緩存存儲來自缺少空間局部性的不同程序區(qū)域的代碼和數(shù)據(jù),從而造成因清除導(dǎo)致的高速緩存未命中率的增加。當不同的處理器試圖訪問共享數(shù)據(jù)或進入關(guān)鍵代碼區(qū)段時,傳統(tǒng)的多處理器系統(tǒng)使用鎖以在該不同的處理器之間進行同步。每個共享的數(shù)據(jù)項或關(guān)鍵的區(qū)段使用稱作鎖的存儲器位置,該鎖必須通過將設(shè)置成I的寄存器的內(nèi)容與鎖的內(nèi)容交換來獲取,如果寄存器返回0,則鎖空閑并且處理器以原子方式使用寄存器的值將鎖設(shè)置成I。如果該交換在寄存器中返回1,則鎖正在被另一處理器所使用,并且該處理器必須在環(huán)路中自循環(huán)以等待成功的交換。以下是在傳統(tǒng) 的多處理器中用于同步的代碼:R=I;.將處理器寄存器R的值設(shè)置成ILoop: EXCHANGE (R, LOCK) ;.將寄存器與鎖交換If R==Ithen goto Loop; 如果鎖值返回I,則在環(huán)路中等待{enter critical section} ;.否則開始執(zhí)行關(guān)鍵區(qū)段中的代碼Lock=O; 當完成時,設(shè)置1ck=O以使其它處理器進入關(guān)鍵區(qū)段在以上代碼中,因為鎖是共享的變量并且必須在其它處理器的緩存中被更新或無效化,所以每個處理器都需要使用總線或網(wǎng)絡(luò)來寫入鎖。當處理器完成執(zhí)行關(guān)鍵區(qū)段中的代碼并將O寫入鎖中時,它必須使用網(wǎng)絡(luò)。這就要求處理器再一次地使用總線或網(wǎng)絡(luò),并且對于N個處理器,花費將是:2N+1+2 (N-1) +…2+1,即:(2i+l)從i=0到N的總和=2N+NXN個總線周期。以上公式給出了最差的狀況。最好的狀況是2N個總線周期。圖1是示出了在時刻TO處試圖使用總線來獲取共享變量的3個處理器的框圖100。處理器PN是在TO處獲取鎖的第一個處理器,同時P1、PO等待。在Tl處PN釋放鎖,Pl立即獲取鎖,同時PO等待。在時刻T2處Pl釋放鎖并且PO最終獲取該鎖。該例子代表最好的可能的狀況,即2N。
發(fā)明內(nèi)容
本文說明的多級處理通過使上級處理器控制使用共享的數(shù)據(jù)或進入關(guān)鍵區(qū)段的權(quán)限、并且以處理器速度直接將該權(quán)限簽發(fā)至每個處理器,而不需要每個處理器都被牽涉到同步中,從而降低同步開銷的成本。下級并行處理器的指令寄存器在不進行拷貝或傳送的情況下被映射至上級處理器數(shù)據(jù)存儲器,從而使得上級處理器在不需要牽涉到或得知下級并行處理器的情況下能夠讀取每個并行處理器的指令并且改變它。使用上述的多級處理的系統(tǒng)對于使用100周期總線的32傳統(tǒng)多處理器系統(tǒng),將同步等待時間從32X 32X 100周期降低到只有32 X I周期,從而提供3200倍的增益。此外,系統(tǒng)允許不同的共享數(shù)據(jù)項的并發(fā)訪問和使每個處理器在等待訪問共享數(shù)據(jù)的權(quán)限時停止以降低功率的能力。所述實施例使用對SMD的有效實施來提供支持向量運算的簡易方法。該系統(tǒng)通過使高級處理器從順序代碼生成并行代碼(這樣就降低了取指令的帶寬需求),從而為程序員簡化并行編程。當下級處理器被用作再下級并行處理器的同步處理器時,系統(tǒng)將為多處理器提供無限制的可擴展性。
根據(jù)以下為了清楚而結(jié)合附圖所作出的詳細說明,本發(fā)明的特征和優(yōu)點將變得明顯。在附圖中在下級上僅示出了 3個處理器,但應(yīng)當注意,實際數(shù)量將遠超過3個。圖1是試圖使用總線來獲取共享變量的3個傳統(tǒng)處理器的框圖;圖2是包含本發(fā)明的實施例的系統(tǒng)的框圖;圖3是示出了包含本發(fā)明的圖2實施例的系統(tǒng)的另一方面的框圖;圖4是包含示出總線的本發(fā)明的圖2實施例的系統(tǒng)的框圖;圖5是圖2實施例的一部分的詳細設(shè)計的示意圖;圖6是示出了圖2實施例的操作的隊列的框圖;圖7是包含本發(fā)明的方法的流程圖;圖8是本發(fā)明的圖2實施例的另一部分的框圖;圖9是本發(fā)明的另一實施例的框圖;圖10是本發(fā)明的圖9實施例的一部分的框圖;圖11是本發(fā)明的第三實施例的框圖;圖12是本發(fā)明的第四實施例的框圖;圖13是本發(fā)明的第五實施例的框圖。
具體實施例方式以下實施例關(guān)注應(yīng)對包括同步在內(nèi)的并行處理的基本問題。期望有一種適合于當前和未來的大規(guī)模并行系統(tǒng)的解決方案。本實施例消除了對鎖的需要并且通過上級處理器提供同步。上級處理器控制以處理器速度直接將使用共享數(shù)據(jù)或進入關(guān)鍵區(qū)段的權(quán)限簽發(fā)至每個處理器,而不需要每個處理器都為一個鎖而競爭。針對使用共享數(shù)據(jù)的權(quán)限,同步的開銷被降低至一個時鐘。傳統(tǒng)的利用鎖的同步耗費N2個總線周期,與此相比,在本發(fā)明的多級處理中,同步耗費N個處理器周期。對于使用100周期總線的32傳統(tǒng)多處理器系統(tǒng),同步耗費32 X 32 X 100個周期,與此相比,對于多級處理,同步僅耗費32 X I個周期,從而提供3200倍的增益。圖2是包含本發(fā)明的實施例的系統(tǒng)200的框圖。本實施例使用以下稱作SyncP或“同步處理器”的高級處理器201,該高級處理器具有這樣的能力:通過將下級處理器的指令寄存器映射至高級處理器數(shù)據(jù)存儲器中,來查看并且監(jiān)視下級處理器中的所有指令,而不必物理地復(fù)制寄存器或拷貝它們,也不必將下級處理器中的指令傳送至高級處理器。圖2示出了多級處理器201 (SyncP)如何使用專用總線202將所有的下級處理器指令映射至它的數(shù)據(jù)存儲器211中,其中專用總線202使得SyncP201能夠像訪問它自己的存儲器那樣訪問下級處理器的任何指令寄存器。第一下級處理器203使自己的指令寄存器213映射至SyncP201數(shù)據(jù)存儲器位置210,第二下級處理器204的寄存器214映射至數(shù)據(jù)存儲器位置215。以相似的方式,所有處理器(未示出)都映射至201中的數(shù)據(jù)存儲器位置。最終,最后一個下級處理器206的寄存器216映射至數(shù)據(jù)存儲器位置220。監(jiān)視下級處理器203、204至206的指令使得上級處理器201能夠通過在任何時刻基于同步需求將期望的指令注入下級處理器203、204至206的指令寄存器213、214至216來控制它們所執(zhí)行的指令和執(zhí)行指令的時間。以下在實施章節(jié)給出了將下級并行處理器203,204至206的不同指令寄存器213、214至216映射至上級SyncP201的數(shù)據(jù)存儲器211中的實施的詳情。SyncP201從下級處理器203、204至206中選擇的下級處理器執(zhí)行停止指令,該停止指令使它停止執(zhí)行并且等待SyncP201通過讀取下級處理器指令然后插入期望的指令來控制執(zhí)行。SyncP201還能夠控制 每個下級處理器203、204至206的時鐘速度,以允許它通過使用SyncP總線202將特定數(shù)據(jù)代碼發(fā)送至狀態(tài)機從而可靠地從這些處理器的指令寄存器進行寫和讀,其中狀態(tài)機生成時鐘或可以將每個處理器的時鐘控制映射至SyncP201的數(shù)據(jù)存儲器。SyncP201將狀態(tài)機用來生成下級處理器時鐘的值寫至數(shù)據(jù)存儲器211。重要的是要注意:因為下級處理器203、204至206使用停止指令,這給予SyncP201讀和寫入映射至211的指令寄存器所需要的所有時間,所以該特征在多級處理同步中不需要。該時鐘生成特征僅用于SMD (單指令多數(shù)據(jù))和SI>MMD。使下級處理器時鐘同步以使SyncP能夠讀或?qū)懭胂录壧幚砥?03、204至206的指令寄存器的簡單得多的方式是有可能的,并且取決于技術(shù)和實施。本實施例使用高級處理器SyncP201以通過將指令映射至它的數(shù)據(jù)存儲器211來持續(xù)地監(jiān)視下級處理器203、204至206并行處理的指令寄存器。SyncP201用的代碼是:Loop:for (i=0to N_l) ; 對所有的處理器load R, IRi; 讀取下級處理器的每條指令if ((R) ==request to use X); 如果指令是請求使用共享變量Xstore R2, IRi ;.通過將GRANT寫至IRi來確立使用X的權(quán)限或等待if((R)==end of request); 如果處理器從關(guān)鍵區(qū)段代碼完成store R3, IRi ;.確立繼續(xù)執(zhí)行常規(guī)代碼該代碼僅在SyncP201中運行,而N個下級處理器203、204至206執(zhí)行它們的代碼。在本實施例中,同步代碼在后臺運行,而不需要牽涉到或得知下級處理器203、204至206。SyncP201能夠直接寫至請求指令并且給予它進入關(guān)鍵區(qū)段的權(quán)限,同時請求使用同一變量X的其它下級處理器203、204至206等待。請求指令留在它們的指令寄存器中,通過該指令寄存器,處理器203、204至206的流水線通過延長它們的時鐘周期或?qū)⒅噶钷D(zhuǎn)換成停止而被停止。延長時鐘的目的是使它減緩以節(jié)省功率。以下在功率節(jié)省特征章節(jié)中解釋停止指令和延長處理器時鐘的詳情。當從下級處理器203、204至206中選擇的處理器完成執(zhí)行關(guān)鍵區(qū)段中的代碼或完成對共享變量X的使用時,它使用另一條指令,該指令具有用于向SyncP201通知請求X的結(jié)束的停止能力。當SyncP201讀到它時,SyncP201移除該停止指令,并且允許下級處理器203,204至206中所選擇的一者繼續(xù)執(zhí)行它的代碼的其余部分。為所有N個發(fā)出請求的處理器服務(wù)以使用X的時間僅是N個周期的量級。
圖3是示出了 SyncP301用來在3個時鐘周期中為PN306、P1304然后是P0303確立使用共享變量的權(quán)限的方法300的圖。應(yīng)該注意,在圖3中忽略了執(zhí)行關(guān)鍵區(qū)段中的代碼所花費的時間。為了計算由本實施例所實現(xiàn)的同步時間的增益,假設(shè)以下:處理器的數(shù)量=10并且總線周期時間=10個處理器周期;傳統(tǒng)的多處理器同步耗費從2N到2N+NXN ;也即從2 X IOX 10=200 到(200+1000)個周期;多級同步僅耗費N=IO個周期;增益范圍是20到120倍。考慮大量的處理器并且使用100個周期的網(wǎng)絡(luò),增益將是1000倍。重要的是要注意:該增益是在同步時間中而不是在整體性能中。高級處理器301讀和寫下級處理器303、304至306的指令的能力具有下列重要的優(yōu)點:1.由于每個處理器303、304至306不需要自循環(huán)以等待鎖被釋放,因而降低功率。每個下級處理器303、304至306使用停止指令或延長它的時鐘。2.SyncP301監(jiān)視下級處理器303、304至306中的所有指令,因此可以并發(fā)地簽發(fā)同時使用多于一個共享變量的權(quán)限。另一方面,傳統(tǒng)的多處理器依賴于共享的總線,以利用不能被來自其它處理器的其 它讀或?qū)懼噶钪袛嗟脑硬僮鱽碇С滞健?.SyncP301可以為所有下級處理器303、304至306插入一條指令,從而實施簡單而有效的SMD以支持向量運算。4.SyncP301可以將間接數(shù)據(jù)寫至所有下級指令,這使得每個處理器303、304至306將使用數(shù)據(jù)的一個字段來對微代碼ROM進行索引以執(zhí)行不同的指令,而不需要每個處理器從緩存或存儲器中取出任何指令。處理系統(tǒng)的實施例使用特定監(jiān)視總線來讀和寫任何下級處理指令寄存器的內(nèi)容。圖4是示出了使用特定總線402連接至N個下級處理器403、404至406的SyncP401的框圖 400。總線402包括地址總線402a,該地址總線402a定義SyncP401想要訪問N個下級處理器403、404至406的哪一個指令寄存器。地址總線402a具有1gN的引線數(shù)量,對于N=32,地址總線402a只有5條地址線。處理器P0403的指令寄存器IR0413是利用地址=0來訪問的,處理器P1404的IR1414是利用地址=1來訪問的,…并且處理器PN406的IRN416是利用地址=N來訪問的??偩€402還包括數(shù)據(jù)總線402d,該數(shù)據(jù)總線包括所訪問的下級指令寄存器的內(nèi)容,對于64位指令,數(shù)據(jù)總線402d的寬度是64位。當SyncP401從所訪問的指令寄存器讀取數(shù)據(jù)時,SyncP401將它的值與指令代碼的值進行比較。如果該值與像“請求訪問共享變量X”那樣的、與同步有關(guān)的指令的代碼匹配,則SyncP401可以決定通過將允許下級處理器403,404至406具有訪問共享變量的權(quán)限的特定指令寫入所訪問的指令寄存器中,來準予該請求??偩€402還包括分別用于讀/寫至下級處理器403、404至406的指令寄存器413、414至416的控制線(402c)。這是I位線,當它的值=0時,SyncP401執(zhí)行READ (讀),當值=1 時,SyncP401 執(zhí)行 WRITE (寫)。下級處理器403、404至406的指令寄存器413、414至416的地址映射在它的數(shù)據(jù)存儲器映射中不需要在SyncP401的地址O處開始。如果需要將它映射至更高的地址,則當訪問指令寄存器413、414至416時將SyncP401的更高地址線設(shè)置成I。例如,如果當訪問指令寄存器413、414至416時忽略A10,則訪問SyncP401的數(shù)據(jù)存儲器上的IRO的起始地址將是O或1024。重要的是要注意:因為指令寄存器413、414至416具有下級處理器403、404至406的指令寄存器的速度并且它們不對系統(tǒng)耗費任何物理空間或功耗,所以這些指令寄存器413、414至416的存儲器位置被以處理器速度訪問。用來訪問下級處理器403、404至406的IR413、414至416的指令包括:LOAD R4, 1024 (RO) ;.假設(shè) P0403 的指令寄存器(IR) 413映射至位置1024,讀取P0403的IR413STORE R7, 1028 (RO) ;.假設(shè) P1404 的指令寄存器 414 映射至位置1028,寫至它的IR414加載指令將1024處的存儲器位置的值和RO的內(nèi)容傳送至SyncP401的寄存器R4。RO的值正常地設(shè)置成0,并且1024是映射下級處理器403、404至406的指令寄存器413、414至416的起始地址。在本例中,圖5中的地址總線402a將被設(shè)置成1024,數(shù)據(jù)總線402d將具有PO的IR的值,并且控制總線402c將使READ/WRITE=0以供讀取。存儲指令允許SyncP401將設(shè)置在SyncP401的寄存器R7中的值寫至P1404的指令寄存器414。該值可能是賦予訪問共享變量X的權(quán)限的指令。在本例中,圖5中的地址總線402a將被設(shè)置成1028,數(shù)據(jù)總線402d將具有R7的值,并且控制總線402c將使READ/WRITE=I以供寫入。圖5是示出了 SyncP401怎樣才能訪問任何下級處理器403、404至406以讀或?qū)懰闹噶罴拇嫫鞯脑敿氃O(shè)計的示意圖500。來自SyncP總線402a的地址被解碼器503解碼以從下級處理器403、404至406的N個指令寄存器504中選擇一個指令寄存器504a d。解碼器輸出的信號IRi504c被假設(shè)為有效,并且下級處理器404被訪問以讀或?qū)懰闹噶罴拇嫫?14。觸發(fā)器506是下級處理器404的被訪問的指令寄存器414的一位。在LOAD指令中,SyncP-R/W信號=0,并且因為將反相器連接至信號SyncP-R/W=0,所以上部“與”門506a被啟用。當“與”門506a被啟用時,通過將指令寄存器的內(nèi)容寫回至每個觸發(fā)器來保持指令寄存器中的同一指令。而且,在讀取時,因為信號IRi是有效的,所以下部“與”門506b被啟用,以允許每個觸發(fā)器的內(nèi)容經(jīng)過三態(tài)緩沖器到達SyncP數(shù)據(jù)總線402d。在STORE (存儲)操作中,信號IRi有效,并且SyncP-R/W= I,這使得中間的“與”門506c被啟用并且來自上級SyncP的數(shù)據(jù)“Di SyncP”被存儲在觸發(fā)器中。這是由SyncP401所寫的、要由下級處理器404執(zhí)行的新指令。SyncP401可以監(jiān)視下級處理器403、404至406的指令并且將它們分成多個組;每個組競爭一個共享變量。圖6是示出了使用隊列對不同的共享變量進行排序的SyncP401的圖600。圖6示出了在P3和P14之間共享屏障事件,在Pl和Pll之間共享變量X,在P5和P6之間共享Y。
多個變量的同步是通過下列步驟來實現(xiàn)的:1.SyncP401以任何順序讀取下級處理器403、404至406的所有指令。2.如果SyncP401發(fā)現(xiàn)來自下級處理器403、404至406的其中一個的使用共享變量的請求,則它將發(fā)出請求的處理器序號存儲在該變量專用的隊列中。例如,ACCESS(訪問)X隊列用于變量X。Pll是第一個被發(fā)現(xiàn)請求X的處理器(不按請求的順序排列)。3.SyncP401繼續(xù)讀取指令寄存器并且對使用共享變量的不同請求進行排序。4.如果另一處理器請求具有隊列的共享變量(例如X),則SyncP401將處理器序號添加至X隊列,如圖6中的Pl。5.對于每個隊列,SyncP401使用以上在多級處理同步的章節(jié)中給出的相同代碼來準予發(fā)出請求的處理器。SyncP使用超標量架構(gòu)、或通過將每個組的所要求的代碼結(jié)合起來從而在單個簽發(fā)順序代碼中。因為同步使用很少的以處理器速度執(zhí)行的指令,所以順序代碼的性能是可以接受的。圖7是示出了用于并發(fā)地管理多個共享變量的方法的流程圖700。SyncP401在對不同隊列中的請求進行排序后,它開始于對每個請求處理器準予訪問。它使用訪問的交織來并發(fā)地允許多個下級處理器同時訪問不同的共享變量。SyncP401使用簡單的順序代碼來準予這些訪問。交織使得用于不同的共享變量的同步的時間有可能重疊,同時SyncP使用順序代碼和單一總線來訪問下級處理器指令。如圖7所示,第一列,P2最初取得在序列中第一個使用X的準予,然后P5按順序取得使用Y的準予,訪問X和Y的同步時間被重疊并且并行地出現(xiàn)。當P2完成使用X時,它確立由SyncP401所讀取的停止指令并且立即準予P8使用X的權(quán)限而且還允許P2繼續(xù)。在本圖中,假設(shè)P2和P8共享X并且兩者同時請求X,當P2使用X時,P8停止,直到SyncP401準予它使用X為止。以同樣的方式,Pl和P5共享Y并且P7和P3共享Z。下級處理器403、404至406當請求使用或結(jié)束使用共享變量時,使用特定停止指令。下級處理器403、404至406中的一個的流水線控制電路使用狀態(tài)機,該狀態(tài)機使得當執(zhí)行使得流水線停止的停止指令時,控制電路停留在相同狀態(tài)。僅當將不同的指令寫至流水線的SyncP401移除該停止指令時,流水線才繼續(xù)指令的正常執(zhí)行。圖8是下級處理器403、404至406中的一個怎樣通過由于停止指令而延長時鐘來停止它的執(zhí)行的框圖800。指令寄存器801包含停止指令,然后解碼器輸出信號變成有效并且等于I。連接至解碼器802的輸出的“或”門將生成輸出=1,以迫使觸發(fā)器803的輸出和時鐘信號等于I。如果指令不是停止,則觸發(fā)器803的輸出由于來自時鐘信號的反相的反饋而導(dǎo)致每隔2X時鐘切換一次,其中該時鐘信號以觸發(fā)器803的2X時鐘的頻率的一半生成所需的時鐘。任何電路的功耗都與時鐘的頻率成正比。新處理器的增加的速度因管理芯片內(nèi)部的功率的困難而造成這些處理器的設(shè)計中的問題。使處理器在等待準予期間停止有助于降低功率。傳統(tǒng)的處理器使用鎖并且他們持續(xù)地自循環(huán)并消耗功率以等待鎖空閑。重要的是要注意:通過延長流水線的時鐘來停止流水線這一特征也可以被用作任何傳統(tǒng)的處理器的特征?,F(xiàn)代的處理器提供SMD指令集以改進向量運算的性能。例如,Intel的Nehalem 和 Intel 的 Xeon 處理器支持 SSE (流 SIMD 擴展(Streaming SIMDExtensions))指令集,該指令集提供能夠保持4個32位變量的128位寄存器。SSE擴展由于對ISA添加了額外的指令而使架構(gòu)復(fù)雜。它添加了額外的流水線階段,并且使用額外指令的開銷來支持對寄存器封包和解包數(shù)據(jù)。多級處理提供SMD特征而不對設(shè)計增加復(fù)雜度。SyncP401的寫至下級處理器的指令寄存器的能力允許它通過對所有指令寄存器啟用寫信號來將一條指令寫至下級處理器403、404至406的所有指令寄存器。SMD是作為在多個不同數(shù)據(jù)上工作的多個相同指令而在多級處理中實施的,這是實施SMD的不同的和有效的方法。每個下級處理器都不知道指令是SMD ;因此,與Intel SSE實施相比,不需要增加復(fù)雜度來支持它。因為它使用被傳統(tǒng)的指令所訪問的相同寄存器作為它的數(shù)據(jù),所以也不需要對寄存器封包或解包數(shù)據(jù)。在多級中,可以將多個數(shù)據(jù)元素封包至下級處理器中的一個寄存器。如果將4個元素封包在每個寄存器中而產(chǎn)生32的向量長度(與之相比Intel SSE僅為4),則使用128位寄存器將形成8個下級處理器。如果32個處理器將16位元素的數(shù)據(jù)封包,則它們將產(chǎn)生在一個周期操作中執(zhí)行的32X8=256個元素的向量長度。支持像CRAY的長向量的向量處理器構(gòu)建起來很昂貴。圖9是將指令A(yù)DDV R1、R2、R3寫至所有下級處理器902、903至904的指令寄存器912,913至914的SyncP901的框圖900。當該指令被每個下級處理器902、903至904執(zhí)行時,它執(zhí)行對每個處理器寄存器902、903至904中R2和R3的內(nèi)容的添加,然而處理器902、903至904中的每一個中的R2和R3將不同元素的值保持在向量陣列中。例如,如果將向量A加至向量B,則首先執(zhí)行LOADV R2, O (R5)指令,并且將每個下級處理器902、903至904中的R5設(shè)置成陣列A中不同元素的地址。執(zhí)行該SMD指令將A的元素傳送至不同處理器的R2寄存器。下列代碼解釋了在多級處理中使用SMD所執(zhí)行的向量運算:ADDI R5, R0, #i+1000; 對R5進行初始化以指向A[i]中的元素iADDI R6, R0, #i+10000; 對R6進行初始化以指向B[i]中的元素iADDI R7, R0, #100, 000; 對R7進行初始化以指向C[i]中的元素iLOADV R8, O (R5) ;.R8=將向量A□或它的一部分加載至不同處理器的R8寄存器LOADV R9, O (R6) ;.R9=將向量B□或它的一部分加載至不同處理器的R8寄存器ADDV RIO, R8, R9; 將A至B的元素相加并且將結(jié)果作為向量存儲在每個處理器的RlO中STOREV R10, O (R7) ;.將不同處理器的RlO寄存器存儲至C或它的一部分SyncP901使用圖10所示的它的數(shù)據(jù)總線902d,通過使它的數(shù)據(jù)總線的最高有效位DN等于I來分別寫至所有下級處理器902、903至904的指令寄存器912、913至914。對于不是SIMD的任何其它指令,DN位被設(shè)置為O。圖10是示出了在多級處理中實施SMD的框圖1000。 用于選擇其中一個指令寄存器的解碼器1001的所有輸出1002連接至以DN作為另一輸入的“或”門1003、1004至1005。作為DN=I的結(jié)果,所有下級處理器的所有指令寄存器的所有“或”門的輸出被置成I。返回圖9,如前面所解釋的,當R/W=l時,來自SyncP901的所有輸入數(shù)據(jù)DN-1至DO被同時寫入所有下級處理器902、903至904的指令寄存器912、913至914。然后每個下級處理器902、903至904開始執(zhí)行并行地寫入它們的指令寄存器的同一指令。該圖示出了所執(zhí)行的指令相加R2至R3的內(nèi)容并且將結(jié)果作為向量存儲在Rl中。每個處理器902、903至904的R2和R3中的元素形成元素的向量,該向量可以利用另一 LOADDV SMD指令從存儲器加載。多級處理還有另一個重要的特征,即允許順序指令生成在多個數(shù)據(jù)流中工作的多個指令。SyncP901將它的數(shù)據(jù)分割成字段,然后每個字段被用作到ROM的地址,其中該ROM存儲有準備要被執(zhí)行的已解碼指令的列表。使用微代碼ROM消除了為了保持流水線而對解碼階段的需要,而沒有像在Intel的Pernium4 中那樣停滯。圖11是示出了支持SI>MMD的系統(tǒng)的框圖1100。SyncPllOl的數(shù)據(jù)總線1102d被假設(shè)為64位并且被分割成8個單獨字段,其中每個字段分別用作訪問相應(yīng)的下級處理器1103,1104 M 1105 的 R0M1113、1114 至 1116 的地址。在本例中,P01103 使用 SyncP 數(shù)據(jù)的D7…DO對它的具有256個位置的R0M1113進行尋址。如果SyncPllOl具有更長的數(shù)據(jù),則每個R0M1113U114至1116可以具有已編碼指令的更大存儲。10位地址將訪問1024個不同的已解碼指令。圖11還示出了 SyncPllOl的數(shù)據(jù)D7至DO被用作產(chǎn)生對PO的ADD指令的P01103的ROMl 113的地址。SyncP數(shù)據(jù)D15至D8是到產(chǎn)生SUB指令的Pl 1114的ROMl 114的地址。如圖11所示,這些是被并行地執(zhí)行的不同的指令,所述不同的指令是由SyncPllOl執(zhí)行這樣的一條指令所產(chǎn)生的:該指令將它用作從一些R0M1113U114至1116訪問多個不同指令的多個地址。該SI>MMD方法有許多優(yōu)點,包括:1.因為它使用單個順序指令來為多個處理器1103、1104至1106生成并行代碼,
所以使得寫并行代碼變得容易。2.對于從單個指令生成的代碼的部分,不需要同步。3.下級處理器1103、1104至1105不需要從高速緩存或慢速存儲器中取出指令而是直接分別從它們的R0M1113U114至1116執(zhí)行這些指令,從而降低了功率和復(fù)雜度。4.以處理器速度從R0M1113、1114至1116執(zhí)行指令,這就改進了向處理器1103、1104至1105的指令分發(fā)的性能和帶寬。5.對于下級處理器1103、1104至1106,可以降低或消除對昂貴而復(fù)雜的指令高速緩存或指令存儲器的需求。圖12是示出了 SyncPllOl如何控制不同的指令到下級處理器1103、1104至1106的簽發(fā)的圖1200。復(fù)用器1201用于基于由SyncPllOl對下級處理供給的數(shù)據(jù)的類型來選擇對下級處理器1103、1104至1106的IR的不同類型的指令。復(fù)用器的選擇線連接至SyncPllOl的某些數(shù)據(jù) 線,并且受到SyncPllOl所執(zhí)行的特定操作的控制。例如,在SMD中,SyncPllOl的DN位被設(shè)置成I。下列不同的復(fù)用器選擇是:1.如果SyncPllOl不需要寫和改變指令,則下級處理將同一指令保持在指令寄存器中。復(fù)用器1201選擇相同指令寄存器的內(nèi)容作為輸入。
2.如果需要寫主要用于同步的停止或準予指令,則復(fù)用器1201選擇SyncroilOl的第一數(shù)據(jù)輸入。3.如果SyncP需要執(zhí)行SMD,則復(fù)用器1201選擇SyncTOllOl的第二數(shù)據(jù)輸入。在這種情況下,SyncPllOl的數(shù)據(jù)被寫至所有下級處理器的指令寄存器。4.如果SyncPllOl需要執(zhí)行SI>MMD指令,則復(fù)用器1201選擇ROMOUT輸入。多級處理可以將級的數(shù)量擴展至下級處理器的3個或更多級,同時執(zhí)行代碼執(zhí)行SyncP至另一下級處理器的職責(zé)。系統(tǒng)中處理器的數(shù)量將是NXN并且該系統(tǒng)的可擴展性將是NXN。通過具有對下級處理器的同步進行管理的更高級處理器來實現(xiàn)的降低的同步開銷將幫助將系統(tǒng)的可擴展性增加至NXN。圖13是示出了 3級處理的框圖1300。第一級處理器SyncP1301如前面解釋的那樣將第二級處理1305的處理器1303、1304至1306的所有指令寄存器1313、1114至1116映射至它的數(shù)據(jù)存儲器,并且可以使用特定總線1302讀或?qū)懼了鼈?。第二?305的每個處理器1303、1304至1306還可以與SyncP1301類似地控制多個其它下級處理器,除了這些第二級處理器1303、1304至1306還執(zhí)行他們的普通處理操作。第二級處理器1303、1304至1306將指令寄存器1331至1332由第二級處理器1303、并且將指令寄存器1336至1337由第二級處理器1306、并且將第三級處理器1321至1322由第二級處理器(1393,圖中未示出)映射至它們的數(shù)據(jù)存儲器以管理它們的同步。因為以處理器速度停止或準予下級處理器1321至1327只需要一個周期,所以下級處理器1321至1327的管理需要最小支持。對于包括SMD、SDMIMD的3個級的處理,也可以實施以上提到的特征中的一些。通過在不需要多個下級處理器的任何介入的情況下讀和寫它們的指令寄存器來控制這些下級處理器的更高級處理器將同步開銷從幾千個處理器周期降低至幾個周期。示例實施例還可以具有許多其它重要的優(yōu)點,包括通過在等待訪問共享變量時停止這些處理器來降低功率的能力。更高級處理器能夠?qū)⒑唵蔚捻樞蛑噶钷D(zhuǎn)換成并行指令,這使得寫并行軟件變得更容易。對于長向量利用簡單SMD實施可以有效地支持向量運算。還能夠?qū)⒍嗉壧幚頂U展至其它級,從而允許無限的可擴展性。所示出的實施例僅是示例性的,本發(fā)明僅由所附權(quán)利要求書來限定。
權(quán)利要求
1.一種用于處理數(shù)據(jù)的處理器,包括: 多個下級處理器,該下級處理器具有存儲用于處理數(shù)據(jù)的指令的寄存器;以及上級處理器,該上級處理器包括連接至所述第一級處理器的用于處理數(shù)據(jù)的存儲器,其中所述上級處理器控制所述多個第二級處理器的操作的至少一部分。
2.根據(jù)權(quán)利要求1所述的處理器,其中所述上級處理器將每個所述下級處理器的指令的一部分映射至所述上級處理器的存儲器。
3.根據(jù)權(quán)利要求2所述的處理器,其中所述上級處理器將所有的所述下級處理器的指令映射至存儲器。
4.根據(jù)權(quán)利要求1所述的處理器,進一步包括連接在所述上級處理器和每個所述下級處理器之間的總線。
5.根據(jù)權(quán)利要求3所述的處理器,其中為每個所述下級處理器分配單獨的存儲器區(qū)域。
6.根據(jù)權(quán)利要求1所述的處理器,其中使得所述上級處理器能夠控制所述下級處理器執(zhí)行的指令和執(zhí)行所述指令的時間。
7.根據(jù)權(quán)利要求6所述的處理器,其中使得所述上級處理器能夠?qū)⒅噶钭⑷胨鱿录壧幚砥?,以控制所述下級處理器?zhí)行的指令和執(zhí)行所述指令的時間。
8.根據(jù)權(quán)利要求7所述的 處理器,其中所述指令的注入基于同步需求。
9.根據(jù)權(quán)利要求7所述的處理器,其中所注入的指令是停止指令。
10.根據(jù)權(quán)利要求1所述的處理器,其中使得所述上級處理器能夠控制每個所述下級處理器的時鐘速度。
11.根據(jù)權(quán)利要求1所述的處理器,其中使得所述上級處理器能夠?qū)Χ鄠€下級處理器提供同一變量。
12.根據(jù)權(quán)利要求2所述的處理器,其中所述總線進一步包括: 地址總線,該地址總線用于定義所述上級處理器對所述下級處理器的哪個地址寄存器進行尋址; 數(shù)據(jù)總線,該數(shù)據(jù)總線用于包括所訪問的下級處理器的寄存器的內(nèi)容;以及 控制線,該控制線用于控制對所述下級處理器的讀/寫。
13.根據(jù)權(quán)利要求12所述的處理器,其中所述數(shù)據(jù)總線具有64位寬度并且所述控制線具有一位的值。
14.一種用于同步多級處理器中的不同處理器的方法,所述方法包括以下步驟: 將下級處理器的寄存器的指令映射至上級處理器的存儲器;以及 將來自所述上級處理器的指令注入所述下級處理器以使它們同步。
15.根據(jù)權(quán)利要求14所述的用于同步多級處理器中的不同處理器的方法,進一步包括由上級處理器控制每個下級處理器的時鐘速度的步驟。
16.根據(jù)權(quán)利要求14所述的用于同步多級處理器中的不同處理器的方法,其中所述注入步驟注入停止指令。
17.根據(jù)權(quán)利要求15所述的用于同步多級處理器中的不同處理器的方法,其中通過使期望被減緩的下級處理器的時鐘周期延長來控制所述時鐘速度。
18.根據(jù)權(quán)利要求14所述的用于同步多級處理器中的不同處理器的方法,其中所述方法進一步包括:一旦執(zhí)行關(guān)鍵代碼,則移除對所述下級處理器的停止指令。
19.根據(jù)權(quán)利要求14所述的用于同步多級處理器中的不同處理器的方法,其中所述方法進一步包括:一旦已經(jīng)發(fā)生共享變量的執(zhí)行,則移除對所述下級處理器的停止指令。
20.根據(jù)權(quán)利要求17所述的用于同步多級處理器中的不同處理器的方法,其中延長時鐘周期的方法通過使用觸發(fā)器來進行。
21.一種用于處理數(shù)據(jù)的系統(tǒng),包括: 多個下級處理器,該下級處理器具有存儲用于處理數(shù)據(jù)的指令的寄存器; 上級處理器,該上級處理器包括連接至第一級處理器的用于處理數(shù)據(jù)的存儲器,其中所述上級處理器控制多個第二級處理器的操作的至少一部分;以及用于輸入數(shù)據(jù)的輸入端和用于輸出數(shù)據(jù)的輸出端。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述上級處理器將每個所述下級處理器的指令的一部分映射至所述上級處理器的存儲器。
23.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述上級處理器將所有的所述下級處理器的指令映射至存儲器。
24.根據(jù)權(quán)利要求21所述的系統(tǒng),進一步包括連接在所述上級處理器和每個所述下級處理器之間的總線。
25.根據(jù)權(quán)利要求23所述的系統(tǒng),其中為每個所述下級處理器分配單獨的存儲器區(qū)域。
26.根據(jù)權(quán)利要求2 1所述的系統(tǒng),其中使得所述上級處理器能夠控制所述下級處理器執(zhí)行的指令和執(zhí)行所述指令的時間。
27.根據(jù)權(quán)利要求26所述的系統(tǒng),其中使得所述上級處理器能夠?qū)⒅噶钭⑷胨鱿录壧幚砥髦校钥刂扑鱿录壧幚砥鲌?zhí)行的指令和執(zhí)行所述指令的時間。
28.根據(jù)權(quán)利要求27所述的系統(tǒng),其中所述指令的注入基于同步需求。
29.根據(jù)權(quán)利要求27所述的系統(tǒng),其中所注入的指令是停止指令。
30.根據(jù)權(quán)利要求21所述的系統(tǒng),其中使得所述上級處理器能夠控制每個所述下級處理器的時鐘速度。
31.根據(jù)權(quán)利要求21所述的系統(tǒng),其中使得所述上級處理器能夠?qū)Χ鄠€下級處理器提供同一指令。
32.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述總線進一步包括: 地址總線,該地址總線用于定義所述上級處理器對所述下級處理器的哪個地址寄存器進行尋址; 數(shù)據(jù)總線,該數(shù)據(jù)總線用于包括所訪問的下級處理器的寄存器的內(nèi)容;以及 控制線,該控制線用于控制對所述下級處理器的讀/寫。
33.根據(jù)權(quán)利要求32所述的系統(tǒng),其中所述數(shù)據(jù)總線具有64位寬度并且所述控制線具有一位的值。
34.一種處理器,包括:執(zhí)行單元,該執(zhí)行單元用于處理指令;以及連接至所述執(zhí)行單元的時鐘,該時鐘用于對指令的處理進行定時;并且,其中該處理器具有延長時鐘周期以允許降低功耗的能力。
35.根據(jù)權(quán)利要求34所述的處理器,進一步包括通過使時鐘頻率減半來延長所述時鐘頻率的電路。
36.根據(jù)權(quán)利要求34所述的處理器,其中所述電路包括觸發(fā)器。
37.根據(jù)權(quán)利要求34所述的處理器,其中在接收到停止指令時所述時鐘周期被延長。
38.一種處理器,包括:具有ROM的上級處理器;以及多個下級處理器,該下級處理器各自具有它們自己的R0M,其中所述上級處理器的ROM中的單個指令被分割成在所述下級處理器中的多個ROM索引,以用于從更高級處理器所發(fā)布的一個指令生成多個且不同的獨立并行指 令。
全文摘要
一種用于降低同步開銷的成本的多級處理器(200),其包括上級處理器(201),該上級處理器(201)用于控制使用共享數(shù)據(jù)和進入關(guān)鍵區(qū)段的權(quán)限并且以處理器速度直接將該權(quán)限簽發(fā)至多個下級處理器(202、203、…20n)中的每一個。在一個實施例中,下級并行處理器的指令寄存器被映射至上級處理器(201)的數(shù)據(jù)存儲器。另一個實施例(1300)包括3個級的處理器。該方法包括將下級處理器的指令映射至上級處理器的存儲器中并且控制下級處理器的操作。該方法和設(shè)備的一種變形有助于執(zhí)行單指令多數(shù)據(jù)(SIMD)以及單到多指令和多數(shù)據(jù)(SI>MIMD)。處理器包括延長時鐘頻率以降低功耗的能力。
文檔編號G06F1/32GK103154892SQ201180049741
公開日2013年6月12日 申請日期2011年9月28日 優(yōu)先權(quán)日2010年10月15日
發(fā)明者N·梅克希爾 申請人:莫塞德技術(shù)公司