TW201908968A - 近記憶體運算架構 - Google Patents
近記憶體運算架構 Download PDFInfo
- Publication number
- TW201908968A TW201908968A TW107116654A TW107116654A TW201908968A TW 201908968 A TW201908968 A TW 201908968A TW 107116654 A TW107116654 A TW 107116654A TW 107116654 A TW107116654 A TW 107116654A TW 201908968 A TW201908968 A TW 201908968A
- Authority
- TW
- Taiwan
- Prior art keywords
- processing core
- data
- memory
- instruction
- value
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 112
- 238000012545 processing Methods 0.000 claims abstract description 134
- 230000006870 function Effects 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 20
- 230000006399 behavior Effects 0.000 claims description 8
- 230000008867 communication pathway Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
依據本揭露內容之一實例中,一運算引擎區塊可包含一資料埠其將一處理核心連接至一資料快取,其中該資料埠接收請求俾存取一記憶體,以及一資料通訊路徑以致能該記憶體之資料請求的服務。該處理核心可組配以識別一第一資料請求之一預定位址範圍中之一數值以及當一第一數值被識別時調整該處理核心所使用之一載入指令之位元大小。
Description
發明領域 本發明係有關於近記憶體運算架構。
發明背景 資料中心電力消耗對於客戶而言可能係一非常重要之因數且隨著硬體及軟體成本下降而變得更為重要。於某些情況下,一資料中心能量之一大部分可能花費在將資料由儲存器移去運算以及移回儲存器等方面。
發明概要 本揭示內容一般係有關於一種運算引擎區塊包含:一資料埠其將一處理核心連接至一資料快取,其中該資料埠接收請求俾存取一記憶體;一資料通訊路徑以致能該記憶體之資料請求的服務;以及該處理核心組配以:識別一第一資料請求之一預定位址範圍中之一數值;當一第一數值被識別時調整該處理核心所使用之一載入指令之位元大小。
詳細說明 現行晶片上系統(SoC)處理器可為直接附接之記憶體量身訂製。此類SoC處理器之位址空間可能受限,以及其系統介面可能假定記憶體係少於100ns。特定系統,然而,可能設計成定址大型結構附接式記憶體庫,此可能與現行SoC處理器之基本假定不相容。
此處所討論之系統及方法係使用嵌入至模組等級之記憶體控制器中之可程式化核心以執行近-資料(near-data)處理。近-資料處理係一種技術而該技術係將特定功能,諸如簡單資料移動,自CPUs移開,並保留CPU-記憶體頻寬以供更重要的操作之用。近記憶體處理器(NMPs)可具有不同於標準SoC處理器之效能特性,例如,較低記憶體存取等待時間、較高能量效率記憶體存取與運算、以及較低運算能力。
此處所討論之系統及方法係使用微控制器設計其即使在記憶體等待時間為數百奈秒之應用下仍可快速地掃描記憶體。於某些態樣中,所設計之微控制器可支援RISC-V指令集。此處所說明之系統及方法可使用一RISC-V處理核心及包含額外功能,諸如一晶片上網路(NoC)介面與遠端記憶體介面。此外,本架構之設計依據記憶體中之觀察值可容許加入新功能且不會引入將導致一軟體工具鏈之重新編譯的任何改變。此處所討論之設計可減少電力此因較少之電晶體需要切換以執行運算之故。
一種包含一近記憶體運算架構之例示性運算引擎區塊可包含一運算引擎區塊其可包含一資料埠其將一處理核心連接至一資料快取,其中該資料埠接收請求俾存取一記憶體,以及一資料通訊路徑以致能該記憶體之資料請求的服務。該處理核心可組配以識別一第一資料請求之一預定位址範圍中之一數值以及當一第一數值被識別時調整該處理核心所使用之一載入指令之位元大小。
圖1係一種用於近記憶體運算之例示性系統100。系統100可包含一媒介控制器105及一記憶體110。記憶體控制器105可包含運算引擎區塊112, 114與一資料結構116。每一運算引擎區塊112, 114均可包含一處理核心118、一系統介面120、一指令快取122、一資料快取124、一資料通訊路徑126及一環狀介面128。雖然系統100包含二個運算引擎區塊,然而此係供說明目地之用,且系統可具有較大或較少數量之運算引擎區塊。此外,雖然運算引擎區塊114係隨同環狀介面128加以描述,然而任何運算區塊均可具有元件118, 120, 122, 124, 126, 128及/或額外組件之任何組合。
記憶體110可用以儲存由處理核心118所存取之資料。記憶體110可經由資料結構介面116藉著處理核心來存取。記憶體110可包含任何依電性記憶體、非依電性記憶體、或依電性與非依電性記憶體之任何適當組合。記憶體110可包含,例如,可為,舉例言之,隨機存取記憶體(RAM)、一電子式可抹除可程式化唯讀記憶體(EEPROM)、一儲存驅動器、一光碟、及/或其他適合記憶體。記憶體110亦可包含一隨機存取非依電性記憶體其可在電源關閉時保留內容。
處理核心118可為一整數-唯一、依序之RISC-V處理器。處理核心118可具有32及/或256位元整數暫存器,支援64位元算術運算及256位元邏輯算數運算。處理核心亦可包含56位元實體位址及一5階、依序之管線。使用56位元實體定址技術可使核心直接地存取記憶體,諸如舉例言之,大量之NVM記憶體,而不用轉譯。處理核心118亦可支援記憶體承諾管理其追蹤被執行之待辦寫入作業之數量。藉著追蹤待辦寫入之數量,當執行一RISC-V架構之FENCE指令時處理核心118可能失速。一FENCE操作係一資料旗標用以保留記憶體操作中之次序。
處理核心118可依據實體位址調整操作模式。特定地,處理核心118可組配以識別一資料請求之一預定位址範圍中之一數值並依據該數值調整處理核心之操作行為。該預定位址範圍可用以調整操作模式而非其他目的。例如,處理核心118可識別一位址範圍之三個最高有效位址位元並依據所觀察之數值調整操作行為。於此實例中,三個最高有效位址位元可能不會供正常位址存取之用。依此方式,新功能可加入至系統而不會引入將導致一軟體工具鏈之重新編譯的任何改變。
預定位址範圍中之數值的意義可定義在處理核心之硬體合成中。處理核心之標準硬體建置可適合於認可預定位址範圍中之數值,依據該等數值適應處理核心之效能及/或清除該等數值使得該預定位址範圍中之該等數值不會被轉送至實體記憶體。例如,假設處理核心係一RISC-V處理器時,標準編譯器可使用並適合於認可預定位址範圍中之數值。
位址範圍強化之參考可納入預先編譯碼中。據此,無論誰寫入該碼均可選擇以包含預定位址範圍中之數值進而引用此處所討論之強化。此外,在此類上位址位元中變動之位址將化名為相同實體記憶體位址(一旦其被處理器清除時),該等上位址位元不會被轉送至實體記憶體。一旦碼被寫入時,該碼可饋送至標準編譯器,諸如RISC-V編譯器,以產生機器碼而處理器擷取並執行該機器碼以執行編碼工作。如此處所使用者,標準編譯器係指碼編譯器其取得軟體碼並將該軟體碼轉換成處理核心實際運行之機器碼。
處理核心118可接收一指令以執行一預設(default)操作。執行預設操作前,然而,處理核心118可判定是否有任何數值存在於指令之一預定位址範圍中。處理核心118可依據該數值判定一替換功能以執行該替換功能而非該預設功能。可依此方式加入之例示性功能包含快取行清除(flush)、大型暫存器載入/儲存、儲存而不擷取、基元(atomic)操作、熱門路徑CSR載入/儲存。此類功能將於下文中進一步詳細說明。
一快取行清除操作可容許處理核心118將修改之快取行移動至記憶體。修改之快取行清除操作可關聯於一第一數值。該第一數值可為,例如,一記憶體位址之三個最高有效位元之數值。假設處理核心識別一預定記憶體位址中之該第一數值時,該處理核心可執行快取行清除而非一預設操作。於一態樣中,處理核心可執行快取行清除而非一預設載入操作。
一大型暫存器載入/儲存操作可為一載入及/或儲存操作而該操作係以不同於處理核心所使用之預設數量之位元的若干位元來操作。該等若干位元可大於或小於該預設值。大型暫存器載入/儲存操作可關聯於一第二數值。假設該處理核心識別一預定記憶體位址中之該第二數值時,該處理核心可執行大型暫存器載入/儲存而非一預設操作。於一態樣中,預設操作可為採用一預設數量之位元,諸如32,之載入/儲存操作。當識別該第二數值時,處理核心118可執行一不同數量之位元,諸如256,而非該預設數量32,之載入/儲存操作。
一儲存而不擷取操作可於一資料快取中儲存及/或配置記憶體而不會自該記憶體中擷取。更特定地,儲存而不擷取操作可導致處理核心將一行資料儲存至記憶體中之一位置而不會讀取目前儲存在該位置中之一現存行資料。儲存而不擷取操作可關聯於一第三數值。假設處理核心識別一預定記憶體位址中之該第三數值時,該處理核心可執行該儲存而不擷取而非一預設操作。於一態樣中,處理核心可執行儲存而不擷取而非一預設儲存操作。
一基元操作係一種操作其係在相對於其他執行緒(thread)之一單一步驟中完成。該等其他執行緒將該基元操作之步驟視同即刻地發生。如此處所使用者,基元操作可指關聯於一運算平台之一組基元操作。例如,基元操作可為關聯於Gen-Z開放系統互連之基元操作。於某些態樣中,基元型態可以一CSR(控制及狀態暫存器)來控制。基元操作可關聯於一第四數值。假設處理核心識別一預定記憶體位址中之該第四數值時,該處理核心可執行該基元操作而非一預設操作。
一熱門路徑CSR載入/儲存可載入或儲存至核心局部結構。基元操作可關聯於一第五數值。假設處理核心識別一預定記憶體位址中之該第五數值時,該處理核心可執行該熱門路徑CSR載入/儲存而非一預設操作,諸如一預設載入/儲存操作。
於某些態樣中,記憶體110亦可及/或替代地由其他處理器來存取。例如,記憶體110可藉著一系統主處理器或多數系統主處理器直接地存取。一主處理器可填充系統100之工作佇列以及消耗來自完成佇列之結果。此類佇列可能在直接附接之動態隨機存取記憶體(DRAM)中、在模組記憶體中、等之主節點內。於某些態樣中,系統100亦可包含多數主機之同時支援,每一主機均存取全部或部分之模組記憶體,以及每一主機均獨立地管理個別工作佇列。
系統介面120可接收請求俾存取一記憶體。系統介面可具有寬廣資料埠。如此處所使用者,”寬廣資料埠”係指處理核心118與資料快取124間之一連接。藉著載入並處理一大量資料,諸如256位元之資料,可要求較少處理器指令在一快取行之資料值 (例如,64位元組之資料) 上操作。於某些態樣中,系統介面120可支援對記憶體之32個待辦快取行請求(以填充資料快取)。依此方式,系統介面120可容許對記憶體之足夠平行存取之重疊以隱藏自記憶體存取每一個別快取行所需之等待時間且因此充分地使用該記憶體所提供之頻寬。換言之,一寬廣資料埠可容許處理核心一次存取較多資料,容許一執行緒以一較低頻率(亦即,1GHz以下)運作,以在記憶體所支援之高頻寬速度下操作。資料埠可為,例如,256位元之寬度。
系統介面120可容許每個處理核心有32個待辦快取行大小之請求。一具有大量待辦請求之系統介面120可使每一處理核心能夠以高速率移動資料。此外,藉著使每一通用目的暫存器有256位元之寬度與延伸載入與儲存指令(如上文參考處理核心118所說明者),以及將資料快取埠設計成寬廣之作法,處理核心可能能夠以高速,諸如每秒若干十億(Giga)-位元組,移動資料。
指令快取122可為一四路(four way)快取其具有一永久區而該永久區於運算引擎區塊之正常操作期間不會自指令快取中驅出。供處理核心用之多數指令係儲存在該永久區上,該等多數指令包含供一載入指令用之一指令。指令快取可如此設計使得某一位置不會自快取中驅出,因此使得效能更有可預測性。可使用非驅出區以確保提供特定程式館功能以在近記憶體運算引擎區塊112中運行所需之指令係保證存在的。藉著確保此類指令係存在的,可節省處理一失誤流程之複雜性並確保一較高水準之操作效能。
儲存在非驅出區之程式館功能可包含(1)一”資料移動”操作其將資料由記憶體位址之一範圍移動至另一範圍,(2)一功能以在一範圍中存取資料,並將該資料與一提供之模式作比較,(3)一功能其存取二個資料區塊(二個向量),增加該等區塊並將該等區塊寫回或寫入至一第三位置,等。當被呼叫時,此類程式館功能可使用已預先載入至快取之非驅出部分內之供該功能用之適當碼來運作。例如,供一”移動”功能用之功能碼可為一簡單迴路,當經由特定位址範圍進行時,讀取a,寫入b 。此外功能碼可包含檢查允許、嵌入存取碼、或其他此類安全與正確保護措施之額外指令。藉著在非驅出區中之一程式館內提供此類功能而非使節點請求提供一碼序列之工作,可確保容許之操作受到支援,以及確保程式館常式之效能。在非驅出區之程式館中提供特定功能亦可協助保護程式館碼免於被惡意修改。
於某些態樣中,快取內容可由外部韌體來控制,因此碼係安全且預先載入者。資料快取124可為一四路快取具有寬廣讀取與寫入埠。寬廣讀取與寫入埠可為,例如,256位元之寬度。系統介面及快取可容許每一處理核心有足夠力量以一高頻寬掃描局部記憶體,因此類似複製、歸零、及掃描模式 之操作無需為了可接受之效能而平行化。
資料通訊路徑126可存取一晶片上網路介面以致能記憶體之資料請求之低等待時間服務。低等待時間服務可容許近記憶體運算引擎區塊112與另一處理器,諸如一晶片上系統之部分之一處理器,諸如媒介控制器105,間之低等待時間通訊。在某些情況下(諸如假設處理核心118上之管理負擔過高時),特定工作可卸載至晶片上系統之處理器。於某些態樣中,低等待時間可為奈秒之等級。相較之下,假設近記憶體運算引擎區塊112係經由記憶體映射輸入輸出(MMIO)操作連接時,該卸載可能為秒之等級。
資料通訊路徑126可使用一或多個標準化資料通訊標準,諸如Gen-Z開放系統互連。資料通訊路徑126可公式化,及/或解譯代表處理核心118之封包標頭(及整個封包)資訊,自處理核心118卸載特定活動。例如,資料通訊路徑126可包含請求器126a與回應器126b。請求器126a可接收來自處理核心118之記憶體存取,公式化供資料通訊標準用之請求交易以及追蹤交易之進展。請求器126a可進一步收集交易回應並將回覆資料放入資料快取內(亦即,讀取),及/或退出該交易(亦即,完成寫入)。回應器126a可接受入站請求,適當地操控供近記憶體運算架構用之交易以控制暫存器或該近記憶體運算架構之其他資源。媒介控制器105可包含一資料結構介面116及一晶片網路130。資料結構介面116可具有鏈路俾連接至記憶體。晶片上網路130可充作一晶粒上(on-die)之互連件其連接近記憶體運算引擎區塊112之不同元件(諸如元件118, 120, 122, 124, 126, 等)。
一環狀介面128可用以連接近記憶體運算引擎區塊。藉著使用環狀介面,處理核心及/或額外運算引擎區塊可加入至媒介控制器而不會有新的區塊實體工作或額外驗證工作量。
於某些態樣中,運算可偶而在常駐於其他NVM模組上之資料上執行。據此,一資料運算區塊可以一載入/儲存/清除指令序列存取一不同模組上之NVM以讀取/修改/承諾遠端NVM模組上之資料。藉著以一大型位址空間及載入/儲存/清除指令序列執行交叉模組通訊,可改善供遠端NVM模組參考用之局部快取之使用,因此增加效能並簡化加速器程式化模式。於某些態樣中,一記憶體模組上之每一個儲存位元組並非均可共享,因此每一模組均執行一遠端存取防火牆其可保護局部NVM之區域免於被遠端存取。
圖2係依據本揭露內容之各種實例之一種用於執行一處理核心之替換功能之例示性方法200之一流程圖。流程圖代表程序其可用以連結參考前述圖式所討論之各種系統及裝置,諸如,舉例言之,參考圖1所說明之系統100,參考圖3所說明之運算引擎區塊300及/或參考圖4所說明之系統400。雖然以一特定次序說明,然而流程圖並非意圖受此限制。相反地,明確地考量係各種程序均可以與所說明之該等次序不同之次序發生及/或與其他程序同時發生。因此,連同圖2所說明之操作序列係為實例且並非意圖為限制。額外或較少之操作或操作之組合均可使用或可改變而不致偏離所揭示實例之範圍。因此,本揭露內容僅陳述建置之可能實例,且許多變化及修改均可對所說明之實例進行。
方法200可在方塊202處開始並持續至方塊204,而方法200於該方塊處可包含接收一指令以執行處理核心之一預設功能之一操作。在方塊206處,方法可包含識別,藉著該處理核心,該指令之一預定位址範圍中之一數值。該預定位址範圍包含三個最高有效位址位元。
在方塊208處,方法可包含依據該數值判定,藉著該處理核心,一替換功能。該數值可導致該處理核心調整操作行為而不會引入將導致一軟體工具鏈之重新編譯的任何改變。
一第一數值可導致該處理核心執行具有不同於一預設位元大小之一位元大小之一載入指令。該第一數值亦可導致該處理核心執行具有不同於該預設位元大小之一位元大小之一儲存指令。該載入及/或儲存指令之位元大小可為256位元。一第二數值可導致該處理核心執行一清除操作而非一載入操作。一第三數值可導致該處理核心將一行資料儲存至記憶體中之一位置而不會擷取目前儲存於該位置中之一現存行資料。一第四數值可導致該處理核心在一預設模式中操作。
在方塊210處,方法可包含執行,藉著該處理核心,該替換功能而非該預設功能。方法可持續至方塊212,而方法可於該方塊處結束。
圖3係一種包含一近記憶體運算架構之例示性運算引擎區塊300。系統300可包含一處理核心302、一資料通訊路徑304、以及一資料快取306而該等裝置可經由一通訊鏈路(例如,一匯流排)而相互耦接。資料通訊路徑304可致能記憶體之資料請求之低等待時間服務。資料通訊路徑304可讀取封包標頭資訊其包含封包長度與起始位址。資料通訊路徑304可類似於上文參考圖1所討論之資料通訊路徑126。處理核心302可經由一寬廣資料埠307連接至資料快取306。資料快取306可類似於上文參考圖1所討論之資料快取124。如上文所說明者,寬廣資料埠307可接收請求俾存取一記憶體。於某些態樣中,資料快取308可為一系統介面之部分。系統介面可容許每個處理核心有32個待辦快取行大小之請求。系統介面可類似於上文參考圖1所討論之系統介面120。處理核心302可包含一或多個中央處理單元(CPU)或另外適合之硬體處理器。處理核心302可組配以執行指令,包含數值識別指令308與功能處理指令310。系統300之指令可以可執行指令之型式來執行而該等指令係儲存在一記憶體上且由系統300之至少一處理器來執行。記憶體304可為非暫時性者。
記憶體可包含任何依電性記憶體、非依電性記憶體、或依電性與非依電性記憶體之任何適當組合。記憶體可包含,例如,可為,舉例言之,隨機存取記憶體(RAM)、一電子式可抹除可程式化唯讀記憶體(EEPROM)、一儲存驅動器、一光碟、及/或其他適合記憶體。記憶體亦可包含一隨機存取非依電性記憶體其可在電源關閉時保留內容。系統300之每一組件均可以至少一硬體裝置之型式來執行而該硬體裝置包含用以執行該組件之功能之電子電路。
於某些態樣中,運算引擎區塊300可進一步包含一指令快取。該指令快取可具有永久區其於該運算引擎區塊之正常操作期間不會自該指令快取中驅出。供處理核心用之多數指令係儲存在該永久區上,該等多數指令包含供一載入指令用之一指令。該指令快取可類似於上文參考圖1所討論之指令快取122。
處理器302可執行數值識別指令308以接收一指令進而執行處理核心之一操作。處理器302可執行數值識別指令308以識別可由處理核心存取之一預定位址範圍中之一數值。該預定位址範圍可包含三個最高有效位址位元。該數值可導致處理核心調整操作行為而不會引入將導致一軟體工具鏈之重新編譯的任何改變。處理器302可執行功能處理指令310以依據該數值判定一功能並執行該功能。於某些實例中,一替換功能可由該數值來指示以及處理核心可執行該替換功能而非一預設功能。
例如,當一第一數值被識別時,處理核心可調整該處理核心所使用之一載入指令之位元大小。換言之,該處理核心可以一調整過之位元大小數值執行一載入指令以充作具有一預設位元大小之一載入指令之一替代功能。該具有預設位元大小之載入指令可為該處理核心之預設功能。
該第一數值亦可導致該處理核心執行具有不同於預設位元大小之一位元大小之一儲存指令。載入及/或儲存指令之位元大小可為256位元。一第二數值可導致該處理核心執行一清除操作而非一載入操作。一第三數值可導致該處理核心將一行資料儲存至記憶體中之一位置而不會擷取目前儲存於該位置中之一現存行資料。一第四數值可導致該處理核心以一預設模式操作。
圖4係一種包含一近記憶體運算架構之一例示性系統400之一方塊圖。於圖4所說明之實例中,系統400包含一處理核心402。雖然下列說明係指一單一處理核心,然而該等說明亦可適用於一種具有多數處理核心之系統。於此類實例中,指令可跨越多數處理核心來分布(例如,執行)。
處理器402可為至少一中央處理單元(CPU),微處理器、及/或適用於指令之檢索與執行之其他硬體裝置。於圖4所說明之實例中,處理器402可擷取、解碼、及執行指令406, 408, 410, 與414以執行一處理核心之替換功能。於某些實例中,指令406, 408, 410, 與414可儲存在一記憶體上。該記憶體可包含依電性記憶體、非依電性記憶體、或依電性與非依電性記憶體之任何適當組合。記憶體504可包含,例如,可為,舉例言之,隨機存取記憶體(RAM)、一電子式可抹除可程式化唯讀記憶體(EEPROM)、一儲存驅動器、一光碟、及/或其他適合記憶體。記憶體504亦可包含一隨機存取非依電性記憶體其可在電源關閉時保留內容。處理器402可包含至少一電子電路其包含若干電子組件俾執行至少一指令之功能。有關此處所說明及顯示之可執行指令代表(例如,框體(box)),應理解的是一框體內所包含之部分或全部之可執行指令及/或電子電路均可包含在圖式中所示之一不同框體內或包含在未顯示之一不同框體內。
參看圖4,接收指令406,當藉由一處理器(例如,402)執行時,可導致系統400接收一指令以執行處理核心之一操作。數值識別指令408,當藉由一處理器(例如,402)執行時,可導致系統400識別該指令之一預定位址範圍中之一數值。功能判定指令410,當藉由一處理器(例如,402)執行時,可導致系統400依據該數值判定一替換功能。
功能執行指令412,當藉由一處理器(例如,402)執行時,可導致系統400執行該替換功能。該數值可導致處理核心調整操作行為而不會引入將導致一軟體工具鏈之重新編譯的任何改變。一第一數值可導致該處理核心執行具有不同於一預設位元大小之一位元大小之一載入指令。該第一數值亦可導致該處理核心執行具有不同於預設位元大小之一位元大小之一儲存指令。該載入及/或儲存指令之位元大小可為256位元。一第二數值可導致該處理核心執行一清除操作而非一載入操作。一第三數值可導致該處理核心將一行資料儲存至記憶體中之一位置而不會擷取目前儲存於該位置中之一現存行資料。一第四數值可導致該處理核心在一預設模式中操作。
前述揭露內容係說明一近記憶體運算架構之若干實例。該揭露實例可包含系統、裝置、電腦可讀儲存媒介,及用於執行一近記憶體運算架構之方法。基於解釋之目的,特定實例係參考圖1-4中所揭示之組件來說明。所揭示組件之內容型態可重疊,然而,且可以一較少或較多數量之元件與組件來呈現。此外,所揭示元件之全部或部分內容型態可共同存在或分布於若干地理上分散之位置中。此外,所揭露之實例可在各種環境中執行且並不受限於所揭示之實例。
此外,有關圖1-4所說明之操作序列係例示性且並無意圖為限制性。額外或較少操作或操作之組合均可使用或均可變化而不致偏離本揭露實例之範圍。此外,與所揭露實例一致之建置無需以任何特定次序執行操作之序列。因此,本揭露內容僅係陳述建置之可能實例,且可對所說明之實例進行許多變化及修改。
100、400‧‧‧系統
105‧‧‧媒介控制器
110‧‧‧記憶體
112、114‧‧‧近記憶體運算引擎區塊
116‧‧‧資料結構介面
118、302、402‧‧‧處理核心
120‧‧‧系統介面
122‧‧‧指令快取
124、306‧‧‧資料快取
126、304‧‧‧資料通訊路徑
126a‧‧‧請求器
126b‧‧‧回應器
128‧‧‧環狀介面
130‧‧‧晶片上網路
200‧‧‧方法
202~216‧‧‧方塊
300‧‧‧運算引擎區塊/系統
307‧‧‧資料埠
308、408‧‧‧數值識別指令
310‧‧‧功能處理指令
406‧‧‧接收指令
410‧‧‧功能判定指令
412‧‧‧功能執行指令
下列詳細說明係參考圖式,其中:
圖1係一種包含一近記憶體運算架構之例示性系統之一方塊圖;
圖2係一種用以執行一處理核心之替換功能之例示性方法之一流程圖;
圖3係一種包含一近記憶體運算架構之例示性運算引擎區塊之一流程圖;以及
圖4係一種包含一近記憶體運算架構之例示性系統之一流程圖。
Claims (20)
- 一種運算引擎區塊,包含: 一資料埠,其將一處理核心連接至一資料快取,其中該資料埠接收請求俾存取一記憶體; 一資料通訊路徑,其用以致能該記憶體之資料請求的服務;以及 該處理核心組配以: 識別在一第一資料請求之一預定位址範圍中之一數值; 當一第一數值被識別時,調整該處理核心所使用之一載入指令之位元大小。
- 如請求項1之系統,其中該資料通訊路徑存取一晶片上網路(network-on-chip)介面。
- 如請求項1之系統,其中一第二數值導致該處理核心執行一清除操作而非一載入操作。
- 如請求項1之系統,其中一第三數值導致該處理核心將一行資料儲存至該記憶體中之一位置而不會擷取目前儲存於該位置中之一現存行資料。
- 如請求項1之系統,其中一第四數值導致該處理核心在一預設模式中操作。
- 如請求項1之系統,其中該載入指令之該位元大小為256位元以及該系統介面容許每個處理核心有32個待辦快取行大小之請求。
- 如請求項1之系統,其中該數值導致該處理核心調整操作行為而不會引入將導致一軟體工具鏈之重新編譯的任何改變。
- 如請求項1之系統,進一步包含: 一指令快取,其具有於該運算引擎區塊之正常操作期間不會自該指令快取中驅出之一永久區。
- 如請求項8之系統,其中供該處理核心用之多數指令係儲存在該永久區上,該等多數指令包含供該載入指令用之一指令。
- 一種方法,其包含: 接收用以執行該處理核心之一預設功能之一操作之一指令; 藉著該處理核心,識別該指令之一預定位址範圍中之一數值; 藉著該處理核心,基於該數值判定一替換功能;以及 藉著該處理核心,執行該替換功能而非該預設功能, 其中一第一數值導致該處理核心執行具有不同於一預設位元大小之一位元大小之一載入指令,以及 其中一第二數值導致該處理核心執行一清除操作而非一載入操作。
- 如請求項10之方法,其中一第三數值導致該處理核心將一行資料儲存至該記憶體中之一位置而不會讀取目前儲存於該位置中之一現存行資料。
- 如請求項10之方法,其中一第二數值導致該處理核心執行一清除操作而非一載入操作。
- 如請求項10之方法,其中一第四數值導致該處理核心在一預設模式中操作。
- 如請求項10之方法,其中該數值導致該處理核心調整操作行為而不會將任何改變引入至該編譯軟體工具鏈中。
- 一種系統,其包含: 一處理核心組配以: 接收用以執行該處理核心之一操作之一指令; 識別該指令之一預定位址範圍中之一數值; 依據該數值判定一替換功能;以及 執行該替換功能, 其中一第一數值導致該處理核心執行具有一調整位元大小而非一預設位元大小之一載入操作,以及 其中一第二數值導致該處理核心執行一清除操作而非該載入操作。
- 如請求項15之系統,其中該預定位址範圍包含三個最高有效位址位元。
- 如請求項15之系統,其中 一第三數值導致該處理核心將一行資料儲存至該記憶體中之一位置而不會擷取目前儲存於該位置中之一現存行資料。
- 如請求項15之系統,其中一第四數值導致該處理核心執行一預設功能。
- 如請求項15之系統,其中該載入指令之該調整位元大小為256位元。
- 如請求項15之系統,其中該數值導致該處理核心調整操作行為而不會將任何改變引入至該編譯軟體工具鏈中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/597,757 US20180336034A1 (en) | 2017-05-17 | 2017-05-17 | Near memory computing architecture |
US15/597,757 | 2017-05-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201908968A true TW201908968A (zh) | 2019-03-01 |
Family
ID=62495544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107116654A TW201908968A (zh) | 2017-05-17 | 2018-05-16 | 近記憶體運算架構 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180336034A1 (zh) |
EP (1) | EP3407184A3 (zh) |
CN (1) | CN108958848A (zh) |
TW (1) | TW201908968A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11481317B2 (en) * | 2020-06-26 | 2022-10-25 | Micron Technology, Inc. | Extended memory architecture |
US11455251B2 (en) * | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
CN112380147B (zh) * | 2020-11-12 | 2022-06-10 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
US11656796B2 (en) * | 2021-03-31 | 2023-05-23 | Advanced Micro Devices, Inc. | Adaptive memory consistency in disaggregated datacenters |
US20220413804A1 (en) * | 2021-06-28 | 2022-12-29 | Micron Technology, Inc. | Efficient complex multiply and accumulate |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US9311085B2 (en) * | 2007-12-30 | 2016-04-12 | Intel Corporation | Compiler assisted low power and high performance load handling based on load types |
US8055816B2 (en) * | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
EP2505773B1 (en) * | 2011-03-30 | 2013-05-08 | Welltec A/S | Downhole pressure compensating device |
US9239793B2 (en) * | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
US9734079B2 (en) * | 2013-06-28 | 2017-08-15 | Intel Corporation | Hybrid exclusive multi-level memory architecture with memory management |
-
2017
- 2017-05-17 US US15/597,757 patent/US20180336034A1/en not_active Abandoned
-
2018
- 2018-05-16 EP EP18172607.6A patent/EP3407184A3/en not_active Withdrawn
- 2018-05-16 TW TW107116654A patent/TW201908968A/zh unknown
- 2018-05-17 CN CN201810473602.7A patent/CN108958848A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3407184A3 (en) | 2019-04-03 |
EP3407184A2 (en) | 2018-11-28 |
CN108958848A (zh) | 2018-12-07 |
US20180336034A1 (en) | 2018-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201908968A (zh) | 近記憶體運算架構 | |
US20150261535A1 (en) | Method and apparatus for low latency exchange of data between a processor and coprocessor | |
US20140208075A1 (en) | Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch | |
KR20180025127A (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
US10552340B2 (en) | Input/output direct memory access during live memory relocation | |
US20130054896A1 (en) | System memory controller having a cache | |
US10963295B2 (en) | Hardware accelerated data processing operations for storage data | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US10817456B2 (en) | Separation of control and data plane functions in SoC virtualized I/O device | |
CN114625676A (zh) | 用以限制向存储器装置的数据传送时间的回写高速缓存策略 | |
US7882309B2 (en) | Method and apparatus for handling excess data during memory access | |
US20220059163A1 (en) | Extended memory communication | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
CN114270317B (zh) | 层次型存储器系统 | |
WO2020247240A1 (en) | Extended memory interface | |
US11579882B2 (en) | Extended memory operations | |
WO2017011021A1 (en) | Systems and methods facilitating reduced latency via stashing in systems on chips | |
JP7028902B2 (ja) | ストレージシステム及び入出力制御方法 | |
US10860520B2 (en) | Integration of a virtualized input/output device in a computer system | |
US10853303B2 (en) | Separation of control and data plane functions in SoC virtualized I/O device | |
US20230259294A1 (en) | Systems, methods, and apparatus for copy destination atomicity in devices | |
CN114258534B (zh) | 阶层式存储器系统 | |
JP7242928B2 (ja) | ストレージシステム及び入出力制御方法 | |
CN114270442A (zh) | 层次型存储器系统 |