Все это время процессор общего назначения плюс аппаратная логика являются основной структурой дизайна SoC.
В некоторых приложениях, требующих обработки большого объема данных, такая структура не может удовлетворить требованиям.
Фактически, поскольку различные задачи могут выполняться в значительной степени независимо друг от друга, например обработка аудио и видео и обработка сетевых протоколов, сложные задачи с присущим им параллелизмом могут быть разложены на ряд тесно связанных подзадач, выполняемых параллельно.
Многоядерная SoC (Multicore SoC) или SoC с многопроцессорной структурой (MPSoC, Multiprocessor SoC) может выполнять такую сложную задачу, которая для выполнения разбивается на несколько ядер.
Поскольку разные ядра могут выполнять разные подзадачи, многоядерная архитектура может выполнять несколько инструкций за один цикл . По сравнению с последовательной обработкой одной и той же задачи с использованием этой параллельной обработки с одним ресурсом обработки производительность всего системного приложения была значительно улучшена.
Кроме того, дизайн многоядерной структуры может повторно использовать существующий зрелый одноядерный процессор в качестве ядра процессора, тем самым сокращая цикл проектирования и проверки и экономя затраты на НИОКР, что соответствует основной идее проектирования SoC. . Многоядерная структура — тренд будущего развития SoC.
Многие продукты теперь используют Arm в качестве основного ядра и несколько дополнительных ядер, а также используют RISCV для реализации множества настраиваемых небольших ядер.
1 доступный параллелизм
Достижения в области цифровой электроники зависят от способности разработчика микросхемы или системы эффективно реализовывать системные функции с использованием множества транзисторов, включенных параллельно. Разработчики могут воспользоваться множеством различных уровней параллелизма, обычно эти уровни можно сгруппировать в 3 типа:
- параллелизм на уровне инструкций,
- параллелизм на уровне данных
- Параллелизм на уровне задач.
Параллелизм на уровне инструкций (ILP, Instruction Level Parallelism) использует независимость между инструкциями , так что несколько инструкций могут выполняться одновременно, изменяя большую задержку, вызванную традиционными инструкциями последовательного выполнения, и улучшая инструкции.