stringtranslate.com

Байтовая адресация

Байтовая адресация в аппаратных архитектурах поддерживает доступ к отдельным байтам . Компьютеры с байтовой адресацией иногда называют байтовыми машинами , в отличие от архитектур со словесной адресацией , словесных машин , которые обращаются к данным по слову . [1] [2]

Фон

Базовой единицей цифрового хранения является бит , хранящий один 0 или 1. Многие распространенные архитектуры наборов инструкций могут адресовать более 8 бит данных за раз. Например, 32-разрядные процессоры x86 имеют 32-разрядные регистры общего назначения и могут обрабатывать 32-разрядные (4-байтовые) данные в одной инструкции. Однако данные в памяти могут иметь различную длину. Наборы инструкций, поддерживающие байтовую адресацию, поддерживают доступ к данным в единицах, которые уже длины слова. Восьмиразрядный процессор, такой как Intel 8008, адресует восемь бит, но поскольку это полная ширина аккумулятора и других регистров, это можно считать либо байт-адресуемым, либо пословно-адресуемым. 32-разрядные процессоры x86, которые адресуют память в 8-разрядных единицах, но имеют 32-разрядные регистры общего назначения и могут работать с 32-разрядными элементами с помощью одной инструкции, являются байт-адресуемыми.

Преимущество адресации слов заключается в том, что можно адресовать больше памяти тем же количеством бит. IBM 7094 имеет 15-битные адреса, поэтому может адресовать 32 768 слов по 36 бит. Машины часто строились с полным набором адресуемой памяти. Адресация 32 768 байт по 6 бит была бы гораздо менее полезной для научных и инженерных пользователей. Или рассмотрим 32-битные процессоры x86. Их 32-битные линейные адреса могут адресовать 4 миллиарда различных элементов. Используя адресацию слов, 32-битный процессор мог адресовать 4 гигаслова; или 16 гигабайт с использованием современного 8-битного байта. Если бы 386 и его последователи использовали адресацию слов, ученые, инженеры и геймеры могли бы запускать программы, которые были в 4 раза больше на 32-битных машинах. Однако обработка текста, рендеринг HTML и все другие текстовые приложения работали бы медленнее.

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

Чтобы проиллюстрировать, почему байтовая адресация полезна, рассмотрим IBM 7094 , который адресуется по словам и не имеет понятия байта. Он имеет 36-битные слова и хранит свои шестибитные коды символов по шесть в слове. Чтобы изменить 16-й символ в строке, программа должна определить, что это четвертый символ третьего слова в строке, извлечь третье слово, замаскировать старое значение четвертого символа из значения, хранящегося в регистре, побитово или в новом, а затем сохранить обратно измененное слово. По крайней мере шесть машинных инструкций. Обычно они отнесены к подпрограмме, поэтому каждое сохранение или извлечение одного символа влечет накладные расходы на вызов подпрограммы и возврат. С байтовой адресацией это можно сделать одной инструкцией: сохранить этот код символа по этому адресу байта. Текстовые программы проще писать, они меньше и работают быстрее.

Гибридные системы

Некоторые системы с адресацией по словам , такие как PDP-6/10 и GE-600 / Honeywell серии 6000, имеют специальные механизмы для эффективного доступа к байтам.

На PDP-6/10 специальные инструкции работали с указателем байта , который включал адрес слова, смещение бита и ширину бита. Инструкции LDB / DPB загружали или сохраняли один байт, инструкция IBP увеличивала указатель байта, а инструкции ILDB / IDPB увеличивали указатель байта, а затем загружали или сохраняли следующий байт. Эти инструкции могли работать с битовыми полями произвольной ширины. [3] : 2-85–2-89  Программы использовали эту гибкость: те, которым не нужны были строчные буквы, использовали ограниченный набор символов из 6-битных байтов для эффективности; большинство использовали 7-битный ASCII , упакованный по 5 в слово с одним неиспользуемым битом; а реализация на языке C использовала 9-битные байты, поскольку C требует, чтобы вся память была адресуемой побайтно.

На машинах GE/Honeywell специальные режимы косвенной адресации могли использоваться для большинства типов инструкций и работать с указателем байта, который мог работать как с 6-битными, так и с 9-битными байтами. [4]

Ни одна из этих машин изначально не имела прямой поддержки машины для произвольного доступа к байтам; настройка указателя байта для указания N байтов до или после байта, на который он в данный момент указывал, требовала последовательности из нескольких инструкций. Модель KL10 PDP-10 расширила инструкцию IBP , став инструкцией «настроить указатель байта», ADJBP , которая могла настраивать указатель байта на произвольное количество байтов. [3] : 2-89–2-91 

Смотрите также

Ссылки

  1. ^ "Wortmaschine" (на немецком языке). Архивировано из оригинала 2017-04-09 . Получено 2017-04-09 .
  2. ^ Хансен, HR (1986). Wirtschaftsinformatik (на немецком языке). Том. Я (5-е изд.). Штутгарт, Германия: Густав Фишер. п. 125.
  3. ^ ab DECsystem-10/DECSYSTEM-20 Processor Reference Manual (PDF) . Digital Equipment Corporation . Июнь 1982 г. AD-H391A-T1.
  4. ^ Справочное руководство по программированию GE-625/635 (PDF) . General Electric . Июль 1969. С. 169, 171–172.