NAND flash memory is widely used as a next-generation storage that rapidly replaces hard disks. Since flash memory does not allow overwriting, pages must be erased before data can be written. Such characteristics of flash causes write amplification, shortening the storage lifetime and degrading performance. In this thesis, we propose a method to mitigate write amplification by improving the efficiency of garbage collection, which often aggravates write amplification. A novel hot data identification method that extends existing algorithms is proposed, and block of the classified data is determined by its frequency thereby reducing the overhead of garbage collection. We implement the proposed scheme on a real hardware system called Jasmine OpenSSD platform and verify that the garbage collection overhead is reduced by up to 90% compared with the existing algorithms. Another problem with garbage collection is that some resources (e.g., channels, chip) are blocked due to garbage collection activity. Since access to these resources is blocked during garbage collection, co-located requests cannot finish until garbage collection completes. In this paper, we propose a method to reduce the read latency during garbage collection. We enable the flash translation layer to grasp the information about the chip on which garbage collection will be performed, so that the information is utilized when the data is replaced in the LRU cache. Through the proposed method, we confirm that that the probability of reading data from the cache during garbage collection increases by about 8%.