Mips 是一个;单周期cpu“;如果使用异步组件,是否可能?

Mips 是一个;单周期cpu“;如果使用异步组件,是否可能?,mips,cpu,hardware,cpu-architecture,retro-computing,Mips,Cpu,Hardware,Cpu Architecture,Retro Computing,我听过“单周期Cpu”这个术语,并试图理解单周期Cpu的真正含义。是否有一个明确的商定定义和共识,这意味着什么 我遇到的一些自制“单周期cpu”似乎同时使用时钟的上升沿和下降沿来完成单个指令。通常,上升沿用作提取/解码,下降沿用作执行 然而,在我的阅读中,我发现了这里提出的合理观点… 我觉得这是真的 需要上升沿和下降沿(或高相位和低相位)实际上与需要运行速度两倍的单个时钟的两个周期的上升沿相同;这将是一个“两个周期”的CPU,不是吗 那么,当上升沿和下降沿都被积极用于状态改变时,是否诚实地说设

我听过“单周期Cpu”这个术语,并试图理解单周期Cpu的真正含义。是否有一个明确的商定定义和共识,这意味着什么

我遇到的一些自制“单周期cpu”似乎同时使用时钟的上升沿和下降沿来完成单个指令。通常,上升沿用作提取/解码,下降沿用作执行

然而,在我的阅读中,我发现了这里提出的合理观点…

我觉得这是真的

需要上升沿和下降沿(或高相位和低相位)实际上与需要运行速度两倍的单个时钟的两个周期的上升沿相同;这将是一个“两个周期”的CPU,不是吗

那么,当上升沿和下降沿都被积极用于状态改变时,是否诚实地说设计是“单周期CPU”

似乎真正的单周期cpu必须在单时钟周期的单时钟边缘上执行所有状态更改操作

我可以想象,如果数据存储都是同步的,这样的事情是可能的。如果我们有一个已经解决的同步系统,那么在下一个时钟边缘,我们可以将结果时钟记录到同步数据存储中,同时将程序计数器时钟记录到下一个地址

但是,如果目标数据存储是例如异步RAM,那么在存储该数据时,控制线将发生变化,从而导致意外行为

我错了吗?有没有在混合中包含异步存储的“单周期cpu”的例子

在设计中使用异步RAM似乎意味着必须使用至少两个逻辑时钟周期来实现状态更改

当然,更复杂的是,我们可以添加一个cpu,它使用一个边缘,其中指令只使用SynchronousOut组件,但在存储异步数据时需要额外的周期;但这仍然不是一个单周期的cpu,而是一个基本上是单周期的cpu

因此,任何写入异步RAM(或其他异步组件)的CPU都不能被视为单周期CPU,因为整个指令不能在单个时钟边缘上执行。RAM写入需要两条边(即下降和上升),这打破了单时钟原则。

那么,是否有一个普遍接受的单周期CPU,我们是否一致地应用这个术语

怎么回事

(也张贴在我的hackday日志和hackday的一个私人团体上)

=====

更新:看看简单的MIP,似乎模型使用了同步内存,因此可能可以在单边缘广告上运行——也许是这样——因此保证了“单周期”类别。 也许FPGA内存总是同步的——我不知道这一点

但是这个术语在其他地方使用的不一致吗?比如像大多数自制的TTL计算机一样

还是我完全错了

====

更新:

有些人可能误解了我的观点

许多家用brew TTL cpu声称处于“单周期cpu”状态(在本次讨论中,不感兴趣的是更复杂的执行管道或其他操作的野兽)

这些CPU的单周期通常意味着它们会在时钟的一个边缘推进PC,然后使用时钟的另一个边缘更新触发器。或者他们将使用时钟的另一个阶段来更新异步组件,如锁存器和sram

然而,我提供的ZipCPU参考表明,使用相反的时钟边缘类似于使用第二个时钟周期或甚至第二个时钟。顺便说一句,Ben Eater在他的视频中甚至将他用来更新SRAM的反向时钟比作第二个时钟

我反对将“单周期CPU”用于此类CPU(基本上我见过的大多数/所有国产TTL CPU都是这样工作的),因为我同意ZipCPU的观点,即使用时钟的相反边缘(或相位)进行提交实际上与使用第二个时钟相同,这是对“单周期”主张的嘲弄

如果oposing edge的使用实际上与使用单个edge但使用双时钟周期相同,那么我认为使用该术语是有问题的。因此,我把ZipCPU的观点放在心上,并将这个词的意思收紧为使用单条边

另一方面,似乎完全有可能构建一个只使用同步组件(即边缘触发触发器)的CPU,它只使用一条边缘,在每条边缘上,我们将总线上的任何东西时钟到选择写入的任何设备上,同时推进PC。 在一条边和下一条同方向边之间,发生沉降

以这种方式,我们最终得到CPI=1,并且只使用一条边-这与使用时钟两条边的常见TTL CPU模式非常明显不同


顺便说一句,我对FPGA的印象是(我这里没有提到)FPGA中的存储元件都是同步触发器。我不知道,但我的阅读表明了这一点。无论如何,如果这是真的,那么一个普通的基于FPGA的CPU可能有一个CPI=1,并且只使用+ve边缘,因此这些可能很好地满足我对“单周期CPU”的狭义定义。此外,我的阅读表明,各种MIP的IMPL(可能是教育工作)可能符合我的定义ok。

该定义指出,单周期CPU每周期只需要一条指令。因此,从理论上可以得出这样一个结论,即还有其他CPU在每个周期中占用更多或更少的指令。您可以查看一些概念,如多周期处理器和流水线处理器(指令流水线)。流水线试图通过将i除以i,使处理器的每个部分都忙于某些指令
"Do not transition on any negative (falling) edges. 
Falling edge clocks should be considered a violation of the one clock principle, 
as they act like separate clocks.".