What & How & Why

这是本文档旧的修订版!


Memory

Week 3 notes


Sequential Logic

该逻辑指的是,在具有多个任务时,计算机是如何安排并处理这些任务的。相较于之前的内容,该处理过程中会带来一些新的问题:

  • 时间管理
  • 不同任务带来不同的输入
  • 某个任务可能需要基于之前任务的结果

时间管理

重复使用硬件

使用相同的硬件来处理相同的计算。

State

计算过程中需要存储一些状态,比如之前计算的结果,计数器等等。

Clock & Delay

普通列表项目计算机通过 Clock 的方式来配合序列逻辑。通常的来说,是使用一个周期性的振荡器,将连续的物理时间转化为离散的时间序列。 计算机以序列单元(周期)为单位进行输入和输出的生成,该单元的数量是整数。这样就方便计算机可以一步一步的来处理自己的任务序列。

但问题在于,序列单元中的逻辑门运算,在真正的物理世界里,是有延迟(Delay)的,也就是信号输入,计算,到信号输出稳定的 这一段时间。如果我们的单元长度不够,那么这个单元中的逻辑门计算就无法完成。因此,我们的目标是,设计合理的 clock 单位长度, 来保证每个长度周期结束前逻辑门能够成功的完成计算,从而实现“忽略”延迟的效果。这也模拟了离散情况下的瞬时逻辑的概念( 如果以 clock 单元为单位,那么逻辑门的计算就是瞬时完成的)

Sequential Logic 的优势
  • 逻辑门计算中,如果输入与输出发生在同一个 clock 单元,那么我们称这种逻辑为 Combinatorial,即 out[t] = function(in[t])
  • 如果输出发生在输入周期的下一个 clock 周期单元,那么我们称这种逻辑为 Sequential,即 out[t] = function(in[t-1])

使用序列逻辑可以实现迭代的效果:也就是上一个 clock 的计算结果可以直接在当前周期使用,比如: