多处理器编程的挑战与应对
1. 计算机行业的变革
计算机行业正经历着一场重大变革。目前,主要的芯片制造商暂时放弃了让处理器运行更快的尝试。虽然摩尔定律仍然有效,每年能在相同空间内集成更多晶体管,但由于过热问题,无法提高时钟速度。因此,制造商转向了“多核”架构,多个处理器(核心)通过共享硬件缓存直接通信。多处理器芯片通过利用并行性,让多个处理器协同处理单个任务,从而提高计算效率。
这种多处理器架构的普及将对软件开发产生深远影响。过去,技术进步主要体现在时钟速度的提升,软件会随着时间自动“加速”。但现在,技术进步意味着并行性的增加而非时钟速度的提高,如何利用这种并行性成为现代计算机科学的一大挑战。
2. 多处理器编程的挑战
多处理器编程面临着诸多挑战,这些挑战在不同规模的多处理器系统中都会出现。在小规模系统中,单个芯片内的处理器需要协调对共享内存位置的访问;在大规模系统中,超级计算机中的处理器需要协调数据的路由。
现代计算机系统本质上是异步的,活动可能会因中断、抢占、缓存未命中、故障等事件而毫无预警地暂停或延迟。这些延迟是不可预测的,且规模差异巨大。例如,缓存未命中可能使处理器延迟不到十条指令的执行时间,页面故障可能延迟数百万条指令,而操作系统的抢占则可能延迟数亿条指令。
3. 多处理器编程的两个方向
3.1 原理方向
在原理方面,主要关注可计算性,即弄清楚在异步并发环境中可以计算什么。采用的是一种理想化的计算模型,多个并发线程操作一组共享对象,线程对对象的操作序列构成并发程序或并发算法,这与 Java、C# 或 C++ 线程包所呈现的模型基本一致。
令
超级会员免费看
订阅专栏 解锁全文
10万+

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



