在使用共享虛擬存儲器的處理器中加速操作的裝置和方法
【專利摘要】描述了用于將前端核耦合到加速器組件(諸如圖形加速器)的裝置和方法。例如,描述了一種裝置,包括:加速器,包括一個或多個執(zhí)行單元(EU)用于執(zhí)行特定的指令集;以及前端核,包括通信耦合到加速器的轉(zhuǎn)換后備緩沖器(TLB),并且向加速器提供存儲器訪問服務,存儲器訪問服務包括響應于加速器需要訪問系統(tǒng)存儲器,代表加速器執(zhí)行TLB查找操作以將虛擬地址映射到物理地址。
【專利說明】在使用共享虛擬存儲器的處理器中加速操作的裝置和方法發(fā)明領域
[0001]本發(fā)明的實施例一般涉及計算機系統(tǒng)的領域。更具體地,本發(fā)明的實施例涉及在使用共享虛擬存儲器的處理器中加速操作的裝置和方法。
【背景技術(shù)】
[0002]指令集,或指令集架構(gòu)(ISA)是涉及編程的計算機架構(gòu)的一部分,并可以包括原生數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu)、中斷、異常處理、以及外部輸入和輸出(I/o)操作。術(shù)語指令在本申請中一般表示宏指令,宏指令是被提供給處理器(或指令轉(zhuǎn)換器,該指令轉(zhuǎn)換器(例如,利用靜態(tài)二進制轉(zhuǎn)換、包括動態(tài)編譯的動態(tài)二進制轉(zhuǎn)換)轉(zhuǎn)換、變形、仿真或以其他方式將指令轉(zhuǎn)換成將由處理器處理的一個或多個其他指令)以供執(zhí)行的指令——作為對比,微指令或微操作(“微操作”或“uops”)一一是處理器的解碼器解碼宏指令的結(jié)果。
[0003]ISA與微架構(gòu)不同,微架構(gòu)是實現(xiàn)該指令集的處理器的內(nèi)部設計。具有不同微架構(gòu)的處理器可共享共同的指令集。例如,INTEL?奔騰四(Pentium 4)處理器、Intel?酷睿(Core?)處理器、以及來自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導體有限公司(Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴展),但具有不同的內(nèi)部設計。例如,ISA的相同寄存器架構(gòu)可以在不同的微架構(gòu)中使用公知的技術(shù)以不同方法來實現(xiàn),公知的技術(shù)包括專用物理寄存器、使用寄存器重命名機制(例如,使用寄存器別名表(RAT)、重排序緩沖器(R0B)、以及引退寄存器組;使用多個寄存器映射和寄存器池)的一個或多個動態(tài)分配物理寄存器,等等。除非另行指出,術(shù)語寄存器架構(gòu)、寄存器組和寄存器在本文中用于指代對軟件/編程者可見的寄存器以及指令指定寄存器的方式。在需要特殊性的場合,將使用定語邏輯的、架構(gòu)的或軟件可見的來指示寄存器架構(gòu)中的寄存器/寄存器組,同時不同的定語將用于指示給定微架構(gòu)中的寄存器(例如物理寄存器、重排序緩沖器、引退寄存器、寄存器池)。
[0004]指令集包括一個或多個指令格式。給定指令格式定義多個字段(位的數(shù)量、位的位置等)以指定將要被執(zhí)行的操作(操作碼)以及該操作將要執(zhí)行的操作數(shù)等等。通過定義指令模板(或子格式),一些指令格式被進一步分解。例如,可將給定指令格式的指令模板定義成具有該指令格式的字段的不同子集(所包括的字段通常是相同順序,但至少一些由于包括更少的字段而具有不同的位位置)和/或定義成對給定字段的解釋不同。因此,利用給定指令格式(而且如果定義,則按照該指令格式的指令模板中的給定一個模板)來表達ISA的每個指令,并且ISA的每個指令包括用于指定其操作和操作數(shù)的字段。例如,示例性的ADD (加法)指令具有特定的操作碼和指令格式,該指令格式包括用于指定該操作碼的操作碼字段和用于選擇操作數(shù)(源I/目的地和源2)的操作數(shù)字段;并且該ADD指令在指令流中的出現(xiàn)將具有在操作數(shù)字段中的特定內(nèi)容,該特定內(nèi)容選擇特定操作數(shù)。
[0005]科學應用、金融應用、自動向量化通用應用、RMS(識別、挖掘和合成)應用以及視覺和多媒體應用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻處理)通常需要對大量數(shù)據(jù)項執(zhí)行相同的操作(被稱為“數(shù)據(jù)并行性”)。單指令多數(shù)據(jù)(SMD)指的是使得處理器對多個數(shù)據(jù)項執(zhí)行一操作的一種類型的指令。SMD技術(shù)尤其適用于將寄存器中的多個位邏輯地劃分成多個固定大小的數(shù)據(jù)元素的處理器,其中每個數(shù)據(jù)元素表示單獨的值。例如,可將256位寄存器中的位指定為要進行操作的源操作數(shù),作為4個單獨的64位打包數(shù)據(jù)元素(四字(Q)尺寸數(shù)據(jù)元素)、8個單獨的32位打包數(shù)據(jù)元素(雙字(D)尺寸數(shù)據(jù)元素)、16個單獨的16位打包數(shù)據(jù)元素(字(W)尺寸數(shù)據(jù)元素)、或32個單獨的8位數(shù)據(jù)元素(字節(jié)(B)尺寸數(shù)據(jù)元素)。該數(shù)據(jù)類型可被稱為打包數(shù)據(jù)類型或向量數(shù)據(jù)類型,并且該數(shù)據(jù)類型的操作數(shù)被稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。換句話說,打包數(shù)據(jù)項或向量指的是打包數(shù)據(jù)元素的序列,而打包數(shù)據(jù)操作數(shù)或向量操作數(shù)是SIMD指令(或稱為打包數(shù)據(jù)指令或向量指令)的源操作數(shù)或目的地操作數(shù)。
[0006]作為示例,一種類型的SIMD指令指定了將要以縱向方式對兩個源向量操作數(shù)執(zhí)行的單個向量操作,用于生成具有相同尺寸的、具有相同數(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ù)元素。兩個源向量操作數(shù)中的相同位位置中的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(也稱為對應的數(shù)據(jù)元素;即,每個源操作數(shù)的數(shù)據(jù)元素位置O中的數(shù)據(jù)元素相對應,每個源操作數(shù)中的數(shù)據(jù)元素位置I中的數(shù)據(jù)元素相對應,以此類推)。對這些源數(shù)據(jù)元素對中的每一個分別執(zhí)行該SMD指令指定的操作,以產(chǎn)生匹配數(shù)量的結(jié)果數(shù)據(jù)元素,并且因此每一對源數(shù)據(jù)元素具有相應的結(jié)果數(shù)據(jù)元素。由于該操作是縱向的,且由于結(jié)果向量操作數(shù)是相同尺寸、具有相同數(shù)量的數(shù)據(jù)元素并且結(jié)果數(shù)據(jù)元素按照與源向量操作數(shù)相同的數(shù)據(jù)元素順序被存儲,所以結(jié)果數(shù)據(jù)元素處于結(jié)果向量操作數(shù)中與它們在源向量操作數(shù)中的相應源數(shù)據(jù)元素對相同的位位置中。除了這種示例性類型的SMD指令之外,存在各種各樣其他類型的SMD指令(例如僅具有一個源向量操作數(shù)或具有超過兩個源向量操作數(shù)、以橫向方式操作、產(chǎn)生不同尺寸的結(jié)果向量操作數(shù)、具有不同尺寸的數(shù)據(jù)元素和/或具有不同的數(shù)據(jù)元素次序的SMD指令)。應當理解,術(shù)語目的地向量操作數(shù)(或目的地操作數(shù))被定義為執(zhí)行由指令指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲在一位置處(可以是由該指令指定的寄存器或存儲器地址處),使得它可作為源操作數(shù)由另一指令訪問(通過該另一指令指定同一位置)。
[0007]諸如具有包括x86、MMX?、流式 SMD 擴展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的丨ntel? Core?處理器所采用的SMD技術(shù)之類的SMD技術(shù)已經(jīng)實現(xiàn)了應用性能的重大改進。已經(jīng)推出和/或發(fā)布了被稱為高級向量擴展(AVX) (AVX1和AVX2)和利用向量擴展(VEX)編碼方案的附加的SIMD擴展集(參見例如2011年10月的Intelu 64
和IA-32架構(gòu)軟件開發(fā)者手冊;以及參見2011年6月的Intelk高級向量擴展編程參考)。
[0008]附圖簡述
[0009]以下描述和附圖用于示出本發(fā)明的實施例。在附圖中:
[0010]圖1A是示出根據(jù)本發(fā)明的實施例的示例性有序流水線以及示例性寄存器重命名的無序發(fā)布/執(zhí)行流水線兩者的框圖;
[0011]圖1B是示出根據(jù)本發(fā)明的各實施例的要包括在處理器中的有序架構(gòu)核的示例性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0012]圖2是根據(jù)本發(fā)明的實施例的具有集成的存儲器控制器和圖形器件的單核處理器和多核處理器的框圖。
[0013]圖3示出根據(jù)本發(fā)明一個實施例的系統(tǒng)的框圖;
[0014]圖4示出了根據(jù)本發(fā)明的實施例的第二系統(tǒng)的框圖;
[0015]圖5示出了根據(jù)本發(fā)明的實施例的第三系統(tǒng)的框圖;
[0016]圖6示出了根據(jù)本發(fā)明的實施例的片上系統(tǒng)(SoC)的框圖;
[0017]圖7是根據(jù)本發(fā)明的實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進制指令轉(zhuǎn)換成目標指令集中的二進制指令的框圖。
[0018]圖8示出用于在中央處理單元和圖形處理單元共享虛擬存儲器的系統(tǒng)處理頁錯誤的當前實現(xiàn);
[0019]圖9示出包括加速器組件和前端核的本發(fā)明的一個實施例;
[0020]圖10A-C示出根據(jù)本發(fā)明的不同實施例的方法;
[0021]圖1lA是根據(jù)本發(fā)明的實施例的單個處理器核以及它與管芯上互連網(wǎng)絡的連接及其二級(L2)高速緩存的本地子集的框圖;以及
[0022]圖1lB是根據(jù)本發(fā)明的實施例的圖1lA中處理器核的一部分的展開圖。
[0023]詳細描述
[0024]示例性處理器架構(gòu)和數(shù)據(jù)類型
[0025]圖1A是示出根據(jù)本發(fā)明的實施例的示例性有序流水線和示例性的寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。圖1B是示出根據(jù)本發(fā)明的各實施例的要包括在處理器中的有序架構(gòu)核的示例性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖1A-B中的實線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器重命名的、無序發(fā)布/執(zhí)行流水線和核。給定有序方面是無序方面的子集的情況下,將描述無序方面。
[0026]在圖1A中,處理器流水線100包括取出級102、長度解碼級104、解碼級106、分配級108、重命名級110、調(diào)度(也稱為分派或發(fā)布)級112、寄存器讀取/存儲器讀取級114、執(zhí)行級116、寫回/存儲器寫入級118、異常處理級122和提交級124。
[0027]圖1B示出了包括耦合到執(zhí)行引擎單元150的前端單元130的處理器核190,且執(zhí)行引擎單元和前端單元兩者都耦合到存儲器單元170。核190可以是精簡指令集計算(RISC)核、復雜指令集計算(CISC)核、超長指令字(VLIW)核或混合或替代核類型。作為又一選項,核190可以是專用核,諸如例如網(wǎng)絡或通信核、壓縮引擎、協(xié)處理器核、通用計算圖形處理器單元(GPGPU)核、或圖形核等等。
[0028]前端單元130包括稱合到指令高速緩存單元134的分支預測單元132,該指令高速緩存單元耦合到指令的地址轉(zhuǎn)換后備緩沖器(TLB) 136,該轉(zhuǎn)換后備緩沖器耦合到指令取出單元138,指令取出單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導出的一個或多個微操作、微代碼進入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元140可使用各種不同的機制來實現(xiàn)。合適的機制的示例包括但不限于查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核190包括(例如,在解碼單元140中或否則在前端單元130內(nèi)的)用于存儲某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
[0029]執(zhí)行引擎單元150包括重命名/分配器單元152,該重命名/分配器單元152耦合至引退單元154和一個或多個調(diào)度器單元156的集合。調(diào)度器單元156表示任何數(shù)目的不同調(diào)度器,包括預留站、中央指令窗等。調(diào)度器單元156耦合到物理寄存器組單元158。每個物理寄存器組單元158表示一個或多個物理寄存器組,其中不同的物理寄存器組存儲一種或多種不同的數(shù)據(jù)類型,諸如標量整數(shù)、標量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器組單元158包括向量寄存器單元、寫掩碼寄存器單元和標量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元158與引退單元154重疊以示出可以用來實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用重新排序緩沖器和引退寄存器組;使用將來的文件、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器池等等)。引退單元154和物理寄存器組單元158耦合到執(zhí)行群集160。執(zhí)行群集160包括一個或多個執(zhí)行單元162的集合和一個或多個存儲器訪問單元164的集合。執(zhí)行單元162可以對各種類型的數(shù)據(jù)(例如,標量浮點、打包整數(shù)、打包浮點、向量整型、向量浮點)執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能集合的多個執(zhí)行單元,但其他實施例可包括全部執(zhí)行所有功能的僅一個執(zhí)行單元或多個執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158和執(zhí)行群集160被示為可能有多個,因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開的流水線(例如,標量整型流水線、標量浮點/打包整型/打包浮點/向量整型/向量浮點流水線,和/或各自具有其自己的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的存儲器訪問流水線一以及在分開的存儲器訪問流水線的情況下,實現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲器訪問單元164的某些實施例)。還應當理解,在使用分開的流水線的情況下,這些流水線中的一個或多個可以為無序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0030]存儲器訪問單元164的集合耦合到存儲器單元170,該存儲器單元包括耦合到數(shù)據(jù)高速緩存單元174的數(shù)據(jù)的地址TLB單元172,其中數(shù)據(jù)高速緩存單元耦合到二級(L2)高速緩存單元176。在一個示例性實施例中,存儲器訪問單元164可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元170中的數(shù)據(jù)TLB單元172。指令高速緩存單元134還耦合到存儲器單元170中的第二級(L2)高速緩存單元176。L2高速緩存單元176耦合到一個或多個其他級的高速緩存,并最終耦合到主存儲器。
[0031]作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實現(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。
[0032]核190可支持一個或多個指令集(例如,x86指令集(具有與較新版本一起添加的一些擴展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼維爾市的ARM控股的ARM指令集(具有諸如NEON等可選附加擴展)),其中包括本文中描述的各指令。在一個實施例中,核190包括用于支持打包數(shù)據(jù)指令集擴展(例如,AVX1、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U = O和/或U= I))的邏輯,從而允許很多多媒體應用使用的操作能夠使用打包數(shù)據(jù)來執(zhí)行。
[0033]應當理解,核可支持多線程化(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程化,此各種方式包括時分多線程化、同步多線程化(其中單個物理核為物理核正在同步多線程化的各線程中的每一個線程提供邏輯核)、或其組合(例如,時分取出和解碼以及此后諸如用Intel?超線程化技術(shù)來同步多線程化)。
[0034]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應當理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所示出的處理器的實施例還包括分開的指令和數(shù)據(jù)高速緩存單元134/174以及共享L2高速緩存單元176,但替代實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如一級(LI)內(nèi)部高速緩存或多個級別的內(nèi)部高速緩存。在一些實施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。
[0035]圖2是根據(jù)本發(fā)明的各實施例可能具有一個以上核、可能具有集成存儲器控制器、以及可能具有集成圖形器件的處理器200的框圖。圖2中的實線框示出具有單個核202A、系統(tǒng)代理210、一個或多個總線控制器單元216的集合的處理器200,而虛線框的可選附加示出具有多個核202A-N、系統(tǒng)代理單元210中的一個或多個集成存儲器控制器單元214的集合以及專用邏輯208的替代處理器200。
[0036]因此,處理器200的不同實現(xiàn)可包括:I) 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或NMOS等的多個加工技術(shù)中的任何一個技術(shù)將處理器200實現(xiàn)在一個或多個襯底上。
[0037]存儲器層次結(jié)構(gòu)包括在各核內(nèi)的一個或多個級別的高速緩存、一個或多個共享高速緩存單元206的集合、以及耦合至集成存儲器控制器單元214的集合的外部存儲器(未示出)。該共享高速緩存單元206的集合可以包括一個或多個中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。盡管在一個實施例中,基于環(huán)的互連單元212將集成圖形邏輯208、共享高速緩存單元206的集合以及系統(tǒng)代理單元210/集成存儲器控制器單元214互連,但替代實施例可使用任何數(shù)量的公知技術(shù)來將這些單元互連。在一個實施例中,可以維護一個或多個高速緩存單元206和核202A-N之間的一致性(coherency)。
[0038]在一些實施例中,核202A-N中的一個或多個核能夠多線程化。系統(tǒng)代理210包括協(xié)調(diào)和操作核202A-N的那些組件。系統(tǒng)代理單元210可包括例如功率控制單元(P⑶)和顯示單元。PCU可以是或包括用于調(diào)整核202A-N和集成圖形邏輯208的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。
[0039]核202A-N在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;8卩,這些核202A-N中的兩個或更多個核可能能夠執(zhí)行相同的指令集,而其他核可能能夠執(zhí)行該指令集的僅僅子集或不冋的指令集。
[0040]圖3-6是示例性計算機架構(gòu)的框圖。本領域已知的對膝上型設備、臺式機、手持PC、個人數(shù)字助理、工程工作站、服務器、網(wǎng)絡設備、網(wǎng)絡集線器、交換機、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設備、視頻游戲設備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設備以及各種其他電子設備的其他系統(tǒng)設計和配置也是合適的。一般地,能夠包含本文中所公開的處理器和/或其它執(zhí)行邏輯的多個系統(tǒng)和電子設備一般都是合適的。
[0041]現(xiàn)在參考圖3,所示出的是根據(jù)本發(fā)明一個實施例的系統(tǒng)300的框圖。系統(tǒng)300可以包括一個或多個處理器310、315,這些處理器耦合到控制器中樞320。在一個實施例中,控制器中樞320包括圖形存儲器控制器中樞(GMCH) 390和輸入/輸出中樞(1H) 350 (其可以在分開的芯片上);GMCH 390包括存儲器和圖形控制器,存儲器340和協(xié)處理器345耦合到該存儲器和圖形控制器;1H 350將輸入/輸出(I/O)設備360耦合到GMCH390?;蛘撸鎯ζ骱蛨D形控制器中的一個或兩者可以被集成在處理器內(nèi)(如本文中所描述的),存儲器340和協(xié)處理器345直接耦合到處理器310以及控制器中樞320,控制器中樞320與1H350處于單個芯片中。
[0042]附加處理器315的任選性質(zhì)用虛線表示在圖3中。每一處理器310、315可包括本文中描述的處理核中的一個或多個,并且可以是處理器200的某一版本。
[0043]存儲器340可以是例如動態(tài)隨機存取存儲器(DRAM)、相變存儲器(PCM)或這兩者的組合。對于至少一個實施例,控制器中樞320經(jīng)由諸如前端總線(FSB)之類的多分支總線、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接395與處理器310、315進行通信。
[0044]在一個實施例中,協(xié)處理器345是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個實施例中,控制器中樞320可以包括集成圖形加速器。
[0045]在物理資源310、1315之間可以存在包括架構(gòu)、微架構(gòu)、熱、和功耗特征等的一系列品質(zhì)度量方面的各種差異。
[0046]在一個實施例中,處理器310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可嵌入在這些指令中。處理器310將這些協(xié)處理器指令識別為應當由附連的協(xié)處理器345執(zhí)行的類型。因此,處理器310在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)布到協(xié)處理器345。協(xié)處理器345接受并執(zhí)行所接收的協(xié)處理器指令。
[0047]現(xiàn)在參考圖4,所示為根據(jù)本發(fā)明的一實施例的更具體的第一示例性系統(tǒng)400的框圖。如圖4所示,多處理器系統(tǒng)400是點對點互連系統(tǒng),并包括經(jīng)由點對點互連450耦合的第一處理器470和第二處理器480。處理器470和480中的每一個都可以是處理器200的某一版本。在本發(fā)明的一個實施例中,處理器470和480分別是處理器310和315,而協(xié)處理器438是協(xié)處理器345。在另一實施例中,處理器470和480分別是處理器310和協(xié)處理器345。
[0048]處理器470和480被示為分別包括集成存儲器控制器(MC)單元472和482。處理器470還包括作為其總線控制器單元的一部分的點對點(P-P)接口 476和478 ;類似地,第二處理器480包括點對點接口 486和488。處理器470、480可以使用點對點(P-P)電路478、488經(jīng)由P-P接口 450來交換信息。如圖4所示,IMC 472和482將各處理器耦合至相應的存儲器,即存儲器432和存儲器434,這些存儲器可以是本地附連至相應的處理器的主存儲器的部分。
[0049]處理器470、480可各自經(jīng)由使用點對點接口電路476、494、486、498的各個P-P接口 452、454與芯片組490交換信息。芯片組490可以可選地經(jīng)由高性能接口 439與協(xié)處理器438交換信息。在一個實施例中,協(xié)處理器438是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0050]共享高速緩存491可以被包括在任一處理器之內(nèi),或被包括在兩個處理器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0051]芯片組490可經(jīng)由接口 496耦合至第一總線416。在一個實施例中,第一總線416可以是外圍組件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0052]如圖4所示,各種I/O設備414可以連同總線橋418耦合到第一總線416,總線橋?qū)⒌谝豢偩€416耦合至第二總線420。在一個實施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速器(諸如例如圖形加速器或數(shù)字信號處理器(DSP)單元)、現(xiàn)場可編程門陣列或任何其他處理器的一個或多個附加處理器415耦合到第一總線416。在一個實施例中,第二總線420可以是低引腳計數(shù)(LPC)總線。各種設備可以被耦合至第二總線420,在一個實施例中這些設備包括例如鍵盤/鼠標422、通信設備427以及諸如可包括指令/代碼和數(shù)據(jù)430的盤驅(qū)動器或其它大容量存儲設備的存儲單元428。此外,音頻I/O 424可以被耦合至第二總線420。注意,其它架構(gòu)是可能的。例如,代替圖4的點對點架構(gòu),系統(tǒng)可以實現(xiàn)多分支總線或其它這類架構(gòu)。
[0053]現(xiàn)在參考圖5,所示為根據(jù)本發(fā)明的實施例的更具體的第二示例性系統(tǒng)500的框圖。圖4和圖5中的相同部件用相同附圖標記表示,并從圖5中省去了圖4中的某些方面,以避免使圖5的其它方面變得模糊。
[0054]圖5示出處理器470、480可分別包括集成存儲器和I/O控制邏輯(“CL”)472和482。因此,CL 472、482包括集成存儲器控制器單元并包括I/O控制邏輯。圖5不僅示出存儲器432、434耦合至CL 472、482,而且還示出I/O設備514也耦合至控制邏輯472、482。傳統(tǒng)I/O設備515被耦合至芯片組490。
[0055]現(xiàn)在參照圖6,所示出的是根據(jù)本發(fā)明一個實施例的SoC 600的框圖。在圖2中,相似的部件具有同樣的附圖標記。另外,虛線框是更先進的SoC的可選特征。在圖6中,互連單元602被耦合至:應用處理器610,該應用處理器包括一個或多個核202A-N的集合以及共享高速緩存單元206 ;系統(tǒng)代理單元210 ;總線控制器單元216 ;集成存儲器控制器單元214 ;—組或一個或多個協(xié)處理器620,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機存取存儲器(SRAM)單元630 ;直接存儲器存取(DMA)單元632 ;以及用于耦合至一個或多個外部顯示器的顯示單元640。在一個實施例中,協(xié)處理器620包括專用處理器,諸如例如網(wǎng)絡或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。該協(xié)處理器或者支持與應用處理器相同的ISA,或者具有控制指令或控制寄存器接口的不同類型和方法。
[0056]本文公開的機制的各實施例可以被實現(xiàn)在硬件、軟件、固件或這些實現(xiàn)方法的組合中。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備。
[0057]可將程序代碼(諸如圖4中示出的代碼430)應用于輸入指令,以執(zhí)行本文描述的各功能并生成輸出信息。可以按已知方式將輸出信息應用于一個或多個輸出設備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0058]程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與處理系統(tǒng)通信。在需要時,也可用匯編語言或機器語言來實現(xiàn)程序代碼。事實上,本文中描述的機制不限于任何特定編程語言的范圍。在任一情形下,該語言可以是編譯語言或解釋語言。
[0059]至少一個實施例的一個或多個方面可以由存儲在機器可讀介質(zhì)上的表示性指令來實現(xiàn),指令表示處理器中的各種邏輯,指令在被機器讀取時使得該機器制作用于執(zhí)行本文所述的技術(shù)的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機器可讀介質(zhì)上,并被提供給多個客戶或生產(chǎn)設施以加載到實際制造該邏輯或處理器的制造機器中。
[0060]這樣的機器可讀存儲介質(zhì)可以包括但不限于通過機器或設備制造或形成的物品的非瞬態(tài)的有形安排,其包括存儲介質(zhì),諸如:硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(CD-ROM)、緊致盤可重寫(CD-RW)以及磁光盤;半導體器件,例如只讀存儲器(ROM)、諸如動態(tài)隨機存取存儲器(DRAM)和靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、閃存、電可擦除可編程只讀存儲器(EEPROM);相變存儲器(PCM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。
[0061]因此,本發(fā)明的各實施例還包括非瞬態(tài)的有形機器可讀介質(zhì),該介質(zhì)包含指令或包含設計數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這些實施例也被稱為程序產(chǎn)品。
[0062]在一些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進制變換、包括動態(tài)編譯的動態(tài)二進制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上且部分在處理器外。
[0063]圖7是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進制指令轉(zhuǎn)換成目標指令集中的二進制指令的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代,該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實現(xiàn)。圖7示出可以使用x86編譯器704來編譯利用高級語言702的程序,以生成可以由具有至少一個x86指令集核的處理器716原生執(zhí)行的x86 二進制代碼706。具有至少一個x86指令集核的處理器716表示任何處理器,這些處理器能通過兼容地執(zhí)行或以其他方式處理以下內(nèi)容來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指令集核的指令集的本質(zhì)部分,或2)目標為在具有至少一個x86指令集核的英特爾處理器上運行的應用或其它程序的目標代碼版本,以便取得與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器704表示用于生成x86 二進制代碼706 (例如,目標代碼)的編譯器,該二進制代碼706可通過或不通過附加的鏈接處理在具有至少一個x86指令集核的處理器716上執(zhí)行。類似地,圖7示出可以使用替代的指令集編譯器708來編譯利用高級語言702的程序,以生成可以由不具有至少一個x86指令集核的處理器714(例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集、和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執(zhí)行的替代指令集二進制代碼710。指令轉(zhuǎn)換器712被用來將x86 二進制代碼706轉(zhuǎn)換成可以由不具有x86指令集核的處理器714原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代性指令集二進制代碼710相同,因為能夠這樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器712通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設備執(zhí)行x86 二進制代碼706的軟件、固件、硬件或其組合。指令轉(zhuǎn)換器712的二進制代碼或者基于x86指令集或者基于非x86指令集。它表示從x86至替換指令的實際轉(zhuǎn)換,或者發(fā)生在x86處理器上或者在沒有x86支持的處理器上。
[0064]在使用共享虛擬存儲器的處理器中加速操作的裝置和方法
[0065]由本專利申請的受讓人(以及可能的其它人)設計的未來處理器將使用中央處理單元(CPU)和圖形處理單元(GPU)之間的共享虛擬存儲器(SVM)。圖8示出一種這樣的實現(xiàn),其中運行在GPU 820上的代碼——示為用戶空間851內(nèi)的圖形線程(GTHREAD)810——使用運行在CPU 805上的應用801的相同虛擬存儲器。圖8還示出分別在CPU和GPU的內(nèi)核層850內(nèi)執(zhí)行的主機操作系統(tǒng)803和同步邏輯811。
[0066]由GPU 820訪問共享的虛擬存儲器可導致頁錯誤(PF)狀況,例如,如果相應的虛擬頁不存在于系統(tǒng)存儲器(例如,動態(tài)隨機存取存儲器或DRAM)中,或者如果有“訪問權(quán)”違背(例如,當GPU 820試圖寫入“只讀”存儲器頁時)。
[0067]用于解決GPU頁錯誤狀況的當前方案假設GPU生成的頁錯誤被轉(zhuǎn)發(fā)到GPU的驅(qū)動器804,其通過影子(shadow)線程802解決該頁錯誤狀況。影子線程802可通過自身生成相同的頁錯誤以便從其本機操作系統(tǒng)獲取支持或通過經(jīng)由限定的API接入操作系統(tǒng)以便從操作系統(tǒng)獲取用于錯誤存儲器地址訪問的直接支持,來解決該頁錯誤。這種基于驅(qū)動器的頁錯誤處理方案顯著慢于“本機”CPU頁錯誤處理。我們估計以此方式在GPU 820上處理頁錯誤所需的時間大約比在CPU 805上處理頁錯誤慢3倍。該方案還涉及與在CPU上處理GTO錯誤有關的主機CPU開銷。以上指出的性能降低主要由于以下事實引起:不同于視為單個處理器異常的常規(guī)頁錯誤,處理頁錯誤事件。
[0068]以下描述的本發(fā)明的實施例使在具有共享虛擬存儲器(SVM)能力的加速器上(諸如GPU)處理頁錯誤引起的CPU開銷量最小化。另外,這些實施例將本機操作系統(tǒng)(OS)虛擬存儲器支持用于具有SVM能力的設備,而不是使用上述低效的基于驅(qū)動器的機制。
[0069]圖9示出包括前端核851與加速器組件850的本發(fā)明的一個實施例。在一個實施例中,前端核是能夠執(zhí)行本機(例如,x86)操作系統(tǒng)代碼的英特爾架構(gòu)(IA)核(然而本發(fā)明的基本原理不限于IA核)。如說明990所指出的,其標識不同類型組件的填充模式,前端核851和加速器850包括各種硬件數(shù)據(jù)結(jié)構(gòu)、硬件功能單元和軟件(例如,操作系統(tǒng))組件。具體地,所示實施例的前端核851包括轉(zhuǎn)換后備緩沖器(TLB)、高速緩存,加速器的存儲器管理器810使用該高速緩存來提高虛擬地址轉(zhuǎn)換速度。具體地,TLB具有固定數(shù)量的槽,這些槽包含頁表條目,每個條目將虛擬地址映射到物理地址。當試圖訪問虛擬地址空間內(nèi)的具體頁時,存儲器管理器810執(zhí)行所示的TLB查找。如果虛擬至物理映射存在于TLB中,則將物理地址提供給存儲器管理器810,存儲器管理器然后可利用該物理地址訪問存儲器層次結(jié)構(gòu)830。
[0070]如果虛擬至物理映射不存在于TLB 820中,則導致“TLB未命中(miss)”。該TLB服務前端核851和加速器850兩者。在一個實施例中,響應于TLB未命中,存儲器管理器810訪問頁步行器(page walker)模塊823,該模塊向加速器850提供頁步行(walk)服務。頁步行硬件支持可以是前端核851的一部分,且還可由前端核用作其常規(guī)執(zhí)行路徑的一部分。一個選擇包括頁步行硬件支持作為加速器存儲器管理器810的一部分。如本領域的技術(shù)人員所知,頁步行涉及查找(存儲在存儲器830中的)頁表中的地址映射,以確定是否存在映射。在一個實施例中,如果存在一個,則將其寫回到TLB 820。錯誤指令的后續(xù)執(zhí)行將導致TLB命中,且存儲器訪問將如前所述地繼續(xù)。如果映射不存在,則由頁錯誤處理器軟件822重新開始錯誤異常。
[0071]在一個實施例中,TLB否決(shootdown)處理器821也被實現(xiàn)為在前端核851上執(zhí)行的軟件。如本領域的技術(shù)人員所理解的,如果系統(tǒng)組件(例如加速器執(zhí)行單元801-804或另一個前端核)已經(jīng)限制對于存儲器830中包含的特定頁的訪問,則可使用TLB否決操作。在這一情況下,其它加速器/核的TLB必須被沖刷以去除關于該受限制的頁的任何條目(即,使得不允許訪問該頁的其它加速器/核不能這樣做)。這樣做是為了強制TLB用其新屬性(例如,只讀)重新加載該頁。導致其它核的TLB被清除的一個核的動作被稱為“TLB否決”。在一個實施例中,TLB否決由操作系統(tǒng)驅(qū)動,且其主要焦點是將執(zhí)行單元設置在已知狀態(tài),該狀態(tài)不包括對指示存儲器頁的訪問或包括對存儲器的部分訪問,如只讀。在一個實施例中,應有前端核負責具有一種方法以在TLB否決事件期間停止加速器存儲器訪問并在頁表的修改期間將其設置為已知狀態(tài)。
[0072]在一個實施例中,前端核851上執(zhí)行的包括頁錯誤處理器822和TLB否決處理器821的軟件被實現(xiàn)為本機操作系統(tǒng)代碼(例如,如果前端核是因特爾架構(gòu)(IA)核則為X86代碼)。如上所述,該代碼處理頁錯誤并參與操作系統(tǒng)TLB否決過程。此外,在一個實施例中,本機OS代碼調(diào)度加速器上的任務。具體地,OS代碼可調(diào)度將由加速器執(zhí)行單元(EU) 801-804中的一個或多個執(zhí)行的任務。
[0073]在一個實施例中,TLB 820被實現(xiàn)為內(nèi)容可尋址存儲器(CAM),然而本發(fā)明的基本原理不限于任何具體的TLB類型。TLB是本領域技術(shù)人員所公知的組件,因為本文中未詳細描述以免混淆本發(fā)明的基本原理。
[0074]總之,在本發(fā)明的一個實施例中,將輕量的前端核851增加到支持共享的虛擬存儲器(SVM)的每個加速器850。該前端核充當加速器850的存儲器管理單元。在一個實施例中,它作為特殊的CPU(在一個實施例中為英特爾架構(gòu)CPU)對操作系統(tǒng)(OS)是可見的,且能夠運行OS代碼的小子集。
[0075]所示的裝置和方法提供對現(xiàn)有實現(xiàn)的改進,其中通過硬件組件(10MMU2)將MMU服務提供給具有SVM能力的加速器,該硬件組件在設備TLB未命中的情況下執(zhí)行頁步行。在PF的情況下,10MMU2使用中斷通知其驅(qū)動器,該驅(qū)動器解決PF并發(fā)送回響應。如前所述,以此方式利用10MMU2是非常麻煩的且效率低,因此它涉及兩路中斷。
[0076]除了簡化前端核的存儲器管理支持,該核可由操作系統(tǒng)用作假設要運行在加速器上的任何調(diào)度的終點。該方法要求操作系統(tǒng)要知曉加速器的類型并且將把假設要在其加速器上執(zhí)行的任務對準其前端核。為了支持該方法,加速器必須包括用于作為從前端核得出的請求的結(jié)果保存并恢復其上下文的選項。該保存和恢復能力將用作OS任務切換的一部分。
[0077]圖1OA示出根據(jù)本發(fā)明的一個實施例的方法。在1001,前端核通信耦合到加速器。如上所述,一個實施例的前端核執(zhí)行OS代碼的輕量集合,且包括TLB、頁步行模塊、頁錯誤處理器和TLB否決處理器。在1002,由前端核檢測由加速器生成的存儲器訪問操作,該前端核在其TLB中檢查處理存儲器訪問所需的條目。如果條目存在(在1003確定),則在1004,將TLB映射提供給加速器。如果否,則在1006,前端核將頁步行器服務提供給加速器以確定虛擬至物理映射。在任一情況下,在1005,加速器使用前端核提供的映射訪問存儲器。
[0078]圖1OB示出實現(xiàn)在圖9所示的架構(gòu)上的用于處理TLB否決操作的示例性方法。在1011,前端核通信耦合到加速器。如上所述,一個實施例的前端核執(zhí)行OS代碼的輕量集合,且包括TLB、頁步行模塊、頁錯誤處理器和TLB否決處理器。在1012,由前端核檢測由加速器生成的存儲器訪問操作,該前端核檢查其TLB以找到處理存儲器訪問所需的條目。如果在1013檢測到TLB否決操作,則在1016,沖刷加速器/核的TLB以去除受限制的頁的任何條目。在1014,受限制的頁的TLB映射或當前加速器被授權(quán)訪問的受限制的頁的TLB映射被提供給請求加速器。在1015,加速器使用前端核提供的映射訪問存儲器。
[0079]圖1OC示出實現(xiàn)在圖9所示的架構(gòu)上的用于處理頁錯誤的示例性方法。在1021,前端核通信耦合到加速器。如上所述,一個實施例的前端核執(zhí)行OS代碼的輕量集合,且包括TLB、頁移動模塊、頁錯誤處理器和TLB否決處理器。在1022,由前端核檢測由加速器生成的存儲器訪問操作,該前端核檢查其TLB以找到處理存儲器訪問所需的條目。在1023,確定地址映射(經(jīng)由TLB或經(jīng)由對頁表的存儲器訪問)。如果檢測到頁錯誤,因為例如所請求的頁當前未被存儲在物理存儲器地址空間中(但是例如被存儲在硬驅(qū)動上),則在1025,所請求的頁被加載到存儲器中。在1026,加速器針對所請求的頁訪問系統(tǒng)存儲器。
[0080]示例性指令格式
[0081]本文中所描述的指令的實施例可以不同的格式體現(xiàn)。另外,在下文中詳述示例性系統(tǒng)、架構(gòu)、以及流水線。指令的實施例可在這些系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但是不限于詳述的系統(tǒng)、架構(gòu)、以及流水線。
[0082]向量友好指令格式是適于向量指令(例如,存在專用于向量操作的特定字段)的指令格式。盡管描述了其中通過向量友好指令格式支持向量和標量操作兩者的實施例,但是替代實施例僅使用通過向量友好指令格式的向量操作。
[0083]圖1lA-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。根據(jù)應用,這些邏輯塊通過高帶寬的互連網(wǎng)絡(例如,環(huán)形網(wǎng)絡)與一些固定的功能邏輯、存儲器I/o接口和其它必要的I/O邏輯通信。
[0084]圖1lA是根據(jù)本發(fā)明的各實施例的單個處理器核以及它與管芯上互連網(wǎng)絡1102的連接及其二級(L2)高速緩存的本地子集1104的框圖。在一個實施例中,指令解碼器1100支持具有打包數(shù)據(jù)指令集擴展的x86指令集。LI高速緩存1106允許對進入標量和向量單元中的高速緩存存儲器的低等待時間訪問。盡管在一個實施例中(為了簡化設計),標量單元1108和向量單元1110使用分開的寄存器集合(分別為標量寄存器1112和向量寄存器1114),并且在這些寄存器之間轉(zhuǎn)移的數(shù)據(jù)被寫入到存儲器并隨后從一級(LI)高速緩存1106讀回,但是本發(fā)明的替代實施例可以使用不同的方法(例如使用單個寄存器集合或包括允許數(shù)據(jù)在這兩個寄存器組之間傳輸而無需被寫入和讀回的通信路徑)。
[0085]L2高速緩存的本地子集1104是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的L2高速緩存1104的本地子集的直接訪問路徑。被處理器核讀出的數(shù)據(jù)被存儲在其L2高速緩存子集1104中,并且可以與其他處理器核訪問其自己的本地L2高速緩存子集并行地被快速訪問。被處理器核寫入的數(shù)據(jù)被存儲在其自己的L2高速緩存子集1104中,并在必要的情況下從其它子集清除。環(huán)形網(wǎng)絡確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡是雙向的,以允許諸如處理器核、L2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個環(huán)形數(shù)據(jù)路徑為每個方向1012位寬。
[0086]圖1lB是根據(jù)本發(fā)明的各實施例的圖1lA中的處理器核的一部分的展開圖。圖1lB包括LI高速緩存1104的LI數(shù)據(jù)高速緩存1,106A部分,以及關于向量單元1110和向量寄存器1114的更多細節(jié)。具體地說,向量單元1410是16寬向量處理單元(VPU)(見16寬ALU 1128),該單元執(zhí)行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該VPU通過混合單元1120支持對寄存器輸入的混合、通過數(shù)值轉(zhuǎn)換單元1122A-B支持數(shù)值轉(zhuǎn)換、并通過復制單元1124支持對存儲器輸入的復制。寫掩碼寄存器1126允許斷言所得的向量寫入。
[0087]本發(fā)明的實施例可以包括以上描述的各個步驟。這些步驟可在用于致使通用或?qū)S锰幚砥鲌?zhí)行所述步驟的機器可執(zhí)行指令中實現(xiàn)。另選地,這些步驟可由包含用于執(zhí)行這些步驟的硬連線邏輯的專用硬件組件來執(zhí)行,或由編程的計算機組件和自定義的硬件組件的任何組合來執(zhí)行。
[0088]如在此所述的,指令可以指硬件的具體配置,如被配置成執(zhí)行特定操作或具有預定功能的專用集成電路(ASIC)或者存儲在嵌入非暫態(tài)計算機可讀介質(zhì)中的存儲器中的軟件指令。因而,附圖中示出的技術(shù)可以使用存儲在一個或多個電子設備(例如,終端站、網(wǎng)絡元件等等)并在其上執(zhí)行的代碼和數(shù)據(jù)來實現(xiàn)。此類電子設備通過使用諸如非暫態(tài)計算機機器可讀存儲介質(zhì)(例如,磁盤;光盤;隨機存取存儲器;只讀存儲器;閃存設備;相變存儲器)之類的計算機機器可讀介質(zhì)和暫態(tài)計算機機器可讀通信介質(zhì)(例如,電、光、聲或其它形式的傳播信號——諸如載波、紅外信號、數(shù)字信號等)來(內(nèi)部地和/或通過網(wǎng)絡與其他電子設備)存儲和傳遞代碼和數(shù)據(jù)。另外,這類電子設備一般包括與一個或多個其它組件耦合的一組一個或多個處理器,所述一個或多個其它組件例如是一個或多個存儲設備(非暫態(tài)機器可讀存儲介質(zhì))、用戶輸入/輸出設備(例如鍵盤、觸摸屏和/或顯示器)以及網(wǎng)絡連接。該組處理器和其它組件的耦合一般是通過一個或多個總線和橋(也稱總線控制器)達成的。存儲設備和攜帶網(wǎng)絡流量的信號分別表示一個或多個機器可讀存儲介質(zhì)以及機器可讀通信介質(zhì)。因此,給定電子設備的存儲設備通常存儲代碼和/或數(shù)據(jù)以供在該電子設備的一個或多個處理器上執(zhí)行。當然,本發(fā)明的實施例的一個或多個部分可使用軟件、固件和/或硬件的不同組合來實現(xiàn)。貫穿此詳細描述,為解釋起見,闡明了眾多具體細節(jié)以提供對本發(fā)明的全面理解。然而,對本領域技術(shù)人員將顯見的是,沒有這些具體細節(jié)也可實踐本發(fā)明。在某些實例中,并不詳細描述眾所周知的結(jié)構(gòu)和功能以免淡化本發(fā)明的主題。因此,本發(fā)明的范圍和精神應根據(jù)所附權(quán)利要求書來判斷。
【權(quán)利要求】
1.一種裝置,包括: 加速器,包括一個或多個執(zhí)行單元(EU),用于執(zhí)行特定的指令集;以及 至加速器的前端核,包括通信耦合到所述加速器并與所述加速器共享的轉(zhuǎn)換后備緩沖器(TLB),并且向所述加速器提供存儲器訪問服務,所述存儲器訪問服務包括響應于加速器需要訪問系統(tǒng)存儲器,代表加速器執(zhí)行TLB查找操作以將虛擬地址映射到物理地址, 存儲器層次結(jié)構(gòu),包括通信耦合到所述前端核和所述加速器且經(jīng)由TLB查找操作提供的物理地址訪問的系統(tǒng)存儲器。
2.如權(quán)利要求1所述的裝置,其特征在于,所述前端核還包括頁步行器模塊,用于在對于當前的存儲器訪問不存在TLB條目時確定虛擬至物理映射,所述頁步行器模塊訪問系統(tǒng)存儲器以確定所述加速器所需的映射。
3.如權(quán)利要求2所述的裝置,其特征在于,所述頁步行器模塊更新TLB以包括虛擬至物理地址映射。
4.如權(quán)利要求3所述的裝置,其特征在于,所述前端核還包括頁錯誤處理器以重新開始未更新TLB之后導致頁錯誤的指令。
5.如權(quán)利要求4所述的裝置,其特征在于,所述前端核還包括TLB否決處理器,用于響應于檢測到特定的頁已經(jīng)被限制由特定系統(tǒng)組件使用,執(zhí)行TLB否決操作,所述TLB否決操作導致特定頁的TLB條目被沖刷。
6.如權(quán)利要求1所述的裝置,其特征在于,所述前端核包括用于執(zhí)行x86操作系統(tǒng)代碼的核。
7.如權(quán)利要求1所述的裝置,其特征在于,所述加速器包括用于執(zhí)行圖形指令的圖形加速器。
8.如權(quán)利要求7所述的裝置,其特征在于,所述加速器包括用于執(zhí)行圖形指令的多個執(zhí)行單元(EU)。
9.如權(quán)利要求8所述的裝置,其特征在于,所述前端核包括用于調(diào)度在EU上執(zhí)行圖形指令的調(diào)度器。
10.如權(quán)利要求8所述的裝置,其特征在于,所述加速器包括存儲器管理器,用于生成將由前端核服務的TLB查找和TLB未命中信號。
11.一種裝置,包括: 加速器裝置,包括一個或多個執(zhí)行單元(EU),用于執(zhí)行特定的指令集;以及 至加速器裝置的前端核裝置,包括通信耦合到加速器并與加速器共享的轉(zhuǎn)換后備緩沖器(TLB),并且向所述加速器裝置提供存儲器訪問服務,所述存儲器訪問服務包括響應于加速器需要訪問系統(tǒng)存儲器,代表加速器裝置執(zhí)行TLB查找操作以將虛擬地址映射到物理地址, 存儲器層次結(jié)構(gòu)裝置,包括通信耦合到所述前端核裝置和所述加速器裝置且經(jīng)由TLB查找操作提供的物理地址訪問的系統(tǒng)存儲器。
12.如權(quán)利要求11所述的裝置,其特征在于,所述前端核裝置還包括頁步行器裝置,用于在對于當前的存儲器訪問不存在TLB條目時確定虛擬至物理映射,所述頁步行器裝置訪問系統(tǒng)存儲器以確定所述加速器裝置所需的映射。
13.如權(quán)利要求12所述的裝置,其特征在于,所述頁步行器裝置更新TLB以包括虛擬至物理地址映射。
14.如權(quán)利要求13所述的裝置,其特征在于,所述前端核裝置還包括頁錯誤處理器以重新開始在已經(jīng)更新TLB之后導致頁錯誤的指令。
15.如權(quán)利要求14所述的裝置,其特征在于,所述前端核裝置還包括TLB否決處理器裝置,用于響應于檢測到特定的頁已經(jīng)被限制由特定系統(tǒng)組件使用,執(zhí)行TLB否決操作,所述TLB否決操作導致特定頁的TLB條目被沖刷。
16.如權(quán)利要求11所述的裝置,其特征在于,所述前端核裝置包括用于執(zhí)行x86操作系統(tǒng)代碼的核。
17.如權(quán)利要求11所述的裝置,其特征在于,所述加速器裝置包括用于執(zhí)行圖形指令的圖形加速器。
18.如權(quán)利要求17所述的裝置,其特征在于,所述加速器裝置包括用于執(zhí)行圖形指令的多個執(zhí)行單元(EU)。
19.如權(quán)利要求18所述的裝置,其特征在于,所述前端核裝置包括用于調(diào)度在EU上執(zhí)行圖形指令的調(diào)度器裝置。
20.如權(quán)利要求18所述的裝置,其特征在于,所述加速器裝置包括存儲器管理器,用于生成將由前端核裝置服務的TLB查找和TLB未命中信號。
21.—種方法,包括: 將前端核通信耦合到加速器,所述前端核監(jiān)視由所述加速器生成的存儲器訪問操作; 確定轉(zhuǎn)換后備緩沖器(TLB)條目是否存在于由所述前端核管理的TLB中,以服務由所述加速器生成的存儲器訪問操作; 如果是,則將所述TLB條目提供給所述加速器; 如果不是,則生成頁步行操作以確定所述加速器所需的虛擬至物理映射;以及 通信耦合存儲器層次結(jié)構(gòu),所述存儲器層次結(jié)構(gòu)包括到所述前端核和所述加速器且使得能經(jīng)由TLB查找操作提供的物理地址訪問的系統(tǒng)存儲器。
22.如權(quán)利要求21所述的方法,其特征在于,頁步行操作包括訪問系統(tǒng)存儲器中的頁以執(zhí)行虛擬至物理映射。
23.如權(quán)利要求22所述的方法,其特征在于,還包括: 更新TLB以包括從系統(tǒng)存儲器讀取的虛擬至物理映射。
24.如權(quán)利要求23所述的方法,其特征在于,還包括: 導致所述加速器重新執(zhí)行需要虛擬至物理存儲器轉(zhuǎn)換的指令;以及 將映射從TLB提供給加速器。
25.如權(quán)利要求21所述的方法,其特征在于,還包括: 響應于確定特定的頁已經(jīng)被限制由特定組件使用,在前端核上執(zhí)行TLB否決操作,所述TLB否決操作導致與該特定頁相關聯(lián)的條目從TLB沖刷。
【文檔編號】G06F12/10GK104204990SQ201280072078
【公開日】2014年12月10日 申請日期:2012年3月30日 優(yōu)先權(quán)日:2012年3月30日
【發(fā)明者】E·威斯曼, K·K·凡塞納坦, Y·扎克, B·靳茲伯格, R·羅恩 申請人:英特爾公司