为什么要采用多核设计及多核处理器之间的通信方式

sam99 Post at 2008/9/16 18:15:00

为什么要采用多核设计      

       英特尔公司将摩尔定律和Pollack准则(根据英特尔公司微处理器研究实验室负责人Fred Pollack的名字命名)相结合证明了一个观点。Pollack注意到每个系列的英特尔体系结构(从i386开始)在性能上每提高1.4到1.7倍,都会需要两到三倍的硅体积。概括的说就是性能的提升与复杂性是成正比的。在这两代的处理器中,性能提高了两倍,相应的复杂性也增加了四倍;速度加快了四倍,所需的晶体管数量也扩大了16倍。

      也就是说:如果设计一款两倍于原来大小的处理器,性能并会不增加到原来的两倍,性能大概只会作平方根的增长,所以尺寸加倍并不会带来同等数量级的性能增长,只会带来大概1.4倍于原来的性能,即增长40%。

多核设计之间的通信

      对于有两个或者两个以上的处理器同时位于同一主板中的多处理器系统来说,可以使用多种方法来实现(以双核为例进行基本原理介绍,涉及到的细节问题不做叙述)。

1、基于寄存器的多处理器通信机制

      两CPU之间跨接一个三态寄存器,来自于CPU1并经过译码器的写选通脉冲,可以将数据送入具有三态输出的数据寄存器中保存。同样,CPU2可以借助经过译码的读选通脉冲,将数据读入到处理器内部使用。

2、基于先进先出设备(FIFO)

       从概念上来说,除了用FIFO代替了通信寄存器以外,利用FIFO进行通信与使用通信寄存器进行通信几乎完全一样。具体来说在这种通信模式下,一个CPU用来执行FIFO的数据写入,另一个CPU则对FIFO进行读出操作。使用FIFO的特点是可允许CPU在其空闲期间按顺序从缓冲区中读出数据。大多数FIFO缓冲区都使用了其一个管脚来表示FIFO的状态。我们可以通过对该管脚状态的检测来确定缓冲区中是否有数据。

       使用FIFO缓冲区可以有效地缓解通信双方处理器的工作压力。只要FIFO缓冲区中的空间没有被数据填满,发送方处理器就可以在巴需要发送的消息一次送入该缓冲区后去处理其他事务。对于接收方来说,该处理器可以一次将消息读出,也可以根据缓冲区目前可能提供的数据量来分段读出消息数据。

       FIFO缓冲区存在的唯一缺点就是发送方无法了解接受方对消息的接受程度。只要某一方速度慢了或者停顿,另一个就有可能填满FIFO缓冲区。解决这个问题的方法就是利用报文级别指示器来控制数据的发送。具体方法不介绍。

3、基于双端口随机存储器

      如果需要在两个处理器之间进行大量数据传输的话,双端口随机存储器DPRAM也许就是最好的选择。DPRAM允许两个处理器对其进行共享。如果有两个处理器希望同时访问一个随机RAM,其中一个处理器就必须等待另一个处理器对RAM的访问借宿才能开始操作........待续

已有 1 位网友发表了看法