TWI720566B - 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 - Google Patents
用於增加處理單元執行機器學習運算之速度之設備、方法及系統 Download PDFInfo
- Publication number
- TWI720566B TWI720566B TW108127135A TW108127135A TWI720566B TW I720566 B TWI720566 B TW I720566B TW 108127135 A TW108127135 A TW 108127135A TW 108127135 A TW108127135 A TW 108127135A TW I720566 B TWI720566 B TW I720566B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- address
- tensor
- data
- initial
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000010801 machine learning Methods 0.000 title claims description 10
- 238000006073 displacement reaction Methods 0.000 claims description 225
- 238000010276 construction Methods 0.000 claims description 13
- 238000000547 structure data Methods 0.000 claims description 10
- 238000003491 array Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Neurology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
方法、系統及設備包含用於存取資料之一設備。在一些實施方案中,一設備包含各經組態以儲存一位址位移值之位址位移值元素。針對各位址位移值元素,該設備可包含各儲存用於判定該位址位移值之一值的位址運算元素。一或多個處理器經組態以接收用於使用一張量之張量元素執行運算之一程式。該(等)處理器可在該程式中識別一初構或終解迴圈,該初構或終解迴圈具有用於儲存該初構或終解迴圈之值的一對應資料陣列,且針對對應於該初構或終解迴圈之一第一位址位移值元素,至少基於該初構或終解迴圈之數次反覆將各自值填入該第一位址位移值元素之該位址運算元素。
Description
本說明書大體上係關於存取用於使用一專用運算單元執行機械學習運算之資料。
神經網路係採用一或多個模型層以針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除一外層以外,一些神經網路亦包含一或多個隱藏層。各隱藏層之輸出被用作網路中之下一層(即,網路之下一隱藏層或輸出層)之輸入。各層根據一各自參數集之當前值從一所接收輸入產生一輸出。
一些神經網路包含一或多個卷積神經網路層。各卷積神經網路層具有一相關聯核心集。核心可表示為權重輸入之一矩陣結構。各卷積層使用核心處理層之輸入。層之一輸入集亦可表示為一矩陣結構。
本說明書描述關於判定初構及/或終解資料之記憶體位址且存取用於使用一專用運算單元進行機器學習運算之資料的技術。
一般言之,本說明書中描述之標的物之一個發明態樣可體現於一種用於存取資料之設備中。該設備可包含各經組態以儲存一位址位移值之位址位移值元素。針對各位址值元素,該設備可包含各儲存用於判定儲存於該位址位移值元素中之該位址位移值之一值的位址運算元素。該設備可包含一或多個處理器,其等經組態以接收用於使用一N維張量之張量元素執行運算之一程式。該(等)處理器可經組態以在該程式中識別一初構或終解迴圈,該初構或終解迴圈具有用於儲存該初構或終解迴圈之值的一對應資料陣列。該一或多個處理器可實施為包含一或多個加法器之電路。
該(等)處理器可經組態以針對對應於初構或終解迴圈之一第一位址位移值元素,至少基於該初構或終解迴圈之數次反覆將各自值填入該第一位址位移值元素之位址運算元素。該(等)處理器可經組態以針對該N維張量之各維度之一第二位址位移值元素,至少基於該程式中對應於該維度的一迴圈之數次反覆將各自值填入該第二位址位移值元素之位址運算元素。該(等)處理器可經組態以針對各資料陣列之各資料元素,使用在判定該資料元素之一記憶體位址時該資料陣列之該第一位址位移值之一當前值來判定該資料元素之該記憶體位址。在該資料陣列之一資料元素之一記憶體位址之各判定之後調整該資料陣列之該第一位址位移值。
該(等)處理器可經組態以針對該N維張量之各張量元素,使用在判定該張量元素之一記憶體位址時各第二位址位移值之一當前值來判定該張量元素之該記憶體位址。在該N維張量之一張量元素之一記憶體位址之各判定之後調整該等第二位址位移值之一或多者。該(等)處理器可經組態以輸出指示各張量元素及各資料元素之該所判定位址的資料。
此等及其他實施方案可各視情況包含下列特徵之一或多者。在一些態樣中,該設備可包含一處理單元,其經組態以基於各所判定位址存取各張量元素及各資料元素。例如,該處理單元可存取該等張量及資料元素以執行機器學習或其他運算。在一些實例中,該處理單元可在實行用於使用一N維張量之張量元素執行運算之該程式時存取該等張量及資料元素。該一或多個資料陣列可包含含有資料元素之一初構資料陣列。各資料元素可儲存用於一機器學習運算之一偏差值。
在一些態樣中,該一或多個處理器可判定一第一序列中之各張量元素之記憶體位址且該一或多個處理器判定在該第一序列之前或之後的一第二序列中之各資料元素之記憶體位址。判定一特定張量元素之位址可包含使用一或多個硬體加法器判定各維度之位址位移值之一總和。在一些態樣中,判定一特定資料元素之位址可包含判定該特定資料元素之位址位移值與該資料元素之一基底位址的一總和。
在一些態樣中,該等位址運算元素包含儲存該初構或終解迴圈之一第一初始值的一第一初始值元素、儲存該初構或終解迴圈之第一步進值的一第一步進值元素,且針對該N維張量之各維度:儲存該維度之一第二初始值的一第二初始值元素及儲存該維度之一第二步進值的一第二步進值元素。
在一些態樣中,各位址位移值元素、各初始值元素及各步進值元素係一暫存器。在一些態樣中,該一或多個處理器基於指定各資料陣列之一迴圈及該N維張量之一巢狀迴圈的一單一指令初始化各第一初始值、各第一步進值、各第二初始值及各第二步進值。
在一些態樣中,該一或多個處理器經組態以針對各維度藉由將步進值加至該維度之一先前位址位移值而判定在該維度之一巢狀迴圈之各反覆之後該維度之該位址位移值。
在一些態樣中,該設備針對各維度包含儲存該維度之一極限值的一極限值元素。該一或多個處理器可經進一步組態以針對各維度判定該維度之所判定位址位移值是否等於該維度之極限值。回應於判定對應於一第一巢狀迴圈之一第一維度之所判定位址位移值等於該第一維度之該極限值,該一或多個處理器可將該第一維度之該位址位移值重設為該第一維度之初始值並針對對應於其中巢狀處理該第一巢狀迴圈之一第二巢狀迴圈之一第二維度且使用該一或多個硬體加法器更新該第二維度之位址位移值以等於該第二維度之步進值與該第二維度之位址位移值的一總和。
本說明書中描述之標的物可在特定實施例中實施以實現以下優點之一或多者。使用暫存器追蹤記憶體位址值容許使深度巢狀迴圈反覆且用一個指令存取初構及/或終解資料之一程式。可藉由基於儲存於該等暫存器中之該等值應用簡單加法而快速判定記憶體位址值。一專用運算單元可包含計算位址之加法器。藉由使用加法器而非算術邏輯單元(ALU)、多工器或其他複雜電路,可減小電路之大小及電路之製造成本。使用硬體加法器判定記憶體位址值容許減少處理器處之運算循環數目且增加用於其他運算任務之處理器帶寬。一個二維暫存器架構容許同時追蹤各具有不同維度及初構及/或終解資料陣列之多維張量。一單一硬體編碼指令可用於判定初構及/或終解資料元素及張量元素之記憶體位址且存取其等之資料。使用一單一指令導致更密集編碼、更少所用記憶體資源及/或更少所需記憶體資源。
此及其他態樣之其他實施方案包含對應系統、方法及電腦程式,其等經組態以執行該等方法之動作、編碼於電腦儲存裝置上。一或多個電腦之一系統可憑藉安裝於該系統上之在操作時引起該系統執行該等動作之軟體、韌體、硬體或其等之一組合而如此組態。一或多個電腦程式可憑藉具有在由資料處理設備實行時引起該設備執行該等動作之指令而如此組態。
在下文隨附圖式及描述中闡述本說明書所描述之標的物之一或多個實施方案之細節。從描述、圖式及發明申請專利範圍將變得明白標的物之其他潛在特徵、態樣及優點。
一般言之,當一軟體演算法處理一N維張量時,可使用一巢狀迴圈。各迴圈可負責遍歷N維張量之一各自維度。一多維張量可為一矩陣或一多維矩陣。例如,一2維張量係一矩陣,而一3維張量係由多個二維矩陣組成之一個三維矩陣。N維張量之各維度可包含一或多個元素,其中各元素可儲存一各自資料值。例如,一張量可為一程式中之一變量,其中變量可具有三個維度。第一維度可具有三百個元素之一長度,第二維度可具有一千個元素之一長度,且第三維度可具有二十個元素之一長度。當然,各維度中之其他元素數目係可行的。
在一巢狀迴圈中遍歷張量可包含一張量元素之一記憶體位址值之一運算以載入或儲存張量元素之對應資料值。一for迴圈係一巢狀迴圈之一實例,其中由三個迴圈索引變量(例如,i
、j
及k
)追蹤之三個迴圈可經巢狀處理以遍歷一個三維張量。在一神經網路中,可在與張量相關聯之一或多個點積運算中使用一元素之一值。例如,張量元素之值可與對應參數或權重相乘。可基於巢狀for迴圈依序遍歷張量之張量元素以存取元素且使用元素之值執行一或多個運算。繼續三維張量實例,可使用一外for迴圈以遍歷由變量i
追蹤之迴圈,可使用一中間for迴圈以遍歷由變量j
追蹤之迴圈,且可使用一內for迴圈以遍歷由變量k
追蹤之迴圈。在此實例中,所存取之第一元素可為(i
=0,j
=0,k
=0),第二元素可為(i
=0,j
=0,k
=1),以此類推。如下文描述,一張量遍歷單元可基於指定巢狀迴圈之一指令判定各元素之記憶體位址,使得一處理單元可存取元素之值且使用元素之值執行一或多個運算。亦可類似地使用一或多個for迴圈(例如,包含多個巢狀for迴圈之一迴圈巢狀)存取權重或參數之值。張量遍歷單元亦可判定用於運算之權重或參數及/或運算之輸出之記憶體位址,其等可用作神經網路之一隱藏層之輸入。
一初構係在一主函數或主迴圈巢狀之前執行的一或多個迴圈。例如,一初構可用於在使用張量元素值執行一運算之前執行一函數(例如,載入或運算偏差值)。一初構可包含在實行張量之巢狀迴圈之前實行的一或多個迴圈。例如,一初構可用於判定用於一神經網路運算之偏差值或權重。類似地,一終解係在一主函數或主迴圈巢狀之後執行的一或多個迴圈。例如,一終解可用於在使用張量元素值執行一運算之後執行一函數。本文中描述之張量遍歷單元可使用用於判定用於存取一張量之張量元素的記憶體位址之一相同指令判定用於存取一或多個初構及/或終解資料陣列之資料元素的記憶體位址。
例如,一指令可指定用於判定初構資料元素之記憶體位址的一for迴圈及用於判定張量元素之記憶體位址的巢狀迴圈。在另一實例中,一指令可指定用於判定終解資料元素之記憶體位址的一for迴圈及用於判定張量元素之記憶體位址的巢狀迴圈。在又另一實例中,一指令可指定用於判定初構資料元素之記憶體位址的一for迴圈、用於判定張量元素之記憶體位址的巢狀for迴圈及用於判定終解資料元素之記憶體位址的一for迴圈。如下文描述,張量遍歷單元可將指令轉換為一組值,該組值用於基於由指令指定之迴圈反覆地判定各資料元素之記憶體位址。
張量遍歷單元可判定一序列中之記憶體位址(例如,每次一個)且輸出記憶體位址以供一處理單元使用。處理單元可使用記憶體位址來存取資料元素及張量元素例如以使用元素之值執行神經網路運算。
圖1展示用於遍歷一張量之一例示性運算系統100之一方塊圖。一般言之,運算系統100處理一輸入104以產生一輸出116。運算系統100可經組態以執行線性代數運算,例如機器學習運算。輸入104可為可由運算系統100處理之任何適合資料。運算系統100包含一處理單元102、一儲存媒體104及一張量遍歷單元106。
一般言之,當處理單元102實行用於存取一張量之一特定元素的一指令時,處理單元102可存取儲存媒體104以讀取表示特定元素之值的資料114。處理單元102可使用由張量遍歷單元106判定之一記憶體位址來存取儲存媒體104以讀取表示特定資料元素之值的資料114。例如,一程式可包含一巢狀迴圈且處理單元102可實行一指令以根據與巢狀迴圈相關聯之當前索引變量值存取巢狀迴圈內之二維陣列變量之一元素。張量遍歷單元106可針對二維陣列之各元素基於在判定元素之一記憶體位址時索引變量值之一當前值判定表示自該記憶體位址之一位移的一位址位移值。在另一實例中,張量遍歷單元106可在實行程式之前判定位址位移值且處理單元102可自儲存媒體存取所判定位移值。處理單元102可接著使用位址位移值且自儲存媒體104存取二維陣列變量之特定元素。
處理單元102經組態以處理用於在運算系統100內實行之指令,包含儲存於儲存媒體104中之指令112或儲存於另一儲存裝置中之其他指令。處理單元102可包含一或多個處理器。儲存媒體104將資訊儲存於運算系統100內。在一些實施方案中,儲存媒體104係一或若干揮發性記憶體單元。在一些其他實施方案中,儲存媒體104係一或若干非揮發性記憶體單元。儲存媒體104亦可為另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或一裝置陣列(包含一儲存區域網路中之裝置或其他組態)。該等指令在由處理單元102實行時導致處理單元102執行一或多個任務。
張量遍歷單元106可實施為一特定應用積體電路。張量遍歷單元106可經組態以判定與一或多個張量及一初構及/或終解之一或多個資料陣列相關聯之記憶體位址值。值可包含初始值、步進值、結束值、位址位移值、基於位址位移值之記憶體位址位移值及/或基於記憶體位址位移值及一基底位址之記憶體位址值。
張量遍歷單元106將張量索引轉譯為記憶體位址。例如,張量遍歷單元106可將一組N維張量索引轉譯為一維位址空間。張量遍歷單元106可藉由使一張量元素之記憶體位址變成元素之維度索引之一組合(例如,一線性組合)而執行此等轉譯。
張量遍歷單元106可高效且程式化地產生參考一張量元素序列之一記憶體位址序列。位址序列對應於將由一軟體遍歷常式中之一迴圈巢狀存取之張量元素序列。在遍歷期間存取之元素序列在記憶體中可為實體連續或可不為實體連續的。
類似地,張量遍歷單元106可高效且程式化地產生參考一初構之一資料元素序列及/或一終解之一資料元素序列的記憶體位址序列。例如,一程式可包含在迴圈巢狀之前實行的一初構迴圈及/或在迴圈巢狀之後實行的一終解迴圈。一初構或終解之位址序列可對應於將由一軟體遍歷常式中之初構或終解迴圈存取之資料元素序列。
張量遍歷單元106包含張量位址值元素122及一數學單元124。張量位址值元素122之各者可為一儲存元素,例如一暫存器或其他適合儲存電路。在一些實施方案中,張量位址值元素122可實體或邏輯地配置成不同群組,如下文參考圖2A至圖2J更詳細描述。在一些實施方案中,張量位址值元素122之一群組可實體或邏輯地配置成一多維陣列。例如,張量位址值元素122之各群組可實體或邏輯地配置成一個二維陣列。
張量遍歷單元106可接收指定包含用於遍歷一N維張量之巢狀迴圈之一迴圈巢狀的一指令。指令亦可指定用於遍歷一初構資料陣列之一迴圈及/或用於遍歷一終解資料陣列之一迴圈。例如,由處理單元102實行之一程式可基於張量之張量元素值執行機器學習運算。另外,程式可在使用一或多個初構進行運算之前執行函數及/或在使用一或多個終解進行運算之後執行函數。
張量遍歷單元106可將指令轉譯為張量之各維度及(若干)初構及/或(若干)終解之各資料陣列的初始值、步進值及結束值。各維度或陣列之初始值可基於(例如,等於)用於遍歷維度或陣列之一迴圈的一起始值。例如,若迴圈呈「for i = 0; i < 3」形式,則針對對應於迴圈i之一維度之初始值可為零。在一些實施方案中,初始值可基於自張量、初構或終解之一基底位址之一所要位址位移。張量遍歷單元106可判定初始值、步進值及/或結束值,使得各張量元素及各資料元素被指派一獨有記憶體位址(或與一基底位址組合之一獨有記憶體位址值以判定獨有記憶體位址)。例如,張量遍歷單元106可基於包含於張量之各維度及初構及/或終解之各資料陣列中之元素數目判定各維度及陣列之步進值及結束值。張量遍歷單元106可將判定值儲存於各自元素中且使用該等值判定記憶體位址,如下文描述。
張量遍歷單元106可判定一序列中之張量元素及初構及/或終解資料陣列之記憶體位址(例如,每次一個)。在一些實施方案中,處理單元102包含一有限狀態機(FSM),其指示張量遍歷單元106判定記憶體位址及/或何時暫停判定程序。FSM亦可為運算系統100之一獨立裝置。在作用中時,張量遍歷單元106可判定一序列中之張量元素及資料元素之記憶體位址直至已判定全部記憶體位址。當已針對各張量元素及各資料元素判定一記憶體位址時,張量遍歷單元106可停止。在一些實施方案中,張量遍歷單元106可回應於針對一特定張量元素或一特定資料元素接收之一各自指令逐個判定特定張量元素或特定資料元素之一記憶體位址。
在一些實施方案中,張量遍歷單元106判定一初構資料陣列及/或一終解資料陣列之各張量元素及/或各資料元素之一記憶體位址位移值。在此實例中,處理單元102可基於元素之記憶體位址位移值及一基底位址存取張量元素或資料元素。在另一實例中,張量遍歷單元106藉由判定各元素之一各自記憶體位址位移值且將記憶體位址位移值加至基底位址而判定各張量元素及各資料元素之記憶體位址。
硬體加法器單元124可包含一或多個算術邏輯單元(ALU)、一或多個硬體乘法器及/或一或多個硬體加法器。各加法器可包含經組態以執行加法運算之數位電路。如下文描述,數學單元可將部分位址位移值相加以判定一張量之一元素之一總位址位移值。由於硬體加法器需要少於算術邏輯單元(ALU)及硬體乘法器之電路組件,所以硬體加法器單元124之電路之大小(及因此張量遍歷單元106之大小)可小於包含ALU及/或乘法器之一張量遍歷單元。另外,製造具有硬體加法器之一張量遍歷單元之成本可小於製造具有ALU及/或乘法器之一張量遍歷單元之成本。在一些實施方案中,硬體加法器單元124僅包含加法器且不包含其他數學或邏輯電路。
圖2A展示一張量遍歷單元之一組例示性張量位址值元素200。張量位址值元素200可對應於張量遍歷單元106之張量位址值元素122。張量遍歷單元200包含初始值元素202之一群組、步進值元素204之一群組、結束值元素206之一群組及位址位移值元素208之一群組。
初始值元素202可實體或邏輯地配置成具有M個列及N個行之一2D陣列,其中M及N係大於或等於1之整數。初始值元素202可儲存用於判定一張量元素、一初構資料元素或一終解資料元素之一記憶體位址的位址位移之初始值。在一些實施方案中,初始值元素202之各列可表示一張量、初構或終解之初始值。例如,若一程式界定兩個陣列變量V1及V2,則張量遍歷單元可指派列202a及202b以分別儲存陣列變量V1及V2之初始值。在此實例中,變量V1可為一初構之偏差變量且變量V2可為張量變量。
在一些實施方案中,初始值元素202之各行可表示與一張量、一初構陣列或一終解陣列相關聯之巢狀迴圈索引變量值之初始值。例如,程式可界定用於存取變量V1之一初構迴圈。初構迴圈可藉由巢狀迴圈索引變量h編入索引。在此實例中,張量遍歷單元可指派初始值元素V1,1
以儲存巢狀迴圈索引變量h之初始值。
類似地,若程式定義具有用於存取變量V2之三個迴圈之一巢狀迴圈,其中巢狀迴圈之各迴圈藉由巢狀迴圈索引變量i、j及k編入索引,則張量遍歷單元可指派初始值元素V2,1
、V2,2
及V2,3
以分別儲存巢狀迴圈索引變量i、j及k之初始值。若程式定義用於存取一變量V3之一終解迴圈,其中迴圈藉由巢狀迴圈索引變量l編入索引,則張量遍歷單元可指派初始值元素V3,1
以儲存巢狀迴圈索引變量l之初始值。初始值元素陣列內之初構、張量及終解列之順序可變化。例如,在另一實施方案中,列202a可儲存一終解之初始值且列204a可儲存初構列之初始值。下文參考圖2B至圖2J更詳細描述初始值元素202。
步進值元素204可實體或邏輯地配置成具有與初始值元素202相同之維度之一2D陣列,其中步進值元素204之各元素具有初始值元素202中之一對應元素。步進值元素204可儲存用於判定一張量元素、一初構資料元素及/或一終解資料元素之一記憶體位址的位址位移之步進值。在一些實施方案中,步進值元素204之各列可表示一張量、一初構或一終解之步進值。例如,若一程式定義兩個陣列變量V1及V2,則張量遍歷單元可指派列204a及204b以分別儲存陣列變量V1及V2之步進值。在一些實施方案中,步進值元素204之各行可表示與一張量、初構或終解相關聯之巢狀迴圈索引變量值之步進值。例如,若程式定義用於存取變量V1之一初構迴圈,其中初構迴圈藉由迴圈索引變量h編入索引,則張量遍歷單元可指派步進值元素X1,1
以儲存巢狀迴圈索引變量h之步進值。類似地,若程式定義具有用於存取變量V2之三個迴圈之一巢狀迴圈,其中巢狀迴圈之各迴圈藉由巢狀迴圈索引變量i、j及k編入索引,則張量遍歷單元可指派步進值元素X2,1
、X2,2
及X2,3
以分別儲存巢狀迴圈索引變量i、j及k之步進值。若程式定義用於存取一變量V3之一終解迴圈,其中迴圈藉由巢狀迴圈索引變量l編入索引,則張量遍歷單元可指派步進值元素X3,1
以儲存巢狀迴圈索引變量l之初始值。下文參考圖2B至圖2J更詳細描述步進值元素204。
結束值元素206可實體或邏輯地配置成具有與初始值元素202相同之維度之一2D陣列,其中結束值元素206之各元素具有初始值元素202中之一對應元素。結束值元素206可儲存用於判定一張量元素、一初構資料元素及/或一終解資料元素之一記憶體位址的位址位移之結束值。在一些實施方案中,結束值元素206之各列可表示一張量、一初構或一終解之結束值。例如,若一程式定義兩個陣列變量V1及V2,則張量遍歷單元可指派列206a及206b以分別儲存陣列變量V1及V2之結束值。在一些實施方案中,結束值元素206之各行可表示與一張量、初構或終解相關聯之巢狀迴圈索引變量值之結束值。例如,若程式定義具有用於存取變量V1之一初構迴圈的一巢狀迴圈,其中初構迴圈藉由巢狀迴圈索引變量h編入索引,則張量遍歷單元可指派結束值元素Y1,1
以儲存迴圈索引變量h之結束值。
類似地,若程式定義具有用於存取變量V2之三個迴圈之一巢狀迴圈,其中巢狀迴圈之各迴圈藉由巢狀迴圈索引變量i、j及k編入索引,則張量遍歷單元可指派結束值元素Y1,1
、Y1,2
及Y1,3
以分別儲存巢狀迴圈索引變量i、j及k之結束值。若程式定義用於存取變量V3之一終解迴圈,其中終解迴圈藉由巢狀迴圈變量l編入索引,則張量遍歷單元可指派結束值元素Y3,1
以儲存迴圈索引變量l之結束值。下文參考圖2B至圖2J更詳細描述結束值元素206。
位址位移值元素208可實體或邏輯地配置成具有與初始值元素202相同之維度之一2D陣列,其中位址位移值元素208之各元素具有初始值元素202中之一對應元素。位址位移值元素206可儲存用於判定一張量元素、一初構資料元素及/或一終解資料元素之一記憶體位址的位址位移值。在一些實施方案中,位址位移值元素208之各列可表示一張量、一初構或一終解之部分位址位移值。例如,一張量或資料陣列可包含多個維度。在此實例中,位址位移值之一列可包含各維度之一部分位址位移元素。
例如,若一程式定義兩個陣列變量V1及V2,則張量遍歷單元可指派列208a及208b以分別儲存陣列變量V1及V2之位址位移值。在一些實施方案中,位址位移值元素208之各行可表示與一張量、初構或終解相關聯之巢狀迴圈索引變量值之部分位址位移值。例如,若程式定義具有用於存取變量V1之一初構迴圈的一巢狀迴圈,其中初構迴圈藉由巢狀迴圈索引變量h編入索引,則張量遍歷單元可指派位址位移值元素Z1,1
以儲存迴圈索引變量h之位址位移值。
類似地,若程式定義具有用於存取變量V2之三個迴圈之一巢狀迴圈,其中巢狀迴圈之各迴圈藉由巢狀迴圈索引變量i
、j
及k
編入索引,則張量遍歷單元可指派位址位移值元素Z2,1
、Z2,2
及Z2,3
以分別儲存巢狀迴圈索引變量i
、j
及k
之位址位移值。若程式定義用於存取變量V3之一終解迴圈,其中終解迴圈藉由巢狀迴圈變量l編入索引,則張量遍歷單元可指派位址值元素Z3,1
以儲存迴圈索引變量l之位址值。下文參考圖2B至圖2J更詳細描述位址位移值元素208。
圖2B至圖2J展示一張量遍歷單元可如何使用張量位址值元素200來處理一張量(包含判定張量之張量元素之記憶體位址值及初構資料元素之記憶體位址)之一實例。儘管實例包含一張量及一初構,然一類似程序可用於判定一或多個張量與一或多個終解之一組合及一或多個初構、一或多個張量及一或多個終解之一組合的記憶體位址。
參考圖2B,一程式212可儲存於儲存媒體104或可由處理單元102實行之另一儲存媒體中。程式212指定具有一單一維度3之一整數陣列變量V1
及具有一第一維度4、一第二維度2及一第三維度2之一字元陣列變量V2
。程式212指定用於遍歷變量V2
之一巢狀for迴圈,其中for迴圈在由一巢狀迴圈索引變量i
追蹤之一外迴圈中遍歷V2
之第一維度;在由一巢狀迴圈索引變量j
追蹤之一中間迴圈中遍歷V2
之第二維度;且在由一巢狀迴圈索引變量k
追蹤之一內迴圈中遍歷V
之第三維度。程式212亦指定用於使用迴圈索引變量h
遍歷變量V1之一初構for迴圈。
儘管本文中描述之圖2B至圖2J之所繪示實例包含三個維度,然可以一類似方式判定具有不數目個維度(例如,2、5、8或某其他數目個維度)之張量之記憶體位址值。例如,可遍歷具有八個維度之一張量且可使用深度為8之一迴圈巢狀判定張量元素之記憶體位址。
在一些實施方案中,可在開始一程式時初始化張量位址值元素200。例如,張量遍歷單元可基於程式212初始化張量位址值元素200。在一些實施方案中,在初始化之後,將張量位址值元素200之各元素設定為由張量遍歷單元判定之一值。在一些實施方案中,處理器可針對張量位址值元素之各群組實行一單獨指令,例如針對初始值元素202執行一個指令,針對步進值元素執行一個指令,以此類推。各單獨指令可將其群組之各元素設定為該元素之一各自值。如上文描述,張量遍歷單元可基於各迴圈中之元素數目判定各初構、張量及終解之初始值、結束值及步進值,使得各元素被指派一獨有記憶體位址。
在此實例中,將初構之初始值元素設定為一值12且將張量之各初始值元素設定為一值0。一張量之一維度或一初構或終解之初始值係在初始化之後針對一第一記憶體位址判定所設定之維度、初構或終解之位址位移值的一值。
步進值元素可儲存用於判定一張量元素、初構元素及/或終解元素之一記憶體位址的位址位移之步進值。一維度、初構或終解之步進值係在維度、初構或終解之各反覆之後加至維度、初構或終解之位址位移值的一值。在此實例中,內巢狀迴圈索引變量k
具有一步進值1,中間巢狀迴圈索引變量j
具有一步進值6,且外巢狀迴圈索引變量i
具有一步進值2。類似地,初構具有一步進值1。
在一些實施方案中,處理器、一使用者或編譯用於遍歷一張量之一程式的一編譯器基於張量之一或多個維度中之元素數目判定各維度之步進值及/或結束值。以此方式,針對各張量元素運算之記憶體位址不同於各其他張量元素之記憶體位址。在一些實施方案中,判定記憶體位址,使得在遍歷期間存取之元素序列在記憶體中係實體連續的。在此實例中,第一張量元素可儲存於具有一第一位址之一第一記憶體位置處,第二張量元素可儲存於緊鄰第一記憶體位置之一第二記憶體位置處,第三張量元素可儲存於緊鄰第二記憶體位置之一第三記憶體位置處,以此類推。在一些實施方案中,判定記憶體位址,使得在遍歷期間存取之元素序列在記憶體中並非實體連續的。在此實例中,第二張量元素可不緊鄰第一張量元素而儲存。
結束值元素可儲存維度、初構及/或終解之結束值。一維度、初構或終解之結束值表示在維度、初構或終解之位址位移值等於或超過結束值時位址位移值重設為維度、初構或終解之初始值的一值。
位址位移值元素208儲存維度之位址位移值。在此實例中,已基於初構之初始值將初構之位址位移值初始化為12。類似地,已將張量之各維度之位址位移值初始化為0。位址位移值用於判定一張量元素或一資料元素之一記憶體位址位移。在一些實施方案中,一特定變量之一特定張量元素或特定資料元素之記憶體位址係基於元素之一預指定基底位址與元素之維度之位址位移值的一總和,如方程式225中展示。針對變量V1,一特定初構元素之記憶體位址等於初構元素之基底位址與列208a (頂列)中之位址位移值的總和。在此實例中,初構具有一單一維度。因此,各初構元素之記憶體位址係基於初構之基底位址與儲存於位址位移元素Z1,1
中之位址位移值之值的一總和。
針對一維張量、初構或終解,在張量、初構或終解之各位址判定之後,張量遍歷單元將張量、初構或終解之步進值加至位址位移值。以此方式,位址位移值針對張量、初構或終解之下一位址判定而不同。當一維張量、初構或終解之張量、初構或終解之位址位移值等於或等於張量、初構或終解之結束值時,張量遍歷單元過渡至下一張量、初構或終解,此係因為在位址位移值等於或超過結束值時已判定一維張量、初構或終解之全部記憶體位址。圖2B至圖2J中繪示之例示性初構證實一維初構之位址判定。可使用相同或一類似技術來判定一維張量及一維終解之記憶體位址。
一多維張量、初構或終解可在指令中表示為具有多個巢狀迴圈之一迴圈巢狀。在一迴圈巢狀中,當已實行一內迴圈之全部反覆時,使其中巢狀處理內迴圈之下一外迴圈反覆。張量遍歷單元可藉由在一內維度之位址位移值之最後迭代之後迭代一外維度之位址位移值而以一類似方式判定一多維張量之記憶體位址。
在所繪示實例中,初始值元素202、步進值元素204、結束值元素206及位址位移值元素208之各行對應於一特定維度。最右行可表示對應於最內迴圈之維度,緊鄰最右行之左側之行可表示下一最外迴圈,以此類推,最左行可表示對應於最外迴圈之維度。在此實例中,可將一維張量、初構或終解之非零值填入各組元素202至208之最右行,因為不存在對應於其他行之額外維度。在其他實施方案中,各組元素可以不同方式配置,使得由列或最左行表示之維度可對應於最內迴圈。
針對一多維張量、初構或終解,當一特定維度之位址位移值等於或超過特定維度之結束值時,張量遍歷單元可將特定維度之位址位移值重設為其初始值且使其中巢狀處理特定維度之迴圈之維度之位址位移值增量。例如,若由最右元素表示之維度之位址位移值等於或超過其結束值,則可將位址位移值重設為其初始值且可使用其步進值增量由右側第二行表示之維度之位址位移值。圖2B至圖2J中繪示之例示性張量證實一多維張量之位址判定。可使用相同或一類似技術來判定多維初構及多維終解之記憶體位址。
可使用圖1之數學單元124判定張量元素及初構及/或終解之資料元素之記憶體位址。例如,一特定變量(例如,變量V1)之一加法器之輸入可為基底位址及變量之列(例如,變量V1之列208a)中之各位址位移值元素之值。輸出係變量之記憶體位址。各張量元素之記憶體位址及/或初構及/或終解之各資料元素之記憶體位址可經輸出以供處理單元102使用。例如,記憶體位址可輸出至一匯流排或儲存媒體104。
張量遍歷單元可逐列判定張量元素及資料元素之記憶體位址。例如,張量遍歷單元可首先使用列208a中之位址位移值判定初構之資料元素之記憶體位址。在張量遍歷單元已判定各初構資料元素之記憶體位址之後,張量遍歷單元可移動至第二列208b且判定張量之張量元素之記憶體位址。若程式包含具有第三列中之值的一終解,則張量遍歷單元在已判定張量元素之記憶體位址之後將移動至第三列且判定終解資料元素之記憶體位址。
圖2B繪示存取初構資料元素V1[0]。例如,張量遍歷單元可自一FSM接收一指令以開始基於指定初構及張量之迴圈的所接收指令判定記憶體位址。作為回應,張量遍歷單元可開始基於位址位移元素之第一列208a判定初構資料元素之記憶體位址。在判定初構資料元素之記憶體位址之一第一反覆中,位址位移元素Z1,1
基於如初始值元素V1,1
中展示之初構之初始值而具有一值12。在此實例中,第一初構資料元素V1[0]之記憶體位址等於初構之一基底位址加上12,如方程式225中展示。數學單元124可藉由判定基底位址與位址位移元素Z1,1
中之當前位址位移值的總和而判定記憶體位址。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取初構資料元素V1[0]。
圖2C繪示存取初構資料元素V1[1]。在張量遍歷單元判定初構資料元素V1[0]之記憶體位址之後,張量遍歷單元可藉由使用初構之步進值增量初構之位址位移值而更新初構之位址位移值。特定言之,張量遍歷單元可例如使用數學單元124將步進值元素X1,1
中之步進值加至位址位移值元素Z1,1
中之位址位移值。在此實例中,張量遍歷單元將步進值1加至先前位址位移值12以獲得一位址位移值13。
在一些實施方案中,張量遍歷單元比較儲存於元素Z1,1
中之經更新位移位址值與儲存於元素Y1,1
中之初構之結束值。若儲存於Z1,1
中之經更新位移位址值等於或超過儲存於元素Y1,1
中之初構之結束值,則張量遍歷單元可將儲存於元素Z1,1
中之位移位址值之值重設為儲存於元素V1,1
中之初構之初始值。由於例示性初構包含一個一維陣列,所以當儲存於元素Z1,1
中之位址位移值等於或超過儲存於元素Y1,1
中之結束值時,已判定初構之全部記憶體位址且張量遍歷單元可移動至下一列。
若儲存於元素Z1,1
中之經更新位移位址值小於儲存於元素Y1,1
中之初構之結束值,則張量遍歷單元可保持儲存於元素Z1,1
中之初構之經更新位址值。在此實例中,初構之經更新位址位移值(13)小於內迴圈之結束值(15)。因此,張量遍歷單元保持儲存於初構之位址位移元素Z1,1
中之經更新位址位移值。
數學單元124可藉由判定基底位址與位址位移元素Z1,1
中之當前位址位移值的總和而判定初構資料元素V1[1]之記憶體位址。在此實例中,記憶體位址係基底位址與13之總和。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取初構資料元素V1[1]。
圖2D繪示存取初構資料元素V1[2]。在張量遍歷單元判定初構資料元素V1[1]之記憶體位址之後,張量遍歷單元可藉由使用初構之步進值增量初構之位址位移值而更新初構之位址位移值。特定言之,張量遍歷單元可例如使用數學單元124將步進值元素X1,1
中之步進值加至位址位移值元素Z1,1
中之位址位移值。在此實例中,張量遍歷單元將步進值1加至先前位址位移值13以獲得一位址位移值14。
張量遍歷單元可再次比較儲存於元素Z1,1
中之經更新位移位址值與儲存於元素Y1,1
中之初構之結束值。此處,儲存於元素Z1,1
中之經更新位址位移值(14)仍不等於或超過儲存於元素Y1,1
中之結束值(15)。因此,張量遍歷單元保持儲存於初構之位址位移元素Z1,1
中之經更新位址位移值。
數學單元124可藉由判定基底位址與位址位移元素Z1,1
中之當前位址位移值的總和而判定初構資料元素V1[2]之記憶體位址。在此實例中,記憶體位址係基底位址與14之總和。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取初構資料元素V1[2]。
在判定初構資料元素V1[2]之記憶體位址之後,張量遍歷單元可藉由使用初構之步進值增量初構之位址位移值而更新初構之位址位移值。特定言之,張量遍歷單元可例如使用數學單元124將步進值元素X1,1
中之步進值加至位址位移值元素Z1,1
中之位址位移值。在此實例中,張量遍歷單元將步進值1加至先前位址位移值14以獲得一位址位移值15。
張量遍歷單元可再次比較儲存於元素Z1,1
中之經更新位移位址值與儲存於元素Y1,1
中之初構之結束值。此處,儲存於元素Z1,1
中之經更新位址位移值(15)等於儲存於元素Y1,1
中之結束值(15)。由於儲存於Z1,1
中之經更新位移位址值等於儲存於元素Y1,1
中之初構之結束值,所以張量遍歷單元將儲存於元素Z1,1
中之位移位址值之值重設為儲存於元素V1,1
中之初構之初始值。由於例示性初構包含一個一維陣列且已判定各初構之記憶體位址,所以張量遍歷單元可移動至下一列。
第二列包含張量之值。特定言之,位址位移值元素Z2,1
、Z2,2
及Z3,3
儲存張量元素之位址位移值。一特定張量元素之記憶體位址係儲存於位址位移值Z2,1
、Z2,2
及Z3,3
中之當前值與基底位址的總和。張量元素之基底位址可相同於初構元素之基底位址。在其他實例中,張量元素之基底位址可不同於初構資料元素之基底位址。
圖2E繪示存取張量元素V2[0][0][0]。在判定張量元素之記憶體位址之一第一反覆中,各位址位移元素Z2,1
、Z2,2
及Z2,3
基於如初始值元素V2,1
、V2,2
、V2,3
中展示之張量之初始值而具有一值0。在此實例中,第一張量元素V2[0][0][0]之記憶體位址等於張量之一基底位址加上0,如方程式226中展示。數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
及Z2,3
中之當前位址位移值的總和而判定記憶體位址。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[0][0][0]。
圖2F繪示存取元素V2[0][0][1]。在張量遍歷單元判定張量元素V2[0][0][0]之記憶體位址之後,張量遍歷單元可藉由增量由程式212之內迴圈表示之維度之位址位移值而更新張量之位址位移值。在此實例中,由內迴圈表示之維度係最右位址元素Z2,1
。因此,張量遍歷單元可藉由使位址值元素Z2,1
增量儲存於步進值元素X2,1
中之其對應步進值而更新張量之位址位移值。在此實例中,將步進值(1)加至位址位移值(0)以獲得位址位移值1。
在一些實施方案中,張量遍歷單元比較儲存於元素Z2,1
中之經更新位移位址值與儲存於元素Y2,1
中之結束值。若儲存於Z2,1
中之經更新位移位址值等於或超過儲存於元素Y2,1
中之結束值,則張量遍歷單元可將儲存於元素Z2,1
中之位移位址值之值重設為儲存於元素V2,1
中之初始值。另外,張量遍歷單元可使儲存於元素Z2,2
中之對應於中間迴圈之維度之位址位移值增量對應於儲存於X2,2
中之中間迴圈之維度之步進值,如下文更詳細描述。
若儲存於元素Z2,1
中之經更新位移位址值小於儲存於元素Y2,1
中之結束值,則張量遍歷單元可保持儲存於元素Z2,1
中之經更新位址值。在此實例中,經更新位址位移值(1)小於結束值(2)。因此,張量遍歷單元保持對應於中間迴圈之維度之儲存於位址位移元素Z2,1
中之經更新位址位移值而不增量對應於中間迴圈之維度之位址位移值。
數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
、Z2,3
中之當前位址位移值的總和而判定張量元素V2[0][0][1]之記憶體位址。在此實例中,記憶體位址係基底位址與1之總和,如方程式226中展示。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[0][0][1]。
圖2G繪示存取元素V2[0][1][0]。在張量遍歷單元判定張量元素V2[0][0][1]之記憶體位址之後,張量遍歷單元可藉由增量由程式212之內迴圈表示之維度之位址位移值而更新張量之位址位移值。在此實例中,張量遍歷單元可藉由使位址值元素Z2,1
增量儲存於步進值元素X2,1
中之其對應步進值而更新張量之位址位移值。在此實例中,將步進值(1)加至位址位移值(1)以獲得一位址位移值2。
張量遍歷單元可比較儲存於元素Z2,1
中之經更新位移位址值與儲存於元素Y2,1
中之對應於內迴圈之維度之結束值。若儲存於Z2,1
中之經更新位移位址值等於或超過儲存於元素Y2,1
中之結束值,則張量遍歷單元可將儲存於元素Z2,1
中之位移位址值之值重設為儲存於元素V2,1
中之內迴圈之初始值。另外,張量遍歷單元可使儲存於元素Z2,2
中之對應於中間迴圈之維度之位址位移值增量儲存於X2,2
中之對應於中間迴圈之維度之步進值。
若儲存於元素Z2,1
中之經更新位移位址值小於儲存於元素Y2,1
中之結束值,則張量遍歷單元可保持儲存於元素Z2,1
中之對應於內迴圈之維度之經更新位址值。在此實例中,內迴圈之經更新位址位移值(2)等於內迴圈之結束值(2)。因此,張量遍歷單元將儲存於元素Z2,1
中之位移位址值重設為儲存於元素V2,1
中之初始值。另外,張量遍歷單元使儲存於元素Z2,2
中之對應於中間迴圈之維度之位址位移值增量儲存於X2,2
中之對應於中間迴圈之維度之步進值。在此實例中,對應於中間迴圈之維度之經更新位址位移值係6 (0+6)。
在一些實施方案中,張量遍歷單元回應於判定中間迴圈之位移位址值之更新而比較儲存於元素Z2,2
中之對應於中間迴圈之維度之經更新位移位址值與儲存於元素Y2,2
中之對應於中間迴圈之維度之結束值。若儲存於Z2,2
中之經更新位移位址值等於或超過儲存於元素Y2,2
中之結束值,則張量遍歷單元可將儲存於元素Z2,2
中之位移位址值之值重設為儲存於元素V2,2
中之對應於中間迴圈之維度之初始值。另外,張量遍歷單元可使儲存於元素Z2,3
中之對應於外迴圈之維度之位址位移值增量儲存於X2,3
中之外迴圈之步進值,如下文描述。
若儲存於元素Z2,1
中之中間迴圈之經更新位移位址值小於儲存於元素Y2,2
中之對應於中間迴圈之維度之結束值,則張量遍歷單元可保持儲存於元素Z2,2
中之對應於中間迴圈之維度之經更新位址值。在此實例中,對應於中間迴圈之維度之經更新位址位移值(6)小於內迴圈之結束值(12)。因此,張量遍歷單元保持對應於中間迴圈之維度之儲存於位址位移元素Z2,2
中之經更新位址位移值而不增量對應於外迴圈之維度之位址位移值。
數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
、Z2,3
中之當前位址位移值的總和而判定張量元素V2[0][1][0]之記憶體位址。在此實例中,記憶體位址係基底位址與6之總和,如方程式226中展示。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[0][1][0]。
圖2H繪示存取元素V2[0][1][1]。在張量遍歷單元判定張量元素V2[0][1][0]之記憶體位址之後,張量遍歷單元可藉由增量由程式212之內迴圈表示之維度之位址位移值而更新張量之位址位移值。在此實例中,張量遍歷單元可藉由使位址值元素Z2,1
增量儲存於步進值元素X2,1
中之其對應步進值而更新張量之位址位移值。在此實例中,將步進值(1)加至位址位移值(0)以獲得一位址位移值1。
張量遍歷單元可比較儲存於元素Z2,1
中之經更新位移位址值與儲存於元素Y2,1
中之對應於內迴圈之維度之結束值。此處,儲存於元素Z2,1
中之經更新位移位址值小於儲存於元素Y2,1
中之結束值。因此,張量遍歷單元保持儲存於元素Z2,1
中之對應於內迴圈之維度之經更新位址值。
數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
、Z2,3
中之當前位址位移值的總和而判定張量元素V2[0][1][1]之記憶體位址。在此實例中,記憶體位址係基底位址與7之總和。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[0][1][1]。
圖2I繪示存取元素V2[1][0][0]。在張量遍歷單元判定張量元素V2[0][1][1]之記憶體位址之後,張量遍歷單元可藉由增量由程式212之內迴圈表示之維度之位址位移值而更新張量之位址位移值。在此實例中,張量遍歷單元可藉由使位址值元素Z2,1
增量儲存於步進值元素X2,1
中之其對應步進值而更新張量之位址位移值。在此實例中,將步進值(1)加至位址位移值(1)以獲得一位址位移值2。
張量遍歷單元可比較儲存於元素Z2,1
中之經更新位移位址值與儲存於元素Y2,1
中之對應於內迴圈之維度之結束值。此處,儲存於Z2,1
中之經更新位移位址值等於儲存於元素Y2,1
中之內迴圈之結束值。因此,張量遍歷單元可將儲存於元素Z2,1
中之位移位址值之值重設為儲存於元素V2,1
中之內迴圈之初始值。另外,張量遍歷單元可使儲存於元素Z2,2
中之對應於中間迴圈之維度之位址位移值增量儲存於X2,2
中之對應於中間迴圈之維度之步進值。在此實例中,對應於中間迴圈之維度之經更新位址位移值係12 (6+6)。
張量遍歷單元可回應於判定對應於中間迴圈之維度之位移位址值之更新而比較儲存於元素Z2,2
中之對應於中間迴圈之維度之經更新位移位址值與儲存於元素Y2,2
中之對應於中間迴圈之維度之結束值。若儲存於Z2,2
中之對應於中間迴圈之維度之經更新位移位址值等於儲存於元素Y2,2
中之結束值,則張量遍歷單元可將儲存於元素Z2,2
中之位移位址值之值重設為儲存於元素V2,2
中之對應於中間迴圈之初始值。另外,張量遍歷單元可使儲存於元素Z2,3
中之對應於外迴圈之維度之位址位移值增量儲存於X2,3
中之外迴圈之步進值。
若儲存於元素Z2,2
中之對應於中間迴圈之維度之經更新位移位址值小於儲存於元素Y2,2
中之對應於中間迴圈之維度之結束值,則張量遍歷單元可保持儲存於元素Z2,2
中之中間迴圈之經更新位址值。在此實例中,中間迴圈之經更新位址位移值(12)等於中間迴圈之結束值(12)。因此,張量遍歷單元將儲存於元素Z2,2
中之位移位址值重設為儲存於元素V2,2
中之初始值。另外,張量遍歷單元使儲存於元素Z2,3
中之對應於外迴圈之維度之位址位移值增量儲存於X1,3
中之對應於外迴圈之維度之步進值。在此實例中,對應於外迴圈之維度之經更新位址位移值係2 (0+2)。
數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
、Z2,3
中之當前位址位移值的總和而判定張量元素V2[0][1][1]之記憶體位址。在此實例中,記憶體位址係基底位址與2之總和。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[1][0][0]。
圖2J繪示存取元素V2[1][0][1]。在張量遍歷單元判定張量元素V2[1][0][0]之記憶體位址之後,張量遍歷單元可藉由增量由程式212之內迴圈表示之維度之位址位移值而更新張量之位址位移值。在此實例中,張量遍歷單元可藉由使位址值元素Z2,1
增量儲存於步進值元素X2,1
中之其對應步進值而更新張量之位址位移值。在此實例中,將步進值(1)加至位址位移值(0)以獲得一位址位移值1。
張量遍歷單元可比較儲存於元素Z2,1
中之經更新位移位址值與儲存於元素Y2,1
中之對應於內迴圈之維度之結束值。此處,儲存於元素Z2,1
中之經更新位移位址值小於儲存於元素Y2,1
中之結束值。因此,張量遍歷單元保持儲存於元素Z2,1
中之對應於內迴圈之維度之經更新位址值。
數學單元124可藉由判定基底位址與儲存於位址位移元素Z2,1
、Z2,2
、Z2,3
中之當前位址位移值的總和而判定張量元素V2[1][0][1]之記憶體位址。在此實例中,記憶體位址係基底位址與3之總和,如方程式226中展示。張量遍歷單元可接著將所判定記憶體位址輸出至例如處理單元102、儲存媒體104或一資料匯流排。處理單元102可接著使用所判定記憶體位址存取張量元素V2[1][0][1]。
圖2B至圖2J之實例繪示一實施方案,其中程式包含藉由迴圈索引變量i編入索引之迴圈之一初構。一類似技術可用於內迴圈,諸如藉由迴圈索引變量j編入索引之迴圈。
圖3係繪示用於判定張量元素及初構資料元素及/或終解資料元素之記憶體位址的一例示性程序300之一流程圖。可由一或多個電腦之一系統(例如,圖1之運算系統100)執行程序300。系統包含一張量遍歷單元,其具有包含初始值元素、步進值元素、結束值元素及位址位移元素之張量位址值元素。張量遍歷單元亦包含一數學單元。
系統接收包含指定一主迴圈巢狀之一指令之程式(302)。指令可包含含有用於遍歷一N
維張量之巢狀迴圈之一迴圈巢狀。N
維張量可包含跨N
個維度之各者配置之多個元素,其中N
係等於或大於1之一整數。
系統識別程式中之一初構及/或一終解迴圈(304)。例如,系統可識別程式中用於遍歷N維張量之主迴圈巢狀。系統可接著判定程式是否包含在主迴圈巢狀之前執行的一初構迴圈或在主迴圈巢狀之後執行的一終解迴圈。各初構迴圈及/或終解迴圈可包含用於儲存初構迴圈或終解迴圈之值的一對應資料陣列。
系統可基於指令填入位址運算元素(306)。例如,系統可判定張量之各維度之一初始值、一步進值、一結束值及一位址位移值。另外,系統可判定各初構及各終解之一初始值、一步進值、一結束值及一位址位移值。系統可判定初始值、步進值及/或結束值,使得各張量元素及各資料元素被指派一獨有記憶體位址(或與一基底位址組合之一獨有記憶體位址值以判定獨有記憶體位址)。例如,張量遍歷單元可基於包含於張量之各維度及初構及/或終解之各資料陣列中之元素數目判定各維度及陣列之步進值及結束值。
系統可將各初始值儲存於一對應初始值元素中;將各步進值儲存於一對應步進值元素中;將各結束值儲存於一對應結束值元素中;及將各位址位移值儲存於一對應位址位移值元素中。可基於張量維度、初構資料陣列及終解資料陣列配置初始值元素、步進值元素、結束值元素及位址位移值元素。例如,一張量之元素可配置成一列,其中各行對應於張量之一維度。類似地,一初構或終解之元素可配置成一列,其中各行對應於初構或終解之一維度。
系統判定張量元素及初構及/或終解之資料元素之記憶體位址值(308)。例如,系統可基於對應於各張量元素或資料元素之迴圈索引依序判定記憶體位址。系統可使用初始值、步進值及結束值遍歷各張量元素及各資料元素以判定張量元素及資料元素之記憶體位址,如上文參考圖2A至圖2J描述。系統可基於判定記憶體位址時之對應位址位移值之當前值及一基底位址判定一特定張量或資料元素之記憶體位址。
系統輸出指定所判定記憶體位址之資料(310)。例如,系統可將資料輸出至一處理單元,該處理單元基於所判定記憶體位址存取張量元素及資料元素。在另一實例中,系統可將所判定記憶體位址輸出至一儲存媒體或一資料匯流排,使得處理單元可存取記憶體位址。
系統使用所判定記憶體位址存取張量元素及資料元素(312)。例如,一處理單元可存取張量及資料元素以執行機器學習運算。
本說明書中描述之標的物及功能操作之實施例可在以下各者中實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中描述之標的物之實施例可實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備實行或控制資料處理設備之操作的電腦程式指令之一或多個模組。替代地或另外,程式指令可編碼在一人工產生的傳播信號(例如,一機器產生電、光學或電磁信號)上,該信號經產生以編碼資訊以傳輸至適當接收器設備以供一資料處理設備實行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦實行一或多個電腦程式以藉由對輸入資料進行操作及產生輸出而執行功能。亦可藉由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路))或一GPGPU (通用圖形處理單元)執行程序及邏輯流程,且亦可將設備實施為專用邏輯電路。
藉由實例,適於實行一電腦程式之電腦包含、可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般言之,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行或實行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般言之,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作地耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或兩者。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如(僅舉幾例)一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放機、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟)。
適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,包含例如半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可抽換式磁碟;磁光碟;及CD ROM及DVD-ROM磁碟。處理器及記憶體可藉由專用邏輯電路補充或併入專用邏輯電路中。
雖然本說明書含有許多具體實施方案細節,但此等不應被解釋為限制任何發明或可主張之內容之範疇,而是應解釋為可為特定發明之特定實施例所特有之特徵之描述。本說明書中在單獨實施例之內容背景中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可以單獨地或以任何合適子組合在多個實施例中實施。再者,儘管上文可將特徵描述為以特定組合起作用且即使最初如此主張,但在一些情況中,來自所主張組合之一或多個特徵可自組合中切除,且所主張組合可關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作,或執行所有繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。而且,在上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成期望結果。作為一個實例,在附圖中描繪之程序不一定需要所展示之特定順序或連續順序以達成期望結果。在特定實施方案中,多任務處理及並行處理可為有利的。
100‧‧‧運算系統
102‧‧‧處理單元
104‧‧‧儲存媒體/輸入
106‧‧‧張量遍歷單元
112‧‧‧指令
114‧‧‧資料
116‧‧‧輸出
122‧‧‧張量位址值元素
124‧‧‧硬體加法器單元/數學單元
200‧‧‧張量位址值元素
202‧‧‧初始值元素
202a‧‧‧列
202b‧‧‧列
204‧‧‧步進值元素
204a‧‧‧列
204b‧‧‧列
206‧‧‧結束值元素
206a‧‧‧列
206b‧‧‧列
208‧‧‧位址位移值元素
208a‧‧‧列
208b‧‧‧列
212‧‧‧程式
225‧‧‧方程式
226‧‧‧方程式
300‧‧‧程序
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
308‧‧‧步驟
310‧‧‧步驟
312‧‧‧步驟
圖1係一例示性運算系統之一方塊圖。
圖2A至圖2J繪示一例示性張量遍歷單元。
圖3係繪示用於判定張量元素及初構資料元素及/或終解資料元素之記憶體位址的一例示性程序之一流程圖。
在各個圖式中,相似元件符號及名稱指示相似元件。
100‧‧‧運算系統
102‧‧‧處理單元
104‧‧‧儲存媒體/輸入
106‧‧‧張量遍歷單元
112‧‧‧指令
114‧‧‧資料
116‧‧‧輸出
122‧‧‧張量位址值元素
124‧‧‧硬體加法器單元/數學單元
Claims (20)
- 一種用於增加一處理單元執行運算之一速度的設備,該設備包括: 一第一位址位移值元素(address offset value element),其經組態以儲存一第一位址位移值,該第一位址位移值對應於使用一N 維張量之張量元素執行運算之一程式之一初構(prologue)或終解(epilogue)迴圈; 針對該N 維張量之各維度,一第二位址位移值元素經組態以儲存該維度之一第二位址位移值; 針對各位址值元素,複數個位址運算元素經組態以儲存用於判定儲存於該位址位移值元素中之該位址位移值之一值,該等位址位移值包含用於該初構或終解迴圈之一第一步進值(step value)及用於該N 維張量之各維度之一第二步進值,其中該第一步進值及該第二步進值係至少基於包含於該N 維張量之各維度中之張量元素之一數量及包含於用於該初構或終解迴圈之一資料陣列中之資料元素之一數量,使得該初構或終解迴圈之各資料元素及該N 維張量之各張量元素被指派一獨有記憶體位址; 一或多個處理器,其等經組態以: 針對該資料陣列之各資料元素,在判定該資料元素之一記憶體位址時使用該資料陣列之該第一位址位移值之一當前值來判定該資料元素之該記憶體位址,其中在該資料陣列之一資料元素之一記憶體位址之各判定之後,使用該初構或終解迴圈之該第一步進值調整該資料陣列之該第一位址位移值; 針對該N 維張量之各張量元素,在判定該張量元素之一記憶體位址時使用各第二位址位移值之一當前值來判定該張量元素之該記憶體位址,其中在該N 維張量之一張量元素之一記憶體位址之各判定之後,使用該維度的該第二步進值調整該N 維張量之該等維度之一或多者之該第二位址位移值;及 將指示各張量元素及各資料元素之該所判定記憶體位址的資料輸出至執行該等運算之該處理單元。
- 如請求項1之設備,其中該一或多個處理器經組態以: 接收使用一N 維張量之張量元素執行運算之該程式;及 於該程式中識別具有用於儲存該初構或終解迴圈之值之該資料陣列之該初構或終解迴圈。
- 如請求項1之設備,其進一步包括該處理單元,其中該處理單元經組態以: 基於各所判定位址存取各張量元素及各資料元素;及 使用各資料元素之資料及各張量元素之資料執行該等運算。
- 如請求項1之設備,其中該等資料陣列包括含有資料元素之一初構資料陣列,各資料元素儲存用於一機器學習運算之一偏差值(bias value)。
- 如請求項1之設備,其中該一或多個處理器判定一第一序列中之各張量元素之該記憶體位址,且該一或多個處理器判定在該第一序列之前或之後的一第二序列中之各資料元素之該記憶體位址。
- 如請求項1之設備,其中判定一特定張量元素之記憶體位址包括使用該一或多個處理器之一或多個硬體加法器判定各維度之該第二位址位移值之一總和。
- 如請求項1之設備,其中判定一特定資料元素之記憶體位址包括:使用該一或多個處理器之一或多個硬體加法器判定該特定資料元素之該第一位址位移值與該資料元素之一基底位址的一總和。
- 如請求項1之設備,其中: 該等位址運算元素包括: 一第一初始值元素,其經組態以儲存該初構或終解迴圈之一第一初始值; 一第一步進值元素,其經組態以儲存該初構或終解迴圈之第一步進值; 針對該N 維張量之各維度: 一第二初始值元素,其經組態以儲存該維度之一第二初始值; 一第二步進值元素,其經組態以儲存該維度之該第二步進值。
- 如請求項8之設備,其中該一或多個處理器基於指定該資料陣列之一迴圈及該N 維張量之一迴圈巢狀(loop net)的一單一指令初始化各第一初始值、各第一步進值、各第二初始值及各第二步進值。
- 如請求項8之設備,其中該一或多個處理器經進一步組態以: 針對各維度,藉由將該維度之該第二步進值加至該維度之一先前位址位移值而判定在遍歷(traversing)該維度之一迴圈之各反覆之後的該維度之該位址位移值。
- 一種用於增加一處理單元執行運算之一速度之方法,該方法包括: 藉由一或多個處理器,填入(populating)具有一第一位址位移值之一第一位址位移值元素,該第一位址位移值對應於使用一N 維張量之張量元素執行運算之一程式之一初構或終解迴圈; 針對該N 維張量之各維度填入具有該維度之一第二位址位移值之一第二位址位移值元素; 針對各位址值元素填入複數個位址運算元素,其具有用於判定儲存於該位址位移值元素中之該位址位移值之一值,該等位址位移值包含用於該初構或終解迴圈之一第一步進值及用於該N 維張量之各維度之一第二步進值,其中該第一步進值及該第二步進值係至少基於包含於該N 維張量之各維度中之張量元素之一數量及包含於用於該初構或終解迴圈之一資料陣列中之資料元素之一數量,使得該初構或終解迴圈之各資料元素及該N 維張量之各張量元素被指派一獨有記憶體位址; 藉由一或多個處理器且針對該資料陣列之各資料元素,在判定該資料元素之一記憶體位址時使用該資料陣列之該第一位址位移值之一當前值來判定該資料元素之該記憶體位址,其中在該資料陣列之一資料元素之一記憶體位址之各判定之後使用該初構或終解迴圈之該第一步進值調整該資料陣列之該第一位址位移值; 藉由該一或多個處理器且針對該N 維張量之各張量元素,在判定該張量元素之一記憶體位址時使用各第二位址位移值之一當前值來判定該張量元素之該記憶體位址,其中在該N 維張量之一張量元素之一記憶體位址之各判定之後使用該N 維張量之該第二步進值調整該N維張量的該等維度之一或多者之該第二位址位移值;及 藉由該一或多個處理器,將指示各張量元素及各資料元素之該所判定記憶體位址的資料輸出至執行該等運算之該處理單元。
- 如請求項11之方法,其進一步包括: 接收使用一N 維張量之張量元素執行運算之該程式;及 於該程式中識別具有用於儲存該初構或終解迴圈之值之該資料陣列之該初構或終解迴圈。
- 如請求項11之方法,其進一步包括: 基於各所判定記憶體位址存取各張量元素及各資料元素;及 使用各張量元素之資料執行機器學習運算。
- 如請求項11之方法,其中該資料陣列包含含有初構資料元素之一初構資料陣列,各初構資料元素儲存用於一運算之一偏差值。
- 如請求項11之方法,其中判定一特定張量元素之位址包括:使用一或多個硬體加法器判定各維度之該位址位移值之一總和。
- 如請求項11之方法,其中判定一特定資料元素之記憶體位址包括:判定該特定資料元素之位址位移值與該資料元素之一基底位址的一總和。
- 如請求項11之方法,其中: 該位址運算元素包括: 一第一初始值元素,其經組態以儲存該初構或終解迴圈之一第一初始值; 一第一步進值元素,其經組態以儲存該初構或終解迴圈之第一步進值; 針對該N 維張量之各維度: 一第二初始值元素,其經組態以儲存該維度之一第二初始值; 一第二步進值元素,其經組態以儲存該維度之該第二步進值。
- 如請求項17之方法,其中各位址位移值元素、各初始值元素及各步進值元素包括一暫存器。
- 如請求項17之方法,其進一步包括基於指定各資料陣列之一迴圈及該N 維張量之一巢狀迴圈的一單一指令初始化各第一初始值、各第一步進值、各第二初始值及各第二步進值。
- 一種用於增加一處理單元執行運算之一速度之系統,其包括: 一第一位址位移值元素,其經組態以儲存一第一位址位移值,該第一位址位移值對應於使用一N 維張量之張量元素執行運算之一程式之一初構或終解迴圈; 針對該N 維張量之各維度之一第二位址位移值元素,其經組態以儲存該維度之一第二位址位移值; 針對各位址值元素之複數個位址運算元素,其經組態以儲存用於判定儲存於該位址位移值元素中之該位址位移值之一值,該等位址位移值包含用於該初構或終解迴圈之一第一步進值及用於該N 維張量之各維度之一第二步進值,其中該第一步進值及該第二步進值係至少基於包含於該N 維張量之各維度中之張量元素之一數量及包含於用於該初構或終解迴圈之一資料陣列中之資料元素之一數量,使得該初構或終解迴圈之各資料元素及該N 維張量之各張量元素被指派一獨有記憶體位址; 硬體電路,其包含一或多個硬體加法器且經組態以: 針對該資料陣列之各資料元素,使用在判定該資料元素之一記憶體位址時該資料陣列之該第一位址位移值之一當前值來判定該資料元素之該記憶體位址,其中在該資料陣列之一資料元素之一記憶體位址之各判定之後使用該初構或終解迴圈之該第一步進值調整該資料陣列之該第一位址位移值; 針對該N 維張量之各張量元素,在判定該張量元素之一記憶體位址時使用各第二位址位移值之一當前值來判定該張量元素之該記憶體位址,其中在該N 維張量之一張量元素之一記憶體位址之各判定之後使用該N 維張量之該第二步進值調整該N維張量的該等維度之一或多者之該第二位址位移值;及 將指示各張量元素及各資料元素之該所判定記憶體位址的資料輸出至執行該等運算之該處理單元。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/664,842 US10108538B1 (en) | 2017-07-31 | 2017-07-31 | Accessing prologue and epilogue data |
US15/664,842 | 2017-07-31 | ||
??PCT/US2018/041361 | 2018-07-10 | ||
PCT/US2018/041361 WO2019027628A1 (en) | 2017-07-31 | 2018-07-10 | ACCESS TO PROLOGUE AND EPILOGUE DATA |
WOPCT/US2018/041361 | 2018-07-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201941051A TW201941051A (zh) | 2019-10-16 |
TWI720566B true TWI720566B (zh) | 2021-03-01 |
Family
ID=63036438
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107126266A TWI670651B (zh) | 2017-07-31 | 2018-07-30 | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 |
TW108127135A TWI720566B (zh) | 2017-07-31 | 2018-07-30 | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107126266A TWI670651B (zh) | 2017-07-31 | 2018-07-30 | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10108538B1 (zh) |
EP (1) | EP3602280B1 (zh) |
CN (1) | CN109324827B (zh) |
TW (2) | TWI670651B (zh) |
WO (1) | WO2019027628A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936942B2 (en) * | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
GB2580664B (en) * | 2019-01-22 | 2021-01-13 | Graphcore Ltd | Double load instruction |
CN110046116B (zh) * | 2019-04-23 | 2020-08-21 | 上海燧原智能科技有限公司 | 一种张量填充方法、装置、设备及存储介质 |
US11176493B2 (en) * | 2019-04-29 | 2021-11-16 | Google Llc | Virtualizing external memory as local to a machine learning accelerator |
US11496775B2 (en) * | 2020-02-20 | 2022-11-08 | Tencent America LLC | Neural network model compression with selective structured weight unification |
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
EP3937009A1 (en) * | 2020-07-09 | 2022-01-12 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | A computing unit, method to perform computations, method to generate program code for a hardware comprising a multi-stage-buffer and program code |
US11954580B2 (en) | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
US11704562B1 (en) | 2020-11-04 | 2023-07-18 | Meta Platforms, Inc. | Architecture for virtual instructions |
US11709783B1 (en) | 2020-11-11 | 2023-07-25 | Meta Platforms, Inc. | Tensor data distribution using grid direct-memory access (DMA) controller |
US11972349B1 (en) | 2020-11-12 | 2024-04-30 | Meta Platforms, Inc. | Flexible compute array utilization in a tensor processor |
US11922306B2 (en) | 2020-12-28 | 2024-03-05 | Meta Platforms, Inc. | Tensor controller architecture |
US12001893B1 (en) | 2020-12-28 | 2024-06-04 | Meta Platforms, Inc. | Distributed synchronization scheme |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153100A1 (en) * | 2008-12-11 | 2010-06-17 | Electronics And Telecommunications Research Institute | Address generator for searching algebraic codebook |
US20110029962A1 (en) * | 2009-07-28 | 2011-02-03 | International Business Machines Corporation | Vectorization of program code |
TW201508652A (zh) * | 2013-05-24 | 2015-03-01 | Qualcomm Inc | 具有連續組態能力之學習裝置 |
TW201541374A (zh) * | 2014-02-21 | 2015-11-01 | Qualcomm Inc | 用於隨機尖峰貝氏網路的基於事件的推斷和學習 |
US20160321542A1 (en) * | 2015-04-28 | 2016-11-03 | Qualcomm Incorporated | Incorporating top-down information in deep neural networks via the bias term |
US20170200094A1 (en) * | 2016-01-07 | 2017-07-13 | 1026 Labs, Inc. | Hardware accelerated machine learning |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US5958048A (en) | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
US6429876B1 (en) * | 1998-08-28 | 2002-08-06 | Ati International Srl | Method and apparatus for video graphics antialiasing with memory overflow optimization |
US6952821B2 (en) * | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
TWI446171B (zh) * | 2006-09-28 | 2014-07-21 | Virident Systems Inc | 用於異質性主記憶體具有可程式化記憶體控制的系統,方法及裝置 |
US8713285B2 (en) * | 2008-12-09 | 2014-04-29 | Shlomo Selim Rakib | Address generation unit for accessing a multi-dimensional data structure in a desired pattern |
US8285658B1 (en) * | 2009-08-25 | 2012-10-09 | Scout Analytics, Inc. | Account sharing detection |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
US9519617B2 (en) * | 2011-07-14 | 2016-12-13 | Texas Instruments Incorporated | Processor with instruction variable data distribution |
CN102279818B (zh) * | 2011-07-28 | 2013-09-25 | 中国人民解放军国防科学技术大学 | 支持有限共享的向量数据访存控制方法及向量存储器 |
KR101854671B1 (ko) * | 2011-11-15 | 2018-05-08 | 삼성전자주식회사 | 소프트웨어 파이프라인이 적용된 루프의 프롤로그와 에필로그에서 루프 외부의 명령어를 실행시키는 장치 및 방법 |
CN107908427B (zh) * | 2011-12-23 | 2021-11-09 | 英特尔公司 | 用于多维数组中的元素偏移量计算的指令 |
JP5586718B2 (ja) * | 2012-06-19 | 2014-09-10 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
US9760356B2 (en) | 2014-09-23 | 2017-09-12 | Intel Corporation | Loop nest parallelization without loop linearization |
US9875104B2 (en) | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US20170270427A1 (en) * | 2016-03-17 | 2017-09-21 | Microsoft Technology Licensing, Llc | Multi-view machine learning |
US9946539B1 (en) * | 2017-05-23 | 2018-04-17 | Google Llc | Accessing data in multi-dimensional tensors using adders |
US10534607B2 (en) | 2017-05-23 | 2020-01-14 | Google Llc | Accessing data in multi-dimensional tensors using adders |
-
2017
- 2017-07-31 US US15/664,842 patent/US10108538B1/en active Active
-
2018
- 2018-07-10 WO PCT/US2018/041361 patent/WO2019027628A1/en unknown
- 2018-07-10 EP EP18746463.1A patent/EP3602280B1/en active Active
- 2018-07-27 CN CN201810841905.XA patent/CN109324827B/zh active Active
- 2018-07-30 TW TW107126266A patent/TWI670651B/zh active
- 2018-07-30 TW TW108127135A patent/TWI720566B/zh active
- 2018-08-24 US US16/112,307 patent/US10802956B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153100A1 (en) * | 2008-12-11 | 2010-06-17 | Electronics And Telecommunications Research Institute | Address generator for searching algebraic codebook |
US20110029962A1 (en) * | 2009-07-28 | 2011-02-03 | International Business Machines Corporation | Vectorization of program code |
TW201508652A (zh) * | 2013-05-24 | 2015-03-01 | Qualcomm Inc | 具有連續組態能力之學習裝置 |
TW201541374A (zh) * | 2014-02-21 | 2015-11-01 | Qualcomm Inc | 用於隨機尖峰貝氏網路的基於事件的推斷和學習 |
US20160321542A1 (en) * | 2015-04-28 | 2016-11-03 | Qualcomm Incorporated | Incorporating top-down information in deep neural networks via the bias term |
US20170200094A1 (en) * | 2016-01-07 | 2017-07-13 | 1026 Labs, Inc. | Hardware accelerated machine learning |
Also Published As
Publication number | Publication date |
---|---|
EP3602280B1 (en) | 2021-10-13 |
TWI670651B (zh) | 2019-09-01 |
WO2019027628A1 (en) | 2019-02-07 |
TW201941051A (zh) | 2019-10-16 |
TW201911039A (zh) | 2019-03-16 |
US10108538B1 (en) | 2018-10-23 |
US10802956B2 (en) | 2020-10-13 |
CN109324827B (zh) | 2023-11-28 |
CN109324827A (zh) | 2019-02-12 |
EP3602280A1 (en) | 2020-02-05 |
US20190034327A1 (en) | 2019-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI720566B (zh) | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 | |
JP7051895B2 (ja) | 加算器を使用した多次元テンソルにおけるデータへのアクセス | |
TWI710974B (zh) | 用於基於一n維張量之張量元素執行運算之方法及系統,及相關的非暫時性電腦儲存媒體 | |
TWI740274B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
TWI681291B (zh) | 存取多維張量中之資料 | |
CN108009627A (zh) | 神经网络指令集架构 | |
GB2567038B (en) | Accessing prologue and epilogue data | |
TW202234266A (zh) | 使用可編程控制引擎執行張量運算 | |
TW202230137A (zh) | 基於深度在記憶體中儲存張量 | |
KR20220129106A (ko) | 비트 스트링 축적 |