Адрес памяти - Memory address

В компьютере с использованием виртуальная память доступ к ячейке, соответствующей адресу памяти, может включать много уровней.

В вычислениях адрес памяти - это ссылка на конкретную ячейку памяти, используемую на разных уровнях программным и аппаратным обеспечением. Адреса памяти представляют собой последовательности цифр фиксированной длины, которые обычно отображаются и обрабатываются как целые числа без знака. Такая числовая семантика основана на характеристиках ЦП (таких как указатель команд и регистры инкрементного адреса), а также на использовании памяти, например массива, поддерживаемого различными языками программирования.

Типы

Физические адреса

А цифровой компьютер с основная память состоит из многих места в памяти. Каждая ячейка памяти имеет Физический адрес который является кодом. ЦП (или другое устройство) может использовать код для доступа к соответствующей ячейке памяти. Обычно только программное обеспечение, т.е. BIOS, операционные системы и некоторые специализированные служебные программы (например., тестеры памяти ) адрес физической памяти с помощью машинного кода операнды или же регистры процессора, инструктирующий ЦП направлять аппаратное устройство, называемое контроллер памяти, чтобы использовать шина памяти или же системная шина, или отдельно контроль, адрес и шины данных, для выполнения команд программы. Контроллеры памяти ' автобус состоит из ряда параллельно линии, каждая из которых представлена двоичный символ (кусочек). Ширина шины и, следовательно, количество адресуемых запоминающих устройств и количество битов в каждой единице различаются между компьютерами.

Логические адреса

А компьютерная программа использует адреса памяти для выполнения Машинный код, а также для хранения и извлечения данные. В ранних компьютерах логические и физические адреса совпадали, но с момента появления виртуальная память наиболее прикладные программы не знаете физических адресов. Скорее они обращаются логические адреса, или же виртуальные адреса, используя компьютер блок управления памятью и Операционная система отображение памяти; видеть ниже.

Единица разрешения адреса

Большинство современных компьютеров с байтовой адресацией. Каждый адрес идентифицирует один байт (восемь бит ) хранения. Данные размером более одного байта могут храниться в последовательности последовательных адресов. Существуют адресный по слову компьютеры, у которых минимальная адресуемая единица хранения - это как раз процессор слово. Например, Данные General Nova миникомпьютер, а Техасские инструменты TMS9900 и Компания National Semiconductor IMP-16 микрокомпьютеры используется 16 бит слова, и было много 36-битный мэйнфреймы (например., PDP-10 ), который использовал 18-битный слово адресация, нет байтовая адресация, что дает адресное пространство 218 36-битные слова, примерно 1 мегабайт памяти. Эффективность адресации памяти зависит от разрядности шины, используемой для адресов - чем больше используется бит, тем больше адресов доступно компьютеру. Например, машина с 8-битной адресацией и 20-битной адресная шина (например. Intel 8086 ) может адресовать 220 (1 048 576) ячеек памяти, или один МиБ памяти, а 32-битная шина (например, Intel 80386 ) адреса 232 (4 294 967 296) мест, или 4 ГиБ адресное пространство. Напротив, машина с 36-битной адресацией по словам и 18-битной адресной шиной адреса только 218 (262144) 36-битные ячейки (9 437 184 бит), что эквивалентно 1179 648 8-битным байтам, или 1152 КБ, или 1,125 МиБ - немного больше, чем у 8086.

Некоторые старые компьютеры (десятичные компьютеры ), мы десятичный цифра -адресный. Например, каждый адрес в IBM 1620 с магнитная память идентифицировал один шестибитный двоично-десятичный цифра, состоящая из бит четности, бит флага и четыре числовых бита. В 1620 использовались 5-значные десятичные адреса, поэтому теоретически максимально возможным адресом было 99 999. На практике ЦП поддерживал 20 000 ячеек памяти, и можно было добавить до двух дополнительных модулей внешней памяти, каждый из которых поддерживает 20 000 адресов, всего 60 000 (00000–59999).

Размер слова по сравнению с размером адреса

Слово размер - характеристика, данная компьютерная архитектура. Он обозначает количество бит, которое ЦП может обработать за один раз. Современные процессоры, включая встроенные системы, обычно имеют размер слова 8, 16, 24, 32 или 64 бита; большинство современных компьютеров общего назначения используют 32 или 64 бита. Исторически использовалось много разных размеров, включая 8, 9, 10, 12, 18, 24, 36, 39, 40, 48 и 60 бит.

Очень часто, говоря о размер слова современного компьютера также описывается размер адресного пространства на этом компьютере. Например, компьютер называется "32-битный "также обычно допускает 32-разрядные адреса памяти; 32-разрядный компьютер с байтовой адресацией может адресовать 232 = 4294967296 байт памяти, или 4 гибибайты (ГиБ). Это позволяет эффективно хранить один адрес памяти в одном слове.

Однако это не всегда так. Компьютеры могут иметь адреса памяти больше или меньше, чем их размер слова. Например, многие 8 бит процессоры, такие как Технология MOS 6502, поддерживаемые 16-битные адреса - в противном случае они были бы ограничены всего 256 байты адресации памяти. 16-битный Intel 8088 и Intel 8086 поддерживается 20-битная адресация через сегментация, позволяя им получить доступ к 1 МиБ а не 64 KiB памяти. Все Intel Pentium процессоров с Pentium Pro включают Расширения физических адресов (PAE), которые поддерживают преобразование 36-битных физических адресов в 32-битные виртуальные адреса. Многие ранние процессоры поддерживали 2 адреса на слово , Такие как 36-битный процессоры.

Теоретически современные байтовые 64-битный компьютеры могут адресовать 264 байтов (16 exbibytes ), но на практике объем памяти ограничен ЦП, контроллер памяти, или печатная плата дизайн (например, количество разъемов физической памяти или количество припаянной памяти).

Содержимое каждой ячейки памяти

Каждая ячейка памяти в компьютер с хранимой программой держит двоичное число или же десятичное число какой-то. Его интерпретация, как данные некоторых тип данных или в качестве инструкции, а использование определяется инструкции которые извлекают и манипулируют им.

Некоторые ранние программисты объединили инструкции и данные в словах, чтобы сэкономить память, когда это было дорого: Манчестер Марк 1 в 40-битных словах было место для хранения маленьких бит данных - его процессор игнорировал небольшой участок в середине слова - и это часто использовалось как дополнительное хранилище данных.[нужна цитата ] Самовоспроизводящийся такие программы как вирусы относиться к себе иногда как к данным, а иногда как к инструкциям. Самомодифицирующийся код обычно устарел в настоящее время, поскольку это делает тестирование и обслуживание непропорционально трудными для экономии нескольких байтов, а также может давать неверные результаты из-за предположений компилятора или процессора о машине государственный, но все же иногда используется намеренно и с большой осторожностью.

Адресное пространство в прикладном программировании

В современном многозадачность окружающая среда, заявление процесс обычно имеет в своем адресном пространстве (или пробелах) блоки памяти следующих типов:

Некоторые части адресного пространства могут вообще не отображаться.

Схемы адресации

Компьютерная программа может получить доступ к заданному адресу явно - в низкоуровневом программировании это обычно называется абсолютный адрес, а иногда и конкретный адрес, и известен как указатель тип данных в языках более высокого уровня. Но программа также может использовать относительный адрес который определяет местоположение относительно другого места ( базовый адрес ). Есть еще много косвенный режимы адресации.

Отображение логических адресов в физическую и виртуальную память также добавляет несколько уровней косвенности; Смотри ниже.

Модели памяти

Многие программисты предпочитают адресовать память так, чтобы не было различия между пространством кода и пространством данных (см. над ), а также из физической и виртуальной памяти (см. ниже ) - другими словами, численно идентичные указатели относятся к одному и тому же байту ОЗУ.

Однако многие ранние компьютеры не поддерживали такую плоская модель памяти - особенно, Гарвардская архитектура машины заставляют хранилище программ быть полностью отделенным от хранилища данных. DSP (такой как Motorola 56000 ) имеют три отдельные области хранения - программную, коэффициентную и данные. Некоторые часто используемые инструкции извлекаются из всех трех областей одновременно - меньшее количество областей хранения (даже если бы было одинаковое общее количество байтов памяти) заставило бы эти инструкции работать медленнее.

Модели памяти в архитектуре x86

Ранние компьютеры x86 использовали сегментированная модель памяти адреса, основанные на комбинации двух чисел: сегмент памяти, и компенсировать в этом сегменте.

Некоторые сегменты неявно рассматриваются как сегменты кода, посвященный инструкции, куча сегменты, или нормальный данные сегменты. Хотя способы использования разные, сегменты не имеют разных защита памяти отражая это. плоская модель памяти все сегменты (регистры сегментов) обычно устанавливаются в ноль, и только смещения являются переменными.

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

Рекомендации