Сжатие кода эффективности ISA и трафик памяти

У меня проблемы с пониманием этой проблемы, и я новичок в ISA. Вот проблема с 3 вопросами, и мой самый большой вопрос, что должно произойти? В частности, код HLL внизу.

Предположим, четыре ISA

  1. на основе аккумулятора
  2. на основе стека
  3. память-в-память (операнды расположены в основной памяти)
  4. на основе регистров (чистая загрузка/сохранение)

Инструкция/размер данных

  • все операнды данных 4 байта
  • все адреса памяти 16 битные
  • все коды операций 1 байт
  • поля адреса памяти шириной 2 байта
  • поля регистров в машине загрузки/сохранения имеют ширину 4 бита (16 32-битных регистров)

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

Скомпилируйте код для четырех ISA и определите показатели: 1) размер кода 2) трафик памяти данных, включая адреса, 3) трафик инструкций, включая адреса.

Код ХЛЛ:

 A = B + A
 C = A - C + D
что ты уже испробовал? Кроме того, ваши характеристики несовместимы. В одной пуле указано, что адреса 16-битные, а в другой — 32-битные.
@DaveTweed это кажется непоследовательным, но слово в слово взято из книги, которую я пытаюсь прочитать. Возможно ли, что существует два типа адресов памяти? Я немного перефразировал. До сих пор я создал таблицу для четырех ISA с 3 строками (размер кода, трафик данных, трафик инструкций).
Это явно вопрос, который зависит от всего материала, который был представлен в книге до него. Предположительно, они обсуждали ключевые характеристики четырех МСА, перечисленных в этом вопросе. Ваша задача состоит в том, чтобы придумать разумную последовательность инструкций для каждой из ISA, реализующих указанную функциональность HLL, а затем проанализировать шаблоны доступа к памяти каждой из этих последовательностей. В нынешнем виде вопрос слишком широк, чтобы ответить здесь. Есть ли у вас конкретный момент или концепция, которая вызывает у вас затруднения?

Ответы (1)

В качестве подсказки для начала приведем несколько возможных последовательностей инструкций для первого оператора HLL:

Аккумуляторный

load A
add B
store A

на основе стека

load A
load B
add
store A

Память-в-память (2-адресная)

add B, A

на основе реестра

load A, r1
load B, r2
add r2, r1
store r1, A

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