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

笔记内容及图片整理自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高速缓存,从而利于具有强局部性的线程。

相关推荐
三品吉他手会点灯17 小时前
C语言学习笔记 - 50.流程控制4 - 流程控制为什么非常非常重要
c语言·开发语言·笔记·学习
chushiyunen18 小时前
langchain4j笔记、tools
笔记·python·flask
影视飓风TIM20 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
二哈赛车手20 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
_李小白20 小时前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
十月的皮皮21 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
辣香牛肉面1 天前
CintaNotes个人笔记管理软件v3.14(v3.13.0 绿色汉化版)
笔记
yoothey1 天前
异常学习笔记:为什么自定义异常后还要 throw?
笔记·学习
sulikey1 天前
数据库系统概论4 - 更新与视图 期末速成课笔记
数据库·笔记·考试·期末速成·数据库系统概论
لا معنى له1 天前
NeoVerse: Enhancing 4D World Model with in-the-wild Monocular Videos
人工智能·笔记·机器学习·语言模型