TOC頁4的一部分存儲(chǔ)與N相關(guān)聯(lián)的TOC條目。在頁Q、O和N的移動(dòng)之后,塊2被擦除。
[0065]最后,與接收寫入請求W8并行地在塊3上發(fā)生垃圾收集。在塊3中所有頁是活動(dòng)的。不需要對塊3進(jìn)行耗損均衡,因此,在塊3中不發(fā)生移動(dòng)。W8被隨機(jī)選擇為寫入到塊
5。另外,產(chǎn)生并且作為塊5中的TOC頁5的一部分存儲(chǔ)與W8相關(guān)聯(lián)的TOC條目。
[0066]垃圾收集操作已循環(huán)通過每一個(gè)塊(S卩,塊0、塊1、塊2和塊3),以將任何活動(dòng)頁移動(dòng)到塊4或塊5。并且,與垃圾收集并行地接收的寫入請求被分配給塊4或塊5。給定總共8個(gè)寫入請求時(shí),在第一迭代中需要4次移動(dòng)。
[0067]參照圖5B,考慮在圖5A所討論的第一迭代之后發(fā)生垃圾收集的第二迭代的情形。與接收寫入請求W9、W10、Wll、W12、W13、W14和W15并行地在塊2、塊3、塊4和塊5上發(fā)生垃圾收集的第二迭代,這里,W13是長壽命或持久數(shù)據(jù)。塊O和塊I在圖5B中在第一迭代之后被擦除并且可用于寫入任何移動(dòng)數(shù)據(jù)或來自寫入請求的數(shù)據(jù)。
[0068]與接收寫入請求W9、W10、Wll和W12并行地在塊2上開始垃圾收集。塊2在第一迭代(參見圖5A)中被擦除,并且,不包含任何要移動(dòng)的頁。塊O被隨機(jī)選擇為寫入與寫入請求W9、W10、W11和W12相關(guān)聯(lián)的數(shù)據(jù)。另外,分別產(chǎn)生并且作為塊O中的TOC頁6的一部分存儲(chǔ)與W9、W10、W11和W12相關(guān)聯(lián)的TOC條目。
[0069]然后與接收寫入請求W13并行地在塊3上發(fā)生垃圾收集。在第一迭代(參見圖5A)中在塊3中所有活動(dòng)的頁保持活動(dòng)。如以上在圖5A中討論的那樣,不需要對塊3進(jìn)行耗損均衡,因此再一次在塊3中不發(fā)生移動(dòng)。塊O被隨機(jī)選擇為寫入與W13相關(guān)聯(lián)的數(shù)據(jù)。另外,產(chǎn)生并且作為塊O中的TOC頁6的一部分存儲(chǔ)與W13相關(guān)聯(lián)的TOC條目。
[0070]然后與接收寫入請求W14和W15并行地在塊4上執(zhí)行垃圾收集。頁W6和W7是塊4中的需要移動(dòng)的活動(dòng)頁。與寫入頁W6和W7并行地,塊I被隨機(jī)選擇為寫入與W15相關(guān)聯(lián)的數(shù)據(jù)。另外,分別產(chǎn)生并且作為塊I中的TOC頁7的一部分存儲(chǔ)與W15、W6和W7相關(guān)聯(lián)的TOC條目。塊O被隨機(jī)選擇為寫入與W14相關(guān)聯(lián)的數(shù)據(jù)。也產(chǎn)生并且作為塊O中的TOC頁6的一部分存儲(chǔ)與W14相關(guān)聯(lián)的TOC條目。在頁W6和W7的移動(dòng)之后,擦除塊4。
[0071]最后,在塊5上發(fā)生垃圾收集。在塊5中所有頁是活動(dòng)的。不需要對塊5進(jìn)行耗損均衡,因此在塊5中不發(fā)生移動(dòng)。
[0072]垃圾收集已循環(huán)通過每一個(gè)塊(g卩,塊2、塊3、塊4和塊5)中,以將任何活動(dòng)頁移動(dòng)到塊O或塊I。并且,與改進(jìn)的垃圾收集操作并行地接收的寫入請求被分配給塊O或塊1給定總共7個(gè)寫入請求時(shí),在第二迭代中需要8次移動(dòng)。在這兩次迭代中,存在用于15次數(shù)據(jù)寫入的12次移動(dòng)。寫入幅度然后可被計(jì)算為I次寫入+(12次移動(dòng)/15次寫入)=
1.8。換句話說,對于每次寫入,需要0.8次附加寫入。
[0073]參照圖6A,考慮與接收寫入請求Wl、W2、W4、W5、W6、W7和W8并行地在塊0、塊1、塊2和塊3上發(fā)生改進(jìn)的垃圾收集操作的第一迭代的情形,這里,在W4和W8中寫入的數(shù)據(jù)是持久數(shù)據(jù)。塊4被選擇為短壽命塊,并且,塊5被選擇為長壽命塊。
[0074]首先與接收寫入請求Wl、W2和W3并行地在塊O上發(fā)生改進(jìn)的垃圾收集操作。由于塊O中的各頁被標(biāo)記為死的,因此,塊O被擦除。W1、W2和W3的壽命是未知的。因此,W1、W2和W3被寫入到塊4 (短壽命塊)。另外,分別產(chǎn)生并且作為塊4 (短壽命塊)中的TOC頁4的一部分存儲(chǔ)與Wl、W2和W3相關(guān)聯(lián)的TOC條目。
[0075]然后在塊I上執(zhí)行改進(jìn)的垃圾收集操作。塊I中的僅有的需要移動(dòng)的活動(dòng)頁是頁J。由于頁J存活或者比垃圾收集持久,因此,頁J可能是持久數(shù)據(jù)。頁J然后移動(dòng)到塊5(長壽命塊)。另外,產(chǎn)生并且作為塊5 (長壽命塊)中的TOC頁5的一部分存儲(chǔ)與頁J相關(guān)聯(lián)的TOC條目。在頁J的移動(dòng)之后,塊I被擦除。然后接收寫入請求W4。通過應(yīng)用編程界面(API)將W4傳達(dá)為包含持久數(shù)據(jù)。W4然后被寫入到塊5 (長壽命塊)中而不是為具有未知壽命的寫入請求保留的塊4(短壽命塊)中。另外,產(chǎn)生并且作為塊5(長壽命塊)中的TOC頁5的一部分存儲(chǔ)與W4相關(guān)聯(lián)的TOC條目。
[0076]然后與接收寫入請求W5、W6和W7并行地在塊2上發(fā)生改進(jìn)的垃圾收集操作。頁Q、O和N是塊2中的需要移動(dòng)的活動(dòng)頁。再一次,由于當(dāng)發(fā)生垃圾收集時(shí)頁Q、O和N是活動(dòng)的,因此,頁Q、O和N可能是持久數(shù)據(jù)。與寫入請求W5、W6和W7相關(guān)聯(lián)的數(shù)據(jù)的壽命是未知的,并且,可能是短壽命的。然后,與寫入W5、W6和W7到塊4(短壽命塊)中并行地,頁Q、0和N移動(dòng)到塊5 (長壽命塊)中。另外,分別產(chǎn)生并且作為塊4 (短壽命塊)中的TOC頁4的一部分存儲(chǔ)與W5、W6和W7相關(guān)聯(lián)的TOC條目。還分別產(chǎn)生并且作為塊5 (長壽命塊)中的TOC頁5的一部分存儲(chǔ)與頁Q、O和N相關(guān)聯(lián)的TOC條目。在頁Q、O和N的移動(dòng)之后,塊2被擦除。
[0077]最后,與接收寫入請求W8并行地在塊3上發(fā)生改進(jìn)的垃圾收集操作。在塊3中所有的頁是活動(dòng)的。不需要對塊3進(jìn)行耗損均衡,因此,在塊3中不發(fā)生移動(dòng)。與寫入請求W4類似,寫入請求W8通過API傳達(dá)W8包含持久數(shù)據(jù)。W8然后被寫入到塊5 (長壽命塊)。另夕卜,產(chǎn)生并且作為塊5 (長壽命塊)中的TOC頁5的一部分存儲(chǔ)與W8相關(guān)聯(lián)的TOC條目。
[0078]改進(jìn)的垃圾收集操作已循環(huán)通過每一個(gè)塊(即,塊0、塊1、塊2和塊3),以將任何活動(dòng)頁移動(dòng)到塊5 (長壽命塊)。并且,如果已知寫入請求包含持久數(shù)據(jù)(例如,W4、W8),那么與改進(jìn)的垃圾收集操作并行地接收的寫入請求被分配給塊5 (長壽命塊)。否則,寫入請求被分配給塊4(短壽命塊)。給定總共8個(gè)寫入請求時(shí),在第一迭代中需要4次移動(dòng)。
[0079]參照圖6B,考慮在圖6A所討論的第一迭代之后發(fā)生改進(jìn)的垃圾收集操作的第二迭代的情形。與接收寫入請求W9、W10、Wll、W12、W13、W14和W15并行地在塊2、塊3、塊4和塊5上發(fā)生改進(jìn)的垃圾收集操作的第二迭代,這里,W13是長壽命或持久數(shù)據(jù)。在第一迭代(參見圖6A)中擦除的塊O被選擇為短壽命塊。在第一迭代(參見圖6A)中擦除的塊I被選擇為長壽命塊。
[0080]與接收寫入請求W9、W10、Wll和W12并行地在塊2上開始改進(jìn)的垃圾收集操作。塊2在第一迭代(參見圖5A)中被擦除,并且,不包含任何要移動(dòng)的頁。W9、W10、W11和W12的壽命是未知的。因此,W9、W10、W11和W12被寫入塊0(短壽命塊)。另外,分別產(chǎn)生并且作為塊O (短壽命塊)中的TOC頁6的一部分存儲(chǔ)與W9、W10、Wll和W12相關(guān)聯(lián)的TOC條目。
[0081]然后與接收寫入請求W13并行地在塊3上發(fā)生改進(jìn)的垃圾收集操作。在第一迭代(參見圖6A)中在塊3中所有活動(dòng)的頁保持活動(dòng)。如以上在圖6A中討論的那樣,不需要對塊3進(jìn)行耗損均衡,因此再一次在塊3中不發(fā)生移動(dòng)。通過API,寫入請求W13被傳達(dá)為包含持久數(shù)據(jù)。W13被寫入塊1(長壽命塊)而不是為具有未知壽命或者已知的短壽命的寫入請求保留的塊O (短壽命塊)。另外,產(chǎn)生并且作為塊I (長壽命塊)中的TOC頁7的一部分存儲(chǔ)與W13相關(guān)聯(lián)的TOC條目。
[0082]然后與接收寫入請求W14和W15并行地在塊4上執(zhí)行改進(jìn)的垃圾收集。寫入請求W14和W15均具有未知壽命的數(shù)據(jù),并且,可能是短壽命的。頁W6和W7是塊4中的需要移動(dòng)的活動(dòng)頁。由于當(dāng)發(fā)生垃圾收集時(shí)頁W6和W7是活動(dòng)的,因此頁W6和W7可能是持久數(shù)據(jù)。然后,與寫入W14和W15到塊0(短壽命塊)并行地,頁W6和W7移動(dòng)到塊1(長壽命塊)。另外,分別產(chǎn)生并且作為塊I (長壽命塊)中的TOC頁7的一部分存儲(chǔ)與W6和W7相關(guān)聯(lián)的TOC條目。還分別產(chǎn)生并且作為塊O (短壽命塊)中的TOC頁6的一部分存儲(chǔ)與W14和W15相關(guān)聯(lián)的TOC條目。在頁W6和W7的移動(dòng)之后,塊4被擦除。
[0083]最后,在塊5上發(fā)生改進(jìn)的垃圾收集操作。在塊5中所有的頁是活動(dòng)的。不需要對塊5進(jìn)行耗損均衡,因此,在塊5中不發(fā)生移動(dòng)。
[0084]改進(jìn)的垃圾收集操作已循環(huán)通過每一個(gè)塊(S卩,塊2、塊3、塊4和塊5),以將任何活動(dòng)頁移動(dòng)到塊I (長壽命塊)。并且,如果已知寫入請求包含持久數(shù)據(jù)(例如,W13),那么與改進(jìn)的垃圾收集操作并行地接收的寫入請求被分配給塊I (長壽命塊)。否則,寫入請求被分配給塊O (短壽命塊)。
[0085]給定總共7個(gè)寫入請求時(shí),在第二迭代中需要2次移動(dòng)。在這