TL; DR: Ini karena SSD berbohong kepada Anda dan mengatakan penulisan dilakukan sebelum itu. Tidak bisa lolos dengan hal yang sama untuk dibaca.
Versi yang lebih panjang dari jawabannya adalah menulis caching.
Mari kita mulai dengan case QD1. SSD akan melaporkan penulisan sebagai selesai ke OS setelah menerima data dan menyimpannya dalam cache secara lokal di drive, tetapi sebelum benar-benar menulisnya ke NAND. Ini membuat perbedaan besar karena sebenarnya menulis data ke NAND cukup lambat. Untuk membaca sebenarnya harus membaca data dari NAND sebelum dapat mengirimnya kembali (kecuali jika telah membacanya sebelumnya dan masih memilikinya dalam cache, tetapi itu sangat tidak mungkin dengan pembacaan acak).
Kelemahan dari hal ini adalah bahwa dalam menghadapi kehilangan daya yang tiba-tiba dapat terjadi kehilangan data dari data yang ditulis ke SSD tetapi yang belum sampai ke NAND. Beberapa SSD perusahaan menyertakan kapasitor super yang menyimpan daya yang cukup untuk menyelesaikan penulisan data dalam cache ke NAND jika terjadi kehilangan daya secara tiba-tiba.
Anda melihat hal yang sama untuk hard drive karena mereka juga melakukan caching tulis. Mereka tidak seagresif itu. Mengapa SSD begitu agresif? Untuk menjawab itu, kita perlu mempertimbangkan kasus QD32, yang lebih rumit dan lebih menarik.
Tidak benar apa yang Anda katakan bahwa pembacaan acak umumnya lebih cepat daripada penulisan acak di QD32. Itu sangat tergantung pada SSD tertentu yang Anda lihat.
Jika Anda melihat 4k QD1 acak dibaca pada banyak SSD SATA, mereka semua tampaknya tampil dalam kisaran 20-30 MB / s. Mengapa demikian? Itu karena 4k QD1 membaca acak kebanyakan tentang latensi dan bukan throughput. Latensi berasal dari tiga bagian:
- Latensi antarmuka SATA / AHCI yang melibatkan memberi tahu drive apa yang harus dilakukan dan mengirim data.
- Kontroler itu sendiri harus mencari tahu apa yang harus dilakukan dengan data dan instruksi yang telah diterimanya.
- Waktu yang diperlukan untuk benar-benar membaca atau menulis data ke dudukan NAND.
Baik 1. atau 3. berubah banyak dalam waktu yang lama, dan itulah sebabnya pembacaan acak 1k QD1 juga tidak banyak berubah.
Perpindahan SSD baru-baru ini dari SATA / AHCI ke PCIe / NVMe telah sangat mengurangi latensi 1., itulah sebabnya SSD m.2 dan PCIe tertentu baru-baru ini telah menunjukkan peningkatan besar di sini.
Satu hal yang dapat dilakukan pengontrol SSD untuk sangat membantu dengan latensi adalah membaca atau menulis ke banyak NAND mati secara paralel dan dengan cara itu menutupi sebagian besar latensi 3. Jika Anda melakukan QD32 4k pembacaan acak dengan NCQ SSD dapat melayani pembacaan permintaan rusak dan pastikan itu membaca dari sebanyak mungkin NAND mati secara paralel.
Untuk QD32 4k acak menulis SSD melakukan sesuatu yang disebut menulis menggabungkan. Ketika banyak permintaan tulis kecil datang dalam pengontrol SSD cache mereka secara lokal dan ketika buffer menulis cukup besar telah membangun pengontrol membaginya menjadi potongan-potongan berukuran baik dan menulis potongan ke beberapa NAND mati secara paralel, lagi untuk membantu menutupi NAND latency. Keuntungan lain dari penggabungan penulisan adalah bahwa kebanyakan SSD saat ini memiliki ukuran halaman (jumlah terkecil yang dapat dibaca atau ditulis) lebih besar dari 4k, dan menggabungkan penulisan hingga Anda mencapai ukuran halaman membantu menghindari banyak amplifikasi penulisan. Untuk melakukan hal ini, SSD begitu agresif dalam menulis cache.