在计算机体系结构中,避免热点有哪些技术?
在基于多级网络的共享内存系统中,成千上万的处理器可能会尝试访问同一个内存位置。这个位置被称为热点,会显著增加互连网络的延迟。当两个处理器尝试访问相同的内存位置时,无论使用哪种互连网络(交叉开关或多级网络),它们的消息都会在其中一个交换机中发生冲突。它们到达交换机的两个多个输入端,但需要从相同的输出端出去。
排队网络通过使用能够容纳少量消息的队列存储,暂时影响交换机中的第二个消息。尽管有交换机队列,但排队网络很容易出现网络饱和。实验表明,即使只有一小部分访问针对特定内存位置,热点的存在也会影响不仅是请求访问热点的处理器,还会影响尝试使用网络的其他处理器。
等待的消息占用交换机资源,限制了来自其他处理器的消息对这些资源的可用性。结果,额外的消息被阻塞,占用更多资源,热点饱和以树状方式向网络回传,如图所示。

非排队网络拒绝第二个消息,以便无效消息退回并释放网络。这使得需要不同路径的其他消息有机会通过网络。拒绝冲突消息会将网络带宽降低到O(N/logN)。
在排队网络消息中,P7→M4被阻塞,因此阻止了消息P1→M5通过。这导致消息P5→M7被阻塞。这种情况表明,尝试访问不同内存模块的处理器会因热点而延迟。在非排队网络中,P5→M7消息没有障碍,因为P1→M5将被网络拒绝。
减少交换网络中热点影响的另一种方法是引入组合交换机。这些交换机识别出两个消息指向相同的内存模块,在这种情况下,它们可以将两个消息合并为一个。
这种方法在执行同步工具(如信号量和屏障)时特别有利,这些工具通常由运行在特定处理器上的多个进程访问。采用组合交换机的交换网络称为组合网络。

NYU 超级计算机中使用的组合交换机的结构如图所示。来自 Pi 和 Pj 的内存请求进入两个组合队列,一个用于 Mk 内存块,一个用于 Ml 内存块。如果两个请求引用相同的内存地址,相应的组合队列将一个请求转发到内存块,并将第二个请求放入关联的等待缓冲区。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP