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