帶有複製寄存器文件的vliw處理器的製作方法
2023-04-24 20:09:01
專利名稱:帶有複製寄存器文件的vliw處理器的製作方法
帶有複製寄存器丈件的VLIW處理器
本發明涉及一種數據處理設備,其所具有的指令字包含了用於多 個並行功能部件的指令,例如超長指令字(VLIW)處理設備.
VLIW處理器包含多個能夠執行來自程序的指令的功能部件.指 令以包含用於多個並行功能部件的指令的指令字的形式發出.通過寄 存器文件在功能部件之間傳送搮作數數據.每個寄存器文件包含一組 寄存器和用於訪問選中的寄存器的多個讀和寫埠.每個功能部件 (或功能部件組)耦合到不同的埠組.因而, 一個功能部件能夠讀 取由其它功能部件產生的搮作數並寫下結果供其它功能部件使用.
實際上VLIW處理器可以包括非常多的功能部件.這使得無法輛 合所有功能部件到單個寄存器文件。作為一種替代體系結構,已經提 出將功能部件組織成集群.對每個集群提供一個寄存器文件,以使一 個集群中的所有功能部件耦合到這個集群的埠 .在這種體系結構中 由某個特定功能部件產生的結果只能由與該特定功能部件同屬一個 集群的功能部件從寄存器文件讀取。在這後面的思想是來自需要交換 結果的不同任務的指令通常只由功能部件的子集執行,即由某一特定 集群中的功能部件執行.因此那些任務不需要到集群之外的寄存器文 件的連接.
不過,有時需要在不同集群的功能部件之間交換有限的操作數和 結果.已經提出了多種不同的解決方案來從一個寄存器文件傳送數據 到另一個寄存器文件,以使一個集群中的功能部件所產生的結果可以 由別的集群中的功能部件使用.
美國專利號6, 269, 437公開了具有多個寄存器文件和一個複製 器的處理器。該複製器執行在不同寄存器文件中指定源和目標寄存器 的指令.該複製器與所述寄存器文件的讀和寫埠相耦合.該複製器 響應指令而從源寄存器複製數據到目標寄存器.
當編譯該處理器的一個程序時編譯器生成用於多種不同功能部 件的一個指令集合併確定分別產生和使用特定結果的指令之間的依 賴關係.編譯器確定由不屬於相同集群(沒有耦合到一個共同的寄存
器文件的埠)的功能部件執行的指令之間何時存在這種依賴關係. 假使這樣,編譯器就為複製器生成一條指令以將生產指令的結果複製 到與執行該使用指令的功能單元相輛合的寄存器文件中的一個寄存 器。
這項技術對指令字的生成施加了額外的調度限制.在生產指令執 行之後,必須調度複製指令,然後是使用指令.所涉及的寄存器必須 至少保持分配到相關指令已經執行過為止.這降低了處理器的效率。
除了別的以外,本發明的一個目標是為使用分布在不同寄存器文 件上的寄存器,具有多個能並行執行來自 一個指令字的指令的功能部 件的數據處理設備提高效率。
權利要求1中闡明了依照本發明的數據處理設備.依照本發明提 供了 一個特殊的複製寄存器文件,它充當複製功能部件的採作數源. 寫到寄存器文件的寄存器中的結果被作為產生該結果的指令執行的 一部分複製到複製寄存器文件,即不需要額外的指令.複製功能部件 由來自指令字的指令控制。複製功能部件的指令指示哪些結果需要從 複製寄存器文件複製到其它寄存器文件.
優選地,其中複製寄存器文件通過一個埠耦合鏈路與寄存器文 件的至少部分埠相耦合,用於將寫入到那些埠中各埠的數據各 自複製到複製寄存器文件中一個相應寄存器中,該相應寄存器的選擇 依賴於該相應的寫入埠,但與用來向該相應的埠提供數據所用的 寄存器地址至少部分無關.因而,對每個源寄存器文件在複製寄存器 文件中只需要有限數量的複製寄存器,少於源寄存器文件中寄存器的 總數.優選地,完全獨立於寄存器地址選擇複製寄存器。
原則上,寫入普通寄存器的每個結杲可以被自動複製到複製寄存 器文件.但是,這可能會導致覆蓋需要從複製寄存器文件複製出的先 前的結果。為了限制或防止不必要的複製,依照本發明的數據處理設 備的一種實施方案使用的指令包括一個指示是否必須將指令中至少 一條指令的結果複製到複製寄存器文件的欄位,埠耦合鏈路被安排 用來根據所述欄位中的值複製數據.因而,可以由程序防止不必要的 覆蓋,為複製指令留下更多時間用於從複製寄存器文件複製.
本發明的主要應用是不具有耦合到相同寄存器文件的埠的功 能部件的寄存器文件之間的結果複製.進一步的應用是減小寄存器使
用上的壓力,即在一個寄存器文件之外臨時^數據,以便使該寄存 器文件中的寄存器可以用於其它數據.假使這樣就用複製寄存器文件
保存最初寫入到一個寄存器文件隨後又被覆蓋的結果,隨後當需要該 結果時可以再次寫回那個寄存器文件.寫回可以從複製寄存器文件直 接進行,或者在存儲在另一寄存器文件之後或在另一寄存器文件中進 行。
將用下列附圖闡明該數據處理設備的這些和其它目標以及優勢 方面、數據處理的方法以及編譯指令字的方法.
圖1示出了一種數據處理設備.
圖2示出了一個複製寄存器文件。
圖3示出了為該處理設備生成一個程序的流程圖.
圖1示出了一種具有指令發射部件10、功能部件12a-d、複製 功能部件14、寄存器文件16a-b和複製寄存器文件18的數據處理設 備。指令發射部件10具有與功能部件12a-d和複製功能部件1相 耦合的發射槽連接.指令發射部件10設計用來發射指令字,每個指 令字包含一個指令組合,每個指令用於功能部件12a-d和複製功能部 件14中相應的一個。為此目的,指令發射部件10通常包含指令存儲 器、程序計數器和可選的指令解壓縮電路,但因為這些是眾所周知的 並且與本發明無關就不再單獨示出。
第一和第二功能部件12a,b具有與第一寄存器文件16a的讀端 口 15a,b耦合的搮作數輸入.第一和第二功能部件12a,b具有與第 一寄存器文件16a的寫埠 17a,b耦合的結果輸出埠,同樣,第 三和第四功能部件12c,d具有與第二寄存器文件16b的讀埠耦合 的搮作數輸入.第三和第四功能部件12c,d具有與第二寄存器文件 16b的寫埠 17c, d輛合的結果輸出.讀和寫埠包括寄存器尋址部 件(未單獨示出)以在指令中寄存器選擇欄位的控制下尋址寄存器文 件16a, b中的寄存器。讀埠各自包括一個寄存器內容連接(未單獨 示出)用於將地址寄存器的內容提供給功能部件12a-d。寫埠各自 包括一個結果連接(未單獨示出)用於將功能部件12a-d的結果提供 給寄存器文件16a,b.
功能部件12a-d可以是任意類型,例如算術邏輯部件(LAU)或 存儲訪問部件等.儘管只示出了有限數量的功能部件,但應該理解實
際中可以提供多得多的功能部件.同樣,可以提供很多寄存器文件.
如圖所示,每個寄存器文件16a,b規定了一個與該寄存器文件相連的 功能部件12a-d集群.作為例子,每個功能部件12a-d只與一個寄 存器文件相耦合,但應該理解通過寄存器文件選擇硬體一些功能部件 12a-d可以使輸入和/輸出輛合到不止一個寄存器文件16a,b,以便 可以在指令的控制下選擇那些寄存器文件中任意一個中的寄存器從 中讀出和/或從那些功能部件寫入。但是,優選地每個功能部件12a-d 只與 一個寄存器文件相耦合,因為連接到多個寄存器文件增加了所需 埠數、指令寬度、硬體成本及延遲。
儘管將依據功能部件12a-d描述本發明,但您將理解功能部件 12a-d中的一個或多個可以由一組共享相同讀寫埠並可替換執行 指令的功能部件代替.
複製寄存器文件18的輸入耦合到寄存器文件16a, b的每一個寫 埠 17a-d。複製寄存器文件還有一個讀埠耦合到複製功能部件14 的搮作數輸入.複製功能部件14的結果輸出19a, b耦合到寄存器文 件16a,b的相應埠.
在操作中,指令發射部件10發射指令字,每個指令字包含一個 指令組合,每條指令用於功能部件12a-d和複製功能部件14中相應 的一個.用於功能部件12a-d的指令通常包含搮作代碼、第一和第二 操作數寄存器選擇代碼及結果寄存器選擇代碼.搮作代碼命令該功能 部件選擇特定的搮作類型,搮作數寄存器選擇代碼及結果寄存器選擇 代碼被提供給寄存器文件的埠以分別選擇操作數和結果寄存器.
當結果被寫入到寄存器文件16a,b時,至少部分結果被自動復 制到複製寄存器文件18的寄存器中。複製功能部件14執行指令以復 制複製寄存器文件18中寄存器的內容到寄存器文件16a,b中尋址到 的寄存器。
複製功能部件14的指令通常包含複製寄存器文件18中包含搮 作數數據的操作數寄存器的地址以及對數據應該被複製到的結果寄 存器的說明。結果寄存器的說明通常包含寄存器文件選擇欄位和寄存 器選擇欄位,分別用於尋址所選的寄存器文件16a, b和該寄存器文件 16a,b中的寄存器。響應該指令,數據從尋址到的帶操作數的寄存器 被複製到所選寄存器文件16a,b中尋址到的寄存器(實際中應該實現
遠遠不止兩個寄存器文件16a,b以從中選擇)。
因而,由指令發射部件10發射給複製功能部件14的複製指令 的執行可以用來使由始發功能部件12a-d執行的操作的結果能夠由 和始發功能部件12a-d沒有耦合到相同寄存器文件16a,b的功能部 件12a-d用作搮作數.
在一種替代實施方案中,複製功能部件14複製到寄存器文件 16a,b的預定寄存器中,假使這樣在複製功能部件14的指令中就不 需要結杲寄存器地址.另外,複製功能部件14可以並行地將副本廣 播到所有寄存器文件16a, b中.如果這樣在複製功能部件14的指令 中就不需要寄存器文件選擇欄位,但是,當然在很多只有一個或部分 寄存器文件16a, b需要該副本的應用中,這種方法可能會導致不必要 的寄存器覆蓋.
圖2示出了複製寄存器文件18 (圖l所示)的一種實施方案. 這個實施方案包括多路復用器20和多個寄存器22a-d.寄存器文件 16a-b的寫埠 17a-d的數據部分與寄存器22a-d中的相應寄存器的 輸入28a-d相耦合.寄存器22a-d的輸出通過多路復用器20與複製 功能部件14 (未示出)的搮作數輸入26相耦合.控制輸入24用於 從複製功能部件14的複製指令接收搮作數地址。
在操作中,當一個功能部件12a-d將結果寫入到一個寫埠 17a-d時,該結果也被自動寫入到那個寫埠 17a-d所屬的寄存器 22a-d。在複製指令的控制下來自寄存器22a-d中被選中的寄存器的 操作數數據被提供給複製功能部件14的搮作數輸入26.
將會認識到來自一個特定寫埠 17a-b的所有數據都被複製到 複製寄存器文件18中該特定的寫埠 17a-b所屬的同一個寄存器 22a-d,與在寫埠 17a-d的寄存器文件16a,b中所選棒的寄存器無 關。因而,複製寄存器文件18中寄存器22a-d的數量遠遠小於寄存 器文件16a-d中寄存器數量之和,所以可以用很短的地址欄位尋址復 制寄存器文件18中的寄存器22a-d.這樣做的價值在於,不需要進 一步的措施就能保證寄存器22a-d的內容在被復蓋之前必定會被復 制到其它寄存器文件16a,b中.
優選地,來自指令發射部件10的指令字控制是否複製結果數據 到複製寄存器文件18中的寄存器22a-d.例如,通過用複製控制信
息擴充功能部件12a-d的指令可以實現到這一點,例如每個特定指令 中的一個複製控制位指示當功能部件12a-d將該特定指令的結果寫 入它的寄存器文件16a,b時是否應該複製該特定指令的結果到複製 功能部件18中的相關寄存器22a-d。假使這樣,該特定指令的複製 控制位就被提供給執行該指令的功能部件12a-d的寫埠 17a-d對 應的寄存器22a-d的寫允許輸入(圖2中未示出).複製控制位的使 用使得能夠延遲覆蓋寄存器"a-d中的數據,所以能夠延遲要從寄存 器22a-d複製數據的複製功能部件14的指令,例如當必須首先複製 來自另 一寄存器22a-d的數據時.
在一種可選實施方案中複製寄存器文件18中用於一個寫埠 17a-d的寄存器22a-d可由多個寄存器代替.假使這樣,複製功能部 件的複製指令包含用於在各個寫埠 17a-d對應的多個寄存器之間 進行選擇的選擇代碼.來自寫埠 17a-d的結果被以循環方式複製到 用於該寫埠 17a-d的這多個寄存器中不同的寄存器.因而,即使沒 有複製控制位也延遲了對寄存器22a-d中數據的覆蓋.
儘管對寫埠 17a-d中的各個埠示出了單獨的寄存器22a-d,但也可以為寫埠組(例如一個寄存器文件16a,b的所有寫埠 ) 提供共享寄存器(或寄存器組)。在每個指令周期中只有來自該寫端 口 17a-d的組中一個組的數據被寫入用於該寫埠組的寄存器(或寄 存器組中的一個)。這減少了到複製寄存器文件18中的寄存器的連 接數。例如,通過複製控制位,可以控制從相關寫埠組中的哪個寫 埠複製數據.
作為選擇,可以為同一個寄存器文件中的不同寄存器組提供獨立 的寄存器22a-d,假使這樣,提供給寫埠 17a-d的寄存器地址的一 部分也被提供給複製寄存器文件18以在複製寄存器文件18中選擇適 當的寄存器22a-d.這降低了複製寄存器文件18中的寄存器22a-d 被覆蓋的平均頻率,給了複製功能部件16更多的時間複製數據.通 過在編譯階段調整對不同結果的寄存器分配以使以後需要的數據在 複製寄存器文件18中不被覆蓋,能夠確保這個數據保持可用.為此 不需要整個寄存器地址僅僅地址位中的一個子集(例如一個或多個 位)就足以為此目的在複製寄存器文件18中選擇一個寄存器.
圖3示出了用於為圖1的處理設備生成指令字的一個過程的流
程圖.這種用於產生指令的過程可以由任何計算機執行,包括圖1中 的設備。該過程導致一組指令字可能在一些介質(如磁碟或光碟)上
的中間存儲之後存儲在指令發射部件10中以供功能部件12a-d和復 制功能部件14執行。
在第一步31中以某種形式例如像C這樣的高級語言或其它形式 接收程序說明.在第一步中這個程序被轉換成對必須由功能部件 12a-d執行以實現該程序的機器搮作集的說明以及這些操作之間的 數據依賴的說明.在第二步32中,這些搮作被分配給功能部件12a-d 並通過分配調度到不同的指令字.通常並不是所有功能部件12a-d 都能夠執行所有的操作,因此對功能部件12a-d的操作的分配受限於 功能部件12a-d的能力.此外,指導分配以便將指令分配到不同的功 能部件使得需要執行的指令字數量最少.另外第二步32還為操作的 結果分配寄存器。
在第三、第四和第五步33、 34、 35中, 一個接一個地處理指令 字中的指令以確保指令搮作數可用.在第四步中測試產生指令操作數 的功能部件12a-d是否與執行指令的功能部件12a-d耦合到了相同 的寄存器文件.如果是,就設置該指令的搮作數指向相關寄存器.如 果不是,就執行第四步35,在必須執行該指令的功能部件12a-d的 寄存器文件16a, b中分配一個中間寄存器.設置該指令的搮作數指向 該中間寄存器.第四步35在指令字中增加一條複製指令以命令複製 功能部件14從複製寄存器文件18複製操作數到中間寄存器.第五步 36為產生該搮作數作為結果的指令設置複製控制位,以使該結果被 寫入複製寄存器文件18.第六步37測試是否已經執行完所有指令. 如果沒有,就重複第三到第五步33-35.如果已執行完,就執行第七 步37,彙編程序並將它存儲在計算機可讀介質如指令發射部件10中 的可尋址半導體存儲器或者中間介質之中。
將會理解圖3僅示出了本發明最直接涉及的那些步驟.實踐中可 以添加很多其本身實現已知的步驟.例如,如果必要的話,可能發生 重新調度步驟以確保複製功能部件14有足夠的時間複製數據,或者 確保足夠的寄存器空閒可用。
儘管已經描述了本發明應用於在沒有埠耦合到相同寄存器文 件的功能部件的寄存器文件之間複製結果,但應該認識到本發明可以
有更廣泛的應用.例如,可以用複製來減輕寄存器使用上的壓力.假 使這樣複製寄存器文件就用來保存那些在其最初被寫入的寄存器文 件中被覆蓋的結果,以後當需要該結杲時再將其寫回那個寄存器文 件。寫回可以直接從複製寄存器文件進行,或者通過存儲器等.因而 如果在複製操作之後一個源寄存器文件中的值在一個特定寄存器文 件中不再需要,可以對其它數據復用該寄存器,因為該值在以後可以 複製到別的寄存器文件.
權利要求
1.一種執行程序的方法,該方法包括-用第一功能部件執行第一指令,第一功能部件產生結果並將該結果寫入由來自第一指令的結果地址所尋址到的第一寄存器文件中的第一寄存器,將該結果的一個副本寫入複製寄存器文件中至少部分獨立於該結果地址而所選擇的一個複製寄存器;-執行複製指令以從複製寄存器文件複製該結果到第二寄存器文件;-用來自第二寄存器文件的結果作為操作數用第二功能部件執行第二指令;
2. 依照權利要求l的方法,其中複製寄存器是根據該結果被寫 入第一寄存器文件所用的那個埠而選擇的。
3. 依照權利要求l的方法,其中測試來自第一指令的複製控制信息以確定該結果是否被複製到了複製寄存器文件。
全文摘要
在VLIW處理器中執行電腦程式,該VLIW處理器包含多個功能部件和多個寄存器文件,每個寄存器文件都耦合到功能部件的一個相應子集。當執行第一條指令時,它將結果寫入跟據來自該指令的結果地址所尋址到的寄存器文件中的一個寄存器,該結果被複製到複製寄存器文件中的一個寄存器。複製寄存器是根據寫入結果的寄存器文件而選擇的,但至少部分獨立於結果地址,以使寫入寄存器文件中尋址到的不同的寄存器中的結果被複製到寄存器文件中的相同寄存器。接著可以執行複製指令以從複製寄存器文件將該結果複製到第二寄存器文件,該結果從中可被用作另一指令的操作數。
文檔編號G06F9/38GK101097513SQ20071008639
公開日2008年1月2日 申請日期2003年10月28日 優先權日2002年11月20日
發明者B·斯裡尼瓦桑, M·J·G·貝庫伊 申請人:皇家飛利浦電子股份有限公司