接上文

  异步逻辑设计

  从理论上说,使用异步逻辑设计有助于缓解许多棘手的设计问题。不再进行时钟分配会节省电能和设计时间。许多功能构件由于具有同步的性质很容易重新使用和移植到新的处理技术中。整体效率应该得到改善。这些不仅是潜在的好处,而且这种潜在的好处还不小。因此,为什么不更多地使用异步逻辑设计呢?大多数设计都没有异步逻辑设计。而且主流设计中采用异步逻辑设计的很少。

  目前,异步逻辑设计基本上是很难设计和测试的。造成这个问题的原因部分是由于缺乏经验,部分是由于缺少制作可靠的、有竞争力的异步逻辑电路的工具。换句话说,异步逻辑设计需要在高性能CPU领域有很多可以使用的尖端的研发成果。正常的逻辑电路由于已经广泛应用,很自然地得到了更多的研发努力,使异步逻辑设计很难追赶。

  因此,不要指望主要芯片在短期内多数采用或者全部采用异步逻辑设计。目前还没有芯片开始采用这种设计。然而,还有一些很容易取得研究成果的领域。在这些领域,设计和测试的努力相对较小,但是,回报却特别巨大。

  在多内核设计中,采用异步逻辑设计方法把每个CPU内核、二级/三级缓存和I/O逻辑电路隔离开来能够使设计更容易,并且可能使设计速度更快。这是一种庞大而细致的方法。采用这种方法,你可以得到由异步逻辑电路隔离开来的异步逻辑电路的小型构件。这意味着每一个异步构件都能够以完全不同的时钟速度运行,并且与芯片其它部分的相位不同。使用异步逻辑电路在构件之间进行通信意味着不同的时钟域仍然能够可靠地进行通信。

  由于异步逻辑电路主要涉及传输数据问题,实际的逻辑电路总数很少,因而很容易设计。一旦这个技术成熟,其最终的结果是显著节省设计时间,因为时钟分配应该更简单。这种技术的成熟还能够让人们更容易地以更高的时钟速度运行这个设计。实际上,提高连接不同构件之间的所有长线路的运行速度并不是一件轻松的事情。正如本文指出的那样,异步逻辑电路会做得更好。

  从长远看,使用简单的CPU内核制作完全异步的CPU内核会更容易。制作一个同Niagara芯片上的一个内核同样简单的100%异步版本的内核要比具有乱序执行功能的超大规模设计容易得多。在拥有超简单的Niagara设计的同时,Sun也在积极开发异步技术,因此,看这些厂商在做什么是很有趣的,尽管开发这种技术的并不仅仅是这些厂商。

  每个内核的线程

  迄今为止,几乎所有的SMT设计都只有两个线程。他们为什么不使用更多的线程呢?每个芯片拥有更多的线程意味着更多的逻辑电路和更多的耗电量,额外的复杂性可能会给时钟速度或者管线级数(pipeline stages)的数量增加压力。所以,如果单线程功能是一个主要的问题,每个内核采用更多的线程是不会有帮助的。虽然更多的线程意味着内核的延迟敏感度低,但是,这还意味着平均缓存命中率低。缓存命中率对系统带宽有更高的需求,并且能够限制整体的性能。

  更重要的是,从每一个线程中获得的性能也会很快减少。Xeon芯片上的一个额外线程能够增加大约30%的性能,但是,增加到4个线程只能额外增加20%的性能。然而,支持4个线程可能会迫使某些设计做出改变。这种改变可能会降低性能。每个额外的线程如何增加性能依赖于基本的CPU内核的效率。每个运行周期能够发布许多指令的“braniac”结构的CPU内核在实践中很少这样做,留下的缺口可以让其它线程弥补。“Speed demon”(高速工作)设计会在每个周期留下更少的小缺口,但是,由于缓存遗漏引起的更多的处理过程中断会留下更大的缺口。

  相比之下,TLP优化的设计可以拥有像目前的“肥”内核那样的3路或者4路内核。但是,它们改善每个线程的IPC(进程间通信)的功能很少。乱序执行逻辑电路、分支预测、指令发布和执行逻辑电路都会更简单。它们要依赖额外的线程填补所有的执行缺口。这将使这种设计更简单地支持更多的线程和增加它们的益处。

  我预计,“肥”或者相当“肥”的CPU处理器在今后几年里将是2个线程的SMT(同时多线程),但是,最终将发展到4个线程。我预计,大多数TLP优化的设计将从4个线程开始。有些设计最终将发展到8个线程。我预计,在本十年内不会出现16个线程的通用的服务器。不过对于某些更专业的设计和嵌入式任务来说,这种事情已经发生了。例如,Cray公司的128个线程的“MTA”处理器。这种处理器每一个时钟周期转换一个新的线程。