亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

浮點(diǎn)舍入處理器、方法、系統(tǒng)和指令的制作方法

文檔序號:6485322閱讀:386來源:國知局
浮點(diǎn)舍入處理器、方法、系統(tǒng)和指令的制作方法
【專利摘要】一方面,方法包括接收浮點(diǎn)舍入指令。浮點(diǎn)舍入指令指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)被舍入至的分?jǐn)?shù)位的數(shù)量,并且指示目的地存儲(chǔ)位置。響應(yīng)于浮點(diǎn)舍入指令,結(jié)果被存儲(chǔ)在目的地存儲(chǔ)位置中。結(jié)果包括一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素。一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)包括源中相應(yīng)的位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素中的一個(gè)。公開了其它方法、裝置、系統(tǒng)和指令。
【專利說明】浮點(diǎn)舍入處理器、方法、系統(tǒng)和指令
[0001]背景【技術(shù)領(lǐng)域】
[0002]實(shí)施例涉及處理器。具體地,實(shí)施例涉及響應(yīng)于浮點(diǎn)舍入指令對浮點(diǎn)數(shù)進(jìn)行舍入的處理器。
[0003]背景信息
[0004]浮點(diǎn)數(shù)通常用于處理器、計(jì)算機(jī)系統(tǒng)和其它電子設(shè)備。浮點(diǎn)數(shù)的一個(gè)優(yōu)點(diǎn)是它們允許按相對緊湊的數(shù)值格式和/或位數(shù)表示寬范圍的數(shù)值。
[0005]現(xiàn)有技術(shù)中已知若干不同的浮點(diǎn)格式。浮點(diǎn)格式通常將用于表示浮點(diǎn)數(shù)的位分?jǐn)偝扇舾山M成(constituent)字段,稱為浮點(diǎn)數(shù)的符號、有效位和指數(shù)。
[0006]在本領(lǐng)域中已知用于處理浮點(diǎn)數(shù)的各種指令。例如,已知用于在浮點(diǎn)和整數(shù)格式之間轉(zhuǎn)換的指令作為另一個(gè)示例,已知用于將標(biāo)量或打包單精度或雙精度浮點(diǎn)數(shù)據(jù)元素分別舍入為單精度或雙精度浮點(diǎn)格式的整數(shù)的指令。
【專利附圖】

【附圖說明】
[0007]可通過參考以下描述以及用于示出實(shí)施例的附圖最佳地理解本發(fā)明。在附圖中:
[0008]圖1是具有含一個(gè)或多個(gè)浮點(diǎn)舍入指令的指令集的處理器的實(shí)施例的框圖。
[0009]圖2A-E是適當(dāng)?shù)母↑c(diǎn)格式的實(shí)施例的框圖。
[0010]圖3是具有操作用于執(zhí)行浮點(diǎn)舍入指令的實(shí)施例的浮點(diǎn)執(zhí)行單元的指令處理裝置的實(shí)施例的框圖。
[0011]圖4是處理浮點(diǎn)舍入指令的實(shí)施例的方法的實(shí)施例的流程框圖。
[0012]圖5是用于將一個(gè)或多個(gè)浮點(diǎn)數(shù)的一個(gè)或多個(gè)有效位數(shù)舍入成所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)舍入操作的實(shí)施例的框圖。
[0013]圖6是適當(dāng)?shù)母↑c(diǎn)源和/或結(jié)果格式的若干示例實(shí)施例的框圖。
[0014]圖1是帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入操作(a floating point rounding with dataelement broadcast operation)的實(shí)施例的框圖。
[0015]圖8 是帶掩碼的浮點(diǎn)舍入操作(a floating point rounding with maskingoperation)的實(shí)施例的框圖。
[0016]圖9是一組合適的打包數(shù)據(jù)操作掩碼寄存器的實(shí)施例的框圖。
[0017]圖10是浮點(diǎn)舍入指令格式的實(shí)施例的框圖。
[0018]圖11是適當(dāng)?shù)牧⒓磾?shù)的特定示例實(shí)施例的框圖。
[0019]圖12是一組合適的打包數(shù)據(jù)寄存器的實(shí)施例的框圖。
[0020]圖13是包括機(jī)器可讀存儲(chǔ)介質(zhì)的制品的框圖。
[0021]圖14A是示出根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其A類指令模板的框圖。
[0022]圖14B是示出根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其B類指令模板的框圖。
[0023]圖15是示出根據(jù)本發(fā)明的實(shí)施例的示例性專用矢量友好指令格式的框圖。
[0024]圖15B是示出根據(jù)本發(fā)明的實(shí)施例的構(gòu)成完整操作碼字段的具有專用矢量友好指令格式的字段的框圖。
[0025]圖15C是示出根據(jù)本發(fā)明的實(shí)施例的構(gòu)成寄存器索引字段的具有專用矢量友好指令格式的字段的框圖。
[0026]圖1?是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成擴(kuò)充(augmentation)操作字段的具有專用矢量友好指令格式的字段的框圖。
[0027]圖16是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖。
[0028]圖17A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0029]圖17B示出處理器核,該處理器核包括耦合到執(zhí)行引擎單元的前端單元,并且兩者耦合到存儲(chǔ)器單元。
[0030]圖18A是根據(jù)本發(fā)明實(shí)施例的單處理器核連同其到管芯上互連網(wǎng)絡(luò)的連接以及其2級(L2)高速緩存的本地子集的框圖。
[0031]圖18B是根據(jù)本發(fā)明的實(shí)施例的圖18A中的處理器核的一部分的展開圖。
[0032]圖19是根據(jù)本發(fā)明實(shí)施例可具有一個(gè)以上的核、可具有集成存儲(chǔ)器控制器以及可具有集成圖形器件的處理器的框圖。
[0033]圖20所示為根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0034]圖21所示為根據(jù)本發(fā)明的實(shí)施例的第一更具體示例性系統(tǒng)的框圖。
[0035]圖22示出根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)的框圖。
[0036]圖23示出根據(jù)本發(fā)明的實(shí)施例的SoC的框圖。
[0037]圖24是根據(jù)本發(fā)明的各實(shí)施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實(shí)施方式】
[0038]本文中公開的是浮點(diǎn)舍入指令,用于執(zhí)行該浮點(diǎn)舍入指令的處理器,在處理或執(zhí)行浮點(diǎn)舍入指令時(shí)處理器執(zhí)行的方法,以及合并一個(gè)或多個(gè)處理器以處理或執(zhí)行該浮點(diǎn)舍入指令的系統(tǒng)。本文中公開的各種處理器和系統(tǒng)是合適的。在以下描述中,闡述多個(gè)特定細(xì)節(jié)(例如,特定處理器配置、操作序列、指令格式、浮點(diǎn)格式、微架構(gòu)細(xì)節(jié)等)。然而,在沒有這些具體細(xì)節(jié)的情況下,可實(shí)踐實(shí)施例。在其他實(shí)例中,在細(xì)節(jié)方面未示出公知電路、結(jié)構(gòu)和技術(shù),以避免混淆對該描述的理解。
[0039]圖1是具有含一個(gè)或多個(gè)浮點(diǎn)舍入指令103的指令集102的處理器100的實(shí)施例的框圖。該處理器可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡指令集計(jì)算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。在一些實(shí)施例中,處理器可以是通用處理器(例如,具有在臺(tái)式、膝上型等計(jì)算機(jī)中使用的類型的通用微處理器)。替換地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,網(wǎng)絡(luò)處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(DSP)、浮點(diǎn)協(xié)處理器以及控制器(例如,微控制器),僅列舉數(shù)例。[0040]處理器具有指令集架構(gòu)(ISA) 101。ISA表示處理器的架構(gòu)中涉及編程的那部分。ISA通常包括原生指令、架構(gòu)寄存器、數(shù)據(jù)類型、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理以及處理器的外部輸入和輸出(I/O)。ISA與微架構(gòu)不同,微架構(gòu)通常表示選擇用于實(shí)現(xiàn)ISA的特定處理器設(shè)計(jì)技術(shù)。帶有不同的微架構(gòu)的處理器可以共享共同的ISA。
[0041]ISA包括處理器支持的指令集102。指令集的這些指令表示宏指令(例如,提供給處理器以供執(zhí)行的指令),與微指令或微操作(例如,處理器的解碼器解碼宏指令得到的微指令或微操作)不同。指令集包括一個(gè)或多個(gè)浮點(diǎn)舍入指令103。在一些實(shí)施例中,浮點(diǎn)舍入指令操作用于導(dǎo)致處理器將浮點(diǎn)數(shù)的有效位數(shù)(significand)舍入到所指示數(shù)量的分?jǐn)?shù)位。以下進(jìn)一步公開浮點(diǎn)舍入指令的各不同實(shí)施例。處理器還包括浮點(diǎn)執(zhí)行邏輯108,該邏輯操作用于執(zhí)行或處理浮點(diǎn)舍入指令103。
[0042]ISA還包括架構(gòu)可視寄存器(例如,架構(gòu)寄存器組)104。架構(gòu)寄存器通常表示管芯上的處理器存儲(chǔ)位置。架構(gòu)寄存器此處也可以被簡稱為寄存器。短語架構(gòu)寄存器、寄存器組、以及寄存器在本申請中用于表示對軟件和/或編程者可見(例如,軟件可見的)的寄存器和/或由通用宏指令指定用來標(biāo)識操作數(shù)的寄存器,除非另外指定或清楚地明顯可知。這些寄存器與給定微架構(gòu)中的其他非架構(gòu)的或非在架構(gòu)上可見的寄存器(例如,指令所使用的臨時(shí)寄存器,重新排序緩沖器,退役寄存器等等)不同。
[0043]所示出的架構(gòu)寄存器包括打包數(shù)據(jù)寄存器105。每個(gè)打包數(shù)據(jù)寄存器可操作用于存儲(chǔ)打包數(shù)據(jù)、矢量數(shù)據(jù)或者SIMD數(shù)據(jù)。在一些實(shí)施例中,打包數(shù)據(jù)寄存器可用于存儲(chǔ)與浮點(diǎn)舍入指令103相關(guān)聯(lián)的打包浮點(diǎn)數(shù)據(jù)。在一些實(shí)施例中,打包數(shù)據(jù)寄存器可用于存儲(chǔ)與浮點(diǎn)舍入指令相關(guān)聯(lián)的標(biāo)量浮點(diǎn)數(shù)據(jù)。在一些實(shí)施例中,打包數(shù)據(jù)寄存器還可任選地能夠存儲(chǔ)整數(shù),但這不是必須的。或者,架構(gòu)寄存器可包括單獨(dú)標(biāo)量浮點(diǎn)寄存器的集合,用以分別存儲(chǔ)用于浮點(diǎn)舍入指令的標(biāo)量浮點(diǎn)數(shù)據(jù)。
[0044]在一些實(shí)施例中,寄存器可任選地包括掩碼寄存器106,然而這不是必須的。掩碼寄存器可存儲(chǔ)打包數(shù)據(jù)操作掩碼,以對打包數(shù)據(jù)操作(例如與浮點(diǎn)舍入指令相關(guān)聯(lián)的打包數(shù)據(jù)浮點(diǎn)舍入操作)進(jìn)行掩碼或斷言。以下進(jìn)一步討論掩碼寄存器和掩碼操作。
[0045]寄存器還包括控制和/或狀態(tài)寄存器107。在一些方面,控制和/或狀態(tài)寄存器中的一個(gè)或多個(gè)可包括與浮點(diǎn)舍入指令的執(zhí)行相關(guān)聯(lián)的狀態(tài)和/或控制信息(例如,它可包括浮點(diǎn)舍入指令所使用的默認(rèn)舍入模式,除非存在由指令提供的超馳)。
[0046]浮點(diǎn)數(shù)包括符號、有效位數(shù)、基數(shù)和指數(shù),它們的關(guān)系在等式I中示出:
[0047]A = (-1) M *有效位數(shù)*基數(shù).等式I
[0048]表達(dá)式“(-1) 表示負(fù)一自乘到符號次冪。該表達(dá)式評估浮點(diǎn)數(shù)是正(+)或負(fù)(_)。例如,當(dāng)符號是整數(shù)O時(shí),浮點(diǎn)數(shù)是正,或者當(dāng)符號是整數(shù)I時(shí),浮點(diǎn)數(shù)是負(fù)。有效位數(shù)包括一定長度的數(shù)字串,該長度在很大程度上決定浮點(diǎn)數(shù)的精度。有效位數(shù)有時(shí)也被稱為有效數(shù)字、系數(shù)、分?jǐn)?shù)或尾數(shù)。通常隱含地假設(shè)小數(shù)點(diǎn)(例如,十進(jìn)制格式的十進(jìn)制小數(shù)點(diǎn)或二進(jìn)制格式的二進(jìn)制點(diǎn))位于固定位置(例如,剛好在有效位數(shù)的最左或最高有效數(shù)字的右側(cè),在一些情況下可如下所討論地暗示)。二進(jìn)制中示例有效位數(shù)可以是“1.10010010000111111011011”。小數(shù)點(diǎn)右側(cè)的有效位數(shù)的數(shù)字(例如“10010010000111111011011”)可表示分?jǐn)?shù)位。表達(dá)式“基數(shù)表示基數(shù)自乘到指數(shù)次冪?;鶖?shù)通常是基數(shù)2 (對于二進(jìn)制),基數(shù)10 (對于十進(jìn)制)或基數(shù)16 (對于十六進(jìn)制)。基數(shù)有時(shí)被稱為底數(shù)(radix)。指數(shù)還可被稱為首數(shù)(characteristic)或縮放因數(shù)(scale)。使基數(shù)自乘指數(shù)次冪實(shí)際上將小數(shù)點(diǎn)(例如,從隱含的或假設(shè)的開始位置)移動(dòng)指數(shù)數(shù)量的數(shù)位。如果指數(shù)為正,則小數(shù)點(diǎn)向右移動(dòng),或者如果指數(shù)為負(fù),則小數(shù)點(diǎn)向左移動(dòng)。
[0049]圖2A-E是示出適當(dāng)?shù)母↑c(diǎn)格式的示例實(shí)施例的框圖。電氣和電子工程師協(xié)會(huì)(IEEE)已經(jīng)將標(biāo)志IEEE754的各種版本中的這些格式標(biāo)準(zhǔn)化。
[0050]圖2A示出半精度浮點(diǎn)格式210A。半精度浮點(diǎn)具有16位且也被稱為二進(jìn)制16。半精度浮點(diǎn)格式包括在位[9:0]中的10位的有效位數(shù)211A、在位[14:10]中的5位的指數(shù)212A以及在位[15]中的I位的符號213A。
[0051]圖2B示出單精度浮點(diǎn)格式210B。單精度浮點(diǎn)格式具有32位且也被稱為二進(jìn)制32。單精度浮點(diǎn)格式包括在位[22:0]中的23位的有效位數(shù)211B、在位[30:23]中的8位的指數(shù)212B以及在位[31]中的I位的符號213B。
[0052]圖2C示出雙精度浮點(diǎn)格式210C。雙精度浮點(diǎn)格式具有64位且也被稱為二進(jìn)制64。雙精度浮點(diǎn)格式包括在位[51:0]中的52位的有效位數(shù)211C、在位[62:52]中的11位的指數(shù)212C以及在位[63]中的I位的符號213C。目前,單精度和雙精度格式可能被大多數(shù)處理器、計(jì)算機(jī)系統(tǒng)和電子設(shè)備廣泛使用。
[0053]圖2D示出擴(kuò)展雙精度浮點(diǎn)格式210D。擴(kuò)展雙精度浮點(diǎn)格式具有80位。擴(kuò)展雙精度浮點(diǎn)格式包括在位[63:0]中的64位的有效位數(shù)211D、在位[78:64]中的15位的指數(shù)212D以及在位[79]中的I位的符號213D。
[0054]圖2E示出四精度浮點(diǎn)格式210E。四精度浮點(diǎn)格式具有128位且也被稱為二進(jìn)制128。四精度浮點(diǎn)格式包括在位[111:0]中的112位的有效位數(shù)211E、在位[126:112]中的15位的指數(shù)212E以及在位[127]中的I位的符號213E。
[0055]在這些浮點(diǎn)格式的每一個(gè)中,暗示或假設(shè)基數(shù)是基數(shù)2 (即,二進(jìn)制),且不被以浮點(diǎn)格式來單獨(dú)存儲(chǔ)。有效位數(shù)的最高有效或最左位被稱為J位。隱含地假設(shè)J位是二進(jìn)制1,且一般不被存儲(chǔ)為浮點(diǎn)格式,而是提供附加精度而不需要被存儲(chǔ)的隱含或隱藏位(例如,對于有效位數(shù)明確具有23位的單精度浮點(diǎn)數(shù)實(shí)際具有24位精度)。通常假定小數(shù)點(diǎn)在J位之后。指數(shù)通常具有指數(shù)偏移(exponent bias)。例如,半精度格式可具有指數(shù)偏移15,單精度格式可具有指數(shù)偏移127,雙精度格式可具有指數(shù)偏移1023,而四精度格式可具有指數(shù)偏移16383。如果需要的話,可在IEEE754中獲得關(guān)于浮點(diǎn)數(shù)和格式的進(jìn)一步細(xì)節(jié)。
[0056]這些只是數(shù)個(gè)說明性示例。其它適當(dāng)?shù)母袷桨ǖ幌抻谑M(jìn)制32、十進(jìn)制64和十進(jìn)制128。此外,未來開發(fā)的其它格式通常也是適當(dāng)?shù)摹?br> [0057]圖3是具有操作用于執(zhí)行包括浮點(diǎn)舍入指令303的實(shí)施例的指令的浮點(diǎn)執(zhí)行單元316的指令處理裝置300的實(shí)施例的框圖。在一些實(shí)施例中,指令處理裝置可以是處理器和/或可被包括在處理器中。例如,在一些實(shí)施例中,指令處理裝置可以是圖1的處理器或類似設(shè)備,或者可被包括在圖1的處理器或類似設(shè)備中。替換地,指令處理裝置可被包括在不同的處理器或電子系統(tǒng)中。在一些實(shí)施例中,指令處理裝置可被包括在增加的或單獨(dú)的浮點(diǎn)處理器或單元,以引入或補(bǔ)充相關(guān)聯(lián)的處理器的浮點(diǎn)處理能力。
[0058]指令處理裝置300可接收浮點(diǎn)舍入指令303。例如,可從指令獲取單元、指令隊(duì)列或存儲(chǔ)器接收該指令。浮點(diǎn)舍入指令可表示由指令處理裝置識別并控制該裝置執(zhí)行特定操作的機(jī)器指令、宏指令或控制信號。[0059]浮點(diǎn)舍入指令可明確指定(例如通過位或一個(gè)或多個(gè)字段)或以其它方式指示(隱含地指示)源320。源包括一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素321。在一些實(shí)施例中,浮點(diǎn)舍入指令可明確指定(例如,通過位或一個(gè)或多個(gè)字段)或以其它方式指示(例如,隱含指示)小數(shù)點(diǎn)(例如,二進(jìn)制小數(shù)點(diǎn)、十進(jìn)制小數(shù)點(diǎn)或十六進(jìn)制小數(shù)點(diǎn))之后源320的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素321中每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量。指令還可指定或以其它方式指示目的地(例如,目的地存儲(chǔ)位置)322,其中根據(jù)指令存儲(chǔ)包括一個(gè)或多個(gè)經(jīng)舍入的浮點(diǎn)結(jié)果數(shù)據(jù)元素的結(jié)果324。
[0060]在一些實(shí)施例中,源320和目的地322可各自在指令處理裝置的一組打包數(shù)據(jù)寄存器305內(nèi),盡管這不是必須的。打包數(shù)據(jù)寄存器可各自表示管芯上的存儲(chǔ)位置(例如,在具有執(zhí)行單元的管芯上)。打包數(shù)據(jù)寄存器可表示架構(gòu)寄存器。打包數(shù)據(jù)寄存器中的每一個(gè)都可操作用于存儲(chǔ)打包或矢量浮點(diǎn)數(shù)據(jù)。在一些實(shí)施例中,打包數(shù)據(jù)寄存器還可操作用于存儲(chǔ)標(biāo)量浮點(diǎn)數(shù)據(jù)。打包數(shù)據(jù)寄存器可使用公知技術(shù)在不同的微架構(gòu)中以不同的方式實(shí)現(xiàn),并且不限于任何特定類型的電路。多種不同類型的寄存器可適用,只要它們能夠存儲(chǔ)并提供在本申請中描述的數(shù)據(jù)。合適類型的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配的物理寄存器及其組合?;蛘?,在其它實(shí)施例中,源和/或目的地中的一個(gè)或多個(gè)可被存儲(chǔ)在打包數(shù)據(jù)寄存器外的其它存儲(chǔ)位置中(例如,在標(biāo)量浮點(diǎn)寄存器、存儲(chǔ)器位置等)。
[0061]所示的指令處理裝置包括指令解碼單元或解碼器315。解碼器可接收和解碼高級機(jī)器指令或宏指令,并且輸出一個(gè)或多個(gè)較低級的微操作、微代碼入口點(diǎn)、微指令或者反映和/或從原始較高級指令導(dǎo)出的其他較低級的指令或控制信號。一個(gè)或多個(gè)較低級指令或控制信號可通過一個(gè)或多個(gè)較低級(例如,電路級或硬件級)操作來實(shí)現(xiàn)較高級指令的操作。該解碼器可以使用各種不同的機(jī)制來實(shí)現(xiàn),包括但不限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)和本領(lǐng)域公知的用于實(shí)現(xiàn)解碼器的其他機(jī)制。
[0062]在其他實(shí)施例中,取代具有解碼器315,可使用指令仿真器、翻譯器、變形器(morpher)、解釋器、或者其他指令轉(zhuǎn)換邏輯。各種不同類型的指令轉(zhuǎn)換邏輯在本領(lǐng)域中是已知的,并且可在軟件、硬件、固件、或者其組合中實(shí)現(xiàn)。指令轉(zhuǎn)換邏輯可接收指令,并且仿真、翻譯、變形、解釋、或者以其他方式將接收的指令轉(zhuǎn)換成一個(gè)或多個(gè)對應(yīng)的導(dǎo)出指令或控制信號。在其他實(shí)施例中,可使用指令轉(zhuǎn)換邏輯和解碼器兩者。例如,該裝置可具有用于將接收到的指令轉(zhuǎn)換成一個(gè)或多個(gè)中間指令的指令轉(zhuǎn)換邏輯、以及用于將一個(gè)或多個(gè)中間指令解碼成可由該指令處理裝置的原生硬件執(zhí)行的一個(gè)或多個(gè)較低級指令或控制信號的解碼器。指令變換邏輯中的一些或全部可位于指令處理裝置的其余部分的管芯外,諸如在單獨(dú)的管芯上或在管芯外的存儲(chǔ)器中。
[0063]再次參考圖3,浮點(diǎn)執(zhí)行單元316與解碼器315耦合。執(zhí)行單元可從解碼器接收一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令或其他控制信號,它們反映了浮點(diǎn)舍入指令303或者是從浮點(diǎn)舍入指令303導(dǎo)出的。執(zhí)行單元還與源320和目的地322耦合。浮點(diǎn)執(zhí)行單元包括設(shè)計(jì)成在浮點(diǎn)數(shù)上進(jìn)行操作(例如,浮點(diǎn)舍入操作等)的邏輯(例如,通常為至少一些電路)。
[0064]響應(yīng)于浮點(diǎn)舍入指令303和/或作為浮點(diǎn)舍入指令303的結(jié)果,浮點(diǎn)執(zhí)行單元316操作用于將結(jié)果324存儲(chǔ)在目的地中,該浮點(diǎn)舍入指令303指定或以其它方式指示包括一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素321的源320并且指定或以其它方式指示目的地322。結(jié)果可包括一個(gè)或多個(gè)相應(yīng)的舍入結(jié)果浮點(diǎn)數(shù)據(jù)元素323。
[0065]在一些實(shí)施例中,浮點(diǎn)舍入指令操作用于導(dǎo)致裝置將一個(gè)或多個(gè)源浮點(diǎn)數(shù)的有效位數(shù)舍入到給定數(shù)量的分?jǐn)?shù)位。在該實(shí)施例中,浮點(diǎn)舍入指令可指定或以其它方式指示在小數(shù)點(diǎn)之后或右側(cè)源的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量。在該實(shí)施例中,一個(gè)或多個(gè)舍入結(jié)果浮點(diǎn)數(shù)據(jù)元素可各自包括源中相應(yīng)位置中已經(jīng)被舍入到指令指示的數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一。該過程不限于舍入到整數(shù)值。當(dāng)指令指示的分?jǐn)?shù)位的數(shù)量為O時(shí),舍入到整數(shù)值是可能的,但當(dāng)指令指示的分?jǐn)?shù)位的數(shù)量不是零時(shí)可實(shí)現(xiàn)舍入到非整數(shù)值。在一些實(shí)施例中,浮點(diǎn)舍入指令的立即數(shù)可包括用于明確指定在小數(shù)點(diǎn)(例如,二進(jìn)制或十進(jìn)制小數(shù)點(diǎn))之后源的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)被舍入至的分?jǐn)?shù)位的數(shù)量。在一個(gè)特定實(shí)施例中,8位立即數(shù)的位[7:4]可指定該數(shù)量(例如,指定O和十五之間的數(shù)),盡管這不是必須的。
[0066]舍入浮點(diǎn)數(shù)指的是用另一個(gè)浮點(diǎn)數(shù)替換浮點(diǎn)數(shù),另一個(gè)浮點(diǎn)數(shù)表示(例如,近似等于)最初浮點(diǎn)數(shù),但在小數(shù)點(diǎn)之后具有較少數(shù)量的分?jǐn)?shù)位??紤]對數(shù)派U )舍入的示例。按熟悉的十進(jìn)制計(jì)數(shù)法表示的達(dá)二十個(gè)小數(shù)位的數(shù)π是Ji = 3.14159265358979323846…。二進(jìn)制計(jì)數(shù)法表示的達(dá)二十個(gè)小數(shù)位的數(shù)π是11.00100100001111110110...。在二進(jìn)制單精度浮點(diǎn)格式中,數(shù)H被表示為有效位數(shù)=1.10010010000111111011,且指數(shù)=I。假設(shè)我們想要舍入到5個(gè)分?jǐn)?shù)位。在這種情況下,經(jīng)舍入的值將是11.00100或11.00101,這取決于舍入模式。結(jié)果將按浮點(diǎn)返回,為1.100100且指數(shù)=1,或?yàn)?.100101且指數(shù)=I (這取決于舍入模式)。
[0067]將浮點(diǎn)數(shù)的有效位數(shù)舍入到給定數(shù)量的分?jǐn)?shù)位用于各種不同的目的。作為一個(gè)示例,當(dāng)期望減少分?jǐn)?shù)位的數(shù)量和/或降低浮點(diǎn)數(shù)的精度時(shí),這可能是有用的。作為另一個(gè)示例,當(dāng)將浮點(diǎn)數(shù)轉(zhuǎn)換成小數(shù)點(diǎn) 右側(cè)的給定數(shù)量的有效數(shù)字時(shí),這可能是有用的。作為另一個(gè)示例,在表查找之前利用具有所指示數(shù)量的分?jǐn)?shù)位的經(jīng)舍入的有效位數(shù),作為表的索引,這可能是有用的。減少分?jǐn)?shù)位的數(shù)量可幫助減小表的大小(例如,條目的數(shù)量)。
[0068]在單個(gè)指令的執(zhí)行范圍內(nèi)將一個(gè)或多個(gè)浮點(diǎn)數(shù)舍入到所指示數(shù)量的分?jǐn)?shù)位提供某些優(yōu)點(diǎn)。其它指令可能僅能夠?qū)⒏↑c(diǎn)數(shù)舍入到整數(shù),且這可能需要三步過程:第一,通過使浮點(diǎn)數(shù)乘以與所期望的分?jǐn)?shù)位的數(shù)量相對應(yīng)的縮放因子來縮放浮點(diǎn)數(shù),利用限于具有僅能舍入到整數(shù)量的限制的指令,將經(jīng)縮放的浮點(diǎn)數(shù)舍入為整數(shù),然后通過縮放因子對經(jīng)舍入的整數(shù)值浮點(diǎn)數(shù)進(jìn)行去縮放(descale)。
[0069]通常,所指示的分?jǐn)?shù)位的數(shù)量為正,但在一些實(shí)施例中,可允許所指示的分?jǐn)?shù)位的數(shù)量為負(fù)。舍入到負(fù)數(shù)個(gè)“分?jǐn)?shù)”位可表示舍入到給定的底數(shù)冪的倍數(shù)。例如,當(dāng)舍入到負(fù)整數(shù)_k分?jǐn)?shù)位時(shí),結(jié)果將是N*底數(shù)k,其中N是整數(shù)。作為一個(gè)示例,5.0按二進(jìn)制舍入到k = -1分?jǐn)?shù)位得到4.0或6.0,這取決于舍入模式。作為另一個(gè)示例,15.25按二進(jìn)制舍入到k = -2分?jǐn)?shù)位得到12.0或16.0,這取決于舍入模式。舍入到負(fù)數(shù)個(gè)分?jǐn)?shù)位的使用包括但不限于用于函數(shù)中的特殊情況的測試(諸如pow:k = -l)以及數(shù)學(xué)庫中的其它使用。
[0070]在一些實(shí)施例中,如果源數(shù)據(jù)元素是信令非數(shù)(signaling not a number,SNaN),則可將其轉(zhuǎn)換成靜默非數(shù)(quiet not a number, QNaN)。如果配置非正規(guī)數(shù)是零(denormals-are-zero, DAZ),則可在舍入前將非正規(guī)數(shù)轉(zhuǎn)換成O。[0071]浮點(diǎn)執(zhí)行單元和/或指令處理裝置可包括特定或具體的邏輯(例如,典型的是可能與軟件和/或固件組合的電路或其它硬件),操作用于執(zhí)行和/或處理浮點(diǎn)舍入指令,并響應(yīng)于指令(例如,響應(yīng)于從指令導(dǎo)出的一個(gè)或多個(gè)微指令或其它控制信號)存儲(chǔ)結(jié)果。在一些實(shí)施例中,浮點(diǎn)執(zhí)行單元可包括集成電路、數(shù)字電路、專用集成電路、模擬電路、編程邏輯設(shè)備、包括指令的存儲(chǔ)設(shè)備或其組合。在一些實(shí)施例中,浮點(diǎn)執(zhí)行單元可包括至少一些電路或硬件(例如,由晶體管、柵和/或其它集成電路組件配置的專用電路)。
[0072]為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置。在其他實(shí)施例中,該指令處理裝置可任選地包括其他公知組件,諸如舉例而言,指令提取單元、指令調(diào)度單元、分支預(yù)測單元、指令和數(shù)據(jù)的高速緩存、指令和數(shù)據(jù)的轉(zhuǎn)換后備緩沖器(translationlookaside buffer)、預(yù)取緩沖器、微指令隊(duì)列、微指令定序器、總線接口單元、第二或更高級高速緩存、引退單元、寄存器重命名單元、處理器中包含的其他組件、以及上述的各種組合。其它實(shí)施例可具有多個(gè)核、邏輯處理器或執(zhí)行引擎??捎糜趫?zhí)行本申請中公開的指令實(shí)施例的執(zhí)行單元可被包含在核、邏輯處理器或執(zhí)行引擎中的至少一個(gè)、至少兩個(gè)、大多數(shù)或全部中。實(shí)際上在處理器中存在組件的多種不同的組合和配置,并且各實(shí)施例不限于任何特定組合或配置。
[0073]圖4是處理浮點(diǎn)舍入指令的實(shí)施例的方法425的實(shí)施例的流程框圖。在各實(shí)施例中,該方法可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號處理器)、或另一種類型的數(shù)字邏輯設(shè)備或指令處理裝置執(zhí)行。在一些實(shí)施例中,方法425可由圖1的處理器和/或圖3的指令處理裝置300來執(zhí)行。或者,方法425可由處理器或指令處理裝置的不同實(shí)施例執(zhí)行。此外,圖1的處理器100和圖3的指令處理裝置300可執(zhí)行與圖4的方法425的操作和方法相同、類似或不同的操作和方法的實(shí)施例。
[0074]方法包括在框426處接收浮點(diǎn)舍入指令。浮點(diǎn)舍入指令指定或以其它方式指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源、指定或以其它方式指示在小數(shù)點(diǎn)(例如,二進(jìn)制小數(shù)點(diǎn)或十進(jìn)制小數(shù)點(diǎn))之后源的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)被舍入至的分?jǐn)?shù)位的數(shù)量,并且指定或以其它方式指示目的地存儲(chǔ)位置。在各個(gè)方面,該指令可在處理器、指令處理裝置或者其一部分(例如,解碼器、指令變換器等)處接收。在各個(gè)方面,指令可從處理器外的源(例如,從主存儲(chǔ)器、盤、或總線或互連)或者從處理器上的源(例如,從指令高速緩存)接收。
[0075]然后,在框427,響應(yīng)于浮點(diǎn)舍入指令,作為該指令的結(jié)果和/或由該指令所指定的,結(jié)果被存儲(chǔ)在目的地中。結(jié)果包括一個(gè)或多個(gè)舍入結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素包括在源中相應(yīng)的位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一。作為示例,包括至少一些電路的浮點(diǎn)執(zhí)行單元、指令處理裝置或處理器可執(zhí)行由指令指定的操作并存儲(chǔ)結(jié)果。
[0076]所示的方法包括從處理器或指令處理裝置外部可見的操作(例如,從軟件可見)。在其他實(shí)施例中,該方法可任選地包括處理器內(nèi)出現(xiàn)的一個(gè)或多個(gè)操作。作為示例,可獲取浮點(diǎn)舍入指令,然后可將該指令解碼、轉(zhuǎn)換、仿真或以其它方式變換成一個(gè)或多個(gè)其它指令或控制信號。可訪問和/或接收源操作數(shù)/數(shù)據(jù)??蓡⒂酶↑c(diǎn)執(zhí)行單元,以執(zhí)行指令指定的操作,并且可執(zhí)行該操作(例如,可執(zhí)行用于實(shí)現(xiàn)指令的操作的微架構(gòu)操作)。
[0077]圖5是示出用于將一個(gè)或多個(gè)浮點(diǎn)數(shù)的一個(gè)或多個(gè)有效位數(shù)舍入成所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)舍入操作530的實(shí)施例的框圖??身憫?yīng)于浮點(diǎn)舍入指令的實(shí)施例執(zhí)行浮點(diǎn)舍入操作。
[0078]浮點(diǎn)舍入指令指定或以其它方式指示包括一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源520.在一些實(shí)施例中,源可包括具有有效位數(shù)O(Significandtl)的單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素FP。。在一個(gè)方面,單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素可被存儲(chǔ)在打包數(shù)據(jù)寄存器中(例如,在打包數(shù)據(jù)寄存器的最低位數(shù)據(jù)元素中)。或者,在另一個(gè)方面,單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素可被存儲(chǔ)在標(biāo)量寄存器中或另一個(gè)存儲(chǔ)位置。適當(dāng)?shù)母↑c(diǎn)數(shù)據(jù)元素格式的示例包括但不限于半精度、單精度、雙精度、擴(kuò)展雙精度和四精度。
[0079]在其它實(shí)施例中,源可包括多個(gè)N個(gè)打包浮點(diǎn)數(shù)據(jù)元素FPc1-FPn,其具有相應(yīng)的有效位數(shù),即有效位數(shù)0-有效位數(shù)1<(8181111^311(1(|-8181111^311(^),其中N至少是2。數(shù)N可等于源打包數(shù)據(jù)的位寬度除以浮點(diǎn)數(shù)據(jù)元素FPc1-FPn的位寬度。在各實(shí)施例中,打包數(shù)據(jù)寬度可以是64位且可以有兩個(gè)32位單精度浮點(diǎn)數(shù)據(jù)元素或一個(gè)64位雙精度浮點(diǎn)數(shù)據(jù)元素,打包數(shù)據(jù)寬度可以是128位且可以有四個(gè)32位單精度浮點(diǎn)數(shù)據(jù)元素或二個(gè)64位雙精度浮點(diǎn)數(shù)據(jù)元素,打包數(shù)據(jù)寬度可以是256位且可以有八個(gè)32位單精度浮點(diǎn)數(shù)據(jù)元素或四個(gè)64位雙精度浮點(diǎn)數(shù)據(jù)元素,或打包數(shù)據(jù)寬度可以是512位且可以有十六個(gè)32位單精度浮點(diǎn)數(shù)據(jù)元素或八個(gè)64位雙精度浮點(diǎn)數(shù)據(jù)元素。其它打包數(shù)據(jù)寬度和浮點(diǎn)數(shù)據(jù)元素寬度(例如,半精度、擴(kuò)展雙精度、四精度)也是適當(dāng)?shù)摹?br> [0080]浮點(diǎn)舍入指令還指定或以其它方式指示分?jǐn)?shù)位的數(shù)量532。分?jǐn)?shù)位的數(shù)量是在小數(shù)點(diǎn)(例如,二進(jìn)制小數(shù)點(diǎn)、十進(jìn)制小數(shù)點(diǎn)或十六進(jìn)制小數(shù)點(diǎn))后的。一個(gè)或多個(gè)源浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入到所指示數(shù)量的分?jǐn)?shù)位。在一些實(shí)施例匯總,指令可包括一個(gè)或多個(gè)位或字段,以明確指定分?jǐn)?shù)位的數(shù)量。例如,指令可包括立即數(shù),該立即數(shù)具有用以指定分?jǐn)?shù)位的數(shù)量的多個(gè)位(例如8位立即數(shù)的位[7:4])。四個(gè)位可允許指定在O和15之間的分?jǐn)?shù)位的數(shù)量,然而如果期望能夠指定其它數(shù)量的分?jǐn)?shù)位,則可包括較少或較多的位。
[0081]可生成包括一個(gè)或多個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素FPJ-FP/的結(jié)果524,并將其存儲(chǔ)在由浮點(diǎn)舍入指令指示的目的地中。一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)可包括源中相應(yīng)的位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素中的相應(yīng)一個(gè)。
[0082]如圖所示,在單個(gè)標(biāo)量源浮點(diǎn)數(shù)據(jù)元素FPtl的實(shí)施例中,結(jié)果可包括單個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素FPc;,其具有舍入到所指示數(shù)量的分?jǐn)?shù)位的有效位數(shù)0*(significand0*)?;蛘?在N個(gè)打包浮點(diǎn)數(shù)據(jù)元素FPc1-FPn的實(shí)施例中,結(jié)果可包括N個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素FPcT-FP/,其分別具有各自被舍入到所指示數(shù)量的分?jǐn)?shù)位的有效位數(shù)c;-有效位數(shù)Λ
[0083]圖6是示出適當(dāng)?shù)母↑c(diǎn)源和/或結(jié)果格式的若干示例實(shí)施例的框圖。這些格式中的每一個(gè)適用于如本文公開的浮點(diǎn)舍入指令的源和/或結(jié)果。
[0084]64位打包單精度浮點(diǎn)格式634是64位寬且包括兩個(gè)32位單精度(SP)浮點(diǎn)數(shù)據(jù)元素SPtl-SPltj SPtl是最低有效數(shù)據(jù)元素且占據(jù)位[31:0],而SP1是最高有效數(shù)據(jù)元素且占據(jù)位[63:32]。
[0085]128位打包單精度浮點(diǎn)格式635是128位寬且包括四個(gè)32位單精度(SP)浮點(diǎn)數(shù)據(jù)元素SPQ-SP3。SP0占據(jù)位Dl = OLSP1占據(jù)位[63:32],SP2占據(jù)位[95:64],且SP3占據(jù)位[127:96]。
[0086]256位打包單精度浮點(diǎn)格式636是256位寬且包括八個(gè)32位單精度(SP)浮點(diǎn)數(shù)據(jù)元素SPQ-SP7。SPtl占據(jù)位[31:0],SP1占據(jù)位[63:32],SP2占據(jù)位[95:64],SP3占據(jù)位[127:96], SP4 占據(jù)位[159:128], SP5 占據(jù)位[191:160], SP6 占據(jù)位[223:192],且 SP7 占據(jù)位[255:224]。
[0087]128位打包雙精度浮點(diǎn)格式637是128位寬且包括兩個(gè)64位雙精度(DP)浮點(diǎn)數(shù)據(jù)元素 DPtl-DPlt5 DP0 占據(jù)位[63:0]且 DP1 占據(jù)位[127:64]。
[0088]256位打包雙精度浮點(diǎn)格式638是256位寬且包括四個(gè)64位雙精度(DP)浮點(diǎn)數(shù)據(jù)元素 DPq-DP3。DPq 占據(jù)位[63:0],DP1 占據(jù)位[127:64],DP2 占據(jù)位[191:128]且 DP3 占據(jù)位[255:192]。
[0089]按128位寄存器格式的標(biāo)量單精度浮點(diǎn)數(shù)據(jù)639包括在128位寄存器的最低位[31:0]中的單個(gè)標(biāo)量32位單精度浮點(diǎn)數(shù)據(jù)元素SP。在一些方面,寄存器是也可操作用于存儲(chǔ)打包數(shù)據(jù)的打包數(shù)據(jù)寄存器?;蛘?,可將標(biāo)量單精度浮點(diǎn)數(shù)據(jù)元素SP存儲(chǔ)在標(biāo)量寄存器中。
[0090]按128位寄存器格式的標(biāo)量雙精度浮點(diǎn)數(shù)據(jù)640包括在128位寄存器的最低位[63:0]中的單個(gè)標(biāo)量64位雙精度浮點(diǎn)數(shù)據(jù)元素DP。在一些方面,寄存器是也可操作用于存儲(chǔ)打包數(shù)據(jù)的打包數(shù)據(jù)寄存器。或者,標(biāo)量雙精度浮點(diǎn)數(shù)據(jù)元素DP可被存儲(chǔ)在非打包寄存器(例如,標(biāo)量寄存器)或存儲(chǔ)位置中。
[0091]這些僅僅是適當(dāng)?shù)母↑c(diǎn)源和/或結(jié)果格式的幾個(gè)說明性示例。由于單精度和雙精度浮點(diǎn)格式的廣泛使用,而示出了這些格式。然而,其它浮點(diǎn)格式也是適當(dāng)?shù)?例如,半精度、擴(kuò)展雙精度、四精度等)。為了便于示出,已經(jīng)示出256位或更小的打包數(shù)據(jù)寬度。然而,512位或更寬的打包數(shù)據(jù)寬度也是適當(dāng)?shù)?。作為示例?12位打包浮點(diǎn)格式可包括十六個(gè)單精度或八個(gè)雙精度浮點(diǎn)格式。
[0092]圖7是示出帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入操作730的實(shí)施例的框圖,該帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入操作730可響應(yīng)于帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入指令的實(shí)施例而執(zhí)行。作為示例,在期望將單個(gè)源浮點(diǎn)數(shù)據(jù)元素再次用于多個(gè)矢量操作中的每一個(gè)的各種算法中,該操作是有用的。指令可指示具有單個(gè)浮點(diǎn)數(shù)據(jù)元素FP(具有有效位數(shù))的源720。指令還指示小數(shù)點(diǎn)之后源數(shù)據(jù)元素將被舍入到至的分?jǐn)?shù)位的數(shù)量732。
[0093]帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入操作可將單個(gè)浮點(diǎn)數(shù)據(jù)元素FP的最初數(shù)據(jù)元素廣播與后續(xù)的浮點(diǎn)舍入操作組合。最初的數(shù)據(jù)元素廣播可多次廣播或復(fù)制單個(gè)浮點(diǎn)數(shù)據(jù)元素FP(例如,次數(shù)等于浮點(diǎn)結(jié)果數(shù)據(jù)元素的數(shù)量)。這在圖示中示為虛線打包數(shù)據(jù)格式的FP的多個(gè)復(fù)制的副本。在一個(gè)方面,可將這些多個(gè)復(fù)制副本存儲(chǔ)在臨時(shí)寄存器中。在另一個(gè)方面,這可僅僅表示通過至浮點(diǎn)執(zhí)行單元的內(nèi)部線路提供的多個(gè)副本。浮點(diǎn)數(shù)據(jù)元素FP的復(fù)制值可表示在后續(xù)浮點(diǎn)舍入操作中使用的矢量或打包數(shù)據(jù)。在一些實(shí)施例中,單個(gè)浮點(diǎn)數(shù)據(jù)元素FP可駐留在存儲(chǔ)器中,且數(shù)據(jù)元素廣播可通過從帶數(shù)據(jù)元素廣播的浮點(diǎn)舍入指令導(dǎo)出的加載操作(例如,加載微指令)實(shí)現(xiàn)。單個(gè)數(shù)據(jù)元素FP的廣播可表示在執(zhí)行浮點(diǎn)舍入操作之前的預(yù)處理數(shù)據(jù)轉(zhuǎn)換。
[0094]可響應(yīng)于具有數(shù)據(jù)元素廣播操作和/或指令的浮點(diǎn)舍入將結(jié)果打包經(jīng)舍入的浮點(diǎn)數(shù)據(jù)724存儲(chǔ)在目的地中。結(jié)果可包括多個(gè)打包舍入浮點(diǎn)數(shù)據(jù)元素FP'多個(gè)打包舍入浮點(diǎn)數(shù)據(jù)元素FP*中的每一個(gè)可包括有效位數(shù)%該有效位數(shù)*表示源中被舍入到所指示數(shù)量的分?jǐn)?shù)位的單個(gè)浮點(diǎn)數(shù)據(jù)元素FP的有效位數(shù)。
[0095]其它實(shí)施例涉及具有掩碼指令和/或操作的浮點(diǎn)舍入。具有掩碼指令的浮點(diǎn)舍入可指定或以其它方式指示打包數(shù)據(jù)操作掩碼。打包數(shù)據(jù)操作掩碼在本文中還可被簡單地稱為掩碼。每個(gè)掩碼可表示斷言操作數(shù)或條件控制操作數(shù),它們可對是否執(zhí)行與指令相關(guān)聯(lián)的舍入操作和/或是否存儲(chǔ)舍入操作的結(jié)果進(jìn)行掩碼、斷言或條件控制。在一些實(shí)施例中,每個(gè)掩碼可操作用于按結(jié)果數(shù)據(jù)元素粒度對舍入操作進(jìn)行掩碼。每個(gè)掩碼可允許用于不同結(jié)果數(shù)據(jù)元素的舍入操作被與其它結(jié)果數(shù)據(jù)元素分開地和/或相獨(dú)立地?cái)嘌曰驐l件控制。
[0096]掩碼可各自包括多個(gè)掩碼元素、斷言元素、條件控制元素或標(biāo)志??膳c結(jié)果數(shù)據(jù)元素的一對一對應(yīng)地包括元素或標(biāo)志(例如,如果有四個(gè)結(jié)果數(shù)據(jù)元素則可以有四個(gè)元素或標(biāo)志)。每個(gè)元素或標(biāo)志可操作用于對單獨(dú)的打包數(shù)據(jù)操作和/或在相應(yīng)結(jié)果數(shù)據(jù)元素中舍入結(jié)果的存儲(chǔ)進(jìn)行掩碼。通常,每個(gè)元素或標(biāo)志可以是單個(gè)位。單個(gè)位可允許指定兩個(gè)不同可能性(例如,執(zhí)行操作對不執(zhí)行操作,存儲(chǔ)操作的結(jié)果對不存儲(chǔ)操作的結(jié)果等)中的任一個(gè)。掩碼的每個(gè)位的二進(jìn)制值可斷言或控制是否執(zhí)行與具有掩碼指令的浮點(diǎn)舍入相關(guān)聯(lián)的浮點(diǎn)舍入操作和/或是否存儲(chǔ)舍入的結(jié)果。根據(jù)一個(gè)可能的協(xié)定,每個(gè)位可分別被置位(即,具有二進(jìn)制值I)或清零(即,具有二進(jìn)制值O),以允許或不允許執(zhí)行浮點(diǎn)舍入操作的結(jié)果和/或?qū)⑵浯鎯?chǔ)在相應(yīng)結(jié)果數(shù)據(jù)元素中。
[0097]在一些實(shí)施例中,可執(zhí)行合并-掩碼。在合并-掩碼中,當(dāng)操作被掩碼掉時(shí),可將來自源打包數(shù)據(jù)的相應(yīng)數(shù)據(jù)元素的值存儲(chǔ)在相應(yīng)結(jié)果數(shù)據(jù)元素中。例如,如果源被重新用作目的地,則相應(yīng)的目的地?cái)?shù)據(jù)元素可保留其最初的源值(即,不利用計(jì)算結(jié)果更新)。在其它實(shí)施例中,可執(zhí)行填零-掩碼。在填零-掩碼中,當(dāng)操作被掩碼掉時(shí),相應(yīng)的結(jié)果數(shù)據(jù)元素可被填零,或可將零值存儲(chǔ)在相應(yīng)的結(jié)果數(shù)據(jù)元素中?;蛘撸蓪⑵渌A(yù)定的值存儲(chǔ)在掩碼掉的結(jié)果數(shù)據(jù)元素中。
[0098]在一些實(shí)施例中,浮點(diǎn)舍入操作可任選地在第一和第二源數(shù)據(jù)的所有相應(yīng)數(shù)據(jù)元素對上執(zhí)行,而不管掩碼的相應(yīng)位如何,但可取決于掩碼的相應(yīng)位而將結(jié)果存儲(chǔ)在結(jié)果打包數(shù)據(jù)中或不存儲(chǔ)在結(jié)果打包數(shù)據(jù)中。替代地,在另一實(shí)施例中,如果相應(yīng)掩碼位指定不將操作的結(jié)果存儲(chǔ)在打包數(shù)據(jù)結(jié)果中,則浮點(diǎn)舍入操作可被任選地省去(即,不被執(zhí)行)。在一些實(shí)施例中,可任選地對被掩碼掉元素上的操作阻止異?;蜻`規(guī),或者被掩碼掉元素上的操作可任選地不引起異?;蜻`規(guī)。在一些實(shí)施例中,對于具有存儲(chǔ)器操作數(shù)的指令和/或操作,可任選地針對掩碼掉數(shù)據(jù)元素抑制存儲(chǔ)器錯(cuò)誤。
[0099]圖8是示出具有掩碼操作的浮點(diǎn)舍入830的實(shí)施例的框圖,該具有掩碼操作的浮點(diǎn)舍入830可響應(yīng)于具有掩碼指令的浮點(diǎn)舍入的實(shí)施例而執(zhí)行。指令指定或以其它方式指示打包浮點(diǎn)數(shù)據(jù)元素FPc1-FPn的源820。指令還指示小數(shù)點(diǎn)之后源數(shù)據(jù)元素將被舍入至的分?jǐn)?shù)位的數(shù)量832。
[0100]指令還指定或以其它方式指示包括多個(gè)打包數(shù)據(jù)操作掩碼元素或位的打包數(shù)據(jù)操作掩碼842。在圖示中,與FPtl對應(yīng)的最低有效掩碼位被置位(即,I),且與FPn對應(yīng)的最高有效掩碼位被清零(即,O)。作為示例,在128位寬打包數(shù)據(jù)和32位單精度浮點(diǎn)數(shù)據(jù)元素的情況下,掩碼可包括四個(gè)I位掩碼位,或者在64位雙精度浮點(diǎn)數(shù)據(jù)元素的情況下,掩碼可包括兩個(gè)I位掩碼位。作為另一個(gè)示例,在512位寬打包數(shù)據(jù)和32位單精度浮點(diǎn)數(shù)據(jù)元素的情況下,掩碼可包括十六個(gè)I位掩碼位,或者在64位雙精度浮點(diǎn)數(shù)據(jù)元素的情況下,掩碼可包括八個(gè)I位掩碼位。
[0101]可響應(yīng)于具有掩碼操作的浮點(diǎn)舍入和/或指令將結(jié)果打包經(jīng)舍入的浮點(diǎn)數(shù)據(jù)824存儲(chǔ)在所指示的目的地中。根據(jù)相應(yīng)的打包數(shù)據(jù)操作掩碼位,將浮點(diǎn)舍入操作的結(jié)果條件存儲(chǔ)在結(jié)果中。當(dāng)結(jié)果浮點(diǎn)數(shù)據(jù)元素未被打包數(shù)據(jù)操作掩碼掩碼掉(例如,在圖中示出,當(dāng)相應(yīng)掩碼位被置位為I時(shí)),它們可存儲(chǔ)源中例如已經(jīng)舍入到指令所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素中的相應(yīng)一個(gè)。例如,最低有效結(jié)果數(shù)據(jù)元素可存儲(chǔ)包括經(jīng)舍入的有效位數(shù)J的經(jīng)舍入的浮點(diǎn)數(shù)FPtl'或者,當(dāng)浮點(diǎn)數(shù)據(jù)元素通過打包數(shù)據(jù)操作掩碼而掩碼掉時(shí)(例如,在圖示中,當(dāng)相應(yīng)的掩碼位被清除為O時(shí)),被掩碼掉的值(例如,歸零或合并值)可被存儲(chǔ)在結(jié)果數(shù)據(jù)元素中。
[0102]圖9是一組合適的打包數(shù)據(jù)操作掩碼寄存器906的實(shí)施例的框圖。寄存器中的每一個(gè)可用于存儲(chǔ)打包數(shù)據(jù)操作掩碼。在所例示的實(shí)施例中,該組包括標(biāo)示為KO至k7的八個(gè)打包數(shù)據(jù)操作掩碼寄存器。替代的實(shí)施例可包括比八個(gè)更少(例如,兩個(gè)、四個(gè)、六個(gè)等)或比八個(gè)更多(例如,十六個(gè)、二十個(gè)、三十二個(gè)等)打包數(shù)據(jù)操作掩碼寄存器。在所例示的實(shí)施例中,打包數(shù)據(jù)操作掩碼寄存器中的每一個(gè)為64位。在替代實(shí)施例中,打包數(shù)據(jù)操作掩碼寄存器的寬度可以比64位更寬(例如,80位,128位等)或比64位更窄(例如,8位、16位、32位等)。打包數(shù)據(jù)操作掩碼寄存器可通過使用公知技術(shù)以不同方式實(shí)現(xiàn),并且不限于任何已知的特定類型的電路。
[0103]圖10是浮點(diǎn)指令格式1003的實(shí)施例的框圖。指令格式包括操作代碼或操作碼1043。操作碼可表示可操作用于標(biāo)識指令和/或要執(zhí)行的操作的多個(gè)位或者一個(gè)或多個(gè)字段。
[0104]如圖所示,在一些實(shí)施例中,指令格式可包括源說明符1044和目的地說明符1045,源說明符1044用于明確指定源操作數(shù)或存儲(chǔ)位置,而目的地說明符1045用于明確指定將存儲(chǔ)結(jié)果的目的地操作數(shù)或存儲(chǔ)位置。作為示例,這些說明符中的每一個(gè)可包括寄存器的地址、存儲(chǔ)器位置或其它存儲(chǔ)位置?;蛘撸春?或目的地中的一個(gè)或多個(gè)對于指令是隱含的,而不被明確指定。例如,源可任選地被重新用作目的地,且源的最初內(nèi)容可由結(jié)果覆寫。
[0105]在一些實(shí)施例中,指令格式可包括任選的數(shù)據(jù)元素廣播控制1046。數(shù)據(jù)元素廣播控制可包括一個(gè)或多個(gè)位或字段,用以指示將執(zhí)行數(shù)據(jù)元素廣播,以將從指定或指示的存儲(chǔ)位置訪問的單個(gè)源數(shù)據(jù)元素廣播到指令所使用的多個(gè)源數(shù)據(jù)元素?;蛘撸瑪?shù)據(jù)元素廣播對于指令是隱含的(例如,對于操作碼是隱含的)。如上所述,數(shù)據(jù)元素廣播是任選的且不是必須的。
[0106]在一些實(shí)施例中,指令格式可包括任選的打包數(shù)據(jù)操作掩碼說明符,用于明確指定打包數(shù)據(jù)操作掩碼或存儲(chǔ)位置(例如,掩碼寄存器)。或者,打包數(shù)據(jù)操作掩碼可被隱含地指示。在一些實(shí)施例中,指令格式還可包括任選掩碼操作類型說明符1048,用以指定掩碼操作的類型。作為示例,掩碼操作說明符的類型可包括用以指定是否執(zhí)行合并-掩碼或填零-掩碼的單個(gè)位?;蛘撸诖a操作的類型可被隱含地指示(例如,在隱含的控制寄存器中)。如上所述,掩碼是任選的且不是必須的。[0107]在一些實(shí)施例中,指令格式可包括任選的浮點(diǎn)舍入控制1049。浮點(diǎn)舍入控制可控制是否超馳處理器的默認(rèn)浮點(diǎn)舍入模式。作為示例,某些英特爾處理器具有控制寄存器(例如,稱為MXCSR的機(jī)器狀態(tài)和控制寄存器),其包括指定默認(rèn)舍入模式的舍入模式控制位。指令的浮點(diǎn)舍入控制可表示用以指示這種默認(rèn)舍入模式是否被超馳的一個(gè)或多個(gè)位或字段。
[0108]在一些實(shí)施例中,指令格式可包括任選的浮點(diǎn)舍入模式說明符1050,用以指定在本文中公開的浮點(diǎn)舍入操作中使用浮點(diǎn)舍入模式。作為示例,在一些實(shí)施例中,浮點(diǎn)舍入模式說明符可包括用以指定以下四個(gè)非粘滯(non-sticky)舍入模式中的任一個(gè)的兩個(gè)位:(I)舍入到最近的,其中把舍入限制(tie)到最近的偶數(shù)數(shù)位;(2)下舍入,朝向負(fù)無窮大,其中負(fù)結(jié)果遠(yuǎn)離O舍入;(3)上舍入,朝向正無窮大,其中負(fù)結(jié)果向零舍入;以及(4)向零舍入,截?cái)?。其它?shí)施例可包括較少、更多或不同的舍入模式。
[0109]在一些實(shí)施例中,指令格式可包括任選的抑制精度異常控制1051。抑制精度異??刂瓶煽刂剖欠褚种苹驁?bào)告浮點(diǎn)精度異常。
[0110]在一些實(shí)施例中,指令格式可包括分?jǐn)?shù)位的數(shù)量說明1052。這種分?jǐn)?shù)位的數(shù)量說明可表示根據(jù)浮點(diǎn)舍入指令/操作在小數(shù)點(diǎn)(例如,二進(jìn)制小數(shù)點(diǎn)、十進(jìn)制小數(shù)點(diǎn)或十六進(jìn)制小數(shù)點(diǎn))后每個(gè)源浮點(diǎn)數(shù)據(jù)元素有效位數(shù)被舍入至的分?jǐn)?shù)位的數(shù)量。
[0111]在一些實(shí)施例中,可任選地在指令的立即數(shù)1053中提供浮點(diǎn)舍入控制1049、浮點(diǎn)舍入模式說明符1050、抑制精度異常控制1051和分?jǐn)?shù)位的數(shù)量說明符1052。或者,可在指令的其它字段或位中提供這些中的一個(gè)或多個(gè)。
[0112]所示的指令格式示出可包括在浮點(diǎn)舍入指令的實(shí)施例中的字段類型的示例。替代的實(shí)施例可包括所示字段的子集,可添加附加字段,可重疊特定字段等。所示的字段的次序/安排并非是必須的,相反,字段可被重排列。字段無需包括連續(xù)位序列,相反可包括非連續(xù)或分開的位。在一些實(shí)施例中,指令格式可遵循EVEX編碼或指令格式,盡管這不是必須的。
[0113]圖11是適用于固定舍入指令的立即數(shù)1153的特定示例實(shí)施例的框圖。立即數(shù)是8位立即數(shù)。位[2]表示浮點(diǎn)舍入控制1149,用于控制是否超馳默認(rèn)舍入模式。立即數(shù)的位[1:0]表示浮點(diǎn)舍入模式說明符1150,用以指定舍入模式。在一個(gè)實(shí)施例中,值00指示舍入到最近的偶數(shù)整數(shù)模式,值01指示舍入到相等或較小的整數(shù)模式,值10指示舍入到相等或較大的整數(shù)模式,以及值11指示舍入到最近的最小量級整數(shù)模式,然而本發(fā)明的范圍不限于此。位[3]表示抑制精度異??刂?151。立即數(shù)的位[7:4]表示分?jǐn)?shù)位的數(shù)量說明符1152。在其它實(shí)施例中,可重新排列這些字段,可將較少或更多的位分配給字段(可將少于或多于四位用于指定分?jǐn)?shù)位的數(shù)量)等。
[0114]圖12是一組合適的打包數(shù)據(jù)寄存器1205的實(shí)施例的框圖。所示打包數(shù)據(jù)寄存器包括三十二個(gè)512位打包數(shù)據(jù)或矢量寄存器。這些三十二個(gè)512位寄存器被標(biāo)記為ZMMO至ZMM31。在所示實(shí)施例中,這些寄存器中的較低十六個(gè)的較低階256位(S卩,ZMM0-ZMM15)被混疊或者覆蓋在相應(yīng)256位打包數(shù)據(jù)或矢量寄存器(標(biāo)記為YMM0-YMM15)上,但是這不是必需的。同樣,在所示實(shí)施例中,YMM0-YMM15的較低階128位被重疊或者覆蓋在相應(yīng)128位打包數(shù)據(jù)或矢量寄存器(標(biāo)記為XMM0-XMM1)上,但是這也不是必需的。512位寄存器ZMMO至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ù)。每一寄存器可用于存儲(chǔ)打包浮點(diǎn)數(shù)據(jù)或打包整數(shù)數(shù)據(jù)。在一些方面,標(biāo)量浮點(diǎn)數(shù)據(jù)也可被存儲(chǔ)在打包數(shù)據(jù)寄存器中。支持不同數(shù)據(jù)元素尺寸,包括至少8位字節(jié)數(shù)據(jù)、16位字?jǐn)?shù)據(jù)、32位雙字或單精度浮點(diǎn)數(shù)據(jù)、以及64位四字或雙精度浮點(diǎn)數(shù)據(jù)。打包數(shù)據(jù)寄存器的替換實(shí)施例可包括不同數(shù)量的寄存器、不同大小的寄存器,并且可以或者可以不將較大寄存器重疊在較小寄存器上。
[0115]圖13是包括機(jī)器可讀存儲(chǔ)介質(zhì)1355的制品(例如計(jì)算機(jī)程序產(chǎn)品)1354的框圖。在一些實(shí)施例中,機(jī)器可讀存儲(chǔ)介質(zhì)可包括有形的和/或非瞬態(tài)的機(jī)器可讀存儲(chǔ)介質(zhì)。在各示例實(shí)施例中,機(jī)器可讀存儲(chǔ)介質(zhì)可包括軟盤、光盤、CD-ROM、磁盤、磁光盤、只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)RAM(SRAM)、動(dòng)態(tài)RAM(DRAM)、閃存、相變存儲(chǔ)器、半導(dǎo)體存儲(chǔ)器、其它類型的存儲(chǔ)器或它們的組合。在一些實(shí)施例中,介質(zhì)可包括一個(gè)或多個(gè)固態(tài)數(shù)據(jù)存儲(chǔ)材料,例如半導(dǎo)體數(shù)據(jù)存儲(chǔ)材料、相變數(shù)據(jù)存儲(chǔ)材料、磁性數(shù)據(jù)存儲(chǔ)材料、光學(xué)透明固體數(shù)據(jù)存儲(chǔ)材料等等。
[0116]機(jī)器可讀存儲(chǔ)介質(zhì)存儲(chǔ)一個(gè)或多個(gè)浮點(diǎn)舍入指令1303。浮點(diǎn)舍入指令中的每一個(gè)指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)被舍入至的分?jǐn)?shù)位的數(shù)量,并且指示目的地存儲(chǔ)位置。浮點(diǎn)舍入指令中的每一個(gè)在被機(jī)器執(zhí)行時(shí)操作用于導(dǎo)致機(jī)器將結(jié)果存儲(chǔ)在目的地存儲(chǔ)位置中。結(jié)果包括一個(gè)或多個(gè)相應(yīng)的舍入結(jié)果浮點(diǎn)數(shù)據(jù)元素。本文中公開的浮點(diǎn)舍入指令和相關(guān)聯(lián)的結(jié)果中的任一個(gè)是適當(dāng)?shù)?。在一些?shí)施例中,指令指定或以其它方式指示小數(shù)點(diǎn)之后一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)被舍入至的分?jǐn)?shù)位的數(shù)量。在這些實(shí)施例中,一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)包括源中相應(yīng)的位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素中的一個(gè)。在一些實(shí)施例中,浮點(diǎn)舍入指令可指示單個(gè)源浮點(diǎn)數(shù)據(jù)元素,可指示經(jīng)在單個(gè)源數(shù)據(jù)元素上執(zhí)行數(shù)據(jù)元素廣播,以及機(jī)器可存儲(chǔ)結(jié)果打包數(shù)據(jù),該結(jié)果打包數(shù)據(jù)包括多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,其中的每一個(gè)包括源中已經(jīng)舍入(例如,舍入到所指示數(shù)量的分?jǐn)?shù)位)的單個(gè)浮點(diǎn)數(shù)據(jù)元素的不同經(jīng)復(fù)制的副本。在一些實(shí)施例中,浮點(diǎn)舍入指令可指示打包數(shù)據(jù)操作掩碼,且機(jī)器可根據(jù)打包數(shù)據(jù)操作掩碼將一個(gè)或多個(gè)舍入結(jié)果浮點(diǎn)數(shù)據(jù)元素有條件地存儲(chǔ)在結(jié)果中。
[0117]不同類型的機(jī)器的示例包括但不限于處理器(例如,通用處理器和專用處理器)、指令處理裝置、以及具有一個(gè)或多個(gè)處理器或指令處理裝置的各種電子設(shè)備。這種電子設(shè)備的幾個(gè)代表示例包括但不限于計(jì)算機(jī)系統(tǒng)、臺(tái)式機(jī)、膝上型計(jì)算機(jī)、筆記本、服務(wù)器、網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)交換機(jī)、上網(wǎng)計(jì)算機(jī)、機(jī)頂盒、蜂窩電話、視頻游戲控制器等。
[0118]指令集包括一個(gè)或多個(gè)指令格式。給定指令格式定義各個(gè)字段(位的數(shù)量、位的位置)以指定要執(zhí)行的操作(操作碼)以及要對其執(zhí)行該操作的操作碼等。通過指令模板(或子格式)的定義來進(jìn)一步分解一些指令格式。例如,給定指令格式的指令模板可被定義為具有指令格式的字段(所包括的字段通常按照相同順序,但是至少一些字段具有不同的位位置,因?yàn)榘ǜ俚淖侄?的不同子集,和/或被定義為具有不同解釋的給定字段。由此,ISA的每一指令使用給定指令格式(并且如果定義,則在該指令格式的指令模板的給定一個(gè)中)來表達(dá),并且包括用于指定操作和操作數(shù)的字段。例如,示例性ADD指令具有專用操作碼以及包括用于指定該操作碼的操作碼字段和用于選擇操作數(shù)的操作數(shù)字段(源I/目的地以及源2)的指令格式,并且該ADD指令在指令流中的出現(xiàn)將具有選擇專用操作數(shù)的操作數(shù)字段中的專用內(nèi)容。已經(jīng)發(fā)布和/或公布了涉及高級矢量擴(kuò)展(AVX) (AVX1和AVX2)且使用矢量擴(kuò)展(VEX)編碼方案的SMD擴(kuò)展集(例如,參見2011年10月的Intel? 64和IA-32架構(gòu)軟件開發(fā)手冊,并且參見2011年6月的丨ntel?高級矢量擴(kuò)展編程參考)。
[0119]示例性指令格式
[0120]本文中所描述的指令的實(shí)施例可以不同的格式體現(xiàn)。另外,在下文中詳述示例性系統(tǒng)、架構(gòu)、以及流水線。指令的實(shí)施例可在這些系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但是不限于詳述的系統(tǒng)、架構(gòu)、以及流水線。
[0121]通用矢量友好指令格式
[0122]矢量友好指令格式是適于矢量指令(例如,存在專用于矢量操作的特定字段)的指令格式。盡管描述了其中通過矢量友好指令格式支持矢量和標(biāo)量操作兩者的實(shí)施例,但是替換實(shí)施例僅使用通過矢量友好指令格式的矢量操作。
[0123]圖14A-14B是示出根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其指令模板的框圖。圖14A是示出根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其A類指令模板的框圖;而圖14B是示出了根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其B類指令模板的框圖。具體地,針對通用矢量友好指令格式1400定義A類和B類指令模板,兩者包括無存儲(chǔ)器訪問1405的指令模板和存儲(chǔ)器訪問1420的指令模板。在矢量友好指令格式的上下文中的術(shù)語通用指不束縛于任何專用指令集的指令格式。
[0124]盡管將描述其中矢量友好指令格式支持64字節(jié)矢量操作數(shù)長度(或尺寸)與32位(4字節(jié))或64位(8字節(jié))數(shù)據(jù)元素寬度(或尺寸)(并且由此,64字節(jié)矢量由16雙字尺寸的元素或者替換地8四字尺寸的元素組成)、64字節(jié)矢量操作數(shù)長度(或尺寸)與16位(2字節(jié))或8位(I字節(jié))數(shù)據(jù)元素寬度(或尺寸)、32字節(jié)矢量操作數(shù)長度(或尺寸)與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(I字節(jié))數(shù)據(jù)元素寬度(或尺寸)、以及16字節(jié)矢量操作數(shù)長度(或尺寸)與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(I字節(jié))數(shù)據(jù)元素寬度(或尺寸)的本發(fā)明的實(shí)施例,但是替換實(shí)施例可支持更大、更小、和/或不同的矢量操作數(shù)尺寸(例如,256字節(jié)矢量操作數(shù))與更大、更小或不同的數(shù)據(jù)元素寬度(例如,128位(16字節(jié))數(shù)據(jù)元素寬度)。
[0125]圖14A中的A類指令模板包括:1)在無存儲(chǔ)器訪問1405的指令模板內(nèi),示出無存儲(chǔ)器訪問的完全舍入(round)控制型操作1410的指令模板、以及無存儲(chǔ)器訪問的數(shù)據(jù)變換型操作1415的指令模板;以及2)在存儲(chǔ)器訪問1420的指令模板內(nèi),示出存儲(chǔ)器訪問的時(shí)間性1425的指令模板和存儲(chǔ)器訪問的非時(shí)間性1430的指令模板。圖14B中的B類指令模板包括:1)在無存儲(chǔ)器訪問1405的指令模板內(nèi),示出無存儲(chǔ)器訪問的寫掩碼控制的部分舍入控制型操作1412的指令模板以及無存儲(chǔ)器訪問的寫掩碼控制的vsize型操作1417的指令模板;以及2)在存儲(chǔ)器訪問1420的指令模板內(nèi),示出存儲(chǔ)器訪問的寫掩碼控制1427的指令模板。
[0126]通用矢量友好指令格式1400包括以下列出以在圖14A-14B中示出的順序的如下字段。
[0127]格式字段1440 —該字段中的特定值(指令格式標(biāo)識符值)唯一地標(biāo)識矢量友好指令格式,并且由此標(biāo)識指令在指令流中以矢量友好指令格式出現(xiàn)。由此,該字段在無需僅有通用矢量友好指令格式的指令集的意義上是任選的。
[0128]基礎(chǔ)操作字段1442 —其內(nèi)容區(qū)分不同的基礎(chǔ)操作。
[0129]寄存器索引字段1444-其內(nèi)容直接或者通過地址生成來指定源或目的地操作數(shù)在寄存器中或者在存儲(chǔ)器中的位置。這些字段包括足夠數(shù)量的位以從PxQ(例如,32x512、16x128,32x1024,64x1024)個(gè)寄存器組選擇N個(gè)寄存器。盡管在一個(gè)實(shí)施例中N可高達(dá)三個(gè)源和一個(gè)目的地寄存器,但是替換實(shí)施例可支持更多或更少的源和目的地寄存器(例如,可支持高達(dá)兩個(gè)源,其中這些源中的一個(gè)源還用作目的地,可支持高達(dá)三個(gè)源,其中這些源中的一個(gè)源還用作目的地,可支持高達(dá)兩個(gè)源和一個(gè)目的地)。
[0130]修飾符(modifier)字段1446 —其內(nèi)容將以指定存儲(chǔ)器訪問的通用矢量指令格式出現(xiàn)的指令與不指定存儲(chǔ)器訪問的通用矢量指令格式出現(xiàn)的指令區(qū)分開;即在無存儲(chǔ)器訪問1405的指令模板與存儲(chǔ)器訪問1420的指令模板之間。存儲(chǔ)器訪問操作讀取和/或?qū)懭氲酱鎯?chǔ)器層次(在一些情況下,使用寄存器中的值來指定源和/或目的地地址),而非存儲(chǔ)器訪問操作不這樣(例如,源和/或目的地是寄存器)。盡管在一個(gè)實(shí)施例中,該字段還在三種不同的方式之間選擇以執(zhí)行存儲(chǔ)器地址計(jì)算,但是替換實(shí)施例可支持更多、更少或不同的方式來執(zhí)行存儲(chǔ)器地址計(jì)算。
[0131]擴(kuò)充操作字段1450 —其內(nèi)容區(qū)分除基礎(chǔ)操作以外還要執(zhí)行各種不同操作中的哪一個(gè)操作。該字段是上下文專用的。在本發(fā)明的一個(gè)實(shí)施例中,該字段被分成類字段1468、α字段1452、以及β字段1454。擴(kuò)充操作字段1450允許在單一指令而非2、3或4個(gè)指令中執(zhí)行多組共同的操作。
[0132]縮放字段1460 —其內(nèi)容允許用于存儲(chǔ)器地址生成(例如,用于使用索引+基址的地址生成)的索引字段的內(nèi)容的按比例縮放。
[0133]位移字段1462Α —其內(nèi)容被用作存儲(chǔ)器地址生成的一部分(例如,用于使用2麵*索引+基址+位移的地址生成)。
[0134]位移因數(shù)字段1462Β (注意,位移字段1462Α直接在位移因數(shù)字段1462Β上的并置指示了使用一個(gè)或另一個(gè))——其內(nèi)容被用作地址生成的一部分,它指定通過存儲(chǔ)器訪問尺寸(N)按比例縮放的位移因數(shù),其中N是存儲(chǔ)器訪問中的字節(jié)的數(shù)量(例如,用于使用2
索引+基址+經(jīng)按比例縮放的位移的地址生成)。忽略冗余的低階位,并且因此將位移因數(shù)字段的內(nèi)容乘以存儲(chǔ)器操作數(shù)總尺寸(N)以生成在計(jì)算有效地址中使用的最終位移。N的值由處理器硬件在運(yùn)行時(shí)基于完整操作碼字段1474(稍候在本文中描述)和數(shù)據(jù)操縱字段1454C確定。位移字段1462A和位移因數(shù)字段1462B在它們不用于無存儲(chǔ)器訪問1405的指令模板和/或不同的實(shí)施例可實(shí)現(xiàn)兩者中的僅一個(gè)或均未實(shí)現(xiàn)的意義上是任選的。
[0135]數(shù)據(jù)元素寬度字段1464 —其內(nèi)容區(qū)分使用多個(gè)數(shù)據(jù)元素寬度中的哪一個(gè)(在一些實(shí)施例中用于所有指令,在其他實(shí)施例中只用于一些指令)。該字段在如果支持僅一個(gè)數(shù)據(jù)元素寬度和/或使用操作碼的某一方面來支持?jǐn)?shù)據(jù)元素寬度則不需要的意義上是任選的。
[0136]寫掩碼字段1470 —其內(nèi)容在每一數(shù)據(jù)元素位置的基礎(chǔ)上控制目的地矢量操作數(shù)中的數(shù)據(jù)元素位置是否反映基礎(chǔ)操作和擴(kuò)充操作的結(jié)果。A類指令模板支持合并-寫掩碼,而B類指令模板支持合并寫掩碼和歸零寫掩碼兩者。當(dāng)合并的矢量掩碼允許在執(zhí)行任何操作(由基礎(chǔ)操作和擴(kuò)充操作指定)期間保護(hù)目的地中的任何元素集免于更新時(shí),在另一實(shí)施例中,保持其中對應(yīng)掩碼位具有O的目的地的每一元素的舊值。相反,當(dāng)歸零矢量掩碼允許在執(zhí)行任何操作(由基礎(chǔ)操作和擴(kuò)充操作指定)期間使目的地中的任何元素集歸零時(shí),在一個(gè)實(shí)施例中,目的地的元素在對應(yīng)掩碼位具有O值時(shí)被設(shè)為O。該功能的子集是控制執(zhí)行的操作的矢量長度的能力(即,從第一個(gè)到最后一個(gè)要修改的元素的跨度),然而,被修改的元素不一定要是連續(xù)的。由此,寫掩碼字段1470允許部分矢量操作,這包括加載、存儲(chǔ)、算術(shù)、邏輯等。盡管描述了其中寫掩碼字段1470的內(nèi)容選擇了多個(gè)寫掩碼寄存器中的包含要使用的寫掩碼的一個(gè)寫掩碼寄存器(并且由此寫掩碼字段1470的內(nèi)容間接地標(biāo)識了要執(zhí)行的掩碼操作)的本發(fā)明的實(shí)施例,但是替換實(shí)施例相反或另外允許掩碼寫字段1470的內(nèi)容直接地指定要執(zhí)行的掩碼操作。
[0137]立即數(shù)字段1472 —其內(nèi)容允許對立即數(shù)的指定。該字段在實(shí)現(xiàn)不支持立即數(shù)的通用矢量友好格式中不存在且在不使用立即數(shù)的指令中不存在的意義上是任選的。
[0138]類字段1468 —其內(nèi)容在不同類的指令之間進(jìn)行區(qū)分。參考圖14A-B,該字段的內(nèi)容在A類和B類指令之間進(jìn)行選擇。在圖14A-B中,圓角方形用于指示專用值存在于字段中(例如,在圖14A-B中分別用于類字段1468的A類1468A和B類1468B)。
[0139]A類指令模板
[0140]在A類非存儲(chǔ)器訪問1405的指令模板的情況下,α字段1452被解釋為其內(nèi)容區(qū)分要執(zhí)行不同擴(kuò)充操作類型中的哪一種(例如,針對無存儲(chǔ)器訪問的舍入型操作1410和無存儲(chǔ)器訪問的數(shù)據(jù)變換型操作1415的指令模板分別指定舍入1452Α.1和數(shù)據(jù)變換1452Α.2)的RS字段1452Α,而β字段1454區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無存儲(chǔ)器訪問1405指令模板中,縮放字段1460、位移字段1462Α以及位移縮放字段1462Β不存在。
[0141]無存儲(chǔ)器訪問的指令模板一完全舍入控制型操作
[0142]在無存儲(chǔ)器訪問的完全舍入控制型操作1410的指令模板中,β字段1454被解釋為其內(nèi)容提供靜態(tài)舍入的舍入控制字段1454Α。盡管在本發(fā)明的所述實(shí)施例中舍入控制字段1454Α包括抑制所有浮點(diǎn)異常(SAE)字段1456和舍入操作控制字段1458,但是替換實(shí)施例可支持、可將這些概念兩者都編碼成相同的字段或者只有這些概念/字段中的一個(gè)或另一個(gè)(例如,可只有舍入操作控制字段1458)。
[0143]SAE字段1456 —其內(nèi)容區(qū)分是否停用異常事件報(bào)告;當(dāng)SAE字段1456的內(nèi)容指示啟用抑制時(shí),給定指令不報(bào)告任何種類的浮點(diǎn)異常標(biāo)志且不喚起任何浮點(diǎn)異常處理程序。
[0144]舍入操作控制字段1458 —其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(gè)(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1458允許在每一指令的基礎(chǔ)上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一個(gè)實(shí)施例中,舍入操作控制字段1450的內(nèi)容覆蓋該寄存器值。
[0145]無存儲(chǔ)器訪問的指令模板一數(shù)據(jù)變換型操作
[0146]在無存儲(chǔ)器訪問的數(shù)據(jù)變換型操作1415的指令模板中,β字段1454被解釋為數(shù)據(jù)變換字段1454Β,其內(nèi)容區(qū)分要執(zhí)行多個(gè)數(shù)據(jù)變換中的哪一個(gè)(例如,無數(shù)據(jù)變換、拌和、廣播)。
[0147]在A類存儲(chǔ)器訪問1420的指令模板的情況下,α字段1452被解釋為驅(qū)逐提示字段1452Β,其內(nèi)容區(qū)分要使用驅(qū)逐提示中的哪一個(gè)(在圖14Α中,為存儲(chǔ)器訪問時(shí)間1425指令模板和存儲(chǔ)器訪問非時(shí)間1430的指令模板分別指定時(shí)間1452B.1和非時(shí)間1452B.2)、而β字段1454被解釋為數(shù)據(jù)操縱字段1454C,其內(nèi)容區(qū)分要執(zhí)行大量數(shù)據(jù)操縱操作(也稱為基元(primitive))中的哪一個(gè)(例如,無操縱、廣播、源的向上轉(zhuǎn)換、以及目的地的向下轉(zhuǎn)換)。存儲(chǔ)器訪問1420的指令模板包括縮放字段1460、以及任選的位移字段1462A或位移縮放字段1462B。
[0148]矢量存儲(chǔ)器指令使用轉(zhuǎn)換支持來執(zhí)行來自存儲(chǔ)器的矢量加載并將矢量存儲(chǔ)到存儲(chǔ)器。如同尋常的矢量指令,矢量存儲(chǔ)器指令以數(shù)據(jù)元素式的方式與存儲(chǔ)器來回傳輸數(shù)據(jù),其中實(shí)際傳輸?shù)脑赜蛇x為寫掩碼的矢量掩碼的內(nèi)容規(guī)定。
[0149]存儲(chǔ)器訪問的指令模板一時(shí)間性的
[0150]時(shí)間性的數(shù)據(jù)是可能很快地重新使用足以從高速緩存受益的數(shù)據(jù)。然而,這是提示且不同的處理器可以不同的方式實(shí)現(xiàn)它,包括完全忽略該提示。
[0151 ] 存儲(chǔ)器訪問的指令模板一非時(shí)間性的
[0152]非時(shí)間性的數(shù)據(jù)是不可能很快地重新使用足以從第一級高速緩存中的高速緩存受益且應(yīng)當(dāng)給予驅(qū)逐優(yōu)先級的數(shù)據(jù)。然而,這是提示且不同的處理器可以不同的方式實(shí)現(xiàn)它,包括完全忽略該提示。
[0153]B類指令模板
[0154]在B類指令模板的情況下,α字段1452被解釋為寫掩碼控制(Z)字段1452C,其內(nèi)容區(qū)分由寫掩碼字段1470控制的寫掩碼應(yīng)當(dāng)是合并還是歸零。
[0155]在B類非存儲(chǔ)器訪問1405的指令模板的情況下,β字段1454的一部分被解釋為RL字段1457Α,其內(nèi)容區(qū)分要執(zhí)行不同擴(kuò)充操作類型中的哪一種(例如,針對無存儲(chǔ)器訪問的寫掩碼控制部分舍入控制類型操作1412的指令模板和無存儲(chǔ)器訪問的寫掩碼控制VSIZE型操作1417的指令模板分別指定舍入1457Α.1和矢量長度(VSIZE) 1457Α.2),而β字段1454的其余部分區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無存儲(chǔ)器訪問1405指令模板中,縮放字段1460、位移字段1462Α以及位移縮放字段1462Β不存在。
[0156]在無存儲(chǔ)器訪問的寫掩碼控制的部分舍入控制型操作1410的指令模板中,β字段1454的其余部分被解釋為舍入操作字段1459Α,并且停用異常事件報(bào)告(給定指令不報(bào)告任何種類的浮點(diǎn)異常標(biāo)志且不喚起任何浮點(diǎn)異常處理程序)。
[0157]舍入操作控制字段1459Α —只作為舍入操作控制字段1458,其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(gè)(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1459Α允許在每一指令的基礎(chǔ)上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一個(gè)實(shí)施例中,舍入操作控制字段1450的內(nèi)容覆蓋該寄
存器值。
[0158]在無存儲(chǔ)器訪問的寫掩碼控制VSIZE型操作1417的指令模板中,β字段1454的其余部分被解釋為矢量長度字段1459Β,其內(nèi)容區(qū)分要執(zhí)行多個(gè)數(shù)據(jù)矢量長度中的哪一個(gè)(例如,128字節(jié)、256字節(jié)、或512字節(jié))。
[0159]在B類存儲(chǔ)器訪問1420的指令模板的情況下,β字段1454的一部分被解釋為廣播字段1457Β,其內(nèi)容區(qū)分是否要執(zhí)行廣播型數(shù)據(jù)操縱操作,而β字段1454的其余部分被解釋為矢量長度字段1459Β。存儲(chǔ)器訪問1420的指令模板包括縮放字段1460、以及任選的位移字段1462Α或位移縮放字段1462Β。[0160]針對通用矢量友好指令格式1400,示出完整操作碼字段1474包括格式字段1440、基礎(chǔ)操作字段1442以及數(shù)據(jù)元素寬度字段1464。盡管示出了其中完整操作碼字段1474包括所有這些字段的一個(gè)實(shí)施例,但是完整操作碼字段1474包括在不支持所有這些字段的實(shí)施例中的少于所有的這些字段。完整操作碼字段1474提供操作碼(opcode)。
[0161]擴(kuò)充操作字段1450、數(shù)據(jù)元素寬度字段1464以及寫掩碼字段1470允許在每一指令的基礎(chǔ)上以通用矢量友好指令格式指定這些特征。
[0162]寫掩碼字段和數(shù)據(jù)元素寬度字段的組合創(chuàng)建各種類型的指令,因?yàn)檫@些指令允許基于不同的數(shù)據(jù)元素寬度應(yīng)用該掩碼。
[0163]在A類和B類內(nèi)出現(xiàn)的各種指令模板在不同的情形下是有益的。在本發(fā)明的一些實(shí)施例中,不同處理器或者處理器內(nèi)的不同核可支持僅A類、僅B類、或者可支持兩類。舉例而言,期望用于通用計(jì)算的高性能通用無序核可僅支持B類,期望主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的核可僅支持A類,并且期望用于兩者的核可支持兩者(當(dāng)然,具有來自兩類的模板和指令的一些混合、但是并非來自兩類的所有模板和指令的核在本發(fā)明的范圍內(nèi))。同樣,單一處理器可包括多個(gè)核,所有核支持相同的類或者其中不同的核支持不同的類。舉例而言,在具有分離的圖形和通用核的處理器中,圖形核中的期望主要用于圖形和/或科學(xué)計(jì)算的一個(gè)核可僅支持A類,而通用核中的一個(gè)或多個(gè)可以是具有期望用于通用計(jì)算的僅支持B類的無序執(zhí)行和寄存器重命名的高性能通用核。沒有單獨(dú)的圖形核的另一處理器可包括支持A類和B類兩者的一個(gè)或多個(gè)通用有序或無序核。當(dāng)然,在本發(fā)明的不同實(shí)施例中,來自一類的特征也可在其他類中實(shí)現(xiàn)。以高級語言撰寫的程序可被輸入(例如,及時(shí)編譯或者統(tǒng)計(jì)編譯)到各種不同的可執(zhí)行形式,包括:1)具有用于執(zhí)行的目標(biāo)處理器支持的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫的替換例程且具有選擇這些例程以基于由當(dāng)前正在執(zhí)行代碼的處理器支持的指令而執(zhí)行的控制流代碼的形式。
[0164]示例性專用矢量友好指令格式
[0165]圖15是示出根據(jù)本發(fā)明的實(shí)施例的示例性專用矢量友好指令格式的框圖。圖15示出在其指定位置、尺寸、解釋和字段的次序、以及那些字段中的一些字段的值的意義上是專用的專用矢量友好指令格式1500。專用矢量友好指令格式1500可用于擴(kuò)展x86指令集,并且由此一些字段類似于在現(xiàn)有x86指令集及其擴(kuò)展(例如,AVX)中使用的那些字段或與之相同。該格式保持與具有擴(kuò)展的現(xiàn)有x86指令集的前綴編碼字段、實(shí)操作碼字節(jié)字段、MODR/M字段、SIB字段、位移字段、以及立即數(shù)字段一致。示出來自圖14的字段,來自圖15的字段映射到來自圖14的字段。
[0166]應(yīng)當(dāng)理解,雖然出于說明的目的在通用矢量友好指令格式1400的上下文中,本發(fā)明的實(shí)施例參考專用矢量友好指令格式1500進(jìn)行了描述,但是本發(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é)形式進(jìn)行編碼。
[0169]格式字段1440(EVEX字節(jié)0,位[7:0]) —第一字節(jié)(EVEX字節(jié)O)是格式字段1440,并且它包含0x62 (在本發(fā)明的一個(gè)實(shí)施例中用于區(qū)分矢量友好指令格式的唯一值)。
[0170]第二 -第四字節(jié)(EVEX字節(jié)1-3)包括提供專用能力的多個(gè)位字段。
[0171 ] REX 字段 1505 (EVEX 字節(jié) I,位[7-5])—由 EVEX.R 位字段(EVEX 字節(jié) I,位[7]-R)、EVEX.X 位字段(EVEX 字節(jié) 1,位[6] - X)以及(1457BEX 字節(jié) 1,位[5] - B)組成。EVEX.R、EVEX.X和EVEX.B位字段提供與對應(yīng)VEX位字段相同的功能,并且使用(多個(gè))I補(bǔ)碼的形式進(jìn)行編碼,即ZMMO被編碼為1111B,ZMM15被編碼為0000B。這些指令的其他字段對如在本領(lǐng)域中已知的寄存器索引的較低三個(gè)位(rrr、xxx、以及bbb)進(jìn)行編碼,由此可通過增加 EVEX.R、EVEX.X 以及 EVEX.B 來形成 Rrrr、Xxxx 以及 Bbbb。
[0172]REX’字段1410—這是REX’字段1410的第一部分,并且是用于對擴(kuò)展的32個(gè)寄存器集合的較高16個(gè)或較低16個(gè)寄存器進(jìn)行編碼的EVEX.R’位字段(EVEX字節(jié)1,位
[4]-R,)。在本發(fā)明的一個(gè)實(shí)施例中,該位與以下指示的其他位一起以位反轉(zhuǎn)的格式存儲(chǔ)以(在公知x86的32位模式下)與實(shí)操作碼字節(jié)是62的BOUND指令進(jìn)行區(qū)分,但是在MODR/Μ字段(在下文中描述)中不接受MOD字段中的值11 ;本發(fā)明的替換實(shí)施例不以反轉(zhuǎn)的格式存儲(chǔ)該指示的位以及其他指示的位。值I用于對較低16個(gè)寄存器進(jìn)行編碼。換句話說,通過組合EVEX.R’、EVEX.R、以及來自其他字段的其他RRR來形成R’ Rrrr。
[0173]操作碼映射字段1515(EVEX字節(jié)1,位[3:0] - _皿)-其內(nèi)容對隱含的領(lǐng)先操作碼字節(jié)(0F、0F38、或0F3)進(jìn)行編碼。
[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)((多個(gè))I補(bǔ)碼)的形式指定的第一源寄存器操作數(shù)進(jìn)行編碼且對具有兩個(gè)或兩個(gè)以上源操作數(shù)的指令有效;2)EVEX.vvvv針對特定矢量位移對以(多個(gè))I補(bǔ)碼的形式指定的目的地寄存器操作數(shù)進(jìn)行編碼;或者3)EVEX.vvvv不對任何操作數(shù)進(jìn)行編碼,保留該字段,并且應(yīng)當(dāng)包含1111b。由此,EVEX.vvvv字段1520對以反轉(zhuǎn)((多個(gè))1補(bǔ)碼)的形式存儲(chǔ)的第一源寄存器指定符的4個(gè)低階位進(jìn)行編碼。取決于該指令,額外不同的EVEX位字段用于將指定符尺寸擴(kuò)展到32個(gè)寄存器。
[0176]EVEX.U1468類字段(EVEX字節(jié)2,位[2]-U) 一如果EVEX.U = 0,則它指示A類或EVEX.U0,如果 EVEX.U = 1,則它指示 B 類或 EVEX.Ul。
[0177]前綴編碼字段1525 (EVEX字節(jié)2,位[1:0]-ρρ) —提供了用于基礎(chǔ)操作字段的附加位。除了對以EVEX前綴格式的傳統(tǒng)SSE指令提供支持以外,這也具有壓縮SMD前綴的益處(EVEX前綴只需要2位,而不是需要字節(jié)來表達(dá)SMD前綴)。在一個(gè)實(shí)施例中,為了支持使用以傳統(tǒng)格式和以EVEX前綴格式的SMD前綴(66H、F2H、F3H)的傳統(tǒng)SSE指令,這些傳統(tǒng)SMD前綴被編碼成SMD前綴編碼字段;并且在運(yùn)行時(shí)在提供給解碼器的PLA之前被擴(kuò)展成傳統(tǒng)SMD前綴(因此PLA可執(zhí)行傳統(tǒng)和EVEX格式的這些傳統(tǒng)指令,而無需修改)。雖然較新的指令可將EVEX前綴編碼字段的內(nèi)容直接作為操作碼擴(kuò)展,但是為了一致性,特定實(shí)施例以類似的方式擴(kuò)展,但允許由這些傳統(tǒng)SIMD前綴指定不同的含義。替換實(shí)施例可重新設(shè)計(jì)PLA以支持2位SMD前綴編碼,并且由此不需要擴(kuò)展。
[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’字段的其余部分,并且是可用于對擴(kuò)展的32個(gè)寄存器集合的較高16個(gè)或較低16寄存器進(jìn)行編碼的EVEX.R’位字段(EVEX字節(jié)3,位[3] - V’)。該位以位反轉(zhuǎn)的格式存儲(chǔ)。值I用于對較低16個(gè)寄存器進(jìn)行編碼。換句話說,通過組合EVEX.V’、EVEX.VVW 來形成 V’ VVVV。
[0181]寫掩碼字段1470 (EVEX字節(jié)3,位[2:0]_kkk) —其內(nèi)容指定寫掩碼寄存器中的寄存器索引,如先前所述。在本發(fā)明的一個(gè)實(shí)施例中,特定值EVEX.kkk = 000具有暗示沒有寫掩碼用于特定指令(這可以各種方式實(shí)現(xiàn),包括使用硬連線到所有的寫掩碼或者旁路掩碼硬件的硬件來實(shí)現(xiàn))的特別行為。
[0182]實(shí)操作碼字段1530(字節(jié)4)還被稱為操作碼字節(jié)。操作碼的一部分在該字段中被指定。
[0183]MOD R/M字段 1540(字節(jié) 5)包括MOD 字段 1542、Reg 字段 1544、以及 R/M 字段 1546。如先前所述的,MOD字段1542的內(nèi)容將存儲(chǔ)器訪問和非存儲(chǔ)器訪問操作區(qū)分開。Reg字段1544的作用可被歸結(jié)為兩種情形:對目的地寄存器操作數(shù)或源寄存器操作數(shù)進(jìn)行編碼;或者被視為操作碼擴(kuò)展且不用于對任何指令操作數(shù)進(jìn)行編碼。R/M字段1546的作用可包括如下:對引用存儲(chǔ)器地址的指令操作數(shù)進(jìn)行編碼;或者對目的地寄存器操作數(shù)或源寄存器操作數(shù)進(jìn)行編碼。
[0184]縮放、索引、基址(SIB)字節(jié)(字節(jié)6) —如先前所述的,縮放字段1450的內(nèi)容用于存儲(chǔ)器地址生成。SIB.xxxl554和SIB.bbbl556 一先前已經(jīng)針對寄存器索引Xxxx和Bbbb提及了這些字段的內(nèi)容。
[0185]位移字段1462A (字節(jié)7-10) —當(dāng)MOD字段1542包含10時(shí),字節(jié)7_10是位移字段1462A,并且它與傳統(tǒng)32位位移(disp32) —樣地工作,并且以字節(jié)粒度工作。
[0186]位移因數(shù)字段1462B(字節(jié)7) —當(dāng)MOD字段1542包含01時(shí),字節(jié)7是位移因數(shù)字段1462B。該字段的位置與傳統(tǒng)x86指令集8位位移(dispS)的位置相同,它以字節(jié)粒度工作。由于disp8是符號擴(kuò)展的,因此它可只在-128和127字節(jié)偏移量之間尋址;在64字節(jié)高速緩存線的方面,disp8使用可被設(shè)為僅四個(gè)真正有用的值-128、-64、0和64的8位;由于常常需要更大的范圍,所以使用disp32 ;然而,disp32需要4個(gè)字節(jié)。與disp8和disp32對比,位移因數(shù)字段1462B是disp8的重新解釋;當(dāng)使用位移因數(shù)字段1462B時(shí),通過位移因數(shù)字段的內(nèi)容乘以存儲(chǔ)器操作數(shù)訪問的尺寸(N)來確定實(shí)際位移。該類型的位移被稱為disp8*N。這減小了平均指令長度(用于位移但具有大得多的范圍的單一字節(jié))。這種壓縮位移基于有效位移是存儲(chǔ)器訪問的粒度的倍數(shù)的假設(shè),并且由此地址偏移量的冗余低階位不需要被編碼。換句話說,位移因數(shù)字段1462B替代傳統(tǒng)x86指令集8位位移。由此,位移因數(shù)字段1462B以與x86指令集8位位移相同的方式(因此在ModRM/SIB編碼規(guī)則中沒有變化)進(jìn)行編碼,唯一的不同在于,dispS超載至disp8*N。換句話說,在編碼規(guī)則或編碼長度中沒有變化,而僅在通過硬件對位移值的解釋中有變化(這需要按存儲(chǔ)器操作數(shù)的尺寸按比例縮放位移量以獲得字節(jié)式地址偏移量)。
[0187]立即數(shù)字段1472如先前所述地操作。
[0188]完整操作碼字段
[0189]圖15B是示出根據(jù)本發(fā)明的實(shí)施例的構(gòu)成完整操作碼字段1474的具有專用矢量友好指令格式1500的字段的框圖。具體地,完整操作碼字段1474包括格式字段1440、基礎(chǔ)操作字段1442、以及數(shù)據(jù)元素寬度(W)字段1464?;A(chǔ)操作字段1442包括前綴編碼字段1525、操作碼映射字段1515以及實(shí)操作碼字段1530。
[0190]寄存器索引字段
[0191]圖15C是示出根據(jù)本發(fā)明的實(shí)施例的構(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]擴(kuò)充操作字段
[0193]圖1?是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成擴(kuò)充(augmentation)操作字段1450的具有專用矢量友好指令格式1500的字段的框圖。當(dāng)類(U)字段1468包含O時(shí),它表明EVEX.U0(A類1468A);當(dāng)它包含I時(shí),它表明EVEX.Ul (B類1468B)。當(dāng)U = O且MOD字段1542包含11 (表明無存儲(chǔ)器訪問操作)時(shí),α字段1452 (EVEX字節(jié)3,位[7] - EH)被解釋為rs字段1452A 。當(dāng)rs字段1452A包含I (舍入1452A.1)時(shí),β字段1454 (EVEX字節(jié)3,位[6:4] - SSS)被解釋為舍入控制字段1454Α。舍入控制字段1454Α包括一位SAE字段1456和兩位舍入操作字段1458。當(dāng)rs字段1452A包含O (數(shù)據(jù)變換1452A.2)時(shí),β字段1454(EVEX字節(jié)3,位[6:4] - SSS)被解釋為三位數(shù)據(jù)變換字段1454B。當(dāng)U = O且MOD字段1542包含00、01或10 (表達(dá)存儲(chǔ)器訪問操作)時(shí),α字段1452 (EVEX字節(jié)3,位[7] - EH)被解釋為驅(qū)逐提示(EH)字段1452Β且β字段1454(EVEX字節(jié)3,位[6:4] - SSS)被解釋為三位數(shù)據(jù)操縱字段1454C。
[0194]當(dāng)U= I時(shí),α字段1452 (EVEX字節(jié)3,位[7] - EH)被解釋為寫掩碼控制(Z)字段1452C。當(dāng)U = I且MOD字段1542包含11 (表明無存儲(chǔ)器訪問操作)時(shí),β字段1454的一部分(EVEX字節(jié)3,位[4] - S0)被解釋為RL字段1457Α ;當(dāng)它包含I (舍入1457Α.1)時(shí),β字段1454的其余部分(EVEX字節(jié)3,位[6_5] - S2^1)被解釋為舍入操作字段1459Α,而當(dāng)RL字段1457Α包含0(VSIZE1457.A2)時(shí),β字段1454的其余部分(EVEX字節(jié)3,位[6-5]-S2J被解釋為矢量長度字段1459Β (EVEX字節(jié)3,位[6_5] - L1^0)。當(dāng)U = I且MOD字段1542包含00、01或10 (表明存儲(chǔ)器訪問操作)時(shí),β字段1454 (EVEX字節(jié)3,位[6:4] - SSS)被解釋為矢量長度字段1459Β (EVEX字節(jié)3,位[6_5] - L1^0)和廣播字段1457Β (EVEX字節(jié)3,位
[4]- B)。
[0195]示例性寄存器架構(gòu)
[0196]圖16是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)1600的框圖。在所示出的實(shí)施例中,有32個(gè)512位寬的矢量寄存器1610 ;這些寄存器被引用為zmmO到zmm31。較低的16zmm寄存器的較低階256個(gè)位覆蓋在寄存器ymmO-16上。較低的16zmm寄存器的較低階128個(gè)位(ymm寄存器的較低階128個(gè)位)覆蓋在寄存器xmmO-15上。專用矢量友好指令格式1500對這些覆蓋的寄存器組操作,如在以下表格中所示的。[0197]
【權(quán)利要求】
1.一種方法,包括: 接收浮點(diǎn)舍入指令,所述浮點(diǎn)舍入指令指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量,并且指示目的地存儲(chǔ)位置;以及 響應(yīng)于浮點(diǎn)舍入指令將結(jié)果存儲(chǔ)在目的地存儲(chǔ)位置,所述結(jié)果包括一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一。
2.如權(quán)利要求1所述的方法,其特征在于,接收浮點(diǎn)舍入指令包括接收明確指定分?jǐn)?shù)位的數(shù)量的浮點(diǎn)舍入指令。
3.如權(quán)利要求2所述的方法,其特征在于,接收浮點(diǎn)舍入指令包括接收具有立即數(shù)的浮點(diǎn)舍入指令,所述立即數(shù)包括用以明確指定分?jǐn)?shù)位的數(shù)量的多個(gè)位。
4.如權(quán)利要求3所述的方法,其特征在于,所述立即數(shù)的位[7:4]指定分?jǐn)?shù)位的數(shù)量。
5.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示單個(gè)浮點(diǎn)數(shù)據(jù)元素的源的浮點(diǎn)舍入指令,且其中存儲(chǔ)包括存儲(chǔ)結(jié)果打包數(shù)據(jù),所述結(jié)果打包數(shù)據(jù)包括多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的單個(gè)浮點(diǎn)數(shù)據(jù)元素。
6.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示打包數(shù)據(jù)操作掩碼的浮點(diǎn)舍入指令,并且其中存儲(chǔ)所述結(jié)果包括根據(jù)打包數(shù)據(jù)操作掩碼將一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素條件存儲(chǔ)在結(jié)果中。
7.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示源的浮點(diǎn)舍入指令,所述源包括以下之一:(I)至少八個(gè)雙精度浮點(diǎn)數(shù)據(jù)元素;以及(2)至少十六個(gè)單精度浮點(diǎn)數(shù)據(jù)元素。
8.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示多個(gè)打包浮點(diǎn)數(shù)據(jù)元素的源的浮點(diǎn)舍入指令,且其中存儲(chǔ)包括存儲(chǔ)結(jié)果,所述結(jié)果包括相應(yīng)多個(gè)打包經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)打包經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的打包浮點(diǎn)數(shù)據(jù)元素之一。
9.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素的源的浮點(diǎn)舍入指令,且其中存儲(chǔ)包括存儲(chǔ)結(jié)果,所述結(jié)果包括單個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,所述單個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中被舍入到所指示數(shù)量的分?jǐn)?shù)位的單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素。
10.一種裝置,包括: 多個(gè)寄存器;以及 與多個(gè)寄存器耦合的浮點(diǎn)執(zhí)行單元,所述浮點(diǎn)執(zhí)行單元操作成響應(yīng)于浮點(diǎn)舍入指令將結(jié)果存儲(chǔ)在目的地存儲(chǔ)位置中,所述浮點(diǎn)舍入指令指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后所述源的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量,并且指示目的地 存儲(chǔ)位置,所述結(jié)果包括一個(gè)或多個(gè)經(jīng)舍入的浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所述浮點(diǎn)舍入指令指示的數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一。
11.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令明確指定分?jǐn)?shù)位的數(shù)量。
12.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令包括立即數(shù),所述立即數(shù)包括用以明確指定分?jǐn)?shù)位的數(shù)量的多個(gè)位。
13.如權(quán)利要求11所述的裝置,其特征在于,所述立即數(shù)的位[7:4]明確指定分?jǐn)?shù)位的數(shù)量。
14.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令指示單個(gè)浮點(diǎn)數(shù)據(jù)元素的源,且其中所述浮點(diǎn)執(zhí)行單元響應(yīng)于浮點(diǎn)舍入指令存儲(chǔ)結(jié)果打包數(shù)據(jù),所述結(jié)果打包數(shù)據(jù)包括多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的單個(gè) 浮點(diǎn)數(shù)據(jù)元素。
15.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令還指示打包數(shù)據(jù)操作掩碼,且其中浮點(diǎn)執(zhí)行單元響應(yīng)于浮點(diǎn)舍入指令,根據(jù)打包數(shù)據(jù)操作掩碼將一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素有條件地存儲(chǔ)在結(jié)果中。
16.如權(quán)利要求10所述的裝置,其特征在于,浮點(diǎn)舍入指令指示源,所述源包括以下之-:(1)至少八個(gè)雙精度浮點(diǎn)數(shù)據(jù)元素;以及(2)至少十六個(gè)單精度浮點(diǎn)數(shù)據(jù)元素。
17.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令指示多個(gè)打包浮點(diǎn)數(shù)據(jù)元素的源,且其中所述浮點(diǎn)執(zhí)行單元響應(yīng)于浮點(diǎn)舍入指令存儲(chǔ)結(jié)果,所述結(jié)果包括相應(yīng)多個(gè)打包經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)打包經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的打包浮點(diǎn)數(shù)據(jù)元素之一。
18.如權(quán)利要求10所述的裝置,其特征在于,所述浮點(diǎn)舍入指令指示單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素的源,且其中所述浮點(diǎn)執(zhí)行單元響應(yīng)于浮點(diǎn)舍入指令存儲(chǔ)結(jié)果,所述結(jié)果包括單個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,所述單個(gè)相應(yīng)的經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中被舍入到所指示數(shù)量的分?jǐn)?shù)位的單個(gè)標(biāo)量浮點(diǎn)數(shù)據(jù)元素。
19.一種系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器操作成響應(yīng)于浮點(diǎn)舍入指令將結(jié)果存儲(chǔ)在目的地中,所述浮點(diǎn)舍入指令指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后所述源的一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量,并且指示目的地,所述結(jié)果包括一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所述浮點(diǎn)舍入指令指示的數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一;以及 與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述浮點(diǎn)舍入指令明確指定分?jǐn)?shù)位的數(shù)量。
21.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述浮點(diǎn)舍入指令指定舍入模式。
22.一種制品,包括: 包括一種或多種固體存儲(chǔ)材料的機(jī)器可讀存儲(chǔ)介質(zhì),所述機(jī)器可讀存儲(chǔ)介質(zhì)存儲(chǔ)有浮點(diǎn)舍入指令, 所述浮點(diǎn)舍入指令指示一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素的源,指示小數(shù)點(diǎn)之后一個(gè)或多個(gè)浮點(diǎn)數(shù)據(jù)元素中的每一個(gè)將被舍入至的分?jǐn)?shù)位的數(shù)量,并且所述浮點(diǎn)舍入指令如果由機(jī)器執(zhí)行則操作用于導(dǎo)致機(jī)器執(zhí)行以下操作,包括: 將結(jié)果存儲(chǔ)在目的地存儲(chǔ)位置,所述結(jié)果包括一個(gè)或多個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素,每個(gè)經(jīng)舍入的結(jié)果浮點(diǎn)數(shù)據(jù)元素包括源中在相應(yīng)位置中已經(jīng)被舍入到所指示數(shù)量的分?jǐn)?shù)位的浮點(diǎn)數(shù)據(jù)元素之一。
23.如權(quán)利要求22所述的制品,其特征在于,所述浮點(diǎn)舍入指令明確指定分?jǐn)?shù)位的數(shù)量。
24.如權(quán)利要求22所 述的制品,其特征在于,所述浮點(diǎn)舍入指令指定舍入模式。
【文檔編號】G06F9/30GK104011647SQ201180075796
【公開日】2014年8月27日 申請日期:2011年12月22日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】J·C·三額詹, C·S·安德森, R·凡倫天, B·L·托爾, A·格雷德斯廷, S·盧巴諾維奇, B·艾坦 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1