[CMU 15-418] Lecture2 A Modern Multi-Core Processor

发布时间 2023-04-23 19:56:29作者: zncleon

本系列文章为 CMU 15-418/15-618: Parallel Computer Architecture and Programming, Fall 2018 课程学习笔记
课程官网:CMU 15-418/15-618: Parallel Computer Architecture and Programming
参考文章:CMU 15-418 notes
相关资源与介绍:CMU 15-418/Stanford CS149: Parallel Computing - CS自学指南

Part 1 parallel execution

image.png


Part 2 access memory

术语:延迟与带宽的区别

image.png

CPUs利用预取(prefeching)来隐藏(hide而不是reduce)访存阻塞(Hiding stalls)
GPUs利用多线程(multi-threading)来隐藏访存阻塞
GPUs一般需要自己的更高速的memory而不是主存,同时其caches更小,级数更少

image.png

Interleaved multi-threading是指相对粗粒度的多线程操作,每个核仍然是在执行一个指令流,出现延迟操作时可以切换线程,由CPU以及硬件进行调度
SMT是多线程与超标量的结合,即一个核不止执行一个指令流中的单条命令,而是可以执行若干线程中的若干指令,相当于指令级别(ILP)的粒度

image.png

一个线程的ILP不够时就可以用SMT来达到更高的ILP
Costs:

  • 需要更多的空间保存线程上下文(multi-thread)
  • 增加了单一线程的运行时间
  • 需要更高的带宽,因为更多的线程->更大的工作集->每个线程的缓存空间减少->更经常访问主存

image.png


Examples

image.png


超标量(superscalar)执行 (ILP)
从一个指令流中每次选出多条指令执行,有多个取指令与ALU硬件
需要处理器在执行阶段检测出在指令流中独立(independent)的操作
每个核每个时钟周期执行多条指令
如图:每个时钟周期执行2条指令

image.png


多核(multi-core)执行
使用pthread并将其划分为两个指令流
有多个指令流,每个指令流进入一个核中执行
每个核每个时钟周期执行一条指令
如图:2个核每个时钟周期执行1条指令 = 2条指令per clock

image.png


多核+超标量执行
每个核每个时钟周期执行多条指令
如图:2个核每个时钟周期执行2条指令 = 4条指令per clock

image.png


四核
使用independent loop iterations
如图:4个核每个时钟周期执行1条指令 = 4条指令per clock

image.png


SIMD(single instruction multiple data)单指令流多数据流
SIMD宽度不是byte或bit而是value
一个宽度多大要看使用的数据类型MMX SSE AVX等(和要使用的寄存器大小有关)SIMD
如图:4个核每个时钟周期执行1个8SIMD宽度的SIMD指令 = 4个8SIMD宽度的SIMD指令per clock

image.png


使用multi-thread技术来hide stalls
有多个线程执行上下文
能够在遇见stalls时切换指令流

image.png


综合 超标量与SIMD与多线程

image.png


一个芯片的所有结构连接在一起结果

image.png


Summary

芯片CPUs/GPUs的运算能力一般远远大于访问内存的速度,所以许多并行程序被存储带宽(memory bandwidth)所限制

image.png

需要了解的术语:

image.png