具有終止信號傳播的機制的可編程流水線結構的製作方法
2023-05-03 16:06:56
專利名稱:具有終止信號傳播的機制的可編程流水線結構的製作方法
技術領域:
本發明涉及可重新配置的體系結構,更具體來說,涉及用來以流水線式方式處理信息的可重新配置的體系結構。
背景技術:
用於可重新配置的計算的傳統方法靜態地配置可編程的硬體,以便執行用戶定義的應用。這種配置的靜態性質導致兩個重要問題計算可能要求比可用的硬體更多的硬體,並且單一硬體的設計不能利用附加資源,該附加資源不可避免的在未來的處理世代中變得可用。一種稱為流水線式重新配置的技術在一小塊硬體上實現了一個大的邏輯配置,這是通過對該硬體的快速重新配置而實現的。利用這種技術,編譯器(compiler)不再負責滿足固定的硬體約束。此外,一種設計的性能與分配給該設計的硬體數量成比例地改善。
通過把單一靜態配置斷開成相應於應用中的各流水線級的各段,使得流水線式配置包括虛擬化流水線式計算。每個流水線級被每周期一個地加載到該結構中。這使得執行該計算成為可能,即使在該結構中從來不同時存在整個配置。
圖1例示了虛擬化處理,其中示出了在一個三級結構上虛擬化的五級流水線。圖1A示出了一個五級應用以及在六個連續周期中每個邏輯(或虛擬)流水線級的狀態。圖1B示出了當該結構執行此應用時在該結構中的各物理級的狀態。在此例中,虛擬管道級(pipe stage)1在周期1中被配置,並且準備在下一個周期中執行;虛擬管道級1執行兩個周期。沒有物理管道級4;因此,在周期4中,在物理管道級1配置第四虛擬管道級,以替代第一虛擬級。一旦流水線完整,每五個周期生成持續兩個連續周期的兩個結果。例如,周期2,3,7,8...消耗輸入,而周期6,7,11,12...產生輸出。
圖2是流水線式結構的體系結構等級的概括視圖。每一行處理元件(PE)連同其相關聯的互連被稱作一個條帶(stripe)。每個PE典型地包含算術邏輯單元(ALU)和傳遞寄存器文件(pass register file)。每個ALU包含查找表(LUT)和用於進位鏈、零檢測等等的額外電路。設計者使用一組N個B比特寬的ALU來實現組合邏輯。當特定的虛擬條帶駐留在物理條帶中時,ALU操作是靜態的。設計者可以級聯、連結或者以其它方式連接各ALU的各條進位線,以便構造更寬的ALU,並且可以將各PE經由互連網絡連結在一起以便建立複雜的組合功能。
用於流水線式重新配置的關鍵使能結構(key enablingstructure)之一是傳遞寄存器文件。圖3中示出傳遞寄存器文件10的一個示例。傳遞寄存器文件10由四個寄存器12、14、16、18構成(它們可以具有任意的位寬);在該圖中,寫埠由四個多路復用器20、22、24、26和寫地址解碼器28組成;並且在該圖中,讀埠由響應於讀地址的4到1多路復用器30組成。圖3的結構允許連接到該寄存器文件10的功能單元從寄存器文件10中讀取一個值,並且允許功能單元將一個值寫入特定寄存器12、14、16、18中的一個。如果沒有通過寫埠將值寫入寄存器12、14、16、18中的一個,則分別經由線32、34、36、38,將來自前一條帶的前一傳遞寄存器文件中的響應傳遞寄存器的值寫入寄存器12、14、16、18。
圖4例示了可能使用在應用中的四個傳遞寄存器文件42、44、46、48。在該圖中,傳遞寄存器文件42、44、46、48連接在一個環中,但是並不需要將它們如此連接。在圖4中,在寄存器文件42、44、46、48中的每一個當中只示出了一個寄存器,儘管每一個寄存器文件可以是任意大的。在圖4中,由功能單元1生成的數據通過一個傳遞寄存器文件44前進到功能單元2。
圖4的結構的一個主要問題是,只打算由功能單元2使用的值,通過其它傳遞寄存器文件46、48、42在後續的條帶中繼續。如果該值不由其它條帶使用該寄存器重寫,則所述值繼續傳播,一直到傳播回功能單元1。這一活動對於計算來說是毫無價值的,並且會耗散相當多的功率。
在流水線式可重新配置裝置的傳遞寄存器文件中出現的一個相關功耗問題是,晶片中的來自先前應用的舊的值繼續通過晶片傳播,從而即使它們與當前計算無關也仍然消耗功率。因此,在流水線結構中需要一種用於終止不再為計算所需的信號的機制。
發明內容
本發明針對這樣一種方法和設備,其用於存儲和使用「寄存器使用」信息以便確定最後一次使用寄存器是什麼時候,從而可以實現功率節省。寄存器使用信息可以採取對於特定寄存器的「最後一次讀取」信息的形式。該最後一次讀取信息可以用來在讀取寄存器之後將該寄存器的值強制為一個常數,或者在掩蔽掉(mask off)其它寄存器的同時只對該寄存器進行鍾控(clock)。公開了幾種方法和硬體變型,用於使用所述「寄存器使用」信息來實現功率節省。下面,根據對本發明的詳細描述,所述優點及益處以及其它優點及益處將變得顯而易見。
為更容易地理解和實踐本發明,下面將出於示例的目的而不是限制性的目的來結合附圖描述本發明,其中圖1A和圖1B例示了在三級可重新配置結構上虛擬化五級流水線的處理;圖2例示了可重新配置結構的一個條帶;圖3是傳遞寄存器文件的一個示例;圖4例示了四個各具有單個寄存器的傳遞寄存器文件,以便演示多餘的信號傳播;圖5例示了本發明的一個實施例,用於通過將信號值強制為零來終止多餘信號傳播;圖6例示了本發明的另一個實施例,用於通過只對產生要被讀取的值所需要的寄存器進行鍾控來終止多餘信號傳播;圖7例示了本發明的另一個實施例,用於通過只對產生要被讀取的值所需要的寄存器進行鍾控來終止多餘信號傳播;圖8是例示掩蔽單元的一個實施例的框圖;圖9例示了對圖6的電路的修改,以便使用局部掩蔽單元;圖10例示了一個電路,其中由通用時鐘信號對寄存器進行鍾控,並且使用四個與門和一個解碼器來將一個寄存器強制成零值;以及圖11例示了對圖10的電路的修改,以便使得每個寄存器能夠由其自己的時鐘信號鍾控。
具體實施例方式
圖5例示了本發明的一個實施例,用於終止多餘信號傳播。在圖5中,如所知的那樣,例如通過將配置字寫入物理條帶,用虛擬條帶來配置每個物理條帶。在Schmit等人的「Managing Pipeline-Reconfigurable FPGAs(管理流水線式可重新配置的FPGE)」(出版於ACM6th International Symposium on FPGAs,1998年2月)中提供了對配置管理和數據管理的詳細解釋,這裡引用其全文以作參考。想要知道關於將配置字寫入物理條帶的任務的更多細節的讀者可以參考上述文章。關於可重新配置的結構的構造和操作的附加的細節可以在以下文章中找到Schmit等人的「PipeRencha virtualized programmable datapath in 0.18 Micro Technology(PipeRench0.18微米技術中的虛擬化的可編程數據路徑)」(Proceedings of the IEEE CustomIntegrated Circuits Conference(CICC),2002),其全文在此引用以作參考;Schmit的「PipeRencha reconfigurable,architecturaland compiler(PipeRench可重新配置的體系結構和編譯器)」(IEEEComputer,第70-76頁(2000年4月)),在此引用其全文以作參考;Schimit的「Incremental Reconfiguration for PipelinedApplications(用於流水線式應用的遞增重新配置)」(Proceedings ofthe IEEE on FPGAs for Custom Computing Machines,第47-55頁,1997年),其全文在此引用以作參考;以及Schmit等人的「PipeRenchA Coprocessor for Streaming Multimedia Acceleration(PipeRench用於流式多媒體加速的協同處理器)」(InternationalSymposium on Computer Architecture,第38-49頁,1999年)在此引用其全文以作參考。
本發明的一方面是在條帶的編碼中(例如在配置字中)包括某些附加的信息,以表明從寄存器文件的讀取是否是在應用中對該數據值的最後一次讀取。該「最後一次讀取」信息可以由生成虛擬條帶信息的編譯器或物理設計工具生成,或者這可以由分析一組虛擬條帶的單獨程序完成,以便確定最後一次讀取是什麼時候。應用中的第一個和最後一個條帶存在特殊情況。在虛擬應用中的最後一個條帶中,沒有後續的條帶。因此,在寄存器文件中沒有對值的其它讀取。在第一虛擬條帶中,當前在物理條帶內的寄存器文件中的位於第一虛擬條帶之前的值都將不被使用。對於應用中的第一個和最後一個條帶之外的條帶,可以以多個方式使用關於最後一次需要讀取寄存器中的值的信息(有時稱作最後一次讀取信息),以便減小功率消耗。
圖5例示了通過在最終讀取之後掩蔽所述值,使用最後一次讀取信息來減小功率消耗的一個實施例。在圖5中,為簡明起見,有四個分別具有一個寄存器42』、44』、46』、48』的寄存器文件42、44、46、48。讀者將理解的是,實際上,每個寄存器文件將具有多個寄存器,例如圖3中所示的那樣。此外,讀者將理解的是,每個寄存器可以儲存超過一個比特位。在先前公開中所描述的實際的PipeRench實現方式中,每個寄存器文件中的每個寄存器儲存8個比特位。在圖5的實施例中,最後一次讀取信息被用來將所述結構中的後續條帶的值固定到一個常數值。在圖5的實施例中,這是利用位於寄存器文件42之前(或其中)的與門52、位於寄存器文件44之前(或其中)的與門54、位於寄存器文件46之前(或其中)的與門56以及位於寄存器文件48之前(或其中)的與門58實現的。假設從寄存器44』讀取的值是最後一次需要讀取值,則在與門56的其中一個輸入端上輸入零,從而將與門56的輸出端處的值(進而將後續傳遞寄存器文件中的值)強制為零。在終止由寄存器44』產生的信號的傳播過程中,輸入到其它與門52、54和58的輸入端上的值無關緊要。可以替代與門的其它門包括或門、與非門。可以使用呈現為單調函數的任何類型的門(即基於一個輸入處的控制值「強制」輸出的門)。
應該注意,由寄存器44』輸出的值被終止,即被阻止傳播,這是通過由與門56將該值強制為零來實現。在寄存器中,常數值中的鐘控比起變化值中的鐘控消耗較少的功率。因此,將該值強制為零導致功率節省。通過響應於最後一次讀取的寄存器而對於適當的多路復用器掩蔽多路復用器讀取的比特,可以達到類似的結果,從而使得當不再需要由寄存器輸出的值時就不再讀取該值。
在圖6中例示了使用最後一次讀取信息來停止信號傳播和節省功率的另一種方法。除了與門52、54、56、58被定位成接收時鐘信號60之外,圖6的電路類似於圖5的電路。由與門52、54、56、58輸出的時鐘信號分別被輸入到寄存器42』、44』、46』、48』。可以使用最後一次讀取信息來減少功率的另一種方式是停止寄存器的鐘控。在圖6中,這是通過掩蔽(阻塞)去往不被使用的寄存器42』、46』、48』的時鐘信號60執行的,而所述掩蔽是通過將零分別輸入到與門52、56、58的輸入端。通過將一輸入到與門54的一個輸入端,只有一個使用中的寄存器44』被實際上鍾控,這節省了相當多的時鐘分配功率以及在寄存器本身中耗散的功率。輸入到與門52、54、56、58的該組值(例如0100)可以被稱作鍾控掩碼。
圖7例示了圖6中所示電路的一個略為更複雜的電路的實施例,其中,不是提供多個門並向門提供鍾控掩碼,而是將信息提供到多個掩蔽單元62、64、66、68,所述掩蔽單元分別局部地確定是否應鐘控寄存器文件42、44、46、48內的寄存器。圖7的設計需要附加的掩蔽單元62、64、66、68的電路以及每掩蔽單元兩個與門,以便對於每個條帶(寄存器文件)計算時鐘掩碼變量的值。基於在每個寄存器文件內的每個寄存器中「最近」發生了什麼來確定時鐘掩碼比特。從各輸入「讀地址0」、「讀地址1」、「寫地址」、「最後一次讀取0」、「最後一次讀取1」及「最後一個虛擬」以及關於前一掩蔽單元的狀態的信息來確定最近發生了什麼。如果該寄存器已經被「最後一次讀取」,則掩蔽掉時鐘。如果在已被「最後一次讀取」之後寄存器近來又被寫入,則時鐘被使能。這可以利用接收上述輸入的小的有限狀態機來實現。
在圖8所示的這個狀態機中,如果寄存器文件中的寄存器不在最後一個虛擬條帶中並且在該條帶中被寫入(如寫地址所示)或者在前一條帶中被鍾控並且不是最後一次讀取(如讀地址和相應於該埠的最後一次讀取比特所示),則該寄存器文件中的寄存器將被鍾控。
圖9例示了被修改成提供局部掩蔽單元的圖6的電路。
前面的實施例使用完全相同的信息(即寄存器中的值是否被最後一次讀取),或者通過將該值強制為常數(例如零)或者通過不對寄存器進行鍾控,來確定不應該允許傳播該值以便減少功率。當傳遞寄存器文件包括超過一個寄存器時,讀埠地址的組合(其規定訪問哪個寄存器)和表示「最後一次讀取」的比特可以被組合來確定哪個值在應用中被最後一次讀取。有編碼該信息的其它方式,但是當前它們似乎效率較低。例如,有可能使得每個寄存器文件中的每個寄存器具有一個顯式的「使用中」比特,這樣就沒有必要將該信息與讀埠地址相組合。因此,本發明就針對使用任何「寄存器使用」信息以用於功率節省。
此外,關於條帶是第一虛擬條帶還是最後一個虛擬條帶的信息也可以由掩蔽單元使用來節省功率。在第一虛擬條帶處,應用(application)知道來自先前條帶的任何數據對於該應用來說都是沒有意義的。所述假數據可以是來自在結構中的該條帶上執行的之前計算的結果。因此,對於從包含第一虛擬條帶的物理條帶之前的物理條帶到達的任何數據來講,被通知條帶是第一虛擬條帶的掩蔽單元可以掩蔽時鐘或者選通數據。
圖10示出了一個複雜的寄存器文件,其具有四個寄存器、兩個讀埠、一個寫埠以及一組四個門,所述門可以使得從已被最後一次讀取的寄存器輸出的值成為常數。圖11示出了一個具有與圖10相同參數的寄存器文件,但是該寄存器文件具有將由掩蔽單元生成的單獨的時鐘。如果圖11的寄存器文件被簡化為包含兩個寄存器,則該寄存器文件可用在圖7中以替換44。
最後,為了處理第一個和最後一個虛擬條帶的特殊情況,一個寄存器文件應該掩蔽未使用的寄存器文件項(例如見圖10)或者例如通過為每個寄存器提供單獨的時鐘信號來選通它們的時鐘(例如見圖11)。
雖然已經結合了本發明的優選實施例描述了本發明,但是本領域的普通技術人員將認識到,許多修改和變化是有可能。本發明只希望由所附權利要求書限定,而不是由前面的描述來限定。
權利要求
1.一種在包括多個寄存器的裝置中實踐的方法,所述多個寄存器被組織成多個條帶,該方法包括向至少特定的條帶提供關於寄存器使用的信息;以及使用該信息來減少功率消耗。
2.根據權利要求1所述的方法,其中,所述提供信息包括提供關於最後一次需要讀取寄存器中的值的信息。
3.根據權利要求2所述的方法,其中,所述使用包括將最後一次讀取的信號的值強制成常數值。
4.根據權利要求2所述的方法,其中,所述使用包括只對包含將在後續條帶中使用的數據的那些寄存器進行鍾控。
5.根據權利要求4所述的方法,還包括從所述信息產生鍾控掩碼。
6.根據權利要求1所述的方法,還包括在存儲器中維持一個對應於每個寄存器的狀態的比特位。
7.一種阻止最後一次讀取的信號在裝置中傳播的方法,所述裝置包括被組織成多個條帶的多個寄存器,所述方法包括提供關於最後一次需要讀取寄存器中的值的信息;以及使用該信息以便將該最後一次讀取的值強制為常數。
8.根據權利要求7所述的方法,其中,所述使用包括將最後一次讀取的信號值輸入到一個接收關於最後一次讀取的信息的門,並將該門的輸出強制為零。
9.一種阻止最後一次讀取的信號在裝置中傳播的方法,所述裝置包括被組織成多個條帶的多個寄存器,所述方法包括提供關於最後一次需要讀取寄存器中的值的信息;以及使用該信息以便對少於所有寄存器的寄存器進行鍾控。
10.根據權利要求9所述的方法,其中,所述使用包括掩蔽被用來鍾控所述條帶的時鐘信號。
11.根據權利要求10所述的方法,其中,所述掩蔽包括將所述信息輸入到多個接收時鐘脈衝的門,並基於所述輸入信息對所述條帶進行鍾控。
12.根據權利要求10所述的方法,還包括局部地確定用於掩蔽時鐘信號的掩蔽比特位的值,該時鐘信號用來對所述條帶進行鍾控。
13.根據權利要求12所述的方法,其中,所述局部地確定掩蔽比特位的值包括從讀和寫地址信息以及所述最後一次讀取信息來確定掩蔽比特位的值。
14.一種可重新配置的設備,包括互連成形成多個傳遞寄存器文件的多個寄存器,所述傳遞寄存器文件在一個鏈式配置中彼此互連;多個功能單元,其中至少一個功能單元連接在每一個所述傳遞寄存器文件之間;以及連接在兩個相鄰傳遞寄存器文件之間的至少一個門,用於將在所述相鄰傳遞寄存器文件之間傳播的值強制為常數。
15.根據權利要求14所述的設備,其中,所述至少一個門包括呈現為單調函數的門。
16.一種設備,包括互連成形成多個傳遞寄存器文件的多個寄存器,所述傳遞寄存器文件以串行方式彼此互連;多個功能單元,其中一個功能單元連接在每一個所述傳遞寄存器文件之間;時鐘脈衝源;以及接收所述時鐘脈衝和最後一次讀取信息的多個門,用於根據所述最後一次讀取信息對所述多個寄存器中的特定寄存器進行鍾控。
全文摘要
公開了一種方法和設備,用於存儲和使用「寄存器使用」信息來確定寄存器何時被最後一次使用,從而可以實現功率節省。寄存器使用信息可以採取對於特定寄存器的「最後一次讀取」信息的形式。該最後一次讀取信息可以用來在讀取寄存器之後將該寄存器的值強制為零,或者在掩蔽掉其它寄存器的同時只對該寄存器進行鍾控。公開了幾種方法和硬體變型,用於使用所述寄存器使用信息來實現功率節省。
文檔編號G06F15/80GK1688968SQ03824276
公開日2005年10月26日 申請日期2003年8月14日 優先權日2002年8月16日
發明者H·施米特, B·萊文 申請人:卡內基梅隆大學