TWI564798B - 於多核心處理器中的先前存取資料之檢索技術 - Google Patents

於多核心處理器中的先前存取資料之檢索技術 Download PDF

Info

Publication number
TWI564798B
TWI564798B TW101149837A TW101149837A TWI564798B TW I564798 B TWI564798 B TW I564798B TW 101149837 A TW101149837 A TW 101149837A TW 101149837 A TW101149837 A TW 101149837A TW I564798 B TWI564798 B TW I564798B
Authority
TW
Taiwan
Prior art keywords
memory
processor
core
data
request
Prior art date
Application number
TW101149837A
Other languages
English (en)
Other versions
TW201333820A (zh
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 TW201333820A publication Critical patent/TW201333820A/zh
Application granted granted Critical
Publication of TWI564798B publication Critical patent/TWI564798B/zh

Links

Classifications

    • 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

於多核心處理器中的先前存取資料之檢索技術 發明領域
本發明係關於處理器之領域,且詳言之係關於最佳化快取管理技術。
發明背景
半導體處理及邏輯設計之進步已准許可存在於積體電路器件上之邏輯之數量增加。結果,電腦系統組態已自系統中之單一或多個積體電路發展至可在個別積體電路(例如,個別半導體晶片)上平行地執行多個硬體執行緒之多個核心。處理器或積體電路通常包含單一實體處理器晶粒,其中處理器晶粒可包括任何數目個各自可執行各別硬體執行緒之核心。積體電路上之數目不斷增加之處理元件(例如,核心)使得能夠平行地完成更多任務。然而,較多執行緒及任務之執行使得愈加重視共用資源(諸如記憶體)及其管理。
通常,快取記憶體包括在共用系統記憶體與處理器晶片之執行單元之間的較接近於執行單元之用以保存資訊之記憶體。另外,快取記憶體通常在大小上小於主系統 記憶體,此允許快取記憶體由昂貴、較快速之記憶體(諸如靜態隨機存取記憶體(SRAM))建構。接近於執行單元及速度這兩者允許快取記憶體提供對資料及指令的較快速存取。常常基於快取記憶體與處理器之執行單元之接近性來識別快取記憶體。舉例而言,一級(L1)快取可接近於駐留於同一實體處理器晶片(例如,同一半導體晶粒)上之執行單元。歸因於接近性及置放,一級快取記憶體常常為最小且最快之快取記憶體。處理器亦可擁有諸如二級(L2)快取記憶體之更高層級或更靠外的快取記憶體,該等快取記憶體亦可駐留於處理器晶片上,但置放於一級快取記憶體與電腦系統之主記憶體之間。且三級(L3)快取記憶體可置放於處理器晶片上或電腦系統中之別處,諸如位於控制器集線器處、在二級快取記憶體與電腦系統之主記憶體之間。
快取一致性係多核心處理器及多處理器系統中用以將共用記憶體抽取提供給程式設計師之有用機制。當多核心處理器或多處理器系統快取給定之共用記憶體位置時,由於相同記憶體位置之一個複本存在於多個快取記憶體中,故快取一致性問題可能發生。快取一致性協定保證給定之記憶體位置在所有核心或所有處理器中具有一致觀點(consistent view)。存在何為一致觀點之許多模型,例如,循序一致性及弱排序。在此等模型中之每一者中,一致性協定指定了各種核心可藉以獲取並更新記憶體位置之合法。
用於維持快取一致性(尤其在分散式系統(例 如,多核心處理器或多處理器系統)中)之一個習知技術為基於目錄之快取一致性方案。基於目錄之一致性方案利用集中式標籤目錄來記錄快取列之位置及狀態(因為快取列遍佈於系統中)。舉例而言,標籤目錄記錄哪些快取記憶體具有資料之複本,且進一步記錄該等快取記憶體中之任一者是否具有資料之經更新複本。當核心發出對資料項目之讀取請求時,查閱標籤目錄以判定資料之最新近複本駐存於何處。基於此資訊,將資料探查發送至存取過資料之最後核心(例如,最後存取者),且檢索快取列之最新近複本,使得該最新近複本被提供至進行請求之核心並儲存於進行請求之核心之快取列內。標籤目錄係與發出針對資訊之資料探查平行地立即進行更新以反映快取列之新狀態,抑或在發出資料探查之後進行更新。變化通常包括更新最後存取者欄位,使得若另一請求處理標籤目錄,則該另一請求前往新的最後請求者,即使第一探查仍尚未達成其目標亦然。然而,在提供發送至核心之探查將能夠找到所請求資料且得到服務之保證的快取一致性協定中,處置可在不通知協定系統中之任何記錄保持結構之情況下靜默地使資料之共用複本失效之核心將成問題。通常,進行請求之核心接收指示快取列不再可用且請求必須再一次重新開始之否定回應(例如,否定應答(NACK))。因此,此項技術中需要在快取一致性協定中提供資料服務命令,即使經探查核心已使快取列失效,該命令亦可找到資料且服務該探查而無需重新開始。
依據本發明之一實施例,係特地提出一種處理器,其包含:用以發送一記憶體請求之一請求者,該記憶體請求具有儲存所請求資料之一記憶體之一記憶體位址;用以接收該記憶體請求之一記錄保持結構;用以判定該記憶體位址之一最後存取者之電路;用以將一快取探查發送至該最後存取者之電路;用以判定該最後存取者不再具有列之一複本之電路;及用以發送對該列之先前存取版本之一請求之電路,該請求略過標籤目錄且自記憶體獲得該所請求資料。
100‧‧‧電腦系統
102、300、400‧‧‧處理器
104‧‧‧2級(L1)內部快取記憶體
108.1、108.2、402a、402b、402c、402d、301、302、612、502A-N、702a、702b‧‧‧核心
109.1、109.2‧‧‧1級(L1)快取記憶體
110‧‧‧處理器匯流排
112‧‧‧圖形控制器/圖形卡
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片/記憶體控制器(MCH)
118‧‧‧高頻寬記憶體路徑/記憶體介面
120、706‧‧‧記憶體
122‧‧‧系統I/O/專屬集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142.1-142.N、212、214、216、218、220、222、224‧‧‧執行單元
144.1-144.N‧‧‧解碼器
145.1-145.N‧‧‧暫存器檔案
159.1-159.N‧‧‧處理核心
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧國際個人電腦記憶卡協會(PCMCIA)/緊湊式快閃(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧替代匯流排主控介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用異步接收器/傳輸器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧藍芽無線UART
158‧‧‧I/O擴充介面
200‧‧‧處理器核心
201‧‧‧有序前端
202、204、206‧‧‧排程器
203‧‧‧無序執行引擎
208、210‧‧‧暫存器檔案
211‧‧‧執行區塊
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取記憶體
232‧‧‧微碼ROM
234‧‧‧微運算佇列
304a、304b、304c、304d‧‧‧暫存器
320a、320b‧‧‧分支目標緩衝器(BTB)及指令轉譯緩衝器(I-TLB)
325a、325b‧‧‧解碼模組
330a、330b‧‧‧重新命名/分配器邏輯
340a、340b‧‧‧排程器及執行單元區塊
335a、335b‧‧‧重新排序/引退單元
350a‧‧‧較低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)
350b‧‧‧較低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)
310‧‧‧較高層級或更外層快取記憶體
305、370‧‧‧控制器集線器
375‧‧‧系統記憶體
404a、404b、404c、404d‧‧‧核心代理/組件
406‧‧‧圖形集線器(GFX)
408‧‧‧記憶體控制器介面邏輯(MCIL)
410‧‧‧記憶體控制器
412a、412b、412c、412d‧‧‧快取代理
450‧‧‧環
500‧‧‧多核心處理器
504A-N‧‧‧快取記憶體
506‧‧‧共用快取記憶體單元
508‧‧‧整合圖形邏輯
510‧‧‧系統代理單元
512‧‧‧基於環狀結構之互連單元
514‧‧‧整合記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧處理系統
602、604、606、608‧‧‧處理單元
610‧‧‧非核心
614‧‧‧L1指令快取記憶體(L1I)
616‧‧‧L1資料快取記憶體(LID)
617‧‧‧未命中位址檔案(MAF)
618‧‧‧受害者緩衝器(VB)
622‧‧‧L2快取記憶體(L2)
620、630‧‧‧域
624、632、640‧‧‧標籤目錄(TD)
704‧‧‧記錄保存結構標籤目錄(TD)
800‧‧‧程序
802、804、806、808、810‧‧‧區塊
實施例係通過舉例來說明且在附圖之圖式中無限制:圖1A為根據一個實施例之系統之方塊圖;圖1B為根據一個實施例之處理器之方塊圖;圖2為根據一個實施例之處理器核心之方塊圖;圖3為根據一個實施例之多核心處理器之方塊圖;圖4為根據一個實施例之多核心處理器之方塊圖;圖5為根據一個實施例之多核心處理器之方塊圖;圖6為根據一個實施例之多核心處理器之複數個 核心的方塊圖;圖7說明根據一個實施例之用以執行快取列探查之元件;圖8說明根據一個實施例之待由多核心處理器執行之快取列探查之操作的流程圖。
詳細說明
以下描述描述用以執行處理器、電腦系統或其他處理裝置內或與處理器、電腦系統或其他處理裝置相關聯之一次性讀取先前(OTR先前)命令之指令及處理邏輯。在以下描述中,陳述諸如處理邏輯、處理器類型、微架構條件、事件、啟用機制及其類似者的眾多特定細節以便提供對本發明之實施例較透徹理解。然而,熟習此項技術者將瞭解,可在無此等特定細節之情況下實踐本發明。另外,未詳細展示一些熟知結構、電路及其類似者以避免不必要地使本發明之實施例晦澀不清。
本發明之一個實施例可提供多核心處理器。該多核心處理器可實施一快取探查及資料檢索方法。該方法可包含將來自一請求者之一記憶體請求發送至一記錄保持結構。該記憶體請求可具有儲存所請求資料之一記憶體之一記憶體位址。該方法可進一步包含判定該記憶體位址之一最後存取者、將一快取探查發送至該最後存取者、判定該最後存取者不再具有列之一複本及發送對該列之先前存取版本之一請求,該請求略過該等標籤目錄且自記憶體獲得 該所請求資料。
在一或多個實施例中,快取記憶體可儲存大量被稱作快取列或快取區塊之資料。術語快取列及快取區塊可互換地使用。在一個實施例中,快取列可由兩個主要部分:後設資料(或標籤)及資料組成。每一後設資料輸入項可識別相應資料輸入項之內容。後設資料可包括狀態資訊,狀態資訊可包括指示相應快取列中之資料是否有效之有效性位元。
快取列及其基礎部分或欄位(諸如資料欄位)可具有任何大小。在一個實施例中,快取列之大小在快取記憶體結構中可為一致的,且資料大小可固定為64位元組。當對小於64位元組之資料項目(例如,8位元組資料項目)之一請求快取未命中時,可分配64位元組之新列,且傳回64位元組之資料(包括所請求之8位元組資料)且將該資料填充至快取記憶體中。此係因為大部分程式具有空間局部性且該列之其他56個位元組很有機會被存取。然而,一些資料結構很少被存取,且不顯示空間局部性。在此等情況下,僅需要傳回該請求之8個位元組,因為其他56個位元組不會被存取且到處移動其會浪費能量。
雖然以下實施例係參考處理器加以描述,但其他實施例可適用於其他類型之積體電路及邏輯器件。本發明之實施例之類似技術及教示可適用於可受益於較高管線輸貫量及經改良效能的其他類型之電路或半導體器件。本發明之實施例之教示可適用於執行資料調處之任何處理器或 機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,且可適用於在其中執行資料之調處或管理之任何處理器及機器。另外,以下描述提供實例,且附圖展示各種實例以用於說明。然而,此等實例不應解釋為限制意義的,因為該等實例僅意欲提供本發明之實施例之實例而非提供本發明之實施例之所有可能實施之詳盡清單。
雖然以下實例在執行單元及邏輯電路之背景下描述指令處置及散佈,但本發明之其他實施例可借助於儲存於機器可讀有形媒體上之資料或指令來完成,資料或指令在由一機器執行時使該機器執行符合本發明之至少一實施例之功能。在一個實施例中,與本發明之實施例相關聯之功能係以機器可執行指令體現。該等指令可用以使經該等指令程式化之通用或專用處理器執行本發明之步驟。本發明之實施例可被提供作為可包括儲存有指令之機器或電腦可讀媒體之電腦程式產品或軟體,該等指令可用以程式化電腦(或其他電子器件)以執行根據本發明之實施例之一或多個操作。替代地,本發明之實施例之步驟可能藉由含有用於執行該等步驟之固定功能邏輯的特定硬體組件或藉由經程式化之電腦組件與固定功能硬體組件之任何組合來執行。
用以程式化邏輯以執行本發明之實施例的指令可儲存於系統中之記憶體(諸如,DRAM、快取記憶體、快閃記憶體或其他儲存器)內。此外,可經由網路或借助於其 他電腦可讀媒體來散佈該等指令。因此,機器可讀媒體可包括用於儲存或傳輸呈機器(例如,電腦)可讀形式之資訊之任何機構,但不限於軟磁碟、光碟、光碟唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或在網際網路上經由電、光學、聲學或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等)傳輸資訊中所使用的有形之機器可讀儲存器。因此,電腦可讀媒體包括適合儲存或傳輸呈機器(例如,電腦)可讀形式之電子指令或資訊的任何類型之有形機器可讀媒體。
設計可經過自創造(creation)至模擬至製造之各種階段。表示設計之資料可以許多方式來表示該設計。首先,如在模擬中有用的,可使用硬體描述語言或另一功能描述語言來表示硬體。另外,可在設計程序之某些階段產生具有邏輯及/或電晶體閘之電路層級模型。此外,大部分設計在某一階段達到表示各種器件在硬體模型中之實體置放的資料層級。在使用習知半導體製造技術之情況下,表示硬體模型之資料可為規定各種特徵在用以產生積體電路之遮罩之不同遮罩層上之存在或不存在的資料。在設計之任何表示中,資料可儲存於任何形式之機器可讀媒體中。記憶體或磁性或光學儲存器(諸如碟片)可為用以儲存經由光波或電波傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生以傳輸此資訊。當傳輸指示或攜載 碼或設計之電載波時,在執行電信號之複製、緩衝或重新傳輸之意義上,形成新的複本。因此,通信提供者或網路提供者可至少暫時地將體現本發明之實施例之技術的物品(article)(諸如編碼至載波中之資訊)儲存於有形之機器可讀媒體上。
在現代處理器中,使用許多不同執行單元來處理並執行多種碼及指令。指令並不是全部被平等地建立,因為某些指令能較快地完成,而其他指令之完成可耗費許多時脈循環。指令之輸貫量越快,處理器之總效能越好。因此,儘可能快地執行儘可能多的指令可為有利的。然而,存在具有較大複雜性且需要更多執行時間及處理器資源之某些指令。舉例而言,存在浮點指令、載入/儲存操作、資料移動等。
隨著愈來愈多的電腦系統被用於網際網路、文字及多媒體應用中,已隨時間過去引入額外處理器支援。在一個實施例中,指令集可與包括以下各者之一或多個電腦架構相關聯:資料類型,指令,暫存器架構,定址模式,記憶體架構,中斷及例外狀況處置,及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(ISA)可藉由一或多個微架構來實施,該一或多個微架構包括用以實施一或多個指令集之處理器邏輯及電路。因此,具有不同微架構之處理器可至少共用共同指令集之一部分。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器及來自 Advanced Micro Devices,Inc.(Sunnyvale CA)的處理器實施x86指令集之幾乎相同版本(在較新版本中已添加一些延伸),但具有不同內部設計。類似地,由其他處理器開發公司(諸如ARM Holdings,Ltd.、MIPS,或其被授權人或採用者)設計之處理器可至少共用共同指令集之一部分,但可包括不同處理器設計。舉例而言,ISA之相同暫存器架構可使用新技術或熟知之技術在不同微架構中以不同方式來實施,包括專用實體暫存器、使用暫存器重新命名機制(例如,使用暫存器別名表(RAT)、重新排序緩衝器(ROB)及引退暫存器檔案)的一或多個動態分配之實體暫存器。在一個實施例中,暫存器可包括可或不可由軟體程式設計師定址之一或多個暫存器、暫存器架構、暫存器檔案或其他暫存器集合。
在一個實施例中,指令可包括一或多個指令格式。在一個實施例中,指令格式可指示用以規定(尤其)待執行之運算及將被執行該運算之運算元的各種欄位(位元之數目、位元之位置等)。一些指令格式可進一步由指令範本(或子格式)分解定義。舉例而言,可將給定指令格式之多個指令範本定義為具有指令格式之欄位之不同子集及/或定義為具有以不同方式解譯之給定欄位。在一個實施例中,指令係使用指令格式來表示(且若經定義,則按該指令格式之指令範本中之一給定者表示)且規定或指示運算及運算所針對之運算元。
科學、金融、自動向量化一般用途、RMS(辨識、 採擷及合成)以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)可能需要對大量資料項目執行相同操作。在一個實施例中,單指令多資料(SIMD)指代使一處理器對多個資料元素執行操作的一類指令。SIMD技術可用於可在邏輯上將暫存器中之位元分成若干大小固定或大小可變之資料元素之處理器中,該等資料元素中之每一者表示一單獨值。舉例而言,在一個實施例中,64位元暫存器中之位元可經組織為含有四個單獨的16位元資料元素之源運算元,該等資料元素中之每一者表示一單獨之16位元值。此類型之資料可被稱為「封裝」資料類型或「向量」資料類型,且此資料類型之運算元被稱為封裝資料運算元或向量運算元。在一個實施例中,封裝資料項目或向量可為儲存於單一暫存器內之封裝資料元素之一序列,且封裝資料運算元或向量運算元可為SIMD指令(或「封裝資料指令」或「向量指令」)之源或目的地運算元。在一個實施例中,SIMD指令規定將要對兩個源向量運算元執行以產生具相同或不同大小、具有相同或不同數目個資料元素且具有相同或不同資料元素次序之目的地向量運算元(亦被稱為結果向量運算元)的單一向量運算。
SIMD技術(諸如,由以下各者使用之SIMD技術:具有包括x86、MMXTM、串流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集之Intel® CoreTM處理器;ARM處理器,諸如具有包括向量浮點(VFP)及/或NEON 指令之指令集之ARM Cortex®處理器系列;及MIPS處理器,諸如由中國科學院之計算技術研究所(ICT)開發之Loongson處理器系列)已實現應用程式效能之顯著改良(CoreTM及MMXTM為Intel Corporation(Santa Clara,Calif.)之註冊商標或商標)。
在一個實施例中,目的地及源暫存器/資料為用以表示相應資料或運算之源及目的地之一般術語。在一些實施例中,目的地及源暫存器/資料可藉由具有不同於所描繪之名稱或功能的名稱或功能之暫存器、記憶體或其他儲存區域來實施。舉例而言,在一個實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二源儲存暫存器或其他儲存區域等。在其他實施例中,SRC及DEST儲存區域中之兩者或兩者以上可對應於同一儲存區域(例如,SIMD暫存器)內之不同資料儲存元件。在一個實施例中,藉由(例如)將對第一及第二源資料執行之運算之結果寫回至該兩個源暫存器中之充當目的地暫存器之一者,源暫存器中之一者亦可充當目的地暫存器。
圖1A為由包括一或多個核心108(例如,核心108.1及108.2)之處理器102形成之例示性電腦系統100的方塊圖。每一核心108可執行根據本發明之一個實施例之指令。根據本發明,諸如在本文中所描述之實施例中,系統100包括一組件,諸如處理器102以使用包括邏輯之執行單元以執行用於處理資料之演算法。系統100代表基於可自Intel Corporation(Santa Clara,California)獲得的PENTIUM® Ⅲ、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器之處理系統,但亦可使用其他系統(包括具有其他微處理器之PC、工程工作站、機上盒及其類似者)。在一個實施例中,樣本系統100可執行可自Microsoft Corporation(Redmond,Washington)獲得的WINDOWSTM作業系統之一版本,但亦可使用其他作業系統(例如,UNIX及Linux)、嵌式軟體及/或圖形使用者介面。因此,本發明之實施例不限於硬體電路與軟體之任何特定組合。
實施例不限於電腦系統。本發明之替代實施例可用於諸如手持式器件之其他器件及嵌入式應用中。手持式器件之一些實例包括蜂巢式電話、網際網路協定器件、數位相機、個人數位助理(PDA)及手持式PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器,或可執行根據至少一實施例之一或多個指令之任何其他系統。
在單處理器桌上型或伺服器系統之背景下描述了系統100之一個實施例,但替代實施例可包括於多處理器系統中。系統100可為「集線器」系統架構之實例。電腦系統100包括用以處理資料信號之處理器102。處理器102可為複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令字(VLIW)微處理器、實施指令集之組合之處理器,或任何其他處理器器件,諸如數位信號處理器。處理器102經耦接至可在處理器102與系統100中之其他 組件之間傳輸資料信號之處理器匯流排110。系統100之元件執行該等元件之為熟習此項技術者所熟知的習知功能。
視架構而定,處理器102可具有單一內部快取記憶體或多個層級之內部快取記憶體。替代地,在另一實施例中,快取記憶體可駐留於處理器102外。其他實施例亦可視特定實施及需求而包括內部快取記憶體與外部快取記憶體之一組合。在一個實施例中,處理器102可包括2級(L2)內部快取記憶體104,且每一核心(例如,108.1及108.2)可包括1級(L1)快取記憶體(例如,分別為109.1及109.2)。在一個實施例中,處理器102可實施於一或多個半導體晶片中。當實施於一個晶片中時,處理器102之組件中之全部或一些組件可整合於一個半導體晶粒中。
核心108.1及108.2中之每一者亦可包括可將不同類型之資料儲存於包括整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器之各種暫存器中的各別暫存器檔案(未圖示)。每一核心108可進一步包括用以執行整數及浮點運算之邏輯。
處理器102亦包括儲存用於某些巨集指令之微碼之微碼(ucode)ROM。對於一個實施例,每一核心108可包括用以處置一封裝指令集(未圖示)之邏輯。藉由將封裝指令集包括於通用處理器102之指令集中以及用以執行該等指令之相關聯電路,可在通用處理器102中使用封裝資料來執行許多多媒體應用所使用之運算。因此,藉由將處理器之資料匯流排之全寬度用於對封裝資料執行運算,許多多媒 體應用可被加速且更有效率地執行。此可消除對跨越處理器之資料匯流排傳送較小資料單元以每次對一個資料元素執行一或多個運算之需要。
處理器102之替代實施例亦可用於微控制器、嵌式處理器、圖形器件、DSP及其他類型之邏輯電路中。系統100包括記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)器件、靜態隨機存取記憶體(SRAM)器件、快閃記憶體器件或其他記憶體器件。記憶體120可儲存由資料信號表示之可由處理器102執行之指令及/或資料。
系統邏輯晶片116耦接至處理器匯流排110及記憶體120。所說明實施例中之系統邏輯晶片116為記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110而與MCH 116通信。MCH 116將高頻寬記憶體路徑118提供給記憶體120以用於指令及資料儲存且用於圖形命令、資料及紋理之儲存。MCH 116用以在處理器102、記憶體120及系統100中之其他組件之間引導資料信號,且用以在處理器匯流排110、記憶體120及系統I/O 122之間橋接該等資料信號。在一些實施例中,系統邏輯晶片116可提供一圖形埠以用於耦接至圖形控制器112。MCH 116經由記憶體介面118耦接至記憶體120。圖形卡112係經由加速圖形埠(AGP)互連114耦接至MCH 116。
系統100使用專屬集線器介面匯流排122將MCH 116耦接至I/O控制器集線器(ICH)130。ICH 130經由區域I/O匯流排提供至一些I/O器件之直接連接。區域I/O匯流排 為用於將周邊設備連接至記憶體120、晶片組及處理器102之高速I/O匯流排。一些實例為音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、含有使用者輸入及鍵盤介面之舊版I/O控制器、諸如通用串列匯流排(USB)之串列擴充埠,及網路控制器134。資料儲存器件124可包含硬碟機、軟碟機、CD-ROM器件、快閃記憶體器件或其他大容量儲存器件。
對於系統之另一實施例,根據一個實施例之指令可與系統單晶片(system on a chip)一起使用。系統單晶片之一個實施例包含處理器及記憶體。用於此一系統之記憶體為快閃記憶體。快閃記憶體可與處理器及其他系統組件位於同一晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯區塊亦可位於系統單晶片上。
圖1B說明實施本發明之一個實施例之原理的資料處理系統140。熟習此項技術者將容易瞭解,在不脫離本發明之實施例之範疇的情況下,本文中所描述之實施例可與替代處理系統一起使用。在一個實施例中,資料處理系統140可為系統單晶片,且資料處理系統140之所有組件可整合於一個半導體晶片上。
電腦系統140包含多個處理核心159(例如,159.1至159.N,N可為大於一之整數),每一處理核心可能夠執行根據一個實施例之至少一指令。對於一個實施例,處理核心159可表示任何類型之架構(包括(但不限於)CISC、RISC或VLIW類型架構)的處理單元。處理核心159亦可適於以一 或多個製程技術製造,且藉由足夠詳細地表示在機器可讀媒體上,可適於促進該製造。
每一處理核心159可包含執行單元142(例如,分別為142.1至142.N)、暫存器檔案145(例如,分別為145.1至145.N)之一集合及解碼器144(例如,分別為144.1至144.N)。每一處理核心159亦可包含並非理解本發明之實施例所必需的額外電路(未圖示)。每一執行單元142可用於執行由各別處理核心159接收之指令。除了執行典型處理器指令之外,執行單元142可執行封裝指令集中之指令以用於對封裝資料格式執行運算。封裝指令集可包括用於執行本發明之實施例之指令及其他封裝指令。每一執行單元142可藉由各別核心159內部之一匯流排耦接至暫存器檔案145。每一暫存器檔案145可表示各別處理核心159上之用於儲存包括資料之資訊之儲存區域。如先前所提及,將理解,用於儲存封裝資料之儲存區域並非關鍵的。每一執行單元142可耦接至各別核心159之各別解碼器144。每一解碼器144可用於將由各別處理核心159接收之指令解碼為控制信號及/或微碼進入點。回應於此等控制信號及/或微碼進入點,每一執行單元142執行適當運算。在一個實施例中,解碼器可用以解譯指令之作業碼(opcode),該作業碼將指示應對指令內所指示之相應資料執行何種運算。
每一處理核心159可分別與匯流排141耦接以用於與各種其他系統器件通信,其他系統器件可包括(但不限於)(例如)同步動態隨機存取記憶體(SDRAM)控制146、靜 態隨機存取記憶體(SRAM)控制147、叢發快閃記憶體介面148、國際個人電腦記憶卡協會(PCMCIA)/緊湊式快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151及替代匯流排主控介面152。在一個實施例中,資料處理系統140亦可包含用於經由I/O匯流排153與各種I/O器件通信之I/O橋接器154。此等I/O器件可包括(但不限於)(例如)通用異步接收器/傳輸器(UART)155、通用串列匯流排(USB)156、藍芽無線UART 157及I/O擴充介面158。
資料處理系統140之一個實施例提供行動、網路及/或無線通信及能夠執行SIMD運算(包括文字串比較運算)之多個處理核心159。每一處理核心159可經程式化而具有各種音訊、視訊、成像及通信演算法,包括離散變換,諸如沃爾什-哈達馬德變換(Walsh-Hadamard transform)、快速傅立葉變換(FFT)、離散餘弦變換(DCT)及其各自之反變換;壓縮/解壓縮技術,諸如色空間變換、視訊編碼運動估計或視訊解碼運動補償;及調變/解調變(MODEM)功能,諸如脈碼調變(PCM)。
圖2為包括用以執行根據本發明之一個實施例之指令之邏輯電路之處理器核心200之微架構的方塊圖。在一些實施例中,可實施根據一個實施例之指令以對具有位元組、字、雙字、四倍字等之大小以及諸如單精度及雙精度整數及浮點資料類型之資料類型的資料元素進行運算。在一個實施例中,有序前端201為處理器核心200之部分,其 提取待執行之指令且預備該等指令以便稍後在處理器管線中使用。前端201可包括若干單元。在一個實施例中,指令預取器226自記憶體提取指令且將該等指令饋送至指令解碼器228,指令解碼器又解碼或解譯該等指令。舉例而言,在一個實施例中,解碼器將接收之指令解碼為機器可執行之一或多個運算,該一或多個運算被稱作「微指令」或「微運算(micro-operation)」(亦被稱作micro op或uop)。在其他實施例中,解碼器將指令剖析為作業碼及相應資料以及根據一個實施例由微架構使用以執行運算之控制欄位。在一個實施例中,追蹤快取記憶體230得到經解碼微運算且將該等經解碼微運算組譯為微運算佇列234中之程式排序之序列或追蹤(trace)以便於執行。當追蹤快取記憶體230遇到複雜指令時,微碼ROM 232提供完成運算所需之微運算。
一些指令被轉換成單一微運算,而其他指令需要若干微運算來完成整個運算。在一個實施例中,若需要四個以上之微運算來完成一指令,則解碼器228存取微碼ROM 232以執行該指令。對於一個實施例,可將指令解碼為少量微運算以便於在指令解碼器228處進行處理。在另一實施例中,若需要許多微運算才能完成運算,則可將指令儲存於微碼ROM 232內。追蹤快取記憶體230參考一進入點可程式化邏輯陣列(PLA)以判定用於讀取微碼序列之一正確微指令指標以完成來自微碼ROM 232之根據一個實施例之一或多個指令。在微碼ROM 232結束對指令之微運算定序之後,機器之前端201繼續自追蹤快取記憶體230提取微運算。
在無序執行引擎203處準備指令以用於執行。該無序執行邏輯具有許多緩衝器以在多個指令沿管線傳遞且經排程以便於執行時使該等指令之流平順並重新排序以將效能最佳化。分配器邏輯分配每一微運算之執行所需之機器緩衝器及資源。暫存器重新命名邏輯在暫存器檔案中之輸入項上重新命名邏輯暫存器。分配器亦為兩個微運算佇列中之一者中之每一微運算分配一輸入項(一個佇列用於記憶體操作且一個佇列用於非記憶體操作),該兩個微運算佇列在以下指令排程器前面:記憶體排程器、快排程器202、慢/一般浮點排程器204及簡單浮點排程器206。微運算排程器202、204、206基於以下各者來判定微運算何時準備好執行:排程器之相依輸入暫存器運算元源之準備狀態,及微運算完成其運算所需之執行資源之可用性。一個實施例之快排程器202可在主時脈循環之每一半上進行排程,而其他排程器在每個主處理器時脈循環僅可排程一次。該等排程器針對分配埠進行仲裁以對微運算排程以便執行。
暫存器檔案208、210位於排程器202、204、206與執行區塊211中之執行單元212、214、216、218、220、222、224之間。存在分別用於整數及浮點運算之單獨暫存器檔案208、210。一個實施例之每一暫存器檔案208、210亦包括一旁路網路,其可略過尚未寫入至暫存器檔案中的剛完成之結果或將該等結果轉遞至新的相依微運算。整數暫存器檔案208及浮點暫存器檔案210亦能夠彼此間傳達資 料。對於一個實施例,整數暫存器檔案208被分裂成兩個單獨暫存器檔案,一個暫存器檔案用於資料之低階的32個位元且第二暫存器檔案用於資料之高階的32個位元。一個實施例之浮點暫存器檔案210具有128位元寬之輸入項,因為浮點指令通常具有寬度為64位元至128位元之運算元。
執行區塊211含有執行單元212、214、216、218、220、222、224,實際上在該等執行單元中執行指令。此區段包括儲存執行微指令所需之整數及浮點資料運算元值之暫存器檔案208、210。一個實施例之處理器核心200包含許多執行單元:位址產生單元(AGU)212、AGU 214、快ALU 216、快ALU 218、慢ALU 220、浮點ALU 222、浮點移動單元224。對於一個實施例,浮點執行區塊222、224執行浮點、MMX、SIMD及SSE或其他運算。一個實施例之浮點ALU 222包括用以執行除法、平方根及餘數微運算之64位元/64位元浮點除法器。針對本發明之實施例,可用浮點硬體處置涉及浮點值之指令。在一個實施例中,ALU運算轉至高速ALU執行單元216、218。一個實施例之快ALU 216、218可執行具有半個時脈循環之有效潛時之快速運算。對於一個實施例,最複雜之整數運算轉至慢ALU 220,因為慢ALU 220包括用於長潛時類型運算之整數執行硬體,諸如乘法器、移位器、旗標邏輯及分支處理。記憶體載入/儲存操作係由AGU 212、214執行。對於一個實施例,在對64位元之資料運算元執行整數運算之背景下描述整數ALU 216、218、220。在替代實施例中,可實施ALU 216、218、 220以支援包括16、32、128、256等之多種資料位元。類似地,可實施浮點單元222、224以支援具有各種寬度之位元的一系列運算元。對於一個實施例,浮點單元222、224可結合SIMD及多媒體指令對128位元寬之封裝資料運算元進行運算。
在一個實施例中,微運算排程器202、204、206在父負載(parent load)已結束執行之前分派獨立運算。由於微運算係以推測方式在處理器核心200中排程並執行,故處理器核心200亦包括用以處置記憶體未命中之邏輯。若資料負載在資料快取中未命中,則管線中可存在正在進行中之為排程器留下暫時錯誤資料的相依運算。重播機制跟蹤並重新執行使用錯誤資料之指令。僅需要重播相依運算,且允許獨立運算完成。處理器之一個實施例之排程器及重播機制亦經設計以捕捉用於文字串比較運算之指令序列。
術語「暫存器」可指代被用作指令之部分以識別運算元的機載處理器儲存位置。換言之,暫存器可為可自處理器外部使用之暫存器(自程式設計師之觀點看)。然而,實施例之暫存器在意義上不應限於特定類型之電路。實情為,實施例之暫存器能夠儲存及提供資料,以及執行本文中所描述之功能。可使用任何數目個不同技術,諸如專用實體暫存器、使用暫存器重新命名的動態分配之實體暫存器、專用實體暫存器與動態分配之實體暫存器之組合等藉由處理器內之電路來實施本文中所描述之暫存器。在一個實施例中,整數暫存器儲存三十二位元之整數資料。一個 實施例之暫存器檔案亦含有用於封裝資料之八個多媒體SIMD暫存器。針對下文之論述,將暫存器理解為經設計以保存封裝資料之資料暫存器,諸如來自Intel Corporation(Santa Clara,California)之具備MMX技術之微處理器中的64位元寬之MMXTM暫存器(在一些例子中亦被稱為「mm」暫存器)。可以整數形式及浮點形式兩者獲得之此等MMX暫存器可對伴隨SIMD及SSE指令之封裝資料元素進行運算。類似地,與SSE2、SSE3、SSE4或進一步的技術(通常亦被稱為「SSEx」)有關之128位元寬之XMM暫存器亦可用以保存此等封裝資料運算元。在一個實施例中,在儲存封裝資料及整數資料時,暫存器無需區分該兩個資料類型。在一個實施例中,整數及浮點含於同一暫存器檔案或不同暫存器檔案中。此外,在一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
參看圖3,說明了包括多個核心之處理器之實施例。在一個實施例中,處理器300包括一或多個層級之快取記憶體。處理器300可為任何處理器,諸如微處理器、嵌式處理器、數位信號處理器(DSP)、網路處理器或用以執行程式碼之其他器件。如所說明,處理器300包括複數個處理元件。在一個實施例中,處理器300可實施於一或多個半導體晶片中。當實施於一個晶片中時,處理器300之組件中之全部或一些組件可整合於一個半導體晶粒中。
在一個實施例中,處理元件可指代執行緒單元、執行緒槽、處理單元、序文、邏輯處理器、硬體執行緒、 核心及/或能夠保存處理器或核心之狀態(諸如,執行狀態或架構狀態)之任何其他元件。換言之,在一個實施例中,處理元件指代能夠與程式碼(諸如,軟體執行緒、作業系統、應用程式或其他程式碼)獨立地相關聯之任何硬體。在一實施例中,實體處理器可指代積體電路,其可能包括任何數目個其他處理元件,諸如核心或硬體執行緒。
核心可指代位於積體電路上之能夠維持一獨立架構狀態之邏輯,其中每一獨立維持之架構狀態與至少一些專用執行資源相關聯。與核心相對比,在一實施例中,硬體執行緒可指代位於積體電路上之能夠維持一獨立架構狀態之任何邏輯,其中該等獨立維持之架構狀態共用對執行資源之存取權。在一些實施例中,當某些資源被共用且其他資源被專用於一架構狀態時,硬體執行緒與核心之命名之間的界線重疊。然而核心及硬體執行緒經常可被作業系統視為個別邏輯處理器,其中該作業系統能夠個別地排程每一邏輯處理器上之運算。
如圖3中所說明,實體處理器300包括兩個核心,核心301及302。在一實施例中,可將核心跳躍(core hopping)用以緩解處理器之一個部分上之熱狀況。然而,自核心301至核心302之跳躍可潛在地在核心302上產生與存在於核心301上之熱狀況相同的熱狀況,同時招致核心跳躍之成本。因此,在一個實施例中,處理器300包括可利用核心跳躍之任何數目個核心。此外,包括於處理器300中之功率管理硬體可能夠使個別單元及/或核心處於低功率狀態以節約電 力。此處,在一個實施例中,處理器300為此等個別單元及/或核心提供用以參與低功率狀態選擇之硬體。
雖然處理器300可包括不對稱核心(亦即,具有不同組態、功能單元及/或邏輯之核心),但說明對稱核心。結果,將不詳細地論述被說明為等同於核心301之核心302以避免重複論述。另外,核心301及核心302中之每一者可包括暫存器之兩個集合(例如,分別為304a及304b、304c及304d)。暫存器之每一集合可支援各別硬體執行緒。因此,諸如作業系統之軟體實體潛在地將處理器300視為四個單獨處理器,亦即能夠同時執行四個軟體執行緒之四個邏輯處理器或處理元件。
此處,第一執行緒可與架構狀態暫存器304a相關聯,第二執行緒可與架構狀態暫存器304b相關聯,第三執行緒可與架構狀態暫存器304c相關聯,且第四執行緒可與架構狀態暫存器304d相關聯。如所說明,在核心301中,個別架構狀態/序文可能能夠針對邏輯處理器分別儲存於架構狀態暫存器304a及304b中。
如圖3中所展示,每一核心301及302可具有各別重新命名/分配器(allocator)邏輯330a及330b。在一實施例中,每一重新命名/分配器邏輯330可具有指令指標之一集合及用於由核心支援之每一硬體執行緒之重新命名邏輯(例如,重新命名/分配器邏輯330a可具有指令指標之兩個集合及對應於暫存器304a及304b之重新命名邏輯)。
處理器300常常包括可完全共用、經由分割而共 用或由處理元件專用/專用於處理元件之其他資源。在圖3中,說明了具有處理器之說明性邏輯單元/資源的純例示性處理器之一實施例。請注意,處理器可包括或省略此等功能單元中之任一者,以及包括未描繪之任何其他已知功能單元、邏輯或韌體。如所說明,處理器300之每一核心包括分支目標緩衝器(BTB)及指令轉譯緩衝器(I-TLB)320(例如,分別針對核心301及核心302之320a及320b)。BTB可預測待執行/採取之分支且I-TLB可儲存用於指令之位址轉譯輸入項。
一些資源(諸如,重新排序/引退單元335a及335b中之重新排序緩衝器、I-LTB、載入/儲存緩衝器及佇列)可經由分割而由核心之兩個硬體執行緒共用。其他資源(諸如,通用內部暫存器、頁表基暫存器(page-table base register)、低階資料快取記憶體及資料TLB 150a及150b、排程器/執行單元140a及140b,以及重新排序/引退單元335a及335b之無序單元之多個部分)可潛在地由核心之兩個硬體執行緒(對應於兩個暫存器304a及304b或304c及304d)完全共用。
處理器300之每一核心進一步包括耦接至各別BTB及I-TLB 320之一提取單元以解碼所提取元素之各別解碼模組(例如,325a及325b)。在一個實施例中,處理器300可與定義/規定可在處理器300上執行之指令之指令集架構(ISA)相關聯。此處,由ISA辨識之機器碼指令常常包括被稱為作業碼的指令部分,該作業碼參考/規定待執行之指令 或運算。
在一個實例中,每一分配器及重新命名器區塊330包括用以保留資源之分配器,諸如用以儲存指令處理結果之暫存器檔案。然而,由兩個暫存器(例如,304a及304b)維持之執行緒可潛在地能夠進行無序執行,其中分配器及重新命名器區塊330亦保留其他資源,諸如用以跟蹤指令結果之重新排序緩衝器。此外,分配器及重新命名器區塊330亦可包括用以將程式/指令參考暫存器重新命名為處理器300內之其他暫存器的暫存器重新命名器。每一重新排序/引退單元(例如,335a及335b)包括多個組件(諸如上文所提及之重新排序緩衝器、載入緩衝器及儲存緩衝器),以支援無序地執行之指令之無序執行及稍後之有序引退。
在一個實施例中,每一排程器及執行單元區塊(例如,340a及340b)包括用以在執行單元上排程指令/運算之排程器單元。舉例而言,在執行單元之具有可用浮點執行單元之埠上排程浮點指令。亦包括與該等執行單元相關聯之暫存器檔案以儲存資訊指令處理結果。例示性執行單元包括浮點執行單元、整數執行單元、跳動執行單元、載入執行單元、儲存執行單元及其他已知執行單元。
較低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)350a及350b可耦接至各別核心中之各別排程器/執行單元340。資料快取記憶體可儲存最近所使用/經運算之元素(諸如資料運算元),該等元素被潛在地保持在記憶體一致性狀態中。D-TLB可儲存最近之虛擬/線性至實體位址轉 譯。作為一特定實例,處理器可包括頁表結構以將實體記憶體分解為複數個虛擬頁。
如所描繪,核心301及302共用對較高層級或更外層快取記憶體310之存取,其用以快取最近所提取之元素。請注意,較高層級或更外層指代自執行單元增加或更遠離執行單元之快取記憶體層級。在一個實施例中,較高層級快取記憶體310為最後層級之資料快取記憶體,即處理器300上之記憶體階層架構中之最後快取記憶體,諸如二級或三級資料快取記憶體。然而,更高層級的快取記憶體310不受此限制,因為其可與指令快取記憶體相關聯或包括指令快取記憶體。可改為在解碼器325之後耦接追蹤快取記憶體(一類型之指令快取記憶體)以儲存最近解碼之追蹤。
請注意,在所描繪之組態中,處理器300亦包括用以與在處理器300外之器件(諸如控制器集線器370及系統記憶體375)通信之匯流排介面模組305。控制器集線器370可為晶片組、北橋或其他積體電路之部分。記憶體375可專用於處理器300或被系統中之其他器件共用。記憶體375之類型之一般實例包括動態隨機存取記憶體(DRAM)、靜態RAM(SRAM)、非揮發性記憶體(NV記憶體)及其他已知儲存器件。
圖3說明具有不同模組、單元及/或邏輯之表示之例示性處理器之抽象邏輯視圖。然而,請注意,利用本文中所描述之方法及裝置之處理器不必包括所說明之單元。且,處理器可省略所展示之單元中之一些或全部。
為了說明不同組態之可能性,論述現轉至圖4,該圖描繪處理器400之一實施例,其包括具有用以互連多個核心之環狀組態的處理器上記憶體介面模組(非核心模組)。處理器400經說明為包括實體分散式快取記憶體、環狀互連以及核心、快取記憶體及記憶體控制器組件。然而,此描述係純粹說明性的,因為實施所描述方法及裝置之處理器可包括任何處理元件、快取記憶體之樣式或層級及/或記憶體、前端匯流排或用以與外部器件通信之其他介面。在一個實施例中,處理器400可實施於一或多個半導體晶片中。當實施於一個晶片中時,處理器400之組件中之全部或一些組件可整合於一個半導體晶粒中。
在一個實施例中,快取代理412a、412b、412c及412d各自管理實體分散式快取記憶體之片段(slice)。作為一實例,每一快取組件(諸如組件412a)管理用於並存核心402a(快取代理為了管理快取記憶體之分散式片段而相關聯之核心)之快取記憶體之片段。如所描繪,快取代理412a、412b、412c及412d被稱為快取片段介面邏輯(CSIL);該等快取代理亦可被稱為快取組件、代理或用於與快取記憶體或快取記憶體之片段介接之其他已知邏輯、單元或模組。請注意,快取記憶體可為任何層級之快取記憶體;然而,針對此例示性實施例,論述集中於每一核心402a、402b、402c及402d之最後層級之快取記憶體(LLC)。
和快取代理處置環狀互連450上之訊務且與快取記憶體片段介接一樣,核心代理/組件404a、404b、404c及 404d用以處置訊務且分別與核心402a、402b、402c及402d介接。如所描繪,核心代理404a、404b、404c及404d可被稱為處理器核心介面邏輯(PCIL);該等核心代理亦可被稱為核心組件、代理或用於與處理元件介接之其他已知邏輯、單元或模組。另外,環450經展示為包括記憶體控制器介面邏輯(MCIL)408及圖形集線器(GFX)406以與其他模組(諸如記憶體控制器(IMC)410及圖形處理器(未說明))介接。然而,環450可包括或省略前述模組中之任一者,以及包括未說明之其他已知處理器模組。另外,可經由其他已知互連(諸如點對點互連或多點互連)來連接類似模組。
重要的是,請注意,本文中所描述之方法及裝置可在任何快取層級或在任何處理器或處理器層級於任何快取記憶體中實施。此外,快取記憶體可以任何方式組織,諸如為實體上或邏輯上之集中式或分散式快取記憶體。作為一特定實例,快取記憶體可包括具有類似集中式標籤目錄之實體集中式快取記憶體。舉例而言,圖3之較高層級快取記憶體310可包括標籤目錄。替代地,標籤目錄可實體上及/或邏輯上分散於實體分散式快取記憶體中,諸如圖4中所說明之快取記憶體組織。
圖5為根據本發明之實施例的具有整合記憶體控制器及圖形之多核心處理器500之方塊圖。圖5說明具有以下各者之處理器500:多個核心502A-N(N為大於一之整數)、系統代理510、一或多個匯流排控制器單元516之一集合、系統代理單元510中之一或多個整合記憶體控制器單元 514之一集合及整合圖形邏輯508。
記憶體階層架構包括分別位於核心內的一或多個層級之快取記憶體504A-N、一或多個共用快取記憶體單元506之一集合及耦接至整合記憶體控制器單元514之集合的外部記憶體(未圖示)。共用快取記憶體單元506之集合可包括一或多個中間層級快取記憶體(諸如2級(L2)、3級(L3)、4級(L4)或其他層級之快取記憶體)、最後層級快取記憶體(LLC)及/或其組合。雖然在一個實施例中,基於環之互連單元512互連整合圖形邏輯508、共用快取記憶體單元506之集合及系統代理單元510,但替代實施例可使用任何數目個熟知技術來互連此等單元。
在一些實施例中,核心502A-N中之一或多者能夠進行多執行緒處理。系統代理510包括協調並操作核心502A-N之彼等組件。系統代理單元510可包括(例如)一功率控制單元(PCU)及一顯示單元。PCU可為或包括調節核心502A-N及整合圖形邏輯508之功率狀態所需之邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
從架構及/或指令集方面看,核心502A-N可為同質或異質的。舉例而言,核心502A-N中之一些可為有序的,而其他核心係無序的。作為另一實例,核心502A-N中之兩者或兩者以上可能夠執行相同指令集,而其他核心可能僅能夠執行該指令集之一子集或一不同指令集。
處理器500可為通用處理器,諸如CoreTM i3、i5、i7、2 Duo and Quad、XeonTM、ItaniumTM、XScaleTM或 StrongARMTM處理器,該等處理器可自Intel Corporation(Santa Clara,Calif)獲得。替代地,處理器可來自另一公司,諸如ARM Holdings,Ltd、MIPS等。處理器可為專用處理器,諸如(例如)網路或通信處理器、壓縮引擎、圖形處理器、共處理器、嵌式處理器或其類似者。處理器500可實施於一或多個晶片上。處理器500可為使用諸如(例如)BiCMOS、CMOS或NMOS之許多製程技術中之任一者的一或多個基板之部分及/或可實施於該一或多個基板上。
在一實施例中,處理器(諸如,圖3、圖4及圖5中所說明之處理器或任何其他處理器)包括一或多個快取記憶體。圖6說明具有多個處理單元(602、604、606及608)之處理系統600之一實施例。在一個實施例中,處理系統600可實施於一或多個半導體晶片中。當實施於一個晶片中時,處理系統600可為多核心處理器,且處理系統600之組件中之全部或大部分可整合於一個半導體晶粒中。
每一處理單元(602、604、606或608)可包括核心612及非核心610(雖然僅處理單元602之組件被標記有參考數字,但對於處理器604、606及608而言此等組件係相同的且未針對彼等三個處理單元加以重複)。在一實施例中,602、604、606及608可為係單一處理器之部分之核心/非核心。在另一實施例中,602、604、606及608可為單一晶片(例如,積體電路晶粒)上之多個處理器。核心612可包括處理單元之在指令執行中所涉及之組件。非核心610可包括處理單元之不在核心612中,但對核心效能而言必需之功能。核 心612可包括諸如L1指令快取記憶體(L1I)614及L1資料快取記憶體(L1D)616之組件。非核心610可包括諸如未命中位址檔案(MAF)617、受害者緩衝器(VB)618及L2快取記憶體(L2)622之組件。
MAF結構617可用以保持對階層架構之其餘部分的未解決之所有請求(受害者除外)之記錄。當一請求(諸如一讀取請求(Rd))未命中L2快取記憶體時,則可分配MAF輸入項以跟蹤該Rd請求之進程,直至該請求完成為止。MAF提供之一額外功能可為確保對同一位址之兩個請求(例如,來自同一請求者)不被發佈至階層架構中,因為可檢查(搜尋或掃描(cammed))MAF以查看是否已存在針對該位址之輸入項,且不允許產生具有與先前輸入項相同位址之第二輸入項。MAF亦可為處置在幾乎同時存取同一列之兩個請求(例如,來自兩個不同請求者)之間的互動之處理的關鍵部件。當在指示原始請求者在繼續進行進一步動作之前需要等待之物之訊息(例如,次序標記(om))之後探查到達MAF時,該等探查可儲存於MAF中且在對MAF之相應請求被完成時予以處理。在次序標記之後到達的失效及回向失效(Inval及Back-Inval)動作亦可儲存於MAF中。
VB(受害者緩衝器)結構618可用以處置自L2之收回物且確保該等收回物正確地與協定之其餘部分互動。未使用列及已使用(經修改)列兩者可在其被從L2收回時置放於VB中。根據協定之受害者程序可為允許L2在列處於VB中時命中該列且將該列傳回至L2中之三次跳躍方法。在 一實施例中,靜默收回不產生受害者緩衝器輸入項,但可僅使資料失效。
一或多個處理單元、一或多個核心或一或多個非核心及其快取記憶體可與一域(domain)相關聯。在圖6中所說明之一實施例中,處理單元602及604及其核心、非核心及快取記憶體可與域620相關聯。標籤目錄(TD)624可在域620中跟蹤快取記憶體中之資料。類似地,處理單元606及608及其核心、非核心及快取記憶體可與域630相關聯。TD 632可在域630中跟蹤快取記憶體中之資料。TD 640可在多個域620及630中跟蹤快取記憶體中之資料。換言之,TD結構可為一階層架構,其中TD 624及TD 632在該階層架構之一個層級上且TD 640在下一層級上。雖然在圖6中僅說明了TD階層架構中之兩個層級,但其他實施例可包括TD階層架構中之任何數目個層級。
若針對一快取列之一請求未命中L1D快取記憶體616,則該請求可檢查L2快取記憶體622中之相同快取列。若該快取列不在L2快取記憶體622中,則該請求可繼續檢查TD 624以查明該快取列是否位於同一域620中的由相鄰核心控制之快取記憶體(亦即,604中之快取記憶體)中之一者中。即使在同一域620中之相鄰快取記憶體中發現該快取列之一複本,在其他域(例如,域630)中亦可能存在該快取列之其他複本,自快取一致性角度看,必須考慮到此因素。因此,該請求可能需要繼續至TD 640,且檢查任何其他域是否亦具有該快取列之一複本。在如圖6所示之階層架 構標籤目錄結構的情況下,藉由僅存取本地域(例如,624)而不存取其他域(例如,632及640)來解決對快取列之請求可為有利的(關於減少能量及潛時)。
在一實施例中,請求資料之處理器600之一核心可探查該等TD以判定所請求資料是否已由同一域或另一域中之另一核心存取。最後存取請求資料之核心可被稱為最後存取者,且請求該資料之核心可被稱為原始請求者。若最後存取者及原始請求者在同一域中,則僅需要探查及更新本地TD。若最後存取者及原始請求者在不同域中,則用於最後存取者及原始請求者之本地TD及下一層級之TD可能都需要被探查並更新。
根據本發明之一實施例之處理器可使用MOESI快取一致性協定。MOESI可代表經修改、自有、排他性、共用及失效狀態。快取列之經修改狀態(例如,M狀態)可意謂該快取列保存資料之最新近正確複本。主記憶體中之複本係陳舊的(錯誤的),且無其他處理器或核心保存複本。所快取之資料可被任意地修改。可藉由將修改寫回至主記憶體來將快取列變至排他性狀態。經修改之快取列必須以資料回應於窺探請求。
處於自有狀態(例如,O狀態)下之快取列可保存資料之最新近正確複本。自有狀態類似於共用狀態,因為其他處理器或核心可保存最新近正確資料之複本。主記憶體中之複本可為陳舊的(錯誤的)。僅一個處理器或核心可將資料保存在自有狀態下,所有其他處理器或核心必須將資 料保存在共用狀態下。可在使所有共用複本失效之後將快取列變至經修改狀態,或藉由將修改寫回至主記憶體來變至共用狀態。自有快取列必須以資料回應於窺探請求。
處於排他性狀態(例如,E狀態)下之快取列可保存資料之最新近正確複本。主記憶體中之複本亦為資料之最新近正確複本。無其他處理器或核心保存資料之複本。快取列可在任何時間變至經修改狀態以便修改資料。亦可在任何時間捨棄快取列(變至失效狀態)。排他性快取列可以資料回應於窺探請求。
快取列之共用狀態(例如,S狀態)可意謂該快取列保存資料之最新近正確複本。系統中之其他處理器或核心亦可將資料之複本保存在共用狀態下。共用快取列相對於記憶體而言可為已使用的(若該快取列之一複本以自有狀態存在)或共用快取列可為未使用的(若無快取列之複本以自有狀態存在)。快取列不可被寫入,但可在使所有共用複本失效之後變至排他性狀態。亦可在任何時間捨棄快取列(變至失效狀態)。處於失效狀態(例如,I狀態)下之快取列不保存資料之有效複本。資料之有效複本可能在主記憶體抑或另一處理器或核心快取記憶體中。
在一實施例中,有可能,一例示性處理器可進入某一類省電模式中且可能關閉一半的快取記憶體,藉此使資料之所有S狀態複本失效。若一核心發送針對列之先前存取版本之一請求,則最後存取者核心可略過標籤目錄且自記憶體獲得所請求資料。亦即,針對列之先前存取版本之 此請求不調查該等標籤目錄以查明資料之最新版本在何處,該請求亦不更新該等標籤目錄,因為該請求涉及列之先前存取版本。另外,該例示性處理器可實施一快取一致性協定,其可保證無論何時探查被發送至S狀態列,記憶體都為最新的。
根據本發明之一例示性多核心處理器可具有可執行未使用資料之「靜默失效」之核心(靜默地收回未使用列抑或由於進入省電模式,任一方式都不通知包括記錄保持結構(例如,不同層級處之各種TD)之任何結構)。因為記錄保持結構未經更新,所以協定可將探查發送至最後存取者。若最後存取者為使列「靜默地失效」之核心,則該列必須共用,且更重要地,主記憶體中之資料必須為最新的。在一實施例中,可提供OTR先前(一次性讀取先前)命令。可在探查到達最後存取者核心且所請求資料未被找到時,自最後存取者核心將OTR先前發送至主記憶體。OTR先前命令可自主記憶體獲得資料且將該資料傳回至原始請求者(不向記錄保持結構通知:含有所請求資料之快取列已失效且自主記憶體檢索了所請求資料)。圖7為最終結束於完成運算之OTR先前的讀取請求之說明。
如圖7中所展示,核心702a可將針對一段所請求資料之一記憶體請求(例如,由箭頭(1)指示)發送至一記錄保持結構(例如,TD 704)。記憶體請求可使用一記憶體位址(ADDR)來識別所請求之資料。記錄保持結構TD 704可根據其記錄來判定ADDR之最後存取者為核心702(b)且可將 一記憶體探查(例如,由箭頭(2)指示)發送至最後存取者核心702(b)以獲得該段所請求資料。僅可在該段所請求資料處於S狀態下之情況下使該段所請求資料靜默地失效。若最後存取者處於S狀態下,則記憶體706必須為最新的。最後存取者可將一OTR先前命令(例如,由箭頭(3)指示)發出至記憶體706。該OTR先前命令將找到匹配對該列之先前存取之列之值且傳回含有該值之一填充(例如,由箭頭(4)指示)。在一實施例中,可靜默地使O狀態失效。此外,在一實施例中,該OTR先前命令略過所有記錄保持結構(例如,TD 704)。
圖8說明根據一個實施例之程序800的待執行之操作之流程圖。程序800可自區塊802開始,在該區塊,可於一記錄保持結構處接收一記憶體請求。如上所述,例如,在多核心處理器中,一核心可為對一段所請求資料之一原始請求者。該原始請求者可將一記憶體請求發送至一記錄保持結構,諸如標籤目錄。在區塊804,可判定由該記憶體請求識別之一記憶體位址之一最後存取者。舉例而言,該記錄保持結構可檢查其記錄以判定該記憶體位址是否已被另一處理器或核心存取,且因此,該資料之一複本可快取於該最後存取者之一快取列中。在區塊806,可將一快取探查發送至該最後存取者。接著,在區塊808,可發送用以自該記憶體位址檢索該所請求資料之失效最新值之一命令。舉例而言,如上所述,若保存該所請求資料之最新值之快取列處於S狀態中,則該最後存取者可靜默地使該快取列失效。該命令可為一OTR先前命令,其可在不對記錄保持結 構進行任何通知之情況下自記憶體獲得資料。在區塊810,可用自記憶體檢索的所請求資料之最新值來填充一原始請求者之一快取列。在一個實施例中,可(例如,由該原始請求者)更新該記錄保持結構,以使得從現在起最後存取者可為原始請求者。
本文中所揭示之機制之實施例可以硬體、軟體、韌體或此等實施方法之組合來實施。本發明之實施例可實施為在包含至少一處理器、一儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入器件及至少一輸出器件之可程式化系統上執行之電腦程式或程式碼。
程式碼可應用於輸入指令以執行本文中所描述之功能且產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出器件。為了本申請案之目的,處理系統包括具有諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器之處理器的任何系統。
程式碼可以高階程序性或物件導向式程式設計語言來實施以與處理系統通信。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文中所描述之機制在範疇上不限於任何特定程式設計語言。在任何情況下,語言可為編譯或解譯語言。
可藉由儲存於表示處理器內之各種邏輯之一機器可讀媒體上之代表性指令來實施至少一實施例之一或多個態樣,該等指令在由一機器讀取時使該機器製作用以執行本文中所描述之技術之邏輯。被稱為「IP核心」之此等 表示可儲存於一有形之機器可讀媒體上且供應給各種客戶或製造設施以載入至實際製成邏輯或處理器之製作機器中。
此等機器可讀儲存媒體可包括(但不限於)由機器或器件製造或形成之物品之非暫時性有形配置,包括儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、可重寫式光碟(CD-RW)及磁光碟)、半導體器件(諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM))、磁性卡片或光學卡片,或適合儲存電子指令之任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有定義本文中所描述之結構、電路、裝置、處理器及/或系統特徵的設計資料(諸如硬體描述語言(HDL))之非暫時性有形機器可讀媒體。此等實施例亦可被稱為程式產品。
因此,揭示根據至少一實施例之用於執行一或多個指令之技術。雖然已描述且在附圖中展示了特定例示性實施例,但將理解,此等實施例僅為說明性的且並非對範疇廣泛的本發明之限制,且本發明不限於所展示並描述之特定構造及配置,因為各種其他修改可由一般熟習此項技術者在研究本發明後想到。在諸如成長迅速且其他進步不容易預見之此技術的技術領域中,在不脫離本發明之原 理或附加申請專利範圍之範疇的情況下,所揭示實施例可易於在配置及細節上進行由於實現技術進步所促進的修改。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧2級(L1)內部快取記憶體
108.1、108.2‧‧‧核心
109.1、109.2‧‧‧1級(L1)快取記憶體
110‧‧‧處理器匯流排
112‧‧‧圖形控制器/圖形卡
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片/記憶體控制器
118‧‧‧高頻寬記憶體路徑/記憶體介面
120‧‧‧記憶體
122‧‧‧系統I/O/專屬集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器

Claims (20)

  1. 一種處理器,其包含:用以發送一記憶體請求之一請求者,該記憶體請求具有儲存所請求資料之一記憶體之一記憶體位址;用以接收該記憶體請求之一記錄保持結構;用以判定該記憶體位址之一最後存取者之電路;用以將一快取探查發送至該最後存取者之電路;用以判定該最後存取者不再具有列之一複本之電路;及用以發送針對該列之先前存取版本之一請求之電路,該請求略過標籤目錄且自記憶體獲得該所請求資料。
  2. 如申請專利範圍第1項之處理器,其中該處理器為一多核心處理器,且該記錄保持結構不知曉該所請求資料之最新值係從該記憶體所檢索。
  3. 如申請專利範圍第2項之處理器,其中該請求者為該多核心處理器的一核心且該最後存取者為該多核心處理器之另一核心。
  4. 如申請專利範圍第3項之處理器,其中該請求者及該最後存取者屬於該多核心處理器之同一處理單元域。
  5. 如申請專利範圍第3項之處理器,其中該請求者及該最後存取者屬於該多核心處理器之不同處理單元域。
  6. 如申請專利範圍第1項之處理器,其中該記錄保持結構為一標籤目錄。
  7. 如申請專利範圍第1項之處理器,其中該記錄保 持結構為標籤目錄之一階層架構。
  8. 一種方法,其包含:將來自一請求者之一記憶體請求發送至一記錄保持結構,該記憶體請求具有儲存所請求資料之一記憶體之一記憶體位址;藉由該記錄保持結構判定該記憶體位址之一最後存取者;藉由該記錄保持結構將一快取探查發送至該最後存取者;判定該最後存取者不再具有列之一複本;及發送針對該列之先前存取版本之一請求,該請求略過標籤目錄且自記憶體獲得該所請求資料。
  9. 如申請專利範圍第8項之方法,其中該請求者為一多核心處理器的一核心且該最後存取者為該多核心處理器之另一核心,且該記錄保持結構不知曉該所請求資料之最新值係從該記憶體所檢索。
  10. 如申請專利範圍第9項之方法,其中該請求者及該最後存取者屬於該多核心處理器之同一處理單元域。
  11. 如申請專利範圍第9項之方法,其中該請求者及該最後存取者屬於該多核心處理器之不同處理單元域。
  12. 如申請專利範圍第8項之方法,其中該記錄保持結構為一多核心處理器之一標籤目錄。
  13. 如申請專利範圍第8項之方法,其中該記錄保持結構為一多核心處理器之標籤目錄之一階層架構。
  14. 一種系統,其包含:一記憶體;耦接至該記憶體之一處理器,其用於執行儲存於其中之電腦指令,該處理器包括:用以發送一記憶體請求之一請求者,該記憶體請求具有儲存所請求資料之一記憶體之一記憶體位址;用以接收該記憶體請求之一記錄保持結構;用以判定該記憶體位址之一最後存取者之電路;用以將一快取探查發送至該最後存取者之電路;用以判定該最後存取者不再具有列之一複本之電路;及用以發送針對該列之先前存取版本之一請求之電路,該請求略過標籤目錄且自記憶體獲得該所請求資料。
  15. 如申請專利範圍第14項之系統,其中該處理器為一多核心處理器,且該記錄保持結構不知曉該所請求資料之最新值係從該記憶體所檢索。
  16. 如申請專利範圍第15項之系統,其中該請求者為該多核心處理器的一核心且該最後存取者為該多核心處理器之另一核心。
  17. 如申請專利範圍第16項之系統,其中該請求者及該最後存取者屬於該多核心處理器之同一處理單元域。
  18. 如申請專利範圍第16項之系統,其中該請求者及該最後存取者屬於該多核心處理器之不同處理單元域。
  19. 如申請專利範圍第14項之系統,其中該記錄保 持結構為一多核心處理器之一標籤目錄。
  20. 如申請專利範圍第14項之系統,其中該記錄保持結構為一多核心處理器之標籤目錄之一階層架構。
TW101149837A 2011-12-28 2012-12-25 於多核心處理器中的先前存取資料之檢索技術 TWI564798B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067639 WO2013100988A1 (en) 2011-12-28 2011-12-28 Retrieval of previously accessed data in a multi-core processor

Publications (2)

Publication Number Publication Date
TW201333820A TW201333820A (zh) 2013-08-16
TWI564798B true TWI564798B (zh) 2017-01-01

Family

ID=48698230

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101149837A TWI564798B (zh) 2011-12-28 2012-12-25 於多核心處理器中的先前存取資料之檢索技術

Country Status (3)

Country Link
US (1) US9146871B2 (zh)
TW (1) TWI564798B (zh)
WO (1) WO2013100988A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407989B (zh) * 2014-11-25 2019-02-12 上海兆芯集成电路有限公司 具有统一标签和片化数据的高速缓冲存储器
US10176012B2 (en) 2014-12-12 2019-01-08 Nxp Usa, Inc. Method and apparatus for implementing deterministic response frame transmission
US10505757B2 (en) 2014-12-12 2019-12-10 Nxp Usa, Inc. Network interface module and a method of changing network configuration parameters within a network device
US9612881B2 (en) 2015-03-30 2017-04-04 Nxp Usa, Inc. Method, apparatus, and system for unambiguous parameter sampling in a heterogeneous multi-core or multi-threaded processor environment
US10628352B2 (en) 2016-07-19 2020-04-21 Nxp Usa, Inc. Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device
US10866897B2 (en) * 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US11150902B2 (en) 2019-02-11 2021-10-19 International Business Machines Corporation Processor pipeline management during cache misses using next-best ticket identifier for sleep and wakeup

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059876A1 (en) * 2002-09-25 2004-03-25 Ashwini Nanda Real time emulation of coherence directories using global sparse directories
TW200817894A (en) * 2006-06-30 2008-04-16 Intel Corp Global overflow method for virtualized transactional memory
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6950909B2 (en) * 2003-04-28 2005-09-27 International Business Machines Corporation System and method for reducing contention in a multi-sectored cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059876A1 (en) * 2002-09-25 2004-03-25 Ashwini Nanda Real time emulation of coherence directories using global sparse directories
TW200817894A (en) * 2006-06-30 2008-04-16 Intel Corp Global overflow method for virtualized transactional memory
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory

Also Published As

Publication number Publication date
US20140215162A1 (en) 2014-07-31
WO2013100988A1 (en) 2013-07-04
US9146871B2 (en) 2015-09-29
TW201333820A (zh) 2013-08-16

Similar Documents

Publication Publication Date Title
TWI574156B (zh) 具有獨立的使用者和監管者域的記憶體保護鑰結構
TWI564798B (zh) 於多核心處理器中的先前存取資料之檢索技術
US20180011790A1 (en) Using data pattern to mark cache lines as invalid
US10102124B2 (en) High bandwidth full-block write commands
JP6351722B2 (ja) クラスタ化されたワイド実行機械におけるメモリアクセス用の命令およびロジック
US10169245B2 (en) Latency by persisting data relationships in relation to corresponding data in persistent memory
US10540178B2 (en) Eliminating redundant stores using a protection designator and a clear designator
US9971599B2 (en) Instruction and logic for support of code modification
US9740623B2 (en) Object liveness tracking for use in processing device cache
US9201792B2 (en) Short circuit of probes in a chain
US9542336B2 (en) Isochronous agent data pinning in a multi-level memory system
US20170357599A1 (en) Enhancing Cache Performance by Utilizing Scrubbed State Indicators Associated With Cache Entries
US20170177483A1 (en) Minimizing snoop traffic locally and across cores on a chip multi-core fabric
US9582432B2 (en) Instruction and logic for support of code modification in translation lookaside buffers
EP3736700B1 (en) Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
US10956325B2 (en) Instruction and logic for flushing memory ranges in a distributed shared memory system
US20180137053A1 (en) Sequential data writes to increase invalid to modified protocol occurrences in a computing system

Legal Events

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