Вычислите количество адресуемых ячеек памяти, если ширина адресной шины составляет 36 n

Обновлено: 07.07.2024

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

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

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

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

Очередь-1. Рассмотрим процессор с 64 регистрами и набором команд размером двенадцать. Каждая инструкция имеет пять отдельных полей, а именно код операции, два идентификатора исходного регистра, один идентификатор регистра назначения и двенадцатибитное непосредственное значение. Каждая инструкция должна храниться в памяти с выравниванием по байтам. Если в программе 100 инструкций, объем памяти (в байтах), занимаемый текстом программы, равен ____________. (GATE 2016)
(A) 100
(B) 200
(C) 400
(D) 500

  • Инструкция состоит из кода операции и операндов. Учитывая размер набора инструкций 12, для кода операции требуется 4 бита (2 ^ 4 = 16).
  • Поскольку всего имеется 64 регистра, для идентификации регистра требуется 6 бит.
  • Поскольку инструкция содержит 3 регистра (2 источника + 1 обозначение), для идентификаторов регистров требуется 3 * 6 = 18 бит.
  • Для непосредственного значения требуется 12 бит.
  • Всего битов для инструкции = 4 + 18 + 12 = 34 бита
  • Инструкции должны храниться с выравниванием по байтам. Ближайшая граница байта после 34 бит составляет 40 бит (5 байт).
  • Следовательно, для 100 инструкций требуется память 5 * 100 = 500 байт, и правильный вариант — (D).

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

Очередь-2. Процессор имеет 40 различных инструкций и 24 регистра общего назначения. 32-битное командное слово имеет код операции, два операнда-регистра и непосредственный операнд. Количество битов, доступных для поля непосредственного операнда, равно_______. (ВОРОТ CS 2016)

  • Поскольку у процессора 40 инструкций, число бит кода операции = 6 (2^6 = 64)
  • Поскольку процессор имеет 24 регистра, число битов в одном регистре = 5 (2^5 = 32)
  • Всего бит, занятых 2 регистрами и кодом операции = 6 + 5 + 5 = 16.
  • Поскольку указанный размер инструкции составляет 32 бита, оставшиеся биты, оставшиеся для операнда = 32-16 = 16 бит.

Очередь-3. Машина имеет 32-битную архитектуру с инструкциями длиной в 1 слово. Он имеет 64 регистра, каждый из которых имеет длину 32 бита. Он должен поддерживать 45 инструкций, которые имеют непосредственный операнд в дополнение к двум регистровым операндам. Предполагая, что непосредственный операнд является целым числом без знака, максимальное значение непосредственного операнда равно ___________. (ВОРОТ CS 2014)

  • Поскольку машина имеет 32-битную архитектуру, 1 слово = 32 бита = размер инструкции
  • Поскольку процессор имеет 64 регистра, число битов в одном регистре = 6 (2^6 = 64)
  • Поскольку у процессора 45 инструкций, число бит кода операции = 6 (2^6 = 64)
  • Всего бит, занятых 2 регистрами и кодом операции = 6 + 6 + 6 = 18.
  • Поскольку указанный размер инструкции составляет 32 бита, оставшийся бит остается для непосредственного операнда = 32-18 = 14 бит.
  • Максимальное значение без знака с использованием 14 бит = 2^14 – 1 = 16383, что является ответом.

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

Очередь-4.Процессор имеет 16 целочисленных регистров (R0, R1, …, R15) и 64 регистра с плавающей запятой (F0, F1, …, F63). Он использует 2-байтовый формат инструкции. Существует четыре категории инструкций: тип 1, тип 2, тип 3 и тип 4. Категория типа 1 состоит из четырех инструкций, каждая из которых имеет 3 целочисленных регистровых операнда (3R). Категория типа 2 состоит из восьми инструкций, каждая из которых имеет 2 операнда регистра с плавающей запятой (2F). Категория типа 3 состоит из четырнадцати инструкций, каждая из которых имеет один операнд целочисленного регистра и один операнд регистра с плавающей запятой (1R+1F). Категория типа 4 состоит из N инструкций, каждая из которых имеет регистровый операнд с плавающей запятой (1F).

Проблема 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.

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

Эта глава из книги

Эта глава из книги

Эта глава из книги 

История микропроцессоров до ПК

Мозгом или двигателем ПК является процессор (иногда называемый микропроцессором) или центральный процессор (ЦП). ЦП выполняет системные вычисления и обработку. Процессор часто является самым дорогим отдельным компонентом в системе (хотя цены на графические карты в некоторых случаях превышают его); в системах более высокого класса он может стоить в четыре или более раз больше, чем материнская плата, к которой он подключается. Как правило, Intel приписывают создание первого микропроцессора в 1971 году с появлением чипа под названием 4004. Сегодня Intel по-прежнему контролирует рынок процессоров, по крайней мере, для ПК, хотя с годами AMD завоевала солидную долю рынка. Это означает, что все ПК-совместимые системы используют либо процессоры Intel, либо Intel-совместимые процессоры нескольких конкурентов (например, AMD или VIA/Cyrix).

Доминирование Intel на рынке процессоров не всегда было гарантировано.Хотя обычно Intel приписывают изобретение процессора и выпуск первого процессора на рынок, к концу 1970-х годов два самых популярных процессора для персональных компьютеров были не от Intel (хотя один из них был клоном процессора Intel). процессор). Персональные компьютеры того времени в основном использовали Z-80 от Zilog и 6502 от MOS Technologies. Z-80 был известен как улучшенный и менее дорогой клон процессора Intel 8080, подобно тому, как такие компании, как AMD, VIA/Cyrix, IDT и Rise Technologies, клонировали процессоры Intel Pentium. Однако в случае с Z-80 клон стал намного популярнее оригинала. Кто-то может возразить, что AMD добилась такого статуса за последний год или около того, но даже несмотря на то, что они добились значительных успехов, Intel по-прежнему контролирует рынок процессоров для ПК.

Тогда у меня была система, содержащая оба этих процессора, состоящая из 1 МГц (да, это 1, как в одном мегагерце!) Система Apple II на базе 6502 с Microsoft Softcard (Z -80) вставляется в один из слотов. Softcard содержала процессор Z-80 с тактовой частотой 2 МГц. Это позволило мне запускать программное обеспечение для обоих процессоров в одной системе. Z-80 использовался в системах конца 1970-х и начала 1980-х годов, которые работали под управлением операционной системы CP/M, тогда как 6502 был наиболее известен своим использованием в ранних компьютерах Apple I и II (до Mac).

Судьба как Intel, так и Microsoft резко изменилась в 1981 году, когда IBM представила IBM PC, основанный на процессоре Intel 8088 с частотой 4,77 МГц и работающем под управлением Microsoft Disk Operating System (MS-DOS) 1.0. С тех пор как было принято судьбоносное решение использовать процессор Intel в первом ПК, в последующих ПК-совместимых системах использовалась серия процессоров Intel или Intel-совместимых процессоров, причем каждый новый процессор был способен запускать программное обеспечение предыдущего процессора — начиная с 8088 до текущих Pentium D/4/Celeron и Athlon XP/Athlon 64. В следующих разделах рассматриваются различные типы процессорных микросхем, которые использовались в персональных компьютерах с момента появления первого ПК почти два десятилетия назад. В этих разделах содержится много технических подробностей об этих микросхемах и объясняется, почему один тип микросхемы ЦП может выполнять больше работы, чем другой, за определенный период времени.

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