TW202217558A - 用以分配共享資源的硬體及配置支援 - Google Patents

用以分配共享資源的硬體及配置支援 Download PDF

Info

Publication number
TW202217558A
TW202217558A TW110130683A TW110130683A TW202217558A TW 202217558 A TW202217558 A TW 202217558A TW 110130683 A TW110130683 A TW 110130683A TW 110130683 A TW110130683 A TW 110130683A TW 202217558 A TW202217558 A TW 202217558A
Authority
TW
Taiwan
Prior art keywords
core
memory
field
hardware
memory bandwidth
Prior art date
Application number
TW110130683A
Other languages
English (en)
Inventor
安德魯 哈特里奇
彥成 劉
凡凱特斯瓦拉 馬都里
克里斯那 加那帕
愛德恩 沃普蘭克
克里斯多夫 吉諾斯
哈那 亞蘭
約瑟夫 紐茲曼
賴瑞莎 諾法寇斯基
Original Assignee
美商英特爾股份有限公司
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 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202217558A publication Critical patent/TW202217558A/zh

Links

Images

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

揭示用以分配共享資源的實施例。在一實施例中,一種設備包含核心和硬體速率選擇器。該硬體速率選擇器係用以,回應來自該核心之對記憶體頻寬的需求已經到達一閾值的第一指示,確定要被用來限制對該核心之記憶體頻寬之分配的延遲值。該硬體速率選擇器包含控制器,具有用以計算來自該第一核心之記憶體頻寬需求之第二指示的第一計數器和用以計算時間視窗之屆滿的第二計數器。該第一指示係基於第一計數器值與第二計數器值之間的差值。

Description

用以分配共享資源的硬體及配置支援
本發明一般係有關電腦架構的領域,更明確地說,係有關分配共享資源的領域。
多核心處理器中的處理器核心可以使用共享的系統資源,諸如快取記憶體(例如,末級快取記憶體或LLC)、系統記憶體、輸入/輸出(I/O)裝置、及互連。提供給應用程式之服務的品質可能由於這些或其他共享資源的爭奪而劣化及/或不可預測的。
一些處理器包含諸如來自英特爾公司(Intel Corporation)之資源控管技術(Resource Director Technology(RDT))的技術,其致使能夠看見諸如LLC之共享資源以及記憶體頻寬如何正在被執行於處理器上的不同應用程式所使用及/或如何受其控制。例如,此等技術可提供系統軟體將一資源的不同量分配給不同的應用程式及/或監控資源使用,以及暫時防止超過配額(quota)之低優先權應用程式對資源的存取。
在下面的說明中,許多特定細節被提出。但是,要瞭解的是實施例可以在沒有這些特定細節的情況下被實行。在其他例子中,眾所周知的電路、結構及技術並未被詳細地顯示出,以便不致模糊了此說明的了解。
此說明書中對「一個實施例」、「一實施例」、「一範例實施例」等等的參考指示該所述實施例可包含特殊的特徵、結構、或特性,但是每一個實施例不需要皆包含該特殊的特徵、結構、或特性。而且,此等語詞不需要指的是同一個實施例。此外,當一特殊的特徵、結構、或特性被說明而相關於一實施例時,被認為是使該特殊的特徵、結構、或特性與其他實施例相關聯而不管是否被明確地說明出係在習於此技藝者的知識範圍之內。
如同在此說明書和申請專利範圍中所使用者而且除非另有說明,用來說明元件之序數連接詞「第一」、「第二」、「第三」等等的使用僅指示一元件的特殊例子或者相似元件的不同例子正被提到,而且不意指隱含如此所說明之該等元件必須按照特殊的順序,在時間上、在空時間上、或排序上、或者以任何其他形式。又,如同在本發明之實施例的說明中所使用者,項之間的「/」字符可以意謂著所述者可包含或者第一項及/或第二項(及/或任何其他額外的項)。
又,用語「位元(bit)」、「旗標(flag)」、「欄位(field)」、「入口(entry)」、「指標(indicator)」等等可以被用來描述暫存器、表、資料庫、或其他資料結構中之儲存位置的任何類型或內容,不論它們是用硬體或軟體來予以施行的,但並非意欲將本發明的實施例限定於任何特別類型之儲存位置或者任何特別之儲存位置內的位元數量或其他元件。用語「清除(clear)」可以被用來指示儲存或者致使邏輯值0要被儲存在儲存位置中,以及用語「設定(set)」可以被用來指示儲存或者致使邏輯值1、全1碼、或某些其他指定值要被儲存在儲存位置中;然而,這些用語並非意欲將本發明的實施例限定於任何特別的邏輯常規,因為任何的邏輯常規可以被使用於本發明的實施例之內。
在此說明書及其圖式中,用語「線程(thread)」及/或以方塊標示的「線程」可意謂及/或代表應用程式、軟體線程、過程、虛擬機器、容器、等等,其可被執行、運行、處理、創建、指派、等等於核心上、由核心執行、運行、處理、創建、指派、等等、及/或執行、運行、處理、創建、指派、等等給核心。
用語「核心(core)」可意謂任何處理器或執行核心,如同此說明書及其圖式中所述及/或所例舉者及/或如同此技藝中所已知者。用語「非核心(uncore)」可意謂在處理器或系統單晶片(SoC)中/上但是不在核心之內的任何電路、邏輯、子系統、等等(例如,整合的記憶體控制器(iMC)、電力管理單元、性能監控單元、系統及/或I/O控制器等等),如同此說明書及其圖式中所述及/或所例舉者及/或如同此技藝中所已知者(例如,藉由該名稱非核心、系統代理器、等等)。然而,此說明書及圖式中用語核心及非核心的使用並未限制任何電路、硬體、結構、等等的位置,因為電路、硬體、結構、等等的位置在各種不同的實施例中可以改變。例如,MSR(如同下面所定義的)104可代表一或多個暫存器,其一或多者可以在核心中,其一或多者可以在非核心中、等等。
用語「服務品質(quality of service)」(或者QoS)可被用來意謂或包含此說明書中所提到及/或此技藝中所已知之服務品質的任何量測,對單獨線程、一群線程(包含所有的線程)、線程的類型、包含性能、可預測性、等等的量測及/或與性能、可預測性、等等有關的量測。用語「記憶體頻寬分配(memory bandwidth allocation)」(或者MBA)可被用來指分配記憶體頻寬的技術或技術的使用及/或所分配、所提供可用等等、或者要被分配之記憶體頻寬的量。
本發明的實施例可被用來分配電腦系統中的共享資源,諸如快取記憶體和記憶體。例如,實施例可以改善的行為及準確性來進行MBA而且可以使用MBA來提供增加的產出量和更大的效率,相較於先前已知的方法,及/或可以提供快取記憶體的高效能共享。實施例的使用可以減少「吵雜鄰居」的問題,其中針對線程的QoS受到不同線程之不利地而且有時候不可接受地影響。
實施例可提供比現有技術更好的QoS,在現有技術中,分配決定和調整的步調(pace)可以由系統軟體操作的步調所限制,而其餘則與現有技術相容(例如,在架構上)。實施例可以這樣做,例如,和動態硬體控制器一起,在核心或每核心電路的內部,其可反應而比使用嚴格頻寬控制機制之方法更快地(例如,以微秒等級)改變頻寬條件。在實施例中,MBA之動態硬體控制的使用可以讓主要使用LLC的軟體能夠針對給定的節流等級體驗產出量的增加(如下所述),並且由於來自線程之高和低優先級請求的細粒度交錯(fine-grained interleaving),可能導致系統產出量的增加。在實施例中,硬體可提供頻寬的動態監控及控制的細粒度校準(fine-grained calibration),其可導致更大的產出量和應用程式性能,特別是針對具有變化等級之LLC使用的應用程式,其相較於使用基於整個更大週期之平均頻寬使用/需求的控制機制、使用較粗校準之先前方法,可能致使頻寬需求/使用斷斷續續地超過閾值。
實施例可提供快取記憶體的高效能共享,特別是在非包容性的(non-inclusive)快取記憶體架構中。
圖1為系統100的方塊圖,包含處理器/SoC 102的實施例,且其中,分配的共享資源可以是快取記憶體(例如,LLC或第三級(L3)快取記憶體)及/或記憶體頻寬。在實施例中,共享的快取記憶體可被製作於相同的基板(例如,半導體晶片或晶粒、SoC、等等)上而且記憶體可以在一或多個分開的基板上及/或在與含有該共享的快取記憶體之封裝組件分開的一或多個封裝組件中;但是,在各種不同的實施例中,在基板、小晶片(chiplet)、多晶片模組、封裝組件、等等上/中之共享資源(例如,快取記憶體及/或記憶體)和用戶(例如,核心及/或線程)的任何配置及/或整合係可能的。
圖1顯示在核心111上/中之線程111A和111B以及在核心112上/中之線程112A和112B。LLC快取記憶體130和記憶體140可由核心111和112以及由線程111A、111B、112A、和112B所共享,而且可由核心111及其線程透過第二級(L2)快取記憶體121以及由核心112及其線程透過L2快取記憶體122所存取。實施例可包含任意架構之任意數量的核心(例如,實施例可包含具有不同架構之核心的異質處理器或系統),連同每一核心之任意數量的線程(例如,實施例可包含有/沒有支援第一數量之線程的第一核心以及有/沒有支援第二數量之線程的第二(其可以不同於第一)核心)。
圖1也顯示MSR 104,其可對應於任意一或多個模型特定的暫存器、機器特定的暫存器、等等,用以控制及報告處理器性能、掌控系統相關的功能,而且可以不可由應用程式存取。
圖1還顯示一些速率限制器,其可以是可編程的。實施例可包含任意數量的速率限制器,而且不需要包含所有顯示於圖1中的速率限制器(例如,針對每一核心MBA,第一實施例可包含非核心110中的速率限制器150A和150B但不包含速率限制器151A、151B、152A、或152B,而針對每一線程MBA,第二實施例可包含核心111中的速率限制器151A和151B及核心112中的速率限制器152A和152B但不包含速率限制器150A或150B)。
在實施例中,速率限制器可限制資源(例如,記憶體頻寬)由對應之核心及/或線程的使用,例如藉由基於時間、基於信用方案(crediting scheme)、等而限制核心/線程對資源的存取。在實施例中,節流(throttling)技術可被用來限制或防止存取於第二(大於第一)周期之內的一或多個第一周期期間,而允許或提供存取於第二周期的剩餘周期期間。實施例可提供可以以之來限制/防止存取的各種粒度,例如,實施例可提供10%的節流粒度,使得速率限制器可進行節流而將MBA降低至全部容量之90%、80%、70%的任一者。
在實施例中,例如,在核心經由網狀互連(mesh interconnect)而連接的實施例中,而在網狀互連上,發訊息(messaging)可以使用信用方案來予以管理或控制,該信用方案可被用來限制核心能夠以之而將諸如記憶體存取請求的訊息朝向記憶體控制器傳遞的速率。在這些及/或其他實施例中,就像包含在實施例中的任何電路一樣,進行速率限制的電路可以被整合進處理器中或者和處理器的其他電路相整合,諸如,在核心與網目間之介面中或介面處的電路,其連接至iMC(例如,間接通過與其他核心相關聯的此等介面)但是在概念上於圖形中被表示為分開的方塊。
在這些及/或其他實施例中,如上所述的節流粒度(throttling granularity)可以為了配置目的而被提供並且可以使用近似該粒度的控制機制,基於時間、信用數、等等來加以應用。在實施例中,速率限制設定(例如,節流等級、延遲值)可以經由配置或者可以藉由系統軟體來配置以將線程或核心映射至服務等級(a class of service(CLOS))以及將CLOS映射至速率限制設定的MSR而被應用到線程或核心。例如,節流可以經由將線程映射至CLOS之第一MSR(例如,IA32_PQR_ASSOC)以及經由將CLOS映射至延遲值之第二MSR(例如,IA32_L2_QoS_Ext_ Thrl_ n)來應用。
實施例可提供將線程映射至任意數量的CLOS(例如,8、15、等等),與CLOS識別符(CLOSID)有區別。實施例可提供將CLOSID映射至任意數量的設定及/或設定的值。例如,一或多個控制暫存器(例如,可由基本輸入/輸出系統(BIOS)編程以供啟動校準及/或系統軟體用)可包含一些位元(例如,4、8)來指定對應數量之延遲值中的一個(例如,MBEDelay)。例如,4個32位元的控制暫存器可被提供來收容16個CLOSID和8位元的MBEDelay值。在實施例中,預設的(default)最小延遲值可被用作為未被節流的延遲而且可以藉由微碼來於以編程。
實施例可包含將速率限制器及/或速率限制電路放置在到資源之用戶的介面處之內或者更接近資源的用戶,而不是在到資源的介面處之內或者更接近資源。例如,圖1繪示使用來源節流技術的實施例,其中,速率限制器比到記憶體(例如,連接至非核心中的記憶體控制器或者在非核心中的記憶體控制器內)更直接被連接至記憶體存取請求的來源(例如,連接至核心或者在核心內)。使用此種技術(例如,來源節流)的實施例可提供比影響正被限制之來源以外之來源的其他方法(例如,離該來源更遠的節流)更好的QoS(例如,藉由致使核心與記憶體之間的佇列、緩衝器、或互連路徑填滿或者被更頻繁地使用),其可能加劇或者未能減少吵雜鄰居的問題。
在實施例中,速率限制器可以藉由一單元(諸如,速率選擇器160A、160B、161A、161B、162A、及162B,分別對應於速率限制器150A、150B、151A、151B、152A、及152B)來設定及/或提供有設定(例如,速率限制、節流等級、或延遲值的設定)。和針對速率限制器的情況一樣,實施例可包含任意數量的速率選擇器而且不需要包含所有顯示於圖1中的速率限制器。在實施例中,速率選擇器可包含電路及/或其他硬體,其可藉由軟體及/或韌體來配置、藉由軟體及/或韌體來編程、及/或和軟體及/或韌體一起使用、及/或來代替軟體及/或韌體,例如如下所述。像這樣,圖式中速率選擇器之實施例的各種表徵可包含代表硬體、軟體、及/或韌體的方塊,其單獨或組合。
在實施例中,速率選擇器可包含提供監控能力(進一步說明於下)以確定其相關的核心/線程是否正在過度利用記憶體頻寬的硬體及/或軟體以及提供速率設定能力以設定和調整核心/線程正在過度使用頻寬或消耗比他們被分配的更少之速率限制的硬體及/或軟體。例如,如果來自監控能力的量測指示記憶體頻寬需求高於規定的記憶體頻寬需求,則第一MBA速率設定可被選擇,其中,第一MBA速率設定被限制而且比第二MBA速率設定(例如,無限制的、未被節流的)更慢,其可以被另外選擇及/或使用。
在實施例中,每線程及/或每核心的設定(例如,延遲值)係可確定及/或可選擇的(例如,視速率限制器的放置而定)。實施例可提供確定及/或選擇每線程及每核心的設定而且可為軟體提供可編程性而從一些路(way)中做出選擇以基於每線程之設定所確定/想要者來挑選每核心的設定。例如,每核心的設定可以是針對該核心中任一者之每線程設定的最大確定/想要者(例如,max (delayValue(CLOS[thread0]),delayValue(CLOS[thread1])))、針對該核心中任一者之每線程設定的最小確定/想要者(例如,max(delayValue(CLOS[thread0]), delayValue(CLOS [thread1])))、等等。此等實施例可提供預設值(例如,最大值)。
在實施例中,MSR(例如,MBA_CFG)可包含一位元(例如,位元0),其值決定最小或最大設定是否係所選擇的(例如,對最大而言為‘0’(預設),對最小而言為‘1’)。
在實施例中,速率選擇器可為反饋迴路的部分,其包含從(比)速率限制器(更遠離源頭)下游的一點到速率選擇器的輸入。例如,速率選擇器可接收來自LLC(例如,L3快取記憶體或L4快取記憶體)與記憶體間之介面及/或與該介面有關的輸入,如圖1所示且如下所述。
在實施例中,速率選擇器可包含在核心之內及/或專用於核心的硬體控制器(如下進一步所述),其接收來自在核心之內及/或專用於核心之快取代理器(caching agent)的資訊。在實施例中,速率選擇器可包含硬體控制器,其可以被致能/失能(例如,藉由編程諸如MBA_CFG的MSR)而使得可以不是藉由該硬體控制器(如下進一步所述)就是藉由軟體控制器(例如,基於反饋迴路,如下所述且如圖1所示)來選擇速率。硬體控制器的使用可能為可以得利於更快速的回應(例如,微秒而不是數百毫秒或秒的等級,因為軟體可能需要線程資源監控識別符合(RMID)的系統級取樣)之用途(例如,資料中心)所需,及/或出於任何其他原因而需要。軟體控制器的使用可能為與不包含硬體控制器之先前技術的編程相容性所需,為可能不得利於硬體控制(例如,因為他們可能需要簡單、決定性的頻寬封端(bandwidth capping))之用途(例如,物聯網(internet-of-things)裝置)所需,及/或出於任何其他原因而需要。
在實施例中,MSR(例如,MBA_CFG)可包含一位元(例如,位元1),其值決定硬體控制器是否被致能(例如,對被致能而言為‘0’(預設),對被失能而言為‘1’)。
圖2顯示速率選擇器200的實施例,其可代表、被包含在、及/或和依據實施例之如圖1中所示之速率選擇器(諸如,速率選擇器161A、161B、162A、及/或162B)一起使用。在速率選擇器200中,記憶體頻寬監視器(MBM)210可以監控(例如,使用諸如RDT的技術,其致使能夠看見LLC及/或記憶體頻寬如何正在被執行於處理器上之不同的應用程式所使用)每線程及/或每核心之記憶體頻寬需求及/或使用的一或多個指標(indicator),諸如LLC快取未命中率。MBM 210可將此資訊提供給控制器220。控制器220可使用此資訊連同頻寬設定點一起來決定速率限制230,其可被提供給速率限制器以供如上所述的使用。
圖3顯示速率選擇器300,其可代表、被包含在、及/或和依據實施例之如圖1中所示之速率選擇器(諸如,速率選擇器161A、161B、162A、及/或162B)一起使用。在速率選擇器300中,可編程之LLC未命中預測器310可包含硬體以產生訊號而在由方塊320依據第一技術(例如,如本文中所述的MBA技術)所選擇的速率與由方塊330依據第二技術(例如,施行QoS或依據一些其他技術之其他政策的速率)所選擇的速率之間做選擇(例如,使用多工器312)。第一技術及/或第二技術可包含使用預設速率的選項,在實施例中,其可以是無限制或最大可能的速率(亦即,沒有速率限制被實施)。
回到圖1,各核心可包含以方塊153和154來代表之可選電路來施行每線程的資源分配,例如,藉由使用來自針對各線程之速率限制器的輸入(例如,方塊151A和151B將輸入提供給方塊153、方塊152A和152B將輸入提供給方塊154)以施行分配政策中的速率限制。例如,分配器(例如,方塊153及/或154,將被稱為微操作或uop分配器),其可以是一分配器及/或排程器的部分或者被連接(例如,在管線中)至一分配器及/或排程器,該分配器及/或排程器將微操作(及/或微指令等等)分配(及/或排程、發出、等等)至管線的下一級(例如,執行單元、載入/儲存單元、等等),可以以每線程為基礎來限制(或節流、減少、放慢、等等)微操作(uop)到管線之下一級的進展。
在一實施例中,每線程的速率限制器(例如,方塊151A、151B、152A、152B之任一者)接收來自速率選擇器之及/或經由反饋迴路來接收已經決定對應的線程係要被限制的輸入(在實施例中,要被應用之限定速率的值)。該決定可以基於共享資源的(例如,晶粒內互連(intra-die interconnect(IDI)或記憶體頻寬)的監控(或測量等等)需求及/或使用而被做成,如同此說明書的下文及/或任何地方所述者。
例如,核心可基於每一段時間非核心定義(例如,由速率選擇器)之每線程數量的IDI請求而被導向約束其本身。在中間層級(mid-level)的快取記憶體(MLC,例如L2快取記憶體121或122)中或者對於中間層級的快取記憶體而言,時間可被分割成固定長度的視窗。MLC群集(cluster)中的節流電路/邏輯(例如,速率限制器)可以決定什麼分配節流等級將被應用於每一個線程,以及亂序(out-of-order(OOO))群集中的節流電路/邏輯(例如,uop分配器)可以應用該節流。
實施例可包含每線程有兩個計數器,第一個計數器用以計算由該線程發出之請求的數量,及第二個計數器用以計算在MBA視窗期間分配給該線程之uop的數量。使用從先前視窗算起的計數,每線程之目標uop分配值被估測以及應用於目前的視窗期間。所發出之真正請求的運行計數對比目標限度可以被保持以便隨著時間收斂至準確的限度。
在實施例中,二計數器皆可使用耦接之老化機制(aging mechanism)以適於隨時間而改變行為。在實施例中,此機制可基於自修正反饋迴路(self-correction feedback loop)。預算(budget)計數器在每一個視窗處可以被增量一目標限制值以及針對每一個IDI請求送出而被減量1。實施例可允許視窗之間的預算累積到達預定飽和。
在實施例中,分配節流邏輯可以接收來自MLC之處理過的提示而且可以藉由針對每N個數量的循環讓固定數量的視窗能夠符合頻寬限制來調整分配節流。
圖4顯示速率選擇器400,依據相關於圖6要被更詳細地說明之實施例之速率選擇器的簡化版本,連同對應的快取代理器(例如,快取/本地代理器(home agent)或者CHA)410及iMC 420。速率選擇器400及/或速率選擇器610(說明於下)可代表依據使用包含動態硬體控制之MBA技術的實施例,在(或者與)圖1中所示之速率選擇器中(一起使用)之簡化版本的硬體。
在實施例中,由速率選擇器400及/或速率選擇器610所代表的硬體可以在核心中或者專用於核心,例如,在收斂/共同網狀停止(common mesh stop(CMS))的出口(egress(EGR))電路中,其在(或者用於)具有網狀互連之多核心處理器晶片或SoC上的核心中。像這樣,速率選擇器400可以和對應的快取/本地代理器(CHA)410相耦接,其可以是晶片上經由記憶體控制器(例如,晶片上(on-chip) iMC)420來提供對共享記憶體(在晶片上或晶片外)之存取的一些CHA(例如,每核心有一個)中的一個。
在圖4中,速率選擇器400(其可在收斂/共同網狀停止的出口電路或cms_egr中)包含漏桶(leaky bucket)計數器402,其可產生指示閾值是否已經被超過的輸出訊號404。漏桶計數器402可接收來自CHA 410的輸入,其指示嘗試或完成記憶體存取是否導致快取命中或未命中,使得漏桶計數器402可針對快取未命中的每一次發生而被增量(因而「將水添加於桶中」)。為此目的,依據本實施例之CHA可包含追蹤LLC受害者的邏輯/電路。
漏桶計數器也可以針對時間視窗之屆滿的每一次發生(因而「將水從桶中漏出」)而被減量(和所增加之量相同或不同的量)。因此,漏桶計數器可藉由其核心或者其核心之線程的一或多者而提供記憶體頻寬使用/需求的動態指示,其可被用來決定/選擇/調整由速率限制器所使用或要被速率限制器使用之速率。在實施例中,該指示可以基於在核心與網狀互連間之介面處的量測(例如,LLC未命中率),且因而可提供比基於更遠離源頭所採取之量測的只是更快速及/或更精準的反饋。
實施例可提供由速率選擇器400所使用或者與速率選擇器400相關聯之一個或多個參數的可配置性/可編程性。用於MBA之硬體控制的速率選擇器參數和其他參數可被設定於,例如,當系統藉由BIOS協助的校準過程,基於住居的(populated)記憶體通道數和其他系統參數而被啟動之時。實施例包含多個校準設定表以提供BIOS來針對不同的記憶體配置編程不同的校準表。在實施例中,這些校準表可以初始經由模擬來加以調整及/或更加精確地調整於系統啟動時。在硬體的校準之後,依據實施例的MBA技術準備就緒可供系統軟體的使用。
速率選擇器參數可包含下列的一個或多個:閾值參數(LeakyBucketSize),於該值或該值以上被認為是桶係滿的(以及ThresholdExceeded狀態位元404被設定),用於使計數器減量之時間視窗之值的參數(TimeWindow),用於每快取未命中使計數器增量之量(例如,1,其可以是預設值)的參數,用於每時間視窗屆滿使計數器減量之量(例如,1,其可以是預設值)的參數,及/或用於上述及下述之延遲值的參數(MBEDelay)。
在實施例中,上述之校準可包含決定速率選擇器參數的值和設定速率選擇器參數(例如,漏桶參數),包含延遲值參數(MBEDelay),其提供給將速率選擇器設定映射於可由軟體選擇的速率等級(例如,上述的90%到10%節流等級)。
在實施例中,漏桶計數器可以用兩個分開的計數器來施行。主計數器可保持計數(LeakyCnt),其係增量於LLC快取未命中時(基於來自CHA的反饋)以及基於時間流逝而減量,使得LeakyCnt代表呈每時間記憶體存取之形式的動態記憶體頻寬需求。時間流逝可以用副計數器(Time Window Counter)來測量。
主計數器可包含任何數量的位元(例如,16)來維持其計數。用於LeakyCnt的最大尺寸或閾值可基於參數(LeakyBucketSize)的可編程值(例如,具有和計數器相同數量的位元,在此,16)。LeakyBucketSize可用時間視窗來比例化(如下所述)以確保在低微秒範圍中的回應時間。到達或超過LeakyBucketSize的LeakyCnt指示已經到達或超過頻寬設定點,而頻寬設定點代表最大所期望的頻寬使用。
時間視窗計數器可以用具有最大尺寸(TimeWindow)的值(TimeWindowCnt)來編程,其可以是基於如下定義之追蹤頻寬的配置參數。TimeWindowCnt可被減量於每一次基於由非核心所使用的時脈(uclk)時(例如,每時脈週期一次),而且當到達0時可以被重新初始化至TimeWindow。校準後的漏洩率與LLC未命中率之間的關係因而可以被用來測量特定量的頻寬以及應用特定量的節流。
在實施例中,TimeWindow與LeakyBucketSize之間的關係可以被表示如下(其中,uCR_Value可以是8位元的值來述明MBEDelay): • 若(TimeWindow>=32),則LeakyBucketSize=uCR_ Value • 若(TimeWindow<32且Time Window>=16),則 LeakyBucketSize= CR_Value*2 • 若(TimeWindow<16且TimeWindow>=8),則 LeakyBucketSize=uCR_Value*4 • 若(TimeWindow<8),則LeakyBucketSize=uCR_ Value*8
桶係滿的(LeakyCnt等於或超過 LeakyBucketSize)意謂已經到達或超過所期望的頻寬閾值。例如,有了2GHz uclk,TimeWindow可被設定於128 uclk以測量記憶體頻寬是否超過每秒1 GByte。在核心與網狀互連間之介面處測量頻寬為介面之後的所有線程提供追蹤總頻寬。
在實施例中,TimeWindow可以是CMS(例如,可由BIOS編程以供啟動校準及/或系統軟體用)中從控制暫存器(TimerWindow)到漏桶的介面訊號。
漏桶的遲滯係由其尺寸來予以定義,單位為uclk。為了在未限制頻寬與限制頻寬之間不太快速地來回移動,實施例可以等待直到LeakyCnt大於或等於 LeakyBucketSize以指示已經超過頻寬(例如,開始節流),以及等待直到LeakyCnt為0以指示頻寬在強制等級以下(例如,停止節流)。自然地,假設增量到LeakyCnt發生在LLC未命中,以及減量發生在計時器到達0(TimeWindowCnt從其TimeWindow初始化值減量到0)時,LeakyCnt飽和於LeakyBucketSize以上或者減量回到0可能要花費一些時間,其觸發控制器輸出的兩個動作(使節流生效(assert)或使節流無效(de-assert)),而且這構成了遲滯的基礎。
為了觸發動作,實施例可以具有狀態位元(ThresholdExceeded),其被設定於當LeakyCnt大於或等於LeakyBucketSize之時而且被清除於當LeakyCnt為0之時。
在實施例中,選擇延遲值(其可以被映射至節流值以及應用於對應的線程/核心)的訊號(MBE_BW_ Exceeded)可以基於LeakyCnt追蹤,例如,如下: • 若(ThresholdExceeded=1)且(LeakyCnt>0)(亦即,當頻寬需求已經超過閾值而且計數器為非0時),則使MBE_ BW_Exceeded生效 • 若(ThresholdExceeded=0)且(LeakyCnt< LeakyBucketSize)(亦即,當頻寬需求在所請求的頻寬校準設定點以下時),則使MBE_BW_Exceeded無效
強制頻寬(例如,使用用戶可見(user-visible)結果頻寬)與TimeWindow之間的範例關係被顯示於表1中:
強制頻寬 (GB/s) 時間視窗 (uclk) 漏桶尺寸    到達LeakyBucketSize值具有高出10%頻寬花費的時間(in usec)
32 4 255 5
16 8 255 9
8 16 127 5
4 32 63 4
2 64 31 9
1 128 31 9
0.5 256 31 8
表1
圖5顯示漏桶的主要輸出(MBE_BW_ Exceeded)如何可以被使用於一實施例中。當MBE_BW_ Exceeded被生效時,某額外的邏輯500(例如,包含多工器510和520)決定要應用的延遲值(MBEDelay,如同稍後所述的校準值)以及如何應用該延遲值以給予其他的互動特徵(例如,FaST,用於災難性網狀彈跳(bouncing)控制)。一訊號(例如,HW_MBE_Feedback_Enable,其可基於在如上所述之MSR(例如,MBA_CFG)中一位元的值)可被用來使MBA硬體控制器失能且反而使用依據軟體控制技術所提供的MBEDelay值。
漏桶的實施例被總結於表2中。
MS2IDI MemBW (MBE_BW_Exceeded) HW_MBE _Feedback_Enable New BW Enforcement (NewMBEDelay) 評註
X 0(去除特徵) MBEDelay 使h/w MBE反饋失能,使用預設的僅s/w方案
1:>MBE_BW 1 MBEDelay MemBW需求超過MBE_BW
0:<=MBE_BW 1 UnconstrainedDelay (0或最小信用回報延遲) MemBW需求係在MBE_BW處或在MBE_BW以下
表2
在實施例中,諸如圖6中所示的實施例,NewMBEDelay輸出可以和另一一或多個技術(例如,FaST)以及應用到信用回報路徑(credit return path)的最終延遲值相級聯(cascade)至核心。
如圖5中所示,MBE_BW_Exceeded可致使一可編程的MBEDelay要被應用(而不是預設的 UnthrottledDelay,典型上等於0)。由於漏桶已經測量到一定量的頻寬而且決定該節流應該被應用,該MBEDelay應該匹配並且提供比該用戶已請求者稍微更多的節流,以便讓該漏桶能夠不飽和並且隨著時間而回到0。在實施例中,用於TimeWindow和MBEDelay的適當值可以被挑選以提供此所期望的行為。
實施例可提供這兩個值的校準。時間視窗介面校準控制器能夠多快地回應頻寬上的大改變以及提供遲滯。節流值(延遲值)被應用於該控制器飽和的任何時間,直到頻寬回到設定點以下的位準而且計數器已經倒計數(count down)為止。在實施例中,這些行為的組合可以允許短的暫態頻寬(transient bandwidth)尖峰(spike)以及允許大的LLC頻寬,且同時又提供針對溢出LLC快取記憶體之線程的控制。
在實施例中,漏桶校準元組(tuple) {TimerWindow, DelayValue}可基於提供給運行於核心上之給定CLOS的用戶指定頻寬值(例如,50%節流)而被選擇。兩個元組可以存在(運行於核心上之CLOS的每一個有一個元組),而且硬體可藉由預設的("最大”模式)來選擇最嚴格的設定,但是可被配置來遍及該兩個CLOS上選擇最小的延遲值。
在實施例中,BIOS可組構{TimerWindow, DelayValue}元組連同對應值的系統配置控制器(ubox)資料結構610(例如,ubox表),如圖6中所示,其繪示依據一實施例的系統級使用模型。
如圖6中所示,各CLOS可具有一可分配的頻寬限制(0-90%),由軟體控制。這些限制(0-90%)的每一個係由校準後的{TimerWindow, DelayValue}元組來予以定義,其被儲存在ubox中而且在開機時(at boot)係由BIOS查找表來予以編程。各時間軟體為CLOS請求新的頻寬限制,依據暫存器排組620(例如,經由IA32_L2_ext_BW_ Thrtl_nMSRs),微碼為所請求之延遲(例如,50%)諮詢ubox配置表,並且為相應的CLOS將結果的元組編程於速率選擇器630中。因此,當核心上來自各線程的CLOS被觀察到要通過其出口CMS時,硬體可選擇正確的元組來校準漏桶。
因為用戶可以以10%的增量來編程任何從0-90%的延遲值,所以映射{mbaThrotttlingValue, TimerWindow, DelayValue}之表中一序列的值被儲存在ubox中,可經由記憶體映射I/O來存取,這就是依據實施例來校準MBA硬體的BIOS程式。取決於平台配置(例如,住居的記憶體通道),不同的校準值可以被編程來確保良好的線性(例如,節流80%應該是節流40%之頻寬的一半)以及良好的準確率。不同的表值可被使用於不同的情況之下(例如,使用針對6個通道DDR4-2933之特別的表對比針對單通道DDR4-2133之不同的表)。在實施例中,該表可以被暴露於除錯(debug)中及/或特殊版本的BIOS,以讓系統供應商能夠調試配置值(例如,訂製於3DXP記憶體)。
圖7顯示依據實施例之包含速率選擇器702的系統架構700,係耦接至其核心704。圖7也顯示漏桶計數器710、CHA 706、iMC 708,其可分別對應於圖4中的漏桶計數器402、CHA 410、及iMC 420;加上方塊720和722,其分別代表用於校準的BIOS和校準表,如同上面所討論的;加上方塊712、714和716,其代表將線程和CLOS映射至漏桶設定和延遲值的電路/邏輯,如同上面所討論的;加上方塊730、732、734、736和738,其代表基於延遲值和使用信用回報方案來施行節流的電路/邏輯,如同上面所討論的,以及收容可使用同一個信用回報方案的額外/替代政策,如同下面所討論的;加上方塊742和744,其代表依據實施例可將MBA應用於其的線程,如同上面所討論的;加上方塊752和754,其代表MSR;加上方塊750和756,其代表系統軟體、到速率選擇器的系統軟體介面、由系統軟體所期望的設定點、以及依據實施例可獲益自改善的QoS之應用程式軟體。
圖8顯示實施例關於回應時間和LLC快取未節流的效應(用於快取友善之應用階段中改善的產出量)之潛在利益的概念視圖。
圖9繪示偽鎖定(pseudo-locking)技術之實施例的使用,其可提供快取記憶體(例如,圖9中的LLC 910、圖1中的LLC快取記憶體130)的有效共享,特別是在非包容性的(non-inclusive)快取架構中。此和其他實施例可與現有的快取分配技術相關地使用,諸如來自英特爾公司之RDT快取分配技術(Cache Allocation Technology (CAT))。
在實施例中,稱為”LLC_PROTECTED_ WAYS”的暫存器含有”LLC保護遮罩”位元,其可保留快取記憶體即將基於CLOS而被使用的路。這些位元可對應於針對CLOS配置相關於容量、重疊度、隔離等等所使用的位元(例如,如同針對CAT或任何其他快取分配技術所定義之容量位元遮罩(capacity bitmsk(CBM))位元)。
在實施例中,暫存器可以是封裝組件範圍的。其可以是不影響現有的CAT使用、功能性、或配置/編程之新的CAT MSR(例如,在MSR位址0xC85處)。其行為(例如,重設時清除)包含像是現有的LLC CAT位元遮罩之連續位元,寫到保留位元產生異常(#GP(0))。暫存器可以是任意數量的位元(例如,32),而且為”遮罩”欄位所定義之暫存器位元的任何數量(例如,11)可以藉由為LLC CAT所定義之CBM的長度來決定。
在實施例中,LLC保護遮罩(例如,來自MSR的遮罩920)可被用來保留基於CLOS而使用之快取的路(way)(例如,設定遮罩位元保留一或多個對應的路)。命中LLC路中的一條線(line)或多條線(lines)的任意LLC存取(其藉由保護遮罩來予以保留)將像平常一樣進行LLC至MLC遷移(migration),但是線也被留在LLC中,而不是解除分配(deallocated),甚至在非包容性的快取架構中。例如,具有命中並非由保護遮罩所保留之LLC路的修正(M)資料之所有權請求(RFO)將該資料從LLC移入請求之核心的MLC內(而且在LLC中不留下副本(copy)),但是如果該路係由保護遮罩所保留的,硬體將該線傳遞至核心而且也在LLC中留下副本。
在實施例中,在探聽過濾器(snoop filter(SF ))和MLC(例如,L2)填滿以滿足在LLC快取時核心對資料的請求之後,LLC保護遮罩即可防止LLC解除分配,因而藉由將資料留在那裡來保存LLC中關鍵資料(critical data)的受保護狀態,而不是遷移和稍後重新填滿(re-filling)。因此,一旦被裝載入受到偽鎖定之位元遮罩所保護的路中,關鍵資料即保持在LLC快取記憶體中,甚至在非包容性的快取架構中。
處理器中之實施例的可用性,包含能力和平台/系統相關細節(諸如,節流的最大值和粒度),可以使用處理器識別符指令(例如,CPUID)來予以列舉及發現。
圖10顯示依據本發明實施例之分配資源的方法1000。在方塊1010中,與核心/線程相關聯的速率選擇器可以被校準/調試以便和其他核心/線程共享資源。校準/調試可包含閾值和延遲值的選擇以及速率選擇器與該等值的編程/配置。
在方塊1012中,核心/線程的操作可開始於第一值(例如,延遲值),其代表資源到核心/線程的第一分配。方塊1012中之核心/線程的操作可包含監控或測量資源被核心/線程的使用及/或需求。在實施例中,第一分配可以是最大值或無限的分配。在實施例中,使用/需求可以用硬體(例如,漏桶控制器)來動態地監控/測量。
在方塊1020中,速率選擇器可基於監控/測量資源被核心/線程的使用/需求來決定由核心/線程的使用/需求已經到達/超過上限閾值。在方塊1022中,速率選擇器可決定代表資源到核心/線程之第二分配的第二值。在實施例中,第二分配可以是少於第一分配的有限分配。在方塊1024中,速率選擇器可將第二分配應用於核心/線程(例如,藉由將第二值提供給速率限制器)。在方塊1026中,核心/線程的操作可開始於第二值。
在方塊1030中,速率選擇器可決定由核心/線程的使用/需求已經減少至上限閾值或者在上限閾值以下。在方塊1032中,核心/線程的操作可繼續於第二值,而不管使用/需求係在上限閾值以下。
在方塊1040中,速率選擇器可決定由核心/線程的使用/需求已經減少至下限閾值或者在下限閾值(例如,0)以下。在方塊1042中,速率選擇器可決定代表資源到核心/線程之第三分配的第三值。在實施例中,第三值可以和第一值相同,及/或第三分配可以和第一分配相同。在方塊1044中,速率選擇器可將第三分配應用於核心/線程(例如,藉由將第三值提供給速率限制器)。在方塊1046中,核心/線程的操作可開始於第三值。
核心/線程的操作可繼續於,諸如,資源到正被監控/測量以及調整之核心/線程的分配,如同所期望的,單獨使用動態硬體控制器或者與其他技術相結合。
方法1000及/或任何其他方法實施例可包含任何細節、特徵、等等,或者此說明書中所述之細節、特徵、等等的組合。 額外說明
下面所述為支援系統、處理器、及仿真的機制,包含指令集。例如,下面所述的是包含諸如提取、解碼、排程、執行、退出等之各種管線階段之指令執行的態樣細節,其依據實施例可以被使用於核心中。
不同的圖形可以顯示實施例的對應態樣。例如,圖1中的任意方塊及/或方塊之任一者可對應於其他圖形中的方塊。進一步舉例,代表圖1中之核心的方塊可對應於代表任何其他圖形中之核心的方塊,諸如,在依據實施例之系統的方塊圖中。像這樣,由該系統級方塊圖所代表的實施例可包含其他圖形中所顯示之方塊的任一者以及那些其他圖形之說明中細節的任一者。針對描述SoC、多核心處理器、等等之圖形同樣也是如此。 指令集
指令集可包含一或多個指令格式。給定的指令格式可定義各種欄位(例如,位元數、位元的位置)以載明,除了其他事項外,要被實施的運算(opcode)和要對其實施該運算的運算元(operand)及/或其他資料欄位(例如,遮罩(mask))。有些指令格式透過指令範本的定義(或子格式)而被進一步分解。例如,給定指令格式的指令範本可以被定義而具有指令格式之欄位(所包含的欄位典型上係呈相同的順序,但是至少有些因為具有較少的欄位而具有不同的位元位置)的不同子集(subset)及/或被定義而具有被不同解譯的給定欄位。因此,ISA的各指令使用給定的指令格式來予以表達(而且,如果被定義的話,在該指令格式之該等指令範本給定的一個指令範本中),並且包含用來載明運算及運算元的欄位。例如,代表性ADD指令具有特定的運算碼和包含運算碼欄位的指令格式,以載明該運算碼和運算元欄位來選擇運算元(來源1/目的地及來源2);以及此ADD指令在指令流(instruction stream)中的出現將會在選擇特定運算元的運算元欄位中具有特定的內容。被稱為進階向量擴充(Advanced Vector Extensions(AVX))和使用向量擴充(Vector Extensions(VEX))編碼方案的SIMD擴充組(AVX1和AVX2)已經被發布及/或公告(例如,見於2014年9月之Intel®64及IA-32架構軟體開發人員的手冊;以及見於2014年10月之Intel®進階向量擴充編程參考)。 代表性指令格式
在本文中所述之指令的實施例可以用不同的格式來予以具體化。除此之外,代表性系統、架構、和管線被詳述於下。指令的實施例可以被執行於此等系統、架構、和管線上,但是不被限定於那些詳細內容。
通用向量友善指令格式
向量友善指令格式係一種適合於向量指令的指令格式(例如,有一些特定用於向量運算的欄位)。雖然其中向量和純量運算兩者皆透過向量友善指令格式來予以支持的實施例被說明,但是替代實施例僅使用透過向量友善指令格式來予以支持的向量運算。
11A 11B為依據實施例,繪示通用向量友善指令格式及其指令範本的方塊圖。 11A為依據實施例,繪示通用向量友善指令格式及其類別A指令範本的方塊圖;而 11B為依據實施例,繪示通用向量友善指令格式及其類別B指令範本的方塊圖。明確地說,為其而定義類別A和類別B指令範本的通用向量友善指令格式1100,其兩者皆包含無記憶體存取1105指令範本和記憶體存取1120指令範本。在向量友善指令格式的上下文中術語通用(generic)指的是並未與任何特定的指令集有緊密關聯的指令格式。
雖然實施例將被說明,其中,向量友善指令格式支援下述:具有32位元(4個位元組)或64位元(8個位元組)資料元素(data element)寬度(或尺寸)的64位元組向量運算元長度(或尺寸)(且因此,64位元組向量由16個二倍字(doubleword)尺寸的元素或8個四倍字(quadword)尺寸的元素組成);具有16位元(2個位元組)或8位元(1個位元組)資料元素寬度(或尺寸)的64位元組向量運算元長度(或尺寸);具有32位元(4個位元組)、64位元(8個位元組)、16位元(2個位元組)、或8位元(1個位元組)資料元素寬度(或尺寸)的32位元組向量運算元長度(或尺寸);以及具有32位元(4個位元組)、64位元(8個位元組)、16位元(2個位元組)、或8位元(1個位元組)資料元素寬度(或尺寸)的16位元組向量運算元長度(或尺寸);但是替代實施例可以支持具有更多、更少、或者不同資料元素寬度(例如,128位元(16個位元組)資料元素寬度)的更多、更少、及/或不同向量運算元尺寸(例如,256位元組向量運算元)。
11A中的類別A指令範本包含:1)在無記憶體存取1105指令範本內顯示有無記憶體存取、全部捨入(full round)控制類型運算1110指令範本和無記憶體存取、資料變換(transform)類型運算1115指令範本;以及2)在記憶體存取1120指令範本內顯示有記憶體存取、暫態(temporal)1125指令範本和記憶體存取、非暫態(non-temporal)1130指令範本。 11B中的類別B指令範本包含:1)在無記憶體存取1105指令範本內顯示有無記憶體存取、寫遮罩(write mask)控制、部分捨入(partial round)控制類型運算1112指令範本和無記憶體存取、寫遮罩控制、vsize類型運算1117指令範本;以及2)在記憶體存取1120指令範本內顯示有記憶體存取、寫遮罩控制1127指令範本。
通用向量友善指令格式1100包含按照繪示於 11A 11B中的順序而被表列於下之下面的欄位。
格式欄位1140-此欄位中的特定值(指令格式識別符值)唯一地識別向量友善指令格式,且因此唯一地識別在指令流中向量友善指令格式中之指令的出現。因此,此欄位在不需要僅具有通用向量友善指令格式的指令集的意義上係可選的。
基本運算欄位1142-其內容區別不同的基本運算。
暫存器索引欄位1144-其內容,直接或經由位址產生,載明來源運算元和目的地運算元的位置,不論他們在暫存器或在記憶體中。這些包含足夠數目的位元以從PxQ(例如,32x512、16x128、32x1024、64x1024)個暫存器檔案中選出N個暫存器。雖然在一個實施例中N可以多達3個來源暫存器和1個目的地暫存器,但是替代實施例可以支持更多或者更少的來源暫存器和目的地暫存器(例如,可以支持多達2個來源,其中,這些來源中的一個也可以用作為目的地,可以支持多達3個來源,其中,這些來源中的一個也可以用作為目的地,可以支持多達2個來源和1個目的地)。
修飾符(Modifier)欄位1146-其內容區別通用向量友善指令格式中載明從那些不存取者的記憶體存取之指令的出現;亦即,在無記憶體存取1105指令範本與記憶體存取1120指令範本之間。記憶體存取運算讀及/或寫到記憶體階層(memory hierarchy)(在有些情況中,使用暫存器中的值來載明來源及/或目的地位址),而非記憶體存取則不讀及/或寫(例如,該等來源和目的地為暫存器)。雖然在一個實施例中,此欄位也在這些不同的方式之間做選擇來進行記憶體位址計算,但是替代實施例可以支持更多、更少、或不同的方式來進行記憶體位址計算。
擴增(Augmentation)運算欄位1150-其內容區別除了基本運算外,各種不同運算中的哪一個要被實施。此欄位為上下文特定的(context specific)。在一個實施例中,此欄位被分割成類別欄位1168、阿爾法(alpha)欄位1152、和貝塔(beta)欄位1154。擴增運算欄位1150讓共同群組的運算能夠被實施於單一個指令中而不是2、3、或4個指令中。
比例(Scale)欄位1160-其內容允許針對記憶體位址產生之索引欄位內容的比例(例如,針對使用2 scale*index+base的位址產生)。
位移(Displacement)欄位1162A-其內容被用作為記憶體位址產生的部分(例如,針對使用2 scale*index +base+displacement的位址產生)。
位移因子(Displacement Factor)欄位1162B(注意,位移欄位1162A直接在位移因子欄位1162B之上的並置(juxtaposition)指示其中一個或另一個被使用)-其內容被用作為位址產生的部分;其載明要被比例記憶體存取(N)的尺寸之位移因子-其中,N為記憶體存取中位元組的數目(例如,針對使用2 scale*index+base+scaled displacement的位址產生)。多餘的低階位元(low-order bit)被忽略,因而位移因子欄位的內容被乘以記憶體運算元總尺寸(N)以便產生要被用來計算有效位址的最終位移。N的值由處理器硬體在運行時間(runtime)基於全部opcode欄位1174(在本文中稍後說明)和資料操縱(data manipulation)欄位1154C來予以決定。位移欄位1162A和位移因子欄位1162B在他們不被使用於無記憶體存取1105指令範本及/或不同的實施例可以施行該兩者的僅其中一個或兩者都不施行的意義上係可選的。
資料元素寬度欄位1164-其內容區別許多資料元素寬度中的哪一個要被使用(在有些實施例中係針對所有的指令;在其他實施例中係僅針對部分的指令)。此欄位在只要一個資料元素寬度被支援及/或諸資料元素寬度使用該等運算碼的某一態樣而被支援則不需要的意義上係可選的。
寫遮罩欄位1170-其內容,在每一個資料元素位置的基礎上,控制目的地向量運算元中的資料元素位置是否反映基本運算和擴增運算的結果。類別A指令範本支援合併-寫遮蔽(merging-writemasking),而類別B指令範本支援合併-寫遮罩和歸零-寫遮蔽(zeroing-writemasking)兩者。當合併時,向量遮罩在任何運算的執行期間讓目的地中之任意集合的元素能夠被保護而免於更新(由基本運算和擴增運算所指明);在另一個實施例中,保留目的地之每一個元素的舊值,其中,對應的遮罩位元具有0。相反地,當歸零時,向量遮罩在任何運算的執行期間讓目的地中之任意集合的元素能夠被歸零(由基本運算和擴增運算所指明);在一個實施例中,當對應的遮罩位元具有0值時,目的地中的元素被設定為0。此功能性的子集為控制正被實施之運算的向量長度的能力(亦即,元素的跨幅(span)被修改,從第一個到最後一個);然而,不需要被修改的元素是連續的。因此,寫遮罩欄位1170允許部分的向量運算,包含載入、儲存、算數、邏輯、等等。雖然實施例被說明,其中,寫遮罩欄位1170的內容從許多寫遮罩暫存器中選擇出要被使用的那一個寫遮罩暫存器(且因而,寫遮罩欄位1170的內容間接地識別要被實施的遮蔽),但是替代實施例反而或者另外地讓寫遮罩欄位1170的內容能夠直接載明要被實施的遮蔽。
立即(immediate)欄位1172-其內容允許立即的規格。此欄位在其不出現於不支援立即之通用向量友善格式的實作中以及其不出現於不使用立即之指令中的意義上係可選的。
類別欄位1168-其內容區別指令之不同的類別。參照 11A 11B,此欄位的內容在類別A與類別B指令之間做選擇。在 11A 11B中,圓角的正方形(rounded corner square)被用來指示特定值出現在欄位中(例如,分別在 11A 11B中用於類別欄位1168的類別A 1168A和類別B 1168B)。 類別 A 的指令範本
在類別A之無記憶體存取1105指令範本的情況中,阿爾法欄位1152係解譯為RS欄位1152A,其內容區別不同的擴增運算類型的哪一個要被實施(例如,捨入(round)1152A.1和資料變換1152A.2分別被指定給無記憶體存取、捨入類型運算1110指令範本和無記憶體存取、資料變換類型運算1115指令範本),而貝塔欄位1154區別指定類型之該等運算的哪一個要被實施。在無記憶體存取1105指令範本中,比例(Scale)欄位1160、位移(Displacement)欄位1162A、和位移因子(Displacement Factor)欄位1162B未出現。 無記憶體存取指令範本 - 全部捨入控制類型運算
在無記憶體存取、全部捨入控制類型運算1110指令範本中,貝塔欄位1154係解譯為捨入控制欄位1154A,其內容提供靜態捨入(static rounding)。雖然在所說明的實施例中,捨入控制欄位1154A包含抑制所有的浮點異常(floating point exception(SAE))欄位1156和捨入運算控制欄位1158,但是替代實施例可以支援將這兩種概念編碼進相同的欄位中或者僅具有這些概念/欄位的其中一個或另一個(例如,可以僅具有捨入運算控制欄位1158)。
SAE欄位1156-其內容區別是否使異常事件報告失能;當SAE欄位1156的內容指示抑制被致能時,給定的指令並不報告任何種類的浮點異常旗標而且並不提出任何浮點異常處理程序(handler)。
捨入運算控制欄位1158-其內容區別一群捨入運算的哪一個要實施(例如,無條件進位(Round-up)、無條件捨去(Round-down)、捨入為零(Round-towards-zero)、和捨入到最接近的整數(Round-to-nearest))。因此,捨入運算控制欄位1158允許在每一個指令的基礎上捨入模式的改變。在一個實施例中,其中,處理器包含用來指定捨入模式的控制暫存器,捨入運算控制欄位1150的內容複寫該暫存器值。 無記憶體存取指令範本 - 資料變換類型運算
在無記憶體存取、資料變換類型運算1115指令範本中,貝塔欄位1154係解譯為資料變換欄位1154B,其內容區別許多資料變換的哪一個要被實施(例如,沒有資料變換、切換(swizzle)、播散(broadcast))。
在類別A之記憶體存取1120指令範本的情況中,阿爾法欄位1152係解譯為驅逐暗示(eviction hint)欄位1152B,其內容區別驅逐暗示的哪一個要被使用(在 11A中,暫態(temporal)1152B.1和非暫態(non-temporal) 1152B.2分別被指定給記憶體存取、暫態1125指令範本和記憶體存取、非暫態1130指令範本),而貝塔欄位1154係解譯為資料操縱欄位1154C,其內容區別許多資料操縱運算(也被稱為原型(primitive))的哪一個要被實施(例如,沒有資料操縱;播散;來源的升頻轉換(up conversion);以及目的地的降頻轉換(down conversion))。記憶體存取1120指令範本包含比例(Scale)欄位1160,以及可選地包含位移(Displacement)欄位1162A或位移因子(Displacement Factor)欄位1162B。
向量記憶體指令以轉換支援而實施向量從記憶體載入以及向量儲存至記憶體。正如正常的向量指令一樣,向量記憶體指令以就資料元素而言的方式將資料從記憶體中轉移出或者將資料轉移至記憶體,而真正被轉移的元素由被選擇作為寫遮罩(write mask)之向量遮罩的內容來決定。 記憶體存取指令範本 - 暫態
暫態資料為可能快到足以受益於快取(caching)地被重用的資料。然而,這是一個暗示,以及不同的處理器可以用不同的方式來施行它,包含完全地忽視該暗示。 記憶體存取指令範本 - 非暫態
非暫態資料為不太可能快到足以受益於第一級(first-level)快取記憶體中之快取地被重用而且應該被給予驅逐的優先權的資料。然而,這是一個暗示,以及不同的處理器可以用不同的方式來施行它,包含完全地忽視該暗示。 類別 B 的指令範本
在類別B之指令範本的情況中,阿爾法欄位1152係解譯為寫遮罩控制(Z)欄位1152C,其內容區別受寫遮罩欄位1170所控制的寫遮蔽是否應該合併或歸零。
在類別B之無記憶體存取1105指令範本的情況中,貝塔欄位1154的部分係解譯為RL欄位1157A,其內容區別不同的擴增運算類型的哪一個要被實施(例如,捨入1157A.1和向量長度(VSIZE)1157A.2分別被指定給無記憶體存取、寫遮罩控制、部分捨入控制類型運算1112指令範本和無記憶體存取、寫遮罩控制、VSIZE類型運算1117指令範本),而貝塔欄位1154的剩餘部分區別指定類型之該等運算的哪一個要被實施。在無記憶體存取1105指令範本中,比例(Scale)欄位1160、位移(Displacement)欄位1162A、和位移因子(Displacement Factor)欄位1162B未出現。
在無記憶體存取、寫遮罩控制、部分捨入類型運算1112指令範本中,貝塔欄位1154的剩餘部分係解譯為捨入運算欄位1159A,而且異常事件報告被失能(給定的指令並不報告任何種類的浮點異常旗標而且並不提出任何浮點異常處理程序)。
捨入運算控制欄位1159A-就像捨入運算控制欄位1158一樣,其內容區別一群捨入運算的哪一個要實施(例如,無條件進位(Round-up)、無條件捨去(Round-down)、捨入為零(Round-towards-zero)、和捨入到最接近的整數(Round-to-nearest))。因此,捨入運算控制欄位1159A允許在每一個指令的基礎上捨入模式的改變。在一個實施例中,其中,處理器包含用來指定捨入模式的控制暫存器,捨入運算控制欄位1150的內容複寫該暫存器值。
在無記憶體存取、寫遮罩控制、VSIZE類型運算1117指令範本中,貝塔欄位1154的剩餘部分係解譯為向量長度欄位1159B,其內容區別許多資料向量長度中的哪一個要被實施(例如,128、256、或512個位元組)。
在類別B之記憶體存取1120指令範本的情況中,貝塔欄位1154的部分係解譯為播散欄位1157B,其內容區別播散式資料操縱運算是否要被實施,而貝塔欄位1154的剩餘部分係解譯為向量長度欄位1159B。記憶體存取1120指令範本包含比例欄位1160,以及可選地包含位移欄位1162A或位移因子欄位1162B。
關於通用向量友善指令格式1100,全部運算碼欄位1174係顯示包含格式欄位1140、基本運算欄位1142、和資料元素寬度欄位1164。雖然一個實施例顯示出其中全部運算碼欄位1174包含所有的這些欄位,但是在不支援所有這些欄位的實施例中,全部opcode欄位1174包含少於所有的這些欄位。全部opcode欄位1174提供運算碼(opcode)。
在通用向量友善指令格式中,擴增運算欄位1150、資料元素寬度欄位1164、和寫遮罩欄位1170讓這些特徵能夠在每一個指令的基礎上被指明。
寫遮罩欄位和資料元素寬度欄位的組合創建了類型指令,因為他們讓遮罩能夠基於不同的資料元素寬度來予以施加。
在類別A和類別B之內所發現的各式各樣指令範本在不同的情況下係有利的。在一些實施例中,不同的處理器或一處理器內之不同的核心可能僅支持類別A、僅支持類別B、或類別A和類別B兩者皆支持。例如,用於通用計算的高效能通用亂序(out-of-order)核心可能僅支持類別B,主要用於圖形及/或科學(throughput)的核心可能僅支持類別A,以及用於兩者的核心可能兩者皆支持(當然,具有來自兩者類別之範本和指令部分的混和而不是來自兩者類別之所有的範本和指令的核心係在本發明的範圍之內)。而且,單處理器可包含多個核心,所有的核心皆支持相同的類別或者其中不同的核心支持不同的類別。例如,在具有分離的圖形及通用核心的處理器中,主要用於圖形及/或科學計算之圖形核心中的一個可能僅支持類別A,而通用核心中的一個或更多個可以是具有用於僅支持類別B之通用核心的亂序執行及暫存器重命名的高效能通用核心。不具有分離的圖形核心之另一種處理器可包含類別A和類別B兩者皆支持之在一個通用有序或亂序核心。當然,來自其中一類別的特徵也可以被施行於不同實施例中的另一類別中。用高階語言寫成的程式投入(例如,及時編譯或統計編譯)各種不同的可執行形式,包含:1)僅具有由用於執行之目標處理器所支援之類別的指令之形式;或2)具有使用所有類別之指令的不同組合所寫成的替換常式(routine)且具有選擇基於由目前正在執行該碼之處理器所支援的指令而執行之常式的控制流程碼之形式。 代表性特定向量友善指令格式
12A為依據實施例,繪示代表性特定向量友善指令格式的方塊圖。 12A顯示特定向量友善指令格式1200,其在其載明該等欄位的位置、尺寸、解釋、及順序、以及那些欄位中的一些欄位之值的意義上係特定的。該特定向量友善指令格式1200可被用來擴充x86指令集,因而該等欄位的一些係和在現有的x86指令集及其擴充(例如,AVX)中所使用的那些類似或相同。此格式保持和具有擴充之現有x86指令集的前置編碼欄位、opcode位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、和立即欄位一致。 12A中之來自 11中之欄位的欄位被例舉出。
應了解到,雖然為了舉例說明目的而在通用向量友善指令格式1100的上下文中參照特定向量友善指令格式1200來說明實施例,但是除了所主張的部分外,本發明並不限定於特定向量友善指令格式1200。例如,通用向量友善指令格式1100思慮用於各種欄位之各種可能的尺寸,而特定向量友善指令格式1200係顯示為具有特定尺寸的欄位。藉由舉出特定的範例,雖然資料元素寬度欄位1164在特定向量友善指令格式1200中係例舉為一個位元的欄位,但是本發明並不限定於此(亦即,通用向量友善指令格式1100考慮資料元素寬度欄位1164的其他尺寸)。
通用向量友善指令格式1100包含按照 12A中所例舉之順序而被表列於下之下面的欄位。
EVEX前置1202(位元組0到3)-被編碼成4個位元組的形式。
格式欄位1140(EVEX位元組0,位元[7:0])-第一個位元組為格式欄位1140,且其含有0x62(在一個實施例中,用來區別該向量友善指令格式的唯一值)。
第二個4個位元組(EVEX位元組1到3)包含許多提供特定能力的位元欄位。
REX欄位1205(EVEX位元組1,位元[7到5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1157BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、和EVEX.B位元欄位提供和對應的VEX位元欄位相同的功能性,並且使用1的補數形式來加以編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。該等指令的其他欄位將暫存器索引的三個低位元編碼,如同習於此技藝者所已知的(rrr、xxx、和bbb),使得Rrrr、Xxxx、和Bbbb可以藉由添加EVEX.R、EVEX.X、和EVEX.B來予以形成。
REX’欄位1110-此為REX’欄位1110的第一部分而且是被用來將擴充之32暫存器組之上面的16個暫存器或下面的16個暫存器編碼的EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在一個實施例中,此位元,連同如下所指示的其他位元,被儲存成位元倒轉格式(bit inverted format)以與BOUND指令區別(在眾所周知的x86 32位元模式中),其真正的opcode位元組為62,但是在MOD R/M欄位(敘述於下)中不接受MOD欄位中11的值;替代實施例並不用該倒轉格式來儲存此與如下所指示的其他位元。1的值被用來編碼下面的16個暫存器。換言之,藉由組合EVEX.R’、EVEX.R、和來自其他欄位的其他RRR來構成R’Rrrr。
Opcode圖欄位1215(EVEX位元組1,位元[3:0]-mmmm)-其內容將隱含的(implied)前導(leading)運算元位元組(0F, 0F 38,或0F 3)編碼。
資料元素寬度欄位1164(EVEX位元組2,位元[7]-W)-係由記號(notation)EVEX.W來代表。EVEX.W被用來定義資料類型(不是32位元的資料元素就是64位元的資料元素)的粒度(大小尺寸)。
EVEX.vvvv 1220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可包含下面:1)EVEX.vvvv將以倒轉(inverted)(1的補數)形式載述之第一個來源暫存器運算元編碼,而且對具有2或更多個來源運算元的指令而言係有效的;2)對於某些向量移位(vector shift)而言,EVEX.vvvv將以1的補數形式載述之目的地暫存器運算元編碼;或3)EVEX.vvvv並不將任何運算元編碼,該欄位被保留而且應該含有1111b。因此,EVEX.vvvv欄位1220將以倒轉(1的補數)形式所儲存之第一個來源暫存器說明符(specifier)的4個低階位元(low-order bit)編碼。取決於指令,額外之不同的EVEX位元欄位被用來將說明符尺寸大小擴展到32個暫存器。
EVEX.U 1168類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則表示類別A或EVEX.U0;若 EVEX.U=1,則表示類別B或EVEX.U1。
前置編碼欄位1225(EVEX位元組2,位元[1:0]-pp)-為基本運算欄位提供額外的位元。除了為EVEX前置格式中之舊有的(legacy)SSE指令提供支援,此亦具有使SIMD前置精簡(compacting)的好處(而不是需要一位元組來表達SIMD前置,EVEX前置僅需要2個位元)。在一個實施例中,為了在舊有格式與EVEX前置格式兩者中支援使用SIMD前置(66H, F2H, F3H)之舊有的SSE指令,這些舊有的SIMD前置被編碼入SIMD前置編碼欄位中;而且於運行時間時在被提供給解碼器的PLA之前先被擴展進舊有的SIMD前置內(所以,PLA在沒有修改的情況下可以執行這些舊有指令的舊有格式與EVEX格式兩者)。雖然更新的指令可以將EVEX前置編碼欄位的內容直接使用作為opcode擴充,然而某些實施例為了一致性而以類似的方式擴展但允許要由這些舊有SIMD前置來予以載述的不同意義。替代實施例可以重新設計PLA來支援2位元的SIMD前置編碼,因而不需要擴展。
阿爾法欄位1152(EVEX位元組3,位元[7]-EH;也被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫遮罩控制、及EVEX.N;也被例舉有α),如同先前所述,此欄位為上下文特定的。
貝塔欄位1154(EVEX位元組3,位元[6:4]-SSS;也被稱為EVEX.s 2-0、EVEX.r 2-0、EVEX.rrl、EVEX.LL0、及EVEX.LLB;也被例舉有βββ),如同先前所述,此欄位為上下文特定的。
REX’欄位1110-此為REX’欄位的剩餘部分而且是可以被用來將擴充之32暫存器組之上面的16個暫存器或下面的16個暫存器編碼的EVEX.V’位元欄位(EVEX位元組,位元[3]-V’)。此位元係以位元倒轉格式來儲存。1的值被用來編碼下面的16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv來構成V’VVVV。
寫遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)-其內容載述寫遮罩暫存器中之暫存器的索引,如同先前所述。在一個實施例中,特定值EVEX.kkk=000具有隱含沒有任何寫遮罩被使用於特別的指令之特殊行為(此可以用各式各樣的方式來施行,其包含使用硬接線(hardwired)至所有1的或繞過該遮蔽硬體之硬體的寫遮罩)。
真正的Opcode欄位2630(位元組4)也被稱為opcode位元組。該opcode的部分也被載述於此欄位中。
MOD R/M欄位2640(位元組5)包含MOD欄位2642、Reg欄位2644、和R/M欄位2646。如同先前所述,MOD欄位2642的內容區別記憶體存取和非記憶體存取操作。Reg欄位2644的角色可包含下面兩種情況:將目的地暫存器運算元或來源暫存器運算元編碼,或者當作是opcode擴充而且不被用來編碼任何指令運算元。R/M欄位2646的角色可包含下面:將涉及記憶體位址的指令運算元編碼,或者將目的地暫存器運算元或來源暫存器運算元編碼。
Scale、Index、Base(SIB)位元組(位元組6)-如同先前所述,SIB 2650的內容係使用於記憶體位址產生。SIB.xxx 2654和SIB.bbb 2656-這些欄位的內容已經在先前被指有關暫存器索引Xxxx和Bbbb。
位移欄位1162A(位元組7到10)-當MOD欄位2642含有10時,位元組7到10為位移欄位1162A,並且其工作和舊有的32位元的位移(disp32)相同而且以位元組粒度工作。
位移因子欄位1162B(位元組7)-當MOD欄位2642含有01時,位元組7為位移因子欄位1162B。此欄位的位置和舊有的x86指令集8位元位移(disp8)的位置相同,其以位元組粒度工作。因為disp8係符號擴充的,所以其僅可以位址在-128與127位元組偏移之間;就64位元組的快取線而言,disp8使用8個位元,其可以設定於僅4個真正有用的值-128、-64、0、和64;由於常常需要更大的範圍,所以使用disp32;但是,disp32需要4個位元組。對比於disp8和disp32,位移因子欄位1162B為disp8的重新詮釋;當使用位移因子欄位1162B時,真正的位移係由位移因子欄位的內容乘以記憶體運算元存取的尺寸(N)來決定。此類型的位移被稱為disp8*N。這減小了平均指令長度(使用於該位移的單一位元組但是有更大的範圍)。此種壓縮的位移假設有效位移為記憶體存取之粒度的倍數,且因此,位址偏移之冗餘的低階位元不需要被編碼。換言之,位移因子欄位1162B取代舊有的x86指令集8位元位移。因而,位移因子欄位1162B係以和x86指令集8位元位移相同的方式編碼(所以在ModRM/SIB編碼規則方面沒有任何改變),除了disp8被超載至disp8*N以外。換言之,在編碼規則或編碼長度上沒有任何改變,僅在位移值由硬體的詮釋方面有改變(其需要將位移以記憶體運算元的尺寸來比例縮放而獲取逐位元組的(byte-wise)位址偏移)。立即欄位1172操作如同先前所述。 全部 opcode 欄位
12B為依據一個實施例,繪示組成全部opcode欄位1174之特定向量友善指令格式2600之欄位的方塊圖。明確地說,全部opcode欄位1174包含格式欄位1140、基本運算欄位1142、以及資料元素寬度(W)欄位1164。基本運算欄位1142包含前置編碼欄位2625、opcode圖欄位2615、以及真正的Opcode欄位2630。
暫存器索引欄位
12C為依據一個實施例,繪示組成暫存器索引欄位1144之特定向量友善指令格式2600之欄位的方塊圖。明確地說,暫存器索引欄位1144包含REX欄位2605、REX’欄位2610、MOD R/M.reg欄位2644、MODR/M.r/m欄位2646、VVVV欄位2620、xxx欄位2654、以及bbb欄位2656。 擴增運算欄位
12D為依據一個實施例,繪示組成擴增運算欄位1150之特定向量友善指令格式2600之欄位的方塊圖。當類別(U)欄位1168含有0時,其表示EVEX.U0(類別A 1168A);當其含有1時,其表示EVEX.U1(類別B 1168B)。當U=0且MOD欄位2642含有11(表示沒有記憶體存取操作)時,阿爾法欄位1152(EVEX位元組3,位元[7]-EH)被詮釋為rs欄位1152A。當rs欄位1152A含有1(捨入1152A.1)時,貝塔欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋為捨入控制欄位1154A。捨入控制欄位1154A包含一個位元的SAE欄位1156和二個位元的捨入運算欄位1158。當rs欄位1152A含有0(資料變換1152A.2)時,貝塔欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋為三個位元的資料變換欄位1154B。當U=0且MOD欄位2642含有00、01、或10(表示有記憶體存取操作)時,阿爾法欄位1152(EVEX位元組3,位元[7]-EH)被詮釋為驅逐暗示(EH)欄位1152B而且貝塔(beta)欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋為三個位元的資料操縱(data manipulation)欄位1154C。
當U=1時,阿爾法欄位1152(EVEX位元組3,位元[7]-EH)被詮釋寫遮罩控制(Z)欄位1152C。當U=1且MOD欄位2642含有11(表示沒有記憶體存取操作)時,貝塔欄位1154的部分(EVEX位元組3,位元[4]-S 0)被詮釋為RL欄位1157A;當其含有1(捨入1157A.1)時,貝塔欄位1154的剩餘部分(EVEX位元組3,位元[6到5]-S 2-1)被詮釋為捨入運算欄位1159A,而當RL欄位1157A含有0(VSIZE 1157A.2)時,貝塔欄位1154的剩餘部分(EVEX位元組3,位元[6到5]-S 2-1)被詮釋為向量長度欄位1159B(EVEX位元組3,位元[6到5]-L 1-0)。當U=1且MOD欄位2642含有00、01、或10(表示有記憶體存取操作)時,貝塔欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋為向量長度欄位1159B(EVEX位元組3,位元[6到5]-L 1-0)及播散欄位1157B(EVEX位元組3,位元[4]-B)。 代表性暫存器架構
13為依據一個實施例之暫存器架構1300的方塊圖。在所繪示的實施例中,有係512位元寬的32個向量暫存器1310;這些暫存器被參考為zmm0到zmm31。較低的16個zmm暫存器的低階256個位元被覆蓋在暫存器ymm0到ymm15上。較低的16個zmm暫存器的低階128個位元(ymm暫存器的低階128個位元)被覆蓋在暫存器xmm0到xmm15上。特定向量友善指令格式2600操作於這些被覆蓋的暫存器上,如同下表中所繪示的。
可調向量長度 類別 操作 暫存器
不包含向量長度欄位1159B的指令範本 A(圖11A; U=0) 1110, 1115, 1125, 1130 zmm暫存器(向量長度為64個位元組)
B(圖11B; U=1) 1112 zmm暫存器(向量長度為64個位元組)
包含向量長度欄位1159B的指令範本 B(圖11B; U=1) 1117, 1127 zmm, ymm, 或xmm暫存器(向量長度為64個位元組, 32個位元組, 或16個位元組)視向量長度欄位1159B而定
換言之,向量長度欄位1159B在最大長度與一或多個其他較短長度之間做選擇,其中,各個此種較短長度為之前長度的一半;以及沒有向量長度欄位1159B的指令範本運算於最大向量長度上。此外,在一個實施例中,特定向量友善指令格式2600的類別B指令範本運算於緊縮或純量單/雙精度浮點資料和緊縮或純量整數上。純量運算為對zmm/ymm/xmm暫存器中之最低階資料元素位置進行的運算;較高階資料元素位置不是被保留和他們在指令之前一樣就是被歸零,視實施例而定。
寫遮罩暫存器1315-在所繪示的實施例中,有8個寫遮罩暫存器(k0到k7),每一個的尺寸為64位元。在替代實施例中,寫遮罩暫存器1315的尺寸為16位元。如先前所述,在一個實施例中,向量遮罩暫存器k0可以不被使用作為寫遮罩;當一般會表示k0的編碼被使用於寫遮罩時,其選擇0xFFFF的硬連線(hardwired)寫遮罩,有效地使用於該指令的寫遮蔽失能。
通用暫存器1325-在所繪示的實施例中,有16個64位元的通用暫存器,其與現有的x86定址(addressing)模式一起被用來定址記憶體運算元。這些暫存器被引用名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8到R15。
純量浮點堆疊暫存器檔案(x87堆疊)1345,其上被混疊(aliased)MMX緊縮(packed)整數平面(flat)暫存器檔案1350-在所繪示的實施例中,x87堆疊為被用來使用x87指令集擴充而對32/64/80位元的浮點資料實施純量浮點運算的8個元素的堆疊;而MMX暫存器被用來對64位元的緊縮整數資料實施運算,以及固持針對在MMX與XMM暫存器之間所進行的一些運算之運算元。
替代實施例可以使用更寬或更窄的暫存器。除此之外,替代實施例可以使用更多、更少、或者不同的暫存器檔案和暫存器。
代表性核心架構、處理器、和電腦架構
處理器核心可以針對不同的目的而用不同的方式來予以實施,以及處理器核心可以被實施於不同的處理器中。例如,此等核心的實作可包含:1)用於通用計算的通用有序核心;2)用於通用計算的高效能通用亂序核心;3)主要用於圖形及/或科學(throughput)計算的專用核心。不同處理器的實作可包含:1)包含用於通用計算的一個或更多個通用有序核心及/或用於通用計算的一個或更多個通用亂序核心的CPU;以及2)包含主要用於圖形及/或科學(throughput)計算的一個或更多個專用核心的協同處理器(coprocessor)。此等不同的處理器導向不同的電腦系統架構,其可包含:1)與CPU分離之分開晶片上的協同處理器;2)和CPU相同的封裝組件中之分開晶粒上的協同處理器;3)和CPU相同的晶粒上的協同處理器(在該情況中,此協同處理器有時被稱為專用邏輯,諸如整合圖形及/或科學(throughput)邏輯,或者被稱為專用核心);及4)在可包含同一晶粒上之所述CPU(有時被稱為應用程式核心或應用程式處理器)、上述協同處理器、以及額外功能性之晶片上的系統。代表性核心架構接著被說明,其後是代表性處理器和電腦架構的說明。 代表性核心架構 有序和亂序核心方塊圖
14A為依據實施例,繪示代表性有序管線以及代表性暫存器重命名、亂序發出/執行管線兩者的方塊圖。 14B為依據實施例,繪示要被包含在處理器中之有序架構核心之代表性實施例以及代表性暫存器重命名、亂序發出/執行架構核心兩者的方塊圖。 14A 14B中的實線方框繪示有序管線和有序核心,而虛線方框的選項性添加繪示暫存器重命名、亂序發出/執行管線及核心。假設有序態樣為亂序態樣的子集合,則亂序態樣將被說明。
14A中,處理器管線1400包含提取階段1402、長度解碼階段1404、解碼階段1406、分配階段1408、重命名階段1410、排程(也被稱為分派或發出)階段1412、暫存器讀取/記憶體讀取階段1414、執行階段1416、寫回/記憶體寫入階段1418、異常處理階段1422、以及遞交(commit)階段1424。
14B顯示處理器核心1490,包含耦接至執行引擎單元1450的前端單元1430,並且兩者皆被耦接至記憶體單元1470。核心1490可以是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或者混和或替代核心類型。做為另一選項,核心1490可以是專用核心,諸如,例如網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元1430包含耦接至指令快取記憶體單元1434的分支預測單元1432,指令快取記憶體單元1434係耦接至指令轉譯後備緩衝器(TLB)1436,指令轉譯後備緩衝器(TLB)1436係耦接至指令提取單元1438,指令提取單元1438係耦接至解碼單元1440。解碼單元1440(或解碼器)可以解碼指令,以及產生微碼入口點(micro-code entry point)、微碼指令、其他指令、或者其他控制訊號作為輸出一或多個微操作,其係解碼自、或者反映自、或衍生自原始指令。解碼單元1440可以使用各種不同得機制來予以施行。適合機制的範例包含但不限於查找表(look-up table)、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一個實施例中,核心1490包含微碼ROM或者儲存用於某些巨指令的其他媒體(例如,在解碼單元1440中或者在前端單元1430之內)。解碼單元1440係耦接至執行引擎單元1450中的重命名/分配器(allocator)單元1452。
執行引擎單元1450包含耦接至退出(retirement)單元1454和一個或更多個排程器(scheduler)單元1456的集合的重命名/分配器單元1452。排程器單元1456代表任何數量之不同的排程器,包含預約站(reservation station)、中央指令窗口(window)、等等。排程器單元1456係耦接至物理暫存器檔案單元1458。物理暫存器檔案單元1458之各者代表一個或更多個物理暫存器檔案,其不同的一些物理暫存器檔案儲存一個或更多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,為待執行之下一個指令的位址之指令指標(pointer))、等等。在一個實施例中,物理暫存器檔案單元1458包括向量暫存器單元和純量暫存器單元。這些暫存器單元可提供架構的向量暫存器、向量遮罩暫存器、和通用暫存器。物理暫存器檔案單元1458被退出單元1454所覆蓋來例舉暫存器重命名和亂序執行可以被施行於其中之各式各樣的方式(例如,使用一或多個重排序緩衝器(reorder buffer)及一或多個退出暫存器檔案;使用一或多個未來檔案、一或多個歷史緩衝器、及一或多個退出暫存器檔案;使用暫存器圖及暫存器池;等等)。退出單元1454和物理暫存器檔案單元1458被耦接至執行群集(cluster)1460。執行群集1460包含一或多個執行單元1462的集合和一或多個記憶體存取單元1464的集合。執行單元1462可實施各式各樣的運算(例如,移位(shift)、加法、減法、乘法)以及對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然有些實施例可包含許多專用於特定功能或功能集合的執行單元,但是其他實施例可包含一個執行單元或接實施所有功能的多個執行單元。排程器單元1456、物理暫存器檔案單元1458、和執行群集1460被顯示為儘可能多個,因為某些實施例針對某些類型的資料/運算而創建分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量浮點管線,及/或各自具有他們自己的排程器單元、物理暫存器檔案單元、及/或執行群集的記憶體存取管線-而且在分離的記憶體存取管線的情況中,某些實施例被施行於其中僅此管線的執行群集具有一或多個記憶體存取單元1464。也應該瞭解到,在分離的管線被使用的情況中,這些管線的一個或更多個可以是亂序發出/執行的並且剩下者為有序的。
記憶體存取單元1464的集合被耦接至記憶體單元1470,記憶體單元1470包含耦接至資料快取記憶體單元1474的資料TLB單元1472,資料快取記憶體單元1474被耦接至第二級(L2)快取記憶體單元1476。在一個代表性實施例中,記憶體存取單元1464可包含載入單元、儲存位址單元、和儲存資料單元,其各自被耦接至記憶體單元1470中的資料TLB單元1472。指令快取記憶體單元1434被進一步耦接至記憶體單元1470中的第二級(L2)快取記憶體單元1476。L2快取記憶體單元1476被耦接至一個或更多個其他級的快取記憶體而且最終被耦接至主記憶體。
作為示例,代表性暫存器重命名、亂序發出/執行核心架構可施行管線1400如下:1)指令提取1438實施提取及長度解碼階段1402和1404;2)解碼單元1440實施解碼階段1406;3)重命名/分配器單元1452實施分配器階段1408和重命名階段1410;4)排程器單元1456實施排程階段1412;5)物理暫存器檔案單元1458和記憶體單元1470實施暫存器讀取/記憶體讀取階段1414;執行群集1460實施執行階段1416;6)記憶體單元1470和物理暫存器檔案單元1458實施寫回/記憶體寫入階段1418;7)各式各樣的單元可能涉及在異常處理階段1422中;以及8)退出單元1454和物理暫存器檔案單元1458實施遞交階段1424。
核心1490可支援一個或更多個指令集(例如,x86指令集(具有一些已經添加有更新版本的擴充);加州(CA), Sunnyvale之MIPS科技公司的MIPS指令集;加州(CA), Sunnyvale之ARM控股公司的ARM指令集(具有諸如NEON之可選的額外擴充)),包含本文中所述的指令。在一個實施例中,核心1490包含支援緊縮資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉以讓由許多多媒體應用程式所使用之運算能夠使用緊縮資料來予以實施。
應該了解到,該核心可支援多線程 (multithreading)(執行兩個或更多個平行集合的運算或線程),而且以各式各樣的方式來做,包含分時多線程(time sliced multithreading)、同時多線程(其中,單一個物理核心為其物理核心正在同時多線程之線程的每一個提供一邏輯核心)、或其組合(例如,分時提取和解碼並且在那之後同時多線程,諸如在英特爾混和線程技術中者(Intel® Hyperthreading technology)。
雖然暫存器重命名被說明於亂序執行的上下文中,應該了解到,暫存器重命名也可以被使用在有序架構中。雖然處理器之所例舉的實施例亦包含分開的指令和資料快取記憶體單元1434/1474以及共有的L2快取記憶體單元1476,替代實施例可針對指令和資料兩者而具有單一個內部快取記憶體,諸如,例如第一級(L1)內部快取記憶體,或者多級的內部快取記憶體。在一些實施例中,系統可包含內部快取記憶體以及在核心及/或處理器之外的外部快取記憶體的組合。或者,所有的快取記憶體可以在核心及/或處理器之外。 特定的代表性有序核心架構
15A 和圖 15B繪示更特定之代表性有序核心架構的方塊圖,其核心會是晶片中之幾個邏輯方塊(包含相同類型及/或不同類型的其他核心)中的一個。邏輯方塊經由高頻帶互連網路(例如,環狀網路(ring network)),視應用而與一些固定的功能邏輯、記憶體I/O介面、和其他需要的I/O邏輯相通訊。
15A為依據實施例,單一個處理器核心連同其連接至晶粒上(on-die)互連網路1502之連接以及連同其第二級(L2)快取記憶體1504之局部子集合(local subset)的方塊圖。在一個實施例中,指令解碼器1500支援具有緊縮(packed)資料指令集擴充的x86指令集。L1快取記憶體1506允許到快取記憶體進入純量及向量單元中的低延遲存取(low-latency access)。雖然在一個實施例(為了簡化設計)中,純量單元1508及向量單元1510使用分開的暫存器集合(分別是純量暫存器1512及向量暫存器1514),而且在他們之間轉移的資料被寫至記憶體而後從被第一級(L1)快取記憶體1506被讀回其中,但是替代實施例可以使用不同的方法(例如,使用單一個暫存器集合或者包含讓資料能夠被轉移於兩個暫存器集合之間而不被寫回和讀回的通訊路徑)。
L2快取記憶體1504的局部子集合為總體(global)L2快取記憶體的部分,而總體L2快取記憶體被分割成分離的局部子集合,每一個處理器核心一個。每一個處理器核心具有至L2快取記憶體1504之局部子集合其本身的直接存取。由處理器核心所讀的資料被儲存在其L2快取記憶體子集合1504中,而且能夠被快速地存取,和存取其自身的局部L2快取記憶體子集合的其他處理器核心平行地。由處理器核心所寫的資料被儲存在其自身的局部L2快取記憶體子集合1504中,而且如果有必要的話從其他的子集合湧入。環狀網路確保共有資料的連貫性(coherency)。環狀網路為雙向的,以讓諸如處理器核心、L2快取記憶體和其他邏輯方塊的代理器(agent)能夠在晶片內互相通訊。每一個環狀資料路徑在每一個方向為1012位元寬。
15B為依據實施例, 15A中之處理器核心之部分的展開視圖。 15B包含L1快取記憶體1504的L1資料快取記憶體1506A部分,以及有關向量單元1510和向量暫存器1514的更多細節。明確地說,向量單元1510為16-寬的向量處理單元(VPU)(見16-寬的ALU 1528),其執行整數、單精度浮點指令、及雙精度浮點指令的一或多者。VPU支援用切換單元1520來切換(swizzling)暫存器輸入、用數值轉換單元1522A-B來進行數值轉換、和用記憶體單元上之複製單元1524來進行複製。寫遮罩暫存器1526允許預測最終的向量寫入。
16為依據實施例之處理器1600的方塊圖,處理器1600可以具有一個以上的核心,可以具有整合的記憶體控制器,以及可以具有整合的圖形。 16中的實線方框繪示具有單一個核心1602A、系統代理器1610、一個或更多個匯流排控制器單元1616的集合的處理器1600,而虛線方框繪示具有多個核心1602A-N、系統代理器單元1610中之一個或更多個整合的記憶體控制器單元1614的集合、和專用邏輯1608的處理器1600。
因此,處理器1600的不同實作可包含:1)具有為整合圖形及/或科學(throughput)邏輯(其可包含一個或更多個核心)之專用邏輯1608以及為一個或更多個通用核心(例如,通用有序核心、通用亂序核心、該兩者的組合)之核心1602A-N的CPU;2)具有為主要用於圖形及/或科學(throughput)之大量專用核心之核心1602A-N的協同處理器;以及3)具有為大量通用有序核心之核心1602A-N的協同處理器。因此,處理器1600可以是通用處理器、協同處理器或專用處理器,諸如,例如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高流量多重整合核心(MIC)協同處理器(包含30個或更多個核心)、嵌入式處理器等等。處理器可被施行於一個或更多個晶片上。處理器1600可以是一個或更多個基板的一部分及/或可以使用許多處理技術之任一者處理器可被施行於一個或更多晶片上。而被施行於一個或更多個基板上,諸如,例如BiCMOS、CMOS、或NMOS。
記憶體階層包含核心內之一或多級的快取記憶體、一個或更多個共有快取記憶體單元1606的集合、和耦接至整合的記憶體控制器單元1614的集合的外部記憶體(未顯示出)。共有快取記憶體單元1606的集合可包含一個或更多個中級快取記憶體,諸如第二級(L2)、第三級(L3)、第四級(L4)、或其他級快取記憶體、末級快取記憶體(LLC)、及/或其組合。雖然在一個實施例中,基於環狀的互連單元1612使專用邏輯1608整合的圖形邏輯為專用邏輯的範例而且在本文中也被稱為專用邏輯、快取記憶體單元1606的集合、和系統代理器單元1610/整合的記憶體控制器單元1614的集合互連,但是替代實施例可以使用任何數量之已知技術用以使此等單元互連。在一個實施例中,連貫性係維持在一個或更多個快取記憶體單元1606與核心1602A-N之間。
在一些實施例中,核心1602A-N之一或多者能夠多線程。系統代理器1610包含協調及操作核心1602A-N的那些組件。系統代理器1610可包含例如功率控制單元(PCU)和顯示單元。PCU可以是或者包含用來調整核心1602A-N及專用邏輯1608之功率狀態所需要的邏輯和組件。顯示單元係用來驅動一個或更多個外部連接的顯示器。
核心1602A-N就指令集架構而言可以是同質的或異質的;亦即,核心1602A-N之二或多者可能能夠執行相同的指令集,而其它者可能僅能夠執行該指令集的子集合或者不同的指令集。 代表性電腦架構
17 20為代表性電腦架構的方塊圖。針對膝上型、桌上型、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路機房(network hub)、開關、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電子遊戲裝置、機上盒、微控制器、手機、便攜式媒體播放器、手持裝置、以及各種其他的電子裝置之技術中所已知的其他系統設計和組態也都適合。通常,如本文中所揭示之能夠結合處理器及/或其他執行邏輯之種類繁多的系統或電子裝置一般都適合。
現在參照 17,所顯示者為依據本發明之一個實施例之系統1700的方塊圖。系統1700可包含一個或更多個處理器1710、1715,他們被耦接至控制器集線器(hub)1720。在一個實施例中,控制器集線器1720包含圖形記憶體控制器集線器(GMCH)1790和輸入/輸出集線器(IOH)1750(其可以在分離的晶片上);GMCH 1790包含記憶體1740及協同處理器1745係耦接至其的記憶體和圖形控制器;IOH 1750係使輸入/輸出(I/O)裝置1760耦接至GMCH 1790。或者,記憶體和圖形控制器的其中之一或兩者被整合於處理器之內(如同本文中所述者),記憶體1740及協同處理器1745係直接耦接至處理器1710,而且控制器集線器1720和IOH 1750在單一個晶片中。
另外的處理器1715之可選性質係以虛線表示於 17中。處理器1710、1715各自可包含本文中所述之處理器核心中的一或多個,而且可以是處理器1600的某個版本。
記憶體1740可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或者該兩者的組合。對於至少一個實施例而言,控制器集線器1720經由諸如前側匯流排(FSB)、點對點介面諸如快速通道互聯(QPI)、或類似的連接1795之多點匯流排(multi-drop bus)而與處理器1710、1715相通訊。
在一個實施例中,協同處理器1745為一專用處理器,諸如,例如高流量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。在一個實施例中,控制器集線器1720可包含整合的圖形加速器。
在物理資源1710、1715之間,就包含架構的、微架構的、熱、功率耗損特性等等優點之度量的譜(spectrum of matrix)而言,可以有各式各樣的差異。
在一個實施例中,處理器1710執行控制一般類型之資料處理運算的指令。嵌入於指令之內的可能是協同處理器指令。處理器1710將這些協同處理器指令認作為應該由附加之協同處理器1745所執行之類型的指令。因此,處理器1710將這些協同處理器指令(或代表協同處理器指令的控制訊號)在協同處理器匯流排或其他互連部上發出到協同處理器1745。協同處理器1745接受並且執行所接收到的協同處理器指令。
現在參照 18,所顯示者為依據本發明之一實施例之第一更加特定代表性系統1800的方塊圖。如 18所示,多處理器系統1800為點對點互連系統,並且包含經由點對點互連部1850而耦接的第一處理器1870和第二處理器1880。處理器1870和1880各自可以是處理器1600的某個版本。在一個實施例中,處理器1870和1880分別為處理器1710和1715,而協同處理器1838為協同處理器1745。在另一個實施例中,處理器1870和1880分別為處理器1710和協同處理器1745。
處理器1870和1880係顯示分別包含整合的記憶體控制器(IMC)單元1872和1882。處理器1870也包含其匯流排控制器單元點對點(P-P)介面1876和1878作為部件;同樣地,第二處理器1880包含P-P介面1886和1888。處理器1870、1880可經由點對點(P-P)介面1850,使用P-P介面電路1878和1888來交換資訊。如圖18所示,IMC 1872和1882使處理器耦接至各自的記憶體,亦即記憶體1832和記憶體1834,其可以是在本地附接至各自的記憶體之主記憶體的部分。
處理器1870和1880可以各自經由各自的P-P介面1852、1854,使用點對點介面電路1876、1894、1886、1898而與晶片組1890交換資訊。晶片組1890可選地經由高效能介面1892而與協同處理器1838交換資訊。在一個實施例中,協同處理器1838為一專用處理器,諸如,例如高流量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。
共有的快取記憶體(未顯示出)可以不是被包含在處理器中,就是被包含在兩個處理器之外,但是經由P-P互連部而與處理器相連接,使得如果處理器被置於低功率模式中,則任何一個處理器或兩個處理器之本地快取記憶體資訊可以被儲存在共有的快取記憶體中。
晶片組1890可經由介面1896而被耦接至第一匯流排1816。在一個實施例中,第一匯流排1816可以是周邊組件互連(PCI)匯流排,或者諸如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明的範疇不限於此。
18所示,各式各樣的I/O裝置1814可以被耦接至第一匯流排1816,以及使第一匯流排1816耦接至第二匯流排1820的匯流排橋接器1818。在一個實施例中,一個或更多個另外的處理器1815,諸如協同處理器、高流量MIC處理器、GPGPU、加速器(諸如,例如圖形加速器或數位訊號處理器(DSP)單元)、現場可編程邏輯閘陣列、或者任何其他的處理器,被耦接至第一匯流排1816。在一個實施例中,第二匯流排1820可以是低接腳計數(low pin count(LPC))匯流排。在一個實施例中,各式各樣的裝置可以被耦接至第二匯流排1820,包含,例如鍵盤及/或滑鼠1822、通訊裝置1827及儲存單元1828,諸如磁碟機或可包含指令/碼及資料1830的其他大量儲存裝置。此外,聲頻I/O 1824可以被耦接至第二匯流排1820。注意,其他架構係有可能的。例如,代替 18的點對點架構,一系統可以被施行多點匯流排(multi-drop bus)或其他此種架構。
現在參照 19,所顯示者為依據本發明之一實施例之第二更加特定代表性系統1900的方塊圖。 18 及圖 19中相同的元件賦予相同的參考數字,而且 18的某些態樣在 19中被省略以免使 19的其他態樣模糊。
19繪示處理器1870、1880可分別包含整合的記憶體和I/O控制邏輯(“CL”)1972和1982。因此,CL 1972、1982包含整合的記憶體控制器單元而且包含I/O控制邏輯。 19繪示不僅記憶體1832、1834被耦接至CL 3372、3382,而且I/O裝置3314也被耦接至控制邏輯3372、3382。舊有的I/O裝置3315被耦接至晶片組1890。
現在參照 20,所顯示者為依據本發明之一實施例之SoC 2000的方塊圖。 20中類似的元件賦予相同的參考數字。而且虛線方框為更先進之SoC上的可選特徵。在 20中,互連單元2002被耦接至:應用處理器2010,其包含一個或更多個核心1602A-N、其包含快取記憶體單元1604A-N、和共有的快取記憶體單元1606的集合;系統代理器單元1610;匯流排控制器單元1616;整合的記憶體控制器單元1614;一個或更多個協同處理器2020的集合,其可包含整合的圖形邏輯、影像處理器、聲頻處理器、和視頻處理器;靜態隨機存取記憶體(SRAM)單元2030;直接記憶體存取(DMA)單元2032;和用以耦接至一個或更多個外部顯示器的顯示器單元2040。在一些實施例中,協同處理器2020包含專用處理器,諸如,例如網路或通訊處理器、壓縮引擎、GPGPU、高流量MIC處理器、嵌入式處理器等等。
本文中所揭示之機構的實施例可以用硬體、軟體、韌體、或此等實作方案的組合來予以施行。實施例可以被施行為執行於可編程系統上的電腦程式或程式碼,可編程系統包括至少一個處理器、儲存系統(包含揮發性和非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、和至少一個輸出裝置。
程式碼,諸如 18所繪示的碼1830,可以被應用於輸入指令來實施本文中所述的功能並且產生輸出資訊。輸出資訊可以用已知的方式而被應用於一個或更多個輸出裝置。為了此應用的目的,處理系統包含具有處理器的任何系統,諸如,例如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可以用高階程序語言或物件導向程式設計語言來予以施行,以與處理系統相通訊。如果需要的話,程式碼也可以用組合語言或機器語言來予以施行。實際上,本文中所述的機制在範圍上並不限於任何特殊的程式設計語言。在任何情況下,語言可以是編譯語言或直譯式(interpreted)語言。
至少一個實施例的一個或更多個態樣可以藉由儲存在機器可讀媒體上的代表性指令來予以施行,機器可讀媒體代表處理器之內的各種邏輯,該等指令當被機器讀取時致使機器製作邏輯來實施本文中所述的技術。此等表示,以「IP核心」而知名,可被儲存在實體、機器可讀媒體上,而且被供應給各種顧客或製造設施以載入真正做成該邏輯或處理器的製作機器中。
此種機器可讀儲存媒體可包含但不限於由機器或裝置所製造或形成之非暫態性、實體的物件配置,其包含儲存媒體,諸如硬碟、包含軟碟、光碟、唯讀記憶光碟(CD-ROM)、可重複錄寫光碟(CD-RW)、和磁光碟之任何其他類型的碟片、諸如唯讀記憶體(ROM)、諸如動態隨機記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、快閃記憶體、可電子拭除式可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡、或者適合用來儲存電子指令之任何其他類型的媒體之半導體裝置。
因此,實施例也包含含有指令或者含有設計資料的非暫態性、實體機器可讀媒體,諸如硬體描述語言(HDL),其定義本文中所述的結構、電路、設備、處理器、及/或系統特徵。此等實施例也可被稱為程式產品。 仿真 (emulation)( 包含二進制轉譯 (binary translation) 、碼變形 (code morphing) 等等 )
在一些情況中,指令轉換器可以被用來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可以將指令轉譯(例如,使用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)、變形(morph)、仿真、或者轉換成要被核心處理的一個或更多個其他指令。指令轉換器可以用軟體、硬體、韌體、或其組合來予以施行。指令轉換器可以在處理器上、在處理器外、或者部分在處理器上且部分在處理器外。
21為依據實施例,對比軟體指令轉換器的使用而將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。在所繪示的實施例中,指令轉換器為軟體指令轉換器,儘管替換地,指令轉換器可以用軟體、韌體、硬體、或其各種組合來予以施行。圖21顯示高階語言2102中的程式可以使用x86編譯器2104來予以編譯而產生可以由具有至少一個x86指令集核心的處理器2116所本機(natively)執行的x86二進位碼2106。具有至少一個x86指令集核心2116的處理器代表可以藉由相容地執行或者處理(1)Intel x86指令集核心之指令集的實質部分或(2)目標要運行於具有至少一個x86指令集核心的Intel處理器上之應用程式或其他軟體的目標碼(object code)版本來實施實質上和具有至少一個x86指令集核心的Intel處理器相同的功能,以便達成實質上和具有至少一個x86指令集核心的Intel處理器相同結果的任何處理器。x86編譯器2104代表可操作來產生x86二進位碼2106(例如,目標碼)的編譯器,其在具有或沒有額外的連鎖(linkage)處理下可以被執行於具有至少一個x86指令集核心的處理器2116上。同樣地, 21顯示高階語言2102中的程式可以使用替代指令集編譯器2108來編譯而產生可以由沒有至少一個x86指令集核心的處理器2114(例如,具有執行加州(CA), Sunnyvale之MIPS科技公司的MIPS指令集及/或加州(CA), Sunnyvale之ARM控股公司的ARM指令集之核心的處理器)所本機執行的替代指令集二進位碼2110。指令轉換器2112被用來將x86二進位碼2106轉換成可以由沒有x86指令集核心的處理器2114所本機執行的碼。此轉換碼不可能和替代指令集二進位碼2110相同,因為能夠這樣的指令轉換器難以做出;然而,轉換碼將完成一般的運算而且由來自替代指令集的指令所組成。因此,指令轉換器2112代表經由仿真、模擬或其他處理,讓處理器或不具有x86指令集處理器或核心的其他電子裝置能夠執行x86二進位碼2106的軟體、韌體、硬體、或其組合。
在一實施例中,一種設備包含核心和硬體速率選擇器。該硬體速率選擇器係用以,回應來自該核心之對記憶體頻寬的需求已經到達一閾值的第一指示,確定要被用來限制對該核心之記憶體頻寬之分配的延遲值。該硬體速率選擇器包含控制器,具有用以計算來自該第一核心之記憶體頻寬需求之第二指示的第一計數器和用以計算時間視窗之屆滿的第二計數器。該第一指示係基於第一計數器值與第二計數器值之間的差值。
在一實施例中,該第一計數器係用以計算共享之快取未命中作為記憶體頻寬需求之該第二指示;該設備也包含連接至網狀互連上之整合的記憶體控制器的快取代理器,其中,該快取代理器係用以將該第二指示提供給該速率選擇器;該設備也包含速率限制器硬體,其中,該速率選擇器硬體係用以將該第一延遲值提供給該速率限制器,要被該速率限制器硬體用來限制對該核心之記憶體頻寬的分配;該第一延遲值係要被用來延遲來自該核心之對記憶體存取的請求;該第一延遲值係要被映射到要被用來節流來自該核心之記憶體存取的節流等級;該第一延遲值係要被用來藉由延遲來自執行於該核心上之線程的微操作分配以延遲來自該核心之對記憶體存取的請求;該速率選擇器硬體也用以,回應來自該核心之對記憶體頻寬的需求已經減少至下閾值的第三指示,將第四指示提供給該速率限制器硬體要被用來增加對該核心之記憶體頻寬的分配;回應該第四指示,對該核心之記憶體頻寬的分配係要不被該速率限制器硬體所限制;該速率限制器硬體係用以在該第三指示之前和在來自該核心之對記憶體頻寬的需求已經減少至該上閾值的第四指示之後,繼續限制對該核心之記憶體頻寬的分配;該速率選擇器硬體係用以基於要被分配給要被執行於該核心上之線程的第一類服務來確定該第一延遲值;該速率選擇器硬體係用以基於要被分配給該線程的該第一類服務來確定第一時間視窗長度;該設備也包含儲存器,用以儲存包含該第一類服務之複數個類別服務到包含該第一時間視窗長度之複數個時間視窗長度的映射;及/或該映射係要在該設備的啟動期間由校準過程所儲存。
在一實施例中,一種方法包含以時間視窗長度和第一延遲值來校準硬體速率選擇器;確定來自處理器核心之對記憶體頻寬的需求已經到達上閾值,其中,該確定係基於來自該核心之對記憶體頻寬需求的指示與時間視窗之屆滿的計數之間的差值;以及回應確定來自該處理器核心之對記憶體頻寬的需求已經到達該上閾值,基於該第一延遲值來限制對該核心之記憶體頻寬的分配。
在實施例中,該方法也可包含在確定需求已經到達該上閾值之後和在確定需求已經減少到該下閾值之前,確定來自該處理器核心之對記憶體頻寬的需求已經減少到該上閾值;以及回應確定來自該處理器核心之對記憶體頻寬的需求已經減少到該上閾值,繼續限制對該核心之記憶體頻寬的分配;確定來自該處理器核心之對記憶體頻寬的需求已經減少到下閾值;以及回應確定來自該處理器核心之對記憶體頻寬的需求已經減少到該下閾值,不限制對該核心之記憶體頻寬的分配。
在實施例中,一種系統可包含記憶體;核心;硬體速率選擇器,回應來自該核心之對記憶體頻寬的需求已經到達上閾值的第一指示,確定要被用來限制對該核心之記憶體頻寬之分配的第一延遲值,其中,該硬體速率選擇器包含控制器,具有用以計算來自該第一核心之記憶體頻寬需求之第二指示的第一計數器和用以計算時間視窗之屆滿的第二計數器,以及該第一指示係基於該第一計數器值與該第二計數器值之間的差值。在實施例中,硬體速率選擇器係用以根據要被指派給一線程的第一類服務來決定第一時間視窗長度,該線程要被執行於該核心上;及/或該系統也包含用以儲存被數類服務到複數個時間視窗長度之映射的儲存器,該複數類服務包含第一類服務,該複數個時間視窗長度包含第一時間視窗長度。
在實施例中,一種設備可包含用來實施本文中所揭示之任何功能的機構。在實施例中,一種設備可包括儲存碼之資料儲存裝置,當碼被硬體處理器所執行時致使硬體處理器實施本文中所揭示之任何方法。一種設備可以如同詳細說明中所述者。一種方法可以如同詳細說明中所述者。在實施例中,一種非暫態機器可讀媒體可儲存碼,當碼被機器所執行時致使機器實施包括本文中所揭示之任何方法的方法。
100:系統 102:處理器/系統單晶片(SoC) 104:MSR 110:非核心 111,112:核心 111A,111B,112A,112B:線程 121,122:第二級(L2)快取記憶體 130:末級快取記憶體 150A,150B,151A,151B,152A,152B:速率限制器 160A,160B,161A,161B,162A,162B:速率選擇器 200:速率選擇器 210:記憶體頻寬監視器 220:控制器 230:速率限制 300:速率選擇器 310:LLC未命中預測器 312:多工器 320:速率限制方塊 330:節流方塊 400:速率選擇器 402:漏桶計數器 404:輸出訊號 410:快取/本地代理器 420:整合的記憶體控制器 500:邏輯 510,520:多工器 610:系統配置控制器(ubox)資料結構 620:暫存器排組 630:速率選擇器 700:MBA系統級架構 702:速率選擇器 704:核心 706:快取/本地代理器 708:整合的記憶體控制器 710:漏桶計數器 720:基本輸入/輸出系統 910:末級快取記憶體 920:遮罩 1100:通用向量友善指令格式 1105:無記憶體存取 1110:無記憶體存取、全部捨入控制類型運算 1112:無記憶體存取、寫遮罩控制、部分捨入控制類型運算 1115:無記憶體存取、資料變換類型運算 1117:無記憶體存取、寫遮罩控制、vsize類型運算 1120:記憶體存取 1125:記憶體存取、暫態 1127:記憶體存取、寫遮罩控制 1130:記憶體存取、非暫態 1140:格式欄位 1142:基本運算欄位 1144:暫存器索引欄位 1146:修飾符欄位 1146A:無記憶體存取 1146B:記憶體存取 1150:擴增運算欄位 1152:阿爾法(alpha)欄位 1152A:RS欄位 1152A.1:捨入 1152A.2:資料變換 1152B:驅逐暗示欄位 1152B.1:暫態 1152B.2:非暫態 1152C:寫遮罩控制欄位 1154:貝塔(beta)欄位 1154A:捨入控制欄位 1154B:資料變換欄位 1154C:資料操縱欄位 1156:浮點異常(SAE)欄位 1157A:RL欄位 1157A.1:捨入 1157A.2:向量長度(VSIZE) 1157B:播散欄位 1158:捨入運算欄位 1159A:捨入運算欄位 1159B:向量長度欄位 1160:比例欄位 1162A:位移欄位 1162B:位移因子欄位 1164:資料元素寬度欄位 1168:類別欄位 1168A:類別A 1168B:類別B 1170:寫遮罩欄位 1172:立即欄位 1174:全部運算碼欄位 1200:特定向量友善指令格式 1202:VEX前置碼 1205:REX欄位 1210:REX’欄位 1215:運算碼圖欄位 1220:VVVV欄位 1225:前置碼編碼欄位 1230:真正的運算元欄位 1240:Mod R/M 1242:MOD欄位 1244:暫存器索引欄位 1246:R/M欄位 1250:SIB位元組 1252:SS欄位 1254:XXX欄位 1256:BBB欄位 1300:暫存器架構 1310:向量暫存器 1315:寫遮罩暫存器 1325:通用暫存器 1345:純量浮點堆疊暫存器檔案 1350:MMX緊縮整數平面暫存器檔案 1400:處理器管線 1402:提取階段 1404:長度解碼階段 1406:解碼階段 1408:分配階段 1410:重命名階段 1412:排程(分派或發出)階段 1414:暫存器讀取/記憶體讀取階段 1416:執行階段 1418:寫回/記憶體寫入階段 1422:異常處理階段 1424:遞交階段 1430:前端單元 1432:分支預測單元 1434:指令快取記憶體單元 1436:轉譯後備緩衝器(TLB) 1438:指令提取單元 1440:解碼單元 1450:執行引擎單元 1452:重命名/分配器單元 1454:退出單元 1456:排程器單元 1458:物理暫存器檔案單元 1460:執行群集 1462:執行單元 1464:記憶體存取單元 1470:記憶體單元 1472:資料TLB單元 1474:資料快取記憶體單元 1476:第二級(L2)快取記憶體單元 1490:核心 1500:指令解碼器 1502:互連網路 1504:第二級(L2)快取記憶體之局部子集合 1506:第一級(L1)快取記憶體 1506A:第一級(L1)資料快取記憶體 1508:純量單元 1510:向量單元 1512:純量暫存器 1514:向量暫存器 1520:切換單元 1522A,1522B:數值轉換單元 1524:複製單元 1526:寫遮罩暫存器 1528:16-寬的向量算術邏輯單元(ALU) 1600:處理器 1602A-N:核心 1604A-N:快取記憶體單元 1606:共有快取記憶體 1608:專用邏輯 1610:系統代理器 1612:基於環狀的互連單元 1614:整合的記憶體控制器單元 1616:匯流排控制器單元 1700:系統 1710,1715:處理器 1720:控制器集線器 1740:記憶體 1745:協同處理器 1750:輸入/輸出集線器(IOH) 1760:輸入/輸出(I/O)裝置 1790:圖形記憶體控制器集線器(GMCH) 1795:連接 1800:多處理器系統 1814:I/O裝置 1815:處理器 1816:第一匯流排 1818:匯流排橋接器 1820:第二匯流排 1822:鍵盤/滑鼠 1824:聲頻I/O裝置 1827:通訊裝置 1828:資料儲存單元 1830:碼和資料 1832,1834:記憶體 1838:協同處理器 1850:點對點互連部 1852,1854:點對點(P-P)介面 1870:第一處理器 1872,1882:整合的記憶體控制器(IMC)單元 1876,1878,1886,1888,1894,1898:點對點(P-P)介面電路 1880:第二處理器 1892,1896:介面(I/F) 1890:晶片組 1900:系統 1914:I/O裝置 1915:舊有的I/O裝置 1972,1982:控制邏輯(CL) 2000:系統單晶片(SoC) 2002:互連單元 2010:應用處理器 2020:協同處理器 2030:靜態隨機存取記憶體(SRAM)單元 2032:直接記憶體存取(DMA)單元 2040:顯示器單元 2102:高階語言 2104:第一編譯器 2106:第一指令集 2108:替代指令集編譯器 2110:替代指令集二進位碼 2112:指令轉換器 2114:沒有至少一個第一指令集核心的處理器 2116:具有至少一個第一指令集核心的處理器
本發明經由舉例來予以說明而且不被限定於隨附圖式的圖形中,其中,相同的參考符號指示相似的元件,而且其中:
[ 1]係依據實施例之系統的方塊圖,其中,分配的共享資源可以是快取記憶體及/或記憶體頻寬;
[ 2 3 、及 4]繪示依據實施例的速率(rate)選擇器;
[ 5]顯示速率選擇器中之漏桶(leaky bucket)的主要輸出如何可以依據實施例來予以使用;
[ 6]繪示依據實施例的系統級使用模型(system level usage model);
[ 7]繪示依據實施例的系統級使用模型;
[ 8]顯示實施例之潛在利益的概念視圖;
[ 9]繪示偽鎖定(pseudo-locking)技術之實施例的使用,其可提供快取記憶體的有效共享;
[ 10]繪示依據實施例的方法;
[ 11A 11B]係依據實施例,繪示通用向量友善指令格式及其指令範本(template)的方塊圖;
[ 11A]係依據實施例,繪示通用向量友善指令格式及其類別A指令範本的方塊圖;
[ 11B]係依據實施例,繪示通用向量友善指令格式及其類別B指令範本的方塊圖;
[ 12A]係依據實施例,繪示代表性特定向量友善指令格式的方塊圖;
[ 12B]係依據一個實施例,繪示組成全部opcode欄位之特定向量友善指令格式之欄位的方塊圖;
[ 12C]係依據一個實施例,繪示組成暫存器索引欄位之特定向量友善指令格式之欄位的方塊圖;
[ 12D]係依據一個實施例,繪示組成擴增運算(augmentation operation)欄位之特定向量友善指令格式之欄位的方塊圖;
[ 13]係依據一個實施例之暫存器架構的方塊圖;
[ 14A]係依據實施例,繪示代表性有序(in-order)管線以及代表性暫存器重命名(renaming)、亂序(out of-order)發出/執行管線兩者的方塊圖;
[ 14B]係依據實施例,繪示要被包含在處理器中之有序架構核心之代表性實施例以及代表性暫存器重命名、亂序發出/執行架構核心兩者的方塊圖;
[ 15A 15B]繪示更加特定之代表性有序核心架構的方塊圖,該核心為晶片中幾個邏輯方塊(包含相同類型及/或不同類型之其他核心)中的一個;
[ 15A]係依據實施例之單一處理器核心連同其連接至晶粒上(on-die)互連網路之連接以及連同其第二級(L2)快取記憶體之局部子集合(local subset)的方塊圖;
[ 15B]係依據實施例,圖15A中處理器核心之部分的展開視圖;
[ 16]係依據實施例之處理器的方塊圖,處理器可以具有一個以上的核心,可以具有整合的記憶體控制器,以及可以具有整合的圖形;
[ 17 20]係代表性電腦架構的方塊圖;
[ 17]顯示依據本發明之一個實施例之系統的方塊圖;
[ 18]係依據本發明之一實施例之第一更加特定代表性系統的方塊圖;
[ 19]係依據本發明之一實施例之第二更加特定代表性系統的方塊圖;
[ 20]係依據本發明之一實施例之系統單晶片(SoC)的方塊圖;以及
[ 21]係依據實施例,對比軟體指令轉換器的使用而將來源指令集中的二進制指令轉換成目標指令集中的二進制指令的方塊圖。
100:系統
102:處理器/系統單晶片(SoC)
104:MSR
110:非核心
111,112:核心
111A,111B,112A,112B:線程
121,122:第二級(L2)快取記憶體
130:末級快取記憶體
140:記憶體
150A,150B,151A,151B,152A,152B:速率限制器
160A,160B,161A,161B,162A,162B:速率選擇器

Claims (20)

  1. 一種設備,包括: 核心; 速率選擇器硬體,回應來自該核心之對記憶體頻寬的需求已經到達上閾值的第一指示,確定要被用來限制對該核心之記憶體頻寬之分配的第一延遲值,其中, 該速率選擇器硬體包含控制器,具有用以計算來自該第一核心之記憶體頻寬需求之第二指示的第一計數器和用以計算時間視窗之屆滿的第二計數器,以及 該第一指示係基於該第一計數器值與該第二計數器值之間的差值。
  2. 如請求項1之設備,其中,該第一計數器係用以計算共享之快取未命中作為記憶體頻寬需求之該第二指示。
  3. 如請求項2之設備,另包括連接至網狀互連上之整合的記憶體控制器的快取代理器,其中,該快取代理器係用以將該第二指示提供給該速率選擇器。
  4. 如請求項1之設備,另包括速率限制器硬體,其中,該速率選擇器硬體係用以將該第一延遲值提供給該速率限制器,要被該速率限制器硬體用來限制對該核心之記憶體頻寬的分配。
  5. 如請求項4之設備,其中,該第一延遲值係要被用來延遲來自該核心之對記憶體存取的請求。
  6. 如請求項5之設備,其中,該第一延遲值係要被映射到要被用來節流來自該核心之記憶體存取的節流等級。
  7. 如請求項5之設備,其中,該第一延遲值係要被用來藉由延遲來自執行於該核心上之線程的微操作分配以延遲來自該核心之對記憶體存取的請求。
  8. 如請求項5之設備,其中,該速率選擇器硬體也用以,回應來自該核心之對記憶體頻寬的需求已經減少至下閾值的第三指示,將第四指示提供給該速率限制器硬體要被用來增加對該核心之記憶體頻寬的分配。
  9. 如請求項8之設備,其中,回應該第四指示,對該核心之記憶體頻寬的分配係要不被該速率限制器硬體所限制。
  10. 如請求項8之設備,其中,該速率限制器硬體係用以在該第三指示之前和在來自該核心之對記憶體頻寬的需求已經減少至該上閾值的第四指示之後,繼續限制對該核心之記憶體頻寬的分配。
  11. 如請求項1之設備,其中,該速率選擇器硬體係用以基於要被分配給要被執行於該核心上之線程的第一類服務來確定該第一延遲值。
  12. 如請求項11之設備,其中,該速率選擇器硬體係用以基於要被分配給該線程的該第一類服務來確定第一時間視窗長度。
  13. 如請求項12之設備,另包括儲存器,用以儲存包含該第一類服務之複數個類別服務到包含該第一時間視窗長度之複數個時間視窗長度的映射。
  14. 如請求項13之設備,其中,該映射係要在該設備的啟動期間由校準過程所儲存。
  15. 一種方法,包括: 以時間視窗長度和第一延遲值來校準硬體速率選擇器; 確定來自處理器核心之對記憶體頻寬的需求已經到達上閾值,其中,該確定係基於來自該核心之對記憶體頻寬需求的指示與時間視窗之屆滿的計數之間的差值;以及 回應確定來自該處理器核心之對記憶體頻寬的需求已經到達該上閾值,基於該第一延遲值來限制對該核心之記憶體頻寬的分配。
  16. 如請求項15之方法,另包括: 確定來自該處理器核心之對記憶體頻寬的需求已經減少到下閾值;以及 回應確定來自該處理器核心之對記憶體頻寬的需求已經減少到該下閾值,不限制對該核心之記憶體頻寬的分配。
  17. 如請求項15之方法,另包括: 在確定需求已經到達該上閾值之後和在確定需求已經減少到該下閾值之前,確定來自該處理器核心之對記憶體頻寬的需求已經減少到該上閾值;以及 回應確定來自該處理器核心之對記憶體頻寬的需求已經減少到該上閾值,繼續限制對該核心之記憶體頻寬的分配。
  18. 一種系統,包括: 記憶體; 核心; 硬體速率選擇器,回應來自該核心之對記憶體頻寬的需求已經到達上閾值的第一指示,確定要被用來限制對該核心之記憶體頻寬之分配的第一延遲值,其中, 該硬體速率選擇器包含控制器,具有用以計算來自該第一核心之記憶體頻寬需求之第二指示的第一計數器和用以計算時間視窗之屆滿的第二計數器,以及 該第一指示係基於該第一計數器值與該第二計數器值之間的差值。
  19. 如請求項18之系統,其中,該硬體速率選擇器係用以基於要被分配給要被執行於該核心上之線程的第一類服務來確定該第一時間視窗長度。
  20. 如請求項19之系統,另包括儲存器,用以儲存包含該第一類服務之複數個類別服務到包含該第一時間視窗長度之複數個時間視窗長度的映射。
TW110130683A 2020-09-26 2021-08-19 用以分配共享資源的硬體及配置支援 TW202217558A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2020/052965 WO2022066179A1 (en) 2020-09-26 2020-09-26 Hardware and configuration support for allocating shared resources
WOPCT/US20/52965 2020-09-26

Publications (1)

Publication Number Publication Date
TW202217558A true TW202217558A (zh) 2022-05-01

Family

ID=78650008

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110130683A TW202217558A (zh) 2020-09-26 2021-08-19 用以分配共享資源的硬體及配置支援

Country Status (6)

Country Link
US (1) US20230325241A1 (zh)
DE (1) DE102021121210A1 (zh)
FR (1) FR3115616B1 (zh)
NL (1) NL2029046B1 (zh)
TW (1) TW202217558A (zh)
WO (1) WO2022066179A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240160581A1 (en) * 2022-11-14 2024-05-16 Intel Corporation Cache optimization mechanism

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6662278B1 (en) * 2000-09-22 2003-12-09 Intel Corporation Adaptive throttling of memory acceses, such as throttling RDRAM accesses in a real-time system
US8819687B2 (en) * 2010-05-07 2014-08-26 Advanced Micro Devices, Inc. Scheduling for multiple memory controllers
US20160284021A1 (en) * 2015-03-27 2016-09-29 Andrew Herdrich Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement
US10241834B2 (en) * 2016-11-29 2019-03-26 International Business Machines Corporation Bandwidth aware resource optimization
US10871996B2 (en) * 2018-10-17 2020-12-22 Oracle International Corporation Detection, modeling and application of memory bandwith patterns
US11726910B2 (en) * 2019-03-13 2023-08-15 Intel Corporation Dynamic control of memory bandwidth allocation for a processor

Also Published As

Publication number Publication date
FR3115616A1 (fr) 2022-04-29
DE102021121210A1 (de) 2022-03-31
NL2029046B1 (en) 2022-07-27
US20230325241A1 (en) 2023-10-12
NL2029046A (en) 2022-05-24
FR3115616B1 (fr) 2024-04-19
WO2022066179A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US11681529B2 (en) Apparatuses, methods, and systems for access synchronization in a shared memory
US11094370B2 (en) Enhanced auto-precharge memory scheduling policy
EP3550437B1 (en) Adaptive spatial access prefetcher apparatus and method
KR20190082079A (ko) 원격 원자 연산들의 공간적 및 시간적 병합
TWI830927B (zh) 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體
US11809549B2 (en) Apparatus and method for power virus protection in a processor
US20200409844A1 (en) Asynchronous cache flush engine to manage platform coherent and memory side caches
EP4064048A1 (en) Memory bandwidth control in a core
JP2021051727A (ja) グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法
NL2029046B1 (en) Hardware and configuration support for allocating shared resources
US11055094B2 (en) Heterogeneous CPUID spoofing for remote processors
US11934830B2 (en) Method and apparatus for data-ready memory operations
EP4030292A1 (en) Autonomous and extensible resource control based on software priority hint
US12106106B2 (en) Memory bandwidth monitoring extensible counter
CN107168682B (zh) 用于确定值是否在范围内的指令的装置和方法
US20200401412A1 (en) Hardware support for dual-memory atomic operations
CN112306910A (zh) 用于拆分式数据转换后备缓冲器的硬件
US10175992B2 (en) Systems and methods for enhancing BIOS performance by alleviating code-size limitations
KR102321941B1 (ko) 스핀-루프 점프를 수행하기 위한 장치 및 방법
EP4394598A1 (en) Region-aware memory bandwidth allocation control