中文 英语

如何处理并发性

系统复杂性的飞涨,但处理并发和同步工具支持异构系统仍然有限。

受欢迎程度

处理架构的发展解决了很多问题在一个芯片,但是对于每个问题解决了另一个创建。并发性是其中的一个问题,最近得到了更多的关注。

同时并发性并不是一个新问题,今天的系统的复杂性使它越来越难以正确设计、实施和验证的软件和硬件共同组成系统功能。EDA行业试图解决这些问题在过去,但失败了。那么我们今天在哪里呢?和谁能最得益于采用有限的工具可用吗?

系统增加多样性。“我们希望看到一个更大的使用异构结构系统和处理器架构,”迈克尔·汤普森说,高级产品营销经理DesignWare弧处理器Synopsys对此。“我们有碰壁的最大速度,我们可以时钟在大约3到4 ghz处理器笔记本电脑或服务器,但少得多为嵌入式系统的功耗。你可以搬到双核或四核,但最终你遇到问题,,因为结构变得如此之大,保持连贯性和集群的功能内聚性变得困难。所以人们可能会去更多的异构结构,他们将使用可编程元素以及硬件元素来满足任务的需求和可用的力量。”

那么,我们如何解决这个在系统水平?“作为人类,我们有一定的方式方法问题,“说Anush莫汉达斯·,营销副总裁和业务发展NetSpeed系统。“一个是分而治之。我们把一切分成小块消化它们,然后组装。意义在均匀的架构,你刚刚CPU与本身或其他一些交互块。但在异构体系结构、交互的水平很高。如果你建立在孤立子系统,然后把它们放在一起,你会看到问题。”

整个行业已经迁移到异构体系结构在过去的几年,因为它们更有效率。他们使用更少的电力,较少强调把块睡眠和清醒。


图1:英特尔的异构Kaby Lake-G架构。来源:英特尔

“均质处理不是答案,”库尔特·舒勒说,负责营销的副总裁ArterisIP。“这只做一件事。你可以有一个芯片有六个或更多不同类型的软件加速和切片处理。但关键是你做了什么在硬件和软件。”

有几个问题的水平。“我们需要单独从SoC架构师真正的系统架构师,”说,首席技术官超音速。“系统架构师负责整个事情包括软件和有一个更广泛的托盘比芯片架构师的选择。我们看到不同的选择是由芯片内人们在系统公司与芯片半导体公司。”

这是由于半导体公司建造的东西将会服务多个客户和多个系统架构师。“有额外的工作,使设备更通用,“Wingard补充道。“这可能需要抽象的减少,减少选择芯片架构师的托盘已经提供给他们,使他们可以看到传统的一大群人。系统公司的系统架构师可以针对一个特定的产品或服务。他们可以更多地权衡,不需要让它作为通用。”

每个用户正在寻找不同的解决方案。说:“一开始人们需要模拟,首席执行官治之。“然后他们需要支持异构系统,那么他们需要调试环境,然后他们需要验证工具,帮助他们提高质量和获得更多对其正确性的信心。今天我们看到他们想要的工具,帮助确认系统是安全的。”

在芯片层面,具体问题可以被定义。”在一个抽象级别的大多数问题是调度和仲裁问题,“说阿施施Darbari,产品管理主管OneSpin解决方案。“我将更进一步,说大多数是维持下订单的具体问题相关系统设计无序的工作。确保加载和存储仍命令对每个主当访问一个共享内存保持个人缓存相干验证不同的挑战。如果做得不合适,它会导致内存子系统锁门。”

弗兰克•Schirrmeister高级组的产品管理和营销总监节奏提供了一个框架来看看解决方案空间。“我结构问题分成三个区域。首先,你需要能够执行系统中,观察发生了什么。其次,你需要能够有效地创建测试这些问题。第三,你最好希望一些自动化来帮助你决定系统设计、分区等。”

执行和遵守
一切的起点是一个可执行的模型。”的一种工具,帮助系统架构师虚拟原型,”汤普森解释道。“这些正在使用越来越多。这使他们建立整个SoC在虚拟环境中,他们可以编写代码来看看它的交互。这是变得越来越重要。软件组件的设计越来越复杂,所以开发成本。今天大多数软件比硬件团队更大的团队。我希望继续,因为软件任务继续变得更复杂。”

虚拟样机的效用是提供一个平台模拟调试。“Eclipse或GDB对单处理器工作但有多个时,他们都在一个单独的窗口,不能很好地控制,“Davidmann说。对称多处理,GDB允许您看到线程,但是没有好办法控制和调试时异构处理增加了。”

调试需要既包括硬件和软件。“系统调试器的用户界面需要连接到硬件调试器,“Schirrmeister说。“你需要提前从那里不用开关通过15窗口。这仍然是一个问题。我们观察的工具、调试和理解系统的状态,这并不是微不足道的。你必须把事情来自知识产权供应商。人们想要做逐周期多核系统的准确模拟和想了解的状态设计,希望能够停下来,看到所有的寄存器,硬件波形,所有的处理器软件状态。”

有几个抽象的虚拟原型可以编写和他们可以解决各种问题。“我相信许多并发性问题可以做硬件/软件架构来解决实验在实际建筑设备和编写软件之前,”吉姆•Bruister说主任数字系统Silvaco。“这是什么非母语英语课程应该提供工具和更高的抽象模拟能力做‘如果’分析的发展”。

系统级验证

一旦可以执行系统模式,需要迁移到一个验证任务。有几种方法可以做到这一点。

断言“你可以添加到系统,所以你了解如何操作系统运行时,“显示Davidmann。“我们已经应用的概念断言用于硬件模拟器。这些都是看软件和确保它是做你期望。然后你让它运行大量的工作。这可帮助您识别软件沿着一条路径,你没想到。”

但也有其他的观点。“与任何涉及性能或你不希望这些类型的分析实际的软件来运行,“Schirrmeister说。“你需要更有针对性。在某些时候你可能需要运行实际的软件,而不是开始。它是关于有效地创造刺激你进入软件分区的应激状态。便携式刺激(PS)是推进场景简况验证,这样您就可以创建测试刺激软件任务在特定处理器造成特定的交易,你会看到如果硬件适当反应。”

便携式刺激工作组讨论一系列的选择在这两个极端之间。“硬件的软件接口(HSI)层将使各种抽象的软件替换测试,”解释说,公司的首席执行官Breker。这意味着你可能为低级测试专用软件,但替代实际的驱动程序软件在某个阶段的验证流程。这允许的进步打开软件环境和限制类型的硬件问题,可能会遇到当试图调试更高级的问题。”

Schirrmeister指向一些低级的类型需要解决的问题。“你可能要算出缓存和验证一致性。另外,你可能会关闭三个不同的区域权力在不同的时间。保持正确的醒来时一切吗?这就是约束PSS的解决方面。您可以定义场景权力领域可以以不同的方式和要求的工具提供的所有组合。”

但是一些问题可以藐视动态验证。“最常见的问题,人们面对僵局,”指出莫汉达斯·。“一切都可能是silicon-proven和改变的是一个简单的更新缓存中的层次结构,和突然发生这种情况。没有理解的复杂性系统级交互识别几乎是不可能的。”

形式验证已被广泛用于寻找死锁RTL,相同的技术应用到系统级将是不切实际的。“建筑形式是一种新颖的方法,利用详尽的分析能力的正式的情况下,探索所有角落”解释了罗杰·Sabbagh应用工程副总裁Oski技术。“通过使用高度抽象的建筑模型,我们可以克服复杂性障碍,使设计行为的深入分析。这形成了一个强大的组合,使有效的系统级需求验证。”

自动化
虽然没有一个容易解决的问题,分析该行业仍然寻找自动化工具,。“治之的最初目的是便于程序这些并发,异构系统,我们失败了,”Davidmann承认。“我们定义的api之间的任务,然后将模拟合成工具,测量结果,然后将任务映射到硬件。系统架构师都不准备支付足够的钱来把这个可行。”

“应用程序域和编程模型相互交织,“Schirrmeister说。“我们还没有弄明白怎么做通用计算程序,优化编译器硬件架构。”

但一个问题的一部分被成功自动化,这是一些市场的动态变化。“这是部分原因为什么不再仅仅是芯片公司,“ArterisIP的舒勒说。“半导体公司的客户做自己的芯片。制造自己的芯片的门槛降低。以前在芯片公司工作的人找工作在谷歌,博世,亚马逊和Waymo。”

Network-on-chip技术发挥着越来越重要的作用,尤其是对异构体系结构、区域有许多可能的拓扑结构,包括戒指、树木和网状网络。这些是保持所有并发的关键,在必要时,连贯。


图2:简单的网状网络。资料来源:维基百科

“你有当地的紧密耦合的记忆,如sram,混在一起处理元素,”舒勒说。“如果你有一个不规则的网状网络不同处理元素,您需要知道在哪里的手从一个处理元素在另一个内存。和神经网络,可以覆盖到网格上。”

这曾经是手动完成的,但随着复杂性的增长依赖自动化工具。

“NoC生成工具帮助填补的差距”,莫汉达斯·说。“他们为建筑师提供一个数学基础理解并行性、并发性和一致性。这是基于图论和帮助他们理解的依赖关系。给定一个规范的架构师,我们可以告诉他们是否它是正确的。我们也使假设分析——有多少不同类型的CPU我需要多少GPU港口,我需要多少其他元素在系统级和如何工作?我们提供的工具意义,告诉他们的性能将会是什么样子的约束。”

它是一个多层次的问题。“NoC公司创建的管道数据传播但你遇到的问题从哪里来使用,“断言Schirrmeister。“是功能的正确性,另一方面是性能。NoC人更关注确定如果网络的性能优化和可以依赖的功能发生了什么交易方面的正确性。验证使用,你需要场景的工具对压力的组合,找出什么是最好的组合。”

结论
系统设计和验证的大多数方面仍然是特别的。虽然可能只是少数人决定分区的软件和硬件,调度、同步、和建筑,这些决定的影响感到很多人用一些工具来帮助他们。

救援的路上,但EDA行业在这方面一再被烧毁和投资是试探性的。主要方法是找到方法来解决设计团队面临的“效果”,为建筑师提供小扩展更好地理解“原因”。这意味着它可能需要很长时间的好工具。直到出现这种情况,仿真的虚拟原型仍然工具箱的核心。



3评论

卡尔·史蒂文斯 说:

系统及其所有组件需要被描述为网络的输入、输出、触发事件和函数。这种结构可以被解析和调试,而无需首先定义软件和硬件功能。

输入和输出数据(值)和信号(事件/状态)。数据操作是算术(运营商/比较),信号是布尔(真/假)。布尔操作符,或者,异或和评估使用布尔代数的逻辑门或附近地区。如果其他/序列是容易出错,混乱,不应使用。

出于某种原因,设计过程中刚刚做更多同样的期待不同的结果。

从这两点:
1)系统增加多样性。“我们希望看到一个更大的使用异构结构系统和处理器架构,”迈克尔·汤普森说,高级产品营销经理在Synopsys对此DesignWare弧处理器。

2)Network-on-chip技术发挥着越来越重要的作用,尤其是对异构体系结构、区域有许多可能的拓扑结构,包括戒指、树木和网状网络。这些是保持所有并发的关键,在必要时,连贯。

异构体系结构共享的数据块的大小和内容比缓存一致性更有效是必需的,如果所有的内存是共享的,类似于面向对象的结构。

OOP类封装数据,不需要共享内存和缓存一致性在每个级别的访问。类是多态有一定程度的函数变化没有创建一个新的类每一个变化。

异构系统关联OOP程序哪里有设计工具和调试器。

然后有块和语句λ函数代表和抽象语法树SyntaxWalker可视化控制图和表达式求值顺序。

来吧伙计们,石头太硬挖这个洞更深。就看一看,看看周围CSharp / Roslyn编译器和Visual Studio已做了一些硬件世界只有梦想——是的,需要挖掘和心态的变化。

另一件事是,RISC cpu也不是最终的架构,因为它是可以设计一个计算机执行的if / else,,,,使用AST的语法和表达作业API输出。性能与FPGA加速器。

凯文 说:

http://parallel.cc——c++与细粒度的并行扩展。

我有IP挖出的洞,而无需重写你的旧代码。

凯文 说:

只是停留在错误的范例:SMP和RTL。一个已在全球范围内共享数据,另一个时钟——需要大量的同步和不应该在设计规范。

一个更好的模式并行系统设计是CSP(通信顺序进程)

https://en.wikipedia.org/wiki/Communicating_sequential_processes
http://usingcsp.com

特别是超音速本来可以CSP的路线在NoC合成,但错过了机会(又没有人了)。

留下一个回复


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

Baidu