Автор: Dale Skrien
Автор перевода: Святоха А.А.
CPU Sim 3.1 - это образовательный программный пакет, написанный на Java для использования в курсах CS3. CPU Sim обеспечивает студентам - активную учебную среду, в которой они могут проектировать, модифицировать и сравнивать различные компьютерные архитектуры на уровне регистров и так далее. Они могут разработавать программы на ассемблере или машинном языке для этих архитектур с помощью моделирования. CPU Sim - это полноценная среда разработки, включая диалоговые окна для проектирования архитектуры процессора, текстовый редактор для редактирования программы на языке ассемблера, ассемблер, несколько окон отображения для просмотра регистров и оперативной памяти во время выполнения программы и широкие функции отладки, такие как возможность шагать вперед или назад во время выполнения, проверка и при необходимости изменение значений в регистрах и ОЗУ после каждого шага. Благодоря этим функциям и обсуждаются вариант использования CPU Sim в классах CS3.
cимулятор компьютерной архитектуры, обучение.
На курсе CS3 (Компьютерная организация) студенты должны не только читать о различных компьютерных архитектурах, но в идеале должны иметь активный практический опыт работы с такими архитектуры. К сожалению, предоставление такого опыта может быть затруднено из-за стоимости лаборатории с необходимым оборудованием и временем для обучения студентов использование инструментов для работы с оборудованием. По этой причине были разработаны многие симуляторы процессора.
К сожалению, большинство из этих пакетов имитируют только одну фиксированную архитектуру. Мы чувствуем что студенты должны быть подвержены нескольким компьютерным архитектурам, и в идеале должны иметь практический опыт работы с как можно большим количеством из них, и даже практический опыт проектирования простых архитектур. С использованием симулятора, который позволяет студентам такой контроль над симуляцией, инструкторы имеют гораздо больше возможности для предоставления ценного опыта обучения. Например, чтобы сделать программирование проще для этой архитектуры, преподаватели могут дать студентам архитектуру и ряд заданий, которые постоянно просят студентов добавлять и внедрять новые функции, такие как новые режимы адресации, новые машинные инструкции или новые регистры. На каждом этапе студентам также может быть предоставлено программирование на ассемблере назначения, которые подчеркивают преимущества добавляемых новых функций.
CPU Sim - это инструмент, предназначенный для облегчения такого интерактивного практического обучения. С CPU Sim, студенты могут разрабатывать свои собственные архитектуры с нуля или модифицировать архитектуры, данные им. Студенты могут моделировать различные архитектуры, в том числе, например, процессоры на основе аккумуляторов, регистров (RISC) и стеков, и они смогут запускать программы на них без необходимости какого-либо физического оборудования, кроме компьютера, на котором запущен процессор Sim.
Когда CPU Sim запущен, появляется главное окно дисплея (см. Рисунок 1). За исключением некоторые диалоговые окна и окна справки, все окна являются внутренними по отношению к этому главному окну. Внутренние окна включают те, которые отображают содержимое регистров и ОЗУ и те, которые содержат текст, такие как программы сборки. Каждое из этих внутренних окон и многие пункты меню обсуждаются в последующих разделах этой статьи.
В CPU Sim архитектуры разрабатываются на уровне передачи регистров. То есть пользователь указывает регистры, основные запоминающие устройства (ОЗУ), микроинструкции, машинные инструкции, и инструкции на ассемблере для гипотетической машины.
Машинная инструкция реализуется последовательностью микроинструкций, называемая "выполняемая последовательность." Пользователь указывает последовательность выполнения всей машиной инструкции, и поэтому пользователь имеет полный контроль над семантикой каждой инструкции. Когда CPU Sim выполняет программу, он многократно выполняет машинные циклы которые состоят из последовательности выборки (последовательности микроинструкций, указанных пользователем) сопровождается последовательностью выполнения машинной инструкции, которая была выбрана.
Если пользователи строят новую архитектуру, им необходимо сначала создать базовые аппаратные компоненты ЦП. Одним из типов компонентов является регистр или регистр массив.
Пользователи могут создавать столько регистров и массивов регистров, сколько пожелают, с произвольной шириной (числом бит). Для каждого регистра пользователь указывает имя и ширину. Для каждого массива регистров пользователь указывает имя, количество регистров в массиве и ширину всех регистров. Эти массивы указываются в диалоговом окне, показанном на рисунке 2. Если массив из 16 регистров называется "A", то CPU Sim автоматически присваивает каждому отдельному регистру в массиве имена "A [0]", "A [1] ", ...," A [15] ".
Другой тип аппаратного компонента, который пользователь должен указать, - это память или ОЗУ. ОЗУ адресуется байтами, и каждое ОЗУ доступно ЦПУ только через микроинструкции доступа к памяти, которые передают данные между регистрами и ОЗУ. Пользователь может указать столько оперативной памяти, сколько нужно, каждая со своим размером. Например, пользователь может захотеть создать три ОЗУ, одну для хранения кода, одну для хранения стека и одну для хранения кучи, или пользователь может захотеть использовать только одну ОЗУ для хранения всего.
Последний тип аппаратного компонента, который пользователь указывает, это бит условия (см. Рисунок 3). Биты условия - это просто конкретные биты существующих регистров, которые могут быть установлены в 1 с помощью микроинструкций и, возможно, арифметических операций, если происходит переполнение или выполнение. Например, типичный регистр состояния с битами NZVC может быть указан таким образом. Пользователь также может указать, остановит ли установка бита условия выполнение текущей программы.
Затем пользователь создает микроинструкции для манипулирования данными в регистрах и ОЗУ. Микроинструкции, включающие арифметические операции, предполагают, что целочисленные значения хранятся в представлении дополнения 2. Существует 15 видов микроинструментов, которые можно создать:
Пользователь задает семантику каждой машинной инструкции с помощью последовательности микроинструкций, называемой ее «последовательностью выполнения». Следовательно, пользователь может создавать очень простые инструкции, такие как увеличение регистра или очень сложные инструкции со сложными схемами адресации, включающими несколько регистров и ОЗУ. Пользователь может создавать инструкции, похожие на RISC, так как все они имеют одинаковую длину и расположение, или пользователь может выбирать инструкции, похожие на CISC, с переменной длиной и различными форматами.
В дополнение к последовательности выполнения пользователь указывает имя для каждой машинной инструкции, код операции и последовательность длин полей. Сумма длин полей - это длина (в битах) инструкции. Первое поле соответствует коду операции, а остальные поля соответствуют операндам инструкции; см. рисунок 5 для диалогового окна для редактирования машинных инструкций.
CPU Sim также имеет диалоговое окно (здесь не показано), в котором пользователь может указать последовательность выборки. Последовательность выборки - это последовательность микроинструкций, которые CPU Sim выполняет в начале каждого машинного цикла. Пользователи могут указать любую последовательность, которую они пожелают, но последовательность выборки обычно включает в себя микроинструкции, которые выбирают следующую машинную инструкцию, помещают ее в регистр команд, увеличивают счетчик программ, а затем декодируют инструкцию в регистре команд.
После того как архитектура была указана, пользователь может сохранить эту спецификацию в файле XML для последующей перезагрузки в CPU Sim и редактирования. Пользователь также может сохранить спецификацию машины в файле HTML, который можно просматривать с помощью любого веб-браузера.
После определения полной архитектуры ЦП пользователь может писать программы на машинном языке или языке ассемблера и запускать их на этом ЦПУ посредством моделирования. Для написания таких программ CPU Sim имеет встроенный текстовый редактор, включающий все средства вырезания/копирования/вставки/поиска/замены/печати, требуемые для такого редактора.
Программы на машинном языке пишутся в виде текста в виде последовательности нулей и единиц на каждой строке, за которыми, возможно, следуют комментарии. Эти программы могут быть загружены в любое указанное ОЗУ и затем выполнены; см. рисунок 6 для примера программы на машинном языке.
На ассемблере инструкция пишется с использованием имени машинной инструкции, за которым следует список значений (либо констант, либо символов), по одному для каждого поля инструкции. Например, инструкция для добавления содержимого регистра A[0] в A[1] может выглядеть следующим образом:
add A0, A1
где A0 и A1 равны значениям 0 и 1, указывающим индексы добавляемых регистров; см. окно «W1-0.a» на рисунке 1 для примера программы на языке ассемблера.
Ассемблерные программы могут также включать в себя определение equates, определения и вызовы макросов и псевдоинструкции, такие как директива data, которая инициализирует части памяти указанными значениями, или директива include, которая вставляет содержимое другого файла в текущий программа перед сборкой.
После того, как программа сборки написана и сохранена в файл, ее можно собрать. Ассемблер CPU Sim проверит наличие ошибок в коде и, если такие ошибки есть, отобразит сообщение об ошибке и выделит ошибочную строку в коде сборки. Если ошибок не возникает, собранный машинный код может быть загружен в любое указанное ОЗУ, пользователь может инициализировать любой из регистров указанными значениями, и тогда может начаться выполнение программы.
Если во время выполнения пользовательская программа запрашивает ввод данных у пользователя, появляется диалоговое окно с просьбой ввести значение. Если программа указывает вывод пользователю, этот вывод появляется в диалоговом окне. Ввод и вывод также могут быть направлены в и из текстовых файлов.
Как только программа останавливается (поскольку бит условия был установлен в 1, произошла ошибка или пользователь выбрал пункт меню «Стоп»), пользователь может проверить состояние машины, включая содержимое регистров и ОЗУ.
CPU Sim - это программа моделирования CPU, предназначенная для использования с курсами CS3, которая позволяет студентам создавать или изменять изучаемые архитектуры. Это интерактивная среда обучения, в которой учащиеся могут создавать, изучать и модифицировать различные простые архитектуры на уровне передачи регистров. Это полностью интегрированный пакет, который включает в себя текстовые редакторы для написания программ, ассемблер, интерактивную справку и множество средств отладки, которые помогают пользователю легко модифицировать архитектуры, а затем писать и выполнять программы на этих архитектурах.