在固态硬盘(SSD)控制器中,逻辑块地址(LBA)需要通过映射表(L2P Table)映射到NAND闪存的物理地址(PA)。随着SSD容量的增长,L2P表的大小也随之增加,这给查找操作带来了性能挑战。
在SSD控制器中,LBA需借助L2P表映射为NAND物理地址。映射表最小规模为 (O(n * \lg (n)))(n代表用户容量) ,随着用户容量增长,映射表规模急剧扩大。基于固件(FW)的查找方式在物理地址位与字节边界未对齐时,会消耗大量CPU周期,严重降低性能。
单段L2P表将所有物理地址(PA)存储于单个连续内存区域,无空洞。对于给定LBA,其对应的PA地址偏移为LBA与PA地址大小(PAW)的乘积。计算PA地址时,需确定缓存行偏移、字节偏移和位偏移。整个操作包含一次乘法、两次移位和一次加法运算。该算法适用于小型SSD或对映射表规模要求不高的场景,优点是简单直接,但在大型存储系统中,随着LBA数量增多,映射表规模会变得庞大。
单段查找算法
步骤一:根据LBA计算出物理地址条目的基地址偏移量。
步骤二:执行乘法、两次移位和一次加法运算来确定物理地址的位置。
步骤三:读取或写入相应的物理地址。
多段L2P表把内存区域划分为多个等长段,段内首个PA条目与段起始位置对齐,相邻段边界无PA跨越。查找算法分两步:先计算段地址偏移和段内LBA偏移;再将段地址偏移作为新基地址,段内LBA偏移作为新LBA,运用单段查找算法确定PA位地址。多段算法在大型存储系统中,可通过合理分段管理,有效减少映射表内存占用,提高查找效率,适应大规模存储需求。
多段L2P表虽有优势,但因其特定的段边界对齐要求,增加了系统复杂度。在这种情况下,硬件加速成为提升L2P查找性能的关键,对提升SSD整体性能起着决定性作用。
多段查找算法
步骤一:首先找到段地址偏移量和LBA在段内的偏移量。
步骤二:使用段地址偏移量作为新的基地址,LBA段内偏移量作为新的LBA,应用单段查找算法。
L2P查找加速器具备请求队列、完成队列、加权轮询(WRR)调度、冲突检测、完成控制器、活动消息上下文和控制状态机