TW201926147A - 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 - Google Patents

電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 Download PDF

Info

Publication number
TW201926147A
TW201926147A TW106142473A TW106142473A TW201926147A TW 201926147 A TW201926147 A TW 201926147A TW 106142473 A TW106142473 A TW 106142473A TW 106142473 A TW106142473 A TW 106142473A TW 201926147 A TW201926147 A TW 201926147A
Authority
TW
Taiwan
Prior art keywords
data
memory
accelerator
processor
electronic device
Prior art date
Application number
TW106142473A
Other languages
English (en)
Inventor
瑞仁 郭
陳中恝
汪孔橋
蔡文福
葉子瑋
鄭中豪
陸慧敏
Original Assignee
阿比特電子科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 阿比特電子科技有限公司 filed Critical 阿比特電子科技有限公司
Priority to TW106142473A priority Critical patent/TW201926147A/zh
Priority to US16/203,686 priority patent/US20190171941A1/en
Priority to CN201811458625.7A priority patent/CN109871952A/zh
Priority to CN202310855592.4A priority patent/CN117252248A/zh
Publication of TW201926147A publication Critical patent/TW201926147A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一種電子裝置,包含:一數據傳輸介面,用以傳輸一數據資料;一記憶體,用以儲存該數據資料;一處理器,用以執行一應用程式;以及一加速器,經一匯流排與該處理器耦接,並依從該處理器傳來的一運算請求,自該記憶體中讀取該數據資料,對該數據資料執行一運算以產生一運算資料,儲存於該記憶體中。該電子裝置能夠提升運算效能。本揭示並提供一種加速器、適用於神經網路運算的加速方法及神經網路加速系統。

Description

電子裝置、加速器、適用於神經網路運算的加速 方法及神經網路加速系統
本揭示涉及運算領域,特別有關一種電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統。
近年來,隨著計算能力的提升,神經網路相關應用逐漸發展,成為產業的一大趨勢。雖然現今的處理器效能有所提升,但是以處理器來進行神經網路運算需要頻繁存取記憶體,使得運算效能降低。習知技術中,可以利用圖形處理器(Graphics Processing Unit,GPU)來進行神經網路運算而提升效能,然而其硬體架構複雜,一般只侷限於桌上型電腦,且缺乏節電方案,難以擴展到可攜式裝置的應用中。
有鑑於此,有必要提出一種新的方案,以解決上述問題。
本揭示的目的在於提供一種電子裝置、加速器、適 用於神經網路運算的加速方法及神經網路加速系統,以提升運算效率。
本揭示一方面提供一種電子裝置,包含:一數據傳輸介面,用以傳輸一數據資料;一記憶體,用以儲存該數據資料;一處理器,用以執行一應用程式;以及一加速器,經一匯流排與該處理器耦接,並依從該處理器傳來的一運算請求,自該記憶體中讀取該數據資料,對該數據資料執行一運算以產生一運算資料,儲存於該記憶體中。
本揭示另一方面提供一種適用於將一記憶體中的一數據資料進行一神經網路運算的加速器,包含:一暫存器,用於儲存與該神經網路運算相關的複數個參數;一讀寫器,用於從該記憶體中讀取該數據資料;一控制器,與該暫存器和該讀寫器耦接;以及一運算器,與該控制器耦接,該控制器依據該等參數,控制該運算器對該數據資料執行該神經網路運算,並產生一運算資料。
本揭示又一方面提供一種適用於神經網路運算的加速方法,包含:(a)接收一數據資料;(b)利用一處理器執行一神經網路應用程式;(c)利用該神經網路應用程式的執行,將該數據資料儲存至一記憶體中,並對一加速器發出一第一訊號;(d)利用該加速器開始進行一神經網路運算,以產生一運算資料;(e)完成該神經網路運算,利用該加速器發出一第二訊號至該處理器;(f)利用該處理器繼續執行該神經網路應用程式;以及(g)判斷是否需 要繼續該加速器運作,若是,該處理器向該加速器發出一第三訊號,並回到步驟(d),若否,則結束運算。
本揭示再一方面提供一種神經網路加速系統,包含:一系統控制晶片,包括:一數據傳輸介面,用以傳輸一數據資料;一第一記憶體;以及一處理器,用以執行一應用程式,經一匯流排與該記憶體及該數據傳輸介面耦接;以及一加速器,連接到該系統控制晶片,該加速器包括:一控制器;一第二記憶體,用以儲存該數據資料;一讀寫器,用來讀寫該第二記憶體;一運算器,用來對該數據資料該執行一神經網路運算;以及一暫存器,存放與該神經網路運算相關的複數個參數。
本揭示中,處理器將某些運算(例如神經網路運算)交給加速器處理,可以減少記憶體的存取時間,提升運算效率。 而且,在某些實施例中,加速器執行運算期間,處理器處於省電狀態,因而可以有效減少電力消耗。
10‧‧‧數據傳輸介面
12‧‧‧記憶體
14‧‧‧處理器
16‧‧‧加速器
18‧‧‧匯流排
22‧‧‧系統控制單元
24‧‧‧快閃記憶體控制器
26‧‧‧顯示控制器
60‧‧‧系統控制晶片
72‧‧‧控制器
74‧‧‧運算器
76‧‧‧讀寫器
78‧‧‧暫存器
82‧‧‧乘法陣列
84‧‧‧加法器
86‧‧‧前瞻加法器
121‧‧‧第一記憶體
122‧‧‧第二記憶體
181‧‧‧第一匯流排
182‧‧‧第二匯流排
240‧‧‧快閃記憶體
260‧‧‧顯示裝置
761‧‧‧仲裁邏輯
S90~S102‧‧‧步驟
第1圖顯示本揭示之電子裝置的示意圖。
第2圖顯示本揭示之電子裝置的第一實施例的示意圖。
第3圖顯示本揭示之電子裝置的第二實施例的示意圖。
第4圖顯示本揭示之電子裝置的第三實施例的示意圖。
第5圖顯示本揭示之電子裝置的第四實施例的示意圖。
第6圖顯示本揭示之神經網路加速系統的示意圖。
第7圖顯示本揭示之加速器、處理器及記憶體的示意圖。
第8圖顯示本揭示之加速器的細部結構圖。
第9圖顯示根據本揭示的一種適用於神經網路運算的加速方法。
為使本揭示的目的、技術方案及效果更加清楚、明確,以下參照圖式並舉實施例對本揭示進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本揭示,本揭示說明書所使用的詞語“實施例”意指用作實例、示例或例證,並不用於限定本揭示。此外,本揭示說明書和所附申請專利範圍中所使用的冠詞「一」一般地可以被解釋為意指「一個或多個」,除非另外指定或從上下文可以清楚確定單數形式。並且,在所附圖式中,結構、功能相似或相同的元件是以相同元件標號來表示。
本揭示提供一種電子裝置,其具有將某些運算從處理器獨立出來的特點,這些運算特別是相關於神經網路的運算,本揭示的電子裝置能夠提升運算的效率。
請參閱第1圖,本揭示的電子裝置包括一數據傳輸介面10、一記憶體12、一處理器14、一加速器(accelerator)16及一匯流排(bus)18。數據傳輸介面10用於傳輸一原生資料,記憶體12用以儲存該原生資料,記憶體12可實現為靜態隨機存取記憶體(Static Random Access Memory,SRAM)。數據傳輸介面10將該原生資料傳輸到記憶體12中儲存起來。該原生資料例如為感測器(未 圖式)所獲取的感測數據,例如心電圖(Electrocardiography,ECG)資料。數據傳輸介面10可以採行的規範例如積體電路匯流排(I2C bus)、串行外設介面(Serial Peripheral Interface bus,SPI)、通用輸入輸出(General-purpose Input/Output,GPIO)和通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter,UART)等。
處理器14用以執行一應用程式(Application Program),例如神經網路應用程式,具體如卷積神經網路(Convolutional Neural Network)應用程式。處理器14透過匯流排18與加速器16耦接。當處理器14有運算需求時,例如相關於神經網路的運算,如卷積(Convolution)運算,線性整流單元(Rectified Linear Units,ReLu)運算及最大池化(Max pooling)運算,處理器14透過匯流排18向加速器16發出一運算請求。匯流排18可實現為一高級高性能匯流排(Advanced High-Performance Bus,AHB)。
加速器16透過匯流排18從處理器14接收該運算請求。當加速器16接收到該運算請求時,加速器16從記憶體12中讀取該原生資料,並對該原生資料執行一運算(computing operation)以產生一運算資料(Processed data),所產生的運算資料儲存到記憶體12中。例如,該運算為卷積運算,卷積運算為卷積神經網路中運算量最大的運算。以卷積運算來說,加速器16對該原生資料中的每一筆資料乘以一個權重係數,而後對其進行加總,也可再加總後再加上一個偏差值(bias)作為輸出,得出的結果可傳遞到 下一個神經網路層,作為下一個神經網路層的輸入。例如,得出的結果可傳遞到一卷積層,在該卷積層再進行一次卷積運算,其輸出作為下一層的輸入,該下一層可為一ReLu層、一最大池化層或一平均池化層,在最終的輸出層之前可連接一全連接層(full connected layer)。
加速器16所進行的運算並不限於以該原生資料為輸入,對其直接進行的運算。加速器16所進行的運算可以是一個神經網路中各層所需的運算,例如如前所述的卷積運算、線性整流單元運算和最大池化運算。
上述的原生資料可以在前端進行處理、優化後生成一數據資料,再儲存於記憶體12中。例如,該原生資料可在前端進行濾波、降噪及/或頻域轉換等處理後再儲存於記憶體12中,而加速器16對該處理後的資料執行該運算。本文中的原生資料也可以是不限於從該感測器取得的資料,而是泛指可以傳輸到加速器16進行運算的任何數據資料。
上述之電子裝置可以一系統單晶片(System on Chip,SoC)實現,也就是說,數據傳輸介面10、記憶體12、處理器14、加速器16及匯流排18等元件可整合於一個系統單晶片中。
本揭示的電子裝置中,處理器14將某些運算交給加速器16處理,這樣可以減少處理器14的負載,增加處理器14的可使用率,減少等待時間,在某些應用中也可降低處理器14成本。在神經網路應用方面,若以處理器14來處理相關於神經網路的運 算,處理器14會因耗費太多時間在記憶體12存取上而使得運算時間拉長。本揭示的電子裝置中加速器16負責相關於神經網路的運算,這樣的其中一個好處是減少了記憶體12的存取時間。舉例來說,在處理器14的操作頻率為加速器16和記憶體12的操作頻率的兩倍的情況下,處理器14需要10個操作週期的時間來存取記憶體12內的資料,但加速器16僅需1個操作週期的時間。因此,加速器16的設置可以有效提升運算效率。
本揭示的另一個技術特點是該電子裝置可以有效減少電力消耗。具體地,加速器16執行該運算期間,處理器14處於閒置中,進一步來說可以是在一省電狀態。處理器14包括一工作模式(operation mode)及一省電模式(power saving mode),當加速器16執行該運算時,處理器14處於該省電模式。在該省電狀態或該省電模式下,處理器14可以是處於等待中斷操作(wait for interrupt,WFI)的閒置(Idle)狀態,也可以是處於低時脈(clock)的狀態,也就是處理器14在省電模式下降低了時脈,或者是時脈完全關閉的狀態。於另一實施例中,當從該工作模式進入該省電模式時,處理器14進入閒置狀態且時脈降低到低時脈或完全關閉的狀態。在一實施例中,處理器14的操作頻率或時脈較加速器16高,處理器14的耗電量也較加速器16來得高,因此加速器16執行該運算時處理器14進入該省電模式,可以有效減少電力消耗,有利於例如穿戴式裝置的應用場合。
第2圖顯示本揭示之電子裝置的第一實施例的示意 圖。第一實施例的電子裝置包括一處理器14、一加速器16、一第一記憶體121、一第二記憶體122、一第一匯流排181、一第二匯流排182、一系統控制單元(System Control Unit,SCU)22及一數據傳輸介面10。第一匯流排181例如為高級高性能匯流排,第二匯流排182例如為一高級性能/週邊匯流排(Advanced Performance/Peripherals Bus,APB)。第一匯流排181之傳輸速度高於第二匯流排182之傳輸速度。加速器16經第一匯流排181與處理器14耦接。第一記憶體121直接連接於加速器16,第二記憶體122經第一匯流排181與處理器14耦接。例如,第一記憶體121和第二記憶體122皆為SRAM。
於一實施例中,該原生資料或該數據資料可存放於第一記憶體121中,加速器16執行該運算所產生的該運算資料可存放於第二記憶體122中。具體地,處理器14將該數據資料傳給加速器16,加速器16透過第一匯流排181接收該數據資料,並將該數據資料寫入第一記憶體121中,加速器16生成的該運算資料經第一匯流排181寫入第二記憶體122中。
於另一實施例中,該原生資料或該數據資料可存放於第二記憶體122中,加速器16執行該運算所產生的該運算資料可存放於第一記憶體121中。具體地,該數據資料透過第一匯流排181寫入第二記憶體122中,加速器16生成的該運算資料直接寫入第一記憶體121中。
又於另一實施例中,該數據資料及該運算資料均存 放於第一記憶體121中,第二記憶體122存放與處理器14中運行的該應用程式相關的複數個資料。例如,第二記憶體122存放處理器14中運行的卷積神經網路應用程式所需的相關資料。在此實施例中,處理器14將該數據資料傳給加速器16,加速器16透過第一匯流排181接收該數據資料,並將該數據資料寫入第一記憶體121中,加速器16生成的該運算資料直接寫入第一記憶體121中。
處理器14與加速器16可以共享第一記憶體121,處理器14可以透過加速器16將該數據資料儲存到第一記憶體121,並從第一記憶體121讀取該運算資料。當存取第一記憶體121時,加速器16具有較處理器14高的優先存取權。
第一實施例的電子裝置更包括與第二匯流排182耦接的一快閃記憶體控制器24及一顯示控制器26,快閃記憶體控制器24用以耦接該電子裝置外的一快閃記憶體240,顯示控制器26用以耦接該電子裝置外的一顯示裝置260。也就是說,該電子裝置可以耦接該快閃記憶體240實現外部存取功能,可以耦接該顯示裝置260實現顯示功能。
系統控制單元22透過第一匯流排181與處理器14耦接。系統控制單元22可以管理系統資源,控制處理器14與其他元件的活動。於另一實施例中,系統控制單元22也可整合為處理器14中的元件。具體地,系統控制單元22可以控制處理器14的時脈或操作頻率。本揭示中,利用系統控制單元22來將處理器14的時脈降低或完全關閉而使處理器14從該工作模式進入該省電模式, 利用系統控制單元22來將處理器14的時脈提高為正常時脈而使處理器14從該省電模式進入該工作模式。另一方面,加速器16執行該運算期間,可以透過韌體驅動程式向處理器14發出等待中斷操作(WFI)的指令,使得處理器14進入閒置狀態。
第3圖顯示本揭示之電子裝置的第二實施例的示意圖。相較於第一實施例,第二實施例中僅配置一記憶體12,其透過第一匯流排181與處理器14和加速器16耦接。在第二實施例中,該數據資料和該運算資料均存放於記憶體12中。具體地,處理器14將從傳輸介面傳來的原生資料或對該原生資料進一步處理而生成的數據資料,透過第一匯流排181儲存於記憶體12中。加速器16從記憶體12中讀取該數據資料,並對該數據資料執行該運算而生成運算資料,所生成的運算資料透過第一匯流排181儲存於記憶體12中。當加速器16與處理器14同時對記憶體12存取時,加速器16具有較處理器14高之優先權,也就是加速器16可以優先存取記憶體12,這樣可以確保加速器16的運算效率。
第4圖顯示本揭示之電子裝置的第三實施例的示意圖。相較於第二實施例,第三實施例中記憶體12直接與加速器16耦接,加速器16再透過第一匯流排181與處理器14耦接。第三實施例中,處理器14與加速器16共享記憶體12,處理器14透過加速器16將該數據資料存放到記憶體12中,加速器16對該數據資料執行該運算而生成的運算資料也存放到記憶體12中,處理器14可以透過加速器16從記憶體12中讀取該運算資料。對記憶體12來說,加 速器16具有較處理器14高的優先存取權。
第5圖顯示本揭示之電子裝置的第四實施例的示意圖。相較於第三實施例,第四實施例中加速器16經由第二匯流排182與處理器14耦接,第二匯流排182的傳輸速度低於第一匯流排181的傳輸速度。也就是說,加速器16可以配置成與外圍的匯流排連接,而不限於與處理器14連接的高速匯流排連接。第四實施例中,處理器14與加速器16可以整合為一系統單晶片(SoC)。
第6圖顯示本揭示之神經網路加速系統的示意圖。本揭示之神經網路加速系統包含一系統控制晶片60及一加速器16。系統控制晶片60包括一處理器14、一第一記憶體121、一第一匯流排181、一第二匯流排182及一數據傳輸介面10。系統控制晶片60可為一系統單晶片。加速器16以外掛的方式連接系統控制晶片60。具體地,加速器16連接系統控制晶片60中的外圍匯流排,即第二匯流排182。加速器16可以自帶記憶體,即一第二記憶體122。
請參閱第7圖,本揭示的加速器16包括一控制器72、一運算器74、一讀寫器76及一暫存器78。讀寫器76耦接至記憶體12,加速器16透過讀寫器76可存取記憶體12。例如,加速器16透過讀寫器76讀取儲存於記憶體12中的原生資料或數據資料,所生成的運算資料透過讀寫器76儲存到記憶體12中。讀寫器76可以透過匯流排18與處理器14耦接,這樣處理器14可以透過加速器16中的讀寫器76將原生資料或數據資料儲存到記憶體12中,也可以透過讀寫器76讀取儲存於記憶體12中的運算資料。
暫存器78透過匯流排18與處理器14耦接。與暫存器78耦接的匯流排18和與讀寫器76耦接的匯流排18可以是不同的匯流排,也就是,暫存器78與讀寫器76透過不同的匯流排與處理器14耦接。處理器14在執行例如神經網路應用程式時及韌體驅動程式執行時,可將一些參數寫入暫存器78中,例如數據寬度、數據深度、核(kernel)寬度、核深度、迴圈次數等相關於神經網路運算的參數。暫存器78也可以儲存一些控制邏輯參數,例如參數CR_REG中包含go位元、relu位元、pave位元和pmax位元,控制器72根據go位元決定是否進行神經網路運算,根據relu位元、pave位元和pmax位元,決定該神經網路運算是否包含線性整流單元運算、平均池化運算和最大池化運算。
控制器72與暫存器78、讀寫器76及運算器74耦接,用以根據暫存器78中儲存的參數來進行操作,控制讀寫器76是否存取記憶體12,並控制運算器74的運算流程。控制器72可以實現為有限狀態機(Finite-State Machine,FSM)、微控制器(Micro Control Unit,MCU)或其他類型的控制器。
運算器74可以執行相關於神經網路的運算,例如卷積運算,線性整流單元運算、平均池化運算及最大池化運算等。基本上,運算器74包含一乘數累加器(Multiply-accumulator),可以進行對每一筆資料乘以一個權重係數後累加的運算。在本揭示中,運算器74依不同的應用而有所不同,例如可以是加法器、乘法器、累加器等各種運算邏輯或是其組合。運算器74可支援的 數據類型包含但不限於無號整數(unsigned integer)、有號整數(signed integer)及浮點數(floating point)。
第8圖顯示本揭示之加速器的細部結構圖。如第8圖所示,讀寫器76包含一仲裁邏輯761,加速器16和處理器14要對記憶體12進行存取時,會發出一存取請求至仲裁邏輯761。在一實施例中,當仲裁邏輯761同時接收到加速器16和處理器14發出的對記憶體12的存取請求時,允許加速器16優先存取記憶體12,也就是說,加速器16相較於處理器14,對記憶體12來說具有優先存取權。
運算器74包含一乘法陣列82、一加法器84及一前瞻加法器(carry-lookahead adder,CLA adder)86。在進行運算過程中,運算器74先從記憶體12讀取數據資料及對應的權重,該數據資料可為神經網路中第零層的輸入或上一層的輸出。接著,該數據資料和權重以位元表達式的形式輸入到乘法陣列82進行乘法運算,例如數據資料以a1a2表示,權重以b1b2表示,乘法陣列82計算得出a1b1、a1b2、a2b1和a2b2。加法器84用以計算各乘積的總和,即D1=a1b1+a1b2+a2b1+a2b2,而後輸出到前瞻加法器86。利用乘法陣列82和加法器84可以將各乘積一次加總,避免了中間的計算,減少記憶體12的存取時間。接著,對下一筆數據資料及對應的權重進行相同的運算,得出D2。前瞻加法器86用以對加法器84輸出的數值進行加總,亦即S1=D1+D2,並將加總後的數值作為輸入與加法器84輸出的數值進行累加,例如S2=S1+D3。最後,前瞻加法器86將累加後的數值與從記憶體12讀出的偏差值進行加總, 例如Sn+b,b為偏差值。
本揭示的運算器74在運算過程中不用將中間的計算結果存入記憶體12,再從記憶體12中讀取進行下一步計算,因此可以避免頻繁地存取記憶體12,減少運算時間,提升運算效率。
第9圖顯示根據本揭示的一種適用於神經網路運算的加速方法。請配合上文描述的電子裝置的具體結構,一併參閱第9圖,本揭示的適用於神經網路運算的加速方法包含如下步驟:
步驟S90:接收一數據資料。該數據資料是要透過加速器16進行運算的資料。舉例來說,利用感測器獲取感測數據,如ECG資料。該感測數據可以作為該數據資料。該感測數據也可被進一步處理,如濾波、降噪及/或頻域轉換等處理,而形成該數據資料。
步驟S92:利用一處理器14執行一神經網路應用程式。在接收到該數據資料後,處理器14可以根據一中斷請求,開始執行該神經網路應用程式。
步驟S94:利用該神經網路應用程式的執行,將該數據資料儲存至一記憶體12中,並對一加速器16發出一第一訊號。在此步驟中,該神經網路應用程式將該數據資料、權重及偏差值寫入記憶體12中,該神經網路應用程式可以透過韌體驅動程式來完成這些複製動作。韌體驅動程式可以進一步將運算需要的參數(如指標、數據寬度、數據深度、核寬度、核深度及運算的類型等)複製到暫存器78中。當數據已準備就緒,韌體驅動程式可對 加速器16發出第一訊號以使加速器16開始進行運算,該第一訊號為運算請求訊號。例如,韌體驅動程式可將加速器16之暫存器78中CR_REG所包含go位元設定為真,以開始神經網路運算。
此時,韌體驅動程式可向處理器14發出等待中斷操作(WFI)的指令,使得處理器14進入閒置狀態,達到省電的作用。亦即,加速器16在進行運算時,處理器14保持低耗電狀態。處理器14在閒置狀態下接收到中斷操作時,可以回復到工作模式。
韌體驅動程式也可向系統控制單元22發出訊號,系統控制單元22根據該訊號可選擇性地來將處理器14的時脈降低或完全關閉而使處理器14從工作模式進入省電模式。舉例來說,韌體驅動程式可以透過判斷要求執行該神經網路運算的次數是否大於一閾值,來決定是否降低或關閉處理器14時脈。
步驟S96:利用該加速器16開始進行一神經網路運算,以產生一運算資料。舉例來說,當加速器16之控制器72偵測到暫存器78之CR_REG的go位元為真時,控制器72控制運算器74對該數據資料進行神經網路運算,以產生運算資料。在此,該神經網路運算可包含卷積運算,線性整流單元運算、平均池化運算及最大池化運算等。運算器74可支援的數據類型包含但不限於無號整數、有號整數及浮點數。
步驟S98:完成該神經網路運算,利用該加速器16發出一第二訊號至該處理器14。當完成該神經網路運算時,韌體驅動程式可將暫存器78之CR_REG的go位元設為假,以結束該神經網 路運算。此時,韌體驅動程式可以通知系統控制單元22將處理器14時脈回復到正常時脈,加速器16向處理器14發出中斷請求,使得處理器14從閒置狀態回復到工作模式。
步驟S100:利用該處理器14繼續執行該神經網路應用程式。處理器14回復到工作模式後,繼續執行該神經網路應用程式。
步驟S102:判斷是否需要繼續該加速器16運作,若是,該處理器14向該加速器16發出一第三訊號,並回到步驟S94,若否,則結束運算。該神經網路應用程式判斷是否有待處理的數據資料需要加速器16進行運算。若有,則向加速器16發出該第三訊號,將待處理的數據資料複製到記憶體12中以便進行神經網路運算,該第三訊號為運算請求訊號。若無,則結束該運算。
本揭示已用較佳實施例揭露如上,然其並非用以限定本揭示,本揭示所屬技術領域中具有通常知識者,在不脫離本揭示之精神和範圍內,當可作各種之更動與潤飾,因此本揭示之保護範圍當視後附之申請專利範圍所界定者為準。

Claims (28)

  1. 一種電子裝置,包含:一數據傳輸介面,用以傳輸一數據資料;一記憶體,用以儲存該數據資料;一處理器,用以執行一應用程式;以及一加速器,經一匯流排與該處理器耦接,並依從該處理器傳來的一運算請求,自該記憶體中讀取該數據資料,對該數據資料執行一運算以產生一運算資料,儲存於該記憶體中。
  2. 如申請專利範圍第1項所述之電子裝置,其中該加速器執行該運算期間,該處理器處於一省電狀態。
  3. 如申請專利範圍第1項所述之電子裝置,其中該記憶體包括一第一記憶體,該第一記憶體直接連接於該加速器。
  4. 如申請專利範圍第3項所述之電子裝置,其中該記憶體包括一第二記憶體,該第二記憶體經該匯流排與該處理器耦接。
  5. 如申請專利範圍第4項所述之電子裝置,其中該數據資料存於該第一記憶體中,該運算資料存於該第二記憶體中。
  6. 如申請專利範圍第4項所述之電子裝置,其中該數據資料與該運算資料存於該第一記憶體中,該第二記憶體中存放與該應用程式相關之複數個資料。
  7. 如申請專利範圍第1項所述之電子裝置,其中該記憶體經由匯流排與該處理器耦接,該數據資料與該運算資料均存放於該 記憶體中,當該加速器與該處理器同時對該記憶體存取時,該加速器具有較該處理器高之優先權。
  8. 如申請專利範圍第1項所述之電子裝置,其中該匯流排包括一第一匯流排及一第二匯流排,該第一匯流排之傳輸速度高於該第二匯流排之傳輸速度,該處理器與該加速器耦接該第一匯流排。
  9. 如申請專利範圍第8項所述之電子裝置,其中該加速器經由該第二匯流排與該處理器耦接。
  10. 如申請專利範圍第1項所述之電子裝置,其中該電子裝置更包括一快閃記憶體控制器,用以耦接該電子裝置外之一快閃記憶體。
  11. 如申請專利範圍第1項所述之電子裝置,其中該電子裝置更包括一顯示控制器,用以耦接該電子裝置外之一顯示裝置。
  12. 如申請專利範圍第1項所述之電子裝置,其中該電子裝置更包括一系統控制單元,該數據傳輸介面設置於該系統控制單元內。
  13. 如申請專利範圍第1項所述之電子裝置,其中該處理器包括一工作模式及一省電模式,當該加速器執行該運算時,該處理器處於該省電模式。
  14. 如申請專利範圍第1項所述之電子裝置,其中該運算包括卷積運算,線性整流單元運算及最大池化運算。
  15. 如申請專利範圍第1項所述之電子裝置,其中該加速器包括:一控制器;一暫存器,存放該運算所需之複數個參數;一運算器,用來執行該運算;以及一讀寫器,用來讀寫該記憶體。
  16. 如申請專利範圍第15項所述之電子裝置,其中該運算器包括一乘數累加器。
  17. 如申請專利範圍第15項所述之電子裝置,其中該讀寫器從該記憶體中讀取該數據資料及對應的權重,並將該運算資料儲存到該記憶體中。
  18. 一種適用於將一記憶體中的一數據資料進行一神經網路運算的加速器,包含:一暫存器,用於儲存與該神經網路運算相關的複數個參數;一讀寫器,用於從該記憶體中讀取該數據資料;一控制器,與該暫存器和該讀寫器耦接;以及一運算器,與該控制器耦接,該控制器依據該等參數,控制該運算器對該數據資料執行該神經網路運算,並產生一運算資料。
  19. 如申請專利範圍第18項所述之加速器,其中該讀寫器包含一仲裁邏輯,用以接收對該記憶體的一存取請求,並允許該加速器優先存取該記憶體。
  20. 如申請專利範圍第18項所述之加速器,其中該運算器包含:一乘法陣列,用以接收該數據資料及對應的權重,並對該數據資料及該權重進行乘法運算;一加法器,用以計算乘積的總和;以及一前瞻加法器,用以對該加法器輸出的數值進行加總,並將加總後的數值作為輸入與該加法器輸出的數值進行累加。
  21. 如申請專利範圍第18項所述之加速器,其中該運算資料直接傳輸到該記憶體,並儲存於該記憶體中。
  22. 如申請專利範圍第18項所述之加速器,其中該運算資料直接傳輸到不同於該記憶體之另一記憶體,並儲存於該另一記憶體中。
  23. 一種適用於神經網路運算的加速方法,包含:(a)接收一數據資料;(b)利用一處理器執行一神經網路應用程式;(c)利用該神經網路應用程式的執行,將該數據資料儲存至一記憶體中,並對一加速器發出一第一訊號;(d)利用該加速器開始進行一神經網路運算,以產生一運算資料;(e)完成該神經網路運算,利用該加速器發出一第二訊號至該處理器;(f)利用該處理器繼續執行該神經網路應用程式;以及 (g)判斷是否需要繼續該加速器運作,若是,該處理器向該加速器發出一第三訊號,並回到步驟(d),若否,則結束運算。
  24. 如申請專利範圍第23項所述之加速方法,其中步驟(d)包括:向該處理器發出一等待中斷操作的指令,使得該處理器進入一閒置狀態。
  25. 如申請專利範圍第23項所述之加速方法,其中在步驟(e)中,該第二訊號代表該加速器向該處理器發出的一中斷操作。
  26. 如申請專利範圍第23項所述之加速方法,其中步驟(d)更包括:發出一第四訊號至一系統控制單元,以降低一處理器時脈,同時該處理器進入一省電模式。
  27. 如申請專利範圍第26項所述之加速方法,其中步驟(e)包括:發出一第五訊號至該系統控制單元,以回復該處理器時脈,同時該處理器回復到一工作模式。
  28. 一種神經網路加速系統,包含:一系統控制晶片,包括:一數據傳輸介面,用以傳輸一數據資料;一第一記憶體;以及一處理器,用以執行一應用程式,經一匯流排與該記憶體及該數據傳輸介面耦接;以及 一加速器,連接到該系統控制晶片,該加速器包括:一控制器;一第二記憶體,用以儲存該數據資料;一讀寫器,用來讀寫該第二記憶體;一運算器,用來對該數據資料該執行一神經網路運算;以及一暫存器,存放與該神經網路運算相關的複數個參數。
TW106142473A 2017-12-01 2017-12-01 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 TW201926147A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
TW106142473A TW201926147A (zh) 2017-12-01 2017-12-01 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統
US16/203,686 US20190171941A1 (en) 2017-12-01 2018-11-29 Electronic device, accelerator, and accelerating method applicable to convolutional neural network computation
CN201811458625.7A CN109871952A (zh) 2017-12-01 2018-11-30 电子装置、加速器、神经网络的加速方法及加速系统
CN202310855592.4A CN117252248A (zh) 2017-12-01 2018-11-30 穿戴式电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106142473A TW201926147A (zh) 2017-12-01 2017-12-01 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統

Publications (1)

Publication Number Publication Date
TW201926147A true TW201926147A (zh) 2019-07-01

Family

ID=66659267

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106142473A TW201926147A (zh) 2017-12-01 2017-12-01 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統

Country Status (3)

Country Link
US (1) US20190171941A1 (zh)
CN (2) CN117252248A (zh)
TW (1) TW201926147A (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3994621A1 (en) * 2019-07-03 2022-05-11 Huaxia General Processor Technologies Inc. Instructions for operating accelerator circuit
US11004500B2 (en) 2019-08-28 2021-05-11 Micron Technology, Inc. Memory with artificial intelligence mode
CN110659733A (zh) * 2019-09-20 2020-01-07 上海新储集成电路有限公司 一种加速神经网络模型预测过程的处理器系统
CN112784973A (zh) * 2019-11-04 2021-05-11 北京希姆计算科技有限公司 卷积运算电路、装置以及方法
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US20210320967A1 (en) * 2020-04-09 2021-10-14 Micron Technology, Inc. Edge Server with Deep Learning Accelerator and Random Access Memory
US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
US11461651B2 (en) 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11887647B2 (en) * 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
US11720417B2 (en) 2020-08-06 2023-08-08 Micron Technology, Inc. Distributed inferencing using deep learning accelerators with integrated random access memory
CN112286863B (zh) * 2020-11-18 2023-08-18 合肥沛睿微电子股份有限公司 处理暨存储电路
US20220188606A1 (en) * 2020-12-14 2022-06-16 Micron Technology, Inc. Memory Configuration to Support Deep Learning Accelerator in an Integrated Circuit Device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024588B2 (en) * 2007-11-28 2011-09-20 Mediatek Inc. Electronic apparatus having signal processing circuit selectively entering power saving mode according to operation status of receiver logic and related method thereof
US8131659B2 (en) * 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
WO2011004219A1 (en) * 2009-07-07 2011-01-13 Nokia Corporation Method and apparatus for scheduling downloads
CN102402422B (zh) * 2010-09-10 2016-04-13 北京中星微电子有限公司 处理器组件及该组件内存共享的方法
CN202281998U (zh) * 2011-10-18 2012-06-20 苏州科雷芯电子科技有限公司 一种标量浮点运算加速器
CN103176767B (zh) * 2013-03-01 2016-08-03 浙江大学 一种低功耗高吞吐的浮点数乘累加单元的实现方法
US10591983B2 (en) * 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
EP3035249B1 (en) * 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10234930B2 (en) * 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US10373057B2 (en) * 2015-04-09 2019-08-06 International Business Machines Corporation Concept analysis operations utilizing accelerators
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN109993285B (zh) * 2016-01-20 2020-02-07 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法

Also Published As

Publication number Publication date
CN117252248A (zh) 2023-12-19
CN109871952A (zh) 2019-06-11
US20190171941A1 (en) 2019-06-06

Similar Documents

Publication Publication Date Title
TW201926147A (zh) 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統
US5452434A (en) Clock control for power savings in high performance central processing units
US9829956B2 (en) Approach to power reduction in floating-point operations
JP2716363B2 (ja) 電子回路の電力消費の低減回路及び方法
BRPI0807951B1 (pt) Processador de multimídia multi-encadeado sob demanda
CN104115093A (zh) 包括多个处理元件之间的功率和性能平衡的用于能效和节能的方法、装置和系统
JPS62229359A (ja) 情報処理装置
US11693466B2 (en) Application processor and system on chip
CN111400986B (zh) 一种集成电路计算设备及计算处理系统
US20140195737A1 (en) Flush Engine
WO2022227671A1 (zh) 处理器微架构、SoC芯片及低功耗智能设备
CN113407352A (zh) 用于处理任务的方法、处理器、设备和可读存储介质
US9437172B2 (en) High-speed low-power access to register files
JP2009070389A (ja) 処理装置のためのコントローラ
US10503473B1 (en) Floating-point division alternative techniques
JP2023505459A (ja) 異種プロセッサ間のタスク遷移の方法
Moon et al. A 32-bit RISC microprocessor with DSP functionality: Rapid prototyping
US10564931B1 (en) Floating-point arithmetic operation range exception override circuit
US20210357227A1 (en) Risc-v isa based micro-controller unit for low power iot and edge computing applications
US9292285B2 (en) Interpolation implementation
US20240103601A1 (en) Power management chip, electronic device having the same, and operating method thereof
WO2023225991A1 (en) Dynamic establishment of polling periods for virtual machine switching operations
WO2009004628A2 (en) Multi-core cpu
KR20240025227A (ko) Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법
Francisco Lorenzon et al. Fundamental Concepts