訪問(wèn)作為多個(gè)較小寄存器或組合的較大寄存器的寄存器組的處理器、方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本文描述的實(shí)施例大體涉及處理器。特別地,本文描述的實(shí)施例大體涉及處理器中寄存器的使用。
【背景技術(shù)】
[0002]許多處理器具有單指令多數(shù)據(jù)(SM))架構(gòu)。在SM)架構(gòu)中,組裝數(shù)據(jù)指令、向量指令或Sn?指令可并發(fā)(例如,并行)對(duì)多個(gè)數(shù)據(jù)元素(例如,多對(duì)數(shù)據(jù)元素)起作用。處理器可具有響應(yīng)于組裝數(shù)據(jù)指令(packed data instruct1n)的并行指令硬件來(lái)并發(fā)(例如,并行)執(zhí)行多個(gè)操作。
[0003]多個(gè)數(shù)據(jù)元素可在寄存器內(nèi)或存儲(chǔ)器位點(diǎn)內(nèi)組裝以作為組裝數(shù)據(jù)。在組裝數(shù)據(jù)中,寄存器或其他存儲(chǔ)位點(diǎn)的位可在邏輯上分成數(shù)據(jù)元素序列。例如,64位寬組裝數(shù)據(jù)寄存器可具有兩個(gè)組裝32位數(shù)據(jù)元素、四個(gè)組裝16位數(shù)據(jù)元素或八個(gè)組裝8位數(shù)據(jù)元素。
[0004]在一些處理器中,多年來(lái)組裝數(shù)據(jù)操作數(shù)的寬度在遞增。組裝數(shù)據(jù)操作數(shù)寬度的增加大體允許并發(fā)(例如,并行)處理更多數(shù)據(jù)元素,這大體趨于提高性能。例如,在使用128位組裝數(shù)據(jù)時(shí),可并發(fā)處理八個(gè)16位數(shù)據(jù)元素來(lái)代替在64位組裝數(shù)據(jù)情況下僅僅四個(gè)16位數(shù)據(jù)元素。
[0005]然而,這樣的更寬組裝數(shù)據(jù)使用的一個(gè)可能缺點(diǎn)是寄存器和寄存器文件大小的可能對(duì)應(yīng)增加。例如,擴(kuò)大一組64位寄存器中的每個(gè)寄存器使得它們每個(gè)是128位寄存器,這將可能使寄存器的大小(例如,晶片(die)上的寄存器所占據(jù)的占用空間的面積)近似加倍。該影響在比架構(gòu)寄存器存在有更多物理寄存器的實(shí)現(xiàn)中將可能甚至更大,因?yàn)楦髷?shù)量寄存器的大小近似加倍。這樣的寄存器和寄存器文件大小增加的另一個(gè)可能缺點(diǎn)是在上下文切換、功率模式狀態(tài)保存和類似轉(zhuǎn)換時(shí)需要移到寄存器和從寄存器移動(dòng)的數(shù)據(jù)量(例如,狀態(tài)或上下文)的對(duì)應(yīng)增加。例如,對(duì)于每個(gè)寄存器,在128位寬寄存器情況下128個(gè)位(而不是在64位寬寄存器情況下僅僅64個(gè)位)可需要移到寄存器和從寄存器移動(dòng)。
【附圖說(shuō)明】
[0006]本發(fā)明通過(guò)參考下列描述和附圖而最好地理解,這些附圖用于圖示本發(fā)明的實(shí)施例。在圖中:
圖1是處理器的實(shí)施例的框圖。
[0007]圖2是在處理器中和/或由處理器執(zhí)行的方法的實(shí)施例的方框流程圖。
[0008]圖3是其中一組寄存器在第一視圖中作為128位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)并且在第二視圖中作為256位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)的實(shí)施例的框圖。
[0009]圖4是其中一組寄存器在第一視圖中作為64位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)、在第二視圖中作為128位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)并且在第三視圖中作為256位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)的實(shí)施例的框圖。
[0010]圖5是其中一組寄存器在第一視圖中作為128位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)、在第二視圖中作為256位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)并且在第三視圖中作為512位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)的實(shí)施例的框圖。
[0011]圖6是其中一組寄存器在第一視圖中作為255位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)并且在第二視圖中作為512位組裝數(shù)據(jù)寄存器被查看或訪問(wèn)的實(shí)施例的框圖。
[0012]圖7A-C是利用一組寄存器的不同視圖的適合指令格式的實(shí)施例的框圖。
[0013]圖7D是適合的組裝數(shù)據(jù)格式的示例的框圖。
[0014]圖8A是圖示根據(jù)本發(fā)明的實(shí)施例的示范性有序流水線和示范性寄存器重命名、無(wú)序發(fā)出/執(zhí)行流水線兩者的框圖。
[0015]圖SB是圖示根據(jù)本發(fā)明的實(shí)施例要在處理器中包括的有序架構(gòu)核的示范性實(shí)施例和示范性寄存器重命名、無(wú)序發(fā)出/執(zhí)行架構(gòu)核兩者的框圖。
[0016]圖9A是根據(jù)本發(fā)明的實(shí)施例的單個(gè)處理器核連同它到片上互連網(wǎng)絡(luò)的連接以及它的2級(jí)(L2)高速緩存的本地子集的框圖。
[0017]圖9B是根據(jù)本發(fā)明的實(shí)施例在圖9A中的處理器核的部分的展開(kāi)圖。
[0018]圖10是根據(jù)本發(fā)明的實(shí)施例可具有超過(guò)一個(gè)核、可具有集成存儲(chǔ)器控制器且可具有集成圖形的處理器的框圖。
[0019]圖11示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0020]圖12示出根據(jù)本發(fā)明的實(shí)施例的第一更特定示范性系統(tǒng)的框圖。
[0021]圖13示出根據(jù)本發(fā)明的實(shí)施例的第二更特定示范性系統(tǒng)的框圖。
[0022]圖14示出根據(jù)本發(fā)明的實(shí)施例的SoC的框圖。
[0023]圖15是根據(jù)本發(fā)明的實(shí)施例對(duì)比將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的軟件指令轉(zhuǎn)換器使用框圖。
【具體實(shí)施方式】
[0024]本文公開(kāi)處理器、方法和系統(tǒng),其允許將一組寄存器作為多個(gè)相對(duì)較小的寄存器或作為多個(gè)相對(duì)較小寄存器被訪問(wèn)或查看。在下列描述中,闡述許多具體細(xì)節(jié)(例如,特定寄存器大小、寄存器數(shù)量、指令和格式、邏輯實(shí)現(xiàn)、處理器配置、微架構(gòu)細(xì)節(jié)、操作順序、邏輯劃分/集成細(xì)節(jié)、系統(tǒng)部件的類型和相互關(guān)系及類似物)。然而,理解可在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明的實(shí)施例。在其他實(shí)例中,為了不混淆對(duì)本描述的理解,未詳細(xì)地示出眾所周知的電路、結(jié)構(gòu)和技術(shù)。
[0025]圖1是處理器100的實(shí)施例的框圖。該處理器代表能操作成處理指令的指令處理裝置。在一些實(shí)施例中,處理器可以是通用處理器(例如,通常用作臺(tái)式機(jī)、便攜式電腦和類似計(jì)算機(jī)中的中央處理單元(CPU)的那類通用微處理器)。備選地,處理器可以是專用處理器。僅舉幾例,適合的專用處理器的示例包括但不限于網(wǎng)絡(luò)處理器、通信處理器、密碼處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)和控制器(例如,微控制器)。處理器可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡(jiǎn)指令集計(jì)算(RISC)處理器、各種超長(zhǎng)指令字(VLIW)處理器、其各種混合或完全是其他類型的處理器中的任一個(gè)。
[0026]處理器還包括一組寄存器108。這些寄存器中的每個(gè)可代表處理器上和/或片上存儲(chǔ)位點(diǎn)。在一些實(shí)施例中,該組寄存器可代表組裝數(shù)據(jù)寄存器,或可另外能夠存儲(chǔ)組裝數(shù)據(jù)、向量數(shù)據(jù)或sn?數(shù)據(jù)。組裝數(shù)據(jù)寄存器可采用不同方式在不同微架構(gòu)中使用眾所周知的技術(shù)實(shí)現(xiàn),并且不限于任何特定類型的電路或機(jī)構(gòu)。各種不同類型的寄存器是適合的。適合類型的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器及其組合。
[0027]處理器可接收指令102,其指示在寄存器組108上實(shí)現(xiàn)或另外與之關(guān)聯(lián)的至少一個(gè)寄存器。指令可代表機(jī)器代碼指令、匯編語(yǔ)言指令、宏指令或處理器指令集的控制信號(hào)。指令可顯式規(guī)定(例如,通過(guò)一組位或一個(gè)或多個(gè)字段)或另外指示(或隱式指示)至少一個(gè)寄存器(例如,作為至少一個(gè)源和/或目的操作數(shù))。作為一個(gè)示例,指令可規(guī)定用作源操作數(shù)的單個(gè)寄存器,并且該單個(gè)寄存器也可用作目的操作數(shù),或指令可額外規(guī)定不同目的操作數(shù)。作為另一個(gè)示例,指令可規(guī)定用作第一源操作數(shù)的第一寄存器,和用作第二源操作數(shù)的第二寄存器,并且對(duì)源操作數(shù)規(guī)定的寄存器中的一個(gè)也可用作目的操作數(shù),或指令可額外規(guī)定不同目的操作數(shù)。這些僅僅是幾個(gè)說(shuō)明性示例。本發(fā)明的范圍不受特定類型指令的限制,只要指令指示與寄存器組關(guān)聯(lián)的至少一個(gè)寄存器即可。僅舉幾例,適合類型的指令的示例包括但不限于組裝算術(shù)指令(例如,組裝加法指令、組裝乘法指令,等)、組裝邏輯指令(例如,組裝循環(huán)指令、組裝移位指令、組裝比較指令、組裝邏輯OR指令,等)、組裝存儲(chǔ)器訪問(wèn)指令(例如,收集指令、分散指令等)。
[0028]處理器包括指令解碼單元104。該指令解碼單元也可稱為解碼單元、解碼器或解碼邏輯。解碼單元可接收相對(duì)更高級(jí)指令(例如,機(jī)器代碼指令、匯編語(yǔ)言指令、宏指令)并且對(duì)其解碼,并且輸出一個(gè)或多個(gè)相對(duì)更低級(jí)指令或控制信號(hào)(例如,微指令、微操作、微代碼入口點(diǎn)),其反映、代表更高級(jí)指令和/或從其得到。一個(gè)或多個(gè)更低級(jí)指令或控制信號(hào)可通過(guò)一個(gè)或多個(gè)更低級(jí)(例如,電路級(jí)或硬件級(jí))操作來(lái)實(shí)現(xiàn)更高級(jí)指令。解碼單元可使用各種不同機(jī)構(gòu)實(shí)現(xiàn),其包括但不限于微代碼只讀存儲(chǔ)器(R0M)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)和用于實(shí)現(xiàn)本領(lǐng)域內(nèi)已知的解碼單元的其他機(jī)構(gòu)。在其他實(shí)施例中,代替解碼單元或作為解碼單元的補(bǔ)充,可使用指令仿真器、轉(zhuǎn)譯器、變形器、解釋器或其他指令轉(zhuǎn)換邏輯。
[0029]再次參考圖1,執(zhí)行單元106與解碼單元104并且與寄存器組108耦合。通過(guò)示例,執(zhí)行單元可包括算術(shù)單元、邏輯單元、算術(shù)邏輯單元(ALU)、執(zhí)行算術(shù)和邏輯操作的數(shù)字電路或邏輯、存儲(chǔ)器執(zhí)行單元或類似物。執(zhí)行單元可接收一個(gè)或多個(gè)解碼或另外轉(zhuǎn)換的指令或控制信號(hào),其代表指令102和/或從指令102得到。執(zhí)行單元和/或處理器可包括具體或特定邏輯(例如,晶體管、電路或潛在地與固件(例如,存儲(chǔ)在非易失性存儲(chǔ)器中的指令)和/或軟件組合的其他硬件),其能操作成響應(yīng)于指令102 (例如,響應(yīng)于解碼或另外從指令102得到的一個(gè)或多個(gè)指令或控制信號(hào))執(zhí)行操作。
[0030]在一些實(shí)施例中,執(zhí)行單元可響應(yīng)于和/或由于指令102而能操作成采用寄存器的至少兩個(gè)不同方式或視圖中的任一個(gè)或兩個(gè)來(lái)訪問(wèn)寄存器組108。在一些實(shí)施例中,該至少兩個(gè)不同方式或視圖可包括第一方式或視圖110,其中寄存器組108要視為或另外代表多個(gè)N位寄存器。在一些實(shí)施例中,至少兩個(gè)不同方式或視圖可包括第二方式或視圖112,其中寄存器組要視為或另外代表具有至少2N個(gè)位的單個(gè)寄存器。在一些實(shí)施例中,至少2N個(gè)位可以是至少256個(gè)位。在其他實(shí)施例中,寄存器組可以是N位寄存器(例如,128位寄存器、256位寄存器等)。在一些實(shí)施例中,寄存器組可以是N/2位寄存器(例如,64位寄存器、128位寄存器等)。
[0031 ] 作為一個(gè)具體示例,寄存器組108可由兩個(gè)N位寄存器(例如,128位寄存器)組成。在第一方式或視圖110中,兩個(gè)N位寄存器(例如,128位寄存器)可視為或另外代表兩個(gè)N位(例如,128位)寄存器。在第二方式或視圖112中,兩個(gè)N位寄存器(例如,128位寄存器)可視為或另外代表具有至少2N個(gè)位(例如,256個(gè)位、512個(gè)位,等)的單個(gè)寄存器。在一些實(shí)施例中,可存在訪問(wèn)一組寄存器108的不止兩個(gè)不同視圖或方式。例如,在一些實(shí)施例中,可存在三個(gè)、四個(gè)或超過(guò)四個(gè)訪問(wèn)或查看寄存器組108的不同方式。例如,在一些實(shí)施例中,該示例可額外支持訪問(wèn)作為四個(gè)N/2位寄存器(例如,64位寄存器)的寄存器組。
[0032]作為另一個(gè)具體示例,寄存器組108可由四個(gè)N/2位寄存器(例如,64位寄存器)組成。在第一方式或視圖11中,該四個(gè)N/2位寄存器(例如,64位寄存器)可視為或另外代表兩個(gè)N位(例如,128位)寄存器。在第二方式或視圖112中,四個(gè)N/2位寄存器(例如,64位寄存器)可視為或另外代表具有至少2N個(gè)位(例如,256個(gè)位、512個(gè)位、1024個(gè)位等)的單個(gè)寄存器。在一些實(shí)施例中,可存在訪問(wèn)寄存器組108的至少第三個(gè)方式。例如,在一些實(shí)施例中,在第二視圖112中,執(zhí)行單元可將四個(gè)N/2位寄存器(例如,64位寄存器)作為具有至少4N個(gè)位(例如,512個(gè)位、1024個(gè)位,等)的單個(gè)寄存器來(lái)查看或訪問(wèn),并且處理器可額外支持訪問(wèn)或查看作為多個(gè)2N位寄存器(例如,256個(gè)位)的寄存器組108。
[0033]在一些實(shí)施例中,在寄存器組108的視圖和/或訪問(wèn)寄存器108組的方式中的每個(gè)中,被查看或訪問(wèn)的組裝數(shù)據(jù)寄存器對(duì)于軟件和/或編程者可是可見(jiàn)的并且/或可由指令集的指令(例如,宏指令、機(jī)器語(yǔ)言指令、匯編語(yǔ)言指令等)規(guī)定來(lái)識(shí)別操作數(shù)。有時(shí)由指令集的指令規(guī)定的寄存器在現(xiàn)有領(lǐng)域中稱為架構(gòu)可見(jiàn)寄存器或架構(gòu)寄存器,其與指定微架構(gòu)中的其他非架構(gòu)或非架構(gòu)可見(jiàn)寄存器(例如,用于實(shí)現(xiàn)指令的暫時(shí)寄存器,等)形成對(duì)比。
[0034]如在這些詳細(xì)示例中示出的,在一些實(shí)施例中,處理器可能操作成識(shí)別、查看和/或訪問(wèn)作為多個(gè)相對(duì)較小寄存器(例如,N位寄存器)或作為單個(gè)相對(duì)較大寄存器(例如,具有至少2N