dxp 198 November 26, 2025 Posted November 26, 2025 · Report post 30 минут назад, mantech сказал: Тут видите какое дело, даже если и есть эти 200 мегагерц, то у этого проца нет кэшей, а на такой частоте, чтобы проц этот делал хотя бы 1DMIPS\MHz, ему нужен либо флеш-ускоритель, как в СТМ, либо кэш или ССМ память, иначе производительность у него будет, как у АРМ7 на 80 МГц максимум. Для примера можете взять А7 на 1ГГц и отключить кэш, в результате он будет медленней СТМ407го... Кроме этого ещё есть такой момент: Cortex-M0 -- это микроархитектура, т.е. там уже есть конкретная реализация по железу, это не просто ISA, и микроархитектура эта ориентирована на не самые высокие скорости, а больше на экономию потребления и низкую цену (размер кристалла), поэтому конвейер там короткий (в районе трёх стадий), и, как следствие, развивать высокие тактовые оно вряд ли сможет -- обычная их планка в районе 50 МГц. Конечно, тонкие техпроцессы поднимают границу, но не столь радикально, чтобы уйти даже в 200 МГц. 1 Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 331 November 26, 2025 Posted November 26, 2025 · Report post 1 час назад, dxp сказал: Кроме этого ещё есть такой момент: Cortex-M0 -- это микроархитектура, т.е. там уже есть конкретная реализация по железу, это не просто ISA, и микроархитектура эта ориентирована на не самые высокие скорости, а больше на экономию потребления и низкую цену (размер кристалла), поэтому конвейер там короткий (в районе трёх стадий), и, как следствие, развивать высокие тактовые оно вряд ли сможет -- обычная их планка в районе 50 МГц. Конечно, тонкие техпроцессы поднимают границу, но не столь радикально, чтобы уйти даже в 200 МГц. Про 50 МГц и Cortex-M0 не понял, как эти вещи вообще взаимосвязаны, и что мешает появиться Cortex-M0 на 200 МГц? Вопрос целесообразности вторичен. Длина пайплайна на максимальную тактовую в микроконтроллерах с парой десятков возможных команд почти не влияет никак - технически частоту можно задрать хоть до гигагерца. Главное - обеспечить быструю память, но этот вопрос ведь тоже решаем. LPC4350 как пример. 204 МГц. А больше частоты не задирают, потому что, наверное, нафиг не интересно никому - проще клепать более востребованные для таких скоростей процы M3/4/7/... Quote Share this post Link to post Share on other sites More sharing options...
mantech 132 November 26, 2025 Posted November 26, 2025 · Report post 9 минут назад, Arlleex сказал: и что мешает появиться Cortex-M0 на 200 МГц? Ничто не мешает, хоть на гигагерц)) Вопрос зачем? 10 минут назад, Arlleex сказал: Главное - обеспечить быструю память, но этот вопрос ведь тоже решаем. Так вот и дело в том, что если кто-то решил задрать скорость этого М0, то надо и добавлять ему ССМ или ускоритель, который дает бурст посылки в ДДР, ну на подобии кэш синхронизатора в А серии кортексов, тут нет ничего, поэтому задирать частоту выше 50-60МГц тупо неперспективно. Quote Share this post Link to post Share on other sites More sharing options...
sasamy 14 November 26, 2025 Posted November 26, 2025 · Report post 1 hour ago, mantech said: на подобии кэш синхронизатора в А серии кортексов, тут нет ничего, поэтому задирать частоту выше 50-60МГц тупо неперспективно 32 килобайта TCM достаточно для кода https://github.com/nvitya/rk3506-mcu/blob/aad1a39b782cb8b00a0e3cfb10fb5f3f24757006/rk3506_rproc/rk3506_rproc.c#L85 Quote Share this post Link to post Share on other sites More sharing options...
mantech 132 November 26, 2025 Posted November 26, 2025 · Report post 1 час назад, sasamy сказал: 32 килобайта TCM достаточно для кода Только для какого-то примитивного очень. В 32к еле-еле умещается загрузчик с инитом памяти для Т113. Quote Share this post Link to post Share on other sites More sharing options...
sasamy 14 November 26, 2025 Posted November 26, 2025 · Report post 2 minutes ago, mantech said: В 32к еле-еле умещается загрузчик с инитом памяти для Т113. там не нужен загрузчик - код загружается из убута или линукса, линукс говорит что на ядре m0 187.5 МГц Quote # grep hclk_m0 /sys/kernel/debug/clk/clk_summary hclk_m0 0 0 0 187500000 0 0 50000 N deviceless no_connection_id Quote Share this post Link to post Share on other sites More sharing options...
dxp 198 November 27, 2025 Posted November 27, 2025 · Report post 9 часов назад, Arlleex сказал: Про 50 МГц и Cortex-M0 не понял, как эти вещи вообще взаимосвязаны, и что мешает появиться Cortex-M0 на 200 МГц? 50 МГц -- это условная оценка скоростных характеристик для данной микроархитектуры. У вас не возникает вопроса, почему Cortex-M3/4 обычно работают на частотах в районе 200 МГц, а Cortex-M7 -- на полгигагерца и выше? Чем конкретно и принципиально М7 отличается от того же М4? Подавляющее большинство М0 работают на существенно более низких тактовых. Пример с LPC4350 интересный, но не показательный -- NXP сумели задрать тактовую на трёхстадийном конвейере для обоих ядер, надо полагать, технологически выжали. 9 часов назад, Arlleex сказал: Длина пайплайна на максимальную тактовую в микроконтроллерах с парой десятков возможных команд почти не влияет никак - технически частоту можно задрать хоть до гигагерца. Хе, зачем же тогда там вообще конвейер городят? Делали бы single-cycle ядро -- оно на порядок проще. Попробуйте, например, на FPGA слепить логику, которая требует высокой тактовой, там быстро приходит понимание, что такое тайминги и как с ними бороться, и что самым радикальным методом поднять тактовую в синхронных дизайнах -- это вставлять регистры в сигнальные пути, из-за чего и возникает конвейер. 9 часов назад, Arlleex сказал: Главное - обеспечить быструю память, но этот вопрос ведь тоже решаем. Это вообще вторично. Память, работающую на тактовой проца, сделать не проблема -- статическая память делается без проблем на той же технологии. Другое дело, что память эта дорогая и много её не поставить рядом с ядром, поэтому начинаются приседания с кэшами и/или TCM. А максимальная частота работы CPU -- это при прочих равных длина конвейера и больше ничего. 9 часов назад, mantech сказал: Ничто не мешает, хоть на гигагерц)) Ну-ну. Попробуйте, расскажете, получилось или нет. 9 часов назад, mantech сказал: Вопрос зачем? Как зачем? Люди бьются за производительность, а вы "зачем". Если бы это всё было бы так просто, то уже давно было бы одно ядро, маленькое и дешёвое как Cortex-M+, работающее на 10 ГГц (ну, ничо ж не мешает), и закрывающее почти все потребности. 9 часов назад, mantech сказал: ак вот и дело в том, что если кто-то решил задрать скорость этого М0, то надо и добавлять ему ССМ или ускоритель, который дает бурст посылки в ДДР Зачем Cortex-M0 DDR? 1 Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 151 November 27, 2025 Posted November 27, 2025 · Report post 2 hours ago, dxp said: что такое тайминги и как с ними бороться, Плюс, мощность потребления микросхемы прямо пропорциональна частоте и ёмкости, через которые эти частоты "гоняются". Следовательно, повышая частоту, нужно снижать напряжение питания (квадратичная зависимость мощности), толщину техпроцесса. Бррр) P.S. Надеюсь, не сильно нагнал в своих доводах))) 11 hours ago, Arlleex said: мешает появиться Cortex-M0 на 200 МГц? Думаю, экономические причины. А на них прямое влияние оказывают причины физические. Слишком дорогая микросхема получится, у которой кроме сумасшедшей скорости счёта и выполнения алгоритмов ничего не будет. При "убогой" системе команд. 2 hours ago, dxp said: Зачем Cortex-M0 DDR? Сэкономить на дорогой SRAM))) Вместо внутренней поставить внешнюю относительно дешёвую) Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 331 November 27, 2025 Posted November 27, 2025 · Report post 4 часа назад, dxp сказал: Хе, зачем же тогда там вообще конвейер городят? Делали бы single-cycle ядро -- оно на порядок проще. Попробуйте, например, на FPGA слепить логику, которая требует высокой тактовой, там быстро приходит понимание, что такое тайминги и как с ними бороться, и что самым радикальным методом поднять тактовую в синхронных дизайнах -- это вставлять регистры в сигнальные пути, из-за чего и возникает конвейер. Ну так зачем конвейер городят для мелкоконтроллеров, которые должны работать в районе 50 МГц? Вопрос ведь тот же самый. Я прекрасно понимаю, что многостадийность рождается в гонке за частоты. Но даже в относительно простой ПЛИС реализовать простейшую систему команд Cortex-M0 и запустить на сотне МГц вполне реально. А уж на оптимизированный кристалл развести нет никаких проблем, чтобы получить три-пять сотен МГц. Просто с такой системой команд это тупо не нужно - потреблять такое ядро будет столько же, сколько Cortex-M7, а функциональности с гулькин хвост. Более того, Cortex-M0+ вообще имеет 2 стадии конвейера, а ARM заверяет, что технически можно выжать почти 600 МГц: https://documentation-service.arm.com/static/620545c494e7af28dd7c9cbc А Cortex-M0, имея 3 стадии, имеет теоретический предел в 2 раза меньше: https://www.arm.com/-/media/Arm Developer Community/PDF/Processor Datasheets/Arm_Cortex-M0_Processor_Datasheet.pdf И это все при одних и тех же условиях: техпроцесс, питание, температура задрана в +125 градусов. 1 Quote Share this post Link to post Share on other sites More sharing options...
mantech 132 November 27, 2025 Posted November 27, 2025 · Report post 11 часов назад, sasamy сказал: линукс говорит что на ядре m0 187.5 МГц Да пусть он что угодно говорит, запустите тест на нем, сколько мипсов намотает? 4 часа назад, dxp сказал: Зачем Cortex-M0 DDR? Затем, что ССМ статика у него 32 кбайта, что можно такого сделать в ней, с учетом еще стека и ОЗУ для переменных? 4 часа назад, dxp сказал: Ну-ну. Попробуйте, расскажете, получилось или нет. А в чем проблема? Всегда думал, что на скорость влияет техпроцесс, а не логическая схема, или я чет ошибаюсь?))) 4 часа назад, dxp сказал: Чем конкретно и принципиально М7 отличается от того же М4? Подавляющее большинство М0 работают на существенно более низких тактовых. Вам не приходило в голову, что может просто нет смысла разгонять простейшую архитектуру, которая урезана по самое немогу, до бешенных частот? Потому, что например М0 сделанный на ТП 180нм просто не потянет частоты более 100МГц, а переход на 22нм - большие затраты, на них выгоднее сделать мощные ядра, не? Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 331 November 27, 2025 Posted November 27, 2025 · Report post 4 минуты назад, mantech сказал: А в чем проблема? Всегда думал, что на скорость влияет техпроцесс, а не логическая схема, или я чет ошибаюсь?))) Ошибаетесь) Конвейеры в CPU появлялись практически исключительно по соображениям повышения частоты на существующих техпроцессах. Как и слоистая система шинных матриц, доменов тактирования и памяти в современных микроконтроллерах. Quote Share this post Link to post Share on other sites More sharing options...
sasamy 14 November 27, 2025 Posted November 27, 2025 (edited) · Report post 18 minutes ago, mantech said: Да пусть он что угодно говорит, запустите тест на нем, сколько мипсов намотает? мне это зачем ? ядро cm0 работает там на 200 МГц - это факт, живите с этим, TCM на частоте ядра Quote # grep hclk_sysram /sys/kernel/debug/clk/clk_summary hclk_sysram 0 0 0 187500000 0 0 50000 Y deviceless no_connection_id Edited November 27, 2025 by sasamy Quote Share this post Link to post Share on other sites More sharing options...
mantech 132 November 27, 2025 Posted November 27, 2025 (edited) · Report post 6 минут назад, sasamy сказал: мне это зачем ? так вам же интересно было изначально в сравнении с ДСП аллвиннера, мне-то не нужно, я знаю, что ДСП по любому будет в разы быстрее, хотя бы даже потому, что там 600МГц и кэш. А То, что в ГЦЦ нет спец инструкций, так и в М0 их тоже нет))) Edited November 27, 2025 by mantech Quote Share this post Link to post Share on other sites More sharing options...
sasamy 14 November 27, 2025 Posted November 27, 2025 · Report post 1 minute ago, mantech said: так вам же интересно было изначально в сравнении с ДСП аллвиннера это абсолютно не интересно - ядро cm0 для реалтайм задач - быстро на прерывания реагировать Quote Share this post Link to post Share on other sites More sharing options...
mantech 132 November 27, 2025 Posted November 27, 2025 (edited) · Report post 5 минут назад, sasamy сказал: ядро cm0 для реалтайм задач - быстро на прерывания реагировать И что такого реалтаймового вы впихнете в 32кбайта, кода+данных? С уарта пару пакетов принять и подергать ножками ГПИО? Реалтайм - это например среду исполнения ПЛК туда впихнуть, в ДСП запросто, там нет ограничений на 32к, а вот в вашем случае, ну ну)))))) Вы хоть почитайте, зачем был задуман этот М0 - для управления энергосбережением, т.к. "фишка" таких ядер - малое энергопотребление, за что платится скоростью исполнения команд. Edited November 27, 2025 by mantech Quote Share this post Link to post Share on other sites More sharing options...