IT201800003233A1 - Sistema di elaborazione, relativo circuito integrato e procedimento - Google Patents

Sistema di elaborazione, relativo circuito integrato e procedimento Download PDF

Info

Publication number
IT201800003233A1
IT201800003233A1 IT102018000003233A IT201800003233A IT201800003233A1 IT 201800003233 A1 IT201800003233 A1 IT 201800003233A1 IT 102018000003233 A IT102018000003233 A IT 102018000003233A IT 201800003233 A IT201800003233 A IT 201800003233A IT 201800003233 A1 IT201800003233 A1 IT 201800003233A1
Authority
IT
Italy
Prior art keywords
error
err
signal
memory
address
Prior art date
Application number
IT102018000003233A
Other languages
English (en)
Inventor
Roberto Colombo
Original Assignee
Stmicroelectronics Application Gmbh
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Stmicroelectronics Application Gmbh filed Critical Stmicroelectronics Application Gmbh
Priority to IT102018000003233A priority Critical patent/IT201800003233A1/it
Priority to EP19159273.2A priority patent/EP3534262B1/en
Priority to US16/289,425 priority patent/US11068331B2/en
Publication of IT201800003233A1 publication Critical patent/IT201800003233A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy

Description

DESCRIZIONE dell’invenzione industriale dal titolo:
“Sistema di elaborazione, relativo circuito integrato e procedimento”
TESTO DELLA DESCRIZIONE
Campo Tecnico
Le forme di attuazione della presente descrizione sono relative ai sistemi di elaborazione, come i microcontrollori, aventi associata una memoria.
Sfondo
La Figura 1 rappresenta un tipico sistema elettronico, come il sistema elettronico di un veicolo, comprendente una pluralità di sistemi di elaborazione 10, come sistemi embedded o circuiti integrati, per es., una FPGA (Field Programmable Gate Array), un DSP (Digital Signal Processor) o un microcontrollore (per es., dedicato al mercato automotive).
Per esempio, nella Figura 1 sono rappresentati tre sistemi di elaborazione 101, 102 e 103 connessi attraverso un sistema di comunicazione 20 adatto. Per esempio, il sistema di comunicazione può comprendere un bus di controllo del veicolo, come un bus CAN (Controller Area Network), ed eventualmente un bus multimediale, come un bus MOST (Media Oriented Systems Transport), connesso al bus di controllo del veicolo attraverso un gateway. Tipicamente, i sistemi di elaborazione 10 sono situati in differenti posizioni del veicolo e possono comprendere, per es., una Unità di Controllo del Motore (ECU, “Engine Control Unit”), una Unità di Controllo della Trasmissione (TCU, “Transmission Control Unit”), un Sistema Frenante Antiblocco (ABS, “Anti-lock Braking System”), moduli di controllo della scocca (BCM, “Body Control Module”), e/o un sistema audio multimediale e/o di navigazione.
La Figura 2 rappresenta uno schema a blocchi di un tipico sistema di elaborazione 10 digitale che corrisponde a uno qualsiasi dei sistemi di elaborazione 101, 102 e/o 103 menzionati in precedenza, come un microcontrollore.
Nella forma di attuazione considerata, il sistema di elaborazione 10 comprende almeno una unità di elaborazione 102, come un microprocessore, di solito l’Unità di Elaborazione Centrale (CPU, “Central Processing Unit”), programmata attraverso istruzioni software.
Nell’esempio considerato, il software eseguito dall’unità di elaborazione 102 è memorizzato in una memoria di programma non volatile 104a, come una memoria Flash o una EEPROM. Così, la memoria 104a è configurata per memorizzare il firmware per l’unità di elaborazione 102, in cui il termine firmware comprende sia il software di un microprocessore sia i dati di programmazione di un circuito logico programmabile, come una FPGA. Similmente, l’unità di elaborazione 102 può avere associate una o più memorie volatili 104b, come una memoria ad accesso casuale (RAM, “Random-Access Memory”), per es., una memoria statica ad accesso casuale (SRAM, “Static Random-Access Memory”) o una memoria dinamica ad accesso casuale (“Dynamic Random-Access Memory”), per es., per memorizzare risultati temporanei del programma eseguito dall’unità di elaborazione 102. In generale, ciascuna memoria 104a o 104b può essere integrata con l’unità di elaborazione 102 in un singolo circuito integrato, oppure la memoria può essere sotto forma di un circuito integrato separato e può essere connessa all’unità di elaborazione 102, per es., le piste di una scheda a circuito stampato.
Nell’esempio considerato, l’unità di elaborazione 102 può avere associate una o più risorse 106 ulteriori, come:
- una o più interfacce di comunicazione, come una interfaccia UART (Universal Asynchronous Receiver/ Transmitter), Bus SPI (Serial Peripheral Interface), I<2>C (Inter-Integrated Circuit), bus CAN (Controller Area Network), Ethernet e/o di debug; e/o
- uno o più convertitori analogico/digitali e/o digitale/analogici; e/o
- uno o più componenti digitali dedicati, come contatori e/o time hardware, o un coprocessore crittografico; e/o
- uno o più componenti analogici, come comparatori, sensori, come un sensore di temperatura, ecc.; e/o
- uno o più componenti a segnali misti, come un dispositivo di pilotaggio (“driver”) PWM (Pulse-Width Modulation).
La futura generazione di sistemi di elaborazione, in particolare microcontrollori dedicati alle applicazioni automotive, presenterà un notevole aumento della complessità, dovuto principalmente al numero crescente di funzionalità (come nuovi protocolli, nuove caratteristiche, ecc.) ed ai vincoli stringenti per quanto concerne le condizioni operative del sistema (come un consumo di potenza più basso, maggiore velocità e potenza di calcolo, ecc.). Per esempio, ci si aspetta che la complessità aumenti, in particolare nel contesto della prossima Car2X e del mondo della guida autonoma, perché la protezione e la sicurezza dei sistemi di elaborazione 10 diventeranno sempre più rilevanti.
Per questo motivo, le unità di elaborazione 10 dovrebbero essere atte a rilevare e/o correggere gli errori nei dati letti dalle memorie 104a e/o 104b, permettendo con ciò di adottare misure adatte al fine di evitare malfunzionamenti del sistema.
Sintesi
In considerazione di quanto precede, varie forme di attuazione della presente descrizione forniscono soluzioni atte a perfezionare il comportamento di un sistema di elaborazione, come un microcontrollore, in risposta a un errore nei dati letti da una memoria.
Secondo una o più forme di attuazione, uno o più degli scopi precedenti sono raggiunti per mezzo di un sistema di elaborazione avente le caratteristiche esposte specificamente nelle rivendicazioni che seguono. Le forme di attuazione concernono inoltre un relativo circuito integrato e procedimento.
Le rivendicazioni sono parte integrante dell’insegnamento tecnico della descrizione qui fornita.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un sistema di elaborazione comprendente un’unità di elaborazione, come un microprocessore atto a essere programmato attraverso istruzioni software.
In varie forme di attuazione, l’unità di elaborazione è disposta in modo da essere connessa a una memoria con rilevazione e/o correzione degli errori, in cui l’unità di elaborazione genera una richiesta di lettura per leggere dati dalla memoria, in cui la richiesta di lettura comprende un segnale di indirizzo che identifica l’indirizzo di una data area di memoria nella memoria. Generalmente, la memoria può essere integrata nel sistema di elaborazione, per es., in un circuito integrato, o può essere connessa esternamente al sistema di elaborazione. Per esempio, in varie forme di attuazione, la memoria può essere una memoria non volatile disposta per memorizzare il firmware per l’unità di elaborazione e/o una memoria ad accesso casuale disposta per memorizzare risultati temporanei dell’elaborazione dell’unità di elaborazione.
In varie forme di attuazione, il sistema di elaborazione comprende inoltre un circuito di trattamento degli errori. Specificamente, il circuito di trattamento degli errori è connesso alla memoria per ricevere un segnale di errore dalla memoria. Per esempio, il segnale di errore può contenere un codice di errore che indica se i dati letti dalla memoria contengono errori. Per esempio, il segnale di errore può comprendere una pluralità di bit, e il codice di errore del segnale di errore può indicare (almeno) che non si è verificato alcun errore durante l’operazione di lettura dei dati, che si è verificato un errore durante l’operazione di lettura dei dati, ma l’errore è stato corretto e che si è verificato un errore durante l’operazione di lettura dei dati e l’errore non è stato corretto.
In varie forme di attuazione, il circuito di trattamento degli errori è configurato per generare (almeno) un primo segnale di errore e un secondo segnale di errore. A questo scopo, il circuito di trattamento degli errori comprende un circuito hardware configurato per determinare se l’indirizzo indicato dal segnale di indirizzo appartiene a un primo intervallo di indirizzi e per impostare il primo segnale di errore al codice di errore del segnale di errore quando l’indirizzo indicato dal segnale di indirizzo appartiene al primo intervallo di indirizzi. Similmente, il circuito hardware può determinare se l’indirizzo indicato dal segnale di indirizzo appartiene a un secondo intervallo di indirizzi e può impostare il secondo segnale di errore al codice di errore del segnale di errore quando l’indirizzo indicato dal segnale di indirizzo appartiene al secondo intervallo di indirizzi. In varie forme di attuazione, il primo intervallo di indirizzi e/o il secondo intervallo di indirizzi sono programmabili.
Per esempio, in varie forme di attuazione, il circuito hardware può comprendere un primo circuito logico combinatorio configurato per impostare un primo segnale di abilitazione a un primo o a un secondo valore logico quando l’indirizzo indicato dal segnale di indirizzo appartiene o non appartiene rispettivamente al primo intervallo di indirizzi. Similmente, il circuito hardware può comprendere un secondo circuito logico combinatorio configurato per impostare un secondo segnale di abilitazione a un primo o a un secondo valore logico quando l’indirizzo indicato dal segnale di indirizzo appartiene o non appartiene rispettivamente al secondo intervallo di indirizzi. In varie forme di attuazione, il circuito hardware può anche comprendere un terzo circuito logico combinatorio configurato per impostare il primo segnale di errore al codice di errore del segnale di errore quando il primo segnale di abilitazione ha il primo valore logico e per impostare il secondo segnale di errore al codice di errore del segnale di errore quando il secondo segnale di abilitazione ha il primo valore logico.
In varie forme di attuazione, il circuito di trattamento degli errori può comprendere inoltre un registro configurato per memorizzare il codice di errore del segnale di errore e per fornire il codice di errore memorizzato al circuito hardware per generare il primo e il secondo segnale di errore. In aggiunta o in alternativa, il circuito di trattamento degli errori può comprendere un registro configurato per memorizzare il codice di errore del primo o del secondo segnale di errore.
In varie forme di attuazione, il circuito di trattamento degli errori ha associato un circuito generatore di interrupt configurato per generare uno o più segnali di interrupt quando il codice di errore del primo segnale di errore corrisponde a uno o più primi valori di riferimento e/o il codice di errore del secondo segnale di errore corrisponde a uno o più secondi valori di riferimento. In varie forme di attuazione, l’uno o più primi valori di riferimento e/o l’uno o più secondi valori di riferimento sono programmabili.
Per esempio, almeno uno tra i segnali di interrupt, il primo segnale di errore e il secondo segnale di errore può essere fornito all’unità di elaborazione del sistema di elaborazione. In aggiunta o in alternativa, il sistema di elaborazione può comprendere un’interfaccia di comunicazione e almeno uno tra i segnali di interrupt, il primo segnale di errore e il secondo segnale di errore può essere fornito direttamente all’interfaccia di comunicazione. In aggiunta o in alternativa, il sistema di elaborazione può comprendere un pin e almeno uno tra i segnali di interrupt, il primo segnale di errore e il secondo segnale di errore può essere fornito direttamente al pin.
Breve descrizione delle figure
Forme di attuazione della presente descrizione saranno ora descritte con riferimento ai disegni annessi, che sono forniti a puro titolo di esempio non limitativo, e nei quali:
- la Figura 1 rappresenta un tipico sistema elettronico comprendente una pluralità di sistemi di elaborazione;
- la Figura 2 rappresenta un esempio di un sistema di elaborazione che comprende almeno una memoria e un’unità di elaborazione;
- la Figura 3 rappresenta una forma di attuazione del canale di comunicazione tra una memoria e un’unità di elaborazione;
- la Figura 4 rappresenta una forma di attuazione di una memoria che comprende un circuito di rilevazione e/o di correzione degli errori;
- la Figura 5 rappresenta una forma di attuazione di un sistema di elaborazione che comprende un’unità di elaborazione, una memoria e un circuito di trattamento degli errori;
- la Figura 6 rappresenta una forma di attuazione del circuito di trattamento degli errori della Figura 5;
- la Figura 7 è un diagramma di flusso che rappresenta una forma di attuazione del funzionamento dell’unità di elaborazione della Figura 5;
- le Figure 8 e 9 rappresentano una seconda forma di attuazione di un circuito di trattamento degli errori;
- la Figura 10 rappresenta una terza forma di attuazione di un circuito di trattamento degli errori; e - la Figura 11 rappresenta una forma di attuazione di un sistema elettronico che comprende una pluralità di sistemi di elaborazione e un’unità di raccolta di guasti.
Descrizione Dettagliata
Nella descrizione che segue, sono illustrati numerosi dettagli specifici, allo scopo di fornire una comprensione approfondita delle forme di attuazione. Le forme di attuazione possono essere attuate senza uno o più dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture ben note non sono illustrate o descritte in dettaglio in modo da evitare di rendere poco chiari certi aspetti delle forme di attuazione.
Un riferimento a “una forma di attuazione” in tutta questa descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione è compresa in almeno una forma di attuazione. Così, le frasi come “in una forma di attuazione” che compaiono in vari punti della presente descrizione non fanno necessariamente riferimento tutte alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato qualsiasi in una o più forme di attuazione.
I riferimenti usati qui sono forniti semplicemente per convenienza e non definiscono l’ambito di protezione o l’ambito delle forme di attuazione.
Nelle Figure da 3 a 11 che seguono, le parti, gli elementi o i componenti che sono già stati descritti con riferimento alle Figure 1 e 2 sono indicati con gli stessi riferimenti usati precedentemente in tali Figure; la descrizione di tali elementi descritti precedentemente non sarà ripetuta in seguito al fine di non rendere troppo pesante la presente descrizione dettagliata.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a soluzioni per gestire gli errori nei dati letti da una memoria 104.
La Figura 3 rappresenta di nuovo un sistema di elaborazione 10 che comprende un’unità di elaborazione 102 e una memoria 104, come una memoria non volatile 104a o una memoria volatile 104b. Di conseguenza, la descrizione della Figura 2 si applica pienamente anche al sistema della Figura 3.
Nella forma di attuazione considerata, l’unità di elaborazione 102 è connessa alla memoria 104 attraverso un canale di comunicazioni adatto, al fine di fornire un segnale di indirizzo ADR alla memoria 104 e di ricevere rispettivi dati DATA dalla memoria 104. In caso di memorie 104 programmabili (come memorie volatili 104b o memorie non volatili 104a programmabili), l’unità di elaborazione 102 può anche essere configurata per trasmettere rispettivi dati DATA per un dato indirizzo ADR alla memoria 104. Di solito, a questo scopo l’unità di elaborazione 102 fornisce uno o più segnali di controllo alla memoria 104 al fine di selezionare l’operazione da effettuare, come un segnale di controllo di scrittura/lettura W/R usato per selezionare un’operazione di scrittura o di lettura da effettuare per un dato indirizzo ADR.
Generalmente, il canale di comunicazione per trasmettere il segnale di indirizzo ADR e il segnale di dati DATA può essere un qualsiasi canale di comunicazione adatto, comprendendo i canali di comunicazione seriali o paralleli, i canali di comunicazione bidirezionali o monodirezionali plurali, i canali di comunicazione sincroni o asincroni. Per esempio, in varie forme di attuazione la memoria 104 comprende un primo numero NADR (per es., 8, 16, 32, 64 bit) di terminali di ingresso per ricevere il segnale di indirizzo ADR e un secondo numero NDATA (per es., 8, 16, 32, 64 bit) di terminali di ingresso/uscita per scambiare il segnale di dati DATA. Di conseguenza, il primo numero NADR definisce lo spazio di indirizzi della memoria 104 e il secondo numero NDATA corrisponde alla lunghezza dei dati scambiati con la memoria 104.
In varie forme di attuazione, la memoria 104 può anche supportare una funzione di rilevazione degli errori e/o di correzione degli errori al fine di rilevare e/o correggere errori nei dati letti dalla memoria 104. In questo caso, la memoria 104 può anche fornire uno o più segnali di errore ERR all’unità di elaborazione 102 che indicano, per es., che i dati contengono un errore e/o che un errore nei dati è stato corretto oppure no.
Per esempio, la Figura 4 rappresenta una possibile forma di attuazione di una memoria 104, come una memoria a semiconduttore, configurata per rilevare ed eventualmente correggere errori nei dati letti dalla memoria. Una tale memoria è nota, per es., dal documento US 5,233,616.
Specificamente, nella forma di attuazione considerata, la memoria 104 comprende un’area di memoria 200 comprendente una o più celle di memoria. Per esempio, le celle di memoria possono essere disposte in una pluralità di righe e opzionalmente di colonne. Per esempio, ciascuna cella di memoria può essere una cella flash o RAM.
Come menzionato in precedenza, la memoria 104 riceve in ingresso il segnale di indirizzo ADR, in cui il segnale di indirizzo ADR è usato per selezionare una data sottoarea all’interno dell’area di memoria 200. Per esempio, il segnale di indirizzo ADR può essere fornito a un decodificatore di riga 202 e a un decodificatore di colonna 204 opzionale, al fine di selezionare una data sotto-area nell’area di memoria 200, cioè, un dato numero di bit NMEM all’interno dell’area di memoria 200. In varie forme di attuazione, il segnale di indirizzo ADR può non essere fornito direttamente al decodificatore di riga (e di colonna), ma il segnale di indirizzo ADR può essere memorizzato in un buffer di indirizzo 208.
Come menzionato in precedenza, la memoria 104 comprende anche uno o più terminali di ingresso e/o di uscita per scambiare il segnale di dati DATA. Generalmente, anche il segnale di dati DATA può essere memorizzato in un buffer di dati 218.
Per esempio, nella forma di attuazione considerata, la memoria 104 supporta operazioni sia di lettura sia di scrittura, che possono essere selezionate attraverso un segnale di controllo W/R. Specificamente, nella forma di attuazione considerata, l’area di memoria 200 ha associata un’interfaccia di scrittura e di lettura 206. Per esempio, l’interfaccia può comprendere un dispositivo di pilotaggio di scrittura, al fine di scrivere dati nella sotto-area di memoria selezionata, e un amplificatore di rilevamento (“sense”), al fine di leggere dati dalla sotto-area di memoria selezionata.
In una memoria tradizionale, l’interfaccia di scrittura e di lettura 206 funzionerebbe direttamente con i dati scambiati attraverso il segnale di dati DATA, per es., quando è usato un bus di dati bidirezionale, la memoria fornisce i dati letti dalla sotto-area di memoria selezionata che hanno NMEM = NDATA bit attraverso il segnale DATA o la memoria memorizza gli NMEM = NDATA bit ricevuti attraverso il segnale DATA nella sotto-area di memoria selezionata.
Per contro, in una memoria 104 che supporta una funzione di rilevazione e/o di correzione degli errori, il numero dei bit NMEM della sotto-area di memoria selezionata è maggiore del numero dei bit NDATA del segnale di dati DATA. Per esempio, come rappresentato schematicamente nella Figura 4, ciascuna sotto-area dell’area di memoria 200 può consistere di un primo campo DA che ha il numero di bit NDATA per memorizzare dati DATA e di un secondo campo PA che ha NPA bit per memorizzare uno o più bit aggiuntivi, con NMEM = NDATA NPA.
In questo caso, la memoria 104 può comprendere un circuito di elaborazione degli errori 210 che gestisce lo scambio di dati tra il segnale di dati DATA e l’interfaccia 206. Specificamente, il circuito di elaborazione degli errori 210 comprende almeno un modulo codificatore 216 e un modulo decodificatore 214.
Specificamente, quando esegue un’operazione di scrittura (come selezionata, per es., attraverso il segnale W/R), il modulo codificatore 216 è configurato per codificare il segnale di dati DATA (che ha NDATA bit) al fine di generare dati codificati (che hanno NMEM bit) e per fornire i dati codificati all’interfaccia 206 al fine di scrivere i dati codificati nella sotto-area di memoria selezionata. Per esempio, il modulo codificatore 216 può calcolare i bit di correzione di errore PA da memorizzare con i dati.
Per contro, quando esegue un’operazione di lettura (come selezionata, per es., attraverso il segnale W/R), il modulo decodificatore 214 è configurato per decodificare i dati della sotto-area di memoria selezionata (che hanno NMEM bit) al fine di generare dati decodificati (che hanno NDATA bit) e per fornire i dati decodificati attraverso il segnale di dati DATA. Per esempio, quando sono usati bit di rilevazione di errore aggiuntivi (per es., bit di parità) PA, i dati decodificati possono corrispondere direttamente al campo DA. Tuttavia, il modulo decodificatore 214 elabora anche i bit aggiuntivi al fine di determinare se i dati letti dall’area di memoria 200 contengono dati validi, per es., usando i bit di rilevazione di errore PA. Per esempio, nella forma di attuazione considerata, il modulo decodificatore 214 può ricalcolare i bit di rilevazione di errore per i dati DA letti e può confrontare i bit di rilevazione di errore calcolati con i bit del campo PA letti dalla memoria. In questo caso, il modulo decodificatore 214 può generare così un segnale di errore ERR quando i dati di rilevazione di errore non corrispondono. Di solito, il numero dei bit di rilevazione di errore PA è correlato con il numero di errori che possono essere rilevati nel campo di dati DA.
In generale, possono anche essere usati schemi di codifica/decodifica più complessi, per es., al fine di supportare non solo una rilevazione degli errori ma anche una correzione degli errori. Una panoramica della differenza tra i codici di rilevazione di errore e quelli di correzione di errore può essere trovata a “https:// en.wikipedia.org/wiki/Error_detection_and_correction/”.
Per esempio, quando sono usati procedimenti di codifica/decodifica che permettono anche una correzione degli errori, il circuito di elaborazione degli errori 210 comprende anche un circuito di correzione degli errori 212, che può anche essere combinato direttamente con il modulo decodificatore 214. Specificamente, il circuito di correzione degli errori 212 è configurato per ricostruire i dati originali scritti nell’area di memoria 200 anche nel caso di uno o più errori (in base allo schema di codifica usato) nei dati letti dalla sotto-area di memoria selezionata, come nel campo di dati DA e/o nel campo PA.
Il funzionamento di una tale memoria 104 è ben noto nella tecnica, per es., nei contesti delle memorie con un codice di correzione di errore (ECC “Error-Correcting Code”).
In varie forme di attuazione, il circuito di correzione degli errori 212 può così generare un segnale di errore ERR quando il circuito di correzione degli errori 212 non è in grado di correggere l’errore nei dati letti dalla memoria.
Di conseguenza, in varie forme di attuazione, il segnale di errore ERR fornito dalla memoria 104 può segnalare per ciascuna operazione di lettura un codice di errore che indica che i dati letti dalla memoria 104:
1) non contengono un errore,
2) contengono almeno un errore, ma l’errore ha potuto essere corretto; indicando anche eventualmente il numero dei bit che contenevano errori (per es., usando codici di errore differenti), o
3) contiene almeno un errore e l’errore non ha potuto essere corretto.
Così, in base al codice di errore del segnale di errore ERR, il sistema di elaborazione 10a può eseguire differenti operazioni.
Per esempio, la Figura 5 rappresenta una forma di attuazione di un sistema di elaborazione 10a, in cui l’unità di elaborazione 102 ha associato un circuito di trattamento degli errori 108. Specificamente, nella forma di attuazione considerata, il circuito di trattamento degli errori 108 riceve in ingresso l’uno o più segnali di errore ERR forniti dalla memoria 104.
Per esempio, la Figura 6 rappresenta una prima forma di attuazione del circuito di trattamento degli errori 108.
Nella forma di attuazione considerata, il circuito di trattamento degli errori 108 comprende un registro 1080 che fornisce un segnale di errore ERR’. Specificamente, in varie forme di attuazione, il registro 1080 è indirizzabile dall’unità di elaborazione 102, cosiddetto registro di funzioni speciali. Per esempio, nella forma di attuazione considerata, la memoria 104 supporta un codice di correzione di errore atto a correggere fino a errori di due bit. In questo caso, il segnale di errore ERR può comprendere tre bit:
- un bit SBC che indica che è stato corretto un errore di bit singolo;
- un bit DBC che indica che è stato corretto un errore di bit doppio; e
- un bit UC che indica che l’errore non è stato corretto.
Per esempio, nel caso in cui tutti i bit siano bassi (“000”), il segnale di errore ERR indica che non si è verificato alcun errore, mentre un bit singolo è impostato quando è segnalato un errore della memoria.
In varie forme di attuazione, il segnale di errore ERR’ ha lo stesso numero di bit del segnale di errore ERR ed è usata la stessa codifica per i codici di errore, cioè, nella forma di attuazione considerata, il registro comprende tre bit di errore SBC, DBC e UC. In generale, possono anche essere usati altri schemi di codifica per i tipi/codici di errore e la codifica del segnale di errore ERR fornita dalla memoria 104 può essere differente dalla codifica del segnale di errore ERR’. Per esempio, il segnale di errore ERR e/o il segnale di errore ERR’ possono avere due bit (per es., “00” per nessun errore, “01” per errore di bit singolo, “10” per errore di bit doppio e “11” per errore non corretto). Di conseguenza, in base alla codifica dei codici di errore del segnale di errore ERR, il circuito di trattamento degli errori 108 imposta generalmente i bit di errore nel registro 1080/segnale di errore ERR’ in funzione del segnale di errore ERR.
In varie forme di attuazione, il circuito di trattamento degli errori 108 può anche comprendere un circuito 1082 configurato per gestire le reazioni interne del sistema di elaborazione 10a. Per esempio, tali reazioni possono comprendere la generazione di un interrupt (non mascherabile e/o mascherabile/configurabile), un reset, l’attivazione di una modalità di debug, ecc.
Per esempio, in seguito sarà descritto, senza perdita di generalità, un circuito 1082 configurato per funzionare come un circuito generatore di interrupt 1082 che è configurato per generare uno o più interrupt IRQ in funzione del segnale di errore ERR’ (o direttamente il segnale di errore ERR’). Per esempio, in varie forme di attuazione, il circuito generatore di interrupt 1082 è configurato per generare un segnale di interrupt IRQ quando:
1) è impostato uno dei bit del segnale di errore ERR o ERR’;
2) è impostato il bit DBC o è impostato il bit UC; o 3) è impostato soltanto il bit UC.
In varie forme di attuazione, la modalità di funzionamento del circuito generatore di interrupt 1082 può essere programmabile, per es., impostando uno o più bit di abilitazione di interrupt nel registro 1080. Per esempio, in varie forme di attuazione, il registro 1080 comprende, per ciascun codice di errore che indica un errore, un rispettivo indicatore (“flag”) di abilitazione di errore. Per esempio, nella forma di attuazione considerata, il registro 1080 comprende tre bit aggiuntivi SBE, DBE e UE, che permettono di specificare se il circuito generatore di interrupt 1082 dovrebbe impostare l’interrupt IRQ quando il rispettivo bit SBC, DBC e UC è impostato.
In varie forme di attuazione, il segnale di errore ERR’ e l’interrupt IRQ opzionale sono forniti all’unità di elaborazione 102.
Per esempio, la Figura 7 rappresenta una forma di attuazione del funzionamento dell’unità di elaborazione 102, che può essere implementata, per es., mediante una programmazione adatta di un microprocessore attraverso un codice software.
Dopo una fase di inizio 2000, l’unità di elaborazione 102 può abilitare, in una fase 2002, la generazione di un interrupt per uno o più codici di errore, per es., impostando i bit SBE, DBE e UE nel registro 1080, selezionando con ciò il comportamento di rilevazione degli errori desiderato. Generalmente, la fase 2002 è puramente opzionale, perché l’unità di elaborazione 102 può anche non riprogrammare i rispettivi valori di default/reset o il comportamento del circuito generatore di interrupt 1082 può essere fissato.
In seguito, l’unità di elaborazione può procedere alla modalità di funzionamento normale 2004, cioè può eseguire l’applicazione, che può comprendere uno o più accessi di lettura (ed eventualmente anche di scrittura) alla memoria 104, e la procedura termina in una fase di arresto 2006.
Una volta che è stato rilevato un errore di lettura dalla memoria (si veda anche la Figura 4), la memoria 104 segnala il rispettivo codice di errore attraverso il segnale di errore ERR e il circuito generatore di interrupt 1082 genera un interrupt IRQ quando il codice di errore corrisponde a un codice di errore abilitato.
In risposta alla generazione di un interrupt IRQ in una fase 2050, l’unità di elaborazione 102 avvierà così, in una fase 2052, una routine di trattamento degli errori e, una volta che ha eseguito la routine di trattamento degli errori, l’unità di elaborazione 102 ritorna al funzionamento normale in una fase di arresto 2054, terminando la routine di interrupt. Per esempio, l’unità di elaborazione 102 può leggere il contenuto del registro 1080, in particolare il segnale ERR’, nella fase 2052, e può selezionare una data operazione in base al tipo di errore. Per esempio, l’unità di elaborazione 102 può non effettuare alcuna operazione quando è indicato un errore di bit singolo. Per contro, l’unità di elaborazione può monitorare il numero di errori di bit doppi e può fornire un messaggio di errore a un utente quando è superata una data soglia. Infine, l’unità di elaborazione 102 può fornire immediatamente il messaggio di errore quando è stato rilevato un errore non correggibile.
Per esempio, il procedimento rappresentato nella Figura 7 può essere utile al fine di monitorare errori nella RAM e/o memoria non volatile (per es., Flash, PCM, ecc.) di un microcontrollore. Per esempio, in questo caso, ciascuna memoria 104 può fornire il rispettivo segnale di errore ERR a un rispettivo circuito di trattamento degli errori 108. In questo modo, il comportamento di errore per ciascuna memoria 104 può anche essere configurato in modo indipendente, per es., impostando i rispettivi indicatori di abilitazione nella rispettiva memoria 1080. Generalmente, tali circuiti di trattamento degli errori 108 plurali possono anche essere combinati in un singolo circuito di trattamento degli errori 108, per es., fornendo rispettivi bit di errore ed eventualmente indicatori di abilitazione di codice di errore nella memoria 1080.
Inoltre, le capacità delle memorie 104a e 104b possono anche essere differenti. Per esempio, la memoria non volatile 104a può implementare un meccanismo di correzione degli errori atto a correggere fino a errori di bit doppi, mentre la memoria volatile 104b può essere atta a correggere soltanto errori di bit singoli.
In aggiunta o come alternativa al fatto di inviare il segnale ERR’ e/o l’interrupt IRQ all’unità di elaborazione 102, il circuito di reazione interna 1082 e il registro 1080 possono anche inviare uno o più di questi segnali a un altro blocco 106 dell’unità di elaborazione, come un’interfaccia di comunicazione, un circuito di reset e/o un circuito di debug. Per esempio, il circuito di reset può essere configurato per riavviare il sistema di elaborazione in una modalità degradata quando è stato rilevato un errore non correggibile (per es., UC = “1”). Similmente, il segnale ERR’ e/o l’interrupt IRQ possono essere forniti a uno o più pin del sistema di elaborazione 10a.
Di conseguenza, la soluzione descritta con riferimento alle Figure da 5 a 7 permette di scegliere selettivamente il comportamento del sistema di elaborazione 10a in funzione del tipo di un errore di lettura della memoria.
Tuttavia, quando sono integrate differenti applicazioni all’interno del sistema di elaborazione 10a, può essere configurato soltanto un singolo comportamento di guasti della memoria per ciascuna memoria 104. Tuttavia, per certe applicazioni potrebbe essere utile che un primo tipo di applicazioni, come le applicazioni critiche per la sicurezza (“safety-critical”), reagiscano in un modo differente da un secondo tipo di applicazioni, come le applicazioni non critiche per la sicurezza (“non-safety critical”). Per esempio, in varie applicazioni può essere utile che il secondo tipo di applicazioni sia interrotto soltanto quando non è stato corretto l’errore di lettura della memoria, mentre il primo tipo di applicazione dovrebbe intervenire già quando è stato rilevato un errore di bit singolo (o doppio).
Per esempio, nella forma di attuazione rappresentata nella Figura 7, l’unità di elaborazione 102 potrebbe abilitare, nella fase 2002, l’interrupt IRQ per qualsiasi tipo di errore. In risposta a un errore, l’unità di elaborazione 102 può quindi determinare, nella fase di trattamento degli errori 2052, l’applicazione eseguita attualmente, al fine di decidere come trattare l’errore, ignorando anche eventualmente l’errore. Tuttavia, nel caso dei microprocessori, ciascun errore della memoria genererebbe così un interrupt, che causa così un’interruzione dell’esecuzione dell’applicazione.
Di conseguenza, in seguito sarà descritta una forma di attuazione che migliora ulteriormente il trattamento degli errori della memoria direttamente a un livello hardware.
Specificamente, in varie forme di attuazione, il sistema di elaborazione 10a è configurato per generare differenti trigger non solo in base al tipo di errore (per es., guasto correggibile di bit singolo SBC = “1”, guasto correggibile di bit doppio DBC = “1”, o guasto non correggibile UC = “1”), ma anche in base all’indirizzo ADR della memoria in cui si è verificato l’errore.
Specificamente, la Figura 8 rappresenta una forma di attuazione di un circuito di trattamento degli errori 108, che comprende un collettore di errori e un circuito di reazione interna 108’ opzionale (che corrisponde sostanzialmente al circuito 108 descritto in precedenza) e due circuiti logici aggiuntivi 1084 e 1086 associati al circuito 108’.
Specificamente, il primo circuito 1084 comprende una pluralità di sotto blocchi 10841...1084n in cui ciascun blocco 1084i (con i = 1..n) è configurato per determinare se l’indirizzo ADR corrente appartiene a una data regione di indirizzi della memoria, cioè se l’indirizzo ADR corrente è tra un limite inferiore RLi e un limite superiore RHi rispettivi. Per esempio, nella forma di attuazione considerata, ciascun blocco 1084i comprende per questo motivo:
- un primo comparatore digitale 1088i configurato per determinare se l’indirizzo ADR è maggiore del rispettivo limite inferiore RLi,
- un secondo comparatore digitale 1090i configurato per determinare se l’indirizzo ADR è minore del rispettivo limite superiore RHi, e
- una porta logica 1092i, come una porta logica AND, che combina i segnali di uscita dei comparatori 1088i e 1090i.
Di conseguenza, nella forma di attuazione considerata, ciascun blocco 1084i imposta un rispettivo segnale di abilitazione TEi (corrispondente, per es., all’uscita della rispettiva porta logica 1092i) quando l’indirizzo ADR appartiene a una data regione di indirizzi della memoria.
In varie forme di attuazione, i limiti RLi e RHi sono programmabili. Per esempio, i limiti possono essere memorizzati in registri di funzioni speciali dell’unità di elaborazione 102, per es., nel registro 1080, o possono essere impostati programmando una data area nella memoria di programma non volatile 104a dell’unità di elaborazione 102.
Il secondo circuito 1086 riceve in ingresso il segnale di errore ERR dalla memoria 104 e i segnali di abilitazione TEi dal blocco 1084. Specificamente, il circuito 1086 genera quindi una pluralità di segnali di errore ERR1..ERRn combinando il segnale di errore ERR con il rispettivo segnale di abilitazione TEi.
Di conseguenza, soltanto i segnali di errore ERR1..ERRn saranno impostati al valore del segnale di errore ERR corrente per il quale è impostato anche il rispettivo segnale di abilitazione TEi. Per esempio, considerando il caso di esempio in cui il segnale di errore ERR comprende i bit SBC, DBC e UC, anche ciascun segnale di errore ERRi comprende i bit SBCi, DBCi e UCi. Per esempio, ipotizzando che i segnali siano impostati quando il livello logico è alto, ciascun bit del segnale ERRi può essere ottenuto attraverso un’operazione logica di AND (per es., in una porta logica 1094), cioè:
SBCi = SBC AND TEi, DBCi = DBC AND TEi, UCi = UC AND TEi.
Di conseguenza, generalmente i blocchi 1084 e 1086 generano una pluralità di segnali di errore ERR1..ERRn in funzione del segnale di errore ERR che indica un errore di lettura (ed eventualmente il tipo dell’errore) e un rispettivo indirizzo ADR dell’operazione di lettura.
Specificamente, il circuito 1084 è configurato per monitorare l’indirizzo ADR con errore e, se cade all’interno di una qualsiasi delle finestre di memoria programmate, attiva quindi un rispettivo segnale di abilitazione TEi al fine di abilitare il rispettivo segnale di errore ERRi.
In varie forme di attuazione, i segnali di errore ERR1..ERRn possono così essere forniti di nuovo a un collettore di errori e a un circuito di reazione interna 108’ opzionale.
Per esempio, la Figura 9 rappresenta una possibile forma di attuazione di un circuito 108’ configurato per trattare una pluralità di segnali di errore ERR1..ERRn. Per esempio, un tale circuito 108’ potrebbe anche essere usato per trattare segnali di errore plurali generati da memorie plurali.
Specificamente, in modo simile alla descrizione della Figura 6, il circuito di trattamento degli errori 108 comprende un registro 1080, come un registro di funzioni speciali dell’unità di elaborazione 102, per memorizzare i segnali di errore ERR1..ERRn.
Per esempio, come rappresentato nella Figura 9, il registro 1080 può comprendere una pluralità di sottoregistri 10801..1080n, in cui ciascun sotto-registro 1080i comprende un certo numero di bit di errore per memorizzare un rispettivo segnale di errore ERRi. Per esempio, nell’esempio di forma di attuazione, ciascun sotto-registro 1080i comprende tre bit SBCi, DBCi e UCi per memorizzare i rispettivi bit del rispettivo segnale di errore ERRi. Così, generalmente, il registro 1080 genera una pluralità di segnali di errore ERR’1..ERR’n memorizzando i segnali ERR1..ERRn. Di nuovo, ciascun segnale di errore ERR’ può anche avere un numero di bit di errore e/o schema di codifica differenti dal segnale di errore ERR.
In varie forme di attuazione, il circuito 108’ può anche comprendere un circuito di reazione interna 1082 (come un circuito generatore di interrupt) configurato per generare uno o più segnali (come un segnale di interrupt IRQ, un segnale di reset, ecc.) in funzione dei dati memorizzati nel sotto-registro 1080i. In modo simile alla descrizione della Figura 6, ciascun sotto-registro 1080i può così comprendere anche uno o più indicatori di abilitazione che abilitano ciascuno la generazione di un interrupt, un reset, ecc. per un rispettivo codice di errore. Per esempio, nella forma di attuazione considerata, ciascun sotto-registro 1080i comprende tre ulteriori bit SBEi, DBEi e UEi per abilitare la generazione dell’interrupt IRQ quando il rispettivo bit SBCi, DBCi e UCi è impostato. Per esempio, nella forma di attuazione considerata, il circuito generatore di interrupt 1082 può generare un interrupt quando sono impostati sia un dato bit di errore SBCi, DBCi o UCi sia il rispettivo indicatore di abilitazione SBEi, DBEi o UEi.
La Figura 10 rappresenta una forma di attuazione ulteriore del circuito di trattamento degli errori 108.
Specificamente, invece di operare sul segnale di errore ERR e di memorizzare i segnali ERRi nel registro 1080 (come descritto con riferimento alle Figure 8 e 9), la Figura 10 rappresenta una forma di attuazione nella quale il circuito combinatorio 1086 opera già sul segnale di errore ERR’ memorizzato nel registro 1080 descritto con riferimento alla Figura 6. Specificamente, in questo caso, il circuito 1086 descritto con riferimento alla Figura 8 riceve in ingresso il segnale ERR’ (e non il segnale ERR).
Nella forma di attuazione considerata, l’uscita del circuito 1086 che fornisce i segnali di errore ERR’1.. ERR’n può così essere connessa direttamente al circuito di reazione interna 1082 opzionale. In questo caso, il registro 1080 può ancora comprendere l’indicatore di abilitazione SBEi, DBEi o UEi per i differenti codici di errore, che sono quindi usati dal circuito di reazione interna 1082. In effetti, generalmente, i blocchi 1084 e 1086 possono essere disposti in una qualsiasi posizione adatta tra il circuito di elaborazione degli errori 210 della memoria 104 e il modulo finale usato per elaborare i segnali di errore ERR’1..ERR’n.
Per esempio, anche in questo caso i segnali di errore ERR’1..ERR’n e/o il segnale (i segnali) di interrupt IRQ possono essere forniti all’unità di elaborazione 102, a un altro blocco 106 del sistema di elaborazione 10a e/o a un pin del sistema di elaborazione 10a. Per esempio, la Figura 11 rappresenta una forma di attuazione nella quale una pluralità di sistemi di elaborazione 10a, come due sistemi di elaborazione 10a1 e 10a2 sono connessi a un sistema di comunicazione 20. Generalmente, l’architettura corrisponde sostanzialmente all’architettura descritta con riferimento alla Figura 1 e anche in questo caso si applica alla rispettiva descrizione. Per esempio, i sistemi di elaborazione 10a1 possono essere un’unità di controllo del motore e i sistemi di elaborazione 10a2 possono essere un’unità di controllo della trasmissione.
Tuttavia, nella forma di attuazione considerata, il sistema comprende un ulteriore sistema di elaborazione FCCU connesso al sistema comune 20. Specificamente, il sistema di elaborazione FCCU è configurato per implementare un’unità di controllo della raccolta dei guasti. Di conseguenza, in questo caso, ciascun sistema di elaborazione 10a può essere configurato per inviare i segnali di errore ERR’1..ERR’n anche al sistema di elaborazione FCCU. Generalmente, la trasmissione può essere gestita attraverso l’unità di elaborazione 102 del sistema di elaborazione, o il circuito di trattamento degli errori 108 può fornire direttamente i segnali di errore ERR’1..ERR’n ed eventualmente il segnale di interrupt IRQ a un’interfaccia di comunicazione 106 del sistema di elaborazione 10a (connessa al canale di comunicazione 10), che così può trasmettere i segnali di errore ERR’1..ERR’n al sistema FCCU senza l’intervento dell’unità di elaborazione 102.
Di conseguenza, le soluzioni descritte permettono che la memoria 104 possa essere organizzata in regioni di memoria differenti, come una prima regione (per es., critica per la sicurezza) identificata per mezzo di un primo limite/indirizzo inferiore e superiore RL1/RH1 e una seconda regione (per es., non critica per la sicurezza) identificata per mezzo di un secondo limite/indirizzo inferiore e superiore RL2/RH2.
Nella forma di attuazione considerata, i circuiti 1084 e 1086 sono configurati per generare così, per le due regioni rispettive, due segnali di errore ERR1 e ERR2 (o ERR’1 e ERR’2 nella forma di attuazione rappresentata nella Figura 10), in cui il primo segnale di errore ERR1 è impostato al segnale di errore ERR (o ERR’ nella forma di attuazione rappresentata nella Figura 10) fornito attualmente, quando l’indirizzo ADR appartiene al primo intervallo, e il secondo segnale di errore ERR2 è impostato al segnale di errore ERR (o ERR’) fornito attualmente, quando l’indirizzo ADR appartiene al secondo intervallo.
Di conseguenza, generalmente, l’unità di elaborazione 10a è configurata per generare una pluralità di segnali di errore ERR’1 e ERR’2 in base all’indirizzo ADR e questi segnali di errore ERR’1 e ERR’2 possono essere elaborati separatamente, permettendo con ciò un tempo di reazione più veloce. Per esempio, il circuito generatore di interrupt 1082 può essere usato per generare selettivamente un interrupt IRQ (o un qualsiasi altro genere di segnale di trigger usato per attivare una data operazione in risposta a un errore di lettura della memoria per un dato intervallo di memoria). Per esempio, il dispositivo di trattamento (“handler”) degli interrupt 1082 può essere configurato attraverso i rispettivi indicatori di abilitazione (memorizzati, per es., nel registro 1080) per:
- attivare l’interrupt IRQ già per un errore di bit singolo quando l’indirizzo appartiene alla prima regione (per es., SBE1 = “1”, DBE1 = “1”, UE1 = “1”), e
- attivare l’interrupt IRQ soltanto per un errore non correggibile quando l’indirizzo appartiene alla seconda regione (per es., SBE2 = “0”, DBE2 = “0”, UE2 = “1”).
Naturalmente, fermi restando i principi di fondo dell’invenzione, i dettagli di costruzione e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto è stato descritto e illustrato qui, puramente a titolo di esempio, senza uscire con ciò dall’ambito della presente invenzione, come definito dalle rivendicazioni che seguono.

Claims (13)

  1. RIVENDICAZIONI 1. Sistema di elaborazione (10a) comprendente: - un’unità di elaborazione (102) disposta per essere connessa a una memoria con rilevazione e/o correzione degli errori (104), detta unità di elaborazione (102) configurata per generare almeno una richiesta di lettura per leggere dati (DATA) da detta memoria con rilevazione e/o correzione degli errori (104), detta richiesta di lettura comprendendo un segnale di indirizzo (ADR) che identifica l’indirizzo di una data area di memoria in detta memoria (104); - un circuito di trattamento degli errori (108) disposto per essere connesso a detta memoria con rilevazione e/o correzione degli errori (104) per ricevere un segnale di errore (ERR) da detta memoria con rilevazione e/o correzione degli errori (104), in cui detto segnale di errore (ERR) contiene un codice di errore che indica se i dati (DATA) letti da detta memoria con rilevazione e/o correzione degli errori (104) contengono errori (UC); in cui detto circuito di trattamento degli errori (108) è configurato per generare un primo segnale di errore (ERR’1) e un secondo segnale di errore (ERR’n), in cui detto circuito di trattamento degli errori (108) comprende un circuito hardware (1084, 1086) configurato per: - determinare se l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a un primo intervallo di indirizzi (RL1,RH1); - impostare detto primo segnale di errore (ERR’1) al codice di errore di detto segnale di errore (ERR) quando l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a detto primo intervallo di indirizzi (RL1,RH1); - determinare se l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a un secondo intervallo di indirizzi (RLn,RHn); e - impostare detto secondo segnale di errore (ERR’n) al codice di errore di detto segnale di errore (ERR) quando l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a detto secondo intervallo di indirizzi (RLn,RHn).
  2. 2. Sistema di elaborazione (10a) secondo la Rivendicazione 1, in cui detto circuito hardware (1084, 1086) comprende: - un primo circuito logico combinatorio (10841) configurato per impostare un primo segnale di abilitazione (TE1) a: - un primo valore logico quando l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a detto primo intervallo di indirizzi (RL1,RH1), e - un secondo valore logico quando l’indirizzo indicato da detto segnale di indirizzo (ADR) non appartiene a detto primo intervallo di indirizzi (RL1,RH1); - un secondo circuito logico combinatorio (1084n) configurato per impostare un secondo segnale di abilitazione (TEn) a: - un primo valore logico quando l’indirizzo indicato da detto segnale di indirizzo (ADR) appartiene a detto secondo intervallo di indirizzi (RLn,RHn), e - un secondo valore logico quando l’indirizzo indicato da detto segnale di indirizzo (ADR) non appartiene a detto secondo intervallo di indirizzi (RLn,RHn); e - un terzo circuito logico combinatorio (1086) configurato per: - impostare detto primo segnale di errore (ERR’1) al codice di errore di detto segnale di errore (ERR) quando detto primo segnale di abilitazione (TE1) ha detto primo valore logico, e - impostare detto secondo segnale di errore (ERR’n) al codice di errore di detto segnale di errore (ERR) quando detto secondo segnale di abilitazione (TEn) ha detto primo valore logico.
  3. 3. Sistema di elaborazione (10a) secondo la Rivendicazione 1 o la Rivendicazione 2, in cui detto primo intervallo di indirizzi (RL1,RH1) e/o detto secondo intervallo di indirizzi (RLn,RHn) sono programmabili.
  4. 4. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detto circuito di trattamento degli errori (108) comprende: - un registro (1080) configurato per memorizzare il codice di errore di detto segnale di errore (ERR) e per fornire il codice di errore memorizzato (ERR’) a detto circuito hardware (1084, 1086) per generare detto primo segnale di errore (ERR’1) e detto secondo segnale di errore (ERR’n); e/o - un registro (1080) configurato per memorizzare il codice di errore di detto primo segnale di errore (ERR’1) e il codice di errore di detto secondo segnale di errore (ERR’n).
  5. 5. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, comprendente un circuito generatore di interrupt (1082) configurato per generare uno o più segnali di interrupt (IRQ) quando il codice di errore di detto primo segnale di errore (ERR’1) corrisponde a uno o più valori di riferimento (SBE1, DBE1, UE1) e/o il codice di errore di detto secondo segnale di errore (ERR’n) corrisponde a uno o più secondi valori di riferimento (SBEn, DBEn, UEn).
  6. 6. Sistema di elaborazione (10a) secondo la Rivendicazione 5, in cui detti uno o più primi valori di riferimento (SBE1, DBE1, UE1) e/o detti uno o più secondi valori di riferimento (SBEn, DBEn, UEn) sono programmabili (1080).
  7. 7. Sistema di elaborazione (10a) secondo la Rivendicazione 5 o la Rivendicazione 6, in cui: - almeno uno tra detti uno o più segnali di interrupt (IRQ), detto primo segnale di errore (ERR’1) e detto secondo segnale di errore (ERR’n) sono forniti a detta unità di elaborazione (102); e/o - detto sistema di elaborazione (10a) comprende un’interfaccia di comunicazione (106), e in cui almeno uno tra detti uno o più segnali di interrupt (IRQ), detto primo segnale di errore (ERR’1) e detto secondo segnale di errore (ERR’n) sono forniti direttamente a detta interfaccia di comunicazione (106); e/o - detto sistema di elaborazione (10a) comprende un pin, e in cui almeno uno tra detti uno o più segnali di interrupt (IRQ), detto primo segnale di errore (ERR’1) e detto secondo segnale di errore (ERR’n) sono forniti direttamente a detto pin.
  8. 8. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detto segnale di errore (ERR) comprende una pluralità di bit (SBC, DBC, UC), e in cui il codice di errore di detto segnale di errore (ERR) indica almeno: - non si è verificato alcun errore durante l’operazione di lettura di detti dati (DATA); - si è verificato un errore durante l’operazione di lettura di detti dati (DATA), ma l’errore è stato corretto; e - si è verificato un errore durante l’operazione di lettura di detti dati (DATA) e l’errore non è stato corretto.
  9. 9. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detta unità di elaborazione (102) è un microprocessore atto a essere programmato attraverso istruzioni software.
  10. 10. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, comprendente detta memoria con rilevazione e/o correzione degli errori (104).
  11. 11. Sistema di elaborazione (10a) secondo la Rivendicazione 10, in cui detta memoria con rilevazione e/o correzione degli errori (104) include almeno una tra una memoria non volatile (104a) disposta per memorizzare il firmware per detta unità di elaborazione (102) e una memoria ad accesso casuale o RAM (104b) disposta per memorizzare risultati temporanei dell’elaborazione di detta unità di elaborazione (102).
  12. 12. Circuito integrato, come un microcontrollore, comprendente un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 11.
  13. 13. Procedimento per fare funzionare un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 11, comprendente le fasi di: - memorizzare dati in detta memoria con rilevazione e/o correzione degli errori (104); - generare attraverso detta unità di elaborazione (102) almeno una richiesta di lettura per leggere dati (DATA) da un dato indirizzo (ADR) di detta memoria con rilevazione e/o correzione degli errori (104); e - generare attraverso detto circuito di trattamento degli errori (108) detto primo segnale di errore (ERR’1) e detto secondo segnale di errore (ERR’n) in funzione di detto dato indirizzo (ADR) e di detto segnale di errore (ERR) ricevuto da detta memoria con rilevazione e/o correzione degli errori (104).
IT102018000003233A 2018-03-02 2018-03-02 Sistema di elaborazione, relativo circuito integrato e procedimento IT201800003233A1 (it)

Priority Applications (3)

Application Number Priority Date Filing Date Title
IT102018000003233A IT201800003233A1 (it) 2018-03-02 2018-03-02 Sistema di elaborazione, relativo circuito integrato e procedimento
EP19159273.2A EP3534262B1 (en) 2018-03-02 2019-02-26 Processing system, related integrated circuit and method
US16/289,425 US11068331B2 (en) 2018-03-02 2019-02-28 Processing system, related integrated circuit and method for generating interrupt signals based on memory address

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102018000003233A IT201800003233A1 (it) 2018-03-02 2018-03-02 Sistema di elaborazione, relativo circuito integrato e procedimento

Publications (1)

Publication Number Publication Date
IT201800003233A1 true IT201800003233A1 (it) 2019-09-02

Family

ID=62143522

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102018000003233A IT201800003233A1 (it) 2018-03-02 2018-03-02 Sistema di elaborazione, relativo circuito integrato e procedimento

Country Status (3)

Country Link
US (1) US11068331B2 (it)
EP (1) EP3534262B1 (it)
IT (1) IT201800003233A1 (it)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4120083A1 (en) * 2021-07-13 2023-01-18 STMicroelectronics Application GmbH Processing system, related integrated circuit, device and method
EP4254196A1 (en) 2022-04-01 2023-10-04 STMicroelectronics Application GmbH Processing system, related integrated circuit, device and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100064205A1 (en) * 2008-09-05 2010-03-11 Moyer William C Selective cache way mirroring
US20110047408A1 (en) * 2009-08-20 2011-02-24 Arm Limited Handling of hard errors in a cache of a data processing apparatus

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453429B1 (en) * 1999-04-29 2002-09-17 International Business Machines Corporation Method and apparatus for bus hang detection and identification of errant agent for fail safe access to trapped error information
US7725803B1 (en) * 2006-11-08 2010-05-25 Lattice Semiconductor Corporation Programmable logic device programming verification systems and methods
TW200849002A (en) * 2007-06-01 2008-12-16 Holtek Semiconductor Inc Control device and control method
JP2009043321A (ja) * 2007-08-08 2009-02-26 Toshiba Corp 光ディスク再生装置
US8762797B2 (en) * 2011-04-29 2014-06-24 Google Inc. Method and apparatus for detecting memory access faults
US9202591B2 (en) * 2013-05-10 2015-12-01 Omnivision Technologies, Inc. On-line memory testing systems and methods
US9495239B1 (en) * 2014-08-22 2016-11-15 Xilinx, Inc. User-configurable error handling
US9583219B2 (en) * 2014-09-27 2017-02-28 Qualcomm Incorporated Method and apparatus for in-system repair of memory in burst refresh
JP6455168B2 (ja) * 2015-01-16 2019-01-23 株式会社デンソー メモリ装置システム
JP2016167669A (ja) * 2015-03-09 2016-09-15 富士通株式会社 プログラマブル論理回路装置及びそのエラー検出方法
US9916217B2 (en) * 2016-01-05 2018-03-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Accessing hidden diagnostic registers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100064205A1 (en) * 2008-09-05 2010-03-11 Moyer William C Selective cache way mirroring
US20110047408A1 (en) * 2009-08-20 2011-02-24 Arm Limited Handling of hard errors in a cache of a data processing apparatus

Also Published As

Publication number Publication date
EP3534262A1 (en) 2019-09-04
US20190272211A1 (en) 2019-09-05
EP3534262B1 (en) 2020-11-04
US11068331B2 (en) 2021-07-20

Similar Documents

Publication Publication Date Title
CN101329916B (zh) 闪存装置纠错码控制器以及相关方法和存储系统
US11113136B2 (en) Processing system, related integrated circuit and method
US9647693B2 (en) Data processing apparatus
US9619324B2 (en) Error correction in non—volatile memory
CN102339641B (zh) 检错/纠错校验模块及该模块读写数据的方法
IT201900005020A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
CN101882119B (zh) 与非型闪存控制器及其数据传输方法
CN106469099B (zh) 在应用wom码的情况下的错误纠正
CN101572125A (zh) 错误更正电路及其方法
IT201800005506A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
IT201800003233A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
US11190218B2 (en) Code rate switching mechanism for data storage system
TW202029210A (zh) 具有階層式錯誤校正碼層的記憶體裝置
JP6248354B2 (ja) インクカートリッジチップ及び当該チップが用いられるインクカートリッジ
CN101488369A (zh) Bch码控制器接口电路
CN101499325B (zh) 一种具有可变纠错能力的非易失性存储系统及方法
US20230065623A1 (en) Processing system error management, related integrated circuit, apparatus and method
CN102568605B (zh) 系统总线检错纠错方法和nand flash控制器
RU2009102315A (ru) Способ построения отказоустойчивого процессора
IT202100007475A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US10635309B2 (en) Method for protecting user data of a storage device, and electronic computing system
CN104637542A (zh) 储存对应于数据的错误更正码的存储器装置及其操作方法
US20230251926A1 (en) Processing system, related integrated circuit and method
US20230409341A1 (en) Processing system, related integrated circuit, device and method
JP2014134843A (ja) メモリシステム