-
- Насколько мне известно, стандартный GCC не ругается, когда ему в
параметрах архитектуры добавляешь xw. Вроде бы, это расширение уже
включили в ванильную ветку. - Nikolay_Po(10.03.2025 18:39)
- расширение xw - содержит 8 команд, 4 команды взяты у Huawei, а 4
команды, что со стеком добавили сами. Стандартное расширение Zcb
имеет 4 команды, что без стека, но OPкод совсем другой и более
обрезанные по части смещения. А gcc всё что можно, то и будет
поддерживать! - Zikon(10.03.2025 19:44)
- А где почитать что за инструкции? - Andreas(10.03.2025 19:53)
- В RM на ядро " XW: 16-bit compression instruction for
self-extending byte and half-word operations. Note: To further
improve code density, extend the XW subset by adding the following
compression directives c.lbu/c.lhu/c.sb/c.sh/c.lbusp/ c.lhusp/c.sbsp/c.shsp, use based on the MRS compiler or the toolchain it provides." - petrd(10.03.2025 20:04)
- Как связаны LLVM с GCC? Nikolay_Po(179 знак., 11.03.2025 16:10, ссылка)
- Это я видел, но что это за инструкции? - Andreas(10.03.2025 20:06)
- Товарищи китайцы такие затейники (инфа из LLVM): SciFi(2 знак., 10.03.2025 20:40, ссылка, картинка)
- Вот тут petrd(145 знак., 10.03.2025 20:11, ссылка)
- В RM на ядро " XW: 16-bit compression instruction for
self-extending byte and half-word operations. Note: To further
improve code density, extend the XW subset by adding the following
compression directives c.lbu/c.lhu/c.sb/c.sh/c.lbusp/ c.lhusp/c.sbsp/c.shsp, use based on the MRS compiler or the toolchain it provides." - petrd(10.03.2025 20:04)
- А где почитать что за инструкции? - Andreas(10.03.2025 19:53)
- расширение xw - содержит 8 команд, 4 команды взяты у Huawei, а 4
команды, что со стеком добавили сами. Стандартное расширение Zcb
имеет 4 команды, что без стека, но OPкод совсем другой и более
обрезанные по части смещения. А gcc всё что можно, то и будет
поддерживать! - Zikon(10.03.2025 19:44)
- Нет там аппаратного стека, там есть аппаратный механизм сохранения
10 регистров в пользовательский стек, по времени это так же как и
программное сохранение. - petrd(10.03.2025 11:35)
- Тогда непонятно ограничение 2 уровнями, если в общий стек пихают,
какая разница сколько уровней? - Andreas(10.03.2025 12:08)
- Ограничили вложенность прерываний! Только у ch32v30x (QK_V4F) аппаратный стек 3 уровня и вложенность до 8, после 3-х пишет в память - Zikon(10.03.2025 15:20)
- Это про вытеснение. - petrd(10.03.2025 12:11)
- А вот и не факт. Во 1-х в манулах на ядра QingKe явно описывается
HPE как аппаратный стек. Конечно, реализация может не
соответствовать описанию - китайцы большие затейники в этом плане.
Однако есть еще кое-какие интересные биты в регистрах CSR, которые
указывают на аппаратную реализацию HPE: il-2(613 знак., 10.03.2025 14:41)
- Факт. Речь шла про V003, а значит ядро V2. V3 и V4 не трогаю,
говорю только про V2. petrd(703 знак., 10.03.2025 15:27)
- Ну вот, кое что проясняется. il-2(471 знак., 10.03.2025 15:55)
- СH32V003. Все прерывания в моем коде имеют атрибут
__attribute__((interrupt("WCH-Interrupt-fast"))). petrd(163 знак., 10.03.2025 16:32, картинка)
- А вот сработало первое прерывание и MPOP = 1. petrd(1 знак., 10.03.2025 16:43, картинка)
- СH32V003. Все прерывания в моем коде имеют атрибут
__attribute__((interrupt("WCH-Interrupt-fast"))). petrd(163 знак., 10.03.2025 16:32, картинка)
- Ну вот, кое что проясняется. il-2(471 знак., 10.03.2025 15:55)
- Аппаратный стек - это такой, который сохраняет все регистры за 1
такт. Если для сохранения нужно по 1 такту на регистр, то толку с
того "аппаратного стека"? - =AlexD=(10.03.2025 14:55)
- Вот из мануала на QK_V4 ( здесь 3 уровня - это для V4F , для
остальных V4 - будет 2) ( V3 - тоже аппаратный стек есть 2 -
уровня) ( V2 - нет аппаратного стека ) Zikon(1 знак., 10.03.2025 15:13, картинка)
- Картинка не отвечает на вопрос о латентности. - =AlexD=(10.03.2025 15:26)
- Вот из мануала на QK_V4 ( здесь 3 уровня - это для V4F , для
остальных V4 - будет 2) ( V3 - тоже аппаратный стек есть 2 -
уровня) ( V2 - нет аппаратного стека ) Zikon(1 знак., 10.03.2025 15:13, картинка)
- Факт. Речь шла про V003, а значит ядро V2. V3 и V4 не трогаю,
говорю только про V2. petrd(703 знак., 10.03.2025 15:27)
- А вот и не факт. Во 1-х в манулах на ядра QingKe явно описывается
HPE как аппаратный стек. Конечно, реализация может не
соответствовать описанию - китайцы большие затейники в этом плане.
Однако есть еще кое-какие интересные биты в регистрах CSR, которые
указывают на аппаратную реализацию HPE: il-2(613 знак., 10.03.2025 14:41)
- Hardware Prologue/Epilogue (HPE) - я неправильно Hardware - понял? - Zikon(10.03.2025 11:51)
- ну и как он за 1 такт сохранит 10 регистров в памяти ? Да и разница
по времени всё-таки есть! - Zikon(10.03.2025 11:46)
- Немного ошибся в v003 - нет теневых регистров, в старших qkV4 - есть теневой аппаратный стек до 3-х уровней с сохранением 16-ти регистров, а в v003 действительно идет сохранение в стек и происходит быстро, потому что не надо декодировать комманды. Надо на x033 или v203 - проверить. - Zikon(10.03.2025 12:20)
- Никак он за 1 такт не сохранит. 2 такта на сохранение регистра * 10 +... Klen раньше уже исследовал petrd(1 знак., 10.03.2025 12:12, ссылка)
- У вас на клаве восклицательный знак залип :-) Вот кто-то не поленился и измерил при помощи осциллографа >>> SciFi(1 знак., 10.03.2025 11:50, ссылка)
- Тогда непонятно ограничение 2 уровнями, если в общий стек пихают,
какая разница сколько уровней? - Andreas(10.03.2025 12:08)
- Насколько мне известно, стандартный GCC не ругается, когда ему в
параметрах архитектуры добавляешь xw. Вроде бы, это расширение уже
включили в ванильную ветку. - Nikolay_Po(10.03.2025 18:39)