说flash时经常提到bank,它到底是什么意思
说flash时经常提到bank,它到底是什么意思
2009年04月03日 星期五 21:49
Author: bolton Posted: 2002-12-20 13:37 Length: 336 byte(s)
我想是不是这样
bank 用于拼接数据地址线 应同板子具体采用的芯片数据地址线位数和cpu一次读写要求的位数有关
cpu一次要求32位(引出23位)的地址线 而你的单片内存芯片只能提供16位 那你只能将两条内存芯片用bank拼接起来,表现为电路图上就是两个芯片地址线并连(一个高16位 ;一个低16位)。
考虑的不对的话 还请高手们不吝赐教。
------------------------------------------------------
Author: diamond_shadow Posted: 2002-12-20 11:57 Length: 350 byte(s)
常说的RAM里的BANK是这样一种概念:是以地址低位来划分RAM,比如按照低2位划分,RAM就有4个BANK,在硬件上也划分四个单元,其意 义在于提高访存并行度,比如读取0x0000-0x0003地址的四个字节(比如取32位的int数据)时,四个bank就可以同时工作,在相同的时间内 准备好数据。
说得很简单,事实上还应该牵扯到支持burst读取方式的问题,不过bank的概念基本就是这个样子。
怎么说呢,我的解释是一种bank的特例,实际上对地址的划分要看ram/rom controller的设置,怎样设置都可以。关键词是“并行”,bank个数决定并行度,bank的个数完全是器件本身特性。至于block也是如此, 是层次管理的产物,也具有这个层次的并行规则,个数由器件决定,映射由controller决定。
------------------------------------------------------
Author: coldwind Posted: 2002-12-21 19:10 Length: 794 byte(s)
是这样的
diamond_shadow和bolton二位大侠说的那东西是interleave
翻译成中文大概是“交错”,具体是怎么回事二位大侠已经说得很清楚了,但是二位弄错了一个概念,他们将chip当成了bank,比如两块flash芯片interleave,这两块flash芯片每块分别是一个chip,而不是bank
至于bank的概念,我认为是这样的:在linux中,相同型号的flash chip可以通过interleave和地址相连组合成一个"bank",比如4块大小为1M的flash芯片,他们两两interleave,然后再地 址相连成为从0x100000-0x500000: shadow什么意思啊
chip 0:0x100000-0x30000的高16位
chip 1:0x100000-0x30000的低16位
chip 2:0x300000-0x50000的高16位
chip 3:0x300000-0x50000的低16位
这时的四块芯片会被linux的MTD子系统探测到并看成一块bank
只有当不同型号或者地址不相连的flash chip才会被当作不同的bank
------------------------------------------------------
Author: diamond_shadow Posted: 2002-12-23 15:33 Length: 333 byte(s)
呵呵,我没说过bank=chip呀。你所说的也是一种bank的特例,依然决定于器件本身特性。我所了解的单chip多bank的情况更多一些,比如三 菱就有一款4 bank的flash,其划分就不具有interleave特性,总之从硬件上层来看,bank间提供并行访存操作能力是其行为的关键吧,顺便说一 句,CPU内部的n-way cache也就是n个bank的sram并行比较,本质原理都是类似的。
------------------------------------------------------
Author: daem0n Posted: 2002-12-25 11:25 Length: 710 byte(s)
各位其实说得都挺有道理的。
我的理解是这样:
1. bank和硬件相关。就Intel PXA250为例,芯片除了26bit Address line以外,还提供了CS0-5六条片选信号。这里CS0-5就是可以看作Bank select signal。所以在PXA250内存映射中有6个Static Memory Bank,每个Bank最多64M.
2. 硬件设计时一般不会用到所有Bank。
3. 因为32bitCPU通常的数据线有32bits,而flash可能数据线宽是16bits,所以工程师会把两个flash的数据线拼在一起,这样就有32bit的带宽了。
4. 另外的问题是如果flash的容量很小,那么每个bank中空间会有很多浪费,工程师就不用CS0-5的信号,把flash地址线的高位连到chip的片选脚。这样可能会有很多芯片连在一块,却是在同样的bank里。
5. Linux里MTD驱动检测bank实际上是在flash所在地址的片选脚的值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论