国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在數(shù)據(jù)處理系統(tǒng)中改進(jìn)系統(tǒng)性能的方法和裝置的制作方法

      文檔序號(hào):6410214閱讀:206來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):在數(shù)據(jù)處理系統(tǒng)中改進(jìn)系統(tǒng)性能的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般相關(guān)于數(shù)據(jù)處理系統(tǒng),詳細(xì)地說(shuō),涉及到數(shù)據(jù)處理系統(tǒng)執(zhí)行外存儲(chǔ)器中存儲(chǔ)的指令。
      計(jì)算機(jī)體系結(jié)構(gòu)通常基于程序執(zhí)行的順序模型,其中,它從存儲(chǔ)器中取出程序的每條指令,全部予以執(zhí)行,并且將所有結(jié)果返回到存儲(chǔ)器,然后以類(lèi)似的方式處理下一條指令。在這個(gè)模型中,被執(zhí)行的下一條指令通常是緊跟在剛被執(zhí)行的那條指令之后的指令,它被存儲(chǔ)在相對(duì)于剛被執(zhí)行的那條指令而言具有下一較高地址的存儲(chǔ)器的一個(gè)單元中。與該下一相繼單元不同的一個(gè)單元可以在轉(zhuǎn)移指令中予以指定,該分支指令在典型的計(jì)算機(jī)應(yīng)用程序中以某種頻率出現(xiàn)。
      在簡(jiǎn)單地執(zhí)行這種順序模型時(shí),每條指令被同樣地并且可預(yù)測(cè)地處理,因此執(zhí)行一組指令所需要的時(shí)間完全正比于被執(zhí)行的指令數(shù)目。在流水線或重疊執(zhí)行時(shí),也就是說(shuō),當(dāng)前一條指令仍被執(zhí)行時(shí)取出下一條指令,只要目前正被執(zhí)行的指令之間沒(méi)有相關(guān)性,那么就不會(huì)出現(xiàn)延遲。當(dāng)一條指令只有在另一條指令的結(jié)果得知時(shí)才能完成執(zhí)行時(shí)才遇到相關(guān)性,在這種情況下,第二條指令必須一直等到第一條指令產(chǎn)生結(jié)果為止,因而在執(zhí)行過(guò)程中造成了延遲。
      為了減少由于流水線執(zhí)行中的相關(guān)性所產(chǎn)生的延遲,采用了各種方法。第一種方法是將詳細(xì)的執(zhí)行情況輸入到一個(gè)編譯器,該編譯器對(duì)指令進(jìn)行調(diào)度,從而使得相關(guān)指令不能在完全相同的時(shí)間被執(zhí)行。這需要編譯器顧及到所有的相關(guān)性,并且具有保持執(zhí)行簡(jiǎn)單化的優(yōu)勢(shì)。由于結(jié)果總是計(jì)劃得能夠及時(shí)得到,所以由內(nèi)部時(shí)鐘的周期進(jìn)行測(cè)量此系統(tǒng)的速度,唯一的限制是指令集中的單個(gè)基本運(yùn)算或邏輯操作的復(fù)雜性。這種方法的缺點(diǎn)是允許應(yīng)用程序只與特定的設(shè)備相兼容,從而對(duì)所有預(yù)先存在的計(jì)算機(jī)應(yīng)用軟件,為了在此特定的設(shè)備上運(yùn)行,需要重新編譯以及要求終端用戶(hù)重新購(gòu)買(mǎi)。
      第二種方法是在處理器中包括檢查指令之間的相關(guān)性,并且細(xì)心調(diào)度指令的硬件,以使得該指令對(duì)數(shù)據(jù)的存取只有在產(chǎn)生數(shù)據(jù)的指令已經(jīng)完成之后才進(jìn)行。第二種方法除了基本運(yùn)算的復(fù)雜性外,還受到找出指令之間的相關(guān)性的復(fù)雜性的限制,當(dāng)可以被執(zhí)行的重疊操作數(shù)量增大時(shí),這種復(fù)雜性也相應(yīng)增大。它所帶來(lái)的影響是,或者增大系統(tǒng)內(nèi)部時(shí)鐘的周期時(shí)間,或者增大完成程序的執(zhí)行需要的時(shí)鐘周期數(shù)目,兩者都會(huì)降低系統(tǒng)的性能。但是,這種方案有一項(xiàng)非常重要的優(yōu)點(diǎn),即能夠在不同的設(shè)備上執(zhí)行一單一的被編譯的程序。
      本發(fā)明的一個(gè)目的是改進(jìn)數(shù)據(jù)處理系統(tǒng)的整體系統(tǒng)性能。
      本發(fā)明的另一個(gè)目的是改進(jìn)處理器執(zhí)行指令的速率。
      本發(fā)明的又一個(gè)目的是找出指令流中的相關(guān)性所花費(fèi)的工作量最小。
      本發(fā)明的再一個(gè)目的是處理器能夠動(dòng)態(tài)地了解它能并行執(zhí)行一個(gè)指令流中若干指令的操作。
      本發(fā)明的最后另一個(gè)目的是處理器能夠了解它能并行執(zhí)行多個(gè)指令流。
      在該發(fā)明中,稱(chēng)作譯碼指令緩沖器(DIB)的一個(gè)緩沖器被用來(lái)存儲(chǔ)代表能夠被并行執(zhí)行的指令的命令組。在一個(gè)DIB組中的每個(gè)模式可以是一條長(zhǎng)指令的譯碼操作,命名為被譯碼的長(zhǎng)指令(LDI)。每條指令可以包括執(zhí)行該指令所需要的所有信息,例如,包括執(zhí)行指令中采用的功能單元和寄存器資源。此LDI也可包括指向下一組和/或根據(jù)當(dāng)前指令的輸出要執(zhí)行的下個(gè)LDI的指針集合。
      DIB同一臺(tái)常規(guī)的計(jì)算機(jī)處理設(shè)備一起進(jìn)行工作,后者包括一個(gè)存儲(chǔ)系統(tǒng)、一個(gè)指令隊(duì)列,以及一個(gè)饋送到一組執(zhí)行單元的指令調(diào)度單元。當(dāng)一條指令在DIB中得不到時(shí),這條指令和隨后的指令從存儲(chǔ)器系統(tǒng)中取出,送到指令隊(duì)列,并且以常規(guī)方式執(zhí)行,其中或者包括可用的功能單元的子集,或者專(zhuān)用于該目的的功能單元。在常規(guī)設(shè)備執(zhí)行指令的同時(shí),一個(gè)組格式化裝置(Formatter)產(chǎn)生一組LDI,其中每一個(gè)是能夠并行執(zhí)行的一組原始指令的替代編碼。在構(gòu)成LDI時(shí),組格式化裝置分析指令和指令執(zhí)行時(shí)間之間的相關(guān)性。由組格式化裝置構(gòu)成的每組LDI被存儲(chǔ)在DIB中,以便同一組指令的下一次執(zhí)行可以在全部功能單元的基礎(chǔ)上從DIB中直接執(zhí)行,不需要為相關(guān)性和執(zhí)行時(shí)間的分析花費(fèi)時(shí)間。
      DIB可以被構(gòu)成為超高速緩沖存儲(chǔ)器,由指令標(biāo)識(shí)符,例如原始指令流中的指令地址來(lái)索引。在這種最簡(jiǎn)單的形式中,它可以被安排成一個(gè)存儲(chǔ)器,采用地址中的一適當(dāng)?shù)奈唤M來(lái)存取。在這種情況下,全部地址與其內(nèi)容存儲(chǔ)在一起或者存儲(chǔ)在并行存儲(chǔ)器中,并且與所要求的地址進(jìn)行比較,來(lái)驗(yàn)證所述的組。存儲(chǔ)器系統(tǒng)也與該存取并行地被存取,從而,如果DIB中有失配的話,可以在沒(méi)有存儲(chǔ)器系統(tǒng)延遲的情況下恢復(fù)執(zhí)行。


      圖1示出了根據(jù)本發(fā)明的計(jì)算機(jī)處理裝置的結(jié)構(gòu);圖2示出了圖1的并行機(jī)器的結(jié)構(gòu);圖3示出了圖2的譯碼指令緩沖器的項(xiàng)格式;圖4示出了圖2的當(dāng)前組緩沖器的項(xiàng)格式;圖5是圖2的譯碼指令緩沖器的功能方框圖;圖6是圖2的當(dāng)前組緩沖器的功能方框圖;圖7是由圖1的執(zhí)行單元所執(zhí)行的一系列指令的程序圖;圖8的表格示出了圖7的程序序列中的指令之間的相關(guān)性;圖9(A)-(C)是圖7的程序序列的可執(zhí)行路徑;圖10(A)-(C)示出了在分別處理圖9(A)-(C)的程序序列時(shí)圖1的組格式化裝置的操作;圖11是圖1的組格式化裝置的功能方框圖;圖12的流程圖示出了圖11的分配器在構(gòu)造一組LDI時(shí)的操作;圖13的流程圖示出了圖11的分配器在關(guān)閉一組LDI時(shí)的操作;圖14(A)-(B)示出了當(dāng)分配器在圖11的組緩沖器中構(gòu)造一組LDI時(shí)時(shí)間標(biāo)記表和組緩沖器的狀態(tài);圖15的流程圖示出了圖11的分配器在采用寄存器重新命名技術(shù)構(gòu)造一組LDI時(shí)的操作;圖16(A)-(B)示出了當(dāng)分配器在采用寄存器重新命名技術(shù)在圖11的組緩沖器中構(gòu)造一組LDI時(shí)時(shí)間標(biāo)記表和組緩沖器的狀態(tài);圖17的流程圖示出了分配器在處理指令以便將其結(jié)合到一組LDI中時(shí)進(jìn)行的另外操作;
      圖18(A)-(D)示出了當(dāng)分配器在采用圖17所示的附加操作在圖11的組緩沖器中構(gòu)造一組LDI,以使得裝入和存儲(chǔ)操作保持次序時(shí)的時(shí)間標(biāo)記表和組緩沖器的狀態(tài);圖19示出了圖1的組格式化裝置在根據(jù)由圖1的并行機(jī)產(chǎn)生的組的執(zhí)行結(jié)果來(lái)修正一個(gè)組時(shí)的操作;圖20是圖2的當(dāng)前組緩沖器的功能方框圖,它能夠擴(kuò)展被壓縮的LDI,以便由并行機(jī)的執(zhí)行單元所執(zhí)行。
      參看圖1,本發(fā)明的計(jì)算機(jī)處理設(shè)備包括一個(gè)常規(guī)的時(shí)序機(jī),它有一個(gè)或多個(gè)定點(diǎn)執(zhí)行單元101(示出了一個(gè)),一個(gè)或多個(gè)浮點(diǎn)執(zhí)行單元103(示出了一個(gè)),以及一個(gè)或多個(gè)轉(zhuǎn)移處理單元105(示出了一個(gè))。存儲(chǔ)系統(tǒng)107存儲(chǔ)要被執(zhí)行單元101、103、105執(zhí)行的指令,數(shù)據(jù)超高速緩沖存儲(chǔ)器109存儲(chǔ)與定點(diǎn)和浮點(diǎn)執(zhí)行單元103和105執(zhí)行的指令有關(guān)的數(shù)據(jù),由于是常規(guī)形式的,因此存儲(chǔ)系統(tǒng)107可以包括一個(gè)主存儲(chǔ)器和一個(gè)超高速緩沖存儲(chǔ)器存儲(chǔ)子系統(tǒng)。通常數(shù)據(jù)超高速緩沖存儲(chǔ)器109和超高速緩沖存儲(chǔ)器存儲(chǔ)子系統(tǒng)被設(shè)置為相關(guān)的結(jié)構(gòu)。數(shù)據(jù)超高速緩沖存儲(chǔ)器109可以是與存儲(chǔ)器系統(tǒng)107的超高速緩沖存儲(chǔ)器存儲(chǔ)子系統(tǒng)分開(kāi)的一個(gè)結(jié)構(gòu)(通常稱(chēng)為分離超高速緩沖存儲(chǔ)器),或者是存儲(chǔ)系統(tǒng)107的超高速緩沖存儲(chǔ)器存儲(chǔ)子系統(tǒng)的一部分(通常稱(chēng)為組合超高速緩沖存儲(chǔ)器)。
      指令隊(duì)列111連接起來(lái)接收從存儲(chǔ)系統(tǒng)107中取出的指令。指令可以逐條從存儲(chǔ)系統(tǒng)107中取出,也可以成組取出,通常將組稱(chēng)為塊。在超高速緩沖存儲(chǔ)器中,最佳的方式是取指令塊,因?yàn)樗転椴僮鲾?shù)提供更大的超高速緩沖存儲(chǔ)器存取。在目前的情況下,一塊通常是一個(gè)4倍字(QW-16個(gè)字節(jié))或者是8個(gè)字(32個(gè)字節(jié)),但是在未來(lái)的機(jī)器中,塊的規(guī)格可能會(huì)更大。此外,指令可以或者不可以定位在塊邊界上。
      從存儲(chǔ)系統(tǒng)107取出指令到指令隊(duì)列111的操作由取指控制單元113協(xié)調(diào)。取指控制單元113的功能可以包括產(chǎn)生地址和對(duì)取指地址的翻譯。取指控制單元113的基本功能是將某個(gè)地址裝入取指地址寄存器(沒(méi)有示出),而該地址識(shí)別從存儲(chǔ)系統(tǒng)107取到指令隊(duì)列111的指令塊。取指控制單元111也可以包括,控制存儲(chǔ)系統(tǒng)107推測(cè)性地預(yù)取指令到指令隊(duì)列111的預(yù)取邏輯。通常這種預(yù)取邏輯包括一個(gè)轉(zhuǎn)移歷史表和相關(guān)的控制邏輯。在Pomerene等人的美國(guó)專(zhuān)利4679141中可以看到對(duì)這種預(yù)取邏輯的詳細(xì)描述,該美國(guó)專(zhuān)利被共同轉(zhuǎn)讓給本發(fā)明的受讓人,在此將全部作為本發(fā)明的參考文獻(xiàn)。
      調(diào)度單元115從指令隊(duì)列111裝入指令,將該指令譯碼,并且調(diào)度被譯碼的指令由適當(dāng)?shù)膱?zhí)行單元101、103和105執(zhí)行,由定點(diǎn)和浮點(diǎn)執(zhí)行單元101和103執(zhí)行的指令結(jié)果被送到通用寄存器組117進(jìn)行更新。由轉(zhuǎn)移處理單元105執(zhí)行的轉(zhuǎn)移指令的結(jié)果被提供到條件寄存器119進(jìn)行更新。定點(diǎn)和浮點(diǎn)執(zhí)行單元101、103和轉(zhuǎn)移處理單元105按常規(guī)方式對(duì)專(zhuān)用寄存器組120進(jìn)行存取。專(zhuān)用寄存器組120可以包括例如一個(gè)連接寄存器、一個(gè)計(jì)數(shù)寄存器和一個(gè)定點(diǎn)異常寄存器。
      完成/異常單元116從調(diào)度到執(zhí)行跟蹤指令,然后按程序次序推出指令。此外,完成/異常單元116包括一個(gè)程序計(jì)數(shù)器(沒(méi)有示出),它存儲(chǔ)指令流中的下一條指令的地址,并且經(jīng)由NEXT_IADDR總線121將該地址輸出到取指控制單元113。
      運(yùn)行常規(guī)時(shí)序機(jī)的邏輯大部分類(lèi)似于Grohoski,G.F.在IBMJournal of Research and Development,vol.34,no.1,Jan.1990,pp.37-58″Machine Organization of the IBM RISC System/6000Processor″中描述的邏輯。一般來(lái)說(shuō),由取指控制單元113向存儲(chǔ)系統(tǒng)107提供的地址被用于存取一組連續(xù)的指令,并將它們?nèi)〉街噶铌?duì)列111。在接下來(lái)的一個(gè)周期,調(diào)度單元115從指令隊(duì)列的底部裝入一條和多條指令,對(duì)這些指令進(jìn)行譯碼,并且安排被譯碼的指令由適當(dāng)?shù)膱?zhí)行單元101、103、105執(zhí)行。例如,調(diào)度單元115可以安排一條定點(diǎn)指令到定點(diǎn)單元101,一條浮點(diǎn)指令到浮點(diǎn)單元103,一條轉(zhuǎn)移指令到轉(zhuǎn)移處理單元105。此外,如果沒(méi)有一條被譯碼指令是轉(zhuǎn)移指令,那么可以對(duì)指令隊(duì)列111中的剩余指令進(jìn)行掃描,來(lái)搜尋轉(zhuǎn)移指令,如果找到一條轉(zhuǎn)移指令,那么該指令也在當(dāng)前的周期中被安排給轉(zhuǎn)移處理單元105執(zhí)行。
      在接下來(lái)的周期。執(zhí)行從調(diào)度單元115送出的被安排的指令。在這同一周期,完成/異常單元116重排已完成的指令的結(jié)果,并且將下一條指令的地址經(jīng)由NEXT_IADDR總線121提供給取址單元113。
      此外,時(shí)序機(jī)的調(diào)度單元115可以將某些被譯碼指令翻譯為一條和多條指令,在安排這些被翻譯的指令由執(zhí)行單元101、103、105執(zhí)行之前,這些指令與原始的指令具有不同的格式。例如,調(diào)度單元115可以翻譯某些復(fù)雜的(例如CISC類(lèi)型)指令為一條和多條較簡(jiǎn)單的(例如RISC類(lèi)型)指令,并且安排這些指令由執(zhí)行單元101、103、105來(lái)執(zhí)行。
      如上所述,常規(guī)的時(shí)序機(jī)每周期最多能夠執(zhí)行一個(gè)定點(diǎn)操作、一個(gè)浮點(diǎn)操作以及一個(gè)轉(zhuǎn)移操作,條件是指令塊包括了所需要的指令,并且相關(guān)的數(shù)據(jù)被提供在存儲(chǔ)系統(tǒng)的超高速緩沖存儲(chǔ)器子系統(tǒng)中,另外轉(zhuǎn)移處理單元105不浪費(fèi)等待由定點(diǎn)和/或浮點(diǎn)執(zhí)行單元101、103產(chǎn)生結(jié)果的周期。
      根據(jù)本發(fā)明,在將一條與多條指令調(diào)度給執(zhí)行單元101、103和105的同時(shí),被調(diào)度的指令提供給組格式化裝置123進(jìn)行分析。在指令執(zhí)行的同時(shí)和/或指令執(zhí)行之后,組格式化裝置123分析指令的依賴(lài)性和指令等待時(shí)間,根據(jù)分析的情況產(chǎn)生多組長(zhǎng)譯碼指令(LDI),并且將多組LDI作為指令項(xiàng)保存在并行機(jī)125的譯碼指令緩沖器(DIB)中。每組代表存儲(chǔ)在存儲(chǔ)系統(tǒng)107中的原始指令流的一個(gè)序列SG。一個(gè)特定組的每個(gè)LDI代表能在一個(gè)單機(jī)器周期中并行執(zhí)行的(原始指令流的序列SG的)一個(gè)子序列SL的替代編碼。由組格式化裝置123構(gòu)成的多組LDIs被保存在并行機(jī)125的DIB中,所以同一指令序列的下一步執(zhí)行可以由并行機(jī)125的功能單元并行執(zhí)行。下面描述的組格式化裝置和并行機(jī)的執(zhí)行可以是流水式的,以提供改進(jìn)的吞吐量。
      重要的是,組格式化裝置123將LDI按組安排,以便在組內(nèi)不按次序執(zhí)行指令,從而使并行機(jī)125的效率最大。此外,注意到組格式化裝置123并不簡(jiǎn)單地翻譯存儲(chǔ)在存儲(chǔ)系統(tǒng)107中的指令,使得這些指令和存儲(chǔ)在DIB中的替代編碼之間具有一一對(duì)應(yīng)關(guān)系。事實(shí)上,組格式化裝置123相對(duì)于先前的被調(diào)度指令分析被調(diào)度的指令相關(guān)性和指令等待時(shí)間,并且根據(jù)這一分析推導(dǎo)出替代編碼。由于由組格式化裝置進(jìn)行的分析是“上下文相關(guān)的”(即相關(guān)于先前指令的控制流和運(yùn)行約束),組格式化裝置可以導(dǎo)出與存儲(chǔ)在存儲(chǔ)系統(tǒng)107中的特定指令有關(guān)的多個(gè)替代編碼。例如,考慮存儲(chǔ)在存儲(chǔ)系統(tǒng)107中的兩個(gè)指令序列,第一指令序列包括在存儲(chǔ)系統(tǒng)107的存儲(chǔ)單元A、B、X、Y位置上的指令,第二指令序列包括在存儲(chǔ)系統(tǒng)107的存儲(chǔ)單元A、C、Y位置上的指令。在這個(gè)例子中,組格式化裝置123可以產(chǎn)生與每個(gè)序列有關(guān)的替代編碼,然而,由組格式化裝置123產(chǎn)生的所有這些替代編碼都與指令A(yù)和Y有關(guān)。下面對(duì)組格式化裝置123作更詳細(xì)的描述。
      如圖2所示,并行機(jī)125包括一個(gè)當(dāng)前組緩沖器(CGB)204和若干能夠執(zhí)行存儲(chǔ)在CGB204中的替代被譯碼指令的執(zhí)行單元。并行機(jī)125的執(zhí)行單元可以是對(duì)稱(chēng)的,從而可以進(jìn)行定點(diǎn)運(yùn)行、浮點(diǎn)運(yùn)行和轉(zhuǎn)移運(yùn)行中的任意一種。在另一種情況下,并行、125的執(zhí)行單元可以是非對(duì)稱(chēng)的。例如,如圖2所示,并行機(jī)125包括四個(gè)功能單元FU0,…,F(xiàn)U3,和兩個(gè)轉(zhuǎn)移處理單元BP0,BP1。功能單元可以是定點(diǎn)執(zhí)行單元和/或浮點(diǎn)執(zhí)行單元。在這種情況下,每個(gè)功能單元具有經(jīng)由GPR總線往來(lái)于通用寄存器117、經(jīng)由數(shù)據(jù)_超高速緩沖存儲(chǔ)器總線往來(lái)于數(shù)據(jù)超高速緩沖存儲(chǔ)器109、經(jīng)由CR總線往來(lái)于條件寄存器119以及經(jīng)由SPR總線往來(lái)于SPR裝置120的一條通路。此外,執(zhí)行定點(diǎn)操作的并行機(jī)125的執(zhí)行單元可以有計(jì)算和翻譯地址的能力,并且能與數(shù)據(jù)超高速緩沖存儲(chǔ)器進(jìn)行通訊。對(duì)并行機(jī)執(zhí)行單元的例子的詳細(xì)描述可以參看美國(guó)申請(qǐng)(代理人案卷號(hào)AT992-907),該申請(qǐng)的申請(qǐng)人是Ebcioglu和Groves,并且與本發(fā)明轉(zhuǎn)讓給同一受讓人,該申請(qǐng)?jiān)诖巳淖鳛楸景l(fā)明的參考文獻(xiàn)。此外,如果存儲(chǔ)在CGB 204中由LDI編碼的指令的格式與時(shí)序機(jī)的一個(gè)和多個(gè)執(zhí)行單元兼容,兼容指令可以在時(shí)序機(jī)的執(zhí)行單元上執(zhí)行,從而使得并行機(jī)125和時(shí)序機(jī)共享執(zhí)行單元。
      一般來(lái)說(shuō),DIB 200可以像超高速緩沖存儲(chǔ)器一樣安排作為一個(gè)指令項(xiàng)陣列,其中,每個(gè)指令項(xiàng)包括一個(gè)組標(biāo)識(shí)符(GID)和組指令數(shù)據(jù)(GRP)。如圖3所示。組標(biāo)識(shí)符(GID)識(shí)別由指令項(xiàng)編碼的指令組內(nèi)的第一指令的地址。組標(biāo)識(shí)符(GID)最好是組內(nèi)第一指令的地址的一部分。組指令數(shù)據(jù)(GRP)代表在組內(nèi)被編碼的LDI集。此外,每個(gè)指令項(xiàng)也可以包括一個(gè)應(yīng)用字段U(沒(méi)有示出),它可以在例如DIB200滿時(shí)用于控制指令項(xiàng)的替換和/或重寫(xiě)。如圖5所示,DIB200可以像常規(guī)的超高速緩沖存儲(chǔ)器一樣被安排為一個(gè)指令項(xiàng)陣列300。例如,DIB200可以包括256個(gè)指令項(xiàng),每個(gè)指令項(xiàng)包括128個(gè)字節(jié)。此外,DIB200可以具有全相聯(lián)、組相聯(lián)或直接映象結(jié)構(gòu)。如圖所示,DIB200是組相聯(lián)的,它被安排為2組,每組128個(gè)指令項(xiàng)。DIB200的結(jié)構(gòu)與運(yùn)行的詳細(xì)例子可以參看Addison-Wesley Pub.Co.,1987,第29至69頁(yè),Stone所著的“高性能計(jì)算機(jī)體系結(jié)構(gòu)”,在此全文作為本發(fā)明的參考文獻(xiàn)。
      如圖4和圖6所示,CGB204可以被安排為一個(gè)指令項(xiàng)陣列,其中每個(gè)指令項(xiàng)存儲(chǔ)一個(gè)LDI,如上所述,LDI代表能夠在一個(gè)單機(jī)器周期中執(zhí)行的一組原始指令的一個(gè)替代編碼。例如,CGB204可以包括如圖所示的四個(gè)指令項(xiàng)LDI0、LDI1、LDI2、LDI3。每個(gè)LDI包括描述一個(gè)單機(jī)器周期內(nèi)對(duì)圖2的并行機(jī)125的執(zhí)行單元的控制的操作字段。例如,LDI0包括分別控制功能單元FU0、FU1、FU2、FU3的操作字段FU00,F(xiàn)U10、FU20、FU30,以及包括分別控制轉(zhuǎn)移處理單元BP0和BP1的操作字段BP00和BP10。在這個(gè)例子中,LDI0的操作字段可以在一個(gè)第一機(jī)器周期控制并行機(jī)125的執(zhí)行單元,操作字段LDI1在繼第一周期之后的一個(gè)第二機(jī)器周期控制執(zhí)行單元,操作字段LDI2在繼第一周期和第二周期之后的一個(gè)第三機(jī)器周期控制執(zhí)行單元,操作字段LDI3在繼第一周期、第二周期和第三周期之后的一個(gè)第四機(jī)器周期控制執(zhí)行單元。
      重要的是,LDI0、LDI1、LDI2、LDI3中的一個(gè)包括一個(gè)BP操作字段,它通過(guò)控制一個(gè)轉(zhuǎn)移處理單元BP0或BP1來(lái)中止該組,以便轉(zhuǎn)移到組外。該轉(zhuǎn)移到組外的地址可以是到存儲(chǔ)在DIB200中的另一組的地址,也可以是到存儲(chǔ)在存儲(chǔ)系統(tǒng)107的原始序列中的一條指令的地址。例如,如果一組是滿的(即在每個(gè)LDI中包含指令),LDI3可以包括操作字段BP03,它通過(guò)控制轉(zhuǎn)移處理單元BP0來(lái)中止該組,以便轉(zhuǎn)移到組外。在另一個(gè)例子中,LDI1可以包括操作字段BP11,它通過(guò)控制轉(zhuǎn)移處理單元BP1來(lái)中止該組,以便轉(zhuǎn)移到組外。轉(zhuǎn)移處理單元最好是通過(guò)將組外的地址放在NEXT_IADDR總線121上來(lái)向組外轉(zhuǎn)移。
      此外,由于并行機(jī)125的多個(gè)轉(zhuǎn)移處理單元能夠在一個(gè)給定的機(jī)器周期內(nèi)完成一條以上的轉(zhuǎn)移指令,因此最好將一個(gè)轉(zhuǎn)移處理單元指定為比其它轉(zhuǎn)移處理單元具有較高的優(yōu)先級(jí),從而,如果兩個(gè)轉(zhuǎn)移處理單元都確定由相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元將做了分解的轉(zhuǎn)移指令的目標(biāo)地址放在NEXT_IADDR總線121上。例如,可以指定BP0比BP1具有較高的優(yōu)先級(jí)。在這種情況下,與BP1相關(guān)的LDI的操作字段所相應(yīng)的轉(zhuǎn)移指令比與BP0相關(guān)的LDI的操作字段所相應(yīng)的轉(zhuǎn)移指令在原始程序序列中較后出現(xiàn)。因此,在給定的LDI中,如果兩個(gè)轉(zhuǎn)移處理單元BP0和BP1都確定由相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元BP0將做了分解的轉(zhuǎn)移指令的目標(biāo)地址放在NEXT_IADDR總線121上,從而保持原始程序序列的控制流。
      并行機(jī)125的功能單元按次序執(zhí)行CGB204的LDI。更詳細(xì)地說(shuō),在第一機(jī)器周期,LDI0的操作字段被調(diào)度到并行機(jī)125的功能單元予以執(zhí)行,LDI1、LDI2、LDI3的操作字段被分別移位到LDI0、LDI1、LDI2。在該第一周期,功能單元FU0,…,F(xiàn)U3執(zhí)行由它們?cè)贚DI0中的相應(yīng)操作字段編碼的指令。此外,在第一周期,轉(zhuǎn)移處理單元BP0和BP1通過(guò)檢查條件寄存器119并將其與要求的條件進(jìn)行比較,來(lái)執(zhí)行由它們?cè)贚DI0中的相應(yīng)操作字段編碼的轉(zhuǎn)移指令。
      如果轉(zhuǎn)移處理單元BP0和BP1中僅有一個(gè)確定由LDI0的相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么這一個(gè)轉(zhuǎn)移處理單元檢查已做了分解的轉(zhuǎn)移指令的目標(biāo)地址,確定目標(biāo)地址是否指向當(dāng)前存儲(chǔ)在CGB204中的組內(nèi)的一個(gè)LDI,或指向組外的指令。如果這一個(gè)轉(zhuǎn)移處理單元確定目標(biāo)地址指向組內(nèi)的一個(gè)LDI,那么這個(gè)轉(zhuǎn)移處理單元相應(yīng)地移位LDI的操作字段,以使得特定的LDI由并行機(jī)125的功能單元和轉(zhuǎn)移處理單元在下一機(jī)器周期調(diào)度執(zhí)行。然而,如果這一個(gè)轉(zhuǎn)移處理單元確定目標(biāo)地址指向組外,那么這個(gè)轉(zhuǎn)移處理單元通過(guò)將目標(biāo)地址提供在NEXT_IADDR總線121上來(lái)向組外轉(zhuǎn)移。
      如果兩個(gè)轉(zhuǎn)移處理單元BP0和BP1都確定由LDI0的相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元,例如BP0,檢查已做了分解的轉(zhuǎn)移指令的目標(biāo)地址,來(lái)確定目標(biāo)地址是否指向當(dāng)前存儲(chǔ)在CGB204中的組內(nèi)的一個(gè)LDI,或指向組外的指令。如果具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元確定目標(biāo)地址指向組內(nèi)的一個(gè)LDI,那么這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元相應(yīng)地移位LDI的操作字段,以使得特定的LDI由并行機(jī)125的功能單元和轉(zhuǎn)移處理單元在下一機(jī)器周期調(diào)度執(zhí)行。然而,如果這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元確定目標(biāo)地址指向組外,那么這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元通過(guò)將目標(biāo)地址提供在NEXT_IADDR總線121上來(lái)向組外轉(zhuǎn)移。
      最后,如果兩個(gè)轉(zhuǎn)移處理單元BP0和BP1都確定由LDI0的相應(yīng)的操作字段編碼的轉(zhuǎn)移指令沒(méi)有做分解,并行機(jī)125繼續(xù)處理序列中的下一個(gè)LDI,除非當(dāng)前的LDI包括如上所述的中止轉(zhuǎn)移到組外,此時(shí)組外的地址被放在NEXT_IADDR總線121上。
      在描述了DIB200和CGB204的結(jié)構(gòu)之后,現(xiàn)在參考圖2-6來(lái)描述DIB200和CGB204的運(yùn)行。為了方便描述起見(jiàn),考慮三個(gè)機(jī)器周期,其中第二機(jī)器周期緊隨第一機(jī)器周期,第三機(jī)器周期緊隨第二機(jī)器周期。此外,在第一機(jī)器周期中,常規(guī)的時(shí)序機(jī)已經(jīng)完成了一條指令,并將下一條指令的地址放在NEXT_IADDR總線121上。如上所述,DIB200存儲(chǔ)代表原始指令集的數(shù)據(jù),使得同一原始指令集的下一步執(zhí)行可以由并行機(jī)125的執(zhí)行單元并行執(zhí)行。另一方面,CGB202存儲(chǔ)代表當(dāng)前正由并行機(jī)125的執(zhí)行單元并行執(zhí)行的一個(gè)單一原始指令集或組的數(shù)據(jù)。
      為了確定下一條指令是否是在DIB200中編碼的指令集的一部分,一個(gè)NID發(fā)生器206根據(jù)NEXT_IADDR總線121上提供的下一條指令的地址產(chǎn)生下一條指令標(biāo)識(shí)符(NID)。該下一條指令標(biāo)識(shí)符NID必須對(duì)應(yīng)于DIB200的指令項(xiàng)的GID(s)。例如,當(dāng)每個(gè)指令項(xiàng)的GID是組中第一指令的地址的一部分時(shí),該下一條指令標(biāo)識(shí)符(NID)可以是NEXT_IADDR總線12上提供的地址的相應(yīng)部分。
      在第一機(jī)器周期,控制單元202經(jīng)由DIB控制總線208控制DIB200將NID發(fā)生器206產(chǎn)生的NID裝入輸入鎖存器304,如圖5所示。在第一機(jī)器周期,存儲(chǔ)在DIB200中的輸入鎖存器304的NID或全部NID的一部分被提供給一個(gè)譯碼器306,它的功能是啟動(dòng)陣列300的相應(yīng)行。被啟動(dòng)行的每個(gè)指令項(xiàng)(如圖所示的兩個(gè)指令項(xiàng))被從陣列300讀出,并與存儲(chǔ)在輸入鎖存器304中的NID一起提供給命中識(shí)別與檢測(cè)邏輯308。命中識(shí)別與檢測(cè)邏輯確定從陣列304讀出的一個(gè)指令項(xiàng)的GID是否與經(jīng)由輸入鎖存器304提供的NID匹配。如果該條件滿足,命中識(shí)別與檢測(cè)邏輯308輸出一個(gè)DIB命中信號(hào)到控制單元202,并且輸出匹配指令項(xiàng)的GRP數(shù)據(jù)。否則,命中識(shí)別與檢測(cè)邏輯308輸出一個(gè)DIB未命中信號(hào)到控制單元202。
      在第一周期,如果控制單元202從DIB200的命中識(shí)別與檢測(cè)邏輯308接收一個(gè)DIB命中信號(hào)(即指令是存儲(chǔ)在DIB200中的一個(gè)組的一部分),控制單元202控制CGB204裝入由DIB200輸出的組數(shù)據(jù)。然而,如果控制單元202從DIB200的命中識(shí)別與檢測(cè)邏輯308接收一個(gè)DIB未命中信號(hào)(即指令不是存儲(chǔ)在DIB200中的一個(gè)組的一部分),控制單元202控制時(shí)序機(jī)在第二周期執(zhí)行由NEXT_IADDR總線121上提供的地址所指示的下一條指令。
      在第二周期,并行機(jī)125的功能單元和轉(zhuǎn)移處理單元執(zhí)行在第一周期裝入到CGB204的LDI組的LDI0。如上所述,并行機(jī)125的轉(zhuǎn)移處理單元通過(guò)檢查條件寄存器119并將其與要求的條件進(jìn)行比較,執(zhí)行由LDI0的相應(yīng)操作字段編碼的轉(zhuǎn)移指令。
      如果轉(zhuǎn)移處理單元BP0或BP1中僅有一個(gè)確定由LDI0的相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么這一個(gè)轉(zhuǎn)移處理單元檢查已做了分解的轉(zhuǎn)移指令的目標(biāo)地址,確定目標(biāo)地址是否指向當(dāng)前存儲(chǔ)在CGB204中的組內(nèi)的一個(gè)LDI,或指向組外的指令。如果這一個(gè)轉(zhuǎn)移處理單元確定目標(biāo)地址指向組內(nèi)的一個(gè)LDI,那么這個(gè)轉(zhuǎn)移處理單元相應(yīng)地移位LDI的操作字段,以使得特定的LDI被調(diào)度給并行機(jī)125的功能單元和轉(zhuǎn)移處理單元在第三機(jī)器周期執(zhí)行。然而,如果這一個(gè)轉(zhuǎn)移處理單元確定目標(biāo)地址指向組外,那么這個(gè)轉(zhuǎn)移處理單元將目標(biāo)地址提供到NEXT_IADDR總線121上。
      如果兩個(gè)轉(zhuǎn)移處理單元BP0和BP1都確定由LDI0的相應(yīng)的操作字段編碼的轉(zhuǎn)移指令已經(jīng)做了分解,那么具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元,例如BP0,檢查已做了分解的轉(zhuǎn)移指令的目標(biāo)地址,來(lái)確定目標(biāo)地址是否指向當(dāng)前存儲(chǔ)在CGB204中的組內(nèi)的一個(gè)LDI,或指向組外的指令。如果具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元確定目標(biāo)地址指向組內(nèi)的一個(gè)LDI,那么這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元相應(yīng)地移位LDI的操作字段,以使得特定的LDI被調(diào)度給并行機(jī)125的功能單元和轉(zhuǎn)移處理單元在第三機(jī)器周期執(zhí)行。然而,如果這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元確定目標(biāo)地址指向組外,那么這個(gè)具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元將目標(biāo)地址提供到NEXT_IADDR總線121上。
      此外,在第二周期,如果LDI0包括一個(gè)如上所述在組外的中止轉(zhuǎn)移指令,那么適當(dāng)?shù)霓D(zhuǎn)移處理單元將組外的下一條指令的地址提供給NEXT_IADDR總線121。
      在第二周期中,當(dāng)并行機(jī)125的一個(gè)轉(zhuǎn)移處理單元將一個(gè)地址提供給NEXT_IADDR總線121時(shí),NID發(fā)生器206根據(jù)NEXT_IADDR總線121上的地址產(chǎn)生下一個(gè)指令識(shí)別符(NID),并且控制單元202用如上所述產(chǎn)生的NID存取DIB200,來(lái)確定是否在DIB200中發(fā)現(xiàn)了匹配指令項(xiàng)。如果發(fā)現(xiàn)了,控制單元202從DIB200的命中識(shí)別與檢測(cè)邏輯308接收一個(gè)DIB命中信號(hào),并且控制單元202控制CGB204裝入由DIB200輸出的組數(shù)據(jù),以在第三機(jī)器周期執(zhí)行。然而,如果沒(méi)有發(fā)現(xiàn)匹配指令項(xiàng),那么控制單元202從DIB200的命中識(shí)別與檢測(cè)邏輯308接收一個(gè)DIB未命中信號(hào),并且控制單元202控制時(shí)序機(jī)在第三周期執(zhí)行由NEXT_IADDR總線121上的地址所識(shí)別的下一條指令。
      最后,在第二周期,如果兩個(gè)轉(zhuǎn)移處理單元BP0和BP1都確定由LDI0的相應(yīng)操作字段編碼的轉(zhuǎn)移指令沒(méi)有予以分解,那么并行機(jī)125的運(yùn)行繼續(xù)到第三機(jī)器周期,在其中,序列中的下一個(gè)LDI,即LDI1,按如上所描述的在第二機(jī)器周期處理LDI0那樣被處理。
      因此,只要下一地址指向CGB204中的一個(gè)LDI或指向DIB200的一個(gè)指令項(xiàng),并行機(jī)125就在每個(gè)周期退出一個(gè)LDI。
      如上所述,并行機(jī)125中只有一個(gè)轉(zhuǎn)移處理單元存取DIB200來(lái)確定序列中的下一條指令是否在DIB200中。然而,本發(fā)明并非僅僅局限于此。在一個(gè)更復(fù)雜的實(shí)施例中,DIB200可以是多端口的,從而使得例如并行機(jī)125的兩個(gè)轉(zhuǎn)移處理單元BP0和BP1能夠存取DIB200。在這種情況下,DIB200的結(jié)構(gòu)可以予以改進(jìn),以使得若干匹配指令項(xiàng)可以從DIB中讀出,并且相應(yīng)于具有最高優(yōu)先級(jí)的轉(zhuǎn)移處理單元的匹配指令項(xiàng)被選擇并且被裝入到CGB204進(jìn)行處理。這種方法可以被用來(lái)使得確定序列中的下一條指令是否在DIB200中所需要的時(shí)間最短。
      在由時(shí)序機(jī)的執(zhí)行單元執(zhí)行指令的同時(shí)和/或即此之后,組格式化裝置123分析這些指令的相關(guān)性和指令等待性,根據(jù)分析結(jié)果產(chǎn)生長(zhǎng)譯碼指令(LDI)組,并且將LDI組作為指令項(xiàng)保存在并行機(jī)125的DIB中,以便這些指令的下一次執(zhí)行可以由并行機(jī)125并行進(jìn)行。
      現(xiàn)在采用圖7至10所示的一個(gè)例子描述組格式化裝置123根據(jù)原始指令序列的分析產(chǎn)生LDI組的運(yùn)行。
      圖7的程序圖示出了存儲(chǔ)在存儲(chǔ)系統(tǒng)107中將要由時(shí)序機(jī)的執(zhí)行單元101、103、105執(zhí)行的一個(gè)指令序列的例子。在指令a、b、c之后是一個(gè)轉(zhuǎn)移指令bcx,它測(cè)試一個(gè)條件x,如果x=0,轉(zhuǎn)移到指令d,如果x=1,轉(zhuǎn)移到指令k。在指令k的路線上有指令l、m、n和o,在指令d的路線上有指令e、f、g和另一個(gè)轉(zhuǎn)移指令bcy,它測(cè)試一個(gè)條件y,如果y=0,轉(zhuǎn)移到指令p,如果y=1,轉(zhuǎn)移到指令h。這兩個(gè)路線都向后并入指令i、j。
      圖8示出了序列內(nèi)每個(gè)指令的相關(guān)性。在這個(gè)序列中,指令a和b不依賴(lài)于其他指令。指令c依賴(lài)于指令a及指令b,這意味著它只能在指令a和b執(zhí)行之后才能執(zhí)行。其它指令與此類(lèi)似。最后,轉(zhuǎn)移指令bcx依賴(lài)于指令a的結(jié)果,而轉(zhuǎn)移指令bcy依賴(lài)于指令e的結(jié)果。
      圖9示出了由時(shí)序機(jī)的執(zhí)行單元101、103、105執(zhí)行指令序列的三個(gè)例子。在如圖9(A)所示的第一例中,轉(zhuǎn)移指令bcx采用與x=0對(duì)應(yīng)的路線,而轉(zhuǎn)移指令bcy采用與y=1對(duì)應(yīng)的路線。在如圖9(B)所示的第二例中,轉(zhuǎn)移指令bcx采用另一路線,即與x=1相對(duì)應(yīng)的通道。最后在如圖9(C)所示的第三例中,轉(zhuǎn)移指令bcx采用與x=0相對(duì)應(yīng)的路線,而轉(zhuǎn)移指令bcy采用與y=0相對(duì)應(yīng)的路線。
      圖10(A)示出了組格式化裝置123根據(jù)圖9(A)指令序列的分析結(jié)果產(chǎn)生一組LDI(LDI0,…,LDI3)的操作。指令序列以指令a和b開(kāi)頭。由于指令a和指令b不依賴(lài)于任何其它指令,組格式化裝置123分別產(chǎn)生對(duì)應(yīng)于指令a和b的操作字段FU0和FU1,并且將操作字段如圖所示放入LDI0。指令c跟在指令a和b之后。由于指令c同時(shí)依賴(lài)于指令a和b,組格式化裝置123產(chǎn)生相應(yīng)于指令C的操作字段FU0,并且將操作字段如圖所示放入LDI1。
      接下來(lái)是轉(zhuǎn)移指令bcx。如果轉(zhuǎn)移指令按次序放置(如圖所示),那么轉(zhuǎn)移指令必須在不早于先于轉(zhuǎn)移指令的指令的LDI之前被放在LDI中。要求這種條件是因?yàn)楫?dāng)執(zhí)行組的LDI時(shí),如果并行機(jī)125確定被編碼的轉(zhuǎn)移指令的轉(zhuǎn)移條件已得到滿足,那么必須完成轉(zhuǎn)移之前的指令。如果轉(zhuǎn)移指令不按次序安排,那么必須存儲(chǔ)額外的信息來(lái)指明對(duì)每條轉(zhuǎn)移指令相應(yīng)于特定轉(zhuǎn)移指令之前的指令的最后LDI。在這種情況下,當(dāng)執(zhí)行組的LDI時(shí),如果并行機(jī)125確定一條被編碼指令的轉(zhuǎn)移條件已經(jīng)得到滿足,那么并行機(jī)必須一直執(zhí)行LDI直到由存儲(chǔ)信息指明的最后的LDI為止,從而完成轉(zhuǎn)移指令之前的指令。
      因此,對(duì)于按序執(zhí)行轉(zhuǎn)移指令(如圖所示),組格式化裝置123相應(yīng)于轉(zhuǎn)移指令bcx產(chǎn)生一個(gè)操作字段BP0,并放入LDI1。此外,由組格式化裝置123在操作字段BP0中編碼的控制流最好相應(yīng)于時(shí)序機(jī)確定的轉(zhuǎn)移指令bcx的輸出。因此,由于時(shí)序機(jī)已確定條件x=0在遇到轉(zhuǎn)移指令bcx時(shí)滿足,圖中所示的LDI1的BP0指示如果x=1,并行機(jī)125應(yīng)該轉(zhuǎn)移到組外,至標(biāo)號(hào)LK(即指令k)。
      指令d在序列中跟隨在轉(zhuǎn)移指令bcx之后。由于指令d依賴(lài)于指令a和c,組格式化裝置123相應(yīng)于指令d產(chǎn)生一個(gè)操作字段,并放入LDI2。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令d的標(biāo)志位,指示指令d只有當(dāng)bcx的條件滿足x=0時(shí)才由并行機(jī)125執(zhí)行。指令d之后是指令e。由于指令e不依賴(lài)于任何其他指令,組格式化裝置123相應(yīng)于指令e產(chǎn)生一個(gè)操作字段FU2,并放入LBI0。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令e的標(biāo)志位,指示指令e只有當(dāng)bcx的條件滿足x=0時(shí)才由并行機(jī)125執(zhí)行。序列中的下一條指令是指令f。由于指令f依賴(lài)于指令e,組格式化裝置123相應(yīng)于指令f產(chǎn)生一個(gè)操作字段FU1,并放入LDI1。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令f的標(biāo)志位,指示指令f只有當(dāng)bcx的條件滿足x=0時(shí)才由并行機(jī)125執(zhí)行。序列中的下一條指令是指令g。由于指令g依賴(lài)于指令e和f,組格式化裝置123相應(yīng)于指令g產(chǎn)生一個(gè)操作字段FU1,并放入LDI2。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令g的標(biāo)志位,指示指令g只有當(dāng)bcx的條件滿足x=0時(shí)才由并行機(jī)125執(zhí)行。
      指令g之后是轉(zhuǎn)移指令bcy。由于轉(zhuǎn)移指令bcy必須在不早于先于轉(zhuǎn)移指令bcy的指令的LDI之前放入LDI,組格式化裝置123相應(yīng)于轉(zhuǎn)移指令bcy產(chǎn)生一個(gè)操作字段BP0,并放入LDI2。此外,由組格式化裝置123在操作字段BP0中編碼的控制流最好相應(yīng)于時(shí)序機(jī)確定的轉(zhuǎn)移指令bcy的輸出。因此,由于時(shí)序機(jī)已確定條件y=1在遇到轉(zhuǎn)移指令bcy時(shí)滿足,圖中所示的LDI2的操作字段BP0指示如果y=0,并行機(jī)125應(yīng)該轉(zhuǎn)移到組外,至標(biāo)號(hào)LP(即指令p)。
      指令h跟隨在轉(zhuǎn)移指令bcy之后。由于指令h依賴(lài)于指令b和f,組格式化裝置123相應(yīng)于指令h產(chǎn)生一個(gè)操作字段FU2,并放入LDI2。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令h的標(biāo)志位,指示指令h只有當(dāng)bcx的條件滿足x=0,并且bcy的條件滿足y=1時(shí)才由并行機(jī)125執(zhí)行。指令h之后是指令i。由于指令i依賴(lài)于指令d和g,組格式化裝置123相應(yīng)于指令i產(chǎn)生一個(gè)操作字段FU0,并放入LDI3。組格式化裝置123也可以設(shè)置一個(gè)相關(guān)于指令i的標(biāo)志位,指示指令i只有當(dāng)bcx的條件滿足x=0,并且bcy的條件滿足y=1時(shí)才由并行機(jī)125執(zhí)行。
      序列中接下來(lái)是指令j。由于指令j依賴(lài)于指令i,并且沒(méi)有更多可用的LDI(即指令i在組中最后的LDI(LDI3)中被編碼),指令j不能放在當(dāng)前組中。在這種情況下,組格式化裝置123通過(guò)產(chǎn)生一個(gè)操作字段BP0來(lái)關(guān)閉該組,該操作字段BP0只有當(dāng)bcx的條件滿足x=0并且bcy的條件滿足y=1時(shí)表示向指令j的地址的轉(zhuǎn)移。
      當(dāng)組關(guān)閉后,組格式化裝置123將被關(guān)閉的組寫(xiě)入到DIB中,然后通過(guò)產(chǎn)生相應(yīng)與指令j的一個(gè)操作字段FU0來(lái)開(kāi)始新組,并將操作字段放入新組的LDI0中。對(duì)于新組的指令序列,組格式化裝置123繼續(xù)上面所描述的操作。
      與此類(lèi)似,圖10(B)和10(C)示出了由組格式化裝置123分別根據(jù)圖9(B)和9(C)的指令序列所實(shí)現(xiàn)的組的格式。
      在描述了組格式化裝置123的運(yùn)行之后,現(xiàn)在提出組格式化裝置123的一個(gè)特定的硬件實(shí)施例。如圖11所示,組格式化裝置123可以包括一個(gè)分配器501,一個(gè)操作字段編碼器503,一個(gè)時(shí)間標(biāo)記表(TST)505和一個(gè)組緩沖器507。
      操作字段編碼器503接收由調(diào)度單元115調(diào)度的指令,由時(shí)序機(jī)的執(zhí)行單元執(zhí)行,并且還接受由時(shí)序機(jī)的轉(zhuǎn)移處理單元105產(chǎn)生的轉(zhuǎn)移輸出(BR)。對(duì)這些指令的每一個(gè),操作字段編碼器503產(chǎn)生至少一個(gè)相應(yīng)于該指令的操作字段。由操作字段編碼器503所作的編碼可以包括對(duì)指令進(jìn)行格式化,使得它的格式與并行機(jī)125的功能單元和轉(zhuǎn)移處理單元兼容,和/或?qū)⒅噶罘g為與并行機(jī)125的功能單元和轉(zhuǎn)移處理單元兼容的一個(gè)或多個(gè)操作字段。操作字段編碼器503翻譯指令操作的詳細(xì)描述可以參看例如美國(guó)專(zhuān)利申請(qǐng)(專(zhuān)利案卷號(hào)為Y0 995-026),申請(qǐng)人為P.Emma,發(fā)明名稱(chēng)為“由任意的基礎(chǔ)指令集結(jié)構(gòu)透明仿真現(xiàn)有指令集結(jié)構(gòu)的方法和設(shè)備”,該申請(qǐng)與本發(fā)明同時(shí)提交,并轉(zhuǎn)讓給同一受讓人,在此全文作為本發(fā)明的參考文獻(xiàn)。此外,對(duì)于轉(zhuǎn)移指令來(lái)說(shuō),由操作字段編碼器503進(jìn)行的編碼最好相應(yīng)于由從時(shí)序機(jī)的轉(zhuǎn)移處理單元105提供的BR數(shù)據(jù)所證實(shí)的轉(zhuǎn)移指令的輸出。
      TST505包括與指令或可使用或可定義的并行機(jī)125的每個(gè)寄存器資源有關(guān)的定時(shí)信息。一般來(lái)說(shuō),分配器501采用存儲(chǔ)在TST505中的定時(shí)信息和由操作字段編碼器503產(chǎn)生的操作字段來(lái)構(gòu)造當(dāng)前的LDI組。組緩沖器507在由分配器501構(gòu)造組時(shí)被用來(lái)存儲(chǔ)當(dāng)前的LDI組。
      詳細(xì)地說(shuō),TST505存儲(chǔ)識(shí)別當(dāng)前組的LDI的時(shí)間標(biāo)記識(shí)別符,在該當(dāng)前組中并行機(jī)125的相關(guān)寄存器資源是可用的(即定義該寄存器資源的組的先前指令將被完成)。例如,并行機(jī)125可以包括76個(gè)寄存器,如PowerPC微處理器的通常情況那樣,其中,76個(gè)寄存器中有32個(gè)通用寄存器,32個(gè)浮點(diǎn)寄存器,一個(gè)連接(LR)寄存器,一個(gè)計(jì)數(shù)(CTR)寄存器,一個(gè)定點(diǎn)異常(XER)寄存器和一個(gè)浮點(diǎn)狀態(tài)和控制(FPSCR)寄存器。在這種情況下,TST505可以包括76個(gè)單元,每個(gè)單元存儲(chǔ)一個(gè)識(shí)別當(dāng)前組的LDI的標(biāo)識(shí),其中的相關(guān)寄存器是可用的。
      對(duì)每個(gè)被調(diào)度來(lái)由時(shí)序機(jī)的執(zhí)行單元執(zhí)行的指令,分配器501與TST505、操作字段編碼器503和組緩沖器507交互作用,如圖12和13的流程圖所示,來(lái)形成并存儲(chǔ)與這些指令相關(guān)的LDI組。分配器501的執(zhí)行可能包括例如一個(gè)定序器或組合邏輯。從步驟600開(kāi)始,分配器501檢查特定的指令是否為一條條件轉(zhuǎn)移指令。如果是,那么在步驟602,分配器501控制操作字段編碼器503將相應(yīng)于指令的操作字段寫(xiě)入到對(duì)應(yīng)于組緩沖器507中的一個(gè)current_max標(biāo)志的LDI的可用存儲(chǔ)槽,并且對(duì)由指令定義的每個(gè)資源,將與資源相關(guān)的時(shí)間標(biāo)記識(shí)別符更新為{current_max標(biāo)志+1},并且將更新的時(shí)間標(biāo)記識(shí)別符寫(xiě)入TST505。current_max標(biāo)志跟蹤當(dāng)前最大LDI,從而使得條件轉(zhuǎn)移指令可以保持次序。如果條件轉(zhuǎn)移指令被無(wú)序放置,那么必須存儲(chǔ)額外的信息來(lái)指示對(duì)于每條轉(zhuǎn)移指令而言相應(yīng)于該特定轉(zhuǎn)移指令之前的指令的最后的LDI。在這種情況下,當(dāng)執(zhí)行組的LDI時(shí),如果并行機(jī)125確定一條被編碼的條件轉(zhuǎn)移指令的轉(zhuǎn)移條件已得到滿足,那么并行機(jī)執(zhí)行LDI直至由存儲(chǔ)的信息指示的最后的LDI,從而使得條件轉(zhuǎn)移指令之前的指令被完成。步驟602之后,為了歸并到當(dāng)前組,運(yùn)行返回步驟600,開(kāi)始處理序列的下一條指令。
      如果在步驟600中,分配器確定該指令不是一條件轉(zhuǎn)移指令,運(yùn)行繼續(xù)進(jìn)行到步驟601。在步驟601,對(duì)由特定指令使用的每個(gè)資源來(lái)說(shuō),分配器501從TST505檢索相應(yīng)于該資源的時(shí)間標(biāo)記識(shí)別符,識(shí)別其中的資源將是可用的LDI。在步驟603,分配器501確定在步驟601中檢索的最大的時(shí)間標(biāo)記識(shí)別符,為了示意起見(jiàn)標(biāo)記為T(mén)Suse(MAX)。在步驟605,對(duì)由特定指令定義的每個(gè)資源而言,分配器501從TST505檢索相應(yīng)于該資源的時(shí)間標(biāo)記識(shí)別符,識(shí)別其中的資源將是可用的LDI。在步驟607,分配器501確定在步驟605中檢索的最大的時(shí)間標(biāo)記識(shí)別符,為了示意起見(jiàn)標(biāo)記為T(mén)Sdef(MAX)。
      在步驟609,分配器501給TSuse(MAX)和TSdef(MAX)中的較大者設(shè)置一個(gè)最先LDI標(biāo)志,從而,如果特定的指令定義已經(jīng)由組中的指令所限定的資源(即重新定義的任何資源),那么特定指令位于這些指令之前。在步驟613,分配器501確定通過(guò)檢查該最先LDI標(biāo)志是否大于3來(lái)確定在當(dāng)前組中是否還有存放指令的空間(即組是否已滿)。如果是,那么組是滿的,運(yùn)行繼續(xù)到圖13所示的步驟,來(lái)關(guān)閉該組,并且將關(guān)閉的組從組緩沖器507寫(xiě)入到并行機(jī)125的DIB,對(duì)此下面將作討論。如果組不是滿的,運(yùn)行繼續(xù)到步驟615,確定相應(yīng)于最先LDI標(biāo)志的LDI中的存儲(chǔ)槽是否可用。如果不,在步驟617中,最先LDI標(biāo)志被遞增,運(yùn)行返回到步驟613。然而,如果在步驟615中,在相應(yīng)于最先LDI標(biāo)志的LDI中的一個(gè)存儲(chǔ)槽是可用的,那么運(yùn)行進(jìn)行到步驟619至621。在步驟619,分配器501控制操作字段編碼器503將相應(yīng)于指令的操作字段寫(xiě)入到存儲(chǔ)在組緩沖器507中的LDI的可用存儲(chǔ)槽中。在步驟621,對(duì)每個(gè)由指令定義的資源來(lái)說(shuō),分配器501將相關(guān)于資源的時(shí)間標(biāo)記識(shí)別符更新為{最先LDI標(biāo)志+1},并將被更新的時(shí)間標(biāo)志識(shí)別符寫(xiě)入到TST505中。
      在步驟622中,分配器501確定current_max標(biāo)志是否小于最先LDI標(biāo)志,如果是的話,將current_max標(biāo)志設(shè)置為最先LDI標(biāo)志,由此更新current_max標(biāo)志。
      在最佳實(shí)施例中,特定指令可以被指定為停止指令(即,即使組不滿也可以使組自動(dòng)關(guān)閉的指令)。例如,一條寄存器轉(zhuǎn)移指令可以被指定為一個(gè)停止指令。在這種情況下,在步驟623中,分配器501檢查指令是否為一條停止指令,如果是,運(yùn)行繼續(xù)到圖13所示的步驟,如下面所述,關(guān)閉該組,并且將關(guān)閉的組從組緩沖器505寫(xiě)入到并行機(jī)125的DIB。然而,如果在步驟623中,分配器確定指令不是一條停止指令,那么分配器的運(yùn)行返回到步驟601去處理序列中的下一條指令。
      分配器501關(guān)閉組并將被關(guān)閉的組從組緩沖器507寫(xiě)入到并行機(jī)125的DIB中的操作詳細(xì)地示于圖13。在步驟650中,分配器501啟動(dòng),檢查組是否由于一條寄存器轉(zhuǎn)移指令而被停止。這可以通過(guò)檢查步驟623中設(shè)置的一個(gè)標(biāo)志來(lái)完成。如果在步驟650中分配器501確定指令是一條寄存器轉(zhuǎn)移指令,那么在步驟652中,分配器控制操作字段編碼器503將相應(yīng)于指令的操作字段寫(xiě)入到相應(yīng)于組緩沖器507中一個(gè)current_max標(biāo)志的LDI的可用存儲(chǔ)槽,并且,對(duì)每個(gè)由指令定義的資源來(lái)說(shuō),將相關(guān)于資源的時(shí)間標(biāo)記識(shí)別符更新為{current_max標(biāo)志+1},并將被更新的時(shí)間標(biāo)記識(shí)別符寫(xiě)入TST505。
      如果在步驟650,分配器501確定指令不是轉(zhuǎn)移指令,那么組一定是滿的。因此,在步驟651,分配器501確定相應(yīng)于current_max標(biāo)志的LDI的BP0存儲(chǔ)槽是否可用。如果是,在步驟653,分配器501將代表一條終止轉(zhuǎn)移指令的操作字段放入組緩沖器505的可用的BP0存儲(chǔ)槽,并且繼續(xù)到步驟655。終止轉(zhuǎn)移指令的目標(biāo)地址指向序列中將要被執(zhí)行的下一條指令的地址。
      然而,如果在步驟651中,BP0存儲(chǔ)槽不可用,那么,運(yùn)行繼續(xù)到步驟617,其中分配器501把代表終止轉(zhuǎn)移指令的操作字段放到相應(yīng)于組緩沖器507的current_max標(biāo)志的LDI的BP1存儲(chǔ)槽中。并且運(yùn)行繼續(xù)到步驟655。終止轉(zhuǎn)移指令的目的地址指向序列中將要被執(zhí)行的下條指令的地址。
      在步驟655,分配器501將組緩沖器507寫(xiě)入并行機(jī)125的DIB。在步驟659,分配器501清除組緩沖器507。最后,在步驟661,在返回到相關(guān)于圖12所討論的步驟來(lái)開(kāi)始處理序列的下一條指令以便合并到一個(gè)新組之前,分配器501復(fù)位最先_LDI標(biāo)志和TST505。
      上面討論的組格式化裝置123的運(yùn)行最好用一個(gè)簡(jiǎn)單的例子示出??紤]下面的指令序列1. a r1=r2,r3(R1=R2+R3)2. a r4=r1,r5(R4=R1+R5)3.mulr3=r1,r4(R3=R1*R4)4. a r4=r2,r5(R4=R2+R5)5.incr4(R4=R4+1)6.mulr2=r3+r4(R2=R3*R4)圖14(A)和(B)示出了當(dāng)組格式化裝置123運(yùn)行來(lái)將這一指令序列格式化為上面相應(yīng)于圖12和13描述的一個(gè)組時(shí)TST505和組緩沖器507的狀態(tài)。
      在組的開(kāi)始,在處理第一指令之前,將TST505初始化,使每個(gè)存儲(chǔ)單元為零。對(duì)第一指令來(lái)說(shuō),由于指令采用的資源r2和r3有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟603將TSuse(MAX)定義為0。此外,由于由指令定義的資源r1有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為0,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為0的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI0)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI0中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第一指令的操作字段放在LDI0的存儲(chǔ)槽中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第一指令定義的資源(此時(shí)為r1)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為1,如圖14(A)所示。在步驟623,由于第一指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第二指令。
      對(duì)第二指令來(lái)說(shuō),由于指令采用的資源r1和r5分別有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符1和0,分配器在步驟603將TSuse(MAX)定義為1。此外,由于由指令定義的資源r4有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),所以它等于1,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為1的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI1)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI0中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第二指令的操作字段放在LDI1的FU0存儲(chǔ)槽中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第二指令定義的資源(此時(shí)為r4)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為2,如圖14(A)所示。在步驟623,由于第二指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第三指令。
      對(duì)第三指令來(lái)說(shuō),由于指令采用的資源r1和r4分別有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符1和2,分配器在步驟603將TSuse(MAX)定義為2,此外,由于由指令定義的資源r3有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),所以它等于2,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為2的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI2)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI2中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第三指令的操作字段放在LDI2的FU0存儲(chǔ)槽中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第三指令定義的資源(此時(shí)為r3)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為3,如圖14(A)所示。在步驟623,由于第三指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第四指令。
      對(duì)第四指令來(lái)說(shuō),由于指令采用的資源r2和r5有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟603將TSuse(MAX)定義為0,此外,由于由指令定義的資源r4有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符2,分配器在步驟607將TSdef(MAX)定義為2。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為2,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為2的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI2)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU1在LDI2中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第四指令的操作字段放在LDI2的FU1存儲(chǔ)槽中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第四指令定義的資源(此時(shí)為r4)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為3,如圖14(A)所示。在步驟623,由于第四指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第五指令。
      對(duì)第五指令來(lái)說(shuō),由于指令采用的資源r4有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符3,分配器在步驟603將TSuse(MAX)定義為3,此外,由于由指令定義的資源r4有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符3,分配器在步驟607將TSdef(MAX)定義為3。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為3,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為3的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI3)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI3中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第五指令的操作字段放在LDI3的FU0存儲(chǔ)槽中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第五指令定義的資源(此時(shí)為r4)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為4,如圖14(A)所示。在步驟623,由于第五指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第六指令。
      對(duì)第六指令來(lái)說(shuō),由于指令采用的資源r3和r4分別有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符3和4,分配器在步驟603將TSuse(MAX)定義為4,此外,由于由指令定義的資源r2有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于4,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為4的最先_LDI標(biāo)志大于三,分配器501轉(zhuǎn)移到圖13的步驟,關(guān)閉該組并將存儲(chǔ)在組緩沖器507中的被關(guān)閉的組寫(xiě)入并行機(jī)125的DIB。然后分配器501的運(yùn)行繼續(xù)進(jìn)行,按如上相應(yīng)于第一至第五指令所述將第六指令和隨后的指令格式化為一個(gè)新的組。
      當(dāng)在步驟609遇到資源重新定義條件時(shí),分配器501如上所述在繼定義公共資源的組的一條和多條先前指令之后將指令寫(xiě)入到一個(gè)LDI,即使由特定指令采用的資源可以在組中較早的LDI中得到。這不是對(duì)資源的最有效利用。在另一個(gè)實(shí)施例中,組格式化裝置123可以采用美國(guó)專(zhuān)利4992938中描述的常規(guī)寄存器更名技術(shù),該專(zhuān)利授予J.Cocke等人,與本發(fā)明轉(zhuǎn)讓給同一受讓人,并在此作為本發(fā)明的參考文獻(xiàn)。寄存器重新命名能夠達(dá)到對(duì)并行機(jī)125的資源的更有效利用。
      更詳細(xì)地說(shuō),如圖15所示,如上根據(jù)圖12和13所描述的分配器501的運(yùn)行可與予以修改,來(lái)使用寄存器重新命名技術(shù)。在這種情況下,在步驟700,分配器501首先檢查特定指令是否是一條件轉(zhuǎn)移指令。如果是,在步驟702,分配器501控制操作字段編碼器503將相關(guān)于指令的操作字段寫(xiě)入相應(yīng)于組緩沖器507中current_max標(biāo)志的LDI的可用存儲(chǔ)槽中,并且,對(duì)于每個(gè)由指令定義的資源,將相關(guān)于資源的時(shí)間標(biāo)記識(shí)別符更新為{current_max標(biāo)志+1},并將更新的時(shí)間標(biāo)記識(shí)別符寫(xiě)入到TST 505。如上所述,current_max標(biāo)志跟蹤當(dāng)前最大LDI,以便使得條件轉(zhuǎn)移指令可以保持次序。步驟702之后,為了歸并到當(dāng)前的組中,運(yùn)行返回到步驟700,開(kāi)始處理序列的下一條指令。
      如果在步驟700分配器501確定指令不是一條條件轉(zhuǎn)移指令,操作則進(jìn)行到步驟701。在步驟701,對(duì)由特定指令采用的每個(gè)資源來(lái)說(shuō),分配器501檢查與資源相關(guān)的一個(gè)重新命名標(biāo)志(下面會(huì)詳細(xì)地討論),并因此重新命名該資源。然后,在步驟704,對(duì)由特定指令采用的每個(gè)資源來(lái)說(shuō),分配器501從TST505檢索相關(guān)于資源的時(shí)間標(biāo)記識(shí)別符,它識(shí)別資源在其上面將是可用的LDI。在步驟706,分配器501確定在步驟704中檢索的最大的時(shí)間標(biāo)記識(shí)別符,為了示意的目的將其標(biāo)記為T(mén)Suse(MAX)。
      在步驟708,對(duì)由特定指令定義的每個(gè)資源而言,分配器501檢查是否設(shè)置了相關(guān)的重新命名標(biāo)志。如果沒(méi)有,分配器501在步驟712設(shè)置重新命名標(biāo)志,由此而指示組的隨后指令,特定資源已經(jīng)在先前被定義并且又將新的資源名初始化為資源的原始名稱(chēng),并將操作進(jìn)行到步驟718。
      然而,如果在步驟708中,對(duì)于由特定指令定義的每個(gè)資源而言,分配器501確定重新命名標(biāo)志已經(jīng)設(shè)置,操作則進(jìn)行到步驟710至716。在步驟710,分配器501定位一個(gè)自由資源,并且在步驟714將特定資源重新命名給該自由資源。在步驟716,分配器501設(shè)置一個(gè)重新命名標(biāo)志來(lái)指示特定資源已經(jīng)被重新命名,并將新的資源名設(shè)置給自由資源名,并將操作進(jìn)行到步驟718。
      在步驟718,分配器501將最先_LDI標(biāo)志設(shè)置給步驟706中定義的TSuse(MAX),并且操作按如上關(guān)于圖12所述的繼續(xù)進(jìn)行到步驟613,將代表指令的操作字段放在組緩沖器507中適當(dāng)?shù)腖DI之中。
      為了示意組格式化裝置123采用如上所述的資源重新命名技術(shù)的操作,考慮上面提供的具有六條指令的同一序列。圖16(A)和(B)示出了當(dāng)組格式化裝置123運(yùn)行來(lái)將這一指令序列格式化為上面關(guān)于圖15描述的一個(gè)組時(shí)的TST505和組緩沖器507的狀態(tài)。
      由于第四指令是序列中觸發(fā)重新命名的第一條指令,組格式化裝置123在處理第一至第三指令的操作結(jié)果保持不變。然而,對(duì)于第四條指令來(lái)說(shuō),在步驟708,相關(guān)于r4的重新命名標(biāo)志已經(jīng)設(shè)置,操作繼續(xù)到步驟710,定位一個(gè)自由資源,例如圖16(A)所示的資源rM。在步驟712,分配器501重新命名造成再定義條件的特定資源(在這種情況下為r4),為自由資源rM,并且在步驟716,分配器501設(shè)置相關(guān)于特定資源r4的重新命名標(biāo)志和資源名稱(chēng),來(lái)指示資源r4已經(jīng)被明確地重新命名為rM。在步驟718,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于0,且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為0的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI0)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU1在LDI0中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第四指令的操作字段放在LDI0的存儲(chǔ)槽FU1中,如圖16(B)所示。然后,在步驟621,分配器501相應(yīng)于由第四指令定義的資源(此時(shí)為rM)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為1,如圖16(A)所示。在步驟623,由于第四指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第五指令。
      對(duì)于第五指令,由于與由指令采用的資源(在這種情況下是r4)相關(guān)的重新命名標(biāo)志指示資源r4已經(jīng)被重新命名,分配器501將資源r4在步驟701重新命名為rM,如圖16(A)所示。此外,由于由指令采用的資源rM有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符為1,分配器在步驟706定義TSuse(MAX)為1。在步驟708,由于相關(guān)于由指令定義的資源(此時(shí)是r4)的重新命名標(biāo)志被設(shè)置,操作繼續(xù)到步驟710,定位一個(gè)自由資源,例如圖16(A)所示的資源rN。在步驟712,分配器501重新命名造成再定義條件的特定資源(在這種情況下為r4),為自由資源rN,并且在步驟716,分配器501設(shè)置相關(guān)于特定資源r4的重新命名標(biāo)志和資源名稱(chēng),來(lái)指示資源r4已經(jīng)被明確地重新命名為rN。在步驟718,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于1,且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為1的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI1)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU1在LDI1中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第五指令的操作字段放在LDI1的存儲(chǔ)槽FU1中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第五指令定義的資源(此時(shí)為rN)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為2,如圖16(A)所示。在步驟623,由于第五指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第六指令。
      對(duì)于第六指令,由于與由指令采用的資源(在這種情況下是r4)相關(guān)的重新命名標(biāo)志指示資源r4已經(jīng)被重新命名,分配器501將資源r4在步驟701重新命名為rN,如圖16(A)所示。此外,由于由指令采用的資源r3和rN分別有一個(gè)相應(yīng)的時(shí)間標(biāo)記識(shí)別符為3和2,分配器在步驟706定義TSuse(MAX)為3。在步驟708,分配器501確定相關(guān)于由指令定義的資源(此時(shí)是r2)的重新命名標(biāo)志還沒(méi)有被再設(shè)置,操作繼續(xù)到步驟712,以設(shè)置相關(guān)于r2的重新命名標(biāo)志和將相關(guān)于r2的資源名標(biāo)志設(shè)置為其原始名稱(chēng)。在步驟718,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于3,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為3的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI3)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU1在LDI3中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第六指令的操作字段放在LDI3的存儲(chǔ)槽FU1中,如圖14(B)所示。然后,在步驟621,分配器501相應(yīng)于由第六指令定義的資源(此時(shí)為r2)更新時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為4,如圖16(A)所示。在步驟623,由于第六指令不是一條停止指令,組格式化裝置123的運(yùn)行如上相對(duì)于第一至第六指令所作的描述繼續(xù)進(jìn)行到序列中的下一條相繼的指令(沒(méi)有示出)。
      除了上面描述的處理步驟外,分配器501在步驟619可以相關(guān)于LDI的操作字段設(shè)置一個(gè)標(biāo)志,指出根據(jù)由特定操作字段代表的功能要(或不)被執(zhí)行的條件。在這種情況下,并行機(jī)125的執(zhí)行單元被控制,只有當(dāng)在由相關(guān)的字段代表的條件已經(jīng)得到滿足時(shí),才執(zhí)行由相應(yīng)的操作字段代表的功能。
      在上面描述的例子中,對(duì)于被調(diào)度來(lái)由時(shí)序機(jī)的執(zhí)行單元執(zhí)行的每個(gè)指令來(lái)說(shuō),操作字段編碼器503產(chǎn)生一個(gè)對(duì)應(yīng)于可以由并行機(jī)125的功能單元和轉(zhuǎn)移處理單元在一個(gè)單機(jī)器周期中執(zhí)行的指令單一操作字段。然而,本發(fā)明并不僅僅局限在此。在另一個(gè)實(shí)施例中,相應(yīng)于指令的操作字段可以用一個(gè)以上的機(jī)器周期在并行機(jī)125的功能單元和轉(zhuǎn)移處理單元上執(zhí)行。分配器501在步驟621的操作被修改,以更新相應(yīng)于由具有適當(dāng)數(shù)目的等待單元的指令所定義的資源的時(shí)間標(biāo)記識(shí)別符。例如,如果操作字段花費(fèi)3個(gè)機(jī)器周期來(lái)執(zhí)行,那么用3來(lái)更新相應(yīng)于由指令定義的資源的時(shí)間標(biāo)記識(shí)別符。此外,在另一個(gè)實(shí)施例中,操作字段編碼器503可以產(chǎn)生相應(yīng)于一條單指令的操作字段,該指令被調(diào)度給時(shí)序機(jī)的執(zhí)行單元執(zhí)行。在這種情況下,分配器501的操作被修改,使得相應(yīng)于指令的若干操作字段在步驟619被放在適當(dāng)?shù)腖DI中。此外,在另一個(gè)實(shí)施例中,并行機(jī)125的一個(gè)和多個(gè)功能單元可以在一個(gè)單周期中執(zhí)行一條以上的原始指令,例如,可以參看Proceedings of Micro-25,Portland,Oregon,1992年12月,第149-157頁(yè)中Malik等人的論文“Interlock Collapsing ALU forIncreased Instruction-Level Parallelism”。在這種情況下,操作字段編碼器503產(chǎn)生一個(gè)相應(yīng)于一條以上原始指令的單操作字段。并且修改分配器501的運(yùn)行方式,使得相應(yīng)于一條以上原始指令的單操作字段在步驟619被放在適當(dāng)?shù)腖DI中。
      根據(jù)本發(fā)明的第二實(shí)施例,上面相關(guān)于第一實(shí)施例描述的分配器501的操作可以包括如圖17所示的額外的處理步驟。詳細(xì)地說(shuō),對(duì)調(diào)度給時(shí)序機(jī)的執(zhí)行單元執(zhí)行的每條指令來(lái)說(shuō),分配器501的操作可以包括步驟801,此時(shí)分配器501檢查特定指令是否是一條停止指令。這里所說(shuō)的停止指令可以是時(shí)序機(jī)結(jié)構(gòu)的指令集的一個(gè)預(yù)定義子集。該預(yù)定義子集最好包括具有長(zhǎng)執(zhí)行時(shí)間的指令,例如一條裝入多寄存器指令或整數(shù)除法指令,這樣可能會(huì)不能有效地格式化到當(dāng)前組中,或者不能由并行機(jī)125執(zhí)行。如果在步驟801分配器501確定指令是一條停止指令,分配器501的操作繼續(xù)到圖13所示的步驟,如上所述,將組關(guān)閉,并將被關(guān)閉的組從組緩沖器507寫(xiě)入到并行機(jī)125的DIB中。
      此外,組格式化裝置123可以保持裝入和存儲(chǔ)操作的次序,使得數(shù)據(jù)不會(huì)丟失和/或出錯(cuò)。這可以通過(guò)分配TST505的一個(gè)單元(指定為ML)給存儲(chǔ)器裝入操作以及分配TST505的一個(gè)單元(指定為MS)給存儲(chǔ)器存儲(chǔ)操作來(lái)實(shí)現(xiàn)。更詳細(xì)地說(shuō),存儲(chǔ)單元ML存儲(chǔ)一個(gè)識(shí)別當(dāng)前組的LDI的時(shí)間標(biāo)識(shí)識(shí)別符,在該當(dāng)前組中,組的最近的存儲(chǔ)器裝入操作(如果有的話)將被完成,并且單元MS存儲(chǔ)一個(gè)識(shí)別當(dāng)前組的LDI的時(shí)間標(biāo)識(shí)識(shí)別符,在該當(dāng)前組中,組的最近的存儲(chǔ)器存儲(chǔ)操作(如果有的話)將被完成。在這種情況下,組格式化裝置123的分配器501采用存儲(chǔ)在存儲(chǔ)單元ML和MS中的時(shí)間標(biāo)記識(shí)別符來(lái)保持裝入和存儲(chǔ)操作次序,如圖17所示。在步驟803,分配器501檢查指令是否包含裝入操作。如果是,操作繼續(xù)進(jìn)行到步驟805,在其中分配器501將TST505的單元ML與TST505的那些與由特定指令定義相關(guān)系的資源的單元聯(lián)系起來(lái),并且將單元MS與TST505的那些相關(guān)于由特定指令使用的資源的單元聯(lián)系起來(lái)。步驟805之后,分配器501的操作繼續(xù)進(jìn)行到如上所述的步驟601,來(lái)處理指令并且如果在可獲得的情況下將指令放在當(dāng)前組的適當(dāng)?shù)腖DI中。
      然而,如果在步驟803中分配器501確定指令不包括裝入操作,那么操作繼續(xù)到步驟807,檢查指令是否包括存儲(chǔ)操作。如果是,操作繼續(xù)進(jìn)行到步驟809,在其中分配器501將TST505的單元MS與TST505的那些相關(guān)于由特定指令定義的資源的單元聯(lián)系起來(lái),并且將單元MS和ML與TST505的那些相關(guān)于由特定指令使用的資源的單元聯(lián)系起來(lái)。步驟809之后,分配器501的操作繼續(xù)進(jìn)行到如上所述的步驟601,來(lái)處理指令,并且如在可獲得的情況下將指令放在當(dāng)前組的適當(dāng)?shù)腖DI中。
      最后,如果在步驟807中分配器501確定指令并不包含存儲(chǔ)操作,那么操作繼續(xù)進(jìn)行到如上所述的步驟601,來(lái)處理指令,并且如果在可獲得的情況下將指令放在當(dāng)前組的適當(dāng)?shù)腖DI中。
      為了示出分配器501在保持包含存儲(chǔ)器裝入和存儲(chǔ)操作的指令的次序的操作方式,考慮下面的指令序列1. Storer7 → 8(r10)2. Add r3.r4 → r23. Load 5(r2) → r34. Load 7(r6) → r95. Storer9 → 8(r2)圖18(A)和(B)示出了當(dāng)組格式化裝置123運(yùn)行來(lái)將這一指令序列格式化為上面描述過(guò)的例如與圖17、12和13有關(guān)的一個(gè)組時(shí)的TST505和組緩沖器507的狀態(tài)。
      在組的開(kāi)始,在處理第一指令之前,將TST505初始化,使每個(gè)存儲(chǔ)單元為零。對(duì)第一指令來(lái)說(shuō),在步驟807,分配器501確定指令包含一個(gè)存儲(chǔ)操作,這樣操作繼續(xù)進(jìn)行到步驟809,在其中分配器501將TST505的單元MS與TST505的那些相關(guān)于由第一指令定義的資源的單元聯(lián)系起來(lái),并且又將單元MS和ML與TST505的那些相關(guān)于由第一指令使用的資源的單元聯(lián)系起來(lái)。然后,由于相關(guān)于由第一指令采用的資源r7、r10、MS和ML的TST505的單元的時(shí)間標(biāo)記識(shí)別符為0,分配器在步驟603將TSuse(MAX)定義為0。此外,由于相關(guān)于由指令定義的資源MS的TST505的單元的時(shí)間標(biāo)記識(shí)別符為0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為0,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為0的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI0)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI0中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第一指令的操作字段放在LDI0的存儲(chǔ)槽中,如圖18(B)所示。然后,在步驟621,分配器501相應(yīng)于由第一指令定義的資源(此時(shí)為MS)更新單元的時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為1,如圖18(A)所示。在步驟623,由于第一指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第二指令。
      對(duì)第二指令來(lái)說(shuō),由于指令不包含裝入或存儲(chǔ)操作,步驟805和809被旁路,操作繼續(xù)到步驟601。由于由指令采用的資源r1和r5的時(shí)間標(biāo)記識(shí)別符為0,分配器在步驟603將TSuse(MAX)定義為0。此外,由于由指令定義的資源r2的時(shí)間標(biāo)記識(shí)別符為0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為0,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為0的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI0)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU1在LDI0中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第二指令的操作字段放在LDI0的存儲(chǔ)槽FU1中,如圖18(B)所示。然后,在步驟621,分配器501更新相應(yīng)于由第二指令定義的資源(此時(shí)為r2)單元時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為1,如圖18(A)所示。在步驟623,由于第二指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第三指令。
      對(duì)第三指令來(lái)說(shuō),在步驟803,分配器501確定該指令包含一個(gè)裝入操作和操作繼續(xù)進(jìn)行到步驟805,在其中分配器501將TST505的單元ML與TST505的那些相關(guān)于由第三指令定義的資源的單元聯(lián)系起來(lái),并且也將單元MS與TST505的那些相關(guān)于由第三指令使用的資源的單元聯(lián)系起來(lái)。然后,由于相關(guān)于由第三指令采用的資源r2、MS的TST505的單元的時(shí)間標(biāo)記識(shí)別符為1,分配器在步驟603將TSuse(MAX)定義為1。此外,由于相關(guān)于由指令定義的資源r3和ML的TST505的單元的時(shí)間標(biāo)記識(shí)別符為0,分配器在步驟607將TSdef(MAX)定義為0。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于1,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為0的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI1)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI1中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第三指令的操作字段放在LDI1的存儲(chǔ)槽FU0中,如圖18(B)所示。然后,在步驟621,分配器501更新相應(yīng)于由第三指令定義的資源(此時(shí)為r3和ML)的單元時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為2,如圖18(A)所示。在步驟623,由于第三指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第四指令。
      對(duì)第四指令來(lái)說(shuō),在步驟803,分配器501確定該指令包含一個(gè)裝入操作和操作繼續(xù)進(jìn)行到步驟805,在其中分配器501將TST505的單元ML與TST505的那些相關(guān)于由第四指令定義的資源的單元聯(lián)系起來(lái),并且也將單元MS與TST505的那些相關(guān)于由第四指令使用的資源的單元聯(lián)系起來(lái)。然后,由于相關(guān)于由第四指令定義的資源r6、MS的TST505的單元的時(shí)間標(biāo)記識(shí)別符分別為0和1,分配器在步驟603將TSuse(MAX)定義為1。此外,由于相關(guān)于由指令定義的資源r9和ML的TST505的單元的時(shí)間標(biāo)記識(shí)別符分別為0和2,分配器在步驟607將TSdef(MAX)定義為2。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于2,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為2的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI2)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI2中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第四指令的操作字段放在LDI2的存儲(chǔ)槽FU0中,如圖18(B)所示。然后,在步驟621,分配器501更新相應(yīng)于由第四指令定義的資源(此時(shí)為r9和ML)的單元時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為3,如圖18(A)所示。在步驟623,由于第四指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的第五指令。
      對(duì)第五指令來(lái)說(shuō),在步驟807,分配器501確定該指令包含一個(gè)存儲(chǔ)操作和操作繼續(xù)進(jìn)行到步驟809,在其中分配器501將TST505的單元MS與TST505的那些相關(guān)于由第五指令定義的資源的單元聯(lián)系起來(lái),并且也將單元ML和MS與TST505的那些相關(guān)于由第五指令使用的資源的單元聯(lián)系起來(lái)。然后,由于相關(guān)于由第五指令采用的資源r2、r9、ML、MS的TST505的單元的時(shí)間標(biāo)記識(shí)別符分別為1、3、3、1,分配器在步驟603將TSuse(MAX)定義為2。此外,由于相關(guān)于由指令定義的資源MS的TST505的單元的時(shí)間標(biāo)記識(shí)別符為1,分配器501在步驟607將TSdef(MAX)定義為1。在步驟609,分配器501將最先_LDI標(biāo)志設(shè)置為T(mén)Suse(MAX),它等于3,并且流程進(jìn)行到步驟613。在步驟613,由于現(xiàn)在被設(shè)置為3的最先_LDI標(biāo)志不大于三,分配器501在步驟615檢查在相應(yīng)于最先_LDI標(biāo)志(在這種情況下為L(zhǎng)DI3)的LDI中存儲(chǔ)槽FU0,…,F(xiàn)U3是否可用。由于存儲(chǔ)槽FU0在LDI3中是可用的,運(yùn)行進(jìn)行到步驟619,在其中分配器501控制操作字段編碼器503將相應(yīng)于第五指令的操作字段放在LDI3的存儲(chǔ)槽FU0中,如圖18(B)所示。然后,在步驟621,分配器501更新相應(yīng)于由第五指令定義的資源(此時(shí)為MS)的單元時(shí)間標(biāo)記識(shí)別符,即將最先_LDI標(biāo)志遞增(即最先_LDI+1),在這種情況下為4,如圖18(A)所示。在步驟623,由于第五指令不是一條停止指令,組格式化裝置123的運(yùn)行繼續(xù)到序列中的下一條指令。
      此外,組格式化裝置123并非一定要保持裝入指令的次序。例如,將一條裝入指令相比于其它裝入指令放在一個(gè)較早的LDI中可能會(huì)更加有效。為了這樣做,所描述的分配器501的操作被修改,使得步驟605-609對(duì)裝入指令而言被旁路掉,從而,分配器501的操作從步驟603直接進(jìn)行到611。在這種情況下,當(dāng)組格式化裝置123運(yùn)行,以將這個(gè)指令序列格式化為一個(gè)組時(shí)的TST505和組緩沖器507的狀態(tài)示于圖18(C)和(D)。此外,如上所述采用TST505的ML和MS單元來(lái)保持裝入和存儲(chǔ)操作的次序的技術(shù)可以被擴(kuò)展到其他操作,例如,移動(dòng)專(zhuān)用寄存器操作。
      根據(jù)本發(fā)明的等三個(gè)實(shí)施例,組格式化裝置123的操作可以這樣修改,使得它與并行機(jī)125的功能單元和/或轉(zhuǎn)移處理單元產(chǎn)生的組的執(zhí)行結(jié)果相連。更詳細(xì)地說(shuō),當(dāng)感受到存儲(chǔ)在CGB204中的一個(gè)當(dāng)前組向外轉(zhuǎn)移時(shí),組格式化裝置123可以被控制來(lái)修改存儲(chǔ)在CGB204中的當(dāng)前組,而不是開(kāi)始形成一個(gè)新的組。
      為了示意這一特征,考慮如上所述相應(yīng)于圖10(A)討論的由組格式化裝置123格式化并且隨后由并行機(jī)125的功能單元和/或轉(zhuǎn)移處理單元執(zhí)行的組。假設(shè),例如,當(dāng)LDI1被執(zhí)行時(shí),條件指示x=1,并且一個(gè)組發(fā)生向外轉(zhuǎn)移,至標(biāo)號(hào)LK。此時(shí),現(xiàn)有的組被裝入到組格式化裝置123,并且被如圖19所示予以加強(qiáng),而不是開(kāi)始一個(gè)新組。首先,在LDI1中的組向外轉(zhuǎn)移被排除,指令k被放在最早可得的LDI中,在這種情況下指令K放在LDI0的FU3存儲(chǔ)槽中。由于下一條指令1依賴(lài)于指令k,指令1被放在LDI1的一個(gè)可用存儲(chǔ)槽中,此時(shí)為FU2。由于下一條指令m依賴(lài)于指令e和k,指令m被放在LDI2的一個(gè)可用存儲(chǔ)槽中,此時(shí)為FU3。下一條指令n不依賴(lài)于任何指令,然而LDI0和LDI1的所有存儲(chǔ)槽都已被采用,因此指令n被放在LDI2的一個(gè)可用存儲(chǔ)槽中,此時(shí)為FU3。因?yàn)橄聴l指令0依賴(lài)于n,指令0被放在可用的存儲(chǔ)槽中,在這種情況下為L(zhǎng)DI2中的FU1。組格式化裝置123的操作接下來(lái)繼續(xù)到序列中的下一條指令,該指令從存儲(chǔ)系統(tǒng)107中取出,并且由調(diào)度單元115調(diào)度給時(shí)序機(jī)的執(zhí)行單元執(zhí)行。
      為了完成這一操作,在格式化過(guò)程中,當(dāng)遇到轉(zhuǎn)移時(shí),組格式化裝置123對(duì)轉(zhuǎn)移指令進(jìn)行編碼,并且將被編碼的指令與TST505的當(dāng)前狀態(tài)一起存儲(chǔ)到指派給轉(zhuǎn)移指令的LDI的存儲(chǔ)槽中,例如BP0和BP1。因此,每個(gè)BP存儲(chǔ)槽都較寬,因?yàn)樗ㄔS多信息。然后,當(dāng)組接著被并行機(jī)125的功能單元和/或轉(zhuǎn)移處理單元執(zhí)行時(shí),如果轉(zhuǎn)移指令決定采用與由組格式化裝置123編碼的通道不同的一條路徑,那么存儲(chǔ)在CGB204中的LDI的當(dāng)前組和與轉(zhuǎn)移指令一起編碼的TST的狀態(tài)被裝入組格式化裝置123,用于隨后按如上所述的進(jìn)行處理。
      此外,如果按如上所述采用寄存器重新命名技術(shù),當(dāng)遇到轉(zhuǎn)移指令時(shí),組格式化裝置123將重新命名信息的當(dāng)前狀態(tài)與被編碼轉(zhuǎn)移指令和TST505的當(dāng)前狀態(tài)一起存儲(chǔ)到指派給轉(zhuǎn)移指令的LDI的存儲(chǔ)槽中。然后,當(dāng)接著被并行機(jī)的功能單元和/或轉(zhuǎn)移處理單元執(zhí)行組時(shí),如果轉(zhuǎn)移指令決定采用與由組格式化裝置123編碼的路線不同的一條路徑,那么存儲(chǔ)在CGB204中的LDI的當(dāng)前組和與轉(zhuǎn)移指令一起編碼的TST的狀態(tài)以及重新命名信息的狀態(tài)被裝入組格式化裝置123,用于隨后按如上所述的進(jìn)行處理。
      根據(jù)本發(fā)明的第四個(gè)實(shí)施例,由組格式化裝置123產(chǎn)生并且存儲(chǔ)在DIB中的LDI可以被壓縮。壓縮操作可以由操作字段編碼器503執(zhí)行,其中,每個(gè)操作字段被單獨(dú)壓縮并隨后被插入到一個(gè)組的LDI中,并且組被寫(xiě)入DIB。在另一種情況下,可以對(duì)每個(gè)LDI進(jìn)行壓縮,或者例如當(dāng)組被寫(xiě)入DIB時(shí),將組作為一個(gè)整體進(jìn)行壓縮。在這種情況下,當(dāng)圖2的控制單元202接收到一個(gè)DIB命中信號(hào)時(shí)(即序列中的下一條指令是存儲(chǔ)在DIB中的一個(gè)組的一部分),從DIB輸出的被壓縮LDI必須在按如上相關(guān)于第一實(shí)施例所述執(zhí)行組的LDI之前被擴(kuò)展到LDI。為了完成這一操作,如上所述的圖7的當(dāng)前組緩沖器可以被修改為如圖20所示。
      詳細(xì)地說(shuō),CGB204可以包括一個(gè)接收從DIB輸出的被壓縮LDI(CLDI)的擴(kuò)展器1001。例如,擴(kuò)展器1001可以接收來(lái)自DIB的CLDI0、CLDI1、CLDI2、CLDI3。最好是當(dāng)并行機(jī)125的控制單元202接收一個(gè)DIB命中信號(hào)時(shí),在同一機(jī)器周期,擴(kuò)展器1001裝入從DIB輸出的CLDI,將組的第一個(gè)CLDI,即CLDI0擴(kuò)展成一個(gè)LDI,并將該LDI作為L(zhǎng)DI0寫(xiě)入CGB204中。在下一個(gè)周期中,并行機(jī)125的功能單元和轉(zhuǎn)移處理單元執(zhí)行由如上相關(guān)于第一實(shí)施例所述的LDI0的操作手段所指定的功能。在該操作進(jìn)行之時(shí),擴(kuò)展器1001將剩下的CLDIs(CLD1、CLD2、CLD3)擴(kuò)展為L(zhǎng)DIs,并將LDIS(LDI1、LDI2、LDI3)寫(xiě)入CGB204。在下一周中,操作繼續(xù)到組中的下一個(gè)LDI,或者到組中的另一個(gè)LDI,或者到組外的一條指令,這取決于并行機(jī)在執(zhí)行如上關(guān)于第一實(shí)施例所述由LDI0的操作字段指定的功能中的結(jié)果。
      在另一個(gè)實(shí)施例中,為了減小組執(zhí)行時(shí)間,如上所述由組格式化裝置123執(zhí)行的壓縮操作可以對(duì)組的第一LDI,即LDI0,禁止。
      在上面描述的實(shí)施例中,當(dāng)并行機(jī)125的執(zhí)行單元完成了由存儲(chǔ)在CGB204中的LDI的操作字段編碼的操作后,執(zhí)行結(jié)果必須放到適當(dāng)?shù)馁Y源中貯存起來(lái)備用。當(dāng)并行機(jī)125不采用寄存器重新命名時(shí),執(zhí)行單元可以將執(zhí)行結(jié)果在每個(gè)LDI之后存儲(chǔ)在適當(dāng)?shù)馁Y源中備用。然而,當(dāng)并行機(jī)125采用寄存器重新命名時(shí),當(dāng)并行機(jī)125經(jīng)受一次向組外轉(zhuǎn)移或經(jīng)受一次組結(jié)束時(shí),執(zhí)行單元必須將執(zhí)行結(jié)果存儲(chǔ)備用。在這種情況下,存儲(chǔ)備用操作包括根據(jù)重新命名標(biāo)志將存儲(chǔ)在重新命名的資源中的執(zhí)行結(jié)果傳送到原始分配的資源中(如果需要的話)。
      此外,常常出現(xiàn)當(dāng)執(zhí)行流程需要被中斷以便以特定的方式處理某個(gè)事件時(shí)的情況(即頁(yè)面出錯(cuò))。這些情況被稱(chēng)為中斷或異常。在許多情況下,在異常發(fā)生時(shí)系統(tǒng)精確地了解機(jī)器的狀態(tài)是非常重要的。但當(dāng)在本發(fā)明的情形下,指令不按次序執(zhí)行時(shí),就會(huì)變得很困難。
      為了處理這些需求,本發(fā)明的并行機(jī)125最好只有當(dāng)組的執(zhí)行完成之后將操作結(jié)果(不管該操作是寄存器寫(xiě)入操作還是存儲(chǔ)器存儲(chǔ)操作)指派給構(gòu)造的寄存器。當(dāng)在組內(nèi)出現(xiàn)一個(gè)異常時(shí),被執(zhí)行但沒(méi)被指派的指令結(jié)果被丟棄,使得機(jī)器精確地保持組被進(jìn)入時(shí)的狀態(tài)。當(dāng)前組的地址現(xiàn)在被用于取指令,并且每次一條在時(shí)序機(jī)中執(zhí)行,直到異常點(diǎn)再次達(dá)到為止。在異常被處理之后,如果在DIB中有一個(gè)命中信號(hào),并行機(jī)125的執(zhí)行在導(dǎo)致異常的指令之后的一條指令處恢復(fù),否則按順序模式恢復(fù)。
      從前面的描述中可以看出,通過(guò)保持執(zhí)行歷史,帶有一個(gè)短周期時(shí)間的短流水線可以被用來(lái)執(zhí)行相遇不止一次的指令。另外,如果能夠并行執(zhí)行的這些指令也保持與第一次遇到這些指令時(shí)一致,如果有足夠的功能單元用來(lái)執(zhí)行,那么這些同樣的指令可以在每個(gè)隨后的時(shí)間并行執(zhí)行。
      對(duì)可以并行執(zhí)行的指令進(jìn)行譯碼和確定的邏輯并不復(fù)雜,因?yàn)樗鼈兛梢栽谝粭l流水線上多個(gè)周期進(jìn)行,相比過(guò)去說(shuō)過(guò)的一個(gè)周期而言,它有更多的流水站。期望(并且實(shí)際的觀察)是采用多周期執(zhí)行這一操作的花費(fèi)足以可從在一個(gè)較短的流水線上并行重復(fù)執(zhí)行這些同樣的指令中找回來(lái)。
      與先前提議的方案,如預(yù)先譯碼的指令超高速緩沖存儲(chǔ)器相比,這個(gè)方案有許多優(yōu)點(diǎn)。第一,幾乎沒(méi)做任何無(wú)用工作,這是因?yàn)镈IB只包含在程序執(zhí)行時(shí)能實(shí)際遇到的那些指令,而預(yù)先譯碼的指令超高速緩沖存儲(chǔ)器即使在第一次遇到一條指令時(shí)也需要預(yù)先確定執(zhí)行路徑。第二,在跨過(guò)取轉(zhuǎn)移分支合并指令時(shí)沒(méi)有額外的花費(fèi)。第三,多分支路徑可以動(dòng)態(tài)合并到被譯碼的指令組,而不需要等待從這些路徑在可能的情況由從下一級(jí)存儲(chǔ)器取出來(lái)的指令。第四,編碼機(jī)構(gòu)動(dòng)態(tài)地對(duì)實(shí)際的執(zhí)行時(shí)間進(jìn)行調(diào)節(jié),而不是期待的等待時(shí)間。第五,該方案在現(xiàn)有的指令集體系結(jié)構(gòu)下運(yùn)行良好,不需要依靠重新編譯。
      與傳統(tǒng)的超級(jí)標(biāo)量方案相比,該方案有以下幾條優(yōu)點(diǎn)第一,通過(guò)在多個(gè)周期上操作,調(diào)度與譯碼邏輯被大大簡(jiǎn)化。第二,因?yàn)橥瑯釉颍幚砥鞯闹芷跁r(shí)間變短。第三,通過(guò)將操作從幾條路徑并入代碼,而不是只從一條路徑并入代碼,可以更好地利用功能單元。第四,通過(guò)將所有這些信息并入指令流歷史,可以省去轉(zhuǎn)移預(yù)測(cè)和轉(zhuǎn)移歷史表與VLIW機(jī)相比,該方案有以下優(yōu)點(diǎn)第一,它以現(xiàn)有的指令集體系結(jié)構(gòu)來(lái)進(jìn)行工作,不需要定義新的指令集。第二,可以改變DIB中的功能單元數(shù)目和內(nèi)部編碼操作,以適應(yīng)工藝能力/局限和/或處理器花費(fèi)的限制,并且不影響被編譯的代碼。
      雖然本發(fā)明是參考特定的實(shí)施例示出并描述的,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明精神與范圍的前提下,可以在形式與細(xì)節(jié)上進(jìn)行前面所述的和其它的變化。
      權(quán)利要求
      1.計(jì)算機(jī)處理設(shè)備,包括(1)、第一處理機(jī),包括第一存儲(chǔ)器,用于存儲(chǔ)將由至少一個(gè)執(zhí)行單元執(zhí)行的指令;一個(gè)取指單元,用于根據(jù)指令控制信號(hào)將指令從所述第一存儲(chǔ)器取送到指令隊(duì)列;一個(gè)調(diào)度單元,用于調(diào)度存儲(chǔ)在所述指令隊(duì)列中的指令給所述執(zhí)行單元執(zhí)行;以及,根據(jù)由所述執(zhí)行單元執(zhí)行指令的結(jié)果更新所述取指控制信號(hào)的裝置;(2)、一個(gè)組格式化裝置,用于在由所述第一處理機(jī)的所述執(zhí)行單元執(zhí)行所述指令序列的同時(shí),產(chǎn)生一個(gè)由所述調(diào)度單元調(diào)度的指令序列的替代編碼。
      2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述組格式化裝置在由所述第一處理機(jī)的所述執(zhí)行單元執(zhí)行所述指令序列之后產(chǎn)生所述替代編碼。
      3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)處理設(shè)備,其特征在于由所述組格式化裝置產(chǎn)生的替代編碼適用于并行執(zhí)行。
      4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)處理設(shè)備,其特征在于進(jìn)一步包括第二存儲(chǔ)器,用于存儲(chǔ)由所述組格式化裝置產(chǎn)生的所述替代編碼;替代編碼執(zhí)行裝置,在檢測(cè)到所述取指控制信號(hào)相關(guān)于存儲(chǔ)在所述第二存儲(chǔ)器中的替代編碼時(shí),執(zhí)行存儲(chǔ)在所述第二存儲(chǔ)器中的替代編碼。
      5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述替代編碼執(zhí)行裝置不同于所述第一處理機(jī)的所述執(zhí)行單元。
      6.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述替代編碼執(zhí)行裝置包括所述第一處理機(jī)的所述執(zhí)行單元。
      7.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)處理設(shè)備,其特征在于由所述組格式化裝置產(chǎn)生的所述替代編碼適宜于由所述替代編碼執(zhí)行裝置并行執(zhí)行。
      8.根據(jù)權(quán)利要求7所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述替代編碼執(zhí)行裝置包括若干執(zhí)行單元,并且由所述組格式化裝置產(chǎn)生的所述替代編碼包括一組長(zhǎng)譯碼指令,其中所述長(zhǎng)譯碼指令組的每個(gè)長(zhǎng)譯碼指令(LDI)包括操作字段,而每個(gè)操作字段與所述替代編碼執(zhí)行裝置的所述若干執(zhí)行單元的一個(gè)相關(guān),并且其中每個(gè)操作字段可以由所述替代編碼執(zhí)行裝置相關(guān)的執(zhí)行單元在一個(gè)單機(jī)器周期中被執(zhí)行。
      9.根據(jù)權(quán)利要求8所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述替代編碼執(zhí)行裝置包括所述操作字段可以使用和/或定義的若干寄存器資源,并且所述組格式化裝置包括一個(gè)操作字段編碼器,它根據(jù)被調(diào)度來(lái)由所述調(diào)度單元執(zhí)行的所述指令序列產(chǎn)生所述操作字段;一個(gè)時(shí)間標(biāo)記表,用于存儲(chǔ)相關(guān)于每個(gè)所述寄存器資源的時(shí)間標(biāo)記識(shí)別符,其中所述時(shí)間標(biāo)記識(shí)別符識(shí)別相關(guān)的寄存器資源將在所述長(zhǎng)譯碼指令組的哪個(gè)LDI上可用;一個(gè)分配器,它根據(jù)所述指令序列內(nèi)的指令、存儲(chǔ)在所述時(shí)間標(biāo)記表中的時(shí)間標(biāo)記識(shí)別符以及由所述操作字段編碼器產(chǎn)生的操作字段之間的相關(guān)性建立所述長(zhǎng)譯碼指令組。
      10.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述分配器根據(jù)所述指令序列內(nèi)指令執(zhí)行時(shí)間來(lái)建立所述長(zhǎng)譯碼指令組。
      11.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述分配器在檢測(cè)到所述指令序列內(nèi)的一條指令相關(guān)于一條預(yù)定的停止指令時(shí)關(guān)閉所述的長(zhǎng)譯碼指令組。
      12.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述一旦檢測(cè)到所述指令序列中的一條指令定義先前已由當(dāng)前組的操作字段定義的一個(gè)資源時(shí),所述分配器就將所述資源重新命名給一個(gè)自由資源。
      13.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述時(shí)間標(biāo)記表包括分別與裝入和存儲(chǔ)操作相關(guān)的時(shí)間標(biāo)記識(shí)別符;所述分配器采用所述相關(guān)于裝入和存儲(chǔ)操作的時(shí)間標(biāo)記識(shí)別符來(lái)保持所述裝入和存儲(chǔ)操作的次序。
      14.根據(jù)權(quán)利要求8所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述第二存儲(chǔ)器包括一個(gè)指令項(xiàng)陣列,每個(gè)指令項(xiàng)包括一組長(zhǎng)譯碼指令;用于在確定出所述一個(gè)指令項(xiàng)相關(guān)于所述取指控制信號(hào)時(shí)讀出所述信號(hào)的裝置;用于在確定出所述一個(gè)指令項(xiàng)相關(guān)于所述取控制信號(hào)時(shí)讀出所述一個(gè)指令項(xiàng)的一組長(zhǎng)譯碼指令的裝置;并且,所述替代編碼執(zhí)行裝置包括用于存儲(chǔ)從所述第二存儲(chǔ)器讀出的所述長(zhǎng)譯碼指令組的緩沖器,并且所述若干執(zhí)行單元執(zhí)行存儲(chǔ)在所述緩沖器中的所述長(zhǎng)譯碼指令組的所述操作字段。
      15.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述替代編碼執(zhí)行裝置進(jìn)一步包括用于根據(jù)所述操作字段執(zhí)行結(jié)果更新所述取指控制信號(hào)的裝置。
      16.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述若干執(zhí)行單元在每個(gè)LDI執(zhí)行完成之后,將每個(gè)LDI的所述操作字段的執(zhí)行結(jié)果放入適當(dāng)?shù)募拇嫫髻Y源中備用。
      17.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于所述若干執(zhí)行單元在所述長(zhǎng)譯碼指令組執(zhí)行完成之后,將所述長(zhǎng)譯碼指令組的所述操作字段的執(zhí)行結(jié)果放置備用。
      18.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于進(jìn)一步包括一個(gè)異??刂破?,在一旦遭受一個(gè)異常時(shí),更新所述取指控制信號(hào),以相應(yīng)于在存儲(chǔ)于所述緩沖器中的所述長(zhǎng)譯碼指令組之內(nèi)編碼的第一指令;把與所述第一處理機(jī)相關(guān)的寄存器資源更新到它們所述第一指令前的原有狀態(tài);啟動(dòng)所述第一處理機(jī)開(kāi)始處理所述第一指令。
      19.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于存儲(chǔ)在所述第二存儲(chǔ)器中的一條或多條所述長(zhǎng)譯碼指令被壓縮;所述替代編碼執(zhí)行裝置包括用于擴(kuò)展在執(zhí)行之前被壓縮的每條長(zhǎng)譯碼指令的裝置。
      20.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)處理設(shè)備,其特征在于進(jìn)一步包括裝置,用于在一旦檢測(cè)到存儲(chǔ)在所述緩沖器中的所述長(zhǎng)譯碼指令組的一條所述操作字段被認(rèn)定為存儲(chǔ)在所述緩沖器中的所述長(zhǎng)譯碼指令組之外的一條轉(zhuǎn)移指令時(shí),將當(dāng)前存儲(chǔ)在緩沖器中的所述長(zhǎng)譯碼指令組裝入到所述組格式化裝置,隨后進(jìn)行處理。
      全文摘要
      計(jì)算機(jī)處理設(shè)備包括一個(gè)稱(chēng)為譯碼指令緩沖器(DIB)的緩沖器,它用于存儲(chǔ)代表能并行執(zhí)行指令的命令組。在由常規(guī)的設(shè)備執(zhí)行指令的同時(shí),組格式化裝置產(chǎn)生一組LDI,其中每個(gè)是可以并行執(zhí)行的一組原始指令的替代編碼。由組格式化裝置構(gòu)成的每組LDI被存儲(chǔ)在DIB中,使得同一組指令的下一次執(zhí)行可以在對(duì)功能單元的全互補(bǔ)的基礎(chǔ)上直接由DIB執(zhí)行,而不需要進(jìn)行相關(guān)性和執(zhí)行時(shí)間的分析。
      文檔編號(hào)G06F9/38GK1136184SQ9610450
      公開(kāi)日1996年11月20日 申請(qǐng)日期1996年4月1日 優(yōu)先權(quán)日1995年4月13日
      發(fā)明者M·E·霍普金斯, R·K·內(nèi)爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1