多核处理器访存数据检测验证系统及方法与流程

文档序号:16327472发布日期:2018-12-19 06:00阅读:143来源:国知局
多核处理器访存数据检测验证系统及方法与流程
本发明涉及cpu设计
技术领域
,尤其涉及一种多核处理器访存数据检测验证系统及方法。
背景技术
访存单元的验证工作在cpu(centralprocessingunit,中央处理器)设计中非常关键并贯穿于整个设计过程中。访存单元实现的功能越多,电路的集成复杂度就越高,验证工作的复杂度和工作量也就越大。对于单核处理器的访问存储模型,对内存单元的读操作就是读取最近一次对内存单元写操作所写入的值,因此写操作的值唯一确定了此后对同一单元读操作的结果。目前对单核处理器进行验证的仿真方法,通常采用验证向量在参考模型中得出的执行结果,与实际rtl(registertransferlevel,寄存器传输级)的执行结果进行比较,从而判断出对错。由于单核处理器环境下的串行程序每次运行的结果具有唯一确定性,因此单核处理的验证相对简单顺利。随着工艺和应用的不断发展,多核处理器结构越来越适应当前对高性能处理器的发展需求。多核对单核cache(高速缓存)、处理速度、带宽等存储资源的竞争使得对访存单元的要求也就越来越高。对于多核处理器共享存储系统来说,多核处理器核可以对同一存储单元同时进行读写操作,这就意味着多核处理器共享存储访存事件发生顺序及其结果可以不唯一,这就使得对多核处理器共享存储系统的设计和验证工作都会非常复杂。访存单元执行的正确性由存储一致性模型确定,存储一致性模型作为多核处理器的硬件与软件、操作系统与应用程序的接口,详细规定了共享存储系统中访存事件之间的顺序要求,保证系统的正确性。学术界对多个处理器的访存验证做了大量的研究,但也只能说明多核处理器存储一致性设计符合存储一致性模型,而符合存储一致性模型情况下的多核处理器访存次序及结果仍可以不唯一,当访存指令与并行程序中更多复杂指令随机组合在一起时,这种访存结果的不唯一性会使得多核处理器执行随机仿真验证时指令执行结果的正确性很难判断。目前验证多核处理器常用的方法是采用随机验证方法对多核处理器系统进行访存一致性验证。随机验证方法是将用户约束和指令库相结合,通过随机生成引擎生成验证向量,生成的验证向量被分别送入指令级模拟器和待验证设计仿真环境中执行,并对执行结果进行比较,比较结果不一致时可以检测出处理器设计中的错误。对于多核处理器来说,当并行程序中访存指令与其它复杂指令随机组合在一起,访存结果的不唯一性会使得随机验证时结果比较环节很难完成,导致很难直接使用传统随机验证技术进行多核处理器仿真验证。目前验证多核处理器常用模式是:首先运用传统随机验证技术对多核处理器中每个处理器核进行验证,再针对连接各个处理器核的片上网络进行仿真验证,最后对多核处理器系统进行存储一致性验证。上述多核处理器验证模式常常会出现设计错误逃逸现象,特别是当多核处理器存储一致性设计正确,多核交叉访存与其它指令混合执行会发生错误时,多核处理器验证常常无法准确检测和定位错误。在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:当前多核处理器仿真验证中,访存结果的不唯一性会使得随机验证时结果比较环节很难完成,无法准确检测和定位错误,验证效率不高。技术实现要素:本发明提供的多核处理器访存数据检测验证系统及方法,能够实现多核处理器访存数据检测验证的准确检测和错误定位,提高验证效率。第一方面,本发明提供一种多核处理器访存数据检测验证系统,所述系统包括访存指令执行模拟器、存储器仿真模型、流水线监控器、指令访问存储器监控器、访存指令缓存器、模式选择器和比较器,其中,所述访存指令执行模拟器,用于采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,发出对所述存储器仿真模型的读写请求,接收所述存储器仿真模型反馈的仿真结果,当所述流水线监控器监控到待验证设计中访存指令执行完成时,将所述存储器仿真模型反馈的仿真结果发送至所述比较器;所述存储器仿真模型,用于模拟待验证设计中访存单元的存储器模型,接收所述访存指令执行模拟器发出的读写请求,并将仿真结果反馈给所述访存指令执行模拟器;所述流水线监控器,用于监控待验证设计中访存指令在流水线中的运行状态;所述指令访问存储器监控器,用于监控待验证设计中访存指令的读写操作,当待验证设计中的访存指令完成读写操作后,向所述访存指令缓存器发送仿真指示;所述访存指令缓存器,用于存放所述访存指令执行模拟器产生的访存指令以及对应的读写请求,当接收到所述指令访问存储器监控器发送来的仿真指示后,将所述访存指令和读写请求发送给所述存储器仿真模型;所述模式选择器,用于选择当前工作模式是单核处理器模式或多核处理器模式;所述比较器,用于对待验证设计的执行结果和所述访存指令执行模拟器发送的仿真结果进行比较。可选地,所述待验证设计中访存指令在流水线中的运行状态包括:访存指令当前所处流水线的位置、是否发生异常、是否发生刷新、是否到达最后一级流水线以及是否准备写回执行结果。可选地,当所述模式选择器选择当前工作模式是单核处理器模式时,所述访存指令执行模拟器,用于采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,并将模拟后的访存指令和对所述存储器仿真模型的读写请求直接发送给所述存储器仿真模型。可选地,当所述模式选择器选择当前工作模式是多核处理器模式时,所述访存指令执行模拟器,用于将所述访存指令执行模拟器产生的访存指令以及对应的读写请求先发送至所述访存指令缓存器进行存放。可选地,所述比较器,还用于输出比较结果,当有错误发生时将出错的访存指令信息打印到仿真文件中。第二方面,本发明提供一种多核处理器访存数据检测验证方法,包括:访存指令执行模拟器采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,发出对所述存储器仿真模型的读写请求;当模式选择器选择当前工作模式是多核处理器模式时,访存指令缓存器存放所述访存指令执行模拟器产生的访存指令以及对应的读写请求;指令访问存储器监控器监控待验证设计中访存指令的读写操作,当待验证设计中的访存指令完成读写操作后,向所述访存指令缓存器发送仿真指示;所述访存指令缓存器将所述访存指令和读写请求发送给所述存储器仿真模型;所述存储器仿真模型模拟待验证设计中访存单元的存储器模型,将仿真结果反馈给所述访存指令执行模拟器;流水线监控器监控待验证设计中访存指令在流水线中的运行状态;当所述流水线监控器监控到待验证设计中访存指令执行完成时,所述访存指令执行模拟器将所述存储器仿真模型反馈的仿真结果发送至比较器;所述比较器对待验证设计的执行结果和所述访存指令执行模拟器发送的仿真结果进行比较。可选地,所述待验证设计中访存指令在流水线中的运行状态包括:访存指令当前所处流水线的位置、是否发生异常、是否发生刷新、是否到达最后一级流水线以及是否准备写回执行结果。可选地,所述方法还包括:当模式选择器选择当前工作模式是单核处理器模式时,所述访存指令执行模拟器采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,并将模拟后的访存指令和对所述存储器仿真模型的读写请求直接发送给所述存储器仿真模型;所述存储器仿真模型模拟待验证设计中访存单元的存储器模型,将仿真结果反馈给所述访存指令执行模拟器;流水线监控器监控待验证设计中访存指令在流水线中的运行状态;当所述流水线监控器监控到待验证设计中访存指令执行完成时,所述访存指令执行模拟器将所述存储器仿真模型反馈的仿真结果发送至比较器;所述比较器对待验证设计的执行结果和所述访存指令执行模拟器发送的仿真结果进行比较。可选地,当所述模式选择器选择当前工作模式是多核处理器模式时,在所述发出对所述存储器仿真模型的读写请求之后,所述方法还包括:所述访存指令执行模拟器将产生的访存指令以及对应的读写请求先发送至所述访存指令缓存器进行存放。可选地,在所述比较器对待验证设计的执行结果和所述访存指令执行模拟器发送的仿真结果进行比较之后,所述方法还包括:所述比较器输出比较结果,当有错误发生时将出错的访存指令信息打印到仿真文件中。本发明实施例提供的多核处理器访存数据检测验证系统及方法,能够实时动态高效率地检测每条访存指令从存储器中读或往存储器写的数据是否正确,当有错误发生时,访存数据检测可以告诉设计人员出错的指令、出错时间、错误的数据以及应该正常的数据,同时还会对出错的原因进行自动分析,帮助设计人员快速定位问题,解决了长期困扰多核处理器验证的准确检测和问题定位的效率问题。访存数据检测不仅支持单核处理器的检测,而且支持多核处理器共享存储系统,可以对每个cpu核的逻辑进行检测。附图说明图1为本发明实施例多核处理器访存数据检测验证系统的结构示意图;图2为本发明实施例多核处理器访存数据检测验证方法的流程图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种多核处理器访存数据检测验证系统,如图1所示,所述系统包括访存指令执行模拟器101、存储器仿真模型102、流水线监控器103、指令访问存储器监控器104、访存指令缓存器105、模式选择器106和比较器107,其中,所述访存指令执行模拟器101,用于采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,发出对所述存储器仿真模型102的读写请求,接收所述存储器仿真模型102反馈的仿真结果,当所述流水线监控器103监控到待验证设计中访存指令执行完成时,将所述存储器仿真模型102反馈的仿真结果发送至所述比较器107;所述存储器仿真模型102,用于模拟待验证设计中访存单元的存储器模型,接收所述访存指令执行模拟器101发出的读写请求,并将仿真结果反馈给所述访存指令执行模拟器101;所述流水线监控器103,用于监控待验证设计中访存指令在流水线中的运行状态,获取访存指令当前所处流水线的位置、是否发生异常、是否发生刷新、是否到达最后一级流水线以及是否准备写回执行结果;所述指令访问存储器监控器104,用于监控待验证设计中访存指令读写cache或存储器的操作,当待验证设计中的访存指令完成读写cache或存储器的操作后,向所述访存指令缓存器105发送信号,指示所述访存指令缓存器105将访存指令和读写请求发送给所述存储器仿真模型102;所述访存指令缓存器105,用于存放所述访存指令执行模拟器101产生的访存指令以及对应的读写请求,当接收到所述指令访问存储器监控器104发送来的仿真指示后,将所述访存指令和读写请求发送给所述存储器仿真模型102;所述模式选择器106,用于选择当前工作模式是多核处理器模式还是单核处理器模式;具体地,当所述模式选择器106选择当前工作模式是单核处理器模式时,所述访存指令执行模拟器101,用于采集被发送到待验证设计中的访存指令,对所述访存指令进行模拟,并将模拟后的访存指令和对所述存储器仿真模型102的读写请求直接发送给所述存储器仿真模型102;当所述模式选择器106选择当前工作模式是多核处理器模式时,所述访存指令执行模拟器101,用于将所述访存指令执行模拟器101产生的访存指令以及对应的读写请求先发送至所述访存指令缓存器105进行存放。所述比较器107,用于对待验证设计的执行结果和所述访存指令执行模拟器101产生的正确仿真结果进行比较。本发明实施例提供的多核处理器访存数据检测验证系统,能够实时动态高效率地检测每条访存指令从存储器中读或往存储器写的数据是否正确,当有错误发生时,访存数据检测可以告诉设计人员出错的指令、出错时间、错误的数据以及应该正常的数据,同时还会对出错的原因进行自动分析,帮助设计人员快速定位问题,解决了长期困扰多核处理器验证的准确检测和问题定位的效率问题。访存数据检测不仅支持单核处理器的检测,而且支持多核处理器共享存储系统,可以对每个cpu核的逻辑进行检测。在本发明实施例中,访存数据检测可以动态实时地对多核处理器中每一条访存指令的执行结果进行检测。如果访存指令执行正确时,则会继续执行下一条访存指令;如果访存指令执行错误时,则会发生错误,比较器会打印出错的指令地址、出错时间、错误的数据以及应该正确的数据都会打印到仿真文件中,同时还会对出错的原因进行自动分析,帮助设计人员快速定位问题。访存数据检测有两种工作模式,单核处理器模式和多核处理器模式,两种工作模式可以分别使用在单核处理器的验证环境和多核处理器的验证环境中。在多核处理器模式下,该验证方法能够解决多核处理器中访存指令程序运行结果的不唯一性而导致结果难以比较的难题。在两种模式下,该验证方法都可以动态实时地对处理器中的访存指令的执行结果进行检测。在程序仿真过程中,该访存数据检测直接从待验证设计中的访存单元输入端口中采集访存指令信息,然后对这些信息进行处理,根据访存指令信息对存储器模型进行读写操作,得到正确的指令执行结果。同时还会实时监控待验证设计中访存指令的执行状态,当指令执行完成后,会采集待验证设计中的访存指令执行结果和正确的指令执行结果进行比较,如果比较错误时则会输出访存指令的相关错误信息到仿真文件中,帮助设计者定位问题。本发明实施例还提供一种多核处理器访存数据检测验证方法,如图2所示,所述方法包括:步骤s101、当检查到有一条访存指令被发射到待验证设计中的访存单元时,该访存数据检测开始运行。步骤s102、访存指令执行模拟器会根据采集到的访存指令信息对存储器仿真模型进行读写操作。步骤s103、根据执行模式的不同,该验证方法支持不同的执行流程,如果是单核处理器模式,则执行步骤s104;如果是多核处理器模式,则执行步骤s107。步骤s104、由访存指令执行模拟器产生的读写操作会直接发送到存储器仿真模型中,存储器仿真模型接收仿真指令请求且完成相应的读写操作时,会把执行结果返回给访存指令执行模拟器。步骤s105、动态实时地监控待验证设计中的访存指令执行状态。步骤s106、判断待验证设计中指令是否执行完成,如果待验证设计中指令执行完成,则会将执行结果和访存指令执行模拟器中正确的结果发往比较器进行比较,否则返回执行步骤s105。步骤s107、在比较器中输出比较结果,如果有错误发生时,则会把出错的访存指令信息打印到仿真文件中,具体信息如表1所示;表1信息点具体描述指令访存指令类型,访存地址,访存大小范围时间指令发射时间,指令完成时间数据指令执行结果,正确的执行结果cache指令是否命中cache,指令是否旁路其他指令的数据读写操作访存指令发出的读写操作被存放的队列成员编号相关指令对同一地址进行访存的其它指令的信息步骤s108、在多核处理器模式下,由访存指令执行模拟器产生的读写操作会缓存在访存指令缓存器中,同时会根据访存指令对存储器仿真模型进行读写操作。步骤s109、实时监控待验证设计中访存指令对存储器的执行状态。步骤s110、判断待验证设计中的访存指令是否完成对存储器的读写操作,如果待验证设计中的访存指令完成对存储器的读写操作,则执行步骤s111;否则返回执行步骤s109。步骤s111、访存指令缓存器会将该指令产生的读写操作发送到存储器仿真模型中,存储器仿真模型将结果返回到访存指令执行模拟器中。此后的步骤与单核处理器模式下的步骤s105至步骤s107相同,当待验证设计中指令执行完成,则会将执行结果和访存指令执行模拟器中正确的结果发往比较器进行比较。本发明实施例提供的多核处理器访存数据检测验证方法,能够实时动态高效率地检测每条访存指令从存储器中读或往存储器写的数据是否正确,当有错误发生时,访存数据检测可以告诉设计人员出错的指令、出错时间、错误的数据以及应该正常的数据,同时还会对出错的原因进行自动分析,帮助设计人员快速定位问题,解决了长期困扰多核处理器验证的准确检测和问题定位的效率问题。访存数据检测不仅支持单核处理器的检测,而且支持多核处理器共享存储系统,可以对每个cpu核的逻辑进行检测。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1