CN106933652A - 一种基于延迟槽补偿的dsp流水线模拟方法 - Google Patents
一种基于延迟槽补偿的dsp流水线模拟方法 Download PDFInfo
- Publication number
- CN106933652A CN106933652A CN201710156920.6A CN201710156920A CN106933652A CN 106933652 A CN106933652 A CN 106933652A CN 201710156920 A CN201710156920 A CN 201710156920A CN 106933652 A CN106933652 A CN 106933652A
- Authority
- CN
- China
- Prior art keywords
- groove
- instruction
- node
- streamline
- dsp
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 238000004088 simulation Methods 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 2
- 230000004083 survival effect Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于延迟槽补偿的DSP流水线模拟方法,通过按照流水线的效果来模拟,弥补了传统的按照流水线行为来模拟的方法带来的程序执行效率低下的缺点。本发明的主要思想是:(1)通过剪裁模拟的流水线,加速流水线的流动,从而加快负载程序的执行速度;(2)通过延迟槽补偿机制,在流水线被剪裁的情况下,保证软件流水与硬件流水的效果一致,从而保证程序的正确执行。
Description
技术领域
本发明涉及CPU流水线模拟,尤其涉及一种基于延迟槽补偿的DSP流水线模拟方法。
背景技术
用软件来模拟硬件,可以带来许多好处。比如硬件的生产需要成本,而且硬件易损坏,而软件在被正确开发之后,就几乎不再需要成本。用来模拟计算机的软件,模拟器,其出现给软件的开发、调试带来了巨大的效率提升,比如有了安卓模拟器,当程序员在开发安卓软件的时候,只需在PC上进行程序开发,然后由模拟器来直接运行,而不需要把开发的程序下载到真实的安卓机上。
对于计算机来说,核心是处理器(CPU),而CPU的核心可以说是流水线,流水线驱动着CPU的工作。所以模拟器最重要也最困难的任务就是CPU流水线的模拟。
对于DSP流水线的模拟,传统上是按行为来模拟流水线,比如DSP流水线有PG、PS、PW、PR、DP、DC、E1、E2……E10等共16个阶段,即一个时钟内流水线做了16种不同的工作,对于硬件来说,这16种工作是并行的,流水线越深,在一定程度上程序就跑得越快,而对软件模拟来说,是串行执行的,流水线越深,需要模拟的行为就越多,效率就越低。
发明内容
本发明的目的是针对传统的DSP流水线模拟方法的不足,提供一种基于延迟槽补偿的DSP流水线模拟方法。
本发明的目的是通过以下技术方案来实现的:一种基于延迟槽补偿的DSP流水线模拟方法,具体包括如下步骤:
(1)解析目标文件,得到代码段和程序入口点,把代码段加载到模拟内存中。
(2)对代码段的指令进行译码,保存译码后的信息,得到PC到译码后的信息的映射关系。
(3)初始化延迟槽,初始化PC为程序入口点,清空延迟槽内的所有结点。
(4)令CPU向前迭代一个时钟,根据当前的PC值,通过步骤(2)得到的映射关系,得到当前指令对应的译码后的信息,解释执行当前指令,如果该指令在非E1阶段写回,则在延迟槽中新增一个结点,该结点保存了需要写回的目的寄存器、写回的结果值以及写回的时间(CPU时钟数);如果该指令在E1阶段写回,则直接将结果写回寄存器;
(5)检查延迟槽内所有结点写回的时间是否与当前时间一致,若结点写回的时间与当前时间保持一致,则将结点记录的信息进行写回,然后移除该结点。
(6)循环步骤(4)-步骤(5),直到最后一条指令执行完毕,完成了流水线的模拟。
进一步的,在所述步骤(3)中初始化延迟槽,即初始化一个含空结点的链表或哈希表,将其作为指令结果写回的暂存结构。
本发明的有益效果是,在保证正确性的基础上,大大加快了流水线模拟方法的效率,加快了目标程序执行的速度:
(1)剪裁了模拟中的流水线,提高了负载程序的执行速度。
(2)通过延迟槽补偿机制,在流水线剪裁的情况下,保证流水线的正确流动。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图对本发明做进一步的说明。
如图1所示,一种基于延迟槽补偿的DSP流水线模拟方法,具体包括如下步骤:
(1)加载目标文件,根据目标文件的格式进行解析,得到程序入口点、代码段等信息。代码段是指令的目标码集合,将代码段加载到模拟内存中。对每条指令目标码进行译码,将译码后的结构保存起来,得到一个指令到指令译码后的一个映射。
(2)对代码段的指令进行译码,保存译码后的信息,得到PC到译码后的信息的映射关系。
(3)初始化延迟槽,即初始化一个含空结点的链表或哈希表,将其作为指令结果写回的暂存结构,初始化PC为程序入口点,清空延迟槽内的所有结点。
(4)令CPU向前迭代一个时钟,根据当前的PC值,通过步骤(2)得到的映射关系,索引得到当前指令对应的译码后的信息,解释执行当前指令,如果该指令在非E1阶段写回,如Branch等指令,则在延迟槽中新增一个结点,该结点保存了需要写回的目的寄存器、写回的结果值以及写回的时间(CPU时钟数);如果该指令在E1阶段写回,如ABS、MV等指令,则直接将结果写回寄存器;
(5)检查延迟槽内所有结点写回的时间是否与当前时间一致,若结点写回的时间与当前时间保持一致,则将结点记录的信息进行写回,然后移除该结点。延迟槽可用队列或者哈希表来实现。队列是一个一维的线性结构,是一个链表,只能在表尾插入,任何位置可删除。延迟队列是延迟事件的容器,一个延迟事件包含了要延迟写回的寄存器名,以及要写回的值,以及当前延迟事件在延迟队列中的存活期。延迟队列每个时钟更新一次,每次更新遍历队列中的所有结点一次,并把每个结点的存活期减一,当存活期为零时,把该结点从延迟队列中移除,并把结果写回到寄存器。在指令执行时,根据当前指令的延迟槽个数来确定延迟事件的存活期。哈希表是一个二维数组,它也是每个时钟更新一次,但与延迟列队不同。延迟哈希表相当于是延迟队列的一维数组,是延迟队列的容器。但延迟哈希表里的延迟列队所包含的延迟事件的存活期是相同的,也就是在增加延迟事件时,延迟哈希表根据当前延迟事件的存活期将其加入到具体的某个队列中。比如当前队列为0,延迟为2,则加入到(0+2)%N的队列中,其中N是延迟哈希表的长度,即二维数组的第一维长度。然后不断的对当前队列+1并对N取余即可。当前队列就表示当前存活期为0的延迟队列了。延迟哈希表在性能上要优先延迟队列。
(6)循环步骤(4)‐步骤(5),直到最后一条指令执行完毕,完成了流水线的模拟。
Claims (2)
1.一种基于延迟槽补偿的DSP流水线模拟方法,其特征在于,具体包括如下步骤:
(1)解析目标文件,得到代码段和程序入口点,把代码段加载到模拟内存中。
(2)对代码段的指令进行译码,保存译码后的信息,得到PC到译码后的信息的映射关系。
(3)初始化延迟槽,初始化PC为程序入口点,清空延迟槽内的所有结点。
(4)令CPU向前迭代一个时钟,根据当前的PC值,通过步骤(2)得到的映射关系,得到当前指令对应的译码后的信息,解释执行当前指令,如果该指令在非E1阶段写回,则在延迟槽中新增一个结点,该结点保存了需要写回的目的寄存器、写回的结果值以及写回的时间(CPU时钟数);如果该指令在E1阶段写回,则直接将结果写回寄存器。
(5)检查延迟槽内所有结点写回的时间是否与当前时间一致,若结点写回的时间与当前时间保持一致,则将结点记录的信息进行写回,然后移除该结点。
(6)循环步骤(4)-步骤(5),直到最后一条指令执行完毕,完成了流水线的模拟。
2.根据权利要求1所述的基于延迟槽补偿的DSP流水线模拟方法,其特征在于:在所述步骤(3)中初始化延迟槽,即初始化一个含空结点的链表或哈希表,将其作为指令结果写回的暂存结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710156920.6A CN106933652A (zh) | 2017-03-16 | 2017-03-16 | 一种基于延迟槽补偿的dsp流水线模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710156920.6A CN106933652A (zh) | 2017-03-16 | 2017-03-16 | 一种基于延迟槽补偿的dsp流水线模拟方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106933652A true CN106933652A (zh) | 2017-07-07 |
Family
ID=59432353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710156920.6A Pending CN106933652A (zh) | 2017-03-16 | 2017-03-16 | 一种基于延迟槽补偿的dsp流水线模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933652A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407240A (zh) * | 2021-07-07 | 2021-09-17 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015887A1 (en) * | 2001-04-06 | 2004-01-22 | Seiko Epson Corporation | Simulation method, simulation system and simulation program for software and hardware |
CN102736895A (zh) * | 2011-04-07 | 2012-10-17 | 中兴通讯股份有限公司 | 一种实现寄存器文件间的数据传输方法及装置 |
CN106293641A (zh) * | 2016-07-27 | 2017-01-04 | 北京计算机技术及应用研究所 | 基于流水线重构的超长指令字体系架构性能模拟方法 |
-
2017
- 2017-03-16 CN CN201710156920.6A patent/CN106933652A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015887A1 (en) * | 2001-04-06 | 2004-01-22 | Seiko Epson Corporation | Simulation method, simulation system and simulation program for software and hardware |
CN102736895A (zh) * | 2011-04-07 | 2012-10-17 | 中兴通讯股份有限公司 | 一种实现寄存器文件间的数据传输方法及装置 |
CN106293641A (zh) * | 2016-07-27 | 2017-01-04 | 北京计算机技术及应用研究所 | 基于流水线重构的超长指令字体系架构性能模拟方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407240A (zh) * | 2021-07-07 | 2021-09-17 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
CN113407240B (zh) * | 2021-07-07 | 2022-09-09 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187988B (zh) | 适用于虚函数和函数指针的静态函数调用图构建方法 | |
CN110825363B (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
CN103473168B (zh) | 一种热点程序的统计方法 | |
TW201818237A (zh) | 仿真裝置、仿真方法及儲存仿真程式的儲存媒體 | |
Bobot et al. | Preserving user proofs across specification changes | |
CN111111201A (zh) | 一种基于游戏的技能创建方法、装置、服务器及介质 | |
CN104317715A (zh) | 基于模拟器的中央处理器指令集的功能测试自动实施方法 | |
JP2005242569A (ja) | データ処理装置設計方法、データ処理装置設計装置及びプログラム | |
CN106933652A (zh) | 一种基于延迟槽补偿的dsp流水线模拟方法 | |
KR20150047007A (ko) | 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치 | |
CN112799724B (zh) | 一种稳定控制装置策略表解析计算方法及装置 | |
Harmon et al. | Interactive back-annotation of worst-case execution time analysis for Java microprocessors | |
CN110007962A (zh) | 一种基于代码自动生成的指令集模拟方法 | |
WO2018150505A1 (ja) | 規模算出装置及び規模算出プログラム | |
CN113805848B (zh) | 目标机控制软件集成方法和系统 | |
US20090112568A1 (en) | Method for Generating a Simulation Program Which Can Be Executed On a Host Computer | |
CN109117142B (zh) | 一种基于变量关联树的基本类型重构方法 | |
CN108090239B (zh) | 一种基于tlm系统模型的分布式仿真方法 | |
JP2012022580A (ja) | 情報処理装置、情報処理方法 | |
CN117369867B (zh) | 面向指令集及工具链自动生成的指令集架构模型描述方法 | |
KR101171423B1 (ko) | 컴퓨터 아키텍쳐 상태 코드 세팅을 효율적으로 에뮬레이트하는 방법 | |
WO2018150588A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
Liu | Research and Design of a simple CPU with Quartus II | |
US20240103877A1 (en) | Method and system for generating intermediate representation for program for execution on accelerator |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170707 |