專利名稱:流水線處理器內(nèi)用于松散寄存器編碼的方法和裝置的制作方法
本申請的優(yōu)先權(quán)是于1999年5月13日申請的美國臨時專利申請Serial No.60/134,253,標題為“Method And Apparatus For SynthesizingAnd Implementing Intergrated Circuit Designs”和共同待審的于1999年10月14日申請的美國專利申請No.09/418,663,標題為“Method AndApparatus For Managing The Configuration And Functionality Of ASemiconductor Design”,它的優(yōu)先權(quán)是相同標題的于1998年10月14日申請的美國臨時專利申請Serial No.60/104,271。
背景技術(shù):
1.發(fā)明領域本發(fā)明涉及集成電路設計領域,尤其涉及在一個流水線中央處理器(CPU)或用戶化微處理器中使用的用于實現(xiàn)指令的一種硬件描述語言。
2.描述相關(guān)技術(shù)在計算機領域中RISC(精簡指令集計算機)處理器是大家所熟知的。RISC處理器與非-RISC(通常所說的“CISC”)處理器相比,通常具有利用充分精簡指令集的基本特性。一般RISC處理器機器指令并不全是微編碼的,可以立即執(zhí)行而不用解碼,因而在處理速度上可以提供有意義的經(jīng)濟效益。這一“流線型的”指令處理能力還允許進一步簡化處理器的設計(與非RISC設備相比),從而允許更小的硅片和更少的生產(chǎn)成本。
此外,RISC處理器典型的特征在于若干或所有的下列屬性(i)裝入/存儲存儲器結(jié)構(gòu)體系(也就是,僅在裝入和存儲指令時必須存取存儲器;其他的指令經(jīng)過處理器中的內(nèi)部寄存器操作);(ii)多數(shù)指令的單周期執(zhí)行;(iii)固定長度易于解碼的指令格式;(iv)處理器和編譯器的統(tǒng)一性,以及較簡單和更易于編寫的一個編譯器;(v)硬連線控制;(vi)較少的尋址模式;(vii)相對靜態(tài)的指令格式;和(viii)流水線操作。RISC裝入/存儲體系結(jié)構(gòu)如上所述,通過限制存取存儲器而只是裝入和存儲指令,RISC處理器的裝入/存儲體系結(jié)構(gòu)大幅簡化了設備的操作;其他的操作是“寄存器到寄存器”。因此,典型的RISC處理器還使用大量的內(nèi)部寄存器來處理這樣的操作。以下說明一個簡單的裝入/存儲的支持加法的運算運算 a=b+c指令loadr3,a 用來自源定位a的值裝入寄存器3loadr4,b 用來自源定位b的值裝入寄存器4addr5,r3,r4 加寄存器3和4,并在寄存器5中存儲結(jié)果storee,r5 在目的地位置e存儲寄存器5的內(nèi)容如上例所示,原有技術(shù)的RISC通常是用一個中間寄存器(例如,r5)來保持整個裝入/存儲操作過程中到存儲器的數(shù)據(jù)。由于大多數(shù)RISC處理器依靠這樣的裝入/存儲機制來存取和修改存儲器的值,當期望一種簡單的存儲器存取時指令的效率受損。尋址模式一種尋址模式是存取一個可以在任何地方被發(fā)現(xiàn)的操作數(shù)的一種方法。通常,操作數(shù)可以位于存儲器中或一個CPU寄存器中或者它們可以是被定義在代碼本身中的文字值。在微處理器中可能使用的尋址模式尤其包括,“隱含的”尋址,其中操作碼規(guī)定操作數(shù);“立即”尋址,其中指令本身包含操作數(shù);“直接”尋址,其中操作數(shù)為一個存儲器地址或寄存器目的地;“非直接”尋址,其中操作數(shù)規(guī)定期望操作數(shù)的地址;和“索引”尋址,其中添加或者說操作兩個或多個值以得到操作數(shù)的地址。
在上述列出的尋址模式中,“立即”尋址在一個RISC處理器中經(jīng)常使用,因為在指令內(nèi)立即包含操作數(shù)。如上所述,一個立即指令(通常由語法“imm”表示或它的語法派生)一般在指令本身中包含操作數(shù)。一個立即指令通常具有這樣的操作數(shù),一個文字值跟隨一個特殊的字符比如“#”符號。操作數(shù)的格式可以變化。例如,指令可以具有如下的一個操作數(shù)$1234 ;操作數(shù)是文字值$1234Buffer ;操作數(shù)是被附屬到“Buffer”的文字值‘Y’;操作數(shù)是ASCII代碼大寫字母Y短立即與長立即當使用立即尋址/數(shù)據(jù)時,在規(guī)定操作數(shù)的雙親指令字內(nèi)可以頻繁編碼較小的數(shù)據(jù)字(通常少于指令字大小的的一半)。這種方法經(jīng)常稱為“短立即”尋址/數(shù)據(jù);然而,這種方法明顯限制了可在單一指令字內(nèi)使用的可允許地址/操作數(shù)。相反,長立即尋址/數(shù)據(jù)需要多于一個的指令字,但去掉了許多與短立即方式相關(guān)的限制。寄存器編碼RISC處理器內(nèi)的寄存器緊密地依靠指令集,因為通過指令這些寄存器被頻繁規(guī)定作為操作數(shù),或可替換的用于產(chǎn)生關(guān)于操作數(shù)的地址。
原有技術(shù)通常這樣構(gòu)成指令編碼方案將指令全部位數(shù)中的一或二位用于表示立即操作數(shù)的用途,或者通過一種可替換的指令類型隱含立即操作數(shù)的用途,如下所示。通常利用一個固定的位集——或者利用其它情況下會用于描述一個源數(shù)據(jù)寄存器的那些位——在指令字中對立即數(shù)據(jù)進行編碼。
add r0,r1,r2 ;r0=r1+r2; 寄存器-寄存器相加addi r0,r1,10 ;r0=r1+10; 寄存器-立即相加這種方法符合試圖最小化指令字和寄存器容量的趨勢,從而減少了完成處理器設計需要的所要求的硅。然而,利用指令操作碼來推斷保持在指令內(nèi)的立即數(shù)據(jù)減少了可用以編碼指令的靈活性。例如,使用上述原有技術(shù)編碼的方法,不可能有效的使用一個單一的指令產(chǎn)生多個長立即常數(shù)。此外,如果一個運算(比如一個減法)是不可交換的,并需要讓立即數(shù)據(jù)表示成減法器或減數(shù),就需要有指令的兩個立即版本以及指令的寄存器-寄存器版本。
圖1a-1c示例了典型的原有技術(shù)的用于寄存器-寄存器、寄存器-立即和立即-寄存器指令的寄存器編碼格式。使用指令字的一部分來編碼立即數(shù)據(jù),或者允許一個后面的指令字被全部用于立即數(shù)據(jù)以便可以允許編碼更大范圍的值,在這二者中常常不可能進行選擇通常,原有技術(shù)的處理器不允許將所有立即數(shù)據(jù)的組合與所有指令的方式一起使用。使用指令字的一部分來編碼立即數(shù)據(jù),或者允許一個后面的指令字被全部用于立即數(shù)據(jù)以便可以允許編碼更大范圍的值,在這二者中常常不可能進行選擇。在一個帶有用戶-可擴展指令集的處理器中,這就對一個程序員任何使用一個新指令設置了一個限制,尤其是如果新指令的功能是不可交換的。流水線操作流水線操作是一種技術(shù),用于通過把處理器中運算的順序分成片段來增加處理器的性能,當可能時這些片段能以并行方式有效地被執(zhí)行。在一個典型的流水線處理器中,與處理器運算操作程序(比如加法,乘法,除法等等)相關(guān)的運算單元通常被“分段”,以便整個任意時鐘周期內(nèi)在該單元的一個給定的片段中執(zhí)行操作的一個具體部分。因此,在任意給定的時鐘周期這些單元可以在一個不同計算的結(jié)果上進行運算。作為一個例子,在第一時鐘周期中兩個數(shù)A和B被送到乘法單元10并由單元的第一片段12進行部分處理。在第二時鐘周期中,來自A和B相乘的部分結(jié)果被送到第二片段14,同時第一片段12接收開始進行處理的兩個新的數(shù)(比方說C和D)。最終結(jié)果是在一個初始啟動周期之后,每個時鐘周期由運算單元10執(zhí)行一次乘法運算。
從一個體系結(jié)構(gòu)到另一個流水線的深度可以變化。在本文中,術(shù)語“深度”指的是在流水線中存在的分立階段的數(shù)量。通常,帶有較多階段的一個流水線執(zhí)行程序較快,但如果流水線的效果是明顯可見的話,對于程序員來說編程也更加困難。大多數(shù)流水線處理器是三階段(取指令、解碼和執(zhí)行)或四階段(比如取指令、解碼、操作數(shù)提取和執(zhí)行,或者可替換的,取指令、解碼/操作數(shù)提取、執(zhí)行和寫回),盡管可以使用更多的或更少的階段。
當對一個流水線處理器的指令集進行開發(fā)時,必須考慮幾種不同類型的“冒險”。例如,為了爭奪相同的資源(比如總線,寄存器,或其他的功能單元)從重疊指令中會出現(xiàn)所謂的“結(jié)構(gòu)上的”或“資源爭奪”的危險性,這一般利用一個或多個流水線阻塞來解決。在讀/寫沖突的情況下出現(xiàn)所謂的“數(shù)據(jù)”流水線危險,該沖突可以改變存儲器或寄存器存取的順序。“控制”冒險通常產(chǎn)生于在程序流中的轉(zhuǎn)移或類似的改變。
使用流水線結(jié)構(gòu)通常需要以聯(lián)鎖來處理這些冒險。例如,考慮這種情況,即在一個早先流水線階段中的一個跟隨指令(n+1)需要來自一個后面階段指令n的結(jié)果。解決上述問題的一個簡單方法是通過一個或多個時鐘周期延遲在指令解碼階段中的操作數(shù)計算。然而這種延遲的一個結(jié)果是,在處理器上一給定指令的執(zhí)行時間部分地通過流水線內(nèi)圍繞它的指令而被確定。這使得用于處理器的代碼優(yōu)化變得復雜,因為對于程序員來說經(jīng)常難于定點代碼內(nèi)的聯(lián)鎖情況。
在處理器中可以使用“記分板”來實現(xiàn)聯(lián)鎖,在該方法中,把一個位附加到每個處理器寄存器以便作為該寄存器內(nèi)容的一個標志;特別是,是否(i)寄存器的內(nèi)容已經(jīng)被更新和因此準備使用,或者(ii)該內(nèi)容正在經(jīng)受修改,比如由另外的處理程序被寫。這種記分板在一些體系結(jié)構(gòu)中還用于產(chǎn)生防止指令執(zhí)行的聯(lián)鎖,該指令依賴于來自正在執(zhí)行的記分板的寄存器的內(nèi)容,直到記分板表明寄存器準備好為止。這種類型的方法稱為“硬件”聯(lián)鎖,因為經(jīng)過處理器內(nèi)的硬件,純粹通過記分板的驗證來調(diào)用該聯(lián)鎖。這樣的聯(lián)鎖產(chǎn)生“阻塞”,防止數(shù)據(jù)相關(guān)指令的執(zhí)行(從而阻塞流水線),直到寄存器準備好為止。
可替換的,NOP(空操作操作碼)可以被插入代碼中以便當期望時延遲適當?shù)牧魉€階段。后者的方法稱為“軟件”聯(lián)鎖,具有增加了代碼尺寸的缺點,并且使用需要聯(lián)鎖的指令增加了程序的復雜性。此外,大量使用軟件聯(lián)鎖的設計不易于對它們的代碼結(jié)構(gòu)進行全面的優(yōu)化。轉(zhuǎn)移和跳轉(zhuǎn)指令在處理器設計中另一個重要的考慮是程序轉(zhuǎn)移或“跳轉(zhuǎn)”。所有的處理器都支持某些類型的轉(zhuǎn)移指令。簡單來說,在程序流被中斷或被改變的情況下涉及轉(zhuǎn)移。此外,諸如循環(huán)設置和子程序調(diào)用指令也以相同的方式中斷或改變程序流。術(shù)語“跳轉(zhuǎn)延遲時隙”通常指的是在一個轉(zhuǎn)移或跳轉(zhuǎn)指令被解碼之后在一個流水線內(nèi)的時間段。轉(zhuǎn)移(或裝入)之后的指令被執(zhí)行的同時等待轉(zhuǎn)移/裝入指令的完成。轉(zhuǎn)移可以是有條件的(也就是基于一個或多個參數(shù)的真值或值)或無條件的。它也可以是絕對的(例如,基于一個絕對存儲器地址),或相對的(例如,基于相對的地址并與任何特殊存儲器地址無關(guān))。
在流水線系統(tǒng)上進行轉(zhuǎn)移具有一種非常有意義的作用。當一個轉(zhuǎn)移指令被插入并通過處理器的指令解碼階段被解碼時(表示處理器必須開始執(zhí)行一個不同的地址),在指令序列中的下一個指令字已經(jīng)被提取和插入流水線中。解決該問題的一個方案是清除提取的指令字并暫?;蜃枞硗獾奶崛〔僮髦钡睫D(zhuǎn)移指令被執(zhí)行完畢。然而,該方法需要在幾個指令周期中轉(zhuǎn)移指令的執(zhí)行結(jié)果,通常指令周期的數(shù)目等于在處理器設計中使用的流水線的深度。這個結(jié)果對于處理器的速度和效率是不利的,因為在這一期間處理器不能實施其它的運算。
可替換的,可以使用一種延遲的轉(zhuǎn)移方法。在該方法中,當一個轉(zhuǎn)移指令到達解碼階段時流水線不被清除,而在轉(zhuǎn)移被執(zhí)行之前通常執(zhí)行存在于流水線先前階段中的后面的指令。因此,在該轉(zhuǎn)移指令被解碼的同時由指令周期數(shù)被延遲的出現(xiàn)的轉(zhuǎn)移需要執(zhí)行所有流水線中隨后的指令。與上述的多周期轉(zhuǎn)移相比,這種方法增加了流水線的效率,但也增加了基本代碼的復雜性(程序員易于理解)。
基于上述內(nèi)容,在一個流水線和聯(lián)鎖的RISC處理器內(nèi)對于寄存器編碼需要一種改進的方法。這樣一種改進的方法可以使程序員/設計者在處理器內(nèi)的編碼寄存器中增加靈活性,而且克服與裝入/存儲體系結(jié)構(gòu)相關(guān)的一些缺點(例如,需要使用一個立即寄存器來存儲立即值),從而優(yōu)化指令集和處理器性能。而且,一個程序員可以在任何處理器的指令字的源字段中推斷使用的短立即數(shù)據(jù)(保持在指令字中)或長立即數(shù)據(jù)(在一個后面的指令字中)。
理想情況下,該改進的方法還兼容其它的處理器設計考慮方法,其中尤其包括聯(lián)鎖和轉(zhuǎn)移控制機制。此外,在一個具體應用的方式中,能夠容易地綜合處理這種改進的流水線處理器設計,并且使用這些可獲得的綜合工具,對于設計者和程序員來說是實際有效的。
發(fā)明概述本發(fā)明通過提供一種用于在流水線處理器體系結(jié)構(gòu)內(nèi)編碼寄存器和執(zhí)行指令的改進的方法和裝置來滿足上述的需要。
在本發(fā)明的的一個方面中,公開了表示寄存器立即操作數(shù)使用情況的“松散”編碼寄存器數(shù)的一種方法。在一個實施例中,在處理器的長指令字內(nèi)使用多個擴展的(例如六位)寄存器字域,從而在可使用的指令和操作數(shù)格式中提供增強的靈活性。此外,該方法有能力把立即值直接存儲到存儲器中而不使用一個中間存儲器。還可以推斷在任何處理器指令的源字段中使用的短立即數(shù)據(jù)(保持在指令字中)或長立即數(shù)據(jù)(在一個后面的指令字中)。此外,利用該方法可以更有效地處理不可交換的運算。
在本發(fā)明的第二個方面中,公開了一種結(jié)合上述跳轉(zhuǎn)延遲時隙方法的綜合集成電路設計的改進方法。在一個示范性實施例中,該方法包括獲得用戶輸入的有關(guān)設計的配置;基于用戶的輸入和現(xiàn)存的功能庫生成用戶化的HDL功能塊;基于用戶的輸入和程序庫確定設計層次并產(chǎn)生一個層次文件,新的庫文件,和程序描述文件;運行程序描述文件生成結(jié)構(gòu)的HDL和稿本;運行生成的稿本生成一個用于模擬程序的程序描述文件和一個綜合稿本;以及基于產(chǎn)生的設計和綜合稿本對設計進行綜合。
在本發(fā)明的第三個方面中,公開了用于綜合處理器設計的一種改進的計算機程序和具體實現(xiàn)上述內(nèi)容的方法。在一個實施例中,計算機程序包括存儲在一個微型計算機的磁存儲設備上的一個目標代碼表達式,并適于在其中的中央處理器上運行。計算機程序進一步包括一個交互式的,菜單控制的圖形用戶界面(GUI),因而便于使用。
在本發(fā)明的第四個方面,公開了實現(xiàn)上述“松散”寄存器編碼和功能性的門邏輯,以及利用上述綜合處理器設計的方法的綜合處理的門邏輯。在一個實施例中,用于在寄存器內(nèi)選擇第一源字段的門邏輯包括一串八個4位多路復用器。
在本發(fā)明的第五個方面,公開了一種利用了上述“松散”寄存器編碼方法的改進的處理器結(jié)構(gòu)。在一個實施例中,處理器包括具有一個多階段流水線的精簡指令集計算機(RISC),該多階段流水線利用“松散”寄存器體系結(jié)構(gòu),其中有效的把立即值立即存儲到存儲器而不使用中間寄存器。在另一個實施例中,處理器包括一個處理器芯片,DSP芯片,帶有多個存儲體的一個存儲器,和用于使存儲器內(nèi)的存儲體并行對接DSP功能的一個存儲器接口。
在本發(fā)明的第六個方面中,公開了用于運行上述計算機程序的一種改進的裝置,該計算機程序用于綜合與流水線處理器相關(guān)的邏輯。在一個示范性實施例中,系統(tǒng)包括一個獨立的微型計算機系統(tǒng),該微型計算機系統(tǒng)具有一個顯示器,中央處理器,數(shù)據(jù)存儲設備,和輸入設備。
附圖簡述圖1a-1c示例了用于RISC處理器的一個典型的原有技術(shù)的寄存器編碼方案。
圖2是一個邏輯流程圖,示例了按照本發(fā)明在一個流水線處理器內(nèi)的“松散”編碼寄存器中定位數(shù)據(jù)的普通方法。
圖3a-3c圖示了本發(fā)明的第一實施例的寄存器編碼結(jié)構(gòu)。
圖4是一個邏輯流程圖,示例了按照本發(fā)明對結(jié)合了“松散”寄存器編碼的處理器邏輯進行綜合的普通方法。
圖5是一個示意圖,示例了為圖3的指令字的第一字段選擇數(shù)據(jù)源使用的綜合邏輯的一個實施例。
圖6是一個示意圖,示例了用于實現(xiàn)圖5的數(shù)據(jù)源選擇邏輯的4位多路復用器的綜合邏輯(無約束的)的第一實施例。
圖7是一個示意圖,示例了用于實現(xiàn)圖5的數(shù)據(jù)源選擇邏輯的4位多路復用器的綜合邏輯(有約束的)的第二實施例。
圖8是一個示意圖,示例了用于實現(xiàn)本發(fā)明的標志設置功能性的綜合邏輯(無約束的)的第一實施例。
圖9是一個示意圖,示例了用于實現(xiàn)本發(fā)明的標志設置功能性的綜合邏輯(有約束的)的第二實施例。
圖10是按照本發(fā)明的結(jié)合“松散”寄存器編碼的一個處理器設計的方框圖。
圖11是結(jié)合本發(fā)明的硬件描述語言的一個計算設備的功能方框圖,用于綜合圖5-9的邏輯裝置。
發(fā)明詳述現(xiàn)在參考給出的附圖,其中相同的數(shù)字涉及整體相同的部分。
在此所使用的,術(shù)語“處理器”意味著包括任何集成電路或其它的能夠在至少一個指令字上執(zhí)行一個操作的其他的設備,包括,但不限于,精簡指令集芯片(RISC)處理器,比如由本專利受讓人制造的ARC用戶結(jié)構(gòu)的芯片,中央處理器(CPU),以及數(shù)字信號處理器(DSP)。
此外,作為本領域普通技術(shù)人員來說,應理解在此使用的術(shù)語“階段”涉及一個流水線處理器內(nèi)的各種連續(xù)階段;即階段1相當于第一流水線階段,階段2相當于第二流水線階段,依此類推。盡管下面的討論重點針對一個三階段流水線(即取指令、解碼和執(zhí)行階段),但應該清楚在此公開的方法和裝置可廣泛地應用于帶有一個或多個流水線的處理器結(jié)構(gòu),流水線具有多于或少于三階段。
此外應注意的是,盡管下面的描述僅與VHSIC硬件描述語言(VHDL)有關(guān),然而諸如Verilog的其它硬件描述語言也可以用于描述具有相同作用的本發(fā)明的各種實施例。而且,雖然示例了一個Synopsys綜合引擎,比如Design Compiler 1999.05(DC99)來用于綜合處理在此所述的各種實施例,但也可以使用其它的綜合引擎,比如從Cadence Design Systems,Inc.以及其他地方可獲得的Buildgates。IEEE std.1076.3-1997,IEEE Standard VHDL Synthesis Packages描述了一種用于規(guī)定一種基于硬件描述語言的設計的一種工業(yè)接受的語言以及綜合處理能力,這對于本領域普通技術(shù)人員來說,是可以得到的。
最后,應該清楚盡管下面描述了本申請受讓人利用上述的綜合處理引擎和VHSIC硬件描述語言來綜合處理邏輯的具體實施例,該具體實施例以不同方式受到約束,但這些實施例僅僅作為本發(fā)明的設計示例。
現(xiàn)在描述按照本發(fā)明的用于松散寄存器編碼的方法和裝置。通常,本發(fā)明利用一種擴展的多位寄存器字域來表示寄存器立即操作數(shù)的使用情況。簡而言之,本發(fā)明包括使用處理器內(nèi)的寄存器數(shù)來表示短立即(“shimm”)和長立即(“l(fā)imm”)操作數(shù)。該方法中稱作的“松散”是因為它有效地擴展或拆開表示信息通常所需的位數(shù)。例如,本發(fā)明的CPU芯片的指令字的實施例使用6位寄存器字域來表示寄存器AND立即操作數(shù)使用情況(例如,shimm/limm)。相反,典型的原有技術(shù)的指令字僅利用1或2位來表示這種信息,或者利用指令的操作碼隱含存在的立即數(shù)據(jù)。因此,該方法是稍微有點違反直覺的,因為它使用了多于最少所需的位容量來表示信息。
然而,本發(fā)明的“松散”寄存器編碼體系結(jié)構(gòu)對基于RISC的處理器(比如先前所述應用的ARC芯片)有許多好處,包括(i)整體增強編程靈活性;(ii)能夠把立即值直接存儲到存儲器而不用一個中間寄存器;(iii)能夠在第一源寄存器字段(“源1”)或第二源寄存器字段(“源2”)中使用短或長立即數(shù)據(jù),這對于帶有不可交換特性的指令是有益的;(iv)通過使用在一個指令的目的地址字段中的一個‘立即數(shù)據(jù)’寄存器,能夠指示應該丟棄一個指令的結(jié)果。這能夠使程序員在兩個值之間作出比較并設置作為結(jié)果的標志,而不引起處理器中任何一般目的的寄存器發(fā)生改變;和(v)能夠使用短和長立即數(shù)據(jù)作為一個指令中的源數(shù)據(jù)。在擴展指令可以被加到一個處理器的情況下,后者的能力證明在設計和專用指令的操作中是有用的。由于多數(shù)RISC處理器依靠一種裝入—存儲機制來存取和修改存儲器值(也就是,只有裝入和存儲操作可以存取存儲器空間),當期望簡單的存儲器存器時指令的效率受損。通過使用本發(fā)明的松散編碼方案,程序存儲器可以被優(yōu)化,同時在RISC結(jié)構(gòu)體系中實現(xiàn)固有的簡單性。
現(xiàn)在參考圖2,描述按照本發(fā)明在“松散”編碼的寄存器內(nèi)定位數(shù)據(jù)的普通方法的一個實施例。方法200的第一步驟202包括確定是否當前指令內(nèi)所關(guān)心的寄存器號指定了一個通用寄存器(例如,以下表1的實施例中的r0-r31)。如果寄存器號確實指定了一個通用寄存器,則經(jīng)步驟204從指定的芯片中選擇數(shù)據(jù),并完成用于那個寄存器號的處理過程200。如果未指定一個通用寄存器,寄存器號接著經(jīng)步驟206被驗證以便確定是否它指定了一個立即數(shù)據(jù)值。如果指定了一個立即數(shù)據(jù)值,則立即數(shù)據(jù)值的類型,即短立即(shimm)或長立即(limm)在步驟208中被確定。如果在步驟206中不指定一個立即數(shù)據(jù)值,在步驟210從引證的源中獲得適當?shù)闹付ǖ臄?shù)據(jù)值。
如果在步驟208中指定了短立即數(shù)據(jù),從當前指令字的相關(guān)部分提取數(shù)據(jù)。如果在步驟208中指定了長立即數(shù)據(jù),則從后面的指令字中提取適當?shù)臄?shù)據(jù)。
在如下表1中,描述了使用上述的方法的本發(fā)明的寄存器和指令體系結(jié)構(gòu)的第一實施例表1
如表1所示,指定了全部64個寄存器(即r0-r63)。第一組32個寄存器(r0-r31)是用于反映寄存器值的通用寄存器。接著的28個寄存器(r32-r59)是指定特殊應用的擴展寄存器。接著的寄存器(r60)是循環(huán)計數(shù)寄存器,在ARC處理器中它部分地用作零開銷循環(huán)機構(gòu),以便維護保留在一個循環(huán)結(jié)構(gòu)中重復號的計數(shù)。利用最后的三個寄存器(r61-r64)來表示一個立即操作數(shù)據(jù)(分別為shimmf,limm或shimm)。由于需要用于設置標志的指令字中的位來編碼短立即數(shù)據(jù),因此有兩個shimm的版本;一個帶有符號設置(即shimmf)而另一個沒有符號設置(即shimm)。圖3a-3c圖示了按照本發(fā)明寄存器編碼結(jié)構(gòu)的上述實施例。
上述的方法使程序員/設計者完全靈活的指定各種不同的指令格式,包括下列八種示例的指令格式表2
其中op=指令操作<cc> =用于執(zhí)行的任選條件代碼<f> =任選的設置狀態(tài)標志a =目的地寄存器b =源1寄存器c =源2寄存器s =shimm(9位帶符號的短立即)l =limm(32位長立即)應該清楚,上述規(guī)定的表2的八個指令格式在此僅僅是為了示例,依賴于特殊的應用可以使用其他的格式。例如,可以使用具有少于或多于上述示例的64個寄存器的寄存器數(shù)的一種指令格式。而且,本發(fā)明可以被具體到僅具有兩個源操作數(shù)的一種指令格式,或者一個源和一個目的操作數(shù)。此外,還應該清楚的是,可將本發(fā)明的指令格式實施得令字的語法不同于上述的圖示;例如,源和目的字段的順序可以被改變或序列改變。
表3提供了按照本發(fā)明的指令格式的第二實施例,結(jié)合使用應用的“ARC”RISC芯片表3
應注意,在表3的第二實施例中,僅僅指定了兩個字段(而不是指令操作“op”)。而且既沒有指定有條件字段也沒有指定標志設置字段,但顯而易見的是這樣的條件的和/或標志設置字段可以被用于這些格式。
應特別注意表2的下列兩個格式4.op.<cc>.<f> a,l,l8.op.<cc>.<f> a,s,s
通過使用AND運算,這兩個格式被特別用于提供一種MOV(數(shù)據(jù)傳送指令)立即指令。在ARC處理器中,使用短立即寄存器編碼從指令字中提取短立即值。如果在兩個源字段中使用短立即寄存器編碼,兩個源字段將取短立即字段的值,但兩個不同的短立即值不能被編碼。通過使用長立即寄存器編碼,隨后的指令字中的數(shù)據(jù)可以被用于一個或兩個源字段,但不能使用兩個不同的長立即值。然而在本發(fā)明中,能夠具有一短一長兩個立即值,這種優(yōu)點可以使一個立即值存儲到存儲器中一個立即位置。
因此,指令AND.a,l,l把隨后的長立即指令字的內(nèi)容傳送到目的寄存器“a”。運算執(zhí)行邏輯與帶有它本身的相同的值,結(jié)果形成原始值。
此外,通過移位指令也可以使用上述的兩種格式(4.和8.),以便使用一個單一的字指令產(chǎn)生多個長立即常數(shù),如下例所示ASL.a,s,s;a=s<<(s&31)(移位指令僅使用一個立即值的底部5位)(短立即數(shù)據(jù)是9位的長度)在上述的例子中,源短立即值的底部5位被用于移位全部的9位短立即值以便使用一個單一的指令字而不是通過使用剛才上述的具有非移位的9位短立即數(shù)據(jù)的MOV(AND)來使較寬范圍的立即值被放入一個寄存器中。
如先前所述,本發(fā)明的“松散”體系結(jié)構(gòu)還可以用于把立即值立即存儲到存儲器中而不使用原有技術(shù)的RISC設備中的一個中間寄存器,如下例所示ST s,[b,s];[b+s]=s(shimms必須匹配)ST l,[b,s];[b+s]=l(其中"l"指定長立即數(shù)據(jù))ST s,[s,s];[s+sl=s(shimms必須匹配)此外,通過使用寄存器r63(表1)作為一個目的地,結(jié)果的寄存器寫回導致被丟棄,這對于僅需要這些狀態(tài)標志的結(jié)果的情況是有用的(比如用于測試/比較),而不考慮任何MOV指令。用于這種功能的匯編語法使用一個立即值“0”作為指令的目的地,如下所示op.<cc>.<f>0,b,cop.<cc>.<f>0,b,lop.<cc>.<f>0,l,cop.<cc>.<f>0,l,lop.<cc>.<f>0,b,cop.<cc>.<f>0,b,sop.<cc>.<f>0,s,cop.<cc>.<f>0,s,s在該實施例中,用一個文件來包含多路復用器,這些多路復用器在源1和源2總線上選擇如何得到選擇的數(shù)據(jù)。這些總線尤其在流水線的階段3上被用作到算術(shù)邏輯單元(ALU)的輸入,如下例所示階段2結(jié)果多路復用器源1字段;用s1a選擇s1_direct<=qd_a whenr0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|r16|r17|r18|r19|r20|r21|r22|r23|r24|r25|r26|r27|r28|r29|r30|r31|loopcntwhen rlcnt,shimmexwhen rfshimm|rnshimm,pliw when rlimm,xldata when others;在示例中應注意的是,使用“s1a”字段初始選擇階段2的結(jié)果,隨后添加簡化操作。
源2字段;用s2a選擇;s2_direct<=qd_b when
r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|r16|r17|r18|r19|r20|r21|r22|r23|r24|r25|r26|r27|r28|r29|r30|r31|loopcntwhen rlcnt,shimmexwhen rfshimm|rnshimm,pliw when rlimm,xldata when others;由于在有條件指令格式中短立即(shimm)字段重疊標志設置位,附加的邏輯被用于控制標志設置。在這種邏輯的一個實施例中,或使用指令的“.f”位或或使用由短立即數(shù)據(jù)寄存器號所隱含的值,或者被設置到“假”,如果指令不能設置標志(例如,裝入/存儲,轉(zhuǎn)移/跳轉(zhuǎn))。在單獨的文件中獨立處理特殊情況的標志設置器(Jcc.F和FLAG)。如果一個3操作數(shù)擴展指令被使用的話,這是為了一個目的使用了短立即指令的區(qū)域,而不是為了由xshimm信號所表示的編碼短立即數(shù)據(jù),該標志不被設置。通過下例的標志設置計算進一步示例了本發(fā)明的這種特性階段3標志設置計算ip3setflags<=‘0’WHEN f_no_fset(ip3i)=‘1’or(xshimmAND x_idecode3 ANDxt_aluop)=‘1’ELSEip3shimmf WHEN ip3shimm=‘1’ELSEip3_fbit;應注意的是,可以使用各種不同的上述多路復用器的實施例來構(gòu)成本發(fā)明,這取決于編碼VHDL的具體方法。基于上述的功能性,這些不同的多路復用器的實施例的編碼對于編程領域的普通技術(shù)人員來說是已知的,因此在這里不將作進一步的描述。
此外,可以連同(單獨地或共同的)在一個流水線處理器內(nèi)使用的流水線控制和聯(lián)鎖的方法一起來有益地使用本發(fā)明的方法和裝置,其中尤其包括那些在申請的共同待審的美國專利申請標題為“MethodAnd Apparatus For Jump Control In A Pipelined Processor,”,“Method And Apparatus For Jump Jump Delay Slot Control In APipelined Processor,”,和“Method And Apparatus For ProcessorPipeline Segmentation And Re-assembly,”,它們與此同時申報,在此結(jié)合參考它們的全部內(nèi)容。綜合處理的方法參考圖4,描述了先前討論的結(jié)合跳轉(zhuǎn)延遲時隙模式綜合處理邏輯的方法400。在申請的共同待審的美國專利申請序列號09/418,663標題為“Method And Apparatus For Managing The Configuration AndFunctionality Of A Semiconductor Design”中公開了綜合處理具有一個用戶化(即“軟件”)指令的集成電路邏輯的普通方法,它于1999年10月14日申報,在此結(jié)合參考它的全部內(nèi)容。
雖然下面的描述是有關(guān)于在一個微型計算機或其他類似處理設備上的一個算法或計算機程序,但應該清楚可以使用其它的硬件環(huán)境(包括小型計算機,工作站,網(wǎng)絡計算機,“超級計算機”和大型計算機)來實踐本方法。此外,如果需要的話,相對于軟件可以把計算機程序的一個或多個部分具體表現(xiàn)于硬件或固件中,這種替換的實施例在計算機技術(shù)領域是熟知的。
最初,在步驟402中獲得有關(guān)設計配置的用戶輸入。特別是,由用戶選擇用于設計的期望的模塊或功能,并添加,減去與設計有關(guān)的指令,或產(chǎn)生需要的指令。例如,在信號處理應用程序中,通常最好讓CPU包括單一的“乘法和累積”(MAC)指令。在本發(fā)明中,修改綜合設計的指令集以便結(jié)合其中的上述跳轉(zhuǎn)延遲時隙模式(或其他等同的跳轉(zhuǎn)延遲時隙控制體系結(jié)構(gòu))。尤其是,在本發(fā)明的實施例中,表示指定跳轉(zhuǎn)延遲時隙模式的多個預定值之一通過參考圖1的上述跳轉(zhuǎn)指令字的兩個數(shù)據(jù)位進行表示。此外,在步驟402中由用戶定義用于每個VHDL文件的技術(shù)庫位置。本發(fā)明中的技術(shù)庫文件存儲了所有與用于綜合處理所需單元相關(guān)的信息,例如包括邏輯功能,輸入/輸出定時,和任意相關(guān)的技術(shù)。在本發(fā)明中,每個用戶可以定義他的/她的自已的庫名和位置,從而進一步增加了靈活性。
下一步,在步驟403,生成在步驟402中規(guī)定的基于用戶輸入和現(xiàn)存功能庫的用戶化的HDL功能塊。
在步驟404中,基于用戶的輸入和上述的庫文件確定設計層次。基于設計層次順序地產(chǎn)生一個層次分階段文件,新的庫文件,和程序描述文件。在此使用的術(shù)語“程序描述文件”相當于通用的UNIX程序描述文件功能或者相當于計算機領域普通技術(shù)人員熟知的一個計算機系統(tǒng)的類似的功能。程序描述文件功能導致其他的程序或計算機系統(tǒng)中的算法常駐程序以規(guī)定的次序被執(zhí)行。此外,它進一步規(guī)定數(shù)據(jù)文件的名稱和位置和其他需要的信息以便有效地操作指定的程序。但應該注意的是,在此公開的發(fā)明可以利用文件結(jié)構(gòu)而不是“程序描述文件”來產(chǎn)生期望的功能性。
在本發(fā)明的程序描述文件產(chǎn)生處理過程的一個實施例中,是經(jīng)過顯示提示交互地詢問用戶來輸入與期望的設計有關(guān)的信息,比如“構(gòu)件”的類型(例如,整體設備或系統(tǒng)配置),外部存儲器系統(tǒng)數(shù)據(jù)總線的寬度,擴展時隙的不同類型,高速緩沖存儲器的類型/大小等等。但只要符合本發(fā)明,也可以使用許多其他的輸入信息的配置和資源。
在步驟406,運行在步驟404中產(chǎn)生的程序描述文件以便生成結(jié)構(gòu)的HDL。該結(jié)構(gòu)的HDL與離散的功能塊相配合以便完成一個設計。
接著,在步驟408,運行在步驟406中產(chǎn)生的稿本以生成用于模擬程序的一個程序描述文件。此外,在步驟408中還運行產(chǎn)生一個綜合稿本的稿本。
在程序的這一點上,做出一個是否綜合或模擬設計的決定(步驟410)。如果選擇模擬,用戶利用在步驟412產(chǎn)生的設計和模擬程序描述文件(和用戶程序)運行模擬程序??商鎿Q的,如果選擇綜合處理,用戶利用在步驟414中的綜合稿本和產(chǎn)生的設計運行綜合處理。在完成綜合/模擬稿本之后,在步驟416評估適當?shù)脑O計程序。例如,一個綜合處理引擎可以生成一個具體的設計的物理布局,它符合整體設計處理程序的性能標準,但不符合所要求的小片尺寸。在此情況下,設計者將對控制文件,數(shù)據(jù)庫,或其它元件進行改變,它們可以影響小片尺寸。隨后設計信息的結(jié)果集合被用于重新運行綜合處理稿本。
如果產(chǎn)生的設計是可接受的,則完成設計處理程序。如果設計是不可接受的,重新執(zhí)行從步驟402開始的處理步驟直到獲得一個可接受的設計。在此方式中,循環(huán)方法400。綜合的邏輯現(xiàn)在參考圖5-9,示例了用于實現(xiàn)在此先前所述的“松散”寄存器編碼功能性的邏輯,以及描述了使用圖4的綜合方法。
圖5示例了用于松散寄存器編碼源1選擇的頂端層次階段邏輯的一個實施例。在圖5的實施例中,頂階段邏輯例示了八個等同的4位多路復用器組成了全部32位。[注意,為清楚表示,圖5中的邏輯圖示被分成兩個層階段]。該邏輯也同樣可以用于源2的選擇。
圖6示例了用于源1的松散寄存器編碼的上述4位多路復用器的第一實施例。在圖6的多路復用器中,在綜合處理上沒有放置操作的或設計約束。
圖7示例了用于源1的松散寄存器編碼的上述4位多路復用器的第一實施例,除了邏輯已經(jīng)被約束以外,以便對從長立即數(shù)據(jù)輸入總線(‘pliw’)到輸出總線(‘sl_direct’)提供最短的路徑。
圖8示例了按照本發(fā)明的標志設置邏輯的第一實施例(無約束的)。
圖9示例了按照本發(fā)明的標志設置邏輯的第二實施例,只是為了最小化區(qū)域進行了約束。
現(xiàn)在參考圖10,示例了制造好的流水線處理器的一個例子,使用一個1.0um處理程序和結(jié)合圖5-9的邏輯。如圖10所示,處理器1000是一個像微處理器CPU設備的ARC,其中尤其具有一個處理器芯片1002,芯片存儲器1004,和一個外部接口1006。利用用戶化VHDL設計制造該設備,使用本發(fā)明的方法400獲得用戶化的VHDL設計,該設備隨后被綜合處理成一個邏輯電平表示,并接著利用半導體領域已知的編譯,布局和制造技術(shù)把它精簡成一個物理設備。
本領域一個普通技術(shù)人員應該清楚的是,圖10的處理器可以包括任何通用的可獲得的周邊設備,比如串行通信設備,并行口,定時器,計數(shù)器,高電流驅(qū)動器,模擬到數(shù)字(A/D)轉(zhuǎn)換器,數(shù)字到模擬(D/A)轉(zhuǎn)換器,中斷處理器,LCD驅(qū)動器,存儲器和其他類似的設備。另外,處理器還可以包括自定義或應用的具體電路系統(tǒng)。本發(fā)明不局限于周邊設備的類型,數(shù)量或復雜程度,以及其他的可以使用本發(fā)明方法和裝置相組合的電路系統(tǒng)。準確地說,通過能改進超時的現(xiàn)存的半導體處理程序的物理能力可以強行使用任何的限制。因此,能夠使用本發(fā)明預見集成的復雜性和困難程度,這將進一步提高改進半導體的處理程序。
還應該注意的是,當前的許多IC設計使用一個微處理器芯片和一個DSP芯片。然而DSP僅可以用于所需的有限數(shù)量的DSP功能,或者用于IC的快速DMA結(jié)構(gòu)體系。在此公開的本發(fā)明可以支持許多DSP指令功能,并且它的快速局部RAM系統(tǒng)可以立即存取數(shù)據(jù)。通過使用在此公開的用于IC的CPU&DSP功能的方法可以明顯地實現(xiàn)節(jié)省費用。
可替換的,圖10的處理器1000可以被綜合處理以便結(jié)合一個存儲器接口,該存儲器接口用于對在一個或多個IC(例如DSP)功能和處理器1000的存儲器陣列之間進行對接,如在與本申請共同待審的、申報于2000年3月10日、標題為“Memory interface and Method ofInterfacing Between Integrated Circuita”美國專利申請中所描述的,在此結(jié)合參考它的全部內(nèi)容。
另外,請注意這里如前所述的方法(及相應的計算機程序)可容易地以相對簡單的再綜合適應于更新的生產(chǎn)技術(shù),例如0.18或0.1微米工藝——而非使用“硬的”原有微技術(shù)系統(tǒng)時,為了適應這類技術(shù)通常要采用冗長昂貴的處理。
現(xiàn)在參考圖11,尤其描述了能夠綜合處理器其中圖5-9的邏輯結(jié)構(gòu)的一個計算設備的實施例。計算設備1100包括具有一個中央處理器(CPU)1102的一個母板1101,隨機存取存儲器(RAM)1104,和存儲器控制器1105。此外還提供一個存儲設備1106(比如一個硬盤驅(qū)動器或CD-ROM),輸入設備1107(比如一個鍵盤或鼠標),和顯示設備1108(比如一個CRT,等離子體,或TFT顯示器),以及支持主機和周邊器件工作所需的總線。在整個設計綜合處理過程中,上述的VHDL描述和綜合引擎以一個計算機程序的一個目標代碼表示被存儲在RAM 1104和/或存儲設備1106中來由CPU1102進行使用,在計算機領域中后者是大家熟知的。在整個系統(tǒng)操作過程中,用戶(未示)通過把設計的配置規(guī)范經(jīng)程序顯示和輸入設備1107輸入到綜合處理程序中來綜合處理邏輯設計。被存儲在存儲設備1106中的用于以后調(diào)用的由程序產(chǎn)生的綜合設計被顯示在圖形顯示設備1108上,或者如果需要的話,可以經(jīng)一個串或并口1112輸出到一個外部設備,比如一個打印機,數(shù)據(jù)存儲單元,其他的周邊器件。
盡管上面已經(jīng)進行了詳細描述,并應用各種實施例指出了本發(fā)明的新穎性,但應明白在不脫離本發(fā)明的范疇下,本領域技術(shù)人員可以對本發(fā)明的設備的細節(jié)或處理過程以省略,替代,或改變的各種形式作出變化。上述的內(nèi)容僅僅是可以實現(xiàn)本發(fā)明的最佳方式。所描述的內(nèi)容并不意味著會受到限制,而僅作為本發(fā)明通用原理的示例。本發(fā)明的范圍應該根據(jù)權(quán)利要求的內(nèi)容來確定。
權(quán)利要求
1.一種在指令字內(nèi)編碼數(shù)據(jù)的方法,包括提供具有一個操作碼和多個字段的第一指令字,每個所述字段包括多個位;用第一數(shù)據(jù)源關(guān)聯(lián)第一所述字段;用第二數(shù)據(jù)源關(guān)聯(lián)第二所述字段;使用作為操作數(shù)的所述第一和第二數(shù)據(jù)源執(zhí)行一個邏輯運算,由所述操作碼規(guī)定所述邏輯運算。
2.權(quán)利要求1的方法,其中所述第一和第二字段各自包括6位。
3.權(quán)利要求1的方法,其中與第一數(shù)據(jù)源關(guān)聯(lián)的動作包括用一個立即操作數(shù)關(guān)聯(lián)所述第一字段。
4.權(quán)利要求3的方法,其中用第二數(shù)據(jù)源關(guān)聯(lián)的動作包括用一個立即操作數(shù)關(guān)聯(lián)所述第二字段。
5.權(quán)利要求4的方法,其中所述第一數(shù)據(jù)源是一個短立即操作數(shù),并且所述第二數(shù)據(jù)源是位于第二指令字內(nèi)的一個長立即操作數(shù)。
6.在一個指令字內(nèi)編碼數(shù)據(jù)的方法,包括提供具有一個操作碼和多個字段的第一指令字,每個所述字段包括多個位;用第一目的寄存器關(guān)聯(lián)第一所述字段;用第一數(shù)據(jù)源關(guān)聯(lián)第二所述字段;用第二數(shù)據(jù)源關(guān)聯(lián)第三所述字段;使用作為操作數(shù)的所述第一和第二數(shù)據(jù)源執(zhí)行一個邏輯運算,由所述操作碼規(guī)定所述邏輯運算;在所述目的寄存器中存儲所述邏輯運算的結(jié)果。
7.權(quán)利要求6的方法,其中用第一數(shù)據(jù)源關(guān)聯(lián)的動作包括用一個立即操作數(shù)關(guān)聯(lián)所述第二字段,而且用第二數(shù)據(jù)源關(guān)聯(lián)的動作包括用一個立即操作數(shù)關(guān)聯(lián)所述第三字段。
8.權(quán)利要求7的方法,其中至少一個所述立即操作數(shù)包括在第二指令字內(nèi)布置的一個長立即操作數(shù)。
9.使用一個單一字指令產(chǎn)生一個長立即常數(shù)的一種方法,包括提供具有一個操作碼和與此相關(guān)的至少一個短立即值的一個指令字,所述至少一個短立即值包括多個位;選擇所述至少一個短立即值的所述多個位的一部分;使用所述操作碼和僅僅所述部分的位而移位所述至少一個短立即值的所有所述位以產(chǎn)生一個移位的立即值;在一個寄存器中存儲所述移位的立即值。
10.權(quán)利要求9的方法,其中所述操作碼包括一個移位操作,并且所述部分包括5位的所述短立即字。
11.一種提供與一個指令字內(nèi)、以至少一個寄存器號編碼的一個字段相關(guān)的源數(shù)據(jù)的方法,包括確定何時所述至少一個寄存器號識別第一類型的寄存器;確定何時所述寄存器號識別一個立即數(shù)據(jù)值;確定由所述至少一個寄存器號識別的立即數(shù)據(jù)值的類型;提取由所述至少一個寄存器號識別類型的立即數(shù)據(jù),所述立即數(shù)據(jù)被提供作為所述源數(shù)據(jù)。
12.權(quán)利要求11的方法,其中識別寄存器第一類型的動作包括識別多個寄存器不同類型的一個類型,其中僅所述寄存器的第一類型被用于識別立即數(shù)據(jù)。
13.權(quán)利要求12的方法,其中所述立即數(shù)據(jù)包括包含在一個單一指令字內(nèi)的短立即數(shù)據(jù)。
14.權(quán)利要求11的方法,其中確定立即數(shù)據(jù)類型的動作包括從短立即數(shù)據(jù)和長立即數(shù)據(jù)所組成的一組中選擇立即數(shù)據(jù)的類型。
15.權(quán)利要求14的方法,其中所述組進一步包括帶有標志設置的短立即數(shù)據(jù)。
16.一種綜合處理器設計的方法包括對特定于該設計的第一文件輸入信息以便包括至少一個指令字,所述至少一個指令字包括至少一個寄存器號,所述至少一個寄存器號與一個短立即或長立即操作數(shù)相關(guān);定義至少一個庫文件的位置;使用所述第一文件,所述庫文件,和用戶輸入信息產(chǎn)生第二文件;運行所述第二文件生成一個結(jié)構(gòu)描述語言模型;基于所述結(jié)構(gòu)描述語言模型綜合所述設計。
17.權(quán)利要求16的方法,其中綜合的動作包括基于所述描述語言模型運行綜合稿本。
18.權(quán)利要求17的方法,進一步包括生成與模擬程序使用的第三文件的動作,并使用所述第三文件模擬所述設計。
19.權(quán)利要求18的方法,進一步包括基于所述模擬而評估設計的可接受性的動作。
20.權(quán)利要求19的方法,進一步包括為產(chǎn)生一個修正的設計而進行修正設計的動作,并重新綜合所述修正的設計。
21.權(quán)利要求16的方法,其中輸入包括所述至少一個指令字的信息的動作包括輸入具有多個寄存器號的一個指令字,只有所述多個寄存器號的一部分表示立即數(shù)據(jù)。
22.權(quán)利要求21的方法,其中輸入的動作進一步包括提供多個與所述設計相關(guān)的輸入?yún)?shù),所述參數(shù)包括(i)一個高速緩存配置;(ii)一個存儲器接口配置。
23.一種機器可讀的數(shù)據(jù)存儲設備包括一個適于存儲多個數(shù)據(jù)位的數(shù)據(jù)存儲媒體;和表現(xiàn)為多個數(shù)據(jù)位并存儲在所述存儲媒體上的一個計算機程序,所述程序適于在一個計算機系統(tǒng)的處理器上運行,并在一個具有一條流水線、而且結(jié)合了具有至少一個指令字的一個指令集的處理器中用于綜合處理集成電路邏輯,所述至少一個指令字包括多個寄存器號,只有所述多個寄存器號的一部分表示立即操作數(shù)數(shù)據(jù)。
24.權(quán)利要求23的存儲設備,其中所述立即操作數(shù)數(shù)據(jù)包括從短立即操作數(shù),長立即操作數(shù),和帶有標志設置的短立即操作數(shù)組成的組中所選擇的立即操作數(shù)。
25.權(quán)利要求23的數(shù)據(jù)存儲設備,其中所述數(shù)據(jù)存儲媒體是一個光盤只讀存儲器(CD-ROM),并且所述多個數(shù)據(jù)位包括一個所述程序的目標表達式。
26.一種數(shù)字處理器包括一個具有多階段指令流水線的處理器芯片,所述芯片適于解碼和執(zhí)行包括多個指令字的一個指令集;一個存儲器;一個指令集,至少一部分被存儲在所述存儲器中,所述指令集包括多個指令字,至少一個所述指令字包括多個數(shù)據(jù)位,至少所述數(shù)據(jù)位的一部分形成至少一個數(shù)據(jù)字段,所述至少一個數(shù)據(jù)字段表示至少一個寄存器號,所述至少一個寄存器號表示立即操作數(shù)數(shù)據(jù)。
27.權(quán)利要求26的處理器,其中所述至少一個數(shù)據(jù)字段包括6位。
28.權(quán)利要求26的處理器,其中所述至少一個指令字包括第一源字段和第二源字段,所述第一和第二源字段中至少一個規(guī)定長立即數(shù)據(jù)。
29.權(quán)利要求26的處理器,進一步包括一個存儲器接口具有分別耦合到各個所述處理器芯片的多個功能的可操作的多個功能口分別耦合到各個所述存儲器內(nèi)多個存儲體的可操作的多個存儲器口;所述存儲器接口通過所述處理器芯片的各個所述功能對存取各個所述存儲體進行裁定。
30.權(quán)利要求29的處理器,所述存儲器接口進一步包括在至少一個所述功能口和所述處理器芯片的各個所述功能之間的一個同步協(xié)議。
31.權(quán)利要求26的處理器,所述指令集進一步包括具有多個數(shù)據(jù)位的至少一個跳轉(zhuǎn)指令字,所述至少一個跳轉(zhuǎn)指令字的所述多個數(shù)據(jù)位的至少一部分包括多個跳轉(zhuǎn)延遲槽模式。
32.一種精簡指令集處理器具有(i)多個寄存器;(ii)一個指令集,所述指令集內(nèi)的至少一個指令字包括第一數(shù)據(jù)源字段和第二源字段,所述第一和第二源字段中至少一個與所述處理器內(nèi)的第一寄存器相關(guān);和(iii)至少一個算術(shù)邏輯單元,其中所述至少一個指令字以包括如下的方法加以執(zhí)行確定何時所述第一寄存器包括第一類型的寄存器;確定何時所述第一寄存器號識別一個立即數(shù)據(jù)值;確定由所述第一寄存器號識別的立即數(shù)據(jù)值的類型;和提取由所述第一寄存器號識別類型的立即數(shù)據(jù),所述立即數(shù)據(jù)被提供作為所述至少一個指令字的一個操作數(shù)。
33.一種在數(shù)字處理器內(nèi)使用的用于綜合邏輯設計的裝置,包括一個中央處理器;一個數(shù)據(jù)存儲設備,可操作的連接到所述中央處理器,所述數(shù)據(jù)存儲設備適于存儲和檢索一個計算機程序;一個輸入設備,適于響應來自所述系統(tǒng)的一個用戶輸入而產(chǎn)生信號;一個計算機程序,存儲在所述數(shù)據(jù)存儲設備上,所述程序適于檢索所述信號和允許所述用戶對具體設計的第一文件輸入信息以便包括所述指令集,該指令集包括多個指令字,所述指令字的至少一個包括多個數(shù)據(jù)位,所述數(shù)據(jù)位的至少一部分形成至少一個數(shù)據(jù)字段,所述至少一個數(shù)據(jù)字段表示至少一個寄存器號,所述至少一個寄存器號表示立即操作數(shù)據(jù);定義至少一個庫文件的位置;使用第一文件,所述庫文件,和用戶輸入信息產(chǎn)生第二文件;運行所述第二文件以便生成一個用戶化的描述語言模型;基于所述描述語言模型來綜合所述設計。
34.一種精簡指令集處理器具有(i)多個寄存器;(ii)一個指令集,所述指令集內(nèi)的至少一個指令字包括第一數(shù)據(jù)源字段和第二源字段,所述第一和第二源字段的至少一個與所述處理器內(nèi)的第一寄存器相關(guān);和(iii)至少一個算術(shù)邏輯單元,進一步包括裝置,用于確定何時所述第一寄存器包括寄存器的第一類型;裝置,用于確定何時所述第一寄存器識別一個立即數(shù)據(jù)值;裝置,用于確定由所述第一寄存器識別的立即數(shù)據(jù)值的類型;裝置,用于提取具有所述第一寄存器所識別類型的立即數(shù)據(jù),所述立即數(shù)據(jù)被提供作為所述至少一個指令字的一個操作數(shù)。
35.一種在具有多個寄存器的一個數(shù)字處理器內(nèi)使用的指令字,包括一個操作代碼(op-code);第一數(shù)據(jù)字段,所述第一數(shù)據(jù)字段包括多個數(shù)據(jù)位;第二數(shù)據(jù)字段,所述第一數(shù)據(jù)字段包括多個數(shù)據(jù)位;其中所述第一和第二數(shù)據(jù)字段定義立即操作數(shù)數(shù)據(jù)。
36.權(quán)利要求35的指令字,進一步包括一個短立即操作數(shù)。
全文摘要
在一個流水線中央處理器(CPU)或用戶化微處理器內(nèi)用于實現(xiàn)指令的一種方法和裝置。在本發(fā)明的第一個方面中,公開了用“松散”編碼寄存器數(shù)來表示寄存器立即數(shù)據(jù)操作數(shù)的使用的一種改進的方法。一個實施例包括具有被定義的多位數(shù)據(jù)字段的指令字,它編碼各種類型的立即操作數(shù)。在執(zhí)行各種操作中這種定義的多-位字段提供給程序員附加的靈活性,包括不可交換的操作。公開了結(jié)合上述的“松散”寄存器編碼方法綜合處理一個處理器設計的方法。利用上述的方法示例了綜合處理的門邏輯,此外還公開了能夠?qū)崿F(xiàn)這些方法的一個計算機程序和系統(tǒng)。
文檔編號G06F9/38GK1384934SQ00808462
公開日2002年12月11日 申請日期2000年5月12日 優(yōu)先權(quán)日1999年5月13日
發(fā)明者P·沃恩斯, C·格林漢姆 申請人:Arc國際美國控股公司