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