Assembly 了解芯片的频率/振荡

Assembly 了解芯片的频率/振荡,assembly,microcontroller,pic,Assembly,Microcontroller,Pic,我完全不知道那是什么。 甚至不知道如何找到它。 我非常感谢您的帮助。在此上下文中,时钟频率或是CPU中单个命令或命令中最小的不可分割部分执行的速率。它是时钟周期长度的倒数 示例: Z80上的一个时钟周期持续250纳秒(因为其频率为4 MHz),而Phenom上的一个时钟周期持续0.333纳秒(其频率约为3 GHz) 在旧的Z80中,将8位数据从一个cpu寄存器移动到另一个寄存器需要4个时钟周期,而在phenom中,相同的操作需要一个周期,并且最多可以并行执行3个这样的指令 这显然取决于CPU的体

我完全不知道那是什么。 甚至不知道如何找到它。
我非常感谢您的帮助。

在此上下文中,时钟频率或是CPU中单个命令或命令中最小的不可分割部分执行的速率。它是时钟周期长度的倒数

示例: Z80上的一个时钟周期持续250纳秒(因为其频率为4 MHz),而Phenom上的一个时钟周期持续0.333纳秒(其频率约为3 GHz)

在旧的Z80中,将8位数据从一个cpu寄存器移动到另一个寄存器需要4个时钟周期,而在phenom中,相同的操作需要一个周期,并且最多可以并行执行3个这样的指令


这显然取决于CPU的体系结构,对于给定的CPU类型,执行速度和时钟频率几乎呈线性关系。

想想祖父或其他基于钟摆的时钟发出的滴答声。在这种情况下,一个完整的滴答循环通常是一秒钟。随着时钟和手表的出现,我们从重力和/或弹簧驱动的机械设备转变为水晶驱动的电子设备。某些晶体可以在电路中使用,从而产生电振荡。数字电子现在使用晶体,你可以得到高速和非常精确的时间。因此,在这种情况下,时钟是这个晶体振荡器的电输出,10000000Hz(或10MHz)时钟意味着每秒有1000万个电滴答声。将其输入AND、OR、AND和NOT逻辑,您就可以运行处理器和外围设备

让我们把讨论的时间限制在较旧的处理器或微控制器上,处理器、内存和所有东西都使用相同的时钟。有了这个时钟信号,数字逻辑就可以从内存中读取指令,并以某种派生速率执行这些指令。加载带有内存值的寄存器(读取)可能需要3个时钟周期,一个时钟周期用于从内存获取指令,另一个时钟周期用于解码并开始执行该指令,并且由于该指令是从内存读取的,内存不能同时做两件事(在此模型中)然后,这是从内存读取的第三个时钟周期,然后读取并执行下一条指令,依此类推。因此,由于这些原因,一些处理器会改变它们的执行时间,总是会从内存中获取指令,并进行解码和执行,并且每个步骤都会占用一个或多个时钟周期。一些处理器设计选择使用固定的时钟周期,例如每个指令周期使用4个时钟周期,该处理器的最长执行指令为4个时钟周期,而一些处理器可能只使用一个时钟周期

然后情况好转了,你听到了pipeline这个词,你看到了x86能够在每个时钟上执行一条指令的广告,或者是在每个时钟上执行多条指令的超标量广告。这有点误导。管道所做的就是创建一条装配线。想想工厂电视节目,它是如何制作的,还有其他的。制造挂锁的机器,在装配线上有许多步骤,每一步都执行一个简单的操作,在刻度盘上画上数字,将刻度盘移动到轴上,将刻度盘加轴插入装置中,等等。如果你只看最后一步,看起来他们在装配线的每个周期制造一个锁,实际上每个锁可能需要30个时钟。当处理器处于一个时钟周期时,管道上的一个成员从ram获取指令,下一个内存解码上一条指令,第三个在前两条指令执行,因此,当你听到冲洗管道或管道失速时,那就是说,装配线已经停止,或者他们必须停止装配线,扔掉线上的所有物品,重新开始。传统上,当您有一条分支指令,这意味着它之后的两条或几条指令将不被执行时,您必须刷新管道,并从分支有前导的地址开始重新填充它

如果你已经在这里呆了足够长的时间,或者在谷歌或维基百科上读了一些东西,你就会听说486DX处理器。这是现在非常普遍的事情的开始。在那之前,处理器中有一个基于单晶振荡器的时钟,你想在16MHz下运行你的处理器,你需要一个16MHz的时钟。有几个问题,一个是内存接口跟不上,一个非常简单的解决方案是你可以把处理器上的管脚放到内存上,以较低的速率与内存通信,比如说你的处理器以16Mhz的频率运行,你可以通过创建一个新的时钟来运行8Mhz的内存,这个时钟的速率是主时钟的一半。因此,从16mhz的滴答声开始,您只需在滴答声上将输出更改为内存。因此,第一个内部滴答声在内存总线时钟上打勾,第一个滴答声在内存输出上没有变化,第二个滴答声在内存总线时钟上打勾,第三个滴答声在内存上打勾,第四个滴答声在内存总线上打勾,依此类推。真正的问题出现在I/O本身,处理器上的所有引脚都无法以内部晶体管可以运行的时钟速率运行时。因此,对于486DX,他们所做的是使用一个25MHz的时钟,并使用一些模拟魔法将其转换为50MHz的时钟,在部件内部,部件边缘,内存和其他总线以25MHz或更低的频率运行,但处理器,只要你能足够快地输入指令(这导致了关于缓存的讨论),将以50MHz的频率运行管道。在没有暂停或刷新的情况下,每秒将有5000万条指令。当时创造一个稳定的2倍乘数是一件棘手的事情。但今天,它相对来说是微不足道的。现代千兆赫兹处理器不使用千兆赫兹时钟,它们通常使用100MHz左右的时钟