HDD и SSD – единство различий
Оглавление
- Словарь странных слов
- Секторная структура хранения данных
- Частотный спектр
- Partial Response - Maximum Likelihood
- Размер бита
- Магнитная головка, позиционер
- Позиционирование
- Последовательное чтение
- Последовательная запись
- SSD
- Некоторые приемы, используемые в NAND для повышения скорости работы
- Шина передачи данных
- Буферная память
- Чтение данных
- Запись данных
- Стирание блока
- Перемещение данных внутри LUN
- Производительность в цифрах
- Повышение производительности, вторая часть - много LUN
- SSD
- Несколько представителей породы высокоскоростных NAND
- Операции ввода-вывода
- Чтение
- Запись
- Свободное место
- Тестирование дисковых накопителей
- Последовательное чтение
- Последовательная запись
- Буферизованное чтение
- Буферизованная запись
- Скорость чтения (записи) данных
- Случайное чтение и запись
- Время отклика диска
- Многопоточные операции
- Размер блока доступа
- Паузы в работе
- Сервер и домашний компьютер
- PCMark Vantage
- eBoostr
- Компрессия
- Компрессия и SSD
- RAID 0
- Вибрация и жесткость подвески HDD
Словарь странных слов*
* Вместо вступления.
HDD, он же Hard Disk Drive, он же НЖМД – Накопитель на жестких дисках. Не находите, довольно странно обнаружить в названии устройства указание на твердость используемых дисков? Дело в том, что первоначальный диск был мягким, FDD, Floppy Disk Drive, что требовалось для съемного носителя (дискеты). Прошло совсем немного времени и стала чувствоваться нехватка не только емкости, но и производительности FDD. Этапы развития технологий HDD пропустим, важнее здесь другое – диски пришлось сделать жесткими для повышения качества поверхности и плотности магнитной поверхности. Вот отсюда и появилось ”hard” в названии дискового накопителя.
Между форматами работы FDD и HDD, особенно ранних версий ATA, общего было больше, чем различий, но в современную эпоху встретить FDD довольно проблематично. Возникает вопрос о смысле использования в классификации явно устаревшего разделения на твердость диска. Довольно часто в качестве русской альтернативы HDD используют определение 'жесткий диск'. Вам не смешно? В статье будет использоваться термин ”HDD” для отождествления данного типа накопительных устройств.
SSD, Solid-State Drive, Твердотельный накопитель. Довольно странно, скорее уж 'монолитный' накопитель, хотя правильнее его называть ”Накопитель без движущихся частей”. Опять какая-то ерунда с логикой, далее будет использоваться общеупотребимое ”SSD” без вникания в смысл акронима.
реклама
MCP, Multi-Chip-Package – размещение нескольких микросхем в одном корпусе.
LUN – в терминологии ONFI это минимальный полностью независимый исполнительный элемент в микросхемах NAND, может состоять из двух плоскостей. Подробнее этот и последующие определения будут описаны в разделе технологий NAND.
Plane, плоскость – аналогично LUN, но с массой ограничений в применении. Входит в состав LUN.
Die – электронная схема, кристалл. По отношению к NAND почти всегда понимается (если нет очередной путаницы) аналогом термина ”LUN”. Пожалуйста, запомните это! Иначе всё запутается окончательно. Die = LUN. В тексте будет использоваться термин ”LUN” во всех случаях, когда им можно заменить ”Die” – так меньше путаницы в понятиях.
Target – элемент MCP с отдельным сигналом выборки CE. При обращениях к конкретному устройству надо как-то отождествить его на общей шине данных, для чего используются сигналы CE (Chip Enable, микросхема выбрана). Внутри одного target может быть несколько микросхем с разделением по адресам. Это означает, что в составе одного target может быть несколько Die (читай - LUN).
Секторная структура хранения данных
Описания на формат данных современных HDD отсутствуют, поэтому пойдем от FDD и ранних версий ATA. Некоторое представление можно получить на странице сайта remont-kompa.ru .
Формат записи определяет наличие маркера начала трека и зонной структуры секторов.
реклама
При некотором упрощении, формат сектора состоит из следующих элементов:
1. | зона синхронизации |
2. | адресный маркер |
3. | спецификация положения сектора на носителе - номер головки, стороны, дорожки,... |
4. | контрольная сумма |
5. | первый пустой промежуток (защитный интервал) |
6. | зона синхронизации |
7. | маркер данных |
8. | сектор данных |
9. | контрольная сумма |
10. | второй пустой промежуток |
Если присмотреться внимательнее к этому списку, то можно заметить две одинаковые структуры - с 1 по 4 и с 6 по 9. Вроде бы, не столь ясен смысл усложнять формат и зачем-то записывать два блока, адрес и данные, вместо одного. Но смысл всё же есть - адресные записи формируются при форматировании дискеты и больше никогда не меняются, а вот блоки 'данные' читаются и перезаписываются при работе с носителем.
Хочется сразу обратить внимание на важный момент - второй блок (данные) переписываются без затрагивания предыдущего и последующего адресных блоков, поэтому они обрамлены пустыми промежутками. Первый, после адресного блока, служит для компенсации времени переключения накопителя с чтения (адресного блока) на запись, второй (после блока записи) нужен на естественный разброс скорости вращения диска и время переключения магнитной головки с записи на чтение. То есть, длина сектора может немного меняться и в конце записи всегда есть немного мусора.
Попробую предположить, что современные HDD именно такой формат не используют - очень уж он нерационален по объему дополнительной информации. Ну, сами посудите, зачем в каждом секторе хранить номер дорожки, номер поверхности, да и номер сектора? Гораздо проще адресные метки оставить в ограниченном количестве, а сектора разделять просто зонами синхронизации с маркерами данных. Но и это не всё, зачем вообще вводить пустые промежутки между секторами данных? Это бессмысленная потеря места, причем весьма существенная.
Второй момент, не столь явный, но важный при выборе размера сектора. А именно - сбой при чтении данных. При кодировании информации на дискетах используется сигнал с совмещением данных и синхронизации. Четный фронт, точнее его изменение, индицировало данные, а нечетный - синхронизацию. Поля синхронизации и маркеров служили для того, чтоб контроллер отыскал в потоке ноликов и единиц определенный шаблон и далее правильно разбирал считываемую информацию. При механическом повреждении носителя может происходить перестановка четного-нечетного фронтов и, как следствие, 'данные' начинали восприниматься контроллером как синхросигнал, а 'синхросигнал' как данные. Если в секторе есть такое повреждение, то все последующая информация будет неверна в принципе.
Если бы сбой не сорвал синхронизацию, то сломалось бы всего несколько десятков бит, что можно поправить сдвигом остатка сектора и восстановления поврежденных байт каким-либо алгоритмом избыточного кодирования (например, коды Рида - Соломона). Короче, если информация на дискете портится, то выбивает весь сектор. Отсюда вытекают два логичных вывода - нет нужды делать побайтовые средства восстановления и вряд ли стоит использовать очень большие сектора. Но все сказанное опиралось на формат хранения данных FDD и было бы слишком оптимистично прямо переносить эти технологии на современный HDD.
Есть и третий момент - достоверность считывания. При уменьшении геометрического размера места хранения бита информации на поверхности носителя возрастает уровень шума, ведь поверхность магнитного носителя не идеальна и обладает микронеровностями. Сюда же надо добавить пыль, которая неизбежно присутствует в гермоблоке.
Кроме локальных сбоев чтения и записи, пыль увеличивает дефектность поверхности носителя не только попаданием под магнитную головку, но и просто соприкасаясь с поверхностью. Современные HDD с их скоростью вращения (5-7-10(15) тысяч оборотов в минуту или 80-170(250) оборотов в секунду) как-то не способствует спокойному и ламинарному течению потока воздуха. Впрочем, в гермоблоке устанавливается пылеуловитель, который собирает частицы за некоторое время работы HDD.
Итак, пыль может вызывать локальные (неповторяющиеся) ошибки чтения, причем достаточно продолжительные по объему информации. Если брать размер бита на магнитном носителе в 25 нм, то обычная пылинка в 0.5 мкм вроде бы нарушит прием трех байт. Однако просто представьте - магнитная головка парит над поверхностью диска на высоте порядка 5 нм и натыкается на пылинку 500 нм. Согласитесь, вряд ли магнитная головка сможет пролететь над помехой, скорее будет удар, который способен даже снести головку с дорожки.
Если в этот момент происходила запись данных, то 'увы', вплоть до стирания адресного блока, что означает появление soft-bad сектора. Если сказанное показалось незначительным, то хочу обратить внимание, что все дефекты от пыли (царапины) носят круговой характер и располагаются по дорожкам. Кроме того, пыльная взвесь нагревает магнитную головку, что может ухудшить качество ее работы.
Частотный спектр
Как говорится, всё меньше и меньше известно что-то вообще. Ну, продолжим.
Магнитная головка считывает и записывает данные последовательным способом, побитно, что означает очень высокую частоту передачи данных. Другая, не столь очевидная, проблема - на магнитный носитель нельзя записывать данные с постоянной составляющей. Если попытаться записать что-то вида 0001000 в виде полярности намагниченностей, то из-за группового эффекта 'единица' будет считана с меньшим уровнем - на нее частично наложится поле от множества соседних 'ноликов' (противоположная полярность намагничивания) и поле единички станет меньше вплоть до 'нечитаемого'.
реклама
Высокая частота передачи данных порождает отражения в канале передачи, что искажает информацию самым причудливым образом. Но есть и более неприятная вещь - из-за деградации высокочастотной части спектра уменьшается амплитуда коротких импульсов. Как следствие - можно их потерять. Если у вас когда-нибудь был магнитофон, то эта беда хорошо известна - чем больше слушаешь одну и ту же композицию, тем глуше звук. Сюда же можно отнести копир-эффект - громкие низко-среднечастотные звуки могут копироваться из одного витка ленты в другой между слоями пленки.
Не знаю как в технологиях HDD, а в системах передачи данных для компенсации этих дефектов применят механизм избыточного кодирования с исключением неудобных кодовых комбинаций.
Маленький пример.
Например, нам надо передать два бита. Всего вариантов четыре: 00, 01, 10, 11.
Если присмотреться, то варианты вида 00 и 11 дают постоянную составляющую. Точнее, они передают постоянный уровень.
Давайте передавать три бита вместо двух. Для трех бит будут комбинации: 000, 001, 010, 011, 100, 101, 110, 111.
Понятно, что 000 и 111 нам не подходят, а другие можно использовать, предположим, таким образом: 00 = 001, 01 = 010, 10 = 011, 11 = 100
В результате избавились от передачи постоянного уровня и получили условный признак сбоя передачи данных. При получении комбинации бит, которые не определены в списке, контроллер будет знать об ошибке. Подобное кодирование, как в примере, 2B3B, не применяется из-за больших накладных расходов (приходится передавать информации в полтора раза больше). Для 100BASE-TX используют кодирование 4В5В (не более трёх нулей), а под один гигабайт пришлось дополнить кодированием 8В10В (для передачи восьми информационных бит требуется отправить 10 бит).
С помощью избыточного кодирования удаляется не только постоянная составляющая (сигнал с неизменным уровнем), но вообще все среднечастотные и низкочастотные составляющие. Это позволяет решить проблему с уменьшением высокочастотного спектра, ведь только он и остается. Жертвовать приходится возрастанием частоты передачи на 25-40 процентов. Это много, очень много, но узкополосный высокочастотный усилитель сделать проще, чем широкополосный, хоть и с меньшей граничной частотой.
Интересно, используется в HDD технология избыточного кодирования, совмещенная с кодами восстановления? По идее, если вводить дополнительные биты для исключения неудобных комбинаций, так почему попутно не увеличить количество дополнительных бит и использовать их для восстановления? Скажем, что-то типа модифицированного кода Хемминга при кодировании 12B16B.
Partial Response - Maximum Likelihood
PRML можно перевести как "неполный отклик - максимальное подобие". Обычный способ оцифровки сигнала состоит в определении пиков уровней, для чего используется набор пороговых элементов (компараторов). Но для применения такого способа приема присутствует серьезная проблема – информационный сигнал весьма высокой частоты и в нём неизбежно присутствуют отражения сигнала, которые разрушают четкие логические уровни. Кроме того, носителем информации является магнитное покрытие диска, который к тому же еще и вращается, что не способствует надежному приему из-за высокого уровня шума.
Обычные способы повышения качества, в виде фильтрации и эквалайзера перед нелинейными элементами, уже не могут обеспечить приемлемую достоверность перевода аналогового сигнала в битовой поток логических “0” и “1”. Для работы с настолько некачественным сигналом необходимо перейти на принципиально иной уровень – оцифровывать сигнал с помощью высокоскоростного АЦП и далее выполнять цифровую обработку сигнала.
Идея алгоритма в том, что известны частота и фаза сигнала, что позволяет эффективно удалять отражения (они повторяют исходный сигнал, задержанный во времени) и шумы. По методам подавлений отражений можно почитать эхоподавление, сходная технология.
С шумом сложнее, у него широкий спектр и большая амплитуда – прямая компенсация невозможна. Вот тут на сцену и выходит PRML – алгоритм определения учитывает историю сигнала и возвращает наиболее вероятное значение. Обратите внимание, не четкий '0' или '1', а наиболее вероятное значение. Это тоже будет '0' или '1', но не с 100%-ной гарантией. Для улучшения декодирования и подавления постоянной составляющей используется избыточное кодирование, поэтому в рассуждениях выше есть какой-то смысл, хотя мысль об использовании кодов Хемминга несколько избыточна.
Размер бита
Информация на магнитном диске записывается побитно и его геометрические размеры можно посчитать из скорости вращения, производительности и геометрических размеров диска.
Размер хода головки около 25 мм, средний диаметр рабочей зоны диска примерно 64 мм (длина ~200 мм), зависит от разметки.
Подробнее по геометрическим размерам можно почитать на сайте в статье "Взгляд на жесткий диск «изнутри»":
- Часть 1 ,
- Часть 2 ,
- Часть 3 .
Попробуем прикинуть, каковы размеры того, что хранится на поверхности магнитного диска. Информация на нем записывается побитно и его размеры элементов можно посчитать из скорости вращения, производительности и геометрических размеров диска.
Для вычислений необходимо знать средний диаметр дорожки и величину перемещения магнитной головки диска, то есть ширину всех дорожек. И то и другое мало зависят от модели HDD, поэтому их можно принять как 200 мм и 25 мм соответственно.
Количество дорожек можно определить из того факта, что скорость вращения диска известна и за один оборот считывает только одна дорожка. Величина бита вычисляется из емкости и длины одной дорожки. Емкость дорожки (усредненное значение) можно вычислить как средняя скорость чтения, деленную на скорость вращения диска.
|
|
|
|
|
|
WDC Green |
|
|
|
|
|
WDC Green |
|
|
|
|
|
Samsung Ecogreen F2 |
|
|
|
|
|
Seagate Barracuda LP |
|
|
|
|
|
WDC Black |
|
|
|
|
|
Seagate Barracuda 7200.11 |
|
|
|
|
|
Seagate Barracuda 7200.12 |
|
|
|
|
|
Samsung Spinpoint F3 |
|
|
|
|
|
Hitachi Deskstar 7K1000.C |
|
|
|
|
|
Расчеты обладают низкой точностью из-за массы грубых допущений, но позволяют получить общее впечатление. С толщиной волоса сравнивать не стоит, избитый штамп, но вспомните о технологических нормах производства современных микросхем – подчас размер транзистора может быть больше бита на поверхности диска.
Итак, числа перед вами, хочется лишь обратить внимание, что повышение скорости вращения потребовало увеличить длину бита и уменьшить ширину дорожки. Этому есть логичное объяснение - повышение скорости вращения увеличивает частоту сигнала в магнитной головке и ухудшает качество ее работы – при записи на поверхности диска растет минимально необходимый интервал между битами данных. Уменьшение ширины дорожки добром не кончится, к этому вопросу еще вернемся.
Магнитная головка, позиционер
В HDD информация хранится на поверхности магнитного слоя дисков. Для чтения и записи информации используется магнитная головка.
Активные размеры магнитной головки меньше одного микрона, поэтому детальную фотографию сделать достаточно проблематично – придется, как всегда, объяснять 'на пальцах'. Она состоит из двух элементов - узла считывания, основанного на эффекте изменения сопротивления от приложенного магнитного поля, и магнитной (соленоидной) головки записи. Эти два элемента расположены вдоль траектории рабочей поверхности, то есть по прямой, друг за другом. Но сразу хочу отметить - активные зоны узла считывания и узла записи несколько разнесены по пути движения. Причина тривиальна, нельзя же два узла поставить один на другом, поэтому их разместили последовательно, друг за другом.
Понятное дело, что на картинке весьма условное изображение. Немного подробнее с GMR магнитной головкой можно ознакомиться на этой странице. Приведу картинку из статьи, очень уж она информативная.
Есть неприятность, спрятавшаяся в принципе перемещения головки. Это только один способ установить магнитную головку на нужную дорожку – повернуть позиционер. Но при этом и сама головка повернется, и будет двигаться по дорожке под некоторым углом. Вначале картинка:
Пояснения:
Красные линии – три положения позиционера – конец рабочей поверхности диска (ближе к его центру), примерно середина и начало;
Синие – касательные линии к направлению дорожек в месте положения магнитной головки;
Зеленые точки – положение магнитной головки на конце коромысла позиционера.
Угол поворота позиционера порядка 30 градусов и это много. Можно несколько снизить остроту проблемы, если немного придвинуть его центр вращения ближе к диску. При этом дуга движения головки станет несколько выше радиуса к центру диска. Тогда в зоне от центра до середины рабочего хода угол поворота головки к дорожке будет небольшим.
Ранее я ссылался на статью "Взгляд на жесткий диск «изнутри»", воспользуюсь картинкой из нее:
Я не знаю, как именно получено данное изображение, но оно весьма четкое. Отчетливо видны зоны намагниченности.
При повороте головки относительно направления движения, точно так же ‘повернутся’ и зоны намагниченности. Для компенсации этого дефекта придется увеличивать шаг размещения битов и (в качестве вынужденной меры) уменьшить ширину дорожки.
В принципе, подстройки небольшие, хуже другое – головка записи хоть и рядом с головкой чтения, но всё же не на одном и том же месте. Это значит, что при повороте магнитной головки центры головок (по отношению к дорожке) разойдутся.
Позволю себе изобразить коллаж по этому вопросу:
Поворот всего на 15 градусов, а смещение между головками чтения - записи уже заметно и довольно отчетливо. Для обхода дефекта можно или банально увеличить ширину дорожки или дополнительно сдвигать магнитную головку при смене режима чтение - запись. Не слишком ли накладно? Время смены дорожки порядка 1 мсек. Сдвиг не настолько сложная процедура, поэтому попробуем весьма безосновательно предположить на порядок меньшее время. За 0.1 мсек под головкой пройдет 10 Кбайт данных.
Гм, вроде бы тривиальная процедура 'прочитать сектор' из 'прочитал адресный маркер – записывай данные' превращается в нечто монстроидальное – прочитал адресный маркер с номером ‘-10 Кбайт’, неторопливо сдвинул головку, записывай. И, желательно, в свой сектор. Короче говоря, техническая проблема есть.
Пока с этим дефектом мирятся – шаг дорожек на внешних треках делают больше, учитывая смещение головок. Вторым действием является некоторое уменьшение ширины головки чтения (на рисунке отмечено желтым) и небольшое смещение её центра на дорожке в режиме 'запись'. В результате, она оказывается выравнена по краю, а головка записи не выходит за пределы дорожки. Цена – небольшое снижение эффективности работы головки чтения, но отпадает необходимость динамически смещать всю магнитную головку в режиме записи. Но - снижение эффективности будет только в режиме записи, для чтения нет необходимости удерживать головку чтения у края дорожки.
При движении по дорожке магнитная головка постоянно центрируется по ней, поэтому дополнительный сдвиг можно совместить с процедурой стабилизации на дорожке. Весьма упрощенно, механизм удержания на дорожке работает следующим образом – между дорожками по всей их длине (по кольцу) расположены специальные маркеры. Несколько упрощенно, маркеры расположены попеременно с правой и левой сторон по ходу движения. Когда головка движется по дорожке, она определяет наличие маркеров (с обеих сторон) и запоминает амплитуду разностного сигнала от них. Величина и знак полученного сигнала говорит о смещении от середины между маркерами, а именно - от центра дорожки.
Да, это весьма медленный способ центровки и он потенциально не способен учесть смещение головки между маркерами разметки. Магнитная головка движется не в вакууме, на нее весьма интенсивно действуют воздушные потоки (и пыль), да и сам диск вибрирует, поэтому ее траектория движения слегка флуктуирует. Если сравнить с огнестрельным оружием, то пуля никогда не движется по прямой (скорее параболе). Для стабилизации пулю закручивают, но вряд ли кто-то станет закручивать магнитную головку в HDD, по крайней мере, я об этом не слышал.
Для полноценной системы стабилизации необходимы две дополнительные обмотки, что дает возможность постоянно измерять величину смещения и оперативно ее компенсировать. Но … одну-то головку сделать трудно, вспомните о ширине и длине бита информации, а еще две дополнительные – просто жуть.
Зоны серворазметки занимают существенное место, причем в смежных дорожках одновременно, что снижает полезную площадь диска, их количество стараются делать не слишком большим. Конкретное значение зависит от фирмы производителя и области применения HDD, обычно находится в диапазоне 200-800 штук на дорожке. Много? Одна метка на 2-4 Кбайта.
Если магнитная головка начала уходить с курса (из-за механического воздействия или собственного колебательного процесса), то о сей неприятности она узнает только через 4-8 секторов, на следующей сервометке. При чтении ничего страшного, пропустит оборот и повторит операцию, а вот при записи всё хуже – считывать-то адресные маркеры магнитная головка наверняка сможет, а вот записывать она точно будет 'по диагонали'. Попользовались таким диском, и дорожки будут выглядеть как ёж – ”/\/\/\”. Безрадостно? Наложите на это аналогичный 'слалом' соседних дорожек.
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила