两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

浮點舍入量確定處理器、方法、系統(tǒng)和指令的制作方法

文檔序號:6485527閱讀:180來源:國知局
浮點舍入量確定處理器、方法、系統(tǒng)和指令的制作方法
【專利摘要】一方面,方法包括接收浮點舍入量確定指令。該指令指示一個或多個浮點數(shù)據(jù)元素的源,指示小數(shù)點之后的分數(shù)位的數(shù)量,且指示目的地存儲位置。響應于浮點舍入量確定指令將包括一個或多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果存儲在目的地存儲位置。一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個包括相應位置中的源的相應浮點數(shù)據(jù)元素與已經(jīng)被舍入到指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。公開了其它方法、裝置、系統(tǒng)和指令。
【專利說明】淳點舍入量確定處理器、方法、系統(tǒng)和指令
[0001] 背景

【技術領域】
[0002] 實施例涉及處理器。具體地,實施例涉及響應于浮點舍入量確定指令確定浮點舍 入量的處理器。
[0003] 背景信息
[0004] 浮點數(shù)通常用于處理器、計算機系統(tǒng)和其它電子設備。浮點數(shù)的一個優(yōu)點是它們 允許按相對緊湊的數(shù)值格式和/或位數(shù)表示寬范圍的數(shù)值。
[0005] 現(xiàn)有技術中已知若干不同的浮點格式。浮點格式通常將用于表示浮點數(shù)的位分攤 成若干組成(constituent)字段,稱為浮點數(shù)的符號、有效位和指數(shù)。
[0006] 在本領域中已知用于處理浮點數(shù)的各種指令。例如,已知用于在浮點和整數(shù)格式 之間轉(zhuǎn)換的指令作為另一個示例,已知用于將標量或打包單精度或雙精度浮點數(shù)據(jù)元素分 別舍入為單精度或雙精度浮點格式的整數(shù)的指令。
[0007] 附圖的若干視圖的簡要說明
[0008] 可通過參考以下描述以及用于示出實施例的附圖最佳地理解本發(fā)明。在附圖中:
[0009] 圖1是具有含一個或多個浮點舍入量確定指令的指令集的處理器的實施例的框 圖。
[0010] 圖2A-E是適當?shù)母↑c格式的實施例的框圖。
[0011] 圖3是具有操作用于執(zhí)行浮點舍入量確定指令的實施例的浮點執(zhí)行單元的指令 處理裝置的實施例的框圖。
[0012] 圖4是處理浮點舍入量確定指令的實施例的方法的實施例的流程框圖。
[0013] 圖5是浮點舍入量確定操作的實施例的框圖,其涉及將一個或多個浮點數(shù)的一個 或多個有效數(shù)舍入成所指示數(shù)量的分數(shù)位。
[0014] 圖6是適當?shù)母↑c源和/或結(jié)果格式的若干示例實施例的框圖。
[0015] 圖7是帶數(shù)據(jù)元素廣播的浮點舍入量確定操作(a floating point round-off amount determination with data element broadcast operation)的實施例的框圖。
[0016] 圖8是帶掩碼的浮點舍入量確定操作(a floating point round-off amount determination with masking operation)的實施例的框圖。
[0017] 圖9是一組合適的打包數(shù)據(jù)操作掩碼寄存器的實施例的框圖。
[0018] 圖10是浮點舍入量確定指令格式的實施例的框圖。
[0019] 圖11是適當?shù)牧⒓磾?shù)的特定示例實施例的框圖。
[0020] 圖12是一組合適的打包數(shù)據(jù)寄存器的實施例的框圖。
[0021] 圖13是包括存儲一個或多個浮點舍入量確定指令的機器可讀存儲介質(zhì)的制品的 框圖。
[0022] 圖14A是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其A類指令模板的 方框圖。
[0023] 圖14B是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其B類指令模板的 方框圖。
[0024] 圖15A是示出根據(jù)本發(fā)明的實施例的示例性專用向量友好指令格式的框圖。
[0025] 圖15B是示出根據(jù)本發(fā)明的實施例的構(gòu)成完整操作碼字段的具有專用向量友好 指令格式的字段的方框圖。
[0026] 圖15C是示出根據(jù)本發(fā)明的實施例的構(gòu)成寄存器索引字段的具有專用向量友好 指令格式的字段的框圖。
[0027] 圖是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成擴充(augmentation)操作字段的 具有專用向量友好指令格式的字段的框圖。
[0028] 圖16是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)的方框圖。
[0029] 圖17A是示出根據(jù)本發(fā)明的各實施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0030] 圖17B示出處理器核,該核包括耦合到執(zhí)行引擎單元的前端單元,并且兩者耦合 到存儲器單元。
[0031] 圖18A是根據(jù)本發(fā)明的實施例的連接到管芯上(on-die)互聯(lián)網(wǎng)絡且具有第二級 (L2)高速緩存的本地子集的單處理器核的方框圖。
[0032] 圖18B是根據(jù)本發(fā)明的各實施例的圖18A中的處理器核的一部分的展開圖。
[0033] 圖19是根據(jù)本發(fā)明的實施例的可具有一個以上核、可具有集成存儲器控制器、并 且可具有集成圖形的處理器的方框圖。
[0034] 圖20示出根據(jù)本發(fā)明的實施例的系統(tǒng)的方框圖。
[0035] 圖21示出根據(jù)本發(fā)明的實施例的第一更具體的示例性系統(tǒng)的方框圖。
[0036] 圖22示出根據(jù)本發(fā)明的實施例的第二更具體的示例性系統(tǒng)的方框圖。
[0037] 圖23示出根據(jù)本發(fā)明的實施例的片上系統(tǒng)(SoC)的方框圖。
[0038] 圖24是根據(jù)本發(fā)明的實施例的對比使用軟件指令變換器將源指令集中的二進制 指令變換成目標指令集中的二進制指令的框圖。

【具體實施方式】
[0039] 本文中公開的是浮點舍入量確定指令,用于執(zhí)行該浮點舍入量確定指令的處理 器,在處理或執(zhí)行浮點舍入量確定指令時處理器執(zhí)行的方法,以及合并一個或多個處理器 以處理或執(zhí)行該浮點舍入量確定指令的系統(tǒng)。在以下描述中,闡述多個特定細節(jié)(例如,特 定處理器配置、操作序列、指令格式、浮點格式、微架構(gòu)細節(jié)等)。然而,在沒有這些具體細節(jié) 的情況下,也可實踐實施例。在其他實例中,未詳細示出公知電路、結(jié)構(gòu)和技術,以避免混淆 對本描述的理解。
[0040] 圖1是具有含一個或多個浮點舍入量確定指令103的指令集102的處理器100的 實施例的框圖。該處理器可以是各種復雜指令集計算(CISC)處理器、各種精簡指令集計算 (RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中 的任何處理器。在一些實施例中,處理器可以是通用處理器(例如,在臺式、膝上型等計算 機中使用的類型的通用微處理器)。替換地,處理器可以是專用處理器。合適的專用處理器 的示例包括但不限于,網(wǎng)絡處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入 式處理器、數(shù)字信號處理器(DSP)、浮點協(xié)處理器以及控制器(例如,微控制器),僅列舉數(shù) 例。
[0041] 處理器具有指令集架構(gòu)(ISA) 101。ISA表示處理器的架構(gòu)中涉及編程的那部分。 ISA通常包括原生指令、架構(gòu)寄存器、數(shù)據(jù)類型、尋址模式、存儲器架構(gòu)、中斷和異常處理以 及處理器的外部輸入和輸出(I/O)。ISA與微架構(gòu)不同,微架構(gòu)通常表示被選擇用于實現(xiàn) ISA的特定處理器設計技術。帶有不同的微架構(gòu)的處理器可以共享共同的ISA。
[0042] ISA包括處理器支持的指令集102。指令集的這些指令表示宏指令(例如,提供給 處理器以供執(zhí)行的指令),與微指令或微操作(例如,處理器的解碼器解碼宏指令而得到的 微指令或微操作)不同。指令集包括一個或多個浮點舍入量確定指令103。在一些實施例 中,浮點舍入量確定指令可操作用于導致處理器確定一個或多個源浮點數(shù)據(jù)元素和一個或 多個對應的源浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。以下進一步公開浮點舍入量確定指令 的各不同實施例。處理器還包括浮點執(zhí)行邏輯108,該邏輯可操作用于執(zhí)行或處理浮點舍入 量確定指令103。
[0043] ISA還包括架構(gòu)可視寄存器(例如,架構(gòu)寄存器組)104。架構(gòu)寄存器通常表示管 芯上的處理器存儲位置。架構(gòu)寄存器此處也可以被簡稱為寄存器。短語架構(gòu)寄存器、寄存 器組、以及寄存器在本申請中用于表示對軟件和/或程序器可見(例如,軟件可見的)的 寄存器和/或由通用宏指令指定用來標識操作數(shù)的寄存器,除非另外指定或清楚地明顯可 知。這些寄存器與給定微架構(gòu)中的其他非架構(gòu)的或非在架構(gòu)上可見的寄存器(例如,指令 所使用的臨時寄存器,重新排序緩沖器,引退寄存器等等)不同。
[0044] 所示出的架構(gòu)寄存器包括打包數(shù)據(jù)寄存器105。每個打包數(shù)據(jù)寄存器可操作用于 存儲打包數(shù)據(jù)、向量數(shù)據(jù)或者SIMD數(shù)據(jù)。在一些實施例中,打包數(shù)據(jù)寄存器可用于存儲與 浮點舍入量確定指令103的打包實施例相關聯(lián)的打包浮點數(shù)據(jù)。在一些實施例中,打包數(shù) 據(jù)寄存器可用于存儲與浮點舍入量確定指令103的標量實施例相關聯(lián)的標量浮點數(shù)據(jù)。在 一些實施例中,打包數(shù)據(jù)寄存器還可任選地能夠存儲整數(shù),但這不是必須的?;蛘?,架構(gòu)寄 存器可包括單獨標量浮點寄存器的集合,用以分別存儲用于浮點舍入量確定指令的標量實 施例的標量浮點數(shù)據(jù)。
[0045] 在一些實施例中,寄存器可任選地包括掩碼寄存器106,然而這不是必須的。掩碼 寄存器可存儲打包數(shù)據(jù)操作掩碼,以對打包數(shù)據(jù)操作(例如與浮點舍入量確定指令相關聯(lián) 的打包數(shù)據(jù)浮點舍入量確定操作)進行掩碼或斷言。以下進一步討論掩碼寄存器和掩碼操 作。
[0046] 寄存器還包括控制和/或狀態(tài)寄存器107。在一些方面,控制和/或狀態(tài)寄存器中 的一個或多個可包括與浮點舍入量確定指令的執(zhí)行相關聯(lián)的狀態(tài)和/或控制信息(例如, 它可包括浮點舍入量確定指令所使用的默認舍入模式,除非存在由指令提供的舍入模式的 超馳(override))。
[0047] 浮點數(shù)的簡要討論可能是有幫助的。浮點數(shù)包括符號、有效數(shù)、基數(shù)和指數(shù),它們 的關系在等式1中示出:
[0048] A = (-1)符號*有效位數(shù)*基數(shù)指數(shù)等式1
[0049] 表達式"(-1)^"表示負一自乘到符號次冪。該表達式評估浮點數(shù)是正(+) 或負(-)。例如,當符號是整數(shù)〇時,浮點數(shù)是正,或者當符號是整數(shù)1時,浮點數(shù)是 負。有效數(shù)包括一定長度的數(shù)字串,該長度在很大程度上決定浮點數(shù)的精度。有效數(shù) 有時也被稱為有效數(shù)字、系數(shù)、分數(shù)或尾數(shù)。通常隱含地假設小數(shù)點(例如,十進制格 式的十進制小數(shù)點或二進制格式的二進制點)位于固定位置(例如,剛好在有效數(shù) 的最左或最高有效數(shù)字的右側(cè),在一些情況下可如下所討論地暗示)。二進制中示例 有效數(shù)可以是" L 10010010000111111011011"。小數(shù)點右側(cè)的有效數(shù)的數(shù)字(例如 "10010010000111111011011")可表示分數(shù)位。表達式"基數(shù)表示基數(shù)自乘到指數(shù)次冪。 基數(shù)通常是基數(shù)2 (對于二進制),基數(shù)10 (對于十進制)或基數(shù)16 (對于十六進制)?;鶖?shù) 有時被稱為底數(shù)(radix)。指數(shù)還可被稱為首數(shù)(characteristic)或縮放因數(shù)(scale)。 使基數(shù)自乘指數(shù)次冪實際上將小數(shù)點(例如,從隱含的或假設的開始位置)移動指數(shù)數(shù)量 的數(shù)位。如果指數(shù)為正,則小數(shù)點向右移動,或者如果指數(shù)為負,則小數(shù)點向左移動。
[0050] 圖2A-E是示出適當?shù)母↑c格式的示例實施例的框圖。電氣和電子工程師協(xié)會 (IEEE)已經(jīng)將標志IEEE754的各種版本中的這些格式標準化。
[0051] 圖2A示出半精度浮點格式210A。半精度浮點具有16位且也被稱為二進制16。 半精度浮點格式包括在位[9:0]中的10位的有效數(shù)211A、在位[14:10]中的5位的指數(shù) 212A以及在位[15]中的1位的符號213A。
[0052] 圖2B示出單精度浮點格式210B。單精度浮點格式具有32位且也被稱為二進制 32。單精度浮點格式包括在位[22:0]中的23位的有效數(shù)211B、在位[30:23]中的8位的 指數(shù)212B以及在位[31]中的1位的符號213B。
[0053] 圖2C示出雙精度浮點格式210C。雙精度浮點格式具有64位且也被稱為二進制 64。雙精度浮點格式包括在位[51:0]中的52位的有效數(shù)211C、在位[62:52]中的11位的 指數(shù)212C以及在位[63]中的1位的符號213C。目前,單精度和雙精度格式可能被大多數(shù) 處理器、計算機系統(tǒng)和電子設備廣泛使用。
[0054] 圖2D示出擴展雙精度浮點格式210D。擴展雙精度浮點格式具有80位。擴展雙 精度浮點格式包括在位[63:0]中的64位的有效數(shù)211D、在位[78:64]中的15位的指數(shù) 212D以及在位[79]中的1位的符號213D。
[0055] 圖2E示出四精度浮點格式210E。四精度浮點格式具有128位且也被稱為二進制 128。四精度浮點格式包括在位[111:0]中的112位的有效數(shù)211E、在位[126:112]中的 15位的指數(shù)212E以及在位[127]中的1位的符號213E。
[0056] 在這些浮點格式的每一個中,暗示或假設基數(shù)是基數(shù)2 (即,二進制),且不被以浮 點格式來單獨存儲。有效數(shù)的最高有效或最左位被稱為J位。隱含地假設J位是二進制1, 且一般不被存儲為浮點格式,而是提供附加精度而不需要被存儲的隱含或隱藏位(例如, 對于有效數(shù)明確具有23位的單精度浮點數(shù)實際具有24位精度)。通常假定小數(shù)點在J位 之后。指數(shù)通常具有指數(shù)偏移(exponent bias)。例如,半精度格式可具有指數(shù)偏移15,單 精度格式可具有指數(shù)偏移127,雙精度格式可具有指數(shù)偏移1023,而四精度格式可具有指 數(shù)偏移16383。如果需要的話,可在IEEE754中獲得關于浮點數(shù)和格式的進一步細節(jié)。
[0057] 這些只是數(shù)個說明性示例。其它適當?shù)母袷桨ǖ幌抻谑M制32、十進制64和 十進制128。此外,未來開發(fā)的其它格式通常也是適當?shù)摹?br> [0058] 圖3是具有可操作用于執(zhí)行包括浮點舍入量確定指令303的實施例的指令的浮點 執(zhí)行單元316的指令處理裝置300的實施例的框圖。在一些實施例中,指令處理裝置可以是 處理器和/或可被包括在處理器中。例如,在一些實施例中,指令處理裝置可以是圖1的處 理器或類似設備,或者可被包括在圖1的處理器或類似設備中。替代地,指令處理裝置可被 包括在不同的處理器或電子系統(tǒng)中。在一些實施例中,指令處理裝置可被包括在增加的或 單獨的浮點處理器或單元中,以引入或補充相關聯(lián)的處理器或電子設備的浮點處理能力。
[0059] 指令處理裝置300可接收浮點舍入量確定指令303。例如,可從指令取出單元、指 令隊列或存儲器接收該指令。浮點舍入量確定指令可表示由指令處理裝置識別并控制該裝 置執(zhí)行特定操作的機器指令、宏指令或控制信號。
[0060] 浮點舍入量確定指令可明確指定(例如通過位或一個或多個字段)或以其它方式 指示(例如,隱含地指示)源320。源包括一個或多個浮點數(shù)據(jù)元素321。在一些實施例 中,浮點舍入量確定指令可明確指定(例如,通過位或一個或多個字段)或以其它方式指示 (例如,隱含指示)小數(shù)點(例如,二進制小數(shù)點、十進制小數(shù)點或十六進制小數(shù)點)之后源 320的一個或多個浮點數(shù)據(jù)元素321中每一個將被舍入至的分數(shù)位的數(shù)量。在一些實施例 中,可在指令的立即數(shù)中指定分數(shù)位的數(shù)量?;蛘?,可在寄存器或其它存儲位置中指定或在 寄存器或其它存儲位置中隱含地指示分數(shù)位的數(shù)量。指令還可指定或以其它方式指示目的 地322 (例如目的地存儲位置),其中將根據(jù)指令存儲結(jié)果324。
[0061] 在一些實施例中,源320和目的地322可各自在指令處理裝置的一組打包數(shù)據(jù)寄 存器305內(nèi),盡管這不是必須的。打包數(shù)據(jù)寄存器可各自表示可操作用于存儲打包或向量 浮點數(shù)據(jù)的架構(gòu)可見的管芯上存儲位置(例如在具有執(zhí)行單元的管芯上)。在一些實施例 中,如前所述,打包數(shù)據(jù)寄存器還可操作用于存儲標量浮點數(shù)據(jù)。打包數(shù)據(jù)寄存器可使用公 知技術在不同的微架構(gòu)中以不同的方式實現(xiàn),并且不限于任何特定類型的電路。各種不同 類型的寄存器都是合適的,只要它們能夠存儲和提供如此處所描述的浮點數(shù)據(jù)。合適類型 的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動態(tài)分配的物理寄存 器、及其組合?;蛘?,在其它實施例中,源和/或目的地中的一個或多個可被存儲在打包數(shù) 據(jù)寄存器外的其它存儲位置中(例如,在標量浮點寄存器、存儲器位置等)。
[0062] 所示的指令處理裝置包括指令解碼單元或解碼器315。解碼器可接收和解碼高級 機器指令或宏指令(如,浮點舍入量確定指令303),并且輸出一個或多個低級微操作、微代 碼入口點、微指令或者反映和/或從原始較高級指令導出的其他低級指令或控制信號。這 一個或多個低級指令或控制信號可通過一個或多個較級(例如,電路級或硬件級)操作來 實現(xiàn)高級指令的操作。解碼器可以使用各種不同的機制來實現(xiàn),包括但不限于,微代碼只讀 存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)和本領域已知的用于實現(xiàn)解碼器 的其他機制。
[0063] 在其他實施例中,取代具有解碼器315,可使用指令仿真器、翻譯器、變形器 (morpher)、解釋器、或者其他指令轉(zhuǎn)換邏輯。各種不同類型的指令變換邏輯在本領域中是 已知的,并且可在軟件、硬件、固件、或者其組合中實現(xiàn)。指令轉(zhuǎn)換邏輯可接收指令,并且仿 真、翻譯、變形、解釋、或者以其他方式將接收的指令轉(zhuǎn)換成一個或多個對應的導出指令或 控制信號。在其他實施例中,可使用指令轉(zhuǎn)換邏輯和解碼器兩者。例如,該裝置可具有用于 將接收到的指令轉(zhuǎn)換成一個或多個中間指令的指令轉(zhuǎn)換邏輯,以及用于將一個或多個中間 指令解碼成可由該指令處理裝置的原生硬件執(zhí)行的一個或多個較低級指令或控制信號的 解碼器。指令變換邏輯中的一些或全部可位于其余指令處理裝置的管芯外,諸如在單獨的 管芯上或在管芯外的存儲器中。
[0064] 再次參考圖3,浮點執(zhí)行單元316與解碼器315耦合。執(zhí)行單元可從解碼器接收一 個或多個微操作、微代碼進入點、微指令、其他指令或其他控制信號,它們反映了浮點舍入 量確定指令303或者是從浮點舍入量確定指令303導出的。執(zhí)行單元也與源320和目的地 322耦合(例如,與打包數(shù)據(jù)寄存器305耦合)。浮點執(zhí)行單元包括設計成在浮點數(shù)上進行 操作(例如,浮點舍入量確定操作、浮點舍入操作、減法操作等)的邏輯(例如,通常在至少 一些電路上)。
[0065] 響應于浮點舍入量確定指令303和/或作為浮點舍入量確定指令303的結(jié)果,浮 點執(zhí)行單元316可操作用于將結(jié)果324存儲在目的地中,該浮點舍入量確定指令303指定 或以其它方式指示包括一個或多個浮點數(shù)據(jù)元素321的源320并且指定或以其它方式指示 目的地322。結(jié)果可包括一個或多個相應的結(jié)果浮點數(shù)據(jù)元素323。在一些實施例中,一個 或多個結(jié)果浮點數(shù)據(jù)元素中的每一個可包括相應位置中的源的相應浮點數(shù)據(jù)元素與已經(jīng) 被舍入到指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。換言之,每 個結(jié)果數(shù)據(jù)元素可表示(FP-FP*),其中FP表示浮點數(shù),且其中FP*表示浮點數(shù)的經(jīng)舍入的 版本。即,指令可導致執(zhí)行單元通過將一個或多個浮點數(shù)據(jù)元素舍入到所指示數(shù)量的分數(shù) 位來確定一個或多個浮點數(shù)據(jù)元素的經(jīng)舍入的版本,然后在舍入之前從最初的相應浮點數(shù) 據(jù)元素減去這些經(jīng)舍入的版本中的每一個。
[0066] 在一些實施例中,浮點舍入量確定指令可操作用于導致裝置將一個或多個源浮點 數(shù)據(jù)元素中的每一個的有效數(shù)舍入到給定數(shù)量的分數(shù)位。在該實施例中,浮點舍入量確定 指令可指定或以其它方式指示在小數(shù)點(例如,二進制小數(shù)點、十進制小數(shù)點或十六進制 小數(shù)點)之后或右側(cè),源的一個或多個浮點數(shù)據(jù)元素中的每一個將被舍入至的分數(shù)位的數(shù) 量。該過程不限于舍入到整數(shù)值。當指令指示的分數(shù)位的數(shù)量為0時,舍入到整數(shù)值是可 能的,但當指令指示的分數(shù)位的數(shù)量不是零時可實現(xiàn)舍入到非整數(shù)值。在一些實施例中, 浮點舍入量確定指令的立即數(shù)可包括用于明確指定在小數(shù)點(例如,二進制或十進制小數(shù) 點)之后源的一個或多個浮點數(shù)據(jù)元素中的每一個被舍入至的分數(shù)位的數(shù)量。在一個特定 實施例中,8位立即數(shù)的位[7:4]可指定該數(shù)量(例如,指定0和十五之間的數(shù)),盡管這不 是必須的。
[0067] 舍入浮點數(shù)指的是用另一個浮點數(shù)替換浮點數(shù),另一個浮點數(shù)表示(例如,近似 等于)最初浮點數(shù),但在小數(shù)點后具有較少數(shù)量的分數(shù)位。考慮對數(shù)派U )舍入的示例。按 熟悉的十進制計數(shù)法表示的至二十個小數(shù)位的數(shù)π是π = 3. 14159265358979323846…。 二進制計數(shù)法表示的至二十個小數(shù)位的數(shù)π是11.00100100001111110110...。在二進制 單精度浮點格式中,數(shù)η被表示為有效數(shù)=L 10010010000111111011,且指數(shù)=1。假設 我們想要舍入到5個分數(shù)位。在這種情況下,經(jīng)舍入的值將是11. 00100或11. 00101,這取 決于舍入模式。結(jié)果將按浮點返回,為1. 100100且二進制指數(shù)=1,或為1. 100101且二進 制指數(shù)=1 (這取決于舍入模式)。
[0068] 將浮點數(shù)的有效數(shù)舍入到給定數(shù)量的分數(shù)位用于各種不同的目的。作為一個示 例,當期望減少分數(shù)位的數(shù)量和/或降低浮點數(shù)的精度時,這可能是有用的。作為另一個示 例,當將浮點數(shù)轉(zhuǎn)換成小數(shù)點右側(cè)的給定數(shù)量的有效數(shù)字時,這可能是有用的。作為另一個 示例,在表查找之前利用具有所指示數(shù)量的分數(shù)位的經(jīng)舍入的有效數(shù),作為表的索引,這可 能是有用的。減少分數(shù)位的數(shù)量可幫助減小表的大?。ɡ?,條目的數(shù)量)。還期望知曉舍 入的量或與這種舍入操作相關聯(lián)的舍入量。作為一個示例,這可允許由于評估由于舍入引 起的誤差量。作為另一個示例,當在數(shù)學庫中處理指數(shù)、冪或其它超越函數(shù)時,這可能是有 用的。
[0069] 在單個指令的執(zhí)行范圍內(nèi)將一個或多個浮點數(shù)舍入到所指示數(shù)量的分數(shù)位并確 定舍入量的能力提供某些優(yōu)點。其它指令可能僅能夠?qū)⒏↑c數(shù)舍入到整數(shù),且這可能需要 四步過程:第一,通過將浮點數(shù)乘以與所期望的分數(shù)位的數(shù)量相對應的縮放因子來縮放浮 點數(shù),利用具有僅能舍入到整數(shù)量的限制的指令來將經(jīng)縮放的浮點數(shù)舍入為整數(shù),然后通 過縮放因子對經(jīng)舍入的整數(shù)值浮點數(shù)進行去縮放(descale),然后減去原始源。通常這些操 作中的一些可能傾向于是相對復雜的操作,潛在地涉及溢出控制和特殊值處理。
[0070] 通常,所指示的分數(shù)位的數(shù)量為正,但在一些實施例中,可允許所指示的分數(shù)位的 數(shù)量為負。舍入到負數(shù)個"分數(shù)"位可表示舍入到給定的底數(shù)冪的倍數(shù)。例如,當舍入到負 整數(shù)_k分數(shù)位時,結(jié)果將是N*底數(shù)k,其中N是整數(shù)。作為一個示例,5. 0按二進制舍入到 k = -1分數(shù)位得到4. 0或6. 0,這取決于舍入模式。作為另一個示例,15. 25按二進制舍入 到k = -2分數(shù)位得到12. 0或16. 0,這取決于舍入模式。舍入到負數(shù)個分數(shù)位的使用包括 但不限于用于函數(shù)中的特殊情況的測試(諸如P〇W:k = -l)以及數(shù)學庫中的其它使用。
[0071] 在一些實施例中,如果源數(shù)據(jù)元素是信令非數(shù)(signaling not a number, SNaN), 則可將其轉(zhuǎn)換成靜默非數(shù)(quiet not a number, QNaN)。在一些實施例中,如果源數(shù)據(jù)元 素是正或負無窮大,則返回至可以是〇。在一些實施例中,如果源數(shù)據(jù)元素是非正規(guī),則返回 至可以是源數(shù)據(jù)元素。
[0072] 浮點執(zhí)行單元和/或指令處理裝置可包括特定或具體的邏輯(例如,典型的是可 能與軟件和/或固件組合的電路或其它硬件),操作用于執(zhí)行和/或處理浮點舍入量確定指 令,并響應于指令(例如,響應于從指令導出的一個或多個微指令或其它控制信號)存儲結(jié) 果。在一些實施例中,浮點執(zhí)行單元可包括集成電路、數(shù)字電路、專用集成電路、模擬電路、 編程邏輯設備、包括指令的存儲設備或其組合。在一些實施例中,浮點執(zhí)行單元可包括至少 一些電路或硬件(例如,由晶體管、柵和/或其它集成電路組件配置的專用電路)。在一些 實施例中,執(zhí)行單元可包括浮點乘法和加法算術邏輯單元,但這不是必須的。
[0073] 為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置。在其他實施例 中,該指令處理裝置可任選地包括其他公知組件,諸如舉例而言,指令取出單元、指令調(diào)度 單元、分支預測單元、指令和數(shù)據(jù)的高速緩存、指令和數(shù)據(jù)的轉(zhuǎn)換后備緩沖器(translation lookaside buffer)、預取緩沖器、微指令隊列、微指令定序器、總線接口單元、二級或更高 級高速緩存、引退單元、寄存器重命名單元、處理器中包含的其他組件、以及上述的各種組 合。實施例可具有多個核、邏輯處理器或執(zhí)行引擎??刹僮饔糜趫?zhí)行本申請中公開的指令 實施例的執(zhí)行單元可被包含在核、邏輯處理器或執(zhí)行引擎中的至少一個、至少兩個、大多數(shù) 或全部中。實際上在處理器中存在組件的多種不同的組合和配置,并且各實施例不限于任 何特定組合或配置。
[0074] 圖4是處理浮點舍入量確定指令的實施例的方法425的實施例的流程框圖。在各 實施例中,方法可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號處理器)、或其 他種類型的數(shù)字邏輯設備或指令處理裝置執(zhí)行。在一些實施例中,方法425可由圖1的處 理器和/或圖3的指令處理裝置300來執(zhí)行。替代地,方法425可由處理器或指令處理裝 置的不同實施例執(zhí)行。此外,處理器100和指令處理裝置300可執(zhí)行與方法425的操作和 方法相同、類似或不同的操作和方法的實施例。
[0075] 方法包括在框426處接收浮點舍入量確定指令。在各個方面,該指令可在處理器、 指令處理裝置或者其一部分(例如,解碼器、指令變換器等)處接收。在各個方面,指令可 從處理器外的源(例如,從主存儲器、盤、或總線或互連)或者從處理器上的源(例如,從指 令高速緩存)接收。浮點舍入量確定指令指定或以其它方式指示一個或多個浮點數(shù)據(jù)元素 的源、指定或以其它方式指示在小數(shù)點(例如,二進制小數(shù)點或十進制小數(shù)點)之后源的一 個或多個浮點數(shù)據(jù)元素中的每一個被舍入至的分數(shù)位的數(shù)量,并且指定或以其它方式指示 目的地存儲位置。
[0076] 然后,在框427,響應于浮點舍入量確定指令、作為浮點舍入量確定指令的結(jié)果和 /或由浮點舍入量確定指令所指定的,將包括一個或多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果存儲在 目的地存儲位置中。一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個包括相應位置中的源的相應 浮點數(shù)據(jù)元素與已經(jīng)被舍入到指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本 之間的差。
[0077] 所示的方法包括從處理器或指令處理裝置外部可見的操作(例如,從軟件角度可 見)。在其他實施例中,該方法可任選地包括處理器內(nèi)出現(xiàn)的一個或多個操作。作為示例, 可獲取浮點舍入量確定指令,然后可將該指令解碼、轉(zhuǎn)換、仿真或以其它方式變換成一個或 多個其它指令或控制信號??稍L問和/或接收源操作數(shù)/數(shù)據(jù)??蓡⒂酶↑c執(zhí)行單元,以 執(zhí)行指令指定的操作,并且可執(zhí)行該操作(例如,可執(zhí)行用于實現(xiàn)指令的操作的微架構(gòu)操 作)。作為示例,這些微架構(gòu)操作可包括舍入、減法等。
[0078] 圖5是示出浮點舍入量確定操作530的實施例的框圖??身憫诟↑c舍入量確定 指令的實施例執(zhí)行浮點舍入量確定操作。
[0079] 浮點舍入量確定指令指定或以其它方式指示一個或多個浮點數(shù)據(jù)元素的源520。 在一些實施例中,源可包括具有有效數(shù)Q(significandQ)的單個標量浮點數(shù)據(jù)元素 FP。。在一 個方面,單個標量浮點數(shù)據(jù)元素可被存儲在打包數(shù)據(jù)寄存器中(例如,在打包數(shù)據(jù)寄存器 的最低位數(shù)據(jù)元素中)?;蛘撸诹硪粋€方面,單個標量浮點數(shù)據(jù)元素可被存儲在標量寄存 器中或另一個存儲位置。適當?shù)母↑c數(shù)據(jù)元素格式的示例包括但不限于半精度、單精度、雙 精度、擴展雙精度和四精度。
[0080] 在其它實施例中,源可包括多個N個打包浮點數(shù)據(jù)元素 FPctFPm,其具有相應的有 效數(shù),即有效數(shù)(Γ有效數(shù)N(significandQ-significand N),其中N至少是2。數(shù)N可等于源打 包數(shù)據(jù)的位寬度除以浮點數(shù)據(jù)元素 FP^FPd^位寬度。在各實施例中,打包數(shù)據(jù)寬度可以是 64位且可以有兩個32位單精度浮點數(shù)據(jù)元素或一個64位雙精度浮點數(shù)據(jù)元素,打包數(shù)據(jù) 寬度可以是128位且可以有四個32位單精度浮點數(shù)據(jù)元素或二個64位雙精度浮點數(shù)據(jù)元 素,打包數(shù)據(jù)寬度可以是256位且可以有八個32位單精度浮點數(shù)據(jù)元素或四個64位雙精 度浮點數(shù)據(jù)元素,或打包數(shù)據(jù)寬度可以是512位且可以有十六個32位單精度浮點數(shù)據(jù)元素 或八個64位雙精度浮點數(shù)據(jù)元素。其它打包數(shù)據(jù)寬度和浮點數(shù)據(jù)元素寬度(例如,半精度、 擴展雙精度、四精度)也是適當?shù)摹?br> [0081] 浮點舍入量確定指令還指定或以其它方式指示分數(shù)位的數(shù)量532。分數(shù)位的數(shù)量 是在小數(shù)點(例如,二進制小數(shù)點、十進制小數(shù)點或十六進制小數(shù)點)后或右側(cè)的。一個或 多個浮點數(shù)據(jù)元素中的每一個將被舍入到所指示數(shù)量的分數(shù)位,以形成源浮點數(shù)據(jù)元素的 經(jīng)舍入版本,然后通過從原始的對應源浮點數(shù)據(jù)元素減去浮點數(shù)據(jù)元素的經(jīng)舍入的版本來 生成并存儲結(jié)果。在一些實施例中,指令可包括一個或多個位或字段,以明確指定分數(shù)位的 數(shù)量。例如,指令可包括立即數(shù),該立即數(shù)具有用以指定分數(shù)位的數(shù)量的多個位(例如8位 立即數(shù)的位[7:4])。四個位可允許指定在0和15之間的分數(shù)位的數(shù)量,然而如果期望能夠 指定其它數(shù)量的分數(shù)位,則可包括較少或較多的位。
[0082] 可生成包括一個或多個相應的結(jié)果浮點數(shù)據(jù)元素的結(jié)果524,并將其存儲在由浮 點舍入量確定指令指示的目的地中。一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個可包括相應 位置中的源的相應浮點數(shù)據(jù)元素(FP)與已經(jīng)被舍入到指示數(shù)量的分數(shù)位的源的相應浮點 數(shù)據(jù)元素(FP #)的經(jīng)舍入版本之間的差。在圖示中,上標星號(*)用于指示相應的浮點數(shù)據(jù) 元素(FP)的經(jīng)舍入版本。例如,F(xiàn)PJ是有效數(shù)j皮舍入到所指示數(shù)量的分數(shù)位的相應浮點 數(shù)據(jù)元素 F&的經(jīng)舍入版本,F(xiàn)P/是有效數(shù)N被舍入到所指示數(shù)量的分數(shù)位的浮點數(shù)據(jù)元素 FPN的經(jīng)舍入版本,等等。因此,第一結(jié)果浮點數(shù)據(jù)元素可包括(FP^FPO,第N結(jié)果浮點數(shù) 據(jù)元素可包括(FP N_FP/),等等。
[0083] 如圖所示,在單個標量源浮點數(shù)據(jù)元素 F&的實施例中,結(jié)果可包括單個對應的結(jié) 果浮點數(shù)據(jù)元素。或者,在N個打包浮點數(shù)據(jù)元素 FPd-FPj^的實施例中,結(jié)果可包括N個對 應的結(jié)果浮點數(shù)據(jù)元素。
[0084] 圖6是示出適當?shù)母↑c源和/或結(jié)果格式的若干示例實施例的框圖。這些格式中 的每一個適用于如本文公開的浮點舍入量確定指令的源和/或結(jié)果。
[0085] 64位打包單精度浮點格式634是64位寬且包括兩個32位單精度(SP)浮點數(shù)據(jù) 元素 SPfSPi。SPQ是最低有效數(shù)據(jù)元素且占據(jù)位[31:0],而SPi是最高有效數(shù)據(jù)元素且占 據(jù)位[63:32]。
[0086] 128位打包單精度浮點格式635是128位寬且包括四個32位單精度(SP)浮點數(shù) 據(jù)元素3? (|-5?3。5?(|占據(jù)位[31:0],5?1占據(jù)位[63 :32],5己占據(jù)位[95:64],且5?3占據(jù)位 [127:96]。
[0087] 256位打包單精度浮點格式636是256位寬且包括八個32位單精度(SP)浮點數(shù) 據(jù)元素 SPQ-SP7。SPQ占據(jù)位[31:0],SPi占據(jù)位[63:32],SP 2占據(jù)位[95:64],SP3占據(jù)位 [127:96],5? 4占據(jù)位[159:128],5?5占據(jù)位[191:160],5? 6占據(jù)位[223:192],且3卩7占據(jù) 位[255:224]。
[0088] 128位打包雙精度浮點格式637是128位寬且包括兩個64位雙精度(DP)浮點數(shù) 據(jù)元素 DPfDPi。DP。占據(jù)位[63:0]且DPi占據(jù)位[127:64]。
[0089] 256位打包雙精度浮點格式638是256位寬且包括四個64位雙精度(DP)浮點數(shù) 據(jù)元素 DPQ-DP3。DP。占據(jù)位[63:0],DPi 占據(jù)位[127:64],DP2 占據(jù)位[191:128]且 DP3 占 據(jù)位[255:192]。
[0090] 按128位寄存器格式的標量單精度浮點數(shù)據(jù)639包括在128位寄存器的最低位 [31:0]中的單個標量32位單精度浮點數(shù)據(jù)元素 SP。在一些方面,寄存器是也可操作用于 存儲打包數(shù)據(jù)的打包數(shù)據(jù)寄存器?;蛘撸蓪肆繂尉雀↑c數(shù)據(jù)元素 SP存儲在標量寄存 器中。
[0091] 按128位寄存器格式的標量雙精度浮點數(shù)據(jù)640包括在128位寄存器的最低位 [63:0]中的單個標量64位雙精度浮點數(shù)據(jù)元素 DP。在一些方面,寄存器是也可操作用于 存儲打包數(shù)據(jù)的打包數(shù)據(jù)寄存器。或者,標量雙精度浮點數(shù)據(jù)元素 DP可被存儲在非打包寄 存器(例如,標量寄存器)或存儲位置中。
[0092] 這些僅僅是適當?shù)母↑c源和/或結(jié)果格式的幾個說明性示例。由于單精度和雙精 度浮點格式的廣泛使用,而示出了這些格式。然而,其它浮點格式也是適當?shù)模ɡ?,半?度、擴展雙精度、四精度等)。為了便于示出,已經(jīng)示出256位或更小的打包數(shù)據(jù)寬度。然 而,512位或更寬的打包數(shù)據(jù)寬度也是適當?shù)?。作為示例?12位打包浮點格式可包括十六 個單精度或八個雙精度浮點格式。
[0093] 圖7是示出帶數(shù)據(jù)元素廣播的浮點舍入量確定操作730的實施例的框圖,該帶數(shù) 據(jù)元素廣播的浮點舍入量確定操作730可響應于帶數(shù)據(jù)元素廣播的浮點舍入量確定指令 的實施例而執(zhí)行。作為示例,在期望將單個源浮點數(shù)據(jù)元素再次用于多個向量操作中的每 一個的各種算法中,該操作是有用的。指令可指示具有單個浮點數(shù)據(jù)元素 FP (具有"有效 數(shù)")的源720。指令還指示小數(shù)點之后源數(shù)據(jù)元素將被舍入至的分數(shù)位的數(shù)量732。
[0094] 帶數(shù)據(jù)元素廣播的浮點舍入量確定操作可將單個浮點數(shù)據(jù)元素 FP的最初數(shù)據(jù)元 素廣播與后續(xù)的浮點舍入操作組合。最初的數(shù)據(jù)元素廣播可多次廣播或復制單個浮點數(shù)據(jù) 元素 FP(例如,次數(shù)等于浮點結(jié)果數(shù)據(jù)元素的數(shù)量)。這在圖示中示為虛線打包數(shù)據(jù)格式 的FP的多個復制的副本。在一些實施例中,可存儲廣播的復本(例如,在臨時存儲器或其 它非架構(gòu)存儲位置中),或者在其它實施例中,可通過電路或在內(nèi)部僅將廣播的復本傳送到 執(zhí)行單元,而不存儲它。浮點數(shù)據(jù)元素 FP的復制值可表示在后續(xù)浮點舍入量確定操作中使 用的向量或打包數(shù)據(jù)。在一些實施例中,單個浮點數(shù)據(jù)元素 FP可駐留在存儲器中,且數(shù)據(jù) 元素廣播可通過從帶數(shù)據(jù)元素廣播的浮點舍入量確定指令導出的加載操作(例如,加載微 指令)實現(xiàn)。單個數(shù)據(jù)元素 FP的廣播可表示在執(zhí)行浮點舍入量確定操作之前的預處理數(shù) 據(jù)轉(zhuǎn)換。
[0095] 可響應于具有數(shù)據(jù)元素廣播的浮點舍入量確定操作和/或指令將結(jié)果打包經(jīng)舍 入的浮點數(shù)據(jù)724存儲在目的地中。結(jié)果可包括多個打包結(jié)果浮點數(shù)據(jù)元素。結(jié)果浮點數(shù) 據(jù)元素中的每一個可包括在相應位置中的單個浮點數(shù)據(jù)元素(FP)的不同廣播復本和單個 浮點數(shù)據(jù)元素(FP #)的對應廣播復本的經(jīng)舍入版本之間的差。即,結(jié)果浮點數(shù)據(jù)元素中的 每一個可表示或包括(FP-FPO。經(jīng)舍入的版本(FP*)可具有被舍入到所指示的數(shù)量的分數(shù) 位的FP的有效數(shù)。
[0096] 其它實施例涉及具有掩碼指令和/或操作的浮點舍入量確定。具有掩碼指令的浮 點舍入量確定可指定或以其它方式指示打包數(shù)據(jù)操作掩碼。打包數(shù)據(jù)操作掩碼在本文中還 可被簡單地稱為掩碼。每個掩碼可表示斷言操作數(shù)或條件控制操作數(shù),它們可對是否執(zhí)行 與指令相關聯(lián)的舍入操作和/或是否存儲舍入操作的結(jié)果進行掩碼、斷言或條件控制。在 一些實施例中,每個掩碼可操作用于按結(jié)果數(shù)據(jù)元素粒度對舍入操作進行掩碼。每個掩碼 可允許用于不同結(jié)果數(shù)據(jù)元素的舍入操作被與其它結(jié)果數(shù)據(jù)元素分開地和/或相獨立地 斷言或條件控制。
[0097] 掩碼可各自包括多個掩碼元素、斷言元素、條件控制元素或標志??膳c結(jié)果數(shù)據(jù)元 素的一對一對應地包括元素或標志(例如,如果有四個結(jié)果數(shù)據(jù)元素則可以有四個元素或 標志)。每個元素或標志可操作用于對單獨的打包數(shù)據(jù)操作和/或舍入量結(jié)果在相應結(jié)果 數(shù)據(jù)元素中的存儲進行掩碼。通常,每個元素或標志可以是單個位。單個位可允許指定兩 個不同可能性(例如,執(zhí)行操作對不執(zhí)行操作,存儲操作的結(jié)果對不存儲操作的結(jié)果等)中 的任一個。掩碼的每個位的二進制值可斷言或控制是否執(zhí)行與指令相關聯(lián)的浮點舍入量確 定操作和/或是否存儲舍入量結(jié)果。根據(jù)一個可能的協(xié)定,每個位可分別被置位(即,具有 二進制值1)或清零(即,具有二進制值〇),以允許或不允許執(zhí)行浮點舍入量確定操作的結(jié) 果和/或?qū)⑵浯鎯υ谙鄳Y(jié)果數(shù)據(jù)元素中。
[0098] 在一些實施例中,可執(zhí)行合并-掩碼。在合并-掩碼中,當操作被掩碼掉(masked out)時,可將來自源打包數(shù)據(jù)的相應數(shù)據(jù)元素的值存儲在相應結(jié)果數(shù)據(jù)元素中。例如,如 果源將被重新用作目的地,則相應的目的地數(shù)據(jù)元素可保留其最初的源值(即,不利用計 算結(jié)果更新)。在其它實施例中,可執(zhí)行歸零-掩碼。在歸零-掩碼中,當操作被掩碼掉 (masked out)時,相應的結(jié)果數(shù)據(jù)元素可被歸零,或可將零值存儲在相應的結(jié)果數(shù)據(jù)元素 中。或者,可將其它預定的值存儲在掩碼掉的結(jié)果數(shù)據(jù)元素中。
[0099] 在一些實施例中,浮點舍入量確定操作可任選地在第一和第二源數(shù)據(jù)的所有相應 數(shù)據(jù)元素對上執(zhí)行,而不管掩碼的相應位如何,但可取決于掩碼的相應位而將結(jié)果存儲在 結(jié)果打包數(shù)據(jù)中或不存儲在結(jié)果打包數(shù)據(jù)中。替代地,在另一實施例中,如果相應掩碼位指 定不將操作的結(jié)果存儲在打包數(shù)據(jù)結(jié)果中,則浮點舍入量確定操作可被任選地省去(即, 不被執(zhí)行)。在一些實施例中,可任選地,對被掩碼掉元素上的操作可抑制異?;驔_突,或者 被掩碼掉元素上的操作可不引起異?;驔_突。在一些實施例中,對于具有存儲器操作數(shù)的 指令和/或操作,可任選地針對掩碼掉數(shù)據(jù)元素抑制存儲器錯誤。
[0100] 圖8是示出具有掩碼的浮點舍入量確定操作830的實施例的框圖,該具有掩碼的 浮點舍入量確定操作830可響應于具有掩碼的浮點舍入量確定指令的實施例而執(zhí)行。指令 指定或以其它方式指示打包浮點數(shù)據(jù)元素 FPctFPm的源820。指令還指示小數(shù)點之后源數(shù) 據(jù)元素將被舍入至的分數(shù)位的數(shù)量832。
[0101] 指令還指定或以其它方式指示包括多個打包數(shù)據(jù)操作掩碼元素或位的打包數(shù)據(jù) 操作掩碼842。在圖示中,與FP。對應的最低有效掩碼位被置位(即,1),且與FP N對應的最 高有效掩碼位被清零(即,〇)。作為示例,在128位寬打包數(shù)據(jù)和32位單精度浮點數(shù)據(jù)元 素的情況下,掩碼可包括四個1位掩碼位,或者在64位雙精度浮點數(shù)據(jù)元素的情況下,掩碼 可包括兩個1位掩碼位。作為另一個示例,在512位寬打包數(shù)據(jù)和32位單精度浮點數(shù)據(jù)元 素的情況下,掩碼可包括十六個1位掩碼位,或者在64位雙精度浮點數(shù)據(jù)元素的情況下,掩 碼可包括八個1位掩碼位。
[0102] 可響應于具有掩碼的浮點舍入量確定操作和/或指令將結(jié)果打包浮點數(shù)據(jù)824存 儲在所指示的目的地中。根據(jù)相應的打包數(shù)據(jù)操作掩碼位,將浮點舍入量確定操作的結(jié)果 有條件地存儲在結(jié)果中。當未通過打包數(shù)據(jù)操作掩碼將結(jié)果浮點數(shù)據(jù)元素掩碼掉時(例 如,在圖示中當相應的掩碼位被置位為1時),它們可存儲相應位置中的相應浮點源數(shù)據(jù)元 素(FP)與已經(jīng)被舍入到所指示的數(shù)量的分數(shù)位的相應浮點源數(shù)據(jù)元素的經(jīng)舍入版本(FP, 之間的差。例如,最低有效(最右側(cè))結(jié)果數(shù)據(jù)元素可存儲(FPcrFP^),且有效數(shù)^被舍入 到所指示的數(shù)量的分數(shù)位?;蛘?,當浮點數(shù)據(jù)元素通過打包數(shù)據(jù)操作掩碼而掩碼掉時(例 如,在圖示中,當相應的掩碼位被清除為0時),被掩碼掉的值(例如,歸零或合并值)可被 存儲在結(jié)果數(shù)據(jù)元素中。例如,最高有效(最左)結(jié)果數(shù)據(jù)元素存儲掩碼掉的值。
[0103] 圖9是一組合適的打包數(shù)據(jù)操作掩碼寄存器906的實施例的框圖。寄存器中的每 一個可用于存儲打包數(shù)據(jù)操作掩碼。在所例示的實施例中,該組包括標示為K0至k7的八 個打包數(shù)據(jù)操作掩碼寄存器。替代的實施例可包括比八個更少(例如,兩個、四個、六個等) 或比八個更多(例如,十六個、二十個、三十二個等)的打包數(shù)據(jù)操作掩碼寄存器。在所說 明的實施例中,打包數(shù)據(jù)操作掩碼寄存器中的每一個為64位。在替代實施例中,打包數(shù)據(jù) 操作掩碼寄存器的寬度可以比64位更寬(例如,80位,128位等)或比64位更窄(例如,8 位、16位、32位等)。打包數(shù)據(jù)操作掩碼寄存器可通過使用公知技術以不同方式實現(xiàn),并且 不限于任何已知的特定類型的電路。
[0104] 圖10是浮點舍入量確定指令格式103的實施例的框圖。指令格式包括操作代碼 或操作碼1043。操作碼可表示可操作用于標識指令和/或要執(zhí)行的操作的多個位或者一個 或多個字段。
[0105] 如圖所示,在一些實施例中,指令格式可包括源說明符1044和目的地說明符 1045,源說明符1044用于明確指定源操作數(shù)或存儲位置,而目的地說明符1045用于明確指 定將存儲結(jié)果的目的地操作數(shù)或存儲位置。作為示例,這些指定符中的每一個可包括寄存 器的地址、存儲器位置或其它存儲位置?;蛘?,源和/或目的地中的一個或多個對于指令是 隱含的,而不被明確指定。例如,源可任選地被重新用作目的地,且源的最初內(nèi)容可由結(jié)果 覆寫。
[0106] 在指令用于數(shù)據(jù)元素廣播的一些實施例中,指令格式可包括可任選的數(shù)據(jù)元素廣 播控制1046。數(shù)據(jù)元素廣播控制可包括一個或多個位或字段,用以指示將執(zhí)行數(shù)據(jù)元素廣 播,以將從指定或指示的存儲位置訪問的單個源數(shù)據(jù)元素廣播到指令所使用的多個源數(shù)據(jù) 元素。或者,數(shù)據(jù)元素廣播對于指令是隱含的(例如,對于操作碼是隱含的)。如上所述,數(shù) 據(jù)元素廣播是任選的且不是必須的。
[0107] 在一些實施例中,指令格式可包括任選的打包數(shù)據(jù)操作掩碼說明符,用于明確指 定打包數(shù)據(jù)操作掩碼或存儲位置(例如,掩碼寄存器)?;蛘撸虬鼣?shù)據(jù)操作掩碼可被隱含 地指示。在一些實施例中,指令格式還可包括任選掩碼操作類型說明符1048,用以指定掩 碼操作的類型。作為示例,掩碼操作指定符的類型可包括用以指定是否執(zhí)行合并-掩碼或 填零-掩碼的單個位?;蛘?,掩碼操作的類型可被隱含地指示(例如,在隱含的控制寄存器 中)。如上所述,掩碼是任選的且不是必須的。
[0108] 在一些實施例中,指令格式可包括任選的浮點舍入控制1049。浮點舍入控制可 控制是否超馳處理器的默認浮點舍入模式。作為示例,某些英特爾處理器具有控制寄存器 (例如,稱為MXCSR的機器狀態(tài)和控制寄存器),其包括指定默認舍入模式的舍入模式控制 位。指令的浮點舍入控制可表示用以指示這種默認舍入模式是否被超馳的一個或多個位或 字段。
[0109] 在一些實施例中,指令格式可包括任選的浮點舍入模式說明符1050,用以指定在 本文中公開的浮點舍入操作中使用浮點舍入模式。作為示例,在一些實施例中,浮點舍入模 式說明符可包括用以指定以下四個非粘滯(non-sticky)舍入模式中的任一個的兩個位: (1)舍入到最近的,其中把舍入限制(tie)到最近的偶數(shù)數(shù)位;(2)下舍入,朝向負無窮大, 其中負結(jié)果遠離〇舍入;(3)上舍入,朝向正無窮大,其中負結(jié)果向零舍入;以及(4)向零舍 入,截斷。其它實施例可包括較少、更多或不同的舍入模式。
[0110] 在一些實施例中,指令格式可包括分數(shù)位數(shù)量說明1052。這種分數(shù)位的數(shù)量說明 可表示在小數(shù)點(例如,二進制小數(shù)點、十進制小數(shù)點或十六進制小數(shù)點)后每個源浮點數(shù) 據(jù)元素有效數(shù)根據(jù)浮點舍入量確定指令/操作被舍入至的分數(shù)位的數(shù)量。
[0111] 在一些實施例中,可任選地在指令的立即數(shù)1053中提供浮點舍入控制1049、浮點 舍入模式說明符1050和分數(shù)位數(shù)量說明符1052?;蛘?,可在指令的其它字段或位中提供這 些中的一個或多個。
[0112] 所示的指令格式示出可包括在浮點舍入量確定指令的實施例中的字段類型的示 例。替代的實施例可包括所示字段的子集,可添加附加字段,可重疊特定字段等。所示的字 段次序/安排并非是必須的,相反,字段可被重排列。字段無需包括連續(xù)位序列,相反可包 括非連續(xù)或分開的位。在一些實施例中,指令格式可遵循EVEX編碼或指令格式,盡管這不 是必須的。以下進一步討論EVEX編碼的更多細節(jié)。
[0113] 圖11是適用于浮點舍入量確定指令的立即數(shù)1153的特定示例實施例的框圖。立 即數(shù)是8位立即數(shù)。位[2]表示浮點舍入控制1149,用于控制是否超馳默認舍入模式。立 即數(shù)的位[1:0]表示浮點舍入模式說明符1150,用以指定舍入模式。在一個實施例中,值00 指示舍入到最接近的偶數(shù)整數(shù)模式,值01指示舍入到相等或較小的整數(shù)模式,值10指示舍 入到相等或較大的整數(shù)模式,以及值11指示舍入到最接近的最小量級整數(shù)模式,然而本發(fā) 明的范圍不限于此。位[3]不被使用且可以為零1151。立即數(shù)的位[7:4]表示分數(shù)位數(shù)量 說明符1152。在其它實施例中,可重新排列這些字段,可將較少或更多的位分配給字段(可 將少于或多于四位用于指定分數(shù)位的數(shù)量)等。
[0114] 圖12是一組合適的打包數(shù)據(jù)寄存器1205的實施例的框圖。所示打包數(shù)據(jù)寄存器 包括三十二個512位打包數(shù)據(jù)或向量寄存器。這三十二個512位寄存器被標記為ΖΜΜ0至 ZMM31。在所示實施例中,這些寄存器中的較低十六個的較低階256位(S卩,ZMM0-ZMM15)被 混疊或者覆蓋在相應256位打包數(shù)據(jù)或向量寄存器(標記為YMM0-YMM15)上,但是這不是 必需的。同樣,在所示實施例中,YMM0-YMM15的較低階128位被混疊或者覆蓋在相應128位 打包數(shù)據(jù)或向量寄存器(標記為XMM0-XMM1)上,但是這也不是必需的。512位寄存器ΖΜΜ0 至ZMM31可操作用于保持512位打包數(shù)據(jù)、256位打包數(shù)據(jù)或者128位打包數(shù)據(jù)。256位 寄存器YMM0-YMM15可操作用于保持256位打包數(shù)據(jù)或者128位打包數(shù)據(jù)。128位寄存器 XMM0-XMM1可操作用于保持128位打包數(shù)據(jù)。每一寄存器可用于存儲打包浮點數(shù)據(jù)或打包 整數(shù)數(shù)據(jù)。在一些方面,標量浮點數(shù)據(jù)也可被存儲在打包數(shù)據(jù)寄存器中。支持不同數(shù)據(jù)元 素尺寸,包括至少8位字節(jié)數(shù)據(jù)、16位字數(shù)據(jù)、32位雙字或單精度浮點數(shù)據(jù)、以及64位四字 或雙精度浮點數(shù)據(jù)。打包數(shù)據(jù)寄存器的替代實施例可包括不同數(shù)量的寄存器、不同尺寸的 寄存器,并且可以或者可以不將較大寄存器混疊(alias)在較小寄存器上。
[0115] 圖13是包括機器可讀存儲介質(zhì)1355的制品(例如計算機程序產(chǎn)品)1354的框 圖。在一些實施例中,機器可讀存儲介質(zhì)可為有形的和/或非瞬態(tài)的機器可讀存儲介質(zhì)。 在各示例實施例中,機器可讀存儲介質(zhì)可包括軟盤、光盤、CD-ROM、磁盤、磁光盤、只讀存儲 器(ROM)、可編程ROM (PR0M)、可擦除可編程ROM (EPROM)、電可擦除可編程ROM (EEPR0M)、隨 機存取存儲器(RAM)、靜態(tài)RAM (SRAM)、動態(tài)RAM (DRAM)、閃存、相變存儲器、半導體存儲器、 其它類型的存儲器或它們的組合。在一些實施例中,介質(zhì)可包括一個或多個固態(tài)數(shù)據(jù)存儲 材料,例如半導體數(shù)據(jù)存儲材料、相變數(shù)據(jù)存儲材料、磁性數(shù)據(jù)存儲材料、光學透明固體數(shù) 據(jù)存儲材料等等。
[0116] 機器可讀存儲介質(zhì)存儲一個或多個浮點舍入量確定指令1303。浮點舍入量確定指 令中的每一個指示一個或多個浮點數(shù)據(jù)元素的源,指示小數(shù)點之后一個或多個浮點數(shù)據(jù)元 素中的每一個被舍入至的分數(shù)位的數(shù)量,并且指示目的地存儲位置。浮點舍入量確定指令 中的每一個在被機器執(zhí)行時操作用于導致機器將結(jié)果存儲在目的地存儲位置中。本文中公 開的浮點舍入量確定指令和相關聯(lián)的結(jié)果中的任一個是適當?shù)摹?br> [0117] 不同類型的機器的示例包括但不限于處理器(例如,通用處理器和專用處理器)、 指令處理裝置、以及具有一個或多個處理器或指令處理裝置的各種電子設備。這種電子設 備的幾個代表示例包括但不限于計算機系統(tǒng)、臺式機、膝上型計算機、筆記本、服務器、網(wǎng)絡 路由器、網(wǎng)絡交換機、上網(wǎng)計算機、機頂盒、蜂窩電話、視頻游戲控制器等。
[0118] 指令集包括一個或多個指令格式。給定指令格式定義各個字段(位的數(shù)量、位的 位置)以指定要執(zhí)行的操作(操作碼)以及要對其執(zhí)行該操作的操作碼等。通過指令模板 (或子格式)的定義來進一步分解一些指令格式。例如,給定指令格式的指令模板可被定義 為具有指令格式的字段(所包括的字段通常按照相同順序,但是至少一些字段具有不同的 位位置,因為包括更少的字段)的不同子集,和/或被定義為具有不同解釋的給定字段。由 此,ISA的每一指令使用給定指令格式(并且如果定義,則在該指令格式的指令模板的給定 一個中)來表達,并且包括用于指定操作和操作數(shù)的字段。例如,示例性ADD指令具有專用 操作碼以及包括用于指定該操作碼的操作碼字段和用于選擇操作數(shù)的操作數(shù)字段(源1/ 目的地以及源2)的指令格式,并且該ADD指令在指令流中的出現(xiàn)將具有選擇專用操作數(shù)的 操作數(shù)字段中的專用內(nèi)容。已經(jīng)發(fā)布和/或公布了涉及高級向量擴展(AVX) (AVX1和AVX2) 且使用向量擴展(VEX)編碼方案的SMD擴展集(例如,參見2011年10月的Intel? 64和 IA-32架構(gòu)軟件開發(fā)手冊,并且參見2011年6月的Intel?高級向量擴展編程參考)。
[0119] 示例性指令格式
[0120] 本文中所描述的指令的實施例可以不同的格式體現(xiàn)。另外,在下文中詳述示例性 系統(tǒng)、架構(gòu)、以及流水線。指令的實施例可在這些系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但是不限 于詳述的系統(tǒng)、架構(gòu)、以及流水線。
[0121] 通用向量友好指令格式
[0122] 向量友好指令格式是適于向量指令(例如,存在專用于向量操作的特定字段)的 指令格式。盡管描述了其中通過向量友好指令格式支持向量和標量操作兩者的實施例,但 是替換實施例僅使用通過向量友好指令格式的向量操作。
[0123] 圖14A-14B是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其指令模板 的框圖。圖14A是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其A類指令模板的 框圖;而圖14B是示出了根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其B類指令模板 的框圖。具體地,針對通用向量友好指令格式1400定義A類和B類指令模板,兩者包括無 存儲器訪問1405的指令模板和存儲器訪問1420的指令模板。在向量友好指令格式的上下 文中的術語通用指不束縛于任何專用指令集的指令格式。
[0124] 盡管將描述其中向量友好指令格式支持64字節(jié)向量操作數(shù)長度(或尺寸)與32 位(4字節(jié))或64位(8字節(jié))數(shù)據(jù)元素寬度(或尺寸)(并且由此,64字節(jié)向量由16雙字 尺寸的元素或者替換地8四字尺寸的元素組成)、64字節(jié)向量操作數(shù)長度(或尺寸)與16 位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或尺寸)、32字節(jié)向量操作數(shù)長度(或尺寸) 與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(1字節(jié))數(shù)據(jù)元素寬度(或尺 寸)、以及16字節(jié)向量操作數(shù)長度(或尺寸)與32位(4字節(jié))、64位(8字節(jié))、16位(2 字節(jié))、或8位(1字節(jié))數(shù)據(jù)元素寬度(或尺寸)的本發(fā)明的實施例,但是替換實施例可支 持更大、更小、和/或不同的向量操作數(shù)尺寸(例如,256字節(jié)向量操作數(shù))與更大、更小或 不同的數(shù)據(jù)元素寬度(例如,128位(16字節(jié))數(shù)據(jù)元素寬度)。
[0125] 圖14A中的A類指令模板包括:1)在無存儲器訪問1405的指令模板內(nèi),示出無存 儲器訪問的完全舍入(round)控制型操作1410的指令模板、以及無存儲器訪問的數(shù)據(jù)變換 型操作1415的指令模板;以及2)在存儲器訪問1420的指令模板內(nèi),示出存儲器訪問的時 間性1425的指令模板和存儲器訪問的非時間性1430的指令模板。圖14B中的B類指令模 板包括:1)在無存儲器訪問1405的指令模板內(nèi),示出無存儲器訪問的寫掩碼控制的部分舍 入控制型操作1412的指令模板以及無存儲器訪問的寫掩碼控制的vsize型操作1417的指 令模板;以及2)在存儲器訪問1420的指令模板內(nèi),示出存儲器訪問的寫掩碼控制1427的 指令模板。
[0126] 通用向量友好指令格式1400包括以下列出以在圖14A-14B中示出的順序的如下 字段。
[0127] 格式字段1440 -該字段中的特定值(指令格式標識符值)唯一地標識向量友好 指令格式,并且由此標識指令在指令流中以向量友好指令格式出現(xiàn)。由此,該字段在無需僅 有通用向量友好指令格式的指令集的意義上是任選的。
[0128] 基礎操作字段1442 -其內(nèi)容區(qū)分不同的基礎操作。
[0129] 寄存器索引字段1444-其內(nèi)容直接或者通過地址生成來指定源或目的地操作數(shù) 在寄存器中或者在存儲器中的位置。這些字段包括足夠數(shù)量的位以從PxQ(例如,32x512、 16xl28、32xl024、64xl024)個寄存器組選擇N個寄存器。盡管在一個實施例中N可高達三個 源和一個目的地寄存器,但是替換實施例可支持更多或更少的源和目的地寄存器(例如, 可支持高達兩個源,其中這些源中的一個源還用作目的地,可支持高達三個源,其中這些源 中的一個源還用作目的地,可支持高達兩個源和一個目的地)。
[0130] 修飾符(modifier)字段1446 -其內(nèi)容將以指定存儲器訪問的通用向量指令格式 出現(xiàn)的指令與不指定存儲器訪問的通用向量指令格式出現(xiàn)的指令區(qū)分開;即在無存儲器訪 問1405的指令模板與存儲器訪問1420的指令模板之間。存儲器訪問操作讀取和/或?qū)懭?到存儲器層次(在一些情況下,使用寄存器中的值來指定源和/或目的地地址),而非存儲 器訪問操作不這樣(例如,源和/或目的地是寄存器)。盡管在一個實施例中,該字段還在 三種不同的方式之間選擇以執(zhí)行存儲器地址計算,但是替換實施例可支持更多、更少或不 同的方式來執(zhí)行存儲器地址計算。
[0131] 擴充操作字段1450 -其內(nèi)容區(qū)分除基礎操作以外還要執(zhí)行各種不同操作中的哪 一個操作。該字段是上下文專用的。在本發(fā)明的一個實施例中,該字段被分成類字段1468、 α字段1452、以及β字段1454。擴充操作字段1450允許在單一指令而非2、3或4個指令 中執(zhí)行多組共同的操作。
[0132] 縮放字段1460 -其內(nèi)容允許用于存儲器地址生成(例如,用于使用索引+ 基址的地址生成)的索引字段的內(nèi)容的按比例縮放。
[0133] 位移字段1462A -其內(nèi)容被用作存儲器地址生成的一部分(例如,用于使用2?^ *索引+基址+位移的地址生成)。
[0134] 位移因數(shù)字段1462B (注意,位移字段1462A直接在位移因數(shù)字段1462B上的并置 指示了使用一個或另一個)--其內(nèi)容被用作地址生成的一部分,它指定通過存儲器訪問 尺寸(N)按比例縮放的位移因數(shù),其中N是存儲器訪問中的字節(jié)的數(shù)量(例如,用于使用2 索引+基址+經(jīng)按比例縮放的位移的地址生成)。忽略冗余的低階位,并且因此將位移 因數(shù)字段的內(nèi)容乘以存儲器操作數(shù)總尺寸(N)以生成在計算有效地址中使用的最終位移。 N的值由處理器硬件在運行時基于完整操作碼字段1474 (稍候在本文中描述)和數(shù)據(jù)操縱 字段1454C確定。位移字段1462A和位移因數(shù)字段1462B在它們不用于無存儲器訪問1405 的指令模板和/或不同的實施例可實現(xiàn)兩者中的僅一個或均未實現(xiàn)的意義上是任選的。
[0135] 數(shù)據(jù)元素寬度字段1464 -其內(nèi)容區(qū)分使用多個數(shù)據(jù)元素寬度中的哪一個(在一 些實施例中用于所有指令,在其他實施例中只用于一些指令)。該字段在如果支持僅一個數(shù) 據(jù)元素寬度和/或使用操作碼的某一方面來支持數(shù)據(jù)元素寬度則不需要的意義上是任選 的。
[0136] 寫掩碼字段1470 -其內(nèi)容在每一數(shù)據(jù)元素位置的基礎上控制目的地向量操作數(shù) 中的數(shù)據(jù)元素位置是否反映基礎操作和擴充操作的結(jié)果。A類指令模板支持合并-寫掩碼, 而B類指令模板支持合并寫掩碼和填零寫掩碼兩者。當合并的向量掩碼允許在執(zhí)行任何操 作(由基礎操作和擴充操作指定)期間保護目的地中的任何元素集免于更新時,在另一實 施例中,保持其中對應掩碼位具有〇的目的地的每一元素的舊值。相反,當填零向量掩碼允 許在執(zhí)行任何操作(由基礎操作和擴充操作指定)期間使目的地中的任何元素集填零時, 在一個實施例中,目的地的元素在對應掩碼位具有〇值時被設為0。該功能的子集是控制 執(zhí)行的操作的向量長度的能力(即,從第一個到最后一個要修改的元素的跨度),然而,被 修改的元素不一定要是連續(xù)的。由此,寫掩碼字段1470允許部分向量操作,這包括加載、 存儲、算術、邏輯等。盡管描述了其中寫掩碼字段1470的內(nèi)容選擇了多個寫掩碼寄存器中 的包含要使用的寫掩碼的一個寫掩碼寄存器(并且由此寫掩碼字段1470的內(nèi)容間接地標 識了要執(zhí)行的掩碼操作)的本發(fā)明的實施例,但是替換實施例相反或另外允許掩碼寫字段 1470的內(nèi)容直接地指定要執(zhí)行的掩碼操作。
[0137] 立即數(shù)字段1472 -其內(nèi)容允許對立即數(shù)的指定。該字段在實現(xiàn)不支持立即數(shù)的 通用向量友好格式中不存在且在不使用立即數(shù)的指令中不存在的意義上是任選的。
[0138] 類字段1468 -其內(nèi)容在不同類的指令之間進行區(qū)分。參考圖14A-B,該字段的內(nèi) 容在A類和B類指令之間進行選擇。在圖14A-B中,圓角方形用于指示專用值存在于字段 中(例如,在圖14A-B中分別用于類字段1468的A類1468A和B類1468B)。
[0139] A類指令模板
[0140] 在A類非存儲器訪問1405的指令模板的情況下,α字段1452被解釋為其內(nèi)容 區(qū)分要執(zhí)行不同擴充操作類型中的哪一種(例如,針對無存儲器訪問的舍入型操作1410 和無存儲器訪問的數(shù)據(jù)變換型操作1415的指令模板分別指定舍入1452Α. 1和數(shù)據(jù)變換 1452Α.2)的RS字段1452Α,而β字段1454區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無 存儲器訪問1405指令模板中,縮放字段1460、位移字段1462Α以及位移縮放字段1462Β不 存在。
[0141] 無存儲器訪問的指令模板一完全舍入控制型操作
[0142] 在無存儲器訪問的完全舍入控制型操作1410的指令模板中,β字段1454被解釋 為其內(nèi)容提供靜態(tài)舍入的舍入控制字段1454Α。盡管在本發(fā)明的所述實施例中舍入控制字 段1454Α包括抑制所有浮點異常(SAE)字段1456和舍入操作控制字段1458,但是替換實施 例可支持、可將這些概念兩者都編碼成相同的字段或者只有這些概念/字段中的一個或另 一個(例如,可只有舍入操作控制字段1458)。
[0143] SAE字段1456 -其內(nèi)容區(qū)分是否停用異常事件報告;當SAE字段1456的內(nèi)容指示 啟用抑制時,給定指令不報告任何種類的浮點異常標志且不喚起任何浮點異常處理程序。
[0144] 舍入操作控制字段1458 -其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(例如,向上 舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1458允許在每一指令 的基礎上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一 個實施例中,舍入操作控制字段1450的內(nèi)容覆蓋該寄存器值。
[0145] 無存儲器訪問的指令模板一數(shù)據(jù)變換型操作
[0146] 在無存儲器訪問的數(shù)據(jù)變換型操作1415的指令模板中,β字段1454被解釋為數(shù) 據(jù)變換字段1454Β,其內(nèi)容區(qū)分要執(zhí)行多個數(shù)據(jù)變換中的哪一個(例如,無數(shù)據(jù)變換、拌和、 廣播)。
[0147] 在Α類存儲器訪問1420的指令模板的情況下,α字段1452被解釋為驅(qū)逐提示字 段1452Β,其內(nèi)容區(qū)分要使用驅(qū)逐提示中的哪一個(在圖14Α中,為存儲器訪問時間1425指 令模板和存儲器訪問非時間1430的指令模板分別指定時間1452Β. 1和非時間1452Β. 2)、而 β字段1454被解釋為數(shù)據(jù)操縱字段1454C,其內(nèi)容區(qū)分要執(zhí)行大量數(shù)據(jù)操縱操作(也稱為 基元(primitive))中的哪一個(例如,無操縱、廣播、源的向上轉(zhuǎn)換、以及目的地的向下轉(zhuǎn) 換)。存儲器訪問1420的指令模板包括縮放字段1460、以及任選的位移字段1462A或位移 縮放字段1462B。
[0148] 向量存儲器指令使用轉(zhuǎn)換支持來執(zhí)行來自存儲器的向量加載并將向量存儲到存 儲器。如同尋常的向量指令,向量存儲器指令以數(shù)據(jù)元素式的方式與存儲器來回傳輸數(shù)據(jù), 其中實際傳輸?shù)脑赜蛇x為寫掩碼的向量掩碼的內(nèi)容規(guī)定。
[0149] 存儲器訪問的指令模板一時間性的
[0150] 時間性的數(shù)據(jù)是可能很快地重新使用足以從高速緩存受益的數(shù)據(jù)。然而,這是提 示且不同的處理器可以不同的方式實現(xiàn)它,包括完全忽略該提示。
[0151] 存儲器訪問的指令模板一非時間性的
[0152] 非時間性的數(shù)據(jù)是不可能很快地重新使用足以從第一級高速緩存中的高速緩存 受益且應當給予驅(qū)逐優(yōu)先級的數(shù)據(jù)。然而,這是提示且不同的處理器可以不同的方式實現(xiàn) 它,包括完全忽略該提示。
[0153] B類指令模板
[0154] 在B類指令模板的情況下,α字段1452被解釋為寫掩碼控制(Z)字段1452C,其 內(nèi)容區(qū)分由寫掩碼字段1470控制的寫掩碼應當是合并還是填零。
[0155] 在Β類非存儲器訪問1405的指令模板的情況下,β字段1454的一部分被解釋 為RL字段1457Α,其內(nèi)容區(qū)分要執(zhí)行不同擴充操作類型中的哪一種(例如,針對無存儲器 訪問的寫掩碼控制部分舍入控制類型操作1412的指令模板和無存儲器訪問的寫掩碼控制 VSIZE型操作1417的指令模板分別指定舍入1457A. 1和向量長度(VSIZE) 1457A. 2),而β 字段1454的其余部分區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無存儲器訪問1405指令 模板中,縮放字段1460、位移字段1462Α以及位移縮放字段1462Β不存在。
[0156] 在無存儲器訪問的寫掩碼控制的部分舍入控制型操作1410的指令模板中,β字 段1454的其余部分被解釋為舍入操作字段1459Α,并且停用異常事件報告(給定指令不報 告任何種類的浮點異常標志且不喚起任何浮點異常處理程序)。
[0157] 舍入操作控制字段1459Α -只作為舍入操作控制字段1458,其內(nèi)容區(qū)分執(zhí)行一組 舍入操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操 作控制字段1459Α允許在每一指令的基礎上改變舍入模式。在其中處理器包括用于指定舍 入模式的控制寄存器的本發(fā)明的一個實施例中,舍入操作控制字段1450的內(nèi)容覆蓋該寄 存器值。
[0158] 在無存儲器訪問的寫掩碼控制VSIZE型操作1417的指令模板中,β字段1454的 其余部分被解釋為向量長度字段1459Β,其內(nèi)容區(qū)分要執(zhí)行多個數(shù)據(jù)向量長度中的哪一個 (例如,128字節(jié)、256字節(jié)、或512字節(jié))。
[0159] 在Β類存儲器訪問1420的指令模板的情況下,β字段1454的一部分被解釋為廣 播字段1457Β,其內(nèi)容區(qū)分是否要執(zhí)行廣播型數(shù)據(jù)操縱操作,而β字段1454的其余部分被 解釋為向量長度字段1459Β。存儲器訪問1420的指令模板包括縮放字段1460、以及任選的 位移字段1462Α或位移縮放字段1462Β。
[0160] 針對通用向量友好指令格式1400,示出完整操作碼字段1474包括格式字段1440、 基礎操作字段1442以及數(shù)據(jù)元素寬度字段1464。盡管示出了其中完整操作碼字段1474包 括所有這些字段的一個實施例,但是完整操作碼字段1474包括在不支持所有這些字段的 實施例中的少于所有的這些字段。完整操作碼字段1474提供操作碼(opcode)。
[0161] 擴充操作字段1450、數(shù)據(jù)元素寬度字段1464以及寫掩碼字段1470允許在每一指 令的基礎上以通用向量友好指令格式指定這些特征。
[0162] 寫掩碼字段和數(shù)據(jù)元素寬度字段的組合創(chuàng)建各種類型的指令,因為這些指令允許 基于不同的數(shù)據(jù)元素寬度應用該掩碼。
[0163] 在A類和B類內(nèi)出現(xiàn)的各種指令模板在不同的情形下是有益的。在本發(fā)明的一些 實施例中,不同處理器或者處理器內(nèi)的不同核可支持僅A類、僅B類、或者可支持兩類。舉 例而言,期望用于通用計算的高性能通用無序核可僅支持B類,期望主要用于圖形和/或科 學(吞吐量)計算的核可僅支持A類,并且期望用于兩者的核可支持兩者(當然,具有來自 兩類的模板和指令的一些混合、但是并非來自兩類的所有模板和指令的核在本發(fā)明的范圍 內(nèi))。同樣,單一處理器可包括多個核,所有核支持相同的類或者其中不同的核支持不同的 類。舉例而言,在具有分離的圖形和通用核的處理器中,圖形核中的期望主要用于圖形和/ 或科學計算的一個核可僅支持A類,而通用核中的一個或多個可以是具有期望用于通用計 算的僅支持B類的無序執(zhí)行和寄存器重命名的高性能通用核。沒有單獨的圖形核的另一處 理器可包括支持A類和B類兩者的一個或多個通用有序或無序核。當然,在本發(fā)明的不同 實施例中,來自一類的特征也可在其他類中實現(xiàn)。以高級語言撰寫的程序可被輸入(例如, 及時編譯或者統(tǒng)計編譯)到各種不同的可執(zhí)行形式,包括:1)具有用于執(zhí)行的目標處理器 支持的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫的替換例程且 具有選擇這些例程以基于由當前正在執(zhí)行代碼的處理器支持的指令而執(zhí)行的控制流代碼 的形式。
[0164] 示例性專用向量友好指令格式
[0165] 圖15是示出根據(jù)本發(fā)明的實施例的示例性專用向量友好指令格式的框圖。圖15 示出在其指定位置、尺寸、解釋和字段的次序、以及那些字段中的一些字段的值的意義上是 專用的專用向量友好指令格式1500。專用向量友好指令格式1500可用于擴展x86指令集, 并且由此一些字段類似于在現(xiàn)有x86指令集及其擴展(例如,AVX)中使用的那些字段或與 之相同。該格式保持與具有擴展的現(xiàn)有x86指令集的前綴編碼字段、實操作碼字節(jié)字段、MOD R/M字段、SIB字段、位移字段、以及立即數(shù)字段一致。示出來自圖14的字段,來自圖15的 字段映射到來自圖14的字段。
[0166] 應當理解,雖然出于說明的目的在通用向量友好指令格式1400的上下文中,本發(fā) 明的實施例參考專用向量友好指令格式1500進行了描述,但是本發(fā)明不限于專用向量友 好指令格式1500,聲明的地方除外。例如,通用向量友好指令格式1400構(gòu)想各種字段的各 種可能的尺寸,而專用向量友好指令格式1500被示為具有特定尺寸的字段。作為具體示 例,盡管在專用向量友好指令格式1500中數(shù)據(jù)元素寬度字段1464被示為一位字段,但是 本發(fā)明不限于此(即,通用向量友好指令格式1400構(gòu)想數(shù)據(jù)元素寬度字段1464的其他尺 寸)。
[0167] 通用向量友好指令格式1400包括以下列出的按照圖15A中示出的順序的如下字 段。
[0168] EVEX前綴(字節(jié)0-3) 1502 -以四字節(jié)形式進行編碼。
[0169] 格式字段1440(EVEX字節(jié)0,位[7:0]) -第一字節(jié)(EVEX字節(jié)0)是格式字段 1440,并且它包含0x62 (在本發(fā)明的一個實施例中用于區(qū)分向量友好指令格式的唯一值)。
[0170] 第二-第四字節(jié)(EVEX字節(jié)1-3)包括提供專用能力的多個位字段。
[0171] REX 字段 1505 (EVEX 字節(jié) 1,位[7-5]) -由 EVEX. R 位字段(EVEX 字節(jié) 1,位[7]-R)、EVEX.X 位字段(EVEX 字節(jié) 1,位[6] -X)以及(1457BEX 字節(jié) 1,位[5] -B)組成。EVEX. R、EVEX. X和EVEX. B位字段提供與對應VEX位字段相同的功能,并且使用(多個)1補碼的 形式進行編碼,即ΖΜΜ0被編碼為1111B,ZMM15被編碼為0000B。這些指令的其他字段對如 在本領域中已知的寄存器索引的較低三個位(rrr、xxx、以及bbb)進行編碼,由此可通過增 加 EVEX. R、EVEX. X 以及 EVEX. B 來形成 Rrrr、Xxxx 以及 Bbbb。
[0172] REX'字段1410-這是REX'字段1410的第一部分,并且是用于對擴展的32個 寄存器集合的較高16個或較低16個寄存器進行編碼的EVEX. R'位字段(EVEX字節(jié)1,位 [4] -R')。在本發(fā)明的一個實施例中,該位與以下指示的其他位一起以位反轉(zhuǎn)的格式存儲 以(在公知x86的32位模式下)與實操作碼字節(jié)是62的BOUND指令進行區(qū)分,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11 ;本發(fā)明的替換實施例不以反轉(zhuǎn)的 格式存儲該指示的位以及其他指示的位。值1用于對較低16個寄存器進行編碼。換句話 說,通過組合EVEX. R'、EVEX. R、以及來自其他字段的其他RRR來形成R' Rrrr。
[0173] 操作碼映射字段1515(EVEX字節(jié)1,位[3:0] -_m)-其內(nèi)容對隱含的領先操作 碼字節(jié)(0F、0F38、或0F3)進行編碼。
[0174] 數(shù)據(jù)元素寬度字段1464(EVEX字節(jié)2,位[7] -W) -由記號EVEX.W表示。EVEX.W 用于定義數(shù)據(jù)類型(32位數(shù)據(jù)元素或64位數(shù)據(jù)元素)的粒度(尺寸)。
[0175] EVEX. vvvvl520 (EVEX 字節(jié) 2,位[6:3]-vvvv) - EVEX. vvvv 的作用可包括如下:1) EVEX. vvvv對以反轉(zhuǎn)((多個)1補碼)的形式指定的第一源寄存器操作數(shù)進行編碼且對具 有兩個或兩個以上源操作數(shù)的指令有效;2)EVEX. vvvv針對特定向量位移對以(多個)1補 碼的形式指定的目的地寄存器操作數(shù)進行編碼;或者3)EVEX. vvvv不對任何操作數(shù)進行編 碼,保留該字段,并且應當包含1111b。由此,EVEX. vvvv字段1520對以反轉(zhuǎn)((多個)1補 碼)的形式存儲的第一源寄存器指定符的4個低階位進行編碼。取決于該指令,額外不同 的EVEX位字段用于將指定符尺寸擴展到32個寄存器。
[0176] EVEX. U1468類字段(EVEX字節(jié)2,位[2]-U) -如果EVEX. U = 0,則它指示A類或 EVEX. U0,如果 EVEX. U = 1,則它指示 B 類或 EVEX. U1。
[0177] 前綴編碼字段1525(EVEX字節(jié)2,位[1:0]-ρρ) -提供了用于基礎操作字段的附加 位。除了對以EVEX前綴格式的傳統(tǒng)SSE指令提供支持以外,這也具有壓縮SMD前綴的益 處(EVEX前綴只需要2位,而不是需要字節(jié)來表達SMD前綴)。在一個實施例中,為了支 持使用以傳統(tǒng)格式和以EVEX前綴格式的SMD前綴(66H、F2H、F3H)的傳統(tǒng)SSE指令,這些 傳統(tǒng)SMD前綴被編碼成SMD前綴編碼字段;并且在運行時在提供給解碼器的PLA之前被 擴展成傳統(tǒng)SMD前綴(因此PLA可執(zhí)行傳統(tǒng)和EVEX格式的這些傳統(tǒng)指令,而無需修改)。 雖然較新的指令可將EVEX前綴編碼字段的內(nèi)容直接作為操作碼擴展,但是為了一致性,特 定實施例以類似的方式擴展,但允許由這些傳統(tǒng)SIMD前綴指定不同的含義。替換實施例可 重新設計PLA以支持2位SMD前綴編碼,并且由此不需要擴展。
[0178] α 字段 1452 (EVEX 字節(jié) 3,位[7] - EH ;也稱為 EVEX. EH、EVEX. rs、EVEX. RL、EVEX. 寫掩碼控制、以及EVEX. N;還被示為具有α) -如先前所述的,該字段是上下文特定的。
[0179] β字段 1454(EVEX字節(jié)3,位[6:4]-SSS,也稱為EVEX·s2_。、EVEX·r2_。、EVEX·rrl、 EVEX. LLO、EVEX. LLB,還被示為具有β β β) -如先前所述的,該字段是上下文特定的。
[0180] REX'字段1410 -這是REX'字段的其余部分,并且是可用于對擴展的32個寄存器 集合的較高16個或較低16寄存器進行編碼的EVEX. R'位字段(EVEX字節(jié)3,位[3] - V')。 該位以位反轉(zhuǎn)的格式存儲。值1用于對較低16個寄存器進行編碼。換句話說,通過組合 EVEX. V'、EVEX. vvvv 來形成 V' VVVV。
[0181] 寫掩碼字段1470(EVEX字節(jié)3,位[2:0]_kkk) -其內(nèi)容指定寫掩碼寄存器中的寄 存器索引,如先前所述。在本發(fā)明的一個實施例中,特定值EVEX. kkk = 000具有暗示沒有 寫掩碼用于特定指令(這可以各種方式實現(xiàn),包括使用硬連線到所有的寫掩碼或者旁路掩 碼硬件的硬件來實現(xiàn))的特別行為。
[0182] 實操作碼字段1530(字節(jié)4)還被稱為操作碼字節(jié)。操作碼的一部分在該字段中 被指定。
[0183] MOD R/M字段1540(字節(jié)5)包括MOD字段1542、Reg字段1544、以及R/M字段 1546。如先前所述的,MOD字段1542的內(nèi)容將存儲器訪問和非存儲器訪問操作區(qū)分開。Reg 字段1544的作用可被歸結(jié)為兩種情形:對目的地寄存器操作數(shù)或源寄存器操作數(shù)進行編 碼;或者被視為操作碼擴展且不用于對任何指令操作數(shù)進行編碼。R/M字段1546的作用可 包括如下:對引用存儲器地址的指令操作數(shù)進行編碼;或者對目的地寄存器操作數(shù)或源寄 存器操作數(shù)進行編碼。
[0184] 縮放、索引、基址(SIB)字節(jié)(字節(jié)6) -如先前所述的,縮放字段1450的內(nèi)容用于 存儲器地址生成。SIB. xxxl554和SIB. bbbl556 -先前已經(jīng)針對寄存器索引Xxxx和Bbbb 提及了這些字段的內(nèi)容。
[0185] 位移字段1462A (字節(jié)7-10) -當MOD字段1542包含10時,字節(jié)7-10是位移字 段1462A,并且它與傳統(tǒng)32位位移(disp32) -樣地工作,并且以字節(jié)粒度工作。
[0186] 位移因數(shù)字段1462B(字節(jié)7) -當MOD字段1542包含01時,字節(jié)7是位移因數(shù) 字段1462B。該字段的位置與傳統(tǒng)x86指令集8位位移(disp8)的位置相同,它以字節(jié)粒 度工作。由于disp8是符號擴展的,因此它可只在-128和127字節(jié)偏移量之間尋址;在64 字節(jié)高速緩存線的方面,disp8使用可被設為僅四個真正有用的值-128、-64、0和64的8 位;由于常常需要更大的范圍,所以使用disp32 ;然而,disp32需要4個字節(jié)。與disp8和 disp32對比,位移因數(shù)字段1462B是disp8的重新解釋;當使用位移因數(shù)字段1462B時,通 過位移因數(shù)字段的內(nèi)容乘以存儲器操作數(shù)訪問的尺寸(N)來確定實際位移。該類型的位移 被稱為disp8*N。這減小了平均指令長度(用于位移但具有大得多的范圍的單一字節(jié))。這 種壓縮位移基于有效位移是存儲器訪問的粒度的倍數(shù)的假設,并且由此地址偏移量的冗余 低階位不需要被編碼。換句話說,位移因數(shù)字段1462B替代傳統(tǒng)x86指令集8位位移。由 此,位移因數(shù)字段1462B以與x86指令集8位位移相同的方式(因此在ModRM/SIB編碼規(guī) 則中沒有變化)進行編碼,唯一的不同在于,disp8超載至disp8*N。換句話說,在編碼規(guī)則 或編碼長度中沒有變化,而僅在通過硬件對位移值的解釋中有變化(這需要按存儲器操作 數(shù)的尺寸按比例縮放位移量以獲得字節(jié)式地址偏移量)。
[0187] 立即數(shù)字段1472如先前所述地操作。
[0188] 完整操作碼字段
[0189] 圖15B是示出根據(jù)本發(fā)明的實施例的構(gòu)成完整操作碼字段1474的具有專用向量 友好指令格式1500的字段的框圖。具體地,完整操作碼字段1474包括格式字段1440、基礎 操作字段1442、以及數(shù)據(jù)元素寬度(W)字段1464?;A操作字段1442包括前綴編碼字段 1525、操作碼映射字段1515以及實操作碼字段1530。
[0190] 寄存器索引字段
[0191] 圖15C是示出根據(jù)本發(fā)明的實施例的構(gòu)成寄存器索引字段1444的具有專用向量 友好指令格式1500的字段的框圖。具體地,寄存器索引字段1444包括REX字段1505、REX' 字段 1510、MODR/M. reg 字段 1544、MODR/M. r/m 字段 1546、VVVV 字段 1520、XXX 字段 1554 以及bbb字段1556。
[0192] 擴充操作字段
[0193] 圖是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成擴充(augmentation)操作字段 1450的具有專用向量友好指令格式1500的字段的框圖。當類(U)字段1468包含0時,它 表明EVEX. U0(A類1468A);當它包含1時,它表明EVEX. U1(B類1468B)。當U = 0且MOD字 段1542包含11 (表明無存儲器訪問操作)時,α字段1452 (EVEX字節(jié)3,位[7] - EH)被解 釋為rs字段1452Α。當rs字段1452Α包含1 (舍入1452Α. 1)時,β字段1454 (EVEX字節(jié) 3,位[6:4] - SSS)被解釋為舍入控制字段1454A。舍入控制字段1454A包括一位SAE字段 1456和兩位舍入操作字段1458。當rs字段1452A包含0 (數(shù)據(jù)變換1452A. 2)時,β字段 1454(EVEX字節(jié)3,位[6:4] -SSS)被解釋為三位數(shù)據(jù)變換字段1454B。當U = 0且MOD字段 1542包含00、01或10(表達存儲器訪問操作)時,α字段1452(EVEX字節(jié)3,位[7] - EH) 被解釋為驅(qū)逐提示(EH)字段1452B且β字段1454(EVEX字節(jié)3,位[6:4] - SSS)被解釋為 三位數(shù)據(jù)操縱字段1454C。
[0194] 當U= 1時,α字段1452(EVEX字節(jié)3,位[7] -EH)被解釋為寫掩碼控制(Z)字段 1452C。當U = 1且MOD字段1542包含11 (表明無存儲器訪問操作)時,β字段1454的一 部分(EVEX字節(jié)3,位[4] - SQ)被解釋為RL字段1457Α ;當它包含1 (舍入1457Α. 1)時,β 字段1454的其余部分(EVEX字節(jié)3,位[6-5] - S2J被解釋為舍入操作字段1459Α,而當RL 字段1457A包含0(VSIZE1457.A2)時,β字段1454的其余部分(EVEX字節(jié)3,位[6-5]-^) 被解釋為向量長度字段1459Β (EVEX字節(jié)3,位[6-5] - Lg)。當U = 1且MOD字段1542包 含00、01或10(表明存儲器訪問操作)時,β字段1454(EVEX字節(jié)3,位[6:4] - SSS)被解 釋為向量長度字段1459B(EVEX字節(jié)3,位[6-5] -Lg)和廣播字段1457B(EVEX字節(jié)3,位 [4] - B)。
[0195] 示例性寄存器架構(gòu)
[0196] 圖16是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)1600的框圖。在所示出的實施 例中,有32個512位寬的向量寄存器1610 ;這些寄存器被引用為zmmO到zmm31。較低的 16zmm寄存器的較低階256個位覆蓋在寄存器ymm〇-16上。較低的16zmm寄存器的較低階 128個位(ymm寄存器的較低階128個位)覆蓋在寄存器xmmO-15上。專用向量友好指令格 式1500對這些覆蓋的寄存器組操作,如在以下表格中所示的。
[0197]

【權(quán)利要求】
1. 一種方法,包括: 接收浮點舍入量確定指令,所述浮點舍入量確定指令指示一個或多個浮點數(shù)據(jù)元素的 源,指示小數(shù)點之后的分數(shù)位的數(shù)量,且指示目的地存儲位置;以及 響應于浮點舍入量確定指令將包括一個或多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果存儲在目的 地存儲位置,一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個包括相應位置中的源的相應浮點數(shù) 據(jù)元素與已經(jīng)被舍入到指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的 差。
2. 如權(quán)利要求1所述的方法,其特征在于,進一步包括: 確定已經(jīng)被舍入到所指示數(shù)量的分數(shù)位的源的浮點數(shù)據(jù)元素的經(jīng)舍入版本;以及 從所述源的浮點數(shù)據(jù)元素減去經(jīng)舍入版本。
3. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收明確指定分數(shù)位的數(shù)量的浮 點舍入量確定指令。
4. 如權(quán)利要求3所述的方法,其特征在于,接收包括接收具有立即數(shù)的浮點舍入量確 定指令,所述立即數(shù)包括用以明確指定分數(shù)位的數(shù)量的多個位。
5. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收含有打包數(shù)據(jù)操作掩碼說明 符和數(shù)據(jù)元素廣播控制的浮點舍入量確定指令。
6. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示打包數(shù)據(jù)操作掩碼的浮 點舍入量確定指令,且其中存儲結(jié)果包括根據(jù)打包數(shù)據(jù)操作掩碼有條件地存儲一個或多個 結(jié)果浮點數(shù)據(jù)元素,每個結(jié)果浮點數(shù)據(jù)元素包括源的相應浮點數(shù)據(jù)元素和源的相應浮點數(shù) 據(jù)元素的經(jīng)舍入版本之間的差。
7. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示單個浮點數(shù)據(jù)元素的源 的浮點舍入量確定指令,且其中存儲包括存儲含有多個打包結(jié)果浮點數(shù)據(jù)元素的結(jié)果打包 數(shù)據(jù),所述結(jié)果浮點數(shù)據(jù)元素中的每一個包括源的單個浮點數(shù)據(jù)元素和已經(jīng)被舍入到所指 示的數(shù)量的分數(shù)位的源的單個浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。
8. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示多個打包浮點數(shù)據(jù)元素 的源的浮點舍入量確定指令,且其中存儲包括存儲含有相應的多個打包結(jié)果浮點數(shù)據(jù)元素 的結(jié)果。
9. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示單個標量浮點數(shù)據(jù)元素 的源的浮點舍入量確定指令,且其中存儲包括存儲含有單個相應的結(jié)果浮點數(shù)據(jù)元素的結(jié) 果。
10. 如權(quán)利要求1所述的方法,其特征在于,還包括在浮點乘法和加法算術邏輯單元中 的一個或多個結(jié)果浮點數(shù)據(jù)元素。
11. 如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示源的浮點舍入量確定指 令,所述源包括以下之一 :(1)至少八個雙精度浮點數(shù)據(jù)元素;以及(2)至少十六個單精度 浮點數(shù)據(jù)元素。
12. -種裝置,包括: 多個寄存器;以及 與多個寄存器耦合的浮點執(zhí)行單元,所述浮點執(zhí)行單元操作成響應于浮點舍入量確 定指令將結(jié)果存儲在目的地中,所述浮點舍入量確定指令指示一個或多個浮點數(shù)據(jù)元素的 源,指示小數(shù)點之后的分數(shù)位的數(shù)量,并且指示目的地,所述結(jié)果包括一個或多個結(jié)果浮點 數(shù)據(jù)元素,所述一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個包括在相應位置中的源的相應浮 點數(shù)據(jù)元素與已經(jīng)被舍入到所指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本 之間的差。
13. 如權(quán)利要求12所述的裝置,其特征在于,所述浮點舍入量確定指令明確指定分數(shù) 位的數(shù)量。
14. 如權(quán)利要求13所述的裝置,其特征在于,所述浮點舍入量確定指令具有立即數(shù),所 述立即數(shù)包括用以明確指定分數(shù)位的數(shù)量的多個位。
15. 如權(quán)利要求12所述的裝置,其特征在于,還包括打包數(shù)據(jù)操作掩碼寄存器,且其中 浮點舍入量確定指令指示打包數(shù)據(jù)操作掩碼寄存器。
16. 如權(quán)利要求12所述的裝置,其特征在于,所述浮點舍入量確定指令指示單個浮點 數(shù)據(jù)元素的源,且其中執(zhí)行單元響應于指令廣播所述單個浮點數(shù)據(jù)元素。
17. 如權(quán)利要求12所述的裝置,其特征在于,還包括打包數(shù)據(jù)操作掩碼寄存器,且其中 浮點舍入量確定指令包括打包數(shù)據(jù)操作掩碼說明符和數(shù)據(jù)元素廣播控制。
18. 如權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行單元響應于指令存儲包括多個 打包結(jié)果浮點數(shù)據(jù)元素的打包數(shù)據(jù)結(jié)果。
19. 如權(quán)利要求12所述的裝置,其特征在于,所述打包數(shù)據(jù)結(jié)果包括至少八個雙精度 浮點數(shù)據(jù)元素和至少十六個單精度浮點數(shù)據(jù)元素中的一個。
20. 如權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行單元響應于指令存儲包括單個 標量結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
21. 如權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行單元包括浮點乘法和加法單元。
22. 如權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行單元響應于指令確定已經(jīng)被舍 入到所指示的數(shù)量的分數(shù)位的源的浮點數(shù)據(jù)元素的經(jīng)舍入版本,并從源的浮點數(shù)據(jù)元素減 去經(jīng)舍入版本。
23. -種系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器操作成響應于浮點舍入量確定指令將結(jié)果存儲 在目的地中,所述浮點舍入量確定指令指示一個或多個浮點數(shù)據(jù)元素的源,指示小數(shù)點之 后的分數(shù)位的數(shù)量,并且指示目的地,所述結(jié)果包括一個或多個結(jié)果浮點數(shù)據(jù)元素,所述一 個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個包括在相應位置中的源的相應浮點數(shù)據(jù)元素與已 經(jīng)被舍入到所指示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。 與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
24. 如權(quán)利要求23所述的系統(tǒng),其特征在于,所述浮點舍入量確定指令具有用于明確 指定分數(shù)位的數(shù)量的立即數(shù)。
25. 如權(quán)利要求23所述的系統(tǒng),其特征在于,還包括打包數(shù)據(jù)操作掩碼寄存器,且其中 浮點舍入量確定指令包括打包數(shù)據(jù)操作掩碼說明符,用以指定打包數(shù)據(jù)操作掩碼寄存器。
26. 一種制品,包括: 包括一種或多種固體數(shù)據(jù)存儲材料的機器可讀存儲介質(zhì),所述機器可讀存儲介質(zhì)存儲 浮點舍入量確定指令, 所述浮點舍入量確定指令指示一個或多個浮點數(shù)據(jù)元素的源,指示小數(shù)點之后的分數(shù) 位的數(shù)量,并且指示目的地存儲位置,并且所述浮點舍入量確定指令如果由機器執(zhí)行則操 作用于導致所述機器執(zhí)行以下操作: 將包括一個或多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果存儲在目的地存儲位置中,一個或多個結(jié) 果浮點數(shù)據(jù)元素中的每一個包括相應位置中的源的相應浮點數(shù)據(jù)元素與已經(jīng)被舍入到指 示數(shù)量的分數(shù)位的源的相應浮點數(shù)據(jù)元素的經(jīng)舍入版本之間的差。
27. 如權(quán)利要求26所述的制品,其特征在于,所述指令如果由機器執(zhí)行還操作用于導 致機器訪問由指令指示的打包數(shù)據(jù)操作掩碼。
28. 如權(quán)利要求26所述的制品,其特征在于,所述指令如果由機器執(zhí)行還操作用于導 致機器廣播由指令指示的單個源浮點數(shù)據(jù)元素。
【文檔編號】G06F9/06GK104145245SQ201180076467
【公開日】2014年11月12日 申請日期:2011年12月30日 優(yōu)先權(quán)日:2011年12月30日
【發(fā)明者】C·S·安德森, B·L·托爾, R·凡倫天, S·盧巴諾維奇, A·格雷德斯廷 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
江门市| 永寿县| 建阳市| 五寨县| 临湘市| 桐梓县| 灌云县| 无锡市| 阿城市| 金华市| 台山市| 汾阳市| 丹江口市| 昌乐县| 达日县| 陆河县| 满洲里市| 汶上县| 同心县| 临泽县| 长丰县| 水城县| 曲周县| 云林县| 安多县| 贺州市| 松原市| 定远县| 海口市| 章丘市| 神农架林区| 福海县| 藁城市| 巴马| 玉溪市| 林芝县| 通城县| 徐闻县| 衡阳县| 大竹县| 宣城市|