计算机模拟:基础、术语、级别

文摘   2024-11-08 07:00   上海  

过去 10 年来,我一直在研究模拟器,特别是从手机到服务器的各种设备的软件模型。模拟是一种广泛用于设备制造的技术,特别是在芯片制造、软件开发、架构研发和电信领域。嵌入式系统的软件模拟可能对医疗保健和汽车设备制造商有益,因为几乎可以创建任何类型的设备模型。如果设备、芯片或嵌入式系统不可用、受限或开发人员和测试人员无法访问,模拟允许我们执行所谓的“左移”,这意味着我们可以并行甚至比硬件发布更早地开发软件,从而大大缩短上市时间。

市场上推出了各种各样的模拟器工具;这些也称为虚拟机或虚拟机管理程序。多年来,我使用过大多数此类模拟器。因此,在本文和后续的文章中,我想分享我使用模拟的经验,以及来自不同行业的客户如何从这项技术中受益。让我们从一些基础知识开始,以设置框架。


模拟中的 Airbnb:客人和主人

模拟器执行所谓的“客人代码”。这可能是一个“客人程序”或整个“客人操作系统”。模拟系统本身称为“客人”,而运行模拟器的计算机称为“主机”。在主机上运行的操作系统称为“主机操作系统”。

模拟器执行一组客人系统指令,利用可用的主机 CPU 工具对其进行模拟。


模拟和仿真——哪个术语是正确的?

该模型可以在一定程度上准确和详细地模拟设备。但是,我们通常只讨论模拟外部系统的行为,这对程序代码来说是可用的。代码并不关心任何特定的 CPU 指令在内部是如何实现的;最重要的是它能正常工作。这种模拟版本很常见,易于开发,而且速度很快;即使是普通的 PC 用户站也拥有足够的计算能力来实现它。

但是,如果我们需要知道(例如)程序在真实硬件上运行多长时间,这种模拟是不够的。这样的任务不仅需要对外部行为进行建模,还需要复制内部结构和业务逻辑。这也可以在不同程度的细节和准确性上完成。更正确地称这些模型为仿真器,因为它们真正模拟了设备,而不仅仅是模拟设备操作的结果。

由于模型要实现的功能数量更多,因此创建仿真器要复杂得多。仿真器在模拟外部行为方面比模拟器慢得多;使用仿真器启动 Windows 需要数年时间。因此,没有人参与创建整个平台的软件仿真器;这将非常昂贵且耗时。相反,只模拟系统或平台的特定组件(例如 CPU),并且只在其上启动模拟过程的一部分。当模拟器的一部分是高级模型、一部分是低级模型、一部分在现场可编程门阵列 (FPGA) 中,而另一部分通常是真实设备时,各种混合方案都是可能的。

四个级别的模拟应用程序二进制接口 (ABI)

特定的应用程序二进制接口 (ABI) 实现可能是最高级别的抽象。本质上,ABI 为两个程序(通常是用户程序和库或操作系统)的交互指定了一个二进制接口。ABI 涵盖调用约定(如何传递参数和返回值)、数据类型大小和系统调用。它是如何工作的?例如,在基于 Linux 的程序中创建附加应用程序线程时,将调用 pthread_create() 函数。但是,如果我们要在 Windows 中创建一个具有此类函数的库并实现动态链接应用程序和库(动态链接)的必要机制,会怎么样?这将允许用户在 Windows 中运行 Linux 应用程序,这意味着 Windows 将“模拟”Linux。这正是 Windows 10 中的 Windows Subsystem for Linux 所做的事情,它允许用户在 Windows 上运行未经修改的二进制 Linux 应用程序。很酷,不是吗?


指令集架构 (ISA)

正如我上面提到的,最常见的选择是在 CPU 指令级别进行模拟,即所谓的指令集架构 (ISA)。换句话说,我们正在讨论模拟执行指令的结果,而无需模拟实际处理器中发生这种情况的所有内部逻辑,也无需跟踪各种指令的执行时间。这样的模拟器也称为功能模拟器——众所周知的 VirtualBox、Vmware Workstation、KVM 和 QEMU 平台。这些都允许开发人员运行为模拟设备设计的应用程序,而无需重新编译或对正在运行的程序进行任何其他操作。换句话说,可以运行未修改的二进制代码。


微架构

较低级别和更详细的模拟级别包括 CPU 微架构级别,其中模拟真实的内部算法和处理器块,例如指令解码器、队列、分支预测器、缓存、调度程序和计算设备本身。这种建模允许分析实际程序的执行时间和性能,并针对所需的架构对其进行优化。此外,在模拟未来微处理器原型的情况下,可以预测和评估这些设备的性能。


逻辑组件的仿真

最低级别的仿真是模拟现代芯片的逻辑组件的级别。此类仿真器要么是软件,要么是硬件(基于 FPGA)。FPGA 逻辑使用 Verilog、VHDL 等中的寄存器传输级 (RTL) 描述。编译会生成一个图像(比特流),然后将其闪存到 FPGA 设备中。这不需要烙铁或电气工程硕士学位。FPGA 板通过 USB 或 JTAG 接口连接到 PC,FPGA 板制造商的特殊软件执行记录。此类板的成本从最简单的选项的 10 美元到主要芯片制造公司使用的机柜大小的大型 FPGA 的数百万美元不等。在这些公司,FPGA 模拟是将 RTL 投入生产之前的最后一步。

如果我们谈论的是简单设备,那么手头有 FPGA 映像意味着您可以联系专业公司,然后这些公司将根据 FPGA 比特流制造具有编程逻辑的真实(非 FPGA)设备。

除了描述的模拟级别之外,我还参与了混合模拟器的处理。这些是独立的互连模拟器,它们在不同级别对系统的不同部分进行建模。例如,工程师需要分析与为特定操作系统开发的驱动程序配合使用的新网卡的带宽。这种网络设备和许多相关设备可以首先在微架构级别实现以进行初步分析,然后在 FPGA 中在逻辑组件级别实现以进行最终验证。同时,部分参与验证流程的系统其余部分是在指令级别实现的。您不能跳过这部分,因为它是必要的——例如引导加载操作系统——并且在较低且更复杂的级别实现它是有意义的。

软硬件协同设计 HW-SW Co-Design
欢迎后台留言,AI 客服全天在线。脱离物理硬件,开发测试和调试软件。基于虚拟原型的软硬件协同设计,提前一年实现产品上市创收,降低一半开发时间。
 最新文章