SSD模拟器 DISKSIM 和 SSD EXTENSION 的介绍(四)

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

作者 白丁

 

在一个SSD中有多个chip,每个chip中有多个 plane,每个 plane 中又会包含多个 block。在访问 SSD 时通常都会向设备发送需要访问的 block number ,因此了解 block SSD 中的编址方式十分重要。在基于disksimssdextension 中一共定义了三种 block 的编址方式。

 

 ssd.h 文件中我们可以看到三条宏,分别是:

#define PLANE_BLOCKS_CONCAT 1

#define PLANE_BLOCKS_PAIRWISE_STRIPE     2

#define PLANE_BLOCKS_FULL_STRIPE    3

在配置文件中可以设置参数 plane block mapping 的值来表示将使用哪种类型的编址方式。下面分别介绍这三种编址方式:

 

PLANE_BLOCKS_CONCAT

这种编址方式中每个 plane 上的 block 是顺序组织的,一个 plane 接着一个 plane ,整个是串在一起的,如下图所示:


 

PLANE_BLOCKS_PAIRWISE_STRIPE

这种编址方式中,每一对 plane 上的 block 是交错组织的,而对与对之间的组织是串联的,如下图所示:


 

PLANE_BLOCKS_FULL_STRIPE

这种方式下,block是按照条带来组织的,如下图所示:


 

ssd 的元数据 ssd_element_metadata 中有一个 char *free_block 的属性。free_block 所代表的是一个连续的 bit 位,如果第 i bit 0,那么表示该 element 的第 i block free 状态,否则就是处于正在使用状态。关于第 i block i 是按上面第一种方式来组织的,也就是每个 plane 的串联。所以对于给定的一个 block number 你只有知道 block element 中的编址方式才能计算出它是第几个 block

 

 ssd_clean.c 中提供了 ssd_block_to_bitpos() 这个函数,传入参数 blkno,它根据当前 ssd block 的编址方式返回出 blkno 在当前 element 中对应的编号是多少。然后调用 ssd_bit_on() 可以查看当前 block 处于 free 还是 in use 状态。

 


 

分类目录 SSD.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。