Есть ли способ решить очерченные выше проблемы, не отказываясь от использования сегодняшних чипов флэш-памяти (тем более что заменить последние пока просто нечем — другие технологии полупроводниковой энергонезависимой памяти нескоро еще выйдут из лабораторий)? Да, есть. Но для этого контроллер накопителя должен быть не «тупым» посредником между шинным интерфейсом накопителя и самой памятью, а обладать достаточной степенью «интеллекта».
Проще всего решается проблема скорости. В самом деле — издревне известен способ увеличить «мощность» любой системы: если одна лошадь не тянет, в упряжку нужно впрячь несколько. Более того — этот принцип родился еще до того, как человек приручил домашних животных: еще первобытные люди при создании убежищ наваливались на особо тяжелые глыбы вместе :) Если без шуток, то подобное распараллеливание усилий применяется в технике очень часто. В том числе, и в компьютерной. В том числе, и в системах хранения данных — достаточно вспомнить RAID-массивы с чередованием. Неудобство их создания на базе винчестеров проистекает только из-за того, что даже один винчестер устройство достаточно крупное и прожорливое, не говоря уже о нескольких. Именно поэтому производители серверов и прочего оборудования, где без массивов не обойтись, давно уже прорабатывают идею уменьшения основного форм-фактора винчестеров – массив из пяти дисков на 2.5 дюйма займет столько же места, как и пара 3.5". Но в случае флэш-накопителей дискретность куда меньшая — атомарной единицей является не целый винчестер, а всего одна микросхема. Недаром уже даже в USB-флэшдрайвах практически не применяются одноканальные контроллеры: двухканальный обойдется практически в те же деньги, зато при наличии двух микросхем поможет поднять скорости чтения и записи почти вдвое. А в SSD «винчестерных» форм-факторов микросхем флэш-памяти можно поместить не две и даже не четыре, тем более что их все равно нужно много — дабы обеспечить большую емкость. Следовательно, каналов может быть еще больше, а результирующая скорость легко способна превысить аналогичную для одиночного винчестера.
Для борьбы с неравномерным износом требуются схемы балансирования нагрузки. Контроллер должен хранить информацию о том, сколько раз какие блоки перезаписывались уже и изредка «менять их местами», благо эта операция простая — ничего физически переносить не требуется: только трансляцию адресов перенастроить. В этом случае можно даже с FAT побороться — таблицы размещения файлов будут просто «кочевать» по всему объему накопителя прозрачным для внешней системы образом. И не только с ней, но и с любыми другими «унаследованными» от традиционных винчестеров особенностями работы систем хранения информации, портящим жизнь флэш-накопителей. Разумеется, все в реальности куда сложнее, чем можно объяснить «на пальцах», алгоритмы борьбы с «лишними» операциями записи могут быть весьма «хитрыми», но факт остается фактом — решение задачи существует, так что тут уже все зависит от того, насколько производители ответственно займутся этим.
Обычно флэш-накопители, кстати, лишены кэш-памяти, объем которой в современных винчестерах дошел уже до 32 МБ. Сделано так не из вредности, а просто потому, что в типичных сферах применения тех же флэшдрайвов или SD-карт надобности в кэшировании нет. В SSD она есть, так что буферизация обязательна. И не только потому, что это позволит увеличить скорость работы во многих приложениях, но и для борьбы с вредными последствиями операций записи. Последняя всегда должна быть отложенной — тогда и со временем доступа на операциях записи проблем особых не будет. Да и постоянно переписывать один и тот же блок, возможно, не придется — может оказаться так, что изменять придется сразу несколько секторов в одном блоке, что можно будет сделать одной операцией. Управление очередью команд тут тоже нам пригодится, ну а поскольку на ее реализацию в РАТА-контроллерах все давно махнули рукой (так что осталась TCQ лишь теорией), наш «гипотетический» идеальный контроллер SSD-накопителя должен быть native SATA и полностью поддерживать NCQ. Замечу, что даже последнее несложное условие во многих сериях представленных на рынке недорогих SSD не выполняется — используются дополнительные чипы-сериализаторы, приделанные к контроллерам РАТА-флэш, пришедшими непосредственно из карт CompactFlash! Очевидно, что ожидать от подобных накопителей хороших результатов просто не приходится. Два-четыре канала флэш-памяти в лучшем случае способны обеспечить нам скорости в 50-100 МБ/с, причем только при применении SLC-микросхем. Очевидно, что в недорогих высокоемких моделях можно встретить только MLC со всеми вытекающими отсюда последствиями, типа скорости записи в 20-30 МБ/с, а то и меньше. Кроме того, «тупой» контроллер будет честно и последовательно пытаться выполнять все поступающие к нему команды, так что в результате некоторые блоки будут переписываться раз так в несколько чаще, чем это требуется. Что касается балансировки нагрузки и тому подобного, так не требовалось это для флэш-карт (как и для старых специализированных DOM (Disk On Module) — там все подобные особенности обычно специализированная ОС учитывала, когда это было нужно), так что не стоит искать подобных схем во многих SSD, позиционируемых их производителями в качестве массовых универсальных устройств.
Но, к счастью, не все так уж печально на рынке — «правильные» SSD (а не сделанные наспех без учета кучи факторов) на нем присутствуют. В частности, свое решение не так давно предложила компания Intel », вообще говоря смотрящая на конкуренцию SSD с HDD с большим энтузиазмом.