Search
Write a publication
Pull to refresh

Comments 7

Странно,что ничего не сказано про ядро Hazard3 (RV32IMAC) в новых RP2350.

Я тоже слежу за мелкими RP. Но в контексте этой статьи (успехи архитектуры RISC-V) 2350 со своими врожденными дефектами и откровенно любительским назначением вряд ли может претендовать на упоминание.

Здорово, хотя из чтения других источников кажется, что тон статьи чрезмерно оптимистичен ;)

RISC-V никогда не будет пригоден для серьёзных применений из-за одной мелочи, гвоздя, которого не было в кузнице. Впрочем, это свойство всех «открытых проектов», сделанных методом муравейника.

У risk-v очень долгое сохранение контекста. Для этого придумали костыль: соглашение, что контекст сохраняется в ВЫЗЫВАЮЩЕЙ цепочке команд. Типа клмпилятор всё наоптимизирует, и будет сохранять только те регистры, которые нужны вызывающему потоку И изменяются в подпрограмме. И будет типа щастье.

Только вот ламеры забыли, что есть такие подпрограммы - называются обработчики прерываний. Место вызова которых неизвестно. А они, в свою очередь, могут вызывать обычные функции. И что мы имеем в итоге? Если обработчик трапа/прерывания чуть сложнее, чем дрыганье выводом порта - компилятор просто НЕ МОЖЕТ предсказать, какие регистры нужно созранять. И СОХРАНЯЕТ ВСЕ. В обработчике, требующем максимальной скорости реакции на событие 🤦🏻‍♂️🤦🏻‍♂️. Тратя на это до десятка микросекунд (на типичных для встраиваемых систем частотах ядра около 100МГц) 🤦🏻‍♂️🤦🏻‍♂️🤦🏻‍♂️.

А вот профессионально разработанные Cortex-M-ядра на тех же частотах начинают обработку трапа/прерывания через доли или единицы микросекунд.

Ну например ядро AVR входит в прерывание за 6 тактов. Ну и собственно моментальность реагирования на прерывание нужно только в жестком реалтайме который как правило вообще не предусматривает какой либо операционной системы.

"Профессионально разработанные" cortex-m аппаратно пушат кучу (но не все) регистров и точно так же тратят на это время, но только уже безусловно и всегда. А потом ещё и компитятор ручками сохраняет оставшиеся, если функция обработчика сложная с кучей расчётов, не лезущих в сохранённые аппаратно. Ну и наконец, никто и ничто не мешает впилить в конкретную эмбедскую risc-v корку расширение, подменяющее caller-saved регистры при входе в обработчик.

Извините, если это нельзя писать.
Но, опыт сотрудничества США и КНР (очень удачного для КНР) показал, что открытый мир уже почти умер.

Sign up to leave a comment.