Хотя кеширование вызывает некоторые из них, это не единственный фактор. Если бы кэширование было единственным фактором, то мы ожидали бы, что скорость записи быстро упадет с нескольких сотен МБ / с до фактической скорости записи на диске и останется там до конца записи. Однако, это не то, что я наблюдал при выполнении больших передач на диск и с него (например, при записи загрузочных образов). Вместо этого я наблюдаю, что скорость постепенно уменьшается в течение всей операции.
Это замедление вызвано остатком данных на флэш-чипе (-ах), используемом для хранения данных, что требует записи некоторых блоков более одного раза.
Внутри флеш-чипа есть блок данных, в который можно записать данные. При записи компьютер может выполнять только две функции: он может стереть весь блок или изменить некоторые (или все) биты в блоке с 0 на 1.
Тем не менее, некоторые из этих блоков лучше, чем другие, особенно на флэш-накопителях низкого качества, и в результате при записи на него новых данных некоторые биты могут иногда переключаться обратно в 0 сразу после записи, и не не меняется. Таким образом, при записи в блок операционная система должна проверить, чтобы убедиться, что все данные были записаны правильно, и если это не так, она должна повторить блок, записав одни и те же данные в один и тот же блок два или три раза. пока данные не залипают.
Итак, когда ваш компьютер записывает кучу данных на флэш-диск, вот (не совсем точное, но достаточно хорошее) объяснение того, как это происходит:
- Возьмите первый набор блоков для записи и запишите их все.
- Прочитайте все блоки, которые мы только что написали, и составьте список тех, которые не соответствуют
- Напишите следующий набор блоков, а также те, которые были написаны неправильно в прошлый раз.
- Повторяйте 2-3, пока все блоки не будут написаны правильно.
Когда компьютер выполняет запись на диск, он сообщает о скорости, с которой он впервые записывает блоки на диск. Поскольку он также должен будет перезаписывать более ранние блоки одновременно, общая пропускная способность, которая может использоваться для первичных блоков, уменьшается по мере увеличения числа перезаписей, которые также должны произойти. Таким образом, кажущаяся скорость записи уменьшается со временем.