亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于混合等待時(shí)間-吞吐量處理器的裝置和方法

文檔序號(hào):8476684閱讀:263來源:國(guó)知局
用于混合等待時(shí)間-吞吐量處理器的裝置和方法
【專利說明】用于混合等待時(shí)間-吞吐量處理器的裝置和方法 【背景技術(shù)】 技術(shù)領(lǐng)域
[0001] 本發(fā)明總體涉及計(jì)算機(jī)處理器領(lǐng)域。更具體地說,本發(fā)明涉及用于混合等待時(shí) 間-吞吐量處理器的裝置和方法。
[0002] 相關(guān)技術(shù)描述
[0003] 如今,調(diào)用加速器需要通過驅(qū)動(dòng)器接口。在其中使用層次結(jié)構(gòu)保護(hù)域的系統(tǒng)中,這 意味著切換到環(huán)〇,并且將數(shù)據(jù)復(fù)制到不同的地址空間,從而消耗顯著的時(shí)間和處理資源。 由于高等待時(shí)間,此類加速器接口固有地也是異步的。可編程加速器要求被加速的代碼以 其自身的指令集架構(gòu)(ISA)被實(shí)現(xiàn)。
[0004] -些當(dāng)前的處理器架構(gòu)嘗試解決這些顧慮中的一些,但是僅提供具有在被加速 的任務(wù)請(qǐng)求及其執(zhí)行之間的高等待時(shí)間的、粗粒度的異步機(jī)制。此外,當(dāng)前的架構(gòu)使用非 X86ISA,這需要單獨(dú)的工具鏈來生成被加速的任務(wù),并將該被加速任務(wù)與主x86程序集成。
[0005] 此外,當(dāng)前的異步硬件加速器(例如,GPU)允許被加速的任務(wù)執(zhí)行與觸發(fā)該被加 速的任務(wù)的應(yīng)用線程不相關(guān)的任務(wù)。這允許該應(yīng)用線程處理異常和/或中斷而不影響被加 速的任務(wù),并且甚至允許該應(yīng)用線程在多個(gè)核之間迀移而不影響系統(tǒng)上被加速的任務(wù)的位 置。
[0006] 當(dāng)前的同步硬件加速器需要確保中斷、異常、上下文切換和核迀移仍然是功能正 確的,并且確保向前進(jìn)展。這是通過下述之一完成的:(1)確保加速器足夠短并且不導(dǎo)致 任何異常,使得任何中斷被推遲到完成該加速器為止;(2)在現(xiàn)有的架構(gòu)寄存器(例如, REPMOV)中保持加速器的向前進(jìn)展;或(3)定義保存加速器狀態(tài)的新架構(gòu)寄存器,并且將它 們添加到XSAVE/XRESTORE。
[0007] 此外,當(dāng)前正以專業(yè)編程語言和指令集架構(gòu)(ISA)(例如,用于DSP和GPU)開發(fā)吞 吐量編程代碼。由此,吞吐量程序必須以與等待時(shí)間程序不同的ISA和工具鏈被寫入。既 有等待時(shí)間部分又有吞吐量部分的單個(gè)應(yīng)用必須被分成分開的子程序。一旦被分開,每一 個(gè)子程序在不同的硬件上運(yùn)行,從而導(dǎo)致在兩個(gè)子程序之間的控制和數(shù)據(jù)傳輸中的顯著開 銷。分別由諸如操作系統(tǒng)和驅(qū)動(dòng)器或中間件之類的不同實(shí)體完成在不同的硬件資源上對(duì)分 開的子程序的調(diào)度。 【附圖說明】
[0008] 結(jié)合以下附圖,從以下【具體實(shí)施方式】中可獲得對(duì)本發(fā)明更好的理解,其中:
[0009] 圖IA是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖;
[0010] 圖IB是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性 實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖;
[0011] 圖2是根據(jù)本發(fā)明的多個(gè)實(shí)施例的具有集成的存儲(chǔ)器控制器和圖形器件的單核 處理器和多核處理器的框圖。
[0012] 圖3示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;
[0013] 圖4示出根據(jù)本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;
[0014] 圖5示出根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;
[0015] 圖6示出根據(jù)本發(fā)明的實(shí)施例的芯片上系統(tǒng)(SoC)的框圖;
[0016] 圖7示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的、對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的 二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖;
[0017] 圖8A示出可在其中實(shí)現(xiàn)本發(fā)明的多個(gè)實(shí)施例的處理器架構(gòu);
[0018] 圖8B-C示出存儲(chǔ)用于調(diào)用加速器并回顧結(jié)果的數(shù)據(jù)的寄存器;
[0019] 圖9A-C示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于調(diào)用加速器的方法;
[0020] 圖IOA示出用于處理經(jīng)常失敗的復(fù)雜指令的方法;
[0021] 圖IOB示出使用用于存儲(chǔ)加速器狀態(tài)信息的棧的本發(fā)明的一個(gè)實(shí)施例。
[0022] 圖IlA示出由等待時(shí)間優(yōu)化硬件和吞吐量?jī)?yōu)化硬件處理的高層級(jí)程序和數(shù)據(jù)存 儲(chǔ)器。
[0023] 圖IlB示出包括等待時(shí)間群集集合和吞吐量群集集合的本發(fā)明的一個(gè)實(shí)施例。
[0024] 圖12A和12B是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的通用向量友好指令格式及其指令 模板的框圖;
[0025] 圖13A-D是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性專用向量友好指令格式的框 圖;以及
[0026] 圖14是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖。
[0027] 圖15示出根據(jù)本發(fā)明的某些實(shí)施例的計(jì)算機(jī)系統(tǒng)。 【具體實(shí)施方式】
[0028] 在下面的描述中,為了進(jìn)行解釋,闡述了眾多具體細(xì)節(jié)以便提供對(duì)下述本發(fā)明的 多個(gè)實(shí)施例的透徹理解。然而,對(duì)本領(lǐng)域的技術(shù)人員顯而易見的是,可以在沒有這些具體細(xì) 節(jié)中的一些細(xì)節(jié)的情況下實(shí)施本發(fā)明的多個(gè)實(shí)施例。在其他實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以 框圖形式示出,以避免使本發(fā)明的多個(gè)實(shí)施例的基本原理模糊。
[0029] 示例性處理器架構(gòu)和數(shù)據(jù)類型
[0030]圖IA是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖。圖IB是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的要包括在 處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu) 核的框圖。圖IA-B中的實(shí)線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄 存器重命名的、無序發(fā)布/執(zhí)行流水線和核??紤]到有序方面是無序方面的子集,將描述無 序方面。
[0031] 在圖IA中,處理器流水線100包括取出級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配 級(jí)108、重命名級(jí)110、調(diào)度(也被稱為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí) 114、執(zhí)行級(jí)116、寫回/存儲(chǔ)器寫入級(jí)118、異常處理級(jí)122和提交級(jí)124。
[0032] 圖IB示出處理器核190,其包括耦合到執(zhí)行引擎單元130的前端單元150,且執(zhí)行 引擎單元和前端單元兩者都耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算(RISC) 核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或替代核類型。作為又一選項(xiàng), 核190可以是專用核,諸如例如,網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理 單元(GPGPU)核、圖形核等。
[0033] 前端單元130包括親合到指令高速緩存單元134的分支預(yù)測(cè)單元132,該指令高 速緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 136,該指令轉(zhuǎn)換后備緩沖器耦合到指令取出 單元138,指令取出單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,并生 成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè) 微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令或其他控制信號(hào)作為輸出。解碼單元140可使用 各種不同的機(jī)制來實(shí)現(xiàn)。合適機(jī)制的示例包括但不僅限于,查找表、硬件實(shí)現(xiàn)、可編程邏輯 陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核190包括微代碼ROM或存儲(chǔ) 用于某些宏指令的微代碼的其他介質(zhì)(例如,在解碼單元140中或以其他方式在前端單元 130內(nèi))。解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
[0034] 執(zhí)行引擎單元150包括耦合到引退單元152和一個(gè)或多個(gè)調(diào)度器單元的集合154 的重命名/分配器單元156。調(diào)度器單元156表示任意數(shù)量的不同調(diào)度器,包括預(yù)留站、中 央指令窗等。調(diào)度器單元156耦合到物理寄存器組單元158。物理寄存器組單元158中的 每一個(gè)表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一個(gè)或多個(gè)不同的數(shù) 據(jù)類型,例如,標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn),狀態(tài)(例如, 作為要被執(zhí)行的下一條指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元 158包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供 架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元158被引退單元154 覆蓋,以示出可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用重排序緩沖器和引 退寄存器組;使用未來文件(futurefile)、歷史緩沖器、引退寄存器組;使用寄存器映射 和寄存器池等)。引退單元154和物理寄存器組單元158耦合至執(zhí)行群集160。執(zhí)行群集 160包括一個(gè)或多個(gè)執(zhí)行單元的集合162以及一個(gè)或多個(gè)存儲(chǔ)器訪問單元的集合164。執(zhí)行 單元162可執(zhí)行多種操作(例如,移位、加法、減法、乘法),并且可對(duì)多種數(shù)據(jù)類型(例如, 標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行操作。盡管一些實(shí)施例可以包括 專用于特定功能或功能集的多個(gè)執(zhí)行單元,但其他實(shí)施例可包括全部執(zhí)行所有功能的僅一 個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158、執(zhí)行群集160被示 出為可能是復(fù)數(shù)個(gè),因?yàn)槟承?shí)施例為某些數(shù)據(jù)/操作類型創(chuàng)建了諸個(gè)單獨(dú)流水線(例如, 均具有各自調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/ 緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或存儲(chǔ)器訪問流水線,以及在單獨(dú) 的存儲(chǔ)器訪問流水線的情況下特定實(shí)施例被實(shí)現(xiàn)為僅僅該流水線的執(zhí)行群集具有存儲(chǔ)器 訪問單元164)。還應(yīng)當(dāng)理解,在使用分開的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可 以是無序發(fā)布/執(zhí)行的,并且其余流水線可以是有序發(fā)布/執(zhí)行的。
[0035] 存儲(chǔ)器訪問單元的集合164f禹合到存儲(chǔ)器單元170,該存儲(chǔ)器單元包括親合到數(shù) 據(jù)高速緩存單元172的數(shù)據(jù)TLB單元174,其中,數(shù)據(jù)高速緩存單元耦合到第二級(jí)(L2)高速 緩存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元164可包括加載單元、存儲(chǔ)地址單 元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均親合至存儲(chǔ)器單元170中的數(shù)據(jù)TLB單元172。指令高 速緩存單元134還耦合到存儲(chǔ)器單元170中的第二級(jí)(L2)高速緩存單元176。L2高速緩 存單元176耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。
[0036] 作為示例,示例性的寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可按如下方式實(shí)現(xiàn) 流水線100 :1)指令取出138執(zhí)行取出和長(zhǎng)度解碼級(jí)102和104 ;2)解碼單元140執(zhí)行解 碼級(jí)106 ;3)重命名/分配器單元152執(zhí)行分配級(jí)108和重命名級(jí)110 ;4)調(diào)度器單元156 執(zhí)行調(diào)度級(jí)112 ;5)物理寄存器組單元158和存儲(chǔ)器單元170執(zhí)行寄存器讀取/存儲(chǔ)器讀 取級(jí)114 ;執(zhí)行群集160執(zhí)行執(zhí)行級(jí)116 ;6)存儲(chǔ)器單元170和物理寄存器組單元158執(zhí)行 寫回/存儲(chǔ)器寫入級(jí)118 ;7)各單元可牽涉到異常處理級(jí)122 ;以及8)引退單元154和物 理寄存器組單元158執(zhí)行提交級(jí)124。
[0037] 核190可支持一個(gè)或多個(gè)指令集(例如,x86指令集(在更新的版本中加入了一 些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼維爾 市的ARM控股公司的ARM指令集(具有諸如NEON之類的可選附加擴(kuò)展)),其中包括本文中 描述的各指令。在一個(gè)實(shí)施例中,核190包括用于支持緊縮數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、 AVX2和/或先前描述的一些形式的通用向量友好指令格式(U= 0和/或U= 1))的邏輯, 從而允許由許多多媒體應(yīng)用使用的操作能夠使用緊縮數(shù)據(jù)來執(zhí)行。
[0038] 應(yīng)當(dāng)理解,核可支持多線程操作(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合), 并且可以按各種方式來完成該多線程操作,各種方式包括時(shí)分多線程操作、同步多線程操 作(其中,單個(gè)物理核為物理核正在同步進(jìn)行多線程操作的多個(gè)線程中的每一個(gè)線程提供 邏輯核)或其組合(例如,時(shí)分取出和解碼以及此后諸如利用Intel?,超線程技術(shù)的同步多 線程操作)。
[0039] 盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可在有序架構(gòu)中 使用寄存器重命名。盡管所示出的處理器的實(shí)施例還包括分開的指令和數(shù)據(jù)高速緩存單元 134/174以及共享L2高速緩存單元176,但替代實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的單 個(gè)內(nèi)部高速緩存,諸如例如一級(jí)(LI)內(nèi)部高速緩存或多個(gè)級(jí)別的內(nèi)部高速緩存。在一些實(shí) 施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部的高速緩存的組合。 或者,所有高速緩存都可在核和/或處理器的外部。
[0040] 圖2是根據(jù)本發(fā)明的多個(gè)實(shí)施例的、可能具有多于一個(gè)的核、可能具有集成存儲(chǔ) 器控制器、并且可能具有集成圖形器件的處理器200的框圖。圖2中的實(shí)線框示出具有單 個(gè)核202A、系統(tǒng)代理210、一個(gè)或多個(gè)總線控制器單元216的集合的處理器200,而虛線框的 可選附加示出具有多個(gè)核202A-N、系統(tǒng)代理單元210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單 元214的集合以及專用邏輯208的替代處理器200。
[0041] 因此,處理器200的不同實(shí)現(xiàn)可包括:1)CPU,其中專用邏輯208是集成圖形和/或 科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核202A-N是一個(gè)或多個(gè)通用核(例 如,通用有序核、通用無序核、這兩者的組合);2)協(xié)處理器,其中核202A-N是旨在主要用于 圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核202A-N是大量通用有 序核。因此,處理器200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥鳎搶S锰幚砥髦T如例 如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集 成眾核(MIC)協(xié)處理器(包括30個(gè)或更多核)、嵌入式處理器等。該處理器可以被實(shí)現(xiàn)在 一個(gè)或多個(gè)芯片上。處理器200可以是一個(gè)或多個(gè)基板的一部分,并且/或者可使用多種 工藝技術(shù)(諸如,BiCMOS、CMOS、或NMOS)中的任意技術(shù)被實(shí)現(xiàn)在一個(gè)或多個(gè)基板上。
[0042] 存儲(chǔ)器層次結(jié)構(gòu)包括核內(nèi)的一個(gè)或多個(gè)層級(jí)的高速緩存、一組或一個(gè)或多個(gè)共享 高速緩存單元206以及耦合至集成存儲(chǔ)器控制器單元的集合214的外部存儲(chǔ)器(未示出)。 共享高速緩存單元的集合206可包括一個(gè)或多個(gè)中級(jí)高速緩存,諸如,第二級(jí)(L2)、第三級(jí) (L3)、第四級(jí)(L4)或其他層級(jí)的高速緩存、末級(jí)高速緩存(LLC)和/或以上的組合。盡管在 一個(gè)實(shí)施例中,基于環(huán)的互連單元212將集成圖形邏輯208、共享高速緩存單元的集合206 以及系統(tǒng)代理單元210/集成存儲(chǔ)器控制器單元214互連,但替代實(shí)施例可使用任何數(shù)量的 公知技術(shù)來將此類單元互連。在一個(gè)實(shí)施例中,可維護(hù)一個(gè)或多個(gè)高速緩存單元206和核 202A-N之間的一致性(coherency)。
[0043] 在一些實(shí)施例中,一個(gè)或多個(gè)核202A-N能夠進(jìn)行多線程操作。系統(tǒng)代理210包括 協(xié)調(diào)和操作核202A-N的那些組件。系統(tǒng)代理單元210可包括例如功率控制單元(P⑶)和 顯示單元。PCU可以是或可包括調(diào)節(jié)核202A-N和集成圖形邏輯208的功率狀態(tài)所需的邏輯 和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0044] 核202A-N在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;也就是說,這些核202A-N中 的兩個(gè)或更多個(gè)核可能能夠執(zhí)行相同的指令集,而其他核可能能夠執(zhí)行該指令集的僅僅子 集或不同的指令集。
[0045] 圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對(duì)膝上型計(jì)算機(jī)、臺(tái)式機(jī)、手持 PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù) 字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微
當(dāng)前第1頁(yè)1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1