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