计算机系统要素 - 时序逻辑组成RAM

1. 时序逻辑

布尔芯片和算数芯片都是组合芯片,组合芯片计算那些"输出结果仅依赖于其输入变量的排列组合"的函数,这些相关的简单的芯片提供很多重要的功能(像ALU那样),但是他们不能维持自身的状态;

计算机不仅要能计算值,而且还要存取数据,因而这些芯片还必须配置记忆单元来保存数据,这些记忆单元是由时序芯片组成的;

记忆单元的实现设计到同步,时钟和反馈回路,其中大部分能被封装到称为触发器的底层时序门中;

2. 基本构建

记住一些东西这个行为本质上是具有时间依赖性的
现在记住的东西一定是之前的记忆,因此为了构建能够记忆信息的芯片,必须要有标准的方法来表示时间的进程

2.1 时钟

在大多数计算机里,时间的流逝是用主时钟(master clock)来表示的,它提供连续的交变信号序列。其精确的硬件实现通常基于振荡器(oscillator);

主时钟在两个信号值0-1(低电平-高电平)之间交替变化,两个相邻的上升沿之间的时间间隙称为时钟的周期(cycle),每个时钟周期模塑一个离散时间单元;通过使用硬件电路,这个信号同时被传送到计算机平台的每个时序芯片中
在这里插入图片描述
对于上面的not门是组合芯片,时间t的输出是对时间t的输入的响应:out[t] = function(in[t])
在这里插入图片描述

而对于顺序芯片来说我们希望时间t的输出取决于时间t-1的输入out[t] = function(in[t-1])
在这里插入图片描述

2.2 触发器

计算机里最基本的时序单元是触发器,它有几个种变体,例如数据触发器(DFF)的变体

  • 其接口包含1比特位输入和1比特位输出;
  • 另外,DFF有个时钟输入,根据主时钟信号连续地交变
  • 数据和时钟的输入使得DFF能够实现基于时间的行为out[t] = in[t-1]
  • 这里inout是门的输入和输出值, 1是当前时钟周期
  • 换句话说, DFF简单地将前一个时间周期的输入值作为当前周期的输出

在这里插入图片描述
和Nand门一样,DFF门在计算机体系中非常底层,可以说,计算机中的所有时序芯片(寄存器,内存,计数器)都基于大量的DFF门;

所有的这些DFF门都连接同一个主时钟,形成巨大的分布式合唱阵容(计算机系统中的所有时序芯片都在主时钟频率这个总指挥的协调统一下共同工作);

在每个时钟周期的起始点,计算机所有DFF的输出都要被赋予他们上个时钟周期的输入,在其他时间,DFF被锁存,这意味着他们的输入将暂时不会影响他们的输出,这个传导性操作将影响到组成系统的上百万个DFF门,大约每秒十亿次(依据计算机的时钟频率而定);

通过同时向系统中所有DFF提供统一的主时钟信号来实现计算机硬件对时间的相关性;

如何实现一个触发器:
SR锁存器为什么可以实现存储的功能?
如何理解RS触发器?在或非门构成的RS触发器中,为什么R和S都是0的时候触发器状态不变?
在这里插入图片描述

触发器是所有计算机硬件维持自身状态的基础,从二进制单元到寄存器到RAM皆是如此

左边或非门的输出是右边或非门的输入,右边或非门的输出是左边或非门的输入(或非门:只要有一个输入为1输出就为0)

一开始,只有左边或非门的输出有电流,因为它的两个输入均为 0。
在这里插入图片描述
现在闭合上面的开关,左边或非门的输出变为 0,于是右边或非门的输出变为1,灯泡点亮:
在这里插入图片描述
当你断开上面的开关时,由于或非门的输入中只要有一个为 1,其输出就是 0,因而左边或非门的输出不变,灯泡仍然亮着
在这里插入图片描述
现在闭合下面的开关。由于右边或非门的输入中有一个是 1,则其输出变为0,灯泡熄灭。 左边或非门的输出此刻变为1
在这里插入图片描述
再断开下面的开关,灯泡仍旧不亮:
在这里插入图片描述
电路的奇特之处是:有时当两个开关都断开时,灯泡亮着;而有时,当两个开关都断开 时,灯泡却不亮。当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器。

触发器电路可以保持信息,换句话说,它有记忆性。它可以“记住”最近一次是哪个开 关先闭合的。如果你遇到这样一个触发器,它的灯泡亮着时,你可以确定最近闭合的是上面 的开关;而灯泡灭着时则是下面的开关。

触发器和跷跷板很像。跷跷板有两个稳定状态,它不会长期停留在不稳定的中间位置。 你只要一看跷跷板就知道哪边是最近被压下来的

触发器赋予电路记忆,使其知道以前曾有过的状态,触发器有很多种,刚才所看到的是最简单的一种,称为 R - S(或 Reset - Set,复位/置位) 触发器。下面以对称的方式把它重新绘出来:

在这里插入图片描述

  • 用于点亮灯泡的输出称为 Q,另一个输出Q是Q的倒置
  • 两个输入端S(Set)和R(Reset)分别表示置位和复位
  • 可以把“置位”理解为把Q设为1, 而“复位”是把Q设为0
  • 当S为1时(对应于前面图中闭合上面开关的情况),Q变为1;当R为1时(对应于前面图中闭合下面开关的情况),Q变为0。当S和R都为0时, 输出保持Q原来的状态
SRQ
101
010
00Q
11禁止

表中最后一行说明 S和R输入都为1是非法 的、禁止的。这是因为S、R同时为1时,两个输出Q和Q均为零,这与Q和Q互为倒置的关系相 矛盾。所以,当你用R - S触发器设计电路时,要避免使R、S输入同时为1的情况。

2.3 寄存器

寄存器是具有记忆功能的设备,它能够储存(记忆)某一时刻的值,实现经典的存储行为out(t)=out(t-1)

DFF仅能够输出它前一时钟周期的输入,也就是out(t) = in(t-1),可以通过DFF来实现寄存器,只需将后面的输出反馈到它的输入就可以了,如此一来,在任何时刻t,这个设备的输出都会重现它在时刻t-1的值

为了实现这个,我们需要做到两点

  • 为了能给这个设别输入新的数据值,我们需要告诉DFF的输入什么时候是从in获取,什么时候是从out获取
  • 芯片设计的规则规定内部管脚只能有一个单独的输入源

基于这些我们通过DFF设计出如下一位寄存器
在这里插入图片描述

  • 在设计中使用多路转换器,这个多路转换器的选择位是整个寄存器芯片的加载位(load bit)
  • 如果希望寄存器开始存储一个新值,可以把这个值置于in输入口,然后将load位设为1
  • 如果希望寄存器一直存储他的内部值直到新的指令到来,可以将load位设为0

在这里插入图片描述
一旦实现了保存1比特位的基本机制,就可以轻松地构建任意位宽的寄存器,这可以通过由多个1比特位寄存器构成的阵列来实现,以构建可保存多比特位值的寄存器,此类寄存器的基本设计参数是它的宽度,即它所保存比特位的数量—比如16,32或64,此类寄存器的多位容量通常用字(word)来表示
在这里插入图片描述
下图考虑时钟信号的输入
DFF:存储并输出一个比特,但只有当时钟信号从0变为1时才改变输出的比特

  • 当st(存储位)是1而cl(时钟信号)是0时,存储d上的值。 但之前的数值依然会被输出。
  • 当时钟信号改变为1,触发器开始输出新值。
  • 当st为0,d上的值没有任何效果。
  • 当cl为1,st和d的值没有任何效果

寄存器基于DFF实现,下图是一个2位寄存器
在这里插入图片描述

2.4 内存

一旦具备了表示字的基本能力,就可以构建任意长度的存储块了
可以通过将很多寄存器堆叠起来形成随机存取RAM单元来实现,在RAM上能够随机访问被选择的字而不会受限于访问顺序,也就是说,我们要求内存中的任何字(无论具体物理位置在哪里)都能以相等的速度被直接访问
在这里插入图片描述
典型的RAM设备接收三种输入:数据输入、地址输入和加载位

  • 地址指定了在当前时种周期里哪一个RAM寄存器被访问
  • 进行读操作时(Load=0), RAM的输出立即发出被选中的记忆单元的值
  • 在进行写操作(load = 1)时,被选择的记忆单元将在下个时间周期内被赋予新输入值,从此RAM将开始发出该新输入值

下图使用2个16位寄存器来设计一个存储单元;它能用一个比特来定位寻址和写入
输入

  • ad (地址)指示我们正在存取哪个存储单元。
  • st (存储)指示我们是否要写入那个单元,当它为1时,数值 X 被写入存储单元;为0时,X 被忽略
  • X (数据)是一个16位数值
  • cl (时钟信号)同步状态变化。 X 在 cl=0 时被储存在存储器中,但是只有当 cl 变为1时才会发送出去。

输出

  • 当前被存储在由地址 ad 所指定的存储单元中的数值

在这里插入图片描述

2.5 计数器

计数器是一种时序芯片,它的状态是整数,每经过一个时间周期该整数就增加1个单位,执行函数out(t)=out(t-1)+c
计数器在数字系统中担当非常重要的角色,比如,典型的CPU包括一个程序计数器,它的输出就是当前程序中下一步将要执行的指令地址

计数器芯片可以通过将标准的寄存器的输入/输出逻辑和附加的常数组合逻辑相结合来实现,一般来说,计数器必须配一些附加的功能块,比如将技术置零,加载新的计数值,或者使用减操作取代增操作;

在这里插入图片描述
图中的nand和inv是为了生成一个“1”使能位

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值