为异构系统发展工具

最后在一系列:软件与硬件交互的数量增加,而不再可以忽略执行平台的应用程序。EDA如何帮助?

受欢迎程度

系统架构师看异构和齐次计算当没有其他选择,但目前的想法是,一个系统级的软件方法可以简化设计,易于集成各种块,并有可能提高性能,减少权力。虽然理论似乎足够良好,实现了比预期的要难。

当一个设计必须满足时间或功率预算、专用硬件成为必要。这种方法的问题在于它限制了设计的灵活性。专业处理核心是中间立场,但他们的编程环境是脱节的,软件产业已经证明缓慢发展工具和方法来应对这些新架构。

不过,软件硬件相关的增长的数量。安全和权力只是两个受影响的地区。“大多数操作系统(os)有钩子的管理权力,主要用于CPU核心,但是除此之外,它是一个应用程序级运动,以确保你是呆在权力范围内,“沃伦Kurisu说,产品管理和营销总监导师图形的嵌入式软件部门。“虽然操作系统应该能够提供一个更好的比应用程序级别的控制,我们没有见过,在任何操作系统到目前为止。”

软件行业多年来一直开发应用程序和方法,但是它一直在抗拒改变。作为回应,EDA行业发展模型硬件有足够精度和足够高的执行速度,使软件开发,启动和调试在开发流。允许软件对硬件有一定程度的影响。

这些模型有几种形式。“它们之间的主要区别是可用性的时候,”汤姆·德舒特说,物理原型产品营销主管Synopsys对此。“虚拟样机前可用吗RTL是稳定的。这使得更多的两支球队之间的并行性。从你得到稳定的RTL,物理原型的优点是,你得到更多的准确性。这是更多的时间而不是能力的问题。虚拟原型更容易调试,因此更有可能,你会解决事情难以调试。但物理原型能够访问实际的I / O,因此您可以运行的接口,如USB。用例是不同的,尽管它是相同的团队。”

坐在中间模拟有一组不同的权衡。“我们看到模拟上升的一个原因是,半导体公司不想创建不计时的或松散的SystemC模型虚拟样机RTL和时可以把它放进一个模拟器,”拉里Lapides负责销售的副总裁说治之。“这是一个低风险,即使low-payoff,使用仿真的方法。但模拟器是昂贵的,它可以支付很多工程师开发模型。但这是被认为风险更大。”

Lapides认为嵌入式系统企业往往不使用模拟。“虽然我们看到仿真被吹捧为硬件/软件合作设计,他们只是一个宽尾被用来扔东西了,而不是一个统一的因素。数百万美元的硬件并不是一个统一的因素。”

但是这个行业需要必须满足。“硬件团队面对的挑战提供硬件执行平台尽可能早地支持硬件和软件的持续集成的努力,”弗兰克Schirrmeister指出系统的高级产品管理组主管&验证小组节奏。“虚拟平台,模拟仿真和fpga都是必需的。此外,形式验证技术需要解决的问题,要花很长时间去赶在模拟”。

虚拟模型
一旦你开始讨论模型虚拟原型,开始讨论关于适当的抽象层次。”之间的实质性差异构建虚拟平台模型,重点是函数与一个包括性能,”说,首席技术官超音速。“绝大多数的软件社区与功能很好。他们希望能够写硬件相关的软件,而不必等待芯片回来。虚拟样机的人几乎做了尽可能多的可以问,如果我们所有的硬件模型。”

创建第二个问题。“有依赖硬件团队创建虚拟样机,这是最基本的问题之一,“说Synopsys对此DeSchutter。“硬件团队已经被用于使用EDA工具,和他们需要的工具来完成他们的工作。在软件中,一直有一个厌恶理解软件开发的硬件和软件原型,所以他们总是依赖于另一个团队,一个CAD团队,EDA团队或硬件团队创建原型。这限制了可用性和可用的功能的概念和理解,因为他们不与之交互的第一手。”

知识产权公司,如手臂和想象力,确保模型的处理器和子系统是可用的。他们花了很多时间和金钱在这些模型。2015年,手臂了碳设计系统领导人之一的高速模型创建。但处理器只有一个小的总有机碳,和大多数其他IP供应商目前不提供抽象模型,可用于软件开发。

当软件团队离开自己,他们把一条不同的道路。说:“他们存根硬件Wingard。“这并不是说技术不行,但这足够快的模型通常是不存在的。这是一个简单的投资回报率的问题。模型编写的时候,有足够的家伙写的软件的工作将会加快,这样我更好比等待芯片回来,或模拟器上运行?答案往往成为我在模拟器上运行的更好。”

Lapides认为这逐步改变的。”模型变得更可用。团队的最好的方法,他们仍然存根的事情。他们知道他们最终会做硬件调试和问题是什么是建筑的ROI模型。这可以归结为一个软件验证计划,说这是最好的虚拟样机调试,这将在硬件上完成。所以他们只能做非常以软件为中心的虚拟样机的调试几个外围设备,但是在接下来的项目可以重用模型存在。和重用是一个容易得多的虚拟平台,因为更高的抽象。在接下来的项目他们会添加更多的模型,因此,完整的模型被建立在时间的基础上的。”

调试
当多个块硬件紧密集成在一起,相互作用,即使软件应该是独立的。这使得软件调试一个多层次的问题。硬件的发展,如缓存一致性实际上使这个问题变得更糟。“当你有软件运行在cpu和dsp共享内存、共享的公共汽车,你知道有一件事是如何影响另一个?“问导师Kurisu”这是一个困难的问题,很难调试。确保分离、共享设备,如I / O,访问gpu -如何使整个系统通信产业正面临着这些问题。”

你看起来越深,发现的问题越多。“多线程应用程序调试是非常具有挑战性的,因为可能的合法执行订单的数量可能实际上是无限的,”詹姆斯说aldi,架构专家验证平台内想象力的技术。“当应用程序运行在异构处理器的集合,也是新问题出现。调试器必须支持所有的处理器,能够呈现的潜在巨大通量信息从他们的方式有助于运营商。”

不再是这只是一个硬件相关的软件问题。“今天,设备具有多种层次的软件堆栈顶端的硬件,和需要做的方法得到船上并不总是一定是相同的,”说,模型技术主管部门。“你不想使用相同的方法和合作设计技术提出一个os级别应用程序体现司机一样,例如,不同的速度和精度要求。我所见,最大的转变的时间,我一直在做这是典型的团队将使用多种技术来获得每一个处理这些不同的需求和硬件设计到软件的整个过程。”

整个行业最好的办法软件调试。“一个阵营希望调试环境看起来完全像它看起来在硬件上使用相同的工具,“Lapides说。“这从连续性的角度很好但你最终得到异步调试,因为你有多个异构处理器和调试器连接到不同的,当你设置一个断点,调试器不能同步停止设备上的其他资源。”

“同时异构多核调试可能会非常棘手,”克里斯•琼斯承认产品营销Tensilica IP组主任节奏。“许多芯片设计者选择行业标准总线拓扑进行调试。很多客户欣赏在每个核心表现为一个内存映射外围而不必通过JTAG菊花链核联结在一起。JTAG仍然是受欢迎的在我们的客户群。”

Lapides提出的替代方案。“其他阵营的队伍,有先进的方法论和愿意的事情看起来不同,为了能够充分利用虚拟样机的功能,包括他们提供的可控制性和可见性。同时他们得到决定论,多处理器异构调试,可以同步和控制整个设备。”

无论哪种方式,他们尝试,一些问题保持不变。“你不能抽象的异质性调试、“阿尔迪说。“用户将是面对GPU -或DSP-specific反馈;需要理解当组线程同步或者是独立的,需要知道内存范围可见性和同步。这个行业还有很长的路从通用软件工程师能够有效地调试复杂的异构、多供应商的平台。”

和增长不仅仅是功能方面的问题。“用户可以检查GPU带宽实际上是在关键的处理阶段吗?阿尔迪问道“他们能看到任务的分派任务的延迟代码开始?他们能识别种族之间缓存维护操作和处理任务的开始吗?实现的收益需要分析和调试;分析、测量和优化。”

新方法
系统的某些方面需要优化的开发过程中实际的硅。“一致性无法解决在软件只有Schirrmeister说。”为此,软件和场景驱动的验证的产品Accellera便携式刺激工作小组允许用户指定场景,否则将很难手动创建。”

其中验证可能是一件事把双方联系在一起。“全面测试一些系统的唯一方法是生成并行多处理器上运行的测试用例,“说,首席执行官Breker。“这太硬等人写测试用例。验证工具基于便携式刺激工具必须能够生成并行测试用例在异构系统中。”

另一种方法是添加芯片上的仪器帮助的问题。这方面的一个例子是UltraSoC库的独立于供应商的调试IP。

汽车等行业也会带来变化。“你也可以做故障注入在虚拟样机软件如何对错误,”德舒特补充道。“我们开始看到感兴趣,特别是对安全评论家应用程序,比如汽车。但即便如此,吸收慢于你可能期望得到好处,你可以得到它。”

安全是另一个领域,可能会迫使改变。“架构是不断发展的,”Wingard说。”之间有一场让大家相互交流,这可以使设计时没有考虑芯片的事情,而不允许任何人跟别人才允许它。你可以锁定一切开始,然后解锁需要当一个连接和必需的。还需要一套新的软件模型。”

这也可能意味着形式验证技术也许在将来会有更大的作用,因为这是唯一的技术,可以证明这些需要分离。

硬件和EDA行业一直试图使异构多核过渡到更容易,但仍有很长的路要走之前明确的方法出现,封装的硬件,软件和系统视图和考虑功能、性能、电力、安全。

有关的故事
异构系统挑战成长
如何确保不同类型的处理器将SoC工作。
嵌入式软件验证问题增加
不一致的结果,集成问题,缺乏财政激励措施解决这些问题点持续问题芯片制造商。
芯片得到更可靠吗?
也许,但指标的新设计和新技术,有比以往更多的未知因素。



1评论

凯文 说:

异构系统开发是一个宏观的版本集成电路设计——一群不同计算元素在并行执行一些功能。所使用的主要问题是RTL方法数字设计师不工作,所有的数字块芯片上(而不是在那个)。

此时,您需要一个自顶向下的设计流程,各级工作和理解模拟世界以及1和0。

您还希望correct-by-construction方法对于复杂的系统,而不是一个“构建它然后验证”的方法。

这意味着你想抛弃很多现有的方法的“软件定义硬件”的方法,这样您就可以通过算法定义整个系统的硬件(“可执行规范”),可以(通过正式的方法)翻译成实际硬件或快速编译执行(GP-GPUs, fpga)。

导致的问题你不能并行软件的人做的东西,c++不支持异构并行处理。然而深度学习的新作物的机器不一样旧的工作,需要新的语言——神经网络看起来很像模拟电路。所以我希望一些重大变化

https://careers.google.com/jobs ! t = jo&jid = /谷歌/设计-方法-工程师- 1600 -圆形剧场pkwy -山-视图- ca - 1294020104和;

留下一个回复


(注意:这个名字会显示公开)

Baidu