CN107589960B - 一种基于寄存器访问冲突检测的dsp指令模拟方法 - Google Patents

一种基于寄存器访问冲突检测的dsp指令模拟方法 Download PDF

Info

Publication number
CN107589960B
CN107589960B CN201710761786.2A CN201710761786A CN107589960B CN 107589960 B CN107589960 B CN 107589960B CN 201710761786 A CN201710761786 A CN 201710761786A CN 107589960 B CN107589960 B CN 107589960B
Authority
CN
China
Prior art keywords
instruction
instructions
register
access conflict
register access
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
Application number
CN201710761786.2A
Other languages
English (en)
Other versions
CN107589960A (zh
Inventor
张西超
顾斌
虞砺琨
滕俊元
朱倩
冀会芳
赵欢
郑小萌
王辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sunwise Information Technology Ltd
Original Assignee
Beijing Sunwise Information Technology Ltd
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 Beijing Sunwise Information Technology Ltd filed Critical Beijing Sunwise Information Technology Ltd
Priority to CN201710761786.2A priority Critical patent/CN107589960B/zh
Publication of CN107589960A publication Critical patent/CN107589960A/zh
Application granted granted Critical
Publication of CN107589960B publication Critical patent/CN107589960B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

本发明公开了一种基于寄存器访问冲突检测的DSP指令模拟方法,在识别出不符合顺序特征的指令之后,可以通过周期模式进行该类指令模拟,确保指令模拟的正确性;对于符合顺序特征的指令,可以省略对指令执行时流水线特征的模拟,在快速模式下利用现有技术快速模拟指令;这种通过对指令寄存器访问冲突的检测,在不同模式下分别对指令进行模拟,可以兼顾指令模拟的效率和正确性。

Description

一种基于寄存器访问冲突检测的DSP指令模拟方法
技术领域
本发明涉及一种基于寄存器访问冲突检测的DSP指令模拟方法,针对的是TMS320C6000 DSP处理器可以多条指令并行执行以及指令带有延迟周期的特点。
背景技术
TMS320C6000 DSP是TI公司的高性能处理器,该架构允许多达八条指令并行执行,并且一些指令带有延迟周期,从指令执行到执行结果生效需要等待一定的时钟周期。
目前指令模拟通常采用穿线代码、动态二进制翻译等快速的指令模拟技术,这些技术利用了指令执行时的顺序性特征,即前一条指令执行后,其结果立即写入目的操作数中,当后续指令执行时,读取的源操作数的值是前面指令执行结束后的结果。
浙江大学201310048645.8号专利公开了一种动态二进制翻译方法,该发明的具体步骤是:确定待翻译的类型,所述基本块为非跳转目标基本块时,执行非跳转目标基本块处理流程,所述基本块为跳转目标基本块时,执行跳转目标基本块处理流程。但对于TMS320C6000DSP指令,该方法主要存在以下问题:
(1)TMS320C6000 DSP指令的并行或延迟周期会破坏指令的顺序性特征,已执行指令的运算结果可能在后续指令执行时仍然没有生效,这会给划分基本块时带来困难,如下面一段代码:
LDB*A0++,B5;读A0所指内存4周期后存入B5,A0加1
||SUB A0,B5,A6;与LDB并行的减法指令,A6=A0-B5
NOP 3;3个周期空操作,相当于3个NOP
MV B5,B6;将B5的值写到B6中
MV B5,B7;将B5的值写到B7中
在这段代码中,并行指令LDB||SUB同时读取源操作数的值,在LDB||SUB指令执行后,B5值不变,因为LDB指令延迟周期尚未结束;第一条MV指令执行时,因为LDB指令刚执行过3个周期,所以源操作寄存器B5的值尚未被LDB指令修改,而在此指令之后,LDB指令从内存读取的值才写入寄存器B5,因此,这两条相邻的MV指令虽然都使用B5作为源寄存器,但只有第二条MV指令读取的才是LDB指令执行完成后的值。
(2)TMS320C6000 DSP分支指令的延迟跳转特性,可能导致基于指令顺序特征设计的快速指令模拟技术难以适用,如下面一段代码:
B L1;5个周期后跳转到L1
B L3;5个周期后跳转到L3
LDW*A0,A2;读A0所指的内存,延迟4个周期后写入A2
NOP 3;3个周期空操作,相当于3个NOP
XOR A0,A0,A1;被跳过,不会执行
L1:MV A2,A3;将A2的值写到A3中
L2:MVK 5,A2;被跳过,不会执行
L3:ADD A2,1,A4;将A2的值加1后写到A4中
这段代码执行时的指令流顺序是:B指令、B指令、LDW指令、NOP 3指令、MV指令和ADD指令,其中的XOR和MVK指令被跳过,这是因为分支指令B的延迟周期为5,在执行NOP 3指令执行后,第一条B指令的延迟周期到达,从而跳转到L1位置,导致后面的XOR指令被跳过;在L1位置的MV指令执行后,第二条B指令的延迟周期到达,从而跳转到L3位置,导致MVK指令被跳过。
发明内容
本发明的技术解决问题:为克服现有技术不足,提供一种基于寄存器访问冲突检测的DSP指令模拟方法,以解决指令的并行或延迟周期的问题。
本发明的技术解决方案是:
一种基于寄存器访问冲突检测的DSP指令模拟方法,具体步骤为:
(1)模拟指令时,初始化状态为快速模式,在快速模式下模拟指令时,不模拟处理器中指令执行时的流水线特征,在一个仿真周期中一次性完成指令的操作数读取、运算和运算结果的写入等全部操作;
(2)当模拟执行时遇到被标记为存在寄存器访问冲突的指令,设置运行模式为周期模式,并在该模式下模拟指令;
(3)在周期模式下模拟指令时,对于被标记为存在寄存器访问冲突的指令,按照处理器中指令执行时的流水线特征,在特定周期逐项完成指令的操作数读取、运算和运算结果的写入操作;
(4)当周期模式下执行的指令已经全部模拟执行完成时,重新切换到步骤1中快速模式下模拟指令。
步骤2中寄存器访问冲突检测的方法为:
(1)在首次执行到某个地址时,首先确定该地址并行执行的指令条数n,其中n的有效范围是1~8,转下一步;
(2)对于并行的n条指令,按照指令地址由低到高的顺序扫描,如果低地址指令的目的寄存器被作为高地址指令源寄存器使用,则标记低地址指令存在寄存器访问冲突,转下一步;
(3)对于并行的n条指令中未标记为冲突的指令,如果延迟周期为零,则标记为不存在寄存器访问冲突,转下一步;
(4)对于并行的n条指令中未被标记的指令,分别扫描与并行指令顺序相邻的指令,如果其延迟周期内存在跳转指令,或者目的寄存器被其他指令作为源寄存器,则标记指令存在寄存器访问冲突,否则,标记为不存在寄存器访问冲突,转下一步;
(5)缓存并行的n条指令的寄存器访问冲突检查结果,模拟执行指令时,通过查询缓存,获得指令的寄存器访问冲突标记信息。
指令目的寄存器为指令执行时所修改的寄存器,指令源寄存器为指令执行时所读取的寄存器。
本发明与现有技术相比具有以下优点:
本发明在识别出不符合顺序特征的指令之后,可以在周期模式对该类指令进行模拟,确保指令模拟的正确性;对于符合顺序特征的指令,可以省略对指令执行时流水线阶段特征的模拟,在快速模式下利用现有技术快速模拟指令。这种通过对指令寄存器访问冲突的检测,在不同模式下分别对指令进行模拟,可以兼顾指令模拟的效率和正确性。
附图说明
图1为本发明指令模拟流程图;
图2为本发明检测指令是否存在寄存器访问冲突的流程图。
具体实施方式
下面结合附图对本发明作进一步详细地描述:
一种基于寄存器访问冲突检测的DSP指令模拟方法,如图1所示,具体步骤为:
(1)模拟指令时,初始化状态为快速模式,在快速模式下模拟指令时,不模拟处理器中指令执行时的流水线特征,在一个仿真周期中一次性完成指令的操作数读取、运算和运算结果的写入等全部操作;
(2)当模拟执行时遇到被标记为存在寄存器访问冲突的指令,设置运行模式为周期模式,并在该模式下模拟指令;
(3)在周期模式下模拟指令时,对于被标记为存在寄存器访问冲突的指令,按照处理器中指令执行时的流水线特征,在特定周期逐项完成指令的操作数读取、运算和运算结果的写入操作;
(4)当周期模式下执行的指令已经全部模拟执行完成时,重新切换到步骤1中快速模式下模拟指令。
步骤2中寄存器访问冲突检测的方法如图2所示,具体方法如下:
(1)在首次执行到某个地址时,首先确定该地址并行执行的指令条数n,其中n的有效范围是1~8,转下一步;
(2)对于并行的n条指令,按照指令地址由低到高的顺序扫描,如果低地址指令的目的寄存器被作为高地址指令源寄存器使用,则标记低地址指令存在寄存器访问冲突,转下一步;
(3)对于并行的n条指令中未标记为冲突的指令,如果延迟周期为零,则标记为不存在寄存器访问冲突,转下一步;
(4)对于并行的n条指令中未被标记的指令,分别扫描与并行指令顺序相邻的指令,如果其延迟周期内存在跳转指令,或者目的寄存器被其他指令作为源寄存器,则标记指令存在寄存器访问冲突,否则,标记为不存在寄存器访问冲突,转下一步;
(5)缓存并行的n条指令的寄存器访问冲突检查结果,模拟执行指令时,通过查询缓存,获得指令的寄存器访问冲突标记信息。
上述指令目的寄存器为指令执行时所修改的寄存器,指令源寄存器为指令执行时所读取的寄存器。
实施例
下面结合一段TMS320C6000 DSP指令代码,说明本发明的实施步骤:
Figure BDA0001393276840000051
Figure BDA0001393276840000061
这段代码中,指令前面带有“||”时,表示该地址指令与上一条指令并行执行。其中ADDDP指令的流水线特征如下表所示:
Figure BDA0001393276840000062
其中E1~E7是流水线执行的七个阶段,每个阶段占用一个周期,E1阶段完成指令源操作数src1、src2低位的读取,E2阶段完成源操作数src1、src2高位的读取,E3~E5阶段完成ADDDP指令的运算,E6阶段将运算结果的低位dst_l写入目的寄存器,E7阶段将运算结果的高位dst_h写入目的寄存器。
这段代码中,ADDDP指令源操作数的低位存放在A0、A2寄存器中,高位存放在A1、A3寄存器中,目的寄存器的高低位分别存放在A5、A4寄存器中。
如果采用周期模式模拟ADDDP指令,就要按照流水线阶段,在不同的周期分别完成源操作数读取、运算和运算结果的写入操作,指令模拟过程就比较复杂;如果采用快速模式模拟ADDDP指令,就省略了对指令执行时流水线特征的模拟,在E1阶段一次性完成所有的指令操作。
对于并行指令,处理器执行是在流水线第一个执行阶段开始所有并行指令的源操作数读取操作,如同时开始读取地址00000008~00000014四条并行指令的源寄存器A5、A4、A1、B1、B2的值,所以0000000C地址的MV指令执行后,B9中存放的是A1寄存器被00000008地址的ADD指令改写前的值。采用快速模式模拟并行指令时,可以省略对指令执行时流水线特征的模拟,直接按照地址顺序依次完成并行的各条指令。
但为了保证指令模拟的正确性,需要事先对寄存器访问冲突进行检测,只有在不存在寄存器访问冲突时才省略对指令执行时流水线特征的模拟。针对这段代码,寄存器访问冲突检测过程如下:
(1)对于地址00000000,(a)确定该地址指令执行时并行执行的指令条数n等于1;(b)由于n等于1,不进行由低地址到高地址的寄存器访问冲突扫描;(c)ADDDP指令延迟周期为不为零,不能标记;(d)对于未被标记的指令ADDDP,扫描其延迟周期内顺序相邻的指令,由于NOP 6指令占用6个周期,所以ADDDP指令延迟周期内只有一条不访问任何寄存器的NOP6指令,所以标记ADDDP指令不存在寄存器访问冲突;(e)缓存检查结果;
(2)对于地址00000004,(a)n等于1;(b)由于NOP 6指令不访问任何寄存器,所以标记该指令不存在寄存器访问冲突,并缓存检查结果;
(3)对于地址00000008,(a)n等于4;(b)按照指令地址由低到高的顺序扫描,发现低地址指令ADD的目的寄存器A1被作为高地址指令MV的源寄存器,标记ADD指令存在寄存器访问冲突;(c)并行的4条指令中,MV、SUB、XOR指令延迟周期为0,标记为不冲突;(d)检查发现4条指令已经全部被标记;(e)缓存检查结果;
(4)对于地址00000018,(a)n等于3;(b)按照指令地址由低到高的顺序扫描,不存在低地址指令的目的寄存器被作为高地址指令源寄存器情况;(c)并行的3条指令中,ADD、MV指令延迟周期为0,标记为不冲突;(d)对于未被标记的指令MPY,检测到目的寄存器B2在其延迟周期内被作为地址00000024处MV指令的源寄存器,标记为存在寄存器访问冲突;(e)缓存检查结果;
(5)对于地址00000024,(a)n等于1;(b)由于n等于1,不进行地址由低到高的顺序扫描;(c)MV指令延迟周期为0,标记为不冲突;(d)所有指令均被标记,省略该步骤;(e)缓存检查结果;
(6)对于地址00000028,(a)n等于1;(b)由于n等于1,不进行地址由低到高的顺序扫描;(c)MPY指令延迟周期不为0,不能标记;(d)对于未被标记的指令MPY,扫描其延迟周期内顺序相邻的指令,目的寄存器A2未被作为源寄存器使用,标记为不存在寄存器访问冲突;(e)缓存检查结果;
(7)对于地址0000002C,(a)n等于1;(b)由于n等于1,不进行地址由低到高的顺序扫描;(c)ADD指令延迟周期为0,标记为不存在寄存器访问冲突;(d)所有指令均被标记,省略该步骤;(e)缓存检查结果;
基于上述检测,这段代码的指令模拟执行过程如下:
(1)定义一个全局变量,用于表示当前在周期或快速模式下模拟执行指令,初始化该变量值为快速模式;
(2)模拟执行00000000地址的ADDDP指令,通过查询缓存,ADDDP指令未标记为冲突,省略对ADDDP指令执行时流水线特征的模拟,在一个周期内完成源寄存器A1:A0和A3:A2的读取,计算指令运行结果,并立即写入到目的寄存器A5:A4中;
(3)模拟执行00000004地址的NOP 6指令;
(4)模拟执行00000008地址的并行指令,查询缓存,ADD指令存在寄存器访问冲突,MV、SUB、XOR指令不存在寄存器访问冲突,设置当前运行模式为周期模式;
(5)根据并行指令执行的流水线特征,先读取ADD指令源寄存器A5、A4的值,然后依次完成MV、SUB、XOR指令的模拟;
(6)利用上一步读取的A5、A4寄存器的值,完成00000008地址ADD指令的模拟,并设置当前模式为快速模式,因为此时周期模式下执行的指令已经全部模拟执行完成;
(7)模拟执行00000018地址的并行指令,查询缓存,ADD、MV指令不存在寄存器访问冲突,但00000020地址并行的MPY指令存在寄存器访问冲突,设置运行模式为周期模式;
(8)模拟执行完成00000018和0000001C地址的ADD和MV指令,然后读取00000020地址MPY指令源寄存器B1、B2的值;
(9)模拟执行完成00000024地址的MV指令;
(10)由于MPY指令延迟周期为1,00000024地址的MV指令执行后MPY指令延迟周期结束,利用步骤(8)中保存的源寄存器B1、B2的值计算出结果,写入到目的寄存器B2中,并设置运行模式为快速模式;
(11)查询缓存,00000028和0000002C地址的MPY和ADD指令均不存在寄存器访问冲突,在快速模式下模拟MPY和ADD指令。
上述实施例可以表明,通过对指令寄存器访问冲突的检测,在快速模式下,通过省略对指令执行时流水线特征的模拟,可以提升指令模拟效率;在周期模式下,由于跟据指令执行的流水线阶段特征进行模拟,可以保证指令模拟的正确性。
本发明未详细描述内容为本领域技术人员公知技术。

Claims (3)

1.一种基于寄存器访问冲突检测的DSP指令模拟方法,具体步骤为:
S1、模拟指令时,初始化状态为快速模式,在快速模式下模拟指令时,不模拟处理器中指令执行时的流水线特征,在一个仿真周期中一次性完成指令的操作数读取、运算和运算结果的写入全部操作;
S2、当模拟执行时遇到被标记为存在寄存器访问冲突的指令,设置运行模式为周期模式,并在该模式下模拟指令;
S3、在周期模式下模拟指令时,对于被标记为存在寄存器访问冲突的指令,按照处理器中指令执行时的流水线特征,在特定周期逐项完成指令的操作数读取、运算和运算结果的写入操作;
S4、当周期模式下执行的指令已经全部模拟执行完成时,重新切换到S1中快速模式下模拟指令。
2.如权利要求1所述的一种基于寄存器访问冲突检测的DSP指令模拟方法,其特征在于,S2中寄存器访问冲突检测的方法为:
S2.1、在首次执行到某个地址时,首先确定该地址并行执行的指令条数n,其中n的有效范围是1~8,转下一步;
S2.2、对于并行的n条指令,按照指令地址由低到高的顺序扫描,如果低地址指令的目的寄存器被作为高地址指令源寄存器使用,则标记低地址指令存在寄存器访问冲突,转下一步;
S2.3、对于并行的n条指令中未标记为冲突的指令,如果延迟周期为零,则标记为不存在寄存器访问冲突,转下一步;
S2.4、对于并行的n条指令中未被标记的指令,分别扫描与并行指令延迟周期内顺序相邻的指令,如果其延迟周期内存在跳转指令,或者目的寄存器被其他指令作为源寄存器,则标记指令存在寄存器访问冲突,否则,标记为不存在寄存器访问冲突,转下一步;
S2.5、缓存并行的n条指令的寄存器访问冲突检查结果,模拟执行指令时,通过查询缓存,获得指令的寄存器访问冲突标记信息。
3.如权利要求2所述的一种基于寄存器访问冲突检测的DSP指令模拟方法,其特征在于,指令目的寄存器为指令执行时所修改的寄存器,指令源寄存器为指令执行时所读取的寄存器。
CN201710761786.2A 2017-08-30 2017-08-30 一种基于寄存器访问冲突检测的dsp指令模拟方法 Active CN107589960B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710761786.2A CN107589960B (zh) 2017-08-30 2017-08-30 一种基于寄存器访问冲突检测的dsp指令模拟方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710761786.2A CN107589960B (zh) 2017-08-30 2017-08-30 一种基于寄存器访问冲突检测的dsp指令模拟方法

Publications (2)

Publication Number Publication Date
CN107589960A CN107589960A (zh) 2018-01-16
CN107589960B true CN107589960B (zh) 2020-07-24

Family

ID=61051616

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710761786.2A Active CN107589960B (zh) 2017-08-30 2017-08-30 一种基于寄存器访问冲突检测的dsp指令模拟方法

Country Status (1)

Country Link
CN (1) CN107589960B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221573B (zh) * 2018-11-26 2022-03-25 深圳云天励飞技术股份有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
CN110007966A (zh) * 2019-04-10 2019-07-12 龚伟峰 一种降低内存读取乱序的方法
CN111967014B (zh) * 2020-07-16 2023-08-11 北京轩宇信息技术有限公司 一种防御StarBleed漏洞的方法及装置
CN112069015B (zh) * 2020-11-10 2021-02-23 鹏城实验室 指令模拟器指令执行方法、装置、终端设备以及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302380B2 (en) * 2002-12-12 2007-11-27 Matsushita Electric, Industrial Co., Ltd. Simulation apparatus, method and program
JP2007094986A (ja) * 2005-09-30 2007-04-12 Fujitsu Ltd シミュレーション装置およびシミュレーション方法
CN101256502B (zh) * 2007-02-27 2011-02-09 国际商业机器公司 模拟多处理器系统的系统和方法
CN100530103C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种模拟器及方法
CN106326521B (zh) * 2015-10-10 2019-12-03 北京控制与电子技术研究所 一种静态超标量dsp周期模拟方法
CN106293641B (zh) * 2016-07-27 2018-12-25 北京计算机技术及应用研究所 基于流水线重构的超长指令字体系架构性能模拟方法
CN106775597A (zh) * 2016-12-06 2017-05-31 复旦大学 一种松耦合结构的并行多核全系统模拟器

Also Published As

Publication number Publication date
CN107589960A (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
CN107589960B (zh) 一种基于寄存器访问冲突检测的dsp指令模拟方法
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
US11216258B2 (en) Direct function call substitution using preprocessor
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
KR101642556B1 (ko) 이진 번역을 수행하기 위한 방법 및 시스템
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
US20030149963A1 (en) Condition code flag emulation for program code conversion
US20130152048A1 (en) Test method, processing device, test program generation method and test program generator
US20090265531A1 (en) Code Evaluation for In-Order Processing
US5752015A (en) Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions
US20080177527A1 (en) Simulation system, simulation method and simulation program
JP2011503718A (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
US8095775B1 (en) Instruction pointers in very long instruction words
US20140316761A1 (en) Simulation apparatus and storage medium
JP6257745B2 (ja) プロセッサにおいてリターン分岐命令を実行する速度を向上させる方法
CN108959180B (zh) 一种数据处理方法及系统
CN115480871B (zh) 一种通用的tms320c3x处理器指令集虚拟化仿真方法
CN115421861B (zh) 一种通用的TMS320C55x处理器指令集虚拟化仿真方法
US5951676A (en) Apparatus and method for direct loading of offset register during pointer load operation
US7401328B2 (en) Software-implemented grouping techniques for use in a superscalar data processing system
JP2008299729A (ja) プロセッサ
JP2001306334A (ja) エミュレーション装置
Prasannakumar A scheme for accelerating image processing algorithms using SIMD for ARM Cortex A based systems
JP3324542B2 (ja) 仮想マシン
CN113703842B (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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Zhang Xichao

Inventor after: Gu Bin

Inventor after: Yu Likun

Inventor after: Teng Junyuan

Inventor after: Zhu Qian

Inventor after: Ji Huifang

Inventor after: Zhao Huan

Inventor after: Zheng Xiaomeng

Inventor after: Wang Hui

Inventor before: Zhang Xichao

Inventor before: Yu Likun

Inventor before: Teng Junyuan

Inventor before: Zhu Qian

Inventor before: Ji Huifang

Inventor before: Zhao Huan

Inventor before: Zheng Xiaomeng

Inventor before: Wang Hui

GR01 Patent grant
GR01 Patent grant