TW201617889A - 同調及非同調子系統的記憶體定序技術 - Google Patents

同調及非同調子系統的記憶體定序技術 Download PDF

Info

Publication number
TW201617889A
TW201617889A TW104118321A TW104118321A TW201617889A TW 201617889 A TW201617889 A TW 201617889A TW 104118321 A TW104118321 A TW 104118321A TW 104118321 A TW104118321 A TW 104118321A TW 201617889 A TW201617889 A TW 201617889A
Authority
TW
Taiwan
Prior art keywords
memory
operations associated
functional units
operations
ordering
Prior art date
Application number
TW104118321A
Other languages
English (en)
Other versions
TWI567555B (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 TW201617889A publication Critical patent/TW201617889A/zh
Application granted granted Critical
Publication of TWI567555B publication Critical patent/TWI567555B/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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

可接收與記憶體相關聯之操作及與一或多個功能單元相關聯之操作。可判定在與該記憶體相關聯之操作及與該一或多個功能單元相關聯之操作之間的相依性。可針對與該記憶體相關聯之操作來產生第一排序。再者,基於所判定的相依性及與該記憶體相關聯之操作之第一操作而針對與該等功能單元之其中一或多個功能單元相關聯之操作來產生第二排序。

Description

同調及非同調子系統的記憶體定序技術
在本文中所述之實施例大體上係關於記憶體定序,且更特定而言係關於具有同調及非同調子系統的記憶體定序。
一處理裝置可以係基於包含記憶體及功能單元之一架構。處理裝置之處理器核心可指派處理任務或功能至功能單元。例如,處理核心可儲存資料於記憶體中且可進一步對功能單元發佈命令以對已儲存在記憶體中之後的資料執行操作。
100‧‧‧運算系統
102‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
107‧‧‧記憶體串流模組
108‧‧‧執行單元
110‧‧‧處理器匯流排
120‧‧‧記憶體
130‧‧‧NOCO功能單元
200‧‧‧記憶體串流模組
210‧‧‧同調子模組
220‧‧‧非同調子模組
230‧‧‧同調串流識別符子模組
240‧‧‧非同調串流識別符子模組
250‧‧‧相依性子模組
260‧‧‧促進子模組
300‧‧‧方法
310‧‧‧方塊
320‧‧‧方塊
330‧‧‧方塊
340‧‧‧方塊
400‧‧‧順序
410‧‧‧第一串流
411‧‧‧記憶體操作
412‧‧‧記憶體操作
413‧‧‧記憶體操作
414‧‧‧記憶體操作
415‧‧‧記憶體操作
420‧‧‧第二串流
421‧‧‧NOCO觸發器
422‧‧‧NOCO觸發器
423‧‧‧相依性
424‧‧‧相依性
430‧‧‧順序
440‧‧‧第一串流
441‧‧‧記憶體操作
442‧‧‧記憶體操作
443‧‧‧記憶體操作
444‧‧‧記憶體操作
445‧‧‧記憶體操作
450‧‧‧第二串流
451‧‧‧NOCO觸發器操作
452‧‧‧NOCO觸發器操作
453‧‧‧相依性
454‧‧‧相依性
460‧‧‧順序
470‧‧‧第一串流
471‧‧‧記憶體操作
472‧‧‧記憶體操作
473‧‧‧記憶體操作
474‧‧‧記憶體操作
475‧‧‧記憶體操作
480‧‧‧第二串流
481‧‧‧NOCO觸發器
482‧‧‧NOCO觸發器
483‧‧‧相依性
484‧‧‧相依性
500‧‧‧方法
510‧‧‧方塊
520‧‧‧方塊
530‧‧‧方塊
540‧‧‧方塊
550‧‧‧方塊
600‧‧‧架構
610‧‧‧非同調記憶體指定暫存器(NOCO MSR)
611‧‧‧資料欄位
612‧‧‧資料欄位
613‧‧‧資料欄位
614‧‧‧資料欄位
630‧‧‧比較器
631‧‧‧輸入信號
632‧‧‧賦能信號
640‧‧‧邏輯閘
650‧‧‧轉換後備緩衝器
700‧‧‧處理器
701‧‧‧前端
702‧‧‧快速排程器
703‧‧‧亂序執行引擎
704‧‧‧緩慢/一般浮動點排程器
706‧‧‧簡單浮動點排程器
708‧‧‧暫存器檔案
710‧‧‧浮動點暫存器檔案
711‧‧‧執行方塊
712‧‧‧執行單元
714‧‧‧執行單元
716‧‧‧指令預取器
718‧‧‧指令解碼器
720‧‧‧執行單元
722‧‧‧執行單元
724‧‧‧執行單元
730‧‧‧追蹤快取
732‧‧‧微碼ROM
734‧‧‧微操作佇列
800‧‧‧多重處理器系統
814‧‧‧I/O裝置
816‧‧‧第一匯流排
818‧‧‧匯流排橋
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
824‧‧‧音訊I/O
827‧‧‧通信裝置
828‧‧‧儲存單元
830‧‧‧碼及資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧高效能圖形電路
839‧‧‧高效能圖形介面
850‧‧‧點對點介面
852‧‧‧P-P介面
854‧‧‧P-P介面
870‧‧‧第一處理器
876‧‧‧點對點介面電路
880‧‧‧第二處理器
882‧‧‧積體記憶體控制器單元
886‧‧‧P-P介面電路
888‧‧‧P-P介面電路
890‧‧‧晶片組
894‧‧‧點對點介面電路
896‧‧‧介面
898‧‧‧點對點介面電路
900‧‧‧第三系統
915‧‧‧I/O裝置
932‧‧‧記憶體
934‧‧‧記憶體
970‧‧‧處理器
972‧‧‧控制邏輯
980‧‧‧處理器
982‧‧‧控制邏輯
990‧‧‧晶片組
1000‧‧‧系統單晶片(SoC)
1002‧‧‧核心
1002‧‧‧互連單元
1006‧‧‧快取單元
1008‧‧‧積體圖形邏輯
1010‧‧‧應用處理器
1014‧‧‧控制器單元
1016‧‧‧控制器單元
1020‧‧‧媒體處理器
1024‧‧‧影像處理器
1026‧‧‧音訊處理器
1028‧‧‧視訊處理器
1030‧‧‧靜態隨機存取記憶體(SRAM)單元
1032‧‧‧直接記憶體存取(DMA)單元
1040‧‧‧顯示單元
1100‧‧‧系統晶片
1106‧‧‧核心
1107‧‧‧核心
1108‧‧‧快取控制
1109‧‧‧匯流排介面單元
1110‧‧‧L2快取
1111‧‧‧互連
1115‧‧‧GPU
1120‧‧‧視訊編解碼器
1125‧‧‧視訊介面
1130‧‧‧用戶身份模組(SIM)
1135‧‧‧開機ROM
1140‧‧‧SDRAM控制器
1145‧‧‧快閃控制器
1150‧‧‧周邊控制
1160‧‧‧DRAM
1165‧‧‧快閃
1170‧‧‧藍芽模組
1175‧‧‧3G數據機
1180‧‧‧GPS
1185‧‧‧Wi-Fi
1200‧‧‧運算系統
1202‧‧‧處理裝置
1204‧‧‧主記憶體
1206‧‧‧靜態記憶體
1208‧‧‧網路介面裝置
1210‧‧‧視訊顯示單元
1212‧‧‧文數字輸入裝置
1214‧‧‧游標控制裝置
1216‧‧‧信號產生裝置
1218‧‧‧資料儲存裝置
1220‧‧‧網路
1222‧‧‧圖形處理單元
1224‧‧‧電腦可讀儲存媒體
1226‧‧‧處理邏輯
1228‧‧‧視訊處理單元
1230‧‧‧匯流排
1232‧‧‧音訊處理單元
圖1係依照一些實施例繪示實施提供記憶體排序或定序之記憶體串流模組的運算系統的方塊圖。
圖2係依照本發明之一些實施例繪示一記憶體串流模組的方塊圖。
圖3係依照一些實施例執行記憶體操作及非同調 (NOCO)觸發器之方法的流程圖。
圖4A係依照一些實施例繪示記憶體操作及NOCO觸發器之實例順序。
圖4B係依照一些實施例繪示記憶體操作及NOCO觸發器之另一實例順序。
圖4C係依照一些實施例繪示記憶體操作及NOCO觸發器之另一實例順序。
圖5係依照本發明之一些實施例繪示基於記憶體操作之一促進來而將一相依性附加至記憶體操作及NOCO觸發器之順序的方法。
圖6係依照本發明之一些實施例繪示用以偵測一NOCO觸發器之實例架構。
圖7係依照一實施例繪示用於包含邏輯電路之處理器來管理與亂序指令管道相關聯之檢查點之微架構的方塊圖。
圖8係依照一實施方案之電腦系統的方塊圖。
圖9係依照另一實施方案之電腦系統的方塊圖。
圖10係依照一實施方案之系統單晶片的方塊圖。
圖11繪示用於一運算系統之另一實施方案的方塊圖。
圖12繪示用於一運算系統之另一實施方案的方塊圖。
【發明內容與實施方式】
本發明之態樣係關於在具有同調及非同調子系統或部分的處理架構中之記憶體定序技術。記憶體定序技術可被用於改良處理器、處理裝置或處理器式系統之效能。例如,記憶體定序技術可藉由定義在處理裝置之不同部分中在操作中(例如記憶體讀取異動及記憶體寫入異動)被強制之性質來用於改良處理裝置之效能。處理裝置可包含一處理器核心、多功能單元及一記憶體。該處理器核心可卸載欲藉由功能單元所執行之任務。例如,處理器核心可發佈對應於在記憶體中儲存指令或命令及資料之第一操作,並且可發佈對應於將命令(即一觸發器)傳輸至功能單元之一第二操作以基於儲存在記憶體中之指令或命令對資料執行功能或操作。處理裝置可包含一記憶體串流模組,該記憶體串流模組包含可基於與處理裝置之記憶體相關聯之操作而用於定義與一或多個功能單元相關聯之操作之相依性的功能方塊。
一處理裝置可包含非同調子系統或部分及同調子系統或部分。例如,處理裝置之記憶體可以係同調子系統之一部分且一或多個功能單元可以係非同調子系統之一部分。此一記憶體可被稱之為同調記憶體且此一功能單元可被稱之為一非同調(NOCO)功能單元。NOCO功能單元可以係處理器核心外部之功能單元。例如,處理器核心可包含功能單元且NOCO功能單元可位在處理器核心的外部。一NOCO功能單元亦可被稱之為一加速器或一固定-功能方塊。同調及非同調可指稱一致性模型。在某些實施例中, 該一致性模型可針對記憶體操作(例如寫入異動至記憶體及藉由功能單元讀取異動以從記憶體擷取資料)定義規則。例如,同調記憶體可指稱藉由一或多個執行或功能單元或處理器所讀取及/或寫入之記憶體,且非同調功能單元可指稱儲存或係與從同調記憶體分離之資料之獨立複本相關聯之功能單元。此功能單元亦可被稱之為一加速器。因此,包含同調記憶體及一或多個非同調功能單元之處理裝置可被稱之為一同調及非同調系統。在某些實施例中,與同調記憶體相關聯之操作可被稱之為記憶體操作(例如對同調記憶體之讀取或寫入異動),而與非同調功能單元相關聯之操作可被稱之為一NOCO觸發器。因此,當NOCO功能單元及同調記憶體在相同資料之分別儲存之複本上操作時,使用該資料之操作執行可能需要特定相依性以維持操作的定義規則。
當今微處理器式產品(包含系統單晶片(SoC)、用戶端、伺服器及硬體加速器)可利用包含同調記憶體及非同調功能單元之處理架構。記憶體定序模組可被用於定義在與同調記憶體相關聯之操作及與非同調功能單元相關聯之操作之間的互動。在某些實施例中,記憶體定序模組可被用於定義在用於NOCO功能單元(例如NOCO觸發器)之操作及用於同調記憶體(例如記憶體操作)之操作之間的相依性。在某些實施例中,NOCO觸發器可以係用於NOCO功能單元之命令以擷取儲存在同調記憶體中之命令或指令。儲存在同調記憶體中之此命令或指令可被稱之 為一控制方塊(CB)。因此,來自處理器核心之第一操作(例如記憶體操作)可對應於控制方塊至同調記憶體之寫入或讀取,及來自處理器核心之第二操作(例如NOCO觸發器)可對應於從同調記憶體之控制方塊的讀取及擷取,且後續操作係藉由NOCO功能單元來執行。因此,用於NOCO功能單元之NOCO觸發器可以係相依於同調記憶體操作。在某些實施例中,此一相依性可指稱用於NOCO功能單元之NOCO觸發器,其不藉由處理核心執行或傳輸至NOCO功能單元,直到用於同調記憶體之一特定記憶體操作已被完成為止。
如以下進一步描述之細節,記憶體串流模組可提供用於同調記憶體之記憶體操作之第一串流或順序及用於NOCO功能單元之NOCO觸發器之第二串流或順序。在某些實施例中,用於NOCO功能單元之NOCO觸發器之第二串流或順序可相依於用於同調記憶體之記憶體操作之第一串流或順序。例如,在用於同調記憶體之較舊記憶體操作(例如較早發佈之讀取異動)已被執行之前,可限制用於NOCO功能單元之觸發器不被執行。
在用於同調記憶體之記憶體操作及用於NOCO功能單元之觸發器之間之此一排序可改良包含同調子系統及非同調子系統之處理裝置之總體效能。例如,藉由記憶體串流模組所使用之一致性模型可產生用於同調記憶體之第一串流,其中該第一串流可允許操作之亂序執行(例如一特定異動可在較早的異動之前被執行),同時使用於NOCO功 能單元之另一串流以更循序及依順序方式執行,同時亦部分地相依於記憶體操作。此一一致性模型可允許記憶體操作之較快執行,同時亦利用NOCO功能單元。
圖1依照一些實施例係繪示實施用於提供及更新與記憶體120及一或多個NOCO功能單元130相關聯之記憶體順序之記憶體串流模組107之運算系統100的方塊圖。該運算系統100係形成有包含處理核心之處理器102,該處理核心可卸載欲藉由一或多個NOCO功能單元130完成之工作或異動。簡而言之,記憶體串流模組107維持及更新用於記憶體120及用於NOCO功能單元130之記憶體順序,該記憶體順序可被用來定義用於記憶體120之記憶體操作及/或用於NOCO功能單元130之NOCO觸發器何時可被執行。例如,該記憶體串流模組107可定義及控制用於記憶體120之記憶體操作之執行以及用於NOCO功能單元130之NOCO觸發器之執行的一特定順序;以及基於用於記憶體120之記憶體操作定義及強制用於NOCO功能單元130之NOCO觸發器的相依性。關於記憶體串流模組107額外的細節將在下文中針對圖2至6來更詳細說明。
依照在本文中所述之實施例,運算系統100包含一組件(諸如一處理器102)以利用包含邏輯之執行單元108來執行用於處理資料之演算法。系統100可以係基於可從加州聖克拉拉的英特爾公司購得之PENTIUM IIITM、PENTIUM4TM、XeonTM、安騰、XScaleTM及/或StrongARMTM微處理器作為代表性的處理系統,但亦可使 用其他系統(包含具有其他微處理器、工程工作站、機上盒等等之PC)。在一實施例中,樣本運算系統100可執行從華盛頓雷德蒙德的微軟公司購得的WINDOWSTM操作系統之版本,但亦可使用其他操作系統(例如UNIX及Linux)、嵌入軟體及/或圖形使用者介面。因此,本發明之實施例不限於硬體電路及軟體之任何特定組合。
實施例不限於電腦系統。本發明之替代實施例可被用於其他裝置,諸如手持裝置及嵌入式應用。手持裝置之實例包含蜂巢式電話、網際網路協定裝置、數位相機、個入數位助理(PDA)及手持式PC,但不以此為限。依照至少一個實施例,嵌入式應用可包含一微控制器、一數位信號處理器(DSP)、系統單晶片(SoC)、網路電腦(NetPC)、機上盒、網路中樞、廣域網路(WAN)開關或任何其他可以執行一或多個指令的系統,但不以此為限。
在圖1之所述實施例中,處理器102包含一或多個執行單元108來實施演算法,該演算法係用以執行至少一個指令。一實施例可依單一處理器桌上型電腦或伺服器系統之背景內容來描述,但替代實施例可包含於一多重處理器系統中。系統100可以係「中樞」系統架構之一實例。電腦系統100包含用以處理資料信號之一處理器102。作為一繪示性實例,該處理器102包含例如一複雜指令集電腦(CISC)微處理器、一精簡指令集運算(RISC)微處理器、一超長指令字(VLIW)微處理器、實施指令集之組 合之一處理器、一亂序式處理器或任何其他的處理器裝置(諸如數位信號處理器)。處理器102被耦合至處理器匯流排110,該處理器匯流排在處理器102及在系統100中之其他組件(諸如主記憶體120儲存指令、資料或任何其之組合)之間傳輸資料信號。系統100之其他組件可包含一圖形加速器、一記憶體控制器中樞、I/O控制器中樞、一無線收發器、一快閃BIOS、一網路控制器、一音訊控制器、一串列擴展埠及一I/O控制器,但不以此為限。這些元件執行熟悉本技術之人士所熟知之習知功能。
在一實施例中,處理器102包含一級(L1)內部快取記憶體104。依照架構,處理器102可具有單一內部快取記憶體或多個等級的內部快取記憶體(例如L1及L2)。依照特定實施方案及需要,其他實施例包含內部及外部快取之組合。暫存器檔案106係用於儲存在各種不同暫存器中之不同類型的資料,該暫存器包含整數暫存器、浮動點暫存器、向量暫存器、備份暫存器(banked register)、影子暫存器、檢查點暫存器、狀態暫存器、組態暫存器及指令指標暫存器,但不以此為限。
執行單元108(包含用以執行整數及浮動點操作之邏輯)亦駐留在處理器102中。應瞭解,執行單元可或可不具有浮動點單元。在一實施例中,處理器102包含一微碼(μ碼)ROM以儲存微碼,其中當其執行時可用來執行用於特定巨集指令之演算法或處理複雜方案。在此,微碼可能係可更新的以處理用於處理器102之邏輯錯誤/修 復。執行單元108之替代實施例亦可被用於微控制器、嵌入處理器、圖形裝置、DSP及其他類型的邏輯電路中。
系統100包含一主記憶體120。主記憶體120可包含一動態隨機存取記憶體(DRAM)裝置、一靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置,但不以此為限。主記憶體120儲存藉由資料信號(其係欲藉由處理器102所執行)所表示之指令及/或資料。該處理器102係經由處理器匯流排110耦合至主記憶體120。一系統邏輯晶片(諸如一記憶體控制器中樞(MCH))可被耦合至處理器匯流排110及主記憶體120。一MCH可以提供一高帶寬記憶體路徑至用於指令及資料儲存及用於圖形命令、資料及結構之儲存之記憶體120。該MCH例如可用於在系統100中之處理器102、主記憶體120、及其他組件之間引導資料信號且例如在處理器匯流排110、主記憶體120、快取記憶體104及系統I/O之間橋接資料信號。該MCH可透過記憶體介面被耦合至主記憶體120。在某些實施例中,系統邏輯晶片可以提供用於透過加速影像處理埠(AGP)互連耦合至圖形控制器之圖形埠。系統100亦可包含一I/O控制器中樞(ICH)。該ICH可以提供經由局部I/O匯流排直接至一些I/O裝置的連接。該局部I/O匯流排係用於將周邊裝置連接至主記憶體120、晶片組及處理器102之一高速I/O匯流排。某些實例係音訊控制器、韌體中樞(快閃BIOS)、無線收發器、資料儲存、含有使用者輸入之舊 型I/O控制器及鍵盤介面、一串列擴展埠(諸如通用序列匯流排(USB))及一網路控制器。資料儲存裝置可以包括一硬碟機、一軟磁碟機、一CD-ROM裝置、一快閃記憶體裝置或其他大量儲存裝置。
對於系統之另一實施例,記憶體串流模組107可與系統單晶片使用。用於此一系統之記憶體可以係一快閃記憶體。該快閃記憶體可被定位在與處理器及其他系統組件相同的晶粒上。此外,其他邏輯方塊(諸如一記憶體控制器或圖形控制器)亦可被定位在一系統單晶片上。
系統單晶片之一實施例包含一處理器核心、同調記憶體(例如記憶體120)及一或多個非同調功能單元(例如NOCO功能單元130)。在某些實施例中,處理器核心可包含一記憶體串流模組107用以控制用於記憶體120之記憶體操作及用於NOCO功能單元130之NOCO觸發器。例如,在一些實施例中,處理器核心可將異動或操作傳輸至同調記憶體120及NOCO功能單元130。在某些實施例中,處理器核心可將記憶體操作(例如讀取或寫入異動)傳輸至同調記憶體。記憶體操作可用來儲存指令及命令於記憶體中。此指令及命令可被稱之為一控制方塊(CB)。在某些實施例中,CB可被儲存在同調記憶體120之預定義及特定區域中。處理器核心可進一步將一NOCO觸發器操作傳輸至NOCO功能單元130之其中一者。例如,NOCO觸發器操作可經由藉由處理器102之處理器核心所發佈之記憶體映射輸入/輸出(IO)寫入異動 來傳輸。在從處理器核心接收NOCO觸發器之後,NOCO功能單元可從同調記憶體120擷取CB且NOCO功能單元130可基於擷取的CB來執行操作。例如,NOCO功能單元130可擷取對應於CB之資料並且基於可在CB中被識別之資料之指令及位置而對資料執行操作。接著,NOCO功能單元130可基於CB處理資料且可寫入處理資料至同調記憶體120。例如,NOCO功能單元130可開始寫入異動至同調記憶體120以將處理資料儲存在同調記憶體120之另一位置中。再者,當已經基於CB完成處理資料之後,NOCO功能單元130可標籤或標記CB為完成。
在某些實施例中,NOCO功能單元可以係一圖形控制器、處理器或處理裝置、一網路控制器、處理器或處理裝置、一直接記憶體存取(DMA)控制器、處理器或處理裝置或任何其他用於與處理裝置相關聯之程式化輸入/輸出(PIO)的裝置,但不以此為限。例如,NOCO功能單元130可以係包含一算術邏輯單元(ALU)或其他處理能力之IO裝置。
圖2係依照本發明之一些實施例之一方塊圖,其繪示一實例記憶體串流模組200。記憶體串流模組200可對應於圖1之記憶體串流模組107。一般而言,記憶體串流模組200可包含一同調子模組(或功能方塊)210、一非同調子模組(或功能方塊)220、一非同調串流識別符子模組(或功能方塊)230、一同調串流識別符子模組(或功能方塊)240、一相依性子模組(或功能方塊)250、及一 促進子模組(或功能方塊)260。在替代實施例中,一或多個子模組之功能可被組合或分開。例如,一單一子模組可執行同調子模組210、非同調子模組220、非同調串流識別符子模組230、同調串流識別符子模組240、一相依性子模組250及促進子模組260之功能。此外,子模組210、220、230、240、250及260之各者之功能可在多個子模組之間被分離。
如圖2所示,記憶體串流模組200可包含一同調子模組210。在某些實施例中,該同調子模組210可接收或識別與記憶體(例如同調記憶體120)相關聯之一或多個記憶體操作。例如,同調子模組210可識別與一同調記憶體相關聯之記憶體操作。記憶體操作可包含寫入操作以將資料(例如一控制方塊)寫入至一同調記憶體或一讀取操作以從同調記憶體讀取資料。記憶體串流模組200可包含一非同調子模組220。在某些實施例中,非同調子模組220可接收或識別一或多個與一NOCO功能單元相關聯之NOCO觸發器操作。例如,非同調子模組220可識別與一或多個NOCO功能單元相關聯之NOCO觸發器以擷取儲存在同調記憶體中之資料(例如控制方塊)。記憶體串流模組200可進一步包含一同調串流識別符子模組230。在某些實施例中,該同調串流識別符子模組230可定義與同調記憶體相關聯之記憶體操作之串流。記憶體操作之串流可指稱已發佈之一系列記憶體操作。例如,同調串流識別符子模組230可定義欲被實施或執行之記憶體操作之順 序。在某些實施例中,可定義記憶體操作之順序使得記憶體操作係依程式順序(例如以當發佈記憶體操作時的順序),或當記憶體操作之讀取操作跟隨記憶體操作之寫入操作時,可藉由放寬記憶體操作之順序來定義記憶體操作之順序。例如,一讀取異動或操作(亦稱之為負載)可在程式順序上早於該讀取異動或操作之寫入操作或異動(亦稱之為儲存)之前執行。此一順序可被稱之為總儲存順序(TSO)。關於記憶體操作之排序或定序之進一步細節將關於圖4A至4C來進一步詳細揭示。記憶體串流模組200可進一步包含一非同調串流識別符子模組240。在某些實施例中,該非同調串流識別符子模組240可定義NOCO觸發器操作之順序。例如,在一些實施例中,觸發器操作可以係依順序的。在某些實施例中,順序可指稱為程式順序,其中被執行之操作(例如NOCO觸發器操作)係使得依程式順序較早發佈的NOCO觸發器係在依程式順序較晚發佈的NOCO觸發器之前被執行。
因此,可接收一系列記憶體操作。該系列記憶體操作可能依照程式順序(例如依發佈記憶體操作時之順序)。該系列記憶體操作可基於循序排序被排序或基於其中接在寫入異動後之讀取異動可在寫入異動之前被執行之排序而被排序。再者,可接收一系列NOCO觸發器。NOCO觸發器可以係基於循序排序。
請參考圖2,記憶體串流模組200可包含一相依性子模組250。在某些實施例中,相依性子模組250可基於一 記憶體操作定義一或多個NOCO觸發器的相依性。在某些實施例中,相依性可指稱為相依於被執行之特定記憶體操作之NOCO觸發器之前被執行或完成之特定記憶體操作之要求。在某些實施例中,相依性可以被定義成基於讀取異動或記憶體操作(例如可能不執行NOCO觸發器且旁繞一較舊的讀取操作)之觸發器操作及/或該相依性可被定義成基於促進寫入記憶體操作之NOCO觸發器。例如,記憶體串流模組200可包含一促進子模組260。在某些實施例中,該促進子模組260可識別已被促進之寫入記憶體操作。一促進寫入操作可指稱為寫入操作,其係在處理器或處理裝置之外部調度。回應於正被促進之寫入記憶體操作之識別,促進子模組260可基於該已被促進之寫入記憶體操作來產生NOCO觸發器的相依性。
圖3係依照一些實施例用於執行記憶體操作及非同調功能單元(NOCO)觸發器之方法300的流程圖。在某些實施例中,方法300可藉由記憶體串流模組107或200而執行。例如,方法300的使用可藉由圖1之記憶體串流模組107或圖2之記憶體串流模組200以控制及/或更新與對應於同調記憶體之記憶體操作及對應於處理器(例如處理器102)之NOCO功能單元之NOCO觸發器相關聯之執行順序及相依性。該方法300亦可藉由包括硬體(例如電路、專用邏輯、可程式邏輯、微碼等等)、軟體、韌體或彼等之組合之處理邏輯而執行。此外,運算系統100之其他組件可執行方法300之一些或全部操作。
如圖3所示,方法300可開始於在方塊310識別一系列記憶體操作之處理邏輯(方塊310)。在某些實施例中,記憶體操作可以係依順序的(例如依程式順序)或可以係總儲存順序,其中在讀取記憶體操作之前的寫入異動可被放寬或更改,使得該讀取記憶體操作可在較早的寫入記憶體操作之前被執行。再者,記憶體操作可與讀取記憶體操作及寫入記憶體操作至可被用於儲存控制方塊及處理資料之同調記憶體相關聯。例如,記憶體操作可指定用於NOCO功能單元之指令。在某些實施例中,該指令可包含用以控制NOCO功能單元如何執行下述者之資訊:NOCO功能單元應執行之命令、NOCO功能單元應擷取以對之執行之資料的位置等等。因此,控制方塊可包含判定下述者之資訊:NOCO功能單元應擷取之資料、如何對NOCO功能單元將擷取之資料進行操作以產生處理資料及在同調記憶體中用來儲存處理資料之位置。
處理邏輯可進一步識別一系列NOCO觸發器(方塊320)。在某些實施例中,NOCO觸發器可以係用於對應NOCO功能單元之指令或命令以從同調記憶體擷取資料。例如,NOCO觸發器可指定NOCO功能單元欲擷取及/或執行之儲存在同調記憶體中之控制方塊的位置。因此,NOCO觸發器可被視為用以指定NOCO功能單元如何操作之操作。
請參考圖3,處理邏輯可基於一系列記憶體操作產生NOCO觸發器的相依性(方塊330)。在某些實施例中, 該相依性可在一系列記憶體操作之特定記憶體操作已執行之前指定特定NOCO觸發器不被執行。因此,該相依性可被認為係對特定NOCO觸發器何時可被執行的一種限制。再者,處理邏輯可執行記憶體操作及NOCO觸發器(方塊340)。例如,處理邏輯可執行記憶體操作及NOCO觸發器使得NOCO觸發器之一或多者係相依於記憶體操作之一或多者。
圖4A係依照一些實施例繪示記憶體操作及NOCO觸發器之實例順序400。一般而言,順序400可包含記憶體操作之第一串流,其對應於同調記憶體(例如記憶體120),及NOCO觸發器之第二串流,其對應於至少一個NOCO功能單元(例如NOCO 130),其中第二串流之NOCO觸發器在第一串流之記憶體操作之較早讀取操作之前不被執行。順序400可藉由圖1之記憶體串流模組107或圖2之記憶體串流模組200而產生。例如,記憶體串流模組可定義NOCO觸發器的相依性,使得NOCO觸發器在較早記憶體操作(即係一來自第一串流之讀取異動)之前不可被執行。
如圖4A所示,順序400可包含用於同調記憶體之記憶體操作之第一串流410,該第一串流包含稱之為讀取記憶體操作A之記憶體操作411、稱之為讀取記憶體操作B之記憶體操作412、稱之為寫入記憶體操作C之記憶體操作413、稱之為寫入記憶體操作D之記憶體操作414及稱之為讀取記憶體操作E之記憶體操作415。再者,順序 400可包含用於一或多個NOCO功能單元之NOCO觸發器之第二串流420,該第二串流包含稱之為觸發器X之NOCO觸發器421及被稱之為觸發器Y之NOCO觸發器422。在某些實施例中,NOCO觸發器之各者可為至NOCO功能單元的寫入操作。因此,順序400可包含讀取及寫入操作至同調記憶體之第一串流及寫入操作至NOCO功能單元之第二串流。記憶體操作及NOCO觸發器之各者的安排可對應於當記憶體操作或NOCO觸發器已經被發佈時的時間。例如,記憶體操作或NOCO觸發器越接近獲取操作,則該記憶體操作或觸發器操作依程式順序係越早被發佈。例如,讀取記憶體操作A可被視為係依程式順序之第一操作、觸發器X可被視為係依程式順序之第二操作、讀取及寫入記憶體操作B及C可被視為係依程式順序之第三及第四操作、觸發器Y可被視為係依程式順序之第五操作等等。
在某些實施例中,順序400可被稱之為與NOCO串流一致性的一放寬循序。例如,循序一致性可指稱依程式順序(例如依所發佈之操作順序)執行記憶體操作及NOCO觸發器。此一循序一致性可引起接在觸發器X之後讀取記憶體操作A的執行,其係接在以採用讀取記憶體操作B及寫入記憶體操作C之觸發器Y之讀取記憶體操作B及寫入操作C之後。然而,若記憶體操作係在NOCO觸發器被發佈之前已發佈之讀取記憶體操作,則與NOCO串流一致性之放寬循序可定義在NOCO觸發器及記憶體操作之 其中一者之間的相依性。在某些實施例中,串流410之記憶體操作可被執行而不用等待特定NOCO觸發器被執行。例如,記憶體操作B、C、D及E之任何一者可允許在NOCO觸發器X及Y已被執行之前執行。然而,記憶體操作B、C、D及E可以係依程式順序執行(例如記憶體操作B必須在稍後的記憶體操作C、D或E之前執行)。因此,記憶體操作之串流410可被視為係獨立的NOCO觸發器。NOCO觸發器操作之串流420可與其他NOCO觸發器依順序安排。例如,NOCO觸發器X依程式順序可比NOCO觸發器Y還要早被發佈。因此,NOCO觸發器X必須在執行NOCO觸發器Y之前被執行。然而,相依性423及424可由記憶體操作411及413而被定義在NOCO觸發器X及NOCO觸發器Y之間。例如,NOCO觸發器X在記憶體操作A已經執行之前不被允許執行且NOCO觸發器Y在NOCO觸發器X及記憶體操作C已經執行之前不被允許執行。因此,相依性423及424基於一記憶體操作定義NOCO觸發器何時可被執行。因此,一特定NOCO觸發器(例如NOCO觸發器Y)在一先前的NOCO觸發器(例如NOCO觸發器X)及一特定記憶體操作(例如記憶體操作C)已經執行之前不被允許執行。
圖4B係依照一些實施例繪示記憶體操作及觸發器之實例順序430。一般而言,順序400可包含記憶體操作之第一串流,其對應於同調記憶體(例如記憶體120);及NOCO觸發器之第二串流,其對應於至少一個NOCO功能 單元(例如NOCO 130),其中第二串流之NOCO觸發器在促進之第一串流之記憶體操作之寫入操作已被執行之前不可被執行。順序430可藉由圖1之記憶體串流模組107或圖2之記憶體串流模組200而產生。例如,記憶體串流模組可定義NOCO觸發器的相依性,使得在較早記憶體操作(其係來自第一串流之一促進寫入操作)之前NOCO觸發器不可以被執行。
如圖4B所示,第一串流440可包含記憶體操作441、442、443、444及445。再者,第二串流450可包含NOCO觸發器操作451及NOCO觸發器操作452。順序430可被稱之為具有單向圍柵之一弱NOCO串流。例如,記憶體操作C*可被稱之為一促進寫入操作。在某些實施例中,一促進寫入操作可以係CPU之外部之可調度或執行之寫入操作。例如,對應於記憶體操作C*之促進寫入操作可寫入一新的控制方塊至欲藉由NOCO功能單元操作時之同調記憶體。在某些實施例中,促進寫入異動可引起新的相依性454,其指定NOCO觸發器操作Y不可被執行直到促進寫入異動已經被執行之後。相依性453亦可定義NOCO觸發器操作X在讀取記憶體操作A之前不可執行。
圖4C依照一些實施例繪示記憶體操作及觸發器之實例順序460。一般而言,順序460可包含對應於同調記憶體(例如記憶體120)之記憶體操作之第一串流;及對應於至少一個NOCO功能單元(例如NOCO 130)之NOCO 觸發器之第二串流,其中第二串流之NOCO觸發器在第一串流之記憶體操作之促進寫入操作已經執行之前不可被執行,且可排序第一串流之記憶體操作使得一較晚讀取記憶體操作可在較早寫入記憶體操作之前被執行。順序460可藉由圖1之記憶體串流模組107或圖2之記憶體串流模組200而產生。例如,記憶體串流模組可定義NOCO觸發器的相依性,使得NOCO觸發器在較早記憶體操作(即係來自第一串流之促進寫入記憶體操作)之前不可被執行。
如圖4C所示,第一串流470可包含記憶體操作471、472、473、474及475。再者,第二串流480可包含NOCO觸發器481及NOCO觸發器482。順序460可被稱之為具有非同調(NOCO)串流之放寬總儲存順序(TSO)。例如,第一串流470之記憶體操作可基於TSO被排序,使得讀取異動(例如記憶體操作E)可在記憶體操作之較早寫入異動(例如記憶體操作C*及D)之前被執行。相似於順序430,相依性483及484可定義對應的觸發器操作何時可被實施或執行。
因此,順序460可指定對應於記憶體操作之第一串流及對應於NOCO觸發器之第二串流。在某些實施例中,第二串流之NOCO觸發器可相對於NOCO觸發器依順序而被執行。例如,在第一時間所發佈之第一NOCO觸發器可在比第一時間晚的第二時間所發佈之第二NOCO觸發器之前被執行,且第二NOCO觸發器直到已經執行第一NOCO觸發器之前不允許被執行。再者,可排序記憶體操作使得 在比已經發佈之第一寫入記憶體操作較晚時間所發佈之讀取記憶體操作可在已經執行之第一寫入記憶體操作之前被執行。
因此,順序460可指定記憶體操作之串流,其中特定較晚的記憶體操作可在其他記憶體操作之前被執行,同時亦相對於NOCO觸發器依順序指定NOCO觸發器之第二串流,但其中NOCO觸發器之一或多者相依於第一串流之記憶體操作的其中至少一者。因此,較晚記憶體操作可在較早NOCO觸發器及一些其他較早記憶體操作之前被執行或調度,但較晚NOCO觸發器在較早NOCO觸發器之前可能不被執行或調度,且可進一步相依於至少一個記憶體操作。
圖5係依照本發明之一些實施例繪示基於促進記憶體操作來附加記憶體操作及NOCO觸發器之順序的相依性的方法500。在某些實施例中,方法500可藉由記憶體串流模組107或200被執行。例如,方法500可由圖1之記憶體串流模組107或圖2之記憶體串流模組200所使用以控制及/或更新與對應於同調記憶體之記憶體操作及對應於處理器(例如處理器102)之NOCO功能單元之NOCO觸發器相關聯之執行順序及相依性。該方法500亦可藉由包括硬體(例如電路、專用邏輯、可程式邏輯、微碼等等)、軟體、韌體或其之組合之處理邏輯被執行。此外,運算系統100之其他組件可執行方法300之一些或全部操作。
如圖5所示,方法500可開始於在方塊510之處理邏輯獲取一系列記憶體操作(方塊510)及一系列NOCO觸發器操作(方塊520)。例如,處理邏輯可獲取包含多個記憶體操作及多個NOCO觸發器操作之串流。處理邏輯可進一步判定記憶體操作是否被促進(方塊530)。例如,若係包含在所獲取的串流中之一特定記憶體操作受到全域觀察,則其可導致寫入異動至同調記憶體,其係在CPU之外部被調度。因此,若處理邏輯識別已經促進之記憶體操作,則接著基於記憶體操作之促進可在NOCO觸發器操作及記憶體操作之間添加相依性(方塊550)。例如,一特定NOCO觸發器在直到已經促進之記憶體操作已經執行且完成(例如資料方塊已經寫入至同調記憶體中)之前不被允許執行。然而,若處理邏輯不能識別已經促進之記憶體操作,則沒有額外的相依性可被添加至一系列NOCO觸發器操作(方塊540)。
圖6依照本發明之一些實施例繪示用來偵測一NOCO觸發器操作之實例架構600。一般而言,架構600可以係記憶體串流模組(例如記憶體串流模組107或記憶體串流模組200)之部分及/或被實施在處理器或處理裝置(例如處理器100)之硬體中。該架構600可被用於識別在記憶體串流中之NOCO觸發器操作。在某些實施例中,NOCO觸發器操作可被視為係寫入異動類型(即,記憶體映射IO寫入)。
如圖6所示,架構600可包含一非同調記憶體指定暫 存器(NOCO MSR)610、一比較器630、一邏輯閘640及一轉換後備緩衝器(TLB)650。在某些實施例中,NOCO MSR 610可指定一記憶體位址範圍,其係與處理裝置架構之NOCO部分相關聯。例如,NOCO MSR可包含資料欄位611、612、613及614。在某些實施例中,NOCO MSR 610之資料欄位之其中一者可對應於實體位址範圍,其係與處理裝置之NOCO部分相關聯。例如,資料欄位613可以係非同調實體位址(NOCO PHY ADDR),其指定藉由一處理裝置架構之NOCO部分所使用之位址範圍。在某些實施例中,一輸入信號631可對應於頁失處理器(PMH)。例如,處理裝置可遍查頁表以查看是否針對一指定虛擬位址存在有效頁表項目。若一項目有存在,則項目之位址係與在NOCO MSR 610之NOCO PHY ADDR資料欄位613中的位址比較。例如,比較器630將來自NOCO MSR 610之位址與從PHY ADDR輸入信號631返回之PMH的位址做比較。若比較器630輸出「1」,則指示來自輸入信號631之位址與資料欄位631之位址中的一者相匹配,且賦能信號632被設為一,且接著邏輯閘640(例如AND閘)可輸出欲被儲存在TLB中之一位元。例如,在TLB中之專用儲存欄位可被用於儲存非同調位元。因此,當讀取TLB項目時,非同調位元可指示與TLB項目相關聯之操作係與處理裝置架構之非同調部分相關聯。
圖7係依照一種實施例繪示包含管理記憶體順序之邏 輯電路之用於處理器700之微架構之方塊圖。記憶體串流模組107及200可被實施在處理器700中。在某些實施例中,依照一實施例之指令可以被實施以對具有位元組、文字、兩倍字、四倍字等之尺寸以及資料類型(諸如單及雙準確性整數及浮動點資料類型)之尺寸之資料元件進行操作。在一實施例中,按順序之前端701係處理器700之部分,該部分係取得欲被執行之指令並且將其準備好以稍後在處理器管道中使用。
該前端701可包含數個單元。在一實施例中,指令預取器716從記憶體取得指令並且將其回饋至按順序將其解碼或解釋之指令解碼器718。例如,在一實施例中,解碼器將一接收指令解碼至機器可執行之一或多個稱為「微指令」、「微操作」(亦稱為微運算或單位運算)的操作。在其他實施例中,解碼器將指令剖析至運算碼且對應至藉由微架構所使用之資料及控制欄位來執行依照一實施例之操作。在一實施例中,追蹤快取730採用解碼單位運算並且將其組合至按微操作佇列734中之順序或軌跡排序之程式中來執行。當追蹤快取730遇到複雜指令時,微碼ROM 732提供所需要的微運算來完成操作。
某些指令被轉換成單一微運算,而其他則需要數個微操作來完成整個操作。在一實施例中,若多於四個微操作需要完成指令,則解碼器718存取微碼ROM 732來完成指令。對於一實施例,一指令可以在指令解碼器718處被解碼至小數量的微運算來處理。在另一實施例中,可以被 儲存在微碼ROM 732中之一指令應需要若干微操作來完成操作。追蹤快取730指稱一進入點可程式邏輯陣列(PLA)以判定用於讀取微碼順序之一正確的微指令指標來完成依照一實施例之來自微碼ROM 732之一或多個指令。在微碼ROM 732完成指令之定序微操作之後,機器之前端701恢復從追蹤快取730取得微操作。
亂序執行引擎703係在指令已準備用來執行之處。當指令向下至管道且獲得用於執行之排程時,亂序執行邏輯具有若干緩衝器來消除及重新排序大量指令以將效能最佳化。分配器邏輯分配各個為運算執行所需要的機器緩衝器及資源。暫存器重新命名邏輯將在項目上之邏輯暫存器重新命名為一暫存器檔案。該分配器亦分配在兩個微操作佇列之其中一者中之各個微運算的項目,其中一個用於記憶體操作且另一個用於非記憶體操作,在指令排程器前端:記憶體排程器、快速排程器702、緩慢/一般浮動點排程器704及簡單浮動點排程器706。微操作排程器702、704、706基於其從屬的輸入暫存器操作數源及微運算需要完成其操作之執行資源之可用性之準備就緒來判定一微運算何時準備好執行。一實施例之快速排程器702可以排程各一半的主要時脈週期而其他排程器僅可以排程主要處理器時脈週期一次。排程器仲裁調度埠以排程用於執行之微運算。在某些實施例中,亂序執行引擎703及執行方塊711可通知關於指令之分配及完成/執行之報廢單元。
暫存器檔案708、710位於排程器702、704、706及 在執行方塊711中之執行單元712、714、716、718、720、722、724之間。有一獨立暫存器檔案708、710分別用於整數及浮動點操作。一實施例之各個暫存器檔案708、710亦包含一旁繞網路,該旁繞網路可以只旁繞或發送才完成之結果(尚未被寫入至暫存器檔案中)至新的從屬微運算。整數暫存器檔案708及浮動點暫存器檔案710亦能夠與另一者通信資料。對於一實施例而言,整數暫存器檔案708被分成兩個獨立暫存器檔案,一暫存器檔案用於資料之低順序32位元及一第二暫存器檔案用於資料之高順序32位元。一實施例之浮動點暫存器檔案710具有128位元寬度項目,由於浮動點指令通常具有從64至128位元寬度之操作數。
執行方塊711含有執行單元712、714、716、718、720、722、724,其中指令被實際地執行。此區段包含暫存器檔案708、710,其儲存需要執行之微指令之整數及浮動點資料操作數值。一實施例之處理器700包含若干個執行單元:位址產生單元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU 720、浮動點ALU 722、浮動點移動單元724。對於一實施例而言,浮動點執行方塊722、724、執行浮動點、MMX、SIMD及SSE或其他操作。一實施例之浮動點ALU 712包含藉由64位元浮動點驅動器之一64位元來執行除法、平方根及其餘的微操作。對於本發明之實施例,包含浮動點值之指令可以由浮動點硬體來處理。
在一實施例中,ALU操作進行至高速ALU執行單元716、718。一實施例之快速ALU 716、718可以執行具有一半的時脈週期之有效延遲之快速操作。對於一實施例而言,當低速ALU 720包含用於長期潛伏類型操作(諸如一倍加器、偏移、旗標邏輯及分支處理)之整數執行硬體時,大部分複雜的整數操作進行至低速ALU 720。記憶體載入/儲存操作藉由AGU 712、714來執行。對於一實施例而言,整數ALU 716、718、720係以在64位元資料操作數上執行整數操作之背景內容來描述。在替代實施例中,ALU 716、718、720可以被實施以支援各種包含16、32、128、256等等之資料位元。同樣地,浮動點單元722、724可以被實施以支援具有各種寬度之位元之操作數的範圍。對於一實施例而言,浮動點單元722、724可以在與SIMD及多媒體指令結合之128位元廣泛緊縮資料操作數上操作。
在一實施例中,在父負載已經結束執行之前,微運算排程器702、704、706調度有關的操作。當微運算在處理器700中被推測性地排程及執行時,該處理器700亦包含邏輯來處理記憶體遺失。若資料負載在資料快取中遺失,則可在已留下具有暫時性不正確資料之排程器之管道中有關的飛行操作。一重播機構追蹤及重新執行使用不正確資料之指令。僅有有關的操作需要重播且獨立操作允許被完成。處理器之一實施例之排程器及重播機構亦被設計成抓取用於文字串流比較操作之指令順序。
依照一實施例,處理器700亦包含邏輯以管理亂序架構之檢查點。在一實施例中,處理器700之執行方塊711可包含檢查點模組200以管理依照在本文中描述之亂序架構之檢查點。
術語「暫存器」可指稱板上處理器儲存位置,其被用於作為識別操作數之指令之部分。換言之,暫存器可以係那些可從處理器之外部(從程式設計師的角度)來使用。然而,一實施例之暫存器不應被限於特定類型電路之含意。然而,一實施例之暫存器係能夠儲存及提供資料並且執行在本文中所述之功能。在本文中所述之暫存器可以藉由在使用任何數量之不同技術(諸如專用實體暫存器、使用暫存器重新命名、專用組合動態地分配實體暫存器及動態地分配實體暫存器等等)之處理器中之電路而實施。在一實施例中,整數暫存器儲存三十二位元整數資料。一實施例之暫存器檔案亦含有八個用於緊縮資料之多媒體SIMD暫存器。
針對本文之討論,暫存器應被瞭解為被設計成用於保持能夠由來自於加州聖克拉拉的英特爾公司之MMX技術所實現之微處理器中的緊縮資料之資料暫存器(諸如64位元寬度MMXTM暫存器(在一些實例中亦稱之為「mm」暫存器)。這些MMX暫存器(可接收整數及浮動點形式)可以由附有SIMD及SSE指令之緊縮資料元件操作。同樣地,與SSE2、SSE3、SSE4或之外(通常稱之為「SSEx」)有關的128位元寬度XMM暫存器技術亦可以 被用於保持此緊縮資料操作數。在一實施例中,在儲存緊縮資料及整數資料中,暫存器不需要兩個資料類型之間作區別。在一實施例中,整數及浮動點不是包含在相同暫存器檔案中就是包含在不同暫存器檔案中。在一實施例中,浮動點及整數資料可被儲存在不同暫存器或相同暫存器中。
實施例可以許多不同系統類型來實施。現請參考圖8,展示依一實施方案之多重處理器系統800之方塊圖。如圖8所示,多重處理器系統800係點對點互連系統,且包含一第一處理器870及一第二處理器880,兩者經由點對點互連850耦合。如圖8所示,處理器870及880之各者可以係多核處理器(包含第一及第二處理器核心),雖然於處理器中可能存在有許多的多核心。依照本發明之實施例,各個處理器可包含混合寫入模式邏輯。在某些實施例中,記憶體串流模組107及200可被實施在多重處理器系統800中。例如,記憶體串流模組107及200可被實施在處理器870及/或處理器880中。
儘管展示兩個處理器870、880,但應瞭解的係本發明之範圍不限於此。在其他實施方案中,一或多個額外處理器可存在於給定的處理器中。
所示之處理器870及880分別包含整合的記憶體控制器單元872及882。處理器870亦包含其匯流排控制器單元點對點(P-P)介面876及878之部分;類似地,第二處理器880包含P-P介面886及888。處理器870、880 可經由使用P-P介面電路878、888之點對點(P-P)介面850來交換資訊。如圖8所示,IMC 872及882將處理器分別耦合至記憶體(即記憶體832及記憶體834),該記憶體可以係局部地附接至各自處理器之主記憶體之部分。
處理器870、880可經由使用點對點介面電路876、894、886、898之個別P-P介面852、854各自與晶片組890交換資訊。晶片組890亦可經由一高效能圖形介面839與一高效能圖形電路838交換資訊。
一共用快取(未圖示)可被包含在兩個處理器之任一處理器或外部,且又經由P-P互連與處理器連接,使得若一處理器係處於一低功率模式,則兩個處理器之任一者或兩者之局部快取資訊可被儲存在共用快取中。
晶片組890經由一介面896被耦合至第一匯流排816。在一實施例中,儘管不限於本發明之範圍,但第一匯流排816可以係一周圍組件互連(PCI)匯流排或一匯流排(諸如一PCI高速匯流排或另一個第三代I/O互連匯流排)。
如圖8所示,各種I/O裝置814可被耦合至第一匯流排816,且一匯流排橋818將第一匯流排816耦合至第二匯流排820。在一實施例中,第二匯流排820可以係一低接腳數(LPC)匯流排。在一實施例中,各種不同裝置可被耦合至第二匯流排820,第二匯流排820,例如包含一鍵盤及/或滑鼠822、通信裝置827及一儲存單元828,諸如一磁碟機或其他大量儲存裝置(其可包含指令/碼及資 料830)。再者,一音訊I/O 824可被耦合至第二匯流排820。應注意,其他架構係可行的。例如,除了圖8之點對點架構之外,一系統可實施一多點匯流排或其他此架構。
現請參考圖9,其依照本發明之實施例展示第三系統900之方塊圖。像圖8及9中相同的元件標號之元件及圖8之特定態樣已經從圖9中省略以避免混淆圖9之其他態樣。
圖9繪示處理器970、980可分別包含整合記憶體及I/O控制邏輯(「CL」)972及982。對於至少一個實施例而言,CL 972、982可包含諸如在本文中所述之整合記憶體控制器單元。此外,CL 972、982亦可包含I/O控制邏輯。圖9繪示記憶體932、934被耦合至CL 972、982且I/O裝置915亦被耦合至控制邏輯972、982。舊型I/O裝置915被耦合至晶片組990。在某些實施例中,記憶體串流模組107及200可被實施在系統900中。例如,記憶體串流模組107及200可被實施在處理器970及/或處理器980中。
圖10係一例示性系統單晶片(SoC),其可包含一或多個核心1002。在本技術其他已知用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路中樞、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置及 各種其他電子裝置的系統設計及組態亦可適用。一般而言,能夠併入如在本文所揭示之處理器及/或其他執行邏輯之大量各種系統或電子裝置大體上係適用的。
現請參考圖10,其依照本發明之實施例展示SoC 1000之方塊圖。在圖5中之相同元件具有相同的元件標號。此外,虛線方塊係在更先進的SoC上的特徵。在圖10中,互連單元1002被耦合至:一應用處理器1010,其包含一組一或多個核心1002A至N及共用快取單元1006;一系統代理器單元1010;一匯流排控制器單元1016;一積體記憶體控制器單元1014;一組或一或多個媒體處理器1020,其可包含積體圖形邏輯1008、用於提供靜止及/或視訊攝像機功能之一影像處理器1024、用於提供硬體音訊加速之一音訊處理器1026及提供視訊編碼/解碼加速之一視訊處理器1028;一靜態隨機存取記憶體(SRAM)單元1030;一直接記憶體存取(DMA)單元1032;及一用於耦合至一或多個外部顯示之一顯示單元1040。在某些實施例中,記憶體串流模組107及200可被實施在SoC 1000中。例如,記憶體串流模組107及200可被實施在應用處理器1010及/或核心1002A至N中。
接著參考圖11,依照本發明之實施例描繪系統晶片(SoC)設計之實施例。作為一繪示性實例,SoC 1100被包含在使用者設備(UE)中。在一實施例中,UE指稱藉由終端使用者所使用之任何裝置來通信,諸如手持電話、智慧型手機、平板、超薄筆記型電腦、具有寬頻接合器之 筆記型電腦或任何其他相似的通信裝置。一UE可連接至基地台或節點,其在本質上可以對應至在GSM網路中之行動台(MS)。在某些實施例中,記憶體串流模組107及200可被實施在SoC 1100中。例如,記憶體串流模組107及200可被實施在核心1106及/或核心1107中。
在此,SoC 1100包含兩個核心-1106及1107。類似於上面所述,核心1106及1107可遵照指令集架構,諸如具有Intel® Architecture CoreTM之處理器、一先進微裝置公司(AMD)處理器、MIPS式處理器、一ARM式處理器設計或其之顧客其授權或採用者。核心1106及1107被耦合至快取控制1108(其係與匯流排介面單元1109及L2快取1110相關聯)以與系統1100之其他部分通信。互連1111包含晶片上的互連(諸如IOSF、AMBA或其他上述之互連),其可以實施所述揭示之一或多個態樣。
互連1111提供通信頻道至其他組件(諸如用戶身份模組(SIM)1130)以與SIM卡介接、一開機ROM 1135來保持用於藉由核心1106及1107所執行之開機碼以最佳化及開機SoC 1100、一SDRAM控制器1140以與外部記憶體(例如DRAM 1160)介接、一快閃控制器1145以與非揮發性記憶體(例如快閃1165)介接、一周邊控制1150(例如一系列周圍介面)以與周邊裝置介接、視訊編解碼器1120及視訊介面1125以顯示及接收輸入(例如能可由觸控實現之輸入)、GPU 1115以執行圖形相關運算等等。任何這些介面可併入在本文中所述之實施例之態 樣。
此外,系統繪示說明用於通信之周邊裝置,諸如藍芽模組1170、3G數據機1175、GPS 1180及Wi-Fi 1185。應注意如上述,一UE包含用於通信之無線電。因此,這些周邊通信模組可能不全部被包含。然而,在一UE中,應包含用於外部通信之一些形式的無線電。
圖12繪示在運算系統1200之實例形式中之機器之示意代表圖,在其中可執行一組指令(用於造成機器執行在本文中所述之任何一或多個方法)。在替代實施例中,機器可被連接(例如網路)至在LAN、內部網路、外部網路或網際網路中之機器。機器可在伺服器之容量或在用戶端-伺服器網路環境之用戶端裝置或作為在點對點(或分佈)網路環境中之對等機器操作。該機器可以係個人電腦(PC)、平板電腦、機上盒(STB)、個人數位助理(PDA)、行動電話、網路裝置、伺服器、網路路由、開關或橋接器或任何能夠執行藉由機器所欲採用之指定動作之一組指令(循序或其他方式)之任何機器。再者,當只有繪示說明單一機器時,術語「機器」亦應採用包含單獨地或聯合地執行一組(或多組)指令之任何機器之集合來執行在本文中所述之任何一或多個方法。
運算系統1200包含一處理裝置1202、一主記憶體1204(例如唯讀記憶體(ROM))、快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步DRAM(SDRAM)或DRAM(RDRAM)等等)、一靜態記憶體1206(例如快 閃記憶體、靜態隨機存取記憶體(SRAM)等等)及一資料儲存裝置1218,其經由匯流排1230而彼此通信。在某些實施例中,記憶體串流模組107及200可被實施在系統1200中。例如,記憶體串流模組107及200可被實施在處理裝置1202中及/或被儲存在指令1226中。
處理器裝置1202代表一或多個通用處理裝置(諸如一微處理器、中央處理單元等等)。更特定言之,處理裝置可以係複雜指令集運算(CISC)微處理器、精簡指令集電腦(RISC)微處理器、超長指令字(VLIW)微處理器或實施其他指令集之處理器或實施指令集組合之處理器。處理器裝置1202亦可係一或多個專用處理裝置,諸如一專用積體電路(ASIC)、一場可程式閘極陣列(FPGA)、一數位信號處理器(DSP)、網路處理器等等。在一實施例中,處理裝置1202可包含一個核心或處理核心。處理裝置1202被組態以執行用於執行在本文中所述之操作之處理邏輯1226。在一實施例中,處理裝置1202可以係圖1之運算系統100之部分。此外,運算系統1200可以包含如在本文中所述之其他組件。應瞭解,核心可支援多執行緒(執行兩個或更多個平行組的操作或執行緒),且可以各種不同方式來進行,包含時間分片多執行緒、同步多執行緒(其中單一實體核心對於同步多執行緒之實體核心之各個執行緒可提供一邏輯核心)或其之組合(例如在諸如英特爾®超執行緒技術之後的時間分片取得及解碼及同步多執行緒)。
運算系統1200可進一步包含通信地耦合至網路1220之一網路介面裝置1208。運算系統1200亦可包含一視訊顯示單元1210(例如一液晶顯示器(LCD)或一陰極射線管(CRT))、一文數字輸入裝置1212(例如一鍵盤)、一游標控制裝置1214(例如一滑鼠)、一信號產生裝置1216(例如一揚聲器)或其他周邊裝置。再者,運算系統1200可包含一圖形處理單元1222、一視訊處理單元1228及一音訊處理單元1232。在另一實施例中,運算系統1200可包含一晶片組(未圖示),該晶片組(其指稱積體電路或晶片之群組)被設計用以與處理裝置1202配合作用及控制在處理裝置1202及外部裝置之間的通信。例如,晶片組可以係在母板上之晶片組,其將處理裝置1202連結至極高速裝置(諸如主記憶體1204及圖形控制器)以及將處理裝置1202連接至周邊裝置之低速周邊匯流排(諸如USB、PCI或ISA匯流排)。
資料儲存裝置1218可包含一電腦可讀儲存媒體1224,在電腦可讀儲存媒體1224上係儲存具體實施在本文中所述之功能之任何一或多個方法之軟體1226。軟體1226亦可完全地或至少部分地存在於主記憶體1204作為指令1226及/或在藉由運算系統1200執行其之期間在處理裝置1202中作為處理邏輯1226;主記憶體1204及處理裝置1202亦構成電腦可讀儲存媒體。
電腦可讀儲存媒體1224亦可利用處理裝置1202(諸如相對於圖1所述)被用於儲存指令1226及/或含有呼叫 上面之應用之方法之一軟體庫。儘管在例示性實施例中所展示電腦可讀儲存媒體1224係一單一媒體,然而術語「電腦可讀儲存媒體」應採用包含儲存一或多個指令集之單一媒體或多媒體(例如集中化或分佈資料庫、及/或關聯快取及伺服器)。術語「電腦可讀儲存媒體」亦應採用包含即能夠藉由機器所執行之儲存、編碼或負載指令集之任何媒體,且其使機器執行本發明實施例之任何一或多個方法。術語「電腦可讀儲存媒體」應相應地採用包含固態記憶體及光學及磁性媒體,但不以此為限。
以下實例係關於進一步的實施例。
實例1係一處理器,其包括一記憶體、耦合至該記憶體之一或多個功能單元以及耦合至該記憶體及該功能單元之一或多者之一記憶體串流模組。該記憶體串流模組係可操作以接收與該記憶體相關聯之該複數個操作及接收與該一或多個功能單元相關聯之複數個操作。再者,該記憶體串流模組可判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性、產生與該記憶體相關聯之該複數個操作之第一排序,以及基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序。
在實例2中,於實例1之處理器中,在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指定與該一或多個功能單元 相關聯之該複數個操作的至少一個操作不被執行直到與該記憶體相關聯之該複數個操作中的一個操作已被執行為止。
在實例3中,於實例1-2之任一者之處理器中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及寫入操作,且與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
在實例4中,於實例1-3之任一者之處理器中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存控制方塊,且該控制方塊包括用於該一或多個功能單元之該操作的指令。
在實例5中,於實例1-4之任一者之處理器中,該記憶體係同調記憶體且該一或多個功能單元係非同調(NOCO)功能單元。
在實例6中,於實例1-5之任一者之處理器中,該記憶體串流模組基於該第一排序及該第二排序來進一步執行與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作。
在實例7中,於實例1-6之任一者之處理器中,該記憶體串流模組係進一步用以:從與該記憶體相關聯之該複數個操作識別寫入操作之促進;基於被促進的該寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性;及 基於該第二相依性來更改該第二排序,其中,該第二相依性指定與該一或多個功能單元相關聯之該複數個操作之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
在實例8中,於實例1-7之任一者之處理器中,該第一排序包括依順序的與該記憶體相關聯之該複數個操作且該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
在實例9中,於實例1-8之任一者之處理器中,該第一排序包括與該記憶體相關聯之該複數個操作依一順序,該順序為與該記憶體相關聯之該複數個操作之讀取操作可在與該記憶體相關聯之該複數個操作之寫入操作之前被執行,該寫入操作在程式順序上早於該讀取操作。該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
在實例10中,一種方法包括:藉由處理器之記憶體順序模組來接收與該記憶體相關聯之複數個操作及與該一或多個功能單元相關聯之複數個操作。判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性。產生與該記憶體相關聯之該複數個操作之第一排序,以及基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序。
在實例11中,於實例10之方法中,在與該記憶體相 關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指定與該一或多個功能單元相關聯之該複數個操作的至少一個操作不被執行直到與該記憶體相關聯之該複數個操作中的一個操作已被執行為止。
在實例12中,於實例10-11之任一者之方法中,其中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及寫入操作,且其中,與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
在實例13中,於實例10-12之任一項之方法中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存控制方塊,且該控制方塊包括用於該一或多個功能單元之該操作的指令。
在實例14中,於實例10-13之任一者之方法中,該記憶體係同調記憶體且該一或多個功能單元係非同調(NOCO)功能單元。
在實例15中,於實例10-14之任一者之方法中,該方法進一步包括藉由該記憶體順序模組基於該第一排序及該第二排序來執行與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作。
在實例16中,於實例10-15之任一者之方法中,該方法進一步包括藉由該記憶體順序模組從與該記憶體相關 聯之該複數個操作識別寫入操作之促進,且藉由該記憶體順序模組基於被促進的該寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性。再者,該方法可包括藉由該記憶體順序模組基於該第二相依性來更改該第二排序,其中,該第二相依性指定與該一或多個功能單元相關聯之該複數個操作之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
在實例17中,於實例10-16之任一者之方法中,該第一排序包括依順序的與該記憶體相關聯之該複數個操作且該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
在實例18中,於實例10-17之任一者之方法中,該第一排序包括與該記憶體相關聯之該複數個操作依一順序,該順序為與該記憶體相關聯之該複數個操作之讀取操作可在與該記憶體相關聯之該複數個操作之寫入操作之前被執行,該寫入操作在程式順序上早於該讀取操作,且該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
各個實施例可具有上述結構特徵之不同組合。例如,上述該處理器及方法之所有可選擇的特徵亦可由在本文中所述之一個處理器來實施且在實例中之細節可在一或多個實施例中的任何地方來使用。
實例19係積體電路,其包括處理器核心及記憶體順 序模組。該記憶體順序模組係用以接收與該記憶體相關聯之複數個操作及與該一或多個功能單元相關聯之複數個操作、判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性、及產生與該記憶體相關聯之該複數個操作之第一排序,以及基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序。與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作可基於該第一排序及該第二排序來執行。
在實例20中,於實例19之積體電路中,在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指定與該一或多個功能單元相關聯之該複數個操作的至少一個操作不被執行直到與該記憶體相關聯之該複數個操作中的一個操作已被執行為止。
在實例21中,於實例19-20之任一者的積體電路中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及寫入操作,且與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
在實例22中,於實例19-21之任一項之積體電路中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存 控制方塊,且該控制方塊包括用於該一或多個功能單元之該操作的指令。
在實例23中,於實例19-22之任一者之積體電路中,該記憶體串流模組係進一步用以:從與該記憶體相關聯之該複數個操作識別寫入操作之促進;基於被促進的該寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性;及基於該第二相依性來更改該第二排序。該第二相依性指定與該一或多個功能單元相關聯之該複數個操作之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
各個實施例可具有上述操作特徵之不同組合。例如,上述方法之所有可選擇的特徵亦可針對非暫時性電腦可讀儲存媒體來實施。在實例中之細節可在一或多個實施例中的任何地方使用。
實例24係一種包含指令之非暫時性電腦可讀儲存媒體,該指令當由處理器執行時可造成該處理器執行實例10-18之方法。
實例25係一種系統,其包括系統單晶片(SOC),該系統單晶片包括複數個功能單元、記憶體及耦合至該功能單元之記憶體串流模組,該記憶體串流模組係用以接收與該記憶體相關聯之複數個操作及與該一或多個功能單元相關聯之複數個操作、判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之 間的相依性、產生與該記憶體相關聯之該複數個操作之第一排序,以及基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序。
在實例26中,實例25之系統單晶片(SOC)進一步包括實例1-9之標的物。
在實例27中,於實例25之系統單晶片(SOC)中,該記憶體串流模組進一步可操作以執行實例10-18之標的物。
在實例28中,實例25之系統單晶片(SOC)進一步包括實例19-23之標的物。
實例29係一種設備,其包括用以接收與記憶體相關聯之複數個操作之構件、用以接收與一或多個功能單元相關聯之複數個操作之構件、用以判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性之構件、用以產生與該記憶體相關聯之該複數個操作之第一排序之構件,以及用以基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序之構件。
在實例30中,實例29之設備進一步包括實例1-9及20-23之任一者之標的物。
實例31係一種設備,其包括記憶體串流模組,其中,該記憶體串流模組被組態用以執行實例10-18之任一 項之方法。
在實例32中,實例31之設備進一步包括實例1-9及19-28之任一者之標的物。
雖然本發明已經相對於實施例之有限數量來描述,熟習此項技術者將從其中深入瞭解修改及變化。吾人意欲所附申請專利範圍涵蓋落在本發明之真正的精神及範疇中之所有此修改及變化。
在本文之描述中,闡述許多特定細節(諸如處理器及系統組態之特定類型之實例、特定硬體結構、特定結構及微結構細節、特定暫存器組態、特定指令類型、特定系統組件、特定測量/高度、特定處理器管道階段及操作等等)以提供本發明之徹底瞭解。然而,熟悉此項技術者將顯而易見的係這些特定細節不一定需要採用來實現本發明。在其他實例中,已知的組件或方法(諸如特定及替代處理器架構、用於描述演算法之特定邏輯電路/碼、特定韌體碼、特定互連操作、特定邏輯組態、特定製造技術及材料、特定編譯器實施方案、在編碼中之演算法之特定表示、特定功率下降及閘控技術/邏輯及其他電腦系統之特定的可操作細節)未經詳細描述以避免不必要地混淆本發明。
實施例係參考在特定積體電路(諸如運算平台或微處理器)中之快取記憶體資料壓縮及解壓縮來描述。實施例亦可被應用至積體電路及可程式邏輯裝置之其他類型。例如,所揭示之實施例不限於桌上型電腦系統或可攜式電腦 (諸如Intel® UltrabooksTM電腦)。而且亦可被用於其他裝置,諸如手持裝置、平板、其他薄筆記型電腦、在系統單晶片(SoC)裝置及嵌入式應用。手持裝置之實例包含蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)及手持PC。嵌入式應用通常包含一微控制器、一數位信號處理器(DSP)、一系統單晶片、一網路電腦(NetPC)、機上盒、網路中樞、廣域網路(WAN)開關或任何其他可以執行以下教示之功能及操作的系統。據描述,系統可以係任何電腦或嵌入式系統種類。所揭示之實施例尤其可被用於低端裝置,像是可穿戴裝置(例如手錶)、電子植入物、感測及控制基礎裝置、控制器、監督控制及資料獲取(SCADA)系統等等。再者,在本文中所述之設備、方法及系統不限於實體運算裝置,而亦可與用於能量保存及效率之軟體最佳化有關。如將在以下描述中易見的,在本文中所述之方法、設備及系統之實施例(不論是否參考硬體、韌體、軟體或其之組合)係未來與效能考慮平衡之不可少的「綠色技術」。
儘管在本文中之實施例係參考處理器來描述,但其他實施例係可應用至積體電路及邏輯裝置之其他類型。本發明之實施例之類似技術及教示可以被應用至從較高管道流通量及改善效能之效益之電路或半導體裝置之其他類型。本發明之實施例之教示係可應用至任何執行資料操縱之處理器或機器。然而,本發明不限於執行512位元、256位元、128位元及64位元、32位元或16位元資料操作之處 理器或機器,且可以被應用至任何執行資料之操縱或管理之處理器及機器。此外,在本文中之描述提供實例,且隨附圖式展示用於繪示說明目的之各種實例。然而,當這些實例僅僅意指提供本發明之實施例之實例而不是提供本發明之實施例之所有可行實施方案之窮舉性清單時,這些實例不應被理解為限制涵意。
儘管以下實例以執行單元及邏輯電路之背景內容來描述指令處置及分佈,但本發明之其他實施例可以藉由在機器可讀、有形媒體上之資料或指令儲存來完成,該資料或指令當藉由機器執行時會造成機器執行與本發明之至少一個實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能被具體實施在機器執行指令中。該指令可被用來造成通用或專用處理器(即係程式化指令)來執行本發明之步驟。本發明之實施例可被提供作為可包含機器或電腦可讀媒體之電腦程式產品或軟體,機器或電腦可讀媒體可具有儲存在其上之可被用於為電腦(或其他電子裝置)設計程式之指令以依照本發明之實施例執行一或多個操作。此外,本發明之實施例之操作可藉由含有用於執行操作之固定功能邏輯之特定硬體組件或程式化電腦組件及固定功能硬體組件之任何組合來執行。
用於執行本發明之實施例之程式邏輯之指令可以被儲存在系統中之記憶體中(諸如DRAM、快取、快閃記憶體或其他儲存)。再者,指令可以經由網路或經由其他電腦可讀媒體而被分佈。因此,機器可讀媒體可包含任何機 構,該機構用於儲存或傳輸藉由機器(例如電腦)、軟碟、光碟、唯讀記憶體光碟機(CD-ROM)及磁性光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除程式化唯讀記憶體(EPROM)、電子抹除式可複寫唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或有形的形成可讀的資訊,但不以此為限,機器可讀儲存體可經由電、光學、聲音或其他形式的傳播信號(例如載波、紅外線信號、數位信號等等)用於經由網際網路傳輸資訊。因此,電腦可讀媒體包含任何適於儲存或傳輸在藉由機器(例如電腦)所形成可讀形式中之電子指令或資訊之有形機器可讀媒體之類型。
一設計可能會經歷各種階段(從產生到模擬到製造)。代表一設計之資料可表示以若干方式之設計。首先,如在模擬中有用,硬體可表示使用一硬體描述語言或另一種功能描述語言。此外,具有邏輯及/或電晶體閘極之一電路層級模型可在設計程序之一些階段被生產。再者,大部分的設計(在一些階段中)達到表示在硬體模型中之各種裝置之實體安排之層級資料。在使用習知的半導體製造技術的情況中,表示硬體模型之資料可以係指定在用於遮罩用來生產積體電路之不同遮罩層上之各種特徵之存在或不存在的資料。在任何設計之表示中,該資料可以任何機器可讀媒體的形式被儲存。記憶體或磁性或光學儲存器(諸如磁碟)可以係機器可讀媒體用以儲存經由光波或電波調變來傳輸資訊或以其他方式產生來傳輸此資訊。 當傳輸指示或負載編碼或設計之電載波(在執行電子信號複製、緩衝或再傳輸之程度上)時,一新的複本被製造。因此,通信業者或網路業者可至少暫時地儲存有形的機器可讀媒體、物品(諸如將資訊編碼至載波中、具體實施本發明之實施例之技術)。
在本文中所用之模組指稱硬體、軟體及/或韌體之任何組合。作為一實例,模組包含與非暫時性的媒體相關聯之硬體(諸如一微控制器)來儲存適合藉由微控制器所執行之編碼。因此,在一實施例中,所謂一模組係指稱硬體,其係特別地組態以識別及/或執行被保持在一非暫時性媒體上之編碼。再者,在另一實施例中,一模組之使用指稱該非暫時性媒體包含編碼,其係特別地適合藉由執行預定操作的微控制器所執行。且可如此推斷,在又另一實施例中,術語模組(在此實例中)可指稱為控制器及非暫時性媒體之組合。模組邊界通常被繪示為一般地獨立變化及且可能重疊。例如,一第一及一第二模組可共用硬體、軟體、韌體或其之組合,同時可能保留一些獨立的硬體、軟體或韌體。在一實施例中,術語邏輯之使用包含硬體(諸如電晶體、暫存器)或其他硬體(諸如可程式邏輯裝置)。
在一實施例中,使用術語「組態」係指稱安排、放在一起、製造、提供銷售、進口及/或設計設備、硬體、邏輯或元件來執行指定的或確定的任務。在此實例中,一設備或其之元件(其未在操作中)仍「組態」以執行一指定 任務,若其被設計、耦合及/或互連來執行該指定任務。僅作為繪示說明實例,一邏輯閘在操作期間可提供0或1。但一邏輯閘「組態」以提供一賦能信號至一時脈不會包含每個可能可提供1或0之邏輯閘。反而,該邏輯閘係以一些方式之耦合,在操作期間該1或0輸出係用以啟用該時脈。應再次注意,術語「組態」之使用不需要操作,而是集中在設備、硬體及/或元件之潛在狀態上,其中在設備、硬體及/或元件之潛在狀態被設計成在設備、硬體及/或元件被操作時執行一特定任務。
再者,在一實施例中「至」、「能夠」及/或「可操作以」片語之使用指稱一些設備、邏輯、硬體及/或元件以能夠以一指定方式使用設備、邏輯、硬體及/或元件之方式被設計。上述應注意的是,在一實施例中「能夠」或「可操作以」之使用指稱設備、邏輯、硬體及/或元件之潛在狀態,其中設備、邏輯、硬體及/或元件不被操作而是以能夠以一指定方式使用設備之方式被設計。
在本文中所用之值包含一數字、一狀態、一邏輯狀態或一二進制邏輯狀態之任何已知的表示。通常,邏輯層級、邏輯值或邏輯值之使用亦被稱之為1及0,其僅代表二進制邏輯狀態。例如,1指稱一高邏輯層級且0指稱一低邏輯層級。在一實施例中,一儲存元件(諸如電晶體或快閃元件)能夠保持單一邏輯值或多邏輯值。然而,已在電腦系統中之其他表示值亦可被使用。例如,十進制數字10亦可被表示為二進制值1010及十六進制字母A。因 此,一值包含任何能夠保持在電腦系統中之資訊之任何表示。
再者,狀態可藉由值或部分值來表示。作為一實例,第一值(諸如邏輯1)可表示預設或初始狀態,而第二值(諸如邏輯0)可表示一非預設狀態。此外,在一實施例中,術語重設及設定分別指稱一預設及一更新值或狀態。例如,一預設值可能包含一高邏輯值(即重設),而一更新值可能包含一低邏輯值(即設定)。應注意,值之任何組合可被使用來表示任何數字狀態。
上述闡述之方法、硬體、軟體、韌體或編碼之實施例可經由儲存在可藉由處理元件來執行之機器可存取、機器可讀、電腦可存取或電腦可讀媒體上之指令或編碼被實施。非暫時性機器可存取/可讀媒體包含任何提供(即,儲存及/或傳輸)以藉由機器(諸如電腦或電子系統)之可讀形式之資訊之機構。例如,一非暫時性機器可存取媒體包含隨機存取記憶體(RAM)(諸如靜態RAM(SRAM)或動態RAM(DRAM));ROM;磁性或光學儲存媒體;快閃記憶體裝置;電子儲存裝置;光學儲存裝置;聲音儲存裝置;其他用於保持接收短暫(傳播)信號(例如載波、紅外線信號、數位信號)之資訊之儲存裝置形式;等等,其被區分成可從其接收資訊之非暫時性媒體。
用於執行本發明之實施例之程式邏輯之指令可以被儲存在系統中之記憶體中(諸如DRAM、快取、快閃記憶體 或其他儲存)。再者,指令可以經由網路或經由其他電腦可讀媒體被分佈。因此,機器可讀媒體可包含任何機構,該機構用於儲存或傳輸藉由機器(例如電腦)、軟碟、光碟、唯讀記憶體光碟機(CD-ROM)及磁性光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除程式化唯讀記憶體(EPROM)、電子抹除式可複寫唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或有形的形成可讀的資訊,但不以此為限,機器可讀儲存體可經由電、光學、聲音或其他形式的傳播信號(例如載波、紅外線信號、數位信號等等)用於經由網際網路傳輸之資訊。因此,電腦可讀媒體包含任何適於儲存或傳輸呈可由機器(例如電腦)讀取之形式之電子指令或資訊之有形機器可讀媒體之類型。
參考整篇本說明書之「一實施例」意謂結合被包含在本發明之至少一個實施例中之實施例所述之一特定特徵、結構或特性。因此,在整篇說明書之各個段落中之「在一實施例中」片語出現不一定全部指稱相同實施例。再者,特定特徵、結構或特性可在一或多個實施例中以任何適當的方式被組合。
在先前說明書中,已經參考特定例示性實施例來進行詳細說明。然而,應可瞭解的是,各種不同修改及改變可在不違背在隨付申請專利範圍中所闡述之本發明之廣泛精神及範圍下來實行。因此,說明書及圖式應被視為係繪示說明涵義而不是限制涵義。再者,先前使用之實施例及其 他例示性語言不一定指稱相同實施例或相同實例,但可指稱不同及有區別的實施例;以及可能相同的實施例。
詳細說明之某些部分可根據電腦記憶體中之資料位元上的演算法及符號表示來表示。這些演算法描述及表示係藉由在熟悉資料處理技術之人士以最有效地傳達其實質工作至其他技術領域之手段而構建。演算法在此且通常被視為係導致所需之結果之前後一致順序的操作。該操作係那些需要實體數量之實體操縱。通常(儘管不是必要的),這些數量採用能夠被儲存、轉換、組合、比較及其他方式操作之電子或磁性信號之形式。在時間上已經證明(主要的原因係一般使用)可將這些信號指稱為位元、植值、元件、符號、特性、術語、數字等等。在本文中所述之方塊可以係硬體、軟體、韌體或其之組合。
然而,應記住的是,所有這些及相似術語係與適當的實體數量相關聯且僅僅係應用於這些數量之方便標記。除非特別說明,否則如同上述描述所表示,可以理解的是,使用術語(諸如「定義」、「接收」、「判定」、「發佈」、「連結」、「關聯」、「獲取」、「驗證」、「禁止」、「執行」、「請求」、「通信」等等)之整個描述、討論係指稱運算系統或相似電子運算裝置之動作及程序,該電子運算裝置可將表示為在運算系統暫存器及記憶體中之實體(例如電子)數量之資料操縱及轉換至類似於表示為在運算系統記憶體或暫存器或其他此資訊儲存、傳輸或顯示裝置中之實體數量之其他資料。
字詞「實例」或「例示性」在本文中被使用以意欲當作實例或繪示說明。在本文中所述之任何態樣或設計作為「實例」或「例示性」不一定被理解為係較佳的或先進的其他態樣或設計。然而,字詞「實例」或「例示性」意指以具體方式呈現之本發明概念。如本申請案中所使用,術語「或」係意指包含性的「或」而不是排除性的「或」。亦即,除非有指定其方式或從上下文清處可見,否則「X包含A或B」意指表示任何本質包含性排列。亦即,若X包含A;X包含B;或X包含A及B,則「X包含A或B」係滿足任何先前之例項。此外,除非另有指定或從上下文清楚可見係針對單數形式,否則在此應用及隨附申請專利範圍中所使用之冠詞「一」大體上應被理解為表示「一或多個」。再者,除非有如此描述,否則在整篇中之術語「一實施例」或「一實施」或「一實施方案」或「一個實施方案」意指相同實施例或實施方案。再者,在本文中所用之術語「第一」、「第二」、「第三」、「第四」等等係意指作為區分不同元件之中之標記且不一定具有依照其數字指定之順序意義。
200‧‧‧記憶體串流模組
210‧‧‧同調子模組
220‧‧‧非同調子模組
230‧‧‧同調串流識別符子模組
240‧‧‧非同調串流識別符子模組
250‧‧‧相依性子模組
260‧‧‧促進子模組

Claims (23)

  1. 一種處理器,包括:記憶體;耦合至該記憶體之一或多個功能單元;及耦合至該記憶體及該一或多個功能單元之記憶體串流模組,該記憶體串流模組用以:接收與該記憶體相關聯的複數個操作;接收與該一或多個功能單元相關聯的複數個操作;判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性;產生與該記憶體相關聯之該複數個操作之第一排序;及基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序而產生與該一或多個功能單元相關聯之該複數個操作之第二排序。
  2. 如申請專利範圍第1項之處理器,其中,在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指明與該一或多個功能單元相關聯之該複數個操作的其中至少一個操作將不被執行直到與該記憶體相關聯之該複數個操作的其中一個操作已被執行為止。
  3. 如申請專利範圍第1項之處理器,其中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及 寫入操作,且其中,與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
  4. 如申請專利範圍第3項之處理器,其中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存控制方塊,且其中,該控制方塊包括用於該一或多個功能單元之該操作的指令。
  5. 如申請專利範圍第1項之處理器,其中,該記憶體係同調記憶體且該一或多個功能單元係非同調(NOCO)功能單元。
  6. 如申請專利範圍第1項之處理器,其中,該記憶體串流模組係進一步用以:基於該第一排序及該第二排序來執行與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作。
  7. 如申請專利範圍第1項之處理器,其中,該記憶體串流模組係進一步用以:從與該記憶體相關聯之該複數個操作識別寫入操作之促進;基於被促進的該寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性;及基於該第二相依性來更改該第二排序,其中,該第二相依性指定與該一或多個功能單元相關聯之該複數個操作 之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
  8. 如申請專利範圍第1項之處理器,其中,該第一排序包括依順序的與該記憶體相關聯之該複數個操作且該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
  9. 如申請專利範圍第1項之處理器,其中,該第一排序包括與該記憶體相關聯之該複數個操作依一順序,該順序為與該記憶體相關聯之該複數個操作之讀取操作可在與該記憶體相關聯之該複數個操作之寫入操作之前被執行,該寫入操作在程式順序上早於該讀取操作,且其中,該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
  10. 一種方法,包括:藉由處理器之記憶體串流模組來接收與該記憶體相關聯之複數個操作;藉由該記憶體串流模組來接收與該一或多個功能單元相關聯之複數個操作;藉由該記憶體串流模組來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性;藉由該記憶體串流模組來產生與該記憶體相關聯之該複數個操作之第一排序;及藉由該記憶體串流模組基於該相依性及與該記憶體相 關聯之該複數個操作之該第一排序來產生與該一或多個功能單元相關聯之該複數個操作之第二排序。
  11. 如申請專利範圍第10項之方法,其中,在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指定與該一或多個功能單元相關聯之該複數個操作的其中至少一個操作不被執行直到與該記憶體相關聯之該複數個操作的其中一個操作已被執行為止。
  12. 如申請專利範圍第10項之方法,其中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及寫入操作,且其中,與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
  13. 如申請專利範圍第12項之方法,其中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存控制方塊,且其中,該控制方塊包括用於該一或多個功能單元之該操作的指令。
  14. 如申請專利範圍第10項之方法,其中,該記憶體係同調記憶體且該一或多個功能單元係非同調(NOCO)功能單元。
  15. 如申請專利範圍第10項之方法,其進一步包括:藉由該記憶體串流模組基於該第一排序及該第二排序來執行與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作。
  16. 如申請專利範圍第10項之方法,其進一步包括:藉由該記憶體串流模組而從與該記憶體相關聯之該複數個操作識別寫入操作之促進;藉由該記憶體串流模組基於被促進的該寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性;及藉由該記憶體串流模組基於該第二相依性來更改該第二排序,其中,該第二相依性指定與該一或多個功能單元相關聯之該複數個操作之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
  17. 如申請專利範圍第10項之方法,其中,該第一排序包括依順序的與該記憶體相關聯之該複數個操作且該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
  18. 如申請專利範圍第10項之方法,其中,該第一排序包括與該記憶體相關聯之該複數個操作依一順序,該順序為與該記憶體相關聯之該複數個操作之讀取操作可在與該記憶體相關聯之該複數個操作之寫入操作之前被執行,該寫入操作在程式順序上早於該讀取操作,且其中,該第二排序包括依順序的與該一或多個功能單元相關聯之該複數個操作。
  19. 一種積體電路,包括:處理器核心;及記憶體串流模組,其與該處理器核心相關聯且用以: 接收與該記憶體相關聯之複數個操作;接收與一或多個功能單元相關聯之複數個操作;判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的相依性;產生與該記憶體相關聯之該複數個操作之第一排序;基於該相依性及與該記憶體相關聯之該複數個操作之該第一排序而產生與該一或多個功能單元相關聯之該複數個操作之第二排序;及基於該第一排序及該第二排序來執行與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作。
  20. 如申請專利範圍第19項之積體電路,其中,在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的該相依性係指定與該一或多個功能單元相關聯之該複數個操作的其中至少一個操作不被執行直到與該記憶體相關聯之該複數個操作的其中一個操作已被執行為止。
  21. 如申請專利範圍第19項之積體電路,其中,與該記憶體相關聯之該複數個操作包括與該記憶體相關聯之讀取及寫入操作,且其中,與該一或多個功能單元相關聯之該複數個操作包括觸發器,用以執行該一或多個功能單元之其中至少一個功能單元以對儲存在該記憶體中的資料操作。
  22. 如申請專利範圍第21項之積體電路,其中,與該記憶體相關聯之該寫入操作係在該記憶體中儲存控制方塊,且其中,該控制方塊包括用於該一或多個功能單元之該操作的指令。
  23. 如申請專利範圍第19項之積體電路,其中,該記憶體串流模組係進一步用以:從與該記憶體相關聯之該複數個操作識別寫入操作之促進;基於該促進的寫入操作來判定在與該記憶體相關聯之該複數個操作及與該一或多個功能單元相關聯之該複數個操作之間的第二相依性;及基於該第二相依性來更改該第二排序,其中,該第二相依性指定與該一或多個功能單元相關聯之該複數個操作之其中至少一個操作不被執行直到被促進的該寫入操作已被執行為止。
TW104118321A 2014-07-09 2015-06-05 用於記憶體定序的方法、處理器以及積體電路 TWI567555B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/327,109 US9875185B2 (en) 2014-07-09 2014-07-09 Memory sequencing with coherent and non-coherent sub-systems

Publications (2)

Publication Number Publication Date
TW201617889A true TW201617889A (zh) 2016-05-16
TWI567555B TWI567555B (zh) 2017-01-21

Family

ID=54867007

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104118321A TWI567555B (zh) 2014-07-09 2015-06-05 用於記憶體定序的方法、處理器以及積體電路

Country Status (4)

Country Link
US (2) US9875185B2 (zh)
CN (1) CN105320494B (zh)
DE (1) DE102015007423A1 (zh)
TW (1) TWI567555B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US9886934B2 (en) * 2014-12-24 2018-02-06 Intel Corporation Ordering mechanism for offload graphics scheduling
IT202000016441A1 (it) * 2020-07-07 2022-01-07 Sk Hynix Inc Comparatore di risorse di ridondanza per una architettura di bus, architettura di bus per un dispositivo di memoria che implementa un metodo migliorato di confronto e corrispondente metodo di confronto

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317813B1 (en) * 1999-05-18 2001-11-13 Silicon Integrated Systems Corp. Method for arbitrating multiple memory access requests in a unified memory architecture via a non unified memory controller
US20080288178A1 (en) * 2001-08-24 2008-11-20 Applera Corporation Sequencing system with memory
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US6961821B2 (en) 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
DE102004031497A1 (de) * 2004-06-30 2006-05-18 Schaeffler Kg Profilschienenführung
US20060026371A1 (en) 2004-07-30 2006-02-02 Chrysos George Z Method and apparatus for implementing memory order models with order vectors
US7623365B2 (en) * 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8086806B2 (en) * 2008-03-24 2011-12-27 Nvidia Corporation Systems and methods for coalescing memory accesses of parallel threads
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
CN101916227B (zh) 2010-08-13 2015-04-01 中兴通讯股份有限公司 一种rldram sio存储器访问控制方法和装置
US9453197B2 (en) * 2010-12-16 2016-09-27 General Electric Company Methods of making cell carrier
CN102834807B (zh) * 2011-04-18 2015-09-09 华为技术有限公司 多处理器系统负载均衡的方法和装置
US8589638B2 (en) * 2011-07-19 2013-11-19 Arm Limited Terminating barriers in streams of access requests to a data store while maintaining data consistency
KR20150010717A (ko) 2012-04-27 2015-01-28 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 메모리 디바이스의 보호
US9003123B2 (en) * 2012-06-26 2015-04-07 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems

Also Published As

Publication number Publication date
TWI567555B (zh) 2017-01-21
US20160011977A1 (en) 2016-01-14
CN105320494A (zh) 2016-02-10
DE102015007423A1 (de) 2016-01-14
US9875185B2 (en) 2018-01-23
US20180173628A1 (en) 2018-06-21
US10261904B2 (en) 2019-04-16
CN105320494B (zh) 2018-10-26

Similar Documents

Publication Publication Date Title
US9292449B2 (en) Cache memory data compression and decompression
TWI617979B (zh) 提供向量水平比較功能之方法與系統及其處理器與機器可讀取媒體
CN108351811B (zh) 调度高度并行的应用
US9753666B2 (en) Efficient data compression for solid-state memory
US10635447B2 (en) Scatter reduction instruction
TWI715678B (zh) 用以執行鍵值查找指令之處理器與鍵值查找方法
TWI715669B (zh) 仿真的訊息通知中斷(msi)中斷處置
TW201723855A (zh) 用於快取控制操作之指令及邏輯
US9626299B2 (en) Changing a hash function based on a conflict ratio associated with cache sets
TWI587127B (zh) 使用具有位元組等級粒度緩衝器溢位檢測之記憶體錯誤檢測架構的處理器和系統單晶片
TW201732544A (zh) 聚合分散指令
US20190163630A1 (en) Tracking cache line consumption
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
US10691454B2 (en) Conflict mask generation
TWI567555B (zh) 用於記憶體定序的方法、處理器以及積體電路
TWI733714B (zh) 用以執行共軛置換指令的處理裝置
US9875187B2 (en) Interruption of a page miss handler
TWI751990B (zh) 衝突罩生成
TW201732563A (zh) 分散縮減指令
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯

Legal Events

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