TWI739029B - 儲存裝置及控制記憶體裝置的方法 - Google Patents
儲存裝置及控制記憶體裝置的方法 Download PDFInfo
- Publication number
- TWI739029B TWI739029B TW107130961A TW107130961A TWI739029B TW I739029 B TWI739029 B TW I739029B TW 107130961 A TW107130961 A TW 107130961A TW 107130961 A TW107130961 A TW 107130961A TW I739029 B TWI739029 B TW I739029B
- Authority
- TW
- Taiwan
- Prior art keywords
- input feature
- value
- feature maps
- calculation
- column
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Memory System (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本發明揭露一種儲存裝置及一種控制記憶體裝置的方
法。所述儲存裝置包括主機、邏輯裸晶及包括記憶體裸晶的高頻寬記憶體堆疊。在所述記憶體裸晶的記憶體陣列上儲存有計算查找表。所述主機發送命令來利用內核及多個輸入特徵圖執行運算,所述運算包括找到所述內核的權重與多個輸入特徵圖的值的乘積。所述計算查找表包括與所述內核的權重對應的列及與所述輸入特徵圖的值對應的行。儲存在與一列及一行對應的位置處的結果值是與所述列對應的權重和與所述行對應的值的乘積。
Description
本揭露涉及記憶體,且更具體來說,涉及用於深度學習加速器的高頻寬記憶體。
根據本揭露的各個方面,提供一種儲存裝置。
包括深度神經網路的機器學習應用可涉及具有顯著的計算或儲存要求的大量運算。因此,機器學習應用可能需要大量資源來對不同的資料集進行訓練並準確地學習。包括圖形演算法的其他計算應用提出了更高的計算及儲存要求。已使用在記憶體中進行的處理以通過在儲存塊中而非在中央處理器(Central Processing Unit,CPU)中執行計算來解決這些關切問題中的一些關切問題。
根據本揭露的各個方面,提供一種儲存裝置。所述儲存
裝置包括:主機,發送命令來利用內核及多個輸入特徵圖執行運算。所述內核包括多個權重,且所述輸入特徵圖包括多個值。所述運算包括確定所述內核的第一權重與所述多個輸入特徵圖中的兩個或更多個輸入特徵圖中的每一者的所述多個值中的第一值的乘積。所述儲存裝置包括邏輯裸晶,所述邏輯裸晶耦合到所述主機且被配置成接收所述命令。所述儲存裝置還包括高頻寬記憶體(high bandwidth memory,HBM)堆疊,所述高頻寬記憶體堆疊包括記憶體裸晶,所述記憶體裸晶耦合到所述邏輯裸晶且包括記憶體陣列。所述內核及所述多個輸入特徵圖儲存在所述記憶體陣列中。在所述記憶體陣列中儲存有計算查找表,所述計算查找表具有多個列,所述多個列中的一列對應於所述內核的所述多個權重中的一者,所述計算查找表具有多個行,所述多個行中的一行對應於所述多個輸入特徵圖的所述值中的一者。在所述計算查找表中的一位置處儲存有結果值,所述位置對應於所述多個列中的一列及所述多個行中的一行,所述結果值是與所述一列對應的權重和與所述一行對應的值的乘積。
在一些實施例中,所述儲存裝置包括:第一列解碼器,其中所述記憶體裸晶將所述第一權重輸入到所述第一列解碼器中以將所述計算查找表的與所述第一權重對應的所述列載入到列緩衝器中;及第二列解碼器,其中所述記憶體裸晶將所述第一權重輸入到所述第二列解碼器中以將所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的所述第一值載入到中間緩衝器中。
在一些實施例中,所述儲存裝置包括行存取排程器及行
解碼器,其中所述行存取排程器被配置成從所述中間緩衝器接收所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的所述第一值,且針對所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的每一個第一值,控制所述行解碼器存取所述列緩衝器中與和所述第一值對應的所述行對應的位置處的所述結果值,並將所述結果值輸出到讀取緩衝器。
在一些實施例中,所述邏輯裸晶包括處理元件,其中所述讀取緩衝器在接收到所述中間緩衝器中每一第一值的所述結果值時,將每一個第一值的所述結果值輸出到所述邏輯裸晶,且所述處理元件被配置成處理每一個第一值的所述結果值。
在一些實施例中,所述處理元件被配置成接收與和第一輸入特徵圖對應的所述第一值對應的所述結果值,且被配置成將所接收的所述結果值與所述第一輸入特徵圖的其他所接收的結果值進行組合以產生所述第一輸入特徵圖的輸出值。
在一些實施例中,所述主機發送第二命令來利用第二內核及第二多個輸入特徵圖執行第二運算,在所述記憶體陣列中儲存有第二計算查找表,所述第二計算查找表具有多個列,所述第二計算查找表的所述多個列中的一列對應於所述第二內核的所述多個權重中的一者,所述第二計算查找表具有多個行,所述第二計算查找表的所述多個行中的一行對應於所述第二多個輸入特徵圖的所述值中的一者,且在所述第二計算查找表中的位置處儲存有結果值,所述位置對應於所述第二計算查找表的所述多個列中的一列及所述第二計算查找表的所述多個行中的一行,所述結果值是與所述列對應的所述權重和與所述行對應的所述值的乘積。
在一些實施例中,所述第二命令是執行卷積運算,將所述第二內核與所述第二多個輸入特徵圖中的兩個或更多個輸入特徵圖進行卷積。
在一些實施例中,所述命令是執行矩陣乘法運算,將所述內核與所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖相乘。
在一些實施例中,所述儲存裝置被配置成基於所述命令而將所述內核、所述多個輸入特徵圖及所述計算查找表儲存在所述記憶體陣列中。
在一些實施例中,所述記憶體陣列的被分配給所述計算查找表的百分比是基於由所述命令所標識的所述運算。
根據本揭露的另一個方面,提供一種控制記憶體裝置的方法。所述方法包括:向邏輯裸晶發送命令來利用內核及多個輸入特徵圖執行運算,所述內核包括多個權重,所述輸入特徵圖包括多個值,所述運算包括確定所述內核的第一權重與所述多個輸入特徵圖中的兩個或更多個輸入特徵圖的所述多個值中的第一值的乘積;將所述內核及所述多個輸入特徵圖儲存在記憶體陣列中;將計算查找表儲存在所述記憶體陣列中,所述計算查找表具有多個列,所述多個列中的一列對應於所述內核的所述多個權重中的一者,所述計算查找表具有多個行,所述多個行中的一行對應於所述多個輸入特徵圖的所述值中的一者,其中在所述計算查找表中的一位置處儲存有結果值,所述位置對應於所述多個列中的一列及所述多個行中的一行,所述結果值是與所述列對應的所述權重與和所述行對應的所述值的乘積。
在一些實施例中,所述方法包括:將所述第一權重輸入到第一列解碼器中以將所述計算查找表的與所述第一權重對應的所述列載入到列緩衝器中,以及將所述第一權重輸入到第二列解碼器中以將所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖的所述第一值載入到中間緩衝器中。
在一些實施例中,所述方法包括從所述中間緩衝器接收所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的所述第一值,針對所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的每一個第一值,存取所述列緩衝器中與和所述第一值對應的所述行對應的位置處的所述結果值,以及將所述結果值輸出到讀取緩衝器。
在一些實施例中,所述方法包括:在接收到所述中間緩衝器中所述第一值中的每一者的所述結果值時,將每一個第一值的所述結果值輸出到所述邏輯裸晶;以及由處理元件處理每一個第一值的所述結果值。
在一些實施例中,由所述處理元件進行的處理是:接收與和第一輸入特徵圖對應的所述第一值對應的所述結果值,並將所接收的所述結果值與第一輸入特徵圖的其他所接收的結果值進行組合以產生所述第一輸入特徵圖的輸出值。
在一些實施例中,所述方法包括:向所述邏輯裸晶發送第二命令來利用第二內核及第二多個輸入特徵圖執行第二運算;以及將第二計算查找表儲存在所述記憶體陣列中,所述第二計算查找表具有多個列,所述第二計算查找表的所述多個列中的一列對應於所述第二內核的所述多個權重中的一者,所述第二計算查
找表具有多個行,所述第二計算查找表的所述多個行中的一行對應於所述第二多個輸入特徵圖的所述值中的一者,其中在所述第二計算查找表中的一位置處儲存有第二結果值,所述位置對應於所述第二計算查找表的所述多個列中的一列及所述第二計算查找表的所述多個行中的一行,所述結果值是與所述列對應的所述權重和與所述行對應的所述值的乘積。
在一些實施例中,所述第二命令是執行卷積運算,將所述第二內核與所述第二多個輸入特徵圖中的兩個或更多個輸入特徵圖進行卷積。
在一些實施例中,所述命令是執行矩陣乘法運算,將所述內核與所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖相乘。
在一些實施例中,所述方法包括:基於所述命令而將所述內核、所述多個輸入特徵圖及所述計算查找表儲存在所述記憶體陣列中。
在一些實施例中,所述記憶體陣列的被分配給所述計算查找表的百分比是基於由所述命令所標識的所述運算。
通過參照附圖閱讀示例性實施例的以下詳細說明,對所述領域中的技術人員而言,本揭露的以上及其他方面將變得更顯而易見。
根據本揭露的各個方面,在動態隨機存取記憶體(dynamic random access memory,DRAM)裸晶上進行的儲存查找計算以及在邏輯裸晶中進行的累加運算可完全重疊以使得硬體
處於完全利用狀態且可得到高的總體輸送量。
100:加速器卡
110:主機
120:DRAM堆疊
120A、120B、120C、120D:記憶體堆疊/DRAM堆疊
121:DRAM裸晶
121A、121B、121C、121D:記憶體裸晶
123、850:邏輯裸晶
125:加速器裸晶
130:中間層
140:封裝基板
210:模型參數/模型參數陣列/模型參數記憶體陣列
220:中間結果/中間結果陣列/中間結果記憶體陣列
230:計算查找表/第一計算查找表/第二計算查找表
240:寫入緩衝器
250:排程器
260:請求/回應佇列
270:讀取緩衝器
310:輸出緩衝器
320、320A、320B:處理塊
321:輸入緩衝器
323:輸出緩衝器
325:分派程式
327A、327B、327C、327D:處理元件
330:命令佇列
340:輸入緩衝器
360:排程器
370:控制器
510、710:輸入特徵圖
520、720:內核
610:輸出矩陣
712:輸入列
722:行
810:輸入特徵圖表
820:計算查找表
I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I2_P3_w1、I3_P1_w1、I3_P2_w1、I3_P3_w1:值
k1_w1:權重/第一權重
P1、P2、P3:輸出值
圖1示出根據本揭露實施例的加速器卡100。
圖2是繪示加速器卡100的側視圖的方塊圖。
圖3是根據本揭露實施例的DRAM裸晶121及邏輯裸晶123的方塊圖。
圖4是根據本揭露實施例的處理塊320的實施例。
圖5示出根據本揭露實施例的批量卷積運算。
圖6示出圖5所示批量卷積運算的輸出。
圖7示出根據本揭露實施例的批量矩陣乘法運算。
圖8是示出根據本揭露實施例的逐點運算的方塊圖。
在以下詳細說明中,僅以例示方式示出並闡述本發明的某些示例性實施例。如所屬領域中的技術人員將瞭解,本發明可被實施為許多不同形式且不應被視為僅限於本文所述實施例。對每一個示例性實施例內的特徵或方面的說明通常應被視為可用於其他示例性實施例的其他相似的特徵或方面。相同的參考編號在本說明書通篇中表示相同的元件。
圖1示出根據本揭露實施例的加速器卡100(例如,圖形卡)。加速器卡100可利用高頻寬記憶體(“HBM”)架構,例如第二代HBM(HBM2)架構。加速器卡100包括主機110及多
個記憶體堆疊120A到120D(在下文中稱為“動態隨機存取記憶體堆疊(DRAM stack)”)。圖2是繪示加速器卡100的側視圖的方塊圖。圖2所示方塊圖包括DRAM堆疊120中的一者。DRAM堆疊120包括多個記憶體裸晶121A到121D(在下文中稱為“DRAM裸晶”)及邏輯裸晶123。在一些實施例中,DRAM堆疊120可包括加速器裸晶125,且加速器裸晶125可與邏輯裸晶123合作執行運算或代替邏輯裸晶123執行運算。
主機110通過中間層(interposer)130連接到邏輯裸晶123。中間層130可被設計成使主機110利用HBM架構與所述多個DRAM堆疊120A到120D進行通訊。中間層130連接到可在主機110與外部系統之間提供介面的封裝基板140(例如,封裝基板140可包括周邊元件連接快速(Peripheral component interconnect express,PCIe)連接件)。
圖3是根據本揭露實施例的DRAM裸晶121及邏輯裸晶123的方塊圖。DRAM裸晶121包括寫入緩衝器240、排程器250、請求/回應佇列260及讀取緩衝器270。DRAM裸晶121在一個或多個記憶體陣列中可包括模型參數210、中間結果220及一個或多個計算查找表230。寫入緩衝器240及讀取緩衝器270用作DRAM裸晶121的輸入點及輸出點,且排程器250及請求/回應佇列260控制DRAM裸晶121上的資料流程。
邏輯裸晶123包括輸出緩衝器310、一個或多個處理塊320A到320B、命令佇列330、輸入緩衝器340、排程器360及控制器370。圖4是根據本揭露實施例的處理塊320的實施例。參照圖4,處理塊320具有用於臨時儲存輸入值(例如,逐點乘法結果
或者卷積運算或矩陣乘法運算的部分結果)的輸入緩衝器321以及用於臨時儲存計算結果的輸出緩衝器310。處理塊320包括分派程式(dispatcher)325及多個處理元件327A到327D。分派程式325負責將輸入緩衝器321中的資料傳輸到處理元件327A到327D中並將資料從處理元件327A到327D傳輸到輸出緩衝器323。
再次參照圖3,邏輯裸晶123的輸入緩衝器340及輸出緩衝器310儲存用於邏輯裸晶123的資料。控制器370負責與主機110進行通訊,且排程器360負責對計算任務進行排程。
控制器370從主機110接收命令。回應於命令,控制器370可基於命令的內容來指示排程器360對任務進行排程。排程器360可請求命令佇列330將預計算資料發送到DRAM裸晶121。
在一些實施例中,預計算資料可與命令一起從主機110接收。在一些實施例中,預計算資料由邏輯裸晶123計算,例如由控制器370基於來自主機110的命令計算。預計算資料可包括一個或多個內核的權重、一個或多個輸入特徵圖和/或一個或多個計算查找表的值。DRAM裸晶121可將預計算資料從輸出緩衝器310臨時讀取到寫入緩衝器240,且排程器250可將預計算資料儲存在模型參數陣列210或中間結果陣列220中。所述一個或多個內核的權重可儲存在模型參數陣列210中,且所述多個輸入特徵圖可儲存在中間結果陣列220中。
在計算查找表230中,值儲存在與列及行對應的位置中。列與行的每一組合構成一位置,在此位置處儲存有值。在一些實施例中,主機110可對計算查找表230的內容進行計算並將所述內容發送到加速器卡100。在一些實施例中,計算查找表可從
主機記憶體載入。在一些實施例中,主機110可啟動邏輯裸晶123上的程式,因此邏輯裸晶123將計算計算查找表的內容。
計算查找表230可被配置成支援預配置值的逐位元處理,例如逐位乘法。計算查找表230可包括與第一組預配置值(例如,內核的權重)的每一個可能值對應的一列,且可包括與第二組預配置值(例如,輸入特徵圖中的值)的每一個可能值對應的一行。儲存在每一個位置處的值是與這一位置的列相關聯的值和與這一位置的行相關聯的值的乘積。為將第一組預配置值中的一者乘以第二組預配置值中的一者,DRAM裸晶121可對計算查找表230執行查找運算以找到與所述第一組預配置值中的所述一者的值對應的列並將這一列資料移動到列緩衝器。DRAM裸晶121可接著對列緩衝器中的列資料執行行查找運算來找到與第二組預配置值中的一者的值對應的行的項,且可將這一運算處的值輸出到讀取緩衝器270。
應注意,儘管以上使用逐點乘法作為說明性實例,然而,本揭露並非僅限於此,且其他逐點運算也處於本揭露的範圍內。所述運算可包括算術(例如,指數)運算和/或邏輯(例如,異或)運算。在一些實施例中,DRAM裸晶121包括與不同的逐點運算對應的多個計算查找表230(或者在一個計算查找表230中針對每一個值包括多個列,其中每一個逐點運算一個列)。舉例來說,在第一計算查找表230中,每一個位置處的值可對應於和這一位置的列及行對應的值的乘積,且在第二計算查找表230中,每一個位置處的值可對應於和這一位置的列及行對應的值的商。排程器250可通過對計算查找表230中與這一逐點運算對應的列
和/或行存取運算進行排程來確定要執行哪一個逐點運算。
讀取緩衝器270的內容被串流輸出到邏輯裸晶123的輸入緩衝器340。排程器360可將資料從輸入緩衝器340複製到處理塊320的輸入緩衝器321,且處理塊320的處理元件327A到327D可對資料執行附加處理並將所述資料輸出到處理塊的輸出緩衝器323。
在DRAM裸晶121上進行的儲存查找計算以及在邏輯裸晶123中進行的累加運算可完全重疊以使得硬體處於完全利用狀態且可得到高的總體輸送量。
在一些實施例中,被配置為計算查找表230的記憶體陣列或子陣列的數目可基於從主機110接收的命令類型。對具有高計算對記憶體比率(compute-to-memory ratio)的命令來說,可將較多子陣列配置成計算查找表,且對具有低計算對儲存比率的命令來說,可將較少的子陣列配置成計算查找表。內核的計算對儲存比率可指從計算查找表存取的每一個元素的運算(例如,逐點運算)數目。包含計算查找表資料的儲存子陣列的比率可為OPA*M/N,其中OPA是針對所存取的每一個元素執行的逐點運算的數目,M是每一個儲存子陣列在每一個迴圈可提供的元素的數目,且N是每一個計算查找表在每一個迴圈可提供的逐點運算的數目。
圖5示出根據本揭露實施例的批量卷積運算。圖6示出圖5所示批量卷積運算的輸出。參照圖5及圖6,批量卷積運算可由上述DRAM堆疊120執行。主機110可將命令發送到控制器370,從而指示控制器370利用多個輸入特徵圖510以及一個或多
個內核520執行批量卷積運算。所述多個輸入特徵圖510可儲存在中間結果記憶體陣列220中,且所述一個或多個內核520可儲存在模型參數陣列210中。可將批次大小理解為輸入特徵圖510的數目。每一個輸入特徵圖510可為具有寬度、高度及深度的值的三維陣列,且可將輸入通道理解為深度。內核520可為內核高度小於輸入特徵映射高度、內核寬度小於輸入特徵映射寬度且深度等於輸入特徵映射深度(即,等於輸入通道)的值的三維陣列。
內核520是例如以重複的網格圖案形式應用在整個輸入特徵圖510中的多個位置處。在每一個位置處,將內核520中的權重乘以輸入特徵圖510的對應值。將給定位置處的每一個權重與輸入特徵圖510的對應值的乘積加在一起以得到這一輸入特徵圖中的這一位置的輸出值P1、P2、P3,且對給定輸入特徵圖510中的每一個位置的值進行組合以形成這一輸入特徵圖與內核組合的輸出矩陣610。對每一個內核及對每一個輸入特徵圖重複進行所述過程。
內核的權重可被稱為kj_wi,其中j標識內核且i是這一權重在內核內的具體位置,且輸入特徵圖的值可被稱為Ix_Py_wz,其中x標識輸入特徵圖,y是輸入特徵圖上內核的位置,且z是輸入特徵圖中值的具體位置(其直接對應於內核的i)。
如圖5中所示,權重k1_w1對應於第一內核中的所示位置。為產生圖6所示輸出,將權重k1_w1乘以值I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I2_P3_w1中的每一者、以及每一個輸入特徵圖510中的每一位置中的相似值。
圖7示出根據本揭露實施例的批量矩陣乘法運算。批量
矩陣乘法運算可由上述DRAM堆疊120執行。主機110可將命令發送到控制器370,從而指示控制器370利用多個輸入特徵圖710以及一個或多個內核720執行批量矩陣乘法運算。所述多個輸入特徵圖710可儲存在中間結果記憶體陣列220中,且所述一個或多個內核720可儲存在模型參數記憶體陣列210中。可將批次大小理解為輸入特徵圖710的數目。每一個輸入特徵圖710可為具有寬度及高度的值的二維矩陣,且可在高度方向上被劃分成輸入列712。內核720可為具有寬度及高度的權重的二維陣列,且可在寬度方向上被劃分成行722。輸入特徵圖710的高度(且因此列的數目)可等於內核720的寬度(且因此行的數目)。為產生內核720的輸出,可將內核720的一行中的每一個權重乘以每一個輸入特徵圖710的每一個列中的對應值。舉例來說,內核的權重可被稱為kj_wi,其中j是權重的行且i是權重在行中的位置,且輸入特徵圖的值可被稱為Ix_Py_wz,其中x標識輸入特徵圖,y是值的列,且z是值在列中的位置。如圖7中所示,為成批地產生每一個輸入特徵圖710的輸出,將權重k1_w1乘以值I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I3_P1_w1、I3_P2_w1、I3_P3_w1中的每一者、以及每一個輸入特徵圖710的每一個列中的每一位置中的相似值。
圖8是示出根據本揭露實施例的記憶體操作中的處理的方塊圖。在圖8所示操作中,對內核與一批輸入特徵圖執行運算。
舉例來說,在一些實施例中,輸入特徵圖是值的三維陣列,內核是高度及寬度比輸入特徵圖小但深度相同的權重的三維陣列,且所述運算是將內核與所述一批輸入特徵圖進行卷積。在一些實施
例中,輸入特徵圖是值的二維矩陣,內核是權重的二維矩陣,且所述運算是將內核矩陣乘以輸入特徵圖矩陣中的每一者。
圖8包括輸入特徵圖表810及計算查找表820。計算查找表820可包含與內核的每一個可能的權重對應的列,且可包括與輸入特徵圖中的每一個可能的值對應的行。儲存在每一個位置處的值是與這一位置的列相關聯的權重和與這一位置的行相關聯的值的乘積。輸入特徵圖表810包括所述一批輸入特徵圖的值。
與需要和內核中的同一權重位置逐點相乘的輸入特徵圖位置相關聯的每一個值可儲存在以內核中的權重位置的值為索引的相同列中。
邏輯裸晶850被示出為具有命令佇列、輸入緩衝器及輸出緩衝器以及幾個加法器ADD及暫存器。這可為簡化圖以易於解釋,且邏輯裸晶850可包括其他元件,或所示元件可比圖中所繪示更複雜。舉例來說,輸入緩衝器、輸出緩衝器、加法器ADD及暫存器可用於邏輯裸晶850的單個處理元件,且邏輯裸晶850可包括幾個處理元件和/或單獨的輸入/輸出緩衝器來將資訊傳送到所繪示的輸入緩衝器或從所繪示的輸出緩衝器傳送資訊。
邏輯裸晶850的命令佇列發送請求來請求得到與內核中給定權重對應的結果值一例如,如圖8所示,第一權重k1_w1。
如進一步將解釋,內核中給定權重的結果值是通過將權重乘以不同的輸入特徵圖和/或一個輸入特徵圖中的不同位置而產生的值。
作為回應,請求佇列對請求得到與第一權重對應的列的查找請求進行排隊。一旦列存取排程器指示應執行請求得到與第一權重對應的列的查找請求,第一權重(或與第一權重對應的列的值)便
被傳遞到用於輸入特徵圖表810的第一列解碼器及用於計算查找表820的第二列解碼器。第一列解碼器將輸入特徵圖表810的列輸出到中間緩衝器。輸入特徵圖表的與第一權重對應的列中的值是從應與第一權重相乘的輸入特徵圖中的各個位置提取的值。舉例來說,當權重是k1_w1時,值可為I1_P1_w1、I1_P2_w1、I1_P3_w1。第二列解碼器將計算查找表820的列輸出到列緩衝器。計算查找表的列中與第一權重對應的值是第一權重與輸入特徵圖表的值的所有可能的乘積。
行存取排程器接收輸入緩衝器中的每一個值。輸入緩衝器中的每一個值對應於計算查找表820中的行。針對輸入緩衝器中的每一個值,行存取排程器與行解碼器進行通訊,以將儲存在列緩衝器中的與這一值對應的行的值(即,結果值)輸出到輸出緩衝器。在一些實施例中,行存取排程器與多個行解碼器進行通訊以並列地執行運算。由於儲存在列緩衝器中的結果值是第一權重與各個輸入特徵圖值的乘積,因此所述值在列緩衝器中的行對應於輸入特徵圖值,且中間緩衝器中的值是輸入特徵圖值,且被輸出到輸出緩衝器的結果值是第一權重與輸入特徵圖值的乘積,且所述結果值已在記憶體中確定而無需利用例如處理器資源。
儲存在中間緩衝器中的值各自需要乘以第一權重。由於列緩衝器已包含第一權重的列值,因此只需要執行行查找運算來得到輸入緩衝器中的每一個值的結果值即可;不需要單獨的列查找運算。因此,儲存查找可具有高緩衝器命中率(或者可不對第一權重值執行附加列查找運算),此可顯著降低運算的延遲。
在一些實施例中,輸出緩衝器可儲存每一個結果值直到
輸出緩衝器接收到中間緩衝器中的每一個值的結果值為止,此時輸出緩衝器可將所儲存的結果值傳送到邏輯裸晶850的輸入緩衝器。在一些其他實施例中,輸出緩衝器可將較小的結果值集合發送到邏輯裸晶850的輸入緩衝器,或者可將結果值連續地串流輸出到邏輯裸晶850的輸入緩衝器。
邏輯裸晶850可對結果值進行進一步處理以產生每一個輸入特徵圖的輸出以用於運算。舉例來說,輸入緩衝器可針對輸入特徵圖中的給定列選取每一個結果值(其中輸入特徵圖是矩陣),或者針對輸入特徵圖中的給定位置選取每一個結果值(其中輸入特徵圖是三維陣列),並將這些結果值傳遞到單獨的加法器ADD。加法器可相應地增大儲存在暫存器中的值。一旦已相對於內核中相應的權重對輸入特徵圖的每一個值進行了處理,暫存器便可包含對於計算每一個輸入特徵圖的輸出而言所需的值,例如輸入特徵圖的輸出矩陣的一個項的值。暫存器可輸出這一值,且邏輯裸晶和/或主機可對來自每一個暫存器的輸出進行組合或對來自每一個暫存器的輸出進行進一步處理以產生每一個輸入特徵圖的輸出值。
在圖式中,為清晰起見,可誇大和/或簡化各元件、各層及各區的相對大小。為易於解釋,本文中可使用例如“在...之下(beneath)”、“在...下面(below)”、“下部的(lower)”、“在...下方(under)”、“在...上方(above)”、“上部的(upper)”等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係,例如描述某些顯示列位於一列“上方”或“下面”,或者某些圖元位於其他圖元“左側”或“右側”。應
理解,空間相對性用語旨在除圖中所繪示的取向外還囊括裝置在使用或操作中的不同取向。舉例來說,如果圖中所示裝置被翻轉,則被闡述為位於其他元件或特徵“下面”或“之下”或者“下方”的元件此時將被取向為位於所述其他元件或特徵“上方”。
因此,示例性用語“在...下面”及“在...下方”可囊括“上方”及“下面”兩種取向。裝置可具有其他取向(例如,旋轉90度或處於其他取向)且本文中使用的空間相對性描述語應相應地進行解釋。
應理解,儘管在本文中可使用“第一”、“第二”、“第三”等用語來闡述各個元件、元件、區、層和/或區段,然而這些元件、元件、區、層和/或區段不應受限於這些用語。這些用語用於區分各個元件、元件、區、層或區段。因此,以下闡述的第一元件、元件、區、層或區段也可被稱為第二元件、元件、區、層或區段,此並不背離本發明的精神及範圍。
本文所用術語是用於闡述特定實施例的目的,而不旨在對本發明進行限制。除非上下文中清楚地另外指明,否則本文所用單數形式“一(a及an)”旨在也包含複數形式。還應理解,當在本說明書中使用用語“包括(comprises、comprising,includes、including)”時,是指明所陳述特徵、整數、步驟、操作、元件和/或元件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。本文所用用語“和/或”包含相關列出項中的一個或多個項的任意及所有組合。當例如“...中的至少一者(at least one of)”等表達出現在一系列元件之後時是修飾整個系列的元件而並非修飾所述系列中的
個別元件。
本文中在闡述本發明的實施例時使用“可(may)”是指代“本發明的一個或多個實施例”。本文所用用語“使用(use)”、“正使用(using)”及“被使用(used)”可被視為分別與用語“利用(utilize)”、“正利用(utilizing)”及“被利用(utilized)”同義。另外,用語“示例性(exemplary)”旨在指實例或例示。
根據本文所述本發明的實施例的電子裝置或電裝置和/或任何其他相關裝置或元件(例如,源裝置(source device)和/或顯示裝置)可利用任何適合的硬體、韌體(例如,應用專用積體電路(application-specific integrated circuit))、軟體、或軟體、韌體、及硬體的組合來實施。舉例來說,可將這些裝置的各種元件形成在一個積體電路(integrated circuit,IC)晶片上或分別形成在單獨的積體電路晶片上。此外,可將這些裝置的各種元件實施在柔性印刷電路膜(flexible printed circuit film)、載帶封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或形成在一個基板上。此外,這些裝置的各種元件可為在一個或多個計算裝置中由一個或多個處理器運行、執行電腦程式指令並與用於執行本文所述各種功能性的其他系統元件進行交互的過程或執行緒(thread)。電腦程式指令儲存在記憶體中,所述記憶體可使用例如(舉例來說)隨機存取記憶體(random access memory,RAM)等標準記憶體裝置在計算裝置中實施。電腦程式指令也可儲存在例如(舉例來說)壓縮磁碟唯讀記憶體(compact disc read only memory,CD-ROM)、快閃記憶體驅動器(flash drive)
或類似元件等其他非暫時性電腦可讀介質中。另外,所屬領域中的技術人員應知,在不背離本發明示例性實施例的精神及範圍的條件下,可將各種計算裝置的功能性組合或整合成單一的計算裝置,或者可使一特定計算裝置的功能性分別在一個或多個其他計算裝置中。
除非另外定義,否則本文所用所有用語(包括技術及科學用語)的含義均與本發明所屬領域中的普通技術人員所通常理解的含義相同。還應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文和/或本說明書中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
100:加速器卡
110:主機
120A、120B、120C、120D:記憶體堆疊/DRAM堆疊
Claims (20)
- 一種儲存裝置,包括:主機,發送命令來利用內核及多個輸入特徵圖執行運算,所述內核包括多個權重,所述輸入特徵圖包括多個值,所述運算包括確定所述內核的第一權重與所述多個輸入特徵圖中的兩個或更多個輸入特徵圖中的每一者的所述多個值中的第一值的乘積;邏輯裸晶,耦合到所述主機且被配置成接收所述命令;以及高頻寬記憶體堆疊,包括記憶體裸晶,所述記憶體裸晶耦合到所述邏輯裸晶且包括記憶體陣列,其中:所述內核及所述多個輸入特徵圖儲存在所述記憶體陣列中,在所述記憶體陣列中儲存有計算查找表,所述計算查找表具有多個列,所述多個列中的列對應於所述內核的所述多個權重中的一者,所述計算查找表具有多個行,所述多個行中的行對應於所述多個輸入特徵圖的所述值中的一者,且在所述計算查找表中的位置處儲存有結果值,所述位置對應於所述多個列中的列及所述多個行中的行,所述結果值與所述列對應的所述權重和與所述行對應的所述值的所述乘積。
- 如申請專利範圍第1項所述的儲存裝置,更包括:第一列解碼器,其中所述記憶體裸晶將所述第一權重輸入到所述第一列解碼器中以將所述計算查找表的與所述第一權重對應的所述列載入到列緩衝器中,且第二列解碼器,其中所述記憶體裸晶將所述第一權重輸入到所述第二列解碼器中以將所述多個輸入特徵圖中的所述兩個或更 多個輸入特徵圖中的每一者的所述第一值載入到中間緩衝器中。
- 如申請專利範圍第2項所述的儲存裝置,更包括:行存取排程器及行解碼器,其中所述行存取排程器被配置成從所述中間緩衝器接收所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的所述第一值,且針對所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的每一第一值,控制所述行解碼器存取所述列緩衝器中與和所述第一值對應的行對應的位置處的所述結果值,並將所述結果值輸出到讀取緩衝器。
- 如申請專利範圍第3項所述的儲存裝置,其中所述邏輯裸晶包括處理元件,其中所述讀取緩衝器在接收到所述中間緩衝器中每一第一值的所述結果值時,將每一第一值的所述結果值輸出到所述邏輯裸晶,且所述處理元件被配置成處理每一第一值的所述結果值。
- 如申請專利範圍第4項所述的儲存裝置,其中所述處理元件被配置成接收與和第一輸入特徵圖對應的所述第一值對應的所述結果值,並將所接收的所述結果值與所述第一輸入特徵圖的其他所接收的結果值進行組合以產生所述第一輸入特徵圖的輸出值。
- 如申請專利範圍第1項所述的儲存裝置,其中,所述主機發送第二命令來利用第二內核及第二多個輸入特徵圖執行第二運算,在所述記憶體陣列中儲存有第二計算查找表,所述第二計算 查找表具有多個列,所述第二計算查找表的所述多個列中的列對應於所述第二內核的多個權重中的一者,所述第二計算查找表具有多個行,所述第二計算查找表的所述多個行中的行對應於所述第二多個輸入特徵圖的值中的一者,且在所述第二計算查找表中的位置處儲存有結果值,所述位置對應於所述第二計算查找表的所述多個列中的列及所述多個行中的行,所述結果值是與所述列對應的所述權重和與所述行對應的所述值的乘積。
- 如申請專利範圍第6項所述的儲存裝置,其中所述第二命令是執行卷積運算,將所述第二內核與所述第二多個輸入特徵圖中的兩個或更多個輸入特徵圖進行卷積。
- 如申請專利範圍第1項所述的儲存裝置,其中所述命令是執行矩陣乘法運算,將所述內核與所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖相乘。
- 如申請專利範圍第1項所述的儲存裝置,其中所述儲存裝置被配置成基於所述命令而將所述內核、所述多個輸入特徵圖及所述計算查找表儲存在所述記憶體陣列中。
- 如申請專利範圍第9項所述的儲存裝置,其中所述記憶體陣列的被分配給所述計算查找表的百分比是基於由所述命令所標識的所述運算。
- 一種控制記憶體裝置的方法,所述方法包括:向邏輯裸晶發送命令來利用內核及多個輸入特徵圖執行運 算,所述內核包括多個權重,所述多個輸入特徵圖包括多個值,所述運算包括確定所述內核的第一權重與所述多個輸入特徵圖中的兩個或更多個輸入特徵圖的所述多個值中的第一值的乘積;將所述內核及所述多個輸入特徵圖儲存在記憶體陣列中,將計算查找表儲存在所述記憶體陣列中,所述計算查找表具有多個列,所述多個列中的列對應於所述內核的所述多個權重中的一者,所述計算查找表具有多個行,所述多個行中的行對應於所述多個輸入特徵圖的所述值中的一者,其中在所述計算查找表中的位置處儲存有結果值,所述位置對應於所述多個列中的列及所述多個行中的行,所述結果值是與所述列對應的所述權重和與所述行對應的所述值的所述乘積。
- 如申請專利範圍第11項所述的方法,更包括:將所述第一權重輸入到第一列解碼器中以將所述計算查找表的與所述第一權重對應的所述列載入到列緩衝器中,以及將所述第一權重輸入到第二列解碼器中以將所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖的所述第一值載入到中間緩衝器中。
- 如申請專利範圍第12項所述的方法,更包括:從所述中間緩衝器接收所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的所述第一值,針對所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖中的每一者的每一第一值,存取所述列緩衝器中與和所述第一值對應的所述行對應的位置處的所述結果值,以及將所述結果值輸出到讀取緩衝器。
- 如申請專利範圍第13項所述的方法,更包括:在接收到所述中間緩衝器中所述第一值的每一者的所述結果值時,將每一第一值的所述結果值輸出到所述邏輯裸晶,以及由處理元件處理每一第一值的所述結果值。
- 如申請專利範圍第14項所述的方法,其中由所述處理元件進行的處理是:接收與和第一輸入特徵圖對應的所述第一值對應的所述結果值,並將所接收的所述結果值與所述第一輸入特徵圖的其他所接收的結果值進行組合以產生所述第一輸入特徵圖的輸出值。
- 如申請專利範圍第11項所述的方法,更包括:向所述邏輯裸晶發送第二命令來利用第二內核及第二多個輸入特徵圖執行第二運算,以及將第二計算查找表儲存在所述記憶體陣列中,所述第二計算查找表具有多個列,所述第二計算查找表的所述多個列中的列對應於所述第二內核的多個權重中的一者,所述第二計算查找表具有多個行,所述第二計算查找表的所述多個行中的行對應於所述第二多個輸入特徵圖的值中的一者,其中在所述第二計算查找表中的位置處儲存有第二結果值,所述位置對應於所述第二計算查找表的所述多個列中的列及所述多個行中的行,所述結果值是與所述列對應的所述權重和與所述行對應的所述值的乘積。
- 如申請專利範圍第16項所述的方法,其中所述第二命令是執行卷積運算,將所述第二內核與所述第二多個輸入特徵圖中的兩個或更多個輸入特徵圖進行卷積。
- 如申請專利範圍第11項所述的方法,其中所述命令是執行矩陣乘法運算,將所述內核與所述多個輸入特徵圖中的所述兩個或更多個輸入特徵圖相乘。
- 如申請專利範圍第11項所述的方法,更包括:基於所述命令而將所述內核、所述多個輸入特徵圖及所述計算查找表儲存在所述記憶體陣列中。
- 如申請專利範圍第19項所述的方法,其中所述記憶體陣列的被分配給所述計算查找表的百分比是基於由所述命令所標識的所述運算。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762599534P | 2017-12-15 | 2017-12-15 | |
US62/599,534 | 2017-12-15 | ||
US15/916,228 US11119677B2 (en) | 2017-12-15 | 2018-03-08 | HBM based memory lookup engine for deep learning accelerator |
US15/916,228 | 2018-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201931124A TW201931124A (zh) | 2019-08-01 |
TWI739029B true TWI739029B (zh) | 2021-09-11 |
Family
ID=66815998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107130961A TWI739029B (zh) | 2017-12-15 | 2018-09-04 | 儲存裝置及控制記憶體裝置的方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11119677B2 (zh) |
JP (1) | JP7232633B2 (zh) |
KR (2) | KR102672941B1 (zh) |
CN (1) | CN110058802B (zh) |
TW (1) | TWI739029B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687759B2 (en) * | 2018-05-01 | 2023-06-27 | Semiconductor Components Industries, Llc | Neural network accelerator |
CN112334915A (zh) * | 2018-06-25 | 2021-02-05 | 奥林巴斯株式会社 | 运算处理装置 |
US11171115B2 (en) | 2019-03-18 | 2021-11-09 | Kepler Computing Inc. | Artificial intelligence processor with three-dimensional stacked memory |
US11836102B1 (en) * | 2019-03-20 | 2023-12-05 | Kepler Computing Inc. | Low latency and high bandwidth artificial intelligence processor |
US20200356836A1 (en) * | 2019-05-07 | 2020-11-12 | Apple Inc. | Fast deep learning fully-connected column-major implementation |
US11152343B1 (en) | 2019-05-31 | 2021-10-19 | Kepler Computing, Inc. | 3D integrated ultra high-bandwidth multi-stacked memory |
US11844223B1 (en) | 2019-05-31 | 2023-12-12 | Kepler Computing Inc. | Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging |
CN112684977B (zh) * | 2019-10-18 | 2024-05-28 | 旺宏电子股份有限公司 | 存储器装置及其存储器内计算方法 |
KR20210053384A (ko) | 2019-11-01 | 2021-05-12 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
TWI722797B (zh) * | 2020-02-17 | 2021-03-21 | 財團法人工業技術研究院 | 記憶體內運算器及其運算方法 |
KR20220034542A (ko) | 2020-09-11 | 2022-03-18 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102430982B1 (ko) * | 2021-06-10 | 2022-08-11 | 삼성전자주식회사 | 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법 |
CN115469800A (zh) | 2021-06-10 | 2022-12-13 | 三星电子株式会社 | 数据处理***以及用于访问异构存储器***的方法 |
US11791233B1 (en) | 2021-08-06 | 2023-10-17 | Kepler Computing Inc. | Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging |
CN113408713B (zh) * | 2021-08-18 | 2021-11-16 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201308545A (zh) * | 2011-08-12 | 2013-02-16 | Nanya Technology Corp | 半導體封裝及形成半導體封裝的方法 |
US20160098200A1 (en) * | 2014-10-01 | 2016-04-07 | Zvi GUZ | In-memory popcount support for real time analytics |
US20160379115A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1083388A (ja) * | 1996-05-20 | 1998-03-31 | Matsushita Electric Ind Co Ltd | 直交変換装置 |
US8890215B2 (en) | 1997-10-08 | 2014-11-18 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7305540B1 (en) | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US7055018B1 (en) | 2001-12-31 | 2006-05-30 | Apple Computer, Inc. | Apparatus for parallel vector table look-up |
US8390035B2 (en) | 2009-05-06 | 2013-03-05 | Majid Bemanian | Massively parallel interconnect fabric for complex semiconductor devices |
US8885890B2 (en) * | 2010-05-07 | 2014-11-11 | Microsoft Corporation | Depth map confidence filtering |
US9727113B2 (en) | 2013-08-08 | 2017-08-08 | Linear Algebra Technologies Limited | Low power computational imaging |
US9954533B2 (en) | 2014-12-16 | 2018-04-24 | Samsung Electronics Co., Ltd. | DRAM-based reconfigurable logic |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
JP6658033B2 (ja) | 2016-02-05 | 2020-03-04 | 富士通株式会社 | 演算処理回路、および情報処理装置 |
US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
KR102479212B1 (ko) * | 2016-08-17 | 2022-12-20 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
-
2018
- 2018-03-08 US US15/916,228 patent/US11119677B2/en active Active
- 2018-09-04 TW TW107130961A patent/TWI739029B/zh active
- 2018-10-30 KR KR1020180131348A patent/KR102672941B1/ko active IP Right Grant
- 2018-12-11 JP JP2018231630A patent/JP7232633B2/ja active Active
- 2018-12-14 CN CN201811532772.4A patent/CN110058802B/zh active Active
-
2021
- 2021-09-13 US US17/473,532 patent/US11681451B2/en active Active
-
2023
- 2023-05-11 US US18/315,821 patent/US20230289081A1/en active Pending
-
2024
- 2024-05-30 KR KR1020240070657A patent/KR20240083094A/ko active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201308545A (zh) * | 2011-08-12 | 2013-02-16 | Nanya Technology Corp | 半導體封裝及形成半導體封裝的方法 |
US20160098200A1 (en) * | 2014-10-01 | 2016-04-07 | Zvi GUZ | In-memory popcount support for real time analytics |
US20160379115A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
Also Published As
Publication number | Publication date |
---|---|
US11681451B2 (en) | 2023-06-20 |
JP7232633B2 (ja) | 2023-03-03 |
JP2019109886A (ja) | 2019-07-04 |
KR20240083094A (ko) | 2024-06-11 |
US11119677B2 (en) | 2021-09-14 |
US20230289081A1 (en) | 2023-09-14 |
TW201931124A (zh) | 2019-08-01 |
CN110058802A (zh) | 2019-07-26 |
KR102672941B1 (ko) | 2024-06-07 |
KR20190072404A (ko) | 2019-06-25 |
CN110058802B (zh) | 2024-03-15 |
US20210405877A1 (en) | 2021-12-30 |
US20190187898A1 (en) | 2019-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI739029B (zh) | 儲存裝置及控制記憶體裝置的方法 | |
EP3557485B1 (en) | Method for accelerating operations and accelerator apparatus | |
EP3557425B1 (en) | Accelerator and system for accelerating operations | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
CN110678840B (zh) | 张量寄存器文件 | |
CN110678841B (zh) | 张量处理器指令集架构 | |
TW201942808A (zh) | 深度學習加速器及加快深度學習操作的方法 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
US11355175B2 (en) | Deep learning accelerator and random access memory with a camera interface | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
US20200356809A1 (en) | Flexible pipelined backpropagation | |
WO2024027039A1 (zh) | 数据处理方法、装置、设备和可读存储介质 | |
WO2021206974A1 (en) | Deep learning accelerator and random access memory with separate memory access connections | |
WO2022179075A1 (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
US20220044107A1 (en) | Optimized sensor fusion in deep learning accelerator with integrated random access memory | |
US20230153616A1 (en) | Multiply-accumulate sharing convolution chaining for efficient deep learning inference | |
CN111143766A (zh) | 人工智能处理器处理二维复数矩阵的方法和设备 | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN114662647A (zh) | 处理用于神经网络的层的数据 | |
US11138135B2 (en) | Scale-out high bandwidth memory system | |
EP4296900A1 (en) | Acceleration of 1x1 convolutions in convolutional neural networks | |
Pinhao et al. | Sparse matrix multiplication on a reconfigurable many-core architecture | |
TW202131190A (zh) | 記憶體模組以及用於在記憶體內進行計算的方法 | |
TW202107279A (zh) | 資料處理 |