1、SSD的数据操作:读:从page中读取数据到寄存器。写/编程:将寄存器内地数据编程进可编程的page。擦除:读和写都是以page为单位,擦除是以block为单位。
2、SSD原理——FTL:即Flash translation layer(闪存转换层),是一种软件中间层,它包含了地址映射,垃圾回收,损耗均衡等几方面的内容。
FTL首先构造数据“虚拟”块,这些虚拟块独立于Flash设备的物理可擦除块,接着FTL管理Flash上的数据,使其看起来像原地更新(write in place),事实上这些数据被存储在Flash中不同的位置,最后FTL管理Flash物理块,进行垃圾回收,使得系统有一些已经被擦除过的、干净的空闲块用于存储数据。如果系统中存在多个Flasf芯片,FTL通过编程模式将这些芯片组织成为一块“逻辑”芯片。
2.1地址映射:包括页映射(page mapping)、块映射(block mapping)、混合映射(hybrid mapping)。
页映射:
•在mappingtable中,每一个LBA(Logical block addres,逻辑地址快),都映射到某一个PGA,所以要找到某一个LBA中的内容只需要查找mappingtable即可。
块映射:
类似于cache中的直接映射,LBA被分为俩个部分,前一部分被用作索引block号,后一部分索引block内的page号。
混合映射:
•类似cache中的setassociation,LBA被放置到每个page的隐藏数据区,需要读取某一个LBA的数据时,需要读取整个block的每一个page中的隐藏数据区的值进行比对,直到找到该LBA。
对比:
•Page mapping需要大的ram,但灵活性高,可以做损耗均衡等等。
• Block mapping的ram需求量小,但是会导致性能的下降,不灵活。
混合映射即使一种折中,但是读取某个page需要读取block中的page进行LBA的比较