为什么CPU需要时钟这种概念?

本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/132

最近在研究计算机里的基本逻辑电路,想到一个问题:为什么CPU需要时钟这样的概念?

首先考虑如下逻辑电路:

当A=B=1时,Q=0。当输入信号发生变化时,逻辑元件不会立即对输入变化做出反应,会有一个传播时延(propagation delay)。当B变化为0时,由于B也作为XOR的直接输入,所以XOR异或门会立即感知一个输入变为0的状态变化,XOR输出变为了1。但是由于传播时延的作用,AND与门的输出会过一小段时间才变为0,XOR的输出会在变为1后隔一小段时间重现变为0。表现为下图就是这样:

上面这种现象叫作空翻(race condition),即指输出中出现了一个不希望有的脉冲信号。

一个简单的办法就是在输出端放置一个边沿触发器:

边沿触发器的作用就是只有当CLK端输入从0变到1时,数据端D的输入才会影响边沿触发器的输出。这样,所有的传播时延都会被边沿触发器所隐藏掉,这时Q端的输出将变得稳定。比如:

其中灰色的部分代表没有边沿触发器时的Q端输出状态。我们可以看出,当有了边沿触发器后,Q端的输出变得稳定,基本消除了传播时延。

从上面的例子我们可以看出CPU为什么要时钟:目前绝大多数的微处理器都是被同步时序电路所驱动,而时序电路由各种逻辑门组成。正如上面说的那样,逻辑门需要一小段时间对输入的变化做出反应(propagation delay)。所以需要时钟周期来容纳传播时延,并且时钟周期应当大到需要容纳所有逻辑门的传播时延。

当然,目前也有Asynchronous sequential logic,即不需要时钟信号做同步。但是这种异步逻辑电路虽然速度比同步时序电路快,然而设计起来比同步时序电路复杂的多,并且会遇到上面说的空翻现象(race condition),所以,现在绝大多数的CPU还是需要时钟做信号同步的。

参考资料:

原文地址:https://www.cnblogs.com/zhangyachen/p/8167450.html

时间: 2024-10-11 11:35:53

为什么CPU需要时钟这种概念?的相关文章

SoC和cpu的区别&外设概念

1.SoC: SoC = System on Chip  (在一个芯片里面做一个系统) *System这里可以理解为:整体的一个电路系统,完成一个具体功能的东西 *在早期,一个由Nand控制器.UART.LCD控制器.CPU构成的系统是在PCB板上,Nand控制器.UART.LCD控制器.CPU每一个都是一个芯片(chip),通过PCB走线连接起来. *现在,随着半导体工业的发展,Nand控制器.UART.LCD控制器.CPU都集成在一个芯片里,通过芯片内部总线连接,通信的速度和效率就更高. *

《我的一天时钟》概念上市,Android时钟应用,冲击你的想象力

<我的一天时钟>Android生活类应用是一个极其有用的概念性时间提醒工具,他用一个容器来代表一天,向里面填充东西来代表一天的时间的过去,用这样的概念形式让每个人充分知道时光的流逝,珍惜好每天的每时每刻,让生命充满价值的归宿!快开客 百度网盘下载地址: http://pan.baidu.com/s/1qWoaR5E 豌豆荚下载地址: http://apps.wandoujia.com/apps/com.lxc.dayoftimer

时钟同步概念

CPU中有个部件是时钟发生器提供时钟信号来“同步”系统各器件(CPU.内存.总线等)的工作的.这里的同步是如何进行的? 电信号以低电压和高电压来区分1和0,假如我们要传输一段01010101的电信号,只要根据变化就能区分出来得到正确的解析,但是如果我们需要传输一段0000的电信号,你就会发现一个问题,那就是我到底传输了几个0?因为电信号一直没有变化,无法区分,所以时钟信号的作用就在这里,根据时间间隔来分割每一段电信号. 参考: 时钟分频原理详解 未完待续.. 原文地址:https://www.c

CPU、内存通俗概念

在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作.存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存,港台称之为记忆体).内存内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成.内存的特点是存取速率快.内存是电脑中的主要部件,它是相对于外存而言的.我们平常使用的程序,如Windows操作系统.打字软件.游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能

实时时钟、系统时钟和CPU时钟的区别

http://blog.sina.com.cn/s/blog_68f909c30100pli7.html 实时时钟:RTC时钟,用于提供年.月.日.时.分.秒和星期等的实时时间信息,由后备电池供电,当你晚上关闭系统和早上开启系统时,RTC仍然会保持正确的时间和日期. 系统时钟:是一个存储于系统内存中的逻辑时钟.用于系统的计算,比如超时产生的中断异常,超时计算就是由系统时钟计算的.这种时钟在系统掉电或重新启动时每次会被清除. CPU时钟:即CPU的频率,当然这里的时钟频率指的是工作频率,即外频,还

linux 时钟源初步分析linux kernel 时钟框架详细介绍

初步概念: 看datasheet的关于时钟与定时器的部分, FCLK供给cpu, HCLK供给AHB总线设备(存储器控制器,中断控制器.LCD控制器.DMA.USB主机控制器等), PCLK供给APB总线上的设备(watchdog.IIS.i2c. pwm.定时器.ADC.uart.gpio.rtc.spi) 上电时 fclk的时钟等于外部时钟fin, 然后等待LOCKTIME后, 依照MPLLCON寄存器的设置,倍频到高频. UPLLCON专用于USB同于MPLLCON. 关于分频: CLKD

Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)

在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件,tick事件或者用于全局的时间管理(jiffies和时间的更新),或者用于本地cpu的进程统计.时间轮定时器框架等等.周期性时钟虽然简单有效,但是也带来了一些缺点,尤其在系统的功耗上,因为就算系统目

LPC1768菜鸟学习之时钟配置

LPC1768的时钟源可以来自三个: 1)内部RC振荡器 内部振荡器可看作看门狗定时器的时钟源,也可作PLL0和cpu的时钟源,但是无法作为usb的时钟源,因为精度达不到.而且如果CAN波特率高于100kb/s,则也不适用了.在系统上电时,LPC1768都使用内部振荡器,直到软件将其切换为另一种可用的时钟源. 2)主振荡器 主振荡器可作为CPU的时钟源,需要通过分频和倍频进行配置使用.基本会使用主振荡器作为时钟源 3)RTC振荡器 RTC振荡器可提供1Hz-32kHz的RTC时钟输出,可用作PL

7th.关于系统时钟的设置

言简意赅版本: 开启MPLL 设置LOCKTIME寄存器 (设置锁定时间) 设置MPLLCON寄存器(设置主频与FCLK的关系) 设置CLKDIVN寄存器(设置FCLK,HCLK,UCLK的倍数关系) MPLLCON参照官方提供参数配置即可. 详细情况 开发板在没有开启时钟前,整个开发板全靠一个12MHz的晶振提供频率来运行,当MPLLCON存入初值,并开始生效后,S3C2440A可以正常工作在400MHz下.开发板的主板上的外设和CPU也有一个频率限度,ARM920T内核的S3C2440的最高