專利名稱:指令控制數(shù)據(jù)處理設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種指令控制數(shù)據(jù)處理設(shè)備。
背景技術(shù):
PCT專利申請(qǐng)No.WO00/60457公開了一種VLIW處理設(shè)備。VLIW處理設(shè)備包含多個(gè)功能單元,其中每個(gè)功能單元能夠與其它功能單元并行執(zhí)行指令。VLIW處理設(shè)備處理VLIW指令字,其中每個(gè)VLIW指令字通常包含用于由各個(gè)功能單元并行執(zhí)行的多條指令。VLIW處理器具有使得能夠高速執(zhí)行程序化的處理任務(wù)的優(yōu)勢(shì),但是獲得這一優(yōu)勢(shì)的代價(jià)是高存儲(chǔ)器使用和高功耗。WO00/60457以減少VLIW處理設(shè)備的程序所需的指令存儲(chǔ)器大小為目標(biāo)。為了達(dá)到這一目的,該處理設(shè)備響應(yīng)于存儲(chǔ)器中指令而組成VLIW指令。因此,來自存儲(chǔ)器的原始指令被轉(zhuǎn)換為VLIW指令字中的多條指令,被不同的功能單元并行執(zhí)行。
引起高功耗的原因之一,是并行發(fā)送許多指令的需要和對(duì)所發(fā)送的每條指令訪問寄存器文件的需要。這些問題在WO00/60457中沒有涉及。
發(fā)明內(nèi)容
本發(fā)明的目的之一是在指令控制處理設(shè)備中降低功耗。
本發(fā)明的目的之一是尤其在VLIW處理設(shè)備中降低功耗。
在權(quán)利要求1中闡明了根據(jù)本發(fā)明的設(shè)備。該設(shè)備包含一組功能單元,該組功能單元并行連到發(fā)送槽和寄存器文件的端口,用于可選地執(zhí)行從發(fā)送槽發(fā)送的、具有來自至少一個(gè)端口的操作數(shù)的指令以及將結(jié)果寫到至少一個(gè)端口。除了這些可選指令,該設(shè)備提供了組合指令,其中該組中多于一個(gè)功能單元響應(yīng)于該組合指令,來自多個(gè)功能單元中的第一個(gè)的結(jié)果被路由到多個(gè)功能單元中的第二個(gè)的操作數(shù)輸入端,以響應(yīng)該組合指令。第二個(gè)功能單元的結(jié)果被用于生成該組合指令的結(jié)果。通過使用組合指令,可以減少對(duì)于給定任務(wù)的程序執(zhí)行過程中需要向功能單元組發(fā)送的指令數(shù)量,因而降低了功耗。與WO00/60457相比,該組合指令并不被分為需要分別發(fā)送的多條指令,而是在一個(gè)發(fā)送槽中被發(fā)送。因此,通過部分地避免為不同的功能單元并行地發(fā)送指令的需要,該設(shè)備部分地違背了VLIW處理的基本原理,即使如此,當(dāng)然,其他指令可以在同一VLIW指令字中被與組合指令并行發(fā)送。
在一個(gè)實(shí)施例中,該處理設(shè)備具有可選擇的指令周期時(shí)鐘速率。通過降低不需要更高時(shí)鐘速率的處理任務(wù)執(zhí)行過程中的時(shí)鐘速率,功耗得以降低。當(dāng)處理任務(wù)需要高速執(zhí)行時(shí),時(shí)鐘速率增加到最大值,此時(shí)所有單獨(dú)的功能單元僅可以在一個(gè)指令周期內(nèi)執(zhí)行該指令。根據(jù)本發(fā)明的一個(gè)方面,構(gòu)建該設(shè)備,使得多于一個(gè)功能單元在同一指令周期中響應(yīng)組合指令,串聯(lián)地工作,并且時(shí)鐘速率可以增加到高速,使得組合指令的串聯(lián)執(zhí)行不再適合于在一個(gè)指令周期之內(nèi)。當(dāng)時(shí)鐘速率增加到這樣的水平時(shí),避免使用組合指令,例如通過只執(zhí)行不包含組合指令的程序,或者在使用和不使用組合指令以分別完成相同任務(wù)的可選的程序版本之間切換,或者通過將組合指令轉(zhuǎn)換為由不同功能單元在連續(xù)的周期中執(zhí)行的多條指令。
這樣,可以實(shí)現(xiàn)節(jié)省更多的功率,這是因?yàn)楫?dāng)該設(shè)備在較低的時(shí)鐘速率下執(zhí)行時(shí),執(zhí)行處理任務(wù)所需發(fā)送的指令總數(shù)可以通過將多條指令組合成組合指令而減少,此時(shí)發(fā)送槽只需在一個(gè)指令周期內(nèi)活躍。當(dāng)組合指令使用的指令周期不比正常指令多時(shí),它的使用就減少了執(zhí)行程序所需的時(shí)間,使得可能進(jìn)一步降低必須在指定時(shí)間間隔內(nèi)執(zhí)行的處理任務(wù)的時(shí)鐘速率。
在另一個(gè)實(shí)施例中,該處理設(shè)備是包含多個(gè)功能單元的VLIW處理器,其中來自一個(gè)指令字的多條指令可以被并行發(fā)送到該多個(gè)功能單元,以并行執(zhí)行。在該實(shí)施例中,提供了從另外的功能單元的結(jié)果輸出端到功能單元中的第二個(gè)的操作數(shù)輸入端的旁路連接,該另外的功能單元與接收組合指令的功能單元組并行接收指令,該第二個(gè)功能單元響應(yīng)組合指令并還接收第一個(gè)功能單元的結(jié)果。優(yōu)選地,該旁路連接不包括用于使功能單元在多個(gè)指令周期內(nèi)所執(zhí)行的執(zhí)行級(jí)流水線化的鎖存器。因此,可以使用包含了組合指令和另一條指令的VLIW指令字,其中該組合指令用于一個(gè)組中,該另一條指令用于傳送在組合指令執(zhí)行過程中所用操作數(shù)的功能單元中。結(jié)果,在足夠低的時(shí)鐘速率下只需發(fā)送較少的指令,而仍可以維持足夠的速度。
在另一個(gè)實(shí)施例中,組合指令的執(zhí)行可以擴(kuò)展到多于一個(gè)指令周期。因此,還可以以串聯(lián)的執(zhí)行不適合于在一個(gè)指令周期內(nèi)的時(shí)鐘速率來執(zhí)行組合指令。在一個(gè)實(shí)施例中,提供多個(gè)中間寄存器,用于當(dāng)兩個(gè)功能單元都響應(yīng)組合指令時(shí),鎖存從一個(gè)功能單元路由到另一個(gè)功能單元的結(jié)果。但是,這需要寄存器的額外功耗并且將執(zhí)行分開。在另一個(gè)實(shí)施例中,功能單元之間不使用寄存器,使用行波流水線(wave pipelining)在跨越多于一個(gè)指令周期的時(shí)間間隔的一部分中,將結(jié)果從一個(gè)功能單元傳遞到另一個(gè)功能單元。
附圖簡述將使用以下附圖描述本發(fā)明的這些和其它目的及其有利方面
圖1示出處理設(shè)備;圖2示出一組功能單元;圖3a、b示出時(shí)序方面;圖4示出多組功能單元;圖5示出另外的功能單元組。
具體實(shí)施例方式
圖1示出處理設(shè)備,包括指令存儲(chǔ)器17、具有發(fā)送槽11的指令發(fā)送單元10、功能單元組12、寄存器文件14、時(shí)鐘電路16、時(shí)鐘速率選擇電路18和程序計(jì)數(shù)器19。程序計(jì)數(shù)器19具有連到指令存儲(chǔ)器17的地址輸入端的輸出端。指令存儲(chǔ)器17具有連到指令發(fā)送單元10的輸出端。指令發(fā)送單元10的發(fā)送槽11包含連到功能單元組12的用于操作碼的輸出端,以及連到寄存器文件14的用于第一個(gè)操作數(shù)寄存器地址和第二個(gè)操作數(shù)寄存器地址和結(jié)果寄存器地址的輸出端。功能單元組12具有連到寄存器文件14的輸出端的操作數(shù)輸入端,以及連到寄存器文件14的輸入端的結(jié)果輸出端。
盡管只示出一個(gè)功能單元組12,應(yīng)當(dāng)理解可以并行存在多個(gè)組。在這種情況下,指令發(fā)送單元包含對(duì)于每個(gè)功能單元組的各自的發(fā)送槽,具有連到相應(yīng)組的操作碼輸入端的輸出端以及連到寄存器文件14的多個(gè)寄存器地址輸出端。在這種情況下,寄存器文件14還具有對(duì)于每個(gè)功能單元組的獨(dú)立的結(jié)果輸入端,以及獨(dú)立的操作數(shù)輸出端。
時(shí)鐘速率選擇電路18具有連到時(shí)鐘電路16的控制輸入端和程序計(jì)數(shù)器19的輸出端。時(shí)鐘電路16具有連到指令發(fā)送單元10和寄存器文件14的時(shí)鐘輸出端。指令發(fā)送單元10連到程序計(jì)數(shù)器19。在操作中,來自時(shí)鐘電路16的時(shí)鐘信號(hào)定義連續(xù)的指令周期。通常在每個(gè)指令周期中執(zhí)行各自的指令。在每個(gè)指令周期中指令發(fā)送單元10向功能單元組12發(fā)送作為指令一部分的命令操作碼。同樣,指令發(fā)送單元10在每個(gè)指令周期中向寄存器文件14發(fā)送指令的操作數(shù)寄存器地址,并且指令發(fā)送單元10在每個(gè)指令周期中向寄存器文件14發(fā)送指令的結(jié)果寄存器地址。由于流水線,在同一指令周期中發(fā)送的操作碼、操作寄存器地址和結(jié)果寄存器地址可以屬于不同的指令。
在指令周期中,功能單元組12使用從寄存器文件14接收的一個(gè)或多個(gè)操作數(shù),執(zhí)行來自指令發(fā)送單元10的操作碼所標(biāo)識(shí)的命令。
圖2更加詳細(xì)地示出功能單元組12。組12包含多個(gè)功能單元20a、b(為了清楚,只示出兩個(gè),但是可以存在更多)。組12的操作數(shù)輸入端22a、b連到功能單元20a、b的操作數(shù)輸入端。功能單元20a、b的結(jié)果輸出端通過輸出復(fù)用器26連到組12的結(jié)果輸出端。操作碼輸入端24連到功能單元20a、b的操作碼輸入端和輸出復(fù)用器26(優(yōu)選地,操作碼24通過預(yù)解碼器連到功能單元20a、b和輸出復(fù)用器26,但是為了清楚沒有示出)。
組12還包含控制單元28和輸入復(fù)用器29。輸入復(fù)用器29具有連到該組的操作數(shù)輸入端22a的第一個(gè)輸入端和連到第二個(gè)功能單元20b的輸出端。輸入復(fù)用器29的第二個(gè)輸入端連到第一個(gè)功能單元20a的結(jié)果輸出端。控制單元28連到操作碼輸入端24并且具有連到輸入復(fù)用器29的選擇輸入端的輸出端。
在操作中,所接收的第一種操作碼中的每一個(gè)標(biāo)識(shí)執(zhí)行該操作碼的功能單元20a、b之一。對(duì)于該第一種操作碼,控制單元28使得輸入復(fù)用器29傳遞來自操作數(shù)輸入端22b的操作數(shù)。所標(biāo)識(shí)的功能單元20a、b使用應(yīng)用于其操作數(shù)輸入端的操作數(shù)來執(zhí)行操作碼所標(biāo)識(shí)的處理操作(例如加法,或乘法)。所標(biāo)識(shí)的功能單元20a、b輸出結(jié)果。輸出復(fù)用器26將結(jié)果從所標(biāo)識(shí)的功能單元20a、b的傳遞到功能單元組12的結(jié)果輸出端。
圖3a示出功能單元20a、b執(zhí)行操作的時(shí)序方面。上部跡線30指示連續(xù)的指令周期。每個(gè)指令周期持續(xù)T1持續(xù)時(shí)間。最上一行下面的最小時(shí)間間隔32、34指示功能單元20a、b在執(zhí)行過程中生成結(jié)果所需的時(shí)間間隔。時(shí)間間隔32、34可以依賴于操作碼所選擇的操作類型,依賴于執(zhí)行該操作的功能單元20a、b以及操作中所使用的操作數(shù)數(shù)據(jù)。但是結(jié)果總是在指令周期結(jié)束之前就是可用的,也就是說該間隔的持續(xù)時(shí)間比T1短。應(yīng)當(dāng)注意圖3a只示出在一個(gè)功能單元中執(zhí)行所需的時(shí)間間隔。在實(shí)際中,操作可以流水線化,所以每條指令的處理包括指令讀取級(jí)、操作數(shù)讀取級(jí)、執(zhí)行級(jí)和結(jié)果寫入級(jí),如果在鎖存了中間結(jié)果之后需要的話,不同的級(jí)被在連續(xù)的指令周期中執(zhí)行。時(shí)間間隔32、34只涉及執(zhí)行級(jí)。
操作碼還包括第二種操作碼,其導(dǎo)致功能單元20a、b的級(jí)聯(lián)操作。當(dāng)?shù)诙N操作碼應(yīng)用于操作數(shù)輸入端24時(shí),控制單元使得輸入復(fù)用器29將結(jié)果從第一個(gè)功能單元20a傳遞到第二個(gè)功能單元20b的操作數(shù)輸入端。輸出復(fù)用器26將結(jié)果從第二個(gè)功能單元20b傳遞到功能單元組12的結(jié)果輸出端。
作為第二種操作碼實(shí)例的是一個(gè)操作數(shù)加上一個(gè)平方和的計(jì)算的操作碼result=A*A+B
在該實(shí)例中,組12的第一個(gè)功能單元20a是乘法器,而組12的第二個(gè)功能單元20b是加法器。該操作具有包含A和B作為操作數(shù)的寄存器的寄存器地址。響應(yīng)于該操作碼,組12的第一個(gè)功能單元20a形成乘積A*A。響應(yīng)與同一操作碼,控制單元28使得復(fù)用器29將乘積A*A作為操作數(shù)傳遞到組12的第二個(gè)功能單元20b。仍然響應(yīng)于同一操作碼,組12的第二個(gè)功能單元20b形成所接收的乘積A*A和操作數(shù)B的和A*A+B。應(yīng)當(dāng)理解,這一操作碼只是一個(gè)示例??梢詾槠渌僮?例如,A*A-B、A/(A+B)、A*B+A等等)提供操作碼,可以支持這樣單一的操作碼或者多個(gè)操作碼。
當(dāng)通過在命令中包括多于兩個(gè)操作數(shù)寄存器地址,或通過在同一寄存器中包括多個(gè)操作數(shù)而有更多的操作數(shù)可用時(shí),可以執(zhí)行更加復(fù)雜的操作。例如,當(dāng)操作數(shù)包含一對(duì)數(shù)字(ReA,ImA)和(ReB,ImB)時(shí),其中每個(gè)數(shù)字表示復(fù)數(shù)的實(shí)部和虛部,組合操作可以命令乘法器功能單元分別形成實(shí)部的乘積(ReA*ReB)以及虛部的乘積(ImA*ImB),并命令加法器將兩個(gè)乘積相加。在這種情況下,組12優(yōu)選地包含至少兩個(gè)乘法器和一個(gè)加法器作為功能單元,以及在控制單元28控制之下的復(fù)用器,以選擇加法器是從操作數(shù)輸入端22a、b還是從乘法器接收操作數(shù)。
圖3b示出執(zhí)行第二種操作碼所選擇的操作的執(zhí)行級(jí)的時(shí)序方面。在這種情況下,指令周期的持續(xù)時(shí)間是T2。到該操作的結(jié)果可用之前所需的時(shí)間間隔36的持續(xù)時(shí)間是第一個(gè)時(shí)間間隔36a的持續(xù)時(shí)間、第二個(gè)時(shí)間間隔36b的持續(xù)時(shí)間和第三個(gè)時(shí)間間隔36c的持續(xù)時(shí)間之和,其中該第一個(gè)時(shí)間間隔36a是第一個(gè)功能單元20a所需的,該第二個(gè)時(shí)間間隔36b是將第一個(gè)功能單元20a的結(jié)果傳遞到第二個(gè)功能單元20b的操作數(shù)輸入端所需的,該第三個(gè)時(shí)間間隔36c是第二個(gè)功能單元20b所需的(更精確地說,替代第二個(gè)時(shí)間間隔36b的持續(xù)時(shí)間的是,應(yīng)當(dāng)考慮將結(jié)果從第一個(gè)功能單元20a的輸出端傳遞到第二個(gè)功能單元20b的操作數(shù)輸入端所需的時(shí)間間隔的持續(xù)時(shí)間減去將外部操作數(shù)傳遞到該操作數(shù)輸入端所需的間隔的持續(xù)時(shí)間而得到的差值;這一差值可以忽略)。
在第二種操作的結(jié)果可用之前的時(shí)間間隔36的總持續(xù)時(shí)間比功能單元20a、b對(duì)于組成操作的操作所需的時(shí)間間隔36a、36c的持續(xù)時(shí)間長。盡管如此,該總持續(xù)時(shí)間應(yīng)當(dāng)適合于在指令周期的持續(xù)時(shí)間T2內(nèi)。
時(shí)鐘速率選擇電路18向時(shí)鐘電路16提供信號(hào)以選擇時(shí)鐘速率,也就是指令周期的持續(xù)時(shí)間T1或T2。優(yōu)選地,時(shí)鐘速率設(shè)置得盡可能低(對(duì)于指令周期持續(xù)時(shí)間,設(shè)置得盡可能長),而沒有對(duì)在要求的時(shí)間間隔內(nèi)執(zhí)行要求的任務(wù)的能力做出折衷。通過降低時(shí)鐘速率,降低了設(shè)備的功耗。
可選的時(shí)鐘速率包括慢時(shí)鐘速率和快時(shí)鐘速率,其中以慢時(shí)鐘速率,第二種指令的執(zhí)行持續(xù)時(shí)間適合于在一個(gè)指令周期(持續(xù)時(shí)間T2)內(nèi),而以快時(shí)鐘速率,第二種指令的執(zhí)行持續(xù)時(shí)間不適合于在一個(gè)指令周期(持續(xù)時(shí)間T1)內(nèi)。當(dāng)時(shí)鐘速率被設(shè)置為慢時(shí)鐘速率時(shí),使用帶有第二種操作碼的指令來執(zhí)行任務(wù)。當(dāng)時(shí)鐘速率被設(shè)置為快時(shí)鐘速率時(shí),不使用帶有第二種操作碼的指令來執(zhí)行任務(wù),例如通過用帶有第一種操作碼的多條指令來代替帶有第二種操作碼的每條指令。通過在低時(shí)鐘速率下使用帶有第二種操作碼的指令,減少了執(zhí)行任務(wù)所需的指令周期數(shù)。因此加快了執(zhí)行速度。
可以采用任何方法調(diào)整執(zhí)行任務(wù)所使用的指令。在一個(gè)實(shí)施例中,指令存儲(chǔ)器17存儲(chǔ)了至少兩個(gè)執(zhí)行同一任務(wù)的程序的指令,一個(gè)程序使用帶有第一種操作碼的指令而另一個(gè)程序不使用這種指令。在該實(shí)施例中,時(shí)鐘速率選擇電路18除了選擇時(shí)鐘速率之外還選擇相應(yīng)程序,例如通過在任務(wù)執(zhí)行開始時(shí)設(shè)置程序計(jì)數(shù)器19的初始值。
然而,可以使用許多其它方法來避免在任務(wù)執(zhí)行過程中使用第二種操作碼。例如,指令可以根據(jù)所設(shè)置的時(shí)鐘速率,被執(zhí)行而跳到帶有第二種操作碼的程序或者不帶有這種操作碼的程序。同樣,可以根據(jù)所選擇的時(shí)鐘速率,將指令地址轉(zhuǎn)換到物理存儲(chǔ)器地址,以選擇適當(dāng)?shù)闹噶?。在這些情況下,不需要提供執(zhí)行任務(wù)的整個(gè)程序的可選版本(帶有和不帶有第二種操作碼)而只為包含這樣的指令的程序部分提供可選版本(在這種情況下,帶有第二種操作碼的指令優(yōu)選地只包括在頻繁執(zhí)行的部分中)。作為選擇,如果選擇了快時(shí)鐘速率,指令發(fā)送單元甚至可以被動(dòng)態(tài)地(on the fly)安排將帶有第二種操作碼的指令轉(zhuǎn)換為不帶有這種操作碼的多條指令。
優(yōu)選地,第二種操作碼支持頻繁執(zhí)行的指令。
盡管用具有時(shí)鐘速率選擇電路18的實(shí)施例說明了本發(fā)明,要理解的是,可以用其它方法選擇時(shí)鐘速率,例如在程序計(jì)數(shù)器值部分的控制下,從而根據(jù)所執(zhí)行指令所屬的程序段來設(shè)置時(shí)鐘速率,或者在來自程序的指令的控制下。
圖2示出一個(gè)實(shí)施例,其中幾個(gè)功能單元20a、b響應(yīng)同一個(gè)第二種操作碼。此外,控制單元28響應(yīng)該操作碼并且輸出復(fù)用器26只輸出來自響應(yīng)的功能單元20a、b之一的結(jié)果。但是,要理解的是,可以使用(預(yù))解碼器(未示出)來檢測(cè)哪個(gè)功能單元必須被激活以響應(yīng)操作碼并激活這些功能單元20a、b。在這種情況下,當(dāng)操作碼是第一種時(shí),(預(yù))解碼器每個(gè)指令周期激活一個(gè)功能單元20a、b,而當(dāng)操作碼是第二種時(shí),激活功能單元的組合。如所示,功能單元20a、b中響應(yīng)于第二種操作碼而被激活的每一個(gè)功能單元還可以單獨(dú)響應(yīng)第一種操作碼。因此,指令單元20a、b被有效地重用。但是,可選地,功能單元20a、b中用于級(jí)聯(lián)地執(zhí)行第二種操作碼的一部分可以是不單獨(dú)響應(yīng)任何第一種操作碼的類型。因此功能單元組12中要引入一定的開銷。
盡管以示例的方式只示出單個(gè)的輸入復(fù)用器29,以及兩個(gè)功能單元20a、b,要理解的是,實(shí)際中可以在組12中的功能單元20a、b或其它功能單元(未示出)的輸出端之間提供更加復(fù)雜的連接網(wǎng)絡(luò)。
圖4示出用于圖1所示處理設(shè)備中的兩個(gè)功能單元組12、40,實(shí)現(xiàn)了本發(fā)明的另一個(gè)方面。組12、40中的每一個(gè)具有連到指令發(fā)送單元(未示出)各自的發(fā)送槽的操作選擇輸入端24、48,并且連到寄存器文件(未示出)的讀和寫端口。因此,該設(shè)備是包含用于不同組12、40的多個(gè)實(shí)質(zhì)上獨(dú)立的可選命令的VLIW處理器(超長指令字處理器)。第一個(gè)組12被如圖2所示設(shè)置,除了增加了另外的復(fù)用器44,組12的第二個(gè)操作數(shù)輸入端22b連到其第一個(gè)輸入端。另外的復(fù)用器44的一個(gè)輸出端連到第二個(gè)功能單元20b的操作數(shù)輸入端。另外的復(fù)用器44具有連到控制單元28的控制輸入端。
第二個(gè)功能單元組40包括多個(gè)功能單元40a、40b。第二個(gè)組40中的一個(gè)功能單元40b的輸出端通過旁路連接42連到另外的復(fù)用器44的第二個(gè)輸入端。
在操作中,控制單元28識(shí)別組合指令的操作碼何時(shí)發(fā)送到功能單元組12。如果這樣,控制單元28使得復(fù)用器29、44將來自組12的第一個(gè)功能單元20a和來自另外的組40的功能單元40b的操作數(shù)傳遞到組12的第二個(gè)功能單元20b的操作數(shù)輸入端。組12的第一個(gè)和第二個(gè)功能單元20a、b都響應(yīng)組合指令,第一個(gè)功能單元20a接收來自組12的操作數(shù)輸入端22a、b的操作數(shù),復(fù)用器26將結(jié)果從第二個(gè)功能單元20b傳遞到為組12提供的寄存器文件的寫端口。
存儲(chǔ)在指令存儲(chǔ)器17的程序包含指令,該指令包含用于兩個(gè)組12、40的命令。該指令包含用于第一個(gè)組12的組合命令,而用于第二個(gè)組40的命令包含激活第二個(gè)組的第二個(gè)功能單元40b的操作碼。因此,響應(yīng)于該指令,第一個(gè)組12的第一個(gè)功能單元20a和第二個(gè)組40的第2個(gè)功能單元40b都生成結(jié)果,其中所述結(jié)果用作組12的第二個(gè)功能單元20b的操作數(shù)。來自第二個(gè)組40的第二個(gè)功能單元40b的結(jié)果通過旁路連接42在組12、40之間傳遞。復(fù)用器29、44將結(jié)果作為操作數(shù)傳遞到第一個(gè)組12的第二個(gè)功能單元20b。
作為示例,這種指令可以用于乘-加操作,其中兩對(duì)操作數(shù)的乘積相加result=A*B+C*D在該示例中,第一個(gè)組12的第一個(gè)功能單元20a是乘法器,第二個(gè)組40的第二個(gè)功能單元40b是乘法器,而第一個(gè)組12的第二個(gè)功能單元20b是加法器。該指令包含被發(fā)送到第一個(gè)組12的乘-加命令(組合命令)以及被發(fā)送到第二個(gè)組40的乘法命令。乘-加命令具有寄存器的寄存器地址,其包含A和B作為操作數(shù),而乘法命令具有寄存器的寄存器地址,其包含C和D作為操作數(shù)。響應(yīng)于該指令,第一個(gè)組12的第一個(gè)功能單元20a和第二個(gè)組40的第二個(gè)功能單元40b分別形成乘積A*B和C*D。響應(yīng)于同一乘-加指令,控制單元28使得復(fù)用器29、44將這些乘積作為操作數(shù)傳遞到第一個(gè)組12的第二個(gè)功能單元20b。仍然響應(yīng)于同一乘-加指令,第一個(gè)組12的第二個(gè)功能單元20b形成所接收乘積A*B與C*D的和A*B+C*D。
這種組合的乘法和加法是頻繁出現(xiàn)的指令組合,例如在復(fù)數(shù)乘法中,因此該指令大大節(jié)省了這種操作所需發(fā)送的指令的數(shù)量。但是,應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明不僅限于這一指令。例如,可以將類似技術(shù)應(yīng)用于乘法和減法,以計(jì)算A*B-C*D,或者應(yīng)用于某個(gè)程序中出現(xiàn)的任何其他操作組合。該設(shè)備可以只支持一條組合指令的操作碼或者支持多條這種指令的操作碼。
應(yīng)當(dāng)注意的是,當(dāng)用圖4的實(shí)施例的功能單元執(zhí)行程序時(shí),當(dāng)指令周期速率太快而不能連續(xù)容納第二個(gè)組40的第二個(gè)功能單元40b和第一個(gè)組12的第二個(gè)功能單元20b的延遲時(shí),可以調(diào)整該程序以消除組合指令,如圖2的上下文中所討論的。組合指令可以提供對(duì)來自不同功能單元(替代第二個(gè)組40的第二個(gè)功能單元40b)的結(jié)果的選擇,用作第一個(gè)組12的第二個(gè)功能單元20b的操作數(shù)。這些不同的功能單元可以是單一的組40的一部分或多個(gè)不同組的一部分。在不背離本發(fā)明的情況下,第二個(gè)組40可以只包含一個(gè)功能單元(第二個(gè)功能單元40b)。
圖5示出用于該設(shè)備的可選的功能單元組12。到目前為止示出的實(shí)施例中,組合操作在單一的指令周期中執(zhí)行。在圖5的實(shí)施例中,使用了多個(gè)指令周期。功能單元組12包含控制寄存器50,該控制寄存器50具有連到控制單元28的輸入端和連到復(fù)用器29、44以及第二個(gè)功能單元20b的控制輸入端的輸出端。復(fù)用器29、44的第一個(gè)數(shù)據(jù)輸入端連到操作數(shù)輸入端22a、b。結(jié)果寄存器52、54配備有連到復(fù)用器29、44的第二數(shù)據(jù)輸入端的輸出端。結(jié)果寄存器52、54的輸入端連到組12中一個(gè)或多個(gè)功能單元(例如20a)的結(jié)果輸出端,和/或連到其它組(未示出)中一個(gè)或多個(gè)功能單元的結(jié)果輸出端。為了清楚,未示出這些輸入連接。
在操作中,控制單元28通過使控制寄存器50載入用于控制復(fù)用器29、44和第一個(gè)組12的第二個(gè)功能單元20b的信息,來響應(yīng)為了第一個(gè)指令周期中的執(zhí)行而發(fā)送的組合指令。在第一個(gè)指令周期之后的第二個(gè)指令周期中,該信息控制復(fù)用器29、44和第一個(gè)組12的第二個(gè)功能單元20b。在第二個(gè)指令周期中,鎖存在結(jié)果寄存器52、54中的結(jié)果被作為操作數(shù)傳遞到組12的第二個(gè)功能單元20b,且該第二個(gè)功能單元20b接收控制信號(hào),以在第二個(gè)指令周期中執(zhí)行組合指令所暗含的命令中屬于該第二個(gè)功能單元20b的部分。作為響應(yīng),第二個(gè)功能單元20b在第二個(gè)指令周期末生成結(jié)果。
這樣,下一條指令可以在第二個(gè)指令周期中在組12中被執(zhí)行,該執(zhí)行與第二個(gè)功能單元20b執(zhí)行部分組合指令并行。例如,執(zhí)行第一條指令以計(jì)算A*B-C*D可以在第一個(gè)指令周期中開始,執(zhí)行第二條指令以計(jì)算A*D+B*B可以在下一個(gè)指令周期中開始。因此,使用兩條指令計(jì)算了兩個(gè)數(shù)A+iC和B+iD的實(shí)部和虛部。
當(dāng)然應(yīng)當(dāng)避免來自組合指令和下一條指令的結(jié)果之間發(fā)生沖突。這可以用各種方法實(shí)現(xiàn)。在一個(gè)實(shí)施例中,下一條指令被從沒有在第二個(gè)指令周期中生成結(jié)果的多條指令的子集中選擇(例如,另一個(gè)組合指令,或NOP指令)。在該實(shí)施例中,控制寄存器50還控制輸出復(fù)用器26以傳遞來自第二個(gè)功能單元20b的結(jié)果。在另一個(gè)實(shí)施例中,可以使用旁路寄存器(未示出)來并行傳遞第二個(gè)功能單元20b的結(jié)果和來自響應(yīng)下一條指令的功能單元的結(jié)果。
應(yīng)當(dāng)注意的是,在圖5的實(shí)施例中,當(dāng)指令周期太快而不能在單個(gè)的指令周期中容納第一個(gè)和第二個(gè)功能單元20a、b的延遲時(shí),不需要調(diào)整程序。
盡管圖5示出了插入到復(fù)用器29、44之前的結(jié)果寄存器52、54,但是如果使用了行波流水線,可以省略這些寄存器52、54。在這種情況下,在功能單元20a、b內(nèi)的傳播延遲被用于允許來自組合指令和下一條指令的結(jié)果同時(shí)出現(xiàn)在第二個(gè)功能單元20b和執(zhí)行下一條指令的功能單元的輸出端中。在另一個(gè)實(shí)施例中,可以在生成由第一個(gè)組12的第二個(gè)功能單元20b使用的結(jié)果的特殊功能單元之前提供寄存器。這些寄存器用于通過鎖存這些功能單元的操作數(shù)來響應(yīng)組合指令,并在當(dāng)這些操作數(shù)被直接從第一個(gè)指令周期的輸入端22a、b應(yīng)用于后續(xù)指令周期過程中的特殊功能單元之后,提供這些操作數(shù)。
盡管已經(jīng)使用組合指令說明了本發(fā)明,其中所述組合指令涉及串聯(lián)的兩個(gè)功能單元響應(yīng)于同一命令的連續(xù)執(zhí)行,但是要理解的是,可以提供涉及更多串聯(lián)的功能單元的組合命令。
權(quán)利要求
1.一種指令控制數(shù)據(jù)處理設(shè)備,所述設(shè)備包括指令發(fā)送單元(10),具有用于發(fā)送來自指令集的指令的發(fā)送槽(11),所述指令發(fā)送單元在連續(xù)的指令周期中發(fā)送所述指令中的各條指令;寄存器文件(14),具有讀端口和寫端口;功能單元(20a、b)組(12),每個(gè)功能單元(20a、b)具有連到所述發(fā)送槽(11)的控制輸入端、連到所述讀端口的操作數(shù)輸入端(22a、b)以及連到所述寫端口的結(jié)果輸出端,每個(gè)功能單元(20a、b)被用于響應(yīng)其它功能單元(20a、b)所不響應(yīng)的來自所述指令集的各個(gè)子集的指令,所述指令集還包括所述功能單元中的第一個(gè)和第二個(gè)功能單元(20a、b)所響應(yīng)的組合指令;控制單元(28),連到所述發(fā)送槽(11),并且響應(yīng)來自所述指令集的所述組合指令,將所述第一個(gè)功能單元(20a)的結(jié)果輸出路由到所述第二個(gè)功能單元(20b)的操作數(shù)輸入端。
2.根據(jù)權(quán)利要求1所述的指令控制數(shù)據(jù)處理設(shè)備,被構(gòu)成為VLIW處理器,所述發(fā)送槽(11)是用于發(fā)送VLIW指令字的所述指令發(fā)送單元的多個(gè)發(fā)送槽之一,其中所述VLIW指令字包含所述組合指令作為其指令之一,所述寄存器文件(14)具有多個(gè)讀和寫端口集,所述設(shè)備包括各個(gè)功能單元或功能單元組,每個(gè)連到所述發(fā)送槽中的各個(gè)發(fā)送槽和所述讀和寫端口集,用于執(zhí)行來自所述VLIW指令字的各個(gè)指令,與執(zhí)行在所述同一指令字中作為所述組合指令發(fā)送的指令并行,所述第一個(gè)和第二個(gè)功能單元響應(yīng)在所述發(fā)送槽中發(fā)送的所述組合指令。
3.根據(jù)權(quán)利要求1所述的指令控制數(shù)據(jù)處理設(shè)備,其中所述第一個(gè)和第二個(gè)功能單元(20a、b)在同一指令執(zhí)行周期中響應(yīng)所述組合指令。
4.根據(jù)權(quán)利要求3所述的指令控制數(shù)據(jù)處理設(shè)備,包括用于對(duì)所述指令周期進(jìn)行計(jì)時(shí)的時(shí)鐘電路(16),所述時(shí)鐘電路(16)具有多個(gè)可選的時(shí)鐘速率,包括第一個(gè)時(shí)鐘速率以及第二個(gè)時(shí)鐘速率,其中,所述第一個(gè)時(shí)鐘速率足夠慢,使得在指令執(zhí)行周期中容納響應(yīng)于也在所述指令執(zhí)行周期內(nèi)的所述組合指令執(zhí)行過程中應(yīng)用于所述第一個(gè)功能單元(20a)的操作數(shù)而從所述第二個(gè)功能單元(20b)生成結(jié)果所涉及的延遲,所述第二個(gè)時(shí)鐘速率太快而不能在所述指令周期中容納所述延遲,但是可以容納來自所述子集的指令的延遲。
5.根據(jù)權(quán)利要求1所述的指令控制輸出處理設(shè)備,其中所述指令發(fā)送單元(10)具有另外的發(fā)送槽,并且所述寄存器文件(14)具有另外的讀端口,所述設(shè)備包括另外的功能單元(40b),所述另外的功能單元(40b)具有連到所述另外的發(fā)送槽的控制輸入端和連到所述另外的讀端口的操作數(shù)輸入端,所述控制單元(28)被用于在所述組合指令的控制下將所述另外的功能單元(40b)的結(jié)果輸出路由到所述第二個(gè)功能單元(20b)的所述另外的操作數(shù)輸入端,在所述組合指令的控制下繞開所述寄存器文件(14)。
6.根據(jù)權(quán)利要求5所述的指令控制數(shù)據(jù)處理設(shè)備,被用包含VLIW指令的程序編程,其中所述VLIW指令包含在同一指令周期中發(fā)送的用于所述另外的功能單元(40b)的命令和用于所述功能單元組(12)的所述組合指令。
7.根據(jù)權(quán)利要求1所述的指令控制數(shù)據(jù)處理設(shè)備,其中,所述控制單元(28)被用于使所述第二個(gè)功能單元(20b)在所述第一個(gè)功能單元(20a)響應(yīng)所述組合指令的指令執(zhí)行周期之后的指令執(zhí)行周期中響應(yīng)所述組合指令。
8.根據(jù)權(quán)利要求7所述的指令控制數(shù)據(jù)處理設(shè)備,其中,所述第一個(gè)功能單元(20a)的結(jié)果被從所述第一個(gè)功能單元(20a)路由到所述第二個(gè)功能單元(20b)的操作數(shù)輸入端,而沒有中間鎖存。
9.一種執(zhí)行處理任務(wù)的方法,所述方法包括提供功能單元組(12),向所述組(12)發(fā)送連續(xù)的指令;執(zhí)行所述指令中的第一種指令,用功能單元(20a、b)中的一個(gè)獨(dú)立功能單元執(zhí)行每條所述第一種指令,用串聯(lián)的所述功能單元(20a、b)中的第一個(gè)和第二個(gè)功能單元執(zhí)行第二種指令;響應(yīng)于所述第二種指令,將所述第一個(gè)功能單元(20a)的結(jié)果路由到所述第二個(gè)功能單元(20b)的操作數(shù)。
10.根據(jù)權(quán)利要求9所述的方法,其中所述第一個(gè)和第二個(gè)功能單元(20a、b)在同一指令周期中響應(yīng)所述第二種指令,所述方法包括從至少第一個(gè)和第二個(gè)速率中選擇指令周期速率,所述第一個(gè)速率很慢,使得所述功能單元中級(jí)聯(lián)的至少兩個(gè)功能單元(20a、b)對(duì)組合指令的執(zhí)行適合于在所述第一個(gè)速率的指令周期內(nèi),所述第二個(gè)速率很快,使得只有所述功能單元中的單個(gè)功能單元的指令的執(zhí)行適合于在所述第二個(gè)速率的所述指令周期內(nèi),所述組合指令的執(zhí)行不適合于在所述第二個(gè)速率的一個(gè)指令執(zhí)行周期內(nèi);將用于執(zhí)行所述處理任務(wù)的所述指令調(diào)整為所述選擇的指令周期速率,因此當(dāng)以所述第一個(gè)速率執(zhí)行所述任務(wù)時(shí),使用所述組合指令,而當(dāng)以所述第二個(gè)速率執(zhí)行所述任務(wù)時(shí),用具有相應(yīng)效果的多條所述第一種指令來代替所述組合指令。
11.根據(jù)權(quán)利要求9所述的方法,包括發(fā)送所述連續(xù)的指令,每條指令作為VLIW指令字的一部分,其中所述VLIW指令字包含用于各個(gè)另外的功能單元(40a、b)的多條指令;在包含所述第二種指令的所述指令字中,包括用于所述另外的功能單元(40a、b)中的特定一個(gè)功能單元的另外的指令;響應(yīng)于所述第二種指令,將所述另外的指令的另外的結(jié)果從所述另外的功能單元(40a、b)中的所述特定一個(gè)功能單元路由到所述第二個(gè)功能單元(20b)的另外的操作數(shù)輸入端。
全文摘要
該數(shù)據(jù)處理設(shè)備具有多個(gè)功能單元并在連續(xù)的指令周期中發(fā)送指令。第一種指令的每一個(gè)每次用于一個(gè)功能單元。第二種指令使得功能單元的組合在同一指令執(zhí)行周期中響應(yīng),來自一個(gè)功能單元的結(jié)果被另一個(gè)功能單元用作同一指令的執(zhí)行的一部分。優(yōu)選地,該設(shè)備支持在多個(gè)不同的指令周期速率下的可選的操作,這依賴于所執(zhí)行的程序段是否包含第二種指令。最快的指令周期速率不允許第二種指令的執(zhí)行,這是因?yàn)槎鄠€(gè)不同的功能單元的操作不適合于在該指令執(zhí)行周期內(nèi)。當(dāng)可能的時(shí)候,該設(shè)備通過切換到更慢的時(shí)鐘速率以節(jié)省功率,在這種情況下第二種指令被執(zhí)行,以通過減少需要發(fā)送的指令數(shù)量來節(jié)省額外的功率。
文檔編號(hào)G06F1/32GK1809810SQ200480017658
公開日2006年7月26日 申請(qǐng)日期2004年6月22日 優(yōu)先權(quán)日2003年6月25日
發(fā)明者卡洛斯·A·阿爾巴·平托, 巴爾克施南·斯里尼瓦桑, 拉馬納坦·塞瑟拉曼 申請(qǐng)人:皇家飛利浦電子股份有限公司