專利名稱:根據(jù)一條指令執(zhí)行多次操作的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及處理器,更具體地說,本發(fā)明涉及一種能夠根據(jù)一條指令多次執(zhí)行操作的處理器。
許多現(xiàn)代計算機(jī)系統(tǒng),諸如圖形工作站和個人計算機(jī),都含有專用的圖形子系統(tǒng),用于在諸如陰極射線管(CRT)、等離子平面顯示屏或液晶顯示器(LCD)等顯示器上再現(xiàn)二維或三維圖形對象。圖形子系統(tǒng)的使用能夠提高系統(tǒng)性能,這是因?yàn)?,圖形操作一旦被計算機(jī)系統(tǒng)的主處理器控制,就能由圖形子系統(tǒng)在主處理器執(zhí)行其它操作的同時并行執(zhí)行。此外,圖形子系統(tǒng)經(jīng)常配備專門的硬件和軟件,一般能夠更快地再現(xiàn)圖形對象。
圖形子系統(tǒng)本身能執(zhí)行的圖形處理的數(shù)量,在很大程度上決定了對系統(tǒng)性能和圖形處理性能二者的提高程度。例如,有一種現(xiàn)有技術(shù)的圖形子系統(tǒng),它只含有一個幀緩沖存儲器及相關(guān)的控制硬件,通用主處理器仍然必須執(zhí)行大多數(shù)的圖形處理功能。這種方法的效率很低,原因是主處理器必須向幀緩沖器傳輸較大數(shù)量的數(shù)據(jù),而這阻礙了其它系統(tǒng)部件和子系統(tǒng)并行使用系統(tǒng)互連。另有一種現(xiàn)有技術(shù)的圖形子系統(tǒng),它所含的專用圖形處理器與主處理器并行操作,執(zhí)行所需的所有圖形處理功能,但是這種方法對有些用戶來說可能費(fèi)用太高。
這就需要某種介乎這兩種極端方法的平衡方法,用合理的代價來改善系統(tǒng)性能和圖形處理性能。有人提出的系統(tǒng)要求主處理器執(zhí)行某些初始的圖形處理步驟,然后由圖形控制器執(zhí)行其余的圖形處理步驟。這種分工能夠減少主處理器與圖形子系統(tǒng)之間交換的數(shù)據(jù)量,與現(xiàn)有技術(shù)的“啞”圖形子系統(tǒng)相比,能改善系統(tǒng)的總體性能。為了提高圖形處理性能,就要為圖形控制器配備提高再現(xiàn)圖形對象的速度的性能增強(qiáng)器件,但是應(yīng)當(dāng)以較低的費(fèi)用來配備這類性能增強(qiáng)器件。
圖形處理性能能夠得到提高的一個領(lǐng)域是輸出圖形原語(outputprimitives)的插值(interpolation)。為了有效地存儲圖形數(shù)據(jù),應(yīng)用程序提供并使用代表圖形對象的輸出圖形原語,其中,每個輸出圖形原語提供一個圖形對象的完整數(shù)據(jù)能夠被其蘊(yùn)含或據(jù)其被插值(interpolated)的最小數(shù)據(jù)。例如,一種輸出圖形原語類型是三角形,它規(guī)定三個頂點(diǎn)的位置(在笛卡爾坐標(biāo)系中,即x、y對)和屬性(包括z和諸如r、g、b等顏色屬性),三角形內(nèi)每個點(diǎn)的位置和屬性都能根據(jù)為這三個頂點(diǎn)提供的值而被插值。其它輸出圖形原語的類型包括點(diǎn)、直線、曲線、圓、三角形和其它多邊形、三角條形和三角扇形。
用于填充多邊形(例如三角形)區(qū)域的插值過程一般包含以下步驟1)設(shè)置(setup);2)邊緣延伸(edge walking);3)跨度生成(spangeneration)。在設(shè)置期間,根據(jù)輸出圖形原語的各頂點(diǎn)的象素參數(shù)值(例如位置和屬性),計算每個象素參數(shù)的Δ值。這些Δ值然后被用于執(zhí)行邊緣延伸,通過遞增Δ值計算多邊形的非水平邊界線(即斜率不為0的邊界線)象素的象素參數(shù)。一旦多邊形的各條邊界線被確定,就進(jìn)行跨度生成,計算多邊形各邊界線之間的水平掃描行中象素的象素參數(shù)。這樣就能根據(jù)輸出圖形原語計算出多邊形中每個象素的象素參數(shù)??缍壬刹襟E特別適合于進(jìn)行調(diào)整以改善性能。例如,跨度中每個象素的y值保持固定。
因此,本發(fā)明的一個目的是提高處理器的處理速度。
本發(fā)明的另一個目的是提高處理器在圖形處理期間為內(nèi)插(interpolate)一個輸出圖形原語而生成跨度的處理速度。
本發(fā)明的這些和其它目的,是用一種運(yùn)行一個執(zhí)行普通RISC(精簡指令集計算機(jī))指令和特殊RISC指令的RISC處理器的方法而達(dá)到的。該方法中的一個步驟是,根據(jù)每個普通RISC指令,控制RISC處理器用RISC處理器的單一功能單元執(zhí)行單一操作。該方法中還有一個步驟是,根據(jù)每個特殊RISC指令,控制RISC處理器并行地用RISC處理器的多個功能單元執(zhí)行多次操作。
根據(jù)一個實(shí)施例,一種特殊RISC指令是用于內(nèi)插一個輸出圖形原語的畫圖指令,其中,RISC處理器處理一個象素的多個象素參數(shù)。RISC處理器通過使用多個功能單元,能有效地地并行執(zhí)行多條普通RISC指令,從而提高內(nèi)插一個輸出圖形原語時的處理速度。
根據(jù)另一個實(shí)施例,RISC處理器也能處理一種特殊的“重復(fù)”RISC指令,其中,RISC處理器被控制并行地用RISC處理器的多個功能單元重復(fù)地執(zhí)行多次操作,其中,根據(jù)每個特殊重復(fù)RISC指令,執(zhí)行第一次操作之后,隨后的每一個操作都依賴前一個操作的結(jié)果。一種特殊的重復(fù)RISC指令是一種用于內(nèi)插一個輸出圖形原語的重復(fù)畫圖指令,其中,RISC處理器根據(jù)該重復(fù)畫圖指令處理一個象素跨度內(nèi)的一系列象素參數(shù)。重復(fù)畫圖指令可以用來以一條RISC指令生成整個跨度的象素。
本發(fā)明的其它目的、特點(diǎn)和優(yōu)點(diǎn),顯見于各附圖及以下的詳細(xì)說明。
本發(fā)明在本文中通過舉例被說明,并不局限于附圖。附圖中以類似的標(biāo)記符號指示類似的成分,其中
圖1表示一個實(shí)施例的一個計算機(jī)系統(tǒng)。
圖2表示一個實(shí)施例的一個圖形子系統(tǒng)。
圖3表示按照一個實(shí)施例,主處理器與圖形子系統(tǒng)之間分工的流程圖。
圖4是表示一個實(shí)施例的一個RISC處理器的框圖。
圖5是表示按照現(xiàn)有技術(shù)執(zhí)行一條普通RISC指令的流程圖。
圖6是表示按照一個實(shí)施例執(zhí)行一條特殊的重復(fù)RISC指令的流程圖。
圖7表示按照一個實(shí)施例的一個特殊的重復(fù)RISC指令的格式。
圖8表示一個實(shí)施例的數(shù)據(jù)通路。
圖9表示執(zhí)行重復(fù)畫圖指令時圖8中數(shù)據(jù)通路的操作。
本文描述一種對跨度生成具有特別應(yīng)用的精簡指令集計算機(jī)(RISC)處理器體系結(jié)構(gòu)。具體來說,所描述的RISC處理器體系結(jié)構(gòu)支持一種特殊的“重復(fù)畫圖”指令,該指令能使一個畫圖操作在下一條指令被提取之前被重復(fù)一定次數(shù),其中,執(zhí)行第一次畫圖操作之后,每一個畫圖操作都依賴前一個畫圖操作的結(jié)果。RISC處理器根據(jù)一條指令執(zhí)行多次操作,與處理一個要求執(zhí)行相同次數(shù)的相同操作的指令序列相比,提高了處理速度。這種性能改善可以這樣來理解,即這種“重復(fù)畫圖”指令只需提取一次,解碼一次,就能執(zhí)行全部所需的畫圖操作;而一個畫圖指令序列中的每一條畫圖指令一般都必須單獨(dú)提取和解碼。
其它優(yōu)點(diǎn)在于對RISC處理器的數(shù)據(jù)通路的配置和操作的方式。例如,RISC處理器一般是作為通用處理器工作的,它含有若干個算術(shù)單元,諸如除法器、乘法器和算術(shù)邏輯單元(ALU),其中,普通指令定義一個要求用一個算術(shù)單元執(zhí)行的操作。對于專用指令,例如“重復(fù)畫圖”指令,RISC處理器作為專用處理器工作,其中,專用指令定義了高效率地由若干個算術(shù)單元并行執(zhí)行多個算術(shù)操作??刂坪徒獯a邏輯被設(shè)置成既支持通用指令又支持專用指令,使RISC處理器既能作為通用處理器工作,執(zhí)行一般的算術(shù)和存儲器操作,又能作為專用處理器工作,高效率地執(zhí)行專門的操作。
“重復(fù)畫圖”指令,對于在填充一個由輸出圖形原語定義的多邊形時生成跨度很有用,其原因是1)一旦知道某掃描行上多邊形邊界線之間的距離,就可以預(yù)測需要執(zhí)行的一系列畫圖操作序列的操作;2)跨度生成過程要求,掃描行上每個象素的象素參數(shù),要按相同的Δ值集合遞增?!爸貜?fù)”指令可以應(yīng)用于指令流有合理程度的可預(yù)見性的其它場合。
圖1表示的計算機(jī)系統(tǒng)10包括主處理器15和連接主總線25的主存儲器20。主處理器15可以是例如任何商業(yè)性銷售的微處理器。計算機(jī)系統(tǒng)10還包括外部總線30,在一個實(shí)施例中,它按照外圍部件互連(PCI)本地總線標(biāo)準(zhǔn)操作。圖形子系統(tǒng)35連接外部總線30,主-外部總線橋45連接外部總線30與主總線25,作為主總線與外部總線之間數(shù)據(jù)事務(wù)處理的橋梁。主-外部總線橋45也作為控制主存儲器20的存儲器控制器。也可以使用其它系統(tǒng)配置方案。
根據(jù)本實(shí)施例,主處理器15執(zhí)行在主存儲器20中存儲的一個要求在顯示器40上顯示圖形對象的應(yīng)用程序(圖中未予示出)。每個圖形對象都根據(jù)由一個或多個輸出圖形原語組成的一個輸出圖形原語集合構(gòu)成,其中每個輸出圖形原語包括一個數(shù)值集合,該集合規(guī)定或暗示該圖形原語所代表的圖形對象的顯示方式和顯示位置。輸出圖形原語的種類包括點(diǎn)、直線、曲線、圓、三角形或其它多邊形、三角條形和三角扇形。
圖形對象的位置和圖形對象的成分圖形原語最初是由應(yīng)用程序按照被稱為世界坐標(biāo)空間(world coordinates)的笛卡爾參照系定義的。為了使圖形對象能被顯示,要求進(jìn)行坐標(biāo)轉(zhuǎn)換,按照顯示器的設(shè)備坐標(biāo)空間(device coordinate space)來表示圖形對象及其成分圖形原語。一旦輸出圖形原語被轉(zhuǎn)換到設(shè)備坐標(biāo)系,輸出圖形原語就能被內(nèi)插或作其它處理,以生成顯示用象素值。
根據(jù)本實(shí)施例,主處理器15接受世界坐標(biāo)系中的輸出圖形原語,將該輸出圖形原語轉(zhuǎn)換到設(shè)備坐標(biāo),進(jìn)行亮度效果處理,并將轉(zhuǎn)換后的輸出圖形原語傳輸?shù)綀D形子系統(tǒng)35,圖形子系統(tǒng)內(nèi)插輸出圖形原語,生成最終的顯示用象素值。因?yàn)橹魈幚砥?5并不進(jìn)行實(shí)際的象素處理,所以總線傳輸信息量顯著減少,并且主處理器就有時間執(zhí)行其它任務(wù)。因此,與由主處理器執(zhí)行大多數(shù)圖形處理任務(wù)的系統(tǒng)相比,主處理器15與圖形子系統(tǒng)35之間的這種分工能夠顯著地提高并行性。
圖2表示的圖形子系統(tǒng)35一般包含圖形控制器50、EPROM 55、DRAM 60以及調(diào)色板/DAC 65。圖形控制器50與外部總線30相連,從主處理器15接收轉(zhuǎn)換后的輸出圖形原語,圖形控制器50對轉(zhuǎn)換后的輸出圖形原語執(zhí)行適當(dāng)?shù)牟逯岛吞幚?,以生成顯示用象素值。DRAM 60被劃分成一個用于存儲顯示用象素值的幀緩沖存儲器和一個存儲紋理映象(texture maps)的紋理映象存儲器。調(diào)色板/DAC 65中有一個數(shù)-模轉(zhuǎn)換器,用于將數(shù)字的象素值轉(zhuǎn)換成用于控制顯示器40的模擬電壓。
如圖所示,圖形控制器50包括外部總線接口70、RISC處理器75、指令高速緩沖存儲器(I-cache)80、數(shù)據(jù)高速緩沖存儲器(D-cache)85、DRAM控制器90、象素引擎(pixel engine)95、VGA電路100、視頻控制器(CRTC)105、先入先出(FIFO)視頻存儲器100。外部總線接口70用于將圖形控制器50連接到外部總線30。
輸出圖形原語被主處理器15作為數(shù)據(jù)流傳輸?shù)綀D形控制器50。每個輸出圖形原語中包括一個類型部分和一個數(shù)據(jù)部分,類型部分說明輸出圖形原語類型,數(shù)據(jù)部分定義圖形原語的每個點(diǎn)或頂點(diǎn)的位置和屬性。例如,如果輸出圖形原語是個三角形,則輸出圖形原語的類型部分說明一個三角形,數(shù)據(jù)部分定義三個頂點(diǎn)的位置和屬性。類型部分中還包括一個長度信息,說明該輸出圖形原語的數(shù)據(jù)部分的長度,以便RISC處理器75能確定下一個輸出圖形原語在數(shù)據(jù)流中的開始位置。RISC處理器75分析數(shù)據(jù)流,以便確定要從I-cache 80中提取哪些指令才能正確地處理該輸出圖形原語。
RISC處理器75內(nèi)插每個輸出圖形原語,以便為要在輸出圖形原語所定義區(qū)域內(nèi)顯示的每個象素生成象素參數(shù)。象素引擎95用象素參數(shù)執(zhí)行過濾和其它處理,以生成象素值。每個象素值直接對應(yīng)于顯示器的一個象素,并被DRAM控制器90存儲在DRAM60的幀緩沖器部分中。CRTC 105從DRAM 60提取象素值來裝入視頻FIFO 110,用于刷新顯示器。
圖3表示圖形處理在主處理器15與圖形控制器50的部件之間被劃分的方式。概括地說,主處理器15從應(yīng)用程序接受輸出圖形原語,其中,輸出圖形原語是按照世界坐標(biāo)系125定義的。主處理器15進(jìn)行坐標(biāo)轉(zhuǎn)換并執(zhí)行提供亮度效果(lighting effects)的圖形處理(過程框130)?,F(xiàn)在以設(shè)備坐標(biāo)系表達(dá)的輸出圖形原語被主處理器15傳輸?shù)綀D形控制器50。RISC處理器75內(nèi)插輸出圖形原語的點(diǎn)或頂點(diǎn),以計算輸出圖形原語所蘊(yùn)含的中間各點(diǎn)的位置和屬性,象素引擎95對圖形對象所有各點(diǎn)的值進(jìn)行處理,以生成象素值,象素值被存儲到幀緩沖器,隨后用于顯示。
在過程塊135,RISC處理器75設(shè)置填充輸出圖形原語所蘊(yùn)含區(qū)域的插值過程。例如,如果輸出圖形原語是個三角形,三角形的三個頂點(diǎn)就蘊(yùn)含著一個三角形的形狀,于是就可以根據(jù)這三個頂點(diǎn)的位置和屬性,計算三角區(qū)內(nèi)各填充點(diǎn)象素的象素參數(shù)(即位置和屬性)。為了設(shè)置插值過程,RISC處理器75要為每個規(guī)定的象素參數(shù)確定Δ值(例如dx、dy、du、dv等等)。在設(shè)置過程中,RISC處理器75按照一般的通用RISC處理器的方式工作,其處理的指令序列中,每個指令規(guī)定一個操作,最多要求一個處理器算術(shù)單元執(zhí)行。
在過程塊140,RISC處理器用Δ值來執(zhí)行“邊緣延伸”,確定輸出圖形原語蘊(yùn)含的邊界線上的象素的象素參數(shù)。在邊緣延伸過程中,RISC處理器75按照一般的通用RISC處理器的方式工作。
在過程塊145,RISC處理器用Δ值和已經(jīng)計算出的邊界線為位于所計算的邊界線之間的各象素生成象素參數(shù)的“跨度”。在跨度生成過程中,RISC處理器75按照專用處理器的方式工作,其中,RISC處理器處理一個或多個“畫圖”指令,每個指令的結(jié)果是為一個跨度的一個象素輸出象素參數(shù)。RISC處理器75另外也可以執(zhí)行一種單一“重復(fù)畫圖”指令,該指令規(guī)定一個畫圖操作序列,每個畫圖操作對應(yīng)一個跨度的每一個象素。對于每個“畫圖”指令和“重復(fù)畫圖”指令的每個畫圖操作,RISC處理器75用多個算術(shù)單元并行地執(zhí)行多個算術(shù)操作。在過程塊150,象素引擎95用RISC處理器75所計算的象素參數(shù),生成用于激勵顯示器上適當(dāng)?shù)南笏氐南笏刂怠?br>
圖4表示的RISC處理器75包括指令存儲器155、程序計數(shù)器157、解碼與控制單元160、數(shù)據(jù)通路165,它們都由時鐘信號180定時。該時鐘信號可以內(nèi)部提供給RISC處理器75,也可以由外部提供。對于大多數(shù)應(yīng)用來說,RISC處理器75按照一般流水線處理器的方式工作,每個指令執(zhí)行一個操作。相應(yīng)地,數(shù)據(jù)通路165中包括多個執(zhí)行算術(shù)和邏輯操作的功能單元。(參見圖8中數(shù)據(jù)通路165的一個實(shí)施例。)
此外,RISC處理器75還能執(zhí)行一種特殊的“畫圖”指令,該指令包含多個由數(shù)據(jù)通路165中的功能單元同時并行地執(zhí)行的操作,其中,解碼與控制單元160中包括為控制數(shù)據(jù)通路中功能單元而生成適當(dāng)控制信號的邏輯。數(shù)據(jù)通路165被配置成能高效率地執(zhí)行“畫圖”指令,使RISC處理器75能像專用的跨度生成器一樣操作。
RISC處理器75還能執(zhí)行一種特殊的“重復(fù)”指令,其中,由“重復(fù)”指令指定的操作要被執(zhí)行一定的次數(shù),然后再提取指令流中的下一個指令。這種重復(fù)指令可以用來代替一個執(zhí)行相同操作的指令的序列,以減少執(zhí)行所需操作需要的時間。例如,一個由四個“畫圖”指令組成、每個指令畫一個象素的指令序列,就可以用一個“重復(fù)畫圖”指令或“rdraw”指令代替。
與圖5和圖6中的現(xiàn)有技術(shù)比較一下,就能明白這種特殊的“重復(fù)”指令的優(yōu)點(diǎn)。圖5表示了一種典型指令流水線的各階段,包括指令提取階段200、指令解碼階段201、執(zhí)行階段202、寫回階段203。在階段204,程序計數(shù)器遞增,導(dǎo)致下一條指令被提取。如果流水線上每個階段需要1個時鐘周期來完成,則完成每條指令需要5個時鐘周期。對于畫圖指令序列來說,每個畫圖指令都要經(jīng)過流水線上各階段。
圖6表示特殊的“重復(fù)”指令的執(zhí)行方式。與圖5中的流水線一樣,圖6的流水線包括指令提取階段210、指令解碼階段211、執(zhí)行階段212、寫回階段213,但是,如果要再執(zhí)行該重復(fù)指令所定義的操作,程序計數(shù)器卻不遞增。對是否再次執(zhí)行該操作的判斷可以與寫回階段213并行進(jìn)行的,所以未在流水線上增加延遲時間。因?yàn)椤爸貜?fù)”指令只被提取和解碼一次,與定義相同操作的一個指令序列相比,節(jié)省了時間。
現(xiàn)在返回圖4,討論RISC處理器75的操作。指令存儲器155存儲從指令高速緩沖存儲器80中提取的指令。當(dāng)程序計數(shù)器157遞增時,指令存儲器155輸出一條指令,該指令由解碼與控制單元160解碼。解碼與控制單元160確立必要的控制信號并加載數(shù)據(jù)通路165的適當(dāng)寄存器中,使得數(shù)據(jù)通道165能夠執(zhí)行該指令所指定的操作。
當(dāng)“畫圖”指令被解碼與控制單元160接收時,解碼與控制單元160生成必要的控制信號來控制數(shù)據(jù)通路165的功能單元,使各功能單元同時執(zhí)行不同的操作。解碼與控制單元160中含有能根據(jù)畫圖指令的操作碼自動生成適當(dāng)?shù)目刂菩盘柕倪壿嬰娐?,諸如可編程邏輯陣列(PLA)。
當(dāng)指令159被解碼與控制單元160接收,而指令159是個重復(fù)指令時,解碼與控制單元160就阻止程序計數(shù)器157遞增,直到重復(fù)指令規(guī)定的操作被執(zhí)行了重復(fù)指令所規(guī)定的次數(shù)。圖7表示了指令159的基本格式,它包括操作碼域220、目的寄存器域221、源寄存器域222和223。對于“重復(fù)”指令來說,操作碼域存儲的信息可以被認(rèn)為是包括了規(guī)定操作的操作信息224、規(guī)定操作是否重復(fù)的重復(fù)信息225、規(guī)定重復(fù)操作次數(shù)的重復(fù)次數(shù)信息。處理器設(shè)計者可以任意地選擇任何操作碼來對應(yīng)一個重復(fù)指令,并且不必提供不同操作、重復(fù)及重復(fù)次數(shù)各域。此外,重復(fù)次數(shù)信息也可以選擇用單獨(dú)的指令來提供。例如,可以用一條指令預(yù)先在某寄存器或計數(shù)器中裝入一個數(shù)值,用該數(shù)值來規(guī)定由重復(fù)指令規(guī)定的操作應(yīng)重復(fù)的次數(shù)。
圖8和9表示數(shù)據(jù)通路165的一個特定實(shí)施例,該數(shù)據(jù)通路165既能執(zhí)行專用指令,也能執(zhí)行普通的RISC指令,前者例如用于為跨度的象素生成象素參數(shù)的“畫圖”和“重復(fù)畫圖”指令。圖中所示的數(shù)據(jù)通路165包括一個“偶數(shù)”流水線,它含有多路轉(zhuǎn)換器(MUX)300、偶數(shù)寄存存儲器(register file)302、ALU A、向象素引擎指令315(該指令可以在寄存器中存儲)的上端數(shù)據(jù)部分308輸出16位數(shù)據(jù)的寄存器306。數(shù)據(jù)通路165還包括一個“奇數(shù)”流水線,它含有多路轉(zhuǎn)換器(MUX)301、奇數(shù)寄存存儲器303、算術(shù)邏輯單元(ALU)B、向象素引擎指令315的下端數(shù)據(jù)部分307輸出19位數(shù)據(jù)的寄存器307。數(shù)據(jù)通路165的其它功能單元還包括XSHADOW寄存器311、計數(shù)寄存器312、倒數(shù)計算電路(1/Q)313、多路轉(zhuǎn)換器314。寄存器320也包括一個操作碼部分321,供象素引擎95讀取以確定如何處理上端數(shù)據(jù)部分和下端數(shù)據(jù)部分中所儲存的數(shù)據(jù)。ALUA和ALUB各有一個時鐘周期的延遲,倒數(shù)計算電路313和多路轉(zhuǎn)換器314各有兩個時鐘周期的延遲,但它們被設(shè)置在流水線中用來在每個時鐘周期開始執(zhí)行一個新操作。
圖中也表示了解碼與控制電路160的局部。具體來說,圖中的解碼指令寄存器(decode IR)405和周期(CYCLE)寄存器410相連,以提供用于訪問偶數(shù)寄存存儲器和奇數(shù)寄存存儲器的寄存器地址。根據(jù)本實(shí)施例,解碼指令寄存器405存儲來自一條指令的目的寄存器域、源寄存器2域和源寄存器1域的解碼過的寄存器地址,周期寄存器410存儲一個規(guī)定重復(fù)指令的每個操作的時鐘周期數(shù)的3位的周期計數(shù)值。根據(jù)本實(shí)施例,每個寄存器地址有6位,周期計數(shù)的最大值是從重復(fù)指令的操作碼域譯出的。
在解碼指令寄存器405中存儲的每個6位源寄存器地址,有一組3個雙輸入邏輯或門415,該或門組接收源寄存器地址的最低3位有效位和3位的周期計數(shù)值。每個或門415用對應(yīng)寄存器地址的一個較低位和周期計數(shù)值的一位,進(jìn)行邏輯或運(yùn)算。周期計數(shù)值從零開始計數(shù),每個時鐘周期遞增一次,直到周期計數(shù)值達(dá)到預(yù)定的最大值,此時周期計數(shù)值被清零,表示重復(fù)指令的下一個操作的開始。因?yàn)橹芷谟嫈?shù)值每個時鐘周期遞增一次,所以,一組4個新的源操作數(shù)(每個流水線2個)每個時鐘周期被自動尋址,而不必解碼另一條指令。通過增加周期計數(shù)值的最大值,一個畫圖操作就能計算更多的象素參數(shù)。
目的寄存器地址帶數(shù)據(jù)穿過流水線。在流水線的末端,目的寄存器地址被確定,數(shù)據(jù)被寫入指定的寄存器。
如圖所示,多路轉(zhuǎn)換器320-325、330-333、345-346、352和360-361用于傳遞功能單元的結(jié)果,而寄存器340-344、350-351、370-371用于流水線構(gòu)造目的。偶數(shù)流水線和奇數(shù)流水線都包括下列4個階段解碼、執(zhí)行1(X1)、執(zhí)行2(X2)和寫(WR)。如圖4中所示,兩個流水線的提取階段都由指令存儲器155、程序計數(shù)器157和解碼與控制電路160執(zhí)行。適當(dāng)時,多路轉(zhuǎn)換器和寄存器被表示為由控制信號控制或選通,在指令執(zhí)行流水線上的某階段輸出新數(shù)據(jù)。例如,在X1階段選通寄存器340去傳輸某指令的操作數(shù),在X2階段選通寄存器350去傳輸該指令的結(jié)果,在WR階段選通寄存器350去傳輸相同的結(jié)果。所有控制信號都由解碼與控制單元160提供。
偶數(shù)和奇數(shù)流水線可以用來提供超標(biāo)量功能(superscalarfunctionality),其中,在偶數(shù)流水線中起動第一條指令,同時在奇數(shù)流水線中起動第二條指令。此外,偶數(shù)和奇數(shù)流水線可以用來執(zhí)行規(guī)定用一個功能單元執(zhí)行一個操作的一般RISC指令。
執(zhí)行諸如“畫圖”和“重復(fù)畫圖”指令等特殊操作的能力,部分是由XSHADOW寄存器311,計數(shù)寄存器312、遞增器(INC)380-381以及零探測器電路(ZD)390提供的。XSHADOW寄存器311在跨度生成期間存儲水平位置參數(shù)“x”的當(dāng)前值,遞增器380被編程為存儲跨度的Δ值dx。計數(shù)寄存器312存儲規(guī)定某“重復(fù)畫圖”指令要執(zhí)行畫圖操作次數(shù)的計數(shù)器的當(dāng)前值。遞增器381每當(dāng)一個畫圖操作完成時遞減計數(shù)寄存器的值。周期寄存器420的值變?yōu)榱銜r,表示一個畫圖操作的完成。當(dāng)計數(shù)寄存器312存儲一個零值時,零探測器電路390將這種情況指示給解碼與控制單元160,使得解碼與控制單元160能使程序計數(shù)器的值遞增,并使新的指令被提取。
圖9表示數(shù)據(jù)通路165用“重復(fù)畫圖”指令執(zhí)行透視更正(perspective correction)的操作,其中該指令每個畫圖操作生成4個象素參數(shù)的新值(周期計數(shù)值的最大值等于2)。圖9的“重復(fù)畫圖”指令每個畫圖操作解下列方程(當(dāng)COUNT>0時),為u和v參數(shù)執(zhí)行透視更正qr=1/q(1)u’=qr×u(2)v’=qr×v(3)q=q+dq(4)u=u+du(5)v=v+dv(6)x=x+dx(7)z=x+dz(8)每個畫圖操作都輸出象素參數(shù)x、z、u’和v’,其中q是透視值,dq是在設(shè)置步驟為q確定的Δ值,u是水平紋理坐標(biāo),du是在設(shè)置步驟確定的u的Δ值,v是縱向紋理坐標(biāo),dv是在設(shè)置步驟確定的v的Δ值,x是水平位置參數(shù),dx是在設(shè)置步驟確定的x的Δ值,z是深度坐標(biāo),dz是在設(shè)置步驟確定的z的Δ值,u’是u的透視更正值,v’是v的透視更正值。一旦所有方程被解出,COUNT寄存器的值就遞減。
計算q、x、z、u、v、dq、dx、dz、du和dv的值,在提取和解碼下一個重復(fù)畫圖指令之前,將這些值存入寄存存儲器。根據(jù)本實(shí)施例,在XSHADOW寄存器131中裝入跨度的初始水平坐標(biāo)x,在遞增器380中裝入值dx,將q和z值存儲在偶數(shù)寄存存儲器302中作為S1A操作數(shù)被訪問,將dq和dz值存儲在偶數(shù)寄存存儲器302中作為S2A操作數(shù)被訪問。與此類似,將u和v值存儲在奇數(shù)寄存存儲器303中作為S1B操作數(shù)被訪問,將du和dv值存儲在奇數(shù)寄存存儲器303中作為S2B操作數(shù)被訪問。
數(shù)據(jù)通路165利用多路轉(zhuǎn)換器提供的數(shù)據(jù)傳遞功能,提供需要的并行量。如圖9中所示,解碼與控制單元160控制數(shù)據(jù)通路165,在時間T1分別用ALUA、ALUB和乘法器314并行地為第一個象素(象素O)解方程(2)、(4)和(5)。在時間T2,XSHADOW的值遞增,確定了方程(7),ALUA確定方程(8),ALUB確定方程(6),乘法器314確定方程(3),倒數(shù)計算電路313確定方程(1),這又為能在時間T3為第二個象素(象素1)解方程(2)、(4)和(5)提供了保證。在時間T3,象素0的x和u’值(x0和u0’)也被輸出。在時間T4,象素0的z和v’值(z0和v0’)也被輸出。在時間T4,象素1的方程(1)、(3)、(6)-(8)也被解出,由此,象素1的參數(shù)在時間T5和T6期間被輸出。這個過程不斷進(jìn)行,直到COUNT寄存器的值變成0。
以上內(nèi)容結(jié)合本發(fā)明具體的典型實(shí)施例對本發(fā)明作了說明。不過很明顯,在不偏離本發(fā)明的精神和范圍的前提下,可以對這些實(shí)施例作出各種改進(jìn)。因此,說明書內(nèi)容及附圖應(yīng)視為具有說明性的意義而不具有限制性的意義。
權(quán)利要求
1.一種運(yùn)行一個執(zhí)行普通RISC(精簡指令集計算機(jī))指令和特殊RISC指令的RISC處理器的方法,包含下列步驟控制RISC處理器根據(jù)每個普通RISC指令,用RISC處理器的一個功能單元執(zhí)行一個操作;控制RISC處理器根據(jù)每個特殊RISC指令,并行地用RISC處理器的多個功能單元執(zhí)行多個操作。
2.權(quán)利要求1的方法,其中的一種特殊RISC指令是要求內(nèi)插輸出圖形原語的畫圖指令,其中RISC處理器要處理一個象素的多個象素參數(shù)。
3.權(quán)利要求1的方法,還包括以下步驟控制RISC處理器并行地使用RISC處理器的多個功能單元重復(fù)地執(zhí)行多個操作,其中根據(jù)每個特殊的重復(fù)RISC指令,執(zhí)行第一次操作之后,隨后的每一個操作都依賴前一個操作的結(jié)果。
4.權(quán)利要求3的方法,其中的一種特殊的重復(fù)RISC指令是要求內(nèi)插輸出圖形原語的重復(fù)畫圖指令,其中RISC處理器根據(jù)該重復(fù)畫圖指令要處理一個跨度內(nèi)象素的一系列象素參數(shù)。
5.一種精簡指令集計算機(jī)(RISC)處理器,包括一個存儲指令的指令存儲器;一個與指令存儲器相連的程序計數(shù)器,當(dāng)程序計數(shù)器的值遞增時,程序計數(shù)器導(dǎo)致指令從指令存儲器中被發(fā)出;一個包括多個功能單元的數(shù)據(jù)通路,其中每個功能單元用于執(zhí)行一個算術(shù)操作或邏輯操作;一個與指令存儲器、程序計數(shù)器及數(shù)據(jù)通路相連的解碼與控制單元,解碼與控制單元控制數(shù)據(jù)通路為每個普通算術(shù)指令執(zhí)行一個算術(shù)或邏輯操作,為每個特殊指令同時執(zhí)行多個算術(shù)或邏輯操作,使得每個普通算術(shù)指令使用數(shù)據(jù)通路的一個算術(shù)單元,每個特殊指令使用數(shù)據(jù)通路的多個算術(shù)單元
6.權(quán)利要求5的RISC處理器,其中的一種特殊指令是要求內(nèi)插輸出圖形原語的畫圖指令,它規(guī)定要處理一個跨度內(nèi)象素的一系列象素參數(shù)。
7.權(quán)利要求5的RISC處理器,其中的一種特殊指令是要求內(nèi)插輸出圖形原語的重復(fù)畫圖指令,它規(guī)定要處理多個象素,在重復(fù)畫圖指令規(guī)定的多個象素已經(jīng)達(dá)到處理、從而使得RISC處理器生成了一個跨度內(nèi)象素之前,解碼與控制單元不讓程序計數(shù)器遞增。
8.權(quán)利要求5的RISC處理器,其中,解碼與控制單元包含一個自動生成一組向數(shù)據(jù)通路提供的控制信號的邏輯設(shè)備,數(shù)據(jù)通路被配置成根據(jù)控制信號執(zhí)行操作。
9.一種運(yùn)行一個執(zhí)行普通RISC(精簡指令集計算機(jī))指令和特殊RISC指令的RISC處理器的方法,包含下列步驟控制RISC處理器根據(jù)每個普通RISC指令,用RISC處理器的一個功能單元執(zhí)行一個操作;控制RISC處理器并行地使用RISC處理器的多個功能單元重復(fù)地執(zhí)行多個操作,其中根據(jù)每個特殊的重復(fù)RISC指令,執(zhí)行第一次操作之后,隨后的每一個操作都依賴前一個操作的結(jié)果。
10.權(quán)利要求9的方法,其中的一種特殊的重復(fù)RISC指令是要求內(nèi)插輸出圖形原語的重復(fù)畫圖指令,其中RISC處理器根據(jù)該重復(fù)畫圖指令處理一個跨度內(nèi)象素的一系列象素參數(shù)。
11.一種執(zhí)行普通RISC(精簡指令集計算機(jī))指令和特殊RISC指令的RISC處理器,包括控制RISC處理器根據(jù)每個普通RISC指令,用RISC處理器的一個功能單元執(zhí)行一個操作的控制裝置;控制RISC處理器根據(jù)每個特殊RISC指令,并行地用RISC處理器的多個功能單元執(zhí)行多個操作的控制裝置。
12.權(quán)利要求11的RISC處理器,其中的一種特殊RISC指令是要求內(nèi)插輸出圖形原語的畫圖指令,其中RISC處理器處理一個象素的多個象素參數(shù)。
13.權(quán)利要求11的RISC處理器,進(jìn)一步包括控制裝置,用于控制RISC處理器并行地使用RISC處理器的多個功能單元重復(fù)地執(zhí)行多個操作,其中根據(jù)每個特殊的重復(fù)RISC指令,執(zhí)行第一次操作之后,隨后的每一個操作都依賴前一個操作的結(jié)果。
14.權(quán)利要求13的RISC處理器,其中的一種特殊的重復(fù)RISC指令是要求內(nèi)插輸出圖形原語的重復(fù)畫圖指令,其中RISC處理器根據(jù)該重復(fù)畫圖指令處理一個跨度內(nèi)象素的一系列象素參數(shù)。
全文摘要
本文介紹一種運(yùn)行一個執(zhí)行普通RISC(精簡指令集計算機(jī))指令和特殊RISC指令的RISC處理器的方法。該方法中的一個步驟是,控制RISC處理器根據(jù)每個普通RISC指令,用RISC處理器的一個功能單元執(zhí)行一個操作(212)。該方法中另一個步驟是,控制RISC處理器根據(jù)每個特殊RISC指令,并行地用RISC處理器的多個功能單元執(zhí)行多次操作(212)。該方法中再一個步驟是,控制RISC處理器重復(fù)地執(zhí)行特殊操作,其中,執(zhí)行第一次操作之后,隨后的每一個操作都依賴前一個操作的結(jié)果。
文檔編號G06F9/38GK1220017SQ97194625
公開日1999年6月16日 申請日期1997年3月4日 優(yōu)先權(quán)日1996年3月15日
發(fā)明者J·R·佩特爾森, G·C·普爾, M·斯里蒂 申請人:微米技術(shù)有限公司