Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Комплект учебных программ
для изучения RISC-V

Вот ссылка для загрузки.

Из каких программ состоит учебный комплект?

Учебный комплект состоит из трех программ:

  1. симулятор RISC-V;
  2. ассемблер для RISC-V;
  3. справочная система по RISC-V (пока не выложена на сайте).

Комплект предназначен для работы под управлением операционной системы Windows.

Все программы могут бесплатно использоваться в образовании!

Главной программой является симулятор RISC-V. Он загружает программу в коде RISC-V и выполняет ее. Результаты работы отображаются в максимально подробной и наглядной форме.

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

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

1. Учебный симулятор RISC-V

Учебный симулятор RISC-V. Автор Е.А. Еремин

В существующей версии симулятор способен выполнить любую инструкцию из базового 32-битного (RV32I) и 64-битного (RV64I) наборов. Этого вполне достаточно для начинающих. Тем не менее, на будущее запланированы некоторые расширения симулятора. Главное из них - это наличие нескольких ядер, что позволит познакомиться с основными идеями параллельных вычислений. Несколько ядер симулятор может создать хоть сейчас. Проблема в том, что они должны взаимодействовать через общую память с помощью расширения системы команд RV32A (или аналогичной RV64A). Это так называемые неделимые (atomic) операции. А в их деталях я пока не до конца разобрался.

Симулятор "умеет" выполнять программу в автоматическом (целиком) и в пошаговом (по одной инструкции) режимах. Второй для понимания значительно удобнее.

В интерфейсе имеются следующие окна.

  • Главное окно, с помощью которого можно управлять симулятором. Дополнительно подчеркнем, что в правой части этого окна отображается загруженный код и (при наличи соответствующих знаний) его можно оперативно изменить.
  • Окно, отображающее состояние регистров. При желании содержимое того или иного регистра можно поменять. При этом предусмотрена регулировка доступа к редактированию, что приучает к выбору регистров в соответствии с принятыми в RISC-V соглашениями.
  • Окно, отображающее содержимое памяти. Можно группировать байты по 1, по 2, по 4 и по 8. Команды RISC-V имеют разрядность 4 байта, что делает именно такое разбиение предпочтительным. Редактирование содержимого памяти не предусмотрено (пока, по крайней мере).
  • Окно, в котором формируется отчет о выполненных инструкциях. Можно каждый раз очищать отчет и отображать только результаты выполнения последней команды, а можно новый текст добавлять к предыдущему. Кроме того, предусмотрена возможность (на случай нескольких ядер) отключения слежения.
  • Последнее окно наиболее интересно. Хотя содержимое регистров и ячеек памяти отображается в соответствующих окнах, но их достаточно много и следить за ними не всегда удобно. Окно наблюдения позволяет выбрать те регистры и ячейки, за которыми требуется следить в данной задаче. Особенно удобно то, что выбранные настройки окна можно сохранить в файл (с расширением WAT, от слова "watch" - наблюдать). В результате преподаватель может заранее подготовить такой файл для примеров, что облегчит объяснение.

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

2. Учебный ассемблер для RISC-V

Учебный ассемблер для RISC-V. Автор Е.А. Еремин

Для удобства составления программ служит язык ассемблер. Трансляцией ассемблерного текста в коды RISC-V занимается вторая программа комплекта.

В ее основном окне набирается текст программы и выводится информация об ошибках трансляции. Для облегчения набора можно щелкнуть по кнопке и вызвать вспомогательное окно Конструктор команды. С его помощью проще и быстрее вводить команды. Находим в таблице имя нужной команды и щелкаем по соответствующей ячейке. Сразу появляется полная форма команды. Остается только ввести нужные номера регистров или константу. После щелчка по кнопке Ввод сконструированная команда будет занесена в программу. Такой способ удобен тем, что не требуется вспоминать структуру нужной инструкции.

Наконец, в окне кода можно увидеть (и, конечно, сохранить в файл для симулятора!) итоговый код RISC-V. Чтобы в нем было легче ориентироваться, внизу приводится таблица меток: число в столбце АДРЕС надо сравнивать с содержимым программного счетчика PC. Номер строки (Line) позволяет найти ее в исходном тексте программы. В пункте меню Поиск можно попросить программу найти строку по ее номеру и выделить.

Ассемблер поддерживает так называемый препроцессинг, т.е. предварительный просмотр программы и замены текста в ней. В частности, благодаря этому можно писать принятые в литературе "псевдонимы" регистров: например, вместо X6 набирать t1. Кроме того, можно использовать имена псевдоопераций: например, вместо ADDI X6, X0, 9 использовать короткую запись li x6,9 (li означает "load immediate", т.е. загрузить константу, входящую в состав команды - в нашем случае она равна 9). Особенно удобно, что список замен и расшифровка псевдоопераций хранятся в текстовых файлах, которые можно легко пополнять и редактировать.

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

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

А еще препроцессор все строчные буквы переводит в заглавные, удаляет лишние пробелы и комментарии (признаком которых служит символ "#"); это сильно упрощает дальнейшую трансляцию. Результаты препроцессинга можно посмотреть в специальном служебном окне. На рисунке оно не показано, но его легко вызвать из главного меню (пункт Окна).

О демо-примере

Для приведенных картинок использован простой демонстрационный пример - умножение числа на 10. Некоторые его детали вы можете посмотреть здесь.

Хотите загрузить программы?

Вот ссылка для загрузки.

И еще раз напомню ссылку на справочный материал по основным командам RISC-V.


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting