共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 |