Сектор головки цилиндра ( CHS ) — это ранний метод назначения адресов каждому физическому блоку данных на жестком диске .
Это 3D-система координат, состоящая из вертикальной координатной головки , горизонтального (или радиального) координатного цилиндра и углового координатного сектора . Головка выбирает круглую поверхность: пластину на диске (и одну из двух ее сторон). Цилиндр — это цилиндрическое пересечение через стопку пластин на диске, центрированное вокруг шпинделя диска. Вместе цилиндр и головка пересекаются в круговую линию или, точнее, в круговую полосу физических блоков данных, называемую дорожкой . Сектор, наконец, выбирает, к какому блоку данных на этой дорожке следует обратиться, поскольку дорожка подразделяется на несколько частей одинакового размера, каждая из которых представляет собой дугу (360/n) градусов, где n — количество секторов на дорожке.
Адреса CHS были раскрыты вместо простых линейных адресов (от 0 до общего количества блоков на диске - 1 ), поскольку ранние жесткие диски не поставлялись со встроенным контроллером диска , который скрывал бы физическую компоновку. Использовалась отдельная универсальная плата контроллера, так что операционной системе приходилось знать точную физическую «геометрию» конкретного диска , подключенного к контроллеру, для правильной адресации блоков данных. Традиционные ограничения составляли 512 байт/сектор × 63 сектора/дорожка × 255 головок (дорожек/цилиндр) × 1024 цилиндра, что приводило к ограничению в 8032,5 МиБ для общей емкости диска.
По мере усложнения геометрии (например, с введением записи битов зоны ) и увеличения размеров дисков со временем метод адресации CHS стал ограничивающим. С конца 1980-х годов жесткие диски начали поставляться со встроенным контроллером диска [1], который хорошо знал физическую геометрию; однако они сообщали компьютеру ложную геометрию, например, большее количество головок, чем фактически имелось, чтобы получить больше адресуемого пространства. Эти логические значения CHS транслировались контроллером, таким образом, адресация CHS больше не соответствовала никаким физическим атрибутам диска. [2]
К середине 1990-х годов интерфейсы жестких дисков заменили схему CHS на логическую адресацию блоков (LBA), но многие инструменты для управления таблицей разделов главной загрузочной записи (MBR) по-прежнему выравнивали разделы по границам цилиндров; таким образом, артефакты адресации CHS все еще наблюдались в программном обеспечении для разбиения на разделы к концу 2000-х годов. [2]
В начале 2010-х годов ограничения по размеру диска, накладываемые MBR, стали проблематичными, и в качестве замены была разработана таблица разделов GUID (GPT); современные компьютеры, использующие прошивку UEFI без поддержки MBR, больше не используют какие-либо понятия адресации CHS.
Адресация CHS — это процесс идентификации отдельных секторов (т. е. физических блоков данных) на диске по их положению на дорожке, где дорожка определяется номерами головки и цилиндра. Термины объясняются снизу вверх, для адресации диска сектор — это наименьшая единица. Контроллеры дисков могут вводить трансляции адресов для сопоставления логических позиций с физическими, например, запись битов зоны сохраняет меньше секторов на более коротких (внутренних) дорожках, физические форматы дисков не обязательно являются цилиндрическими, а номера секторов на дорожке могут быть перекошены.
Дискеты и контроллеры использовали физические размеры секторов 128, 256, 512 и 1024 байта (например, PC/AX), но форматы с 512 байтами на физический сектор стали доминирующими в 1980-х годах. [3] [4]
Наиболее распространенный размер физического сектора для жестких дисков сегодня составляет 512 байт, но были жесткие диски с 520 байтами на сектор, а также для не-IBM-совместимых машин. В 2005 году некоторые пользовательские жесткие диски Seagate использовали размеры сектора 1024 байта на сектор. Жесткие диски Advanced Format используют 4096 байт на физический сектор ( 4Kn ) [5] с 2010 года, но также смогут эмулировать 512-байтовые сектора ( 512e ) в течение переходного периода. [6]
Магнитооптические приводы используют размеры секторов 512 и 1024 байта на 5,25-дюймовых приводах и 512 и 2048 байта на 3,5-дюймовых приводах.
В адресации CHS нумерация секторов всегда начинается с 1 , сектора 0 не существует , [1] что может привести к путанице, поскольку схемы логической адресации секторов обычно начинают отсчет с 0, например, логическая блочная адресация (LBA) или «относительная адресация секторов», используемая в DOS.
Для физических геометрий дисков максимальное число секторов определяется низкоуровневым форматом диска. Однако для доступа к диску с помощью BIOS IBM-PC-совместимых машин число секторов кодировалось шестью битами, что давало максимальное число 111111 (63) секторов на дорожку. Этот максимум все еще используется для виртуальных геометрий CHS.
Дорожки — это тонкие концентрические круговые полосы секторов. Для чтения одной дорожки требуется по крайней мере одна головка. Что касается геометрии диска, термины дорожка и цилиндр тесно связаны. Для одно- или двухстороннего гибкого диска общим термином является дорожка ; а для более чем двух головок общим термином является цилиндр . Строго говоря, дорожка — это заданная комбинация, состоящая из секторов, в то время как цилиндр состоит из секторов.CH
SPT
SPT×H
Цилиндр — это раздел данных на диске , используемый в режиме адресации CHS диска с архитектурой фиксированных блоков или в режиме адресации цилиндр–головка–запись (CCHHR) диска CKD .
Концепция заключается в концентрических, полых, цилиндрических срезах через физические диски ( пластины ), собирающих соответствующие круговые дорожки, выровненные через стопку пластин. Количество цилиндров дисковода точно равно количеству дорожек на одной поверхности в приводе. Он включает в себя тот же номер дорожки на каждой пластине, охватывая все такие дорожки на каждой поверхности пластины, которая может хранить данные (независимо от того, является ли дорожка «плохой» или нет). Цилиндры вертикально образованы дорожками . Другими словами, дорожка 12 на пластине 0 плюс дорожка 12 на пластине 1 и т. д. составляют цилиндр 12.
Другие формы устройств хранения данных с прямым доступом (DASD), такие как устройства барабанной памяти или ячейка данных IBM 2321 , могут выдавать адреса блоков, включающие адрес цилиндра, хотя адрес цилиндра не выбирает (геометрический) цилиндрический срез устройства.
Устройство, называемое головкой, считывает и записывает данные на жестком диске, манипулируя магнитным носителем, который составляет поверхность соответствующей дисковой пластины. Естественно, пластина имеет 2 стороны и, следовательно, 2 поверхности, на которых можно манипулировать данными; обычно на пластину приходится 2 головки, по одной на сторону. (Иногда термин « головка» заменяется термином «сторона », поскольку пластины могут быть отделены от своих головных узлов, как в случае со съемными носителями дисковода . )
Адресация , поддерживаемая в коде BIOS , совместимом с IBM-PC, использовала восемь бит для максимум 256 головок, которые считались головками от 0 до 255 ( ). Однако ошибка во всех версиях Microsoft DOS / IBM PC DOS до 7.10 включительно приведет к сбою этих операционных систем при загрузке при обнаружении томов с 256 головками [2] . Поэтому все совместимые BIOS будут использовать сопоставления только с 255 головками ( ), включая виртуальные геометрии.CHS
FFh
00h..FEh
255×63
Эта историческая странность может влиять на максимальный размер диска в старом коде BIOS INT 13h , а также в старых операционных системах PC DOS или подобных им:
(512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5
МБ , но на самом деле 512×63×256×1024=8064
МБ дает то, что известно как предел в 8 ГБ . [7] В этом контексте соответствующее определение 8 ГБ = 8192 МБ является еще одним неверным пределом, поскольку для этого потребуется CHS 512×64×256
с 64 секторами на дорожку.
Дорожки и цилиндры отсчитываются от 0, т. е. дорожка 0 является первой (самой внешней) дорожкой на дискете или других цилиндрических дисках. Старый код BIOS поддерживал десять бит в адресации CHS с количеством цилиндров до 1024 ( ). Добавление шести бит для секторов и восьми бит для головок приводит к 24 битам, поддерживаемым прерыванием BIOS 13h . Вычитание запрещенного номера сектора 0 в дорожках соответствует 128 МБ для размера сектора 512 байт ( ); и подтверждает (примерно) ограничение в 8 ГБ . [8]1024=210
1024×256
128 MB=1024×256×(512 byte/sector)
8192-128=8064
Адресация CHS начинается 0/0/1
с максимального значения 1023/255/63
для 24=10+8+6
битов или 1023/254/63
для 24 бит ограничена 255 головками. Значения CHS, используемые для указания геометрии диска, должны учитывать цилиндр 0 и головку 0, что приводит к максимуму ( 1024/256/63
или) 1024/255/63
для 24 бит с (256 или) 255 головками. В кортежах CHS, указывающих геометрию, S фактически означает секторы на дорожку, и где (виртуальная) геометрия все еще соответствует емкости, диск содержит C×H×S
секторы. По мере того, как стали использоваться более крупные жесткие диски, цилиндр стал также логической структурой диска, стандартизированной [ требуется ссылка ] на 16 065 секторов ( 16065=255×63
).
Адресация CHS с 28 битами ( EIDE и ATA-2 ) допускает восемь бит для секторов, все еще начинающихся с 1, т. е. секторы 1...255, четыре бита для головок 0...15 и шестнадцать бит для цилиндров 0...65535. [9] Это приводит к ограничению примерно в 128 ГБ ; фактически 65536×16×255=267386880
сектора соответствуют 130560 МБ для размера сектора 512 байт. [7] Биты 28=16+4+8
в спецификации ATA-2 также охвачены Списком прерываний Ральфа Брауна , и был опубликован старый рабочий проект этого теперь устаревшего стандарта. [10]
При старом ограничении BIOS в 1024 цилиндра и ограничении ATA в 16 головок [11] совокупный эффект составил 1024×16×63=1032192
секторы, т. е. ограничение в 504 МБ для размера сектора 512. Схемы трансляции BIOS , известные как ECHS и пересмотренный ECHS, смягчили это ограничение, используя 128 или 240 вместо 16 головок, одновременно уменьшая количество цилиндров и секторов для размещения 1024/128/63
(ограничение ECHS: 4032 МБ ) или 1024/240/63
(пересмотренное ограничение ECHS: 7560 МБ) для заданного общего количества секторов на диске. [7]
Сообщества Unix используют термин «блок» для обозначения сектора или группы секторов. Например, утилита Linux fdisk до версии 2.25 [12] отображала размеры разделов с использованием блоков по 1024 байта .
Кластеры — это единицы распределения для данных в различных файловых системах ( FAT , NTFS и т. д.), где данные в основном состоят из файлов. Кластеры не зависят напрямую от физической или виртуальной геометрии диска, т. е. кластер может начинаться в секторе, близком к концу данной дорожки, и заканчиваться в секторе на физически или логически следующей дорожке.CH
CH
В 2002 году спецификация ATA-6 ввела необязательную 48-битную логическую адресацию блоков и объявила адресацию CHS устаревшей, но все еще позволяла реализовывать трансляции ATA-5. [13] Неудивительно, что формула трансляции CHS в LBA, приведенная ниже, также соответствует последней трансляции ATA-5 CHS. В спецификации ATA-5 поддержка CHS была обязательной для секторов до 16 514 064 и необязательной для дисков большего размера. Предел ATA-5 соответствует CHS 16383 16 63
или эквивалентной емкости диска (16514064 = 16383 × 16 × 63 = 1032 × 254 × 63) и требует 24 = 14 + 4 + 6 бит ( 16383 + 1 = 2 14 ). [14]
Кортежи CHS можно сопоставить с адресами LBA, используя следующую формулу:
где A — адрес LBA, N головок — количество головок на диске, N секторов — максимальное количество секторов на дорожку, а ( c , h , s ) — адрес CHS.
Формула логического номера сектора в стандартах ECMA -107 [3] и ISO / IEC 9293:1994 [15] (заменяющий ISO 9293:1987 [16] ) для файловых систем FAT в точности соответствует формуле LBA, приведенной выше: адрес логического блока и номер логического сектора (LSN) являются синонимами. [3] [15] [16] Формула не использует количество цилиндров, но требует количества головок и количества секторов на дорожку в геометрии диска, поскольку один и тот же кортеж CHS адресует разные номера логических секторов в зависимости от геометрии.
Примеры :
1020 16 63
диска с 1028160 секторами CHS 3 2 1
равен LBA 3150 = ((3 × 16) + 2) × 63 + (1 – 1) ;1008 4 255
диска с 1028160 секторами CHS 3 2 1
равен LBA 3570 = ((3 × 4) + 2) × 255 + (1 – 1) 64 255 63
диска с 1028160 секторами CHS 3 2 1
равен LBA 48321=((3 × 255) + 2) × 63 + (1 – 1)2142 15 32
диска с 1028160 секторами CHS 3 2 1
равен LBA 1504 = ((3 × 15) + 2) × 32 + (1 – 1)Чтобы визуализировать последовательность секторов в линейной модели LBA, обратите внимание на следующее:
Формат Cylinder Head Record использовался жесткими дисками Count Key Data (CKD) на мэйнфреймах IBM по крайней мере с 1960-х годов. Он во многом сопоставим с форматом Cylinder Head Sector, используемым ПК, за исключением того, что размер сектора не был фиксированным, а мог меняться от дорожки к дорожке в зависимости от потребностей каждого приложения. В современном использовании геометрия диска, представленная мэйнфрейму, эмулируется встроенным ПО хранилища и больше не имеет никакого отношения к геометрии физического диска. [ необходима цитата ]
Более ранние жесткие диски, используемые в ПК, такие как MFM и RLL , делили каждый цилиндр на равное количество секторов, поэтому значения CHS соответствовали физическим свойствам диска. Диск с кортежем CHS 500 4 32
имел бы 500 дорожек на сторону на каждой пластине, две пластины (4 головки) и 32 сектора на дорожку, с общим объемом 32 768 000 байт (31,25 МиБ ). [ необходима цитата ]
Диски ATA/IDE были намного более эффективны при хранении данных и заменили устаревшие диски MFM и RLL. Они используют зонную битовую запись (ZBR), где количество секторов, разделяющих каждую дорожку, зависит от расположения групп дорожек на поверхности пластины. Дорожки, расположенные ближе к краю пластины, содержат больше блоков данных, чем дорожки, расположенные ближе к шпинделю, поскольку в пределах данной дорожки у края пластины больше физического пространства. Таким образом, схема адресации CHS не может напрямую соответствовать физической геометрии таких дисков из-за различного количества секторов на дорожку для разных областей на пластине. Из-за этого многие диски по-прежнему имеют избыток секторов (размером менее 1 цилиндра) в конце диска, поскольку общее количество секторов редко, если вообще когда-либо, заканчивается на границе цилиндра. [ необходима цитата ]
Диск ATA/IDE может быть установлен в BIOS системы с любой конфигурацией цилиндров, головок и секторов, которые не превышают емкость диска (или BIOS), поскольку диск преобразует любое заданное значение CHS в фактический адрес для своей конкретной аппаратной конфигурации. Однако это может вызвать проблемы совместимости. [ необходима цитата ]
Для операционных систем, таких как Microsoft DOS или более старая версия Windows , каждый раздел должен начинаться и заканчиваться на границе цилиндра. [ необходима ссылка ] Только некоторые из относительно современных операционных систем (включая Windows XP) могут игнорировать это правило, но это все равно может вызвать некоторые проблемы совместимости, особенно если пользователь хочет выполнить двойную загрузку на одном и том же диске. Microsoft не следует этому правилу с внутренними инструментами для разбиения диска, начиная с Windows Vista. [17]
Эмуляция 512 байт иногда называется 512e
стандартах ATA/ATAPI-5 и более ранних была определена трансляция CHS. Эта трансляция устарела, но может быть реализована, как определено в ATA/ATAPI-5.
Если емкость устройства больше или равна одному сектору и меньше или равна 16 514 064 секторам, то устройство должно поддерживать трансляцию CHS.
0xFF
0x100 & 0xFF = 0x00