Jump to content

Адрес памяти

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

Некоторые старые компьютеры ( десятичные компьютеры ) десятичную адресацию имели . Например, каждый адрес в 1620 IBM памяти на магнитном сердечнике идентифицировал одну шестибитовую десятичную цифру в двоичном коде , состоящую из бита четности , бита флага и четырех числовых битов. В 1620 использовались пятизначные десятичные адреса, поэтому теоретически максимально возможный адрес был 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-битный компьютер с байтовой адресацией может адресовать 2 32 = 4 294 967 296 байт памяти или 4 гибибайта (ГиБ). Это позволяет эффективно хранить один адрес памяти в одном слове.

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

Некоторые системы имеют «разделенную» архитектуру памяти , где машинный код, константы и данные находятся в разных местах и ​​могут иметь разные размеры адресов. Например, микроконтроллеры PIC18 имеют 21-битный программный счетчик для адресации машинного кода и констант во флэш-памяти, а также 12-битные адресные регистры для адресации данных в SRAM.

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

[ редактировать ]

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

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

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

[ редактировать ]

Многие программисты предпочитают обращаться к памяти так, чтобы не было различия между пространством кода и пространством данных (см. выше ), а также между физической и виртуальной памятью (см. выше ) — другими словами, числовые одинаковые указатели относятся к точно одному и тому же байту БАРАН.

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

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

[ редактировать ]

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

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

Модели памяти в мультипроцессорах IBM S/360 и его преемниках

[ редактировать ]

В версиях 360/65 и 360/67 IBM представила концепцию, известную как префикс. [ 2 ] Префиксирование — это уровень трансляции адресов, который применяется к адресам в реальном режиме и к адресам, созданным в результате динамической трансляции адресов, с использованием уникального префикса, назначенного каждому ЦП. В 360/65, 360/67 и всех последующих версиях до z/Architecture он логически заменяет блок памяти размером 4096 байт на другой блок, назначенный ЦП. На z/Architecture, [ 3 ] префикс работает с блоками по 8196 байт. IBM классифицирует адреса в этих системах как: [ 4 ]

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

См. также

[ редактировать ]
  1. ^ Абрахамсон, Карл Р. (20 августа 2022 г.). «5.10.1. Память и адреса памяти» . Университет Восточной Каролины . Проверено 3 февраля 2023 г.
  2. ^ «Мультисистемная работа» (PDF) . Принципы работы IBM System/360 (PDF) . Справочная библиотека по системам (Восьмое изд.). Сентябрь 1968 г. с. 18. А22-6821-7 . Проверено 21 июля 2024 г. Процедура перемещения применяется к первым 4096 байтам памяти. Эта область содержит все назначения постоянного хранения и, как правило, имеет особое значение для программ контроля. Перемещение осуществляется путем вставки 12-битного префикса в каждый адрес, у которого старшие 12 бит установлены в ноль и, следовательно, относятся к местоположению 0–4095.
  3. ^ «Префиксы в архитектурном режиме z/Architecture» (PDF) . z/Принципы работы архитектуры (PDF) (Четырнадцатое изд.). Май 2022. с. 3-21–3-23. SA22-7832-13 . Проверено 21 июля 2024 г. Префиксирование обеспечивает возможность назначить блок реальных адресов, содержащий назначенные места хранения, другому блоку в абсолютной памяти для каждого ЦП, что позволяет нескольким ЦП, совместно использующим основную память, работать одновременно с минимальным вмешательством, особенно при обработке прерываний. .
  4. ^ «Типы адресов» (PDF) . z/Принципы работы архитектуры (PDF) (Четырнадцатое изд.). Май 2022 г. стр. 3-4–3-5. SA22-7832-13 . Проверено 21 июля 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 42fb1e097c687fb5b6cac0ead07f5c66__1721657580
URL1:https://arc.ask3.ru/arc/aa/42/66/42fb1e097c687fb5b6cac0ead07f5c66.html
Заголовок, (Title) документа по адресу, URL1:
Memory address - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)