EEJournal

专题文章
现在就订阅

世界需要一种新的编程语言吗?

线性执行一个程序的处理器是不自然的。这是第一台计算机的冯·诺依曼和图灵的,部分原因是创建所需的资源甚至单个处理器是巨大的。它一直是电脑操作的方式仅仅因为“这是工作的电脑。“也许这有点不公平,但是如果我们训练成千上万的人认为的方式让他们开发的系统执行线性,那么很难让他们认为在其他方面。

但世界本质上是平行的。在任何社会,公司或其他组织,人们会在自己的领域的活动和与他人沟通。为什么会有这种忙乱多么困难是建立在多处理器系统,将执行吗?,更令人惊讶的是,为什么这个麻烦问题在嵌入式世界,我们一直在构建系统将并行度高了几十年?并行执行的不同元素不一定执行在一个多核处理元素,甚至在相同的处理器架构的多个副本,但所有的问题,目前长期痛苦的辩论的话题已经被解决在产品运输数百万。

的一些问题在实现多核架构选择相关,特别是处理器和他们的应用程序如何沟通。英特尔的决定通过高速缓冲存储器进行通信,例如,也备受质疑,最大的问号如何将扩展到几十甚至几百个内核。英特尔公司,该公司可能会发现解决这个问题的方法。但真正的问题是:人是保守的,,一旦培训在一个特定的思维方式,他们不愿改变。就是这样的一个特例,程序员将坚持不从他们的语言训练。

现在我们看到担忧编程并行系统的爆炸,引发部分英特尔的公开接受多核的方式来达到提高处理器性能在可接受的水平的电力消耗。在这一连串的新公司推出新的多处理器架构。所以人们正在寻找更好的方法来开发新系统,将现有的或遗留软件这些新系统。

首先把遗留问题。下周,我的同事,布梅奥,荷兰的公司将着眼于如何向量面料,开发了强大的工具来分析现有代码和parallelising它运行多个线程。其他人尝试这个,但他们遇到Amdahl法则,这表示,虽然你可能会显著改善通过parallelising执行代码的速度,最大的大小顺序部分parallelisation过程完成后仍是限制总体运行时改进。

本周,我更感兴趣的是如何开发新软件。到目前为止,主要的努力一直致力于增加并行结构现有的语言,而且,在嵌入空间中,这通常是C,这引发了一些有趣的问题,作为C语言已经庞大和杂乱。通常采取的路线是创建一个C的子集,然后添加所需的结构,把语言分成部分可以并行执行,为它们之间的通信。但当你开始看这些语言,很明显,许多被设计为运行在大型机器,甚至超级计算机,他们不适合嵌入式环境。(和韩德尔C生成硬件设计语言和设计仍在使用FPGA编程)。

好的,所以我们要从这里去哪里?塔克塔夫脱,AdaCore,毫不怀疑。他认为我们需要考虑一种新的语言,他一直致力于一个——他称之为滑翔伞。

给这一些上下文,塔夫脱已经存在。近四十年前他第一个UNIX机器上的系统程序员在野外,在哈佛大学。干预时间的他大部分时间都致力于Ada,包括建立一个的任务,而承认Ada在Ada编译器。编译器需要做的不仅仅是编译和分析工具,帮助他开始大楼改进优化。这些工具还强调了代码问题,他看着方式显示这些程序员。最后,他放弃了编译的东西,集中在代码分析、生产、在他创建的一家公司叫做SofCheck,一组为Java和Ada静态代码分析工具。

AdaCore他的许可,包含SofCheck检查员进入CodePeer工具,,早在2012年,收购这家公司,塔夫脱语言研究的主任。他对他的工作在滑翔伞(平行规范和实现语言)。

他致力于滑翔伞的理由是,他看见,将很快需要开发系统几百个内核上运行。他认为,今天的语言不仅要发现很难扩展到应付这种级别的并行性,但在许多语言结构使其确信他们不会合适。他特别parallelisation断路器列表包括:

全局变量
垃圾收集全球堆
参数混叠
运行时异常处理
显式线程
明确的锁定/解锁
明确的等待/信号
竞态条件

最糟糕的是…

指针

如果你是吃饭和塔夫脱想赶上吃饭,问问他有什么问题在并行环境下的指针。足够的时间来吃,听。所以滑翔伞排除指针以及所有其他邪恶的语言结构列表。

(补上这些论点滑翔伞的博客也链接到下载的语言和库等)

滑翔伞的目的是熟悉人用来处理类似Java或c++。它使用一种面向对象的模型(取代了指针和扩展和收缩对象)。但最初的区别是,它需要程序员努力编写顺序代码,默认模式是平行的。

编译器显然是语言不可分割的一部分,与塔夫脱的经验开发编译器和代码分析工具对编译器的错误检查和调试。实际上,高性能和专业代码分析器以及一个编译器,它看起来,和消除竞争条件和其他运行时错误条件,如使用null值或未初始化的数据,索引数组外,数字溢出,悬空引用,等。编译器还创建了数百micro-threads,可以分配给多个处理器/核心执行。

显然,塔夫脱是一个伟大的滑翔伞爱好者;这是他的创作。由你进行仔细检查,看看是否有可能满足您的并行处理需求。但不管未来滑翔伞,程序员必须要咬紧牙关,接受,如果他们要有效地开发项目为嵌入式应用程序部署大规模并行处理,他们将需要一种新的语言。将会有进一步的现状的努力试图迫使现有语言并行处理模式,但这些都是低效的,可能会需要集中清理,尚不存在的工具。最大的担忧是,识别需要的是将引发爆炸的新语言,进一步使得水和开始更多软件的宗教战争。

9的想法“世界需要一种新的编程语言吗?”

  1. “线性执行一个程序的处理器是不自然的。“嗯,没有。逻辑证明是如何工作的,但更重要的是,它是你如何写一个列表的指令为别人做点什么。做这个,然后做;如果你看到这种情况,做其他的事情;做这个N次。等。

    我们有两个串行和并行活动很长一段时间,确实。有行动,做一个任务列表,有甘特图图表并行活动来完成一个项目。(或所谓曾经他们在罗马时代,等等)。

    在机床控制世界,CPU的一步步的任务,和PLC处理并行的并行连接到继电器的接触,真正的时间。

    PLC是编码的并行活动梯图,进化到功能块(记得示意图?)虚拟仪器和Matlab / Simulink仿真。

    主要的问题是使用什么样的抽象代表并行活动。最近的问题在计算机数据流,在并行交互的数据流和编织在一起生成输出。密切相关的问题是这种情况的图形表示形式,这样你可以看到流流在时间和互动。

    因为如果时间不重要,你不需要多核!

  2. 如果我们需要的是一种新的编程语言来解决多核编程问题就解决了年前。有,几十个并行编程语言创造了过去几十年。到目前为止,都没有成功地走向主流。

    有一个维基百科页面列出了并行和并发编程语言。我数85。但失踪至少十几个模糊的麻省理工学院出来的。

    我钦佩塔克的热情,我希望他一切顺利。但它将超过另一个伟大的编程语言来解决这个问题。

  3. 同意,线性程序的执行是不自然的生活相比,本机进程和问题。线性顺序的方法,然而,是一个最合适的方法操纵字符串编码的符号来解密消息,这是阿兰·图灵的原始动机发展自动化的理论计算。计算也可以产生所需的一系列符号从任何给定的字符串,通过应用适当的布尔和算术运算,转换和翻译。计算可能是最好的方式来操纵符号字符串,无论内在意义。计算的主力是数据管理,数据处理,因为它是更常见。

    我们需要另一个编程语言试图克服的固有局限性线性顺序数据处理器,或者是编程和计算可能不是最好的方法来达到下一个水平在我们的驱动自动化一切吗?

    自动化,最有用的,显示器和控制一个物理过程。它相当于机械决策、评估和行动等问题:这个过程需要调整继续适当的功能,维护人员应提醒,或者过程应该停止,以确保人员和设备的安全吗?

    目前,相同的线性顺序教员,所以善于做繁重工作的数据处理的应用对物理过程的管理。但数据处理流程管理不是一个合适的工具,这是最好的处理parallel-concurrent时尚。数据处理的解决方案,当应用于流程管理,变得复杂,总是事后发生,由于轮询和取指令和执行(软件)延迟。使用数据处理流程管理就像让你的评级的装配工人(他们必须遵循明确的指令的每一步)暂停他的劳动和作为经理监管职责时是必需的。

    最正确的流程管理需要一个本能和立即响应,无论whenever-as处理事件和条件发生变化。更好的流程管理从而比线性顺序的数据处理要求不同的工具。

    我提出一个更合适的流程管理工具,会有优越的管理素质和能力:

    本机parallel-concurrent:立即反应过程管理事件和条件的变化而不影响其他的监管职责。它可以适应变化和额外的任务在不影响或修改现有的功能。

    兼容:它可能存在与线性顺序数据处理器,但会有单独的设施为独立操作。

  4. Dwyland写道:“在机器控制世界,CPU的一步步的任务,和PLC处理并行的并行连接到继电器的接触,真正的时间。”

    它不是那么简单:在现代plc,扫描输入,执行的逻辑,输出条件执行了所有的计划在一步步微处理器或微控制器。结果可能是吹捧为“实时”但它是线性顺序操作就像通用计算机。(检查PLC *延迟*问题。)看到http://falconlabs.com/PLCTIPS.htm

    虚拟仪器/ Matlab / Simulink仿真例子本质上是计算机(逐行)程序,。

    查理

  5. 真正的;这里有一些阴阳。plc实现继电器梯形图,原展示了如何连接整个房间的接触和继电器控制一个汽车组装线。顺便说一句,这就是“继电器架”一词的起源。他们举行了继电器被剑柄。继电器和接触所有独立和并行工作。

    PLC梯形图转换成连续的代码为1比特,8指令计算机。每个梯形图元素成为了一个序列,例如:“如果联系13是封闭和联系245是开放的,打开继电器K561,“3-instruction程序序列。完整的梯形图作为一长串的实现这些指令。

    的关键是,你可以通过8000个比特指令在1/2周期60赫兹的频率。自原始继电器跑60 Hz交流,PLC是有效的和原来的一样快,平行组继电器。

    PLC使用重复的一组连续的指令来实现并行算法模型。它只要每个通过序列的执行时间是足够快的顶部出现瞬时与所实现的算法。PID控制回路是该方法的一个例子。在PID的情况下,订单的更新时间是100倍的环路带宽保持相位延迟低于5度。

    尽管plc和PID回路可能是连续的,它们是实现并行设计。面临的挑战是如何最好地表示这个多个并行线程的抽象。

    虚拟仪器/ Matlab / Simulink仿真可以实现为顺序代码在一个电脑,在多个并行计算机或真正的并行硬件在一个或多个fpga,根据时间要求(传播延迟)的设计。,你可以很容易地从一个配置转移到另一个贸易硬件性能,因为问题是并行表示。OTOH,你和单线程通常做不到这一点,连续的计算机程序的困难将程序分解成块平行。

  6. Dwyland,如果“虚拟仪器/ Matlab / Simulink…并行表示,“(把它)所面临的挑战是什么?

    没有这些工具已经完成,还是有一些剩余的解决?

  7. 早期评论者写道:

    “如果所有我们需要的是一种新的编程语言来解决多核编程问题就解决了年前。有,几十个并行编程语言创造了过去几十年。到目前为止,都没有成功的主流。”

    有特性(或者,缺乏某些障碍),使滑翔伞不同于大多数其他数以百计的并行编程语言。但是你肯定是对的,有一种新的编程语言是不够的,即使你买我认为它是必要的,解决多核编程问题。

    不要塞一个竞争对手,但如果你想要更多的细节滑翔伞的勇气,您可能想要查看的时间越长EETimes文章:

    http://www.eetimes.com/design/embedded/4375616/ParaSail-Less-is-more-with-multicore

    为更多的细节,看看博客,或下载当前版本(博客)的指针:

    http://parasail-programming-language.blogspot.com

留下一个回复

有特色的博客
2023年6月9日
在这个知识辅助的博客,让我们谈谈基于开关电容电路的仿真和capacitance-to-voltage(式C2V)转换器使用各种可用分析下拍摄使用幽灵射频牛顿法。这个博客是描述的视频……
2023年6月8日
学习我们的EDA工具加速5 g SoC设计客户Viettel 5 g基站芯片设计和驱动5 g推出在越南。后客户关注的焦点:Viettel加速其前5 g SoC设计Synopsys对此ASIP设计第一次出现在新H……
2023年6月2日
我刚听到的东西真的给了我一定的思考时间,死亡的事实,每个人都经历两种形式(如果让我选择,我宁愿没有经验甚至)....

有特色的视频

RTL Synopsys对此解决方案审核权力分析

Synopsys对此

Synopsys对此的行业领先的能力分析解决方案建立在PrimePower技术,使RTL勘探早期,低功率实现和权力验收节能soc的设计。

了解更多关于Synopsys对此“节能soc的解决方案

了纸

EC解决技术简单

节奏设计系统

的节奏®摄氏™EC解决支持电子系统设计师最具挑战性的热管理/电子冷却问题迅速和准确。利用强大的计算引擎和网格技术,设计者可以模型和分析流体流动和传热的即使是最复杂的电子系统,确保电子冷却系统是可靠的。

点击阅读更多

以注入式教学法亚博里的电子竞技

从你的JFET直接驱动:越来越多汁
注入式教学法在这节课中,乔纳森•道奇从亚博里的电子竞技UnitedSiC(现在Qorvo的一部分)和阿米莉亚道尔顿讨论如何充分利用碳化硅JFET晶体管。他们深入研究这些创新的晶体管的细节包括他们各是什么样子,如何控制自己的速度,以及如何结合共源共栅和直接驱动的JFET的好处在你的下一个设计。
2022年6月29日,
39704的浏览量
Baidu