2014年8月6日 simics.

基本上,所有模型都是错误的,但有些模型很有用

由Guest Blogger Daniel Aarno

D.Aarno.


这是我吃过苦头才学会的。大约十年前,我坐在5台电脑占据了我很小的学生宿舍的大部分空间。我当时正在为我的硕士论文寻找一个项目,目前正在考虑一家名为Virtutech的公司提出的创建Power Mac G3模型的建议。我记得我在思考如何在逻辑级别上模拟处理器的位和互连,类似于可合成的SystemC的样子。直到后来我才意识到这种方法对于构建一个可以用于系统级软件开发的模型是多么的错误。更令人担忧的是,有多少人也采用了我最初的、错误的方法。

最终我没有继续这个项目,而是继续写我的论文,并在哈佛大学继续攻读博士学位自治系统中心(CAS),专注于人机协作。在CAS我们的座右铭是“那些无法模拟的人,那些能做的人” - 在所有从未留下MATLAB的机器人研究中刺伤。我在这里学到的课程是同时调试软件和硬件是非常困难的。我们习惯于以PC的形式具有稳定的硬件,因此我们总是期望硬件工作。在实验室中的机器人上,这并不总是如此。通常几小时或几天花费调试软件通过更换故障传感器或固定焊接良好的焊接来解决。

我在CAS的经验使我确信,您确实希望在受控环境中进行尽可能多的开发和测试,比如模拟,然后只在实际系统上进行最终测试和调优。最后一点也是很重要的一点,模拟器并不是真正事物的替代品;这是一个强大的工具,可以帮助你更有效地构建真实的东西。

作为我在Cas的研究的一部分,我在研究交流计划在哥本哈根,4月的一个沉闷的早晨,窗外的湿雪,我被Virtutech接近了我以后被接受的开发者的位置。一旦我加入Virtutech,我就会向我透露,我以前的思考如何为如何模拟运行实际软件的思考。我很惊讶地了解团队如何攻击问题,只需在没有在系统上获取的软件上运行的软件就可以“欺骗”。通过即将到来的SIMICS书,我希望以易于访问的格式,为系统软件开发分享我的建筑模型的经验。

我学到的第一个教训是,您不应该试图建模硬件,而是您需要建模的硬件/软件接口。这意味着寄存器和中断等抽象比总线和位重要得多。这包含在您应该建模的格言中什么硬件则不然如何它做到了。毕竟,从软件的角度来看,它是重要的,而不是该架构的特定实现。在即将到来的书中,使用虚拟平台的软件和系统开发我们将讨论如何确定你需要建模什么,以及如何在正确的抽象级别上建模。

为了更好地理解选择正确抽象层次的重要性,请考虑与物理学的类比。在现代物理学中有四个主要的“抽象层次”或模型:经典(牛顿)力学、相对论力学、量子力学和量子场论。

经典力学非常擅长处理日常条件;这是通常在地球上以远低于光速移动的物体。但是,一旦对象开始以靠近光速的速度移动或开始接近原子的尺寸,就需要其他型号。试图使用量子场理论计算行星运动变得棘手,因为所选择的模型对于该目的来说太详细说明。类似地尝试使用相对论或甚至经典机制来计算子原子粒子的运动是不可能的,因为模型太抽象了。

这个类比也适用于虚拟平台模型。如果抽象级别太低,模型就有可能成为性能瓶颈,并将整个模拟速度降低到不可接受的速度,更不用说创建模型所需的时间增加了。另一方面,如果抽象级别太高,可能不可能执行所有需要的任务。

在正确的抽象级别创建的模型可能比真实的更重要。此类模型帮助软件开发人员提高了生产率,因为它们提供了无与伦比的检测,配置和注射功能,以及优于传统的基于硬件的解决方案的调试工具。例如,在设备模型中提供良好的日志消息等简单的事情可以极大地帮助设备驱动程序开发人员,因为开发人员现在可以访问设备的视图。

一个有趣的案例,确信这是我们在SIMICS模型上启动客户的操作系统的情况。SIMICS发出了警告消息,即64 MB页面的力量对齐至下一个64 MB边界。实际上,尝试在0xEFE00000处尝试放置64 MB页面的MMU映射在实践中将其置于0xEC0000。架构规范明确表示,如果MMU页面未在其自己的大小上对齐,则将隐式强制对齐映射,并且处理器将继续执行。Simics正在与真实处理器一起做同样的事情,并且代码保持运行,但另外的Simics也会发出警告(因为这可能是错误)。

事实上,程序员的一部分是错误的。目的是在0xEFE00000映射仅1 MB,但效果是在地址下面映射62 MB,为操作系统保留。此错误已潜伏几年,直到用户最终设法创建一些任务,使操作系统尝试使用错误映射区域以获取用户数据。访问失败,导致崩溃的任务和对OS供应商的错误报告。这显示了在模型中提供良好日志消息的值。即使代码似乎在硬件上工作,即使硬件不抱怨,它也可能具有模型点的潜在问题。

使用虚拟平台的软件和系统开发将深入讨论这些以及虚拟平台开发中经常遇到的许多其他问题。这本书还将解决一些常见的错误和误解,这些错误和误解令人惊讶地持续存在。提供很好地理解如何创建设备模型,在书中一个章节的将提供一个具体的建模的例子,一个DMA控制器的模型构建按部就班,从规范,考虑几个权衡和设计决策。然后将完成的模型集成到一个虚拟平台中,并使用定制的Linux设备驱动程序进行测试,以便将所有内容整合在一起。

我现在已经看到了这么多次通过在虚拟平台上进行软件和系统开发可以实现的增益,我相信这是开发前和后硅的最佳方式。请记住,虚拟平台不是真实的;这是帮助你建立最终让你成功的事情的东西。因此,始终有必要在真实系统上进行最终测试和调整。考虑到这一点,我现在准备更新我的旧座右铭:那些不能失败的人,那些能做的人会首先模拟。

请了解更多关于Simics的信息点击这里

Daniel Aarno是英特尔的工程经理,在那里,他带领一个团队在全系统仿真产品上工作。丹尼尔拥有电气工程硕士学位和计算机科学的执照学位。
这里表达的观点和观点是作者的,不一定是英特尔公司风河系统有限公司或附属公司。

*乔治E. P. Box,Norman R. Draper。“经验模型建设和响应表面”,1987年。ISBN:0471810339

以前的风河加入了汽车连接财团
下一个嵌入式开发的转型时间-第4部分