科普:嵌入式多核并行仿真
自信息技术革命以来,计算机一直被应用在各种复杂的数据处理中,如火箭弹道,高能物理和生物学数据等。随着嵌入式领域的多样化需求的不断丰富,多核 CPU 的应用也越来越广泛:嵌入式系统通常需要同时处理多个任务和实时数据,并在有限的资源和功耗限制下提供高性能和可靠性。多核技术为这些需求提供了有效的解决方案。
CPU 多核技术是一种设计方法,支持将多个独立的处理单元(称为核心)集成在单个芯片上的中央处理器(CPU)中。CPU 内的每个核心都可以作为一个独立的处理单元,能够独立执行指令和进行计算。多核技术的主要目的是提高 CPU 的整体性能和效率:通过拥有多个核心,CPU 可以同时执行多个任务,提高多任务处理能力,实现并行处理和增加吞吐量。
多核技术相比传统的单核处理器具有下列优势:
1. 更好地利用系统资源,多个任务可以同时执行而不会争夺同一个核心,从而提高系统响应速度并减少延迟;
2.有效处理多线程应用程序,不同的执行线程可以分布在多个核心上进行高效处理。
在带来诸多便捷的同时,多核技术也给 CPU 仿真带来了巨大挑战。在目标机只有 1 个核心的情况,通常只需采用一个主机线程来完成 CPU 的逻辑(主要包括取指、解码和执行)。而当目标机拥有多个核心的情况,虽然可以同样采用单核 CPU 仿真的方式,也就是使用一个主机线程串行来完成多个目标机 CPU 的逻辑,尽管这样实现具有较强的确定性(目标机多核 CPU 是串行执行的),但其缺点也是显而易见的:仿真性能大打折扣。
要解决这一问题,也就是实现多核并行仿真面临诸多难点:
Q:怎样保证目标机 CPU 的原子操作?
A:需要理解目标机 CPU 所有原子操作的原理,借助主机平台的一些互斥机制去实现。
Q:怎样保证目标机 CPU 两个核心执行速度一致?
A:需要从不同的维度(如虚拟时间)实现一些同步机制去控制仿真 CPU 运行的速度。
天目全数字实时仿真软件 SkyEye 能够解决这一问题。对于 CPU 多核仿真,SkyEye 既支持串行仿真,又支持并行仿真,可以通过启动脚本灵活配置。
多核并行仿真主要通过使用宿主机 N 个线程去实现目标机 N 个 CPU 核心的逻辑,相较于串行仿真,理论性能提升约 N 倍,串并行仿真逻辑详见下图。
▲SkyEye 串并行仿真逻辑
在 CPU 的指令仿真方面,SkyEye 使用了动态二进制翻译技术。该技术主要由 Tag 和 Translation 两个步骤组成,Tag 步骤和仿真 CPU 执行指令在同一线程,而 Translation 步骤可以运行在另一线程中,当 Translation 步骤完成后,即可运行原生平台的指令块等价实现目标机 CPU 指令块的功能,进一步提高 CPU 仿真性能。
天目全数字实时仿真软件 SkyEye 是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。
基于 SkyEye 搭建的嵌入式系统虚拟化运行环境,工程师可不受物理硬件限制,随时访问目标系统,快速搭建虚拟硬件模型并提前进行开发、测试和验证工作,实现高效率、高质量的软件交付。SkyEye 支持主流的嵌入式硬件平台,可运行国内外主流的操作系统,对国产生态的支持尤为出色。通过利用基于 LLVM 的动态二进制翻译技术,SkyEye 可使虚拟处理器在典型的桌面计算机上运行速度达到 2000MIPS 以上。
SkyEye 有效解决了嵌入式软件研发时过分依赖硬件资源的问题,填补了国内嵌入式虚拟仿真领域的空白,为嵌入式软件研发模式带来了革新式的变化。
▲SkyEye 界面图:基于可视化图形的硬件建模
原文链接:https://mp.weixin.qq.com/s/Tid8mJwIr8lyB1iK-jC1SQ
版权声明: 本文为 InfoQ 作者【DevOps和数字孪生】的原创文章。
原文链接:【http://xie.infoq.cn/article/0f4f85f7f3012b592eaec8c40】。文章转载请联系作者。
评论