TWI718336B - Dpu操作用的系統 - Google Patents
Dpu操作用的系統 Download PDFInfo
- Publication number
- TWI718336B TWI718336B TW106130354A TW106130354A TWI718336B TW I718336 B TWI718336 B TW I718336B TW 106130354 A TW106130354 A TW 106130354A TW 106130354 A TW106130354 A TW 106130354A TW I718336 B TWI718336 B TW I718336B
- Authority
- TW
- Taiwan
- Prior art keywords
- dram
- dpu
- row
- random
- array
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/402—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration individual to each memory cell, i.e. internal refresh
- G11C11/4023—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration individual to each memory cell, i.e. internal refresh using field effect transistors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/403—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration common to a multiplicity of memory cells, i.e. external refresh
- G11C11/405—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration common to a multiplicity of memory cells, i.e. external refresh with three charge-transfer gates, e.g. MOS transistors, per cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4091—Sense or sense/refresh amplifiers, or associated sense circuitry, e.g. for coupled bit-line precharging, equalising or isolating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4094—Bit-line management or control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4097—Bit-line organisation, e.g. bit-line layout, folded bit lines
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Dram (AREA)
- Memory System (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
一種系統,包含程式庫、編譯器、驅動器以及至少一個
動態隨機存取記憶體(DRAM)處理單元(DPU)。程式庫可判定對應於所接收命令的至少一個DPU操作。編譯器可形成用於DPU操作的至少一個DPU指令。驅動器可發送至少一個DPU指令至至少一個DPU。DPU可包含至少一個計算胞元陣列,其包含以具有至少一個行的陣列配置的多個基於DRAM的計算胞元,其中至少一行可包含至少三個列的基於DRAM的計算胞元,至少三個列的基於DRAM的計算胞元經組態以提供在至少三個列的第一列及第二列上操作的邏輯功能且經組態以在至少三個列中的第三列中儲存邏輯功能的結果。
Description
本專利申請案主張2016年10月27日申請的美國臨時專利申請案第62/413,973號的優先權權益,其全部揭露內容以引用的方式併入本文中。
本發明的實例實施例的態樣是關於一種用於整合及利用基於DRAM的處理單元(DRAM-Based Processing Unit;DPU)的軟體堆疊及程式化。
圖形處理單元(Graphics Processing Unit;GPU)及張量處理單元(Tensor Processing Unit;TPU)習知地用於深度學習處理。深度學習處理包含可能無法由GPU或TPU有效執行的高度並行化處理。
實例實施例提供一種可包含用以接收命令的介面、程式庫、編譯器、驅動器以及動態隨機存取記憶體(DRAM)處理單
元(DPU)的系統。程式庫可判定對應於由介面接收的命令的至少一個DPU操作。編譯器可形成用於對應於所接收命令的經判定至少一個DPU操作的至少一個DPU指令。驅動器可發送至少一個DPU指令至至少一個DPU。DPU可包含至少一個計算胞元陣列,所述至少一個計算胞元陣列包含以具有至少一個行的陣列方式配置的多個基於DRAM的計算胞元,其中所述至少一個行可包含至少三個列的基於DRAM的計算胞元,所述至少三個列的基於DRAM的計算胞元經組態以提供在至少三個列的第一列及第二列上操作的邏輯功能且經組態以在至少三個列中的第三列中儲存邏輯功能的結果。在一個實施例中,至少一個行的基於DRAM的計算胞元各自可包含三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元,且至少一個行的基於DRAM的計算胞元可提供反或(NOR)邏輯功能。在一個實施例中,DPU可更包括以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,其中所述至少一個行可包含至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在至少三個列的第一列及第二列上操作的隨機邏輯功能且經組態以在至少三個列中的第三列中儲存隨機邏輯功能的結果。在一個實施例中,至少一個行的基於DRAM的隨機計算胞元各自可包含三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。在一個實施例中,至少一個DPU操作可包含隨機計算操作。
實例實施例提供一種系統,可包括至少一個動態隨機存
取記憶體(DRAM)處理單元(DPU)、介面、程式庫、以及驅動器。每一DPU可包含至少一個計算胞元陣列。至少一個計算胞元陣列可包含:以具有至少一個行的陣列方式配置的多個基於DRAM的計算胞元,所述至少一個行可包含至少三個列的基於DRAM的計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在所述至少三個列的第一列及第二列上操作的邏輯功能且經組態以在至少三個列中的第三列中儲存邏輯功能的結果;以及以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,其中至少一個行可包含至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在至少三個列的第一列及第二列上操作的隨機邏輯功能且經組態以在至少三個列中的第三列中儲存隨機邏輯功能的結果。介面用以接收命令。程式庫用以判定對應於接收的命令的至少一個DPU操作。驅動器用以發送對應於所接收命令的至少一個DPU指令至至少一個DPU。在一個實施例中,至少一個行的基於DRAM的計算胞元各自可包含三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元,且至少一個行的基於DRAM的隨機計算胞元各自可包含三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。在一個實施例中,至少一個行的基於DRAM的計算胞元提供反或邏輯功能。在一個實施例中,至少一個DPU操作可包含隨機計算操作。
實例實施例提供一種系統,可包含:至少一個動態隨機存取記憶體(DRAM)處理單元(DPU),所述DPU可包含至少一
個隨機計算胞元陣列,所述至少一個隨機計算胞元陣列包括以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,其中至少一個行可包含至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在至少三個列的第一列及第二列上操作的隨機邏輯功能且經組態以在至少三個列中的第三列中儲存隨機邏輯功能的結果;程式庫,用以判定對應於接收的命令的至少一個隨機DPU操作;以及驅動器,用以發送對應於接收的命令的至少一個隨機DPU指令至包括多個基於DRAM的隨機計算胞元的至少一個DPU。在一個實施例中,至少一個行的基於DRAM的隨機計算胞元各自可包含三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
100、700:DPU
101a、101b:記憶體庫
102a、102b:子陣列
103:緩衝器
104:系統匯流排
105、105a、105b、105n:記憶體陣列片
106:資料胞元陣列
107:計算胞元陣列
107a、107b、107c、107d:計算胞元
108:記憶體陣列片內移位陣列
109:虛線
110:資料胞元陣列解碼器
111:計算胞元陣列解碼器
112e、112f:資料移位線
112:記憶體陣列片間移位陣列
113:記憶體陣列片間轉遞陣列
113g:第一資料轉遞線
113h:第二資料轉遞線
114:子陣列控制器
201:三電晶體一電容器(3T1C)DRAM計算胞元構形
202:一電晶體一電容器(1T1C)DRAM計算胞元構形
715:隨機資料陣列
716:轉換器至隨機陣列
900:系統架構
910:硬體層
911:周邊組件高速互連(PCIe)裝置
912:雙直列記憶體模組(DIMM)
920:程式庫及驅動器層
921:DPU程式庫
922:DPU驅動器
923:DPU編譯器
930:框架層
940:應用層
addr:位址
ALU:算術邏輯單元
BL:位元線
C1、C2:電容器
CNTL1、CNTL2、CNTL3、CNTL4:控制信號
FCL:轉遞控制線
FDL:資料轉遞線
FSL:轉遞區段線
ISLcL:記憶體陣列片間移位控制線
LATCH:栓鎖器
MUX:多工器
SA:感測放大器
SL:移位線
SLcL:左移位控制線
SML:移位遮罩線
SRcL:右移位控制線
T1:第一電晶體
T2:第二電晶體
T3:第三電晶體
T4、T5、T6、T112a、T112b、T112c、T112d、T113a、T113b、T113c、T113d、T113e、T113f:電晶體
WENX、WENY、WENR:寫入啟用線
WL、WLR、WLX、WLY:字線
在以下部分中,將參考圖式中所說明的例示性實施例描述本文中所揭露的主題的態樣,其中:圖1描繪根據本文中所揭露主題的基於動態隨機存取記憶體(DRAM)的處理單元(DPU)的實例實施例的方塊圖。
圖2A描繪可以用於計算胞元陣列中的計算胞元的三電晶體一電容器DRAM計算胞元構形的實例實施例。
圖2B描繪可以用於計算胞元陣列中的計算胞元的一電晶體一電容器DRAM計算胞元構形的替代實例實施例。
圖3描繪根據本文中所揭露主題的記憶體陣列片內移位陣列
的實例實施例。
圖4A描繪根據本文中所揭露主題的記憶體陣列片間移位陣列的實施例。
圖4B概念地描繪根據本文中所揭露主題的用於左記憶體陣列片間移位的相鄰計算胞元行中的兩個相同定位計算胞元之間的記憶體陣列片間移位互連組態。
圖4C概念地描繪根據本文中所揭露主題的在用於左記憶體陣列片間移位的相鄰計算胞元行中的兩個非相同定位計算胞元之間的記憶體陣列片間移位互連組態。
圖5描繪根據本文中所揭露主題的記憶體陣列片間轉遞陣列的實施例。
圖6A至圖6G描繪根據本文中所揭露主題的可由DPU提供的基於反或邏輯的操作。
圖7描繪根據本文中所揭露主題的包括隨機資料區的DPU的實例實施例的方塊圖。
圖8A及圖8B分別描繪用於可轉換成多工操作的加法操作及可轉換成及(AND)邏輯操作的乘法操作的隨機計算操作。
圖9描繪根據本文中所揭露主題的包括DPU的系統架構。
在以下詳細描述中,闡述眾多特定細節以便提供對本發明的透徹理解。然而,熟習此項技術者將理解,可在無此等特定細節的情況下實踐所揭露態樣。在其他情況下,為了不混淆本文中所揭露的主題,尚未詳細描述熟知方法、程序、組件以及電路。
貫穿本說明書對「一個實施例」或「一實施例」的參考意謂結合實施例所描述的特定特徵、結構或特性可包括於本文中所揭露的至少一個實施例中。因此,片語「在一個實施例中」或「在一實施例中」或「根據一個實施例」(或具有類似意思的其他片語)貫穿本說明書在各種位置的出現可能未必全部指同一實施例。另外,特定特徵、結構或特性可在一或多個實施例中以任何合適的方式組合。就此而言,如本文中所使用,詞語「例示性」意謂「充當實例、例子或說明」。不應將本文中描述為「例示性」的任一實施例解釋為有必要比其他實施例較佳或有利。另外,取決於本文中論述的上下文,單數術語可包含對應複數形式,且複數術語可包含對應單數形式。另外應注意,本文中所展示及論述的各種圖式(包含組件圖)僅用於說明性目的,且未按比例繪製。類似地,僅用於說明性目的而展示各種波形及時序圖。舉例而言,為了清楚起見,可相對於其他元件放大一些元件的尺寸。另外,在認為適當時,已在諸圖中重複參考編號以指示對應及/或類似元件。
本文中所使用的術語僅出於描述特定例示性實施例的目的,且不意欲限制所主張主題。如本文中所使用,除非上下文另有清晰地指示,否則單數形式「一」以及「所述」意欲亦包含複數形式。應進一步理解,術語「包括」在用於本說明書中時規定所陳述的特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。如本文中所使用,術語「第一」、「第二」等被用作所述術語在前的名詞的標記,且不暗示任何類型的排序
(例如,空間、時間、邏輯等),除非明確地如此定義。此外,相同參考數字可用於跨越兩個或多於兩個圖指具有相同或類似功能性的部分、組件、區塊、電路、單元或模組。然而,此用法僅為簡化說明且易於論述起見;其不暗示此類組件或單元的建構或建築結構細節跨越所有實施例而相同,或此類通常被參考的部分/模組為實施本文中所揭露的特定實施例的教示的唯一方式。
除非另有定義,否則本文中使用的所有術語(包括技術及科學術語)具有與由熟習此主題所屬領域的一般技術者通常所理解相同的意義。應進一步理解,諸如常用詞典中所定義的術語的術語應被解釋為具有與其在相關技術的上下文中的意義一致的意義,且將不在理想化或過度正式意義上進行解釋,除非本文中明確地如此界定。
本文中所揭露主題提供可程式化及可重組態用於不同操作(諸如但不限於加法、乘法、移位、最大/最小,以及比較)的基於動態隨機存取記憶體(DRAM)的處理單元(DPU)。在一個實施例中,DPU是基於三電晶體及一電容器(3T1C)式DRAM程序及結構。在另一實施例中,DPU是基於具有微幅修改的一電晶體及一電容器(1T1C)式DRAM程序及結構。因此,DPU不含有特定計算邏輯電路(如加法器),但提供使用使用高度並行操作的記憶體胞元的計算。在一個實施例中,DPU可包含其中加法可轉換成多工操作且乘法可轉換成及邏輯操作的隨機計算陣列。
本文中所揭露主題亦提供系統架構,其包含具有框架延伸的環境(生態系統)、程式庫、驅動器、編譯器以及指令集架構(ISA)以程式化並重新組態DPU。
另外,本文中所揭露主題提供一種系統架構,其適合於資料中心及/或行動應用且提供替代GPU/ASIC(TPU)/FPGA機器學習應用的用於二進位及固定點計算的機器學習應用的記憶體中處理器(Processor-in-Memory;PIM)方案。在一個實施例中,本文中所揭露主題提供高效能、能效及低成本系統,其提供用於例如二進位權重神經網路的加速深度學習。
本文中所揭露主題是關於可使用動態隨機存取記憶體(DRAM)技術形成且可重組態及可程式化的基於DRAM的處理單元(DPU)。在一個實施例中,DPU可包含基於DRAM的記憶體胞元陣列及可經組態以執行不同操作(諸如加法、乘法、分類等)的基於DRAM的計算胞元陣列。
DPU的內部架構可包含連接至多個子陣列記憶體庫的系統匯流排。在一個實施例中,系統匯流排可經組態以提供子陣列的H樹連接記憶體庫。每一子陣列可包含本地控制器,且每一個別子陣列可單獨地或同時被啟動。在一個實施例中,基於DRAM的胞元可分成兩個陣列,資料胞元陣列及計算胞元陣列。在一個實施例中,計算胞元陣列可藉由基於DRAM的記憶體胞元實施。在另一實施例中,計算胞元陣列可藉由具有邏輯電路的基於DRAM的記憶體胞元實施。DPU內部架構亦可包含資料移位及資料移動電路。在一些實施例中,可存在可經組態用於隨機資料計算的第三基於DRAM的胞元陣列。
圖1描繪根據本文中所揭露主題的DPU 100的實例實施例的方塊圖。DPU 100可包含一或多個記憶體庫101a至101m,其中在圖1中僅僅描繪記憶體庫101a及101b。每一記憶體庫101
可包含一或多個子陣列102a至102n,其中在圖1中僅僅描繪子陣列102a及子陣列102b。每一記憶體庫101亦可包含緩衝器103。緩衝器103可耦接至個別子陣列102及系統匯流排104。緩衝器103可讀取記憶體庫102中的整個列,且接著將列寫回至同一記憶體庫或另一記憶體庫。緩衝器103亦可廣播列資料的複本至子陣列102中的多個記憶體陣列片105a至105n。在一個實施例中,記憶體庫101及系統匯流排104可經組態以提供H樹連接記憶體庫。
每一子陣列102可包含一或多個記憶體陣列片(或通路)105,其中在圖1中描繪子陣列102a的記憶體陣列片105a至105n。每一記憶體陣列片105為可包含資料胞元陣列106、計算胞元陣列107以及記憶體陣列片內移位陣列108的DPU 100的區。實例記憶體陣列片105在圖1中被指示為由虛線109圍封。每一記憶體陣列片105可與相鄰記憶體陣列片共用資料胞元陣列解碼器110、計算胞元陣列解碼器111、記憶體陣列片間移位陣列112以及記憶體陣列片間轉遞陣列113。在一個實施例中,資料胞元陣列解碼器110、計算胞元陣列解碼器111以及記憶體陣列片間移位陣列112可與子陣列控制器114一起交替實體地配置於相鄰記憶體陣列片105之間。在一個實施例中,解碼器110及解碼器111可操作為習知DRAM型記憶體解碼器。
在一個實施例中,每一記憶體陣列片105通信地耦接至子陣列控制器114。每一子陣列控制器114可經組態為獨立於其他子陣列控制器114。子陣列控制器114可自DRAM位址匯流排接收作為位址(addr)的指令。回應於位址(亦即,位址信號),子
陣列控制器114可將經解碼位址作為輸出提供至資料胞元陣列106及計算胞元陣列107中的任一者或兩者。亦即,子陣列控制器114可輸出藉由用於相關聯資料胞元陣列106的解碼器110解碼的來源/目的地(src/dst)位址,且在計算胞元陣列107的情況下,可輸出藉由解碼器111解碼的操作/計算(op/cal)位址。子陣列控制器114亦可自DRAM匯流排接收作為位址的指令,其使兩個或大於兩個子陣列控制器114以協調方式操作。子陣列控制器114亦可控制資料移動電路,諸如控制記憶體陣列片內移位陣列108、記憶體陣列片間移位陣列112以及記憶體陣列片間轉遞陣列113。
每一資料胞元陣列106可包含在至少一個行及至少一個列中配置的一或多個動態隨機存取記憶體(DRAM)胞元。在一個實施例中,資料胞元陣列106可經組態為習知DRAM胞元陣列。在一個實施例中,資料胞元陣列106可包含2K行及16列。在另一實施例中,資料胞元陣列106可包含少於或多於2K行及/或少於或多於16列。
每一計算胞元陣列107可包含在至少一個行及至少一個列中配置的一或多個計算胞元。計算胞元陣列107中行的數目與資料胞元陣列106中行的數目相同。在一個實施例中,計算胞元陣列107可包含2K行及16列。在另一實施例中,計算胞元陣列107可包含少於或多於2K行及/或少於或多於16列。
圖2A描繪可以用於計算胞元陣列107中的計算胞元的三電晶體及一電容器(3T1C)式DRAM計算胞元構形201的實例實施例。如圖2A中所描繪,在列X中的3T1C計算胞元包含具有電耦接至寫入位元線(寫入BL(Write BL))的源極端子、電耦接至
電容器C1的第一端子及第二電晶體T2的閘極端子的汲極端子以及電耦接至寫入啟用線(WENX)的閘極端子的第一電晶體T1。電容器C1的第二端子電耦接至接地線。電晶體T2包含電耦接至接地線的源極端子,以及電耦接至第三電晶體T3的源極端子的汲極端子。第三電晶體T3包含電耦接至字線(WLX)的閘極端子,以及電耦接至讀取位元線(讀取BL(Read BL))的汲極端子。3T1C計算胞元構形201包含具有電耦接至讀取BL的輸入端及電耦接至寫入BL的輸出端的感測放大器SA。
在列Y中的計算胞元及在列R中的計算胞元亦可包含類似於列X中的計算胞元的配置以3T1C DRAM組態配置的三個電晶體T1至T3及電容器C1。圖2A中描繪的實例三個計算胞元及感測放大器SA經組態以提供反或邏輯操作,亦即X反或Y邏輯操作,其中結果儲存於列R中。儘管3T1C DRAM計算胞元的僅僅一行經明確地描繪於圖2A中,但應理解在另一實施例中,3T1C計算胞元可經組態成多個行(亦即,2K行)。亦應理解在另一實施例中,可提供大於三列。另外,雖然圖2A中描繪的3T1C DRAM計算胞元組態提供反或邏輯操作,但應理解3T1C DRAM計算胞元構形201的反或邏輯操作可用以提供功能操作,諸如但不限於互斥反或(XNOR)、加法(ADD)、選擇(SET)、最大值(MAX)、正負號(SIGN)、多工(MUX)、條件和加法邏輯(CSA)、乘法、位1計數以及比較(COMPARE)。移位陣列108及112亦提供移位功能。
圖2B描繪可以用於圖1的計算胞元陣列107中的計算胞元的一電晶體及一電容器(1T1C)式DRAM計算胞元構形202的
替代實例實施例。如圖2B中所描繪,1T1C DRAM計算胞元包含具有電連接至電容器C2的第一端的源極端子、電連接至位元線(BL)的汲極端子以及電連接至字線(WL)的閘極端子的電晶體T4。電容器C2的第二端子電耦接至接地線。位元線BL電耦接至感測放大器SA的輸入端。感測放大器SA的輸出端電耦接至多工器(MUX)的第一輸入端、電晶體T5的汲極端子以及算術邏輯單元(ALU)的輸入端。MUX的輸出端電耦接至栓鎖器(LATCH)的輸入端。電晶體T5的源極端子電耦接至栓鎖器的輸出端。ALU的輸出端電耦接至MUX的第二輸入端。圖2B中的電晶體T5、MUX、LATCH及ALU各自分別自控制器114接收控制信號CNTL1至CNTL4。在一個實施例中,ALU可經組態以提供反或功能。儘管電耦接至圖2B中的位元線BL的邏輯電路提供反或邏輯操作,但應理解電耦接至位元線BL的邏輯電路(亦即ALU)可提供其他功能操作,諸如但不限於互斥反或(XNOR)、加法(ADD)、選擇(SET)、MAX、SIGN、多工(MUX)、條件和加法邏輯(CSA)、乘法、位1計數以及COMPARE。移位陣列108及112亦提供移位功能。應理解僅僅一個1T1C計算胞元在圖2B中描繪且可提供1T1C計算胞元的多個行及列。
如可在圖2A及圖2B中看到,DPU的計算胞元不包含特定複雜計算邏輯,但實際上包含具有提供執行多個不同類型計算能力的可重程式化性質的相對簡單構形。另外,DPU構形可經配置以利用記憶體結構中固有的大規模並行度以更快且更有效地執行更多計算。
圖3描繪根據本文中所揭露主題的記憶體陣列片內移位
陣列108實例實施例。為了簡化記憶體陣列片內移位陣列108的描述,考慮為四行計算胞元107寬的記憶體陣列片105,諸如圖3中描繪。記憶體陣列片內移位陣列108包含以陣列方式配置的多個電晶體T6(其中圖3中指示僅僅一個電晶體T6),2n移位線SLs(其中n為記憶體陣列片105中的計算胞元的行),n+2個左移位控制線SLcL,2個右移位控制線SRcL以及n個移位遮罩線SML。記憶體陣列片內移位陣列108的電晶體T6中的一些電連接於寫入BL與2n移位線SL之間,且記憶體陣列片內移位陣列108的其他電晶體T6連接於讀取BL與2n移位線SL之間。此等電晶體T6的閘極電耦接至n+2個左移位控制線SLcL及2個右移位控制線SRcL。記憶體陣列片內移位陣列108的其他電晶體T6電連接於n個移位遮罩線SML與2n個移位線SL之間。記憶體陣列片內移位陣列108的控制線電耦接至與記憶體陣列片105相關聯的子陣列控制器114。
記憶體陣列片內移位陣列108可藉由控制線SLcL及SRcL上的適當信號在記憶體陣列片105內向左或向右移位資料。對於左移位,資料可以正負號位元填充,且每一操作移位1位元或(n-1)位元,其中n為每一記憶體陣列片105的行的數目。對於右移位,資料可以如由指令控制的0或1填充,且每一記憶體陣列片(MAT)移位20、21、…、2k-1、2k直至行的數目,其中2k為行的數目。
圖4A描繪根據本文中所揭露主題的記憶體陣列片間移位陣列112的實施例。為了簡化記憶體陣列片間移位陣列112的描述,考慮其中記憶體陣列片105寬度為兩行計算胞元107的組
態,諸如圖4A至圖4C中所描繪。亦即,每一記憶體陣列片105包含計算胞元107a的第一行及計算胞元107b的第二行。記憶體陣列片間移位陣列112包含電晶體T112a及T112b、電晶體T112c及T112d、資料移位線112e及112f,以及記憶體陣列片間移位控制線ISLcL。在記憶體陣列片內,電晶體T112a包含電耦接至計算胞元107a的第一行的讀取BL的源極端子,電耦接至資料移位線112e的汲極端子。電晶體T112b包含電耦接至計算胞元107b的第二行的讀取BL的源極端子,電耦接至資料移位線112f的汲極端子。資料移位線112e及112f電耦接至緩衝器103(圖4A中未展示)。在不同記憶體陣列片之間,電晶體T112c包含分別電耦接至相鄰記憶體陣列片中的資料移位線112e的源極端子及汲極端子。電晶體T112d包含分別電耦接至相鄰記憶體陣列片中的資料移位線112f的源極端子及汲極端子。電晶體T112c及T112d的閘極分別電耦接至分別不同記憶體陣列片間移位控制線ISLcL。記憶體陣列片間移位陣列112可藉由控制線ISLcL上的適當信號在不同記憶體陣列片之間向左或向右移位資料。記憶體陣列片間移位陣列112的控制線電耦接至與記憶體陣列片105相關聯的子陣列控制器114。
圖4B概念地描繪根據本文中所揭露主題的用於左記憶體陣列片間移位的相鄰計算胞元行105a及105b中的兩個相同定位計算胞元之間的記憶體陣列片間移位互連組態。圖4B的互連組態可藉由被加重的操作性互連節點概念地描繪。舉例而言,電晶體T112c及T112d被啟動以使得導電路徑存在於每一電晶體之間,藉此連接計算胞元行105a(在左側)與105b(在右側)之間的資料移位線112e及112f。電晶體T112c及T112d的閘極端子電連接至作
用中記憶體陣列片間移位控制線ISLcL。記憶體陣列片105b中的電晶體T112a及T112b被啟動以使得記憶體陣列片105b中的計算胞元107a的讀取BL電連接至記憶體陣列片105b左邊的記憶體陣列片105a中的計算胞元107a的寫入BL,且使得記憶體陣列片105b中的計算胞元107b的讀取BL電連接至記憶體陣列片105b左邊的記憶體陣列片105a中的計算胞元107b的寫入BL。
圖4C概念地描繪根據本文中所揭露主題的在用於左記憶體陣列片間移位的相鄰計算胞元行105a及105b中的兩個非相同定位計算胞元之間的記憶體陣列片間移位互連組態。圖4C的互連組態可藉由被加重的操作性互連節點概念地描繪。舉例而言,電晶體T112c及T112d被啟動以使得導電路徑存在於每一電晶體之間,藉此連接計算胞元行105a(在右側)與105b(在左側)之間的資料移位線112e及112f。電晶體T112c及T112d的閘極端子電連接至作用中記憶體陣列片間移位控制線ISLcL。記憶體陣列片105b中的電晶體T112a及T112b被啟動以使得記憶體陣列片105a中的計算胞元107a的讀取BL電連接至記憶體陣列片105a左邊的記憶體陣列片105b中的計算胞元107a的寫入BL,且使得記憶體陣列片105a中的計算胞元107b的讀取BL電連接至記憶體陣列片105a左邊的記憶體陣列片105b中的計算胞元107a的寫入BL。
圖5描繪根據本文中所揭露主題的記憶體陣列片間轉遞陣列113的實施例。為了簡化記憶體陣列片間轉遞陣列113的描述,考慮其中記憶體陣列片105為兩行計算胞元107寬的組態,諸如圖5中所描繪。亦即,每一記憶體陣列片105包含計算胞元107a的第一行及計算胞元107b的第二行。在記憶體陣列片105情
況下,記憶體陣列片間轉遞陣列113包括電晶體T113a及T113b、電晶體T113c及T113d以及電晶體T113e及T113f、2n個資料轉遞線FDL(其中n為記憶體陣列片中的計算胞元行的數目)、轉遞控制線FCL,以及2m個轉遞區段線FSL(其中m為區段的數目)。電晶體T113a及T113b的源極端子分別電連接計算胞元107a的第一行的寫入BL及讀取BL。電晶體T113a及T113b的汲極端子電耦接至第一資料轉遞線FDL 113g。電晶體T113c及T113d的源極端子分別電連接計算胞元107b的第二行的寫入BL及讀取BL。電晶體T113c及T113d的汲極端子電耦接至第二資料轉遞線FDL 113h。電晶體T113e及T113f的源極端子分別電耦接至電晶體T113a及T113b的閘極端子。電晶體T113e及T113f的汲極端子兩者均耦接至相同轉遞第二線FSL。電晶體T113e及T113f的閘極端子分別耦接至不同轉遞控制線FCL。記憶體陣列片間轉遞陣列113可藉由轉遞控制線FCL上的適當信號在記憶體陣列片之間轉遞資料。記憶體陣列片間轉遞陣列113的控制線電耦接至與資料在其間轉遞的記憶體陣列片105相關聯的子陣列控制器114。
圖6A至圖6G描繪根據本文中所揭露主題的可由DPU提供的基於反或邏輯的操作。在圖6A至圖6G中,第一運算元可儲存於列X中且第二運算元可儲存於列Y或列W中。圖6A至圖6G中的箭頭表示計算胞元的整個列的反或邏輯操作的輸入及輸出流。舉例而言,圖6A中的列X可表示儲存於列X的計算胞元中的運算元的整個列。對儲存於列X中的運算元及儲存於列Y中的運算元的反或邏輯操作的結果儲存於結果列R中。在一個實施例中,列X及列Y中的運算元可包含例如100行(亦即,x1、x2、…、
x100及y1、y2、…、y100)且結果可儲存於列R(亦即,r1、r2、…、r100)中。亦即,xi NOR yi=ri,其中i為行索引。在另一實施例中,列X可表示列中的計算胞元的僅僅選定群組。
圖6B描繪基於前綴Kogge-Stone加法器的對於N位數目的實例完整加法器操作。在圖6B中,第一N位運算元儲存於列X中且第二N位運算元儲存於列Y中。對於圖6B中描繪的實例加法操作,計算中間項G0、P0、G1、P1、G2、P2、…、GlogN+1以及PlogN+1。圖6B的最上區塊表示使用來自列X及Y的輸入運算元判定G0及P0的五個單獨操作。在第一操作中,最上區塊判定列X的反相(亦即,~X),其儲存於列1中。第二操作判定列Y的反相(亦即,~Y),其儲存於列2中。第三操作判定操作列X反或列Y,其儲存於列3中。第四操作判定操作G0=列1 NOR列2,其儲存於列4中。第五操作判定P0=列3 NOR列4,其儲存於列5中。
在圖6B的中間區塊中,來自最上區塊的中間結果G0及P0用以判定中間結果Gi+1及Pi+1,其中i為行索引。亦即,圖6A的最上區塊中判定的中間結果G0及P0用以判定中間結果G1及P1。中間結果G1及P1用以判定中間結果G2及P2等以判定中間結果GlogN+1及PlogN+1。在圖6B的最下區塊中,結果列R1及R2分別儲存用於完整加法器操作的進位結果及求和結果。
圖6C描繪可由3T1C DRAM計算胞元構形201提供的實例選擇器操作。列1儲存列X的反相(亦即,~X)的中間結果。列2儲存列Y的反相(亦即,~Y)的中間結果。列3儲存列S的反相(亦即,~S)的中間結果。列4儲存列1反或列3的中間結
果。列5儲存列2反或列S的中間結果。列6儲存列4反或列5的中間結果。列R儲存列6的反相的結果,亦即,S?X:Y。
圖6D描繪可由3T1C DRAM計算胞元構形201提供的替代實例選擇器操作。列1儲存列X的反相(亦即,~X)的中間結果。列2儲存列S的反相(亦即,~S)的中間結果。列3儲存列1反或列3的中間結果。列4儲存列X的反相(亦即,~X)的中間結果。列R儲存列3反或列4的結果,亦即,S?X:~X。
圖6E描繪可由3T1C DRAM計算胞元構形201提供的實例最大值/最小值(MIN)操作。列1儲存列Y的反相(亦即,~Y)的中間結果。列2儲存列X+(~Y+1)的中間結果。列3儲存Cout>>n的中間結果。列4儲存Cout?X:Y的中間結果。列R儲存MAX(X:Y)的結果。
圖6F描繪可由3T1C DRAM計算胞元構形201提供的實例1位元乘法操作。列1儲存列X反或列W的中間結果。列2儲存列X反或列1的中間結果。列3儲存列W反或列1的中間結果。結果列R儲存列2反或列3的結果,亦即,列XXNOR列W的結果。
圖6G描繪可由3T1C DRAM計算胞元構形201提供的實例多位元乘法操作。在圖6G的上區塊中,列1儲存列W的反相(亦即,~W)的中間結果。列2儲存列X的反相經左移位2i次(亦即,~X<<2i)的中間結果,其中i為索引。列3儲存列1反或列2的中間結果,亦即,PPi=~W NOR ~X<<2i。在圖6G的下部區塊中,列1儲存列PP0求和(SUM)列PPi(其為Σ PPi)的中間結果。列2儲存列1互斥反或列Wsign的中間結果。列R儲存X*W的結
果。
圖7描繪根據本文中所揭露主題的包含隨機資料區715的DPU 700的實例實施例的方塊圖。DPU 700的具有與圖1中描繪的DPU 100的組件相同的參考指示符的各種組件是類似的且此處已省去此等類似組件的描述。DPU 700的子陣列102包含隨機資料陣列715及轉換器至隨機陣列716,以及(真實)資料胞元陣列106、計算胞元陣列107以及記憶體陣列片內移位陣列108。
每一隨機資料陣列715可包含在至少一個行及至少一個列中配置的一或多個隨機計算胞元。在一個實施例中,隨機資料陣列715可包含2K行及16列。隨機資料陣列715中的行的數目與資料胞元陣列106及計算胞元陣列107中的行的數目相同。在另一實施例中,隨機資料陣列715可包含少於或多於2K行及/或少於或多於16列。在隨機資料陣列715中,使用「1」存在的機率且2n位元用以表示n位元值。轉換器至隨機陣列716中的隨機數產生器可用於將實數轉換成隨機數。位1計數操作可用於將隨機數轉換回至實數。
藉由使用隨機計算方法,加法可轉換成多工操作且乘法可轉換成及邏輯操作。舉例而言,圖8A描繪提供作為多工操作的隨機加法操作的電路,且圖8B描繪提供作為及邏輯操作的隨機乘法操作的電路。用於隨機計算的習知技術需要巨大記憶體容量;然而,本文中所揭露主題可用於提供高效隨機計算,此是因為基於DRAM的DPU能夠執行大並行AND及MUX操作。使用本文中所揭露的DPU的隨機計算亦使得有可能加速其中深度學習為典型應用的複雜操作。
圖9描繪根據本文中所揭露主題的包含DPU的系統架構900。系統架構900可包含硬體層910、程式庫及驅動器層920、框架層930以及應用層940。
硬體層910可包含具有嵌入的DPU(諸如本文中所描述的DPU)的硬體裝置及/或組件。裝置及/或組件的一個實施例可為可包含一或多個嵌入DPU的周邊組件高速互連(Peripheral Component Interconnect Express;PCIe)裝置911。裝置及/或組件的另一實施例可為可包含一或多個嵌入DPU的雙直列記憶體模組(Dual In-line Memory Module;DIMM)912。應理解,系統架構900的硬體層910不限於PCIe裝置及/或DIMM,但可包含系統單晶片(System on a Chip;SoC)裝置或可含有DPU的其他記憶體型裝置。可嵌入於硬體層910處的裝置及/或組件中的DPU可經組態為類似於圖1中的DPU 100及/或類似於圖7中的DPU 700。在任一實施例中,DPU的特定計算胞元陣列可經組態以包含3T1C計算胞元構形201(圖2A)或1T1C計算胞元構形202(圖2B)。
系統架構900的程式庫及驅動器層920可包含DPU程式庫921、DPU驅動器922以及DPU編譯器923。DPU程式庫921可經組態以針對可在應用層940處操作的不同應用為用於硬體層910中的DPU中的每一子陣列提供最佳映射功能性、資源分配功能性以及排程功能性。
在一個實施例中,DPU程式庫921可為框架層930提供可包含諸如移動、加法、乘法等的操作的高層級應用程式設計介面(application programming interface;API)。舉例而言,DPU程式庫921亦可包含用於標準型常式的實施,諸如但不限於可適用
於加速深度學習程序的前向卷積層及後向卷積層、池化層、正規化層,以及啟動層。在一個實施例中,DPU程式庫921可包含類API功能,其映射用於卷積神經網路(convolution neural network;CNN)的整個卷積層的計算。另外,DPU程式庫921可包含用於最佳化卷積層計算至DPU上的映射的類API功能。
DPU程式庫921亦可包含用於藉由將任務(批、輸出通道、像素、輸入通道、卷積核)內的任何個別或多個並行度映射成晶片、記憶體庫、子陣列及/或記憶體陣列片層級處的對應DPU並行度而最佳化資源分配的類API功能。另外,DPU程式庫921可包含在初始化及/或運行時間處提供權衡效能(亦即,資料移動流動)及功率消耗的最佳DPU組態的類API功能。由DPU程式庫921提供的其他類API功能可包含設計旋鈕型功能,諸如設定每一記憶體庫的作用中子陣列的數目、每一作用中子陣列的輸入特徵圖的數目、特徵圖的分割,及/或卷積核的再次使用方案。其他類API功能可藉由分配子陣列的特定任務(諸如卷積計算、通道總計及/或資料分派)提供額外資源分配最佳化。若運算元將在整數與隨機數之間轉換,則DPU程式庫921包含在滿足精度約束條件的同時最小化額外負擔的類API功能。在精度低於預期情況下,DPU程式庫921可包含再次使用用於隨機表示的額外位元計算值,或分流任務至其他硬體(諸如CPU)的類API功能。
DPU程式庫921亦可包含同時排程DPU中的經啟動子陣列,並排程資料移動以使得其藉由計算操作隱藏的類API功能。
DPU程式庫921的另一態樣包含用於DPU進一步開發的延伸介面。在一個實施例中,DPU程式庫921可提供用以使用反
或及移位邏輯直接程式化功能性以使得可提供除標準型操作(亦即,加法、乘法、MAX/MIN等)以外的操作的介面。延伸介面亦可提供介面,以使得並非由DPU程式庫921特定支援的操作可在程式庫及驅動器層920處分擔至SoC控制器(未展示)、中央處理單元/圖形處理單元(central processing unit/graphics processing unit;CPU/GPU)組件及/或CPU/張量處理單元(CPU/Tensor Processing Unit;CPU/TPU)組件。DPU程式庫921的又一態樣提供類API功能以在DPU記憶體不正用於計算時使用DPU的記憶體作為記憶體的延伸。
DPU驅動器922可經組態以提供在硬體層910處的DPU、DPU程式庫921以及在較高層處的作業系統(operating system;OS)之間的介面連接以將DPU硬體層整合至系統中。亦即,DPU驅動器922將DPU曝露於系統OS及DPU程式庫921。在一個實施例中,DPU驅動器922可在初始化時提供DPU控制。在一個實施例中,DPU驅動器922可發送呈DRAM型位址或DRAM型位址的序列形式的指令至DPU且可控制至DPU中及自DPU的資料移動。除了處置DPU至CPU及/或DPU至GPU通信之外,DPU驅動器922可提供多DPU通信。
DPU編譯器923可將來自DPU程式庫921的DPU碼編譯成呈由DPU驅動器922使用以控制DPU的記憶體位址形式的DPU指令。由DPU編譯器923產生的DPU指令可為在DPU中的一個及/或兩個列上操作的單個指令;向量指令,及/或收集的向量、操作讀取指令。
框架層930可經組態以向程式庫及驅動器層920以及硬
體層910提供使用者友好介面。在一個實施例中,框架層930可提供與在應用層940處的廣泛範圍的應用相容且使DPU硬體層910對於使用者透明的使用者友好介面。在另一實施例中,框架層930可包括添加量化功能至現有習知方法的框架延伸部,諸如但不限於Torch7型應用及TensorFlow型應用。在一個實施例中,框架層930可包括添加量化功能至訓練演算法。在另一實施例中,框架層930可提供對現有除法、乘法以及平方根的批正規化方法的覆寫,以成為除法、乘法以及平方根的移位近似方法。在再一實施例中,框架層930可提供允許使用者設定用於計算的位元數目的延伸。在另一實施例中,框架層930提供包覆來自DPU程式庫及驅動器層920的多DPU API至框架層930的能力,以使得使用者可類似於多個GPU的使用而使用硬體層處的多個DPU。框架層930的再一特徵允許使用者指派功能給在硬體層910處的DPU或GPU。
應用層940可包含廣泛範圍的應用,諸如但不限於影像標籤處理、自駕駛/引導車輛、AlphaGo型深度頭腦應用及/或話音研究。
如將由熟習此項技術者認識到,可跨廣泛範圍的應用修改本文中所描述的新穎概念且使其變化。因此,所主張主題的範疇不應限於上文所論述的特定例示性教示中的任一者,而實際上由以下申請專利範圍界定。
100:DPU
101a、101b:記憶體庫
102a、102b:子陣列
103:緩衝器
104:系統匯流排
105a、105b、105n:記憶體陣列片
106:資料胞元陣列
107:計算胞元陣列
108:記憶體陣列片內移位陣列
109:虛線
110:資料胞元陣列解碼器
111:計算胞元陣列解碼器
112:記憶體陣列片間移位陣列
113:記憶體陣列片間轉遞陣列
114:子陣列控制器
addr:位址
Claims (20)
- 一種DPU操作用的系統,包括:介面,用以接收命令;程式庫,用以判定對應於所接收的所述命令的至少一個動態隨機存取記憶體(DRAM)處理單元(DPU)操作;編譯器,用以形成對應於所接收的所述命令的經判定所述至少一個DPU操作的至少一個DPU指令;以及驅動器,其用以發送所述至少一個DPU指令至至少一個DPU,所述DPU包括至少一個計算胞元陣列,所述至少一個計算胞元陣列包括以具有至少一個行的陣列方式配置的多個基於DRAM的計算胞元,所述至少一個行包括至少三個列的基於DRAM的計算胞元,所述至少三個列的基於DRAM的計算胞元經組態以提供在所述至少三個列的第一列及第二列上操作的邏輯功能且經組態以在所述至少三個列的第三列中儲存所述邏輯功能的結果。
- 如申請專利範圍第1項所述的系統,其中所述至少一個行的所述基於DRAM的計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元,且其中所述至少一個行的所述基於DRAM的計算胞元提供反或邏輯功能。
- 如申請專利範圍第2項所述的系統,其中所述DPU更包括以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,所述至少一個行包括至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以 提供在所述至少三個列的第一列及第二列上操作的隨機邏輯功能且經組態以在所述至少三個列的第三列中儲存所述隨機邏輯功能的結果。
- 如申請專利範圍第3項所述的系統,其中所述至少一個行的所述基於DRAM的隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第4項所述的系統,其中所述至少一個DPU操作包括隨機計算操作。
- 如申請專利範圍第1項所述的系統,其中所述DPU更包括以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,所述至少一個行包括至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在所述至少三個列的第一列及第二列上操作的隨機邏輯功能且經組態以在所述至少三個列的第三列中儲存所述隨機邏輯功能的結果。
- 如申請專利範圍第1項所述的系統,其中所述程式庫進一步回應於所接收的所述命令而判定整個卷積層的映射。
- 如申請專利範圍第1項所述的系統,其中所述程式庫進一步判定所述至少一個DPU操作內的多個並行度,所述多個並行度映射多個DPU以執行對應於所接收的所述命令的所述至少一個DPU操作。
- 如申請專利範圍第1項所述的系統,其中所述驅動器進一步基於所接收的所述命令控制至所述DPU中的資料移動及自所 述DPU的資料移動。
- 如申請專利範圍第1項所述的系統,其中所述編譯器進一步形成對應於所接收的所述命令的在DPU的至少一個列上操作的單個DPU指令。
- 一種DPU操作用的系統,包括:至少一個動態隨機存取記憶體(DRAM)處理單元(DPU),每一DPU包括:至少一個計算胞元陣列,包括以具有至少一個行的陣列方式配置的多個基於DRAM的計算胞元,所述至少一個行包括至少三個列的基於DRAM的計算胞元,所述至少三個列的基於DRAM的計算胞元經組態以提供在所述至少三個列的第一列及第二列上操作的真實邏輯功能且經組態以在所述至少三個列的第三列中儲存所述真實邏輯功能的結果;以及多個基於DRAM的隨機計算胞元,以具有至少一個行的陣列方式配置,所述至少一個行包括至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在所述至少三個列的第一列所接收的第一串流資料及所述至少三個列的第二列所接收的第二串流資料上操作的隨機邏輯功能且經組態以在所述至少三個列的第三列中儲存所述隨機邏輯功能所得到的串流資料;介面,用以接收命令;程式庫,用以判定對應於所接收的所述命令的至少一個DPU指令;以及驅動器,用以發送對應於所接收的所述命令的所述至少一個 DPU指令至所述至少一個DPU。
- 如申請專利範圍第11項所述的系統,其中所述至少一個行的所述基於DRAM的計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元,且其中所述至少一個行的所述基於DRAM的隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第12項所述的系統,其中所述至少一個行的所述基於DRAM的計算胞元提供反或邏輯功能。
- 如申請專利範圍第11項所述的系統,其中所述至少一個DPU操作包括隨機計算操作。
- 如申請專利範圍第11項所述的系統,更包括編譯器,所述編譯器進一步形成對應於所接收的所述命令的在DPU的至少一個列上操作的單個DPU指令。
- 一種DPU操作用的系統,包括:至少一個動態隨機存取記憶體(DRAM)處理單元(DPU),包括至少一個隨機計算胞元陣列,所述至少一個隨機計算胞元陣列包括以具有至少一個行的陣列方式配置的多個基於DRAM的隨機計算胞元,所述至少一個行包括至少三個列的基於DRAM的隨機計算胞元,所述至少三個列的基於DRAM的隨機計算胞元經組態以提供在所述至少三個列的第一列所接收的第一串流資料及所述至少三個列的第二列所接收的第二串流資料上操作的隨機邏輯功能且經組態以在所述至少三個列的第三列中儲存所述隨機邏輯 功能所得到的串流資料;程式庫,用以判定對應於接收命令的至少一個隨機DPU指令;以及驅動器,用以發送對應於所述接收命令的所述至少一個隨機DPU指令至包括所述多個基於DRAM的隨機計算胞元的所述至少一個DPU。
- 如申請專利範圍第16項所述的系統,其中所述至少一個行的所述基於DRAM的隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第16項所述的系統,其中所述驅動器進一步基於所述接收命令控制至包括所述多個基於DRAM的隨機計算胞元的所述DPU中的資料移動及自所述DPU的資料移動。
- 如申請專利範圍第16項所述的系統,更包括至少一個計算胞元陣列,所述至少一個計算胞元陣列包括以具有至少一個行的陣列方式配置的多個基於DRAM的計算胞元,所述至少一個行包括至少三個列的基於DRAM的計算胞元,所述至少三個列的基於DRAM的計算胞元經組態以提供在所述至少三個列的第一列及第二列上操作的真實邏輯功能且經組態以在所述至少三個列的第三列中儲存所述真實邏輯功能的結果,其中所述程式庫進一步判定用於所述至少一個計算胞元陣列的對應於第二接收命令的至少一個DPU指令;以及驅動器,用以發送對應於所述第二接收命令的所述至少一個DPU指令至包括所述多個基於DRAM的計算胞元的所述至少一個 計算胞元陣列。
- 如申請專利範圍第19項所述的系統,其中所述至少一個行的所述基於DRAM的隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662413973P | 2016-10-27 | 2016-10-27 | |
US62/413,973 | 2016-10-27 | ||
US15/426,015 US10180808B2 (en) | 2016-10-27 | 2017-02-06 | Software stack and programming for DPU operations |
US15/426,015 | 2017-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201816619A TW201816619A (zh) | 2018-05-01 |
TWI718336B true TWI718336B (zh) | 2021-02-11 |
Family
ID=62021467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106130354A TWI718336B (zh) | 2016-10-27 | 2017-09-06 | Dpu操作用的系統 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10180808B2 (zh) |
JP (1) | JP6920169B2 (zh) |
KR (1) | KR102268179B1 (zh) |
CN (1) | CN108010551B (zh) |
TW (1) | TWI718336B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860320B1 (en) | 2016-12-06 | 2020-12-08 | Gsi Technology, Inc. | Orthogonal data transposition system and method during data transfers to/from a processing array |
US10249362B2 (en) | 2016-12-06 | 2019-04-02 | Gsi Technology, Inc. | Computational memory cell and processing array device using the memory cells for XOR and XNOR computations |
KR20200057475A (ko) | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템 |
US10949214B2 (en) * | 2019-03-29 | 2021-03-16 | Intel Corporation | Technologies for efficient exit from hyper dimensional space in the presence of errors |
US11157692B2 (en) * | 2019-03-29 | 2021-10-26 | Western Digital Technologies, Inc. | Neural networks using data processing units |
US11074008B2 (en) * | 2019-03-29 | 2021-07-27 | Intel Corporation | Technologies for providing stochastic key-value storage |
CN110275498A (zh) * | 2019-06-28 | 2019-09-24 | 泉州信息工程学院 | 一种基于互联网与深度学习的智能制造方法和系统及设备 |
CN112684977B (zh) * | 2019-10-18 | 2024-05-28 | 旺宏电子股份有限公司 | 存储器装置及其存储器内计算方法 |
US20220058471A1 (en) * | 2020-08-19 | 2022-02-24 | Micron Technology, Inc. | Neuron using posits |
CN114201421B (zh) * | 2022-02-17 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种数据流处理方法、存储控制节点及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5847577A (en) * | 1995-02-24 | 1998-12-08 | Xilinx, Inc. | DRAM memory cell for programmable logic devices |
TW393605B (en) * | 1993-03-17 | 2000-06-11 | Gatefield Corp | Random access memory (RAM) based configurable arrays |
US6507530B1 (en) * | 2001-09-28 | 2003-01-14 | Intel Corporation | Weighted throttling mechanism with rank based throttling for a memory system |
US20140208143A1 (en) * | 2001-03-05 | 2014-07-24 | Pact Xpp Technologies Ag | Multiprocessor Having Runtime Adjustable Clock and Clock Dependent Power Supply |
TW201532067A (zh) * | 2013-12-16 | 2015-08-16 | Samsung Electronics Co Ltd | 感測放大器、使用該感測放大器之半導體記憶體裝置以及該感測放大器之讀取方法 |
TW201633718A (zh) * | 2014-12-16 | 2016-09-16 | 三星電子股份有限公司 | 用於dram式可重組邏輯的設備以及方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11338767A (ja) * | 1998-05-22 | 1999-12-10 | Mitsubishi Heavy Ind Ltd | 画像処理用機能メモリ装置 |
US6745219B1 (en) | 2000-06-05 | 2004-06-01 | Boris Zelkin | Arithmetic unit using stochastic data processing |
US8127075B2 (en) | 2007-07-20 | 2012-02-28 | Seagate Technology Llc | Non-linear stochastic processing storage device |
WO2009111559A2 (en) | 2008-03-04 | 2009-09-11 | Massachusetts Institute Of Technology | Combinational stochastic logic |
US8341362B2 (en) * | 2008-04-02 | 2012-12-25 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
US8103598B2 (en) | 2008-06-20 | 2012-01-24 | Microsoft Corporation | Compiler for probabilistic programs |
WO2011103587A2 (en) | 2010-02-22 | 2011-08-25 | Benjamin Vigoda | Superscalar control for a probability computer |
WO2011106308A2 (en) | 2010-02-23 | 2011-09-01 | Navia Systems, Inc. | Configurable circuitry for solving stochastic problems |
CN103907157B (zh) * | 2011-10-28 | 2017-10-17 | 慧与发展有限责任合伙企业 | 进行行移位的可移位存储器 |
US9251467B2 (en) | 2013-03-03 | 2016-02-02 | Microsoft Technology Licensing, Llc | Probabilistic parsing |
US9455020B2 (en) * | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9697877B2 (en) * | 2015-02-05 | 2017-07-04 | The Board Of Trustees Of The University Of Illinois | Compute memory |
US9922696B1 (en) * | 2016-10-28 | 2018-03-20 | Samsung Electronics Co., Ltd. | Circuits and micro-architecture for a DRAM-based processing unit |
-
2017
- 2017-02-06 US US15/426,015 patent/US10180808B2/en active Active
- 2017-05-31 KR KR1020170067968A patent/KR102268179B1/ko active IP Right Grant
- 2017-08-11 CN CN201710684841.2A patent/CN108010551B/zh active Active
- 2017-09-06 TW TW106130354A patent/TWI718336B/zh active
- 2017-10-23 JP JP2017204581A patent/JP6920169B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW393605B (en) * | 1993-03-17 | 2000-06-11 | Gatefield Corp | Random access memory (RAM) based configurable arrays |
US5847577A (en) * | 1995-02-24 | 1998-12-08 | Xilinx, Inc. | DRAM memory cell for programmable logic devices |
US20140208143A1 (en) * | 2001-03-05 | 2014-07-24 | Pact Xpp Technologies Ag | Multiprocessor Having Runtime Adjustable Clock and Clock Dependent Power Supply |
US6507530B1 (en) * | 2001-09-28 | 2003-01-14 | Intel Corporation | Weighted throttling mechanism with rank based throttling for a memory system |
TW201532067A (zh) * | 2013-12-16 | 2015-08-16 | Samsung Electronics Co Ltd | 感測放大器、使用該感測放大器之半導體記憶體裝置以及該感測放大器之讀取方法 |
TW201633718A (zh) * | 2014-12-16 | 2016-09-16 | 三星電子股份有限公司 | 用於dram式可重組邏輯的設備以及方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102268179B1 (ko) | 2021-06-23 |
KR20180046346A (ko) | 2018-05-08 |
TW201816619A (zh) | 2018-05-01 |
US10180808B2 (en) | 2019-01-15 |
CN108010551B (zh) | 2023-05-02 |
JP2018073413A (ja) | 2018-05-10 |
JP6920169B2 (ja) | 2021-08-18 |
CN108010551A (zh) | 2018-05-08 |
US20180121130A1 (en) | 2018-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI714806B (zh) | 動態隨機存取記憶體處理單元架構 | |
TWI718336B (zh) | Dpu操作用的系統 | |
TWI713047B (zh) | Dram式處理單元的電路和微架構 | |
TWI640003B (zh) | 用於邏輯/記憶體器件之裝置及方法 | |
CN108885887B (zh) | 用于数据移动的设备及方法 | |
CN107683505B (zh) | 用于计算启用的高速缓冲存储器的设备及方法 | |
Talati et al. | mmpu—a real processing-in-memory architecture to combat the von neumann bottleneck | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
KR20190110154A (ko) | 데이터 경로에서의 컴퓨팅 장치 및 방법 | |
TWI671744B (zh) | 用於在記憶體中資料切換網路的裝置及方法 | |
CN110176260A (zh) | 支持跳跃计算模式的存储器器件及其操作方法 | |
US20220366968A1 (en) | Sram-based in-memory computing macro using analog computation scheme | |
CN111630487B (zh) | 用于神经网络处理的共享存储器的集中式-分布式混合组织 | |
US11355181B2 (en) | High bandwidth memory and system having the same | |
US20220300437A1 (en) | Memory chip connecting a system on a chip and an accelerator chip | |
KR20100127317A (ko) | 멀티포트 메모리 슈퍼셀 및 데이터 경로 스위칭 회로를 갖는 집적 회로 | |
Sudarshan et al. | A critical assessment of dram-pim architectures-trends, challenges and solutions | |
CN110574013B (zh) | 存储器形状 | |
CN115831185A (zh) | 存算一体芯片、操作方法、制作方法和电子设备 | |
US20230385624A1 (en) | Computing in memory with artificial neurons | |
US20230418508A1 (en) | Performing distributed processing using distributed memory | |
US20230273733A1 (en) | In-memory compute core for machine learning acceleration | |
신현승 | McDRAM: Low Latency and Energy-Efficient Matrix Computation in DRAM | |
TW202305623A (zh) | 存算一體裝置及相關的方法 |