專利名稱:用于多處理器流水線并行性的方法和裝置的制作方法
技術領域:
本發(fā)明涉及集成電路及其設計。
背景技術:
近年來,集成電路處理器的設計已經(jīng)從獨立型專有設計轉移到以對抗性設計和傳統(tǒng)平臺支持更大的網(wǎng)絡功能和互用性的設計上。這與取代傳統(tǒng)的占有優(yōu)勢的獨立PC而具有網(wǎng)絡服務器計算機的計算世界的重新調(diào)整是相符的。
因此,這不再足以提供具有最高獨立性能的處理器。該處理器必須熟練地操控手頭的計算作業(yè),這意味著有效地響應處理調(diào)用??梢灾С謥碜圆煌u主的各種不同設計的處理器的調(diào)用的處理器設計是出眾的,因為它能提供更高程度的互用性。然而,在這種設計中,當網(wǎng)絡中的處理器無論大或小、服務器或客戶機,在共享公共的設計特征時,將獲得更高的性能,如在2001年3月22日提交的共同未決的美國專利申請09/815,554中描述的,特此在此引用以做參考。這種公共的設計可以利用具有公共指令集體系結構(ISA)或其子部分的公共體系結構,以及用于數(shù)據(jù)通路和尋址的公共設計。這樣的公共設計也可以支持作業(yè)的高執(zhí)行速率,例如對圖形數(shù)據(jù)的服務和/或處理。這樣的設計將支持互用性,同時促進共享設計的高性能優(yōu)點。
在設計用于此目的的處理器時,需要有效的處理器組織結構和設計方法。應當實現(xiàn)相對短的設計周期,而無須考慮處理器的大小、或者設計支持的計算作業(yè)。處理器設計應當在連續(xù)執(zhí)行公共的指令集體系結構的同時能夠改變。而且,處理器設計應當能夠在接近被釋放的時間被改變,以無須對處理器進行大規(guī)模的重新設計以及無須對微代碼和硬件進行大規(guī)模的重新設計地在集成電路(IC)上制造,以便在改變的處理器上執(zhí)行指令集。
圖1是示出根據(jù)現(xiàn)有技術的處理器的實現(xiàn)方法。如圖1所示,在處理器設計中的初始步驟S01中包括設計新的指令集體系結構和/或現(xiàn)有指令集體系結構的擴展,這兩方面在這里被統(tǒng)稱為“ISA”。指令集體系結構是無論何時出現(xiàn)在處理器面前都需要處理器識別并執(zhí)行的機器語言指令的集合。ISA典型地包括用于存儲并檢索數(shù)據(jù)、存儲和檢索指令的指令、用于對操作數(shù)進行數(shù)學、邏輯或其它操作的指令以及該處理器的一個或多個寄存器所持有的其它指令。ISA典型地被詳細描述成其中只有一個特定處理器或某類處理器或多個處理器能夠執(zhí)行其指令的點。ISA的細節(jié)包括每次訪問從存儲器中檢索的數(shù)據(jù)的位寬、以及可經(jīng)其直接訪問數(shù)據(jù)比特的讀取命令的類型。另外,對數(shù)據(jù)在處理器的寄存器和不同層次的存儲器,例如不同層次的緩存,之間的移動的支持通常對于處理器的設計或處理器的分類而言是特定的。如另一實例的描述,雖然具有不同組織結構的處理器能夠執(zhí)行浮點運算,但只有屬于特定種類的處理器能夠執(zhí)行其中尾數(shù)長為32比特、指數(shù)長為16比特、并且這兩個的余數(shù)被用作表示數(shù)的符號的浮點運算。
在根據(jù)現(xiàn)有技術的這種方法中,在設計ISA之后,就對處理器進行定制設計(步驟S03)以便使其具有支持ISA設計的固定功能組織結構。包括其任意擴展的ISA典型地被設計為只能通過具有非常特殊的功能組織結構的處理器硬件來實現(xiàn)。如上所述,作為一個例子,通常由包含在ISA中的指令來固定用于從/向處理器的寄存器中傳輸數(shù)據(jù)的位寬、以及能夠由處理器操作的操作數(shù)的位寬。因此,處理器的設計就縮減到對支持ISA指令的固定硬件和/或微代碼的設計處理上。
此后,在步驟S05,定制設計發(fā)布邏輯和微代碼,以便執(zhí)行關于為此設計的處理器硬件的指令。發(fā)布邏輯用于將由處理器和由基于人類或機器的編程方(編譯器)識別的具有有限位寬(例如32比特字符數(shù)據(jù))的符號的指令轉換為能夠根據(jù)執(zhí)行指令的需要來開啟并斷開處理器硬件的各個元件的電信號的集合。典型地由硬件或在固件中通過查找表示這樣的信號的存儲數(shù)據(jù)來執(zhí)行這種符號到信號的轉換。例如,微代碼指令由存儲在控制存儲器中的表示這種信號的數(shù)據(jù)來實現(xiàn)?;趯μ囟ㄖ噶畹姆柕淖R別,從控制存儲器中取出該存儲數(shù)據(jù),然后將該數(shù)據(jù)用于提供在處理器上執(zhí)行指令的信號。根據(jù)現(xiàn)有技術的方法,發(fā)布邏輯和微代碼的設計通常在硬件設計之后執(zhí)行,這是因為它們依賴于在硬件設計過程中所做出的選擇。
然而,在根據(jù)現(xiàn)有技術的設計方法中,問題出現(xiàn)在尋求對處理器設計的修改時。在步驟S03,設計具有固定的功能組織結構的處理器以支持ISA。然后定制設計發(fā)布邏輯和微代碼,以便實現(xiàn)關于所定制設計的處理器的ISA。然而,由于它們是定制設計的,因此當修改處理器的設計時,預先設計的發(fā)布邏輯和微代碼在修改后的處理器設計中可能不再工作。因此,無論什么時候決定修改處理器的設計(S06),處理流程都要回到步驟S03的處理器設計的步驟上,這反映了為了實現(xiàn)關于修改后的處理器設計的ISA,處理器設計中的改變也需要在發(fā)布邏輯和微代碼的設計中進行改變。
除了上面考慮到的因素之外,現(xiàn)有技術提供了兩種用于根據(jù)上述方法的步驟S03來設計處理器的現(xiàn)有方法合成設計以及定制設計。這些設計方法發(fā)現(xiàn)了對處理器“核心”、即具有附加功能的集成電路的處理器元件的設計的特定應用。歸類為芯片上的系統(tǒng)(“SOC”)的集成電路具有處理器核心。
在合成設計法中,如圖2所示,推斷性地開發(fā)出可再利用的元件塊庫,如S10所示,該庫可用于設計多種不同的用于具有一定范圍的時鐘速度和用途的系統(tǒng)中的電路。利用相對高級的語言來定義可再利用的元件塊,例如,寄存器傳輸級(“RTL”)描述。設計者然后通過指定其中所用的元件塊來組合處理器設計,如S12所示。編譯器根據(jù)RTL描述中指定的元件塊來合成電路布局。合成設計對在設計周期內(nèi)修改處理器的基本特征、諸如指令集、流水線寬度和緩存大小等提供了靈活性。通過在RTL描述中指定可再利用的元件塊的不同集合來進行修改,如S14所示。合成設計還允許在相對較短的設計周期之內(nèi)創(chuàng)建設計并為測試(在硬件之前的階段)做準備。
反之,定制設計是費力的,它需要相對較長的設計周期。如圖3所示,在處理器的完全定制設計中,處理器的元件從底層向上設計,包括所有的功能塊,如S20所示。電路被手工制造成符合特定的性能標準,例如支持最小時鐘頻率,從而消耗低于某種限度的功率,或者占用低于某種限度的集成電路面積。功能塊之間的布局和配線也要謹慎地設計以滿足性能標準,如S22所示。由于對設計的每個元件給予了更高的關注并特別強調(diào)滿足性能標準,因此當把定制設計處理器與合成創(chuàng)建該設計相比時,能夠獲得四倍之高的性能。另一方面,修改定制設計則產(chǎn)生了困難,這是因為它需要從底層向上再次重新設計處理器,如S24所示。
然而,如參考圖1在上面所指出的,為了實現(xiàn)關于修改后的處理器設計的ISA,對處理器設計的修改迫使對發(fā)布邏輯和微代碼進行重新估計和再設計。
因此,需要提供一種具有模塊化功能組織結構的處理器,其具有根據(jù)處理器中所提供的多個模塊化元件來確定的性能。
還需要提供一種設計處理器的方法,該方法在對處理器設計進行改變、例如對處理器功能單元的數(shù)目進行改變時,不需要對發(fā)布邏輯和微代碼進行再設計。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種具有模塊化組織結構的處理器。該處理器包括至少一個本地存儲器,可操作用于存儲數(shù)據(jù)和執(zhí)行指令;至少一個功能單元,可操作用于執(zhí)行與從所述至少一個本地存儲器提供的數(shù)據(jù)有關的指令;以及至少一個發(fā)布邏輯單元,可操作用于將從所述至少一個本地存儲器提供的指令轉換為用于執(zhí)行這些指令的所述至少一個功能單元的操作。
每個這種發(fā)布邏輯單元可操作用于根據(jù)公共指令集來控制所述至少一個功能單元中的一個或多個對指令的執(zhí)行。當所述處理器包括多個所述功能單元時,所述至少一個發(fā)布邏輯單元可操作用于對從所述至少一個本地存儲器提供的指令中的單一指令進行解碼,以便根據(jù)所述單一指令同時操作全部所述多個功能單元,以及可操作用于對多個指令進行解碼以便分別操作所述多個功能單元的第一和第二子集,其中根據(jù)所述多個指令中的各個指令來操作每個所述子集。
根據(jù)本發(fā)明的另一方面,提供一種設計處理器的方法。根據(jù)這種方法,提供指令集體系結構(ISA);設計具有支持所述ISA的模塊化功能組織結構的處理器;以及設計發(fā)布邏輯以便在所述處理器上實現(xiàn)所述ISA,所述發(fā)布邏輯適應所述模塊化功能組織結構中的改變。
圖1是示出根據(jù)現(xiàn)有技術的處理器實現(xiàn)方法的流程圖。
圖2是示出根據(jù)現(xiàn)有技術的合成設計方法的流程圖。
圖3是示出根據(jù)現(xiàn)有技術的定制設計方法的流程圖。
圖4是示出根據(jù)本發(fā)明實施例的處理器組織結構的方框圖。
圖5是示出根據(jù)本發(fā)明另一實施例的處理器組織結構的方框圖。
圖6是示出根據(jù)本發(fā)明又一實施例的處理器組織結構的方框圖。
圖7是示出根據(jù)本發(fā)明又一實施例的處理器組織結構的方框圖。
圖8是示出根據(jù)圖4所示的本發(fā)明實施例的處理器的詳細組織結構的詳細方框圖。
圖9是示出根據(jù)本發(fā)明實施例的處理器的單線程指令流水線元件的結構和功能的圖表。
圖10是示出根據(jù)本發(fā)明實施例的處理器的逐個周期的多線程指令流水線元件的結構和功能的圖表。
圖11是示出根據(jù)本發(fā)明實施例的設計方法的流程圖。
圖12是示出根據(jù)圖11所示的本發(fā)明實施例的處理器組織結構的詳細方框圖。
具體實施例方式下面將參考圖4至12描述本發(fā)明的實施例。
圖4是示出根據(jù)本發(fā)明實施例的方法所設計的處理器10的組織結構的方框圖。如圖4所示,處理器包括三個主要元件本地存儲器12,功能單元14和發(fā)布邏輯16。本地存儲器(LS)12至少存儲由功能單元14執(zhí)行的數(shù)據(jù),優(yōu)選地還存儲指令。功能單元14基于具有位寬OP的操作數(shù)來執(zhí)行指令,該位寬是用于從/向本地存儲器12傳輸數(shù)據(jù)的總線寬度??捎晒δ軉卧?4操控的比特數(shù)OP隨處理器10的設計而改變。在一個特定的實施例中,比特數(shù)OP是2的整數(shù)倍次冪,例如,4、8、16、32或64比特。功能單元14基于從本地存儲器12提供的操作數(shù)來執(zhí)行指令。
發(fā)布邏輯16用于將排隊執(zhí)行的指令轉換為用于功能單元14的信號。例如,在該功能單元中將兩個操作數(shù)相乘的指令被轉換為一系列操作,其中每一個操作將一個操作數(shù)向左移位由第二個操作數(shù)的位所確定的位置數(shù)。此后,為了完成乘法,以進位方式將移位操作的結果相加。
圖5示出了根據(jù)本發(fā)明實施例所提供的另一處理器20的組織結構。如同圖4所示的處理器10,處理器20包括發(fā)布邏輯26,用于將指令轉換為用以控制功能單元對它們的執(zhí)行的信號。然而,不同于處理器10,處理器20包括多個本地存儲器(LS)22,如22a至22d所示,以及多個功能單元24,如24a至24d所示。每個本地存儲器22提供一個與相應的功能單元匹配的存儲空間,并至少為其提供操作數(shù)。例如,本地存儲器22a提供一個與功能單元24a相匹配的存儲空間,并且本地存儲器22b提供一個與功能單元24b相匹配的存儲空間。每個本地存儲器還優(yōu)選地提供由相應的功能單元24執(zhí)行的指令。盡管優(yōu)選地在單個集成電路中實現(xiàn),但處理器20的本地存儲器(LS)22和功能單元24被設計成可根據(jù)處理器10的設計再利用的元件或部件。這樣,例如在本實施例中,處理器20包括四個功能單元,每個功能單元基于32比特寬操作數(shù)來執(zhí)行指令,處理器20還包括四個匹配的本地存儲器,每個本地存儲器提供對32比特寬操作數(shù)的訪問。另外,處理器20包括發(fā)布邏輯26,其處理同時操作128比特寬操作數(shù)組的指令。在這種情況下,可針對多個(達4個)不同的32比特操作數(shù)流,將指令排列為“多級(multi-scalar)”執(zhí)行。這種多級執(zhí)行可通過逐個周期的多線程執(zhí)行來提供,如下面更完整的描述所述。在這種多級執(zhí)行中,根據(jù)被提供給處理器的多個指令中的不同指令來分別操作處理器功能單元的兩個或多個子集,如在2004年4月22日提交的、名稱是“用于SIMD指令集處理器的多標量擴展”的共同轉讓的美國臨時專利申請60,564,673中所描述的,在此引用該申請以作為參考。
可選擇地,當操作數(shù)從各個本地存儲器22中排隊并由相同的指令同時操作以提供單指令多數(shù)據(jù)(SIMD)操作時,通過處理器20的數(shù)據(jù)通路的寬度可能會從32比特增加到2倍、3倍或4倍,即64比特、96比特或128比特。
圖6示出了根據(jù)本發(fā)明另一個實施例的處理器30的組織結構。圖6所示的實施例與圖5的區(qū)別在于在本地存儲器(LS)32和功能單元34之間引入了開關33。開關33提供了一個互連的網(wǎng)絡,以使包含操作數(shù)和/或指令的數(shù)據(jù)能夠從任一個本地存儲器(LS)32中被檢索,并被提供給任一個功能單元34。按所期望地,互連的網(wǎng)絡是縱橫制(cross-bar)類型,以便允許在全部四個本地存儲器32和全部四個功能單元34之間同時進行數(shù)據(jù)的多次傳輸。
圖7示出了根據(jù)本發(fā)明另一實施例的處理器30的組織結構。圖7中所示的實施例與圖6的區(qū)別在于提供了多個發(fā)布邏輯單元46a至46d。發(fā)布邏輯單元46a至46d中的每一個與功能單元44a至44d中的相應一個相關聯(lián)。默認地,每個發(fā)布邏輯單元、例如發(fā)布邏輯單元46a對用于相應功能單元、例如功能單元44a的指令進行解碼。然后由相應的功能單元來執(zhí)行經(jīng)解碼的指令。以這種方式,由發(fā)布邏輯單元46中的各個單元對多個指令進行同時解碼,然后由功能單元44中相應單元對各個數(shù)據(jù)同時進行處理。然而,每個發(fā)布邏輯單元也可以對用以由全部功能單元44a至44d同時對各個數(shù)據(jù)執(zhí)行指令的指令、即用以SIMD操作的指令進行解碼。
圖8是示出根據(jù)圖4中所示的本發(fā)明實施例而提供的處理器100的組織結構的詳細方框圖。如圖8所示,處理器100包括功能單元102以及與之耦合的高速緩存104,高速緩存104作為操作數(shù)和功能單元102所執(zhí)行的操作的結果等數(shù)據(jù)的存儲庫。處理器100還包括指令緩沖器106,從該緩沖器將指令傳送到流水線108,以由發(fā)布邏輯110將其轉換為操作功能單元102的信號。如圖8進一步所示的,處理器100通過高速緩存104和指令緩沖器106接口到存儲器101。存儲器101存儲數(shù)據(jù)和由處理器100執(zhí)行的指令。處理器100還存儲執(zhí)行指令的結果。另外,如果指令包含任何需要在執(zhí)行之前解釋的語句,存儲器101可進一步用于存儲由處理器100生成的作為這些語句的解釋結果的指令。
在圖8所示的實例中,高速緩存104與處理器之間的數(shù)據(jù)通路具有一個雙字(64比特)的寬度。指令流水線108可容納一個雙字寬(寬度為64比特)的指令。在一個實施例中,高速緩存可容納1024個這樣的雙字。
指令緩沖器106保持從存儲器101取出的指令,并置于指令流水線108的隊列中。在本發(fā)明的一個實施例中,該指令緩沖器106保持少量的、例如32個指令,其中每個指令都具有一個雙字的寬度??梢愿鶕?jù)處理器100所支持的特定應用程序的需要,而提供具有更小或更大容量的指令緩沖器。優(yōu)選地,指令緩沖器106為從存儲器101取出以輸出到指令流水線108的指令的排隊提供先入先出(FIFO)操作,并提供隨機訪問,以便關于分支操作,允許不按照緩沖的順序來執(zhí)行指令。
指令流水線108根據(jù)指令緩沖器中可用的指令,對多個執(zhí)行指令進行排隊,其數(shù)目在圖8所示的實例中為6。指令流水線108支持傳統(tǒng)的單線程方式,其中流水線中的每個指令(INSN 1,INSN 2,INSN 3等等)都來自一個指令流,并按順序跟隨在該指令流的上一個指令之后。
指令流水線108的深度主要是由特定的處理器組織結構的需要來確定的。排有6個指令的指令流水線108,如這里所示,需要6個指令周期來處理每個指令,以將其轉換為操作功能單元102的信號。這些周期中的一個或多個通常用于基于較早執(zhí)行的指令的結果來檢驗指令的從屬性。如果發(fā)現(xiàn)一個指令具有這種從屬性,則必須準備從緩存中檢索較早執(zhí)行的指令的結果,或者如果高速緩存104中沒有,就從存儲器101中檢索。
有時,在檢驗從屬性時,緩存或存儲器101中都沒有執(zhí)行指令流中的較早指令的結果,而是這種結果置于高速緩存104和存儲器101“之間”的某處。換言之,數(shù)據(jù)存在于從高速緩存或存儲器向其它部件傳輸?shù)倪^程中,存儲單元在時間上也不允許對特定點的數(shù)據(jù)進行訪問。此時,少有對行動的選擇。根據(jù)一個選擇,功能單元102通過執(zhí)行一系列等待周期而中止,直到高速緩存中的數(shù)據(jù)變?yōu)榭捎貌⒈惶峁┑焦δ軉卧?02以執(zhí)行指令為止。但這是不希望的,因為許多處理器周期在等待數(shù)據(jù)就緒時被浪費掉。另一個選擇是用于掛起當前指令流,處理器100立即開始向緩沖器106和指令流水線108加載另一指令流以執(zhí)行。然而,這種選擇也是不希望的,這是因為為了將指令加載到緩沖器106中并使之在指令流水線108中執(zhí)行就緒,需要許多周期。
圖9示出了執(zhí)行保持在指令流水線208中的指令序列。如圖9所示,流水線208中的每個指令由線程號T1來識別。線程號T1用于識別已經(jīng)從存儲器中檢索出的相關指令的特定序列。如本領域技術人員所公知的,一個線程的每個指令通常涉及與最后一個在先指令相同的工作項目,以便通過順次執(zhí)行特定線程的指令來完成該工作項目。圖9示出了這種情況,即在某一特定時間點,流水線208中的所有指令為單線程T1中的被順序排序的指令。在這種設置下,特定線程的執(zhí)行有時會被中止,而代之以開始執(zhí)行另一線程。除了這種在線程之間的偶爾改變之外,圖9示出的模型表示了一種由具有單線程指令流水線208的處理器來執(zhí)行這些線程指令的順序,換言之,線程T1的指令是按順序執(zhí)行的。
然而,如上面所指出的,由于各種原因這種執(zhí)行是不希望的。如果一條指令、例如指令210與在先操作的結果具有從屬性,則該結果在準備執(zhí)行指令210的時候對功能單元102(圖8)必須是可用的,否則,指令210不能被執(zhí)行。因此,當產(chǎn)生了這樣的從屬性時,一個公共響應可以從指令流水線208中移走線程T1的當前指令流,并開始向流水線208中填充另一線程T11(未示出)的指令。由于指令流水線208的深度為8,所以再次加載流水線的等待時間就是8。因此,在線程之間的這種轉換過程中,至少有8個周期因再次加載指令流水線而被浪費了。
圖10示出了大大減小了上述問題的影響的指令流水線308。如圖10所示,在流水線308中等待執(zhí)行的指令屬于不同的線程。每個線程的指令在每個線程中按順序排序的同時,對每個線程的指令進行排隊以便在每個連續(xù)的指令周期中,執(zhí)行屬于不同線程的指令。這樣,在第一周期中,執(zhí)行屬于線程T1的指令310。接著,在第二周期中,執(zhí)行來自線程T2的指令312。在第三周期中,執(zhí)行屬于線程T3的指令314,接著在第四周期中執(zhí)行屬于線程T4的指令316。這里所描述的用于以循環(huán)方式執(zhí)行不同線程的指令的流水線操作作為“逐個周期的多線程操作”為公眾所知。
逐個周期的多線程操作有利于處理器的效率,這是因為它使指令的執(zhí)行更加不受從屬性的影響。因為有四個線程的指令在指令流水線308中等待執(zhí)行,所以對于特定線程T3的指令314的不令人滿意的從屬性(例如高速緩存未中)不會導致其它線程T1、T2和T4的指令被掛起。關于特定線程T3的等待狀態(tài)也不會干擾其它線程的執(zhí)行。指令的執(zhí)行如之前那樣繼續(xù)進行。
此外,逐個周期的多線程操作減小了執(zhí)行每個線程的指令的等待時間。如圖10所示,在具有8指令深度并且多線程為4個線程的指令流水線中,關于每個線程的等待時間只有2,這是因為在任意一個時間點,每個線程僅僅有2個指令等待在指令流水線308中執(zhí)行。而且,當新的線程、例如線程T22取代了具有不令人滿意的從屬性的線程T2而被加載到指令流水線308中時,最多只有2個而不是8個周期被浪費,這是因為屬于其它線程T1、T3和T4的指令仍保留在流水線中。
圖11是示出根據(jù)本發(fā)明實施例的設計處理器的方法的流程圖。圖12是示出依照這種方法而設計出的處理器的組織結構的方框圖。如圖11所示,該方法的第一步驟是要設計指令集體系結構(ISA)和/或對ISA的擴展,如步驟S30所示。一旦設計了ISA,就設計具有支持該ISA的模塊化功能組織結構的處理器硬件(步驟S32)。包含在處理器的模塊化功能組織結構中的模塊化元件,包括那些可以存在或不存在于處理器中的元件,或者是以不同數(shù)量存在的元件,盡管這些元件在與其它元件的特定互連中可能改變。處理器的模塊化元件包括如上面參考圖4至7示出和描述的功能元件、本地存儲器和發(fā)布邏輯單元的數(shù)量,以及如參考圖6和7示出和描述的開關的存在與否。然后,如步驟S34所示,設計用以實現(xiàn)ISA且適應處理器的模塊化組織結構中的改變的發(fā)布邏輯和微代碼。
這些步驟一旦被執(zhí)行,則在步驟S36中,根據(jù)所期望的處理器的應用,為處理器的設計選擇特定的模塊化組織結構。在這一步驟,選擇功能單元的數(shù)目、本地存儲器和發(fā)布邏輯單元的數(shù)目和/或開關,以作為用于特定處理器以及所期望的用途的組織結構的一部分。例如,為某一特定用途而選擇具有4個功能單元、4個本地存儲器,沒有開關且具有2個發(fā)布邏輯單元的處理器組織結構。
此后,在步驟S38,根據(jù)處理器的該特定用途,確定是否應當修改處理器設計。如果需要修改,則在步驟S40中改變處理器的模塊化功能組織結構的相關元件,即功能單元、本地存儲器、發(fā)布邏輯單元的數(shù)目以及開關的存在等等。然后得到具有改變了這種元件的數(shù)目的修改后的處理器設計。由于開始時被設計的ISA、發(fā)布邏輯和微代碼支持具有這種模塊化功能組織結構的處理器,所以這種新的處理器設計已經(jīng)支持ISA,并且發(fā)布邏輯和微代碼可用于操作經(jīng)修改的處理器設計。
參考圖12,在另一實施例中,通過這里所公開的方法而設計的處理器400的組織結構隨著可再利用元件的數(shù)目而改變以支持各種功能。這樣,處理器400的設計包括具有多個可再利用的高速緩存元件CE 1、CE 2...CE z的高速緩存404。高速緩存的大小是由在設計中所使用的高速緩存元件的數(shù)目決定的。每個高速緩存元件代表整個高速緩存中相對較大的一個片斷部分,這樣該高速緩存元件被稱為“宏”。例如,具有16K雙字大小的高速緩存可具有16個高速緩存元件,每個高速緩存元件的大小均為1024個雙字。處理器的其它基本特征是由其它類型的宏的實例數(shù)目來確定。這樣,在一個實施例中,通過選擇指令緩沖器宏的實例數(shù)目來設計指令緩沖器406,以便提供緩沖器INSN BUF0,INSN BUF1,...INSN BUFX,其中每個緩沖器都緩存特定線程的指令流。換言之,提供多個指令緩沖器,其中每個緩沖器以循環(huán)方式向耦合到指令流水線408的指令總線輸出指令。多指令緩沖器INSN BUF0,INSN BUF1等與指令流水線408以及發(fā)布邏輯410的組合構成了處理器400的指令流水線單元。這種包括多指令緩沖器和向指令流水線408的共用輸出的組織結構能夠按照逐個周期的多線程操作來工作,如上面參考圖10所描述的。其中,與上面關于圖1所描述的現(xiàn)有技術的方法不同,不必在開始設計之前就推斷性地確定好指令緩沖器的數(shù)目。由于每個宏都被設計為可再利用的,因此就可以依照每種類型的宏的數(shù)目及互連來確定處理器的功能元件的大小和性能。另外,優(yōu)選地依照支持指令流水線408的功能的宏的實例數(shù)目來確定指令流水線408的深度M和寬度N。
另外,依照所提供的功能單元宏的實例FC1,F(xiàn)C2,...FCY的數(shù)目來確定處理器400的功能單元402的性能。功能單元宏的每個實例優(yōu)選地實現(xiàn)功能單元的功能,如上面參考圖4至7所描述的。換言之,功能單元宏的每個實例具有執(zhí)行線程的功能。這樣,對于具有數(shù)目為Y的功能單元宏(其中每個功能單元宏處理OP比特的操作數(shù))的處理器組織結構而言,可以獲得兩個優(yōu)點。第一,多線程操作可以用于多達Y個指令流。第二,當多個功能單元作為一個單元來操作時,可以在一個周期內(nèi)處理寬度達Y*OP的操作數(shù)。
上面關于設計方法和處理器結構的描述,強調(diào)了靈活而通用的、設計不同大小和性能的處理器的方法,這種方法仍共享了公共設計特征,并適于滿足特殊性能標準。
盡管本發(fā)明已經(jīng)參照特定實施例進行了描述,可以理解,這些實施例只是示意性地示出本發(fā)明的原則和應用。因此可以理解,對這些示意性實施例所做出的大量修改和其他的安排都不背離如所附保護范圍定義的本發(fā)明的精神和范圍。
權利要求
1.一種具有模塊化組織結構的處理器,包括至少一個本地存儲器,可操作用于存儲數(shù)據(jù)和執(zhí)行指令;至少一個功能單元,可操作用于執(zhí)行與從所述至少一個本地存儲器提供的數(shù)據(jù)有關的指令;以及至少一個發(fā)布邏輯單元,可操作用于將從所述至少一個本地存儲器提供的指令轉換為用于執(zhí)行這些指令的所述至少一個功能單元的操作,所述至少一個發(fā)布邏輯單元中的每一個可操作用于根據(jù)公共指令集來控制所述至少一個功能單元中的一個或多個對指令的執(zhí)行,以便當所述處理器包括多個所述功能單元時,所述至少一個發(fā)布邏輯單元可操作用于對從所述至少一個本地存儲器提供的指令中的單一指令進行解碼,以便根據(jù)所述單一指令同時操作全部所述多個功能單元,以及可操作用于對多個指令進行解碼以便分別操作所述多個功能單元的第一和第二子集,其中根據(jù)所述多個指令中的各個指令來操作每個所述子集。
2.如權利要求1所述的處理器,其中,每個所述功能單元還可操作用于執(zhí)行從所述至少一個本地存儲器提供的指令。
3.如權利要求1所述的處理器,其中,所述處理器包括一個本地存儲器、一個功能單元和一個發(fā)布邏輯單元。
4.如權利要求1所述的處理器,其中,所述處理器包括多個所述功能單元、多個所述本地存儲器、以及一個所述發(fā)布邏輯單元,其中每個所述本地存儲器對應于所述功能單元中的特定一個,每個所述對應的本地存儲器具有同與之對應的所述功能單元匹配的存儲空間,以便只從具有所述匹配的存儲空間的所述對應的本地存儲器向每個所述功能單元提供數(shù)據(jù)。
5.如權利要求1所述的處理器,其中,所述處理器包括多個所述功能單元、多個所述本地存儲器和一個所述發(fā)布邏輯單元,所述處理器還包括所述多個本地存儲器和所述多個功能單元之間的互連網(wǎng)絡,所述互連網(wǎng)絡允許任一個所述功能單元對任一個所述本地存儲器進行訪問。
6.如權利要求1所述的處理器,其中,所述處理器包括多個所述功能單元、多個所述本地存儲器以及多個所述發(fā)布邏輯單元,所述處理器還包括所述多個本地存儲器和所述多個功能單元之間的互連網(wǎng)絡,所述互連網(wǎng)絡允許任一個所述功能單元對任一個所述本地存儲器進行訪問,并且所述多個發(fā)布邏輯單元可操作用于同時控制所述功能單元中的各個單元對多個指令的執(zhí)行。
7.如權利要求1所述的處理器,其中,所述處理器包括多個所述功能單元、多個所述本地存儲器和多個所述發(fā)布邏輯單元,所述多個發(fā)布邏輯單元可操作用于同時控制所述功能單元中的各個單元對多個指令的執(zhí)行。
8.如權利要求1所述的處理器,其中,所述處理器包括多個所述功能單元、多個所述本地存儲器和多個所述發(fā)布邏輯單元,其中每個本地存儲器對應于所述功能單元中的特定一個,每個所述對應的本地存儲器具有同與之對應的所述功能單元匹配的存儲空間,以便只從所述對應的本地存儲器中向每個所述功能單元提供數(shù)據(jù),并且其中所述多個發(fā)布邏輯單元可操作用于同時控制所述功能單元中的各個單元對多個指令的執(zhí)行。
9.如權利要求4、5、6、7或8所述的處理器,進一步包括指令流水線單元,該指令流水線單元包括多個指令流水線元件,其中依據(jù)所述指令流水線元件的數(shù)目來確定所述指令流水線單元的組織結構。
10.如權利要求9所述的處理器,其中,所述指令流水線單元包括多個指令流緩沖器,每個指令流緩沖器可操作用于緩存與在至少一個其它所述指令流緩沖器中緩存的指令流不同的指令流,所述多個指令流緩沖器與所述指令流水線單元互連,從而使所述指令流水線單元可操作用于提供逐個周期的多線程操作。
11.一種設計集成電路處理器的方法,包括提供指令集體系結構(ISA);設計具有支持所述ISA的模塊化功能組織結構的處理器;以及設計發(fā)布邏輯以便在所述處理器上實現(xiàn)所述ISA,所述發(fā)布邏輯適應所述模塊化功能組織結構中的改變。
12.如權利要求11所述的方法,還包括設計微代碼以便在所述處理器上實現(xiàn)所述ISA,所述微代碼適應所述模塊化功能組織結構中的改變。
13.如權利要求11所述的方法,還包括實現(xiàn)具有從所述模塊化功能組織結構中選擇的特定模塊化功能組織結構的處理器。
14.如權利要求13所述的方法,還包括修改所述特定模塊化功能組織結構,其中所述發(fā)布邏輯適應所述特定模塊化功能組織結構中的改變。
15.如權利要求14所述的方法,其中,所述設計具有所述模塊化功能組織結構的所述處理器的步驟包括為所述模塊化功能組織結構設計可再利用的模塊化元件;以及指定每個所述模塊化元件的實例的數(shù)目。
16.如權利要求15所述的方法,其中,所述模塊化元件包括具有指令流水線功能的第一宏,其中所述設計所述處理器的步驟包括設計指令流水線單元,其包括選擇所述第一宏的實例數(shù)目。
17.如權利要求16所述的方法,其中,所述設計所述指令流水線單元的步驟包括提供多個指令流緩沖器,每個指令流緩沖器可操作用于緩存與在至少一個其它所述指令流緩沖器中緩存的指令流相分離的指令流,并且所述多個指令流緩沖器與所述指令流水線單元互連,以便使所述指令流水線單元可操作用于提供逐個周期的多線程操作。
18.如權利要求15所述的方法,其中,所述模塊化元件包括具有高速緩存功能的第二宏,其中所述設計所述處理器的步驟包括設計所述處理器的高速緩存,其包含選擇所述第二宏的實例數(shù)目。
19.如權利要求18所述的方法,其中,依照所述第二宏的所述實例的數(shù)目來選擇所述高速緩存的大小。
20.如權利要求11所述的方法,其中,所述模塊化元件包括具有線程執(zhí)行功能的第三宏,其中所述定制設計所述處理器的步驟包括設計所述處理器的指令執(zhí)行元件,其包含選擇所述第三宏的實例數(shù)目。
21.如權利要求20所述的方法,其中,依據(jù)所選擇的所述第三宏的實例數(shù)目來確定能夠由所述指令執(zhí)行元件同時執(zhí)行的線程的數(shù)目。
全文摘要
提供一種用于多處理器流水線并行性的方法和裝置,其中的具有模塊化組織結構的處理器包括至少一個本地存儲器,可操作用于存儲數(shù)據(jù)和用于執(zhí)行的指令;至少一個功能單元,可操作用于對本地存儲器所提供的數(shù)據(jù)執(zhí)行指令;以及至少一個發(fā)布邏輯單元,可操作用于將該本地存儲器所提供的指令轉換為用于執(zhí)行該指令的功能單元的操作。每個這種發(fā)布邏輯單元可操作用于根據(jù)一個公共的指令集來控制一個或多個功能單元對指令的執(zhí)行。
文檔編號G06F15/00GK1947092SQ200580012488
公開日2007年4月11日 申請日期2005年4月21日 優(yōu)先權日2004年4月22日
發(fā)明者山崎剛 申請人:索尼計算機娛樂公司