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