IC:

概述

什么是PSRAM?

PSRAM(伪静态随机存储器)是一种结合了SRAM的易用性和DRAM的高密度特性的存储器。它通过动态刷新机制实现类似SRAM的接口。

PSRAM特性

  • 定期自动刷新以维护数据完整性,对软件层完全透明,无需显式管理刷新操作。

  • 集成温度传感器,在高温(>85°C)环境下自动缩短刷新间隔,常温低温下延长间隔,优化功耗效率。

  • 访问速度快,适合高速数据处理。

  • 接口简单,易于集成。

  • 密度中等,提供了比SRAM更高的存储容量。

PSRAM应用场景

  • 嵌入式系统,如IoT设备、音频设备、Wi-Fi模块等。

  • 图形显示缓存,用于LCD/OLED屏幕驱动。

  • 低功耗场景(电池供电设备)。

PSRAM 架构

物理结构

  • 存储单元:基于DRAM的电容结构,集成内部刷新控制器。

  • 并行接口:数据线(DQ0~DQn),控制信号(CS, CK/CK#, DQS,RESET)。

  • 双沿触发:支持 DDR(Double Data Rate)传输模式。

  • 工作电压:1.7~2.0V,核心电压 1.8V。

控制结构

  • PHY:物理层,负责时序校准,可编程驱动强度,信号完整性增强。

  • SPIC:控制层,用于时序控制,协议转换,仲裁等等。

  • Master:CPU、DMA、CRYPTO、WIFI等。

../../_images/psram_control_architecture.svg

psram control architecture

PSRAM功能特性

  • 随机访问:允许在任意地址读写数据。

  • Burst访问:支持连续读写多个数据,提高数据传输效率。

  • 待机模式(Standby):关闭部分电路以降低功耗,保留存储数据。

  • 休眠模式(Deep Sleep):关闭所有功能电路,所有刷新操作停止,存储单元中的数据将丢失。

PSRAM 使用方法

自动初始化PSRAM

  • 在设备启动(Boot)之后,SDK 会自动判断芯片是否集成了 PSRAM(伪静态随机存取存储器),随后执行型号检测并进行初始化操作。

    以下是初始化 PSRAM 的日志示例:

    115:12:01.724  [PSRAM-I] PSRAM Ctrl CLK: 400000000 Hz
    215:12:01.724  [BOOT-I] Init WB PSRAM
    
  • 初始化完成后,自动进行PSRAM DQS 延迟校准,通过动态调整 DQS 与 DQ 信号的相位对齐,从而优化信号的采样窗口。

    以下是校准成功的日志示例(当 WindowSize 小于 9 时,视为校准失败):

    115:12:01.724  [PSRAM-I] CalNmin = 2 CalNmax = 17 WindowSize = 16 phase: 0
    

内存布局(LD)规划

Menuconfig 配置选项

  • 通过 menuconfig 选择 PSRAM 的链接策略(Link Option):

PSRAM 使用须知

高温下使用Winbond psram

分布式行刷新: 动态分散刷新,由硬件自动调度,对软件透明。将196ms的标准刷新周期 拆分为多个间隔均匀的刷新命令,分散在正常访问间隙,避免集中刷新导致的带宽占用。

TCEM(片选低电平最大时间): 分布式刷新的最大间隔由 TCEM决定,TCEM的配置需根据实际工作温度手动调整。SDK 默认采用常温(T ≤ 85℃)参数配置,若应用场景涉及高温环境(T > 85℃),用户需按以下流程修改代码以确保数据可靠性:

配置规则:

PSRAM 自刷新规则

温度范围

刷新策略

最大刷新间隔

T ≤ 85℃

标准刷新模式

4μs

85℃ < T ≤ 125℃

增强刷新模式

1μs

修改步骤:

  • 定位代码文件:

    打开 SDK 中的 ameba_psram.c 文件,找到函数 PSRAM_CTRL_Init()

  • 修改代码:

1   // 高温模式配置(T > 85℃)
2   psram_ctrl->TPR0 = (CS_TCEM(Psram_Tcem_T85 * 1000 / PsramInfo.PSRAMC_Clk_Unit / 32) |
3                     (TPR0_OTHER_FIELDS));

Row Hammer 效应防护

物理机制与风险

  • 成因:基于 DRAM 存储单元电荷泄漏特性,高频次访问目标行会导致相邻行电容电荷异常流失。

  • 后果:引发单/多位翻转(Bit Flip),造成数据损坏或系统崩溃。

防护方案

  • 分布式行刷新

  • Cache 访问稀释

    在带有Cache属性的PSRAM系统中,Cache通过减少对物理内存的直接访问频率,可显著降低Row Hammer的发生概率。其核心原理如下:

    访问频率稀释:Cache作为CPU与PSRAM之间的缓冲层,会将多次逻辑访问合并为少量物理访问,减少了对同一存储行的高频激活。

    突发访问优化:Cache的预取(Prefetch)和批量写回(Write-back)机制,将随机访问转化为连续块传输,避免频繁切换行地址。

可靠性验证数据

在验证阶段,通过产品抽样检测结果如下:

测试参数

指标

环境条件

125℃ 高温,1.05V 超压供电

攻击强度

8.33M次/秒行激活

测试时长

24 小时连续运行

数据完整性

0 比特翻转

  • 启用 Cache 后,物理行激活频率远低于测试值(8.33M次/秒)。

  • 结合硬件级分布式行刷新,可完全消除 Row Hammer 引发的数据错误。

  • 正常使用访问不会出现对同一行进行高频激活访问。

备注

结论:在 Cache 与硬件防护协同工作模式下,Row Hammer 风险可控制在理论可忽略水平,用户无需额外设计防护逻辑。

PSRAM TP

实测数据:

PSRAM 支持直接访问与 DMA 访问模式,其吞吐量性能指标如下表所示:

PSRAM 吞吐量性能(200MHz 工作频率)

访问模式

写入 32 字节性能

读取 32 字节性能

理论值(Mbps)

KM4 平台实测值(Mbps)

理论值(Mbps)

KM4 平台实测值(Mbps)

直接访问 (回写模式)

1523.81

(32*8bit)/(199.68ns)=1282.05

1454.55

(32*8bit)/(212.16ns)=1204.14

DMA 访问

(32*8bit)/(235.16ns)=1088.64

(32*8bit)/(234.37ns)=1092.27

性能测试说明:

  • 吞吐量理论计算依据:

    • 测试数据包含可变初始延迟,具体延迟周期数(1T 或 2T)由 RWDS 信号决定。

    • 数据包头与延迟周期存在 1T 重叠。

    • 由于采用 DDR PSRAM,传输 32 字节需要 16 个时钟周期(16T)。

  • 直接访问特性:

    • 默认启用 PSRAM 缓存属性,性能测试需综合考虑缓存影响。

    • 4 字节读取操作

      • 缓存命中时:CPU 直接从缓存读取 4 字节。

      • 缓存未命中时:需从 PSRAM 读取整缓存行(cacheline size)数据到缓存。

    • 4 字节写入操作

      • 缓存命中时:更新缓存数据,缓存刷新时回写整缓存行到 PSRAM。

      • 缓存未命中时:根据写分配策略,先从 PSRAM 读取整缓存行到缓存,再更新缓存数据。

    • 表格中的读写吞吐量数据基于缓存未命中/刷新场景(即强制访问 PSRAM)。

    • 写分配模式的吞吐量等同于缓存未命中读取场景。

    • 理论值未包含指令执行时间开销。

理论值计算方法:

计算公式

总耗时 = [CMD + ADDR + (LC-1)] × TPSRAM + 数据传输周期 + 硬件保持时间

理论吞吐量 = (数据位宽) / 总耗时

参数说明

吞吐量计算参数

参数

计算方式

参数说明

取值/单位

TPSRAM

1 / 时钟频率

PSRAM时钟周期

例:150MHz→6.667ns

CMD + ADDR

固定3周期

命令阶段开销

3 cycles

LC

延迟周期

由PSRAM型号和时钟决定

例:6 cycles

数据位宽

单次传输数据量

32字节=256位(32×8)

256 bits

数据传输周期

32/2 × TPSRAM

32位数据需要16个时钟周期传输完成

16×TPSRAM

硬件保持时间

写操作:1周期

总线释放缓冲时间

1 or 2 cycles

读操作:2周期