Skip to main content

Padrões de Codificação Multicore Visam Facilitar a Programação

A Associação Multicore está estabelecendo especificações para um modelo de programação que reduzirá a complexidade envolvida na criação de software para chips multicore usados ​​em smartphones, tablets e outros sistemas embarcados.

A associação está montando um conjunto coeso de APIs básicas (interfaces de programação de aplicativos) para padronizar a comunicação, compartilhamento de recursos e virtualização, abrangendo núcleos em chips iguais ou diferentes, disse Markus Levy, presidente do grupo.

Fabricantes de chips estão adicionando CPUs, sensores e aceleradores a chips como uma maneira eficiente de energia para aumentar o desempenho dos aplicativos nos dispositivos. Mas os chips multicore também criaram um desafio para os programadores, que precisam escrever aplicativos que escalam em vários núcleos e sincronizar corretamente para garantir que os cálculos sejam executados em uma determinada ordem para obter a saída correta.

As APIs de baixo nível fornecem uma consistência Um modelo de programação multicore a partir do qual as aplicações podem ser adaptadas para serem executadas em arquiteturas de chip, sistemas operacionais e hardware especializado, disse Levy. A Multicore Association concluiu o MCAPI (multicore communication API) e o MRAPI (API de gerenciamento de recursos multicore) para comunicação e gerenciamento de recursos, respectivamente, e tem grupos de trabalho para criar novas ferramentas e APIs relacionadas à virtualização.

"Existem muitos beneficiários de estabelecer essas APIs. Mas o principal objetivo de todas as partes é estabelecer a portabilidade ", disse Levy. Um modelo de programação consistente facilita a reutilização do aplicativo em diferentes plataformas multicore. Antes de essas APIs, a maioria dos projetos usava mecanismos proprietários que careciam de portabilidade, disse Levy. Um smartphone pode ser projetado usando múltiplos núcleos de processador rodando sistemas operacionais diferentes, com cada núcleo fornecendo funcionalidade diferente, disse Colin Walls, um tecnólogo de software embarcado em Mentor Graphics, que fabrica o sistema operacional Nucleus em tempo real que é enviado em cerca de 400 milhões de aparelhos por ano. O MCAPI fornece meios diretos para o software nos dois núcleos se comunicarem, disse Walls.

Em alguns dispositivos, um núcleo poderia rodar um sistema operacional, como Android ou Linux, para gerenciar grande parte da interface do usuário, execução de aplicativos de usuário, gerenciamento de arquivos e dados e comunicações. O outro núcleo pode ser algo invisível para o usuário e gerenciar atividades de telefone de baixo nível, como estabelecer e manter uma conexão de rede celular e manipular chamadas.

"Ao usar o MCAPI, o código de aplicativos incorporado não precisa estar ciente da O código é portátil entre sistemas operacionais e arquiteturas de chip ", disse Walls.

MCAPI permite que os programadores ativem aplicativos para multicore uma vez e reutilizem o mesmo código em vários produtos em uma linha de produtos e para próxima geração ", disse Sven Brehmer, CEO da PolyCore Software, que fornece ferramentas de desenvolvimento e software de tempo de execução para comunicação multicore e multichip.

O MCAPI está sendo mais usado nas infraestruturas de telecomunicações e de comunicação de dados e em dispositivos multimídia", disse Brehmer. . Outras áreas de interesse incluem dispositivos médicos, computação de alto desempenho e equipamentos militares e aeronáuticos, como radar.

A API permite o estabelecimento de domínios para implementações específicas, como a comunicação entre núcleos em um determinado chip ou em áreas específicas em um topologia do chip. Isso dá aos projetistas um melhor controle sobre o roteamento ea segurança de suas mensagens, disse Levy.

"Um aspecto da infraestrutura MCAPI envolve a especificação de uma rede de nós de comunicação, onde um nó pode ser um processo, thread, instância de sistema operacional, acelerador de hardware ou núcleo do processador ", disse Levy.

O MCAPI foi projetado para trabalhar com o MRAPI, uma API para recursos de gerenciamento de recursos em nível de aplicativo que coordenam o gerenciamento de energia e a virtualização em chips multicore. Os chips contêm funções e recursos que mudam dinamicamente, e em alguns chips multicore é difícil para um único sistema operacional rastrear e controlar todos os recursos, disse Levy. O MRAPI fornece suporte de baixo nível para notificação de eventos no nível do sistema, como estados de economia de energia, falhas de dispositivos e reparticionamento de hipervisor.

Por exemplo, dispositivos baseados em Linux com multiprocessamento simétrico não suportam um recurso para notificar aplicativos quando o ambiente operacional ou os recursos mudaram, disse Levy. Para acomodar a deficiência, a MRAPI fornece aos programadores mecanismos de implementação para gerenciar o compartilhamento de recursos e responder a mudanças na disponibilidade de recursos.

"Utilizando a MRAPI, os desenvolvedores de sistemas podem escrever programas aplicativos portáteis que escalarão em gerações atuais e futuras de processadores multicore e arquiteturas, beneficiando desenvolvedores de aplicações, middleware, processadores e sistemas, "Levy disse.

Esta padronização permitirá que fornecedores de chips e provedores de ferramentas de terceiros assumam o gerenciamento de recursos, para que os programadores possam se concentrar em aplicativos de alto nível", disse Levy.

A organização também está desenvolvendo APIs para usuários de produtos de virtualização embarcados, o que poderia permitir a interoperabilidade de aplicativos e middleware em diferentes ambientes de virtualização. Mas um foco maior está no desenvolvimento de ferramentas padronizadas que aproveitam as APIs. Alguns patrocinadores das novas APIs, como Mentor, Intel, Freescale e Texas Instruments, por exemplo, todos desenvolveram suas próprias ferramentas de depuração e rastreamento, disse Levy.

"O resultado líquido para os fornecedores de ferramentas é que tanto quanto “Não é um fornecedor único capaz de oferecer tudo o que seus clientes exigem, e ainda assim os clientes devem ser capazes de desenvolver e entender esse sistema diversificado”, disse Levy. modelos de programação como OpenMP e OpenCL, mas todos eles são projetados para serem "sinérgicos" ao invés de competitivos, disse Brehmer, da Polycore. A API OpenMP é projetada para escrever aplicativos paralelos em nível de máquina, enquanto o OpenCL é uma estrutura de programação para execução paralela de tarefas em processadores multicore, incluindo processadores gráficos e CPUs.

Os membros da Multicore Association também incluem IBM, Samsung e Advanced Micro Devices.