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

用于十進(jìn)制浮點(diǎn)數(shù)據(jù)邏輯提取的方法和裝置制造方法

文檔序號:6485507閱讀:244來源:國知局
用于十進(jìn)制浮點(diǎn)數(shù)據(jù)邏輯提取的方法和裝置制造方法
【專利摘要】描述了在計(jì)算機(jī)處理器中執(zhí)行BIDSplit指令的系統(tǒng)、設(shè)備和方法的實(shí)施例。在一些實(shí)施例中,BIDSplit指令的執(zhí)行測試二進(jìn)制整數(shù)十進(jìn)制源值的編碼并將符號、指數(shù)和/或有效數(shù)提取到目的地。
【專利說明】用于十進(jìn)制浮點(diǎn)數(shù)據(jù)邏輯提取的方法和裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明的領(lǐng)域一般涉及計(jì)算機(jī)處理器架構(gòu),更具體地涉及在執(zhí)行時(shí)導(dǎo)致特定結(jié)果的指令。

【背景技術(shù)】
[0002]十進(jìn)制浮點(diǎn)算術(shù)在需要精確表示十進(jìn)制分?jǐn)?shù)的計(jì)算機(jī)應(yīng)用中尤其重要。因?yàn)閭鹘y(tǒng)的二進(jìn)制浮點(diǎn)算術(shù)不提供最優(yōu)的十進(jìn)制舍入設(shè)施且不能精確地表示很多分?jǐn)?shù),所以在用于對十進(jìn)制舍入誤差敏感的應(yīng)用時(shí)它施加額外的負(fù)擔(dān)。例如,利用這些數(shù)字表示的銀行、保險(xiǎn)和其它金融應(yīng)用將采用附件軟件模塊以改正舍入誤差,否則它們將遭受舍入誤差傳播。十進(jìn)制浮點(diǎn)編碼避免這些缺點(diǎn),因?yàn)樗删_表示十進(jìn)制分?jǐn)?shù),并提供與傳統(tǒng)筆-紙計(jì)算相等的算術(shù)結(jié)果。
[0003]在IEEE-754-2008中介紹利用十進(jìn)制浮點(diǎn)對值進(jìn)行編碼的兩個(gè)標(biāo)準(zhǔn)。已知這些標(biāo)準(zhǔn)之一是二進(jìn)制整數(shù)十進(jìn)制,其中利用有效數(shù)字、指數(shù)和符號對數(shù)進(jìn)行編碼。典型地,需要利用二進(jìn)制整數(shù)十進(jìn)制編碼的計(jì)算的應(yīng)用使用軟件庫,該軟件庫使用標(biāo)量指令集和連續(xù)相關(guān)的算法來標(biāo)識和解碼這些值。
[0004]指令集,或指令集架構(gòu)(ISA)是涉及編程的計(jì)算機(jī)架構(gòu)的一部分,并可以包括原生數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu),中斷和異常處理、以及外部輸入和輸出(I/o)。在本文中術(shù)語指令一般指宏指令一即被提供給處理器(或指令轉(zhuǎn)換器,該指令轉(zhuǎn)換器(例如使用靜態(tài)二進(jìn)制翻譯、包括動態(tài)編譯的動態(tài)二進(jìn)制翻譯)翻譯、變形、仿真,或以其他方式將指令轉(zhuǎn)換成要由處理器處理的一個(gè)或多個(gè)指令)的指令)以用于執(zhí)行的指令一而不是微指令或微操作(miCTo-op)—它們是處理器的解碼器解碼宏指令的結(jié)果。
[0005]ISA與微架構(gòu)不同,微架構(gòu)是實(shí)現(xiàn)指令集的處理器的內(nèi)部設(shè)計(jì)。帶有不同的微架構(gòu)的處理器可以共享共同的指令集。例如,ISA的相同寄存器架構(gòu)在不同的微架構(gòu)中可使用已知的技術(shù)以不同方法來實(shí)現(xiàn),包括專用物理寄存器、使用寄存器重命名機(jī)制(諸如,使用寄存器別名表RAT、重排序緩沖器R0B、以及引退寄存器組;使用多映射和寄存器池)的一個(gè)或多個(gè)動態(tài)分配物理寄存器等。除非另作說明,短語寄存器架構(gòu)、寄存器組,以及寄存器在本文中被用來指代對軟件/編程器以及指令指定寄存器的方式可見。在需要特殊性的情況下,形容詞邏輯、架構(gòu),或軟件可見的將用于表示寄存器架構(gòu)中的寄存器/組,而不同的形容詞將用于指定給定微型架構(gòu)中的寄存器(例如,物理寄存器、重新排序緩沖器、引退寄存器、寄存器池)。
[0006]指令集包括一個(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)容。
[0007]科學(xué)、金融、自動向量化的通用,RMS(識別、挖掘以及合成),以及可視和多媒體應(yīng)用程序(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻操縱)常常需要對大量的數(shù)據(jù)項(xiàng)執(zhí)行相同操作(被稱為“數(shù)據(jù)并行性”)。單指令多數(shù)據(jù)(SIMD)是指使處理器對多個(gè)數(shù)據(jù)項(xiàng)執(zhí)行操作的一種指令。SMD技術(shù)特別適于能夠在邏輯上將寄存器中的位分為若干個(gè)固定尺寸的數(shù)據(jù)元素的處理器,每一個(gè)元素都表示單獨(dú)的值。例如,256位寄存器中的位可以被指定為四個(gè)單獨(dú)的64位打包數(shù)據(jù)元素(四字(Q)尺寸的數(shù)據(jù)元素),八個(gè)單獨(dú)的32位打包數(shù)據(jù)元素(雙字(D)尺寸的數(shù)據(jù)元素),十六單獨(dú)16位打包的數(shù)據(jù)元素(字(W)尺寸的數(shù)據(jù)元素),或三十二個(gè)單獨(dú)的8位數(shù)據(jù)元素(字節(jié)(B)尺寸的數(shù)據(jù)元素)來被操作的源操作數(shù)。這種類型的數(shù)據(jù)被稱為打包數(shù)據(jù)類型或向量數(shù)據(jù)類型,這種數(shù)據(jù)類型的操作數(shù)被稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。換句話說,打包數(shù)據(jù)項(xiàng)或向量指的是打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)是SMD指令(也稱為打包數(shù)據(jù)指令或向量指令)的源操作數(shù)或目的地操作數(shù)。
[0008]作為示例,一種類型的SIMD指令指定要以垂直方式對兩個(gè)源向量操作數(shù)執(zhí)行的單個(gè)向量操作,以利用相同數(shù)量的數(shù)據(jù)元素,以相同數(shù)據(jù)元素順序,生成相同尺寸的目的地向量操作數(shù)(也稱為結(jié)果向量操作數(shù))。源向量操作數(shù)中的數(shù)據(jù)元素被稱為源數(shù)據(jù)元素,而目的地向量操作數(shù)中的數(shù)據(jù)元素被稱為目的地或結(jié)果數(shù)據(jù)元素。這些源向量操作數(shù)是相同尺寸的,并包含相同寬度的數(shù)據(jù)元素,如此,它們包含相同數(shù)量的數(shù)據(jù)元素。兩個(gè)源向量操作數(shù)中的相同位位置中的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(也稱為相對應(yīng)的數(shù)據(jù)元素;即,每個(gè)源操作數(shù)的數(shù)據(jù)元素位置O中的數(shù)據(jù)元素相對應(yīng),每個(gè)源操作數(shù)的數(shù)據(jù)元素位置I中的數(shù)據(jù)元素相對應(yīng),等等)。由該SIMD指令所指定的操作分別對這些源數(shù)據(jù)元素對中的每一對執(zhí)行,以生成匹配數(shù)量的結(jié)果數(shù)據(jù)元素,如此,每一對源數(shù)據(jù)元素都具有對應(yīng)的結(jié)果數(shù)據(jù)元素。由于操作是垂直的并且由于結(jié)果向量操作數(shù)尺寸相同,具有相同數(shù)量的數(shù)據(jù)元素,并且結(jié)果數(shù)據(jù)元素與源向量操作數(shù)以相同數(shù)據(jù)元素順序來存儲,因此,結(jié)果數(shù)據(jù)元素與源向量操作數(shù)中它們的對應(yīng)源數(shù)據(jù)元素對處于結(jié)果向量操作數(shù)的相同位位置。除此示例性類型的SMD指令之外,還有各種其他類型的SMD指令(例如,只有一個(gè)或具有兩個(gè)以上的源向量操作數(shù)的;以水平方式操作的;生成不同尺寸的結(jié)果向量操作數(shù)的,具有不同尺寸的數(shù)據(jù)元素的,和/或具有不同的數(shù)據(jù)元素順序的)。應(yīng)該理解,術(shù)語目的地向量操作數(shù)(或目的地操作數(shù))被定義為執(zhí)行由指令所指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲在某一位置(寄存器或在由該指令所指定的存儲器地址),以便它可以作為源操作數(shù)由另一指令訪問(由另一指令指定該同一個(gè)位置)。

【專利附圖】

【附圖說明】
[0009]本發(fā)明是通過示例說明的,而不僅局限于各個(gè)附圖的圖示,在附圖中,類似的參考標(biāo)號表示類似的元件,其中:
[0010]圖1示出用于在處理器中執(zhí)行用于53位提取的BID64Split指令的本發(fā)明的實(shí)施例。
[0011]圖2示出用于在處理器中執(zhí)行用于51位提取的BID64Split指令的本發(fā)明的實(shí)施例。
[0012]圖3示出用于在處理器中執(zhí)行用于53位提取的具有64位源和目的地寄存器操作數(shù)的BID64Split指令的本發(fā)明的實(shí)施例。
[0013]圖4示出用于在處理器中執(zhí)行具有64位寄存器操作數(shù)的BID64SplitQ指令的本發(fā)明的實(shí)施例。
[0014]圖5示出用于在處理器中執(zhí)行用于提供32位數(shù)據(jù)寄存器的ISA的BID32SplitD指令的本發(fā)明的實(shí)施例。
[0015]圖6示出用于在處理器中執(zhí)行具有128位源和目的地寄存器操作數(shù)的BID128SplitDQ指令的本發(fā)明的實(shí)施例。
[0016]圖7示出用于在處理器中執(zhí)行具有256位源和目的地寄存器操作數(shù)的用于公共控制雙提取的VTBID128Split指令的本發(fā)明的實(shí)施例。
[0017]圖8示出通過利用處理器執(zhí)行BIDSplit指令測試和提取BID值的方法的實(shí)施例。
[0018]圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖。
[0019]圖1OA是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0020]圖1OB是示出根據(jù)本發(fā)明的實(shí)施例的有序架構(gòu)核的示例性實(shí)施例以及包括在處理器中的示例性寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核兩者的框圖。
[0021]圖1lA是根據(jù)本發(fā)明的各實(shí)施例的單個(gè)處理器核以及它與管芯上互連網(wǎng)絡(luò)的連接及其二級(L2)高速緩存的本地子集的框圖。
[0022]圖1lB是根據(jù)本發(fā)明的各實(shí)施例的圖1lA中的處理器核的一部分的展開圖。
[0023]圖12是根據(jù)本發(fā)明實(shí)施例可具有一個(gè)以上的核、可具有集成存儲器控制器以及可具有集成圖形器件的處理器的框圖。
[0024]圖13是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。
[0025]圖14是根據(jù)本發(fā)明的實(shí)施例的第一更具體的示例性系統(tǒng)的框圖。
[0026]圖15是根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)的框圖。
[0027]圖16是根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(SoC)的框圖。
[0028]圖17是根據(jù)本發(fā)明的實(shí)施例的對比使用軟件指令變換器將源指令集中的二進(jìn)制指令變換成目標(biāo)指令集中的二進(jìn)制指令的框圖。

【具體實(shí)施方式】
[0029]在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,可不通過這些具體細(xì)節(jié)來實(shí)施本發(fā)明的實(shí)施例。在其它實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免模糊對本描述的理解。
[0030]說明書中對“一個(gè)實(shí)施例”、“實(shí)施例”、“示例實(shí)施例”等等的引用表明所描述的實(shí)施例可以包括特定的特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施例不一定都包括該特定的特征、結(jié)構(gòu)或特性。此外,這些短語不一定表示同一實(shí)施例。此外,當(dāng)聯(lián)系實(shí)施例描述特定的特征、結(jié)構(gòu)或特性時(shí),認(rèn)為本領(lǐng)域普通技術(shù)人員能夠知曉結(jié)合其它實(shí)施例來實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特性,無論是否明確描述。
[0031]如先前詳細(xì)描述的,二進(jìn)制整數(shù)十進(jìn)制(BID)是IEEE-754-2008所描述的用于表示十進(jìn)制浮點(diǎn)(DFP)的兩個(gè)主要的編碼標(biāo)準(zhǔn)中的一個(gè)。該標(biāo)準(zhǔn)詳細(xì)描述不同精度的浮點(diǎn)數(shù)的編碼,諸如利用32位的單精度(十進(jìn)制32)、利用64位的雙精度(十進(jìn)制64)和利用128位的四精度(十進(jìn)制128)。BID編碼的DFP數(shù)通常包含三個(gè)重要的組分——符號、指數(shù)和有效數(shù)。在BID編碼的數(shù)中,這些組分的布局包含具有可變位長度和/或不連續(xù)位置的三個(gè)邏輯字段。當(dāng)提取位字段時(shí),結(jié)果組分可用于重構(gòu)原始DFP值。在十進(jìn)制64中,例如,可利用以下的表達(dá)式重構(gòu)原始DFP值:(-1) M *10?Μ*有效數(shù)。類似地,在十進(jìn)制128中,可根據(jù)以下的表達(dá)式重構(gòu)原始DFP值:(-1) ^*10?*-6176*有效數(shù)。注意在每個(gè)表達(dá)式中,可通過減去常數(shù)來調(diào)整指數(shù)。該調(diào)整是必要的,因?yàn)橹笖?shù)存儲在BID編碼中作為經(jīng)偏置的指數(shù),表示存儲在經(jīng)編碼的數(shù)中的值從實(shí)際值偏移了指數(shù)偏差。
[0032]除了編碼有效的數(shù)的范圍外,格式還允許無限(INF)值以及靜默和信令非數(shù)(Nota Number:NaN)值的編碼。此外,還可基于值的有效數(shù)和指數(shù)所需的位數(shù)以不同方式編碼可表示數(shù)的范圍。例如,十進(jìn)制64類型的64位DFP數(shù)具有16十進(jìn)制數(shù)字的精度。為了提供該精度,利用53位有效數(shù)編碼具有少于16個(gè)十進(jìn)制數(shù)字的某些DFP值,且僅利用51位有效數(shù)編碼具有16個(gè)十進(jìn)制數(shù)字的某些DFP值。在前面的情況中,53個(gè)明確的有效數(shù)位存儲在系數(shù)字段中且與一個(gè)隱含的‘0’位耦合以形成54位有效數(shù)。在后面的情況中,51個(gè)明確的位存儲在系數(shù)字段中且與3個(gè)在前的隱含位耦合以形成54位有效數(shù)。因?yàn)閷τ诿糠N類型的BID格式化的數(shù)存在很多編碼,所以大多數(shù)BID計(jì)算嚴(yán)重依賴于使用軟件庫,該軟件庫使用標(biāo)量指令集和連續(xù)相關(guān)的算法來確定哪種編碼用于數(shù),然后提取其三個(gè)重要字段一符號、指數(shù)和有效數(shù)。該抽象過程免除了編程器部分的很多努力,但因?yàn)闄z測特殊情況值(例如,INF、NaN)所需的大量步驟和將值從非連續(xù)位字段變換成54位有效數(shù)和經(jīng)偏移的指數(shù)的計(jì)算組分所需的大量重構(gòu)努力,所以由標(biāo)量序列構(gòu)造的庫例程不是最優(yōu)的。
[0033]本發(fā)明的實(shí)施例的一個(gè)方面給出一種指令,該指令在由計(jì)算設(shè)備中的處理器執(zhí)行時(shí)加速BID編碼的位字段至允許二進(jìn)制整數(shù)計(jì)算的三個(gè)邏輯組分的轉(zhuǎn)換,并且還提供用于區(qū)分BID正常值、特殊值和非數(shù)字編碼的高效方式。因此,例如,BID編碼值的列表可被修改以去除NaN和無限值,同時(shí)還將剩余的值轉(zhuǎn)換成適于高效算術(shù)計(jì)算的編碼或轉(zhuǎn)換成人類可讀的表示。
[0034]BIDSplit
[0035]以下結(jié)合可用于執(zhí)行這些指令的系統(tǒng)、架構(gòu)、指令格式等的實(shí)施例詳細(xì)描述BIDSplit指令的實(shí)施例。BIDSplit指令包含目的地操作數(shù)、源操作數(shù)和控制操作數(shù)。目的地操作數(shù)是寄存器,源操作數(shù)可以是寄存器或存儲器位置,且控制操作數(shù)可以是寄存器或立即值。然而,其它已知的配置同樣良好,諸如目的地操作數(shù)是存儲器位置。所描述的BIDSplit指令可利用這些組合中的任一個(gè)實(shí)現(xiàn),且還能夠在大端(big endian)和小端(little endian)方案或系統(tǒng)中實(shí)現(xiàn)。
[0036]在執(zhí)行時(shí),BIDSplit指令導(dǎo)致處理器檢查源操作數(shù)內(nèi)的一個(gè)或多個(gè)BID編碼的十進(jìn)制浮點(diǎn)數(shù),并且確定經(jīng)編碼的數(shù)的一個(gè)或多個(gè)位是否匹配表示控制操作數(shù)中指定的編碼類型的位模式。每個(gè)位模式或編碼類型表示特定BID編碼方案的測試,諸如53位有效數(shù)方案、51位有效數(shù)方案、無限值和NaN。如果處理器確定在控制操作數(shù)中指定的編碼類型位模式匹配源操作數(shù)中的BID編碼數(shù)之一的子字段,則根據(jù)TRUE (I)(真(I))或FALSE (O)(假(O))的匹配狀態(tài),處理器將結(jié)果寫入目的地寄存器。可按各種方式返回該匹配狀態(tài),諸如在標(biāo)記寄存器中的位中或作為目的地寄存器中的位。例如,當(dāng)控制操作數(shù)包括編碼類型位模式(表示對于BID64Split,指定“除53位有效數(shù)編碼類型外匹配所有BID編碼類型”)時(shí),匹配狀態(tài)TRUE指示不利用53位有效數(shù)編碼類型來編碼經(jīng)編碼的值。結(jié)果,處理器將更新標(biāo)志寄存器或目的地中的位?;蛘撸绻撐荒J较喾磳⑸善ヅ錉顟B(tài)FALSE,其指示所測試的BID編碼數(shù)利用53位有效數(shù)編碼類型編碼,則處理器將把53位有效數(shù)和/或其它組分提取到由目的地操作數(shù)指定的位置。類似地,還將匹配狀態(tài)作為標(biāo)志寄存器中的“狀態(tài)”位或作為目的地中的位返回。
[0037]BIDSplit-style 指令的不例性格式是“BID64Split 8ml, reg2/mem64, imm8”,其中BID64Split是用于分割BID decimal64的指令,8ml是用作指令輸出的目的地的128位向量寄存器,且reg2/mem64是用作包含BID編碼數(shù)的源的64位寄存器或存儲器位置。在本發(fā)明的實(shí)施例中,這些寄存器和存儲器位置可以是不同尺寸,諸如32位、128位等在其它實(shí)施例中,8ml可以是存儲器地址。最后,“ i_8 ”是提供控制數(shù)據(jù)的8位立即數(shù),該控制數(shù)據(jù)用于檢查源操作數(shù)中經(jīng)編碼的值,但在本發(fā)明的實(shí)施例中,該自變量可替代地是可變尺寸或存儲器地址的寄存器。在其它實(shí)施例中,立即值是諸如16位的不同尺寸。
[0038]BID decimal64 編碼
[0039]所公開的發(fā)明的實(shí)施例用于與任何尺寸的BID編碼一起工作。然而,為了幫助理解本發(fā)明,給出關(guān)于BID的decimal64編碼的細(xì)節(jié)??赏ㄟ^檢查“組合”字段中前導(dǎo)符號位之后的若干位來確定這些數(shù)的編碼。例如,如果‘00’、‘01’或‘10’位模式跟隨符號位,則指數(shù)字段由跟隨符號位的10位組成,且有效數(shù)是64中的剩余53位。在這種情況下,有效數(shù)的53位然后與隱含的開始位‘0’結(jié)合,形成總共54位有效數(shù)。
[0040]或者,如果‘11’模式跟隨符號位,則經(jīng)編碼的數(shù)不是“53位”編碼,且需要進(jìn)一步檢查后續(xù)位。例如,如果在符號位之后數(shù)具有‘1100’模式,則10位指數(shù)字段在符號位和跟隨的‘11’位之后開始。這留下51位用于有效數(shù),它們與隱含的在前3位序列‘100’組合以形成54位有效數(shù)。
[0041]此外,如果‘1101’或‘1110’模式跟隨符號位,則該數(shù)是非規(guī)范編碼。IEEE-754-2008規(guī)范將這些數(shù)處理為零值,且本發(fā)明的實(shí)施例進(jìn)行相同動作或不同地處理這些編碼。另外,如果‘11110’位模式跟隨符號位,則經(jīng)編碼的數(shù)是無窮大。如果‘111110’模式跟隨符號位,則經(jīng)編碼的值是“靜默NaN”,且‘111111’模式指示“信令NaN”。
[0042]對于decimal64的51位和53位編碼,指數(shù)是經(jīng)偏置的值。通過從經(jīng)偏置的指數(shù)減去偏差(398)來確定真指數(shù)。對于其它DFP編碼存在類似的方案,諸如decimal32(其中偏置是101)和decimal 128 (其中偏置是6176),但是盡管每個(gè)的實(shí)現(xiàn)細(xì)節(jié)略微改變,但測試和解碼的一般過程保持相同。
[0043]BID64Split
[0044]圖1示出用于在處理器中執(zhí)行用于53位提取的BID64Split指令的本發(fā)明的實(shí)施例。在圖1中,給出在小端系統(tǒng)中用于執(zhí)行具有格式“BID64Split 8ml,reg2/mem64,i_8”的指令的過程100。第一操作數(shù),即向量寄存器8ml是目的地操作數(shù),且第二操作數(shù),即64位寄存器或存儲器位置是源操作數(shù)。在該實(shí)施例中,第三操作數(shù)的格式i_8包含兩個(gè)邏輯字段102。首先,位0-4表示指數(shù)偏移,它由“Exp_Offset”來指示。在實(shí)施例中,Exp_Offset字段是無符號的5位值,用以指定指數(shù)相對于原始值的位置,在該情況下,原始值是符號位(位63)。在所提供的imm8示例104中,Exp_Offset包含值“ 1”,其指示對于單個(gè)有效編碼類型源的可提取數(shù)據(jù)部分具有離開符號位一位開始的指數(shù),未決的模式匹配結(jié)果指示輸入編碼具有有效可提取有效數(shù)。Imm8格式108的剩余三位5_7被指定為“NZ Len”,其代表非零長度。這三位指定無符號的“2加編碼”數(shù),表示,在該字段中編碼的整數(shù)值將與整數(shù)2相力口。結(jié)果數(shù)將指示掩碼中的連續(xù)非零位的長度,掩碼將用于與源操作數(shù)指示的原始BID編碼數(shù)據(jù)相比較。在所描述的示例104中,位5-7包含值O。利用“2加編碼”,數(shù)“2”與“O”相加得到“2”。因此,由于控制操作數(shù),所形成的掩碼將包含兩個(gè)連續(xù)非零位106,它們緊接第一符號位之后開始。
[0045]在可支持大端數(shù)據(jù)和小端數(shù)據(jù)的實(shí)施例中,控制操作數(shù)格式102還將包括表示“NZ Offset”(非零偏移)的位,其指示在掩碼中連續(xù)非零位應(yīng)相對于符號位在哪里開始。在具有這一 NZ偏移值的實(shí)施例中,有符號的2位值(表示在“_2”至“I”之間的值)指定在掩碼的Qword邊界內(nèi)根據(jù)位的數(shù)量非零位模式的位置,其中負(fù)偏移指示非零位模式將以遞減次序從最聞有效位開始,并且將被解釋為負(fù)值1? 64。
[0046]在實(shí)施例中,所形成的掩碼108包含64位O和2位1,且兩個(gè)非零位剛好在符號位之后開始。掩碼108將被應(yīng)用到源操作數(shù)110,在該圖示中,源操作數(shù)110是64位,但在不同的實(shí)施例中尺寸可改變。源操作數(shù)110的物理布局包括五個(gè)不同的字段。首先,位0-49被標(biāo)記為“C-Coeff ”且包含在所提取的有效數(shù)中使用的位。類似地,位53-60被標(biāo)記為“C-exp”且包含用作所提取的經(jīng)偏移指數(shù)的一部分的位。位63包含符號位,其中“I”指示經(jīng)編碼的數(shù)是負(fù),且“O”指示該數(shù)是正。標(biāo)記為Cmbl( “combc^S”)位50-52和標(biāo)記為Cmbh (“combo高”)的位61-62是可取決于編碼變型而最終用作所提取的有效數(shù)、指數(shù)或并非兩者的一部分。
[0047]因?yàn)椤癗Z Len”0導(dǎo)致具有兩個(gè)連續(xù)非零位的掩碼,所以掩碼將用于檢測符號位之后的最前面的兩位是否均為‘I’。這種配置用于測試“53位”編碼,其中在符號位之后的最前面的兩位不全是“ I”位,如上所述。
[0048]然后通過執(zhí)行AND操作將掩碼108應(yīng)用到源操作數(shù)110以形成掩碼結(jié)果。掩碼結(jié)果和掩碼本身之間的比較的指示表示為匹配狀態(tài)“狀況(Status) ” 112:如果掩碼結(jié)果和掩碼相同,則狀況被設(shè)置為‘I’;如果掩碼結(jié)果和掩碼不同,則狀況被設(shè)置為‘O’。標(biāo)志位被更新成該狀況113的值,且將被寫入目的地向量寄存器8ml的數(shù)據(jù)取決于該狀況值114
[0049]當(dāng)狀況被設(shè)置為‘I’時(shí),且因此源的在符號位之后的最開始的兩位均是‘1’,源中經(jīng)編碼的值不使用“53位編碼”變型。在該實(shí)施例中,處理器將把全O寫入目的地向量寄存器8ml 115。在其它實(shí)施例中,處理器可更新目的地寄存器或存儲器中的特地為或位的集合,更新另一個(gè)寄存器中的標(biāo)志(例如,溢出位、斷言位、一般誤差位等)或執(zhí)行類似的操作。
[0050]另一方面,如果狀況被設(shè)置為‘0’,則利用“53位”模式來編碼源操作數(shù)內(nèi)的BID編碼數(shù),且執(zhí)行“53位提取”以生成8ml中的有效輸出116。因此,來自C-Coeff字段120A的位0-49和來自Cmbl字段120B的位50-52被提取并被置于目的地操作數(shù)8ml 116的位0-52中。類似地,源120E的位63的符號位被提取并置于目的地向量寄存器8ml 116的位127中。同樣,因?yàn)榭刂撇僮鲾?shù)的Exp_OffSet字段包含值“1”,所以將在離開符號位一位開始從源操作數(shù)提取指數(shù),所以C-exp字段120B的位53-60和Cmbh 120D的位61-62被提取并置于8ml 116的位64-74中。
[0051]以下在表1中使用匯編類型代碼給出根據(jù)本發(fā)明的一個(gè)實(shí)施例詳細(xì)描述使用這種BID64Split指令來確定和提取BID編碼值的一種方式的有用示例。該示例假設(shè):如果控制操作數(shù)中的編碼類型匹配源數(shù)的實(shí)際編碼類型,則將設(shè)置溢出標(biāo)志位。該代碼首先使用具有BID編碼decimal64數(shù)作為源操作數(shù)的BID64Split指令,測試以查看它是否是“53位”編碼數(shù)。如果它是“53位”編碼數(shù),且因此設(shè)置溢出位,則代碼跳至“L_G0tN0rmal53”標(biāo)簽以進(jìn)一步處理在8ml中存在的所提取的符號、有效數(shù)和指數(shù);否則代碼測試“51位”數(shù)。類似地,如果數(shù)不是根據(jù)“51位”編碼變型進(jìn)行編碼的,則代碼繼續(xù)測試經(jīng)編碼的無限數(shù)然后測試靜默和信令NaN編碼,在確定編碼后跳至定制處理器代碼部分。
[0052]

【權(quán)利要求】
1.一種在計(jì)算機(jī)處理器中執(zhí)行十進(jìn)制浮點(diǎn)分割指令的方法,包括: 獲取十進(jìn)制浮點(diǎn)分割指令,其中該指令包含源操作數(shù)、目的地操作數(shù)和控制操作數(shù),其中源操作數(shù)包括一個(gè)或多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),每個(gè)包括的經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)具有符號、有效數(shù)和指數(shù),并且其中所述控制操作數(shù)包括一個(gè)或多個(gè)編碼類型,每種編碼類型指示經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的可能的編碼格式; 解碼所獲取的十進(jìn)制浮點(diǎn)分割指令;以及 對于所述源操作數(shù)中包括的每個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),執(zhí)行經(jīng)解碼的十進(jìn)制浮點(diǎn)分表1]指令以: 確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一來編碼經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),以及 當(dāng)根據(jù)一個(gè)或多個(gè)編碼類型之一對經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),將來自經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)提取到目的地操作數(shù)。
2.如權(quán)利要求1所述的方法,其特征在于: 所述控制操作數(shù)還包括提取選擇,所述提取選擇指示符號、有效數(shù)和指數(shù)中的哪些應(yīng)從經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)提取到目的地操作數(shù);以及 根據(jù)所述控制操作數(shù)中包括的提取選擇進(jìn)行提取符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)的步驟。
3.如權(quán)利要求1所述的方法,其特征在于: 所述源操作數(shù)包括兩個(gè)或更多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù);以及 所述控制操作數(shù)包括一個(gè)編碼類型。
4.如權(quán)利要求1所述的方法,其特征在于: 所述源操作數(shù)包括第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)和第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù); 所述控制操作數(shù)包括第一編碼類型和第二編碼類型; 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第一編碼類型;以及 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第二編碼類型。
5.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行十進(jìn)制浮點(diǎn)分割指令的步驟還包括當(dāng)不根據(jù)所述一個(gè)或多個(gè)編碼類型之一對經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),更新位。
6.如權(quán)利要求5所述的方法,其特征在于,更新位的步驟包括更新標(biāo)志狀況寄存器中的位。
7.如權(quán)利要求5所述的方法,其特征在于,更新位的步驟包括更新目的地操作數(shù)中的狀況位。
8.一種裝置,包括: 硬件解碼器,用于解碼十進(jìn)制浮點(diǎn)分割指令,其中所述十進(jìn)制浮點(diǎn)分割指令包含源操作數(shù)、目的地操作數(shù)和控制操作數(shù),其中所述源操作數(shù)包括一個(gè)或多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),每個(gè)包括的經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)具有符號、有效數(shù)和指數(shù),并且其中控制操作數(shù)包括一個(gè)或多個(gè)編碼類型,每種編碼類型指示經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的可能的編碼格式;以及執(zhí)行邏輯,用于執(zhí)行經(jīng)解碼的十進(jìn)制浮點(diǎn)分割指令,其中經(jīng)解碼的十進(jìn)制浮點(diǎn)分割指令的執(zhí)行導(dǎo)致對于所述源操作數(shù)中包括的每個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù): 確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一來編碼經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),以及 當(dāng)根據(jù)一個(gè)或多個(gè)編碼類型之一對經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),將來自經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)提取到目的地操作數(shù)。
9.如權(quán)利要求8所述的裝置,其特征在于: 所述控制操作數(shù)還包括提取選擇,所述提取選擇指示符號、有效數(shù)和指數(shù)中的哪些應(yīng)從經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)提取到目的地操作數(shù);以及 根據(jù)所述控制操作數(shù)中包括的提取選擇進(jìn)行符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)的提取。
10.如權(quán)利要求8所述的裝置,其特征在于: 源操作數(shù)包括兩個(gè)或更多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù);以及 所述控制操作數(shù)包括一個(gè)編碼類型。
11.如權(quán)利要求8所述的裝置,其特征在于: 所述源操作數(shù)包括第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)和第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù); 所述控制操作數(shù)包括第一編碼類型和第二編碼類型; 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第一編碼類型;以及 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第二編碼類型。
12.如權(quán)利要求8所述的裝置,其特征在于,執(zhí)行經(jīng)解碼的十進(jìn)制浮點(diǎn)分割指令還導(dǎo)致當(dāng)不根據(jù)所述一個(gè)或多個(gè)編碼類型之一對經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),對于源操作數(shù)中包括的每個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),設(shè)置位。
13.如權(quán)利要求12所述的裝置,其特征在于,要更新的位包括標(biāo)志狀況寄存器內(nèi)的位。
14.如權(quán)利要求12所述的裝置,其特征在于,要更新的位包括目的地操作數(shù)內(nèi)的狀況位。
15.一種包括計(jì)算機(jī)程序的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),所述計(jì)算機(jī)程序用于轉(zhuǎn)換非原生程序指令以形成可由用于處理數(shù)據(jù)的裝置解碼的原生程序指令,所述裝置具有處理邏輯,所述處理邏輯用于: 執(zhí)行數(shù)據(jù)處理操作,且指令解碼器能操作用于解碼十進(jìn)制浮點(diǎn)分割指令,以執(zhí)行由原生程序指令指定的數(shù)據(jù)處理操作,其中所述十進(jìn)制浮點(diǎn)分割指令包含源操作數(shù)、目的地操作數(shù)和控制操作數(shù),其中源操作數(shù)包括一個(gè)或多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù),每個(gè)包括的經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)具有符號、有效數(shù)和指數(shù),并且其中控制操作數(shù)包括一個(gè)或多個(gè)編碼類型,每個(gè)編碼類型指示經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的可能的編碼格式,并且其中原生程序指令包括: 確定是否根據(jù)控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一來編碼經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù);以及 當(dāng)根據(jù)一個(gè)或多個(gè)編碼類型之一對經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),將來自經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)的符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)提取到目的地操作數(shù)。
16.如權(quán)利要求15所述的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),其特征在于: 所述控制操作數(shù)還包括提取選擇,所述提取選擇指示符號、有效數(shù)和指數(shù)中的哪些應(yīng)從經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)提取到目的地操作數(shù);以及 根據(jù)所述控制操作數(shù)中包括的提取選擇進(jìn)行提取符號、有效數(shù)和指數(shù)中的一個(gè)或多個(gè)。
17.如權(quán)利要求15所述的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),其特征在于: 源操作數(shù)包括兩個(gè)或更多個(gè)經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù);以及 所述控制操作數(shù)包括一個(gè)編碼類型。
18.如權(quán)利要求15所述的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),其特征在于: 所述源操作數(shù)包括第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)和第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù); 所述控制操作數(shù)包括第一編碼類型和第二編碼類型; 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第一經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第一編碼類型;以及 當(dāng)確定是否根據(jù)所述控制操作數(shù)中包括的一個(gè)或多個(gè)編碼類型之一編碼第二經(jīng)編碼的十進(jìn)制浮點(diǎn)數(shù)時(shí),一個(gè)或多個(gè)編碼類型之一是第二編碼類型。
19.如權(quán)利要求15所述的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),其特征在于,所述原生程序指令還包括當(dāng)不根據(jù)一個(gè)或多個(gè)編碼類型之一對經(jīng)解碼的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行編碼時(shí),更新位。
20.如權(quán)利要求19所述的有形非瞬態(tài)機(jī)器可讀存儲介質(zhì),其特征在于,更新位包括更新標(biāo)志狀況寄存器中的位。
【文檔編號】G06F9/30GK104137058SQ201180076413
【公開日】2014年11月5日 申請日期:2011年12月23日 優(yōu)先權(quán)日:2011年12月23日
【發(fā)明者】S·J·闊 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
蓬溪县| 南木林县| 右玉县| 牙克石市| 磴口县| 浙江省| 罗定市| 金阳县| 西青区| 新宾| 专栏| 靖州| 布拖县| 泾阳县| 安徽省| 安达市| 谷城县| 孟州市| 安达市| 新密市| 盐边县| 蓝山县| 新巴尔虎右旗| 沙田区| 璧山县| 保康县| 长沙县| 巍山| 孝昌县| 高雄市| 中方县| 康平县| 年辖:市辖区| 监利县| 长汀县| 巩留县| 监利县| 那坡县| 含山县| 汉川市| 沾化县|