【SDRAM/DDR结构】之二 RANK

【SDRAM/DDR结构】之二 RANK

  • 会解释的概念
  1. 物理bank
  2. Rank
  3. 芯片位宽
    如果对以上概念有疑问可以看这一节。

先解释两个位宽——存储单元的位宽和芯片位宽

上一节计算了存储单元的数量,或者说到底能有多少个地址,那内存数据大小是多少呢?

每个存储单元(或叫内存颗粒)能够存储的bit数,就是它的位宽,内存数据大小就是内存颗粒位宽x内存颗粒的数量啦!一般来说,内存颗粒的位宽为8bit,16bit。

而平常说的芯片位宽就是CPU的位宽,也就是物理-bank的位宽:内存和CPU是配合工作的,现在普遍是64bit的CPU,内存必须在CPU的一个传输周期提供它需要的数据才行,那就需要8个8bit的存储单元,4个16bit的存储单元,那就需要将多个逻辑-bank组成物理-bank工作。

RANK
实现物理-bank,是通过rank这个结构,这个结构也是在DDR中才出现的。下图中,一个rank包含了8个L-bank,每个bank的内存颗粒位宽为8bit,当CPU发出片选信号(用于选择是哪个rank)还有行列地址信号后,这个rank中的8个bank中的定位到的内存颗粒会一起被选中,一起提供共64bit的数据。提一句,这个“一起被选中的过程”就是prefetch,具体见后文。

rank示意图

### LPDDR4 Rank 配置与工作原理 #### 一、Rank 的定义及其重要性 在LPDDR4内存体系结构中,rank是指一组并行连接到同一组命令和地址总线的存储芯片集合。每个rank可以独立接收读写指令,并通过共享的数据总线传输数据[^1]。 #### 二、单Rank vs 双Rank配置 - **单Rank**:仅有一个rank,在大多数情况下适用于较低容量需求的应用场景;其优点在于控制简单且成本相对低廉。 - **双Rank**:包含两个ranks,能够提供更高的带宽以及更大的存储密度。当访问其中一个rank时,另一个rank可以在后台准备下一次操作,从而提高整体性能效率。 #### 三、多Rank系统的运作机制 对于支持多个ranks(如双rank)的LPDDR4设备而言,控制器会利用特定协议来管理不同rank之间的切换过程。这通常涉及到发送激活(ACTIVE)命令给目标rank中的bank group,随后执行READ/WRITE等具体操作。值得注意的是,为了确保稳定性和可靠性,相邻两次针对不同rank的操作之间需保持一定的时间间隔(tRC)。 ```python def perform_rank_switch(current_rank, target_rank): """ 切换当前工作的rank至指定的目标rank 参数: current_rank (int): 当前正在使用的rank编号 target_rank (int): 即将切换为目标rank的编号 返回值: None """ # 发送预充电(Precharge All Banks)命令给current_rank下的所有banks send_precharge_all_command(rank=current_rank) # 等待tRP时间周期完成后再继续下一步骤 wait_for_time_period('tRP') # 向target_rank发出ACTIVATE命令以开启新的事务处理流程 activate_target_bank_group_in(target_rank) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值