亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

映射電路和方法

文檔序號:6653361閱讀:265來源:國知局
專利名稱:映射電路和方法
技術領域
本發(fā)明涉及用于完成一個從一個輸入值到一個輸出值的快速映射的電路和方法。本發(fā)明能夠應用于一臺微處理機的諸流水線循環(huán)中的寄存器更名。
在高性能的計算中,在諸軟件-流水線循環(huán)的情況下出現(xiàn)對循環(huán)寄存器更名的需要,其中通常需要目標機(例如微處理機)有一個高的指令執(zhí)行速率。執(zhí)行時間常常受到在應用程序內的諸循環(huán)結構的控制。為了允許有一個高的指令執(zhí)行速率,一臺微處理機可以包括多個單獨的執(zhí)行裝置,每個單獨的執(zhí)行裝置都能夠與諸其它的執(zhí)行裝置執(zhí)行諸指令平行地執(zhí)行一個或多個指令。
能夠用這樣的多個執(zhí)行單元提供一個由多個單獨的階段組成的所謂的軟件流水線。每個軟件流水線階段與諸特定的執(zhí)行單元都沒有固定的物理的對應關系。寧可,當對在一個應用程序內的一個循環(huán)結構進行編譯時,根據(jù)一個軟件流水線調度,對形成循環(huán)的一次單獨迭代的諸機器指令進行調度,以便由諸不同的執(zhí)行單元來執(zhí)行這些指令。將這個調度分成諸連續(xù)的階段,并用這樣一種允許諸不同的執(zhí)行單元以重疊的方式執(zhí)行多個指令的方法來調度諸指令,諸不同的執(zhí)行單元有一個在諸連續(xù)的迭代的諸初始時間之間的選出的循環(huán)初始間隔。這樣,當一個迭代i的一個第一個階段終止并且該迭代進入一個第二個階段時,在迭代i+1的一個第一個階段中開始執(zhí)行下一個迭代i+1。于是,與在迭代i的第二個階段中諸指令的執(zhí)行平行地執(zhí)行在迭代i+1的第一個階段中的諸指令。
在這些軟件流水線循環(huán)中典型地在每個時刻在一個部分完成的狀態(tài)中有一個循環(huán)的若干次迭代。所以,可以有在循環(huán)中計算的每個值的若干個紙拷貝。為了在這些值之間進行區(qū)別和為了關于當前的迭代識別它們,要求保存在寄存器中的每個值的名字必須當循環(huán)執(zhí)行期間在諸明確定義的時刻發(fā)生改變。編譯器知道這些更名點,編譯器也確定在每個指令內需要的寄存器名字,以便存取與在其中它被計算的迭代有關的每個值。
依據(jù)在每個匯編代碼指令內的諸寄存器標識符,一個保存在一個寄存器中的值的名字對于程序員或編譯器是已知的。靜態(tài)寄存器更名的目的是為了定義一個方案,從而根據(jù)程序員或編譯器能夠預測的一個翻譯方案在運行時間中將這些標識符翻譯成諸實際的寄存器號碼。
例如,如果在迭代1中將一個值X分配給寄存器r1,則一個典型的更名方案將使那個值可以被在迭代2中的寄存器r2,在迭代3中的寄存器r3等利用。編譯器或程序員的責任是以一種保證循環(huán)能正確工作的方式將諸寄存器標識符分配給每一個值。
在諸軟件流水線循環(huán)中通常有諸循環(huán)變量值,即必須在循環(huán)的每個不同的迭代中重新計算的諸表達式,它們必須在流水線的諸不同的指令之間進行傳達。為了處理這樣一些循環(huán)變量值可以將它們存儲在一個所謂的旋轉寄存器文件中。在這種情形中,給每個循環(huán)變量值分配一個在旋轉寄存器文件內的邏輯寄存器號碼,并且這個邏輯寄存器號碼從一次迭代到下一次迭代是不變的。在旋轉寄存器文件中將每個邏輯寄存器號碼映射到在寄存器文件內的一個物理寄存器,每次開始一個新的迭代,即,每次關閉一條流水線邊界時,都要旋轉這個映射。因此,在諸不同的迭代中的諸對應的指令都能夠涉及同一個邏輯寄存器號碼,使諸被編譯的指令變得簡單,同時避免由一次迭代產生的一個值被一次不同的迭代的一個以后執(zhí)行的指令所重寫。
有了在工作中的這樣一個寄存器更名方案,在處理機能夠執(zhí)行一個指令前,對于在一個軟件流水線循環(huán)內的每個寄存器存取,首先必須完成一個寄存器映射過程,將諸寄存器標識符翻譯成諸實際的寄存器號碼。這個映射是在運行時間中完成的,因此對在一個時間極其重要的活動中的處理機提出諸額外的時間要求。所以,我們希望完成這個映射所需的時間盡可能地短。
根據(jù)本發(fā)明的一個第一個方面,我們?yōu)榱藢⒃谥T允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,提供映射電路,所述的映射電路包括第一個候選輸出值產生裝置,將它連接起來用于接收所述的輸入值,并且它可以進行工作以便產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;第二個候選輸出值產生裝置,將它連接起來用于接收所述的輸入值,并且當所述的第一個候選輸出值產生裝置進行工作產生所述的第一個候選輸出值時,它可以進行工作以便產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;范圍內值確定裝置,用于確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和輸出值選擇裝置,用于選擇所述的第一和第二個候選輸出值中的被確定是在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
根據(jù)本發(fā)明的一個第二個方面,我們?yōu)榱藢⒃谥T允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,提供映射電路,所述的映射電路包括第一個候選輸出值產生裝置,將它連接起來用于接收所述的輸入值,并且它可以進行工作以便產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;第二個候選輸出值產生裝置,將它連接起來用于接收所述的輸入值,并且它可以進行工作以便產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;范圍內值確定裝置,它可以進行工作以便當所述的第一和第二個候選值產生裝置兩者或其中的一個進行工作,以便產生所述的第一和第二個候選輸出值時,確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和輸出值選擇裝置,用于選擇所述的第一和第二個候選輸出值中的被確定是在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
根據(jù)本發(fā)明的一個第三個方面,我們?yōu)榱藢⒃谥T允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,提供一個映射方法,所述的映射方法包括下列諸步驟產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;當產生所述的第一個候選輸出值時,產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和選擇所述的第一和第二個候選輸出值中的被確定是在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
根據(jù)本發(fā)明的一個第四個方面,我們?yōu)榱藢⒃谥T允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,提供一個映射方法,所述的映射方法包括下列諸步驟產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值;第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;當產生所述的第一和第二個候選輸出值兩者或其中的一個時,確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和選擇所述的第一和第二個候選輸出值中的被確定是在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
現(xiàn)在我們通過例子參照所附的諸圖,其中

圖1表示一臺處理機的諸部分,在該處理機中能夠應用體現(xiàn)本發(fā)明的映射電路;圖2是一個對于一個簡單的指令循環(huán)的一個作為例子的符號數(shù)據(jù)流圖的說明;圖3表示一個與圖2的符號數(shù)據(jù)流圖對應的內部編譯器的樹形結構;圖4是一個表示一個服從模調度約束條件的指令調度的表;圖5表示一個作為例子的包含諸靜態(tài)和動態(tài)編址區(qū)域的寄存器文件;圖6A和6B表示一個說明對于一個循環(huán)的若干次迭代在諸虛擬,邏輯和物理寄存器號碼之間的關系的表;圖7表示對于一個循環(huán)的若干次迭代一個作為例子的諸編譯指令的序列;圖8表示在諸邏輯寄存器到物理寄存器的運行時間映射后圖7的諸序列的一個例子;圖9是一個說明諸邏輯寄存器號碼和物理寄存器號碼之間的映射的圖;圖10表示一個體現(xiàn)本發(fā)明的映射電路的諸部分的方框圖;圖11是一個用于說明一個體現(xiàn)本發(fā)明的映射方法的流程圖;圖12表示根據(jù)本發(fā)明的一個優(yōu)先實施例的映射電路。
圖1表示一臺可以應用本發(fā)明的一個實施例的處理機的諸部分。在這個例子中,處理機是一臺非常長的指令字(VLIW)處理機,它有支持軟件流水線和循環(huán)寄存器更名的硬件。處理機1包括一個指令發(fā)出裝置10,一個調度存儲裝置12,各個第一,第二和第三個執(zhí)行裝置14,16和18,及一個寄存器文件20。指令發(fā)出裝置10有三個發(fā)出槽rs1,rs2和rs3,它們分別與第一,第二和第三個執(zhí)行裝置14,16和18連接。一個第一條母線22將所有的三個執(zhí)行裝置14,16和18連接到寄存器文件20。一個第二條母線24將第一和第二個執(zhí)行裝置14和16(但是在這個例子中沒有第三個執(zhí)行裝置18)連接到存儲器26,在這個例子中存儲器26是一個外部隨機存取存儲器(RAM)裝置。選擇地存儲器26也可以是處理機1內部的一個RAM。
盡管圖1表示母線22和24分擔著將諸執(zhí)行裝置連接到寄存器文件20和存儲器26的功能,但是作為另一種選擇我們希望每一個執(zhí)行裝置都能夠有它自己的獨立的到寄存器文件和存儲器的連接。
處理機1完成一系列的處理循環(huán)。在每一個處理循環(huán)中指令發(fā)出裝置10能夠在諸發(fā)出槽rs1到rs3中的每一個上發(fā)出一個指令。根據(jù)存儲在調度存儲裝置12中的一個軟件流水線調度(如下面描述的)發(fā)出諸指令。
諸對應的執(zhí)行裝置14,16和18執(zhí)行由指令發(fā)出裝置10在不同的發(fā)出槽發(fā)出的諸指令。在這個例子中,諸執(zhí)行裝置中的每一個都能夠同時執(zhí)行多于一個的指令,使得在完成執(zhí)行一個發(fā)給有關的執(zhí)行裝置的以前的指令前就能夠開始執(zhí)行一個新的指令。
為了執(zhí)行諸指令,每個執(zhí)行裝置14,16和18都已經通過第一條母線22可訪問寄存器文件20。所以諸執(zhí)行裝置14,16和18能夠讀出和寫出存儲在包含在寄存器文件20中的諸寄存器中的諸值。又,第一和第二個執(zhí)行裝置14和16都已經通過第二條母線24接到外部存儲器26,以便也能夠讀出和寫出存儲在諸外部存儲器26的諸存儲位置中的諸值。在這個例子中,第三個執(zhí)行裝置18不接到外部存儲器26,所以只能夠操作包含在寄存器文件20中諸值。
我們能夠通過考慮下面的簡單循環(huán)并參照圖1的處理機說明寄存器更名的概念,該循環(huán)是用C程序語言寫成的,通??梢栽谠S多線性代數(shù)信息包中找到for(I=0;I<m;i++)dy(i)=dy(i)+da×dx(i)在這個循環(huán)中,一個數(shù)組dy的每個元素dy(i)(i=0,1…m-1)都增加一個常數(shù)值da與另一個數(shù)組dx的對應的元素dx(i)的乘積。
對于一臺有支持軟件流水線和循環(huán)寄存器更名的硬件的非常長的指令字(VLIW)處理機,編譯這個循環(huán)的過程典型地從產生一個如圖2所示的符號數(shù)據(jù)流圖開始。
符號數(shù)據(jù)流圖指出當循環(huán)期間如何利用數(shù)據(jù)和作用于那個數(shù)據(jù)的諸算符,以及它們對于強調在一個循環(huán)內的諸時間依賴性和對于確定任何能夠作出的用來增加一個循環(huán)的時間效率的時間最佳化如何有用。
例如,在節(jié)點D5中的“add(加法)”運算首先要求接入dy(i)的值(節(jié)點D4)和接入da和dx(i)的諸值(分別為節(jié)點D1和D2)并將它們相乘(節(jié)點D3)。顯然,諸運算(D1,D2,D3)能在同一時間進行,或與運算D4重疊進行,使得運算D5需要的任何值都在那個運算開始前為使用作好了準備。然后將在節(jié)點D5中的“add”運算的結果存儲在節(jié)點D6的dy(i)中。諸節(jié)點D7到D9在每次迭代結束時使數(shù)組變量“i”增加1。
將諸數(shù)組dx和dy存儲在外部存儲器26(圖1)的存儲位置中,所以在圖2的數(shù)據(jù)流圖中對它們的引用必須變換成諸對應的存儲接入操作。這樣,為了指示在存儲著數(shù)組的諸元素的外部存儲器26中的諸存儲位置,每個數(shù)組dx和dy至少需要一個指針。將每個這樣的指針保存在寄存器文件20的一個寄存器中。
雖然可以用一個類似的指示它在存儲器中的位置的指針處理常數(shù)值da,但是當該值是循環(huán)變量時,更方便和更快速的是當執(zhí)行該循環(huán)時將該值直接保存在寄存器文件20的它自己的寄存器中。
在編譯在上述的代碼框中所示的作為例子的循環(huán)的過程中下一個步驟是完成為了將圖2所示的數(shù)據(jù)流圖變換成一個更接近諸實際的機器指令的形式的許多不同的最佳化操作。在這個過程中,編譯器典型地確定在循環(huán)內什么值改變了和什么值保持不變。例如,在這個情形中,在循環(huán)期間“da”的值完全不變。將諸數(shù)組引用變換成諸指針入口,如果目標機器支持這樣一個特點,則用諸自動增量的尋址模式。
得到的樹形結構的內部編譯器的體現(xiàn)如圖3所示。所示的體現(xiàn)指出諸單獨的機器運算T1到T6和它們的諸依賴關系(如諸箭頭所示),一個附加在每個箭頭上的整數(shù)表示為了完成箭頭從它指出的運算所需的處理機循環(huán)的數(shù)目。我們用了諸寄存器r0到r3以及諸虛擬寄存器v0到v3。
下面列舉了對圖2所示的諸機器運算中的每一個的意義的一個簡短說明。
ld A,B; 將存儲位置B的諸內容加載到寄存器A。
mul A,B,C;將寄存器B的諸內容與寄存器C的諸內容乘起來,并將結果存儲在寄存器A中。
add A,B,C;將寄存器B的諸內容與寄存器C的諸內容加起來,并將結果存儲在寄存器A中。
st A,B;將寄存器A的諸內容存儲在存儲位置B中。
其中,在圖3中將一個寄存器表示在諸括號中,它是由存儲在所用的那個寄存器中的地址指出的存儲位置的諸內容。在一個寄存器名字后的符號“++”意味著那個寄存器的諸內容在它已經被用于一個特定的運算中后自動地增加1。
圖3所示的諸指令T1到T6與圖2所示的符號數(shù)據(jù)流圖的諸對應的節(jié)點D1到D6緊密相關。將諸虛擬寄存器號碼v0到v3分配給諸中間值,而將諸寄存器號碼r0到r3分配給其它的值。諸虛擬寄存器號碼v0到v3不是諸最后的寄存器分配,而只是對于圖2所示的數(shù)據(jù)流圖中的諸箭頭的諸暫時的標記(如將在下面較詳細地說明的那樣)。
下面列出一個對于圖3所示的每個寄存器標識符的使用總結。
r0對當前的dx的指針r1dar2對當前的dy的指針r3對當前的dy的指針v0對dx的暫時的標記v1對da+dx的暫時的標記v2對dy的暫時的標記v3dy+da+dx的暫時的標記例如,在指令T2中將由寄存器r0指示的存儲位置的諸內容加載到寄存器v0上,以后使存儲在寄存器r0中的值(指針)增加1。因為存儲在寄存器r0中的值是一個對當前的dx的指針,所以這代表一個到值dx(i)的入口,值dx(i)與圖2的節(jié)點D2對應。因為已經將數(shù)組引用變換成諸指針入口,在代碼框的行1中變量i的增加是通過在指令T2中增加對dx的指針和在指令T4和T6中增加對dy的兩個指針來實現(xiàn)的。
在任何一對指令之間的最長的路徑定義為了執(zhí)行循環(huán)的一次迭代所需的最小時間量。這被稱為“調度長度”并形式上被定義為沿著最長的(關鍵的)路徑的諸等待時間之和加1。所以,在這個例子中,調度長度等于10個循環(huán)。一個在一個循環(huán)中自動增加1的寄存器已為在下一個循環(huán)中再次使用作好了準備。
這里描述的編譯的所有以后的階段都是專門用于軟件流水線的。軟件流水線的第一個階段確定循環(huán)初始間隔(簡單地稱為“Ⅱ”),它是循環(huán)的諸連續(xù)的迭代的初始時刻之間的間隔。和要執(zhí)行的指令的數(shù)目比較循環(huán)初始間隔與諸可利用的資源有關,也與在數(shù)據(jù)流圖中存在的任何循環(huán)有關。
例如,圖1的處理機有三個指令發(fā)出槽IS1到IS3和三個執(zhí)行裝置14,16和18,其中只有第一和第二個執(zhí)行裝置14和16能夠接入外部存儲器26。也可以有這樣一種情形,在該情形中從諸執(zhí)行裝置為了執(zhí)行諸不同的任務單獨地被最佳化的意義上來說,諸執(zhí)行裝置可以是諸“被特殊化了”裝置。例如,可以是只有某些執(zhí)行裝置能夠執(zhí)行某些類形的指令。
在現(xiàn)在這個例子中,我們假定考慮諸可利用的資源,將循環(huán)初始間隔Ⅱ確定為兩個處理機循環(huán)。我們還假定只有第三個執(zhí)行裝置18裝備有為執(zhí)行諸加法和乘法指令所需的諸資源(例如一個算術和邏輯裝置ALU)。
下一步是產生一個服從一個所謂的模調度約束條件的調度。一個作為例子的調度如圖4所示。在圖4的調度中,第一個發(fā)出槽只處理諸“l(fā)d”指令,第二個發(fā)出槽只處理諸“st”指令,和第三個發(fā)出槽處理諸算術算符“mul”(乘法)和“add”(加法)。
模調度約束條件規(guī)定,對于每個發(fā)出槽,當和只有當在時刻j沒有指令被調度,使得j模Ⅱ等于i時,才能在時刻i調度一個指令。這保證隨著一個新的迭代開始每一個Ⅱ循環(huán),在一個特定的發(fā)出槽的一個特定的循環(huán)中要求發(fā)出多于一個的指令是不可能的。
模調度表指出組成循環(huán)的一次迭代的5個指令T2到T6如何被調度。特別是,表的第三到第五列表示當發(fā)出每個指令時在調度中的循環(huán),在其中發(fā)生循環(huán)的軟件流水線階段,和發(fā)出指令的發(fā)出槽(即執(zhí)行該指令的執(zhí)行裝置)。最后四列表示諸邏寄存器號碼,而打上陰影線的部分用于說明諸值的壽命,如后面將參照圖6到8詳細說明的那樣。
如表所示,因為模調度約束條件,沒有兩個指令能夠被調度為在同一個發(fā)出槽中分開的兩個循環(huán)的一個倍數(shù)。于是,一旦第一個加載指令T2已經被調度以便從循環(huán)0中的發(fā)出槽1發(fā)出,則下一個指令,即在循環(huán)2中發(fā)出的乘法指令T3必須被調度到一個與發(fā)出槽1不同的發(fā)出槽,這個情形中是發(fā)出槽3。選擇發(fā)出槽3是因為在這個例子中只有第三個執(zhí)行裝置18能夠執(zhí)行諸乘法指令。類似地,一旦第二個加載指令T4已經被調度以便在循環(huán)3中從發(fā)出槽1發(fā)出,則下一個指令,即在循環(huán)5中被調度發(fā)出的加法指令T5必須從一個與發(fā)出槽1不同的發(fā)出槽發(fā)出,在這個情形中再次是發(fā)出槽3。要求在循環(huán)9中發(fā)出作為存儲指令T6的第五個指令。因為模約束條件,這既不能在發(fā)出槽1也不能在發(fā)出槽3發(fā)出,因此必須將它分配給發(fā)出槽2。
我們應該懂得在圖4表中的調度只與一次迭代有關。根據(jù)同一個調度,開始每個Ⅱ循環(huán)的另一次迭代。于是,當現(xiàn)在的迭代處在階段1時,立即在前面的迭代將處在階段2,在階段2的迭代前面的迭代將處在階段3,在階段3的迭代前面的迭代將處在階段4,和在階段4的迭代前面的迭代將處在階段5。調度諸指令以便在所有的迭代中都由諸相同的發(fā)出槽發(fā)出,在每個Ⅱ循環(huán)中每個發(fā)出槽發(fā)出相同的指令。
如果目標機器有一組旋轉(邏輯)寄存器,稱作S0,S1,S2直到Sr,則如四個最右邊列所示可以分配這些寄存器代替諸虛擬寄存器。從圖4顯然可見分配給v0的寄存器從階段1中的s0改變到階段2中的s1。這是因為當每次越過一條流水線邊界和開始一個新迭代時,更名的機理有效地使諸寄存器名字位移一個名字。這允許在迭代i中計算的v0的值與在諸迭代i+1和i-1中計算的v0的值區(qū)別開來。
這對接入諸寄存器使諸寄存器位移到諸有規(guī)則的間隔的硬件提出一個要求。如果在一個寄存器名字和諸寄存器內容之間的聯(lián)編是固定的,則只能夠通過對于在移位寄存器文件范圍中的所有i,將si物理地復制到si+1來實現(xiàn)位移。這將是非常昂貴的,因此取而代之的是,當需要一個位移運算時能夠使諸寄存器名字到諸寄存器位置的聯(lián)編進行旋轉。所以上面提到的諸寄存器s0到sr不是諸最后的物理寄存器號碼,而是諸邏輯寄存器號碼,在運行時間中諸邏輯寄存器號碼被變換(映射)到諸物理寄存器號碼。
許多軟件流水線循環(huán)也需要可以用于諸寄存器的許多循環(huán)不變值。一個循環(huán)不變值是這樣一個值,它用于循環(huán)內,但是在循環(huán)內永遠不會被重新計算。一個例子是在上面的作為例子的循環(huán)中的值“da”。必須將這樣一些值存儲在當循環(huán)執(zhí)行期間不經歷寄存器更名的諸寄存器中。在這個例子中,對諸數(shù)組dx和dy的諸指針,盡管不是諸循環(huán)不變值,但也能夠存儲在諸靜態(tài)命名寄存器中。因此,一個用于這個上下文的寄存器文件將需要一個可更名部分以便保存諸循環(huán)變化值,和一個靜態(tài)命名部分用于保持諸循環(huán)不變值和諸其它適當?shù)闹怠?br> 這樣一個寄存器文件的一個例子如圖5所示。
如圖5所示的作為例子的寄存器文件120由N個寄存器組成。在這些寄存器中,編號較低的K個寄存器是靜態(tài)命名的,而編號較高的N-K個寄存器是動態(tài)命名的(可更名的)。諸靜態(tài)命名寄存器構成寄存器文件的一個靜態(tài)命名部分120S,而諸可更名寄存器構成寄存器文件的一個可更名部分120R。
每個指令用一個邏輯寄存器號碼規(guī)定它的諸寄存器操作數(shù)。這是一個在范圍0到N-1中的m位的二進制整數(shù),其中m=[log2(N)]。圖5的寄存器文件需要映射電路,該映射電路完成從諸邏輯寄存器標識符(諸號碼)到諸物理寄存器標識符(諸地址)的雙射映射。每個物理寄存器地址P也是一個在范圍0到N-1中的m位的二進制整數(shù),直接標識諸實際的硬件寄存器中的一個。
如果一個指令規(guī)定一個邏輯寄存器號碼R作為它的諸操作數(shù)中的一個,R包含在范圍0到K-1中,則物理寄存器號碼與那個操作數(shù)的邏輯寄存器號碼相同。然而,如果R是在范圍K到N-1中,則那個操作數(shù)的邏輯寄存器號碼由P給定,使得P=K+|R-K+OFFSET|N-K(1)在這個標記中,|y|x表示y模x。OFFSET是一個映射偏移值(整數(shù)),無論什么時候當諸寄存器更名時,它自動增加(或減少)1。
現(xiàn)在,我們參照圖6A和6B所示的表較詳細地說明這個從邏輯寄存器號碼R到物理寄存器號碼的P的映射。圖6B的表是圖6A所示的表的繼續(xù)。這個表指出了對于與上面描述的同一個例子在運算中的寄存器更名方案,該方案有圖6A所示的最初兩次迭代和圖6B所示的下面兩次迭代。
在這個例子中,我們假定K的值等于4(因為有4個靜態(tài)命名寄存器r0到r3)。我們假定N的值足夠大,它不會影響現(xiàn)在這個例子的進程。將映射偏移值OFFSET初始化到值6,并且每次越過一條流水線邊界時減少1,如圖6A和6B的第二列所示。
在圖6A的迭代0的第一列中所示的諸指令的順序與如圖4所示的被分成三列(發(fā)出槽1到3)的諸指令的順序相同。將諸邏輯寄存器號碼r0到r3分配給諸靜態(tài)命名寄存器。將諸暫時的標號v0到v3給予諸循環(huán)變化寄存器。將同一組暫時的標號用于每一次的迭代,使得每次迭代的第一列表示被迭代間隔Ⅱ(在這個情形中它是兩個循環(huán))位移的諸指令的同一個順序。
在編譯時,將諸暫時的虛擬寄存器號碼v0到v3變換成諸邏輯寄存器號碼,如圖6A和6B中每次迭代內頭上冠有v0到v3的諸對應的列中所示。例如,用編譯器給在迭代0的循環(huán)0和1中的虛擬寄存器號碼v0分配邏輯寄存器號碼r4。在運行時間中,用上面的從R映射到P的公式(1)將這個邏輯寄存器號碼變換成一個物理寄存器號碼。在這個情形中,R=4,K=4和“OFFSET”=6,所以被映射的物理寄存器號碼將等于10。所以在這個例子中,在運行時間中,將邏輯寄存器號碼r4映射到物理寄存器號碼p10。
當越過一條流水線邊界時,為了在越過邊界后識別同一個寄存器,編譯器必須用一個邏輯寄存器號碼,它與越過邊界前使用的邏輯寄存器號碼比較增加了1,使得在運行時間中,當在每條流水線邊界上映射也被旋轉時,正確的物理寄存器將從一個階段到另一個階段被訪問。例如,考慮在迭代0中的虛擬寄存器號碼v0,當從循環(huán)1到循環(huán)2越過一條流水線邊界時,邏輯寄存器號碼從r4增加到r5,所以考慮到OFFSET已經減少到5這個事實,在第二個階段訪問同一個物理寄存器號碼(p10)。
圖7表示對于圖6A和6B所示的迭代0到3中的每一個的諸指令的順序由編譯器分配諸邏輯寄存器號碼的結果。圖8表示在運行時間中完成的將諸邏輯寄存器號碼映射到諸物理寄存器號碼的寄存器映射的效果。
通過考慮分配給在圖6A和6B的表中加上標記v0到v3的諸變量中的每一個的諸物理寄存器號碼,我們能夠看到因為分配給一個變量的物理寄存器從一次迭代到下一次迭代是不同的,所以在一次迭代中的那個變量的諸值能夠與一個相鄰的迭代中的一個變量的值區(qū)別開來。從而,保證了流水線循環(huán)的正確工作。
有時,用上面提到的為了從邏輯寄存器號碼R映射到物理寄存器號碼P的映射公式(1),當更名諸旋轉的寄存器時,OFFSET可以增加或減少。如果增加,則每次OFFSET增加時一個特定的物理寄存器的邏輯寄存器號碼減少1。類似地,如果OFFSET減少,則邏輯寄存器號碼增加。
我們在圖9中圖示地說明從諸邏輯寄存器標識符到諸物理寄存器標識符的映射。有一個從在范圍0到ls-1中的諸邏輯寄存器號碼到在從0到K-1,因而K≥ls的靜態(tài)命名空間中的諸物理寄存器號碼的直接映射。如果K=ls,則從K到N-1的可更名空間(圖5中的120R)是與靜態(tài)命名空間(圖5中的120S)鄰接的,通過使用在寄存器文件中的諸物理寄存器這可能是有效的。然而,通過令K>ls能夠將可更名空間設置得與靜態(tài)命名空間分開。在范圍ls到le的諸邏輯寄存器號碼映射到在K和N-1之間的可更名空間中的一個同等大小的區(qū)域。根據(jù)諸映射偏移值OFFSET,改變這個區(qū)域在可更名空間內的位置。
在映射公式(1)中的P的計算是在運行時間中進行的并且因為在能夠接入每個需要的寄存器前它需要許多整數(shù)計算,所以它是在一臺高性能處理機的流水線內的一個時間非常關鍵的活動。
特別是映射公式(1)涉及一個很花時間的模操作。我們有意用體現(xiàn)本發(fā)明的映射電路來實現(xiàn)從諸邏輯寄存器號碼到諸物理寄存器號碼的映射的一個較快速的完成,特別是通過避免了對計算一個模操作的需要能夠實現(xiàn)較快速的映射。
圖10表示一個體現(xiàn)本發(fā)明的映射電路的諸部分。映射電路40包括各個第一和第二個候選輸出值產生裝置42和44,一個范圍內值確定裝置46和一個輸出值選擇裝置48。任選地,也可以提供一個第三個候選輸出值產生裝置50。
將第一和第二個候選輸出值產生裝置42和44每個都連接起來,以便接收一個輸入值r。第一候選輸出值產生裝置42產生一個第一候選輸出值C1,它與接收的輸入值r相差一個第一個偏移值x。第二個候選輸出值產生裝置44產生一個第二個候選輸出值C2,它與接收的輸入值r相差一個第二個偏移值y。例如,C1=x+r和C2=y+r。另一種選擇是C1=x-r和C2=y-r。
在第一和第二個偏移值之間的一個差y-x等于在各個輸出范圍的極限值K和N之間的一個差,這些極限值定義映射電路的諸允許的輸出值p的一個預先選擇的范圍(例如從K到N-1)的諸極限。進一步,第一和第二個偏移值x和y是這樣的值,對于在諸允許的輸入值的一個預先選擇的范圍內的任何輸入值(ls≤r≤le),第一和第二個候選輸出值C1和C2中的一個是在一個預先選擇的輸出值范圍(從K到N-1)內,而這兩個值C1和C2中的另一個是在那個范圍外。
范圍內值確定裝置46確定第一和第二個候選輸出值C1和C2中的哪一個在預先選擇的輸出值范圍內。然后,輸出值選擇裝置48選擇第一和第二個候選輸出值C1和C2中的已被確定在輸出值范圍內的那一個作為與接收的輸入值r對應的輸出值p。例如,范圍內值確定裝置46將一個選擇信號S加到輸出值選擇裝置48,指出由那個裝置作出的選擇。
在本發(fā)明的一個第一個方面中,當?shù)谝缓蜻x輸出值產生裝置42進行工作產生第一個候選輸出值C1時,第二個候選輸出值產生裝置44進行工作產生第二個候選輸出值C2。這使第一和第二個候選輸出值C1和C2可用于由輸出值選擇裝置48進行的選擇,這樣進行的選擇要比如果,例如,由單個候選輸出值產生裝置順序地產生這些值快。在本發(fā)明的這個方面中,范圍內值確定裝置46可以考察產生的候選輸出值C1和C2直接確定它們中的哪一個在范圍內。
在本發(fā)明的一個第二個方面中,當?shù)谝缓偷诙€候選輸出值產生裝置42和44兩者或其中的一個進行工作產生第一和第二個候選輸出值C1和C2時,范圍內值確定裝置46進行工作確定這些候選輸出值C1和C2中的哪一個將在范圍內。在這個情形中,例如,可以將范圍內值確定裝置46連接起來,以便接收輸入值r。范圍內值確定裝置46也可以用一個范圍內偏移值w,該范圍內偏移值w與第一和第二個偏移值x和y中的每一個都有一個已知的關系(例如與第一和第二個偏移值x和y中的每一個都有一個固定的差)。當諸候選輸出值產生裝置42和44產生諸候選輸出值C1和C2時,用這個范圍內偏移值w和輸入值r作出與候選輸出值C1和C2無關的在范圍內的確定。例如,可以通過將范圍內偏移值w和輸入值r組合起來推導出選擇信號S的全部或一部分。在本發(fā)明的第二個方面中,因為當?shù)谝缓偷诙€候選輸出值產生裝置42和44兩者或其中的一個工作時,范圍內值確定裝置46工作,所以不一定要將在范圍內的確定推遲到諸候選輸出值C1和C2被那些裝置實際產生出來為止。在本發(fā)明的第二個方面中,第一和第二個候選輸出值產生裝置42和44不一定要同時工作。
優(yōu)先地,第一和第二個候選輸出值產生裝置42和44與范圍內值確定裝置46都是同時工作的,使得第一和第二個候選輸出值產生裝置42和44一產生諸候選輸出值C1和C2,就能夠發(fā)生諸范圍內候選輸出值C1和C2的選擇。
如果提供了任選的第三個候選輸出值產生裝置50,則它產生一個第三個候選輸出值C3,該第三個候選輸出值C3可以與或可以不與輸入值r有關。例如,可以簡單地將第三個候選輸出值C3設置得等于輸入值r。當諸裝置42,44和46中的一個或多個工作時,優(yōu)先地由裝置50產生值C3。
圖11是一個用于說明在本發(fā)明的一個優(yōu)先實施例中,一個為了將一個輸入值(邏輯寄存器號碼)映射到一個對應的輸出值(物理寄存器號碼)的方法的流程圖。在這個方法中,用下列的三個初始值Ix,Iy和IwIx=K-IsIy=N-IsIw=-Is在圖11中,分別在諸步驟S1,S2和S3中設置這三個初始值。在諸步驟S4,S5和S6中,分別將三個計數(shù)值x,y和w設置為這三個初始值Ix,Iy和Iw?,F(xiàn)在回過來參照圖10,計數(shù)值x代表第一個偏移值,計數(shù)值y代表第二個偏移值,計數(shù)值w代表范圍內偏移值。有時重復在步驟S4到S6中實施的諸設置并將它們集體地稱為一個“重置”操作。
從一個輸入值r到它的對應的輸出值p的映射是在圖11的諸步驟S7到S13中完成的。在步驟S7中,接收一個新的輸入值r。在步驟S8中,考察Iw+r的值。如果它小于0(即r<ls),則在步驟S9將輸出值p設置在r(第三個候選輸出值C3)上,然后處理跳到步驟S13。如果在步驟S8中Iw+r>0(即r>ls),則在步驟S10考察w+r的值。如果w+r的值小于0,則在步驟S11將輸出值p設置在y+r(第二個候選輸出值C2)上,處理跳到步驟S13。如果在步驟S10中w+r>0,則在步驟S12中將輸出值p設置在x+r(第一個候選輸出值C1)上,處理從步驟S13繼續(xù)進行。在步驟S13,輸出計算得到的輸出值p。
在步驟S14,確定寄存器映射是否要被旋轉。例如,當遇到一條流水線邊界和開始一個新的迭代時,就要進行這種確定。如果寄存器映射不要被旋轉,則處理回到步驟S7,和前面一樣接收一個要被映射的新的輸入值r。
如果寄存器映射要被旋轉,則在步驟S15檢查是否y=Ix。如果是,則處理回到步驟S4,在那里在步驟S7中接收下一個輸入值r前完成“重置”操作(步驟S4到S6)。如果在步驟S15確定y不等于Ix,則分別在諸步驟S16,S17和S18中將每個計數(shù)值x,y和w減少1,以后處理回到步驟S7,等待接收一個要被映射的新的r值。
在圖11的方法中,為了實現(xiàn)一個快速的優(yōu)點,兩個用于產生第一和第二個候選輸出值C1和C2的步驟S11和S12是相互平行地加入的,兩個用于確定選擇諸候選輸出值C1到C3中哪一個的步驟S8和S10也是相互平行地進行比較的。以這種方式,當在步驟S8和S10完成的諸比較結果變得可用的時,能夠用諸結果選擇諸步驟S9(C3),S11(C2)和S12(C1)的諸結果中的適當?shù)囊粋€作為要在步驟S13中輸出的輸出值p。
圖12表示在寄存器傳送級別(RTL)表示法中,根據(jù)本發(fā)明的一個優(yōu)先實施例的寄存器映射電路的一個例子。我們用圖12的電路60實施圖11中說明的方法,在圖12中用分配給映射電路的諸部件的參照數(shù)字H4到H13幫助我們理解在這些部件和圖11中的諸步驟S4到S13之間的對應關系。
映射電路60有一個用于接收一個m位輸入值(邏輯寄存器號碼)r的輸入裝置H7和一個用于輸出一個與輸入值r對應的m位輸出值(經映射得到的物理寄存器號碼)p的輸出裝置H13。例如,m=5或6。映射電路60也包括四個加法器H8,H10,H11和H12,三個寄存器H1,H2和H3,三個計數(shù)器H4,H5和H6,一個比較器H15和一個多路轉換器100。
如圖12所示,加法器H12,計數(shù)器H4和寄存器H1一起對應于圖8的第一個候選輸出值產生裝置42。加法器H11,計數(shù)器H5和寄存器H2一起對應于第二個候選輸出值產生裝置44。加法器H10,計數(shù)器H6和寄存器H3一起對應于范圍內值確定裝置46。多路轉換器100對應于輸出值選擇裝置48。加法器H8被包含在一個輸入范圍確定裝置62中,而比較器H15被包含在一個偏移改變裝置64中。
諸加法器H8,H10,H11和H12中的每一個都有一個第一和第二個輸入端,所有四個加法器的各個第一個輸入端都直接與輸入裝置H7連接,以便接收來自輸入裝置H7的m位邏輯寄存器號碼r。加法器H8的第二個輸入端與寄存器H3的一個輸出端連接。加法器H10的第二個輸入端與計數(shù)器H6的一個輸出端連接。
加法器H11的第二個輸入端與計數(shù)器H5的一個輸出端連接。加法器H12的第二個輸入端與計數(shù)器H4的一個輸出端連接。
多路轉換器100有四個m位輸入端,其中的兩個直接與輸入裝置H7連接,以便接收m位輸入值r(第三個候選輸出值C3)。多路轉換器100的其它兩個m位輸入端分別與加法器H11的輸出端(第二個候選輸出值C2)和加法器H12的輸出端(第一個候選輸出值C1)連接。多路轉換器100也有一個選擇輸入端用于接收一個二位選擇信號S[s1,s0]。選擇信號S的位s1是加法器H8的輸出信號中的最重要的位(位m)。選擇信號S的位s0是加法器H10的輸出信號中的最重要的位(位m)。
比較器H15有一個與寄存器H1的一個輸出端連接的第一個輸入端和一個與計數(shù)器H5的一個輸出端連接的第二個輸入端。偏移改變裝置64有一個連接著的輸入端用于接收一個RENAME(更名)信號。偏移改變裝置64也有一個與諸計數(shù)器H4到H6的各個輸入端連接的輸出端用于選擇地將或者一個重置信號RESET或者一個減少信號DEC加到諸計數(shù)器H4到H6上。
寄存器H1有一個與計數(shù)器H4的一個輸入端連接的輸出端,寄存器H2有一個與計數(shù)器H5的一個輸入端連接的輸出端,和寄存器H3有一個與計數(shù)器H6的一個輸入端連接的輸出端。
現(xiàn)在我們將描述如圖12所示的寄存器映射電路的工作。
諸寄存器H1,H2和H3用于分別存諸上面提到的諸初始值Ix,Iy和Iw。計數(shù)器H4,H5和H6用于分別保存諸上面提到的計數(shù)值x,y和w。
在工作開始時(圖11中的步驟S1,S2和S3),分別用諸值Ix,Iy和Iw對諸寄存器H1,H2和H3進行初始化(為了簡單起見我們已經從圖2略去了用于初始化這些寄存器的控制邏輯電路)。下面,偏移改變裝置64將RESET信號加到諸計數(shù)器H4,H5和H6,使得它們分別在步驟S4,S5和S6中被加載Ix,Iy和Iw的諸值(上面提到的“reset”操作)。
當在輸入裝置H7接收一個新的r值(邏輯寄存器號碼)時(步驟S7),各個檢測值D1=Iw+r和D2=w+r同時分別由諸加法器H8和H10計算出來(分別為步驟S8和S10)。在每個情形中,檢測值D1或D2的最重要的位(對于加法器H8是s1,對于加法器H10是s0)本身指出那個檢測值是否小于0。如果該檢測值小于0,則最重要的位是高的位(1),否則是低的位(0)。
兩個位s0和s1組成選擇信號S,用于選擇多路轉換器100的四個輸入端中的一個。當[s1,s0]=
時,選擇輸入端“00”;當[s1,s0]=
時,選擇輸入端“01”;當[s1,s0]=[1,0]時,選擇輸入端“10”;和當[s1,s0]=[1,1]時,選擇輸入端“11”。在四個輸入端中有三個不同的候選輸出值可以使用。第一個候選輸出值(輸入端“00”)是由加法器H12產生的值x+r。第二個候選輸出值(輸入端“01”)是由加法器H11產生的值y+r。第三個候選輸出值(輸入端“10”和“11”)是在輸入裝置H7接收的r值。
當兩個“10”和“11”輸入端都接收同一個候選輸出值C3(輸入的邏輯寄存器號碼r)時,無論什么時候當選擇位s1是1(這指出由加法器H8執(zhí)行的加法的結果D1是負的)時,選擇該候選輸出值C3作為多路轉換器100的輸出。這與在圖11的步驟S8中的確定“是”對應(Iw+r<0),并且在步驟S9設置輸出的物理寄存器號碼p等于輸入的邏輯寄存器號碼r。
如果[s1,s0]=
,則選擇第二個候選輸出值C2作為多路轉換器100的輸出,這與步驟S8中的一個確定“否”(Iw+r<0)和在步驟S10中的一個確定“是”(w+r<0)對應。
如果[s1,s0]=
,則選擇第一個候選輸出值C1作為多路轉換器100的輸出,這與步驟S8中的一個確定“否”(Iw+r≥0)和在步驟S10中的一個確定“否”(w+r≥0)對應。
一個為了旋轉寄存器映射的旋轉操作由偏移改變裝置64在對接收的控制信號RENAME作出響應時在圖12的電路中加以執(zhí)行。在旋轉操作中由比較器H15確定存儲在計數(shù)器H5中的計數(shù)值y是否等于保存在寄存器H1中的初始值Ix。這與圖11中的步驟S15對應。如果比較器H15確定y=Ix,則它產生RESET信號并且再次分別用存儲在諸存儲器H1,H2和H3中的諸值對諸計算數(shù)器H4,H5和H6進行加載。這對應于分別在諸步驟S4,S5和S6中實施的“reset”操作。
如果比較器H15確定在計數(shù)器H5中的計數(shù)值y不等于在寄存器R1中的初始值Ix,則偏移改變裝置64產生減少控制信號DEC。與諸步驟S16,S17和S18對應,對DEC信號作出響應使存儲在諸計算數(shù)器H4,H5和H6中的諸值每個都減少1。在這種方式中,第一,第二和范圍內偏移值x,y和w都在諸適當?shù)姆秶鷥雀淖儯瑫r總是在它們之間保持諸相同的差值。
我們希望在圖12的實施例中被要求產生第一個候選輸出值x+r的加法操作由加法器H12實施,同時被要求產生第二個候選輸出值y+r的加法操作由加法器H11實施。對于在從ls到le的范圍(用于映射到寄存器文件中的可更名空間的允許的輸入值范圍)內的任何給定的r值,第一和第二個候選輸出值中的一個將在諸允許的輸出值的從K到N-1的范圍內(在可更名空間中的諸物理寄存器號碼),而另一個候選輸出值將在該范圍外。在這個實施例中通過采用一個進一步的加法操作,在該操作中將范圍內偏移值w加到r值上產生檢測值D2=w+r,來實施兩個候選輸出值中的哪一個處在范圍內的確定。因為不論何時總是有w=x-K=y-N,所以得到當x+r<K和y+r<N時w+r<0,表示第一個候選輸出值x+r是在范圍外和第二個候選輸出值y+r是在范圍內。相反地,得到當x+r≥K和y+r≥N時w+r≥0,表示第一個候選輸出值x+r是在范圍內和第二個候選輸出值y+r是在范圍外。假定w和r是以兩個補碼的形式表示出來,則為了識別范圍內的候選輸出值,只需要檢測值D2(w+r)的最重要的位(s0),即被確定的范圍內的候選輸出值當s0=0時是第一個候選輸出值,當s1=0時是第二個候選輸出值。
在這個實施例中用于產生檢測值D2的第三個加法操作w+r與產生第一和第二個候選輸出值的諸操作無關。所以與那些操作同時地執(zhí)行這個第三個加法操作。這意味著直到已經產生這兩個候選值為止沒有延遲范圍內的候選輸出值的確定。
在圖12的實施例中,當r<ls時也選擇接收的r值(第三個候選輸出值C3)。與確定范圍內的候選輸出值的情形類似,通過用一個第四個加法操作,其中將w的初始值Iw時加到r值上產生檢測值D1,來實施是否有r<ls的確定。因為Iw=-ls,我們得到當r<ls時Iw+r<0,這表示應該選擇第三個候選輸出值C3。相反地,我們得到當r≥ls時Iw+r>0,這表示應該選擇第一和第二個候選輸出值x+r和y+r中的一個。假定Iw和r是以兩個補碼的形式表示出來,則為了確定是否選擇第三個候選輸出值,只需要結果Iw+r的最重要的位(s1)。于是,我們確定當s1=0時應該選擇第一或第二個候選輸出值,而當s1=1時應該選擇第三個候選輸出值。
在這個實施例中用于產生檢測值D1的第四個加法操作Iw+r與為了產生第一和第二個候選輸出值的諸操作及為了確定那些值中的在范圍內的一個的操作無關。所以第四個加法操作與那些其它的操作同時被執(zhí)行。這意味著第一和第二個候選輸出值的產生沒有被為了確定是否選擇第三個候選輸出值的操作所延遲,或相反。
所以圖12的完成用了四個平行的加法器和一個4到1的多路轉換器去計算輸出值p。所得到的邏輯電路只需要為了完成兩個(m+1)位的整數(shù)加法所需的時間量,和為了選擇四個m位值中的一個的時間。所以,通過為了計算與一個邏輯寄存器號碼r對應的物理寄存器號碼p的邏輯電路的關鍵途徑是一個(短)整數(shù)加法和從四個中選出一個的選擇。這表示與一個模操作的計算比較節(jié)省了大量的時間。
此外,在諸計數(shù)器和諸寄存器H1到H6內包含著寄存器映射的一個完整的狀態(tài)(諸偏移值x,y和w與諸初始值Ix,Iy和Iw)。所以,當將映射電路60合并在一臺如圖1的處理機那樣的處理機內時,要保存處理機的狀態(tài)只需要保存這些計數(shù)器和寄存器的諸內容。以后為了恢復寄存器映射的狀態(tài)能夠重新裝載它們。這表明該機理對于在用于諸一般目的的處理機中的應用是切實可行的,其中諸處理機被周期地保存和恢復從而簡化了多重處理操作系統(tǒng)。
上面描述的例子是對于為了旋轉寄存器映射而減少每個偏移值的情形的。我們認識到一個類似的方法和電路也能夠用于一個重映射的方案中,在該方案中增加而不是減少每個偏移值。
由本發(fā)明的一個實施例達到的一個附加的優(yōu)點是在如圖5所示的物理寄存器文件120的諸動態(tài)和靜態(tài)編址部分120R和120S之間的邊界是可編程的。能夠將物理寄存器文件的旋轉區(qū)域120R放在諸寄存器的名字空間內的一個任何位置上。通過適當?shù)卦O置諸輸出范圍極限值K和/或N能夠對在諸區(qū)域之間的邊界位置進行編程,并且簡單地通過為K和/或N設置諸新的值并使處理回到圖11的步驟S1使得在計算新的映射前先計算出對于諸寄存器H1,H2和H3的諸新的值(Ix,Iy和Iw)能夠在當執(zhí)行程序時的任何一點上改變在諸區(qū)域之間的邊界位置。
盡管上面的描述已經主要與一個用于在一臺微處理機中實施諸寄存器名字的一個快速映射的方法和電路相關,但是我們認識到這樣一個方法和電路能夠用于任何其它的需要這樣一個從一個輸入值到一個對應的輸出值的快速映射的應用中去。
我們也認識到在一臺用旋轉寄存器更名的處理機中,諸寄存器被更名的諸情形不限于當越過一條流水線邊界的時候。能夠在任何適合于處理機的適當條件下實施更名。
我們也認識到用于進行候選輸出值選擇的諸檢測值不需要是這樣的值,即當滿足相關的選擇判據(jù)時,那些值越過0。當用諸檢測值的兩個補碼形式的表示時零越過是方便的。然而,當用一個無符號的表示時,通過當滿足相關的選擇判據(jù)時使檢測值越過一個指數(shù)2的值(例如,25=32)那樣地設置偏移值仍然能夠達到同樣結果。這樣,能夠考察單個預先選擇的位,來識別何時滿足判據(jù)。那個位不需要是最重要的位。
權利要求
1.映射電路,用于將一個在諸允許的輸入值的一個預先選擇的范圍內的輸入值映射到一個在諸允許的輸出值的一個預先選擇的范圍內的對應的輸出值,所述的映射電路包括第一個候選輸出值產生裝置,為了接收所述的輸入值將它連接起來,它可以進行工作產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;第二個候選輸出值產生裝置,為了接收所述的輸入值將它連接起來,當所述的第一個候選輸出值產生裝置進行工作產生所述的第一個候選輸出值時,它可以進行工作產生一個第二個候選輸出值,第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,這兩個值中的另一個是在那個范圍外;范圍內值確定裝置,用于確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和輸出值選擇裝置,用于選擇所述的第一和第二個候選輸出值中的被確定在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
2.權利要求1中所述的映射電路,其中當所述的第一和第二個候選輸出值產生裝置兩者或其中的一個進行工作產生所述的第一和第二個候選輸出值時,所述的范圍內值確定裝置可以進行工作確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內。
3.映射電路,用于將一個在諸允許的輸入值的一個預先選擇的范圍內的輸入值映射到一個在諸允許的輸出值的一個預先選擇的范圍內的對應的輸出值,所述的映射電路包括第一個候選輸出值產生裝置,為了接收所述的輸入值將它連接起來,它可以進行工作產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;第二個候選輸出值產生裝置,為了接收所述的輸入值將它連接起來,它可以進行工作產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,這兩個值中的另一個是在那個范圍外;范圍內值確定裝置,它可以進行工作確定當所述的第一和第二個候選輸出值產生裝置兩者或其中的一個進行工作產生所述的第一和第二個候選輸出值時,所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和輸出值選擇裝置,用于選擇所述的第一和第二個候選輸出值中的被確定在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
4.權利要求1,2或3中所述的映射電路,它進一步包括輸入范圍確定裝置,為了接收所述的輸入值將它連接起來,它可以進行工作確定所述的輸入值是否在所述的預先選擇的輸入值范圍內;和第三個候選輸出值產生裝置,用于產生一個第三個候選輸出值;其中,所述的輸出值選擇裝置可以進行工作,當所述的輸入范圍確定裝置確定所述的輸入值是在所述的預先選擇的輸入值范圍外時,選擇所述的第三個候選輸出值作為所述的對應的輸出值。
5.權利要求4中所述的映射電路,其中為了接收所述的輸入值將所述的第三個候選輸出值產生裝置連接起來,并且所述的第三個候選輸出值與所述的輸入值有關。
6.權利要求5中所述的映射電路,其中所述的第三個候選輸出值等于所述的輸入值。
7.權利要求4,5或6中所述的映射電路,其中所述輸入范圍確定裝置可以進行工作,當所述的第一和第二個候選輸出值產生裝置兩者或其中的一個進行工作產生所述的第一和第二個候選輸出值時,確定所述的輸入值是否在所述的預先選擇的輸入值范圍外。
8.權利要求4到7的任何一個中所述的映射電路,其中當所述的第一和第二個候選輸出值產生裝置兩者或其中的一個進行工作產生所述的第一和第二個候選輸出值時,所述的第三個候選輸出值產生裝置可以進行工作產生所述的第三個候選輸出值。
9.上述的任何一個權利要求中所述的映射電路,其中諸所述的輸出范圍極限值中的至少一個當電路工作時是可變的。
10.上述的任何一個權利要求中所述的映射電路,其中預先選擇的輸出值范圍的全長大于預先選擇的輸入值范圍的全長。
11.權利要求4到10的任何一個中所述的映射電路,其中所述的輸入范圍確定裝置可以進行工作,通過產生一個檢測值,該檢測值與接收的輸入值相差一個第三個偏移值,和當檢測值的一個預先確定的位有一個預先確定的邏輯值時,確定所述的輸入值是否在所述的預先選擇的輸入值范圍外。
12.權利要求11中所述的映射電路,其中與定義預先確定的輸入值范圍的諸極限中的一個的一個輸入范圍極限值有關地設置所述的第三個偏移值。
13.權利要求12中所述的映射電路,其中檢測值是通過將第三個偏移值加到接收的輸入值上產生的。
14.權利要求11到13的任何一個中所述的映射電路,其中所述的預先確定的位是產生的檢測值的最重要的位。
15.上述的任何一個權利要求中所述的映射電路,它進一步包括偏移改變裝置,當映射電路工作時,該偏移改變裝置可以進行工作選擇地改變所述的第一和第二個偏移值,而同時保持在它們之間的所述的差值。
16.上述的任何一個權利要求中所述的映射電路,其中所述的范圍內值確定裝置可以進行工作產生一個檢測值,該檢測值與接收的輸入值相差一個范圍內的偏移值,和當產生的檢測值的一個預先選擇的位有一個第一個邏輯值時確定范圍內的輸出值作為第一個候選輸出值,當那個位有一個第二個邏輯值時確定范圍內的候選輸出值作為第二個候選輸出值。
17.權利要求16中所述的映射電路,其中所述的范圍內的偏移值與第一個偏移值相差諸所述的輸出范圍極限值中的一個,并且與第二個偏移值相差諸所述的輸出范圍極限值中的另一個。
18.當如附加在權利要求15上那樣地讀出權利要求16或17時權利要求16或17中所述的映射電路,其中所述的偏移改變裝置當改變所述的第一和第二個偏移值時也改變所述的范圍內的偏移值,使得在第一個偏移值和范圍內的偏移值之間以及第二個偏移值和范圍內的偏移值之間的各個差值保持不變。
19.權利要求16,17或18中所述的映射電路,其中范圍內的偏移值與一個定義預先選擇的輸入值范圍的諸極限中的一個的輸入范圍極限值有關。
20.權利要求18中所述的映射電路,其中檢測值是通過將范圍內的偏移值加到接收的輸入值上產生的。
21.權利要求16到20的任何一個中所述的映射電路,其中所述的預先選擇的位是產生的檢測值的最重要的位。
22.一臺處理機包括上述的任何一個權利要求中所述的映射電路;用于發(fā)出諸指令的指令發(fā)出裝置;用于執(zhí)行諸發(fā)出指令的指令執(zhí)行裝置;和有多個物理寄存器的寄存器裝置;其中將映射電路連接起來,接收由所述的諸指令中的一個規(guī)定的一個邏輯寄存器標識符作為它的所述的輸入值,并且映射電路的所述的輸出值是一個物理寄存器標識符,用于識別在所述的與規(guī)定的邏輯寄存器標識符對應的寄存器裝置內的諸物理寄存器中的一個。
23.一臺權利要求22中所述的處理機,其中所述的寄存器裝置包括一個動態(tài)命名區(qū)域,和在預先確定的輸出值范圍內的映射電路的諸輸出值提供在所述的動態(tài)命名區(qū)域內的那些物理寄存器的諸所述的物理寄存器標識符。
24.一臺權利要求22或23中所述的處理機,其中所述的寄存器裝置包括一個靜態(tài)命名區(qū)域,和在預先確定的輸出值范圍外的映射電路的諸輸出值提供在所述的靜態(tài)命名區(qū)域內的那些物理寄存器的諸所述的物理寄存器標識符。
25.一個映射方法,用于將在諸允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,所述的映射方法包括下列諸步驟產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;當產生所述的第一個候選輸出值時,產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和選擇所述的第一和第二個候選輸出值中的被確定在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
26.一個映射方法,用于將在諸允許的輸入值的一個預先選擇的范圍內的一個輸入值映射到在諸允許的輸出值的一個預先選擇的范圍內的一個對應的輸出值,所述的映射方法包括下列諸步驟產生一個第一個候選輸出值,該第一個候選輸出值與接收的輸入值相差一個第一個偏移值;產生一個第二個候選輸出值,該第二個候選輸出值與接收的輸入值相差一個第二個偏移值,第一和第二個偏移值是這樣的值,它們之間的一個差等于定義預先選擇的輸出值范圍的諸極限的各個輸出值范圍的極限值之間的一個差,并且對于在所述的預先選擇的輸入值范圍內的任何所述的輸入值,第一和第二個候選輸出值中的一個是在預先選擇的輸出值范圍內,而這兩個值中的另一個是在那個范圍外;當產生所述的第一和第二個候選輸出值兩者或其中的一個時,確定所述的第一和第二個候選輸出值中的哪一個是在所述的預先選擇的輸出值范圍內;和選擇所述的第一和第二個候選輸出值中的被確定在所述的輸出值范圍內的那一個值作為所述的對應的輸出值。
全文摘要
映射電路(40)包括一個第一個候選輸出值產生裝置(42),它產生一個第一個候選輸出值(C1),該候選輸出值(C1)與一個接收的輸入值(r)相差一個第一個偏移值(x),和一個第二個候選輸出值產生裝置(44),當?shù)谝粋€候選輸出值產生裝置(42)進行工作產生第一個候選輸出值(C1)時,它可以進行工作產生一個第二個候選輸出值(C2),該第二個候選輸出值(C2)與接收的輸入值(r)相差一個第二個偏移值(y)。
文檔編號G06F9/32GK1310386SQ0110491
公開日2001年8月29日 申請日期2001年2月23日 優(yōu)先權日2000年2月25日
發(fā)明者奈杰爾·P·托帕姆 申請人:斯羅揚有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1