使用计算机模拟器。早上软,晚上铁

这里这里我们弄清什么是计算机模拟器以及它们是什么之后,现在该讨论如何使用它们了。我将从可能是应用程序中最有趣的领域开始-我将讨论专业程序员如何在软件开发中使用模拟器来为尚不存在的硬件编写和调试软件。



图片



它将使用不是最简单设备的模型,例如SoC(片上系统)或板上集成了许多集成设备的印刷电路板。在这些设备本身的开发中,可以区分两个阶段。首先开发硬件。这是一个缓慢的过程-可能需要一年或更长时间。



在出现物理设备的第一个修订版并执行了基本检查之后,该设备将转移到软件开发人员。从这一刻开始,第二阶段开始-设备软件的开发。这些可以是用于各种操作系统的固件,BIOS,BSP / CSP(板和CPU支持包)以及驱动程序。



图片

顺便说一下,在通常被称为“硅”的芯片的开发中,这些阶段被称为“前硅”和“后硅”或简称为“硅”。



从理论上讲,在物理设备出现之前就可以进行软件开发。但是,实际上,很少这样做。开发没有中间启动和调试的可能性,而这正是该设备所需要的,这是一项非常不值得的工作,我很少遇到这样的受虐狂。每个人都在等待“硬件”,但是,正如我上面所写,它只会在一年内出现。



此外,硬件还有另一个问题。第一个修订版限量发行,一次分发一次。简而言之,没有足够的电路板和芯片适合所有人。有队列,有冲突,涉及攻击。而且,如果您不小心烧掉了一个设备,这很容易,那么所有开发都将停止,直到找到另一个设备。通常找不到它,有必要生产一个新的,然后等待交货。这大大减慢了该过程。



然后,模拟器就可以帮助软件开发人员!



虚拟设备模型的创建与物理设备的设计同时开始。但是,由于创建和发布模型要容易得多,因此此类模型的第一个版本通常不会在一年内出现,而是要早得多。使用这种模型,软件开发人员可以立即开始任务,而无需等待“硬件”。



是的,不会有所有功能,但是在开始阶段的程序员并不需要所有功能。在制造设备之前,硬件架构师,建模人员和软件开发人员的团队必须制定清晰,一致的计划,以反映在什么阶段应完成哪些特定功能。在每个迭代中以及每个阶段,虚拟模型都会随着附加功能的增长而增长,而附加功能又被软件开发人员用来编写驱动程序或为此特定功能创建固件。



图片

在这种方法中,模型和软件开发人员使用通用规范。通过在模型上运行软件,他们实际上是在检查彼此的工作。



另外一个好处是对“硬件”的验证,尽管事实上硬件本身还不存在。乍一看听起来令人惊讶,但在这里我们谈论的是设备设计中的体系结构错误,其中一些错误可以在模型上运行软件时检测到。这非常酷,因为可以在发布之前修复硬件中的这些错误。否则,这些错误将导致需要重新发布下一个修订,这是一种非常昂贵的享受。



我们曾遇到过这样的情况:在复杂的设备中实现了用于处理传入数据流的10个块,而控制和管理寄存器仅使我们可以处理其中的一半。这是在该设备的先前版本中实现的,架构师只是忘记扩展此部分。当我们创建模型并由另一个团队编写并运行驱动程序时,很快就发现所有高级功能都不可用。在创建设备的物理原型之前,会及时纠正体系结构和规格。



大型设备公司可以支持围绕其产品构建的整个生态系统。这个生态系统包括许多其他公司,包括那些为该设备生产软件的公司。例如,这些可以是BIOS制造商,即所谓的IBV(独立BIOS供应商),其中最著名的是AMI,Insyde和Phoenix。这些公司还从硬件制造商那里获得模型,并在物理设备出现之前就开始开发。例如,对于Intel平台,使用Simics模拟器,有关详细信息,请参阅文章Ecosystem Partners与Intel左移以加快上市时间



显然,创建模型需要额外的成本。当然,成本的多少取决于模型的类型(功能,每个周期等),但是通常,可以将创建模型的成本假定为等于为设备编写软件的成本。并非所有公司都愿意为较早的版本支付此价格,这就是为什么这种方法在大型公司中很常见。他们为此有足够的预算,并且较早在市场上推出产品会大大增加他们的收入。尽管最近,趋势是在软件开发和小型公司中更广泛地使用模拟器。



通常,为了降低成本,模型并未实现所有可能的功能,而仅实现了某些使用设备的情况所需的最小功能。例如,如果不计划将网络设备用于VLAN中,而仅打算更新固件并通过tftp下载,则无需实现带有VLAN标签的逻辑,但是必须完全实现通过网络引导设备和固件更新的功能。卷。



最终结果是什么?



如果我们假设硬件和软件的开发时间大致相等(请参见上图),那么使用模型可以将产品的上市时间大大减少近两倍(所谓的TTM-上市时间) ,因为“硬件”和软件的开发是并行而不是顺序进行的。为此,经常使用“左移”一词,它来自测试领域,这意味着应尽早进行测试。同一术语适用于软件开发,当在模拟器上执行时,它似乎在时间线中向左移动。



到设备的第一个版本出现时,剩下的只是检查实际硬件上软件的功能。理想情况下,错误和修补程序应该不重要,并且此阶段不会引入大的延迟,因为已经在模型上编写了代码并对其进行了调试。



这种方法不是“免费的”,它需要额外的预算和一组编程人员,因此您需要清楚地了解在一个案例或另一案例中这些成本可以收回多少。



这不是模拟器的唯一用例。在以下文章中,我将讨论架构研究和创建复杂环境。不要切换



All Articles