CN106227684B - 一种高性能dsp访存流水线电路及其实现方法 - Google Patents
一种高性能dsp访存流水线电路及其实现方法 Download PDFInfo
- Publication number
- CN106227684B CN106227684B CN201610627640.4A CN201610627640A CN106227684B CN 106227684 B CN106227684 B CN 106227684B CN 201610627640 A CN201610627640 A CN 201610627640A CN 106227684 B CN106227684 B CN 106227684B
- Authority
- CN
- China
- Prior art keywords
- memory access
- module
- address
- access
- data
- 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
- 230000008878 coupling Effects 0.000 claims abstract description 6
- 238000010168 coupling process Methods 0.000 claims abstract description 6
- 238000005859 coupling reaction Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000004064 recycling Methods 0.000 claims 1
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种高性能DSP访存流水线,包括:访存地址计算模块,用于根据访存指令形式产生多个有效地址;访存地址冲突解决模块,用于判断多个地址的存储器访问冲突及确定地址发射排序;访存请求发送模块;访存请求接收模块;核间访存请求发送模块,用于检测核间访存请求,并将其发送出去;读访存数据回收模块,用于拼接发生冲突的多个读地址在多周期后返回的数据;读访存数据输出模块,用于输出读访存数据。本发明以流水线形式实现数据SRAM的读写;流水线深度较短,仅为5级,即单指令执行需要5个时钟周期;核间访存指令发送与接收模块可以实现两个DSP内核的紧耦合;访存地址冲突解决方案可以实现最大的数据吞吐效率。
Description
技术领域
本发明涉及数字信号处理器技术领域,尤其是一种高性能DSP访存流水线电路及其实现方法。
背景技术
数字信号处理器DSP相较通用中央处理器CPU的优势之一在于其强大的数据运算能力,在DSP内核集成了数目较多的算术逻辑运算单元或是特殊处理单元,而为了最大限度的发挥这些运算部件的并行性,需要设计与之吞吐率相配套的访存通道。
目前,主流的DSP均以数据Cache取代访存功能,数据Cache的工作原理是程序运行的局部性,如果运行的程序局部性差,会造成频繁的Cache缺失,所以数据Cache难以保证实时处理的要求。同时,与数据Cache相配套的往往是分层的存储结构,数据Cache位于分层存储结构的顶端,内置的SRAM一般较小(K级),不利于多核共享数据存储。
发明内容
本发明的首要目的在于提供一种在片内设置规模较大的SRAM进行数据访存,并具有速度更快、数据空间更大的优点的高性能DSP访存流水线电路。
为实现上述目的,本发明采用了以下技术方案:一种高性能DSP访存流水线电路,包括:
访存地址计算模块,用于根据访存指令形式产生多个有效地址;
访存地址冲突解决模块,用于判断多个地址的存储器访问冲突及确定地址发射排序;
访存请求发送模块,用于将访问邻核的访存请求发送至邻核;
访存请求接收模块,用于接收由邻核发送过来的的访存请求;
核间访存请求发送模块,用于检测核间访存请求,并将其发送出去;
读访存数据回收模块,用于拼接发生冲突的多个读地址在多周期后返回的数据,回收过程是访存地址冲突解决的逆过程;
读访存数据输出模块,用于输出读访存数据。
所述访存地址计算模块的计算访存地址的公式为:ADDR=Rn+Rm+C,其中,ADDR为访存地址;Rn为参与计算的基地址;Rm为参与计算的偏移地址;C为立即数。
所述访存地址冲突解决模块,当访存指令计算出多个地址时,不冲突的地址同时发射,冲突的地址按下标大小顺序发射。
每个DSP内核均提供一组核间访存指令发送和接收模块,A核的发送模块连接B核的接收模块,A核的接收模块连接B核的发送模块,即实现AB两核的耦合。
本发明的另一目的在于提供一种高性能DSP访存流水线电路的实现方法,该方法包括下列顺序的步骤:
(1)访存地址计算模块根据指令译码产生的基地址、偏移地址计算访存地址;
(2)访存地址冲突解决模块根据访存地址冲突情况决定向后级流水的发射顺序;同时,并行实现核间访存请求的接收逻辑,接收到的访存请求会参与本核访存请求的仲裁;
(3)访存请求发送模块将访存微请求发送至SRAM接口;
(4)核间访存请求发送模块获取SRAM输出数据并寄存,同时将核间访存请求发送至邻核;
(5)读访存数据回收模块收集读访存数据;
(6)读访存数据输出模块输出读访存数据。
由上述技术方案可知,本发明的优点在于:第一,以流水线形式实现数据SRAM的读写;第二,流水线深度较短,仅为5级,即单指令执行需要5个时钟周期;第三,核间访存指令发送与接收模块可以实现两个DSP内核的紧耦合;第四,访存地址冲突解决方案可以实现最大的数据吞吐效率。
附图说明
图1为访存部件流水线及主要逻辑分部框图;
图2为片内SRAM存储器示意图;
图3为访存地址计算原理示意图;
图4为访存地址冲突解决示意图;
图5为读访存数据回收原理示意图。
具体实施方式
如图1所示,一种高性能DSP访存流水线电路,包括访存地址计算模块,用于根据访存指令形式产生多个有效地址;访存地址冲突解决模块,用于判断多个地址的存储器访问冲突及确定地址发射排序;访存请求发送模块,用于将访问邻核的访存请求发送至邻核;访存请求接收模块,用于接收由邻核发送过来的的访存请求;核间访存请求发送模块,用于检测核间访存请求,并将其发送出去;读访存数据回收模块,用于拼接发生冲突的多个读地址在多周期后返回的数据,回收过程是访存地址冲突解决的逆过程;读访存数据输出模块,用于输出读访存数据。
如图1所示,所述访存地址计算模块的计算访存地址的公式为:ADDR=Rn+Rm+C,其中,ADDR为访存地址;Rn为参与计算的基地址;Rm为参与计算的偏移地址;C为立即数。按照一定的基地址偏移规则,可以产生1至8个有效地址。
所述访存地址冲突解决模块,当访存指令计算出多个地址时,地址之间有可能访问相同一块数据存储区域,此时需要合理安排地址之间的发射顺序。采取的最优解决方案为:不冲突的地址同时发射,冲突的地址按下标大小顺序发射。这样可以实现最小的执行周期,提高访存效率。
DSP一条执行指令可以包含多个读访存地址,这些地址是在同一周期计算出来,同样需要在相同周期内返回数据。读访存数据回收逻辑是通过统计访存地址冲突解决模块地址冲突的节拍来判断数据是否准备就绪。地址冲突节拍随流水线由访存地址冲突解决模块带至读访存数据回收模块。
每个DSP内核均提供一组核间访存指令发送和接收模块,A核的发送模块连接B核的接收模块,A核的接收模块连接B核的发送模块,即实现AB两核的耦合。
如图1所示,本实现方法包括下列顺序的步骤:(1)访存地址计算模块根据指令译码产生的基地址、偏移地址计算访存地址;(2)访存地址冲突解决模块根据访存地址冲突情况决定向后级流水的发射顺序;由于发射可能需要多周期,该逻辑可能会引起流水线停顿,同时,并行实现核间访存请求的接收逻辑,接收到的访存请求会参与本核访存请求的仲裁;(3)访存请求发送模块将访存微请求发送至SRAM接口;(4)核间访存请求发送模块获取SRAM输出数据并寄存,同时将核间访存请求发送至邻核;(5)读访存数据回收模块收集读访存数据;(6)读访存数据输出模块输出读访存数据。
如图2所示,片内SRAM存储器由于规模较大,需要以较小的SRAM根据地址片选加以组合。图2中示意了以8Kx32的SRAM组合成为48Mb SRAM的原理,48Mb SRAM根据地址高位分为6个block,每个block再根据地址低位分为8个bank,中间位为bank内偏移地址。
如图3所示,访存地址计算是与指令集中定义的访存指令相匹配的,典型的访存地址计算模式包含:单字地址、双字地址、模8地址、双模8地址、位反序地址等。访存地址运算主要逻辑部件是多比特加法器与选择器。考虑到多比特加法器组合逻辑延时较大,为平衡流水线各级的时间,将访存地址计算单独设计为一级流水。
如图4所示,指令0和指令1是先后进行流水线的两条访存指令。指令0包含两条读访存请求,DSP支持SIMD,并且访问相同的block,指令0中的读访存0包含4个地址,并且需要4个时钟周期,指令0中的读访存1需要3个时钟周期,则该指令行一共需要7个时钟周期。指令1包含一条读访存指令和两条写访存指令,读访存需要1个时钟周期,写访存0需要1个时钟周期,写访存1需要3个时钟周期,两个写访存访问相同的block,该指令行一共需要4个时钟周期。
如图5所示,读访存数据回收逻辑是比较访存地址冲突解决模块地址冲突节拍与总节拍数来确认数据是否收集完毕。如果冲突节拍小于总节拍数,则更新读访存数据输出模块数据寄存器;如果冲突节拍等于总节拍数,则表示数据收集完毕。
综上所述,本发明以流水线形式实现数据SRAM的读写;流水线深度较短,仅为5级,即单指令执行需要5个时钟周期;核间访存指令发送与接收模块可以实现两个DSP内核的紧耦合;访存地址冲突解决方案可以实现最大的数据吞吐效率。
Claims (5)
1.一种高性能DSP访存流水线电路,其特征在于:包括:
访存地址计算模块,用于根据访存指令形式产生多个有效地址;
访存地址冲突解决模块,用于判断多个地址的存储器访问冲突及确定地址发射排序;
访存请求发送模块,用于将访问邻核的访存请求发送至邻核;
访存请求接收模块,用于接收由邻核发送过来的的访存请求;
核间访存请求发送模块,用于检测核间访存请求,并将其发送出去;
读访存数据回收模块,用于拼接发生冲突的多个读地址在多周期后返回的数据,回收过程是访存地址冲突解决的逆过程;
读访存数据输出模块,用于输出读访存数据。
2.根据权利要求1所述的高性能DSP访存流水线电路,其特征在于:所述访存地址计算模块的计算访存地址的公式为:ADDR=Rn+Rm+C,其中,ADDR为访存地址;Rn为参与计算的基地址;Rm为参与计算的偏移地址;C为立即数。
3.根据权利要求1所述的高性能DSP访存流水线电路,其特征在于:所述访存地址冲突解决模块,当访存指令计算出多个地址时,不冲突的地址同时发射,冲突的地址按下标大小顺序发射。
4.根据权利要求1所述的高性能DSP访存流水线电路,其特征在于:每个DSP内核均提供一组核间访存指令发送和接收模块,A核的发送模块连接B核的接收模块,A核的接收模块连接B核的发送模块,即实现AB两核的耦合。
5.根据权利要求1至4中任一项所述的高性能DSP访存流水线电路的实现方法,该方法包括下列顺序的步骤:
(1)访存地址计算模块根据指令译码产生的基地址、偏移地址计算访存地址;
(2)访存地址冲突解决模块根据访存地址冲突情况决定向后级流水的发射顺序;同时,并行实现核间访存请求的接收逻辑,接收到的访存请求会参与本核访存请求的仲裁;
(3)访存请求发送模块将访存微请求发送至SRAM接口;
(4)核间访存请求发送模块获取SRAM输出数据并寄存,同时将核间访存请求发送至邻核;
(5)读访存数据回收模块收集读访存数据;
(6)读访存数据输出模块输出读访存数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610627640.4A CN106227684B (zh) | 2016-08-03 | 2016-08-03 | 一种高性能dsp访存流水线电路及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610627640.4A CN106227684B (zh) | 2016-08-03 | 2016-08-03 | 一种高性能dsp访存流水线电路及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227684A CN106227684A (zh) | 2016-12-14 |
CN106227684B true CN106227684B (zh) | 2019-06-04 |
Family
ID=57536388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610627640.4A Active CN106227684B (zh) | 2016-08-03 | 2016-08-03 | 一种高性能dsp访存流水线电路及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227684B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733415B (zh) * | 2018-05-16 | 2021-03-16 | 中国人民解放军国防科技大学 | 支持向量随机访存的方法及装置 |
CN111026445A (zh) * | 2019-12-17 | 2020-04-17 | 湖南长城银河科技有限公司 | 一种智能识别方法及芯片 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556471A (zh) * | 2004-01-09 | 2004-12-22 | 上海交通大学 | 消除内存访问等待的数字信号处理器内存控制方法 |
TWI265455B (en) * | 2005-04-21 | 2006-11-01 | King Billion Electronics Co Lt | Integrated data processor |
US20140181476A1 (en) * | 2012-12-21 | 2014-06-26 | Srikanth T. Srinivasan | Scheduler Implementing Dependency Matrix Having Restricted Entries |
CN103914417A (zh) * | 2014-04-21 | 2014-07-09 | 成都智恒博纳科技有限公司 | 一种基于dsp的数据传输与处理的方法 |
CN104461957A (zh) * | 2014-08-28 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种异构多核cpu共享片上高速缓存的方法及装置 |
US20150278091A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
-
2016
- 2016-08-03 CN CN201610627640.4A patent/CN106227684B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556471A (zh) * | 2004-01-09 | 2004-12-22 | 上海交通大学 | 消除内存访问等待的数字信号处理器内存控制方法 |
TWI265455B (en) * | 2005-04-21 | 2006-11-01 | King Billion Electronics Co Lt | Integrated data processor |
US20140181476A1 (en) * | 2012-12-21 | 2014-06-26 | Srikanth T. Srinivasan | Scheduler Implementing Dependency Matrix Having Restricted Entries |
US20150278091A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
CN103914417A (zh) * | 2014-04-21 | 2014-07-09 | 成都智恒博纳科技有限公司 | 一种基于dsp的数据传输与处理的方法 |
CN104461957A (zh) * | 2014-08-28 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种异构多核cpu共享片上高速缓存的方法及装置 |
Non-Patent Citations (2)
Title |
---|
X-DSP处理器中软件流水循环缓冲的设计与实现;薛杨;《第十三届计算机工程与工艺会议(NCCET09’)论文集》;20130613;第112-115页 * |
一种基于多总线结构的DSP访存控制器;黄虹,等;《第十三届计算机工程与工艺会议(NCCET09’)论文集》;20130613;第104-108页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106227684A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Nugteren et al. | A detailed GPU cache model based on reuse distance theory | |
US9442861B2 (en) | System and method for out-of-order prefetch instructions in an in-order pipeline | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN103714039B (zh) | 通用计算数字信号处理器 | |
CN106020773B (zh) | 异构众核架构中有限差分算法的优化方法 | |
US20090006036A1 (en) | Shared, Low Cost and Featureable Performance Monitor Unit | |
CN102073480B (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
CN106227684B (zh) | 一种高性能dsp访存流水线电路及其实现方法 | |
CN106575279A (zh) | 可编程平台上的加速器架构 | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
Shang et al. | LACS: A high-computational-efficiency accelerator for CNNs | |
Calore et al. | FER: A Benchmark for the Roofline Analysis of FPGA Based HPC Accelerators | |
Ranga | ParrotPiton and ZynqParrot: FPGA Enablements for the BlackParrot RISC-V Processor | |
Feliu et al. | Itslf: Inter-thread store-to-load forwardingin simultaneous multithreading | |
CN109669881A (zh) | 一种基于Cache空间预约算法的计算方法 | |
Li et al. | NDRec: A Near-Data Processing System for Training Large-Scale Recommendation Models | |
Mawer et al. | The potential of dynamic binary modification and CPU-FPGA SoCs for simulation | |
Kim et al. | Architecting and programming a hardware-incoherent multiprocessor cache hierarchy | |
Mokhov et al. | Language and hardware acceleration backend for graph processing | |
CN105843589B (zh) | 一种应用于vliw类型处理器的存储器装置 | |
Gong et al. | Storage assignment during high-level synthesis for configurable architectures | |
Hung et al. | Hardware-accelerated cache simulation for multicore by FPGA | |
Manocha | Optimizing Data Supply and Memory Management for Graph Applications in Post-Moore Hardware-Software Systems | |
Ulfsnes | Design of a snoop filter for snoop based cache coherency protocols | |
Nilakantan et al. | Evaluation of an accelerator architecture for speckle reducing anisotropic diffusion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |