2009-10-10 73 views

回答

6

时钟时间假定全宽零等待状态存储器。内核执行该指令所用的时间是一个时钟周期。

有一段时间,每条指令花费了不同的时钟周期数。内存也相对较快,通常为零等待状态。在管线之前还有一段时间,如果指令具有存储器操作,则必须刻录时钟周期,然后进行时钟周期解码,然后执行时钟周期,再加上额外的时钟周期以获得可变长度指令和额外的时钟周期。

今天的时钟速度很高,芯片的房地产相对便宜,所以一个时钟周期的加法或乘法是常态,管道和高速缓存也是如此。处理器时钟速度不再是性能的决定性因素。内存相对较贵且速度较慢。因此,缓存(配置,数量和大小),总线大小,内存速度,外围设备速度决定了系统的整体性能。通常提高处理器时钟速度,但不提高内存或外围设备的性能增益,但在某些情况下,可能会使其速度变慢。

内存大小和等待状态不是参考手册中时钟执行规范的一部分,他们只是在讨论每个指令的时钟单位内核本身花费的成本。如果它是指令和数据总线分离的哈佛架构,那么在存储器周期中可能有一个时钟。如果不是在那之前,指令的取指发生在至少前一个时钟周期,所以在时钟周期开始时,指令准备就绪,解码和执行(读取存储器周期)发生在结束时的一个时钟期间一个时钟周期将读取结果锁存到寄存器中。如果指令和数据总线是共享的,那么你可以争辩说它仍然在一个时钟周期内完成,但是你不能获取下一条指令,所以在那里有一个失速的位置,他们可能会欺骗并且调用那个时钟周期。

+0

请问你能否向我确认,指令高速缓存(因此在提取阶段)或数据高速缓存(因此在内存阶段)的高速缓存未命中会导致流水线延迟,这是存储器延迟的长度? – 2012-09-21 09:11:08

+1

确定提取是否错过,并且在运行中没有其他事务,则内存控制器会等待该提取完成。这并不意味着管道的摊位,如果它确实拖延了,并不意味着它会停顿一段时间。你的问题是关于数据周期而不是指令(取指)周期,你没有提到缓存或缓存。对于数据缓存,您可能需要使用mmu或其他某种方案,mmu还会为提取或数据循环增加时钟周期。再次,管道不一定会停滞,如果不是这样的话,也不会受到内存周期的影响。 – 2012-09-21 13:54:38

+0

感谢您的回复,但我实际上并不清楚数据周期与指令(取指)周期之间的关系。我对CPU体系结构的了解非常有限,我遇到这个问题的同时遇到了向代码添加代码时速度更快的应用程序问题。 – 2012-09-21 15:32:16

1

我的理解是:当说一些指令需要一个周期时,并不是指令将在一个周期内完成。 要指导pipe-line假设你的CPU有5级管线,如果按顺序执行,该指令需要5个周期。