TW201346555A - 快取記憶體共處理單元 - Google Patents

快取記憶體共處理單元 Download PDF

Info

Publication number
TW201346555A
TW201346555A TW101149592A TW101149592A TW201346555A TW 201346555 A TW201346555 A TW 201346555A TW 101149592 A TW101149592 A TW 101149592A TW 101149592 A TW101149592 A TW 101149592A TW 201346555 A TW201346555 A TW 201346555A
Authority
TW
Taiwan
Prior art keywords
unit
instruction
cache memory
field
cache
Prior art date
Application number
TW101149592A
Other languages
English (en)
Other versions
TWI510921B (zh
Inventor
Ashish Jha
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201346555A publication Critical patent/TW201346555A/zh
Application granted granted Critical
Publication of TWI510921B publication Critical patent/TWI510921B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/301In special purpose processing node, e.g. vector processor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一種計算系統中之快取記憶體共處理單元,包含:一快取記憶體陣列,用以儲存資料;一硬體解碼單元,用以解碼指令,該指令係為該計算系統之一執行叢集執行而卸載,以於該執行叢集及該快取記憶體共處理單元之間減少讀取操作及儲存操作;及一組之一個或多個操作單元,用以根據該解碼之指令,於該快取記憶體陣列執行複數個操作。

Description

快取記憶體共處理單元
本發明有關於一般電腦處理器構造,及更特別地有關於快取記憶體共處理單元。
指令集,或指令集構造(I),係電腦構造有關於程式化部分,及可包括本機資料類型,指令,暫存器構造,定址模式,記憶體構造,中斷及例外異常處理,及外接輸入及輸出(I/O)。值得注意的是名稱指令一般為巨集-指令-亦即指令係提供至處理器用於執行-相對於處理器之解碼器解碼巨集-指令結果之微-指令或微-運算放大器)。
由微構造識別之指令集構造,係應用ISA之處理器內部設計。處理器具有不同的微構造能夠分享共同指令集。指令集包括一個或多個指令格式。給定指令格式表示不同字段(位元之數目,位元之位置)以由其它事項中指定,將執行之操作及操作係將執行之運算元。給定指令係利用給定指令格式表示及指定操作及運算元。指令串流係一特殊的指令之序列,其中每一個指令於序列係一指令之發生於指令格式。
科學,財經的,自動向量化一般用途,RMS(辨識,探勘,及合成)/視聽及多媒體應用(亦即,2D/3D圖像,影像處理,視訊壓縮/解壓縮,聲音辨識算數及音訊處理)經常需要相同操作執行大量資料項目(參照為"資料並列")。 單一指令多重資料(SIMD)係關於使得處理器執行相同操作於多重資料項目之類型指令。SIMD技術特別適用於處理器,其能夠合邏輯地將於暫存器之位元分成多個固定-尺寸資料元素,其中每一個代表分立的數值。例如,位元於64-位元暫存器可指定為來源運算元操作為四個分立的16-位元資料元素,每一個代表分立的16-位元數值。正如另外的例子,位元於256-位元暫存器可指定為來源運算元操作為四個分立的64-位元封包資料元素(四字元(Q)尺寸資料元素),八個分立的32-位元封包資料元素(二字元(D)尺寸資料元素),十六個分立的16-位元封包資料元素(字元(W)尺寸資料元素),或三十二個分立的8-位元資料元素(位元組(B)尺寸資料元素)。此類型資料係參照為封包資料類型或向量資料類型,及此資料類型之運算元係參照為封包資料運算元或向量運算元。換言之,封包資料項目或向量關於封包資料元素之序列;及封包資料運算元或向量運算元係一SIM指令之來源或目標運算元(同時被稱為封包資料指令或向量指令)。
轉置操作係一共同的早期的慣例於向量軟體。雖然某些指令集構造提供指令用於執行轉置操作,該些指令係一般為混合及交換需要額外的負擔設定混合控制遮罩利用即時位元或利用分立的向量暫存器,因而增加指令支付讀取及增加尺寸。另外,某些指令集構造之混合操作係通道內128-位元操作。因此,為了進行256-位元或512-位元暫存器(例如)全轉置操作,混合及交換組合係必需的。
軟體應用裝置花費相當比例時間於讀取(LDs)及儲存(STs)至記憶體,於讀取一般為執行大於兩倍儲存之數目。某些功能需要許多的讀取操作和儲存操作幾乎不需要計算,例如記憶體清除,記憶體複製,轉置;及其它進行少許計算例如矩陣點積,陣列之和等,每一個讀取操作或儲存操作需要核心資源(亦即,保留站(RS),重排序亂序重排序緩衝器(ROB),填充緩衝器等)。
於以下說明,提出許多的特殊的細節。然而,顯而易見,本發明實施例可實施而無需該些特殊細節。於其它例子,習知之電路,結構及技術未說明於細節為了不混淆此說明。
參照符號於特殊的“一實施例”,“一實施例”,“實例實施例”等,顯示實施例說明可包括特別的特徵,結構,或特性,但是非常實施例可不必包括特別的特徵,結構,或特性。再則,前述詞彙係不必關於相同實施例。進一步,當特別的特徵,結構,或特性說明(與一實施例有關),係以表明,對熟悉業界之人士而言,運用前述特徵,結構,或有關於其它實施例之特性是否明白地說明皆不脫離本專利之範圍。
轉置指令
如上所詳述,轉置操作用以轉置元素一般為執行混合 及交換操作之組合,其需要利用即時位元或利用分立的向量暫存器額外的負擔設定混合控制遮罩,因而增加指令支付讀取及尺寸。
轉置指令之實施例(轉置)細節如下及系統,構造,指令格式之實施例等。可利用以執行前述指令。轉置指令包括運算元指定向量暫存器或位置於記憶體。當執行,轉置指令使得處理器以儲存指定向量暫存器之資料元素或位置於記憶體為反向順序。例如,最高位資料元素成為最低位資料元素,最低位資料元素成為最高位資料元素等。
於某些實施例,假若指令指定位置於記憶體,指令進一步包括運算元指定元素之數目。
於某些實施例,將說明更多細節於下文,轉置指令係由快取記憶體共處理單元讀取。
一個此指令之實例係“轉置[PS/PD/B/W/D/Q]向量_暫存器/記憶體”其中向量_暫存器指定向量暫存器(例如128-,256-,或512-位元暫存器),或記憶體指定位置於記憶體。”PS”部分指令顯示純量浮點(4位元組)。”PD”部分指令顯示雙浮點(8位元組)。”B”部分指令顯示位元組,無關乎運算元-尺寸屬性。”W”部分指令顯示字元,無關乎運算元-尺寸屬性。”D”部分指令顯示雙字元,無關乎運算元-尺寸屬性。”Q”部分指令顯示四字元,無關乎運算元-尺寸屬性。
指定向量暫存器或記憶體係相同來源及目標。因此轉置指令執行,資料元素於指定向量暫存器或記憶體係儲存 使得指定向量暫存器或記憶體為反向順序。
其它此指令之實例係“轉置[PS/PD/B/W/D/Q]記憶體,Num_元素”其中記憶體係一位置於記憶體及Num_元素係元素之數目。於一實施例中,此形式指令係由快取記憶體共處理單元讀取。
第1圖,根據本發明實施例,說明範例轉置指令之執行。轉置指令100包括運算元105。轉置指令100屬於指令集構造,及每一個指令之“發生”100於指令串流中包括數值於運算元105中。於本例中,運算元105指定向量暫存器(例如128-,256-,512-位元暫存器)。向量暫存器說明係一zmm暫存器具有1632-位元資料元素;然而,其它資料元素及暫存器尺寸可利用例如xmm或ymm暫存器及16-或64-位元資料元素。
由運算元105(zmm1)指定之暫存器之內容說明包括16資料元素。第1圖說明zmm1暫存器於轉置指令100執行之前以及於指令100執行之後。於轉置指令100之執行之前,資料元素於zmm1之索引0儲存數值A,資料元素於zmm1之索引1儲存數值B,最末資料元素於zmm1之索引15儲存數值P。轉置指令100之執行使得資料元素於zmm1暫存器儲存於zmm1暫存器為反向順序。因此,資料元素於zmm1之索引0儲存數值P(其係先前儲存於zmm1之索引15),資料元素於索引1儲存數值O(其係先前儲存於索引14),資料元素於索引15儲存數值a(其係先前儲存於索引0)。
第2圖說明其它範例轉置指令之執行。轉置指令200包括運算元205及運算元210。運算元205指定記憶體位置(其於本例為陣列)及運算元210指定元素之數目(其於本例係16)。於轉置指令200之執行之前,陣列儲存數值A之資料元素於索引0,陣列儲存數值B之資料元素於索引1,陣列儲存數值P之最末資料元素於索引。轉置指令200之執行使得資料元素於陣列儲存於陣列為反向順序。因此,陣列儲存數值P之資料元素於索引0(其係先前儲存於陣列索引15),資料元素於索引1儲存數值O(其係先前儲存於索引14),資料元素於索引15儲存數值A(其係先前儲存於索引0)。
第3圖,根據本發明實施例,係一流程圖說明範例操作用於轉置資料元素於向量暫存器或記憶體位置由執行單一轉置指令。於操作310,轉置指令係由處理器擷取(亦即,由處理器之擷取單元)。轉置指令包括運算元指定向量暫存器或記憶體位置。指定向量暫存器或記憶體位置包括將轉置之多重資料元素。向量暫存器可,例如,zmm暫存器具有1632-位元資料元素;然而,其它資料元素及暫存器尺寸可利用例如xmm或ymm暫存器及16-或64-位元資料元素。
流程由操作310移動至操作315其中處理器解碼轉置指令。例如,於某些實施例,處理器包括硬體解碼單元亦即提供指令(亦即,由處理器之擷取單元)。許多不同著名的解碼單元可用於該解碼單元。例如,解碼單元可解碼轉 置指令為單一寬度微指令。正如另外的例子,解碼單元可解碼轉置指令為多重寬度微指令。正如另外的例子特別的適用於亂序處理器管線,解碼單元可解碼轉置指令於一個或多個微-運算放大器,其中每一個微-運算放大器可發出及執行亂序。同時,解碼單元可應用一個或多個解碼器及每一個解碼器可應用為可程式邏輯陣列(PLA),係為業界習知。舉例而言,給定解碼單元可:1)具有引導邏輯以指引不同的巨集指令至不同的解碼器;2)第一解碼器可解碼指令集之子集(但是多過於第二,第三,及第四解碼器之子集)及產生兩個微-運算放大器一次;3)第二,第三,及第四解碼器可每一個解碼只有整個指令集之子集及產生只有一個微運算放大器一次;4)微-序列ROM可解碼只有整個指令集之子集及產生四個微-運算放大器一次;及5)多重邏輯由解碼器提供及微-序列ROM決定其輸出係提供至微運算放大器佇列。其它解碼單元之實施例可具有更多或更少的解碼器解碼更多或更少的指令及指令子集。例如,一實施例可具有第二,第三,及第四解碼器可每一個一次產生兩個微-運算放大器;及可包括微-序列ROM一次產生八個微-運算放大器。
流程然後移動至操作320,其中處理器執行轉置指令,造成資料元素之順序儲存於指定向量暫存器或記憶體位置為反向順序。
轉置指令可自動由編輯器產生或可由軟體開發人員人工編碼。轉置指令用於執行此處說明之內容可改善指令集 構造可程式性及減少指令數,因而減少電力損耗由核心。另外,轉置指令執行無需用於產生之暫存緩衝器以保留轉置記憶體,而不像傳統執行轉置操作之方式,用以減少記憶體佔位面積。同時,單一轉置指令之執行係更簡化於複雜的組混合及交換於先前需要以執行轉置操作。
由快取記憶體共處理單元執行讀取之指令
如上所詳述,軟體應用裝置可包括功能一般為需要多個讀取及/或儲存操作執行於處理核心之執行叢集及計算系統之記憶體單元(快取記憶體及記憶體)之間。某些該些功能幾乎不需要計算但是可需要許多的讀取及/或儲存操作例如記憶體清除,記憶體複製,及轉置。其它功能需要少許計算但是同時可需要許多的讀取及/或儲存操作例如矩陣點積,及陣列之和。例如,以執行轉置操作記憶體陣列,記憶體陣列為讀取進入暫存器,核心顛倒數值,及然後數值係儲存回到記憶體陣列(該些步驟可需要重複多次直到記憶體陣列轉置)。
本發明實施例說明快取記憶體處理單元執行已由計算系統之執行叢集讀取之指令。例如,某些記憶體管理功能(亦即,記憶體清除,記憶體複製,轉置等)係讀取由計算系統之執行叢集及係執行直接由快取記憶體共處理單元(其可包括正在操作之資料)。正如另外的例子,造成持續的計算操作執行相鄰區域於快取記憶體共處理單元中快取記憶體陣列之指令可讀取至及由快取記憶體共處理單元( 亦即,矩陣點積,陣列之和等)。讀取該些指令至快取記憶體共處理單元減少讀取操作和儲存操作之數目於快取記憶體處理單元及計算系統之執行叢集之間因而減少指令數,執行叢集騰出之資源(亦即,保留站(RS),重排序緩衝器(ROB),填充緩衝器等),使執行叢集利用該些資源以處理其它指令。
第4圖,根據本發明實施例,係一方塊圖說明循序構造核心之最佳實施例及範例暫存器重新命名,亂序發出/執行構造核心包括範例快取記憶體共處理單元執行已由處理核心之執行叢集讀取之指令。實線框框於第4圖說明循序管線及循序核心,當選擇加入虛線框框說明重新命名,亂序發出/執行管線及核心。給定循序目的係一亂序目的之子集,亂序目的將會說明。
說明於第4圖,處理器核心400包括前端單元410,耦接至執行引擎單元415耦接至快取記憶體共處理單元470。處理器核心400可為減少指令集計算(RISC)核心,複雜的指令集計算(CISC)核心,非常長的指令字元(VLIW)核心,或混合或另一核心類型。還有其它選擇,核心400可特殊用途核心,諸如,例如,網路或通訊核心,壓縮引擎,共處理器核心,一般用途計算圖像處理單元(GPGPU)核心,圖像核心等
前端單元410包括指令擷取單元420耦接至解碼單元425。解碼單元425(或解碼器)係建構以解碼指令及產生輸出如一個或多個微-操作,微碼入口點,微指令,其它指 令,或其它控制信號,該輸出係由原始指令解碼,或顯示,或獲得。解碼單元425之應用可利用不同的機制。適合的機制之實例包括,但是係不限定於,對照表,硬體應用,可程式邏輯陣列(PLA),微碼唯獨記憶體(ROM)等於一實施例中,核心400包括微碼ROM或其它媒體儲存微碼於某些巨集指令(亦即,於解碼單元425或另外於前端單元410中)。解碼單元425係耦接至重新命名/分配器單元435於執行引擎單元415。雖然未說明於第1,前端單元410可同時包括偏移預估單元耦接至指令快取記憶體單元,指令快取記憶體單元係耦接至指令轉譯備援緩衝器(TLB),指令轉譯備援緩衝器(TLB)耦接至指令擷取單元420。
解碼單元425係同時建構以決定是否指令讀取至快取記憶體共處理單元470。於一實施例中,決定以讀取指令至快取記憶體共處理單元470係動態執行(於執行時間)及係構造相關的。例如,於一個應用指令可讀取假若其記憶體長度係大於快取記憶體內存線尺寸(亦即,64位元組)及係於多重快取記憶體內存線尺寸。其它應用可決定讀取指令至快取記憶體共處理單元470與記憶體長度無關依快取記憶體共處理單元470效率而定。
於其它實施例,決定以讀取指令至快取記憶體共處理單元470可同時考量指令其本身。亦即,某些指令可用於讀取至快取記憶體共處理單元470或至少能夠讀取至快取記憶體共處理單元470。舉例而言,前述指令可由編輯器 或於由軟體開發商寫入,係根據假設其更有效率讀取指令至快取記憶體共處理單元。
執行引擎單元415包括重新命名/分配器單元435耦接至引退單元450及一組之一個或多個排程器單元440。排程器單元440代表任何數目之不同的排程器,包括保留站,中央指令窗等。排程器單元440係耦接至實體暫存器欄位單元445。每一個實體暫存器欄位單元445代表一個或多個實體暫存器欄位,不同的實體暫存器欄位儲存一個或多個不同的資料類型,例如純量整數,純量浮點,封包整數,封包浮點,向量整數,向量浮點,狀態(亦即,指令指標亦即下一個將執行之指令位址)等於一實施例中,實體暫存器欄位單元445包括向量暫存器單元,儲存遮罩暫存器單元,及純量暫存器單元。該些暫存器單元可提供構造向量暫存器,向量遮罩暫存器,及一般用途暫存器。實體暫存器欄位單元445係由引退單元450覆蓋以列舉暫存器重新命名及亂序執行可應用之不同方式(亦即,利用重排序緩衝器及引退暫存器欄位;利用未來欄位,歷史紀錄緩衝器,及引退暫存器欄位;利用暫存器對映及一群暫存器等)。引退單元450及實體暫存器欄位單元445係耦接至執行叢集455。
執行叢集455包括一組之一個或多個執行單元460及一組記憶體存取單元465。執行單元455可執行不同計算操作(亦即,移位、加法、減法、乘法)及於不同類型資料(亦即,純量浮點,封包整數,封包浮點,向量整數,向 量浮點)。排程器單元440,實體暫存器欄位單元445,及執行叢集455係當做可能重複多次,因為某些實施例產生分立的某些類型資料/操作之管線(亦即,純量整數管線,純量浮點/封包整數/封包浮點/向量整數/向量浮點管線,及/或記憶體存取管線每一個具有其自身排程器單元,實體暫存器欄位單元,及/或執行叢集-及於分立的記憶體存取管線,某些實施例係應用於其中只有此管線之執行叢集具有記憶體存取單元465時)。同時,顯而易見其中分立的管線利用時,一個或多個該些管線可亂序發出/執行及其餘的可循序。
該記憶體存取單元465組係耦接至快取記憶體共處理單元470。於一實施例中,記憶體存取單元465包括讀取單元484,儲存位址單元486,儲存資料單元488,及一組之一個或多個卸載指令單元490以讀取指令至快取記憶體共處理單元470。讀取單元484發出讀取存取(其可為讀取微-操作)至快取記憶體處理單元470。例如,讀取單元484指定將讀取之資料位址。當執行儲存操作,儲存位址單元486及儲存資料單元488係為利用。儲存位址單元486指定位址及儲存資料單元488指定資料以寫入至記憶體。於某些實施例,讀取及儲存位址單元能夠利用如讀取單元或儲存位址單元。
如上所述,軟體應用裝置能夠花費大量時間及資源執行讀取操作和儲存操作。例如,許多指令例如記憶體清除,記憶體複製,及轉置,一般為需要一些讀取,計算,及 儲存指令執行於核心之執行叢集之執行單元。例如,讀取指令係發出至讀取資料進入暫存器,計算係執行,及儲存指令係發出至寫入取得的資料。某些該些操作之重複可需要執行以完成指令之執行。讀取操作和儲存操作同時利用快取記憶體及記憶體頻寬以及其它核心資源(亦即,R,ROB,填充緩衝器等)。
卸載指令單元490發出指令至快取記憶體共處理單元470以讀取某些指令之執行至快取記憶體共處理單元470。例如,執行一般為需要多個讀取操作及/或儲存操作,但是進行少許或無計算,可讀取執行直接由快取記憶體共處理單元470以減少讀取及/或儲存操作需要另外執行之數目。例如,記憶體清除功能,記憶體複製功能,及轉置功能,一般為包含許多讀取操作和儲存操作將執行,少許甚至無計算。於一實施例中,該些功能之執行可讀取至快取記憶體共處理單元470。正如另外的例子,執行其中持續的計算操作係執行相鄰區域之資料,可讀取至快取記憶體共處理單元470。前述執行之實例包括函數之執行例如矩陣點積,陣列之和等。
快取記憶體共處理單元470執行快取記憶體操作(亦即,L1快取記憶體,L2快取記憶體)於核心400及處理讀取之指令。因此,快取記憶體共處理單元470處理讀取存取及儲存存取應用類似一般快取記憶體單元方式,以及處理讀取之指令。快取記憶體共處理單元470之解碼單元474包括邏輯以解碼讀取之指令以及讀取需求,儲存位址 ,需求,及儲存資料需求。於一實施例中,分立的控制線於每一個記憶體存取單元及快取記憶體共處理單元470之間係利用以解碼每一個需求。於其它實施例,一組之一個或多個控制線於記憶體存取單元465及解碼單元474控制於一個或多個多重或之間係利用以減少控制線之數目。
解碼需求操作之後,快取記憶體共處理單元470之操作單元472執行操作。舉例而言,操作單元472包括邏輯以寫入快取記憶體陣列482(用於儲存操作)及由快取記憶體陣列482(以讀取操作)讀取,以及任何需要的緩衝器。例如,假若讀取需求被接收,操作單元472存取快取記憶體陣列482於需求位址及反還資料(假設資料係於快取記憶體陣列482中)。正如另外的例子,假若儲存需求被接收,操作單元472寫入需求資料於需求位址。
解碼單元474決定將執行之操作以執行讀取之指令。舉例而言,於一實施例其中讀取之指令係實質上非-計算(亦即,記憶體清除,記憶體複製,轉置,或其它功能轉換資料相對於需要的計算),解碼單元474決定由操作單元472執行之讀取及/或儲存操作之數目以執行指令。例如,假若記憶體清除指令係接收,解碼單元474可造成操作單元472以執行多個儲存操作(清除需求依記憶體之長度而定)於快取記憶體陣列482以設定需求資料為0(或其它數值)。因此,例如,單一指令可讀取至快取記憶體共處理單元470使其執行記憶體清除功能而不需要記憶體存取單元465(儲存位址單元486及儲存資料單元488)以發出多 重儲存需求以完成記憶體清除功能。
當執行操作,操作單元472利用控制單元473。例如,控制單元473之回路控制476控制循環通過快取記憶體陣列482以完成需要之循環(looping)操作。舉例而言,假若記憶體清除指令被解碼,回路控制476循環通過快取記憶體陣列482多次(清除需求依記憶體之尺寸而定)及因此操作單元清除陣列482。於一實施例中,操作單元472係限制於正在操作快取記憶體內存線尺寸及邊界。
控制單元473同時包括高速緩存鎖定單元478用於鎖定正由操作單元472操作之快取記憶體陣列482區域,快取記憶體陣列482鎖定區域之命中使得窺探停頓。
控制單元473同時包括錯誤控制單元480用於報告錯誤。例如,有關於處理讀取之指令錯誤係回報至卸載指令單元490以發出指令造成指令失效或設定錯誤碼於控制暫存器。於一實施例中,當資料並非於快取記憶體陣列482中時,錯誤控制單元480報告錯誤至發出之卸載指令之卸載指令單元490。於一實施例中,錯誤控制單元480報告錯誤至發出讀取之指令之卸載指令單元490於過多或不足情形時。
雖然於第4圖未示出,快取記憶體共處理單元470可同時耦接至轉譯備援緩衝器。同時,快取記憶體共處理單元470可耦接至2級快取記憶體及/或記憶體。同時,控制單元473可同樣包括窺探邏輯用於控監位址線以用於存取至已於快取記憶體陣列482被快取之記憶體位置。
於某些實施例讀取之指令需要計算(亦即,移位、加法、減法、乘法,除法)。例如,函數例如矩陣點積及陣列之和需要計算。於實施例,讀取之指令需要計算,於是於一實施例,操作單元472包括執行單元(亦即,算數邏輯單元,浮點單元)以執行該些操作。
說明於第4圖,快取記憶體共處理單元470係說明為應用於1級快取記憶體。然而,於其它實施例,快取記憶體共處理單元能夠應用為不同的級快取記憶體(亦即,2級快取記憶體,外部快取記憶體)。
於一實施例中,快取記憶體共處理單元470係應用為1級快取記憶體之複製,其中之內容係由1級快取記憶體讀取,鎖定,及改變複製。當操作完成,快取記憶體內存線於1級快取記憶體失效,未鎖定,及複製具有有效-資料。
於一實施例中,讀取之指令發出只在當讀取之指令資料保留於快取記憶體時。於前述一實施例,應用產生之指令確保資料保留於快取記憶體。於一實施例中,快取記憶體失誤之處理係應用類似一般快取記憶體失誤之方式。例如,於快取記憶體失誤,下一級快取記憶體或記憶體則存取資料。
第5圖,根據本發明實施例,係一流程圖說明範例操作用於執行讀取之指令。第5圖將說明關於第4圖範例構造。然而,顯而易見第5圖之操作能夠由不同於該些說明於第4圖之實施例執行,及說明於第4圖之實施例能夠執 行不同於該些說明於第5圖之操作。
指令係擷取於操作510。例如,指令擷取單元420擷取指令。流程然後移動至操作515,其中前端單元410之解碼單元425解碼指令及決定將讀取指令以由快取記憶體共處理單元470執行。例如,指令可為將讀取至快取記憶體共處理單元470之資料類型。正如另外的例子,指令可被讀取及其記憶體長度大於快取記憶體內存線尺寸。
然後流程移動至操作520及解碼之指令係發出至快取記憶體共處理單元470。例如,卸載指令單元490發出指令至快取記憶體共處理單元470。接下來,流程移動至操作525及快取記憶體共處理單元470之解碼單元474解碼讀取之指令。流程然後移動至操作530及操作單元472執行上述指令。
於一實施例中,每一個功能之指令將被讀取係表示,其因而將發出至快取記憶體共處理單元470用於處理。舉一特例而言,轉置指令可由快取記憶體共處理單元470讀取及執行。例如,轉置指令可為”轉置O[PS/PD/B/W/D/Q]記憶體,Num_元素”其中轉置O記憶體係一位置於記憶體及Num_元素係元素之數目於該記憶體位置。此轉置指令係類似於先前說明之轉置指令;然而,此指令”轉置O”之運算碼表示轉置指令將被讀取。
當遭遇此指令,上述解碼單元425決定係將其讀取至快取記憶體共處理單元470。因此,卸載指令單元490發出指令至快取記憶體處理單元470,來源記憶體位址及長 度傳送至快取記憶體共處理單元470(於一實施例,儲存位址單元提供封包於快取記憶體共處理單元470讀取之支付之來源記憶體位址及長度)。
解碼單元474解碼指令及使得操作單元472執行操作。例如,操作單元472開始讀取記憶體之第一及最末快取記憶體內存線,記憶體內存線由快取記憶體陣列462之來源記憶體位址指定,交換該兩個數值,及然後(返回)向內作動直到完成記憶體長度。因此,單一轉置指令直接由快取記憶體共處理單元470執行,以於執行叢集及快取記憶體共處理單元之間,減少讀取及儲存指令之數目以及節省執行引擎415之以執行其它指令。
由快取記憶體共處理單元執行之讀取指令接受較簡單的記憶體相關的工作(舉例而言)不再由處理器核心之執行單元執行,因而減少指令數及節省核心電能,減少利用緩衝器,及由於減少碼之尺寸及程式簡化改善效能。因此,關於前端單元410及執行引擎單元415,單一指令可由快取記憶體共處理單元470讀取及執行而非一長串指令。因而接受執行引擎單元415利用更多個複雜計算工作之資源,因而節省核心資源,核心電能,及改善效能。
範例指令格式
此處說明之指令實施例可以不同的格式實現。另外,範例系統,構造,及管線如下所述。指令之實施例可執行於前述系統,構造,及管線,但是係不限定於已詳述內容 。於一實施例中,下列範例系統,構造,及管線能夠應用於執行未讀取至上述快取記憶體共處理單元之指令。
VEX指令格式
VEX編碼接受指令具有大於兩個運算元,及接受SIMD向量暫存器大於128位元。VEX字首用於三個-運算元(或多個)語法。例如,先前兩個-運算元指令執行操作例如A=A+B,以覆蓋來源運算元。VEX字首用於啟動運算元以執行非破壞性操作例如A=B+C。
第6A圖說明範例AVX指令格式包括VEX字首602,實際運算碼字段630,ModR/M位元組640,SIB位元組650,位移字段662,及IMM8672。第6B圖說明第6A圖字段構成全運算碼字段674及基礎操作字段642。第6C圖說明第6A圖字段構成暫存器索引字段644。
VEX字首(位元組0-2)602係以三個-位元組形式編碼。第一位元組係為格式字段640(VEX位元組0,位元[7:0]),包含明確的C4位元組數值(唯一的數值用以識別C4指令格式)。第二-第三位元組(VEX位元組1-2)包括多個提供特殊的功能之位元字段。特別地,REX字段605(VEX位元組1,位元[7-5])包括VEX.R位元字段(VEX位元組1,位元[7]-R),VEX.X位元字段(VEX位元組1,位元[6]-X),及VEX.B位元字段(VEX位元組1,位元[5]-B)。其它指令之字段編碼暫存器索引較低的三個位元,該三個位元係業界習知(rrr,xxx,及bbb),因此Rrrr,Xxxx,及 Bbbb可由加入VEX.R,VEX.X,及VEX.B形成。運算碼對映字段615(VEX位元組1,位元[4:0]-mmmmm)包括編碼隱示前導運算碼位元組之內容。W字段664之內容(VEX位元組2,位元[7]-W)-係表是為VEX.W標記,並依指令提供不同的功能。VEX.vvvv620之作用(VEX位元組2,位元[6:3]-vvvv)可包括以下:1)VEX.vvvv編碼指定第一來源暫存器運算元於倒數(1s補數)形式及係適用於具有2或多個來源運算元之指令;2)VEX.vvvv編碼指定於某些向量移位1s補數形式之目標暫存器運算元;或3)VEX.vvvv未編碼任何運算元,字段被保留並將包含1111b。假若VEX.L668尺寸字段(VEX位元組2,位元[2]-L)=0,其顯示128位元向量;假若VEX.L=1,其顯示256位元向量。字首編碼字段625(VEX位元組2,位元[1:0]-pp)提供基礎操作字段之額外位元。
實際運算碼字段630(位元組3)同時被稱為運算碼位元組。部分運算碼係適用於此字段。
MODR/M字段640(位元組4)包括MOD字段642(位元[7-6]),Reg字段644(位元[5-3]),及R/M字段646(位元[2-0])。Reg字段644之作用可包括以下:編碼目標暫存器運算元或來源暫存器運算元(rrrofRrrr區域),或做為運算碼延長及未利用以編碼任何指令運算元。R/M字段646之作用可包括以下:編碼記憶體位址相關之指令運算元,或編碼目標暫存器運算元或來源暫存器運算元。
比例,索引,基礎(SIB)-比例字段650(位元組5)之內 容包括SS652(位元[7-6]),用於記憶體位址產生。SIB.xxx654(位元[5-3])及SIB.bbb656(位元[2-0])之內容係關於先前之暫存器索引Xxxx及Bbbb。
位移字段662及即時字段(IMM8)672包含位址資料。
範例編碼為VEX 一般向量親合指令格式
向量親合指令格式係一適用於向量指令之指令格式(某些字段適用於特殊的向量操作)。當實施例係說明其中向量及純量二者之操作應用向量親合指令格式,另一實施例利用只應用向量操作向量親合指令格式。
第7A-7B圖,根據本發明實施例,係方塊圖說明一般向量親合指令格式及其指令樣板。當第7B圖,根據本發明實施例,係一方塊圖說明一般向量親合指令格式及其B類指令樣板;第7A圖,根據本發明實施例,係一方塊圖說明一般向量親合指令格式及A類指令樣板。特別地,一般向量親合指令格式700應用於A類及B類指令樣板包括無記憶體存取705指令樣板及記憶體存取720指令。樣板術語”一般”於上下文中之向量親合指令格式係關於不限於任何特殊的指令集之指令格式。
當本發明實施例將說明其中向量親合指令格式適用於以下:64位元組向量運算元長度(或尺寸)與32位元(4位元組)或64位元(8位元組)資料元素寬度(或尺寸)(及因此,64位元組向量包含16雙字元-尺寸元素或為選項,8四 字元-尺寸元素);64位元組向量運算元長度(或尺寸)與16位元(2位元組)或8位元(1位元組)資料元素寬度(或尺寸);32位元組向量運算元長度(或尺寸)與32位元(4位元組),64位元(8位元組),16位元(2位元組),或8位元(1位元組)資料元素寬度(或尺寸);及16位元組向量運算元長度(或尺寸)具有32位元(4位元組),64位元(8位元組),16位元(2位元組),或8位元(1位元組)資料元素寬度(或尺寸);另一實施例可應用於較多,較少及/或不同的向量運算元尺寸(亦即,256位元組向量運算元)與較多,較少,或不同的資料元素寬度(亦即,128位元(16位元組)資料元素寬度)。
第7A圖A類指令樣板包括:1)於無記憶體存取705指令樣板中為無記憶體存取,全取整數控制類型操作710指令樣板及無記憶體存取,及資料轉換類型操作715指令樣板;及2)於記憶體存取720指令樣板中為記憶體存取,暫存725指令樣板及記憶體存取,非-暫存730指令樣板。第7B圖B類指令樣板包括:1)於無記憶體存取705指令樣板中為無記憶體存取,儲存遮罩控制,部分取整數控制類型操作712指令樣板及無記憶體存取,儲存遮罩控制,V尺寸類型操作717指令樣板;及2)於記憶體存取720指令樣板中為記憶體存取,儲存遮罩控制727指令樣板。
一般向量親合指令格式700包括以下字段依序詳細說明如於第7A-7B圖。
格式字段740-0特殊的數值(指令格式識別數值)於此字段單獨標示向量親合指令格式,及因此指令發生於向量親合指令格式之指令串流中。因此,此字段無需只選擇適用於一般向量親合指令格式之指令集。
基礎操作字段742-其內容識別不同的基礎操作。
暫存器索引字段744-其內容,直接或經由位址產生,指定來源及目標運算元於暫存器或於記憶體之位置。該些包括充足的位元之數目以選擇N暫存器於PxQ(亦即32x512,16x128,32x1024,64x1024)暫存器欄位。當一實施例N可為三個來源及一個目標暫存器,另一實施例可應用於更多或更少的來源及目標暫存器(亦即,可應用於兩個來源,其中該些來源之一同時為目標,可應用於三個來源,其中該些來源之一同時為目標,可應用於兩個來源及一個目標)。
修改器字段746-其內容識別一般向量指令格式指令之發生以由該些未存取者指定記憶體存取;亦即,於無記憶體存取705指令樣板及記憶體存取720指令樣板之間。當非-記憶體存取操作未發生(亦即,來源及目標係暫存器),記憶體存取操作讀取及/或寫入至記憶體階層(某些情形下利用暫存器數值指定來源及/或目標位址)。當一實施例此字段同時選自三個不同的方式以執行記憶體位址計算,另一實施例可應用於較多,較少,或不同的方式以執行記憶體位址計算。
擴充操作字段750-其內容識別許多不同的操作之一 以於基礎操作之外執行。此字段係特定的內容。於本發明之實施例,此字段係分為類別字段768,alpha字段752,及beta字段754。擴充操作字段750接受共同操作組以單一指令執行而非2,3,或4指令。
比例字段760-其內容適用於索引字段內容之縮放比例用於記憶體位址產生(亦即,用於利用2比例*索引+基礎之位址產生)。
位移字段762A-其內容係利用為部分記憶體位址產生(亦即,用於利用2比例*索引+基礎+位移之位址產生)。
位移因子字段762B(請注意,位移字段762A之並列直接含蓋位移因子字段762B表示一個或其它被利用)-其內容係利用為部分位址產生;其表示由記憶體存取(N)之尺寸縮放之位移因子-其中N係記憶體存取之位元組數目(亦即,用於利用2比例*索引+基礎+比例位移之位址產生)。備援低階位元被忽略及因此,位移因子字段之內容係由記憶體運算元全部尺寸(N)擴增以產生最後位移以用於計算有效位址。根據不同的全運算碼字段774(說明於下文中)及資料處理字段754C,數值N係由處理器硬體於運作時間決定。位移字段762A及位移因子字段762B為選項之一因為其並非用於無記憶體存取705指令樣板及/或不同的實施例只可應用一個或兩個都沒有。
資料元素寬度字段764-其內容識別係將利用之多個資料元素寬度之一(於某些,全部指令之實施例;於其它只有某些指令之實施例)。此字段可選擇不需要,假若只 應用於一個資料元素寬度及/或多個資料元素寬度而利用某些特點運算碼。
儲存遮罩字段770-其內容決定,根據資料元素位置,是否目標向量運算元資料元素位置產生基礎操作及擴充操作之結果。當B類指令樣板應用於合併-及歸零-寫入遮罩,A類指令樣板應用於合併-寫入遮罩。當合併時,向量遮罩接受於目標之任何組元素以於任何操作執行之更新保全(由基礎操作及擴充操作構成);於其它一實施例,保留目標之每一個元素舊有數值,其中對應的遮罩位元具有一0數值。相對而言,當歸零向量遮罩於任何操作執行中接受任何組元素被歸零(由基礎操作及擴充操作構成);於一實施例,當對應的遮罩位元具有0數值,目標之元素設定為0。此功能之子集具有控制操作執行之向量長度之能力(亦即,元素長度,由第一至最末一個被修改);然而,元素之修改不需要為連續的。因此,儲存遮罩字段770適用於部分向量操作,包括讀取,儲存,算數,邏輯等。當本發明實施例說明,儲存遮罩字段之770內容選擇具有被利用之儲存遮罩之多個儲存遮罩暫存器之一(及因此儲存遮罩字段之770內容間接辨識將執行之遮罩),以另一實施例或額外的接受遮罩寫入字段之770內容直接指定執行之遮罩。
即時字段772-其內容適用於一即時之指定內容。此字段係可選擇,因為其未應用於未支援即時之一般向量合用格式應用及其並未應用於未利用即時值之指令。
類別字段768-其內容識別不同的類別指令。關於第7A-B圖,此字段之內容由A類及B類指令選擇。於第7A-B圖,圓邊角正方形用以表示應用於字段之特殊數值(亦即,分別於第7A-B圖,類別字段768之類768A及B類768B)。
A類指令樣板
當beta字段754識別將執行之指定類型操作,於非-記憶體存取705A類指令樣板,alpha字段752係解譯為RS字段752A,其內容識別將執行之不同的擴充操作類型之一(亦即,取整數752A.1及資料轉換752A.2係分別應用於無記憶體存取,取整數類型操作710及無記憶體存取,資料轉換類型操作715指令樣板)。於無記憶體存取705指令樣板,比例字段760,位移字段762A,及位移比例字段762B並未應用。
無記憶體存取指令樣板-全取整數控制類型操作
於無記憶體存取全取整數控制類型操作710指令樣板,beta字段754係解譯為取整數控制字段754A,其內容提供靜態取整數結果。當本發明實施例說明取整數控制字段754A包括抑制全部浮點例外(SAE)字段756及取整數操作控制字段758,另一實施例可支援編碼該兩個概念於相同字段中或只有其中一個或另一個該些概念/字段(亦即,只可具有取整數操作控制字段758)。
SAE字段756-其內容決定是否關閉例外事件報告;當SAE字段之756內容表示抑制啟動,給定指令未報告任何浮點例外旗標及未產生任何浮點例外處理器。
取整數操作控制字段758-其內容識別一組取整數操作之一以執行(亦即,調升,調降,調向零及調至最近整數)。因此,取整數操作控制字段758適用於以指令為基礎之取整數模式之改變。於本發明之實施例,其中一處理器包括控制暫存器用於指定取整數模式,取整數操作控制字段之750內容取消暫存器數值。
無記憶體存取指令樣板-資料轉換類型操作
於無記憶體存取資料轉換類型操作715指令樣板,beta字段754解譯為資料轉換字段754B,其內容識別將執行之多個資料轉換之一(亦即,無資料轉換,攪亂,播送)。
於A類記憶體存取720指令樣板,alpha字段752係解譯為驅逐提示字段752B,其內容識別將利用之驅逐提示之一(於第7A圖,暫存752B.1及非-暫存752B.2分別用於記憶體存取,暫存725指令樣板為記憶體存取,及非-暫存730指令樣板),當beta字段754係解譯為資料處理字段754C,其內容識別將執行之多個資料處理操作之一(同時被稱為早期的)(亦即,無之程序;播送;來源之調升轉換;及目標之調降轉換)。記憶體存取720指令樣板包括比例字段760,及選項位移字段762A或位移比例
字段762B。
以應用轉換支援,向量記憶體指令執行向量讀取於及向量儲存至記憶體。於應用一般向量指令,向量記憶體指令以資料元素-型態方式傳輸資料於/至記憶體,傳輸之元素實際上直接由選擇為寫入遮罩之向量遮罩之內容取得。
記憶體存取指令樣板-暫存
暫存資料係可能很快再利用之資料以利用快取。亦即,因而,提示,及不同的處理器可將其應用於不同的方式,包括忽略提示完全。
記憶體存取指令樣板-非-暫存
非-暫存資料係資料不可能很快再用於1st-級快取記憶體快取及將優先驅逐。亦即,因而,提示,及不同的處理器可將其應用於不同的方式,包括完全忽略提示。
B類指令樣板
於B類指令樣板,alpha字段752係解譯為儲存遮罩控制(Z)字段752C,其內容決定是否由儲存遮罩字段770控制之儲存遮罩將合併或歸零。
當其餘的beta字段754識別將執行之指定類型操作,於B類非-記憶體存取705指令樣板,部分beta字段754係解譯為RL字段757A,其內容識別將執行之不同的擴充操作類型之一(亦即,取整數757A.1及向量長度(V 尺寸)757A.2係分別應用於無記憶體存取,儲存遮罩控制,部分取整數控制類型操作712指令樣板及無記憶體存取,儲存遮罩控制,V尺寸類型操作717指令樣板)。於無記憶體存取705指令樣板,比例字段760,位移字段762A,及位移比例欄位762B係並未應用。
於無記憶體存取,儲存遮罩控制,部分取整數控制類型操作710指令樣板,其餘的beta字段754係解譯為取整數操作字段759A及例外事件報告係關閉(既有之指令不報告任何浮點例外旗標及不產生任何浮點例外處理)。
取整數操作控制字段759A-正如取整數操作控制字段758,其內容識別一組取整數操作之一以執行(亦即,調升,調降,調向零及調至最近整數)。因此,取整數操作控制字段759A適用於以指令為基礎之取整數模式之改變。於本發明之實施例,其中處理器包括控制暫存器用於指定取整數模式,乃取整數操作控制字段之750內容取消暫存器數值。
於無記憶體存取,儲存遮罩控制,V尺寸類型操作717指令樣板,其餘的beta字段754係解譯為向量長度字段759B,其內容識別將執行之多個資料向量長度之一(亦即,128,256,或512位元組)。
當其餘的beta字段754係解譯為向量長度字段759B,於記憶體存取720B類指令樣板,部分beta字段754係解譯為播送字段757B,其內容決定是否播送類型資料處理操作將被執行。記憶體存取720指令樣板包括比例字段 760,及選項位移字段762A或位移比例字段762B。
關於一般向量親合指令格式700,其中全運算碼字段774包括格式字段740,基礎操作字段742,及資料元素寬度字段764。當一實施例中全運算碼字段774包括全部該些字段,全運算碼字段774包括少於未應用其全部之實施例之全部字段。全運算碼字段774提供操作碼(運算碼)。
擴充操作字段750,資料元素寬度字段764,及儲存遮罩字段770應用以指令為基礎以一般向量親合指令格式之該些特徵。
儲存遮罩字段及資料元素寬度字段之組合產生類型之指令以使遮罩應用於不同的資料元素寬度。
不同指令樣板為A類及B類中在不同的情形下有用。於某些本發明實施例,不同的處理器或於處理器中之不同的核心只可應用A類,或B類,或兩個類別。例如,用於一般用途計算之高效能一般用途亂序核心只可應用B類,主要用於圖像及/或科學的(處理量)計算之核心只可支援A類,及用於兩個之核心可應用兩類(當然,核心具有兩個類別之某些樣板及指令之混合而非兩個類別之全部樣板及指令為本發明應用之範圍)。同時,單一處理器可包括多重核心,其全部應用相同類別或不同的核心應用不同的類別。例如,於具有分立的圖像及一般用途核心之處理器,當一個或多個一般用途核心為一般用途高效能核心可進行亂序執行及暫存器重新命名用於只支援B類之一般用 途計算,圖像核心之一主要用於只支援A類之圖像及/或科學計算。未具有分立的圖像核心之其它處理器,可包括多個一般用途循序或亂序核心適用於兩類及B類。當然,一個類別之特徵可同時應用於不同實施例之其它類別。高階語言程式將編入(亦即,即時編輯或靜態編輯)許多不同的可執行形式,包括:1)用於執行只具有由目標處理器應用類別之指令形式;或2)具有另一常式形式,該常式係利用不同全部類別的指令組合寫入用於執行並具有控制流程碼選擇常式以根據由目前執行碼處理器支援之不同的指令執行。
範例指定向量親合指令格式
第8圖,根據本發明實施例,係一方塊圖說明範例特殊的向量親合指令格式。第8圖係說明特殊的向量親合指令格式800因為特殊的原因為其指定特殊的向量親合指令格式位置,尺寸,解譯,及字段之順序,以及某些字段之數值。特殊的向量親合指令格式800可利用以延長x86指令集,及因此某些字段係類似或相同於該些利用於現有的x86指令集及延長之字段(亦即,VEX)。此格式保持一致於字首編碼字段,實際運算碼位元組字段,MODR/M字段,SIB字段,位移字段,及現有具有延長之x86指令集字段中。第7圖字段成為第8圖字段之對映說明於文中。
顯而易見,雖然本發明實施例係以一般向量親合指令格式700說明相關的特殊的向量親合指令格式800,除了 申請專利權項界定以外,本發明不限定於特殊的向量親合指令格式800。例如,當特殊的向量親合指令格式800具有特殊尺寸之字段,一般向量親合指令格式700可用於許多不同字段之可能尺寸。舉一特殊實例而言,當資料元素寬度字段764係舉例為特殊的向量親合指令格式800之一個一位元字段,本發明未限定於此(亦即,一般向量親合指令格式700可用於其它資料元素寬度字段764之尺寸)。
一般向量親合指令格式700包括說明於第8A圖之以下字段。
EVEX字首(位元組0-3)802-係以四個-位元組形式編碼。
格式字段740(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式字段740並包含0x62(讀特的數值用以標示向量親合指令格式於本發明之一實施例)。
第二-第四位元組(EVEX位元組1-3)包括提供特殊的功能之多個位元字段。
REX字段805(EVEX位元組1,位元[7-5])-包括EVEX.R位元字段(EVEX位元組1,位元[7]-R),EVEX.X位元字段(EVEX位元組1,位元[6]-X),及757X位元組1,位元[5]-B)。EVEX.R,EVEX.X,及EVEX.B位元字段提供如對應的VEX位元字段之相同功能,及利用1s補數形式編碼,例如,ZMM0係編碼為1111B,ZMM15係編碼為0000B。其它指令之字段編碼暫存器索引業界習知之較 低的三個位元(rrr,xxx,及bbb),因此Rrrr,Xxxx,及Bbbb可由加入EVEX.R,EVEX.X,及EVEX.B形成。
REX’字段710-此係第一部分REX’字段710及係EVEX.R’位元字段(EVEX位元組1,位元[4]-R’)用以編碼延長32之較高的16或較低的16暫存器組。於本發明之實施例,此位元,及其它列示於下文者,係以位元倒轉格式儲存以由BOUN指令識別(於習知之x8632-位元模式),其實際運算碼位元組為62,但是不適用於MODR/M字段(說明如下)於MOD字段之數值11;另一本發明實施例未以倒轉格式儲存此及以下其它顯示之位元。數值1係用以編碼較低的16暫存器。換言之,R’Rrrr係由結合EVEX.R’,EVEX.R,及其它RRR於其它字段形成。
運算碼對映字段815(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱示前導運算碼位元組(0F,0F38,或0F3)。
資料元素寬度字段764(EVEX位元組2,位元[7]-W)-表示為EVEX.W標記。EVEX.W係用以表示(32-位元資料元素或64-位元資料元素)之粒度(尺寸)。
EVEX.vvvv820(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之作用可包括以下:1)EVEX.vvvv編碼第一來源暫存器運算元,應用於倒轉(1s補數)形式及適用於具有2個或多個來源運算元之指令;2)EVEX.vvvv編碼目標暫存器運算元,應用於某些向量移位之1s補數形式;或3)EVEX.vvvv未編碼任何運算元,該字段被保留並將包含 1111b。因此,EVEX.vvvv字段820編碼4個第一來源暫存器指定器之低階位元儲存於倒轉(1s補數)形式。依指令,極不同的EVEX位元字段用以延長指定器尺寸至32個暫存器。
EVEX.U768類別字段(EVEX位元組2,位元[2]-U)-假若EVEX.U=0,表示A類或EVEX.U0;假若EVEX.U=1,顯示B類或EVEX.U1。
字首編碼字段825(EVEX位元組2,位元[1:0]-pp)-提供基礎操作字段之額外位元。於用於提供既有指令於EVEX字首格式之外,此同時適合於壓緊SIMD字首(而非需要一位元組以表示SIMD字首,EVEX字首需要只有2位元)。於一實施例中,用於利用SIMD字首之既有指令(66H,F2H,F3H)於兩個既有格式及EVEX字首格式,該些既有IMD字首係編入IMD字首編碼字段;及於運作時間提供至解碼器之PLA之前係擴大至既有IMD字首(因此PLA能夠執行該些既有指令之兩個既有及EVEX格式),而不需要修改。雖然較新的指令可利用EVEX字首直接編碼字段之內容如同一運算碼延長,針對一致性某些實施例擴大類似應用方式但是適用於由該些既有IMD字首指定之不同譯意。另一實施例可重新設計PLA以應用於2位元IMD字首編碼,及因此不需要擴大。
alpha字段752(EVEX位元組3,位元[7]-EH;同時被稱為EVEX.EH,EVEX.Rs,EVEX.RL,EVEX。儲存遮罩控制,及EVEX.N;同時表示為α)-如上所述,此字段係 特定的內容。
beta字段754(EVEX位元組3,位元[6:4]-SS,同時被稱為EVEX.s2-0,EVEX.Rs2-0,EVEX.Rr1,EVEX.LL0,EVEX.LLB;同時表示為βββ)-如上所述,此字段係特定的內容。
REX’字段710-此係REX’字段之保留器及係EVEX.V’位元字段(EVEX位元組3,位元[3]-V’)可利用以編碼延長32暫存器組之較高的16個或較低的16個暫存器組。此位元以位元倒轉格式儲存。數值1係用以編碼較低的16個暫存器。換言之,V’VVVV係由結合EVEX.V’,EVEX.vvvv形成。
儲存遮罩字段770(EVEX位元組3,位元[2:0]-kkk)-其內容標示暫存器之索引於儲存遮罩暫存器,如上所述。於本發明之實施例,特殊的數值EVEX.kkk=000具有特殊的性質意味非儲存遮罩用於特別的指令(此可應用許多方式包括利用儲存遮罩以電性連接至所有全部或旁路遮罩硬體之硬體)。
實際運算碼字段830(位元組4)係同時被稱為運算碼位元組。部分運算碼係應用於此字段。
MODR/M字段840(位元組5)包括MOD字段842,Reg字段844,及R/M字段846。如上所述,MOD字段之842內容識別記憶體存取及非-記憶體存取操作。Reg字段844之作用能夠歸納為兩種情形:編碼目標暫存器運算元或來源暫存器運算元之一,或當做運算碼延長及未利用於 編碼任何指令運算元。R/M字段846之作用可包括下列:編碼相關之記憶體位址之指令運算元,或編碼目標暫存器運算元或來源暫存器運算元。
比例,索引,基礎(SIB)位元組(位元組6)-如上所述,比例字段之750內容係用以記憶體位址產生。SIB.xxx854及SIB.bbb856-該些字段之內容係有關於先前之暫存器索引Xxxx及Bbbb。
位移字段762A(位元組7-10)-當MOD字段842包含10,位元組7-10為位移字段762A,及其作用如同既有32-位元位移(disp32)並運作於位元組粒度。
位移因子字段762B(位元組7)-當MOD字段842包含01,位元組7係位移因子字段762B。此字段之位置與該些運作於位元組粒度之既有x86指令集8-位元位移(disp8)相同。因為disp8係延長符號,只能定址於-128及127位元組偏移之間;關於64位元組快取記憶體內存線,disp8利用8位元只可設定四個實際利用之數值-128,-64,0,及64;因為經常需要較大的範圍,disp32被應用;然而,disp32需要4位元組。相對於disp8及disp32,位移因子字段762B係一disp8再解譯;當利用位移因子字段762B,實際位移係由位移因子字段之內容,與記憶體運算元存取(N)之尺寸相乘決定。此類型位移係參照為disp8*N。此減少平均指令長度(單一位元組用以位移但具有更大的範圍)。前述壓縮的位移係假設有效位移為記憶體存取數倍粒度,及因此,備援位址子集之低階位元不需 要編碼。換言之,位移因子字段762B取代既有x86指令集8-位元位移。因此,位移因子字段762B以與x86指令集8-位元位移相同方式編碼(因此未改變ModRM/SIB編碼原則)只有唯一例外disp8係讀取至disp8*N。換言之,未改變編碼原則或編碼長度但是只有由硬體造成之位移數值解譯(其需要由記憶體運算元之尺寸縮放位移以獲得位元組-式位址偏移)。
即時字段772操作如上所述。
全運算碼字段
第8B圖,根據本發明實施例,係一方塊圖說明特殊的向量親合指令格式800之字段構成全運算碼字段774。特別地,全運算碼字段774包括格式字段740,基礎操作字段742,及資料元素寬度(W)字段764。基礎操作字段742包括字首編碼字段825,運算碼對映字段815,及實際運算碼字段830。
暫存器索引字段
第8C圖,根據本發明實施例,係一方塊圖說明特殊的向量親合指令格式800之字段構成暫存器索引字段744。特別地,暫存器索引字段744包括REX字段805,REX’字段810,MODR/M/reg字段844,MODR/M/r/m字段846,VVVV字段820,xxx字段854,及bbb字段856。
擴充操作字段
第8D圖,根據本發明實施例,係一方塊圖說明特殊的向量親合指令格式800之字段構成擴充操作字段750。當類別(U)字段768包含0,其表示VEX.U0(A類768A);當包含1,其表示VEX.U1(B類768B)。當U=0及MOD字段842包含11(代表無記憶體存取操作),alpha字段752(EVEX位元組3,位元[7]-EH)係解譯為rs字段752A。當rs字段752A包含1(取整數752A.1),beta字段754(EVEX位元組3,位元[6:4]-SS)係解譯為取整數控制字段754A。取整數控制字段754A包括一個位元SAE字段756及兩個位元取整數操作字段758。當rs字段752A包含0(資料轉換752A.2),beta字段754(EVEX位元組3,位元[6:4]-SS)係解譯為三個位元資料轉換字段754B。當U=0及MOD字段842包含00,01,或10(代表記憶體存取操作),alpha字段752(EVEX位元組3,位元[7]-EH)係解譯為驅逐提示(EH)字段752B及beta字段754(EVEX位元組3,位元[6:4]-SS)係解譯為三位元資料處理字段754C。
當U=1,alpha字段752(EVEX位元組3,位元[7]-EH)係解譯為儲存遮罩控制(Z)字段752C。當U=1及MOD字段842包含11(代表無記憶體存取操作),部分beta字段754(EVEX位元組3,位元[4]-S0)係解譯為RL字段757A;當其包含1(取整數757A.1)其餘的beta字段754(EVEX位元組3,位元[6-5]-S2-1)係解譯為取整數操作字段759A,即當RL字段757A包含0(V尺寸757。)其 餘的beta字段754(EVEX位元組3,位元[6-5]-S2-1)係解譯為向量長度字段759B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD字段842包含00,01,或10(代表記憶體存取操作),beta字段754(EVEX位元組3,位元[6:4]-SS)係解譯為向量長度字段759B(EVEX位元組3,位元[6-5]-L1-0)及播送字段757B(EVEX位元組3,位元[4]-B)。
範例編碼為指定向量親合指令格式 範例暫存器構造
第9圖,根據本發明實施例,係一暫存器構造900方塊圖。於說明之實施例,32個向量暫存器910為512位元寬;該些暫存器係參照為zmm0至zmm31。較低的16zmm暫存器之低階256位元係覆蓋暫存器ymm0-16。較低的16zmm暫存器之低階128位元(ymm暫存器之較低階128位元)係覆蓋暫存器xmm0-15。特殊的向量親合指令格式800操作於該些覆蓋之暫存器欄位如下表所示。
換言之,向量長度字段759B係選自最大長度及一個或多個其它較短的長度,其中每一個前述較短的長度係一半先前的長度;及指令樣板不具向量長度字段759B以最大向量長度操作。進一步,於一實施例,特殊的向量親合指令格式800之B類指令樣板以封包或純量單/雙精度浮點資料及封包或純量整數資料操作。純量操作係執行操作之zmm/ymm/xmm暫存器之低階資料元素位置;依實施例而定高階資料元素位置係維持相同於指令之前或歸零。
說明於實施例之儲存遮罩暫存器915,8個儲存遮罩暫存器(k0至k7),每一個之尺寸64位元。於另一實施例,儲存遮罩暫存器915係16位元之尺寸。如上所述,於本發明之實施例,向量遮罩暫存器k0不能夠應用為儲存遮罩;當編碼一般顯示器k0係用於儲存遮罩,其選擇電性連接0xFFFF儲存遮罩以有效關閉其指令之儲存遮罩。
說明於實施例之一般用途暫存器925,十六個64-位元一般用途暫存器係利用現有的x86定址模式以定址記憶體運算元。該些暫存器係參照為名稱sRAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP,及R8至R15。
說明於實施例之純量浮點堆疊暫存器欄位(x87堆疊)945,別名為MMX封包整數平整暫存器欄位950,利用x87指令集延長x87堆疊係一八-元素堆疊利用以執行32/64/80-位元浮點資料純量浮點操作;當MMX暫存器係利用以執行64-位元封包整數資料之操作,以及用以保留運算元用於某些執行於MMX及XMM暫存器間之操作。
另一本發明實施例可利用較寬的或較窄的暫存器。另外,另一本發明實施例可利用較多,較少,或不同的暫存器欄位及暫存器。
範例核心構造,處理器,及電腦構造
處理器核心可以不同的方式,不同的用途,及不同的處理器應用。例如,前述核心應用裝置可包括:1)用於一般用途計算之一般用途循序核心;2)用於一般用途計算之高效能一般用途亂序核心;3)主要用於圖像及/或科學(處理量)計算。之特殊用途核心之不同處理器應用裝置可包括:1)CPU包括一個或多個一般用途循序核心用於一般用途計算及/或一個或多個一般用途亂序核心以用於一般用途計算;及2)共處理器包括一個或多個主要用於圖像及/或科學(處理量)特殊用途核心。前述不同的處理器以用於不同的電腦系統構造,可包括:1)CPU之分立的晶片之共處理器;2)於相同封裝體如CPU之分立的晶粒之共處理器;3)CPU同一晶粒之共處理器(其中,前述共處理器有時可為特殊用途邏輯,例如整合圖像及/或科學(處理量)邏輯,或特殊用途核心);及4)包含於相同晶粒已說明之CPU之晶片中之系統(有時為應用核心或應用處理器),以上說明之共處理器,及額外的功能元件。範例核心構造說明如下,一併說明範例處理器及電腦構造。
範例核心構造 循序及亂序核心方塊圖
第10A圖,根據本發明實施例,係一方塊圖說明兩個範例循序管線及範例暫存器重新命名,亂序發出/執行管線。第10B圖,根據本發明實施例,係一方塊圖說明循序構造核心之最佳實施例及範例暫存器重新命名,處理器中之亂序發出/執行構造核心。實線框框於第10A-B圖說明循序管線及循序核心,當選擇添加虛線框框之暫存器重新命名,亂序發出/執行管線及核心。既有循序特點係亂序特點之一部分,亂序特點說明如下。
於第10A圖,處理器管線1000包括擷取階段1002,長度解碼1004,解碼階段1006,分配階段1008,重新命名階段1010,排程(同時被稱為分派或發出)階段1012,暫存器讀取/記憶體讀取階段1014,執行階段1016,寫回/記憶體寫入階段1018,例外處理階段1022,及確認階段1024。
第10B圖係說明處理器核心1090包括前端單元1030,前端單元1030耦接至執行引擎單元1050,及前述二者係耦接至記憶體單元1070。核心1090可為精簡指令集計算(RISC)核心,複雜指令集計算(CISC)核心,極長的指令字元(VLIW)核心,或混合或另一核心類型。更有其它選擇,核心1090可特殊用途核心,諸如,例如,網路或通訊核心,壓縮引擎,共處理器核心,一般用途計算圖像處理單元(GPGPU)核心,圖像核心等。
前端單元1030包括偏移預估單元1032,偏移預估單 元1032耦接至指令快取記憶體單元1034,指令快取記憶體單元1034係耦接至指令轉譯備援緩衝器(TLB)1036,指令轉譯備援緩衝器(TLB)1036係耦接至指令擷取單元1038,指令擷取單元1038係耦接至解碼單元1040。解碼單元1040(或解碼器)可解碼指令,及產生輸出如一個或多個微-操作,微碼入口點,微指令,其它指令,或其它控制信號,輸出係由原始指令解碼,或另外顯示,或獲得。解碼單元1040可應用不同機制。適合的機制實例包括,但不限定於,對照表,硬體應用,可程式邏輯陣列(PLA),微碼唯獨記憶體(ROM)等於一實施例中,核心1090包括微碼ROM或其它媒體儲存微碼於某些巨集指令(亦即,於解碼單元1040或另外於前端單元1030中)。解碼單元1040係耦接至執行引擎單元1050中之重新命名/分配器單元1052。
執行引擎單元1050包括重新命名/分配器單元1052,重新命名/分配器單元1052耦接至引退單元1054及一組之一個或多個排程器單元1056。排程器單元1056代表任何數目之不同排程器,包括保留站,中央指令窗等排程器單元1056係耦接至實體暫存器欄位單元1058。每一個實體暫存器欄位單元1058代表一個或多個實體暫存器欄位,不同的實體暫存器欄位儲存一個或多個不同的資料類型,例如純量整數,純量浮點,封包整數,封包浮點,向量整數,向量浮點,狀態(亦即,下一個執行之指令位址之指令指標)等於一實施例中,實體暫存器欄位單元1058包 含向量暫存器單元,儲存遮罩暫存器單元,及純量暫存器單元。該些暫存器單元可應用為構造向量暫存器,向量遮罩暫存器,及一般用途暫存器。實體暫存器欄位單元1058係由引退單元1054覆蓋以示範應用暫存器重新命名及亂序執行之不同方式(亦即,利用重排序緩衝器及引退暫存器欄位;利用未來欄位,歷史紀錄緩衝器,及引退暫存器欄位;利用暫存器對映及一群暫存器;等)。引退單元1054及實體暫存器欄位單元1058係耦接至執行叢集1060。執行叢集1060包括一組之一個或多個執行單元1062及一組之一個或多個記憶體存取單元1064。執行單元1062可執行不同操作(亦即,移位、加法、減法、乘法)及以不同類型資料執行(亦即,純量浮點,封包整數,封包浮點,向量整數,向量浮點)。當某些實施例可包括多個執行單元用於特殊的功能或功能組組,其它實施例可包括只有一個執行單元或多重執行單元,該全部執行全部功能排程器單元1056,實體暫存器欄位單元1058,及執行叢集1060可為複數個,因為某些實施例產生某些類型資料/操作之分立管線(亦即,純量整數管線,純量浮點/封包整數/封包浮點/向量整數/向量浮點管線,及/或每一個具有其自身排程器單元之記憶體存取管線,實體暫存器欄位單元,及/或執行叢集-及於分立的記憶體存取管線時,某些實施例係應用於只在此管線之執行叢集具有記憶體存取單元1064)。同時,顯而易見其中分立的管線係利用,一個或多個該些管線可亂序發出/執行及其餘的循序。
記憶體存取單元1064組係耦接至記憶體單元1070,其包括資料TLB單元1072耦接至資料快取記憶體單元1074,資料快取記憶體單元1074耦接至2級(L2)快取記憶體單元1076。於一個最佳實施例,記憶體存取單元1064可包括讀取單元,儲存位址單元,及儲存資料單元,每一個係耦接至於記憶體單元1070之資料TLB單元1072。指令快取記憶體單元1034進一步耦接至記憶體單元1070之2級(L2)快取記憶體單元1076。L2快取記憶體單元1076係耦接至一個或多個其它級之快取記憶體及最後到主記憶體。
舉例而言,範例暫存器重新命名,亂序發出/執行核心構造可應用之管線1000如下:1)指令擷取1038執行擷取階段1002及長度解碼階段1004;2)解碼單元1040執行解碼階段1006;3)重新命名/分配器單元1052執行分配階段1008及重新命名階段1010;4)排程器單元1056執行排程階段1012;5)實體暫存器欄位單元1058及記憶體單元1070執行暫存器讀取/記憶體讀取階段1014;執行叢集1060執行執行階段1016;6)記憶體單元1070及實體暫存器欄位單元1058執行寫回/記憶體寫入階段1018;7)不同單元可包含於例外處理階段1022;及8)引退單元1054及實體暫存器欄位單元1058執行確認階段1024。
核心1090可應用於一個或多個指令集(亦即,x86指令集(具有已加入較新的版本之某些延長);MIPS科技之MIPS指令集Sunnyvale,CA;(ARM Holding之ARM指 令集Sunnyvale,CA(具有選項額外的延長例如NEON)),包含此處說明之指令。於一實施例中,核心1090包括邏輯以應用於封包資料指令集延長(亦即,VEX1,VEX2,及/或某些形式先前說明之一般向量親合指令格式(U=0及/或U=1)),因而適用於以封包資料執行由許多多媒體裝置利用之操作。
顯而易見,核心可用於多重執行緒(執行兩個或多個並列組操作或讀取),及可因而以許多方式進行包括時間分割多重執行緒,同步多重執行緒(其中單一實體核心提供邏輯核心用於每一個同步多重執行緒之實體核心),或以上之組合(亦即,時間分割擷取及解碼及同步多重執行緒,例如Intel®超執行緒技術)。
當暫存器重新命名係以亂序執行說明,顯而易見暫存器重新命名可利用於循序構造。當說明處理器之實施例同時包括分立的指令及資料快取記憶體單元1034/1074及共享L2快取記憶體單元1076,另一實施例可具有單一內部快取記憶體用於兩個指令及資料,例如,1級(L1)內部快取記憶體,或多重級之內部快取記憶體。於某些實施例,系統可包括內部快取記憶體及核心及/或處理器之外部快取記憶體之組合。可選擇地,全部快取記憶體可於核心及/或處理器外部。
指定範例循序核心構造
第11A-B圖說明更特殊的範例循序核心構造方塊圖 ,該核心可為許多邏輯區塊之一(包括相同類型及/或不同的類型之其它核心)於晶片。邏輯區塊經由高頻寬互連網路(亦即,環狀網路)與具有某些固定功能邏輯,記憶體I/O介面,及其它必需的I/O邏輯通訊,依應用方式而定。
第11A圖,根據本發明實施例,係一單一處理器核心方塊圖,及其至晶粒上互連網路1102之連接及2級(L2)快取記憶體1104之區域子集。於一實施例中,指令解碼器1100應用具有封包資料指令集延長之x86指令集。L1快取記憶體1106適用於低延遲存取由快取記憶體至純量及向量單元。當一實施例(為簡化設計),純量單元1108及向量單元1110利用分立的暫存器組(個別地,純量暫存器1112及向量暫存器1114)及傳輸於其間之資料係寫入記憶體及然後由1級(L1)快取記憶體1106讀回,另一本發明實施例可利用不同的方式(亦即,利用單一暫存器組或包括通訊路徑以使資料傳輸於兩個暫存器欄位之間而不需寫入及讀回)。
L2快取記憶體1104之區域子集係部分全域L2快取記憶體,全域L2快取記憶體分為分立的區域子集,一個於一個處理器核心。每一個處理器核心具有指引存取路徑至其自身L2快取記憶體1104之區域子集。由處理器核心讀取之資料係儲存於其L2快取記憶體子集1104並能夠快速存取,並與其它處理器核心一起存取其自身區域L2快取記憶體子集。由處理器核心寫入之資料係儲存於其自身L2快取記憶體子集1104及來自其它子集,假若必要的話 。環狀網路確保共享資料一致性。環狀網路為雙向以接受代理例如處理器核心,L2快取記憶體及其它邏輯區塊於晶片中互相通訊。每一個資料-路徑係1012-位元寬於每一個方向。
第11B圖,根據本發明實施例,係第11A圖之部分處理器核心分解圖。第11B圖包括L1資料快取記憶體1106部分L1快取記憶體1104,以及更多關於向量單元1110及向量暫存器1114之細節。特別地,向量單元1110係一16-寬度向量處理單元(VPU)(請參照16-寬度U1128),以執行一個或多個整數,單精度浮點,及雙精度浮點指令。VPU以攪亂單元1120攪亂暫存器輸入,以數值轉換單元1122A-B,數值轉換及以複製單元1124複製於記憶體輸入。儲存遮罩暫存器1126接受預估取得的向量寫入。
具有整合記憶體控制器及圖像之處理器
第12圖,根據本發明實施例,係一處理器1200方塊圖可具有大於一個核心,整合記憶體控制器,及整合圖像。第12圖實線框框係表示處理器1200具有單一核心1202A,系統代理1210,一組之一個或多個匯流排控制器單元1216,當選擇加入虛線框框表示另一處理器1200具有多重核心1202A-N,一組之一個或多個整合記憶體控制器單元1214於系統代理單元1210,及特殊用途邏輯1208。
因此,不同的處理器1200之應用可包括:1)CPU具有整合圖像及/或科學(處理量)邏輯等特殊用途邏輯1208( 可包括一個或多個核心),及核心1202A-N一個或多個一般用途核心(亦即,一般用途循序核心,一般用途亂序核心,兩者之組合);2)共處理器核心1202A-N,核心1202A-N為大量特殊用途核心主要用於圖像及/或科學(處理量);及3)共處理器具有核心1202A-N,核心1202A-N為大量一般用途循序核心。因此,處理器1200可為一般用途處理器,共處理器或特殊用途處理器,例如,網路或通訊處理器,壓縮引擎,圖像處理器,GPGPU(一般用途圖像處理單元),高處理量輸出許多整合核心(MIC)共處理器(包括30或多個核心),嵌入式處理器等,該處理器可應用於一個或多個晶片。處理器1200可為部分及/或可應用於一個或多個基板以應用多個任何製程技術,例如,BiCMOS,CMOS,或NMOS。
記憶體階層包括一個或多個級核心中之快取記憶體,一組或一個或多個共享快取記憶體單元1206,及外部記憶體(未說明)耦接至組整合記憶體控制器單元1214。共享快取記憶體單元1206組可包括一個或多個中級快取記憶體,例如2級(L2),3級(L3),4級(L4),或其它級之快取記憶體,最末級快取記憶體(LLC),及/或其組合。當一實施例環狀互連單元1212連接整合圖像邏輯1208,共享快取記憶體單元1206,及系統代理單元1210/整合記憶體控制器單元1214,另一實施例可利用任何數目之習知互連前述單元技術。於一實施例中,一個或多個快取記憶體單元1206及核心1202-A-N之間保持一致性。
於某些實施例,一個或多個核心1202A-N係能夠進行多重執行緒。系統代理1210包括該些部件協調及操作核心1202A-N。系統代理單元1210可包括例如電源控制單元(PCU)及顯示單元。PCU或可包括邏輯及部件用於調整核心1202A-N及整合圖像邏輯1208電源狀態。顯示單元係用於驅動一個或多個外部連接顯示器。
核心1202A-N可同類或非同類之構造指令集;亦即,當其它核心只能執行該指令集或不同的指令集之子集,兩個或多個核心1202A-N可執行相同指令集。
範例電腦構造
第13-16圖係範例電腦構造方塊圖。其它系統設計及業界知名之結構可用於筆記型電腦,桌上型電腦,手提式PC,個人數位助理,工程工作站,伺服器,網路裝置,網路集線器,開關,嵌入式處理器,數位信號處理器(DSP),圖像裝置,視訊遊戲裝置,機上盒,微控制器,手機,可攜式媒體播放裝置,手提式裝置,及不同其它電子裝置同時適用。一般而言,能夠結合處理器及/或其它揭示於此處之執行邏輯之大量系統或電子裝置通常都可適用。
請參考第13圖,根據本發明之一實施例,其係說明系統1300方塊圖。系統1300可包括一個或多個處理器1310,1315,處理器1310,1315係耦接至控制器集線器1320。於一實施例中,控制器集線器1320包括圖像記憶 體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可於分立的晶片);GMCH1390包括記憶體及圖像控制器係耦接記憶體1340及共處理器1345;IOH1350係耦接輸入/輸出(I/O)裝置1360至GMCH1390。可選擇地,一個或兩個記憶體及圖像控制器係整合於處理器中(如此處所說明),記憶體1340及共處理器1345係直接耦接至處理器1310,及於單一晶片具有IOH1350之控制器集線器1320。
可選擇額外的處理器1315之特點係以虛線表示於第13圖。每一個處理器1310,1315可包括一個或多個此處說明之處理核心及可為某些版本之處理器1200。
記憶體1340可為,例如,動態隨機存取記憶體(DRAM),相變記憶體(PCM),或兩者之組合。針對至少一實施例,控制器集線器1320與處理器1310,1315通訊經由多分支匯流排,例如前端匯流排(FSB),點對點介面例如快速路徑互連(Quick Path Interconnect,QPI),或類似連接1395。
於一實施例中,共處理器1345係一特殊用途處理器,諸如,例如,高處理量MIC處理器,網路或通訊處理器,壓縮引擎,圖像處理器,GPGPU,嵌入式處理器等於一實施例中,控制器集線器1320可包括整合圖像加速器。
可能的許多差異存在於實體資源1310,1315之間,以相關貢獻度為考量包括構造,微構造,溫度,電力損耗特性等。
於一實施例中,處理器1310執行控制一般類型資料處理操作之指令。嵌入於指令中者可為共處理器指令。處理器1310可識讀該些共處理器指令為將由附加共處理器1345執行之類型。因此,經由共處理器匯流排或其它互連處理器1310發出該些共處理器指令(或代表共處理器指令之控制信號),至共處理器1345。共處理器1345接受及執行接收共處理器指令
請參考第14圖,根據本發明實施例,其係說明第一更特殊的範例系統1400方塊圖。如第14圖所示,多重處理器系統1400係一點對點互連系統,及包括第一處理器1470及第二處理器1480,二者藉由點對點互連1450耦接。每一個處理器1470及1480可為某些版本之處理器1200。於本發明之實施例,當共處理器1438為共處理器1345,處理器1470及1480係分別為處理器1310及1315。於其它實施例,處理器1470及1480係分別為處理器1310及共處理器1345。
處理器1470及1480分別包括整合記憶體控制器(IMC)單元1472及1482。處理器1470同時包括部分其匯流排控制器單元點對點(點對點)介面1476及1478;類似地,第二處理器1480包括點對點介面1486及1488。處理器1470,1480可經由點對點(點對點)介面1450利用點對點介面電路1478,1488交換資訊。如第14圖所示,IMCs1472及1482耦接處理器至個別的記憶體,亦即記憶體1432及記憶體1434,其可為部分主記憶體區域耦接至 個別的處理器。
處理器1470,1480,每一個個別經由點對點介面1452,1454利用點對點介面電路1476,1494,1486,1498可與晶片組1490交換資訊。晶片組1490可選擇與共處理器1438經由高效能介面1439交換資訊。於一實施例中,共處理器1438係一特殊用途處理器,諸如,例如,高處理量MIC處理器,網路或通訊處理器,壓縮引擎,圖像處理器,GPGPU,嵌入式處理器等
共享快取記憶體(未說明)可包含於其中一處理器或兩個處理器之外部並經由點對點互連與兩個處理器連接,假若處理器係設置於低功率模式,兩個處理器之區域快取記憶體資訊可儲存於共享快取記憶體。
經由介面1496晶片組1490可耦接至第一匯流排1416。於一實施例中,第一匯流排1416可為週邊組件互連(PCI)匯流排,或例如PCI快速匯流排或其它第三產生I/O互連匯流排等匯流排,雖然本發明之範圍未限定於此。
如第14圖所示,不同I/O裝置1414可耦接至第一匯流排1416,及以滙流排橋接器1418耦接第一匯流排1416至第二匯流排1420。於一實施例中,一個或多個額外的處理器1415,例如共處理器,高處理量MIC處理器,GPGPU加速器(例如,亦即,圖像加速器或數位信號處理(DSP)單元),字段可程式閘陣列,或任何其它處理器,係耦接至第一匯流排1416。於一實施例中,第二匯流排1420可為低接腳數(LPC)匯流排。不同裝置可耦接至第二 匯流排1420包括,例如,鍵盤及/或滑鼠1422,通訊裝置1427及儲存單元1428例如磁碟機或其它大容量儲存裝置等之裝置包括於一實施例中之指令/碼及資料1430。進一步,音訊I/O1424可耦接至第二匯流排1420。請注意,其它構造可能被應用。例如,除了第14圖之點對點構造,系統可應用多分支匯流排或其它前述構造。
請參考第15圖,根據本發明實施例,其係說明第二更特殊的範例系統1500方塊圖。於第14及15圖之類似元素具有類似參照數值,及第14圖之某些特點已由第15圖略去以避免模糊第15圖之其它特點。
第15圖說明處理器1470,1480可分別包括整合記憶體及I/O控制邏輯(“CL”)1472及1482。因此,CL1472,1482包括整合記憶體控制器單元及包括I/O控制邏輯。第15圖不只說明記憶體1432,1434耦接至CL1472,1482,而且說明I/O裝置1514係同時耦接至控制邏輯1472,1482。既有I/O裝置1515係耦接至晶片組1490。
請參考第16圖,根據本發明實施例,其係說明SoC1600方塊圖。於第12圖之類似元素具有類似參照數值。同時,虛線框框係為於更先進的SoC選擇性特徵。於第16圖,互連單元1602係耦接至:應用處理器1610,應用處理器1610包括一組之一個或多個核心1202A-N及共享快取記憶體單元1206;並耦接至系統代理單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;及一組或一個或多個共處理器1620,共處理器 1620可包括整合圖像邏輯,影像處理器,音訊處理器,及視訊處理器;並耦接至靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640以用於耦接至一個或多個外部顯示器。於一實施例中,共處理器1620包括特殊用途處理器,諸如,例如,網路或通訊處理器,壓縮引擎,GPGPU,高處理量MIC處理器,嵌入式處理器等
此處揭示之機制實施例可應用於硬體,軟體,韌體,或前述應用方式之組合。本發明實施例可為電腦程式或程式碼於可程式系統執行,可程式系統包含至少一個處理器,儲存系統(包括揮發及非-揮發記憶體及/或儲存元素),至少一個輸入裝置,及至少一個輸出裝置。
程式碼,例如碼1430說明於第14圖中,可用以輸入指令以執行此處說明之功能及產生輸出資訊。輸出資訊可以習知方式應用至一個或多個輸出裝置。於此應用中,處理系統包括具有處理器之任何系統,例如;數位信號處理器(DSP),微控制器,應用特殊的整合電路(ASIC),或微處理器。
程式碼可用於高階程序或目的導向程式化語言以與處理系統通訊。程式碼可同時用於組合或機械語言,於必要時。事實上,此處說明之機制不限定於任何特別的程式化語言。不論如何,該語言可為編輯或解譯之語言。
至少一實施例之一個或多個特點可應用於儲存於電腦可讀媒體之代表性指令,該媒體於處理器中代表不同邏輯 若機械讀取可使機械形成邏輯以執行此處說明之技術。前述之代表,為“IP核心”其可儲存於實體的,電腦可讀媒體及供應不同消費者或創造適用性以讀入實際產生邏輯或處理器之製造機械。
前述電腦可讀儲存媒體可包括,不受限制於,非-非暫時性,由機械或裝置製造或形成之實體配置,包括儲存媒體例如硬碟,任何包括軟碟之其它類型碟片,光碟,唯讀記憶體光碟(CD-ROM),可覆寫光碟片之(CD-RW),及磁光碟片,半導體裝置例如唯讀記憶體(ROM),隨機存取記憶體(RAM)例如動態隨機存取記憶體(DRAM),靜態隨機存取記憶體(SRAM),可擦除可程式唯讀記憶體(EPROM),快閃記憶體,電子可擦除可程式唯讀記憶體(EEPROM),相變記憶體(PCM),磁鐵或光學卡,或任何其它類型媒體用於儲存電子指令。
因此,本發明實施例同時包含指令或設計資料之非-非暫時性,實體的電腦可讀媒體,例如硬體描述語言(HDL)用以表明此處說明之結構,電路,裝置,處理器及/或系統特徵。前述實施例可同時為程式產出物。
模擬(包括二進位轉譯,碼變形等)
某些情形下,指令轉換器可利用以由來源指令集轉換指令至目標指令集。例如,指令轉換器可轉譯(亦即,利用靜態二進位轉譯,包括動態編譯之動態二進位轉譯),變形,模擬,或另外轉換指令為一個或多個由核心處理之 其它指令。指令轉換器可應用於軟體,硬體,韌體,或一組合。指令轉換器可為On處理器(On processor),Off處理器(Off processor),或部分On及部分Off處理器。
第17圖,根據本發明實施例,係一方塊圖比較軟體指令轉換器轉換來源指令集之二進位指令與轉換目標指令集之二進位指令。於說明實施例,指令轉換器係一軟體指令轉換器,雖然可另外應用指令轉換器於軟體,韌體,硬體,或不同組合。第17圖係說明高階語言1702程式可利用x86編輯器1704編輯以產生x86二進位碼1706,x86二進位碼1706可於本機由處理器具有至少一個x86指令集核心1716執行。處理器具有至少一個x86指令集核心1716代表任何能夠執行實質上如具有至少一個x86指令集之核心之Intel處理器相同功能之處理器,係藉由相容的執行或另外處理(1)實質部分之Intel x86指令集核心指令集或(2)應用裝置之目標碼版本或其它軟體以運作於具有至少一個x86指令集核心之Intel處理器,以達成與具有至少一個x86指令集核心之Intel處理器實質上相同效果。x86編輯器1704代表編輯器可操作以產生x86二進位碼1706(亦即,目的碼),可需要或不需要額外執行具有至少一個x86指令集核心1716處理器之相關程序。類似地,第17圖係說明高階語言1702程式可利用另一指令集編輯器1708編輯以產生另一指令集二進位碼1710,該指令集二進位碼1710可於本機由不具至少一個x86指令集核心1714之處理器執行(亦即,處理器具有一核心可執行 MIPS科技之MIPS指令集Sunnyvale,CA及/或可執行ARM Holding之ARM指令集Sunnyvale,CA)。指令轉換器1712係利用以轉換x86二進位碼1706成為可於本機由不具x86指令集核心1714處理器執行之碼。已轉換之碼不可能與另一指令集二進位碼1710相同因為能夠完成此項動作之指令之轉換器不容易製造;然而,已轉換之碼可完成一般操作及組成另一指令集之指令。因此,指令轉換器1712代表軟體,韌體,硬體,或其組合,以經由模擬,仿真或任何其它程序,可使處理器或其它電子裝置未具ex86指令集處理器或核心執行x86二進位碼1706。
當流程圖提出某些由本發明實施例執行之特別操作順序,顯而易見,前述順序係範例作用(亦即,另一實施例可以不同的順序執行該些操作,結合某些操作,覆蓋某些操作等)。
以上所述,用以說明,提出許多的特殊的細節以提供本發明實施例之詳細說明。然而,顯而易見,對於一個熟悉業界之人士,一個或多個其它實施例可於缺少某些該些特殊的細節情形下實施。已說明之特別實施例並非用以限制本發明而是用於說明本發明實施例。本發明之範圍並非由上述特殊實施例決定,只依以下申請專利範圍而定。
100‧‧‧轉置指令
105‧‧‧運算元
200‧‧‧轉置指令
205‧‧‧運算元
310‧‧‧操作
315‧‧‧操作
320‧‧‧操作
400‧‧‧核心
410‧‧‧前端單元
420‧‧‧指令擷取單元
425‧‧‧解碼單元
415‧‧‧執行引擎單元
435‧‧‧重新命名/分配器單元
440‧‧‧排程器單元
445‧‧‧實體暫存器欄位單元
450‧‧‧引退單元
455‧‧‧執行叢集
465‧‧‧記憶體存取單元
460‧‧‧執行單元
470‧‧‧快取記憶體共處理單元
472‧‧‧操作單元
473‧‧‧控制單元
474‧‧‧解碼單元
476‧‧‧回路控制
478‧‧‧高速緩存鎖定單元
480‧‧‧錯誤控制單元
482‧‧‧快取記憶體陣列
484‧‧‧讀取單元
486‧‧‧儲存位址單元
488‧‧‧儲存資料單元
490‧‧‧卸載指令單元
510‧‧‧操作
515‧‧‧操作
520‧‧‧操作
525‧‧‧操作
530‧‧‧操作
602‧‧‧VEX字首
605‧‧‧REX字段
615‧‧‧運算碼對映字段
620‧‧‧VEX.vvvv字段
625‧‧‧字首編碼iNg字段
640‧‧‧格式字段
642‧‧‧基礎操作字段
630‧‧‧實際運算碼字段
664‧‧‧W字段
642‧‧‧MOD字段
644‧‧‧Reg字段
646‧‧‧R/M字段
652‧‧‧ss
654‧‧‧xxx
656‧‧‧bbb
650‧‧‧SIB位元組
662‧‧‧位移字段
672‧‧‧即時字段(IMM8)
700‧‧‧一般向量親合指令格式
705‧‧‧無記憶體存取
712‧‧‧取整數控制類型操作
720‧‧‧記憶體存取
727‧‧‧記憶體存取
740‧‧‧格式字段
742‧‧‧基礎操作字段
744‧‧‧暫存器索引字段
746‧‧‧修改器字段
746A‧‧‧無記憶體存取
746B‧‧‧記憶體存取
750‧‧‧擴充操作字段
752‧‧‧alpha字段
752A‧‧‧rs字段
752A.1‧‧‧取整數
752A.2‧‧‧資料轉換
752B‧‧‧驅逐提示字段
752C‧‧‧儲存遮罩控制(Z)字段
754‧‧‧beta字段
754A‧‧‧取整數控制字段
754B‧‧‧資料轉換字段
754C‧‧‧資料處理字段
756‧‧‧SAE字段
757A‧‧‧RL字段
757A.2‧‧‧向量長度(V尺寸)
757B‧‧‧播送字段
758‧‧‧取整數操作字段
759A‧‧‧取整數操作字段
759B‧‧‧向量長度字段
760‧‧‧比例字段
762A‧‧‧位移字段
762B‧‧‧位移比例字段
764‧‧‧資料元素寬度字段
768‧‧‧類別字段
768A‧‧‧A類
768B‧‧‧B類
770‧‧‧儲存遮罩字段
772‧‧‧即時字段
774‧‧‧全運算碼字段
800‧‧‧特殊的向量親合指令格式
802‧‧‧EVEX字首
805‧‧‧REX字段
810‧‧‧REX’字段
815‧‧‧運算碼對映字段
820‧‧‧EVEX.vvvv
825‧‧‧字首編碼iNg字段
830‧‧‧實際運算碼字段
840‧‧‧MODR/M字段
842‧‧‧MOD字段
844‧‧‧Reg字段
846‧‧‧R/M字段
850‧‧‧SIB
854‧‧‧xxx字段
856‧‧‧bbb字段
900‧‧‧暫存器構造
910‧‧‧向量暫存器
915‧‧‧儲存遮罩暫存器
925‧‧‧一般用途暫存器
945‧‧‧純量浮點堆疊暫存器欄位(x87堆疊)
950‧‧‧MMX封包整數平整暫存器欄位
1000‧‧‧處理器管線
1002‧‧‧擷取階段
1004‧‧‧長度解碼階段
1006‧‧‧解碼階段
1008‧‧‧分配階段
1010‧‧‧重新命名階段
1012‧‧‧排程階段
1014‧‧‧暫存器讀取/記憶體讀取階段
1016‧‧‧執行階段
1018‧‧‧寫回/記憶體寫入階段
1022‧‧‧例外處理階段
1024‧‧‧確認階段
1090‧‧‧處理器核心
1030‧‧‧前端單元
1032‧‧‧偏移預估單元
1034‧‧‧指令快取記憶體單元
1036‧‧‧指令轉譯備援緩衝器
1038‧‧‧指令擷取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重新命名/分配器單元
1054‧‧‧引退單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器欄位單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取記憶體單元
1076‧‧‧2級(L2)快取記憶體單元
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧2級(L2)快取記憶體
1106‧‧‧L1快取記憶體
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1106A‧‧‧L1資料快取記憶體
1120‧‧‧攪亂單元
1122A-B‧‧‧數值轉換單元
1124‧‧‧複製單元
1126‧‧‧儲存遮罩暫存器
1128‧‧‧16-寬度ALU
1200‧‧‧處理器
1202A‧‧‧核心
1202N‧‧‧核心
1204A-N‧‧‧快取記憶體
1206‧‧‧共享快取記憶體單元
1208‧‧‧特殊用途邏輯
1210‧‧‧系統代理單元
1212‧‧‧環狀互連單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧控制器集線器
1345‧‧‧共處理器
1350‧‧‧IOH
1340‧‧‧記憶體
1360‧‧‧輸入/輸出(I/O)裝置
1390‧‧‧GMCH
1395‧‧‧連接
1400‧‧‧多重處理器系統
1414‧‧‧I/O裝置
1415‧‧‧處理器
1416‧‧‧第一匯流排
1418‧‧‧滙流排橋接器
1420‧‧‧第二匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音訊I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧指令/碼資料
1432‧‧‧記憶體
1434‧‧‧記憶體
1438‧‧‧共處理器
1450‧‧‧點對點互連
1452‧‧‧點對點介面
1454‧‧‧點對點介面
1470‧‧‧第一處理器
1472‧‧‧整合記憶體控制器(IMC)單元
1478‧‧‧點對點介面電路
1476‧‧‧點對點介面
1480‧‧‧第二處理器
1482‧‧‧整合記憶體控制器(IMC)單元
1486‧‧‧點對點介面
1488‧‧‧點對點介面
1500‧‧‧系統
1514‧‧‧I/O裝置
1515‧‧‧I/O裝置
1600‧‧‧SoC
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧共處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編輯器
1706‧‧‧x86二進位碼
1708‧‧‧指令集編輯器
1710‧‧‧指令集二進位碼
1712‧‧‧指令轉換器
1714‧‧‧x86指令集核心
1716‧‧‧x86指令集核心
本發明係舉例說明且不限制於以下圖示,其中類似參照符號顯示其中類似元素: 第1圖根據本發明實施例說明轉置指令之執行範例;第2圖根據本發明實施例,說明其它範例轉置指令之執行;第3圖,根據本發明實施例,係一流程圖說明範例操作用於轉置資料元素於向量暫存器或記憶體位置由執行單一轉置指令;第4圖,根據本發明實施例,係一方塊圖說明循序構造核心之最佳實施例及範例暫存器重新命名,亂序發出/執行構造核心包括範例快取記憶體共處理單元執行指令已由處理核心之執行叢集讀取;第5圖,根據本發明實施例,係一流程圖說明範例操作用於執行讀取之指令;第6A圖,根據本發明實施例,說明範例VEX指令格式包括VEX字首,實際運算碼字段,ModR/M位元組,SIB位元組,位移字段,及IMM8;第6B圖,根據本發明實施例,說明第6A圖字段構成全運算碼字段及基礎操作字段;第6C圖,根據本發明實施例,說明第6A圖字段構成暫存器索引字段;第7A圖,根據本發明實施例,係一方塊圖說明一般向量親合指令格式及A類指令樣板;第7B圖,根據本發明實施例,係一方塊圖說明一般向量親合指令格式及B類指令樣板第8A圖,根據本發明實施例,係一方塊圖說明範例 特殊的向量親合指令格式;第8B圖,根據本發明實施例,係一方塊圖說明第8A圖特殊的向量親合指令格式之字段構成全運算碼字段;第8C圖,根據本發明實施例,係一方塊圖說明特殊的向量親合指令格式之字段構成暫存器索引字段;第8D圖,根據本發明實施例,係一方塊圖說明特殊的向量親合指令格式之字段構成擴充操作字段;第9圖,根據本發明實施例,係一暫存器構造方塊圖;第10A圖,根據本發明實施例,係一方塊圖說明兩個範例循序管線及範例暫存器重新命名,亂序發出/執行管線;第10B圖,根據本發明實施例,係一方塊圖說明兩個循序構造核心之最佳實施例及範例暫存器重新命名,亂序發出/執行構造核心包括於處理器;第11A圖,根據本發明實施例,係一單一處理器核心方塊圖,及其連接至晶粒上互連網路及於其2級(L2)快取記憶體之區域子集;第11B圖,根據本發明實施例,係一部分處理器核心分解圖於第11A圖;第12圖,根據本發明實施例,係一處理器方塊圖可具有大於一個核心,可具有整合記憶體控制器,及可具有整合圖像;第13圖,根據本發明實施例,係一系統方塊圖; 第14圖,根據本發明實施例,係一第一更特殊的範例系統方塊圖;第15圖,根據本發明實施例,係一第二更特殊的範例系統方塊圖;第16圖,根據本發明實施例,係一SoC方塊圖;及第17圖,根據本發明實施例,係一方塊圖比較利用軟體指令轉換器以轉換二進位指令於來源指令集至二進位指令於目標指令集。
400‧‧‧核心
410‧‧‧前端單元
415‧‧‧執行引擎單元
420‧‧‧指令擷取單元
425‧‧‧解碼單元
435‧‧‧重新命名/分配器單元
440‧‧‧排程器單元
445‧‧‧實體暫存器欄位單元
450‧‧‧引退單元
455‧‧‧執行叢集
460‧‧‧執行單元
465‧‧‧記憶體存取單元
470‧‧‧快取記憶體共處理單元
472‧‧‧操作單元
473‧‧‧控制單元
474‧‧‧解碼單元
476‧‧‧回路控制
478‧‧‧高速緩存鎖定單元
480‧‧‧錯誤控制單元
482‧‧‧快取記憶體陣列
484‧‧‧讀取單元
486‧‧‧儲存位址單元
488‧‧‧儲存資料單元
490‧‧‧卸載指令單元

Claims (21)

  1. 一種計算系統中之快取記憶體共處理單元,包含:一快取記憶體陣列,用以儲存資料;一硬體解碼單元,用以解碼指令,該指令係為該計算系統之一執行叢集執行而卸載,以於該執行叢集及該快取記憶體共處理單元之間減少讀取操作及儲存操作;及一組之一個或多個操作單元,用以根據該解碼之指令,於該快取記憶體陣列執行複數個操作。
  2. 如申請專利範圍第1項之快取記憶體共處理單元,其中該組操作單元進一步包括一組之一個或多個緩衝器以暫時儲存正在操作之資料。
  3. 如申請專利範圍第1項之快取記憶體共處理單元,進一步包含:一控制單元包括一高速緩存鎖定單元,以鎖定該快取記憶體陣列由該組操作單元正在操作之一區域。
  4. 如申請專利範圍第1項之快取記憶體共處理單元,其中該控制單元進一步包括一回路控制單元以控制該解碼之指令循環該快取記憶體陣列。
  5. 如申請專利範圍第1項之快取記憶體共處理單元,其中該組操作單元包括邏輯用以寫入至該快取記憶體陣列及邏輯以由該快取記憶體陣列讀取。
  6. 如申請專利範圍第1項之快取記憶體共處理單元,其中該解碼單元進一步解碼由該計算系統之該執行叢集接收之讀取及儲存需求,及其中該組操作單元係以處理該讀 取及儲存需求。
  7. 如申請專利範圍第1項之快取記憶體共處理單元,其中該複數個操作由該組操作單元以該解碼之指令執行,包括讀取操作或儲存操作。
  8. 如申請專利範圍第1項之快取記憶體共處理單元,其中至少一個為該計算系統之一執行叢集執行而卸載之該指令需要執行計算,及其中該組操作單元包括一組之一個或多個執行單元以該至少一個指令執行計算。
  9. 一種由計算系統執行之一電腦實施方法,包含:擷取一指令;解碼該擷取之指令;決定該解碼之指令由該計算系統之一快取記憶體共處理單元執行;發出該解碼之指令至該快取記憶體共處理單元;解碼該快取記憶體共處理單元之該發出之指令;及執行該快取記憶體共處理單元中由該快取記憶體共處理單元解碼之該指令。
  10. 如申請專利範圍第9項之電腦實施方法,其中該指令使得該快取記憶體共處理單元執行以下動作之其中一個:設定該計算系統之該快取記憶體共處理單元之一快取記憶體陣列至少一部分為一數值,複製該快取記憶體陣列之一部分至該快取記憶體陣列之其它部分,及轉置該快取記憶體陣列之一部分之資料元素。
  11. 如申請專利範圍第9項之電腦實施方法,其中該 指令係一持續執行的計算操作,於該快取記憶體共處理單元之一快取記憶體陣列資料之一相鄰區域執行。
  12. 如申請專利範圍第9項之電腦實施方法,其中執行由該快取記憶體共處理單元解碼之該指令包括一組該快取記憶體共處理單元之一快取記憶體陣列之一個或多個區域之操作。
  13. 如申請專利範圍第12項之電腦實施方法,其中執行由該快取記憶體共處理單元解碼之該指令進一步包括設定一高速緩存鎖定於該組正在操作之該快取記憶體陣列之區域。
  14. 一種裝置,包含:一第一硬體解碼單元以解碼一指令,及決定為一執行叢集之執行單元執行而卸載之該指令由一快取記憶體共處理單元執行,以於該執行叢集及該快取記憶體共處理單元之間減少讀取操作和儲存操作;一卸載指令單元以發出該指令至該快取記憶體共處理單元;及該快取記憶體共處理單元包括:一快取記憶體陣列用以儲存資料,及一第二硬體解碼單元用以解碼由該卸載指令單元發出之該指令,及一組之一個或多個操作單元用以根據該解碼之指令,於該快取記憶體陣列執行複數個操作。
  15. 如申請專利範圍第14項之裝置,其中該組操作單 元進一步包括一組之一個或多個緩衝器,以暫時儲存正在操作之資料。
  16. 如申請專利範圍第14項之裝置,其中該快取記憶體共處理單元進一步包含:一控制單元包括一高速緩存鎖定單元,以鎖定由該組操作單元正在操作之該快取記憶體陣列之一區域。
  17. 如申請專利範圍第14項之裝置,其中該控制單元進一步包括一回路控制單元,以控制該指令循環該快取記憶體陣列。
  18. 如申請專利範圍第14項之裝置,其中該組操作單元包括邏輯以寫入至該快取記憶體陣列及邏輯以由該快取記憶體陣列讀取。
  19. 如申請專利範圍第14項之裝置,進一步包含:一讀取單元以發出讀取需求至該快取記憶體共處理單元;一儲存位址單元及儲存資料單元以發出儲存需求至該快取記憶體處理單元;其中該第二硬體解碼單元進一步解碼該讀取需求及儲存需求,及其中該組操作單元用以處理該讀取及儲存需求。
  20. 如申請專利範圍第14項之裝置,其中由該組操作單元執行之該複數個操作包括讀取操作或儲存操作。
  21. 如申請專利範圍第14項之裝置,其中該快取記憶體共處理單元係為一級快取記憶體。
TW101149592A 2011-12-30 2012-12-24 快取記憶體共處理單元 TWI510921B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068213 WO2013101216A1 (en) 2011-12-30 2011-12-30 Cache coprocessing unit

Publications (2)

Publication Number Publication Date
TW201346555A true TW201346555A (zh) 2013-11-16
TWI510921B TWI510921B (zh) 2015-12-01

Family

ID=48698448

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101149592A TWI510921B (zh) 2011-12-30 2012-12-24 快取記憶體共處理單元

Country Status (5)

Country Link
US (1) US20140013083A1 (zh)
CN (1) CN104137060B (zh)
RU (1) RU2586589C2 (zh)
TW (1) TWI510921B (zh)
WO (1) WO2013101216A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990660B2 (en) * 2010-09-13 2015-03-24 Freescale Semiconductor, Inc. Data processing system having end-to-end error correction and method therefor
US9164690B2 (en) * 2012-07-27 2015-10-20 Nvidia Corporation System, method, and computer program product for copying data between memory locations
CN103546825A (zh) * 2013-09-29 2014-01-29 青岛盛嘉信息科技有限公司 一种视频加载方法
CN104683830A (zh) * 2013-11-29 2015-06-03 青岛永通电梯工程有限公司 一种视频加载装置
CN104683826A (zh) * 2013-11-29 2015-06-03 青岛永通电梯工程有限公司 一种无线下载加速方法
CN104717263A (zh) * 2013-12-17 2015-06-17 青岛龙泰天翔通信科技有限公司 一种无线云端下载加速装置
EP3087490A1 (en) * 2013-12-23 2016-11-02 Intel Corporation Instruction and logic for memory access in a clustered wide-execution machine
US9996350B2 (en) * 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10642617B2 (en) * 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
CN107678781B (zh) * 2016-08-01 2021-02-26 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10558575B2 (en) * 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US20180189675A1 (en) * 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US10387037B2 (en) * 2016-12-31 2019-08-20 Intel Corporation Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives
RU2689433C1 (ru) * 2018-06-14 2019-05-28 Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ Вычислительный модуль и способ обработки с использованием такого модуля
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11288067B2 (en) * 2019-05-24 2022-03-29 Texas Instruments Incorporated Vector reverse
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218711A (en) * 1989-05-15 1993-06-08 Mitsubishi Denki Kabushiki Kaisha Microprocessor having program counter registers for its coprocessors
JP2522048B2 (ja) * 1989-05-15 1996-08-07 三菱電機株式会社 マイクロプロセッサ及びそれを使用したデ―タ処理装置
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
TW343318B (en) * 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6487640B1 (en) * 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US7380106B1 (en) * 2003-02-28 2008-05-27 Xilinx, Inc. Method and system for transferring data between a register in a processor and a point-to-point communication link
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US7237065B2 (en) * 2005-05-24 2007-06-26 Texas Instruments Incorporated Configurable cache system depending on instruction type
US8527713B2 (en) * 2006-01-31 2013-09-03 Qualcomm Incorporated Cache locking without interference from normal allocations
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8200917B2 (en) * 2007-09-26 2012-06-12 Qualcomm Incorporated Multi-media processor cache with cache line locking and unlocking
US8041900B2 (en) * 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US8627014B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US20130007370A1 (en) * 2011-07-01 2013-01-03 Oracle International Corporation Method and apparatus for minimizing working memory contentions in computing systems

Also Published As

Publication number Publication date
US20140013083A1 (en) 2014-01-09
CN104137060B (zh) 2018-03-06
WO2013101216A1 (en) 2013-07-04
RU2586589C2 (ru) 2016-06-10
CN104137060A (zh) 2014-11-05
TWI510921B (zh) 2015-12-01
RU2014126085A (ru) 2016-01-27

Similar Documents

Publication Publication Date Title
TWI510921B (zh) 快取記憶體共處理單元
TWI743058B (zh) 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI496080B (zh) 轉置指令之技術
CN107153524B (zh) 用于给出相应复数的复共轭的计算设备和计算机可读介质
CN103999037B (zh) 用于响应于单个指令来执行横向相加或相减的系统、装置和方法
CN112861073B (zh) 用于执行16位浮点向量点积指令的系统和方法
TWI483185B (zh) 具三個純量項之超級乘加(超級乘加(super MADD))指令
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
CN107220029B (zh) 掩码置换指令的装置和方法
TWI515650B (zh) 用於遮罩暫存器擴充操作之設備及方法
CN104081340B (zh) 用于数据类型的下转换的装置和方法
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
KR102462174B1 (ko) 벡터 비트 셔플을 수행하기 위한 방법 및 장치
TWI556164B (zh) 具有不同讀取及寫入遮罩之多元件指令
CN108415882B (zh) 利用操作数基础系统转换和再转换的向量乘法
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
CN107391086B (zh) 改进置换指令的装置和方法
CN110471699B (zh) 用于指令处理的处理器核、方法和系统
CN107193537B (zh) 经改进的插入指令的装置和方法
TW201741868A (zh) 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
CN109643235B (zh) 用于多源混合操作的装置、方法和系统
TW201349106A (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees