90 likes | 178 Views
Improve Random Read Performance of Egret Plus. Gang Chen 1/30/2013. Background. Block map FTL has two types of block DATA Block The logical address map to data block is direct map. It is no need to read LUT when read data from data block. Log Block
E N D
Improve Random Read Performance of Egret Plus Gang Chen 1/30/2013
Background • Block map FTL has two types of block • DATA Block • The logical address map to data block is direct map. It is no need to read LUT when read data from data block. • Log Block • The page of logical blcok map to log block is random. And a LUT is used to record all the map information. Data block lb log block lb Lut
The problem • Currently mu in LB can be place in any au of PB that is associated to the LB. From block FTL view, the type of PB in this is log block and there is no data block concept in egret plus. The current mechanism causes it must get the LUT prior to read host data from Nand and the performance is affected much particularly on random read case.
Idea to solve • Bring data block concept in egret FTL. As picture shows if lb is in data block mode, the read operation can access data block directly without reading look up table of the lb.
Implement the ideatwo modes of LB • lb has two mode including • Log block mode • The log block mode of lb is the current case. The r/w request make use of map table to get the position access on physical block. the lb can have 1 or N nand blocks. • Data block mode • The read request get the position access on physical block by direct map relationship. LB does not have LUT and can have only1 nand block in max.
Implement the idealog block mode and data block mode switch • LBM(log block mode) and DBM(data block mode) can transform mutually. • LBM can transform to DBM in gc or sequential wr, if lb meets conditions • The count of valid mu in lb is bigger than N (threshold avail to change DBM) • The LB is a cold LB • The LB is chosed to do GC. • DBM transform to LBM if DBM can’t not process write request such as the address accessed is already written or lower than address in data block last program already.
Implement the idealog block mode and data block mode switch • LBM(log block mode) and DBM(data block mode) can transform mutually. • The time LBM can transform to DBM. • Idle activities with GC process. • May do it in overflow triggered GC. • May do it in sequential write cases. • the time DBM transform to LBM. • Write request can’t handle in DBM mode.
Implement the ideadata structure • Lb DBM bitmap(DBM_BMP): the bitmap indicates whether a LB is DBM mode. • sz(byte): number of lb / 8. • About 250 bytes if cnt of LB is 2000 • Lb-PB map for DBM (DBM_LB_PB_MAP): record the data block urow of each LB. • sz(byte): number of lb * 2. • About 4k bytes if cnt of LB is 2000
Analysis of the idea • GOODs • For user, the cold data (video, pics) is larger than hot data(log files etc). Lots of LB can be change to DBM to helps to increase read performance. • The effort to switch to DBM from LBM is low it can make uses of current GC code flow. And reverse effort is also LOW as DBM is a sub state of LBM, only unset DBM_BMP is required. • The process to change to DBM also can execute in background GC when host is idle. • It can improve reconstruction speed since if a LB is DBM mode, it doesn’t need to reconstruction. • Bads • ??