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