(截图来自MOOC平台华中科技大学计算机组成原理课程)
数据通路就是执行部件之间传送信息的路径,由控制信号控制,受始终驱动。
以寄存器数据通路为例:将寄存器A中的值送到寄存器B中,那么需要给出一个RegAout的控制信号,输出A中数据,经过一段组合逻辑到达寄存器B,此时要给寄存器B一个RegBin的控制信号,让寄存器B接收数据。
那么在这个过程中,CLK时钟信号起什么作用,始终频率又和什么有关了?
寄存器由D触发器组成,一个D触发器相当于一个储存单元,能够储存一位数据。
在时钟触发前,新到来的数据Data需要稳定一段时间,而时钟触发后,经过一段时间的延迟Clk-to-Q,新来的数据Data到达输出端将Q变换为新值,而此时Data仍需要保持一段时间,叫做Hold Time。
对比到寄存器来看:Data先经过保持一段Setup Time,时钟触发后,再保持一段Hold Time,而经过Clk-to-Q的延迟后,Q获得了新值,再经过组合逻辑抵达寄存器B。
那么在这个过程中,两个时钟触发之间的时间就包括一个Clk-to-Q的延迟时间加上关键路径时延(即通过组合逻辑的时间)、一个Setup Time。
那么要想提高时钟频率,就需要减少关键路径时延。
在这个过程中可能还会出现保持时间违例的问题。
当寄存器B碰到时钟触发后,对数据还需要有一个保持时间Hold Time,而与此同时A寄存器输入端也会遇到时钟触发,触发后经过Clk-to-Q + 最短路径时延的时间,就会到达寄存器B的输入端,如果此时B还处于Hold Time时间段,而新到来的数据又要进入Setup Time时间段,就会出现问题。
因此,Clk-to-Q + 最短路径时延的时间应到要大于Hold Time。