随着中央处理单元、图形处理器和其他处理元件的速度提升,存储设备已经成为影响计算系统的总体性能的瓶颈。SSD仍然可以拖慢主机速度。
什么是预读?
在下一个读取请求前,可以在读取队列空闲时间期间预先获取该下一个数据并且将其存储在高速缓存缓存(DRAM)中,因此,该下一个数据可以从缓存(DRAM)而不是从非易失性存储器(闪存)的读取被返回给主机。
预读原理
SSD内部的固件探测到主机端要读取的数据的逻辑区块地址(Logical BlockAddress,LBA)为连续,且主机端要读取的逻辑区块地址为LBAx至LBAy对应的数据,如果SSD已经探测到LBAx-LBA(x+k)的数据已经被读取,则在主机端未发送LBA(x+k+1)-LBAy对应数据的读命令时,SSD已经将这一段的数据提前从NAND闪存中读到动态随机存取存储器(Dynamic Random Access Memory,DRAM)中了,如果主机端此时发送LBA(x+k+1)-LBAy对应数据的读命令,SSD可直接从DRAM中读取该数据返回给主机端,大大减少数据读取时间,提高数据读取速度和降低数据读取时延,因为SSD从DRAM中读取数据比从NAND中读取数据快很多。
在实际应用中,上述预读技术只适用于顺序读的情况,即主机端读数据的LBA为连续的,而实际应用中如果应用场景变化为主机端所需读取的数据的LBA并非是连续,则该预读技术实际应用受局限。[2]