PTM: máquina de tarefas paralelas¶
Introdução¶
PTM é a sigla de Parallel Task Machine (máquina de tarefas paralelas), um mecanismo programável de tarefas periféricas documentado para o SF32LB57x. Destina-se a operações cuja temporização é exigente demais para laços de firmware convencionais, específicas demais para periféricos de função fixa e pequenas demais para justificar manter o Cortex-M33 principal continuamente ocupado.
Na prática, a PTM permite que o firmware delegue comportamentos periféricos determinísticos: sequências de E/S com temporização precisa, protocolos personalizados, aquisição de dados de sensores, formas de onda semelhantes a PWM, respostas rápidas a gatilhos e operações compactas em registradores ou memória associadas a eventos externos.
A divisão de responsabilidades é simples: a CPU configura e supervisiona a tarefa; a PTM executa as operações repetitivas e sensíveis à temporização, próxima aos recursos de E/S, FIFO/DMA, eventos e barramento AHB. Assim, a PTM é mais do que um auxiliar para gerar formas de onda em GPIO: é uma pequena máquina programável para automatizar tarefas periféricas.
Este artigo é útil quando nenhum periférico padrão atende aos requisitos de temporização ou protocolo e uma rotina de polling na CPU principal aumentaria a latência, o consumo de energia ou a complexidade do firmware. O conteúdo é voltado a engenheiros que definem a divisão entre hardware e firmware, não ao uso rotineiro de GPIOs ou temporizadores.
Por que a PTM existe¶
Em microcontroladores, pode haver um descompasso entre o processamento da aplicação e as exigências de temporização dos periféricos. A CPU principal pode ter desempenho suficiente para o produto, mas alguns comportamentos de baixo nível ainda podem complicar o firmware sem necessidade:
- sequências de E/S sensíveis a bits ou a ciclos de clock;
- protocolos seriais personalizados que não se encaixam bem em UART, SPI, I2C ou CAN;
- fluxos de polling ou amostragem de sensores que exigem resposta rápida a um gatilho;
- padrões de controle semelhantes a PWM que vão além dos modos de saída dos temporizadores padrão;
- pequenos fluxos de transferência de dados ou controle de registradores vinculados a eventos periféricos;
- coordenação entre vários periféricos sem despertar a CPU principal da aplicação a cada etapa.
Executar essas tarefas por interrupções pode aumentar a carga de interrupções e o risco de latência. Laços de espera ocupada desperdiçam tempo de CPU e energia. Adicionar lógica externa aumenta a complexidade da placa. A PTM preenche o espaço entre essas opções: execução periférica compacta e determinística, sob controle do firmware.
PTM na arquitetura SF32LB57x¶
A PTM pode ser entendida como um pequeno mecanismo programável conectado à infraestrutura de E/S, eventos, FIFO/DMA e barramento AHB do SoC SF32LB57x. Considere-a um recurso documentado para o SF32LB57x: antes de adotar uma decisão de projeto baseada em PTM para outra família SF32, confirme o suporte na documentação do dispositivo escolhido.
Application / firmware
│
▼
CPU configures PTM task
│
▼
PTM executes deterministic peripheral sequences
│
├── IO read/write
├── FIFO / DMA data movement
├── AHB memory or register access
├── Event wait / fixed delay
└── CPU interrupt or internal event notification
O ponto arquitetural essencial é que a PTM pode executar um fluxo compacto de instruções personalizadas e interagir com mais do que pinos. Ela pode ler e gravar E/S, aguardar eventos, usar caminhos de FIFO/DMA, acessar a memória AHB e os registradores de periféricos e notificar a CPU somente quando for necessária a intervenção do firmware de nível superior.
Assim, o sistema mantém os periféricos padrão para as funções padrão e, ao mesmo tempo, oferece um caminho de implementação determinístico para os casos personalizados de temporização que surgem em projetos reais de hardware.
Principais recursos¶
O guia de projeto de hardware do SF32LB57x documenta um bloco PTM com 16 canais, e a tabela de multiplexação dos pinos enumera PTM1_CH0 a PTM1_CH15. Em conjunto com as definições do SDK, os recursos documentados incluem:
- recursos de execução PTM controlados de forma independente;
- conjunto compacto de instruções personalizadas;
- execução de instruções a partir da TCM interna ou do barramento do sistema;
- leitura e gravação de endereços no barramento;
- operações com dados;
- desvios condicionais e laços;
- leitura e gravação de E/S;
- espera por gatilhos;
- atrasos de duração fixa;
- controle de temporização em nível de ciclo ao executar a partir da TCM da PTM;
- 16 canais de E/S no bloco PTM;
- suporte a FIFO com interface DMA;
- acesso ao barramento AHB para operações na memória e nos registradores de periféricos;
- geração de interrupções para a CPU;
- eventos internos para conectar fluxos de tarefas;
- controles do SDK para reset, início, pausa e execução passo a passo de recursos PTM indexados.
Em conjunto, esses recursos fazem da PTM um bloco determinístico de automação periférica, e não apenas um sequenciador de pinos.
Configuração dos recursos: As definições de registradores do SDK v2.5.1 incluem grupos de controle e registradores com índices 0–7, e as definições de instruções usam índices correspondentes para os recursos TCM. As fontes disponíveis não estabelecem a relação entre os índices do SDK e a quantidade de núcleos físicos; portanto, não deduza a contagem de núcleos a partir desses índices. Consulte a documentação do dispositivo e a implementação do SDK para confirmar os recursos disponíveis.
Modelo de execução¶
PTM executa instruções em um formato personalizado. O conjunto de instruções é compacto, mas cobre as operações necessárias para compor sequências de tarefas periféricas:
- Fluxo de controle: verificações de condição, desvios, laços, esperas e atrasos.
- Controle de E/S: leitura e gravação dos canais de E/S mapeados.
- Manipulação de dados: operações aritméticas simples e operações em bits.
- Acesso ao barramento: leitura e gravação de memória e registradores de periféricos pelo barramento AHB.
- Sincronização: espera por gatilhos, geração de interrupções e coordenação por eventos internos.
Quando a tarefa é executada a partir da TCM da PTM, a temporização pode ser controlada com precisão de ciclo. Isso é importante para protocolos e sequências de E/S personalizados: a CPU não precisa responder a cada borda, intervalo de temporização ou fase curta do periférico.
As melhores tarefas para a PTM costumam ser pequenas, explícitas e determinísticas. Se a lógica se tornar de alto nível, tiver muitos desvios ou depender de políticas da aplicação, provavelmente deve voltar a ser executada pela CPU.
E/S, FIFO e DMA¶
O bloco PTM do SF32LB57x oferece 16 canais de E/S. Eles permitem implementar a temporização de interfaces personalizadas, monitorar vários pinos ou gerar sequências com múltiplos sinais.
PTM também oferece suporte a FIFO com uma interface DMA. Isso é importante porque protocolos personalizados úteis raramente se limitam a alternar pinos. Muitas vezes, é preciso transferir dados entre a memória e a lógica voltada às E/S sem exigir que a CPU intervenha a cada byte ou palavra.
Na prática, a PTM pode ajudar a implementar fluxos como:
- deslocar dados por uma interface personalizada;
- capturar ou produzir padrões de E/S repetitivos;
- coordenar a transferência de dados com eventos periféricos;
- armazenar temporariamente pequenas transações de protocolo;
- permitir que o DMA forneça ou retire dados da tarefa enquanto a CPU não participa do caminho crítico.
Eventos e interrupções¶
A PTM é orientada a eventos. Ela pode aguardar um evento ou um atraso fixo, e os eventos internos podem conectar fluxos de tarefas. A documentação disponível não estabelece a quantidade de núcleos PTM físicos nem como os índices de recursos do SDK se relacionam com esses núcleos. Alguns caminhos de eventos também podem notificar a CPU por interrupções, permitindo que o firmware seja acionado somente quando a etapa determinística chegar a um ponto que exija atenção.
Esse é o principal benefício para o sistema: a PTM absorve o trabalho de temporização de baixo nível e apresenta ao firmware pontos de sincronização mais claros. Em vez de fazer polling contínuo ou atender a cada intervalo por interrupção, a CPU configura a tarefa PTM, deixa-a executar e trata o resultado.
Casos de uso típicos da PTM¶
Em um projeto com SF32LB57x, a PTM é mais útil quando o comportamento periférico é personalizado demais para os blocos de função fixa e sensível demais à temporização para laços de firmware convencionais.
Os casos de uso típicos incluem:
- protocolos de interface personalizados;
- PWM personalizado ou geração de pulsos;
- aquisição automática de dados de sensores;
- fluxos com resposta rápida a gatilhos;
- escalonamento de vários módulos;
- operações agrupadas de memória ou registradores;
- pequenos laços de controle determinísticos em torno de dispositivos externos;
- preenchimento de lacunas de temporização entre um sensor, display, atuador ou circuito integrado auxiliar e o firmware da aplicação principal.
Limites de uso¶
A PTM não deve substituir periféricos padrão quando eles já atendem à necessidade. UART, SPI, I2C, CAN, SDIO, I2S, PDM, temporizadores e DMA continuam sendo a primeira opção para funções padrão. A PTM é mais valiosa quando o produto precisa de um comportamento que ultrapassa os recursos desses blocos fixos.
PTM e consumo de energia da CPU¶
A PTM pode reduzir o número de vezes que a CPU precisa despertar para executar tarefas periféricas curtas e determinísticas. A CPU configura a tarefa PTM, reduz sua participação enquanto ela é executada e volta a atuar quando a PTM chega a uma etapa que exige atenção do firmware.
Isso é particularmente relevante em produtos vestíveis e AIoT, nos quais o sistema pode precisar:
- monitorar um sensor ou um padrão de GPIO;
- coletar pequenos blocos de dados;
- controlar um componente externo personalizado;
- manter a temporização enquanto o núcleo da aplicação não está totalmente ativo;
- reduzir a frequência de interrupções durante tarefas periféricas repetitivas.
O benefício energético real depende do clock, da política de despertar, da localização do código e dos dados na memória, do estado dos periféricos e da arquitetura do firmware. Ainda assim, a PTM pode executar pequenas tarefas periféricas sem despertar a CPU a cada etapa.
PTM, PIO do RP2040 e PPI/DPPI da Nordic¶
PTM, PIO do RP2040 e PPI/DPPI da Nordic podem reduzir a participação da CPU em operações sensíveis à temporização, mas atuam em níveis arquiteturais diferentes e não são intercambiáveis.
- PTM é uma máquina programável de tarefas periféricas. Executa instruções de tarefa e pode trabalhar com E/S, eventos, FIFO/DMA e acesso à memória e aos registradores AHB.
- PIO é uma máquina de estados de E/S programável. Executa um pequeno programa de instruções voltado ao controle temporizado de GPIO e a protocolos seriais personalizados.
- PPI/DPPI são mecanismos programáveis de interconexão entre periféricos. Encaminham eventos periféricos para tarefas já existentes nos periféricos; não executam instruções nem processam dados.
| Critério | PTM do SF32LB57x | PIO do RP2040 | PPI/DPPI da Nordic |
|---|---|---|---|
| Conceito | Máquina programável de tarefas periféricas para E/S determinística, protocolos personalizados, aquisição de sensores e fluxos periféricos orientados a eventos. | Máquinas de estados de E/S programáveis para controle determinístico de GPIO e protocolos seriais personalizados. | Interconexão de hardware entre eventos e tarefas periféricas para coordenação sem CPU, quando os pontos de conexão necessários estão disponíveis. |
| Unidade de execução | Recursos de execução PTM indexados; confirme a disponibilidade no dispositivo escolhido. | Dois blocos PIO, cada um com quatro máquinas de estados, totalizando oito. | Canais de eventos que propagam gatilhos; não executam programas. |
| Funcionamento interno | PTM executa instruções de tarefa personalizadas. | As máquinas de estados executam instruções PIO ciclo a ciclo. | O PPI conecta pontos de evento e tarefa; o DPPI usa periféricos publicadores e assinantes em um canal compartilhado. |
| Temporização | Controle em nível de ciclo ao executar a partir da TCM da PTM; oferece esperas e atrasos fixos. | Execução das máquinas de estados com precisão de ciclo, instruções de espera e intervalos de atraso. | Um evento aciona uma tarefa de periférico existente; a temporização depende dos periféricos conectados e da implementação da interconexão. |
| E/S | O bloco PTM do SF32LB57x oferece 16 canais de E/S. | As máquinas de estados associam instruções aos pinos GPIO selecionados por meio da configuração de controle dos pinos. | Não gera formas de onda GPIO diretamente; pode acionar tarefas oferecidas por periféricos como GPIOTE e temporizadores. |
| Instruções e lógica | Conjunto personalizado de instruções para E/S, leitura/gravação no barramento, operações com dados, desvios condicionais, esperas e atrasos. | Conjunto compacto de instruções para E/S de pinos, deslocamento, esperas, desvios, operações push/pull em FIFO, IRQ e movimentação de dados. | Não executa instruções, laços, desvios nem operações com dados. |
| Acesso à memória e aos registradores | Acessa a memória AHB e os registradores de periféricos. | É voltado principalmente a GPIO, FIFO e registradores de deslocamento; em geral, a CPU ou o DMA fornece dados e configuração. | Não acessa memória nem registradores gerais de periféricos; conecta apenas os pontos disponíveis de eventos e tarefas. |
| FIFO/DMA | Suporte a FIFO com interface DMA. | FIFOs TX/RX, normalmente usadas com DMA. | A interconexão não tem um caminho de dados próprio; pode acionar tarefas em periféricos com DMA. |
| Interação com a CPU | Pode gerar interrupções para a CPU e conectar fluxos de tarefas por eventos internos. | Usa sinalizadores IRQ, FIFOs e interação com a CPU ou o DMA. | A CPU configura os canais; durante a execução, os periféricos podem acionar tarefas automaticamente em resposta a eventos. |
| Usos típicos | Protocolos de interface personalizados, PWM personalizado, aquisição automática de sensores, operações agrupadas de memória/registradores e escalonamento de vários módulos. | Interfaces personalizadas semelhantes a UART/SPI/I2S, formas de onda semelhantes às do WS2812, protocolos seriais em nível de pino e temporização precisa de GPIO. | Eventos de RTC ou temporizador que iniciam conversões ADC, contagens ou outras tarefas padrão oferecidas pelos periféricos. |
Funcionamento interno¶
Os caminhos de execução desses mecanismos podem ser representados assim:
PPI: Event endpoint ──> PPI channel ──> Task endpoint
DPPI: Publisher peripheral ──> DPPI channel ──> Subscriber peripheral task
PIO: CPU/DMA ──> PIO state-machine instructions ──> GPIO timing and FIFOs
PTM: CPU configuration ──> PTM task instructions ──> IO + events + FIFO/DMA + AHB access
PPI e DPPI conectam eventos sem executar instruções, mas apenas conectam eventos e tarefas existentes; não permitem definir a lógica de um protocolo novo. O PIO permite programar o comportamento dos pinos por meio de máquinas de estados, principalmente para GPIO e FIFO. A PTM abrange tarefas mais amplas: pode reunir em um único fluxo executável a temporização de E/S, a espera por eventos, a transferência de dados, o acesso a registradores e a coordenação entre pequenas tarefas.
O PIO pode parar enquanto aguarda uma condição ou quando uma FIFO está cheia ou vazia; a temporização das instruções não garante quando o DMA do sistema fornecerá os dados. O roteamento de eventos também apresenta latência dependente da implementação. Essas diferenças arquiteturais não definem uma classificação universal de consumo de energia. A transferência DPPI entre domínios exige pontes implementadas no dispositivo escolhido; nem todo sistema DPPI oferece esse recurso.
PPI e DPPI da Nordic¶
PPI é o modelo mais antigo da Nordic, presente em dispositivos como os da família nRF52. O software configura, em cada canal, um ponto de evento e um ponto de tarefa. Um canal também pode oferecer um ponto adicional de tarefa do tipo fork, mas a relação entre eventos e tarefas continua sendo configurada explicitamente.
DPPI é o modelo mais recente da Nordic. Um periférico publica um evento em um canal, ao qual uma ou mais tarefas de periféricos podem se inscrever. Isso desacopla os publicadores dos assinantes e se adapta às arquiteturas Nordic mais recentes, com vários domínios. Quando um sinal precisa atravessar domínios de alimentação, uma ponte PPI pode transportar os canais DPPI compatíveis entre eles.
| Critério | PPI | DPPI |
|---|---|---|
| Modelo de configuração | O software associa a um canal um ponto de evento e um ou mais pontos de tarefa. | Os periféricos que publicam eventos e as tarefas assinantes selecionam um canal em comum. |
| Tipo de conexão | Roteamento explícito entre pontos de evento e tarefa. | Roteamento por publicação/assinatura. |
| Um evento, várias tarefas | Usam-se vários canais ou o ponto de tarefa fork de um canal. | Várias tarefas assinantes podem se inscrever no mesmo canal publicado. |
| Contexto típico de hardware | Dispositivos Nordic mais antigos compatíveis com PPI, incluindo muitos da família nRF52. | Dispositivos Nordic mais recentes que implementam o sistema de eventos distribuídos. |
| Capacidade de execução | Não executa instruções nem processa dados. | Não executa instruções nem processa dados. |
Casos de uso de hub de sensores em smartwatches¶
Em um hub de sensores típico de smartwatch, comece com periféricos I2C/SPI padrão, DMA, temporizadores e mecanismos de despertar de baixo consumo. Depois, classifique a necessidade:
- Amostragem de rotina: por exemplo, um RTC ou temporizador expira, inicia uma tarefa oferecida por um periférico padrão e notifica a CPU ao concluir ou detectar um limite. Nas plataformas Nordic, esse padrão de evento para tarefa existente é adequado ao PPI nos dispositivos mais antigos e ao DPPI nos mais recentes; não requer um programa PIO nem PTM.
- Protocolo elétrico personalizado: se um sensor exigir uma forma de onda, largura em bits ou temporização não padrão que I2C/SPI não consiga oferecer, o PIO é mais adequado para implementar o protocolo diretamente nos pinos.
- Fluxo personalizado de sensor: se uma transação precisar aguardar vários gatilhos, controlar vários sinais de E/S, transferir pequenos blocos de dados, acessar registradores e coordenar várias etapas, a PTM é mais adequada no SF32LB57x. Ela pode notificar a CPU em marcos definidos.
PPI/DPPI, PIO e PTM não são, portanto, alternativas concorrentes que possam ser classificadas simplesmente como melhores ou piores. Cada uma atende a uma camada diferente: conectar eventos, implementar protocolos em nível de pino ou automatizar tarefas periféricas. No SF32LB57x, comece pelos periféricos padrão e escolha a PTM somente quando a temporização ou o fluxo de trabalho exigido ultrapassar os recursos deles.
Referências: definições de instruções PTM da SiFli, datasheet do RP2040, especificação PPI da Nordic e sistema de eventos DPPI da Nordic.
Orientações de projeto¶
Limites de temporização e energia: A temporização das instruções em nível de ciclo não limita a duração de toda a transação. Acessos AHB, espera pela conclusão do DMA e eventos externos podem introduzir atrasos variáveis. Mantenha ativos os clocks e domínios de alimentação necessários à PTM, à memória e aos periféricos. A CPU estar inativa não significa que a PTM funcione em todos os modos de suspensão do SoC. Meça a energia total, incluindo os clocks mantidos ativos e o custo do despertar, e compare com uma implementação baseada em periféricos padrão.
Alocação de recursos: No SDK v2.5.1, o driver de display DPI sem memória de quadro (RAMless) para SF32LB57x usa o recurso identificado no SDK como “PTM core 0”, sua TCM, o evento 0, a interrupção associada e um canal DMA alocado. Esse identificador do SDK não permite deduzir a quantidade de núcleos PTM físicos. É um exemplo concreto de acesso ao barramento e coordenação do DMA, não uma alocação que possa ser reutilizada livremente. Não sobrescreva recursos de um driver ativo. Defina a responsabilidade pelo acesso aos buffers entre CPU e DMA e faça a manutenção de cache quando necessária.
Primeiro confirme se o dispositivo escolhido é um SF32LB57x e se a documentação da variante contempla os recursos PTM necessários ao projeto. Considere usar a PTM quando várias destas condições forem verdadeiras:
- a tarefa se repete com frequência suficiente para que executá-la pela CPU desperdice energia ou reduza a margem de temporização;
- exige temporização determinística em torno de bordas de E/S ou respostas a gatilhos;
- usa uma interface personalizada que não é bem atendida pelos periféricos padrão;
- pode se beneficiar de transferências de dados assistidas por FIFO/DMA;
- pode ser descrita como uma máquina de estados compacta ou sequência de tarefas;
- o firmware só precisa ser notificado em pontos relevantes.
Evite usar a PTM quando:
- um periférico padrão já implementa o protocolo de forma adequada;
- a tarefa pertence à lógica de aplicação de alto nível e exige muitos desvios;
- a temporização é flexível o suficiente para que interrupções convencionais ou tarefas de RTOS sejam mais simples;
- a equipe de software ainda não dispõe do suporte do SDK, de exemplos ou das ferramentas necessárias para o programa PTM.
Um bom projeto com PTM começa separando o trabalho determinístico das decisões da aplicação. Deixe a temporização, as transferências curtas de dados e as reações a eventos com a PTM. Mantenha no firmware as decisões do produto, a política de tratamento de erros, os buffers grandes e o controle de estados complexos.
Principais conclusões¶
- O guia de hardware do SF32LB57x documenta um bloco PTM com 16 canais; para outras famílias, consulte a documentação de cada dispositivo.
- Confirme os recursos PTM implementados no dispositivo e no SDK escolhidos.
- A PTM pode executar instruções compactas personalizadas a partir da TCM da PTM ou do barramento do sistema.
- A PTM oferece controle de E/S, acesso ao barramento e a registradores, operações com dados, esperas, atrasos, FIFO/DMA, interrupções e eventos internos.
- A PTM é útil para comportamentos periféricos personalizados e determinísticos que ficam entre o hardware de função fixa e o firmware convencional.
- Conceitualmente, a PTM se aproxima do PIO do RP2040, mas tem integração ao sistema e escopo de tarefas mais amplos.
- Em projetos com SF32LB57x, a PTM pode ser um diferencial arquitetural quando a documentação do dispositivo escolhido confirmar os recursos PTM necessários. Ela é especialmente útil para sensores, displays e atuadores personalizados, adaptação de protocolos e automação de periféricos com pouca intervenção da CPU.
Última atualização: