计组_多处理器的基本概念

2024.06.26:计算机组成原理多处理器的基本概念学习笔记


多处理器也就是它可以并行操作这样的CPU,正常的CPU我们只能去处理一条指令完成一个操作,但是对于多处理器来说,它可以实现同时去执行多条指令或者处理多个数

1. 计算机体系结构

所有的处理器或者说所有的计算机体系都是这四种之内

1.1 SISD单指令流单数据流(前面几章一直在学习的内容)

  • 在任意时刻,计算机执行单一指令操作单一数据
  • 传统的桌面计算机在处理文本编辑或简单图形操作时通常采用SISD架构

在这里插入图片描述


1.2 SIMD单指令流多数据流

  • 一条指令同时操作多个数据,非常适合于执行重复的相同操作,如图像处理中的像素操作
  • 现代图形处理单元(GPU)在渲染3D图形时,会用SIMD处理成千上万个顶点和像素的相同操作

在这里插入图片描述
在这里插入图片描述


1.2.1 改进:向量处理器

向量处理器是一种实现了SIMD指令集的高性能计算机处理器,它可以同时处理一组数据(向量)上的同一操作,这样的处理器专为执行复杂数学运算而设计的

想象一个厨师(向量处理器)在一个非常大的厨房里(计算环境)里,有一个巨大的炒锅(向量寄存器),可以同时烹饪大量的食材(数据),这位厨师可以一次性把锅里的所有食材进行相同的烹饪步骤,比如同时翻炒所有的食材,而不是一个接一个翻炒。


1.3 MISD多指令流单数据流

  • 多条指令流同时操作同一数据
  • 难以实现,实际上不存在

在这里插入图片描述


1.4 MIMD多指令流多数据流

  • 多个处理器同时执行不同的指令序列,处理不同的数据
  • 大型服务器在处理多用户的不同请求时会使用MIMD,例如Web服务器或数据库服务器

在这里插入图片描述


1.5 总结(厨师、菜、助手、食谱)

在这里插入图片描述


2. 硬件多线程

线程是操作系统里引入的一个概念,在主存中去运行的某一个程序,我们这个单元会把它叫做进程,其实进程内部又可以分成一个一个的小线程,一个小线程里面是可以执行很多很多条指令的

在这里插入图片描述


2.1 细粒度多线程

  • 细粒度多线程允许处理器在每个时钟周期中轮换不同的线程,去执行不同的指令
  • 这种切换通常发生在一个线程执行指令时遇到长时间等待的情况下
    在这里插入图片描述

2.2 粗粒度多线程

在当前执行的线程被阻塞或完成之后才切换到另一个线程,切换的原因通常是等待I/O操作、长时间的计算或其他资源的延迟


2.3 同时多线程

允许多个线程在同一时间内在多核处理器并行执行,通过在处理器内部共享和复用资源(如算术逻辑单元和寄存器文件)实现


3. 多核处理器

  • 将多个处理单元集成到单个CPU中,每个处理单元称为一个
    在这里插入图片描述

4. 共享内存多处理器SMP(对称多处理器)

  • 两个或多个相同的处理器(CPU)共享主内存、I/O设备等资源,并具有相同的访问内存的能力
  • 处理器之间通过⾼速总线或其他数据连接方式相连,可以有效地协作处理任务
  • 在SMP系统中,所有处理器共享⼀个操作系统,可以运行在任何处理器上,并共同访问所有资源

4.1 统一存储访问多处理器UMA(对主存是共享的概念)

每个处理器对所有存储单元的访问时间大致相同

对于统一存储访问来说,它对待主存实际上是一个共享的概念,也就是每一个处理器,它可以访问这个主存里面的每一个存储单元,并且访问的时间都是一样的


4.2 非统一存储访问多处理器NUMA(主存划分给不同处理器)

主存被分割给不同的处理器,处理器访问自身附近的内存(本地内存),比访问与远程处理器的内存(远程内存)更快、更便宜


UMA的所有处理器共享同⼀内存空间因此每个处理器中的cache都是共享内存的副本,尤其需要注意个处理器中的cache一致性问题

相关推荐

  1. 数据结构之栈、队列和数基本概念

    2024-07-14 20:14:03       20 阅读
  2. BERT入门:理解自然语言处理基本概念

    2024-07-14 20:14:03       28 阅读
  3. Docker基本概念

    2024-07-14 20:14:03       48 阅读
  4. git 基本概念

    2024-07-14 20:14:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 20:14:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 20:14:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 20:14:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 20:14:03       69 阅读

热门阅读

  1. Mybatis-plus3.4.3下使用lambdaQuery报错

    2024-07-14 20:14:03       21 阅读
  2. 模拟电路再理解系列(2)-电源滤波电路

    2024-07-14 20:14:03       22 阅读
  3. 【Python】ftplib的使用

    2024-07-14 20:14:03       19 阅读
  4. WPF中Frame

    2024-07-14 20:14:03       15 阅读
  5. python装饰器

    2024-07-14 20:14:03       18 阅读
  6. Linux开发:Ubuntu22.04安装libcurl4

    2024-07-14 20:14:03       17 阅读
  7. 【网站】重定向任意网站(IP)

    2024-07-14 20:14:03       20 阅读