Найти в Дзене
IT. Как это работает?

От транзистора до фреймворка. Часть 25. Дисковая память

Оглавление

Видео: YouTube

Мы плавно подошли к очень важной части операционных систем. В ближайшей паре тройке выпусков рассмотрим дисковую подсистему. Вопрос довольно объемный, но сложного в нем ничего нет. При этом работа дисковой подсистемы очень тесно связана с быстродействием программ. Поэтому понимать многие причинно-следственные связи хорошим программистам просто необходимо. В этом вопросе спрятаться за стенкой абстракции уж точно не получится.

Исторический экскурс

Начнем с небольшого исторического экскурса. Длительное время компьютеры обходились без так называемой дисковой памяти. Роль долговременного хранилища программ и данных исполняли бумажные носители. Сейчас это смотрится странно, но перфорированные картонные карточки или ленты совершенно невооруженному взгляду показывали где единица, а где ноль.

Внешний вид перфоленты
Внешний вид перфоленты

Загрузка информации в оперативную память велась при помощи считывателей перфокарт или перфолент. Минусов хоть отбавляй. Взятые технологии из смежной области техники связи не блистали высокой плотностью записи информации на единицу площади носителя. Износ бумаги и медленная работа считывателей также являлись огромными недостатками.

С использованием магнитных лент ситуация в чем-то изменилась, но суть осталась та же. Загрузка при помощи считывателя, однако физический принцип считывания бита информации от отверстий перешел на считывание направление вектора магнитного поля участка ферромагнетика.

Принцип работы ферромагнитного материала а) до записи информации б) после записи информации (1 - полимерная лента, 2 - намагниченный участок, 3 - ненамагниченный участок)
Принцип работы ферромагнитного материала а) до записи информации б) после записи информации (1 - полимерная лента, 2 - намагниченный участок, 3 - ненамагниченный участок)

Это материал с магнитными свойствами в виде порошка, нанесенного на ленту. При воздействии магнитного поля частицы магнитного вещества ориентируются вдоль линий магнитного поля и остаются потом в этом состоянии после окончания воздействия. Самое главное улучшение в этом это возможность уменьшения площади участка, несущего бит информации. Остался один недостаток это сложности быстрого обращения к информации, лежащей в произвольном месте. Чтобы считать с середины ленты нужно потратить время на ее перемотку.

Дисковая память

Теперь собственно мы подошли к первому воплощению устройства дисковой памяти. В качестве материала с высокой плотностью хранения бит используется все тот же ферромагнетик, но конструкция устройства хранения очень сильно изменилась.

Намагниченные участки на дорожке дискеты под микроскопом
Намагниченные участки на дорожке дискеты под микроскопом

Это один или стопка вращающихся дисков, на которые нанесен ферромагнетик. Также присутствуют головки считывания и записи, способные перемещаться по радиусу дисков. Теперь в одном устройстве соединились все лучшие качества. Уменьшая размер намагниченной области можно добиваться высокой плотности записи информации, а механизм перемещающихся головок позволяет в короткое время обратиться к произвольным данным в любом месте устройства хранения. Диски и считывающие головки приводились в движение шаговыми двигателями и размер этих шагов определил многие характеристики этих устройств.

Устройство накопителя на жестких магнитных дисках
Устройство накопителя на жестких магнитных дисках

Первым делом, на самом низком уровне понимания существовали такие понятия как головка, цилиндр и сектор. Головка это номер считывателя на перемещающемся механизме. Цилиндром называется одна из многих окружностей одного радиуса у всех дисков одновременно. Сколько таких окружностей всего, определялось шагом двигателя перемещения головки и размером диска. Минимальной порцией информации для чтения и записи на диск является сектор. С понятием кластера мы разберемся позже. С сектором порция информации связана лишь геометрическими соображениями. Минимальной порцией для чтения и записи является не полная окружность под головкой, а ее часть, ограниченная радиусами, проведенными через равные углы. Вот теперь можно определить сколько информации может быть теоретически записано на носитель.

Количество байт в секторе на одной дорожке умножить на количество секторов в дорожке, умножить на количество цилиндров и умножить на количество головок.

Ни байтом больше.

Интерфейс ATA

Первые дисковые накопители информации имели довольно простой интерфейс доступа к данным. Простой буквально до того, что по линиям связи отдавались импульсы, например как сигналы на перемещение головки к следующему цилиндру. Такие импульсы нужно было вырабатывать либо драйверу устройства, исполняющемуся на процессоре, либо какому-то контроллеру. Это довольно неудобно по многим причинам. Если состав головок, цилиндров и секторов это стандарт, то такая схема будет работать. Но если что-то не как у всех, то как компьютер об этом узнает? Количество секторов изменится и уже не прочесть информацию корректно. Соответственно существовало не так много форматов дискет. Это диски на гибкой основе в пластиковых конвертах.

Но все изменилось, когда гениальный инженерный ум перенес контроллер непосредственно на устройство хранения. Вот это был очередной прорыв.

Что дает контроллер на устройстве хранения?

Местоположение контроллера на накопителе
Местоположение контроллера на накопителе

Да это полная свобода для самореализации инженера. Можно построить самую причудливую конструкцию из головок, цилиндров и секторов. Исполняемый код контроллера точно будет знать внутреннее устройство и корректно вести чтение и запись. С компьютером же контроллер общается при помощи стандартизированного протокола обмена данными. Назвали этот протокол АТА.

Внешний вид разъема ATA
Внешний вид разъема ATA

Еще раз для понимания. Отныне

независимо от устройства, каждый накопитель на жестких магнитных дисках любой конструкции общается с компьютером стандартным набором пакетов байт. Весь обмен данными ведется при помощи контроллера жесткого диска.

Интерфейс SATA

Такое положение дел длилось довольно долго. Основой работы дисковых накопителей информации было механическое перемещение головок чтения записи и механическое вращения дисков с нанесённым на них магнитным покрытием. Несмотря на такие ограничения последовательно расположенные данные могли читаться довольно быстро, этому способствовала тенденция увеличения скорости вращения дисков. Скорость обмена данными начала достигать таких значений, что контроллер не успевал корректно передавать данные по параллельному интерфейсу.

Дело было в параллельных однопроводных линиях с общим уровнем земли. Такие линии сильно подвержены помехам, а кроме того на больших скоростях начинает проявляться проблема установления конечного значения напряжений на всех линиях одновременно. В теории электрических цепей довольно подробно описаны такие эффекты. Решением описанных проблем является переход на последовательные линии с дифференциальным методом передачи сигнала.

Внешний вид разъема SATA
Внешний вид разъема SATA

При таком подходе сигнал передается по двухпроводной линии и информацию несет не абсолютное напряжение, а разница напряжений между проводниками. При воздействии помехи на дифференциальную пару напряжение изменится одинаково в двух проводниках одновременно. Разница напряжений между линиями не претерпевает существенное изменение. Структура пакетов данных теперь передается не параллельно, а последовательно, но уже на высоких скоростях. Таким образом, предел передачи данных через параллельный интерфейс ATA был преодолен. Реинкарнация интерфейса АТА стала называться последовательная АТА или SATA.

Использование Flash памяти

Через некоторое время цена энергонезависимой флэш памяти снизилась настолько, что она могла быть использована в роли носителя информации в устройствах хранения данных. С этого самого момента мы и входим в современное состояние дел. Так называемые твердотельные накопители информации, они же накопители на основе флэш памяти прочно вошли в наш обиход и пока не видно других достойных заменителей. Со стороны компьютера все более или менее осталось прежним. Интерфейс SATA обеспечивает обмен данными между компьютером и контроллером накопителя. Заметьте, уже не произносится термин жесткий диск, потому что диски уже не составляют основу накопителей. После контроллера теперь расположены микросхемы флэш памяти, с которыми он взаимодействует.

Внешний вид SSD накопителя с интерфейсом SATA
Внешний вид SSD накопителя с интерфейсом SATA
Внешний вид SSD накопителя с интерфейсом NVMe
Внешний вид SSD накопителя с интерфейсом NVMe

Сама по себе флэш память работает не так уж быстро и обеспечить высокую скорость обмена данными с компьютером можно лишь путем параллельной работы контроллера накопителя со многими микросхемами памяти. Что собственно говоря и делается. Наращивание скорости обмена данными контроллера с микросхемами памяти опять привело к границе пропускной способности интерфейса передачи данных между контроллером и компьютером. SATA оказался не таким уж быстрым. На сцену вышел новый интерфейс обмена данными. Это NVMe.

По сути это эксплуатация уже проверенного популярного интерфейса передачи данных PCIe. Выглядит он как вполне себе обычный разъем и вставляется в слот материнской платы.

Вот так на настоящий момент мы имеем дело с двумя наиболее популярными интерфейсами обмена данных с компьютером и малопонятными, порой экспериментальными способами взаимодействия контроллера накопителя с микросхемами памяти.