專利名稱:多端口寄存器堆的選擇性旁路的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般性地涉及處理器結(jié)構(gòu),更特別地是涉及多端口寄存器堆的選擇旁路技術(shù)。
背景技術(shù):
為了改善性能,當(dāng)前處理器經(jīng)常使用流水線技術(shù)以很高的速度執(zhí)行指令。在這樣的處理器上,指令處理過程被分為一系列操作,每個(gè)操作在相應(yīng)的流水線級段中進(jìn)行。幾個(gè)指令中的獨(dú)立操作可以同時(shí)由不同的流水線級段處理,這增加了處理器的指令吞吐量。微處理器中的常見指令流水線包含下列流水線級段指令獲取(IF)、解碼(Dec)、讀數(shù)據(jù)(RD)、執(zhí)行(EX)和寫入(WR)。
參照圖1,其中圖解了多操作微處理器的構(gòu)成。如上所述,多操作微處理器包含雙功能單元(FU)結(jié)構(gòu),該結(jié)構(gòu)具有四讀出端口(R1-R4)、兩寫入端口(W1、W2)的寄存器堆(150)。應(yīng)當(dāng)理解,雖然僅給出了雙功能單元結(jié)構(gòu),但是這種處理器的功能單元的實(shí)際數(shù)目可能會比所顯示的數(shù)目要多。而且,應(yīng)當(dāng)理解,盡管存在許多多操作微處理器的設(shè)計(jì),但這里提出的設(shè)計(jì)允許從寄存器堆獨(dú)立地訪問數(shù)據(jù)單元,即使用針對寄存器堆的獨(dú)立索引。
當(dāng)EX級段中執(zhí)行的操作被獨(dú)立地,即通過分立指令指定時(shí),這種微處理器結(jié)構(gòu)被稱為超標(biāo)量體系結(jié)構(gòu)。相反,當(dāng)通過對多個(gè)數(shù)據(jù)單元進(jìn)行操作的單個(gè)指令指定操作時(shí),這種微處理器結(jié)構(gòu)被稱為單指令多數(shù)據(jù)(SIMD)結(jié)構(gòu)。
在RD級段(110)期間,四個(gè)數(shù)據(jù)單元被同時(shí)從多端口寄存器堆(150)中讀出,并分成兩個(gè)單獨(dú)的集合,每個(gè)集合包括兩個(gè)單元。這里,這些單元集合被稱為向量。
在EX級段(120)期間,兩個(gè)并行的功能單元(140、142)對這兩個(gè)數(shù)據(jù)向量執(zhí)行算術(shù)或邏輯操作。在WR級段(130)中,功能單元(140、142)中產(chǎn)生的結(jié)果被組成結(jié)果向量,并回寫到寄存器堆(150)中。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的各種實(shí)施例,這種允許動態(tài)向量構(gòu)成的寄存器堆可以被有選擇地旁路,使得對于結(jié)果向量中的任何單元,當(dāng)在產(chǎn)生該單元的相同位置上的相繼操作中請求該單元時(shí),該單元被旁路到相繼操作的輸入向量中??蛇x地,當(dāng)請求動態(tài)組成向量的N個(gè)單元以作為順序與其產(chǎn)生順序相同、針對下一個(gè)操作的輸入時(shí),寄存器堆中待放置的結(jié)果可以被旁路到相繼操作中。即,為了達(dá)到旁路的目的,N個(gè)向量單元作為單一實(shí)體進(jìn)行處理。類似的原則可以應(yīng)用到直寫路徑上。
圖1圖解了沒有旁路的多操作結(jié)構(gòu)的流水線;圖2圖解了具有全旁路的多操作結(jié)構(gòu)的流水線;圖3圖解了具有相同位置選擇性旁路的多操作結(jié)構(gòu)的流水線;圖4圖解了具有全有-全無(all-or-none)選擇性旁路的多操作流水線的流水線;圖5圖解了具有選擇性旁路的功能單元的優(yōu)選布局圖。
具體實(shí)施例方式
為了允許對向量數(shù)據(jù)進(jìn)行不間斷(即,返回-前進(jìn)-返回)的操作,其中周期i的操作結(jié)果被用作i+1周期(旁路)的操作或周期i+2(直寫)的操作的輸入,來自EX和WR級段的輸出的旁路可以被反饋并與RD級段的輸出復(fù)用。全旁路結(jié)構(gòu)允許結(jié)果向量的任何單元被旁路到兩個(gè)輸入操作數(shù)向量中的任何一個(gè)的任何單元。
具有全旁路的流水線如圖2所示。在RD級段期間,四個(gè)數(shù)據(jù)單元或者從多端口寄存器堆(250),功能單元(240、242)的輸出中讀出,或者從寫入級段寄存器(244、246)的輸出中讀出。對于每個(gè)指向單一單元的讀出索引(260),利用多個(gè)比較器(280)與單元寫入索引(270)進(jìn)行比較。如果讀出的索引與最后周期的任何寫入索引相匹配,則數(shù)據(jù)單元被從相應(yīng)功能單元的相應(yīng)單元輸出中讀出。如果不相匹配,則與第二最后的周期的單元寫入索引進(jìn)行比較。如果讀出索引與這些寫入索引中的任何一個(gè)匹配,則數(shù)據(jù)單元被從相應(yīng)WR級段鎖存器的相應(yīng)單元輸出中讀出。在讀出索引與任何寫入索引不匹配的情況下,數(shù)據(jù)單元被簡單地從具有相應(yīng)讀出索引的寄存器堆記錄中讀出。盡管連接沒有明顯地畫出,然而應(yīng)當(dāng)理解,由復(fù)用器(230-236)使用比較結(jié)果。
在EX級段期間,兩個(gè)并行功能單元(240、242)均對兩個(gè)輸入向量進(jìn)行操作,每個(gè)功能單元對一對數(shù)據(jù)單元進(jìn)行操作,其中每個(gè)輸入向量提供一個(gè)數(shù)據(jù)單元。操作的結(jié)果被鎖存到WR級段鎖存器中,并且如果需要的話,可被旁路復(fù)用器(230-236)得到,以便被后續(xù)指令立即使用。在WR級段上,結(jié)果向量被回寫到寄存器堆250中,并且如果需要的話,可被旁路復(fù)用器(230-236)得到,以便被后續(xù)指令立即使用。
對于寄存器堆具有2M個(gè)W位寬記錄的N元向量結(jié)構(gòu),這涉及2N個(gè)數(shù)據(jù)復(fù)用器,每個(gè)具有2N+1個(gè)W位輸入,和4N2個(gè)地址比較器,每個(gè)將M位讀出地址與M位寫入地址進(jìn)行比較,除配線中的開銷之外。全旁路的開銷與N(每個(gè)向量中的單元數(shù))的平方成比例。這表明在硅面積、功耗和定時(shí)方面都存在嚴(yán)重的問題。
通過觀察多數(shù)旁路向量結(jié)果被用于與其產(chǎn)生時(shí)相同的單元位置上的后續(xù)操作這一現(xiàn)象,提出了本發(fā)明以減輕這些問題。例如,向量累加將N個(gè)新單元重復(fù)地加到運(yùn)行(running)N元和數(shù)中,而運(yùn)行和數(shù)的單元位置逐個(gè)周期地被保持下來。
一種利用這種觀察的方式是定義選擇性旁路結(jié)構(gòu),使得對于結(jié)果向量中的任何單元,當(dāng)且僅當(dāng)在與產(chǎn)生該單元時(shí)相同的位置上的相繼操作中請求該單元時(shí),該單元被旁路到相繼操作的向量。類似的原則可應(yīng)用到直寫路徑上。
圖3圖解的是相同位置選擇性旁路方案的布局。在RD級段期間,2N個(gè)數(shù)據(jù)單元根據(jù)下列原則或者從多端口寄存器堆(250)、功能單元(240、242)的輸出中讀出,或者從WR級段寄存器(244、246)的輸出中讀出對于1至N的每個(gè)單元讀出索引i如果單元讀出索引與最后周期的單元寫入索引匹配,則從功能單元的輸出中讀出數(shù)據(jù)單元;否則,如果單元讀出索引與第二最后的周期的單元寫入索引匹配,則從WR級段鎖存器的輸出中讀出數(shù)據(jù)單元;再否則,從具有對應(yīng)讀出索引的寄存器堆記錄中讀出數(shù)據(jù)單元。
在EX級段期間,N個(gè)并行的功能單元對兩個(gè)輸入向量進(jìn)行操作,每個(gè)功能單元對一對數(shù)據(jù)單元進(jìn)行操作,其中每個(gè)輸入向量提供一個(gè)數(shù)據(jù)單元。在WR級段中,結(jié)果向量被回寫到寄存器堆(250)中,并且如果需要的話,還可被饋送相同功能單元的旁路復(fù)用器(230-236)得到,以便被后續(xù)指令立即使用。
如圖3所示,對于雙單元結(jié)構(gòu),這種相同位置選擇性旁路方案使用8個(gè)地址比較器(380)而不是16個(gè)比較器。一般地,相同位置選擇性旁路方案需要4N個(gè)地址比較器。
另一種利用上述觀察的方式是定義選擇性旁路結(jié)構(gòu),使得當(dāng)且僅當(dāng)動態(tài)組成向量的N個(gè)單元按照與產(chǎn)生這些單元時(shí)相同的順序被請求作為下一個(gè)操作的輸入時(shí),待放置到寄存器堆的結(jié)果被旁路到相繼操作。即,為了達(dá)到旁路目的,N個(gè)向量單元被作為單一實(shí)體對待。類似的原則可以應(yīng)用到直寫路徑中。
圖4圖解的是全有-全無選擇性旁路方案的布局。在RD級段期間,2N個(gè)數(shù)據(jù)單元根據(jù)下列原則或者從多端口寄存器堆(250)、功能單元(240、242)的輸出中讀出,或者從WR級段的寄存器(244、246)中讀出1.形成兩個(gè)向量讀出索引。每個(gè)向量讀出索引通過將向量中N個(gè)單元的每個(gè)的單元讀出索引連接在一起而形成。
2.通過將結(jié)果向量的N個(gè)單元中的每個(gè)的單元寫入索引連接在一起,形成一個(gè)向量寫入索引。
3.對于每個(gè)向量讀出索引如果向量讀出索引與最后周期的向量寫入索引匹配,則從保持單元順序的功能單元的輸出中讀出數(shù)據(jù)向量;否則,如果向量讀出索引與第二最后的周期的向量寫入索引匹配,則從保持單元順序的WR級段鎖存器的輸出中讀出數(shù)據(jù)向量;再否則,從具有對應(yīng)單元讀出索引的寄存器堆記錄中讀出數(shù)據(jù)向量。
在EX級段期間,N個(gè)并行的功能單元對兩個(gè)輸入向量進(jìn)行操作,每個(gè)功能單元對一對數(shù)據(jù)單元進(jìn)行操作,其中每個(gè)輸入向量提供一個(gè)數(shù)據(jù)單元。操作的結(jié)果被鎖存到WR級段鎖存器中,并且如果需要的話,可被饋送相同功能單元的旁路復(fù)用器得到,以便被后續(xù)指令立即使用。在WR級段中,結(jié)果向量被回寫到RF中,并且如果需要的話,可被饋送相同功能單元的旁路復(fù)用器(430-436)得到,以便被后續(xù)指令立即使用。
如圖4所示,對于雙單元結(jié)構(gòu),這種全有-全無選擇性旁路方案僅使用了四個(gè)比較器(480-484)。一般地,全有-全無選擇性旁路需要2N個(gè)比較器,并且減少了2N個(gè)數(shù)據(jù)復(fù)用器的旁路開銷(均具有3個(gè)W位輸入),和4個(gè)地址比較器(每個(gè)將M*N連接的讀出地址與M*N連接的寫入地址相比較)。
圖5示出的是具有選擇性旁路的功能單元的優(yōu)選布置圖。讀出和寫入鎖存器被物理放置在數(shù)據(jù)路徑的相應(yīng)段的頂部。所有旁路導(dǎo)線垂直地從回寫鎖存的輸入和輸出端穿過旁路復(fù)用器,到達(dá)讀出鎖存器的輸入端。沒有導(dǎo)線穿過功能單元。
如圖5所述,為了充分利用本發(fā)明,選擇性旁路機(jī)構(gòu)可以物理地實(shí)現(xiàn)在芯片上。特別是,優(yōu)選的布置包含多端口化的寄存器堆10和N個(gè)使用選擇性旁路機(jī)構(gòu)的功能單元14。讀出鎖存器11和12保持從寄存器堆10讀出的值,寫入鎖存器13保持在下一個(gè)周期里寫到寄存器堆10中的值。每個(gè)功能單元至少有兩個(gè)讀出鎖存器和一個(gè)寫入鎖存器。
在圖5中的優(yōu)選實(shí)施例的布置圖中,同一功能單元14的讀出鎖存器11和12、寫入鎖存器13都物理地放置在寄存器堆和該功能單元之間,物理上互相靠近。因此,所有的旁路導(dǎo)線15垂直地從寫入鎖存器13的輸入端和輸出端穿到可以嵌于讀出鎖存器11和12的旁路復(fù)用器的輸入端。在這個(gè)物理實(shí)現(xiàn)中,沒有導(dǎo)線穿過單元。
應(yīng)當(dāng)理解,選擇性旁路可以用在SIMD微處理器以及多操作微處理器中,其中指令或者被靜態(tài)(當(dāng)編碼產(chǎn)生時(shí))調(diào)度,或者被動態(tài)(當(dāng)編碼正在被執(zhí)行時(shí))調(diào)度。
在SIMD微處理器中,選擇性旁路機(jī)構(gòu)被定義為微處理器的結(jié)構(gòu)規(guī)范的一部分。如果在連續(xù)的周期里提交相關(guān)的操作,優(yōu)化編譯器或程序員確保SIMD指令的相關(guān)單個(gè)操作在同一功能單元,即在向量的同一位置中執(zhí)行。
在靜態(tài)調(diào)度的流水線處理器中,選擇性旁路機(jī)構(gòu)也被定義為微處理器結(jié)構(gòu)規(guī)范的一部分。如果在連續(xù)的周期里提交相關(guān)的指令,優(yōu)化編譯器或程序員安排它們在同一功能單元中,即向量的相同位置上執(zhí)行。
在動態(tài)調(diào)度的處理器中,選擇性旁路機(jī)構(gòu)對編譯器或程序員是不可見的。建立指令提交機(jī)構(gòu)以便在考慮到有限旁路的特性的情況下提交相關(guān)的指令。如果在連續(xù)的周期里提交執(zhí)行相關(guān)指令,提交邏輯將它們發(fā)送到同一功能單元,即,這些向量的相同位置中。
盡管本發(fā)明在這里例舉的實(shí)施例已經(jīng)參照附圖進(jìn)行了描述,應(yīng)當(dāng)理解的是本發(fā)明并不限于那些精心設(shè)計(jì)的實(shí)施例,可以由本領(lǐng)域中技術(shù)人員對其進(jìn)行各種其它的變化和修正,只要不違背本發(fā)明的主旨和精神。
權(quán)利要求
1.在多操作處理系統(tǒng)中有選擇地旁路寄存器堆的方法,所述多操作處理系統(tǒng)具有多級段執(zhí)行流水線,包含多個(gè)功能單元和具有多個(gè)讀出端口與寫入端口的寄存器堆,該方法包括步驟確定功能單元中同時(shí)產(chǎn)生的結(jié)果是否將用在其中產(chǎn)生該結(jié)果的相同功能單元中;當(dāng)結(jié)果將被用在其中產(chǎn)生該結(jié)果的相同功能單元中時(shí),旁路寄存器堆。
2.如權(quán)利要求1的方法,其中確定步驟包括,針對每個(gè)功能單元,將每個(gè)操作數(shù)讀出索引與前一周期的相應(yīng)結(jié)果寫入索引相比較,并且如果比較的結(jié)果為匹配,為功能單元設(shè)置旁路條件。
3.如權(quán)利要求1的方法,其中確定步驟包括步驟形成一對向量讀出索引,其中通過連接每個(gè)操作數(shù)的讀出索引來形成每個(gè)向量讀出索引;通過連接每個(gè)結(jié)果的寫入索引來形成向量寫入索引;將每個(gè)向量讀出索引與向量寫入索引相比較;針對每個(gè)比較,如果比較結(jié)果為匹配,為所有功能單元設(shè)置單一旁路條件。
4.如權(quán)利要求1的方法,其中處理系統(tǒng)是單指令多數(shù)據(jù)(SIMD)處理系統(tǒng)。
5.如權(quán)利要求1的方法,其中處理系統(tǒng)是靜態(tài)調(diào)度的多事務(wù)處理系統(tǒng)。
6.如權(quán)利要求1的方法,其中處理系統(tǒng)是動態(tài)調(diào)度的多事務(wù)處理系統(tǒng)。
7.一部分集成電路芯片的布置結(jié)構(gòu),集成電路芯片能夠執(zhí)行如權(quán)利要求1的方法,包括包含針對多端口寄存器堆,多個(gè)功能單元和多個(gè)讀出鎖存器與寫入鎖存器的芯片區(qū)域的布置;其中每個(gè)功能單元具有至少兩個(gè)讀出鎖存器,用來保持多端口寄存器堆的值,和一個(gè)寫入鎖存器,用來保持要寫入到多端口寄存器堆的值,每個(gè)功能單元的至少兩個(gè)讀出鎖存器和寫入鎖存器被放置在寄存器堆和功能單元之間,使得旁路導(dǎo)線從寫入鎖存器的輸入和輸出端穿到至少兩個(gè)讀出鎖存器的輸入端。
全文摘要
多端口寄存器堆可以是選擇性地進(jìn)行旁路,使得當(dāng)該單元被請求在隨后的操作中使用與產(chǎn)生它的相同的索引時(shí),結(jié)果向量的任何單元被旁路到隨后操作的輸入向量的同一索引中。另外,當(dāng)N個(gè)動態(tài)構(gòu)成向量的單元被請求恰好以與產(chǎn)生它們相同的順序在下一操作中作為輸入時(shí),待放置于寄存器堆中的結(jié)果可以被旁路到隨后的操作中。即,為了達(dá)到旁路的目的,N個(gè)向量單元作為單一整體處理。類似的原則可以應(yīng)用到直寫路徑中。
文檔編號G06F15/80GK1493976SQ0315538
公開日2004年5月5日 申請日期2003年8月28日 優(yōu)先權(quán)日2002年8月29日
發(fā)明者塞穆·阿薩德, 杰穆·H·莫瑞奴, 維克托·久班, 久班, H 莫瑞奴, 塞穆 阿薩德 申請人:國際商業(yè)機(jī)器公司