在公路上,「禁止超速」的标志处处可见。
马里兰州140号公路上有大量巡逻车来回,你当然可以超速,不过很快就会收到罚单。
然而,有一些限制是人们如何努力都很难打破的。最先跃入脑袋的自然是光速。不过,多处理器应该也算是其中一种。安达尔定律(Amdahl’s Law)已经告诉我们最大加速公式:
其中的f代表着无法平行处理的问题比例,n是处理器数量。在一个系统中,大约只有50%的问题可以平行执行,即使用再多的CPU,你所能得到的执行时间,依然只有你所增加的处理器的一半。
Gustafson定律(Gustafson‘s Law)则认为安达尔定律过于保守,并指出有时候问题出在平行部份的纯量处理要比在序列部份来得快。Google的Pagerank演算法就是一个例子。不过我很怀疑,在大多数的嵌入式系统中,Gustafson定律并不大合用。
不过,我想在许多情况下,安达尔和Gustafson必然都能保持乐观态度,特别是在对称式多核心处理器的运作方面。这些处理器都拥有两个或更多的相同核心,每一颗核心都拥有自己的L1快取记忆体。这些核心们也共享L2和通用记忆体汇流排。若没有L1,这些核心可能会瘫痪甚至无法使用。然而,供给这些核心的快取记忆体容量毕竟非常小,通常都只有32KB而已。而看看L2,情况可能更糟,因此推动了对主记忆体性能提升的需求。试想多达10几个处理程序都处在等待情况,若此时再多加入一颗需要记忆体资源的CPU,那么汇流排竞争的情况就会更加严重。不过,由于这些状况都是高度不确定,而且其中一部份属于非常特定的问题,因此很难对它们建立精确模型。
为此,美国桑迪亚国家实验室(Sandia National Labs)的研究人员提出了一些有趣的资料,显示在传统平行问题影响下,多核心的优势会快速减少。在双核心到四核心的处理器中,部份执行时间会严重变慢。而到了八核心,情况会加倍恶化,而且没有任何提升迹象。核心愈多,系统就愈慢。一款64核心解决方案显示系统性能比四核心系统降低了一半的数量级。
许多主要的半导体供应商都在开发多核心处理器,在某些应用中,多核心确实可在速度和功耗方面带来显著优势。但我仍然认为,多核心的优势有些被夸大了。记忆体频宽是一个巨大限制。采用非对称式多处理技术通常是不错的解决方案,当然,这还必须视待解决的问题性质而定。
最近,Venray Technology提出了一种新的处理器技术,看来似乎能解决记忆体频宽问题。有别于传统上为 CPU 添加 DRAM 的做法,这家公司反其道而行,为 DRAM 添加 CPU。该公司开发出了一种超小型(仅具备20K电晶体)处理器,能与记忆体紧密整合。
将四颗这种微型核心与64MB DRAM 紧密排列的组合,其CPU电晶体总数仅占记忆体的0.01%而已。Venray的公司网站上仅提供了部份技术资讯,不过这个想法相当引人瞩目。