TW201346831A - 察覺生產者—消費者指令的記憶體階層之設備及方法 - Google Patents
察覺生產者—消費者指令的記憶體階層之設備及方法 Download PDFInfo
- Publication number
- TW201346831A TW201346831A TW101146624A TW101146624A TW201346831A TW 201346831 A TW201346831 A TW 201346831A TW 101146624 A TW101146624 A TW 101146624A TW 101146624 A TW101146624 A TW 101146624A TW 201346831 A TW201346831 A TW 201346831A
- Authority
- TW
- Taiwan
- Prior art keywords
- processing unit
- instruction
- data
- core
- cache memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 66
- 238000013507 mapping Methods 0.000 claims 3
- 230000004044 response Effects 0.000 claims 3
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/006—Details of the interface to the display terminal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述一種設備及方法,用於有效地從中央處理單元(CPU)之核心傳送資料給繪圖處理單元(GPU)。例如,方法的一實施例包含:將資料寫入該中央處理單元之該核心內的緩衝器,直至指定的資料量都已被寫入;在偵測該指定的資料量已被寫入後,立即回應地產生逐出循環,該逐出循環致使資料從該緩衝器傳送至可被該核心與該繪圖處理單元兩者存取的快取記憶體;設定用來指示該快取記憶體內之資料可用的指示給該繪圖處理單元;以及,在該繪圖處理單元偵測該指示之後,在接收來自該繪圖處理單元的讀取信號之後,立即從該快取記憶體提供該資料給該繪圖處理單元。
Description
一般言之,本發明與電腦處理器的領域有關。更特定地說,本發明與用於實施記憶體階層察覺生產者-消費者指令的設備及方法有關。
在一模型中,CPU101與GPU102以生產者-消費者的模式工作,CPU做為生產者及GPU做為消費者,它們之間的資料傳送係按圖1之說明來實施。在說明的例子中,CPU包括多階快取記憶體層級,包括1階(L1)快取記憶體110(有時稱為高階快取記憶體(Upper Level Cache;ULC);2階(L2)快取記憶體111(有時稱為中階快取記憶體(Mid-Level Cache;MLC);3階(L3)快取記憶體112(有時稱為低階快取記憶體(Lower Level Cache;LLC)。CPU101與GPU102兩者皆耦接至L3快取記憶體與主記憶體100。
為提供資料給GPU,CPU實施例對主記憶體的非暫時性儲存。就非暫時性儲存而論,係儲存預期CPU於近期內不需使用資料。因此,該儲存係直接對主記憶體而非階層中的快取記憶體其中之一。非暫時性儲存例如可使用無法快取臆測寫入組合(Uncacheable Speculative Write Combining;USWC)記憶體類型或非暫時性儲存指令(例如,MovNT儲存指令)來實施。使用USWC操作,資料
不會被快取,但CPU在將資料一路上傳送到主記憶體之前,可先在CPU內的內部寫入組合(Write Combining;WC)緩衝器內組合資料。USWC操作也允許以亂序列的方式從記憶體讀取資料。
本質上,非暫時性儲存係弱序,意指可偏離程式執行中所指定之順序的順序來存取資料。例如,程式可指定操作順序為“儲存A並接著儲存B”,但在操作中,CPU可儲存B再接著儲存A。由於非暫時性儲存的此特性,因此需要柵欄指令(Fence instruction)來強迫所有的儲存都要按照每一個程式執行的順序。柵欄指令對發出之柵欄指令之前與之後的記憶體操作強加定序限制,藉以定序來自CPU的所有弱序指令。
在資料成功地寫入主記憶體並使用柵欄指令定序之後,柵欄生產者輸入旗標以通知消費者(在本例中為GPU)資料已備妥。消費者藉由輪詢或諸如中斷的其它技術察覺到旗標已被寫入,並產生無序的資料提取異動(讀取)以讀取資料。
前述方法受到低潛時與低帶寬的限制,因為CPU的儲存操作與GPU的讀取操作必須一路到達主記憶體100。因此,CPU與GPU之間需要一更有效率的機制來傳送資料。
在以下的描述中,基於解釋之目的,為了提供對以下
所描述之本發明之實施例的徹底瞭解,陳述了諸多特定的細節。不過,熟悉此方面技術之人士應明瞭,沒有這些特定細節中的某些細節,照樣能施行本發明的實施例。在其它例中,習知的結構與裝置以方塊圖的形式顯示以避免模糊了本發明之實施例之基本的原理。
在一實施例中,並非如習知的實施,將資料一路儲存到主記憶體,而是使用CPU與GPU兩者共同之最高階的快取記憶體來做資料交換。例如,如果CPU與GPU兩者皆對3階(L3)快取記憶體(有時也稱為低階快取記憶體)做讀/寫存取,則L3快取記憶體被用來交換資料。不過,本發明的基本原理並不限於使用任何特定層級的快取記憶體來交換資料。
如圖2的圖示說明,本發明的一實施例係在多核中央處理單元(CPU)201的環境中實施。為簡化,本發明之此實施例的細節以單核心211來顯示,但基本原理一體適用於CPU 201的所有核心(例如,核心1 219)及/或單核心CPU。CPU-GPU生產者-消費者邏輯211實施本文所描述之用來與繪圖處理單元(GPU)220交換資料的技術。在操作中,CPU-GPU生產者-消費者邏輯211在一開始將要被交換的資料寫到寫入組合緩衝器210。在快取線中工作的快取記憶體(諸如L1、L2、及L3快取記憶體分別是212、213、及214)為固定大小(在一特定實施例中為64位元組),然而典型的儲存操作,其大小可從4位元組改變到64位元組。在一實施例中,寫入組合緩衝器210被
用來組合多次的儲存,直到整條快取線被填滿,且接著資料在各快取層級間移動。因此,在圖2所示的例子中,資料被寫到寫入組合緩衝器210,直到等於整條快取線所能儲存的量。接著產生逐出循環,且資料從寫入組合緩衝器210移到L2快取記憶體213,並接著從L2快取記憶體移到L3快取記憶體。不過,對照於習知的實施,來自CPU-GPU生產者-消費者邏輯211的信號指示L3快取記憶體214保留住資料的複本以用於與GPU的資料交換(而非將資料一路寫到主記憶體)。
接著,CPU-GPU生產者-消費者邏輯211寫一旗標225來指示資料已備妥供傳送。在一實施例中,旗標225為單個位元(例如,以“1”指示資料已備妥於L3快取記憶體)。GPU 220經由周期性的輪詢或中斷來讀取旗標225以決定資料已備妥。GPU 220一旦得知資料已備妥於L3快取記憶體(或與CPU 201共享之其它最高階的共同快取層級)即讀取資料。
按照本發明一實施例之方法圖示說明於圖3。該方法可在圖2所示之架構的環境中實施,但不限於任何特定的架構。
在步驟301,將資料儲存到位在CPU內的寫入組合緩衝器。如前所述,等於完整快取線的大量資料可被儲存在寫入組合緩衝器內。在步驟302,緩衝器一旦被裝滿(例如,等於快取線的資料量),在步驟303產生逐出循環。逐出循環一直持續到資料被儲存到在步驟304所決定之
CPU與GPU兩者共用的快取層級內。在步驟305,設定旗標來指示資料可供GPU使用,及在步驟306,GPU從快取記憶體讀取資料。
在一實施例中,資料被傳送給寫入組合緩衝器,並接著使用特定的指令將資料逐到L3快取記憶體,該特定的指令在本文中稱為MovNonAllocate(MovNA)指令。如圖4a所指示,在一實施例中,可如箭頭所指示,各個MovNA指令互相交錯並與其它的寫回(write-back;WB)儲存指令交錯(即允許寫入旁通)藉以增進性能(即,記憶體定序語意愈弱,系統可執行的愈快)。在此實施中,當需要使用柵欄指令時,可由使用者強制強定序。如熟悉此方面技術之人士所瞭解,柵欄指令係指令類的某類型柵欄,其致使中央處理單元(CPU)或編譯器對發出柵欄指令之前與之後的記憶體操作加諸定序限制。
在另一實施中,如圖4b的說明,各個MovNA指令互相交錯,但不與其它的寫回(write-back;WB)儲存指令交錯(即不允許寫入旁通),如箭頭上的X所指示。雖然此施行降低了性能(即,記憶體定序語意愈強,系統執行的愈慢),但其不需要使用者發出柵欄指令以確保正確的指令定序。
現請參閱圖5,圖中顯示按照本發明一實施例之另一電腦系統400的方塊圖。系統400包括一或多個處理元件410、415,其耦接至繪圖記憶體控制器集線器(GMCH)420。額外處理元件415的選用性質在圖5中以虛線指
示。
每一個處理元件可以是單核心或者也可以包括多核心。處理元件除了處理核心之外,也可選擇性地包括其它的晶粒上元件,諸如整合式記憶體控制器及/或整合式I/O控制邏輯。此外,關於至少一實施例,處理元件的核心可以是多執行緒,每個核心可包括一個以上的硬體執行緒環境。
圖5圖示說明GMCH 420可耦接至記憶體440,記憶體例如是動態隨機存取記憶體(DRAM)。關於至少一實施例,DRAM與非揮發性快取記憶體有關。
GMCH 420可以是晶片組或晶片組的一部分。GMCH 420可與處理器410、415通信,並控制處理器410、415與記憶體440之間的互動。GMCH 420也可做為處理器410、415與系統400之其它元件之間的加速匯流排介面。關於至少一實施例,GMCH 420經由諸如前端匯流排(frontside bus;FSB)495的多點匯流排與處理器410、415通信。
此外,GMCH 420耦接至顯示器440(諸如平面顯示器)。GMCH 420可包括整合式繪圖加速器。GMCH 420進一步耦接至輸入/輸出(I/O)控制器集線器(I/O controller hub;ICH)450,其用來將各種不同的周邊裝置耦接至系統400。圖4之實施例中顯示的例子為外部繪圖裝置460連同另一周邊裝置470,前者可以是耦接至ICH 450之分離的繪圖裝置。
另者,在系統400中也可存在額外或不同的處理元件。例如,額外的處理元件415可包括與處理器410相同的額外處理器、異質於或不對稱於處理器410的額外處理器、加速器(諸如,例如,繪圖加速器或數位信號處理器(DSP)單元)、現瑒可程式閘陣列、或任何其它的處理元件。就優點之標準的範圍而論,實體資源410、415之間可有各種差異,包括架構、微架構、熱、電力消耗特徵、諸如此類。這些差異可有效地表現處理元件410、415之間它們本身的非對稱及異質性。關於至少一實施例,各種不同的處理元件410、415可存在於相同的晶粒封裝內。
圖6係圖示說明可用於本發明某些實施例之另一例示性資料處理系統的方塊圖。例如,資料處理系統500可以是手持式電腦、個人數位助理(PDA)、行動電話、可攜式遊戲系統、可攜式多媒體播放機、包括行動電話、多媒體播放機、及/或遊戯系統的平板式或手持式計算裝置。如其它例子,資料處理系統500可以是網路電腦或在另一裝置中的內嵌式處理裝置。
按照本發明的一實施例,資料處理系統500的例示性架構可用於上述的行動裝置。資料處理系統500包括處理系統520,其可包括一或多個微處理器及/或積體電路上的系統。處理系統520與記憶體510、電源525(其包括一或多個電池)、音頻輸入/輸出540、顯示控制器及顯示裝置560、選用的輸入/輸出550、輸入裝置570、及無線收
發器530。須明瞭,未顯示於圖5中的額外組件,在本發明的某些實施例中也可以是資料處理系統500的一部分,且在本發明的某些實施例中,也可使用比圖5中所顯示更少的組件。此外,須明瞭,也可如習知技術使用一或多個匯流排(圖5中未顯示)來互連各種組件。
記憶體510可儲存供資料處理系統500執行的資料及/或程式。音頻輸入/輸出540例如可包括麥克風及/或喇叭以播放音樂及/或經由喇叭與麥克風提供電話功能。顯示控制器與顯示裝置560可包括圖形使用者介面(graphical user interface;GUI)。無線(例如,RF)收發器530(例如,WiFi收發器、紅外線收發器、藍牙收發器、無線行動電話收發器等)可用來與其它資料處理系統通信。一或多個輸入裝置570允許使用者提供輸入給系統。這些輸入裝置可以是小鍵盤、鍵盤、觸控螢幕、多點觸控面板等。選用的其它輸入/輸出550可以是用於靠接座的連接器。
本發明的其它實施例可以在行動電話與呼叫器(例如,其中,軟體係內嵌在微晶片內)、手持式計算裝置(例如,個人數位助理、智慧型電話)、及/或按鍵式電話上實施。不過,須注意,本發明的基本原理並不限於任何特定類型的通信裝置或通信媒體。
本發明的實施例可包括以上描述的各種步驟。該等步驟可具體化於可用來致使通用或特殊用途處理器實施這些步驟的機器可執行指令。或者,可藉由包含用來實施該等
步驟之硬線邏輯的特定硬體組件,或藉由被程式化的電腦組件及客製之硬體組件的任何組合來實施這些步驟。
本發明的元件也可提供為電腦程式產品,其可包括機器可讀取媒體,其上儲存有可用來程式電腦(或其它電子裝置)以實施處理的指令。機器可讀取媒體可包括但不限於,軟式磁碟機、光碟、CD-ROM、及磁-光碟、ROM、RAM、EPROM、EEPROM、磁或光卡、傳播媒體或適合用來儲存電子指令之其它類型的媒體/機器可讀取媒體。例如,本發明可被當成電腦程式產品下載,其中,程式可藉由具體化於載波或其它傳播媒體內的資料信號經由通信鏈結(例如,數據機或網路連接)從遠端電腦(例如,伺服器)傳送到請求的電腦(例如,客戶)。
基於解釋之目的,為了提供對本發明之徹底的瞭解,整個詳細的描述陳述了諸多特定的細節。不過,熟悉此方面技術之人士可明瞭,沒有這些特定細節中的某些細節照樣可實行本發明。在某些例中,為了避免模糊了本發明的主題,未描述習知結構及功能的詳盡細節。因此,本發明的範圍與精神應由以下的申請專利範圍來斷定。
100‧‧‧主記憶體
101‧‧‧中央處理單元
102‧‧‧繪圖處理單元
110‧‧‧1階快取記憶體
111‧‧‧2階快取記憶體
112‧‧‧3階快取記憶體
200‧‧‧主記憶體
201‧‧‧中央處理單元
210‧‧‧寫入組合緩衝器
211‧‧‧核心
212‧‧‧1階快取記憶體
213‧‧‧2階快取記憶體
214‧‧‧3階快取記憶體
219‧‧‧核心
220‧‧‧繪圖處理單元
225‧‧‧旗標
400‧‧‧電腦系統
410‧‧‧處理元件
415‧‧‧處理元件
420‧‧‧繪圖記憶體控制器集線器
440‧‧‧顯示器
450‧‧‧輸入/輸出控制器集線器
460‧‧‧外部繪圖裝置
470‧‧‧周邊裝置
440‧‧‧記憶體
500‧‧‧資料處理系統
510‧‧‧記憶體
520‧‧‧處理系統
525‧‧‧電源
530‧‧‧無線收發器
540‧‧‧音頻輸入/輸出
550‧‧‧選用的輸入/輸出裝置
560‧‧‧顯示器器控制器及/或顯示裝置
570‧‧‧輸入裝置
從以上詳細的描述並結合以下的圖式,可得到對本發明更佳的瞭解,其中:圖1說明用於在CPU與GPU之間交換資料的習知技術處理器架構。
圖2說明按照本發明一實施例用於在CPU與GPU之間交換資料的處理器架構。
圖3說明用於在CPU與GPU之間交換資料之方法的一實施例。
圖4a說明各個MovNA指令可互相交錯的一實施例。
圖4b說明各個MovNA指令可互相交錯。
圖5說明可實施本發明之實施例的另一電腦系統。
圖6說明可實施本發明之實施例的另一電腦系統。
100‧‧‧主記憶體
101‧‧‧中央處理單元
102‧‧‧繪圖處理單元
110‧‧‧1階快取記憶體
111‧‧‧2階快取記憶體
112‧‧‧3階快取記憶體
Claims (25)
- 一種將大量資料從中央處理單元(CPU)之核心傳送到繪圖處理單元(GPU)的方法,包含:將資料寫入該中央處理單元之該核心內的緩衝器,直至指定的資料量都已被寫入;在偵測該指定的資料量已被寫入後,回應地產生逐出循環,該逐出循環致使該資料從該緩衝器傳送至可被該核心與該繪圖處理單元兩者存取的快取記憶體;設定用來指示該快取記憶體內之資料可用的指示給該繪圖處理單元;以及在該繪圖處理單元偵測該指示之後,在接收來自該繪圖處理單元的讀取信號之後,從該快取記憶體提供該資料給該繪圖處理單元。
- 如申請專利範圍第1項之方法,其中,該指示包含可藉由該核心寫入及可藉由該繪圖處理單元讀取的旗標。
- 如申請專利範圍第2項之方法,其中,該旗標包含具有指示該快取記憶體中之該資料可用之第一值與指示該快取記憶體中之資料不可用之第二值的二進制值指示。
- 如申請專利範圍第1項之方法,其中,該繪圖處理單元經由輪詢技術讀取該指示,其中,該繪圖處理單元為該指示周期性地讀取輪詢。
- 如申請專利範圍第1項之方法,其中,該繪圖處理單元回應中斷信號而讀取該指示。
- 如申請專利範圍第1項之方法,其中,該方法之該操作係藉由該核心回應該核心執行第一指令而被執行。
- 如申請專利範圍第6項之方法,其中,該第一指令包含MovNonAllocate儲存指令。
- 如申請專利範圍第6項之方法,進一步包含:允許該第一指令與該相同指令類型的複數個其它指令交錯。
- 如申請專利範圍第8項之方法,進一步包含:允許該第一指令與不同指令類型的複數個其它指令交錯。
- 如申請專利範圍第9項之方法,其中,該其它指令為寫回儲存指令,且該第一指令為MovNonAllocate儲存指令。
- 如申請專利範圍第1項之方法,其中,該中央處理單元內的該緩衝器為寫回緩衝器,且其中,可被該核心與該繪圖處理單元兩者存取的該快取記憶體為第3階(L3)快取記憶體。
- 如申請專利範圍第1項之方法,其中,該中央處理單元包含複數個核心,每一個核心皆有實施該方法的能力。
- 一種指令處理設備,包含:至少一核心及可被該核心與繪圖處理單元兩者存取的快取記憶體;中央處理單元-繪圖處理單元生產者-消費者邏輯,被 組態成實施以下之操作:將資料寫入該中央處理單元之該核心內的緩衝器,直至指定的資料量都已被寫入;在偵測該指定的資料量已被寫入後,回應地產生逐出循環,該逐出循環致使該資料從該緩衝器傳送至可被該核心與該繪圖處理單元兩者存取的快取記憶體;以及設定用來指示該快取記憶體內之資料可用的指示給該繪圖處理單元;其中,在該繪圖處理單元偵測該指示之後,在接收來自該繪圖處理單元的讀取信號之後,從該快取記憶體提供該資料給該繪圖處理單元。
- 如申請專利範圍第13項之指令處理設備,其中,該指示包含可藉由該核心寫入及可藉由該繪圖處理單元讀取的旗標。
- 如申請專利範圍第14項之指令處理設備,其中,該旗標包含具有指示該快取記憶體中之該資料可用之第一值與指示該快取記憶體中之資料不可用之第二值的二進制值指示。
- 如申請專利範圍第13項之指令處理設備,其中,該繪圖處理單元經由輪詢技術讀取該指示,其中,該繪圖處理單元為該指示周期性地讀取輪詢。
- 如申請專利範圍第13項之指令處理設備,其中,該繪圖處理單元回應中斷信號而讀取該指示。
- 如申請專利範圍第13項之指令處理設備,其 中,該指令處理設備之該操作係藉由該核心回應該核心執行第一指令而被執行。
- 如申請專利範圍第18項之指令處理設備,其中,該第一指令包含MovNonAllocate儲存指令。
- 如申請專利範圍第18項之指令處理設備,其中,該中央處理單元-繪圖處理單元生產者-消費者邏輯允許該第一指令與該相同指令類型的複數個其它指令交錯。
- 如申請專利範圍第20項之指令處理設備,其中,該中央處理單元-繪圖處理單元生產者-消費者邏輯允許該第一指令與不同指令類型的複數個其它指令交錯。
- 如申請專利範圍第21項之指令處理設備,其中,該其它指令為寫回儲存指令,且該第一指令為MovNonAllocate儲存指令。
- 如申請專利範圍第13項之指令處理設備,其中,該中央處理單元內的該緩衝器為寫回緩衝器,且其中,可被該核心與該繪圖處理單元兩者存取的該快取記憶體為第3階(L3)快取記憶體。
- 如申請專利範圍第13項之指令處理設備,其中,該中央處理單元包含複數個核心,每一個核心皆具有用以實施該指定操作的中央處理單元-繪圖處理單元生產者-消費者邏輯。
- 一種電腦系統,包含:繪圖處理單元(GPU),用於處理一組繪圖指令來渲染視頻;以及 中央處理單元,包含:至少一核心及可被該核心與繪圖處理單元兩者存取的快取記憶體;中央處理單元-繪圖處理單元生產者-消費者邏輯,被組態成實施以下之操作:將資料寫入該中央處理單元之該核心內的緩衝器,直至指定的資料量都已被寫入;在偵測該指定的資料量已被寫入後,回應地產生逐出循環,該逐出循環致使該資料從該緩衝器傳送至可被該核心與該繪圖處理單元兩者存取的快取記憶體;以及設定用來指示該快取記憶體內之資料可用的指示給該繪圖處理單元;其中,在該繪圖處理單元偵測該指示之後,在接收來自該繪圖處理單元的讀取信號之後,從該快取記憶體提供該資料給該繪圖處理單元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066674 WO2013095475A1 (en) | 2011-12-21 | 2011-12-21 | Apparatus and method for memory-hierarchy aware producer-consumer instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346831A true TW201346831A (zh) | 2013-11-16 |
TWI467513B TWI467513B (zh) | 2015-01-01 |
Family
ID=48669122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101146624A TWI467513B (zh) | 2011-12-21 | 2012-12-11 | 察覺生產者—消費者指令的記憶體階層之設備及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9990287B2 (zh) |
CN (1) | CN104025065B (zh) |
TW (1) | TWI467513B (zh) |
WO (1) | WO2013095475A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150261535A1 (en) * | 2014-03-11 | 2015-09-17 | Cavium, Inc. | Method and apparatus for low latency exchange of data between a processor and coprocessor |
US9830676B2 (en) * | 2015-07-28 | 2017-11-28 | Intel Corporation | Packet processing on graphics processing units using continuous threads |
WO2017049583A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Gpu-cpu two-path memory copy |
US10936533B2 (en) * | 2016-10-18 | 2021-03-02 | Advanced Micro Devices, Inc. | GPU remote communication with triggered operations |
US11334355B2 (en) * | 2017-05-04 | 2022-05-17 | Futurewei Technologies, Inc. | Main processor prefetching operands for coprocessor operations |
EP3602313B1 (en) * | 2017-12-04 | 2022-02-02 | Google LLC | Synchronized processing of data using a system-on-chip |
US20200334084A1 (en) * | 2019-04-16 | 2020-10-22 | Kazuhm, Inc. | Distributed in-platform data storage utilizing graphics processing unit (gpu) memory |
US11861758B2 (en) * | 2021-03-12 | 2024-01-02 | Nvidia Corporation | Packet processing acceleration using parallel processing |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630075A (en) | 1993-12-30 | 1997-05-13 | Intel Corporation | Write combining buffer for sequentially addressed partial line operations originating from a single instruction |
US5530933A (en) * | 1994-02-24 | 1996-06-25 | Hewlett-Packard Company | Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus |
US5623628A (en) | 1994-03-02 | 1997-04-22 | Intel Corporation | Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue |
US6073210A (en) * | 1998-03-31 | 2000-06-06 | Intel Corporation | Synchronization of weakly ordered write combining operations using a fencing mechanism |
US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6513099B1 (en) | 1998-12-22 | 2003-01-28 | Silicon Graphics Incorporated | Enhanced graphics cache memory |
US6598128B1 (en) | 1999-10-01 | 2003-07-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6546462B1 (en) * | 1999-12-30 | 2003-04-08 | Intel Corporation | CLFLUSH micro-architectural implementation method and system |
JP3683211B2 (ja) * | 2001-12-10 | 2005-08-17 | エヌイーシーコンピュータテクノ株式会社 | ノード間データ転送方法及びノード間データ転送装置 |
US6848031B2 (en) | 2002-01-02 | 2005-01-25 | Intel Corporation | Parallel searching for an instruction at multiple cache levels |
US7120755B2 (en) | 2002-01-02 | 2006-10-10 | Intel Corporation | Transfer of cache lines on-chip between processing cores in a multi-core system |
US8141068B1 (en) | 2002-06-18 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Compiler with flexible scheduling |
US6862027B2 (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp. | System and method for parallel execution of data generation tasks |
JP2005165592A (ja) | 2003-12-02 | 2005-06-23 | Matsushita Electric Ind Co Ltd | データ転送装置 |
US7617496B2 (en) | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
JP4212521B2 (ja) | 2004-06-30 | 2009-01-21 | 株式会社東芝 | 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム |
US20060080511A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Enhanced bus transactions for efficient support of a remote cache directory copy |
US7475190B2 (en) * | 2004-10-08 | 2009-01-06 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US20060112226A1 (en) | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US7624236B2 (en) | 2004-12-27 | 2009-11-24 | Intel Corporation | Predictive early write-back of owned cache blocks in a shared memory computer system |
US20060150010A1 (en) * | 2005-01-03 | 2006-07-06 | Stiffler Jack J | Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support |
WO2007056669A2 (en) | 2005-11-04 | 2007-05-18 | Sandisk Corporation | Enhanced first level storage cache using nonvolatile memory |
US20080270708A1 (en) | 2007-04-30 | 2008-10-30 | Craig Warner | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System |
US8327071B1 (en) | 2007-11-13 | 2012-12-04 | Nvidia Corporation | Interprocessor direct cache writes |
US8028118B2 (en) * | 2007-12-05 | 2011-09-27 | Internation Business Machines Corporation | Using an index value located on a page table to index page attributes |
US8769207B2 (en) | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
US7861065B2 (en) | 2008-05-09 | 2010-12-28 | International Business Machines Corporation | Preferential dispatching of computer program instructions |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
US8332608B2 (en) | 2008-09-19 | 2012-12-11 | Mediatek Inc. | Method of enhancing command executing performance of disc drive |
US20100123717A1 (en) | 2008-11-20 | 2010-05-20 | Via Technologies, Inc. | Dynamic Scheduling in a Graphics Processor |
US8949549B2 (en) | 2008-11-26 | 2015-02-03 | Microsoft Corporation | Management of ownership control and data movement in shared-memory systems |
US8782374B2 (en) | 2008-12-02 | 2014-07-15 | Intel Corporation | Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor |
US8171223B2 (en) | 2008-12-03 | 2012-05-01 | Intel Corporation | Method and system to increase concurrency and control replication in a multi-core cache hierarchy |
US9075559B2 (en) | 2009-02-27 | 2015-07-07 | Nvidia Corporation | Multiple graphics processing unit system and method |
US8669990B2 (en) | 2009-12-31 | 2014-03-11 | Intel Corporation | Sharing resources between a CPU and GPU |
US8595510B2 (en) * | 2011-06-22 | 2013-11-26 | Media Patents, S.L. | Methods, apparatus and systems to improve security in computer systems |
TWM417730U (en) | 2011-07-08 | 2011-12-01 | Tpv Display Technology Xiamen | Integrated machine of TV and computer |
-
2011
- 2011-12-21 WO PCT/US2011/066674 patent/WO2013095475A1/en active Application Filing
- 2011-12-21 CN CN201180075875.2A patent/CN104025065B/zh active Active
- 2011-12-21 US US13/994,122 patent/US9990287B2/en active Active
-
2012
- 2012-12-11 TW TW101146624A patent/TWI467513B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN104025065A (zh) | 2014-09-03 |
WO2013095475A1 (en) | 2013-06-27 |
US9990287B2 (en) | 2018-06-05 |
CN104025065B (zh) | 2018-04-06 |
US20140192069A1 (en) | 2014-07-10 |
TWI467513B (zh) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI467513B (zh) | 察覺生產者—消費者指令的記憶體階層之設備及方法 | |
US10942737B2 (en) | Method, device and system for control signalling in a data path module of a data stream processing engine | |
TWI447650B (zh) | 中斷分佈方案 | |
KR101719092B1 (ko) | 하이브리드 메모리 디바이스 | |
KR101707289B1 (ko) | 그래픽 병렬 처리 유닛에 대한 버퍼 관리 | |
US9405552B2 (en) | Method, device and system for controlling execution of an instruction sequence in a data stream accelerator | |
JP5537533B2 (ja) | ハードウェアのダイナミックなキャッシュパワー管理 | |
US9703493B2 (en) | Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache | |
US9881680B2 (en) | Multi-host power controller (MHPC) of a flash-memory-based storage device | |
US20150347017A1 (en) | Command trapping in an input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
CN107003709A (zh) | 包括实现指令集架构不同部分的多个不同处理器内核的处理器 | |
WO2017095574A1 (en) | Systems and methods for a hybrid parallel-serial memory access | |
TWI516953B (zh) | 用於記憶體階層覺知生產者消費者指令的設備與方法 | |
CN109716305B (zh) | 实现异步高速缓存维护操作的方法、计算设备以及介质 | |
WO2018107331A1 (zh) | 计算机系统及内存访问技术 | |
JP2014174849A (ja) | 半導体記憶装置 | |
TW201005649A (en) | Operating system fast run command | |
CN108228484A (zh) | 针对处理器中的高速缓存利用的无效读取 | |
US20140365748A1 (en) | Method, apparatus and system for data stream processing with a programmable accelerator | |
US20140129776A1 (en) | Store replay policy | |
KR20210094178A (ko) | 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템 | |
US20120079208A1 (en) | Probe speculative address file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |