欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

指令執(zhí)行高效率生產(chǎn)線方法及裝置的制作方法

文檔序號:6405649閱讀:488來源:國知局
專利名稱:指令執(zhí)行高效率生產(chǎn)線方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng),更明確地說是涉及一種按流水線方式執(zhí)行指令的系統(tǒng)。
眾知周知,數(shù)據(jù)處理系統(tǒng)包含用以存貯指令和操作數(shù)的存貯器和用以執(zhí)行指令的處理器。處理器從存貯器中取出指令、產(chǎn)生操作數(shù)地址並從存貯器中取出操作數(shù)。然后處理器執(zhí)行該指令並把得到的操作數(shù)存回到存貯器中的指定單元。然后處理器取出下一條指令。
串行操作,特別是對存貯器的順序存取往往是對系統(tǒng)吞吐量的限制因素。因此對系統(tǒng)增加一些高速暫存器來改善其性能。最初,一個(gè)高速暫存器存貯指令和操作數(shù)兩者,但在后來,設(shè)計(jì)出指令高速暫存器和數(shù)據(jù)高速暫存器。
幾乎在相同時(shí)期,數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)出現(xiàn)了流水線操作方式。然而,對此系統(tǒng)而言,指令的執(zhí)行仍然是順序的。也就是說,只有當(dāng)前一條指令的執(zhí)行完成后才取出下一條指令,按照新的設(shè)計(jì),指令的執(zhí)行是流水線式的。按照流水線的操作方式,系統(tǒng)被組織成為若干階段例如取出和分析指令的指令階段、產(chǎn)生操作數(shù)地址的地址階段,取出操作數(shù)的存貯器或高速暫存器階段和完成該指令的執(zhí)行階段。諸指令被順序地放進(jìn)流水線。在指令階段剛一完成指令的操作,該指令就被傳遞到地址階段,並取出要被執(zhí)行的下一條指令。因此,在上述的四階段系統(tǒng)中,在同一時(shí)間將有四條指令的不同部分在被執(zhí)行。
但是上述那種流水線操作方式的吞吐量還是有限的,因?yàn)槊織l指令的執(zhí)行都需要在流水線的各個(gè)階段中進(jìn)行傳遞。為了改進(jìn)其性能,某些系統(tǒng)盡可能地使由流水線的某些階段所執(zhí)行的操作能重疊進(jìn)行。
這種流水線機(jī)器的一個(gè)例子是美國專利4760519號中所描述的那個(gè)系統(tǒng),該專利的標(biāo)題是“利用碰撞檢測和預(yù)測法的數(shù)據(jù)處理裝置和方法”。該系統(tǒng)包括兩個(gè)獨(dú)立的流水線,一個(gè)是三階段的指令流水線,另一個(gè)是三階段的執(zhí)行流水線。指令流水線的最后階段與執(zhí)行流水線的第一階段重迭連接。在這種系統(tǒng)中,一條指令仍然還要至少五個(gè)周期才能完成。
因此,本發(fā)明的主要目標(biāo)是提供一個(gè)高性能的流水線系統(tǒng)。
本發(fā)明的另一個(gè)目標(biāo)是給出一個(gè)系統(tǒng),它能利用盡可能少的流水線階段來完成各指令的執(zhí)行。
利用一個(gè)優(yōu)選的處理部件實(shí)施例,本發(fā)明可實(shí)現(xiàn)上述目標(biāo)和其它一些目標(biāo),該處理部件是按生產(chǎn)流水線系統(tǒng)方式組織起來的,其中包括若干個(gè)部件,每個(gè)部件完成對生產(chǎn)流水線的各條指令的不同操作。某些類型的指令由前頭幾個(gè)部件執(zhí)行並脫離此生產(chǎn)線。這就使前頭的幾個(gè)部件免得去執(zhí)行后隨的指令。另一些類型指令放在此生產(chǎn)線的末端執(zhí)行。這就改善了系統(tǒng)的總吞吐量。
更具體地說,在第一個(gè)周期內(nèi),第一個(gè)部件(即指令部件)從存貯器中取出指令,在第二個(gè)周期,該指令部件對指令進(jìn)行譯碼並執(zhí)行某些轉(zhuǎn)移指令。第二個(gè)部件對應(yīng)于地址部件(A),它從指令部件那里接收此指令並在第三周期內(nèi),要么產(chǎn)生一個(gè)地址、要么執(zhí)行一條“寄存器”型的指令。所產(chǎn)生的地址指出了在隨后的一個(gè)周期內(nèi)為執(zhí)行一條“存貯器”型指令所需要的操作數(shù)在存貯器中的位置。對于“存貯器”型指令,將在第四個(gè)周期內(nèi)從存貯器中取出操作數(shù),這個(gè)操作數(shù)將由生產(chǎn)線順序中的下一個(gè)部件來執(zhí)行,然后在第五個(gè)周期內(nèi)離開此生產(chǎn)線。在第二個(gè)操作周期內(nèi)執(zhí)行的轉(zhuǎn)移指令和在第三個(gè)操作周期內(nèi)已被執(zhí)行的“寄存器”型指令實(shí)際上脫離了此生產(chǎn)線,所以,不需要在此生產(chǎn)線中占用另外的周期。因而,改善了系統(tǒng)的吞吐量。


圖1是包含本發(fā)明裝置的整個(gè)系統(tǒng)的方塊圖。
圖2是圖1所示的整個(gè)系統(tǒng)的更詳細(xì)的方塊圖。
圖3是生產(chǎn)流水線周期的主要部份的邏輯框圖。
圖4展示了用以說明本發(fā)明的一些指令在工型高速暫存器下的位置。
圖5展示了在生產(chǎn)流水線各周期內(nèi)被處理的一系列指令。
圖6A表示固件的流程圖,這個(gè)固件用以控制地址部件中的邏輯元素。地址部件產(chǎn)生一個(gè)操作數(shù)的存貯器地址用于執(zhí)行部件中執(zhí)行一條指令。
圖6B也是該固件的流程框圖,這個(gè)固件所控制的邏輯元素完成執(zhí)行部件中的、指令的執(zhí)行。
圖7也是固件的流程框圖,這個(gè)固件所控制的邏輯執(zhí)行軟件可見的寄存器指令。
圖1展示了以生產(chǎn)流水線方式工作的一個(gè)數(shù)據(jù)處理系統(tǒng)1的方塊圖,其中包括中央處理器(CPU)2、虛存管理部件(VMMU)4、高速暫存器6、存貯子系統(tǒng)8和入/出外部設(shè)備10。高速暫存器6、存貯器8以及入出外部設(shè)備10都接到系統(tǒng)總線12。存貯器8用以存貯指令和操作數(shù)。最有可能被立即執(zhí)行的那些操操數(shù)和指令從存貯子系統(tǒng)8傳送到高速暫存器6。
CPU2從高速暫存器6中接收指令並在執(zhí)行這些指令時(shí)把指令的虛地址部分送到VMMU4。VMMU把此虛地址轉(zhuǎn)換為物理地址,這個(gè)物理地址被加到暫存器6用以取出必要的操作數(shù),以便使CPU能夠執(zhí)行該指令。
輸入/輸出部件10通常代表任意數(shù)量的外部控制器及它們的設(shè)備,或者是用以控制外圍控制器和設(shè)備的入/出處理機(jī),部件10也可以是一個(gè)通訊子系統(tǒng)。
圖2以方塊圖形式展示了構(gòu)成CPU2和高速暫存器6的主要成份。CPU2包括指令(I)部件2-2、地址部件(A)2-4和若干執(zhí)行(E)部件2-6。執(zhí)行部件2-6可能是一個(gè)科學(xué)指令處理器或者是一個(gè)商用指令處理器。但是為了說明簡單起見,只描述執(zhí)行部件2-6的其中之一的操作過程,這對理解本發(fā)明已經(jīng)足夠了。
高速暫存器6包括I型高速暫存器6-2和E型高速暫存器6-4。I型高速暫存器存貯要被執(zhí)行的指令,E型高速暫存器存貯該指令對之要操作的操作數(shù)。指令部件2-2本質(zhì)上完成兩種功能。它從I型高速暫存器6-2中予取出指令,然后分解這些指令以確定A部件2-4和E部件2-6如何進(jìn)一步處理這些指令。此外,I部件2-2還執(zhí)行某些分枝指令,這些指令從此之后就從本生產(chǎn)線中去掉了。
A部件2-4從I部件2-2中接收指令,並當(dāng)這條指令是寄存器一寄存器型指令時(shí)就執(zhí)行它。當(dāng)該指令需要由E部件2-6執(zhí)行時(shí),A部件2-4發(fā)送一個(gè)虛地址給VMMU4,VMMU4把這個(gè)虛地址翻譯為供E型高速暫存器6-4用的物理地址。E型高速暫存器6-4把操作數(shù)送到E部件2-6,以便完成原來由指令部件2-2從I型高速暫存器6-2中接收到的那條指令的執(zhí)行。
A部件2-4也將確認(rèn)轉(zhuǎn)移指令的執(zhí)行,並把轉(zhuǎn)移地址送回到指令部件2-2,指令部件2-2這時(shí)已經(jīng)請求在I型高速暫存器6-2中的由I部件2-2預(yù)先取出的轉(zhuǎn)移地址所確定的那個(gè)單元中的下一條指令。A部件2-4和E部件2-6均包括寄存器文件,這些寄存器文件存貯便于程序員使用的那些寄存器的內(nèi)容,所謂便于程序員使用的寄存器就是軟件看得見的寄存器。I型高速暫存器6-2和E型高速暫存器6-4都被接到系統(tǒng)總線12,它們的內(nèi)容隨著從存貯器8中取出的指令和操作數(shù)而更新。
各指令都由CPU2的諸成份以生產(chǎn)流水線的方式執(zhí)行。也就是說,I部件2-2從I型高速暫存器6-2中接收一條指令,對它進(jìn)行分解,接著把此指令送到A部件2-4。A部件2-4要么就執(zhí)行這條指令,要么把此虛地址送到VMMU4去轉(zhuǎn)換,以便得到E型高速暫存器6-4中的地址。E型高速暫存器把指定的操作數(shù)送到E部件2-6。
在A部件2-4正在執(zhí)行從I部件2-2中得到的第一條指令的地址部分時(shí),I部件2-2則從I型高速暫存器6-2中取出第二條和隨后的各條指令。當(dāng)A部件2-4把第一條指令規(guī)定的虛地址送到VMMU4並把這一情況通知I部件2-2時(shí),I部件2-2就把第二條指令送到A部件2-4。正當(dāng)A部件2-4在此管道線中處理第二條指令時(shí),VMMU4就訪問E型高速暫存器6-4。當(dāng)E部件2-6正在執(zhí)行第一條指令時(shí),VMMU4可以對E型高速暫存器進(jìn)行尋址以取出第二條指令的操作數(shù),與此同時(shí),A部件2-4產(chǎn)生第三條指令的虛地址。在此期間,I部件2-2正在分解第四條指令並取出后續(xù)指令之一。因此,在這個(gè)典型的例子中,可能有多至五條指令正在此生產(chǎn)線中推進(jìn)。
但是,因?yàn)镮部件2-2能夠執(zhí)行某些轉(zhuǎn)移指令,並且A部件能夠執(zhí)行一些軟件可見的寄存器型指令,所以一旦這些指令的執(zhí)行結(jié)束,它們就從生產(chǎn)線中消失。類似的情況是,當(dāng)A部件2-4正在處理一條轉(zhuǎn)移指令並且轉(zhuǎn)移條件滿足,那么A部件2-4立即認(rèn)可I部件2-2的轉(zhuǎn)移地址,而那條轉(zhuǎn)移指令也將從生產(chǎn)線中去掉。這種操作方式和方法與先前的技術(shù)相比,能夠提高吞吐量。
圖3展示了指令部件2-2、A部件2-4、執(zhí)行部件2-6和它們之間銜接關(guān)系的細(xì)節(jié)。A部件2-4把虛地址送入指令部件2-2的P計(jì)數(shù)器2-200。這個(gè)虛地址是要被放到流水線中去的下一條指令在I型高速暫存器6-2中的單元地址。在IFETCH周期內(nèi),這一虛地址經(jīng)由加法器2-202和寄存器VAO2-204或寄存器VAI2-206中的一個(gè)送到I型高速暫存器6-2。寄存器VAO2-204或VA12-206被用到取出一條轉(zhuǎn)移指令為止。然后,倘若寄存器VAO2-204在起作用,那么這條轉(zhuǎn)移指令所要求的地址將被存入寄存器VAI2-206。
把轉(zhuǎn)移地址分別保存在P計(jì)數(shù)器2-200和程序計(jì)數(shù)器2-416寄存器中的理由是如果它是一條條件轉(zhuǎn)移指令,其條件可能滿足,也可能不滿足。若條件不滿足,就不會產(chǎn)生轉(zhuǎn)移。這給系統(tǒng)一種選擇要么使用該轉(zhuǎn)移所要求的地址,要么不用。受固件控制的P計(jì)數(shù)器2-200對于單個(gè)字的指令是計(jì)數(shù)加1,對于雙字指令是加2,對于轉(zhuǎn)移指令則由A部件2-4中的轉(zhuǎn)移地址所替代。
從I型高速暫存器6-2中讀出的指令被送入串緩沖器A2-220或串緩沖器B2-221。在這兒再次指出,兩組串緩沖器中的一組連續(xù)地從I型高速暫存器6-2中接收指令,直到出現(xiàn)轉(zhuǎn)移指令為止。之后,緊接著轉(zhuǎn)移指令之后的那條指令被存貯在另一串緩沖器中。舉例說,如果串緩沖區(qū)A2-220正在被使用,那么轉(zhuǎn)移指令之后的指令將被存貯在串緩沖區(qū)B2-221中。由于在另一轉(zhuǎn)移條件滿足,I部件2-4從串緩沖區(qū)B2-221中取出分枝串的情狀下,存貯了兩組指令從而改善了吞吐能力。
上面提到過的指令接下來被送到指令分析邏輯2-210,以便確定它是哪種指令。這就是說,如果它是一條軟件可見的寄存器到寄存器型的指令,那么將由A部件執(zhí)行它,如果它是一條存貯器型指令,那么將由E部件2-6執(zhí)行它。
該指令從分析邏輯2-210送到A部件的固件地址生成器2-208,該地址生成器訪問A部件的控制存儲器2-430。被尋址單元的內(nèi)容被存放在A部件2-4中的RDR(A)寄存器2-406中。來自串緩沖器2-220或2-221的該指令的信號I-INSTR0-31被傳送到A部件2-4的指令(RINSTR)寄存器。如果該指令將由E部件2-6執(zhí)行,那么這條指令也被存入到E部件2-6中的先進(jìn)先出(FIFO)的指令寄存器2-600中。該指令在來自I部件2-4的一個(gè)信號I-BEGIN的控制下也被存入到A部件2-6的OP-CODE寄存器2-402中。RINSTR寄存器2-400和OP-CODE寄存器2-402兩者都能存放每個(gè)字長為32位的雙字。如果某條指令要求2或3個(gè)雙字,那么在該指令的每一個(gè)雙字依次被存放到指令寄存器2-400中的時(shí)候,關(guān)于那條指令的OP-CODE保留在OP-CODE寄存器2-402中。
OP-CODE寄存器2-402的輸出主要用于在OPCODE和固件位的控制下訪問寄存器文件2-404,OPCODE和固件位分別存放在OPCODE寄存器2-402和寄存器RDR(A)2-406之中。寄存器文件2-404包含軟件可見的寄存器。如果正在被執(zhí)行的指令是一條存貯器型指令,那么就產(chǎn)生一個(gè)虛地址並通過算術(shù)邏輯部件(ALU)2-412把此虛地址送到VMMU4。對于ALU2-412的輸入取決于正在由A部件2-6執(zhí)行的那條指令,可以借助于RINSTR寄存器2-400、OPCODE寄存器2-402、寄存器文件2-404或者程序計(jì)數(shù)器2-416加到ALU的A輸入端。ALU的B端的輸入由用于變址或位移操作的變址移位器2-410所提供(通過加法器2-408或者根據(jù)寄存器文件2-404提供)。如果這是一條寄存器型指令,比如是一個(gè)在寄存器文件2-404中的一個(gè)軟件可見的寄存器內(nèi)容的移位操作,那么該寄存器文件2-404的輸出可加到移位器2-414上、移動由該指令所規(guī)定的位數(shù)、並把移位結(jié)果存回曾被讀出那條指令的同一個(gè)寄存器中的寄存器文件2-404中。
指示寄存器2-412包含對于包括轉(zhuǎn)移指令在內(nèi)的某些指令的程序狀態(tài)指示。寄存器的各位包括溢出指示(or)、進(jìn)位指示(c)(用以指出上一次操作對這一位的補(bǔ)償情況)、位測試指示(B)(代表被測試最后一位的狀態(tài))以及輸入/輸出指示(I)(代表最后一次外部查詢的狀態(tài))。程序狀態(tài)指示還包括大于(G)、小于(L)和異號(U)符號的指示,它們反映了最后一次的比較結(jié)果。
類似的指示位被用于科學(xué)和商用指令。
因此,條件轉(zhuǎn)移指令的功能是測試一個(gè)指示位並在條件滿足時(shí)產(chǎn)生轉(zhuǎn)移。另一些條件轉(zhuǎn)移指令將測試寄存器文件2-404和2-610中的被選擇的軟件可見的寄存器的條件。轉(zhuǎn)移指令的OP碼指出被選擇的軟件可見的寄存器的真實(shí)狀態(tài),所指的狀態(tài)有小于零、大于零、等于零、不等于零、小于或等于零、奇或者偶等等。
轉(zhuǎn)移指令的類型包括高達(dá)16位的短位移、30位的大位移。轉(zhuǎn)移指令可以是無條件型的,或者是條件轉(zhuǎn)移型的。I部件2-2將為所有短位移的轉(zhuǎn)移指令產(chǎn)生出轉(zhuǎn)移地址。這是借助于加法器2-202,把串緩沖器2-220或2-221中的位移字段的內(nèi)容與P計(jì)數(shù)器2-200的內(nèi)容相加而得到的。
轉(zhuǎn)向的指令流從I型高速暫存器6-2讀到串緩沖器2-220或2-221。
如果該轉(zhuǎn)移指令是無條件轉(zhuǎn)移指令,那么I部件2-2執(zhí)行該轉(zhuǎn)移指令並開始分析轉(zhuǎn)移指令流中的下一條指令。
如果該轉(zhuǎn)移指令是一條件轉(zhuǎn)移指令,那么I部件2-2等待A部件2-4作出判決I部件2-2應(yīng)該分析哪一個(gè)指令流。來自操作(OP)碼2-402、寄存器文件2-404和指示寄存器2-417的信號都加到轉(zhuǎn)移邏輯2-401。RDR(A)2-406產(chǎn)生一個(gè)信號A-P-LD,然后來自ALU2-412的轉(zhuǎn)移地址信號被取到P計(jì)數(shù)器2-200,轉(zhuǎn)移邏輯2-401則根據(jù)46位到50位即十六進(jìn)制07來產(chǎn)生輸出。信號A-BRANCH和A-P-LD被加到P計(jì)數(shù)器2-200,A-BRANCH信號是根據(jù)指定轉(zhuǎn)移類型的OPCODE寄存器信號、狀態(tài)指示寄存器2-417各位的狀態(tài)以及寄存器文件2-404中的某些軟件可見的寄存器的狀態(tài)而產(chǎn)生的。
如果信號A-BRANCH和A-P-LD兩者都為真,則I部件2-2就開始分析轉(zhuǎn)移指令流中的指令。如果信號A-P-LD為真而A-BRANCH為假,I部件2-2就繼續(xù)分析原來的指令流。
如果在I部件2-2中,該指令要求轉(zhuǎn)移並給出了一個(gè)位移,那么此位移將從分析部件2-210送到加法器2-202,以便與P計(jì)數(shù)器2-200中的內(nèi)容相加,並把結(jié)果存入寄存器VAO2-204或寄存器VAI2-206,並同時(shí)送到I型高速暫存器6-2。
當(dāng)A部件2-4做完上述指令后,一個(gè)A-DONE信號被送到I部件2-2的分析邏輯2-210。這就是通知I部件2-2把存貯在串緩沖器2-220或2-221中的下一條指令發(fā)送到A部件2-4,並在必要時(shí)送到E部件2-6。如果有一條指令要求由E部件2-6執(zhí)行,那末I部件2-2在信號I-E-LAST和信號I-E-FIRST的控制下把那條指令送到該指令的FIFO寄存器2-600中。這些信號用來控制指令寄存器FIFO2-600的寫入。
在附錄中有描述上述信號的布爾表達(dá)式,在適當(dāng)?shù)牡胤娇梢詤⒖贾?。?dāng)CRACK信號產(chǎn)生時(shí),系統(tǒng)又不處于保持方式而且包含有時(shí)鐘邏輯的邏輯塊不處于延遲方式的情況下,A部件2-4就接收I-BEGIN信號。
CRACK信號是在就緒邏輯和觸發(fā)器2-222準(zhǔn)備分析該指令的時(shí)候產(chǎn)生的。本緩沖器A2-220或B2-221至少存貯一條指令,A部件2-4產(chǎn)生了ADONE信號以指出此A部件已可用于處理下一條指令。
如果正在被分析的指令需要由E部件2-6執(zhí)行,那么I部件2-2通過就緒邏輯和觸發(fā)器2-222產(chǎn)生I-EFIRST和I-ELAST信號。這兩個(gè)信號都被加到I-FIFO的(2-600)上。I-EFIRST信號使I-FIFO2-600能夠貯存雙字指令。I-ELAST信號使I-FIFO2-600能貯存單字指令。
請注意,I部件2-2通常是把此指令送到A部件2-4中去執(zhí)行,僅當(dāng)該指令要在E部件2-6中執(zhí)行時(shí)才把它送到FIFO2-600。在E部件2-6中,由FJFO將要執(zhí)行的下一條指令被送到下一地址產(chǎn)生器2-602,它產(chǎn)生E部件的存控2-604的地址單元。這個(gè)固件字被存貯在寄存器RDR(E)2-606中。指令寄存器FIFO2-600最多存貯4條指估。
當(dāng)A部件2-4把它的虛地址送到VMMU4時(shí),VMMU4產(chǎn)生用以訪問E型高速暫存器6-4的物理地址。該編址單元的內(nèi)容借助于信號LD-DAT-0015和LD-DAT-1631被存貯在E部件2-6的數(shù)據(jù)FIFO2-630之中,這兩個(gè)信號分別對應(yīng)于單字傳送和雙字傳送。信號LD-DAT-0015的增量也為1,使得FIFO2-630能夠?qū)懴陆邮障乱淮蝹鬏數(shù)牡刂?。這個(gè)數(shù)據(jù)是該指令將對之操作的操作數(shù)。E部件2-6執(zhí)行那些其操作數(shù)被存貯在寄存器文件2-630的軟件可見的寄存器之中。
在E部件2-6執(zhí)行一條指令期間,標(biāo)志位的狀態(tài)可能會被標(biāo)志位邏輯2-623所修改。標(biāo)志位邏輯根據(jù)從ALU2-608中接收到的信號產(chǎn)生信號E-IDAT0-8。信號E-IDAT0-8用以更新A部件2-4中的標(biāo)志位寄存器2-417。
對于某些由E部件2-6執(zhí)行的不要求操作數(shù)的一些指令,A部件2-4發(fā)送一個(gè)虛地址(十六進(jìn)制40)給VMMU4,從而產(chǎn)生一個(gè)空周期。這使E-CAHE6-4向FIFO2-630發(fā)送一個(gè)信號LD-DAT1631和一個(gè)“空”操作數(shù),從而產(chǎn)生一個(gè)空周期。
乘法器2-616被連接到寄存器文件2-610的A端和B端,以產(chǎn)生並貯存與移位器2-618和Q寄存器2-620相關(guān)聯(lián)的部分乘積。這個(gè)部分乘積加到一個(gè)結(jié)果多路轉(zhuǎn)換器(MUX)2-622並存貯在寄存器文件2-610中的累加器單元中。在相乘結(jié)束后,最終結(jié)果被存放在寄存器文件中的一個(gè)軟件可見的寄存器中。
交換邏輯2-612從寄存器文件2-610的B端接收操作數(shù)來交換雙字中的各個(gè)字和交換單字中的各個(gè)字節(jié)。16位的單字由兩個(gè)8位的字節(jié)組成。一個(gè)雙字則由兩個(gè)16位的單字或四個(gè)8位的字節(jié)組成。符號擴(kuò)充器2-614重復(fù)位于一個(gè)雙字的第一個(gè)有效位左邊的所有高位的符號。
CT1和CT2計(jì)數(shù)器2-624用于計(jì)算浮點(diǎn)結(jié)果的指數(shù)。浮點(diǎn)操作數(shù)的尾數(shù)通過ALU2-608和移位器2-618來處理,上述這些都是按常規(guī)方式完成的。
與A部件2-4有關(guān)的寄存器文件2-404和與E部件2-6有關(guān)的寄存器文件2-610中的軟件可見的寄存器在相繼的周期內(nèi)被更新,所以它們兩者包含有相同的信息。這是由來自寄存器RDR(A)2-406的固件信號來實(shí)現(xiàn)的,固件信號被送到邏輯2-420以產(chǎn)生更新信號A-UPDT,使寄存器文件2-610和將被送到寄存器文件2-610地址端的六個(gè)A-ADR信號,把數(shù)據(jù)從寄存器文件2-404D端存貯到寄存器文件2-610的D端。類似地,來自寄存器RDR(E)2-606的E-UPDT信號使得寄存器文件2-404存入位于邏輯2-601的信號E-ADR所指定地址上的數(shù)據(jù)。邏輯2-601從指令寄存器FIFO正600的指令信號和RDR(E)2-606的固件信號中產(chǎn)生信號E-ADR。
A部件2-4的程序計(jì)數(shù)器2-416貯存下一條指令的地址。I部件2-2中的P計(jì)數(shù)器2-200也貯存下一條指令的地址。使用兩個(gè)寄存器的理由是另一遇到條件轉(zhuǎn)移時(shí),I部件2-2中P計(jì)數(shù)器2-200貯存轉(zhuǎn)移地址(如果它將被用到的話),而程序計(jì)數(shù)器2-416則不貯存轉(zhuǎn)移地址而是貯存當(dāng)前正在被執(zhí)行的指令串中的下一個(gè)地址。
下述例子展示了使用本發(fā)明的流水線操作方式的優(yōu)點(diǎn)。圖4展示了I型高速暫存器6-2中的若干單元的內(nèi)容。單元和數(shù)據(jù)均以十六進(jìn)制表示。在本例中,單元1000和1001存放著32位的雙字寄存器型指令LoadB1,該指令的位移是十六進(jìn)制4F。這就意味著地址1000加1再加4F或者說是十六進(jìn)制1050作為虛地址被送到VMMU4。這個(gè)虛地址將指向E型高速暫存器6-4的一個(gè)物理地址單元。這個(gè)物理地址單元的內(nèi)容將被送入寄存器B1,它是一個(gè)軟件可見的寄存器,位于A部件2-4中的寄存器文件2-404中和E部件2-6中的寄存器文件2-610中。類似地,寄存器B2將由32位的雙字指令“加載寄存器B2”來送入數(shù)據(jù),這條指令存放在單元1002和1003。單元1004存放一條單字指令把寄存器R1的內(nèi)容打開和左移3位,R1寄存器是寄存器文件2-404和2-610中的另一個(gè)軟件可見的寄存器。單元1005存放一條轉(zhuǎn)移指令,它使程序計(jì)數(shù)器2-416的內(nèi)容增加正5,從而指向一條雙字指令“加載寄存器R7”,該指令位于I型高速暫存器6-2中的單元100A和100B。
單元1006和1007存貯著一條加法指令“ADDR30010”,其中寄存器R3的內(nèi)容被加到存貯器單元0010(在E型高速暫存器6-4中)的內(nèi)容上,其結(jié)果存入寄存器R3。單元1008和1009存放著一條乘法指令MULR66731,其中寄存器R6的內(nèi)容乘以操作數(shù)6731並把結(jié)果存回寄存器R6。
因?yàn)樵趩卧?005有一條無條件轉(zhuǎn)移指令,所以上述的加法和乘法指令均不會被執(zhí)行,然而這兩條指令都將從I型高速暫存器6-2中取出但不被分析。
圖5展示了那些指令通過流水線各階段時(shí)的執(zhí)行過程。圖5展示的諸階段包括從I型高速暫存器6-2中取出一條指令的I型高速暫存器階段;檢查該指令並確定由哪個(gè)部件來執(zhí)行本指令的I型高速暫存器階段;產(chǎn)生一個(gè)虛地址或執(zhí)行寄存器型或轉(zhuǎn)移型指令的A部件階段;把虛地址轉(zhuǎn)換為物理地址的VMMU階段;把指定單元中的操作數(shù)送到E部件2-6的E型高速暫存器階段,以及最終執(zhí)行本指令的E部件階段。
參照圖5,在周期1內(nèi),I-FETCH從I型高速暫存器6-2中由VAO寄存器2-204的內(nèi)容(十六進(jìn)制1000)所指定的一個(gè)單元中取出“LoadB1”指令,即十六進(jìn)制9CCO004F並把它存入串緩沖區(qū)A2-220。P計(jì)數(shù)器2-200由A部2-4初始化,它的內(nèi)容1000則經(jīng)由加法器2-202傳送到VAO2-204。I型高速暫存器6-2從單元1000和1001中讀出此雙字。
在周期2內(nèi),I-CRACK分析“LoadB1”這條指令。因?yàn)檫@是一條存貯器型指令,所以I部件2-2送給A部件2-4一個(gè)I-BEGIN信號使操作碼寄存器2-402打開,同時(shí)向E部件2-6送出信號I-EFIRST和I-ELAST而使I-FIFO2-600打開。并且,該指令被送到A部件2-4的RINSTR寄存器2-400和E部件2-6的I-FIFO2-600中。操作碼寄存器2-402中送入該指令的操作碼部份0到8位(二進(jìn)制10011100)。A部件的控制存貯器2-430被找到並且把此固件字存入寄存器RDR(A)2-406。
在第三周期,A部件產(chǎn)生一個(gè)虛地址。ALU2-412把存貯在RINSTR寄存器2-400中的低位字,即十六進(jìn)制004F加到程序計(jì)數(shù)器2-416的內(nèi)容十六進(jìn)制1000上再加上1,從而產(chǎn)生這個(gè)虛地址十六進(jìn)制1050,它被送到VMMU4。
在VMMU的第四個(gè)周期內(nèi),VMMU4產(chǎn)生一個(gè)訪問E型高速暫存器6-4的物理地址,十六進(jìn)制201050(一個(gè)任意的地址)。
在E型高速暫存器的第五周期內(nèi),這個(gè)被訪問的操作數(shù)、十六進(jìn)制12345678(一個(gè)任選的操作數(shù))被存貯在數(shù)據(jù)FIFO2-630中。
在E部件的第六周期,該操作數(shù)經(jīng)符號擴(kuò)充器2-614、ALU2-608和RESULTMUX2-622存入寄存器文件2-610。
取數(shù)到B2這條指令,ACCO0050,按類似的方式在生產(chǎn)線中通過。在此情形下,I高速存貯器6-2的地址(十六進(jìn)制)1001被存貯在VAO2-202中。因?yàn)椤叭?shù)到B”指令為雙字長,所以P計(jì)數(shù)器2-200的內(nèi)容增加2。
在E部件的第7周期,操作數(shù)十六進(jìn)制24681357被存入寄存器文件2-610的寄存器B2之中。
在I-FETCH的周期3內(nèi),從I高速暫存器6-2中讀出單元1004的內(nèi)容。每個(gè)奇地址單元導(dǎo)致兩個(gè)16位長單字被讀出?!叭?shù)到B2”這條指令是雙字指令,在訪問單元1004時(shí)讀出的那個(gè)雙字包含兩條指令一條是“R1左移3位”(ShiftR1Left3)即十六進(jìn)制1003,另一條是轉(zhuǎn)移指令十六進(jìn)制OF85。兩條指令都被送到串緩沖器A2-220。
在I-CRACK的周期4內(nèi),I部件2-2只訪問A部件2-4,因?yàn)樵撝噶钪荒茉贏部件2-4中執(zhí)行。信號I-BEGIN把OP碼送入OPCODE寄存器2-402。該指令被送入到寄存器RINSTER2-400,而固件字則被送到寄存器RDR(A)2-406。
在A部件的周期5,R1的內(nèi)容十六進(jìn)制12345678通過2-414移位器並以十六進(jìn)制91A2B3C0存入R1。
注意到這條移位指令在三個(gè)周期后才被執(zhí)行,然后就從流水線中消失。
稱為I-CRACK的周期5把轉(zhuǎn)移指令十六進(jìn)制OF85取到寄存器RINSTR2-400。寄存器VAI2-206現(xiàn)在存放著十六進(jìn)制100A(1005+5)。來自分析控制2-210的位移5被加到轉(zhuǎn)移地址上。
雖然在I-FETCH周期(即周期4)內(nèi),有一條無條件轉(zhuǎn)移指令從單元1005轉(zhuǎn)到100A,但是仍然取出加法指令BAOO0010並把它放入串緩沖器A2-202中。在I-CRACK這個(gè)周期6內(nèi),這條指令並不被分析,因?yàn)檫@時(shí)的串緩沖器B2-221正在工作。I-CRACK的周期6是一空周期。
在周期6,A部件產(chǎn)生信號A-P-LD和A-BRANCH把轉(zhuǎn)移地址送入P計(jì)數(shù)器2-200。A部件也把此轉(zhuǎn)移地址送入程序計(jì)數(shù)器2-416。
在I-FETCH周期5內(nèi),上述的乘法指令被送入串緩沖器A2-220,它也不被分析。但是在I-CRACK的周期7時(shí),LDR7這條指令將被分解。
圖6A和6B以方塊圖形式分別展示了A部件2-4和E部件2-6在執(zhí)行圖4所示的LoadB1(取數(shù)到B1)指令時(shí)所采取的固件步驟。
每一方框展示了RDR(A)2-406或RDR(E)2-606寄存器的固件位和它們的值。方框中下橫線表示的是由固件識別的記憶符,這是該框所具有的功能。
作為一個(gè)例子,圖6A的2-458這一框表示寄存器RDR(a)2-406中的34-37位有一個(gè)十六進(jìn)制值1(二進(jìn)制0001)。要被執(zhí)行的功能是把ALU2-412的A輸入端的值加上ALU2-412的B輸入端的值再加上1以產(chǎn)生一個(gè)虛地址。
參考圖6A,A部件2-4產(chǎn)生操作數(shù)的虛地舞、然后把此虛地址送到VMMU4,並通知I部件2-2A部件2-4已經(jīng)完成它對“LoadB1”這條指令應(yīng)該做的部份。在一個(gè)周期內(nèi),即圖5所示的A部件的周期3內(nèi),所有的固件步驟都被完成。圖中所示的固件框基本上是按照它們被執(zhí)行的順序表示的。
從方框2-450可以看出,RDR(A)寄存器2-406的位16是二進(jìn)制O。微操作RB-OPW把RINSTR寄存器2-406中的內(nèi)容,十六進(jìn)制9CCO004F傳送到方框2-452。
方框2-452,即MICROINOX0(RDR(A)2-406的19和20位為二進(jìn)制00)選出該指令(16進(jìn)制0050)的右邊一個(gè)字,方框2-454,即微AUB-RB1631(29-31位為0)把選出的右邊那個(gè)字送到ALU2-412的B輸入端上。
方框2-456,即MICROAUA-P(26-28位為0)把程序計(jì)數(shù)器2-416的內(nèi)容十六進(jìn)制1000送到ALU2-412的A輸入端。
方框2-458,即MICROAU-A+B+I(34-37位為十六進(jìn)制1)在ALU2-412中產(chǎn)生一個(gè)十六進(jìn)制1050(1000+4F+1)的虛地址。
方框2-460,即MICROVALU-P(位41-42為十六進(jìn)制3)借助于MUX(未畫出)從ALU2-412中選出其虛地址。
方框2-462,即MICROOFFSET(位32-33為二進(jìn)制0)測試E型高速暫存器6-4中的操作數(shù)是否位于字邊界。若不是,該固件將調(diào)用兩個(gè)E高速暫存器周期來讀出存放著操作數(shù)的兩個(gè)雙字的內(nèi)容。因此E-OFF為二進(jìn)制0。E-OFFSET從變址移位器2-410中被送到位移FIFO2-634中。
方框2-464,即MICROQLD(位43為二進(jìn)制1),把此虛地址送到Q寄存器2-418作為后備。
方框2-468,即MICROPP2(44-45位為二進(jìn)制10)使程序計(jì)數(shù)器2-416增加1,接子束I部件2-2中的P計(jì)數(shù)器2-200地加1以便從I高速暫存器6-2中讀出下一條指令。
方框2-470,即MICROA-DONE(位53為二進(jìn)制1)向I部件2-2發(fā)送一個(gè)A-DONE信號。從而,I部件向A部件2-4送來下一條指令。
參考圖6B,E部件2-6從E型高速暫存器6-4中接收其操作數(shù)並把它存入寄存器文件2-610的B1之中,從而完成了LDB1這條指令的執(zhí)行。
方框2-654表示RDR(E)寄存器2-606的45-46位為二進(jìn)制01。MICRODW操作使DFIFO2-630中的雙字操作數(shù)按雙字邊界對齊。E-OFF為二進(jìn)制0表示無位移。
方框2-652,即MICROAUADAT(47位為1)把此操作數(shù)從O-FIFO2-630傳送到ALU2-608的A輸入端。
方框2-658,即MICROALU-DW(88-89位為01)構(gòu)造ALU2-608,作為雙字來處理這個(gè)操作數(shù)。
在方框2-660中,即MICRORSLT-RTR(66-67位為01)中,RESULTMUX2-622從REF-FJFO2-632中選出操作數(shù)的0和1位,即環(huán)號,並從ALU2-608中選出該操作數(shù)的2-31位。
方框2-662,即MICROA-BX(31-37位為二進(jìn)制10010001)根據(jù)固件字的各位001和指令字的各位1-3來產(chǎn)生寄存器文件2-610A的地址。
方框2-664,即MICRORFW(A)(79-82位為十六進(jìn)制01)把此雙字操作數(shù)從RESULTMUX2-622寫到寄存器文件2-610的B1寄存器中。
方框2-666,即MICRODONE(63位為1)發(fā)送一個(gè)E-DONE信號給I部件2-2,這個(gè)信號使與“LoadB1”這條指令有關(guān)聯(lián)的指令分析邏輯2-210重置。
方框2-668,即MICROMBFMTMBR(位29和位1-3為十六進(jìn)制04)轉(zhuǎn)移到下一個(gè)E部件的控制存貯器2-604的單元並把下一固件字取到RDR(E)2-606。
圖7以方框形式展示了為執(zhí)行把R1左移3位(ShiftR1Left3)這樣一條指令,A部件2-4所采取的固件步驟。參考圖7,I-FETCH階段的周期3從I型高速暫存器6-2中取出“使R1左移3位”(SOL)這條指令,16進(jìn)制為1003,並把它送到串緩沖器A2-220中。該指令在周期4內(nèi)被分解並被送到RINSTR寄存器2-400和OPCODE寄存器2-402。信號I-BEGIN打開OP-CODE寄存器2-402,在周期5內(nèi),從寄存器文件2-404中讀出R1的內(nèi)容(十六進(jìn)制12345678)、左移3位並把結(jié)果(十六進(jìn)制91A2B3C0)存回R1,從而執(zhí)行完了這條SOC指令。
A部件2-4受從控制存貯器2-430中讀出后存貯在ROR(A)寄存器2-406中的那個(gè)固件字的控制。
從方框2-480中可以看出,值為十六進(jìn)制為04的由RDR(A)2-406中的6-11位指出的宏指令MICROB-DX產(chǎn)生出寄存器文件2-404中的RFB地址,十六進(jìn)制01)。該地址是這樣生成的把操作碼寄存器2-402的1到3位附在000的后面,以獲得R1的地址(000001)。
方框2-482MICKOSIN2-RB(27-29位為十六進(jìn)制0)把R1的內(nèi)容讀到移位寄存器2-618。方框2-484MICROSIN3-0(30-31位為二進(jìn)制11)把移位器2-618的32個(gè)低階位置“0”。方框Z-486,即MICROSHIF-L(位16為0)對移位器2-618置上左移操作的條件。框2-488,MICROSHSI(17-19位為十六進(jìn)制2)按照操作碼2-402位12-15的規(guī)定,使移位器2-618移位3。
方框2-490,即MICRORFB-SHFT(12-13位為二進(jìn)制10)使操作數(shù)左移3位并把結(jié)果存回寄存器文件2-404的R1之中。
方框2-492,即MICROI-C-SHFT(46-51位為十六進(jìn)制38)為移位順序生成指示寄存器2-417中的C指示位(未畫出)。
方框2-494,即MICRODONE(第53位為二進(jìn)制1)發(fā)送一個(gè)A-DONE信號給I部件2-2。然后I部件2-2分析要被執(zhí)行的下一條指令並把它送到A部件2-4。
方框2-496,也即MICROPP1(44-45位為二進(jìn)制01)使程序計(jì)數(shù)器2-416增加1,這是因?yàn)镾OL是一條單字指令。
雖然本發(fā)明是參照上述的優(yōu)先實(shí)施例提出並加以描述的,但是同行者借此例將會理解可以對上述的實(shí)施例在形式上和細(xì)節(jié)上作出這樣或那樣的改變,而並不脫離本發(fā)明的精神和范圍。
附錄A下列資料中列出的那些指令的記憶符選自商業(yè)上可以得到的HoneywellBull公司的DPS6程序員袖珍指南cu75-02的硬件版本(84年8月)。在下列布爾表達(dá)式中的記述法含義如下EQ0100等于16進(jìn)制0100GT3大于16進(jìn)制3NQ2不等于16進(jìn)制2NLT018不小于16進(jìn)制018NGT01E不大于16進(jìn)制01ELT3小于16進(jìn)制3I-BIGIN信號由下列布爾等式產(chǎn)生I-BIGIN=CRACK&∧STALL&∧HOLDCRACK=REDADY&∧NONELEFT&∧ADONE其中表示非信號,也即HOLD被讀作為“非HOLD”信號關(guān)于I-EFIRST和I-ELAST信號的布爾等式是I-EFIRST=CRACK&∧STALL&EINSTRI-ELAST=I-EFIRST(∧MSK+(SIEEEQ2)+BII)+(∧HOLD&MSK&∧EII&CRACK&∧STALL&NOTSTO&RSISEEQ2)信號EINSTR的布爾等式是按照要由E部件執(zhí)行的各種指令的各位的組合函數(shù)來產(chǎn)生的。布爾等式為EINSTR=GCS+(IO+IOLD+SC+MASK+BIT4+LB+LEV+INCDEC&∧RAS+MTM+MUL+DIV+STM+SSBP)&∧EII+(BSTORE+EBIMO)&IMO+EMSK&
EII+MLV&(SI+ESI&EII1)+(ESO+EDO)&(∧ERAS&(EII1+EII23)+AS3EII45)+EEII&(EII1+EII23)+(SDO+SO)&∧.RAS&∧IMO&∧EII等式中各項(xiàng)的說明普通的、商用或科學(xué)計(jì)算用指令GCS=I-INST(0-8)EQ;
IO指令I(lǐng)O=(I-INST(0-8)EQ0100)IOLD指令I(lǐng)OLD=I-INST(0-8)EQ0103單操作數(shù)指令SO=(I-INSTCO-3)EQ8&((I-INST(4-8)EQ1)+(I-INST(4-8)GT3))使用E部件2-6中的B寄存器的單操作數(shù)指令SSBP=I-INST(0-8)EQ0106使用溢出條件的單操作數(shù)指令(NEG,CAD,AID,SID,INC,DEC等指令)SOV=SO&((I-INST(4-8)EQ4)+(I-INST(4-8)EQ01D+(I-INST(4-7)EQ4))+INCDECLB指令LB=SO&(I-INST(4-8)EQ05)位操作指令(LBF、LBT、LBC、LBS)BIT4=(I-INST(0-5)EQ022)&(I-INST(8)EQ0)基本的雙操作數(shù)或科學(xué)計(jì)算指令SDO=(I-INST(0-3)GT8)&(I-INST(4-8)NEQ2)帶有在線屏蔽字的基本指令(SRM、NSAVE、NRSTR、SAVE、RSTR)MASK=(I-INST(0)EQ1)&(RLBPNEQ)&(I-INST(4-8)EQ015)+(I-INST(0-7)EQ085)+(I-INST(0-7)EQ08F)科學(xué)計(jì)算用單字和雙字操作數(shù)指令SC=((I-INST(0-3)GT8)&((I-INST(4-8)EQ011)+(I-INST(4-8)EQ013+(I-INST(4-8)EQ018)+(I-INST(4-8)EQ01A)))&EII1&∧EII23&∧AS3EII45使用M寄存器並且不停止流水線的雙操作數(shù)指令STM=(I-INST(0)EQ1)&(RLBPNEQ0)&
(I-INST(4-8)EQOE)其中RLBP=I-INST(1-3)乘法指令MUL=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ016)除法指令DIV=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST1(4-8)EQ06)修改測試寄存器M指令
MTM=(I-INST(0-3)GT8)&(I-INST(4-8)EQ0)如果指令包括直接操作數(shù),則停止流水線操作的指令(IMO)NEG,SSBP,CPL,CALL,CL,CLH,LBF,DEC,LBT,LBS,INC,LBC,STS,SDI,CAD(ALSOLE)STM,STH,SRM,SWR,SWB,STR,STB,ARESO,DOBSTORE=SO&((I-INST(4-8)EQ4)+(I-INST(4-8)EQ6)+(I-INST(4-6)EQ3)+(I-INST(4-7)EQOA)+(I-INST(4-7)EQ8)+(I-INST(4-8)EQ018)+(IINST(4-8)EQ01A)+(I-INST(4-7)EQOE))+BIT4+SDO&((I-INST(5-7)EQ7)+(I-INST(4-8)EQ015)+(I-INST(4-6)EQ7))短值立即型指令SI=(I-INST(0).EQ.0)&(RLBP.NEQ.0)&(I-INST(4-7).GT.OB)使用E部件2-6中的B寄存器的IMO指令(LDB、LAB、STB、SWB)EBIMO=(I-INST(0-3)GT8)&((I-INST(4-8)EQ019)+(I-INST(4-8)EQ017)+(I-INST(4-8)EQ01D)+(I-INST(4-8)EQ01F))LEV指令LEV=SO&(I-INST(4-8)EQ01C)INC和DEC指令
INCDEC=SO&((I-INST(48)EQ011)+(I-INST(4-8)EQ015))MLV或MLVK指令MLV=I-INST(6-7)EQ3擴(kuò)充的整型單操作數(shù)指令ESO=(I-INST(0-3)EQ8)&(I-INST(4-8)NLT018)&(I-INST(4-8)NEQ01B)&(I-INST(4-8)NGT01E)使用溢出條件且不停止流水線的EII指令KINC、KDEC,KNEC,KNEGBINSTRUCTIONSESOV=ESO&(I-INST(6-7)LT3)&(I-INST(6-8)NEQ1)EII短值直接型指令ESI=EBK&(I-INST(8)EQ1)擴(kuò)充的整型雙操作數(shù)指令EDD=(I-INST(0-3)GT8)&(I-INST(4-7)NLT4)帶有在線雙字屏蔽的擴(kuò)展的整型指令(EII)INSTREMSK=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQOF)其中RLBP=I-INSTR(1-3)在E部件2-6中執(zhí)行的E11指令,這些指令包括一個(gè)寄存器地址字節(jié)(RAS)或者是一條(IMO)(KDIV、KMUL、KMULP、KDIVP、KSKM指令)EEII=KDIV+KMUL+KDIVP+KMULP
KDIV=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ017)KMUL=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ01C)KDIVP=(I-INST(0)EQ1)&RLBPNEQ0)&(I-INST(4-8)EQ0IC)KMUIP=(I-IXST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ01E)EII1=I-INST(9-15)EQ06CEII23=I-INST(9-15)EQ07C)AS3EII45=I-INST(9-15)EQ058RAS=(I-INST(9-11)EQ5)&(I-INST(12)EQ0)&(I-INST(13-15)NEQ0)IMO=I-INST(9-15)EQ070KAS=(I-INST(23-28)EQ01A)&NCERAS=(I-INST(24-28)EQ01A)&NCNC=I-INST(29-31)NEQOII=EII1+EII23+AS3EII4權(quán)利要求
1.一個(gè)由許多串聯(lián)的流水線部件組成的數(shù)據(jù)處理系統(tǒng),這些流水線部件形成了一條生產(chǎn)線,每個(gè)階段對送到所述的各個(gè)生產(chǎn)線部件的每條指令執(zhí)行各種不同的操作,所說的系統(tǒng)包括用來存儲操作數(shù)和所述的一組指令及操作數(shù)的存儲機(jī)構(gòu);帶有取數(shù)機(jī)構(gòu)的第一個(gè)部件,這個(gè)部件被連接到上述的存儲機(jī)構(gòu),用以響應(yīng)一系列地址信號而從所說的存儲機(jī)構(gòu)中取出并存儲每一條指令;上述的第一個(gè)部件還具有連到上述的取數(shù)機(jī)構(gòu)的分析機(jī)構(gòu),用以對每組指令進(jìn)行譯碼并產(chǎn)生兩個(gè)信號,第一個(gè)信號指出指令的第一種類型,第二個(gè)信號指示指令的第二種類型;帶有寄存器機(jī)構(gòu)的第二個(gè)部件,它響應(yīng)上述的第一個(gè)信號以儲存上述的第一和第二種指令,所說的第二個(gè)部件還包括用以執(zhí)行上述的第一種指令然后把這第一種指令從生產(chǎn)線中去掉的第一種機(jī)構(gòu),所說的第二個(gè)部件還包括生成虛地址信號的機(jī)構(gòu),虛地址信號指出在執(zhí)行所說的第二種指令時(shí)操作數(shù)在所說的存儲機(jī)構(gòu)中的位置;與上述的第二個(gè)部件相連的用以把所說的虛地址信號翻譯為物理地址信號的第三部件;與上述第三部件相連的能夠響應(yīng)所述的物理地址信號從所說的存儲器中恢復(fù)所說的操作數(shù)的第四部件;與上述第一和第四部件相連的第五部件,它能響應(yīng)上述的第二種信號所儲存第二種指令,它使第二種機(jī)構(gòu)響應(yīng)上述的第二種指令和操作數(shù),從而執(zhí)行這第二種指令。
2.權(quán)利要求1所述的系統(tǒng),其中所說的第二個(gè)部件還包括能夠產(chǎn)生第三信號的機(jī)構(gòu),這個(gè)信號用于指示所說的第二部件完成對第一和第二種指令的操作的時(shí)間。
3.權(quán)利要求2所述的系統(tǒng),其中所說的分析機(jī)構(gòu)能響應(yīng)所述的第三信號,對一連串指令的下一條譯碼。
4.權(quán)利要求1所述的系統(tǒng),其中所說的存儲機(jī)構(gòu)包括用以存儲所說的一組指令的指令型高速暫存器和用以存儲所述的操作數(shù)的數(shù)據(jù)型高速暫存器。
5.權(quán)利要求4所述的系統(tǒng),其中所說的取數(shù)機(jī)構(gòu)包括地址計(jì)數(shù)器機(jī)構(gòu),它產(chǎn)生指令高速暫存器中一系列指令的每個(gè)指令的地址,所述的指令高速暫存器能夠響應(yīng)上述的地址,讀出所說的地址單元。以及用來存儲從所述的指令高速暫存器中收到的每條指令的串緩沖器機(jī)構(gòu)。
6.權(quán)利要求5所述的系統(tǒng),其中所說的分析機(jī)構(gòu)包括能夠響應(yīng)上述的第三信號所產(chǎn)生上述的第一信號的就緒機(jī)構(gòu);以及指令分析機(jī)構(gòu),它響應(yīng)上述的第三信號和從所述的串緩沖器機(jī)構(gòu)來的一組指令信號而產(chǎn)生所說的第二信號。
7.權(quán)利要求6所述的系統(tǒng),其中所說的第一執(zhí)行機(jī)構(gòu)包括用以產(chǎn)生第一組控制信號的第一控制存儲器機(jī)構(gòu);能夠響應(yīng)存儲在所述的寄存器中的第一類指令的第一類信號和所述的第一組控制信號以執(zhí)行所說的第一類指令的第一邏輯機(jī)構(gòu)。
8.權(quán)利要求7所述的系統(tǒng),其中所說的第一執(zhí)行機(jī)構(gòu)進(jìn)一步包括用以產(chǎn)生第二組控制信號的第一控制存儲機(jī)構(gòu);能夠響應(yīng)上述的第二組控制信號和第二類指令的第二種信號以產(chǎn)生所述的存儲器地址的第二邏輯機(jī)構(gòu)。
9.權(quán)利要求8所述的系統(tǒng),其中所說的第二執(zhí)行機(jī)構(gòu)包括用以產(chǎn)生第三組控制信號的第二控制存儲機(jī)構(gòu);能夠?qū)λf的第三組控制信號、對來自所述的指令寄存器的第二類指令的第三信號,以及對存儲在數(shù)據(jù)存儲器中的操作出響應(yīng)而執(zhí)行所述的指令的第三邏輯機(jī)構(gòu)。
10.具有雙流水線的一個(gè)數(shù)據(jù)處理系統(tǒng),所述的雙流水線是用于執(zhí)行指令的,所說的系統(tǒng)包括帶有第一組串接的流水線部件的第一流水線,每個(gè)部件對送到此流水線的各條指令完成一個(gè)不同的操作;與上述第一流水線串聯(lián)的第二流水線,它具有第二組串聯(lián)流水線部件,每個(gè)部件完成一個(gè)不同的操作;所說的第一流水線的第一個(gè)部件有著下述機(jī)構(gòu)能夠確定所述的每條指令是第一類還是第二類指令;能夠選適第一類指令到所述的第一組串聯(lián)流水線部件的第一個(gè)予定的部件;能夠選送第二類指令到所述的第二組串聯(lián)的流水線部件的第一個(gè)予定部件和第二個(gè)予定部件;所述的第一予定部件有能夠執(zhí)行第一類指令的機(jī)構(gòu)和能夠產(chǎn)生一個(gè)操作數(shù)在內(nèi)存中的單元地址的機(jī)構(gòu),所指的操作數(shù)用在第二個(gè)予定的部件以執(zhí)行所述的第二種指令。
11.能夠以生產(chǎn)線方式處理一系列指令的一個(gè)數(shù)據(jù)處理系統(tǒng),該系統(tǒng)包括用以存儲指令和數(shù)據(jù)的存儲機(jī)構(gòu);與上述存儲機(jī)構(gòu)相連的譯碼機(jī)構(gòu),它能夠指出上述的這一組指令中的每一條的類型是第一類還是第二類,它能把所說的第一類和第二類指令存入第一寄存器并把第一類指令存入第二寄存器;能夠?qū)Φ谝活愔噶畹牡谝环N信號作出響應(yīng)以執(zhí)行所說的指令然后把第一類指令從生產(chǎn)線中去掉的第一執(zhí)行機(jī)構(gòu),這一機(jī)構(gòu)還能對來自第二類指令的第二信號作出響應(yīng)以產(chǎn)生一個(gè)存儲器地址;能夠?qū)ι鲜龅拇鎯Φ刂纷鞒鲰憫?yīng)從而讀出數(shù)據(jù)寄存器中儲存操作數(shù)的存儲器機(jī)構(gòu);能夠根據(jù)第二類指令對第二信號作出響應(yīng)以執(zhí)行這第二類指令的第二執(zhí)行機(jī)構(gòu)。
12.權(quán)利要求11所述的系統(tǒng),其中所說的存儲機(jī)構(gòu)包含用于在指令高速暫存器中存放指令的機(jī)構(gòu)和用于在數(shù)據(jù)高速暫存器中存放操作數(shù)構(gòu)。
13.權(quán)利要求12述的系統(tǒng),其中所說的取數(shù)機(jī)構(gòu)包括能夠產(chǎn)生在指令型高速暫存器中每一條指令的單元地址的地址計(jì)數(shù)器,所說的指令型高速暫存器能對所說的地址作出響應(yīng)從而讀出這個(gè)單元;用以存儲從所述的指令高速暫存器中接收到的每條指令的串緩沖器機(jī)構(gòu)。
14.權(quán)利要求13所說的系統(tǒng),其中所說的譯碼機(jī)構(gòu)包括指令分析機(jī)構(gòu),該機(jī)構(gòu)能對代表每條指令之第一位組的信號作出響應(yīng)而產(chǎn)生指示第一類指令的第一信號和指示第二類指令的第二信號。
15.權(quán)利要求14述和系統(tǒng),其中所要的第一執(zhí)行機(jī)構(gòu)包括能產(chǎn)生第一組控制信號的第一控制存儲機(jī)構(gòu);能對上述第一組控制信號和來自所說的第一指令邏輯的、存儲在所說的寄存器中的第一信號作出響應(yīng)以執(zhí)行上述第一類指令的第一邏輯機(jī)構(gòu)。
16.權(quán)利要求15所說的系統(tǒng),其中說的第一執(zhí)行機(jī)構(gòu)進(jìn)一步包括用以產(chǎn)生第二組控制信號的第一控制存儲機(jī)構(gòu);能夠?qū)ι鲜龅牡诙M控制信號和來自所說的第二類指令的第二信號作出響應(yīng)以生成所述的存儲器地址的第二邏輯機(jī)構(gòu)。
17.權(quán)利要求16所述的系統(tǒng),其中所說的第二執(zhí)行機(jī)構(gòu)包括用以產(chǎn)生第三組控制信號的第二控制存儲機(jī)構(gòu);能對上述第三組控制信號、來自指令寄存器的第二類指令的第三信號和數(shù)據(jù)寄存器中的操作數(shù)作出響應(yīng)以執(zhí)行所述指令的第三邏輯機(jī)構(gòu)。
18.一個(gè)數(shù)據(jù)處理系統(tǒng),它具有若干串連的流水線部件,這些部件按照生產(chǎn)線方式工作,每個(gè)部件對各條指令執(zhí)行一個(gè)不同的操作,這個(gè)系統(tǒng)包括用以存儲一組指令和一組操作數(shù)的存儲機(jī)構(gòu);在第一周期內(nèi)工作的第一部件,這個(gè)部件連接到所述的存儲機(jī)構(gòu),它帶有取數(shù)機(jī)構(gòu)和第一存儲機(jī)構(gòu),存儲機(jī)構(gòu)能響應(yīng)來自第一部件的一系列第一地址信號把從所述的存儲機(jī)構(gòu)中接收到的每一條指令存放起來;在第二周期階段內(nèi)工作的第二部件,它帶有連接到上述第一存儲機(jī)構(gòu)的分析機(jī)構(gòu),用以對每條指令進(jìn)行譯碼并產(chǎn)生第一和第二信號;在第三周期內(nèi)工作并帶有第二機(jī)構(gòu)的第三部件,它響應(yīng)根據(jù)第一信號以存儲上述的第一種和第二種指令,所說的第三部件包括與所述的第二存儲機(jī)構(gòu)相連的第一機(jī)構(gòu),用來執(zhí)行第一種指令并由此而把這第一種指令從所說的生產(chǎn)線中移走;所說的第三部件還有與上述第二存儲機(jī)構(gòu)相連接的機(jī)構(gòu),用以產(chǎn)生第二地址信號以指出在執(zhí)行所述的第二種指令時(shí)用到的操作數(shù)的單元;與上述第三部件相連的所述的存儲機(jī)構(gòu)在第四周期響應(yīng)所述的第二地址信號從而恢復(fù)所述的操作數(shù);與上述第二部件相連的第四部件,該部件有一第三機(jī)構(gòu),它能響應(yīng)上述的第二信號以便在第二操作周期內(nèi)存儲第二類指令,這個(gè)第四部件還與上述的存儲機(jī)構(gòu)相連,它帶有存儲操作數(shù)用的第四機(jī)構(gòu),所說的第四部件還有與上述第三和第四存儲機(jī)構(gòu)相連的用來在第五操作周期內(nèi)執(zhí)行上述第二類指令的第二機(jī)構(gòu)。
19.把一個(gè)數(shù)據(jù)處理系統(tǒng)組織起來的一種方法,它有一組以流水線方式工作的部件,每個(gè)部件對送到該部件的各條指食執(zhí)行一個(gè)不同的操作,這一方法包括下列各步A.由第一部件在第一操作周期內(nèi)從一個(gè)存儲器中取出指令并存放到串緩沖器之中;B.由第一部件對存儲在所述的串緩沖器中的一組指令進(jìn)行譯碼并給出一個(gè)指示,以指明這一組指令中的第一條是第一類還是第二類,從而把所說的第一、二類指令送到第二部件的一個(gè)寄存器,把第一類指令送到第五部件的指令寄存器,這些工作都是在第二操作周期內(nèi)完成的;C.在第三操作周期內(nèi)執(zhí)行第二種指令;D.由上述的第二部件在第三操作周期內(nèi)產(chǎn)生一個(gè)操作數(shù)的虛地址,這個(gè)操作數(shù)在隨后的操作周期內(nèi)用于執(zhí)行上述的第一種指令;E.由第三部件在第四操作周期內(nèi)把虛地址轉(zhuǎn)換為第一類指令的物理地址;F.在第五操作周期內(nèi),讀存儲器,即按照上述的物理地址指定的單元讀出其中的操作數(shù)并把它存入所說的第四部件的一個(gè)數(shù)據(jù)寄存器中;G.在隨后一個(gè)周期內(nèi),所說的第四部件執(zhí)行第一種指令;
20.含有若干相互串聯(lián)的流水線部件形成了一條生產(chǎn)線的一個(gè)數(shù)據(jù)處理系統(tǒng),每個(gè)部件對送到生產(chǎn)線諸部件中的各條指令執(zhí)行一個(gè)不同的操作,所述的這個(gè)系統(tǒng)包括用以存放操作數(shù)和一組指令的存儲機(jī)構(gòu);與上述存儲機(jī)構(gòu)相連的第一部件,該部件的第一機(jī)構(gòu)用來存儲從所述的存儲機(jī)構(gòu)中取出的每條指令;上述的第一部件還有與上述存儲機(jī)構(gòu)相連的譯碼機(jī)構(gòu),用來確定第一、第二和第三類指令;與上述第一部件和存儲機(jī)構(gòu)相連的第二部件,它有一個(gè)第二機(jī)構(gòu)用來存儲上述的第一、第二和第三類指令;所說的第二部件的第一機(jī)構(gòu)用來執(zhí)行第二類指令并由此把這第二類指令從所述的生產(chǎn)線中移走,所說的第二部件的第一機(jī)構(gòu)根據(jù)第一類指令生成第一地址,所說的第一部件的第二機(jī)構(gòu)根據(jù)這第一地址去執(zhí)行這第一類指令并由此把這第一類指令從這生產(chǎn)線中移走,所述的第二部件還有能根據(jù)第三類指令來產(chǎn)生所述的操作在上述的存儲機(jī)構(gòu)中的第二單元地址的第二機(jī)構(gòu);所述的存儲機(jī)構(gòu)與所述的第二部件相連,能根據(jù)上述的第二地址來讀出所說的操作數(shù)。與上述第一部件和存儲機(jī)構(gòu)相連的第三部件,它的第三機(jī)構(gòu)用來存儲第三種指令和操作數(shù),所說的第三部件還有能執(zhí)行所述的第三類指令并由此而把這類指令從所述的生產(chǎn)線中移走的第三機(jī)構(gòu)。
21.權(quán)利要求20所說的系統(tǒng),其中的存儲機(jī)構(gòu)包括用來存儲一組指令的指令高速暫存器和用以存儲所說的操作數(shù)的數(shù)據(jù)高速暫存器。
22.權(quán)利要求21所指的系統(tǒng),其中的第一存儲機(jī)構(gòu)包括用來存儲所說的每一條指令在指令高速暫存器中的單元地址的第一計(jì)數(shù)器機(jī)構(gòu);用以存儲從所述的指令高速暫存器中接收到的每一條指令的串緩沖器機(jī)構(gòu)。
23.權(quán)利要求22所述的系統(tǒng),其中的譯碼機(jī)構(gòu)被連接到串緩沖器機(jī)構(gòu)以便對在指令總線上傳送的每一條指令生成第一信號,對在指令總線上傳送的每一條第三類指令生成第二信號。
24.權(quán)利要求23所述的系統(tǒng),其中所說的用于存儲的第二機(jī)構(gòu)包括能夠響應(yīng)上述的第一信號把從所說的指令總線上接收到的每條指令存儲起來的第一寄存器機(jī)構(gòu)。
25.權(quán)利要求24述的系統(tǒng),其中與執(zhí)行有關(guān)的第一機(jī)構(gòu)包括用于存放第二類指令的第一寄存器機(jī)構(gòu);用于產(chǎn)生第一組固件信號的第一控制存儲機(jī)構(gòu);帶有一組軟件可訪問的寄存器的第一寄存器文件機(jī)構(gòu);與上述的第一寄存器機(jī)構(gòu)、第一寄存器文件機(jī)構(gòu)和第一控制存儲機(jī)構(gòu)相聯(lián)接的第一算術(shù)邏輯部件機(jī)構(gòu),這個(gè)邏輯部件能根據(jù)上述的第一組固件信號、第二類指令信號以及來自軟件可訪問寄存器中一個(gè)特定寄存器的信號,再按照所述的第二類指令來更新所述的那個(gè)指定寄存器的內(nèi)容,由此而完成對這第二類指令的執(zhí)行。
26.權(quán)利要求25所述的系統(tǒng),其中所述的第一生成機(jī)構(gòu)包括用以存儲第一種指令的上述的第一寄存器機(jī)構(gòu);用以生成第二組固件信號的上述的第一控制存儲機(jī)構(gòu);能夠響應(yīng)上述第二組固件信號和來自第一類指令的信號以產(chǎn)生上述第一地址的第一算術(shù)邏輯部件機(jī)構(gòu);與上述第一算術(shù)邏輯部件機(jī)構(gòu)相連的能夠響應(yīng)所說的第二組固件信號以存放所說的第一地址的第二寄存器機(jī)構(gòu);與上述第一寄存器機(jī)構(gòu)和第一控制存儲機(jī)構(gòu)連接的用來產(chǎn)生第三信號的邏輯機(jī)構(gòu)。
27.權(quán)利要求25所說的系統(tǒng),其中說述的第二執(zhí)行機(jī)構(gòu)包括與上述第二寄存器機(jī)構(gòu)相連并能根據(jù)上述的第三信號來產(chǎn)上述第一地址的第三寄存器機(jī)構(gòu);與上述的第三寄存器機(jī)構(gòu)相連的第四存儲器機(jī)構(gòu),此機(jī)構(gòu)用來存儲上述的第一地址和第三地址,第三地址規(guī)定后續(xù)的一條指令在第一類指令之后的指令流中的地址,所說的指令高速暫存器讀出由上述第一地址規(guī)定的一個(gè)單元中的下一條指令,然后把它存入上述的串緩沖器機(jī)構(gòu),從而把所說的第一類指令從所說的生產(chǎn)線中移走。
28.權(quán)利要求27所述的系統(tǒng),其中所述的第二生成機(jī)構(gòu)包括用以產(chǎn)生第三組固件信號的第一控制存儲機(jī)構(gòu);上述的第一算術(shù)邏輯部件機(jī)構(gòu),它能響應(yīng)上述的第三組固件信號和第三類指令信號以產(chǎn)生上述的第地址。
29.權(quán)利要求28所述的系統(tǒng),其中所說的第三存儲機(jī)構(gòu)包括指令的FIFO機(jī)構(gòu),它能依據(jù)上述的第二信號來存放經(jīng)由上述指令總線接收到的第三類指令;用來存儲從述數(shù)據(jù)高速暫存器中接收到的操作數(shù)的數(shù)據(jù)FIFO機(jī)構(gòu),以及有一組軟件可見寄存器的第二寄存器文件機(jī)構(gòu)。
30.權(quán)利要求29所述的系統(tǒng),其中所說的第三執(zhí)行機(jī)構(gòu)包括用來產(chǎn)生第四組固件信號的第二控制存儲機(jī)構(gòu);與上述指令FIFO機(jī)構(gòu)、上述數(shù)據(jù)FIFO機(jī)構(gòu)和上述第二寄存器機(jī)構(gòu)相連接的第二算術(shù)邏輯部件機(jī)構(gòu),它能響應(yīng)上述一組固件信號、上述的第三類指令信號和上述的軟件可見的寄存器信號以執(zhí)行所說的第三類指令。
31.權(quán)利要求30所述的系統(tǒng),其中所說的第一類指令是轉(zhuǎn)移型指令,所說的第二類指令是軟件可見的寄存器型指令,所說的第三類指令是存儲器型指令。
全文摘要
以生產(chǎn)線的方式工作的一個(gè)數(shù)據(jù)處理系統(tǒng),該系統(tǒng)有若干流水線部件,每個(gè)部件按在此生產(chǎn)線過程中的各條指令執(zhí)行各不相同的操作。某些類型指令由較前面的一個(gè)部件執(zhí)行并移出此生產(chǎn)線,而另一些指令則在該生產(chǎn)線的尾部執(zhí)行,因此改進(jìn)了系統(tǒng)的總吞吐量。
文檔編號G06F9/38GK1044354SQ8910939
公開日1990年8月1日 申請日期1989年12月19日 優(yōu)先權(quán)日1988年12月19日
發(fā)明者明澤·牟, 托瑪斯·F·約斯 申請人:布爾·Hn·信息系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
金阳县| 南靖县| 新乡县| 望都县| 河曲县| 乌拉特后旗| 兴安县| 张掖市| 澜沧| 宝应县| 晋江市| 茂名市| 千阳县| 呼图壁县| 正蓝旗| 原平市| 新营市| 湖南省| 会昌县| 金寨县| 台中县| 梅河口市| 西城区| 登封市| 额济纳旗| 三穗县| 丰城市| 南京市| 宁晋县| 焦作市| 普陀区| 德安县| 兰西县| 古丈县| 安阳县| 饶阳县| 万宁市| 马边| 锦州市| 杭州市| 宜黄县|