CN106326521A - 一种静态超标量dsp周期模拟方法 - Google Patents
一种静态超标量dsp周期模拟方法 Download PDFInfo
- Publication number
- CN106326521A CN106326521A CN201510652006.1A CN201510652006A CN106326521A CN 106326521 A CN106326521 A CN 106326521A CN 201510652006 A CN201510652006 A CN 201510652006A CN 106326521 A CN106326521 A CN 106326521A
- Authority
- CN
- China
- Prior art keywords
- instruction
- simulation
- dsp
- dos
- command line
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种静态超标量DSP周期模拟方法,通过构建包括指令准备模块和指令执行模块的静态超标量DSP周期模拟系统,指令准备模块设置初始值、获取指令、确定延迟周期数、确定停顿周期数和模拟时钟推进,指令模拟模块执行功能模拟,从时序角度建立超标量DSP周期状态的数学模型,通过时序模拟保证了DSP流水线停顿时的周期精确状态,时序计算主要为求最值、求交集运算,均可采用位操作高效实现,避免了大量寄存器传输级的复制开销和寄存器依赖表的检索开销,仿真计算量较低,解决了目前DSP实时软件仿真测试时超标量DSP模拟方法不精确、速度较慢的问题。
Description
技术领域
本发明涉及一种DSP周期模拟方法,特别是一种静态超标量DSP周期模拟方法。
背景技术
处理器模拟方法是处理器架构评估、软件仿真测试的重要手段,按照模拟的真实程度基本分为指令周期级精确模拟方法和指令功能级精确模拟方法两类。处理器架构评估一般采用指令周期级精确模拟方法,通过对内部微结构进行精确建模,能够描述指令执行的周期状态,但是仿真计算量大;软件仿真测试一般采用指令功能级精确模拟方法,主要从功能角度对软件相关的处理器状态进行建模,仿真计算量小,但不考虑访问延迟和流水线停顿对指令周期的影响。
文献“Hyeong Bae Park,Tae Hoon Kim,Chang Won Ryu,Hua Jun Chi,Ju Sung Park.A cycle accurate model for a DSP[C].Strategic Technology,2006”中提出了一种适用于VLIW架构DSP的“逆序流水线”模拟方法,其核心思想是按照“执行-读-访存-译码-取指-预取”的顺序调用各级流水线功能模拟函数,模拟“预取-取指-译码-访存-读--执行”的流水线数据流过程。这种方法减少了流水线级间寄存器复制的时间开销;但是由于该方法未考虑数据依赖、资源冲突引起的流水线停顿问题,不能精确模拟静态超标量DSP的周期状态。
文献“李笑天,殷淑娟,何虎.一种DSP周期精度高效建模方法[J],计算机应用研究,2015,32(1):121-124”中描述一种适用于顺序超标量DSP架构评估的建模方法,遵循Gem5的ISA与CPU耦合的模拟架构,按照“取指-译码-分发-执行”的顺序模拟流水线过程,利用“寄存器依赖表”准确模拟了数据依赖引起的流水线停顿问题;但是该方法使用寄存器传输描述流水线的数据流,未对流水线级间寄存器复制的时间开销进行优化,速度较慢。
发明内容
本发明目的在于提供一种静态超标量DSP周期模拟方法,解决现有DSP模拟方法不精确、速度较慢的问题。
一种静态超标量DSP周期模拟方法的具体步骤为:
第一步构建静态超标量DSP周期模拟系统
静态超标量DSP周期模拟系统,包括指令准备模块和指令执行模块。
指令准备模块功能为:分析指令之间的控制流关系和数据流关系,控制进入流水线的指令序列及流水进度,实现对DSP指令时序的模拟。
指令模拟模块功能为:翻译指令语义,更新DSP的软件可见寄存器状态和内部流水线状态,实现对DSP指令集功能的模拟。
第二步指令准备模块设置初始值
指令准备模块设置指令行队列长度为流水线总级数L,设置当前指令行地址为复位代码地址,设置延迟周期、停顿周期计数值为0,设置分支缓冲器为空。
第三步指令准备模块获取指令
指令准备模块从当前指令行地址起始取出一个或多个指令,直至遇到指令行结尾标记。将取出的指令行放到指令行队列中。
第四步指令准备模块确定延迟周期数
指令准备模块根据DSP指令集语义,提取每个指令j占用的功能单元所处的流水线级数,取最靠后的功能单元所在流水线级数作为指令j的延迟周期数δj。
第五步指令准备模块确定停顿周期数
指令准备模块根据DSP指令集语义,提取每个指令j的输入操作数集pj、输出操作数集qj和占用的内部总线集合bj,由指令行内所有指令的输入操作数集与占用内部总线集的并集确定指令行i的输入集Pi,由指令行内所有指令的输出操作数集与占用内部总线集的并集确定输出指令行i的输出集Qi。在指令行队列中遍历当前指令行的所有前驱指令行k的输出集Qk,当Qk与当前指令行的输入集Pi存在交集时,当前指令行i依赖于前驱指令行k,根据发生依赖的数据在两指令行所处的流水线级数之差、间隔指令行数确定造成的流水线停顿周期数Δi:
Δi=max{sk-si-(i-k),0} (0.1)
其中,sk是依赖的数据在前驱指令行k中作为输出所处最靠后的流水线级数,si是依赖的数据在当前指令行i中作为输入所处最靠前的流水线级数。
第六步指令准备模块模拟时钟推进
指令准备模块模拟时钟推进一个指令周期后的流水线状态,更新当前指令行停顿周期数和行内所有指令的延迟周期数:
当Δi=0时,当前指令行结束停顿,检查指令行中否存在延迟结束的指令,当时,继续推进时钟一个指令周期,直至存在某个指令l满足δl=0。
第七步指令模拟模块执行功能模拟
指令模拟模块调用指令l的功能模拟函数,根据DSP指令集定义的功能模拟DSP的软件可见寄存器状态的更新。当指令l为跳转指令时,按照最近最少替换策略将跳转分支地址添加到分支缓冲器,并根据DSP动态状态更新内部流水线状态为:
其中,r是DSP规定的分支预测所处的流水线级数,x是DSP规定的跳转条件判断所处的流水线级数。
当时,指令行中还有指令未执行功能模拟,指令准备模块继续模拟时钟推进。否则,整个指令行模拟完毕,将当前指令行地址更新为下一个指令行地址。当下一个指令行为空时,则模拟结束;否则指令准备模块重新获取指令、确定延迟周期数和停顿周期数、模拟时钟推进,指令模拟模块执行功能模拟。
本发明主要用于解决目前DSP实时软件仿真测试时超标量DSP模拟方法不精确、速度较慢的问题,采用单指令的延迟周期数、指令行的停顿周期数两个变量模拟流水线时序,保证了DSP流水线停顿时的周期精确状态,时序计算主要为求最值、求交集运算,均可 采用位操作高效实现,避免了大量寄存器传输级的复制开销和寄存器依赖表的检索开销,仿真计算量较低。
具体实施方式
一种静态超标量DSP周期模拟方法的具体步骤为:
以ADI公司8级流水线的静态超标量DSP TS101为例,
第一步构建静态超标量DSP周期模拟系统
静态超标量DSP周期模拟系统,包括指令准备模块和指令执行模块。
指令准备模块功能为:分析指令之间的控制流关系和数据流关系,控制进入流水线的指令序列及流水进度,实现对DSP指令时序的模拟,即对TS101指令时序的模拟。
指令模拟模块功能为:翻译指令语义,更新DSP的软件可见寄存器状态和内部流水线状态,实现对DSP指令集功能的模拟,即对TigerSHARC指令集功能的模拟。
第二步指令准备模块设置初始值
指令准备模块设置指令行队列长度为8,设置当前指令行地址为0x00000000,设置延迟周期、停顿周期计数值为0,设置分支缓冲器128个分支入口均为空。
第三步指令准备模块获取指令
指令准备模块从当前指令行地址起始取出1~4个指令,直至遇到某指令MSB=1。将取出的指令行放到指令行队列中。
第四步指令准备模块确定延迟周期数
根据《ADSP-TS101 TigerSHARC DSP处理器程序设计参考手册》中“指令并行规则”,提取每个指令j占用的功能单元所处的流水线级数,取最靠后的功能单元所在流水线级数作为指令j的延迟周期数δj,见下表:
最靠后的功能单元 | δj |
X-IALU,Y-IALU | 5 |
X-ALU,Y-ALU | 8 |
X-乘法器,X-乘法器 | 8 |
X-移位器,Y-移位器 | 8 |
第五步指令准备模块确定停顿周期数
根据《ADSP-TS101 TigerSHARC DSP处理器程序设计参考手册》中“指令并行规则”,提取每个指令j的输入操作数集pj、输出操作数集qj和占用的内部总线集合bj,由指令行内所有指令的输入操作数集与占用内部总线集的并集确定指令行i的输入集Pi,由指令行内所有指令的输出操作数集与占用内部总线集的并集确定输出指令行i的输出集Qi。Pi、Qi中元素的取值范围是:X-R0寄存器~X-R31寄存器、J0寄存器~J31寄存器、Y-R0寄存器~Y-R31寄存器、K0寄存器~K31寄存器、存储器、其它各系统寄存器。
当指令为装载指令或存储指令时,对存储器地址不加区分;
在指令行队列中遍历当前指令行的所有前驱指令行k的输出集Qk,当Qk与当前指令行的输入集Pi存在交集时,当前指令行i依赖于前驱指令行k,根据发生依赖的数据在两指令行所处的流水线级数之差、间隔指令行数确定造成的流水线停顿周期数Δi:
Δi=max{sk-si-(i-k),0} (0.4)
其中,sk是依赖的数据在前驱指令行k中作为输出所处最靠后的流水线级数,si是依赖的数据在当前指令行i中作为输入所处最靠前的流水线级数。
第六步指令准备模块模拟时钟推进
指令准备模块模拟时钟推进一个指令周期后的流水线状态,更新当前指令行停顿周期数和行内所有指令的延迟周期数:
当Δi=0时,当前指令行结束停顿,检查指令行中否存在延迟结束的指令,当时,继续推进时钟一个指令周期,直至存在某个指令l满足δl=0。
第七步指令模拟模块执行功能模拟
指令模拟模块调用指令l的功能模拟函数,根据《ADSP-TS101 TigerSHARC DSP处理器程序设计参考手册》中“指令集”定义的功能模拟TS101的软件可见寄存器状态的更新。当指令l为跳转指令时,还需按照最近最少替换策略将跳转分支地址添加到分支缓冲器, 并根据TS101动态状态更新内部流水线状态为:
其中,r为4,x为8。
当时,指令行中还有指令未执行功能模拟,指令准备模块继续模拟时钟推进。否则,整个指令行模拟完毕,将当前指令行地址更新为下一个指令行地址。当下一个指令行为空时,则模拟结束;否则指令准备模块重新获取指令、确定延迟周期数和停顿周期数、模拟时钟推进,指令模拟模块执行功能模拟。
Claims (1)
1.一种静态超标量DSP周期模拟方法,其特征在于具体步骤为:
第一步 构建静态超标量DSP周期模拟系统
静态超标量DSP周期模拟系统,包括指令准备模块和指令执行模块;
指令准备模块功能为:分析指令之间的控制流关系和数据流关系,控制进入流水线的指令序列及流水进度,实现对DSP指令时序的模拟;
指令模拟模块功能为:翻译指令语义,更新DSP的软件可见寄存器状态和内部流水线状态,实现对DSP指令集功能的模拟;
第二步 指令准备模块设置初始值
指令准备模块设置指令行队列长度为流水线总级数L,设置当前指令行地址为复位代码地址,设置延迟周期、停顿周期计数值为0,设置分支缓冲器为空;
第三步 指令准备模块获取指令
指令准备模块从当前指令行地址起始取出一个或多个指令,直至遇到指令行结尾标记;将取出的指令行放到指令行队列中;
第四步 指令准备模块确定延迟周期数
指令准备模块根据DSP指令集语义,提取每个指令j占用的功能单元所处的流水线级数,取最靠后的功能单元所在流水线级数作为指令j的延迟周期数δj;
第五步指令准备模块确定停顿周期数
指令准备模块根据DSP指令集语义,提取每个指令j的输入操作数集pj、输出操作数集qj和占用的内部总线集合bj,由指令行内所有指令的输入操作数集与占用内部总线集的并集确定指令行i的输入集Pi,由指令行内所有指令的输出操作数集与占用内部总线集的并集确定输出指令行i的输出集Qi;在指令行队列中遍历当前指令行的所有前驱指令行k的输出集Qk,当Qk与当前指令行的输入集Pi存在交集时,当前指令行i依赖于前驱指令行k,根据发生依赖的数据在两指令行所处的流水线级数之差、间隔指令行数确定造成的流水线停顿周期数Δi:
Δi=max{sk-si-(i-k),0} (0.1)
其中,sk是依赖的数据在前驱指令行k中作为输出所处最靠后的流水线级数,si是 依赖的数据在当前指令行i中作为输入所处最靠前的流水线级数;
第六步指令准备模块模拟时钟推进
指令准备模块模拟时钟推进一个指令周期后的流水线状态,更新当前指令行停顿周期数和行内所有指令的延迟周期数:
当Δi=0时,当前指令行结束停顿,检查指令行中否存在延迟结束的指令,当时,继续推进时钟一个指令周期,直至存在某个指令l满足δl=0;
第七步指令模拟模块执行功能模拟
指令模拟模块调用指令l的功能模拟函数,根据DSP指令集定义的功能模拟DSP的软件可见寄存器状态的更新;当指令l为跳转指令时,按照最近最少替换策略将跳转分支地址添加到分支缓冲器,并根据DSP动态状态更新内部流水线状态为:
其中,r是DSP规定的分支预测所处的流水线级数,x是DSP规定的跳转条件判断所处的流水线级数;
当时,指令行中还有指令未执行功能模拟,指令准备模块继续模拟时钟推进;否则,整个指令行模拟完毕,将当前指令行地址更新为下一个指令行地址;当下一个指令行为空时,则模拟结束;否则指令准备模块重新获取指令、确定延迟周期数和停顿周期数、模拟时钟推进,指令模拟模块执行功能模拟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510652006.1A CN106326521B (zh) | 2015-10-10 | 2015-10-10 | 一种静态超标量dsp周期模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510652006.1A CN106326521B (zh) | 2015-10-10 | 2015-10-10 | 一种静态超标量dsp周期模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106326521A true CN106326521A (zh) | 2017-01-11 |
CN106326521B CN106326521B (zh) | 2019-12-03 |
Family
ID=57725073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510652006.1A Active CN106326521B (zh) | 2015-10-10 | 2015-10-10 | 一种静态超标量dsp周期模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106326521B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107589960A (zh) * | 2017-08-30 | 2018-01-16 | 北京轩宇信息技术有限公司 | 一种基于寄存器访问冲突检测的dsp指令模拟方法 |
CN115277499A (zh) * | 2022-07-20 | 2022-11-01 | 科东(广州)软件科技有限公司 | Mac设备的延迟参数确定方法、装置、硬件平台及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513126B1 (en) * | 2000-01-06 | 2003-01-28 | Lsi Logic Corporation | System for modeling a processor-encoder interface by counting number of fast clock cycles occuring in one slower clock cycle and triggering a domain module if fast clock reaches the corresponding number of cycles |
US20040176941A1 (en) * | 2003-03-04 | 2004-09-09 | Shan-Chyun Ku | Method of simulating computation instructions for an instruction set simulator |
US20050091028A1 (en) * | 2003-10-22 | 2005-04-28 | Takahiro Kondo | Simulator and simulation method |
US20120078606A1 (en) * | 2010-09-28 | 2012-03-29 | Guo zhi-yang | Developing system and method for optimizing the energy consumption of an application program for a digital signal processor |
CN104407968A (zh) * | 2014-10-30 | 2015-03-11 | 北京控制工程研究所 | 一种通过静态分析测算代码指令最长运行时间的方法 |
CN104750603A (zh) * | 2013-12-30 | 2015-07-01 | 联芯科技有限公司 | 一种多核dsp软件仿真器及其物理层软件测试方法 |
-
2015
- 2015-10-10 CN CN201510652006.1A patent/CN106326521B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513126B1 (en) * | 2000-01-06 | 2003-01-28 | Lsi Logic Corporation | System for modeling a processor-encoder interface by counting number of fast clock cycles occuring in one slower clock cycle and triggering a domain module if fast clock reaches the corresponding number of cycles |
US20040176941A1 (en) * | 2003-03-04 | 2004-09-09 | Shan-Chyun Ku | Method of simulating computation instructions for an instruction set simulator |
US20050091028A1 (en) * | 2003-10-22 | 2005-04-28 | Takahiro Kondo | Simulator and simulation method |
US20120078606A1 (en) * | 2010-09-28 | 2012-03-29 | Guo zhi-yang | Developing system and method for optimizing the energy consumption of an application program for a digital signal processor |
CN104750603A (zh) * | 2013-12-30 | 2015-07-01 | 联芯科技有限公司 | 一种多核dsp软件仿真器及其物理层软件测试方法 |
CN104407968A (zh) * | 2014-10-30 | 2015-03-11 | 北京控制工程研究所 | 一种通过静态分析测算代码指令最长运行时间的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107589960A (zh) * | 2017-08-30 | 2018-01-16 | 北京轩宇信息技术有限公司 | 一种基于寄存器访问冲突检测的dsp指令模拟方法 |
CN115277499A (zh) * | 2022-07-20 | 2022-11-01 | 科东(广州)软件科技有限公司 | Mac设备的延迟参数确定方法、装置、硬件平台及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106326521B (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
US5941991A (en) | Method of estimating power consumption of each instruction processed by a microprocessor | |
CN102750131B (zh) | 一种面向gpu的双调归并排序方法 | |
WO2020062086A1 (zh) | 选择处理器的方法和装置 | |
CN107590535A (zh) | 可编程神经网络处理器 | |
CN100361072C (zh) | 流水线处理一系列处理指令的方法和设备 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN101566942A (zh) | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 | |
US11734480B2 (en) | Performance modeling and analysis of microprocessors using dependency graphs | |
CN102073480B (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
CN105630458A (zh) | 一种基于人工神经网络的乱序处理器稳态下平均吞吐率的预测方法 | |
CN106326521A (zh) | 一种静态超标量dsp周期模拟方法 | |
CN105094949A (zh) | 一种基于指令计算模型与反馈补偿的模拟方法与系统 | |
CN107688704A (zh) | 基于Petri网模型的ASIP行为逻辑综合方法 | |
Emani et al. | A Comprehensive Performance Study of Large Language Models on Novel AI Accelerators | |
CN101739383A (zh) | 一种可配置处理器体系结构和控制方法 | |
CN101561833A (zh) | 专用指令集处理器的设计方法 | |
CN102033733B (zh) | 新型mcu结构 | |
Schmaltz | Towards the pervasive formal verification of multi-core operating systems and hypervisors implemented in C | |
CN103268219A (zh) | 基于流水线架构的海量文件指导型预取并行处理加速方法 | |
Black et al. | Emumaker86: a hardware simulator for teaching CPU design | |
CN103677965B (zh) | 一种全数字快速仿真方法 | |
WO2019113007A1 (en) | Pipelined tensor manipulation within a reconfigurable fabric | |
Callanan et al. | Estimating stream application performance in early-stage system design | |
Fytraki et al. | ReSim, a trace-driven, reconfigurable ILP processor simulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |