From 2f4de189c357bb4d0d817a7eeb49d5e2d738d013 Mon Sep 17 00:00:00 2001 From: Didnelpsun <2675350965@qq.com> Date: Sat, 29 Oct 2022 23:19:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Computer-Organization/0-summary.md | 13 ++- .../4-central-processing-unit.md | 99 ++++++++++++++++++- 2 files changed, 104 insertions(+), 8 deletions(-) diff --git a/Computer-Organization/0-summary.md b/Computer-Organization/0-summary.md index 4858015..c4f6e75 100644 --- a/Computer-Organization/0-summary.md +++ b/Computer-Organization/0-summary.md @@ -38,13 +38,6 @@ + 专用计算机。 + 通用计算机:巨型机、大型机、中型机、小型机、微型机、单片机。 -按指令和数据流分为: - -+ 单指令流和单数据流系统($SISD$),即传统冯·诺依曼体系结构。 -+ 单指令流和多数据流系统($SIMD$),包括阵列处理器和向量处理器系统。 -+ 多指令流和单数据流系统($MISD$),这种计算机实际上不存在。 -+ 多指令流和多数据流系统($MIMD$),包括多处理器和多计算机系统。 - ## 计算机系统层次结构 ### 计算机结构 @@ -130,6 +123,12 @@ X|加数|减数|被乘数|除数 + $IR$:指令寄存器,存放当前执行的指令,内容来自主存的$MDR$。指令中操作码$OP(IR)$送到$CU$分析指令并发出各种微操作命令序列,地址码$Ad(IR)$送到$MAR$来取操作数。 + $PC$:程序计数器,存放下一条要指令地址,取指后自动加$1$(一条指令长度,不一定为$1$)以形成下一条指令地址的功能,与主存$MAR$有直接通路。 +#### 逻辑电路 + ++ 组合逻辑电路是具有一组输出和一组输入的非记忆性逻辑电路,它的基本特点是任何时刻的输出信号状态仅取决于该时刻各个输入信号状态的组合,而与电路在输入信号作用前的状态无关。组合电路不含存储信号的记忆单元,输出与输入之间无反馈通路,信号是单向传输的。 ++ 时序逻辑电路中任意时刻的输出信号不仅和当时的输入信号有关,而且与电路原来的状态有关,这是时序逻辑电路在逻辑功能上的特点。因而时序逻辑电路必然包含存储记忆单元。 ++ 组合逻辑电路没有统一的时钟控制,而时序逻辑电路则必须在时钟节拍下工作。 + ### 计算机工作过程 1. 把程序和数据装入主存储器。 diff --git a/Computer-Organization/4-central-processing-unit.md b/Computer-Organization/4-central-processing-unit.md index f008870..80fda19 100644 --- a/Computer-Organization/4-central-processing-unit.md +++ b/Computer-Organization/4-central-processing-unit.md @@ -547,7 +547,7 @@ T4||OP(IR)→微地址形成部件 #### 指令流水线定义 -一条指令大致分为取指、分析、执行三个阶段,设时间都为$t$,一共有$n$条指令: +一条指令大致分为取指、分析、执行三个阶段(或者取指$IF$、译码/读寄存器$ID$、执行/计算地址$EX$、访存$MEM$、结果写回寄存器$WB$),设时间都为$t$,一共有$n$条指令: 1. 顺序执行: + 顺序执行所有指令。 @@ -668,3 +668,100 @@ T4||OP(IR)→微地址形成部件 3. 超长指令字: + 由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字。 + 需要更大的$Cache$。 + +## 多处理器 + +### 指令数据流结构 + +#### SISD + ++ 单指令流和单数据流系统,即传统冯·诺依曼体系结构。 ++ 只有一个处理器和存储器,一次性只执行一条指令。 ++ 使用流水线技术,所以设置多个功能部件,采用多模块交叉存储器。 + +#### SIMD + ++ 单指令流和多数据流系统。同时对多个数据进行处理,一般称为数据级并行技术。 ++ 有一个指令控制部件和多个处理单元。 ++ 每个处理单元有自己的地址寄存器。 ++ 一个顺序程序被编译后可能串行也可能并行。 ++ 适合循环结构,不适合选择结构。 ++ 包括阵列处理器和向量处理器系统。向量处理器系统是一种实现了直接操作一维数组(向量)指令集的$CPU$,而串行处理器只能处理单一数据集。其基本理念是将从存储器中收集的一组数据按顺序放到一组向量寄存器中,然后以流水化的方式对它们依次操作,最后将结果写回寄存器。向量处理器在特定工作环境中极大地提升了性能,尤其是在数值模拟或者相似的领域中。 + +#### MISD + +多指令流和单数据流系统,这种计算机实际上不存在。 + +#### MIMD + ++ 多指令流和多数据流系统,是一种并行程度更高的线程级并行或线程级以上并行计算模式。 ++ 包括多处理器和多计算机系统。 ++ 多计算机系统中的每个计算机节点都具有各自的私有存储器,并且具有独立的主存地址空间,不能通过存取指令来访问不同节点的私有存储器,而要通过消息传递进行数据传送,也称消息传递$MIMD$。 ++ 多处理器系统是共享存储多处理器($SMP$)系统的简称,它具有共享的单一地址空间,通过存取指令来访问系统中的所有存储器,也称共享存储$MIMD$。 + +### 硬件多线程 + +为减少线程切换的开销,产生硬件多线程。在支持便件多线程的$CPU$中,必须为每个线 +程提供单独的通用寄存器组、单独的程序计数器等,线程的切换只需激活选中的寄存器,从而 +省略了与存储器数据交换的环节。 + +#### 细粒度多线程 + +多个线程之间轮流交叉执行指令,多个线程之间的指令是不相关的,可以乱序并行执行。 + +在这种方式下,处理器能在每个时钟周期切换线程。 + +时钟|当前执行指令所属线程 +:--:|:------------------: +1|A +2|B +3|A +4|C +5|B + +#### 粗粒度多线程 + +仅在一个线程出现了较大开销的阻塞时,才切换线程,如$Cache$缺失。 + +在这种方式下,当 +发生流水线阻塞时,必须清除被阻塞的流水线,新线程的指令开始执行前需要重载流水线,因 +此,线程切换的开销比细粒度多线程更大。 + +时钟|当前执行指令所属线程 +:--:|:------------------: +1|A +2|A +3|B +4|B +5|C + +#### 同时多线程 + +同时多线程($SMT$)是上述两种多线程技术的变体。它在实现指令级并行的同时,实现线程级并行,也就是说,它在同一个时钟周期中,发射多个不同线程中的多条指令执行。 + +时钟|当前执行指令所属线程 +:--:|:------------------: +1|AB +2|AC +3|BC + +### 多核处理器 + ++ 多核处理器是指将多个处理单元集成到单个$CPU$中,每个处理单元称为一个核,可以同时执行多个运算。 ++ 每个核可以有自己的$Cache$,也可以共享同一个$Cache$。 ++ 所有核一般都是对称的,并且共享主存储器,因此多核属于共享存储的对称多处理器。 + +### 共享内存多处理器 + +具有共享的单一物理地址空间的多处理器被称为共享内存多处理器($SMP$)。处理器通过存 +储器中的共享变量互相通信,所有处理器都能通过存取指今访向任何存储器的位置。注意,即 +使这些系统共享同一个物理地址空间,它们仍然可在自己的虚拟地址空间中单独地运行程序。 + ++ 统一存储访问($UMA$)多处理器: + + 每个处理器对所有存储单元的访问时间是大致相同的,即访问时间与哪个处理器提出访存请求及访问哪个字无关。 + + 根据处理器与共享存储器之间的连接方式,分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器。 + + 需要解决$Cache$一致性问题。 ++ 非统一存储访问($NUMA$)多处理器: + + 某些访存请求要比其他的快,具体取决于哪个处理器提出了访问请求以及访问哪个字,这是由于主存被分割并分配给了同一机器上的不同处理器或内存控制器。 + + 处理器中不带高速缓存时,被称为$NC-NUMA$;处理器中带有一致性高速缓存时,被称为$CC-NUMA$。 + + 拓展性更强。