模拟装置、模拟方法及程序的制作方法

文档序号:6421133阅读:185来源:国知局
专利名称:模拟装置、模拟方法及程序的制作方法
技术领域
本发明涉及一种通过模拟VLIW(Very Long Instruction Word)处理器用程序(执行)来支援软件开发者的程序开发的模拟装置。
背景技术
模仿处理器的执行状态的模拟装置用于程序开发。在将进行流水线(pipeline)控制的处理器作为对象的模拟装置中,为了正确进行流水线的模拟,以周期为单位进行模拟。作为涉及此的现有技术文献,有专利文献1。
专利文献1中公开的流水线计算机模拟器边进行流水线的模拟,边以1命令单位进行步骤动作的模拟。由此,用于调试动作的1命令的步骤动作直觉地正确动作。
另外,专利文献2中公开的失速(stall)检测显示装置通过分析汇编源程序,检测汇编源程序中发生的失速,将失速发生原因强调显示于汇编源程序及作为汇编源程序的分析结果的流水线消息的对应部位。从而,程序师识别流水线的失速发生原因。
专利文献1特开平8-272612专利文献2特开平11-65845但是,在上述现有技术中,在以同时执行多个命令的处理器为对象的情况下,模拟多个命令的同时执行,另外,尽管强调显示失速发生原因,软件开发者在命令单位的执行过程之前也不能细致确认。

发明内容
本发明的目的在于提供一种模拟装置,以同时执行多个命令的处理器为对象,并进行模拟,以便知道命令单位的执行过程。
为了实现上述目的,本发明的模拟装置是模拟VLIW处理器的模拟装置,其中,具备第1模拟单元,模拟应同时执行的多个命令构成的命令群;和第2模拟单元,根据第1模拟单元的模拟结果,生成所述命令群中每个命令的模拟结果。
根据该结构,利用命令群的模拟结果,对命令群中的各个命令生成模拟结果,所以可向软件开发者呈现如同对命令单位依次进行模拟,可容易进行单独命令的调试及验证。例如,可在挨个单独执行应同时执行的命令过程之前,具体地进行确认。
这里,所述第2模拟单元也可生成将由第1模拟单元在紧前面模拟的命令群中包含的命令从模拟完成返回到未模拟的模拟结果。
根据该结构,可有效应用由第1模拟单元在紧前面模拟的命令群的模拟结果,简单生成命令单位的模拟结果。
另外,所述模拟装置还具备显示控制单元,使第2模拟单元的命令单位的模拟结果显示于显示部。
这里,所述第2模拟单元具备判断单元,判断满足中断条件的命令是否包含于第1模拟单元模拟的命令群中;指示单元,在判断为不包含的情况下,指示第1模拟单元下一命令群的模拟;决定单元,在判断为包含的情况下,将满足所述中断条件的命令决定为停止命令;和生成单元,生成将命令群中的停止命令之后的命令从模拟完成返回到未模拟的模拟结果。
另外,所述第1模拟单元模拟同时执行多个命令的流水线处理器,所述模拟装置还具备显示图像生成单元,根据第1模拟单元及第2模拟单元的执行结果,生成表示流水线中存在的命令的显示图像。
这里,所述显示图像包含流水线的每个阶段中存在的命令的标记。
根据该结构,用户可一起调试及验证命令单位的模拟结果与流水线中前后命令的状态。
这里,所述第1模拟单元模拟同时执行多个命令的流水线处理器的周期单位的动作,所述模拟装置还具备接收单元,接收指示命令单位的步骤执行及所述周期单位的步骤执行之一的用户操作;和显示图像生成单元,当接收指示命令单位的步骤执行的用户操作时,生成表示第2模拟单元的命令单位的模拟结果的显示图像,当接收指示周期单位的步骤执行的用户操作时,生成表示第1模拟单元的周期单位的模拟结果的显示图像。
根据该结构,用户可任意选择命令群的周期单位的模拟与命令单位的模拟。
并且,所述第1模拟单元具备存储部,将VLIW处理器的当前资源存储为第1数据;保存单元,将第1数据的复制作为第2数据保存在存储单元中;和第1模拟器,在保存后,通过模拟所述命令群的执行来更新第1数据,所述第2模拟单元根据第1数据及第2数据,得到所述命令群中的命令单位的模拟结果。
根据该结构,基于表示1个命令群模拟前的资源的第2数据与表示模拟后的资源的第1数据,得到命令单位的模拟结果。
另外,所述第2模拟单元具备判断单元,判断满足中断条件的命令是否包含于第1模拟单元模拟的命令群中;指示单元,在判断为不包含的情况下,指示第1模拟单元下一命令群的模拟;和决定单元,在判断为包含的情况下,将满足所述中断条件的命令决定为停止命令。
根据该结构,可针对同时执行的多个命令使命令分别中断,软件开发者可容易确认同时执行的多个命令中的命令的相互关系。另外,因为以模拟完的命令群中包含的命令为对象判断中断条件,所以可在处理器的实际执行路径中中断。例如,在命令群中有被取消的命令的情况下,不会错误中断未执行的命令。
这里,所述第1模拟器以进行流水线处理的VLIW处理器为对象,以流水线处理的周期单位进行命令群的模拟,所述模拟装置还计数命令群单位的模拟中的执行周期数。
根据该结构,以进行流水线处理的处理器为对象,生成命令单位的模拟结果,同时还可正确模拟处理器的流水线周期数。
另外,所述第1模拟器对所述命令群中的各命令生成表示由该命令变更的资源的更新信息,所述复原单元按照第1数据、第2数据及更新信息,对该命令群中的每个命令复原在该命令之前依次执行的结果所对应的资源数据。
根据该结构,可通过利用更新信息来容易复原资源数据。
这里,所述第1模拟器还对以VLIW处理器的执行阶段发生延迟周期的延迟命令模拟延迟周期,所述复原单元按照延迟命令的更新信息来生成延迟命令的执行结果所对应的资源数据。
根据该结构,处理器延迟执行同时执行的多个命令中的延迟命令,所以所述多个命令在周期水平下不同时交替执行顺序,可生成对命令单位的模拟挨个顺序执行的模拟结果。
并且,所述复原单元在与由模拟对象的VLIW处理器的执行阶段发生延迟周期的延迟命令之间,对相同命令群内具有输出依赖关系的输出依赖命令,按照延迟命令的更新信息与输出依赖命令的更新信息,生成输出依赖命令的执行结果所对应的资源数据。
根据该结构,处理器中存在于同时执行的输出依赖关系中的命令一方的执行结果变为与取消相同的结果,但在命令单位的模拟中,因为即使对通过输出依赖关系而取消的命令也生成模拟结果,所以软件开发者可知道取消输出依赖命令的结果的过程。
如上所述,根据本发明的模拟装置,将同时执行多个命令的处理器作为目标,可对命令单位进行模拟。因此,不是中断命令群单位,而是中断同时执行的命令单位。另外,向软件开发者呈现如同挨个依次模拟命令。
并且,模拟装置进行由命令群的周期单位的模拟与命令单位的模拟构成的2阶段模拟,所以可正确模拟目标处理器的周期数。
另外,在目标处理器具有发送(forwarding)机构的情况或通过延迟命令发生互锁的情况下,即使在具有取消机构的情况下,也可正确模拟目标处理器的周期数。


结合说明本发明一特定实施例的附图,本发明的这些和其它目的、优点和特征将从下述描述中变得明显。
图1是表示本发明实施形态的模拟系统1的外观图。
图2表示模拟装置2中模拟软件启动后的显示内容的一例。
图3表示调试装置3中调试软件执行中的显示内容的一例。
图4是表示成为模拟装置对象的目标处理器的结构图。
图5是表示目标处理器的流水线阶段的动作定时图。
图6是表示流水线处理的命令群的一例的图。
图7是说明流水线的周期数的图。
图8是表示伴随发送的流水线阶段的动作定时图。
图9是表示取消命令的情况下的其它实例的图。
图10是表示伴随发送的流水线处理的说明图。
图11是表示成为模拟装置对象的其它目标处理器的结构图。
图12是表示模拟系统的结构功能框图。
图13是表示行程(fetch)信息一例的图。
图14是表示解码信息一例的图。
图15是表示执行信息一例的图。
图16是表示完成信息一例的图。
图17是表示基于调度模块的命令群的模拟处理的流程图。
图18表示示出基于模拟控制部的命令单位的模拟控制的流程图。
图19是表示资源信息变更部的结构框图。
图20是表示通常命令结果生成部的详细结构的框图。
图21是表示存储器值保存部的详细结构的框图。
图22是表示模拟对象的第1程序例的图。
图23是表示模拟对象的第2程序例的图。
图24是表示模拟对象的第3程序例的图。
图25是表示模拟对象的第4程序例的图。
图26表示指定命令群的周期单位的模拟的指令一例。
图27表示指定命令单位的模拟的指令一例。
图28是表示流水线状态的显示例的图。
图29是表示流水线状态的显示例的图。
图30是表示流水线状态的显示例的图。
图31是表示流水线状态的显示例的图。
图32是表示流水线状态的显示例的图。
图33是表示流水线状态的显示例的图。
具体实施例方式
模拟系统的概述图1是表示本发明实施形态的模拟系统1的外观图。图中的模拟系统1由模拟装置2和调试装置3构成。
模拟装置2具备主体装置2a、显示装置2b、输入装置2c,是模拟同时执行多个命令的处理器的动作的装置,就由处理器同时执行的多个命令而言,将按照顺序执行命令情况下得到的执行结果经LAN电缆通知给调试装置3。即模拟装置2经调试装置3从用户接收命令单位的步骤动作指示或命令单位的断点(breakpoint)指定,经调试装置3向用户显示命令单位的执行结果。主体装置2a通过执行模拟软件进行上述模拟。显示装置2b、输入装置2c用于模拟软件的执行开始和终止。
调试装置3具备主体装置3a、显示装置3b、输入装置3c,用作对模拟装置2的用户界面,从用户接收命令单位的步骤动作或命令单位的断点指定等操作,通知模拟装置2,并接收和显示来自模拟装置2的命令单位的模拟结果。主体装置3a通过执行调试软件,提供用户界面功能,向模拟装置2收发信模拟执行指示或其响应。显示装置3b显示命令单位的模拟执行结果等。输入装置3c接收各种用户操作。
图2表示模拟装置2中模拟软件启动后的显示内容的一例。图中,W0是控制台窗口,表示模拟软件启动后执行中的状态。在该状态下,软件开发者可经调试装置3利用该模拟装置2。
图3表示调试装置3中调试软件模拟中的显示内容的一例。图中,W1是显示调试对象的程序的代码(code)显示窗口,W2是显示调试对象的源程序的源程序显示窗口,W3是由用户操作来输入各种模拟用指令的指令输入窗口,W4是显示目标处理器执行情况下的周期数与表示模拟的命令数的步骤数等状态显示窗口,W5是显示寄存器数据的寄存器内容显示窗口,W6是显示存储器数据的存储器内容显示窗口。M1是表示命令单位模拟中的模拟未执行开头命令(下面称为停止命令)的停止命令标志,M2是表示对应于停止命令的源程序中的程序行的停止行标志。
代码显示窗口W1显示调试对象的程序中表示命令地址的程序计数值(图中的PC栏)、行编号(LINE栏)、标记(FLAG栏)、助记符(MNEMONIC栏)等,同时显示停止命令标志M1。这里,标记[F0]用VLIW处理器200中具备的状态标志寄存器中的标记F0的值来表示命令是否有效,对应于紧前面的比较命令(cmp命令)的比较结果来复位得到。该标记F0通过使条件分支命令中的条件是否成立反映到标记F0的值中,被用于例如依赖于源程序显示窗口W2中的if语句的条件的执行语句等。例如,图中第104行的mov命令是将标志[F0]的值设为执行条件的附带执行条件命令,若[F0]=1,则作为有效命令执行,若[F0]=0,则作为无效命令,不执行。另外,代码显示窗口W1中的;(两个分号)表示目标处理器中同时执行的命令的段落,例如用于将具有数据依赖关系的两个命令等不能同时执行的紧后面的命令划分到下一命令群。
另外,图1所示模拟系统1由执行模拟软件的计算机(模拟装置2)和执行调试软件的计算机(调试器3)两台计算机构成,但也可由一台计算机来执行模拟软件与调试软件两者。
目标处理器下面,用图4-图11来说明模块系统1的目标处理器的规格。
图4是表示模拟对象的VLIW处理器的结构框图。如图所示,处理器200是由IF(命令取得)步骤、DC(解码)步骤、EX/MEM(执行/存储器访问)步骤、WB(回写)步骤构成的4阶段流水线结构,包括在IF步骤中取得由多个命令构成的命令群的命令取得控制部201、在DC步骤中同时解码取得的最大3个命令的命令解码器202-204、在EX步骤中按照解码结果来同时执行最大3个命令的ALU(Arithmetic LogicUnit)205-207、在解码的命令是存储器访问命令的情况下、在MEM步骤中执行该命令的存储器访问控制部209、取消命令的执行内容或部分执行内容的命令取消部220、向下一级步骤传递关于命令的信息的流水线寄存器221-223、在解码的命令是存储器访问命令的情况下选择该解码信息的多路复用器230、在解码的命令是分支命令的情况下选择该解码信息的多路复用器231、由多个通用寄存器构成的寄存器文件251、存储程序及数据的存储器252、和发送单元253。
这里,命令取得控制部201向命令解码器202-204发出按命令地址从小到大的顺序配置命令的命令。这是因为与命令取消部220互相配合,对于同时执行的多个命令,得到与按命令解码器202-204的顺序执行命令的情况相同的结果。
图5是表示VLIW处理器200的流水线处理的流程图。图中,纵轴(向下)表示应执行程序中配置的命令的配置顺序,横轴表示周期数。图中,DC1-DC3表示在命令解码器202-204进行处理,EX1-EX3表示在ALU205-207进行处理,MEM表示在存储器访问控制部209进行处理。wait意味着发生互锁。T1、T2··是将步骤时间设为单位的周期。另外,将经命令解码器202及ALU205处理命令的路径(在流水线步骤中为 IF1→DC1→EX1→WB1)称为时间段(slot)x。同样,将IF2→DC2→EX2→WB2的路径称为时间段y,将IF3→DC3→EX3→WB3的路径称为时间段z。将时间段x中的命令称为命令x。对时间段y、z也一样称为命令y、z。
图6表示图5所示命令1~5的一例。图中,对各命令记载命令的地址助记符标记、命令的执行内容、通过命令执行来更新的资源。这里,资源包含寄存器或存储器。图中仅示出相关的资源。助记符标记的sub、add、Id、st、or分别意味着减法命令、加法命令、将数据从存储器写入寄存器中的装入命令、将寄存器数据存储在存储器中的存储命令、逻辑或命令。R0-R6意味着寄存器0-6,(R4+)的+(正号)意味着在命令执行最后加上4的算后增量(post increment)。另外,就命令的执行内容标记而言,=意味着代入,mem(R4)意味着将R4的内容设为地址的存储器的数据,|意味着逻辑或。
另外,存储命令的MEM步骤占两个周期,装入命令的MEM步骤及其他命令的EX步骤由一个周期结束。下面,将如存储命令那样需要比流水线级数(VLIW处理器200中为4个)还多的周期的命令称为延迟命令,将以与流水线级数相同数量的周期处理的命令称为通常命令。
另外,为了简化说明,设存储命令的MEM步骤由两个周期结束,装入命令的MEM步骤由一个周期结束,但即使在装入命令及存储命令的MEM步骤的周期数动态变化的情况下,也不成问题。即,在目标处理器中,在MEM步骤中,在每个周期都等待来自地址端(存储器元件或i/o)的响应(ACK),在有响应的周期来结束存储器访问。
命令群1由作为通常命令的命令1-3构成,如图5所示,在T1-T4等四个周期中处理。命令群2包含作为通常命令的命令5和作为延迟命令的命令4,所以由于发生互锁而需要5个周期的处理时间。
图7是表示图6的命令串的周期与更新的资源的关系图。在周期N+1,命令群1的命令1-3由4个周期完成,所以通过命令1-3来更新指定为目的的寄存器R0、R2-R4。在周期N+2,由于互锁命令群2还未完成,所以不存在更新的资源。在周期N+3,因为命令群2完成,所以通过命令4、5来更新指定为目标的mem(R4)、R4、R5。
图8是表示由命令取消部220来取消命令的情况下的命令例实例图。图中,命令6、7是同时执行的,命令8是单独执行的命令。命令6的比较命令(cmp命令)对应于比较结果来复位(无效化)标记F0。命令7的加法命令(add命令)在标记F0为1时执行,在标记F0为0时不执行。
命令取消部220对于同时执行的命令6、7,对应于命令6的结果,取消命令7。即,命令取消部220在由命令6来将标记F0复位为0的情况下,通过禁止将命令7的执行结果写入寄存器或存储器中,取消命令7。
换言之,命令取消部220可在同时执行的多个命令中有条件分支命令的情况下,对应于条件是否成立来取消后续于条件分支命令的命令。从而,取消部220可从同时执行的多个命令中的任意命令开始进行条件分支。例如,具有图3所示停止行标志的条件语句(if语句)被作为具有停止命令标志的cmp命令和附带标记F0的mov命令来执行(这两个命令与命令6、7相同)。
因为上述命令6、7是同时执行的命令,所以本来没有先后关系,但命令取消部220处理成逻辑上先执行命令6。
另外,命令取消部220在多个命令中存在无条件的单纯分支命令,并同时发出未因分支而执行的命令的情况下,取消该命令。
通过具备命令取消部220,VLIW处理器200是同时执行多个命令的处理器,同时可从同时执行的多个命令中的任意命令开始进行条件分支,所以构成为在同时执行的多个命令之间的关系中得到与按命令地址的顺序执行命令的情况相同的结果。
图9是表示命令取消部220取消命令情况下的命令串的其它实例的图。图中,命令12-14是同时执行的命令。可是,命令13的装入命令(1d命令)和命令14的传送命令(mov命令)都指定寄存器R1作为目的,两个命令向寄存器R1的写入存在竞争关系(将该关系称为输出依赖)。在检测输出依赖关系的情况下,命令取消部220取消命令地址小的命令13向寄存器R1的写入。结果,命令14的执行结果被反映到寄存器R1。该执行的结果与VLIW处理器200采用的下述结构相关,该结构为在同时执行的多个命令之间的关系中得到与按命令地址的顺序执行命令的情况相同结果的结构。
图10是表示伴随发送单元253的发送的流水线处理的说明图。图中,设同时发出装入命令(Id R2,(R3+))及加法命令(add R4,8),单独发出分支命令(br R)。另外,设装入命令的MEM步骤需要两个周期。
因为通过分支命令(br R4)来使用加法命令(add R4,8)的执行结果R4,所以这两个命令具有数据依赖关系。并且,若等待加法命令的WB步骤完成后开始分支命令,则由于数据依赖关系而发生两周期的补充(DC1步骤以T6的周期开始)。
为了避免这种情况,发送单元253在当前执行中的命令群中的任一命令(称为被依赖命令)与下一命令群中的任一命令(称为依赖命令)之间存在数据依赖关系的情况下,取入并暂时保持作为被依赖命令的EX步骤中的执行结果所得到的数据,在依赖命令的EX步骤或MEM步骤开始时将该数据作为操作数数据直接输出(将这称为发送)。
并且,通过将WB步骤中写入的内容形成在相同周期的DC步骤中读出的结构(Read After Write),可不等待WB步骤完成就无补充地执行存在有数据依赖的后续命令。
在图10的情况下,作为被依赖命令(add R4,8)的EX2步骤中的执行结果得到的R4的数据“8“由发送单元253在DC1步骤中作为通过依赖命令(br R4)的操作数指定的地址(8),经多路复用器231输出到命令取得控制部201。这里,在DC1步骤中输出数据是因为如图4所示从DC步骤中途将解码信息(DC信息)输出到IF步骤的结构。这样,通过具备发送单元253,VLIW处理器200消除了源于数据依赖关系的补充。
另外,图10中,因为装入命令(Id R2,(R3+))的MEM步骤为2周期,所以在周期T4中,完成存储器访问。另外,加法命令(add R4,8)在T3完成加法。在这点上,两个命令按与命令地址的顺序不同的顺序执行。并且,若在周期T4执行EX3步骤,则按命令地址的顺序执行该两个命令,但在存在依赖关系的情况下,依赖命令(br R4)中产生补充,进行延迟。因此,VLIW处理器200例外地按与命令地址的顺序不同的顺序执行。即便这种情况下,执行结果也可得到与按命令地址的顺序执行的情况相同的结果。
另外,目标处理器不限于图4,也可同时执行多个命令。例如,也可以是图11所示的VLIW处理器。图11的VLIW处理器是从图4所示VLIW处理器中删除命令取消部220的结构。
模拟系统1的结构以图4-图11所示目标处理器为前提,继续说明本发明实施形态的模拟系统1。
图12是表示模拟系统1的结构功能框图。图中,模拟系统1由用户界面4、调试器3a、模拟装置2构成。
用户界面4相当于图1所示显示装置3b及输入装置3c,从用户接收指示命令单位的模拟执行或命令单位的步骤执行的操作,显示模拟结果。当然,用户界面4在接收不是命令单位而是被同时执行的同时执行多个命令的周期单位的模拟执行操作的情况下,也显示模拟结果。
调试器3a相当于图1所示的主体装置3a,经用户界面4接收命令单位的步骤执行指示或断点的指定等各种控制指令128,经显示装置3b显示经用户界面4反映命令单位的模拟结果来作为对各种控制指令的响应的寄存器文件的内容129或存储器的内容130。另外,调试器3a向模拟装置2发送命令单位的模拟执行指示131,或将存储器地址及大小134发送到模拟装置2,并从模拟装置2接收停止命令通知132、寄存器数据133、存储器内容135,作为对模拟执行指示131或存储器地址及大小134的响应。并且,调试器3a具备流水线状态显示部24,生成表示模拟结果的显示图像。流水线状态显示部24当从用户经用户界面4指示命令单位的步骤执行时,生成表示命令单位的模拟结果的显示图像,当指示周期单位的步骤执行时,生成表示周期单位的模拟结果的显示图像。用户可任意选择命令单位的步骤执行的模拟结果和周期单位的步骤执行的模拟结果。
模拟装置2相当于图1所示主体装置2a,具备流水线模拟部10,以图4所示目标处理器的动作为周期单位来模拟多个命令(命令群)的同时执行;和命令模拟部30,根据模拟结果来生成命令群中的命令单位的模拟结果。通过命令模拟部30根据流水线模拟部10的命令群单位的模拟结果生成每个命令的执行前后状态的所谓二阶段模拟,模拟装置2就象是否对命令单位进行模拟那样对调试器3a生成命令单位的模拟结果。
流水线模拟部10具备第1寄存器文件模块11、存储器模块12、共同信息存储部13、取得模块14、取得信息存储部15、解码模块16、解码信息存储部17、执行模块18、执行信息存储部19、完成处理模块20、完成信息存储部21、过去状态更新控制部22和调度模块23。
命令模拟部30包括第2寄存器文件模块31、存储器值保存部32、资源信息变更部33、模拟控制部34、命令执行状态保持部25。
首先,在说明流水线模拟部10及命令模拟部30的各构成要素之前,先说明图中各箭头线的含义。
101是从模拟控制部34向调度模块23输出1周期大小命令群的模拟执行指示,102是对该模拟执行指示的响应。103是作为命令群的模拟执行前状态的一部分从第1寄存器文件11复制到第2寄存器文件模块31的寄存器数据。
104是存储器地址及大小,105是地址指定到104的存储器数据,并且,若104是存储命令的存储端地址,则是该存储命令的存储前的存储器内容。106是提供给存储器模块12的存储器地址及大小,107是地址指定到106的存储器数据。108、109是与104、105相同内容的数据,从执行模块18提供给调度模块23。110是第2寄存器文件模块的寄存器文件的内容,111是第1寄存器文件11的内容。
112是从执行模块18通知执行1周期EX步骤的模拟的命令执行通知。113是寄存器编号及R/W的区别,114是由113指定的寄存器数据。115是询问是否更新第2寄存器文件模块31的查询,116是表示是否禁止第2寄存器文件模块31的更新的更新禁止通知。117是对存储器模块12的地址、大小、R/W的区别,118是存储器内容、由117指定的存储器数据。119是取得信息,120是解码信息,121是执行信息,122是完成信息。
123-126是分别向完成处理模块、执行模块、解码模块、取得模块输出的执行指示,按该顺序输出(正确调用各模块)。127表示各模块共同使用的共同信息中包含的互锁标志值。互锁标志意味着发生互锁。共同信息中,除互锁标志外,还包含意味着发生流水线失速(スト-ル)的失速标志或由分支命令指定的分支端地址等。128是各种控制指令,129是显示用寄存器数据,130是显示用存储器数据。131是命令单位的模拟执行指示或步骤执行指示,132是作为对131的响应而通知的停止命令通知,133是表示该停止命令执行前的状态的寄存器数据,134是存储器地址及大小,135是由134进行地址指定的存储器内容,表示该停止命令执行前的状态。
下面,说明流水线模拟部10及命令模拟部30的各构成要素。
流水线模拟部10第1寄存器文件模块11具有与目标处理器的寄存器文件相同的寄存器结构。
存储器模块12具有目标处理器的存储器结构,存储调试对象的程序。
共同信息存储部13存储由表示发生互锁的互锁标志、或表示由于特定命令的数据依赖而发生流水线失速的失速标志等构成的共同信息。通过使互锁发生的模块来设置/复位互锁标志,由各模块参照。具体而言,互锁标志被执行模块18设置在存储命令等延迟命令中的第1周期,在第2周期被各复位。各模块在从调度模块23接收1周期的执行指示123-126时,在设置互锁标志的情况下,进行待机动作。
取得模块取得模块14在从调度模块23接收执行指示126时,模拟目标处理器的IF步骤的1周期的动作。即,取得模块14从存储器模块12取得应同时执行的多个命令(这里设最大3个命令),作为取得信息存储在取得信息存储部15中。并且,若取得信息存储部15的命令全部有效,则不将取得信息存储在取得信息存储部15中。这是为了不更新存储在取得信息存储部15中的未解码的取得信息。
图13示出取得信息的一例。图中,取得信息包含命令X-Z、和对应于命令X-Z的命令发出标志、有效标志及命令PC。这里,[命令X]是目标处理器发给命令解码器202的命令、发给时间段x的命令x的命令代码。同样,[命令Y]、[命令Z]分别是发给命令解码器203、204的命令y、z的命令代码。命令X、Y、Z为命令地址从小到大的顺序。[命令发出标志]表示是否从取得模块14经取得信息存储部15向解码模块16发出对应的命令。[有效标志]表示对应的命令是否有效。在应同时执行的命令为3个的情况下,命令X-Z的3个有效标志变为1(有效),在两个的情况下,命令X和Y的两个有效标志变为1(有效),在应单独执行命令的情况下,命令X的有效标志变为1(有效)。[命令PC]意味着相当于目标处理器中取得程序计数器的内容的命令地址。
取得信息存储部15是存储图13所示取得信息的存储器区域。取得信息由取得模块14和解码模块16参照及变更。
解码模块解码模块16当从调度模块23接收执行指示125时,若互锁标志127不是1,则模拟目标处理器的DC步骤的1周期的动作。即,解码模块16从取得信息存储部15中读出取得信息并解码,将解码结果作为解码信息120存储在解码信息存储部17中。此时,对于取得信息存储部15内的取得信息,将解码完命令的有效标志变为0(无效)。其中,有效标志为0的命令,将取得信息中的该命令的信息不变地包含在解码信息中。另外,解码模块16将读出的取得信息中的命令发出标志不变(不变更值)地存储在信息存储部17中。并且,若互锁标志为1,则不更新解码信息存储部17的解码信息。
图14示出解码信息的一例。如图所示,解码信息与取得信息相比,主要的不同之处在于新追加了分别对应于命令X-Y的寄存器更新信息、存储器访问命令、有效标志、PC、寄存器更新信息、存储器访问地址、存储器访问数据、和R/W信息。下面,省略与取得信息相同点的说明,主要说明不同点。
意味着相当于解码程序计数器而非目标处理器中的取得程序计数器的内容的命令地址。[命令X的寄存器更新信息]表示由命令X更新的寄存器(目的寄存器)。命令Y、Z的寄存器更新信息也分别一样。该信息被用于检测输出依赖。
图中存储器访问命令以下列举的各信息仅在命令X-Z之一为存储器访问命令的情况下有效。在命令X-Z之一不为存储器访问命令的情况下无效。[存储器访问命令]是与命令X-Z之一相同的命令,是目标处理器从命令解码器202-204之一经多路复用器230、231发给存储器访问控制部209的命令。[有效标志]表示存储器访问命令是否有效,由解码模块16设置为1(有效),作为初始值。[命令PC]意味着相当于目标处理器中解码程序计数器的内容的命令地址。[寄存器更新信息]表示由该存储器访问命令更新的寄存器。[存储器访问地址]表示地址端的存储器地址。[R/W信息]在装入命令的情况下表示读,在存储命令的情况下表示写,在不存在存储器访问命令的情况下表示NOP。例如,在命令Z为装入命令(Id R0,(R1+))的情况下,命令Z的命令PC与存储器访问命令的命令PC为相同值,但对解码信息中的命令Z设定意味着(R1=R1+4)的操作代码,对存储器访问命令设定意味着(R0=mem(r1))的操作代码。命令Z的寄存器更新信息变为R1,存储器访问命令的寄存器更新信息变为R0。在此情况下,命令Z的操作代码与存储器访问命令的操作代码分担运算功能,对应于目标处理器的ALU207与存储器访问控制部209的运算功能的分担。
解码信息存储部17是存储图14所示解码信息的存储器区域。解码信息由解码模块16写入,由执行模块18读出。
执行模块18扫描模块18在从调度模块23接收执行指示124时,模拟目标处理器的EX/MEM步骤的1周期的动作。即,执行模块18从解码信息存储部17中读出解码信息120,对有效标志为1(有效)的命令,进行该命令的运算内容的模块(具体而言,调用对应于该命令的命令执行函数),更新第1寄存器文件模块11。这里,按顺序模拟命令X、Y、Z,每当各命令的模拟结束时,执行模块18就输出通知是否执行了命令X、Y、Z之一命令的命令执行通知112。
在解码信息中有效存在延迟命令(例如需要2周期的MEM步骤的存储器访问命令)的情况下,若剩余延迟命令的延迟(即第1周期),则执行模块18对多个命令中该存储器访问命令以外的命令X-Z进行模拟,对存储器访问命令不进行模拟,将共同信息存储部13中的互锁标志设置为1,结束该周期的模块。另外,若未剩余延迟命令的延迟(即第2周期),则对存储器模块12进行该存储器访问的模拟,复位互锁标志。此时,在存储器访问命令是存储器写命令的情况下,因为形成执行信息的一部分,所以读出写前的数据。
这种模拟的结果,执行模块18将执行信息存储在执行信息存储部19中。另外,对解码信息存储部17内的解码信息,将模拟完的命令的有效标志设为0(无效)。
图15示出执行信息的一例。图中的执行信息与图14所示解码信息相比,主要的不同之处在于追加存储前的存储器内容。下面,省略与解码信息相同点的说明,主要说明不同点。
命令X-Y的[命令PC]及存储器访问命令的[命令PC]意味着相当于目标处理器中的执行程序计数器内容的命令地址。[存储前数据]在存储器访问命令为存储命令的情况下是存储器写前的存储器数据,输出到存储器值保存部32,用于复原存储器访问命令执行前的状态。
执行信息存储部19是存储图15所示执行信息的存储器区域。执行信息由执行模块18及完成处理模块20参照及更新。
完成处理模块完成处理模块20在从调度模块23接收执行指示123时,若互锁标志127不为1,则模拟目标处理器的WB步骤的1周期的动作。即,完成处理模块20从执行信息存储部19中读出执行信息,对有效标志为1(有效)的命令,进行WB(回写)动作,将完成信息存储在完成信息存储部21中。另外,对执行信息存储部19内的执行信息,将完成的命令的有效标志设为0(无效)。
其中,在本实施例中,因为存储器访问命令以外的命令中向寄存器的回写在执行步骤中完成,所以几乎所有命令不需要完成处理。
图16示出完成信息的一例。图中,完成信息与图15所示执行信息一样,所以省略说明。其中,[命令PC]意味着相当于目标处理器中的完成程序计数器内容的命令地址。
完成信息存储部21是存储图16所示[完成]信息的存储器区域。
过去状态更新控制部22对于来自调度模块23的查询115,在共同信息存储部13中存储的互锁标志为1的情况下,响应禁止从第1寄存器文件模块11向第2寄存器文件模块31复制寄存器文件的数据的更新禁止通知116,在互锁标志为0的情况下,响应不禁止复制的更新禁止通知16。这里,第2寄存器文件模块31通常保存1周期前的第1寄存器文件模块11的内容。过去状态更新控制部22通知禁止是因为在由于发生互锁而使EX/MEM步骤占2周期的情况下,在第2寄存器文件模块31中保存EX/MEM步骤开始前的状态的寄存器数据。
调度(scheduling)模块调度模块23在接收模拟执行指示101时,进行调度,以模拟同时执行多个命令的1周期大小的流水线处理,在完成1周期的模拟后,将响应102输出到命令模拟部30。
图17是表示基于调度模块23的调度命令群的模拟处理的流程图。
如图所示,调度模块23在从模拟控制部34接收模拟执行指示101时(S11是),通过调用过去状态更新控制部22,附加查询115(S12),若作为响应,更新禁止通知116不禁止更新第2寄存器文件模块31(S13是),则将第1寄存器文件模块11的内容复制到第2寄存器文件模块31(S14),若禁止(S13否),则不复制,由此顺序输出执行指示123、124、125、126(S15-18)。执行指示123-126在模拟程序中以函数调用的形式实现。因此,通过按完成处理模块20、执行模块18、解码模块16、取得模块14的顺序执行,由此进行命令群的1周期大小的流水线处理。并且,调度模块23将通知1周期的流水线处理完成的响应102输出到模拟控制部34。
命令模拟部30命令执行状态保持部25保持取得信息存储部15、解码信息120、执行信息121、完成信息存储部21中分别保持的取得信息119、解码信息120、执行信息121、完成信息122的复制,并按照来自模拟控制部34的命令单位或周期单位的模拟执行通知,将取得信息119、解码信息120、执行信息121及完成信息122作为当前流水线中的命令执行状态输出到流水线状态显示部24。
第2寄存器文件模块31保持第1寄存器文件模块11的1周期以上之前(即一命令群执行前)的寄存器数据的复制。该保持内容被用于复原一命令群执行后该命令群中包含的各命令的执行前的寄存器数据。
存储器值保存部32在执行模块18中执行存储命令的模拟的情况下,将该存储器命令的写入端地址的存储前的存储器值保留后进行保持。
资源(resource)信息变更部33当从模拟控制部34接收停止命令的通知时,复原该停止命令的模拟执行前的资源状态。该停止命令指定流水线模拟部10的模拟执行完的最后命令群中包含的任一命令。资源信息变更部33根据流水线模拟部10的命令群的模拟执行后的资源与执行前的资源,复原通知的停止命令还未被模拟时的资源(存储器数据及寄存器数据)状态。换言之,复原对应于直到停止命令之前的命令为止进行模拟的情况。这里,将命令群的模块执行后的资源保持在第1寄存器文件模块11及存储器模块12中。另外,将该命令群的模拟执行前的资源保持在第2寄存器文件模块31、存储器值保存部32中。
具体而言,当停止命令为命令X时,资源信息变更部33复原命令群中的命令X、Y及Z的模拟前的状态。当停止命令为命令Y时,资源信息变更部33复原命令群中的命令Y及Z的模拟前的状态,当停止命令为命令Z时,复原命令群中的命令Z的模拟前的状态。复原时,资源信息变更部33参照图14所示执行信息121,判断由命令X、Y、Z、存储器访问命令中有效命令更新的资源,取得命令X、Y、Z、存储器访问命令各自模拟前的资源。将取得数据中表示停止命令之前的状态作为寄存器数据133或存储器内容135输出到调试器3a。
模拟控制部34对应于模拟执行指示进行命令单位的模拟控制与周期单位的模拟控制。作为命令单位的模拟执行,模拟控制部34保持表示停止命令是哪个的停止命令指针,按照来自调试器3a的模拟执行指示131,控制命令单位的模拟执行,作为结果,将停止命令通知改善到调试器3a。即,模拟控制部34在流水线模拟部10的命令群模拟中将之前执行完的多个命令的任一个作为停止命令来管理,当接收模拟执行指示131时,在符合中断条件的命令存在于流水线模拟部10的之前模拟完的命令群中的情况下,将停止命令指针更新为符合中断条件的命令,将停止命令通知132输出到调试器3a及资源信息变更部33。另一方面,在符合中断条件的命令不存在于流水线模拟部10的之前模拟完的命令群中的情况下,向流水线模拟部10输出模拟执行指示101,使命令群的模拟前进一周期。这样,输出模拟执行指示101,直到符合中断条件的命令存在于之前的命令群的模拟结果中。另外,作为周期单位的模拟,模拟控制部34将停止命令设为命令群的开头命令(时间段X的命令),控制成将流水线模拟部10在周期单位下的模拟结果输出到调试器3a。
图18表示示出基于模拟控制部34的命令单位的模拟控制的流程图。
图中,模拟控制部34若从调试器3a接收断点的指定或执行指示、步骤执行指示等(S21),则如果该指示131是步骤执行指示(如果进行中断条件的指定),则将中断条件设定为下一[执行完的命令](S23)。之后,模拟控制部34在当前的停止命令相当于命令Z的情况下(S24是),向调度模块23输出模拟执行指示101,待机,直到接收响应102(S30),在接收响应后,将周期数增加+1。由此,在流水线模拟部10中重新进行下一命令群的模拟。另外,周期数不是命令单位的模拟周期数,而是命令群单位的模拟周期数。从而,模拟控制部34正确计数目标处理器的周期数。
并且,模拟控制部34判断模拟的新的命令群中的命令X是否执行完且符合中断条件(S32)。就命令X是否执行完的判断而言,若存储在执行信息存储部19中的执行信息中的命令X的有效标志为1(有效)且存储在共同信息存储部13中的互锁标志为0(不在互锁中),则模拟控制部34判断为执行完。这是因为若有效标志为0(无效),则该命令群中不存在有效命令X,若互锁标志为1(互锁中),则即使存在命令X,命令群的模拟也未完成。命令Y、Z是否执行完的判断也一样。
S32的判断结果,在命令X执行完且符合中断条件的情况下,将停止命令指针更新为命令X(S33),模拟控制部34将更新后的停止命令作为停止命令通知132通知给资源信息变更部33及调试器3a(S34)。S32的判断结果,在命令X未执行完或不符合中断条件的情况下,前进到S26。
另外,当前的停止命令是命令Y(S25是),则模拟控制部34判断命令Z是否执行完且符合中断条件(S28)。S28的判断结果,在命令Z执行完且符合中断条件的情况下,将停止命令指针更新为命令Z(S29),将更新后的停止命令作为停止命令通知132通知给资源信息变更部33及调试器3a(S34)。S28的判断结果,在命令Z未执行完或不符合中断条件的情况下,前进到S30。
另外,模拟控制部34在当前的停止命令是命令X时(S25中判断为不是命令Y时),判断命令Y是否执行完且符合中断条件(S26)。S26的判断结果,在命令Y执行完且符合中断条件的情况下,将停止命令指针更新为命令Y(S27),将更新后的停止命令作为停止命令通知132通知给资源信息变更部33及调试器3a(S34)。S26的判断结果,在命令Y未执行完或不符合中断条件的情况下,前进到S38。
这样,模拟控制部34依次将命令群的1周期的模拟执行指示101输出到流水线模拟部10,直到在命令群的模拟结果中发现符合中断条件的命令。因此,在发现停止命令的时刻,必需保存该停止命令所属命令群的模块后与模拟前的状态(资源)。从而可对命令单位进行模拟执行前后的状态复原。
图19是表示资源信息变更部33的结构框图。如图所示,资源信息变更部33具备通常命令结果生成部35、第1补全部36、第2补全部37、存储器内容选择部38,复原从模拟控制部34通知的停止命令的模拟执行前的状态。
通常命令结果生成部35当从模拟控制部34接收停止命令通知132时,根据第1寄存器文件模块11、存储器模块12、第2寄存器文件模块31、存储器值保存部32的内容,复原该停止命令执行前的寄存器文件。通常命令结果生成部35无论通知的命令是通常命令还是延迟命令都复原寄存器文件,但在延迟命令的情况或存在输出依赖的情况下,由第1补全部36、第2补全部37来补充复原。
图20示出通常命令结果生成部35的详细结构的框图。如图所示,通常命令结果生成部35具备每个命令寄存器文件保留部39、保持命令X的模拟执行结果的第3寄存器文件模块40、保持命令Y的模拟执行结果的第4寄存器文件模块41。
每个命令寄存器文件保留部39接收从执行模块18输出的命令X的命令执行通知,复制第1寄存器文件模块11的内容,作为在第3寄存器文件模块40中执行到命令X之前的情况下的模拟执行结果,同样接收命令Y的命令执行通知,复制第1寄存器文件模块11的内容,作为在第4寄存器文件模块41中执行到命令Y之前的情况下的模拟执行结果,从而,将依次执行命令X、Y、Z的情况下各寄存器数据存储在第3、第4、第1寄存器文件模块中。此时,第2寄存器文件模块31存储之前的命令群的执行结果。另外,每个命令寄存器文件保留部39当从模拟控制部34接收停止命令的通知时,若停止命令是命令X,则输出表示其前命令群的执行结果的第2寄存器文件模块31的内容。同样,若停止命令是命令Y,则输出第3寄存器文件模块40的内容,若停止命令是命令Z,则将第4寄存器文件模块41的内容经第1补全部36、第2补全部37输出到调试器3a。该输出在命令X-Z是通常命令(不产生延迟的命令)的情况下,不必接收第1补全部36、第2补全部37的补充,原样输出到调试器3a。
这样,通常命令结果生成部35在命令群中不包含延迟命令的情况下,即使停止命令是命令X、Y、Z之一,也生成该停止命令之前的命令执行完的时刻的寄存器文件的内容。另外,在目标处理器构成为不允许相同命令群中的输出依赖的情况下,可省略第3、第4寄存器文件模块40、41。在省略的情况下,参照执行信息存储部19内的寄存器更新信息,通过从第1寄存器文件模块11读出命令X、Y、Z各命令更新后的寄存器的内容、从第2寄存器文件模块12读出此外的寄存器的内容,通常命令结果生成部35生成应输出的内容。
第1补全部36在EX步骤中延迟命令(存储器访问命令)包含于命令群中的情况下,从执行信息存储部19参照该延迟命令更新的寄存器编号与更新内容(存储器访问数据),补充表示由通常命令结果生成部35生成的停止命令执行前的状态的寄存器文件内容。
例如,若设装入命令(Id R0,(R1+))占2周期,则必需在第1周期完成寄存器R1的更新,在第2周期完成寄存器R0的更新。原因在于,目标处理器中R1的更新由在1周期中执行的3个ALU之一分担,R0的更新由需要2周期的存储器访问控制部209分担。因此,执行信息存储部19保持存储器访问命令的更新寄存器编码和作为更新内容的存储器访问数据。第1补全部36在停止命令是比相同命令群的装入命令靠后的命令的情况下,从执行信息存储部19中读出存储器访问命令的寄存器更新信息与作为更新后内容的存储器访问数据,将更新后的寄存器作为延迟寄存器,将存储器访问数据识别为延迟数据。
并且,第1补全部36通过用延迟数据来更新从通常命令结果生成部35输出的寄存器文件内容的延迟寄存器所对应的部位,复原延迟命令存在情况下的寄存器文件。其中,由装入命令更新的寄存器在由相同命令群中更靠后的命令更新的情况下(有输出依赖的情况下),因为装入命令的寄存器写入被取消,所以不进行补充。另外,在延迟命令是未更新寄存器的命令(失速命令等)的情况下,当然也不进行补充。从而,在指示命令单位的模拟的情况下,用命令单位来正确复原资源。
第2补全部37在MEM步骤中需要2周期以上的延迟命令、和比延迟命令靠后配置的与延迟命令存在输出依赖关系的其它命令(下面称为输出依赖命令)包含于相同命令群中的情况下,在停止命令之前有延迟命令,在停止命令之后有输出依赖命令的情况下,与第1补全部36一样用延迟数据来更新延迟寄存器,补充从第1补全部36输出的寄存器文件的内容。
例如,设命令Y是装入命令(Id R1,(R2+)),命令Z是传送命令(mov R1,3),装入命令的EX步骤需要2周期。此时,命令Y与命令Z都具有将寄存器R1设为目的的输出依赖关系,但命令Z的寄存器R1必需进行更新。这是因为目标处理器在EX步骤的第1周期中进行装入命令的寄存器R2的增加与mov命令的寄存器R1的更新,在第2周期中通过命令取消部220取消装入命令的寄存器R1的更新。但是,在命令单位的模拟中,由还未执行的命令Z来取消命令Y的执行结果是不自然的。与其这样不如由命令Z通过改写寄存器R1来取消。因此,第2补全部37生成与挨个顺序执行命令Y、Z的情况相同的结果,所以即使是通过输出依赖来取消的执行内容,也可补充其执行结果。
图21是表示存储器值保存部32的详细结构的框图。如图所示,存储器值保存部32具备保持由存储命令写入前的寄存器数据的存储前数据存储部42、保持由该存储命令指定的地址的存储地址存储部43、和存储器内容变更部44。
存储器内容变更部44当从资源信息变更部33接收停止命令有知时,在命令群中的停止命令之后包含存储命令的情况下,复原该存储命令执行前的存储器内容。在从资源信息变更部33指定读出的存储器地址及大小104中包含该存储命令的地址端的地址的情况下,使存储前数据存储部42的数据代替存储器模块12的数据包含于存储器内容105中,输出到资源信息变更部33。
例举程序实例来说明上述构成的实施形态中的模拟系统1。
第1程序例图22是表示模拟对象的第1程序例的图。图的程序例仅表示由同时执行的命令6、7构成的命令群1和由命令8构成的命令群2。向各命令标记表示命令地址的[PC]、[助记符]、[模拟结果]、[显示结果]和[停止]。设命令群1的模拟之前的状态为{R0、R1、R2、R3、F0}={1、0、0、0、1}。
表示命令模拟部30以命令单位来模拟该命令后的状态(图中仅标记R0-R3,F0)。[显示结果]表示当该命令是停止命令时显示在调试器3中的状态,表示该停止命令执行前的状态。[停止]表示在将该命令设为中断条件的情况下是否中断(停止),即该命令是否为停止命令。
该程序例的情况下,命令6、8变为停止命令,但命令7未变为停止命令。这是因为命令7因标记F0无效,所以即使进行将命令7设为中断条件的模拟,也不能中断。此时,模拟系统1在停止命令的检测中,在命令的模拟执行前不判断中断条件,在命令群的模拟执行后,判断中断条件。从而,得到模拟与目标处理器的程序的执行路径(或分支路径)相同的执行路径(或分支路径)的结果。
具体而言,在流水线模拟部10的命令群1的模拟中,执行模块18通过命令6的模拟来复位标记F0,所以取消命令7的模拟,将复位命令7的有效标记的执行信息122存储在执行信息存储部19中。模拟控制部34当命令群1的模拟结果中有效标记为0时判断为还未执行命令(或不存在命令),所以不对命令7进行是否符合中断条件的判断。因此,命令7未变为停止命令。
这样,模拟系统1不对命令群单位停止模拟,而对命令单位停止模拟。并且,在目标处理器具备取消机构的情况下,也可正确模拟命令群中的命令取消。
第2程序例图23是表示模拟对象的第2程序例的图。图的程序例表示由同时执行的命令1-3构成的命令群1和由命令4、5构成的命令群2。各命令的[PC]、[助记符]、[显示结果]、[停止]与图22一样。其中,设命令群1的模拟之前的状态为{R0、R1、R2、R3、R4、R5、R6}={10、5、0、0、0、1、2},mem(0)=100、mem(4)=200。
该程序例中的命令3是指示将寄存器R4的内容设为地址,读出存储器数据,装入到寄存器R3上,还将寄存器R4增加+4的命令。命令4是指示将寄存器R2的数据、寄存器R4的内容作为地址存储在存储器中,还将寄存器R4增加+4的命令。命令3与命令4存在数据依赖关系。即,命令4使用命令3将寄存器R4增加+4的结果,所以若命令3未执行完,则命令4不能正确执行。
这点在目标处理器中通过图10中说明的发送来防止发生互锁。即,在命令3的执行步骤中,由发送单元253将增加+4的寄存器R4的数据在下一周期提供给命令4的执行步骤。图10中以装入命令的执行步骤占2周期的情况为前提,所以尽管发生1周期的互锁,该互锁不会导致数据依赖关系,而导致2周期的执行步骤。在装入命令的执行步骤仅为1周期的情况下,即便图10也不发生互锁。
对于与之对应的模拟系统1的模拟而言,区分(1)命令3的装入命令在1周期结束的情况、(2)命令3的装入命令需要2周期的情况来说明。
(1)命令3(装入命令)的执行步骤在1周期结束的情况执行模块18在命令3的执行步骤的模拟中存储第1寄存器文件模块11的寄存器R4的数据。并且,执行模块18在下一周期中将第1寄存器文件模块11的寄存器R4用作命令4的执行步骤的模拟来进行命令4的模拟。此时,模拟系统1使用第1寄存器文件模块11来实现相当于目标处理器的发送的功能。
另一方面,在通过中断条件或步骤执行将命令4作为停止命令的情况下,模拟控制部34如图18所示流程那样,由于就流水线模拟部10的命令群2的模拟结果而言命令X与命令4一致,所以将停止命令更新为命令X,通知调试器3a及资源信息变更部33。资源信息变更部33复原命令X的执行前的状态,将寄存器数据133及存储器内容135通知调试器3a。这样,命令X(命令4)之前的命令3的模拟结果变为图23的命令4的显示结果栏。
另外,在该状态下调试器3a参照mem(4)的情况下,因为显示命令4(存储命令)执行前的mem(4),所以资源信息变更部33显示保存到存储器值保存部32中的值200。
(2)命令3(装入(load)命令)的执行步骤需要2周期的情况该情况下,也与(1)一样,得到图23所示的显示结果,但与(1)的不同之处在于模拟系统1进行2周期的模拟。这是因为对目标处理器的周期数也正确进行模拟。
具体而言,命令3被设定为指示将解码信息存储部17中的解码信息120中对寄存器R4的+4的增加的[命令Z]及R4作为地址,读出存储器数据并存储在R3中的[存储器访问命令]。执行模块18在命令3的执行步骤的第1周期的模拟中,将第1寄存器文件模块11的寄存器R4更新为该[命令Z](寄存器R4的+4增加)的模拟,同时,设置互锁标记。在第2周期模拟该[存储器访问命令]。
并且,命令3的第1周期的下一周期中,命令4可利用命令Z的模拟结果(第1寄存器文件模块11的更新完的寄存器R4)。由此可实现与发送一样的功能。
另一方面,在通过中断条件或步骤执行将命令4作为停止命令的情况下,模拟控制部34按照图18所示流程,与(1)一样,复原命令X的执行前的状态,向调试器3a通知寄存器数据133及存储器内容135。
上述(1)(2)由模拟控制部34来对命令单位决定停止命令,由资源信息变更部33决定的停止命令未执行、复原之前命令的模拟完的状态,所以变为相同结果。另外,流水线模拟部10对周期单位进行命令群的模拟,所以模拟控制部34中计数的周期数可比(1)的情况和(2)的情况都更正确地计数目标处理器的周期数。
另外,图23中的命令4(存储命令)的执行步骤为1周期的情况与(1)一样,为2周期的情况与(2)一样,模拟控制部34可正确计数周期数。
第3程序例图24是表示延迟命令具有输出依赖关系的情况下的模拟对象的第3程序例的图。该图的程序例中,除属于命令群5的命令12-14外,记述流水线模拟部10的命令群5的模拟后的第1寄存器文件模块11、第2寄存器文件模块31、第3寄存器文件模块40、第4寄存器文件模块41的各内容(图中仅为R0-R2)、和执行信息存储部19内的存储器访问数据的内容。
在该程序例中,命令13是延迟命令,且命令13与命令14具有输出依赖关系。设命令群5的模拟之前的状态为{R0、R1、R2}={0、0、0}mem(0)=200。另外,设命令13的寄存器访问需要2周期。
流水线模拟部10及模拟控制部34的动作与第2程序例的(2)一样。即,模拟延迟命令的2周期的执行步骤。资源信息变更部33对存储输出依赖关系的命令13、14生成恰好顺序执行的结果。即,资源信息变更部33如图中命令14的显示结果栏那样生成紧前面的命令13的模拟结果。
这点上,目标处理器取消命令13的寄存器R1的更新,仅执行命令14的寄存器R1的更新。这是为了得到按命令12、13的顺序执行的结果。
相反,资源信息变更部33若命令13的下一命令(命令14)为停止命令,则生成命令13的模拟结果,若命令14的下一命令是停止命令,则生成命令14的模拟结果。资源信息变更部33得到按命令12、13的顺序执行的结果这点上与目标处理器相同,但不同之处在于资源信息变更部33对取消的命令13也生成模拟结果。在调试器3a的用户得知存在数据依赖关系的命令结果被取消的过程这一点上,更便利。
具体而言,流水线模拟部10通过命令群5的模拟来更新第1、第2寄存器文件模块11、31。此时,每个命令寄存器文件保留部39从执行模块18接收命令执行通知,更新第3、第4寄存器文件模块40、41。
结果,第1寄存器文件模块11保持命令群5的模拟之后的数据。这是命令Z(即命令14)的模拟之后的数据。第2寄存器文件模块31保持命令群5的模拟之前的数据。第3寄存器文件模块40保持命令X(命令12)的模拟后的数据,第4寄存器文件模块41保持命令Y(即命令13)模拟后的数据。执行信息存储部19内的存储器访问数据保持由命令13装入的存储器内容。
当指示命令14作为停止命令时,资源信息变更部33将第2补全部37对第4寄存器文件模块41的数据补充了存储器访问数据后的数据作为寄存器数据133输出到调试器3a。
这样,根据模拟系统1,在延迟命令与其它命令存在输出依赖关系的情况下,可得到顺序执行这些命令的命令单位的模拟结果,并且,还可正确计数命令群单位的周期数。
指令及显示动作图26表示在指令输入窗口W3输入的指令的一例,作为指定命令群的周期单位的模拟的用户操作。图中,[set stepmode,cycle]是将步骤执行模式指定为周期单位而非命令单位的模拟(周期步骤模式)的指令。该指令从用户界面4经调试器3a输入模拟控制部34。在该指令之后,模拟控制部34作为步骤执行模式的默认值,进行周期单位的模拟,将模拟结果输出到调试器3a。
图27表示在指令输入窗口W3输入的指令的一例,作为指定命令单位的模拟的用户操作。图中,[set stepmode,Inst]是将步骤执行模式指定为命令单位模拟(命令步骤模式)的指令。该指令从用户界面4经调试器3a输入模拟控制部34。在该指令之后,模拟控制部34作为步骤执行模式的默认值,进行命令单位的模拟,将结果输出到调试器3a。通过这些指令,用户可选择地切换命令单位的模拟结果与命令群单位的模拟或命令群的周期单位的模拟。
下面,用图28-图33来说明对应于用户的上述指令输入进行显示的显示例。
图28是表示流水线状态的显示例的图。在图中的指令输入窗口W3中,[display pipeline]指令是指示显示流水线状态窗口W7的指令。该指令从用户界面4经调试器3a输入模拟控制部34。通过该指令,模拟控制部34将命令单位或周期单位的模拟执行通知输出到命令执行状态保持部。按照该模拟执行通知,命令执行状态保持部25将其保持内容(取得信息、解码信息、执行信息、完成信息)输出到流水线状态显示部24。流水线状态显示部24按照取得信息、解码信息、执行信息、完成信息,生成图中流水线状态窗口W7中所示的表示流水线的命令执行状态的显示图像。
在图中的流水线状态窗口W7的显示例中,在IF、DC、EX、WB的每个步骤中,表示PC、与时间段X、Y、Z的各命令和其状态。PC将时间段X、Y、Z中时间段X的命令地址作为代表进行表示。每个步骤、每个时间段的命令由助记符标记显示,同时,通过实线框、虚线框、粗线框、网线框或颜色区分等修饰显示来表示状态。
图中,实线框表示有效命令。虚线框表示无效命令或命令不存在。例如,DC步骤的时间段X中存在1个有效命令(cmp命令),时间段Y、Z中不存在命令。在Ex步骤的时间段X、Y中存在两个命令(add命令、Id命令),在时间段Z中存在无效化(取消)的命令(带执行条件的命令等)。在DC步骤中,仅时间段X中单独存在cmp命令,这是因为下一not命令是将cmp命令的比较结果设为执行条件的带执行条件的命令。即,因为在cmp命令与not命令之间存在数据依赖关系。
粗线框的强调显示表示示意停止命令(图中add命令)的停止命令标志M3。网线表示命令执行完。图中,通过EX步骤中的执行来执行完。
图29是表示在图28的流水线执行状态下再通过命令单位的模拟来步骤执行1命令时的显示例的图。图中的指令输入窗口W1中,[s]指令是指示步骤执行的指令。图中,设定在命令步骤模式。
通过该步骤执行指令,模拟控制部34通过命令单位的模拟来模拟1命令。从而,如图中的流水线状态窗口W7那样,add命令变为表示执行完的网线显示,停止命令标志M3移动到add命令的下一Id命令。
图30是表示在图29的流水线执行状态下还通过[s]指令来由命令单位的模拟步骤执行1命令时的显示例的图。
通过该步骤执行指令,模拟控制部34通过命令单位的模拟来模拟1命令。从而,模拟图29中带停止命令标志M3的Id命令,下一命令变为停止命令。此时,因为下一or命令如虚线所示为无效化的命令(取消的命令),所以Id命令的下一有效命令(这里为cmp命令)为停止命令。结果,如图中流水线状态窗口W7那样,停止命令标志M3移动到Id命令的下一有效的cmp命令。另外,因为IF步骤中时间段X的jmp命令必需单独执行,所以时间段Y、Z中不存在命令。
图31是表示在图30的流水线执行状态下还通过[s]指令来由命令单位的模拟步骤执行1命令时的显示例的图。
通过该步骤执行指令,模拟控制部34通过命令单位的模拟来模拟1命令。从而,模拟图29中带停止命令标志M3的cmp命令,下一命令变为停止命令。此时,因为下一带执行条件not的命令因cmp命令的模拟结果而无效化(取消)。结果,cmp命令的下一有效命令(mov命令)为停止命令。如图中流水线状态窗口W7那样,停止命令标志M3移动到cmp命令的下一有效的mov命令。另外,IF步骤的各时间段中都不存在命令是因为由于DC步骤的jmp命令的解码结果,流水线被瞬态干扰(flash)。这样,在命令单位的模拟中,命令单位的流水线状态正确显示于流水线状态窗口W7中。
图32是表示在图31的流水线执行状态下还通过[s/c]指令来由周期单位而非命令单位的模拟步骤执行1周期时的显示例的图。
图中的指令输入窗口W1中的[s/c]指令是附加了指示周期单位的步骤执行的选项参数[/c]的步骤执行指令。通过该指令,流水线状态窗口W7表示命令群单位模拟中的下一周期的状态。结果如图所示,停止命令标志M3向图31的停止命令(mov命令)的下一命令群的最初有效命令(jmp命令)移动。DC步骤的各时间段中不存在命令。在IF步骤中取得jmp命令的jmp端的命令(两个mov命令)。
图33是表示在图32的流水线执行状态下还通过[s/c]指令来由周期单位而非命令单位的模拟步骤执行1周期时的显示例的图。图32中,在DC步骤的各时间段中不存在命令,所以周期单位的模拟结果如图33所示,变为Ex步骤的各时间段中不存在命令的状态。这样,在周期单位的模拟中,每个周期的流水线状态被正确显示在流水线状态窗口W7中。
如上所述,根据本发明的实施形态的模拟系统1,将同时执行多个命令的处理器设为目标,但可对命令单位进行模拟。因此,可对同时执行的命令单位进行中断,而非命令群单位的中断。
并且,模拟系统1进行由命令群的周期单位的模拟与命令单位的模拟构成的两阶段模拟,所以可正确模拟目标处理器的周期数。
另外,即便在目标处理器具有发送功能的情况、由延迟命令发生互锁的情况及具有取消功能的情况下,也可正确模拟目标处理器的周期数。
另外,在上述实施形态中,模拟控制部34对命令单位在进行命令模拟后判断是否符合中断条件,但也可代之以在模拟之前判断中断条件。此时,图25中示出对图22的第1程序例的模拟结果及显示结果。与图22相比,仅[显示结果]栏不同。即,图25的[显示结果]栏表示与[模拟结果]栏相同的该命令的模拟结果。图25中,在将取消的命令7设为中断条件的情况下,成为停止。此时,软件开发者可确认是否取消命令7。
另外,在上述实施形态中,存储器访问命令的MEM步骤所需周期数也可以是1周期以上的任意周期数,另外,在动态变化的情况下,适用本发明的模拟装置可正确模拟目标处理器的周期数。此时,也可模拟存储器模块中在哪个周期来返回对存储器访问的响应(ACK)。
第3寄存器文件模块40不保持全部寄存器的数据,而仅保持由命令更新的寄存器的数据。第4寄存器文件模块41也一样。
虽然参照附图、通过实施例来详细描述了本发明,但值得注意的是,对本领域的技术人员而言,不同的改变或变更是显而易见的。因此,除非这些改变或变更脱离本发明的范围,否则应认为其包含在内。
权利要求
1.一种模拟装置,以VLIW处理器为对象,其特征在于具备第1模拟单元,模拟应同时执行的多个命令构成的命令群;和第2模拟单元,根据第1模拟单元的模拟结果,生成所述命令群中每个命令的模拟结果。
2.根据权利要求1所述的模拟装置,其特征在于所述第2模拟单元生成以下模拟结果将由第1模拟单元在紧前面模拟的命令群中包含的命令,从模拟完成返回到未模拟。
3.根据权利要求2所述的模拟装置,其特征在于所述模拟装置还具备显示控制单元,使第2模拟单元的命令单位的模拟结果显示于显示部。
4.根据权利要求2所述的模拟装置,其特征在于所述第2模拟单元具备判断单元,判断满足中断条件的命令是否包含于第1模拟单元模拟的命令群中;指示单元,在判断为不包含的情况下,指示第1模拟单元进行下一命令群的模拟;决定单元,在判断为包含的情况下,将满足所述中断条件的命令决定为停止命令;和生成单元,生成将命令群中的停止命令之后的命令从模拟完成返回到未模拟的模拟结果。
5.根据权利要求1所述的模拟装置,其特征在于所述第1模拟单元将同时执行多个命令的流水线处理器作为对象,所述模拟装置还具备显示图像生成单元,根据第1模拟单元及第2模拟单元的模拟结果,生成表示流水线中存在的命令的显示图像。
6.根据权利要求5所述的模拟装置,其特征在于所述显示图像包含流水线的每个阶段中存在的命令的标记。
7.根据权利要求1所述的模拟装置,其特征在于所述第1模拟单元模拟同时执行多个命令的流水线处理器的周期单位的动作,所述模拟装置还具备接收单元,接收对命令单位的步骤执行及所述周期单位的步骤执行之一进行指示的用户操作;和显示图像生成单元,当接收到对命令单位的步骤执行进行指示的用户操作时,生成表示第2模拟单元的命令单位的模拟结果的显示图像,当接收到对周期单位的步骤执行进行指示的用户操作时,生成表示第1模拟单元的周期单位的模拟结果的显示图像。
8.根据权利要求7所述的模拟装置,其特征在于所述显示图像包含流水线中存在的各命令的标记。
9.根据权利要求7所述的模拟装置,其特征在于所述显示图像包含流水线的每个阶段中存在的命令的标记。
10.根据权利要求1所述的模拟装置,其特征在于所述第1模拟单元具备存储部,存储表示VLIW处理器的资源的第1数据;保存单元,将第1数据的复制作为第2数据保存在存储单元中;和第1模拟器,在保存后,通过模拟所述命令群的执行来更新第1数据,所述第2模拟单元根据第1数据及第2数据,得到所述命令群中的命令单位的模拟结果。
11.根据权利要求10所述的模拟装置,其特征在于所述保存单元将寄存器组的数据作为第2数据保存在存储单元中,所述第2模拟单元将该命令在模拟执行前的资源的数据复原为所述命令群中的命令单位。
12.根据权利要求11所述的模拟装置,其特征在于所述保存单元还在所述命令群中存在存储器写命令的情况下,使写前的存储器数据包含于第2数据中,保存在存储单元中。
13.根据权利要求10所述的模拟装置,其特征在于所述第2模拟单元具备判断单元,判断满足中断条件的命令是否包含于第1模拟单元模拟的命令群中;指示单元,在判断为不包含的情况下,指示第1模拟单元进行下一命令群的模拟;和决定单元,在判断为包含的情况下,将满足所述中断条件的命令决定为停止命令。
14.根据权利要求13所述的模拟装置,其特征在于所述判断单元在命令单位的模拟步骤分行中,将当前停止命令的下一命令设为中断条件。
15.根据权利要求13所述的模拟装置,其特征在于所述第2模拟单元还具备复原单元,根据所述第1数据及第2数据,复原在决定单元决定的停止命令的紧前面的命令之前进行了模拟情况下的资源的数据。
16.根据权利要求13所述的模拟装置,其特征在于所述第2模拟单元还具备复原单元,根据所述第1数据及第2数据,复原在决定单元决定的停止命令之前进行了模拟的情况下的资源的数据。
17.根据权利要求16所述的模拟装置,其特征在于所述第1模拟器对所述命令群中的各命令生成表示由该命令变更的资源的更新信息,所述复原单元按照第1数据、第2数据及更新信息,对该命令群中的每个命令复原在该命令之前依次执行的结果所对应的资源数据。
18.根据权利要求10所述的模拟装置,其特征在于所述第1模拟器以进行流水线处理的VLIW处理器为对象,以流水线处理的周期单位进行命令群的模拟,所述模拟装置还计数命令群单位的模拟中的执行周期数。
19.根据权利要求18所述的模拟装置,其特征在于所述VLIW处理器具有取消应同时执行的多个命令中的命令执行的取消机构,所述第1模拟器模拟取消机构。
20.根据权利要求18所述的模拟装置,其特征在于所述第1模拟器还对以模拟对象的VLIW处理器的执行阶段发生延迟周期的延迟命令,模拟延迟周期,所述复原单元按照延迟命令的更新信息来生成延迟命令的模拟结果所对应的资源数据。
21.根据权利要求20所述的模拟装置,其特征在于所述复原单元在模拟对象的VLIW处理器的执行阶段发生延迟周期的延迟命令之间,对相同命令群内具有输出依赖关系的输出依赖命令,按照延迟命令的更新信息与输出依赖命令的更新信息,生成输出依赖命令的模拟结果所对应的资源数据。
22.一种模拟方法,以VLIW处理器为对象,其特征在于具有第1步骤,模拟应同时执行的多个命令构成的命令群;和第2步骤,根据第1步骤的模拟结果,生成所述命令群中每个命令的模拟结果。
23.一种程序,使计算机执行VLIW处理器的模拟,其特征在于使计算机执行第1步骤,模拟应同时执行的多个命令构成的命令群;和第2步骤,根据第1步骤的模拟结果,生成所述命令群中每个命令的模拟结果。
全文摘要
本发明的模拟装置是以同时执行多个命令的流水线处理器为对象的模拟装置,其中,具备流水线模拟部,模拟应同时执行的多个命令构成的命令群;和命令模拟部,根据流水线模拟部的模拟结果,生成所述命令群中每个命令的模拟结果,命令模拟部生成将流水线模拟部在紧前面模拟的命令群中包含的命令从模拟完成返回到未模拟的模拟结果。
文档编号G06F9/38GK1506809SQ20031012055
公开日2004年6月23日 申请日期2003年12月12日 优先权日2002年12月12日
发明者柴田耕作 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1