Introduzione: Il ruolo dell'istruzione impostare l'architettura in sistemi embedded automobilistici

I veicoli moderni non sono più assemblati puramente meccanici; sono reti altamente sofisticate di sistemi incorporati che gestiscono tutto, dai tempi del motore e dai cambi di trasmissione all'infotainment, dall'assistenza avanzata del driver e dagli aggiornamenti del firmware over-the-air.

Questo articolo fornisce uno studio dettagliato dei set di istruzioni CISC nei sistemi integrati per il settore automobilistico, focalizzandosi sulla loro applicazione nelle unità di controllo del motore (ECU), esamina i punti di forza architettonici del CISC, le specifiche esigenze degli ambienti automobilistici, un'implementazione del mondo reale e le sfide in corso che gli ingegneri devono affrontare.

L'architettura CISC: un Primer

CCISC[]] architetture, pionieristiche negli anni '70 e '80 da aziende come Intel, Motorola e IBM, sono definite da un ampio e versatile set di istruzioni.Le istruzioni individuali possono eseguire operazioni multi-step, caricando dati dalla memoria, eseguendo algoritmi aritmetici e memorizzando il risultato, in un unico opcode.

Le caratteristiche principali di CISC includono:

  • Lunghezza di istruzioni variabili[[[]: Le istruzioni vanno da 1 a 15 byte (su x86, l'esempio più famoso del CISC), consentendo codice denso per la memoria di piccolo programma.
  • Modalità di indirizzamento plesso[: indirizzamento diretto, indiretto, indicizzato e di base+offset consentono l'accesso flessibile dei dati senza molteplici operazioni esplicite.
  • Controllo microprogrammato[[]: La maggior parte dei processori CISC decodifica le istruzioni complesse in una serie di micro-operazioni eseguite da una ROM integrata, semplificando la logica di controllo ma aggiungendo latenza per ogni istruzione.
  • Conto di istruzioni per compito[[]: Poiché ogni istruzione fa più lavoro, i programmi scritti per CISC tendono ad essere più piccoli dei loro equivalenti RISC, un vantaggio significativo quando la memoria on-chip è costosa.

Al contrario, RISC[] architetture (ARM, MIPS, RISC‐V) utilizzano una lunghezza di istruzioni fissa (tipicamente 32 bit), un piccolo insieme di istruzioni uniformi, e un design di caricamento-store dove gli accessi alla memoria sono separati da operazioni aritmetiche.

Storicamente, CISC ha dominato i mercati del desktop e del server attraverso il lignaggio x86, mentre RISC fioriva in domini mobili ed incorporati. Tuttavia, il confine ha sfocato negli ultimi decenni: i moderni processori x86 traducono internamente le istruzioni CISC in micro-ops tipo RISC, e le ultime architetture di ARM incorporano alcune caratteristiche CISC-like (ad esempio, istruzioni di carico e di carico multiplocuto di ARM).

Sistemi integrati automobilistici: requisiti e vincoli

Prima di immergersi nello studio del caso, è essenziale capire le esigenze uniche che le applicazioni automobilistiche pongono su processori incorporati.

  1. Il determinismo a tempo reale[[]: I loop di controllo del motore, la frenata antibloccante e la distribuzione dell'airbag devono essere completati in serrate finestre di tempo – spesso microsecondi.
  2. Alta affidabilità e sicurezza[[]: I sistemi automobilistici devono operare senza problemi per decenni sotto temperature estreme, vibrazioni e interferenze elettromagnetiche. ISO 26262 (sicurezza funzionale) manda una validazione rigorosa sia dell'hardware che del software.
  3. Efficienza del potere[]: Mentre l'alternatore del motore genera energia elettrica, la dissipazione del calore è limitata. I processori devono consumare energia minima per evitare il raffreddamento attivo, che aggiunge i costi e riduce l'affidabilità.
  4. Densità del codice[: La memoria flash On-chip è costosa e scarsa in molti ECU. Le immagini del programma più piccole riducono il costo di BOM (bill of material) e possono consentire l'uso di microcontroller più economici.
  5. Long lifecycles del prodotto[[]: Una piattaforma del veicolo funziona spesso per 10-15 anni, richiedendo processori e strumenti di sviluppo per essere disponibile e supportato per decenni.

Questi vincoli modellano il processo di selezione ISA. RISC in genere eccelle all'efficienza energetica e alle velocità di clock elevate, mentre CISC può offrire una densità di codice superiore e talvolta un'esecuzione più veloce di operazioni complesse, come gli algoritmi di controllo multi-step utilizzati nella gestione del motore.

Case study: CISC nelle unità di controllo del motore

L'unità di controllo del motore (ECU) è uno dei sottosistemi più computazionalmente intensivi di un veicolo. Deve leggere una dozzina o più sensori (posizione di baracco, livelli di ossigeno, temperatura di immissione dell'aria, angolo di zitta), calcolare tempi di iniezione e durata del carburante, anticipo della scintilla e velocità di emissione del liquido, quindi attivare le uscite corrispondenti - tutto all'interno della finestra di un ciclo di motore singolo.

Dettagli di attuazione

Un produttore automobilistico europeo leader – qui indicato come “AutoTronic AG” per la riservatezza – sceglie un microcontrollore CISC a 32 bit della famiglia Renesas RH850 per i suoi ultimi ECU diesel e benzina. La serie RH850 è costruita intorno a un nucleo CISC proprietario che offre un ricco insieme di istruzioni tra cui il controllo moltiplicato-accumulato (MAC), il controllo aritmetico saturo e il cambio a ciclo singolo.

Lo stack software è stato sviluppato in C con un assemblaggio a mano per cappi critici. Il team ha sfruttato il codice compatto CISC per adattarsi a uno stack completo di gestione del motore OBD‐II conforme entro 512 kB di Flash, un'impresa impressionante che avrebbe richiesto almeno un Flash di 1 MB con un core RISC comparabile.

  • Macro-operazioni per i loop di controllo[]: L'istruzione [ (multiply‐accumulate) ha eseguito un completo rubinetto del filtro FIR in un'unica operazione, riducendo sia la dimensione del codice che il tempo di esecuzione per il raddrizzamento del sensore.
  • Memory‐to-memory arithmetic[[: La capacità di caricare un valore del sensore, eseguire un'operazione aritmetica e memorizzare il risultato in un registro di controllo con una istruzione taglia il numero di cicli di codice fetch-di di quasi il 40% nel circuito di controllo principale.
  • Incenso automatico e decremento di indirizzo[[]: L'accesso a array di tabelle di calibrazione o di compensazione è stato fatto senza esplicito puntatore aritmetico, riducendo la pressione binaria e riducendo la pressione del registro.

Risultati delle prestazioni

L’analisi dei tempi di esecuzione (WCET) di CISC ha dimostrato che il 90% dei cicli del circuito di controllo è stato consumato dalle tre routine più complesse: tempi di iniezione del carburante, anticipo di accensione e monitoraggio della coppia. Grazie al set di istruzioni denso, l’intero ciclo si inserisce in un segmento di memoria strettamente accoppiata (TCM), eliminando le mancanze della cache che potrebbero introdurre jitter.

Ulteriori vantaggi osservati:

  • Consumi di potenza ridotti[: Per un determinato algoritmo, il nucleo CISC eseguito circa il 30% meno istruzioni di un nucleo RISC equivalente alla stessa velocità di clock. Questo tradotto direttamente in potenza dinamica inferiore (il prodotto di capacità, tensione e fattore di attività) e una riduzione del 12% del core medio di corrente disegnata.
  • Tempo di sviluppo più veloce[: La natura di alto livello delle istruzioni CISC ha reso più facile per gli ingegneri scrivere e verificare le espressioni di controllo complesse in C. Compiler back-ends per la RH850 aggressivamente modellare-match tali espressioni per utilizzare singole istruzioni CISC, riducendo la necessità di ottimizzazione manuale del montaggio.
  • La memoria del programma di maggiordomo[[]: Il binario finale era di 570 kB (comprese le routine diagnostiche e le calibrazioni), rispetto ad un'implementazione stimata di 780 kB per RISC, che ha permesso al produttore di utilizzare un dispositivo Flash a basso costo, risparmiando circa $1,20 per ECU, significativo ad un volume di produzione di 2 milioni di unità all'anno.

Altre applicazioni automobilistiche di CISC

Mentre lo studio caso ECU è il più importante, i processori CISC appaiono in diversi altri domini automobilistici dove la densità di codice o la matematica complessa sono fondamentali.

Sistemi di assistenza avanzata (ADAS)

I moduli ADAS basati sulla visione, come l'avvertimento della lane-departure e il riconoscimento del segnale del traffico, hanno beneficiato della capacità di CISC di gestire i dati e le operazioni di matrice dei pixel di lunghezza variabile.

Unità di controllo delle emissioni (TCU)

Il controllo automatico della trasmissione comporta la guida a banda larga, la logica a turni e il controllo della frizione a coppia converter. I TCU richiedono una gestione rapida dell’interruzione e la capacità di eseguire algoritmi PID a ciclo chiuso con una minima sovraccarico. Diversi fornitori di Tier‐1 utilizzano il NXP MPC5777C, un MCU CISC basato su architettura di potenza, precisamente per la sua combinazione di codice a corda e determini.

Infotainment e connettività

Nel dominio dell'infotainment, si sta sviluppando un passaggio da processori di applicazioni RISC puri (ad esempio, Qualcomm Snapdragon) a architetture eterogenee. Tuttavia, il sistema-on-chips (SoCs) utilizzato per la telematica e l'infotainment in-veicolo ASITES contiene spesso un'isola di sicurezza basata su CISC, un nucleo separato e indurito che gestisce le funzioni di “semplici su” come l'ingresso remoto, la gestione della batteria RRM,

Sfide e trade-off

Nonostante i vantaggi dimostrati nel caso ECU, CISC non è una soluzione universale per sistemi integrati nel settore automobilistico.

  • Aumentata complessità hardware[]: I core CISC richiedono più transistor per la ROM microcodice, la logica complessa del decoder e la previsione dinamica del ramo. Questo aumenta il costo del silicio e la perdita di potenza rispetto ad un core RISC più semplice.
  • Latenza di istruzioni variabili[[]: Poiché le istruzioni CISC possono eseguire un numero variabile di micro-operazioni, il conteggio del ciclo per istruzione non è uniforme. Questo rende più difficile garantire il tempo di esecuzione peggiore (WCET) senza un'analisi estesa e spesso richiede ai progettisti di sovraprovisione della velocità dell'orologio o di affidarsi a cache deterministiche.
  • Power leakage[[]: Il microcodice ROM e il file di registro più grande contribuiscono al consumo di energia statica. Nei moduli a batteria (ad esempio, ingresso senza chiave o ECU a giorno), anche un milliwatt di corrente statica può ridurre la durata del sonno-modo, un problema critico per i veicoli moderni che possono essere parcheggiati per settimane.
  • Compiler e la maturità degli strumenti[[]: Mentre i compilatori automobilistici per core CISC come Renesas RH850 sono maturi, spesso si inganno dietro gli ecosistemi ARM/RISC‐V in termini di passaggi di ottimizzazione e strumenti di analisi statica, che possono costringere gli ingegneri a misurare le prestazioni, diminuendo la produttività.
  • Disponibilità a lungo termine[[[]: Le piattaforme automobilistiche richiedono una fornitura garantita per un decennio o più. Le architetture basate su RISC come ARM hanno un'adozione diffusa su più fonderie, garantendo la continuità. CISC IP è spesso proprietaria di un singolo fornitore (ad esempio Renesas, NXP PowerPC), creando rischio di catena di fornitura se il fornitore interrompe la linea di prodotto.

Queste sfide significano che CISC è raramente scelto nei moderni modelli automobilistici a meno che non vi sia un chiaro e quantificabile vantaggio, la densità di codice più comunemente superiore per un budget di memoria molto stretto, o la necessità di una specifica istruzione complessa che riduce drasticamente il tempo di esecuzione rispetto ad una sequenza multi-step RISC.

Indicazioni future: CISC nell'era della guida autonoma e veicoli elettrici

Poiché l'industria automobilistica si orienta verso veicoli elettrici (EV) e guida autonoma, il ruolo del CISC sta subendo una trasformazione.

Architetture di calcolo eterogenee e di controllo del dominio

Le architetture di veicoli di prossima generazione consolidano la funzionalità in meno, più potenti controller di dominio. Ad esempio, il “Controllo di dominio di dinamica del veicolo” potrebbe gestire motore, trasmissione, frenatura e sterzo. In tali progetti, un cluster di RISC ad alte prestazioni (di solito ARM Cortex‐A o RISC‐V) gestisce il pesante numero-crunching per la fusione del sensore, mentre un core CI‐ve-brido agisce come supervisore di sicurezza e programma in tempo reale.

Controllo motore del veicolo elettrico

Gli inverter di trazione EV richiedono un controllo estremamente rapido (FOC) dei motori sincrono a magnete permanente. L'algoritmo di controllo comprende più passaggi trigonometrici e coordinate di trasformazione (trasformazioni di Cirke/Park) che sono naturalmente adatti alle istruzioni CISC-style “vector” (CSC-like) per i core RISC

Aggiornamenti di sicurezza e over-the-Air

Con l'aumento dei veicoli software-definiti, la densità di codice rimane preziosa perché le immagini di avvio sicure e il firmware di crittografia devono essere in grado di adattarsi a ROM limitata. La piccola impronta di codice CISC rende più facile l'implementazione di una crittografia robusta senza memoria esterna. Inoltre, alcuni microcontroller CISC offrono accelerazione hardware per la crittografia tramite estensioni di istruzioni dedicate, un'evoluzione naturale che rafforza il caso per CISC nei veicoli connessi.

Tuttavia, la crescente dominanza di RISC‐V come ISA aperto e allungabile potrebbe erodere la quota di mercato di CISC. Il design modulare di RISC‐V permette ai progettisti di aggiungere istruzioni personalizzate (ad esempio, per la manipolazione bit o la valutazione di moltiplici) che l’approccio di CISC‐Instruction denso e macro-ASIL-Multilimenta attivamente la sicurezza di mantenere il core semplice e la valutazione del futuro

Conclusioni

Questo caso di studio dimostra che i set di istruzioni CISC conservano una nicchia valida e preziosa nei sistemi integrati nel settore automobilistico, in particolare nelle unità di controllo del motore in cui la densità del codice e la capacità di eseguire complesse operazioni multi-step in un'unica istruzione riducono i costi, la potenza e il tempo di sviluppo.

Tuttavia, l'ecosistema automobilistico si sta spostando verso l'elaborazione eterogenea e gli ISA standard come RISC‐V. Gli ingegneri devono valutare CISC non come scelta predefinita, ma come strumento mirato per le attività di controllo ad alta densità, deterministiche. Quando l'applicazione richiede una compressione del codice profondo e dove il costo di ulteriori piattaforme di guida al silicio di CISC, l'architettura offre ancora.

Il takeaway chiave per gli architetti di sistema è quello di eseguire un'analisi disciplinata e quantitativa del budget della memoria, tempi di esecuzione peggiori, vincoli di potenza e rischio di supply-chain prima di impegnarsi a un ISA. L'eredità di CISC nel settore automobilistico è tutt'altro che eccessiva; continua ad evolversi accanto ai suoi omologhi RISC, assicurando che l'architettura giusta sia disponibile per le esigenze specifiche di ogni sottosistema.

Per ulteriori letture, fare riferimento alla descrizione ufficiale []Renesas RH850 Automotive MCU family[]] descrizione, che dettagli le caratteristiche CISC utilizzate in questo caso studio. L'articolo RISJSTOR su CISC vs. RISC in sistemi incorporati fornisce contesto sui tradeoff delle prestazioni.