一种面向调试的处理器验证方法及验证设备的制作方法

文档序号:6340061阅读:179来源:国知局
专利名称:一种面向调试的处理器验证方法及验证设备的制作方法
技术领域
本发明涉及处理器验证领域,特别涉及一种面向调试的处理器验证方法及验证设备。
背景技术
随着处理器流水线技术的发展,处理器复杂度的提高,处理器的验证逐渐成为处理器设计中耗时最多的环节,用于验证的时间可以占到处理器设计周期的70%以上。如何提高验证的效率,缩短验证周期是一个巨大的挑战。在现有技术的处理器验证中,在发现错误而后进行调试时,因为错误只能在指令的最后一个阶段-即在处理器流水线的最后一级体现出来,所以验证人员不得不从发现错误的地点-即流水线最后一级逐级往前寻找错误,这导致调试过程机械性很高,且耗费时间长。此外,超标量乱序执行等技术的应用更加剧了处理器调试工作的难度。因此,需要一种自动化的处理器验证环境来代替验证人员机械且耗时的验证工作,使得能够快速定位在验证过程中出现的错误、找到错误原因并协助验证人员修正错误。

发明内容
为了解决上述问题,本发明提供了面向调试的处理器验证方法及验证设备,其中所述处理器采用流水线技术。根据本发明的一个方面,提供了一种面向调试的处理器验证方法,包括抓取指令通过处理器的流水线中每一级时所产生的特征信息,其中所述特征信息能够表征流水线每一级的功能执行情况;根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息;以及将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因。在所述方法的一个实施例中,还包括为进入处理器的指令设定编号,所述编号随着指令进入处理器流水线并且在流水线的每一级保存;其中在抓取特征信息的同时抓取编号;并且其中所述模拟和比较步骤都针对与所述编号相对应的指令而执行。根据本发明的另一方面,提供了一种面向调试的处理器验证设备,包括抓取装置,用于抓取指令通过处理器的流水线中每一级时所产生的特征信息,其中所述特征信息能够表征流水线每一级的功能执行情况;模拟装置,用于根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息;比较装置,用于将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因。在所述方法的一个实施例中,还包括编号装置,用于为进入处理器的指令设置编号,所述编号随着指令进入处理器流水线并且在流水线的每一级保存;其中所述抓取装置在抓取特征信息的同时抓取编号;并且其中所述模拟装置和所述比较装置都针对与所述编号相对应的指令进行操作。本发明具有以下优点。
1、可以显著降低处理器调试难度。2、可以显著降低处理器错误调试时间。3、可以缩减处理器研发周期。


图1示出本发明可应用于其中的示例性处理器。图2示出根据本发明的一个实施例的面向调试的处理器验证方法。图3示出根据本发明的另一个实施例的面向调试的处理器验证方法。图4示出根据本发明的一个实施例的面向调试的处理器验证设备和被验证的处理器。图5示出根据本发明的另一个实施例的面向调试的处理器验证设备和被验证的处理器。
具体实施例方式在对本发明进行进一步描述之前,发明人希望对本文所出现的一些概念进行解释。本发明所提及的处理器流水线,是指以下技术将处理器的指令处理过程拆分为若干个子过程,每个子过程都可有效地在其专用功能段上与其他子过程并行执行,从而加快了指令执行速度,这里整个处理器指令处理过程称为流水线,而其中所包含的每个子过程称为流水线级。下面结合附图和具体实施例对本发明作进一步详细描述。图1示出本发明可应用于其中的示例性处理器。在图1中,处理器100采用流水线技术,其流水线分为五级,包括取指、译码、发射、 写回、提交。取指即取指令,例如从存储器(未示出)取指令以供执行。译码也称为解码,是把所取的指令“翻译”成期望类型的指令,例如运算指令、控制指令(分支跳转)、访存指令、特权指令等等。发射即将指令发射到功能部件。指令在被发射时,不同类型的指令被发射到不同的功能部件中进行操作,比如定点指令被发射到定点功能部件中,浮点指令被发射到浮点功能部件中,访存指令被发射到访存功能部件中。写回以特定格式将执行完成的结果写回特定位置。例如如果是运算指令,则需要返回运算结果,如rd=ra+rb,在写回时要返回的是写回有效信号和运算结果rd;如果是访存指令,如要返回访存结果,如load rd,imm (rb),则返回的是写回有效信号和访存结果 rd。如果是顺序执行的处理器,则直接写回到寄存器堆(没有提交阶段)。如果是乱序执行的处理器,则需要先写回到重定序缓冲区,在提交阶段写回到寄存器堆。提交提交需要修改的处理器内容。这里的“需要修改的处理器内容”与写回中的 “执行完成的结果”在一般情况下是相同的,除了对于一些指令,例如控制类指令,写回的结果不一定需要提交。对于本领域技术人员而言,应该理解的是,这里给出的处理器流水线分级的方式和流水线级的数目仅仅是示例性的,根据不同应用的需要,不同方式的处理器流水线分级以及不同数目的流水线级是可能的,例如“取指-译码-执行”三级流水线、“取指-译码-执行-访存-回写”五级流水线、“取指-译码-计算操作数地址-取操作数-执行指令-写操作数”六级流水线等等。本发明同样适用于这样的不同的处理器流水线分级。根据本发明的面向调试的处理器验证方法和验证设备依赖于以下原理指令在通过流水线每一级时会产生信息,通过采集该信息中的特定信息可以判断指令通过该级时是否发生错误。这样的特定信息在此称为特征信息,并且特征信息是由验证人员根据需要来选取的。每一级都可以有自己相应的特征信息,例如,对于图1所示的处理器的流水线,取指的特征信息是指令本身,即所取的指令;译码的特征信息是翻译后的指令类型;发射的特征信息是将指令发射到的功能部件以及指令的操作数,指令的操作数是指需要参与操作的数据,比如一个加法add rd, ra, rb操作,ra和rb是需要在发射时相加的两个源操作数; 写回的特征信息是执行完成的指令结果;提交的特征信息是需要修改的处理器内容。以下针对图2-5来描述根据本发明的面向调试的处理器验证方法和验证设备。图2示出根据本发明的一个实施例的面向调试的处理器验证方法200。以下结合处理器100对该方法200进行说明。该方法始于步骤201,抓取指令通过处理器的流水线中每一级时所产生的特征信息。在步骤202,根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息。这里的预期模型是处理器设计者事先为待验证处理器建立的模型,旨在用于模拟出正确的比对信息。然后在步骤203, 将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因,这里错误原因指的是处理器流水线哪一级发生错误,例如对于处理器100,如果在比较时得知在写回级发生不一致,则停止仿真,报出错误且错误原因是写回结果不正确。以上所描述的指令包括需要提交的指令和在猜测执行模式下需要分支取消的指令。对于前者,对其依次执行以上各个步骤;对于后者,不进行比较,指令会一直执行下去, 直到被取消。相比于传统的验证方法,该方法可以帮助验证人员找到更具体的错误地点,使得验证人员能够从更具体的地点-即具体流水线级来开始调试,甚至可以不用调试直接给出错误地点。图3示出根据本发明的另一个实施例的面向调试的处理器验证方法300。同样结合处理器100对该方法300进行说明。所述方法开始于步骤301,为进入处理器的指令设定编号,例如1000,该编号会随着指令进入流水线,在流水线的每一级保存。然后在步骤302,抓取指令通过处理器的流水线中每一级时所产生的特征信息并且同时抓取编号,在此抓取的编号例如为1000。在步骤303,根据处理器的预期模型,针对与编号1000对应的指令,模拟出所述指令通过处理器流水线中每一级时所产生的特征信息。这里的预期模型是处理器设计者事先为处理器建立的模型,旨在用于模拟出正确的比对信息。然后在步骤304,针对编码为1000的指令,将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因,类似于方法200,这里错误原因同样指的是处理器流水线哪一级发生错误。类似于方法200,以上所描述的指令包括需要提交的指令和在猜测执行模式下需要分支取消的指令。对于前者,对其依次执行以上各个步骤;对于后者,不进行比较,而是任由指令一直执行下去,直到被取消。该方法300对于验证乱序执行指令的处理器尤其有益。这是因为为进入处理器的指令设定了编号,而所述编号能够在乱序执行指令的处理器中识别特定指令的执行流程, 从而有助于快速定位乱序执行处理器中发生的错误。图4示出根据本发明的面向调试的处理器验证设备400和被验证的处理器100。图4中的处理器验证设备400包括抓取装置401、模拟装置402、比较装置403。抓取装置401耦合到处理器100的流水线的每一级,从而跟踪指令在流水线中的执行,抓取指令通过处理器的流水线中每一级时所产生的特征信息。抓取装置401还耦合到比较装置 403以将所抓取的信息提供到比较装置403。模拟装置402根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息。这里的预期模型是处理器设计者事先为待验证处理器建立的模型,旨在用于模拟出正确的比对信息。模拟装置402也耦合到比较装置403以将所模拟的特征信息提供到比较装置403。比较装置403将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因,这里错误原因指的是处理器流水线哪一级发生错误,例如对于处理器100,如果在比较时得知在写回级发生不一致,则停止仿真,报出错误且错误原因是写回结果不正确。以上所描述的指令包括需要提交的指令和在猜测执行模式下需要分支取消的指令。对于前者,上述装置401-403对其执行相应操作;对于后者,比较装置403对其不进行比较,而是任由其一直执行下去,直到被取消。使用该处理器验证设备400能够获得与方法200类似的益处,在此不再赘述。图5中的处理器验证设备500包括编号装置501、抓取装置502、模拟装置503、比较装置504。编号装置501耦合到处理器,指令在进入处理器时通过编号装置501而被设定编号,例如1000,该编号会随着指令进入流水线,在流水线的每一级保存。这里编号装置 501例如可以用重定序计数器来实现,而编号可以被实现为计数器的计数值。抓取装置502 耦合到处理器100的流水线的每一级,从而跟踪指令在流水线中的执行,其抓取指令通过处理器的流水线中每一级时所产生的特征信息并且同时抓取编号,在此抓取的编号例如为 1000。抓取装置502还耦合到比较装置504以将所抓取的信息提供到比较装置并且耦合到模拟装置503以将所抓取的编号提供给模拟装置503。模拟装置503根据处理器的预期模型,针对与编号1000对应的指令,模拟出所述指令通过处理器流水线中每一级时所产生的特征信息。这里的预期模型是处理器设计者事先为处理器建立的模型,旨在用于模拟出正确的比对信息。模拟装置503也耦合到比较装置504以将所模拟的信息提供到比较装置 504。比较装置504针对编号为1000的指令,将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因,类似于设备400,这里错误原因同样指的是处理器流水线哪一级发生错误。类似于设备400,以上所描述的指令包括需要提交的指令和在猜测执行模式下需要分支取消的指令。对于前者,上述装置501-504对其执行相应操作;对于后者,比较装置 504对其不进行比较,而是任由其一直执行下去,直到被取消。使用该处理器验证设备500能够获得与方法300类似的益处,在此不再赘述。通过上述实施例的描述,本发明的优点是明显的。本发明可以降低处理器验证的复杂度,减少处理器验证时间,准确定位处理器设计中的错误,缩短处理器验证周期和研发周期。应该理解的是,本发明的实施例可以由软件、硬件或由软件和硬件的组合来实施。 就这一点来说,应该注意,图中的逻辑流程的任何块可以表示程序步骤或互连的逻辑电路、 块和函数、或者程序步骤和逻辑电路、块和函数的组合。最后应说明的是以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围,而所附权利要求意在涵盖落入本发明精神和范围中的这些修改或者等同替换。
权利要求
1.一种面向调试的处理器验证方法,其中所述处理器采用流水线技术,所述方法包括如下步骤抓取指令通过处理器的流水线中每一级时所产生的特征信息,其中所述特征信息能够表征流水线每一级的功能执行情况;根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息;以及将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因。
2.根据权利要求1所述的面向调试的处理器验证方法,还包括为进入处理器的指令设定编号,所述编号随着指令进入处理器流水线并且在流水线的每一级保存;其中在抓取特征信息的同时还抓取编号;并且其中所述模拟和比较步骤都针对与所述编号相对应的指令而执行。
3.根据权利要求1或2所述的面向调试的处理器验证方法,其中,对于在猜测执行模式下需要进行分支取消的指令,不进行比较步骤。
4.根据权利要求1或2所述的面向调试的处理器验证方法,其中所述错误原因归类于处理器流水线的位置。
5.一种面向调试的处理器验证设备,其中所述处理器采用流水线技术,所述设备包括抓取装置,用于抓取指令通过处理器的流水线中每一级时所产生的特征信息,其中所述特征信息能够表征流水线每一级的功能执行情况;模拟装置,用于根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息;比较装置,用于将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致, 则报出错误和错误原因。
6.根据权利要求5所述的面向调试的处理器验证设备,还包括编号装置,用于为进入处理器的指令设置编号,所述编号随着指令进入处理器流水线并且在流水线的每一级保存;其中所述抓取装置在抓取特征信息的同时抓取编号;并且其中所述模拟装置和所述比较装置都针对与所述编号相对应的指令进行操作。
7.根据权利要求5或6所述的面向调试的处理器验证设备,其中所述编号装置是指令重定序计数器。
8.根据权利要求5或6所述的面向调试的处理器验证设备,其中,对于在猜测执行模式下需要进行分支取消的指令,所述比较装置不对其进行操作。
9.根据权利要求5或6所述的面向调试的处理器验证设备,其中所述错误原因归类于处理器流水线的位置。
全文摘要
本发明涉及面向调试的处理器验证方法及验证设备,其中所述处理器采用流水线技术。所述面向调试的处理器验证方法包括如下步骤抓取指令通过处理器的流水线中每一级时所产生的特征信息,其中所述特征信息能够表征流水线每一级的功能执行情况;根据处理器的预期模型,模拟出所述指令通过处理器流水线中每一级时应产生的特征信息;以及将所抓取的特征信息与所模拟的特征信息进行比较,如果发生不一致,则报出错误和错误原因。
文档编号G06F17/50GK102567556SQ20101060723
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者冯睿鑫 申请人:北京国睿中数科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1