{'fraction_non_alphanumeric': 0.024617431803060547, 'fraction_numerical': 0.0, 'mean_word_length': 5.510822510822511, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Assimilating Cleaning Operations with Flash-Level Parallelism for NAND Flash-Based Devices

Flash-based devices internally provide multilevel parallelism, and parallelizing flash operations is the key to improving performance. Most of existing research works dispatch and schedule host requests so that the obtained sub-requests can be served in parallel, however, these works seldom parallelize the extra operations introduced by the internal garbage collection (GC) process. The costly operation sequence of GC is the main reason for I/O blocking, especially when the device is close to be full. In this paper, we propose a novel Subdivided Garbage Collector (SGC), which exploits both the system-level and the flash-level parallelism to parallelize garbage-collecting operations as well as garbage-collecting activities. SGC confines the GC process inside a flash chip, utilizing the system-level parallelism to overlapping garbage-collecting activities with I/O services among different chips. The flash-level parallelism is further exploited with a novel queue mechanism, which schedules and packs the reordered partial steps of cleaning sequence into parallel operations. To make more parallelization possible, a dynamic conflict-aware address allocator is proposed to eliminate the host writes and cleaning operations from contending for the critical components of the device. Trace-driven simulations demonstrate that the proposals can hide overheads of GC, resulting in a shorter response time.