一个单周期指令是否需要一个周期,即使RAM很慢?

Joh*_*ski 2 memory cpu cpu-cycles

我使用的是嵌入式RISC处理器.我有一个基本的问题是搞清楚.

CPU手册清楚地说明指令ld r1, [p1](在C:r1 =*p1中)需要一个周期.寄存器r1的大小是32位.但是,存储器总线只有16位宽.那么如何在一个周期内获取所有数据呢?

old*_*mer 6

时钟时间假设全宽零等待状态存储器.核心执行该指令所需的时间是一个时钟周期.

曾经有一段时间每条指令采用不同数量的时钟周期.内存也相对较快,通常为零等待状态.在流水线之前还有一段时间,你必须刻录时钟周期,然后进行时钟周期解码,然后执行时钟周期,再加上可变长度指令和额外时钟周期的额外时钟周期(如果指令有内存操作).

今天时钟速度很高,芯片空间相对便宜,因此一个时钟周期增加或倍增是常态,管道和缓存也是如此.处理器时钟速度不再是性能的决定因素.内存相对昂贵且速度慢.因此,高速缓存(配置,数量和大小),总线大小,内存速度,外设速度决定了系统的整体性能.通常,增加处理器时钟速度但不增加内存或外设将显示最小的性能增益,在某些情况下可能会使速度变慢.

存储器大小和等待状态不是参考手册中时钟执行规范的一部分,它们仅讨论核心本身以每个指令的时钟单位为代价.如果它是一个哈佛架构,其中指令和数据总线是分开的,则存储器周期可以有一个时钟.如果不是在那之前,指令的取指至少发生在前一个时钟周期,所以在时钟周期开始时指令就绪,解码和执行(读存储器周期)发生在一个时钟结束时.在一个时钟周期内,读取结果被锁存到寄存器中.如果指令和数据总线是共享的,那么你可以说它仍然在一个时钟周期内完成,但是你没有获取下一条指令,因此那里有一点停顿,它们可能会作弊并调用那一个时钟周期.

  • 确定如果提取未命中并且没有其他事务在进行中,则内存控制器等待该提取完成。这并不意味着管道会停止,如果它确实停止,也不意味着它会停止特定的时间。您的问题是关于数据周期而不是指令(获取)周期,您没有提到一个或多个缓存。对于数据缓存,您可能需要一个 mmu 或其他一些方案,一个 mmu 还会为获取或数据周期添加时钟周期。同样,管道不一定停顿,如果不是,则不是由内存周期的长度造成的。 (2认同)