專利名稱:指令控制拼裝方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)體系結(jié)構(gòu)、計算機(jī)指令系統(tǒng)及其譯碼控制領(lǐng)域,特別涉及指令串并行編碼控制方法、以及一種實(shí)現(xiàn)指令控制操作串并行的方法及其裝置。
計算機(jī)面向的實(shí)際問題求解過程中存在著串并行兩種操作模式,所謂串行操作模式是指由于資源相關(guān)或數(shù)據(jù)相關(guān)而順序執(zhí)行若干操作的模式;所謂并行操作模式是指資源不相關(guān)、數(shù)據(jù)不相關(guān)的若干操作同時執(zhí)行的模式。由于當(dāng)前軟件開發(fā)基于串行的抽象模型進(jìn)行,因此在現(xiàn)有程序設(shè)計環(huán)境下不能用算法語言表達(dá)問題求解過程所固有的串并行特征,致使軟件開銷增大、解題效率降低。
當(dāng)前RISC/CISC體系結(jié)構(gòu)提供了大量可并行使用的資源,為了充分利用這些資源,提高指令級的并行性,RISC/CISC采用的方法包括軟硬兩個方面在軟件方面采用了優(yōu)化編譯器的方法,即針對高級語言描述串行程序進(jìn)行分析,發(fā)現(xiàn)操作過程的串并行特征,重排操作的執(zhí)行順序,以支持硬件對于并行操作模式的處理。但是,串行程序本身已經(jīng)掩蓋了原問題求解過程中的串并行特征,而優(yōu)化編譯器又不清楚處理對象的語義信息,因此很難全面發(fā)掘求解過程所固有的串并行特征。
在硬件方面RISC/CISC采取了預(yù)測技術(shù)、亂序技術(shù)和微碼技術(shù)等控制程序流中的串并行操作過程。由此產(chǎn)生現(xiàn)有的硬件系統(tǒng)中必須增加高速緩存及其控制電路或增加程序規(guī)模、譯碼技術(shù)復(fù)雜、控制電路規(guī)模增大、譯碼延時時間長等諸多問題。如《POWER PC概念、體系結(jié)構(gòu)于設(shè)計》第20頁(周長春等譯 電子工業(yè)出版社)所描述的那樣,RSIC體系譯碼電路占總規(guī)模的10%,CISC體系譯碼電路占總電路規(guī)模的50%以上。RISC與CISC的譯碼周期均至少為一個指令周期,且必須使用一級和二級高速緩存存貯技術(shù)。
還有一種方法是超長指令字(VLIW方法)。該方法利用優(yōu)化編譯器發(fā)現(xiàn)串行程序中的串并行特征,將串行操作和并行操作按照操作執(zhí)行的先后順序排列在超長指令字中,串行執(zhí)行的操作被順序排列在一個指令字序列中,并行執(zhí)行的操作,被并行排列在一條指令字中。這種方法的問題是在執(zhí)行串行操作的指令流中,因串行操作的多變性、相關(guān)性造成指令的順序排列的約束,由此使得超長指令字序列中有很多指令段空閑;而在執(zhí)行并行操作的指令字中,因數(shù)據(jù)和資源的不相關(guān)性,使得超長指令字中的指令段非常飽滿,有時實(shí)際問題求解過程中存在有更大的并行性,但最終由于機(jī)器總線寬度的限制,很多可并行的操作不能排列在一條指令中,結(jié)果是增加了實(shí)現(xiàn)一個程序的指令條數(shù),使系統(tǒng)的效率降低。另外這種方法對優(yōu)化編譯器有更大的依賴性,致使優(yōu)化編譯器目前存在的技術(shù)問題顯得更為突出。
可見,有效地反映解題過程中固有的串并行模式、充分利用資源的并行特征以實(shí)現(xiàn)高效問題求解的思想受到了傳統(tǒng)的計算機(jī)體系結(jié)構(gòu)及其設(shè)計方法的約束,由此傳統(tǒng)的計算機(jī)系統(tǒng)結(jié)構(gòu)要么花費(fèi)軟件的代價,開發(fā)復(fù)雜的優(yōu)化編譯器的設(shè)計環(huán)境,以提高系統(tǒng)執(zhí)行效率,要么花費(fèi)大量的硬件代價,以復(fù)雜的和成倍增長的硬件規(guī)模來支持計算機(jī)系統(tǒng)基本操作類型的需求。即便如此,現(xiàn)有的計算機(jī)系統(tǒng)中在執(zhí)行基本操作類型的程序流中也很難做到將串行操作和并行操作有機(jī)組合成,在一個時刻執(zhí)行更多個并行操作的效果。
因此將數(shù)據(jù)或資源相關(guān)的串行操作和數(shù)據(jù)、資源不相關(guān)的并行操作有效組合問題、這種組合與重復(fù)操作、分支操作并行組合的問題、以及在執(zhí)行中動態(tài)增加指令寬度以同時執(zhí)行更多個并行操作的問題等,已成為當(dāng)前體系結(jié)構(gòu)設(shè)計要解決的關(guān)鍵問題,也是硬件譯碼控制電路日趨復(fù)雜、規(guī)模日趨增大的原因之一。
本發(fā)明的目的是1.提供一種指令控制拼裝方法及其裝置,并利用指令控制拼裝方法及其裝置實(shí)現(xiàn)一種指令寬度動態(tài)可變的操作拼裝控制指令。利用該操作拼裝控制指令達(dá)到如下目的[1]利用該操作拼裝控制指令及其譯碼控制裝置可將數(shù)據(jù)相關(guān)的串行操作過程相關(guān)的操作拼裝在一條指令中,通過標(biāo)識保證操作語義不變,從而減少程序的空間開銷、簡化程序設(shè)計、減少取指瓶頸的壓力的目的;[2]利用該操作拼裝控制指令及其譯碼控制裝置,通過編碼的方法,在不增加機(jī)器總線寬度、不增加每條指令的執(zhí)行時間和譯碼控制電路延時的前提下,增加操作的吞吐量,減少實(shí)現(xiàn)一個程序的指令數(shù),從而提高機(jī)器執(zhí)行效率。利用該操作拼裝控制指令及其譯碼控制裝置可將資源、數(shù)據(jù)相關(guān)或無關(guān)的重復(fù)串行操作或重復(fù)并行操作過程,以基本操作形式拼裝到指令字序列中,通過內(nèi)部標(biāo)識存貯、并與后續(xù)取入的串并行操作編碼動態(tài)拼裝執(zhí)行,從而達(dá)到了執(zhí)行過程中的重復(fù)操作控制被獨(dú)立出來執(zhí)行,在不增加指令寬度、不增加取指周期的前提下實(shí)現(xiàn)重復(fù)操作和其他操作的重組并行控制的目的。從而提高機(jī)器的并行控制能力,提高程序的執(zhí)行效率。
2.揭示一種以簡單的硬件電路直接支持操作拼裝控制指令對數(shù)據(jù)和資源相關(guān)或無關(guān)的操作進(jìn)行指令拼裝控制和內(nèi)外操作拼裝控制的執(zhí)行方法,即將并行執(zhí)行的操作編碼、或串行執(zhí)行的操作編碼、或重復(fù)執(zhí)行的編碼拼裝在操作拼裝控制指令中,或并行執(zhí)行、或裝載到內(nèi)部標(biāo)識寄存器中,在內(nèi)外操作標(biāo)識控制下,使外部操作拼裝控制指令和內(nèi)部標(biāo)識中的操作編碼在資源、數(shù)據(jù)允許時被串行、或并行、或重復(fù)執(zhí)行。從而減少程序的時空間代價,減少取指瓶頸的壓力,提高機(jī)器的執(zhí)行效率。
一種指令控制拼裝的方法,其特征在于,該方法包括以下步驟一個指令編碼步驟,用于設(shè)計操作拼裝控制指令的指令編碼,所述操作拼裝控制指令包括一個或一個以上的順序指令字,每個指令字包括指令格式控制域編碼、指令段格式控制域編碼、指令段執(zhí)行方式控制域編碼和多個指令段編碼;每個所述指令段編碼是在所述指令格式控制域編碼和所述指令段格式控制域編碼約束下對應(yīng)于功能部件的操作域編碼;一個操作拼裝控制指令接收步驟,用于順序接收所述操作拼裝控制指令的一個或若干個指令字編碼;一個格式譯碼步驟,用于順序?qū)λ霾僮髌囱b控制指令的每個指令字中的所述指令格式控制域編碼、所述指令段格式控制域編碼譯碼,并從指令字中剝離出各個操作域編碼、及所述指令段執(zhí)行方式控制域編碼;一個內(nèi)部操作標(biāo)識步驟,用于根據(jù)所述指令段執(zhí)行方式控制域編碼將要求不立即執(zhí)行的操作域編碼存貯在操作域內(nèi)部編碼寄存器組中、設(shè)置并維護(hù)操作域內(nèi)部編碼控制標(biāo)識;一個拼裝重組步驟,用于針對各個操作域?qū)⒋尜A在操作域內(nèi)部編碼寄存器組中的各個編碼與從外部輸入的同一操作域的編碼實(shí)行拼裝重組,產(chǎn)生各個操作域的當(dāng)周期執(zhí)行編碼及其使能信號;以及,一個輸出步驟,用于輸出經(jīng)拼裝重組的各個操作域的編碼及其使能信號。
一種指令控制拼裝裝置,可響應(yīng)多位操作拼裝控制指令外部存貯方式,可響應(yīng)多位內(nèi)部操作拼裝控制指令寄存器存貯方式,使該操作拼裝控制指令作用于拼裝控制裝置,實(shí)現(xiàn)串并行操作、重復(fù)操作的各種拼裝執(zhí)行模式,其特征在于,包括以下部件配合該裝置的多位操作拼裝控制指令存貯器、寄存器的指令和數(shù)據(jù)輸入方式,一個用于接收操作拼裝控制指令的操作拼裝控制指令接收部件;配合所述操作拼裝控制指令接收部件的一個格式譯碼部件,用于對操作拼裝控制指令中的所述指令格式控制域編碼、所述指令段格式控制域編碼進(jìn)行譯碼,并從操作拼裝控制指令中剝離操作域編碼、所述指令段拼裝方式控制域的編碼;配合所述格式譯碼部件的用于實(shí)現(xiàn)不立即執(zhí)行的操作編碼存貯、操作域執(zhí)行方式存貯、內(nèi)部編碼執(zhí)行控制信號生成的一個內(nèi)部編碼標(biāo)識部件;配合所述內(nèi)部操作標(biāo)識部件的一個拼裝重組部件,用于將各個操作域的存貯在所述內(nèi)部編碼標(biāo)識部件中的各個操作編碼與外來指令中的同一操作域的操作編碼進(jìn)行重組,產(chǎn)生該操作域的當(dāng)周期執(zhí)行的操作編碼及該操作域的使能信號;以及,一個用于輸出各個操作域編碼及其使能信號的輸出部件。
本發(fā)明的一個優(yōu)點(diǎn)是指令控制拼裝的方法及其裝置可以減少程序的時空開銷,提高程序的執(zhí)行效率。具體而言,可以將一個長度超過指令寬度的、控制多個執(zhí)行部件并行操作的編碼,分解后通過先行操作拼裝控制指令的指令字裝載到芯片內(nèi)部的內(nèi)部操作標(biāo)識中,在執(zhí)行條件滿足時執(zhí)行,從而增加并行操作的吞吐量,減少了指令空間的占用,減少了取指時間,提高了機(jī)器的并行操作能力;也可將多個串行相關(guān)操作的編碼,分解后壓縮到一條操作拼裝控制指令的指令字中,同時裝載到芯片內(nèi)部操作標(biāo)識中,通過執(zhí)行時刻的控制保證操作語義不變,從而精減了指令字序列,減少了指令空間的占用。
本發(fā)明的另一個優(yōu)點(diǎn)是操作拼裝控制指令在其指令編碼中包含了用于拼裝控制的格式控制編碼、指令執(zhí)行方式控制編碼等,在這些控制編碼作用下,操作編碼可以在指定時間直接實(shí)現(xiàn)對執(zhí)行部件的控制,從而減少了譯碼延時。
本發(fā)明的另一個優(yōu)點(diǎn)是操作拼裝控制指令外部輸入的編碼序列與內(nèi)部預(yù)先裝載的編碼可以拼裝、并可直接作用于執(zhí)行部件中,由此使譯碼電路減少到整體電路規(guī)模的5%以下,同時降低了譯碼電路的復(fù)雜程度,從而縮短設(shè)計周期。
本發(fā)明的另一個優(yōu)點(diǎn)是經(jīng)操作拼裝控制指令的拼裝控制,使外部操作拼裝控制指令的指令字序列與內(nèi)部預(yù)先裝載的編碼并行執(zhí)行或重組執(zhí)行。這種內(nèi)部外部指令的拼裝使得操作編碼序列通過分解和重組構(gòu)成的操作拼裝控制指令具有高層語義關(guān)系,能夠有效地化簡編譯器的設(shè)計,精簡程序規(guī)模,為應(yīng)用人員提供了靈活的語法、語用環(huán)境,同時提高了整個系統(tǒng)程序執(zhí)行效率。
圖1是本發(fā)明的實(shí)現(xiàn)拼裝的4個指令段的操作拼裝控制指令格式示意圖;圖2是本發(fā)明的實(shí)現(xiàn)拼裝的指令控制拼裝裝置的總體結(jié)構(gòu)圖;圖3是本發(fā)明的實(shí)現(xiàn)拼裝的操作拼裝控制指令接收部件結(jié)構(gòu)圖;圖4a是本發(fā)明的實(shí)現(xiàn)拼裝的格式譯碼部件結(jié)構(gòu)圖;圖4b是本發(fā)明的實(shí)現(xiàn)拼裝的指令段格式控制域譯碼部件結(jié)構(gòu)圖;圖4c是本發(fā)明的實(shí)現(xiàn)拼裝的操作域剝離部件結(jié)構(gòu)圖;圖4d是本發(fā)明的實(shí)現(xiàn)拼裝的操作域使能部件結(jié)構(gòu)圖;圖4e是本發(fā)明的實(shí)現(xiàn)拼裝的執(zhí)行方式控制域剝離部件結(jié)構(gòu)圖;圖5a是本發(fā)明的實(shí)現(xiàn)拼裝的內(nèi)部操作標(biāo)識部件結(jié)構(gòu)圖;圖5b是本發(fā)明的實(shí)現(xiàn)拼裝的操作域內(nèi)部編碼寄存器組結(jié)構(gòu)圖;圖5c是本發(fā)明的實(shí)現(xiàn)拼裝的操作域內(nèi)部編碼控制標(biāo)識部件結(jié)構(gòu)圖;圖5d是本發(fā)明的實(shí)現(xiàn)拼裝的內(nèi)部執(zhí)行狀態(tài)標(biāo)識部件結(jié)構(gòu)圖;圖6a是本發(fā)明的實(shí)現(xiàn)拼裝的拼裝重組部件結(jié)構(gòu)圖;圖6b是本發(fā)明的實(shí)現(xiàn)拼裝的拼裝重組控制部件結(jié)構(gòu)圖;圖6c是本發(fā)明的實(shí)現(xiàn)拼裝的拼裝重組選通部件結(jié)構(gòu)圖7是本發(fā)明的實(shí)現(xiàn)拼裝的流程圖;圖8a是本發(fā)明的一個程序?qū)嵗牟僮髁鲌D;圖8b是本發(fā)明的實(shí)現(xiàn)所述程序?qū)嵗牟僮髌囱b控制指令字中的操作域編碼圖;以及圖8c是本發(fā)明的實(shí)現(xiàn)所述程序?qū)嵗牟僮髌囱b控制指令執(zhí)行時序圖;本發(fā)明的實(shí)現(xiàn)基于一種操作拼裝控制指令。圖1表示的操作拼裝控制指令格式包括1)指令格式控制域11每個指令格式中只有一個指令格式控制域11,用于定義操作拼裝控制指令的構(gòu)成,即所包含的指令段數(shù)、每個指令段、及其指令段格式控制域、指令段執(zhí)行方式控制域的寬度與位置;2)指令段格式控制域12每個指令格式中有若干個指令段格式控制域12,用于標(biāo)識對應(yīng)的指令段的編碼所作用的功能部件,指令段格式控制域12的寬度決定了對應(yīng)的指令段可以替換控制的功能部件的個數(shù);3)指令段13每個指令格式中有若干個指令段13,其數(shù)目與指令段格式控制域12的個數(shù)相同,用于實(shí)現(xiàn)對功能部件的控制。配合指令段格式控制域12的編碼,指令段13對應(yīng)于不同的功能部件,即成為實(shí)現(xiàn)不同操作的操作域。
4)指令段執(zhí)行方式控制域14每個指令格式中有若干個指令段執(zhí)行方式控制域14,其數(shù)目與指令段格式控制域12的個數(shù)相同,用于標(biāo)識對應(yīng)指令段13配合指令段格式控制域12編碼的操作域的執(zhí)行方式、或開始執(zhí)行的時刻、或開始執(zhí)行的條件,指令段執(zhí)行方式控制域14可以缺省,缺省時對應(yīng)指令段13配合指令段格式控制域12編碼的操作域在當(dāng)周期無條件執(zhí)行。
操作拼裝控制指令由若干符合圖1所示操作拼裝控制指令格式的指令字順序組成,運(yùn)用圖1所述的操作拼裝控制指令格式設(shè)計一個拼裝操作控制指令編碼的步驟如下1)根據(jù)操作拼裝控制指令所要實(shí)現(xiàn)的功能,設(shè)計操作流程,選擇功能部件,并以控制這些功能部件的操作域作為實(shí)現(xiàn)該操作拼裝控制指令的操作域集合。
2)根據(jù)操作拼裝控制指令所要實(shí)現(xiàn)的功能,對所述選定的操作域,在其編碼表中選擇對應(yīng)于該操作拼裝控制指令功能所需操作的編碼作為該操作拼裝控制指令中該操作域的編碼。
3)按照所要實(shí)現(xiàn)的操作拼裝控制指令的功能,將所述操作域集合中的各個操作域按照執(zhí)行的先后順序和串并行關(guān)系排列成為若干并行操作域組成的行的序列,每一個并行操作域組成的行表示在同一時刻并行執(zhí)行的操作域。
4)進(jìn)行操作域拼裝處理,操作域拼裝處理依賴于指令段執(zhí)行方式控制域14編碼。
假設(shè)指令段執(zhí)行方式控制域14編碼有以下形式<
其中xxx為3位任意二進(jìn)制編碼。另外,還可以有其它的指令段執(zhí)行方式控制域14的編碼和定義方式來表示相應(yīng)操作域的執(zhí)行方式。
對于并行操作域組成的行寬度沒有超過機(jī)器總線寬度的情況1)以在指令段13中可替換出現(xiàn)的所有操作域的編碼寬度的最大值作為指令段13寬度,以所述選定的各個操作域的編碼作為指令段13的編碼;2)指令段執(zhí)行方式控制域14設(shè)置為“當(dāng)周期無條件執(zhí)行”對應(yīng)的編碼。
3)對指令段13中可以拼裝出現(xiàn)的操作域的個數(shù)進(jìn)行編碼,并以該編碼寬度作為指令段格式控制域12的寬度;4)對于所述指令段13任意給出可以拼裝出現(xiàn)的操作域的順序,并以所述選定操作域的順序號作為指令段格式控制域12編碼;5)對整個指令系統(tǒng)允許的指令段劃分方式的數(shù)量進(jìn)行編碼,并以該編碼寬度作為指令格式控制域11的寬度;6)任意給出所述整個指令系統(tǒng)允許的指令段劃分方式的排列順序,并以實(shí)現(xiàn)該操作拼裝控制指令的該指令字的指令段劃分方式對應(yīng)的編碼作為指令格式控制域11編碼。
對于并行操作域組成的行寬度超過機(jī)器總線寬度的情況1)在機(jī)器總線寬度約束下,在并行操作域組成的行的操作域集合中選擇若干個操作域排列在一個指令字中;2)以在指令段13中可替換出現(xiàn)的所有操作域的編碼寬度的最大值作為指令段13寬度,以所述選定的各個操作域的編碼作為指令段13的編碼;3)指令段執(zhí)行方式控制域14設(shè)置為“當(dāng)周期無條件執(zhí)行”對應(yīng)的編碼。
4)對指令段13中可以拼裝出現(xiàn)的操作域的個數(shù)進(jìn)行編碼,并以該編碼寬度作為指令段格式控制域12的寬度;5)對于所述指令段13任意給出可以拼裝出現(xiàn)的操作域的順序,并以所述選定操作域的順序號作為指令段格式控制域12編碼;6)對整個指令系統(tǒng)允許的指令段劃分方式的數(shù)量進(jìn)行編碼,并以該編碼寬度作為指令格式控制域11的寬度;7)任意給出所述整個指令系統(tǒng)允許的指令段劃分方式的排列順序,并以實(shí)現(xiàn)該操作拼裝控制指令的該指令字的指令段劃分方式對應(yīng)的編碼作為指令格式控制域11編碼;8)在機(jī)器總線寬度約束下,在并行操作域組成的行的操作域集合剩余的操作域中選擇一個操作域排列在前面某個指令字的空閑指令段13中,并將該指令段13對應(yīng)的指令段執(zhí)行方式控制域14設(shè)置為10-xxx,表示指令段13中操作域延時xxx個周期執(zhí)行,從而保證該指令段13中的這個操作域與它原來所在的并行操作域組成的行同時執(zhí)行;或?qū)⒃撝噶疃?3對應(yīng)的指令段執(zhí)行方式控制域14設(shè)置為00-xxx,xxx表示該操作域被激活執(zhí)行的條件,以此實(shí)現(xiàn)操作拼裝控制指令規(guī)定的各個操作域執(zhí)行的順序關(guān)系;
9)重復(fù)步驟8),直到所述并行操作域組成的行操作域集合變?yōu)榭铡?br>
對于重復(fù)操作域進(jìn)行1)在重復(fù)操作開始時刻對應(yīng)的指令字中,將重復(fù)操作域排列在寬度滿足要求的空閑指令段13上,并將該指令段13對應(yīng)的指令段執(zhí)行方式控制域14設(shè)置為11-xxx,xxx為指令段13中操作域重復(fù)執(zhí)行的間隔周期數(shù),從而保證該指令段13中的這個操作域每隔xxx個周期重復(fù)執(zhí)行一次;2)在重復(fù)操作結(jié)束時刻對應(yīng)的操作拼裝控制指令的指令字中,將重復(fù)操作域排列在空閑指令段13上,并將該指令段13對應(yīng)的指令段執(zhí)行方式控制域14設(shè)置為11-000,表示該指令段13中的這個操作域重復(fù)執(zhí)行結(jié)束。
對于沒有充滿的指令字進(jìn)行壓縮,進(jìn)行在機(jī)器總線寬度約束下,將相鄰的若干指令字中的操作域排列在一個指令字中,按照操作執(zhí)行的先后順序?qū)⒏鱾€指令段13對應(yīng)的指令段執(zhí)行方式控制域設(shè)置為01-xxx,xxx表示指令段13中的操作域執(zhí)行的順序號。
實(shí)現(xiàn)拼裝的操作拼裝控制指令格式中可以包含任意多個指令段。圖1只示出了包含4個指令段的操作拼裝控制指令格式。其他段數(shù)的操作拼裝控制指令格式及其指令編碼方法類似。
圖2是指令控制拼裝裝置的總體結(jié)構(gòu)圖。包括操作拼裝控制指令接收部件21,格式譯碼部件22,內(nèi)部操作標(biāo)識部件23,拼裝重組部件24,輸出部件25。其中,操作拼裝控制指令接收部件21以存貯方式接收來自存貯器的操作拼裝控制指令,或以寄存器方式接收來自于內(nèi)部寄存器堆的操作拼裝控制指令,并形成可供譯碼執(zhí)行的滿足所述操作拼裝控制指令格式的指令編碼;格式譯碼部件22接收來自操作拼裝控制指令接收部件21的操作拼裝控制指令編碼,經(jīng)過與上述操作拼裝控制指令格式配合的格式譯碼,剝離出指令中包含的操作域、執(zhí)行方式控制域,并形成所有操作域的使能信號;內(nèi)部操作標(biāo)識部件23接收來自格式譯碼部件22的操作域、其使能信號、所有執(zhí)行方式控制域、以及指令格式控制域譯碼結(jié)果和指令段格式控制域譯碼結(jié)果,將不立即執(zhí)行的操作域編碼寫入操作域內(nèi)部編碼寄存器組,初始化設(shè)置操作域內(nèi)部編碼控制標(biāo)識,并隨時更新操作域內(nèi)部編碼控制標(biāo)識;拼裝重組部件24從內(nèi)部操作標(biāo)識部件23接收內(nèi)部編碼、內(nèi)部編碼控制標(biāo)識,形成該操作域的編碼及其拼裝執(zhí)行使能信號;輸出部件25從拼裝重組部件24接收操作域的編碼及其拼裝執(zhí)行使能信號作為指令控制拼裝裝置的最終輸出。
圖3是指令控制拼裝裝置的操作拼裝控制指令接收部件21的結(jié)構(gòu)圖。包括指令拼裝標(biāo)識寄存器30、指令拼裝部件31和指令寄存器32。指令拼裝標(biāo)識寄存器是一個可設(shè)置的狀態(tài)寄存器,表示操作拼裝控制指令的來源。指令拼裝部件31是一個選通器,它以存貯方式從一個外部存貯器接收操作拼裝控制指令,或以寄存器方式從一個內(nèi)部寄存器堆接收操作拼裝控制指令,在預(yù)先設(shè)定的內(nèi)部指令拼裝標(biāo)識寄存器狀態(tài)的控制下選擇其中一路構(gòu)成實(shí)際執(zhí)行的操作拼裝控制指令的指令字,裝載到指令寄存器32中。
圖4a是配合圖1所述操作拼裝控制指令格式的格式譯碼部件22結(jié)構(gòu)圖。格式譯碼部件22接收操作拼裝控制指令接收部件21輸出的操作拼裝控制指令的指令字,剝離出操作域、指令段執(zhí)行方式控制域,并產(chǎn)生所有操作域的使能信號。包括指令格式控制域譯碼部件41,指令段格式控制域譯碼部件42,操作域剝離部件43,執(zhí)行方式控制域剝離部件44,操作域使能部件45。指令格式控制域譯碼部件41是一個譯碼器,接收操作拼裝控制指令的指令字中的指令格式控制域11,產(chǎn)生指令格式控制域的譯碼信號,指令格式控制域譯碼部件41的結(jié)構(gòu)由指令格式控制域的寬度確定(如2-4譯碼器、3-8譯碼器等);指令段格式控制域譯碼部件42接收操作拼裝控制指令的指令字中的各個指令段格式控制域12,產(chǎn)生指令段格式控制域的譯碼信號;操作域剝離部件43在指令格式控制域譯碼部件41、指令段格式控制域譯碼部件42的譯碼結(jié)果控制下,從操作拼裝控制指令的指令字中剝離各個操作域;執(zhí)行方式控制域剝離部件44在指令格式控制域譯碼部件41、指令段格式控制域譯碼部件42的譯碼結(jié)果控制下,從操作拼裝控制指令的指令字中剝離各個指令段執(zhí)行方式控制域14;操作域使能部件45接收指令格式控制域譯碼部件41、指令段格式控制域譯碼部件42輸出的結(jié)果,產(chǎn)生各個操作域在所接收的操作拼裝控制指令的指令字中是否使能的信號。
圖4b是配合所述各種操作拼裝控制指令格式的指令段格式控制域譯碼部件42結(jié)構(gòu)圖。指令段格式控制域譯碼部件42由配合操作拼裝控制指令中指令段格式控制域12的一組指令段格式控制域譯碼器46組成,每個指令段格式控制域譯碼器46接收一個指令段格式控制域12,產(chǎn)生該指令段格式控制域12譯碼信號,每個指令段格式控制域譯碼器46的的結(jié)構(gòu)由其接收的指令段格式控制域12的寬度確定(如2-4譯碼器、3-8譯碼器)。
圖4c是配合所述操作拼裝控制指令格式的操作域剝離部件43。操作域剝離部件43由配合各個指令段所有可替換控制的功能部件的操作域的一組操作域剝離選通器47組成,每個操作域剝離選通器47連接一個操作域在各種操作拼裝控制指令格式中的能夠替換出現(xiàn)的所有指令段13,在指令格式控制域譯碼部件41和指令段格式控制域譯碼部件42輸出結(jié)果的編碼組合控制下,從所接收的操作拼裝控制指令的指令字中剝離出該操作域。
圖4d是配合所述操作拼裝控制指令格式的操作域使能部件45。操作域使能部件45由配合操作拼裝控制指令中允許出現(xiàn)的操作域的一組操作域使能邏輯48組成,每個操作域使能邏輯48接收指令格式控制域譯碼部件41和指令段格式控制域譯碼部件42的該操作域?qū)?yīng)的譯碼結(jié)果,通過邏輯組合,產(chǎn)生該操作域配合所接收的操作拼裝控制指令的指令字的操作域使能信號。
圖4e是配合操作拼裝控制指令格式的執(zhí)行方式控制域剝離部件44。執(zhí)行方式控制域剝離部件44由配合操作拼裝控制指令格式中各個指令段執(zhí)行方式控制域14的一組執(zhí)行方式控制域選通器49組成,每個執(zhí)行方式控制域選通器49接收一個指令段執(zhí)行方式控制域14在各種操作拼裝控制指令格式中的所有可能的出現(xiàn),在指令格式控制域譯碼部件41輸出結(jié)果的控制下,從所接收的操作拼裝控制指令的指令字中剝離指令段執(zhí)行方式控制域14。
圖5a是配合所述操作拼裝控制指令格式的內(nèi)部操作標(biāo)識部件23結(jié)構(gòu)圖。內(nèi)部操作標(biāo)識部件23接收來自格式譯碼部件22的各個操作域及其使能信號、指令段執(zhí)行方式控制域14、并接收來自格式譯碼部件22的指令格式控制域11譯碼結(jié)果和指令段格式控制域12譯碼結(jié)果,產(chǎn)生各個操作域的內(nèi)部編碼組、內(nèi)部編碼控制標(biāo)識。內(nèi)部操作標(biāo)識部件23包括一組操作域內(nèi)部編碼寄存器組51,一組操作域內(nèi)部編碼控制標(biāo)識52。一個操作域內(nèi)部編碼寄存器組51從格式譯碼部件22接收一個操作域及其使能信號,在來自格式譯碼部件22的指令格式控制域11譯碼結(jié)果和指令段格式控制域12譯碼結(jié)果控制下,從格式譯碼部件22接收該操作域所在指令段13的指令段執(zhí)行方式控制域14編碼,當(dāng)該指令段執(zhí)行方式控制域14編碼表示所接收的操作域不在當(dāng)周期執(zhí)行時,該操作域編碼被設(shè)置到該操作域內(nèi)部編碼寄存器組51的一個寄存器中;一個操作域的操作域內(nèi)部編碼控制標(biāo)識52從格式譯碼部件22接收一個操作域的使能信號,同時在來自格式譯碼部件22的指令格式控制域11譯碼結(jié)果和指令段格式控制域12譯碼結(jié)果控制下,從格式譯碼部件22接收該操作域所在指令段13的指令段執(zhí)行方式控制域14編碼,當(dāng)該指令段執(zhí)行方式控制域14編碼表示所接收的操作域不在當(dāng)周期執(zhí)行時,該指令段執(zhí)行方式控制域14編碼被設(shè)置到該操作域內(nèi)部編碼控制標(biāo)識52中的與在內(nèi)部編碼寄存器組51中選定的寄存器對應(yīng)的執(zhí)行方式寄存器54和內(nèi)部執(zhí)行狀態(tài)標(biāo)識57中。
圖5b是一個操作域的操作域內(nèi)部編碼寄存器組51結(jié)構(gòu)圖。一個操作域內(nèi)部編碼寄存器組51由一組可以控制的內(nèi)部編碼寄存器53組成,與操作域內(nèi)部編碼控制標(biāo)識52中的執(zhí)行方式寄存器54一一對應(yīng),用于存貯該操作域在后續(xù)周期中拼裝執(zhí)行的編碼。對于一個使能的操作域,操作域內(nèi)部編碼寄存器51的一個內(nèi)部編碼寄存器53的控制方法是當(dāng)前面的內(nèi)部編碼寄存器53對應(yīng)的執(zhí)行方式寄存器54均表示對應(yīng)的內(nèi)部編碼不是當(dāng)周期執(zhí)行,而本內(nèi)部編碼寄存器53對應(yīng)的執(zhí)行方式寄存器54表示對應(yīng)的內(nèi)部編碼是當(dāng)周期執(zhí)行,則本內(nèi)部編碼寄存器53接收所述的操作域編碼。
圖5c是一個操作域內(nèi)部編碼控制標(biāo)識52結(jié)構(gòu)圖。一個操作域內(nèi)部編碼控制標(biāo)識52包括一個內(nèi)部執(zhí)行狀態(tài)標(biāo)識57,和一組對應(yīng)于內(nèi)部編碼寄存器53的執(zhí)行方式寄存器54、及其控制下的內(nèi)部編碼控制生成部件55、內(nèi)部編碼控制寄存器56。內(nèi)部執(zhí)行狀態(tài)標(biāo)識57是操作域的各種執(zhí)行方式相關(guān)的狀態(tài)或狀態(tài)位,它接收來自格式譯碼部件22的該操作域編碼所在指令段13的執(zhí)行段執(zhí)行方式控制域14,若指令段執(zhí)行方式控制域14的編碼表示該操作域編碼的執(zhí)行方式與時間有關(guān),如延時若干周期執(zhí)行,或按照一定的時間間隔重復(fù)執(zhí)行等,則指令段執(zhí)行方式控制域14被用來初始化內(nèi)部執(zhí)行狀態(tài)標(biāo)識57中對應(yīng)于操作編碼存入的內(nèi)部編碼寄存器53的執(zhí)行狀態(tài);執(zhí)行方式寄存器54用于接收來自格式譯碼部件22的該操作域編碼所在指令段13的指令段執(zhí)行方式控制域14編碼,并控制內(nèi)部編碼控制生成部件55生成該內(nèi)部編碼在每一時刻的執(zhí)行控制信號;內(nèi)部編碼控制生成部件55是一個選通器,在執(zhí)行方式寄存器54的控制下從內(nèi)部執(zhí)行狀態(tài)標(biāo)識57中選通一個狀態(tài)位作為內(nèi)部編碼的執(zhí)行控制信號;內(nèi)部編碼控制寄存器56用于存貯內(nèi)部編碼控制生成部件55產(chǎn)生的內(nèi)部編碼執(zhí)行控制信號。
圖5d是一個內(nèi)部執(zhí)行狀態(tài)標(biāo)識57的結(jié)構(gòu)圖。內(nèi)部執(zhí)行狀態(tài)標(biāo)識57包括對應(yīng)于操作域內(nèi)部編碼寄存器組51中的每一個內(nèi)部編碼寄存器53的一組由周期計數(shù)器58、判0邏輯59、狀態(tài)位寄存器510組成的內(nèi)部編碼執(zhí)行時間狀態(tài),其中周期計數(shù)器58接收來自格式譯碼部件的該操作域所在指令段13的指令段執(zhí)行方式控制域14編碼,假若其中包含了周期數(shù)編碼(如圖1說明中的延時執(zhí)行周期數(shù)編碼,重復(fù)執(zhí)行間隔周期數(shù)編碼等),則初始化對應(yīng)于該操作域編碼存入的內(nèi)部編碼寄存器53的周期計數(shù)器58,周期計數(shù)器58每周期遞減,當(dāng)作為延時周期計數(shù)器時,遞減到0為止,當(dāng)作為重復(fù)間隔數(shù)計數(shù)器時循環(huán)遞減,判0邏輯59產(chǎn)生周期計數(shù)器58值是否為0的信號,連接判0邏輯59的狀態(tài)位寄存器510寄存周期計數(shù)器判0信號;另外一組狀態(tài)位寄存器510直接接收來自被控的功能部件產(chǎn)生的信號,用于支持在功能部件運(yùn)行的某種狀態(tài)下進(jìn)行操作編碼拼裝的指令控制拼裝機(jī)制。
圖6a是配合操作拼裝控制指令的拼裝重組部件24的結(jié)構(gòu)圖。拼裝重組部件24接收來自格式譯碼部件22的各個操作域編碼及其使能信號,接收來自內(nèi)部操作標(biāo)識部件23的各個操作域的由先行指令取入并裝載在內(nèi)部的操作域內(nèi)部編碼、配合所接收的操作拼裝控制指令的指令字的各個操作域的執(zhí)行方式,產(chǎn)生各個操作域的操作編碼及其使能信號。拼裝重組部件24包括一個拼裝重組控制部件61、一個拼裝重組選通部件62、和一個拼裝重組操作使能部件63。其中,拼裝重組控制部件61用于接收各個操作域的來自格式譯碼部件22的使能信號和來自內(nèi)部操作標(biāo)識部件23的操作域內(nèi)部編碼控制標(biāo)識52的內(nèi)部編碼執(zhí)行控制信號,產(chǎn)生控制拼裝重組選通部件62的選通控制信號;拼裝重組選通部件62用于接收各個操作域的來自格式譯碼部件22的操作域編碼和來自內(nèi)部操作標(biāo)識部件23的操作域內(nèi)部編碼寄存器組51中的操作域內(nèi)部編碼,在拼裝重組控制部件61產(chǎn)生的選通控制信號的控制下產(chǎn)生各個操作域的當(dāng)周期執(zhí)行的編碼;拼裝重組操作使能部件63接收拼裝重組控制部件61產(chǎn)生的選通控制信號,分別對每個操作域選通控制信號的各位進(jìn)行邏輯組合,產(chǎn)生各個操作域的使能信號,操作域使能信號的產(chǎn)生邏輯為對于一個操作域,當(dāng)拼裝重組控制部件61產(chǎn)生的該操作域的選通控制信號中有1位有效時,操作域使能信號有效。
圖6b是拼裝重組控制部件61的結(jié)構(gòu)圖。拼裝重組控制部件61由一組拼裝選通控制信號生成邏輯64組成,一個拼裝選通控制信號生成邏輯64用于接收一個操作域的來自格式譯碼部件22的該操作域使能信號和來自內(nèi)部操作標(biāo)識部件23的操作域內(nèi)部編碼控制標(biāo)識52的所有內(nèi)部編碼執(zhí)行控制信號,產(chǎn)生拼裝重組的選通控制信號。拼裝重組選通控制信號的產(chǎn)生邏輯為對于任意一個操作域,若所接收的操作拼裝控制指令的指令字中該操作域使能、且其所在指令段13的指令段執(zhí)行方式控制域14表示該操作域編碼當(dāng)周期執(zhí)行,則選通來自格式譯碼部件22的該操作域編碼的選通信號有效;否則,若來自該操作域的一個內(nèi)部編碼寄存器53對應(yīng)的執(zhí)行方式寄存器54控制產(chǎn)生的內(nèi)部編碼執(zhí)行控制信號有效,則選通來自該操作域內(nèi)部編碼寄存器值的選通信號有效;若來自操作域的若干內(nèi)部編碼寄存器53對應(yīng)的執(zhí)行方式寄存器54控制產(chǎn)生的內(nèi)部編碼執(zhí)行控制信號有效,則選通來自其中排列在前的操作域內(nèi)部編碼寄存器值的選通信號有效;其余情況下,選通信號均無效。
圖6c是拼裝重組選通部件62的結(jié)構(gòu)圖。拼裝重組選通部件62由一組操作域拼裝重組選通器65組成,一個操作域拼裝重組選通器65用于接收一個操作域的來自格式譯碼部件22的該操作域編碼和來自內(nèi)部操作標(biāo)識部件23的該操作域的所有內(nèi)部編碼寄存器值,在拼裝重組控制部件61控制下選通產(chǎn)生該操作域的當(dāng)周期執(zhí)行的操作編碼。
圖7是配合所述操作拼裝控制指令格式和拼裝控制裝置的指令控制拼裝的流程圖。
步驟71,接收操作拼裝控制指令編碼。該步驟之前的步驟包括將所述格式的操作拼裝控制指令編碼裝載到外部存貯器或內(nèi)部寄存器步驟、和裝載指令拼裝標(biāo)識步驟;步驟71以存貯方式接收來自存貯器的操作拼裝控制指令的指令字編碼,或以寄存器方式接收來自內(nèi)部寄存器的操作拼裝控制指令的指令字編碼,并根據(jù)指令拼裝標(biāo)識選取其中一路指令構(gòu)成控制拼裝裝置的包括格式控制域編碼、執(zhí)行方式控制域編碼、操作域編碼的操作拼裝控制指令的指令字;步驟72,實(shí)現(xiàn)操作拼裝控制指令的格式譯碼,完成操作拼裝控制指令的指令字的指令格式控制域11和各個指令段格式控制域12的譯碼,在格式譯碼結(jié)果控制下剝離各個操作域的編碼、生成各個操作域的使能信號,并剝離指令段執(zhí)行方式控制域14編碼;對每個操作域進(jìn)行以下的步驟;步驟74,依據(jù)步驟72產(chǎn)生的該操作域所在指令段的指令段執(zhí)行方式控制域14編碼、和該操作域的使能信號,判斷該操作域編碼是否需要立即執(zhí)行,若不需立即執(zhí)行,則轉(zhuǎn)步驟75處理,否則轉(zhuǎn)步驟76處理;步驟75,接收不立即執(zhí)行的操作域編碼和該操作域所在指令段13的指令段執(zhí)行方式控制域14編碼,配合內(nèi)部操作標(biāo)識部件的狀態(tài),將操作域的不立即執(zhí)行的編碼存貯到該操作域的操作域內(nèi)部編碼寄存器組51,并用指令段執(zhí)行方式控制域14編碼初始化對應(yīng)的執(zhí)行方式寄存器54和內(nèi)部執(zhí)行狀態(tài)標(biāo)識57,步驟75還在每周期完成對所有操作域的所有內(nèi)部編碼寄存器53對應(yīng)的執(zhí)行控制信號更新;步驟76,接收指令中需要立即執(zhí)行的操作域編碼和操作域內(nèi)部編碼寄存器組51中的各個操作域的所有內(nèi)部編碼,根據(jù)格式譯碼步驟產(chǎn)生的該操作域的使能信號、執(zhí)行方式控制域編碼,和該操作域的各個內(nèi)部編碼執(zhí)行控制信號,從該操作域的各個編碼中選擇其一作為配合步驟71接收的操作拼裝控制指令的指令字和內(nèi)部操作標(biāo)識狀態(tài)的該操作域的編碼,并形成該操作域的使能信號,實(shí)現(xiàn)操作域的內(nèi)部編碼與接收的指令字中該操作域編碼的拼裝重組。
步驟77,輸出所有操作域的編碼及其使能信號。
圖8a是一個程序?qū)嵗牟僮髁鲌D;其中,每一個格子中是一個操作域的助記符和編碼。所述程序?qū)嵗δ転棰偃?個數(shù)到堆棧中、②同時計算int(x1*x2)+int(y1-y2)/2。INC為地址增量操作域,單周期執(zhí)行;LD為取數(shù)操作域,雙周期流水執(zhí)行;STACK為堆棧操作域,單周期執(zhí)行;FMUL為浮點(diǎn)乘法運(yùn)算操作域,3周期流水執(zhí)行;FAU為浮點(diǎn)加法操作域,3周期流水執(zhí)行;FPAI為浮點(diǎn)轉(zhuǎn)數(shù)轉(zhuǎn)整數(shù)操作域,單周期執(zhí)行;DSFT右移操作域,單周期執(zhí)行;DAU為定點(diǎn)加法運(yùn)算操作域,單周期執(zhí)行。圖8a表現(xiàn)了實(shí)現(xiàn)所述程序的操作序列,每一行中的操作域編碼在同一個周期內(nèi)并行執(zhí)行。由圖8a可見,每個周期執(zhí)行的操作域及操作域個數(shù)各異,而LD、INC、STACK三個操作域的一個串并行操作域序列被重復(fù)執(zhí)行,其余操作域按照一定的串并行順序執(zhí)行,且其中有些指令字并不飽滿,造成代碼的空間代價較大。假設(shè)機(jī)器總線寬度約束每個指令字中最多只能放置4個操作域,則需采用指令控制拼裝方法,將LD、INC、STACK操作域“每隔xxx個周期執(zhí)行1次”方式處理,其它操作域按照排序或延時“在xxx條件編碼對應(yīng)的狀態(tài)位為真時執(zhí)行”“延時xxx個周期執(zhí)行”等方式處理。圖8b是實(shí)現(xiàn)所述程序功能的各個指令字中操作域編碼圖,LD、INC、STACK操作域在指令段執(zhí)行方式控制域14為11-000的控制下重復(fù)執(zhí)行;FAU、FMUL操作在指令段執(zhí)行方式控制域14為00-000控制下當(dāng)周期執(zhí)行;FPAI操作域在指令段執(zhí)行方式控制域14為10-xxx的控制下延時xxx個周期執(zhí)行;DSFT操作域在指令段執(zhí)行方式控制域14為01-100控制下在本指令字中第四操作域執(zhí)行結(jié)束時執(zhí)行;DAU操作域在指令段執(zhí)行方式控制域14為00-011控制下在上一條指令字中的操作域均執(zhí)行結(jié)束時執(zhí)行。
圖8c是實(shí)現(xiàn)所述程序功能的操作拼裝控制指令序列的執(zhí)行時序。其中,PC+i(i=1、2、3、4、5、6)為指令地址,INSi(i=0、1、2、3、4、5、6)為輸入的操作拼裝控制指令。
指令段執(zhí)行方式控制編碼定義舉例如下
其中xxx為3位任意二進(jìn)制編碼。
圖中指令根據(jù)所述各個操作的時序特征以及操作相關(guān)關(guān)系,在每個指令字最多能夠排列4個操作域的約束下實(shí)現(xiàn)了所述功能。
INS0中各個指令段編碼及其執(zhí)行方式定義如下
INS1中各個指令段編碼及其執(zhí)行方式定義如
INS2中各個指令段編碼及其執(zhí)行方式定義如下
基于所述指令編碼,執(zhí)行過程如下周期T0當(dāng)所述操作拼裝控制指令接收部件21接收INS0后,格式譯碼部件22對指令格式控制域11和各個指令段格式控制域12進(jìn)行譯碼,并根據(jù)譯碼結(jié)果從該指令字中剝離出LD(101-0100)INC(10100)FMUL(01-00101-10101)FAU(00-00100-10100)操作域編碼,并產(chǎn)生這4個操作域使能信號,之后,格式譯碼部件22產(chǎn)生的操作域編碼和使能信號由內(nèi)部操作標(biāo)識部件23接收,在各個指令段執(zhí)行方式控制域14編碼控制下,將其中的LD(101-0100)INC(10100)編碼分別存入這些操作域的操作域內(nèi)部編碼寄存器51中,同時設(shè)置它們對應(yīng)的操作域內(nèi)部編碼控制標(biāo)識52;另外,執(zhí)行FMUL(01-00101-10101)計算(x1*x2),執(zhí)行FAU編碼(00-00100-10100)計算y1-y2;周期T1當(dāng)所述操作拼裝控制指令接收部件21接收INS1后,格式譯碼部件22對指令格式控制域11和各個指令段格式控制域12進(jìn)行譯碼,并根據(jù)譯碼結(jié)果從該指令字中剝離出DSFT(00-0001-10100)FPAI(00-10100)FPAI(00-10100)操作域編碼,并產(chǎn)生這些操作域使能信號,之后,格式譯碼部件22產(chǎn)生的操作域編碼和使能信號由內(nèi)部操作標(biāo)識部件23接收,在各個指令段執(zhí)行方式控制域14編碼控制下,將其中的DSFT(00-0001-10100)FPAI(00-10100)FPAI(00-10100)操作域編碼分別存入這些操作域的操作域內(nèi)部編碼寄存器51中,同時設(shè)置它們對應(yīng)的操作域內(nèi)部編碼控制標(biāo)識52;另外,配合內(nèi)部操作標(biāo)識部件23的狀態(tài),執(zhí)行LD(101-0100)取數(shù)、執(zhí)行INC(10100)取數(shù)地址加1;周期T2當(dāng)所述操作拼裝控制指令接收部件21接收INS2后,格式譯碼部件22對指令格式控制域11和各個指令段格式控制域12進(jìn)行譯碼,并根據(jù)譯碼結(jié)果從該指令字中剝離出STACK(01-10100)DAU(1010-01100-11000)操作域編碼,并產(chǎn)生這2個操作域使能信號,之后,格式譯碼部件22產(chǎn)生的操作域編碼和使能信號由內(nèi)部操作標(biāo)識部件23接收,在各個指令段執(zhí)行方式控制域14編碼控制下,將STACK(01-10100)DAU(1010-01100-11000)編碼存入相應(yīng)操作域的操作域內(nèi)部編碼寄存器組51中,同時設(shè)置它們對應(yīng)的操作域內(nèi)部編碼控制標(biāo)識52;另外,配合內(nèi)部操作標(biāo)識部件23的狀態(tài),執(zhí)行LD(101-0100)取數(shù)、執(zhí)行INC(10100)取數(shù)地址加1;周期T3譯碼執(zhí)行新取入指令I(lǐng)NS3,同時,配合內(nèi)部操作標(biāo)識部件23的狀態(tài),執(zhí)行LD(101-0100)取數(shù)、執(zhí)行INC(10100)取數(shù)地址加1,執(zhí)行STACK(01-10100)將取入的數(shù)據(jù)進(jìn)棧,并執(zhí)行T1周期取入的FPAI(00-10100)將y1-y2的結(jié)果轉(zhuǎn)換成浮點(diǎn)數(shù);周期T4譯碼執(zhí)行新取入指令I(lǐng)NS4,同時,配合內(nèi)部操作標(biāo)識部件23的狀態(tài),執(zhí)行LD(101-0100)取數(shù)、執(zhí)行INC(10100)取數(shù)地址加1,執(zhí)行STACK(01-10100)將取入的數(shù)據(jù)進(jìn)棧,并執(zhí)行T1周期取入的FPAI(00-10101)將x1*x2的結(jié)果轉(zhuǎn)換成浮點(diǎn)數(shù),執(zhí)行T1周期取入的DSFT(00-0001-10100)將y1-y2取整后的結(jié)果除以2;周期T5譯碼執(zhí)行新取入指令I(lǐng)NS5,同時,配合內(nèi)部操作標(biāo)識部件23的狀態(tài),執(zhí)行LD(101-0100)取數(shù)、執(zhí)行INC(10100)取數(shù)地址加1,執(zhí)行STACK(01-10100)將取入的數(shù)據(jù)進(jìn)棧,并執(zhí)行T2周期取入的DAU(1010-01100-11000)將x1*x2取整后的結(jié)果與y1-y2取整后除以2的結(jié)果相加。
盡管以上結(jié)合附圖所示例子描述了本發(fā)明,但顯然本發(fā)明并不局限于此,在后附權(quán)利要求書所提出的創(chuàng)新思想范圍內(nèi),可以通過若干不同方式加以變換。
權(quán)利要求
1.一種指令控制拼裝的方法,其特征在于,該方法包括以下步驟1)一個指令編碼步驟,用于設(shè)計操作拼裝控制指令的指令編碼,所述操作拼裝控制指令包括一個或一個以上的順序指令字,每個指令字包括指令格式控制域(11)編碼、指令段格式控制域(12)編碼、指令段執(zhí)行方式控制域(14)編碼和多個指令段(13)編碼;每個所述指令段(13)編碼是在所述指令格式控制域(11)編碼和所述指令段格式控制域(12)編碼約束下對應(yīng)于功能部件的操作域編碼;2)一個操作拼裝控制指令接收步驟,用于順序接收所述操作拼裝控制指令的一個或若干個指令字編碼;3)一個格式譯碼步驟,用于順序?qū)λ霾僮髌囱b控制指令的每個指令字中的所述指令格式控制域(11)編碼、所述指令段格式控制域(12)編碼譯碼,并從指令字中剝離出各個操作域編碼、及所述指令段執(zhí)行方式控制域(14)編碼;4)一個內(nèi)部操作標(biāo)識步驟,用于根據(jù)所述指令段執(zhí)行方式控制域(14)編碼將要求不立即執(zhí)行的操作域編碼存貯在操作域內(nèi)部編碼寄存器組中、設(shè)置并維護(hù)操作域內(nèi)部編碼控制標(biāo)識;5)一個拼裝重組步驟,用于針對各個操作域?qū)⒋尜A在操作域內(nèi)部編碼寄存器組中的各個編碼與從外部輸入的同一操作域的編碼實(shí)行拼裝重組,產(chǎn)生各個操作域的當(dāng)周期執(zhí)行編碼及其使能信號;以及6)一個輸出步驟,用于輸出經(jīng)拼裝重組的各個操作域的編碼及其使能信號。
2.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,操作拼裝控制指令的所述指令編碼步驟包括以下步驟1)根據(jù)操作拼裝控制指令所要實(shí)現(xiàn)的功能,設(shè)計操作流程,選擇功能部件,并以控制這些功能部件的操作域作為實(shí)現(xiàn)該操作拼裝控制指令的操作域集合;2)根據(jù)操作拼裝控制指令所要實(shí)現(xiàn)的功能,對所述選定的操作域,在其編碼表中選擇對應(yīng)于該操作拼裝控制指令功能所需操作的編碼作為該操作拼裝控制指令中該操作域的編碼;3)按照所要實(shí)現(xiàn)的操作拼裝控制指令的功能,將所述操作域集合中的各個操作域按照執(zhí)行的先后順序和串并行關(guān)系排列成為若干并行操作域組成的行的序列,每一個并行操作域組成的行表示在同一時刻并行執(zhí)行的操作域;以及4)進(jìn)行操作域拼裝處理,操作域拼裝處理依賴于指令段執(zhí)行方式控制域(14)編碼。
3.根據(jù)權(quán)利要求2的指令控制拼裝方法,其特征在于所述指令段執(zhí)行方式控制域(14)編碼可以具有以下形式
其中xxx為3位任意二進(jìn)制編碼。
4.根據(jù)權(quán)利要求2所述的指令控制拼裝方法,其特征在于,當(dāng)并行操作域組成的行寬度沒有超過機(jī)器總線寬度時1)以在所述指令段(13)中可替換出現(xiàn)的所有操作域的編碼寬度的最大值作為所述指令段(13)寬度,以所述選定的各個操作域的編碼作為所述指令段(13)的編碼;2)所述指令段執(zhí)行方式控制域(14)設(shè)置為“當(dāng)周期無條件執(zhí)行”對應(yīng)的編碼;3)對所述指令段(13)中可以拼裝出現(xiàn)的操作域的個數(shù)進(jìn)行編碼,并以該編碼寬度作為所述指令段格式控制域(12)的寬度;4)對于所述指令段(13)任意給出可以拼裝出現(xiàn)的操作域的順序,并以所述選定操作域的順序號作為所述指令段格式控制域(12)編碼;5)對整個指令系統(tǒng)允許的指令段劃分方式的數(shù)量進(jìn)行編碼,并以該編碼寬度作為所述指令格式控制域(11)的寬度;以及6)任意給出所述整個指令系統(tǒng)允許的指令段劃分方式的排列順序,并以實(shí)現(xiàn)該操作拼裝控制指令的該指令字的指令段劃分方式對應(yīng)的編碼作為所述指令格式控制域(11)編碼。
5.根據(jù)權(quán)利要求2所述的指令控制拼裝方法,其特征在于,當(dāng)并行操作域組成的行寬度超過機(jī)器總線寬度時1)在機(jī)器總線寬度約束下,在并行操作域組成的行的操作域集合中選擇若干個操作域排列在一個指令字中;2)以在所述指令段(13)中可替換出現(xiàn)的所有操作域的編碼寬度的最大值作為所述指令段(13)寬度,以所述選定的各個操作域的編碼作為所述指令段(13)的編碼;3)所述指令段執(zhí)行方式控制域(14)設(shè)置為“當(dāng)周期無條件執(zhí)行”對應(yīng)的編碼;4)對所述指令段(13)中可以拼裝出現(xiàn)的操作域的個數(shù)進(jìn)行編碼,并以該編碼寬度作為所述指令段格式控制域(12)的寬度;5)對于所述指令段(13)任意給出可以拼裝出現(xiàn)的操作域的順序,并以所述選定操作域的順序號作為所述指令段格式控制域(12)編碼;6)對整個指令系統(tǒng)允許的指令段劃分方式的數(shù)量進(jìn)行編碼,并以該編碼寬度作為所述指令格式控制域(11)的寬度;7)任意給出所述整個指令系統(tǒng)允許的指令段劃分方式的排列順序,并以實(shí)現(xiàn)該操作拼裝控制指令的該指令字的指令段劃分方式對應(yīng)的編碼作為所述指令格式控制域(11)編碼;8)在機(jī)器總線寬度約束下,在并行操作域組成的行的操作域集合剩余的操作域中選擇一個操作域排列在前面某個指令字的空閑的所述指令段(13)中,并將該所述指令段(13)對應(yīng)的所述指令段執(zhí)行方式控制域(14)設(shè)置為10-xxx,表示所述指令段(13)中操作域延時xxx個周期執(zhí)行,從而保證所述指令段(13)中的這個操作域與它原來所在的并行操作域組成的行同時執(zhí)行;或?qū)⑺鲋噶疃?13)對應(yīng)的所述指令段執(zhí)行方式控制域(14)設(shè)置為00-xxx,xxx表示該操作域被激活執(zhí)行的條件,以此實(shí)現(xiàn)操作拼裝控制指令規(guī)定的各個操作域執(zhí)行的順序關(guān)系;以及9)重復(fù)所述步驟8),直到所述并行操作域組成的行的操作域集合變?yōu)榭铡?br>
6.根據(jù)權(quán)利要求2所述的指令控制拼裝方法,其特征在于,對于重復(fù)操作域1)在重復(fù)操作開始時刻對應(yīng)的指令字中,將重復(fù)操作域排列在寬度滿足要求的空閑的所述指令段(13)上,并將該所述指令段(13)對應(yīng)的所述指令段執(zhí)行方式控制域(14)設(shè)置為11-xxx,xxx為所述指令段(13)中操作域重復(fù)執(zhí)行的間隔周期數(shù),從而保證該所述指令段(13)中的這個操作域每隔xxx個周期重復(fù)執(zhí)行一次;以及2)在重復(fù)操作結(jié)束時刻對應(yīng)的操作拼裝控制指令字中,將重復(fù)操作域排列在空閑的所述指令段(13)上,并將該所述指令段(13)對應(yīng)的所述指令段執(zhí)行方式控制域(14)設(shè)置為11-000,表示該所述指令段(13)中的這個操作域重復(fù)執(zhí)行結(jié)束。
7.根據(jù)權(quán)利要求2所述的指令控制拼裝方法,其特征在于,沒有充滿的指令字進(jìn)行壓縮,在機(jī)器總線寬度約束下,將相鄰的若干指令字中的操作域排列在一個指令字中,按照操作執(zhí)行的先后順序?qū)⒏鱾€所述指令段(13)對應(yīng)的指令段執(zhí)行方式控制域設(shè)置為01-xxx,xxx表示所述指令段(13)中的操作域執(zhí)行的順序號。
8.如權(quán)利要求2所述的操作域拼裝方法,其特征在于,所述操作域拼裝處理所依賴的所述指令段執(zhí)行方式控制域(14)編碼還可以有其它編碼形式來表示所述指令段(13)上的操作域的執(zhí)行方式。
9.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述操作拼裝控制指令的所述接收步驟之前的步驟包括以下步驟1)將所述格式的操作拼裝控制指令裝載到外部存貯器或內(nèi)部寄存器;以及2)將指令拼裝標(biāo)識編碼裝載到指令拼裝標(biāo)識寄存器。
10.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述操作拼裝控制指令的所述接收步驟是在指令拼裝標(biāo)識寄存器編碼的控制下以多位存貯器操作方式從外部存貯器順序接收多位操作拼裝控制指令的各個指令字編碼。
11.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述操作拼裝控制指令的所述接收步驟是在指令拼裝標(biāo)識寄存器編碼的控制下以多位寄存器操作方式從內(nèi)部寄存器順序接收多位操作拼裝控制指令的各個指令字編碼。
12.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述格式譯碼步驟包括以下步驟1)對所述接收步驟接收的操作拼裝控制指令的指令字中的所述指令格式控制域(11)編碼和所述指令段格式控制域(12)編碼進(jìn)行譯碼;2)從所述接收步驟接收的操作拼裝控制指令的指令字的各個所述指令段(13)中剝離出各個操作域編碼;3)從所述接收步驟接收的操作拼裝控制指令的指令字中剝離出所述指令段執(zhí)行方式控制域(14)編碼;以及4)產(chǎn)生各個功能部件對應(yīng)的操作域的使能信號。
13.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述內(nèi)部操作標(biāo)識步驟包括以下步驟1)將由所述指令段執(zhí)行方式控制域(14)標(biāo)識不立即執(zhí)行的操作域編碼存貯在該操作域的操作域內(nèi)部編碼寄存器組(51)中;2)將所述指令段執(zhí)行方式控制域(14)的編碼存入該操作域?qū)?yīng)的操作域內(nèi)部編碼控制標(biāo)識(52)中;以及3)由內(nèi)部編碼控制標(biāo)識輸出的內(nèi)部編碼執(zhí)行控制信號每周期更新一次。
14.如權(quán)利要求1所述的指令控制拼裝方法,其特征在于,所述拼裝重組步驟包括以下步驟1)接收所述格式譯碼步驟產(chǎn)生的各個操作域使能信號、和所述內(nèi)部編碼標(biāo)識步驟產(chǎn)生的同一操作域的所述操作域內(nèi)部編碼控制標(biāo)識(52)的輸出信號,按照操作拼裝控制指令的指令字和所述操作域內(nèi)部編碼標(biāo)識(52)給出的內(nèi)部編碼執(zhí)行控制信號選擇該操作域當(dāng)周期執(zhí)行的編碼;以及2)對于所有操作域,若在當(dāng)周期動作,則將該操作域的使能信號置為有效。
15.一種指令控制拼裝裝置,可響應(yīng)多位操作拼裝控制指令外部存貯方式,可響應(yīng)多位內(nèi)部操作拼裝控制指令寄存器存貯方式,使該操作拼裝控制指令作用于拼裝控制裝置,實(shí)現(xiàn)串并行操作、重復(fù)操作的各種拼裝執(zhí)行模式,其特征在于,包括以下部件1)配合該裝置的多位操作拼裝控制指令存貯器、寄存器的指令和數(shù)據(jù)輸入方式,一個用于接收操作拼裝控制指令的操作拼裝控制指令接收部件(21);2)配合所述操作拼裝控制指令接收部件(21)的一個格式譯碼部件(22),用于對操作拼裝控制指令中的所述指令格式控制域(11)編碼、所述指令段格式控制域(12)編碼進(jìn)行譯碼,并從操作拼裝控制指令中剝離操作域編碼、所述指令段拼裝方式控制域(14)的編碼;3)配合所述格式譯碼部件(22)的用于實(shí)現(xiàn)不立即執(zhí)行的操作編碼存貯、操作域執(zhí)行方式存貯、內(nèi)部編碼執(zhí)行控制信號生成的一個內(nèi)部編碼標(biāo)識部件(23);4)配合所述內(nèi)部操作標(biāo)識部件(23)的一個拼裝重組部件(24),用于將各個操作域的存貯在所述內(nèi)部編碼標(biāo)識部件(23)中的各個操作編碼與外來指令中的同一操作域的操作編碼進(jìn)行重組,產(chǎn)生該操作域的當(dāng)周期執(zhí)行的操作編碼及該操作域的使能信號;以及5)一個用于輸出各個操作域編碼及其使能信號的輸出部件(25)。
16.如權(quán)利要求15所述的指令控制拼裝裝置,其特征在于,所述操作拼裝控制指令接收部件(21)包括1)一個指令拼裝標(biāo)識寄存器(30),用于標(biāo)識操作拼裝控制指令來源;2)一個指令拼裝部件(31),在所述指令拼裝標(biāo)識寄存器(30)控制下選通指令來源,當(dāng)所述指令拼裝標(biāo)識寄存器(30)標(biāo)識操作拼裝控制指令來源于存貯器時,以存貯器操作方式接收多位操作拼裝控制指令的指令字,當(dāng)所述指令拼裝標(biāo)識寄存器(30)標(biāo)識操作拼裝控制指令來源于寄存器時,以多位寄存器或鎖存器操作方式接收多位操作拼裝控制指令的指令字;以及3)一個指令寄存器(32)用于存貯所述指令拼裝部件(31)接收的操作拼裝控制指令的指令字。
17.如權(quán)利要求15所述的指令控制拼裝裝置,其特征在于,所述格式譯碼部件(22)包括1)指令格式控制域譯碼部件(41),用于對所述操作拼裝控制指令接收部件(21)接收的操作拼裝控制指令的指令字中的所述指令格式控制域(11)編碼進(jìn)行譯碼;2)指令段格式控制域譯碼部件(42),用于對所述操作拼裝控制指令接收部件(21)接收的操作拼裝控制指令的指令字中的所述指令段格式控制域(12)編碼進(jìn)行譯碼;3)配合所述指令格式控制域譯碼部件(41)和所述指令段格式控制域譯碼部件(42)的操作域剝離部件(43),用于從所述操作拼裝控制指令接收部件(21)接收的操作拼裝控制指令的指令字中剝離出各個操作域編碼;4)配合所述指令格式控制域譯碼部件(41)的拼裝方式控制域剝離部件(44),用于從所述操作拼裝控制指令接收部件(21)接收的操作拼裝控制指令的指令字中剝離出各個指令段的指令段拼裝方式控制域(14)編碼;以及5)配合所述指令格式控制域譯碼部件(41)和所述指令段格式控制域譯碼部件(42)的操作域使能部件(45),用于產(chǎn)生各個操作域的使能信號。
18.如權(quán)利要求15所述的指令控制拼裝裝置,其特征在于,所述內(nèi)部操作標(biāo)識部件(23)包括1)一組配合所述格式譯碼部件(22)的對應(yīng)于各個操作域的操作域內(nèi)部編碼寄存器組(51),用于存貯不被立即執(zhí)行的操作域編碼;以及2)一組配合所述操作域內(nèi)部編碼寄存器組(51)和所述指令段執(zhí)行方式控制域(14)的操作域內(nèi)部編碼控制標(biāo)識(52),用于控制被裝載在內(nèi)部的操作域編碼按照指令要求的時刻或執(zhí)行方式執(zhí)行。
19.如權(quán)利要求15所述的指令控制拼裝裝置,其特征在于,所述拼裝重組部件(24)包括1)一個拼裝重組控制部件(61),用于接收所述格式譯碼部件(22)產(chǎn)生的操作域使能信號,和所述內(nèi)部操作標(biāo)識部件(23)輸出的同一操作域的各個內(nèi)部編碼執(zhí)行控制信號,按照內(nèi)部操作編碼在外來操作拼裝控制指令的指令字中不存在同一操作域使能、且該內(nèi)部編碼執(zhí)行控制信號為真時被執(zhí)行的原則產(chǎn)生拼裝重組控制信號;2)一個配合所述拼裝重組控制部件(61)的拼裝重組選通部件(62),用于接收所述格式譯碼部件(22)剝離出的各個操作域的操作編碼和所述內(nèi)部操作標(biāo)識部件(23)輸出的同一操作域的各個內(nèi)部操作編碼,在所述拼裝重組控制部件(61)的輸出的控制下選通該操作域的操作編碼;以及3)一個配合所述拼裝重組控制部件(61)的拼裝重組使能部件(63),用于配合所述拼裝重組控制部件(61)產(chǎn)生各個操作域的使能信號。
全文摘要
一種指令控制拼裝方法及其裝置,該裝置包括操作拼裝控制指令接收部件、格式譯碼部件、內(nèi)部編碼標(biāo)識部件、拼裝重組部件和輸出部件。通過該指令控制拼裝方法及裝置,可將數(shù)據(jù)相關(guān)的串行操作過程相關(guān)的操作拼裝在一條指令中,從而減少程序的空間開銷,簡化程序設(shè)計,可在不增加機(jī)器總線寬度、不增加每條指令的執(zhí)行時間和譯碼控制電路延時的前提下、增加操作的吞吐量,減少實(shí)現(xiàn)程序的指令數(shù),從而提高執(zhí)行效率。
文檔編號G06F9/44GK1250910SQ9812094
公開日2000年4月19日 申請日期1998年10月12日 優(yōu)先權(quán)日1998年10月12日
發(fā)明者王沁, 劉大力 申請人:北京多思科技工業(yè)園股份有限公司