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