TW202141290A - 記憶體中處理(pim)系統和pim系統的操作方法 - Google Patents
記憶體中處理(pim)系統和pim系統的操作方法 Download PDFInfo
- Publication number
- TW202141290A TW202141290A TW109131494A TW109131494A TW202141290A TW 202141290 A TW202141290 A TW 202141290A TW 109131494 A TW109131494 A TW 109131494A TW 109131494 A TW109131494 A TW 109131494A TW 202141290 A TW202141290 A TW 202141290A
- Authority
- TW
- Taiwan
- Prior art keywords
- mac
- pim
- command
- data
- output
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4915—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Programmable Controllers (AREA)
- Logic Circuits (AREA)
- Feedback Control In General (AREA)
Abstract
本發明關於記憶體中處理(PIM)系統和PIM系統的操作方法。記憶體中處理(PIM)系統包括PIM設備和PIM控制器。PIM設備包括第一儲存區、第二儲存區以及被配置爲分別從第一儲存區和第二儲存區接收第一資料和第二資料以執行MAC算術運算的乘法/累加(MAC)運算器。PIM控制器控制PIM設備的記憶體模式和MAC模式。PIM控制器被配置爲在記憶體模式下產生記憶體命令並將其發送給PIM設備。另外,PIM控制器被配置爲在MAC模式下產生第一MAC命令至第五MAC命令並將其發送至PIM設備。
Description
本揭示內容的各種實施例關於記憶體中處理(processing-in-memory, PIM)系統,更具體而言,關於包括PIM設備和控制器的PIM系統以及操作該PIM系統的方法。
近來,不僅在資訊技術列業而且在金融和醫療列業中,對人工智慧(AI)的興趣都在增加。因此,在各個領域中,都考慮並對人工智慧進行原型設計,更確切地說是深度學習的引入。通常,用於有效學習深度神經網路(deep neural networks, DNN)或與通用神經網路相比具有增加的層的深度網路以利用深度神經網路(DNN)或深度網路進行模式識別或推斷的技術通常稱爲深度學習。
引起廣泛關注的一個原因可能是執行算術運算的處理器的性能提高。爲了提高人工智慧的性能,可能有必要增加構成人工智慧中的神經網路的層數以教育人工智慧。近年來,這種趨勢一直持續,這導致實際執行計算的硬體所需的計算量呈指數增長。此外,如果人工智慧採用包括彼此分離的記憶體和處理器的通用硬體系統,則由於記憶體和處理器之間的資料通訊量的限制,人工智慧的性能可能降低。爲了解決該問題,已經將其中處理器和記憶體集成在一個半導體晶片中的PIM設備用來作為神經網路計算設備。由於PIM設備直接在內部執行算術運算,因此可以提高神經網路中的資料處理速度。
根據本揭示內容的實施例的記憶體中處理(processing-in-memory, PIM)系統包括PIM設備和PIM控制器。PIM設備包括第一儲存區、第二儲存區以及分別從第一儲存區和第二儲存區接收第一資料和第二資料以執行MAC算術運算的乘法/累加(multiplication/accumulation, MAC)運算器。PIM控制器控制PIM設備的記憶體模式和MAC模式。PIM控制器被配置爲在記憶體模式下產生並向PIM設備發送記憶體命令,並且被配置爲在MAC模式下產生並向PIM設備發送第一MAC命令至第五MAC命令。
根據本揭示內容的實施例的記憶體中處理(PIM)系統包括PIM設備和PIM控制器。PIM設備包括儲存區、全域緩衝器和乘法/累加(MAC)運算器,其中,MAC運算器適於分別從儲存區和全域緩衝器接收第一資料和第二資料,以執行MAC算術運算。PIM控制器被配置爲控制PIM設備的記憶體模式和MAC模式。PIM控制器被配置爲在記憶體模式下產生並向PIM設備發送記憶體命令,並且被配置爲在MAC模式下產生並向PIM設備發送第一至第三MAC命令。
根據本揭示內容的實施例的記憶體中處理(PIM)系統包括PIM設備和PIM控制器。PIM設備包括資料儲存區和算術電路。算術電路被配置爲從資料儲存區接收第一資料和第二資料,以對第一資料和第二資料執行算術運算。PIM控制器被配置爲控制PIM設備的記憶體模式和算術模式。PIM控制器被配置爲在記憶體模式下產生記憶體命令並將其發送給PIM設備。並且PIM控制器被配置爲在算術模式下產生複數個算術命令並將其發送給PIM設備。
根據本揭示內容的實施例是一種操作記憶體中處理(PIM)系統的方法,該系統包括用於執行乘法/累加(MAC)算術運算的PIM設備和用於控制PIM設備的MAC算術運算的PIM控制器。該方法包括在初始值爲1的遞增整數「R」小於或等於固定整數「M」時迭代地執行如下過程:從PIM控制器向PIM設備發送第一MAC命令,以將儲存在PIM設備的第一儲存區中的用於MAC算術運算的「M×N」權重矩陣的第R列中的元素輸出給PIM設備的MAC運算器(其中,「M」和「N」是大於「1」的自然數);從PIM控制器向PIM設備發送第二MAC命令,以將儲存在PIM設備的第二儲存區中的用於MAC算術運算的「N×1」向量矩陣的第一行中的元素輸出給PIM設備的MAC運算器;從PIM控制器向PIM設備發送第三MAC命令,以執行用於將權重矩陣的第R列中的元素鎖存到MAC運算器中的輸入鎖存操作;從所述PIM控制器向所述PIM設備發送第四MAC命令,以執行用於將所述向量矩陣的第一行中的元素鎖存到所述MAC運算器中的輸入鎖存操作;對權重矩陣的第R列中的元素和向量矩陣的由MAC運算器鎖存的第一行中的元素執行矩陣乘法計算;從所述PIM控制器向所述PIM設備發送第五MAC命令,以執行所述MAC運算器中所述矩陣乘法計算的結果資料的輸出鎖存操作;從所述PIM控制器向所述PIM設備發送第六MAC命令,以從所述MAC運算器輸出所述輸出鎖存操作的結果資料;然後將整數「R」增加1。
根據本揭示內容的實施例是一種操作記憶體中處理(PIM)系統的方法,該系統包括用於執行乘法/累加(MAC)算術運算的PIM設備和用於控制PIM設備的MAC算術運算的PIM控制器。該方法包括在初始值爲1的遞增整數「R」小於或等於固定整數「M」時迭代地執行如下過程:從PIM控制器向PIM設備發送第一MAC命令,以將儲存在PIM設備的儲存區中的用於MAC算術運算的「M×N」權重矩陣的第R列中的元素輸出給PIM設備的MAC運算器(其中,「M」和「N」是大於「1」的自然數);將儲存在PIM設備的全域緩衝器中用於MAC算術運算的「N×1」向量矩陣的第一行中的元素輸出給PIM設備的MAC運算器;從PIM控制器向PIM設備發送第二MAC命令,以執行用於將權重矩陣的第R列中的元素和向量矩陣的第一行中的元素鎖存到MAC運算器中的輸入鎖存操作;對由MAC運算器鎖存的權重矩陣第R列中的元素和向量矩陣第一行中的元素執行矩陣乘法計算;從PIM控制器向PIM設備發送第三MAC命令,以執行MAC運算器中矩陣乘法計算的結果資料的輸出鎖存操作;從PIM控制器向PIM設備發送第四MAC命令,以從MAC運算器輸出所述輸出鎖存操作的結果資料;然後將整數「R」加1。
相關申請案的交叉引用:
本申請案請求於2020年1月7日提交的美國臨時申請案62/958226和於2020年1月17日提交的韓國專利申請案10-2020-0006903的優先權,其全部內容透過引用合並於此。
在實施例的以下描述中,將理解的是:術語「第一」和「第二」旨在標識元件,但是不用於定義元件的特定數量或順序。另外,當元件被稱爲位於另一元件「上」、「上方」、「之上」、「下」、「下方」或「之下」時,其意圖是指相對位置關係,但不用於限制在其中該元件直接接觸另一個元件、或者在它們之間存在至少一個中間元件的特定情况。因此,在此使用的諸如「上」、「上方」、「之上」、「下」、「下方」或「之下」等術語僅是出於描述特定實施例的目的,而不是意圖限制本揭示內容的範圍。此外,當一個元件被稱爲「連接」或「耦接」到另一元件時,該元件可以直接電或機械地連接或耦接到另一元件,或者可以間接地、在它們之間有一個或複數個其他元件地被電或機械地連接或耦接到另一元件。
各種實施例針對PIM系統和操作PIM系統的方法。
圖1是示出根據本揭示內容的實施例的PIM系統的方塊圖。如圖1所示, PIM系統1可以包括PIM設備10和PIM控制器20。PIM設備10可以包括資料儲存區11、算術電路12、介面(I/F)13-1和資料(DQ)輸入/輸出(I/O)焊盤13-2。資料儲存區11可以包括第一儲存區和第二儲存區。在一個實施例中,第一儲存區和第二儲存區可以分別是第一記憶庫和第二記憶庫。在另一個實施例中,第一資料儲存區和第二儲存區可以分別是記憶庫和緩衝記憶體。資料儲存區11可以包括揮發性記憶體元件或非揮發性記憶體元件。對於一個實施例,資料儲存區11可以包括揮發性記憶體元件和非揮發性記憶體元件兩者。
算術電路12可以對從資料儲存區11傳送來的資料執行算術運算。在一個實施例中,算術電路12可以包括乘法和累加(MAC)運算器。MAC運算器可以對從資料儲存區11傳送來的資料執行乘法計算,並且可以對乘法結果資料進行累加計算。在MAC運算之後,MAC運算器可以輸出MAC結果資料。MAC結果資料可以儲存在資料儲存區11中,或者可以透過資料I/O焊盤13-2從PIM設備10輸出。
PIM設備10的介面13-1可以從PIM控制器20接收命令CMD和位址ADDR。介面13-1可以將命令CMD輸出給PIM設備10中的資料儲存區11或算術電路12。介面13-1可以將位址ADDR輸出給PIM設備10中的資料儲存區11。PIM設備10的資料I/O焊盤13-2可以用來作為在PIM設備10的外部設備、例如PIM控制器20與PIM設備10中包括的資料儲存區11之間的資料通訊終端。PIM設備10的外部設備可以對應於PIM系統1的PIM控制器20或位於PIM系統1外部的主機。因此,從主機或PIM控制器20輸出的資料可以透過資料I/O焊盤13-2輸入到PIM設備10中。
PIM控制器20可以控制PIM設備10的運行。在一個實施例中,PIM控制器20可以控制PIM設備10,使得PIM設備10在記憶體模式或算術模式下運行。在PIM控制器20控制PIM設備10使得PIM設備10在記憶體模式下運行的情况下,PIM設備10可以對資料儲存區11執行資料讀取操作或資料寫入操作。在PIM控制器20控制PIM設備10使得PIM設備10在算術模式下運行的情况下,PIM設備10的算術電路12可以從資料儲存區11接收第一資料和第二資料以執行算術運算。在PIM控制器20控制PIM設備10使得PIM設備10在算術模式下運行的情况下,PIM設備10還可以對資料儲存區11執行資料讀取操作和資料寫入操作以執行算術運算。算術運算可以是在預定的固定時間期間執行的確定性算術運算。如本文中針對參數(諸如預定的固定時間或時間段)所使用的詞「預定的」是指在過程或演算法中使用該參數之前確定該參數的值。對於一些實施例,在過程或演算法開始之前確定參數的值。在其他實施例中,在過程或演算法期間、但在過程或演算法中使用參數之前確定該參數的值。
PIM控制器20可以被配置爲包括命令隊列邏輯21、調度器22、命令(CMD)產生器23和位址(ADDR)產生器25。命令隊列邏輯21可以從外部設備(例如PIM系統1的主機)接收請求REQ,並將與請求REQ相對應的命令隊列儲存在命令隊列邏輯21中。每當命令隊列邏輯21儲存命令隊列時,命令隊列邏輯21可以將關於命令隊列的儲存狀態的資訊發送給調度器22。可以根據由調度器22確定的順序,將儲存在命令隊列邏輯21中的命令隊列發送給命令產生器23。圖2的命令隊列邏輯21以及圖20的命令隊列邏輯210也可以被實現爲硬體、軟體或硬體和軟體的組合。例如,命令隊列邏輯21和/或210可以是根據執行命令隊列邏輯代碼的演算法和/或處理器來運行的命令隊列邏輯電路。
當從命令隊列邏輯21輸出儲存在命令隊列邏輯21中的命令隊列時,調度器22可以調整命令隊列的順序。爲了調整儲存在命令隊列邏輯21中的命令隊列的輸出順序,調度器22可以分析關於由命令隊列邏輯21提供的命令隊列的儲存狀態的資訊,並且可以重新調整命令隊列的處理順序,從而根據適當的順序來處理命令隊列。
命令產生器23可以從命令隊列邏輯21接收與PIM設備10的記憶體模式和PIM設備10的MAC模式有關的命令隊列。命令產生器23可以對命令隊列進行解碼以產生和輸出命令CMD。命令CMD可以包括用於記憶體模式的記憶體命令或用於算術模式的算術命令。從命令產生器23輸出的命令CMD可以被發送給PIM設備10。
命令產生器23可以被配置爲在記憶體模式下產生記憶體命令並將其發送給PIM設備10。命令產生器23可以被配置爲在算術模式下產生複數個算術命令並將其發送給PIM設備10。在一個示例中,命令產生器23可以被配置爲在算術模式下以預定的時間間隔產生並輸出第一算術命令至第五算術命令。第一算術命令可以是用於從資料儲存區11中讀取第一資料的控制信號。第二算術命令可以是用於從資料儲存區11中讀取第二資料的控制信號。第三算術命令可以是用於將第一資料鎖存在算術電路12中的控制信號。第四算術命令可以是用於將第二資料鎖存在算術電路12中的控制信號。以及第五MAC命令可以是用於鎖存算術電路12的算術結果資料的控制信號。
位址產生器25可以從命令隊列邏輯21接收位址資訊,並產生用於存取資料儲存區11中的區域的位址ADDR。在一個實施例中,位址ADDR可以包括記憶庫位址、列位址和行位址。從位址產生器25輸出的位址ADDR可以透過介面(I/F)13-1輸入到資料儲存區11。
圖2是示出根據本揭示內容的第一實施例的PIM系統1-1的方塊圖。如圖2所示,PIM系統1-1可以包括PIM設備100和PIM控制器200。PIM設備100可以包括第一記憶庫(BANK0)111、第二記憶庫(BANK1)112、MAC運算器120、介面(I/F)131和資料輸入/輸出(I/O)焊盤132。對於一個實施例,MAC運算器120代表MAC運算器電路。PIM設備100中包括的第一記憶庫(BANK0)111、第二記憶庫(BANK1)112和MAC運算器120可以構成一個MAC單元。在另一個實施例中,PIM設備100可以包括複數個MAC單元。第一記憶庫(BANK0)111和第二記憶庫(BANK1)112可以代表用於儲存資料的記憶體區,例如DRAM設備。第一記憶庫(BANK0)111和第二記憶庫(BANK1)112中的每一個可以是被獨立啟動的組件單元,並且可以被配置爲具有與PIM設備100中的資料I/O線相同的資料匯流排寬度。在一個實施例中,第一記憶庫111和第二記憶庫112可以透過交錯(interleaving)來操作,使得在選擇另一個記憶庫的同時,平行執行第一記憶庫111和第二記憶庫112的啟動操作。第一記憶庫111和第二記憶庫112中的每一個可以包括至少一個單元陣列,該單元陣列包括位於多列和多行的交叉點處的記憶體單位單元。
儘管在圖式中未示出,但是核心電路可以鄰近於第一記憶庫111和第二記憶庫112設置。核心電路可以包括X解碼器XDEC和Y解碼器/IO電路YDEC/IO。X解碼器XDEC也可以被稱爲字元線解碼器或列解碼器。X解碼器XDEC可以從PIM控制器200接收列位址ADD_R,並且可以對列位址ADD_R進行解碼,以選擇並致能耦接到所選擇的記憶庫的列之一(即,字元線)。每個Y解碼器/IO電路YDEC/IO可以包括Y解碼器YDEC和I/O電路IO。Y解碼器YDEC也可以被稱爲位元線解碼器或行解碼器。Y解碼器YDEC可以從PIM控制器200接收行位址ADDR_C,並且可以對行位址ADDR_C進行解碼,以選擇並致能耦接到所選記憶庫的行(即,位元線)中的至少之一。每個I/O電路可以包括I/O感測放大器,用於在對第一記憶庫111和第二記憶庫112的讀取操作期間感測和放大從相應的記憶庫輸出的讀取資料的位準。此外,I/O電路可以包括用於在第一記憶庫111和第二記憶庫112的寫入操作期間驅動寫入資料的寫入驅動器。
PIM設備100的介面131可以從PIM控制器200接收記憶體命令M_CMD、MAC命令MAC_CMD、記憶庫選擇信號BS以及列/行位址ADDR_R/ADDR_C。介面131可以將記憶體命令M_CMD連同記憶庫選擇信號BS以及列/行位址ADDR_R/ADDR_C一起輸出給第一記憶庫111或第二記憶庫112。介面131可以將MAC命令MAC_CMD輸出給第一記憶庫111、第二記憶庫112和MAC運算器120。在這種情况下,介面131可以將記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C輸出給第一記憶庫111和第二記憶庫112兩者。PIM設備100的資料I/O焊盤132可以用來作為在PIM設備100外部的設備與被包括在PIM設備100中的MAC單元(其包括第一記憶庫111和第二記憶庫112以及MAC運算器120)之間的資料通訊終端。PIM設備100的外部設備可以對應於PIM系統1-1的PIM控制器200或位於PIM系統1-1外部的主機。因此,從主機或PIM控制器200輸出的資料可以透過資料I/O焊盤132輸入到PIM設備100中。
PIM控制器200可以控制PIM設備100的運行。在一個實施例中,PIM控制器200可以控制PIM設備100,使得PIM設備100在記憶體模式或MAC模式下運行。在PIM控制器200控制PIM設備100使得PIM設備100在記憶體模式下運行的情况下,PIM設備100可以對第一記憶庫111和第二記憶庫112執行資料讀取操作或資料寫入操作。在PIM控制器200控制PIM設備100使得PIM設備100在MAC模式下運行的情况下,PIM設備100可以對MAC運算器120執行MAC算術運算。在PIM控制器200控制PIM設備100使得PIM設備100在MAC模式下運行的情况下,PIM設備100還可以對第一記憶庫111和第二記憶庫112執行資料讀取操作和資料寫入操作,以執行MAC算術運算。
PIM控制器200可以被配置爲包括命令隊列邏輯210、調度器220、記憶體命令產生器230、MAC命令產生器240和位址產生器250。命令隊列邏輯210可以從外部設備(例如PIM系統1-1的主機)接收請求REQ,並將與請求REQ相對應的命令隊列儲存在命令隊列邏輯210中。每當命令隊列邏輯210儲存命令隊列時,命令隊列邏輯210就可以將有關命令隊列的儲存狀態的資訊發送給調度器220。可以根據調度器220確定的順序將儲存在命令隊列邏輯210中的命令隊列發送給記憶體命令產生器230或MAC命令產生器240。當從命令隊列邏輯210輸出的命令隊列包括請求在PIM設備100的記憶體模式下運行的命令資訊時,命令隊列邏輯210可以將命令隊列發送給記憶體命令產生器230。另一方面,當從命令隊列邏輯210輸出的命令隊列是請求在PIM設備100的MAC模式下運行的命令資訊時,命令隊列邏輯210可以將命令隊列發送給MAC命令產生器240。調度器220可以提供命令隊列是與記憶體模式或是與MAC模式有關的資訊。
當從命令隊列邏輯210輸出儲存在命令隊列邏輯210中的命令隊列時,調度器220可以調整命令隊列的定時(timing)。爲了調整儲存在命令隊列邏輯210中的命令隊列的輸出定時,調度器220可以分析關於由命令隊列邏輯210提供的命令隊列的儲存狀態的資訊,並且可以重新調整命令隊列的處理順序,使得根據適當的順序來處理命令隊列。調度器220可以輸出關於從命令隊列邏輯210輸出的命令隊列是與PIM設備100的記憶體模式有關或是與PIM設備100的MAC模式有關的資訊並將其發送給命令隊列邏輯210。爲了獲得關於從命令隊列邏輯210輸出的命令隊列是與記憶體模式或是與MAC模式有關的資訊,調度器220可以包括模式選擇器221。模式選擇器221可以產生模式選擇信號,該模式選擇信號包括關於儲存在命令隊列邏輯210中的命令隊列是與記憶體模式或是與MAC模式有關的資訊,並且調度器220可以將模式選擇信號發送給命令隊列邏輯210。
記憶體命令產生器230可從命令隊列邏輯210接收與PIM設備100的記憶體模式有關的命令隊列。記憶體命令產生器230可對命令隊列進行解碼以産生並輸出記憶體命令M_CMD。從記憶體命令產生器230輸出的記憶體命令M_CMD可以被發送給PIM設備100。在實施例中,記憶體命令M_CMD可以包括記憶體讀取命令和記憶體寫入命令。當從記憶體命令產生器230輸出記憶體讀取命令時,PIM設備100可以對第一記憶庫111或第二記憶庫112執行資料讀取操作。從PIM設備100讀取出的資料可以透過資料I/O焊盤132發送給外部設備。從PIM設備100輸出的讀取資料可以透過PIM控制器200發送給主機。當從記憶體命令產生器230輸出記憶體寫入命令時,PIM設備100可以對第一記憶庫111或第二記憶庫112執行資料寫入操作。在這種情况下,可以透過PIM控制器200將要寫入PIM設備100的資料從主機發送到PIM設備100。輸入到PIM設備100的寫入資料可以透過資料I/O焊盤132被發送給第一記憶庫111或第二記憶庫112。
MAC命令產生器240可以從命令隊列邏輯210接收與PIM設備100的MAC模式有關的命令隊列。MAC命令產生器240可以對命令隊列進行解碼以產生並輸出MAC命令MAC_CMD。從MAC命令產生器240輸出的MAC命令MAC_CMD可以被發送給PIM設備100。可以透過從MAC命令產生器240輸出的MAC命令MAC_CMD來執行對PIM設備100的第一記憶庫111和第二記憶庫112的資料讀取操作,以及也可以透過從MAC命令產生器240輸出的MAC命令MAC_CMD 來執行MAC運算器120的MAC算術運算。將參照圖3詳細描述MAC命令MAC_CMD和PIM設備100的根據MAC命令MAC_CMD的MAC算術運算。
位址產生器250可以從命令隊列邏輯210接收位址資訊。位址產生器250可以產生用於選擇第一記憶庫111和第二記憶庫112之一的記憶庫選擇信號BS,並且可以將記憶庫選擇信號BS發送給PIM設備100。此外,位址產生器250可以產生用於存取在第一記憶庫111或第二記憶庫112中的區域(例如記憶體單元)的列位址ADDR_R和行位址ADDR_C,並且可以將列位址ADDR_R和行位址ADDR_C發送給PIM設備100。
圖3示出從根據本揭示內容的第一實施例的PIM系統1-1中包括的MAC命令產生器240輸出的MAC命令MAC_CMD。如圖3所示,MAC命令MAC_CMD可以包括第一至第六MAC命令信號。在一個實施例中,第一MAC命令信號可以是第一MAC讀取信號MAC_RD_BK0,第二MAC命令信號可以是第二MAC讀取信號MAC_RD_BK1,第三MAC命令信號可以是第一MAC輸入鎖存信號MAC_L1,第四MAC命令信號可以是第二MAC輸入鎖存信號MAC_L2,第五MAC命令信號可以是MAC輸出鎖存信號MAC_L3,第六MAC命令信號可以是MAC鎖存器重設信號MAC_L_RST。
第一MAC讀取信號MAC_RD_BK0可以控制用於從第一記憶庫111中讀取出第一資料(例如權重資料)的操作,以將第一資料發送給MAC運算器120。第二MAC讀取信號MAC_RD_BK1可以控制用於從第二記憶庫112中讀取出第二資料(例如向量資料)的操作,以將第二資料發送給MAC運算器120。第一MAC輸入鎖存信號MAC_L1可以控制從第一記憶庫111發送給MAC運算器120的權重資料的輸入鎖存操作。第二MAC輸入鎖存信號MAC_L2可以控制從第二記憶庫112發送給MAC運算器120的向量資料的輸入鎖存操作。如果執行了權重資料和向量資料的輸入鎖存操作,則MAC運算器120可以執行MAC算術運算,以產生與MAC算術運算的結果相對應的MAC結果資料。MAC輸出鎖存信號MAC_L3可以控制由MAC運算器120產生的MAC結果資料的輸出鎖存操作。並且,MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器120產生的MAC結果資料的輸出操作以及包括在MAC運算器120中的輸出鎖存器的重設操作。
根據本實施例的PIM系統1-1可以被配置爲執行確定性MAC算術運算。本揭示內容中使用的術語「確定性MAC算術運算」可以被定義爲在預定的固定時間期間在PIM系統1-1中執行的MAC算術運算。因此,可以以固定的時間間隔依序地產生從PIM控制器200發送給PIM設備100的MAC命令MAC_CMD。因此,PIM控制器200不需要爲MAC算術運算而執行的用於產生控制MAC算術運算的MAC命令MAC_CMD的各種操作的任何額外的結束信號。在一個實施例中,由用於控制MAC算術運算的MAC命令MAC_CMD執行的各種操作的等待時間可以被設置爲具有固定值,以便執行確定性MAC算術運算。在這種情况下,可以以與固定等待時間相對應的固定時間間隔從PIM控制器200依序輸出MAC命令MAC_CMD。
例如,MAC命令產生器240被配置爲在第一時間點輸出第一MAC命令。MAC命令產生器240被配置爲在從第一時間點起經過了第一等待時間時的第二時間點輸出第二MAC命令。第一等待時間被設置爲基於第一MAC命令從第一儲存區讀取出第一資料並將第一資料輸出給MAC運算器所花費的時間。MAC命令產生器240被配置爲在從第二時間點起經過了第二等待時間時的第三時間點輸出第三MAC命令。將第二等待時間設置爲基於第二MAC命令從第二儲存區讀取出第二資料並將第二資料輸出給MAC運算器所花費的時間。MAC命令產生器240被配置爲在從第三時間點起經過了第三等待時間時的第四時間點輸出第四MAC命令。將第三等待時間設置爲基於第三MAC命令在MAC運算器中鎖存第一資料所花費的時間。MAC命令產生器240被配置爲在從第四時間點起經過了第四等待時間時的第五時間點輸出第五MAC命令。第四等待時間被設置爲基於第四MAC命令在MAC運算器中鎖存第二資料並對在MAC運算器中鎖存的第一資料和第二資料執行MAC算術運算所花費的時間。MAC命令產生器240被配置爲在從第五時間點起經過了第五等待時間時的第六時間點輸出第六MAC命令。將第五等待時間設置爲執行由MAC算術運算產生的MAC結果資料的輸出鎖存操作所花費的時間。
圖4示出包括在根據本揭示內容的第一實施例的PIM系統1-1中的PIM設備100的MAC運算器120的示例。參照圖4,MAC運算器120可以被配置爲包括資料輸入電路121、MAC電路122和資料輸出電路123。資料輸入電路121可以包括第一輸入鎖存器121-1和第二輸入鎖存器121-2 。MAC電路122可以包括乘法邏輯電路122-1和加法邏輯電路122-2。資料輸出電路123可以包括輸出鎖存器123-1、傳輸閘123-2、延遲電路123-3和反相器123-4。在一個實施例中,可以使用觸發器來實現第一輸入鎖存器121-1、第二輸入鎖存器121-2和輸出鎖存器123-1。
MAC運算器120的資料輸入電路121可以與第一MAC輸入鎖存信號MAC_L1同步,以鎖存從第一記憶庫111透過內部資料傳輸線傳送給MAC電路122的第一資料DA1。另外,MAC運算器120的資料輸入電路121可以與第二MAC輸入鎖存信號MAC_L2同步,以鎖存從第二記憶庫112透過另一內部資料傳輸線傳送的第二資料DA2。因爲第一MAC輸入鎖存信號MAC_L1和第二MAC輸入鎖存信號MAC_L2以預定的時間間隔從PIM控制器200的MAC命令產生器240依序被發送給PIM設備100的MAC運算器120,在第一資料DA1被輸入到MAC運算器120的MAC電路122之後,可以將第二資料DA2輸入到MAC運算器120的MAC電路122。
MAC電路122可以對透過資料輸入電路121輸入的第一資料DA1和第二資料DA2執行MAC算術運算。MAC電路122的乘法邏輯電路122-1可以包括複數個乘法器122 -11。乘法器122-11中的每一個可以對從第一輸入鎖存器121-1輸出的第一資料DA1和從第二輸入鎖存器121-2輸出的第二資料DA2執行乘法計算,並且可以輸出乘法計算的結果。可以將構成第一資料DA1的位元值分開地輸入到乘法器122-11。類似地,構成第二資料DA2的位元值也可以被分開地輸入到乘法器122-11。例如,如果第一資料DA1由「N」位元二進制流表示,則第二資料DA2由「N」位元二進制流表示,並且乘法器122-11的數量爲「M」,然後,可以將第一資料DA1的「N/M」位元部分和第二資料DA2的「N/M」位元部分輸入到乘法器122-11中的每個。
MAC電路122的加法邏輯電路122-2可以包括複數個加法器122-21。儘管在圖式中未示出,但是可以將複數個加法器122-21設置爲提供包括複數個級的樹結構。布置在第一級的每個加法器122-21可以從包括在乘法邏輯電路122-1中的兩個乘法器122-11接收兩組乘法結果資料,並且可以執行兩組乘法結果資料的加法計算以輸出加法結果資料。布置在第二級的每個加法器122-21可以從布置在第一級的兩個加法器122-21接收兩組加法結果資料,並且可以執行兩組加法結果資料的加法計算以輸出加法結果資料。布置在最後一級的加法器122-21可以從布置在前一級的兩個加法器122-21接收兩組加法結果資料,並且可以執行兩組加法結果資料的加法計算以輸出加法結果資料。儘管在圖式中未示出,但是加法邏輯電路122-2可以進一步包括用於對從布置在最後一級的加法器122-21輸出的MAC結果資料DA_MAC與儲存在資料輸出電路123的輸出鎖存器123-1中的在前MAC結果資料DA_MAC進行累加的加法計算的附加加法器。
資料輸出電路123可以將從MAC電路122輸出的MAC結果資料DA_MAC輸出給資料傳輸線。具體地,資料輸出電路123的輸出鎖存器123-1可以與MAC輸出鎖存信號MAC_L3同步,以鎖存從MAC電路122輸出的MAC結果資料DA_MAC,並輸出MAC結果資料DA_MAC的鎖存資料。從輸出鎖存器123-1輸出的MAC結果資料DA_MAC可以被反饋到MAC電路122以進行累加的加法計算。另外,MAC結果資料DA_MAC可以被輸入到傳輸閘123-2。如果將鎖存器重設信號LATCH_RST輸入到輸出鎖存器123-1,則可以初始化輸出鎖存器123-1。在這種情况下,可以移除由輸出鎖存器123-1鎖存的所有資料。在一個實施例中,可以透過產生MAC鎖存器重設信號MAC_L_RST來啟動鎖存器重設信號LATCH_RST,並且可以將其輸入到輸出鎖存器123-1。
從MAC命令產生器240輸出的MAC鎖存器重設信號MAC_L_RST可以被輸入到傳輸閘123-2、延遲電路123-3和反相器123-4。反相器123-4可以反向緩衝MAC鎖存器重設信號MAC_L_RST,以將MAC鎖存器重設信號MAC_L_RST的被反向緩衝的信號輸出給傳輸閘123-2。傳輸閘123-2可以回應於MAC鎖存器重設信號MAC_L_RST將來自輸出鎖存器123-1的MAC結果資料DA_MAC傳送給資料傳輸線。延遲電路123-3可以將MAC鎖存器重設信號MAC_L_RST延遲特定時間,以產生並輸出鎖存器控制信號PINSTB。
圖5示出在根據本揭示內容的第一實施例的PIM系統1-1中執行的MAC算術運算的示例。如圖5所示,可以透過矩陣計算來執行由PIM系統1-1執行的MAC算術運算。具體地,PIM設備100可以根據PIM控制器200的控制來執行「M×N」權重矩陣(例如「8×8」權重矩陣)和「N×1」向量矩陣(例如「8×1」向量)的矩陣乘法計算(其中,「M」和「N」是自然數)。構成權重矩陣的元素W0.0、……和W7.7可以對應於從第一記憶庫111輸入到MAC運算器120的第一資料DA1。構成向量矩陣的元素X0.0、……和X7.0可以對應於從第二記憶庫112輸入到MAC運算器120的第二資料DA2。構成權重矩陣的元素W0.0、……和W7.7中的每個可以由具有複數個位元值的二進制流表示。另外,構成向量矩陣的每個元素X0.0、……和X7.0也可以由具有複數個位元值的二進制流表示。構成權重矩陣的每個元素W0.0、……和W7.7中包含的位元數量可以等於構成向量矩陣的每個元素X0.0、……和X7.0中包含的位元數量。
權重矩陣和向量矩陣的矩陣乘法計算可適用於多層感知型神經網路結構(以下稱爲「MLP型神經網路」)。通常,用於執行深度學習的MLP型神經網路可以包括輸入層、複數個隱藏層(例如至少三個隱藏層)和輸出層。圖5中所示的權重矩陣和向量矩陣的矩陣乘法計算(即MAC算術運算)可以在隱藏層之一中被執行。在複數個隱藏層中的第一隱藏層中,可以透過使用輸入到第一隱藏層的向量資料來執行MAC算術運算。然而,在複數個隱藏層當中的第二至最後一個隱藏層中的每一個中,可以透過使用先前的隱藏層的計算結果作爲向量資料來執行MAC算術運算。
圖6是示出參照圖5描述的MAC算術運算的過程的流程圖,這些過程在根據本揭示內容的第一實施例的PIM系統1-1中執行。另外,圖7至圖13是示出圖5中示出的MAC算術運算的過程的方塊圖,這些過程在根據本揭示內容的第一實施例的PIM系統1-1中執行。參照圖6至圖13,在執行MAC算術運算之前,可以在步驟301將第一資料(即權重資料)寫入第一記憶庫111。因此,可以將權重資料儲存在PIM設備100的第一記憶庫111中。在本實施例中,可以假設權重資料是構成圖5的權重矩陣的元素W0.0、……和W7.7。小數點前的整數比列號小1,小數點後的整數比行號小1。因此,例如,權重W0.0代表權重矩陣的第一列第一行的元素。
在步驟302,可以確定是否請求推斷。推斷請求信號可以從位於PIM系統1-1外部的外部設備發送給PIM系統1-1的PIM控制器200。在某些情况下,推斷請求可以基於使用者輸入。推斷請求可以發起由PIM系統1-1執行的計算,以基於輸入資料來實現確定。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器200,則PIM系統1-1可以處於待機模式,直到推斷請求信號被發送給PIM控制器200。可替代地,如果沒有推斷請求信號被發送到PIM控制器200,則PIM系統1-1可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器200爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖5的向量矩陣的元素X0.0、……和X7.0。如果在步驟302將推斷請求信號發送給PIM控制器200,則在步驟303,PIM控制器200可以將與推斷請求信號一起發送的向量資料寫入第二記憶庫112。因此,向量資料可以儲存在PIM設備100的第二記憶庫112中。
在步驟304,PIM控制器200的MAC命令產生器240可以產生第一MAC讀取信號MAC_RD_BK0並將其發送給PIM設備100,如圖7所示。在這種情况下,PIM控制器200的位址產生器250可以產生記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。可以產生記憶庫選擇信號BS以選擇第一記憶庫111和第二記憶庫112中的第一記憶庫111。因此,第一MAC讀取信號MAC_RD_BK0可以控制對PIM設備100的第一記憶庫111的資料讀取操作。第一記憶庫111可以回應於第一MAC讀取信號MAC_RD_BK0來輸出儲存在第一記憶庫111的由列/行位址ADDR_R/ADDR_C選擇的區域中的權重資料的權重矩陣的第一列中的元素W0.0、……和W0.7並將其發送給MAC運算器120。在一個實施例中,可以透過全域輸入/輸出(global input/output)(以下稱爲「GIO」)線來執行從第一記憶庫111到MAC運算器120的資料傳輸,該全域輸入/輸出線被設置爲PIM設備100中的資料傳輸路徑。可替代地,可以透過第一記憶庫輸入/輸出(bank input/output)(以下稱爲「BIO」)線來執行從第一記憶庫111到MAC運算器120的資料傳輸,該第一記憶庫輸入/輸出線專門被設置用於第一記憶庫111和MAC運算器120之間的資料傳輸。
在步驟305,PIM控制器200的MAC命令產生器240可以產生第二MAC讀取信號MAC_RD_BK1並將其發送給PIM設備100,如圖8所示。在這種情况下,PIM控制器200的位址產生器250可以產生用於選擇第二記憶庫112的記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。第二MAC讀取信號MAC_RD_BK1可以控制對PIM設備100的第二記憶庫112的資料讀取操作。第二記憶庫112可以回應於第二MAC讀取信號MAC_RD_BK1輸出與儲存在第二記憶庫112的由列/行位址ADDR_R/ADDR_C選擇的區域中的向量資料相對應的向量矩陣的第一行中的元素X0.0、……和X7.0並將其發送給MAC運算器120。在一個實施例中,可以透過PIM設備100中的GIO線來執行從第二記憶庫112到MAC運算器120的資料傳輸。可替代地,可以透過第二BIO線執行從第二記憶庫112到MAC運算器120的資料傳輸,該第二BIO線專門被設置用於第二記憶庫112和MAC運算器120之間的資料傳輸。
在步驟306,PIM控制器200的MAC命令產生器240可以產生第一MAC輸入鎖存信號MAC_L1並將其發送給PIM設備100,如圖9所示。第一MAC輸入鎖存信號MAC_L1可以控制PIM設備100的MAC運算器120的第一資料的輸入鎖存操作。權重矩陣的第一列中的元素W0.0、……和W0.7可以透過輸入鎖存操作被輸入到MAC運算器120的MAC電路122,如圖11所示。MAC電路122可以包括複數個乘法器122-11(例如八個乘法器122-11),其數量等於權重矩陣的行數。在這種情况下,權重矩陣的第一列中的元素W0.0、……和W0.7可以被分別輸入到八個乘法器122-11。
在步驟307,PIM控制器200的MAC命令產生器240可以產生第二MAC輸入鎖存信號MAC_L2並將其發送給PIM設備100,如圖10所示。第二MAC輸入鎖存信號MAC_L2可以控制PIM設備100的MAC運算器120的第二資料的輸入鎖存操作。向量矩陣的第一行中的元素X0.0、……和X7.0可以透過輸入鎖存操作被輸入到MAC運算器120的MAC電路122,如圖11所示。在這種情况下,向量矩陣的第一行中的元素X0.0、……和X7.0可以被分別輸入到八個乘法器122-11。
在步驟308,MAC運算器120的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。例如,計算「M×N」權重矩陣的第R個「1×N」列向量和「N×1」向量矩陣的純量積作爲「M×1」MAC結果矩陣的「R×1」元素。對於R=1,圖5中所示的權重矩陣的第一列和向量矩陣的第一行的純量積爲W0.0×X0.0 + W0.1×X1.0 + W0.2×X2.0 + W0.3×X3.0 + W0.4×X4.0 + W0.5×X5.0 + W0.6×X6.0 + W0.7×X7.0。具體地,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。如圖11所示,加法邏輯電路122-2可以包括布置在第一級的四個加法器122-21A、布置在第二級的兩個加法器122-21B以及布置在第三級的加法器122-21C。
布置在第一級的每個加法器122-21A可以接收兩個乘法器122-11的輸出資料,並且可以對兩個乘法器122-11的輸出資料進行加法計算以輸出加法計算的結果。布置在第二級的每個加法器122-21B可以接收布置在第一級的兩個加法器122-21A的輸出資料,並且可以執行兩個加法器122-21A的輸出資料的加法計算以輸出加法計算的結果。布置在第三級的加法器122-21C可以接收布置在第二級的兩個加法器122-21B的輸出資料,並且可以執行兩個加法器122-21B的輸出資料的加法計算以輸出加法計算的結果。加法邏輯電路122-2的輸出資料可以對應於權重矩陣中包括的第一列和向量矩陣中包括的行的MAC算術運算的結果資料(即MAC結果資料)。因此,加法邏輯電路122-2的輸出資料可以對應於位於具有8個元素MAC0.0、……和MAC7.0的「8×1」MAC結果矩陣的第一列的元素MAC0.0,如圖5所示。如參照圖4所述,可以將加法邏輯電路122-2的輸出資料MAC0.0輸入到布置在MAC運算器120的資料輸出電路123中的輸出鎖存器123-1。
在步驟309,PIM控制器200的MAC命令產生器240可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備100,如圖12所示。MAC輸出鎖存信號MAC_L3可以控制由PIM設備100的MAC運算器120執行的MAC結果資料MAC0.0的輸出鎖存操作。如參照圖4所描述的,從MAC運算器120的MAC電路122輸入的MAC結果資料MAC0.0可以與MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1輸出。從輸出鎖存器123-1輸出的MAC結果資料MAC0.0可以被輸入到資料輸出電路123的傳輸閘123-2。
在步驟310,PIM控制器200的MAC命令產生器240可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備100,如圖13所示。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器120產生的MAC結果資料MAC0.0的輸出操作以及包括在MAC運算器120中的輸出鎖存器的重設操作。如參照圖4所描述的,從MAC運算器120的輸出鎖存器123-1接收MAC結果資料MAC0.0的傳輸閘123-2可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出MAC結果資料MAC0.0。在一個實施例中,從MAC運算器120輸出的MAC結果資料MAC0.0可以透過PIM設備100中的第一BIO線或第二BIO線儲存到第一記憶庫111或第二記憶庫112中。
在步驟311,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟中已經執行了權重矩陣的第一列到第八列當中第一列的MAC算術運算,所以在步驟311權重矩陣的列號可以從「1」變爲「2」。在步驟312中,可以確定在步驟311中改變的列號是否大於權重矩陣的最後一列(即當前示例的第八列)的列號。因爲在步驟311權重矩陣的列號被改變爲「2」,所以MAC算術運算的過程可以被反饋到步驟304。
如果MAC算術運算的過程從步驟312被反饋到步驟304,則對於權重矩陣的增加後的列號,可以再次執行與參照步驟304至步驟310所描述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列來執行與向量矩陣的MAC算術運算。如果在步驟312中將MAC算術運算的過程反饋到步驟304,則可以迭代地執行從步驟304到步驟311的過程,直到針對權重矩陣的所有列都執行了與向量矩陣的MAC算術運算爲止。如果在步驟311中針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟312中爲「9」的列號大於最後的列號「8」,所以可以終止MAC算術運算。
圖14示出在根據本揭示內容的第一實施例的PIM系統1-1中執行的MAC算術運算的另一示例。如圖14所示,由PIM系統1-1執行的MAC算術運算還可包括MAC結果矩陣和偏置(bias)矩陣的加法計算。具體地,如參照圖5所描述的,PIM設備100可以根據PIM控制器200的控制來執行「8×8」權重矩陣和「8×1」向量矩陣的矩陣乘法計算。作爲「8×8」權重矩陣和「8×1」向量矩陣的矩陣乘法計算的結果,可以產生具有八個元素MAC0.0、……和MAC7.0的「8×1」MAC結果矩陣。可以將「8×1」MAC結果矩陣加到「8×1」偏置矩陣。「8×1」偏置矩陣可以具有與偏置資料相對應的元素B0.0、……和B7.0。偏置資料可以被設置用於减小MAC結果矩陣的誤差。作爲MAC結果矩陣和偏置矩陣加法計算的結果,可以產生具有8個元素Y0.0、……和Y7.0的「8×1」偏置結果矩陣。
圖15是示出參照圖14描述的、在根據本揭示內容的第一實施例的PIM系統1-1中的MAC算術運算的過程的流程圖。此外,圖16示出了用於執行圖14的在根據本揭示內容的第一實施例的PIM系統1-1中的MAC算術運算的MAC運算器120-1的配置的示例。在圖16中,與圖4中所使用的相同元件符號或相同參考符號表示相同的元件,並且在下文中將省略與先前實施例中指示的相同的元件的詳細描述。參照圖15,可以在步驟321將第一資料(即權重資料)寫入第一記憶庫111中,以在PIM設備100中執行MAC算術運算。因此,可以將權重資料儲存在PIM設備100的第一記憶庫111中。在本實施例中,可以假設權重資料是構成圖14的權重矩陣的元素W0.0、……和W7.7。
在步驟322,可以確定是否請求推斷。推斷請求信號可以從位於PIM系統1-1外部的外部設備發送給PIM系統1-1的PIM控制器200。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器200,則PIM系統1-1可以處於待機模式,直到推斷請求信號被發送給PIM控制器200。可替代地,如果沒有推斷請求信號被發送到PIM控制器200,則PIM系統1-1可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器200爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖14的向量矩陣的元素X0.0、……和X7.0。如果在步驟322將推斷請求信號發送給PIM控制器200,則在步驟323,PIM控制器200可以將與推斷請求信號一起發送的向量資料寫入第二記憶庫112。因此,向量資料可以被儲存在PIM設備100的第二記憶庫112中。
在步驟324,可以將MAC運算器的輸出鎖存器初始設置爲具有偏置資料,可以將初始設置的偏置資料反饋給MAC運算器的累加加法器。執行該處理以執行MAC結果矩陣和偏置矩陣的矩陣加法計算,這參照圖14進行描述。換句話說,MAC運算器(120-1)的資料輸出電路123-A中的輸出鎖存器123-1被設置爲具有偏置資料。因爲對於權重矩陣的第一列執行矩陣乘法計算,所以輸出鎖存器123-1可以初始設置爲使位於偏置矩陣的第一列和第一行的交點處的元素B0.0作爲偏置資料。輸出鎖存器123-1可以輸出偏置資料B0.0,並且從輸出鎖存器123-1輸出的偏置資料B0.0可以被輸入到加法邏輯電路122-2的累加加法器122-21D,如圖16所示。
在一個實施例中,爲了從輸出鎖存器123-1中輸出偏置資料B0.0並將偏置資料B0.0反饋到累加加法器122-21D,PIM控制器200的MAC命令產生器240可以將MAC輸出鎖存信號MAC_L3發送給PIM設備100的MAC運算器120-1。當執行隨後的MAC算術運算時,MAC運算器120-1的累加加法器122-21D可以將從布置在最後一級的加法器122-21C輸出的MAC結果資料MAC0.0與從輸出鎖存器123-1反饋的偏置資料B0.0相加,以產生偏置結果資料Y0.0,並且可以將偏置結果資料Y0.0輸出給輸出鎖存器123-1。可以與在隨後的過程中發送的MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1輸出偏置結果資料Y0.0。
在步驟325中,PIM控制器200的MAC命令產生器240可以產生第一MAC讀取信號MAC_RD_BK0並將其發送給PIM設備100。此外,PIM控制器200的位址產生器250可以產生記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。步驟325可以以與參照圖7所描述的相同的方式來執行。在步驟326中,PIM控制器200的MAC命令產生器240可以產生第二MAC讀取信號MAC_RD_BK1並將其發送給PIM設備100。此外,PIM控制器200的位址產生器250可以產生用於選擇第二記憶庫112的記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。步驟326可以以與參照圖8描述的相同的方式執行。
在步驟327,PIM控制器200的MAC命令產生器240可以產生第一MAC輸入鎖存信號MAC_L1並將其發送給PIM設備100。步驟327可以以與參照圖9描述的相同的方式執行。第一MAC輸入鎖存信號MAC_L1可以控制用於PIM設備100的MAC運算器120的第一資料的輸入鎖存操作。可以以與參照圖11所述相同的方式執行第一資料的輸入鎖存操作。在步驟328,PIM控制器200的MAC命令產生器240可以產生第二MAC輸入鎖存信號MAC_L2並將其發送給PIM設備100。步驟328可以以與參照圖10描述的相同的方式執行。第二MAC輸入鎖存信號MAC_L2可以控制PIM設備100的MAC運算器120的第二資料的輸入鎖存操作。第二資料的輸入鎖存操作可以以與參照圖11描述的相同的方式執行。
在步驟329,MAC運算器120的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。具體地,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。加法邏輯電路122-2可以包括布置在第一級的四個加法器122-21A、布置在第二級的兩個加法器122-21B、布置在第三級的加法器122-21C以及累加加法器122-21D,如圖16所示。累加加法器122-21D可以將加法器122-21C的輸出資料與從輸出鎖存器123-1反饋的反饋資料相加,以輸出加法計算的結果。加法器122-21C的輸出資料可以是矩陣乘法結果MAC0.0,其對應於權重矩陣的第一列和向量矩陣的第一行的矩陣乘法計算的結果。累加加法器122-21D可以將加法器122-21C的輸出資料MAC0.0與從輸出鎖存器123-1反饋的偏置資料B0.0相加,以輸出加法計算的結果。累加加法器122-21D的輸出資料Y0.0可以被輸入到布置在MAC運算器120-1的資料輸出電路123-A中的輸出鎖存器123。
在步驟330中,PIM控制器200的MAC命令產生器240可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備100。步驟330可以以與參照圖12描述的相同的方式執行。MAC輸出鎖存信號MAC_L3可以控制由PIM設備100的MAC運算器120-1執行的MAC結果資料MAC0.0的輸出鎖存操作。從MAC運算器120的MAC電路122發送給輸出鎖存器123-1的偏置結果資料Y0.0可以與MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1被輸出。從輸出鎖存器123輸出的偏置結果資料Y0.0可以被輸入到傳輸閘123-2。
在步驟331,PIM控制器200的MAC命令產生器240可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備100。步驟331可以以與參照圖13描述的相同的方式執行。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器120產生的偏置結果資料Y0.0的輸出操作以及包括在MAC運算器120中的輸出鎖存器123-1的重設操作。傳輸閘123-2從包括在MAC運算器120中的資料輸出電路123-A的輸出鎖存器123-1接收偏置結果資料Y0.0,可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出偏置結果資料Y0.0。在一個實施例中,從MAC運算器120輸出的偏置結果資料Y0.0可以透過PIM設備100中的第一BIO線或第二BIO線儲存到第一記憶庫111或第二記憶庫112中。
在步驟332,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟期間已經執行了權重矩陣的第一列到第八列當中第一列的MAC算術運算,所以在步驟332可以將權重矩陣的列號從「1」變爲「2」。在步驟333中,可以確定在步驟332中改變的列號是否大於權重矩陣的最後一列(即當前示例的第八列)的列號。因爲權重矩陣的列號在步驟332被改變爲「2」,所以MAC算術運算的過程可以被反饋到步驟324。
如果MAC算術運算的過程從步驟333反饋到步驟324,則可以針對權重矩陣的增加的列號再次執行與參考步驟324至步驟331描述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列執行與向量矩陣的MAC算術運算,以及可以將輸出鎖存器123-1中的在步驟324最初設置的偏置資料B0.0改變爲偏置資料B1.0。如果在步驟333將MAC算術運算的過程反饋到步驟324,則可以迭代地執行從步驟324到步驟332的過程,直到針對權重矩陣的所有列都執行了與向量矩陣的MAC算術運算爲止。如果在步驟332針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟333中爲「9」的列號大於最後的列號「8」,所以可以終止MAC算術運算。
圖17示出了在根據本揭示內容的第一實施例的PIM系統1-1中執行的MAC算術運算的還又一示例。如圖17所示,由PIM系統1-1執行的MAC算術運算可以進一步包括用於將偏置結果矩陣應用於啟動函數的過程。具體地,如參照圖14所描述的,PIM設備100可以根據PIM控制器200的控制來執行「8×8」權重矩陣和「8×1」向量矩陣的矩陣乘法計算,以產生MAC結果矩陣。另外,可以將MAC結果矩陣加到偏置矩陣以產生偏置結果矩陣。
偏置結果矩陣可以應用於啟動函數。啟動函數是指被用來在MLP型神經網路中透過將MAC計算值與臨界值進行比較而計算唯一輸出值的函數。在一個實施例中,啟動函數可以是僅產生正輸出值的單極啟動函數,或者可以是產生負輸出值以及正輸出值的雙極啟動函數。在不同的實施例中,啟動函數可以包括S形函數、雙曲正切(Tanh)函數、修正線性單元(ReLU)函數、泄漏ReLU函數、恆等(Identity)函數和maxout函數。
圖18是示出參照圖17描述的、在根據本揭示內容的第一實施例的PIM系統1-1中MAC算術運算的過程的流程圖。此外,圖19示出了用於執行圖17的在根據本揭示內容的第一實施例的PIM系統1-1中的MAC算術運算的MAC運算器120-2的配置的示例。在圖19中,與圖4中使用的相同的元件符號或相同的參考符號表示相同的元件,並且在下文中將省略與先前實施例中提到的相同的元件的詳細描述。參照圖18,可以在步驟341將第一資料(即權重資料)寫入第一記憶庫111,以在PIM設備100中執行MAC算術運算。因此,可以將權重資料儲存在PIM設備100的第一記憶庫中。在本實施例中,可以假設權重資料是構成圖17的權重矩陣的元素W0.0、……和W7.7。
在步驟342,可以確定是否請求推斷。推斷請求信號可以從位於PIM系統1-1外部的外部設備發送給PIM系統1-1的PIM控制器200。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器200,則PIM系統1-1可以處於待機模式,直到推斷請求信號被發送給PIM控制器200。可替代地,如果沒有推斷請求信號被發送到PIM控制器200,則PIM系統1-1可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器200爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖17的向量矩陣的元素X0.0、……和X7.0。如果在步驟342將推斷請求信號發送給PIM控制器200,則在步驟343,PIM控制器200可以將與推斷請求信號一起發送的向量資料寫入第二記憶庫112。因此,向量資料可以儲存在PIM設備100的第二記憶庫112中。
在步驟344,可以將MAC運算器的輸出鎖存器初始設置爲具有偏置資料,並且可以將初始設置的偏置資料反饋給MAC運算器的累加加法器。執行該過程,以執行MAC結果矩陣和偏置矩陣的矩陣加法計算,這將參照圖17進行描述。即,如圖19所示,可以將MAC運算器(圖19的120-2)的輸出鎖存器123-1初始設置爲具有偏置矩陣的偏置資料。因爲針對權重矩陣的第一列執行矩陣乘法計算,所以可以將位於偏置矩陣的第一列第一行的元素B0.0初始設置爲輸出鎖存器123-1中的偏置資料。輸出鎖存器123-1可以輸出偏置資料B0.0,並且從輸出鎖存器123-1輸出的偏置資料B0.0可以被輸入到MAC運算器120-2的累加加法器122-21D。
在一個實施例中,爲了從輸出鎖存器123-1中輸出偏置資料B0.0並將偏置資料B0.0反饋到累加加法器122-21D,該PIM控制器200的MAC命令產生器240可以將MAC輸出鎖存信號MAC_L3發送給PIM設備100的MAC運算器120-2。當執行隨後的MAC算術運算時,MAC運算器120-2的累加加法器122-21D可以將從布置在最後一級的加法器122-21C輸出的MAC結果資料MAC0.0與從輸出鎖存器123-1反饋的偏置資料B0.0相加,以產生偏置結果資料Y0.0,並且可以將偏置結果資料Y0.0輸出給輸出鎖存器123-1。如圖19所示,可以與在隨後的過程中發送的MAC輸出鎖存信號MAC_L3同步地將偏置結果資料Y0.0從輸出鎖存器123-1發送給布置在MAC運算器120-2的資料輸出電路123-B中的啟動函數邏輯電路123-5。
在步驟345中,PIM控制器200的MAC命令產生器240可以產生第一MAC讀取信號MAC_RD_BK0並將其發送給PIM設備100。另外,PIM控制器200的位址產生器250可以產生記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。步驟345可以以與參照圖7所描述的相同的方式來執行。在步驟346中,PIM控制器200的MAC命令產生器240可以產生第二MAC讀取信號MAC_RD_BK1並將其發送給PIM設備100。此外,PIM控制器200的位址產生器250可以產生用於選擇第二記憶庫112的記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C並將其發送給PIM設備100。步驟346可以以與參照圖8描述的相同的方式執行。
在步驟347中,PIM控制器200的MAC命令產生器240可以產生第一MAC輸入鎖存信號MAC_L1並將其發送給PIM設備100。步驟347可以以與參照圖9描述的相同的方式執行。第一MAC輸入鎖存信號MAC_L1可以控制PIM設備100的MAC運算器120的第一資料的輸入鎖存操作。可以以與參照圖11所述相同的方式執行第一資料的輸入鎖存操作。在步驟348,PIM控制器200的MAC命令產生器240可以產生第二MAC輸入鎖存信號MAC_L2並將其發送給PIM設備100。步驟348可以以與參照圖10描述的相同的方式執行。第二MAC輸入鎖存信號MAC_L2可以控制PIM設備100的MAC運算器120的第二資料的輸入鎖存操作。第二資料的輸入鎖存操作可以以與參照圖11描述的相同的方式執行。
在步驟349,MAC運算器120的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。具體地,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。加法邏輯電路122-2可以包括布置在第一級的四個加法器122-21A、布置在第二級的兩個加法器122-21B、布置在第三級的加法器122-21C以及累加加法器122-21D,如圖19所示。累加加法器122-21D可以將加法器122-21C的輸出資料加到從輸出鎖存器123-1反饋的反饋資料上,以輸出加法計算的結果。加法器122-21C的輸出資料可以是「8×1」MAC結果矩陣的元素MAC0.0,其對應於權重矩陣的第一列和向量矩陣的第一行的矩陣乘法計算的結果。累加加法器122-21D可以將加法器122-21C的輸出資料MAC0.0加到從輸出鎖存器123-1反饋的偏置資料B0.0上,以輸出加法計算的結果。累加加法器122-21D的輸出資料Y0.0可以被輸入到布置在MAC運算器120的資料輸出電路123-A中的輸出鎖存器123-1。
在步驟350中,PIM控制器200的MAC命令產生器240可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備100。步驟350可以以與參照圖12描述的相同的方式執行。MAC輸出鎖存信號MAC_L3可以控制包括在PIM設備100的MAC運算器120中的輸出鎖存器123-1的輸出鎖存操作。從MAC運算器120的MAC電路122發送給輸出鎖存器123-1的偏置結果資料Y0.0可以與MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1輸出。從輸出鎖存器123-1輸出的偏置結果資料Y0.0可以被輸入到啟動函數邏輯電路123-5。在步驟351,啟動函數邏輯電路123-5可以將啟動函數應用於偏置結果資料Y0.0以產生最終輸出值,並且可以將最終輸出值輸入至傳輸閘(圖4的123-2)。例如,這是R的電流的最終輸出值,R在步驟354中遞增。
在步驟352中,PIM控制器200的MAC命令產生器240可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備100。步驟352可以以與參照圖13描述的相同的方式執行。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器120產生的最終輸出值的輸出操作和包括在MAC運算器120中的輸出鎖存器123-1的重設操作。傳輸閘123-2從MAC運算器120中包括的資料輸出電路123-B的啟動函數邏輯電路123-5接收最終輸出值,可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出最終輸出值。在一個實施例中,從MAC運算器120輸出的最終輸出值可以透過PIM設備100中的第一BIO線或第二BIO線儲存到第一記憶庫111或第二記憶庫112中。
在步驟353中,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟期間已經執行了權重矩陣的第一列至第八列當中第一列的MAC算術運算,所以在步驟353中權重矩陣的列號可以從「1」變爲「2」。在步驟354中,可以確定在步驟353中經改變的列號是否大於權重矩陣的最後一列(即第八列)的列號。因爲在步驟353將權重矩陣的列號變爲「2」,所以可以將MAC算術運算的過程反饋到步驟344。
如果將MAC算術運算的過程從步驟354反饋到步驟344,則可以針對權重矩陣的增加的列號再次執行與參考步驟344至步驟354所述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列執行與向量矩陣的MAC算術運算,以及可以將輸出鎖存器123-1中的在步驟344初始設置的偏置資料B0.0改變爲偏置資料B1.0。如果將MAC算術運算的過程從步驟354反饋到步驟344,則可以迭代地執行從步驟344到步驟354的過程,直到對權重矩陣的所有列都執行了與向量矩陣的MAC算術運算爲止。對於一個實施例,複數個最終輸出值(即,針對R的每個遞增後的值的一個最終輸出值)代表「N×1」最終結果矩陣。如果在步驟354中針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟354中爲「9」的列號大於最後一列的列號「8」,所以可以終止MAC算術運算。
圖20是示出根據本揭示內容的第二實施例的PIM系統1-2的方塊圖。在圖20中,與圖2中所使用的相同的元件符號或相同的參考符號表示相同的要素。如圖20所示,PIM系統1-2可以被配置爲包括PIM設備400和PIM控制器500。PIM設備400可以被配置爲包括與儲存區相對應的記憶庫(BANK)411、全域緩衝器412、MAC運算器420、介面(I/F)431和資料輸入/輸出(I/O)焊盤432。對於一個實施例,MAC運算器420表示MAC運算器電路。PIM設備400中包括的記憶庫(BANK)411和MAC運算器420可以構成一個MAC單元。在另一個實施例中,PIM設備400可以包括複數個MAC單元。記憶庫(BANK)411可以表示用於儲存資料的記憶體區,例如DRAM裝置。全域緩衝器412還可以表示用於儲存資料的記憶體區,例如DRAM裝置或SRAM裝置。記憶庫(BANK)411可以是獨立啟動的組件單元,並且可以被配置爲具有與PIM設備400中的資料I/O線相同的資料匯流排寬度。在一個實施例中,記憶庫411可以透過交錯來操作,使得在選擇另一個記憶庫時平行執行記憶庫411的啟動操作。記憶庫411可以包括至少一個單元陣列,該至少一個單元陣列包括位於複數個列和複數個行的交叉點處的記憶體單位單元。
儘管在圖式中未示出,但是可以在記憶庫411附近設置核心電路。核心電路可以包括X解碼器XDEC和Y解碼器/IO電路YDEC/IO。X解碼器XDEC也可以被稱爲字元線解碼器或列解碼器。X解碼器XDEC可以從PIM控制器500接收列位址ADDR_R,並且可以對列位址ADDR_R進行解碼,以選擇並致能耦接到所選記憶庫的列(即字元線)之一。每個Y解碼器/IO電路YDEC/IO可以包括Y解碼器YDEC和I/O電路IO。Y解碼器YDEC也可以被稱爲位元線解碼器或行解碼器。Y解碼器YDEC可以從PIM控制器500接收行位址ADD_C,並且可以對行位址ADD_C進行解碼,以選擇並致能耦接到所選記憶庫的行(即位元線)之一。每個I/O電路可以包括I/O感測放大器,用於在對記憶庫411的讀取操作期間感測和放大從對應的記憶庫輸出的讀取資料的位準。此外,I/O電路可以包括用於在記憶庫411的寫入操作期間驅動寫入資料的寫入驅動器。
PIM設備400的MAC運算器420可以具有與參照圖4描述的MAC運算器120幾乎相同的配置。即,MAC運算器420可以被配置爲包括資料輸入電路121、MAC電路122和資料輸出電路123,如參照圖4所描述的。資料輸入電路121可以被配置爲包括第一輸入鎖存器121-1和第二輸入鎖存器121-2。MAC電路122可以被配置爲包括乘法邏輯電路122-1和加法邏輯電路122-2。資料輸出電路123可以被配置爲包括輸出鎖存器123-1、傳輸閘123-2、延遲電路123-3和反相器123-4。在一個實施例中,可以使用觸發器來實現第一輸入鎖存器121-1、第二輸入鎖存器121-2和輸出鎖存器123-1。
MAC運算器420可以不同於MAC運算器120的地方在於:將MAC輸入鎖存信號MAC_L1同時輸入到第一輸入鎖存器121-1和第二輸入鎖存器121-2的時脈端子兩者。如以下描述中所示,可以將權重資料和向量資料同時發送給在根據本實施例的PIM系統1-2中包括的PIM設備400的MAC運算器420。即,可以將第一資料DA1(即權重資料)和第二資料DA2(即向量資料)同時分別輸入到構成資料輸入電路121的第一輸入鎖存器121-1和第二輸入鎖存器121-2兩者。因此,可以不必要向第一輸入鎖存器121-1和第二輸入鎖存器121-2的時脈端子施加額外的控制信號,因而可以將MAC輸入鎖存信號MAC_L1同時輸入到MAC運算器420中包括的第一輸入鎖存器121-1和第二輸入鎖存器121-2的時脈端子兩者。
在另一個實施例中,MAC運算器420可以被實現爲具有與參照圖16描述的用於執行圖14所示操作的MAC運算器120-1相同的配置。即使在這種情况下,MAC運算器420也可以具有與參照圖16所描述的相同的配置,除了將MAC輸入鎖存信號MAC_L1同時輸入到構成資料輸入電路121的第一輸入鎖存器121-1和第二輸入鎖存器121-2的時脈端子兩者之外。在又另一實施例中,MAC運算器420可以被實現爲具有與參照圖19描述的用於執行圖17中所示操作的MAC運算器120-2相同的配置。即使在這種情况下,MAC運算器420也可以具有與參照圖19所描述的相同的配置,除了將MAC輸入鎖存信號MAC_L1同時輸入到構成資料輸入電路121的第一輸入鎖存器121-1和第二輸入鎖存器121-2的時脈端子兩者之外。
PIM設備400的介面431可以從PIM控制器500接收記憶體命令M_CMD、MAC命令MAC_CMD、記憶庫選擇信號BS以及列/行位址ADDR_R/ADDR_C。介面431可以將記憶體命令M_CMD與記憶庫選擇信號BS以及列/行位址ADDR_R/ADDR_C一起輸出給記憶庫411。介面431可以將MAC命令MAC_CMD輸出給記憶庫411和MAC運算器420。在這種情况下,介面431可以將記憶庫選擇信號BS和列/行位址ADDR_R/ADDR_C輸出給記憶庫411。PIM設備400的資料I/O焊盤432可以用來作為PIM設備400的外部設備、包括在PIM設備400中的全域緩衝器412和MAC單元(其包括記憶庫411和MAC運算器420)之間的資料通訊端子。PIM設備400的外部設備可以對應於PIM系統1-2 的PIM控制器500或位於PIM系統1-2外部的主機。因此,從主機或PIM控制器500輸出的資料可以透過資料I/O焊盤432輸入到PIM設備400。此外,由PIM設備400產生的資料可以透過資料I/O焊盤432被發送給PIM設備400的外部設備。
PIM控制器500可以控制PIM設備400的運行。在一個實施例中,PIM控制器500可以控制PIM設備400,使得PIM設備400在記憶體模式或MAC模式下運行。在PIM控制器500控制PIM設備400使得PIM設備400在記憶體模式下運行的情况下,PIM設備400可以對記憶庫411執行資料讀取操作或資料寫入操作。在PIM控制器500控制PIM設備400使得PIM設備400在MAC模式下運行的情况下,PIM設備400可以對MAC運算器420執行MAC算術運算。在PIM控制器500控制PIM設備400使得PIM設備400在MAC模式下運行的情况下,PIM設備400也可以對記憶庫411和全域緩衝器412執行資料讀取操作和資料寫入操作,以執行MAC算術運算。
PIM控制器500可以被配置爲包括命令隊列邏輯210、調度器220、記憶體命令產生器230、MAC命令產生器540和位址產生器550。調度器220可以包括模式選擇器221。命令隊列邏輯210可以從外部設備(例如PIM系統1-2的主機)接收請求REQ,並且將與請求REQ相對應的命令隊列儲存在命令隊列邏輯210中。可以根據由調度器220確定的順序將儲存在命令隊列邏輯210中的命令隊列發送給記憶體命令產生器230或MAC命令產生器540。當從命令隊列邏輯210輸出儲存在命令隊列邏輯210中的命令隊列時,調度器220可以調整命令隊列的定時。調度器210可以包括模式選擇器221,該模式選擇器221産生模式選擇信號,該模式選擇信號包括關於儲存在命令隊列邏輯210中的命令隊列是與記憶體模式有關或是與MAC模式有關的資訊。記憶體命令產生器230可以從命令隊列邏輯210接收與PIM設備400的記憶體模式有關的命令隊列,以産生和輸出記憶體命令M_CMD。命令隊列邏輯210、調度器220、模式選擇器221和記憶體命令產生器230可以具有與參照圖2所描述的相同的功能。
MAC命令產生器540可以從命令隊列邏輯210接收與PIM設備400的MAC模式有關的命令隊列。MAC命令產生器540可以對命令隊列進行解碼,以產生並輸出MAC命令MAC_CMD。從MAC命令產生器540輸出的MAC命令MAC_CMD可以被發送給PIM設備400。對於PIM設備400的記憶庫411的資料讀取操作可以由從MAC命令產生器540輸出的MAC命令MAC_CMD來執行,並且MAC運算器420的MAC算術運算也可以由從MAC命令產生器540輸出的MAC命令MAC_CMD執行。將參照圖21詳細地描述MAC命令MAC_CMD和PIM設備400的根據MAC命令MAC_CMD的MAC算術運算。
位址產生器550可以從命令隊列邏輯210接收位址資訊。位址產生器550可以產生用於選擇記憶庫的記憶庫選擇信號BS,其中,例如,記憶庫411表示複數個記憶庫。位址產生器550可以將記憶庫選擇信號BS發送給PIM設備400。此外,位址產生器550可以產生用於存取記憶庫411中的區域(例如記憶體單元)的列位址ADDR_R和行位址ADDR_C,並且可以將列位址ADDR_R和行位址ADDR_C發送給PIM設備400。
圖21示出從在根據本揭示內容的第二實施例的PIM系統1-2中包括的MAC命令產生器540輸出的MAC命令MAC_CMD。如圖21所示,MAC命令MAC_CMD可以包括第一至第四MAC命令信號。在一個實施例中,第一MAC命令信號可以是MAC讀取信號MAC_RD_BK,第二MAC命令信號可以是MAC輸入鎖存信號MAC_L1,第三MAC命令信號可以是MAC輸出鎖存信號MAC_L3,第四MAC命令信號可以是MAC鎖存器重設信號MAC_L_RST。
MAC讀取信號MAC_RD_BK可以控制用於從記憶庫411中讀取出第一資料(例如權重資料)以將第一資料發送給MAC運算器420的操作。MAC輸入鎖存信號MAC_L1可以控制從第一記憶庫411發送給MAC運算器420的權重資料的輸入鎖存操作。MAC輸出鎖存信號MAC_L3可以控制由MAC運算器420產生的MAC結果資料的輸出鎖存操作。並且,MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器420產生的MAC結果資料的輸出操作以及包括在MAC運算器420中的輸出鎖存器的重設操作。
根據本實施例的PIM系統1-2還可以被配置爲執行確定性MAC算術運算。因此,可以以固定的時間間隔依序地產生從PIM控制器500發送給PIM設備400的MAC命令MAC_CMD。因此,PIM控制器500不需要爲MAC算術運算而執行的用於產生控制MAC算術運算的MAC命令MAC_CMD的各種操作的任何額外的結束信號。在一個實施例中,由用於控制MAC算術運算的MAC命令MAC_CMD執行的各種操作的等待時間可以被設置爲具有固定值,以便執行確定性MAC算術運算。在這種情况下,可以以與固定等待時間相對應的固定時間間隔從PIM控制器500依序輸出MAC命令MAC_CMD。
圖22是示出參照圖5描述的MAC算術運算的過程的流程圖,其在根據本揭示內容的第二實施例的PIM系統1-2中執行。另外,圖23至圖26是示出圖5中示出的MAC算術運算的過程的方塊圖,其在根據本揭示內容的第二實施例的PIM系統1-2中執行。參照圖22至26,可以在步驟361將第一資料(即權重資料)寫入記憶庫411中以執行MAC算術運算。因此,權重資料可以儲存在PIM設備400的記憶庫411中。在本實施例中,可以假設權重資料是構成圖5的權重矩陣的元素W0.0、……和W7.7。
在步驟362,可以確定是否請求推斷。可以將推斷請求信號從位於PIM系統1-2外部的外部設備發送給PIM系統1-2的PIM控制器500。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器500,則PIM系統1-2可以處於待機模式,直到推斷請求信號被發送給PIM控制器500。可替代地,如果沒有推斷請求信號被發送到PIM控制器500,則PIM系統1-2可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器500爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖5的向量矩陣的元素X0.0、……和X7.0。如果在步驟362將推斷請求信號發送給PIM控制器500,則在步驟363,PIM控制器500可以將與推斷請求信號一起發送的向量資料寫入全域緩衝器412。因此,向量資料可以儲存在PIM設備400的全域緩衝器412中。
在步驟364,PIM控制器500的MAC命令產生器540可以產生MAC讀取信號MAC_RD_BK並將其發送給PIM設備400,如圖23所示。在這種情况下,PIM控制器500的位址產生器550可以產生列/行位址ADDR_R/ADDR_C並將其發送給PIM設備400。儘管在圖式中未示出,但是如果複數個記憶庫設置在PIM設備400中,位址產生器550可以將用於在複數個記憶庫當中選擇記憶庫411的記憶庫選擇信號以及列/行位址ADDR_R/ADDR_C發送給PIM設備400。輸入到PIM設備400的MAC讀取信號MAC_RD_BK信號可以控制對PIM設備400的記憶庫411的資料讀取操作。記憶庫411可以回應於MAC讀取信號MAC_RD_BK而輸出在儲存在記憶庫411的由列/行位址ADDR_R/ADDR_C指定的區域中的權重資料的權重矩陣的第一列中的元素W0.0、……和W7.0並將其發送給MAC運算器420。在一個實施例中,可以透過BIO線來執行從記憶庫411到MAC運算器420的資料傳輸,該BIO線是專門爲記憶庫411和MAC運算器420之間的資料傳輸而設置的。
而且,也可以與從記憶庫411發送權重資料給MAC運算器420時的時間點同步地將儲存在全域緩衝器412中的向量資料X0.0、……和X7.0發送給MAC運算器420。爲了將向量資料X0.0、……和X7.0從全域緩衝器412發送給MAC運算器420,可以與從PIM控制器500的MAC命令產生器540輸出的MAC讀取信號MAC_RD_BK同步地來產生用於控制全域緩衝器412的讀取操作的控制信號。全域緩衝器412和MAC運算器420之間的資料傳輸可以透過GIO線執行。因此,權重資料和向量資料可以分別透過兩條分開的傳輸線獨立地發送給MAC運算器420。在一個實施例中,權重資料和向量資料可以分別透過BIO線和GIO線同時被發送給MAC運算器420。
在步驟365,PIM控制器500的MAC命令產生器540可以產生MAC輸入鎖存信號MAC_L1並將其發送給PIM設備400,如圖24所示。MAC輸入鎖存信號MAC_L1可以控制用於PIM設備400的MAC運算器420的權重資料和向量資料的輸入鎖存操作。在權重矩陣的第一列中的元素W0.0、……和W0.7和在向量矩陣的第一行中的元素X0.0、……和X7.0可以透過輸入鎖存操作輸入到MAC運算器420的MAC電路122。MAC電路122可以包括複數個乘法器(例如八個乘法器122-11),其數量等於權重矩陣的行數和向量矩陣的列數。權重矩陣的第一列中的元素W0.0、……和W0.7可以分別輸入到第一至第八乘法器122-11,並且向量矩陣的第一行中的元素X0.0、……和X7.0也可以分別輸入到第一至第八乘法器122-11。
在步驟366,MAC運算器420的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。具體地,如參照圖4所描述的,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。加法邏輯電路122-2可以從乘法器122-11接收輸出資料,並且可以對乘法器122-11的輸出資料執行加法計算,以輸出加法計算的結果資料。加法邏輯電路122-2的輸出資料可以對應於在權重矩陣中包括的第一列和在向量矩陣中包括的行的MAC算術運算的結果資料(即MAC結果資料)。因此,加法邏輯電路122-2的輸出資料可以對應於位於圖5所示的具有MAC0.0、……和MAC7的八個元素的「8×1」MAC結果矩陣的第一列的元素MAC0.0。如參照圖4所描述的,加法邏輯電路122-2的輸出資料MAC0.0可以被輸入到布置在MAC運算器420的資料輸出電路123中的輸出鎖存器123-1。
在步驟367,PIM控制器500的MAC命令產生器540可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備400,如圖25所示。MAC輸出鎖存信號MAC_L3可以控制由PIM設備400的MAC運算器420執行的MAC結果資料MAC0.0的輸出鎖存操作。從MAC運算器420的MAC電路122發送給輸出鎖存器123-1的MAC結果資料MAC0.0可以透過與MAC輸出鎖存信號MAC_L3同步地執行的輸出鎖存操作而從輸出鎖存器123-1輸出,如參照圖4所述。從輸出鎖存器123-1輸出的MAC結果資料MAC0.0可以被輸入到資料輸出電路123的傳輸閘123-2。
在步驟368,PIM控制器500的MAC命令產生器540可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備400,如圖26所示。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器420產生的MAC結果資料MAC0.0的輸出操作以及包括在MAC運算器420中的輸出鎖存器123-1的重設操作。如參照圖4所描述的,傳輸閘123-2從MAC運算器420的輸出鎖存器123-1接收MAC結果資料MAC0.0可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出MAC結果資料MAC0.0。在一個實施例中,從MAC運算器420輸出的MAC結果資料MAC0.0可以透過PIM設備400中的BIO線儲存到記憶庫411中。
在步驟369,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟期間已經執行了權重矩陣的第一列到第八列當中第一列的MAC算術運算,所以在步驟369,權重矩陣的列號可以從「1」變爲「2」。在步驟370,可以確定在步驟369中改變的列號是否大於權重矩陣的最後一列(即第八列)的列號。因爲在步驟370權重矩陣的列號被變爲「2」,所以MAC算術運算的過程可以被反饋到步驟364。
如果將MAC算術運算的過程從步驟370反饋到步驟364,則可以針對權重矩陣的增加後的列號再次執行與參考步驟364至步驟370所述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列執行與向量矩陣MAC的算術運算。如果將MAC算術運算的過程從步驟370反饋到步驟364,則可以迭代地執行從步驟364到步驟370的過程,直到對權重矩陣的所有列都執行了與向量矩陣的MAC算術運算爲止。如果在步驟369中針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟370中爲「9」的列號大於最後的列號「8」,所以可以終止MAC算術運算。
圖27是示出參照圖14描述的MAC算術運算的過程的流程圖,其在根據本揭示內容的第二實施例的PIM系統1-2中執行。爲了執行根據本實施例的MAC算術運算,PIM設備400的MAC運算器420可以具有與圖16所示的MAC運算器120-1相同的配置。參照圖20和27,可以在步驟381將第一資料(即權重資料)寫入記憶庫411中,以執行MAC算術運算。因此,權重資料可以儲存在PIM設備400的記憶庫411中。在本實施例中,可以假設權重資料是構成圖14的權重矩陣的元素W0.0、……和W7.7。
在步驟382,可以確定是否請求推斷。可以將推斷請求信號從位於PIM系統1-2外部的外部設備發送給PIM系統1-2的PIM控制器500。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器500,則PIM系統1-2可以處於待機模式,直到推斷請求信號被發送給PIM控制器500。可替代地,如果沒有推斷請求信號被發送到PIM控制器500,則PIM系統1-2可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器500爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖14的向量矩陣的元素X0.0、……和X7.0。如果在步驟382將推斷請求信號發送給PIM控制器500,則在步驟383,PIM控制器500可以將與推斷請求信號一起發送的向量資料寫入全域緩衝器412。因此,向量資料可以儲存在PIM設備400的全域緩衝器412中。
在步驟384,可以將MAC運算器420的輸出鎖存器初始設置爲具有偏置資料,並且可以將初始設置的偏置資料反饋給MAC運算器420的累加加法器。執行該過程以執行MAC結果矩陣和偏置矩陣的矩陣加法計算,其參照圖14被描述。即,如圖16所示,可以將包括在MAC運算器420中的資料輸出電路123-A的輸出鎖存器123-1初始設置爲具有偏置矩陣的偏置資料。因爲針對權重矩陣的第一列執行矩陣乘法計算,所以可以將位於偏置矩陣的第一列的元素B0.0初始設置爲輸出鎖存器123-1中的偏置資料。輸出鎖存器123-1可以輸出偏置資料B0.0,並且可以將從輸出鎖存器123-1輸出的偏置資料B0.0輸入到包括在MAC運算器420中的加法邏輯電路122-2的累加加法器122-21D。
在一個實施例中,爲了從輸出鎖存器123-1中輸出偏置資料B0.0並將偏置資料B0.0反饋到累加加法器122-21D,PIM控制器500的MAC命令產生器540可以將MAC輸出鎖存信號MAC_L3發送給PIM設備400的MAC運算器420。當執行隨後的MAC算術運算時,MAC運算器420的累加加法器122-21D可以將從布置在最後一級的加法器122-21C輸出的MAC結果資料MAC0.0與從輸出鎖存器123-1反饋的偏置資料B0.0相加,以產生偏置結果資料Y0.0,並且可以將偏置結果資料Y0.0輸出給輸出鎖存器123-1。可以與在隨後的過程中發送的MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1輸出偏置結果資料Y0.0。
在步驟385,PIM控制器500的MAC命令產生器540可以產生MAC讀取信號MAC_RD_BK並將其發送給PIM設備400,如圖23所示。在這種情况下,PIM控制器500的位址產生器550可以產生列/行位址ADDR_R/ADDR_C並將其發送給PIM設備400。輸入到PIM設備400的MAC讀取信號MAC_RD_BK可以控制PIM設備400的記憶庫411的資料讀取操作。記憶庫411可以回應於MAC讀取信號MAC_RD_BK而輸出在儲存在記憶庫411的由列/行位址ADDR_R/ADDR_C指定的區域中的權重資料的權重矩陣的第一列中的元素W0.0、……和W7.0並將其發送給MAC運算器420。在一個實施例中,可以透過BIO線來執行從記憶庫411到MAC運算器420的資料傳輸,該BIO線是專門爲記憶庫411和MAC運算器420之間的資料傳輸而設置的。
而且,也可以與從記憶庫411發送權重資料給MAC運算器420時的時間點同步地將儲存在全域緩衝器412中的向量資料X0.0、……和X7.0發送給MAC運算器420。爲了將向量資料X0.0、……和X7.0從全域緩衝器412發送給MAC運算器420,可以與從PIM控制器500的MAC命令產生器540輸出的MAC讀取信號MAC_RD_BK同步地來產生用於控制全域緩衝器412的讀取操作的控制信號。全域緩衝器412和MAC運算器420之間的資料傳輸可以透過GIO線執行。因此,權重資料和向量資料可以分別透過兩條分開的傳輸線獨立地發送給MAC運算器420。在一個實施例中,權重資料和向量資料可以分別透過BIO線和GIO線同時被發送給MAC運算器420。
在步驟386,PIM控制器500的MAC命令產生器540可以產生MAC輸入鎖存信號MAC_L1並將其發送給PIM設備400,如圖24所示。MAC輸入鎖存信號MAC_L1可以控制用於PIM設備400的MAC運算器420的權重資料和向量資料的輸入鎖存操作。在權重矩陣的第一列中的元素W0.0、……和W0.7和在向量矩陣的第一行中的元素X0.0、……和X7.0可以透過輸入鎖存操作被輸入到MAC運算器420的MAC電路122。MAC電路122可以包括複數個乘法器(例如八個乘法器122-11),其數量等於權重矩陣的行數和向量矩陣的列數。權重矩陣的第一列中的元素W0.0、……和W0.7可以分別輸入到第一至第八乘法器122-11,並且向量矩陣的第一行中的元素X0.0、……和X7.0也可以分別輸入到第一至第八乘法器122-11。
在步驟387,MAC運算器420的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。具體地,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。加法邏輯電路122-2可以接收乘法器122-11的輸出資料,並且可以對乘法器122-11的輸出資料執行加法計算,以將加法計算的結果資料輸出給累加加法器122-21D。在加法邏輯電路122-2中包含的加法器122-21C的輸出資料可以對應於在權重矩陣中包括的第一列和在向量矩陣中包括的行的MAC算術運算的結果資料(即MAC結果資料)。累加加法器122-21D可以將加法器122-21C的輸出資料MAC0.0加到從輸出鎖存器123-1反饋的偏置資料B0.0上,並且可以輸出加法計算的結果資料。累加加法器122-21D的輸出資料(即偏置結果資料Y0.0)可以被輸入到布置在MAC運算器420的資料輸出電路123-A中的輸出鎖存器123-1。
在步驟388,PIM控制器500的MAC命令產生器540可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備400,如參照圖25所描述的。MAC輸出鎖存信號MAC_L3可以控制包括在PIM設備400中的MAC運算器420的輸出鎖存器123-1的輸出鎖存操作。MAC運算器420的輸出鎖存器123-1可以根據與MAC輸出鎖存信號MAC_L3同步執行的輸出鎖存操作而輸出偏置結果資料Y0.0。從輸出鎖存器123-1輸出的偏置結果資料Y0.0可以被輸入到資料輸出電路123-A的傳輸閘123-2。
在步驟389,PIM控制器500的MAC命令產生器540可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備400,如圖26所示。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器420產生的偏置結果資料Y0.0的輸出操作以及包括在MAC運算器420中的輸出鎖存器123-1的重設操作。傳輸閘123-2從MAC運算器420的輸出鎖存器123-1接收偏置結果資料Y0.0可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出偏置結果資料Y0.0。在一個實施例中,從MAC運算器120輸出的偏置結果資料Y0.0可以透過PIM設備400中的BIO線儲存到記憶庫411中。
在步驟390中,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟中已經執行了權重矩陣的第一列到第八列當中第一列的MAC算術運算,所以在步驟390權重矩陣的列號可以從「1」變爲「2」。在步驟391,可以確定在步驟390中改變的列號是否大於權重矩陣的最後一列(即第八列)的列號。因爲權重矩陣的列號在步驟390被變爲「2」,所以MAC算術運算的過程可以被反饋到步驟384。
如果在步驟391將MAC算術運算的過程反饋到步驟384,則可以針對權重矩陣的增加的列號再次執行與參考步驟384至步驟391所述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列執行與向量矩陣的MAC算術運算。如果在步驟391將MAC算術運算的過程反饋到步驟384,則可以迭代地執行從步驟384到步驟390的過程,直到對權重矩陣的所有列都執行了與向量矩陣的MAC算術運算爲止。如果在步驟390中針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟391中爲「9」的列號大於最後的列號「8」,所以可以終止MAC算術運算。
圖28是示出參照圖17描述的MAC算術運算的過程的流程圖,其在根據本揭示內容的第二實施例的PIM系統1-2中執行。爲了執行根據本實施例的MAC算術運算,PIM設備400的MAC運算器420可以具有與圖19所示的MAC運算器120-2相同的配置。參照圖19和28,可以在步驟601將第一資料(即權重資料)寫入記憶庫411中,以執行MAC算術運算。因此,權重資料可以儲存在PIM設備400的記憶庫411中。在本實施例中,可以假設權重資料是構成圖17的權重矩陣的元素W0.0、……和W7.7。
在步驟602,可以確定是否請求推斷。可以將推斷請求信號從位於PIM系統1-2外部的外部設備發送給PIM系統1-2的PIM控制器500。在一個實施例中,如果沒有推斷請求信號被發送給PIM控制器500,則PIM系統1-2可以處於待機模式,直到推斷請求信號被發送給PIM控制器500。可替代地,如果沒有推斷請求信號被發送到PIM控制器500,則PIM系統1-2可以在記憶體模式下執行除MAC算術運算之外的操作(例如資料讀取/寫入操作),直到推斷請求信號被發送給PIM控制器500爲止。在本實施例中,可以假設第二資料(即向量資料)與推斷請求信號一起被發送。另外,可以假設向量資料是構成圖17的向量矩陣的元素X0.0、……和X7.0。如果在步驟602將推斷請求信號發送給PIM控制器500,則在步驟603,PIM控制器500可以將與推斷請求信號一起發送的向量資料寫入全域緩衝器412。因此,向量資料可以儲存在PIM設備400的全域緩衝器412中。
在步驟604,可以將MAC運算器420的輸出鎖存器初始設置爲具有偏置資料,並且可以將初始設置的偏置資料反饋給MAC運算器420的累加加法器。執行該過程,以執行MAC結果矩陣和偏置矩陣的矩陣加法計算,這參照圖17被描述。即,如參照圖19所述,可以將包括在MAC運算器420中的資料輸出電路123-B的輸出鎖存器123-1初始設置爲具有偏置矩陣的偏置資料。因爲針對權重矩陣的第一列執行矩陣乘法計算,所以可以將位於偏置矩陣的第一列的元素B0.0初始設置爲輸出鎖存器123-1中的偏置資料。輸出鎖存器123-1可以輸出偏置資料B0.0,並且可以將從輸出鎖存器123-1輸出的偏置資料B0.0輸入到包括在MAC運算器420的加法邏輯電路122-2的累加加法器122-21D。
在一個實施例中,爲了從輸出鎖存器123-1中輸出偏置資料B0.0並將偏置資料B0.0反饋到累加加法器122-21D,PIM控制器500的MAC命令產生器540可以將MAC輸出鎖存信號MAC_L3發送給PIM設備400的MAC運算器420。當執行隨後的MAC算術運算時,MAC運算器420的累加加法器122-21D可以將從布置在加法邏輯電路122-2最後一級的加法器122-21C輸出的MAC結果資料MAC0.0與從輸出鎖存器123-1反饋的偏置資料B0.0相加,以產生偏置結果資料Y0.0,並且可以將偏置結果資料Y0.0輸出給輸出鎖存器123-1。可以與在隨後的過程中發送的MAC輸出鎖存信號MAC_L3同步地從輸出鎖存器123-1輸出偏置結果資料Y0.0。
在步驟605,PIM控制器500的MAC命令產生器540可以產生MAC讀取信號MAC_RD_BK並將其發送給PIM設備400,如圖23所示。在這種情况下,PIM控制器500的位址產生器550可以產生列/行位址ADDR_R/ADDR_C並將其發送給PIM設備400。輸入到PIM設備400的MAC讀取信號MAC_RD_BK可以控制PIM設備400的記憶庫411的資料讀取操作。記憶庫411可以回應於MAC讀取信號MAC_RD_BK而輸出在儲存在記憶庫411的由列/行位址ADDR_R/ADDR_C指定的區域中的權重資料的權重矩陣的第一列中的元素W0.0、……和W7.0並將其發送給MAC運算器420。在一個實施例中,可以透過BIO線來執行從記憶庫411到MAC運算器420的資料傳輸,該BIO線是專門爲記憶庫411和MAC運算器420之間的資料傳輸而設置的。
而且,也可以與從記憶庫411發送權重資料給MAC運算器420時的時間點同步地將儲存在全域緩衝器412中的向量資料X0.0、……和X7.0發送給MAC運算器420。爲了將向量資料X0.0、……和X7.0從全域緩衝器412發送給MAC運算器420,可以與從PIM控制器500的MAC命令產生器540輸出的MAC讀取信號MAC_RD_BK同步地來產生用於控制全域緩衝器412的讀取操作的控制信號。全域緩衝器412和MAC運算器420之間的資料傳輸可以透過GIO線執行。因此,權重資料和向量資料可以分別透過兩條分開的傳輸線獨立地發送給MAC運算器420。在一個實施例中,權重資料和向量資料可以分別透過BIO線和GIO線同時被發送給MAC運算器420。
在步驟606,PIM控制器500的MAC命令產生器540可以產生MAC輸入鎖存信號MAC_L1並將其發送給PIM設備400,如參照圖24所述。MAC輸入鎖存信號MAC_L1可以控制針對PIM設備400的MAC運算器420的權重資料和向量資料的輸入鎖存操作。在權重矩陣的第一列中的元素W0.0、……和W0.7和在向量矩陣的第一行中的元素X0.0、……和X7.0可以透過輸入鎖存操作被輸入到MAC運算器420的MAC電路122。MAC電路122可以包括複數個乘法器(例如八個乘法器122-11),其數量等於權重矩陣的行數和向量矩陣的列數。權重矩陣的第一列中的元素W0.0、……和W0.7可以分別輸入到第一至第八乘法器122-11,並且向量矩陣的第一行中的元素X0.0、……和X7.0也可以分別輸入到第一至第八乘法器122-11。
在步驟607,MAC運算器420的MAC電路122可以執行被輸入到MAC電路122的、權重矩陣的第R列和向量矩陣的第一行的MAC算術運算。「R」的初始值可以設置爲「1」。因此,可以第一次執行權重矩陣的第一列和向量矩陣的第一行的MAC算術運算。具體地,乘法邏輯電路122-1的每個乘法器122-11可以執行輸入資料的乘法計算,並且乘法計算的結果資料可以被輸入到加法邏輯電路122-2。加法邏輯電路122-2可以接收乘法器122-11的輸出資料,並且可以對乘法器122-11的輸出資料執行加法計算,以將加法計算的結果資料輸出給累加加法器122-21D。在加法邏輯電路122-2中包含的加法器122-21C的輸出資料可以對應於在權重矩陣中包括的第一列和在向量矩陣中包括的行的MAC算術運算的結果資料(即MAC結果資料)。因此,累加加法器122-21D可以將加法器122-21C的輸出資料MAC0.0加到從輸出鎖存器123-1反饋的偏置資料B0.0上,並且可以輸出加法計算的結果資料。累加加法器122-21D的輸出資料(即偏置結果資料Y0.0)可以被輸入到布置在MAC運算器420的資料輸出電路123-A中的輸出鎖存器123-1。
在步驟608,PIM控制器500的MAC命令產生器540可以產生MAC輸出鎖存信號MAC_L3並將其發送給PIM設備400,如參照圖25所述。MAC輸出鎖存信號MAC_L3可以控制包括在PIM設備400中的MAC運算器420的輸出鎖存器123-1的輸出鎖存操作。MAC運算器420的輸出鎖存器123-1可以根據與MAC輸出鎖存信號MAC_L3同步執行的輸出鎖存操作而輸出偏置結果資料Y0.0。從輸出鎖存器123-1輸出的偏置結果資料Y0.0可以被輸入到啟動函數邏輯電路123-5,如圖19所示。在步驟610,啟動函數邏輯電路123-5可以將啟動函數應用於偏置結果資料Y0.0,以產生最終輸出值,並且可以將最終輸出值輸入至傳輸閘(圖4中的123-2)。
在步驟610,PIM控制器500的MAC命令產生器540可以產生MAC鎖存器重設信號MAC_L_RST並將其發送給PIM設備400,如參照圖26所述。MAC鎖存器重設信號MAC_L_RST可以控制由MAC運算器420產生的最終輸出值的輸出操作和包括在MAC運算器420中的輸出鎖存器123-1的重設操作。傳輸閘123-2從包括在MAC運算器420中的資料輸出電路123-B的啟動函數邏輯電路123-5接收最終輸出值可以與MAC鎖存器重設信號MAC_L_RST同步,以輸出最終輸出值。在一個實施例中,從MAC運算器420輸出的最終輸出值可以透過PIM設備400中的BIO線儲存到記憶庫411中。
在步驟611,可以將針對其執行MAC算術運算的權重矩陣的列號「R」增加「1」。因爲在先前的步驟中已經執行了針對權重矩陣的第一列到第八列當中第一列的MAC算術運算,所以在步驟611中權重矩陣的列號可以從「1」變爲「2」。在步驟612,可以確定在步驟611中改變的列號是否大於權重矩陣的最後一列(即第八列)的列號。因爲權重矩陣的列號在步驟611被變爲「2」,所以MAC算術運算的過程可以被反饋到步驟604。
如果MAC算術運算的過程從步驟612被反饋到步驟604,則可以針對權重矩陣的增加後的列號再次執行與參考步驟604至612所述的相同的過程。即,隨著權重矩陣的列號從「1」變爲「2」,可以對權重矩陣的第二列、而不是權重矩陣的第一列執行與向量矩陣的MAC算術運算,以産生MAC結果資料(對應於位於MAC結果矩陣的第二列中的元素MAC1.0)和偏置資料(對應於位於偏置矩陣的第二列中的元素B1.0)。如果從步驟612將MAC算術運算的過程反饋到步驟604,則可以迭代地執行從步驟604到步驟612的過程,直到針對權重矩陣的所有列(即第一列到第八列)執行了與向量矩陣的MAC算術運算爲止。如果在步驟611中針對權重矩陣的第八列的MAC算術運算終止並且權重矩陣的列號從「8」變爲「9」,則由於在步驟612中爲「9」的列號大於最後的列號「8」,所以可以終止MAC算術運算。
圖29是示出根據本揭示內容的第三實施例的PIM系統1-3的方塊圖。如圖29所示,PIM系統1-3可以具有與圖2所示的PIM系統1-1基本相同的配置,除了與PIM系統1-1的PIM控制器200相比,PIM系統1-3的PIM控制器200A還包括模式暫存器組(MRS)260。因此,與參照圖2所描述的相同的解釋在下文中將被省略。PIM控制器200A中的模式暫存器組260可以接收MRS信號,該MRS信號指示PIM系統1-3的MAC算術運算所需的各種信號的設定。在一個實施例中,模式暫存器組260可以從包括在調度器220中的模式選擇器221接收MRS信號。然而,在另一個實施例中,MRS信號可以由除了模式選擇器221之外的額外邏輯電路提供。接收MRS信號的模式暫存器組260可以將MRS信號發送給MAC命令產生器240。對於一個實施例,MRS260表示MRS電路。
在一個實施例中,MRS信號可以包括關於何時產生MAC命令MAC_CMD的定時資訊。在這種情况下,可以透過由MRS260提供的MRS信號來執行PIM系統1-3的確定性操作。在另一個實施例中,MRS信號可以包括關於與MAC模式之間的間隔有關的時間確定的資訊或關於在MAC模式和記憶體模式之間的模式改變的資訊。在一個實施例中,可以在透過從外部設備向PIM控制器200A發送的推斷請求信號而將向量資料儲存在PIM設備100的第二記憶庫112中之前,執行MRS260中的MRS信號的產生。可替代地,可以在透過從外部設備向PIM控制器200A發送的推斷請求信號而將向量資料儲存在PIM設備100的第二記憶庫112中之後,執行MRS260中的MRS信號的產生。
圖30是示出根據本揭示內容的第四實施例的PIM系統1-4的方塊圖。如圖30所示,PIM系統1-4可以具有與圖20所示的PIM系統1-2基本相同的配置,除了與PIM系統1-2的PIM控制器500相比,PIM系統1-4的PIM控制器500A還包括模式暫存器組(MRS)260之外。因此,與參照圖20所描述的相同的解釋在下文中將被省略。PIM控制器500A中的模式暫存器組260可以接收MRS信號,該MRS信號指示PIM系統1-4的MAC算術運算所需的各種信號的設定。在一個實施例中,模式暫存器組260可以從包括在調度器220中的模式選擇器221接收MRS信號。然而,在另一個實施例中,MRS信號可以由除了模式選擇器221之外的額外邏輯電路提供。接收MRS信號的模式暫存器組260可以將MRS信號發送給MAC命令產生器540。
在一個實施例中,MRS信號可以包括關於何時產生MAC命令MAC_CMD的定時資訊。在這種情况下,可以透過由MRS260提供的MRS信號來執行PIM系統1-4的確定性操作。在另一個實施例中,MRS信號可以包括關於與MAC模式之間的間隔有關的時間確定的資訊或關於在MAC模式和記憶體模式之間的模式改變的資訊。在一個實施例中,可以在透過從外部設備向PIM控制器500A發送的推斷請求信號而將向量資料儲存在PIM設備400的全域緩衝器412中之前,執行MRS260中的MRS信號的產生。可替代地,可以在透過從外部設備向PIM控制器500A發送的推斷請求信號而將向量資料儲存在PIM設備400的全域緩衝器412中之後,執行MRS260中的MRS信號的產生。
出於說明性目的,以上已經給出了本教導的有限數量的可能實施例。本發明所屬技術領域中具有通常知識者將理解:各種修改、添加和替換是可能的。儘管該專利文件包含許多細節,但是這些細節不應被解釋爲對本教導的範圍或可請求保護的範圍的限制,而應被解釋爲針對特定實施例的特徵的描述。在單獨的實施例的上下文中在該專利文件中描述的某些特徵也可以在單個實施例中組合地實現。相反,在單個實施例的上下文中描述的各種特徵也可以分開地在複數個實施例中或以任何合適的子組合來實現。而且,儘管以上可以將特徵描述爲以某些組合產生作用並且甚至最初如此聲稱,但是在某些情况下,可以從組合中切除所請求保護的組合中的一個或複數個特徵,並且所請求保護的組合可以是針對子組合或子組合變型的。
1:PIM系統
1-1:PIM系統
1-2:PIM系統
1-3:PIM系統
1-4:PIM系統
10:PIM設備
11:資料儲存區
12:算術電路
13-1:介面
13-2:資料輸入/輸出焊盤
100:PIM設備
111:第一記憶庫
112:第二記憶庫
120:MAC運算器
120-1:MAC運算器
120-2:MAC運算器
121:資料輸入電路
121-1:第一輸入鎖存器
121-2:第二輸入鎖存器
122:MAC電路
122-1:乘法邏輯電路
122:-11:乘法器
122-2:加法邏輯電路
122-21:加法器
122-21A:加法器
122-21B:加法器
122-21C:加法器
122-21D:累加加法器
123:資料輸出電路
123-A:資料輸出電路
123-B:資料輸出電路
123-1:輸出鎖存器
123-2:傳輸閘
123-3:延遲電路
123-4:反相器
123-5:啟動函數邏輯電路
131:介面
132:資料輸入/輸出焊盤
20:PIM控制器
21:命令隊列邏輯
22:調度器
23:命令產生器
25:位址產生器
200:PIM控制器
200A:PIM控制器
210:命令隊列邏輯
220:調度器
221:模式選擇器
230:記憶體命令產生器
240:MAC命令產生器
250:位址產生器
260:暫存器組
302~312:步驟
321~333:步驟
341~354:步驟
361~370:步驟
381~391:步驟
400:PIM設備
411:記憶庫
412:全域緩衝器
420:MAC運算器
431:介面
432:資料輸入/輸出焊盤
500:PIM控制器
500A:PIM控制器
540:MAC命令產生器
550:位址產生器
601~612:步驟
ADDR:位址
ADDR_R:列位址
ADDR_C:行位址
B0.0~B7.0:偏置資料
BANK0~1:記憶庫
BS:記憶庫選擇信號
CMD:命令
DA1:第一資料
DA2:第二資料
DA_MAC:MAC結果資料
DQ:資料
I/F:介面
I/O:輸入/輸出
LATCH_RST:鎖存器重設信號
M_CMD:記憶體命令
MAC_CMD:MAC命令
MAC0.0:輸出資料
MAC_L1:第一MAC輸入鎖存信號
MAC_L2:第二MAC輸入鎖存信號
MAC_L3:MAC輸出鎖存信號
MAC_L_RST:MAC鎖存器重設信號
MAC_RD_BK0:第一MAC讀取信號
MAC_RD_BK1:第二MAC讀取信號
MRS:模式暫存器組
OUT:輸出
PINSTB:鎖存器控制信號
REQ:請求
W0.0~W0.7:元素
X0.0~X7.0:元素
Y0.0:偏置結果資料
在各個實施例中,參照圖式示出了所公開技術的某些特徵。
圖1是示出根據本揭示內容的實施例的PIM系統的方塊圖。
圖2是示出根據本揭示內容的第一實施例的PIM系統的方塊圖。
圖3示出從根據本揭示內容的第一實施例的PIM系統中包括的PIM控制器的MAC命令產生器輸出的MAC命令。
圖4是示出在根據本揭示內容的第一實施例的PIM系統中包括的PIM設備的MAC運算器的配置的示例的方塊圖。
圖5示出在根據本揭示內容的第一實施例的PIM系統中執行的MAC算術運算的示例。
圖6是示出圖5所示的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖7至圖13是示出圖5所示的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的過程的方塊圖。
圖14示出在根據本揭示內容的第一實施例的PIM系統中執行的MAC算術運算的另一示例。
圖15是示出圖14所示的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖16示出了用於執行圖14的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的MAC運算器的配置示例。
圖17示出了在根據本揭示內容的第一實施例的PIM系統中執行的MAC算術運算的又一示例。
圖18是示出圖17所示的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖19示出了用於執行圖17所示的在根據本揭示內容的第一實施例的PIM系統中的MAC算術運算的MAC運算器的配置的示例。
圖20是示出根據本揭示內容的第二實施例的PIM系統的方塊圖。
圖21示出從根據本揭示內容的第二實施例的PIM系統中包括的PIM控制器的MAC命令產生器輸出的MAC命令。
圖22是示出圖5所示的在根據本揭示內容第二實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖23至圖26是示出圖5所示的在根據本揭示內容第二實施例的PIM系統中的MAC算術運算的過程的方塊圖。
圖27是示出圖14所示的在根據本揭示內容第二實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖28是示出圖17所示的在根據本揭示內容的第二實施例的PIM系統中的MAC算術運算的過程的流程圖。
圖29是示出根據本揭示內容的又一實施例的PIM系統的方塊圖。
圖30是示出根據本揭示內容的還又一實施例的PIM系統的方塊圖。
無
1:PIM系統
10:PIM設備
11:資料儲存區
12:算術電路
13-1:介面
13-2:資料輸入/輸出焊盤
20:PIM控制器
21:命令隊列邏輯
22:調度器
23:命令產生器
25:位址產生器
ADDR:位址
CMD:命令
DQ:資料
I/F:介面
REQ:請求
Claims (65)
- 一種記憶體中處理(processing-in-memory, PIM)系統,包括: PIM設備,其包括第一儲存區、第二儲存區、以及乘法/累加(multiplication/accumulation, MAC)運算器,其中所述MAC運算器被配置爲分別從所述第一儲存區和所述第二儲存區接收第一資料和第二資料,以執行MAC算術運算;和 PIM控制器,其被配置爲控制所述PIM設備的記憶體模式和MAC模式, 其中,所述PIM控制器被配置爲在所述記憶體模式下產生記憶體命令並將其發送給所述PIM設備;以及 其中,所述PIM控制器被配置爲在所述MAC模式下產生第一MAC命令、第二MAC命令、第三MAC命令、第四MAC命令和第五(第一至第五)MAC命令並將其發送給所述PIM設備。
- 如請求項1所述的PIM系統,其中,所述PIM設備還包括全域輸入/輸出線(global input/output, GIO),其用於將所述第一資料從所述第一儲存區發送給所述MAC運算器以及用於將所述第二資料從所述第二儲存區發送給所述MAC運算器。
- 如請求項1所述的PIM系統,其中,所述MAC算術運算是在預定的固定時間期間執行的確定性MAC算術運算。
- 如請求項1所述的PIM系統,其中,所述PIM控制器包括: 記憶體命令產生器,其被配置爲在所述記憶體模式下產生並輸出所述記憶體命令;和 MAC命令產生器,其被配置爲在所述MAC模式下產生並輸出所述第一MAC命令至所述第五MAC命令。
- 如請求項4所述的PIM系統,其中,所述MAC命令產生器被配置爲以預定時間間隔依序地輸出所述第一MAC命令至第五MAC命令。
- 如請求項4所述的PIM系統, 其中,所述第一MAC命令是用於從所述第一儲存區中讀取出所述第一資料的第一控制信號; 其中,所述第二MAC命令是用於從所述第二儲存區中讀取出所述第二資料的第二控制信號; 其中,所述第三MAC命令是用於將所述第一資料鎖存在所述MAC運算器中的第三控制信號; 其中,所述第四MAC命令是用於將所述第二資料鎖存在所述MAC運算器中的第四控制信號;以及 其中,所述第五MAC命令是用於鎖存所述MAC運算器的MAC結果資料的第五控制信號。
- 如請求項6所述的PIM系統,其中,所述MAC命令產生器被配置爲: 在第一時間點輸出所述第一MAC命令; 在從所述第一時間點起經過第一等待時間時的第二時間點輸出所述第二MAC命令; 在從所述第二時間點起經過第二等待時間時的第三時間點輸出所述第三MAC命令; 在從所述第三時間點起經過第三等待時間時的第四時間點輸出所述第四MAC命令;以及 在從所述第四時間點起經過第四等待時間時的第五時間點輸出所述第五MAC命令。
- 如請求項7所述的PIM系統, 其中,所述第一等待時間被設置爲基於所述第一MAC命令從所述第一儲存區讀取出所述第一資料並將所述第一資料輸出至所述MAC運算器所花費的時間; 其中,所述第二等待時間被設置爲基於所述第二MAC命令從所述第二儲存區讀取出所述第二資料並將所述第二資料輸出給所述MAC運算器所花費的時間; 其中,所述第三等待時間被設置爲基於所述第三MAC命令將所述第一資料鎖存在所述MAC運算器中所花費的時間;以及 其中,所述第四等待時間被設置爲基於所述第四MAC命令將所述第二資料鎖存在所述MAC運算器中並對被鎖存在所述MAC運算器中的所述第一資料和所述第二資料執行所述MAC算術運算所花費的時間。
- 如請求項6所述的PIM系統,其中,所述MAC運算器包括: 資料輸入電路,其被配置爲分別從所述第一儲存區和所述第二儲存區接收所述第一資料和所述第二資料,以及被配置爲分別與所述第三MAC命令和所述第四MAC命令同步地鎖存所述第一資料和所述第二資料; MAC電路,其被配置爲接收由所述資料輸入電路鎖存的所述第一資料和所述第二資料,並被配置爲對所述第一資料和所述第二資料執行MAC算術運算,以輸出MAC結果資料;和 資料輸出電路,其包括輸出鎖存器,用於與所述第五MAC命令同步地接收和鎖存從所述MAC電路輸出的所述MAC結果資料。
- 如請求項9所述的PIM系統,其中,所述資料輸出電路還包括用於將所述MAC結果資料向所述PIM設備中的資料傳輸線傳送的傳輸閘。
- 如請求項6所述的PIM系統,其中,所述MAC命令產生器被配置爲在從所述MAC命令產生器輸出所述第五MAC命令的時間點起經過預定的固定時間之後輸出第六MAC命令。
- 如請求項11所述的PIM系統,其中,所述第六MAC命令是第六控制信號,所述第六控制信號用於從所述MAC運算器輸出所述MAC結果資料以及用於將所述MAC運算器所包括的輸出鎖存器重設。
- 如請求項12所述的PIM系統,其中,所述MAC命令產生器被配置爲: 在第一時間點輸出第一MAC命令; 在從所述第一時間點起經過第一等待時間時的第二時間點輸出所述第二MAC命令; 在從所述第二時間點起經過第二等待時間時的第三時間點輸出所述第三MAC命令; 在從所述第三時間點起經過第三等待時間時的第四時間點輸出所述第四MAC命令; 在從所述第四時間點起經過第四等待時間時的第五時間點輸出所述第五MAC命令;以及 在從所述第五時間點起經過第五等待時間時的第六時間點輸出所述第六MAC命令。
- 如請求項13所述的PIM系統, 其中,所述第一等待時間被設置爲基於所述第一MAC命令從所述第一儲存區讀取出所述第一資料並將所述第一資料輸出至所述MAC運算器所花費的時間; 其中,所述第二等待時間被設置爲基於所述第二MAC命令從所述第二儲存區讀取出所述第二資料並將所述第二資料輸出給所述MAC運算器所花費的時間; 其中,所述第三等待時間被設置爲基於所述第三MAC命令將所述第一資料鎖存在所述MAC運算器中所花費的時間; 其中,所述第四等待時間被設置爲基於所述第四MAC命令將所述第二資料鎖存在所述MAC運算器中並對被鎖存在所述MAC運算器中的所述第一資料和所述第二資料執行所述MAC算術運算所花費的時間;以及 其中,所述第五等待時間被設置爲執行由所述MAC算術運算產生的MAC結果資料的輸出鎖存操作所花費的時間。
- 如請求項6所述的PIM系統,其中,所述PIM控制器還包括: 命令隊列邏輯,其被配置爲儲存從外部設備輸出的命令隊列;和 調度器,其被配置爲調整從所述命令隊列邏輯輸出儲存在所述命令隊列邏輯中的命令隊列的定時。
- 如請求項15所述的PIM系統,其中,所述調度器包括模式選擇器,所述模式選擇器被配置爲產生模式選擇信號,所述模式選擇信號包括關於從所述命令隊列邏輯輸出的所述命令隊列是與所述記憶體模式或是與所述MAC模式有關的資訊。
- 如請求項15所述的PIM系統,其中,所述命令隊列邏輯還被配置爲: 當所述命令隊列與所述記憶體模式有關時,回應於從所述調度器輸出的第六控制信號,將所述命令隊列發送給所述記憶體命令產生器;以及 當所述命令隊列與所述MAC模式有關時,回應於從所述調度器輸出的控制信號,將所述命令隊列發送給所述MAC命令產生器。
- 如請求項6所述的PIM系統,其中,所述PIM控制器還包括模式暫存器組,所述模式暫存器組用於設定所述MAC算術運算所用的信號。
- 如請求項18所述的PIM系統,其中,設定所述MAC算術運算所用的信號包括:設置產生所述第一MAC命令至所述第五MAC命令的定時。
- 如請求項18所述的PIM系統,其中,設定所述MAC算術運算所用的信號是基於關於與所述MAC模式之間的間隔有關的時間確定的資訊或者關於在所述MAC模式與所述記憶體模式之間的模式改變的資訊而被執行的。
- 一種記憶體中處理(processing-in-memory, PIM)系統,包括: PIM設備,其包括儲存區、全域緩衝器、以及乘法/累加(multiplication/accumulation, MAC)運算器,其中,所述MAC運算器適於分別從所述儲存區和所述全域緩衝器接收第一資料和第二資料,以執行MAC算術運算;和 PIM控制器,其被配置爲控制所述PIM設備的記憶體模式和MAC模式, 其中,所述PIM控制器被配置爲在所述記憶體模式下產生記憶體命令並將其發送給所述PIM設備;以及 其中,所述PIM控制器被配置爲在所述MAC模式下產生第一MAC命令、第二MAC命令和第三MAC命令(第一至第三)並將其發送給所述PIM設備。
- 如請求項21所述的PIM系統,其中,所述MAC算術運算是在預定的固定時間期間執行的確定性MAC算術運算。
- 如請求項21所述的PIM系統,其中,所述PIM設備還包括: 記憶庫輸入/輸出(bank input/output, BIO)線,其在所述儲存區和所述MAC運算器之間爲所述第一資料提供第一資料傳輸路徑;和 全域輸入/輸出線(global input/output, GIO),其在所述全域緩衝器和所述MAC運算器之間爲所述第二資料提供第二資料傳輸路徑。
- 如請求項21所述的PIM系統,其中,所述PIM控制器包括: 記憶體命令產生器,其被配置爲在所述記憶體模式下產生並輸出所述記憶體命令;和 MAC命令產生器,其被配置爲在所述MAC模式下產生並輸出所述第一MAC命令至所述第三MAC命令。
- 如請求項24所述的PIM系統,其中,所述MAC命令產生器被配置爲以預定的時間間隔依序地輸出所述第一MAC命令至所述第三MAC命令。
- 如請求項24所述的PIM系統, 其中,所述第一MAC命令是用於從所述儲存區中讀取出所述第一資料的第一控制信號; 其中,所述第二MAC命令是用於將所述第一資料和所述第二資料鎖存在所述MAC運算器中的第二控制信號;以及 其中,所述第三MAC命令是用於鎖存所述MAC運算器的MAC結果資料的第三控制信號。
- 如請求項26所述的PIM系統,其中,所述MAC命令產生器被配置爲: 在第一時間點輸出所述第一MAC命令; 在從所述第一時間點起經過第一等待時間時的第二時間點輸出所述第二MAC命令;以及 在從所述第二時間點起經過第二等待時間時的第三時間點輸出所述第三MAC命令。
- 如請求項27所述的PIM系統, 其中,所述第一等待時間被設置爲基於所述第一MAC命令從所述儲存區中讀取所述第一資料並將所述第一資料輸出至所述MAC運算器所花費的時間;以及 其中,所述第二等待時間被設置爲基於所述第二MAC命令將所述第一資料和所述第二資料鎖存在所述MAC運算器中並對被鎖存在所述MAC運算器中的所述第一資料和所述第二資料執行所述MAC算術運算所花費的時間。
- 如請求項28所述的PIM系統,其中,所述MAC運算器包括: 資料輸入電路,其被配置爲分別從所述儲存區和所述全域緩衝器接收所述第一資料和所述第二資料,並且被配置爲與所述第二MAC命令同步地鎖存所述第一資料和所述第二資料; MAC電路,其被配置爲接收由所述資料輸入電路鎖存的所述第一資料和所述第二資料,並被配置爲對所述第一資料和所述第二資料執行所述MAC算術運算,以輸出MAC結果資料;和 資料輸出電路,其包括輸出鎖存器,用於與所述第三MAC命令同步地接收和鎖存從所述MAC電路輸出的所述MAC結果資料。
- 如請求項29所述的PIM系統,其中,所述資料輸出電路還包括用於將所述MAC結果資料向所述PIM設備中的資料傳輸線傳送的傳輸閘。
- 如請求項24所述的PIM系統,其中,所述MAC命令產生器被配置爲:在從所述MAC命令產生器輸出所述第三MAC命令的時間點起經過預定的固定時間之後,輸出第四MAC命令。
- 如請求項31所述的PIM系統,其中,所述第四MAC命令是第四控制信號,所述第四控制信號用於從所述MAC運算器輸出MAC結果資料以及用於將所述MAC運算器所包括的輸出鎖存器重設。
- 如請求項32所述的PIM系統,其中,所述MAC命令產生器被配置爲: 在第一時間點輸出所述第一MAC命令; 在從所述第一時間點起經過第一等待時間時的第二時間點輸出所述第二MAC命令; 在從所述第二時間點起經過第二等待時間時的第三時間點輸出所述第三MAC命令;以及 在從所述第三時間點起經過第三等待時間時的第四時間點輸出所述第四MAC命令。
- 如請求項33所述的PIM系統, 其中,所述第一等待時間被設置爲基於所述第一MAC命令從所述儲存區中讀取出所述第一資料並將所述第一資料輸出至所述MAC運算器所花費的時間; 其中,所述第二等待時間被設置爲基於所述第二MAC命令將所述第一資料和所述第二資料鎖存在所述MAC運算器中並對被鎖存在所述MAC運算器中的所述第一資料和所述第二資料執行所述MAC算術運算所花費的時間;以及 其中,所述第三等待時間被設置爲執行由所述MAC算術運算產生的MAC結果資料的輸出鎖存操作所花費的時間。
- 如請求項24所述的PIM系統,其中,所述PIM控制器還包括: 命令隊列邏輯,其被配置爲儲存從外部設備輸出的命令隊列;和 調度器,其被配置爲調整從所述命令隊列邏輯輸出被儲存在所述命令隊列邏輯中的所述命令隊列的定時。
- 如請求項35所述的PIM系統,其中,所述調度器包括模式選擇器,所述模式選擇器被配置爲產生模式選擇信號,所述模式選擇信號包括關於從所述命令隊列邏輯輸出的所述命令隊列是與所述記憶體模式有關或是與所述MAC模式有關的資訊。
- 如請求項35所述的PIM系統,其中,所述命令隊列邏輯還被配置爲: 當所述命令隊列與所述記憶體模式有關時,回應於從所述調度器輸出的第四控制信號,將所述命令隊列發送給所述記憶體命令產生器;以及 當所述命令隊列與所述MAC模式有關時,回應於從所述調度器輸出的所述控制信號,將所述命令隊列發送給所述MAC命令產生器。
- 如請求項24所述的PIM系統,其中,所述PIM控制器還包括模式暫存器組,所述模式暫存器組用於設定所述MAC算術運算所用的信號。
- 如請求項38所述的PIM系統,其中設定所述MAC算術運算所用的信號包括:設置產生所述第一MAC命令至所述第五MAC命令的定時。
- 如請求項38所述的PIM系統,其中,設定所述MAC算術運算所用的信號是基於關於與所述MAC模式之間的間隔有關的時間確定的資訊或者關於在所述MAC模式與所述記憶體模式之間的模式改變的資訊而被執行的。
- 一種記憶體中處理(processing-in-memory, PIM)系統,包括: PIM設備,其包括資料儲存區和算術電路,其中,所述算術電路被配置爲從所述資料儲存區接收第一資料和第二資料,以對所述第一資料和所述第二資料執行算術運算;和 PIM控制器,其被配置爲控制所述PIM設備的記憶體模式和算術模式, 其中,所述PIM控制器被配置爲在所述記憶體模式下產生記憶體命令並將其發送給所述PIM設備;以及 其中,所述PIM控制器被配置爲在所述算術模式下產生複數個算術命令並將其發送給所述PIM設備。
- 如請求項41所述的PIM系統,其中,所述算術運算是在預定的固定時間期間執行的確定性算術運算。
- 如請求項41所述的PIM系統, 其中,所述PIM控制器包括命令產生器,以及 其中,所述命令產生器被配置爲在所述記憶體模式下產生並輸出所述記憶體命令,以及在所述算術模式下產生並輸出所述複數個算術命令。
- 如請求項43所述的PIM系統, 其中,所述命令產生器被配置爲在所述算術模式下以預定的時間間隔產生並輸出第一算術命令、第二算術命令、第三算術命令、第四算術命令和第五(第一至第五)算術命令。
- 如請求項44所述的PIM系統, 其中,所述第一算術命令是用於從所述資料儲存區中讀取出所述第一資料的第一控制信號; 其中,所述第二算術命令是用於從所述資料儲存區中讀取出所述第二資料的第二控制信號; 其中,所述第三算術命令是用於將所述第一資料鎖存到所述算術電路中的第三控制信號; 其中,所述第四算術命令是用於將所述第二資料鎖存到所述算術電路中的第四控制信號;以及 其中,所述第五算術命令是用於鎖存所述算術電路的算術結果資料的第五控制信號。
- 一種操作記憶體中處理(processing-in-memory, PIM)系統的方法,所述PIM系統包括用於執行乘法/累加(multiplication/accumulation, MAC)算術運算的PIM設備和用於控制所述PIM設備的所述MAC算術運算的PIM控制器,所述方法包括:在初始值爲1的遞增整數「R」小於或等於固定整數「M」時迭代地執行: 將第一MAC命令從所述PIM控制器發送給所述PIM設備,以將儲存在所述PIM設備的第一儲存區中的用於MAC算術運算的「M×N」權重矩陣的第R列中的元素輸出給所述PIM設備的MAC運算器,其中「M」和「N」是大於「1」的自然數; 將第二MAC命令從所述PIM控制器發送給所述PIM設備,以將儲存在所述PIM設備的第二儲存區中的用於MAC算術運算的「N×1」向量矩陣的第一行中的元素輸出給所述PIM設備的所述MAC運算器; 將第三MAC命令從所述PIM控制器發送給所述PIM設備,以執行用於將所述權重矩陣的第R列中的元素鎖存到所述MAC運算器中的輸入鎖存操作; 將第四MAC命令從所述PIM控制器發送給所述PIM設備,以執行用於將所述向量矩陣的第一行中的元素鎖存到所述MAC運算器中的輸入鎖存操作; 對所述權重矩陣的第R列中的元素和由所述MAC運算器鎖存的向量矩陣的第一行中的元素進行矩陣乘法計算; 將第五MAC命令從所述PIM控制器發送給所述PIM設備,以執行對在所述MAC運算器中的所述矩陣乘法計算的結果資料的輸出鎖存操作; 將第六MAC命令從所述PIM控制器發送給所述PIM設備,以從所述MAC運算器輸出所述輸出鎖存操作的結果資料;以及 將所述整數「R」增加1。
- 如請求項46所述的方法,其中,在預定的固定時間期間發送所述第一MAC命令至所述第六MAC命令,以使得所述MAC算術運算對應於確定性MAC算術運算。
- 如請求項46所述的方法,還包括:在將所述第一MAC命令從所述PIM控制器發送給所述PIM設備之前: 將所述「M×N」權重矩陣寫入所述第一儲存區;以及 當推斷請求信號被輸入到所述PIM系統時,將「N×1」向量矩陣寫入所述第二儲存區。
- 如請求項46所述的方法,還包括:在將所述第一MAC命令從所述PIM控制器發送給所述PIM設備之前,並且當推斷請求信號被輸入到所述PIM系統時: 將在所述MAC運算器中包含的輸出鎖存器初始設置爲具有「N×1」偏置矩陣的第R列中的元素。
- 如請求項49所述的方法,還包括:將所述偏置矩陣的第R列元素加到與所述權重矩陣的第R列和所述向量矩陣的第一行的矩陣乘法計算的結果資料相對應的MAC結果資料上。
- 如請求項50所述的方法,還包括: 在將所述第六MAC命令從所述PIM控制器發送給所述PIM設備之前,將與在所述MAC運算器中鎖存的被輸出的、所述矩陣乘法運算的結果相對應的結果資料替換爲被加上了在所述MAC運算器中被初始設置的所述偏置矩陣的結果資料;以及 將啟動函數應用於加上偏置的結果資料, 其中,將從所述MAC運算器輸出的所述資料替換爲透過應用所述啟動函數產生的資料。
- 一種操作記憶體中處理(processing-in-memory, PIM)系統的方法,所述PIM系統包括用於執行乘法/累加(multiplication/accumulation, MAC)算術運算的PIM設備和用於控制所述PIM設備的所述MAC算術運算的PIM控制器,所述方法包括:在初始值爲1的遞增整數「R」小於或等於固定整數「M」時迭代地執行: 將第一MAC命令從所述PIM控制器發送給所述PIM設備,以將儲存在所述PIM設備的儲存區中的「M×N」權重矩陣的第R列中的元素輸出給所述PIM設備的MAC運算器,其中,「M」和「N」是大於「1」的自然數; 將儲存在所述PIM設備的全域緩衝器中用於所述MAC算術運算的「N×1」向量矩陣的第一行中的元素輸出給所述PIM設備的所述MAC運算器; 將第二MAC命令從所述PIM控制器發送給所述PIM設備,以執行輸入鎖存操作,以便將所述權重矩陣的第R列中的元素和所述向量矩陣的第一行中的元素鎖存到所述MAC運算器中; 對由所述MAC運算器鎖存的所述向量矩陣的第一行中的元素和所述權重矩陣的第R列中的元素執行矩陣乘法計算; 將第三MAC命令從所述PIM控制器發送給所述PIM設備,以執行所述MAC運算器中所述矩陣乘法計算的結果資料的輸出鎖存操作; 將第四MAC命令從所述PIM控制器發送給所述PIM設備,以從所述MAC運算器輸出所述輸出鎖存操作的結果資料;以及 將所述整數「R」增加1。
- 如請求項52所述的方法,其中,在預定的固定時間期間發送所述第一MAC命令至所述第四MAC命令,使得所述MAC算術運算對應於確定性MAC算術運算。
- 如請求項52所述的方法,還包括:在將所述第一MAC命令從所述PIM控制器發送給所述PIM設備之前: 將所述「M×N」權重矩陣寫入所述儲存區;以及 當推斷請求信號被輸入到所述PIM系統時,將所述「N×1」向量矩陣寫入所述全域緩衝器。
- 如請求項52所述的方法,還包括:在將所述第一MAC命令從所述PIM控制器發送給所述PIM設備之前,並且在推斷請求信號被輸入到所述PIM系統時: 將所述MAC運算器中包含的輸出鎖存器初始地設置爲包含在「N×1」偏置矩陣的第R列中的元素。
- 如請求項55所述的方法,其進一步包括:將所述偏置矩陣的第R列元素加到與針對所述權重矩陣的第R列和所述向量矩陣的第一行中的元素的矩陣乘法計算的結果資料相對應的MAC結果資料上。
- 如請求項56所述的方法,還包括: 在將所述第四MAC命令從所述PIM控制器發送給所述PIM設備之前,將與在所述MAC運算器中鎖存的被輸出的、矩陣乘法運算的結果相對應的結果資料替換爲被加上了在所述MAC運算器中被初始設置的偏置矩陣的結果資料;以及 將啟動函數應用於加上了偏置的結果資料,以及 其中,將從所述MAC運算器輸出的所述資料替換爲透過應用所述啟動函數產生的資料。
- 一種操作記憶體中處理(processing-in-memory, PIM)系統的方法,所述PIM系統包括用於執行乘法/累加(multiplication/accumulation, MAC)算術運算的PIM設備和用於控制由所述PIM設備執行的所述MAC算術運算的PIM控制器,所述方法包括: 將「M×N」權重矩陣寫入所述PIM設備的第一記憶庫,其中「M」和「N」是大於「1」的自然數; 所述PIM控制器接收推斷請求信號; 將「N×1」向量矩陣寫入所述PIM設備的第二記憶庫;以及 在初始值爲1的遞增整數「R」小於或等於「M」時迭代地執行: 從所述PIM控制器向所述PIM設備發送第一MAC命令; 基於所述第一MAC命令,將所述「M×N」權重矩陣的第R個「1×N」列向量從所述第一記憶庫輸出給所述PIM設備的MAC運算器; 從所述PIM控制器向所述PIM設備發送第二MAC命令; 基於所述第二MAC命令,將所述「N×1」向量矩陣從所述第二記憶庫輸出給所述PIM設備的所述MAC運算器; 從所述PIM控制器向所述PIM設備發送第三MAC命令; 基於所述第三MAC命令,將所述第R個「1×N」列向量鎖存在所述MAC運算器中; 從所述PIM控制器向所述PIM設備發送第四MAC命令; 基於所述第四MAC命令,將所述「N×1」向量矩陣鎖存在所述MAC運算器中; 由所述MAC運算器計算所述第R個「1×N」列向量和所述「N×1」向量矩陣的純量積作爲MAC結果矩陣的「R×1」元素;以及 將所述整數「R」的當前值遞增到下一個更高的自然數。
- 如請求項58所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時,迭代地執行: 將第五MAC命令從所述PIM控制器發送給所述PIM設備; 基於所述第五MAC命令,將所述MAC結果矩陣的所述「R×1」元素鎖存在所述MAC運算器中; 將第六MAC命令從所述PIM控制器發送給所述PIM設備;以及 基於所述第六MAC命令,從所述MAC運算器輸出所述MAC結果矩陣的所述「R×1」元素。
- 如請求項58所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時迭代地執行: 使用「N×1」偏置矩陣的「R×1」元素的值來設置所述MAC運算器中包含的輸出鎖存器; 由所述MAC運算器透過將所述MAC結果矩陣的所述「R×1」元素與所述「N×1」偏置矩陣的所述「R×1」元素相加來計算「N×1」偏置結果矩陣的「R×1」元素; 將第五MAC命令從所述PIM控制器發送給所述PIM設備; 基於所述第五MAC命令,將所述偏置結果矩陣的所述「R×1」元素鎖存在所述MAC運算器中; 將第六MAC命令從所述PIM控制器發送給所述PIM設備;以及 基於所述第六MAC命令,從所述MAC運算器輸出所述偏置結果矩陣的所述「R×1」元素。
- 如請求項58所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時迭代地執行: 使用「N×1」偏置矩陣的「R×1」元素的值來設置所述MAC運算器中包含的輸出鎖存器; 由所述MAC運算器透過將所述MAC結果矩陣的所述「R×1」元素與所述「N×1」偏置矩陣的所述「R×1」元素相加來計算「N×1」偏置結果矩陣的「R×1」元素; 將第五MAC命令從所述PIM控制器發送給所述PIM設備; 基於所述第五MAC命令,將所述偏置結果矩陣的所述「R×1」元素鎖存在所述MAC運算器中; 由所述MAC運算器透過將啟動函數應用於所述偏置結果矩陣的所述「R×1」元素來產生「N×1」最終結果矩陣的「R×1」元素; 將第六MAC命令從所述PIM控制器發送給所述PIM設備;以及 基於所述第六MAC命令,從所述MAC運算器輸出所述最終結果矩陣的「R×1」元素。
- 一種操作記憶體中處理(processing-in-memory, PIM)系統的方法,所述PIM系統包括用於執行乘法/累加(multiplication/accumulation, MAC)算術運算的PIM設備和用於控制由所述PIM設備執行的MAC算術運算的PIM控制器,所述方法包括: 將「M×N」權重矩陣寫入所述PIM設備的記憶庫,其中,「M」和「N」是大於「1」的自然數; 由所述PIM控制器來接收推斷請求信號; 將「N×1」向量矩陣寫入所述PIM設備的全域緩衝器;以及 在初始值爲1的遞增整數「R」小於或等於「M」時迭代地執行: 從所述PIM控制器向所述PIM設備發送第一MAC命令; 基於所述第一MAC命令,將所述「M×N」權重矩陣的第R個「1×N」列向量從所述記憶庫輸出給所述PIM設備的MAC運算器; 基於所述第一MAC命令,將所述「N×1」向量矩陣從所述全域緩衝器輸出給所述PIM設備的所述MAC運算器; 從所述PIM控制器向所述PIM設備發送第二MAC命令; 基於所述第二MAC命令,將所述第R個「1×N」列向量鎖存在所述MAC運算器中; 基於所述第二MAC命令,將所述「N×1」向量矩陣鎖存在所述MAC運算器; 由所述MAC運算器來計算所述第R個「1×N」列向量和所述「N×1」向量矩陣的純量積作爲MAC結果矩陣的「R×1」元素;以及 將所述整數「R」的當前值遞增到下一個更高的自然數。
- 如請求項62所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時迭代地執行: 從所述PIM控制器向所述PIM設備發送第三MAC命令; 基於所述第三MAC命令,將所述MAC結果矩陣的「R×1」元素鎖存在所述MAC運算器中; 從所述PIM控制器向所述PIM設備發送第四MAC命令;以及 基於所述第四MAC命令從所述MAC運算器輸出所述MAC結果矩陣的所述「R×1」元素。
- 如請求項62所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時迭代地執行: 使用「N×1」偏置矩陣的「R×1」元素的值來設置所述MAC運算器中包含的輸出鎖存器; 由所述MAC運算器透過將所述MAC結果矩陣的「R×1」元素與所述「N×1」偏置矩陣的「R×1」元素相加來計算「N×1」偏置結果矩陣的「R×1」元素; 從所述PIM控制器向所述PIM設備發送第三MAC命令; 基於所述第三MAC命令,將所述偏置結果矩陣的所述「R×1」元素鎖存在所述MAC運算器中; 從所述PIM控制器向所述PIM設備發送第四MAC命令;以及 基於所述第四MAC命令,從所述MAC運算器輸出所述偏置結果矩陣的所述「R×1」元素。
- 如請求項62所述的方法,還包括在遞增的所述整數「R」小於或等於「M」時迭代地執行: 使用「N×1」偏置矩陣的「R×1」元素的值來設置所述MAC運算器中包含的輸出鎖存器; 由所述MAC運算器透過將所述MAC結果矩陣的「R×1」元素與所述「N×1」偏置矩陣的「R×1」元素相加來計算「N×1」偏置結果矩陣的「R×1」元素; 從所述PIM控制器向所述PIM設備發送第三MAC命令; 基於所述第三MAC命令,將所述偏置結果矩陣的所述「R×1」元素鎖存在所述MAC運算器中; 由所述MAC運算器透過將啟動函數應用於所述偏置結果矩陣的所述「R×1」元素來產生「N×1」最終結果矩陣的「R×1」元素; 從所述PIM控制器向所述PIM設備發送第四MAC命令;以及 基於所述第四MAC命令從所述MAC運算器輸出所述最終結果矩陣的所述「R×1」元素。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062958226P | 2020-01-07 | 2020-01-07 | |
US62/958,226 | 2020-01-07 | ||
KR1020200006903A KR20210093126A (ko) | 2020-01-17 | 2020-01-17 | 프로세싱-인-메모리 시스템 및 그 동작 방법 |
KR10-2020-0006903 | 2020-01-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202141290A true TW202141290A (zh) | 2021-11-01 |
TWI868210B TWI868210B (zh) | 2025-01-01 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
US20220391147A1 (en) | 2022-12-08 |
US11816362B2 (en) | 2023-11-14 |
US11822823B2 (en) | 2023-11-21 |
US20220391146A1 (en) | 2022-12-08 |
US11513733B2 (en) | 2022-11-29 |
CN113157248A (zh) | 2021-07-23 |
US20210208814A1 (en) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822823B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US11908541B2 (en) | Processing-in-memory (PIM) systems | |
US12136470B2 (en) | Processing-in-memory (PIM) system that changes between multiplication/accumulation (MAC) and memory modes and operating methods of the PIM system | |
US20210319821A1 (en) | Integrated Circuit Device with Deep Learning Accelerator and Random Access Memory | |
US20230325186A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
US12141469B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US11385837B2 (en) | Memory system | |
US11847451B2 (en) | Processing-in-memory (PIM) device for implementing a quantization scheme | |
US20220351765A1 (en) | Processing-in-memory (pim) device for performing a burst multiplication and accumulation (mac) operation | |
US11500629B2 (en) | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit | |
US11823764B2 (en) | Processing-in-memory devices for element-wise multiplication | |
US20220405019A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
TWI868210B (zh) | 記憶體中處理(pim)系統 | |
CN113157248B (zh) | 存内处理(pim)系统和pim系统的操作方法 | |
KR20210093126A (ko) | 프로세싱-인-메모리 시스템 및 그 동작 방법 | |
US20220283806A1 (en) | Processing-in-memory device having a plurality of global buffers and processing-in-memory system including the same | |
US20210224039A1 (en) | Multiplication and accumulation (mac) operator and processing-in-memory (pim) device including the mac operator | |
US11704052B2 (en) | Processing-in-memory (PIM) systems | |
US11315611B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US11829760B2 (en) | Processing-in-memory device and processing-in-memory system including the same | |
US20230033179A1 (en) | Accumulator and processing-in-memory (pim) device including the accumulator | |
US11842193B2 (en) | Processing-in-memory (PIM) device | |
US20210373852A1 (en) | Processing-in-memory (pim) devices | |
US11983508B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US11422804B2 (en) | Processing-in-memory (PIM) device |