TL; DR: Dzieje się tak, ponieważ dysk SSD kłamie i mówi, że zapis jest wykonywany wcześniej. Nie da się uciec od tego samego w przypadku odczytów.
Dłuższą wersją odpowiedzi jest buforowanie zapisu.
Zacznijmy od przypadku QD1. Dysk SSD zgłosi zapis jako zakończony w systemie operacyjnym po otrzymaniu danych i zapisaniu go w pamięci podręcznej lokalnie na dysku, ale zanim faktycznie zapisał go w pamięci NAND. To duża różnica, ponieważ zapis danych do NAND jest dość powolny. W przypadku odczytów faktycznie musi odczytać dane z NAND, zanim będzie mógł je odesłać (chyba że wcześniej je odczytało i nadal ma w pamięci podręcznej, ale jest to bardzo mało prawdopodobne w przypadku odczytów losowych).
Minusem tego jest to, że w obliczu nagłej utraty zasilania może dojść do utraty danych zapisanych na dysku SSD, ale nie dotarło to jeszcze do NAND. Niektóre dyski SSD dla przedsiębiorstw zawierają super kondensator, który przechowuje wystarczającą ilość energii, aby zakończyć zapisywanie danych w pamięci podręcznej do pamięci NAND w przypadku nagłej utraty zasilania.
To samo dotyczy dysków twardych, ponieważ również buforują zapisy. Po prostu nie są aż tak agresywni. Dlaczego dysk SSD jest tak agresywny? Aby odpowiedzieć na to pytanie, musimy przejść do rozważenia sprawy QD32, która jest zarówno bardziej skomplikowana, jak i bardziej interesująca.
Nie jest prawdą, co mówisz, że losowe odczyty są generalnie szybsze niż losowe zapisy w QD32. Wiele zależy od konkretnych dysków SSD, na które patrzysz.
Jeśli spojrzymy na losowe odczyty 4k QD1 na wielu dyskach SSD SATA, wszystkie wydają się działać w zakresie 20-30 MB / s. Dlaczego? Jest tak, ponieważ losowe odczyty 4k QD1 dotyczą głównie opóźnień, a nie przepustowości. Opóźnienie pochodzi z trzech części:
- Opóźnienie interfejsu SATA / AHCI, które polega na mówieniu napędowi, co ma robić, i wysyłaniu danych.
- Sam administrator musi dowiedzieć się, co zrobić z danymi i otrzymanymi instrukcjami.
- Czas potrzebny na odczyt lub zapis danych do kości NAND.
Ani 1., ani 3. nie zmieniły się bardzo od dłuższego czasu, dlatego losowe odczyty 1k QD1 również się nie zmieniły.
Niedawne przejście na dyski SSD z SATA / AHCI na PCIe / NVMe znacznie skróciło opóźnienie o 1, dlatego właśnie niektóre dyski SSD m.2 i PCIe wykazują tutaj ogromne ulepszenia.
Jedną rzeczą, którą kontroler SSD może zrobić, aby znacznie pomóc w opóźnieniu, jest odczytywanie lub zapisywanie równolegle do wielu matryc NAND i w ten sposób maskowanie większości opóźnień 3. Jeśli wykonujesz losowe odczyty QD32 4k za pomocą NCQ, SSD może obsłużyć odczyt żądań niesprawnych i upewnij się, że odczytuje z jak największej liczby NAND umiera równolegle, jak to możliwe.
W przypadku losowych zapisów QD32 4k SSD robi coś, co nazywa się łączeniem zapisu. Gdy przychodzi wiele małych żądań zapisu, kontroler SSD buforuje je lokalnie, a gdy zgromadził się wystarczająco duży bufor zapisu, kontroler dzieli go na kawałki o odpowiedniej wielkości i zapisuje je jednocześnie do wielu matryc NAND, ponownie, aby pomóc maskować Opóźnienie NAND. Kolejną zaletą łączenia zapisów jest to, że większość dysków SSD ma obecnie rozmiar strony (najmniejsza ilość, którą można odczytać lub zapisać) większy niż 4k, a łączenie zapisów aż do osiągnięcia rozmiaru strony pozwala uniknąć dużego wzmocnienia zapisu. Aby to zrobić, dyski SSD są tak agresywne w buforowaniu zapisu.