基于流水线重构的超长指令字体系架构性能模拟方法与流程

文档序号:12362734阅读:297来源:国知局
基于流水线重构的超长指令字体系架构性能模拟方法与流程

本发明涉及VLIW体系架构性能模拟技术,给出了一种基于流水线重构的VLIW体系架构性能模拟方法。



背景技术:

嵌入式系统和软件具有实时性、专用性、软硬件紧密结合等特点,因此在仿真测试中软件的周期精确性能是一个关键。目前的VLIW(超长指令字)嵌入式系统软件仿真工具在脱离实际硬件的环境下不能提供较精确的仿真运行周期,致使仿真结果与实际情况相差较大,从而不能满足对时钟周期敏感的应用程序的测试要求。

性能模拟的主要技术处理器流水线模拟,通常情况下流水线模拟是将各个影响因素考虑到周期计算中去,通过多线程、顺序模拟的方式实现周期的计算。本专利通过分析流水线执行过程和周期计算的基本原理,将整个流水线的周期计算抽象为流水线推进周期数和流水线停顿周期数目之和,整个流水线的模拟将围绕流水线的推进和影响流水线推进的因素展开。通过对VLIW体系结构及芯片结构的研究,本专利将影响流水线的因素分为两类,改变流水线推进路径的因素和引起整个流水线停顿的因素。

基于多线程、顺序模拟的性能统计方案,每个线程模拟一个流水线阶段,需要考虑线程间的同步与互斥,保证数据流在每个周期切换时流动,还需要有一个主线程来做协调。使流水线的结构变得复杂,增加了反映处理器工作状态的难度,考虑到其他因素对流水线停顿的影响,将使流水线的控制逻辑更加复杂。此外,由于线程间同步和互斥的开销以及控制逻辑上的复杂性,使得仿真效率低下。



技术实现要素:

本发明的目的在于提供一种基于流水线重构的超长指令字体系架构性能模拟方法,用于解决上述现有技术的问题。

本发明一种基于流水线重构的VLIW体系架构性能模拟方法,其中,包括:第一步:E3节拍模拟,包括:(1)判断是否存在上一级流水,若没有上一级流水,直接跳过E3节拍,若存在上一级流水,则要判断是否收到上一级流水的E2节拍传递的地址,并若没有收到地址信息,则进行等待,否则进行步骤(2);(2)判断是否有访存指令,若有访存指令,进行内存访问,否则进入到第二步E2节拍模拟阶段;第二步:E2节拍模拟,包括:(3)判断是否存在上一级流水,若没有上一级流水,直接跳过E2节拍,若有,判断是否接收到上一级流水的E1节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到E1传递的地址;进行步骤(4);(4)向下一级流水传送E3节拍传递地址;第三步:E1节拍模拟,包括:(5)判断是否存在上一级流水,若没有上一级流水,直接跳过E1节拍,若有进行地址有效性判断:判断是否接收到DC节拍传递的地址或E1阶段获取的地址是否有效,若满足上述任意条件,则进行下一个阶段(6)的地址有效性判断,若两个条件都不满足则进行等待,直到满足任一条件;(6)判断当前的地址是否是上一级DC节拍传递的地址,若是,则将该地址传递到下一级流水的E2节拍,若不是,直接进行(7);(7)执行功能模拟线程;(8)开始接收相关影响流水线E1节拍模拟推进的相关因素;第四步:DC节拍模拟,包括:(9)判断是否存在上一级流水,若没有上一级流水,直接跳过DC节拍,若存在上一级流水,则判断是否接收到上一级流水的DP节拍传送的地址,若没有接收到地址,则进行等待,直到接收到DP传送的地址;(10)判断是NOP指令是否处理完或者当前PC指令是否是B指令;如果为是则执行步骤(11),否则进行等待;(11)判断当前PC指令是否是B指令,若是B指令,则将当前PC值为整个执行包的地址,并向下一级流水E1节拍传递当前执行包的地址,否则直接向下一级流水E1节拍传递当前执行包的地址;(12)预取下一个执行包的地址,PC值更新为下个执行包的地址,并将下一个执行包的地址存储到执行包缓存区中,用于下一个执行包的执行;(13)判断当前PC值是否是执行包的最后一个指令的地址,若是执行包的最后一条指令的地址,将允许第五步的DP节拍向前推进一个节拍,执行步骤(14),否则,直接执行步骤(14);(14)判断NOP指令是否处理完全,若未处理完全,则将NOP指令清空,进入到下一个节拍的处理,若NOP指令已经处理完,则直接进入到下一个节拍的处理;第五步:DP节拍模拟,包括:(15)判断是否存在上一级流水,若没有上一级流水,直接跳过DP节拍,若存在上一级流水,判断当前节拍是否收到PR节拍传递的地址,若未收到PR节拍传递的地址,则进行等待,否则进行步骤(16);(16)判断当前PC值对应的指令是否是B指令或者步骤(13)的DP是否允许向前推进,若两个条件都不满足,则进行等待,否则进行相应的地址传递;(17)向下一级流水DC节拍传递地址,并允许第六步的PR节拍向前推进;第六步:PR节拍模拟,包括:(18)判断是否存在上一级流水,若没有上一级流水,直接跳过PR节拍,若存在上一级流水,判断是否收到上一级流水的PW节拍传递的地址,若未收到PW节拍传递的地址,则进行等待,否则进行步骤(19);(19)判断当前PC值对应的指令是否是B指令或者步骤(17)的PR节拍是否允许向前推进,若两个条件都不满足进行等待,否则进行步骤(20);(20)向下一级流水的DC节拍传递地址信息,并允许第七步的PW向前推进;第七步:PW节拍模拟,包括:(21)判断是否存在上一级流水,若没有上一级流水,直接跳过PW节拍,若存在上一级流水,判断是否接收到PS节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到相应的地址信息;(22)判断当前PC值对应的指令是否是B指令或者步骤(20)PW节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(23);(23)向下一级流水PR节拍传递地址信息,并执行步骤(24);(24)进行取指操作,获取NPC值对应的指令,并将访存操作对流水造成的影响考虑到周期计算中去,并允许第八步的PS节拍向前推进;第八步:PS节拍模拟,包括:(25)判断是否存在上一级流水,若没有上一级流水,直接跳过PS节拍,若存在上一级流水,判断是否接收到上一级流水的PG节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到PG节拍传递的地址信息;(26)判断当前PC值对应的指令是否是B指令或者PS节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(27);(27)执行PS节拍,向下一级流水PW节拍传递地址信息;(28)允许第九步的PG节拍向前推进;第九步:PG节拍模拟,包括:(29)首先判断当前PC值对应的指令是否是B指令,或者PG节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(30);(30)判断当前PC值对应的指令是否是B指令;(31)向下一级流水PS节拍传递地址信息,并关闭PG节拍。

根据本发明的基于流水线重构的VLIW体系架构性能模拟方法的一实施例,其中,(8)开始接收相关影响流水线E1节拍模拟推进的相关因素包含指令访存、NOP信息、B指令信息、PC地址信息和中断信息。

根据本发明的基于流水线重构的VLIW体系架构性能模拟方法的一实施例,其中,(30)判断当前PC值对应的指令是否是B指令包括:一个执行包中含有B指令有两种情况,第一种是该B指令触发,将B指令对应的跳转地址赋值给PG节拍的NPC值,另一种情况是该B指令不触发,对此B进行记录,如果执行包中没有B指令,将PG节拍的NPC值自动偏移到下一个取值包的首地址。

根据本发明的基于流水线重构的VLIW体系架构性能模拟方法的一实施例,其中,(30)如果执行包中没有B指令,将PG节拍的NPC值自动偏移到下一个取值包的首地址

根据本发明的基于流水线重构的VLIW体系架构性能模拟方法的一实施例,其中,还包括:初始化仿真器内存,加载目标文件到仿真器,获取程序入口地址;将程序入口地址赋值给当前PC值,获取流水线开始地址。

本发明基于流水线重构的超长指令字体系架构性能模拟方法,对VLIW体系结构影响流水线模拟的各个因素进行抽象和分析,基于延迟槽结构的流水线推进,能够实现VLIW体系结构流水线的模拟和精确的周期计算,为设备时钟精确的仿真模型提供理论依据和具体实现方法。

附图说明

图1为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线执行阶段流程图;

图2为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线译码阶段流程图;

图3为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线取指阶段流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明基于流水线重构的超长指令字体系架构性能模拟方法,包括:

第一步:性能模型抽象

改变流水线推进路径的因素,大部分在功能模拟中实现,各因素的信息也是与功能模拟的同步中得到,又因为这些因素直接影响流水线的执行,所以,这些因素在重构流水线中实现,即在重构流水线的过程中要考虑好这些因素的影响,以及处理好各个因素的关系。主要关注:

1,影响因素如何对流水线产生影响;

2,如何来处理多个因素对流水线的影响,以及多个因素间的相互影响;

抽象出模拟流水线的周期计算公式:

程序执行时钟周期数=流水线推进总次数+整个流水线停顿占用时钟周期数;

改变流水线推进路径的因素,包括

1)取指包中含有多个执行包;

2)指令类型的影响,多周期NOP(空指令)和B(跳转)指令;

3)中断,从流水线的角度看,中断对流水线的执行路径改变与B指令的过程类似,都是使流水线从一个新的地址开始执行。

引起整个流水线停顿的因素,包括:

1)存储系统的阻塞,即取指和数据存取引起的访存阻塞(包括外设地址)。

第二步:流水线影响因素分析

1,取指包中包含多个执行包

取指包中包含多个执行包但是每个周期发射一个执行包,主要影响取指和译码两个阶段流水线的流动。引入一种机制,由前一个节拍来决定是否允许后一个节拍执行。这样当前一个节拍没有执行完成前,后一个节拍将被阻塞。

2,多周期NOP(空指令)

NOP指令是不使用功能单元的空操作,空操作的周期由该指令的选择操作数决定。NOP指令通常被作为一种延迟手段。主要包含两种使用方式:NOP指令不与其他指令并行使用,单独占用一个执行包;NOP指令与其他指令并行使用。其带来的问题就是如何使流水线空转。通过分析发现不管NOP n是不是在并行执行包中,对流水线的影响是一样的,使流水线空转,重复执行相同的空操作,直到有B指令触发或者达到NOP n的计数周期。

3,存储器访问

存储系统将数据和指令存储分离,一个物理空间作为程序存储空间,另一个物理空间则作为数据存储空间。主要体现在含有一个一级指令Cache和一个一级数据Cache。数据读取和程序读取在流水线中有相同的操作,它们恰恰使用不同的节拍完成它们的操作,从而使DSP得以高速访问存储器,更利于流水线的进行。不同的芳村区域对应不同的访存周期,通过正确维护整个流水的推进实现不同访存的周期计算。

存储器访问另一个影响流水线的因素是存储阻塞:

当存储器没有准备好回应给CPU的请求时,流水线将产生存储器阻塞。对于程序存储器访问,存储器阻塞发生在取指阶段的PW节拍,而数据存储器访存则发生在执行阶段的E3节拍。存储器阻塞将引起该流水线中的所有节拍延长一定的时钟周期,从而使程序执行增加额外的时钟周期。当存储器阻塞发生时,只是改变时钟周期的计数方式,由原来的连续递增1的方式,变为突变式的增长。采用的方式是每当对时钟周期计数修改时,加上因访问存储器耗用周期,就可以形成存储器阻塞引起的流水线停顿的效果,这对于流水线其他因素和流水线本身的操作并不影响。

4,中断

从中断产生到被CPU检测需要5个周期,中断对流水线的影响发生在中断产生后的第6个周期,在这个周期CPU需要判断是否允许该中断触发,包括该中断是否使能、是否有更高优先级的中断发生、标志位是否置位等等。如果前五个周期含有B指令在延迟等待,中断的处理需要等待B指令触发跳转后,再执行中断的处理流程。

中断触发的处理过程:首先清空流水线中译码和取指阶段中的内容,等待三个周期后,将中断服务处理程序的入口地址加入到流水线中PG节拍,准备开始执行中断服务程序。

如何模拟流水线:

1)通过延迟槽机制解决流水模拟中断的影响,延迟一定周期后,执行特定的操作。延迟槽的机理和指令延迟一样,即以当前周期为基准,将需要延迟的操作,插入延迟后的延迟槽内,等到延迟周期到达时,刷新对应周期的延迟槽,来完成延迟操作。

2)刷新延迟槽操作:

获得当前处理(flush)槽位=当前周期%槽位数;

3)延迟操作插入对应的延迟槽操作:

插入延迟处理的槽位=(当前周期+延迟周期数)%槽位数;

第三步:流水线重构及周期计算

流水线重构主要需考虑的是,如何在重构流水线时将影响流水线的因素考虑在内,以及实现它们对流水线执行的影响。根据以上分析的影响流水线的因素:

(1)多执行包,

(2)多周期NOP(空指令),

(3)B(跳转)指令,

(4)中断,

(5)存储器。

首先,分析重构流水线中所要实现的节拍和流水线阶段。待实现VLIW流水线的节拍一共有16个(IF(4)+ID(2)+EX(10))。根据重构流水线的思想,只实现会对流水线的执行路径或者停顿产生影响的节拍,即影响因素可能作用的节拍。其他的节拍,虽然在真实硬件中存在,但实现与否不会对性能周期计算产生影响,所以不会实现这些节拍。

基于此思想,分析影响因素作用的节拍。在取指阶段和译码阶段都有因素作用,在执行阶段只有访存操作的作用,而访存操作出现的节拍是E3,所以,执行阶段的节拍只需构造到E3就可以反映流水线的执行过程。因此,重构流水线的节拍数为9个

(IF(4)+ID(2)+EX(3))。三个阶段分别如下:

综上分析了重构流水线的基本结构,下文将介绍各个具体节拍的实现情况,以及各个因素是如何在对应节拍中实现的。

(1)图1为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线执行阶段流程图。图2为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线译码阶段流程图。图3为本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线取指阶段流程图,如图1-图3所示,整个流水线中各个节拍采用逆序调用关系。每个节拍是否能够向前推进,由下一个节拍的执行情况决定。

(2)同时每个节拍能否执行还由上一个节拍是否有数据传递决定,表现为只有上一个节拍有地址传递来时,本节拍才能执行。

(3)上述两个条件并不是矛盾的,第二个条件只是针对流程启动的初期,后面的节拍要等待前面的节拍传递数据执行。而第一个条件,则确定只有下一个节拍将已有数据处理完成后,本节拍的数据才能向前推进。

本发明基于流水线重构的超长指令字体系架构性能模拟方法的流水线模拟过程具体处理流程如下。

初始化:

初始化仿真器内存,加载目标文件到仿真器,获取程序入口地址;将程序入口地址赋值给当前PC(Program Counter Register),获取流水线开始地址。

如图1所示,1,执行阶段:

第一步:E3(执行节拍3)节拍模拟

(1)首先判断是否存在上一级流水,若没有上一级流水,直接跳过E3节拍,若存在上一级流水,则要判断是否收到上一级流水的E2节拍传递的地址,并若没有收到地址信息,则进行等待,否则进行步骤(2)。

(2)判断是否有访存指令(内存访问指令),若有访存指令,进行内存访问,否则进入到第二步E2节拍模拟阶段。

E3节拍是流水线执行的节拍,访存指令的模拟,直接影响周期计算。

第二步:E2(执行节拍2)节拍模拟

(3)首先判断是否存在上一级流水,若没有上一级流水,直接跳过E2节拍,若有,判断是否接收到上一级流水的E1节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到E1传递的地址;进行地址传送。

(4)向E3节拍传递地址。

第三步:E1(执行节拍1)节拍模拟

(5)首先判断是否存在上一级流水,若没有上一级流水,直接跳过E1节拍,若有进行地址有效性判断:判断是否接收到DC节拍传递的地址或E1阶段获取的地址是否有效,若满足上述任意条件,则进行下一个阶段(6)的地址有效性判断,若两个条件都不满足则进行等待,直到满足任一条件。

(6)判断当前的地址是否是上一级DC节拍传递的地址,若是,则将该地址传递到下一级流水的E2节拍,若不是,直接进行(7)。

(7)开始模拟功能,执行功能模拟线程,也就是指令功能的模拟执行,完成功能模拟的执行。

(8)开始接收相关影响流水线E1节拍模拟推进的相关因素。主要包含指令访存、NOP信息、B指令信息、PC地址信息和中断信息。

2,如图2所示,分析阶段:

第四步:DC(指令译码节拍)节拍模拟

(9)首先判断是否存在上一级流水,若没有上一级流水,直接跳过DC节拍,若存在上一级流水,则判断是否接收到上一级流水的DP节拍传送的地址,若没有接收到地址,则进行等待,直到接收到DP传送的地址。

(10)判断是NOP指令是否处理完或者当前PC指令是否是B指令;如果为是则执行步骤(11),否则进行等待。

(11)判断当前PC指令是否是B指令,若是B指令,则将当前PC值为整个执行包的地址,并向E1节拍传递当前执行包的地址,否则直接向E1节拍传递当前执行包的地址。

(12)向E1传递当前执行包地址,并预取下一个执行包的地址,PC值更新为下个执行包的地址,并将下一个执行包的地址存储到执行包缓存区中,用于下一个执行包的执行。

(13)判断当前PC值是否是执行包的最后一个指令的地址,若是执行包的最后一条指令的地址,将允许下步的DP节拍向前推进一个节拍,执行步骤(14),否则,直接执行步骤(14)。

(14)判断NOP指令是否处理完全,若未处理完全,则将NOP指令清空,进入到下一个节拍的处理,若NOP指令已经处理完,则直接进入到下一个节拍的处理。

第五步:DP(指令分配节拍)节拍模拟

(15)首先判断是否存在上一级流水,若没有上一级流水,直接跳过DP节拍,若存在上一级流水,判断当前节拍是否收到PR节拍传递的地址,若未收到PR节拍传递的地址,则进行等待,否则进行步骤(16)。

(16)判断当前PC值对应的指令是否是B指令或者步骤(13)的DP是否允许向前推进,若两个条件都不满足,则进行等待,否则进行相应的地址传递。

(17)向DC节拍传递地址,并允许PR节拍向前推进。

3,取指阶段(如图3):

第六步:PR(取指包接收节拍)节拍模拟

(18)首先判断是否存在上一级流水,若没有上一级流水,直接跳过PR节拍,若存在上一级流水,判断是否收到PW节拍传递的地址,若未收到PW节拍传递的地址,则进行等待,否则进行步骤(19)。

(19)判断当前PC值对应的指令是否是B指令或者步骤(17的)PR节拍是否允许向前推进,若两个条件都不满足进行等待,否则进行步骤(20)。

(20)向DC节拍传递地址信息,并允许PW向前推进。

第七步:PW(访问等待节拍)节拍模拟

(21)首先判断是否存在上一级流水,若没有上一级流水,直接跳过PW节拍,若存在上一级流水,判断是否接收到PS节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到相应的地址信息。

(22)判断当前PC值对应的指令是否是B指令或者步骤(20)PW节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(23)。

(23)向PR节拍传递地址信息,并执行步骤(24);

(24)进行取指操作,获取NPC(Next Program Counter Register)值对应的指令,并将访存操作对流水造成的影响考虑到周期计算中去,保证流水线的准确推进和周期计算的精确性。允许PS节拍向前推进。(具体方法参考2,引起整个流水线停顿的因素。)

第八步:PS(地址发送节拍)节拍模拟

(25)首先判断是否存在上一级流水,若没有上一级流水,直接跳过PS节拍,若存在上一级流水,判断是否接收到上一级流水的PG节拍传递的地址,若没有接收到地址信息,则进行等待,直到接收到PG节拍传递的地址信息。

(26)判断当前PC值对应的指令是否是B指令或者PS节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(27)。

(27)执行PS节拍,向PW节拍传递地址信息;

(28)允许PG节拍向前推进。

第九步:PG(地址产生节拍)节拍模拟

(29)首先判断当前PC值对应的指令是否是B指令,或者PG节拍是否允许向前推进,若两个条件都不满足,则进行等待,否则进行步骤(30)。

(30)判断当前PC值对应的指令是否是B指令。一个执行包中含有B指令有两种情况,第一种是该B指令触发,对于此种情况,将B指令对应的跳转地址赋值给PG节拍的NPC值。另一种情况是该B指令不触发,虽然此种情况不会影响指令的执行,但会影响中断的执行,所以要对此B进行记录。如果执行包中没有B指令,将PG节拍的NPC值自动偏移到下一个取值包的首地址。

(31)向PS节拍传递地址信息,并关闭PG节拍,整个流水模拟完成。

本发明基于流水线重构的超长指令字体系架构性能模拟方法,对VLIW体系结构影响流水线模拟的各个因素进行抽象和分析,基于延迟槽结构的流水线推进,能够实现VLIW体系结构流水线的模拟和精确的周期计算,为设备时钟精确的仿真模型提供理论依据和具体实现方法。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1