ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
565353
Evgeny_CD, Архитектор (11.12.2014 14:50 - 14:52, просмотров: 16085)
Многоядерность: гомогенная и гетерогенная, симметричная и аЗЗсимметричная. Наше славное будущее. Цель: совместить ужа, ежа и трепетную лань в одном кусочке кремния. На многоядерном камне запустить несколько ОСей, чтобы IO занималась RTOS, а Linux дарил правильный environment для программизма всего на свете. Гомогенная и гетерогенная - это ядра одинаковые или нет. Симметричная SMP - на всех ядрах крутится одно и то же ПО. Ассиметричная AMP - неодинаковое. А еще есть самый интересный вариант - Bound multiprocessing (BMP) A single OS manages all cores simultaneously. As in SMP, the OS can dynamically schedule processes on any core. However, the developer can also lock any process (and all of its associated threads) to a specific core. Если мы рассматриваем гетерогенную систему, то она почти наверняка AMP. Например, Cortex-M4+M0. Нет смысла пускать одинаковые ОСьки на столь разных ядрах. Если двухядерная гомогенная (Zynq, например) - то логичнее всего ставить тоже AMP (для embedded мира). На одном ядре крутится лялих, на другом - RTOS, которая работает с периферией и "драйверами первого уровня", если так можно выразиться. Т.е. поток по UART (как пример) превращает в пакеты, сами пакеты преобразует в удобную для обработки С структуру, и отдает их "наверх" (в обратную сторону аналогично, но не будем на этом останавливаться). Если камень 4-х ядерный, то все несколько сложнее. Как я понимаю, AMP или SMP - это настройка камня после старта, и от этого меняется алгоритм работы ОСи. Сделать так, чтобы 1 ядро было AMP, 3 - SMP - скорее всего нельзя (но это надо рисечить). BMP для Linux - пока что малоизведанная область, как понял. Проприетарные ОСи уже есть, типа QNX, а вот с лялихом туго. Выводы: * если научиться такое делать - разрешим главное противоречие: Linux чудесен во всем, кроме "нереалтаймовости" и написания драйверов * мощность современных широкодоступных многоядерных камней избыточна для большинства приложений. (слава сотикам и планшетам!) * также решится проблема GPL: на linux ядре крутится стандартое или патченное ядро * наш код крутится на нашем ядре, и мы никому ничего не обязаны показывать. Ссылки: Multicore basics: AMP and SMP http://www.embedde …29496/Multicore-basics Enea OSE A high-performance, POSIX compatible, multicore real-time operating system maximizing your hardware utilization http://www.enea.com/solutions/rtos/ose/ Using virtualization to maximize multicore SoC performance http://embedded-co …icore-soc-performance/ T-Kernel for multicore processors http://www.esol.co …multicore-edition.html Вложенные бумаги - самые толковые от FreeScale и Xilinx.