專利名稱:一種用于微處理器的硬件多線程控制方法及其裝置的制作方法
技術領域:
本發明涉及微 處理器體系結構領域,特別涉及硬件多線程的控制方法及其裝置。背景知識為了進一步提高微處理器性能,已提出多種新穎的體系結構,如多核、多線程、流 處理、PIM、可重構、多態等。這些新的體系結構從不同角度對微處理器發展中的問題提出了 解決方法。受到軟件程序特性影響和硬件工藝的物理限制,未來體系結構的發展已經不是 僅僅通過提高主頻就可以獲得系統性能的大幅提升。體系結構技術發展的趨勢是明顯的, 多線程和多核,成為兩個關鍵技術方向,在各個領域,含有多線程或多核特征的處理器層出 不窮。流水線技術是RISC處理器區別于CISC處理器的重要特征。采用深度流水技術,在 指令相關和指令跳轉時會大大降低流水線的性能。本發明在RISC架構基礎上,采用深度流 水技術,實現多硬件線程執行,有效的避免指令相關帶來的性能減低,并通過多線程提高微 處理器的性能。2008-7-16公開的專利CN101221493A,題目《并行處理器中的多線程執行》,發 明人D ·伯恩斯坦因等。該發明公開了一種并行的硬件多線程處理器。該處理器包含一個 諧調系統功能的通用處理器和支持多個硬件線程和多個微引擎。該處理器還包含具有第1 存儲控制器和第2存儲控制器的存儲器控制系統,第1存儲控制器根據存儲器訪問是指向 偶數存儲組還是指向奇數存儲組,將存儲器訪問加以分類,第2存儲控制器則根據存儲器 訪問是讀訪問還是寫訪問,對存儲器訪問進行優化。2007-8-22公開的專利CN101021801,題目《流水線多進程之間基于消息隊列的 海量數據傳輸方法》,發明人薛慶童等。該專利公開了一種流水線多進程之間基于消息隊 列的海量數據傳輸的方法。在計費產品業務處理流程中一條話單順序通過至少分為格式 化、規整(或者稱為分揀)、排重、批價、入庫多個進程,計費方法采用單步與整體提交相結 合的機制,通過配置來實現在不同環境下采用不同消息隊列類型自動分配任務,負載均衡 管理,將話單分發至不相同的消息隊列,根據業務邏輯,自定義方式進行部署。采用該發明 方法實現的計費系統海量的話單數據在進程間的傳輸,全部通過消息隊列,處理過程可以 在內存里面實現,沒有系統IO的開銷,速度大大提高。采用基于消息隊列的流水線并行處 理技術方案的系統處理效率明顯提高。處理速度在國內外計費廠家中名列前茅。2006-1-25公開的專利CN1725176,題目《多線程流水線指令解碼器的方法和設 備》,發明人J ·Ρ ·杜格拉斯等。該專利公開了一種多線程流水線指令解碼器的方法,使用 多線程傳輸的指令解碼器計時、清除和延遲多線程機器中解碼流水線的指令,可以獲得最 佳的性能和最小的功耗。一個映像流水線映像保持線程標識的指令解碼流水線和指令解碼 器每個流水線階段有效指令比特。線程標識和有效的比特用于控制對指令解碼器中每個流 水線階段的計時、清除和延遲。一個線程指令能夠被清除而不與在解碼流水線的其它線程 指令發生沖突,在一些情況下,一個線程的指令能夠被延遲而不與在解碼流水線的其它線 程指令發生沖突。本發明中,僅僅當有效指令需要前進以便保持功率和最小化延遲時計時 流水線階段。
1999-9-15公開的專利CN1228557,題目《計算機處理器多線程指令級并行技 術》,發明人劉殷等。該專利公開了一種計算機處理器多線程指令級并行技術。該發明涉 及一種可應用于計算機處理器的技術多線程指令級并行技術。采用該技術的計算機處理 器可以輪流地從處于執行狀態的線程中取指令,使得在計算機處理器中并行執行的若干指 令分別來自于不同的線程,因而這些指令間不存在“指令間依賴性問題”。2007-6-6公開的專利CN1975663,題目《具有用于不同線程的非對稱硬件多線 程支持的裝置》,發明人戴維· A ·克拉。該專利提供了一種用于特定類線程的非對稱硬 件支持。優選地,該特定類線程是高優先級的I/O綁定線程。在第一個方面中,多線程處理 器包括用于支持N個線程的并發執行的N組寄存器。至少一個寄存器組專門用于特定類的 線程,并且不能為其它線程所使用,即使在閑置時也是如此。在第二方面中,特定類的線程 僅可填充超高速緩沖器存儲器的有限的部分,以便減少否則可能出現的超高速緩沖器的刷 新。
2005-12-14公開的專利CN1707694,題目《用于多線程流水線總線系統的存儲 控制器》,發明人徐允范等。該專利公開了一種用于多線程流水線總線系統的存儲控制器, 在多線程流水線系統的存儲控制方法中,從主機順序接收存儲單元中待訪問的多排的地 址。對于該多排中的每一排,判定當讀/寫命令輸出到存儲單元時對應于該排的地址是否 從主機輸入。當該判定結果表明對應于該排的地址已輸入時,向該存儲單元輸出包括公開 頁信息和自動預充電信息中任一種在內的讀/寫命令。1999-10-20公開的專利CN1232219,題目《流水線型多處理器系統》,發明人小 池庸夫。該專利公開了一種流水線型多處理器系統,包括一組處理器單元,一組緩沖器及調 試單元。該處理器單元用于流水線處理數據;該緩沖器保持輸入數據和每個處理器單元的 處理結果;緩沖器和處理器單元在數據輸入和輸出之間依次級聯,調試單元用于可選擇地 在外部輸出每個處理器單元的處理結果,以在調試時進行監控。
發明內容
本發明的目的是為軟件多線程程序的執行設計一種用于微處理器的硬件多線程 控制方法及相應的硬件多線程控制裝置。一種用于微處理器的硬件多線程控制方法,其特征在于該方法包括以下步驟1)多線程取指步驟,用于各個線程的指令讀取,各個線程的指令地址產生。具體包 括多線程指令地址控制、多線程指令地址緩存、多線程取指。a)多線程指令地址控制,用于產生各個線程的指令地址,當某個線程阻塞時,僅阻 塞該線程指令地址,其它線程指令地址正常更新;b)多線程指令地址緩存,用于存儲η個線程的指令地址;c)多線程取指,用于將取指邏輯對稱劃分成η級流水,取出η個硬件線程所對應的 軟件線程指令,當某個線程阻塞時,僅阻塞該線程取指,其它線程取指正常運行。2)多線程譯碼步驟,用于對各個硬件線程的指令進行譯碼,準備好多線程執行步 驟所需要的寄存器數據。具體包括多線程譯碼、多線程寄存器操作數準備、譯碼部件數據旁 路控制a)多線程譯碼,用于將譯碼邏輯對稱劃分成η級流水,完成多線程初始化專用指令譯碼、常規指令譯碼。當某個線程阻塞時,僅阻塞該線程指令譯碼,其它線程指令譯碼正 常運行。所述的多線程初始化專用指令包括用于標識該指令的操作碼域,用于操作目的操 作數的操作數域,用于操作源操作數的操作數域;b)多線程寄存器操作數準備,用于產生待讀取寄存器地址,并從η個寄存器組中 讀取指令所需操作數;c)譯碼部件數據旁路控制,用于將數據旁路的數據提供給指令譯碼的某個流水階 段;3)多線程執行步驟,用于執行各個線程指令。具體包括多線程初始化專用指令執 行、線程號緩存、執行部件數據旁路控制、多線程常規指令執行a)多線程初始化專用指令執行,用于產生新硬件線程號,新硬件線程號對應于該 硬件線程所執行的軟件線程;b)線程號緩存,用于將所述多線程初始化專用指令執行產生的新硬件線程號緩 存,使得產生的某新硬件線程號在線程號寄存器序列中的位置與該硬件線程在指令地址寄 存器序列、取指部件多線程寄存器序列、譯碼部件多線程寄存器序列、執行部件多線程寄存 器序列、訪存部件多線程寄存器序列、寫回部件多線程寄存器序列中的位置一致;c)執行部件數據旁路控制,用于將數據旁路的數據提供給指令執行的某個流水階 段;d)多線程常規指令執行,用于將執行邏輯對稱劃分成η級流水,完成η個硬件線 程的常規指令執行,當某個線程阻塞時,僅阻塞該線程指令執行,其它線程指令執行正常運 行。4)多線程訪存步驟,用于將訪存邏輯對稱劃分成η級流水,將各個線程的執行結 果寫入到存儲器或者從存儲器讀入線程所需數據,當某個線程阻塞時,僅阻塞該線程數據 訪存,其它線程數據訪存正常運行。5)多線程寫回步驟,用于將寫回邏輯對稱劃分成η級流水,將各個線程的執行結 果寫回到對應寄存器組,當某個線程阻塞時,僅阻塞該線程數據寫回,其它線程數據寫回正 常運行。具體包括多線程寫回數據控制、多線程寫回寄存器地址控制a)多線程寫回數據控制,用于待寫回寄存器數據的準備和輸出;b)多線程寫回寄存器地址控制,用于待寫回寄存器地址的準備和輸出。一種用于微處理器的硬件多線程控制裝置,該裝置通過采用流水線技術,支持η 個硬件線程并行執行。其特征在于包括以下部件硬件多線程取指器件、硬件多線程譯碼器 件、硬件多線程執行器件、硬件多線程訪存器件、硬件多線程寫回器件、硬件多線程寄存器 組和多線程控制器件。1)所述硬件多線程取指器件包括指令地址控制器件,用于產生各個線程的指令 地址;指令地址寄存器序列,用于存儲η個線程的指令地址;取指部件多線程寄存器序列, 用于暫存取指邏輯η級流水的中間結果,每級寄存器對應一個硬件線程的部分取指邏輯輸 出;2)所述硬件多線 程譯碼器件包括譯碼部件多線程寄存器序列,用于暫存譯碼邏 輯η級流水的中間結果,每級寄存器對應一個硬件線程的部分譯碼邏輯輸出;數據旁路寄 存器序列,用于存儲各個線程前兩條指令的中間執行結果;
3)所述硬件多線程執行器件包括多線程初始化專用指令執行器件,用于產生硬 件線程號,該硬件線程號對應于該硬件線程所執行的軟件線程;線程號寄存器序列,用于緩 存產生的硬件線程號;執行部件多線程寄存器序列,用于暫存執行邏輯η級流水的中間結 果,且每級寄存器對應一個硬件線程的部分執行邏輯的輸出;數據旁路寄存器序列,用于存 儲各個線程前兩條指令的中間執行結果;4)所述硬件多線程訪存器件包括訪存部件多線程寄存器序列,用于暫存訪存邏 輯η級流水的中間結果,每級寄存器對應一個硬件線程的部分訪存邏輯輸出;
5)所述硬件多線程寫回器件包括寫回部件多線程寄存器序列,用于暫存寫回邏 輯η級流水的中間結果,每級寄存器對應一個硬件線程的部分寫回邏輯輸出;6)所述硬件多線程寄存器組包括譯碼器,根據多線程控制器件產生的寄存器控 制信號以及硬件多線程譯碼器件或硬件多線程寫回器件產生的地址信號,進行譯碼,輸出 當前線程的寄存器組使能信號和當前操作的寄存器地址;多路選通器,根據多線程控制器 件產生的寄存器控制信號,選通當前線程的寄存器組的數據,并將其輸出;η個寄存器組, 分別提供給η個線程使用,各自獨立,寫入數據來自硬件多線程寫回器件的輸出數據,讀出 數據送給硬件多線程譯碼器件;7)所述多線程控制器件,用于產生以下控制信號產生取指控制信號,輸出給所 述硬件多線程取指器件,產生譯碼控制信號,輸出給所述硬件多線程譯碼器件,產生執行控 制信號,輸出給所述硬件多線程執行器件,產生訪存控制信號,輸出給所述硬件多線程訪存 器件,產生寫回控制信號,輸出給所述硬件多線程寫回器件,產生寄存器控制信號,輸出給 所述硬件多線程寄存器組。本發明的一個優點是針對軟件多線程程序,可以利用處理器硬件多線程執行,執 行時有效地隱藏了訪存延遲,略去了線程切換時線程相關信息的保存與恢復,減少了線程 切換的開銷,從而提高了程序的執行效率,降低功耗。本發明的另一個優點是通過采用流水線技術,使得原來執行一個線程的時間內現 在可以并行執行η個線程,從硬件上提高了程序的執行效率。本發明的另一個優點是通過硬件多線程有效規避了深度流水帶來的數據相關性 風險,降低了系統的設計復雜性,并提高了系統的執行效率。
圖1是典型MIPS處理器流水體系結構圖。圖2是用于微處理器的硬件多線程控制裝置圖。圖3是硬件多線程裝置中的硬件多線程取指器件圖。圖4是硬件多線程裝置中的硬件多線程譯碼器件圖。圖5是硬件多線程裝置中的硬件多線程執行器件圖。圖6是硬件多線程裝置中的硬件多線程訪存器件圖。圖7是硬件多線程裝置中的硬件多線程寫回器件圖。圖8是硬件多線程裝置中的硬件多線程寄存器組說明圖。圖9是多線程初始化專用指令編碼格式。圖10是用于微處理器的硬件多線程控制方法步驟圖。
圖11是硬件多線程流水線拆分及時鐘圖。圖12是硬件多線程執行時序示意圖。
具體實施方式
下面結合附圖,對本發明的實現進行詳細描述。圖1所示是典型MIPS處理器流水體系結構圖。將一條指令的執行劃分為取指 (IF)、譯碼(ID)、執行(EX)、訪存(MEM)和寫回(WB)五級流水,本專利即在此流水基礎上進 行設計,采用加深流水級數,支持硬件多線程執行;圖2是本發明用于微處理器的硬件多線程控制裝置總體結構示意圖。包括硬件多 線程取指器件201,硬件多線程譯碼器件202,硬件多線程執行器件203,硬件多線程訪存器 件204,硬件多線程寫回器件205、硬件多線程寄存器組206,多線程控制器件207。每個器 件都支持η個硬件線程并行執行,且各器件之間是同步的。硬件多線程取指器件201,根據多線程控制器件207輸出的取指控制信號,完成η 個硬件線程指令地址的更新操作、實現指令地址的存儲、完成對η個硬件線程的取指操作, 將指令輸出到硬件多線程譯碼器件202 ;硬件多線程譯碼器件202,根據硬件多線程取指器 件201輸出的η個線程的指令和多線程控制器件207產生的譯碼控制信號,完成η個硬件 線程的譯碼操作,將待操作的操作控制信息和數據信息輸出給硬件多線程執行器件203 ; 硬件多線程執行器件203,根據硬件多線程譯碼器件202輸出的操作控制信息和數據信息、 多線程控制器件207產生的執行控制信號,完成η個線程的指令執行,將執行結果的數據信 息輸出給硬件多線程訪存器件204 ;硬件多線程訪存器件204,根據多線程控制器件207產 生的訪存控制信號,完成η個硬件線程的存儲器訪問操作,并將來自多線程執行器件203的 數據信息輸出給硬件多線程寫回器件205 ;硬件多線程寫回器件205,根據多線程控制器件 207產生的寫回控制信號,將待寫回的數據信息和當前待寫回的寄存器地址輸出給硬件多 線程寄存器組206 ;硬件多線程寄存器組206,根據多線程控制器件207輸出的寄存器控制 信號,配合硬件多線程譯碼器件202和硬件多線程寫回器件205,完成η個硬件線程的寄存 器組讀寫操作;多線程控制器件207,控制整個硬件多線程裝置的各器件執行,具體產生以 下控制信號產生取指控制信號輸出給硬件多線程取指器件201,產生譯碼控制信號輸出 給硬件多線程譯碼器件202、產生執行控制信號輸出給硬件多線程執行器件203、產生訪存 控制信號輸出給硬件多線程訪存器件204、產生寫回控制信號輸出給硬件多線程寫回器件 205,產生寄存器控制信號輸出給硬件多線程寄存器組206。圖3是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程取 指器件201結構圖。硬件多線程取指器件201包括指令地址控制器件301、指令地址寄存 器序列302、取指部件多線程寄存器序列303。指令地址控制器件301控制產生各個線程的 指令地址,每次產生對應于圖3取指邏輯IFl中所執行線程的下一條指令地址,假設某時刻 t時IFl中所執行線程序號為i,則該時鐘周期中指令地址控制器件301產生線程i順序執 行的下一條指令地址,該地址在下一個時鐘周期t+Ι被輸出到序列302的pc_DFF_l中,在 t+Ι周期pc_DFF_n在t周期的值(即線程i+Ι當前執行的指令地址)被取到指令地址控制 器件301中,產生線程i+Ι順序執行的下一條指令地址;指令地址寄存器序列302存儲η個 線程的指令地址,從pc_DFF_l寄存器到pc_DFF_n寄存器依次存儲為線程j、線程j_l、…、線程1、線程η、線程η-l、…、線程j+Ι的下一條指令地址;取指部件多線程寄存器序列303 暫存取指邏輯η級流水的中間結果,每級寄存器中存放部分取指邏輯IFj(j = 1,2,...,η) 的輸出,且取指部件多線程寄存器序列303中從IF_DFF_1寄存器到IF_DFF_n寄存器所存 數據對應的線程號與指令地址寄存器序列302中從pc_DFF_l寄存器到pc_DFF_n寄存器所 對應的線程號一致,即若pc_DFF_k寄存器中存放線程i的指令地址,則IF_DFF_k寄存器存 放線程i的IFk取指邏輯輸出。
圖4是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程譯 碼器件202結構圖。硬件多線程譯碼器件202包括譯碼部件多線程寄存器序列401、譯碼 部件數據旁路寄存器序列402。譯碼部件多線程寄存器序列401暫存譯碼邏輯η級流水的 中間結果,每級寄存器中存放部分譯碼邏輯IDj的輸出,且譯碼部件多線程寄存器序列401 中從ID_DFF_1寄存器到ID_DFF_n寄存器所存數據對應的線程號與取指部件多線程寄存器 序列303中從IF_DFF_1寄存器到IF_DFF_n寄存器對應的線程號一致,即若IF_DFF_k寄存 器中存放線程i的IFk取指邏輯輸出,則ID_DFF_k寄存器存放線程i的IDk譯碼邏輯輸出; 譯碼部件數據旁路寄存器序列402存儲η個線程前兩條指令的中間執行結果。圖5是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程執 行器件203結構圖。硬件多線程執行器件203包括多線程初始化專用指令執行器件501、 線程號寄存器序列502、執行部件多線程寄存器序列503、執行部件數據旁路寄存器序列 504。多線程初始化專用指令執行器件501產生多線程的硬件線程號;線程號寄存器序列 502為η級寄存器緩存,將產生的某硬件線程的線程號在寄存器序列502中位置Th_DFF_i 與該硬件線程在指令地址寄存器序列(302)、取指部件多線程寄存器序列(303)、譯碼部件 多線程寄存器序列(401)、執行部件多線程寄存器序列(503)、訪存部件多線程寄存器序列 (601)、寫回部件多線程寄存器序列(701)中的位置一致;執行部件多線程寄存器序列503 暫存執行邏輯η級流水的中間結果,每級寄存器中存放部分執行邏輯Ej的輸出,且執行部 件多線程寄存器序列503中從E_DFF_1寄存器到E_DFF_n寄存器所存數據對應的線程號與 取指部件多線程寄存器序列303中從IF_DFF_1寄存器到IF_DFF_n寄存器所對應的線程號 一致,即若IF_DFF_k寄存器中存放線程i的IFk取指邏輯輸出,則E_DFF_k寄存器存放線 程i的Ek執行邏輯輸出;執行部件數據旁路寄存器序列504存儲η個線程前兩條指令的中 間執行結果。圖6是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程訪 存器件204結構圖。硬件多線程訪存器件204包括訪存部件多線程寄存器序列601,該序 列暫存訪存邏輯η級流水的中間結果,每級寄存器中存放部分訪存邏輯Mj的輸出,且訪存 部件多線程寄存器序列601中從M_DFF_1寄存器寄存器所存數據對應的線程號 與取指部件多線程寄存器序列303中從IF_DFF_1寄存器到IF_DFF_n寄存器所對應的線程 號一致,即若IF_DFF_k寄存器中存放線程i的IFk取指邏輯輸出,則M_DFF_k寄存器存放 線程i的Mk執行邏輯輸出。圖7是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程寫 回器件205結構圖。硬件多線程寫回器件205包括寫回部件多線程寄存器序列701,該序 列暫存寫回邏輯η級流水的中間結果,每級寄存器中存放部分寫回邏輯Wj的輸出,且寫回 部件多線程寄存器序列701中從W_DFF_1寄存器到W_DFF_n寄存器所存數據對應的線程號與取指部件多線程寄存器序列303中從IF_DFF_1寄存器到IF_DFF_n寄存器所對應的線程 號一致,即若IF_DFF_k寄存器中存放線程i的IFk取指邏輯輸出,則W_DFF_k寄存器存放 線程i的Wk寫回邏輯輸出。圖8是配合圖2用于微處理器的硬件多線程控制裝置總體結構圖的硬件多線程寄 存器組206結構圖。硬件多線程寄存器組206包括譯碼器801、多路選通器802、η個寄 存器組803。譯碼器801根據多線程控制器件207產生的寄存器控制信號和硬件多線程譯 碼器件202或硬件多線程寫回器件205產生的地址信號進行譯碼,輸出使當前線程的寄存 器組Regs」有效的使能信號和當前操作的寄存器地址;多路選通器802,根據多線程控制 器件207產生的寄存器控制信號,選通當前線程的某個寄存器組的數據輸出;η個寄存器組 803,分別提供給η個線程使用,各自獨立,寫入數據來自硬件多線程寫回器件205的輸出數 據,讀出數據送給硬件多線程譯碼器件202。
本發明可在微處理器上實現硬件多線程執行,通過提供一種多線程初始化專用指 令來完成軟件多線程到硬件多線程的映射,圖9是所提供的硬件多線程初始化專用指令的 編碼格式。包括用于標識該指令的操作碼域901 ;用于操作目的操作數的操作數域902,此 目的操作數可以是該硬件線程對應的寄存器組中某個寄存器,用來在初始化階段標識該硬 件線程號;用于操作源操作數的操作數域903,此源操作數可以是新產生的一個線程號。圖10是硬件多線程控制方法步驟圖。多線程取指步驟1001,用于各個線程的指令 讀取,各個線程的指令地址產生。包括多線程指令地址控制、多線程指令地址緩存、多線程 取指。多線程譯碼步驟1002,用于對各個硬件線程的指令進行譯碼,準備好執行步驟所需要 的寄存器數據。包括多線程譯碼、多線程寄存器操作數準備、譯碼部件數據旁路控制。多線 程執行步驟1003,用于執行各個線程指令。包括多線程初始化專用指令執行、線程號緩存、 執行部件數據旁路控制、多線程常規指令執行。多線程訪存步驟1004,用于各個線程的執行 結果寫入到存儲器或者從存儲器讀入線程所需數據。多線程寫回步驟1005,用于各個線程 的執行結果寫回到寄存器,包括多線程寫回數據控制、多線程寫回寄存器地址控制。下面以硬件4線程為例(η = 4),對本發明的實現時序進行描述。圖11是硬件多線程流水線劃分及時鐘示意圖。以101取指邏輯為例,圖11中將 101取指邏輯IF對稱劃分為4級流水,則每級邏輯的延時變為單級流水時的1/4,如果圖1 中IF邏輯的時鐘周期為Τ,對應的時鐘為圖11中的clkl,則硬件四線程的時鐘可以如clk2 所示,頻率為clkl的4倍,使得單級流水時執行一個線程的時間內現在硬件四線程可以并 行執行4個線程。圖12是硬件多線程執行時序示意圖。以η = 4為例,#1,#2,#3,#4分別對應于4 個不同的硬件線程,所有的硬件線程都從相同指令地址處開始取指執行,假設Tl時刻開始 執行,硬件線程#1執行第一條指令的取指邏輯的第一步IFl ;Τ2時刻硬件線程#1執行第 一條指令的取指邏輯的第二步IF2,同時硬件線程#2執行第一條指令的取指邏輯的第一步 IFl ;依次類推,Τ5時刻,硬件線程#1執行第一條指令的譯碼邏輯的第二步ID2和第二條指 令的取指邏輯的第二步IF2,硬件線程#2執行第一條指令的譯碼邏輯的第一步IDl和第二 條指令的取指邏輯的第一步IFl。假設第一條指令是一條多線程初始化專用指令,則Τ2時 刻硬件線程#2開始取多線程初始化專用指令,Τ5時刻硬件線程#2開始譯碼多線程初始化 專用指令,Τ6時刻硬件線程#2開始執行多線程初始化專用指令,產生相應的硬件線程號2,T7時刻該硬件線程號2通過數據旁路傳遞給硬件線程#2的第二、三條指令的執行和譯碼階段,Τ8時刻硬件線程#2開始初始化專用指令寫回邏輯,Τ9時刻完成初始化專用指令寫回 邏輯。在Τ7時刻初始化專用指令已經計算出硬件線程號2,并且可以通過數據旁路傳遞給 硬件線程#2的第二、三條指令的執行和譯碼階段,第三條指令若為條件跳轉指令,則其在 Τ7時刻開始譯碼該條件跳轉指令,通過判斷來自數據旁路的硬件線程號來決定是否進行跳 轉,即將線程號和2進行比較,對于硬件線程#2,其硬件線程號與2相等,實現跳轉,對于其 他線程,其硬件線程號不等于2,不進行跳轉,繼續順序執行,從而實現了各個線程的分離, 該條件跳轉指令不必只為第三條指令,在第三條指令之后都可,因為Τ7時刻已經計算出硬 件線程號,可以通過條件跳轉指令進行條件跳轉。對于線程分離的其他情況的描述類似,可 見,如果第一條指令為多線程初始化專用指令,則第三條指令或者第三條指令之后通過條 件跳轉指令就可以實現線程的分離。
權利要求
一種用于微處理器的硬件多線程控制方法,其特征在于包括以下步驟1)多線程取指步驟(1001),用于各個線程的指令讀取,各個線程的指令地址產生;2)多線程譯碼步驟(1002),用于對各個硬件線程的指令進行譯碼,準備好多線程執行步驟(1003)所需要的寄存器數據;3)多線程執行步驟(1003),用于執行各個線程指令;4)多線程訪存步驟(1004),用于將訪存邏輯(105)對稱劃分成n級流水,各個線程的執行結果寫入到存儲器或者從存儲器讀入線程需要的數據,當某個線程阻塞時,僅阻塞該線程數據訪存,其它線程數據訪存正常運行;5)多線程寫回步驟(1005),用于各個線程的執行結果寫回到寄存器組。
2.如權利要求1所述的硬件多線程控制方法,其特征在于多線程取指步驟(1001)包括 多線程指令地址控制、多線程指令地址緩存、多線程取指;1)多線程指令地址控制,用于產生各個線程的指令地址,當某個線程阻塞時,僅阻塞該 線程指令地址更新,其它線程指令地址正常更新;2)多線程指令地址緩存,用于存儲η個線程的指令地址;3)多線程取指,用于將取指邏輯(101)對稱劃分成η級流水,取出η個硬件線程所對應 的軟件線程指令。
3.如權利要求1所述的硬件多線程控制方法,其特征在于多線程譯碼步驟(1002)包括 多線程譯碼、多線程寄存器操作數準備、譯碼部件數據旁路控制;1)多線程譯碼,用于將譯碼邏輯(102)對稱劃分成η級流水,完成多線程初始化專用指 令譯碼、常規指令譯碼,當某個線程阻塞時,僅阻塞該線程指令譯碼,其它線程指令譯碼正 常運行;所述的多線程初始化專用指令包括操作碼域(901),用于標識該指令,操作數域 (902),用于操作目的操作數,操作數域(903),用于操作源操作數;2)多線程寄存器操作數準備,用于從η個寄存器組中選擇對應線程的寄存器組,并讀 取指令所需操作數;3)譯碼部件數據旁路控制,用于將數據旁路的數據提供給指令譯碼的某個流水階段;
4.如權利要求1所述的硬件多線程控制方法,其特征在于多線程執行步驟(1003)包括 多線程初始化專用指令執行、線程號緩存、執行部件數據旁路控制、多線程常規指令執行;1)多線程初始化專用指令執行,用于產生新硬件線程號,新硬件線程號對應于該硬件 線程所執行的軟件線程;2)線程號緩存,用于將所述多線程初始化專用指令執行產生的新硬件線程號緩存,使 得產生的某新硬件線程號在線程號寄存器序列(502)中的位置與該硬件線程在地址指針 寄存器序列(302)、取指部件多線程寄存器序列(303)、譯碼部件多線程寄存器序列(401)、 執行部件多線程寄存器序列(503)、訪存部件多線程寄存器序列(601)、寫回部件多線程寄 存器序列(701)中的位置一致;3)執行部件數據旁路控制,用于將數據旁路的數據提供給指令執行的某流水階段;4)多線程常規指令執行,用于將執行邏輯(103)對稱劃分成η級流水,完成η個硬件線 程的常規指令執行,當某個線程阻塞時,僅阻塞該線程指令執行,其它線程指令執行正常運 行。
5.如權利要求1所述的硬件多線程控制方法,其特征在于多線程寫回步驟(1005)將寫 回邏輯(105)對稱劃分成η級流水,當某個線程阻塞時,僅阻塞該線程數據寫回,其它線程 數據寫回正常運行,多線程寫回步驟(1005)包括多線程寫回數據控制、多線程寫回寄存器 地址控制;1)多線程寫回數據控制,用于待寫回寄存器數據的準備和輸出;2)多線程寫回寄存器地址控制,用于待寫回寄存器地址的準備和輸出。
6.一種用于微處理器的硬件多線程控制裝置,該裝置通過采用流水線技術,支持η個 硬件線程并行執行;其特征在于,裝置包括硬件多線程取指器件(201)、硬件多線程譯碼器 件(202)、硬件多線程執行器件(203)、硬件多線程訪存器件(204)、硬件多線程寫回器件 (205)、硬件多線程寄存器組(206)、多線程控制器件(207);硬件多線程取指器件(201),用于完成對η個硬件線程的取值操作,將指令輸出到硬件 多線程譯碼器件(202),根據多線程控制器件(207)輸出的取指控制信號完成η個硬件線程 下一條指令地址的更新操作,實現指令地址的存儲;硬件多線程譯碼器件(202),用于接收來自硬件多線程取指器件(201)的η個線程的指 令、來自多線程控制器件(207)的譯碼控制信號,完成η個硬件線程的譯碼操作,將待操作 的操作控制信息和數據信息輸出給硬件多線程執行器件(203);硬件多線程執行器件(203),用于接收來自硬件多線程譯碼器件(202)的操作控制信 息和數據信息、來自多線程控制器件(207)的執行控制信號,完成η個線程的指令執行,將 執行結果的數據信息輸出給硬件多線程訪存器件(204);硬件多線程訪存器件(204),用于完成η個硬件線程的存儲器訪問操作;所述硬件多線 程訪存器件(204)包括訪存部件多線程寄存器序列(601),用于暫存訪存邏輯η級流水的中 間結果,每級寄存器M_DFF 1 M_DFF η對應一個硬件線程的部分訪存邏輯Ml Mn的輸 出,其中訪存邏輯Ml的輸入為硬件多線程執行器件(203)的輸出和多線程控制器件(207) 產生的訪存控制信號,寄存M_DFF η的輸出作為硬件多線程訪存器件(204)的輸出;硬件多線程寫回器件(205),用于將待寫回的數據信息和當前待寫回的寄存器地址輸 出給硬件多線程寄存器組(206);所述硬件多線程寫回器件(205)包括寫回部件多線程寄 存器序列(701),用于暫存寫回邏輯η級流水的中間結果,每級寄存器W DFF 1 W_DFF η 對應一個硬件線程的部分寫回邏輯Wl Wn的輸出,其中寫回邏輯Wl的輸入為硬件多線程 訪存器件(204)的輸出和多線程控制器件(207)產生的寫回控制信號,寄存!W_DFF η的 輸出作為硬件多線程寫回器件(205)的輸出;硬件多線程寄存器組(206),根據多線程控制器件(207)輸出的寄存器控制信號,配合 硬件多線程譯碼器件(202)和硬件多線程寫回器件(205),完成η個硬件線程的寄存器組讀 寫操作;多線程控制器件(207),輸出控制信號,控制整個硬件多線程裝置的各器件執行,具體 包括以下控制信號產生取指控制信號輸出給所述硬件多線程取指器件(201),產生譯碼 控制信號輸出給所述硬件多線程譯碼器件(202)、產生執行控制信號輸出給所述硬件多線 程執行器件(203)、產生訪存控制信號輸出給所述硬件多線程訪存器件(204)、產生寫回控 制信號輸出給所述硬件多線程寫回器件(205),產生寄存器控制信號輸出給所述硬件多線 程寄存器組(206)。
7.如權利要求6所述的硬件多線程控制裝置,其特征在于,所述硬件多線程取指器件(201)包括以下部件1)指令地址控制器件(301),根據多線程控制器件(207)產生的取指控制信號(包括 指令地址控制信號和跳轉地址)以及pc_DFF η的輸出,產生當前線程的下一條指令地址, 并將其送入指令地址寄存器序列(302);2)指令地址寄存器序列(302),用于存儲η個線程的指令地址,每個線程的指令地址依 次經過指令地址寄存器pc_DFFl pc_DFF η ;3)取指部件多線程寄存器序列(303),用于暫存取指邏輯η級流水的中間結果,每級寄 存器IF_DFF 1 IF_DFF η對應一個硬件線程的部分取指邏輯IFl IFn的輸出,其中取 指邏輯IFl的輸入為指令地址控制器件(301)的輸出和多線程控制器件(207)產生的取指 控制信號,寄存器IF_DFF η的輸出為硬件多線程取指器件(201)的輸出。
8.如權利要求6所述的硬件多線程控制裝置,其特征在于,所述硬件多線程譯碼器件(202)包括1)譯碼部件多線程寄存器序列(401),用于暫存譯碼邏輯η級流水的中間結果,每級寄 存器ID_DFF 1 ID_DFF η對應一個硬件線程的部分譯碼邏輯IDl IDn的輸出,其中譯 碼邏輯IDl的輸入為硬件多線程取指器件(201)的輸出、硬件多線程寄存器組(206)的讀 出數據和多線程控制器件(207)產生的譯碼控制信號,寄存器ID_DFF η的輸出為硬件多線 程譯碼器件(202)的輸出;2)數據旁路寄存器序列(402),用于存儲各個線程前兩條指令的中間執行結果,所存 數據分別來自于硬件多線程執行器件(203)的輸出數據和硬件多線程訪存器件(204)的輸 出數據,該數據旁路寄存器序列的每級寄存器ID_BypaSS_l ID_BypaSS_n-l的輸入數據 分別輸入到對應的譯碼邏輯IDl IDn-Ι,寄存器ID_BypaSS_n-l的輸出數據輸入到譯碼邏 輯 IDn。
9.如權利要求6所述的硬件多線程控制裝置,其特征在于,所述硬件多線程執行器件(203)包括以下部件1)多線程初始化專用指令執行器件(501),用于產生硬件線程號,并將產生的硬件線 程號輸出到線程號寄存器序列(502),該硬件線程號對應于該硬件線程所執行的軟件線 程;2)線程號寄存器序列(502),用于緩存產生的硬件線程號,每個由多線程初始化專用 指令執行器件(501)產生的線程號依次經過線程號寄存器Th_DFFl Th_DFF η ;3)執行部件多線程寄存器序列(503),用于暫存執行邏輯η級流水的中間結果,每級寄 存器E_DFF 1 E_DFF η對應一個硬件線程的部分執行邏輯El En的輸出,其中執行邏 輯El的輸入為硬件多線程譯碼器件(202)的輸出和多線程控制器件(207)產生的執行控 制信號,寄存η的輸出或寄存器Th_DFF η的輸出作為硬件多線程執行器件(203) 的輸出;4)數據旁路寄存器序列(504),用于存儲各個線程前兩條指令的中間執行結果,分別 來自于硬件多線程執行器件(203)的輸出數據和硬件多線程訪存器件(204)的輸出數據, 該數據旁路寄存器序列的每級寄存E_BypaSS_l E_BypaSS_n-l的輸入數據分別輸入到 對應的執行邏輯El En-1,寄存器E_BypaSS_n-l的輸出數據輸入到譯碼邏輯En。
10.如權利要求6所述的硬件多線程控制裝置,其特征在于,所述硬件多線程寄存器組 (206)包括以下部件1)譯碼器(801),根據多線程控制器件(207)產生的寄存器控制信號、以及硬件多線程 譯碼器件(202)或硬件多線程寫回器件(205)產生的地址信號,進行譯碼,輸出當前線程的 寄存器組使能信號和當前操作的寄存器地址;2)多路選通器(802),根據多線程控制器件(207)產生的寄存器控制信號,選通當前線 程的寄存器組的數據,并將其輸出;3)η個寄存器組(803),分別提供給η個線程使用,各自獨立,寫入數據來自硬件多線程 寫回器件(205)的輸出數據,讀出數據送給硬件多線程譯碼器件(202)。
全文摘要
一種用于微處理器的硬件多線程控制方法及其裝置,涉及微處理器體系結構領域。本發明提出的控制方法包括以下步驟多線程取指,多線程譯碼,多線程執行,多線程訪存,多線程寫回。本發明提出的仿真裝置包括一個硬件多線程取指器件,一個硬件多線程譯碼器件,一個硬件多線程執行器件,一個硬件多線程訪存器件,一個硬件多線程寫回器件,一個硬件多線程寄存器組,一個多線程控制器件。此外,本發明針對軟件多線程程序,可以通過處理器硬件多線程執行,執行時有效地隱藏了訪存延遲,略去了線程切換時線程相關信息的保存與恢復,減少了線程切換的開銷;采用流水線技術,使得原來執行一個線程的時間內現在可以并行執行n個線程;通過硬件多線程有效規避了深度流水帶來的數據相關性風險,降低了系統的設計復雜性,從硬件上提高了系統的執行效率。
文檔編號G06F9/38GK101957744SQ20101051273
公開日2011年1月26日 申請日期2010年10月13日 優先權日2010年10月13日
發明者師立寧, 王惠娟, 王沁, 王磊, 齊悅 申請人:北京科技大學