CN111124360B - 一种可配置矩阵乘法的加速器 - Google Patents
一种可配置矩阵乘法的加速器 Download PDFInfo
- Publication number
- CN111124360B CN111124360B CN201911342677.2A CN201911342677A CN111124360B CN 111124360 B CN111124360 B CN 111124360B CN 201911342677 A CN201911342677 A CN 201911342677A CN 111124360 B CN111124360 B CN 111124360B
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- accelerator
- address
- state
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- 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
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Logic Circuits (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开一种可配置矩阵乘法的加速器,属于片上系统和算法加速器技术领域。该加速器包括拓展指令译码器、拓展指令配置寄存器和矩阵乘法运算单元,拓展指令译码器将专用的指令处理接口的功能码和操作码信息进行译码配对,如匹配成功则加速器执行运算,反之,则不执行运算;拓展指令配置寄存器将专用的指令处理接口的源寄存器的数据进行存储;矩阵乘法运算单元根据拓展指令配置寄存器的信息执行不同规模的矩阵乘法运算。该加速器能够合理的适应当前SoC设计中拓展指令集的需求,实现指令化加速器,易于与CPU集成。
Description
技术领域
本发明涉及片上系统和算法加速器技术领域,特别涉及一种可配置矩阵乘法的加速器。
背景技术
随着人工智能、大数据等新兴领域的产生和发展,庞大复杂的算法需要进行大量的向量运算,尤其是矩阵乘法运算广泛存在于大量算法之中。由于大规模矩阵乘法的计算复杂度高、处理效率低,在对算法实时性要求高的场景中,矩阵乘法往往成为限制系统性能的瓶颈所在。
采用加速器辅助运算是当前常用的一种加速方式。由于加速器的专用性,其相对于CPU、GPU具有执行速度相对较快、功耗低、成本低等特点。因此,采用加速器辅助处理器运行复杂的算法的这一加速方式,广泛应用于当前对成本低、功耗低、算法实时性要求高的SoC设计中。
传统的矩阵乘法加速器是通过挂在系统的总线上,并且给控制寄存器分配地址,处理器通过给指定的地址写入控制数据,实现对加速器的控制。然而,当前RISC-V指令集已经支持自定义指令集,以支持指令化加速器,同时ARM也紧随其后。处理器读取到拓展指令后,将该指令旁路到拓展的专用指令处理接口。因此,适应于拓展指令集的加速器需要额外的电路处理拓展指令接口的指令信息。指令化加速器由于其与处理器紧密耦合,获取数据的延迟将会变得更小。设计指令化的加速器,是适应了当前指令集拓展的需求。
发明内容
本发明的目的在于提供一种可配置矩阵乘法的加速器,以解决目前加速器无法适应当前指令集拓展的问题。
为解决上述技术问题,本发明提供一种可配置矩阵乘法的加速器,适应于拓展指令,与处理器通过专用的指令处理接口耦合连接,该加速器包括:
拓展指令译码器,将专用的指令处理接口的功能码和操作码信息进行译码配对,如匹配成功则加速器执行运算,反之,则不执行运算;
拓展指令配置寄存器,将专用的指令处理接口的源寄存器的数据进行存储;
矩阵乘法运算单元,根据拓展指令配置寄存器的信息执行不同规模的矩阵乘法运算。
可选的,所述加速器能够访问内存,所述矩阵乘法运算单元包括有限状态机,地址生成器、组合逻辑运算单元和乘累加器;
所述有限状态机由所述拓展指令译码器的使能信号启动,根据所述拓展指令配置寄存器的配置信息,依次执行乘累加运算;
开始运算后,所述地址生成器根据当前运算的数据所在的位置,自动生成下一次运算数据的地址;所述有限状态机控制地址生成器输出矩阵A的数据地址、矩阵B的数据地址、结果矩阵地址三个地址中的一个,并且使用读/写控制信号加以配合;从内存中读到的数据,经过仲裁器的选择,分配到组合逻辑运算单元的两个输入端;组合逻辑运算单元的结果输入到乘累加器中并使能乘累加器,同时有限状态机判断当前是否计算完成矩阵的一行数据乘一列数据;
如果完成,所述地址生成器输出目标矩阵的地址并且使能写内存信号,将乘累加的结果写入内存中并清零乘累加器;如果未完成一行一列的计算,则继续读取矩阵的数据进行运算;运算完成后,输出一个完成信号表明计算已完成。
可选的,所述有限状态机包括空闲、读取A矩阵数据、读取B矩阵数据、累加计算结果和写回计算结果5个状态;
在空闲状态下,等待拓展指令译码器的使能信号,信号有效时,加速器开始运算,进入到读矩阵A数据状态;
在读取A矩阵数据,读写控制信号变成读使能,同时地址生成器输出矩阵A的数据地址,读取完成后进入读取矩阵B数据状态;
读取矩阵B数据完成后,进入累加计算结果状态,组合逻辑运算单元在一个时钟周期内输出结果;累加计算结果状态下,对乘累加器进行使能,累加计算结果;
在累加完成状态下,有限状态机判断是否完成矩阵运算的一行乘一列的运算,即是否得到输出矩阵的一个元素;若是,则进入写回数据状态,地址生成器中矩阵A的数据地址回到当前计算所在行的首地址,将矩阵A的其中一行跟矩阵B的所有列相乘结束后,在进行下一行矩阵元素的运算,若不是进入读取矩阵A数据状态;
在写回状态下,如果所有数据都运算完成并且成功写回,则进入空闲状态,并产生一个完成信号;反之,则进入读取矩阵A数据状态继续读取数据。
在本发明中提供了一种可配置矩阵乘法的加速器,适应于拓展指令,与处理器通过专用的指令处理接口耦合连接。所述加速器包括拓展指令译码器、拓展指令配置寄存器和矩阵乘法运算单元,所述拓展指令译码器将专用的指令处理接口的功能码和操作码信息进行译码配对,如匹配成功则加速器执行运算,反之,则不执行运算;所述拓展指令配置寄存器将专用的指令处理接口的源寄存器的数据进行存储;所述矩阵乘法运算单元根据拓展指令配置寄存器的信息执行不同规模的矩阵乘法运算。本发明提供的可配置矩阵乘法的加速器能够合理的适应当前SoC设计中拓展指令集的需求,实现指令化加速器,易于与CPU集成;适应于拓展指令集的可配置矩阵乘法的加速器,通过译码拓展指令的信息,对矩阵乘法加速器进行使能和配置,以实现指令化矩阵乘法加速运算,提高CPU的执行效率和计算能力,同时译码匹配的方式易于拓展更多的指令加速器。
附图说明
图1是本发明提供的加速器与处理器的耦合关系图;
图2是本发明的矩阵乘法运算单元的结构图;
图3是本发明的有限状态机的控制流程图。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种可配置矩阵乘法的加速器作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
实施例一
本发明提供了一种可配置矩阵乘法的加速器,适用于拓展指令,所述加速器与处理器通过专用的指令处理接口耦合连接。所述处理器(即CPU)读取到拓展指令之后,将该指令旁路到所述专用的指令处理接口,专用的指令处理接口将拓展指令的编码(包括功能码和操作码)以及携带配置信息的源寄存器rs1和rs2发送到本发明的可配置矩阵乘法的加速器。所述加速器包括拓展指令译码器、拓展指令配置寄存器和矩阵乘法运算单元,所述拓展指令译码器将专用的指令处理接口的功能码和操作码信息进行译码配对,如匹配成功则加速器执行运算,反之,则不执行运算;所述拓展指令配置寄存器将专用的指令处理接口的源寄存器的数据进行存储;所述矩阵乘法运算单元根据拓展指令配置寄存器的信息执行不同规模的矩阵乘法运算。
所述加速器是一个能够访问内存的加速器,所述矩阵乘法运算单元包括有限状态机,地址生成器、组合逻辑运算单元和乘累加器,如图2所示。所述矩阵乘法运算单元根据拓展指令译码器的使能信号和拓展指令配置寄存器中的配置信息,有限状态机进入到开始运算模式。开始运算后,所述地址生成器根据当前运算的数据所在的位置,自动生成下一次运算数据的地址;所述有限状态机控制地址生成器输出矩阵A的数据地址、矩阵B的数据地址、结果矩阵地址三个地址中的一个,并且使用读/写控制信号加以配合;从内存中读到的数据,经过仲裁器的选择,分配到组合逻辑运算单元的两个输入端;组合逻辑运算单元的结果输入到乘累加器中并使能乘累加器,同时有限状态机判断当前是否计算完成矩阵的一行数据乘一列数据;如果完成,所述地址生成器输出目标矩阵的地址并且使能写内存信号,将乘累加的结果通过内存接口写入内存中并清零乘累加器;如果未完成一行一列的计算,则继续读取矩阵的数据进行运算;运算完成后,输出一个完成信号表明计算已完成。
其中,所述有限状态机包括空闲、读取A矩阵数据、读取B矩阵数据、累加计算结果和写回计算结果5个状态,如图3所示。在空闲状态下,等待拓展指令译码器的使能信号,信号有效时,加速器开始运算,进入到读矩阵A数据状态;在读取A矩阵数据,读写控制信号变成读使能,同时地址生成器输出矩阵A的数据地址,读取完成后进入读取矩阵B数据状态;读取矩阵B数据完成后,进入累加计算结果状态,组合逻辑运算单元在一个时钟周期内输出结果;累加计算结果状态下,对乘累加器进行使能,累加计算结果;在累加完成状态下,有限状态机判断是否完成矩阵运算的一行乘一列的运算,即是否得到输出矩阵的一个元素;若是,则进入写回数据状态,地址生成器中矩阵A的数据地址回到当前计算所在行的首地址,将矩阵A的其中一行跟矩阵B的所有列相乘结束后,在进行下一行矩阵元素的运算,若不是进入读取矩阵A数据状态;在写回状态下,如果所有数据都运算完成并且成功写回,则进入空闲状态,并产生一个完成信号;反之,则进入读取矩阵A数据状态继续读取数据。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (2)
1.一种可配置矩阵乘法的加速器,适应于拓展指令,与处理器通过专用的指令处理接口耦合连接,其特征在于,该加速器包括:
拓展指令译码器,将专用的指令处理接口的功能码和操作码信息进行译码配对,如匹配成功则加速器执行运算,反之,则不执行运算;
拓展指令配置寄存器,将专用的指令处理接口的源寄存器的数据进行存储;
矩阵乘法运算单元,根据拓展指令配置寄存器的信息执行不同规模的矩阵乘法运算;
所述加速器能够访问内存,所述矩阵乘法运算单元包括有限状态机,地址生成器、组合逻辑运算单元和乘累加器;
所述有限状态机由所述拓展指令译码器的使能信号启动,根据所述拓展指令配置寄存器的配置信息,依次执行乘累加运算;
开始运算后,所述地址生成器根据当前运算的数据所在的位置,自动生成下一次运算数据的地址;所述有限状态机控制地址生成器输出矩阵A的数据地址、矩阵B的数据地址、结果矩阵地址三个地址中的一个,并且使用读/写控制信号加以配合;从内存中读到的数据,经过仲裁器的选择,分配到组合逻辑运算单元的两个输入端;组合逻辑运算单元的结果输入到乘累加器中并使能乘累加器,同时有限状态机判断当前是否计算完成矩阵的一行数据乘一列数据;
如果完成,所述地址生成器输出目标矩阵的地址并且使能写内存信号,将乘累加的结果写入内存中并清零乘累加器;如果未完成一行一列的计算,则继续读取矩阵的数据进行运算;运算完成后,输出一个完成信号表明计算已完成。
2.如权利要求1所述的可配置矩阵乘法的加速器,其特征在于,所述有限状态机包括空闲、读取A矩阵数据、读取B矩阵数据、累加计算结果和写回计算结果5个状态;
在空闲状态下,等待拓展指令译码器的使能信号,信号有效时,加速器开始运算,进入到读矩阵A数据状态;
在读取A矩阵数据,读写控制信号变成读使能,同时地址生成器输出矩阵A的数据地址,读取完成后进入读取矩阵B数据状态;
读取矩阵B数据完成后,进入累加计算结果状态,组合逻辑运算单元在一个时钟周期内输出结果;累加计算结果状态下,对乘累加器进行使能,累加计算结果;
在累加完成状态下,有限状态机判断是否完成矩阵运算的一行乘一列的运算,即是否得到输出矩阵的一个元素;若是,则进入写回数据状态,地址生成器中矩阵A的数据地址回到当前计算所在行的首地址,将矩阵A的其中一行跟矩阵B的所有列相乘结束后,在进行下一行矩阵元素的运算,若不是进入读取矩阵A数据状态;
在写回状态下,如果所有数据都运算完成并且成功写回,则进入空闲状态,并产生一个完成信号;反之,则进入读取矩阵A数据状态继续读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342677.2A CN111124360B (zh) | 2019-12-23 | 2019-12-23 | 一种可配置矩阵乘法的加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342677.2A CN111124360B (zh) | 2019-12-23 | 2019-12-23 | 一种可配置矩阵乘法的加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124360A CN111124360A (zh) | 2020-05-08 |
CN111124360B true CN111124360B (zh) | 2022-08-16 |
Family
ID=70501543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911342677.2A Active CN111124360B (zh) | 2019-12-23 | 2019-12-23 | 一种可配置矩阵乘法的加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124360B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220051086A1 (en) * | 2020-08-17 | 2022-02-17 | Alibaba Group Holding Limited | Vector accelerator for artificial intelligence and machine learning |
CN113138804B (zh) * | 2021-04-20 | 2022-10-04 | 清华大学 | 在传输过程中提取流数据特征的流处理器及其实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109213962A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 运算加速器 |
-
2019
- 2019-12-23 CN CN201911342677.2A patent/CN111124360B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109240746A (zh) * | 2016-04-26 | 2019-01-18 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109213962A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 运算加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN111124360A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI847670B (zh) | 使用矩陣乘法指令的設備 | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
CN102750127B (zh) | 一种协处理器 | |
US4229801A (en) | Floating point processor having concurrent exponent/mantissa operation | |
US4228498A (en) | Multibus processor for increasing execution speed using a pipeline effect | |
JPH06149545A (ja) | Cpuと乗算器とを有する半導体集積回路 | |
JPH05502125A (ja) | 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 | |
CN110427337B (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
CN111124360B (zh) | 一种可配置矩阵乘法的加速器 | |
CN113312303B (zh) | 处理器微架构系统、SoC芯片及低功耗智能设备 | |
Kim et al. | Silent-PIM: Realizing the processing-in-memory computing with standard memory requests | |
CN104008021A (zh) | 针对多数据体系结构的精确的异常信号发送 | |
US8413151B1 (en) | Selective thread spawning within a multi-threaded processing system | |
US7681017B2 (en) | Pseudo pipeline and pseudo pipelined SDRAM controller | |
CN116204232A (zh) | 一种数据操作位宽的扩展方法及装置 | |
US5742842A (en) | Data processing apparatus for executing a vector operation under control of a master processor | |
Liang et al. | Design of 16-bit fixed-point CNN coprocessor based on FPGA | |
CN110245096B (zh) | 一种实现处理器直接连接扩展计算模块的方法 | |
KR100639146B1 (ko) | 카테시안 제어기를 갖는 데이터 처리 시스템 | |
JP3520372B2 (ja) | メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除 | |
US20240330036A1 (en) | Parallel processing architecture with shadow state | |
JP3868454B2 (ja) | シミュレーションモデル | |
Salih et al. | Design and implementation of embedded multiprocessor architecture using FPGA | |
JP4125475B2 (ja) | Rtl生成システム、rtl生成方法、rtl生成プログラム及び半導体装置の製造方法 | |
CN115220795A (zh) | 指令处理方法、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |