TW202319912A - 用於記憶體中計算的系統、電腦實施過程以及解碼器 - Google Patents
用於記憶體中計算的系統、電腦實施過程以及解碼器 Download PDFInfo
- Publication number
- TW202319912A TW202319912A TW111131459A TW111131459A TW202319912A TW 202319912 A TW202319912 A TW 202319912A TW 111131459 A TW111131459 A TW 111131459A TW 111131459 A TW111131459 A TW 111131459A TW 202319912 A TW202319912 A TW 202319912A
- Authority
- TW
- Taiwan
- Prior art keywords
- sum
- integer
- receive
- partial
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Advance Control (AREA)
Abstract
本揭露提供浮點處理器的系統及方法以及用於操作浮點處理器的方法。浮點處理器包括量化器、記憶體中計算裝置及解碼器。浮置處理器被配置成接收輸入陣列,其中輸入陣列的值以浮點格式表示。浮點處理器可被配置成將浮點數轉換成整數格式以使得可對數實行乘法累加運算。乘法累加運算生成部分和,部分和是整數格式。可將部分和累加直至達成全和為止,其中然後可將全和轉換成浮點格式。
Description
本揭露中所述的技術大體而言是有關於浮點處理器。
浮點處理器經常用於電腦系統或神經網路中。浮點處理器用於對浮點數實行計算且可被配置成將浮點數轉換成整數,且反之亦然。
以下揭露內容提供諸多不同的實施例或實例以實施所提供標的物的不同特徵。下文闡述組件及排列的具體實例以簡化本揭露。當然,所述多個僅是實例並不旨在進行限制。舉例而言,在以下說明中,在第二特徵之上或在第二特徵上形成第一特徵可包括其中將第一特徵與第二特徵形成為直接接觸的實施例,且亦可包括其中附加特徵可形成於第一特徵與第二特徵之間以使得第一特徵與第二特徵可不直接接觸的實施例。另外,本揭露可在一些各種實例中重複使用參考編號及/或字母。此重複是出於簡化及清晰的目的且本身不規定所論述的一些各種實施例及/或配置之間的關係。
此外,為易於說明,本文中可使用例如「位於...之下」、「位於...下方」、「下部的」、「位於...上方」、「上部的」等空間相對性用語來闡述圖中所說明的一個元件或特徵與另一(其他)元件或特徵的關係。除圖中所繪示的取向外,所述空間相對性用語亦旨在囊括裝置在使用或操作中的不同取向。設備可具有其他取向(旋轉90度或處於其他取向),且本文所使用的空間相對性描述語可同樣相應地進行解釋。
闡述本揭露的一些實施例。可在所述多個實施例中所述的階段之前、期間及/或之後提供附加操作。不同的實施例可替換或去除所述階段中的一些階段。可將附加特徵添加至電路。不同的實施例可替換或去除下文所述的特徵中的一些特徵。儘管針對按照特定次序實行的操作論述一些實施例,但所述多個操作可按照另一邏輯次序來實行。
浮點處理器被設計成對浮點數實行運算。所述多個浮點處理器可實施於諸多不同的環境中。舉例而言,熟習此項技術者應理解,本揭露的浮點處理器可實施於神經網路中。所述多個運算包括乘法、除法、加法、減法及其他數學運算。在本揭露的一些實施方案中,浮點處理器包括量化器、記憶體中計算裝置及解碼器。傳統的方式是,對部分和進行累加,且解碼器將個別部分和轉換成浮點格式。必須以浮點格式對由解碼器輸出的個別部分和進行累加以生成全和並實行後續的計算,此乃是硬體密集型的。舉例而言,若以浮點格式對部分和進行累加,則加法將需要對指數進行正規化步驟以使得所有的值具有相同的指數。然後,將對尾數實行累加,其中進位輸出反映於最終的指數值上。
本揭露的方式提供消除或減輕與傳統方法相關聯的問題的浮點處理器。在一些實施例中,浮點處理器藉由提供累加器來達成所述多個優點,所述累加器使得能夠以整數格式對部分和進行累加直至達成全和為止。因此,在達成全和之後,僅發生一次自整數至浮點格式的轉換。此與傳統方式形成對比,在傳統方式中例如針對部分和中的每一者多次將多個整數轉換成浮點格式。在一些實施例中,此累加器位於解碼器內。此方式可消除或減輕對與在沒有累加器支援的情況下以浮點格式生成部分和相關聯的複雜硬體的需要。
圖1是根據一些實施例的浮點處理器100的方塊圖。如此圖1中所繪示,浮點處理器100包括量化器101、記憶體104、記憶體中計算裝置102、組合加法器105、累加器106及解量化器107。量化器101接收呈浮點格式的數且將所述多個數轉換成整數格式。記憶體104耦合至量化器101且自量化器101接收所述整數。在一些實施例中,記憶體104是靜態隨機存取記憶體(static random access memory,SRAM)。記憶體104允許在確定表示輸入陣列的所有值中的最大值的縮放因數的同時暫時儲存所述多個經量化輸入。根據一些實施例,表示所有接收到的輸入的最大值的此縮放因數使得無需多次對整數進行量化。記憶體104可耦合至記憶體中計算裝置102且可生成整數,所述整數繼而由記憶體中計算裝置102接收。在一些實施例中,記憶體中計算裝置102是包括記憶體胞元陣列的裝置,所述記憶體胞元陣列耦合至一或多個計算/乘法區塊且被配置成對一組輸入實行向量乘法。在一些示例性記憶體中計算裝置中,記憶體胞元裝置是磁阻隨機存取記憶體(magneto-resistive random-access memory,MRAM)或動態隨機存取記憶體(dynamic random-access memory,DRAM)。可實施處於本揭露的範疇內的其他記憶體胞元裝置。在一個實例中,記憶體中計算裝置102對接收到的整數實行數學運算。在一些實施例中,記憶體中計算裝置102對整數實行乘法累加運算。熟習此項技術者應理解,可自乘法累加運算產生部分和。
在本揭露的一些實施例中,組合加法器105接收所述部分和。組合加法器105是經由多個通道及時間步驟接收部分和(例如,4位元部分和)以自記憶體中計算裝置102的輸出生成全部分和(例如,8位元部分和)的一組加法器。在實施例中組合加法器105耦合至解量化器107,且解量化器107可被配置成接收呈整數格式的部分和。在一些實施例中,解量化器107包括累加器106。在本揭露的實施例中,解量化器107被配置成接收部分和,以在累加器106中連續地以整數格式對所述部分和進行累加直至達成全和為止,且然後將所述全和自整數轉換成浮點格式。如此一來,浮點處理器100以整數格式對部分和實行累加。此與以浮點格式進行累加所涉及的硬體要求相比,能夠使得硬體要求的實施方案更簡單。
圖2是根據一些實施例的本揭露的量化過程的方塊圖。在圖2的過程中,量化器101接收預定數目個值的單個輸入向量201。所述多個值是浮點格式。根據一些實施例,量化器101被配置成找到此預定數目個值中的最大值,且設定縮放因數scale_x 207以反映所述最大值。在圖2的實例中,量化器101亦含有最大值單元區塊202及移位單元區塊203,如參照圖4及圖6進一步闡述。如下文進一步論述,最大值單元區塊202用於確定輸入向量201的最大指數值。下文亦進一步闡述,移位單元區塊203用於在設定所述縮放因數之後對輸入向量201實行移位運算。縮放因數scale_x 207用於將浮點值轉換成整數值。然後,量化器101將輸入向量201的每一元素量化,從而生成整數,且縮放因數scale_x 207用於縮放調整過程209中。在實施例中,由量化器101生成的整數在記憶體中計算裝置102內經受運算。舉例而言,在一些實施例中,整數值經受乘法累加運算。熟習此項技術者應理解,由於所述多個乘法累加運算而生成部分和。
接著,可對所述部分和實行縮放調整運算209。可例如經由使用縮放因數(例如scale_x 207及scale_w 208)實現縮放調整運算209。在圖2的實例中,經由量化器動態地生成縮放因數scale_x 207。scale_x 207是應用於輸入向量以實行浮點表示至整數表示的量化的縮放因數。藉由將浮點數除以scale_x 207來實行轉換。縮放因數scale_w 208可以是與記憶體中計算裝置102應用於輸入值的權重相關聯的縮放因數,且可經由暫存器被載入至系統中。在一些實施例中,權重向量對應於神經網路的特定層內的一或多個經訓練濾波器的係數的值。在實施例中,在對部分和進行縮放調整209之後,累加器106接收所述部分和。在圖2中所示的實例中,在累加器106處接收到所述部分和時,所述部分和是以整數格式表示。連續地接收部分和直至生成全和為止。根據一些實施例,當在累加器106處以整數格式達成全和時,在解量化器107處接收所述全和,在所述解量化器107處將所述全和轉換成浮點格式。
圖3示出根據一些實施例的可由記憶體中計算裝置102實施的摺疊運算的實例。在實施例中,量化器101生成含有整數值的輸入陣列302。熟習此項技術者應理解,記憶體中計算裝置102被配置成經由卷積運算對所述多個輸入陣列302實行乘法累加運算。為了成功地對輸入陣列302實行乘法累加運算,記憶體中計算裝置102的垂直維度上的元件數目必須大於或等於記憶體中計算裝置102一次接收到的輸入元素的數目。記憶體中計算裝置102一次接收到的輸入元素的數目等於輸入陣列302的單個行中的元素數目。在本揭露的實施例中,當輸入陣列302的單個行中的元素數目大於記憶體中計算裝置102的垂直維度上的元件數目時,記憶體中計算裝置102對輸入陣列302實行摺疊運算。此確保將記憶體中計算裝置102接收到的元素數目限制於能夠經受乘法累加運算的數目。
舉例而言,記憶體中計算裝置102的垂直維度上的元件數目可為10。若輸入陣列302的垂直維度為25,則摺疊運算使得將輸入陣列302劃分成片段(segment)301,以使得可進行卷積運算。在此實例中,在輸入陣列302的垂直維度為25且記憶體中計算裝置102的垂直維度為10的情況下,可將輸入陣列302劃分成三個單獨的疊層301。疊層亦可被稱為「片段」。第一疊層及第二疊層301可各自為10個元素,而第三疊層可為5個元素。如此一來,可在記憶體中計算裝置102處接收每一疊層301作為輸入,以使得可實行乘法累加運算。
在圖3的實例中,示出累加器303位於記憶體中計算裝置102的每一行的輸出處。所述多個累加器303各自接收由記憶體中計算裝置102的乘法累加運算生成的部分和,如上文參考圖2所述。在本揭露的實施例中,由記憶體中計算裝置102生成的部分和被稱為暫時部分和,原因在於在所述部分和由記憶體中計算裝置102生成時,尚未根據縮放因數(例如scale_x 207及scale_w 208)對所述部分和進行適當地移位。在生成所述多個暫時部分和之後,解碼器103接收所述暫時部分和且然後可生成輸出激活304,如下文進一步論述。
圖4示出根據一些實施例的與對數的運算相關聯的資料流400。此圖將結合圖5及圖6加以闡述。在圖4的實例中,量化器101首先接收呈浮點格式的數。熟習此項技術者應理解,可發生輸入鎖存401。輸入鎖存401可於在記憶體中計算裝置102處被接收之前發生在記憶體中計算裝置102中或單獨的隨機存取記憶體電路(例如,SRAM)中。可以二進制表示501接收浮點數,如圖5的實施例中所示。浮點數的二進制表示501可包括指數502及尾數503。在實施例中,尾數503是表示數的有效數位的所述數的一部分。所述數的值是藉由將尾數乘以基數的指數次冪來獲得。舉例而言,在基數為2的系統(例如,二進制系統)中,二進制數的值可藉由將尾數乘以2的指數次冪來獲得。接著,在實施例中發生最大值運算402,最大值運算402是確定輸入陣列302的指數的最大值的運算,如上文所述。在實施例中,在最大值運算402期間,確定縮放因數scale_x 207。在確定縮放因數scale_x 207之後,在一些實施例中,發生移位運算403。此運算是基於尾數503及指數502的特定值且用於例如浮點數501至整數504的轉換(例如量化)中。
在實施例中,移位運算403是基於移位單元203生成浮點數的對應整數表示。針對以正負號模式表示的浮點數,移位單元203是根據方程式1來計算且表達為:
(1)
其中num_bits是浮點數的尾數中的位元數目,max_unit是輸入陣列302的指數的最大值,且指數(i)是浮點數的指數。針對以無正負號模式表示的浮點數,移位單元203是根據方程式2計算且表達為:
(2)
在發生移位運算403之後,然後在記憶體中計算裝置102處接收到整數504作為輸入。在記憶體中計算裝置運算404中,記憶體中計算裝置102對整數504實行乘法累加運算。在實施例中,乘法累加運算產生部分和,如上文所論述。在實施例中,解碼器103內的組合加法器105接收所述部分和,如步驟405中所示。然後,可基於縮放因數scale_x 207及scale_w 208進行縮放調整405。在縮放調整405期間,使用兩個整數運算元的縮放因數(scale_x 207、scale_w 208)來調整乘法累加運算的輸出值。
在實施例中,在進行縮放調整405之後,在累加器106處接收經調整的整數部分和。連續地接收所述部分和直至達成全和為止。在藉由累加器106計算出全和之後,藉由解量化器107將所述全和轉換成浮點格式。圖6中繪示此轉換的態樣。在圖6的實例中,所計算的移位單元203為2。因此,整數至浮點格式的轉換涉及將在整數表示601內的前導1位置後面的數位向左移位兩個單元,如圖6的虛線所示。在本揭露的一些實施例中,累加器106位於解量化器107內。
圖7是根據一些實施例的本揭露的浮點處理器100的硬體實施方案的方塊圖。在圖7的實例中,浮點處理器100包括量化器101、記憶體中計算裝置102及頂層解碼器701。圖7中亦示出記憶體中計算暫存器703且圖7中亦示出頂層控制區塊702。熟習此項技術者應理解,基於給定實施例的配置,頂層控制區塊702用於將浮點處理器100的運算同步且將各種控制訊號發送至量化器101、記憶體中計算裝置102及解碼器103。如先前所論述,量化器101用於將浮點數轉換成整數格式。記憶體中計算暫存器703在記憶體中計算裝置102可用時將資料提供至記憶體中計算裝置102。頂層解碼器701由多個單解碼器103構成。在一些實施例中,單解碼器103可管理四個(4)通道的輸出。當每一單解碼器103能夠管理四個(4)通道的輸出且記憶體中計算裝置102包括六十四個(64)通道時,頂層解碼器701包括16個單解碼器103。
圖8是根據一些實施例的量化器101的方塊圖。在圖8的實例中,量化器101包括第一輸入暫存器801、第二輸入暫存器805、控制區塊802、最大值單元區塊804、移位單元區塊807、第一多工器803、第二多工器806、解多工器808、輸出暫存器809、最大值輸出暫存器810。在圖8中所示的實例中,量化器101被配置成在第一輸入暫存器801處接收輸入陣列302。量化器101的功能是基於找到縮放因數且然後應用移位運算403以將浮點數轉換成整數格式。最大值單元804負責自輸入向量計算最大指數值。一旦確定最大指數值,則將所述最大指數值保存於輸出暫存器810中。輸入暫存器(801、805)用於保持輸入資料以使得量化器能在所需數目個循環內完成計算。移位單元(807)用於在縮放因數被設定之後對輸入向量實行移位運算。在一些示例性實施例中,每一循環對輸入至移位單元的16個輸入值實行所述多個運算。因此,多工器806及解多工器808用於設定對應值。控制區塊802根據給定實施例的架構生成所述多個運算所需的控制訊號。
圖9是根據一些實施例的解碼器103的方塊圖。在圖9的實例中,解碼器103包括第一多工器903、第二多工器911、組合加法器105及解量化器914。解量化器914可更包括累加器106。熟習此項技術者應理解,在本揭露的實施例中,組合加法器105用於自記憶體中計算裝置102接收暫時部分和。然後,基於縮放因數scale_x 207及scale_w 208調整所述多個暫時部分和直至達成永久部分和為止。當達成永久部分和時,則所述永久部分和用作解量化器107的輸入。在實施例中,解量化器107的累加器(例如,累加器106)接收所述永久部分和。對由記憶體中計算裝置102生成的每一暫時部分和繼續此過程。解量化器107連續地接收每一永久部分和,直至達成全和為止。在實施例中,此全和是整數形式。解量化器107被配置成將此全和轉換成浮點格式。與將每一部分和自整數轉換成浮點格式的傳統方式相比,在達成全和之後再轉換成浮點格式能夠使得硬體實施方案更簡單。
圖10是示出根據一些實施例的浮點處理器實行計算的過程的流程圖。如圖10中所示,量化器101接收輸入向量,且量化器101為每一輸入向量生成單獨的縮放因數1001。舉例而言,縮放因數Q-scale 1可以是與輸入向量IN1相關聯的縮放因數,Q-scale 2可以是與輸入向量IN2相關聯的縮放因數,以此類推。量化器101亦將每一輸入向量302轉換成整數格式。在記憶體中計算裝置102處接收所述多個輸入向量,在所述記憶體中計算裝置102處實行乘法累加運算以生成暫時部分和。組合加法器105接收所述多個暫時部分和。由於生成永久部分和的過程是暫時的,因此利用組合加法器來保存部分和且接著連續地接收其他部分和以生成最終的部分和,如下文進一步論述。
接著,對所述暫時部分和實行縮放調整運算209以生成永久部分和。在實施例中,此過程是連續實行的。當生成永久部分和時,累加器106接收所述永久部分和。根據一些實施例,連續地接收所述多個永久部分和直至生成全和為止。一旦生成全和,則解量化器107將所述全和自整數轉換成浮點格式。
圖11是使用記憶體(例如激活SRAM)的本揭露實施例的流程圖。在實施例中,記憶體104耦合至量化器101及記憶體中計算裝置102,如圖1中所示。在圖11的實例中,記憶體104接收100個值的輸入陣列1101。在實施例中,量化器101基於全部100個輸入值1101的最大指數值來生成單個最大值單元202。然而,可需要針對每一輸入值確定單獨的移位單元203。此乃是由於在具有表示輸入值的最大指數的單個最大值單元202的情況下,不同數值的輸入值可在經受解量化時需要移位不同數目個單元以由相同的指數表示。在一些實例實施例中,移位單元203具有同時對16個輸入值進行運算的16個內部移位實體,且在四個(4)循環內輸送(pipeline)」輸入向量以實行全移位運算。
一旦確定最大值單元202及移位單元203的變數,則記憶體104接收經量化的(例如整數)輸入值。接著,記憶體中計算裝置102可接收所述經量化的輸入值,且記憶體中計算裝置102對所述經量化值實行乘法累加運算。在實施例中,所述多個乘法累加運算生成部分和。然而,在包括量化SRAM 104的情況下,每一輸入向量無需經受縮放調整,原因在於每一輸入向量可共用共同的縮放因數scale_x 207。
圖12示出根據一些實施例的本揭露的浮點處理器100的計算過程的流程圖。在圖12的實例中,量化器101接收輸入陣列1101。針對每一接收到的輸入陣列1101,基於輸入陣列1101的最大值202生成縮放因數scale_x 207。如圖12中所闡明,然後將此縮放因數scale_x 207傳遞至解碼器107。此可例如經由使用暫存器來實現。針對輸入陣列的每一輸入值生成移位單元203,且將移位單元203儲存於記憶體104中。移位單元203用於將浮點數轉換成整數,如圖4至圖6的論述中所闡釋。所述移位由圖6中所示的虛線說明。圖12的浮點處理器100亦包括控制單元1201,控制單元1201用作記憶體104的輸入。舉例而言,控制單元1201可負責將一組正確的輸入向量載入至記憶體中計算裝置102中以供計算。所述多個輸入向量是自量化器生成的整數值。熟習此項技術者應理解,在實施例中,所述量化器負責設定記憶體中的讀取位址且控制計算的同步化。如上文所論述,記憶體中計算裝置102實行乘法累加運算,所述乘法累加運算可生成部分和。在存在記憶體104的情況下,累加器106接收部分和而無需縮放調整。此乃是由於在實施例中所有輸入共同的縮放因數207是在使用記憶體104的情況下生成,如上文所論述。圖12中所示的累加器106可連續地接收每一部分和,從而利用接收到的每一後續的部分和來更新當前和,直至生成全和為止。在生成全和之後,然後解碼器107接收所述全和,在解碼器107處將所述全和自整數轉換成浮點格式。如上文所論述,此過程使得不需要與以浮點格式對部分和進行累加相關聯的更複雜硬體要求。
圖13是示出根據一些實施例的與計算過程相關聯的各種不同的參數可如何影響浮點處理器的運算的表1300。表1300中所示的摺疊運算主要由輸入的大小、輸出的大小及記憶體中計算裝置102的大小確定。在表1300的實例中,記憶體中計算裝置102的輸入大小是64×64,64×64表示64個8位元輸入及32個8位元通道。在表1300的第一列所示的實例中,輸入的大小是由第一個數(在本揭露實例中,如,3)乘以核心的大小確定。在所示的實例中,k = 3,因此核心大小等於第一個數乘以k,即等於3×3或等於9。因此,輸入的大小由9×3確定,即27。由於27小於64,因此不實行摺疊運算。
表1300中所繪示的行摺疊由輸出通道(在本揭露實例中,網路輸出層)的大小確定。如表1300的第一列中所示,輸出層的大小等於32。此等於記憶體中計算裝置102中可用的通道數目,因此亦無需行摺疊。
在表1300的第三列所示的實例中,輸入的大小是16。在此種情形中核心等於1×1或等於1。此小於64,因此不進行列摺疊。然而,輸出的大小是96。96大於32,因此必須實行行摺疊。所需的行疊層的數目為3,所述數目是藉由96除以32來確定。第四列具有輸入大小96及輸出大小24。因此,僅需要2個列疊層(由96除以64的上限確定)。
圖14是示出電腦實施過程1400的流程圖。在圖14中所示的實例中,除與部分和相關聯的縮放因數之外,可接收所述部分和1401。在本揭露的一些實施例中,此可藉由組合加法器實現。過程1400中的下一步驟1402涉及基於縮放因數及部分和來生成經調整的部分和。過程1400中的下一步驟1403是對經調整的部分和進行加總,直至達成全和為止。在一個實例中,此過程可在累加器中實現。在本揭露的其他實施例中,此可利用其他硬體組件來實現。電腦實施過程1400的最終步驟1404是將所述全和轉換成浮點格式。過程1400的步驟中的每一者可利用解碼器及具有解碼器的各種硬體組件來實現。熟習此項技術者應理解,相同的過程亦可利用其他硬體實施方案來實現。
本揭露有關於浮點處理器及電腦實施過程。本說明揭露一種包括量化器的系統,所述量化器被配置成將浮點數轉換成整數。所述系統亦包括記憶體中計算裝置,所述記憶體中計算裝置被配置成對所述整數實行乘法累加運算並基於所述乘法累加運算生成部分和,其中所述部分和是整數。此外,本揭露實施例的所述系統包括解碼器,所述解碼器被配置成自所述記憶體中計算裝置連續地接收所述部分和,以對呈整數格式的所述部分和加總直至達成全和為止,且將所述全和自所述整數格式轉換成浮點格式。
根據一些實施例,本揭露的系統更包括靜態隨機存取記憶體(SRAM)裝置,所述靜態隨機存取記憶體裝置被配置成接收整數且基於所述整數的最大值生成縮放因數。所述SRAM可更被配置成生成移位單元,所述移位單元用於將浮點數轉換成整數。
所述系統的量化器可更被配置成生成數值陣列。在一些實施例中,記憶體中計算裝置包括多個接收通道,且所述多個接收通道被配置成接收所述陣列。每一接收通道可包括多個列。列的數目可等於記憶體中計算裝置能夠接收的整數數目。在一些實施例中,所述記憶體中計算裝置更被配置成將所述陣列劃分成多個片段。每一片段中所含有的整數數目可小於或等於所述接收通道中的列的數目。
在一些實施例中,所述記憶體中計算裝置更包括多個累加器。所述累加器的數目可等於所述接收通道的數目。每一累加器可專用於特定接收通道,且每一累加器可耦合至其專用的所述接收通道。每一累加器可被配置成接收所述部分和中的一者。
所述解碼器可更包括解量化器,其中累加器位於所述解量化器內。所述解碼器亦可包括組合加法器。所述組合加法器可被配置成接收所述部分和及與所述部分和相關聯的縮放因數,且基於所述縮放因數調整所述部分和,所述調整在所述累加器接收所述部分和之前發生。
本說明亦揭露一種電腦實施過程。在本揭露的一些實施例中,所述過程包括接收整數格式的部分和及與所述部分和相關聯的縮放因數;基於所述縮放因數及所述部分和生成經調整的部分和;對所述經調整的部分和加總直至達成全和為止;以及將所述全和轉換成浮點格式。
本揭露亦有關於一種被配置成將整數轉換成浮點數的解碼器。在一些實施例中,所述解碼器包括組合加法器、累加器及解量化器。所述組合加法器可被配置成接收呈整數格式的部分和且對所述部分和進行縮放以生成經調整的部分和。所述累加器可被配置成連續地接收所述經調整的部分和直至達成呈整數格式的全和為止。所述解量化器可被配置成接收呈整數格式的所述全和並將所述全和轉換成浮點格式。
在一些實例實施例中,所述累加器位於所述解量化器內。所述組合加法器可更被配置成接收與所述部分和相關聯的縮放因數,對所述部分和的所述縮放是基於所述縮放因數。在一些實例實施例中,所述解碼器耦合至記憶體中計算裝置,所述記憶體中計算裝置被配置成生成呈整數格式的所述部分和。
上述內容概述了若干實施例的特徵,以使熟習此項技術者可更好地理解本揭露的各個態樣。熟習此項技術者應瞭解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎以施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應意識到所述多個等效構造並不背離本揭露的精神及範圍,且他們可在不背離本揭露的精神及範圍的情況下在本文中做出各種變化、代替及變動。
100:浮點處理器
101:量化器
102:記憶體中計算裝置
103:解碼器
104:記憶體/量化SRAM
105:組合加法器
106、303:累加器
107:解量化器/解碼器
201:單輸入向量/輸入向量
202:最大值單元區塊/最大值單元/最大值
203:移位單元區塊/移位單元
204:FP權重
205:離線量化
206:INT MAC
207、208、1001、scale_x、scale_w、Q-scale 1、Q-scale 2、Q-scale 3、Q-scale N:縮放因數
209:縮放調整過程/縮放調整運算/縮放調整
210: FP輸出
301、P1、P2、P3:片段/疊層第一疊層/第二疊層
302:輸入陣列/輸入向量
304:輸出激活
400:資料流
401:輸入鎖存
402:最大值運算
403:移位運算
404:記憶體中計算裝置運算
405:步驟/縮放調整
501:二進制表示/浮點數
502:指數
503:尾數
504:整數
505:量化輸出
601:整數表示
601:經移位整數表示
701:頂層解碼器
702:頂層控制區塊
703:記憶體中計算暫存器
801:第一輸入暫存器/輸入暫存器
803、903:第一多工器
804:最大值單元區塊/最大值單元
805:第二輸入暫存器/輸入暫存器
806:第二多工器/多工器
807:移位單元區塊/移位單元
808:解多工器
809:輸出暫存器
810:最大值輸出暫存器/輸出暫存器
911:第二多工器
1101:輸入陣列/輸入值
1201:控制單元
1300:表
1400:電腦實施過程/過程
1401、1402、1403:步驟
1404:最終步驟
CIM_nout、CLK、Xin_expm、W_expm、MAC_out、MAC_OUT、DEC_nout、DEC_NOUT、QXOUT、XIN、ENB1、Input ctrl signals、Valid_in、Valid_out、Dqnt_Test_in、TM_DEC、TM_CMB、Dec_Test_in、Dec_ in、RSTB、Model_sel:訊號
IN1~INn:輸入向量
T1~T4:流程
Y11~Ynn:部分和
圖1是根據一些實施例的浮點處理器的方塊圖。
圖2是根據一些實施例的本揭露的量化過程的方塊圖。
圖3示出根據一些實施例的可由記憶體中計算裝置實施的摺疊運算的實例。
圖4示出根據一些實施例的與對數的運算相關聯的資料流。
圖5繪示根據一些實施例的浮點數的二進制表示以及所述浮點數的量化輸出。
圖6繪示根據一些實施例的輸入值的經移位整數表示。
圖7是根據一些實施例的本揭露的浮點處理器的硬體實施方案的方塊圖。
圖8是根據一些實施例的量化器的方塊圖。
圖9是根據一些實施例的解碼器的方塊圖。
圖10是示出根據一些實施例的浮點處理器實行計算的過程的流程圖。
圖11是根據實施例的其中實施有記憶體的浮點處理器的運算的流程圖。
圖12示出根據一些實施例的本揭露的浮點處理器的計算過程的流程圖。
圖13是示出根據一些實施例的與計算過程相關聯的各種參數可如何影響浮點處理器的運算的表。
圖14是示出涉及接收部分和且接著生成呈浮點格式的數的電腦實施過程的流程圖。
不同圖中的對應的編號及符號通常指代對應的部件,除非另有指示。繪製多個圖以清楚地說明實施例的相關態樣且未必按比例繪製。
100:浮點處理器
101:量化器
102:記憶體中計算裝置
103:解碼器
104:記憶體/量化SRAM
105:組合加法器
106:累加器
107:解量化器/解碼器
Claims (20)
- 一種用於記憶體中計算的系統,包括: 量化器,被配置成將浮點數轉換成整數; 記憶體中計算裝置,被配置成對所述整數實行乘法累加運算並基於所述乘法累加運算生成部分和,所述部分和是整數;以及 解碼器,被配置成: 自所述記憶體中計算裝置連續地接收所述部分和, 對呈整數格式的所述部分和加總,直至達成全和為止,且 將所述全和自所述整數格式轉換成浮點格式。
- 如請求項1所述的系統,更包括靜態隨機存取記憶體裝置,所述靜態隨機存取記憶體裝置被配置成接收所述整數並基於所述整數的最大值生成縮放因數。
- 如請求項2所述的系統,其中所述靜態隨機存取記憶體裝置更被配置成生成在所述將浮點數轉換成整數時使用的移位單元。
- 如請求項1所述的系統,其中所述量化器更被配置成生成數值陣列。
- 如請求項4所述的系統,其中所述記憶體中計算裝置包括多個接收通道。
- 如請求項5所述的系統,其中所述多個接收通道被配置成接收所述數值陣列。
- 如請求項6所述的系統,其中所述多個接收通道中的每一接收通道包括多個列,其中所述列的數目等於所述記憶體中計算裝置能夠接收的整數數目。
- 如請求項7所述的系統,其中所述記憶體中計算裝置更被配置成將所述數值陣列劃分成多個片段。
- 如請求項8所述的系統,其中所述多個片段中的每一片段中所含有的整數數目小於或等於所述接收通道中的所述多個列的數目。
- 如請求項9所述的系統,其中所述記憶體中計算裝置更包括多個累加器。
- 如請求項10所述的系統,其中所述多個累加器的數目等於所述多個接收通道的數目。
- 如請求項11所述的系統,其中所述多個累加器中的每一累加器專用於所述多個接收通道中的特定接收通道,其中所述多個累加器中的每一累加器耦合至其所專用的所述特定接收通道。
- 如請求項12所述的系統,其中所述多個累加器中的每一累加器被配置成接收所述部分和中的一者。
- 如請求項13所述的系統,其中所述解碼器更包括解量化器,其中累加器位於所述解量化器內。
- 如請求項14所述的系統,其中所述解碼器更包括組合加法器,所述組合加法器被配置成接收所述部分和及與所述部分和相關聯的縮放因數,且基於所述縮放因數調整所述部分和,所述調整在所述累加器接收所述部分和之前發生。
- 一種電腦實施過程,包括: 接收呈整數格式的部分和及與所述部分和相關聯的縮放因數; 基於所述縮放因數及所述部分和生成經調整的部分和; 對所述經調整的部分和加總,直至達成全和為止;以及 將所述全和轉換成浮點格式。
- 一種被配置成將整數轉換成浮點數的解碼器,所述解碼器包括: 組合加法器,被配置成接收呈整數格式的部分和且對所述部分和進行縮放以生成經調整的部分和; 累加器,被配置成連續地接收所述經調整的部分和,直至達成呈整數格式的全和為止; 解量化器,被配置成接收呈整數格式的所述全和且將所述全和轉換成浮點格式。
- 如請求項17所述的解碼器,其中所述累加器位於所述解量化器內。
- 如請求項18所述的解碼器,其中所述組合加法器更被配置成接收與所述部分和相關聯的縮放因數,對所述部分和的所述縮放是基於所述縮放因數。
- 如請求項19所述的解碼器,所述解碼器耦合至記憶體中計算裝置,所述記憶體中計算裝置被配置成生成呈整數格式的所述部分和。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163272850P | 2021-10-28 | 2021-10-28 | |
| US63/272,850 | 2021-10-28 | ||
| US17/825,036 | 2022-05-26 | ||
| US17/825,036 US20230133360A1 (en) | 2021-10-28 | 2022-05-26 | Compute-In-Memory-Based Floating-Point Processor |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202319912A true TW202319912A (zh) | 2023-05-16 |
| TWI825935B TWI825935B (zh) | 2023-12-11 |
Family
ID=86146305
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111131459A TWI825935B (zh) | 2021-10-28 | 2022-08-22 | 用於記憶體中計算的系統、電腦實施過程以及解碼器 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20230133360A1 (zh) |
| TW (1) | TWI825935B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11823758B2 (en) * | 2021-02-10 | 2023-11-21 | Taiwan Semiconductor Manufacturing Company, Ltd. | Conducting built-in self-test of memory macro |
| CN120803395B (zh) * | 2025-09-12 | 2025-11-18 | 上海壁仞科技股份有限公司 | 处理器、电子设备 |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9264066B2 (en) * | 2013-07-30 | 2016-02-16 | Apple Inc. | Type conversion using floating-point unit |
| EP3040852A1 (en) * | 2014-12-31 | 2016-07-06 | Nxp B.V. | Scaling for block floating-point data |
| US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
| CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
| US20190004769A1 (en) * | 2017-06-30 | 2019-01-03 | Mediatek Inc. | High-speed, low-latency, and high accuracy accumulation circuits of floating-point numbers |
| KR102564456B1 (ko) * | 2017-10-19 | 2023-08-07 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법 |
| US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
| EP3807756A4 (en) * | 2018-06-18 | 2022-03-30 | The Trustees of Princeton University | CONFIGURABLE IN-MEMORY COMPUTATION ENGINE, PLATFORM, BINARY CELLS AND RELATED ARRANGEMENTS |
| US10853067B2 (en) * | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
| WO2020067908A1 (en) * | 2018-09-27 | 2020-04-02 | Intel Corporation | Apparatuses and methods to accelerate matrix multiplication |
| KR102775183B1 (ko) * | 2018-11-23 | 2025-03-04 | 삼성전자주식회사 | 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 |
| US11675998B2 (en) * | 2019-07-15 | 2023-06-13 | Meta Platforms Technologies, Llc | System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator |
| US20210064338A1 (en) * | 2019-08-28 | 2021-03-04 | Nvidia Corporation | Processor and system to manipulate floating point and integer values in computations |
| US20230244442A1 (en) * | 2020-01-07 | 2023-08-03 | SK Hynix Inc. | Normalizer and multiplication and accumulation (mac) operator including the normalizer |
| US11487447B2 (en) * | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
| US20230068941A1 (en) * | 2021-08-27 | 2023-03-02 | Nvidia Corporation | Quantized neural network training and inference |
-
2022
- 2022-05-26 US US17/825,036 patent/US20230133360A1/en active Pending
- 2022-08-22 TW TW111131459A patent/TWI825935B/zh active
Also Published As
| Publication number | Publication date |
|---|---|
| TWI825935B (zh) | 2023-12-11 |
| US20230133360A1 (en) | 2023-05-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2022058660A (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
| US11909421B2 (en) | Multiplication and accumulation (MAC) operator | |
| EP4206996A1 (en) | Neural network accelerator with configurable pooling processing unit | |
| US20230244442A1 (en) | Normalizer and multiplication and accumulation (mac) operator including the normalizer | |
| EP4160487A1 (en) | Neural network accelerator with a configurable pipeline | |
| JPH0622033B2 (ja) | サンプルベクトルの離散余弦変換を計算する回路 | |
| TWI825935B (zh) | 用於記憶體中計算的系統、電腦實施過程以及解碼器 | |
| CN114970807A (zh) | Softmax和指数在硬件中的实施 | |
| US20220229633A1 (en) | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator | |
| US11341400B1 (en) | Systems and methods for high-throughput computations in a deep neural network | |
| US12282844B2 (en) | Artificial intelligence accelerators | |
| Rajanediran et al. | Hybrid Radix-16 booth encoding and rounding-based approximate Karatsuba multiplier for fast Fourier transform computation in biomedical signal processing application | |
| US20230075348A1 (en) | Computing device and method using multiplier-accumulator | |
| GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
| GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
| EP4345691A1 (en) | Methods and systems for performing channel equalisation on a convolution layer in a neural network | |
| US9612800B2 (en) | Implementing a square root operation in a computer system | |
| Asim et al. | Centered Symmetric Quantization for Hardware-Efficient Low-Bit Neural Networks. | |
| CN111126580B (zh) | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 | |
| CN113536221B (zh) | 运算方法、处理器以及相关产品 | |
| WO2021212972A1 (zh) | 运算方法、处理器以及相关产品 | |
| KR20230076641A (ko) | 부동-소수점 연산을 위한 장치 및 방법 | |
| CN118778922B (zh) | 约减装置及方法 | |
| CN114791786B (zh) | 任务映射、任务控制、任务处理方法及处理核、电子设备 | |
| TWI879627B (zh) | 自然指數函數計算裝置及其計算方法 |