Please enable JavaScript.
Coggle requires JavaScript to display documents.
SERT, Algoritmi non ottimali, 1- Intro Embedded, 2 - Intro Real Time, 3 -…
-
Algoritmi non ottimali
Rate Monotonic RM
- Priorità proporzionale alla frequenza, dove frequenza = 1/periodo.
- Poichè dipende da un parametro fisso come il periodo, è di tipo priorità fissa a livello di task.
- Graficamente si nota una ripetitività, ovvero se T1 ha frequenza maggiore di T2, troveremo sempre T2 eseguito dopo T1, mai il contrario.
Deadline Monotonic DM
- Inversamente proporzionale alla scadenza relativa.
- Se ho a che fare con scadenze implicite, quindi coincidenti col periodo, diventa RM. Questo però è un sottocaso di deadline proporzionale al periodo.
Ovvero ho coincidenza quando
scadenza = costante x periodo
e il caso sopracitato si verifica se costante = 1
Sono totalmente uguali?
- No, DM è migliore!
Esistono casi in cui DM trova la soluzione ed RM no, ma non il contrario!
1- Intro Embedded
- Esso è un sistema programmabile non riprogrammabile dall'utente, cioè un'applicazione specializzata.
- Esso interagisce con l'ambiente circostante, cioè è immerso (embedded)
- L'interfaccia utente non è quella di un calcolatore (o è invisibile)
Quale è il suo scopo?
Fornire una struttura di supporto al funzionamento di una applicazione, con alta interazione con mondo esterno, ma con comandi non per forza selezionati da un umano.
Un esempio è nel mondo dell'auto, con Electronic Control Unit ECU , ad esempio per alzare o abbassare il finestrino.
Cosa cambia da un calcolatore?
Il calcolatore è versatile, si adatta a vari ambiti, e per farlo si punta ad un incrocio tra costi e hardware a disposizione.
Il sistema embedded svolge un singolo compito, e quindi può farlo in maniera più ottimizzata, hanno inoltre meno standard, poichè esistono numerosi classi specifiche.
Cosa fa un sistema embedded?
- elabora i segnali esterni
- comunica tra mondo esterno ed interno
- memorizza l'informazione
NB: a seconda del contesto, si possono fare delle ottimizzazioni, ad esempio un sensore fotografico viene usato sia su una reflex che su una webcam!
Quali sono le sue caratteristiche?In ambito commerciale ci interessiamo a:
- costo finale, molto incisivo sulle scelte
- time to market, non posso venderlo troppo tardi
time to live, quanto dura il prodotto?
volume, fortemente dipendente dallo scopo (chip sottocutaneo vs chip nell'aereo)
In ambito hardware ci interessiamo a:
- interfacce di comunicazione: incidono molto sul prezzo finale
- interfacce utente: pulsanti, led, ...
- consumo energetico: quanto dura il prodotto?
dimensioni/peso, come per il volume.
In ambito software guardiamo a:
- capacità di calcolo, comunicazione e memorizzazione
- LOC, quante ne può memorizzare il prodotto?
- QoS, molti sistemi embedded sono impegnati in campi come la sicurezza (es airbag)
- Aggiornamenti, per i bugfix.
DependableUn concetto forte espresso finora riguarda il fatto che un sistema embedded svolge un ruolo chiave, e per questo altri componenti dipendono da lui.
Il sistema dependable deve garantire nel miglior modo aspetti come:
- affidabilità, probabilità di guasto?
- manutenibilità, tempo per ripararlo?
- disponibilità, probabilità che funzioni? (influenzato dai primi due fattori)
- safety, guasto non deve recare danno a persone (es: tolgo sensore laser dal pc, non devono poterlo usare)
- sicurezza, resistenza a usi non autorizzati (es: non devo poter togliere il laser dal pc in maniera semplice).
2 - Intro Real Time
Disclaimer: quando parliamo di processore, lo trattiamo in ambito RT, cioè 'generalizzato', non intendiamo (solo) quello del pc.Definizione sistema RT
E' un sistema progettato per operare entro parametri temporali definiti, ed opera correttamente solo se per una configurazione di input produco l'output corretto entro questi tempi definitiQual è il legame tra embedded e real time?
- Spesso uno include l'altro, e viceversa!
- Molti sistemi embedded sono safety-critical (e richiedono un certificato di garanzia da qualche ente), devono operare in tempi specifici (real time), il tutto con risorse limitate (embedded).
Un esempio è l'airbag, deve operare in un tempo preciso, nè prima, nè dopo!Inoltre, devo tener conto di tutte le caratteristiche embedded (di hardware, commerciali, software), e questi aspetti vengono portati avanti in parallelo, cioè non posso sviluppare hardware senza pensare al software!
Teoria della schedulazione rt
Poichè devo rispettare delle attività in tempi limitati, potrei pensare di aumentare le risorse hardware (più velocità e potenza), ma spesso esistono altri vincoli(di costo o dimensioni) molto stringenti.
- La teoria della schedulazione si basa sull'idea di non superare una certa soglia di utilizzo totale, per evitare un carico eccessivo.
Quanti sistemi real time esistono?Possiamo identificare le classi di:
- sistemi di controllo digitale, quasi sempre basati su feedback control loop, cioè leggo i dati, li confronto con legge di controllo, produco output.
La frequenza può essere costante o a frequenze diverse, ma sempre con tempistiche precise.
esempio: controllo di un elicottero.
Alla base del feedback control loop dobbiamo avere campionamento dati accurato, che forniscono un quadro completo, e con una dinamica del sistema nota con sufficiente approssimazione. Questo porta a leggi di controllo interne ed esterne, le prime sono leggere ma non precise, le seconde pesanti ma precise.
- sistema di controllo ad alto livello, basati su gerarchie di sistemi di controllo, i più bassi sono embedded, i più alti general-purpose
esempio: un pc (general purpose) controlla lo stato di vari letti con vari pazienti (i quali hanno sistemi embedded per il controllo dei parametri vitali).
- processamento di segnali, hanno parametri temporali stringenti, come i radar.
- basi dati temporali, anche essi hanno limiti temporali, poichè altrimenti i dati sono inutili (vedi mercato finanziario).
- applicazioni multimediali, ad esempio il sync audio/video!
Ridefinisco il sistema RTUn sistema è un mapping tra input e output.
Un sistema real time è un sistema basato sulla correttezza logica del dato + tempistiche per avere tale dato.
- "Veloce", "Immediato", etc NON SONO tempistiche, una tempistica è un delta di tempo preciso.
Con quale tasso opera un sistema rt?
- Puramente ciclico, periodico.
- Perlopiù ciclico, alcune operazioni eseguite più di rado (es. atterraggio rispetto al volo stesso).
- asincroni e perlopiù predicibili, non periodici, come i segnali radar, predicibili (se oggetto fermo posso prevedere non si muoverà per un pò).
- asincroni e impredicibili, non so dove/quando/, ma quando accadrà, dovrò operare in un certo modo (es: airbag).
Job, Task, Processore, Risorsa
- Un job è un'unita di lavoro schedulabile ed eseguibile dal sistema rt. Può essere processo, invio msg, lettura file etc, quindi il concetto di "Unità" dipende dal contesto.
- Un task è un insieme di job correlati, con scopo in comune.
esempio: il task è 'fare una multa', composto dai job 'prendi velocità', prendi 'targa', 'check velocità', assegna multa.
- Un processore è un componente attivo del sistema rt che esegue il job. Componente attivo può essere una cpu, un canale radio, un disco etc..
- Una risorsa è una componente passiva la cui disponibilità è necessaria per eseguire un job.
La differenza tra processore e risorsa?Il processore ha una velocità, incide sulle tempistiche, la risorsa no, di lei ci interessa solo presenza/assenza.Una risorsa può diventare processore?
- Dipende dal contesto, esempio:
una cpu è processore, la ram incide sui tempi di risposta? se nel contesto preso in caso si allora è un processore, altrimenti è una risorsa.
Vincoli temporali nei jobDefiniamo:
- istante di rilascio, il job diventa disponibile per l'esecuzione. Non è detto venga ri-eseguito subito.
- scadenza/deadline, tempo entro il quale il job deve aver completato l'esecuzione.
- tempo di risposta del job, se job viene rilasciato dopo 5s, e ha completato l'operazione in 3s, ci ha messo 2s per rispondere.
- scadenza relativa è massimo tempo di risposta ammesso.
- scadenza assoluta è istante rilascio + scadenza relativa.
-
-
-
Architettura ARM
- ARM è un microprocessore molto diffuso, usato dove sono richieste capacità di calcolo, comunicazione complessa e grande memoria.
- Nel mondo embedded è molto diffuso, poichè efficiente e scalda poco, inoltre si è rapidamente evoluta, avendo diverse ramificazioni a seconda dello scopo.
- La famiglia Cortex, in particolare, si adatta in:
- Cortex A: per smartphone
- Cortex R: real time
- Cortex M: per microcontrollori (es pacemaker)
- Anche se l'insieme di istruzioni macchina è sostanzialmente lo stesso, queste famiglie non sono per forza intercambiabili.
Caratteristiche ARM 32 bit
- L'architettura è RISC a 32 bit, operazioni effettuate sui registri (solo load e store per accedere in memoria).
- L'accesso della memoria è allineato
- La memorizzazione è Little Endian o Big Endian.
Noi useremo Little, vuol dire che quando immagazziniamo ad esempio 4 byte, il primo che immagazziniamo è quello più a sinistra, e l'ultimo è quello più a destra).
- esempio:
| 01 | 23 | 45 | 67 | -> L.E. -> | 67 | 45 | 23 | 01 |
- Parlando di esecuzione vera e propria:
- molte istruzioni sfruttano i flag
- No shift
- supporto moltiplicazione, non per forza per la divisione
- Schemi di indirizzamento (program counter, auto incremento...) ereditati da CISC
- Dispone di 31 registri a 32 bit, ad ogni istante vedo solo 16 registri (da r0 a r15).
- Ovviamente ci sono anche registri di stato come cpsr :Current Program Status Register con bit di condizione e di controllo
- Nel 64 bit non ho più istruzioni condizionali (tranne salti condizionali)
Modi di esecuzione Aarch32
- In ogni istante il processore ARM è in uno dei seguenti stati:
- User : app normali
- System: processi privilegiati
- FIQ: interruzioni veloci (non abilitabili nel SOC)
- IRQ: interruzioni normali
- Supervisor: codice Kernel
- Abort: gestori di fault
- Undefined: emulatori di coprocessori, quando ho istruzione non definita da gestire.
-
-
-
Perchè EDF è ottimale?
- Come detto prima, riesce a trovare sempre una schedulazione fattibile (che rispetta scadenze) in caso di:
- job interrompibili
- jobindipendenti
- a singolo processore
- schedulazione esistente
Dimostrazione
- L'idea è che ogni schedulazione fattibile può essere trasformata in una schedulazione con EDF.
Per dimostrarlo mi metto in una condizione avversa rispetto EDF.
- Prendo J(i) < J(k), e d(i) > d(k)
(leggasi: J(i) schedulato prima di J(k) ma J(k) scade prima!). Quindi sto violando EDF (che vuole per primi i job/task con scadenze vicine).
- Consideriamo che il rilascio di J(k), cioè r(k), viene prima della schedulazione di J(i).
(leggasi: io voglio andare contro EDF, quindi mi metto in una condizione in cui J(k) arriva prima di J(i), J(k) scade prima di J(i). EDF farebbe partire J(k), io forzo J(i), andando contro EDF!).
- Sfruttando l'interrompibilità dei job, mi basta scambiare J(i) e J(k) per tornare in condizioni EDF.
Basta questo?
- No, perchè se nelle condizioni iniziali mettessi degli intervalli idle, scambiando i job questi intervalli rimarrebbero idle, che va contro le caratteristiche di EDF (violo la proprietà work conserving). Quindi devo anticipare l'esecuzione di questi job per eliminare questi casi.
Algoritmi ottimali con job non interrompibili?
- Essendo i priority driven (tra le varie cose)
work conserving, senza interrompibilità perdo il loro essere ottimali.
esempio banale su EDF
- Ho 3 job che arrivano a tre istanti diversi
(J1 < J2 < J3) ma scadenze assolute (d1 < d3 < d2).
Poichè non iterrompibili, quando arriva J1 lo consumo, poi J2 e poi J3, ma cosi facendo non rispetto la scadenza di J3.
- La soluzione sarebbe rendere il processore idle nel lasso di tempo J3-J2, ovvero aspetto che arrivi J3 in modo da far partire lui invece che J2. Ma quindi sto violando la caratteristica di work conserving! (i Priority driven non possono lasciare vuoti intenzionali)
Esercizi da pagina 5
Osservazione: in tutti gli esercizi i "checkpoint" (chiamati cosi da me, ovvero i punti in cui devo controllare eventuali context switch) sono i momenti in cui job termina o inizia nuovo periodo per un job.
-
-
-