BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #38454同步于 2010/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

单线程进程如何拆分为大量子线程。。。

zxsword
2010/5/22镜像同步5 回复
先申明一个观点:硬件和软件在逻辑上是等同的。(tanenbaum说的) 嗯,因为是软件版的贴,硬件就是固化的软件,嗯嗯,全部都是软件~~ 之所以提前申明,是因为想说明一下,这个贴不算是开启无关话题 ------------------------------------------------------------------- 今天上自习时,读到这么一段话: 正如过去已经发生的,硬件的发展常常领先于软件。多核的时代已经来临,但是我们还不具备为它们编写应用程序的能力。现有的编程语言并不适合编写高度并行的代码,同时适用的编译器和调试工具还很匮乏。几乎没有几个程序员有编写并行程序的经验,而大部分程序员对于如何将工作划分为若干可以并行执行的块(package)知之甚少。同步,消除竞争,避免死锁成为了程序员的噩梦,同时也影响到了性能。信号量(semaphore)并不能解决问题。除了这些问题,什么样的应用真的需要使用数百个核尚不明确。自然语言语音识别可能需要大量的计算能力,但这里的问题并不是缺少时钟周期,而是缺少可行的算法。简而言之,或许硬件开发人员正在发布软件开发人员不知道如何使用而用户也并不需要的产品。 摘自tanenbaum,现代操作系统,多处理机系统一章 ------------------------------------------------------------------- zz单线程软件支持多核心?Intel推新技术zz 微处理器正在多核心的道路上不断发展,但应用软件的多线程支持却严重滞后。为了提升单线程软件在多核心处理器上的性能,Intel最近提出了一种新技术“Anaphase”(意为细胞分裂的后期)。 Intel巴塞罗那研究院提出的这种技术从硬件、软件两个方面着手,通过多种不同算法在多个核心之间对单线程应用进行自动分配,从而大大提升多核心处理器的单线程性能。 该技术拥有一系列硬件机制,可将原始程序拆分成大量子线程,并在一套经过改良的多核心系统中运行。这套系统的主要机制包括:支持不同版本、检测线程间串扰、重组原始执行次序、检查架构状态、处理恢复错误拆分。 如果可能的话,未来的处理器内核将会集成一个新的硬件单元,称为“内部核存储一致性模块”(Inter-Core Memory Coherency Module/ICMC)。 Intel声称,根据SPEC2006测试,这种软硬件结合的新技术相比于此前的纯硬件机制在整体性能上可以提升10%,加入所谓的“微小核心”(tiny-core)机制后单线程性能更是平均大幅提升41%,部分程序的速度甚至达到了原来的2.6倍。 考虑到Intel已经推出48核心处理器,Larrabee图形芯片也会采用大量x86核心,这种多核心单线程优化技术还是很有用武之地的,而且值得一提的是,AMD下一代处理器架构“推土机”(Bulldozer)也有着类似的设计理念,每两个核心被紧密联系在了一起。 不过现在Anaphase还只是一个试验性项目,如何集成到多核心处理器中还正在进一步研究之中。 ----------------------------------------------------------------- 看来Intel无法忍受软件界的对于它心爱的多核芯片做出的缓慢反应了,不过很好奇,究竟是什么完美的算法来解决诸如胡扯信号量,同步,消除竞争等等等等的问题呢?Intel究竟是如何拆分单线程为大量子线程呢?不论硬件或者软件,逻辑上是等同的,都是某种算法的实现,是什么呢?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
dragon2000机器人#1 · 2010/5/23
编译器搞起。 还记得安腾的EPIC吗?
jmpesp机器人#2 · 2010/5/23
【 在 zxsword 的大作中提到: 】 : 先申明一个观点:硬件和软件在逻辑上是等同的。(tanenbaum说的) : 嗯,因为是软件版的贴,硬件就是固化的软件,嗯嗯,全部都是软件~~ : 之所以提前申明,是因为想说明一下,这个贴不算是开启无关话题 : ................... 其实不得不说 如果软件并行思想没解决 那么硬件必然也是无法实现的 intel的那个并行机制如果真的很优良的话 那么取之为软件所用又何尝不行呢? 但目前既然软件在并行的一些处理中做得不太好,那intel的硬件并行机制又如何能真正的处理好呢?持续怀疑中。。。
everdie机器人#3 · 2010/5/23
嗯嗯,全部都是软件~~
dragon2000机器人#4 · 2010/5/23
其实并行也是分层次的,机器指令级的并行已经相当成熟了。CPU内部的指令并行冲突,早已有一套硬件解决机制,放在软件程序里面会达不到那样的性能。 我们都已经知道编译器优化的作用,例如把变量放在寄存器中之类。 对于单线程的并行优化,我并不怀疑Intel的编译器会把多核CPU当作一个拥有大量寄存器、运算器的巨大CPU来安排资源,恨不得将所有变量都从内存搬到寄存器上。 甚至有可能让所有程序分支都同时执行,最后丢弃分支条件判断不正确的结果,这样就不会因为CPU流水线断流而影响性能。 至于更高层次的并行,诸如MapReduce之类,当然还是需要程序员来做。正如编译器不能代替程序员去设计算法。 其实并行计算不仅仅限于多核CPU。有兴趣不妨关注一下OpenCL。现在的协处理器早已不是当年的80387,现在已经有GPU、DSP、Cell等等器件。
zxsword机器人#5 · 2010/5/23
指令级并行呀,确实挺成熟了,看过一个循环展开的技术就是为了充分利用指令级并行的。关于分支预测,记得貌似以前看到过那一款的CPU分支预测准确率是95%来着,现代处理器都应该做的挺好。不过指令级并行仍然是在一个核心内部的,不可能几条指令分给不同的CPU内核,与多内核适应的应该是线程级的并行,转载的文章中Intel提到的新技术就是关于这个的。 如果软件并行思想做的还不够理想,Intel又是怎么做的呢?如果有好的思想,那自然软件界也可以使用了。对Intel这个新技术有点怀疑。。。 不晓的看点分布式系统并行算法诸如此类,对将来找工作是不是挺有用的唔,哎 【 在 dragon2000 的大作中提到: 】 : 其实并行也是分层次的,机器指令级的并行已经相当成熟了。CPU内部的指令并行冲突,早已有一套硬件解决机制,放在软件程序里面会达不到那样的性能。 : 我们都已经知道编译器优化的作用,例如把变量放在寄存器中之类。 : 对于单线程的并行优化,我并不怀疑Intel的编译器会把多核CPU当作一个拥有大量寄存器、运算器的巨大CPU来安排资源,恨不得将所有变量都从内存搬到寄存器上。 : ...................