Параграф (единица измерения)
Пара́граф (англ. paragraph) — единица измерения объёма данных в информатике. Численно параграф равен 16 байтам.
Использование
Чаще всего данная единица используется не для собственно измерения объёма блока данных, а для записи адреса/смещения блока и для обозначения выравнивания.
Если адрес какой-либо структуры кратен 16, он может быть выражен в параграфах целым числом. Говорят, что структура должна быть выравнена по границе параграфа, если по какой-то причине требуется, чтобы адрес/смещение начала структуры был кратен 16. Обычно за систему отсчёта берётся начало адресного пространства, но в некоторых случаях может быть взят произвольный адрес.
Поскольку размер параграфа, записанный в шестнадцатеричной системе счисления, равен 0x10, адрес, кратный параграфу, является круглым числом. Адрес[1] любой сущности, выравненной по границе параграфа, будет заканчиваться[2] как минимум одним нулём (например 0xFC94B8C0).
Применение
- В Hex-редакторах: как правило используется 16 колонок, поэтому одна строка в редакторе — один параграф. Расстояние (смещение) между любыми двумя байтами, стоящими в j-той колонке строк (i) и (i+n) равно n параграфам.
- В архитектуре x86 при функционировании в реальном режиме: расстояние между началами двух соседних сегментов равно одному параграфу. Поэтому в этом режиме значение сегментного регистра, по сути, является индексом параграфа в физической памяти. При обращении по реальному адресу
SSSS:OOOO
берётся параграф номер SSSS, от него отсчитывается OOOO байтов, и выполняется обращение по полученному физическому адресу. - В микропроцессоре x86: используется кеш инструкций, оперирующий блоками размером 16 байт. Поэтому часто для увеличения производительности практикуется выравнивание начал процедур по границе параграфа. Помимо процедур, выравниваются также блоки кода, на которые (наравне с процедурами) часто совершаются условные и безусловные переходы: циклы, ветвления и т.п. Это неизбежно приводит к увеличению размера кода, порою значительному, поэтому большинство компиляторов имеют специальную опцию, отключающую такие выравнивания, либо общую опцию «Оптимизировать размер кода», в рамках которой не выполняется выравнивание блоков кода по границе параграфа.
- В некоторых ассемблерах используется ключевое слово
PARA
, устанавливающее выравнивание для описываемого блока данных.
Употребление
Поскольку единица сама по себе используется для акцентирования внимания на кратность, с этой единицей никогда не используются приставки кратности.
См. также
Примечания
- Записанный в Hex-представлении как общепринятом для записи адресов.
- Только в случае, если в качестве точки отсчёта выбрано начало адресного пространства.