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