Primula C Compiler     Xameleon Project        |        In English

Устройство выборки команд и управления шинами

Comment are off
На этом месте должна была быть статья о моделировании инструкций из диапазона 0x60-0x6f. Однако, открылись некоторые обстоятельства, о которых пойдёт дальнейшее повествование. Именно поэтому статья попадает в блог, а не в раздел новостей. Для демонстрации поведения должна б...
Дальше...

Закладки? Нет — очередное расширение системы команд

Comment are off
Мы погрязли в отладке следующих, ещё не перенесённых в конвейерную версию, инструкций. Сложность заключается в том, что при изменении схематики приходится заново прогонять все тесты и вместе с добавлением новой функциональности добиваться идентичного прохода уже прой...
Дальше...

Горячий возврат из подпрограммы

Comment are off
Некоторые инструкции или их сочетание мы называем горячими инструкциями. Почему горячие? Это такие инструкции,  которые не делают полезную работу и могут являться результатом программной ошибки. В предыдущей статье я рассказывал о  работе конвейера и упомянул что пример дол...
Дальше...

Введение в планировщик «Эверест»

Использование дерева приоритетов задач как средства для организации универсального алгоритма планирования для систем, построенных на основе с...
Дальше...

Контроллер SDRAM для Марсохода

Comment are off
Уважаемые друзья! Мы потратили много времени в поисках подходящиего контроллера для нашей SoC и в результате решили реализовать его самостоятельно, взяв за основу спецификацию на микросхему MT48LC4M16A2-75 компании Micron. Вот какое устройство у нас получилось: Мы реализовал...
Дальше...

Текущий статус проекта

Comment are off
На скриншоте показан момент отладки нового конвейеризированного процессорного ядра системы команд «Эверест». Моделирование производится программой ModelSim Starter Edition. Показанные волны соответствуют исполнению следующего участка кода: Этот код является типичным...
Дальше...

Система команд «Эверест» версия 1 редакция 2

Comment are off
Второе расширение системы команд. Причиной расширения явилась потребность оптимизировать микрокод процессора. В результате удовлетворения этой потребности машинные инструкции из диапазона от 0xd0 до 0xd7 расширили семантику с помощью бита F (седьмой бит в тре...
Дальше...

Карта инструкций процессора

Comment are off
Мы создали карту системы команд, поместив все реализованные инструкции процессора в таблицу размером 16×16 элементов. Первая строка это однобайтовые инструкции. Третья строка — двухбайтовые инструкции. Желтым фоном помещены зарезервированные коды операций (карт...
Дальше...

О потенциале расширения системы команд

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

Что-то с памятью моей стало…

Comment are off
Какая досада! Выход новой прошивки неожиданно задерживается. Подвела нас оперативная память — при работе с микросхемой SDRAM Марсохода2 возникли неожиданные проблемы. Но обо всём по порядку. В качестве контроллера SDRAM нами было использовано вот это устройство —...
Дальше...

Система команд «Эверест» версия 1 редакция 1

Обновилась редакция системы команды «Эверест» и транслятор ассемблера. Пример объявления констант: Система команд дополнена новой формой инструкций с использованием расширенной адресации со смещением. В качестве смещения могут выступать как числовые константы, т...
Дальше...

Гибридный планировщик

Из за ограниченного количества логических элементов на нашей ПЛИС, нам не удалось аппаратно реализовать планировщик задач. Поэтому использована гибридная схема, при которой планировщик задач реализован в микрокоде процессора. В систему команд процессора добавлено несколько новы...
Дальше...

Как узнать коды клавиш терминала используя ассемблер

Comment are off
Иногда нужно срочно узнать сканкоды клавиш, возвращаемых терминалом, а под рукой ничего кроме процессора «Эверест» 🙂 Конечно, это шутка, но вот иногда хочется увидеть, что же приходит с удалённого терминала, особенно когда нажимаются функциональные клавиши или клави...
Дальше...

ANSI графика, интерактивность и отладчик

Comment are off
Преодолён первый рубеж — процессор научился работать со встроенным последовательным портом. Чтобы показать что у нас получается, мы подгтовили простую демонстрационную прошивку. На следующей картинке показано количество ресурсов занятых демонстрационной прошивкой: Ч...
Дальше...

Ядро «Эверест»

Comment are off
Вместо предисловия: «Пастух пас овец – в одиночестве. И захотелось ему повидать людей. Он и закричал, зашумел: «Волки, волки!» Люди из селения прибежали с палками и цепями. Осмотрелись, сначала удивились, потом плюнули и ушли к себе в селение. Прошло время и заскуч...
Дальше...

Пошаговая отладка процессора

В предыдущей записи мы показали отладочное устройство. Нам удалось использовать его по назначению и совместить с процессором. В результате получилось вот такое устройство: Что это такое? Это наш процессор в режиме пошаговой отладки. По сути — это микроконтроллер, кото...
Дальше...

Аппаратный отладчик

Comment are off
Иногда случается, что код корректно работает в симуляторе, но не запускается в реальном железе. Конечно, это не повод отказываться от симуляторов, но иногда бывает полезным заглянуть, что же происходит непосредственно в «железе». Мы столкнулись с аналогичной проблемой...
Дальше...

Ассемблер

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

И снова о процессоре

Известно, что лучший отдых — это смена деятельности. Работа над компилятором отнимает очень много сил, поэтому была сделана небольшая пауза и внимание было переключено на процессор. С момента последней публикации была проделана огромная работа — написан тестбенч д...
Дальше...