TWI700587B - 存取多維張量中之資料 - Google Patents
存取多維張量中之資料 Download PDFInfo
- Publication number
- TWI700587B TWI700587B TW108144554A TW108144554A TWI700587B TW I700587 B TWI700587 B TW I700587B TW 108144554 A TW108144554 A TW 108144554A TW 108144554 A TW108144554 A TW 108144554A TW I700587 B TWI700587 B TW I700587B
- Authority
- TW
- Taiwan
- Prior art keywords
- tensor
- dimension
- index
- value
- memory address
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect 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/355—Indexed addressing
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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
- 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/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭示方法、系統及設備,包含一種用於處理用以存取一N
維張量之一指令之設備,該設備包含多個張量索引元素及多個維度乘數元素,其中該等維度乘數元素中之每一者具有一對應張量索引元素。該設備包含一或多個處理器,該一或多個處理器經組態以:獲得用以存取一N
維張量之一特定元素之一指令,其中該N
維張量具有跨越該N
個維度中之每一者配置之多個元素,且其中N
係等於或大於1之一整數;使用該多個張量索引元素中之一或多個張量索引元素及該多個維度乘數元素中之一或多個維度乘數元素來判定該特定元素之一位址;及輸出指示該經判定位址之資料以用於存取該N
維張量之該特定元素。
Description
本發明係關於存取資料,且更特定而言係關於存取多維張量中之資料。
本說明書大體而言係關於使用暫存器來計算記憶體位址值。暫存器可用於處置分支條件。
根據本說明書中所闡述之標的物之一個創新性態樣,暫存器可用於使巢套迴圈反覆結構以計算對應記憶體位址,且允許程式設計師處置迴圈界限條件。通常,暫存器可經配置以維持架構狀態之數個集合,該等架構狀態包含迴圈界限值、每一迴圈中之一當前迴圈索引變數、用於計算一記憶體位址值之維度乘數及用於處置分支迴圈界限之程式計數器值。該配置可有助於處理一或多個多維資料結構。在具有此等架構狀態集合之情況下,一處理器可執行用以將索引變數移動至新位置、擷取記憶體位址值且跳轉至一新分支目標的若干指令。
通常,本說明書中所闡述之標的物之一個創新性態樣可體現為用於處理用以存取一N
維張量之一指令之一設備。該設備包含多個張量索引元素及多個維度乘數元素,其中維度乘數元素中之每一者具有一對應張量索引元素。該設備包含一或多個處理器,該一或多個處理器經組態以:獲得用以存取一N
維張量之一特定元素之一指令,其中該N
維張量具有跨越N
個維度中之每一者配置之多個元素,且其中N
係等於或大於1之一整數;使用多個張量索引元素中之一或多個張量索引元素及多個維度乘數元素中之一或多個維度乘數元素來判定該特定元素之一位址;及輸出指示經判定位址之資料以用於存取該N
維張量之特定元素。
此等及其他實施方案可各自視情況包含以下特徵中之一或多者。舉例而言,該特定元素之位址可係自該N
維張量之另一元素位移之一位址。為針對一或多個張量索引元素中之每一張量索引元素判定特定元素之位址,可將儲存於各別張量索引元素中之一值乘以儲存於一或多個多個張量索引元素中之對應張量索引元素中之一值以產生一各別相乘值。位址位移可藉由判定該等相乘值之一總和來判定。
多個張量索引元素可被配置成張量索引元素之M
個群組,M
係大於1之一正整數。張量索引元素之每一群組可被指派至一截然不同之多維張量。
該設備可包含多個張量界限元素,其中該多個張量界限元素中之每一者可在多個張量索引元素中具有一對應張量索引元素。指令可表示用於處理一巢套迴圈之一指令,該巢套迴圈包含一第一迴圈及一第二迴圈,該第二迴圈係該第一迴圈之一外迴圈,其中該第一迴圈係使用一第一索引變數進行反覆,且其中該第二迴圈係使用一第二索引變數進行反覆。
一或多個處理器可經組態以將儲存於多個張量索引元素、多個維度乘數元素及多個張量界限元素中之值設定為一初始化值。一或多個處理器可經組態以將儲存於多個張量界限元素中之一第一張量界限元素中之一值設定為第一索引變數之一上界限值以使第一迴圈反覆;將儲存於多個張量界限元素中之一第二張量界限元素中之一值設定為第二索引變數之一上界限值以使第二迴圈反覆;將儲存於多個維度乘數元素中之一第一維度乘數元素中之一值設定為一預定值;及將儲存於多個維度乘數元素中之一第二維度乘數元素中之一值設定為第一索引變數之上界限值。
為判定N維張量之元素之位址,一或多個處理器可經組態以:將儲存於多個張量索引元素中之一第一張量索引元素中之一值設定為第一索引變數之一當前值;將儲存於多個張量索引元素中之一第二張量索引元素中之一值設定為第二索引變數之一當前值;將儲存於第一維度乘數元素中之值乘以儲存於第一張量索引元素中之值以獲得一第一相乘值;將儲存於第二維度乘數元素中之值乘以儲存於第二張量索引元素中之值以獲得一第二相乘值;及藉由至少對第一相乘值與第二相乘值求和來判定位址。
該一或多個處理器可經組態以:接收用以更新儲存於該第一張量索引元素中之該值之一指令;在接收到用以更新儲存於該第一張量索引元素中之該值之該指令之後,判定儲存於該第一張量索引元素中之該值與儲存於該第一張量界限元素中之該值之間的一差滿足一臨限值;及回應於判定儲存於該第一張量索引元素中之該值與儲存於該第一張量界限元素中之該值之間的該差額滿足該臨限值,更新儲存於該第一張量索引元素中之該值。每當該第一迴圈完成時,該第一索引變數可遞增一第一增量值。為更新儲存於該第一張量索引元素中之該值,可使儲存於該第一張量索引元素中之該值遞增該第一增量值。
該一或多個處理器可經組態以接收用以更新儲存於該第一張量索引元素中之該值之一指令;在接收到用以更新儲存於該第一張量索引元素中之該值之該指令之後,判定儲存於該第一張量索引元素中之該值與儲存於該第一張量界限元素中之該值之間的一差不滿足一臨限值。回應於判定儲存於該第一張量索引元素中之該值與儲存於該第一張量界限元素中之該值之間的該差不滿足該臨限值,該一或多個處理器可經組態以重設儲存於該第一張量索引元素中之該值,且更新儲存於該第二張量索引元素中之該值。每當該第二迴圈完成時,該第二索引變數可遞增一第二增量值。為更新儲存於該第二張量索引元素中之該值,可使儲存於該第二張量索引元素中之該值遞增該第二增量值。
該一或多個處理器可包含一或多個算術邏輯單元。該等張量索引元素及該等維度乘數元素中之每一者可係一暫存器。該設備可包含多個分支目標元素,其中該等多個分支目標元素中之每一者在該多個張量索引元素中具有一對應張量索引元素,且其中該多個分支目標元素中之每一者經組態以儲存在對應於該各別分支目標元素之一迴圈之一反覆完成之後旋即被執行之一指令的一位址。
本說明書中所闡述之標的物可在特定實施例中實施以便實現以下優點中之一或多者。使用暫存器來追蹤記憶體位址值可允許一程式以一個指令來使深層巢套迴圈反覆。可藉由基於儲存於該等暫存器中之值而應用簡單算術計算來迅速判定記憶體位址值。使用算術邏輯單元來判定記憶體位址值允許減少處理器處之計算循環之數目且增加用於其他計算任務之處理器頻寬。可以經減少數目個指令遍歷張量。一個二維暫存器架構允許若干多維張量各自具有被同時追蹤之不同維度。由於具有分支目標表,因此可減少分支指令相關前導符元。
此態樣及其他態樣之其他實施方案包含對應系統、設備及編碼於電腦儲存裝置上之經組態以執行方法之動作之電腦程式。可藉助安裝於一或多個電腦之一系統上從而在操作時使該系統執行動作之軟體、韌體、硬體或上述各項之一組合來對該系統進行如此組態。可藉助具有在由資料處理設備執行時使設備執行動作之指令來對一或多個電腦程式進行組態。
附圖及下文之說明中陳述本說明書中所闡述之標的物之一或多個實施方案之細節。根據說明、圖式及申請專利範圍將明瞭標的物之其他潛在特徵、方態樣及優點。
通常,當一軟體演算法處理一N
維張量時,可使用一巢套迴圈,其中每一迴圈負責遍歷N
維張量之每一維度。一多維張量可係一矩陣或多維矩陣。N
維張量之每一維度可包含一或多個元素,其中每一元素可儲存一各別資料值。舉例而言,一張量可係一程式中之一變數,其中該變數可具有三個維度。第一維度可具有三百個元素之一長度,第二維度可具有一千個元素之一長度,且第三維度可具有二十個元素之一長度。在一巢套迴圈中遍歷張量需要計算一元素之一記憶體位址值以載入或儲存該元素之對應資料值。舉例而言,一for迴圈係一巢套迴圈,其中藉由三個迴圈索引變數追蹤之三個迴圈可經嵌套以遍歷該三維張量。在某些情形中,一處理器可需要執行一迴圈界限條件,諸如以一外迴圈索引變數設定一內迴圈之一迴圈界限。舉例而言,在判定是否退出一巢套迴圈之最內迴圈時,程式可比較該巢套迴圈的最內迴圈之迴圈索引變數之當前值與最外迴圈之迴圈索引變數之當前值。
此等任務可需要顯著數目個指令,諸如分支指令及整數算術指令。當每一迴圈界限小且迴圈之數目大時,計算可耗費總體執行時間之一顯著部分,且使總體效能嚴重降級。舉例而言,一處理器可經設計以處理N
維張量輸入。該處理器可在一2維架構上實施,此使得(N
-2)個維度由軟體處理。當N
大時,對N
-2個維度之處置對處理器而言可係計算量巨大的,此乃因計算需要極高純量計算頻寬。一處理器之一硬體張量遍歷單元可藉由在遍歷一張量時減少需要處理器處理之維度之數目來增加處理器之計算頻寬。
圖1展示用於遍歷一張量之一實例性運算系統100之一方塊圖。通常,運算系統100處理一輸入104以產生一輸出116。運算系統100可經組態以執行線性代數計算。輸入104可係可由運算系統100處理之任何適合資料。運算系統100包含一處理單元102、一儲存媒體104及一張量遍歷單元106。
通常,當處理單元102執行用於存取一張量之一特定元素之一指令時,張量遍歷單元106判定該張量之該特定元素之位址,使得處理單元102可存取儲存媒體104以讀取表示該特定元素之值的資料114。舉例而言,一程式可包含一巢套迴圈,且處理單元102可執行用以根據與該巢套迴圈相關聯之當前索引變數值來存取該巢套迴圈內之一個二維陣列變數之一元素的一指令。基於與該巢套迴圈相關聯之當前索引變數值,張量遍歷單元106可判定表示自二維陣列變數之一第一元素之一位移之一位移值。然後,處理單元102可使用該位移值且自儲存媒體存取二維陣列變數之特定元素。
處理單元102經組態以處理供在運算系統100內執行之指令,該等指令包含儲存於儲存媒體104中之指令112或儲存於另一儲存裝置中之其他指令。處理單元102可包含一或多個處理器。儲存媒體104儲存運算系統100內之資訊。在某些實施方案中,儲存媒體104係一或多個揮發性記憶體單元。在某些其他實施方案中,儲存媒體104係一或多個非揮發性記憶體單元。儲存媒體104亦可係另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置、或一磁帶裝置、一快閃記憶體、或其他類似固態記憶體裝置、或包含一儲存區域網路中之裝置之一裝置陣列或其他組態。指令在由處理單元102執行時會使得處理單元102執行一或多個任務。
張量遍歷單元106經組態以判定與一或多個張量相關聯之一狀態。該狀態可包含迴圈界限值、當前迴圈索引變數值、用於計算一記憶體位址值之維度乘數及/或用於處置分支迴圈界限之程式計數器值。張量遍歷單元106包含張量狀態元件122及一算術邏輯單元124。張量狀態元件122中之每一者可係一儲存元件,舉例而言一暫存器或任何其他適合儲存電路。在某些實施方案中,張量狀態元件122可以實體方式或以邏輯方式被配置成不同群組,如下文參考圖2A至圖2H及圖3A至圖3B所更詳細地闡述。在某些實施方案中,張量狀態元件122之一群組可以實體方式或以邏輯方式被配置成一多維陣列。舉例而言,張量狀態元件122之每一群組可以實體方式或以邏輯方式被配置成一個二維陣列。算術邏輯單元124包含經組態以執行算術及邏輯運算之一或多個算術邏輯單元(ALU)。舉例而言,算術邏輯單元124可包含經組態以執行加、減、乘、除、邏輯AND、邏輯OR或任何其他適合算術及邏輯運算的數位電路。
圖2A展示一張量遍歷單元之張量狀態元件200之一實例性集合。張量狀態元件200可對應於張量遍歷單元106之張量狀態元件122。張量狀態元件200包含張量索引元素202之一群組、張量界限元素204之一群組及維度乘數元素206之一群組。張量索引元素202可以實體方式或以邏輯方式被配置為具有M
列及N
行之一2D陣列,其中M
及N
係大於或等於1之整數。在某些實施方案中,每一列張量索引元素202可表示一張量之張量索引資訊。舉例而言,若一程式定義兩個陣列變數V1
及V2
,則張量遍歷單元可指派列202a及202b來分別追蹤陣列變數V1
及V2
之張量索引資訊。在某些實施方案中,每一行張量索引元素202可表示與一張量相關聯之巢套迴圈索引變數值之張量索引資訊。舉例而言,若程式定義具有用於存取變數V1
之三個迴圈之一巢套迴圈,其中巢套迴圈之每一迴圈由巢套迴圈索引變數i
、j
及k
加索引,則張量遍歷單元可指派張量索引元素X 1,1
、X 1,2
及X 1,3
來分別追蹤巢套迴圈索引變數i
、j
及k
。下文參考圖2D至圖2H更詳細地闡述張量索引資訊。
張量界限元素204可以實體方式或以邏輯方式被配置為具有與張量索引元素202相同之維度之一2D陣列,其中張量界限元素204中之每一元素在張量索引元素202中具有一對應元素。在某些實施方案中,每一列張量界限元素204可表示一張量之張量界限資訊。舉例而言,若程式定義兩個陣列變數V1
及V2
,則張量遍歷單元可指派列204a及204b來分別追蹤陣列變數V1
及V2
之張量界限資訊。在某些實施方案中,每一行張量界限元素204可表示與一張量相關聯之巢套迴圈索引變數值之張量界限資訊。舉例而言,若程式定義具有用於存取變數V1
之三個迴圈之一巢套迴圈,其中巢套迴圈中之每一迴圈由巢套迴圈索引變數i
、j
及k
加索引,則張量遍歷單元可指派張量界限元素Y 1,1
、Y 1,2
及Y 1,3
來分別追蹤巢套迴圈索引變數i
、j
及k
相關聯之張量界限資訊。下文參考圖2C更詳細地闡述張量界限資訊。
維度乘數元素206可以實體方式或以邏輯方式被配置為具有與張量索引元素202相同之維度之一2D陣列,其中維度乘數元素206中之每一元素在張量索引元素202中具有一對應元素。在某些實施方案中,每一列維度乘數元素206可表示一張量之維度乘數資訊。舉例而言,若程式定義兩個陣列變數V1
及V2
,則張量遍歷單元可指派列206a及206b來分別追蹤陣列變數V1
及V2
之維度乘數資訊。在某些實施方案中,每一行維度乘數元素206可表示與一張量相關聯之巢套迴圈索引變數值之維度乘數資訊。舉例而言,若程式定義具有用於存取變數V1
之三個迴圈之一巢套迴圈,其中巢套迴圈中之每一迴圈由巢套迴圈索引變數i
、j
及k
加索引,則張量遍歷單元可指派維度乘數元素Z 1,1
、Z 1,2
及Z 1,3
來分別追蹤與巢套迴圈索引變數i
、j
及k
相關聯之維度乘數資訊。下文參考圖2D更詳細地闡述維度乘數資訊。
圖2B至圖2H展示一張量遍歷單元可如何使用張量狀態元件200來處理一張量之一實例。參考圖2B,可將一程式212儲存於儲存媒體104或可由處理單元102執行之另一儲存媒體中。程式212規定具有一第一維度4及一第二維度2之一字元陣列變數V
。程式212規定用於遍歷變數V
之一巢套for迴圈,其中該for迴圈在藉由一巢套迴圈索引變數i
追蹤之一外迴圈中遍歷V
之第一維度,且在藉由一巢套迴圈索引變數j
追蹤之一內迴圈中遍歷V
之第二維度。在某些實施方案中,可在一程式之開始處將張量狀態元件200初始化。舉例而言,一處理器可執行將張量狀態元件200初始化之一指令「InitializeElements
」。該指令可係可由一處理器執行之一指令集合之一硬體指令。在某些實施方案中,在初始化之後,張量狀態元件200中之每一元素被設定為一預定值。本文中,在初始化之後,張量狀態元件200中之每一元素可被設定為零。
圖2C圖解說明根據程式212設定張量界限元素204中之張量界限資訊。舉例而言,一處理器可執行設定張量界限元素204中之張量界限資訊之一指令「SetTensorBound
」。在某些實施方案中,張量界限資訊表示對應巢套迴圈索引變數之一上界限。本文中,內巢套迴圈索引變數i
具有一上界限4,且外巢套迴圈索引變數j
具有一上界限2。在設定張量界限元素204中之張量界限資訊之後,元素214 (亦即,Y 1,2
)被設定為4,且元素216 (亦即,Y 1,1
)被設定為2。
圖2D圖解說明根據程式212設定維度乘數元素206中之維度乘數資訊。舉例而言,處理器可執行設定維度乘數元素206中之維度乘數資訊之一指令「SetDimensionMultiplier
」。在某些實施方案中,維度乘數資訊表示可乘以張量索引元素202中之一對應元素之一乘數。本文中,字元變數V
具有一第一維度4及一第二維度2。若元素V
[0][0]儲存於一基底記憶體位址P
處且元素V
[0][1]儲存於一記憶體位址P
+1處,則元素V
[1][0]儲存於一記憶體位址P
+2處。因此,一元素V
[i
][j
]之對應記憶體位址係P
+(i
× 2)+(j
× 1)。因此,外迴圈之維度乘數資訊係2,且內迴圈之維度乘數資訊係1。在設定維度乘數元素206中之維度乘數資訊之後,元素222 (亦即,Z 1,2
)被設定為2,且元素224 (亦即,Z 1,1
)被設定為1。
圖2E圖解說明根據程式212存取元素V
[0][0]。舉例而言,處理器可執行定位對應於經存取元素之一記憶體位址之一指令「LocateTensor
」。在某些實施方案中,指令可包含一基底記憶體位址。舉例而言,指令「LocateTensor
」可包含係變數V
之第一元素之元素V
[0][0]之一記憶體位址。在某些實施方案中,指令可包含對應於一待存取張量之一列數目。舉例而言,指令「LocateTensor
」可包含對應於變數V
之一列數目。本文中,列數目係1。
在某些實施方案中,回應於接收指令,一算術邏輯單元(例如,算術邏輯單元106)藉由計算儲存於張量索引元素202中之每一者中之值與儲存於對應維度乘數元素206中之值之間的乘積之一總和來判定一記憶體位址位移。本文中,一算術邏輯單元將儲存於元素X 1,N
中之值乘以儲存於元素Z 1,N
中之值、將儲存於元素X 1,N-1
中之值乘以儲存於元素Z 1,N-1
,…,中之值、將儲存於元素X 1,2
中之值乘以儲存於元素Z 1,2
中之值且將儲存於元素X 1,1
中之值乘以儲存於元素Z 1,1
中之值。然後,算術邏輯單元對所有乘積一起求和以判定對應於經存取元素之記憶體位址。由於張量索引元素202中之所有值係零,因此記憶體位址位移係零,如由方框230所指示。然後,處理器可藉由將基底記憶體位址(亦即,P
)與記憶體位址位移(亦即,0)相加以判定一記憶體位址並基於經判定記憶體位址而存取儲存媒體中所儲存之資料來存取元素V
[0][0]。
圖2F圖解說明根據程式212存取元素V
[0][1]。舉例而言,在程式已逐一查看第一內迴圈之後,巢套迴圈索引變數被更新(亦即,i
=0且j
=0),處理器可在程式進入第二內迴圈(亦即,i
=0且j
=1)時執行更新張量索引元素202之一指令「IterateTensor
」。在某些實施方案中,張量遍歷單元藉由使具有最低索引之張量索引元素遞增一預定值來更新張量索引元素202。舉例而言,參考圖2F,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。在某些其他實施方案中,張量遍歷單元可藉由使具有最低索引之張量索引元素遞減一預定值來更新張量索引元素202。
在某些實施方案中,張量遍歷單元比較張量索引元素202中之經更新值與張量界限元素204中之值,並判定是否已滿足一臨限值。舉例而言,張量遍歷單元可比較張量索引元素228中之經更新值(亦即,1)與張量界限元素216中之值(亦即,2),並判定張量索引元素228中之經更新值是否小於張量界限元素216中之值。本文中,張量索引元素228中之經更新值小於張量界限元素216中之值,且張量索引元素228中之經更新值保持為1。
然後,處理器可藉由執行指令「LocateTensor
」以定位對應於V
[0][1]之記憶體位址來存取元素V
[0][1]。參考圖2F,張量索引元素202中之所有值皆係零,惟張量索引元素228除外。張量索引元素228具有一值1,且算術邏輯單元可判定記憶體位址位移係1,如藉由方框232所指示。然後,處理器可藉由將基底記憶體位址(亦即,P
)與記憶體位址位移(亦即,1)相加以判定一記憶體位址並基於經判定記憶體位址而存取儲存媒體中所儲存之資料來存取元素V
[0][1]。
圖2G圖解說明根據程式212存取元素V
[1][0]。舉例而言,在程式已第二次逐一查看內迴圈之後,巢套迴圈索引變數被更新(亦即,i
=1且j
=0),且處理器可執行更新張量索引元素202之一指令「IterateTensor
」。舉例而言,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。張量遍歷單元可比較張量索引元素228中之經更新值(亦即,2)與張量界限元素216中之值(亦即,2),並判定張量索引元素228中之經更新值不小於張量界限元素216中之值。在某些實施方案中,回應於判定尚不滿足臨限值,張量遍歷單元可將經更新值轉入至下一張量索引元素且重設當前張量索引元素。舉例而言,由於張量索引元素228中之經更新值不小於張量界限元素216中之值,因此張量遍歷單元可使張量索引元素226遞增1,且將張量索引元素228重設回至0。
然後,處理器可藉由執行指令「LocateTensor
」以定位對應於V
[1][0]之記憶體位址來存取元素V
[1][0]。參考圖2G,張量索引元素202中之所有值皆係零,惟張量索引元素226除外。張量索引元素226具有一值1,且算術邏輯單元可判定記憶體位址位移係2,如藉由方框234所指示。然後,處理器可藉由將基底記憶體位址(亦即,P
)與記憶體位址位移(亦即,2)相加以判定一記憶體位址並基於經判定記憶體位址而存取儲存媒體中所儲存之資料來存取元素V
[1][0]。
圖2H圖解說明根據程式212存取元素V
[3][1]。舉例而言,程式可繼續逐一查看內迴圈及外迴圈直至巢套迴圈索引變數處於其上界限(亦即,i
=3且j
=1)處為止。處理器可藉由執行指令「LocateTensor」以定位對應於V[3][1]之記憶體位址來存取元素V[3][1]。參考圖2H,張量索引元素202中之所有值皆係零,惟張量索引元素226及228除外。張量索引元素226具有一值3,且張量索引元素228具有一值1。算術邏輯單元可判定記憶體位址位移係7,如藉由方框236所指示。然後,處理器可藉由將基底記憶體位址(亦即,P)與記憶體位址位移(亦即,7)相加以判定一記憶體位址並基於經判定記憶體位址而存取儲存媒體中所儲存之資料來存取元素V[3][1]。
然後,處理器可執行更新張量索引元素202之指令「IterateTensor
」。舉例而言,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。張量遍歷單元可比較張量索引元素228中之經更新值(亦即,2)與張量界限元素216中之值(亦即,2),並判定張量索引元素228中之經更新值不小於張量界限元素216中之值。由於張量索引元素228中之經更新值不小於張量界限元素216中之值,因此張量遍歷單元可使張量索引元素226遞增1,且將張量索引元素228重設回至0。張量遍歷單元可比較張量索引元素226中之經更新值(亦即,3+1=4)與張量界限元素214中之值(亦即,4),並判定張量索引元素226中之經更新值不小於張量界限元素214中之值。由於張量索引元素228中之經更新值不小於張量界限元素214中之值,因此張量遍歷單元可使下一張量索引元素(亦即,X 1,3
)遞增1,且將張量索引元素226重設回至0。然而,由於對應張量界限元素(亦即,Y 1,3
)係0,因此不滿足臨限值。張量遍歷單元將繼續重設第一列張量索引元素202直至將第一列處之所有張量索引元素重設至0。
在上文參考圖2B至圖2H所闡述之實例中,針對元素V之張量遍歷次序係V[0][0]、V[0][1]、V[1][0]、V[1][1]、V[2][0]、V[2][1]、V[3][0]及V[3][1]。在某些實施方案中,一程式可藉由將元素214 (亦即,Y 1,2
)中之張量界限資訊設定為2且將元素216 (亦即,Y 1,1
)設定為4,並藉由將元素222 (亦即,Z 1,2
)中之維度乘數資訊設定為1且將元素224 (亦即,Z 1,1
)設定為2而以次序V[0][0]、V[1][0]、V[2][0]、V[3][0]、V[0][1]、V[1][1]、V[2][1]及V[3][1]來遍歷元素V。
圖3展示一張量遍歷單元之張量狀態元件300之一實例性集合。張量狀態元件300可對應於張量遍歷單元106之張量狀態元件122或張量狀態元件200。張量遍歷單元300包含張量索引元素302之一群組、張量界限元素304之一群組、維度乘數元素306之一群組及分支目標元素308之一群組。分支目標元素308可以實體方式或以邏輯方式被配置為一2D陣列,其中分支目標元素308中之每一元素在張量索引元素302中具有一對應元素。在某些實施方案中,每一列分支目標元素308可表示一張量之分支目標資訊。在某些實施方案中,每一行分支目標元素308可表示與一張量相關聯之巢套迴圈索引變數值之分支目標資訊。在某些實施方案中,對於一N
維張量而言,其中存在N
行張量索引元素302、N
行張量界限元素304及N
行維度乘數元素306,可存在N
+1行對應分支目標308,此乃因存在N
+1種滿足界限臨限值之情形。
在某些實施方案中,分支目標資訊可包含在一巢套迴圈中之一迴圈反覆完成之後旋即由一處理器執行之一指令之一記憶體位址。舉例而言,當一張量索引元素中之值被更新時,處理器可根據儲存於對應分支目標元素中之記憶體位址執行一指令。參考圖3,一程式312可儲存於儲存媒體104或可由處理單元102執行之另一儲存媒體中。程式312規定具有一第一維度4及一第二維度2之一字元陣列變數V
。程式312規定用於遍歷變數V
之一巢套for迴圈,其中該for迴圈在藉由一巢套迴圈索引變數i
追蹤之一外迴圈中遍歷V
之第一維度,且遍歷在藉由一巢套迴圈索引變數j
追蹤之一內迴圈中V
之第二維度。程式312亦規定退出內迴圈之一條件,此需要處理器執行一minimum
函式指令以比較巢套迴圈索引變數i
之當前值與數字2。在某些實施方案中,minimum
函式指令之記憶體位址可儲存於分支目標元素324中,使得在存在自張量索引元素326至張量索引元素328之一轉入的情況下,minimum
函式指令將由處理器執行以判定針對該內迴圈之分支條件並針對該內迴圈設定張量界限資訊。類似地,一不同指令之記憶體位址可儲存於分支目標元素322中,使得在存在張量索引元素326之一遞增而無至張量索引元素328之一轉入的情況下,不同指令將由處理器執行。
圖4係圖解說明用於判定一多維張量變數之一位址之一程序400之一實例之一流程圖。程序400可由一或多個電腦之一系統(例如,運算系統100)執行。系統包含具有多個張量索引元素及多個維度乘數元素之一張量遍歷單元,其中維度乘數元素中之每一者具有一對應張量索引元素。在某些實施方案中,系統可包含多個張量界限元素,其中多個張量界限元素中之每一者可在多個張量索引元素中具有一對應張量索引元素。在某些實施方案中,系統包含一或多個算術邏輯單元。
系統獲得用以存取一N
維張量之一特定元素之一指令,其中該N
維張量具有跨越N
個維度中之每一者配置之多個元素,且其中N
係等於或大於1之一整數(402)。舉例而言,處理單元102可執行用於存取一張量之一特定元素之一指令。
在某些實施方案中,指令可表示用於處理一巢套迴圈之一指令,該巢套迴圈包含一第一迴圈及一第二迴圈,該第二迴圈係第一迴圈之一外迴圈,其中該第一迴圈係使用一第一索引變數進行反覆,且其中該第二迴圈係使用一第二索引變數進行反覆。舉例而言,一程式212可儲存於儲存媒體104或可由處理單元102執行之另一儲存媒體中。程式212可規定具有一第一維度4及一第二維度2之一字元陣列變數V
。程式212可規定用於遍歷變數V
之一巢套for迴圈,其中該for迴圈在藉由一巢套迴圈索引變數i
追蹤之一外迴圈中遍歷V
之第一維度,且在藉由一巢套迴圈索引變數j
追蹤之一內迴圈中遍歷V
之第二維度。
系統使用多個張量索引元素中之一或多個張量索引元素及多個維度乘數元素中之一或多個維度乘數元素來判定特定元素之一位址(404)。在某些實施方案中,該特定元素之位址可係自N維張量之另一元素位移之一位址。針對一或多個張量索引元素中之每一張量索引元素,系統可將儲存於各別張量索引元素中之一值乘以儲存於一或多個多個張量索引元素之對應張量索引元素中之一值以產生一各別相乘值。系統可藉由判定該等相乘值之一總和來判定位址位移。舉例而言,一算術邏輯單元(例如,算術邏輯單元106)可藉由計算儲存於張量索引元素202中之每一者中之值與儲存於對應維度乘數元素206中之值之間的乘積之一總和來判定一記憶體位址位移。
在某些實施方案中,系統可將儲存於多個張量索引元素、多個維度乘數元素及多個張量界限元素中之值設定為一初始化值。舉例而言,一處理器可執行將張量狀態元件200初始化之一指令「InitializeElements
」。在初始化之後,張量狀態元件200中之每一元素可被設定為零。
在某些實施方案中,系統可將儲存於多個張量界限元素中之一第一張量界限元素中之一值設定為第一索引變數之一上界限值以使第一迴圈反覆。系統可將儲存於多個張量界限元素中之一第二張量界限元素中之一值設定為第二索引變數之一上界限值以使第二迴圈反覆。舉例而言,一處理器可執行將張量狀態元件200初始化之一指令「InitializeElements
」。在初始化之後,張量狀態元件200之每一元素可被設定為零。系統可將儲存於多個維度乘數元素中之一第一維度乘數元素中之一值設定為一預定值。系統可將儲存於多個維度乘數元素中之一第二維度乘數元素中之一值設定為第一索引變數之上界限值。舉例而言,一處理器可執行設定張量界限元素204中之張量界限資訊之一指令「SetTensorBound
」。在設定張量界限元素204中之張量界限資訊之後,元素214 (亦即,Y 1,2
)被設定為4,且元素216 (亦即,Y 1 , 1
)被設定為2。
在某些實施方案中,系統可將儲存於多個張量索引元素中之一第一張量索引元素中之一值設定為第一索引變數之一當前值。系統可將儲存於多個張量索引元素中之一第二張量索引元素中之一值設定為第二索引變數之一當前值。系統可將儲存於第一維度乘數元素中之值乘以儲存於第一張量索引元素中之值以獲得一第一相乘值。系統可將儲存於第二維度乘數元素中之值乘以儲存於第二張量索引元素中之值以獲得一第二相乘值。系統可藉由至少對第一相乘值與第二相乘值求和來判定位址。舉例而言,一算術邏輯單元將儲存於元素X 1,N
中之值乘以儲存於元素Z 1,N
中之值,將儲存於元素X 1,N-1
中之值乘以儲存於元素Z 1,N-1 , … ,
中之值,將儲存於元素X 1,2
中之值乘以儲存於元素Z 1,2
中之值且使儲存於元素X 1,1
中之值乘以儲存於元素Z 1,1
中之值。然後,算術邏輯單元對所有乘積一起求和以判定對應於被存取元素之記憶體位址。
在某些實施方案中,系統可接收用以更新儲存於第一張量索引元素中之值的一指令。舉例而言,處理器可執行更新張量索引元素202之一指令「IterateTensor
」。在接收到用以更新儲存於第一張量索引元素中之值的指令之後,系統可判定儲存於第一張量索引元素中之值與儲存於第一張量界限元素中之值之間的一差滿足一臨限值。回應於判定儲存於第一張量索引元素中之值與儲存於第一張量界限元素中之值之間的差滿足臨限值,系統可更新儲存於第一張量索引元素中之值。舉例而言,參考圖2F,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。張量索引元素228中之經更新值小於張量界限元素216中之值,且張量索引元素228中之經更新值保持為1
在某些實施方案中,每當第一迴圈完成時,第一索引變數可遞增一第一增量值。系統可使儲存於第一張量索引元素中之值遞增第一增量值。舉例而言,在程式進入第二內迴圈(亦即,i
=0且j
=1)之後,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。
在某些實施方案中,系統可接收用以更新儲存於第一張量索引元素中之值的一指令。舉例而言,處理器可執行更新張量索引元素202之一指令「IterateTensor
」。在接收到用以更新儲存於第一張量索引元素中之值的指令之後,系統可判定儲存於第一張量索引元素中之值與儲存於第一張量界限元素中之值之間的一差不滿足一臨限值。回應於判定儲存於第一張量索引元素中之值與儲存於第一張量界限元素中之值之間的差不滿足臨限值,系統可重設儲存於第一張量索引元素中之值,且更新儲存於第二張量索引元素中之值。舉例而言,張量遍歷單元可使張量索引元素228 (亦即,X1,1
)遞增1。張量遍歷單元可比較張量索引元素228中之經更新值(亦即,2)與張量界限元素216中之值(亦即,2),並判定張量索引元素228中之經更新值不小於張量界限元素216中之值。由於張量索引元素228中之經更新值不小於張量界限元素216中之值,因此張量遍歷單元可使張量索引元素226遞增1,且將張量索引元素228重設回至0。
在某些實施方案中,每當第二迴圈完成時,第二索引變數可遞增一第二增量值。系統可使儲存於第二張量索引元素中之值遞增第二增量值。舉例而言,在程式進入外迴圈(亦即,i
=1且j
=0)之下一迴圈之後,張量遍歷單元可使張量索引元素226 (亦即,X1,2
)遞增1。
系統輸出指示經判定位址之資料以用於存取N
維張量之特定元素(406)。舉例而言,處理單元102可使用一記憶體位址位移值來存取儲存媒體中之一N
維陣列變數之一特定元素。
在某些實施方案中,系統包含多個分支目標元素,其中多個分支目標元素中之每一者在多個張量索引元素中具有一對應張量索引元素,且其中多個分支目標元素中之每一者經組態以儲存在對應於各別分支目標元素之一迴圈之一反覆完成之後旋即被執行之一指令的一位址。舉例而言,張量遍歷單元300包含儲存分支目標資訊之分支目標元素308之一群組。分支目標資訊可包含在一巢套迴圈中之一迴圈反覆完成之後旋即由一處理器執行之一指令之一記憶體位址。
本說明書中所闡述之標的物及函式運算之實施例可在以下各項中實施:數位電子電路、有形地體現之電腦軟體或韌體、在電腦硬體(包含本說明書中所揭示之結構及其結構等效形式)或上述各項中之一或多者之組合。本說明書中所闡述之標的物之實施例亦可實施為一或多個電腦程式,亦即,在一有形非暫時性程式載體上進行編碼以由資料處理設備執行或用以控制資料處理裝置之操作之一或多個電腦程式指令模組。另一選擇係或另外,可在經產生以對資訊進行編碼以供傳輸至適合接收器設備之一經人工產生傳播信號(例如,一由機器產生之電信號、光學信號或電磁信號)上對程式指令進行編碼以由一資料處理設備執行。電腦儲存媒體可係一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或上述各項中之一或多者之一組合。
術語「資料處理設備」囊括用於處理資料之所有種類之設備、裝置及機器(舉例而言,包含一可程式化處理器、一電腦或者多個處理器或電腦)。設備可包含特殊用途邏輯電路,例如,一FPGA (場可程式化邏輯閘陣列)或一ASIC (特殊應用積體電路)。除硬體之外,設備亦可包含為討論中之電腦程式建立一執行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一操作系統或上述各項中之一或多者之一組合的程式碼。
可以包含編譯語言或解譯語言或者宣告語言或程序語言之任何形式之程式設計語言來書寫一電腦程式(亦可稱為或闡述為一程式、軟體、一軟件應用、一模組、一軟體模組、一指令碼或程式碼),且可將電腦程序部署成任何形式,包含部署為一獨立程式或部署為一模組、組件、副程式或適合在一運算環境中使用之其他單元。一電腦程序可以但無需對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令碼)之一檔案之一部分中、儲存於專用於討論中之程式之一單個檔案中或儲存於多個協調檔案(例如,儲存一個或一個以上模組、子程序或程式碼之部分之檔案)中。一電腦程式可經部署以在一個電腦上或在位於一個地點處或跨越多個地點分佈且藉由一通信網路互連之多個電腦上執行。
本說明書中所闡述之程序及邏輯流程可由一或多個可程式化電腦執行,該等可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作並產生輸出來執行函式。程序及邏輯流程亦可由特殊用途邏輯電路(例如,一FPGA (場可程式化邏輯閘陣列)、一ASIC (特殊應用積體電路)或一GPGPU (一般用途圖形處理單元))執行且設備亦可實施為該特殊用途邏輯電路。
適合於執行一電腦程式之電腦(舉例而言)可基於一般用途微處理器或特殊用途微處理器或上述兩者或者任何其他種類之中央處理單元。通常,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元素係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。通常,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁盤、磁光盤或光盤)或經操作性耦合以自該一或多個大容量儲存裝置接收資料或向其傳送資料或既接收資料又傳送資料。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如(僅舉幾例),一行動電話、一個人數位助理(PDA)、一行動視訊或音訊播放器、一遊戲主機、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃磁碟機)。
適合於儲存電腦程式指令及資料之電腦可讀儲存媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,該等裝置(舉例而言)包含:半導體記憶體裝置(例如,EPROM、EEPROM及快閃記憶體裝置);磁碟(例如,內部硬碟或可抽換式磁碟);磁光碟;及CD ROM碟及DVD-ROM碟。處理器及記憶體可由特殊用途邏輯電路補充或併入特殊用途邏輯電路中。
為提供與一使用者之互動,本說明書中所描述之標的物之實施例可在具有以下裝置之一電腦上實施:用於向使用者顯示資訊之一顯示裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器);以及使用者可藉以將輸入提供至電腦之一鍵盤及一指向裝置(例如,一滑鼠或一軌跡球)。亦可使用其他種類之裝置來提供與一使用者之互動;舉例而言,提供至使用者之回饋可係任何形式之感測回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;及來自使用者之輸入可以包含聲輸入、語音輸入或觸覺輸入之任何形式來接收。另外,一電腦可藉由以下方式與一使用者互動:將文件發送至由使用者使用之一裝置及自該裝置接收文件;舉例而言,藉由回應於自網頁瀏覽器接收之請求而將網頁發送至一使用者之用戶端裝置上之一網頁瀏覽器。
本說明書中所闡述之標的物之實施例可實施於包含以下組件之一運算系統中:一後端組件(例如,作為一資料服務器)、或一中介軟體組件(例如,一應用程序服務器)、或一前端組件(例如,具有一圖形使用者介面之一用戶端電腦或一使用者可藉以與本說明書中所闡述之標的物之一實施方案互動之一網頁瀏覽器)、或者一或多個此等後端組件、中介軟體組件或前端組件之任何組合。該等系統組件可藉由任何形式之數位資料通信媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如網際網路。
運算系統可包含用戶端及服務器。一用戶端與服務器通常彼此遠離且通常透過一通信網路互動。用戶端與服務器之關係係藉助在各別電腦上運行且彼此之間具有一用戶端-服務器關係之電腦程序而產生的。
雖然本說明書含有諸多特定實施細節,但此等細節不應被解釋為對任何發明或可請求之內容之範疇之限制,而是應解釋為對特定發明之特定實施例所特有之特徵之說明。亦可將在本說明書中在單獨實施例之內容脈絡中闡述之特定特徵以組合形式實施於一單項實施例中。相反地,在一單項實施例之內容脈絡中闡述之各種特徵亦可單獨地或以任何適合子組合形式實施於多項實施例中。此外,儘管上文可將特徵闡述為以特定組合形式起作用且甚至最初系如此主張,但在某些情形中,可自一所主張組合去除來自該組合之一或多個特徵,且所主張組合可係針對一子組合或一子組合之變化形式。
類似地,雖然在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以循序次序執行此等操作,或執行所有所圖解說明之操作以達成期望結果。在特定情況下,多個任務及並行處理可係有利的。此外,不應將上文所闡述之實施例中之各種系統模組與組件之分離理解為在所有實施例中皆需要此分離,而是應理解,通常可將所闡述之程式組件及系統一起整合於一單個軟體產品中或包裝成多個軟體產品。
已闡述了標的物之特定實施例。其他實施例皆在以下申請專利範圍之範疇內。舉例而言,申請專利範圍中所陳述之動作可以一不同次序執行且仍達成期望結果。作為一實例,附圖中所繪示之程序未必需要所展示之特定次序或順序次序以達成期望結果。在某些實施方案中,多個任務及並行處理可係有利的。
100:實例性運算系統/運算系統
102:處理單元
104:輸入/儲存媒體
106:張量遍歷單元/算術邏輯單元
112:指令
114:資料
116:輸出
122:張量狀態元件
124:算術邏輯單元
200:張量狀態元件/張量遍歷單元
202:張量索引元素
202a:列
202b:列
204:張量界限元素
204a:列
204b:列
206:維度乘數元素
206a:列
206b:列
212:程式
214:張量界限元素/元素
216:元素/張量界限元素
222:元素
224:元素
226:張量索引元素
228:張量索引元素
230:方框
232:方框
234:方框
236:方框
300:張量狀態元件/張量遍歷單元
302:張量索引元素
304:張量界限元素
306:維度乘數元素
308:分支目標元素/分支目標
312:程式
322:分支目標元素
324:分支目標元素
326:張量索引元素
328:張量索引元素
圖1係一實例性運算系統之一方塊圖。
圖2A至圖2H圖解說明一實例性張量遍歷單元。
圖3圖解說明一實例性張量遍歷單元。
圖4係圖解說明用於判定一多維張量變數之一位址之一程序之一實例之一流程圖。
在各個圖式中,相似參考編號及名稱指示相同元素。
100:實例性運算系統/運算系統
102:處理單元
104:輸入/儲存媒體
106:張量遍歷單元/算術邏輯單元
112:指令
114:資料
116:輸出
122:張量狀態元件
124:算術邏輯單元
Claims (20)
- 一種用於判定一N維張量(tensor)之元件之記憶體位址之設備,該設備包括: 對於該N維張量之每一維度: 一張量索引元素(element),其包含經組態以儲存用於該維度之一索引值之硬體儲存電路,其中在用於遍歷(traverse)該維度之迴圈之每一反覆(iteration)之後調整該索引值,其中該N維張量具有跨越該N個維度中之每一者配置之多個元素,且其中N係等於或大於2之一整數; 一維度乘數元素,其包含經組態以儲存用於該維度之一乘數值之硬體儲存電路,其中該乘數值係對用於遍歷該維度之該迴圈之每一反覆而維持常數之一常數值;及 一或多個硬體處理器,其經組態以執行可由該一或多個硬體處理器執行之一指令集合之一或多個指令,其中該一或多個指令之執行使該一或多個硬體處理器執行包括以下之多個操作: 獲得由每一張量索引元素儲存之一當前索引值; 使用由每一張量索引元素儲存之該當前索引值及由每一維度乘數元素儲存之該乘數值,判定一特定元素儲存於記憶體中之一記憶體位址,該判定包含: 針對該N維張量之每一維度判定(i)用於該維度之該當前索引值及(ii)用於該維度之該乘數值之一積(product);且 基於該N維張量之每一維度之該積之一總和判定該特定元素之該記憶體位址;及 輸出指示經判定之該記憶體位址之資料至一處理單元,該處理單元經組態以使用經判定之該記憶體位址存取該N維張量之該特定元素。
- 如請求項1之設備,其中該一或多個硬體處理器判定該特定元素儲存於記憶體中之該記憶體位址以回應於接收判定用於該特定元素之該記憶體位址之一指令。
- 如請求項1之設備,其中基於該N維張量之每一維度之該積之該總和判定該特定元素之該記憶體位址包括將用於每一維度之該積之該總和與一基底記憶體位址值相加。
- 如請求項1之設備,其進一步包括用於該N維張量之每一維度之一個別張量界限元素,每一張量界限元素包含經組態以儲存用於用以遍歷該維度之該迴圈之一迴圈界限之硬體儲存電路。
- 如請求項1之設備,其中輸出指示經判定之該記憶體位址之資料至該處理單元包括基於用於該N維張量之每一元素之該迴圈之反覆,依序輸出用於該N維張量之每一元素之一個別記憶體位址。
- 如請求項1之設備,其中: 該等張量索引元素被配置成張量索引元素之M個群組,M係大於1之一正整數;及 張量索引元素之每一群組被指派至一截然不同之多維張量。
- 如請求項1之設備,其中用於該等維度之至少一者之該乘數值係基於該等迴圈之至少一者之數個反覆。
- 一種系統,其包括: 一或多個硬體處理器,其經組態以對一N維張量執行線性代數運算,其中該N維張量具有跨越該N個維度中之每一者配置之資料元素,且其中N係等於或大於2之一整數; 對於該N維張量之每一維度: 一張量索引元素,其包含經組態以儲存用於該維度之一索引值之硬體儲存電路,其中在用於遍歷該維度之迴圈之每一反覆之後調整該索引值; 一維度乘數元素,其包含經組態以儲存用於該維度之一乘數值之硬體儲存電路,其中該乘數值係對用於遍歷該維度之該迴圈之每一反覆而維持常數之一常數值;及 硬體電路,其經組態以: 獲得由每一張量索引元素儲存之一當前索引值; 使用由每一張量索引元素儲存之該當前索引值及由每一維度乘數元素儲存之該乘數值,判定一特定元素儲存於記憶體中之一記憶體位址,該判定包含: 針對該N維張量之每一維度判定(i)用於該維度之該當前索引值及(ii)用於該維度之該乘數值之一積(product);且 基於該N維張量之每一維度之該積之一總和判定該特定元素之該記憶體位址;及 輸出指示經判定之該記憶體位址之資料至一處理單元,該處理單元經組態以使用經判定之該記憶體位址以存取該N維張量之該特定元素。
- 如請求項8之系統,其中該硬體電路判定該特定元素儲存於記憶體中之該記憶體位址以回應於接收判定用於該特定元素之該記憶體位址之一指令。
- 如請求項8之系統,其中基於該N維張量之每一維度之該積之該總和判定該特定元素之該記憶體位址包括將用於每一維度之該積之該總和與一基底記憶體位址值相加。
- 如請求項8之系統,其進一步包括用於該N維張量之每一維度之一個別張量界限元素,每一張量界限元素包含經組態以儲存用於用以遍歷該維度之該迴圈之一迴圈界限之硬體儲存電路。
- 如請求項8之系統,其中輸出指示經判定之該記憶體位址之資料至該處理單元包括基於用於該N維張量之每一元素之該迴圈之反覆,依序輸出用於該N維張量之每一元素之一個別記憶體位址。
- 如請求項8之系統,其中: 該等張量索引元素被配置成張量索引元素之M個群組,M係大於1之一正整數;及 張量索引元素之每一群組被指派至一截然不同之多維張量。
- 如請求項8之系統,其中用於該等維度之至少一者之該乘數值係基於該等迴圈之至少一者之數個反覆。
- 一種由用於判定一N維張量之元素之記憶體位址之一或多個資料處理設備執行之方法,該方法包括: 藉由該資料處理設備之一或多個硬體處理器,獲得由複數個張量索引元素之每一者儲存之一當前索引值,對於該N維張量之每一維度,該複數個張量索引元素包含一對應張量索引元素,每一張量索引元素包括經組態以儲存用於該對應維度之一索引值之硬體儲存電路,其中在用於遍歷該對應維度之迴圈之每一反覆之後調整該索引值,其中該N維張量具有跨越該N個維度中之每一者配置之多個元素,且其中N係等於或大於2之一整數; 藉由該一或多個硬體處理器及使用由每一張量索引元素儲存之該當前索引值與由複數個維度乘數元素之每一者儲存之一乘數值,判定一特定元素儲存於記憶體中之一記憶體位址,每一維度乘數元素包含經組態以儲存用於該N維張量之一對應維度之一乘數值之硬體儲存電路,其中該乘數值係對用於遍歷該對應維度之該迴圈之每一反覆維持常數之一常數值,該判定包含: 用於該維度之一索引值,其中在用於遍歷該維度之迴圈之每一反覆之後調整該索引值; 一維度乘數元素,其包含經組態以儲存用於該維度之一乘數值之硬體儲存電路,其中該乘數值係對用於遍歷該維度之該迴圈之每一反覆維持常數之一常數值;及 硬體電路,其經組態以: 獲得由每一張量索引元素儲存之一當前索引值; 使用由每一張量索引元素儲存之該當前索引值及由每一維度乘數元素儲存之該乘數值,判定一特定元素儲存於記憶體中之一記憶體位址,該判定包含: 針對該N維張量之每一維度判定(i)用於該維度之該當前索引值及(ii)用於該維度之該乘數值之一積(product);且 基於該N維張量之每一維度之該積之一總和判定該特定元素之該記憶體位址;及 輸出指示經判定之該記憶體位址之資料至一處理單元,該處理單元經組態以使用經判定之該記憶體位址存取該N維張量之該特定元素。
- 如請求項15之方法,其中該一或多個資料處理設備判定該特定元素儲存於記憶體中之該記憶體位址以回應於接收判定用於該特定元素之該記憶體位址之一指令。
- 如請求項15之方法,其中基於該N維張量之每一維度之該積之該總和判定該特定元素之該記憶體位址包括將用於每一維度之該積之該總和與一基底記憶體位址值相加。
- 如請求項15之方法,其中輸出指示經判定之該記憶體位址之資料至該處理單元包括基於用於該N維張量之每一元素之該迴圈之反覆,依序輸出用於該N維張量之每一元素之一個別記憶體位址。
- 如請求項15之方法,其中: 該等張量索引元素被配置成張量索引元素之M個群組,M係大於1之一正整數;及 張量索引元素之每一群組被指派至一截然不同之多維張量。
- 如請求項15之方法,其中用於該等維度之至少一者之該乘數值係基於該等迴圈之至少一者之數個反覆。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/014,265 | 2016-02-03 | ||
US15/014,265 US9875104B2 (en) | 2016-02-03 | 2016-02-03 | Accessing data in multi-dimensional tensors |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202014897A TW202014897A (zh) | 2020-04-16 |
TWI700587B true TWI700587B (zh) | 2020-08-01 |
Family
ID=57860636
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105144084A TWI635390B (zh) | 2016-02-03 | 2016-12-30 | 存取多維張量中之資料 |
TW107126366A TWI681291B (zh) | 2016-02-03 | 2016-12-30 | 存取多維張量中之資料 |
TW108144554A TWI700587B (zh) | 2016-02-03 | 2016-12-30 | 存取多維張量中之資料 |
TW109123874A TWI772842B (zh) | 2016-02-03 | 2016-12-30 | 用於判定一n維張量之元素之記憶體位址之設備、系統、及方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105144084A TWI635390B (zh) | 2016-02-03 | 2016-12-30 | 存取多維張量中之資料 |
TW107126366A TWI681291B (zh) | 2016-02-03 | 2016-12-30 | 存取多維張量中之資料 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109123874A TWI772842B (zh) | 2016-02-03 | 2016-12-30 | 用於判定一n維張量之元素之記憶體位址之設備、系統、及方法 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9875104B2 (zh) |
EP (1) | EP3226121A3 (zh) |
JP (3) | JP6896415B2 (zh) |
KR (4) | KR101924500B1 (zh) |
CN (2) | CN107038018B (zh) |
SG (2) | SG10202104454YA (zh) |
TW (4) | TWI635390B (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256480B2 (en) * | 2012-07-25 | 2016-02-09 | Mobileye Vision Technologies Ltd. | Computer architecture with a hardware accumulator reset |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US9959498B1 (en) * | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
EP4137940A1 (en) | 2017-03-20 | 2023-02-22 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
US10684955B2 (en) | 2017-04-21 | 2020-06-16 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations |
US10248908B2 (en) | 2017-06-19 | 2019-04-02 | Google Llc | Alternative loop limits for accessing data in multi-dimensional tensors |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
GB2567038B (en) * | 2017-07-31 | 2019-09-25 | Google Llc | Accessing prologue and epilogue data |
US10108538B1 (en) | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
GB2568776B (en) | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11620490B2 (en) * | 2017-10-17 | 2023-04-04 | Xilinx, Inc. | Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions |
KR102027034B1 (ko) * | 2017-11-24 | 2019-09-30 | 서울대학교산학협력단 | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
WO2019113007A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
US10956315B2 (en) * | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
CN109255438B (zh) * | 2018-09-17 | 2020-07-17 | 地平线(上海)人工智能技术有限公司 | 调整张量数据的方法和装置 |
CN117785441A (zh) * | 2018-12-06 | 2024-03-29 | 华为技术有限公司 | 处理数据的方法和数据处理装置 |
CN111324294B (zh) * | 2018-12-17 | 2023-11-07 | 地平线(上海)人工智能技术有限公司 | 存取张量数据的方法和装置 |
CN109857744B (zh) * | 2019-02-13 | 2020-03-20 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
CN111723917B (zh) * | 2019-03-21 | 2022-11-01 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN112257857B (zh) * | 2019-07-22 | 2024-06-04 | 中科寒武纪科技股份有限公司 | 张量处理方法及相关产品 |
CN110209503B (zh) * | 2019-08-01 | 2019-10-25 | 上海燧原智能科技有限公司 | 多维张量的规约计算方法、装置、设备及介质 |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
WO2021248433A1 (en) * | 2020-06-12 | 2021-12-16 | Moffett Technologies Co., Limited | Method and system for dual-sparse convolution processing and parallelization |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
CN111737007B (zh) * | 2020-07-24 | 2021-06-18 | 北京一流科技有限公司 | 数据对象的分频处理***及其方法 |
US11954580B2 (en) * | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
CN113836049B (zh) * | 2021-09-17 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 存储器访问方法和电子装置 |
CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
US11868329B2 (en) | 2022-05-20 | 2024-01-09 | International Business Machines Corporation | Multidimensional cube multivariate regression |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
US20040034754A1 (en) * | 2002-08-19 | 2004-02-19 | Schreiber Robert S. | Method and system for memory management optimization |
US20040088529A1 (en) * | 2002-10-31 | 2004-05-06 | Schreiber Robert S. | Method and system for the design of pipelines of processors |
US20040093550A1 (en) * | 2002-11-12 | 2004-05-13 | Andrew Kadatch | Matrix multiplication in a Galois field for forward error correction |
US20040187102A1 (en) * | 2003-03-21 | 2004-09-23 | Garthwaite Alexander T. | Combining write-barriers within an inner loop with fixed step |
US20080301697A1 (en) * | 2006-10-06 | 2008-12-04 | Southgate Timothy J | Multiple task management between processors |
US20100122066A1 (en) * | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58114245A (ja) * | 1981-12-28 | 1983-07-07 | Fujitsu Ltd | インデツクス・インクリメントのベクトル化方式 |
JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
GB2359641B (en) | 2000-02-25 | 2002-02-13 | Siroyan Ltd | Mapping circuitry and method |
EP1261914B1 (en) * | 2000-03-08 | 2005-12-07 | Sun Microsystems, Inc. | Processing architecture having an array bounds check capability |
WO2001090888A1 (en) * | 2000-05-23 | 2001-11-29 | Theis Jean Paul | A data processing system having an address generation unit with hardwired multidimensional memory indexing support |
US6647484B1 (en) * | 2000-09-19 | 2003-11-11 | 3 Dsp Corporation | Transpose address mode in general purpose DSP processor |
JP2003244190A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
CN1259617C (zh) * | 2003-09-09 | 2006-06-14 | 大唐微电子技术有限公司 | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 |
CN100520714C (zh) | 2005-01-25 | 2009-07-29 | Nxp股份有限公司 | 多线程处理器 |
US8806183B1 (en) | 2006-02-01 | 2014-08-12 | Ixys Ch Gmbh | Blank bit and processor instructions employing the blank bit |
US8904155B2 (en) | 2006-03-17 | 2014-12-02 | Qualcomm Incorporated | Representing loop branches in a branch history register with multiple bits |
EP2009544B1 (en) * | 2007-06-26 | 2010-04-07 | Telefonaktiebolaget LM Ericsson (publ) | Data-processing unit for nested-loop instructions |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
CA2684226A1 (en) | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
US20130185538A1 (en) * | 2011-07-14 | 2013-07-18 | Texas Instruments Incorporated | Processor with inter-processing path communication |
CN107908427B (zh) * | 2011-12-23 | 2021-11-09 | 英特尔公司 | 用于多维数组中的元素偏移量计算的指令 |
US20140181171A1 (en) | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
CN103440513B (zh) * | 2013-09-17 | 2017-01-18 | 西安电子科技大学 | 基于稀疏非负张量分解的大脑特定视觉认知状态判定方法 |
US8817026B1 (en) | 2014-02-13 | 2014-08-26 | Raycast Systems, Inc. | Computer hardware architecture and data structures for a ray traversal unit to support incoherent ray traversal |
CN105260322B (zh) * | 2014-06-30 | 2020-09-01 | 中兴通讯股份有限公司 | 一种对循环缓冲区消除循环移位的方法和装置 |
US11170294B2 (en) | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
CA2990709C (en) | 2016-05-26 | 2018-09-04 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
-
2016
- 2016-02-03 US US15/014,265 patent/US9875104B2/en active Active
- 2016-12-26 JP JP2016250976A patent/JP6896415B2/ja active Active
- 2016-12-28 SG SG10202104454YA patent/SG10202104454YA/en unknown
- 2016-12-28 SG SG10201610917TA patent/SG10201610917TA/en unknown
- 2016-12-29 KR KR1020160182981A patent/KR101924500B1/ko active IP Right Grant
- 2016-12-30 TW TW105144084A patent/TWI635390B/zh active
- 2016-12-30 EP EP16207511.3A patent/EP3226121A3/en active Pending
- 2016-12-30 TW TW107126366A patent/TWI681291B/zh active
- 2016-12-30 TW TW108144554A patent/TWI700587B/zh active
- 2016-12-30 TW TW109123874A patent/TWI772842B/zh active
-
2017
- 2017-01-13 CN CN201710025689.7A patent/CN107038018B/zh active Active
- 2017-01-13 CN CN201910630145.2A patent/CN110457069B/zh active Active
- 2017-03-13 US US15/456,812 patent/US9875100B2/en active Active
- 2017-12-15 US US15/844,192 patent/US10228947B2/en active Active
-
2018
- 2018-11-20 KR KR1020180143824A patent/KR102472424B1/ko active IP Right Grant
-
2019
- 2019-03-11 US US16/298,535 patent/US10838724B2/en active Active
-
2021
- 2021-06-09 JP JP2021096509A patent/JP7225314B2/ja active Active
-
2022
- 2022-11-24 KR KR1020220159111A patent/KR102596365B1/ko active IP Right Grant
-
2023
- 2023-02-08 JP JP2023017754A patent/JP7507271B2/ja active Active
- 2023-10-26 KR KR1020230144479A patent/KR20230153972A/ko not_active Application Discontinuation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
US20040034754A1 (en) * | 2002-08-19 | 2004-02-19 | Schreiber Robert S. | Method and system for memory management optimization |
US20040088529A1 (en) * | 2002-10-31 | 2004-05-06 | Schreiber Robert S. | Method and system for the design of pipelines of processors |
US20040093550A1 (en) * | 2002-11-12 | 2004-05-13 | Andrew Kadatch | Matrix multiplication in a Galois field for forward error correction |
US20040187102A1 (en) * | 2003-03-21 | 2004-09-23 | Garthwaite Alexander T. | Combining write-barriers within an inner loop with fixed step |
US20080301697A1 (en) * | 2006-10-06 | 2008-12-04 | Southgate Timothy J | Multiple task management between processors |
US20100122066A1 (en) * | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI700587B (zh) | 存取多維張量中之資料 | |
US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
TWI720566B (zh) | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 | |
TWI740274B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
GB2567038B (en) | Accessing prologue and epilogue data | |
BR102016030825B1 (pt) | Equipamento e método implementado em computador para processar uma instrução para acessar um tensor n-dimensional | |
BR122023003223B1 (pt) | Equipamento para processar uma instrução para processar um laço encaixado e método implementado em computador |