中文 英语

并行性的限制

工具和方法有所改善,但是问题依然存在。

受欢迎程度

并行使用在天气模拟工作的超级计算机的域或钚衰变。现在大多数soc架构的一部分。

但是多么有效,有效和广泛的并行性真的成为吗?这个问题没有简单的答案。即使是双核处理器芯片上的实现,结果可以有很大区别,软件应用程序,操作系统,和用例。工具改善,某些功能,可以并行完成更好的定义,但差距仍然在很多领域没有简单的方法来关闭它。

说,至少有一个更好的理解的问题依然存在,如何解决这些问题,即使这并不总是可能的或具有成本效益。

”来实现并行粒度必须在某种程度上代表同时需要做什么,”约翰•Goodacre解释技术和系统,研究主管手臂。“实现并发性,您需要确保没有需要做什么之间的依赖关系。每个粒度级别的,有方面很难维护和确保没有依赖关系,因此规模。”

与依赖关系,有必要同步或维护一些独家访问。“时间的百分比系统需要管理这些依赖关系限制了并发性的水平,因此可伸缩性的水平通过并行。这是记录在Amdahl法则。硬件和软件都是用来表达并发性在不同级别的粒度并行性,从晶体管完整的系统,从编译整个应用程序框架。”

并发和并行使用时几乎同义术语首次引入并行体系结构。最初的想法是,复杂的问题可以分成更易于管理的小公司。

“如果你看看如何架构已经进化,并行和并发性意味着不同的事情,”说Anush莫汉达斯·,营销副总裁和业务发展NetSpeed系统。“回到CPU-centric天,我们有一个公共汽车,公共汽车的问题是,只有两个人会说话。当你谈论并行或并发性,他们的想法是两个人怎么能跟另外两人在同一时间。我们怎样才能获得吞吐量?并发性,这是并行性,人们用来与横杆。他们从那里去network-on-chip,多个代理可以与多个其他代理。”

并行和并发性已经在不同的含义的范围问题进入更好的关注。“因为我们仍在CPU-centric世界,人们使用内存分割成独立的事情。有一个CPU分区,GPU分区,DSP分区。在该地区,你可以访问内存,但任何时候你想要并发或并行性在不同的内存段你遇到的问题。根本原因的缓存,你想要所有这些不同的计算引擎——视觉计算引擎,gpu, cpu -拥有相同的视图的系统内存和如何访问。这是缓存一致性。如果你沿着这条线的定义,它不是解决。它被解决了正如我们所说,“莫汉达斯·说。

兰迪·艾伦,高级研究主任导师图形表示同意。“其实不难使事情并行运行。试图找出如果事情可以做在同一时间不是一个简单的问题,但它不是一种翻天覆地的问题,。你会发现在平行世界中,用户外出,他们把一个应用程序,他们并行化,它看起来很简单。所以他们说,‘我要运行它,它会运行快10倍或快20倍。“但当他们放下它运行3 x慢。它运行3 x慢的原因是事情只能跑得一样快,因为他们有操作数或数据输入。当你并行化,你不仅要把事情并行运行,但你得到的数据在正确的时间正确的地点。这就是缓存一致性。十有八九你鞭打,等待结果来自其他方式或通过内存或因为缓存得到恢复,这就是当你慢下来。”

添加Pulin德赛、产品营销总监、IP组节奏:“来定义并行性的方法之一是说,‘我这SoC架构设计,我看着并行哪里有异构环境的cpuSoC与ARM处理器,GPU,以及DSP。你有三个处理器单元,它们在并行工作,尝试做不同的事情。然后你开始看下面,如果有类似的八臂核心坐在那里,从我们的DSP的角度来看,我可以在多个DSP内核。在异构环境中均匀的环境。在里面,在DSP本身,我们实现大量的并行性。整个概念的SIMD(单指令多数据),我们做64 -,8位SIMD +很大的指令。我们可以在一个单一的周期执行320年单周期操作,或者我们可以做ALU基因操作和存储操作。并行性,不仅单操作,但是512或256铝合金生产+ 64负载储备并行操作,我可以做。”

并行性是解决问题吗?
虽然它很好理解,解决并行性问题比它看起来要困难的多。

“异质性增加了另一个层面的复杂性和异构soc可以不是同一应用程序并行化,“说,公司的首席执行官治之软件,指出有两种类型的并行时出类拔萃。其中一个是对称多处理问题,很大程度上解决了。非对称多处理硬件不是。当谈到软件,增加了一套完全不同的问题,可以使任何进展硬件问题悬而未决。

今天soc由许多平行但单独的处理器。“他们不像应用程序处理器,”Davidmann说。“他们小,控制处理器,他们可能只是做控制或他们可能作为加速器做特定的函数算法的硬件,不管是视觉压缩或加密或一个FFT(快速傅里叶变换),也许在DSP级别或者进一步。”

这就是被硅在过去的15年里,随着越来越多的强调硬件软件,因为它可以更改致力于硅。为特定的函数创建了一个市场现成的处理器,如Synopsys对此“弧处理器和节奏的需求方。这些设备专注于特定的加速度或功率控制等功能。

”一个SoC你主要核心应用程序,但是你有其他子系统,“Davidmann说。“如果你看今天,从一个电话物联网类型的设备,你有在那里吗?你有一个WiFi芯片。这是一个处理器。你有一个蓝牙芯片。这是一个处理器。你有一个图形引擎。这是一个处理器。你有权力控制。这是一个处理器。你有一些模式分析ADAS系统。 That’s a processor. They might be DSPs, or they might be ARM, MIPS, ARC or Tensilica chips, but what you have on your chips today are many processors—tens of processors, if not more—apart from your main application processor.”

并不是所有的软件都可以并行
这是今天的主要差距之一。硬件可以复制创建一个数组相同的处理器。开发软件,可以在这些处理器解析操作,然后把结果没有巨大的开销的权力或性能,是更加困难的。并不是所有的问题都可以分解成离散的部件,甚至当他们,并不是所有人都是平等的大小和复杂性。

“多线程刚出来的时候,就撇开多个并行引擎,即使你有一种类型的CPU,编程,甚至真正的倍数,真的很艰难,”库尔特·舒勒说,负责营销的副总裁Arteris。人们用“有C库。POSIX可能是最受欢迎的。有自定义库和自定义工具和自定义编译器。例如,英特尔已自定义编译器为其x86核心。而不是工程师必须手工编写的东西,说,“这部分的程序可以运行在与这些其他事情,所以我要手动把它在一个不同的处理核心,“它将自动尝试做一些。它还将使用硬件加速代码。”

这一点,另一种并行处理器处理编写软件提供商提供,在节奏的视觉处理器,自动向量化编译器。这是除了某些函数库。他们一直在优化,以确保实现并行操作,让机器忙在每一个周期,以及达到最大并行操作的预期,德赛说。

但并不是所有的软件都是一样的。对于一个操作系统,如Linux,并行性相当简单。经常有大量的工作要做,每个工作都是相对独立的,线性的。因此,这些工作可以分散在不同的处理器或处理器核心。但也有许多其他类型的软件stack-embedded rtos和司机、中间件和应用程序更加难以并行运行。

“只要你能在小块的软件,同时,还有不是问题,“Davidmann说。“但是如果你有需要并行程序,如果你有需要分解算法,这是当你陷入困境。POSIX线程的方式,所有这些Linux机器,Unix机器,Windows机器和一切工作。他们之间交流的事情。你必须锁的事情,如果你试着把程序分成组件和运行它们的线程,你运行的风险,他们不是真正的并行和不能正常沟通。问题是编程语言没有给我们这种并行性。很难写出好的并行程序,我们的问题是,在学术上,我们有语言不够好。”

复杂的是,大多数项目在嵌入式世界是用c编写的计算机和物联网设备,用Java编程完成,这是一个面向对象的编程语言。利用并行硬件正常,需要更好的编程范式。

人类的局限性
舒勒认为,语言和库需要更改为软件开发人员更容易创建并行程序。“问题是人类想不并行。一切都是一个连续流。他们真的很难做,如果你这样做很多在编程,它变得非常复杂。它变得混乱,一个人不能理解它。不管你做什么,让它更容易明确说这些东西,这些东西是并行的,这些东西都不编码器必须提前知道,在代码中。这是真的很难做。下一步是要做一些自动化和工具能够看看程序员的意图和自动推断这些东西是并行的,这些东西没有。所以当我完成编译工具链我会让编译器知道这东西可以运行在不同的核心。”

如果是一个人很难弄清楚,多少的一个挑战是人类创建自动化吗?

“编译器已经处理,但对一个特定的编译器生成机器代码指令集架构,”舒勒说。“所以如果你有一个x86处理器和一个ARM处理器在同一系统,你还是有两个不同的编译器,你必须使用它来创建软件在这些设备上运行。你不能有一个软件工具链。你有不同的软件工具链。如果你有一个英伟达处理器,他们有自己的工具链。有一个编译器,将你写的软件,不管它是C或Fortran等等,并将这些数据放入字节码/机器代码,NVIDIA GPU可以理解。所以在编译器级别,他们可以尝试添加功能来自动并行化/ vectorize事情多核运行相同的指令集,这是软件问题,和一个单一类型的硬件问题。当你扩展指令集架构的不同类型——一个DSP有不同的编译器比x86和软件工具链,或一只胳膊,或图形处理器,那么就真的疯了。”

结论
每十年左右的时间在过去的半个世纪里有大将添加更多的并行性推向更多的计算机体系结构。虽然这对于某些应用程序,比如数据库和视频/图像渲染,以及一些操作系统函数和虚拟化软件,问题仍未解决的许多软件的实现。

一些业内专家认为,变化是未来,指出,在许多方面已经取得进展。但这是否变成一个巨大的变化,还是爬和改进,需要判断。尽管所有的时间和精力投入这一问题,它仍然是一个没有完全解决。计算元素被添加到设备,一个有效的解决方案可能更加难以发展。

有关的故事
异构多核头痛
使用不同的处理器系统中,功率和性能,但它却使缓存一致性更加困难。
有多少核心?(第2部分)
第2部分:扇出和2.5 d将会改变内核执行和怎样使用它们;混合架构演变。
有多少核心?(第1部分)
第1部分:设计团队正在重新思考正确的数量和类型的核心,他们需要多大,和它们是如何组织的。



留下一个回复


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

Baidu