Comments 7
Статья неплохая, и тема очень интересная, за содержание однозначно плюс! Но читать местами тяжело, сумбурно.
Субъективно это сильно заметно в процессе работы? А то что совсем грустно стало! Вот на STM32F4 с 128 битным доступом к флэш, то последняя читается быстрее, чем считываются данные из ОЗУ. А тут всего 20Мгц при однобитной шине)
Смотрите, давайте очень грубо прикинем. Я в реальном проекте туда перекинул инициализацию периферии. 12кб кода на -O3 оптимизации живет без кэша. Ну ок, имеем 12*1024 байта. Пусть грубо это поток команд из 3072 шт. что для такой оптимизации может быть близко к правде. Ну реально, какая на фиг разница какая там частота, это же все равно мегагерцы, миллионы операций в секунду:) Даже если оно не 20 микросекунд стартовать будет, а 200, как это увидеть?:) Поэтому моя стратегия, кидать туда инициализацию, которая обычно линейная и выполняется один раз при старте, но места может занимать прилично. А системный код циклический, там замедление будет скорее всего уже ощутимо.
Ну и это не однобитный доступ. По документам WCH на младшие ядра, 20МГц это не скорость физического SPI, это скорость внутренней шины. Что там у них на физической шине науке не известно.
Вот бы как то понять почему 20 Мгц пропускная способность.
Например у ESP32 код тоже выполняется из внешней флеш. У них честно написано что скорость SPI 80 Мгц, скорость шины не очень понятно какая.
В семействах С ядро такое, Risc V, с таким же набором расширений как у CH32V2
Ну расширение расширениями, а доступ к памяти это уже не про ядро, а про архитектуру самого чипа. Физическим флэшем рулит не ядро, а контроллер флэш видимо. И пока адреса попадают в кэшируемую область там все на системной частоте. Т.е. шина контроллер фелш/ядро - высокоскоростная и 32-х битная. А вот дальше оно тормозиться. Но spi флэши не то что бы моя компетенция, не знаю какая там может быть производительность в принципе. В случае с WCH лишь могу предположить, что там все завязано на тех. процессы и наработки на младших 48Mhz ядер, с которых WCH и начинали. Раскатали какие-то готовые решения и тех. процессы. Жду релизов этого года от WCH, там как минимум двухъядерный H417 и неожиданно V305CC в 48-ногом корпусе с памятью как 64-х ногих братьев. Т.е. что принципиально новое они по памяти походу сделали. Но ждем-с...
О переходе на QingKeV4. Тесты CoreMark в разных областях флэша для СH32V2/V3 и что же такое non-zero wait