Перейти к содержимому

Что такое lba

  • автор:

Что такое lba

У этого термина существуют и другие значения, см. LBA (значения).

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

Привод, способный поддерживать режим LBA, сообщает об этом в информации идентификации привода [1] .
Оригинальный текст (англ.)

A drive which can support LBA mode indicates this in the Identify Drive Information.

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

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

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

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

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

LBA = [(Cylinder \cdot no of heads + heads) \cdot sectors/track ] + (Sector-1)

[2]

  • LBA: Адрес блока по LBA
  • Cylinder: Номер цилиндра
  • noofheads: Количество головок
  • heads: Номер выбранной головки
  • sectors/track: Количество секторов на одной дорожке
  • Sector: Номер сектора

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

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

LBA(c, h, s) = (c \cdot H + h) \cdot S + s - 1

s = (LBA \, \bmod \, S) + 1

h = \frac<LBA - (s - 1)></p>
<p>\, \bmod \, H» width=»» height=»» /></p>
<p><img decoding=— число головок, c— число цилиндров, S— число секторов на дорожке, mod— операция взятия остатка от деления.

Примечания

  1. ↑ Документ технического комитета X3T10 «WORKING X3T10 DRAFT 791D Revision 4c». Раздел 7 Logical interface.
  2. ↑ Документ технического комитета X3T10 «WORKING X3T10 DRAFT 791D Revision 4c». Раздел 7 Logical interface. Подраздел 7.1.2 Environment
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.
  • Носители информации
  • Запоминающие устройства
  • ATA

Wikimedia Foundation . 2010 .

HDD. Методы адресации CHS и LBA.

Существует два основных метода, используемых для адресации (или нумерации) секторов накопителей. Первый из них называется CHS (Cylinder Head Sector). Это название образовано по трем соответствующим координатам, которые используются для адресации каждого сектора дисковода. Во втором методе, который носит название LBA (Logical Block Address), для адресации секторов накопителя используется только одно значение. В основе метода CHS лежит физическая структура накопителей (а также способ организации его внутренней работы).

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

При последовательном считывании данных с накопителя в режиме CHS процесс чтения начинается с цилиндра 0, головки 0 и сектора 1 (который является первым сектором на данном диске), после чего считываются все остальные секторы первой дорожки. Затем выбирается следующая головка и читаются все секторы, находящиеся на этой дорожке. Это продолжается до тех пор, пока не будут считаны данные со всех головок первого цилиндра. Затем выбирается следующий цилиндр, и процесс чтения продолжается в такой же последовательности.

При последовательном считывании данных с накопителя в режиме LBA процесс чтения начинается с сектора 0, после чего читается сектор 1, сектор 2 и т.д. В режиме CHS первым сектором жесткого диска является 0,0,1. В режиме LBA этот же сектор будет сектором 0.

В качестве примера представьте себе накопитель, содержащий один жесткий диск, две головки (используются обе стороны жесткого диска), две дорожки на каждом жестком диске (цилиндры) и два сектора на каждой дорожке. В этом случае можно сказать, что накопитель содержит два цилиндра (две дорожки на каждой стороне), две головки (по одной на сторону), а также два сектора на каждой дорожке. В общей сложности емкость накопителя равна восьми (2×2×2) секторам. Обратите внимание: нумерация цилиндров и головок начинается с числа 0, а нумерация физических секторов, находящихся на дорожке, — с числа 1. При использовании адресации CHS расположение первого сектора накопителя определяется выражением “цилиндр 0, головка 0, сектор 1 (0,0,1)”; адресом второго сектора является 0,0,2; третьего — 0,1,1; четвертого — 0,1,2 и т.д., пока мы не дойдем до последнего сектора, адрес которого 1,1,2.

Представьте теперь, что вы взяли восемь секторов и, не обращаясь непосредственно к физическим цилиндрам, головкам и секторам, пронумеровали их от 0 до 7. Таким образом, если необходимо обратиться к четвертому сектору накопителя, можно сослаться на него как на сектор 0,1,2 в режиме CHS или как на сектор 3 в режиме LBA. Соотношение между номерами секторов воображаемого восьмисекторного накопителя в режимах CHS и LBA приведено в табл. 1 .

Таблица 1 . Нумерация секторов в режимах CHS и LBA для воображаемого накопителя, содержащего два цилиндра, две головки и по два сектора на каждой дорожке (в общей сложности восемь секторов).

Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых ПК вся адресация BIOS и накопителей АТА была выполнена методом CHS.

Преобразования CHS/LBA и LBA/CHS

Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Существует довольно простая формула, с помощью которой можно преобразовывать параметры CHS в LBA:

LBA = (((C × HPC) + H) × SPT) + S – 1.

Реверсирование этой формулы позволяет выполнить обратное преобразование, т.е. преобразовать параметры LBA в адрес CHS:

C = int (LBA/SPT/HPC),

H = int ((LBA/SPT) mod HPC),

S = (LBA mod SPT) + 1.

В этих формулах использованы следующие выражения:

— LBA — logical block address;

— C — цилиндр (cylinder);

— H — головка (head);

— S — сектор (sector);

— HPC — количество головок в каждом цилиндре (общее количество головок);

— SPT — количество секторов на каждой дорожке;

— int X — целочисленная часть X;

— X mod Y — модуль (остаток) от X/Y.

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

Таблица 2 . Параметры CHS и соответствующая им нумерация секторов LBA для накопителя, содержащего 16 383 цилиндра, 16 головок и 63 сектора на каждой дорожке (общее количество секторов 16 514 064).

Программы BIOS ( когда объем HDD был очень скромным) использовали адресацию CHS, например:

INT 13 h , функция 02 h . Чтение сектора.

Читает один или группу секторов с физического (не логического!) диска в память. Для начального сектора указываются абсолютные координаты (цилиндр, сектор, головка). Секторы физического диска нумеруются на каждой дорожке от 1, цилиндры нумеруются от 0, головки нумеруются от 0. Сначала идут секторы 1. n цилиндра 0, головки (поверхности) 0, затем секторы 1. n цилиндра 0, головки (поверхности) 1, далее секторы 1. п цилиндра 1, головки 0 и т.д. Таким образом, на HDD сектор 1 цилиндра 0 головки 0 относится к главной загрузочной записи ( Master boot ).

AL=число читаемых секторов

00 h . 7 Fh — гибкий диск , 80 h . FFh — жесткий диск

АL=число переданных секторов

Но для работы с HDD- дисками большого объема возможности адресации CHS стали «тормозом» и не позволяли работать с полным объемом дисков. Поэтому д ля обеспечения поддержки новых возможностей HDD в набор функций Int 13h фирмой Phoenix Technologies были введены дополнительные функции (BIOS Extensions). Дополнительные функции имеют номера 41h — 49h и 4Eh. Порядок работы с этими функциями существенно отличается от принятого для стандартных функций прерывания Int 13h.:

— вся адресная информация передается через буфер в оперативной памяти, а не через регистры;

— соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);

— для определения дополнительных возможностей аппаратуры (параметров) используются флаги.

Пакет дискового адреса.

Фундаментальной структурой данных для дополнительных функций прерывания Int I3h является так называемый «Пакет дискового адреса» (Disk Address Packet). Получив пакет дискового адреса, прерывание Int 13h преобразует содержащиеся в нем данные в физические параметры, соответствующие используемому носителю информации. Формат пакета дискового адреса описан в табл. 3.

Таблица 3. Формат пакета дискового адреса.

Правила передачи параметров дополнительным функциям.

При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:

— в АН — номер вызываемой функции;

— в DL — номер диска;

— в DS: SI — адрес буфера, содержащего пакет дискового адреса.

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

Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.

После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, для дополнительных функций введено еще несколько кодов.

Прерывание Int 13h, функция 42h: расширенное чтение (рис. 1).

Функция осуществляет передачу секторов с заданной области диска в буфер памяти. Перед вызовом прерывания требуется записать в регистры следующие значения:

— в АН — значение 42h;

— в DL — номер дисковода;

— в DS: SI — адрес пакета дискового адреса.

После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).

Рис. 1. Пример программы «Чтение BOOT -сектора ( LBA = 3 F )».

Адресация данных в накопителях данных

Жесткий диск хранит информацию фиксированными порциями, которые называются секторами. Сектор является наименьшей порцией данных, имеющей уникальный адрес и расположение на магнитном диске. Обмен информацией с жестким диском предполагает указание адреса в качестве параметра команды. Используемая в жестких дисках линейная адресация получила название LBA . При получении команды жесткий диск транслирует адрес LBA в физический адрес сектора, т.е. номер цилиндра, головки и сектора ( CHS ).

До появления версии ATA/ATAPI-6 для адресации секторов использовалось 28-битное число, что ограничивало максимальную емкость жесткого диска до 128 Гб. В новых версиях стандарта появились команды, в которых значение LBA 48-битное, что расширило возможную максимальную емкость жесткого диска до 128 Пб для стандартного размера сектора (512 байт).

Адресация секторов

Жесткий диск, как и всякое другое блочное устройство, хранит информацию фиксированными порциями, которые называются блоками. Блок является наименьше к порцией данных, имеющей уникальный адрес на жестком диске. Для того чтобы прочесть или записать нужную информацию в нужное место, необходимо представить адрес блока в качестве параметра команды, выдаваемой контроллеру жесткого диска. Размер блока уже с давних пор является стандартным для всех жестких дисков — 512 байт. К сожалению, достаточно часто происходит путаница между такими понятиям -, как «сектор», «кластер» и «блок». Фактически между «блоком» и «сектором» разницы нет. Правда, одно понятие логическое, а второе — топологическое. «Кластер» — это несколько секторов, рассматриваемых операционной системой как одно целое.

Почему же отказались от простой работы с секторами? Переход к кластерам произошел потому, что размер таблицы размещения файлов был ограничен, а размер ^иска увеличивался. В случае файловой системы FAT16 для диска объемом 512 МБ кластер будет составлять 8 КБ, до 1 ГБ — 16 КБ, до 2 ГБ — 32 КБ и т. д. Для того чтобы однозначно адресовать блок данных, необходимо указать все три числа (номер цилиндра, номер сектора на дорожке, номер головки). Та’кой способ адресации диска был широко распространен и получил впоследствии обозначение аббревиатурой CHS ^cylinder, head, sector). Именно этот способ был первоначально реализован в BIOS, поэтому впоследствии возникли огранитения, связанные с ним. Дело в том, что BIOS определил разрядную сетку адресов на 63 сектора, 1024 цилиндра и 255 головок. Однако развитие жестких дисков в то время ограничилось использованием лишь 16 головок в связи со сложностью изготовления. Отсюда появилось первое ограничение на. максимально допустимую для адресации емкость жесткого диска: 1024x16x63x512 — 504 Мб.

Со временем производители стали делать HDD большего размера. Соответственно, число цилиндров на них превысило 1024, максимально допустимое число цилиндров (с точки зрения старых BIOS). Однако адресуемая часть диска продолжала равняться 504 Мб при условии, что обращение к диску белось средствами BIOS. Это ограничение со временем было снято введением так называемого механизма трансляции адрес лв.

Проблемы, возникшие с ограниченностью BIOS по части физической геометрии дисков, привели в конце концов к появлению нового способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске описываются одним параметром — линейным адресом блока. Адресация диска линейно получила аббревиатуру LBA (logical block addressing). Линейный адрес блока однозначно связан с его CHS-адресом: lba = (Цилиндр х ВсегоГоловок + Головка) х х Секторов + (Сектор-1).

Введение поддержки линейной адресации в контроллеры жестких дисков дало возможность BIOS заняться трансляцией адресов. Суть этого метода состоит в том, что если в приведенной выше формуле увеличить параметр ВсегоГоловок, то потребуется меньше цилиндров, чтобы адресовать то же самое количество блоков диска. Но зато потребуется больше головок. Однако головок-то как раз использовалось всего 16 из 255. Поэтому BIOS стали переводить избыточные цилиндры в головки, уменьшая число одних и увеличивая число других. Это позволило им использовать разрядную сетку головок целиком и отодвинуло границу адресуемого устройством BIOS дискового пространства до 8 ГБ.

Нельзя не сказать несколько слов и о Large Mode. Этот режим работы предназначен для работы жестких дисков объемом до 1 ГБ. В Large Mode количество логических головок увеличивается до 32, а количество логических цилиндров уменьшается вдвое. При этом обращения к логическим головкам 0.. F транслируются в четные физические цилиндры, а обращения к головкам 10.. IF — в нечетные. Винчестер, размеченный в режиме LBA, несовместим с режимом Large, и наоборот.

Дальнейшее увеличение адресуемых объемов диска с использованием прежних сервисов BIOS стало принципиально невозможным. Действительно, все параметры задействованы максимально (63 сектора, 1024 цилиндра и 255 головок). Тогда был разработан новый расширенный интерфейс BIOS, учитывающий возможность очень больших адресов блоков. Однако этот интерфейс уже не совместим с прежним, вследствие чего старые операционные системы, такие, как DOS, которые пользуются старыми интерфейсами BIOS, не смогли и не смогут переступить границы в 8 ГБ.

Практически все современные системы уже не пользуются BIOS, а используют собственные драйверы для работы с дисками. Поэтому данное ограничение на них не распространяется. Но следует понимать, что прежде, чем система сможет использовать собственный драйвер, она должна его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS. Это и вызывает ограничения на размещение многих систем за пределами 8 ГБ, они не могут оттуда загружаться, но могут читать и писать информацию (например, DOS, который работает с диском через BIOS).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *