CN102819419A - 指令执行流信息处理系统和装置及方法 - Google Patents

指令执行流信息处理系统和装置及方法 Download PDF

Info

Publication number
CN102819419A
CN102819419A CN2012102607363A CN201210260736A CN102819419A CN 102819419 A CN102819419 A CN 102819419A CN 2012102607363 A CN2012102607363 A CN 2012102607363A CN 201210260736 A CN201210260736 A CN 201210260736A CN 102819419 A CN102819419 A CN 102819419A
Authority
CN
China
Prior art keywords
information
instruction
stream
carried out
branch
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
Application number
CN2012102607363A
Other languages
English (en)
Other versions
CN102819419B (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp 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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201210260736.3A priority Critical patent/CN102819419B/zh
Publication of CN102819419A publication Critical patent/CN102819419A/zh
Application granted granted Critical
Publication of CN102819419B publication Critical patent/CN102819419B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种指令执行流信息处理系统和装置及方法,该系统包括微处理器与外部主机,以及指令执行流信息处理装置。所述指令执行流信息处理装置包括获取信息子装置,用于监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。所述导出子装置,用于控制从分析处理信息子装置中读取指令执行流改变信息,导出到所述外部主机。其使用较少的存储空间记录更多的最近的信息,有效提供了可用于但不限于硅后调试以及编译优化的信息。

Description

指令执行流信息处理系统和装置及方法
技术领域
本发明涉及一种计算机处理器技术领域,特别涉及一种处理器多发射乱序执行指令的指令执行流信息处理系统和装置及方法。
背景技术
当前,处理器如RISC架构的微处理器的编译器的优化功能和一些硅后调试工作,需要获取处理器执行过程中的多发射乱序执行指令执行流信息,以此来进行编译优化,或者进行硅后调试。
而处理器在执行程序时,由于多发射乱序执行指令执行流仅在两种情况下会被改变:第一种情况为执行了一条分支指令,第二种情况为发生了一个例外,处理器为了得知执行的多发射乱序执行指令执行流信息,则在获取处理器执行过程中的多发射乱序执行指令执行流信息过程中,需要获取指令执行流改变信息,包括分支指令的目的地址,以及例外的发生地点及其例外代码等。
但是,目前并没有性能较好的用于多发射乱序执行指令执行流改变信息等执行流信息处理的方法或者装置,现有的获取指令执行流改变信息的执行流信息处理方法,性能开销非常大,并且很难保证所获得信息的正确性,业界迫切需要进行这方面的研究并提供切实可行的装置和系统与方法。
发明内容
本发明的目的在于提供一种指令执行流信息处理系统和装置及方法,其可以降低产生的信息的大小,大幅提高系统的实用性。
为实现本发明目的而提供的一种指令执行流信息处理系统,包括多发射乱序执行的微处理器与外部主机,还包括设置于所述微处理器和外部主机之间的指令执行流信息处理装置;
所述指令执行流信息处理装置包括:获取信息子装置,分析处理信息子装置,其中:
所述获取信息子装置,用于监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
所述分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
较优地,所述的指令执行流信息处理系统,所述指令执行流信息处理装置,还包括导出子装置;
所述导出子装置,用于控制从分析处理信息子装置中读取指令执行流改变信息,导出到所述外部主机。
较优地,所述的指令执行流信息处理系统,所述导出子装置是基于多核处理器的EJTAG TAP总控制器的导出子装置,所述导出子装置将指令执行流改变信息先输出到EJTAG TAP总控制器,再通过EJTAG TAP总控制器输出到外部主机。
为实现本发明目的还提供一种指令执行流信息处理装置,包括获取信息子装置,分析处理信息子装置,其中:
所述获取信息子装置,用于监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
所述分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
较优地,所述分析处理信息子装置,包括判断处理模块、合并处理模块、存储信息模块,其中:
所述判断处理模块,用于判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;如果有,则控制将该例外信息直接存入所述存储信息模块作为最后一项指令执行流改变信息;否则,判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,提交给合并处理模块处理;如果没有,则不对存储信息模块进行操作,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行指令结束;
所述合并处理模块,用于将判断处理模块提交的当前时刻的分支指令信息与存储信息模块记录存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新所述存储信息模块的最后一项指令执行流改变信息或者存储到所述存储信息模块,作为新的最后一项指令执行流改变信息;
所述存储信息模块,用于将处理后的指令执行流改变信息进行更新次数或者加入新项存储操作。
较优地,所述的指令执行流信息处理装置,还包括导出子装置,用于控制从分析处理信息子装置中读取指令执行流改变信息,导出到所述外部主机。
较优地,所述的指令执行流信息处理装置,所述导出子装置包括导出控制器、导出模块、PCSAMPLE寄存器和READ STATUS寄存器,其中:
所述导出控制器,用于设置读状态寄存器的读指针,控制PCSAMPLE寄存器存储导出的指令执行流改变信息;
所述PCSAMPLE寄存器,用于存储根据PC值,存储导出模块导出的分析处理信息子装置存储的指令执行流改变信息;
所述READ STATUS寄存器,包括存储信息模块满时指示是否使处理器停顿、或者指示删除最先进入存储信息模块的指令执行流改变信息、或者指示不再接收最新得到的指令执行流改变信息的指示位,以及指示用于指定读取存储信息模块中哪一项指令执行流改变信息的读指针;
所述导出模块,用于通过PCSAMPLE寄存器读出当前的PC值,并根据READ STATUS寄存器指示的读指针,将存储信息模块对应读指针的项的指令执行流改变信息内容存入PCSAMPLE寄存器中,再由外部主机通过PCSAMPLE寄存器读出。
为实现本发明目的更提供一种指令执行流信息处理方法,包括如下步骤:
步骤S100,监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
步骤S200,对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
较优地,所述的指令执行流信息处理方法,所述步骤S200包括如下步骤:
步骤S210,判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;
步骤S220,如果有,则控制将该例外信息直接存储作为最后一项指令执行流改变信息,进入步骤S250;
步骤S230,如果没有,则判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,进入步骤S240;如果没有,则不进行操作,进入步骤S250;
步骤S240,将提交的当前时刻的分支指令信息与存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,进入步骤S250;
步骤S250,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行结束。
较优地,所述的指令执行流信息处理方法,还包括如下步骤:
步骤S300,控制读取指令执行流改变信息,导出到所述外部主机。
较优地,所述步骤S300包括如下步骤:
步骤S310,外部主机读取PCSAMPLE寄存器中存储的PC值。该步骤为可选步骤,也可以直接进入步骤S320。
步骤S320,设置读状态寄存器的读指针,将对应读指针的指令执行流改变信息内容存入PCSAMPLE寄存器,再由外部主机读出。
本发明的有益效果:本发明的指令执行流信息处理系统和装置及方法,其通过获取并处理多发射乱序执行处理器中分支指令执行的指令执行流改变信息,包括分支指令信息及例外信息,使用较少的存储空间记录更多的最近的信息,降低产生的信息的大小,尤其是处理器执行循环时的信息大小,大幅提高了获取多发射乱序执行处理器的指令执行流改变信息的系统的实用性。并且,其进一步通过寄存器导出指令执行流改变信息来快速的、方便的按项读取、导出已经存储好的指令执行流改变信息,有效提供了可用于但不限于硅后调试以及编译优化的信息,相比于现有的实现方法,时间开销非常小,准确度也较为提高。
附图说明
图1为本发明实施例指令执行流信息处理系统结构示意图;
图2为本发明实施例图1中存储信息模块数据结构示意图;
图3为本发明实施例图1中指令执行流信息处理装置中的导出子装置的工作过程示意图;
图4为本发明实施例图3中READ STATUS寄存器数据结构示意图;
图5为本发明实施例指令执行流信息处理方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明指令执行流信息处理系统和装置及方法的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,为本发明实施例指令执行流信息处理系统结构示意图。
如图1所示,本发明实施例的指令执行流信息处理系统,包括多发射乱序执行的微处理器100与外部主机200(如外部调试主机)。
本实施例中的微处理器以包括8个处理器核的多核处理器为例,但是,应当说明的是,本发明中并不以8个处理器为限,其可以是单核处理器或者1个以上多个处理器核组成的多核处理器。
如图1所示,本发明实施例的指令执行流信息处理系统,还包括设置于所述微处理器100和外部主机200之间的指令执行流信息处理装置300;
所述指令执行流信息处理装置300包括:获取信息子装置310,分析处理信息子装置320,其中:
所述获取信息子装置310,用于监控所述微处理器100,获取所述微处理器100的多发射乱序执行指令执行流改变信息。
较佳地,所述指令执行流改变信息包括但不限于分支指令的源地址、目的地址,以及发生例外的指令、例外的代码。
监控并获取所述微处理器的多发射乱序执行指令执行流改变信息是一种现有技术,因此,在本发明实施例中,不再一一详细描述。
所述分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
下面具体描述本发明实施例的分析处理信息子装置:
所述分析处理信息子装置,包括判断处理模块321,合并处理模块322,存储信息模块323,其中:
所述判断处理模块321,用于判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;如果有,则控制将该例外信息直接存入所述存储信息模块作为最后一项指令执行流改变信息;否则,判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,提交给合并处理模块处理;如果没有,则不对存储信息模块进行操作,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行指令结束。
所述合并处理模块322,用于将判断处理模块提交的当前时刻的分支指令信息与存储信息模块记录存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新所述存储信息模块的最后一项指令执行流改变信息或者存储到所述存储信息模块,作为新的最后一项指令执行流改变信息。
作为一种可实施方式,所述合并是连续多条向同一地址跳转的分支指令仅记录一项,并记录其连续出现次数。
其中,较佳地,所述例外信息包括例外发生地址和例外代码;所述分支指令信息包括分支目的地址信息和分支次数信息。
本发明实施例的分支指令信息包括分支指令的目的地址,而不包括分支指令的源地址,这样做可以以同样的方法处理直接跳转指令(包含固定地址跳转以及可变地址跳转)和条件跳转指令,并可以适用于不同的微处理器体系结构和不同的指令集,具有可扩展性。
所述存储信息模块323,用于将处理后的指令执行流改变信息进行更新次数或者加入新项存储操作。
根据处理得到的指令执行流改变信息,对存储信息模块进行更新次数和加入新项两种操作。
存储信息模块同一时刻最多会发出一次更新次数操作,以及多个加入新的最后一项指令执行流改变信息操作,加入新项操作数量的上限等于当前处理器核每一时钟周期可以提交的分支指令的上限。
经过处理,包括例外信息和分支信息的指令执行流改变信息产生相应的对存储信息模块的操作,该操作结果存储在存储信息模块,或者更新存储信息模块的内容。
本发明实施例中,考虑到单独记录例外信息并不能完全还原原始执行的指令执行流,只有将例外信息和分支指令信息一起记录,获知它们之间的顺序,才可以完全还原原始的指令执行流,因此,存储信息模块同时记录存储多发射乱序执行的微处理器的分支指令信息和例外信息。
作为一种可实施方式,较佳地,所述存储信息模块323为一FIFO(先进先出)存储器件。
本发明实施例的存储信息模块323的数据格式如图2所示。其中存储的指令执行流改变信息包括例外信息和分支指令信息,所述例外信息包括例外发生地址和例外代码;所述分支指令信息包括分支指令目的地址和分支次数(重复次数)。
作为一种可实施方式,所述存储信息模块中例外信息所记录的内容为:64位发生例外的指令的地址以及16位的例外代码,其中例外代码跟微处理器体系结构相关。所述存储信息模块中分支指令信息记录的内容为:64位分支指令目的地址以及16位的分支次数。
作为另一种可实施方式,为了节省存储空间,当采用本发明实施例的微处理器只需要记录32位地址时,可以只记录32位的例外发生地址和分支指令目的地址。
较佳地,作为另一种可实施方式,所述存储信息模块还包括一更新标记位,用于表示已经不会被更新的记录分支次数部分是否为1,也即没有被更新过。
本发明实施例中,由于不可能更新除了最后一项指令执行流改变信息记录之外的记录,因此为了节省存储空间,作为一种可实施方式,本发明实施例使用一个1位的更新标记位来表示已经不会被更新的记录(也即当执行插入新项的操作时,存储器件中原本已有的最新进入的记录,包括如果当前时刻插入两个新项时的前一项记录)次数部分是否为1,也即没有被更新过。
存储信息模块在加入新的最后一项指令执行流改变信息前,先判断原来的最后一项指令执行流改变信息中的分支次数,如果分支次数为1,则将更新标记位标记为1;否则,将更新标记位标记为0;
然后,根据更新标记位,控制存储信息模块存储指令执行流改变信息;
如果该位为1,则表示该项记录没有被后来发生的分支指令更新过,因此存储信息模块只需要记录64位地址和该更新标记位;
如果该位为0,则表示该项记录被后来发生的分支指令更新过,则需要记录64位地址,以及16位的分支次数部分。
该更新标记位使得本发明实施例可以降低当处理器没有执行循环时产生的信息的大小。
较佳地,所述存储信息模块,还用于在更新操作时,首先判断更新后的分支次数是否溢出,如果否,则进行更新操作;如果是,则不再进行更新操作,而是直接将分支指令信息存储到存储信息模块作为新的最后一项指令执行流改变信息,其中分支指令目的地址信息为该分支指令信息中的分支指令目的地址,分支次数信息为该分支指令信息中的分支次数。
较佳地,所述本发明实施例的指令执行流信息处理系统中,所述指令执行流信息处理装置300,还包括导出子装置330,其中:
所述导出子装置330,用于控制从分析处理信息子装置320中读取指令执行流改变信息,导出到所述外部主机200。
较佳地,所述指令执行流改变信息包括但不限于分支指令目的信息和例外信息。
较佳地,作为一种可实施方式,所述导出子装置是基于多核处理器的EJTAG TAP总控制器的导出子装置,所述导出子装置将指令执行流改变信息先输出到EJTAG TAP总控制器,再通过EJTAG TAP总控制器输出到外部主机。
EJTAG(Enhanced Joint Test Action Group,加强的联合测试行为组织)接口是一种标准的处理器对外接口,作为一种可实施方式,其可以被龙芯系列处理器所使用。
作为一种可实施方式,举例而言,EJTAP TAP总控制器可被龙芯3号多核处理器所使用,其可以针对多核处理器只有一个EJTAG接口的特点,使用一个EJTAG TAP总控制器来单独控制所有处理器核的EJTAG TAP控制器的一个,或链式控制所处理器核中的EJTAG TAP控制器,以此实现多核处理器的EJTAG调试功能。
较佳地,作为一种可实施方式,如图1所示,所述导出子装置330,包括导出控制器331,导出模块332,指令地址指针(PCSAMPLE)寄存器333和读状态(READ STATUS)寄存器334,其中:
所述导出控制器331,用于设置读状态寄存器的读指针,控制指令地址指针(PCSAMPLE)寄存器存储导出的指令执行流改变信息。
所述指令地址指针(PCSAMPLE)寄存器333,用于存储PC值(ProgramCounter,表示下一条指令存储的地址),以及存储导出模块导出的分析处理信息子装置320存储的指令执行流改变信息,包括分支指令目的信息和例外信息。
所述读状态(READ STATUS)寄存器334,包括指示是否使处理器停顿、或者指示删除最先进入存储信息模块的指令执行流改变信息、或者指示不再接收最新得到的指令执行流改变信息的指示位,以及指示用于指定读取存储信息模块中哪一项指令执行流改变信息的读指针;
所述导出模块332,用于通过PCSAMPLE寄存器读出当前的PC值,并根据读状态(READ STATUS)寄存器指示的读指针,将存储信息模块对应读指针的项的指令执行流改变信息内容存入PCSAMPLE寄存器中,再由外部主机通过PCSAMPLE寄存器读出。
如图3所示,作为一种可实施方式,所述指令地址指针(PCSAMPLE)寄存器333为EJTAG中的PCSAMPLE寄存器。PCSAMPLE寄存器是EJTAG标准中用于采样当前处理器的PC(Program couter,程序计数器)的寄存器,该寄存器只有在调试时会使用到。本发明实施例中,作为一种可实施方式,该寄存器可以被复用,既可以在读状态(READ STATUS)寄存器未设置时由外部主机正常读取PC值,也可以用其存储导出模块导出的分析处理信息子装置320存储的指令执行流改变信息,包括分支指令目的地址和例外信息。
作为一种可实施方式,所述指示位的值可以在EJTAG断点触发时由外部主机发出设置。
作为一种可实施方式,READ STATUS状态寄存器334的结构如图4所示,在EJTAG TAP控制器中加入读状态(READ STATUS)寄存器,包括指示停顿微处理器的第一指示位,指示停止新的指令执行流改变信息进入存储信息模块的第二指示位,指示删除最先进入存储信息模块的指令执行流改变信息的第三指示位,这3个指示位是指示当存储器件满了之后如何操作;以及指示用于指定读取存储信息模块中哪一项指令执行流改变信息的读指针。
当读状态(READ STATUS)寄存器中读取指示位为1时,读取对应于读指针的存储信息模块已存储的指令执行流改变信息;当READ STATUS寄存器中停顿处理器的第一指示位为1时,指示停顿处理器;当READ STATUS寄存器中停止新信息进入存储信息模块的第二指示位为1时,指示停止新指令执行流改变信息进入存储信息模块;当READ STATUS寄存器中停顿处理器的第三指示位为1时,指示删除最先进入存储信息模块的指令执行流改变信息。
作为一种可实施方式,所述READ STATUS寄存器的值可以由外部主机通过EJTAG接口传输到导出控制器进行修改设置。
作为一种可实施方式,所述PCSAMPLE寄存器的值可以由外部主机通过EJTAG接口读取。
作为一种可实施方式,所述读指针的位数取决于存储信息模块的指令执行流改变信息的项数。
作为一种可实施方式,当要读取最先进入存储信息模块的指令执行流改变信息时,读指针应当设定值是与所采用的存储信息模块相关的。
作为一种可实施方式,停顿处理器和停止新的指令执行流改变信息进入存储信息模块和删除最先进入的指令执行流改变信息可选的,根据调试需求或者其他需要而定。但在进行调试而导出时,需要实现停顿处理器或者停止新的指令执行流改变信息进入存储信息模块中的一个,以保证读取时不会有新的指令执行流改变信息覆盖掉存储信息模块中还未读取的指令执行流改变信息,以此来保证正确性。
较佳地,作为一种可实施方式,本发明实施例中,所述合并处理模块322,还用于判断存储信息模块是否存储满,如果否,则继续合并处理;如果是,则根据导出模块中的指示位的指示,或者控制停顿微处理器,或者控制删除最先进入存储信息模块的指令执行流改变信息,或者控制不再接收最新得到的指令流改变信息。
作为一种可实施方式,当存储信息模块满而控制停顿微处理器时,可以获得多发射乱序执行的微处理器全部的指令执行流改变信息。
构建指令执行流时,从处理器执行的第一条指令开始构建,并根据记录下的信息,从最早的信息开始处理,做出操作:当面对的记录是例外时,指令执行流会顺序执行直到该例外信息里记录的指令(根据记录方法可知,该过程中途不会遇到分支指令),然后根据所记录的例外代码来调用相应的例外处理程序;当面对的记录是分支指令时,指令执行流会顺序执行到下一条分支指令(根据记录方法可知,该过程途中不会发生例外),并跳转到记录中的分支指令目的地址,并将记录中的分支指令跳转次数减1,当该值减到0时,开始处理下一条记录,否则继续处理该条记录。如此处理,直到最后一项记录。
当存储信息模块满时删除最先进入存储信息模块的指令执行流改变信息,则可以构建微处理器最后时刻的指令执行流。在读取存储信息模块的指令执行流改变信息时,首先读取最先进入存储信息模块的一项指令执行流改变信息,获取其记录的地址,并将此地址作为处理器最后时刻指令执行流的开始地址,然后读取直到最后一项记录。
当存储信息模块满时采用不再接收新的指令执行流改变信息,则可以构建从上次开始记录时开始的部分指令执行流。
这样,通过在存储信息模块满时采用不同的处理方法,采用存储信息模块满时停顿处理器以减少处理器停顿的次数,也可以采用存储信息模块满时删除最先进入信息的方法或存储信息模块满时采用不再接收新信息的方法,可以构建出来更多的指令执行流。从而得到不同的多发射乱序执行微处理器不同时刻的指令执行流改变信息,从而适应不同的微处理器性能优化或者硅后调试需求。
相应地,如图5所示,本发明实施例还提供一种指令执行流信息处理方法,包括如下步骤
步骤S100,监控所述微处理器100,获取所述微处理器100的多发射乱序执行指令执行流改变信息;
步骤S200,对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
较佳地,所述步骤S200包括如下步骤:
步骤S210,判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;
步骤S220,如果有,则控制将该例外信息直接存储作为最后一项指令执行流改变信息,进入步骤S250;
多发射乱序执行的微处理器为了维护精确例外,例外只有在对应例外的那条指令成为重定序队列最早的指令时才会触发。因此发生例外时没有分支指令提交。因此,若发生例外,则当前时刻只会产生一个例外信息。
本发明实施例中,作为一种可实施方式,将该例外信息作为新项,直接存储,所述新项作为存储的最后一条指令执行流改变信息,返回处理下一时刻提交的多发射乱序执行指令。
较佳地,作为一种可实施方式,其中,所述存储的例外地址存储部分记录存储发生该次例外的指令的地址,例外代码部分记录存储该例外的例外代码。
步骤S230,如果没有,则判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,进入步骤S240;如果没有,则不进行操作,进入步骤S250;
如果当前时刻提交了多于1条分支指令时,则进行当前分支指令合并,得到分支指令信息。
举例来说,如果当前时刻提交了两条分支指令,其分支目的地址相同,则这两条分支指令被合并为一项,分支目的地址信息为其公共的目的地址,分支次数信息记为2;如果当前时刻提交的两条分支指令不能合并,则产生了两项分支指令目的地址信息,其中分支目的地址信息为分支指令目的地址,分支次数信息分别为1,并进入步骤S240进行处理。
如果当前时刻既没有例外发生,也没有分支指令提交,则不对存储器件进行操作,则不对存储信息模块进行操作,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行指令结束。
步骤S240,将提交的当前时刻的分支指令信息与存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,进入步骤S250;
较佳地,作为一种可实施方式,所述步骤S240中,将提交的当前时刻的分支指令信息与存储的最后一条指令执行流改变信息进行合并处理,包括如下步骤:
步骤S241,如果之前已记录下的最后一项指令执行流改变信息是一条例外信息,则不合并;
步骤S242,如果之前已记录下的最后一项指令执行流改变信息是一条分支指令信息,则判断两条分支指令信息中的分支指令目的地址是否相同,如果不同,则不合并,将当前时刻提交的分支指令目的地址信息作为新项加入作为最后一项指令执行流改变信息;
步骤S243,如果两条分支指令信息中的分支指令目的地址相同,则将当前时刻产生的分支指令信息合并入已存储的最后一项指令执行流改变信息,其中,已存储的最后一项指令执行流改变信息中的分支目的地址信息不变,分支次数等于原分支次数加上当前时刻产生的分支指令信息中的分支次数,即不更新已存储的最后一项指令执行流改变信息中的分支目的地址信息,更新已存储的最后一项指令执行流改变信息中的分支次数部分,新的值等于旧的值加上此次合并进去的分支指令信息的分支次数数量。
较佳地,作为一种可实施方式,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,包括如下步骤:
步骤S244,如果发生了更新,则更新最后一项指令执行流改变信息的分支次数部分;
步骤S245,如果同时有更新操作和加入新的一项指令执行流改变信息操作,先进行更新操作,然后再插入新的一项指令执行流改变信息。
例外信息会隔开分支指令,使之后发生的一条分支指令不可能发出更新操作,即使该指令与之前最近一条分支指令目的地址相同;
如果一项指令执行流改变信息没有被合并过,则分支次数部分记录为1;
如果一条分支指令没有发生跳转,则其目的地址就是顺序执行的下一条指令。
更佳地,作为一种可实施方式,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,还包括如下步骤:
步骤S244’,在更新操作时,首先判断更新后的分支次数是否溢出,如果否,则进行更新操作;如果是,则不再进行更新操作,而是直接将分支指令信息存储到存储信息模块作为新的最后一项指令执行流改变信息,其中分支指令目的地址信息为该分支指令信息中的分支指令目的地址,分支次数信息为该分支指令信息中的分支次数。
也就是说,如果由于一直更新已存储的最后一项指令执行流改变信息中的分支次数,导致分支次数(如16位数据)溢出时,则本发明实施例中,不再进行更新操作,而是插入一个新项指令执行流改变信息,分支指令目的地址信息等于想要进行更新操作的分支指令的目的地址,分支次数等于想要进行更新操作时预计要加上的分支次数值。
更佳地,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,还包括如下步骤:
步骤S241”,在加入新的最后一项指令执行流改变信息前,先判断原来的最后一项指令执行流改变信息(包括同一时刻产生的多条分支指令信息中靠前的那条信息)的分支次数,如果分支次数为1,则将更新标记位标记为1;否则,将更新标记位标记为0;
步骤S242”,根据更新标记位,控制存储信息模块存储指令执行流改变信息;
如果该位为1,则表示该项记录没有被后来发生的分支指令更新过,因此存储信息模块只记录64位地址和该更新标记位;
如果该位为0,则表示该项记录被后来发生的分支指令更新过,则记录64位地址,以及16位的分支次数部分。
步骤S250,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行结束。
较佳地,作为一种可实施方式,所述指令执行流信息处理方法,还包括如下步骤:
步骤S300,控制读取指令执行流改变信息,导出到所述外部主机。
更佳地,作为一种可实施方式,所述步骤S300包括如下步骤:
步骤S310,外部主机读取PCSAMPLE寄存器中存储的PC值。该步骤为可选步骤,也可以直接进入步骤S320。
步骤S320,设置读状态寄存器的读指针,将对应读指针的指令执行流改变信息内容存入PCSAMPLE寄存器,再由外部主机读出。
作为一种可实施方式,通过读状态(READ STATUS)寄存器的指示位指示当存储器件满时或者使微处理器停顿、或者删除最先进入存储信息模块的指令执行流改变信息、或者不再接收最新得到的指令执行流改变信息,还通过读指针指示用于指定读取存储信息模块中哪一项指令执行流改变信息,因此可以在调试时暂停处理器,或者指示删除最先进入存储信息模块的指令执行流改变信息、或者指示不再接收最新得到的指令执行流改变信息,然后通过PCSAMPLE寄存器读出当前的PC值(program counter表示下一条指令存储的地址),然后设置读状态(READ STATUS)寄存器指示的读指针,将存储信息模块对应读指针的项的内容存入PCSAMPLE寄存器中,再由外部主机通过PCSAMPLE寄存器读出。
下面举例说明本发明通过外部主机,使用导出指令执行流改变信息的指令执行流信息处理方法如下:
第一步,进入EJTAG中断,或者进入由于存储器件处于满状态,且读状态(READ STATUS)寄存器中指示停顿处理器标志为1时产生的处理器停顿;
第二步,可以读取PCSAMPLE寄存器获取当前处理器的PC值,也可以直接进入下一步;
第三步,修改READ STATUS寄存器,设定读指针。读指针的设定方式由所选用的存储信息模块决定。
第四步,读取PCSAMPLE寄存器,获取存储器件中对应于所设读指针位置的信息。
重复上述第三步和第四步,读取已经存储在存储信息模块中的部分或全部信息。
第五步,如果还需要继续调试,修改READ STATUS寄存器的读指针,停止复用;可以修改READ STATUS中的指示位,也即存储器件满时的处理方式,取消EJTAG中断,让处理器继续执行。通过本发明实施例的导出方法读取已经记录在存储信息模块中的指令执行流改变信息,包括分支指令信息及例外信息的目的。
本发明实施例的指令执行流信息处理系统和装置及方法,其通过获取并处理多发射乱序执行处理器中指令执行流改变信息,包括分支指令信息及例外信息,使用较少的存储空间记录更多的最近的信息,降低产生的信息的大小,尤其是处理器执行循环时的信息大小,大幅提高了获取多发射乱序执行处理器的指令执行流改变信息的系统的实用性。并且,其进一步通过寄存器导出指令执行流改变信息来快速的、方便的按项读取导出已经存储好的指令执行流改变信息,有效提供了可用于但不限于硅后调试以及编译优化的信息,相比于现有的实现方法,时间开销非常小,准确度也较为提高。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

Claims (20)

1.一种指令执行流信息处理系统,包括多发射乱序执行的微处理器与外部主机,其特征在于,还包括设置于所述微处理器和外部主机之间的指令执行流信息处理装置;
所述指令执行流处理装置包括:获取信息子装置,分析处理信息子装置,其中:
所述获取信息子装置,用于监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
所述分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
2.根据权利要求1所述的指令执行流信息处理系统,其特征在于,所述指令执行流信息处理装置,还包括导出子装置;
所述导出子装置,用于控制从分析处理信息子装置中读取指令执行流改变信息,导出到所述外部主机。
3.根据权利要求2所述的指令执行流信息处理系统,其特征在于,所述导出子装置是基于多核处理器的EJTAG TAP总控制器的导出子装置,所述导出子装置将指令执行流改变信息先输出到EJTAG TAP总控制器,再通过EJTAG TAP总控制器输出到外部主机。
4.一种指令执行流信息处理装置,其特征在于,包括获取信息子装置,分析处理信息子装置,其中:
所述获取信息子装置,用于监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
所述分析处理信息子装置,用于对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
5.根据权利要求4所述的指令执行流信息处理装置,其特征在于,所述分析处理信息子装置,包括判断处理模块、合并处理模块、存储信息模块,其中:
所述判断处理模块,用于判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;如果有,则控制将该例外信息直接存入所述存储信息模块作为最后一项指令执行流改变信息;否则,判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,提交给合并处理模块处理;如果没有,则不对存储信息模块进行操作,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行指令结束;
所述合并处理模块,用于将判断处理模块提交的当前时刻的分支指令信息与存储信息模块记录存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新所述存储信息模块的最后一项指令执行流改变信息或者存储到所述存储信息模块,作为新的最后一项指令执行流改变信息;
所述存储信息模块,用于将处理后的指令执行流改变信息进行更新次数或者加入新项存储操作。
6.根据权利要求5所述的指令执行流信息处理装置,其特征在于:
所述指令执行流改变信息包括分支指令目的地址,以及发生例外的指令、例外的代码;
所述存储信息模块为一FIFO存储器件;其中存储的指令执行流改变信息包括例外信息和分支指令信息,所述例外信息包括例外发生地址和例外代码;所述分支指令信息包括分支指令目的地址和分支次数。
7.根据权利要求6所述的指令执行流信息处理装置,其特征在于,所述存储信息模块,还用于在更新操作时,首先判断更新后的分支次数是否溢出,如果否,则进行更新操作;如果是,则不再进行更新操作,而是直接将分支指令信息存储到存储信息模块作为新的最后一项指令执行流改变信息,其中分支指令目的地址信息为该分支指令信息中的分支指令目的地址,分支次数信息为该分支指令信息中的分支次数。
8.根据权利要求5所述的指令执行流信息处理装置,其特征在于,所述存储信息模块还包括一更新标记位,用于表示已经不会被更新的记录分支次数部分是否为1,也即没有被更新过。
9.根据权利要求5至8任一项所述的指令执行流信息处理装置,其特征在于,还包括导出子装置,用于控制从分析处理信息子装置中读取指令执行流改变信息,导出到所述外部主机。
10.根据权利要求9所述的指令执行流信息处理装置,其特征在于,所述导出子装置包括导出控制器、导出模块、PCSAMPLE寄存器和READSTATUS寄存器,其中:
所述导出控制器,设置读状态寄存器的读指针,控制PCSAMPLE寄存器存储导出的指令执行流改变信息;
所述PCSAMPLE寄存器,用于存储根据PC值,存储导出模块导出的分析处理信息子装置存储的指令执行流改变信息;
所述READ STATUS寄存器,包括指示当存储信息模块满时或者使处理器停顿、或者删除最先进入存储信息模块的指令执行流改变信息、或者不再接收最新得到的指令执行流改变信息的指示位,以及指示用于指定读取存储信息模块中哪一项指令执行流改变信息的读指针;
所述导出模块,用于通过PCSAMPLE寄存器读出当前的PC值,并根据READ STATUS寄存器指示的读指针,将存储信息模块对应读指针的项的指令执行流改变信息内容存入PCSAMPLE寄存器中,再由外部主机通过PCSAMPLE寄存器读出。
11.根据权利要求10所述的指令执行流信息处理装置,其特征在于,所述READ STATUS寄存器,包括当存储信息模块满时指示停顿微处理器的第一指示位,指示停止新的指令执行流改变信息进入存储信息模块的第二指示位,指示删除最先进入存储信息模块的指令执行流改变信息的第三指示位,以及指示用于指定读取存储信息模块中哪一项指令执行流改变信息的读指针。
12.根据权利要求10所述的指令执行流信息处理装置,其特征在于,所述合并处理模块,还用于判断存储信息模块是否存储满,如果否,则继续合并处理;如果是,则根据导出模块中的指示位的指示,或者控制停顿微处理器;或者控制删除最先进入存储信息模块的指令执行流改变信息;或者控制不再接收最新得到的指令执行流改变信息。
13.一种指令执行流信息处理方法,其特征在于,包括如下步骤:
步骤S100,监控所述微处理器,获取所述微处理器的多发射乱序执行指令执行流改变信息;
步骤S200,对获取到的指令执行流改变信息进行判断识别,并与已经存储的指令执行流改变信息进行合并处理。
14.根据权利要求13所述的指令执行流执行信息处理方法,其特征在于,所述步骤S200包括如下步骤:
步骤S210,判断多发射乱序执行的微处理器在当前时刻的指令执行过程中是否有例外发生;
步骤S220,如果有,则控制将该例外信息直接存储作为最后一项指令执行流改变信息,进入步骤S250;
步骤S230,如果没有,则判断当前时刻是否有分支指令提交,如果有,则进行当前分支指令信息合并操作后,进入步骤S240;如果没有,则不进行操作,进入步骤S250;
步骤S240,将提交的当前时刻的分支指令信息与存储的最后一条指令执行流改变信息进行合并处理,并控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,进入步骤S250;
步骤S250,返回处理下一时刻提交的多发射乱序执行指令,直至微处理器执行结束。
15.根据权利要求14所述的指令执行流信息处理方法,其特征在于,所述步骤S240中,将提交的当前时刻的分支指令信息与存储的最后一条指令执行流改变信息进行合并处理,包括如下步骤:
步骤S241,如果之前已记录下的最后一项指令执行流改变信息是一条例外信息,则不合并;
步骤S242,如果之前已记录下的最后一项指令执行流改变信息是一条分支指令信息,则判断两条分支指令信息中的分支指令目的地址是否相同,如果不同,则不合并,将当前时刻提交的分支指令目的地址信息作为新项加入作为最后一项指令执行流改变信息;
步骤S243,如果两条分支指令信息中的分支指令目的地址相同,则将当前时刻产生的分支指令信息合并入已存储的最后一项指令执行流改变信息,其中,已存储的最后一项指令执行流改变信息中的分支目的地址信息不变,分支次数等于原分支次数加上当前时刻产生的分支指令信息中的分支次数,即不更新已存储的最后一项指令执行流改变信息中的分支目的地址信息,更新已存储的最后一项指令执行流改变信息中的分支次数部分,新的值等于旧的值加上此次合并进去的分支指令信息的分支次数数量。
16.根据权利要求15所述的指令执行流信息处理方法,其特征在于,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,包括如下步骤:
步骤S244,如果发生了更新,则更新最后一项指令执行流改变信息的分支次数部分;
步骤S245,如果同时有更新操作和加入新的一项指令执行流改变信息操作,先进行更新操作,然后再插入新的一项指令执行流改变信息。
17.根据权利要求16所述的指令执行流信息处理方法,其特征在于,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,还包括如下步骤:
步骤S244’,在更新操作时,首先判断更新后的分支次数是否溢出,如果否,则进行更新操作;如果是,则不再进行更新操作,而是直接将分支指令信息存储到存储信息模块作为新的最后一项指令执行流改变信息,其中分支指令目的地址信息为该分支指令信息中的分支指令目的地址,分支次数信息为该分支指令信息中的分支次数。
18.根据权利要求17所述的指令执行流信息处理方法,其特征在于,所述步骤S240中,控制该合并处理后的结果更新最后一项指令执行流改变信息或者进行新项存储作为新的最后一项指令执行流改变信息,还包括如下步骤:
步骤S241”,在加入新的最后一项指令执行流改变信息前,先判断原来的最后一项指令执行流改变信息中的分支次数,如果分支次数为1,则将更新标记位标记为1;否则,将更新标记位标记为0;
步骤S242”,根据更新标记位,控制存储信息模块存储指令流改变信息;
如果该位为1,则表示该项记录没有被后来发生的分支指令更新过,只需要记录64位地址和该更新标记位;
如果该位为0,则表示该项记录被后来发生的分支指令更新过,则记录64位地址,以及16位的分支次数部分。
19.根据权利要求13至18任一项所述的指令执行流信息处理方法,其特征在于,还包括如下步骤:
步骤S300,控制读取指令执行流改变信息,导出到所述外部主机。
20.根据权利要求19所述的指令执行流信息处理方法,其特征在于,所述步骤S300包括如下步骤:
步骤S310,外部主机读取PCSAMPLE寄存器中存储的PC值;
步骤S320,设置读状态寄存器的读指针,将对应读指针的指令执行流改变信息内容存入PCSAMPLE寄存器,再由外部主机读出。
CN201210260736.3A 2012-07-25 2012-07-25 指令执行流信息处理系统和装置及方法 Active CN102819419B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210260736.3A CN102819419B (zh) 2012-07-25 2012-07-25 指令执行流信息处理系统和装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210260736.3A CN102819419B (zh) 2012-07-25 2012-07-25 指令执行流信息处理系统和装置及方法

Publications (2)

Publication Number Publication Date
CN102819419A true CN102819419A (zh) 2012-12-12
CN102819419B CN102819419B (zh) 2016-05-18

Family

ID=47303547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210260736.3A Active CN102819419B (zh) 2012-07-25 2012-07-25 指令执行流信息处理系统和装置及方法

Country Status (1)

Country Link
CN (1) CN102819419B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103268145A (zh) * 2013-03-06 2013-08-28 上海云间半导体科技有限公司 用于保存访存指令的虚拟地址的方法
WO2014121738A1 (en) * 2013-02-08 2014-08-14 Shanghai Xinhao Microelectronics Co. Ltd. Multiple issue instruction processing system and method
CN106709187A (zh) * 2016-12-27 2017-05-24 北京航空航天大学 基于模型建立cpu的方法及装置
CN112364581A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1510567A (zh) * 2002-12-24 2004-07-07 ض� 用于使用记录板机制处理加载锁定指令的方法和装置
CN101710300A (zh) * 2009-11-03 2010-05-19 北京龙芯中科技术服务中心有限公司 实现多核处理器ejtag可调试性的装置及系统
US20120079488A1 (en) * 2010-09-25 2012-03-29 Phillips James E Execute at commit state update instructions, apparatus, methods, and systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1510567A (zh) * 2002-12-24 2004-07-07 ض� 用于使用记录板机制处理加载锁定指令的方法和装置
CN101710300A (zh) * 2009-11-03 2010-05-19 北京龙芯中科技术服务中心有限公司 实现多核处理器ejtag可调试性的装置及系统
US20120079488A1 (en) * 2010-09-25 2012-03-29 Phillips James E Execute at commit state update instructions, apparatus, methods, and systems

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014121738A1 (en) * 2013-02-08 2014-08-14 Shanghai Xinhao Microelectronics Co. Ltd. Multiple issue instruction processing system and method
CN103268145A (zh) * 2013-03-06 2013-08-28 上海云间半导体科技有限公司 用于保存访存指令的虚拟地址的方法
CN106709187A (zh) * 2016-12-27 2017-05-24 北京航空航天大学 基于模型建立cpu的方法及装置
CN112364581A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置

Also Published As

Publication number Publication date
CN102819419B (zh) 2016-05-18

Similar Documents

Publication Publication Date Title
CN100357911C (zh) 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备
CN101295279B (zh) 多线程环境下的调试程序的方法和系统
US9430353B2 (en) Analysis and visualization of concurrent thread execution on processor cores
CN100414504C (zh) 用于在动态运行时系统中恢复数据值的方法和装置
US7836435B2 (en) Checking for memory access collisions in a multi-processor architecture
Li et al. Practical symbolic race checking of GPU programs
KR102161192B1 (ko) 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치
TWI507990B (zh) 多核心指令集模擬之高平行化同步方法
CN104487941A (zh) 在向量处理过程中控制处理数据元素的顺序
JPH03282958A (ja) 電子計算機
CN101939728A (zh) 作业网络自动生成装置、方法和程序记录介质
JP2009524866A (ja) プログラムの並列実行のためのシステム及び方法
CN102819419A (zh) 指令执行流信息处理系统和装置及方法
CN104850411A (zh) 存储系统基准评测程序生成方法及装置
CN100541421C (zh) 由专用指令配置的处理器和用于这种处理器的分配方法
JP2014053010A (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
US20150127926A1 (en) Instruction scheduling approach to improve processor performance
WO2018210007A1 (zh) 一种虚拟控制器的组态调试器实现方法
CN103778062A (zh) 基于抽象解释的多中断程序数据访问冲突检测方法
US20060047495A1 (en) Analyzer for spawning pairs in speculative multithreaded processor
US7779230B2 (en) Data flow execution of methods in sequential programs
Tamitani et al. An encoder/decoder chip set for the MPEG video standard
CN116382700A (zh) 面向vliw和simd架构的编译器自动调试方法及系统
JP2007122207A (ja) プログラム分析プログラム、プログラム分析装置、プログラム分析方法
RU2206119C2 (ru) Способ получения объектного кода

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.

CP03 Change of name, title or address