Writing a RISC-V Emulator in Rust
Создание эмулятора RISC-V на Rust — это активно развивающийся проект, позволяющий собрать 64-битный эмулятор с нуля. После завершения курса вы сможете запускать в нем xv6 — простую Unix-подобную операционную систему. Проект охватывает основы компьютерной архитектуры: ISA, привилегированный режим, исключения, прерывания, периферийные устройства и системы виртуальной памяти. Исходный код доступен на GitHub в репозитории d0iasm/rvemu-for-book.
Проект разделен на два основных раздела: в первом рассматриваются аппаратные компоненты, необходимые для работы xv6, включая процессор с двумя инструкциями, память, системную шину, регистры управления и состояния, а также контроллеры прерываний и UART. Второй раздел посвящен наборам инструкций, начиная с базового RV64I Integer и включая расширения "M" для умножения и деления, и "A" для атомарных операций.
Комментарии (39)
- Доступны только первые три главы из десяти.
- Рекомендация использовать ассемблер для реализации.
- Наличие rv64-интерпретатора на x86_64 ассемблере.
"Special register groups" invaded computer dictionaries for decades (2019)
Как «специальные группы регистров» 50 лет жили в словарях
Фраза «special register groups» внезапно появилась в определении «CPU» в 1960-е и до сих пор мелькает в учебниках.
В старом глоссарии Минсельхоза США (1960) читаем:
«MAIN FRAME — центральный процессор; включает основную память, арифметическое устройство и special register groups».
Это описание относилось к мэйнфрейму Honeywell 800 (1959), где для многозадачности каждая из 8 программ получала собственный аппаратный набор из 32 регистров — именно их Honeywell назвала «special register groups».
Определение скопировали чиновники, оно попало в Automatic Data Processing Glossary, затем — в сотни книг и статей. Постепенно «main frame» стало синонимом «тип большого компьютера», а «special register groups» превратились в бессмысленную клишированную строчку, которую перепечатывали до 2017 года включительно.
Комментарии (39)
- Участники обсудили странное определение «special register groups» в старых словарях: оно неясно и не упоминает обычные регистры.
- Упомянули, что IBM в 1954 году определяла CPU как совокупность арифметических и управляющих функций, без «специальных регистров».
- Появились примеры старых машин, например Honeywell 800, где у каждой программы был свой набор регистров — предшественник barrel- и multithread-процессоров.
- Отмечено, что терминология часто копировалась без проверки, создавая «человеческий слаг» вроде «tongue map» или «brushless DC».
- Участники сравнили путаницу в терминах с другими примерами, включая RAM, ROM, SMT и «micom» в японских рисоварках.
A Simple CPU on the Game of Life (2021)
Схема простого процессора в «Жизни» — часть 4
Строим первый настоящий компьютер: 2-конвейерную машину неограниченных регистров (URM). Она факторизует 15 за несколько минут.
Что такое URM
- Теория: бесконечное число регистров с неограниченными целыми.
- Практика: 16 регистров по 4 бита.
- Инструкции:
INC Rx— увеличить.DEC Rx— уменьшить.JNZ Rx, Addr— переход, если не ноль.
Этого достаточно для полной Тьюринговой машины. Например, сложение:
ADD:
jnz R1, END
dec R1
inc R2
jmp ADD
END:
Архитектура
- Верхний левый угол: тактовый генератор.
- Рядом: регистровый файл (16×4 бит) — вся RAM.
- Справа: АЛУ, умеет только инкремент.
- Ниже: счётчик команд (PC) и ПЗУ на 128 4-битовых команд.
- Слева от ПЗУ: конвейерные триггеры для одновременного чтения и исполнения.
- Край справа: четыре семисегментных дисплея для вывода.
Особенности «Жизни»
В реальном железе минимизируют транзисторы; в «Жизни» главное — минимизировать площадь и задержку клеток.
Комментарии (11)
- Пользователи в восторге от наглядности «жизни» как модели вычислений, хотя кто-то считает её сложнее обычных логических символов.
- Conway, по мнению комментаторов, был бы в восторге.
- Вопрос о стеке сайта остался без ответа, но все хвалят дизайн.
- Пошутили о запуске DOOM и о «человеческом компьютере» из «Задачи трёх тел».