Вычислите количество адресуемых ячеек памяти, если ширина адресной шины составляет 36 n
Обновлено: 22.11.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
- Сколько страниц находится в виртуальном адресном пространстве?
- Каков максимальный размер адресуемой физической памяти в этой системе?
- Если средний размер процесса составляет 8 ГБ, вы бы использовали одноуровневую, двухуровневую или трехуровневую таблицу страниц? Почему?
- Вычислите средний размер таблицы страниц в ответе на вопрос 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 |
Проблема 3
- Каков размер страницы в такой системе? Объясните свой ответ (число без обоснования не будет засчитано).
-
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. В следующих разделах рассматриваются различные типы процессорных микросхем, которые использовались в персональных компьютерах с момента появления первого ПК почти два десятилетия назад. В этих разделах содержится много технических подробностей об этих микросхемах и объясняется, почему один тип микросхемы ЦП может выполнять больше работы, чем другой, за определенный период времени.
Читайте также: