多核CPU如何实现异步协调?


8

我来自计算机科学背景,想要研究用于异步电路设计的过程演算

因此,我正在研究异步电路的当前实践。有很多文章说无法提高时钟速度会导致多核CPU体系结构。但是,没有人真正说过如何实现内核之间的异步协调。

我希望您确认/纠正有关当前多核CPU如何处理异步协调的以下假设:

  1. 每个内核具有独立的时钟信号,不需要彼此同相。否则,时钟信号分配问题将无法真正解决,是吗?
  2. 内核仅在编程级别进行协调。也就是说,在某些内存(RAM或寄存器)上进行测试和设置。而不是像使用会合电路的握手协议这样的底层协议。

1
大型单核CPU具有多个时钟,用于降低功耗。有些时钟是门控的,有些是动态降低的。添加另一个内核,当然它具有多个时钟。更容易的时钟分配是一个副作用,但不是多个时钟的原因。

2
看一下有关如何跨不同频率之间的时钟域的本文:w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50 2013年

1
(关于时钟信号分配:解决方案是所有叶节点从源头具有相同传播时间的缓冲树。您可以通过算法构建它。这不是微不足道的,但可以工作)
pjc50 2013年

1
缓冲树的缺点很多:它会消耗大部分电能,并且会消耗10-30%的可用区域。但是,正如我们的创业公司发现的那样,异步设计的主要问题是需要更改整个软件工具链以有效地使用它。由于制造成本和出现故障的风险,IC公司出奇的保守。
pjc50 2013年

1
@ pjc50 ISTR,某些网格布局,面向消息传递的处理器(可能是Tilera的处理器)具有从左到右和从下到上的时钟“流”,因为只有最近的邻居才需要直接通信(有点像各种全球异步本地同步)。
保罗·克莱顿

Answers:


1

您在数字电路理论中混合了两种独立的(正交)思想:异步电路和多核处理器。

异步电路:具有多个时钟且时钟是异步的电路(即,具有非恒定且不可预测的相位关系)。

例如,某些电路可能使用两个时钟,但一个仅是另一个时钟的2分频。这些电路不是异步的,因为两个时钟之间存在已知的相位关系,尽管时钟的频率不同。

您可能有一个单核CPU,它的异步时钟很少,而一个多核CPU,其所有内核都在同一时钟上运行(后者只是一个虚构的CPU,所有实际的多核CPU都有很多时钟,其中包括几个相互关联的时钟,异步时钟集)。

异步电路是数字设计中的一个主要主题。以上说明是基本的。

多核CPU:并行连接的微处理器(核心)很少,这些微处理器使用复杂的硬件和软件来实现高性能。

通常的做法是在时钟/电源/执行/等方面使内核尽可能独立。这允许根据系统的实际需求动态(运行时)调整CPU活动(即功耗)。

我的印象是,您要寻找的是对多核CPU的解释,而不是异步电路。

这个话题比答案中的任何内容都大得多。

不过,您的问题的答案是:

  1. 据我所知,不同内核使用的时钟具有相同的来源(可以不止一个:晶体,VCO等)。每个内核(通常)只有几个相互异步的时钟集。每个内核都有专用的时钟门控和限制逻辑,可独立于每个内核关闭或减慢时钟。同样,如果您仅对内核并行性的算法方面感兴趣,请忽略时钟(目前)。
  2. 您刚刚指出了内核并行性的主要方面-如何有效地并行运行多个内核。这个主题很大,包含硬件和软件解决方案。从硬件的角度来看,内核既可以修改公共存储器,又可以通过顺序逻辑以及在它们之间交换控制和状态信号。由于存在缓存,该图使很多事情变得复杂-我建议您从读取缓存开始,然后从缓存一致性开始,然后再从多核系统中的现金开始。

希望这可以帮助。


CPU必须以不同的速度运行这一事实并不意味着它们必须是异步的。保证信号不变时,在每个时钟周围都有一个窗口非常有用。即使两个模块的时钟速率不是彼此的倍数,由一个设备产生两个时钟也可能很有用,以确保它们永远不会切换得太近。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.