本發(fā)明涉及一種處理器技術(shù),特別是一種計算機指令執(zhí)行的方法以及使用此方法的裝置。
背景技術(shù):
計算器的中央處理單元中,微操作(稱為micro-operation或μop)為底層指令,用以實現(xiàn)復(fù)雜機器指令(也稱為宏指令micro-instruction或計算機指令)。通常,微操作是執(zhí)行一或多個寄存器中數(shù)據(jù)的基本操作,包括于寄存器間、或寄存器及中央處理單元的外部總線間傳遞資料,以及執(zhí)行寄存器中數(shù)據(jù)的數(shù)學(xué)運算或邏輯操作。傳統(tǒng)的提取-譯碼-執(zhí)行周期中,于執(zhí)行時解構(gòu)宏指令中的每一級,使得中央處理單元決定及執(zhí)行一連串的微操作。
計算機指令可用于執(zhí)行數(shù)學(xué)運算操作。對于執(zhí)行較為復(fù)雜數(shù)學(xué)運算操作的指令,例如操作數(shù)為緊縮操作數(shù)(packed operand)的計算機指令,譯碼單元(decode unit)會將一條這樣的計算機指令譯碼為多個微操作,并且將產(chǎn)生的多個微操作送入微處理器的執(zhí)行單元(execution unit)以執(zhí)行。在亂序執(zhí)行(out-of-order execution)的微處理器中,微操作的執(zhí)行是亂序的,要執(zhí)行完該計算機指令對應(yīng)的所有微操作,耗時會很長。因此,需要一種執(zhí)行計算機指令的方法以及使用此方法的裝置,用以優(yōu)化這種計算機指令的執(zhí)行。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提出一種微操作的執(zhí)行方法,至少包括以下步驟:譯碼計算機指令以產(chǎn)生包括操作碼及緊縮操作數(shù)的微操作,其中的緊縮操作數(shù)包含計算機指令對應(yīng)的全部n個輸入?yún)?shù);依據(jù)操作碼以及緊縮操作數(shù)產(chǎn)生對應(yīng)n個輸入?yún)?shù)的n個地址;以及從查找表讀取n個地址所對應(yīng)的n個近似值。
本發(fā)明的實施例提出一種集成微操作的倒數(shù)計算裝置,至少包括譯碼單元、只讀存儲器、只讀存儲器控制器、地址產(chǎn)生器及控制器。譯碼單元譯碼計算機指令以產(chǎn)生包含操作碼和緊縮操作數(shù)的微操作,其中的緊縮操作數(shù)包含計算機指令對應(yīng)的全部n個輸入?yún)?shù)。只讀存儲器控制器耦接只讀存儲器,而只讀存儲器儲存查找表。地址產(chǎn)生器耦接碼寄存器及來源寄存器??刂破黢罱拥刂樊a(chǎn)生器,驅(qū)動地址產(chǎn)生器用以根據(jù)操作碼及操作數(shù)產(chǎn)生對應(yīng)所述n個輸入?yún)?shù)的n個地址至只讀存儲器控制器,以及只讀存儲器控制器從查找表讀取所述n個地址所對應(yīng)的n個近似值。
本發(fā)明所披露的執(zhí)行計算機指令的裝置和方法可有效地提高指令的執(zhí)行效率,在本發(fā)明中,包含多個輸入?yún)?shù)的計算機指令直接經(jīng)譯碼單元被譯碼為單一一條包含緊縮操作數(shù)的微指令,若輸入?yún)?shù)為四個單精度浮點數(shù),緊縮操作數(shù)包含四個單精度浮點數(shù),執(zhí)行單元經(jīng)過5個階段即可完成4個單精度浮點數(shù)的倒數(shù)近似值或平方根的倒數(shù)近似值的查表操作,并返回結(jié)果,因此大大提高了此種計算機指令的執(zhí)行效率。
附圖說明
圖1為依據(jù)本發(fā)明實施例的執(zhí)行計算機指令的系統(tǒng)架構(gòu)圖。
圖2為依據(jù)本發(fā)明實施例的執(zhí)行微操作的方塊圖。
圖3為依據(jù)本發(fā)明實施例的只讀存儲器控制器及只讀存儲器間的信息流的示意圖。
圖4為依據(jù)本發(fā)明實施例的執(zhí)行微操作的方塊圖。
圖5為依據(jù)本發(fā)明實施例的只讀存儲器控制器及只讀存儲器間的信息流的示意圖。
圖6為依據(jù)本發(fā)明實施例的執(zhí)行計算機指令方法的流程圖。
具體實施方式
以下說明是為完成發(fā)明的較佳實現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并不用以限定本發(fā)明。實際的發(fā)明內(nèi)容必須參考之后的權(quán)利要求范圍。
必須了解的是,使用于本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件以及/或組件,但并不排除可加上更多的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件、組件,或以上的任意組合。
于權(quán)利要求中使用如“第一”、“第二”、“第三”等詞用來修飾權(quán)利要求中的組件,并非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個組件先于另一個組件,或者是執(zhí)行方法步驟時的時間先后順序,僅用來區(qū)別具有相同名字的組件。
圖1為依據(jù)本發(fā)明實施例的流水級(pipe-stage)精簡指令集計算器的系統(tǒng)架構(gòu)圖。實現(xiàn)該流水級的系統(tǒng)可包括指令提取單元(IF,Instruction Fetch)111、指令存取單元(IA,Instruction Access)112、譯碼單元(DU,Decode Unit)113、執(zhí)行單元(EU,Execution Unit)114及回寫單元(WB,Write Back)115。程序計數(shù)器(PC,未顯示)以寄存器實施,負(fù)責(zé)存放目前指令的地址。指令提取單元111可從程序計數(shù)器讀取地址。指令存取單元112依據(jù)此地址從指令高速緩存(instruction cache)提取一或多個計算機指令(或宏指令)及其操作數(shù)(operand),每一計算機指令可用以執(zhí)行其操作數(shù)的邏輯運算和/或算術(shù)運算。在一實施例中,計算機指令可用以計算一個或多個數(shù)值的倒數(shù)近似值(approximate reciprocal of value)或一個或多個數(shù)值的平方根(又稱為開方)的倒數(shù)近似值(approximate reciprocal of square root of value)。在一實施例中,上述數(shù)值,作為該計算機指令對應(yīng)的輸入?yún)?shù)(以下稱為輸入?yún)?shù)),可以是32比特(bit)的單精度浮點數(shù)(single-precision float-point value),該計算機指令實現(xiàn)計算四個單精度浮點數(shù)的倒數(shù)或平方根倒數(shù)的近似值,或者上述輸入?yún)?shù)可以是64比特雙精度浮點數(shù)(double-precision float-point value),該計算機指令實現(xiàn)計算兩個雙精度浮點數(shù)的倒數(shù)或平方根倒數(shù)的近似值。上述輸入?yún)?shù)一共占128比特的存儲空間。譯碼單元113譯碼這樣的計算機指令以產(chǎn)生微操作,該微操作包括操作碼及其對應(yīng)的緊縮操作數(shù)(packed operand)。在一實施例中,譯碼單元113包含譯碼器(translator),上述譯碼器將計算機指令譯碼為微操作。在一實施例中,上述緊縮操作數(shù)包含該計算機指令對應(yīng)的全部n個(例如4個或2個)輸入?yún)?shù)。執(zhí)行單元114讀取譯碼單元產(chǎn)生的微操作中的緊縮操作數(shù)并依據(jù)其操作碼產(chǎn)生對應(yīng)全部n個輸入?yún)?shù)的n個地址,然后從查找表讀取n個地址所對應(yīng)的n個近似值。具體而言,執(zhí)行單元114依據(jù)操作碼將緊縮操作數(shù)切分成n個單一操作數(shù),藉由查表獲得每一單一操作數(shù)所對應(yīng)的數(shù)值以獲得結(jié)果,上述結(jié)果對應(yīng)緊縮操作數(shù)的數(shù)值。在一實施例中,每一單一操作數(shù)是指n個輸入?yún)?shù)之一,單一操作數(shù)所對應(yīng)的數(shù)值可以是每一單一操作數(shù)倒數(shù)的近似值或每一單一操作數(shù)的平方根倒數(shù)的近似值?;貙憜卧?15將結(jié)果寫入寄存器,在一實施例中,寄存器可能是臨時寄存器,如寄存器文件(register file)。在一實施例中,計算機指令可為精簡指令集計算機指令。
圖2為依據(jù)本發(fā)明實施例的執(zhí)行微操作的執(zhí)行單元的方塊圖。執(zhí)行單元114包含控制器210、地址產(chǎn)生器230、只讀存儲器控制器240及只讀存儲器(ROM,Read Only Memory)250,只讀存儲器250中儲存查找表251。表1描述查找表251的范例:
表1
查找表251以10比特進行尋址,可儲存1K字節(jié)(byte)的數(shù)據(jù)。地址2’b1000000000至地址2’b1011111111的存儲空間儲存數(shù)值的倒數(shù)近似值(單精度浮點數(shù)),以及地址2’b0100000000至地址2’b0111111111的記憶空間儲存數(shù)值的平方根的倒數(shù)近似值(單精度浮點數(shù))。總的來說,查找表251分為多個區(qū)段(segment),以高比特(significant bit)作為區(qū)段編號,例如,比特9至10。于此須注意的是,查找表251中數(shù)值的倒數(shù)近似值及數(shù)值的平方根的倒數(shù)近似值的存儲空間配置只為范例,本領(lǐng)域技術(shù)人員可根據(jù)不同的設(shè)計需要改變,本發(fā)明并不因此受限。例如,地址2’b0100000000至地址2’b0111111111的存儲空間儲存數(shù)值的倒數(shù)近似值,以及地址2’b0000000000至地址2’b0011111111的存儲空間儲存數(shù)值的平方根的倒數(shù)近似值。
在一實施例中,譯碼單元113產(chǎn)生微操作后,鎖存(latch)操作碼(operation code,opcode)至碼寄存器(code register)290,以及鎖存緊縮操作數(shù)至來源寄存器(source register)220。例如,操作碼“RCPPS”指示計算緊縮操作數(shù)所對應(yīng)的n個(例如4個)輸入?yún)?shù)的倒數(shù),輸出結(jié)果為單精度浮點數(shù);操作碼“RSQRT”指示計算緊縮操作數(shù)所對應(yīng)的n個(例如4個)輸入?yún)?shù)平方根的倒數(shù),輸出結(jié)果為單精度浮點數(shù)。來源寄存器220可為128比特寄存器,以上緊縮操作數(shù)可被切割為四個32比特的單一操作數(shù),其中的每單一操作數(shù)可對應(yīng)一個32比特的輸入?yún)?shù)。例如,譯碼單元113默認(rèn)以比特i0至比特i0+7儲存相應(yīng)第一單一操作數(shù)的第一輸入?yún)?shù),i0為0至24之間的任意數(shù)值;比特i1至比特i1+7儲存相應(yīng)第二單一操作數(shù)的第二輸入?yún)?shù),i1為32至56之間的任意數(shù)值;比特i2至比特i2+7儲存相應(yīng)第三單一操作數(shù)的第三輸入?yún)?shù),i2為64至88之間的任意數(shù)值;及比特i3至比特i3+7儲存相應(yīng)第四單一操作數(shù)的第四輸入?yún)?shù),i3為96至120之間的任意數(shù)值。例如,碼寄存器290及來源寄存器220的內(nèi)容指示計算1/100.5、1/200.5、1/300.5及1/400.5。又例如,碼寄存器290及來源寄存器220的內(nèi)容指示計算1/(100.5)1/2、1/(200.5)1/2、1/(300.5)1/2及1/(400.5)1/2。
在一實施例中,控制器210驅(qū)動地址產(chǎn)生器230用以根據(jù)操作碼及單一操作數(shù)產(chǎn)生并輸出四個地址至只讀存儲器控制器240,使得只讀存儲器控制器240從查找表251讀取以上四個地址所對應(yīng)的四個近似值,以及輸出以上四個近似值至結(jié)果產(chǎn)生器260。此外,控制器210驅(qū)動結(jié)果產(chǎn)生器260用以合并四個近似值以產(chǎn)生合并結(jié)果,以及鎖存合并結(jié)果至目的地寄存器280。在一實施例中,控制器210驅(qū)動地址產(chǎn)生器230用以根據(jù)碼寄存器290及來源寄存器220的內(nèi)容產(chǎn)生并輸出四個地址至只讀存儲器控制器240,使得只讀存儲器控制器240據(jù)此從查找表251讀取指定地址的內(nèi)容并輸出到解多工器(DEMUX,demultiplexer)255。解多工器255的輸入端連接只讀存儲器控制器240和/或只讀存儲器250,解多工器255具有一或多個輸出端,輸出端可以連接一或多個結(jié)果寄存器(如270a至270c)和/或結(jié)果產(chǎn)生器260。地址產(chǎn)生器230可根據(jù)碼寄存器290及來源寄存器220的內(nèi)容產(chǎn)生地址的區(qū)段編號及偏移量,也可由地址產(chǎn)生器230依據(jù)計算機指令被譯碼成的微操作的操作碼類型和操作數(shù)產(chǎn)生地址的區(qū)段編號及偏移量(offset)??刂破?10控制解多工器255用以將只讀存儲器控制器240連接至結(jié)果寄存器270a至270c及結(jié)果產(chǎn)生器260中的其中一個,使得讀取結(jié)果可傳送到連接上的組件,在一實施例中,結(jié)果寄存器270a至270c為32比特寄存器。
圖3為依據(jù)本發(fā)明實施例的只讀存儲器控制器及只讀存儲器間的信息流的示意圖。假設(shè)只讀存儲器控制器240及只讀存儲器250使用一個數(shù)據(jù)線傳收數(shù)據(jù):只讀存儲器控制器240可以經(jīng)過五個階段取得四個輸入?yún)?shù)的倒數(shù)近似值,其中輸入?yún)?shù)可以是單精度浮點數(shù)。地址Addr0、地址Addr1、地址Addr2和地址Addr3可由地址產(chǎn)生器230依據(jù)碼寄存器290的操作碼及來源寄存器220的輸入?yún)?shù)產(chǎn)生,也可由地址產(chǎn)生器230依據(jù)計算機指令被譯碼成的微操作的操作碼類型和操作數(shù)產(chǎn)生。地址產(chǎn)生器230可同時產(chǎn)生地址Addr0、地址Addr1、地址Addr2和地址Addr3,也可以先后產(chǎn)生地址Addr0、地址Addr1、地址Addr2和地址Addr3。在階段I,地址產(chǎn)生器230將地址Addr0傳送至只讀存儲器控制器240,在一實施例中,地址Addr0=“2’b10/01”+Src[i0:i0+7],其中,Src[i0:i0+7]代表來源寄存器220中比特i0至比特i0+7的值。例如,當(dāng)操作碼為“RCPPS”,地址Addr0=“2’b10”+Src[i0:i0+7]。當(dāng)操作碼為“RSQRT”,地址Addr0=“2’b01”+Src[i0:i0+7]。只讀存儲器控制器240將地址Addr0傳送給只讀存儲器250。在階段II,地址產(chǎn)生器230將地址Addr0傳送至只讀存儲器控制器240,在一實施例中,地址Addr1=“2’b10/01”+Src[i1:i1+7],其中,Src[i1:i1+7]代表來源寄存器220中比特i1至比特i1+7的值。只讀存儲器控制器240將地址Addr1傳送給只讀存儲器250,接收從只讀存儲器250查找到的地址Addr0所對應(yīng)的近似值Data0并輸出數(shù)據(jù)Data0至解多工器255,以及傳送信息給控制器210用以通知地址Addr0的近似值Data0已輸出??刂破?10控制解多工器255將只讀存儲器控制器240連接至結(jié)果寄存器270a用以鎖存(latch)近似值Data0。在階段III,地址產(chǎn)生器230將地址Addr0傳送至只讀存儲器控制器240,在一實施例中,地址Addr2=“2’b10/01”+Src[i2:i2+7],其中,Src[i2:i2+7]代表來源寄存器220中比特i2至比特i2+7的值。只讀存儲器控制器240將地址Addr2傳送給只讀存儲器250,接收從只讀存儲器250查找到的地址Addr1所對應(yīng)的近似值Data1并輸出近似值Data1至解多工器255,以及傳送信息給控制器210用以通知地址Addr1的近似值Data1已輸出。控制器210控制解多工器255將只讀存儲器控制器240連接至結(jié)果寄存器270b用以鎖存近似值Data1。在階段IV,地址產(chǎn)生器230將地址Addr0傳送至只讀存儲器控制器240,在一實施例中,地址Addr3=“2’b10/01”+Src[i3:i3+7],其中,Src[i3:i3+7]代表來源寄存器220中比特i3至比特i3+7的值。只讀存儲器控制器240將地址Addr3傳送給只讀存儲器250,接收從只讀存儲器250查找到的地址Addr2所對應(yīng)的近似值Data2并輸出近似值Data2至解多工器255,以及傳送信息給控制器210用以通知地址Addr2的近似值Data2已輸出。控制器210控制解多工器255將只讀存儲器控制器240連接至結(jié)果寄存器270c用以鎖存近似值Data2。在階段V,只讀存儲器控制器240接收從只讀存儲器250查找到的地址Addr3所對應(yīng)的近似值Data3并輸出數(shù)據(jù)Data3至解多工器255,以及傳送信息給控制器210用以通知地址Addr3的近似值Data3已輸出。控制器210控制解多工器255將只讀存儲器控制器240連接至結(jié)果產(chǎn)生器260并指示結(jié)果產(chǎn)生器260產(chǎn)生計算結(jié)果。結(jié)果產(chǎn)生器260合并結(jié)果寄存器270a中的近似值Data0、結(jié)果寄存器270b中的近似值Data1、結(jié)果寄存器270c中的近似值Data2及從只讀存儲器控制器240接收到的近似值Data3,用以產(chǎn)生128比特的合并結(jié)果,以及鎖存合并結(jié)果至目的地寄存器(destination register)280。在一實施例中,目的地寄存器280的比特0至比特31儲存第一單精度浮點數(shù)的查表結(jié)果,比特32至比特63儲存第二單精度浮點數(shù)的查表結(jié)果,比特64至比特95儲存第三單精度浮點數(shù)的查表結(jié)果,以及比特96至比特127儲存第四單精度浮點數(shù)的查表結(jié)果。在一實施例中,只讀存儲器250具備四個輸出端,可并行輸出以上四個近似值(Data0、Data1、Data2及Data3)至解多工器255,解多工器255將以上四個近似值分別輸出至結(jié)果寄存器(如270a至270c)和結(jié)果產(chǎn)生器260,結(jié)果寄存器270a至270c再將三個近似值輸出至結(jié)果產(chǎn)生器260,結(jié)果產(chǎn)生器260將以上四個近似值合并以產(chǎn)生結(jié)果。在一實施例中,只讀存儲器250并行輸出以上四個近似值(Data0、Data1、Data2及Data3)至解多工器255,解多工器255將以上四個近似值分別輸出至一或多個結(jié)果寄存器(如2個結(jié)果寄存器),再經(jīng)結(jié)果寄存器輸出至結(jié)果產(chǎn)生器260以合并以上四個近似值產(chǎn)生結(jié)果。圖4為依據(jù)本發(fā)明實施例的執(zhí)行計算機指令的方塊圖。執(zhí)行單元114包含只讀存儲器450,用于儲存查找表451。本領(lǐng)域技術(shù)人員可修改表1的范例,使用更大的內(nèi)存空間來儲存雙精度浮點數(shù)的倒數(shù)近似值。譯碼單元113產(chǎn)生微操作后,鎖存操作碼至碼寄存器490,以及鎖存操作數(shù)至來源寄存器420。例如,操作碼“DRCPPS”指示計算緊縮操作數(shù)所對應(yīng)的n個(例如2個)輸入?yún)?shù)的倒數(shù),輸出結(jié)果為雙精度浮點數(shù);操作碼“DRSQRT”指示計算緊縮操作數(shù)所對應(yīng)的n個(例如2個)輸入?yún)?shù)的平方根的倒數(shù),輸出結(jié)果為雙精度浮點數(shù)。來源寄存器420為128比特寄存器,可切割為2個64比特,其中的每64比特儲存一個輸入數(shù)值。例如,碼寄存器490及來源寄存器420的內(nèi)容指示計算1/100.5及1/400.5。又例如,碼寄存器490及來源寄存器420的內(nèi)容指示計算1/(100.5)1/2及1/(400.5)1/2。控制器410驅(qū)動地址產(chǎn)生器430用以根據(jù)操作碼及操作數(shù)產(chǎn)生并輸出二個地址至只讀存儲器控制器440,使得只讀存儲器控制器440從只讀存儲器450中的查找表451中讀取以上二個地址所對應(yīng)的二個近似值。在一實施例中,只讀存儲器450輸出以上二個近似值至只讀存儲器控制器440,只讀存儲器控制器440將以上二個近似值輸出至解多工器455,解多工器455輸出以上二個近似值至結(jié)果產(chǎn)生器460以合并二個近似值產(chǎn)生結(jié)果。在一實施例中,只讀存儲器450通過其具備的二個輸出端并行輸出以上二個近似值至解多工器455,解多工器455將以上二個近似值分別輸出至結(jié)果寄存器470和結(jié)果產(chǎn)生器460,結(jié)果寄存器470再將其所存儲近似值輸出至結(jié)果產(chǎn)生器460,結(jié)果產(chǎn)生器460將以上二個近似值合并以產(chǎn)生結(jié)果。
控制器410驅(qū)動結(jié)果產(chǎn)生器460用以合并二個近似值以產(chǎn)生合并結(jié)果,以及鎖存合并結(jié)果至目的地寄存器480。在一實施例中,控制器410驅(qū)動地址產(chǎn)生器430產(chǎn)生并輸出二個地址至只讀存儲器控制器440,使得只讀存儲器控制器440據(jù)此讀取查找表451中指定地址的內(nèi)容。地址產(chǎn)生器430可根據(jù)碼寄存器490及來源寄存器420的內(nèi)容產(chǎn)生地址的區(qū)段編號及偏移量,也可由地址產(chǎn)生器430依據(jù)計算機指令被譯碼成的微操作的操作碼類型和操作數(shù)產(chǎn)生地址的區(qū)段編號及偏移量。解多工器455的輸入端連接只讀存儲器控制器440,解多工器455的二個輸出端分別連接結(jié)果寄存器470及結(jié)果產(chǎn)生器460。在一些實施例中,解多工器455的二個輸出端可以連接兩個結(jié)果寄存器460及470用于接受查找表451中指定地址的內(nèi)容??刂破?10控制解多工器455用以將只讀存儲器控制器440連接至結(jié)果寄存器470及結(jié)果產(chǎn)生器460中的其中一個,使得讀取結(jié)果可傳送到連接上的組件,其中,結(jié)果寄存器470為64比特寄存器。
圖5為依據(jù)本發(fā)明實施例的只讀存儲器控制器及只讀存儲器間的信息流的示意圖。在一實施例中,只讀存儲器控制器440及只讀存儲器450使用一個數(shù)據(jù)線傳收數(shù)據(jù),只讀存儲器控制器440可以經(jīng)過三個階段取得二個輸入?yún)?shù)的倒數(shù)近似值,其中輸入?yún)?shù)可以是雙精度浮點數(shù)。地址Addr0和地址Addr1可由地址產(chǎn)生器430依據(jù)碼寄存器490的操作碼及來源寄存器420的輸入?yún)?shù)產(chǎn)生,也可由地址產(chǎn)生器430依據(jù)計算機指令被譯碼成的微操作的操作碼類型和操作數(shù)產(chǎn)生。地址產(chǎn)生器430可同時產(chǎn)生地址Addr0和地址Addr1,也可以先后產(chǎn)生地址Addr0和地址Addr1。在階段I,地址產(chǎn)生器430將地址Addr0傳送至只讀存儲器控制器440。只讀存儲器控制器440將地址Addr0傳送給只讀存儲器450。在階段II,地址產(chǎn)生器430將地址Addr1傳送至只讀存儲器控制器440。只讀存儲器控制器440將地址Addr1傳送給只讀存儲器450,接收從只讀存儲器450查找到的地址Addr0所對應(yīng)的近似值Data0并輸出近似值Data0至解多工器455,以及傳送信息給控制器410用以通知地址Addr0的近似值Data0已輸出。通過查找只讀存儲器450中的查找表451中的數(shù)據(jù)得到地址Addr0所對應(yīng)的近似值Data0??刂破?10控制解多工器455將只讀存儲器控制器440連接至結(jié)果寄存器470用以鎖存近似值Data0。在階段III,只讀存儲器控制器440從只讀存儲器450接收地址Addr1所對應(yīng)的近似值Data1并輸出近似值Data1至解多工器455,以及傳送信息給控制器410用以通知地址Addr1所對應(yīng)的近似值Data1已輸出。通過查找只讀存儲器450中的查找表451中的數(shù)據(jù)得到地址Addr1所對應(yīng)的近似值Data1??刂破?10控制解多工器455將只讀存儲器控制器440連接至結(jié)果產(chǎn)生器460并指示結(jié)果產(chǎn)生器460產(chǎn)生計算結(jié)果。結(jié)果產(chǎn)生器460合并結(jié)果寄存器470的近似值Data0及從只讀存儲器控制器440接收到的近似值Data1,用以產(chǎn)生128比特的計算結(jié)果,以及儲存計算結(jié)果至目的地寄存器480。在一實施例中,目的地寄存器480的比特0至比特63儲存第一雙精度浮點數(shù)的查表結(jié)果,以及比特64至比特127儲存第二雙精度浮點數(shù)的查表結(jié)果。
圖6為依據(jù)本發(fā)明實施例的執(zhí)行計算機指令的流程圖。在步驟S600,譯碼計算機指令產(chǎn)生包括操作碼和緊縮操作數(shù)的微操作所述緊縮操作數(shù)包括該計算機指令對應(yīng)的全部n個輸入?yún)?shù)。在一實施例中,所述步驟S600所產(chǎn)生的操作碼和緊縮操作數(shù)分別存儲于碼寄存器290或490以及來源寄存器220或420。在步驟S610,依據(jù)所述操作碼及緊縮操作數(shù)產(chǎn)生對應(yīng)前述n個輸入?yún)?shù)的n個地址。在一實施例中,前述操作碼及緊縮操作數(shù)分別來自碼寄存器290或490以及來源寄存器220或420。在一實施例中,前述n個地址的每一個地址包含區(qū)段編號加上偏移量詳細(xì)來說,針對每一輸入?yún)?shù),依據(jù)碼寄存器290或490的操作碼決定地址的區(qū)段編號,以及依據(jù)來源寄存器220或420的輸入?yún)?shù)決定地址的偏移量。在步驟S620,從查找表251或451讀取n個地址所對應(yīng)的n個近似值。在一實施例中,近似值可為相應(yīng)于輸入?yún)?shù)的數(shù)值的倒數(shù)近似值或數(shù)值平方的倒數(shù)近似值。近似值可為單精度浮點數(shù)或雙精度浮點數(shù)。在一實施例中,近似值以并行的方式輸出至結(jié)果產(chǎn)生器260或460,具體而言,查表所得的多個近似值從只讀存儲器250或450或者查找表251或451經(jīng)由只讀存儲器控制器240或440并行輸出至結(jié)果寄存器(例如結(jié)果寄存器270a、270b、270c或470)以及結(jié)果產(chǎn)生器(例如結(jié)果產(chǎn)生器260或460)。在一實施例中,近似值以串行的方式輸出至結(jié)果產(chǎn)生器260或460,具體而言,查表所得的每個近似值從只讀存儲器250或450或者查找表251或451經(jīng)由只讀存儲器控制器240或440輸出至解多工器(例如解多工器255或455),再由控制器410控制解多工器(例如解多工器255或455)分別輸出至結(jié)果寄存器(如結(jié)果寄存器270a、270b、270c或470)以及結(jié)果產(chǎn)生器(例如結(jié)果產(chǎn)生器260或460)。在步驟630,合并n個近似值以產(chǎn)生結(jié)果。在一實施例中,產(chǎn)生的結(jié)果被鎖存至一寄存器,例如目的地寄存器280或480。在一實施例中,n為4,操作碼指示計算n個數(shù)值的倒數(shù)或n個數(shù)值平方根的倒數(shù)近似值,近似值可能為單精度浮點數(shù)。在一實施例中,n為2,操作碼指示計算n個數(shù)值的倒數(shù)或n個數(shù)值平方根的倒數(shù),近似值可能為雙精度浮點數(shù)。
本發(fā)明所披露的執(zhí)行計算機指令的裝置和方法可有效地提高指令的執(zhí)行效率,在現(xiàn)有技術(shù)中,包含多個輸入?yún)?shù)的計算機指令會被譯碼為多條微指令,例如,當(dāng)輸入?yún)?shù)為四個單精度浮點數(shù),計算機指令會被譯碼為三條微操作,至少經(jīng)過七個階段(或時鐘周期)才可完成四個單精度浮點數(shù)的倒數(shù)近似值或平方根的倒數(shù)近似值的查表操作,并返回結(jié)果,此外,在亂序執(zhí)行的微處理器中,執(zhí)行單元可能無法連續(xù)執(zhí)行上述三條微操作,可能被其他的微操作插入,導(dǎo)致執(zhí)行該計算機指令所需的時間再被延長。而在本發(fā)明中,包含多個輸入?yún)?shù)的計算機指令直接經(jīng)譯碼單元被譯碼為單一一條包含緊縮操作數(shù)的微指令,若輸入?yún)?shù)為四個單精度浮點數(shù),緊縮操作數(shù)包含四個單精度浮點數(shù),執(zhí)行單元經(jīng)過五個階段即可完成四個單精度浮點數(shù)的倒數(shù)近似值或平方根的倒數(shù)近似值的查表操作,并返回結(jié)果,因此大大提高了此種計算機指令的執(zhí)行效率。雖然圖2及圖4中包含了以上描述的組件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加組件,以達成更佳的技術(shù)效果。雖然圖6的處理步驟采用特定的順序來執(zhí)行,但是在不違反發(fā)明精神的情況下,本領(lǐng)域技術(shù)人員可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。此外,圖6的處理步驟可采用諸如圖2或圖4所示的硬件裝置來實現(xiàn),也可以采用軟件方法來實現(xiàn)。
雖然本發(fā)明使用以上實施例進行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了本領(lǐng)域技術(shù)人員顯而易見的修改與相似設(shè)置。所以,申請權(quán)利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設(shè)置。