浮點縮放處理器、方法、系統(tǒng)和指令的制作方法
【專利摘要】一方面的一種方法包括接收浮點縮放指令。浮點縮放指令指示包括一個或多個浮點數(shù)據(jù)元素的第一源、包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源、以及目的地。響應(yīng)于浮點縮放指令,將結(jié)果存儲在目的地中。結(jié)果包括一個或多個相應(yīng)結(jié)果浮點數(shù)據(jù)元素,每個結(jié)果浮點數(shù)據(jù)元素都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以第一源的一個或多個浮點數(shù)據(jù)元素的基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。公開了其它方法、裝置、系統(tǒng)和指令。
【專利說明】浮點縮放處理器、方法、系統(tǒng)和指令
【背景技術(shù)】【技術(shù)領(lǐng)域】
[0001]實施例涉及處理器。具體地,實施例涉及響應(yīng)于浮點縮放指令對浮點數(shù)進行縮放的處理器。
[0002]背景信息
[0003]浮點數(shù)通常用在處理器、計算機系統(tǒng)和其它電子設(shè)備中。浮點數(shù)的一個優(yōu)點是它們允許以相對緊湊的數(shù)值格式和/或位數(shù)表示寬范圍的數(shù)值。
[0004]現(xiàn)有技術(shù)中已知若干不同的浮點格式。浮點格式通常將用于表示浮點數(shù)的位分配成若干連續(xù)字段,稱為浮點數(shù)的符號、有效位和指數(shù)。
[0005]在本領(lǐng)域中已知用于處理浮點數(shù)的各種機器指令。例如,本領(lǐng)域中已知用于在浮點和整數(shù)值之間轉(zhuǎn)換的機器指令。
【專利附圖】
【附圖說明】
[0006]可通過參考以下描述以及用于示出實施例的附圖最佳地理解本發(fā)明。在附圖中:
[0007]圖1是具有含一個或多個浮點縮放指令的指令集的處理器的實施例的框圖。
[0008]圖2是具有 操作用于執(zhí)行浮點縮放指令的實施例的浮點執(zhí)行單元的指令處理裝置的實施例的框圖。
[0009]圖3是示出可響應(yīng)于浮點縮放指令的實施例而執(zhí)行的浮點縮放操作的實施例的框圖。
[0010]圖4A-E是示出適當(dāng)?shù)母↑c格式的示例實施例的框圖。
[0011]圖5是處理浮點縮放指令的實施例的方法的實施例的流程框圖。
[0012]圖6A-C是示出可對打包32位單精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0013]圖7A-B是示出可對打包64位雙精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0014]圖8是示出可對標(biāo)量32位單精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0015]圖9是示出可對標(biāo)量64位雙精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0016]圖10是具有數(shù)據(jù)元素廣播的浮點縮放操作的實施例的框圖。
[0017]圖11是示出經(jīng)掩碼的浮點縮放操作的實施例的框圖。
[0018]圖12是示出打包數(shù)據(jù)操作掩碼寄存器的實施例的框圖。
[0019]圖13是示出帶加法的浮點縮放操作的實施例的框圖。
[0020]圖14是浮點縮放指令的指令格式的實施例的框圖。
[0021]圖15是打包數(shù)據(jù)寄存器的實施例的框圖。
[0022]圖16是包括存儲浮點縮放指令的機器可讀存儲介質(zhì)的制品的框圖。
[0023]圖17A是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其A類指令模板的框圖。
[0024]圖17B是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其B類指令模板的框圖。
[0025]圖18是示出根據(jù)本發(fā)明的實施例的示例性專用向量友好指令格式的框圖。
[0026]圖18B是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成完整操作碼字段的具有專用向量友好指令格式的字段的框圖。
[0027]圖18C是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成寄存器索引字段的具有專用向量友好指令格式的字段的框圖。
[0028]圖18D是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成擴充操作字段的具有專用向量友好指令格式的字段的框圖。
[0029]圖19是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)的框圖。
[0030]圖20A是示出根據(jù)本發(fā)明的實施例的示例性有序流水線以及示例性寄存器重命名的無序發(fā)布/執(zhí)行流水線兩者的框圖。
[0031]圖20B示出處理器核,該處理器核包括耦合到執(zhí)行引擎單元的前端單元,并且兩者耦合到存儲器單元。
[0032]圖21A是根據(jù)本發(fā)明的實施例的連接到管芯上互聯(lián)網(wǎng)絡(luò)且具有第二級(L2)高速緩存的本地子集2104的單處理器核的框圖。
[0033]圖21B是根據(jù)本發(fā)明的各實施例的圖21A中的處理器核的一部分的展開圖。
[0034]圖22是根據(jù)本發(fā)明的實施例的可具有一個以上的核、可具有集成存儲器控制器、并且可具有集成圖形器件的處理器的框圖。
[0035]圖23所示為根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖。
[0036]圖24所示為根據(jù)本發(fā)明的實施例的更具體的第一示例性系統(tǒng)的框圖。
[0037]圖25所示為根據(jù)本發(fā)明的一實施例的更具體的第二示例性系統(tǒng)的框圖。
[0038]圖26所示為根據(jù)本發(fā)明的實施例的SoC的框圖。
[0039]圖27是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進制指令轉(zhuǎn)換成目標(biāo)指令集中的二進制指令的框圖。
[0040]詳細描述
[0041]本文公開了浮點縮放指令,用于執(zhí)行浮點縮放指令的處理器,在處理或執(zhí)行浮點縮放指令時處理器執(zhí)行的方法,以及合并了一個或多個處理器以處理或執(zhí)行浮點縮放指令的系統(tǒng)。本文中公開的各種處理器和系統(tǒng)中的任一者是合適的。在以下描述中,闡述眾多特定細節(jié)(例如,特定處理器配置、操作序列、指令格式、浮點格式、微架構(gòu)細節(jié)等)。然而,在沒有這些具體細節(jié)的情況下,可實踐實施例。在其他實例中,未詳細示出公知電路、結(jié)構(gòu)和技術(shù),以避免混淆對本描述的理解。
[0042]對浮點數(shù)進行縮放常常是有用的。對浮點數(shù)進行縮放是指將浮點數(shù)乘以基數(shù)的另一數(shù)字次冪。具體地,通過將每個浮點數(shù)乘以基數(shù)的整數(shù)次冪來縮放浮點數(shù)常常是有用的。通常,整數(shù)次冪是從另一浮點數(shù)導(dǎo)出的。這種對浮點數(shù)的縮放的一個示例性用途是在從分開的指數(shù)和有效位對重構(gòu)浮點數(shù)時。作為示例,浮點數(shù)的指數(shù)和有效位可從彼此提取出或彼此分開,并且隨后分開的指數(shù)和有效位可分開地通過一系列計算被處理。隨后,在這種分開的處理之后,可通過組合其被分開處理的指數(shù)和有效位來重新組裝或重構(gòu)浮點數(shù)。對浮點數(shù)的縮放還可用于其他目的(例如,作為對浮點數(shù)的一般操作,結(jié)合處理指數(shù)、平方根、對數(shù)、三角函數(shù)、以及其他超越函數(shù)等)。
[0043]圖1是具有含一個或多個浮點縮放指令103的指令集102的處理器100的實施例的框圖。該處理器可以是各種復(fù)雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。在一些實施例中,處理器可以是通用處理器(例如,具有在臺式、膝上型、以及類似計算機中使用的類型的通用微處理器)。替換地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,網(wǎng)絡(luò)處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(DSP)、浮點協(xié)處理器以及控制器(例如,微控制器),僅列舉數(shù)例。
[0044]處理器具有指令集架構(gòu)(ISA) 101。ISA表示處理器的架構(gòu)中涉及編程的那部分。ISA通常包括原生指令、架構(gòu)寄存器、數(shù)據(jù)類型、尋址模式、存儲器架構(gòu)、中斷和異常處理以及處理器的外部輸入和輸出(I/O)。ISA與微架構(gòu)不同,微架構(gòu)通常表示被選擇用于實現(xiàn)ISA的特定處理器設(shè)計技術(shù)。帶有不同的微架構(gòu)的處理器可以共享共同的ISA。
[0045]ISA包括處理器支持的指令集102。指令集的這些指令表示宏指令(例如,提供給處理器以供執(zhí)行的指令),與微指令或微操作(例如,處理器的解碼器解碼宏指令得到的微指令或微操作)不同。指令集包括一個或多個浮點縮放指令103。以下將進一步公開浮點縮放指令的各不同實施例。處理器還包括浮點執(zhí)行邏輯108,該邏輯操作用于執(zhí)行或處理浮點縮放指令103。
[0046]ISA還包括架構(gòu)可視的寄存器(例如,架構(gòu)寄存器組)104。架構(gòu)寄存器通常表示管芯上的處理器存儲位置。架構(gòu)寄存器此處也可以被簡稱為寄存器。短語架構(gòu)寄存器、寄存器組、以及寄存器在本申請中用于表示對軟件和/或編程者可見(例如,軟件可見的)的寄存器和/或由通用宏指令指定用來標(biāo)識操作數(shù)的寄存器,除非另外指定或清楚地明顯可知。這些寄存器與給定微架構(gòu)中的其他非架構(gòu)的或非在架構(gòu)上可見的寄存器(例如,指令所使用的臨時寄存器、重新排序緩沖器、引退寄存器等等)不同。
[0047]所示出的架構(gòu)寄存器包括打包數(shù)據(jù)寄存器105。每個打包數(shù)據(jù)寄存器可操作用于存儲打包數(shù)據(jù)、向量數(shù)據(jù)或者SIMD數(shù)據(jù)。在一些實施例中,打包數(shù)據(jù)寄存器可用于存儲與浮點縮放指令103相關(guān)聯(lián)的打包浮點數(shù)據(jù)。在一些實施例中,打包數(shù)據(jù)寄存器還能夠存儲整數(shù)數(shù)據(jù),但這不是必須的。在一些實施例中,打包數(shù)據(jù)寄存器可用于存儲與浮點縮放指令相關(guān)聯(lián)的標(biāo)量浮點數(shù)據(jù)。或者,架構(gòu)寄存器可包括單獨的標(biāo)量浮點寄存器集合,以分別存儲用于浮點縮放指令的標(biāo)量浮點數(shù)據(jù)。
[0048]在一些實施例中,寄存器還可任選地包括掩碼寄存器106,然而這不是必須的。掩碼寄存器可存儲打包數(shù)據(jù)操作掩碼,以對打包數(shù)據(jù)操作(例如與浮點縮放指令相關(guān)聯(lián)的打包數(shù)據(jù)操作)進行掩碼或斷言。以下將進一步討論掩碼寄存器和掩碼操作。
[0049]寄存器還包括控制和/或狀態(tài)寄存器107。在一些方面,控制和/或狀態(tài)寄存器中的一個或多個可包括與浮點縮放指令的執(zhí)行相關(guān)聯(lián)的狀態(tài)和/或控制信息(例如,它們可包括浮點縮放指令將使用的默認(rèn)舍入模式,除非存在超馳)。
[0050]圖2是具有操作用于執(zhí)行包括浮點縮放指令203的實施例的指令的浮點執(zhí)行單元208的指令處理裝置200的實施例的框圖。在一些實施例中,指令處理裝置可以是處理器和/或可被包括在處理器中。例如,在一些實施例中,指令處理裝置可以是或可被包括于圖1的處理器100或類似設(shè)備。替換地,指令處理裝置可被包括在不同的處理器或電子系統(tǒng)中。在一些實施例中,指令處理裝置可被包括在增加的或單獨的浮點處理器或單元中,以引入或補充相關(guān)聯(lián)的處理器的浮點處理能力。
[0051]指令處理裝置200可接收浮點縮放指令203。例如,可從指令獲取單元、指令隊列或存儲器接收該指令。浮點縮放指令可表示由指令處理裝置識別并控制該裝置執(zhí)行特定操作的機器指令、宏指令或控制信號。
[0052]浮點縮放指令可顯式指定(例如,通過位或者一個或多個字段)或以其他方式指示(例如,隱式指示)第一源216,可指定或以其他方式指示第二源218,并且可指定或以其他方式指示將存儲根據(jù)該指令的結(jié)果222的目的地(例如,目的地存儲位置)220。第一源包括一個或多個浮點數(shù)據(jù)元素217,第二源包括一個或多個相應(yīng)的浮點數(shù)據(jù)元素219。相應(yīng)的數(shù)據(jù)元素可對應(yīng)于源內(nèi)的相同相對位置。
[0053]浮點數(shù)包括符號、有效位、基數(shù)和指數(shù),它們?nèi)缡絀中所示地相關(guān):
[0054]A= (-1)符號*有效位*基數(shù)_ 式I
[0055]表達式“ (-1) 表示負(fù)一的符號次冪。該表達式評價浮點數(shù)是正⑴或負(fù)㈠。例如,當(dāng)符號是整數(shù)O時,浮點數(shù)是正,或者當(dāng)符號是整數(shù)I時,浮點數(shù)是負(fù)。有效位包括某一長度的數(shù)字串,該長度在很大程度上確定浮點數(shù)的精度。有效位有時也被稱為有效數(shù)字、系數(shù)、分?jǐn)?shù)或尾數(shù)。通常隱含地假設(shè)小數(shù)點(例如,十進制格式的十進制小數(shù)點)位于固定位置(例如,剛好在最左或最高有效數(shù)字的右側(cè))。表達式“基數(shù)”表示基數(shù)的指數(shù)次冪。這也可表述為基數(shù)的指數(shù)冪、基數(shù)的指數(shù)次方、或簡稱為基數(shù)的指數(shù)次?;鶖?shù)通常是基數(shù)2 (對于二進制),基數(shù)10 (對于十進制)或基數(shù)16 (對于十六進制)?;鶖?shù)有時被稱為底數(shù)(radix)。指數(shù)也可被稱為首數(shù)(characteristic)或比例(scale)。使基數(shù)增大指數(shù)次冪實際上將小數(shù)點(從隱含的或假設(shè)的開始位置)移動指數(shù)數(shù)值。如果指數(shù)為正,則小數(shù)點向右移動,或者如果指數(shù)為負(fù),則小數(shù)點向左移動。
[0056]再次參照圖2,在一些實施例中,第一源216、第二源218和目的地220可各自在指令處理裝置的一組打包數(shù)據(jù)寄存器205內(nèi),盡管這不是必須的。打包數(shù)據(jù)寄存器可各自表示管芯上(例如,在具有執(zhí)行單元的管芯上)的存儲位置。打包數(shù)據(jù)寄存器可表示架構(gòu)寄存器。每個打包數(shù)據(jù)寄存器都可操作用于存儲打包或向量浮點數(shù)據(jù)。在一些實施例中,打包數(shù)據(jù)寄存器還可操作用于存儲標(biāo)量浮點數(shù)據(jù)。打包數(shù)據(jù)寄存器可使用公知技術(shù)在不同的微架構(gòu)中以不同的方式實現(xiàn),并且不限于任何特定類型的電路。各種不同類型的寄存器是可適用的,只要它們能夠存儲并提供在本文中描述的數(shù)據(jù)。合適類型的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動態(tài)分配的物理寄存器、及其組合。替換地,在其它實施例中,第一源、第二源、目的地、或其某種組合中的一個或多個可被存儲在除打包數(shù)據(jù)寄存器外的其它存儲位置中(例如,在標(biāo)量浮點寄存器、存儲器位置中等)。
[0057]所示的指令處理裝置包括指令解碼單元或解碼器214。解碼器可接收和解碼高級機器指令或宏指令,并且輸出一個或多個較低級的微操作、微代碼入口點、微指令或者反映和/或源自于原始較高級指令的其他較低級的指令或控制信號。一個或多個較低級指令或控制信號可通過一個或多個較低級(例如,電路級或硬件級)操作來實現(xiàn)較高級指令的操作。解碼器可以使用各種不同的機制來實現(xiàn),包括但不限于,微代碼只讀存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)和本領(lǐng)域已知的用于實現(xiàn)解碼器的其他機制。
[0058]在其他實施例中,取代具有解碼器214,可使用指令仿真器、翻譯器、變形器(morpher)、解釋器、或者其他指令轉(zhuǎn)換邏輯。各種不同類型的指令轉(zhuǎn)換邏輯在本領(lǐng)域中是已知的,并且可在軟件、硬件、固件、或者其組合中實現(xiàn)。指令轉(zhuǎn)換邏輯可接收指令,并且仿真、翻譯、變形、解釋、或者以其他方式將接收的指令轉(zhuǎn)換成一個或多個對應(yīng)的導(dǎo)出指令或控制信號。在其他實施例中,可使用指令轉(zhuǎn)換邏輯和解碼器兩者。例如,該裝置可具有用于將接收到的指令轉(zhuǎn)換成一個或多個中間指令的指令轉(zhuǎn)換邏輯、以及用于將一個或多個中間指令解碼成可由該指令處理裝置的原生硬件執(zhí)行的一個或多個較低級指令或控制信號的解碼器。指令轉(zhuǎn)換邏輯中的一些或全部可位于指令處理裝置的其余部分的管芯外,諸如在單獨的管芯上或在管芯外的存儲器中。
[0059]再次參考圖2,浮點執(zhí)行單元208與解碼器214耦合。執(zhí)行單元可從解碼器接收一個或多個微操作、微代碼進入點、微指令、其他指令或其他控制信號,它們反映或者源自于浮點縮放指令303。執(zhí)行單元還與第一源216、第二源218和目的地220耦合。浮點執(zhí)行單元包括設(shè)計成對浮點數(shù)進行操作(例如,算術(shù)運算、縮放操作等)的邏輯(例如,通常為至少一些電路)。
[0060]響應(yīng)于浮點縮放指令203和/或作為浮點縮放指令203的結(jié)果,浮點執(zhí)行單元208操作用于將結(jié)果222存儲在目的地中,其中該浮點縮放指令203指定或以其它方式指示包括一個或多個浮點數(shù)據(jù)元素217的第一源216,指定或以其它方式指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素219的第二源218,并且指定或以其它方式指示目的地220。結(jié)果包括一個或多個相應(yīng)的結(jié)果經(jīng)縮放浮點數(shù)據(jù)元素。在一些實施例中,這一個或多個結(jié)果經(jīng)縮放浮點數(shù)據(jù)元素中的每一個包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。該基數(shù)與第一源的一個或多個浮點數(shù)據(jù)元素的基數(shù)相同(例如,通常為基數(shù)2,但也可為基數(shù)10、基數(shù)16等)。
[0061]浮點執(zhí)行單元和/或指令處理裝置可包括特定或具體的邏輯(例如,典型的是潛在能與軟件和/或固件組合的電路或其它硬件),其操作用于執(zhí)行和/或處理浮點縮放指令,并響應(yīng)于該指令(例如,響應(yīng)于從該指令導(dǎo)出的一個或多個微指令或其它控制信號)而存儲結(jié)果。在一些實施例中,浮點執(zhí)行單元可包括集成電路、數(shù)字電路、專用集成電路、模擬電路、編程邏輯設(shè)備、包括指令的存儲設(shè)備、或其組合。在一些實施例中,浮點執(zhí)行單元可包括至少一些電路或硬件(例如,由晶體管、門和/或其它集成電路組件配置的專用電路)。
[0062]為了避免混淆本描述,已示出和描述了相對簡單的指令處理裝置。在其他實施例中,指令處理裝置可任選地包括其他公知組件,諸如舉例而言,指令獲取單元、指令調(diào)度單元、分支預(yù)測單元、指令和數(shù)據(jù)的高速緩存、指令和數(shù)據(jù)轉(zhuǎn)換后備緩沖器(translationlookaside buffer)、預(yù)取緩沖器、微指令隊列、微指令定序器、總線接口單元、第二或更高級高速緩存、引退單元、寄存器重命名單元、處理器中包含的其他組件、以及上述的各種組合。實施例可具有多個核、邏輯處理器或執(zhí)行引擎??捎糜趫?zhí)行本文中公開的指令實施例的執(zhí)行單元可被包含在核、邏輯處理器或執(zhí)行引擎中的至少一個、至少兩個、大多數(shù)或全部中。實際上在處理器中存在組件的多種不同的組合和配置,并且各實施例不限于任何特定組合或配置。
[0063]圖3是示出可響應(yīng)于浮點縮放指令的實施例而執(zhí)行的浮點縮放操作324的實施例的框圖。該指令指定或以其它方式指示包括一個或多個浮點數(shù)據(jù)元素的第一源317、以及包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源318。在一些實施例中,第一源包括單個標(biāo)量浮點數(shù)據(jù)元素Atl,且第二源包括單個標(biāo)量浮點數(shù)據(jù)元素Btlt5在其他實施例中,第一源包括多個(N個)打包浮點數(shù)據(jù)元素Ac1-An,且第二源包括相應(yīng)的多個(N個)打包浮點數(shù)據(jù)元素Bc1-Bn,其中N為2或更大。通常,打包浮點數(shù)據(jù)元素的數(shù)量N可以等于打包數(shù)據(jù)以位計的的大小除以浮點數(shù)據(jù)元素以位計的的大小。
[0064]浮點縮放指令還指定或以其它方式指示目的地(例如,目的地存儲位置)??缮砂ㄒ粋€或多個相應(yīng)的結(jié)果浮點數(shù)據(jù)元素的結(jié)果322,并響應(yīng)于浮點縮放指令而將其存儲在目的地中。在一些實施例中,這一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個(Ci)可表示經(jīng)縮放浮點結(jié)果數(shù)據(jù)元素,其包括第二源的相應(yīng)浮點數(shù)據(jù)元素(Bi)乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素(Ai)的整數(shù)Qnt(Aci))次冪,根據(jù)下式:
[0065]Ci = Bi* 基數(shù) int(Ai)式 2
[0066]該基數(shù)可以是第一和/或第二源的浮點數(shù)據(jù)元素的基數(shù)(例如,通常為基數(shù)2,但替換地為基數(shù)10或基數(shù)16)。
[0067]在一些實施例中,浮點縮放指令/操作可準(zhǔn)許第一源具有非整數(shù)浮點值。這可幫助避免用于生成整數(shù)值作為浮點縮放指令/操作的輸入(例如,用于執(zhí)行位級提取等)的一個或多個在前指令。在一些實施例中,浮點縮放指令/操作可作用于在單個浮點縮放指令/操作的執(zhí)行界限內(nèi)計算或確定代表第一源的一個或多個相應(yīng)浮點數(shù)據(jù)元素(例如,代表其幅值)的一個或多個整數(shù)。在一些實施例中,每個整數(shù)可以是小于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最大整數(shù)(例如,向下取整)。在其他實施例中,每個整數(shù)可以是大于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最小整數(shù)(例如,向上取整)?;谄渌D(zhuǎn)換慣例,也可使用代表相應(yīng)浮點數(shù)據(jù)元素的幅值的其他整數(shù)。
[0068]在一些實施例中,浮點縮放指令/操作可準(zhǔn)許第一和/或第二源包括具有為浮點數(shù)定義的特殊值(例如,正無窮大、負(fù)無窮大、非數(shù)(NaN)、非規(guī)格化數(shù)等)的浮點數(shù)據(jù)元素。在此類實施例中,該指令/操作可在不生成中斷、陷入、或其他異常(例如,下溢或上溢異常)的情況下完成執(zhí)行并存儲結(jié)果。作為示例,第一源可包括為非數(shù)(NaN)、正無窮大、負(fù)無窮大、和非規(guī)格化數(shù)之一的浮點數(shù)據(jù)元素,并且結(jié)果可被存儲而不生成異常。作為另一示例,第一源可包括為非數(shù)(NaN)的浮點數(shù)據(jù)元素,執(zhí)行可在沒有異常的情況下完成,并且結(jié)果中的相應(yīng)結(jié)果浮點數(shù)據(jù)元素可以是NaN。作為又一示例,第二源可包括為正無窮大的浮點數(shù)據(jù)元素,第一源可包括為非數(shù)(NaN)的相應(yīng)浮點數(shù)據(jù)元素,執(zhí)行可在沒有異常的情況下完成,并且相應(yīng)結(jié)果浮點數(shù)據(jù)元素可以是非數(shù)(NaN)。有利的是,該指令處置極限狀況而沒有異常且無需用于檢查極限狀況的一系列指令并在極限狀況發(fā)生時處置這些極限狀況的能力可傾向于提高計算效率。
[0069] 此外,即使當(dāng)輸入并不特殊時,結(jié)果也可能是特殊的(例如,當(dāng)結(jié)果不適合浮點格式時,可上溢或者可下溢)。在這種情形中,該指令可作用于恰當(dāng)?shù)靥幹眠@些特殊情形,例如在一些實施例中根據(jù)IEEE標(biāo)準(zhǔn)規(guī)范來處理。當(dāng)此類特殊狀況發(fā)生時,該指令的執(zhí)行可在沒有中斷或異常的情況下完成。即,該指令可作用于恰當(dāng)?shù)靥幹锰厥廨斎牒?或特殊輸出。有利的是,可避免異常和中斷,并且用單獨的指令序列來覆蓋此類特殊情形的附加處理也不是必需的。[0070]圖4A-E是示出適當(dāng)?shù)母↑c格式的示例實施例的框圖。電氣和電子工程師協(xié)會(IEEE)已經(jīng)在標(biāo)準(zhǔn)IEEE754的各種版本中將這些格式標(biāo)準(zhǔn)化。
[0071]圖4A示出半精度浮點格式410A。半精度浮點格式具有16位且也被稱為二進制
16。半精度浮點格式包括在位[9:0]中的10位有效位411A、在位[14:10]中的5位指數(shù)412A以及在位[15]中的I位符號413A。
[0072]圖4B示出單精度浮點格式410B。單精度浮點格式具有32位且也被稱為二進制32。單精度浮點格式包括在位[22:0]中的23位有效位411B、在位[30:23]中的8位指數(shù)412B以及在位[31]中的I位符號413B。
[0073]圖4C示出雙精度浮點格式410C。雙精度浮點格式具有64位且也被稱為二進制64。雙精度浮點格式包括在位[51:0]中的52位有效位411C、在位[62:52]中的11位指數(shù)412C以及在位[63]中的I位符號413C。目前,單精度和雙精度格式可能是最廣泛地被大多數(shù)處理器、計算機系統(tǒng)和電子設(shè)備使用的。
[0074]圖4D示出擴展雙精度浮點格式410D。擴展雙精度浮點格式具有80位。擴展雙精度浮點格式包括在位[63:0]中的64位有效位411D、在位[78:64]中的15位指數(shù)412D以及在位[79]中的I位符號413D。
[0075]圖4E示出四精度浮點格式410E。四精度浮點格式具有128位且也被稱為二進制128。四精度浮點格式包括在位[111:0]中的112位有效位411E、在位[126:112]中的15位指數(shù)412E以及在位[127]中的I位符號413E。
[0076]在這些浮點格式的每一個中,暗示或假設(shè)基數(shù)是基數(shù)2 (即,二進制),且不被單獨存儲為浮點格式。有效位的最高有效位或最左位被稱為J位。隱含地假設(shè)J位是二進制1,且一般不被存儲為浮點格式,而是提供附加精度但不需要被存儲的隱含或隱藏位(例如,明確具有23位用于有效位的單精度浮點數(shù)實際具有24位精度)。通常假設(shè)小數(shù)點在J位之后。指數(shù)通常具有指數(shù)偏移(exponent bias)。例如,半精度格式可具有指數(shù)偏移15,單精度格式可具有指數(shù)偏移127,雙精度格式可具有指數(shù)偏移1023,而四精度格式可具有指數(shù)偏移16383。如果需要的話,可在IEEE754中獲得關(guān)于浮點數(shù)和格式的進一步細節(jié)。
[0077]這些只是數(shù)個說明性示例。其它適當(dāng)?shù)母袷桨ǖ幌抻谑M制32、十進制64和十進制128。此外,未來開發(fā)的其它格式通常也是適當(dāng)?shù)摹?br>
[0078]圖5是處理浮點縮放指令的實施例的方法524的實施例的流程框圖。在各實施例中,該方法可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號處理器)、或另一種類型的數(shù)字邏輯設(shè)備或指令處理裝置執(zhí)行。在一些實施例中,方法524可由圖1的處理器100或圖2的指令處理裝置200來執(zhí)行?;蛘?,方法524可由處理器或指令處理裝置的不同實施例執(zhí)行。此外,圖1的處理器100和圖2的指令處理裝置200可執(zhí)行與圖5的方法524的操作和方法相同、類似或不同的操作和方法的實施例。
[0079]該方法包括在框525處接收浮點縮放指令。浮點縮放指令指定或以其它方式指示包括一個或多個浮點數(shù)據(jù)元素的第一源,指定或以其它方式指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源,并且指定或以其它方式指示目的地(例如,目的地存儲位置)。在各個方面,該指令可在處理器、指令處理裝置或者其一部分(例如,解碼器、指令轉(zhuǎn)換器等)處接收。在各個方面,指令可從處理器外的源(例如,從主存儲器、盤、或總線或互連)或者從處理器上的源(例如,從指令高速緩存)接收。[0080]然后,在框526,響應(yīng)于浮點縮放指令、作為該指令的結(jié)果和/或如該指令所指定的,結(jié)果被存儲在目的地中。結(jié)果包括一個或多個相應(yīng)的結(jié)果浮點數(shù)據(jù)元素。這一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)(例如,第一源的一個或多個浮點數(shù)據(jù)元素的基數(shù))的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。作為示例,包括至少一些電路的浮點執(zhí)行單元、指令處理裝置或處理器可執(zhí)行由該指令指定的操作并存儲結(jié)果。
[0081]所示的方法包括從處理器或指令處理裝置外部可見的操作(例如,從軟件角度可見)。在其他實施例中,該方法可任選地包括處理器內(nèi)出現(xiàn)的一個或多個操作。作為示例,可獲取浮點縮放指令,然后可將該指令解碼、轉(zhuǎn)換、仿真或以其它方式轉(zhuǎn)換成一個或多個其它指令或控制信號??稍L問和/或接收源操作數(shù)/數(shù)據(jù)??蓡⒂酶↑c執(zhí)行單元,以執(zhí)行由該指令指定的操作,并且可執(zhí)行該操作(例如,可執(zhí)行用于實現(xiàn)該指令的操作的微架構(gòu)操作)。
[0082]圖6A-C是示出可響應(yīng)于浮點縮放指令的實施例對打包32位單精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0083]圖6A示出浮點縮放操作624A的第一實施例,可對包括兩個打包32位單精度浮點數(shù)據(jù)元素Atl-A1的第一 64位源打包數(shù)據(jù)617A和包括兩個相應(yīng)打包32位單精度浮點數(shù)據(jù)元素Btl-B1的第二 64位源打包數(shù)據(jù)618A執(zhí)行該浮點縮放操作624A以生成并存儲包括兩個相應(yīng)打包32位單精度結(jié)果浮點數(shù)據(jù)元素Ctl-C1的64位結(jié)果622A。 [0084]圖6B示出浮點縮放操作624B的第二實施例,可對包括四個打包32位單精度浮點數(shù)據(jù)元素Atl-A3的第一 128位源打包數(shù)據(jù)617B和包括四個相應(yīng)打包32位單精度浮點數(shù)據(jù)元素Btl-B3的第二 128位源打包數(shù)據(jù)618B執(zhí)行該浮點縮放操作624B以生成并存儲包括四個相應(yīng)打包32位單精度結(jié)果浮點數(shù)據(jù)元素Ctl-C3的128位結(jié)果622B。
[0085]圖6C示出浮點縮放操作624C的第三實施例,可對包括八個打包32位單精度浮點數(shù)據(jù)元素Atl-A7的第一 256位源打包數(shù)據(jù)617C和包括八個相應(yīng)打包32位單精度浮點數(shù)據(jù)元素Btl-B7的第二 256位源打包數(shù)據(jù)618C執(zhí)行該浮點縮放操作624C以生成并存儲包括八個相應(yīng)打包32位單精度結(jié)果浮點數(shù)據(jù)元素Ctl-C7的256位結(jié)果622C。
[0086]在圖6A-C中的每一個中,每個32位單精度結(jié)果浮點數(shù)據(jù)元素(Ci)都包括第二源的相應(yīng)32位單精度浮點數(shù)據(jù)元素(Bi)乘以基數(shù)二(2)的代表第一源的相應(yīng)32位單精度浮點數(shù)據(jù)元素的整數(shù)Qnt(Ai))次冪。
[0087]圖7A-B是示出可響應(yīng)于浮點縮放指令的實施例對打包64位雙精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作的實施例的框圖。
[0088]圖7A示出浮點縮放操作724A的第一實施例,可對包括兩個打包64位雙精度浮點數(shù)據(jù)元素Ac1-A1的第一 128位源打包數(shù)據(jù)717A和包括兩個相應(yīng)打包64位雙精度浮點數(shù)據(jù)元素Btl-B1的第二 128位源打包數(shù)據(jù)718A執(zhí)行該浮點縮放操作724A以生成并存儲包括兩個相應(yīng)打包64位雙精度結(jié)果浮點數(shù)據(jù)元素Ctl-C1的128位結(jié)果722A。
[0089]圖7B示出浮點縮放操作724B的第二實施例,可對包括四個打包64位雙精度浮點數(shù)據(jù)元素Atl-A3的第一 256位源打包數(shù)據(jù)717B和包括四個相應(yīng)打包64位雙精度浮點數(shù)據(jù)元素Btl-B3的第二 256位源打包數(shù)據(jù)718B執(zhí)行該浮點縮放操作724B以生成并存儲包括四個相應(yīng)打包64位雙精度結(jié)果浮點數(shù)據(jù)元素Ctl-C3的256位結(jié)果722B。[0090]在圖7A-B中的每一個中,每個64位雙精度結(jié)果浮點數(shù)據(jù)元素(Ci)都包括第二源的相應(yīng)64位雙精度浮點數(shù)據(jù)元素(Bi)乘以基數(shù)二(2)的代表第一源的相應(yīng)64位雙精度浮點數(shù)據(jù)元素的整數(shù)Qnt(Ai))次冪。
[0091]圖8是示出可響應(yīng)于浮點縮放指令的實施例而對標(biāo)量32位單精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作824的實施例的框圖。對標(biāo)量32位單精度浮點數(shù)據(jù)元素A的第一源817和標(biāo)量32位單精度浮點數(shù)據(jù)元素B的第二源818執(zhí)行該操作。響應(yīng)于該操作和/或指令而存儲的結(jié)果822包括相應(yīng)的標(biāo)量32位單精度結(jié)果浮點數(shù)據(jù)元素C。標(biāo)量32位單精度結(jié)果浮點數(shù)據(jù)元素C包括第二源的相應(yīng)32位單精度浮點數(shù)據(jù)元素(B)乘以基數(shù)二(2)的代表第一源的相應(yīng)32位單精度浮點數(shù)據(jù)元素的整數(shù)(int(A))次冪。
[0092]圖9是示出可響應(yīng)于浮點縮放指令的實施例而對標(biāo)量64位雙精度浮點數(shù)據(jù)執(zhí)行的浮點縮放操作924的實施例的框圖。對標(biāo)量64位雙精度浮點數(shù)據(jù)元素A的第一源917和標(biāo)量64位雙精度浮點數(shù)據(jù)元素B的第二源918執(zhí)行該操作。響應(yīng)于該操作和/或指令而存儲的結(jié)果922包括相應(yīng)的標(biāo)量64位雙精度結(jié)果浮點數(shù)據(jù)元素C。標(biāo)量64位雙精度結(jié)果浮點數(shù)據(jù)元素C包括第二源的相應(yīng)64位雙精度浮點數(shù)據(jù)元素(B)乘以基數(shù)二(2)的代表第一源的相應(yīng)64位雙精度浮點數(shù)據(jù)元素的整數(shù)(int(A))次冪。
[0093]如圖8-9中所示,在一些實施例中,第一源可存儲在第一打包數(shù)據(jù)存儲位置(例如,打包數(shù)據(jù)寄存器),第二源可存儲在第二打包數(shù)據(jù)存儲位置,且結(jié)果可存儲在第三打包數(shù)據(jù)存儲位置,但這不是必須的?;蛘撸@些中的一個或多個可替換地存儲在非打包寄存器或存儲器位置。
[0094]這些僅僅是浮點縮放操作的幾個說明性實施例。由于這些格式的廣泛使用,已示出了對單精度和雙精度浮點數(shù)據(jù)的操作。然而,在其他實施例中,浮點縮放操作可對其它浮點格式(例如,半精度、四精度、擴展雙精度等)進行操作。在本說明中,兩個源的浮點格式是相同的,但在其他實施例中,這些源的浮點格式可以不同(例如,可執(zhí)行混合格式縮放操作)。為了便于說明,已經(jīng)示出具有256位或更小寬度的打包數(shù)據(jù)。然而,在其他實施例中,浮點縮放操作可對具有512位或更寬的寬度的打包數(shù)據(jù)(例如,包括至少16個32位單精度浮點數(shù)據(jù)元素或至少8個64位雙精度浮點數(shù)據(jù)元素)進行操作。此外,由于目前對基數(shù)2的廣泛使用,已示出使用基數(shù)2的浮點縮放操作。然而,在其他實施例中,浮點縮放操作可使用其他基數(shù)(例如,基數(shù)10、基數(shù)16等)。
[0095]圖10是示出具有數(shù)據(jù)元素廣播的浮點縮放操作1024的實施例的框圖,該浮點縮放操作可響應(yīng)于具有數(shù)據(jù)元素廣播的浮點縮放指令的實施例而執(zhí)行。在期望將單個源數(shù)據(jù)元素重用于多個向量操作中的每一個的算法中,數(shù)據(jù)元素廣播是有用的。該指令可指示具有要廣播的單個浮點數(shù)據(jù)元素A的第一源1017、具有多個打包浮點數(shù)據(jù)元素Bc1-Bn的第二源1018、以及目的地,其中N至少為2。
[0096]具有數(shù)據(jù)元素廣播的浮點縮放指令可將第一源的單個浮點數(shù)據(jù)元素A的初始數(shù)據(jù)元素廣播與后續(xù)的浮點縮放操作相組合。初始數(shù)據(jù)元素廣播可多次廣播或復(fù)制單個浮點數(shù)據(jù)元素A (例如,次數(shù)等于第二源的浮點數(shù)據(jù)元素的數(shù)量N)。浮點數(shù)據(jù)元素A的復(fù)制值可表示將在后續(xù)浮點縮放操作中連同第二源中的多個浮點數(shù)據(jù)元素Bc1-Bn —起使用的向量或打包數(shù)據(jù)。在一些實施例中,單個浮點數(shù)據(jù)元素A可駐留在存儲器中,且數(shù)據(jù)元素廣播可通過從具有廣播的浮點縮放指令導(dǎo)出的加載操作(例如,加載微操作)實現(xiàn)。單個數(shù)據(jù)元素的廣播可表示在執(zhí)行浮點縮放操作之前的預(yù)處理數(shù)據(jù)變換。
[0097]可響應(yīng)于具有廣播的浮點縮放操作和/或指令將結(jié)果打包浮點數(shù)據(jù)1022存儲在目的地中。結(jié)果可包括多個打包浮點數(shù)據(jù)元素Cc1-Cn,其各自對應(yīng)于第二源的多個打包浮點數(shù)據(jù)元素Bc1-Bn中相應(yīng)的一個。這多個打包結(jié)果浮點數(shù)據(jù)元素中的每一個(Ci)都可包括第二源的相應(yīng)浮點數(shù)據(jù)元素(Bi)乘以基數(shù)(例如,基數(shù)2)的代表第一源的相應(yīng)單個浮點數(shù)據(jù)元素的整數(shù)(int(A))次冪。注意,第一源的單個浮點數(shù)據(jù)元素被用于每個結(jié)果數(shù)據(jù)元素。
[0098]其它實施例涉及經(jīng)掩碼的浮點縮放指令和/或操作。經(jīng)掩碼的浮點縮放指令可指定或以其它方式指示打包數(shù)據(jù)操作掩碼。打包數(shù)據(jù)操作掩碼在本文中還可被簡單地稱為掩碼。每個掩碼可表示斷言操作數(shù)或條件控制操作數(shù),其可對是否要執(zhí)行與指令相關(guān)聯(lián)的浮點縮放操作和/或是否要存儲浮點縮放操作的結(jié)果進行掩碼、斷言或條件控制。在一些實施例中,每個掩碼可操作用于按每數(shù)據(jù)元素粒度對浮點縮放操作進行掩碼。每個掩碼可允許用于不同結(jié)果數(shù)據(jù)元素的浮點縮放操作被分別地和/或獨立于其它結(jié)果數(shù)據(jù)元素來斷言或條件控制。
[0099]掩碼可各自包括多個掩碼元素、斷言元素、條件控制元素或標(biāo)志??膳c結(jié)果數(shù)據(jù)元素一一對應(yīng)地包括元素或標(biāo)志(例如,如果有四個結(jié)果數(shù)據(jù)元素則可以有四個元素或標(biāo)志)。每個元素或標(biāo)志可操作用于對單獨的打包數(shù)據(jù)操作和/或在相應(yīng)結(jié)果數(shù)據(jù)元素中浮點縮放結(jié)果的存儲進行掩碼。通常,每個元素或標(biāo)志可以是單個位。單個位可允許指定兩種不同可能性(例如,執(zhí)行操作與不執(zhí)行操作,存儲操作的結(jié)果與不存儲操作的結(jié)果等)中的任一個。
[0100]掩碼的每個位的二進制值可斷言或控制是否要執(zhí)行與經(jīng)掩碼的浮點縮放指令相關(guān)聯(lián)的浮點縮放操作和/或是否要存儲浮點縮放操作的結(jié)果。根據(jù)一個可能的慣例,每個位可分別被置位(即,具有二進制值I)或清除(即,具有二進制值O),以允許或不允許將對由經(jīng)掩碼的浮點縮放指令所指示的第一和第二源的數(shù)據(jù)元素執(zhí)行的浮點縮放操作的結(jié)果存儲在相應(yīng)結(jié)果數(shù)據(jù)元素中。
[0101]在一些實施例中,可執(zhí)行合并-掩碼。在合并-掩碼中,當(dāng)操作被掩蔽時,可將來自源打包數(shù)據(jù)的相應(yīng)數(shù)據(jù)元素的值存儲在相應(yīng)結(jié)果數(shù)據(jù)元素中。例如,如果源被重用作目的地,則相應(yīng)的目的地數(shù)據(jù)元素可保留其初始源值(即,不用計算結(jié)果來更新)。在其它實施例中,可執(zhí)行歸零-掩碼。在歸零-掩碼中,當(dāng)操作被掩蔽掉時,相應(yīng)的結(jié)果數(shù)據(jù)元素可被歸零,或可可將零 值存儲在相應(yīng)的結(jié)果數(shù)據(jù)元素中?;蛘?,可將其它預(yù)定值存儲在被掩蔽的結(jié)果數(shù)據(jù)元素中。
[0102]在一些實施例中,可任選地對第一和第二源數(shù)據(jù)的所有相應(yīng)數(shù)據(jù)元素對執(zhí)行浮點縮放操作,而不管掩碼的相應(yīng)位如何,但可取決于掩碼的相應(yīng)位而將結(jié)果存儲或不存儲在結(jié)果打包數(shù)據(jù)中。替代地,在另一實施例中,如果掩碼的相應(yīng)位指定不將操作的結(jié)果存儲在打包數(shù)據(jù)結(jié)果中,則浮點縮放操作可被任選地省去(即,不執(zhí)行)。在一些實施例中,可任選地對被掩蔽元素上的操作阻止異?;蜻`規(guī),或者被掩蔽元素上的操作可任選地不引起異常或違規(guī)。在一些實施例中,對于具有存儲器操作數(shù)的經(jīng)掩碼的浮點縮放指令,可任選地對被掩蔽數(shù)據(jù)元素抑制存儲器錯誤。
[0103]圖11是示出可響應(yīng)于經(jīng)掩碼的浮點縮放指令的實施例而執(zhí)行的經(jīng)掩碼的浮點縮放操作1124的實施例的框圖。該指令指定或以其它方式指示包括打包浮點數(shù)據(jù)元素Ac1-An的第一源1117、包括打包浮點數(shù)據(jù)元素Bc1-Bn的第二源1118、打包數(shù)據(jù)操作掩碼1128、以及目的地(例如,目的地存儲位置)。作為示例,在512位寬打包數(shù)據(jù)和32位單精度浮點數(shù)據(jù)元素的情況下,掩碼可包括16個I位掩碼位,或者在64位雙精度浮點數(shù)據(jù)元素的情況下,掩碼可包括八個I位掩碼位。
[0104]響應(yīng)于該指令,包括多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果打包浮點數(shù)據(jù)1122被存儲在目的地中。當(dāng)結(jié)果浮點數(shù)據(jù)元素不被打包數(shù)據(jù)操作掩碼所掩蔽時(例如,在圖示中,當(dāng)相應(yīng)的掩碼位被置為I時),存儲浮點縮放操作的結(jié)果。替換地,當(dāng)浮點數(shù)據(jù)元素被打包數(shù)據(jù)操作掩碼所掩蔽時(例如,在圖示中,當(dāng)相應(yīng)的掩碼位被清除為O時),存儲其他值,諸如歸零或合并值。
[0105]圖12是一組合適的打包數(shù)據(jù)操作掩碼寄存器1206的實施例的框圖。每個寄存器可用于存儲打包數(shù)據(jù)操作掩碼。在所例示的實施例中,該組包括標(biāo)示為ko至k7的八個打包數(shù)據(jù)操作掩碼寄存器。替代的實施例可包括比八個更少(例如,兩個、四個、六個等)或比八個更多(例如,十六個、二十個、三十二個等)打包數(shù)據(jù)操作掩碼寄存器。在所例示的實施例中,每個打包數(shù)據(jù)操作掩碼寄存器為64位。在替代實施例中,打包數(shù)據(jù)操作掩碼寄存器的寬度可以比64位更寬(例如,80位,128位等)或比64位更窄(例如,8位、16位、32位等)。打包數(shù)據(jù)操作掩碼寄存器可通過使用公知技術(shù)以不同方式實現(xiàn),并且不限于任何已知的特定類型的電路。
[0106]圖13是示出可響應(yīng)于具有加法的浮點縮放指令的實施例而執(zhí)行的具有加法的浮點縮放操作1324的實施例的框圖。具有加法的浮點縮放指令指定或以其它方式指示包括打包浮點數(shù)據(jù)元素Ac1-An的第一源1317、包括打包浮點數(shù)據(jù)元素Bc1-Bn的第二源1318、包括打包浮點數(shù)據(jù)元素Dc1-Dn的第三源1332、以及目的地(例如,目的地存儲位置)。
[0107]響應(yīng)于該指令,包括多個結(jié)果浮點數(shù)據(jù)元素Cc1-Cn的結(jié)果打包浮點數(shù)據(jù)1322被存儲在目的地中。每個結(jié)果浮點數(shù)據(jù)元素(Ci)包括第三源的相應(yīng)浮點數(shù)據(jù)元素(Di)加上第二源的相應(yīng)浮點數(shù)據(jù)元素(Bi)乘以基數(shù)(例如,在所示實施例中為基數(shù)2)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)Qnt(Ai))次冪之積的總和。
[0108]圖14是浮點縮放指令1403的指令格式的實施例的框圖。指令格式包括操作代碼或操作碼1433。操作碼可表示可操作用于標(biāo)識指令和/或要執(zhí)行的操作的多個位或者一個或多個字段。
[0109]如圖所示,在一些實施例中,該指令格式可包括用于明確指定第一源操作數(shù)或存儲位置的第一源指定符1434、用于明確指定第二源操作數(shù)或存儲位置的第二源指定符1435、和用于明確指定將存儲結(jié)果的目的地操作數(shù)或存儲位置的目的地指定符1436。作為示例,這些指定符中的每一個可包括寄存器、存儲器位置或其它存儲位置的地址。替換地,如先前提及的,第一源、第二源、或目的地中的一個或多個對于該指令是隱含的,而不被明確指定。例如,這些源中的一個可任選地被重用作目的地,且初始內(nèi)容可由結(jié)果覆寫,在這種情形中,可隱含地指示目的地為這些源之一。在另一實施例中,可任選地隱含指示或明確指定一個或多個附加源以提供一個或多個附加操作數(shù)(例如,以提供圖13的相加數(shù)據(jù)元素1332)。
[0110]在指令為具有數(shù)據(jù)元素廣播的浮點縮放指令的一些實施例中,指令格式可包括可任選的廣播控制1437。廣播控制可包括一個或多個位或字段以指示將執(zhí)行數(shù)據(jù)元素廣播,從而將從指定或指示的存儲位置訪問的單個源數(shù)據(jù)元素廣播到該指令所使用的多個源數(shù)據(jù)元素。
[0111]在指令是經(jīng)掩碼的浮點縮放指令的一些實施例,指令格式可包括任選的掩碼指定符1438,用于明確指定打包數(shù)據(jù)操作掩碼操作數(shù)或存儲位置(例如,掩碼寄存器)。或者,打包數(shù)據(jù)操作掩碼可被隱含地指示。在一些實施例中,指令格式還可包括任選類型的掩碼操作指定符1439。掩碼操作指定符的類型可指定掩碼操作的類型。作為示例,掩碼操作指定符的類型可包括單個位以指定是否要執(zhí)行合并-掩碼或歸零-掩碼?;蛘?,掩碼操作的類型可被隱含地指示(例如,在隱含控制寄存器中)。如上所述,掩碼是任選的且不是必須的。
[0112]在一些實施例中,浮點縮放指令格式可包括任選的浮點舍入控制1440。浮點舍入控制可超馳處理器的默認(rèn)浮點舍入模式并且被用于對該指令的最終結(jié)果進行舍入。浮點操作通常利用算術(shù)浮點舍入。例如,在浮點操作的結(jié)果或者向浮點轉(zhuǎn)換需要比有效位所提供的更多數(shù)位時,可使用舍入。作為示例,某些英特爾處理器具有控制寄存器(例如,稱為MXCSR的機器狀態(tài)和控制寄存器),其包括指定默認(rèn)舍入模式的舍入模式控制位(例如,RM)。指令的浮點舍入控制可表示一個或多個位或字段以明確指示將超馳默認(rèn)浮點舍入模式的算術(shù)浮點舍入模式。在一些實施例中,指令的編碼前綴可允許基于指令前綴的舍入控制。合適的舍入模式的示例包括但不限于以下舍入模式:(I)就近舍入,其中區(qū)塊向最近的偶數(shù)數(shù)位舍入;(2)向下舍入,朝向負(fù)無窮大,其中負(fù)結(jié)果遠離O舍入;(3)向上舍入,朝向正無窮大,其中負(fù)結(jié)果向零舍入;以及(4)向零舍入,截斷。在一些實施例中,這些舍入模式中的每一個還可支持SAE(抑制所有異常)屬性以停用對浮點異常的報告。
[0113]所示的指令 格式示出可被包括在浮點縮放指令的實施例中的字段類型的示例。如圖所示,一些實施例可將廣播與掩碼相組合并且還可指定舍入模式。替代的實施例可包括所示字段的子集,或者可添加附加字段。所示的字段次序/安排并非是必須的,相反,字段可被重排列。字段無需包括連續(xù)位序列,相反可包括非連續(xù)或分開的位。在一些實施例中,指令格式可遵循EVEX編碼或指令格式,盡管這不是必須的。
[0114]圖15是一組合適的打包數(shù)據(jù)寄存器1505的實施例的框圖。所示打包數(shù)據(jù)寄存器包括三十二個512位打包數(shù)據(jù)或向量寄存器。這些三十二個512位寄存器被標(biāo)記為ZMMO至ZMM31。在所示實施例中,這些寄存器中的較低十六個的較低階256位(即,ZMM0-ZMM15)被混疊或者覆蓋在相應(yīng)256位打包數(shù)據(jù)或向量寄存器(標(biāo)記為YMM0-YMM15)上,但是這不是必需的。同樣,在所示實施例中,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ù)。每一寄存器可用于存儲打包浮點數(shù)據(jù)或打包整數(shù)數(shù)據(jù)。在一些方面,標(biāo)量浮點數(shù)據(jù)也可被存儲在打包數(shù)據(jù)寄存器中。支持不同數(shù)據(jù)元素尺寸,包括至少8位字節(jié)數(shù)據(jù)、16位字?jǐn)?shù)據(jù)、32位雙字或單精度浮點數(shù)據(jù)、以及64位四字或雙精度浮點數(shù)據(jù)。打包數(shù)據(jù)寄存器的替換實施例可包括不同數(shù)量的寄存器、不同尺寸的寄存器,并且可以或者可以不將較大寄存器重疊在較小寄存器上。
[0115]圖16是包括機器可讀存儲介質(zhì)1643的制品(例如計算機程序產(chǎn)品)1642的框圖。在一些實施例中,機器可讀存儲介質(zhì)可以是有形的和/或非瞬態(tài)的機器可讀存儲介質(zhì)。在各示例實施例中,機器可讀存儲介質(zhì)可包括軟盤、光盤、CD-ROM、磁盤、磁光盤、只讀存儲器(ROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、隨機存取存儲器(RAM)、靜態(tài)RAM(SRAM)、動態(tài)RAM(DRAM)、閃存、相變存儲器、半導(dǎo)體存儲器、其它類型的存儲器或它們的組合。在一些實施例中,介質(zhì)可包括一個或多個固態(tài)數(shù)據(jù)存儲材料,例如半導(dǎo)體數(shù)據(jù)存儲材料、相變數(shù)據(jù)存儲材料、磁性數(shù)據(jù)存儲材料、光學(xué)透明固體數(shù)據(jù)存儲材料等等。
[0116]機器可讀存儲介質(zhì)存儲一個或多個浮點縮放指令1603。每個浮點縮放指令指示包括一個或多個浮點數(shù)據(jù)元素的第一源,指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源,并且指示目的地。每個浮點縮放指令在被機器執(zhí)行時操作用于導(dǎo)致機器將結(jié)果存儲在目的地中。結(jié)果包括一個或多個相應(yīng)的結(jié)果浮點數(shù)據(jù)元素。這一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以第一源的一個或多個浮點數(shù)據(jù)元素的基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。本文中公開的任何浮點縮放指令和相關(guān)聯(lián)的結(jié)果都是適當(dāng)?shù)摹?br>
[0117]不同類型的機器的示例包括但不限于處理器(例如,通用處理器和專用處理器)、指令處理裝置、以及具有一個或多個處理器或指令處理裝置的各種電子設(shè)備。這種電子設(shè)備的幾個代表示例包括但不限于計算機系統(tǒng)、臺式機、膝上型計算機、筆記本、服務(wù)器、網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)交換機、上網(wǎng)計算機、機頂盒、蜂窩電話、視頻游戲控制器等。
[0118]為了進一步說明某些概念,考慮浮點縮放指令和操作的以下詳細示例實施例。該浮點縮放指令被稱為VSCALEFPD,其用其他雙精度浮點值來縮放打包雙精度浮點(float64)值。表 1列出了該指令的操作碼并且提供了對所執(zhí)行的的操作的描述。
[0119]表1.VSCALEFPD -用 Float64 值來縮放打包 Float64 值
[0120]
【權(quán)利要求】
1.一種方法,包括: 接收浮點縮放指令,所述浮點縮放指令指示包括一個或多個不必具有整數(shù)值的浮點數(shù)據(jù)元素的第一源,指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源,并且指示目的地;以及 響應(yīng)于所述浮點縮放指令將結(jié)果存儲在所述目的地中,所述結(jié)果包括一個或多個相應(yīng)結(jié)果浮點數(shù)據(jù)元素,所述一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。
2.如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于所述浮點縮放指令來確定代表第一源的一個或多個相應(yīng)浮點數(shù)據(jù)元素的一個或多個整數(shù)。
3.如權(quán)利要求2所述的方法,其特征在于,確定一個或多個整數(shù)包括確定選自以下的整數(shù):(I)小于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最大整數(shù);以及(2)大于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最小整數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二源中的每一者都包括多個打包浮點數(shù)據(jù)元素,并且其中所述結(jié)果包括相應(yīng)的多個打包結(jié)果浮點數(shù)據(jù)元素。
5.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示第一源的浮點縮放指令,第一源包括為非數(shù)(NaN)、正無窮大、負(fù)無窮大、以及非規(guī)格化數(shù)之一的浮點數(shù)據(jù)元素。
6.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示含有為非數(shù)(NaN)的浮點數(shù)據(jù)元素的第二源的浮 點縮放指令,并且其中存儲包括存儲含有也為NaN的相應(yīng)結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
7.如權(quán)利要求1所述的方法,其特征在于,接收包括接收進一步指示第三組一個或多個相應(yīng)浮點數(shù)據(jù)元素的所述浮點縮放指令,并且其中存儲包括存儲含有一個或多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果,每個結(jié)果浮點數(shù)據(jù)元素都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪加上第三組的相應(yīng)浮點數(shù)據(jù)元素。
8.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示第一源的浮點縮放指令,第一源包括以下之一:(I)至少八個雙精度浮點數(shù)據(jù)元素;以及(2)至少十六個單精度浮點數(shù)據(jù)元素。
9.如權(quán)利要求1所述的方法,其中所述基數(shù)是2。
10.如權(quán)利要求1所述的方法,其特征在于,接收包括接收指示含有單個浮點數(shù)據(jù)元素的第一源和指示含有多個打包浮點數(shù)據(jù)元素的第二源的浮點縮放指令,并且其中存儲包括存儲含有多個打包結(jié)果浮點數(shù)據(jù)元素的結(jié)果,每個打包結(jié)果浮點數(shù)據(jù)元素對應(yīng)于第二源的所述多個打包浮點數(shù)據(jù)元素之一,所述多個打包結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的所述單個浮點數(shù)據(jù)元素的整數(shù)次冪。
11.如權(quán)利要求1所述的方法,其特征在于,接收包括接收進一步指示打包數(shù)據(jù)操作掩碼的浮點縮放指令,并且其中存儲結(jié)果包括根據(jù)所述打包數(shù)據(jù)操作掩碼在結(jié)果中有條件地存儲經(jīng)縮放的浮點數(shù)據(jù)元素。
12.一種裝置,包括: 多個寄存器;以及 與所述多個寄存器耦合的浮點執(zhí)行單元,所述浮點執(zhí)行單元用于響應(yīng)于浮點縮放指令將結(jié)果存儲在目的地中,所述浮點縮放指令指示包括一個或多個不必具有整數(shù)值的浮點數(shù)據(jù)元素的第一源、指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源、并且指示所述目的地,所述結(jié)果包括一個或多個相應(yīng)結(jié)果浮點數(shù)據(jù)元素,所述一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。
13.如權(quán)利要求12所述的裝置,其特征在于,所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來確定代表第一源的一個或多個相應(yīng)浮點數(shù)據(jù)元素的一個或多個整數(shù)。
14.如權(quán)利要求12所述的裝置,其特征在于,所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來確定選自以下的整數(shù):(I)小于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最大整數(shù);以及(2)大于或等于第一源的相應(yīng)浮點數(shù)據(jù)元素的最小整數(shù)。
15.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令指示第一源,第一源包括為非數(shù)(NaN)、正無窮大、負(fù)無窮大、以及非規(guī)格化數(shù)之一的浮點數(shù)據(jù)元素。
16.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令指示含有為非數(shù)(NaN)的浮點數(shù)據(jù)元素的第二源,并且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來存儲包括也為NaN的相應(yīng)結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
17.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令指示包括為正無窮大的浮點數(shù)據(jù)元素的第二源并且指示包括為非數(shù)(NaN)的相應(yīng)浮點數(shù)據(jù)元素的第一源,并且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來存儲包括為非數(shù)(NaN)的相應(yīng)結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
18.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令進一步指示第三組一個或多個相應(yīng)浮點數(shù)據(jù)元素,并且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來存儲包括一個或多個結(jié)果浮點 數(shù)據(jù)元素的結(jié)果,每個結(jié)果浮點數(shù)據(jù)元素包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪加上第三組的相應(yīng)浮點數(shù)據(jù)元素。
19.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令指示包括以下之一的第一源:(1)至少八個雙精度浮點數(shù)據(jù)元素;以及(2)至少十六個單精度浮點數(shù)據(jù)元素。
20.如權(quán)利要求12所述的裝置,其中所述基數(shù)是2。
21.如權(quán)利要求12所述的裝置,其特征在于,所述浮點縮放指令還指示打包數(shù)據(jù)操作掩碼,且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令,根據(jù)所述打包數(shù)據(jù)操作掩碼有條件地將經(jīng)縮放的浮點數(shù)據(jù)元素存儲在結(jié)果中。
22.如權(quán)利要求12所述的裝置,其特征在于,第一源和第二源中的每一者都包括單個浮點數(shù)據(jù)元素,并且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來存儲包括單個結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
23.如權(quán)利要求12所述的裝置,其特征在于,第一源和第二源中的每一者都包括多個打包浮點數(shù)據(jù)元素,并且其中所述浮點執(zhí)行單元響應(yīng)于所述浮點縮放指令來存儲包括相應(yīng)的多個結(jié)果浮點數(shù)據(jù)元素的結(jié)果。
24.—種系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器用于響應(yīng)于浮點縮放指令將結(jié)果存儲在目的地中,所述浮點縮放指令指示包括一個或多個浮點數(shù)據(jù)元素的第一源、指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源、并且指示所述目的地,所述結(jié)果包括一個或多個相應(yīng)結(jié)果浮點數(shù)據(jù)元素,所述一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪;以及 與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
25.如權(quán)利要求24所述的系統(tǒng),其特征在于,所述處理器響應(yīng)于浮點縮放指令來確定代表第一源的一個或多個相應(yīng)浮點數(shù)據(jù)元素的一個或多個整數(shù)。
26.如權(quán)利要求24所述的系統(tǒng),其特征在于,在第一源的一個或多個浮點數(shù)據(jù)元素包括正無窮大、負(fù)無窮大以及非數(shù)(NaN)之一時,所述處理器用于存儲結(jié)果而不生成異常。
27.一種制品,包括: 包括一種或多種固體存儲材料的機器可讀存儲介質(zhì),所述機器可讀存儲介質(zhì)存儲浮點縮放指令, 所述浮點縮放指令指示包括一個或多個不必具有整數(shù)值的浮點數(shù)據(jù)元素的第一源、指示包括一個或多個相應(yīng)浮點數(shù)據(jù)元素的第二源、并且指示目的地存儲位置,并且所述浮點縮放指令如果由機器執(zhí)行則導(dǎo)致所述機器執(zhí)行以下操作,包括: 將結(jié)果存儲在所述目的地存儲位置中,所述結(jié)果包括一個或多個相應(yīng)結(jié)果浮點數(shù)據(jù)元素,所述一個或多個結(jié)果浮點數(shù)據(jù)元素中的每一個都包括第二源的相應(yīng)浮點數(shù)據(jù)元素乘以基數(shù)的代表第一源的相應(yīng)浮點數(shù)據(jù)元素的整數(shù)次冪。
28.如權(quán)利要求27所述的制品,其特征在于,所述浮點縮放指令如果由機器執(zhí)行則用于導(dǎo)致所述機器確定代表第一源的一個或多個相應(yīng)浮點數(shù)據(jù)元素的一個或多個整數(shù)。
29.如權(quán)利要求27所述的制品,其特征在于,所述浮點縮放指令指示第一源的包括正無窮大、負(fù)無窮大以及非數(shù)(NaN)之一的一個或多個浮點數(shù)據(jù)元素,并且其中所述浮點縮放指令如果由機器執(zhí)行則用于導(dǎo)致所述機器存儲結(jié)果而不生成異常。
【文檔編號】G06F9/06GK104040484SQ201180076106
【公開日】2014年9月10日 申請日期:2011年12月28日 優(yōu)先權(quán)日:2011年12月28日
【發(fā)明者】C·S·安德森, A·格雷德斯廷, R·凡倫天, S·盧巴諾維奇, B·艾坦 申請人:英特爾公司