TW202024922A - 存取張量資料的方法和裝置 - Google Patents

存取張量資料的方法和裝置 Download PDF

Info

Publication number
TW202024922A
TW202024922A TW108146284A TW108146284A TW202024922A TW 202024922 A TW202024922 A TW 202024922A TW 108146284 A TW108146284 A TW 108146284A TW 108146284 A TW108146284 A TW 108146284A TW 202024922 A TW202024922 A TW 202024922A
Authority
TW
Taiwan
Prior art keywords
memory
buffer memory
cache line
data item
data
Prior art date
Application number
TW108146284A
Other languages
English (en)
Other versions
TWI743627B (zh
Inventor
孫晨
王振江
陳亮
淩坤
Original Assignee
大陸商北京地平線機器人技術研發有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商北京地平線機器人技術研發有限公司 filed Critical 大陸商北京地平線機器人技術研發有限公司
Publication of TW202024922A publication Critical patent/TW202024922A/zh
Application granted granted Critical
Publication of TWI743627B publication Critical patent/TWI743627B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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

存取張量資料的方法和裝置
本公開總體上關於人工智能的技術領域,並且具體地關於一種存取張量資料的方法和裝置。
已經設計出各種人工智能芯片(AI芯片),專門用於處理人工智能應用中的大量計算任務。
隨著人工智能技術的應用領域的不斷擴展,對人工智能芯片的性能方面的要求也越來越高。
儲存性能(包括資料的存取次數、帶寬等)始終是人工智能芯片的性能的主要瓶頸之一,並且始終期望能够進一步改善人工智能芯片的資料流設計,使得人工智能芯片能够更高效率地存取資料。
根據本公開的一個方面,提供了一種存取張量資料的方法。該方法可以包括:確定第一記憶體的第一行位址,其中,期望從張量資料的邏輯結構中存取的至少一個第一資料項儲存在第一記憶體的第一行位址處;將第一記憶體中的第一行位址處的資料項複製到第一緩衝記憶體的第一緩存行中;將第一緩衝記憶體的第一緩存行中的每個第一資 料項移動到第二緩衝記憶體的至少第一緩存行中的相應位置處,其中,每個第一資料項在第二緩衝記憶體的至少第一緩存行中的相應位置可以取决於在第二記憶體中分配給該第一資料項的目標位置;以及將第二緩衝記憶體的第一緩存行中的資料項儲存到第二記憶體中的對應的目標位置處。
根據本公開的另一個方面,還提供了一種存取張量資料的裝置。該裝置可以包括第一緩衝記憶體、第二緩衝記憶體和控制器,其中,控制器可以耦接到第一記憶體、第二記憶體、第一緩衝記憶體和第二緩衝記憶體並且可以被配置為在被啟動時根據指令至少執行上述方法。
根據本公開的另一個方面,還提供了一種電腦可讀取的非臨時性儲存介質,在其上儲存有程式指令。所儲存的程式指令可以在被處理器或控制器執行時執行上述方法。
在根據本公開的實施例的方法和裝置中,通過第一緩衝記憶體,使得能够按照資料對齊的方式高效率地從第一記憶體中讀取資料;通過第二緩衝記憶體,使得能够按照期望格式高效率地調整期望存取的資料項,然後能够按照資料對齊的方式高效率地向第一記憶體中寫入資料。由此,通過根據本公開的實施例的方法和/或裝置能够提高人工智能芯片內部的資料存取效率,進而提高人工智能芯片的性能並降低人工智能芯片的功耗。
另外,根據本公開的實施例的方法和/或裝置還能够支持流水線處理,從而進一步提高人工智能芯片內部的 資料存取效率,並進一步提高人工智能芯片的性能並降低人工智能芯片的功耗。
通過結合附圖對本公開實施例進行更詳細的描述,本公開的上述以及其他目的、特徵和優勢將變得更加明顯。附圖用來提供對本公開實施例的進一步理解,並且構成說明書的一部分,與本公開實施例一起用於解釋本公開,並不構成對本公開的限制。在附圖中,相同的參考標號通常代表相同或相似的部件或步驟。
圖1示出根據本公開的實施例的系統的示例。
圖2示出根據本公開的實施例的片上記憶體的示例。
圖3示出根據本公開的實施例的方法的示例。
圖4示出根據本公開的實施例的方法的示例。
圖5示出根據本公開的實施例的方法的示例。
圖6示出根據本公開的實施例的方法的示例。
圖7示出根據本公開的實施例的方法的示例。
圖8示出根據本公開的實施例的方法的示例。
圖9示出根據本公開的實施例的方法的示例。
圖10示出根據本公開的實施例的方法的示例。
圖11示出根據本公開的實施例的方法的示例。
圖12示出根據本公開的實施例的方法的示例。
圖13示出根據本公開的實施例的方法的示例。
圖14示出根據本公開的實施例的方法的示例。
圖15示出根據本公開的實施例的方法的示例。
圖16示出根據本公開的實施例的方法的示例。
圖17示出根據本公開的實施例的裝置的示例。
下面,將參考附圖詳細地描述根據本公開的示例實施例。顯然,所描述的實施例僅僅是本公開的一部分實施例,而不是本公開的全部實施例,應理解,本公開不受這裏描述的示例實施例的限制。
概述
由於成本、芯片尺寸等不同方面的原因,在人工智能芯片中,片上記憶體的容量通常十分有限(例如,通常為幾百KB至幾MB),往往無法儲存或緩存要處理的完整張量資料。另外,諸如卷積加速內核等部件通常也只包括有限數量的乘法累加器。硬體資源的限制導致人工智能芯片通常每次只能處理整個張量資料中的一部分資料項。
出於諸如硬體資源的限制、期望能够减少例如資料後處理中的操作量、期望能够融合地處理人工神經網絡的多個層的運算等不同方面的原因和需求,往往需要例如將完整的張量資料拆分成多個部分,以便分別儲存(例如,連續地儲存多個部分張量資料)或者每次將完整張量資料中的一個部分資料項提供給人工智能芯片進行處理。
另一方面,由於張量的拆分處理或者其他處理需求,還可能需要拼接或合併一個或多個張量資料。例如,對卷積加速內核每次輸出的局部張量進行拼接或合併,以便獲得最終完整的張量資料。
為此,在一種處理方式中,可以借助於人工智能芯片中的處理器或控制器的軟體處理能力,使處理器或控制器根據預定的指令序列執行用於控制張量資料的拆分/合併/調整的處理邏輯。例如,這樣的處理邏輯可以包括:將完整張量資料的資料項(由於硬體資源的限制,通常是部分資料項)從片外記憶體讀取到片上記憶體中;然後,針對讀取到片上記憶體中的資料項執行拆分/合併處理。
然而,這樣的處理方式增加了人工智能芯片的處理器或控制器的工作負擔,並且對人工智能芯片的處理器或控制器的其他控制操作造成額外的延遲。而且,這樣的處理方式無法充分地利用有限的硬體資源,例如,無法通過流水線的方式執行。
另外,由於片上記憶體的容量限制,處理器或控制器在執行上述處理邏輯的過程中可能需要控制在片外記憶體與片上記憶體之間進行額外的多次資料交換/傳輸。例如,處理器或控制器可能需要控制將一些中間處理結果臨時輸出到片外記憶體中,以便確保片上記憶體中的剩餘容量足以支持上述處理過程。這對長人工智能芯片中的其他操作或處理造成進一步的延遲,並且顯著地降低人工智能芯片的性能和增加人工智能芯片的功耗。
示例性系統
根據本公開的實施例的方法和裝置旨在通過適當的硬體結構和改進的資料流控制,直接從加載到片上記憶體中的張量資料中、按照期望的資料項布置方式獲取期望被存取的資料部分,以便降低人工智能芯片的處理器或控制器的工作負擔,减少片外記憶體與片上記憶體之間的資料交換/傳輸次數,充分地利用有限的硬體資源,例如能够通過流水線式的方式提高效率,從而提高人工智能芯片的性能並降低人工智能芯片的功耗。
雖然根據本公開的實施例的方法和裝置是結合人工智能芯片的應用場景下描述的,但是根據本公開的實施例的方法和裝置實際上可以適用於任何一種如下場景或系統,即,需要在大容量的低速儲存系統(例如,人工智能芯片的片外記憶體)與小容量的高速儲存系統(例如,人工智能芯片的片內記憶體)之間進行資料交換,並且可能期望小容量的高速儲存系統中的資料項具有期望的排布方式。
為了便於描述根據本公開的實施例的方法和裝置,首先在圖1中示出能够應用根據本公開的實施例的方法和裝置的系統的示例。
如圖1所示,該示例系統可以包括在根據本公開的實施例的方法和裝置中涉及的一些部件/模組/電路/單元/元件,例如控制器CON、第一緩衝記憶體BUF1和第二緩衝記憶體BUF2等。
圖1的示例中的第一記憶體SRAM1和第二記憶體SRAM2可以形成根據本公開的實施例的系統中的高速儲存系統,或者作為系統中的高速儲存系統的一部分。
在不同的實施例中,高速儲存系統中的第一記憶體SRAM1和第二記憶體SRAM2中的每一個可以是能够支持二維資料的存取和/或資料的二維存取的靜態隨機存取儲存部件/模組或高速緩衝儲存部件/模組。
在一個實施例中,第一記憶體SRAM1和第二記憶體SRAM2中的每一個可以包括多個一維靜態隨機存取記憶體(例如,常規的線性靜態隨機存取記憶體),其中,各個一維靜態隨機存取記憶體的同一位址處的各個儲存單元可以構成第一記憶體SRAM1或第二記憶體SRAM2中的一個儲存行。
例如,第一記憶體SRAM1可以包括4個一維靜態記憶體並且每個一維靜態記憶體中的每個儲存單元可以為32比特。相應地,在該示例中,第一記憶體SRAM1的一個儲存行可以儲存128比特的資料,或者說第一記憶體SRAM1的儲存寬度為128比特。
在另一個實施例中,第一記憶體SRAM1和第二記憶體SRAM2中的每一個也可以是二維記憶體,並直接支持二維資料的存取和/或資料的二維存取。
雖然在圖1中將第一記憶體SRAM1和第二記憶體SRAM2示為分開設置的兩個儲存部件/模組,但是第一記憶體SRAM1和第二記憶體SRAM2也可以是能够支持二 維資料存取的同一個儲存部件/模組(該儲存部件/模組例如可以包括多個一維靜態隨機存取記憶體或一個或多個二維記憶體以便支持二維資料的存取和/或資料的二維存取)中的兩個不同的部分。
例如,在人工智能芯片的情况下,圖1的示例中的第一記憶體SRAM1和第二記憶體SRAM2可以是兩塊片上靜態隨機存取記憶體或片上高速緩衝記憶體,也可以是同一個片上記憶體(可以是包括一個或多個支持二維資料的存取和/或資料的二維存取的儲存部件的儲存系統)的兩個部分。
例如,如圖2所示,第一記憶體SRAM1和第二記憶體SRAM2可以分別對應於根據片上記憶體系統MEM確定的儲存區域中的左上角的部分(即,與行位址R0至Rm且列位址C0至Cp相對應的儲存區域/儲存部分)和右下角的部分(即,與行位址Rn至末尾行位址且列位址Cq至末尾列位址相對應的儲存區域/儲存部分)。
另外,根據不同的實施例,可以從高速儲存系統中固定地將兩個儲存部件或兩個儲存區域用作第一記憶體SRAM1和第二記憶體SRAM2,也可以在系統的運行之前或運行過程中,例如由控制器CON根據預定的程式指令動態地確定兩個儲存部件或兩個儲存區域作為第一記憶體SRAM1和第二記憶體SRAM2。
在一個實施例中,圖1中的粗線框中的部分(包括控制器CON、第一記憶體SRAM1、第二記憶體SRAM2、 第一緩衝記憶體BUF1和第二緩衝記憶體BUF2)可以實施在一個芯片上並且形成用於存取張量資料的片上系統。例如,在人工智能芯片的情况下,圖1中的粗線框中的部分可以實施在人工智能芯片上,並且用於高效率地存取張量資料。相應地,記憶體DDR可以是動態隨機存取記憶體,並且通常被稱為片外記憶體。
控制器CON可以根據預定的指令序列(例如,可執行的程式指令序列)或者響應於從外部輸入的指令,執行邏輯處理和/或控制。
為了簡潔,在圖1中僅例示與儲存有關的方面,而省略了諸如用於指令時序控制的定時控制器、用於指令中斷控制的中斷控制器、專門設計用於高效率地執行預定運算(例如,卷積神經網絡中的卷積運算、池化運算等)的運算加速內核、用於實現部件之間的互聯的交叉開關(Crossbar)和/或多路選擇器、協處理器、專門用於控制存取片外記憶體中的資料的片外資料傳輸管理器等其他可能的部件/模組/電路/單元/元件。
根據不同的實施例,圖1中的控制器CON可以對應於前述的某個專門用於控制資料存取的控制器(例如,記憶體存取控制器),也可以包括前述省略的一個或多個部件/模組/電路/單元/元件或者實現前述省略的一個或多個部件/模組/電路/單元/元件的相應功能。
例如,在人工智能芯片的情况下,控制器CON可以是例如基於圖形處理器(GPU)、ARM處理器、現場 可編程門陣列(FPGA)等構建的處理器或控制器,並且可以根據針對預先設計的人工神經網絡而預先編譯出的可執行指令序列,執行例如除了人工神經網絡中的運算本身之外的其他邏輯處理,和/或向人工智能芯片中的其他部件或電路(例如,資料存取控制器、卷積加速內核等)發出控制指令和相關參數,以使芯片中的其他部件或電路能够響應於所接收的指令而執行相應的操作,例如,存取片外記憶體和/或片內記憶體中的資料、啟動乘法累加器以執行卷積運算等。
在另外的示例中,在人工智能芯片的情况下,控制器CON也可以是芯片上專門用於控制存取片外記憶體和/或片內記憶體的存取控制器或資料傳輸控制器等,例如基於FPGA開發的精簡指令集計算(RISC)軟處理器內核等,並且可以單獨地控制對片外記憶體和/或片內記憶體中的資料的存取操作,也可以例如協助主處理器或響應來自主處理器的指令,控制對片外記憶體和/或片內記憶體中的資料的存取操作。
第一緩衝記憶體BUF1和第二緩衝記憶體BUF2可以是高速緩衝記憶體或靜態隨機存取記憶體,其資料存取速率可以與包括第一記憶體SRAM1和第二記憶體SRAM2的高速儲存系統的資料存取速率相匹配。
在本文中,“相匹配”可以意味著第一緩衝記憶體BUF1、第二緩衝記憶體BUF2、第一記憶體SRAM1和第二記憶體SRAM2的資料存取速率可以相同或相近。例 如,第一緩衝記憶體BUF1、第二緩衝記憶體BUF2、第一記憶體SRAM1和第二記憶體SRAM2的資料存取速率的差異可以在預定的閾值以下,例如,可以在公差允許的範圍內並且因此而在實際的應用中可以被忽略。
在一個實施例中,第一緩衝記憶體BUF1可以包括一個或多個緩存行,第二緩衝記憶體BUF2可以包括兩個或多個緩存行。
在另一個實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括至少兩個緩存行,從而能够確保資料存取過程中的處理效率。
在另外的實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括兩個緩存行,從而能够通過低成本的硬體結構確保資料存取過程中的處理效率。
在另外的實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以是按照緩存行循環尋址的緩衝記憶體,從而能够支持無邊界的儲存空間,並且能够簡化儲存控制。
在另一個實施例中,可以使第一緩衝記憶體BUF1的每個緩存行的容量與第一記憶體SRAM1中的具有相同行位址的多個儲存單元的總容量(即,第一記憶體SRAM1的儲存寬度)相同,並且使第二緩衝記憶體BUF2的每個緩存行的容量與第二記憶體SRAM2中的具有相同行位址的多個儲存單元的總容量(即,第二記憶體SRAM2 的儲存寬度)相同,從而能够極大地簡化設計並降低控制邏輯的複雜度。
進一步地,第一緩衝記憶體BUF1的每個緩存行的容量與第二緩衝記憶體BUF2的每個緩存行的容量相同,或者,第一緩衝記憶體BUF1的每個緩存行的容量、第二緩衝記憶體BUF2的每個緩存行的容量、第一記憶體SRAM1的儲存寬度和第二記憶體SRAM2的儲存寬度相同,從而確保能够簡單地適應允許動態確定第一記憶體SRAM1和第二記憶體SRAM2的情况。
為了簡單,將在如下示例配置的情况下描述本公開的的實施例或示例:控制器CON執行預定的指令序列,並且控制先將來自記憶體DDR的至少一部分資料、或者來自系統內的其他運算部件(例如,卷積加速內核)且需要輸出給記憶體DDR的至少一部分資料儲存在第一記憶體SRAM1中,然後控制按照第一記憶體SRAM1→第一緩衝記憶體BUF1→第二緩衝記憶體BUF2→第二記憶體SRAM2的資料流,使第一記憶體SRAM1中的部分資料項按照期望的方式儲存到第二記憶體SRAM2中,其中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括按照緩存行循環尋址的兩個緩存行。
如前文所述,第一記憶體SRAM1和第二記憶體SRAM2也可以是動態確定的。例如,控制器CON可以在系統的運行之前或運行過程中根據預定的程式指令動態地確定資料流,使得在實際運行過程中,資料的流向實際上可以 包括第一記憶體SRAM1→第一緩衝記憶體BUF1→第二緩衝記憶體BUF2→第二記憶體SRAM2和/或第二記憶體SRAM2→第一緩衝記憶體BUF1→第二緩衝記憶體BUF2→第一記憶體SRAM1。
示例性方法
圖3示出根據本公開的實施例的存取張量資料的方法的一個示例。該方法例如可以由圖1的示例系統中的控制器CON實施。
如圖3所示,根據本公開的實施例的示例方法可以包括步驟S10、S20、S30和S40。
在步驟S10中,確定第一記憶體SRAM1的第一行位址,其中,期望從張量資料的邏輯結構中存取的至少一個第一資料項儲存在第一記憶體SRAM1的第一行位址處。
在步驟S20中,可以將第一記憶體SRAM1中的第一行位址處的資料項複製到第一緩衝記憶體BUF1的第一緩存行中。根據不同的情况,複製到第一緩衝記憶體BUF1的第一緩存行中的資料項可以包括步驟S10中的至少一個第一資料據項,也可能包括其他不期望被存取的資料項。
在步驟S30中,可以將第一緩衝記憶體BUF1的第一緩存行中的每個第一資料項移動到第二緩衝記憶體BUF2的至少第一緩存行中的相應位置處,其中,每個第一資料項在第二緩衝記憶體BUF2的至少第一緩存行中的相 應位置可以取决於在第二記憶體SRAM2中分配給該第一資料項的目標位置。
取决於第一資料項在第二緩衝記憶體BUF2中的相應位置,從第一緩衝記憶體BUF1移動到第二緩衝記憶體BUF2中的第一資料項可以只佔據第二緩衝記憶體BUF2的第一緩存行,也可以佔據第二緩衝記憶體BUF2的第一緩存行和其他一個或多個緩存行。
在從第一緩衝記憶體BUF1移動到第二緩衝記憶體BUF2中的第一資料項佔據第二緩衝記憶體BUF2的第一緩存行和第二緩衝記憶體BUF2的其他一個或多個緩存行的情况下,在第一記憶體SRAM1中,第二緩衝記憶體BUF2的第一緩存行中的每個第一資料項先於第二緩衝記憶體的其他每個緩存行中的每個第一資料項。
步驟S40、將第二緩衝記憶體BUF2的第一緩存行中的資料項儲存到第二記憶體SRAM2中的對應的目標位置處。
根據不同的情况,要在該步驟中儲存到第二記憶體SRAM2中的對應的目標位置處的資料項至少包括第二緩衝記憶體BUF2的第一緩存行中的第一資料項,也可能包括在前一次處理之後仍遺留在第二緩衝記憶體BUF2的第一緩存行中、期望被存取但尚未被輸出到第二記憶體SRAM2中的目標位置處的資料項(如將在下文所述的那樣,上述的步驟S10至S40可以重複)。
在上述第一行位址是第一記憶體SRAM1中需要處理的最後一個行位址的情况下,如圖4所示,根據本公開的實施例的方法還可以包括步驟S50。
在步驟S50中,在第二緩衝記憶體BUF2的第二緩存行包括至少一個第一資料項的情况下,可以將第二緩衝記憶體BUF2的第二緩存行中的每個第一資料項儲存到第二記憶體SRAM2中的對應的目標位置處,其中,在第一記憶體SRAM1中,第二緩衝記憶體BUF2的第二緩存行中的每個第一資料項位於第二緩衝記憶體BUF2的第一緩存行中的每個第一資料項之後。
在第一記憶體SRAM1中還包括另外的需要處理的行位址的情况下,例如,在前述的第一行位址之後還存在需要繼續處理的第二行位址,如圖5所示,根據本公開的實施例的方法還可以包括步驟S10’、S20’、S30’和S40’。
在步驟S10’中,可以繼續確定第一記憶體SRAM1的第二行位址,其中,期望從張量資料的邏輯結構中存取的至少一個第二資料項儲存在第一記憶體SRAM1的第二行位址處。
在步驟S20’中,可以將第一記憶體SRAM1中的第二行位址處的資料項複製到第一緩衝記憶體BUF1的第二緩存行中。
如前文所述,第一緩衝記憶體BUF1也可以只包括一個緩存行,在這樣的情况下,在步驟S20’中,可以將第一記憶體SRAM1中的第二行位址處的資料項複製到 第一緩衝記憶體BUF1的唯一的緩存行中。在如圖5所示那樣依次地執行步驟S40和S10’的情况下,也可以使用包括一個緩存行的第一緩衝記憶體BUF1。
然而,在期望採用流水線式處理的情况(將在後文更詳細地描述)下,需要在將第一記憶體SRAM1中的第二行位址處的資料項複製到第一緩衝記憶體BUF1的唯一的緩存行中之前,確保先前在步驟S20中複製到第一緩衝記憶體BUF1中的資料項已經通過步驟S30中移動到第二緩衝記憶體BUF2中。
因此,如果使用包括一個緩存行的第一緩衝記憶體BUF1,則在流水線式處理的情况下,需要控制步驟S20’與步驟S40並行地執行。
如果第一緩衝記憶體BUF1包括可交替使用(按照緩存行循環尋址)的兩個緩存行,則在流水線式處理的情况下,可以使步驟S20’(可能地,可以包括步驟S10’)與步驟S10、S20、S30和S40中的任何一個步驟並行地執行,邏輯控制方式更加靈活,並且能够實現更高效的流水線控制,而且只增加一個緩存行,從硬體成本的角度來看也是容易被接受的。進一步地,在成本允許的情况下,第一緩衝記憶體BUF1可以包括更多的緩存行,並且可以按照緩存行循環尋址,從而實現無邊界的儲存空間。
在步驟S30’中,可以將第一緩衝記憶體BUF1的第二緩存行中的每個第二資料項移動到第二緩衝記憶體BUF2的至少第二緩存行中的相應位置處,其中,每個第二 資料項在第二緩衝記憶體BUF2的至少第二緩存行中的相應位置可以取决於在第二記憶體SRAM2中分配給該第二資料項的目標位置。
在步驟S30’時,由於前述的步驟S30和步驟S40,在第二緩衝記憶體BUF2的第二緩存行中仍可能包括一個或多個尚未被輸出到第二記憶體SRAM2中的目標位置處的第一資料項。因此,在步驟S30’中,將每個第二資料項移動到第二緩衝記憶體BUF2的至少第二緩存行中,能够通過簡單地方式確保期望被存取的所有資料最終均能够被輸出到第二記憶體SRAM2中。
類似於前述的步驟S30中的情况,取决於第二資料項在第二緩衝記憶體BUF2中的相應位置,從第一緩衝記憶體BUF1移動到第二緩衝記憶體BUF2中的第二資料項可以只佔據第二緩衝記憶體BUF2的第二緩存行,也可以佔據第二緩衝記憶體BUF2的第二緩存行和第二緩衝記憶體BUF2的其他一個或多個緩存行。在從第一緩衝記憶體BUF1移動到第二緩衝記憶體BUF2中的第二資料項佔據第二緩衝記憶體BUF2的第二緩存行和其他一個或多個緩存行的情况下,在第一記憶體SRAM1中,第二緩衝記憶體BUF2的第二緩存行中的每個第二資料項先於第二緩衝記憶體的其他每個緩存行中的每個第二資料項。
為此,如前文所述,第二緩衝記憶體BUF2可以包括按照緩存行循環尋址的兩個緩存行。在成本允許的情况下,第二緩衝記憶體BUF2可以包括按照緩存行循環尋址 的更多的緩存行。另外,第二緩衝記憶體BUF2可以支持在一個讀寫週期內完成資料的讀出和寫入,例如,第二緩衝記憶體BUF2可以支持在一個讀寫週期的第一時間點(例如,一個讀寫時鐘的上升沿)從一個緩存行輸出資料並且在該讀寫週期的第二時間點(該讀寫時鐘的下降沿)向另一個緩存行輸入資料,從而能够進一步地提高芯片性能。
在步驟S40’中,可以將第二緩衝記憶體BUF2的第二緩存行中的資料項儲存到第二記憶體SRAM2中的對應的目標位置處。
類似於前述的步驟S40,根據不同的情况,要在步驟S40’中儲存到第二記憶體SRAM2中的對應的目標位置處的資料項至少包括第二緩衝記憶體BUF2的第二緩存行中的第二資料項,也可以包括先前在步驟S30和S40之後仍遺留在第二緩衝記憶體BUF2的第二緩存行中、期望被存取但尚未被輸出到第二記憶體SRAM2中的目標位置處的第一資料項。
在上述第二行位址是第一記憶體SRAM1中需要處理的最後一個行位址的情况下,如圖6所示,根據本公開的實施例的方法還可以包括步驟S50’。
在步驟S50’中,在第二緩衝記憶體BUF2的第一緩存行包括至少一個第二資料項的情况下,可以將第二緩衝記憶體BUF2的第二緩存行中的每個第二資料項儲存到第二記憶體SRAM2中的對應的目標位置處,其中,在第一記憶體SRAM1中,第二緩衝記憶體BUF2的第二緩存行中 的每個第一資料項位於第二緩衝記憶體BUF2的第一緩存行中的每個第一資料項之後。
在第一記憶體SRAM1中還包括另外的需要處理的行位址的情况下,例如,在前述的第二行位址之後還存在需要繼續處理的第三行位址的情况下,如圖7所示,可以在步驟S40’之後針對第三行位址重複執行步驟S10至S40(使用第三行位址替代前述的第一位址);如果第三行位址是最後要處理的行位址,則可以在步驟S40之後執行步驟S50;否則,如果在前述的第三行位址之後還存在需要繼續處理的第四行位址,則可以在步驟S40之後針對第四行位址重複執行步驟S10’至S40’(使用第四行位址替代前述的第二位址);如果第四行位址是最後要處理的行位址,則可以在步驟S40’後執行步驟S50’;以此類推,直至處理完第一記憶體SRAM1中的所有需要處理的行位址。
例如,如圖8所示,在開始執行圖7的示例方法的步驟S10之前或之時,第一記憶體SRAM1中當前連續地儲存某個張量資料的部分資料項,其中,例如,H1c1w9表示該張量資料的邏輯結構(可以是一個資料立方體,並且在本示例中,各行、各列和各通道從0開始計數)中的位於第1個行(H1)、第1個通道(c1)和第9個列(w9)處的體素(Voxel)的資料值。
在圖8的示例中,期望唯讀取張量資料的邏輯結構中的位於第1個通道(c1)上的從第0個行至第1個行(H0~H1)且從第2個列至第11個列(w2~w11)的資料項 (即,圖8的SRAM1中的粗線框中的資料項),並且後續的處理期望能够高效率地獲取並處理這部分資料項(例如,期望在滿足硬體的資料對齊的要求的同時,使卷積運算內核能够準確地獲取該部分資料項,以便執行卷積運算;例如,期望能够通過將該部分資料項“保持原樣”地填充/輸出到預定儲存空間的預定位置處的方式,直接且簡單地實現特徵資料的合併或拼接;等等),從而期望該部分資料項能够按照期望的方式儲存在片上記憶體中(例如,圖8的SRAM2中的粗線框所示的方式)。
如圖8所示,在步驟S10中,控制器CON可以確定第一記憶體SRAM1的第一行位址R1。
在第一行位址R1處的資料項包括H0c1w0、H0c1w1、H0c1w2、H0c1w3、H0c1w4、H0c1w5、H0c1w6和H0c1w7,其中,H0c1w2、H0c1w3、H0c1w4、H0c1w5、H0c1w6和H0c1w7屬要處理的張量資料的邏輯結構中的期望被存取的資料項(即,前文所述的第一資料項)。
在一個實施例中,可以根據要處理的張量資料的邏輯結構中的期望被存取的資料範圍(該範圍例如可以通過指令參數給出)確定第一記憶體SRAM1的第一行位址。
例如,對於圖8的示例,由於張量資料的資料項連續地儲存在第一記憶體SRAM1中,因此在已知第一記憶體SRAM1的儲存寬度(在圖8的示例中,第一記憶體SRAM1的一行可以儲存8個資料項)的情况下,控制器CON可以確定每個資料項在第一記憶體SRAM1中的位置,由此 可以根據要處理的張量資料的邏輯結構中的期望被存取的資料範圍可以確定一個或多個行位址。然後,控制器CON可以每次在步驟S10中通過行位址寄存器和/或根據行位址計數器確定第一記憶體SRAM1的第一行位址。
在另外的示例中,控制器CON可以記錄第一記憶體SRAM1中的一個基準位址,然後在步驟S10中根據要處理的張量資料的邏輯結構中的期望被存取的資料範圍確定一個行位址,使得在第一記憶體SRAM1中,從基準位址開始到在該行位址之前的儲存區域中不包括屬期望被存取的資料範圍的資料項,然後可以將基準位址更新為所確定的行位址的下一個行位址。
如圖8所示,在步驟S20中,控制器CON可以執行指令,以將第一記憶體SRAM1的行位址R1處的所有資料項複製到第一緩衝記憶體BUF1的第一緩存行L11中,其中,H0c1w0和H0c1w1不是期望被存取的資料項。
在一個實施例中,可以使第一緩衝記憶體BUF1的每個緩存行的容量與第一記憶體SRAM1中的具有相同行位址的多個儲存單元的總容量相同,使得確保在步驟S10中能够簡單且高效率地將資料從第一記憶體SRAM1中讀取到第一緩衝記憶體BUF1中。
如圖8所示,在步驟S30中,控制器CON可以執行指令,以確定第二記憶體SRAM2中的第一個可用的儲存區域(即,圖4的SRAM2中的第二個儲存行中的“XX”之後的區域)作為每個第一資料項H0c1w2、H0c1w3、 H0c1w4、H0c1w5、H0c1w6和H0c1w7在第二記憶體SRAM2中的目標位置。
在另外的示例中,控制器CON也可以執行指令,以根據目標張量中的填充位置(可以通過指令參數來指定,也可以根據局部張量在目標張量中的期望位置來確定),確定每個第一資料項H0c1w2、H0c1w3、H0c1w4、H0c1w5、H0c1w6和H0c1w7在第二記憶體SRAM2中的目標位置。
如圖8所示,在步驟S30中,控制器CON可以執行指令,以將第一緩衝記憶體BUF1的第一緩存行L11中的第一資料項H0c1w2、H0c1w3、H0c1w4、H0c1w5、H0c1w6和H0c1w7移動到第二緩衝記憶體BUF2的至少第一緩存行L21中,其中,第一資料項H0c1w2、H0c1w3、H0c1w4和H0c1w5佔據第二緩衝記憶體BUF2的第一緩存行L21,H0c1w6和H0c1w7佔據第二緩衝記憶體BUF2的第二緩存行L22。如圖8所示,各個第一資料項在第二緩衝記憶體BUF2中的相應位置可以取决於在第二記憶體SRAM2中分配給H0c1w2、H0c1w3、H0c1w4、H0c1w5、H0c1w6和H0c1w7的目標位置。
在本文中,“將第一緩衝記憶體BUF1的第一緩存行L11中的資料項移動到第二緩衝記憶體BUF2中”可以意味著將第一緩衝記憶體BUF1的第一緩存行L11中的資料項複製到第二緩衝記憶體BUF2中,也可以意味著在將第一緩衝記憶體BUF1的第一緩存行L11中的資料項複製到第 二緩衝記憶體BUF2中之後清除第一緩衝記憶體BUF1的第一緩存行L11中的所有內容。
如圖8所示,在步驟S40中,控制器CON可以執行指令,以將第二緩衝記憶體BUF2的第一緩存行L21中的資料項H0c1w2、H0c1w3、H0c1w4和H0c1w5儲存或填充到第二記憶體SRAM2中的對應的目標位置處。
在上述的步驟S10至S40中,第一緩衝記憶體BUF1用於緩存第一記憶體SRAM1中的一整行的資料項,由此確保能够硬體在資料存取方面的資料對齊的要求,從而確保能够高效率地存取資料;第二緩衝記憶體BUF2用於按照期望的排布方式緩存期望被存取的資料項,從而允許直接通過硬體處理資料格式變換;然後,第二緩衝記憶體BUF2中的資料項能够按照資料對齊的方式直接輸出到第二記憶體SRAM2。由此,能够通過硬體直接按照期望的排布方式從張量資料中獲取期望被存取的資料項。
圖8的示例中,還需要處理第一記憶體SRAM1中的另一個行位址(第二行位址)R2。參照圖7,可以針對第二行位址R2繼續重複步驟S10’至S40’。
如圖9所示,可以在步驟S10’中確定第一記憶體SRAM1的第二行位址R2。在第二行位址R2處的資料項包括H0c1w8、H0c1w9、H0c1w10、H0c1w11、H0c1w12、H0c1w13、H0c1w14和H0c1w15,其中,H0c1w8、H0c1w9、H0c1w10和H0c1w11屬要處理的張量資料的邏輯結構中的期望被存取的資料。
如圖9所示,在步驟S20’中,可以將第一記憶體SRAM1中的第二行位址R2處的資料項複製到第一緩衝記憶體BUF1的第二緩存行L12中。例如,控制器CON可以執行指令,以將第一記憶體SRAM1的行位址R2處的所有數項複製到第一緩衝記憶體BUF1的第二緩存行L12(在該實施例中,也可以複製到第一緩衝記憶體BUF1的第一緩存行L11,並且第一緩衝記憶體BUF1可以只包括一個緩存行)中,其中,H0c1w12、H0c1w13、H0c1w14和H0c1w15不是期望被存取的資料項。
如圖9所示,在步驟S30’中,可以將第一緩衝記憶體BUF1的第二緩存行L12中的屬期望被存取的資料部分的每個第二資料項移動到第二緩衝記憶體BUF2的至少第二緩存行L22中的相應位置處,每個第二資料項在第二緩衝記憶體BUF2的至少第二緩存行L22中的相應位置取决於在第二記憶體SRAM2中分配給該第二資料項的目標位置。
例如,如圖9所示,由於H0c1w8、H0c1w9、H0c1w10和H0c1w11與當前緩存在第二緩衝記憶體BUF2的第二緩存行L22中的資料H0c1w6和H0c1w7是連續的資料項,所以控制器CON可以執行指令,以將第一緩衝記憶體BUF1的第二緩存行L12中的H0c1w8、H0c1w9、H0c1w10和H0c1w11移動到第二緩衝記憶體BUF2的第二緩存行L22中,並位於H0c1w6和H0c1w7之後。
在圖9的示例中,第一緩衝記憶體BUF1的第二緩存行L12中的屬期望被存取的資料部分的每個第二資料項只佔用了第二緩衝記憶體BUF2的第二緩存行L22。
如圖9所示,在步驟S40中,控制器CON可以執行指令,以將第二緩衝記憶體BUF2的第二緩存行L22中的資料項儲存或填充到第二記憶體SRAM2中的對應的目標位置處。
進一步地,對於另外的行位址R3、R4、R5和R6等,如圖10所示,可以按照圖7所示的控制流程可以繼續重複步驟S10至S40和/或S10’至S40’,使得期望存取的資料項不斷地按照第一記憶體SRAM1→第一緩衝記憶體BUF1→第二緩衝記憶體BUF2→第二記憶體SRAM2的流向從第一記憶體SRAM1中流動到第二記憶體SRAM2中,並且按照期望的布置方式儲存在第二記憶體SRAM2中。
在根據本公開的實施例的方法中,每個週期內處理第一記憶體SRAM1中的一行資料,由此能够在滿足硬體的資料對齊要求的情况下,簡單高效地獲取第一記憶體SRAM1中的期望被存取的資料項;然後,可以將期望被存取的資料項按照期望的布置方式儲存到第二記憶體SRAM2中,使得在後續處理中,例如諸如用於執行卷積運算的卷積運算內核能够高效率且準確地獲取期望的資料項,並且至少在處理已經加載到第一記憶體SRAM1中的資料項的過程中,能够確保不涉及外部記憶體DDR與內部的高速儲存系統(包括第一記憶體SRAM1和第二記憶體SRAM2)之間 的資料交換/傳輸,從而有利於提高人工智能芯片的性能並降低人工智能芯片的功耗。
另外,在需要合併或拼接多個部分張量資料的情况下,可以根據要合成的目標張量的結構確定各個資料項在第二記憶體SRAM2中的目標位置,然後可以通過根據本公開的實施例的方法,直接實現特徵資料的合併或拼接,從而至少可以省去或簡化控制器CON用於合成或拼接張量資料的邏輯處理,有利於减輕控制器CON的工作負擔,使得控制器CON能够更多地用於其他邏輯控制和處理中,進而有利於提高人工智能芯片的性能。
另外,在上述示例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括按行循環尋址的兩個緩存行。按行循環尋址允許第一緩衝記憶體BUF1和/或第二緩衝記憶體BUF2能够實現無位址邊界的儲存空間。在另外的示例中,在成本允許的情况下,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個也可以包括更多的按行循環尋址的緩存行,從而實現更靈活的存取控制。
在另外的示例中,如果控制器CON按照圖7至圖10的示例過程執行指令,則第一緩衝記憶體BUF1也可以只包括一個緩存行,從而可以節約成本。
在另外的實施例中,根據本公開的實施例的示例方法也可以按照流水線的方式實施,從而能够獲得更高的處理效率。例如,可以按照圖11所示的流水線方式控制執行根據本公開的實施例的方法中的各個步驟(為了簡單,圖 11中未示出步驟S50和S50’的情况),例如,針對行位址R2的步驟S30’可以與針對行位址R1的步驟S40相並行地執行,進一步地,針對行位址R3的步驟S30可以與針對行位址R2的步驟S40’相並行地執行,以此類推。
可以對第一記憶體SRAM1中的各個要處理的行位址進行編號,例如,從1開始按照自然數的次序編號。
在根據本公開的實施例的方法中,可以針對奇數編號的行位址(例如,前述的第一行位址和第三行位址)執行步驟S10至S40(如果最後要處理的行位址編號為奇數,則在方法的最後還可能包括步驟S50),並且可以針對偶數編號的行位址(例如,前述的第二行位址和第四行位址)執行步驟S10’至S40’(如果最後要處理的行位址編號為偶數,則在方法的最後還可能包括步驟S50’)。
相應地,在流水線式的控制流程中,針對偶數編號的行位址R2i的步驟S30’可以與針對奇數編號的行位址R2i-1的步驟S40相並行地執行,並且進一步地,根據需要,針對奇數編號的行位址R2i+1的步驟S30可以與針對偶數編號的行位址R2i的步驟S40’相並行地執行,其中,i為任意自然數。
應當理解,上述的編號方式僅為示例,例如,也可以從0開始編號。
相應地,根據本公開的實施例的方法的一個示例可以描述為:針對偶數編號的行位址(例如,前述的第一行位址和第三行位址)執行步驟S10至S40(如果最後要處 理的行位址編號為偶數,則在方法的最後還可能包括步驟S50),並且可以針對奇數編號的行位址(例如,前述的第二行位址和第四行位址)執行步驟S10’至S40’(如果最後要處理的行位址編號為奇數,則在方法的最後還可能包括步驟S50’)。
相應地,在流水線式的控制流程中,針對行位址R2i-1的步驟S30’可以與針對奇數編號的行位址R2i-2的步驟S40相並行地執行,並且進一步地,根據需要,針對奇數編號的行位址R2i的步驟S30可以與針對偶數編號的行位址R2i-1的步驟S40’相並行地執行,其中,i為任意自然數。
例如,仍然針對圖8的示例中的第一記憶體SRAM1中的資料,圖12示出圖11的流水線式控制流程的一個示例,其中,控制器CON可以按照時刻段t0、t1、t2、……的次序,以流水線的方式執行指令,從而實施根據本公開的實施例的示例方法。如圖11和圖13所示,在時間段t0,可以執行步驟S10和步驟S20,以將第一記憶體SRAM1中的行位址R1處的所有資料項讀取或複製到第一緩衝記憶體BUF1的第一緩衝行L11中。
然後,如圖11和圖14所示,在緊接在時間段t0之後的時間段t1,可以執行步驟S30,以將第一緩衝記憶體BUF1的第一緩衝行L11中的屬期望被存取的資料的每個第一資料項(H0c1w2至H0c1w7)移動到第二緩衝記憶體BUF2的至少第一緩存行L21中的相應位置處;並行地,可 以執行步驟S10’和步驟S20’,以將第一記憶體SRAM1中的行位址R2處的所有資料項讀取或複製到第一緩衝記憶體BUF1的第二緩衝行L12中。
在該實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括按行循環尋址的至少兩個緩存行。例如,從節約成本的角度出發,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以只包括按行循環尋址的兩個緩存行。另外,在一個實施例中,第一緩衝記憶體BUF1和/或第二緩衝記憶體BUF2可以採用支持在一個讀寫週期內寫出舊資料並寫入新資料的緩衝記憶體。
如圖14所示,在時間段t1,在第二緩衝記憶體BUF2的第二緩存行L22包括至少一個第一資料項(H0c1w6和H0c1w7)的情况下,第二緩衝記憶體BUF2的第一緩存行L21中的每個第一資料項(H0c1w2至H0c1w5)在第一記憶體SRAM1中的儲存位置先於第二緩衝記憶體BUF2的第二緩存行L22中的每個第一資料項(H0c1w6和H0c1w7)在第一記憶體SRAM1中的儲存位置。
如圖11和圖15所示,在緊接在時間段t1之後的時間段t2,可以執行步驟S40,以將第二緩衝記憶體BUF2的第一緩衝行L21中的資料項(H0c1w2至H0c1w5)儲存到第二記憶體SRAM2中的對應的目標位置處;並行地,可以執行步驟S30’,以將第一緩衝記憶體BUF1的第二緩存行 L12中的屬期望被存取的資料的第二資料項(H0c1w8至H0c1w11)移動到第二緩衝記憶體BUF2的第二緩衝行L22中,每個第二資料項(H0c1w8至H0c1w11)在第二緩衝記憶體BUF2的至少第二緩存行L22中的相應位置取决於在第二記憶體SRAM2中分配給該第二資料項的目標位置;並行地,還可以執行步驟S10和S20,以將第一記憶體SRAM1中的行位址R3處的所有資料項讀取或複製到第一緩衝記憶體BUF1的第一緩衝行L11中。
在該示例中,在時間段t2移動到第二緩衝記憶體BUF2的第二資料項(H0c1w8至H0c1w11)只佔用了第二緩衝記憶體BUF2的第二緩存行L22。
如圖11和圖16所示,在緊接在時間段t2之後的時間段t3,可以執行步驟S40’,以將第二緩衝記憶體BUF2的第二緩衝行L22中的資料項(H0c1w6至H0c1w11)儲存到第二記憶體SRAM2中的對應的目標位置處;並行地,可以執行步驟S30,以將第一緩衝記憶體BUF1的第一緩存行L11中的屬期望被存取的資料的資料項(H1c1w2至H1c1w7)移動到第二緩衝記憶體BUF2的至少第一緩衝行L21中,其中,新資料項H1c1w6和H1c1w7需要佔用第二緩衝記憶體BUF2的第二緩衝行L22,對於該情况,可以通過時序控制確保第二緩衝記憶體BUF2的新資料的寫入是在第二緩衝記憶體BUF2的舊資料的寫出之後進行,也可以採用支持在一個讀寫週期內寫出舊資料並寫入新資料的緩衝記憶體作為第二緩衝記憶體BUF2;並行地,如圖16所 示,還可以執行步驟S10’和S20’(在圖11中未示出),以將第一記憶體SRAM1中的行位址R4處的所有資料項讀取或複製到第一緩衝記憶體BUF1的第二緩衝行L12中。
假設執行步驟S10和步驟S20或者步驟S10’和步驟S20’需要時間T1,執行步驟S30或S30’需要時間T2,並且執行步驟S30或S30’需要時間T3,在要處理第一記憶體SRAM1的M個行位址的情况下,如果按照圖7所示的方式實施根據本公開的實施例的方法,則至少需要花費(M×T1+M×T2+M×T3)的時間,而如果如圖12所示那樣以流水線的方式實施根據本公開的實施例的方法,則所花費的時間可以是(T1+T2+T3+max(T1,T2,T3)*(M-1)),其中,max()表示取最大值。通常,T1=T2=T3=1個週期,因此在按照圖7所示的方式實施根據本公開的實施例的方法的情况下,可以需要至少3M個週期,而在按照圖11所示的方式實施根據本公開的實施例的方法的情况下,則(M+2)個週期。可見,流水線式的實施方式能够顯著地縮短控制器CON的執行時間,從而顯著地提高系統的整體性能並降低功耗。
應當理解,圖11和圖12所示的流水線只是示例。根據本公開的實施例的方法可以採用另外的流水線方式來執行,而不局限於圖11和圖12的示例。
在根據本公開的實施例的方法中,通過適當的硬體結構(第一緩衝記憶體BUF1、第二緩衝記憶體BUF2)和改進的資料流控制(第一記憶體SRAM1→第一緩衝記憶 體BUF1→第二緩衝記憶體BUF2→第二記憶體SRAM2和/或第二記憶體SRAM2→第一緩衝記憶體BUF1→第二緩衝記憶體BUF2→第一記憶體SRAM1),能够直接從加載到片上記憶體中的張量資料中按照期望的資料項布置方式獲取期望被存取的資料部分,由此能够降低主處理器或控制器的工作負擔,减少片外記憶體與片上記憶體之間的資料交換/傳輸次數以及允許通過流水線式的方式提高處理效率,從而提高人工智能芯片的性能並降低人工智能芯片的功耗。
另外,在根據本公開的實施例的方法中,每個週期內處理第一記憶體SRAM1中的一行資料,通過適當的硬體結構和改進的資料流控制,能够支持流水線處理,由此能够提高人工智能芯片內部的資料存取效率,進而提高人工智能芯片的性能並降低人工智能芯片的功耗。
在另外的實施例中,在上述的步驟之前,根據本公開的實施例的方法還可以包括:接收指示存取張量資料的指令;以及通過解析指令確定張量資料的邏輯結構中期望被存取的資料項、前述第一行位址以及前述邏輯結構中期望被存取的各個資料項在第二記憶體SRAM2中的目標位置中的一個或多個。
例如,控制器CON可以經由指令接口(可以是允許接收由用戶經由I/O設備輸入的指令的端口,也可以是用於耦接到指令總線的端口,等等)接收指示存取張量資料的指令和相關的參數。
例如,所接收的指令的操作碼可以指示從完整的張量資料中獲取部分資料。相應地,指令的位址碼(或者指令的參數)可以指示如下信息中的一項或多項:完整張量資料在外部記憶體DDR中的儲存位置,完整張量資料的邏輯結構,期望被存取的資料在完整張量資料的邏輯結構中的位置,等等。
例如,所接收的指令的操作碼也可以指示將第一記憶體SRAM1中的資料項(可以是系統中的諸如卷積運算核等其他部件的輸出資料)設置為另一個完整張量資料的一部分。相應地,指令的位址碼(或者指令的參數)可以指示如下信息中的一項或多項:資料項在第一記憶體SRAM1中的儲存位置,另一張量資料的邏輯結構,期望被存取的資料在另一完整張量資料的邏輯結構中的位置,等等。
然後,控制器CON可以解析所接收的指令(也可以由控制器CON指示專門的指令解析器來執行),以便根據指令的操作碼來確定進一步處理的操作類型以及相關參數。
相應地,控制器CON可以確定例如外部記憶體DDR或第一記憶體SRAM1中的哪些資料項屬期望被存取的資料、期望被存取的資料所在的各個行位址(包括前述的第一行位址、第二行位址等)、期望被存取的資料中的各個資料項在第二記憶體SRAM2中的目標位置等一個或多個信息。
例如,如前文所述,在控制器CON執行指令或者向存取控制器發出指令以確定第二記憶體SRAM2中的第一個可用的儲存區域作為資料項在第二記憶體SRAM2中的目標位置的情况下,控制器CON所確定的信息可以不必包括期望被存取的資料中的各個資料項在第二記憶體SRAM2中的目標位置等一個或多個信息。
另外,在所接收的指令的操作碼指示從完整的張量資料中獲取部分資料的情况下,根據本公開的實施例的方法還可以包括將完整張量資料的至少一部分從外部記憶體DDR中讀取或加載到第一記憶體SRAM1中。
以按照循環方式(例如圖5至圖7所示的方式)或流水線方式(例如圖11所示的方式)執行根據本公開的實施例的方法中的步驟,在此不再贅述。
另外,在所接收的指令的操作碼指示將第一記憶體SRAM1中的資料項設置為另一個完整張量資料的一部分的情况下,根據本公開的實施例的方法還可以包括將第二記憶體SRAM2中的資料輸出到外部記憶體DDR中。
在一個實施例中,所接收的指令可以被設計成系統能够支持的硬體指令。控制器CON在接收到該硬體指令後,可以按照循環方式(例如圖5至圖7所示的方式)或流水線方式(例如圖11所示的方式)執行根據本公開的實施例的方法中的步驟,從而高效率地實現張量資料的存取操作。
示例性裝置
圖17例示根據本公開的實施例的存取張量資料的裝置的一個示例。該示例裝置可以包括前文所述的第一緩衝記憶體BUF1、第二緩衝記憶體BUF2和控制器CON,其中,控制器CON可以耦接到第一記憶體SRAM1、第二記憶體SRAM2、第一緩衝記憶體BUF1和第二緩衝記憶體BUF2。
在一個實施例中,控制器CON可以被配置為在啟動時執行預定的指令序列,以便至少實施根據本公開的實施例的方法。例如,控制器CON可以被配置為根據指令,按照圖3至圖7以及圖11所示的任何一種控制流程,執行根據本公開的實施例的方法。
根據不同的實施例,例如,在人工智能芯片的情况下,控制器CON可以是例如基於圖形處理器(GPU)、ARM處理器、現場可編程門陣列(FPGA)等構建的處理器或控制器,也可以是芯片上專門用於控制存取片外記憶體和/或片內記憶體的存取控制器或資料傳輸控制器等,例如基於FPGA開發的精簡指令集計算(RISC)軟處理器內核等。另外,根據本公開的實施例的控制器CON單獨地控制對片外記憶體和/或片內記憶體中的資料的存取操作,也可以例如協助主處理器或響應來自主處理器的指令,控制對片外記憶體和/或片內記憶體中的資料的存取操作。
第一緩衝記憶體BUF1和第二緩衝記憶體BUF2兩者中的每一個可以是高速緩衝記憶體或靜態隨機存取記憶體,其資料存取速率可以與包括第一記憶體 SRAM1和第二記憶體SRAM2的高速儲存系統的資料存取速率相匹配。
根據不同的實施例,第一緩衝記憶體BUF1可以包括一個或多個緩存行,並且第二緩衝記憶體BUF2可以包括兩個或多個緩存行。
在一個實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括至少兩個緩存行,從而能够確保資料存取過程中的處理效率。
在一個實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括兩個緩存行,從而能够通過低成本的硬體結構確保資料存取過程中的處理效率。在該實施例中,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的至少第二緩衝記憶體BUF2可以支持在一個讀寫週期內寫出舊資料並寫入新資料,以便能够處理例如圖16中所示的讀寫衝突。
在另外的實施例中,在成本允許的情况下,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以包括多於兩個(例如,三個或四個)的緩存行,從而能够避免例如圖16中所示的讀寫衝突。
另外,第一緩衝記憶體BUF1和第二緩衝記憶體BUF2中的每一個可以是按照緩存行循環尋址的緩衝記憶體,從而能够支持無邊界的儲存空間,並且能够簡化儲存控制。
在一個實施例中,第一緩衝記憶體BUF1的每個緩存行的容量可以與第一記憶體SRAM1中的具有相同行位址的多個儲存單元的總容量(即,第一記憶體SRAM1的儲存寬度)相同,並且第二緩衝記憶體BUF2的每個緩存行的容量可以與第二記憶體SRAM2中的具有相同行位址的多個儲存單元的總容量(即,第二記憶體SRAM2的儲存寬度)相同,由此能够極大地簡化設計並降低控制邏輯的複雜度。
根據不同的實施例,第一記憶體SRAM1和第二記憶體SRAM2可以配置於圖17中的示例裝置的外部或內部,換句話說,根據本公開的實施例的裝置可以包括第一記憶體SRAM1和第二記憶體SRAM2,也可以不包括第一記憶體SRAM1和第二記憶體SRAM2。
在不同的實施例中,第一記憶體SRAM1和第二記憶體SRAM2中的每一個可以是能够支持二維資料的存取和/或資料的二維存取的靜態隨機存取儲存部件/模組或高速緩衝儲存部件/模組。例如,在人工智能芯片的情况下,第一記憶體SRAM1和第二記憶體SRAM2中的每一個可以是能够用於形成片上記憶體的至少一部分的任何適當類型或形式的記憶體。
另外,根據不同的實施例,第一記憶體SRAM1和第二記憶體SRAM2可以分開設置(例如,如圖1或圖17所示),也可以是能够支持二維資料存取的同一個儲存部件/模組(該儲存部件/模組例如可以包括多個一維靜態隨機存 取記憶體或一個或多個二維記憶體以便支持二維資料的存取和/或資料的二維存取)中的兩個不同的部分(例如,如圖2所示)。
在一個實施例中,例如在人工智能芯片的情况下,第一緩衝記憶體BUF1、第二緩衝記憶體BUF2、控制器CON、第一記憶體SRAM1和第二記憶體SRAM2可以實施在同一芯片上,從而形成系統級芯片(System on Chip,SoC)上的儲存系統的至少一部分。
在根據本公開的實施例的裝置中,每個週期內處理第一記憶體SRAM1中的一行資料,由此能够在滿足硬體的資料對齊的要求的情况下,簡單高效地獲取第一記憶體SRAM1中的期望被存取的資料項;然後,可以將期望被存取的資料項按照期望的布置方式儲存到第二記憶體SRAM2中,使得在後續處理中,例如諸如用於執行卷積運算的卷積運算內核能够高效率且準確地獲取期望的資料項,並且至少在處理已經加載到第一記憶體SRAM1中的資料項的過程中,能够確保不涉及外部記憶體DDR與內部的高速儲存系統(包括第一記憶體SRAM1和第二記憶體SRAM2)之間的資料交換/傳輸,從而有利於提高人工智能芯片的性能並降低人工智能芯片的功耗。
另外,在需要合併或拼接多個部分張量資料的情况下,可以根據要合成的目標張量的結構確定各個資料項在第二記憶體SRAM2中的目標位置,然後直接實現特徵資料的合併或拼接,從而至少可以省去或簡化控制器CON用 於合成或拼接張量資料的邏輯處理,有利於减輕控制器CON的工作負擔,使得控制器CON能够更多地用於其他邏輯控制和處理中,進而有利於提高人工智能芯片的性能。
應當理解,根據本公開的實施例的用於存取張量資料的裝置不局限於圖17中的示例。例如,根據本公開的實施例的裝置還可以包括交叉開關和/或多路選擇器等用於實現片上部件之間的互連,從而允許片上的各個部件之間能够更高效地進行交互,並且能够更加節省芯片空間。例如,根據本公開的實施例的裝置還可以包括用於指令時序控制的定時控制器、用於指令中斷控制的中斷控制器等其他部件/模組/電路/單元/元件,並且可以使這樣的其他部件/模組/電路/單元/元件與前述的第一緩衝記憶體BUF1等一起實施在同一芯片上。例如,根據本公開的實施例的裝置還可以包括指令接口和/或指令解析電路/模組,用於接收和解析與資料存取相關的指令。
示例性電腦程式產品和電腦可讀儲存介質
除了上述方法和設備以外,本公開的實施例還可以是電腦程式產品,其包括電腦程式指令,該電腦程式指令在被處理器運行時使得處理器或控制器(例如,人工智能芯片中的處理器或控制器或專用於片上儲存系統的存取控制器)執行本說明書上述“示例性方法”部分中描述的根據本公開各種實施例的方法中的步驟。
電腦程式產品可以以一種或多種程式設計語言的任意組合來編寫用於執行本公開實施例操作的程式代 碼,程式設計語言可以包括面向對象的程式設計語言,諸如Java、C++等,還包括常規的過程式程式設計語言,諸如“C”語言或類似的程式設計語言。程式代碼可以完全地在用戶計算設備上執行、部分地在用戶設備上執行、作為一個獨立的軟體包執行、部分在用戶計算設備上部分在遠程計算設備上執行、或者完全在遠程計算設備或伺服器上執行。
此外,本公開的實施例還可以是電腦可讀儲存介質,其上儲存有電腦程式指令,電腦程式指令在被處理器或控制器(例如,人工智能芯片中的主處理器或控制器或專用於片上儲存系統的存取控制器)運行時使得處理器或控制器(例如,人工智能芯片中的主處理器或控制器或專用於片上儲存系統的存取控制器)執行本說明書上述“示例性方法”部分中描述的根據本公開各種實施例的聲源定位方法中的步驟。
電腦可讀儲存介質可以採用一個或多個可讀介質的任意組合。可讀介質可以是可讀信號介質或者可讀儲存介質。可讀儲存介質例如可以包括但不限於電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。可讀儲存介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便携式碟、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可擦式可編程唯讀記憶體(EPROM或閃速記憶體)、光纖、便携式緊凑碟唯讀記憶體(CD-ROM)、光記憶體件、磁記憶體件、或者上述的任意合適的組合。
以上結合具體實施例描述了本公開的基本原理,但是,需要指出的是,在本公開中提及的優點、優勢、效果等僅是示例而非限制,不能認為這些優點、優勢、效果等是本公開的各個實施例必須具備的。另外,上述公開的具體細節僅是為了示例的作用和便於理解的作用,而非限制,上述細節並不限制本公開為必須採用上述具體的細節來實現。
本公開中涉及的器件、裝置、設備、系統的方框圖僅作為例示性的例子並且不意圖要求或暗示必須按照方框圖示出的方式進行連接、布置、配置。如本領域技術人員將認識到的,可以按任意方式連接、布置、配置這些器件、裝置、設備、系統。諸如“包括”、“包含”、“具有”等等的詞語是開放性詞匯,指“包括但不限於”,且可與其互換使用。這裏所使用的詞匯“或”和“和”指詞匯“和/或”,且可與其互換使用,除非上下文明確指示不是如此。這裏所使用的詞匯“諸如”指詞組“諸如但不限於”,且可與其互換使用。
在本文中,諸如“第一”、“第二”等不帶有量詞的修飾詞旨在用於區分不同的元件/部件/電路/模組/裝置/步驟,而不用於强調次序、位置關係、重要程度、優先級別等。因此,例如,“第一記憶體SRAM1”也可以被稱為“第二記憶體SRAM1”,同時可以將“第二記憶體SRAM2”稱為“第一記憶體SRAM2”;例如,“第三行位址”也可以被稱為“第一行位址”,並且“第四行位址” 也可以被稱為“第二行位址”;諸如此類。也就是說,諸如“第一”和“第二”等不帶有量詞的修飾詞是可以互換的。
與此不同,諸如“第一個”、“第二個”等帶有量詞的修飾詞可以用於强調不同的元件/部件/電路/模組/裝置/步驟的次序、位置關係、重要程度、優先級別等。例如,“第一個可用位置”可以意味著在該位置之前的所有位置均是不可用的,並且因此,相對於其他可用位置而言,該可用位置可以是最先被找到的可用位置或者是在儲存空間中或按照搜索次序最靠前的可用位置,而“第二個可用位置”可以意味著在該可用位置之前已經存在一個可用位置。也就是說,諸如“第一個”、“第二個”等帶有量詞的修飾詞是不可互換的。
另外,在本文中出現的“一個或多個”可以指一個或兩個或三個或更多個,而“兩個或多個”可以指兩個或三個或更多個;在單獨地提及“多個”時,可以指“兩個或多個”或“兩個以上”。
還需要指出的是,在本公開的裝置、設備和方法中,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應視為本公開的等效方案。
提供所公開的方面的以上描述以使本領域的任何技術人員能够做出或者使用本公開。對這些方面的各種修改對於本領域技術人員而言是非常顯而易見的,並且在此定義的一般原理可以應用於其他方面而不脫離本公開的範 圍。因此,本公開不意圖被限制到在此示出的方面,而是按照與在此公開的原理和新穎的特徵一致的最寬範圍。
為了例示和描述的目的已經給出了以上描述。此外,此描述不意圖將本公開的實施例限制到在此公開的形式。儘管以上已經討論了多個示例方面和實施例,但是本領域技術人員將認識到其某些變型、修改、改變、添加和子組合。
圖3代表圖為流程圖,無元件符號簡單說明。

Claims (10)

  1. 一種存取張量資料的方法,包括:
    確定第一記憶體的第一行位址,期望從所述張量資料的邏輯結構中存取的至少一個第一資料項儲存在所述第一記憶體的第一行位址處;
    將所述第一記憶體中的第一行位址處的資料項複製到第一緩衝記憶體的第一緩存行中;
    將所述第一緩衝記憶體的第一緩存行中的每個第一資料項移動到第二緩衝記憶體的至少第一緩存行中的相應位置處,每個第一資料項在所述第二緩衝記憶體的至少第一緩存行中的相應位置取决於在第二記憶體中分配給該第一資料項的目標位置;以及
    將所述第二緩衝記憶體的第一緩存行中的資料項儲存到所述第二記憶體中的對應的目標位置處。
  2. 根據請求項1所述的方法,還包括:
    在所述第二緩衝記憶體的第二緩存行包括至少一個第一資料項的情况下,將所述第二緩衝記憶體的第二緩存行中的每個第一資料項儲存到所述第二記憶體中的對應的目標位置處,其中,在所述第一記憶體中,所述第二緩衝記憶體的第二緩存行中的每個第一資料項位於所述第二緩衝記憶體的第一緩存行中的每個第一資料項之後。
  3. 根據請求項1所述的方法,還包括:
    確定所述第一記憶體的第二行位址,期望從所述邏輯結構中存取的至少一個第二資料項儲存在所述第一記憶體的第二行位址處;
    將所述第一記憶體中的第二行位址處的資料項複製到所述第一緩衝記憶體的第二緩存行中;
    將所述第一緩衝記憶體的第二緩存行中的每個第二資料項移動到所述第二緩衝記憶體的至少第二緩存行中的相應位置處,每個第二資料項在所述第二緩衝記憶體的至少第二緩存行中的相應位置取决於在所述第二記憶體中分配給該第二資料項的目標位置;以及
    將所述第二緩衝記憶體的第二緩存行中的資料項儲存到所述第二記憶體中的對應的目標位置處。
  4. 根據請求項3所述的方法,還包括:
    在所述第二緩衝記憶體的第一緩存行包括至少一個第二資料項的情况下,將所述第二緩衝記憶體的第一緩存行中的每個第二資料項儲存到所述第二記憶體中的對應的目標位置處,其中,在所述第一記憶體中,所述第二緩衝記憶體的第一緩存行中的每個第二資料項位於所述第二緩衝記憶體的第二緩存行中的每個第二資料項之後。
  5. 根據請求項3所述的方法,其中,將所述第一緩衝記憶體的第二緩存行中的每個第二資料項移動到所 述第二緩衝記憶體的至少第二緩存行中的相應位置處包括:
    與將所述第二緩衝記憶體的第一緩存行中的資料項儲存到所述第二記憶體中的對應的目標位置處相並行地,或者在將所述第二緩衝記憶體的第一緩存行中的資料項儲存到所述第二記憶體中的對應的目標位置處之後,將所述第一緩衝記憶體的第二緩存行中的每個第二資料項移動到所述第二緩衝記憶體的至少第二緩存行中的相應位置處。
  6. 根據請求項1至5中的任一項所述的方法,還包括:
    接收指示存取張量資料的指令;以及
    通過解析所述指令確定所述邏輯結構中期望被存取的資料項、所述第一行位址以及所述邏輯結構中期望被存取的各個資料項在所述第二記憶體中的目標位置中的一個或多個。
  7. 一種電腦可讀取的非臨時性儲存介質,在其上儲存有程式指令,所述程式指令在被處理器或控制器執行時執行根據請求項1至6中的方法。
  8. 一種存取張量資料的裝置,包括:
    第一緩衝記憶體;
    第二緩衝記憶體;以及
    控制器,耦接到第一記憶體、第二記憶體、所述第一緩衝記憶體和所述第二緩衝記憶體,並且被配置為在被啟動時根據指令至少執行根據請求項1至6中的方法。
  9. 根據請求項8所述的裝置,其中,所述第一緩衝記憶體的每個緩存行的容量與所述第一記憶體中的具有相同行位址的多個儲存單元的總容量相同,並且所述第二緩衝記憶體的每個緩存行的容量與所述第二記憶體中的具有相同行位址的多個儲存單元的總容量相同。
  10. 根據請求項8所述的裝置,其中,所述第一緩衝記憶體和所述第二緩衝記憶體中的每一個是按照緩存行循環尋址的緩衝記憶體。
TW108146284A 2018-12-17 2019-12-17 存取張量資料的方法和裝置 TWI743627B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811541065.1 2018-12-17
CN201811541065.1A CN111324294B (zh) 2018-12-17 2018-12-17 存取张量数据的方法和装置

Publications (2)

Publication Number Publication Date
TW202024922A true TW202024922A (zh) 2020-07-01
TWI743627B TWI743627B (zh) 2021-10-21

Family

ID=68917584

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108146284A TWI743627B (zh) 2018-12-17 2019-12-17 存取張量資料的方法和裝置

Country Status (6)

Country Link
US (1) US11163686B2 (zh)
EP (1) EP3671424A1 (zh)
JP (1) JP7008983B2 (zh)
KR (1) KR102397100B1 (zh)
CN (1) CN111324294B (zh)
TW (1) TWI743627B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767508B (zh) * 2020-07-09 2024-02-23 地平线(上海)人工智能技术有限公司 计算机实现张量数据计算的方法、装置、介质和设备
CN113485762A (zh) * 2020-09-19 2021-10-08 广东高云半导体科技股份有限公司 用可配置器件卸载计算任务以提高系统性能的方法和装置
US20220188631A1 (en) * 2020-12-16 2022-06-16 Xmos Inc. Artificial neural network implementation
CN116127259A (zh) * 2021-01-13 2023-05-16 华为技术有限公司 张量处理方法、装置、设备及计算机可读存储介质
CN112988238A (zh) * 2021-05-06 2021-06-18 成都启英泰伦科技有限公司 一种基于可扩展指令集cpu内核的扩展运算装置及方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167962B2 (en) * 1999-08-19 2007-01-23 Hitachi, Ltd. Remote copy for a storage controller with reduced data size
US6643755B2 (en) * 2001-02-20 2003-11-04 Koninklijke Philips Electronics N.V. Cyclically sequential memory prefetch
US20030041214A1 (en) * 2001-07-27 2003-02-27 Fujitsu Limited Cache control methods and apparatus for hard disk drives
JP4901316B2 (ja) * 2006-06-06 2012-03-21 株式会社日立製作所 ストレージシステム及び記憶制御装置
US8255562B2 (en) * 2008-06-30 2012-08-28 International Business Machines Corporation Adaptive data throttling for storage controllers
US20100281192A1 (en) * 2009-04-30 2010-11-04 Novafora, Inc. Apparatus and method for transferring data within a data processing system
US8761206B1 (en) * 2011-03-24 2014-06-24 Marvell International Ltd. Universal packer
US20140181171A1 (en) * 2012-12-24 2014-06-26 Pavel Dourbal Method and system for fast tensor-vector multiplication
US9690650B2 (en) * 2013-03-11 2017-06-27 Macronix International Co., Ltd. Storage scheme for built-in ECC operations
US9524164B2 (en) * 2013-08-30 2016-12-20 Advanced Micro Devices, Inc. Specialized memory disambiguation mechanisms for different memory read access types
US9612971B2 (en) * 2014-08-19 2017-04-04 Qualcomm Incorporated Supplemental write cache command for bandwidth compression
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10061832B2 (en) * 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
JP2018005655A (ja) * 2016-07-05 2018-01-11 富士通株式会社 メモリコントローラおよびメモリアクセス方法
CN107783916B (zh) * 2016-08-26 2020-01-31 深圳大心电子科技有限公司 数据传输方法、存储控制器与清单管理电路
US10198378B2 (en) * 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Faster data transfer with simultaneous alternative remote direct memory access communications
US10175912B1 (en) * 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit
US10042785B1 (en) * 2017-08-29 2018-08-07 Seagate Technology Llc Storage drive with multiple controllers having interconnected buffer managers
US20190130291A1 (en) * 2017-10-27 2019-05-02 Wave Computing, Inc. Dynamic reconfiguration with partially resident agents
US10346093B1 (en) * 2018-03-16 2019-07-09 Xilinx, Inc. Memory arrangement for tensor data
US11132124B2 (en) * 2018-06-12 2021-09-28 Intel Corporation Memory subsystem operations with unaligned and scatter gather feature to support convolution and dimension shuffle
US10956315B2 (en) * 2018-07-24 2021-03-23 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access

Also Published As

Publication number Publication date
CN111324294A (zh) 2020-06-23
JP2020098602A (ja) 2020-06-25
US11163686B2 (en) 2021-11-02
EP3671424A1 (en) 2020-06-24
TWI743627B (zh) 2021-10-21
KR20200075769A (ko) 2020-06-26
JP7008983B2 (ja) 2022-01-25
US20200192803A1 (en) 2020-06-18
CN111324294B (zh) 2023-11-07
KR102397100B1 (ko) 2022-05-11

Similar Documents

Publication Publication Date Title
TWI743627B (zh) 存取張量資料的方法和裝置
US10331997B2 (en) Adaptive configuration of a neural network device
CN1890640B (zh) 高效的系统管理同步方法和系统
US10768894B2 (en) Processor, information processing apparatus and operation method for processor
US11294599B1 (en) Registers for restricted memory
US7058945B2 (en) Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device
CN109219821A (zh) 运算装置和方法
US11900113B2 (en) Data flow processing method and related device
CN103714026B (zh) 一种支持原址数据交换的存储器访问方法及装置
CN112416433A (zh) 一种数据处理装置、数据处理方法及相关产品
US11579921B2 (en) Method and system for performing parallel computations to generate multiple output feature maps
WO2020093968A1 (zh) 卷积处理引擎及控制方法和相应的卷积神经网络加速器
CN112631955A (zh) 数据处理方法、装置、电子设备以及介质
CN116360672A (zh) 访问存储器的方法、装置和电子设备
JP2008102599A (ja) プロセッサ
CN112395009A (zh) 运算方法、装置、计算机设备和存储介质
JP2019016168A (ja) シミュレーションプログラム、方法、及び装置
US20230195651A1 (en) Host device performing near data processing function and accelerator system including the same
CN116804915B (zh) 基于存储器的数据交互方法、处理器、设备以及介质
CN115129233B (zh) 数据处理装置、方法及相关产品
US11500632B2 (en) Processor device for executing SIMD instructions
KR20230095795A (ko) Ndp 기능을 포함하는 호스트 장치 및 이를 포함하는 가속기 시스템
CN116402102A (zh) 神经网络处理器和电子设备
CN115408309A (zh) 一种ai处理器的缓存管理方法及应用其的ai处理器
CN117075902A (zh) 基于张量的编译方法、设备及其计算机可读存储介质