用于處理器的功率效率的向量掩碼驅動時鐘門控的制作方法
【技術領域】
[0001] 本發明的多個實施例總體涉及微處理器。更具體地說,本發明的多個實施例涉及 微處理器的功率管理。
【背景技術】
[0002] 功耗是現代電子器件和基于處理器的設備中的主要顧慮。近幾年中,將膝上型計 算機和筆記本計算機用于移動計算已變得常見。同樣,移動設備正變成忙碌的專業人員的 標準配件。此外,如今的移動設備中的許多設備包括作為標準特征的功能,從而使得用戶可 在移動時訪問email、玩電腦游戲或訪問互聯網。在所有這些示例中,電子設備依賴于諸如 電池之類的有限的電源。因此,減少功耗并進而增加電池壽命是投放對市場有吸引力的產 品并因此有經濟利益可圖的重要因素。
[0003] 減少基于處理器的設備中的功耗的一種方法是減少該處理器的功耗。通常的技術 是基于在給定時刻正在被執行的操作或操作集,禁用該處理器內不被使用的功能塊。此外, 啟用和禁用功能塊的過程固有地是動態的,因為這些塊應當被啟用以便不引進任何處理等 待時間,但是應當被迅速地禁用以便使過度的當前使用最小化。
[0004] 諸如英特爾的高級向量擴展(AVX)之類的更先進的處理器能以向量方式處理單 指令多數據(SMD)指令。這些指令中的一些基于掩碼操作數,對多個數據元素執行多個操 作。圖1是示出向量執行規則的框圖。例如,指令VADDPS 2匪1作1},2匪2,2匪3對512位寄 存器中的32位數據元素執行多至16個單精度(SP)加法操作,這些操作全部并行地執行。 掩碼kl是16位寄存器,該16位寄存器的每一位與將以該向量指令被處理的每一個數據元 素有關。如果掩碼位是一,則數據元素被處理,并且被寫入到目的地中。如果掩碼位是零, 則處理器寫入零或保持目的地不變(取決于寫掩碼操作模式)。在硬件中,全部16個元素 總是在作為單個實體的向量算術邏輯單元(ALU)內被操作。遺憾的是,由于在向量ALU內 被執行的一定百分比的操作將由于其相關的掩碼位被設置為零而被丟棄,因此存在功率效 率損失。圖2是示出掩碼驅動AVX操作的示例的偽代碼。
【附圖說明】
[0005] 在所附附圖的多個圖中,以示例方式而非限制方式說明本發明的多個實施例,在 附圖中,同樣的參考標號指示類似的元件。
[0006] 圖1是示出向量執行規則的框圖。
[0007] 圖2是示出掩碼驅動AVX操作的示例的偽代碼。
[0008] 圖3是根據本發明的一個實施例的處理器或處理器核的執行流水線的框圖。
[0009] 圖4是示出根據本發明的一個實施例的掩碼驅動SIMD指令的操作的框圖。
[0010] 圖5是根據本發明的另一實施例的處理器或處理器核的框圖。
[0011] 圖6是示出根據本發明的一個實施例的、由處理器執行的方法的流程圖。
[0012] 圖7A示出根據本發明的一個實施例的示例性高級向量擴展(AVX)指令格式。
[0013] 圖7B示出根據本發明的另一實施例的示例性高級向量擴展(AVX)指令格式。
[0014] 圖7C示出根據本發明的又一實施例的示例性高級向量擴展(AVX)指令格式。
[0015] 圖8A是示出根據本發明的多個實施例的通用向量友好指令格式及其A類指令模 板的框圖。
[0016] 圖8B是示出根據本發明的多個實施例的通用向量友好指令格式及其B類指令模 板的框圖。
[0017] 圖9A是示出根據本發明的一個實施例的示例性專用向量友好指令格式的框圖。
[0018] 圖9B是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0019] 圖9C是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0020] 圖9D是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0021] 圖10是根據本發明的一個實施例的寄存器架構的框圖。
[0022] 圖11A是示出根據本發明的多個實施例的示例性有序流水線和示例性的寄存器 重命名的無序發布/執行流水線的框圖。
[0023] 圖11B是示出根據本發明的多個實施例的要包括在處理器中的有序架構核的示 例性實施例和示例性的寄存器重命名的無序發布/執行架構核的框圖。
[0024] 圖12A是根據本發明的一個實施例的處理器核的框圖。
[0025] 圖12B是根據本發明的另一實施例的處理器核的框圖。
[0026] 圖13是根據本發明的多個實施例的處理器的框圖。
[0027] 圖14是根據本發明的一個實施例的系統的框圖;
[0028] 圖15是根據本發明的實施例的更具體的示例性系統的框圖。
[0029] 圖16是根據本發明的另一實施例的更具體的示例性系統的框圖。
[0030] 圖17是根據本發明的實施例的SoC的框圖。
[0031] 圖18是根據本發明的多個實施例的、對照使用軟件指令轉換器將源指令集中的 二進制指令轉換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0032] 將參考以下所討論的細節來描述本發明的各實施例和方面,并且所附附圖將說明 各實施例。下列描述和附圖是說明本發明的,并且不應當被解釋為限制本發明。描述許多 具體的細節以提供對本發明的各實施例的透徹理解。然而,在某些實例中,不描述公知的或 常規的細節,以便提供本發明實施例的簡潔討論。
[0033] 在本說明書中提到"一個實施例"或"實施例",意思是指結合該實施例所描述的特 定特征、結構或特性可以被包括在本發明的至少一個實施例中。在本說明書中的不同位置 出現短語"在一個實施例中"不一定都是指同一個實施例。
[0034] 根據一些實施例,SMD指令的掩碼值可用于確定特定的數據元素是否將由將向目 的地寫入值的對應的ALU處理。如果確定了數據元素將不被處理,則對應的向量通道(例 如,處理該數據元素的處理元件(包括ALU)、寄存器組、數據總線分派路徑、引退單元中的 寫回路徑等)的功耗可減少或被關閉。
[0035] 在一個實施例中,可在向量指令的分派開始時讀取掩碼值,使得可在向量ALU流 水線中,在數據元素層級上執行時鐘門控,從而避免因對將不會在目的地上被更新的數據 元素的值進行的不必要的位切換而造成的動態功耗浪費。時鐘門控可應用于多個流水線 級,包括向量寄存器讀取、數據總線分派、混洗和數據變換、ALU執行和寫回等。
[0036] 圖3是根據本發明的一個實施例的處理器或處理器核的框圖。參考圖3,處理器 100可表示任何種類的指令處理裝置或處理元件。處理元件是指線程、進程、上下文、邏輯處 理器、硬件線程、核和/或共享對處理器的其他共享資源(例如,預留單元、執行單元、流水 線和更高層級的高速緩存/存儲器)的訪問的任何處理元件。物理處理器通常是指潛在地 包括諸如核或硬件線程之類的任意數量的其他處理元件的集成電路。核通常是指位于集成 電路上的、能夠維持獨立架構狀態的邏輯,其中,每一個被獨立地維持的架構狀態與至少一 些專用執行資源相關聯。在一個實施例中,處理器100可以是通用處理器。處理器100可 以是各種復雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指 令字(VLIW)處理器中的任何處理器,可以是上述處理器的各種混合,或者可以完全是其他 類型的處理器。處理器100也可表示一個或多個處理器核。
[0037] 可在不同的處理器中,出于不同的目的,以不同的方式來實現處理器核。例如,此 類核的實現可包括:1)旨在用于通用計算的通用有序核;2)旨在用于通用計算的高性能通 用無序核;3)旨在主要用于圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現 可包括:1)中央處理單元(CPU),其包括旨在用于通用計算的一個或多個通用有序核和/或 旨在用于通用計算的一個或多個通用無序核;以及2)協處理器,其包括旨在主要用于圖形 和/或科學(吞吐量)的一個或多個專用核。此類不同處理器導致不同的計算機系統架構, 其可包括:1)在與CPU分開的芯片上的協處理器;2)在與CPU相同的封裝中但分開的管芯 上的協處理器;3)與CPU在相同管芯上的協處理器(在該情況下,此類協處理器有時被稱 為諸如集成圖形和/或科學(吞吐量)邏輯之類的專用邏輯,或被稱為專用核);以及4)可 以將所描述的CPU (有時被稱為應用核或應用處理器)、以上描述的協處理器和附加功能包 括在同一管芯上的芯片上系統。接著描述示例性核架構,隨后描述示例性處理器和計算機 架構。
[0038] 在一個實施例中,處理器100包括但不限于形成處理器流水線的指令取出單元 101、指令解碼器102、重命名/分配器103、調度器/分派器104、一個或多個執行單元105 和引退單元106。可由多個線程共享流水線或流水線的部分(例如,流水線的前端或指令 解碼部分102)。復制架構狀態寄存器(沒有示出),因此能夠存儲單獨的架構狀態/上下 文以用于不同的邏輯處理器。也可復制其他更小的資源(例如,重命名分配器邏輯103中 的指令指針和重命名邏輯)以用于多個線程。可通過分區操作來共享諸如重排序/引退單 元106中的重排序緩沖器、加載/存儲緩沖器和隊列之類的一些資源。而可以潛在地完全 共享諸如通用內部寄存器(例如,寄存器108)、頁表基寄存器、低層級數據高速緩存(例如, 高速緩存107)和數據轉換緩沖器(TLB)、執行單元104和無序單元(沒有示出)之類的資 源。
[0039] 在一個實施例中,指令解碼器102用于對從指令取出單元101接收到的指令進行 解碼。這些指令可以是從集成在處理器100之內或與處理器100緊密關聯的高速緩存存儲 器107中取出的宏指令,或者可以經由系統總線從外部存儲器中檢索到。指令解碼器102 可對這些宏指令進行解碼,并且生成或輸出反映這些指令或從這些指令導出的一個或多個 微操作、微代碼、進入點、微指令、其他指令或其他控制信號。指令解碼器102可使用各種不 同的機制來實現。合適的機制的示例包括但不僅限于,微代碼只讀存儲器(ROM)、查找表、硬 件實現、可編程邏輯陣列(PLA)等。
[0040] 在一個實施例中,分配器和重命名單元103包括用于預留資源的分配器,諸如用 于存儲指令處理結果的寄存器組。然而,線程可能能夠無序執行,其中,分配器和重命名單 元103也預留其他資源(例如,用于追蹤指令結果的重排序緩沖器)。單元130也可包括寄 存器重命名器,其用于將程序/指令引用寄存器重命名為處理器內部的其他寄存器。在此 類重命名級期間,將對外部或邏輯寄存器的引用轉換為內部的或物理寄存器引用以消除由 寄存器重新使用而導致的依賴關系。
[0041] 調度器和分派單元104用于向執行單元105調度和分派指令,以供執行。事實上, 根據指令/操作的類型可用性,在執行單元105上潛在地調度這些指令/操作。例如,在具 有可用的浮點執行單元的執行單元的端口上調度浮點指令。執行單元的示例包括浮點執行 單元、整數執行單元、跳轉執行單元、加載執行單元、存儲執行單元以及其他已知的執行單 J1_1〇
[0042] 執行單元105可包括算術邏輯單元或能夠基于指令執行操作的另一類型的邏輯 單元。作為指令解碼器102對指令進行解