Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОФСС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
950 Кб
Скачать
☆

Надежность полупроводниковых носителей

Работа флеш-памяти основана на явлении диффузии электронов в полупровод­нике. Из этого следуют два не очень приятных вывода.

□ Срок хранения зарядов на плавающих затворах пусть и велик, но все же коне­чен. По законам термодинамики электроны стремятся со временем равномерно распределиться по всему объему кристалла. Рано или поздно такое равновесие наступит и все содержимое памяти утратится.

□ Каждый цикл записи понемногу «подтачивает» слой, отделяющий затвор от остальной массы кристалла. Кроме того, со временем неизбежно происходит деградация самого материала и p-n-переходов. Из-за этого срок жизни ячейки ограничен некоторым числом циклов записи-перезаписи.

Производители заверяют, что продолжительность надежного хранения однажды записанных данных составляет не менее 5 лет (реально — 10 и более). Число цик­лов перезаписи тоже иногда оговаривается.

Износ ячеек происходит неравномерно. Те из них, которые хранят записи фай­ловой системы, переписываются при каждом изменении содержимого диска. Они и пострадают в первую очередь. Примерно так же газон на футбольном поле сильнее всего бывает вытоптан перед воротами.

Однако для SSD проблема износа блоков стоит очень остро по определению. На системном диске обновление записей файловой системы, а также областей, где на­ходятся файл подкачки, журналы и реестр, происходит непрерывно. Решением ста­ли технологии динамического распределения или равномерности износа ячеек (wear leveling). Благодаря им часто обновляемая информация по очереди заносится в разные ячейки флеш-памяти. Другими словами, таблица трансляции (соответст­вия между логическими блоками и физическими блоками, куда они записываются) регулярно меняется.

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

На аппаратном уровне принцип динамического распределения обязательно ис­пользуется в SSD — без этого надежность накопителей была бы недопустимо низ­кой. Он стал применяться и во многих современных флеш-дисках USB, картах па­мяти CF и SD.

Логика хранения данных

Логическая структура — то, с чем работает операционная система компьютера. Это всегда иерархия: диск ^ раздел ^ каталог ^ файл. Со стороны интерфейса любой накопитель представляется последовательностью логических блоков. При чтении компьютер запрашивает у накопителя блок с определенным порядковым номером и получает в ответ содержимое этого блока в виде последовательности байтов. При записи, наоборот, последовательность байтов посылается в указанный блок. Границей между аппаратным и логическим уровнями можно считать интер­фейсный кабель.

С самого начала условились, что стандартная длина блока составляет 512 бай­тов. Как раз таков был размер физических секторов на дискетах и первых винче­стерах — отсюда и принято говорить о секторах. Хотя впоследствии производители компьютерного «железа» и разработчики файловых систем стали оперировать бо­лее крупными порциями данных (кластерами, блоками), в основе все равно лежит сектор размером 512 байтов.

Примечание

В действительности на винчестере полный объем физического сектора равен 571 бай­ту. Из них 512 байтов предназначены для записи данных (data), а оставшиеся 59 бай­тов — служебные сведения о внутреннем номере сектора, контрольные суммы и т. д. Часть этой информации записывается в ходе низкоуровневой разметки диска еще на заводе, частью «заведует» микропрограмма. Через стандартный интерфейс скрытые 59 байтов недоступны. Так что «видимая» длина сектора — всегда 512 байтов.

Разделы

Верхний уровень логической структуры диска — разделы (partitions). Идея раз­делов применима к жестким дискам: диск разбивается на несколько частей, каждая из которых несет свою файловую систему и далее представляется ОС вполне само­стоятельным носителем.

Флеш-диски и оптические диски обычно «пропускают» этот уровень. В сущно­сти такой носитель весь является одним разделом и несет только файловую сис­тему.

Главная загрузочная запись и таблица разделов

Начальный сектор диска содержит главную загрузочную запись (англ. master boot record, MBR). Синоним — основная загрузочная запись. MBR состоит из про­граммного кода загрузчика, таблицы разделов (partition table) и заканчивается сиг­натурой (подписью). Все вместе это занимает 512 байтов. Структура главной загру­зочной записи приведена в табл.

Смещение от начала диска

Длина, байт

Содержание

0000

446

Код программы-загрузчика

01BE

16

Таблица разделов: Раздел 1

01CE

16

Таблица разделов: Раздел 2

01DE

16

Таблица разделов: Раздел 3

01EE

16

Таблица разделов: Раздел 4

01FE

2

Сигнатура MBR (всегда AA55)

Первые 446 байтов отводятся под код загрузчика (Boot Record). При загрузке с диска эту короткую программу считывает и выполняет BIOS компьютера. Код загрузчика зависит от того, какой программой создавалась главная загрузочная запись. Например, если вы форматировали (точнее, инициализировали) диск стан­дартными средствами Windows, код загрузчика один, если с помощью Partition Magic — другой, если с помощью программ семейства Acronis — третий. Стан­дартным считается загрузчик, записываемый утилитой fdisk или установщиком Windows.

В адреса 01B8-01BB программа, которой форматировался диск, может записать сигнатуру диска. Например, ОС семейства Windows NT по этим значениям «запо­минают» диск, который однажды подключался к системе, и «узнают» его, даже ес­ли потом он будет переставлен на другой канал IDE или SATA.

Следующие четыре группы по 16 байтов служат для записи сведений о разделах диска. Вместе они образуют таблицу разделов (Partition Table). Пока на диске не создавались разделы, все эти группы содержат нули. На диске можно создать мак­симум 4 основных (basic) раздела — больше структурой MBR не предусмотрено. Каждая группа состоит из 10 полей (табл).

Таблица Структура поля таблицы разделов

Смещение от начала группы

Длина,

байт

Описание

0000

1

Флаг активности раздела (80 — активный, 0 — не активный)

0001

1

Начало раздела — головка H

0002

1

Начало раздела — сектор S (биты 0-5), цилиндр C (биты 6,7)

0003

1

Начало раздела — цилиндр C (старшие биты 8,9 хранятся в предыдущем байте)

0004

1

Код типа раздела

0005

1

Конец раздела — головка H

0006

1

Конец раздела — сектор S (биты 0-5), цилиндр C (биты 6,7)

0007

1

Конец раздела — цилиндр C (старшие биты 8,9 хранятся в предыдущем байте)

0008

4

Смещение первого сектора раздела в координатах LBA

000C

4

Количество секторов раздела

Нулевой байт — флаг активности раздела. Из всех разделов диска активным может быть только один (или ни одного). При загрузке компьютера BIOS, прочитав и выполнив код загрузчика MBR, будет искать «продолжение», т. е. загрузчик опе­рационной системы, в активном разделе. Больше этот флаг ни на что не влияет.

Следующие 3 байта содержат координаты начала раздела, а байты с пятого по седьмой — координаты его конца. Координаты выражены через значения CHS.

Относительно головок, секторов и цилиндров придется сделать отступление. Исторически сначала появилась «трехмерная» адресация секторов на жестких дис­ках, или система адресации CHS. В ней каждый сектор обозначался тремя числами: C (номером цилиндра, т. е. дорожек, лежащих одна под другой), H (номером голов­ки, т. е. пластины) и S (номером сектора на дорожке). Это отражало реальную «геометрию» винчестеров того времени (рис. 2.8).