TWI713047B - Dram式處理單元的電路和微架構 - Google Patents
Dram式處理單元的電路和微架構 Download PDFInfo
- Publication number
- TWI713047B TWI713047B TW106131455A TW106131455A TWI713047B TW I713047 B TWI713047 B TW I713047B TW 106131455 A TW106131455 A TW 106131455A TW 106131455 A TW106131455 A TW 106131455A TW I713047 B TWI713047 B TW I713047B
- Authority
- TW
- Taiwan
- Prior art keywords
- row
- dram
- cell
- calculation
- array
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims description 109
- 230000006870 function Effects 0.000 claims description 49
- 239000003990 capacitor Substances 0.000 claims description 24
- 238000006073 displacement reaction Methods 0.000 claims 10
- 239000013078 crystal Substances 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 168
- 238000010586 diagram Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 101100496858 Mus musculus Colec12 gene Proteins 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 210000001082 somatic cell Anatomy 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012876 topography Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- 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/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
- 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
-
- 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/4076—Timing 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/408—Address circuits
- G11C11/4087—Address decoders, e.g. bit - or word line decoders; Multiple line decoders
-
- 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/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System (AREA)
- Semiconductor Memories (AREA)
Abstract
一種動態隨機存取記憶體(DRAM)處理單元(DPU)可
包括至少一個計算胞元陣列,所述至少一個計算胞元陣列可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中。
Description
本發明是有關於記憶體系統,且更具體而言是有關於動態隨機存取記憶體(dynamic random access memory,DRAM)式處理單元(DRAM-based processing unit)。
傳統上,使用圖形處理單元(Graphics Processing Unit,GPU)及張量處理單元(Tensor Processing Unit,TPU)來進行深度學習處理(deep learning processing)。深度學習處理包括可能無法藉由圖形處理單元或張量處理單元得到高效執行的高度平行化的處理。
示例性實施例提供一種動態隨機存取記憶體(DRAM)處理單元(DRAM processing unit,DPU),所述DPU可包括:至少一個計算胞元陣列,可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中。在一個實施例中,所述至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(three transistor, one capacitor,3T1C)式DRAM記憶體胞元,所述3T1C式DRAM記憶體胞元提供反或邏輯功能。在另一實施例中,所述至少一個行的所述DRAM式計算胞元可各自包括一電晶體一電容器(one transistor, one capacitor,1T1C)式DRAM記憶體胞元,所述1T1C式DRAM記憶體胞元可更包括算術邏輯單元(arithmetic logic unit,ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,其中所述算術邏輯單元提供反或邏輯功能。
示例性實施例提供一種動態隨機存取記憶體(DRAM)處理單元(DPU),所述DPU可包括:至少一個計算胞元陣列,可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;以及至少一個資料胞元陣列,可包括排列成至少一個行的至少一個DRAM式記憶體胞元。在一個實施例中,所述至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(3T1C)式DRAM記憶體胞元,所述3T1C式DRAM記憶體胞元提供反或邏輯功能。在另一實施例中,所述至少一個行的所述DRAM式計算胞元可各自包括一電晶體一電容器(1T1C)式DRAM記憶體胞元,所述1T1C式DRAM記憶體胞元可更包括算術邏輯單元(ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,其中所述算術邏輯單元提供反或邏輯功能。
示例性實施例提供一種動態隨機存取記憶體(DRAM)處理單元(DPU),所述DPU可包括:至少一個資料胞元陣列,可包括排列成至少一個行的至少一個DRAM式記憶體胞元;至少一個計算胞元陣列,可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;感測放大器,可包括輸入及輸出,所述輸入電性耦合至所述至少三個列的DRAM式計算胞元的讀取位元線,所述輸出電性耦合至所述至少三個列的DRAM式計算胞元的寫入位元線;以及解碼器,電性耦合至所述至少三個列的DRAM式計算胞元,其中所述解碼器可接收用於選擇所述至少三個列的所述DRAM式計算胞元的指令對應的DRAM式位址訊號,以產生對所述第一列及所述第二列的所述邏輯功能並將所述邏輯功能的所述結果儲存於所述第三列中。在一個實施例中,所述至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(3T1C)式DRAM記憶體胞元,所述3T1C式DRAM記憶體胞元提供反或邏輯功能。在另一實施例中,所述至少一個行的所述DRAM式計算胞元可各自包括一電晶體一電容器(1T1C)式DRAM記憶體胞元,所述1T1C式DRAM記憶體胞元可更包括算術邏輯單元(ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,其中所述算術邏輯單元提供反或邏輯功能。
在以下詳細說明中,闡述了諸多具體細節以提供對本發明的透徹理解。然而,熟習此項技術者將理解,沒有該些具體細節亦可實踐所揭露的態樣。在其他實例中,未詳細闡述眾所習知的方法、程序、組件及電路以避免使本文中所揭露的主題模糊不清。
本說明書通篇中所提及的「一個實施例」或「實施例」意指結合所述實施例所闡述的特定特徵、結構或特性可包括於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中」或「在實施例中」抑或「根據一個實施例」(或具有相似含義的其他片語)可能未必皆指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適當的方式進行組合。就此而言,本文中所使用的詞「示例性」意指「充當例子、實例、或例證」。本文中被闡述為「示例性」的任何實施例並非被視為必定較其他實施例更佳或具有優勢。此外,相依於本文論述的上下文,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。應進一步注意,本文中所示出及論述的各種圖(包括組件圖)僅用於說明目的,且並非按比例繪製。同樣地,示出各種波形圖及時序圖僅用於說明目的。舉例而言,為清晰起見,可相對於其他元件而誇大一些元件的尺寸。此外,適當情況下,已在各圖中重複使用參考編號來指示對應的及/或類似的元件。
本文所使用術語僅用於闡述特定示例性實施例,而並非旨在限制所主張主題。除非上下文中清楚地另外指明,否則本文所使用的單數形式「一(a、an)」及「所述」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。本文中所使用的用語「第一」、「第二」等是作為其後面所跟名詞的標記來使用,且除非明確說明,否則並不暗含任何類型的次序(例如,空間的、時間的、邏輯的等)。此外,可在兩個或更多個圖中交叉使用相同的參考編號來指代具有相同或相似功能性的部件、組件、區塊、電路、單元、或模組。然而,此類用法僅是出於說明簡潔及易於論述的目的,而並非暗含此類組件或單元的構造或架構細節在所有實施例中均相同抑或暗含此類具有共用參考編號的部件/模組是實作本文中所揭露的特定實施例的教示內容的唯一途徑。
除非另外定義,否則本文所用的全部用語(包括技術及科學用語)的含義均與本主題所屬技術領域中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非本文中進行明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
本文中所揭露主題提供一種可程式化且可重組態以進行不同運算(例如但不限於加法、乘法、移位、最大值/最小值、及比較)的動態隨機存取記憶體(DRAM)式處理單元(DPU)。在一個實施例中,DPU是基於三電晶體一電容器(3T1C)DRAM處理及結構。在另一實施例中,DPU是基於經微小修改的一電晶體一電容器(1T1C)DRAM處理及結構。因此,DPU不含有專門的計算邏輯電路系統(如加法器(adder)),但會使用記憶體胞元利用高度平行運算來提供計算。在一個實施例中,DPU可包括隨機計算陣列,在所述隨機計算陣列中,加法可被轉換成多工運算且乘法可被轉換成及邏輯運算。
本文中所揭露主題亦提供一種用於對DPU進行程式化及重組態的包括具有框架擴展(framework extension)、程式庫、驅動器、編譯器、及指令集架構(instruction set architecture,ISA)的環境(生態系統)的系統架構。
另外,本文中所揭露主題提供一種適合於資料中心及/或行動應用且為用於二進制計算及定點計算二者的機器學習應用提供記憶體內處理器(Processor-in-Memory,PIM)解決方案的系統架構,所述用於二進制計算及定點計算二者的機器學習應用是對圖形處理單元/應用專用積體電路(Application Specific Integrated Circuit,ASIC)(TPU)/現場可程式化閘極陣列(Field Programmable Gate Array,FPGA)機器學習應用的替代。在一個實施例中,本文中所揭露主題提供一種為例如二進制權重神經網絡(Binary Weight Neural Network)提供加速深度學習的高效能、高能量效率、及低成本的系統。
本文中所揭露主題是有關於一種可使用動態隨機存取記憶體(DRAM)技術來形成且可重組態及可程式化的DRAM式處理單元(DPU)。在一個實施例中,DPU可包括DRAM式記憶體胞元陣列及可被配置成執行例如加法、乘法、分選(sort)等不同運算的DRAM式計算胞元陣列。
DPU的內部架構可包括連接至多個子陣列庫(bank)的系統匯流排。在一個實施例中,系統匯流排可被配置成提供H樹連接(H-tree-connected)式子陣列庫。每一子陣列可包括本地控制器,且每一各別的子陣列可被單獨地或同時地啟動。在一個實施例中,DRAM式胞元可被劃分成兩個陣列一資料胞元陣列及計算胞元陣列。在一個實施例中,計算胞元陣列可藉由DRAM式記憶體胞元來實作。在另一實施例中,計算胞元陣列可藉由具有邏輯電路系統的DRAM式記憶體胞元來實作。DPU內部架構亦可包括資料移位電路(data-shifting circuit)及資料移動電路(data-movement circuit)。在一些實施例中,可存在可被配置用於隨機資料計算的第三DRAM式胞元陣列。
圖1繪示根據本文中所揭露主題的DPU 100的示例性實施例的方塊圖。DPU 100可包括一或多個庫101a至101m,圖1中僅繪示所述一或多個庫101a至101m中的庫101a及101b。每一庫101可包括一或多個子陣列102a至102n,圖1中僅繪示所述一或多個子陣列102a至102n中的子陣列102a及102b。每一庫101亦可包括緩衝器103。緩衝器103可耦合至各別的子陣列102且耦合至系統匯流排104。緩衝器103可讀取庫101中的整一列,並接著將所述列寫回至同一庫或寫入至另一庫。緩衝器103亦可將列資料的拷貝廣播至子陣列102中的多個墊(mat)105a至105n。在一個實施例中,庫101及系統匯流排104可被配置成提供H樹連接式庫。
每一子陣列102可包括一或多個墊(或單工通道(lane))105,圖1中僅繪示子陣列102a的所述一或多個墊105中的墊105a至105n。每一墊105為DPU 100的可包括資料胞元陣列106、計算胞元陣列107、及墊內移位陣列108的區。圖1中以由虛線109包圍的方式指示示例性墊105。每一墊105可與相鄰墊共享資料胞元陣列解碼器110、計算胞元陣列解碼器111、墊間移位陣列112、及墊間轉發陣列113。在一個實施例中,資料胞元陣列解碼器110、計算胞元陣列解碼器111、及墊間移位陣列112可與相鄰墊105之間的子陣列控制器114實體地交替排列。在一個實施例中,解碼器110及111可作為傳統DRAM型記憶體解碼器來運作。
在一個實施例中,每一墊105能夠通訊地耦合至子陣列控制器114。每一子陣列控制器114可被配置成獨立於其他子陣列控制器114。子陣列控制器114可自DRAM位址匯流排接收指令來作為位址(addr)。因應於所述位址(即,位址訊號),子陣列控制器114可將經解碼位址作為輸出提供至資料胞元陣列106及計算胞元陣列107中的一者或資料胞元陣列106及計算胞元陣列107二者。亦即,子陣列控制器114可為相關聯資料胞元陣列106輸出資料胞元陣列解碼器110所解碼的源頭/終點(source/destination,src/dst)位址,且在計算胞元陣列107的情形中,可輸出由計算胞元陣列解碼器111所解碼的運算/計算(operation/calculation,op/calc)位址。子陣列控制器114亦可自DRAM匯流排接收使二或更多個子陣列控制器114以協調方式運作的指令來作為位址。子陣列控制器114亦可控制資料移動電路,例如控制墊內移位陣列108、墊間移位陣列112、及墊間轉發陣列113。
每一資料胞元陣列106可包括排列成至少一個行及至少一個列的一或多個動態隨機存取記憶體(DRAM)胞元。在一個實施例中,資料胞元陣列106可被配置成傳統DRAM胞元陣列。在一個實施例中,資料胞元陣列106可包括2000個行及16個列。在另一實施例中,資料胞元陣列106可包括少於或多於2000個行及/或少於或多於16個列。
每一計算胞元陣列107可包括排列成至少一個行及至少一個列的一或多個計算胞元。計算胞元陣列107中的行的數目相同於資料胞元陣列106中的行的數目。在一個實施例中,計算胞元陣列107可包括2000個行及16個列。在另一實施例中,計算胞元陣列107可包括少於或多於2000個行及/或少於或多於16個列。
圖2A繪示可用於計算胞元陣列107中的計算胞元的三電晶體一電容器(3T1C)式DRAM計算胞元拓樸形貌201的示例性實施例。如圖2A中所繪示,列X中的3T1C式計算胞元包括第一電晶體T1
,第一電晶體T1
具有電性耦合至寫入位元線(寫入BL)的源極端子、電性耦合至電容器C1
的第一端子及第二電晶體T2
的閘極端子二者的汲極端子、以及電性耦合至寫入賦能(WEN)線的閘極端子。電容器C1
的第二端子電性耦合至接地線。第二電晶體T2
包括電性耦合至接地線的源極端子、及電性耦合至第三電晶體T3
的源極端子的汲極端子。第三電晶體T3
包括電性耦合至字元線(WL)的閘極端子、及電性耦合至讀取位元線(讀取BL)的汲極端子。3T1C式計算胞元拓樸形貌201包括感測放大器SA,感測放大器SA具有電性耦合至讀取位元線的輸入及電性耦合至寫入位元線的輸出。
列Y中的計算胞元及列R中的計算胞元均可亦包括三個電晶體T1
至T3
、及排列成與列X中的計算胞元的排列相似的3T1C式DRAM配置的電容器C。圖2A中所繪示的示例性的所述三個計算胞元及感測放大器SA被配置成提供反或邏輯運算(即,X NOR Y邏輯運算),其中結果儲存於列R中。儘管圖2A中明確繪示僅一個行的3T1C式DRAM計算胞元,然而應理解,在另一實施例中,3T1C式計算胞元可被配置成多個行(即,2000個行)。亦應理解,在另一實施例中,可提供多關於三個列。此外,儘管圖2A中所繪示的3T1C式DRAM計算胞元配置提供反或邏輯運算,然而應理解,3TIC式DRAM計算胞元拓樸形貌201的反或邏輯運算可被用於提供各種功能運算,例如但不限於互斥反或(XNOR)、加法(ADD)、選擇(SET)、最大值(MAX)、符號(SIGN)、多工(MUX)、條件和加法邏輯(conditional-sum addition logic,CSA)、乘法、漢明加權(popcount)、及比較。移位陣列108及112亦提供移位功能。
圖2B繪示可用於圖1所示計算胞元陣列107中的計算胞元的一電晶體一電容器(1T1C)式DRAM計算胞元拓樸形貌202的替代性示例性實施例。如圖2B中所繪示,1T1C式DRAM計算胞元包括電晶體T4
,電晶體T4
具有電性連接至電容器C2
的第一端子的源極端子、電性連接至位元線(BL)的汲極端子、及電性連接至位元線(WL)的閘極端子。電容器C2
的第二端子電性耦合至接地線。位元線BL電性耦合至感測放大器SA的輸入。感測放大器SA的輸出電性耦合至多工器(MUX)的第一輸入、第五電晶體T5
的汲極端子、及算術邏輯單元(arithmetic logic unit,ALU)的輸入。多工器的輸出電性耦合至鎖存器(LATCH)的輸入。第五電晶體T5
的源極端子電性耦合至鎖存器的輸出。算術邏輯單元的輸出電性耦合至多工器的第二輸入。圖2B中的第五電晶體T5
、多工器、鎖存器、及算術邏輯單元各自分別自控制器114接收控制訊號CNTL1至CNTL4。在一個實施例中,算術邏輯單元可被配置成提供反或功能。儘管電性耦合至圖2B中的位元線BL的邏輯電路系統提供反或邏輯運算,然而應理解,電性耦合至位元線BL的所述邏輯電路系統(即,算術邏輯單元)可提供其他功能運算,例如但不限於互斥反或(XNOR)、加法(ADD)、選擇(SET)、最大值(MAX)、符號(SIGN)、多工(MUX)、條件和加法邏輯(CSA)、乘法、漢明加權、及比較。移位陣列108及112亦提供移位功能。應理解,圖2B中繪示僅一個1T1C計算胞元,且應理解,可提供多個行及多個列的1T1C計算胞元。
如可在圖2A及圖2B中看出,DPU的計算胞元不包括專門的複雜計算邏輯,而是包括相對簡單的拓樸形貌,所述相對簡單的拓樸形貌具有提供執行多種不同類型的計算的能力的可再程式化性質。另外,DPU的拓樸形貌可被排列成利用記憶體結構中所固有的巨量平行性(massive parallelism)來更快地及更高效地執行更多計算。
圖3繪示根據本文中所揭露主題的墊內移位陣列108的示例性實施例。為簡化對墊內移位陣列108的說明,考慮其中寬度為四行計算胞元107的墊105(例如,圖3中所繪示者)。墊內移位陣列108包括排列成陣列的多個第六電晶體T6
(圖3中僅指示所述多個第六電晶體T6
中的一個電晶體T6
)、2n個移位線SL(其中n是墊105中的計算胞元的行)、n+2個左移位控制線SLcL、2個右移位控制線SRcL、以及n個移位遮罩線SML。墊內移位陣列108的一些第六電晶體T6
電性連接於寫入位元線與所述2n個移位線SL之間,且墊內移位陣列108的其他第六電晶體T6
連接於讀取位元線與所述2n個移位線SL之間。該些第六電晶體T6
的閘極電性耦合至所述n+2個左移位控制線SLcL及所述2個右移位控制線SRcL。墊內移位陣列108的其他第六電晶體T6
電性連接於所述n個移位遮罩線SML與所述2n個移位線SL之間。墊內移位陣列108的控制線電性耦合至與墊105相關聯的子陣列控制器114。
墊內移位陣列108可藉由控制線SLcL及SRcL上的適當訊號來使資料在墊105內左右移位。對左移位而言,資料可被符號位(sign bit)填充,且每一運算移位1位或(n-1)位,其中n是每一墊105的行的數目。對右移位而言,資料可在指令控制下被0或1填充,且被移位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的讀取位元線的源極端子、電性耦合至資料移位線112e的汲極端子。電晶體T112b
包括電性耦合至第二行的計算胞元107b的讀取位元線的源極端子、電性耦合至資料移位線112f的汲極端子。資料移位線112e及112f電性耦合至緩衝器103(圖4A中未示出)。在不同墊之間,電晶體T112c
包括分別電性耦合至鄰近墊中的資料移位線112e的源極端子及汲極端子。電晶體T112d
包括分別電性耦合至鄰近墊中的資料移位線112f的源極端子及汲極端子。電晶體T112c
及T112d
的閘極分別電性耦合至各自不同的墊間移位控制線ISLcL。墊間移位陣列112可藉由墊間移位控制線ISLcL上的適當訊號來使資料在不同墊之間左右移位。墊間移位陣列112的控制線電性耦合至與墊105相關聯的子陣列控制器114。
圖4B概念性地繪示根據本文中所揭露主題的用於左墊間移位的相鄰計算胞元行105a與105b中的兩個相同位置的計算胞元之間的墊間移位互連配置。圖4B所示互連配置可藉由著重顯示的操作互連節點(operative interconnection node)來概念性地繪示。舉例而言,電晶體T112c
及T112d
被啟動以使每一電晶體之間存在導電路徑,藉此連接計算胞元行105a(左側)與105b(右側)之間的資料移位線112e與112f。電晶體T112c
及T112d
的閘極端子電性連接至主動墊間移位控制線ISLcL。墊105b中的電晶體T112a
及T112b
被啟動以使墊105b中的計算胞元107a的讀取位元線電性連接至位於墊105b左側的墊105a中的計算胞元107a的寫入位元線,且使墊105b中的計算胞元107b的讀取位元線電性連接至位於墊105b左側的墊105a中的計算胞元107b的寫入位元線。
圖4C概念性地繪示根據本文中所揭露主題的用於左墊間移位的相鄰計算胞元行105a與105b中的兩個不同位置的計算胞元之間的墊間移位互連配置。圖4C所示互連配置可藉由著重顯示的操作互連節點來概念性地繪示。舉例而言,電晶體T112c
及T112d
被啟動以使每一電晶體之間存在導電路徑,藉此連接計算胞元行105a(左側)與105b(右側)之間的資料移位線112e與112f。電晶體T112c
及T112d
的閘極端子電性連接至主動墊間移位控制線ISLcL。墊105a中的電晶體T112a
及T112b
被啟動以使墊105a中的計算胞元107a的讀取位元線電性連接至位於墊105a右側的墊105b中的計算胞元107a的寫入位元線,且使墊105a中的計算胞元107b的讀取位元線電性連接至位於墊105a右側的墊105b中的計算胞元107b的寫入位元線。
圖5繪示根據本文中所揭露主題的墊間轉發陣列113的實施例。為簡化對墊間轉發陣列113的說明,考慮其中墊105的寬度為兩行計算胞元107的配置(例如,圖5中所繪示者)。亦即,每一墊105包括第一行的計算胞元107a及第二行的計算胞元107b。對於墊105,墊間轉發陣列113包括電晶體T113a
及T113b
、電晶體T113c
及T113d
、以及電晶體T113e
及T113f
、2n
個轉發資料線FDL(其中n是墊中的計算胞元行的數目)、轉發控制線FCL、及2m
個轉發區段線FSL(其中m是區段(section)的數目)。電晶體T113a
及T113b
的源極端子分別電性連接至第一行的計算胞元107a的寫入位元線及讀取位元線。電晶體T113a
及T113b
的汲極端子電性耦合至第一資料轉發線FDL 113g。電晶體T113c
及T113d
的源極端子分別電性連接至第二行的計算胞元107b的寫入位元線及讀取位元線。電晶體T113c
及T113d
的汲極端子電性耦合至第二資料轉發線FDL 113h。電晶體T113e
及T113f
的源極端子分別電性耦合至電晶體T113a
及T113b
的閘極端子。電晶體T113e
及T113f
的汲極端子均耦合至同一轉發區段線FSL。電晶體T113e
及T113f
的閘極端子分別耦合至不同轉發控制線FCL。墊間轉發陣列113可藉由轉發控制線FCL上的適當訊號來在墊之間轉發資料。墊間轉發陣列113的控制線電性耦合至與資料在其間進行轉發的墊105相關聯的子陣列控制器114。
圖6A至圖6G繪示根據本文中所揭露主題的可由DPU提供的基於反或邏輯的運算。在圖6A至圖6G中,可將第一運算元(operand)儲存於列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繪示基於前綴克格-斯通加法器(prefix Kogge-Stone adder)的對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 NOR 列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 NOR 列3的中間結果。列5儲存列2 NOR 列S的中間結果。列6儲存列4 NOR 列5的中間結果。列R儲存列6的反量的結果(即,S?X:Y)。
圖6D繪示可由3T1C式DRAM計算胞元拓樸形貌201提供的替代性示例性選擇器運算。列1儲存列X的反量的中間結果(即,~X)。列2儲存列S的反量的中間結果(即,~S)。列3儲存列1 NOR 列S的中間結果。列4儲存列X的反量的中間結果(即,~X)。列R儲存列3 NOR 列4的結果(即,S?X:~X)。
圖6E繪示可由3T1C式DRAM計算胞元拓樸形貌201提供的示例性最大值/最小值運算。列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 NOR 列W的中間結果。列2儲存列X NOR 列1的中間結果。列3儲存列W NOR 列1的中間結果。結果列R儲存列2 NOR 列3的結果,即列X XNOR 列W的結果。
圖6G繪示可由3T1C式DRAM計算胞元拓樸形貌201提供的示例性多位元乘法運算。在圖6G所示上部區快中,列1儲存列W的反量的中間結果(即,~W)。列2儲存向左移位2i
倍的列X的反量的中間結果(即,~X<<2i
),其中i是索引。列3儲存列1 NOR 列2的中間結果,即PPi
= ~W NOR ~X<<2i
。在圖6G所示下部區塊中,列1儲存列PP0
SUM 列PPi
的中間結果(即,∑PPi
)。列2儲存列2 NOR 列Wsign
的中間結果。列R儲存X*W的結果。
圖7繪示根據本文中所揭露主題的包括隨機資料區715的DPU 700的示例性實施例的方塊圖。DPU 700的具有與圖1中所繪示DPU 100的組件的參考指示符相同的參考指示符的各種組件是相似的,且此處已省略對此種相似組件的說明。DPU 700的子陣列102包括隨機資料陣列715及轉換器-隨機陣列(converter-to-stochastic array)716、以及(真實)資料胞元陣列106、計算胞元陣列107、及墊內移位陣列108。
每一隨機資料陣列715可包括排列成至少一個行及至少一個列的一或多個隨機計算胞元。隨機資料陣列715中的行的數目相同於資料胞元陣列106及計算胞元陣列107中的行的數目。在一個實施例中,隨機資料陣列715可包括2000個行及16個列。在另一實施例中,隨機資料陣列715可包括少於或多於2000個行及/或少於或多於16個列。在隨機資料陣列715中,使用「1」的存在機率及使用2n
位元來表示n位元的值。轉換器-隨機陣列716中的隨機數字產生器可用於將真實數字轉換成隨機數字。可使用漢明加權運算將隨機數字轉換回真實數字。
利用隨機計算方式,加法可被轉換成多工運算且乘法可被轉換成及邏輯運算。舉例而言,圖8A繪示提供隨機加法運算來作為多工運算的電路,且圖8B繪示提供隨機乘法運算來作為及邏輯運算的電路。隨機計算的傳統技術需要巨大的記憶體容量;然而,本文中所揭露主題可用於提供非常高效的隨機計算,乃因DRAM式DPU能夠執行大的平行的及運算與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並非僅限於快速周邊組件互連裝置及/或雙列直插記憶體模組,而是可包括系統晶片(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中的每一子陣列提供最佳映射功能性(optimal mapping functionality)、資源分配功能性(resource allocation functionality)、及排程功能性(scheduling functionality)。
在一個實施例中,DPU程式庫921可為可包括例如移動(move)、加法、乘法等運算的框架層930提供高層階應用程式設計介面(application programming interface,API)。舉例而言,DPU程式庫921亦可包括標準型常規的實作形式,例如但不限於可應用於加速深度學習過程的正卷積(forward convolution)及反卷積(backward convolution)層、集用(pooling)層、正規化(normalization)層、及啟動(activation)層。在一個實施例中,DPU程式庫921可包括對卷積神經網絡(convolution neural network,CNN)的整個卷積層的計算進行映射的應用程式設計介面類功能(API-like function)。另外,DPU程式庫921可包括用於對將卷積層計算映射至DPU上的映射過程進行最佳化的應用程式設計介面類功能。
DPU程式庫921亦可包括用於藉由將任務(批(batch)、輸出通道、畫素、輸入通道、卷積核心(convolution kernel))內的任意各別或多個平行性映射成晶片、庫、子陣列、及/或墊層階處的對應DPU平行性來對資源分配進行最佳化的應用程式設計介面類功能。另外,DPU程式庫921可包括在效能(即,資料移動流)與功耗之間作出折衷的初始化及/或運行時間處提供最佳DPU配置的應用程式設計介面類功能。由DPU程式庫921所提供的其他應用程式設計介面類功能可包括設計鈕型功能(design-knob-type function),例如設定每一庫的主動子陣列(active subarrays)的數目、每一主動子陣列的所輸入特徵映射的數目、特徵映射的分區、及/或卷積核心的複用方案(reuse scheme)。又一些其他應用程式設計介面類功能可藉由對每一子陣列分配特定任務(例如,卷積計算、通道求和(channel sum up)、及/或資料調度(data dispatching))來提供附加的資源分配最佳化。若運算元將在整數與隨機數字之間轉換,則DPU程式庫921包括在滿足精確約束條件的同時將開銷(overhead)最小化的應用程式設計介面類功能。在精確度低於期望的事件中,DPU程式庫921可包括使用附加位元重新計算隨機表示形式的值、或將任務卸載至其他硬體(例如,中央處理單元)的應用程式設計介面類功能。
DPU程式庫921亦可包括對DPU中的多個經啟動子陣列同時進行排程且對資料移動進行排程以使所述資料移動被計算操作隱藏的應用程式設計介面類功能。
DPU程式庫921的另一態樣包括用於進一步的DPU開發的擴展介面。在一個實施例中,DPU程式庫921可使用反或(NOR)及移位邏輯來提供用於對功能性進行直接程式化的介面,使得可提供除標準型運算(即,加法、乘法、最大值/最小值等)以外的運算。擴展介面亦可提供以下介面:所述介面使得並非專門由DPU程式庫921來支援的運算可在程式庫及驅動器層920處卸載至系統晶片控制器(圖中未示出)、中央處理單元/圖形處理單元(CPU/GPU)組件、及/或中央處理單元/張量處理單元(CPU/TPU)組件。DPU程式庫921的又一態樣提供當DPU記憶體不用於計算時使用所述DPU的記憶體作為記憶體擴展的應用程式設計介面類功能。
DPU驅動器922可被配置成在硬體層910處的DPU、DPU程式庫921、及更高層處的作業系統(operating system,OS)之間提供介面連接以將DPU硬體層整合成系統。亦即,DPU驅動器922將DPU暴露至系統作業系統及DPU程式庫921。在一個實施例中,DPU驅動器922可在初始化時提供DPU控制。在一個實施例中,DPU驅動器922可以DRAM型位址或DRAM型位址的序列的形式向DPU發送指令且可控制進出於DPU的資料移動。DPU驅動器922可提供多DPU通訊以及處置DPU-CPU通訊及/或DPU-GPU通訊。
DPU編譯器923可將來自DPU程式庫921的DPU編碼編譯成呈記憶體位址形式的DPU指令,所述記憶體位址被DPU驅動器922用來控制DPU。由DPU編譯器923所產生的DPU指令可為對DPU中的一個列及/或兩個列進行操作的單一指令、向量指令、及/或集合向量(gathered vector)、根據操作進行讀取的指令(read-on-operation instruction)。
框架層930可被配置成為程式庫及驅動器層920及硬體層910提供使用者友好型介面。在一個實施例中,框架層930可提供可與應用層940處的各種各樣的應用相容的使用者友好型介面且使DPU硬體層910對於使用者而言透明。在另一實施例中,框架層930可包括向現有的傳統方法(例如但不限於火炬7型(Torch7-type)應用及張量流型(TensorFlow-type)應用)增添定量功能(quantitation function)的框架擴展。在一個實施例中,框架層930可包括向訓練演算法(training algorithm)增添定量功能。在另一實施例中,框架層930可優先於除法、乘法、及平方根的現有的批正規化方法(batch-normalization method)而提供除法、乘法、及平方根的移位逼近方法(shift approximated method)。在又一實施例中,框架層930可提供使得使用者能夠設定用於計算的位元的數目的擴展。在再一實施例中,框架層930提供將來自DPU程式庫及驅動器層920的多DPU應用程式設計介面裹送至框架層930的能力,使得使用者可以與多個圖形處理單元的使用方式相似的方式在硬體層處使用多個DPU。框架層930的又一特徵使得使用者能夠將功能指派給硬體層910處的DPU或圖形處理單元。
應用層940可包括各種各樣的應用,例如但不限於影像標簽處理(image tag processing)、自主駕駛/自主領航車輛(self-driving/piloting vehicle)、阿爾法狗型深度思維應用(AlphaGo-type deep-mind application)、及/或言語研究(speech research)。
熟習此項技術者將認識到,可在各種各樣的應用中對本文中所闡述的新穎概念作出潤飾及變化。因此,所主張的主題的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍所限定。
100、700‧‧‧動態隨機存取記憶體處理單元101a、101b‧‧‧庫102a、102b‧‧‧子陣列103‧‧‧緩衝器104‧‧‧系統匯流排105、105n‧‧‧墊105a、105b‧‧‧墊/計算胞元行106‧‧‧資料胞元陣列107‧‧‧計算胞元陣列/計算胞元107a、107b‧‧‧計算胞元108‧‧‧移位陣列/墊內移位陣列109‧‧‧虛線110‧‧‧解碼器/資料胞元陣列解碼器111‧‧‧解碼器/計算胞元陣列解碼器112‧‧‧移位陣列/墊間移位陣列112e、112f‧‧‧資料移位線113‧‧‧墊間轉發陣列113g‧‧‧第一資料轉發線FDL113h‧‧‧第二資料轉發線FDL114‧‧‧控制器/子陣列控制器201‧‧‧3T1C式DRAM計算胞元拓樸形貌/3T1C式計算胞元拓樸形貌202‧‧‧1T1C式DRAM計算胞元拓樸形貌/1T1C式計算胞元拓樸形貌715‧‧‧隨機資料區/隨機資料陣列716‧‧‧轉換器-隨機陣列900‧‧‧系統架構910‧‧‧硬體層911‧‧‧快速周邊組件互連裝置912‧‧‧雙列直插記憶體模組920‧‧‧程式庫及驅動器層/DPU程式庫及驅動器層921‧‧‧DPU程式庫922‧‧‧DPU驅動器923‧‧‧DPU編譯器930‧‧‧框架層940‧‧‧應用層addr‧‧‧位址BL‧‧‧位元線C1、C2‧‧‧電容器CNTL1、CNTL2、CNTL3、CNTL4‧‧‧控制訊號FCL‧‧‧轉發控制線FSL‧‧‧轉發區段線ISLcL‧‧‧墊間移位控制線SA‧‧‧感測放大器SL‧‧‧移位線SLcL‧‧‧控制線/左移位控制線SML‧‧‧移位遮罩線SRcL‧‧‧控制線/右移位控制線T1‧‧‧電晶體/第一電晶體T2‧‧‧電晶體/第二電晶體T3‧‧‧電晶體/第三電晶體T4、T112a、T112b、T112c、T112d、T113a、T113b、T113c、T113d、T113e、T113f‧‧‧電晶體T5‧‧‧第五電晶體T6‧‧‧電晶體/第六電晶體WL‧‧‧字元線
在以下部分中,將參照圖中所示的示例性實施例來闡述本文中所揭露主題的態樣,其中: 圖1繪示根據本文中所揭露主題的動態隨機存取記憶體(DRAM)式處理單元(DPU)的示例性實施例的方塊圖。 圖2A繪示可用於計算胞元陣列中的計算胞元的三電晶體一電容器式DRAM計算胞元拓樸形貌的示例性實施例。 圖2B繪示可用於計算胞元陣列中的計算胞元的一電晶體一電容器式DRAM計算胞元拓樸形貌的替代性示例性實施例。 圖3繪示根據本文中所揭露主題的墊內移位陣列(intra-mat shift array)的示例性實施例。 圖4A繪示根據本文中所揭露主題的墊間移位陣列(inter-mat shift array)的實施例。 圖4B概念性地繪示根據本文中所揭露主題的用於左墊間移位的相鄰計算胞元行中的兩個相同位置的計算胞元之間的墊間移位互連配置。 圖4C概念性地繪示根據本文中所揭露主題的用於左墊間移位的相鄰計算胞元行中的兩個不同位置的計算胞元之間的墊間移位互連配置。 圖5繪示根據本文中所揭露主題的墊間轉發陣列(inter-mat forwarding array)的實施例。 圖6A至圖6G繪示根據本文中所揭露主題的可由DPU提供的基於反或邏輯的運算。 圖7繪示根據本文中所揭露主題的包括隨機資料區(stochastic data region)的DPU的示例性實施例的方塊圖。 圖8A及圖8B分別繪示對可被轉換成多工運算(multiplexing operation)的加法運算以及可被轉換成及邏輯運算(AND logic operation)的乘法運算的隨機計算操作。 圖9繪示根據本文中所揭露主題的包括DPU的系統架構。
100:動態隨機存取記憶體處理單元
101a、101b:庫
102a、102b:子陣列
103:緩衝器
104:系統匯流排
105a、105b:墊/計算胞元行
105n:墊
106:資料胞元陣列
107:計算胞元陣列/計算胞元
108:移位陣列/墊內移位陣列
109:虛線
110:解碼器/資料胞元陣列解碼器
111:解碼器/計算胞元陣列解碼器
112:移位陣列/墊間移位陣列
113:墊間轉發陣列
114:控制器/子陣列控制器
addr:位址
Claims (18)
- 一種動態隨機存取記憶體(DRAM)式處理單元(DPU),包括:至少一個計算胞元陣列,包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少第一預設數目的行及第二預設數目的列,所述第一預設數目大於等於三,所述第二預設數目大於等於三,各行被配置成提供對所述行中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述行中的第三列中,所述至少一個計算胞元陣列更包括第三預設數目的位移線,所述第三預設數目為所述第一預設數目的兩倍,各位移線透過相對應的至少一第一電晶體被耦合至計算胞元的一行,所述位移線及所述相對應的第一電晶體被配置成在所述至少一個計算胞元陣列中,將選中行的計算胞元的其中兩列的內容,以右方向或左方向進行至少兩行的位移。
- 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(3T1C)式DRAM記憶體胞元。
- 如申請專利範圍第2項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
- 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括一電晶 體一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第4項所述的動態隨機存取記憶體處理單元,其中所述DRAM式計算胞元中的每一者更包括算術邏輯單元(ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,所述算術邏輯單元提供所述邏輯功能。
- 如申請專利範圍第5項所述的動態隨機存取記憶體處理單元,其中所述算術邏輯單元提供反或邏輯功能。
- 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,更包括:至少一個資料胞元陣列,包括至少一個DRAM式記憶體胞元,所述至少一個DRAM式記憶體胞元被排列成具有所述第一預設數目的行,至少一個資料胞元陣列的DRAM式記憶體胞元的各行與對應的計算胞元陣列的一行互相對應;以及感測放大器,耦合至計算胞元的各行,各感測放大器包括輸入及輸出,所述輸入電性耦合至所述行的所述計算胞元的讀取位元線,所述輸出電性耦合至所述行的所述DRAM式計算胞元的寫入位元線。
- 一種動態隨機存取記憶體(DRAM)式處理單元(DPU),包括:至少一個計算胞元陣列,包括排列成陣列的多個DRAM式計算胞元,所述陣列具有第一預設數目的行及第二預設數目的列,所述第一預設數目大於等於三,所述第二預設數目大於等於三, 各行被配置成提供對所述行中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述行中的第三列中,所述至少一個計算胞元陣列更包括第三預設數目的位移線,所述第三預設數目為所述第一預設數目的兩倍,各位移線透過相對應的至少一第一電晶體被耦合至計算胞元的一行,所述位移線及所述相對應的第一電晶體被配置成在所述至少一計算胞元陣列中,將選中行的計算胞元的其中兩列的內容,以右方向或左方向進行至少兩行的位移;以及至少一個資料胞元陣列,包括至少一個DRAM式記憶體胞元,所述至少一個DRAM式記憶體胞元被排列成具有所述第一預設數目的行及至少一列,至少一個資料胞元陣列的DRAM式記憶體胞元的各行與對應的計算胞元陣列的一行互相對應。
- 如申請專利範圍第8項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(3T1C)式DRAM記憶體胞元。
- 如申請專利範圍第9項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
- 如申請專利範圍第8項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括一電晶體一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第11項所述的動態隨機存取記憶體處 理單元,其中所述DRAM式計算胞元中的每一者更包括算術邏輯單元(ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,所述算術邏輯單元提供所述邏輯功能。
- 如申請專利範圍第12項所述的動態隨機存取記憶體處理單元,其中所述算術邏輯單元提供反或邏輯功能。
- 一種動態隨機存取記憶體(DRAM)式處理單元(DPU),包括:至少一個資料胞元陣列,包括至少一個DRAM式記憶體胞元,所述至少一個DRAM式記憶體胞元被排列成具有第一預設數目的行及至少一列,所述第一預設數目大於等於三;至少一個計算胞元陣列,包括多個DRAM式計算胞元,各計算胞元陣列對應各資料胞元陣列,所述陣列被排列成具有所述第一預設數目的行及第二預設數目的列,所述第二預設數目大於等於三,計算胞元的各行被配置成提供對所述計算胞元的所述行中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述計算胞元的各行中的第三列中,所述至少一個計算胞元陣列更包括第三預設數目的位移線,所述第三預設數目為所述第一預設數目的兩倍,各位移線透過相對應的至少一第一電晶體被耦合至計算胞元的一行,所述位移線及所述相對應的第一電晶體被配置成在所述至少一計算胞元陣列中,將選中行的計算胞元的其中兩列的內容,以右方向或左方向進行至少兩行的位移; 感測放大器,耦合至計算胞元的各行,各感測放大器包括輸入及輸出,所述輸入與所述計算胞元的讀取位元線電性耦合於計算胞元的行,所述輸出電性與所述計算胞元的寫入位元線電性耦合於計算胞元的行;以及解碼器,電性耦合至各計算胞元,所述解碼器接收用於選擇所述行的所述計算胞元的指令對應的DRAM式位址訊號,以產生對所述行的所述第一列及所述第二列的所述邏輯功能並將所述邏輯功能的所述結果儲存於所述行的所述第三列中。
- 如申請專利範圍第14項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括三電晶體一電容器(3T1C)式DRAM記憶體胞元。
- 如申請專利範圍第15項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
- 如申請專利範圍第14項所述的動態隨機存取記憶體處理單元,其中至少一個行的所述DRAM式計算胞元各自包括一電晶體一電容器(1T1C)式DRAM記憶體胞元。
- 如申請專利範圍第17項所述的動態隨機存取記憶體處理單元,其中所述DRAM式計算胞元中的每一者更包括算術邏輯單元(ALU),所述算術邏輯單元耦合至所述DRAM式計算胞元的位元線,所述算術邏輯單元提供反或邏輯功能。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662414426P | 2016-10-28 | 2016-10-28 | |
US62/414,426 | 2016-10-28 | ||
US15/425,996 US9922696B1 (en) | 2016-10-28 | 2017-02-06 | Circuits and micro-architecture for a DRAM-based processing unit |
US15/425,996 | 2017-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201816785A TW201816785A (zh) | 2018-05-01 |
TWI713047B true TWI713047B (zh) | 2020-12-11 |
Family
ID=61598574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106131455A TWI713047B (zh) | 2016-10-28 | 2017-09-13 | Dram式處理單元的電路和微架構 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9922696B1 (zh) |
JP (1) | JP6785738B2 (zh) |
KR (1) | KR102182217B1 (zh) |
CN (1) | CN108022615B (zh) |
TW (1) | TWI713047B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354383B2 (en) | 2019-09-27 | 2022-06-07 | Applied Materials, Inc | Successive bit-ordered binary-weighted multiplier-accumulator |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10180808B2 (en) * | 2016-10-27 | 2019-01-15 | Samsung Electronics Co., Ltd. | Software stack and programming for DPU operations |
US10628295B2 (en) * | 2017-12-26 | 2020-04-21 | Samsung Electronics Co., Ltd. | Computing mechanisms using lookup tables stored on memory |
US10956814B2 (en) * | 2018-08-27 | 2021-03-23 | Silicon Storage Technology, Inc. | Configurable analog neural memory system for deep learning neural network |
TWI714003B (zh) * | 2018-10-11 | 2020-12-21 | 力晶積成電子製造股份有限公司 | 可執行人工智慧運算的記憶體晶片及其操作方法 |
CN110414677B (zh) * | 2019-07-11 | 2021-09-03 | 东南大学 | 一种适用于全连接二值化神经网络的存内计算电路 |
US11081149B1 (en) | 2020-03-31 | 2021-08-03 | Winbond Electronics Corp. | Memory device for artificial intelligence operation |
KR20220142875A (ko) | 2021-04-15 | 2022-10-24 | 에스케이하이닉스 주식회사 | 인메모리 연산을 수행하는 반도체 장치 및 그 동작 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050024923A1 (en) * | 2003-07-15 | 2005-02-03 | International Business Machines Corporation | Gain cell memory having read cycle interlock |
US20100164972A1 (en) * | 2008-04-02 | 2010-07-01 | Avidan Akerib | System, method and apparatus for memory with embedded associative section for computations |
US20120293200A1 (en) * | 2011-05-18 | 2012-11-22 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and method of driving semiconductor device |
US20160232951A1 (en) * | 2015-02-05 | 2016-08-11 | The Board Of Trustees Of The University Of Illinois | Compute memory |
US9455020B2 (en) * | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4955020A (en) * | 1989-06-29 | 1990-09-04 | Infotron Systems Corporation | Bus architecture for digital communications |
CA2158467A1 (en) * | 1993-03-17 | 1994-09-29 | Richard D. Freeman | Random access memory (ram) based configurable arrays |
US6173385B1 (en) | 1993-11-19 | 2001-01-09 | Disk Emulation Systems, Inc. | Address generator for solid state disk drive |
US6195738B1 (en) | 1993-12-12 | 2001-02-27 | Associative Computing Ltd. | Combined associative processor and random access memory architecture |
US5847577A (en) * | 1995-02-24 | 1998-12-08 | Xilinx, Inc. | DRAM memory cell for programmable logic devices |
US5901095A (en) | 1997-12-23 | 1999-05-04 | Lsi Logic Corporation | Reprogrammable address selector for an embedded DRAM |
JPH11338767A (ja) * | 1998-05-22 | 1999-12-10 | Mitsubishi Heavy Ind Ltd | 画像処理用機能メモリ装置 |
US6467020B1 (en) * | 2000-05-17 | 2002-10-15 | Neomagic Israel Ltd. | Combined associate processor and memory architecture |
TW514931B (en) | 2000-09-29 | 2002-12-21 | Agilent Technologies Inc | Apparatus and method for performing conditional calculations |
US7299099B1 (en) | 2004-02-18 | 2007-11-20 | Divelbiss Corporation | Programmable logic controller contained on a chip |
JP2006127460A (ja) * | 2004-06-09 | 2006-05-18 | Renesas Technology Corp | 半導体装置、半導体信号処理装置、およびクロスバースイッチ |
US20070226567A1 (en) | 2006-03-23 | 2007-09-27 | Gorman Kevin W | High speed bist utilizing clock multiplication |
WO2008077237A1 (en) * | 2006-12-22 | 2008-07-03 | Sidense Corp. | A program verify method for otp memories |
US8120989B2 (en) | 2007-06-25 | 2012-02-21 | Qualcomm Incorporated | Concurrent multiple-dimension word-addressable memory architecture |
US8042082B2 (en) | 2007-09-12 | 2011-10-18 | Neal Solomon | Three dimensional memory in a system on a chip |
US8631195B1 (en) * | 2007-10-25 | 2014-01-14 | Netlogic Microsystems, Inc. | Content addressable memory having selectively interconnected shift register circuits |
US8332580B2 (en) * | 2008-04-02 | 2012-12-11 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
US10832746B2 (en) * | 2009-07-16 | 2020-11-10 | Gsi Technology Inc. | Non-volatile in-memory computing device |
US20120246380A1 (en) | 2009-10-21 | 2012-09-27 | Avidan Akerib | Neighborhood operations for parallel processing |
US9026714B2 (en) | 2010-06-04 | 2015-05-05 | Cisco Technology, Inc. | Memory expansion using rank aggregation |
KR20140085468A (ko) * | 2011-10-28 | 2014-07-07 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 행 시프팅 시프트가능 메모리 |
WO2013115778A1 (en) * | 2012-01-30 | 2013-08-08 | Hewlett-Packard Development Company, L.P. | Dynamic/static random access memory (d/sram) |
KR101990971B1 (ko) | 2012-01-30 | 2019-06-19 | 삼성전자 주식회사 | 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 |
US9317482B2 (en) | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
US9378181B2 (en) | 2012-11-09 | 2016-06-28 | Intel Corporation | Scalable computing array |
US9197285B2 (en) | 2012-12-20 | 2015-11-24 | Deere & Company | Methods and apparatus for ameliorating signal reception |
US9153305B2 (en) * | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9639458B2 (en) | 2013-09-26 | 2017-05-02 | Emu Solutions, Inc. | Reducing memory accesses for enhanced in-memory parallel operations |
US9934856B2 (en) * | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9711206B2 (en) * | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9847110B2 (en) * | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US20160147667A1 (en) | 2014-11-24 | 2016-05-26 | Samsung Electronics Co., Ltd. | Address translation in memory |
US9954533B2 (en) * | 2014-12-16 | 2018-04-24 | Samsung Electronics Co., Ltd. | DRAM-based reconfigurable logic |
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
-
2017
- 2017-02-06 US US15/425,996 patent/US9922696B1/en active Active
- 2017-05-12 KR KR1020170059473A patent/KR102182217B1/ko active IP Right Grant
- 2017-09-04 CN CN201710786369.3A patent/CN108022615B/zh active Active
- 2017-09-13 TW TW106131455A patent/TWI713047B/zh active
- 2017-10-03 JP JP2017193447A patent/JP6785738B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050024923A1 (en) * | 2003-07-15 | 2005-02-03 | International Business Machines Corporation | Gain cell memory having read cycle interlock |
US20100164972A1 (en) * | 2008-04-02 | 2010-07-01 | Avidan Akerib | System, method and apparatus for memory with embedded associative section for computations |
US20120293200A1 (en) * | 2011-05-18 | 2012-11-22 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and method of driving semiconductor device |
US9455020B2 (en) * | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US20160232951A1 (en) * | 2015-02-05 | 2016-08-11 | The Board Of Trustees Of The University Of Illinois | Compute memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354383B2 (en) | 2019-09-27 | 2022-06-07 | Applied Materials, Inc | Successive bit-ordered binary-weighted multiplier-accumulator |
Also Published As
Publication number | Publication date |
---|---|
JP6785738B2 (ja) | 2020-11-18 |
KR20180046846A (ko) | 2018-05-09 |
US9922696B1 (en) | 2018-03-20 |
JP2018073452A (ja) | 2018-05-10 |
CN108022615B (zh) | 2023-03-28 |
TW201816785A (zh) | 2018-05-01 |
KR102182217B1 (ko) | 2020-11-25 |
CN108022615A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI714806B (zh) | 動態隨機存取記憶體處理單元架構 | |
TWI713047B (zh) | Dram式處理單元的電路和微架構 | |
TWI718336B (zh) | Dpu操作用的系統 | |
JP7173709B2 (ja) | ニューラルネットワーク回路 | |
TWI640003B (zh) | 用於邏輯/記憶體器件之裝置及方法 | |
Talati et al. | mmpu—a real processing-in-memory architecture to combat the von neumann bottleneck | |
JP6791522B2 (ja) | インデータパス計算動作のための装置及び方法 | |
US6948045B2 (en) | Providing a register file memory with local addressing in a SIMD parallel processor | |
TWI671744B (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 | |
JP5162024B2 (ja) | マルチポート型メモリスーパーセル及びデータ経路スイッチング回路を伴う集積回路 | |
CN115831185A (zh) | 存算一体芯片、操作方法、制作方法和电子设备 | |
TWI825849B (zh) | 存算一體裝置及相關的方法 | |
US20230385624A1 (en) | Computing in memory with artificial neurons | |
Bottleneck | mMPU—A Real Processing-in-Memory Architecture to Combat the von | |
CN117636956A (zh) | 存储器内计算(imc)电路和设备、以及神经网络设备 |