亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用最精簡指令的多重字節(jié)微處理器架構(gòu)的制作方法

文檔序號:6415001閱讀:172來源:國知局
專利名稱:使用最精簡指令的多重字節(jié)微處理器架構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明是一種使用最精簡指令的多重字節(jié)微處理器架構(gòu),并且是一種可以減少指令停留在芯片的面積及耗電量,使架構(gòu)中隨時可以增加許多空間以容納新指令,以適應(yīng)新增的功能及硬件裝置的微處理器架構(gòu)。
背景技術(shù)
習(xí)知的商用計算機(jī)及微處理器都是基于多重緩存器的架構(gòu),在中央處理器(CPU)中必須有多個緩存器。在內(nèi)存或輸入端口中的數(shù)據(jù)必須先讀入緩存器才能用CPU處理。處理的結(jié)果必須由緩存器中寫入內(nèi)存或輸出端口。復(fù)式指令計算機(jī)(Complicated Instruction Set Computers CISC)如Intel的80X86及Motorola的680X0中有大部分的指令都可以由內(nèi)存中讀取數(shù)據(jù)并立即處理并置入緩存器中。在簡化指令計算機(jī)(SimplifiedInstruction Set Computer RISC)如Sun的SPARC,MIPS及IBM的PowerPC中,處理數(shù)據(jù)的指令只使用緩存器而不去讀寫內(nèi)存,內(nèi)存則由一組簡單的讀寫指令來讀或?qū)?。這樣指令的數(shù)目就大幅減少了。雖然少了許多復(fù)雜的指令,RISC一般都有一組龐大的緩存器,在運(yùn)算時指令也必須包括如何設(shè)定由那些緩存器中擷取數(shù)據(jù)及運(yùn)算后數(shù)據(jù)應(yīng)置入那個緩存器。
目前有關(guān)計算機(jī)及微處理器的架構(gòu)最權(quán)威的著作是Hennessy及Patterson所合著的Computer ArchitectureA QuantitativeApproach,(1996).雖然他們強(qiáng)調(diào)RISC架構(gòu)的優(yōu)越性,但到現(xiàn)在市場上還是Intel的CISC機(jī)型占盡優(yōu)勢,不但在PC市場上一枝獨(dú)秀,還有逐漸侵占RISC機(jī)種所占主流的服務(wù)器市場。
同時,RISC機(jī)種也在演化之中,在不斷地加入新功能及特殊線路,它們的架構(gòu)和指令集已與CISC機(jī)種一樣復(fù)雜。唯一RISC特殊的地方是它們都使用32位的字符。每個指令都占一個32位的字符。
不論RISC還是CISC架構(gòu),處理任何指令都必須經(jīng)過下列4步CPU先從內(nèi)存中讀一個指令,在指令中得到數(shù)據(jù)來源的地址,讀入數(shù)據(jù)并將其處理,最后將結(jié)果寫入目標(biāo)地址。計算機(jī)中繼續(xù)不斷地加入新的線路和裝置,例如program and data caches,program execution pipelines,superscalar及parallel processing units,就是為了要加速這些處理的過程。但處理指令的過程還是一樣的。
相對來看,堆棧式計算機(jī)架構(gòu)就避免了處理數(shù)據(jù)來源和目標(biāo)地址的繁重工作。因為數(shù)據(jù)來源永遠(yuǎn)是在堆棧最上的一個或數(shù)個位置,而且產(chǎn)生的結(jié)果也一定是放回堆棧。堆棧計算機(jī)的結(jié)構(gòu)就是十分簡單,而數(shù)據(jù)處理的速度也可以大幅增加,因為堆??梢韵窬彺嫫饕粯臃旁贑PU中。
堆棧式計算機(jī)架構(gòu)的優(yōu)點(diǎn)在Philip J.Koopman′s StackComputers-The New Wave(1989)已有詳細(xì)論述。之后十余年間,已有許多專利在美國被認(rèn)可。有關(guān)堆棧計算機(jī)的專利有四組Koopman的4980821號(1990)及5053952號(1991)是關(guān)于16位及32位微指令堆棧計算機(jī)。Moore的5070451號(1991)及5319757號(1994)是關(guān)于16位水平指令堆棧計算機(jī);劉大力的5404555號(1995)是關(guān)于極長指令堆棧計算機(jī);及Moore的5440749號(1995),5530890(1996),5659703(1997),5784584(1998)及5809336(1998)是利用8位指令的32位計算機(jī)。這些專利都指示出當(dāng)CPU中加入兩個堆棧時,CPU架構(gòu)可以簡化,工作效率可以大幅提升。
以上所述的堆棧計算機(jī)都是針對于Forth計算機(jī)語言的需要而設(shè)計的,因為FORTH語言是一組相當(dāng)大的指令集的組合,所以這些計算機(jī)都盡可能將FORTH的指令融入CPU的指令集。Moore在最新的設(shè)計中(1995~1998)中提到約200個指令,而將這些指令綜合在一組8位的指令集中。這一套指令和CISC及RISC機(jī)型的指令集在數(shù)量上沒有很大的差別。
SPARC的設(shè)計者已經(jīng)注意到堆棧的使用可以簡化在子程序間傳送參數(shù)的復(fù)雜機(jī)構(gòu),因此使用了一套堆棧組的方法。一個堆棧組包括了24個緩存器,8個是Top緩存器,8個Local緩存器及8個Bottom緩存器。在呼叫子程序時,堆棧組就上升16層,主程序的Top緩存器就變成子程序的Bottom緩存器,主程序要交給子程序的參數(shù)就放在這8個緩存器中。在子程序要返回主程序時,它將必須傳回主程序的參數(shù)放在Bottom緩存器中,返回時堆棧組下降16層,這些參數(shù)就在主程序的Top緩存器中。堆棧組利用堆棧的原理,但對緩存器的利用非常浪費(fèi),因為程序中很少用到24個緩存器來傳送參數(shù)。
真正的堆棧計算機(jī)中,堆棧的使用是最有效的,因為一個程序只從堆棧上擷取它須要的參數(shù),也只將它產(chǎn)生的結(jié)果放回堆棧。堆棧的利用是十分經(jīng)濟(jì)的,但它也要求程序員對堆棧的使用要非常小心,避免將不必要的數(shù)據(jù)留在堆棧上。
RISC計算機(jī)最大的問題是在每一個指令都占一個32位的字符,它的指令密度比CISC計算機(jī)要差很多。因為INTEL的CISC計算機(jī),許多指令都只用8位。但CISC計算機(jī)的指令可以用到40個位。所以一般來說堆棧計算機(jī)的指令密度最高,CISC次之,RISC最低。
最近工業(yè)界對JAVA計算機(jī)很有興趣,在美國的許多專利也都顯示將JAVA架構(gòu)設(shè)計到CPU中,例如Gee的6317872號(2001),Brown的6324688號(2001)及Patel的6332215(2001)。JAVA也利用堆棧傳送參數(shù),但它還是用8位的指令集。JAVA計算機(jī)龐大的指令集,以及它的子程序呼叫和返回都很麻煩,使得JAVA計算機(jī)的運(yùn)算效能較遜于RISC及CISC計算機(jī)。
Intel公司花了30年時間才將它的微處理器架構(gòu)從最小的8位8080,經(jīng)過16位的8086,32位的80X86放大到現(xiàn)在的64位Itanium。Intel耗費(fèi)了極大的人才財力才完成這個放大的工作,而在放大的過程中,又必須小心地維持住軟件的移植性。
展望二十一世紀(jì),單晶系統(tǒng)必定成為IC工業(yè)的界的主流。龐大而復(fù)雜的計算機(jī)架構(gòu)因為耗電量太大很難被整合進(jìn)入單晶系統(tǒng)。只有體積小、速度快、耗電量小的微處理器才能適合新時代對嵌入型計算機(jī)的要求。

發(fā)明內(nèi)容
本發(fā)明是一種使用最精簡指令的多重字節(jié)微處理器架構(gòu),主要是利用一個具有二個控制信號,包括一個主時鐘脈沖(Master clock signal),和一個重設(shè)信號(External reset signal)的中央處理器(CPU),和數(shù)十個簡單有效(efficient)卻不能以其它指令合成而取代的正交性(orthogonal)指令集,及二個堆棧(Stack),包括一個使子程序可以結(jié)構(gòu)化地呼叫子程序的返回堆棧(return stack)。和另一個可以在子程序之間方便地傳遞參數(shù)的參數(shù)堆棧(parameter stack),這個雙堆棧結(jié)構(gòu)使得每一個指令都可以在一個時鐘脈沖(Single clock cycle)內(nèi)完成處理工作,也使得計算機(jī)可以使用15位以上的任何字符來儲存指令,其中包含但不限于16,24,32,及64位的計算機(jī)。在每個字符中,可以塞入多個指令。明顯地增加指令密度和指令執(zhí)行速度,并減少芯片的面積及耗電量,使架構(gòu)中增加許多空間以容納新指令,以適應(yīng)新增的功能及硬件裝置。
本發(fā)明的主要目的在于提供一個因為指令少(minimum instuctionset)架構(gòu)簡單,因此可行作各種位寬度設(shè)計的微處理器架構(gòu),使微處理器可以明顯地增加指令密度和指令執(zhí)行速度,并減少芯片的面積及耗電量,使架構(gòu)中可以增加許多空間以容納新指令,以適應(yīng)新增的功能及硬件裝置。因此本發(fā)明使用雙堆棧的CPU的架構(gòu)及數(shù)十個簡單、有效及正交性的指令集來處理不斷在擴(kuò)充的功能。正交性的指令集使指令間的重復(fù)功能降到最少,這些指令可以用5位來表示。使用5位的指令,可以建造許多計算機(jī),其字符由15位到64位。包括但不限于16,24,32及64位的計算機(jī),各型計算機(jī)字符長度不同,但都可以執(zhí)行相同的指令,因而可以共享子程序庫,軟件工具,以及操作系統(tǒng)。
本發(fā)明的次要目的在于建造一系列的計算機(jī)使用雙堆棧的CPU及5位指令集。本發(fā)明CPU將適當(dāng)?shù)慕Y(jié)果在主時鐘脈沖的上升沿上鎖入緩存器及堆棧。這樣的架構(gòu)允許所有的指令都在一個時鐘脈沖內(nèi)完成工作。
本發(fā)明的另一目的在于提供一系列計算機(jī)系統(tǒng),包括CPU,內(nèi)存及輸出輸入裝置成為一個單芯片系統(tǒng)中。這種單芯片系統(tǒng)可以裝在一個集成線路芯片中。
為了達(dá)到上述的目的,本發(fā)明最大的特點(diǎn)在于使用雙堆棧的CPU的架構(gòu)及數(shù)十個簡單、有效及正交性的指令集來處理不斷在擴(kuò)充的功能的計算機(jī)設(shè)計。
CPU有兩個控制信號,CLK是主時鐘脈沖,RST是重設(shè)信號。CPU和內(nèi)存中有一組地址總線一組數(shù)據(jù)總線及一組控制信號。地址總線,數(shù)據(jù)總線及控制信號并允許CPU控制輸入輸出裝置。地址總線及數(shù)據(jù)總線的寬度和計算機(jī)字符的寬度N是相同的,而可由15增加到64,其中包括16,24,32,及64位。控制信號中包括允讀及允寫信號。輸出輸入裝置包括一組與RS232兼容的輸入埠,RX及輸出埠TX。此外CPU還有一組中斷請求(Interrupt Request)的輸入信號。
本發(fā)明的CPU中有多組緩存器及兩個堆棧,多組分工器(Multiplexers)及多組邏輯處理線路。緩存器及堆棧的信號送入邏輯處理線路,邏輯處理線路產(chǎn)生的信號送入分工器,分工器選擇合適的信號送給緩存器及堆棧,在主時鐘脈沖的上升沿上,分工器選擇的信號被鎖入選定的緩存器及堆棧中。分工器的選擇及緩存器及堆棧的選擇都是決定于目前執(zhí)行的指令,如此每一個指令在一個主時鐘脈沖中完成指令所指定的工作。
在本發(fā)明的CPU中主要的線路可以分成一個數(shù)據(jù)處理單位,一個地址處理單位,一個程序序列單位,及一個地址暫存單位。
在數(shù)據(jù)處理單位中包括一個中心緩存器T,輔助緩存器S,算術(shù)邏輯處理器ALU,和一組緩存器形成的先入后出(Last-in-first-out,LIFO)數(shù)據(jù)堆棧SSTACK。
地址處理單位包括一個程序地址緩存器P,一個數(shù)據(jù)地址緩存器X及一個地址分工器AMUX。
程序序列單位包括一個指令緩存器I,一個指令計數(shù)器C,及一組指令譯碼器DECODER。指令譯碼器由指令的代碼產(chǎn)生CPU中所有的控制信號,控制分工器,緩存器及堆棧的動作。
數(shù)據(jù)處理單位包括一個返回中心緩存器T與輔助緩存器S提供ALU需要的兩個參數(shù),ALU產(chǎn)生的結(jié)果再送回T緩存器。T與S中的數(shù)據(jù)可以暫時堆放在數(shù)據(jù)堆棧SSTACK上。程序地址緩存器P提供下一個程序字符的地址,以便CPU從內(nèi)存中讀取下一個程序字符。數(shù)據(jù)地址緩存器X則提供內(nèi)存中數(shù)據(jù)的地址,供CPU由內(nèi)存讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入內(nèi)存之用。
程序字符是由內(nèi)存讀入指令緩存器I中。數(shù)據(jù)則由內(nèi)存讀入中心緩存器T,或從T寫入內(nèi)存。在指令緩存器I中存有多個指令,指令計數(shù)器則從I中順序選出指令,指令送入譯碼器DECODER產(chǎn)生CPU各部分所需要的控制信號。程序地址緩存器P中的地址可以暫時存放在返回地址緩存器R及返回堆棧RSTACK上。
本發(fā)明的CPU有兩個控制輸入信號,主時鐘CLK及重設(shè)信號RST。當(dāng)重設(shè)信號RST是高位時,CPU中所有的緩存器及堆棧都清除為0,除了指令緩存器I讀入內(nèi)存地址是0的程序字符,因為指令計數(shù)器C中的數(shù)值也是0。當(dāng)RST降到低電位時,下一個主時鐘的上升沿將C中的數(shù)值加1成為1,這個數(shù)值選出I中第一個指令并將的送入譯碼器DECODER,譯碼器即送出第一個指令規(guī)定的控制信號給分工器,緩存器及堆棧。當(dāng)下一個主時鐘的上升沿到達(dá)時,第一個指令所產(chǎn)生的數(shù)據(jù)即鎖入所指定的緩存器及堆棧中,完成第一個指令的工作。
此時C中的數(shù)值又加1成為2,即在I中選出第二個指令,譯碼器據(jù)之再送出控制信號。在下一次主時鐘上升沿時完成第二個指令,如此繼續(xù)。在執(zhí)行I中最后一個指令時,C中的數(shù)值清為0,下一次主時鐘上升沿時即由內(nèi)存讀入下一個程序字符,如此繼續(xù)執(zhí)行全部程序。
本發(fā)明的地址處理單位中的地址分工器AMUX選擇P或X緩存器的地址,放在與內(nèi)存聯(lián)接的地址總線上,在讀取程序字符時選P緩存器中的地址,在讀寫數(shù)據(jù)字符時則選用X緩存器中的地址。在讀取程序字符時,讀出的字符存入I緩存器,在讀取數(shù)據(jù)字符時寫入T緩存器,在寫數(shù)據(jù)時T緩存器中的數(shù)據(jù)寫入內(nèi)存。讀寫的數(shù)據(jù)是經(jīng)由數(shù)據(jù)總線與內(nèi)存交換的,讀數(shù)據(jù)時,允讀信號被驅(qū)動,在寫數(shù)據(jù)時,允寫信號被驅(qū)動。
上述的算術(shù)邏輯處理器ALU從T及S兩個緩存器中接受數(shù)據(jù),處理后的數(shù)據(jù)存回T緩存器。ALU產(chǎn)生的結(jié)果有T+S的和,T與S的邏輯AND值,T與S的邏輯XOR值,T的邏輯NOT值,和T值向右移1位或是除2的工作。
在數(shù)據(jù)處理單位中,中心緩存器T之前有一個分工器TMUX,TMUX在執(zhí)行算術(shù)邏輯指令時,從ALU的結(jié)果中選一項鎖入T緩存器。在執(zhí)行緩存器數(shù)據(jù)轉(zhuǎn)移的指令時,可以選擇X,R,及內(nèi)存數(shù)據(jù)總線其中的一項數(shù)據(jù)鎖入T緩存器。鎖入T的動作都是在主時鐘的上升沿進(jìn)行的。
在上述的CPU中,在中心緩存器的右邊可以再加一個單位元的正反器UFF。當(dāng)CPU執(zhí)行右移位元(SHR)指令時,T緩存器最右邊的位T(0)被鎖入UFF中。UFF的輸出端直接連到UART輸出埠TX。同時,UART輸入埠RX的狀態(tài)則被鎖入CY正反器。CPU如此可以由TX埠送出ASCII碼,也可以從RX埠讀入ASCII碼。這個簡單的線路結(jié)構(gòu)使此發(fā)明的計算機(jī)可以與外掛的終端機(jī)交換信息。
在上述的程序序列單位中的程序地址緩存器P之前有一組分工器PMUX,負(fù)責(zé)選取下一個程序字符的地址。在執(zhí)行連續(xù)的程序時,PMUX選取P+1的地址,以讀取下一個程序字符。在CPU執(zhí)行跳越指令時,PMUX則選取用P緩存器中的地址和I緩存器中跳越指令的地址欄內(nèi)的數(shù)據(jù)計算所得的新地址。當(dāng)?shù)刂酚嫈?shù)器C中的數(shù)值為0時,在主時鐘的上升沿時P緩存器即鎖入PMUX選擇的地址,CPU就從此地址讀入下一個程序字符,并執(zhí)行此字符中的指令。在執(zhí)行子程序回返指令(RET)時,PMUX選擇返回地址緩存器中的地址,鎖入P,CPU就繼續(xù)讀主程序被子程序中斷之后的程序。
上述的數(shù)據(jù)處理單位中,輔助數(shù)據(jù)緩存器S前有一分工器SMUX,選擇T緩存器或數(shù)據(jù)堆棧SSTACK內(nèi)的數(shù)據(jù)鎖入S緩存器。當(dāng)S緩存器要存儲T中的數(shù)據(jù)時,T中數(shù)據(jù)存入S,S中數(shù)據(jù)則壓入數(shù)據(jù)堆棧SSTACK。當(dāng)T讀回S中數(shù)據(jù)時,SSTACK堆棧上的數(shù)據(jù)則彈出存回S緩存器。
在上述地址儲存單位中的返回地址緩存器R前面有一組分工器RMUX,選擇T,P或是返回堆棧RSTACK中的數(shù)據(jù)鎖入R緩存器。在將T或P中數(shù)據(jù)儲存到R中時,R中的數(shù)據(jù)則壓入返回堆棧RSTACK上。用R中的數(shù)據(jù)更新T或P時,RSTACK最上層的數(shù)據(jù)則彈出,存回R緩存器。
此項發(fā)明的微處理器架構(gòu)中最重要的一項成份是其指令集。在說明了CPU內(nèi)部結(jié)構(gòu)后,在此可以進(jìn)一步說明此指令集的內(nèi)容。此指令集中有兩大類指令短指令是占5位的指令欄,長指令除了5位的指令欄之外,還有一個地址欄。地址欄的長度與指令字符的長度和計算機(jī)系統(tǒng)所附裝的內(nèi)存的總量有關(guān)。短指令是用來做算術(shù)操作,邏輯操作,及在緩存器、內(nèi)存及堆棧間交換數(shù)據(jù)等工作的。長指令是做跳越、子程序呼叫及回路等工作的。一個程序字符中可以有許多個短指令,將字符塞滿為止。一個程序字符中只能有一個長指令,如果長指令沒有塞滿程序字符,則余下的空間可以用短指令補(bǔ)滿。以下是這一組簡單,有效,且有正交性的指令集的詳細(xì)說明。
長指令(其中aaa表示地址欄的內(nèi)容,用以決定跳越到的目標(biāo)地址)BRA aaa 跳越指令。跳越到目標(biāo)地址aaaBZ aaa 當(dāng)T=0時,跳越到目標(biāo)地址aaaBC aaa 當(dāng)CY=1時,跳越到目標(biāo)地址aaaCALL aaa 跳越到在地址aaa的子程序。P內(nèi)地址存入R,R內(nèi)地址壓入RSTACK。
短指令RET返回指令。R中地址抄回P,RSTACK頂層的地址彈出,存入R。
LD 讀存儲。數(shù)據(jù)的地址在X中,讀出數(shù)據(jù)存入T,T中數(shù)據(jù)存入S,S中數(shù)據(jù)壓入SSTACK。
LDI讀直接值。將P所指的存儲地址中數(shù)據(jù)讀入T,T中數(shù)據(jù)存入S,S中數(shù)據(jù)壓入SSTACK。
ST 寫存儲。數(shù)據(jù)的地址在X中。T中數(shù)據(jù)寫入內(nèi)存,S中數(shù)據(jù)存入T,SSTACK頂層數(shù)據(jù)彈出,存入S。
ADD加法指令。將S的數(shù)據(jù)加于T,SSTACK頂層數(shù)據(jù)彈出存入S。
AND邏輯AND指令。將S AND T的結(jié)果存回T,SSTACK頂層數(shù)據(jù)彈出,并存入S。
XOR邏輯XOR指令。將S XOR T的結(jié)果存回T,SSTACK頂層數(shù)據(jù)彈出,并存入S。
COM邏輯NOT指令。將T的各位反轉(zhuǎn)存回T。
SHR算術(shù)右移。將T中各位向右移1位,T的最高位保留不變。
TA T抄入X。T的數(shù)據(jù)抄入X,S的數(shù)據(jù)抄入T,SSTACK頂層數(shù)據(jù)彈出,存入S。
TS T抄入S。T的數(shù)據(jù)抄入S,S的數(shù)據(jù)壓入SSTACK。
TR T抄入R。T的數(shù)據(jù)抄入R,R的數(shù)據(jù)壓入RSTACK。S的數(shù)據(jù)抄入T,SSTACK頂層的數(shù)據(jù)彈出,存入S。
AT X抄入T。X的數(shù)據(jù)抄入T,T的數(shù)據(jù)抄入S,S的數(shù)據(jù)壓入SSTACK。
ST S抄入T。S的數(shù)據(jù)抄入T,SSTACK頂層的數(shù)據(jù)彈出,存入S。
RT R抄入T。R的數(shù)據(jù)抄入T,RSTACK頂層的數(shù)據(jù)彈出,存入R。T的數(shù)據(jù)抄入S,S的數(shù)據(jù)壓入SSTACK。
NOP無動作。
上述的指令是正交性(orthogonal)的,因為所有CPU要做的工作都可以由這一套指令完成,而且指令之間的重復(fù)功能減到最少。正交性指令的指針是任何指令不可能用其它指令來合成而取代。上述指令中,除了NOP及XOR以外都是正交性的,因為NOP可以用AT-TA,TS-ST,TR-RT等,對等指令來仿真,而XOR可以用AND,COM來模擬。NOP及XOR使用頻率很高,所以特別加入此指令集中以提升邏輯運(yùn)算的速度。
上述的指令集是驅(qū)動前述CPU各部分線路所需的最小指令集。但是為了處理特殊的應(yīng)用工作,可以加入特別的線路并增加新指令以增進(jìn)CPU的工作效能。下面即討論增加線路和新指令的范例,此項發(fā)明包括下述的新設(shè)計,但并不限于僅有以下這些設(shè)計。
在上述的地址處理單位中,X緩存器僅由T緩存器抄入新數(shù)據(jù)。但在X緩存器前可以增加一個分工器XMUX,選擇T或是X內(nèi)地址加1的值。這樣在執(zhí)行內(nèi)存讀寫指令(LD及ST)的同時,可以將X內(nèi)的地址加1。有了這個X+1的功能CPU就可以增加以下兩個指令,以供在內(nèi)存內(nèi)連續(xù)地讀寫大量的數(shù)據(jù)。
LDP將X指向地址中的數(shù)據(jù)讀入T,T內(nèi)數(shù)據(jù)存入S,S內(nèi)數(shù)據(jù)壓入SSTACK,同時X中的地址加1。
STP將T中數(shù)據(jù)存入X指向的地址。S中數(shù)據(jù)抄入T,SSTACK頂層數(shù)據(jù)彈出存入S,同時X中的地址加1。
在上述的地址儲存單位中,RMUX分工器選擇T,P或RSTACK中的數(shù)據(jù)鎖入R緩存器,RMUX可以增加一個選項,即是R所存的數(shù)據(jù)減1。若能有R-1的功能,就可以簡化上述CPU處理回路的能力。新加的LOOP指令功能如下LOOPaaa回路指令。若R=0就結(jié)束回路,將RSTACK頂層的數(shù)據(jù)彈出存入R,再繼續(xù)執(zhí)行下面的程序字符,若R不等于0,就將R減1,并跳越回aaa地址重復(fù)回路。
在上述的數(shù)據(jù)處理單元中的分工器XMUX和TMUX可以增加少量額外線路而加快乘法的運(yùn)算。在XMUX上增加一個選項即是X的內(nèi)容向右移1位。TMUX上增加一個選項是T+S的結(jié)果向右移1位。準(zhǔn)確的移位動作是當(dāng)X的最低位X(0)=1時,將T+S的結(jié)果右移1位存入T,并將X右移1位的結(jié)果存入X。X的最高位則補(bǔ)以T+S結(jié)果的最低位。如果X(0)=0時,則將T的內(nèi)容右移1位存回T,X的內(nèi)容也右移1位存回X,X的最高位則以T(0)補(bǔ)入。這樣的操作即是步進(jìn)乘法指令。步進(jìn)乘法指令連續(xù)進(jìn)行N次,即可將在S中被乘數(shù)和在X中的乘數(shù)相乘,結(jié)果在T-X雙緩存器中。
這個乘法操作中,我們可以把T和X看作是一個雙整數(shù)的右移器(Double Integer Right Shifter)。這個右移器的上一半接受T或是T+S的數(shù)據(jù),下一半接受X的數(shù)據(jù),執(zhí)行乘法指令時,右移器中全部數(shù)據(jù)同時向右移動1位。乘法指令的準(zhǔn)確規(guī)格如下MUL步進(jìn)乘法指令。若X(0)=1時,將(T+S)與X中的數(shù)據(jù)同時向右移動1位。若X(0)=0時,將T與X中的數(shù)據(jù)向右移動1位。
執(zhí)行MUL指令前必須將被乘數(shù)存入S,乘數(shù)存入X,T清為0。重復(fù)執(zhí)行N次MUL指令,即在T-X中得到雙整數(shù)的乘積。如果T中的數(shù)據(jù)不是0,在T-X中得到的結(jié)果是T+(S*X),這是在數(shù)字信號處理器中常用的乘積器(MAC)的功能。
在上述的數(shù)據(jù)處理器中的分工器XMUX及TMUX可以增加少量額外線路而加快除法的運(yùn)算。在XMUX上增加一個選項,即是X的內(nèi)容向左移動1位。TMUX上增加一個選項是(T+S)的結(jié)果向左移動1位。準(zhǔn)確的移位動作是當(dāng)加法器(T+S)產(chǎn)生溢位信號CY時(CY=1)即將(T+S)的結(jié)果左移一位存入T,并將X左移一位存入X。X的最高位補(bǔ)入T(0),而溢位信號CY補(bǔ)入X(0)。當(dāng)(T+S)的溢位信號CY=0時,則將T左移一位存回T,并將X左移一位存回X。T(0)補(bǔ)以X的最高位,X(0)補(bǔ)以溢位信號CY。
在這個步進(jìn)除法指令中,T和X可以看作是一個雙整數(shù)左移器(DoubleInteger Left Shifter)。左移器的上一半接受T或T+S的數(shù)據(jù),下一半接受X的數(shù)據(jù)。執(zhí)行除法指令時,左移器中的全部數(shù)據(jù)都向左移動1位。
除法指令的規(guī)格如下DIV 步進(jìn)除法指令。若(T+S)的溢位是1時,將(T+S)與X中的數(shù)據(jù)向左移動1位。若(T+S)的溢位是0時,將T與X中的數(shù)據(jù)向左移動1位。X(0)補(bǔ)以(T+S)的溢位信號。
如果T與X中存有雙整數(shù)被除數(shù),S中存有除數(shù)的負(fù)值,執(zhí)行DIV N+1次即可以在X中得到商數(shù),而在T中得到余數(shù)。須注意的是因為S中必須存除數(shù)的負(fù)值,所以除數(shù)和被除數(shù)都必須是正整數(shù)。
上述的CPU可以有5個輸入腳接受外面裝置產(chǎn)生的中斷請求信號。假若CPU允許中斷,而這5個輸入腳有任何一個或多個具有高電位時,CPU即執(zhí)行中斷,而將5個輸入腳的狀態(tài)視為一個從地址1到31的子程序地址,而在指令計數(shù)器C=0的時候,執(zhí)行一個呼叫子程序的動作。如果在內(nèi)存從1到31的地址內(nèi)都存入合適的指令,CPU即可以正確地接受中斷請求,而在極短的時間內(nèi)提供中斷服務(wù)。
上述的指令集中必須增加以下二指令才能在程序中規(guī)劃CPU對中斷請求的正確反應(yīng)EI允許中斷請求DI不允許中斷請求。
CPU在開機(jī)時不允許中斷請求。當(dāng)中斷服務(wù)的機(jī)制設(shè)定完成之后,程序中即可執(zhí)行EI指令。此后若中斷輸入腳有中斷請求時,CPU即可照中斷輸入腳的狀態(tài)提供中斷服務(wù)。當(dāng)中斷服務(wù)開始時,CPU立即停止其它中斷服務(wù),直到程序執(zhí)行EI指令才恢復(fù)對中斷請求的服務(wù)。
本發(fā)明的特點(diǎn)本發(fā)明是一種設(shè)計計算機(jī)和微處理器的新方法,對于計算機(jī)線路的效率及耗電量具有特別的貢獻(xiàn)。傳統(tǒng)的計算機(jī)設(shè)計拜Moore′s定律之賜,芯片容量每18個月增加一倍,計算機(jī)內(nèi)的線路也跟著增加,結(jié)果是計算機(jī)結(jié)構(gòu)越來越復(fù)雜,指令集也越來越大。RISC的觀念僅是暫時促使此趨勢放慢,但是發(fā)展到現(xiàn)在,RISC計算機(jī)也和CISC計算機(jī)一樣復(fù)雜起來。
本發(fā)明在微處理器架構(gòu)中使用雙堆棧方法,使得整體架構(gòu)極度簡化,效率增加,占用芯片面積減少,耗電量也減少。在指令集方面,我們也發(fā)現(xiàn)一組簡單有效且具正交性的指令集,可以方便地解決所有的計算問題。此指令集僅有數(shù)十個基本指令。因而可以用5位來編碼。好幾個5位的短指令,可以塞在一個程序字符中,因此我們可以用此架構(gòu)來設(shè)計一系列15或15位以上的計算機(jī)程序字符,包括但不限于16,24,32及64位。使這個多重字節(jié)微處理器架構(gòu)既可以應(yīng)用在很小的嵌入式微處理控制器,亦可視應(yīng)用程序的需要,應(yīng)用在龐大的超級計算機(jī)。此一系列的計算機(jī)既執(zhí)行相同的指令集,軟件開發(fā)的工作和耗費(fèi)自然可以簡化。
Intel公司花了30年時間才將它的微處理器架構(gòu)從最小的8位8080,經(jīng)過16位的8086,32位的80X86放大到現(xiàn)在的64位Itanium。Intel耗費(fèi)了極大的人才財力才完成這個放大的工作,而在放大的過程中,又必須小心地維持住軟件的移植性。
展望二十一世紀(jì),單晶系統(tǒng)必定成為IC工業(yè)的界的主流。龐大而復(fù)雜的計算機(jī)架構(gòu)因為耗電量太大很難被整合進(jìn)入單晶系統(tǒng),只有體積小、速度快、耗電量小的微處理器才能適合新時代對嵌入型計算機(jī)的要求。
以往的計算機(jī)架構(gòu)中,程序字符的寬度是架構(gòu)最主要的限制和設(shè)計的要素。本發(fā)明卻提出一個獨(dú)特性的架構(gòu),使程序字符不必與指令集及數(shù)據(jù)字符的寬度有關(guān)聯(lián),因此程序字符的寬度變成架構(gòu)設(shè)計時的一個參考數(shù),是可以視應(yīng)用的需求而改變的。
在上面及后續(xù)的討論中,各項緩存器,堆棧分工器及總線的寬度和程序字符的寬度N都是相同的。但是因為內(nèi)存的常見型式都是8位的倍數(shù),所以舉的例子都是用16,24,32及64位。其實(shí)計算機(jī)中程序字符是可以由15位起到64位中任何位數(shù)。
本發(fā)明的進(jìn)步性以往的計算機(jī)架構(gòu)中,程序字符的寬度是架構(gòu)最主要的限制和設(shè)計的要素。本發(fā)明卻提出一個獨(dú)特性的架構(gòu),使程序字符不必與指令集及數(shù)據(jù)字符的寬度有關(guān)聯(lián),因此程序字符的寬度變成架構(gòu)設(shè)計時的一個參考數(shù),是可以視應(yīng)用的需求而改變的。
1.從以上關(guān)于多重字節(jié)微處理器架構(gòu)的詳細(xì)描述,以下各項進(jìn)步性是顯而易見的了(a)本發(fā)明使用一套簡單有效而有正交性的指令集綜合了計算機(jī)的精髓,可以用來表達(dá)任何計算程序。這項多重字節(jié)微處理器架構(gòu)是繼續(xù)RISC架構(gòu)理念,而更進(jìn)一步的清除RISC指令中重復(fù)的功能。如此設(shè)計的計算機(jī)體積縮小,速度加快,耗電減少,成本也降低。較之目前的各種CISC,RISC及堆棧的架構(gòu)都超越許多,因此在今后系統(tǒng)芯片的發(fā)展上會提供更有效的CPU核心。
(b)本案使用簡單的指令集可用5位來編碼,因此程序字符不再受到指令碼的限制而可在15位以上任何字符使用。程序字符不再是限制計算機(jī)架構(gòu)的主要因素,而變成在解決應(yīng)用問題時的一個設(shè)計參數(shù)。這在計算機(jī)設(shè)計上是新的革命,超越了目前所有的CISC,RISC及堆棧計算機(jī)。Intel花了30年由8位的8080經(jīng)過16位的8086,32位的80*86到64位Itpmium的漫長旅程,此項多重字節(jié)微處理器架構(gòu)卻一蹴而成。
(c)有效地使用一個數(shù)據(jù)地址緩存器來讀寫內(nèi)存,很自然地消除了CISC架構(gòu)中需要的各種尋址模式,并大幅地簡化了計算機(jī)的指令集。即是在早年的堆棧計算機(jī),地址必須放在數(shù)據(jù)堆棧上。數(shù)據(jù)和地址混淆時,嚴(yán)重妨礙ALU處理數(shù)據(jù)的效率。使用數(shù)據(jù)地址緩存器是對堆棧計算機(jī)設(shè)計的一大改進(jìn)。
(d)有效地使用兩個堆??梢匀〈贑PU中大量的緩存器。在CPU中大量的緩存器雖然可以加速在主程序中的運(yùn)算速度,但不利于寫作結(jié)構(gòu)化和模塊化的程序。多重字節(jié)微處理器在堆棧的使用上則較RISC架構(gòu)有的最大優(yōu)點(diǎn)。
(e)使用兩個堆棧的結(jié)構(gòu)使得子程序的呼叫和返回,都能在一個主時鐘脈沖中完成。一般CPU的設(shè)計將堆棧放在外部內(nèi)存內(nèi),因此處理堆棧上的數(shù)據(jù)和處理子程序的呼叫和返回都非常緩慢。當(dāng)堆棧放在CPU內(nèi)部時,使用堆棧不再經(jīng)過內(nèi)存的瓶頸,而多重字節(jié)微處理器架構(gòu)的呼叫和返回速度則可以大幅提高,甚至超過RISC及CISC架構(gòu)的計算機(jī)。
(f)一個簡單的指令集的指令占很小的編碼空間,因此在一個程序字符中,可以塞入許多指令。此項多重字節(jié)微處理器的編碼密度明顯地超越CISC及RISC計算機(jī),也超過以往設(shè)計的堆棧計算機(jī)。編碼密度的提高還有一個意外的結(jié)果,即是CPU執(zhí)行指令的速度,可以遠(yuǎn)超過CPU讀取程序字符的速度。因為在讀入一個程序字符后,CPU立即執(zhí)行字符中的指令。只有在所有指令都執(zhí)行完畢后,CPU才需要再去內(nèi)存中讀下一個程序字符。以32位的電為例,每一個32位元的程序字符中可容納6個指令,因此執(zhí)行指令的速度可以超過讀取程序字符速度的6倍。這樣,高速的CPU可以配置低速度但價格便宜的內(nèi)存,而可以大幅降低計算機(jī)系統(tǒng)的成本。
(g)一個簡單的指令集讓以后的計算機(jī)設(shè)計師有空間可以加入針對應(yīng)用問題的新線路,及如MUL,DIV,及LOOP等新指令。此項多重字節(jié)微處理器架構(gòu),可以繼續(xù)擴(kuò)展以適應(yīng)以后許多不同的工業(yè)應(yīng)用。


圖1是多重字節(jié)微處理器的綜合結(jié)構(gòu);圖2是地址處理單位的說明圖;圖3是指令序列單位的說明圖;圖4是開機(jī)后程序執(zhí)行的時序圖;圖5是執(zhí)行跳越指令時程序執(zhí)行的時序圖;圖6是數(shù)據(jù)處理單位的說明圖;圖7是地址儲存單位的說明圖;圖8是T與X緩存器執(zhí)行MUL指令的說明圖;圖9是T與X緩存器執(zhí)行DIV指令的說明圖;圖10是CY及UFF正反器執(zhí)行SHR指令的說明圖;圖11是INTFF及ACKFF正反器與中斷服務(wù)的說明圖。
符號說明1Central processing unit CPU中央處理器2Memory 內(nèi)存3Address processing unit地址處理單位4Instruction sequencing unit指令序列單位5Data processing unit 數(shù)據(jù)處理單位6Address storage unit 地址儲存單位7Arithmetic logic unit ALU 算術(shù)邏輯器8Serial input unit 序列輸入單位9Serial output unit 序列輸出單位10Interrupt handler 中斷處理單位
11Master clock CLK主時鐘12Master reset RST重設(shè)13Data bus數(shù)據(jù)總線14Address bus 地址總線15Write enable WE 允寫信號16Read enable RE 允讀信號17Interrupt inputs INTERRUPT INTERRUPT中斷輸入腳18Interrupt acknowledge INTACKINTACK中斷確認(rèn)腳19Receiver RX 輸入埠20Transmitter TX 輸出埠21Address multiplexer AMUX存儲地址分工器22Connection between 21and 25 21單位與25單位的聯(lián)機(jī)23Connection between 21and 24 21單位與24單位的聯(lián)機(jī)24Program address register P 程序地址緩存器P25Data address register X 數(shù)據(jù)地址緩存器X26Connection between 24and 43 24單位與43單位的聯(lián)機(jī)27Connection between 25and 37 25單位與37單位的聯(lián)機(jī)28Instruction counter register C 指令計數(shù)緩存器C29Connection between 28and 30 28單位與30單位的聯(lián)機(jī)30Instruction multiplexer IMUX指令分工器IMUX31Instruction decoder DECODER 指令譯碼器DECODER32Control signals 控制信號33Instruction latch register I指令緩存器I34Connection between 13and 33 13單位與33單位的聯(lián)機(jī)35Connection between 30and 33 30單位與33單位的聯(lián)機(jī)36Connection between 30and 31 30單位與31單位的聯(lián)機(jī)
37Top data register T 中心緩存器T38Second data register S 輔助緩存器S39Data stack SSTACK數(shù)據(jù)堆棧SSTACK40Connection between 37and 38 37單位與38單位的聯(lián)機(jī)41Connection between 38and 39 38單位與39單位的聯(lián)機(jī)42Return stack RSTACK 返回堆棧RSTACK43Return address register R返回地址緩存器R44Connection between 42and 43 42單位與43單位的聯(lián)機(jī)45Connection between 37and 43 37單位與43單位的聯(lián)機(jī)46Connection from 7 to 37 7單位到37單位的聯(lián)機(jī)47Connection between 9 and 37 9單位與37單位的聯(lián)機(jī)48Connection between 7 and 38 7單位與38單位的聯(lián)機(jī)49Connection from 37 to 7 37單位到7單位的聯(lián)機(jī)50Dataaddress multiplexer XMUX 數(shù)據(jù)地址分工器XMUX51Data address selector XSEL 數(shù)據(jù)地址選擇器XSEL52Connection between 25 and 50 25單位與50單位的聯(lián)機(jī)53Data address load enable XLOAD 數(shù)據(jù)地址可載線XLOAD54Dataaddress incrementer 數(shù)據(jù)地址增值器55Dataaddress right shifter地址右移器56Dataaddress left shifter 地址左移器60Program address multiplexer PMUX 程序地址分工器PMUX61Program address selector PSEL程序地址選擇器PSEL62Connection between 24 and 60 24單位與60單位的聯(lián)機(jī)63Program address load enable PLOAD程序地址可載線PLOAD64Address selector AMUX地址選擇器AMUX65Program address incrementer 程序地址增值器
66Program address adder程序地址加法器68Instruction load enable ILOAD指令可載線ILOAD69SLOT_ZERO from decoder SLOT_ZERO解71Master reset released重設(shè)釋放72First active clock edge 首要啟動時鐘上緣73Instruction counter incremented 指令計數(shù)累增74Program address incremented 程序地址累增75Program word at 0 loaded into I 在地址0的程序指令字加載I緩存器76Second active clock edge 輔助啟動時鐘上緣77Instruction counter cleared 指令計數(shù)歸零78Program word at 1 loaded into I 在地址1的程序指令字加載I緩存器79Next active clock edge 下一個頻率上緣80Program address incremented 程序地址前進(jìn)81Last instruction finished完成最后指令82Next active clock edge 下一個頻率上緣83Instruction counter cleared 指令計數(shù)器清除84Next program word loaded 下一個指令字加載85Next active clock edge 下一個頻率的上升緣86Instruction counter incremented 指令計數(shù)前進(jìn)87A branch instruction decoded 解出一的分歧跳躍指令88Program address incremented 程序地址前進(jìn)89Next active clock edge 下一個頻率上緣90Instruction counter cleared 指令計數(shù)器清除91New program address loaded 新指令字地址加載
92 Next program word loaded 下一個指令字加載93 Next instruction decoded 解出下一個指令100Output from T register 從T緩存器輸出101Output from S register 從S緩存器輸出102Adder of T+S 加法器產(chǎn)生T+S的和103AND gates of T and S 邏輯AND器104Exclusive OR gates of T and S邏輯XOR器105Adding left shifter of T+S 加法左移器T+S106Adding right shifter of T+S 加法右移器T+S107Inverting gates of T 邏輯NOT器,T的反值108Right shifter of T 中心左移器將T左移1位109Left shifter of T中心右移器將T右移1位110Top data multiplexer TMUX中心分工器TMUX111Top data selector TSEL 中心選擇器TSEL112Connection between 37 and 11037單位與110單位的聯(lián)機(jī)113Top data load enable TLOAD 中心可載線TLOAD114Second data multiplexer SMUX 輔助分工器SMUX115Second data selector SSEL輔助選擇器SSEL116Connection between 38 and 11438單位與114單位的聯(lián)機(jī)117Second data load enable SLOAD輔助數(shù)據(jù)可載線SLOAD118Connection between 39 and 11439單位與114單位的聯(lián)機(jī)119Data stack pop enable SPOP 數(shù)據(jù)堆??沙鼍€SPOP120Data stack push enable SPUSH 數(shù)據(jù)堆棧可入線SPUSH121Zero detector of T,TZEROT緩存器為零偵測線TZERO
122Output of T zero detector TZ T緩存器為零輸出線TZ150Output from Rregister從R緩存器輸出151Return address decrementer 返回地址遞減器152Connection between 42 and 15342單位與153單位的聯(lián)機(jī)153Return address multiplexer RMUX 返回地址分工器RMUX154Return address selector RSEL 返回地址選擇器RMUX155Connection between 43 and 15343單位與153單位的聯(lián)機(jī)156Return address load enable RLOAD 返回地址可載線RLOAD157Return stack pop enable RPOP 返回堆??沙鼍€RPOP158Return stack push enable RPUSH 返回堆棧可入線RPUSH159Return register zero detector RZERO 返回緩存器為零偵測線RZERO160Output of RZERO RZERO的輸出170MUL output multiplexer MUL的分工器171Connection between 170 and 37170單位與37單位的聯(lián)機(jī)172mul selector X(0)MUL步進(jìn)乘法選擇器X(0)173Connection between 176 and 25176單位與25單位的聯(lián)機(jī)174Tright shifter T緩存器的右移器175Carry+T+S right shifter 進(jìn)位+T+S的右移器176T(0)+X right shifter T(0)+X緩存器的右移器180DIV multiplexer DIV的分工器181Connection between 180 and 37180單位與37單位的聯(lián)機(jī)182mul selector Carry DIV步進(jìn)除法選擇器183Connection between 186 and 25186單位與25單位的聯(lián)機(jī)
184T+X(MSB)left shifter T+X(最高位)的左移器185T+S+X(MSB)left shifter T+S+X(MSB)的左移器186X+Carryleft shifter X+進(jìn)位緩存器的左移器190CMUX multiplexer 由ADD指令控制的進(jìn)位的分工器191UMUX multiplexer 由SHR指令控制的進(jìn)位的分工器192Connection between 190 and 191 190單位與191單位的聯(lián)機(jī)193Connection between 191and 81 91單位與8單位的聯(lián)機(jī)194zero signal 提供零信號195carry signal 提供進(jìn)位信號196ADD instruction signal 執(zhí)行ADD指令的信號線197SHR instruction signal 執(zhí)行SHR指令的信號線200Interrupt Ack register 中斷認(rèn)可緩存器201Interrupt Ack setting si gnal中斷認(rèn)可中的信號203Interrupt Ack load controls ignal中斷認(rèn)可加載的控制信號204Interrupt register 中斷緩存器205Interrupt setting signal 中斷設(shè)定要求信號206Interrupt enable signal 中斷致能信號207Interrupt load controls ignal中斷加載的控制信號具體實(shí)施方式
(a)一組實(shí)用的指令集此項發(fā)明揭示一套基本的指令集,其中有20個指令。但為了處理數(shù)據(jù)的方便,在此我們加入5個新指令LOOP,E1,D1,MUL及DIV。這些指令及其編碼如表一所示表一是一組實(shí)用的指令集CPU中的緩存器T中心緩存器,S輔助緩存器,R返回地址緩存器,X數(shù)據(jù)地址緩存器,CY溢位緩存器。
CPU中的堆棧SSTACK數(shù)據(jù)堆棧,RSTACK返回地址堆棧。
指令碼 指令名稱指令功能0CALL aaa呼叫在地址aaa的子程序1BZ aaa 若T=0,跳到地址aaa2BC aaa 若CY=1,跳到地址aaa3BRA aaa 無條件跳到地址aaa4LOOP aaa若R=0,繼續(xù)執(zhí)行,R≠0則跳回aaa5RET 從子程序返回主程序6EI 允許中斷7DI 不允許中斷8--9--10 LDI 將程序中下一個字符讀入T,T存入S,S壓入SSTACK11 LD 將存儲中X所指字符讀入T12 --13 --14 --15 ST 將T中數(shù)據(jù)寫入內(nèi)存X所指地址16 ADD 將S加入T,SSTACK彈回S
17AND將(S AND T)存入T,SSTACK彈回S18XOR將(S XOR T)存入T,SSTACK彈回S19--20COM將T的倒數(shù)存回T21SHR將T右移1位22MUL步進(jìn)程法23DIV步進(jìn)除法24TS T存入S,S壓入SSTACK25ST S存入T,SSTACK彈回S26TA T存入X,S存入T,SSTACK彈回S27AT X存入T,S壓入SSTACK28TR R壓入RSTACK,T存入R,S存入T,SS TACK彈回S29RT S壓入SSTACK,T存入S,R存入T,RS TACK彈回R30--31NOP無動作(a)16位元的計算機(jī)設(shè)計在一個16位的計算機(jī)中,一個16位的程序字符中可以塞入3個指令,指令的安排是短指令

長指令

在長指令中的地址欄占11位。假若我們使用絕對尋址法,長指令可以在一個2048字符的范圍中跳越。這對較復(fù)雜的程序來看是不夠用的。但下面一個方法可以延長子程序呼叫的范圍子程序指令

長指令

短指令

這樣跳越指令跳越的范圍減少到1024字符但子程序呼叫的范圍卻增加到32768字符,這對16位元的應(yīng)用來說是夠大的了。
(c)24位元計算機(jī)的設(shè)計在24位元的計算機(jī)中,每一個字符可以存入4個短指令,但在長指令中跳越的范圍可以增加到512K字符,因為地址欄的長度增加到19位。
短指令

長指令

在長指令中,跳越指令和子程序呼叫指令都有19位的地址欄,足夠發(fā)展極龐大的程序了。
(d)32位元計算機(jī)的設(shè)計在32位元的計算機(jī)里每一個程序字符可以塞入6個短指令,。在長指令中如果用17位元的地址欄時,跳越指令前面還可以再多塞兩個短指令。指令的設(shè)計如下短指令

長指令

在長指令中,3個指令都可以是短指令或跳越指令。在跳越指令前的短指令可以先執(zhí)行,但在跳越指令后的短指令就無效了。
(e)64位元的計算機(jī)設(shè)計64位的計算機(jī),其實(shí)它的指令可以和32位元計算機(jī)完全一樣,可以每次只讀32位的。若使用64位的程序字符,每一個字符中可以塞入12個短指令。如果長指令也是用19位元的地址欄時,跳越指令前面可以多塞7個短指令。指令的格式如下
短指令


長指令


結(jié)論及延伸如上所述此項多重字節(jié)微處理器架構(gòu)具有較現(xiàn)有的CISC,RISC及堆棧式計算機(jī)架構(gòu)有以下多項特點(diǎn)(a)簡單的架構(gòu)可以制造體積小,速度快,省電并更便宜的微處理器及計算機(jī)。
(b)一個簡單有效且具正交性的指令集可以供以制造一系列的計算機(jī),其程序字符可以自15位元以上的任意寬度,包括但不限于16,24,32及64位元的計算機(jī),視應(yīng)用的需要而定。
(c)一個專用的數(shù)據(jù)地址緩存器可以簡化計算機(jī)的架構(gòu),因為它可以代替不同的尋址模式,并減少許多用這些尋址模式的指令。
(d)有效地使用兩個堆??梢蕴娲鶦ISC及RISC計算機(jī)中大量的緩存器。
(e)有效地使用兩個堆棧允許子程序的快速呼叫和返回,并鼓勵寫作結(jié)構(gòu)化及模塊化的程序。
(f)一個簡單的指令集允許一個快速的CPU直接連接較慢的內(nèi)存,組合便宜有效的計算機(jī)系統(tǒng)。
(g)一個簡單的指令集允許后續(xù)的計算機(jī)設(shè)計師添加新的線路及新的指令,以應(yīng)付以后工業(yè)界必須面對的特殊應(yīng)用問題。
此項發(fā)明中提及許多范例及應(yīng)用特例,這些范例只是用來說明此項發(fā)明的諸多優(yōu)點(diǎn),并不構(gòu)成對本發(fā)明的限制。
圖1CPU和內(nèi)存圖1是多重字節(jié)微處理器的方塊簡圖。其中的中央處理器CPU1包含有多個緩存器,兩個堆棧,多個分工器及其它的邏輯線路。CPU1和外掛的內(nèi)存MEMORY2借地址總線ADDRESS BUS 14,數(shù)據(jù)總線DATA BUS 13,允讀信號RE 15及允寫信號WE 16相聯(lián)結(jié)的。CPU 1由MEMORY 2中讀取數(shù)據(jù),并將新數(shù)據(jù)寫入MEMORY 2。CPU讀程序字符或數(shù)據(jù)時,允讀信號RE 15設(shè)為活動狀態(tài)(Asserted),CPU將數(shù)據(jù)寫入MEMORY時,允寫信號WE 16設(shè)為活動狀態(tài)。
圖1假設(shè)MEMORY 2是用異步的SRAM組成的,但它也可以使用其它內(nèi)存如ROM,DRAM及Flash ROM等不同型式。用其它型式的MEMORY時,地址和數(shù)據(jù)總線及控制信號如RE及WE等可能需要稍加修改以適應(yīng)選用的內(nèi)存。內(nèi)存也可以整合起來和CPU制造在單一芯片中,此時地址和數(shù)據(jù)總線就不必占用芯片的接腳。
CPU內(nèi)部可以分成4個主要的單位和較簡單的其它線路。這四個單位分別是地址處理單位(Address Processing Unit)3,指令序列單位(Instruction Sequencing Unit)4,數(shù)據(jù)處理單位(Data Processing Unit)5及地址儲存單位(Address Storage Unit)6。次要的線路包括RS232輸入埠RX19及輸出埠TX20及中斷處理單位(InterruptHandler)INTERRUPT10。
以下是各個單位和其中聯(lián)機(jī)的敘述。
(a)重設(shè)和主時鐘(Reset and Master Clock)CPU 1有兩個外來的控制信號,重設(shè)RST 12和主時鐘CLK 11。當(dāng)RST是活動狀態(tài)時,CPU 1內(nèi)所有緩存器,堆棧都清除為0。RST脫離活動狀態(tài)時,主時鐘CLK即控制指令執(zhí)行的序列。在CLK的第一個上升沿到達(dá)時,新的指令被IMUX分工器選出送入指令譯碼器DECODER 31。DECODER即依指令的指揮產(chǎn)生所有控制信號32,這些控制信號使分工器選擇所劃的數(shù)據(jù),送到相關(guān)的緩存器及堆棧前面。在下一個CLK的上升沿到達(dá)時,將新的數(shù)據(jù)鎖入選定的緩存器及堆棧中。此時IMUX就選定下一個指令,重復(fù)以上的動作,因此CLK即繼續(xù)不斷地執(zhí)行指令,一步一步進(jìn)行程序中規(guī)劃的工作。
因為CPU中所有的緩存器及堆棧都是以CMOS闡構(gòu)成的,其中所含的數(shù)據(jù)在兩個連續(xù)的CLK上升沿之間不會改變,因此主時鐘CLK的頻率可以由0Hz到CPU能達(dá)到的最高頻率。在以往的實(shí)驗中顯示,使用1.2微米的CMOS 1P2M制程,最高的CLK頻率是100MHz。所以若使用0。25微米的制程,CLK最高的頻率大約是1GHz。
(b)RS232輸入輸出埠一般的CPU設(shè)計中,大都不考慮輸入輸出的裝置,而將輸入輸出的工作利用Memory Mapped I/O方式用讀寫內(nèi)存的方式來驅(qū)動輸入輸出工作。但是因為RS232輸出輸入端口在操作系統(tǒng)中有十分重要的用途,此項CPU設(shè)計中包括一個簡單但有效的RS232埠。
RX 19是輸入埠,TX 20是輸出埠。RX 19連到溢位正反器CY 8,在執(zhí)行算術(shù)右移指令SHR時RX 19的狀態(tài)即鎖入CY 8,然后可以用溢位跳越指令BC將其存入T(7)位置,繼續(xù)執(zhí)行SHR指令七次,即可在T中讀得一個8位的ASCII碼。
T的最低位T(0)連接到正反器UFF 9。UFF的結(jié)果即連到T 20成為RS232的輸出信號。在執(zhí)行算術(shù)右移指令時,T(0)被鎖入UFF,而呈現(xiàn)在TX 20輸出腳上。SHR執(zhí)行十次即可輸出一個8位的ASCII碼,附加一個開始位和一個終點(diǎn)位。
輸出輸入的速度Baud Rate則完全以軟件程序來控制。
中斷處理器(Interrupt Handler)CPU 1接受由中斷輸入腳INTERRUPT 17的中斷要求。當(dāng)中斷處理器是在工作狀態(tài)而有中斷要求進(jìn)入時,CPU按著中斷輸入腳的狀態(tài)呼叫位置在1到31的一個子程序。當(dāng)中斷服務(wù)開始時,中斷處理器即將正反器ACKFF設(shè)定,ACKFF 10的結(jié)果立即送到INTACK 18輸出腳,產(chǎn)生中斷請求的裝置在看到INTACK 18信號設(shè)定時,必須將它的中斷要求清除。這樣才能保證中斷處理器可以正確地接受并及時處理各種中斷處理的請求。
(d)地址處理單位(Address Processing Unit)地址處理單位3包括一個程序地址緩存器P 24,一個數(shù)據(jù)地址緩存器X 25及一個存儲地址分工器AMUX 21,AMUX 21選擇P或X送出至地址總線,ADDRESS BUS 14與內(nèi)存MEMORY 2相連,指揮內(nèi)存將正確的數(shù)據(jù)提供給CPU 1。
P 24中經(jīng)常存有下一個程序字符的地址。在讀取下一個程序字符時,P24中的地址經(jīng)由AMUX21送出給MEMORY 2,MEMORY 2中提供的程序字符則鎖入程序序列單位中的指令緩存器I 33。
X25中存有向MEMORY 2讀寫數(shù)據(jù)時數(shù)據(jù)位的地址。當(dāng)讀寫內(nèi)存時,X25中的數(shù)據(jù)地址經(jīng)由AMUX送出至MEMORY 2讀入的數(shù)據(jù)字符鎖入T緩存器。寫出的MEMORY 2的數(shù)據(jù)也是由T提供的。
在讀寫數(shù)據(jù)字符時,X內(nèi)的地址可以自動加1,假若在地址處理單位中有將X加一的額外線路。X自動加1的讀寫指令有助于加速在MEMORY 2中讀寫大量連續(xù)地址的數(shù)據(jù)。
(e)指令序列單位(Instruction Sequencing Unit)指令序列單位4中包括指令緩存器I 33,指令計數(shù)緩存器C 28,指令分工器IMUX 30及譯碼器DECODER 31。程序字符由MEMORY 2讀出時即存于I 33。一個程序字符通常含有多個指令。執(zhí)行指令時C 28計數(shù)器內(nèi)的數(shù)值會自動加1,C中的數(shù)值控制分工器IMUX 30由I選取一個指令送入DECODER 31。DECODER 31根據(jù)選出的指令產(chǎn)生CPU內(nèi)部需要的所有控制信號,其中選擇信號送去所有的分工器選擇需要的數(shù)據(jù),啟動信號送去緩存器及堆棧,以便在下一個CLK的上升沿時將合適的數(shù)據(jù)鎖入選好的緩存器堆棧,完成下一個指令。
當(dāng)執(zhí)行到一個程序字符中的最后一個指令時,C 28內(nèi)的數(shù)值將被清為0。在C=0的時候,CPU會將P中的地址經(jīng)由AMUX送到MEMORY 2,并將內(nèi)存中該地址內(nèi)的下個程序字符鎖入I 33,因此在下一個主時鐘上升沿的時候開始執(zhí)行此程序字符中的第一個指令。如此循環(huán),CPU即可連續(xù)由MEMORY 2中讀取程序并予以執(zhí)行。
(f)數(shù)據(jù)處理單位(Data Processing Unit)數(shù)據(jù)處理單位5包括算術(shù)邏輯器ALU 7,中心緩存器T 37,輔助緩存器S 38及數(shù)據(jù)堆棧SSTACK 39。它由內(nèi)存,數(shù)據(jù)堆棧及其它緩存器獲取數(shù)據(jù)并送交ALU 7處理。
中心緩存器T 37是CPU 1的核心,它與大部分的緩存器都連接并可相互交換數(shù)據(jù),它并供給ALU 7一個數(shù)據(jù)參數(shù),而且ALU 7處理后的結(jié)果也存回T。T也與內(nèi)存MEMORY 2交換數(shù)據(jù)。
輔助緩存器S38與中心緩存器T及數(shù)據(jù)堆棧SSTACK 39相連。在壓入堆棧的動作中,T的數(shù)據(jù)存入S,S的數(shù)據(jù)則壓入SSTACK。在彈出堆棧的動作中,SSTACK最上層的數(shù)據(jù)彈出,存入S,而S中的數(shù)據(jù)則存入T。S 38提供給ALU 7第二個數(shù)據(jù)參數(shù),供ALU處理。ALU執(zhí)行ADD,AND,XOR等指令時所須的兩個參數(shù)由T及S提供。ALU執(zhí)行COM及SHR指令時只須要一個參數(shù),即由T提供。ALU執(zhí)行指令產(chǎn)生的結(jié)果都存回T。
(g)地址儲存單位(Addressing Storage Unit)地址儲存單位6包括返回地址緩存器R 43及返回堆棧RSTACK 42。它主要的功能是暫時儲存程序地址緩存器P 24中的地址,以便呼叫到的子程序在執(zhí)行完畢之后能回到主程序繼續(xù)后續(xù)的工作。返回地址緩存器R43也與中心緩存器T 37相連,所以地址儲存單位也可以暫時儲存T中的數(shù)據(jù)。
當(dāng)?shù)刂穬Υ鎲挝?被用來儲放P 24中的地址時P 24中的地址存入R43,R中的數(shù)據(jù)則壓入RSTACK。當(dāng)要恢復(fù)P的地址時,R中存的地址存回P,而RSTACK頂層的數(shù)據(jù)則彈出存回R。
當(dāng)?shù)刂穬Υ鎲挝?被用來儲放T 37中的數(shù)據(jù)時,T 37內(nèi)的數(shù)據(jù)存入R 43,R中的數(shù)據(jù)則壓入RSTACK。當(dāng)要恢復(fù)T中的數(shù)據(jù)時,R的數(shù)據(jù)存回T,RSTACK頂層的數(shù)據(jù)則被彈出,存回R緩存器。
事實(shí)上在數(shù)據(jù)處理單位5中的數(shù)據(jù)堆棧,SSTACK 39輔助緩存器S 38,中心緩存器T 37,與在地址儲存單位6中的返回地址緩存器R 43及返回堆棧RSTACK 42可以看作是一個巨型的轉(zhuǎn)移緩存器數(shù)組(Shift RegisterArray)。在執(zhí)行TR指令時,SSTACK的頂層數(shù)據(jù)彈出存入S,S存入T,T存入R,R則壓入RSTACK。在執(zhí)行RT指令時,RSTACK的頂層數(shù)據(jù)彈出存入R,R存入T,T存入S,S則壓入SSTACK。TR指令是將在轉(zhuǎn)移緩存器數(shù)組中的數(shù)據(jù)向左移一格,而RT是將數(shù)組中的數(shù)據(jù)向右移一格。在這個數(shù)組中只有R,T及S三個緩存器的數(shù)據(jù)是可以提供給CPU處理的,是程序員可以看見而且可以規(guī)劃的數(shù)據(jù)。
圖2是地址處理單位圖2更詳細(xì)的說明地址處理單位3的內(nèi)容及其動作。地址處理單位包括了程序地址緩存器P 24,數(shù)據(jù)地址緩存器X 25,地址分工器AMUX 21,程序地址分工器PMUX 60及數(shù)據(jù)地址分工器XMUX 50。
重設(shè)信號RST 12及主時鐘CLK 11都連到P及X并控制P及X的動作。當(dāng)RST是活動的時候,P及X都清為0。當(dāng)RST是不活動的時候,P及X的數(shù)據(jù)則可以由PMUX或XMUX在CLK的上升沿時鎖入如果PLOAD 63或XLOAD 53是活動的話。
當(dāng)PLOAD 63是活動的時候,CLK的上升沿將PMUX的輸出數(shù)據(jù)鎖入P。當(dāng)PLOAD是不活動的時候,CLK對P沒有影響。PMUX從下列信號中選一個送去P(P+1)65程序地址增值器,P中的地址加1,即是下一個程序字符在MEMORY 2中的地址。
(P+I)66程序地址加法器,P中的地址和I中的地址欄內(nèi)數(shù)據(jù)集合形成新的程序字符地址。產(chǎn)生相對地址的方法是將P中的地址和I中地址欄內(nèi)的數(shù)據(jù)相加,形成新的地址在跳越指令中使用。產(chǎn)生絕對地址的方法是以I中地址欄的數(shù)據(jù)取代P中相對字段中的數(shù)據(jù),即得到新地址。實(shí)際CPU的設(shè)計中必定選擇兩者之一。
R26返回地址緩存器。當(dāng)執(zhí)行RET指令時,返回地址是存在R中,所以R中地址可以取回存入P中。
INTERRUPT 17中斷輸入埠。當(dāng)CPU接受中斷請求時P中的新地址是由中斷輸入端口輸入的信號決定。中斷輸入埠5個輸入腳的狀態(tài)延伸成一個新的地址,作為子程序呼叫的地址。
圖2也顯示了數(shù)據(jù)地址緩存器X25和它前面的分工器XMUX 50。X提供讀寫內(nèi)存時數(shù)據(jù)的地址。RST及CLK都連在X上。當(dāng)RST是活動的時候,X清除為0。當(dāng)RST是不活動的時候且XLOAD53是活動時,CLK的上升沿即將XMUX輸出的數(shù)據(jù)鎖入X。當(dāng)XLOAD是不活動的時候,CLK對X沒有影響,X的內(nèi)容也不改變。
當(dāng)XLOAD是活動時,XMUX從下列的信號中選一個送給X,在CLK的上升沿時將此信號鎖入XT27中央緩存器,在讀寫內(nèi)存數(shù)據(jù)前,數(shù)據(jù)地址都是由T提供給X的。
(X+1)54數(shù)據(jù)地址增值器。X內(nèi)的地址加1。
(X>>1)55地址右移器。X的內(nèi)容向右移1位,若X(0)=1,X的最高位由(T+S)加法器的最低位補(bǔ)入,若X(0)=1,X的最高位由T(0)補(bǔ)入。這項數(shù)據(jù)是MUL指令選用的。
(X<<1)56地址左移器。X的內(nèi)容向左移1位,X(0)則由(T+S)加法器的溢位補(bǔ)入。
圖3是指令序列單位(Instruction Sequencing Unit)指令序列單位4包括指令緩存器I33,指令計數(shù)器C28,指令分工器IMUX 30及指令譯碼器DECODER 31。
I33及C28都受RST 12及CLK 11控制。當(dāng)RST是活動時,C清除為0,而I 33則由MEMORY 2加載程序字符。這時候因為P清除為0所以MEMORY 2提供的是在存儲地址0的程序字符。這是CPU在啟動時執(zhí)行的第一個程序字符。當(dāng)RST是不活動時,在下一個主時鐘CLK的上升沿時C增加為1,此時C即在I中的程序字符中選出第一個指令經(jīng)由IMUX送去DECODER 31。DECODER產(chǎn)生所有的控制信號32給CPU中所有的緩存器,堆棧及分工器,在下一個CLK的上升沿時完成第一個指令。此時C又增為2,即在I中選取第二個指令經(jīng)IMUX送給DECODER,產(chǎn)生所有的控制信號,在CLK下一個上升沿時完成第二個指令,如此繼續(xù)執(zhí)行指令。
在執(zhí)行I中程序字符中最后一個指令時,SLOT-ZERO 69的信號設(shè)為活動。當(dāng)SLOT-ZERO是活動時,下一個CLK的上升沿即將C28清除為0。當(dāng)C=0時,下一個程序字符的地址由P24經(jīng)由AMUX傳給MEMORY 2,所得的程序字符即在下一個CLK的上升沿時鎖入I。以后的CLK上升沿即如前述執(zhí)行此程序字符中的指令。如此繼續(xù)下去,指令序列單位即可順序讀取程序字符并逐個執(zhí)行其中的指令而逐步完成程序員要求的工作。
圖4~圖5是程序執(zhí)行的時序4顯示指令序列單位4在開機(jī)時執(zhí)行指令的時序。開機(jī)時RST重設(shè)信號是活動的,此時所有的緩存器及堆棧都清為0,唯一的例外是指令緩存器I,它讀入在內(nèi)存0地址的程序字符。
在71時,RST由活動變成不活動。在75時,I緩存器讀入地址0內(nèi)的程序字符。在72時CLK的第一個上升沿將P中的地址加1(74),并將C中的數(shù)值加1(73)。此時CPU即準(zhǔn)備執(zhí)行I中的第一個指令。在下一個CLK的上升沿76時,第一個指令執(zhí)行完畢,開始執(zhí)行第二個指令。如此繼續(xù)執(zhí)行地址0中的程序字符。
在77時,I中最后一個指令執(zhí)行完畢,C清為0。在78時CPU將P=1地址的程序字符讀入,在CLK下一個上升沿79時開始執(zhí)行此字符中第一個指令。同時P再加1指向下一個程序字符的地址。如此繼續(xù)讀取程序字符并執(zhí)行其中的指令。
圖5則顯示當(dāng)執(zhí)行跳越指令時的時序。在CLK上升沿81時CPU執(zhí)行上一個程序字符中最后一個指令。在CLK上升沿82時,C清為0(83),因而讀入新指令84,此指令為一跳越指令。下一上升沿85時,CPU開始執(zhí)行跳越指令86,在88時新的目標(biāo)地址計算開始。在下一個CLK的上升沿89時,C又清為0,而新地址Q鎖入P緩存器。在92時在Q中的程序字符讀出而在下一個CLK上升沿時鎖入I。以后的CLK上升沿93就開始執(zhí)行在Q位置程序字符中的指令,同時P中的地址Q又加1成為Q+1,準(zhǔn)備讀取下一個程序字符。
圖6是數(shù)據(jù)處理單位(Data Processing Unit)圖6更詳細(xì)地說明數(shù)據(jù)處理單位5的結(jié)構(gòu),其中包括算術(shù)邏輯器ALU7,中心緩存器T 37,輔助緩存器S 38,中心分工器TMUX 110,輔助分工器SMUX 114及數(shù)據(jù)堆棧SSTACK 39。
RST 12及CLK 11控制T,S及SSTACK。當(dāng)RST是活動時T,S及SSTACK皆清為0,當(dāng)RST是不活動時,CLK的上升沿會將TMUX,SMUX的數(shù)據(jù)分別鎖入T及S,如果TLOAD或SLOAD是活動的話。
當(dāng)SPUSH 120是活動時,SSTACK是在壓入的狀態(tài),此時在CLK的上升沿S中的數(shù)據(jù)即壓入SSTACK。當(dāng)SPOP 119是活動時,SSTACK是在彈出狀態(tài),下一個CLK的上升沿即使SSTACK頂層的數(shù)據(jù)被彈出而取消。但此時SSTACK的頂層數(shù)據(jù)是經(jīng)由118送到SMUX 114,所以如果此時SLOAD是活動的而SSEL 115正好選擇118通過,這樣SSTACK的頂層可以存回S。當(dāng)SPUSH及SPOP都是不活動的時候,SSTACK的內(nèi)容不變,不受CLK的影響。
當(dāng)整個數(shù)據(jù)處理單位在壓入狀態(tài)時,TLOAD,SLOAD,SPUSH都是活動的,而SSEL也選擇T送給S。在下一個CLK的上升沿時,TMUX選的數(shù)據(jù)存入T,T的數(shù)據(jù)存入S,S壓入SSTACK。當(dāng)數(shù)據(jù)處理單位在彈出狀態(tài)時,TLOAD,SLOAD,SPOP都是活動的,而SSEL選擇SSTACK 39的頂層數(shù)據(jù)送給S。所以在下一個CLK的上升沿時,SSTACK頂層數(shù)據(jù)彈出存回S,S的數(shù)據(jù)經(jīng)過101及TMUX 110存入T。
TZERO 121是檢驗T等于0的線路。當(dāng)T=0時,TZERO的輸出TZ 122就升為高位。TZ的狀態(tài)讓BZ指令決定是否要跳越到新地址。
圖6也顯示算術(shù)邏輯器ALU 7與T,S及中心分工器TMUX 110間的關(guān)系。ALU中僅含有邏輯線路,不含有緩存器,正反器等儲存線路。ALU接受T及S的數(shù)據(jù),進(jìn)入不同的數(shù)據(jù)處理線路而產(chǎn)生下列的結(jié)果,送給分工器TMUX選擇以鎖入T(T+S)102加法器產(chǎn)生T+S的和。
(T&S)103邏輯AND器,產(chǎn)生T AND S的結(jié)果。
(T^S)104邏輯XOR器,產(chǎn)生T XOR S的結(jié)果。
((T+S)<<1)105加法左移器T+S和左移1位。
((T+S)>>1)106加法右移器T+S和右移1位。
(~T)107邏輯NOT器,T的反值。
(T<<1)108中心左移器將T左移1位。
(T>>1)109中心右移器將T右移1位。
以上ALU 7中的數(shù)據(jù)處理線路都是平行操作的,隨時都依據(jù)T及S的數(shù)據(jù)產(chǎn)生結(jié)果以備TMUX選擇。這個“先計算后選擇”的設(shè)計使得任何算術(shù)及邏輯運(yùn)算的指令都能在一個主時鐘頻率內(nèi)完成所須要的工作,使得這種計算機(jī)有快速的算術(shù)能力。
除了以上8個ALU產(chǎn)生的結(jié)果外,TMUX 110另外也接受X,R以及MEMORY 2上數(shù)據(jù)總線中的數(shù)據(jù)送給T。在執(zhí)行算術(shù)指令或是緩存器移轉(zhuǎn)及內(nèi)存讀取的指令中,TLOAD若是活動的,TSEL 111就可以選擇需要的數(shù)據(jù)送給T,在CLK的上升沿把選出的數(shù)據(jù)鎖入T。
在圖6中沒有顯示(T+S)加法器的溢位信號,此溢位信號是送到正反器CY 8前。當(dāng)執(zhí)行ADD指令時,(T+S)的溢位信號會鎖入CY,CY中的數(shù)據(jù)供溢位跳越指令BC來決定跳越的地址。
圖7是地址儲存單位(Address Storage Unit)地址儲存單位6包括返回地址緩存器R43,返回堆棧RSTACK 42及返回地址分工器RMUX 153。RST及CLK控制R及RSTACK。當(dāng)RST是活動的時候,R及RSTACK都清為0。當(dāng)RST是不活動時R及RSTACK可以在CLK的上升沿時由RMUX及R鎖住新數(shù)據(jù),假若RLOAD 156,RPUSH 158及RPOP157是活動的話。
當(dāng)RPUSH 158是活動時,地址儲存單位是在壓入狀態(tài),下一個CLK的上升沿即將R內(nèi)數(shù)據(jù)壓入RSTACK。當(dāng)RPOP 157是活動時,地址儲存單位是在彈出狀態(tài)。下一個CLK的上升沿時,RSTACK頂層的數(shù)據(jù)被彈出,此時如果RLOAD是活動的,而且RSEL 154使RMUX 153選擇152的信號時,RSTACK頂層的數(shù)據(jù)便會存回R。當(dāng)RPUSH與RPOP都是不活動時,RSTACK不改變,不受CLK的影響。
當(dāng)RLOAD 156是活動時,在CLK的上升沿R,即將RMUX 153選擇的數(shù)據(jù)鎖入R。返回地址分工器RSEL 154則使RMUX從以下的信號選擇一個送給RRSTACK 42返回堆棧的頂層。由152送至RMUX。
(R-1)151返回地址緩存器R中的數(shù)據(jù)減1。
T37中心緩存器T37經(jīng)由45送到RMUX。
P24程序地址緩存器P24經(jīng)由26送到RMUX。
聯(lián)機(jī)45使得R及RSTACK可以暫存T中的數(shù)據(jù),聯(lián)機(jī)26使得R及RSTACK可以暫存P中的地址。(R-1)151可以使R作為一個回路計數(shù)器,以便用LOOP指令來建造回路程序。若R=0LOOP即結(jié)束回路,若R≠0,則將R-1并重復(fù)回路程序。RZERO 159是測試R是否為0的線路,它的結(jié)果RZ 160讓L00P指令決定是否重復(fù)回路程序。
圖8是步進(jìn)乘法指令圖8顯示T37,S38及X25緩存器如何連接以實(shí)現(xiàn)步進(jìn)乘法指令MUL。T及X可以看成一個相連的雙整數(shù)右移器,T含有雙整數(shù)的上半,X含有雙整數(shù)的下半。開始時T含有部分乘積,X含有乘數(shù),S含有被乘數(shù)。假如乘數(shù)的最低位X(0)=0,T-X即向右移1位。假如X(0)=1,S即加入T,(T+S)的和即與X一齊向右移1位。這樣就完成了MUL指令。MUL指令重復(fù)N次,即得到X乘S的雙整數(shù)乘積,存在T-X之中,T含有乘積的下半。
在圖8中可見到X(0)172使分工器MULMUX 170選擇T或(T+S)右移器的結(jié)果到170,此時TLOAD若也是活動的,在CLK的下一個上升沿時,MULMUX選擇的結(jié)果即被鎖入T。執(zhí)行MUL指令時,XLOAD也是活動的,在CLK的上升沿時,X即鎖入右移器176的結(jié)果。
在進(jìn)行乘法運(yùn)算之前,T先清為0,S存入被乘數(shù),X存入乘數(shù)。重復(fù)MUL指令N次,在T中即有雙整數(shù)乘積的上半,X中即有雙整數(shù)乘積的下半。S則還是有原來的被乘數(shù)。
如果在進(jìn)行乘法運(yùn)算之前,T不清為零而含有一個數(shù)值,這個數(shù)值在完成乘法運(yùn)算之后會加在乘積之中,因此這個乘法運(yùn)算的結(jié)果是T+(S*X)。這樣的工作是在數(shù)字信號處理器(Digital Signal Processor)需要做的工作。這個步進(jìn)乘法器的設(shè)計可以很方便地用來解決數(shù)字信號處理的問題。
圖9是步進(jìn)除法指令圖9顯示如何將T37,S38及X25連接以實(shí)現(xiàn)步進(jìn)除法指令DIV。T與X可看做一個雙整數(shù)的左移器,T含有雙整數(shù)的上半,X含有雙整數(shù)的下半,進(jìn)行DIV時,T-X含有被除數(shù)而S含有除數(shù)的負(fù)值。在ALU7中有(T+S)的加法器,所以(T+S)102的結(jié)果和溢位信號Carry是隨時可用的。
假如(T+S)的溢位信號Carry 182是0,DIVMUX 180會選擇T左移一位而鎖入T。假如Carry 182是1,DIVMUX則會選擇(T+S)的結(jié)果左移一位而鎖入T。執(zhí)行DIV時TLOAD是活動的,所以在CLK的上升沿時,DIVMUX選擇的信號181會鎖入T。
執(zhí)行DIV時,XLOAD 53也是活動的,即在CLK的上升沿將左移器186的結(jié)果鎖入X。左移器186將X內(nèi)的數(shù)據(jù)向左移1位,最低位則補(bǔ)入Carry。
在開始執(zhí)行除法程序時,T-X含有雙整數(shù)的被除數(shù),S含有除數(shù)的負(fù)值,DIV指令要重復(fù)執(zhí)行(N+1)次,此時X含有除得的商數(shù),在T中的數(shù)值則必須向右移1位才是除得余數(shù)。N是程序字符及數(shù)據(jù)字符的位數(shù)或?qū)挾取?br> 因為在S中必須先存入除數(shù)的負(fù)值,才能進(jìn)行除法程序,所以這種除法程序只能應(yīng)用在被除數(shù)及除數(shù)都是正整數(shù)的情形下。被除數(shù)及除數(shù)都不能是負(fù)數(shù)。
圖10是UART輸入輸出埠以往的微處理器或計算機(jī)架構(gòu)中輸入輸出的線路都不包括在CPU的設(shè)計中。在計算機(jī)系統(tǒng)中一個UART形式或類似的輸入輸出裝置對系統(tǒng)的發(fā)展偵錯有極大的幫助。在此項發(fā)明中,我們加入一些極簡單的線路即可以形成一個類似UART的通訊端口,只使用到中心緩存器T38和已有的右移指令SHR。
圖10中顯示此UART端口的內(nèi)部構(gòu)造。在輸出部分有一個正反器UFF9,它將T的最低位送出到輸出腳TX20上。在輸入部分則有一個正反器CY 8及兩個分工器UMUX 191及CMUX 190。
當(dāng)執(zhí)行SHR指令時,SHR 197信號是活動的。這時在CLK的上升沿,UFF即將T(0)的狀態(tài)鎖入,而T(0)的狀態(tài)就立即送到UART的輸出腳TX 20上。這樣執(zhí)行SHR指令10次,即可在T緩存器中存的一個8位ASC11碼,加上一個開始位和一個結(jié)束位送出TX。每一個SHR指令間則執(zhí)行一個延遲程控輸出的Baud Rate速度。
當(dāng)執(zhí)行SHR指令時,TLOAD 113也是活動的。此時SHR 197信號指揮分工器UMUX 191選擇UART的輸入腳RX 19的狀態(tài)而將其鎖入正反器CY 8。在CY的數(shù)據(jù)即可經(jīng)由溢位跳越指令BC存入T(7)位。這樣執(zhí)行SHR指令8次,即可從RX接腳上輸入的一個8位ASCII碼,存入到中心緩存器T中。每一個SHR指令間,則執(zhí)行上述的延遲程序,以控制輸入的Baud Rate速度。
CY正反器原來的目的是在儲存當(dāng)執(zhí)行ADD指令時,加法器(T+S)120所產(chǎn)生的溢位信號。這個溢位信號是由聯(lián)機(jī)195送到CMUX 190前面的。執(zhí)行ADD指令時,溢位信號即經(jīng)過195,CMUX 190聯(lián)機(jī)192,UMUX 191及聯(lián)機(jī)193鎖入CY 8。當(dāng)CPU執(zhí)行ADD及SHR以外任何指令時,CY都被清除為0。因為0信號經(jīng)由聯(lián)機(jī)194,CMUX 190,聯(lián)機(jī)192,UMUX 191,聯(lián)機(jī)193鎖入CY。
SHR指令除了將T的內(nèi)容右移1位之外還會將T(0)鎖入UFF而顯示在輸出端口TX 20上。因此當(dāng)SHR指令在UART程序以外使用時,最好要將T(0)設(shè)為1。這樣SHR就不會干擾到UART的正常操作。如果不這樣做而T(0)=0時執(zhí)行SHR指令,外面接在TX上的終端機(jī)就會誤認(rèn)UART是送出一個新ASCII碼的開始位。
圖11是中斷處理器圖11顯示中斷處理器中的兩個正反器ACKFF 200及INTFF 204及其相關(guān)的信號。ACKFF 200的輸出,送到輸出腳INTACK 18,通知請求中斷的裝置CPU已開始處理中斷的服務(wù)。INTFF 204則產(chǎn)生一個INTEN 206信號,通知CPU其它部分,特別是指令序列單位,要處理中斷請求。
中斷請求信號是由INTERRUPT 17的輸入腳進(jìn)入CPU的。當(dāng)中斷是允許的時候而INTERRUPT不全是0,在C=0的情形下指令序列單位就不去由MEMORY 2讀下一個程序字符,而執(zhí)行一個子程序呼叫。呼叫的地址即是由INTERRUPT 17的狀態(tài)加長成為一個1到31的地址。在1到31地址間是一個中斷處理表,呼叫此表中任何一地址即進(jìn)入一個中斷服務(wù)的程序。
當(dāng)CPU進(jìn)入中斷服務(wù)程序時ACKSET 201即設(shè)為高位,ACKLOAD 203也設(shè)為高位。當(dāng)在下一個CLK的上升沿時,ACKFF即鎖入ACKSET而在INTACK 18上輸出高位,通知請求中斷服務(wù)的裝置中斷服務(wù)已經(jīng)開始。這時外部裝置應(yīng)該將INTERRUPT上的信號歸零。
當(dāng)CPU 1啟動時,INTFF 204是清除為0的,因此INTEN 206也是0。INTEN是0時所有外面來的中斷請求都不予處理。在執(zhí)行允許中斷的指令EI時,INTSET與INTLOAD同時被設(shè)為1。在下一個CLK的上升沿時,INTFF及INTEN都鎖為1。此后指令序列單位才會響應(yīng)外部的中斷請求。
當(dāng)CPU進(jìn)入中斷服務(wù)程序,則會將INTSET清為0而INTLOAD設(shè)為1。所以在CLK下一個上升沿時,INTFF及INTEN同時被清為0,之后CPU即不再響應(yīng)中斷請求,直到執(zhí)行允許中斷指令EI之后。
CPU在執(zhí)行不允許中斷的指令DI時,將INTSET清為0并將INTLOAD設(shè)為1。在下一個CLK的上升沿,INTFF及INTEN都被清為0。此后CPU即不再處理外部的中斷請求。
CPU在執(zhí)行RET的指令時會將ACKSET清除,并設(shè)ACKLOAD為1。在下一個CLK的上升沿,ACKFF及INTACK同時被清為0。因為中斷服務(wù)是一個子程序,在子程序執(zhí)行完畢時,RET就會將INTACK歸零通知外部裝置中斷服務(wù)已經(jīng)完成。
這個中斷服務(wù)處理器是一個十分簡單及有效的中斷服務(wù)裝置,它雖不能像一般中斷處理器一樣能提供許多不同的功能應(yīng)付各種不同裝置的需求,但足夠控制許多在嵌入式微控制器的應(yīng)用。
權(quán)利要求
1.一種使用最精簡指令的多重字節(jié)微處理器架構(gòu),其特征在于所述多重字節(jié)微處理器架構(gòu)使用一組少于二的五次方個指令集,在一個雙堆棧的中央處理器架構(gòu)內(nèi),來處理不斷在擴(kuò)充的功能的計算機(jī)設(shè)計,使計算機(jī)可以使用15位以上的任何字符來儲存指令,并在每個字符中,可以塞入多個指令。
2.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器中有多組緩存器及兩個堆棧,多組分工器及多組邏輯處理線路,一個重設(shè)的輸入信號,可以將所有的緩存器內(nèi)容都清為零,及一個主時鐘脈沖輸入,以控制緩存器在脈沖的上升沿,鎖住從分工器選擇數(shù)據(jù),區(qū)分在四個主要部分?jǐn)?shù)據(jù)處理單位,地址處理單位,指令序列單位,以及地址儲存單位。
3.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器的數(shù)據(jù)處理單位包括一組中心緩存器,一組輔助緩存器,一組先入后出的數(shù)據(jù)堆棧,一組中心分工器,一組輔助分工器及一組算術(shù)邏輯器,支持一個壓入動作將輔助緩存器的數(shù)據(jù)壓入數(shù)據(jù)堆棧,中心緩存器的數(shù)據(jù)存入輔助緩存器,中心緩存器則經(jīng)由中心分工器加載算術(shù)邏輯器產(chǎn)生的結(jié)果,或是上述中央處理器中其它緩存器的數(shù)據(jù),以另外支持一個彈出動作,將數(shù)據(jù)堆棧頂層的數(shù)據(jù)彈出存入輔助緩存器,輔助緩存器的數(shù)據(jù)則存入中心緩存器,壓入及彈出的動作都是在主時鐘的上升沿進(jìn)行的。
4.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于所述算術(shù)邏輯器,是用以及接受中心緩存器及輔助緩存器中的數(shù)據(jù),并產(chǎn)生加法、邏輯AND、邏輯XOR的結(jié)果、以及中心緩存器中數(shù)據(jù)的邏輯反值和向右移1位的結(jié)果。
5.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器、緩存器及堆棧的信號送入邏輯處理線路,邏輯處理線路產(chǎn)生的信號送入分工器,分工器選擇合適的信號送給緩存器及堆棧,在主時鐘脈沖的上升沿上,分工器選擇的信號被鎖入選定的緩存器及堆棧中,分工器的選擇,緩存器及堆棧的選擇都是決定于目前執(zhí)行的指令,如此每個指令在一個主時鐘脈沖中完成指令所指定的工作。
6.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器中有兩個控制信號,主時鐘脈沖與重設(shè)信號,控制信號中包括允讀及允寫信號,及一組中斷請求的輸入信號。
7.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器和內(nèi)存中有一組地址總線,一組數(shù)據(jù)總線,及一組控制信號;地址總線,數(shù)據(jù)總線及控制信號,并允許中央處理器控制輸入輸出裝置,地址總線及數(shù)據(jù)總線的寬度和計算機(jī)字符的寬度N是相同的,而可由15增加到64,其中包括16,24,32,及64位。
8.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于所述指令集為正交性指令集,其正交性指令的指針是指任何指令可以用5位來表示,也可以用5位來編碼,或好幾個5位的短指令,可以塞在一個程序字符中,并且不可能用其它指令來合成而取代,使指令間的重復(fù)功能降到最少,用此來設(shè)計一系列15或15位以上的計算機(jī)程序字符,包括但不限于16,24,32及64位。
9.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于使用5位的指令,其字符可由15位到64位,包括但不限于16,24,32及64位的計算機(jī),及各型字符長度不同計算機(jī),以執(zhí)行相同的指令,共享子程序庫,軟件工具,以及操作系統(tǒng)。
10.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于此指令集中有兩大類指令,包括用來做算術(shù)操作,邏輯操作,及在緩存器、內(nèi)存及堆棧間交換數(shù)據(jù)等工作,只占5位的指令欄的短指令,和除了5位的指令欄之外,還有一個地址欄,地址欄的長度與指令字符的長度和計算機(jī)系統(tǒng)所附裝的內(nèi)存的總量有關(guān),做跳越、子程序呼叫及回路工作的長指令,組成各種不同的程序,程序字符不必與指令集及數(shù)據(jù)字符的寬度有關(guān)聯(lián),程序字符的寬度可以視應(yīng)用的需求而改變。
11.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于指令集是驅(qū)動前述中央處理器各部分線路所需的最小指令集,為了處理特殊的應(yīng)用工作,可以加入特別的線路并增加新指令以增進(jìn)中央處理器的工作效能。
12.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器有一組地址緩存器可以用來讀寫內(nèi)存。
13.根據(jù)權(quán)利要求3所述的多重字節(jié)微處理器架構(gòu),其特征在于中心分工器可以接受算術(shù)邏輯器所產(chǎn)生的結(jié)果,以及其它緩存器的數(shù)據(jù),選擇其中一項送到中心緩存器之前,在壓入動作時存入中心緩存器。
14.根據(jù)權(quán)利要求3所述的多重字節(jié)微處理器架構(gòu),其特征在于輔助分工器選擇中心緩存器或數(shù)據(jù)堆棧頂層的數(shù)據(jù),送到輔助緩存器之前,在壓入或彈出的動作時,將選出的數(shù)據(jù)存入輔助分工器。
15.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于地址處理單位包括一組存有下一個程序字符在內(nèi)存內(nèi)的地址的程序地址緩存器,一組在主時鐘上升沿時加載中心緩存器中的數(shù)據(jù),如果數(shù)據(jù)地址緩存器是在可加載的條件下的數(shù)據(jù)地址緩存器,一組選擇下一個程序字符的位置,在程序地址緩存器可加載的條件下,在主時鐘上升沿時加載程序緩存器的程序地址分工器,及一組在讀程序字符時,選程序地址緩存器中的地址送去內(nèi)存的存儲地址分工器。
16.根據(jù)權(quán)利要求15所述的多重字節(jié)微處理器架構(gòu),其特征在于程序地址分工器是由包含(1).程序地址緩存器內(nèi)地址加1以讀取下個程序字符;(2).程序地址加法器提供一個跳越的目標(biāo)地址;(3).外部裝置中斷信號產(chǎn)生的中斷程序地址;以及(4).返回地址緩存器的信號源中,選擇一項送到程序地址緩存器,以供子程序返回之用。
17.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于地址處理單位中可以額外包括一組數(shù)據(jù)地址分工器,由中心緩存器以及數(shù)據(jù)地址緩存器中數(shù)據(jù)加1的值中,選一項送給數(shù)據(jù)地址緩存器,用來支持?jǐn)?shù)據(jù)地址自動加1的存儲讀寫指令。
18.根據(jù)權(quán)利要求2所述的多重字節(jié)微處理器架構(gòu),其特征在于地址處理單位,包括一組返回地址緩存器,一組先入后出的返回堆棧,及一組返回地址分工器,上述地址處理單位支持一個壓入動作,將返回地址緩存器的數(shù)據(jù)壓入返回堆棧,而返回地址緩存器則加載上述返回地址分工器所選擇的數(shù)據(jù);上述地址處理單位,并且支持一個彈出動作,將返回堆棧頂層的數(shù)據(jù)彈出,存回返回地址緩存器;壓入和彈出的動作都是在主時鐘上升緣時進(jìn)行的。
19.根據(jù)權(quán)利要求18所述的多重字節(jié)微處理器架構(gòu),其特征在于返回地址分工器,是由用以進(jìn)行子程序呼叫程序的地址緩存器及以儲存數(shù)據(jù)處理器中的數(shù)據(jù)的中心緩存器二信號源,選擇一項送到上述返回地址緩存器。
20.根據(jù)權(quán)利要求18所述的多重字節(jié)微處理器架構(gòu),其特征在于返回地址分工器另加一信號源即是返回地址減值器,將返回地址緩存器減1的結(jié)果送到返回地址分工器,此項返回地址減值器可作為一個回路計數(shù)器以支持新增的回路指令。
21.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于指令序列單位包括一組指令計數(shù)器,一組指令緩存器,及一組指令譯碼器;上述指令計數(shù)器在一程序字符中最后一個指令執(zhí)行時清除為0,其它指令執(zhí)行時則加一,以自指令緩存器中選出下一指令送入上述指令譯碼器;由指令譯碼器產(chǎn)生控制信號,送至前述中央處理器各部單位執(zhí)行此指令;當(dāng)上述指令計數(shù)器內(nèi)容為0時,上述程序序列單位即由前述內(nèi)存中加載下一個程序字符而繼續(xù)執(zhí)行此字符中所有的指令。
22.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器中另外包含一具正反器,在執(zhí)行算術(shù)右移指令SHR時,將前述中心緩存器中最低位鎖入而將其內(nèi)容送到一輸出腳位上,此正反器可用以向外部終端機(jī)送出ASCII信號。
23.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器另外包含一具正反器,在執(zhí)行加法指令時將前述數(shù)據(jù)處理單位中加法器的溢位信號鎖入此正反器,在執(zhí)行算術(shù)右移指令SHR時則將一輸入腳位元上的信號鎖入此正反器中,此正反器的內(nèi)容則供給溢位跳越指令BC決定是否執(zhí)行跳越動作;此正反器因此可支持多字符的算術(shù)運(yùn)算及由外部終端機(jī)輸入ASCII信號。
24.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器另外包含一組雙整數(shù)右移器,其上半在前述數(shù)據(jù)地址緩存器最低位是1時接受前述數(shù)據(jù)處理器中加法器的結(jié)果,而在數(shù)據(jù)緩存器最低位為0時接受中心緩存器的內(nèi)容,雙整數(shù)右移器的下半則接受數(shù)據(jù)地址緩存器的內(nèi)容,在執(zhí)行步進(jìn)乘法指令MUL時,雙整數(shù)右移移器向右移1位,而其結(jié)果則再鎖入中心緩存器及數(shù)據(jù)地址緩存器,此組雙整數(shù)右移器用以支持步進(jìn)乘法指令。
25.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器另外包含一組雙整數(shù)左移器,其上半在數(shù)據(jù)處理單位中加法器的溢位為1時接受加法器的結(jié)果,若溢位為0時則接中心緩存器的內(nèi)容,此雙整數(shù)左移器的下半則接受數(shù)據(jù)地址緩存器的內(nèi)容,在執(zhí)行步進(jìn)除法指令時,此雙整數(shù)左移器向左移一位,其結(jié)果鎖入中心緩存器及數(shù)據(jù)地址緩存器,此組雙整數(shù)左移器用以支持步進(jìn)除法指令。
26.根據(jù)權(quán)利要求1所述的多重字節(jié)微處理器架構(gòu),其特征在于中央處理器另外包含一組中斷處理器,當(dāng)中央處理器允許外部裝置的中斷請求時,及前述程序序列單位在從內(nèi)存中讀取下一程序字符時產(chǎn)生中斷,而由中斷輸入腳的狀態(tài)產(chǎn)生一個中斷服務(wù)地址,執(zhí)行一子程序呼叫指令跳越到此中斷服務(wù)地址提供中斷服務(wù)。
全文摘要
本發(fā)明涉及一種使用最精簡指令的多重字節(jié)微處理器架構(gòu)。主要是利用一組小于二的五次方個簡單有效(efficient)卻不能以其它指令合成而取代的正交性(orthogonal)指令集,及一個包含有二個堆棧(stack),包括一個使子程序可以結(jié)構(gòu)化地呼叫子程序的返回堆棧(Integral return stack),和另一個可以在子程序之間方便地傳遞參數(shù)的參數(shù)堆棧(Integra parameter stack),與具有二個控制信號,包括一個主時鐘脈沖(Master clock signal),和一個重設(shè)信號(External reset signal)的中央處理器(CPU),使得每一個指令都可以在一個時鐘脈沖(Singl eclock cycle)內(nèi)完成處理工作,明顯地增加指令密度和指令執(zhí)行速度,并減少停留在芯片的面積及耗電量,使架構(gòu)中隨時可以增加許多空間以容納新指令,以適應(yīng)新增的功能及硬件裝置。
文檔編號G06F9/42GK1737749SQ200410058230
公開日2006年2月22日 申請日期2004年8月17日 優(yōu)先權(quán)日2004年8月17日
發(fā)明者陳昌江 申請人:易符智慧科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1