專利名稱:一種微處理器內(nèi)部寄存器堆的設(shè)計(jì)和訪問方法
技術(shù)領(lǐng)域:
本發(fā)明為一種微處理器內(nèi)部寄存器堆的設(shè)計(jì)和訪問方法,屬于微處理器設(shè) 計(jì)技術(shù),具體涉及微處理器中寄存器堆的設(shè)計(jì)、編址和訪問等技術(shù)方法,目的 是在不增加寄存器數(shù)量的基礎(chǔ)上,充分利用有限的寄存器資源,提高程序的性 能。
背景技術(shù):
寄存器是微處理器內(nèi)部的高性能部件,它的存儲(chǔ)性能大約為一級(jí)緩存(Cache) 的二到三倍,是內(nèi)存存儲(chǔ)性能的幾十倍到上百倍,由此可見,充分利用寄存器 進(jìn)行程序設(shè)計(jì)對(duì)提高程序的運(yùn)行性能至關(guān)重要。通常將程序員可見的寄存器稱 為體系結(jié)構(gòu)寄存器,由于各種因素的制約,體系結(jié)構(gòu)寄存器的數(shù)量非常有限(一 般為32個(gè)),因此往往需要將一些變量臨時(shí)保存到一級(jí)緩存乃至二級(jí)緩存中, 這就會(huì)影響到程序的運(yùn)行性能。微處理器寄存器堆是所有寄存器的集合,包括 體系結(jié)構(gòu)寄存器和一些其它的物理寄存器。微處理器寄存器的寬度一般為8的 倍數(shù),例如在32位處理器中,寄存器的寬度為32位;在64位處理器中,寄存 器的寬度為64位。絕大部分精簡(jiǎn)指令集計(jì)算機(jī)(Reduced Instruction Set Computer: RISC)的微處理器不提供對(duì)部分寄存器的訪問,而X86和X64系列微處理器也只能提供 對(duì)部分寄存器非常有限的訪問(例如AH/AL, AX分別表示8位,16位子寄存 器),其目的則是為了使之能與更第一級(jí)的微處理器和指令集兼容。X86提供的部分寄存器設(shè)計(jì)和訪問方式有以下幾點(diǎn)不足其一,適合于這種X86微處理器 上的一條指令的一個(gè)操作數(shù)一次只能訪問一個(gè)部分寄存器;其二,并不是所有 X86微處理器上的寄存器都具有部分寄存器,只有少量寄存器具有部分寄存器; 其三,目前對(duì)這些部分寄存器的訪問方式還不完善,只能直接訪問低位部分寄 存器,例如EAX寄存器只提供了對(duì)AX的直接訪問,需要使用額外的指令(例 如移位指令)才能完成對(duì)高位的訪問。在程序設(shè)計(jì)方面,經(jīng)常需要對(duì)8位、16位、32位、64位等不同長(zhǎng)度的數(shù)據(jù) 進(jìn)行混合處理,對(duì)于32位或者64位處理器來說,由于8位部分寄存器的數(shù)量 非常有限,常常需要用32位或64位長(zhǎng)度的寄存器來存儲(chǔ)8位或16位的數(shù)據(jù), 由于每次訪問只能以整個(gè)寄存器為單位進(jìn)行訪問或者計(jì)算,造成資源上的極大 浪費(fèi),使得本來就非常寶貴的寄存器資源更顯得捉襟見肘。 發(fā)明內(nèi)容提高存儲(chǔ)性能和效率是現(xiàn)代微處理器最重要的設(shè)計(jì)準(zhǔn)則之一。為充分利用 有限的寄存器結(jié)構(gòu),減少訪問和計(jì)算帶來的浪費(fèi),采用本發(fā)明方法可以將物理 寄存器或者體系結(jié)構(gòu)寄存器設(shè)計(jì)成矩陣式的寄存器堆。本發(fā)明提供一種微處理器內(nèi)部寄存器堆的設(shè)計(jì),該設(shè)計(jì)與現(xiàn)有寄存器的訪 問和計(jì)算模式兼容,通過將原有的寄存器在邏輯上進(jìn)行矩陣式的編址,能夠較 大程度地提高寄存器堆的利用效率,從而減少對(duì)緩存的訪問,進(jìn)而提高微處理 器的存儲(chǔ)和計(jì)算性能。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是本發(fā)明將物理寄存器或者體 系結(jié)構(gòu)寄存器設(shè)計(jì)成矩陣式的寄存器堆,并引入新的指令同時(shí)對(duì)多個(gè)子寄存器 進(jìn)行讀、寫及各種邏輯運(yùn)算。一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其包括寄存器堆結(jié)構(gòu)的矩陣化設(shè)計(jì)步驟;寄存器堆訪問的矩陣化設(shè)計(jì)步驟;以及, 寄存器堆計(jì)算的矩陣化設(shè)計(jì)步驟。所述寄存器堆結(jié)構(gòu)的矩陣化設(shè)計(jì)步驟是指,微處理器寄存器堆中的每個(gè)寄 存器(假設(shè)共n個(gè))根據(jù)處理器數(shù)據(jù)通路的寬度劃分成m個(gè)等長(zhǎng)的子寄存器,并 為每個(gè)所述子寄存器用一個(gè)唯一的名字命名,形成nXm矩陣式寄存器堆結(jié)構(gòu)。所述寄存器訪問的矩陣化設(shè)計(jì)步驟是指,是指在不增加原有的寄存器數(shù)量 的情況下,只是在邏輯上將原有的每個(gè)寄存器劃分成等長(zhǎng)的子寄存器,并使每 個(gè)子寄存器都有自己相應(yīng)的名字,根據(jù)所述每個(gè)寄存器的相應(yīng)名稱進(jìn)行寄存器 堆的數(shù)據(jù)訪問。其中,所述寄存器堆的數(shù)據(jù)訪問步驟進(jìn)一步包括可以根據(jù)數(shù) 據(jù)通路的要求,來規(guī)定可以同時(shí)訪問的目的和源子寄存器的數(shù)目;可以通過增 加新的指令來訪問矩陣化的寄存器堆。所述寄存器計(jì)算的矩陣化設(shè)計(jì)步驟是指,可以通過增加新的指令以新的寄存器名字進(jìn)行計(jì)算;通過增加新的指令,同時(shí)對(duì)多個(gè)子寄存器進(jìn)行讀、寫及各 種邏輯運(yùn)算。本發(fā)明的有益效果本發(fā)明通過將寄存器堆按照矩陣化方式設(shè)計(jì),在大大提 高寄存器的利用率的同時(shí),還可以充分利用現(xiàn)有的數(shù)據(jù)通路,并與現(xiàn)有的寄存 器訪問模式兼容,因?yàn)楝F(xiàn)有的寄存器只是矩陣化寄存器的一部分,現(xiàn)有軟件不 需要做任何修改,就可以在新的處理器上運(yùn)行。根據(jù)本發(fā)明,在不增加寄存器 數(shù)量的基礎(chǔ)上,提高對(duì)寄存器堆訪問的靈活性和高效性。
圖1是根據(jù)本發(fā)明所設(shè)計(jì)的寄存器矩陣陣列示意圖; 圖2是根據(jù)本發(fā)明的普通的寄存器堆示意圖;圖3是根據(jù)本發(fā)明進(jìn)行矩陣化設(shè)計(jì)的寄存器堆的示意圖,每個(gè)寄存器分成4 個(gè)子寄存器的例子。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說明。
具體實(shí)施方式
實(shí)施例l如圖3所示,提供了一種微處理器寄存器堆的矩陣化設(shè)計(jì)及訪問方 法。它將圖2所示的微處理器寄存器堆中的每個(gè)寄存器(假設(shè)共n個(gè))劃分成m個(gè) 等長(zhǎng)的子寄存器,圖中m取值為4,每個(gè)子寄存器都有自己的名字,形成nXm(此 實(shí)施例中m二4)矩陣式寄存器堆結(jié)構(gòu)。實(shí)施例2引入新的指令,同時(shí)對(duì)多個(gè)子寄存器進(jìn)行讀、寫及各種邏輯運(yùn)算。 如圖1所示,舉例說明如何將4個(gè)32位寄存器進(jìn)行矩陣化設(shè)在32位處理器中,寄存器堆包括4個(gè)32位的寄存器。可以將每個(gè)寄存 器分為8比特一組,每8個(gè)比特的部分寄存器按照矩陣的方式進(jìn)行命名,可從 中任意選取4個(gè)進(jìn)行訪問,圖1就是4個(gè)寄存器矩陣化后的示意圖,稱為寄存 器矩陣。如果想將R0.3, R1.2, R2.1, R3.0的內(nèi)容復(fù)制到RO.O, Rl.l, R2.2, R3.3,則新指令可以寫成如下形式move $R0.0—RU—R2.2—R3.3 $R0.3—R1.2—R2.1—R3.0這種想法也可以很容易的推廣到其它指令上,例如add指令 add $R2. 0—R3. 1—R0. 2_R1. 3 $R0. 0—Rl. 1_R2. 2_R3. 3 $R0, 3—Rl. 2—R2. 1_R3. 0 實(shí)施例3在物理實(shí)現(xiàn)方面,目前一般處理器釆用多端口寄存器堆,每增加 一些端口要付出較大代價(jià)。例如實(shí)施例2所建議的指令需要同時(shí)訪問可能多達(dá)12 個(gè)寄存器(8個(gè)源/4個(gè)目標(biāo)),所以可以對(duì)該指令進(jìn)行流水線特殊處理以提高性 能。實(shí)施例4寄存器堆矩陣化設(shè)計(jì)與訪問通常要求更多的位數(shù)來進(jìn)行編碼,變 長(zhǎng)指令系統(tǒng)的計(jì)算機(jī)可以直接利用,定長(zhǎng)指令系統(tǒng)的計(jì)算機(jī)可以通過超長(zhǎng)指令 字、指令拼接擴(kuò)展等方式進(jìn)行利用。
權(quán)利要求
1.一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其特征在于包括寄存器堆結(jié)構(gòu)的矩陣化設(shè)計(jì)步驟;寄存器堆訪問的矩陣化設(shè)計(jì)步驟;寄存器堆計(jì)算的矩陣化設(shè)計(jì)步驟。
2. 根據(jù)權(quán)利要求l所述的一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其特 征還在于所述寄存器堆結(jié)構(gòu)的矩陣化設(shè)計(jì)步驟是指,微處理器寄存器堆中的 每個(gè)寄存器(假設(shè)共n個(gè))根據(jù)處理器數(shù)據(jù)通路的寬度劃分成m個(gè)等長(zhǎng)的子寄存 器,并為每個(gè)所述子寄存器用一個(gè)唯一的名字命名,形成nXm矩陣式寄存器堆 結(jié)構(gòu)。
3. 根據(jù)權(quán)利要求l所述的一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其特 征還在于所述寄存器訪問的矩陣化設(shè)計(jì)步驟是指,在不增加原有的寄存器數(shù) 量的情況下,只是在邏輯上將原有的每個(gè)寄存器劃分成等長(zhǎng)的子寄存器,并使 每個(gè)子寄存器都有自己相應(yīng)的名字,根據(jù)所述每個(gè)寄存器的相應(yīng)名稱進(jìn)行寄存 器堆的數(shù)據(jù)訪問。
4. 根據(jù)權(quán)利要求3所述的一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其特 征還在于,所述寄存器堆的數(shù)據(jù)訪問步驟進(jìn)一步包括可以根據(jù)數(shù)據(jù)通路的要 求,來規(guī)定可以同時(shí)訪問的目的和源子寄存器的數(shù)目;可以通過增加新的指令 來訪問矩陣化的寄存器堆。
5. 根據(jù)權(quán)利要求l所述的一種微處理器寄存器堆的設(shè)計(jì)和訪問方法,其特 征還在于所述寄存器計(jì)算的矩陣化設(shè)計(jì)步驟是指,可以通過增加新的指令以 新的寄存器名字進(jìn)行計(jì)算;通過增加新的指令,同時(shí)對(duì)多個(gè)子寄存器進(jìn)行讀、 寫及各種邏輯運(yùn)算。
全文摘要
本發(fā)明涉及一種微處理器中寄存器堆的設(shè)計(jì)和訪問方法。該方法包括假設(shè)原有的寄存器堆中共有N個(gè)寄存器組成,將這N個(gè)寄存器中的每個(gè)寄存器劃分成等長(zhǎng)的M個(gè)子寄存器,則這N個(gè)寄存器形成一個(gè)N*M個(gè)子寄存器矩陣,該子寄存器矩陣中的每個(gè)子寄存器都有自己相應(yīng)的子寄存器名,通過新增指令來訪問這個(gè)矩陣中的任意M個(gè)子寄存器。利用本發(fā)明的設(shè)計(jì)方法可以在不增加現(xiàn)有寄存器數(shù)量的基礎(chǔ)上,通過邏輯上的擴(kuò)展,提高寄存器堆的利用率。該設(shè)計(jì)及訪問方法能夠兼容現(xiàn)有的寄存器堆的數(shù)據(jù)通路和訪問方式。
文檔編號(hào)G06F9/30GK101324837SQ20081011692
公開日2008年12月17日 申請(qǐng)日期2008年7月21日 優(yōu)先權(quán)日2008年7月21日
發(fā)明者勇 劉, 張吉豫, 謝勁松, 鐘 陳 申請(qǐng)人:北京大學(xué)