代码的运行时存储(嵌入式实验板区别与PC)

单片机运行的时候代码可以放到RAM中,可以放到 EEPROM中,还可以放到 FLASH里。它甚至可以刚才还在ram中运行着,过一会跳到了 FLASH里去运行。而不是像pc机一样把 EEPROM中的代码先读到ram中,然后再ram中运行。 计算机运行时代码主要在RAM里面,而不是用它的硬盘来运行。 即使他想要运行硬盘里面有代码,也是把代码调到ram里面来之后再运行, (这就是缺页中断后做的操作) 原因1: 访问速度的问题。 运行程序必然要频繁的访问代码,而把代码放到硬盘里必定要频繁的访问硬盘, 而cpu的执行速度和读取硬盘的速度差着好几个数量级。 总线结构决定的。 硬盘是外设,并不是真正意义上的存储器。它并不是总线上的一部分,CPU是不能直接对其内部数据单元寻址的, 而是通过IDE接口(注意叫做IDE接口,而不能叫做IDE总线)读取数据。 在PC中,CPU只能从存储器中运行程序,存储器包括ROM和RAM。ROM例如主板上BIOS部分,这跟MCU系统中的 FLASH中的BOOT作用是一样的。 现在的主板中的BIOS一般也是用 FLASH做的,可以升级,使用刷BIOS的工具就行了,不过没必要还是别乱刷,因为如果刷的过程中, 出现错误,就不能再引导系统了(双BIOS的主板除外)。而电脑启动之后,则一般是在RAM中运行的,包括BIOS部分,也被读出放入 到RAM中,以加快运行速度。而操作系统跟应用程序,则一定是在主存中运行的,从外设硬盘中将数据读入到主存中,然后在里面运行之 上述的比较过于笼统     低速单片机的处理过程确实如楼上各位所说。但是单片机的速度提高较快,高速单片机的内部结构逐步向通用CPU靠近,高性能单片机开始外挂 SDRAM,这时的单片机的执行过程就向通用CPU靠拢了。     与单片机实现简单的可以预测的控制和计算不同,通用CPU负担很多计算量很大,而且不可预测的任务,CPU的计算能力远远超出单片机,CPu的内核速度达到了GHz数量级,但是由于高速 SRAM的成本过高,只能做成CPU内部的cache等,外部存储器只能采用动态存储器( FLASH.html"> FLASH存 储器速度不过15MHz,远远不能适应CPU的速度)。目前存储器的速度是制约CPU性能的最大障碍,即使采用DDR RAM或是QDDR RAM,存储器的速度也不能满足CPU的接口速度要求,所以只好采用CPU内核/L1 cache /L2 cache /外部DRAM的体系,这就是通用CPU与单片机的本质区别,这样就决定了两者的执行过程不相同。CPU除了在启动时处于低速阶段可以从BIOS( FLASH.html"> FLASH存储器)中执行初始化以外,一旦完成初始化,就可以提升CPU速度到额定速度,这时CPU与 FLASH之间已经无法接口,只能在DRAM中或是CPU内部RAM/cache中执行程序了。

你可能感兴趣的:(EmbeddedSys,存储,嵌入式,flash,cache,ide,任务)