Multiprocessing asimmetrico (AMP)
Altre info
- Tipo
- Framework
- Licenza
- BSD-3-Clause
- Codice sorgente
- github.com/OpenAMP
- Sito ufficiale
- openampproject.org
Più core su un unico chip, ciascuno con il proprio programma e il proprio sistema operativo, invece di condividerne uno solo.
Nel multiprocessing simmetrico (SMP) un solo sistema operativo considera tutti i core intercambiabili e sposta i thread da uno all'altro a piacimento. L'AMP fa il contrario: ogni core vive nel proprio mondo. Il caso da manuale è un SoC come l'STM32MP1 o l'NXP i.MX 8M, in cui un Cortex-A esegue Linux mentre un Cortex-M vicino esegue un RTOS o codice bare-metal. Linux gestisce rete, file system e display; il core microcontrollore gestisce il ciclo di controllo del motore, che non tollera che lo scheduler si conceda una pausa.
I core condividono memoria e controller degli interrupt, ma nient'altro, quindi la cooperazione va messa nero su bianco: chi possiede quale periferica, a chi appartiene quale RAM, come passano i messaggi. È il compito per cui esistono RPMsg e OpenAMP. Il vantaggio è un comportamento real-time senza rinunciare a Linux; il prezzo è che un bug può ora consistere in due programmi, ciascuno corretto preso singolarmente.