專利名稱:流水線異步指令處理器電路的制作方法
技術領域:
本發明涉及帶有流水線異步指令處理器的數據處理電路。
背景技術:
指令執行流水線操作是計算機中的傳統技術,其包括使用指令處理器,該指令處理器包含用于執行指令處理的各個步驟的多個級。典型步驟包括取指令步驟,指令解碼/取操作數步驟,執行(計算)步驟和結果回寫步驟。所述級根據匯編行原理并聯地操作,從而較早級執行用于第一指令的一個步驟,而隨后的級使用較早級為較早指令產生的部分結果執行用于較早指令的后繼步驟。多數現代指令處理器用同步電路執行,也就是說,其中所有級在相同中央時鐘的控制下操作的電路,在時鐘周期結束時所有指令一起向下游移動一個級。
美國專利申請No.2002/0156995公開了一種流水線異步指令處理器。在該處理器中不使用中央時鐘。而是改為,僅僅當第一級必須更新提供給下一級的信息時相鄰級彼此同步。在匯編行的類推中,不同于使用一個傳送帶同時將指令從所有級移動到下一級,每個級選擇其自己的時間何時所述級完成指令并且下一級自由接納指令。典型地,握手信號被交換以指示第一級具有可用信息并且下一級準備接收新信息。
除了使用串聯異步級之外美國專利申請No.2002/0156995也使用多個不同的并聯執行級作為用于相同流水線級的替代選擇,這使得有可能開始執行一個指令的執行步驟,即使較早指令的執行步驟仍未完成。
然而,指令程序典型地假設指令結果按照指令出現的順序被寫到寄存器文件。這傳統上通過在流水線中提供回寫級得以保證,指令順序地通過所述級并且所述級將結果寫到寄存器文件。美國專利申請No.2002/0156995將該技術應用于異步流水線。盡管實際結果可能次序顛倒地從不同級提供給寄存器文件,回寫級確定結果被寫到寄存器文件的順序。為了該目的回寫級使用隊列電路連續地接收和輸出指令。回寫級從所述隊列讀取指令,一旦讀取一個指令,導致在進入下一個指令之前其結果被寫到寄存器文件。
類似的技術記載于S.B.Furber,D.A.Edwards和J.D.Garside的標題為“Amulet3a 100MIPS Asynchronous Embedded Processor”文章中,其公開于2000 IEEE International Conference on ComputerDesignVLSI in Computers & amp;Processors(ICCD’100)September17-20,2000。該文章認為處理器執行帶有兩種類型的指令的程序存儲器訪問指令和不需要訪問存儲器的處理器內部指令。在流水線的一些級存儲器訪問指令與“內部”指令并行地被執行。結果,可能關于內部指令的結果次序顛倒地產生裝入指令的結果。該文章也提供了有序回寫。使用重排緩沖器執行回寫功能。指令解碼器為每個指令在重排緩沖器中分配其自己的位置。一旦產生結果它被寫到分配給其指令的位置。處理按照指令的順序依次等待每個結果并且將結果向回復制到寄存器文件。
盡管這些處理器因此保證了以合適的順序將結果寫到寄存器文件,它們是以相當大的開銷為代價實現的需要提供回寫級跟蹤所有指令和它們結果的可用性。
發明內容
除了別的以外,本發明的目標是提供一種帶有流水線異步指令處理器的電路,其中在不需要使用重排緩沖器的情況下保證將結果寫到寄存器文件的預定順序。
在權利要求1中闡述了根據本發明的電路。在該電路中提供了流水線的至少兩個連續級以通過相同的寫端口將結果寫到寄存器文件。寫排序電路保證了流水線的這些連續級每個獲得寫入結果的機會,如果所述級中的指令要求這樣的話。
寫排序電路保證以預定的、無限重復的順序給予所述機會,從而在另一級響應下一序列中的下一指令獲得下一次寫的機會之前,能夠寫入結果的每個級響應其依次在每個序列中的當前指令獲得寫的機會。這保證了寫的序列對應于程序中的指令序列。異步級中的定時自由并不導致不可預測的寫序列。如果一個級中的指令要求所述級寫,寫排序電路阻止新指令傳輸到所述級,直到寫端口已經交付寫入結果,從而在寫電路隨后交付的結果之前寫所述結果。(當在這里使用時,交付(committing)可以包括實際寫到寄存器文件,或者將結果裝入到流水線或者任何其它機構中,通過所述流水線結果按照裝入的順序被寫到寄存器文件,所述其它機構保證按照交付不同結果的順序寫入結果)。這或多或少地類似于時鐘中的擒縱機構操作,在另一個寫級前進之前防止進程在一個寫級通過流水線,反之亦然。
寫排序電路可以與各種不同的異步定時電路組合以用于時間傳輸通過流水線的指令信息。在一個實施方式中使用反向排序電路,其中發生傳輸波,每個波包括到沿著流水線連續處于更上游的級的傳輸,每個波由前一波到達流水線的起點或者流水線部分觸發。如果一個級中的指令要求寫并且寫端口未準備好接受結果,通過有條件地延遲波的傳播,在該實施方式中寫排序電路可以作為定時電路的一部分被包含以用于通過流水線時間傳輸指令信息。
在另一實施方式中,定時電路包括連續級之間的握手-接口,以當下游級準備好用于下一指令并且上游級具有可用指令時開始傳輸。在該實施方式和前一實施方式中可以使用類似于時鐘的擒縱機構操作的獨立的寫排序電路。
在進一步的實施方式中特殊級寫的機會的定時與所述特殊級之外的指令信息傳輸到流水線中的下一級相聯系。新指令信息傳輸到所述特殊級中被阻止直到所述指令信息已傳輸到下一級并且已開始寫入結果。
在另一實施方式中一些指令可能要求寫來自相同級的多個結果。在該情況中寫排序電路優選地保證在所述機會按順序給予下一個級之前至少已開始寫所有結果。
在一個實施方式中從每個級寫的多個結果取決于由所述級執行的指令類型。一些指令可能要求一個級寫一個結果,而另一指令可能要求另一級來寫。例如,算術級可以響應算術指令來寫,存儲器級可以響應存儲器裝入指令來寫。又一指令可以在所述指令分別處于這些級中的不同時間要求一個以上的級來寫。例如,算術級中具有地址寄存器增量的裝入指令可以包括將增加的地址值寫道來自算術級的寄存器文件和寫來自存儲器級的裝入結果。其他指令可以要求寫來自一個級的多個結果。例如,復數算術運算可以要求將結果的實部和虛部寫到寄存器文件中的不同寄存器。
在一個實施方式中,能夠寫到寄存器文件的正好兩個連續級被使用,從而每個依次獲得寫的機會。但是本發明并不限于兩個寫級,或者限于直接相鄰的級。
使用以下附圖,將借助于非限定性例子描述本發明的這些和其他目標和有利方面。
圖1顯示了流水線指令處理電路;圖2顯示了寫定時電路;圖3顯示了可選擇的流水線指令處理電路;圖4顯示了可選擇的寫定時電路;圖5顯示了流水線指令處理電路的一部分。
具體實施例方式
圖1顯示了指令處理電路,帶有多個處理級10a-e,寄存器12a-d,定時電路14,寫多路復用器16,寄存器文件17和指令存儲器18。處理級10a-d在流水線中通過寄存器12a-d連接。除了第一級10a之外,每個級10b-e具有耦連到前面的流水線寄存器12a-d的一個或多個指令信息輸入,除了最后級10e之外每個級10a-d具有耦連到后面的流水線寄存器12a-d的指令信息輸出。兩個處理級10c,d具有附加結果輸出,以用于將結果和附帶的寄存器地址輸出到多路復用器16。這些處理級10c,d也具有耦連到定時電路4的確認輸出19a,b。用于指示是否從級寫到寄存器文件的級的確認輸出是需要的。
處理級例如是取指令級10a,解碼器/取操作數級10b,執行級10c,存儲器訪問級10d和最后級10e。取指令級10a具有耦連到指令存儲器18的指令地址輸出和指令輸入。指令存儲器18可以是簡單的存儲器,或者是包含高速緩存等的更復雜的存儲器系統。取操作數級10b具有耦連到寄存器文件17的讀端口的寄存器地址輸出。寄存器文件17具有耦連到在執行級10c之前的流水線寄存器12b的讀數據輸出。執行級10c和存儲器級10d的結果輸出耦連到多路復用器16,該多路復用器具有耦連到寄存器文件17的寫端口的數據/地址輸出。
在所述圖的實施方式中定時電路14包含周期發生器142,排序電路140a-e和寫握手電路144并且具有耦連到寄存器12a-d、取指令級10a和寫多路復用器16的輸出。耦連到取指令級的輸出控制程序計數器的更新。耦連到多路復用器16的輸出控制寫入寄存器文件17。耦連到寄存器12a-d的輸出控制復制連續級10a-e之間的信息的定時。有效地,每個排序電路140a-e對應于各自的級10b-e,各個級具有耦連到寄存器12a-d的輸入,排序電路140b-e耦連到所述輸入。周期發生器142和排序電路140a-e耦連成環,其中用于最后級10e的排序電路140e和用于存儲器級10d的排序電路140d之間的連接通過寫握手電路144連接。類似地在用于存儲器級10d的排序電路140d和用于執行級10c的排序電路140c之間的連接的環形連接通過寫握手電路144連接。寫握手電路144也從執行級10c和存儲器級10d耦連到確認輸出19a,b。
在操作中,取指令級10a取連續指令并且將這些指令應用于解碼器級10b的寄存器12a。解碼器級10b讀取來自其寄存器12a的每個指令并且從所述指令生成解碼信息。解碼器級10b也從所述指令析取操作數寄存器地址并且將它們應用于寄存器文件17。作為響應寄存器文件17產生尋址寄存器的內容。執行級10c的寄存器12b存儲解碼信息和尋址寄存器的內容。
執行級10c根據解碼信息執行操作并且將指令信息輸送到存儲器級10d的寄存器12c。指令信息可以包括從解碼級10b執行級的指令復制,但是它也可以包含由執行級生成的信息,例如由存儲器級10d使用的存儲器地址。對于第一和第二種類型的指令(例如加法指令,或者存儲器訪問指令,其中變址寄存器被更新)執行級10c產生結果,其與來自于指令信息的寄存器地址一起輸送到多路復用器16。響應該類型的指令執行級10c在確認輸出19a生成確認信號。第三和第四種類型的指令(例如存儲器訪問指令,其中不發生變址更新)并不導致有效的結果和寄存器地址。響應該類型的指令執行級10c在確認輸出19a不生成確認信號。
存儲器級10d隨后接收由執行級10c產生的指令信息并且訪問數據存儲器,如果指令信息要求這樣的話。對于第一和第三種類型的指令(例如存儲器讀指令)存儲器級10d產生結果,其與來自指令信息的寄存器地址一起輸送到多路復用器16。響應該類型的指令存儲器級10d在確認輸出19b生成確認信號。第二和第四種類型的指令(例如加法指令)并不導致從存儲器級產生有效結果和寄存器地址。響應該類型的指令存儲器級10d在確認輸出19b不生成確認信號。
定時電路14控制處理的定時,特別是寄存器12a-d接收級10a-d之間的信息的時間點。在一個實施方式中,使用反向排序機構,其中在下游的下一個寄存器12a-d采集信息之后寄存器12a-d均采集數據。因此連續地在更上游的寄存器12a-d(更靠近初始級10a)連續采集信息。在該實施方式中,一旦程序計數器被更新,從取下一個指令開始,周期發生器142開始下一周期,從最下游的寄存器12d開始,之后連續更新更上游的寄存器12a-c。
另外,如果執行級10c或存儲器級10d指示當前指令這樣要求,則定時電路14開始寄存器文件17的寫操作。這些寫操作的時間點與定時電路導致寄存器12a-e采集數據的時間點相聯系。當定時電路14導致寄存器12c,d從級10c,d采集數據時,它也導致寄存器文件用來自所述級的地址和結果開始寫操作,前提是級10c,d指示所述級10c,d中的指令要求寫并且寄存器文件17準備接受新的寫操作(在前面的寫操作之前足夠遠)。隨后定時電路14發信號通知上游的下一個寄存器12a-e采集數據。
如果所述指令并不要求寫,定時電路14立即發信號通知上游的下一個寄存器采集數據。如果要求寫但是寄存器文件17未準備,定時電路14等待直到寄存器文件17準備接受寫操作,當這種情況發生時定時電路導致寄存器文件17開始寫并且隨后定時電路14發信號通知上游的下一個寄存器12a-e采集數據。
寄存器文件17的各種實施方式可能支持結果寫入寄存器文件17。在最簡單的實施方式中結果直接從多路復用器16寫入到寄存器文件17。但是在更先進的實施方式中可以提供一個或多個寄存器以用于緩存結果,甚至FIFO緩沖器。在這樣的實施方式中當緩沖器空間可用于存儲隨后寫的結果時寄存器文件17可以被說成準備好用于下一個結果,即使較早結果的寫操作仍在進行。在進一步的實施方式中寄存器文件17可以包括旁路機構,其比較在寄存器文件17的讀端口的讀地址和仍未完成的寫操作的寫地址并且用來自最后的這種未完成寫操作的結果替換讀端口上的讀取結果。
根據偽碼可以如下所述電路。流水線的全部操作描述如下forever dostage_n();stage_n-1();stage_n-2();stage_1()od在這里,“;”分離順序執行的行動。由“stage_i”表示的ith級(i=1...n)的行動包括在所述級結束時和在下一級之前至少將產生的ith級的數據(“data1_1”)采集到級寄存器中stage_register_i=data1_i(應當注意的是,使用本身已知的Tangram語言,該類型的偽碼可以自動轉換到定時電路中)。對于兩個連續級所述級行動也包括將數據寫到寄存器文件stage_register_i=data1_i‖if(vld_i)rf_activate!<<data2_i,dst_i>>
在這里‖表示并行的(不一定是按順序的)行動,“!”表示將“!”右邊的信息寫到被識別為在“!”的左邊的信道。也就是說,如果一個級的確認信號vld_i指示由所述級處理的指令要求寫到寄存器文件,則寫來自所述級的data2_i和來自所述級的寄存器地址dst_i。“rf_activate”表示耦連到寄存器文件的共享信道,兩個級都能夠寫到所述信道。寄存器文件的行動可以由以下偽碼表示forever dorf_activate?<<data,dst>>;rf_write(data,dst);od也就是說,寄存器文件“收聽”rf_activate信道并且在收聽新數據之前如果接收到數據的話在尋址寄存器將數據寫到寄存器文件中。在進一步的實施方式中,寄存器文件也與用于控制旁路的回寫級通信。
圖2示意性地顯示了寫定時電路144的實現。該實現包含兩個分支,每個帶有排序電路20a,b和條件握手轉發電路22a,b。此外所述實現包含握手組合電路24和寄存器文件定時電路26。每個分支中的排序電路20a,b具有耦連到定時電路的相應排序電路140d,e(未示出)的無源終端,順序第一有源終端和順序第二有源終端,第一有源終端耦連到分支的轉發電路22a,b,第二有源終端耦連到定時電路的排序電路140c,d(未示出)中的一個,其在分支的響應排序電路的上游。也就是說,第二分支的排序電路20b的順序第二終端耦連到第一分支的排序電路20a的無源終端,可能經過控制所述級的定時的其他電路。接著,第一分支的排序電路20a的順序第二終端依次耦連到第二分支的排序電路20b的無源終端,經過控制所述級的定時的其他電路。轉發電路22a,b具有耦連到確認輸出19a,b的條件輸入。轉發電路22a,b具有耦連到組合電路24的有源終端,而該組合電路又具有耦連到寄存器文件定時電路26和選擇輸出28的有源終端,選擇輸出28耦連到多路復用器16(未示出)以控制數據將通過哪個多路復用器輸入。通過首先在其順序第一有源終端生成請求,等待所述請求的應答和隨后在順序第二有源終端生成請求,每個排序電路20a,b被布置成在其無源終端響應請求信號。排序電路20a,b的實現取決于使用的握手的類型,但是在簡單的實現中無源終端的請求信號導線耦連到順序第一有源終端的請求信號導線并且順序第一有源終端的應答信號導線耦連到順序第二有源終端的請求信號導線。
每個轉發電路22a,b被布置成如果在確認輸出19a,b不存在確認信號就立即應答來自其無源終端的請求,或者如果存在確認信號就將請求轉發到組合電路24并且返回來自所述電路的應答。轉發電路22a,b的實現取決于使用的握手的類型,但是在簡單的實施方式中使用多路復用電路,其由確認信號控制并且將引入的請求向后耦連到排序電路20a,b的順序第一有源端口的應答信號導線,或者耦連到組合電路24。實現握手電路的更一般的例子本身可以在A.Peters的標題為“Single Rail Handshake circuits”,ISBN 90-74445-28-4這篇論文中找到。
組合電路24被布置成將來自轉發電路22a,b的請求轉發到寄存器文件定時電路26,如果在其通向寄存器文件定時電路26的有源終端沒有請求待決的話。當它轉發請求時組合電路24應答相關轉發電路22a,b的請求并且發信號通知多路復用器16(未示出)它接收了哪個級10c,d的請求。典型地該信號也用于允許寫到寄存器文件17。在轉發來自轉發電路22a,b新請求和應答所述請求之前,如果對寄存器文件定時電路26的請求待決組合電路24等待直到待決請求被應答。
組合電路24的實現取決于使用的握手的類型,但是在簡單的實施方式中使用均用于各自的一個轉發電路22a,b的一對觸發器。每個觸發器由來自其轉發電路22a,b的請求設置并且由來自寄存器文件定時電路26的應答復位。觸發器的設置輸出信號禁止設置另一觸發器,導致應答信號到達相關轉發電路22a,b,導致請求信號到達寄存器文件定時電路26并且指示多路復用器16哪個級10c,d必須耦連到寄存器文件17。當寄存器文件17有時間寫來自所關注級的結果時寄存器文件定時電路26應答請求。組合寄存器文件定時電路26的實現取決于使用的握手的類型,但是在簡單的實施方式中可以使用延遲電路,在將結果寫到寄存器文件17的足夠延遲之后所述延遲電路應答請求。
應當強調的用于產生和接受握手的不同類型的合適異步定時電路可從現有技術獲知。已討論的實現僅僅用作簡單的例子。所以本發明并不限于這些實現。
應當認識到本發明并不限于圖1中所示的實施方式。例如,代替特殊的后向排序電路,可以使用任何其他類型的流水線定時電路。而且,不同于將寄存器文件寫操作與信息傳輸到流水線寄存器12a-d相聯系,可以使用排序電路以保證可以產生結果的級10c,d交替地獲得寫入結果的機會。這將更詳細地進行討論。
在所述例子中,后向排序電路提供在流水線中利用平行性的有利的簡單機構。由于流水線寄存器采集活動的新系列的起點在先前系列到達流水線的起點之后開始,因此不需要復雜的握手。因此,需要向后傳播通過流水線的延遲用于給予每個級時間來處理其當前指令。本質上,在該情況中,排序電路140a-d僅僅需要延遲電路以保證在上游的下一個流水線寄存器中開始采集之前有足夠時間在流水線寄存器12a-d中采集數據。
在很長流水線的情況中,排序電路140a-e的回路可以分成多個子回路,在每個子回路中新系列定時信號在子回路的下游端通過先前的定時信號到達子回路的上游端被觸發,如果來自下游的下一個子回路的定時信號(若有的話)已到達。在短回路的情況下,可能存在的風險是新定時信號在一個級完成其操作之前到達。在該情況中,可以提供附加電路以延遲定時信號從一個排序電路140a-d傳輸到上游的下一個,直到下面的級10a-d指示它已處理先前的指令。
作為一種選擇,可以使用充分發展的異步流水線,也就是這樣一種流水線,其中定時信號從流水線末端的產生并不等待先前的定時信號到達回路的上游端。在該情況中,例如可以使用正向定時機構,其中定時電路14被布置成當級10a-d準備好時產生所述級的終止請求,當下一級10a-d不再需要其當前信息并且已復制來自請求級的信息時定時電路應答所述請求。
在該類型的替代選擇中可以以與圖1中相同的方式由寫定時電路實現本發明,所述寫定時電路將寫來自級10a-d的結果的機會(無論是否取決于確認信號的產生使用所述機會)與從級10a-d寫到下游的流水線寄存器12a-d相聯系。僅僅當允許在下游的下一級10a-d的輸入將信息采集到流水線寄存器12a-d中才給予請求寫的機會。這時保證該下一級有機會將結果寫到寄存器文件17。僅僅當信息已被采集到流水線寄存器12a-d中并且已給予寫的機會時才允許應答上游的下一級10a-d。發生該情況的順序不是相關的首先信息可以被采集到流水線寄存器12a-d中或者首先給予寫入結果的機會,或者可以并行地執行兩者。
圖3顯示了一個實施方式,其中使用獨立的寫定時握手電路30。在該實施方式中,級10a-b具有握手連接以當需要時彼此同步(為了清楚起見這些連接被顯示成連接到流水線寄存器12a-d,為了該目的所述流水線寄存器被假設為包含握手處理電路)。另外級10c,d被布置成與寫定時握手電路30交換握手信號。當它充分準備好時,可能想要寫入結果的每個級10c,d產生確認/不確認信號,之后它與寫定時握手電路30交換握手。例如,寫定時握手電路30可以與第一級和第二級10c,d交替地產生請求,并且當準備好時級10c,d可以應答這些請求。同樣地,級10c,d可以產生請求,握手電路交替地應答這些請求。
圖4顯示了一個實施方式,其中類似于圖2實現寫定時握手電路30,增加了中繼電路40和排序電路42。提供有源終端44,46以用于與級10c,d交換握手。然而,應當認識到許多其他實現是可能的,例如使用來自級10c,d的請求代替應答,或者使用時鐘周期可以被延長的寄存器文件寫時鐘電路等。
此刻根據本發明應當理解流水線中的多個級10c,d能夠通過相同的寫端口將結果寫到寄存器文件17。級是否寫取決于由所述級處理的指令。定時電路保證所述級交替地獲得開始寫的機會。這樣,保證在程序中寫的預定順序被保存。例如,假設程序包含連續指令Load ++R1,R2Add R3,R4,R5(Load增加寄存器R1的值并且使用值作為地址來取寄存器R2中的數據。
Add相加來自寄存器R 3和R4的值并且寫入到R5中;R2和R5可以是相同的寄存器,在該情況中寫的順序應當對應于指令的順序)。
現在將裝載R1的內容并且執行級10c將首先增加該值。執行級10c將增加的結果寫到寄存器文件17中的寄存器R1。執行級10c接著將指令和增量地址傳遞到存儲器級10d。接著存儲器級10d根據該結果從帶有地址的存儲位置取數據并且執行級10c相加內容R3和R4。執行級10c將相加的結果寫到R5并且存儲器級10d將取的結果寫到R2。定時電路14保證了首先寫取的結果,接著寫相加的結果。
將會理解,本發明并不限于將寫到寄存器文件17的相同結果也寫到存儲器級10d。例如在“算后增量”指令(R1++)的情況中,寄存器R1的內容被傳遞到存儲器級10d并且增量值被回寫到寄存器文件17。在類似的例子中不需要R1的增量用于裝入指令Load R1,R2Add R3,R4,R5在該情況中執行級10c也將相加的結果寫到R5并且存儲器級10d將取的結果寫到R2。定時電路14保證首先寫取的結果,接著寫相加的結果,即使寫從不同級發生并且因此具有不一致的等待時間。
當然可能出現的情況是讀從來自寄存器文件17的寄存器發生,為此存在待決的寫。在該情況中,在一個實施方式中如果用于一個寄存器的寫操作待決,可以使用所述寄存器中的舊內容。在更先進的實施方式中可以使用任何旁路機構替換寄存器讀操作的結果中的待決寫操作的結果。在該實施方式中,如果使用深流水線并且如果結果寫操作的定時不與讀操作同步,在理論上可能出現未決定的讀問題。圖1的反向排序機構防止了該問題,只要先前的波仍未移動到流水線的上游端,該機構防止寄存器采集的新波形成流水線的下游端。在完全異步流水線中有必要包括按照寫級10a,c的排序布置從寄存器文件17讀取的級以避免該問題。這樣做保證了在流水線寄存器12a-d中新采集和將結果寫到寄存器文件17的每個周期在寄存器讀級中分別采集之后在寫級中發生。然而,通常該類型的排序是冗余的。
在所述例子中,每個級10a-d響應一個指令至多要求將一個結果寫到寄存器。然而,不脫離本發明,在進一步的實施方式中一個或多個級10a-d可以被布置成響應所述相同指令寫多個結果。例如,執行級10c可以被布置成將兩個操作數的和以及差回寫到寄存器文件17的不同寄存器。
圖5顯示了流水線處理器的一部分,其中級10c中的一個被布置成寫多個結果。在該實施方式中為每個結果提供了地址/結果輸出,確認輸出和握手終端。使用三輸入多路復用器16。類似于在圖1或圖4中使用的寫定時電路30/144保證級10c,d獲得依次寫每個結果的機會。這例如可以通過使寫入結果與將信息寫入到流水線寄存器12c,d中相聯系而實現。可選擇地獨立排序機構可以用于保證所述級獲得按順序寫的機會,可以寫兩個結果的級10c按順序獲得兩個機會。顯然,這可以擴展到許多結果。
將會理解,圖5僅僅顯示了一個實施方式。例如在另一實施方式中,相同地址/結果輸出可以用于多個結果。在該實施方式中級10c保證在按順序應答之前所有結果被應用于一個地址/結果輸出。在另一替代選擇中,當級10c指示一個以上的有效結果可用時,寫定時電路保證例如通過在進行之前將一個以上的請求發到寄存器文件17而寫所有所述多個結果。
在進一步的實施方式中寄存器文件可以具有一個以上的寫端口,至少一個寫端口如前文中的單一端口所述被共享,另一端口或其他端口允許并聯地寫其他結果,例如來自其他級或來自也寫到所述共享端口的級。另一端口或其他端口也可以被共享。盡管為一個實施方式描述了本發明,其中允許寫到寄存器文件17的確認信號取決于指令,應當理解的是確認信號也可以取決于多個因素,例如伴隨著指令的保護位的值(例如取決于在指令中指定的保護寄存器的內容)。
盡管作為例子顯示了具有寫能力的兩個緊鄰的流水線級10c,d,將會理解本發明并不限于該例子。例如,更大數量的連續流水線級可以具有能力將一個結果或多個結果寫到寄存器文件17。在該情況中,優選地包括排序電路,從而在所述級獲得另一機會之前,每個這種級又獲得按預定順序寫的機會,優選地從最下游的級開始。在另一例子中,具有寫能力的所述級不需要緊鄰。
權利要求
1.一種帶有流水線異步指令處理器的數據處理電路,所述數據處理電路包括-帶有寫端口的寄存器文件(17);-指令處理級(10a-d)的流水線,如果所關注級(10c,d)中的指令依賴信息要求寫,則在流水線中串聯的級(10c,d)的第一和第二個均具有用于將結果寫到所述寫端口的結果輸出;-定時電路(14),其被布置成在所述級之間在相互不同的時間點時間傳輸指令依賴信息,從而在各自級中的連續指令的處理部分地重疊;-寫排序電路(144),其被布置成對于所述級(10c,d)的第一和第二個中的指令依賴信息交替地執行寫測試,當對于所述級(10c,d)的特定一個執行寫測試時,所述寫排序電路(144)測試所述級(10c,d)的特定一個中的指令依賴信息是否要求寫入結果,如果是這樣的話,則延遲新的指令依賴信息通過流水線(10a-d)傳輸到所述級(10c,d)的特定一個,直到在隨后可以交付所述寫端口用于寫的結果之前,已經交付所述寫端口用于寫所述結果。
2.根據權利要求1的數據處理電路,其中所述寫排序電路(144)被布置成響應用于傳輸來自所述級(10c,d)的特定一個的指令依賴信息的請求信號,來觸發所述級(10c,d)的每個特定一個中的寫測試,并延遲用于將新的指令依賴信息傳輸到所述級的特定一個的請求信號,直到已開始寫入結果并且指令依賴信息已從所述級(10c,d)的特定一個中被傳輸。
3.根據權利要求2的數據處理電路,其中所述定時電路(14)被布置成開始指令依賴信息的連續傳輸的重復周期,其中對于沿著流水線連續地位于更上游的一系列級(10a-d)來連續定時在每個周期中的傳輸,響應在所述系列的上游端從先前的周期的傳輸,所述定時電路(14)在所述系列的下游端開始每個周期。
4.根據權利要求3的數據處理電路,其中所述定時電路(14)包括-定時信號傳輸電路(140a-e)的鏈路,用于通過所述鏈路傳播定時信號,連續接收傳播定時信號的所述鏈路中的定時信號傳輸電路(140a-e)具有分別連續耦連到該系列中更上游的級(10a-d)的輸出以控制指令依賴信息的傳輸;-功能上位于所述鏈路中的條件延遲元件(144),以將定時信號傳播到定時信號傳輸電路(140a-e),其具有輸出以分別控制指令依賴信息傳輸到所述級(10c,d)的第一和第二個,所述條件延遲元件包括-第一和第二定時信號路徑((20a,22a),(22a,22b),(20a,22a,24,26),(20b,22b,24,26)),所述條件延遲元件通過第一路徑((20a,22a,24,26),(20b,22b,24,26))或第二路徑((20a,22a),(22a,22b))路由定時信號,這取決于相應階段中的指令依賴信息是否分別要求寫入結果,第一路徑((20a,22a,24,26),(20b,22b,24,26))包括使能電路(26),該使能電路被布置成根據寫端口是否能夠交付結果的寫入來使能定時信號的傳播。
5.根據權利要求1的數據處理電路,其中所述級(10c,d)的第一個被布置成至少響應第一類型的指令來輸出多個結果,每個寫測試包括測試所述級(10c,d)的特定一個中的指令依賴信息是否要求寫入多個結果,如果是這樣的話,則延遲新的指令依賴信息通過流水線傳輸到所述級的特定一個,直到在隨后的結果之前已經交付所述寫端口用于寫入所有所述多個結果。
6.根據權利要求1的數據處理電路,其中所述級(10c)的第一個是執行級,其被布置成使用由所述指令指定的操作數來執行指令選擇的算術運算,所述級(10d)的第二個是存儲器級,其被布置成使用由所述指令指定的地址訪問存儲器,所述級(10c,d)的第一和第二個被布置成當分別執行算術和存儲器訪問指令時將結果寫到寄存器文件(17)。
7.根據權利要求1的數據處理電路,其中所述執行級(10c)被布置成當執行第一類型的存儲器訪問指令時,更新由第一類型的存儲器訪問指令指定的存儲器地址,并且將從所述更新產生的更新地址作為結果寫到寄存器文件(17)的寫端口。
8.根據權利要求1的數據處理電路,其中所述數據處理電路被布置成執行的指令集包括第一和第二類型的指令,所述執行級的第一和第二個被布置成分別響應第一和第二類型的指令寫入結果。
9.根據權利要求8的數據處理電路,其中第一類型的指令包括第一和第二子集,第一子集的每個指令是第一和第二類型的,來自第二子集的指令不導致所述級(10d)的第二個被布置用于寫入結果。
10.根據權利要求1的數據處理電路,其中所述寫排序電路(14)被布置成通過測試所述級(10c,d)的特定一個中的指令依賴信息以確定是否需要寫入結果,從而執行寫測試
11.一種執行指令的程序的方法,其使用數據處理電路,具有流水線異步指令處理器,帶有寫端口的寄存器文件(17),和指令處理級(10a-d)的流水線,其中如果所關注級(10c,d)中的指令依賴信息要求寫的話,則級(10c,d)中的第一和第二個均具有用于將結果寫到所述寫端口的結果輸出,所述方法包括-以流水線方式執行指令,通過流水線傳輸指令依賴信息的定時對于不同級(10a-d)是不同的,從而在各自級中的連續指令的處理部分地重疊;-對于所述級(10c,d)的第一和第二個中的指令依賴信息交替地執行寫測試,執行所述寫測試包括測試所述級(10c,d)的特定一個中的指令依賴信息是否要求寫入結果,并且如果是這樣的話,則-延遲新的指令依賴信息通過流水線傳輸到所述級(10c,d)的特定一個,直到在隨后可以交付所述寫端口用于寫入的結果之前,已經交付所述寫端口用于寫所述結果。
全文摘要
一種數據處理電路包含帶有寫端口的寄存器文件(17)和指令處理器級(10a-d)的流水線。定時電路(14)被布置成在所述級之間在相互不同的時間點時間傳輸指令依賴信息,從而在各自級中的連續指令的處理部分地重疊。級(10c,d)的第一和第二個在流水線中串聯。所述級的第一和第二個均具有用于將結果寫到所述寫端口的結果輸出,如果所關注級(10c,d)中的指令依賴信息要求寫的話。寫排序電路(144)執行交替地用于所述級(10c,d)的第一和第二個中的指令依賴信息的寫測試,當寫排序電路(144)執行用于所述級(10c,d)的特定一個的寫測試時,它測試所述級(10c,d)的特定一個中的指令依賴信息是否要求寫入結果。如果是這樣的話,寫排序電路(144)延遲新的指令依賴信息通過流水線(10a-d)傳輸到所述級(10c,d)的特定一個,直到在隨后交付所述寫端口寫的任何結果之前交付所述寫端口寫所述結果。
文檔編號G06F9/30GK1950796SQ200580013604
公開日2007年4月18日 申請日期2005年4月21日 優先權日2004年4月27日
發明者A·J·賓克, M·N·O·德克勒克 申請人:皇家飛利浦電子股份有限公司