向量異常碼的制作方法
【專利說明】向量異常碼
【背景技術(shù)】
[0001] 一個(gè)或多個(gè)方面一般地設(shè)及計(jì)算環(huán)境內(nèi)的處理,更具體地說,設(shè)及此類環(huán)境內(nèi)的 向量處理。
[0002] 計(jì)算環(huán)境內(nèi)的處理包括控制一個(gè)或多個(gè)中央處理單元(CPU)的操作。一般而言, 中央處理單元的操作通過存儲(chǔ)裝置中的指令控制。指令可具有不同的格式并且通常指定要 在執(zhí)行多種操作時(shí)使用的寄存器。
[0003] 取決于中央處理單元的架構(gòu),可使用多種類型的寄存器,包括例如通用寄存器、專 用寄存器、浮點(diǎn)寄存器和/或向量寄存器。不同類型的寄存器可與不同類型的指令一起使 用。例如,浮點(diǎn)寄存器存儲(chǔ)要由浮點(diǎn)指令使用的浮點(diǎn)數(shù);向量寄存器保存用于由包括向量指 令的單指令多數(shù)據(jù)(SMID)指令執(zhí)行的向量處理的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004] 通過提供用于執(zhí)行機(jī)器指令的計(jì)算機(jī)程序產(chǎn)品,克服了現(xiàn)有技術(shù)的缺點(diǎn)并提供了 優(yōu)點(diǎn)。所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可被處理電路讀取并且存儲(chǔ)由所 述處理電路執(zhí)行W執(zhí)行一種方法的指令。所述方法例如包括;由處理器確定在計(jì)算環(huán)境內(nèi) 執(zhí)行的指令已經(jīng)導(dǎo)致異常,所述指令針對(duì)包括多個(gè)元素的向量寄存器執(zhí)行操作;W及基于 所述異常獲得向量異常碼,所述向量異常碼包括所述向量寄存器的所述多個(gè)元素中導(dǎo)致所 述異常的元素的位置。
[0005] 此處還描述并要求保護(hù)與一個(gè)或多個(gè)方面相關(guān)的方法和系統(tǒng)。進(jìn)一步地,此處還 描述并可W要求保護(hù)與一個(gè)或多個(gè)方面相關(guān)的服務(wù)。
[0006] 通過一個(gè)或多個(gè)方面的技術(shù)實(shí)現(xiàn)其他特征和優(yōu)點(diǎn)。其他實(shí)施例和方面在此做出詳 細(xì)描述并且被視為權(quán)利要求的一部分。
【附圖說明】
[0007] 在說明書結(jié)尾處的權(quán)利要求中作為實(shí)例具體指出并明確要求保護(hù)一個(gè)或多個(gè)方 面。當(dāng)結(jié)合附圖閱讀下面的詳細(xì)說明時(shí),上述及其他目標(biāo)、特征和優(yōu)點(diǎn)是顯而易見的,該些 附圖是:
[0008] 圖1示出結(jié)合和使用一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)例;
[0009] 圖2A示出結(jié)合和使用一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一實(shí)例;
[0010] 圖2B示出圖2A的存儲(chǔ)器的進(jìn)一步細(xì)節(jié);
[0011] 圖3示出寄存器文件的一個(gè)實(shí)例;
[0012] 圖4A示出向量浮點(diǎn)測(cè)試數(shù)據(jù)類立即指令的格式的一個(gè)實(shí)例;
[0013] 圖4B示出圖4A的向量浮點(diǎn)測(cè)試數(shù)據(jù)類立即指令的第S操作數(shù)的位值的一個(gè)實(shí) 例;
[0014] 圖4C示出與圖4A的向量浮點(diǎn)測(cè)試數(shù)據(jù)類立即指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;
[0015] 圖4D示出圖4A的向量浮點(diǎn)測(cè)試數(shù)據(jù)類立即指令的執(zhí)行的框圖的一個(gè)實(shí)例;
[0016]圖4E示出二進(jìn)制浮點(diǎn)數(shù)據(jù)的多種類的定義的一個(gè)實(shí)例;
[0017]圖5A示出向量校驗(yàn)和指令的格式的一個(gè)實(shí)例;
[001引圖5B示出與圖5A的向量校驗(yàn)和指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;
[0019] 圖5C示出圖5A的向量校驗(yàn)和指令的執(zhí)行的框圖的一個(gè)實(shí)例;
[0020] 圖6A示出向量伽羅瓦域乘法求和與累加指令的格式的一個(gè)實(shí)例;
[0021] 圖6B示出與圖6A的向量伽羅瓦域乘法求和與累加指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施 例;
[0022] 圖6C示出圖6A的向量伽羅瓦域乘法求和與累加指令的執(zhí)行的框圖的一個(gè)實(shí)例;
[0023] 圖7A示出向量生成掩碼指令的格式的一個(gè)實(shí)例;
[0024] 圖7B示出與圖7A的向量生成掩碼指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;
[0025] 圖7C示出圖7A的向量生成掩碼指令的執(zhí)行的框圖的一個(gè)實(shí)例;
[0026] 圖8A示出向量元素旋轉(zhuǎn)和掩碼下插入指令的一個(gè)實(shí)例;
[0027] 圖8B示出與圖8A的向量元素旋轉(zhuǎn)和掩碼下插入指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;
[0028] 圖8C示出圖8A的向量元素旋轉(zhuǎn)和掩碼下插入指令的執(zhí)行的框圖的一個(gè)實(shí)例;
[0029] 圖9A示出向量異常碼的一個(gè)實(shí)例;
[0030] 圖9B示出設(shè)置圖9A的向量異常碼的邏輯的一個(gè)實(shí)施例;
[0031] 圖10示出結(jié)合一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;
[0032] 圖11示出主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;
[0033] 圖12示出計(jì)算機(jī)系統(tǒng)的進(jìn)一步實(shí)例;
[0034]圖13示出包括計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;
[00巧]圖14示出計(jì)算機(jī)系統(tǒng)的各種元素的一個(gè)實(shí)施例;
[0036]圖15A示出圖14的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;
[0037] 圖15B示出圖14的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;
[0038]圖15C示出圖14的計(jì)算機(jī)系統(tǒng)的加載/存儲(chǔ)單元的一個(gè)實(shí)施例;W及
[0039] 圖16示出仿真主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例。
【具體實(shí)施方式】
[0040] 根據(jù)一個(gè)或多個(gè)方面,提供了包括多種向量指令W及向量異常處理的向量工具。 此處描述的每個(gè)指令是使用一個(gè)或多個(gè)向量寄存器(在此也稱為向量)的單指令多數(shù)據(jù) (SIMD)指令。向量寄存器例如是處理器寄存器(也稱為硬件寄存器),它是作為中央處理 單元(CPU)或其他處理器的一部分可用的少量存儲(chǔ)(例如,非主存儲(chǔ)器)。每個(gè)向量寄存器 包含具有一個(gè)或多個(gè)元素的向量操作數(shù),元素的長(zhǎng)度例如為1、2、4或8個(gè)字節(jié)。在其他實(shí) 施例中,元素能夠具有其他大小,并且向量指令無需為SIMD指令。
[0041] 參考圖1描述結(jié)合和使用一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。計(jì)算環(huán)境 100例如包括處理器102 (例如,中央處理單元)、存儲(chǔ)器104 (例如,主存儲(chǔ)器),W及一個(gè) 或多個(gè)輸入/輸出(I/O)設(shè)備和/或接口 106,該些元件例如經(jīng)由一個(gè)或多個(gè)總線108和/ 或其他連接相互禪接。
[0042] 在一個(gè)實(shí)例中,處理器102基于國(guó)際商業(yè)機(jī)器公司提供的z/Architecture,并 且是諸如SystemZ服務(wù)器之類的服務(wù)器的一部分,該服務(wù)器也由國(guó)際商業(yè)機(jī)器公司提 供并實(shí)現(xiàn)z/Architec1:ure。z/Architec1:ure的一個(gè)實(shí)施例在標(biāo)題為"z/Architec1:ure PrinciplesofOperation(z/Architec1:ure操作原理,編號(hào)為SA22-7832-09 的IBM? 出版物,第十版,2012年9月)的IBM?出版物中描述,該出版物的全部?jī)?nèi)容在此納入作 為參考。在一個(gè)實(shí)例中,執(zhí)行諸如z/OS的操作系統(tǒng)的處理器也由國(guó)際商業(yè)機(jī)器公司提供。 IBM⑧、Z/ARCHITECTURE⑧和Z/OS⑧是位于美國(guó)紐約阿蒙克的國(guó)際商業(yè)機(jī) 器公司的注冊(cè)商標(biāo)。此處使用的其他名稱可W是國(guó)際商業(yè)機(jī)器公司或其他公司的注冊(cè)商 標(biāo)、商標(biāo)或產(chǎn)品名。
[0043] 在進(jìn)一步實(shí)施例中,處理器102基于國(guó)際商業(yè)機(jī)器公司提供的化wer Architec1:ure。PowerArchitec1:ure的一個(gè)實(shí)施例在叩owerISA?版本 2. 06,修訂B(國(guó) 際商業(yè)機(jī)器公司,2010年7月23日)"中描述,該出版物的全部?jī)?nèi)容在此納入作為參考。 POW邸ARCHITECTURE風(fēng)是國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo)。
[0044] 在另一實(shí)施例中,處理器102基于英特爾公司提供的Intel架構(gòu)。Intel 架構(gòu)的一個(gè)實(shí)施例在"In化1⑩64andIA-32Architec1:uresDeveloper,S Manual:Vol.2B,InstructionsSetReference,A-L(Intel⑩ 64 和IA-32 架構(gòu)開發(fā) 者指南:卷2B,指令集參考,A-U訂單號(hào):253666-04抓S,2013年I月)"和"Intel⑩ 64andIA-32ArchitecturesDeveloper'sManual:Vol. 2B,InstructionsSet Reference,M-Z(]ntd⑩64和IA-32架構(gòu)開發(fā)者指南:卷2B,指令集參考,M-Z,訂單號(hào); 253667-04抓S,2013年1月)"中描述,它們?nèi)績(jī)?nèi)容均在此納入作為參考。Intel?.是位 于加利福巧亞州圣克拉拉的英特爾公司的注冊(cè)商標(biāo)。
[0045] 參考圖2A描述結(jié)合和使用一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一實(shí)施例。在該實(shí)例 中,計(jì)算環(huán)境200例如包括本機(jī)中央處理單元202、存儲(chǔ)器204,W及一個(gè)或多個(gè)輸入/輸 出設(shè)備和/或接口 206,該些元件例如經(jīng)由一個(gè)或多個(gè)總線208和/或其他連接相互禪接。 例如,計(jì)算環(huán)境200可W包括位于紐約阿蒙克的國(guó)際商業(yè)機(jī)器公司提供的化werPC處理 器、pSeries服務(wù)器或xSeries服務(wù)器;位于加利福巧亞帕洛阿爾托的惠普公司提供的帶有 IntelItaniumII處理器的HPSuperdome;和/或其他基于國(guó)際商業(yè)機(jī)器公司、惠普公司、 英特爾、化acle或其他公司提供的架構(gòu)的機(jī)器。
[0046] 本機(jī)中央處理單元202包括一個(gè)或多個(gè)本機(jī)寄存器210,例如在環(huán)境內(nèi)的處理期 間使用的一個(gè)或多個(gè)通用寄存器和/或一個(gè)或多個(gè)專用寄存器。該些寄存器包括表示環(huán)境 在任何特定時(shí)刻的狀態(tài)的信息。
[0047] 此外,本機(jī)中央處理單元202執(zhí)行存儲(chǔ)在存儲(chǔ)器204中的指令和代碼。在一個(gè)特 定實(shí)例中,中央處理單元執(zhí)行存儲(chǔ)在存儲(chǔ)器204中的仿真器代碼212。該代碼使得在一個(gè)架 構(gòu)配置中的處理環(huán)境能夠仿真另一架構(gòu)。例如,仿真器代碼212允許基于z/Architec化re W外的架構(gòu)(例如化werPC處理器、pSeries服務(wù)器、xSeries服務(wù)器、HPSuperdome服務(wù) 器等)的機(jī)器仿真z/Architec化re并且執(zhí)行基于z/Architec化re開發(fā)的軟件和指令。
[0048] 參考圖2B描述與仿真器代碼212相關(guān)的進(jìn)一步細(xì)節(jié)。存儲(chǔ)在存儲(chǔ)器204中的來 賓指令250包括被開發(fā)為在本機(jī)CPU202的架構(gòu)W外的架構(gòu)中執(zhí)行的軟件指令(例如,與 機(jī)器指令相關(guān)聯(lián))。例如,來賓指令250可能已被設(shè)計(jì)為在z/Architec化re處理器102上 執(zhí)行,但是實(shí)際上,在例如可W是IntelItaniumII處理器的本機(jī)CPU202上被仿真。在 一個(gè)實(shí)例中,仿真器代碼212包括指令獲取例程252W從存儲(chǔ)器204獲得一個(gè)或多個(gè)來賓 指令250,W及可選地為所獲得的指令提供本地緩沖。它還包括指令轉(zhuǎn)換例程254W確定已 被獲得的來賓指令的類型W及將來賓指令轉(zhuǎn)換成一個(gè)或多個(gè)對(duì)應(yīng)的本機(jī)指令256。該轉(zhuǎn)換 例如包括標(biāo)識(shí)要由來賓指令執(zhí)行的功能,W及選擇執(zhí)行此功能的本機(jī)指令(多個(gè))。
[0049] 進(jìn)一步地,仿真器212包括仿真控制例程260W導(dǎo)致執(zhí)行本機(jī)指令。仿真控制例 程260可使本機(jī)CPU202執(zhí)行仿真一個(gè)或多個(gè)之前獲得的來賓指令的本機(jī)指令的例程,并 且在此類執(zhí)行結(jié)束時(shí),將控制返回到指令獲取例程W仿真獲得下一來賓指令或下一組來賓 指令。本機(jī)指令256的執(zhí)行可包括將數(shù)據(jù)從存儲(chǔ)器204加載到寄存器內(nèi);將數(shù)據(jù)從寄存器 存儲(chǔ)回存儲(chǔ)器;或執(zhí)行轉(zhuǎn)換例程所確定的某些類型的算術(shù)或邏輯運(yùn)算。
[0050] 每個(gè)例程例如通過存儲(chǔ)在存儲(chǔ)器中并由本機(jī)中央處理單元202執(zhí)行的軟件實(shí)現(xiàn)。 在其他實(shí)例中,一個(gè)或多個(gè)例程或操作通過固件、硬件、軟件或它們的某種組合實(shí)現(xiàn)。被仿 真的處理器的寄存器可使用本機(jī)CPU的寄存器210或使用存儲(chǔ)器204中的位置進(jìn)行仿真。 在多個(gè)實(shí)施例中,來賓指令250、本機(jī)指令256和仿真器代碼212可駐留在同一存儲(chǔ)器中,也 可分布在不同的存儲(chǔ)設(shè)備之間。
[0051] 如此處所用,固件例如包括處理器的微代碼、毫碼和/或宏代碼。它例如包括在較 高級(jí)機(jī)器代碼的實(shí)現(xiàn)中使用的硬件級(jí)指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,它例如包括 專用代碼,此專用代碼典型地作為微代碼(包括特定于底層硬件的可信軟件或微代碼)提 供并且控制對(duì)系統(tǒng)硬件的操作系統(tǒng)訪問。
[0052] 在一個(gè)實(shí)例中,被獲得、轉(zhuǎn)換和執(zhí)行的來賓指令250是此處描述的指令。具有一種 架構(gòu)(例如,z/Architec化re)的指令被從存儲(chǔ)器取回,被轉(zhuǎn)換,并且被表示為具有另一種 架構(gòu)(例如,化we巧C、pSeries、xSeries、Intel等)的一系列本機(jī)指令256。該些本機(jī)指 令然后被執(zhí)行。
[0053] 在一個(gè)實(shí)施例中,此處描述的指令是作為向量工具的一部分的向量指令。向量工 具例如提供具有從1到16個(gè)元素的固定大小的向量。每個(gè)向量包括被工具中定義的向量 指令操作的數(shù)據(jù)。在一個(gè)實(shí)施例中,如果向量包括多個(gè)元素,則每個(gè)元素與其他元素并行地 被處理。直到所有元素的處理完成時(shí)才發(fā)生指令完成。在其他實(shí)施例中,元素被部分地并 行處理和/或按順序處理。
[0054] 向量指令可作為多種架構(gòu)的一部分被實(shí)現(xiàn),該些架構(gòu)包括但不限于Z/ Architec1:ure、Powe;r、x86、IA-32、IA-64 等。盡管此處描述的實(shí)施例針對(duì)z/Architec1:ure, 但是此處描述的向量指令W及一個(gè)或多個(gè)其他方面可基于許多其他架構(gòu)。z/Architec化re 只是一個(gè)實(shí)例。
[00巧]在其中向量工具作為z/Architec化re的一部分被實(shí)現(xiàn)的一個(gè)實(shí)施例中,為了使 用向量寄存器和指令,指定的控制寄存器(例如,控制寄存器0)中的向量使能控制和寄存 器控制例如被設(shè)置為1。如果安裝向量工具并執(zhí)行向量指令而不設(shè)置使能控制,則識(shí)別到數(shù) 據(jù)異常。如果未安裝向量工具并執(zhí)行向量指令,則識(shí)別到操作異常。
[0056] 在一個(gè)實(shí)施例中,存在32個(gè)向量寄存器,并且其他類型的寄存器可被映射到四分 之一的所述向量寄存器。例如,如圖3所示,寄存器文件300包括32個(gè)向量寄存器302,并 且每個(gè)寄存器的長(zhǎng)度為128位。十六個(gè)浮點(diǎn)寄存器304 (長(zhǎng)度為64位)可覆蓋向量寄存器。 因此,作為一個(gè)實(shí)例,當(dāng)浮點(diǎn)寄存器2被修改時(shí),向量寄存器2也被修改。其他類型的寄存 器的其他映射也是可能的。
[0057] 向量數(shù)據(jù)例如W與其他數(shù)據(jù)格式相同的從左到右的順序出現(xiàn)在存儲(chǔ)裝置中。數(shù)據(jù) 格式的編號(hào)為0-7的位構(gòu)成存儲(chǔ)裝置中的最左邊(編號(hào)最低)字節(jié)位置中的字節(jié),位8-15 形成下一順序位置中的字節(jié),W此類推。在進(jìn)一步實(shí)例中,向量數(shù)據(jù)可WW另一順序(例如 從右到左)出現(xiàn)在存儲(chǔ)裝置中。
[0058] 此處描述的每個(gè)向量指令具有多個(gè)字段,并且一個(gè)或多個(gè)字段具有與其關(guān)聯(lián)的下 標(biāo)號(hào)。與指令的字段關(guān)聯(lián)的下標(biāo)號(hào)表示該字段適用的操作數(shù)。例如,與向量寄存器Vi關(guān)聯(lián) 的下標(biāo)號(hào)1表示Vi中的寄存器包括第一操作數(shù),W此類推。寄存器操作數(shù)的長(zhǎng)度為1個(gè)寄 存器,該長(zhǎng)度例如為128位。
[0059] 進(jìn)一步地,使用向量工具提供的許多向量指令具有包括指定位的字段。該字段 (也稱為寄存器擴(kuò)展位或RXB)包括每個(gè)向量寄存器命名的操作數(shù)的最高位。寄存器命名 (registerdesignation)的未被指令指定的位將被保留并被設(shè)置為0。最高位例如被串接 到四位寄存器命名的左側(cè)W創(chuàng)建五位向量寄存器命名。
[0060] 在一個(gè)實(shí)例中,RXB字段包括四個(gè)位(例如,位0-3),該些位的定義如下;
[006。 0-指令的第一向量寄存器命名(例如,在位8-11中)的最高位。
[006引 1-指令的第二向量寄存器命名(例如,在位12-15中)的最高位(如果有)。
[0063] 2-指令的第S向量寄存器命名(例如,在位16-19中)的最高位(如果有)。
[0064] 3-指令的第四向量寄存器命名(例如,在位32-35中)的最高位(如果有)。
[0065] 每個(gè)位例如通過匯編器設(shè)置為0或1,具體取決于寄存器編號(hào)。例如,對(duì)于寄存器 0-15,位被設(shè)置為0 ;對(duì)于寄存器16-31,位被設(shè)置為1,等等。
[0066] 在一個(gè)實(shí)施例中,每個(gè)RXB位都是包括一個(gè)或多個(gè)向量寄存器的指令中的特定位 置的擴(kuò)展位。例如,在一個(gè)或多個(gè)向量指令中,RXB的位0是位置8-11的