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

Memory 一个单周期指令是否需要一个周期,即使RAM很慢?,memory,cpu,cpu-cycles,Memory,Cpu,Cpu Cycles,我使用的是嵌入式RISC处理器。有一件基本的事情我很难弄清楚 CPU手册明确规定,指令ld r1、[p1](在C:r1=*p1中)需要一个周期。寄存器r1的大小为32位。然而,内存总线只有16位宽。那么它如何在一个周期内获取所有数据呢?我的理解是:当说某些指令需要一个周期时,并不是说指令将在一个周期内完成我们应该计算指令的数量。假设您的CPU有5级管道,如果按顺序执行,该指令将需要5个周期 时钟时间假定为全宽零等待状态内存。内核执行该指令所需的时间是一个时钟周期 有一段时间,每条指令占用不同的时

我使用的是嵌入式RISC处理器。有一件基本的事情我很难弄清楚


CPU手册明确规定,指令ld r1、[p1](在C:r1=*p1中)需要一个周期。寄存器r1的大小为32位。然而,内存总线只有16位宽。那么它如何在一个周期内获取所有数据呢?

我的理解是:当说某些指令需要一个周期时,并不是说指令将在一个周期内完成我们应该计算指令的数量。假设您的CPU有5级管道,如果按顺序执行,该指令将需要5个周期

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

有一段时间,每条指令占用不同的时钟周期数。当时内存也相对较快,通常为零等待状态。管道之前也有一段时间,您必须烧录一个时钟周期获取,然后是一个时钟周期解码,然后是一个时钟周期执行,再加上可变长度指令的额外时钟周期,以及如果指令具有内存操作,则额外的时钟周期

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


在参考手册中,内存大小和等待状态不是时钟执行规范的一部分,它们只讨论内核本身的成本,每个指令的时钟单位。如果它是哈佛体系结构,其中指令和数据总线是分开的,那么在内存周期中一个时钟是可能的。指令的提取至少发生在前一个时钟周期(如果不是在前一个时钟周期之前),因此在时钟周期开始时,指令准备就绪、解码和执行(读取内存周期)发生在一个时钟周期结束时的一个时钟期间,读取的结果被锁存到寄存器中。如果指令和数据总线是共享的,那么您可以说它仍然在一个时钟周期内完成,但您无法获取下一条指令,因此那里有一点停顿,他们可能会欺骗并调用该时钟周期。

请您向我确认,指令缓存上的缓存未命中(因此处于获取阶段)或者在数据缓存上(因此在内存阶段)导致管道暂停,其长度是内存延迟?确保如果提取未命中并且没有其他事务在进行中,则内存控制器等待该提取完成。这并不意味着管道暂停,如果管道暂停,也不意味着它会暂停一段特定的时间。您的问题是关于数据周期而不是指令(获取)周期,并且您没有提到一个或多个缓存。对于数据缓存,您可能需要mmu或其他方案,mmu也会为回迁或数据周期添加时钟周期。同样,管道也不一定会停止,如果是这样的话,也不一定是因为内存周期的长度。感谢您的回复,但事实上我并不清楚数据周期和指令(获取)周期之间的关系。我对CPU体系结构的了解非常有限,当我在一个应用程序中遇到问题时,我遇到了这个问题,当我向它添加代码时,它的速度更快。通过添加代码,你正在改变缓存中的混合内容,这可能是它更快的原因。有时,您可以在启动代码中添加或删除NOP来移动整个程序,并在各种事情与缓存线对齐时看到性能变化。如果您有一个缓存,实际上您有一个单独的指令缓存和数据缓存,然后,指令回迁被指令缓存…缓存…在指令缓存中,数据读取和写入使用数据缓存进行缓存。指令周期不会影响数据缓存,也不会影响数据性能等。缓存意味着内存系统速度较慢,因此代码性能可能/将对代码/指令和缓存的交互方式敏感。我猜从你的回答来看,你需要在维基百科或其他地方做一些关于这方面的研究。