TW201908977A - 使用一特殊目的計算單元之硬體雙緩衝 - Google Patents

使用一特殊目的計算單元之硬體雙緩衝 Download PDF

Info

Publication number
TW201908977A
TW201908977A TW107123234A TW107123234A TW201908977A TW 201908977 A TW201908977 A TW 201908977A TW 107123234 A TW107123234 A TW 107123234A TW 107123234 A TW107123234 A TW 107123234A TW 201908977 A TW201908977 A TW 201908977A
Authority
TW
Taiwan
Prior art keywords
memory
value
buffer
data elements
group
Prior art date
Application number
TW107123234A
Other languages
English (en)
Other versions
TWI671633B (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 TW201908977A publication Critical patent/TW201908977A/zh
Application granted granted Critical
Publication of TWI671633B publication Critical patent/TWI671633B/zh

Links

Classifications

    • 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
    • G06F3/0656Data buffering arrangements
    • 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/0215Addressing or allocation; Relocation with look ahead addressing 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/10Address translation
    • 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/061Improving I/O performance
    • 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/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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

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)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Neurology (AREA)
  • Image Input (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Abstract

本發明揭示方法、系統及設備,包含一種用於使用多個緩衝器傳送資料之設備,該設備包含多個記憶體及一或多個處理單元,該一或多個處理單元經組態以判定儲存於一第一資料儲存位置中之資料元素之一序列之緩衝記憶體位址,該等資料元素被傳送至一第二資料儲存位置。針對該序列中之該等資料元素中之一或多者之每一群組,識別一緩衝器指派元素之一值,該值可在各自與該等記憶體中之一不同者對應之多個值之間進行切換。基於該緩衝器指派元素之該值而判定一或多個資料元素之該群組之一緩衝記憶體位址。在判定資料元素之該序列中之一或多個資料元素之一後續群組之該緩衝記憶體位址之前切換該緩衝器指派元素之該值。

Description

使用一特殊目的計算單元之硬體雙緩衝
本說明書一般而言係關於使用一特殊目的計算單元與硬體雙緩衝器來執行機器學習計算。
神經網路係採用模型之一或多個層來針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除了一外層之外,某些神經網路亦包含一或多個隱蔽層。每一隱蔽層之輸出用作去往網路中之下一層(亦即,網路之下一隱蔽層或輸出層)之輸入。網路之每一層根據一組各別參數之當前值而自一所接收輸入產生一輸出。
某些神經網路包含一或多個迴旋神經網路層。每一迴旋神經網路層具有一組相關聯核心。核心可被表示為權重輸入之一矩陣結構。每一迴旋層使用核心來處理去往層之輸入。去往層之一組輸入亦可被表示為一矩陣結構。
本說明書闡述關於使用一特殊目的計算單元來對一N維張量之資料進行雙緩衝之技術。
一般而言,本說明書中所闡述之標的物之一項創新態樣可體現於一種用於傳送資料之設備中。該設備可包含多個記憶體,該多個記憶體包含至少一第一記憶體及一第二記憶體。該設備亦可包含一或多個處理單元。該一或多個處理單元可經組態以判定儲存於一第一資料儲存位置中之資料元素之一序列之緩衝記憶體位址,該等資料元素被傳送至一第二資料儲存位置。針對該序列中之該等資料元素中之一或多者之每一群組,該一或多個處理單元可識別一緩衝器指派元素之一值,該值可在各自與記憶體中之一不同者對應之多個值之間進行切換。該一或多個處理單元可基於該緩衝器指派元素之該值而判定一或多個資料元素之該群組之一緩衝記憶體位址。當該緩衝器指派元素之該值係對應於該第一記憶體之一第一值時,該一或多個處理單元可藉由基於該第一記憶體之一基底位址與一或多個資料元素之該群組之一記憶體位移值之一組合判定一或多個資料元素之該群組之該緩衝記憶體位址而將一或多個資料元素之該群組指派給該第一記憶體。當該緩衝器指派元素之該值係不同於該第一值且對應於該第二記憶體的一第二值時,該一或多個處理單元可藉由基於該第一記憶體之該基底位址、該第二記憶體之記憶體位址位移值與一或多個資料元素之該群組之該記憶體位移值之一組合判定一或多個資料元素之該群組之該記憶體位址而將該資料元素指派給該第二記憶體,以將一或多個資料元素之該群組指派給該第二記憶體。該一或多個處理單元可在判定資料元素之該序列中之一或多個資料元素之一後續群組之該緩衝記憶體位址之前切換該緩衝器指派元素之該值。該一或多個處理單元可使用一或多個資料元素之每一群組之該所判定緩衝記憶體位址將每一資料元素傳送至該第一記憶體或該第二記憶體之一各別記憶體位置。
此等及其他實施方案可各自視情況包含以下特徵中之一或多者。在某些態樣中,該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器。該第一資料儲存位置及該第二資料儲存位置可各自包含大於該第一資料儲存容量之至少一第二資料儲存容量。
在某些態樣中,該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器。資料元素之該序列可包含超過該第一資料儲存容量之一資料量。
在某些態樣中,基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址可包含:基於用於反覆遍及資料元素之該序列之一或多個迴圈之若干次反覆而判定一或多個資料元素之該群組之該記憶體位移值。
在某些態樣中,基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址可包含:每當該緩衝器指派元素之該值係該第二值時,將(i)該第一記憶體之該基底位址、(ii)該第二記憶體之該記憶體位址位移值與(iii)一或多個資料元素之該群組之該記憶體位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址。每當該緩衝器指派元素之該值係該第一值時,可獨立於該第二記憶體之記憶體位址值而基於(i)該第一記憶體之該基底位址與(ii)一或多個資料元素之該群組之該位移值之一總和判定一或多個資料元素之該群組之該緩衝記憶體位址。
在某些態樣中,一或多個資料元素之該群組之該記憶體位移值係基於針對N維張量之每一維度之一迴圈之若干次反覆。該第二記憶體之該記憶體位址位移值可為基於該第二記憶體之第一記憶體位址之一記憶體位址之間的一差異。
本說明書中所闡述之標的物可實施於特定實施例中,以便實現以下優點中之一或多者。使用多個記憶體允許對超過一單個緩衝器之儲存容量之資料進行較快且較高效傳送。舉例而言,若8兆位元組(MB)之資料將自一第一資料儲存位置被傳送至一第二資料儲存位置且一緩衝器之容量僅係4 MB,則可在兩個4 MB緩衝器之間分裂資料。藉由使用巢套迴圈來判定多個緩衝器之記憶體位址,可減少用於判定位址之指令之數目,從而產生較密集編碼、使用較少記憶體資源及/或需要較少記憶體資源。使用在每一緩衝記憶體位址判定之後在若干值之間進行切換之一緩衝器指派元素(例如,一1位雙態切換計數器)允許較快緩衝器指派及經減少指令計數以將資料指派給多個緩衝器。另外,切換緩衝器指派元素之值而非在將資料指派給一第二緩衝器之前判定一第一緩衝器是否係滿的允許較快處理及對一處理器之較少計算要求。指令之減少亦產生較高效能,此乃因處理單元處理較少指令來判定記憶體位址。以一特殊目的硬體單元來編碼一雙緩衝器指令減少了一處理器原本將執行以將資料指派給緩衝器之計算循環之數目且因此增加了用於其他計算任務之處理器頻寬。
此態樣及其他態樣之其他實施方案包含對應系統、設備及編碼於電腦儲存裝置上之經組態以執行方法之動作之電腦程式。一或多個電腦之一系統可藉助於安裝於系統上之軟體、韌體、硬體或其一組合而被如此組態,該等軟體、韌體、硬體或其一組合在操作中致使該系統執行動作。一或多個電腦程式可藉助於具有在由資料處理設備執行時致使該設備執行動作之指令而被如此組態。
在隨附圖式及下文之說明中陳述本說明書中所闡述之標的物之一或多個實施方案之細節。依據說明、圖式及申請專利範圍將明瞭標的物之其他可能特徵、態樣及優點。
一般而言,當一軟體演算法處理一N維張量時,可使用一巢套迴圈。每一迴圈可負責遍歷N維張量之一各別維度。一多維張量可為一矩陣或一多維矩陣。舉例而言,一2維張量係一矩陣,而一3維張量係由多個二維矩陣組成之一個三維矩陣。N維張量之每一維度可包含一或多個元素,其中每一元素可儲存一各別資料值。舉例而言,一張量可為一程式中之一變量,其中該變量可具有三個維度。第一維度可具有三百個元素之一長度、第二維度可具有一千個元素之一長度且第三維度可具有二十個元素之一長度。當然,每一維度中具有其他數目個元素係可能的。
在一巢套迴圈中遍歷張量可包含對一元素之一記憶體位址值進行一計算以載入或儲存元素之對應資料值。一for迴圈(for-loop)係一巢套迴圈之一實例,其中由三個迴圈索引變量(例如,i、j及k)追蹤之三個迴圈可經巢套以遍歷通過一個三維張量。在一神經網路中,一元素之一值可用於與張量相關聯之一或多個點積計算中。舉例而言,可將元素之值乘以一對應參數或權重。可使用巢套for迴圈來按次序遍歷張量之元素以存取元素且使用元素之值執行一或多個計算。繼續三維張量實例,一外for迴圈可用於遍歷由變量i追蹤之迴圈、一中間for迴圈可用於遍歷由變量j追蹤之迴圈且一內for迴圈可用於遍歷由變量k追蹤之迴圈。在此實例中,所存取之第一元素可為(i=0, j=0, k=0),第二元素可為(i=0, j=0, k=1),以此類推。
如下文所闡述,一張量遍歷單元可用於使用巢套迴圈來按次序判定每一元素之記憶體位址,使得一處理單元可存取元素之值且使用元素之值執行一或多個計算。亦可使用巢套for迴圈來類似地存取權重或參數之值。張量遍歷單元亦可用於判定用於計算中之權重或參數及/或該等計算之輸出之位址,該等輸出可用作去往神經網路之一隱蔽層之輸入。
本文中所闡述之技術允許迴圈巢套經編碼以使用雙緩衝來產生並消耗資料。舉例而言,可使用雙緩衝技術將儲存於張量元素中之資料自一個資料儲存位置傳送至另一資料儲存位置。在一神經網路實例中,被判定為一個隱蔽層之一輸出之啟動可作為輸入被提供至另一隱蔽層且因此可自一輸出位置(亦即,其中儲存神經網路層之輸出之一記憶體位置)被傳送至一輸入位置(亦即,其中儲存去往神經網路層之輸入之一記憶體位置)。在另一實例中,表示一計算之輸出之資料可自一暫時記憶體位置被傳送至一較永久記憶體位置。在此等實例中之每一者中,可使用雙緩衝來較快地傳送資料且可使資料較快地準備好進行後續處理。
緩衝可用於在一神經網路計算被執行之前收集用於該計算之資料。舉例而言,去往一神經網路層之輸入可儲存於一特定位置中以供由執行計算之一處理器擷取。儘管儲存於特定位置中之資料用於執行神經網路計算,但用於下一機器學習計算之資料可被移動至緩衝器中。當已完成先前神經網路計算時,儲存於緩衝器中之資料可被移動至特定位置以供由處理器擷取。
一迴圈巢套中之一或多個迴圈可用於計算張量元素之緩衝記憶體位址,使用雙緩衝器來產生或消耗該等張量元素之資料。當待傳送之資料量大於一單個緩衝器之儲存容量時,可使用多個緩衝器。舉例而言,若被傳送之資料量係一單個緩衝器之儲存容量之兩倍,則可在兩個緩衝器之間分裂資料。在此實例中,在傳送至第二資料儲存位置之前,可將資料之一第一部分傳送至一第一緩衝器且可將資料之一第二部分傳送至一第二緩衝器。以此方式,所有資料可在被傳送至第二資料儲存位置之前被緩衝。
作為一實例,一個三維張量之元素可表示由一神經網路進行分類之一影像之特徵。一第一維度(Z)可表示影像之寬度、第二維度(Y)可表示影像之高度且第三維度(X)可表示影像中之像素之RGB值。為對影像進行分類,可將每一RGB值乘以一迴旋層之一篩選值以產生一啟動圖。
一巢套迴圈可用於判定記憶體位址以用於存取張量之每一RGB值。巢套迴圈可包含用於張量之每一維度之一迴圈。舉例而言,一外迴圈(z)可用於遍歷Z維度(影像之寬度)、一中間迴圈(y)可用於遍歷Y維度(影像之高度)且一內迴圈(x)可用於遍歷X維度(每一像素之三個RGB值)。在內迴圈之每一反覆處,針對由外迴圈z及中間迴圈y之值表示的影像之一特定像素之三個RGB值中之一者而判定一記憶體位址。舉例而言,可在當z=0且y=0時之內迴圈x之第一反覆(例如,z=0;y=0;x=0)期間判定針對由Z=0及Y=0表示之影像之像素之R值的記憶體位址。類似地,可在當z=5且y=2時之內迴圈x之第三反覆(例如,z=5;y=2;x=2)期間判定針對由Z=5及Y=2表示之影像之像素之G值的記憶體位址。若影像之每一像素之三個RGB值超過一緩衝器之容量,則可在兩個或兩個以上緩衝器之間分裂表示影像之每一像素之三個RGB值之資料。
為使用巢套迴圈來判定多個緩衝器之緩衝記憶體位址,可在用於判定緩衝記憶體位址之一迴圈之每一反覆之後(或之前)切換一緩衝器指派元素之一值。舉例而言,若使用兩個緩衝器且在該兩個緩衝器之間分裂資料,則可使緩衝器指派值在兩個值之間進行切換。緩衝器指派元素之一第一值(例如,0)可用於將一資料元素(或資料元素之一群組)指派給一第一緩衝器且緩衝器指派元素之一第二值(例如,1)可用於將一資料元素(或資料元素之一群組)指派給第二緩衝器。當緩衝器指派元素之值係針對迴圈之一反覆之第一值時,可將與迴圈之此反覆對應之資料元素指派給第一緩衝器之一緩衝記憶體位址。類似地,當緩衝器指派元素之值係針對迴圈之一反覆之第二值時,可將與迴圈之此反覆對應之資料元素指派給第二緩衝器之一緩衝記憶體位址。若使用三個或三個以上緩衝器,則緩衝器指派元素可具有三個或三個以上值,例如,每一緩衝器一值。
圖1係一實例性計算系統100之一方塊圖。一般而言,計算系統100處理一輸入104以產生一輸出116。計算系統100可經組態以執行線性代數計算、神經網路計算及其他計算。輸入104可為可由計算系統100處理之任何適合資料。計算系統100包含一處理單元102、一或多個儲存媒體104及一張量遍歷單元106。
處理單元114可包含一或多個處理器及/或一或多個有限狀態機(FSM)。處理單元114之一處理器可執行用於存取一張量之一特定元素之一指令。當處理器處理此一指令時,張量遍歷單元106判定張量之特定元素之記憶體位址,使得處理單元可存取儲存媒體104以讀取表示特定元素之值之資料。
針對包含一FSM之處理單元,FSM可自張量遍歷單元106查詢張量元素之記憶體位址。在某些實施方案中,FSM 108連續查詢張量遍歷單元106以獲得張量之特定元素之位址值。FSM可然後將所接收位址值提供至處理單元102之一處理器,使得處理器可存取儲存媒體104以讀取表示特定元素之值之資料。
舉例而言,一程式可包含一巢套迴圈且處理單元102可根據與巢套迴圈相關聯之當前索引變量值而執行一指令以存取巢套迴圈內之一個二維陣列變量之一元素。基於與巢套迴圈相關聯之當前索引變量值,張量遍歷單元106可判定一位址位移值,該位址位移值表示針對二維陣列變量之一第一元素之自一記憶體位址之一位移。處理單元102可然後使用位址位移值且自儲存媒體104存取二維陣列變量之特定元素。
儲存媒體104儲存計算系統100內之資訊。在某些實施方案中,儲存媒體104係一或若干揮發性記憶體單元。在某些其他實施方案中,儲存媒體104係一或若干非揮發性記憶體單元。儲存媒體104亦可為另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或者裝置之一陣列,包含一儲存區域網路或其他組態中之裝置。指令在由處理單元102執行時致使處理單元102執行一或多個任務。
一般而言,張量遍歷單元106判定與一或多個張量相關聯之一狀態。在某些實施方案中,狀態可包含迴圈界限值、當前迴圈索引變量值、用於判定一記憶體位址值之部分位址位移值及/或用於處置分支迴圈界限之程式計數器值。張量遍歷單元106可被實施為一特殊應用積體電路。
張量遍歷單元106可將張量索引轉譯成記憶體位址。舉例而言,張量遍歷單元106可將一組N維張量索引轉譯成一個一維位址空間。張量遍歷單元106可藉由使一張量元素之記憶體位址成為元素之維度索引之一組合(例如,一線性組合)而執行此等轉譯。
張量遍歷單元106可包含一或多個張量狀態元件122及一數學單元124。張量狀態元件122中之每一者可為一儲存元件,舉例而言一暫存器或任何適合儲存電路。張量狀態元件122可包含下文所闡述之一緩衝器指派元素。數學單元124可包含一或多個算術邏輯單元(ALU)及/或一或多個硬體加法器。數學單元124可用於(例如)基於儲存於張量狀態元件中之值而計算張量元素之一記憶體位址或記憶體位址位移值。用於使用一張量遍歷單元判定記憶體位址之實例性技術闡述於標題為「Neural Network Compute Tile」且於2016年10月27日提出申請之美國專利申請案第15/335,769號以及標題為「Accessing Data in Multi-Dimensional Tensors」且於2016年2月3日提出申請之美國專利申請案第15/014,265號中,該等美國專利申請案之全部內容以引用之方式併入本文中。
張量遍歷單元106亦可經組態以判定暫時記憶體位置(例如,緩衝器)之記憶體位址,以用於將資料自一個資料儲存位置傳送至另一資料儲存位置。舉例而言,儲存媒體104可包含多個資料儲存位置,包含儲存位置A 112及儲存位置B 114。每一儲存位置可為一共同記憶體單元或不同記憶體單元之記憶體位址之一範圍。儲存媒體104亦可包含多個暫時記憶體,包含緩衝器A 116及緩衝器B 118。處理單元102可在將資料傳送至一第二資料儲存位置(例如,儲存位置B 114)之前將資料自一第一資料儲存位置(例如,儲存位置A 112)傳送至一或多個緩衝器(例如,緩衝器A 116及/或緩衝器B 118)。
張量遍歷單元106可判定張量元素之緩衝記憶體位址,使用緩衝器(例如,雙緩衝器)來產生或消耗該等張量元素之資料。舉例而言,張量遍歷單元106可使用張量之一基底緩衝記憶體位址以及基於張量元素之張量索引之每一張量元素之一位址位移將張量索引轉譯成緩衝記憶體位址,此類似於標題為「Accessing Data in Multi-Dimensional Tensors」且於2016年2月3日提出申請之美國專利申請案第15/014,265號中所闡述之技術。
舉例而言,如美國專利申請案第15/014,265號中所闡述,張量狀態元件122可包含張量索引元素之一群組、張量界限元素之一群組及維度乘數元素之一群組。每一元素群組可被配置為具有M個列及N個行之一2D陣列。一群組之每一列可表示一張量之張量索引資訊。一群組之每一行可表示與一張量相關聯之巢套迴圈索引變量值之資訊(例如,張量索引值、張量界限值或維度乘數值)。舉例而言,張量索引元素之2D陣列中之一個行可表示變量i之張量索引資訊、一個行可表示變量i之張量索引資訊且一個行可表示變量k之張量索引資訊。
每一張量索引元素可追蹤巢套迴圈中之一迴圈之一巢套迴圈變量。舉例而言,一個張量索引元素可經指派以追蹤巢套迴圈索引變量i、一個張量索引元素可經指派以追蹤巢套迴圈索引變量j且一個張量索引元素可經指派以追蹤巢套迴圈索引變量k。每一張量界限元素在張量索引元素中具有一對應元素。每一張量界限元素可表示與張量相關聯之巢套迴圈索引變量值之張量界限資訊。舉例而言,一個張量界限元素可表示巢套迴圈索引變量i之張量界限資訊、一個張量界限元素可表示巢套迴圈索引變量j之張量界限資訊且一個張量界限元素可表示巢套迴圈索引變量k之張量界限資訊。
每一維度乘數元素可表示張量索引元素中之一對應元素所乘以的一乘數。為判定一元素之一記憶體位址,張量遍歷單元106可藉由將巢套迴圈索引變量之儲存於張量索引元素中之值乘以巢套迴圈索引變量之乘數而判定每一巢套迴圈索引變量之一記憶體位址位移。張量遍歷單元106可然後將所有相乘之積一起求和以判定與被存取之元素對應之記憶體位址。
張量遍歷單元106可在巢套迴圈之內迴圈之每一反覆之後更新張量索引元素。針對內迴圈之每一反覆,張量遍歷單元106可(例如)藉由遞增內迴圈之張量索引元素而更新迴圈之張量索引元素。若內迴圈之經更新張量索引元素等於儲存於內迴圈之張量界限元素中之值,則張量索引元素可被重設且內迴圈巢套於其中之下一外迴圈之張量索引元素可被更新。張量遍歷單元120可然後藉由將張量索引元素乘以其對應乘數且對積進行求和而判定與內迴圈之此反覆對應之下一元素之記憶體位址,如上文所闡述。
當使用兩個或兩個以上緩衝器來傳送資料時,張量遍歷單元106亦可使用一緩衝器指派元素來將每一張量元素或張量元素之群組指派給緩衝器中之一者。在某些實施方案中,當緩衝器指派元素之值係1值時,張量遍歷單元106可藉由將一額外位移加至緩衝記憶體位址而將一或多個張量元素之一群組指派給緩衝器中之一者且當緩衝器指派元素係一不同值時,該張量遍歷單元藉由不將額外位移值加至緩衝記憶體位址而將一或多個張量元素之一群組指派給一不同緩衝器。
舉例而言,一基底記憶體位址可對應於一第一緩衝器之第一記憶體位址。一第二緩衝器之第一記憶體位址可自基底記憶體位址位移達特定數目個位址。在此實例中,為將一張量元素指派給第一緩衝器之一記憶體位址,張量遍歷單元106可將基底記憶體位址與張量元素之一記憶體位移值組合(例如,相加)。可基於用於遍歷張量之巢套迴圈之張量索引而判定張量元素之記憶體位移值,如標題為「Accessing Data in Multi-Dimensional Tensors」且於2016年2月3日提出申請之美國專利申請案第15/014,265號中所闡述。
為將一張量元素指派給第二緩衝器之一記憶體位址,張量遍歷單元106可將基底記憶體位址與張量元素之一記憶體位移值及第二緩衝器之一記憶體位址位移值(例如,第二緩衝器之第一記憶體位址自第一緩衝器之第一記憶體位址位移之特定數目個位址)組合(例如,相加)。
張量遍歷單元106可使用緩衝器指派元素之值來判定何時將一張量元素指派給第二緩衝器且因此藉由將第二緩衝器之記憶體位址位移值與基底記憶體位址及張量元素之記憶體位移值組合而判定張量元素之緩衝記憶體位址。舉例而言,當緩衝器指派元素之值係一第一值時,張量遍歷單元106可藉由不將記憶體位址位移值與基底記憶體位址及張量元素之記憶體位移值組合而將張量元素指派給第一緩衝器。當緩衝器指派元素之值係不同於第一值的一第二值時,張量遍歷單元106可藉由將記憶體位址位移值與基底記憶體位址及張量元素之記憶體位移值組合而將張量元素指派給第二緩衝器。
在某些實施方案中,張量遍歷單元106可(例如)使用巢套迴圈來判定一序列中之張量元素之一序列之緩衝記憶體位址。在此實例中,處理單元102可自張量遍歷單元106請求針對一特定迴圈之每一反覆(例如,一最內迴圈之每一反覆)之一或多個張量元素之一群組的一緩衝記憶體位址。張量遍歷單元106可基於迴圈索引而判定與迴圈之反覆對應之張量元素之一群組的記憶體位移值。張量遍歷單元106亦可基於緩衝器指派元素之值而判定是將張量元素之群組指派給第一緩衝器還是第二緩衝器(還是額外緩衝器,若存在兩個以上緩衝器的話),如上文所闡述。張量遍歷單元106可基於基底記憶體位址、張量元素之群組之記憶體位移值且取決於緩衝器指派元素之值、第二緩衝器之記憶體位移值而判定張量元素之群組之緩衝記憶體位址。
在判定序列中之張量元素之一群組之緩衝記憶體位址之後,張量遍歷單元可切換緩衝器指派元素之值。舉例而言,若存在兩個緩衝器,則張量遍歷單元106可在每一緩衝記憶體位址判定之後使該值在兩個值之間進行雙態切換。在此實例中,當緩衝器指派元素之值係0時,張量遍歷單元106可將張量元素之一群組指派給第一緩衝器且當緩衝器指派元素之值係1時,該張量遍歷單元將張量元素之一群組指派給第二緩衝器。針對一第一緩衝記憶體位址判定,緩衝器指派元素可具有一值0。在此實例中,張量遍歷單元106可將序列中之張量元素之第一群組指派給第一緩衝器。張量遍歷單元106可然後將緩衝器指派元素之值切換為1。因此,張量遍歷單元106可將序列中之張量元素之第二群組指派給第二緩衝器。張量遍歷單元106可繼續在每一緩衝記憶體位址判定之後切換值,使得將張量元素之每個其他群組指派給第一緩衝器。
在某些實施方案中,使用粗粒度雙態切換,使得針對每一緩衝記憶體位址判定將張量元素之一群組(例如,張量之一子張量)指派給一緩衝器。在某些實施方案中,使用細粒度雙態切換,使得在每一記憶體位址判定處將每一個別張量元素指派給一緩衝器。
考量一實例,其中張量遍歷單元具有兩個1千位元組(kB)緩衝器且將使用緩衝器傳送4 kB之資料。一實例性迴圈巢套可包含在兩個緩衝器之間進行交替之一外迴圈且可使用一內迴圈來識別將包含於當前緩衝器中之資料之每一部分。舉例而言,巢套迴圈可包含: for (i=0; i< 4, ++i) for (j=0; j=1024; ++j)
在此實例中,內迴圈「j」用於識別將包含於一緩衝器中之1 kB之資料且外迴圈「i」用於在兩個緩衝器之間進行切換。舉例而言,當「i」具有一奇數值時,可將1 kB資料元素群組指派給第一緩衝器。當「i」具有一偶數值時,可將1 kB之資料指派給第二緩衝器。因此,在此實例中,迴圈巢套基於「i」之值而在兩個緩衝器之間進行交替。
若存在兩個以上緩衝器,則張量遍歷單元106可使緩衝器指派元素在兩個以上不同值之間進行切換,例如,每一緩衝器一個唯一值。舉例而言,若存在三個緩衝器,則當緩衝器指派元素具有一第一值時,張量遍歷單元106可將張量元素之一群組指派給第一緩衝器;當緩衝器指派元素具有一第二值時,張量遍歷單元106可將張量元素之一群組指派給第二緩衝器;且當緩衝器指派元素具有一第三值時,張量遍歷單元106可將張量元素之一群組指派給第三緩衝器。
在另一實例中,可存在各自具有1 MB之一儲存容量之兩個緩衝器且可需要透過緩衝器而傳送3 MB之資料。在此實例中,可將第一1 MB指派給兩個緩衝器中之一第一者且可將一第二1 MB指派給兩個緩衝器中之一第二者。然後,在(例如)藉由一處理器而消耗第一1 MB之後,可將第三1 MB移動至第一緩衝器。
在某些實施方案中,張量遍歷單元106可獲得交替之緩衝器指派值之一序列而非在每一緩衝記憶體位址判定之後切換一緩衝器指派元素之值。舉例而言,交替之緩衝器指派值之序列可為交替之0及1之一序列。在每一記憶體位址判定之後,張量遍歷單元106可移動至序列中之下一值且基於下一值而將張量元素之群組指派給一適當緩衝器。
圖2圖解說明使用緩衝器傳送之實例性資料以及實例性緩衝器指派元素。在此實例中,資料元素(例如,張量元素)之八個群組之一序列使用兩個緩衝器自一第一資料儲存位置205被傳送至一第二資料儲存位置215。緩衝器指派值210之一序列用於將資料元素之每一群組指派給兩個緩衝器中之一者。舉例而言,若資料元素之群組在其序列中處於與具有一值0之一緩衝器指派元素相同之一位置,則將資料元素之群組指派給一第一緩衝器。若資料元素之群組在其序列中處於與具有一值1之一緩衝器指派元素相同之一位置,則將資料元素之群組指派給不同於第一緩衝器之一第二緩衝器。
因此,在此實例中,當第一、第三、第五及第七緩衝器指派值係0時,將資料元素群組「0」、「2」、「4」及「6」指派給第一緩衝器。類似地,當第二、第四、第六及第八緩衝器指派值係1時,將資料元素群組「1」、「3」、「5」及「7」指派給第二緩衝器。因此,可使用各自具有用以儲存資料元素之四個群組之一儲存容量之兩個緩衝器來對資料元素之八個群組進行緩衝。
圖3係圖解說明用於使用雙緩衝來傳送資料之一實例性程序300之一流程圖。程序300可由一或多個電腦之一系統(例如,圖1之計算系統110)執行。
系統識別針對使用一第一緩衝器及一第二緩衝器之雙緩衝指定之資料元素之一序列(302)。資料元素之序列可為針對雙緩衝指定之張量元素之一序列。張量元素可為一N維張量之一部分。舉例而言,可使用巢套迴圈來遍歷一張量,其中每一迴圈負責遍歷N維張量之一各別維度。
資料元素之序列可包含已針對雙緩衝指定之一特定維度之所有張量元素。舉例而言,包含巢套迴圈之一程式可包含將對應於特定維度之迴圈指定為將被雙緩衝之一迴圈之碼。在一特定三維張量實例中,可使用具有索引x、y及z之三個迴圈來遍歷張量。在此實例中,可使用具有索引z之一外迴圈來遍歷張量之一Z維度、可使用具有索引y之一中間迴圈來遍歷張量之一Y維度且可使用一內迴圈索引x來遍歷張量之一X維度。內迴圈可被指定用於雙緩衝以快速緩衝資料以用於一神經網路計算。
系統判定序列中之資料元素之每一群組之一緩衝記憶體位址(304)。每一群組可包含一或多個資料元素。舉例而言,若使用細粒度雙態切換,則每一群組可包含一個資料元素。若使用粗粒度雙態切換,則每一群組可包含多個資料元素,例如多達一指定量之記憶體或指定數目個資料元素。
在某些實施方案中,系統一次一個地判定緩衝記憶體位址。繼續先前實例,系統可針對內迴圈x之每一反覆判定一緩衝記憶體位址,此乃因內迴圈之每一反覆對應於針對雙緩衝指定之一特定張量元素。系統可使用組成操作306至314來判定資料元素之序列之緩衝記憶體位址。
系統針對資料元素之序列中之資料元素之一群組識別一緩衝器指派元素之一值(306)。在某些實施方案中,如上文所闡述,系統可在每一緩衝記憶體位址判定之後(例如,在針對雙緩衝指定之一迴圈之每一反覆之後)切換緩衝器指派元素之值。在此實例中,系統可識別緩衝器指派元素之一當前值作為針對此資料元素之緩衝器指派元素之值。緩衝器指派元素之值用於將資料元素之群組指派給一適當緩衝器。
系統基於緩衝器指派元素之值及第二緩衝器之一記憶體位址位移值而判定資料元素之群組之一緩衝記憶體位址位移值(308)。如上文所闡述,緩衝器之一基底記憶體位址可對應於一第一緩衝器之第一記憶體位址。一第二緩衝器之第一記憶體位址可自基底記憶體位址位移達特定數目個位址。第二緩衝器之記憶體位址位移值可等於特定數目個位址。
為判定資料元素之群組之緩衝記憶體位址位移值,系統判定緩衝器指派元素之值是一第一值還是一第二值(還是更多值,若存在兩個以上緩衝器的話)。若緩衝器指派元素係第一值,則系統可藉由在判定資料元素之群組之緩衝記憶體位址值時不使用第二緩衝器之記憶體位址位移值而將資料元素之群組指派給第一緩衝器。替代地,系統可使用資料元素之基於巢套迴圈之迴圈索引而判定之一記憶體位移值,如上文所闡述。
若緩衝器指派元素係第二值,則系統可藉由將資料元素之群組之記憶體位移值與第二緩衝器之記憶體位址位移值組合而將資料元素之群組指派給第二緩衝器。舉例而言,系統可將資料元素之群組之記憶體位移值與第二緩衝器之記憶體位址位移值之一總和判定為資料元素之群組之緩衝記憶體位址位移值。
在某些實施方案中,系統可藉由以下操作而計算資料元素之一群組之緩衝記憶體位址位移值:對緩衝器指派元素之值與一值1進行「及」運算且將結果乘以第二緩衝器之記憶體位址位移值並將此結果加到資料元素之群組之記憶體位移值。在此實例中,若緩衝器指派元素具有一值0,則資料元素之群組之緩衝記憶體位址位移值等於資料元素之群組之記憶體位移值。若緩衝器指派元素具有一值1,則資料元素之群組之緩衝記憶體位址位移值具有等於第二緩衝器之記憶體位址位移值加上資料元素之群組之記憶體位移值之一值。在某些實施方案中,可使用一1位雙態切換計數器來判定使用哪一緩衝器。
系統基於緩衝器之一基底位址及緩衝記憶體位址位移值而判定資料元素之群組之緩衝記憶體位址(310)。舉例而言,系統可藉由將緩衝器之基底位址(例如,第一緩衝器之第一記憶體位址)加至緩衝記憶體位址位移值而判定資料元素之群組之緩衝記憶體位址。
系統判定是否已針對序列中之每一資料元素判定一緩衝記憶體位址(312)。若否,則系統針對下一資料元素切換緩衝器指派元素之值。以此方式,下一資料元素將被指派給不同於當前資料元素之一緩衝器。
若已針對序列中之每一資料元素判定一緩衝記憶體位址,則系統基於所判定緩衝記憶體位址而將儲存於資料元素中之資料傳送至緩衝器(314)。資料可然後自緩衝器被傳送至一第二資料儲存位置,(例如)以供用於神經網路計算中。
本說明書中所闡述之標的物及功能操作之實施例可被實施於包含本說明書中所揭示之結構及其結構等效物之數位電子電路、有形地體現之電腦軟體或韌體、電腦硬體中或者實施於其中之一或多者之組合中。本說明書中所闡述之標的物之實施例可被實施為一或多個電腦程式,亦即,編碼於一有形非暫時性程式載體上以供由資料處理設備執行或用以控制資料處理設備之操作之一或多個電腦程式指令模組。另一選擇係或另外,程式指令可編碼於一人工產生傳播之信號(例如,一機器產生之電、光學或電磁信號)上,該人工產生傳播之信號經產生以編碼資訊以傳輸至適合接收器設備以供由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或者其中之一或多者之一組合。
本說明書中所闡述之程序及邏輯流程可由執行一或多個電腦程式之一或多個可程式化電腦執行以藉由對輸入資料進行操作並產生輸出而執行功能。該等程序及邏輯流程亦可由特殊用途邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特殊應用積體電路)或一GPGPU (一般用途圖形處理單元))來執行,且亦可將設備實施為該特殊用途邏輯電路。
藉由實例方式,適合於執行一電腦程式之電腦包含、可基於一般用途或特殊用途微處理器或此兩者,或者任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或此兩者接收指令及資料。一電腦之基本元件係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或以操作方式耦合以自該等大容量儲存裝置接收資料或向其傳送資料或者既接收又傳送資料。然而,一電腦不需要具有此等裝置。此外,一電腦可嵌入於另一裝置(例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置,例如一通用串列匯流排(USB)隨身碟,僅舉幾例)中。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,藉由實例方式包含半導體記憶體裝置(例如,EPROM、EEPROM及快閃記憶體裝置);磁碟(例如,內部硬磁碟或可抽換式磁碟);磁光碟;以及CD ROM及DVD-ROM碟。處理器及記憶體可由特殊用途邏輯電路補充或併入於特殊用途邏輯電路中。
儘管本說明書含有諸多特定實施方案細節,但此等細節不應解釋為對任何發明或可主張之內容之範疇之限制,而是應解釋為可為特定發明之特定實施例特有之特徵之說明。在單獨實施例之內容脈絡中於本說明書中闡述之特定特徵亦可以組合方式實施於一單個實施例中。相反地,在一單個實施例之內容脈絡中闡述之各種特徵亦可單獨地或以任何適合子組合形式實施於多個實施例中。此外,雖然上文可將特徵闡述為以某些組合形式起作用且甚至最初係如此主張的,但在某些情形中,可自一所主張組合去除來自該組合之一或多個特徵,且所主張組合可針對於一子組合或一子組合之變化形式。
類似地,儘管在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以按順序次序執行此等操作,或執行所有所圖解說明之操作以達成合意結果。在特定情形中,多任務及並行處理可為有利的。此外,不應將在上文所闡述之實施例中之各種系統模組及組件之分離理解為在所有實施例中需要此分離,且應理解,通常可將所闡述之程式組件及系統一起整合於一單個軟體產品中或封裝至多個軟體產品中。
已闡述標的物之特定實施例。因此,在隨附申請專利範圍之範疇內存在其他實施例。舉例而言,申請專利範圍中所陳述之行動可以一不同次序來執行且仍達成合意結果。另外,附圖中所繪示之程序不需要所展示之特定次序或順序次序來達成合意結果。在特定情形中,多任務及並行處理可為有利的。
100‧‧‧計算系統
102‧‧‧處理單元
104‧‧‧輸入/儲存媒體
106‧‧‧張量遍歷單元
112‧‧‧儲存位置A
114‧‧‧儲存位置B
116‧‧‧緩衝器A/輸出
118‧‧‧緩衝器B
122‧‧‧張量狀態元件
124‧‧‧數學單元
205‧‧‧第一資料儲存位置
210‧‧‧緩衝器指派值
215‧‧‧第二資料儲存位置
300‧‧‧程序
302‧‧‧操作
304‧‧‧操作
306‧‧‧操作
308‧‧‧操作
310‧‧‧操作
312‧‧‧操作
314‧‧‧操作
316‧‧‧操作
圖1係一實例性計算系統之一方塊圖。
圖2圖解說明使用緩衝器傳送之實例性資料以及實例性緩衝器指派元素。
圖3係圖解說明用於使用雙緩衝來傳送資料之一實例性程序之一流程圖。
在各個圖式中,相同元件符號及名稱指示相同元件。

Claims (21)

  1. 一種用於傳送資料之設備,該設備包括: 複數個記憶體,其包含至少一第一記憶體及一第二記憶體;及 一或多個處理單元,其經組態以: 藉由以下操作來判定包括儲存於一第一資料儲存位置中之複數個資料元素之一序列之緩衝記憶體位址,該複數個資料元素被傳送至一第二資料儲存位置: 針對該序列中之該複數個資料元素中之一或多者之每一群組: 識別一緩衝器指派元素之一值,該值可在各自與該複數個記憶體中之一不同者對應之複數個值之間進行切換; 基於該緩衝器指派元素之該值而判定一或多個資料元素之該群組之一緩衝記憶體位址,包含: 當該緩衝器指派元素之該值係對應於該第一記憶體之一第一值時,藉由基於該第一記憶體之一基底位址與一或多個資料元素之該群組之一記憶體位移值之一組合判定一或多個資料元素之該群組之該緩衝記憶體位址而將一或多個資料元素之該群組指派給該第一記憶體;及 當該緩衝器指派元素之該值係不同於該第一值且對應於該第二記憶體的一第二值時,藉由基於該第一記憶體之該基底位址、該第二記憶體之記憶體位址位移值與一或多個資料元素之該群組之該記憶體位移值之一組合判定一或多個資料元素之該群組之該記憶體位址而將該資料元素指派給該第二記憶體,以將一或多個資料元素之該群組指派給該第二記憶體;及 在判定資料元素之該序列中之一或多個資料元素之一後續群組之該緩衝記憶體位址之前切換該緩衝器指派元素之該值;以及 使用一或多個資料元素之每一群組之該所判定緩衝記憶體位址將每一資料元素傳送至該第一記憶體或該第二記憶體之一各別記憶體位置。
  2. 如請求項1之設備,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 該第一資料儲存位置及該第二資料儲存位置各自包括大於該第一資料儲存容量之至少一第二資料儲存容量。
  3. 如請求項1或請求項2之設備,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 資料元素之該序列包括超過該第一資料儲存容量之一資料量。
  4. 如請求項1之設備,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括:基於用於反覆遍及資料元素之該序列之一或多個迴圈之若干次反覆而判定一或多個資料元素之該群組之該記憶體位移值。
  5. 如請求項4之設備,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括: 每當該緩衝器指派元素之該值係該第二值時,將(i)該第一記憶體之該基底位址、(ii)該第二記憶體之該記憶體位址位移值與(iii)一或多個資料元素之該群組之該記憶體位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址;及 每當該緩衝器指派元素之該值係該第一值時,獨立於該第二記憶體之記憶體位址值而將(i)該第一記憶體之該基底位址與(ii)一或多個資料元素之該群組之該位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址。
  6. 如請求項4之設備,其中一或多個資料元素之該群組之該記憶體位移值係基於針對N維張量之每一維度之一迴圈之若干次反覆。
  7. 如請求項1之設備,其中該第二記憶體之該記憶體位址位移值係基於該第二記憶體之第一記憶體位址之一記憶體位址之間的一差異。
  8. 一種由一計算系統執行以用於傳送資料之方法,該方法包括: 藉由以下操作來判定包括儲存於一第一資料儲存位置中之複數個資料元素之一序列之緩衝記憶體位址,該複數個資料元素被傳送至一第二資料儲存位置: 針對該序列中之該複數個資料元素中之一或多者之每一群組: 識別一緩衝器指派元素之一值,該值可在各自與複數個記憶體中之一不同者對應之複數個值之間進行切換; 基於該緩衝器指派元素之該值而判定一或多個資料元素之該群組之一緩衝記憶體位址,包含: 當該緩衝器指派元素之該值係對應於複數個記憶體中之一第一記憶體之一第一值時,藉由基於該第一記憶體之一基底位址與一或多個資料元素之該群組之一記憶體位移值之一組合判定一或多個資料元素之該群組之該緩衝記憶體位址而將一或多個資料元素之該群組指派給該第一記憶體;及 當該緩衝器指派元素之該值係不同於該第一值且對應於該複數個記憶體中之一第二記憶體的一第二值時,藉由基於該第一記憶體之該基底位址、該第二記憶體之記憶體位址位移值與一或多個資料元素之該群組之該記憶體位移值之一組合判定一或多個資料元素之該群組之該記憶體位址而將該資料元素指派給該第二記憶體,以將一或多個資料元素之該群組指派給該第二記憶體;及 在判定資料元素之該序列中之一或多個資料元素之一後續群組之該緩衝記憶體位址之前切換該緩衝器指派元素之該值;以及 使用一或多個資料元素之每一群組之該所判定緩衝記憶體位址將每一資料元素傳送至該第一記憶體或該第二記憶體之一各別記憶體位置。
  9. 如請求項8之方法,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 該第一資料儲存位置及該第二資料儲存位置各自包括大於該第一資料儲存容量之至少一第二資料儲存容量。
  10. 如請求項8或請求項9之方法,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 資料元素之該序列包括超過該第一資料儲存容量之一資料量。
  11. 如請求項8之方法,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括:基於用於反覆遍及資料元素之該序列之一或多個迴圈之若干次反覆而判定一或多個資料元素之該群組之該記憶體位移值。
  12. 如請求項11之方法,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括: 每當該緩衝器指派元素之該值係該第二值時,將(i)該第一記憶體之該基底位址、(ii)該第二記憶體之該記憶體位址位移值與(iii)一或多個資料元素之該群組之該記憶體位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址;及 每當該緩衝器指派元素之該值係該第一值時,獨立於該第二記憶體之記憶體位址值而將(i)該第一記憶體之該基底位址與(ii)一或多個資料元素之該群組之該位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址。
  13. 如請求項11之方法,其中一或多個資料元素之該群組之該記憶體位移值係基於針對N維張量之每一維度之一迴圈之若干次反覆。
  14. 如請求項11之方法,其中該第二記憶體之該記憶體位址位移值係基於該第二記憶體之第一記憶體位址之一記憶體位址之間的一差異。
  15. 一種用於傳送資料之系統,該系統包括: 複數個記憶體,其包含至少一第一記憶體及一第二記憶體;及 一或多個處理單元,其包含一或多個數學單元,該一或多個處理單元經組態以: 藉由以下操作來判定包括儲存於一第一資料儲存位置中之複數個資料元素之一序列之緩衝記憶體位址,該複數個資料元素被傳送至一第二資料儲存位置: 針對該序列中之該複數個資料元素中之一或多者之每一群組: 識別一緩衝器指派元素之一值,該值可在各自與該複數個記憶體中之一不同者對應之複數個值之間進行切換; 基於該緩衝器指派元素之該值而判定一或多個資料元素之該群組之一緩衝記憶體位址,包含: 當該緩衝器指派元素之該值係對應於該第一記憶體之一第一值時,藉由基於該第一記憶體之一基底位址與一或多個資料元素之該群組之一記憶體位移值之一組合判定一或多個資料元素之該群組之該緩衝記憶體位址而將一或多個資料元素之該群組指派給該第一記憶體;及 當該緩衝器指派元素之該值係不同於該第一值且對應於該第二記憶體的一第二值時,藉由基於該第一記憶體之該基底位址、該第二記憶體之記憶體位址位移值與一或多個資料元素之該群組之該記憶體位移值之一組合判定一或多個資料元素之該群組之該記憶體位址而將該資料元素指派給該第二記憶體,以將一或多個資料元素之該群組指派給該第二記憶體;及 在判定資料元素之該序列中之一或多個資料元素之一後續群組之該緩衝記憶體位址之前切換該緩衝器指派元素之該值;以及 輸出指定每一所判定記憶體位址之資料; 一或多個處理器,其經組態以使用一或多個資料元素之每一群組之該所判定緩衝記憶體位址將每一資料元素傳送至該第一記憶體或該第二記憶體之一各別記憶體位置。
  16. 如請求項15之系統,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 該第一資料儲存位置及該第二資料儲存位置各自包括大於該第一資料儲存容量之至少一第二資料儲存容量。
  17. 如請求項15或請求項16之系統,其中: 該第一記憶體及該第二記憶體係各自具有一第一資料儲存容量之緩衝器;且 資料元素之該序列包括超過該第一資料儲存容量之一資料量。
  18. 如請求項15之系統,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括:基於用於反覆遍及資料元素之該序列之一或多個迴圈之若干次反覆而判定一或多個資料元素之該群組之該記憶體位移值。
  19. 如請求項18之系統,其中基於該緩衝器指派元素之該值及該第二記憶體之一記憶體位址位移值而判定一或多個資料元素之該群組之該緩衝記憶體位址包括: 每當該緩衝器指派元素之該值係該第二值時,將(i)該第一記憶體之該基底位址、(ii)該第二記憶體之該記憶體位址位移值與(iii)一或多個資料元素之該群組之該記憶體位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址;及 每當該緩衝器指派元素之該值係該第一值時,獨立於該第二記憶體之記憶體位址值而將(i)該第一記憶體之該基底位址與(ii)一或多個資料元素之該群組之該位移值之一總和判定為一或多個資料元素之該群組之該緩衝記憶體位址。
  20. 如請求項18之系統,其中一或多個資料元素之該群組之該記憶體位移值係基於針對N維張量之每一維度之一迴圈之若干次反覆。
  21. 如請求項18之系統,其中該第二記憶體之該記憶體位址位移值係基於該第二記憶體之第一記憶體位址之一記憶體位址之間的一差異。
TW107123234A 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統 TWI671633B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/641,824 US10175912B1 (en) 2017-07-05 2017-07-05 Hardware double buffering using a special purpose computational unit
US15/641,824 2017-07-05
PCT/US2018/038009 WO2019009993A1 (en) 2017-07-05 2018-06-18 DOUBLE MATERIAL BUFFER USING A SPECIALIZED CALCULATION UNIT
USPCT/US18/38009 2018-06-18

Publications (2)

Publication Number Publication Date
TW201908977A true TW201908977A (zh) 2019-03-01
TWI671633B TWI671633B (zh) 2019-09-11

Family

ID=62981308

Family Applications (3)

Application Number Title Priority Date Filing Date
TW110108162A TWI777442B (zh) 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統
TW107123234A TWI671633B (zh) 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統
TW108128281A TWI722526B (zh) 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW110108162A TWI777442B (zh) 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW108128281A TWI722526B (zh) 2017-07-05 2018-07-05 用於傳送資料之設備、方法及系統

Country Status (7)

Country Link
US (3) US10175912B1 (zh)
EP (2) EP3686743A1 (zh)
JP (3) JP7062659B2 (zh)
KR (2) KR102309522B1 (zh)
CN (2) CN110036374B (zh)
TW (3) TWI777442B (zh)
WO (1) WO2019009993A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit
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
CN111324294B (zh) * 2018-12-17 2023-11-07 地平线(上海)人工智能技术有限公司 存取张量数据的方法和装置
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
CN111756940A (zh) * 2020-07-07 2020-10-09 广州威谱通信设备有限公司 一种可编程寻址双输入混音的精简数字语音通信系统
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

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163132A (en) * 1987-09-24 1992-11-10 Ncr Corporation Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device
JPH02132566A (ja) * 1988-11-14 1990-05-22 Toshiba Corp 画像データ転送装置
US4910683A (en) * 1988-12-20 1990-03-20 Sun Microsystems, Inc. Method and apparatus for fractional double buffering
JPH03131951A (ja) * 1989-10-18 1991-06-05 Fujitsu Ltd データ転送方式
JPH0553982A (ja) * 1991-08-28 1993-03-05 Nec Corp メモリ制御回路
DE69727465T2 (de) * 1997-01-09 2004-12-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6363470B1 (en) 1998-10-06 2002-03-26 Texas Instruments Incorporated Circular buffer management
JP2001022950A (ja) 1999-05-20 2001-01-26 Mitsubishi Electric Inf Technol Center America Inc ボリュームレンダリンググラフィックボード
US7155570B1 (en) 2000-09-29 2006-12-26 Intel Corporation FIFO write/LIFO read trace buffer with software and hardware loop compression
JP2002182925A (ja) 2000-12-12 2002-06-28 Hitachi Ltd コンパイル方法及びコンピュータ読み取り可能な記録媒体
JP2002254729A (ja) 2001-03-02 2002-09-11 Sharp Corp 画像データのdma制御装置
EP1367493A1 (en) 2002-05-30 2003-12-03 STMicroelectronics Limited Prefetch buffer
JP4004389B2 (ja) 2002-11-27 2007-11-07 富士通株式会社 バッファメモリ管理方法及びシステム
US6931497B2 (en) 2003-01-09 2005-08-16 Emulex Design & Manufacturing Corporation Shared memory management utilizing a free list of buffer indices
GB0313986D0 (en) 2003-06-17 2003-07-23 Zarlink Semiconductor Inc Data memory extension for use in double buffered TDM switches
US20080270332A1 (en) * 2003-08-26 2008-10-30 Paul Rudolf Associative Memory Device and Method Based on Wave Propagation
JP2006301724A (ja) 2005-04-15 2006-11-02 Seiko Epson Corp メモリコントローラ、画像処理コントローラ及び電子機器
US7864864B2 (en) 2005-06-27 2011-01-04 Intel Corporation Context buffer address determination using a plurality of modular indexes
US20100281192A1 (en) 2009-04-30 2010-11-04 Novafora, Inc. Apparatus and method for transferring data within a data processing system
JP2011039302A (ja) 2009-08-11 2011-02-24 Seiko Epson Corp バッファー制御回路、表示コントローラー及び電子機器
US8458377B2 (en) * 2010-03-05 2013-06-04 Lsi Corporation DMA engine capable of concurrent data manipulation
US8892787B2 (en) * 2012-03-06 2014-11-18 Lsi Corporation Methods and apparatus for packing received frames in buffers in a serial attached SCSI (SAS) device
US20140188961A1 (en) * 2012-12-27 2014-07-03 Mikhail Plotnikov Vectorization Of Collapsed Multi-Nested Loops
US10726328B2 (en) * 2015-10-09 2020-07-28 Altera Corporation Method and apparatus for designing and implementing a convolution neural net accelerator
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit

Also Published As

Publication number Publication date
JP2020506453A (ja) 2020-02-27
TWI671633B (zh) 2019-09-11
KR20210119584A (ko) 2021-10-05
US20190012112A1 (en) 2019-01-10
CN110036374B (zh) 2023-03-10
US20190138243A1 (en) 2019-05-09
EP3529701B1 (en) 2020-03-11
KR102335909B1 (ko) 2021-12-06
EP3529701A1 (en) 2019-08-28
JP7379581B2 (ja) 2023-11-14
JP2024020270A (ja) 2024-02-14
US10496326B2 (en) 2019-12-03
US20200183612A1 (en) 2020-06-11
KR102309522B1 (ko) 2021-10-07
TW201945937A (zh) 2019-12-01
US11099772B2 (en) 2021-08-24
TW202131194A (zh) 2021-08-16
CN116303111A (zh) 2023-06-23
JP2022106815A (ja) 2022-07-20
CN110036374A (zh) 2019-07-19
TWI777442B (zh) 2022-09-11
EP3686743A1 (en) 2020-07-29
JP7062659B2 (ja) 2022-05-06
WO2019009993A1 (en) 2019-01-10
KR20190073535A (ko) 2019-06-26
US10175912B1 (en) 2019-01-08
TWI722526B (zh) 2021-03-21

Similar Documents

Publication Publication Date Title
TWI671633B (zh) 用於傳送資料之設備、方法及系統
TWI710974B (zh) 用於基於一n維張量之張量元素執行運算之方法及系統,及相關的非暫時性電腦儲存媒體
TWI740274B (zh) 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備