计算机组成原理(7)----CPU内部单总线数据通路

简介: 计算机组成原理(7)----CPU内部单总线数据通路

1.CPU内部单总线方式

单总线方式如下图所示,寄存器的控制信号,例如 等,都是由CU发出的。

数据流动大致分为三类:

(1)寄存器与寄存器之间的数据流动

比如把PC内容送至MAR,实现传送操作的流程及控制信号为:

•(PC)-->Bus        PCout有效,PC内容送总线

•Bus--->MAR        MARin有效,总线内容送MAR

也可写为:(PC)--->Bus--->MAR,也有的教材写为:PC-->Bus-->MAR,这几种写法都是可以的,重要的是描述清楚数据流向

(2)寄存器与主存之间的数据流动

比如CPU从主存读取指令,实现传送操作的流程及控制信号为:

•将PC的数据通过内部总线放到MAR中

(PC)--->Bus--->MAR        PCout和MARin有效,现行指令地址--->MAR

•地址信息传送完后,撤销控制信号,使内部总线空闲。由于要对主存进行读操作,所以CU会向主存发出读信号,即1-->R        CU发读命令(通过控制总线发出)

同时CU也会向MAR发出控制信号,控制MAR的信息送到地址总线上

•主存通过MAR指示的地址,从存储体中读出相应的数据,将数据通过数据总线放到MDR中

MEM(MAR)--->MDR        MDRinE有效

注:MDRin是内部总线向MDR输入信息的输入信号,MDRinE是外部总线向MDR输入信息的输入信号

•将指令放到指令寄存器IR中

MDR-->Bus--->IR        MDRout和IRin有效,现行指令-->IR

(3)寄存器与ALU(算数逻辑单元)之间的数据流动

比如一条加法指令,微操作序列及控制信息为:


•根据指令的地址码部分,读取出参与加法的操作数。取指令时,是先把指令先传送到MDR,再从MDR复制数据到IR,所以MDR中存放的也是当前指令。所以也可以让MDRout和MARin有效


Ad(IR)--->Bus-->MAR        MDRout和MARin有效

•CU向主存发送读信号,即1--->R        

•主存储器根据MAR读取相应单元的数据,放到MDR中

MEM(MAR)--->数据线--->MDR        MDRinE

•将参与加法运算的操作数放到暂存寄存器Y中


MDR--->Bus--->Y        MDRout和Yin有效,操作数--->Y


注:内部总线同一时刻只能传送1个信号,所以加数通过总线放到暂存寄存器Y中(Y与ALU之间有专门的通路传送数据,不会占用数据总线),而被加数则放到ACC中。这样加数和被加数就能同时送到ALU中了

•现在使ACCout和ALUin有效,使ACC中的被加数,通过内部总线传送到ALU,与此同时暂存寄存器Y通过专门的通路将加数放到ALU中。

•ALU收到来自ACC的被加数,以及来自Y的加数后,还需要接收来自控制端CU的控制信号,控制信号告诉CU,此时进行的是加法操作,ALU将输出结果存放到暂存寄存器Z中

(ACC)+(Y)--->Z

当ALU输出的数据稳定后,就可以撤回两个控制信号(ACCout和ALUin),使内部总线空闲

•接下来还需要通过内部总线,将Z中的结果重新放回ACC(加法寄存器)中

Z--->ACC        Zout和ACCin有效,结果--->ACC

所以采用单内部总线的方式,需要先把其中一个操作数放到暂存寄存器中,由暂存寄存器通过专门通路传送数据到ALU,另一个操作数通过内部总线传输到ALU。


而如果采用双内部总线或多内部总线的方式,则就不需要设置暂存寄存器了,直接通过两条内部总线将进行加法运算的操作数送到ALU中。


所以单内部总线设计成本更低,多内部总线设计成本更高,但是效率也会提高。


总结:


如下图所示,每一条指令由多个微操作组成,每个微操作的执行至少需要消耗一个时钟周期,每个时钟周期内CU都会发出一组相应的控制信号来完成微操作。

(4)例题

CPU内部单总线方式例题如下:

设有如图所示的单总线结构,分析指令ADD(R0),R1 的指令流程和控制信号。

题目解读:

对于R1,源操作数是直接放在R1中的。


对于R0,R0中存放的是目的操作数的地址,需要进行一次间接寻址才能找到目的操作数


加法操作的结果会被放回目的操作数指向的主存单元。由于会用到间接寻址,所以指令执行的周期:


取指周期--->间址周期--->执行周期


功能:((R0))+(R1)--->(R0)

取指周期:


1.将PC中的地址信息放到MAR中


2.根据MAR的地址信息(MARout),从主存中取指令数据,放到MDR中(MDRinE),并且CU发出控制信号告诉主存这是一条读操作(MemR)。


3.将指令信息传送到IR中


4.将指令信息送到译码器进行译码


5.每取出一条指令后,PC的值+1


时序如下:

当然也可以将(PC)+1--->PC,放到2时序中,因为从主存储器取完指令后PC就能+1了

间址周期:

1.将R0的地址信息输入到MAR中

2.根据MAR的地址信息,从主存中寻找数据,放到MDR中,至此加法中的一个操作数就被放到MDR

2.根据MAR的地址信息,从主存中寻找数据,放到MDR中,至此加法中的一个操作数就被放到MDR中了。同时CU需要给主存发出读控制信号。

注:之前讲述的间址周期是通过形式地址得到有效地址,再放到IR中,覆盖原来的形式地址,将间址寻址转换为直接寻址。

但是这里的间址寻址是直接将操作数读入到MDR中

有的教材规定,间址周期中需要将形式地址转换为有效地址即可,而一些教材规定,间址周期需要将间接地址指向的数据读入CPU内部,即放到MDR中。这一例题属于后者。

3.将MDR中的操作数,通过内部总线,放到暂存寄存器Y中

4.另一个操作数放在R1中,所以需要让R1out与ALUin有效,使R1的数据通过内部总线送到ALU中,与此同时另一个操作数通过专门通路从Y传到ALU中。并且需要让CU给ALU发出控制信号,告诉ALU这是一个加法操作。



5.ALU输出的结果放到暂存寄存器Z中,根据指令,还需要将加法的结果放到R0指向的主存单元中。所以先将Z的信息传送到MDR中

6.经过之前的步骤,MAR中存放的是R0寄存器的信息,并且MAR也没有更新过(数据没被覆盖),所以MAR此时已经指向了此时想要写的内存单元。再让控制单元CU发出写操作控制信号即可。

下面的微操作(MDR)--->M(MAR),就是将加法的结果,根据MAR提供的地址写回主存。

目录
相关文章
|
7月前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
209 0
|
4月前
|
存储 缓存 数据处理
计算机临时存储CPU运算数据
【8月更文挑战第4天】
86 8
|
4月前
|
存储 固态存储 测试技术
|
5月前
|
编译器 芯片
计算机中CPU 架构
【7月更文挑战第27天】
80 2
|
5月前
|
存储 缓存 数据处理
计算机中 中央处理器 (CPU)
【7月更文挑战第27天】
75 2
|
5月前
|
并行计算 API 数据处理
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
|
5月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
|
20天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
54 7
|
1月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
201 1
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
598 2