我使用的是嵌入式RISC处理器。我有一个基本的问题是找出问题。
CPU手册明确指出指令ld r1, [p1]
(在C:r1 = * p1中)需要一个周期。寄存器r1的大小是32位。但是,存储器总线只有16位宽。那么如何在一个周期内获取所有数据?
答案 0 :(得分:6)
时钟时间假设全宽零等待状态存储器。核心执行该指令所需的时间是一个时钟周期。
有一段时间每条指令采用不同数量的时钟周期。内存也相对较快,通常为零等待状态。在流水线之前还有一段时间,你必须刻录时钟周期取出,然后是时钟周期解码,然后是时钟周期执行,加上额外的时钟周期用于可变长度指令和额外的时钟周期(如果指令有存储器操作)。
今天时钟速度很高,芯片空间相对便宜,因此一个时钟周期增加或倍增是常态,管道和缓存也是如此。处理器时钟速度不再是性能的决定因素。内存相对昂贵且速度慢。因此,高速缓存(配置,数量和大小),总线大小,内存速度,外设速度决定了系统的整体性能。通常情况下,增加处理器时钟速度而不是内存或外设将显示最小的性能增益,在某些情况下它会使速度变慢。
存储器大小和等待状态不是参考手册中时钟执行规范的一部分,它们仅讨论核心本身以每个指令的时钟单位为代价。如果它是一个哈佛架构,其中指令和数据总线是分开的,则存储器周期可以有一个时钟。如果不是在那之前,指令的取指至少发生在前一个时钟周期,所以在时钟周期开始时指令就绪,解码和执行(读存储器周期)发生在一个时钟结束时。在一个时钟周期内,读取结果被锁存到寄存器中。如果指令和数据总线是共享的,那么你可以说它仍然在一个时钟周期内完成,但是你没有获取下一条指令,所以那里有一点停顿,它们可能会欺骗并调用那一个时钟周期。
答案 1 :(得分:1)
我的理解是:当说一些指令需要一个周期时,并不是指令将在一个周期内完成。 我们应该接受指令pipe-line的计数。假设你的CPU有5级管道线,如果顺序执行该指令将需要5个周期。