《深入浅出计算机组成原理》学习笔记 Day14

1. PC 寄存器的实现

PC 寄存器又名程序计数器(Program Counter)。

PC 寄存器由两个部分组成:

  1. 时钟信号。提供定时的输入;
  2. D 型触发器。我们可以在时钟信号控制的时间点写入数据。

加法器的两个输入,一个始终设置为 1,另外一个来自一个 D 型触发器 A。我们把加法器的输出结果写到这个 D 型触发器 A 里面。于是,D 型触发器里面的数据就会固定的时钟信号为 1 的时候更新一次。
在这里插入图片描述
每次自增之后,可以去对应的 D 型触发器里面取值,这也是我们下一条需要运行指令的地址。同一个程序的指令应该要顺序地存放在内存里面。这里就和前面对应上了,顺序地存放指令,就是为了通过程序计数器就能定时地不断执行新指令

加法计数、内存取值,乃至后面的命令执行,最终其实都是由时钟信号来控制执行时间点和先后顺序的

在最简单的情况下,我们需要让每一条指令,从程序计数,到获取指令、执行指令,都在一个时钟周期内完成。如果 PC 寄存器自增地太快,程序就会出错。因为前一次的运算结果还没有写回到对应的寄存器里面的时候,后面一条指令已经开始读取里面的数据来做下一次计算了。这个时候,如果我们的指令使用同样的寄存器,前一条指令的计算就会没有效果,计算结果就错了。

在这种设计下,我们需要在一个时钟周期内,确保执行完一条最复杂的 CPU 指令,也就是耗时最长的一条 CPU 指令。这样的 CPU 设计,称之为单指令周期处理器(Single Cycle Processor)。

2. 读写数据所需要的译码器

如果我们把很多个 D 型触发器放在一起,就可以形成一块很大的存储空间,甚至可以当成一块内存来用。

译码器就是来确定在内存中,要写入和读取的数据的位置。

2-1 选择器的实现是由一个反相器、两个与门和一个或门。通过控制反相器的输入是 0 还是 1,能够决定对应的输出信号,就是和地址 A,还是地址 B 的输入信号一致。
2-1 选择器电路示意图

3-8 译码器也就是从 2 3 2^3 23 个地址中选择一个。现代的计算机,如果 CPU 是 64 位的,就意味着寻址空间也是 2 64 2^{64} 264,那么就需要一个有 64 个开关的译码器。

译码器的本质:从输入的多个位的信号中,根据一定的开关和电路组合,选择出自己想要的信号。除了能够进行“寻址”之外,我们还可以把对应的需要运行的指令通过译码器来进行译码,找出我们期望执行的指令(opcode)。

3. 数据通路完整实现

D 触发器、自动计数以及译码器,再加上 ALU,就凑齐了一个拼装一个 CPU 必须要的零件。

CPU 实现的抽象逻辑图

  1. 自动计数器。其会随着时钟主频不断地自增,来作为 PC 寄存器。
  2. 在自动计数器的后面,连上一个译码器。这个译码器还要同时连着通过大量 D 触发器组成的内存。
  3. 自动计数器会随着时钟主频不断自增,从译码器当中,找到对应的计数器所表示的内存地址,然后读取出里面的 CPU 指令。
  4. 读取出来的 CPU 指令会通过我们的 CPU 时钟的控制,写入到一个由 D 触发器组成的寄存器,也就是指令寄存器当中。
  5. 在指令寄存器后面,可以再跟一个译码器。这个译码器不再是用来寻址的了,而是把我们拿到的指令,解析成 opcode 和对应的操作数。
  6. 当拿到对应的 opcode 和操作数,对应的输出线路就要连接 ALU,开始进行各种算术和逻辑运算。对应的计算结果,则会再写回到 D 触发器组成的寄存器或者内存当中。

4. 总结

我们可以通过自动计数器的电路,来实现一个 PC 寄存器,不断生成下一条要执行的计算机指令的内存地址。

然后通过译码器,从内存里面读出对应的指令,写入到 D 触发器实现的指令寄存器中。再通过另外一个译码器,把它解析成我们需要执行的指令和操作数的地址。这些电路,组成了我们计算机五大组成部分里面的控制器

我们把 opcode 和对应的操作数,发送给 ALU 进行计算,得到计算结果,再写回到寄存器以及内存里面来,这个就是我们计算机五大组成部分里面的运算器

我们的时钟信号,则提供了协调这样一条条指令的执行时间和先后顺序的机制。同样的,这也带来了一个挑战,那就是单指令周期处理器去执行一条指令的时间太长了。

参考

极客时间《深入浅出计算机组成原理》:http://gk.link/a/11UMi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Balaaam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值