Chinaunix首页 | 论坛 | 博客
  • 博客访问: 865519
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: LINUX

2011-12-26 10:57:58

XIP - eXecute In Place,中文常译为,就地执行。指代码可以在当前(存储器中)执行

关于Nor Flash的XIP :

NAND and NOR and XIP

"NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。 "

关于Nand Flash的XIP:

NAND FLASH 是不是无法做XIP?

问:NAND FLASH 是不是无法做XIP,只有 NOR FLASH才能?

答:所谓XIP,就是CODE是在FLASH上直接运行. NANDFLASH只是不适合做XIP,但并不是不能做XIP。

要一段CODE能够正确的运行,要保证它的CODE是连续的,正确的.

由于一些电气特性的原因,NOR FLASH能够做到这一点,不存在坏道或坏块,所以能够做XIP。

而对于NAND FLASH, 它只保证它的BLOCK 0是好的,其他的块并不保证,虽然出错的几率比较低,但还是有出错的可能,所以CODE可能无法连续正确地执行。

但只要你有额外的保障措施,比如说在执行CODE之前去做一次ECC校验,来确保CODE是连续正确的.那你也可以做XIP.事实上我就正在这么做,而且也证明是成功的

XiP定义(eXecute In Place)立即执行

XIP定义:
XIP即就地执行的意思,操作系统内核直接在Flash中运行,不需要拷贝到RAM。但是,Flash的存储器访问周期要比RAM大得多,在使用XIP技术后可能会降低程序的运行速度,不过由于CPU的指令预取机制以及Cache机制,实际使用起来并不会明显降低应用程序的运行速度。XIP的原理很简单,即指操作系统或应用程序直接从非易失性存储器中执行。就当前的技术来说,这里的非易失性存储器特指NOR型Flash,因为只有N0R型的Flash才可以随机存取。文献[4]中提供了一种通过增加Cache使NAND Flash也可以进行XIP的方案,但需要增加硬件电路,不是一个通用的解决方案。
除了硬件提供支持以外,XIP还需要软件的支持。操作系统内核和应用程序在运行时,它在内存中的映像可以分为三个部分:代码段、数据段和堆栈段。代码段对应于执行程序中的Text Section,其中包括运行代码和只读数据,这个段在内存中一般被标记为只读。数据段对应于运行文件中的Data Section和BSS Section(???),其中存放的是各种数据(经过初始化的和未经初始化的)和静态变量,而堆栈段存放的则用于保存函数调用和局部变量。从以上分析可知,程序运行时在内存的映像分为两类:一类是只读的,如代码段;另一类是可写的,如数据段。而Flash虽然是可写的,但并不能像写普通RAM一样进行。因此,当程序在Flash中运行时,我们仍然需要把部分可写的数据段放在RAM 中。

XIP是一种能够直接在闪速存储器中执行代码而无须装载到RAM中执行的机制。这样减少了内核从闪速存储器拷贝到RAM的时间,并采用非压缩映像减少了内核自解压的时间。由于闪速存储器访问速度低于RAM,采用XIP技术的同时,根据硬件环境对闪速存储器和RAM使用量进行平衡。

eXecute In Place - XIP
XIP (eXecute In Place ) is a useful option available with uClinux systems. Its main value lies in providing a means of allowing several copies of a program to be running without duplicating the text segment. Indeed the text segment can reside in flash memory and need not be copied to the system Ram at all. This is useful for tasks that have large program bodies with many executable instances running in the system. 
Only the Stack, BSS and data segments of an executable needs to be produced for each running program. The text segment can then reside in flash memory or, if execution speed is an issue, then copy the file system to ram first and mount it from there. If executables in the file system are compiled to support XIP and also flagged in their headers as XIP they will load and execute with just a single copy of the text segment. 

总结:

nand由于制作工艺的原因,不能像其他一些memory一样通过数据和地址线访问,而只能通过IO顺序访问,因此访问效率较低,但是其传输速度快,所以适合做大容量存储器,而相对来说Nor Flash适合做代码存储。

而且,Nand 由于工艺原因,相对容易有坏块,而且有些是出厂就有坏块,但是只是通过其特殊标记(nand Flash中除了存放数据的page外,有个特殊的区域叫oob(512B的page的对应16byte的oob,2KB的page对应有64byte),其中某字节用来标记是否是坏块),所以你不知道罢了。也因此,不是很适合存放连续代码而去XIP。

阅读(1564) | 评论(0) | 转发(1) |
0

上一篇:Android Vold架构

下一篇:sd card 流程解析.pdf

给主人留下些什么吧!~~