TW202119299A - 機器學習加速器啟動之增強型輸入 - Google Patents

機器學習加速器啟動之增強型輸入 Download PDF

Info

Publication number
TW202119299A
TW202119299A TW109129735A TW109129735A TW202119299A TW 202119299 A TW202119299 A TW 202119299A TW 109129735 A TW109129735 A TW 109129735A TW 109129735 A TW109129735 A TW 109129735A TW 202119299 A TW202119299 A TW 202119299A
Authority
TW
Taiwan
Prior art keywords
data
arithmetic
activation
time scale
processor
Prior art date
Application number
TW109129735A
Other languages
English (en)
Other versions
TWI767310B (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 TW202119299A publication Critical patent/TW202119299A/zh
Application granted granted Critical
Publication of TWI767310B publication Critical patent/TWI767310B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Logic Circuits (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本發明揭示方法、系統及設備,其等包含在電腦儲存媒體上編碼之電腦程式以在具有多個運算塊之一機器學習加速器上排程操作。該設備包含一處理器,該處理器具有複數個運算塊及經組態以從該複數個運算塊之各運算塊之一啟動線或該啟動線之一延遲暫存器選擇該運算塊之一各自輸入啟動的排程電路。

Description

機器學習加速器啟動之增強型輸入
本說明書係關於機器學習加速器。
一機器學習加速器係經設計用於執行高度並行同步操作之一特定應用積體電路(ASIC)。藉由整合可同時執行之許多不同獨立處理元件而達成並行化。
此等裝置非常適於加速通過神經網路之推論遍次。神經網路係採用多個操作層以從一或多個輸入預測一或多個輸出的機器學習模型。神經網路通常包含位於一輸入層與一輸出層之間的一或多個隱藏層。使用各層之輸出作為網路中之另一層(例如,下一隱藏層或輸出層)之輸入。
通常,可藉由執行矩陣乘法而達成各層所需之運算操作。通常,矩陣之一者係一向量,例如,一矩陣乘向量乘法。因此,機器學習加速器允許以高並行化執行一矩陣乘法之相乘及相加。
機器學習加速器之限制因素之一者係資料處理能力。特定言之,從記憶體讀取輸入值係具有相對於透過加速器發送資料及執行所需數學運算之延時的一相對較高延時之一操作。
特定機器學習演算法之另一低效係從記憶體重複讀取相同值。舉例而言,為執行一3×3迴旋,可使用各輸入值至多9次,可能針對相同值需要從記憶體進行9次不同讀取。
本說明書描述一機器學習加速器之架構及一對應排程技術,其改良資料處理能力且減少從記憶體之冗餘讀取。特定言之,加速器可使用延遲暫存器及排程邏輯,使得僅每列一次地或整體一次地讀取各輸入值。
可實施本說明書中描述之標的之特定實施例以便實現以下優勢之一或多者。一機器學習加速器可藉由使用在啟動線與延遲暫存器之間選取之排程邏輯而增強從記憶體讀取之輸入頻寬。因此,改良整體硬體利用率,從而導致更有效運算。亦藉由僅每列一次地或整體一次地讀取各輸入值而減少整體輸入延時。
在以下隨附圖式及描述中陳述本說明書之標的之一或多項實施例之細節。將從描述、圖式及發明申請專利範圍明白標的之其他特徵、態樣及優勢。
相關申請案之交叉參考 本申請案主張2019年11月13日申請之美國臨時申請案第62/935,038號之優先權。先前申請案之揭示內容被認為係本申請案之揭示內容之部分且以引用之方式併入本申請案之揭示內容中。
本說明書描述可用於改良輸入資料頻寬之一機器學習加速器之架構。特定言之,下文描述之技術減少需要從一記憶體裝置讀取之冗餘值之數目。
圖1係一機器學習加速器之一例示性子系統100之一圖式。一機器學習加速器通常將具有圖1中繪示之組件之許多例項。下文參考圖5至圖6更詳細地描述此等組件可如何整合至一較大系統中之一更詳細實例。
子系統100之一般配置包含儲存待由多個運算塊130a至130n作用之啟動的一靜態隨機存取記憶體(SRAM) 110。在本說明書中,術語「啟動」用於至機器學習加速器之輸入,此係因為在現實世界系統中,運算塊130a至130n可對矩陣或張量而非個別值操作。有鑑於此,在本說明書中,一運算塊係指具有可對一矩陣或張量之一部分執行運算之一運算單元陣列的一裝置。因此,各單元包含允許單元執行數學或其他運算的電路。在一典型案例中,一運算塊接收一輸入張量,使用運算陣列將該輸入張量乘以一權重張量,且產生一輸出張量。在下文實例中,為簡單及清楚起見通常將使用單一變數,但在實際應用中,各單一變數可表示一高維張量而不僅表示一奇異數值。
運算塊130a至130n可各自被饋送一啟動線122a至122n或一對應延遲暫存器124a至124n。排程邏輯150可判定運算塊130a至130n將接收哪些輸入。通常,排程邏輯150判定運算塊何時應接收啟動線資料對延遲暫存器資料。在可預測及週期性時間,由對應啟動線122a至122n上之各自值替換延遲暫存器124a至124n中之值。
通常,啟動線上之啟動可連續用於期望讀取其等值之任何運算塊。因此,儘管圖1中未展示,然系統實際上可包含維持或再新啟動線上之啟動而不必執行從SRAM 110之另一讀取的電路資源。
各運算塊130a至130n可對從一啟動線或一延遲暫存器接收之輸入啟動執行一矩陣或張量操作。接著,各運算塊130a至130n可將結果轉送至一向量累加器140,該向量累加器140從由運算塊產生之結果之各者運算部分和。
在一些實施方案中,使用子系統100以執行一迴旋運算,且子系統100具有對應於卷積核之大小之數目之運算塊130a至130n。舉例而言,若迴旋係具有9個權重張量之一3×3迴旋,則子系統100可使用9個運算塊130a至130n,使得可藉由運算塊130a至130n並行化迴旋運算。在此配置中,將輸入啟動之各列饋送至三個單獨運算塊,其等可被稱為一列群組。
圖1中繪示之系統可藉由使用延遲暫存器來減少從SRAM 110之冗餘讀取而改良輸入資料效率。延遲暫存器實際上賦予系統對可能2N掃描帶之資料的存取,其中N係卷積核之一個維度之大小。
因此,在各全域時標上,各列群組從SRAM讀取各自列中之N個新值且將先前讀取值置於延遲暫存器中。圖2中繪示此配置。
在本說明書中,一全域時標係其中從SRAM讀取新值之系統之一操作。
在本說明書中,一局部時標係其中運算一新輸出迴旋值之系統之一操作。此在一運算塊從一啟動線或從一延遲暫存器接收一新值時發生。因此,各全域時標通常跨越多個局部時標。
圖2係一迴旋運算之一可視化。圖2繪示在一特定時刻(其在此情況中係全域時標1、局部時標1)儲存於延遲暫存器及啟動暫存器中之資料。
在全域時標0上,列群組從輸入資料之前三行(例如,行0至行2)讀取值。
在全域時標1上,列群組用先前讀取值填入延遲暫存器且從輸入資料之接下來三行(例如,行3至行5)讀取新值。因此,延遲暫存器資料210保存輸入值R0C0、R0C1、R0C2、R1C0、R1C1、R1C2、R2C0、R2C1及R2C2。同時,啟動線資料220保存輸入值R0C3、R0C4、R0C5、R1C3、R1C4、R1C5、R2C3、R2C4及R2C5。
然而,系統無需全部此等值來運算位置R0C1處之輸出迴旋值。實情係,排程邏輯判定將哪些啟動線資料220及延遲暫存器資料210饋送至運算塊以便運算輸出迴旋值。
圖2亦繪示疊加於輸入資料上之卷積核權重。在本說明書中,使用「+」及「-」符號作為卷積核權重上之一速記註釋以指示權重是否將乘以啟動線資料220或延遲暫存器資料210。因此,在圖2中,權重A、B、D、E、G及H將乘以延遲暫存器資料,此係因為其等具有「+」註釋,而權重C、F及I將乘以啟動線資料,此係因為其等具有「-」註釋。
如下文將更詳細地描述,系統可在各全域時標上從SRAM讀取新值,且接著從自SRAM讀取之值運算多個迴旋值。
圖3A繪示排程邏輯如何在各局部時標上在啟動線資料與延遲暫存器資料之間選取之一詳細實例。
此實例假定具有權重A至I之一3×3迴旋。且,因此,存在各自各具有3個運算塊之3個列群組310、312及314。列群組包含一第一列群組310、一第二列群組312及一第三列群組314。然而,將瞭解,可替代地使用其他大小之迴旋。
此實例起始於列1、行0,此意謂已運算列0之迴旋值。換言之,圖3中之實例起始於輸入資料之列上方之第二遍次。
值得注意的,此意謂未將第一列群組中之運算塊0至2指派給輸入資料之第一列。此係因為已將第二列群組指派給列1且已將第三列群組指派給列2。因此,當起始輸入資料之列上方之第二遍次時,系統可將第一列群組指派給行3。
在各全域時標上,系統針對各列群組從SRAM讀取三個值且在各局部時標上運算一新輸出迴旋值。
圖3A繪示幫助最佳化輸入資料頻寬之數個資料饋送型樣。第一型樣係資料選擇之基本型樣,其包含從以下項讀取:局部時標0上之三個延遲暫存器;局部時標1上之兩個延遲暫存器及一條啟動線;及局部時標2上之一個延遲暫存器及兩條啟動線。
圖3A亦繪示依列群組跨步(striding)之基本型樣。一般而言,系統藉由各全域時標上之卷積核大小推進各運算塊之步幅(stride)。因此,在全域時標0上,從行3讀取運算塊3。在全域時標1上,從行6讀取運算塊3。
圖3A亦繪示各運算塊沿卷積核之一列透過權重循環的型樣。因此,運算塊3在局部時標0上使用權重A,接著在局部時標1上使用權重C,接著在局部時標2上使用權重B。其他運算塊具有類似權重循環型樣。
因此,晶片之排程邏輯可藉由透過啟動線及延遲暫存器實施此等資料讀取型樣而最佳化運算塊之輸入頻寬。
在圖3A中,選定資料源被加粗,而用虛線繪示未選定資料源。因此,在全域時標0、局部時標0上,全部運算塊從延遲暫存器而非啟動線接收資料。在各局部時標之後,運算塊執行將一權重乘以選定資料源,且藉由一向量累加器對結果求和且將該結果寫入輸出資料中之指定位置處。
在局部時標0,使用全部延遲暫存器導致運算V10 = R1C1*A + R1C2*B + R1C3*C + R2C1*D + R2C2*E + R2C3*F + R3C1*G + R3C2*H + R3C3*I。
圖3B中可視化此運算。圖3B繪示在此操作中根本不使用啟動線資料220。
如圖3A中展示,在全域時標0、局部時標1上,運算塊使用啟動線資料及延遲暫存器資料之一混合。特定言之,如圖3C中繪示,各列群組使用兩個延遲暫存器及一條啟動線。此導致系統執行運算V11 = R1C1*A + R1C2*B + R1C3*C + R2C1*D + R2C2*E + R2C3*F + R3C1*G + R3C2*H + R3C3*I。
如圖3A中展示,在全域時標0、局部時標2上,運算塊使用來自啟動線之額外資料。如圖3D中繪示,各列群組使用一個延遲暫存器及兩條啟動線。此導致系統執行運算V11 = R1C2*A + R1C3*B + R1C4*C + R2C2*D + R2C3*E + R2C4*F + R3C2*G + R3C3*H + R3C4*I。
如圖3A中展示,在一全域時標之最後局部時標之後,系統可用來自啟動線之資料填入延遲暫存器。因此,舉例而言,如圖3A中繪示,在全域時標1、局部時標0,已用來自先前啟動線之資料覆寫延遲暫存器。
圖4係使用來自啟動線及延遲暫存器之資料之一重複型樣執行一迴旋之一例示性程序之一流程圖。圖4中之例示性程序係具有多個運算塊之一機器學習加速器之排程邏輯可如何控制饋送至運算塊中之輸入的一實例。程序將被描述為由一處理器(例如,一機器學習加速器)執行。
處理器藉由更新啟動線及延遲暫存器而前進至下一全域時標(410)。如上文描述,在各全域時標,處理器可從記憶體讀取新值且使其等在啟動線上可用。通常,藉由可基於卷積核之大小之一步幅判定從記憶體讀取之新值。舉例而言,對於一3×3迴旋,若一運算塊從全域時標1上之行1讀取,則運算塊可從全域時標2上之行4讀取。
一列中之第一迭代可呈現一特殊情況,其中來自啟動線之資料應在延遲暫存器及啟動線兩者中可用。在該等情境中,處理器可使新讀取資料在兩個位置可用。
處理器運用全部延遲暫存器運算迴旋部分和(420)。在一全域時標開始時,當延遲暫存器已全部更新時,下一迴旋之值完全駐留於延遲暫存器中。因此,處理器藉由將核之各權重乘以一延遲暫存器中之一啟動而運算一部分迴旋和。
處理器運用較少延遲暫存器運算全域時標中之各隨後部分和(430)。換言之,在各局部時標上,所使用之延遲暫存器之數目減少而啟動線之數目增加。舉例而言,如圖3A中繪示,在全域時標0、局部時標0上,處理器使用9個延遲暫存器。在局部時標1上,處理器使用6個延遲暫存器,且在局部時標2上,處理器僅使用3個延遲暫存器。
處理器運用來自啟動線之資料覆寫延遲暫存器(420)。換言之,處理器可用啟動線上之先前資料替換延遲暫存器中之資料。處理器可在讀取新啟動線資料之前完成此以避免歸因於覆寫而丟失資料。
圖5係繪示專用邏輯電路(特定言之,一ASIC 500)之一實例之一示意圖。ASIC 500包含為簡潔起見將被稱為運算塊的多個同步處理器。舉例而言,ASIC 500包含運算塊502,其中運算塊502之一或多者包含經組態以執行同步運算(諸如(例如)乘法運算及加法運算)的專用電路。特定言之,各運算塊502可包含一運算單元陣列,其中各單元經組態以執行數學運算(參見(例如)在圖6中展示且在本文中描述之例示性運算塊200)。在一些實施方案中,運算塊502經配置成一格柵圖案,其中沿一第一維度501 (例如,列)且沿一第二維度503 (例如,行)配置運算塊502。例如,在圖5中展示之實例中,將運算塊502劃分成四個不同區段(510a、510b、510c、510d),各區段含有配置成向下18個運算塊×橫向16個運算塊之一格柵的288個運算塊。在一些實施方案中,圖5中展示之ASIC 500可被理解為包含細分/配置成單獨運算塊的一單一脈動(systolic)單元陣列,其中各運算塊包含單元、局部記憶體及匯流排線之一子集/子陣列(參見(例如)圖6)。
ASIC 500亦包含一向量處理單元504。向量處理單元504包含經組態以從運算塊502接收輸出且基於從運算塊502接收之輸出而運算向量運算輸出值的電路。舉例而言,在一些實施方案中,向量處理單元504包含經組態以對從運算塊502接收之輸出執行累加運算的電路(例如,乘法電路、加法器電路、移位器、及/或記憶體)。替代地或另外地,向量處理單元504包含經組態以將一非線性函數應用於運算塊502之輸出的電路。替代地或另外地,向量處理單元504產生正規化值、合併值或該兩者。可將向量處理單元之向量運算輸出儲存於一或多個運算塊中。舉例而言,可將向量運算輸出儲存於與一運算塊502唯一地相關聯之記憶體中。替代地或另外地,可將向量處理單元504之向量運算輸出傳送至ASIC 500外部之一電路,例如,作為一運算之一輸出。在一些實施方案中,將向量處理單元504分段,使得各片段包含經組態以從運算塊502之一對應集合接收輸出且基於該等所接收輸出而運算向量運算輸出的電路。例如,在圖5中展示之實例中,向量處理單元504包含沿第一維度501跨越之兩列,該等列之各者包含配置成32行的32個片段506。各片段506包含經組態以基於來自運算塊502之一對應行之輸出(例如,一累加和)而執行如本文中說明之一向量運算的電路(例如,乘法電路、加法器電路、移位器、及/或記憶體)。可將向量處理單元504定位於如圖5中展示之運算塊502之格柵中間。向量處理單元504之其他位置配置亦係可行的。
ASIC 500亦包含一通信介面508 (例如,介面508a、508b)。通信介面508包含串列器/解串器(SerDes)介面及一通用輸入/輸出(GPIO)介面之一或多個集合。SerDes介面經組態以接收ASIC 500之指令(例如,用於操作下文描述之可控制匯流排線之指令)及/或輸入資料且將資料從ASIC 500輸出至一外部電路。舉例而言,SerDes介面可經組態以按32 Gbps、56 Gbps、或包含於通信介面508內之SerDes介面集合上方之任何適合資料速率的一速率傳輸指令及/或輸入資料。GPIO介面經組態以提供用於除錯及/或啟動之一介面。舉例而言,ASIC 500可在其導通時運行一開機程式。若程式失敗,則一管理員可使用GPIO介面來對失敗源進行除錯。
ASIC 500進一步包含經組態以在通信介面508、向量處理單元504、及多個運算塊502之間輸送資料的多個可控制匯流排線(參見(例如)圖6)。可控制匯流排線包含(例如)沿格柵之第一維度501 (例如,列)及格柵之第二維度503 (例如,行)兩者延伸的導線。沿第一維度501延伸之可控制匯流排線之一第一子集可經組態以在一第一方向上(例如,至圖5之右側)傳送資料。沿第一維度501延伸之可控制匯流排線之一第二子集可經組態以在一第二方向上(例如,至圖5之左側)傳送資料。沿第二維度503延伸之可控制匯流排線之一第一子集可經組態以在一第三方向上(例如,至圖5之頂部)傳送資料。沿第二維度503延伸之可控制匯流排線之一第二子集可經組態以在一第四方向上(例如,至圖5之底部)傳送資料。
各可控制匯流排線包含用於根據一時脈信號沿線輸送資料的多個輸送器元件,諸如正反器。經由一可控制匯流排線傳送資料可包含在各時脈週期將資料從該可控制匯流排線之一第一輸送器元件移位至該可控制匯流排線之一第二鄰近輸送器元件。在一些實施方案中,在一時脈週期之上升或下降邊緣上經由可控制匯流排線輸送資料。舉例而言,在一第一時脈週期在一可控制匯流排線之一第一輸送器元件(例如,一正反器)上存在之資料可在一第二時脈週期傳送至該可控制匯流排線之一第二輸送器元件(例如,一正反器)。在一些實施方案中,輸送器元件可按距彼此之一固定距離週期性地隔開。舉例而言,在一些情況中,各可控制匯流排線包含多個輸送器元件,其中各輸送器元件經定位於一對應運算塊502內或近接一對應運算塊502。
各可控制匯流排線亦包含多個多工器及/或解多工器。一可控制匯流排線之一多工器/解多工器經組態以在匯流排線與ASIC晶片500之一組件之間傳送資料。舉例而言,一可控制匯流排線之一多工器/解多工器可經組態以向及/或從一運算塊502、向及/或從向量處理單元504、或向及/或從通信介面508傳送資料。在運算塊502、向量處理單元504及通信介面之間傳送資料可包含基於待發生之所要資料傳送而將控制信號發送至多工器。可將控制信號儲存於直接耦合至多工器及/或解多工器之暫存器中。接著,控制信號之值可判定(例如)什麼資料從一源(例如,一運算塊502或一向量處理單元504內之記憶體)傳送至一可控制匯流排線或替代地什麼資料從可控制匯流排線傳送至一接收點(sink) (例如,一運算塊502或一向量處理單元504內之記憶體)。
可控制匯流排線經組態以依一局部級控制,使得各運算塊、向量處理單元及/或通信介面包含其自身用於操控通過該運算塊、向量處理單元及/或通信介面之可控制匯流排線之控制元件集合。舉例而言,各運算塊、1D向量處理單元及通信介面可包含用於控制至及來自該運算塊、1D向量處理單元及通信介面之資料傳送之輸送器元件、多工器及/或解多工器之一對應集合。
為最小化與ASIC晶片500之操作相關聯之延時,運算塊502及向量處理單元504可經定位以減小資料在各種組件之間行進之距離。在一特定實施方案中,可將運算塊502及通信介面508兩者分割成多個區段,其中運算塊區段及通信介面區段兩者經配置使得減小資料在一運算塊與一通信介面之間行進之最大距離。例如,在一些實施方案中,運算塊502之一第一群組可經配置成通信介面508之一第一側上之一第一區段,且運算塊502之一第二群組可經配置成通信介面之一第二側上之一第二區段。因此,與其中全部運算塊502經配置成通信介面之一側上之一單一區段的一組態相比,從一通信介面至最遠運算塊之距離可減小一半。
替代地,運算塊可經配置成不同數目個區段,諸如四個區段。例如,在圖5中展示之實例中,ASIC 500之多個運算塊502經配置成多個區段510 (510a、510b、510c、510d)。各區段510包含配置成一格柵圖案的類似數目個運算塊502 (例如,各區段510可包含配置成16個列及16個行之256個運算塊)。亦將通信介面508劃分成多個區段:配置於運算塊502之區段510之任一側上之一第一通信介面508a及一第二通信介面508b。第一通信介面508a可透過可控制匯流排線耦合至ASIC晶片500之左側上之兩個運算塊區段510a、510c。第二通信介面508b可透過可控制匯流排線耦合至ASIC晶片500之右側上之兩個運算塊區段510b、510d。因此,與其中僅一單一通信介面可用之一配置相比,資料向及/或從一通信介面508行進之最大距離(及因此與資料傳播相關聯之延時)可減半。運算塊502及通信介面508之其他耦合配置亦可減少資料延時。可藉由將控制信號提供至可控制匯流排線之輸送器元件及多工器而程式化運算塊502及通信介面508之耦合配置。
在一些實施方案中,一或多個運算塊502經組態以相對於可控制匯流排線及/或ASIC 500內之其他運算塊(本文中被稱為「控制運算塊」)起始讀取及寫入操作。ASIC 500內之剩餘運算塊可經組態以基於輸入資料而執行運算(例如,以運算層推論)。在一些實施方案中,控制運算塊包含與ASIC 500內之其他運算塊相同之組件及組態。可將控制運算塊添加為ASIC 500之一或若干額外運算塊、一或若干額外列、或一或若干額外行。舉例而言,對於其中各運算塊502經組態以對輸入資料執行一運算之運算塊502之一對稱格柵,可包含控制運算塊之一或多個額外列以處置用於運算塊502對輸入資料執行運算之讀取及寫入操作。例如,各區段510包含18列運算塊,其中最後兩列運算塊可包含控制運算塊。在一些實施方案中,提供單獨控制運算塊增加用於執行運算之其他運算塊中可用之記憶體的量。然而,不需要專用於提供如本文中描述之控制之單獨運算塊,且在一些情況中,未提供單獨控制運算塊。實情係,各運算塊可在其局部記憶體中儲存用於起始該運算塊之讀取及寫入操作之指令。
此外,雖然圖5中展示之各區段510包含配置成18列×16行的運算塊,但一區段中之運算塊502之數目及其等配置可係不同的。舉例而言,在一些情況中,區段510可包含相等數目個列及行。
此外,儘管在圖5中被展示為劃分成四個區段,然可將運算塊502劃分成其他不同分組。舉例而言,在一些實施方案中,將運算塊502分組成兩個不同區段,諸如向量處理單元504上方(例如,較接近圖5中展示之頁面之頂部)之一第一區段及向量處理單元504下方(例如,較接近圖5中展示之頁面之底部)之一第二區段。在此一配置中,各區段可含有(例如)配置成向下(沿方向503) 18個運算塊×橫向(沿方向501) 32個運算塊之一格柵的576個運算塊。區段可含有其他總數個運算塊且可經配置成不同大小陣列。在一些情況中,藉由ASIC 500之硬體特徵劃定區段之間之劃分。舉例而言,如圖5中展示,可藉由向量處理單元504將區段510a、510b與區段510c、510d分離。
亦可藉由相對於運算塊區段510居中定位向量處理單元504而減少延時。在一些實施方案中,運算塊502之一第一半經配置於向量處理單元504之一第一側上,且運算塊502之一第二半經配置於向量處理單元504之一第二側上。
舉例而言,在圖5中展示之ASIC晶片500中,向量處理單元504包含兩個區段(例如,兩列),該兩個區段之各者包含匹配運算塊502之行數之若干片段506。各片段506可經定位且經組態以從運算塊之一區段510內之運算塊502之一對應行接收一輸出,諸如一累加和。在圖5中展示之實例中,定位於向量處理單元504之一第一側上(例如,向量處理單元504上方)之運算塊區段510a、510b可透過可控制匯流排線耦合至片段506之頂列。定位於向量處理單元504之一第二側上(例如,向量處理單元504下方)之運算塊區段510c、510d可透過可控制匯流排線耦合至片段506之底列。此外,可將處理單元504上方第一半內之各運算塊502定位於距向量處理單元504之與處理單元504下方第二半內之一各自運算塊502相同之一距離處,使得兩半之間之整體延時不存在差異。例如,可將第一區段510a中之列i中之運算塊502 (其中變數i對應於列位置)定位於遠離向量處理單元504之與運算塊之一第二區段(例如,區段510c)中之列m-1-i中之運算塊502相同的距離處(其中m表示各區段中之列之總數,且假定列在兩個區段中沿相同方向遞增)。
與其中將向量處理單元504定位於全部運算塊502之一遠端(例如,底部)處的一配置相比,以此方式組態運算塊區段510可使資料向及/或從向量處理單元504行進之距離(及因此與資料傳播相關聯之延時)減半。例如,與透過運算塊502之一行從區段510a接收一累加和相關聯之延時可係與透過運算塊502之一行從區段510a及510c接收一累加和相關聯之延時的一半。可藉由將控制信號提供至可控制匯流排線之輸送器元件及多工器而程式化運算塊502及向量處理單元504之耦合配置。
在ASIC晶片500之操作期間,啟動輸入可在運算塊之間移位。舉例而言,啟動輸入可沿第一維度501移位。另外,來自由運算塊502執行之運算之輸出(例如,由運算塊502內之運算陣列執行之運算之輸出)可沿第二維度503在運算塊之間移位。
在一些實施方案中,可控制匯流排線可實體上硬接線以導致資料跳過運算塊502以減少與ASIC晶片500之操作相關聯之延時。舉例而言,由一第一運算塊502執行之一運算之一輸出可沿格柵之第二維度503移位至一第二運算塊502,該第二運算塊502經定位成遠離第一運算塊502至少一個運算塊,因此跳過其間之運算塊。在另一實例中,來自一第一運算塊502之一啟動輸入可沿格柵之第一維度501移位至一第二運算塊502,該第二運算塊502經定位成遠離第一運算塊502至少一個運算塊,因此跳過其間之運算塊。藉由在使啟動輸入或輸出資料移位時跳過至少一個運算塊,可減小整體資料路徑長度,使得更快速地傳送資料(例如,無需利用一時脈週期以將資料儲存於跳過運算塊處),且減少延時。
在一例示性實施方案中,區段510a之各行內之各運算塊502可透過可控制匯流排線組態以沿第二維度503朝向向量處理單元504傳遞輸出資料。各行內之運算塊502可進一步經組態以藉由跳過下一鄰近運算塊(例如,透過運算塊之間之可控制匯流排線之實體硬接線)而朝向向量處理單元504傳遞資料。即,第一區段510a中之一位置(i, j) = (0, 0)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經硬接線以將輸出資料傳遞至一位置(i, j) = (2, 0)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (2, 0)處之運算塊502可經硬接線以將輸出資料傳遞至一位置(i, j) = (4, 0)處之一運算塊502等等。未被跳過之最後運算塊(例如,定位於位置(i, j) = (16, 0)處之運算塊502)將輸出資料傳遞至向量處理單元504。對於具有18列運算塊之一區段510,諸如圖5中展示之實例,運算塊跳過確保一區段510內之全部運算塊遠離向量處理單元504至多9個「運算塊跳躍(tile hop)」,因此藉由將資料路徑長度及所得資料延時減小一半而改良ASIC晶片500效能。
在另一例示性實施方案中,區段510a、510c之各列內及區段510b、510d之各列內之各運算塊502可透過可控制匯流排線組態以沿第一維度501傳遞啟動輸入。舉例而言,區段510a、510b、510c、510d之一些運算塊可經組態以朝向格柵500之一中心或朝向通信介面508傳遞啟動輸入。各列內之運算塊502可進一步經組態以(例如)藉由硬接線運算塊之間之可控制匯流排線而跳過鄰近運算塊。舉例而言,第一區段510a中之一位置(i, j) = (0, 0)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 2)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (0, 2)處之一運算塊502可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 4)處之一運算塊502等等。在一些情況中,未被跳過之最後運算塊(例如,定位於位置(i, j) = (0, 14)處之運算塊502)未將啟動輸入傳遞至另一運算塊上。
類似地,被跳過之運算塊可在相反方向上傳遞啟動輸入。舉例而言,第一區段510a中之一位置(i, j) = (0, 15)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 13)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (0, 13)處之一運算塊502可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 11)處之一運算塊502等等。在一些情況中,未被跳過之最後運算塊(例如,定位於位置(i, j) = (0, 1)處之運算塊502)未將啟動輸入傳遞至另一運算塊上。藉由跳過運算塊,在一些實施方案中可藉由使資料路徑長度及所得資料延時減小一半而改良ASIC晶片500效能。
如本文中說明,在一些實施方案中,運算塊502之一或多者專用於儲存控制資訊。即,專用於儲存控制資訊之運算塊502未參與對諸如權重輸入及啟動輸入之輸入資料執行計算。控制資訊可包含(例如)用於在ASIC晶片500之操作期間組態可控制匯流排線,使得可在ASIC晶片500上四處移動資料的控制資料。可以控制信號之形式將控制資料提供至可控制匯流排線以用於控制可控制匯流排線之輸送器元件及多工器。控制資料指定可控制匯流排線之特定輸送器元件是否將資料傳遞至可控制匯流排線之一下一輸送器元件,使得根據一預定排程在運算塊之間傳送資料。控制資料額外地指定是否從或向一匯流排線傳送資料。舉例而言,控制資料可包含控制信號,該等控制信號引導一多工器以將資料從一匯流排線傳送至記憶體及/或一運算塊內之其他電路。在另一實例中,控制資料可包含控制信號,該等控制信號引導一多工器以將資料從運算塊內之記憶體及/或電路傳送至匯流排線。在另一實例中,控制資料可包含控制信號,該等控制信號引導一多工器以在一匯流排線與通信介面508之間及/或在匯流排線與向量處理單元504之間傳送資料。替代地,如本文中揭示,未使用專用控制運算塊。實情係,在此等情況中,各運算塊之局部記憶體儲存該特定運算塊之控制資訊。
圖6繪示用於ASIC晶片500中之一運算塊600之實例。各運算塊600包含局部記憶體602及耦合至記憶體602的一運算陣列604。局部記憶體602包含定位成近接運算陣列604的實體記憶體。運算陣列604包含多個單元606。運算陣列604之各單元606包含經組態以基於至單元606之資料輸入(諸如啟動輸入及權重輸入)而執行一運算(例如,一乘法及累加運算)的電路。各單元可在時脈信號之一週期執行運算(例如,乘法及累加運算)。運算陣列604可具有比行更多之列、比列更多之行、或相等數目個行及列。例如,在圖6中展示之實例中,運算陣列604包含配置成8列及8行的64個單元。其他運算陣列大小亦係可行的,諸如具有16個單元、32個單元、128個單元、或256個單元等等之運算陣列。各運算塊可包含相同數目個單元及/或相同大小運算陣列。接著,可針對ASIC晶片並行執行之操作之總數取決於具有晶片內之相同大小運算陣列之運算塊之總數。舉例而言,對於圖5中展示之含有大約1150個運算塊之ASIC晶片500,此意謂每一週期可並行執行大約72,000個運算。可使用之時脈速度之實例包含(但不限於) 225 MHz、500 MHz、750 MHz、1 GHz、1.25 GHz、1.5 GHz、1.75 GHz或2 GHz。各個別運算塊之運算陣列604係較大脈動運算塊陣列之一子集,如圖1中繪示。
含於運算塊600中之記憶體602可包含(例如)隨機存取記憶體(RAM),諸如SRAM。各記憶體602可經組態以儲存與圖5中繪示之ASIC晶片之n個運算塊502相關聯之總記憶體之1/n。記憶體602可被提供為一單一晶片或多個晶片。舉例而言,圖6中展示之記憶體602被提供為四個單埠SRAM,其等之各者耦合至運算陣列604。替代地,記憶體602可被提供為兩個單埠SRAM或八個單埠SRAM以及其他組態。在錯誤校正編碼之後,記憶體之聯合容量可係(但不限於) (例如) 16 kB、32 kB、64 kB或128 kB。藉由在運算陣列本端提供實體記憶體602,在一些實施方案中可大大減小ASIC 500之接線密度。在其中記憶體集中於ASIC 500內之一替代組態中,與如本文中描述般在本端提供相反,記憶體頻寬之各位元可能需要一導線。覆蓋ASIC 500之各運算塊所需之導線之總數將遠遠超過ASIC 100內之可用空間。相比之下,運用針對各運算塊提供之專用記憶體,可實質上減小跨越ASIC 500之區域所需之總數。
運算塊600亦包含可控制匯流排線。可將可控制匯流排線分類成多個不同群組。舉例而言,可控制匯流排線可包含經組態以沿各基本方向在運算塊之間傳送資料的通用可控制匯流排線610之一第一群組。即,可控制匯流排線610之第一群組可包含:匯流排線610a,其等經組態以沿運算塊之格柵之第一維度501朝向一第一方向(被稱為圖6中之「東」)傳送資料;匯流排線610b,其等經組態以沿運算塊之格柵之第一維度101朝向一第二方向(被稱為圖6中之「西」)傳送資料,其中該第二方向與該第一方向相反;匯流排線610c,其等經組態以沿運算塊之格柵之第二維度103朝向一第三方向(被稱為圖6中之「北」)傳送資料;及匯流排線610d,其等經組態以沿運算塊之格柵之第二維度103朝向一第四方向(被稱為圖6中之「南」)傳送資料,其中該第四方向與該第三方向相反。通用匯流排線610可經組態以攜載控制資料、啟動輸入資料、來自及/或至通信介面之資料、來自及/或至向量處理單元之資料、及待由運算塊600儲存及/或使用之資料(例如,權重輸入)。運算塊600可包含用於控制可控制匯流排線且因此向及/或從運算塊600及/或從記憶體602路由資料的一或多個控制元件621 (例如,正反器及多工器)。
可控制匯流排線亦可包含可控制匯流排線之一第二群組,本文中被稱為運算陣列部分和匯流排線620。運算陣列部分和匯流排線620可經組態以攜載從由運算陣列604執行之運算輸出之資料。舉例而言,匯流排線620可經組態以攜載從運算陣列604中之列獲得之部分和資料,如圖6中展示。在此情況中,匯流排線620之數目將匹配陣列604中之列之數目。例如,對於一8×8運算陣列,將存在8個部分和匯流排線620,其等之各者耦合至運算陣列604中之一對應列之輸出。運算陣列輸出匯流排線620可進一步經組態以耦合至ASIC晶片內之另一運算塊,例如,作為ASIC晶片內之另一運算塊之一運算陣列之輸入。舉例而言,運算塊600之陣列部分和匯流排線620可經組態以接收定位成遠離運算塊600至少一個運算塊之一第二運算塊之一運算陣列之輸入(例如,部分和620a)。接著,將運算陣列604之輸出與部分和線620相加以產生新部分和620b,該新部分和620b可從運算塊600輸出。接著,可將部分和620b傳遞至另一運算塊或替代地傳遞至向量處理單元。舉例而言,各匯流排線620可耦合至向量處理單元之一對應片段(諸如圖5中之片段506)。
如關於圖5說明,可控制匯流排線可包含諸如經組態以允許沿匯流排線輸送資料之輸送器元件(例如,正反器)的電路。在一些實施方案中,各可控制匯流排線針對各運算塊包含一對應輸送器元件。如關於圖5進一步說明,可控制匯流排線可包含諸如經組態以允許在ASIC晶片之不同運算塊、向量處理單元及通信介面之間傳送資料之多工器的電路。可將多工器定位於存在資料之一源或接收點之任何位置。舉例而言,在一些實施方案中,如圖6中展示,可將諸如多工器之控制電路621定位於可控制匯流排線之交叉點處(例如,通用匯流排線610a及610d之交叉點處、通用匯流排線610a及610c之交叉點處、通用匯流排線610b及610d之交叉點處、及/或通用匯流排線610b及610c之交叉點處)。匯流排線交叉點處之多工器可經組態以在交叉點處在匯流排線之間傳送資料。因此,藉由多工器之適當操作,可改變資料在可控制匯流排線上方行進之方向。舉例而言,可將在通用匯流排線610a上沿第一維度101行進之資料傳送至通用匯流排線610d,使得資料代替地沿第二維度103行進。在一些實施方案中,多工器可經定位成鄰近運算塊600之記憶體602,使得可向及/或從記憶體602傳送資料。
可在數位電子電路中、在有形體現之電腦軟體或韌體中、在電腦硬體中(包含本說明書中揭示之結構及其等結構等效物)、或在其等之一或多者之組合中實施本說明書中描述之標的及功能操作之實施例。本說明書中描述之標的之實施例可經實施為一或多個電腦程式,即,在一有形非暫時性儲存媒體上編碼以由資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。電腦儲存媒體可係一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。替代地或另外地,程式指令可在一人工產生之傳播信號(例如,一機器產生之電氣、光學或電磁信號)上編碼,該信號經產生以對資訊進行編碼以傳輸至適合接收器設備以由一資料處理設備執行。
術語「資料處理設備」係指資料處理硬體且涵蓋用於處理資料之全部種類之設備、裝置及機器,包含(藉由實例)一可程式化處理器、一電腦或多個處理器或電腦。設備亦可係或進一步包含專用邏輯電路,例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。除硬體以外,設備可視情況包含針對電腦程式建立一執行環境之程式碼,例如,組成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
亦可被稱為或描述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一指令碼或程式碼之一電腦程式可以任何形式之程式設計語言(包含編譯或解譯語言,或宣告式或程序語言)撰寫,且其可以任何形式(包含作為一獨立程式或作為一模組、組件、副常式,或適於用於一運算環境中之其他單元)部署。一程式可能但非必需對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令碼)之一檔案之一部分中、儲存於專用於討論中程式之一單一檔案中、或儲存於多個協調檔案(例如,儲存程式碼之一或多個模組、副程式或部分之檔案)中。一電腦程式可經部署以在一個電腦上執行或在定位於一個位點處或跨多個位點分佈且藉由一資料通信網路互連之多個電腦上執行。
一或多個電腦之一系統經組態以執行特定操作或動作意謂系統已在其上安裝在操作中導致系統執行操作或動作之軟體、韌體、硬體或其等之一組合。一或多個電腦程式經組態以執行特定操作或動作意謂一或多個程式包含在由資料處理設備執行時導致設備執行操作或動作的指令。
如本說明書中使用,一「引擎」或「軟體引擎」係指提供不同於輸入之一輸出之一軟體實施之輸入/輸出系統。一引擎可係一編碼功能性區塊,諸如一程式庫、一平台、一軟體開發工具包(「SDK」)或一物件。可在包含一或多個處理器及電腦可讀媒體之任何適當類型之運算裝置(例如,伺服器、行動電話、平板電腦、筆記型電腦、音樂播放器、電子書閱讀器、膝上型或桌上型電腦、PDA、智慧型電話或其他固定或可攜帶裝置)上實施各引擎。此外,可在相同運算裝置上或在不同運算裝置上實施引擎之兩者或兩者以上。
可藉由執行一或多個電腦程式之一或多個可程式化電腦執行本說明書中描述之程序及邏輯流程以藉由對輸入資料操作且產生輸出而執行功能。亦可藉由專用邏輯電路(例如,一FPGA或一ASIC),或藉由專用邏輯電路及一或多個程式化電腦之一組合執行程序及邏輯流程。
適於執行一電腦程式之電腦可基於通用或專用微處理器或該兩者,或任何其他種類之中央處理單元。通常,一中央處理單元將從一唯讀記憶體或一隨機存取記憶體或該兩者接收指令及資料。一電腦之必要元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可藉由專用邏輯電路補充或併入專用邏輯電路中。通常,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或操作地耦合以從該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或該兩者。然而,一電腦未必具有此等裝置。此外,一電腦可嵌入在另一裝置(例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲主控台、一全球定位系統(GPS)接收器或一可攜帶儲存裝置,例如,一通用串列匯流排(USB)快閃隨身碟,僅舉幾例)中。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包括(藉由實例):半導體記憶體裝置,例如,EPROM、EEPROM及快閃記憶體裝置;磁碟,例如,內部硬碟或可移除磁碟;磁光碟;及CD-ROM及DVD-ROM光碟。
為提供與一使用者的互動,可在具有用於將資訊顯示給使用者之一顯示裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及一鍵盤及指標裝置(例如,一滑鼠、軌跡球或一存在敏感顯示器或使用者可藉由其提供輸入至電腦之其他表面)之一電腦上實施本說明書中描述之標的之實施例。亦可使用其他種類之裝置來提供與一使用者的互動;舉例而言,提供給使用者之回饋可係任何形式之感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式接收,包含聲學、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由使用者使用之一裝置且從該裝置接收文件而與一使用者互動;舉例而言,藉由回應於從一使用者之裝置上之一網頁瀏覽器接收之請求而將網頁發送至網頁瀏覽器。再者,一電腦可藉由將文字訊息或其他形式之訊息發送至運行一傳訊應用程式且作為回報從使用者接收回應訊息之一個人裝置(例如,一智慧型電話)而與一使用者互動。
可在一運算系統中實施本說明書中描述之標的之實施例,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中間組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中描述之標的之一實施方案互動之一圖形使用者介面、一網頁瀏覽器或一應用程式之一用戶端電腦),或一或多個此等後端組件、中間組件或前端組件之任何組合。系統之組件可藉由任何形式或介質之數位資料通信(例如,一通信網路)互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN),例如,網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常遠離彼此且通常透過一通信網路互動。用戶端及伺服器之關係憑藉在各自電腦上運行且具有相對於彼此之一用戶端-伺服器關係之電腦程式而產生。在一些實施例中,一伺服器將資料(例如,一HTML頁面)傳輸至一使用者裝置,例如,用於將資料顯示給與充當一用戶端之裝置互動之一使用者且從該使用者接收使用者輸入之目的。可在伺服器處從裝置接收使用者裝置處產生之資料(例如,使用者互動之結果)。
雖然本說明書含有許多特定實施方案細節,但此等不應被解釋為對任何發明之範疇或對可主張之內容之範疇之限制,而係被解釋為可能特定於特定發明之特定實施例之特徵之描述。本說明書中在單獨實施例之背景內容中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之背景內容中描述之各種特徵亦可在多個實施例中分別或以任何適合子組合實施。此外,儘管特徵在上文中可被描述為以某些組合起作用且甚至最初如此主張,然來自一所主張組合之一或多個特徵在一些情況中可從組合刪除,且所主張組合可能係關於一子組合或一子組合之變化例。
類似地,雖然在圖式中以一特定順序描繪操作,但此不應被理解為要求以展示之特定順序或以循序順序執行此等操作,或執行全部繪示操作以達成所要結果。在某些情境中,多任務及並行處理可係有利的。此外,上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在全部實施例中要求此分離,且應瞭解,所描述之程式組件及系統通常可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。舉例而言,發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,附圖中描繪之程序不一定要求所展示之特定順序,或循序順序以達成所要結果。在特定一些情況中,多任務及並行處理可係有利的。
100:子系統 101:第一維度 103:第二維度 110:靜態隨機存取記憶體(SRAM) 122a:啟動線 122b:啟動線 122n:啟動線 124a:延遲暫存器 124b:延遲暫存器 124n:延遲暫存器 130a:運算塊 130b:運算塊 130n:運算塊 140:向量累加器 150:排程邏輯 210:延遲暫存器資料 220:啟動線資料 310:第一列群組 312:第二列群組 314:第三列群組 410:步驟 420:步驟 430:步驟 500:特定應用積體電路(ASIC) 501:第一維度 502:運算塊 503:第二維度 504:向量處理單元 506:片段 508a:第一通信介面 508b:第二通信介面 510a:區段/第一區段 510b:區段 510c:區段/第二區段 510d:區段 600:運算塊 602:局部記憶體 604:運算陣列 606:單元 610a:通用匯流排線 610b:通用匯流排線 610c:通用匯流排線 610d:通用匯流排線 620:運算陣列部分和匯流排線 620a:部分和 620b:新部分和 621:控制電路/控制元件
圖1係一機器學習加速器之一例示性子系統之一圖式。 圖2係一迴旋運算之一可視化。 圖3A繪示排程邏輯如何在各局部時標上在啟動線資料與延遲暫存器資料之間選取之一詳細實例。 圖3B繪示僅使用延遲暫存器運算一迴旋。 圖3C繪示使用一條啟動線及兩個延遲暫存器運算一迴旋。 圖3D繪示使用兩條啟動線及一個延遲暫存器運算一迴旋。 圖4係使用來自啟動線及延遲暫存器之資料之一重複型樣執行一迴旋之一例示性程序之一流程圖。 圖5係繪示專用邏輯電路之一實例之一示意圖。 圖6繪示一運算塊之實例。 各個圖式中之相同元件符號及名稱指示相同元件。
410:步驟
420:步驟
430:步驟

Claims (19)

  1. 一種處理器,其包括: 複數個運算塊; 複數個啟動線,其等將一記憶體裝置耦合至一各自運算塊,其中該記憶體裝置經組態以儲存一輸入資料陣列; 複數個延遲暫存器,其等各自與一各自啟動線配對;及 排程電路,其經組態以從該複數個運算塊之各運算塊之一啟動線或該啟動線之一延遲暫存器選擇該運算塊之一各自輸入啟動, 其中各運算塊在從一啟動線或一延遲暫存器接收一輸入啟動後經組態以將該輸入啟動乘以一核之複數個權重之一各自權重以產生一特定運算之一部分和。
  2. 如請求項1之處理器,其中該處理器係一機器學習加速器。
  3. 如前述請求項中任一項之處理器,其中該特定運算係一迴旋運算,且其中該複數個權重係一卷積核之複數個權重。
  4. 如前述請求項中任一項之處理器,其進一步包括經組態以從由該複數個運算塊之各者運算之部分和運算一累加和的一向量累加器。
  5. 如前述請求項中任一項之處理器,其中該處理器經組態以在各全域時標上從該記憶體裝置讀取新值。
  6. 如請求項5之處理器,其中該排程電路經組態以依其中選定延遲暫存器之一數目在各全域時標之各局部時標上減小且選定啟動線之一數目在各全域時標之各局部時標上增大的一型樣選擇輸入啟動。
  7. 如請求項6之處理器,其中該排程邏輯經組態以在一第一局部時標上針對各列群組選擇三個延遲暫存器且未選擇啟動線,在一第二局部時標上針對各列群組選擇兩個延遲暫存器及一條啟動線,且在一第三局部時標上針對各列群組選擇一個延遲暫存器及兩條啟動線。
  8. 如前述請求項中任一項之處理器,其中各輸入啟動僅每列群組一次地從該記憶體裝置讀取。
  9. 如前述請求項中任一項之處理器,其中該處理器經組態以在各全域時標上用來自一配對啟動線之資料覆寫該等延遲暫存器中之資料。
  10. 一種方法,其由一處理器執行,該處理器包括: 複數個運算塊; 複數個啟動線,其等將一記憶體裝置耦合至一各自運算塊,其中該記憶體裝置儲存一輸入資料陣列; 複數個延遲暫存器,其等各自與一各自啟動線配對;及 排程電路, 該方法包括: 藉由該排程電路從該複數個運算塊之各運算塊之一啟動線或該啟動線之一延遲暫存器選擇該運算塊之一各自輸入啟動,及 在藉由各運算塊從一啟動線或一延遲暫存器接收一輸入啟動後,藉由該運算塊將該輸入啟動乘以一核之複數個權重之一各自權重以產生一特定運算之一部分和。
  11. 如請求項10之方法,其中該處理器係一機器學習加速器。
  12. 如請求項10或11中任一項之方法,其中該特定運算係一迴旋運算,且其中該複數個權重係一卷積核之複數個權重。
  13. 如請求項10至12中任一項之方法,其進一步包括藉由一向量累加器從由該複數個運算塊之各者運算之部分和運算一累加和。
  14. 如請求項10至13中任一項之方法,其進一步包括在各全域時標上從該記憶體裝置讀取新值。
  15. 如請求項14之方法,其進一步包括藉由該排程邏輯以其中選定延遲暫存器之一數目在各全域時標之各局部時標上減小且選定啟動線之一數目在各全域時標之各局部時標上增大的一型樣選擇輸入啟動。
  16. 如請求項15之方法,其進一步包括藉由該排程邏輯在一第一局部時標上針對各列群組選擇三個延遲暫存器且未選擇啟動線,在一第二局部時標上針對各列群組選擇兩個延遲暫存器及一條啟動線,且在一第三局部時標上針對各列群組選擇一個延遲暫存器及兩條啟動線。
  17. 如請求項10至16中任一項之方法,其中各輸入啟動僅每列群組一次地從該記憶體裝置讀取。
  18. 如請求項10至17中任一項之方法,其進一步包括在各全域時標上用來自一配對啟動線之資料覆寫該等延遲暫存器中之資料。
  19. 一種包括電腦可讀程式碼之電腦程式產品,該電腦可讀程式碼在由包括如請求項1至9中任一項之處理器之一系統執行時導致該系統執行如請求項10至18中任一項之方法。
TW109129735A 2019-11-13 2020-08-31 處理器、運算方法及電腦程式產品 TWI767310B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962935038P 2019-11-13 2019-11-13
US62/935,038 2019-11-13
US16/718,055 US11327690B2 (en) 2019-11-13 2019-12-17 Enhanced input of machine-learning accelerator activations
US16/718,055 2019-12-17

Publications (2)

Publication Number Publication Date
TW202119299A true TW202119299A (zh) 2021-05-16
TWI767310B TWI767310B (zh) 2022-06-11

Family

ID=72340181

Family Applications (2)

Application Number Title Priority Date Filing Date
TW111117325A TW202234301A (zh) 2019-11-13 2020-08-31 處理器、運算方法及電腦程式產品
TW109129735A TWI767310B (zh) 2019-11-13 2020-08-31 處理器、運算方法及電腦程式產品

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW111117325A TW202234301A (zh) 2019-11-13 2020-08-31 處理器、運算方法及電腦程式產品

Country Status (4)

Country Link
US (2) US11327690B2 (zh)
EP (1) EP3822773A1 (zh)
TW (2) TW202234301A (zh)
WO (1) WO2021096581A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210357748A1 (en) * 2020-05-14 2021-11-18 Samsung Electronics Co., Ltd. Hierarchical weight preprocessing for neural network accelerator
US11227207B1 (en) 2021-03-29 2022-01-18 SambaNova Systems, Inc. Lossless tiling in convolution networks—section boundaries
US11250061B1 (en) * 2021-03-29 2022-02-15 SambaNova Systems, Inc. Lossless tiling in convolution networks—read-modify-write in backward pass
US11263170B1 (en) 2021-03-29 2022-03-01 SambaNova Systems, Inc. Lossless tiling in convolution networks—padding before tiling, location-based tiling, and zeroing-out
US11195080B1 (en) 2021-03-29 2021-12-07 SambaNova Systems, Inc. Lossless tiling in convolution networks—tiling configuration
US11815935B2 (en) 2022-03-25 2023-11-14 Micron Technology, Inc. Programming a coarse grained reconfigurable array through description of data flow graphs
US20230306272A1 (en) * 2022-03-25 2023-09-28 Micron Technology, Inc. Mapping Workloads to Circuit Units in a Computing Device via Reinforcement Learning
CN117725348B (zh) * 2024-02-07 2024-05-10 蓝象智联(杭州)科技有限公司 一种gpu计算大规模数组求和过程中的线程管理方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10725934B2 (en) * 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10353709B2 (en) 2017-09-13 2019-07-16 Nextera Video, Inc. Digital signal processing array using integrated processing elements
KR20190032809A (ko) 2017-09-20 2019-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
CN109871275A (zh) 2017-12-01 2019-06-11 晨星半导体股份有限公司 多处理器系统及其处理器管理方法
US20220180158A1 (en) * 2020-12-09 2022-06-09 Arm Limited Mixed-Signal Artificial Neural Network Accelerator
WO2022132475A1 (en) * 2020-12-17 2022-06-23 Micron Technology, Inc. Memory activation timing management

Also Published As

Publication number Publication date
US20220334776A1 (en) 2022-10-20
US20210141571A1 (en) 2021-05-13
US11327690B2 (en) 2022-05-10
TWI767310B (zh) 2022-06-11
WO2021096581A1 (en) 2021-05-20
TW202234301A (zh) 2022-09-01
US11762602B2 (en) 2023-09-19
EP3822773A1 (en) 2021-05-19

Similar Documents

Publication Publication Date Title
TW202119299A (zh) 機器學習加速器啟動之增強型輸入
KR102610083B1 (ko) 신경망 프로세서에서의 배치 프로세싱
KR20190116434A (ko) 저 레이턴시 행렬 곱셈 유닛
US11088694B1 (en) Application specific integrated circuit accelerators
US20240104012A1 (en) Topological scheduling
TWI750557B (zh) 按行緩衝器單元記憶體分配之判定
JP7476299B2 (ja) 同期プロセッサのためのコンパイル
JP2023145676A (ja) 伝搬レイテンシの短縮
US20210133579A1 (en) Neural network instruction streaming
US20220413721A1 (en) Control of machine-learning systems
CN116644813A (zh) 一种利用量子电路确定最优组合方案的方法及装置
Anciaux Sedrakian et al. Distributed GPU Based Matrix Power Kernel for Geoscience Applications