專利名稱:處理單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)方面涉及處理單元。
背景技術(shù):
在處理浮點(diǎn)運(yùn)算的數(shù)值計(jì)算程序中,增加處理單元內(nèi)部的寄存器的 數(shù)量使得能夠通過編譯器實(shí)現(xiàn)諸如循環(huán)展開和軟件流水等的優(yōu)化,從而 能夠改善性能。
另一方面,在例如RISC指令集架構(gòu)或者SPARC架構(gòu)的處理單元中, 例如設(shè)置了將指令長(zhǎng)度固定為32位的限制,并且還以單個(gè)指令指示單個(gè) 處理,使得一個(gè)指令所包含的信息受限。
鑒于這樣的限制,已經(jīng)提出了各種新指令和增加寄存器數(shù)量的建議。 根據(jù)專利文獻(xiàn)1和專利文獻(xiàn)2,指定寄存器的寄存器指定信息分為兩 部分。之后,將該兩部分布置在分開的指令碼的基礎(chǔ)單元上,并且使一 個(gè)指令碼可被省略。如果省略了可省略的指令碼,則通過隱含地假設(shè)預(yù) 定寄存器指定信息來進(jìn)行寄存器選擇操作。
根據(jù)專利文獻(xiàn)3和專利文獻(xiàn)4,通過合并存儲(chǔ)器與寄存器之間的傳送 指令和寄存器之間的操作指令的多個(gè)指令代碼,使得在保持與現(xiàn)有CPU 的兼容性的同時(shí),能夠指示存儲(chǔ)器中的數(shù)據(jù)操作。
另外,根據(jù)專利文獻(xiàn)5和專利文獻(xiàn)6,用戶能夠增加命令,使得能夠 容易地重新設(shè)計(jì)處理器。
專利文獻(xiàn)1日本特開2001-2022專利文獻(xiàn)2日本特開2006-3135專利文獻(xiàn)3日本特開2005-35310專利文獻(xiàn)4日本特開2006-2849專利文獻(xiàn)5日本特開2003-518280專利文獻(xiàn)6日本特開2007-250010
假設(shè)指令具有32位的操作碼長(zhǎng)度。對(duì)于示出正執(zhí)行處理的指令的邏 輯地址和將要執(zhí)行的下一指令的邏輯地址NPC (下一程序計(jì)數(shù)器)的PC (程序計(jì)數(shù)器)來說,只要PC所指向的指令不是分支指令或陷阱(trap) 指令,就指定了諸如NPC-PC+4的邏輯規(guī)范。因此,如果將一個(gè)指令的 長(zhǎng)度擴(kuò)展到64位,則無法操作現(xiàn)有軟件。
鑒于這種限制,在浮點(diǎn)乘積之和運(yùn)算中,必須要指定總共四個(gè)寄存 器,其中三個(gè)源寄存器和一個(gè)目標(biāo)寄存器,當(dāng)指定了 8位寄存器地址時(shí), 將需要4X8位=32位。這意味著將32位指令中的32位用于指定寄存器, 因而根本不能夠保存乘積之和運(yùn)算的指令類型的操作碼的信息。因此, 實(shí)踐中不能定義具有8位寄存器地址的32位指令。
作為在32位長(zhǎng)度的限制下的操作多個(gè)寄存器的常規(guī)方式,已知一種 釆用了寄存器窗口系統(tǒng)的指令集架構(gòu)。
以SPARC架構(gòu)為例,由單獨(dú)的指令來設(shè)定被稱為CWP (當(dāng)前窗口 指針)的指針,并且后續(xù)指令引用CWP所指向的窗口中的寄存器,例如, 窗口中能夠由一個(gè)操作碼指示的32個(gè)5位寄存器。
之后,將一個(gè)寄存器窗口分配給包含了多個(gè)指令的一個(gè)子例程。當(dāng) 引用或更新其它窗口時(shí),改變CWP并隨后執(zhí)行指令。
在該系統(tǒng)中, 一個(gè)指令僅能夠進(jìn)行32個(gè)寄存器中的處理。因此,不 能進(jìn)行同時(shí)使用32個(gè)以上的寄存器的處理,并且不能實(shí)現(xiàn)通過編譯器的 諸如軟件流水和循環(huán)展開等的優(yōu)化,因而不能夠用于性能的改善。
通過編譯器的優(yōu)化,在性能改善后能夠?qū)崿F(xiàn)同時(shí)利用例如100或200 個(gè)寄存器的任選寄存器數(shù)據(jù)輸入的一條處理。也就是說,由于在常規(guī)的 RISC指令集架構(gòu)中的操作碼長(zhǎng)度的限制,在一條處理中操作的寄存器的 數(shù)量不能超過特定數(shù)量,因此不能期望浮點(diǎn)程序的性能改善,這已經(jīng)成 為了一個(gè)主要問題。
通過一個(gè)指令來執(zhí)行多個(gè)處理的被稱為SIMD (單指令多數(shù)據(jù))類型 的指令作為浮點(diǎn)指令是有效的。
然而,如果在處理單元中重新增添加法、乘法、乘積之和運(yùn)算、除法、以及平方根運(yùn)算,則必須分配與附加指令一樣多的指令操作碼。為 此,會(huì)分配許多對(duì)于現(xiàn)有加法、乘法、以及乘積之和運(yùn)算來說沒有用處
的空操作碼。因此,在其中未初始地假設(shè)SIMD指令而是分配操作碼的 指令集中,可能沒有空字段,并且即便有空字段,也會(huì)將SIMD指令分 配給碰巧為空的操作碼,因此,很難按照良序方式將SIMD指令邏輯地 分配給操作碼。
近年來的高性能處理器在處理器芯片中或靠近處理器的地方具有高
速緩沖存儲(chǔ)器。這是因?yàn)榇鎯?chǔ)器的處理速度與處理器的處理速度之間的 差異己變得非常大,并且存儲(chǔ)器中的數(shù)據(jù)可被控制為寄存在高速緩沖存 儲(chǔ)器中,從而能夠在高速緩沖存儲(chǔ)器上進(jìn)行針對(duì)讀和寫的高速存取。
高速緩沖存儲(chǔ)器具有組相聯(lián)結(jié)構(gòu)并且高速緩存的寄存/釋放通常按照 LRU (最近最少使用)來控制,因此,可通過硬件來任意地從高速緩存 中釋放寄存的數(shù)據(jù)。在此情況下,當(dāng)寄存了將不會(huì)重新使用的數(shù)據(jù)時(shí), 即使根據(jù)寄存器的情況存在將不會(huì)重新使用的數(shù)據(jù)時(shí),也會(huì)釋放可能重 新使用的數(shù)據(jù),因此造成了性能下降。
關(guān)于上面描述的由SIMD指令進(jìn)行的通過一個(gè)指令來操作多條數(shù)據(jù) 的處理,例如,通常通過使數(shù)據(jù)寬度加倍(即,使一個(gè)寄存器的位數(shù)加 倍,成為128位)來實(shí)現(xiàn)通過SIMD指令對(duì)兩條雙倍精度浮點(diǎn)數(shù)據(jù)進(jìn)行 操作的處理。然而,并不是所有的程序都能夠執(zhí)行SIMD指令,而且在 這種情況下,浪費(fèi)了擴(kuò)展的數(shù)據(jù)寬度的資源。此外,不能分開地操作128 位中的前半部分?jǐn)?shù)據(jù)和后半部分?jǐn)?shù)據(jù),由此給軟件程序附加了限制。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元及其擴(kuò)展指令的方法, 該處理單元通過定義新的擴(kuò)展專用指令,在即使操作代碼具有固定長(zhǎng)度 的情況下,也能夠擴(kuò)展指令。'
另外,根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元及其指令的擴(kuò) 展方法,該處理單元能夠通過將現(xiàn)有指令與一個(gè)擴(kuò)展指令合并,并且從 擴(kuò)展寄存器選擇一個(gè)操作的輸入數(shù)據(jù)來進(jìn)行處理。另外,根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元及其指令的擴(kuò) 展方法,該處理單元通過定義新增的擴(kuò)展專用指令并且將該新指令與常 規(guī)指令集中定義的加法、乘法、乘積之和運(yùn)算等進(jìn)行合并從而能夠定義
諸如加法、乘法、和/或乘積之和運(yùn)算的SIMD指令處理的指令。
另外,根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元,該處理單元 在通過加載指令、存儲(chǔ)指令以及預(yù)取指令等以高速緩存來寄存數(shù)據(jù)時(shí),
能夠針對(duì)每個(gè)指令來指示將進(jìn)行寄存的高速緩存路組(cache way)的屬 性,例如,來自軟件的路組號(hào)碼等。
另外,根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元及其指令的擴(kuò) 展方法,該處理單元在不使用SIMD指令的程序中能夠高效地將所有寄 存器作為不同的地址來使用,并且即使在使用SIMD指令的程序中也能 夠在寄存器中獨(dú)立地操作前半部分?jǐn)?shù)據(jù)和后半部分?jǐn)?shù)據(jù),從而提高了程 序設(shè)計(jì)的實(shí)用性。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種處理單元,所述處理單元具有 擴(kuò)展寄存器,能夠針對(duì)該擴(kuò)展寄存器設(shè)定指示指令的擴(kuò)展的指令擴(kuò)展信 息;和操作單元,當(dāng)向該擴(kuò)展寄存器設(shè)定了指令擴(kuò)展信息時(shí),所述操作 單元通過基于指令擴(kuò)展信息對(duì)用于將指令擴(kuò)展信息寫入擴(kuò)展寄存器的第 一個(gè)指令之后的后續(xù)指令進(jìn)行擴(kuò)展,來執(zhí)行該后續(xù)指令。
本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中被部分地闡述,并且可 部分地通過參考構(gòu)成本說明的一部分的附圖而從所述說明中顯而易見, 或可通過本發(fā)明的實(shí)踐而習(xí)得,在所述附圖中通篇采用相同的參考標(biāo)記 來指示相同的部分。本發(fā)明的各方面和優(yōu)點(diǎn)將通過所附權(quán)利要求中具體 指出的部件和組合來實(shí)現(xiàn)并獲得。
應(yīng)當(dāng)理解,上述一般描述和下面的詳細(xì)描述僅是示例性和說明性的, 并且并非對(duì)所要求的本發(fā)明的限制。
圖1是示出了本發(fā)明的實(shí)施方式的處理單元的圖2是示出了所述處理單元的浮點(diǎn)寄存器的結(jié)構(gòu)的圖;圖3是示出了所述處理單元的定點(diǎn)寄存器的結(jié)構(gòu)的圖4是示出了 XAR寄存器的結(jié)構(gòu)的圖5是例示了通過XAR寄存器進(jìn)行的指令擴(kuò)展的圖6是示出了其中在向該XAR寄存器設(shè)置了數(shù)據(jù)后,執(zhí)行雙倍精度 浮點(diǎn)加載指令作為下 一個(gè)指令的情況的圖7是示出了 SXAR1指令字段的圖8是示出了 SXAR2指令字段的圖9是例示了利用SXAR2指令的指令生成的圖IO是例示了向使用擴(kuò)展指令的模式切換的圖11是示出了其中通過本實(shí)施方式的處理單元執(zhí)行與圖10相同的 處理的情況的圖12是例示了當(dāng)執(zhí)行SXAR2指令時(shí)的操作的圖13是執(zhí)行非SIMD指令和SIMD指令的計(jì)算單元的框圖14是示出了TXAR的結(jié)構(gòu)的圖15是示出當(dāng)出現(xiàn)陷阱時(shí)堆棧TXAR與XAR寄存器之間的關(guān)系的
圖16是例示了在執(zhí)行由SXAR2指令所擴(kuò)展的指令的過程中出現(xiàn)陷 阱時(shí)XAR寄存器和堆棧TXAR的活動(dòng)的圖; 圖17是示出了擴(kuò)展異常陷阱處理的圖; 圖18是示出了XASR寄存器的結(jié)構(gòu)的圖19是示出了當(dāng)通過SXAR指令執(zhí)行指令擴(kuò)展時(shí)的指令擴(kuò)展的定時(shí) 的圖20是示出了當(dāng)通過Write-XAR指令執(zhí)行指令擴(kuò)展時(shí)的指令擴(kuò)展的 定時(shí)的圖21是示出了在軟件模擬中未定義的指令異常例程的操作的流程
圖22是示出了一般調(diào)試程序的處理的圖;以及
圖23是示出了針對(duì)該處理單元所擴(kuò)展的指令的調(diào)試程序處理的圖。
具體實(shí)施例方式
下面將參照附圖對(duì)本發(fā)明的實(shí)施方式進(jìn)行描述。
下面所描述的本實(shí)施方式的處理單元是基于JPS1 (SPARC聯(lián)合編程 規(guī)范)的示例,JPS1是基于SPARC架構(gòu)的邏輯規(guī)范。JPS1具有32個(gè)雙 倍精度64位浮點(diǎn)寄存器。JPS1還在寄存器窗口系統(tǒng)中一共具有32個(gè)定 點(diǎn)寄存器,將由CWP切換的8個(gè)輸入寄存器、8個(gè)輸出寄存器、和8個(gè) 局部寄存器、以及獨(dú)立于CWP的8個(gè)全局寄存器。
順便提及,本發(fā)明的處理單元不限于SPARC架構(gòu)。例如,本發(fā)明還 可應(yīng)用于其中指令長(zhǎng)度固定的RISC架構(gòu)。
圖1是示出了本實(shí)施方式的處理單元的圖。處理單元100被配置有 作為用于指令擴(kuò)展的專用寄存器的擴(kuò)展的運(yùn)算寄存器1 。此后將該擴(kuò)展的 運(yùn)算寄存器稱為"XAR寄存器"。指令擴(kuò)展信息存儲(chǔ)在XAR寄存器1中。
根據(jù)存儲(chǔ)在XAR寄存器1中的內(nèi)容,處理器100對(duì)在用于將數(shù)據(jù)存 儲(chǔ)在XAR寄存器1中的指令之后將要執(zhí)行的現(xiàn)有指令進(jìn)行擴(kuò)展。當(dāng)對(duì)現(xiàn) 有指令進(jìn)行擴(kuò)展時(shí),能夠使用除了上述JPS1的寄存器以外的擴(kuò)展寄存器, 并且能夠執(zhí)行SIMD指令。
根據(jù)本實(shí)施方式的方法,指令的長(zhǎng)度是固定的,在JPS1的情況下是 32位,因此能夠不做任何改變地使用現(xiàn)有軟件。
此外,僅通過合并用于將信息寫入XAR寄存器1的指令和現(xiàn)有指令 就能夠擴(kuò)展所述現(xiàn)有指令。因此,幾乎不存在對(duì)于指令操作代碼的限制。
D一XAR寄存器2是在執(zhí)行重寫XAR寄存器1的內(nèi)容的SXAR指令 (SXAR:組XAR)時(shí),用于臨時(shí)存儲(chǔ)要寫入XAR寄存器1中的值的臨 時(shí)寄存器。當(dāng)通過指令解碼器4對(duì)SXAR指令之后的指令進(jìn)行解碼時(shí), 指令解碼器4引用D一XAR寄存器2作為XAR寄存器的內(nèi)容。因此,能 夠幾乎同時(shí)對(duì)SXAR指令和SXAR指令之后的現(xiàn)有指令進(jìn)行解碼。當(dāng)寄 存處理失敗或通過Write-XAR指令更新了 XAR寄存器1的時(shí)候,將存儲(chǔ) 在XAR寄存器1中的數(shù)據(jù)寫入D一XAR寄存器2。稍后將詳細(xì)描述SXAR 指令和Write-XAR指令。
XAR更新緩沖器3是臨時(shí)存儲(chǔ)要寫入XAR寄存器1的數(shù)據(jù)的緩沖器。指令解碼器4從指令高速緩存7讀取指令代碼以對(duì)該指令代碼進(jìn)行 解碼。執(zhí)行操作部5基于指令解碼器4的解碼結(jié)果來執(zhí)行指令。寄存器6 是執(zhí)行操作部5從中讀取數(shù)據(jù)或向其寫入數(shù)據(jù)的一組寄存器。稍后將詳 細(xì)描述寄存器6。指令高速緩存7是對(duì)來自二級(jí)高速緩存的指令代碼進(jìn)行 高速緩存的一級(jí)高速緩存存儲(chǔ)器。數(shù)據(jù)高速緩存8是對(duì)來自二級(jí)高速緩 存的數(shù)據(jù)代碼進(jìn)行高速緩存的一級(jí)高速緩存存儲(chǔ)器。二級(jí)高速緩存9是 對(duì)來自存儲(chǔ)器的數(shù)據(jù)進(jìn)行高速緩存的二級(jí)高速緩存存儲(chǔ)器。 接下來,將對(duì)寄存器6的結(jié)構(gòu)進(jìn)行描述。
圖2示出了本實(shí)施方式的處理單元100的浮點(diǎn)寄存器的結(jié)構(gòu)。當(dāng)JPS1 具有從。/ofD到Q/。f62范圍的32個(gè)浮點(diǎn)寄存器時(shí),將處理單元100中存儲(chǔ) 64位長(zhǎng)度的數(shù)據(jù)的浮點(diǎn)寄存器擴(kuò)展為從。/。fD到。/。f510范圍的256個(gè)寄存 器。在圖2中,斜向陰影部分是浮點(diǎn)寄存器的擴(kuò)展部分。如果指令不是 SIMD指令,則能夠在圖2中的所有256個(gè)寄存器中執(zhí)行操作。
由于JPS1采用了如下規(guī)則,即,將僅利用偶數(shù)來指定雙倍精度浮點(diǎn) 寄存器的地址,擴(kuò)展寄存器也遵守該規(guī)則,并且僅使用從0到510的偶 數(shù)來指定寄存器地址。此外,由于僅使用偶數(shù)來指定雙倍精度浮點(diǎn)寄存 器的寄存器地址,因此寄存器地址的最低位通常是"0"。因此,能夠以8 位擴(kuò)展地址來指定0至510。順便提及,僅在XAR_VAL=1時(shí)才能夠訪問 圖2中的斜向陰影的擴(kuò)展寄存器。
圖3示出了本實(shí)施方式的處理單元100的定點(diǎn)寄存器的結(jié)構(gòu)。處理 單元100具有一共32個(gè)64位長(zhǎng)度數(shù)據(jù)的定點(diǎn)寄存器,8個(gè)全局寄存器以 及24個(gè)基于CWP的寄存器,其與JPS1的常規(guī)寄存器相對(duì)應(yīng)。當(dāng)切換窗 口時(shí),這些寄存器從CWP切換到CWP+1,或切換到CWP-1。此外,將 獨(dú)立于CWP的32個(gè)XG (擴(kuò)展全局,extended Global)寄存器增加到處 理單元100的定點(diǎn)寄存器中,從而將寄存器擴(kuò)展到總共64個(gè)。在圖3中, 斜向陰影部分是定點(diǎn)寄存器的擴(kuò)展部分。增加的寄存器不釆用窗口系統(tǒng)。
為了使用圖2和圖3中的擴(kuò)展部分的寄存器,當(dāng)XAR寄存器的 F一VAL標(biāo)志位或S—VAL標(biāo)志位被設(shè)定為數(shù)值"1"時(shí),處理單元100執(zhí) 行由JPS1所定義的諸如雙倍精度浮點(diǎn)乘積之和運(yùn)算FMADD、定點(diǎn)加法ADD、或雙倍精度浮點(diǎn)加載LDDF等的現(xiàn)有指令。稍后將對(duì)F—VAL標(biāo)志 位=1和S一VAL標(biāo)志位=1進(jìn)行詳細(xì)描述。
接下來,將對(duì)XAR寄存器的結(jié)構(gòu)進(jìn)行描述。圖4是示出了XAR寄 存器的結(jié)構(gòu)的圖。在圖4中,XAR寄存器大致分為從屬指令F (第一) 部和從屬指令S (第二)部。F部具有F—VAL、 F—SIMD、 F—RD、 F—RS1、 F一RS2、以及F—RS3區(qū)域。類似的是,S部具有S—VAL、 S—SIMD、 S一RD、 S一RS1、 S—RS2、以及S—RS3區(qū)域。F—VAL和S—VAL分別是1位的區(qū)域, 并且顯示了指示出后續(xù)信息是否是有效的信息,即表示是否"有效"。
當(dāng)F—VAL=1時(shí),以F部的指令擴(kuò)展信息(F—SIMD、 F—RD、 F—RS1、 F—RS2、以及F—RS3)擴(kuò)展緊隨存儲(chǔ)在XAR寄存器中的指令之后的一個(gè) 指令。當(dāng)F—VAL=0且S_VAL=1時(shí),以S部的指令擴(kuò)展信息(S—SIMD、 S一RD、 S—RS1、 S_RS2、以及S一RS3)擴(kuò)展緊隨在XAR指令之后的一個(gè) 指令。當(dāng)F—VAL=1且S_VAL=1時(shí),擴(kuò)展緊隨在XAR指令之后的兩個(gè)連 續(xù)指令。由在F部中指示的指令擴(kuò)展信息擴(kuò)展緊隨在XAR指令之后的第 一個(gè)指令,而由在S部中指示的指令擴(kuò)展信息擴(kuò)展緊隨在第一個(gè)指令之 后的第二個(gè)指令。
之后,當(dāng)完成了將擴(kuò)展指令寫入處理單元100的寄存器6的操作時(shí), 即表示"提交"時(shí),對(duì)與該擴(kuò)展指令相對(duì)應(yīng)的指令擴(kuò)展信息及其有效標(biāo) 志位進(jìn)行重置。當(dāng)將F部的指令擴(kuò)展信息寫入寄存器時(shí),F(xiàn)—VAL被設(shè)為 "1 ",而當(dāng)利用F部的指令擴(kuò)展信息擴(kuò)展了指令時(shí),F(xiàn)—VAL被重置為"0"。 類似的是,當(dāng)將S部的指令擴(kuò)展信息寫入寄存器時(shí),S—VAL被設(shè)為"1", 而當(dāng)利用S部的指令擴(kuò)展信息擴(kuò)展了指令時(shí),S一VAL被重置為"0"。
在接下來的描述中,將其中存儲(chǔ)了F部的指令擴(kuò)展信息(F一SIMD、 F—RD、 F—RS1、 F_RS2、以及F—RS3)的區(qū)域稱為F區(qū)域,而將其中存 儲(chǔ)了 S部的指令擴(kuò)展信息(S—SIMD、S—RD、S—RS1、S—RS2、以及S—RS3)) 的區(qū)域稱為S區(qū)域。
F—SIMD和S一SIMD是表示擴(kuò)展信息是否是SIMD指令的1位區(qū)域。 當(dāng)將數(shù)值"1"設(shè)置給F一SIMD或S一SIMD時(shí),以F部的指令擴(kuò)展信息擴(kuò) 展的指令或以S部的指令擴(kuò)展信息擴(kuò)展的指令變?yōu)镾IMD指令。稍后將描述根據(jù)本實(shí)施方式的處理單元的SIMD指令。
F—RD和S一RD是存儲(chǔ)用于指定將被擴(kuò)展的指令的目標(biāo)寄存器的地址 的擴(kuò)展部分的3個(gè)位的區(qū)域。F—RS1至F—RS3和S—RS1至S—RS3是地址 擴(kuò)展區(qū)域,其中每個(gè)區(qū)域都存儲(chǔ)有用于指定源寄存器的地址的擴(kuò)展部分 的3個(gè)位。
當(dāng)浮點(diǎn)寄存器的數(shù)量被擴(kuò)展到256個(gè)時(shí),這3個(gè)位變?yōu)槿狈ΜF(xiàn)有指 令的地址的高位3位。在指定定點(diǎn)寄存器時(shí),僅使用3個(gè)位中的最低1 位。之后,如果高位的2位在指定了定點(diǎn)寄存器后變?yōu)?1",則在執(zhí)行 擴(kuò)展的指令時(shí)引起表示由XAR引起的擴(kuò)展違規(guī)的新異常非法動(dòng)作陷阱。 這個(gè)新異常非法動(dòng)作陷阱還出現(xiàn)在將第三源寄存器指定用于加法指令或 乘法指令等時(shí)。
圖5例示了使用XAR寄存器的指令擴(kuò)展。圖5是浮點(diǎn)運(yùn)算的擴(kuò)展的 示例。在圖5中,示出了其中在通過SXAR指令等為XAR寄存器設(shè)定了 數(shù)據(jù)之后,將在JPS1中定義的雙倍精度浮點(diǎn)乘積之和運(yùn)算指令(FMADD)
作為下一個(gè)指令來執(zhí)行的示例。
如圖5中所示,必須在FMADD指令中指定三個(gè)源寄存器和一個(gè)目 標(biāo)寄存器。在FMADD指令中用于目標(biāo)寄存器指定的寄存器指定地址具 有[4: 0]的5位。利用通過將XAR寄存器中的地址擴(kuò)展區(qū)域的[7: 5]的3 位添加到所述5位而獲得的一共8位來指定源寄存器。由XAR寄存器擴(kuò) 展的FMADD指令能夠指定256個(gè)寄存器分別作為源寄存器和目標(biāo)寄存 器。
雖然需要在FMADD指令中指定三個(gè)源寄存器和一個(gè)目標(biāo)寄存器時(shí), 但依據(jù)指令的類型,可能不需要指定寄存器的數(shù)量。對(duì)于諸如加載指令、 存儲(chǔ)指令或預(yù)取指令等雙倍精度浮點(diǎn)加載指令的存儲(chǔ)器存取來說,不需 要指定三個(gè)源寄存器。在該情況下,該字段用于對(duì)在高速緩存對(duì)數(shù)據(jù)進(jìn) 行寄存時(shí)的高速緩存路組的屬性進(jìn)行指示的扇區(qū)號(hào)。
圖6示出了其中執(zhí)行雙倍精度浮點(diǎn)加載指令的示例。圖6示出了其 中在向XAR寄存器設(shè)定了數(shù)據(jù)之后,將在JPS1中定義的雙倍精度浮點(diǎn) 加載(LDDF)指令作為下一個(gè)指令來執(zhí)行的情況作為示例。
12如圖6中所示,LDDF指令僅要求指定兩個(gè)源寄存器和一個(gè)目標(biāo)寄存 器。因此,其中指定第三源寄存器的F—RS3的區(qū)域11為空。
在本實(shí)施方式中,XAR寄存器的空白區(qū)域11用于指示高速緩存扇區(qū) =1作為扇區(qū)號(hào),所述扇區(qū)號(hào)指示在高速緩存對(duì)數(shù)據(jù)進(jìn)行寄存時(shí)的高速緩 存路組的屬性。
接下來,將描述用于重寫XAR寄存器的值的SXAR指令。在根據(jù)本 實(shí)施方式的處理單元中,SXAR指令是用于更新XAR寄存器的指令之一, 并且其被定義為如下指令,其以直接形式具有指令操作代碼中的更新數(shù) 據(jù)。因此,當(dāng)指令被解碼時(shí),硬件能夠推測(cè)性地確定將寫入XAR中的內(nèi) 容,因此能夠容易地執(zhí)行對(duì)下一個(gè)要解碼的指令的擴(kuò)展。
在SXAR指令中,要寫入圖1中XAR寄存器1中的信息是經(jīng)由 D一XAR寄存器2和XAR更新緩沖3寫入XAR寄存器1中的。通過參考 D—XAR寄存器2,SXAR指令之后的指令能夠知道XAR寄存器1的內(nèi)容, 因此,指令解碼器4能夠幾乎同時(shí)地對(duì)SXAR指令和SXAR指令之后的 指令進(jìn)行解碼。
除了 SXAR指令之外,能夠?qū)⑿畔⒅苯訉懭隭AR寄存器1中而無需 經(jīng)過D—XAR寄存器2或XAR更新緩沖3的Write-XAR指令可用作重寫 XAR寄存器的指令。對(duì)Write-XAR指令的解碼直到數(shù)據(jù)被直接地寫入 XAR寄存器1才完成,并且對(duì)下一個(gè)將被擴(kuò)展的指令的解碼直到 Write-XAR指令完成才完成。稍后將詳細(xì)地描述Write-XAR指令。
將SXAR1和SXAR2這兩個(gè)指令定義為SXAR指令。圖7示出了 SXAR1指令字段。SXAR1指令是擴(kuò)展SXAR1指令之后的單個(gè)指令的指 令。在圖7中,在SXAR1指令的情況下,在表示指令類型的OPCODE [4:0] 區(qū)域中設(shè)定指示SXAR指令的"OP[l:0;h0"和"OP2[3:0]=7"。同樣在 SXAR1指令的情況下,向存儲(chǔ)著顯示指令是SXAR1指令還是SXAR2指 令的信息的COMB區(qū)域設(shè)定指示SXAR1指令的"0"。另外,把要寫入 XAR寄存器的F部的指令擴(kuò)展信息中的信息設(shè)定到COMB區(qū)域之后的操 作數(shù)區(qū)域。在SXAR1指令中操作數(shù)區(qū)域之后的區(qū)域的值是不確定的。在 將被擴(kuò)展的指令是存儲(chǔ)器存取指令的情況下,表示第三源寄存器的區(qū)域F一RS3[7:5]變?yōu)楸硎局T如扇區(qū)號(hào)的用于高速緩存存儲(chǔ)器存取的附加信息。 當(dāng)執(zhí)行圖7中示出的SXAR1指令時(shí),將SXAR1指令的操作數(shù)的值 被設(shè)定到XAR寄存器的F區(qū)域并且以數(shù)值"1 "被設(shè)定給F—VAL。之后, 基于XAR寄存器的F區(qū)域的值來擴(kuò)展在SXAR1指令之后立即執(zhí)行的指 令。當(dāng)完成了在SXAR1指令之后立即執(zhí)行的指令時(shí),清空XAR寄存器 的F區(qū)域而且將F—VAL重置為"0"。
接下來,將描述SXAR2指令。SXAR2指令通過設(shè)定XAR寄存器的 值來擴(kuò)展SXAR2指令之后的兩個(gè)指令。圖8示出了 SXAR2指令的字段。 在圖8中,在SXAR2指令的情況下,與圖7所示出的SXAR1指令一樣, 在表示指令類型的OPCODE [4:0]區(qū)域中設(shè)定顯示SXAR指令的 "OP[l:0;h0"和"OP2[3:0]=7"。同樣,將指示SXAR2指令的值"l"設(shè) 定到表示指令是SXAR1指令還是SXAR2指令的COMB區(qū)域。COMB 區(qū)域之后的操作數(shù)區(qū)域包括從屬指令F部和從屬指令S部。在從屬指令F 部中設(shè)置將被寫入XAR寄存器的F區(qū)域的信息,在從屬指令S部中設(shè)置 將被寫入XAR寄存器的S區(qū)域的信息。在被擴(kuò)展的指令是存儲(chǔ)器存取指 令的情況下,過去用于表示第三源寄存器的區(qū)域F—RS3[7:5]和S—RS3[7:5]
變?yōu)楸硎居糜诟咚倬彺娲鎯?chǔ)器存取的附加信息。
當(dāng)執(zhí)行圖8中示出的SXAR2指令時(shí),為XAR寄存器的F區(qū)域和S 區(qū)域設(shè)置值并且將值"1"設(shè)定給F—VAL和S—VAL。接著,與SXAR1 指令一樣,基于XAR寄存器的F區(qū)域的值來擴(kuò)展在SXAR2指令之后執(zhí) 行的第一個(gè)指令。當(dāng)完成了第一個(gè)指令的執(zhí)行時(shí),清空XAR寄存器的F 區(qū)域而且將F一VAL重置為"0"。接著,基于XAR寄存器的S區(qū)域的值 來擴(kuò)展在第一個(gè)指令之后執(zhí)行的第二個(gè)指令。當(dāng)完成了第二個(gè)指令的執(zhí) 行時(shí),清空XAR寄存器的S區(qū)域而且將S一VAL重置為"0"。
如上所述,通過利用SXAR2指令,能夠擴(kuò)展緊隨SXAR2指令之后 的兩個(gè)指令。因此,當(dāng)擴(kuò)展指令連續(xù)時(shí),SXAR2指令能夠?qū)崿F(xiàn)比SXAR1 指令更具有代碼效率的編程。
圖9是例示了利用SXAR2指令的指令生成的圖。在圖9中,程序 21是未利用SXAR2指令而由代碼生成的。相對(duì)的是,從軟件角度講等效于程序21的程序22是利用SXAR2指令而由代碼生成的。
兩個(gè)程序的比較顯示了利用SXAR2指令生成的程序22因具有更少 數(shù)量的指令,而具有比程序21更高的代碼效率。因此,推薦編譯器使用 能夠減少指令的數(shù)量的程序22的代碼生成方式。
如上所述,在本實(shí)施方式的處理單元中,提供了一種XAR寄存器, 并且通過在XAR寄存器中存儲(chǔ)指令擴(kuò)展信息能夠?qū)χ噶钸M(jìn)行擴(kuò)展。
執(zhí)行這種指令擴(kuò)展的方法的示例是模式切換方法。在模式切換方法 中,定義將模式切換到擴(kuò)展指令執(zhí)行模式的寄存器,而且當(dāng)將執(zhí)行擴(kuò)展 指令時(shí),重寫模式切換寄存器以切換到擴(kuò)展指令執(zhí)行模式。
當(dāng)使用了這種模式切換方法時(shí),如果有規(guī)則地使用按照模式的指令 的擴(kuò)展操作,則該方法是高效的。然而,如果將擴(kuò)展指令和不擴(kuò)展指令 混雜在一起,則必須要重復(fù)地進(jìn)入擴(kuò)展指令執(zhí)行模式和從擴(kuò)展指令執(zhí)行 模式返回正常模式。因此,每一次切換模式,都要執(zhí)行重寫模式切換寄 存器的指令。
例如,當(dāng)切換到特別限制了 32位地址空間而不是64位空間的狀態(tài) 時(shí),已經(jīng)知道了諸如處理器狀態(tài)寄存器的由模式標(biāo)志位系統(tǒng)來指定地址 空間的邏輯規(guī)范。模式標(biāo)志位在執(zhí)行設(shè)定該模式標(biāo)志位的指令之后保留 其狀態(tài),直到執(zhí)行重置模式標(biāo)志位的指令。
在設(shè)定了 32位模式的情況下,以32位模式來描述整個(gè)程序。因此, 不需要針對(duì)每個(gè)指令頻繁地切換到64位空間,因而這種模式表指定是充 分的。
然而,當(dāng)在本實(shí)施方式的處理單元中使用擴(kuò)展寄存器地址或SIMD 指令時(shí),經(jīng)常將需要擴(kuò)展的指令和不需要擴(kuò)展的指令混在一起。因此, 如果執(zhí)行針對(duì)每個(gè)指令進(jìn)行充分切換的程序,則除了設(shè)定例如模式設(shè)置 的指令之外,還需要執(zhí)行重置模式的指令,從而進(jìn)一步增加了指令的數(shù) 量。因此,本實(shí)施方式的處理單元中,定義了擴(kuò)展信息,使得在將所述 擴(kuò)展信息設(shè)定到XAR寄存器后,可與執(zhí)行擴(kuò)展指令同步地重置所述擴(kuò)展 信息。這使得不需要插入用于重置指令擴(kuò)展的指令。
圖10是例示了向使用擴(kuò)展指令的模式切換的圖。圖10示出了其中執(zhí)行FAMDD指令作為擴(kuò)展指令,之后執(zhí)行LDDF指令作為不擴(kuò)展指令 的處理的情況。在圖10中,在執(zhí)行FMADD指令之前執(zhí)行模式切換寄存 器寫指令,并且在執(zhí)行LDDF指令之前執(zhí)行模式切換寄存器重置指令以 返回正常模式。
因此,在圖10的示例中, 一共需要四個(gè)指令來執(zhí)行擴(kuò)展的FMADD 指令和不擴(kuò)展的LDDF指令。相對(duì)照的是,在由本實(shí)施方式的處理單元 執(zhí)行的指令的擴(kuò)展方法中,當(dāng)執(zhí)行了擴(kuò)展指令時(shí),自動(dòng)地重置存儲(chǔ)在XAR 寄存器中的對(duì)應(yīng)信息。因此,即便把需要擴(kuò)展的指令和不需要被擴(kuò)展的 指令混在一起,也不需要重置XAR寄存器,由此相應(yīng)地提高了代碼效率。
圖11是示出了其中由本實(shí)施方式的處理單元來執(zhí)行圖10中的相同 處理的情況的圖。在圖11中,在作為擴(kuò)展指令的FMADD之前執(zhí)行SXAR1 指令以將用于執(zhí)行擴(kuò)展的信息寫入XAR寄存器。接著,當(dāng)執(zhí)行FMADD 指令作為擴(kuò)展指令時(shí),重置XAR寄存器中的用于指令擴(kuò)展的信息。因此, 由于在XAR寄存器中沒有用于指令擴(kuò)展的信息,所以在不擴(kuò)展指令的情 況下執(zhí)行要在FMADD指令之后執(zhí)行的LDDF指令。
因此,如果在處理單元中執(zhí)行需要擴(kuò)展的FMADD指令和不需要擴(kuò) 展的LDDF指令,僅需要三個(gè)指令。因此,在該情況下,能夠通過具有 比需要切換其模式的處理單元的程序具有更高代碼效率的程序來實(shí)現(xiàn)相 同的處理。
接下來,將例示執(zhí)行SXAR2指令時(shí)的操作詳情。圖12是例示了當(dāng) 執(zhí)行SXAR2指令時(shí)的操作的圖。圖12示出了其中通過擴(kuò)展FMADD指 令和隨后的LDDF指令來執(zhí)行這些指令的情況。在圖12示出的情況中, 將要執(zhí)行的指令是三個(gè)指令,即SXAR2指令、FMADD指令、以及LDDF 指令。
在執(zhí)行了 SXAR2指令之后,將用于指令擴(kuò)展的擴(kuò)展信息寫入了 XAR 寄存器的F區(qū)域和S區(qū)域。此外,以將值"1"設(shè)定給F—VAL和S—VAL。
接下來,通過引用XAR寄存器的F區(qū)域來執(zhí)行作為第一擴(kuò)展指令的 FMADD指令,作為擴(kuò)展的FMADD指令。之后,在執(zhí)行了 FMADD指 令后,重置XAR寄存器的F一VAL和F區(qū)域。接下來,通過引用XAR寄存器的S區(qū)域,來執(zhí)行作為FMADD指令 之后接著執(zhí)行的第二個(gè)擴(kuò)展指令的LDDF指令,作為擴(kuò)展的LDDF指令。 之后,在執(zhí)行了LDDF指令后,重置XAR寄存器的S—VAL和S區(qū)域。
因此,當(dāng)執(zhí)行SXAR2指令時(shí),在執(zhí)行第一個(gè)擴(kuò)展指令之后重置F區(qū) 域和F一VAL,并且接著執(zhí)行第二個(gè)擴(kuò)展指令。每次執(zhí)行了其中重置S區(qū) 域和F一VAL的兩個(gè)擴(kuò)展指令中的一個(gè)時(shí),重置XAR寄存器中的對(duì)應(yīng)區(qū) 域。
如上所述,由于每次完成各個(gè)指令時(shí)都重置XAR寄存器中的對(duì)應(yīng)區(qū) 域,所以通過SXAR2指令能夠擴(kuò)展兩個(gè)后續(xù)的指令,而且即便混合了需 要擴(kuò)展的指令和不需要擴(kuò)展的指令,也不會(huì)降低代碼效率。
此外,由于每次完成各個(gè)指令時(shí)都重置XAR寄存器中的對(duì)應(yīng)區(qū)域, 所以即便在第一個(gè)指令和第二個(gè)指令之間發(fā)生了稍后描述的中斷,也不 會(huì)出現(xiàn)問題。
接下來,將描述SIMD指令。在根據(jù)本實(shí)施方式的處理單元中,把 通過單個(gè)指令來進(jìn)行多個(gè)處理的SIMD指令定義為擴(kuò)展指令。在圖4中 示出的XAR寄存器的結(jié)構(gòu)中,F(xiàn)—SIMD位是表示是否將XAR指令之后 的第一個(gè)指令擴(kuò)展為SIMD指令的標(biāo)志位。如果設(shè)定F_SIMD=1,則將第 一個(gè)指令擴(kuò)展為SIMD指令。類似的是,S一SIMD位是表示是否將XAR 指令之后的第二個(gè)指令擴(kuò)展為SIMD指令的標(biāo)志位。如果設(shè)定 S—SIMD-1,則將XAR指令之后的第二個(gè)指令擴(kuò)展為SIMD指令。在SIMD 指令的情況下,如果指定一個(gè)浮點(diǎn)寄存器作為F區(qū)域或S區(qū)域中的源寄 存器或目標(biāo)寄存器,則指定了兩個(gè)浮點(diǎn)寄存器。
如圖12所示出的,擴(kuò)展的SIMD指令操作其寄存器地址間隔256的 一對(duì)兩個(gè)寄存器。當(dāng)指定以"0"來表示擴(kuò)展寄存器地址的最高位時(shí),執(zhí) 行SIMD處理的SIMD指令利用作為一組的最高位為"0"的浮點(diǎn)寄存器 和最高位為"1"的浮點(diǎn)寄存器來并行地處理兩條數(shù)據(jù)。
例如,如果執(zhí)行作為SIMD指令的faddd°/。fD、 %fl00、 °/。200,則與 %fD+%f!00=%f200的操作同步執(zhí)行。/。f256+。/。f356-。/。f456的操作。
因此,在根據(jù)本實(shí)施方式的處理單元中,能夠針對(duì)一個(gè)不是SIMD指令的擴(kuò)展指令將所有的浮點(diǎn)寄存器指定為不同的地址。此外,如果能
夠執(zhí)行SIMD處理,則通過將指令擴(kuò)展為SIMD指令能夠以雙倍的速度 來通過單個(gè)指令來實(shí)現(xiàn)數(shù)據(jù)處理。
由于通過保留表示XAR寄存器中的指令是否是SIMD指令的擴(kuò)展位 的F_SIMD標(biāo)志位和S—SIMD標(biāo)志位來擴(kuò)展SIMD指令,所以僅合并寫 入XAR寄存器的指令和現(xiàn)有指令就能夠擴(kuò)展SIMD指令,因而能夠?qū)?duì)
指令操作代碼的限制最小化。
圖13是執(zhí)行非SIMD指令和SIMD指令的計(jì)算單元的框圖。圖13A 示出了非SIMD指令的結(jié)構(gòu),而圖13B示出了 SIMD指令的結(jié)構(gòu)。當(dāng)由 圖13A中示出的非SIMD指令來執(zhí)行n/。f200+y。f300時(shí),使用單個(gè)加法單 元僅能夠執(zhí)行%£200寄存器和。/。f300寄存器中數(shù)據(jù)的相加。相對(duì)照的是, 當(dāng)由圖13B中示出的SIMD指令來執(zhí)行。/。fl00+。/。f200時(shí),除了。/。f100寄 存器和。/。f200寄存器中數(shù)據(jù)的相加之外,使用兩個(gè)加法單元同時(shí)執(zhí)行存 儲(chǔ)在%£356寄存器和。/。f456寄存器中的數(shù)據(jù)的相加,其中%£356寄存器和 %f456寄存器具有通過將256分別與。/。f100和。/。f200相加而獲得的地址, 即,。/ofl00和。/。f200的地址的最高位從"0"變?yōu)?1"。
當(dāng)SIMD指令能夠僅指定具有寄存器地址% )至%054的128個(gè)寄存 器時(shí),非SIMD指令能夠?qū)fD至Q/。f510的任意寄存器地址指定為源寄存 器或目標(biāo)寄存器。此外,即使在執(zhí)行SIMD指令后也能夠獨(dú)立地操作各 個(gè)寄存器。
接下來,將描述根據(jù)本實(shí)施方式的處理單元的中斷處理。在本實(shí)施 方式中,通過在分離的兩個(gè)組中執(zhí)行指令來擴(kuò)展指令。第一組是寫入XAR 寄存器的指令組,即,SXAR1指令、SXAR2指令、以及Write-XAR指 令等。第二組是擴(kuò)展的指令組。
諸如SXAR1指令、SXAR2指令、以及Write-XAR指令等的將擴(kuò)展 信息寫入XAR寄存器的指令和緊隨在這些指令之后的擴(kuò)展的指令是不同 的指令。因此,由外部中斷引起的陷阱可能出現(xiàn)在將擴(kuò)展信息設(shè)定到XAR 的時(shí)刻和執(zhí)行擴(kuò)展的指令的時(shí)刻之間。在這種情況下,當(dāng)從陷阱返回時(shí), 需要通過恢復(fù)陷阱出現(xiàn)之前的狀態(tài)來重啟處理。因此,根據(jù)本實(shí)施方式的處理單元被配置有專用堆棧TXAR,其在 進(jìn)入陷阱時(shí)用于臨時(shí)保存XAR寄存器中的信息。堆棧TXAR能夠被高速 訪問,從而能在進(jìn)入陷阱或從陷阱返回時(shí)高速地對(duì)XAR寄存器中的內(nèi)容 進(jìn)行讀和寫。
圖14是示出了堆棧TXAR的結(jié)構(gòu)的圖。與在SPARC架構(gòu)中定義的 其它陷阱堆棧相同,為各陷阱級(jí)設(shè)置了堆棧TXAR。堆棧TXAR的信息 旨在當(dāng)進(jìn)入陷阱時(shí)保留XAR寄存器的值,并且其如XAR寄存器那樣對(duì) 常規(guī)指令的擴(kuò)展沒有影響。
JPS1定義了多達(dá)五個(gè)陷阱級(jí)并且如圖14示出的那樣向各陷阱級(jí)設(shè)置 了 TXAR。在圖14中,TXAR1被構(gòu)成為用于在陷阱級(jí)=0的狀態(tài)中出現(xiàn) 陷阱時(shí)保存XAR寄存器的內(nèi)容的TXAR。類似的是,TXAR2被構(gòu)成為 用于在陷阱級(jí)-1的狀態(tài)中出現(xiàn)陷阱時(shí)保存XAR寄存器的內(nèi)容的 TXAR,……,并且TXAR5被構(gòu)成為用于在陷阱級(jí)4的狀態(tài)中出現(xiàn)陷阱 時(shí)保存XAR寄存器的內(nèi)容的TXAR。
當(dāng)出現(xiàn)陷阱時(shí),處理單元將XAR寄存器的內(nèi)容保存在與陷阱出現(xiàn)前 的陷阱級(jí)相對(duì)應(yīng)的堆棧TXAR中。同時(shí),處理單元清空XAR寄存器中的 數(shù)據(jù),因而在進(jìn)入陷阱前陷阱例程的指令將不會(huì)通過XAR寄存器中的擴(kuò) 展信息被擴(kuò)展。在陷阱例程結(jié)束后,從陷阱返回到原始處理時(shí),如果JPS1 的示例中的完成指令或重試指令將陷阱級(jí)降低了一個(gè)級(jí)別,則將值從與 陷阱級(jí)相對(duì)應(yīng)的堆棧TXAR拷貝到XAR寄存器。
圖15示出了當(dāng)出現(xiàn)陷阱時(shí)堆棧TXAR與XAR寄存器之間的關(guān)系。 圖15A示出了當(dāng)由陷阱指令引起陷阱時(shí),堆棧TXAR和XAR寄存器的 活動(dòng)。如果在陷阱出現(xiàn)前XAR寄存器的內(nèi)容是"X"并且在陷阱出現(xiàn)后 陷阱級(jí)由n上升到n+l ,則將XAR寄存器的內(nèi)容"X"寫入堆棧TXARn+l 并且將XAR寄存器清空為"0"。
圖15B示出了當(dāng)通過完成指令或重試指令從陷阱返回時(shí)的堆棧 TXAR和XAR寄存器的活動(dòng)。如果在從陷阱返回前XAR寄存器的內(nèi)容 是"Y"并且堆棧TXARn+l的內(nèi)容是"Z",并且在從陷阱返回之后,陷 阱級(jí)從n+l降到n,則將堆棧TXARn+l的內(nèi)容"Z"拷貝到XAR寄存
19器并且堆棧TXARn+l的內(nèi)容保持不變。
這樣的結(jié)構(gòu)確保了在出現(xiàn)陷阱和從陷阱返回時(shí)在處理單元中執(zhí)行正 確的處理。
定義了如下指令諸如將堆棧TXAR中的數(shù)據(jù)讀取到定點(diǎn)寄存器的 RD-TXAR指令,或從定點(diǎn)寄存器讀取源寄存器1和源寄存器2并且對(duì)源 寄存器1和源寄存器2進(jìn)行"異或"(xor:"異或")計(jì)算并將其結(jié)果寫入 TXAR的Write-TXAR指令。這些定義的指令用于當(dāng)前陷阱級(jí)的堆棧 TXAR。
圖16是例示了在執(zhí)行由SXAR2指令擴(kuò)展的指令的過程中出現(xiàn)陷阱 時(shí)的XAR寄存器和堆棧TXAR的活動(dòng)的圖。在圖16的示例中,示出了 在執(zhí)行擴(kuò)展指令B的過程中在程序中出現(xiàn)陷阱時(shí)的XAR寄存器和堆棧 TXAR的活動(dòng),其中陷阱級(jí)TL=n,且對(duì)SXAR2指令之后的指令"A" 和指令"B"進(jìn)行擴(kuò)展。首先,當(dāng)執(zhí)行SXAR2(A,B)的時(shí)候,指令擴(kuò)展信 息A被寫入XAR寄存器的F區(qū)域,并且指令擴(kuò)展信息B被寫入XAR寄 存器的S區(qū)域。
接下來,當(dāng)執(zhí)行了擴(kuò)展的指令"A"的時(shí)候,XAR寄存器的F一VAL 和F區(qū)域被清空為"0",并且存儲(chǔ)在S區(qū)域的指令擴(kuò)展信息"B"保持不 變。
同時(shí),堆桟TXAR存儲(chǔ)在初始狀態(tài)中寫入該堆棧的數(shù)據(jù)或在過去出 現(xiàn)陷阱時(shí)存儲(chǔ)在該堆棧中的數(shù)據(jù)。接下來,如果在擴(kuò)展的指令"B"的執(zhí) 行過程中出現(xiàn)了陷阱,則將存儲(chǔ)在XAR寄存器中的值保存在堆棧TXARn 中,并且清空XAR。因此,存儲(chǔ)在XAR寄存器中的值"0"和"b"被 寫入堆棧TXAR,且XAR寄存器的所有的值都為"0"。
在上述的狀態(tài)中進(jìn)行了陷阱例程處理。陷阱例程處理不受陷阱出現(xiàn) 前的指令擴(kuò)展信息的影響。此外,能夠?qū)?shù)據(jù)寫入XAR寄存器而且能夠 將數(shù)據(jù)寫入堆棧TXAR并從中讀出。
當(dāng)在陷阱例程處理完成后從陷阱返回時(shí),保存在堆桟TXAR中數(shù)據(jù) 被寫入XAR寄存器并且再次執(zhí)行擴(kuò)展的指令B。之后,將"0"值寫 入XAR寄存器的F區(qū)域且將指令擴(kuò)展信息"B"寫入XAR寄存器的S區(qū)域,因此,可不受陷阱影響再次執(zhí)行對(duì)擴(kuò)展的指令"B"的擴(kuò)展。
根據(jù)前面所述的內(nèi)容,根據(jù)本實(shí)施方式的處理單元能夠保證陷阱過
程中的處理和從陷阱返回時(shí)進(jìn)行的處理被正確地執(zhí)行。
在根據(jù)本實(shí)施方式的處理單元中的陷阱還包括在解碼了錯(cuò)誤的不可
定義的指令時(shí)出現(xiàn)的陷阱。
針對(duì)存儲(chǔ)在XAR寄存器中的擴(kuò)展信息,諸如寄存器擴(kuò)展的地址和
SIMD位,確定是否不能僅在將擴(kuò)展信息與緊隨該擴(kuò)展信息之后的擴(kuò)展的 指令進(jìn)行合并之后,定義與擴(kuò)展信息相對(duì)應(yīng)的處理。
例如,在本實(shí)施方式中,XAR寄存器中的各個(gè)寄存器擴(kuò)展的地址字 段都具有3位。然而,由于定點(diǎn)寄存器的數(shù)量小于浮點(diǎn)寄存器的數(shù)量, 如果要擴(kuò)展的指令是諸如定點(diǎn)加法指令A(yù)DD的指定定點(diǎn)寄存器的指令 并且指定了擴(kuò)展的地址字段中第256個(gè)寄存器,則是指定了擴(kuò)展違規(guī)指 令。
根據(jù)本實(shí)施方式的處理單元具有一個(gè)定義,即在這種情況下,會(huì)引 起擴(kuò)展異常(非法動(dòng)作)陷阱。該陷阱的優(yōu)先級(jí)(陷阱優(yōu)先級(jí))被定義 得低于未定義的指令(非法指令)的陷阱的優(yōu)先級(jí),未定義的指令是指 該指令是錯(cuò)誤的不可定義的、單獨(dú)的未與另一個(gè)指令合并的指令。
圖17是示出了擴(kuò)展異常陷阱處理的概念的圖。如果擴(kuò)展異常檢測(cè)部 31從指令解碼器4的指令解碼的結(jié)果中檢測(cè)到錯(cuò)誤的不可定義指令,則 擴(kuò)展異常檢測(cè)部31通知陷阱過渡控制部32出現(xiàn)了擴(kuò)展異常陷阱。在從 擴(kuò)展異常檢測(cè)部31接收了通知后,陷阱過渡控制部32中止通過XAR更 新緩沖3的內(nèi)容來對(duì)XAR寄存器1的重寫,并且中止執(zhí)行操作部5對(duì) XAR寄存器1和寄存器6的存取,以此使程序處理返回?cái)U(kuò)展異常陷阱處 理例程。
因此,能夠防止執(zhí)行錯(cuò)誤的不可定義的指令。接下來,針對(duì)在對(duì)執(zhí) 行程序進(jìn)行了上下文切換時(shí)的情況,對(duì)XASR寄存器進(jìn)行描述。作為OS 調(diào)度程序的功能,可通過上下文切換來切換用于處理的程序。例如,通 過上下文切換能夠改變用于處理的程序,從而切換該程序之前的處理器 狀態(tài),即,需要保存在存儲(chǔ)器中的寄存器的狀態(tài)。如果處理器具有大量的寄存器,用于進(jìn)行保存和恢復(fù)處理的寄存器的數(shù)量也相應(yīng)的增加,因 而增加了上下文切換的代價(jià)。
在根據(jù)本實(shí)施方式的處理單元中,將256個(gè)浮點(diǎn)寄存器劃分為八個(gè)
組,每個(gè)組包括32個(gè)浮點(diǎn)寄存器,以此來稍微減少處理。之后,為各個(gè)
組設(shè)置了表示是否已經(jīng)更新了組中的任意寄存器的位,即,修改標(biāo)志位
(dirtybit),提供了與組數(shù)量相同的8個(gè)標(biāo)志位。
將這8個(gè)修改標(biāo)志位稱為XFD (擴(kuò)展的Fpr Dirty) [7:0]。另外,在 更新由定點(diǎn)側(cè)添加的XG時(shí),設(shè)置了表示該更新的修改標(biāo)志位xg。將這 一共9個(gè)標(biāo)志位保存在新的寄存器XASR(擴(kuò)展的運(yùn)算寄存器狀態(tài)寄存器, extended Arithmetic Register Status Register)中。
圖18示出了XASR寄存器的結(jié)構(gòu)。在圖18中,標(biāo)志位0至7是XFD, 并且標(biāo)志位0對(duì)應(yīng)于Q/。fD至。/。f62的塊,標(biāo)志位1對(duì)應(yīng)于。/。f64至。/。fl26的 塊,……,標(biāo)志位7對(duì)應(yīng)于Q/of448至。/of510的塊。以"0"值來缺省地設(shè) 置XFD的各個(gè)標(biāo)志位,并且當(dāng)各個(gè)塊的寄存器的內(nèi)容改變時(shí),以"l" 值來設(shè)置與其內(nèi)容己經(jīng)改變的寄存器所屬的塊相對(duì)應(yīng)的標(biāo)志位。
XASR寄存器的標(biāo)志位8是XGD,其是針對(duì)定點(diǎn)寄存器的修改標(biāo)志 位。以"0"值來設(shè)置位9至31中的每一個(gè)。根據(jù)本實(shí)施方式的處理單 元在執(zhí)行寄存器的恢復(fù)處理時(shí),參考XASR寄存器,并且僅針對(duì)其修改 標(biāo)志位被設(shè)置為"1"的塊的寄存器執(zhí)行恢復(fù)處理。
因此,與其中在所有寄存器上執(zhí)行恢復(fù)處理的情況相比,減小了恢
復(fù)處理的負(fù)擔(dān)。通過RD-XASR指令能夠?qū)ASR寄存器中的數(shù)據(jù)讀到 定點(diǎn)寄存器中,而通過WR-XAR指令能夠?qū)⒍c(diǎn)寄存器中的數(shù)據(jù)寫入 XASR寄存器。觀察XASR寄存器中的修改標(biāo)志位,使得能夠檢査出在 使用上下文切換時(shí)需要在存儲(chǔ)器中保存的寄存器。
接下來,將描述Write-XAR指令。除了上述的SXAR1和SXAR2指 令外,在處理單元中還定義了 Write-XAR指令作為將信息寫入XAR寄存 器的指令。SXAR1和SXAR2指令具有作為指令操作代碼中的立即值的 擴(kuò)展信息。相對(duì)照的是,Write-XAR指令將定點(diǎn)寄存器中的數(shù)據(jù)寫入XAR 寄存器。Write-XAR指令具有源寄存器1和源寄存器2的地址作為立即值并 且指定兩個(gè)定點(diǎn)寄存器。之后,Write-XAR指令從所指定的兩個(gè)定點(diǎn)寄 存器中讀取數(shù)據(jù),在將XOR的結(jié)果寫入XAR寄存器之前計(jì)算所讀取數(shù) 據(jù)的"異或"(XOR)。之后,與SXAR指令一樣,基于Write-XAR指令 寫入XAR寄存器中的指令擴(kuò)展信息,對(duì)Write-XAR指令之后的一個(gè)或兩 個(gè)指令進(jìn)行擴(kuò)展。
Write-XAR指令將根據(jù)存儲(chǔ)在定點(diǎn)寄存器中的數(shù)據(jù)而確定的值寫入 XAR寄存器。因此,通過使用Write-XAR指令,能夠進(jìn)行讀取TXAR(陷 阱XAR)寄存器的內(nèi)容并且將基于所讀取的內(nèi)容的值寫入XAR寄存器 的處理。
另外,能夠?qū)⒍c(diǎn)計(jì)算單元處理的數(shù)據(jù)寫入XAR寄存器。
接下來,將描述通過SXAR指令和Write-XAR指令來擴(kuò)展指令的定 時(shí)。圖19是示出了當(dāng)通過SXAR指令來執(zhí)行指令擴(kuò)展時(shí)的指令擴(kuò)展的定 時(shí)的圖。圖19以水平方向作為時(shí)間軸示出了指令執(zhí)行以及指令執(zhí)行過程 中所執(zhí)行的處理的概括階段。
SXAR指令,即SXAR1指令和SXAR2指令,具有作為指令的立即 值的指令擴(kuò)展信息。因此,在SXAR指令中,在對(duì)指令操作代碼進(jìn)行解 碼的指令解碼階段中就己經(jīng)知道了指令擴(kuò)展信息。因此,在對(duì)SXAR指 令進(jìn)行解碼后能夠立即對(duì)SXAR指令之后的下一個(gè)指令進(jìn)行解碼。因此, 幾乎同時(shí)地解碼SXAR指令和SXAR指令之后的第一個(gè)擴(kuò)展指令。
在圖19的示例中,幾乎同時(shí)地解碼SXAR1指令和其后的FMADD 指令,并且?guī)缀跬瑫r(shí)地完成了這兩個(gè)指令。
圖20是示出了當(dāng)通過Write-XAR指令來執(zhí)行指令擴(kuò)展時(shí)的指令擴(kuò)展 的定時(shí)的圖。與圖19相同,圖20以水平方向作為時(shí)間軸示出了指令執(zhí) 行以及在指令執(zhí)行過程中所執(zhí)行的處理的概括階段。
Write-XAR指令是利用定點(diǎn)寄存器來執(zhí)行XOR操作并且將操作結(jié)果 寫入XAR寄存器的指令。因此,不能在完成Write-XAR指令執(zhí)行的XOR 操作之前的執(zhí)行階段中確定所述指令擴(kuò)展信息的值。
因此,當(dāng)將Write-XAR指令用于指令擴(kuò)展時(shí),指令擴(kuò)展信息是在完
23成Write-XAR指令的執(zhí)行階段之后確定的,因此在完成所述執(zhí)行階段后
立即開始對(duì)第一個(gè)擴(kuò)展指令的解碼。
在圖20中,推遲Write-XAR指令之后的FMADD指令的指令解碼, 直到完成Write-XAR指令的執(zhí)行階段。之后,當(dāng)完成Write-XAR指令的 執(zhí)行階段時(shí),F(xiàn)MADD指令進(jìn)入指令解碼階段。
接下來,作為使用Write-XAR指令的示例,示出了其中以軟件來模 擬根據(jù)本實(shí)施方式的處理單元的情況。圖21是示出在軟件模擬中未定義 的指令異常例程的操作的流程圖。在開始圖21中的處理后,模擬軟件在 Sl檢測(cè)到未定義的指令(非法指令),處理進(jìn)入未定義指令異常的陷阱例 程。此時(shí),程序計(jì)數(shù)器PC的值保存在TPC中,并且XAR寄存器的值保 存在堆棧TXAR中。
接下來,模擬軟件在S2讀取TPC中的程序計(jì)數(shù)器值以從存儲(chǔ)器取 回引起未定義指令(非法指令)異常的指令。之后,模擬軟件在S3從堆 棧TXAR讀取保存的來自XAR寄存器的值。之后,如果在讀取的信息中 發(fā)現(xiàn)了有效擴(kuò)展信息(S3, Y),則在S4將堆棧TXAR的值讀入寄存器, 并且如果必要,通過Write-XAR指令將該值寫回XAR寄存器。
接著,以此狀態(tài)在S5通過將存儲(chǔ)在XAR寄存器中的擴(kuò)展指令信息 與另一個(gè)指令合并來進(jìn)行模擬。通過擴(kuò)展指令信息來擴(kuò)展此時(shí)合并的指 令。
接著,模擬軟件在處理轉(zhuǎn)到S8之前,在S6清空存儲(chǔ)在堆棧TXAR 中的針對(duì)一個(gè)模擬的指令的擴(kuò)展指令。
另一方面,如果在S3處未在讀取的信息中發(fā)現(xiàn)有效擴(kuò)展信息(S3,N), 則在處理轉(zhuǎn)到S8之前,在S7處通過合并存儲(chǔ)在XAR寄存器中的擴(kuò)展指 令信息和另一個(gè)指令來進(jìn)行模擬。由于在XAR寄存器中沒有存儲(chǔ)有效擴(kuò) 展指令信息,所以此時(shí)不對(duì)合并的指令進(jìn)行擴(kuò)展。
在S8,通過完成指令終止陷阱例程,以執(zhí)行TNPC指向的主例程的 下一個(gè)指令,所述完成指令是用于返回TNPC指向的指令的指令。此時(shí), TNPC的值返回PC并且堆棧TXAR的值返回XAR寄存器。如上所述, 由于Write-XAR指令能夠?qū)⑷我獾钠谕翟O(shè)定給XAR寄存器,所以Write-XAR指令能夠用于陷阱例程或用于調(diào)試。
接下來,將描述在根據(jù)本實(shí)施方式的處理單元中執(zhí)行的調(diào)試程序。 該調(diào)試程序是用于開發(fā)在處理單元中執(zhí)行的軟件的程序。調(diào)試程序在要 調(diào)試的程序中的任意位置處以軟件陷阱指令(在JPS1示例中"TA:Tmp Always")來替代指令,以在模擬陷阱例程中的替代指令的同時(shí),對(duì)執(zhí)行 被替代的指令時(shí)的寄存器值等進(jìn)行檢查。
圖22是示出通用調(diào)試程序的處理的圖。在圖22的示例中,如果在 faddd指令41處執(zhí)行調(diào)試陷阱,則由被表示為42的軟件陷阱指令TA來 替代faddd指令41。
因此,當(dāng)執(zhí)行TA指令時(shí),處理跳轉(zhuǎn)到調(diào)試程序指示的陷阱地址的調(diào) 試?yán)蹋⑶艺{(diào)試?yán)滩杉缂拇嫫髦档鹊恼{(diào)試程序需要的數(shù)據(jù)。之 后,在進(jìn)行了 faddd指令的模擬后,調(diào)試?yán)逃迷嫉膄addd指令替代TA 指令。以此方式來進(jìn)行所述調(diào)試處理。
在由根據(jù)本實(shí)施方式的處理單元中的XAR寄存器所進(jìn)行的指令擴(kuò)展 中,在XAR寄存器具有有效指令擴(kuò)展信息的情況下總是對(duì)緊隨其后的指 令進(jìn)行擴(kuò)展。因此,如果調(diào)試程序功能以TA指令替代了要通過XAR寄 存器的指令擴(kuò)展信息來擴(kuò)展的指令,則會(huì)嘗試通過XAR寄存器的指令擴(kuò) 展信息來擴(kuò)展TA指令。此外,軟件陷阱指令使用定點(diǎn)寄存器作為源寄存
器,因此如果寄存器擴(kuò)展的地址字段指向第256個(gè)寄存器,則可能引起 "非法動(dòng)作"陷阱。
艮口,如果擴(kuò)展了TA指令,則因改變了陷阱地址值或者引起了 "非法 動(dòng)作",可能不會(huì)實(shí)現(xiàn)原始的調(diào)試程序功能,。
因此,在根據(jù)本實(shí)施方式的處理單元中,軟件陷阱指令TA被特別定 義為以不需要擴(kuò)展的指令來操作,就是說,即使在XAR寄存器中存在有 效擴(kuò)展信息,也以忽略XAR擴(kuò)展信息的方式來執(zhí)行TA指令。
在陷阱不是由軟件陷阱指令引起的情況下,根據(jù)本實(shí)施方式的處理 單元具有無條件地重置XAR寄存器的規(guī)范。在使用了調(diào)試程序的情況下, 總是通過軟件陷阱指令進(jìn)入陷阱并且將XAR存儲(chǔ)在TXAR中,因而能夠 在引起軟件陷阱之后,通過RD-TXAR指令從TXAR讀取進(jìn)入陷阱時(shí)XAR的值。
圖23示出針對(duì)本實(shí)施方式的處理單元所擴(kuò)展的指令的調(diào)試程序處 理。在圖23中,假設(shè)在SXAR1指令后立即執(zhí)行faddd指令51的時(shí)間點(diǎn) 進(jìn)行調(diào)試。另外在此情況下,調(diào)試程序以被表示為52的TA指令來替代 faddd指令。
如果將通過SXAR1指令來擴(kuò)展TA指令的操作數(shù)寄存器的地址,則 處理在TA指令的執(zhí)行過程中跳轉(zhuǎn)到調(diào)試程序不注意的陷阱地址。因此, 本實(shí)施方式被限定為以忽略XAR寄存器中的指令擴(kuò)展信息的方式執(zhí)行 TA指令。因此,在TA指令的執(zhí)行過程中處理跳轉(zhuǎn)到正確的陷阱地址。
根據(jù)前述,根據(jù)本實(shí)施的處理單元在將指令保持為固定長(zhǎng)度指令的 同時(shí)能夠?qū)υ撝噶钸M(jìn)行擴(kuò)展。
在以上的示例中,通過SXAR2指令擴(kuò)展了多達(dá)兩個(gè)指令,但是根據(jù) 本實(shí)施方式的處理單元并不限于此。例如,通過例如減少需要擴(kuò)展寄存 器的數(shù)量和/或不擴(kuò)展SIMD指令,可以擴(kuò)展三個(gè)或更多個(gè)指令。
另外在以上示例中,當(dāng)執(zhí)行擴(kuò)展的指令時(shí),清空了XAR寄存器中的 對(duì)應(yīng)的擴(kuò)展指令信息,但是取而代之,可以通過僅清空F一VAL或S—VAL 來使對(duì)應(yīng)的擴(kuò)展指令信息無效。
根據(jù)本發(fā)明的實(shí)施方式的方面,能夠提供所描述的特征、功能、操 作、和/或優(yōu)勢(shì)的任意組合。能夠以包括了計(jì)算硬件(例如,計(jì)算設(shè)備) 的設(shè)備(機(jī)器)的形式來實(shí)現(xiàn)這些實(shí)施方式,所述計(jì)算硬件諸如(在不 受限制的示例中)能夠存儲(chǔ)、檢索、處理和/或輸出數(shù)據(jù)和/或與其它計(jì)算 機(jī)進(jìn)行通信(聯(lián)絡(luò))的任意計(jì)算機(jī)。根據(jù)實(shí)施方式的一方面,能夠通過 和/或使用計(jì)算硬件和/或軟件來實(shí)現(xiàn)所描述的特征、功能、操作、和/或優(yōu) 勢(shì)。計(jì)算設(shè)備包括計(jì)算機(jī)處理器或控制器(CPU)(例如,基于硬件邏輯 電路的計(jì)算機(jī)處理器,其處理或執(zhí)行指令,即軟件)、計(jì)算機(jī)可讀記錄介 質(zhì)、傳輸通信媒體接口 (網(wǎng)絡(luò)接口)、和/或顯示裝置,上述全部通過數(shù)據(jù) 通信總線來進(jìn)行通信。產(chǎn)生的結(jié)果能夠顯示在計(jì)算硬件的顯示器上。實(shí) 現(xiàn)這些實(shí)施方式的程序/軟件可記錄在包括計(jì)算機(jī)可讀記錄介質(zhì)的計(jì)算機(jī) 可讀介質(zhì)上。實(shí)現(xiàn)這些實(shí)施方式的程序/軟件還可以被包含/編碼在傳輸通
26信媒體上,并經(jīng)由傳輸通信媒體來傳輸。
根據(jù)實(shí)施方式的一方面,處理單元是計(jì)算機(jī)處理器并且寄存器指的 是計(jì)算機(jī)處理器的任意計(jì)算機(jī)可讀記錄介質(zhì)的任意區(qū)域,和/或可以由計(jì) 算機(jī)處理器存取的用于存儲(chǔ)信息/數(shù)據(jù)的區(qū)域。設(shè)備(機(jī)器)可以包括處 理單元。另外,可通過對(duì)計(jì)算機(jī)進(jìn)行編程來實(shí)現(xiàn)所描述的處理,以便按 照來自程序軟件的指令和/或在此描述的數(shù)據(jù)結(jié)構(gòu),將所述處理執(zhí)行/處理 成為用于實(shí)現(xiàn)特殊功能,從而創(chuàng)建新的專用機(jī),即將通用機(jī)轉(zhuǎn)換成專用 機(jī)。具體來說,當(dāng)通過計(jì)算機(jī)處理器來執(zhí)行處理時(shí),所述處理將作為物 體的該計(jì)算機(jī)處理器轉(zhuǎn)換成為不同狀態(tài)和/或事物的高性能的指令擴(kuò)展處 理器。
所述實(shí)施方式的大量特征和優(yōu)點(diǎn)可從詳細(xì)的說明書中顯見,因此所 附權(quán)利要求旨在覆蓋落入其真實(shí)精神和范圍內(nèi)的所有特征和優(yōu)點(diǎn)。另外, 由于本領(lǐng)域的技術(shù)人員很容易想到眾多的變型和修改,所以不期望將創(chuàng) 造性實(shí)施方式限于在此例證和描述的精確結(jié)構(gòu)和操作,因此所有適當(dāng)?shù)?變型和其等價(jià)物都落入本發(fā)明的范圍之內(nèi)。
本申請(qǐng)基于并要求2007年12月28日提交的日本專利申請(qǐng)第 2007-341387號(hào)的優(yōu)先權(quán),在此通過引用并入其全部?jī)?nèi)容。
權(quán)利要求
1、一種處理單元,該處理單元包括擴(kuò)展寄存器,能夠向所述擴(kuò)展寄存器設(shè)定對(duì)指令的擴(kuò)展進(jìn)行表示的指令擴(kuò)展信息;和操作單元,在通過擴(kuò)展指令向所述擴(kuò)展寄存器設(shè)定指令擴(kuò)展信息時(shí),所述操作單元執(zhí)行在將所述指令擴(kuò)展信息寫入所述擴(kuò)展寄存器中的擴(kuò)展指令之后的后續(xù)指令,并且基于設(shè)定在所述擴(kuò)展寄存器中的所述指令擴(kuò)展信息來擴(kuò)展所述后續(xù)指令。
2、 根據(jù)權(quán)利要求1所述的處理單元,其中,所述擴(kuò)展寄存器存儲(chǔ)表示設(shè)定的所述指令擴(kuò)展信息是否有效的信息,并且在向所述擴(kuò)展寄存器設(shè)定了表示所述指令擴(kuò)展信息有效的信息時(shí), 所述操作單元基于設(shè)定在所述擴(kuò)展寄存器中的所述指令擴(kuò)展信息來擴(kuò)展 所述后續(xù)指令。
3、 根據(jù)權(quán)利要求1所述的處理單元,其中,在提交了所述擴(kuò)展的后 續(xù)指令的情況下,使設(shè)定到所述擴(kuò)展寄存器的所述指令擴(kuò)展信息無效。
4、 根據(jù)權(quán)利要求1所述的處理單元,其中,針對(duì)多條指令,將所述 指令擴(kuò)展信息設(shè)定到所述擴(kuò)展寄存器。
5、 根據(jù)權(quán)利要求4所述的處理單元,其中,每次擴(kuò)展所述后續(xù)指令 并在執(zhí)行后提交該后續(xù)指令時(shí),使所述多個(gè)指令擴(kuò)展信息中的與被執(zhí)行 的指令相對(duì)應(yīng)的指令擴(kuò)展信息無效。
6、 根據(jù)權(quán)利要求1所述的處理單元,該處理單元還包括 陷阱寄存器,其在第一個(gè)指令的執(zhí)行和要擴(kuò)展的所述后續(xù)指令的執(zhí)行之間出現(xiàn)陷阱時(shí),存儲(chǔ)設(shè)定到所述擴(kuò)展寄存器的指令擴(kuò)展信息。
7、 根據(jù)權(quán)利要求6所述的處理單元,其中,在出現(xiàn)所述陷阱和開始 陷阱處理時(shí),使所述擴(kuò)展寄存器中的所述指令擴(kuò)展信息無效。
8、 根據(jù)權(quán)利要求1所述的處理單元,其中,所述指令擴(kuò)展信息包括 寄存器地址和通過所述指令擴(kuò)展信息擴(kuò)展的指令。
9、 根據(jù)權(quán)利要求1所述的處理單元,其中,所述指令擴(kuò)展信息包括表示所述后續(xù)指令是否是SIMD指令的信息,并且所述指令擴(kuò)展信息所擴(kuò)展的所述后續(xù)指令執(zhí)行SIMD處理。
10、 根據(jù)權(quán)利要求1所述的處理單元,其中,在所述后續(xù)指令是僅指定了兩個(gè)或更少的源寄存器的指令時(shí),所述指令擴(kuò)展信息指定在將數(shù)據(jù)寄存在高速緩存存儲(chǔ)器中時(shí)對(duì)數(shù)據(jù)進(jìn)行寄存的高速緩存路組的屬性。
11、 根據(jù)權(quán)利要求1所述的處理單元,其中,所述擴(kuò)展指令具有作為在所述擴(kuò)展指令的操作代碼中定義的立即值的要寫入所述擴(kuò)展寄存器中的擴(kuò)展信息。
12、 根據(jù)權(quán)利要求1所述的處理單元,其中,所述擴(kuò)展指令利用定點(diǎn)寄存器將所述擴(kuò)展信息寫入所述擴(kuò)展寄存器中。
13、 根據(jù)權(quán)利要求1所述的處理單元,該處理單元還包括陷阱過渡控制部,該陷阱過渡控制部在處理由于指令類型而不能通過所述指令擴(kuò)展信息來擴(kuò)展的所述后續(xù)指令時(shí),引起擴(kuò)展違規(guī)異常陷阱。
14、 根據(jù)權(quán)利要求1所述的處理單元,其中,當(dāng)在所述擴(kuò)展寄存器中設(shè)定有效的指令擴(kuò)展信息時(shí),定義了不通過所述指令擴(kuò)展信息擴(kuò)展的指令。
15、 一種在執(zhí)行固定長(zhǎng)度指令的計(jì)算機(jī)處理器中擴(kuò)展指令的方法,該方法包括以下步驟通過所述計(jì)算機(jī)處理器,在擴(kuò)展寄存器中設(shè)定指令擴(kuò)展信息,其中所述指令擴(kuò)展信息指示指令的擴(kuò)展;通過所述計(jì)算機(jī)處理器,執(zhí)行在將所述指令擴(kuò)展信息寫入所述擴(kuò)展寄存器的指令之后的后續(xù)指令;以及通過所述計(jì)算機(jī)處理器,基于所述指令擴(kuò)展信息擴(kuò)展所述后續(xù)指令。
16、 一種計(jì)算機(jī)處理器,該計(jì)算機(jī)處理器包括-擴(kuò)展寄存器,其存儲(chǔ)指示指令的擴(kuò)展的指令擴(kuò)展信息;和控制器,其在所述擴(kuò)展寄存器中設(shè)定指令擴(kuò)展信息,在將所述指令擴(kuò)展信息設(shè)定在所述擴(kuò)展寄存器中之后執(zhí)行一個(gè)或更多個(gè)后續(xù)指令,并且基于在所述擴(kuò)展寄存器中設(shè)定的所述指令擴(kuò)展信息來擴(kuò)展所述一個(gè)或更多個(gè)后續(xù)指令。
全文摘要
本發(fā)明涉及處理單元。該處理單元具有擴(kuò)展寄存器,能夠向所述擴(kuò)展寄存器設(shè)定指示指令的擴(kuò)展的指令擴(kuò)展信息。在向所述擴(kuò)展寄存器設(shè)定所述指令擴(kuò)展信息時(shí),操作單元執(zhí)行將所述指令擴(kuò)展信息寫入所述擴(kuò)展寄存器的第一個(gè)指令之后的后續(xù)指令,并基于所述指令擴(kuò)展信息來擴(kuò)展所述后續(xù)指令。
文檔編號(hào)G06F9/318GK101470599SQ20081018504
公開日2009年7月1日 申請(qǐng)日期2008年12月26日 優(yōu)先權(quán)日2007年12月28日
發(fā)明者吉田利雄, 本藤干雄 申請(qǐng)人:富士通株式會(huì)社