CN102929686A - 一种片上多核处理器功能验证方法 - Google Patents
一种片上多核处理器功能验证方法 Download PDFInfo
- Publication number
- CN102929686A CN102929686A CN2012103720221A CN201210372022A CN102929686A CN 102929686 A CN102929686 A CN 102929686A CN 2012103720221 A CN2012103720221 A CN 2012103720221A CN 201210372022 A CN201210372022 A CN 201210372022A CN 102929686 A CN102929686 A CN 102929686A
- Authority
- CN
- China
- Prior art keywords
- core processor
- file
- reference model
- instruction
- chip multi
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种片上多核处理器功能验证方法,建立一个参考模型以及参考模型与待验证多核处理器的接口,所述参考模型接受设定格式的文件输入,并根据输入进行取指、译码和执行等操作,在此过程中输出相应值;参考模型会将自身的输出值和待验证多核处理器的输出值进行对比,以完成功能验证。本发明能有效解决串行仿真器(参考模型)模拟并行的片上多核处理器的调度问题。
Description
技术领域
本发明属于片上多核处理器的功能验证领域,尤其是一种片上多核处理器功能验证方法。
背景技术
随着处理器的发展,单核处理器已经遭遇到频率、性能和功耗等瓶颈。因此,处理器生产厂商已经将目光转移到“横向发展”的片上多核处理器上来。片上多核处理器可以再无需提高频率、无需大幅度提高功耗的前提下,提高处理器的性能。片上多核处理器的诞生给计算机体系结构、操作系统、软件设计都带来了极大的挑战。同时,如何验证片上多核处理器的功能正确性也已经成为片上多核处理器生产过程中的重中之重。
用软件(参考模型)来模拟片上多核处理器的行为,进行功能验证,是片上多核处理器验证的重要方法。
片上多核处理器验证的重点和难点在于高速缓存的一致性问题,所以在验证片上多核处理器时,应当将主要的工作量放在这个问题上面。
发明内容
为了克服已有片上多核处理器的功能验证技术的无法解决串行仿真器(参考模型)模拟并行的片上多核处理器的调度问题的不足,本发明提供一种有效解决串行仿真器(参考模型)模拟并行的片上多核处理器的调度问题的片上多核处理器功能验证方法。
本发明解决其技术问题所采用的技术方案是:
一种片上多核处理器功能验证方法,建立一个参考模型以及参考模型与待验证多核处理器的接口,所述参考模型接受设定格式的文件输入,并根据输入进行取指、译码和执行等操作,在此过程中输出相应值;参考模型会将自身的输出值和待验证多核处理器的输出值进行对比,以完成功能验证。
进一步,所述验证方法的流程如下:
第一步,生成或者编写一些针对片上多核处理器的程序文件,这些程序文件作为系统激励被片上多核处理器载入,每个处理器核同时开始进行仿真,在仿真的过程中,片上多核处理器会记录仿真中的运行状态并输出文件,其中的一些文件作为片上多核处理器参考模型的激励输入,另外的一些文件作为结果的对比的文件;
第二步,片上多核处理器仿真结束后,程序文件会被转化为片上多核处理器参考模型所需要的格式的程序文件,并且被参考模型读入;同时参考模型也会读入片上多核处理器仿真之后生成的文件;
第三步,参考模型按照指令序列文件和读写指令序列文件中的指令顺序开始仿真;其中,每条指令也分为取值,译码和执行等阶段;参考模型对多核处理器各个核的调度方法,就是根据指令序列文件和读写指令序列文件进行的;参考模型和片上多核处理器执行相同的指令流,并且在执行的过程中,参考模型会将自身产生的对比信息与片上多核处理器产生的信息进行对比,如若出错则及时停止仿真;
第四步,仿真正常停止之后,参考模型会将自己产生的寄存器状态文件和片上多核处理器产生的寄存器状态文件相比较;若比较通过,则本次仿真顺利结束。
所述第三步中,在指令执行阶段实现了切换中央处理器机制,按照指令序列文件中来自各个处理器核的指令的顺序,参考模型切换到相应指令所对应的处理器来执行这条指令。
更进一步,所述验证方法还包括软硬件协同仿真过程,具体如下:
首先,生成一段指令流,这段指令流作为片上多核处理器的激励,进行硬件仿真;硬件仿真完成过后,会输出一些文件,这些文件会在参考模型仿真之前被参考模型读入;这些文件有:包括含有中断信息的中断历史文件,含有在DMA传输过程中完成指令信息的DMA传输文件以及含有TLB条目信息的写TLB历史文件,内存初始化文件;
接着,片上多核处理器仿真完毕后,生成的指令流被翻译成参考模型支持的格式,作为参考模型的激励;同时,参考模型会读入片上多核处理器的输出文件作为激励,进行软硬件协同仿真;在参考模型仿真过程中,参考模型会用自己产生的信息,和读写指令序列文件中的片上多核处理器仿真过程中产生的高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息进行对比;如果发现错误,及时停止仿真;如果仿真正常结束,参考模型会将自己的寄存器状态文件与片上多核处理器产生的寄存器状态文件进行对比,以完成功能验证。
所述参考模型接受的设定格式的读写序列信息输入,所述读写序列信息包含中央处理器的编号信息,是否为对称多核处理器信息,指令类型信息,原子操作信息,地址信息,写数据信息和PC信息;
参考模型的输出信息包括高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息。
所述第二步中,读写指令的读写序列文件中,读写指令的顺序是由本条指令访问高速缓存或者主存储器的时间来决定的,一些较晚发射但较早访问高速缓存或者主存储器的读指令会排在其他的较早发射但是较晚访问高速缓存或主存储器的读写指令之前,基于片上多核处理器的程序中,排在较后面位置但先访问高速缓存或主存储器的指令在读写序列文件中排在靠前的位置,因而仿真模型会按照读写指令的读写序列文件的顺序,先执行较早访问高速缓存或者内存但实际处在片上多核处理器程序中靠后位置的指令。
当一条指令被乱序执行,则在指令执行过程中需要使用读写序列文件中的地址和数据;对于被乱序执行的读指令,由于通用寄存器的数值不是最新的,从读写序列文件中取得最新的寄存器数值,得到读指令的真实地址;对于被乱序执行的写指令,由于通用寄存器的数值不是最新的,从读写序列文件中取得最新的寄存器数值,以得到写指令的真实地址;这条乱序执行的指令执行完毕后,寄存器的相关信息会保存在乱序堆栈中,并不更新寄存器的数值,等到这条指令之前所有的指令都运行完毕之后更新寄存器的数值。
所述第一步中,作为片上多核处理器参考模型激励的文件有:中断历史文件、DMA传输文件、写TLB历史文件、内存初始化文件、指令序列文件和读写指令序列文件;作为片上多核处理器参考模型结果的对比文件有:寄存器状态文件和读写指令序列文件。
所述第四步中,采用了分段式的结果检查方法:片上多核处理器每执行设定定数量的指令之后,就将产生的文件和结果给参考模型,并使参考模型开始仿真并进行这些指令的结果比较。
本发明的技术构思为:利用单核处理器和多核处理器仿真模型的相同之处,复用单核处理器的仿真模型,使之适应多核处理器仿真模型的架构,使用这种方法来建立片上多核仿真模型可以节省大量的验证时间,从而可以将验证的重点转移到高速缓存一致性的问题上。此外,为了降低复杂度,本发明采用了软硬件结合仿真的机制,这种方法可以有效避开我们不需要详细验证之处而专注于高速缓存一致性问题。
由于功能级(指令级)的片上多核处理器仿真模型无法模拟片上多核处理器实际在并行运行的每条指令的关系,所以参考模型的指令执行顺序是由片上多核处理器指令访问高速缓存或者主存储器的顺序决定的。此外,本发明的片上多处理器仿真模型在实现的过程中加入了指令的乱序执行机制和中央处理器切换机制,以保证片上多核处理器及其仿真模型在功能(指令)上的一致。
为了提高验证效率,在仿真模型执行的过程中,仿真模型会将自身执行的结果与片上多核处理器的执行结果进行实时比对,而不是传统方法中的等待仿真结束之后再统一比较。
本发明的有益效果主要表现在:有效解决串行仿真器(参考模型)模拟并行的片上多核处理器的调度问题。
附图说明
图1为本发明的整体使用环境图。
图2为本发明的片上多核处理器参考模型的整体流程。
图3为本发明的乱序执行实现机制举例。
图4为本发明的高效率分段式结果检查方法示例。
图5为本发明的读写序列文件的条目。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图5,一种片上多核处理器功能验证方法,包括一个参考模型以及参考模型与待验证多核处理器的接口。参考模型用软件的方法模拟了多核处理器的功能,包括了取指、译码和执行等操作,并且重点维护了高速缓存的一致性。参考模型接受一定格式的文件输入,并根据输入进行取指、译码和执行等操作,在此过程中输出相应值;参考模型会将自身的输出值和待验证多核处理器的输出值进行对比,以完成功能验证。
具体验证流程如下:
第一步,生成或者编写一些针对片上多核处理器的程序文件(指令流)。这些程序文件作为系统激励被片上多核处理器载入,每个处理器核同时开始进行仿真。在仿真的过程中,片上多核处理器会记录仿真中的运行状态并输出这些文件,其中的一些文件作为片上多核处理器参考模型的激励输入,另外的一些文件作为结果的对比的文件。作为片上多核处理器参考模型激励的文件有:中断历史文件、DMA传输文件、写TLB历史文件、内存初始化文件、指令序列文件和读写指令序列文件。需要这些文件作为片上多核处理器参考模型的原因,在于有些事件(外部中断,DMA传输,对TLB的写操作以及内存初始化)是参考模型无法模拟的。而参考模型需要指令序列文件和读写序列文件作为激励的原因在于,片上多核处理器的每个处理器核中的指令是并行执行的,而参考模型中的指令必须是串行执行的。因而,我们需要根据每个处理器核中的指令访问高速缓存或主存储器的顺序,将这些指令串行化,以便这些指令可以被仿真模型执行。作为片上多核处理器参考模型结果的对比文件有:寄存器状态文件和读写指令序列文件。
第二步,片上多核处理器仿真结束后,程序文件会被转化为片上多核处理器参考模型所需要的格式的程序文件,并且被参考模型读入,这保证了参考模型完全了解片上多核处理器的各个处理器核所执行的指令的详细信息;同时参考模型也会读入片上多核处理器仿真之后生成的文件,这些文件提供了参考模型需要的,但是又无法模拟的事件。
第三步,参考模型按照指令序列文件和读写指令序列文件中的指令顺序开始仿真。其中,每条指令也分为取值,译码和执行等阶段,这与单核处理器的行为相同,因而这里复用了单核处理器参考模型中的响应功能。参考模型对多核处理器各个核的调度方法,就是根据指令序列文件和读写指令序列文件进行的。具体的说,就是按照指令序列文件和读写指令序列文件中每条指令对应的处理器编号,来调度相应的处理器来执行相应指令的。由于片上多核处理器的每条指令都存在流水线结构,也就是一条指令可能处于不同的流水线级,但是参考模型是以指令为最小单元的,也就是不存在流水线结构;这就可能导致程序中后发射的指令抢先访问高速缓存(或主存储器)。由于参考模型是按照读写序列文件中的顺序,也就是访问高速缓存(或主存储器)的顺序执行的,所以参考模型会先执行在程序中后发射的那条指令,也就是乱序执行现象。为了解决这个问题,我发明了乱序堆栈来解决这个问题。参考模型和片上多核处理器执行相同的指令流,并且在执行的过程中,参考模型会将自身产生的对比信息与片上多核处理器产生的信息进行对比,如若出错则及时停止仿真。
第四步,仿真正常停止之后,参考模型会将自己产生的寄存器状态文件和片上多核处理器产生的寄存器状态文件相比较;若比较通过,则本次仿真顺利结束。为了高效率地进行结果检查,我们采用了分段式的结果检查方法:片上多核处理器每执行一定数量的指令之后,就将产生的文件和结果给参考模型,这样可以在有错误的时候及时停止仿真,节省了大量的时间。
由单核处理器仿真模型到多核处理器仿真模型,需要增加的部分在于高速缓存一致性的监听设备和指令执行的仲裁设备,其他部分可以在仿真模型中继续使用。高速缓存一致性的监听设备采用了当下很流行的高速缓存监听一致性协议,通过这个设备维护了各个处理器之间高速缓存的一致性。指令的仲裁设备则会根据读写指令序列的顺序,给不同处理器以执行的权限,采用了一种片上多核处理器仿真模型串行化模拟片上多核处理器指令并行执行的方法。
由于参考模型的顺序执行性,为了用顺序的方法来验证并行的片上多核处理器,在指令执行阶段实现了切换中央处理器机制,当前指令为非读写指令时,在当前的中央处理器执行本条指令;而当前指令为读写指令时,则切换到相应的处理器中执行这条指令。这使得并行化的硬件仿真可以用串行化的软件仿真来模拟,以保证仿真结果真实地反映实际待验证多核处理器的行为。
一种软硬件协同仿真机制及其工作流程,首先生成(或编写)一段指令流,这段指令流作为片上多核处理器的激励,进行硬件仿真。硬件仿真完成过后,会输出一些文件,这些文件会在参考模型仿真之前被参考模型读入;这些文件有:包括含有中断信息的中断历史文件,含有在DMA传输过程中完成指令信息的DMA传输文件以及含有TLB条目信息的写TLB历史文件,内存初始化文件。其中中断历史文件、DMA传输文件和写TLB历史文件是仿真模型无法模拟的,所以需要作为仿真模型的激励。内存初始化文件是为了使得仿真模型和片上多核处理器主存储器的初始状态相同。片上多核处理器仿真完毕后,生成(或编写)的指令流被翻译成参考模型支持的格式,作为参考模型的激励;同时,参考模型会读入片上多核处理器的输出文件作为激励,进行软硬件协同仿真。在参考模型仿真过程中,参考模型会用自己产生的信息,和读写指令序列文件中的片上多核处理器仿真过程中产生的高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息进行对比;如果发现错误,及时停止仿真。如果仿真正常结束,参考模型会将自己的寄存器状态文件与片上多核处理器产生的寄存器状态文件进行对比,以完成功能验证。
参考模型接受的一定格式的读写序列输入,包含中央处理器的编号信息,是否为对称多核处理器信息,指令类型信息,原子操作信息,地址信息,写数据信息和PC信息。这些信息就是参考模型的激励,这些激励的指令信息会影响高速缓存的一致性,是我们验证的重点。
参考模型的输出信息,包括高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息。这些输出信息用于和片上多核处理器输出的信息做对比,以完成功能验证。
读写指令的读写序列文件,读写指令的顺序是由本条指令访问高速缓存或者主存储器的时间来决定的。所以一些较早访问高速缓存或者内存的读指令会排在其他的较早完成的读写指令之前,也就是说编程者写入的基于片上多核处理器的程序中,排在较后面位置的指令可能会先访问高速缓存或者主存储器,这时在仿真模型看来,这条本来应该排在后面的指令是被优先执行的。这也就导致了编程顺序和参考模型的执行顺序不一致。仿真模型会按照读写指令的读写序列文件的顺序,先执行较早访问高速缓存或者内存的指令,也就是乱序执行的机制。
乱序执行机制:由于片上多核处理器的每条指令都存在流水线结构,也就是一条指令可能处于不同的流水线级,但是参考模型是以指令为最小单元的,也就是不存在流水线结构;这就可能导致程序中后发射的指令抢先访问高速缓存(或主存储器)。由于参考模型是按照读写序列文件中的顺序,也就是访问高速缓存(或主存储器)的顺序执行的,所以参考模型会先执行在程序中后发射的那条指令,也就是乱序执行现象。为了解决这个问题,我发明了乱序堆栈来解决这个问题。如果一条指令被乱序执行,则在指令执行过程中需要使用读写序列文件中的地址和数据。这样规定是因为指令在乱序执行的过程中,通用寄存器中的数值可能别改变,此时只有读写序列文件中的地址和数据才是仿真中真正需要的数值。对于被乱序执行的读指令,由于通用寄存器的数值不是最新的,所以需要从读写序列文件中取得最新的寄存器数值,以得到读指令的真实地址。对于被乱序执行的写指令,由于通用寄存器的数值不是最新的,所以需要从读写序列文件中取得最新的寄存器数值,以得到写指令的真实地址;此时,并不更新寄存器的数值,必须等到这条指令之前所有的指令都运行完毕之后,才能将更新寄存器的数值。
当作为激励的程序文件很大型的时候,片上多核处理器并不运行完整个程序文件,再进行结果检查;而是执行了一定数量的指令之后,就将输出的文件传送给参考模型,此时参考模型执行这些指令,并进行结果比对。这种结果检查方法可以大幅度提高早期验证的效率。
本实施例中,片上多核处理器参考模型的实现:
本实施例子是用C++语言编写的片上多核处理器参考模型,整体的使用环境如图1所示。首先,生成或者编写一些针对片上多核处理器的程序文件(指令流)。这些程序文件随后被片上多核处理器载入,并开始进行仿真。在仿真的过程中,片上多核处理器会记录仿真中的运行状态并输出这些文件,其中的一些文件作为片上多核处理器参考模型的激励输入,另外的一些文件作为结果的对比的文件。作为片上多核处理器参考模型激励的文件有:中断历史文件、DMA传输文件、写TLB历史文件、内存初始化文件、指令序列文件和读写指令序列文件。作为片上多核处理器参考模型结果的对比文件有:寄存器状态文件和读写指令序列文件。片上多核处理器仿真结束后,程序文件会被转化为片上多核处理器参考模型所需要的格式的程序文件,并且被参考模型读入;同时参考模型也会读入片上多核处理器仿真之后生成的文件,随后开始参考模型仿真。参考模型和片上多核处理器执行相同的指令流,在执行的过程中,参考模型会将自身产生的对比信息与片上多核处理器产生的信息进行对比,如若出错则及时停止仿真。仿真正常停止之后,参考模型会将自己产生的寄存器状态文件和片上多核处理器产生的寄存器状态文件相比较;若比较通过,则本次仿真顺利结束。
图2为本发明的片上多核处理器参考模型的整体流程。在整个流程中,最重要的发明在于串行仿真器(参考模型)模拟并行的片上多核处理器的调度方法,复用单核处理器参考模型构建多核处理器参考模型的方法,指令的乱序执行机制,高效率的分段式结果检查方法。
为了在转型的参考模型上模拟并行化的片上多核处理器的行为,需要将片上多核处理器的行为串行化。本发明采用了指令级的串行化,依据每条指令访问高速缓存或者主存储器的时间,来将各个片上处理器的指令排序。参考模型就按照这个顺序执行各条指令。本发明中将指令分为两类:读写指令和非读写指令。本发明提出的调度机制是:当下一条指令为非读写指令时,由当前处理器执行该条指令;当下一条指令为读写指令时,参考模型会切换到这条指令在片上多核处理器中被执行的那个处理器中运行。这种机制保证了片上多核处理器与参考模型访问高速缓存和主存储器的顺序一致。其中,下一条指令是否为读写指令的信息保存在指令序列文件中,下一条指令的处理器编号信息保存在读写指令序列文件中。参考模型在仿真过程中需要依据这两个文件的信息进行仿真。
复用单核处理器的参考模型构建多核处理器参考模型,对于缩短项目周期有很大帮助。本发明采用的复用办法主要是在单核处理器的参考模型的基础之上,加入高速缓存状态管理装置和片上多核处理器的调度装置。多核处理器与单核处理器最大的不同之处在于多核处理器需要维护高速缓存的一致性。本实例中采用的是当下最流行的高速缓存一致性的监听协议。通过以上的改进,单核处理器的参考模型就成功被改造成片上多核处理器的参考模型。
其中,加入了高速缓存一致性监听协议的状态位Exclusive,用来维护高速缓存的一致性。
高速缓存状态管理装置,在参考模型执行读写指令的时候,对高速缓存进行监听,以保证高速缓存的一致性。
由于读写指令的顺序是由本条指令访问高速缓存或者主存储器的时间来决定的。所以一些较早访问高速缓存或者内存的读指令会排在其他的较早完成的读写指令之前,也就是说编程者写入的基于片上多核处理器的程序中,排在较后面位置的指令可能会先访问高速缓存或者主存储器,这时在参考模型看来,这条本来应该排在后面的指令是被优先执行的。这也就导致了编程顺序和参考模型的执行顺序不一致。所以仿真模型会按照读写指令的读写序列文件的顺序,先执行较早访问高速缓存或者内存的指令,也就是乱序执行的机制。为了保证指令的乱序执行结果不出现人为的错误和死锁,本发明实现了乱序堆栈来解决这个问题。
乱序堆栈实现的例子如图3所示。处理器0按顺序执行①st r3, addr1 ②ld r3, addr2 这两条指令,处理器1按顺序执行③st r4,addr2 ④ld r4, addr1 这两条指令。其中②和④为高速缓存命中的读指令。处理器0的寄存器r3,处理器2的寄存器r4,地址addr1,地址addr2的初始值分别为:A,B,C,D。
按照高速缓存或者主存的访问顺序来讲,指令执行的顺序为:②④①③。
在执行完指令②之后,本条指令读回来的数据并不直接写入处理器0的寄存器r3中,而是被放入处理器0的乱序堆栈中,提前执行位赋值为真,寄存器项被赋值为r3,数据项被赋值为D。
在执行完指令④之后,本条指令读回来的数据并不直接写入处理器1的寄存器r4中,而是被放入处理器1的乱序堆栈中,提前执行位赋值为真,寄存器项被赋值为r4,数据项被赋值为C。
在执行完指令①之后,A被写入地址为addr1的位置。由于在②之前所有的指令都已经执行完毕,处理器0的乱序堆栈释放了指令②读回来的数据,将D写入到处理器0的寄存器r3中。
在执行完指令③之后,A被写入地址为addr2的位置。由于在④之前所有的指令都已经执行完毕,处理器1的乱序堆栈释放了指令④读回来的数据,将C写入到处理器1的寄存器r4中。
高效率的分段式结果检查方法如图4所示。当作为激励的程序文件很大型时,片上多核处理器将这些指令全部执行完毕,之后才才把输出文件传送给仿真模型的话,如果在仿真前期出错的话,那么后面花费的大量仿真时间将会被浪费。因此我们提出了分段式的结果检查方法。如图4中的举例所述,片上多核处理器每执行200条指令,则会将输出文件传送给仿真模型,仿真模型则会开始执行这200条指令,并进行结果比对。若这200条指令没有出错,则仿真继续;若这200条指令中有出错的指令,则会在仿真的前期就停止仿真,进行排错操作。这种做法大大提高了前期的验证效率。由于一条指令在被写入到输出文件中的时候,其运行结果可能尚未产生。因而,在划分结果检查文件的过程中,最后几条指令可能还没有仿真结果。针对这种情况,我们采用了如下措施:若第一个结果对比文件中包含了200条指令,则参考模型在第一次仿真过程中会执行前150条指令(前150条指令的执行结果肯定已经产生了),第一个结果对比文件中的其余的指令,在下一次仿真的时候执行。值得说明的是,例子中的200条指令这一数值可以根据实际情况灵活设置,而150条指令这一数值可以根据实际情况灵活设置,也可以通过在片上多核处理器中设置观察点,用来观测每个输出文件中最后一条执行完毕的指令条目数,来确定这个数值。
本发明的读写序列条目如图5所示。每个条目代表的信息分别为:
ldst number: 读写指令的编号;
CPU ID: 当前指令的处理器编号;
LD/ST: 当前指令是读指令还是写指令. 0代表读指令, 1代表写指令;
Type:当前指令的访问范围 0代表一个字, 1代表一个字节, 2代表半个字;
Hit/Miss: 当前指令是否命中高速缓存0代表命中, 1代表缺失;
E: 高速缓存一致性监听协议状态位
DZXY/DCI ID: DZXY/DCI操作的处理器编号;
Address: 当前指令的地址;
Data: 当前写指令的数据,若当前为读指令,这一项为被踢出的高速缓存行的tag;
PC: 当前指令的PC;
Exclusive: 原子操作信息;
Success: 原子操作成功信息;
Merge Number: 本条读指令所融合的指令个数;
Merge PC[8]: 被融合指令的PC。
Claims (9)
1.一种片上多核处理器功能验证方法,其特征在于:建立一个参考模型以及参考模型与待验证多核处理器的接口,所述参考模型接受设定格式的文件输入,并根据输入进行取指、译码和执行等操作,在此过程中输出相应值;参考模型会将自身的输出值和待验证多核处理器的输出值进行对比,以完成功能验证。
2.如权利要求1所述的一种片上多核处理器功能验证方法,其特征在于:所述验证方法的流程如下:
第一步,生成或者编写一些针对片上多核处理器的程序文件,这些程序文件作为系统激励被片上多核处理器载入,每个处理器核同时开始进行仿真,在仿真的过程中,片上多核处理器会记录仿真中的运行状态并输出文件,其中的一些文件作为片上多核处理器参考模型的激励输入,另外的一些文件作为结果的对比的文件;
第二步,片上多核处理器仿真结束后,程序文件会被转化为片上多核处理器参考模型所需要的格式的程序文件,并且被参考模型读入;同时参考模型也会读入片上多核处理器仿真之后生成的文件;
第三步,参考模型按照指令序列文件和读写指令序列文件中的指令顺序开始仿真;其中,每条指令也分为取值,译码和执行等阶段;参考模型对多核处理器各个核的调度方法,就是根据指令序列文件和读写指令序列文件进行的;参考模型和片上多核处理器执行相同的指令流,并且在执行的过程中,参考模型会将自身产生的对比信息与片上多核处理器产生的信息进行对比,如若出错则及时停止仿真;
第四步,仿真正常停止之后,参考模型会将自己产生的寄存器状态文件和片上多核处理器产生的寄存器状态文件相比较;若比较通过,则本次仿真顺利结束。
3.如权利要求2所述的一种片上多核处理器功能验证方法,其特征在于:所述第三步中,在指令执行阶段实现了切换中央处理器机制, 按照指令序列文件中来自各个处理器核的指令的顺序,参考模型切换到相应指令所对应的处理器来执行这条指令。
4.如权利要求1所述的一种片上多核处理器功能验证方法,其特征在于:所述验证方法还包括软硬件协同仿真过程,具体如下:
首先生成一段指令流,这段指令流作为片上多核处理器的激励,进行硬件仿真;硬件仿真完成过后,会输出一些文件,这些文件会在参考模型仿真之前被参考模型读入;这些文件有:包括含有中断信息的中断历史文件,含有在DMA传输过程中完成指令信息的DMA传输文件以及含有TLB条目信息的写TLB历史文件,内存初始化文件;
接着,片上多核处理器仿真完毕后,生成的指令流被翻译成参考模型支持的格式,作为参考模型的激励;同时,参考模型会读入片上多核处理器的输出文件作为激励,进行软硬件协同仿真;在参考模型仿真过程中,参考模型会用自己产生的信息,和读写指令序列文件中的片上多核处理器仿真过程中产生的高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息进行对比;如果发现错误,及时停止仿真;如果仿真正常结束,参考模型会将自己的寄存器状态文件与片上多核处理器产生的寄存器状态文件进行对比,以完成功能验证。
5.如权利要求1~4之一所述的一种片上多核处理器功能验证方法,其特征在于:所述参考模型接受的设定格式的读写序列信息输入,所述读写序列信息包含中央处理器的编号信息,是否为对称多核处理器信息,指令类型信息,原子操作信息,地址信息,写数据信息和PC信息;
参考模型的输出信息包括高速缓存命中或缺失信息,原子操作成功或失败信息,高速缓存行状态信息,访问的其他中央处理器的编号信息,读数据信息和被替换出来的高速缓存行信息。
6.如权利要求2所述的一种片上多核处理器功能验证方法,其特征在于:所述第二步中,读写指令的读写序列文件中,读写指令的顺序是由本条指令访问高速缓存或者主存储器的时间来决定的,一些较晚发射但较早访问高速缓存或者主存储器的读指令会排在其他的较早发射但是较晚访问高速缓存或主存储器的读写指令之前,基于片上多核处理器的程序中,排在较后面位置但先访问高速缓存或主存储器的指令在读写序列文件中排在靠前的位置,因而仿真模型会按照读写指令的读写序列文件的顺序,先执行较早访问高速缓存或者内存但实际处在片上多核处理器程序中靠后位置的指令。
7.如权利要求6所述的一种片上多核处理器功能验证方法,其特征在于:当一条指令被乱序执行,则在指令执行过程中需要使用读写序列文件中的地址和数据;对于被乱序执行的读指令,由于通用寄存器的数值不是最新的,从读写序列文件中取得最新的寄存器数值,得到读指令的真实地址;对于被乱序执行的写指令,由于通用寄存器的数值不是最新的,从读写序列文件中取得最新的寄存器数值,以得到写指令的真实地址;这条乱序执行的指令执行完毕后,寄存器的相关信息会保存在乱序堆栈中,并不更新寄存器的数值,等到这条指令之前所有的指令都运行完毕之后更新寄存器的数值。
8.如权利要求2所述的一种片上多核处理器功能验证方法,其特征在于:所述第一步中,作为片上多核处理器参考模型激励的文件有:中断历史文件、DMA传输文件、写TLB历史文件、内存初始化文件、指令序列文件和读写指令序列文件;作为片上多核处理器参考模型结果的对比文件有:寄存器状态文件和读写指令序列文件。
9.如权利要求2所述的一种片上多核处理器功能验证方法,其特征在于:所述第四步中,采用了分段式的结果检查方法:片上多核处理器每执行设定定数量的指令之后,就将产生的文件和结果给参考模型,并使参考模型开始仿真并进行这些指令的结果比较。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103720221A CN102929686A (zh) | 2012-09-28 | 2012-09-28 | 一种片上多核处理器功能验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103720221A CN102929686A (zh) | 2012-09-28 | 2012-09-28 | 一种片上多核处理器功能验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102929686A true CN102929686A (zh) | 2013-02-13 |
Family
ID=47644496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103720221A Pending CN102929686A (zh) | 2012-09-28 | 2012-09-28 | 一种片上多核处理器功能验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929686A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182268A (zh) * | 2013-05-27 | 2014-12-03 | 三星电子株式会社 | 仿真系统及其方法和包括所述仿真系统的计算机系统 |
CN104615808A (zh) * | 2015-01-19 | 2015-05-13 | 中国科学院自动化研究所 | 一种待测试硬件运算部件的测试方法及参考模型装置 |
CN105320583A (zh) * | 2014-07-31 | 2016-02-10 | 上海华虹集成电路有限责任公司 | 基于uvm验证方法学的只写寄存器验证测试平台及验证方法 |
CN105446844A (zh) * | 2014-09-01 | 2016-03-30 | 上海华虹集成电路有限责任公司 | 基于uvm验证方法学的只读寄存器验证测试平台及验证方法 |
CN105760638A (zh) * | 2016-04-28 | 2016-07-13 | 福州瑞芯微电子股份有限公司 | 一种加快soc芯片仿真的方法 |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN107688467A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 处理器随机指令复用的验证方法 |
CN107977232A (zh) * | 2017-10-24 | 2018-05-01 | 上海华为技术有限公司 | 一种数据处理方法、数据处理电路和网络设备 |
CN107976991A (zh) * | 2017-11-24 | 2018-05-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种用于片上处理器中usb控制器的验证方法 |
CN108345521A (zh) * | 2017-07-24 | 2018-07-31 | 清华大学 | 控制多核处理器运行及多核处理器的安全检测方法和装置 |
CN108600043A (zh) * | 2018-04-02 | 2018-09-28 | 郑州云海信息技术有限公司 | 连接服务器和控制端的方法、服务器Memory功能模块测试方法 |
CN109032879A (zh) * | 2017-06-09 | 2018-12-18 | 展讯通信(上海)有限公司 | 多核处理器访存数据检测验证系统及方法 |
CN109189479A (zh) * | 2018-10-12 | 2019-01-11 | 西安微电子技术研究所 | 一种用于处理器指令集的并行自动化验证方法 |
CN109977437A (zh) * | 2017-12-27 | 2019-07-05 | 长鑫存储技术有限公司 | 晶体管级电路的验证方法、装置、设备及计算机可读存储介质 |
CN110659172A (zh) * | 2019-09-11 | 2020-01-07 | 上海高性能集成电路设计中心 | 一种微处理器锁机制的指令级校验方法 |
CN110674055A (zh) * | 2019-09-11 | 2020-01-10 | 上海高性能集成电路设计中心 | 一种用于部件级和部件联合级的缓存一致性模拟验证方法 |
CN110941565A (zh) * | 2018-09-25 | 2020-03-31 | 北京比特大陆科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
CN111400997A (zh) * | 2020-03-26 | 2020-07-10 | 超验信息科技(长沙)有限公司 | 一种基于同步执行的处理器核验证方法、系统及介质 |
CN113076709A (zh) * | 2021-04-16 | 2021-07-06 | 江南大学 | 一种基于混合参考模型的多核处理器功能验证平台及方法 |
CN115080120A (zh) * | 2022-07-01 | 2022-09-20 | 北京百度网讯科技有限公司 | 寄存器的验证方法、装置、设备和介质 |
CN117234591A (zh) * | 2023-09-04 | 2023-12-15 | 上海合芯数字科技有限公司 | 指令验证方法、系统、设备、介质及产品 |
CN117408198A (zh) * | 2023-12-13 | 2024-01-16 | 无锡亚科鸿禹电子有限公司 | 一种仿真模型建模方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805470A (en) * | 1996-10-10 | 1998-09-08 | Hewlett-Packard Company | Verification of instruction and data fetch resources in a functional model of a speculative out-of order computer system |
CN101446987A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种用于多核处理器Cache一致性实物验证的装置 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
-
2012
- 2012-09-28 CN CN2012103720221A patent/CN102929686A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805470A (en) * | 1996-10-10 | 1998-09-08 | Hewlett-Packard Company | Verification of instruction and data fetch resources in a functional model of a speculative out-of order computer system |
CN101446987A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种用于多核处理器Cache一致性实物验证的装置 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
Non-Patent Citations (2)
Title |
---|
王朋宇等: "片上多核处理器存储一致性验证", 《软件学报》, vol. 22, no. 10, 30 April 2010 (2010-04-30), pages 863 - 874 * |
黄琨等: "一种分片式多核处理器的用户级模拟器", 《软件学报》, vol. 19, no. 4, 30 April 2008 (2008-04-30), pages 1069 - 1080 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182268A (zh) * | 2013-05-27 | 2014-12-03 | 三星电子株式会社 | 仿真系统及其方法和包括所述仿真系统的计算机系统 |
CN104182268B (zh) * | 2013-05-27 | 2019-01-18 | 三星电子株式会社 | 仿真系统及其方法和包括所述仿真系统的计算系统 |
CN105320583A (zh) * | 2014-07-31 | 2016-02-10 | 上海华虹集成电路有限责任公司 | 基于uvm验证方法学的只写寄存器验证测试平台及验证方法 |
CN105446844A (zh) * | 2014-09-01 | 2016-03-30 | 上海华虹集成电路有限责任公司 | 基于uvm验证方法学的只读寄存器验证测试平台及验证方法 |
CN104615808A (zh) * | 2015-01-19 | 2015-05-13 | 中国科学院自动化研究所 | 一种待测试硬件运算部件的测试方法及参考模型装置 |
CN104615808B (zh) * | 2015-01-19 | 2018-07-03 | 北京思朗科技有限责任公司 | 一种待测试硬件运算部件的测试方法及参考模型装置 |
CN105760638B (zh) * | 2016-04-28 | 2018-11-06 | 福州瑞芯微电子股份有限公司 | 一种加快soc芯片仿真的方法 |
CN105760638A (zh) * | 2016-04-28 | 2016-07-13 | 福州瑞芯微电子股份有限公司 | 一种加快soc芯片仿真的方法 |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN105930242B (zh) * | 2016-05-06 | 2018-07-06 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN107688467A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 处理器随机指令复用的验证方法 |
CN107688467B (zh) * | 2016-12-23 | 2019-11-15 | 北京国睿中数科技股份有限公司 | 处理器随机指令复用的验证方法 |
CN109032879B (zh) * | 2017-06-09 | 2021-08-20 | 展讯通信(上海)有限公司 | 多核处理器访存数据检测验证系统及方法 |
CN109032879A (zh) * | 2017-06-09 | 2018-12-18 | 展讯通信(上海)有限公司 | 多核处理器访存数据检测验证系统及方法 |
CN108345521A (zh) * | 2017-07-24 | 2018-07-31 | 清华大学 | 控制多核处理器运行及多核处理器的安全检测方法和装置 |
CN108345521B (zh) * | 2017-07-24 | 2019-09-20 | 清华大学 | 控制多核处理器运行及多核处理器的安全检测方法和装置 |
CN107977232A (zh) * | 2017-10-24 | 2018-05-01 | 上海华为技术有限公司 | 一种数据处理方法、数据处理电路和网络设备 |
WO2019080852A1 (zh) * | 2017-10-24 | 2019-05-02 | 华为技术有限公司 | 一种数据处理方法、数据处理电路和网络设备 |
CN107976991B (zh) * | 2017-11-24 | 2020-06-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种用于片上处理器中usb控制器的验证方法 |
CN107976991A (zh) * | 2017-11-24 | 2018-05-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种用于片上处理器中usb控制器的验证方法 |
CN109977437A (zh) * | 2017-12-27 | 2019-07-05 | 长鑫存储技术有限公司 | 晶体管级电路的验证方法、装置、设备及计算机可读存储介质 |
CN108600043A (zh) * | 2018-04-02 | 2018-09-28 | 郑州云海信息技术有限公司 | 连接服务器和控制端的方法、服务器Memory功能模块测试方法 |
CN110941565A (zh) * | 2018-09-25 | 2020-03-31 | 北京比特大陆科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
CN109189479A (zh) * | 2018-10-12 | 2019-01-11 | 西安微电子技术研究所 | 一种用于处理器指令集的并行自动化验证方法 |
CN109189479B (zh) * | 2018-10-12 | 2023-02-24 | 西安微电子技术研究所 | 一种用于处理器指令集的并行自动化验证方法 |
CN110674055A (zh) * | 2019-09-11 | 2020-01-10 | 上海高性能集成电路设计中心 | 一种用于部件级和部件联合级的缓存一致性模拟验证方法 |
CN110659172A (zh) * | 2019-09-11 | 2020-01-07 | 上海高性能集成电路设计中心 | 一种微处理器锁机制的指令级校验方法 |
CN110659172B (zh) * | 2019-09-11 | 2022-12-27 | 上海高性能集成电路设计中心 | 一种微处理器锁机制的指令级校验方法 |
CN110674055B (zh) * | 2019-09-11 | 2023-10-03 | 上海高性能集成电路设计中心 | 一种用于部件级和部件联合级的缓存一致性模拟验证方法 |
CN111400997A (zh) * | 2020-03-26 | 2020-07-10 | 超验信息科技(长沙)有限公司 | 一种基于同步执行的处理器核验证方法、系统及介质 |
CN111400997B (zh) * | 2020-03-26 | 2023-08-08 | 超睿科技(长沙)有限公司 | 一种基于同步执行的处理器核验证方法、系统及介质 |
CN113076709A (zh) * | 2021-04-16 | 2021-07-06 | 江南大学 | 一种基于混合参考模型的多核处理器功能验证平台及方法 |
CN115080120A (zh) * | 2022-07-01 | 2022-09-20 | 北京百度网讯科技有限公司 | 寄存器的验证方法、装置、设备和介质 |
CN117234591A (zh) * | 2023-09-04 | 2023-12-15 | 上海合芯数字科技有限公司 | 指令验证方法、系统、设备、介质及产品 |
CN117234591B (zh) * | 2023-09-04 | 2024-04-16 | 上海合芯数字科技有限公司 | 指令验证方法、系统、设备、介质及产品 |
CN117408198A (zh) * | 2023-12-13 | 2024-01-16 | 无锡亚科鸿禹电子有限公司 | 一种仿真模型建模方法、装置、设备及存储介质 |
CN117408198B (zh) * | 2023-12-13 | 2024-03-01 | 无锡亚科鸿禹电子有限公司 | 一种仿真模型建模方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929686A (zh) | 一种片上多核处理器功能验证方法 | |
CN102103525B (zh) | 用于控制多个核和线程的时戳计数器(tsc)偏移的设备、方法、处理器和系统 | |
US8725485B2 (en) | Simulation method and simulation apparatus | |
US7873507B2 (en) | Multi-core model simulator | |
CN100565472C (zh) | 一种适用于多处理器核系统芯片的调试方法 | |
CN101504618B (zh) | 面向多核处理器的实时线程迁移方法 | |
CN105512088B (zh) | 一种可重构的处理器架构及其重构方法 | |
WO2014110922A1 (zh) | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 | |
CN102955737B (zh) | 异构处理器体系的程序调试方法和系统 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
WO2020083050A1 (zh) | 一种数据流处理方法及相关设备 | |
CN112580792B (zh) | 一种神经网络多核张量处理器 | |
CN102073480B (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
CN105094949A (zh) | 一种基于指令计算模型与反馈补偿的模拟方法与系统 | |
Holey et al. | HAccRG: Hardware-accelerated data race detection in GPUs | |
Riedel et al. | Banshee: A fast LLVM-based RISC-V binary translator | |
JP2007310565A (ja) | システムlsi検証装置及びシステムlsi検証プログラム | |
US8886512B2 (en) | Simulation apparatus, computer-readable recording medium, and method | |
US20110197182A1 (en) | Debugging parallel software using speculatively executed code sequences in a multiple core environment | |
CN102096607B (zh) | 微处理器及其除错方法 | |
Grevtsev et al. | Multicore processor models verification in the early stages | |
US20140156251A1 (en) | Simulation device and simulation method therefor | |
Ko et al. | Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms | |
JP2004021907A (ja) | 性能評価用シミュレーションシステム | |
CN113705004B (zh) | 一种适合dsp的实时系统行为级软件仿真方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130213 |