LBA (Logical block addressing)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:18, 27 ноября 2016.

LBA (англ. Logical block addressing) — механизм адресации и доступа к блоку данных на жёстком или оптическом диске, при котором системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон (головок), секторов на дорожке). Контроллеры современных IDE дисков в качестве основного режима трансляции адреса используют LBA.

Описание

Суть LBA состоит в том, что каждый блок, адресуемый на жёстком диске имеет свой номер, целое число, начиная с нуля и т. д. (то есть первый блок LBA=0, второй LBA=1, ...)

<>LBA 0 = Цилиндр 0/Головка 0/Сектор 1

Еще одно преимущество метода адресования LBA — то, что ограничение размера диска обусловлено лишь разрядностью LBA. В настоящее время для задания номера блока используется 48 бит, что при использовании двоичной системы исчисления даёт возможность адресовать на приводе (248) 281 474 976 710 656 блоков (то есть, при блоке в 512 байт, 128 ПиБ).

LBA заменяет собой более ранние схемы (CHS и Large), в которых нужно было учитывать физические особенности устройства дисков.

LBA уменьшает загрузку CPU поскольку операционная система адресует сектора линейно (LBA), и эти адреса обычно пересчитываются в CHS (цилиндр-головка-сектор) для обращения к диску. При использовании же LBA, пересчета адресов не требуется.

Технический комитет X3T10 установил правила получения адреса блока в режиме LBA:

  • — адрес блока по LBA
  • — номер цилиндра
  • — количество головок
  • — номер выбранной головки
  • — количество секторов на одной дорожке
  • — номер сектора

Описание трансляции

В LBA логическая геометрия целиком заменяется одним номером блока.

LBA трансляция
Диск BIOS ОС и приложения
Физическая геометрия Т1 Линейный номер блока (LBA) T2 Трансляционная геометрия (CHS)

Трансляция осуществляется в два приема — Т1 и T2. Этап трансляции T1 является внутренним свойством винчестера. Этап T2 выполняется BIOS.

Этот режим позволяет преодолеть барьер 528MB, также, как в Extended CHS. Поскольку эта схема несколько проще в сравнении с CHS, она зачастую незначительно (читайте: незаметно) быстрее (в зависимости от качества драйвера LBA может оказаться даже несколько медленнее).

BIOS с трансляцией можно реализовать на системной плате или на плате контроллера. В общем случае используется принятая по умолчанию геометрия диска и, если число цилиндров превышает 1024, номер цилиндра делится на подходящее число (степень 2), а число головок умножается на то же число. Возьмем в качестве примера диск 540 Мб с 1057 цилиндрами и 16 головками. DOS может использовать только 1024 цилиндра, но умеет адресовать до 255 головок. BIOS с трансляцией будет передавать ОС через прерывание INT 13 измененную геометрию с 528 (1057/2 (округленно) цилиндрами и 32 головками (16*2). В этом случае при запросе к диску BIOS будет выполнять обратную трансляцию или вычислять LBA-номер (если режим LBA включен). Такой способ позволяет использовать диски размером до 8 Гб.

Преобразования между CHS и LBA

Кортежи CHS можно преобразовать в адреса LBA и обратно по следующим формулам:

где — номер цилиндра, - номер головки, - номер сектора, — число головок, — число секторов на дорожке, — операция взятия остатка от деления.

Источники

См. также

  • Национальная библиотека им. Н.Э. Баумана [Электронный ресурс]: CHS (Cylinder-head-sector) / Дата обращения: 20.06.2016. — Режим доступа: http://ru.bmstu.wiki/CHS_(Cylinder-head-sector) CHS/.