摘要:
1.本文的创新点
本文提出了一种将单核指令集模拟器扩展为多核指令集模拟器的方法,由于基本处理模块与单核指令集模拟器保持相同,因此在单核指令集模拟器的正确性已有充分保证的前提下,采用这种方法实现的多核指令集模拟器的正确性就相对容易保证,从而有效降低多核指令集模拟器的正确性验证工作量。另外,本文还解决了使用多核指令集模拟器建立多核验证环境通常会遇到的问题:如何加载并验证并行测试激励、如何验证多核间的通信及同步功能、如何实现大规模测试激励的验证加速。
2.实现方法
本文引入操作系统中进程管理的思想,将单核指令集模拟器中的寄存器状态,全局标志等提取出来作为核心运行状态,通过设置并维护多份核心运行状态从而在一个进程中实现对多个处理器核心的模拟。多核指令集模拟器采用C++语言实现,将提取出来的核心运行状态用一个CoreContext的类管理起来,多核结构中需要模拟的处理器核心与CoreContext的对象一一对应。多核指令集模拟器的基本处理模块保持与单核指令集模拟器相同,其主要处理模块中引用的全局变量替换成指向不同CoreContext成员的宏定义,当模拟不同处理器核心的执行时,只需要通过处理器核心号切换到对应的CoreContext即可。
通过有效的空间管理,将测试激励的正文段和数据段映射到内存的不同区域,本文实现的多核指令集模拟器可将并行测试激励以多任务模式或共享内存模式加载到内存中运行。
另外,本文还通过将某些特殊指令在RTL上的执行结果实时传递给参考模型等方法解决了多个核心间通信与同步的验证问题。
本文开发的多核指令集模拟器中实现了保留恢复功能,基于该功能可以实现RTL级模拟验证的加速。
3.结论及未来待解决的问题
本文提出的将单核指令集模拟器扩展为多核指令集模拟器的方法具有通用性,使用指令集模拟器作为参考模型的微处理器验证环境可以借鉴本文的方法将单核验证环境升级为多核验证环境。
设计验证是多核微处理器开发的关键技术之一,验证的效率直接关系到芯片的上市时间。开发多核指令集模拟器,并建立相应的高效验证环境是加快多核微处理器开发周期的一个有效途径。本文提出的多核指令集模拟器实现方法可以有效加快对称多核结构微处理器指令集模拟器的开发。对于异构多核结构的微处理器指令集模拟器开发,本文中的方法无法直接适用,另外,异构多核芯片中不同核心之间的同步与通信机制将更加复杂,这也是构建异构多核芯片验证环境需要解决的问题。
4.实用价值或应用前景
本文设计并实现的多核指令集模拟器简单而高效,以此为基础建立起来的多核RTL级实时验证环境,很好地满足了验证需要,在多核实时RTL级验证环境中发现了上百个设计错误,由于实时验证环境的高效性,使得验证的设计错误在较短时间内得到了收敛,验证初期每天能发现十几个设计错误,经过几个月的验证,使一个复杂多核芯片的设计正确性达到了流片前的目标。操作系统核心也在本文开发的多核指令集模拟器上进行了早期调试,在调试过程中发现了多个软件设计错误,同时也发现了软硬件接口协议上的多个问题,在多核指令集模拟器上经过调试的操作系统核心,在FPGA原型验证平台上只用了半天的时间就完成了引导过程的调试。