Softer, если присмотреться к картинке по
твоей ссылке, как ты утверждаешь, твоего диска, то мы увидим:
Т.е., массив построен на 16 микросхемах MLC NAND памяти, обозначенными как Kingston FT64G08UCT1. Конкретно на эти чипы инфы мы скорее всего не найдем, но мы можем узнать вот что:
1. Технология NAND MLC. Это блочная память с последовательным доступом. Аналогично магнитной записи. Если интересно, то начать изучать можно
отсюда.
2. NAND как FLASH требует стирания перед записью (принудительная установка всех бит блока в 1). Причем, блок стирания может быть достаточно крупным (у первых он был всей матрицей памяти).
Все памяти обзываются стандартно. Если разобрать FT64G08UCT1, то получаем 64Гбит матрицу, организованную с доступом как 8 бит, что дает нам 8 полных ГБайт в одной микросхеме и 128ГБайт в устройстве (16 микросхем, по 8шт с каждой стороне). Кстати, 8ГБайт они зажулили именно на брак NAND и будущий резрев. Теперь откроем документ на
аналогичную MLC NAND объемом 64Гбит:
Память организована как 2048 блоков данных, сопровождающихся 84 расширенными блоками (как 2 банка 1024+42). Каждый блок содержит 256 страниц. Страница имеет объем 16384 байт + 1280 байт "spare" области (там хранятся ECC коды и служебные флаги, вроде блок совбоден/плохой). Более наглядно это показано в самом документе:
Так же указан важный параметр: чтение страницы занимает 65мкс. И это время справедливо ко всем байтам, не принадлежащим к одной странице. А теперь самое важное: механика записи.
1. Программируется страница целиком. Т.е., минимальный записываемый блок это страница (16384 байт + 1280 байт). Для ускорения обновления страницы есть режим Copy-Back, который подразумевает предварительное чтение страницы во внутренний кэш микросхемы (который имеет размер 1 страницы на каждый банк), изменение и запись обратно. Причем, работает это только со стертыми кусками страницы (это оговорено в документе). Для ускорения потоковой записи есть режим Cache-Program, который заключается лишь в перекрытии времени переноса данных в матрицу и занесением новых данных в кэш, но работает это только в пределах блока (так же оговорено документом). Так же есть возможность чередовать банки, что так же позволит экономить время и повышать скорость потоковой записи. Но для случайной записи это работает только если данные в одном блоке но в разных банках.
2. Стирать можно только блок целиком. А это 256 страниц. Или 4Мбайт + 370Кбайт для ECC. И в случае обновления уже записанного блока эту информацию где-то надо хранить. Обычно, для этого используется набортное ОЗУ,
как в посте Skay, если таковой не имеется, то только средствами драйвера OS.
Теперь, когда понятно как работает MLC NAND и из чего складывается время доступа, рассмотрим HDD. Здесь все просто: больше всего влияет время позиционирования головки по блинам, второе по величине влияния это скорость вращения шпинделя, которое обуславливает, когда именно под головкой окажется нужный сектор, когда головка оказывается на нужной дорожке. И вот тут понятно, что HDD имеет минимальное время позиционирования именно при последовательном доступе, когда до требуемой дорожки только 1 шаг и остается только скорость вращения диска (но производители это знают, поэтому размечают блины так, чтобы при последовательном чтении нужный сектор оказывался под головкой сразу, а дискеты можно было отформатировать специальным образом). Таким образом, на запись одного сектора уходит 1-2 оборота шпинделя. Ситуация меняется, когда происходит reallocate. Для доступа нужного сектора приходится дергать голову далеко, а логичное смещение секторов не возможно, ибо требует переноса всей информации, что займет много времени.
А теперь итоги. Современные FS заточены под блок 4Кбайт. Это сложилось исторически, из-за SCSI устройств. И поэтому, полноценно сравнивать скорость SSD vs HDD можно только такими блоками. 512 байт остались чисто из-за совместимости и, как правило, выдаются из кеша считанного 4К блока (если они принадлежат одному блоку). На скорость SSD практически не влияет время позиционирования (в это время можно отнести необходимость стирания блока, обновление страницы и пр.), особенно при современных стратегиях использования SSD (только в OS которые нативно поддерживают SSD) и его очищенного в начале состояния. Упирается скорость только в скорость связующего интерфейса и иногда в версию прошивки (знаю, что многие диски надо для этого обновлять, например серия EVO у Samsung), потому что в SSD микросхемы памяти работают параллельно сразу несколько штук, чтобы выиграть в обьем/время. У HDD же скорость будет зависеть от реакции подвеса головок, от RPM (частоты вращения шпинделя с блинами) и количества reallocate секторов.
Так вот, если перенести метод использования памяти в SSD на HDD (это известно как
RAID), то нормальный RAID0 без проблем положит SSD на обе лопатки, причем не только по чтению, но и по записи. Удел SSD это рядовые рабочие станции и ноутбуки (в целях экономии энергии). Вот несколько быстрых замеров разных RAID массивов на обычных дисках:
RAID0, 4 диска:
RAID6, 4 диска:
PS Есть еще один параметр у дисковой системы (в частности последнего звена - самих дисков): IOP/S. Это количество операций ввода-вывода за секунду. И тот диск (или система) будет производительней для многозадачной системы, у кого данный параметр будет выше. Каким бы не был быстрым SSD в последовательном доступе, он сольет обычному HDD в рандомном многозадачном, если его IOP/S будет ниже 20к. У топовых SSD вроде OCZ Vertex IV этот параметр более 85к. HDD данный параметр может повысить только при объединении в RAID (особенно аппаратным контроллером со своей кеш-памятью).
Добавлено позже:PPS Вы бы хоть в вику заглянули
про TRIM. Там целый раздел понаписали про то, что я тут распинался выше:
Особенности работы твердотельных накопителей.