TWI782403B - 具有平行載入儲存之共享高速暫存記憶體 - Google Patents

具有平行載入儲存之共享高速暫存記憶體 Download PDF

Info

Publication number
TWI782403B
TWI782403B TW110103103A TW110103103A TWI782403B TW I782403 B TWI782403 B TW I782403B TW 110103103 A TW110103103 A TW 110103103A TW 110103103 A TW110103103 A TW 110103103A TW I782403 B TWI782403 B TW I782403B
Authority
TW
Taiwan
Prior art keywords
memory
vector
data
processor core
data path
Prior art date
Application number
TW110103103A
Other languages
English (en)
Other versions
TW202134956A (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 TW202134956A publication Critical patent/TW202134956A/zh
Application granted granted Critical
Publication of TWI782403B publication Critical patent/TWI782403B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Peptides Or Proteins (AREA)

Abstract

本發明描述用於經組態以實施一神經網路之一硬體電路之包含電腦可讀媒體之方法、系統及設備。該電路包含一第一記憶體、各自第一及第二處理器核心及一共享記憶體。該第一記憶體提供用於執行運算以產生用於一神經網路層之一輸出之資料。該等第一及第二核心之各者包含用於儲存自由該第一記憶體所提供之該資料導出之向量值之一向量記憶體。該共享記憶體通常安置於該第一記憶體與至少一核心中間且包含:i)一直接記憶體存取(DMA)資料路徑,其經組態以在該共享記憶體與該等第一及第二核心之該等各自向量記憶體之間選路傳送資料;及ii)一載入儲存資料路徑,其經組態以在該共享記憶體與該等第一及第二核心之各自向量暫存器之間選路傳送資料。

Description

具有平行載入儲存之共享高速暫存記憶體
本說明書大體上係關於用於執行神經網路運算之一硬體電路之電路系統。
神經網路係採用節點之一或多層以針對一經接收輸入產生一輸出(例如,一分類)的機器學習模型。一些神經網路除了一輸出層之外亦包含一或多個隱藏層。各隱藏層之輸出係用作至該網路中之一或多個其他層(例如,該網路之其他隱藏層或該輸出層)之輸入。該網路之一些層根據一各自參數集之當前值自一經接收輸入產生一輸出。一些神經網路係經組態用於影像處理之廻旋神經網路(CNN)或經組態用於語音及語言處理之遞歸神經網路(RNN)。
一CNN之一神經網路層可具有可對應於參數或權重之一組相關聯內核。該組相關聯內核係用於透過該神經網路層處理輸入(例如,一批次輸入)以產生該層之一對應輸出以用於運算一神經網路推理。一批次輸入及一組內核可分別表示為輸入及權重之一張量。該張量可對應於一多維陣列。實施一神經網路之一硬體電路包含具有藉由一位址值識別之位置之記憶體。該等記憶體位置可對應於一張量之元素且可使用電路之控制邏輯來移動或存取該等張量元素。例如,該控制邏輯可判定或運算一元素之一記憶體位址值以載入或儲存該元素之對應資料值。
本文件描述具有一改良架構之一硬體電路,其併入有一靜態隨機存取記憶體(SRAM)之經分配以用於在該電路之多個各自處理器核心中共享之資源。更明確言之,該電路包含通常可定位於一高頻寬記憶體(HBM)與一專用處理器之至少兩個處理器核心中間之一共享記憶體。該共享記憶體包含相對於處理器核心之特定運算資源實體及邏輯地配置之資源(諸如記憶體庫及暫存器)。共享記憶體資源之該實體及邏輯配置容許在HBM與硬體電路之各自處理器核心之間以及在一單個處理器核心之相異資源之間或在兩個相異處理器核心之各自資源之間的資料通信期間提高速度及處理量。
本說明書中所描述之標的物之一個態樣可體現於一種經組態以實施包含多個神經網路層之一神經網路之電路中。該電路包含:一第一記憶體,其經組態以提供用於執行運算以產生用於該神經網路之一層之一輸出之資料;一第一處理器核心,其包含經組態以儲存自由該第一記憶體所提供之該資料導出之第一向量值之一第一向量記憶體;一第二處理器核心,其包含經組態以儲存自由該第一記憶體所提供之該資料導出之第二向量值之一第二向量記憶體;及一共享記憶體,其安置於該第一記憶體與該等第一或第二處理器核心之至少一者中間。該共享記憶體包含:一直接記憶體存取(DMA)資料路徑,其經組態以在該共享記憶體與該第一向量記憶體或該第二向量記憶體之間選路傳送資料通信;及一載入儲存資料路徑,其經組態以在該共享記憶體與該第一處理器核心或該第二處理器核心之一各自向量暫存器之間選路傳送資料通信。
此等及其他實施方案可各視需要包含以下特徵之一或多者。例如,在一些實施方案中,該電路包含多個處理器核心,該第一處理器核心及該第二處理器核心在該多個處理器核心當中;且該共享記憶體包含在該電路各處實體地分佈以與該電路處之該多個處理器核心之各者交換資料通信之多個記憶體資源。
在一些實施方案中,該共享記憶體包含一共享記憶體控制單元,該共享記憶體控制單元經組態以:實行引起該多個記憶體資源之一第一部分用作一DMA記憶體單元之軟體指令,該DMA記憶體單元可操作以在該第一記憶體與該第一處理器核心及該第二處理器核心之各者之間移動資料。該多個記憶體資源包含資源之一第二部分,其等經組態以:接收沿著該載入儲存資料路徑選路傳送之資料值;及針對臨限數目個處理器循環暫時儲存該等資料值。
資源之該第二部分可經組態以:回應於針對該臨限數目個處理器循環暫時儲存該等資料值而將該等資料值提供至該第一處理器核心或該第二處理器核心之該各自向量暫存器。在一些實施方案中,該共享記憶體包含:由該共享記憶體之一記憶體資源子集形成之一軟體控制之分級(staging)資源,該軟體控制之分級資源係用於管理資料值自該第一記憶體至該第一處理器核心或該第二處理器核心之該各自向量暫存器之流動。
在一些實施方案中,該電路包含一矩陣運算單元,該矩陣運算單元經組態以執行該等運算之一子集以產生用以產生用於該神經網路之該層之該輸出之經累加值。該軟體控制之分級資源可用於管理對應於向量陣列之資料自該第一記憶體至該矩陣運算單元之流動,其中該等向量陣列係自由該第一記憶體所提供之該等資料值導出。在一些實施方案中,該電路包含與該第一記憶體通信之一向量處理單元;該向量處理單元經組態以自在該電路處產生之經累加值產生一激發值向量;且該激發值向量對應於用於該神經網路之該層之該輸出。
該軟體控制分級資源可為沿著該載入儲存資料路徑之一載入區段之一先進先出(FIFO)記憶體結構;且該FIFO記憶體結構經組態以在將一值向量選路傳送至該第一處理器核心或該第二處理器核心之該各自向量暫存器之前針對臨限數目個處理器循環暫時儲存該值向量。在一些實施方案中,該共享記憶體經組態以用作包含在該多個處理器核心之一或多個處理器核心之間共享之對應於記憶體庫之記憶體資源的一共享全域記憶體空間。
在一些實施方案中,用於執行運算以產生用於第一層之該輸出之該資料包含:待透過該神經網路之該第一層處理之輸入;用於該神經網路之該第一層之一各自權重集合;及用於透過該第一層使用用於該第一層之該各自權重集合處理該等輸入之一或多者以產生用於該第一層之該輸出的指令。
本說明書中所描述之標的物之一態樣可體現於一種使用經組態以實施包含多個神經網路層之一神經網路之一電路執行運算以產生用於該神經網路之一層之一輸出的方法中。該方法包含:自一第一記憶體提供用以產生用於一神經網路層之一輸出之資料;及在該電路之一第一處理器核心處使用該第一處理器核心之一第一向量記憶體儲存值向量,其中該第一向量記憶體經組態以儲存自由該第一記憶體所提供之該資料導出之第一向量值。
該方法進一步包含使用該電路中之一共享記憶體之一直接記憶體存取(DMA)資料路徑在該共享記憶體與該第一向量記憶體之間選路傳送至少包含該等第一向量值之資料通信;使用該共享記憶體之一載入儲存資料路徑在該共享記憶體與該第一處理器核心之一各自向量暫存器之間選路傳送包含第二向量值之資料通信;及藉由一矩陣運算單元使用沿著該共享記憶體之該各自載入儲存資料路徑及該DMA資料路徑並行選路傳送至該矩陣運算單元之該等各自第一及第二向量值產生對應於用於該神經網路層之該輸出之經累加值。
此態樣及其他態樣之其他實施方案包含經組態以執行方法之動作之對應系統、設備及編碼於電腦儲存裝置上之電腦程式。一或多個電腦之一系統可憑藉安裝於該系統上之在操作中引起該系統執行動作之軟體、韌體、硬體或其等之組合而如此組態。一或多個電腦程式可憑藉具有在藉由資料處理設備實行時引起該設備執行動作之指令而如此組態。
本說明書中所描述之標的物可實施於特定實施例中以實現以下優點之一或多者。
相對於先前方法,共享記憶體提供可在一硬體電路之兩個或兩個以上處理器核心之間有效地共享之一記憶體構造以改良該硬體電路處之神經網路運算之加速及同時實行。共享記憶體可經結構化以使特定資源實質上駐留於該等處理器核心外部,使得共享將用於直接記憶體存取及載入/儲存操作之資料自共享記憶體移動至處理器核心中之一些(或所有)導線。與需要專用導線進行各種資料傳送之其他方法相比,此改良頻寬利用率及效率。
共享記憶體併入有提供較高峰值效能之一載入儲存資料路徑,因為該載入儲存資料路徑不需要透過向量記憶體巨集(macros)選路傳送資料以將向量陣列載入/寫入至一晶片上向量暫存器之記憶體位置。使用共享記憶體之改良架構及資源,歸因於可整合於向量暫存器處之額外可用暫存器埠,可與向量記憶體載入及儲存並行實行針對向量暫存器之載入及儲存。
電路架構及技術可用於將一神經網路處理器之共享SRAM資源整合並有效地結構化至一單個電路封裝中。共享SRAM資源之整合及有效結構化容許運算推理,而不會招致獲得額外資料值之晶片外通信之懲罰。
本說明書中所描述之標的物之一或多項實施方案之細節係在下文附圖及描述中闡述。將自描述、圖式及發明申請專利範圍明白標的物之其他潛在特徵、態樣及優點。
相關申請案之交叉參考 本申請案主張於2020年1月27日申請之美國臨時申請案第62/966,518號之權利,該案之內容以引用的方式併入本文中。
本說明書描述一硬體電路及使用該硬體電路之相對於先前設計改良之一架構實施之資料處理技術。硬體電路可為一專用處理器,諸如一神經網路處理器、一特定應用積體電路(ASIC)或一硬體加速器。硬體電路經組態以實施包含多個神經網路層之一神經網路。本文件中所描述之經改良架構及資料處理技術容許表示一硬體加速器之一電路在使一實例性神經網路模型之運算(包含透過一CNN、RNN或其他類型之神經網路之層處理輸入以產生對應於一神經網路推理之輸出的運算)加速時實現速度及頻寬之增加。
電路通常包含一第一記憶體、各自第一及第二處理器核心及一共享記憶體。該第一記憶體提供用於執行運算以產生用於一神經網路層之一輸出之資料。該等第一及第二處理器核心之各者可為經組態以使用自由第一記憶體所提供之該資料導出之輸入及權重執行神經網路運算之張量處理器核心。例如,第一及第二處理器核心可使用分別自由第一記憶體所提供之一對應輸入張量及權重/參數張量導出之輸入向量及權重向量來實行神經網路運算。
第一及第二核心之各者包含一各自向量記憶體,該各自向量記憶體經組態以儲存傳遞至該向量記憶體之向量值。該等向量值係自由第一記憶體所提供之資料導出且經由共享記憶體傳遞至向量記憶體。共享記憶體通常安置於第一記憶體與處理器核心之至少一者中間。共享記憶體包含:i)一直接記憶體存取(DMA)資料路徑,其經組態以在共享記憶體與第一及第二核心之各自向量記憶體之間選路傳送資料;及ii)一載入儲存資料路徑,其經組態以在共享記憶體與第一及第二核心之各自向量暫存器之間選路傳送資料。該DMA資料路徑與該載入儲存資料路徑之組合容許藉由提供平行資料路徑而相對於先前設計增加頻寬,該等平行資料路徑可同時用於提供向量值至實行神經網路運算之電路之運算陣列。
圖1係包含一實例性硬體電路101之一運算系統100之一方塊圖。如上文所提及,硬體電路101可表示一硬體加速器或某一其他專用處理器。在一些情況中,系統100係用於使與人工深度神經網路(DNN) (諸如RNN或CNN)相關聯之張量或神經網路運算加速之一實例性運算系統。例如,系統100經組態以在一實例性硬體加速器上實施一CNN且將資料值傳遞至該硬體加速器以產生用於運算一推理之輸出。
在一些實施方案中,系統100係一系統單晶片。例如,該系統單晶片可包含硬體電路101及在本文件中被描述為包含於系統100中之一些(或所有)其他組件及裝置中。
硬體電路101可為經組態以使一神經網路模型之實行及/或執行加速之一硬體加速器。例如,相對於在諸如一中央處理單元(CPU)之一實例性通用機器上之模型實行,可使該神經網路模型之實行加速。類似地,相對於在並不具有本說明書中所描述之經改良硬體特徵及技術之另一硬體加速器(諸如一圖形處理單元(GPU))上之模型實施,可使神經網路模型之執行及實行加速。
包含電路101之系統100包含一系統記憶體102及一共享記憶體104。系統記憶體102可表示與硬體電路101之一處理器核心105-1、105-2交換資料通信之一高頻寬記憶體(「HBM 102」)或一輸入/輸出(I/O)裝置。資料通信通常可包含將資料值寫入至定位於一特定處理器核心105-1、105-2中之一向量記憶體106、108或自該特定處理器核心之向量記憶體106、108讀取資料。例如,HBM 102可與處理器核心105-1交換資料通信以將輸入傳遞至核心及接收藉由該核心之一或多個運算資源產生之輸出。在一些實施方案中,系統記憶體102表示不同類型之記憶體系統及記憶體技術,包含HBM、DRAM、DIMMS或非DRAM技術。
資料值可表示向量元素或向量值陣列。例如,一第一向量陣列可表示待透過一神經網路層處理之一批次輸入,而一第二向量陣列可表示用於該層之一權重集合。相關地,一第三向量陣列可表示對應於在處理器核心105-1處產生之一輸出之一經累加值向量,而一第四向量陣列可表示一激發值向量,該激發值向量表示在處理器核心105-2處產生之一輸出。
HBM 102可為系統100之動態隨機存取記憶體(DRAM)資產。在一些實施方案中,HBM 102係相對於電路101之一外部或晶片外記憶體且經組態以與系統100之晶片上向量記憶體庫(下文所描述)交換資料通信。例如,HBM 102可安置於在表示電路101之一積體電路晶粒之外部之一實體位置處。因此,相對於安置於該積體電路晶粒內之運算資源,HBM 102可為遠端或非本端。替代性地,HBM 102或其資源之部分可安置於表示電路101之積體電路晶粒內,使得HBM 102係在電路之運算資源本端或與電路之運算資源共置。
系統100可包含一或多個處理器核心105-1、105-2。在一些實施方案中,系統100包含多個處理器核心105-n ,其中n係大於或等於1之一整數。在圖1以及下文所描述之圖2及圖3之實例中,系統100經展示為包含兩個處理器核心;然而,包含本文中所描述之硬體電路101之系統100可具有更多或更少處理器核心。在一些實例中,可相對於一單個處理器核心之組件及資源共享與共享記憶體104 (包含其記憶體資源及不同資料路徑)有關之所描述技術。一般而言,一處理器核心105-n 係系統100 (或硬體電路101)之一離散、自含型處理/運算單元。
各處理器核心105經組態以獨立地實行一多層神經網路之一或多個層所需之運算(例如,神經網路運算)。可需要該等運算以處理用於一機器學習工作負載之資料或實行該工作負載之特定任務。在一處理器核心處執行以透過一或多個神經網路層處理輸入之運算可包含一第一資料值(例如,輸入或激發)集合與一第二資料值(例如,權重)集合之乘法。例如,運算可包含在一或多個循環內將一輸入或激發值與一權重值相乘且執行許多循環內之乘積之累加。各核心105通常可包含用於執行此等運算之一矩陣運算單元及視需要一向量處理單元。此等單元係在下文參考圖3更詳細描述。
將第一及第二資料值集合中之不同值儲存於硬體電路101之一處理器核心中之一記憶體構造之特定記憶體位置處。在一些實施方案中,第一資料值集合中之個別值可對應於一輸入張量之各自元素,而第二資料值集合中之個別值可對應於一權重(或參數)張量之各自元素。作為一實例,一序列層中之一神經網路層可處理一輸入集合,諸如藉由該序列層中之另一神經網路層產生之影像像素資料或激發值之輸入。
輸入集合或激發值集合可表示為具有沿著其各自維度之多個元素之一維(1D)或多維張量(例如,2D或3D)。可將儲存一資料值之記憶體位置之各者映射至一單維或多維張量之一對應元素且可使用電路之控制邏輯來移動或存取張量元素。例如,控制邏輯可判定或運算經映射至一元素之一記憶體位址值以載入或儲存該元素之對應資料值。
硬體電路101具有包含不同記憶體構造之一專用記憶體階層。此等記憶體構造之各者相對於其他構造具有不同頻寬及延時性質且其等在硬體電路101內之實體放置亦可不同。實例性記憶體構造包含共享記憶體104、向量記憶體106、108及向量暫存器110、112。一般而言,記憶體構造可操作以儲存資料值(諸如與待在一神經網路層處處理之輸入、激發或增益值有關之向量值),及藉由一神經網路層回應於透過該層處理輸入或激發而產生之輸出激發。輸出激發之產生及儲存以及用於執行此等操作之各種記憶體構造係在下文參考圖2及圖3更詳細描述。
圖2係展示共享記憶體104之資源或區段如何配置於硬體電路101處以促進硬體電路之各種組件之間的資料通信之實例的一方塊圖200。如上文所指示,共享記憶體104提供系統100之經改良硬體架構及資料處理技術之一基礎。共享記憶體104可表示一實例性神經網路處理器晶片之晶片上SRAM資源。在一些實施方案中,共享記憶體104存在於(例如,大致或實質上存在於) HBM 102與一對應處理器核心105-1、105-2之一各自向量記憶體106、108之間。
共享記憶體104可表示晶片或電路101上之一共享中心空間。例如,共享記憶體104經組態以用作一共享全域記憶體空間,該共享全域記憶體空間包含在可存在於系統100中及/或包含於硬體電路101處之多個處理器核心當中之一或多個處理器核心105-1、105-2之間共享之對應於記憶體庫及暫存器之記憶體資源。如下文更詳細描述,共享記憶體104經組態以用作一軟體控制之高速暫存記憶體。在一些實施方案中,共享記憶體104之一些(或所有)資源經組態以用作一軟體控制之高速暫存器(分級資源)而非一硬體管理之快取區。在其他實施方案中,共享記憶體104之一些記憶體資源經組態以用作一硬體管理之快取區或作為該硬體管理之快取區操作,同時共享記憶體104之一些記憶體資源(例如,資源之剩餘部分)經組態以用作一軟體控制之高速暫存器。例如,系統100可分配經容許作為一硬體管理之快取區操作之資源之一部分,同時使用共享記憶體104之其餘部分作為一軟體高速暫存器。
系統100經組態以向一使用者暴露至少兩個程式化介面以利用共享記憶體104所提供之資料傳送功能。一第一介面暴露可程式化DMA資料傳送功能及操作,而一第二、不同介面暴露可程式化載入/儲存資料傳送功能及操作。此等介面功能之各者表示將在下文更詳細描述之共享記憶體104之邏輯屬性。
如上文所提及,系統100之記憶體構造具有不同頻寬及延時性質。例如,共享記憶體104與HBM 102之DRAM存取相比可具有較高頻寬及較低延時,但與對向量記憶體106、108之存取相比具有較低頻寬及較高延時。在一些實例中,共享記憶體104具有低於HBM 102之DRAM資產之一資料容量,但具有高於處理器核心之各自向量記憶體之一資料容量。一般而言,此等不同頻寬及延時性質表示標準記憶體階層權衡。
系統100之記憶體構造(尤其共享記憶體104)亦可改變其等在硬體電路101內之實體放置。共享記憶體104包含可相對於處理器核心105-1、105-2之特定運算資源實體及邏輯地配置之資源(諸如記憶體庫及暫存器)。在此背景內容中,共享記憶體104通常可參考其實體結構及其邏輯結構來特性化。最初將論述共享記憶體104之實體結構,而在下文描述其邏輯結構。
關於其實體結構,共享記憶體104之資源可實體地分佈於硬體電路101上。例如,形成共享記憶體104之資源之不同子集、部分或區段可實體地分佈於電路101之各種位置處以使不同類型之資料傳送操作及處理技術能夠實施在系統100處。在一些實施方案中,共享記憶體104之資源之一個區段可駐留於電路101之一處理器核心內部,而資源之另一區段可駐留於電路101之一處理器核心外部。在圖2之實例中,共享記憶體104之一區段係在處理器核心105-1、105-2之各者外部以實現在HBM 102之記憶體位置與共享記憶體104之記憶體位置之間移動大資料區塊之DMA操作。
再次簡要地參考HBM 102,此類型之系統記憶體可為由系統100使用以提供高頻寬資料及/或與各自處理器核心之向量記憶體交換高頻寬資料之一外部記憶體結構。在一些實施方案中,HBM 102經組態用於自電路101之處理器核心中之向量記憶體之記憶體位址位置獲得資料或將資料提供至該等記憶體位址位置之各種直接記憶體存取(DMA)操作。更明確言之,藉由共享記憶體104之一實例性控制方案及記憶體資源來實現涉及HBM 102與向量記憶體106、108交換資料之DMA操作。
在圖2及圖3 (下文所描述)之實例中,共享記憶體104包含一共享記憶體控制單元201 (「控制單元201」)。控制單元201經組態以產生用於控制涉及HBM 102、共享記憶體104、向量記憶體106、108及向量暫存器110、112之各者之記憶體存取操作之控制信號114。
控制單元201實施跨系統100之不同記憶體(例如,HBM 102、共享記憶體104、向量記憶體106、108及向量暫存器110、112)分佈配之一控制方案。在一些實施方案中,基於控制單元201與各記憶體之一各自控制單元之間的通信,此控制實施方案跨不同記憶體分佈。例如,控制方案可基於藉由控制單元201提供之藉由記憶體之各自控制單元本端處理之控制信號而跨此等不同記憶體分佈。
資料路徑之共享可用於在HBM 102與處理器核心105-1、105-2之各自向量記憶體之間移動資料。當此發生時,系統100引起激發用於一給定記憶體或資料路徑之任何(及所有)所需控制單元以管理需要在適當觸碰點處發生之資料交遞。控制單元201經組態以實行軟體指令及產生引起共享記憶體104之記憶體資源之一第一部分用作一DMA記憶體單元之控制信號。
可藉由參考處理器核心105-1之共享核心資料路徑204及參考處理器核心105-2之共享核心資料路徑224來表示資源之第一部分。此代表性DMA記憶體單元可操作以基於藉由控制單元201產生之控制信號在HBM 102與第一處理器核心105-1及第二處理器核心105-2之各者之間移動資料。
例如,可產生控制信號以實行一DMA操作以:a)使用資料路徑202、共享核心資料路徑204或資料路徑206在共享記憶體104及向量記憶體106之記憶體位置之間;及b)使用資料路徑222、共享核心資料路徑224或資料路徑226在共享記憶體104及向量記憶體108之記憶體位置之間移動資料(例如,一向量)之區塊。在一些實施方案中,替代性地,共享記憶體104可被稱為共享CMEM 104。
如本文件中所使用,CMEM通常對應於實體連續記憶體(CMEM)之區塊,其等提供作為資料緩衝器及晶片上SRAM儲存器之有用組態。如下文更詳細描述,在系統100中,CMEM資源之區塊係實體地分佈於硬體電路101處且經配置用於在可經組態為一硬體加速器或其他類型之專用處理器之處理器核心之組件之間共享。共享核心資料路徑204及224之各者係可指示一靜態爭用之實例性節點,該靜態爭用可在共享資料路徑上發生以使向量資料移動越過系統中之此等點。
如圖2之實例中所展示,硬體電路101及系統100經組態以包含多個載入儲存資料路徑202、206、多個CMEM載入資料路徑208、214、228、234,及多個CMEM儲存資料路徑215、235。硬體電路101及系統100亦包含多個共享分級區塊210、230 (下文所描述)。在圖2之實例中,資料路徑202、222之各者可經組態為用於回應於實行一DMA操作而選路傳送資料(例如,向量或純量值)之一資料路徑、用於回應於實行一CMEM載入/儲存操作而選路傳送資料之一資料路徑,或兩者。由共享記憶體104支援之DMA操作及資料路徑202、206、222及226可用於參考特定記憶體偏移及步幅參數而在不同記憶體結構之間移動資料。
例如,系統100經組態以使用共享記憶體104以實行一DMA操作,該DMA操作涉及將1百萬位元組之資料自一組記憶體位置移動至另一組記憶體位置且具有偏移0x04。共享記憶體104及系統100可操作以在實行DMA操作時支援各種步幅功能。例如,用於移動1百萬位元組之資料之DMA操作可包含相對於位址基以每200 KB插入位址間距之一步幅操作。
在一些實施方案中,步幅操作係用於基於一所要讀取序列來插入位址間距,該所要讀取序列將在把資料移動至其目的地位置之後稍後實行以讀取1百萬位元組之資料。例如,可基於一步幅操作來儲存1百萬位元組之資料區塊,該步幅操作對應於將如何讀取或擷取資料以在一神經網路之不同層處或跨用於一特定神經網路層之不同濾波或權重集合處理。
共享記憶體104之控制單元201亦經組態以引起各種載入儲存操作之執行。例如,控制單元201產生控制信號以實行以下載入儲存操作:a)使用資料路徑202、共享核心資料路徑204或資料路徑208 (針對核心105-1處之一載入操作)在共享記憶體104之記憶體位置與共享分級區塊210之記憶體位置之間;及b)使用資料路徑222、共享核心資料路徑224或資料路徑228 (針對核心105-2處之載入操作)在共享記憶體104之記憶體位置與共享分級區塊230之記憶體位置之間移動各種數量之資料(例如,向量或向量值)。
類似地,可產生控制信號以實行以下載入儲存操作:a)使用資料路徑202、共享核心資料路徑204或資料路徑215 (針對核心105-1處之一儲存操作)在共享記憶體104及向量暫存器110之記憶體位置之間;及b)使用資料路徑222、共享核心資料路徑224或資料路徑235 (針對核心105-2處之儲存操作)在共享記憶體104及向量暫存器112之記憶體位置之間移動各種數量之資料(例如,向量或向量值)。
現參考共享記憶體104之邏輯結構,如上文所提及,系統100經組態以向一使用者暴露至少兩個程式化介面以利用由共享記憶體104所提供之資料傳送功能。至少一介面暴露可程式化DMA功能且另一介面暴露可程式化CMEM載入/儲存功能,其中各可表示共享記憶體104之邏輯屬性。對於載入/儲存目的,共享記憶體104在邏輯上暴露為向量記憶體106、108之平行記憶體。以此方式,各載入儲存資料路徑可操作以提供用於將資料區塊或一特定資料件移動通過記憶體系統(諸如通過電路101之各自處理器核心105-1、105-2或多個核心之向量暫存器)之一額外(或平行)資料路徑。例如,可與DMA操作同時針對共享記憶體104之記憶體資源實行載入儲存操作。
更明確言之,可實行一DMA操作以使用DMA資料路徑206在共享記憶體104及向量記憶體106之記憶體位置之間移動一值向量,而與該DMA操作同時實行一載入儲存操作以在共享記憶體104及共享分級區塊210之記憶體位置之間移動一不同值向量。可使用對應於處理器核心105-1之資源之處理器核心105-2之資源在處理器核心105-2 (或其他核心)中發生類似同時操作。
相對於DMA操作,使用共享記憶體104之CMEM資源執行之載入/儲存操作可表示共享記憶體104之高效能功能,或使用共享記憶體104之一高效能方法。在一些實施方案中,控制單元210經組態以實行軟體指令及產生引起共享記憶體104之記憶體資源之一第二部分用作一軟體控制之分級資源之控制信號,該軟體控制之分級資源係用於執行載入/儲存操作。
可藉由參考處理器核心105-1之共享分級區塊210及參考處理器核心105-2之共享分級區塊230來表示資源之第二部分。因此,共享分級區塊210、230之各者可表示由共享記憶體104之一記憶體資源子集形成之一軟體控制之分級資源(或高速暫存器)。在一些實例中,系統100之軟體控制之分級資源經組態以管理向量資料值自HBM 102至第一處理器核心105-1或第二處理器核心105-2之各自向量暫存器110或112之流動。
共享記憶體104及其資源具有唯一地可組態為(例如)用於在諸如HBM 102或向量記憶體106、108之記憶體構造之間移動資料之一DMA記憶體,亦可組態為用於將資料直接移動至各處理器核心105-1、105-2上之各自向量暫存器110、112中之一載入/儲存記憶體的一性質。共享記憶體104之此等可組態態樣容許藉由在核心上運行之軟體以精細粒度排程其資源及定址。例如,共享記憶體104可為一軟體管理(非硬體管理)之SRAM資源,其中一處理器核心之一編譯器專門管理其記憶體之定址,包含可或可不存在於共享記憶體104之記憶體位址位置處之資料之類型。
在一些實施方案中,共享記憶體104之軟體控制之分級資源經組態為沿著包含用於選路傳送資料以在共享CMEM 203或HBM 102處儲存之CMEM儲存資料路徑215或235之處理器核心之載入儲存資料路徑之一載入區段的一先進先出(FIFO)記憶體結構(例如,共享分級區塊210或230)。該FIFO記憶體結構經組態以在將一值集合選路傳送至第一處理器核心105-1或第二處理器核心105-2之各自向量暫存器110、112之前針對臨限數目個處理器循環暫時儲存一資料值集合。FIFO記憶體結構係用於減輕可由具有一特定載入延時之一CMEM載入操作所引起之暫存器壓力及排程複雜性。
在一些實施方案中,基於有可能引起與針對全部50個循環保留一給定暫存器相關聯之暫存器壓力及排程複雜性之一實例性高延時(例如,50個循環) CMEM載入操作來判定時脈循環之臨限數目。為抵消或減輕關於暫存器壓力之擔憂,在硬體電路100處使用共享記憶體104之資源實體地實例化一CMEM Result FIFO (「CRF」)。在圖2之實例中,一第一CRF係由處理器核心105-1之分級區塊210表示,而一第二CRF係由分級區塊230表示。該等CRF之各者容許將一實例性CMEM載入操作分解為至少兩個階段:i)CMEM至CRF階段,其中提供CMEM位址資訊,及ii)CRF至暫存器階段,其中提供向量暫存器目標。
例如,共享分級區塊210、230之各者經組態以接收資料值(例如,純量或向量值)且針對臨限數目個處理器循環暫時儲存該等資料值。在處理器核心105-1中,沿著將分級區塊210連接至共享記憶體104之其他記憶體位置之載入資料路徑208 (及共享核心資料路徑204)將資料值選路傳送至共享分級區塊210。在處理器核心105-2中,沿著將分級區塊230連接至共享記憶體104之其他記憶體位置之載入資料路徑228 (及共享核心資料路徑224)將資料值選路傳送至共享分級區塊230。
回應於針對臨限數目個處理器循環暫時儲存資料值,共享分級區塊210經組態以將資料值提供至處理器核心105-1之向量暫存器110。同樣地,回應於針對臨限數目個處理器循環暫時儲存資料值,共享分級區塊230經組態以將資料值提供至處理器核心105-2之向量暫存器112。
系統100經組態以在相同循環上發出多個CMEM載入指令。例如,系統100可發出使用資料路徑208 (或214)及共享分級區塊210執行之一CMEM載入指令,且在相同循環上,發出使用資料路徑212執行之至向量記憶體106之一載入。在一些實例中,從軟體控制之角度來看,移動通過資源210與向量暫存器110之間的資料路徑214之一Cmem載入操作及移動通過向量記憶體106與向量暫存器110之間的資料路徑212之一Vmem載入操作可各在相同循環上發出並實行。在一些實施方案中,相對於一先前設計,採用向量暫存器110、112以包含容許向量暫存器110、112接收同時載入操作之額外埠。
例如,向量暫存器112經組態以包含容許暫存器在實行於處理器核心105-2處之同時載入操作期間自向量記憶體108及共享分級區塊230接收各自向量酬載的額外埠。在一些實例中,用於載入至向量暫存器110、112之各者之一酬載之一單個資料件涉及基於可在一單個載入操作期間移動至向量暫存器110或向量暫存器112之至多128個資料項的128個離散載入。
共享記憶體104之CMEM載入/儲存功能性可相對於先前設計提供更高峰值效能,此係因為其不需要透過向量記憶體巨集來選路傳送資料。例如,部分歸因於向量暫存器110、112處之額外可用暫存器埠,載入及儲存(沿著資料路徑215、235)可與向量記憶體載入及儲存並行實行。
在一些實施方案中,系統100包含提供至共享分級區塊210、230之各者中之一平行介面之一實例性載入儲存介面,該平行介面略過在移動通過向量記憶體106、108之資料路徑時可能存在之一些(或所有)頻寬限制。此實例性載入儲存介面可有效地提供容許自一實例性工作負載提取額外效能之更高記憶體頻寬。例如,系統100經組態以使用共享記憶體104之資源(例如,軟體控制之分級資源)執行各種載入/儲存操作,其中可執行該等載入/儲存操作以略過將資料移動通過處理器核心處之向量記憶體。
例如,硬體電路101之一組件可與共享記憶體104通信以自共享記憶體104之一記憶體庫或暫存器檔案之一單個位址位置讀取資料。在一些實例中,讀取儲存於記憶體中之一單個位址處之資料且可將該單個資料件移動至定位於一處理器核心內部之一暫存器檔案或分級區塊中。例如,一單個資料件可自共享CMEM 104之一位址位置讀取,移動通過共享核心資料路徑224且移動至處理器核心105-2中之共享分級區塊230之一位址位置中以供進一步處理。可執行該操作以略過經由向量記憶體108將資料移動通過記憶體系統,從而節省核心105-2處之處理器時脈循環及連接至向量記憶體108之資料路徑處之頻寬。
圖3係展示與硬體電路101之一實例性矩陣運算單元通信之實例性向量處理器之一方塊圖300。更明確言之,在一些實施方案中,硬體電路101之一實例性張量處理器核心302-1包含一向量處理單元304 (「向量處理器304」)及耦合至向量處理器304之一矩陣運算單元308。類似地,硬體電路101之另一張量處理器核心302-2包含一向量處理器306及耦合至向量處理器306之一矩陣運算單元308。
一般而言,硬體電路101經組態以執行運算以產生用於一神經網路層之一輸出。包含於電路101處之矩陣運算單元308及310之各者經組態以執行該等運算之一子集以產生用以產生用於該神經網路層之該輸出之經累加值。在一些實施方案中,上文所描述之軟體控制之分級資源(例如,分級區塊210、230)經組態以管理對應於向量運算元之資料自HBM 102至矩陣運算單元308、310之各者之流動。在一些情況中,該等運算元係由HBM 102提供之輸入及權重。可基於使用向量處理器304或306之算術邏輯單元(ALU)執行之資料操作將運算元結構化為向量陣列。
在圖3之實例中,控制單元201產生用於管理自共享記憶體104、向量記憶體106、108及向量暫存器110、112之記憶體位置擷取(或讀取)多個批次輸入及權重集合之操作之控制信號。可透過一神經網路層處理該等經擷取之輸入及權重以基於在矩陣運算單元308、310處執行之運算來運算經累加值。可在向量處理器304、306處處理該等經累加值以產生對應於用於神經網路層之一輸出之激發值。由控制單元201產生之控制信號係用於將藉由向量處理器304、306產生之多個輸出或輸出激發集合儲存(或寫入)至HBM 102或硬體電路101之其他記憶體位置以在一或多個其他神經網路層處進行處理。
圖4繪示將一共享記憶體104耦合至一硬體電路101處之一各自處理器核心302-1、302-2之一或多個向量處理器304、306之實例性有線連接件400。有線連接件400可表示施加對應於在一給定硬體電路處可用之導線或資料匯流排連接件之總數目之特定實體限制的一實體結構。例如,共享記憶體104之CMEM資源402之一第一區塊(bank_0)可經由導線連接件404耦合至VPU資源406之一對應區塊。VPU資源406係記憶體資源,例如,一實例性向量處理單元(諸如處理器核心302-1中之向量處理器304)之一向量暫存器或向量記憶體。類似地,共享記憶體104之CMEM資源412之一第二區塊(bank_1)可經由導線連接件414耦合至VPU資源416之一對應區塊。VPU資源416係記憶體資源,例如,一實例性向量處理單元(諸如處理器核心302-2中之向量處理器306)之一向量暫存器或向量記憶體。在一些情況中,當CMEM資源之一給定區塊連接至兩個單獨核心上之一VPU區塊時,存在要求分離CMEM資源與VPU區塊之一約束。特定言之,當CMEM資源經組態用於連接至單獨核心時,此約束要求跨一硬體電路之一實體空間分離CMEM與VPU區塊。
在一些實施方案中,共享記憶體104具有一給定大小且共享記憶體104之資源區塊及處理器資源必須存在於晶片或電路101之特定實體區域內。涉及在一處理器核心內或在處理器核心之間移動資料之實例性操作要求資料能夠在臨限數目個處理器循環內移動通過硬體電路101處之一定實體距離。由於共享記憶體104之資源之某一部分駐留於核心105-1、105-2外部且導線之實施可係昂貴的,故共享將用於一DMA操作及載入/儲存操作之資料自共享記憶體104之資源移動至一處理器核心105中之導線(例如,導線連接件404、414)。此等導線亦可用於HBM 102與向量記憶體106、108之間的DMA操作。有線連接件之此共享改良頻寬利用率及效率。
在一些實施方案中,為節省以適於一特定工作負載之一方式進行之佈線,將資料自共享CMEM 203選路傳送至處理器核心之一資源之一資料路徑可為將資料自處理器核心之一資源選路傳送至共享CMEM 203之一資料路徑之寬度的2倍。因此,本文件中所描述之技術提供實例性硬體佈局選項,該等實例性硬體佈局選項在達成共享記憶體104之邏輯優勢之複雜性與有線連接件之量及針對硬體組件在電路101處之實體放置之選項上之特定實體約束及限制之間取得平衡。
圖5係繪示使用圖1之共享記憶體使神經網路運算加速之一實例性程序500之一流程圖。可使用上文所描述之系統100來實施或實行程序500。程序500之描述可參考系統100之上述運算資源。程序500之步驟或動作可藉由可藉由本文件中所描述之裝置及資源之一或多個處理器實行之經程式化韌體或軟體指令來實現。在一些實施方案中,程序500之步驟對應於使用經組態以實施神經網路之一硬體電路執行運算以產生用於一神經網路層之一輸出的一方法。
現參考程序500,將資料自系統100之一記憶體提供至系統之一硬體電路(502)。例如,系統100將資料自HBM 102提供至硬體電路101。在一些實施方案中,資料包含用以產生用於一神經網路層之輸出之特定資料值及指令。HBM 102可表示與硬體電路101之張量處理器核心交換資料通信之一系統記憶體或一輸入/輸出(I/O)裝置。例如,HBM 102可與張量處理器核心交換資料通信以將輸入傳遞至張量核心及接收藉由張量核心產生之輸出。
系統100在電路之一第一處理器核心處使用該第一處理器核心之一向量記憶體來儲存一值向量(504)。例如,系統100可使用定位於張量處理器核心105-1中之向量記憶體106之記憶體位址位置來儲存待在神經網路層處處理之對應於一批次輸入之一輸入向量。向量記憶體106經組態以回應於處理器核心105-1自由HBM 102所提供之輸入資料識別或導出第一向量值而儲存該等第一向量值。在一些實施方案中,向量記憶體106回應於第一處理器核心105判定藉由第一記憶體提供之資料包含經指派以儲存於向量記憶體106中之一向量值子集而儲存第一向量值。
可自表示一多維輸入張量之資料值之各種元素當中之一元素集合直接使用或導出第一向量值。如上文所提及,該多維輸入張量可提供為來自HBM 102之輸入資料。在一些實施方案中,第一向量值表示自由HBM 102所提供之資料獲得、提取或以其他方式導出之用於一神經網路層之一權重集合。可回應於將值選路傳送至包含向量記憶體106之一向量處理單元304而將第一向量值儲存於向量記憶體106之記憶體位置中。向量處理單元304及向量記憶體106之各者可包含為處理器核心105-1之部分。
在電路中之一共享記憶體與該電路之一向量記憶體之間選路傳送由系統記憶體所提供之資料(506)。例如,使用共享記憶體104之至少DMA資料路徑206在共享記憶體104與處理器核心105-1之向量記憶體106之間選路傳送包含第一向量值之資料通信。更明確言之,最初藉由HBM 102提供包含第一向量值之資料通信且接著使用共享記憶體104之資源之一第一部分在共享記憶體104與向量記憶體106之間選路傳送該等資料通信。在一些例項中,在向量記憶體106與共享記憶體104之一特定區段(或子區段)之間選路傳送第一向量值。
共享記憶體104之資源之第一部分經組態以用作一DMA記憶體單元,該DMA記憶體單元可操作以實行一DMA類型操作以將資料載入至向量記憶體106之記憶體位置中。可針對資源之第一部分之個別記憶體位址位置來執行該DMA類型操作以獲得向量值陣列。使用共享記憶體104之DMA資料路徑206將該等向量值陣列選路傳送至向量記憶體106。
在電路中之一共享記憶體與電路之一各自向量暫存器之間選路傳送由系統記憶體所提供之資料(508)。例如,使用共享記憶體104之至少載入儲存資料路徑208、214在共享記憶體104與處理器核心105-1之向量暫存器110之間選路傳送包含第二向量值之資料通信。更明確言之,最初藉由HBM 102提供包含該等第二向量值之資料通信且接著使用共享記憶體104之資源之一第二部分在共享記憶體104與向量暫存器110之間選路傳送該等資料通信。在一些例項中,在向量暫存器112與共享記憶體104之一特定區段(或子區段)之間選路傳送第二向量值。
在一些實施方案中,共享記憶體104之資源之第二部分經組態為由共享記憶體104之一記憶體資源子集形成之一軟體控制之分級資源。此軟體控制之分級資源經組態以:i)接收沿著載入儲存資料路徑208選路傳送之資料值(例如,第二向量值);ii)針對臨限數目個處理器循環暫時儲存第二向量值;及iii)回應於針對該臨限數目個處理器循環暫時儲存向量值而將第二向量值提供至至少處理器核心105-1之一各自向量暫存器110。臨限數目可為一軟體定義之臨限值。例如,當在一處理器之一實例性指令串流中排程指令時,臨限數目可由軟體明確定義。
共享記憶體104可操作以將對應於第二向量值之向量值陣列載入至包含於資源之第二部分當中之分級資源之記憶體位置中。可針對資源之第二部分之個別記憶體位址位置執行一讀取操作以獲得對應於第二向量值之向量值陣列。使用(例如)共享記憶體104之載入儲存資料路徑214將此等向量陣列選路傳送至向量暫存器110。替代性地,可使用共享記憶體104之載入儲存資料路徑234將此等向量陣列選路傳送至向量暫存器112。
系統100使用向量值集合產生對應於用於神經網路層之輸出之經累加值(510)。例如,硬體電路101包含耦合至處理器核心105-1之向量處理單元304之一矩陣運算單元308。系統100引起矩陣運算單元308使用選路傳送至矩陣運算單元308之各自第一及第二向量值產生多個經累加值。在一些實施方案中,沿著電路之不同資料路徑將第一及第二向量值同時選路傳送至矩陣運算單元308。例如,可分別使用載入儲存資料路徑214及DMA資料路徑206並行地將一第一向量值集合及一第二向量值集合選路傳送至矩陣運算單元308。
可在數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等之結構等效物)或其等之一或多者之組合中實施本說明書中所描述之標的物及功能操作之實施例。本說明書中所描述之標的物之實施例可實施為一或多個電腦程式,即,在一有形非暫時性程式載體上編碼以藉由資料處理設備實行或控制資料處理設備之操作之電腦程式指令之一或多個模組。
替代性地或此外,程式指令可在一人為產生之傳播信號(例如,一機器產生之電、光學或電磁信號)上編碼,該傳播信號經產生以編碼資訊用於傳輸至合適接收器設備以藉由一資料處理設備實行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「運算系統」涵蓋用於處理資料之全部種類的設備、裝置及機器,藉由實例,包含一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路系統,例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。除硬體之外,設備亦可包含針對所討論之電腦程式產生一實行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合的程式碼。
可以任何形式之程式設計語言(包含編譯或解譯語言、或宣告式或程序性語言)撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼),且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一運算環境中之其他單元。
一電腦程式可(但不需要)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、專用於所討論之程式之一單一檔案中或多個協調檔案(例如,儲存一或多個模組、子程式或程式碼之部分的檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個位點處或跨多個位點分佈且由一通信網路互連之多個電腦上實行。
可藉由實行一或多個電腦程式以藉由對輸入資料操作及產生輸出來執行功能之一或多個可程式化電腦來執行本說明書中所描述之程序及邏輯流程。亦可藉由專用邏輯電路系統(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路)或一GPGPU (通用圖形處理單元))來執行該等程序及邏輯流程,且設備亦可實施為該專用邏輯電路系統。
適用於一電腦程式之實行之電腦包含(舉例而言,可基於)通用微處理器或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之一些元件係用於執行或實行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置,或兩者。然而,一電腦不需要具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟),等等。
適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,藉由實例包含:半導體記憶體裝置,例如,EPROM、EEPROM、及快閃記憶體裝置;磁碟,例如,內部硬碟或可抽換式磁碟;磁光碟;及CD ROM及DVD-ROM光碟。處理器及記憶體可藉由專用邏輯電路系統增補或併入專用邏輯電路系統中。
為提供與一使用者之互動,可在一電腦上實施本說明書中所描述之標的物之實施例,該電腦具有用於向該使用者顯示資訊之一顯示裝置(例如,LCD (液晶顯示器)監視器)及該使用者可藉由其提供輸入至該電腦之一鍵盤及一指標裝置(例如,一滑鼠或一軌跡球)。其他種類之裝置亦可用於提供與一使用者之互動;例如,提供給該使用者之回饋可為任何形式之感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自該使用者之輸入可以任何形式接收,包含聲音、語音或觸覺輸入。另外,一電腦可藉由發送文件至由一使用者使用之一裝置及自該裝置接收文件而與該使用者互動;例如,藉由回應於自一使用者之用戶端裝置上之一網頁瀏覽器接收之請求而將網頁發送至該網頁瀏覽器。
可在一運算系統中實施本說明書中所描述之標的物之實施例,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中所描述之標的物之一實施方案互動之一圖形使用者介面或一網頁瀏覽器之一用戶端電腦),或一或多個此等後端、中介軟體或前端組件之任何組合。該系統之該等組件可藉由數位資料通信之任何形式或媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如,網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係憑藉運行於各自電腦上及彼此具有一用戶端-伺服器關係之電腦程式而發生。
雖然本說明書含有許多特定實施方案細節,但此等特定實施方案細節不應被理解為限制任何發明或可主張之內容之範疇,而是被理解為描述可特定於本發明之特定實施例之特徵。本說明書中在單獨實施例之背景內容中所描述之特定特徵亦可組合實施於一單個實施例中。相反地,在一單個實施例之背景內容中描述之各種特徵亦可單獨實施於多個實施例中或以任何合適子組合實施。此外,儘管特徵在上文可被描述為依特定組合起作用且甚至最初如此主張,然來自一所主張之組合之一或多個特徵在一些情況中可自該組合免除,且該所主張之組合可係關於一子組合或一子組合之變型。
類似地,雖然在圖式中依一特定順序描繪操作,但此不應被理解為需要依所展示之特定順序或依循序順序來執行此等操作或需要執行所有經繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單個軟體產品中或封裝於多個軟體產品中。
已描述標的物之特定實施例。其他實施例係在以下發明申請專利範圍之範疇內。例如,發明申請專利範圍中所敘述之動作可依一不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序並不一定需要所展示之特定順序,或循序順序,來達成所要結果。在特定實施方案中,多任務處理及平行處理可為有利的。
100:運算系統/系統 101:硬體電路/電路 102:系統記憶體/高頻寬記憶體(HBM) 104:共享記憶體/共享連續記憶體(CMEM) 105-1:處理器核心/核心/第一處理器核心/張量處理器核心 105-2:處理器核心/核心/第二處理器核心 106:向量記憶體 108:向量記憶體 110:向量暫存器 112:向量暫存器 200:方塊圖 201:共享記憶體控制單元/控制單元 202:資料路徑/載入儲存資料路徑 204:共享核心資料路徑 206:資料路徑/載入儲存資料路徑/直接記憶體存取(DMA)資料路徑 208:連續記憶體(CMEM)載入資料路徑/資料路徑/載入資料路徑/載入儲存資料路徑 210:共享分級區塊/分級區塊/資源 212:資料路徑 214:連續記憶體(CMEM)載入資料路徑/資料路徑/載入儲存資料路徑 215:連續記憶體(CMEM)儲存資料路徑/資料路徑 222:資料路徑 224:共享核心資料路徑 226:資料路徑 228:連續記憶體(CMEM)載入資料路徑/資料路徑/載入資料路徑 230:共享分級區塊/分級區塊 234:連續記憶體(CMEM)載入資料路徑/載入儲存資料路徑 235:連續記憶體(CMEM)儲存資料路徑/資料路徑 300:方塊圖 302-1:張量處理器核心/處理器核心 302-2:張量處理器核心/處理器核心 304:向量處理單元/向量處理器 306:向量處理器 308:矩陣運算單元 310:矩陣運算單元 400:有線連接件 402:連續記憶體(CMEM)資源 404:導線連接件 406:VPU資源 412:連續記憶體(CMEM)資源 414:導線連接件 416:VPU資源 500:程序 502:步驟 504:步驟 506:步驟 508:步驟 510:步驟
圖1係具有包含一實例性共享記憶體之一硬體電路之一運算系統之一方塊圖。
圖2係展示與一硬體電路之實例性共享記憶體通信之實例性處理器核心之一方塊圖。
圖3係展示與一硬體電路之一實例性矩陣運算單元通信之實例性向量處理器之一方塊圖。
圖4繪示將一共享記憶體耦合至一硬體電路之一或多個向量處理器之實例性導線連接件。
圖5係繪示使用圖1之共享記憶體使神經網路運算加速之一實例性程序之一流程圖。
各種圖式中之相同元件符號及名稱指示相同元件。
500:程序
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟

Claims (25)

  1. 一種經組態以實施包含複數個神經網路層之一神經網路之電路,該電路包括:一第一記憶體,其經組態以提供用於執行運算以產生用於該神經網路之一層之一輸出之資料;一第一處理器核心,其包含經組態以儲存自由該第一記憶體所提供之該資料導出之第一向量值之一第一向量記憶體;一第二處理器核心,其包含經組態以儲存自由該第一記憶體所提供之該資料導出之第二向量值之一第二向量記憶體;及一共享記憶體,其安置於該第一記憶體與該等第一或第二處理器核心之至少一者中間,其中該共享記憶體包括:一第一直接記憶體存取(DMA)資料路徑,其經組態以在該共享記憶體與包含於該第一處理器核心中之該第一向量記憶體之間選路傳送(route)資料通信,一第二直接記憶體存取(DMA)資料路徑,其經組態以在該共享記憶體與包含於該第二處理器核心中之該第二向量記憶體之間選路傳送資料通信;一第一載入儲存(load-store)資料路徑,其經組態以在該共享記憶體與包含於該第一處理器核心中之一第一向量暫存器之間選路傳送資料通信,及一第二載入儲存資料路徑,其經組態以在該共享記憶體與包含於該第二處理器核心中之一第二向量暫存器之間選路傳送資料通信;其中使用有線連接件建構該第一DMA資料路徑及該第二DMA資 料路徑以及該第一載入儲存資料路徑及該第二載入儲存資料路徑,其中該等有線連接件之至少一部分係共享於該第一DMA資料路徑及該第二DMA資料路徑之間;且該等有線連接件之至少另一部分係共享於該第一載入儲存資料路徑及該第二載入儲存資料路徑之間。
  2. 如請求項1之電路,其中:該電路包括複數個處理器核心,該第一處理器核心及該第二處理器核心在該複數個處理器核心當中;且該共享記憶體包括在該電路各處實體地分佈以與該電路處之該複數個處理器核心之各者交換資料通信之複數個記憶體資源。
  3. 如請求項2之電路,其中該共享記憶體包括一共享記憶體控制單元,該共享記憶體控制單元經組態以:實行引起該複數個記憶體資源之一第一部分用作一DMA記憶體單元之軟體指令,該DMA記憶體單元可操作以在該第一記憶體與該第一處理器核心及該第二處理器核心之各者之間移動資料。
  4. 如請求項3之電路,其中該複數個記憶體資源包括記憶體資源之一第二部分,其等經組態以:接收沿著該第一載入儲存資料路徑或該第二載入儲存資料路徑選路傳送之資料值;及針對臨限數目個處理器循環暫時儲存該等資料值。
  5. 如請求項4之電路,其中記憶體資源之該第二部分經組態以:回應於針對該臨限數目個處理器循環暫時儲存該等資料值而將該等資料值提供至該第一處理器核心之該第一向量暫存器或該第二處理器核心之該第二向量暫存器。
  6. 如請求項1之電路,其中該共享記憶體包括:一軟體控制之分級(staging)資源,其由該共享記憶體之一記憶體資源子集形成,該軟體控制之分級資源係用於管理資料值自該第一記憶體至該第一處理器核心之該第一向量暫存器或該第二處理器核心之該第二向量暫存器之一流動。
  7. 如請求項6之電路,其中該電路包括一矩陣運算單元,該矩陣運算單元經組態以藉由執行該等運算之一子集來產生用以產生用於該神經網路之該層之該輸出之經累加值。
  8. 如請求項7之電路,其中該軟體控制之分級資源係用於管理對應於向量陣列之該等資料值自該第一記憶體至該矩陣運算單元之該流動,其中該等向量陣列係自由該第一記憶體所提供之該等資料值導出。
  9. 如請求項1之電路,其中:該電路包括與該第一記憶體通信之一向量處理單元;該向量處理單元經組態以自在該電路處產生之經累加值產生一激發值向量;且 該激發值向量對應於用於該神經網路之該層之該輸出。
  10. 如請求項6之電路,其中:該軟體控制之分級資源係沿著該載入儲存資料路徑之一載入區段之一先進先出(FIFO)記憶體結構;且該FIFO記憶體結構經組態以在將一值向量選路傳送至該第一處理器核心之該第一向量暫存器或該第二處理器核心之該第二向量暫存器之前針對臨限數目個處理器循環暫時儲存該值向量。
  11. 如請求項1之電路,其中該共享記憶體經組態以用作包括對應於在複數個處理器核心之一或多個處理器核心之間共享之記憶體庫之記憶體資源的一共享全域記憶體空間。
  12. 如請求項1之電路,其中用於執行運算以產生用於該神經網路之一第一層之該輸出之該資料包括:待透過該神經網路之該第一層處理之輸入;用於該神經網路之該第一層之一各自權重集合;及用於透過該第一層使用用於該第一層之該各自權重集合處理該等輸入之一或多者以產生用於該第一層之該輸出的指令。
  13. 如請求項6之電路,其中該軟體控制之分級資源在一第一階段(phase)中經組態以自該共享記憶體載入資料,且在一第二階段中提供經載入之該資料至該第一相位暫存器或該第二相位暫存器。
  14. 一種使用經組態以實施包括複數個神經網路層之一神經網路之一電路執行運算以產生用於該神經網路之一層之一輸出的方法,該方法包括:自一第一記憶體提供用以產生用於一神經網路層之一輸出之資料;在該電路之一第一處理器核心處使用該第一處理器核心之一第一向量記憶體儲存值向量,其中該第一向量記憶體經組態以儲存自由該第一記憶體所提供之該資料導出之第一向量值;在該電路之一第二處理器核心處使用該第二處理器核心之一第二向量記憶體儲存值向量(vectors of values),其中該第二向量記憶體經組態以儲存由該第一記憶體所提供之該資料所導出之第二向量值;使用該電路中之一共享記憶體之一第一直接記憶體存取(DMA)資料路徑在該共享記憶體與包含於該第一處理器核心中之該第一向量記憶體之間選路傳送至少包括該等第一向量值之資料通信;使用該電路中之該共享記憶體之一第二直接記憶體存取(DMA)資料路徑,在該共享記憶體與包含於該第二處理器核心中之該第二向量記憶體之間選路傳送至少包括該等第二向量值之資料通信;使用該共享記憶體之一第一載入儲存資料路徑在該共享記憶體與包含於該第一處理器核心中之一第一向量暫存器之間選路傳送包括第三向量值之資料通信;使用該共享記憶體之一第二載入儲存資料路徑,在該共享記憶體與包含於該第二處理器核心中之一第二向量暫存器之間選路傳送包括第四向量值之資料通信;及使用各自沿著該共享記憶體之該第一載入儲存資料路徑及該第一 DMA資料路徑並行選路傳送至一矩陣運算單元之該等各自第一及第三向量值,藉由該矩陣運算單元,產生對應於用於該神經網路層之該輸出之經累加值(accumulated);其中使用有線連接件建構該第一DMA資料路徑及該第二DMA資料路徑以及該第一載入儲存資料路徑及該第二載入儲存資料路徑,其中該等有線連接件之至少一部分係共享於該第一DMA資料路徑及該第二DMA資料路徑之間;且該等有線連接件之至少另一部分係共享於該第一載入儲存資料路徑及該第二載入儲存資料路徑之間。
  15. 如請求項14之方法,其中該電路包括複數個處理器核心且該共享記憶體包括在該電路各處實體地分佈之複數個記憶體資源且該方法包括:使用該共享記憶體之該複數個記憶體資源以在該第一記憶體與該複數個處理器核心之各者之間交換資料通信。
  16. 如請求項15之方法,其中該共享記憶體包括一共享記憶體控制單元且該方法包括:基於藉由該共享記憶體控制單元實行之指令引起該複數個記憶體資源之資源之一第一部分用作一DMA記憶體單元;及使用資源之該第一部分之一代表性DMA功能以在該第一記憶體與該第一處理器核心及該第二處理器核心之各者之間移動資料。
  17. 如請求項16之方法,其包括:藉由該複數個記憶體資源之資源之一第二部分接收各自沿著該第一 載入儲存資料路徑及該第二載入儲存資料路徑選路傳送之該等第三向量值及該等第四向量值;使用資源之該第二部分針對臨限數目個處理器循環暫時儲存該等第三向量值;及使用資源之該第二部分針對臨限數目個處理器循環暫時儲存該等第四向量值。
  18. 如請求項17之方法,其包括:回應於針對該臨限數目個處理器循環暫時儲存該等第三向量值,使用資源之該第二部分將該等第三向量值提供至該第一處理器核心之該各自向量暫存器;及回應於針對該臨限數目個處理器循環暫時儲存該等第四向量值,使用資源之該第二部分將該等第四向量值提供至該第二處理器核心之該各自向量暫存器。
  19. 如請求項14之方法,其中該共享記憶體包括由該共享記憶體之一記憶體資源子集形成之一軟體控制之分級資源,且該方法包括:使用該軟體控制之分級資源管理自該第一記憶體至該第一處理器核心之該第一向量暫存器之資料流及自該第一記憶體至該第二處理器核心之該第二向量暫存器之資料流。
  20. 如請求項19之方法,其中該電路包括一矩陣運算單元且該方法包括: 回應於執行用以產生用於該神經網路層之該輸出之該等運算之一子集,使用該矩陣運算單元產生經累加值。
  21. 如請求項20之方法,其包括:使用該軟體控制之分級資源管理自該第一記憶體至該矩陣運算單元之資料流,其中該等資料流包括自由該第一記憶體所提供之該資料導出之向量陣列。
  22. 如請求項20之方法,其中:該電路包括在該第一記憶體與該矩陣運算單元中間之一向量處理單元;該方法包括藉由該向量處理單元自藉由該矩陣運算單元產生之該等經累加值產生一激發值向量;且該激發值向量對應於用於該神經網路層之該輸出。
  23. 如請求項19之方法,其中該軟體控制之分級資源在一第一階段中經組態以自該共享記憶體載入資料,且在一第二階段中提供經載入之該資料至該第一相位暫存器或該第二相位暫存器。
  24. 一種非暫時性機器可讀儲存裝置,其用於在用以執行神經網路運算之一電路上實施具有多個神經網路層之一神經網路及用於儲存可藉由一處理裝置實行以引起包括以下之操作之執行的指令:自一第一記憶體提供用以產生用於一神經網路層之一輸出之資料; 在該電路之一第一處理器核心處使用該第一處理器核心之一第一向量記憶體儲存值向量,其中該第一向量記憶體經組態以儲存自由該第一記憶體所提供之該資料導出之第一向量值;在該電路之一第二處理器核心處使用該第二處理器核心之一第二向量記憶體儲存值向量,其中該第二向量記憶體經組態以儲存自由該第一記憶體所提供之該資料導出之第二向量值;使用該電路中之一共享記憶體之一第一直接記憶體存取(DMA)資料路徑在該共享記憶體與包含於該第一處理器核心中之該第一向量記憶體之間選路傳送至少包括該等第一向量值之資料通信;使用該電路中之該共享記憶體之一第二直接記憶體存取(DMA)資料路徑在該共享記憶體與包含於該第二處理器核心中之該第二向量記憶體之間選路傳送至少包括該等第二向量值之資料通信;使用該共享記憶體之一第一載入儲存資料路徑在該共享記憶體與包含於該第一處理器核心中之一各自向量暫存器之間選路傳送包括第三向量值之資料通信;使用該共享記憶體之一第二載入儲存資料路徑,在該共享記憶體與包含於該第二處理器核心中之一第二向量暫存器之間選路傳送包括第四向量值之資料通信;及使用各自沿著該共享記憶體之該第一載入儲存資料路徑及該第一DMA資料路徑並行選路傳送至一矩陣計算單元之該等第一及第三向量值,藉由該矩陣計算單元,產生對應於用於該神經網路層之該輸出之經累加值;其中使用有線連接件建構該第一DMA資料路徑及該第二DMA資料路 徑以及該第一載入儲存資料路徑及該第二載入儲存資料路徑,其中該等有線連接件之至少一部分係共享於該第一DMA資料路徑及該第二DMA資料路徑之間;且該等有線連接件之至少另一部分係共享於該第一載入儲存資料路徑及該第二載入儲存資料路徑之間。
  25. 如請求項24之非暫時性機器可讀儲存裝置,其中該共享記憶體包括由該共享記憶體之一記憶體資源子集形成之一軟體控制之分級資源,其中該軟體控制之分級資源在一第一階段中經組態以自該共享記憶體載入資料,且在一第二階段中提供經載入之該資料至該第一相位暫存器或該第二相位暫存器。
TW110103103A 2020-01-27 2021-01-27 具有平行載入儲存之共享高速暫存記憶體 TWI782403B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062966518P 2020-01-27 2020-01-27
US62/966,518 2020-01-27
US15/931,970 2020-05-14
US15/931,970 US11922292B2 (en) 2020-01-27 2020-05-14 Shared scratchpad memory with parallel load-store

Publications (2)

Publication Number Publication Date
TW202134956A TW202134956A (zh) 2021-09-16
TWI782403B true TWI782403B (zh) 2022-11-01

Family

ID=74346804

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110103103A TWI782403B (zh) 2020-01-27 2021-01-27 具有平行載入儲存之共享高速暫存記憶體

Country Status (7)

Country Link
US (2) US11922292B2 (zh)
EP (1) EP3859612A1 (zh)
JP (1) JP7413549B2 (zh)
KR (1) KR20220116050A (zh)
CN (1) CN115087991A (zh)
TW (1) TWI782403B (zh)
WO (1) WO2021154732A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114331806A (zh) * 2022-03-17 2022-04-12 南京砺算科技有限公司 图形处理器及图形处理方法
CN117827710B (zh) * 2024-03-06 2024-05-24 上海燧原智能科技有限公司 基于ai芯片的dma带宽确定方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180260220A1 (en) * 2017-03-09 2018-09-13 Google Inc. Vector processing unit
US20180315158A1 (en) * 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US20180322387A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Hardware implemented point to point communication primitives for machine learning
US20190102671A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Inner product convolutional neural network accelerator
US20190340486A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Performing multiply and accumulate operations in neural network processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5752067A (en) 1990-11-13 1998-05-12 International Business Machines Corporation Fully scalable parallel processing system having asynchronous SIMD processing
JPH07271764A (ja) 1994-03-24 1995-10-20 Internatl Business Mach Corp <Ibm> 計算機プロセッサ及びシステム
US6539500B1 (en) * 1999-10-28 2003-03-25 International Business Machines Corporation System and method for tracing
US7196708B2 (en) 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
GB2417105B (en) 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
TWI807539B (zh) * 2017-05-17 2023-07-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
WO2019126793A2 (en) 2017-12-22 2019-06-27 Alibaba Group Holding Limited A memory apparatus and method for controlling the same
WO2019191306A1 (en) 2018-03-27 2019-10-03 Nvidia Corporation Training, testing, and verifying autonomous machines using simulated environments
US11023360B2 (en) * 2018-11-14 2021-06-01 The Mathworks, Inc. Systems and methods for configuring programmable logic devices for deep learning networks
US11803380B2 (en) * 2019-10-29 2023-10-31 Nvidia Corporation High performance synchronization mechanisms for coordinating operations on a computer system
US20210191765A1 (en) * 2019-12-18 2021-06-24 Deep Vision Inc. Method for static scheduling of artificial neural networks for a processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180260220A1 (en) * 2017-03-09 2018-09-13 Google Inc. Vector processing unit
US20180315158A1 (en) * 2017-04-28 2018-11-01 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US20180322387A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Hardware implemented point to point communication primitives for machine learning
US20190102671A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Inner product convolutional neural network accelerator
US20190340486A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Performing multiply and accumulate operations in neural network processor

Also Published As

Publication number Publication date
US11922292B2 (en) 2024-03-05
KR20220116050A (ko) 2022-08-19
JP2023512195A (ja) 2023-03-24
CN115087991A (zh) 2022-09-20
TW202134956A (zh) 2021-09-16
EP3859612A1 (en) 2021-08-04
US20240160909A1 (en) 2024-05-16
JP7413549B2 (ja) 2024-01-15
WO2021154732A1 (en) 2021-08-05
US20210232898A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
US11270197B2 (en) Efficient neural network accelerator dataflows
CN115136115B (zh) 使用共享便笺式存储器的向量简化
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US20240160909A1 (en) Shared scratchpad memory with parallel load-store
EP3735638A1 (en) A deep learning accelerator system and methods thereof
US20220108135A1 (en) Methods and apparatus for performing a machine learning operation using storage element pointers
US10915445B2 (en) Coherent caching of data for high bandwidth scaling
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
Yousefzadeh et al. Energy-efficient in-memory address calculation
CN111221498A (zh) 动态方向舍入
US11741043B2 (en) Multi-core processing and memory arrangement
US20230289398A1 (en) Efficient Matrix Multiply and Add with a Group of Warps
US20240095492A1 (en) Memory management for mathematical operations in computing systems with heterogeneous memory architectures
TW202414200A (zh) 減少硬體加速器中之記憶體庫衝突
WO2024058810A1 (en) Reducing memory bank conflicts in a hardware accelerator
CN115240726A (zh) 封装上和封装外组合存储器系统
CN116664382A (zh) 在处理器上堆叠的高带宽存储器