Embedded 试图通过示例来理解时钟周期是什么

Embedded 试图通过示例来理解时钟周期是什么,embedded,microcontroller,clock,microprocessors,Embedded,Microcontroller,Clock,Microprocessors,我正试图完全理解时钟周期是什么,所以我提出了一个测试示例,希望有人能够确认或消除,并提供更好的理解。如果我有一行简单的代码,一个while循环,在设备上运行 while(true) { int x = 5; } 命令:intx=5是否每个时钟周期执行一次?换句话说,时钟速度是指设备在每单位时间内读取和执行命令的速度吗?我从哪里开始 任何处理器都有一个“时钟”,确保在下一件事情发生之前,电子器件有时间从一种状态转换到另一种状态。在现代设备的速度下,没有什么是“瞬时的”——一个“台阶”变成了一

我正试图完全理解时钟周期是什么,所以我提出了一个测试示例,希望有人能够确认或消除,并提供更好的理解。如果我有一行简单的代码,一个while循环,在设备上运行

while(true)
{
  int x = 5;
}
命令:intx=5是否每个时钟周期执行一次?换句话说,时钟速度是指设备在每单位时间内读取和执行命令的速度吗?

我从哪里开始

任何处理器都有一个“时钟”,确保在下一件事情发生之前,电子器件有时间从一种状态转换到另一种状态。在现代设备的速度下,没有什么是“瞬时的”——一个“台阶”变成了一个“斜坡”,即使是很短的轨迹也会导致电信号传输的延迟

根据CPU的体系结构,它可以在“一个时钟周期”内完成某些操作,而其他操作则需要“多个周期”。想想长除法——你做了一系列的减法移位运算,直到完成了运算的前一部分,你才知道下一步需要做什么。此外,更容易看到如何在一个周期内完成完整的操作

当一条特定的“高级”指令被翻译成机器代码时,生成的代码可能需要一个或多个周期,而一条简单的指令可能需要一个或多个步骤。根据编译器、目标和选择的优化,上述代码中可能会出现以下任何情况:

  • 编译器意识到“while”条件始终为真,并且循环内部没有任何变化。它进一步意识到您从未使用x的值,并且它选择根本不执行指令

  • 编译器决定为
    int
    变量
    x
    使用内置寄存器,并在编译时对其进行初始化。循环执行期间不花费时间

  • 编译器将“5”加载到寄存器中,在表中查找x的偏移量,计算指针,然后将寄存器复制到偏移量地址。可以是任意数量的循环


不确定这是否真的对你有帮助-但问题相当复杂…

不幸的是,它并不像你建议的那么简单

你可能想看看维基百科的相关文章

简单地说,时钟周期是同步工作电路从一个定义状态切换到下一个定义状态所需的时间

事实上,它通常与CPU执行指令所需的时间有关。您可能想看看CPU手册,执行时间通常以执行所需指令所需的时钟周期数表示

不幸的是,事实并非如此简单,因为有些聪明的CPU在满足特殊要求的情况下能够更快地执行指令。例如,通过指令管道推送指令,cpu可能已经开始对下一条指令进行操作,而占用一个以上时钟周期的部分previos指令仍在处理中

如果指令的重新排序不改变程序流程,或者指令提前得到推测性的计算,则指令甚至可能被重新排序


另一方面,如果必须从内存中提取指令,则一条指令按时钟周期运行可能需要更长的时间,这将花费更多的时间。

时钟周期只是驱动处理器逻辑的振荡器的单个周期,处理器在该周期内可能实现的功能取决于处理器体系结构和其他因素,如内存速度

示例中的代码是高级语言,如果直接翻译,几乎可以肯定会翻译成多个机器级指令。例如,在伪机器代码中:

loop:
   MOV addrx,#5
   JMP loop
这将是每个循环至少两个机器循环。高级代码和生成的机器指令之间几乎没有或根本没有确定的关系;虽然在这个简单的例子中,似乎是这样

处理器如何实现指令集使问题更加复杂。典型的RISC处理器在一个周期内执行一条指令,而在CISC处理器上,不同的单独指令根据其复杂度的不同而采用不同的周期数

另一个考虑因素是内存总线延迟。通常,处理器执行指令的速度比访问内存的速度快,闪存尤其如此。访问较慢内存的指令可能会引入等待状态,在这种状态下,处理器将暂停,直到数据到达

有些处理器能够并行执行指令,允许在一个周期内执行多条指令。另一些使用SIMD(单指令多数据)指令,可以同时对不同的数据执行相同的操作

另一种影响指令吞吐量的技术是管道排列,其中一条指令可能需要多个周期,但每个周期都可以启动一条新指令,因此,如果5条四周期指令逐个启动,则每个周期产生一次结果

一些处理器采用哈佛体系结构,使用单独的总线,允许同时获取数据和指令

其他技术用于保持指令吞吐量,例如分支预测。高级语言编译器通常会生成能够最大限度地发挥上述所有技术潜力的代码

通常,为特定体系结构提供的性能度量是MIPS/MHz,它表示每个时钟周期(在多个时钟周期中摊销)通常执行的指令数。手臂