question-11

Вопрос 11

Организация массивов данных. Режимы адресации. Цикл выборки адреса и операнда БЭВМ

Массивы в БЭВМ

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

Символьные данные представляются 8-разрядными кодами. Так как длина слова БЭВМ составляет 16 бит, в одной ячейке памяти могут храниться два символа. Данные, слово которых занимает больше 16 бит, располагаются в нескольких соседних ячейках памяти (требуется определить порядок).

В БЭВМ используются следующие режимы адресации:

  • Прямая абсолютная — адрес операнда непосредственно содержится в команде.
  • Косвенная относительная — в команде задаётся адрес ячейки, содержащей адрес операнда.
  • Косвенная автоинкрементная — после обращения к операнду адрес увеличивается на единицу.
  • Косвенная автодекрементная — перед обращением к операнду адрес уменьшается на единицу.
  • Со смещением относительно SP — адрес вычисляется как сумма SP и смещения.
  • Прямая относительная — адрес вычисляется как сумма IP и смещения.
  • Прямая загрузка операнда — операнд содержится непосредственно в команде.

Цикл выборки адреса и операнда зависит от используемого режима адресации:

add-addressing-modes.png

AF (Address Fetch), OF (Operand Fetch), SXT (Sign eXTension)

В прямой загрузке нет выборки операнда и адреса, т. к. операнд непосредственно содержится внутри команды.

Ссылка на оригинал


question-29

Вопрос 29

Ассоциативная память, кэш-память. Влияние промахов кэш-памяти на производительность

Ассоциативная память

Ассоциативная память (CAM, Content Addressable Memory) — это память, в которой поиск осуществляется не по адресу, а по содержимому (признаку).

associative-memory-lookup.png

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

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

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

CAM используется в TLB (запоминающий массив содержит номера страниц), L1, L2 (именно массивы тегов, массивы данных обычные SRAM)


Кэш-память

Кэш-память — это высокоскоростная память небольшого объема, расположенная между процессором и ОЗУ.

cache-organization.png

Назначение кэша — уменьшить среднее время доступа к данным.

Причина появления кэша заключается в том, что процессор работает значительно быстрее оперативной памяти. Если бы процессор каждый раз обращался непосредственно к ОЗУ, значительная часть времени тратилась бы на ожидание данных. Кэш хранит наиболее часто используемые данные и команды.

Современные процессоры обычно имеют несколько уровней кэша (L1, L2, L3). Чем ниже уровень, тем больше объем и больше время доступа.

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

При обращении к памяти процессор сначала проверяет кэш.

Кэш-попадание (Cache Hit) — нужные данные найдены в кэше и сразу передаются процессору.

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

Эффективность кэша основана на принципе локальности:

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

Влияние кэш-промахов

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

Даже небольшой процент промахов способен привести к значительному падению общей производительности системы.

cache-hit-rate-chart.png

Ссылка на оригинал