共2条
1/1 1 跳转至页
PC 单片机与PC机程序运行的差异(瞎想)
问
现象:
单片机运行的时候代码可以放到RAM中,可以放到EEPROM中,还可以放到FLASH里。它甚至可以刚才还在ram中运行着,过一会跳到了flash里去运行。而不是像pc机一样把eeprom中的代码先读到ram中,然后再ram中运行。
计算机运行时代码主要在RAM里面,而不是用它的硬盘来运行。
即使他想要运行硬盘里面有代码,也是把代码调到ram里面来之后再运行,
(这就是缺页中断后做的操作)
原因1:
访问速度的问题。
运行程序必然要频繁的访问代码,而把代码放到硬盘里必定要频繁的访问硬盘,
而cpu的执行速度和读取硬盘的速度差着好几个数量级。
原因2:
出于保护硬盘的目的
eeprom,flash在芯片中是固定的。写eeprom,flash的次数有限制,读应该没有限制,所以可以尽管去读
而访问硬盘是靠硬盘的高速运转来实现的。频繁的访问硬盘(即使只有读没有写)也会影响硬盘的寿命。 答 1: 有一定道理. 答 2: 好象错误不少... 答 3: 总线结构决定的。硬盘是外设,并不是真正意义上的存储器。它并不是总线上的一部分,CPU是不能直接对其内部数据单元寻址的,
而是通过IDE接口(注意叫做IDE接口,而不能叫做IDE总线)读取数据。
在PC中,CPU只能从存储器中运行程序,存储器包括ROM和RAM。ROM例如主板上BIOS部分,这跟MCU系统中的FLASH中的BOOT作用是一样的。
现在的主板中的BIOS一般也是用FLASH做的,可以升级,使用刷BIOS的工具就行了,不过没必要还是别乱刷,因为如果刷的过程中,
出现错误,就不能再引导系统了(双BIOS的主板除外)。而电脑启动之后,则一般是在RAM中运行的,包括BIOS部分,也被读出放入
到RAM中,以加快运行速度。而操作系统跟应用程序,则一定是在主存中运行的,从外设硬盘中将数据读入到主存中,然后在里面运行之。 答 4: 上述的比较过于笼统 低速单片机的处理过程确实如楼上各位所说。但是单片机的速度提高较快,高速单片机的内部结构逐步向通用CPU靠近,高性能单片机开始外挂SDRAM,这时的单片机的执行过程就向通用CPU靠拢了。
与单片机实现简单的可以预测的控制和计算不同,通用CPU负担很多计算量很大,而且不可预测的任务,CPU的计算能力远远超出单片机,CPu的内核速度达到了GHz数量级,但是由于高速SRAM的成本过高,只能做成CPU内部的cache等,外部存储器只能采用动态存储器(Flash存储器速度不过15MHz,远远不能适应CPU的速度)。目前存储器的速度是制约CPU性能的最大障碍,即使采用DDR RAM或是QDDR RAM,存储器的速度也不能满足CPU的接口速度要求,所以只好采用CPU内核/L1 cache /L2 cache /外部DRAM的体系,这就是通用CPU与单片机的本质区别,这样就决定了两者的执行过程不相同。CPU除了在启动时处于低速阶段可以从BIOS(Flash存储器)中执行初始化以外,一旦完成初始化,就可以提升CPU速度到额定速度,这时CPU与FLASH之间已经无法接口,只能在DRAM中或是CPU内部RAM/cache中执行程序了。
答 5: 感谢大家原来不能再硬盘里直接运行代码的原因是这个啊。
谢谢了
单片机运行的时候代码可以放到RAM中,可以放到EEPROM中,还可以放到FLASH里。它甚至可以刚才还在ram中运行着,过一会跳到了flash里去运行。而不是像pc机一样把eeprom中的代码先读到ram中,然后再ram中运行。
计算机运行时代码主要在RAM里面,而不是用它的硬盘来运行。
即使他想要运行硬盘里面有代码,也是把代码调到ram里面来之后再运行,
(这就是缺页中断后做的操作)
原因1:
访问速度的问题。
运行程序必然要频繁的访问代码,而把代码放到硬盘里必定要频繁的访问硬盘,
而cpu的执行速度和读取硬盘的速度差着好几个数量级。
原因2:
出于保护硬盘的目的
eeprom,flash在芯片中是固定的。写eeprom,flash的次数有限制,读应该没有限制,所以可以尽管去读
而访问硬盘是靠硬盘的高速运转来实现的。频繁的访问硬盘(即使只有读没有写)也会影响硬盘的寿命。 答 1: 有一定道理. 答 2: 好象错误不少... 答 3: 总线结构决定的。硬盘是外设,并不是真正意义上的存储器。它并不是总线上的一部分,CPU是不能直接对其内部数据单元寻址的,
而是通过IDE接口(注意叫做IDE接口,而不能叫做IDE总线)读取数据。
在PC中,CPU只能从存储器中运行程序,存储器包括ROM和RAM。ROM例如主板上BIOS部分,这跟MCU系统中的FLASH中的BOOT作用是一样的。
现在的主板中的BIOS一般也是用FLASH做的,可以升级,使用刷BIOS的工具就行了,不过没必要还是别乱刷,因为如果刷的过程中,
出现错误,就不能再引导系统了(双BIOS的主板除外)。而电脑启动之后,则一般是在RAM中运行的,包括BIOS部分,也被读出放入
到RAM中,以加快运行速度。而操作系统跟应用程序,则一定是在主存中运行的,从外设硬盘中将数据读入到主存中,然后在里面运行之。 答 4: 上述的比较过于笼统 低速单片机的处理过程确实如楼上各位所说。但是单片机的速度提高较快,高速单片机的内部结构逐步向通用CPU靠近,高性能单片机开始外挂SDRAM,这时的单片机的执行过程就向通用CPU靠拢了。
与单片机实现简单的可以预测的控制和计算不同,通用CPU负担很多计算量很大,而且不可预测的任务,CPU的计算能力远远超出单片机,CPu的内核速度达到了GHz数量级,但是由于高速SRAM的成本过高,只能做成CPU内部的cache等,外部存储器只能采用动态存储器(Flash存储器速度不过15MHz,远远不能适应CPU的速度)。目前存储器的速度是制约CPU性能的最大障碍,即使采用DDR RAM或是QDDR RAM,存储器的速度也不能满足CPU的接口速度要求,所以只好采用CPU内核/L1 cache /L2 cache /外部DRAM的体系,这就是通用CPU与单片机的本质区别,这样就决定了两者的执行过程不相同。CPU除了在启动时处于低速阶段可以从BIOS(Flash存储器)中执行初始化以外,一旦完成初始化,就可以提升CPU速度到额定速度,这时CPU与FLASH之间已经无法接口,只能在DRAM中或是CPU内部RAM/cache中执行程序了。
答 5: 感谢大家原来不能再硬盘里直接运行代码的原因是这个啊。
谢谢了
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |