Il passaggio di messaggi può essere utilizzato per una ridondanza della CPU e un costrutto di bilanciamento del carico

9

Nel bare metal o nei sistemi integrati di tipo RTOS minimo con più processori è possibile avere un programma identico in esecuzione su ciascun processore che utilizza l'interfaccia Message Passing Interface (MPI) per fornire bilanciamento del carico e ridondanza anche in caso di guasto del processore? Come una macchina a stati che modifica le azioni eseguite dalle altre CPU in base ai messaggi passati, ad esempio chiedendo a un altro processore di prendere in consegna parte del ciclo del sistema per il bilanciamento del carico o l'invio di messaggi periodici vivi e ricordando a quale CPU è responsabile fino a Ridondanza della CPU.

In questo diagramma di esempio le parti effettive del ciclo completo del sistema che sono "aperte" potrebbero essere sistemi distinti. Non ci può essere cooperazione solo la possibilità di aprire e / o chiudere parti del ciclo completo del sistema in esecuzione su ciascuna CPU in una sorta di multiprocessing asimmetrico molto primitivo. La "migrazione del processo" a un'altra CPU verrebbe attivata da una richiesta di un'altra CPU per aprire quella parte del loop di sistema dopo la quale la CPU richiedente chiudeva la sua parte, o una mancanza di risposta da un'altra CPU interrogata se in vita per un certo periodo di tempo .

Èstatopropostocomesoluzioneperilpotenzialeerroredelprocessoreesoluzioneperilbilanciamentodelcaricopoichénonèpossibileeseguireilportingdiunsistemaoperativoembeddedpereseguirerealmentemultiprocessingsimmetricooasimmetricosullaschedapersonalizzata,esembrateoricamentepossibile,maideadidesignincredibilmentepovera.Inoltre,nonsonostatoingradoditrovareschemioalgoritmidiprogettazioneperl'utilizzodelmessaggiochepassainquestomodo.

Qualchebackgroundimportanteperledecisionidiingegneriadelsoftware:unprogettoCubeSatperstudenti(nonclassificatooperunaclasse),abbiamounpiccoloteamdisvilupposoftwareconstudentiperlopiùgiovaniconpocaonessunaconoscenzadellaprogettazionedeisistemioperativi.Pervarieragioninonpossiamofarenessunadelletantesoluzionidelmondorealedicuiholetto.Anchesesembrapossibilechesuonicomeseintroducesserotroppacomplessitàperilteam,eancheseciòpuòesserefattocauseràunterribileprogettocheporteràaqualcheproblemachetrasformailCubeSatinunarocciaorbita.

Nonsononemmenosicurochesaremmoingradodiimplementareilpassaggiodeimessaggiinunmodoabbastanzaaffidabileperlagestionedellospazio,nonsonostatonemmenoingradoditrovarealcunprotocollodicomunicazioneprontoperlaproduzionechepossaessereusatopertrasmetteremessaggisuunbusconunOSometallonudocomeabbiamobisogno.Masonoanchecuriosodisaperesequestasoluzionepropostaperlamigrazionedeiprocessi,laridondanzadellaCPUeilbilanciamentodelcaricoèanchefattibileperunsistemacriticodisicurezza.SembrachepotrebbeportareaunostatoincuidueCPUeseguonolostesso"Processo" o parte del ciclo del programma se uno si sveglia che sarebbe difficile da rilevare.

    
posta 8bit.wappen 29.10.2016 - 21:40
fonte

1 risposta

2

Domande eccellenti perché in realtà ho lavorato su questo argomento a metà degli anni '90. I veicoli spaziali sono costosi ed è difficile modificare il software una volta in orbita. Ho pensato a una variante di questo problema quando ho pensato a come le risorse del software spaziale potrebbero essere riallocate in base al cambiamento dei requisiti delle missioni. Per quanto abbiamo preso in laboratorio (VxWorks):

  1. Stimare il carico di attività essenziale per ciascun processore in base ai requisiti.
  2. Stimare il carico di attività per il set di attività della missione secondaria. Questa è la nuova configurazione desiderata basata sulla fornitura delle attività necessarie per processore richieste per soddisfare i requisiti di missione più importanti. Fondamentalmente ciò che non puoi vivere senza.
  3. Per ogni processore, ora abbiamo un modello di incarico di missione principale e le relative varianti basate su altri stati di elaborazione che potremmo dover passare il più rapidamente possibile. Questo è un adattamento pianificato semplice. Niente di speciale, solo diversi insiemi di modelli di tasking che inseriscono e rimuovono alcuni stimoli. Il bilanciamento del carico nei miei esperimenti era essenzialmente pianificato. Abbiamo usato la pianificazione RMA di base per questa operazione. Fondamentalmente si tratta di un grande contesto che attiva un livello di sistema a livello di sistema a livello di sistema.

Aggiornamenti del programma sulla stazione sotto un RTOS.   In pratica, inserisci una nuova serie di attività, collega la rete della coda e riavvia il flusso di dati.
  Quindi, in questa semplice implementazione, sospendiamo o rimuoviamo alcuni compiti e permettiamo agli altri di funzionare. Lo abbiamo preso un po 'oltre in quella che abbiamo chiamato la tecnica del "trapianto di cuore". Questo era per gli aggiornamenti del software della stazione. Potremmo disconnettere e reindirizzare le reti di code all'interno del modello di compito. Fondamentalmente disconnetti l'attività ed eliminala se lo desideri, elimina le code e ricollega la nuova attività (cuore) e le arterie (rete in coda). Abbiamo fatto un po 'di tempo a giocare nel 1995/96. Non volevo solo la possibilità di aggiungere funzionalità ma di rimuovere quella non necessaria poiché la memoria è una risorsa molto limitata.   Non so molto di MPI, non l'ho mai usato. È deterministico? Usando la teoria dell'informazione, non hai bisogno di molto per inviare un segnale keep-alive. Usa i bit minimi. Le informazioni più comuni come "keep alive" richiedono solo un bit, vero o falso. Gli eventi che si verificano con una probabilità molto più bassa richiedono più bit da rappresentare. Elimina il sovraccarico del software che puoi. Segui il principio KISS (Keep It Simple..Stupid!).

Ora la protezione dalle radiazioni di qualche tipo. Progetto studentesco significa probabilmente volare CMOS. Almeno metterei i controlli CRC in memoria ed eseguire un watchdog per catturare errori come la radiazione di hangup fa cose strane all'elettronica. Gli effetti di sconvolgimento a singolo evento possono essere mitigati usando CRC in memoria. Latch-up richiede un reset di accensione.

Suggerirei di provare qualcosa come FreeRTOS e vedere quali caratteristiche puoi piegare alla tua volontà. Lo spazio è un ambiente molto stimolante. Divertiti.

    
risposta data 25.05.2017 - 09:52
fonte

Leggi altre domande sui tag