在研究一些定制的CPU时,我注意到与现代CPU相比,它们的工作频率相对较低(约数MHz)。有电子工程学上的限制的原因,例如面包板吗?如果是,如何确定设计可以达到的最大频率?
在研究一些定制的CPU时,我注意到与现代CPU相比,它们的工作频率相对较低(约数MHz)。有电子工程学上的限制的原因,例如面包板吗?如果是,如何确定设计可以达到的最大频率?
Answers:
它主要与互连的长度和通过门的传播延迟有关。如果将CPU精简到本质,它就是一台反馈机。一堆组合逻辑电路在机器的当前状态上计算一些布尔函数,这些函数确定新状态,当新的时钟沿到达时,新状态由时序电路锁存。组合电路都有延迟。时钟周期不能短于通过这些门的最慢路径产生稳定结果所花费的时间,因为单个错误的位会停止显示。
此外,顺序逻辑具有时序要求。在时钟边沿到达之前,有一些最小建立时间,输入必须稳定,然后在一定的保持时间内保持稳定。如果违反这些,状态将变为垃圾。
传播延迟是由诸如寄生电容能够充电的速度,面对电感时能够建立多快的电流以及硅器件能够转换的速度之类的因素引起的。例如,具有较小基极的双极晶体管的开关速度可以比具有较大基极的双极晶体管的开关速度快,因此芯片上的微小晶体管将比分立晶体管快。
在我删除的较早答案中,我写了关于传输线效果的文章。但是我不认为这些影响甚至没有以我们正在讨论的速度出现在画面中,因为例如在10 Mhz时,波长仍然约为30米。因此,在普通尺寸的电路板上,几兆赫兹的脉冲仍然同时到达铜网的所有部分。
因此,如果您使用分立组件制造CPU,您将无法以快速的开关时间实现相同的小型组件,而相同的接近度却可以最大限度地减少杂散电容和电感。
尽管如此,在1960年代,古老的分立组件机器的确比这些自制机器运行得快得多。花了一些时间和狡猾到达那里。例如,IBM 360 Model 44(1964)的运行速度为4 Mhz。那可能仍然是“自制速度”,但是几年后的1969年发布的CDC 7600超过了36 Mhz。Wikipedia的文章http://en.wikipedia.org/wiki/CDC_7600暗示了一些技巧,例如:
“与往常一样,Cray的设计还集中于减小尺寸,缩短信号路径,从而提高工作频率的封装。……每个电路模块实际上由多达六块PC板组成,每块PC板上装有超小型电阻器,二极管六块板堆叠在一起,然后沿它们的边缘互连,从而形成了非常紧凑但基本上不可修复的模块。”
因此,由于一些与构建质量和布局有关的混杂影响,自制CPU不一定能发挥其真正的潜力。不过,任何人都应该赞扬那些使用独立的集成电路和运行在几兆赫兹的分立组件来构建CPU的人。
作为一名前高中生,他用7400系列TTL建造了专用计算机,并在科学博览会上获得了一些殊荣,我观察到了这些因素,这些问题使计算机无法尽快运行:
面包板上的杂散电容。每对相邻的连接器之间有几个pF。有限的脉冲边沿上升/下降时间并在某些地方增加了串扰。这可能是最大的因素。
抓斗筹码的变化。(任何人还记得Poly-Paks吗?)74LSxx,74Hxx,74xx具有不同的传播延迟和其他特性,使得不可能以高于几MHz的时钟速度使信号保持同步。
Cheapo静态存储芯片,同样来自抓包或其他不合格来源。他们只是无法可靠地读取或写入超出特定速率的数据。
我的测试仪器仅限于自制信号发生器,5MHz带宽示波器和临时陪审团操纵的数字电路。难以检查已被低通滤波成颤抖糊状的数字信号的信号完整性,时序,幅度。
如今,除非是古董买家,否则很难找到5MHz示波器。即使在0.1英寸间隔的DIP封装中,各种更好的芯片也一样容易获得,除了我很长时间以来没有以抓斗的方式见过很多。然而,插座式面包板并没有太大变化。对于任何前卫的创意数字项目,杂散电容仍然是一个速度杀手。
通过使用自制的PCB避免面包板是避免杂散电容的最佳方法,但是当然需要更多的精力和时间。
我认为主要原因是随着频率的增加,面包板连接的阻抗也会增加并限制电路的最终速度。
面包板中的每个连接都具有低但非零的电感。随着频率越来越高,您需要考虑这些影响。电线的阻抗可通过以下方式找到:
其中L是导线的电感。最终,Z将变得足够高,以至于没有电流流过,并且电路将停止工作。要找到该数字的确切数值将非常复杂,尤其是因为面包板的走线彼此相邻,并且从该公式中可以稍微改变每根导线的阻抗。如果您确实想要一个(不精确的)数字,您可以在这里尝试计算导线的电感(因此阻抗)。如果知道部件可以使用的最低电流,则可以在达到该极限之前确定最大频率。
其他人回答了“为什么”。这是确定最大速度的方法。
对于自制机器,它归结为两个因素。您正在使用的芯片的传播延迟以及在通过CPU设计的最长路径上需要使用的芯片数量。
例如,74HC574(8位寄存器)的最大传播延迟约为41ns(摘自其数据手册)。现在,让我们说通过CPU设计的最长路径要求它经过8个不同的芯片。将这8个信号中的每个信号的传播延迟加起来,可以想象一下它的延迟时间为333ns。如果1000ns与1Mhz相同,则最高速度为3Mhz。
在实践中,您可能希望将自己的速度限制在2Mhz之类,以确保稳定的设计。即使您认为每十亿周期只错过一次计时,您仍然会遇到麻烦。100亿除以300万意味着您每3333秒执行一次错误,大约每小时一次。每小时崩溃一次的机器是不好的!
为了使其运行更快,您可以使用速度更快的芯片和/或更改设计以减少最慢路径中的芯片数量。您看到的最快的自制速度约为4Mhz,这使您可以在250ns的时间内完成每个周期。