МКАПИ
API многоядерных коммуникаций (MCAPI) — первая спецификация, разработанная Multicore Association . MCAPI предоставляет стандартизированный API для связи и синхронизации между тесно распределенными (несколько ядер на кристалле и/или чипов на плате) встроенными системами .
Обзор
[ редактировать ]MCAPI — это независимый от языка, процессора и операционной системы протокол связи, используемый для программирования многоядерных устройств. MCAPI обеспечивает три режима связи: сообщения, пакеты и скаляры. MCAPI — это интерфейс прикладного программиста для передачи сообщений вместе с протокольными и семантическими спецификациями того, как его функции должны вести себя в любой реализации. Основными целями любой реализации MCAPI являются чрезвычайно высокая производительность и малое потребление памяти .
MCAPI берет свое начало от коммуникационных API, таких как MPI и сокеты Беркли . И MPI, и сокеты были разработаны в первую очередь с учетом межкомпьютерной связи, тогда как MCAPI ориентирован в первую очередь на межъядерную связь в многоядерном чипе. Соответственно, основная цель разработки MCAPI заключалась в том, чтобы служить интерфейсом с малой задержкой, обеспечивающим эффективное внутрикристальное соединение в многоядерном чипе. Однако из-за более ограниченного объема многоядерных коммуникаций и цели снижения задержки MCAPI менее гибок, чем MPI или Sockets.
Режимы связи MCAPI
[ редактировать ]MCAPI обеспечивает три режима связи:
- без установления соединения сообщения – датаграммы . Сообщения должны быть гибкими в отношении полезной нагрузки, динамически изменяющихся получателей, приоритетов и усилий по настройке, хотя и с небольшим снижением производительности.
- пакеты – потоки произвольного размера, ориентированные на соединение, однонаправленные и FIFO. Пакеты должны быть гибкими в отношении полезной нагрузки, обеспечивая более высокую производительность, чем сообщения, за счет усилий по настройке.
- скаляры – ориентированные на соединение потоки фиксированного размера, однонаправленные и потоки FIFO. Скаляры предназначены для обеспечения максимальной производительности режима связи, хотя и за счет гибкости полезной нагрузки и усилий по настройке.
MCAPI по сравнению с MPI
[ редактировать ]MCAPI ориентирован исключительно на встроенные коммуникации и добавляет идеи сообщений, пакетов и скаляров + связанных каналов. Это позволяет MCAPI поддерживать различное качество обслуживания, при котором подключенные каналы могут использовать базовое встроенное оборудование. Кроме того, MCAPI поддерживает различные виды приоритетов, сообщения могут иметь приоритет для каждого сообщения, а каналы также могут рассматриваться как имеющие разные приоритеты, что позволяет реализациям сопоставлять некоторые или все каналы выделенному оборудованию. MCAPI также может поддерживать нулевое копирование путем назначения атрибутов подключенным каналам.
Другие большие различия включают в себя:
- MCAPI не имеет привязки к языку FORTRAN, поскольку он обычно не встречается во встроенных системах.
- MCAPI не поддерживает коллективную связь, как MPI. Это позволяет MCAPIv иметь меньшую реализацию.
- В MCAPI нет понятия групп.
- В MCAPI нет никаких методов синхронизации, как в MPI, никаких барьеров, никаких ограждений, никаких блокировок.
- MCAPI не имеет файловых объектов или каких-либо функций, связанных с ними.
- MCAPI не имеет модели создания процессов или управления ими.
Ссылки
[ редактировать ]- Холт, Джим; Агарвал, Анант; Бремер, Свен; Домейка, Макс; Гриффин, Патрик; Ширмейстер, Франк (июнь 2009 г.), «Стандарты программного обеспечения для эпохи многоядерности», IEEE Micro , 29 (3): 40–51, doi : 10.1109/MM.2009.48 , hdl : 1721.1/52432