首页 > 其他分享 >CS149笔记01现代多核CPU

CS149笔记01现代多核CPU

时间:2022-11-04 20:13:41浏览次数:71  
标签:01 CS149 带宽 指令流 指令 内存 simd 执行 CPU

A Modern Multi-Core Processor

一个处理器在做什么?

image-20221104152159781
  • Fetch Decode:指令流解码,决定下一条执行的指令
  • ALU:执行单元,执行一条指令,决定如何修改寄存器和计算机内存
  • Context 一组寄存器,保存了进程的状态。

这部分有点像科普性质了,有点像CPU的发展史。

原本的CPU,一个时钟周期拉取一个指令执行

image-20221104140957958

但是程序中很多指令之间是无关的,所以cpu在内部多做了一个执行单元,这样我们可以在一个时钟周期执行两个命令。

Superscalar execution: processor automatically independent instructions in an instruction sequence and can execute them in parallel on multiple execution units.

image-20221104141743625 image-20221104153823685

Processor pre multi-core era: Increase in chip transistors were used to help a single instruction stream run fast.(增加每个核的transistor数量,从而使得指令流执行更加迅速)

Idea #1

image-20221104153618002

不增加每个核的transistor的数量,而是增加处理器的核数

多核并行的模式:

image-20221104154035043

如果有16个核,就有16个同时执行的指令流

Idea #2

fetch/Decode的成本要比ALU贵,因此可以一个核塞多个ALU,从而分摊managing 指令流的成本

image-20221104154330483

SIMD single multiple data,simd里面wide指8bits、1Byte

condition

image-20221104154549357

如果出现了if condition之类的情况,可能最糟糕的情况只会获得1/8的peak performance

explicit simd CPU

在编译阶段,编译器将simd指令编译在二进制文件中

  • 程序code中写明simd指令
  • 使用一些声明simd的semantic,(ispc的forall等
  • 一些auto-vectorizing的编译器

implicit simd GPU

编译器只能生成标量处理程序,但是硬件可以在simd alus上执行,也就是硬件层面决定

访问内存

stalls

如果当前指令流的当前指令没有完成,处理器就不能继续执行当前指令流的下一条指令,这就是stalls

image-20221104155614779

访问内存的延迟,通常为100左右cpu时钟周期

Cache

image-20221104155735098

Cache可以提供更低的延迟和更高的数据带宽

image-20221104155816155

prefetch

在执行程序之前,先预先将数据提前fetch到Cache中,如果fetch错了,这可能降低执行效率

image-20221104160744903

Idea #3

通过多线程来掩盖stalls,注意,这里的多线程是一个核上多个context意义上的多线程

image-20221104160831175 image-20221104160953917

多线程是面向吞吐量的系统的选择,虽然一个线程的执行时间可能变长,但是系统总的吞吐量提高了

延迟和带宽

image-20221104162519645

延迟:一辆车从san 到Stanford路上画的时间

带宽:一个小时内(或者其他时间单位),能有多少车辆从san到Stanford。

延迟高带宽不一定低,同样延迟低不一定带宽高。如果是内存带宽,就是能够同时从内存传输多少数据的能力,而延迟则是从内存传输数据到处理器的时间。

image-20221104162854482

如果内存带宽很低就会出现这种情况,内存的总线被占用,其他load操作只能等待,但是如果内存带宽提高,那么相当于内存总线还能同时传输更多数据,这时候就可以允许多个load操作同时执行。

我们就可以达到这样的理想100%利用率:

image-20221104163042150

标签:01,CS149,带宽,指令流,指令,内存,simd,执行,CPU
From: https://www.cnblogs.com/kalicener/p/16858959.html

相关文章