SSD上的逻辑块大小

时间:2018-07-16 18:58:33

标签: winapi ssd

我目前正在为Win10(用C ++编写)上运行的SSD(CFast卡)定制测试/基准。工作的一部分是阅读和解释S.M.A.R.T. SSD报告的属性。我现在感兴趣的一个称为“已写入的主机LBA总数”,即主机系统写入的LBA的数量。我缺少的信息是“一个LBA所指的内存大小(以字节为单位)?”。 我已经完成了一些关于SSD内部工作方式的功课,但是我对此有些困惑,希望有人可以对此有所启发,我显然缺少了一些东西:

  1. SSD中的FTL(闪存转换层)除其他操作(损耗平衡,垃圾回收等)外,还执行LBA到物理地址的映射。
  2. 在SSD中可单独读取/写入的最小存储单元是一页。以我为例,该页面的大小为16KiB。由此我天真的得出结论,LBA大小将与页面大小相同,即16KiB(或其整数倍)。
  3. 另一方面,我希望LBA具有GetDiskFreeSpace()从WinAPI报告的“扇区”的大小,该报告报告为512B(“ SectorsPerCluster” = 8)。

那么,我在哪里想错了,我可以算出的真正LBA大小是多少(或如何获得其价值)?如果LBA大小为512B(或8 * 512 = 4KiB),则LBA将引用我的Flash页面的1/32(1/4),这似乎效率不高。我知道有必要模拟较旧的存储,但是如果允许写入单个LBA,那么SSD会做什么?是否缓存整个页面,重写与LBA对应的1/32部分,将其写入空块并更新LBA物理地址表?

编辑:很抱歉使用“ LBA大小”,我知道这在语义上不是100%正确的,希望它是可以理解的...

0 个答案:

没有答案