学习 Memorywall、Reliabilitywall 和 Programmabilitywall 及其相应 的处理策略

随着半导体技术的进步,处理器性能和存储器容量都在不断提高,但这也带来 了 一 系 列 新 的 挑 战 。 其 中 , 面 临 的 三 大 问 题 分 别 是 Memorywall 、Reliabilitywall 和 Programmabilitywall。针对这些问题,一些处理策略已经被提出,包括软件和硬件方面的改进。本文将对Memorywall、Reliabilitywall和 Programmabilitywall 进行调研,并探讨相应的处理策略。

一、Memorywall

Memorywall 是指内存访问速度和 CPU 运行速度之间的差距,导致 CPU 等待数据从内存中加载而浪费时间。芯片上放置越来越多内核的趋势加剧了这种情况,因为每个内核共享内存资源的通道相对较窄。这个问题在高度并行的系统中尤为严重,但在从嵌入式系统到超级计算机的平台上都会出现,而且不仅限于多处理器[1]。目前这个问题阻碍着许多领域的发展,例如 AI 训练[2],Memorywall 也被称为 AI 算力的阿喀琉斯之踵。解决这个问题的方法需要提高内存访问速度,同时降低 CPU 等待的时间。以下调研结果主要来自于 Utilizing Concurrency: ANew Theory for Memory Wall[3],中文内容由我个人理解选择性展示,如有偏差敬请海涵。

  1. 增大数据并发,可能消除内存墙效应。理论:如果一个应用程序具有足够的命中并发性,并且在层次 Li 具有足够的纯缺失并发性或足够低的纯缺失率,或者纯缺失惩罚,那么在内存层次 Li,我们可以找到与任何匹配阈值 Ti> 0 相匹配的性能。
  2. 选择适合的并发参数,用 LPM 算法去选择。理论:如果一个应用程序具有足够的命中并发性,并且在每个内存层次上具有足够的纯缺失并发性或足够低的纯缺失率或纯缺失惩罚,那么 LPM 算法可以为该应用程序找到与任何匹配阈值 T1>0 相匹配的性能。
  3. 增加数据局部性,降低内存中的请求性能匹配。理论:增加内存层次 j(1≤j≤i)的数据局部性,将会降低内存层次 Li+1 上的数据访问请求率。解释:内存墙问题的影响是内存停顿时间与应用程序总运行时间之间的比例较大。因此,如果增加数据局部性,可以使得 cpu 访存减少;如果内存停顿时间小于应用程序的纯执行时间的 1%(我们认为 1%足够小,但对于任何 x>0,可以是 x%),则内存墙效应可以忽略不计。

二、Reliabilitywall

Reliabilitywall 是指由于系统中硬件故障或软件错误导致系统不可靠的情
况。为了解决这个问题,需要有可靠的内存和处理器。现有的研究有加强容错率的技术,主要集中于软件和硬件两个方向。以下调研结果主要来自于 The Reliability Wall for Exascale Supercomputing [4],中文内容由我个人理解选择性展示,如有偏差敬请海涵。

  1. 软件方面来说,检查点是大规模并行计算中最流行的技术检查点,可以发生在操作系统级别或应用程序级别。第一种方法,系统级检查点,只需要用户指定检查点间隔,而无需额外的程序员工作。第二种方法,应用程序级检查点,要求用户决定检查点的位置和内容。
  2. 硬件方面的容错技术,主要是通过冗余或复制资源来实现的。其中包括物理上(RAIDed disks and backup servers),还有信息智能方面(ECCmemory,parity memory 奇偶校验内存,data replication),都可以实现增大容错率。
  3. 在数据复制中,将数据从远程节点复制到本地节点,以便进行本地读取而不是远程读取,从而改善整个系统的性能。由于数据冗余,数据复制还可以提高通信的可靠性,但代价是额外的存储空间。

三、Programmabilitywall

Programmabilitywall 是指难以编写和维护程序的复杂度,这主要由于大规模系统和新兴技术的加入而导致的。比如说 FPFA [5]被希望广泛用于加速器的时候,便因为硬件设计困难、合成时间长、难以编程等问题遇到困难,即可编程墙(Programmabilitywall)。调研许多论文我发现,解决这个问题主要是使用先进的 architecture 来解决,让我明白了老师让我们调研此课题的用意——有利于开拓我们对本门课程 computer architecture 的学习理解。以下调研结果主要来自于 A high-performance overlay architecture for pipelined executionof data flow graphs [5],中文内容由我个人理解选择性展示,如有偏差敬请海涵。

  1. 首先,Overlays 是预合成的 FPGA 电路,本身可以重新配置。其提高了抽象级别,远离硬件设计,更接近软件,并通过允许快速设计迭代来减少开发时间。故考虑使用 overlay architecture 来解决问题。
  2. 用 DFG 的流水线执行 overlay architecture;在这里,图的节点是机器操作,边代表操作之间的数据流动。overlay architecture 是一个最近邻连接的叠加单元网格,每个单元由功能单元(FU)和可重构的路由逻辑组成。通过将图节点映射到 FU 并配置路由逻辑建立反映图边的 FU 间连接 ,overlay architecture 执行 给定的 DFG。然 后,在 overlayarchitecture 上以流水线方式执行多个 DFG 实例,以实现高性能。
  3. 采用数据驱动的执行方式:只有当 FU 的输入就绪且其输出空闲时,FU才执行操作。我们通过弹性流水线设计来实现数据驱动的执行,该设计允许架构在保持高 fMAX 的同时扩展到大量的 FU。我们针对 FPGA 定制了这些弹性流水线的设计。此外,我们结合弹性流水线平衡 DFG 路径中的延迟和种子扫描布线(PAR)算法,以最大化流水线 DFG 执行的吞吐量。

参考文献
[1] https://zhuanlan.zhihu.com/p/363041668
[2] https://zhuanlan.zhihu.com/p/361624563
[3] Sun, XH., Liu, YH. (2017). Utilizing Concurrency: A New Theory for Memory Wall. In: Ding, C., Criswell, J., Wu, P. (eds) Languages and Compilers for Parallel Computing. LCPC Lecture Notes in Computer Science(), vol 10136. Springer, Cham. https://doi.org/10.1007/978-3-319-52709-3_2
[4] X. Yang, Z. Wang, J. Xue and Y. Zhou, “The Reliability Wall for ExascaleSupercomputing,” in IEEE Transactions on Computers, vol. 61, no. 6, pp. 767-779, June2012, doi: 10.1109/TC.2011.106.
[5] D. Capalija and T. S. Abdelrahman, “A high-performance overlay architecture for pipelined execution of data flow graphs,” 2013 23rd International Conference on Field programmable Logic and Applications, Porto, Portugal, 2013, pp. 1-8, doi:10.1109/FPL.2013.6645515.

你可能感兴趣的:(本科学习,学习,人工智能,大数据,系统架构)