计算机组成原理与系统结构——多核计算机

笔记内容及图片整理自XJTUSE "计算机组成原理与系统结构" 课程ppt,仅供学习交流使用,谢谢。

多核处理器也称为芯片多处理器,将两个及以上处理器单元组合在一个芯片上。通常,每个内核都由独立处理器的全部组件构成,例如寄存器、ALU、流水线硬件、控制单元、L1指令和数据高速缓存。除了多内核之外,现代多核芯片还包括L2高速缓存和L3高速缓存。高度集成的多核处理器也包含了内存和外部控制器。

性能问题

增加并行性和复杂性

处理器设计中结构的改变主要侧重于利用ILP以便在每个时钟周期中完成更多工作,按时间顺序这些改变包括:

1)流水线------单个指令通过功能段流水线执行以便一条指令在流水线的一个段中执行时,另一条指令在该流水线的另一个段中执行

2)超标量------通过复制执行资源构成多条流水线,这避免了冒险,使得可以在并行流水线中并行执行指令

3)同步多线程SMT------扩展了寄存器组,保证多个线程可以共享使用流水线资源

能耗

随着单个芯片上晶体管数量和时钟频率的增加,功率需求呈指数级增长,随之而来的是用户成本增加和散热问题。Pollack经验法则:性能的提高大致与复杂性增加的平方根成正比,即若处理器内核的逻辑增加一倍,则它只能提供40%的性能提升。原则上随着内核数量增加,多核的使用可能提供近乎线性的性能改进(仅限于能够利用这一点的软件)。

下图是特征尺寸在逻辑/存储方面功率密度的变化情况:

常规多线程架构

多线程允许多个线程以重叠的方式共享CPU,CPU为每个线程维护一个独立的线程状态,常规多线程架构拥有单独的寄存器组、程序计数器和页表,还需要线程切换硬件。线程切换时间通常介于0.1~10个周期,过程切换时间通常介于100s~1000s。多线程架构分为细粒度多线程(一个线程在一个循环中执行)、粗粒度多线程(一个线程在多个周期内执行,仅在高代价时切换)、混合式(综合单线程和细粒度多线程)。

下图左表是细粒度多线程,右表是粗粒度多线程:

多核软件

许多应用程序还直接受益于随内核数量调整吞吐量的能力,多核处理器有以下几种应用:

1)多线程本机应用程序------线程级并行,特点是具有少量高度线程化的进程

2)多进程应用程序------进程级并行,特点是存在许多单线程化的进程

3)Java应用程序------Java虚拟机是一个多线程进程,为Java应用程序提供调度和存储管理

4)多实例应用程序------应用级并行,可通过并行运行多个实例从多核架构中获利,若多个应用程序实例需要某种程度的隔离,则可以使用虚拟化技术为每个应用程序实例提供它自己的独立且安全的区域。

多核组织结构

高速缓存的层级

(a)专用L1高速缓存组织结构,每个内核都有独立L1高速缓存,L1也是唯一片上缓存,其中L1区分为数据缓存和指令缓存。

(b)专用L2高速缓存组织结构,每个内核都有独立L1高速缓存和独立L2高速缓存,其中L1区分为数据缓存和指令缓存。

(c)共享L2高速缓存组织结构,每个内核都有独立L1高速缓存,内存共享L2高速缓存,其中L1区分为数据缓存和指令缓存。

(d)共享L3高速缓存组织结构,每个内核都有独立L1高速缓存和独立L2高速缓存,内存共享L3高速缓存,其中L1区分为数据缓存和指令缓存。

在芯片上使用共享的更高级高速缓存具有以下优点:

1)结构干涉可以降低整体缺失率,即若一个内核上线程访问一个主存位置,则将包含访问位置的数据行存入共享高速缓存,此时其他内核上的线程可以直接访问该数据行。

2)多核共享的数据不会在共享高速缓存级上复制。

3)通过适当的行替换算法,分配给每个内核的共享高速缓存量动态变化,因此局部性更少的线程可以使用更多的缓存。

4)通过共享内存位置,易于实现内核间通信。

5)使用共享高级缓存把高速缓存一致性问题限制在较低的缓存级,提升性能。

其中,片上只有专用L2高速缓存的组织结构能保证每个内核更快访问其私有L2高速缓存,从而利于具有强局部性的线程。

相关推荐
m0_748240541 小时前
AutoSar架构学习笔记
笔记·学习·架构
siy23333 小时前
[c语言日寄]结构体的使用及其拓展
c语言·开发语言·笔记·学习·算法
雾里看山3 小时前
【MySQL】数据库基础知识
数据库·笔记·mysql·oracle
安和昂3 小时前
effective Objective—C 第三章笔记
java·c语言·笔记
ThisIsClark4 小时前
【gopher的java学习笔记】Java中Mapper与Entity的关系详解
java·笔记·学习
scdifsn4 小时前
动手学深度学习11.6. 动量法-笔记&练习(PyTorch)
pytorch·笔记·深度学习
安冬的码畜日常4 小时前
【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项
笔记·vim·自学笔记·vim多窗口·vim子窗口·vim水平分割·vim垂直分割
m0_548049704 小时前
SpringCloud学习笔记【尚硅谷2024版】
笔记·学习·spring cloud
我是聪明的懒大王懒洋洋4 小时前
dl学习笔记:(7)完整神经网络流程
笔记·神经网络·学习
USER_A0014 小时前
JavaScript笔记进阶篇01——作用域、箭头函数、解构赋值
javascript·笔记