5 сколько оперативной памяти у компьютера, если адресная шина 4 байта

Обновлено: 21.11.2024

Проблема 2

  1. Сколько страниц находится в виртуальном адресном пространстве?
  2. Каков максимальный размер адресуемой физической памяти в этой системе?
  3. Если средний размер процесса составляет 8 ГБ, вы бы использовали одноуровневую, двухуровневую или трехуровневую таблицу страниц? Почему?
  4. Вычислите средний размер таблицы страниц в ответе на вопрос 3 выше.

    36-битный адрес может адресовать 2 ^ 36 байтов в машине с байтовой адресацией. Поскольку размер страницы составляет 8 КБ (2^13), количество адресуемых страниц равно 2^36 / >2^13 = 2^23

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

Пейджинг 1 уровня
Поскольку у нас есть 2^23 страницы в каждом виртуальном адресном пространстве, и мы используем 4 байта на запись в таблице страниц, размер таблицы страниц будет 2^23 * 2^2 = 2 ^ 25. Это 1/256 собственного пространства памяти процесса, так что это довольно дорого. (32 МБ)

Пейджинг 2 уровня
Адрес будет разделен на 12 | 11 | 13, так как мы хотим, чтобы страницы таблицы страниц умещались на одной странице, и мы также хотим разделить биты примерно поровну.

Поскольку размер процесса составляет 8 ГБ = 2^33 Б, я предполагаю, что это означает, что общий размер всех отдельных страниц, к которым обращается процесс, составляет 2^33 Б. Следовательно, этот процесс обращается к 2^33 / 2^13 = 2^20 страниц. Нижний уровень таблицы страниц содержит 2^20 ссылок. Мы знаем, что размер каждого фрагмента нижнего уровня таблицы страниц составляет 2 ^ 11 записей. Таким образом, нам нужно 2^20 / 2^11 = 2^9 фрагментов нижнего уровня.

Тогда общий размер таблицы страниц равен:

//размер внешней таблицы страниц //общий размер внутренних страниц< /td>
1 * 2^12 * 4 + 2^9 * 2^11 * 4 = 2^20 * ( 2^-6 + 4) ~4 МБ

3 уровня пейджинга
Для 3 уровня пейджинга мы можем разделить адрес следующим образом:
8 | 8 | 7 | 13

Опять же, используя те же рассуждения, что и выше, нам нужно 2 ^ 20/2 ^ 7 = 2 ^ 13 фрагментов таблицы страниц уровня 3. Каждый фрагмент таблицы страниц уровня 2 ссылается на 2^8 фрагментов таблицы страниц уровня 3. Итак, нам нужно 2^13/2^8 = 2^5 таблиц уровня 2. И, конечно же, одна таблица уровня 1.

Общий размер таблицы страниц равен:

//размер внешней таблицы страниц //общий размер таблиц уровня 2 //общий размер самых внутренних таблиц
1 * 2^8 * 4 2^5 * 2^8 *4 2^13 * 2^7 * 4 ~4MB
Как легко заметить, двухуровневая и трехуровневая подкачка требуют гораздо меньше места, чем подкачка уровня 1. схема. И поскольку наше адресное пространство недостаточно велико, 3-уровневая подкачка работает не лучше, чем 2-уровневая подкачка. Из-за стоимости доступа к памяти гораздо логичнее выбрать двухуровневую схему подкачки для этого процесса.

Проблема 3

  1. Каков размер страницы в такой системе? Объясните свой ответ (число без обоснования не будет засчитано).

    4К. Последние 12 бит виртуального адреса представляют собой смещение на странице, которое варьируется от 0 до 4095. Таким образом, размер страницы равен 4096, то есть 4 КБ.

Поскольку физические адреса имеют длину 44 бита, а размер страницы — 4 КБ, номер кадра страницы занимает 32 бита. Принимая во внимание 4 защитных бита, каждая запись таблицы страниц уровня 3 занимает (32+4) = 36 бит. Округление для выравнивания записей по байтам (словам) приведет к тому, что каждая запись будет потреблять 40 (64) бит или 5 (8) байтов. Для таблицы из 256 записей нам потребуется 1280 (2048) байт.

Таблица страниц верхнего уровня не должна предполагать, что таблицы страниц 2-го уровня выровнены по страницам. Итак, мы храним там полные физические адреса. К счастью, нам не нужны управляющие биты. Таким образом, каждая запись занимает не менее 44 бит (6 байтов для выравнивания по байтам, 8 байтов для выравнивания по словам). Таким образом, каждая таблица страниц верхнего уровня имеет размер 256*6 = 1536 байт (256 * 8 = 2048 байт).

Попытка воспользоваться выравниванием по 256 элементам для уменьшения размера элемента, вероятно, не стоит усилий. Сделать это было бы сложно; вам нужно будет написать новый распределитель памяти, который гарантирует такое выравнивание. Кроме того, мы не можем полностью уместить таблицу в выровненную область размером 1024 байта (44-10 = 34 бита на адрес, что потребовало бы более 4 байтов на запись), и округление размера до следующей степени двойки не спасло бы использовать любой размер, а не просто хранить указатели и использовать обычный распределитель.

Аналогично каждая запись в таблице страниц 2-го уровня представляет собой 44-битный физический указатель, 6 байтов (8 байтов) при выравнивании по байтам (словам). Таким образом, таблица с 16 элементами занимает 96 (128) байт. Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 96 (128) байт для одной таблицы страниц второго уровня + 1280 (2048) байт для одной таблицы страниц третьего уровня = 2912 (4224) байт. Поскольку процесс может уместиться ровно на 16 страницах, внутренняя фрагментация не тратит память впустую.

Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 3 * 96 (3 * 128) байт для 3 таблиц страниц второго уровня + 3 * 1280 (3 * 2048) для 3 таблиц третьего уровня. таблица страниц = 5664 (8576) байт.

Проблема 4

В соответствии с философией проектирования процессоров RISC, заключающейся в перемещении аппаратной функциональности в программное обеспечение, вы видите предложение о том, чтобы разработчики процессоров удаляли MMU (блок управления памятью) из аппаратного обеспечения. Чтобы заменить MMU, компиляторы генерируют так называемый позиционно-независимый код (PIC). PIC может быть загружен и запущен по любому адресу без выполнения какого-либо перемещения. Если предположить, что код PIC работает так же быстро, как и код без PIC, в чем будет недостаток этой схемы по сравнению со страничным MMU, используемым в современных микропроцессорах?

Решение:
Нужно решение.

Проблема 5

Опишите преимущества использования MMU, включающего сегментацию и пейджинг, по сравнению с теми, которые используют только пейджинг или только сегментацию. Представьте свой ответ в виде отдельных списков преимуществ перед каждой из чистых схем.

Решение:
Нужно решение.

Проблема 6

Рассмотрите следующий фрагмент кода, который умножает две матрицы: Предположим, что двоичный файл для выполнения этой функции помещается на одной странице, и стек также помещается на одной странице. Предположим далее, что для хранения целого числа требуется 4 байта. Вычислите количество промахов TLB, если размер страницы равен 4096, а TLB имеет 8 записей с замещающей политикой, состоящей из LRU.

Решение:
1024*(2+1024*1024) = 1073743872
Двоичный файл и стек умещаются на одной странице, поэтому каждый занимает одну запись в TLB. Пока функция работает, она постоянно обращается к двоичной странице и странице стека. Таким образом, две записи TLB для этих двух страниц будут все время находиться в TLB, а данные могут занимать только оставшиеся 6 записей TLB.

Мы предполагаем, что две записи уже находятся в TLB, когда функция начинает выполняться. Затем нам нужно рассмотреть только эти страницы данных.

Поскольку для хранения целого числа требуется 4 байта, а размер страницы составляет 4096 байт, для каждого массива требуется 1024 страницы. Предположим, что каждая строка массива хранится на одной странице. Тогда эти страницы можно представить в виде a[0..1023], b[0..1023], c[0..1023]: Страница a[0] содержит элементы a[0][0..1023], страница a[1] содержит элементы a[1][0..1023] и т. д.

Для фиксированного значения i, скажем, 0, функция выполняет цикл по j и k, у нас есть следующая ссылочная строка:

Для ссылочной строки (всего 1024 строки) a[0], c[0] приведут к двум промахам TLB. Поскольку доступ к a[0] и b[0] будет осуществляться через каждые четыре обращения к памяти, эти две страницы не будут заменены алгоритмом LRU. Для каждой страницы в b[0..1023] каждый раз при доступе к ней будет происходить один промах TLB. Таким образом, количество промахов TLB для второго внутреннего цикла равно
2+1024*1024 = 1048578.

Память (RAM) состоит из битов, групп по 8, которые образуют байты, каждый из которых может быть адресован, и, следовательно, память с байтовой адресацией.

Адресная шина хранит расположение байта памяти.

Если адресная шина имеет размер 32 бита, это означает, что она может содержать до 2 32 чисел и, следовательно, может ссылаться на до 2 32 байтов памяти = 4 ГБ памяти, и любая память, превышающая эту, бесполезна.

Шина данных используется для отправки значения для записи/считывания из памяти. Если у меня есть шина данных размером 32 бита, это означает, что за один раз в память может быть записано/считано максимум 4 байта. Я не нахожу связи между этим размером и максимально возможным объемом памяти.

Но я прочитал здесь, что:

Это говорит о том, что размер шины данных дает ОС имя, 8-битное, 16-битное и так далее. Что не так с моим пониманием?

"Что не так с моим пониманием?" - Вы пытаетесь сделать так, чтобы одно определение соответствовало разным вещам. Дескриптор битового размера использовался в разное время для разных целей.

Означает то, что говорит производитель. Как правило, это будет что-то похожее на размер регистра, но есть много способов подделать его.

4 ответа 4

В простой схеме размер шины данных равен размеру регистров процессора. Как правило, это верно для первого поколения большинства конструкций, поэтому первые 16-разрядные ЦП имели 16-разрядные шины, 32-разрядные ЦП имели 32-разрядные шины данных и т. д.

Однако именно размер целочисленных регистров процессора определяет тип ОС (64 против 32), а не шина данных. Шина данных может отличаться от целочисленных регистров, но автор вашей цитаты связывает их вместе, потому что исторически они часто были одинаковыми.

Некоторые примеры из реальной жизни, где ширина шины данных и целочисленного регистра различаются:

Исходный процессор Pentium 1992 года имеет 64-разрядную шину данных, но имеет 32-разрядную конструкцию.Большая шина данных позволяет ЦП передавать больше данных в и из кэшей, но по-прежнему имеет доступ только к 32-разрядным внутренним данным с помощью своих регистров ЦП.

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

Самое лучшее понять, что разрядность ЦП полностью определяется архитектурой и в основном только с точки зрения программного обеспечения. Это больше не имеет ничего общего с физическим дизайном.

Джейсон Фитцпатрик

Джейсон Фитцпатрик
Редактор по особым поручениям

Джейсон Фитцпатрик — главный редактор LifeSavvy, дочернего сайта How-To Geek, посвященного лайфхакам, советам и рекомендациям. Он имеет более чем десятилетний опыт публикации и является автором тысяч статей для Review Geek, How-To Geek и Lifehacker. Джейсон работал редактором Weekend Lifehacker до того, как присоединился к How-To Geek. Подробнее.

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

Сегодняшняя сессия вопросов и ответов проводится благодаря SuperUser — подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.

Вопрос

Читатель SuperUser Йохан Смохан пытается понять, как тип процессора и объем памяти работают вместе, чтобы получить общее количество адресов. Он пишет:

Сколько адресов памяти мы можем получить с 32-битным процессором и 1 ГБ оперативной памяти и сколько с 64-битным процессором?

Я думаю, что это примерно так:

1 ГБ ОЗУ разделить на 32 бита или 4 бита (?), чтобы получить количество адресов памяти?

Я читал в Википедии, что 1 адрес памяти имеет ширину 32 бита или 4 октета (1 октет = 8 бит), по сравнению с 64-битным процессором, где 1 адрес памяти или 1 целое число имеет ширину 64 бита или 8 октетов. Но не знаю, правильно ли я понял.

Это те вопросы, которые могут не давать любознательному компьютерщику спать по ночам. Сколько адресов доступно в каждой из гипотетических систем Йохана?

Ответ

Автор SuperUser Гроностай предлагает некоторое представление о том, как разделяется и используется ОЗУ:

  • Размер памяти в байтах
  • Наибольшее целое число без знака, которое можно сохранить в машинном слове ЦП
  • Чтобы получить доступ к первому байту, необходимо пропустить 0 байтов, поэтому адрес первого байта равен 0.
  • Для доступа ко второму байту необходимо пропустить 1 байт, поэтому его адрес равен 1.
  • (и так далее...)
  • Чтобы получить доступ к последнему байту, процессор пропускает 1 07374 1823 байта, поэтому его адрес равен 1 073741 823.
  • Для 1 бита наибольшее значение равно 1,
  • 2 бита – 3,
  • 3 бита – 7,
  • 4 бита – 15
  • Номер страницы, на которой напечатано это слово.
  • Какое слово на этой странице вам нужно.
  • Сегмент 0, смещение 3
  • Сегмент 1, смещение 2
  • Сегмент 2, смещение 1.
  • Сегмент 3, смещение 0

Есть что добавить к объяснению? Отключите звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь.

  • › Почему прозрачные чехлы для телефонов желтеют?
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Как установить Google Play Маркет в Windows 11
  • › Как восстановить метки панели задач в Windows 11
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
  • › Что означает XD и как вы его используете?

Архитектура фон Неймана служит основой большинства современных компьютеров. В этом разделе мы кратко охарактеризуем основные компоненты архитектуры.

Архитектура фон Неймана (изображенная на рис. 1) состоит из пяти основных компонентов:

Процессор выполняет инструкции программы.

Блок управления управляет выполнением программных инструкций на процессорном блоке. Вместе блоки обработки и управления составляют ЦП.

В блоке памяти хранятся программные данные и инструкции.

Устройства ввода загружают программные данные и инструкции на компьютер и инициируют выполнение программы.

Устройства вывода сохраняют или получают результаты программы.

Шины соединяют блоки и используются блоками для отправки управляющей информации и данных друг другу. Шина — это канал связи, который передает двоичные значения между конечными точками связи (отправителями и получателями значений). Например, шина данных, которая соединяет блок памяти и ЦП, может быть реализована как 32 параллельных провода, которые вместе передают 4-байтовое значение, по 1 биту, передаваемому по каждому проводу. Как правило, архитектуры имеют отдельные шины для отправки данных, адресов памяти и управления между устройствами. Блоки используют шину управления для отправки управляющих сигналов, которые запрашивают или уведомляют другие блоки о действиях, адресную шину для отправки адреса памяти запроса на чтение или запись в блок памяти и шину данных для передачи данных между блоками.

Рисунок 1. Архитектура фон Неймана состоит из блоков обработки, управления, памяти, ввода и вывода. Блоки управления и обработки составляют ЦП, который содержит АЛУ, регистры ЦП общего назначения и некоторые регистры специального назначения (ИК и ПК). Блоки соединены шинами, используемыми для передачи данных и связи между блоками.

5.2.1. ЦП

Блок управления и процессор вместе составляют ЦП, который является частью компьютера, выполняющей программные инструкции для программных данных.

5.2.2. Блок обработки

Обрабатывающий блок машины фон Неймана состоит из двух частей. Первый — это арифметико-логическое устройство (ALU), которое выполняет математические операции, такие как сложение, вычитание и логическое или, и это лишь некоторые из них. Современные АЛУ обычно выполняют большой набор арифметических операций. Вторая часть блока обработки представляет собой набор регистров. Регистр — это небольшая, быстрая единица хранения, используемая для хранения данных программы и инструкций, выполняемых АЛУ. Важно отметить, что в архитектуре фон Неймана нет различия между инструкциями и данными. Во всех смыслах инструкции являются данными. Таким образом, каждый регистр может хранить одно слово данных.

5.2.3. Блок управления

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

5.2.4. Блок памяти

Внутренняя память — ключевое новшество архитектуры фон Неймана. Он обеспечивает хранение программных данных, близкое к процессорному блоку, что значительно сокращает время на выполнение вычислений. Блок памяти хранит как программные данные, так и программные инструкции. Хранение программных инструкций является ключевой частью модели хранимой программы в архитектуре фон Неймана.

Размер памяти зависит от системы. Однако ISA системы ограничивает диапазон адресов, которые она может выражать. В современных системах наименьшая адресуемая единица памяти составляет один байт (8 бит), и, таким образом, каждый адрес соответствует уникальной ячейке памяти для одного байта памяти. В результате 32-разрядные архитектуры обычно поддерживают максимальный размер адресного пространства 2 32 , что соответствует 4 гигабайтам (ГиБ) адресуемой памяти.

Термин память иногда относится ко всей иерархии хранилища в системе. Он может включать регистры в процессоре, а также дополнительные устройства хранения, такие как жесткие диски (HDD) или твердотельные накопители (SSD). В главе «Хранилище и иерархия памяти» мы подробно обсудим иерархию памяти. На данный момент мы используем термин «память» взаимозаменяемо с внутренней оперативной памятью (ОЗУ) — памятью, к которой может обращаться центральный процессор. Хранилище RAM является произвольным доступом, потому что все места хранения RAM (адреса) доступны напрямую. Полезно представлять ОЗУ как линейный массив адресов, где каждый адрес соответствует одному байту памяти.

Размер слова, определяемый ISA, – это количество битов стандартного размера данных, которые процессор обрабатывает как единое целое. Стандартный размер слова менялся с годами. Для EDVAC был предложен размер слова 30 бит. В 1950-х годах 36-битные размеры слов были обычным явлением. С изобретением IBM 360 в 1960-х годах размеры слов стали более или менее стандартизированными и начали увеличиваться с 16 до 32 бит, а затем и до сегодняшних 64 бит.Если изучить архитектуру Intel более подробно, то можно заметить остатки некоторых из этих старых решений, поскольку 32-разрядная и 64-разрядная архитектуры были добавлены как расширения исходной 16-разрядной архитектуры.

5.2.5. Блоки ввода и вывода (I/O)

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

Устройство ввода состоит из набора устройств, которые позволяют пользователю или программе получать данные из внешнего мира в компьютер. Наиболее распространенными формами устройств ввода сегодня являются клавиатура и мышь. Другие примеры – камеры и микрофоны.

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

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

Твердотельные и жесткие диски – еще один пример устройств, которые одновременно выполняют функции ввода и вывода. Эти устройства хранения действуют как устройства ввода, когда на них хранятся исполняемые файлы программ, которые операционная система загружает в память компьютера для запуска, и действуют как устройства вывода, когда на них хранятся файлы, в которые записываются результаты программы.

5.2.6. Машина фон Неймана в действии: выполнение программы

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

Блок управления выбирает следующую инструкцию из памяти. В блоке управления есть специальный регистр, программный счетчик (ПК), который содержит адрес следующей команды для выборки. Он помещает этот адрес на адресную шину и помещает команду чтения на шину управления в блок памяти. Затем блок памяти считывает байты, хранящиеся по указанному адресу, и отправляет их в блок управления по шине данных. Регистр инструкций (IR) хранит байты команды, полученной из блока памяти. Блок управления также увеличивает значение ПК, чтобы сохранить адрес новой следующей инструкции для выборки.

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

Процессор выполняет инструкцию. ALU выполняет операцию инструкции над операндами данных инструкции.

Блок управления сохраняет результат в памяти. Результат выполнения процессором инструкции сохраняется в памяти. Блок управления записывает результат в память, помещая значение результата на шину данных, помещая адрес места хранения на адресную шину и помещая записать команду на шину управления. При получении блок памяти записывает значение в память по указанному адресу.

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

На рисунках 2 и 3 показаны четыре этапа выполнения инструкции архитектурой фон Неймана для примера инструкции сложения, операнды которой хранятся в регистрах ЦП. На этапе выборки блок управления считывает инструкцию по адресу памяти, хранящемуся в ПК (1234). Он посылает адрес по адресной шине и команду READ по шине управления. Блок памяти получает запрос, считывает значение по адресу 1234 и отправляет его в блок управления по шине данных. Блок управления помещает байты инструкций в регистр IR и обновляет ПК адресом следующей инструкции (в данном примере 1238).На этапе декодирования блок управления передает биты из инструкции, которые определяют, какую операцию выполнять, в ALU процессора, и использует биты инструкции, которые указывают, какие регистры хранят операнды, чтобы считывать значения операндов из процессорного блока. регистрируется в АЛУ (значения операндов 3 и 4 в этом примере). На этапе выполнения часть ALU процессора выполняет операцию над операндами для получения результата (3 + 4 равно 7). Наконец, на этапе сохранения блок управления записывает результат (7) из процессора в блок памяти. Адрес памяти (5678) отправляется по адресной шине, команда WRITE отправляется по управляющей шине, а значение данных для сохранения (7) отправляется по шине данных. Блок памяти получает этот запрос и сохраняет 7 по адресу памяти 5678. В этом примере мы предполагаем, что адрес памяти для хранения результата закодирован в битах инструкции.

Рисунок 2. Этапы выборки и декодирования архитектуры фон Неймана для примера инструкции сложения. Операнд, результат и адреса памяти отображаются в виде десятичных значений, содержимое памяти отображается в виде двоичных значений.

Рисунок 3. Этапы исполнения и сохранения архитектуры фон Неймана для примера инструкции сложения. Операнд, результат и адреса памяти отображаются в виде десятичных значений, содержимое памяти отображается в виде двоичных значений.

Авторское право (C) 2020 Dive into Systems, LLC.

Dive into Systems находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).

Читайте также: