TW201816592A - 動態隨機存取記憶體處理單元架構 - Google Patents

動態隨機存取記憶體處理單元架構 Download PDF

Info

Publication number
TW201816592A
TW201816592A TW106131867A TW106131867A TW201816592A TW 201816592 A TW201816592 A TW 201816592A TW 106131867 A TW106131867 A TW 106131867A TW 106131867 A TW106131867 A TW 106131867A TW 201816592 A TW201816592 A TW 201816592A
Authority
TW
Taiwan
Prior art keywords
dram
array
columns
cell
row
Prior art date
Application number
TW106131867A
Other languages
English (en)
Other versions
TWI714806B (zh
Inventor
李双辰
牛迪民
克里希納 馬拉迪
郑宏忠
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW201816592A publication Critical patent/TW201816592A/zh
Application granted granted Critical
Publication of TWI714806B publication Critical patent/TWI714806B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40622Partial refresh of memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/403Digital 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/405Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4091Sense or sense/refresh amplifiers, or associated sense circuitry, e.g. for coupled bit-line precharging, equalising or isolating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

一種動態隨機存取記憶體(DRAM)處理單元(DPU)可包括:至少一個計算胞元陣列,具有排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;以及控制器,可耦接至所述至少一計算胞元陣列以將所述至少一計算胞元陣列配置成執行動態隨機存取記憶體處理單元運算。

Description

動態隨機存取記憶體處理單元架構
本文中本發明是有關於記憶體系統,更具體而言是有關於動態隨機存取記憶體(dynamic random access memory,DRAM)處理單元(DRAM processing unit,DPU)。
傳統上,使用圖形處理單元(Graphics Processing Unit,GPU)及張量處理單元(Tensor Processing Unit,TPU)來進行深度學習處理(deep learning processing)。深度學習處理包括可能無法藉由圖形處理單元或張量處理單元得到高效執行的高度平行化的處理。
示例性實施例提供一種動態隨機存取記憶體(DRAM)處理單元(DPU),所述DPU可包括:至少一個計算胞元陣列,具有排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;以及控制器,可耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行DPU運算。
示例性實施例提供一種DPU,所述DPU可包括:至少一個計算胞元陣列,可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;至少一個資料胞元陣列,可包括排列成至少一個行的至少一個DRAM式記憶體胞元;以及控制器,耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行DPU運算,且所述控制器耦接至所述至少一個資料胞元陣列以執行記憶體運算。在一個實施例中,所述至少一個行的所述DRAM式計算胞元可各自包括三電晶體及一電容器(three transistor, one capacitor,3T1C)式DRAM記憶體胞元,且所述至少一個行的所述DRAM式計算胞元可提供反或邏輯功能。在另一實施例中,所述至少一個行的所述DRAM式計算胞元可各自包括一電晶體及一電容器(one transistor, one capacitor,1T1C)式DRAM記憶體胞元,且所述DRAM式計算胞元中的每一者可更包括算術邏輯單元(ALU),所述算術邏輯單元耦接至所述DRAM式計算胞元的位元線,其中所述算術邏輯單元可提供所述邏輯功能。
示例性實施例提供DPU,所述DPU可包括:至少一個計算胞元陣列,可包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;至少一個隨機計算胞元陣列,可包括排列成陣列的多個DRAM式隨機計算胞元,所述陣列具有至少一個行,其中所述至少一個行可包括至少三個列的DRAM式隨機計算胞元,所述至少三個列的DRAM式隨機計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;控制器,耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行DPU運算,且所述控制器耦接至所述至少一個隨機計算胞元陣列以執行隨機邏輯運算。
在以下詳細說明中,闡述了諸多具體細節以提供對本發明的透徹理解。然而,熟習此項技術者將理解,沒有該些具體細節亦可實踐所揭露的態樣。在其他實例中,未詳細闡述眾所習知的方法、程序、組件及電路以避免使本文中所揭露的主題模糊不清。
本說明書通篇中所提及的「一個實施例」或「實施例」意指結合所述實施例所闡述的特定特徵、結構或特性可包括於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中」或「在實施例中」抑或「根據一個實施例」(或具有相似含義的其他片語)可能未必皆指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適當的方式進行組合。就此而言,本文中所使用的詞「示例性」意指「充當例子、實例、或例證」。本文中被闡述為「示例性」的任何實施例並非被視為必定較其他實施例更佳或具有優勢。此外,相依於本文論述的上下文,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。應進一步注意,本文中所示出及論述的各種圖(包括組件圖)僅用於說明目的,且並非按比例繪製。同樣地,示出各種波形圖及時序圖僅用於說明目的。舉例而言,為清晰起見,可相對於其他元件而誇大一些元件的尺寸。此外,適當情況下,已在各圖中重複使用參考編號來指示對應的及/或類似的元件。
本文所使用術語僅用於闡述特定示例性實施例,而並非旨在限制所主張主題。除非上下文中清楚地另外指明,否則本文所使用的單數形式「一(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的內部架構可包括連接至多個子陣列記憶體庫的系統匯流排。在一個實施例中,系統匯流排可被配置成提供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可讀取記憶體庫102中的一整列,並接著將所述列寫回至同一記憶體庫或寫入至另一記憶體庫。緩衝器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可包括2K個行及16個列。在另一實施例中,資料胞元陣列106可包括少於或多於2K個行及/或少於或多於16個列。
每一計算胞元陣列107可包括排列成至少一個行及至少一個列的一或多個計算胞元。計算胞元陣列107中的行的數目相同於資料胞元陣列106中的行的數目。在一個實施例中,計算胞元陣列107可包括2K個行及16個列。在另一實施例中,計算胞元陣列107可包括少於或多於2K個行及/或少於或多於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中的計算胞元均可亦包括排列成與列X中的計算胞元的排列相似的3T1C式DRAM配置的三個電晶體T1 至T3 、及電容器C。圖2A中所繪示的示例性的所述三個計算胞元及感測放大器SA被配置成提供反或邏輯運算(即,X NOR Y邏輯運算),其中結果儲存於列R中。儘管圖2A中明確繪示僅一個行的3T1C式DRAM計算胞元,然而應理解,在另一實施例中,3T1C式計算胞元可被配置成多個行(即,2K個行)。亦應理解,在另一實施例中,可提供多於三個列。此外,儘管圖2A中所繪示的3T1C式DRAM計算胞元配置提供反或邏輯運算,然而應理解,3TIC式DRAM計算胞元形狀201的反或邏輯運算可被用於提供各種功能運算,例如但不限於互斥反或(XNOR)、加法(ADD)、選擇(SET)、最大值(MAX)、正負號(SIGN)、多工(MUX)、條件和加法邏輯(conditional-sum addition logic,CSA)、乘法、位1計數(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)、最大值、正負號、多工(MUX)、條件和加法邏輯(CSA)、乘法、位1計數、及比較。移位陣列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是區段的數目)。電晶體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可包括2K個行及16個列。在另一實施例中,隨機資料陣列715可包括少於或多於2K個行及/或少於或多於16個列。在隨機資料陣列715中,使用「1」的存在機率及使用2n 位來表示n位的值。轉換器-隨機陣列716中的隨機數字產生器可用於將真實數字轉換成隨機數字。可使用位1計數運算將隨機數字轉換回真實數字。
利用隨機計算方式,加法可被轉換成多工運算且乘法可被轉換成及邏輯運算。舉例而言,圖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),例如設定每一記憶體庫的主動子陣列的數目、每一主動子陣列的所輸入特徵映射的數目、特徵映射的分區、及/或卷積核心的複用方案(reuse scheme)。又一些其他應用程式設計介面類功能可藉由對每一子陣列分配特定任務(例如,卷積計算、通道求和(channel sum up)、及/或資料調度(data dispatching))來提供附加的資源分配最佳化。若運算元將在整數與隨機數字之間轉換,則DPU程式庫921包括在滿足精確約束條件的同時將費用最小化的應用程式設計介面類功能。在精確度低於期望的事件中,DPU程式庫921可包括使用附加位元重新計算隨機表示形式的值、或將任務卸載至其他硬體(例如,中央處理單元)的應用程式設計介面類功能。
DPU程式庫921亦可包括對DPU中的多個經激活子陣列同時進行排程且對資料移動進行排程以使所述資料移動被計算操作隱藏的應用程式設計介面類功能。
DPU程式庫921的另一態樣包括用於進一步的DPU開發的擴展介面。在一個實施例中,DPU程式庫921可使用反或及移位邏輯來提供用於對功能性進行直接程式化的介面,使得可提供除標準型運算(即,加法、乘法、最大值/最小值等)以外的運算。擴展介面亦可提供以下介面:所述介面使得並非專門由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中的一個列及/或兩個列進行操作的單一指令;向量指令、及/或集合向量、操作中讀取的指令(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至框架層930的能力的多DPU應用程式設計介面,使得使用者可以與多個圖形處理單元的使用方式相似的方式在硬體層處使用多個DPU。框架層930的又一特徵使得使用者能夠將功能指派給硬體層910處的DPU或圖形處理單元。
應用940可包括各種各樣的應用,例如但不限於影像標標籤處理(image tag processing)、自主駕駛/自主領航車輛(self-driving/piloting vehicle)、阿爾法狗型深度思維應用(AlphaGo-type deep-mind application)、及/或言語研究(speech research)。
熟習此項技術者將認識到,可在各種各樣的應用中對本文中所闡述的新穎概念作出潤飾及變化。因此,所主張的主題的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍所限定。
100、700‧‧‧DPU
101a、101b‧‧‧記憶體庫
102a、102b‧‧‧子陣列
103‧‧‧緩衝器
104‧‧‧系統匯流排
105、105n‧‧‧記憶體陣列片
105a、105b‧‧‧記憶體陣列片/計算胞元行
106‧‧‧資料胞元陣列
107‧‧‧計算胞元陣列/計算胞元
107a、107b、107c、107d‧‧‧計算胞元
108‧‧‧移位陣列/記憶體陣列片內移位陣列
109‧‧‧虛線
110‧‧‧解碼器/資料胞元陣列解碼器
111‧‧‧解碼器/計算胞元陣列解碼器
112‧‧‧移位陣列/記憶體陣列片間移位陣列
112e、112f‧‧‧資料移位線
113‧‧‧記憶體陣列片間轉發陣列
113g‧‧‧第一資料轉發線
113h‧‧‧第二資料轉發線
114‧‧‧控制器/子陣列控制器
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‧‧‧轉發控制線
FDL‧‧‧轉發資料線
FSL‧‧‧轉發區段線
ISLcL‧‧‧記憶體陣列片間移位控制線
SA‧‧‧感測放大器
SL‧‧‧移位線
SLcL‧‧‧控制線/左移位控制線
SML‧‧‧移位遮罩線
SRcL‧‧‧控制線/右移位控制線
T1‧‧‧電晶體/第一電晶體
T2‧‧‧電晶體/第二電晶體
T3‧‧‧電晶體/第三電晶體
T4、T112a、T112b、T112c、T112d、T113a、T113b、T113c、T113d、T113e、T113f‧‧‧電晶體
T5‧‧‧第五電晶體
T6‧‧‧電晶體/第六電晶體
WL、WLX、WLY、WLR‧‧‧字元線
在以下部分中,將參照圖中所示的示例性實施例來闡述本文中所揭露主題的態樣,其中:
圖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的系統架構。

Claims (20)

  1. 一種動態隨機存取記憶體(DRAM)處理單元(DPU),包括: 至少一個計算胞元陣列,包括排列成陣列的多個DRAM式計算胞元,所述陣列具有至少一個行,所述至少一個行包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中;以及 控制器,耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行動態隨機存取記憶體處理單元運算。
  2. 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,其中所述控制器經由位址匯流排接收用於所述動態隨機存取記憶體處理單元運算的指令。
  3. 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,其中所述至少一個行的所述DRAM式計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元。
  4. 如申請專利範圍第3項所述的動態隨機存取記憶體處理單元,其中所述至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
  5. 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,其中所述至少一個行的所述DRAM式計算胞元各自包括一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
  6. 如申請專利範圍第5項所述的動態隨機存取記憶體處理單元,其中所述DRAM式計算胞元中的每一者更包括算術邏輯單元(ALU),所述算術邏輯單元耦接至所述DRAM式計算胞元的位元線,所述算術邏輯單元提供所述邏輯功能。
  7. 如申請專利範圍第6項所述的動態隨機存取記憶體處理單元,其中所述算術邏輯單元提供反或邏輯功能。
  8. 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,更包括: 至少一個記憶體胞元陣列,包括排列成至少一個行的至少一個DRAM式記憶體胞元;以及 感測放大器,包括輸入及輸出,所述輸入電性耦接至所述至少三個列的DRAM式計算胞元的讀取位元線,所述輸出電性耦接至所述至少三個列的DRAM式計算胞元的寫入位元線, 其中所述控制器進一步耦接至所述至少一個記憶體胞元陣列以將所述至少一個記憶體胞元陣列配置成執行記憶體運算,且 其中所述控制器進一步經由位址匯流排接收用於所述記憶體運算的指令。
  9. 如申請專利範圍第1項所述的動態隨機存取記憶體處理單元,更包括: 至少一個隨機計算胞元陣列,包括排列成陣列的多個DRAM式隨機計算胞元,所述陣列具有第二至少一個行,所述第二至少一個行包括第二至少三個列的DRAM式隨機計算胞元,所述第二至少三個列的DRAM式隨機計算胞元被配置成提供對所述第二至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述第二至少三個列中的第三列中, 其中所述控制器進一步耦接至所述至少一個隨機計算胞元陣列以將所述至少一個隨機計算胞元陣列配置成執行隨機邏輯運算,且 其中所述控制器進一步經由位址匯流排接收用於所述隨機邏輯運算的指令。
  10. 一種動態隨機存取記憶體(DRAM)處理單元(DPU),包括: 至少一個計算胞元陣列,包括排列成陣列的多個DRAM式計算胞元,所述陣列具有第一至少一個行,所述第一至少一個行包括至少三個列的DRAM式計算胞元,所述至少三個列的DRAM式計算胞元被配置成提供對所述至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述至少三個列中的第三列中; 至少一個資料胞元陣列,包括排列成第二至少一個行的至少一個DRAM式記憶體胞元;以及 控制器,耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行動態隨機存取記憶體處理單元運算,且所述控制器耦接至所述至少一個資料胞元陣列以執行記憶體運算。
  11. 如申請專利範圍第10項所述的動態隨機存取記憶體處理單元,其中所述控制器經由位址匯流排接收用於所述動態隨機存取記憶體處理單元運算的指令。
  12. 如申請專利範圍第10項所述的動態隨機存取記憶體處理單元,其中所述第一至少一個行的所述DRAM式計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,且 其中所述第一至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
  13. 如申請專利範圍第10項所述的動態隨機存取記憶體處理單元,其中所述第一至少一個行的所述DRAM式計算胞元各自包括一電晶體及一電容器(1T1C)式DRAM記憶體胞元,且 其中所述DRAM式計算胞元中的每一者更包括算術邏輯單元(ALU),所述算術邏輯單元耦接至所述DRAM式計算胞元的位元線,所述算術邏輯單元提供所述邏輯功能。
  14. 如申請專利範圍第13項所述的動態隨機存取記憶體處理單元,其中所述算術邏輯單元提供反或邏輯功能。
  15. 如申請專利範圍第10項所述的動態隨機存取記憶體處理單元,更包括: 至少一個隨機計算胞元陣列,包括排列成陣列的多個DRAM式隨機計算胞元,所述陣列具有第三至少一個行,所述第三至少一個行包括第二至少三個列的DRAM式隨機計算胞元,所述第二至少三個列的DRAM式隨機計算胞元被配置成提供對所述第二至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述第二至少三個列中的第三列中, 其中所述控制器進一步耦接至所述至少一個隨機計算胞元陣列以將所述至少一個隨機計算胞元陣列配置成執行隨機邏輯運算,且 其中所述控制器進一步經由位址匯流排接收用於所述隨機邏輯運算的指令。
  16. 如申請專利範圍第15項所述的系統,其中所述第三至少一個行的所述DRAM式隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,或一電晶體及一電容器(1T1C)式DRAM記憶體胞元。
  17. 一種動態隨機存取記憶體(DRAM)處理單元(DPU),包括: 至少一個計算胞元陣列,包括排列成陣列的多個DRAM式計算胞元,所述陣列具有第一至少一個行,所述第一至少一個行包括第一至少三個列的DRAM式計算胞元,所述第一至少三個列的DRAM式計算胞元被配置成提供對所述第一至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述第一至少三個列中的第三列中; 至少一個隨機計算胞元陣列,包括排列成陣列的多個DRAM式隨機計算胞元,所述陣列具有第二至少一個行,所述第二至少一個行包括第二至少三個列的DRAM式隨機計算胞元,所述第二至少三個列的DRAM式隨機計算胞元被配置成提供對所述第二至少三個列中的第一列及第二列進行運算的邏輯功能且被配置成將所述邏輯功能的結果儲存於所述第二至少三個列中的第三列中;以及 控制器,耦接至所述至少一個計算胞元陣列以將所述至少一個計算胞元陣列配置成執行動態隨機存取記憶體處理單元運算,且所述控制器耦接至所述至少一個隨機計算胞元陣列以執行隨機邏輯運算。
  18. 如申請專利範圍第17項所述的動態隨機存取記憶體處理單元,其中所述控制器經由位址匯流排接收用於所述動態隨機存取記憶體處理單元運算的指令。
  19. 如申請專利範圍第18項所述的動態隨機存取記憶體處理單元,其中所述第一至少一個行的所述DRAM式計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元,且 其中所述第一至少一個行的所述DRAM式計算胞元提供反或邏輯功能。
  20. 如申請專利範圍第17項所述的系統,其中所述第二至少一個行的所述DRAM式隨機計算胞元各自包括三電晶體及一電容器(3T1C)式DRAM記憶體胞元。
TW106131867A 2016-10-27 2017-09-18 動態隨機存取記憶體處理單元架構 TWI714806B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662413977P 2016-10-27 2016-10-27
US62/413,977 2016-10-27
US201662418155P 2016-11-04 2016-11-04
US62/418,155 2016-11-04
US15/426,033 2017-02-06
US15/426,033 US10242728B2 (en) 2016-10-27 2017-02-06 DPU architecture

Publications (2)

Publication Number Publication Date
TW201816592A true TW201816592A (zh) 2018-05-01
TWI714806B TWI714806B (zh) 2021-01-01

Family

ID=62022501

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106131867A TWI714806B (zh) 2016-10-27 2017-09-18 動態隨機存取記憶體處理單元架構

Country Status (5)

Country Link
US (1) US10242728B2 (zh)
JP (1) JP6799520B2 (zh)
KR (1) KR102139213B1 (zh)
CN (1) CN108008974B (zh)
TW (1) TWI714806B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10891076B1 (en) 2016-12-06 2021-01-12 Gsi Technology, Inc. Results processing circuits and methods associated with computational memory cells
US10854284B1 (en) 2016-12-06 2020-12-01 Gsi Technology, Inc. Computational memory cell and processing array device with ratioless write port
US10847212B1 (en) 2016-12-06 2020-11-24 Gsi Technology, Inc. Read and write data processing circuits and methods associated with computational memory cells using two read multiplexers
US10777262B1 (en) 2016-12-06 2020-09-15 Gsi Technology, Inc. Read data processing circuits and methods associated memory cells
US10943648B1 (en) 2016-12-06 2021-03-09 Gsi Technology, Inc. Ultra low VDD memory cell with ratioless write port
US10770133B1 (en) 2016-12-06 2020-09-08 Gsi Technology, Inc. Read and write data processing circuits and methods associated with computational memory cells that provides write inhibits and read bit line pre-charge inhibits
US11227653B1 (en) 2016-12-06 2022-01-18 Gsi Technology, Inc. Storage array circuits and methods for computational memory cells
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
US10847213B1 (en) 2016-12-06 2020-11-24 Gsi Technology, Inc. Write data processing circuits and methods associated with computational memory cells
US10725777B2 (en) * 2016-12-06 2020-07-28 Gsi Technology, Inc. Computational memory cell and processing array device using memory cells
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
US10614875B2 (en) * 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
CN108985449B (zh) * 2018-06-28 2021-03-09 中国科学院计算技术研究所 一种对卷积神经网络处理器的控制方法及装置
US10755766B2 (en) * 2018-09-04 2020-08-25 Micron Technology, Inc. Performing logical operations using a logical operation component based on a rate at which a digit line is discharged
KR20200057475A (ko) 2018-11-16 2020-05-26 삼성전자주식회사 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템
US11074008B2 (en) * 2019-03-29 2021-07-27 Intel Corporation Technologies for providing stochastic key-value storage
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
US10777253B1 (en) * 2019-04-16 2020-09-15 International Business Machines Corporation Memory array for processing an N-bit word
US10958272B2 (en) 2019-06-18 2021-03-23 Gsi Technology, Inc. Computational memory cell and processing array device using complementary exclusive or memory cells
US10930341B1 (en) 2019-06-18 2021-02-23 Gsi Technology, Inc. Processing array device that performs one cycle full adder operation and bit line read/write logic features
US10877731B1 (en) 2019-06-18 2020-12-29 Gsi Technology, Inc. Processing array device that performs one cycle full adder operation and bit line read/write logic features
US11409527B2 (en) * 2019-07-15 2022-08-09 Cornell University Parallel processor in associative content addressable memory
US11435946B2 (en) * 2019-09-05 2022-09-06 Micron Technology, Inc. Intelligent wear leveling with reduced write-amplification for data storage devices configured on autonomous vehicles
WO2021053453A1 (ja) * 2019-09-20 2021-03-25 株式会社半導体エネルギー研究所 半導体装置
US11226816B2 (en) * 2020-02-12 2022-01-18 Samsung Electronics Co., Ltd. Systems and methods for data placement for in-memory-compute
US20220058471A1 (en) * 2020-08-19 2022-02-24 Micron Technology, Inc. Neuron using posits
CN116136835B (zh) * 2023-04-19 2023-07-18 中国人民解放军国防科技大学 一种三进二出数值获取方法、装置及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
AU2003289844A1 (en) * 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US20110026323A1 (en) * 2009-07-30 2011-02-03 International Business Machines Corporation Gated Diode Memory Cells
US8238173B2 (en) * 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
US8379433B2 (en) * 2010-09-15 2013-02-19 Texas Instruments Incorporated 3T DRAM cell with added capacitance on storage node
JP6106043B2 (ja) * 2013-07-25 2017-03-29 ルネサスエレクトロニクス株式会社 半導体集積回路装置
US9455020B2 (en) * 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
DE102015214138A1 (de) * 2014-07-28 2016-01-28 Victor Equipment Co. Automatisiertes Gasschneidsystem mit Hilfsbrenner
US9954533B2 (en) * 2014-12-16 2018-04-24 Samsung Electronics Co., Ltd. DRAM-based reconfigurable logic
US9697877B2 (en) * 2015-02-05 2017-07-04 The Board Of Trustees Of The University Of Illinois Compute memory

Also Published As

Publication number Publication date
JP2018073402A (ja) 2018-05-10
CN108008974B (zh) 2023-05-26
CN108008974A (zh) 2018-05-08
TWI714806B (zh) 2021-01-01
US10242728B2 (en) 2019-03-26
KR102139213B1 (ko) 2020-07-29
US20180122456A1 (en) 2018-05-03
KR20180046345A (ko) 2018-05-08
JP6799520B2 (ja) 2020-12-16

Similar Documents

Publication Publication Date Title
TW201816592A (zh) 動態隨機存取記憶體處理單元架構
KR102268179B1 (ko) Dpu 연산들을 위한 소프트웨어 스택 및 프로그래밍
TWI713047B (zh) Dram式處理單元的電路和微架構
CN108701473B (zh) 用于数据移动的设备及方法
CN108885887B (zh) 用于数据移动的设备及方法
US7167890B2 (en) Multiplier-based processor-in-memory architectures for image and graphics processing
EP3671433A1 (en) Nand block architecture for in-memory multiply-and-accumulate operations
Angizi et al. Redram: A reconfigurable processing-in-dram platform for accelerating bulk bit-wise operations
TWI671744B (zh) 用於在記憶體中資料切換網路的裝置及方法
Jaiswal et al. I-SRAM: Interleaved wordlines for vector Boolean operations using SRAMs
US20210350846A1 (en) Associativity-Agnostic In-Cache Computing Memory Architecture Optimized for Multiplication
CN115831185A (zh) 存算一体芯片、操作方法、制作方法和电子设备
Zhou et al. FHEmem: A Processing In-Memory Accelerator for Fully Homomorphic Encryption
US20230385624A1 (en) Computing in memory with artificial neurons
TWI825849B (zh) 存算一體裝置及相關的方法
Tasnim et al. MAGIC-DHT: Fast in-memory computing for Discrete Hadamard Transform
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
Bottleneck mMPU—A Real Processing-in-Memory Architecture to Combat the von
Kulkarni et al. Neuromorphic Accelerator for Deep Spiking Neural Networks with NVM Crossbar Arrays
CN117636956A (zh) 存储器内计算(imc)电路和设备、以及神经网络设备