欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

經(jīng)加速的通道間的向量歸約指令的制作方法

文檔序號:8287864閱讀:464來源:國知局
經(jīng)加速的通道間的向量歸約指令的制作方法
【技術(shù)領(lǐng)域】
[0001] 本公開涉及處理邏輯、微處理器以及相關(guān)聯(lián)的指令集架構(gòu)的領(lǐng)域,該指令集架構(gòu) 在被處理器或其它處理邏輯所執(zhí)行時(shí)運(yùn)行邏輯、數(shù)學(xué)或其它功能性操作。
【背景技術(shù)】
[0002] 指令集或指令集架構(gòu)(ISA)是計(jì)算機(jī)架構(gòu)中與編程有關(guān)的部分,并且可包括原生 數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理、以及外部輸入和輸 出(I/O)。術(shù)語指令在本申請中一般表示宏指令,宏指令是被提供給處理器(或指令轉(zhuǎn)換 器,該指令轉(zhuǎn)換器(利用靜態(tài)二進(jìn)制轉(zhuǎn)換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換)轉(zhuǎn)換、變形、 仿真或以其它方式將指令轉(zhuǎn)換成將由處理器處理的一個(gè)或多個(gè)其它指令)以供執(zhí)行的指 令--作為對比,微指令或微操作(微操作)是處理器的解碼器解碼宏指令的結(jié)果。
[0003] ISA與微架構(gòu)不同,微架構(gòu)是實(shí)現(xiàn)該指令集的處理器的內(nèi)部設(shè)計(jì)。具有不同微架構(gòu) 的處理器可共享共同的指令集。例如,丨ntel?酷睿(Core?)處理器、以及來自加利福尼亞州 桑尼威爾(Sunnyvale)的超微半導(dǎo)體有限公司(Advanced Micro Devices, Inc.)的諸多處 理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的 內(nèi)部設(shè)計(jì)。例如,可利用公知技術(shù)(包括專用物理寄存器、利用寄存器重命名機(jī)制的一個(gè)或 多個(gè)動(dòng)態(tài)分配的物理寄存器等等)在不同微架構(gòu)中以不同方式實(shí)現(xiàn)該ISA的同一寄存器架 構(gòu)。
[0004] 許多現(xiàn)代ISA支持單指令多數(shù)據(jù)(SIMD)操作。取代僅對一個(gè)數(shù)據(jù)元素或一對數(shù) 據(jù)元素進(jìn)行操作的標(biāo)量指令,向量指令(也稱為緊縮數(shù)據(jù)指令或SIMD指令)可同時(shí)或并行 地對多個(gè)數(shù)據(jù)元素或多對數(shù)據(jù)元素進(jìn)行操作。處理器可具有并行的執(zhí)行硬件,以響應(yīng)于該 向量指令同時(shí)或并行地執(zhí)行多個(gè)操作。
[0005] SMD操作在一個(gè)操作中對緊縮在一個(gè)寄存器或存儲(chǔ)器位置之內(nèi)的多個(gè)數(shù)據(jù)元素 進(jìn)行操作。這些數(shù)據(jù)元素被稱為緊縮數(shù)據(jù)或向量數(shù)據(jù)。向量元素中的每一個(gè)可表示單條數(shù) 據(jù)(例如像素的顏色,等等),可單獨(dú)或與其它數(shù)據(jù)無關(guān)地操作該單條數(shù)據(jù)。
[0006] 在一些情形下,一段源代碼可指定對數(shù)據(jù)元素的數(shù)組執(zhí)行歸約操作的特定順序。 歸約操作的示例是加法,它將數(shù)組中的所有數(shù)據(jù)元素相加以產(chǎn)生單個(gè)和,諸如以下串行源 代碼中指定的操作:
[0007] float氺a ;
[0008] float sum = 0. 0 ;
[0009] for(int i = 0 ;i<100xl024 ;++i) {
[0010] sum+ = a[i];
[0011] }
[0012] 上述源代碼通過按照升序?qū)?shù)組元素求和來對數(shù)組執(zhí)行歸約操作。對于浮點(diǎn)數(shù)據(jù) 元素,對將數(shù)據(jù)元素相加的順序的改變會(huì)改變最終和--盡管該改變可以是輕微的。在需 要高精度算術(shù)的科學(xué)計(jì)算中,即使輕微的改變可能也是不可接受的。因此,需要保持對數(shù)據(jù) 元素進(jìn)行操作的順序,以保留由該源代碼所指定的精確舍入特性。然而,諸如上述那樣的串 行計(jì)算是耗時(shí)的。如果能對浮點(diǎn)計(jì)算進(jìn)行重新排序,則可通過累加四個(gè)部分和(然后在該 循環(huán)之外將這四個(gè)部分和加到一起)來完成求和。在該情況下,循環(huán)主體一次加載四個(gè)單 精度值,并將包含:
[0013] movups (% [a],% [i],4),% xmmO// 加載 16B
[0014] addps% xmmO, % [sum]
[0015] 上述匯編代碼使用緊縮數(shù)據(jù)加法(也稱為向量加法)'addps',該緊縮數(shù)據(jù)加法將 向量寄存器(xmmO)的內(nèi)容累加至和中。該匯編代碼由于使用了向量操作而比串行源代碼 更高效;然而,該匯編代碼未保留如串行源代碼中那樣的歸約操作的順序,并且可能產(chǎn)生與 該串行源代碼的結(jié)果不同的結(jié)果。
[0016] 附圖簡述
[0017] 在附圖中的諸個(gè)圖中通過示例而非限制地示出各個(gè)實(shí)施例:
[0018] 圖1是根據(jù)一個(gè)實(shí)施例的包括向量寄存器的指令處理裝置的框圖。
[0019] 圖2是根據(jù)一個(gè)實(shí)施例的寄存器架構(gòu)的框圖。
[0020] 圖3A示出根據(jù)一個(gè)實(shí)施例的用于單精度值的向量歸約操作的示例。
[0021] 圖3B示出根據(jù)一個(gè)實(shí)施例的用于雙精度值的向量歸約操作的示例。
[0022] 圖4A示出根據(jù)一個(gè)實(shí)施例的將不具有向量歸約指令的代碼轉(zhuǎn)換成具有向量歸約 指令的經(jīng)轉(zhuǎn)化代碼的示例。
[0023] 圖4B示出根據(jù)一個(gè)實(shí)施例的將不具有向量歸約指令的代碼轉(zhuǎn)換成具有向量歸約 指令的經(jīng)轉(zhuǎn)化代碼的另一示例。
[0024] 圖5A示出根據(jù)一個(gè)實(shí)施例的用于執(zhí)行向量歸約指令的計(jì)算機(jī)系統(tǒng)的組件。
[0025] 圖5B是示出根據(jù)一個(gè)實(shí)施例的將響應(yīng)于向量歸約指令而執(zhí)行的操作的流程圖。
[0026] 圖6是示出根據(jù)一個(gè)實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令 轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0027] 圖7A是根據(jù)一個(gè)實(shí)施例的有序和無序流水線的框圖。
[0028] 圖7B是根據(jù)一個(gè)實(shí)施例的有序和無序核的框圖。
[0029] 圖8A-B是根據(jù)一個(gè)實(shí)施例的更具體的示例性有序核架構(gòu)的框圖。
[0030] 圖9是根據(jù)一個(gè)實(shí)施例的處理器的框圖。
[0031] 圖10是根據(jù)一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0032] 圖11是根據(jù)一個(gè)實(shí)施例的第二系統(tǒng)的框圖。
[0033] 圖12是根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖。
[0034] 圖13是根據(jù)一個(gè)實(shí)施例的芯片上系統(tǒng)(SoC)的框圖。
【具體實(shí)施方式】
[0035] 在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,可不通過這些具體細(xì) 節(jié)來實(shí)施本發(fā)明的實(shí)施例。在其它實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免模 糊對本描述的理解。
[0036] 本申請中描述的實(shí)施例提供用于加速歸約操作的向量歸約指令。歸約操作可以是 加法性歸約、乘法性或減法性歸約??蓪⑾蛄繗w約指令應(yīng)用于能由處理器處理的任何數(shù)值 數(shù)據(jù)格式的任何尺寸的數(shù)據(jù)元素(諸如64位雙精度浮點(diǎn)數(shù)、32位單精度浮點(diǎn)數(shù)、16位半精 度浮點(diǎn)數(shù)或其它數(shù)值數(shù)據(jù)格式)的數(shù)組。給定用于執(zhí)行歸約操作的預(yù)定義順序,可安排向 量歸約指令以使得處理器利用向量操作(也稱為緊縮數(shù)據(jù)操作)以給定的預(yù)定義順序執(zhí)行 該歸約操作,以提高效率。在一些實(shí)施例中,可通過編譯器生成向量歸約指令,該編譯器將 高級語言編寫的串行化代碼編譯成二進(jìn)制或其它中間格式的向量代碼。在一些實(shí)施例中, 可通過二進(jìn)制轉(zhuǎn)化/轉(zhuǎn)換器系統(tǒng)來生成向量歸約指令,該二進(jìn)制轉(zhuǎn)化/轉(zhuǎn)換器系統(tǒng)把更短 向量寬度的向量代碼轉(zhuǎn)化或以其它方式轉(zhuǎn)換成更寬向量寬度的另一向量代碼,或把不使用 新歸約指令的向量代碼轉(zhuǎn)化或以其它方式轉(zhuǎn)換至利用新歸約指令的另一向量代碼。在一些 其它實(shí)施例中,可由計(jì)算機(jī)程序員將向量歸約指令寫入程序。
[0037] 在一個(gè)實(shí)施例中,向量歸約指令包括用于不同算術(shù)操作和不同數(shù)值數(shù)據(jù)格式(例 如單精度、雙精度、半精度等等)的VADDREDUCEPS、VMULTREDUCEPS、VSUBREDUCEPS以及他們 的變型。前綴'V'指示向量操作;'ADD'、'MULT'和'SUB'分別指示加法、乘法和減法;后 綴'P'指示緊縮操作(即向量操作),并且后綴'S'指示單精度數(shù)據(jù)元素。在其它實(shí)施例 中,可將不同的符號用于相同或相似指令。為了簡化討論,以下描述可使用術(shù)語"向量歸約 指令"來表示這些歸約指令的任何一個(gè)或全部以及他們的變型,除非另有特別聲明。在一個(gè) 實(shí)施例中,這些向量歸約指令使處理器對數(shù)據(jù)元素的數(shù)組執(zhí)行算術(shù)操作(例如加法、減法、 乘法等等),并對該數(shù)組中的數(shù)據(jù)元素進(jìn)行混洗。這些向量歸約指令使用一個(gè)或多個(gè)向量寄 存器作為操作數(shù),其中作為源操作數(shù)的向量寄存器與數(shù)據(jù)元素的數(shù)組一起被加載。每個(gè)向 量歸約指令可對多個(gè)數(shù)據(jù)元素進(jìn)行操作:對多個(gè)數(shù)據(jù)元素中的一些進(jìn)行數(shù)學(xué)操作(例如加 法、減法、乘法等等),并混洗多個(gè)數(shù)據(jù)元素中的一些(例如移位至數(shù)組中的不同位置)。向 量歸約指令可加速歸約操作同時(shí)保留相同的操作順序,以產(chǎn)生與串行源代碼或指定任何給 定操作順序的另一源代碼相同的結(jié)果。
[0038] 圖1是指令處理裝置115的實(shí)施例的框圖,該指令處理裝置具有執(zhí)行單元140,該 執(zhí)行單元包括能用于執(zhí)行指令(包括新的歸約指令)的電路。在一些實(shí)施例中,指令處理 裝置115可以是處理器、多核處理器的處理器核、或者電子系統(tǒng)中的處理元件。
[0039] 解碼器130接收高級機(jī)器指令或宏指令形式的傳入指令,并且解碼所述指令以生 成低級微操作、微代碼進(jìn)入點(diǎn)、微指令或其它低級指令或控制信號,它們反映了原始的高級 指令和/或從原始的高級指令導(dǎo)出。低級指令或控制信號可通過低級(例如,電路級或硬 件級)操作來實(shí)現(xiàn)高級指令的操作??墒褂酶鞣N不同的機(jī)制來實(shí)現(xiàn)解碼器130。合適機(jī)制 的示例包括但不限于,微代碼、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、用于實(shí)現(xiàn)本領(lǐng)域 已知的解碼器的其它機(jī)制等。
[0040] 解碼器130可接收針對高速緩存110、存儲(chǔ)器120或其它源的傳入指令。經(jīng)解碼的 指令被發(fā)送到執(zhí)行單元140。執(zhí)行單元140可從解碼器130接收一個(gè)或多個(gè)微操作、微代碼 進(jìn)入點(diǎn)、微指令、其它指令或其它控制信號,它們反映了所接收的指令或者是從所接收的指 令導(dǎo)出的。執(zhí)行單元140從寄存器組170、高速緩存110和/或存儲(chǔ)器120接收數(shù)據(jù)輸入并 向它們生成數(shù)據(jù)輸出。
[0041] 在一個(gè)實(shí)施例中,寄存器組170包括架構(gòu)寄存器,架構(gòu)寄存器也被稱為寄存器。短 語"架構(gòu)寄存器"、"寄存器組"、以及"寄存器"在本文中用于表示對軟件和/或編程器可見 (例如,軟件可見的)和/或由宏指令指定來標(biāo)識(shí)操作數(shù)的寄存器,除非另外予以規(guī)定或清 楚明顯可知。這些寄存器不同于給定微架構(gòu)中的其它非架構(gòu)式寄存器(例如,臨時(shí)寄存器、 重排序緩沖器、引退寄存器等)。
[0042] 為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置115。應(yīng)當(dāng)理解,其 它實(shí)施例可具有超過一個(gè)執(zhí)行單元。例如,裝置115可包括多個(gè)不同類型的執(zhí)行單元,諸如 例如算術(shù)單元、算術(shù)邏輯單元(ALU)、整數(shù)單元、浮點(diǎn)單元等。指令處理裝置或處理器的再 其它實(shí)施例可具有多個(gè)核、邏輯處理器或執(zhí)行引擎。稍后將參考圖7-13提供指令處理裝置 115的多個(gè)實(shí)施例。
[0043] 根據(jù)一個(gè)實(shí)施例,寄存器組170包括一組向量寄存器175,該組向量寄存器可用于 存儲(chǔ)向量歸約指令的操作數(shù)。每個(gè)向量寄存器175可以是512位、256位或128位寬(即 64字節(jié)、32字節(jié)或16字節(jié)寬),或可使用不同的向量寬度。
[0044] 圖2示出了支持本文描述的指令的底層寄存器架構(gòu)200的一個(gè)實(shí)施例。寄存器架 構(gòu)200基于]ntel?酷睿(Core?)處理器,該處理器實(shí)現(xiàn)包括x86、MMX?、流SMD擴(kuò)展(SSE)、 SSE2、SSE3、SSE4. 1、和SSE4. 2指令的指令集,以及SMD擴(kuò)展的附加集,該附加集被稱為高 級向量擴(kuò)展(AVX) (AVX1、AVX2和AVX3)。然而,應(yīng)理解,也可使用
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
武冈市| 井陉县| 马边| 招远市| 大兴区| 南丹县| 陆丰市| 青川县| 麻江县| 都兰县| 齐河县| 晋宁县| 化德县| 石楼县| 宁安市| 江华| 万源市| 方正县| 城市| 宜昌市| 昭苏县| 抚顺市| 桃源县| 山东| 永登县| 冀州市| 清河县| 栾川县| 西平县| 汶川县| 隆回县| 循化| 宽城| 乌兰县| 利辛县| 吴忠市| 葵青区| 平顺县| 宁远县| 南阳市| 东丽区|