高性能计算中的内存与编程优化
1. 基本问题概述
在高性能计算领域,有一个重要的观点:没有物理量可以永远呈指数级变化,而我们的工作就是延缓这一“永远”的到来。自1965年英特尔创始人戈登·摩尔提出摩尔定律以来,该定律指出微处理器上的晶体管数量大约每1到2年翻一番,事实证明这一预测非常准确。其推论,即中央处理器(CPU)的性能大约每2年也会翻一番,同样具有前瞻性。
然而,近年来CPU和内存性能之间出现了不匹配的情况。从一些数据来看,CPU的性能远超内存系统。但这并不完全准确,很大程度上是成本问题。在20世纪80年代和90年代,Cray Research Y - MP系列机器的CPU和内存性能平衡良好。NEC通过使用CMOS和直接内存访问,也实现了CPU和内存性能的良好平衡。不过,ECL和CMOS静态随机访问内存(SRAM)系统成本高昂,且需要精心冷却,存储密度低。如今,几乎所有的个人计算机(PC)的内存都比20世纪80年代或90年代初的超级计算机内存系统大得多。
因此,现代内存系统大多采用分层结构,通常具有多级缓存。动态随机访问内存(DRAM)已成为大容量内存的标准选择。虽然有许多项目和想法试图缩小CPU和内存访问性能之间的差距,但在短期内,我们仍需应对当前的现状。
2. 内存相关原理
计算机架构设计通常基于局部性引用原则,即下一个要使用的数据很可能与上一个使用的数据相同或相邻。大多数基准测试研究表明,90%的计算时间花在大约10%的代码上。虽然局部性假设在指令方面通常是准确的,但对于其他数据的可靠性较低。不过,很难想象还有其他易于实现的策略。因此,大多数机器使用缓存内存层次结构,其基本假设就是数据局部性。非局部内存访问,特别是在非单位但
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



