Обновить
27
0
Виктор @byman

Пользователь

Отправить сообщение

Лучше точно не будет :)

Но на мой взгляд, нужно еще доделывать текущую однотактную модель. Сейчас к ней невозможно подключить обычную синхронную статическую память оставаясь в рамках однотактного исполнения. Также можно добавить В-расширение. Например zba,zbb,zbs команды. Это уже поддерживается компилятором, просто добавляется и улучшит немного коремарк :)

С удовольствием посмотрю и на такую Вашу модель.

со всеми однотактными командами у меня одна итерация 313 263 такта. Это 3.1922

добавьте в ядро счетчик тактов и хотя бы одну команду чтения этого счетчика из набора CSR регистров. А то непонятно как считать рекорды :)

Но шибко лютый CoreMark получился, 2.7CM/MHz выглядит уж круто

Модель интересна тем, что она однотактовая. В ней напрочь отсутствует конвейер. Любая команда исполняется за 1 такт. Вы не теряете ничего на переходах, на загрузке данных. т.е. это какой-то идеал , к которому нужно стремиться. :)

Деление у Вас просто огонь. В тактах, конечно. Вот только не знаю какой бы тест подобрать чтобы надрать задницу флагманам :)

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

однотактное умножение не так уж и нужно

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

доступ к памяти предоставить через 2 шины

То, что у Вас сейчас шина "подключена в одно место " не означает отсутствие конфликта. В Вашем тестовом окружении уже есть конфликт доступа к памяти между шиной команд и шиной данных.

Наконец-то понял. Конвейер это Вы про будущий конвейерный вариант процессорного ядра. "Сделать до конвейера" это добавить расширение "М" в текущий вариант процессорного ядра.

Здесь скорее всего риск, спроектированный с помощью ИИ. :)

 сейчас шина у нас всегда подключена в одно место, никакой конкуренции нет. 

Не могли бы Вы как-то объяснить эту фразу?

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

Не могу понять что Вы называете конвейером.

Картинка с паровозиком отличная.

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

Если внешняя статическая ТСМ память просто как регистровый файл с 2 портами чтения и одним портом записи, то все отлично :)

Что делать с периферией которая за один такт отработать не может ?

Я полагал, что раз входа "подождать" нет, то все вышеописанные проблемы с необходимостью подождать будут решаться через блокировку прохождения синхросигнала.

Думаю, что с этими модулями у автора проблем не будет. Кроме контроллера прерываний, т.к. вход IRQ процессорного ядра висит в воздухе :)

Смело. По сути внешняя память у Вас аналогична описанному в процессорном ядре регистровому файлу.

Да. Про Ваше.

даёт 1.29 CM

Проверил. Цифры аналогичные :)

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

Автор ядра DarkRiscV похвастался, что собрал ядро за один день. У меня за плечами опыта разработки микроэлектроники не было, поэтому когда ядро так же удалось собрать за один день, осталось только сказать: "Лол, и это работает".

По легенде, он сделал это за одну ночь. Но если Ваш день был короче чем его ночь, то Вы круче.

Как я понял, диаграмма здесь простая - один период клока. В этом периоде выдается адрес, читается из памяти команда, декодируется, исполняется и в конце такта защелкивается результат и новый адрес команды :) Уникальный процессор - в нем даже нет регистра инструкции.

Информация

В рейтинге
Не участвует
Откуда
Беларусь
Зарегистрирован
Активность