zhouzhiping849的个人空间 https://blog.eetop.cn/164433 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

[转]【详解】SDRAM的地址映射方式BRC(Bank Row Column)和RBC(Row Bank Column)

已有 4806 次阅读| 2012-1-10 16:53 |个人分类:设计理解

BRC = Bank, Row, Column = Bank-Row-Column

RBC = Row, Bank, Column = Row-Bank- Column

SDRAM中,两种不同的地址映射方式。

 

下面就针对上面的表述,来一点点解释。

1. Bank

其中Bank,是内存领域里面常用的术语,有把Bank翻译为内存库的,不过觉得不是很合适。后面会讲到,中文含义,更接近于“块,数据块”。

Bank的详细含义见后面的解释。

而关于row行和column列,很常见和很好理解,就不多说了。

 

2. SDRAM的物理组织结构

说明问题之前,还要简单解释一下,内存SDRAM的物理结构:

 

SDRAM物理上,最小的单位,叫做一个cell单元,用于存储一个数据单位,可以是4-16bits

而更大一点的单位,就是对应的rowcolumn了,见上图,这个很好理解,不多解释。

然后多少行,多少列,共同组成了一个Bank,中文的含义,很像一个块,一个数据块。

根据上图中的说明可知:

常见的Bank,有4-8个;

而每个Bank中,一般包含16Krow

而每个行中,一般又包含1024=1Kcolumn

而每个column中,即是我们所说的最小的单位cell了,是4-16bits

 

3. 地址映射

此处所谓的地址映射,简单说就是,将一个内存地址,转换对应到相应的物理存储单元,这个过程,就叫做映射。

 

4. BRCRBC的详细含义

了解了前面的知识后,再来举例说明所谓的BRCRBC的地址映射方式。

比如有个SDRAM,对应的参数是:

512Mb (32Mx16), 4 banks(用2bit表示), row length = 13 bit, column length = 10bit

然后有个内存地址0x5010 2040,这样的地址,其实最高位的0x50是对应着SDRAM地址的最开始,所以,此处可以忽略,实际所表示的地址,就是0x0080 2040.

而这个地址,是如何映射到SDRAM的物理的BankRowColumn上的具体哪个位置,BRC还是RBC,是完全不同的,详见下表:

表格 1 内存地址0x0080 2040所对应的BRCRBC的映射

 

BRC (Bank-Row-Column)

 

 

2bitBank

13bitrow

10bitcolumn

 

 

BB

R RRRR RRRR RRRR

CC CCCC CCCC

 

Bit[31:25]

bit[24:23]

Bit[22:10]

Bit[9:0]

0x00802040

0000 000

0 1

000 0000 0010 00

00 0100 0000

对应的物理单位的位置

 

Bank=0x01

Row=0x08

Column=0x40

Bank18的第0x40

 

 

RBC (Row- Bank-Column)

 

 

13bitrow

2bitBank

10bitcolumn

 

 

R RRRR RRRR RRRR

BB

CC CCCC CCCC

 

Bit[31:25]

Bit[24:12]

bit[11:10]

Bit[9:0]

0x00802040

0000 000

0 1000 0000 0010

00

00 0100 0000

对应的物理单位的位置

 

Row=0x802

Bank=0x0

Column=0x40=64

Bank0的第0x8020x40

 

从上表中,很容易看懂,一个地址,是如何根据是RBC还是BRC,然后映射到了对应的物理存储单元上的,而BRC,即Bank是最高位,然后接着是Row行地址,最后是Column列地址;而RBC,即最开始的是Row行地址,接着才是Bank地址,最后当然也是Column列地址。

此两种不同的地址映射方式,使得同一个地址,被翻译成对应的不同的物理单元,因此,在SDRAM初始化,配置地址映射的时候,一定要设置对了才可以正常工作。

 

【如何确定将SDRAM配置为BRC还是RBC

对于软件开发者,在拿到了一个SDRAM之后,在写SDRAM初始化的代码,去配置地址映射的时候,到底是该配置成BRC还是RBC呢。

此地址映射方式,到底是由什么决定的?

我最开始的理解,以为是SDRAM硬件本身,决定了其本身是BRC还是RBC呢,但是后来看了些资料,发现好像此理解,也不完全对。

找了资料后,也还是没完全懂,只是了解了一些:

不同的地址映射方式,导致访问某个row的时候,该row是否是有效的,会有所不同,因此会导致功耗和访问延迟,差别很大。

常见的地址映射方式有三种:

B-R-C Bank, Row, Column

R-B-C Row, Bank, Column

B-RL-CL-RH-CH Bank, Row Low, Column Low, Row High, Column High

 

BRC这种映射方式,用的最多。其优点是,功耗低;

RBC的优点是适合数据流方式去访问数据,性能好;

B-RL-CL-RH-CH适合存储视频,图像等数据,高性能。

 

而至于将某个SDRAM设置为BRC还是RBC,好像是SDRAMcontroller来决定的。

而由于BRCRBC,分别有不同的特点,所以,对于如何设置此地址映射方式,就是:

 

【总结】

如果是low-powerSDRAM(功耗相对低的,1.8V的低电压),然后就选BRC

如果是High performanceSDRAM(高性能的,当然功耗相对高些,3.3V2.5V的正常电压的),就选RBC


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 11

    获赞
  • 19

    评论
  • 779

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 10:26 , Processed in 0.014470 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部