向較寬的寄存器進行依賴于模式的部分寬度加載的處理器、方法和系統(tǒng)的制作方法
【專利說明】向較寬的寄存器進行依賴于模式的部分寬度加載的處理器、 方法和系統(tǒng)
[0001] 背景
技術(shù)領(lǐng)域
[0002] 本文中所描述的各實施例一般設(shè)及處理器。具體而言,本文中所描述的各實施例 一般設(shè)及從處理器中的存儲器加載數(shù)據(jù)。
【背景技術(shù)】
[0003] 處理器的指令集通常包括處理器能夠?qū)嵭谢驁?zhí)行的各種不同類型的指令。例如, 通常運些指令集可包括各種算術(shù)指令、各種邏輯指令、用于將數(shù)據(jù)從存儲器加載到處理器 中的各種加載指令,等等。
[0004] -個挑戰(zhàn)在于,可W被包括在指令集中的指令的數(shù)量一般是有限的。指令中的每 一條指令都可包括操作代碼或操作碼。操作碼可W表示指令的用于指定要被執(zhí)行的特定指 令和/或操作的諸部分。例如,給定的從存儲器中加載數(shù)據(jù)的指令可W具有給定的唯一操作 碼,W便區(qū)別該指令與其他類型的指令,并允許處理器識別該指令。操作碼可W表示指令格 式中的一個或更多字段或位置中的給定長度的位組。通常,期望試圖保持操作碼的位數(shù)相 對短,同時提供期望數(shù)量的指令/操作。長操作碼傾向于增加解碼器的尺寸和/或復(fù)雜度。另 夕h長操作碼傾向于增加總指令長度,運會使指令使用更多程序空間并占據(jù)高速緩存中的 更多空間。可W利用給定的操作碼長度和/或指令長度來唯一地標識的不同指令的數(shù)量通 常比所期望的更受限。在不最終耗盡可用的操作碼或增加可變指令長度架構(gòu)中的指令的長 度的情況下,通常不能夠連續(xù)地將附加的指令添加到指令集中。
[0005] 在某些情況下,不同的指令和/或操作可W具有相同操作碼(或操作碼的相同部 分),但包括一個或多個用于在不同版本的指令和/或操作之間進行區(qū)分的附加位。此方法 的潛在的缺點在于,它可能傾向于增加指令長度,或者在某些情況下,在指令長度內(nèi)可能會 沒有可用的空間來容納用于在不同版本的指令/操作之間進行區(qū)分的運些附加位。
【附圖說明】
[0006] 通過參照W下描述W及用于示出實施例的附圖,可最佳地理解本發(fā)明。在附圖中:
[0007] 圖1是具有用于執(zhí)行部分寬度加載指令的處理器的計算機系統(tǒng)的實施例的框圖。
[0008] 圖2是可W根據(jù)符號擴展的部分寬度加載模式或零擴展的部分寬度加載模式來執(zhí) 行的部分寬度加載操作的第一示例實施例的框圖。
[0009] 圖3是可W根據(jù)合并的部分寬度加載模式或者零擴的展部分寬度加載模式來執(zhí)行 的部分寬度加載操作的第二示例實施例的框圖。
[0010] 圖4是可由處理器在處理部分寬度加載指令的實施例時執(zhí)行的方法的實施例的流 程框圖。
[0011] 圖5是包括用于執(zhí)行零擴展的32位存儲器尋址的64位架構(gòu)處理器的計算機系統(tǒng)的 實施例的框圖。
[0012] 圖6是為改變部分寬度加載模式而在用戶級軟件模塊與操作系統(tǒng)模塊之間的交互 的實施例的框圖。
[0013] 圖7是可W由操作系統(tǒng)模塊、特許模塊或其他系統(tǒng)級模塊執(zhí)行的方法的實施例的 框圖。
[0014] 圖8A是示出根據(jù)本發(fā)明的各實施例的示例性有序流水線和示例性寄存器重命名 的無序發(fā)布/執(zhí)行流水線的框圖。
[0015] 圖8B是示出根據(jù)本發(fā)明的各實施例的要包括在處理器中的有序架構(gòu)核的示例性 實施例和示例性寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核兩者的框圖。
[0016] 圖9A是根據(jù)本發(fā)明的各實施例的單個處理器核W及其與管忍上互連網(wǎng)絡(luò)的連接 W及其第2級化2)高速緩存的本地子集的框圖。
[0017] 圖9B是根據(jù)本發(fā)明的各實施例的圖9A中的處理器核的部分的展開圖。
[0018] 圖10是根據(jù)本發(fā)明的各實施例的可W具有多于一個的核、可W具有集成、存儲器 控制器、并可W具有集成圖形設(shè)備的處理器的框圖。
[0019] 圖11所示為根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖。
[0020] 圖12所示為根據(jù)本發(fā)明的實施例的第一更具體的示例性系統(tǒng)的框圖。
[0021] 圖13所示為根據(jù)本發(fā)明的實施例的第二更具體的示例性系統(tǒng)的框圖。
[0022] 圖14所示為根據(jù)本發(fā)明的實施例的SoC的框圖。
[0023] 圖15是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進 制指令轉(zhuǎn)換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0024] 在某些實施例中,處理器可W具有用于W兩種或更多種不同的對應(yīng)方式來處理給 定的指令和/或給定的操作碼的兩種或更多種模式,例如,用于W兩種或更多不同的對應(yīng)方 式來處理從存儲器進行部分寬度加載的指令的兩種或更多種模式。在W下描述中,闡述多 個特定細節(jié)(例如,特定的指令操作、處理器配置、微架構(gòu)細節(jié)、操作序列等)。然而,在沒有 運些具體細節(jié)的情況下也可實踐諸實施例。在其他實例中,未詳細示出公知的電路、結(jié)構(gòu)和 技術(shù),W避免混淆對本描述的理解。
[0025] 圖1是計算機系統(tǒng)100的實施例的框圖。在各實施例中,計算機系統(tǒng)可W表示臺式 計算機、膝上型計算機、筆記本計算機、平板計算機、上網(wǎng)本、智能電話、個人數(shù)字助理、蜂窩 電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器或交換機)、移動互聯(lián)網(wǎng)設(shè)備(MID)、媒體播放器、智能 電視、機頂盒、視頻游戲控制器,或其他類型的電子設(shè)備。
[0026] 計算機系統(tǒng)包括處理器101的實施例。在某些實施例中,處理器可W是通用處理 器。例如,處理器可W是通常被用作中央處理單元(CPU)類型的通用處理器。在其他實施例 中,處理器可W是專用處理器。合適的專用處理器的示例包括但不僅限于,協(xié)處理器、圖形 處理器、通信處理器、網(wǎng)絡(luò)處理器、加密處理器、嵌入式處理器、W及數(shù)字信號處理器(DSP), 僅舉數(shù)例。處理器可W是各種復(fù)雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC) 處理器、各種超長指令字(VLIW)處理器中的任何一種,上述處理器的各種混合,或完全是其 他類型的處理器。
[0027] 計算機系統(tǒng)還包括存儲器110的實施例。存儲器通過禪合或互連機制109與處理器 101禪合。合適的禪合或互連機制的示例包括但不僅限于,一個或多個互連、總線、中樞、存 儲器控制器、忍片組、忍片組組件等,W及上述各項的各種組合。存儲器可包括相同或者不 同類型的一個或多個存儲器設(shè)備。適用于各實施例的一種常用類型的存儲器是動態(tài)隨機存 取存儲器(DRAM),但是可替代選地使用其他類型的存儲器(例如,閃存)。存儲器可W具有存 儲在其中的軟件,例如,一個或多個操作系統(tǒng)(0S)W及一個或多個應(yīng)用(未示出)。在操作期 間,軟件的指令可W被提供給處理器,并且可在處理器上運行。
[0028] 如圖所示,可W將部分寬度加載指令102提供給處理器101。例如,取出單元(未示 出)可W取出部分寬度加載指令。部分寬度加載指令可表示機器代碼指令、匯編語言指令、 宏指令、或設(shè)備的ISA的控制信號。部分寬度加載指令可W顯式地將存儲器110中的存儲器 位置111指定(例如,通過一個或多個字段或位組)指定為源操作數(shù),或W其他方式將存儲器 110中的存儲器位置111指示(例如,隱式地指示)為源操作數(shù),并且可將目的地寄存器115指 定或W其他方式指示為將存儲從存儲器加載的部分寬度數(shù)據(jù)112的目的地操作數(shù)。在本文 中使用術(shù)語"部分寬度數(shù)據(jù)"來指填充將存儲數(shù)據(jù)的目的地寄存器115的僅部分寬度的數(shù) 據(jù),或作為將存儲數(shù)據(jù)的目的地寄存器115的僅部分寬度的數(shù)據(jù)。
[0029] 處理器包括解碼單元103。解碼單元還可W被稱為解碼器或解碼邏輯。解碼單元可 W接收部分寬度加載指令。解碼單元可操作用于對相對較高層級的指令(例如,機器代碼指 令、匯編語言指令、宏指令,等等)進行解碼,并輸出一個或多個對應(yīng)的相對較低層級的指令 或控制信號(例如,一個或多個微指令、微操作、微代碼入口點,等等)。較低層級的指令或控 制信號可W反映、表示相對較高層級的指令,和/或可從相對較高層級指令導(dǎo)出,并可W通 過較低層級的操作(例如,電路級或硬件級操作)來實現(xiàn)較高層級的指令。解碼單元可W使 用各種不同的機制來實現(xiàn),各種不同的機制包括但不限于,微代碼只讀存儲器(ROM)、查找 表、硬件實現(xiàn)、可編程邏輯陣列(PLA),本領(lǐng)域已知的用于實現(xiàn)解碼單元的其他機制,W及上 述各項的組合。
[0030] 在其他實施例中,可替代解碼單元103而使用或除解碼單元103之外還使用指令仿 真器、變換器、變形器、解釋器或轉(zhuǎn)換器。指令轉(zhuǎn)換器可將指令仿真、變換、變形、解釋,或W 其他方式轉(zhuǎn)換為一個或多個對應(yīng)的導(dǎo)出的指令或控制信號。各種不同類型的此類指令轉(zhuǎn)換 器是本領(lǐng)域中已知的,并可在硬件、固件、軟件或它們的組合中實現(xiàn)。在某些實施例中,指令 轉(zhuǎn)換器可W將接收到的較高層級的指令轉(zhuǎn)換為一個或多個中等層級指令,并且解碼單元可 W將運一個或多個中等層級指令解碼為能夠由處理器的原生邏輯執(zhí)行的一個或多個較低 層級的指令或控制信號。
[0031] 如圖所示,解碼單元是處理器的依賴于模式的部分寬度加載系統(tǒng)113的部分。在某 些實施例中,可W使用兩種或更多種模式來W兩種或更多種不同的對應(yīng)方式來處理部分寬 度加載指令和/或其操作碼。有利的是,運可有助于在不需要利用進一步的操作碼的情況下 就允許執(zhí)行不同的操作,在某些情況下,如【背景技術(shù)】部分所討論,不利用進一步的操作碼就 允許執(zhí)行不同的操作會具有挑戰(zhàn)性。解碼單元可W與部分寬度加載模式105禪合,或W其他 方式與部分寬度加載模式105通信。在某些實施例中,部分寬度加載模式可包括用于指示多 種不同的部分寬度加載模式中的一種的一個或多個位。一方面,可W使用單個位來指示兩 種不同的部分寬度加載模式中的任何一種。另一方面,可W使用兩個或更多位來指示兩種、 至少Ξ種、至少四種,或可任選地多于四種的不同的部分寬度加載模式中的任何一種。在某 些實施例中,運一個或多個位可W存儲在寄存器(例如,控制寄存器、狀態(tài)寄存器或配置寄 存器)1〇6中或另一個管忍上存儲位置。或者,可W任選地將部分寬度加載模式包括在不一 定在控制寄存器、狀態(tài)寄存器或配置寄存器中的一個或多個分開的或隔離的位中。如將在 下文中進一步解釋的那樣,軟件模塊(例如,用戶級應(yīng)用模塊、操作系統(tǒng)模塊、虛擬機監(jiān)視器 模塊、特許的軟件模塊等)可W將部分寬度加載模式105改變(例如,通過改變運一個或多個 位)為對于部分寬度加載指令1〇2(例如,利用部分寬度加載指令的軟件)合適的、期望的或 計劃的一種部分寬度加載模式。
[0032] 解碼單元和/或處理器可W訪問部分寬度加載模式來確定要使用的當前的部分寬 度加載模式,而解碼單元可W根據(jù)所確定的部分寬度加載模式來對部分寬度加載指令解 碼。在某些實施例中,可W使用部分寬度加載模式來為部分寬度加載指令和/或其操作碼提 供不同的含義、解釋,和/或操作。在某些實施例中,解碼單元可包括依賴于部分寬度加載模 式的解碼邏輯104,該依賴于部分寬度加載模式的解碼邏輯104用于W依賴于、基于和/或符 合與指令相關(guān)聯(lián)的當前的部分寬度加載模式(例如,當指令被解碼時的模式)來對部分寬度 加載指令解碼。例如,可W在第一部分寬度加載模式中從部分寬度加載指令中解碼出第一 組一個或多個指令或控制信號,而在不同的第二組部分寬度加載模式中從部分寬度加載指 令(例如,相同的操作碼)中解碼出不同的第二組一個或多個指令或控制信號??蓮呐c當前 模式105-致的解碼單元輸出依賴于模式的指令或控制信號107。
[0033] 在某些實施例中,部分寬度加載指令可W不指定或W其他方式指示部分寬度加載 模式1〇5(例如,可W沒有用于在多種不同風(fēng)格的指令/操作之間進行選擇或區(qū)分或W其他 方式指定模式的指令位)。運一般有助于避免增加指令長度,可W潛在地允許使用指令長度 不準許此類附加位的技術(shù),可W潛在地減少或限制要解碼的位的數(shù)量,或提供其他潛在的 優(yōu)點。在某些實施例中,通過檢查部分寬度加載指令的任何位或全部位來辨別要使用哪一 種部分寬度加載模式也許是不可能的。
[0034] 再次參考圖1,存儲器子系統(tǒng)108與解碼單元103禪合,并與存儲器110禪合。本領(lǐng)域 中已知的各種常規(guī)存儲器子系統(tǒng)都是合適的。響應(yīng)于和/或由于部分寬度加載指令1〇2(例 如,響應(yīng)于對應(yīng)于當前的部分寬度加載模式105的一個或多個經(jīng)解碼的指令或控制信號), 存儲器子系統(tǒng)可操作W將數(shù)據(jù)從所指示的存儲器位置111加載到處理器中。如先前所述,部 分寬度加載指令可W指定或W其他方式指示具有部分寬度數(shù)據(jù)112的存儲器位置111。部分 寬度加載指令還可W指定或W其他方式指示將存儲部分寬度數(shù)據(jù)的目的地寄存器115。
[0035] 依賴于部分寬度加載模式的寄存器寫入單元114的實施例與解碼單元103、與存儲 器子系統(tǒng)108, W及與目的地寄存器115禪合。為簡明起見,也可將依賴于部分寬度加載模式 的寄存器寫入單元簡稱為依賴于模式的寄存器寫入單元或寄存器寫入單元。響應(yīng)于和/或 由于部分寬度加載指令1〇2(例如,響應(yīng)于對應(yīng)于當前的部分寬度加載模式105的一個或多 個經(jīng)解碼的指令或控制信號107),依賴于模式的寄存器寫入單元可操作W寫入或W其他方 式訪問寄存器115,從而使結(jié)果被存儲在其中,該結(jié)果依賴于和/或符合部分寬度加載模式。 在某些實施例中,依賴于模式的寄存器寫入單元可操作W將所加載的部分寬度數(shù)據(jù)112的 至少部分寫入到寄存器的部分寬度,并可操作W利用存儲在寄存器的其余寬度中的、具有 依賴于和/或符合對應(yīng)的部分寬度加載模式的位值的位組117,118來結(jié)束或完成對寄存器 的寫入。依賴于模式的寄存器寫入單元和/或處理器可包括響應(yīng)于部分寬度加載指令的特 定或具體的邏輯(例如,潛在地與固件和/或軟件中的一個或多個組合的電路或其他硬件)。
[0036] 不同類型的部分寬度加載模式的各種組合適合于不同的實施例。示例包括但不僅 限于,符號擴展的部分寬度加載模式、零擴展的部分寬度加載模式、合并的部分寬度加載模 式W及本領(lǐng)域中已知的其他部分寬度加載模式。在符號擴展的部分寬度加載模式中,可將 部分寬度數(shù)據(jù)的符號位(例如,具有二進制零或二進制一的值的最高有效位)復(fù)制、擴展,或 W其他方式存儲或?qū)懭氲轿幢徊糠謱挾葦?shù)據(jù)占據(jù)的寄存器的其余寬度中。在零擴展的部分 寬度加載模式中,可將二進制零插入、擴展,或W其他方式存儲或?qū)懭氲轿幢徊糠謱挾葦?shù)據(jù) 占據(jù)的寄存器的其余寬度中。在合并的部分寬度加載模式中,可將部分寬度數(shù)據(jù)與在寄存 器寫入時已經(jīng)存儲在寄存器中的初始的或預(yù)先存在的位或數(shù)據(jù)合并。此初始的或預(yù)先存在 的數(shù)據(jù)不必被修改或覆寫。例如,合并部分寬度加載模式可將覆寫初始的或預(yù)先存在的數(shù) 據(jù)的最低階部分的部分寬度存儲在該最低階的部分中,并且可將初始的或預(yù)先存在的數(shù)據(jù) 保留在寄存器的其余的最高階部分中。在各實施例中,可W使用兩個或更多運些或其他類 型的部分寬度加載模式的組合??蒞在不同的模式下將不同的對應(yīng)值116寫入到目的地寄 存器。在所示示例中,在零擴展的部分寬度加載模式中,可將部分寬度數(shù)據(jù)112包括在目的 地寄存器的部分(例如,最低階的一半或其他部分)中,并且可將全零117存儲在目的地寄存 器的另一部分(例如,最高階部分)中。在符號擴展的部分寬度加載模式中,可將部分寬度數(shù) 據(jù)112包括在目的地寄存器的部分(例如,最低階的一半或其他部分)中,并且可將符號位 118(例如,基于部分寬度數(shù)據(jù)112的最高有效位)存儲在目的地寄存器的另一部分(例如,最 高階的一半或其他部分)中。在其他實施例中,可W使用其他類型的不同的部分寬度加載或 不同的部分寬度加載的組合。例如,在另一個實施例中,可替代所示模式中的一種模式或作 為附加的第Ξ種類型的部分寬度加載模式來使用合并擴展式部分寬度加載模式(參見例如 圖3)(或其他類型的部分寬度加載模式)。
[0037] 為了避免混淆本描述和概念,已示出并描述了簡化的處理器101。設(shè)備可包括通常 在處理器中發(fā)現(xiàn)的各種其他公知的組件。此類組件的示例包