程序运行在 Flash RAM ?
转自:
cpu运行时程序是在flash中还是在RAM呢?【转】
x86 PC的CPU在运行程序时,将程序从外存(硬盘)中,调入到RAM中,CPU 从RAM中读取程序和数据; 而一般的单片机的程序是固化在flash(片内nor flash/片外nor flash)中,CPU运行时直接从flash中读取程序,从RAM中读取数据。
这种差异的原因是,二者采用不通的体系架构:
x86构架的cpu是基于冯.诺依曼体系的,即数据和程序存储在一起,而且pc机的RAM资源相当丰富,从几十M到几百M甚至是几个G,客观上能够承受大量的程序数据。
单片机的构架大多是哈弗体系的,即程序和数据分开存储,而且单片的片内RAM资源是相当有限的,内部的RAM过大会带来成本的大幅度提高。
冯.诺依曼体系与哈佛体系的区别
二者的区别就是程序空间和数据空间是否是一体的。早期的微处理器大多采用冯诺依曼结构,典型代表是Intel公司的X86微处理器。取指令和取操作数都在同一总线上,通过分时复用的方式进行的。缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。
哈佛总线技术应用是以DSP和ARM为代表的。采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指令和取操作数,从而大大提高了运算能力。
例如STM320LF240x系列DSP是增强型的哈佛结构通过三组并行的总线访问多个存储空间。它们分别是:程序地址总线(PAB),数据地址读总线(DRAB)和数据地址写总线(DWRB)。
单片机的程序运行在 Flash RAM ?
转自:
单片机程序运行在哪里
单片机程序的运行,一般常见的有两种: 运行在ROM里的和运行在RAM里的。
一般比较小的系统,也就是说,单片机本身内部就有FLASH的。这种FLASH不同于通用的FLASH,他是支持随机地址访问的。这样的单片机,一般程序都存储在FLASH里,然后运行的时候,PC指针也可以到固定的FLASH地址里去取指令,所以呢,程序是运行在FLASH里的。(---
冯诺依曼体系. 如:我们的indoor,就是解析db后把大量的的字符串放在internal flash中,然后再ram中通过指针来访问。)
还有一类,是相对比较大一些的系统,这些系统的程序,相对来说都是比较大的,单片机也都是比较强大的。他们的FLASH一般都是外挂的大FLASH,这样的FLASH就有个特点,不支持随机地址访问,必须一页一页的访问,这样的话,程序就不能运行在FLASH里,因为下一条指令会招不到。 怎么办呢,那就有办法啊,RAM支持随机地址访问啊,我们把FLASH里面的内容搬移到RAM里,就可以了,这样访问起来就会更快了。(---
哈佛体系. 如:北京天豹的omapl138的核心板上,片外外挂一个4Gb的Nand Flash和一个128MB的DDR2 SRAM,来作为外存和内存。)
说白了,就是一些简单的单片机,他的FLASH支持随地地址访问,为了降低程序,程序就运行在了FLASH里面了。
ROM和RAM 中数据比较
转自:
堆在ROM还是RAM?
阅读(1034) | 评论(0) | 转发(0) |