IT202400000057A1 - Sistema di elaborazione e relativo procedimento - Google Patents

Sistema di elaborazione e relativo procedimento

Info

Publication number
IT202400000057A1
IT202400000057A1 IT102024000000057A IT202400000057A IT202400000057A1 IT 202400000057 A1 IT202400000057 A1 IT 202400000057A1 IT 102024000000057 A IT102024000000057 A IT 102024000000057A IT 202400000057 A IT202400000057 A IT 202400000057A IT 202400000057 A1 IT202400000057 A1 IT 202400000057A1
Authority
IT
Italy
Prior art keywords
data
memory controller
memory
response
signal
Prior art date
Application number
IT102024000000057A
Other languages
English (en)
Inventor
Boris Vittorelli
Vivek Mohan Sharma
Mohammad Javed Raies Siddiki
Roberto Colombo
Arjun PAL
Original Assignee
St Microelectronics Int Nv
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 St Microelectronics Int Nv filed Critical St Microelectronics Int Nv
Priority to IT102024000000057A priority Critical patent/IT202400000057A1/it
Priority to US18/937,579 priority patent/US20250225068A1/en
Priority to EP24221778.4A priority patent/EP4582962B1/en
Priority to CN202411985724.6A priority patent/CN120256342A/zh
Publication of IT202400000057A1 publication Critical patent/IT202400000057A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operations
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1637Error detection by comparing the output of redundant processing systems using additional compare functionality in one or some but not all of the redundant processing components
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

[0001] DESCRIZIONE dell?invenzione industriale dal titolo:
[0002] ?Sistema di elaborazione e relativo procedimento?
[0005] TESTO DELLA DESCRIZIONE
[0007] Campo Tecnico
[0008] Le forme di attuazione della presente descrizione sono relative ai sistemi di elaborazione comprendenti un controllore di memoria per una memoria esterna, come un?interfaccia di memoria OctalSPI.
[0009] Sfondo
[0010] 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).
[0011] 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 (?Engine Control Unit?), una Unit? di Controllo della Trasmissione (TCU, ?Transmission Control Unit?), un Sistema Frenante Antiblocco (ABS, ?Anti-lock Braking System?), un modulo di controllo della scocca (BCM, ?Body Control Module?) e/o un sistema audio multimediale e/o di navigazione. Di conseguenza, uno o pi? dei sistemi di elaborazione 10 possono anche implementare funzioni di controllo e di regolazione in tempo reale (?real-time?). Questi sistemi di elaborazione sono identificati di solito come Unit? di Controllo Elettroniche (ECU, ?Electronic Control Unit?).
[0012] La Figura 2 rappresenta uno schema a blocchi di un esempio di un sistema di elaborazione 10 digitale, come un microcontrollore, che pu? essere usato come uno qualsiasi dei sistemi di elaborazione 10 della Figura 1.
[0013] Nell?esempio considerato, il sistema di elaborazione 10 comprende un microprocessore 102, di solito l?Unit? di Elaborazione Centrale (CPU, ?Central Processing Unit?), programmato mediante istruzioni software. Di solito, il software eseguito dal microprocessore 102 ? memorizzato in una memoria di programma 104 non volatile, come una memoria Flash o una EEPROM. Cos?, la memoria 104 ? configurata per memorizzare il firmware dell?unit? di elaborazione 102, in cui il firmware comprende le istruzioni software che devono essere eseguite dal microprocessore 102. Generalmente, la memoria non volatile 104 pu? anche essere usata per memorizzare altri dati, come i dati di configurazione, per es., i dati di calibrazione.
[0014] Il microprocessore 102 ha di solito associata anche una memoria volatile 104b, come una memoria ad accesso casuale (RAM, ?Random-Access-Memory?). Per esempio, la memoria 104b pu? essere usata per memorizzare dati temporanei.
[0015] Come rappresentato nella Figura 2, di solito la comunicazione con le memorie 104 e/o 104b ? effettuata mediante uno o pi? controllori di memoria 100. Il controllore (i controllori) di memoria 100 pu? essere integrato (possono essere integrati) nel microprocessore 102 o connesso (connessi) al microprocessore 102 mediante un canale di comunicazione, come un bus di sistema del sistema di elaborazione 10. Le memorie 104 e/o 104b possono essere integrate con il microprocessore 102 in un singolo circuito integrato, o le memorie 104 e/o 104b possono essere sotto forma di un circuito integrato separato e connesso al microprocessore 102, per es., mediante le piste di una scheda a circuito stampato (PCB, ?Printed Circuit Board?).
[0016] Nell?esempio considerato, il microprocessore 102 pu? avere associate una o pi? periferiche/risorse (hardware) 106, selezionate tra il gruppo di:
[0017] - una o pi? interfacce di comunicazione IF, per es. per scambiare dati tramite il sistema di comunicazione 20, come una interfaccia UART (Universal Asynchronous Receiver/Transmitter), Bus SPI (Serial Peripheral Interface), I2C (Inter-Integrated Circuit), bus CAN (Controller Area Network), e/o una interfaccia Ethernet e/o una interfaccia di debug; e/o
[0018] - uno o pi? convertitori analogico/digitali AD e/o digitale/analogici DA; e/o - uno o pi? componenti digitali DC dedicati, come contatori e/o timer hardware, o un coprocessore crittografico; e/o
[0019] - uno o pi? componenti analogici AC, come comparatori, sensori, come un sensore di temperatura, ecc.; e/o
[0020] - uno o pi? componenti a segnali misti MSC, come un dispositivo di pilotaggio (?driver?) PWM (Pulse-Width Modulation).
[0021] Generalmente, componenti digitali DC dedicati possono corrispondere anche a una FPGA integrata nel sistema di elaborazione 10. Per esempio, in questo caso, la memoria 104 pu? comprendere anche i dati di programma per una tale FPGA.
[0022] Di conseguenza, il sistema di elaborazione 10 digitale pu? supportare differenti funzionalit?. Per esempio, il comportamento del microprocessore 102 ? determinato dal firmware memorizzato nella memoria 104, per es., le istruzioni software che devono essere eseguite da un microprocessore 102 di un microcontrollore 10. Cos?, installando un firmware differente, lo stesso hardware (microcontrollore) pu? essere usato per differenti applicazioni.
[0023] A questo riguardo, ci si aspetta che le future generazioni di tali sistemi di elaborazione 10, per es., microcontrollori atti a essere usati nelle applicazioni automotive, presentino un aumento della complessit?, dovuto principalmente al numero crescente di funzionalit? richieste (nuovi protocolli, nuove caratteristiche, ecc.) e ai vincoli stringenti delle condizioni di esecuzione (per es., un consumo di potenza pi? basso, maggiore velocit? e potenza di calcolo, ecc.). In parallelo alla crescita della complessit?, ? anche richiesta una grande flessibilit? nella configurazione del microcontrollore al fine di andare bene per applicazioni singolo prodotto che erano allocate precedentemente su sistemi di elaborazione 10 separati.
[0024] Per esempio, recentemente sono stati proposti sistemi di elaborazione multi-core 10 pi? complessi. Per esempio, tali sistemi di elaborazione multi-core possono essere usati per eseguire (in parallelo) alcuni dei sistemi di elaborazione 10 rappresentati nella Figura 1, come alcune ECU di un veicolo.
[0025] La Figura 3 rappresenta un esempio ulteriore di un sistema di elaborazione 10, come un sistema di elaborazione multi-core 10. Specificamente, nell?esempio considerato, il sistema di elaborazione 10 comprende una pluralit? di n core di elaborazione 102<1>...102<n >connessi a un sistema di comunicazione (on-chip) 114. Per esempio, nel contesto dei sistemi di controllo in tempo reale, i core di elaborazione 1021...102n possono essere core ARM Cortex?-R52. Generalmente, il sistema di comunicazione 114 pu? comprendere uno o pi? sistemi di bus, per es., basati sull?architettura di bus AXI (Advanced eXtensible Interface), e/o un NoC (Network-on-Chip).
[0026] Per esempio, come rappresentato nell?esempio del core di elaborazione 102<1>, ciascun core di elaborazione 102 pu? comprendere un microprocessore 1020 e un?interfaccia di comunicazione 1022 configurata per gestire la comunicazione tra il microprocessore 1020 e il sistema di comunicazione 114. Tipicamente, l?interfaccia 1022 ? un?interfaccia master configurata per inoltrare una data richiesta (di lettura o di scrittura) dal microprocessore 1020 al sistema di comunicazione 114, e per inoltrare una risposta opzionale dal sistema di comunicazione 114 al microprocessore 1020. Tuttavia, l?interfaccia di comunicazione 1022 pu? anche comprendere un?interfaccia slave. Per esempio, in questo modo, un primo microprocessore 1020 pu? inviare una richiesta a un secondo microprocessore 1020 (mediante l?interfaccia di comunicazione 1022 del primo microprocessore, il sistema di comunicazione 114 e l?interfaccia di comunicazione 1022 del secondo microprocessore). Generalmente, ciascun core di elaborazione 1021...102n pu? comprendere anche ulteriori risorse locali, come una o pi? memorie locali 1026, identificata di solito come TCM (Tightly Coupled Memory).
[0027] Come menzionato in precedenza, tipicamente i core di elaborazione 102<1>...102<n >sono disposti per scambiare dati con una o pi? memorie non volatili 104 e/o una o pi? memorie volatili 104b. In un sistema di elaborazione multi-core 10, spesso queste memorie sono memorie di sistema, cio?, condivise per i core di elaborazione 102<1>...102<n>.
[0028] Come menzionato in precedenza, ciascun core di elaborazione 102<1>...102<n >pu? comprendere, tuttavia, una o pi? memorie locali 1026 aggiuntive. Per esempio, come rappresentato nella Figura 3, il sistema di elaborazione 10 pu? comprendere uno o pi? controllori di memoria 100 configurati per connettere almeno una memoria non volatile 104 e almeno una memoria volatile 104b al sistema di comunicazione 114.
[0029] Come menzionato in precedenza, il sistema di elaborazione 10 pu? comprendere una o pi? risorse 106, come una o pi? interfacce di comunicazione o coprocessori (per es., un coprocessore crittografico). Le risorse 106 sono connesse di solito al sistema di comunicazione 114 mediante una rispettiva interfaccia di comunicazione 1062, come un dispositivo ponte periferico (?peripheral bridge?). Per esempio, a questo scopo, il sistema di comunicazione 114 pu? comprendere in effetti un Bus ad Alte Prestazioni (AHB, ?High-performance Bus?) AMBA (Advanced Microcontroller Bus Architecture), e un Bus Periferico Avanzato (APB, ?Advanced Peripheral Bus?) usato per connettere le risorse/periferiche 106 al bus AHB AMBA. In generale, l?interfaccia di comunicazione 1062 comprende almeno un?interfaccia slave. Per esempio, in questo modo, un core di elaborazione 102 pu? inviare una richiesta a una risorsa 106 e la risorsa restituisce dati forniti. Generalmente, una o pi? delle interfacce di comunicazione 1062 possono anche comprendere una rispettiva interfaccia master. Per esempio, una tale interfaccia master, spesso identificata come controllore di Accesso Diretto in Memoria (DMA, ?Direct Memory Access?) integrato, pu? essere utile nel caso in cui la risorsa debba iniziare una comunicazione al fine di scambiare dati mediante una richiesta (di lettura e/o di scrittura) con un altro circuito connesso al sistema di comunicazione 114, come una risorsa 106 o un core di elaborazione 102.
[0030] Spesso tali sistemi di elaborazione 10 comprendono anche uno o pi? controllori DMA 110 non specializzati (?general-purpose?). Per esempio, come rappresentato nella Figura 3, un controllore DMA 110 pu? essere usato per scambiare direttamente dati con una memoria, per es., la memoria 104b, in base alle richieste ricevute da una risorsa 106. Per esempio, in questo modo, un?interfaccia di comunicazione pu? leggere direttamente dati (mediante il controllore DMA 110) dalla memoria 104b e trasmettere questi dati, senza dovere scambiare ulteriori dati con un?unit? di elaborazione 102. Generalmente, un controllore DMA 110 pu? comunicare con la memoria o le memorie mediante il sistema di comunicazione 114 o mediante uno o pi? canali di comunicazione dedicati.
[0031] Come menzionato in precedenza, una o pi? delle memorie 104 e/o 104b possono essere connesse all?esterno di un circuito integrato del sistema di elaborazione 10. Per esempio, il sistema di elaborazione 10 pu? comprendere:
[0032] - una prima memoria 104 e/o 104a integrata nel circuito integrato del sistema di elaborazione 10 e connessa al sistema di comunicazione 114 mediante un primo controllore di memoria 100, e
[0033] - una seconda memoria 104 e/o 104a esterna rispetto al circuito integrato del sistema di elaborazione 10 e connessa al sistema di comunicazione 114 mediante un secondo controllore di memoria 100.
[0034] Nel contesto delle applicazioni automotive, tali sistemi di elaborazione 10 e i rispettivi sottosistemi possono dovere soddisfare dati livelli ASIL (Automotive Safety Integrity Level) definiti da ISO 26262. Similmente, possono anche essere definiti dei livelli di sicurezza per altre applicazioni. Per esempio, possibili soluzioni per implementare protezioni di incolumit? del sottosistema di memoria sono descritte nelle Pubblicazioni delle Domande di Brevetto Statunitense nn. US 2020/0310683 A1, US 2022/0243437 A1, US 2022/0180959 A1 e US 2019/0220346 A1, e nel Brevetto Statunitense n. US 11,392,455 B1, che sono incorporati qui tramite riferimento a questo scopo.
[0035] Sintesi
[0036] In considerazione di quanto precede, uno scopo delle varie forme di attuazione della presente descrizione ? di fornire soluzioni migliorate per interfacciare una o pi? memorie esterne con un sistema di elaborazione, come un microcontrollore.
[0037] 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, dispositivo e procedimento.
[0038] Le rivendicazioni sono parte integrante dell?insegnamento tecnico della descrizione qui fornita.
[0039] Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un sistema di elaborazione integrato in un circuito integrato. In varie forme di attuazione, il sistema di elaborazione comprende un sistema di comunicazione, un sottosistema di memoria configurato per interfacciare una memoria che ? esterna rispetto al circuito integrato e un circuito master configurato per inviare richieste di scrittura e di lettura mediante il sistema di comunicazione al sottosistema di memoria per memorizzare dati nella memoria e leggere dati da essa. Per esempio, il circuito master pu? essere un microprocessore o un controllore DMA. Specificamente, in varie forme di attuazione, il sottosistema controllore di memoria ? connesso al sistema di comunicazione e a un canale di comunicazione connesso ai terminali del circuito integrato configurato per essere connesso alla memoria. Specificamente, il canale di comunicazione comprende almeno un segnale di dati. Per esempio, il canale di comunicazione pu? essere un bus SPI (Serial Peripheral Interface) o OctalSPI.
[0040] In varie forme di attuazione, il sottosistema controllore di memoria comprende un primo controllore di memoria e un secondo controllore di memoria. Ciascuno del primo controllore di memoria e del secondo controllore di memoria ? configurato per ricevere una richiesta di scrittura o di lettura comprendente dati che indicano un indirizzo di memoria e, nel caso di una richiesta di scrittura, rispettivi dati da memorizzare. In risposta alla ricezione di una richiesta di scrittura, il controllore di memoria estrae dalla richiesta di scrittura il rispettivo indirizzo di memoria e i rispettivi dati da memorizzare, e genera una rispettiva prima o seconda comunicazione per memorizzare i rispettivi dati estratti al rispettivo indirizzo di memoria estratto generando un rispettivo primo o secondo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti. Per contro, in risposta alla ricezione di una richiesta di lettura, il controllore di memoria estrae dalla richiesta di lettura il rispettivo indirizzo di memoria, e genera la rispettiva prima o seconda comunicazione per ricevere dati associati all?indirizzo di memoria estratto generando il rispettivo primo o secondo segnale di dati al fine di trasmettere il rispettivo indirizzo di memoria estratto e ricevere i rispettivi dati associati all?indirizzo di memoria estratto. Inoltre, in risposta al fatto di avere ricevuto i rispettivi dati, il controllore di memoria genera una rispettiva prima o seconda risposta comprendente i rispettivi dati ricevuti.
[0041] In varie forme di attuazione, in una prima modalit? di funzionamento, la prima comunicazione del primo controllore di memoria ? connessa al canale di comunicazione, per cui il primo segnale di dati corrisponde al segnale di dati.
[0042] In varie forme di attuazione, nella prima modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di scrittura, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di scrittura ricevuta al primo controllore di memoria e al secondo controllore di memoria, per cui il primo controllore di memoria genera il rispettivo primo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti e il secondo controllore di memoria genera il rispettivo secondo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti. Inoltre, il sottosistema controllore di memoria ? configurato per confrontare il primo segnale di dati con il secondo segnale di dati e, in risposta a una determinazione che il primo segnale di dati non corrisponde al secondo segnale di dati, per asserire un primo segnale di errore.
[0043] In varie forme di attuazione, nella prima modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di lettura, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di lettura ricevuta al primo controllore di memoria e al secondo controllore di memoria, per cui il primo controllore di memoria genera il rispettivo primo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e per ricevere i rispettivi dati associati al rispettivo indirizzo di memoria estratto e il secondo controllore di memoria genera il rispettivo secondo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e per ricevere i rispettivi dati associati al rispettivo indirizzo di memoria estratto. Inoltre, il primo controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti e il secondo controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti. Inoltre, in risposta a una determinazione che il primo controllore di memoria trasmette l?indirizzo di memoria estratto mediante il primo segnale di dati, il sottosistema controllore di memoria ? configurato per confrontare il primo segnale di dati con il secondo segnale di dati e, in risposta a una determinazione che il primo segnale di dati non corrisponde al secondo segnale di dati, per asserire un secondo segnale di errore. Per contro, in risposta a una determinazione che il primo controllore di memoria riceve i rispettivi dati mediante il primo segnale di dati, il sottosistema controllore di memoria ? configurato per connettere il primo segnale di dati al secondo segnale di dati, confrontare la prima risposta generata dal primo controllore di memoria con la seconda risposta generata dal secondo controllore di memoria e, in risposta a una determinazione che la prima risposta non corrisponde alla seconda risposta, asserire un terzo segnale di errore.
[0044] In varie forme di attuazione, in una seconda modalit? di funzionamento, la prima comunicazione del primo controllore di memoria e la seconda comunicazione del secondo controllore di memoria sono connesse al canale di comunicazione, per cui il primo segnale di dati e il secondo segnale di dati corrispondono al segnale di dati. Specificamente, in questo caso, il canale di comunicazione ? un canale di comunicazione condiviso.
[0045] In varie forme di attuazione, nella seconda modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di scrittura, il sottosistema controllore di memoria ? configurato per selezionare uno tra il primo controllore di memoria e il secondo controllore di memoria, e per inoltrare la richiesta di scrittura ricevuta all?un controllore di memoria, per cui l?un controllore di memoria genera il rispettivo primo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti. In seguito, il sottosistema controllore di memoria seleziona l?altro tra il primo controllore di memoria e il secondo controllore di memoria, e inoltra la richiesta di scrittura ricevuta all?altro controllore di memoria, per cui l?altro controllore di memoria genera il rispettivo primo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti.
[0046] In varie forme di attuazione, nella seconda modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di lettura, il sottosistema controllore di memoria ? configurato per selezionare uno tra il primo controllore di memoria e il secondo controllore di memoria, e per inoltrare la richiesta di lettura ricevuta all?un controllore di memoria, per cui l?un controllore di memoria genera il rispettivo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e riceve i rispettivi dati associati al rispettivo indirizzo di memoria estratto, e l?un controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti. In seguito, il sottosistema controllore di memoria seleziona l?altro tra il primo controllore di memoria e il secondo controllore di memoria, e inoltra la richiesta di lettura ricevuta all?altro controllore di memoria, per cui l?altro controllore di memoria genera il rispettivo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e riceve i rispettivi dati associati al rispettivo indirizzo di memoria estratto, e l?altro controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti. In seguito, il sottosistema controllore di memoria confronta la prima risposta generata dal primo controllore di memoria con la seconda risposta generata dal secondo controllore di memoria e, in risposta a una determinazione che la prima risposta non corrisponde alla seconda risposta, asserire un quarto segnale di errore.
[0047] In varie forme di attuazione, nella prima e/o nella seconda modalit? di funzionamento, la prima e la seconda risposta comprendono rispettivi primi e secondi segnali di controllo di risposta. In questo caso, il sottosistema controllore di memoria pu? essere configurato per confrontare i primi segnali di controllo di risposta generati dal primo controllore di memoria con i secondi segnali di controllo di risposta generati dal secondo controllore di memoria e, in risposta a una determinazione che i primi segnali di controllo di risposta non corrispondono ai secondi segnali di controllo di risposta, per asserire un quinto segnale di errore.
[0048] In varie forme di attuazione, in una terza modalit? di funzionamento, la prima comunicazione del primo controllore di memoria e la seconda comunicazione del secondo controllore di memoria sono connesse al canale di comunicazione, per cui il primo segnale di dati e il secondo segnale di dati corrispondono al segnale di dati. Specificamente, in questo caso, il canale di comunicazione ? un canale di comunicazione condiviso.
[0049] In varie forme di attuazione, nella terza modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di scrittura, il sottosistema controllore di memoria ? configurato per determinare se la richiesta di scrittura comprende dati che indicano un indirizzo di memoria associato al primo controllore di memoria o dati che indicano un indirizzo di memoria associato al secondo controllore di memoria. In risposta a una determinazione che la richiesta di scrittura comprende dati che indicano un indirizzo di memoria associato al primo controllore di memoria, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di scrittura ricevuta al primo controllore di memoria, per cui il primo controllore di memoria genera il rispettivo primo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti. Per contro, in risposta a una determinazione che la richiesta di scrittura comprende dati che indicano un indirizzo di memoria associato al secondo controllore di memoria, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di scrittura ricevuta al secondo controllore di memoria, per cui il secondo controllore di memoria genera il rispettivo secondo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e i rispettivi dati estratti.
[0050] In varie forme di attuazione, nella terza modalit? di funzionamento, in risposta alla ricezione dal sistema di comunicazione di una richiesta di lettura, il sottosistema controllore di memoria ? configurato per determinare se la richiesta di lettura comprende dati che indicano un indirizzo di memoria associato al primo controllore di memoria o dati che indicano un indirizzo di memoria associato al secondo controllore di memoria. In risposta a una determinazione che la richiesta di lettura comprende dati che indicano un indirizzo di memoria associato al primo controllore di memoria, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di lettura ricevuta al primo controllore di memoria, per cui il primo controllore di memoria genera il rispettivo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e riceve i rispettivi dati associati al rispettivo indirizzo di memoria estratto, e il primo controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti. Per contro, in risposta a una determinazione che la richiesta di lettura comprende dati che indicano un indirizzo di memoria associato al primo controllore di memoria, il sottosistema controllore di memoria ? configurato per inoltrare la richiesta di lettura ricevuta al primo controllore di memoria, per cui il primo controllore di memoria genera il rispettivo segnale di dati usato per trasmettere il rispettivo indirizzo di memoria estratto e riceve i rispettivi dati associati al rispettivo indirizzo di memoria estratto, e il primo controllore di memoria genera la rispettiva risposta comprendente i rispettivi dati ricevuti.
[0051] In varie forme di attuazione, per es., nella seconda e nella terza modalit? di funzionamento, il canale di comunicazione condiviso comprende un primo segnale di chip-enable atto ad abilitare una prima memoria e un secondo segnale di chip-enable atto ad abilitare una seconda memoria. In questo caso, il primo controllore di memoria pu? essere configurato per asserire il primo segnale di chip select quando trasmette o riceve dati mediante il primo segnale di dati e il secondo controllore di memoria ? configurato per asserire il secondo segnale di chip select quando trasmette o riceve dati mediante il secondo segnale di dati.
[0052] In varie forme di attuazione, il sottosistema controllore di memoria comprende un primo circuito di Codice di Correzione di Errori (ECC, ?Error-Correction Code?) associato al primo controllore di memoria e un secondo circuito di ECC associato al secondo controllore di memoria. In questo caso, in risposta alla ricezione di una richiesta di scrittura, ciascun controllore di memoria pu? essere configurato per calcolare bit di ECC mediante il rispettivo primo o secondo circuito di ECC, e trasmettere il rispettivo indirizzo di memoria estratto, i rispettivi dati estratti e i rispettivi bit di ECC calcolati. Per contro, in risposta alla ricezione di una richiesta di lettura, ciascun controllore di memoria pu? essere configurato per trasmettere il rispettivo indirizzo di memoria estratto e per ricevere i rispettivi dati e rispettivi bit di ECC, calcolare mediante il rispettivo primo o secondo circuito di ECC ulteriori bit di ECC, e confrontare gli ulteriori bit di ECC con i bit di ECC ricevuti e, in risposta a una determinazione che gli ulteriori bit di ECC non corrispondono ai bit di ECC ricevuti, asserire un segnale di errore di ECC. In varie forme di attuazione, i circuiti di ECC possono essere circuiti di rilevazione e di correzione di errori configurati per generare dati corretti, in cui la prima o la seconda risposta comprende i rispettivi dati corretti. In varie forme di attuazione, i circuiti di ECC possono essere configurati per calcolare i rispettivi bit di ECC in funzione dei rispettivi dati estratti o dati ricevuti e il rispettivo indirizzo di memoria.
[0053] In varie forme di attuazione, il sottosistema controllore di memoria pu? supportare una pluralit? di modalit? e il sottosistema controllore di memoria pu? comprendere un circuito di controllo configurato per ricevere dati di configurazione e per selezionare una tra la prima, la seconda o la terza modalit? di funzionamento in funzione dei dati di configurazione.
[0054] Breve descrizione delle figure
[0055] Forme di attuazione della presente descrizione saranno ora descritte con riferimento ai disegni annessi, che sono forniti puramente a titolo di esempio non limitativo, e nei quali:
[0056] - la Figura 1 rappresenta un esempio di un sistema elettronico comprendente una pluralit? di sistemi di elaborazione;
[0057] - la Figura 2 rappresenta un esempio di un sistema di elaborazione, come un microcontrollore;
[0058] - la Figura 3 rappresenta un esempio di un sistema di elaborazione multi-core; - la Figura 4 rappresenta una forma di attuazione di un sistema di elaborazione secondo la presente descrizione;
[0059] - le Figure 5 e 6 rappresentano forme di attuazione di un sottosistema controllore di memoria per il sistema di elaborazione della Figura 4;
[0060] - la Figura 7 rappresenta una forma di attuazione dell?implementazione di una richiesta di scrittura in una prima modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6;
[0061] - la Figura 8 rappresenta una forma di attuazione dell?implementazione di una richiesta di lettura nella prima modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6;
[0062] - la Figura 9 rappresenta una forma di attuazione dell?implementazione di una richiesta di scrittura in una seconda modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6;
[0063] - la Figura 10 rappresenta una forma di attuazione dell?implementazione di una richiesta di lettura nella seconda modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6;
[0064] - la Figura 11 rappresenta una forma di attuazione dell?implementazione di una richiesta di scrittura in una terza modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6; e
[0065] - la Figura 12 rappresenta una forma di attuazione dell?implementazione di una richiesta di lettura nella terza modalit? di funzionamento del sottosistema controllore di memoria delle Figure 5 o 6.
[0066] Descrizione Dettagliata
[0067] 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 rappresentate o descritte in dettaglio per evitare di rendere poco chiari certi aspetti delle forme di attuazione.
[0068] 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? o simili che compaiono in vari punti in tutta questa 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.
[0069] I riferimenti usati qui sono forniti semplicemente per convenienza e non definiscono l?ambito o il significato delle forme di attuazione.
[0070] Nelle Figure da 4 a 12 che seguono, le parti, gli elementi o i componenti che sono gi? stati descritti con riferimento alle Figure da 1 a 3 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.
[0071] Come menzionato in precedenza, varie forme di attuazione della presente descrizione forniscono soluzioni migliorate per interfacciare una o pi? memorie esterne con un sistema di elaborazione, come un microcontrollore.
[0072] La Figura 4 rappresenta una forma di attuazione di un sistema di elaborazione 10a secondo la presente descrizione. Specificamente, nella forma di attuazione considerata, il sistema di elaborazione 10a comprende un circuito master 54 connesso un controllore di memoria 50 mediante un sistema di comunicazione 52.
[0073] Specificamente, il circuito master 54 pu? essere un qualsiasi circuito di elaborazione digitale configurato per inviare richieste (di lettura e di scrittura) mediante il sistema di comunicazione 52 al controllore di memoria 50. Per esempio, in linea con la descrizione delle Figure 2 e 3, il circuito master 54 pu? essere un core di elaborazione 102 comprendente un microprocessore 1020, o un controllore DMA integrato o non specializzato, come un controllore DMA 110. Di conseguenza, il sistema di comunicazione 52 pu? comprendere un bus del sistema o un NoC del sistema 114 e/o un canale di comunicazione DMA dedicato.
[0074] Specificamente, il controllore di memoria 50 ? configurato per interfacciare una memoria esterna 42, cio?, la memoria 42 ? all?esterno rispetto a un circuito integrato 40 comprendente il circuito master 54, il sistema di comunicazione 52 e il controllore di memoria 50. In generale, la memoria esterna 42 pu? essere una memoria non volatile o una memoria volatile. Di conseguenza, rispetto alle Figure 2 e 3, in varie forme di attuazione, il controllore di memoria 50 pu? essere usato come un controllore di memoria 100 configurato per interfacciare una memoria non volatile 104 o una memoria volatile 104b con un sistema di comunicazione 114 del sistema di elaborazione 10a.
[0075] In varie forme di attuazione, come rappresentato nella Figura 4, il circuito master 54 ? configurato per inviare richieste di lettura e di scrittura al controllore di memoria 50, in cui queste richieste sono trasmesse mediante il sistema di comunicazione 52. Di conseguenza, il controllore di memoria 50 ? configurato per scambiare con il sistema di comunicazione 52 vari segnali COM per comunicare la richiesta e una possibile risposta.
[0076] Per esempio, a questo scopo, ciascuna richiesta pu? comprendere dati di indirizzo ADR che indicano un indirizzo nell?intervallo di indirizzi fisici del sistema di comunicazione 52, in cui un dato intervallo di indirizzi dell?intervallo di indirizzi fisici del sistema di comunicazione 52 ? associato al controllore di memoria 50, cio?, il sistema di comunicazione 52 ? configurato per inoltrare richieste indirizzate a un dato intervallo di indirizzi fisici al controllore di memoria 50. A questo riguardo, il controllore di memoria 50 pu? essere configurato per mappare l?indirizzo ADR dell?intervallo di indirizzi fisici associato al controllore di memoria 50 su rispettivi indirizzi della memoria 42. In generale, questa operazione di mappatura di indirizzo ? puramente opzionale, perch? l?indirizzo fisico del sistema di comunicazione 52 pu? anche corrispondere direttamente all?indirizzo di memoria, per es., nel caso di un canale DMA dedicato.
[0077] Per esempio, nel caso in cui il sistema di comunicazione 52 sia un NoC o un bus del sistema, il sistema di elaborazione 10a pu? comprendere una o pi? ulteriori interfacce slave connesse al sistema di comunicazione 52, in cui un rispettivo intervallo di indirizzi fisici ? associato a ciascuna interfaccia slave. Per esempio, tali interfacce slave possono essere usate per interfacciare il sistema di comunicazione 52 con una o pi? risorse/periferiche 106 (o con un rispettivo dispositivo ponte periferico) e/o un ulteriore controllore di memoria 100. Di conseguenza, il sistema di elaborazione 10a pu? essere un microcontrollore, come un microcontrollore multi-core, come descritto con riferimento alle Figure 2 e 3.
[0078] In varie forme di attuazione, il circuito master 54 ? configurato per segnalare una richiesta mediante uno o pi? segnali di controllo di richiesta CREQ, per es., che indicano che dovrebbe essere trasmessa una richiesta e il tipo della richiesta. Per esempio, il segnale CREQ pu? comprendere un segnale REQ che ? asserito, per es., impostato alto, per indicare una richiesta, e un segnale W_R che ? impostato a un primo livello logico, per es., basso, per indicare una richiesta di lettura e a un secondo livello logico, per es., alto, per indicare una richiesta di scrittura.
[0079] In varie forme di attuazione, in risposta a una richiesta, il controllore di memoria 50 pu? trasmettere una risposta al circuito master 54, in cui questa risposta ? trasmessa di nuovo mediante il sistema di comunicazione 52.
[0080] Per esempio, nel caso di una richiesta di scrittura, la richiesta di scrittura comprende anche dati da trasmettere al controllore di memoria 50. In risposta al fatto di avere ricevuto la richiesta di scrittura, il controllore di memoria 50 pu? quindi scrivere i dati ricevuti nella memoria 42, in cui il rispettivo indirizzo di memoria ? indicato mediante i dati di indirizzo ADR (per es., mappando l?indirizzo ADR su un rispettivo indirizzo di memoria). Di conseguenza, in questo caso, il controllore di memoria 50 pu? trasmettere una risposta al circuito master 54 comprendente uno o pi? segnali di controllo di risposta CRES che indicano se la richiesta di scrittura ? stata ricevuta e/o se l?operazione di scrittura ha avuto successo oppure no. In generale, una tale risposta ? puramente opzionale nel caso di una richiesta di scrittura.
[0081] Per contro, in risposta al fatto di avere ricevuto una richiesta di lettura, il controllore di memoria 50 pu? leggere dati dalla memoria 42, in cui il rispettivo indirizzo di memoria ? indicato mediante i dati di indirizzo ADR (per es., mappando l?indirizzo ADR su un rispettivo indirizzo di memoria). Di conseguenza, in questo caso, il controllore di memoria 50 pu? trasmettere una risposta al circuito master 54, in cui la risposta comprende i dati che sono stati letti dalla memoria 42. In varie forme di attuazione, la risposta pu? comprendere anche ulteriori dati di controllo di risposta CRES, per es., associati a un?operazione di correzione di errori.
[0082] In generale, il sistema di comunicazione 52 (e cos? anche il circuito master 54 e il controllore di memoria 50) pu? essere configurato per scambiare i dati (di scrittura) trasmessi dal circuito master 54 e i dati (di lettura) trasmessi dal controllore di memoria 50 mediante un segnale di dati DATA bidirezionale condiviso (come rappresentato nella Figura 4) o mediante due segnali di dati separati, per es., DATA_IN e DATA_OUT. Tipicamente, il segnale di dati DATA ha (o i segnali di dati DATA_IN e DATA_OUT hanno) un dato numero di bit, come 8, 16 o 32 bit.
[0083] Di conseguenza, in varie forme di attuazione, il controllore di memoria 50 ? configurato per ricevere una comunicazione COM dal sistema di comunicazione 52, in cui la comunicazione COM comprende una richiesta di lettura o una richiesta di scrittura, e per eseguire la richiesta comunicando con la memoria esterna 42 usando ulteriori segnali EXT.
[0084] In generale, nella tecnica sono noti vari tipi di controllori di memoria 50. Per esempio, il controllore di memoria 50 pu? essere un controllore di memoria SPI o uno OctalSPI. Per esempio, nel caso di un?interfaccia SPI, il controllore di memoria 50 comunica con la memoria 42 mediante quattro segnali: un segnale di ingresso di dati (?data-in?) SIN, un segnale di uscita di dati (?data-out?) SOUT, un segnale di clock SCK e un segnale di chip-select SCS. Per contro, come anche rappresentato nella Figura 4, nel caso di OctalSPI, spesso identificato anche come OctoSPIOctalSPI, il controllore di memoria 50 comunica con la memoria 42 mediante un segnale di clock CLK, un segnale di chip-select SCS e otto segnali di dati bidirezionali IO[7:0], che cos? possono essere usati per trasmettere in parallelo otto bit in risposta a un segnale di clock CLK. Di conseguenza, in questo caso, il circuito integrato 40 comprende, per ciascuno di questi segnali, un rispettivo pad di un die del circuito integrato 40 o pin di un circuito integrato con package 40.
[0085] Per esempio, in varie forme di attuazione, il sistema di comunicazione 52 ? configurato per usare un indirizzo ADR con 32 bit e dati DATA con 32 bit. Di conseguenza, in questo caso, l?interfaccia OctalSPI del controllore di memoria 50 pu? essere configurata per usare quattro cicli per trasmettere l?indirizzo ADR e quattro cicli per scambiare (cio?, inviare o ricevere) i rispettivi dati DATA. Inoltre, di solito uno o pi? cicli sono usati per trasmettere un comando/un?istruzione che indica un?operazione di scrittura o di lettura. In generale, il campionamento dei valori dei segnali IO pu? avvenire in risposta a un fronte di salita e/o a un fronte di discesa del segnale di clock CLK.
[0086] L?interfaccia OctalSPI e le sue varianti, come Hexadeca-SPI, sono ben note nella tecnica, per es., nel contesto dei microcontrollori basati su STM32. Per esempio, si pu? fare riferimento alla nota applicativa AN5050 "Getting started with Octo-SPI and Hexadeca-SPI Interface on STM32 microcontrollers", Marzo 2023, che ? incorporata qui tramite riferimento a questo scopo.
[0087] In generale, invece di usare OctalSPI, il controllore di memoria 50 e la memoria 42 possono anche usare un altro protocollo di comunicazione. Specificamente, in varie forme di attuazione, il protocollo di comunicazione ? un protocollo di comunicazione seriale o almeno sequenziale, cio?, un protocollo di comunicazione che usa uno o pi? segnali di dati IO, in cui il numero dei segnali di dati ? preferibilmente minore del numero dei bit dei dati DATA scambiati mediante il sistema di comunicazione 52. Specificamente, in varie forme di attuazione, questo protocollo di comunicazione ? un protocollo di comunicazione sincrono, cio?, il controllore di memoria 50 ? configurato per generare un segnale di clock CLK. Come menzionato in precedenza, in varie forme di attuazione, i segnali IO sono usati per scambiare un comando che indica un?operazione di lettura o un?operazione di scrittura, un rispettivo indirizzo di memoria e i rispettivi dati (letti dalla memoria o da scrivere nella memoria, rispettivamente).
[0088] In varie forme di attuazione, il controllore di memoria 50 e la memoria 42 sono configurati per usare un protocollo di comunicazione avente un segnale di chip-select CS, come SPI o OctalSPI. In effetti, in questo caso, una pluralit? di memoria 42 possono essere connessi in parallelo agli stessi segnali di clock e di dati, per es., ai segnali CLK e IO, in cui ciascuna memoria 42 riceve un rispettivo segnale di chip-select. Di conseguenza, in questo caso, l?interfaccia di memoria 50 (o un altro circuito del sistema di elaborazione 10a, come un core di elaborazione 102) pu? abilitare una delle memorie 42 asserendo il rispettivo segnale di chip-select. Per esempio, nel caso di una OctalSPI, una memoria 42 ? abilitata quando il rispettivo segnale di chip-select ? impostato basso.
[0089] Di conseguenza, in varie forme di attuazione, il controllore di memoria 50 pu? essere connesso al sistema di comunicazione 52 come un qualsiasi altro controllore di memoria del sistema di elaborazione 10a, per cui un dispositivo master 54 del sistema di comunicazione 52 pu? comunicare con il controllore di memoria 50 (come un qualsiasi altro controllore di memoria 100) inviando richieste di transazioni di memoria COM al controllore di memoria 50. Per contro, la comunicazione EXT con la memoria esterna 42 pu? usare un sistema di comunicazione che ha meno fili.
[0090] La Figura 5 rappresenta una forma di attuazione di un sottosistema controllore di memoria 50a secondo la presente descrizione. Specificamente, questo sottosistema controllore di memoria 50a pu? essere usato come il controllore di memoria 50 della Figura 4.
[0091] Nella forma di attuazione considerata, il sottosistema controllore di memoria 50a comprende almeno un primo controllore di memoria 500a e un secondo controllore di memoria 500b.
[0092] Specificamente, in varie forme di attuazione, il controllore di memoria 500a ? configurato per ricevere richieste di lettura e di scrittura mediante segnali COMa. In risposta al fatto di avere ricevuto una richiesta mediante i segnali COMa, il controllore di memoria 500a genera segnali EXTa per comunicare con una memoria esterna. Specificamente, in risposta a una richiesta di lettura ricevuta mediante i segnali COMa, il controllore di memoria 500a genera i segnali EXTa al fine di leggere dati da un indirizzo di memoria indicato dalla richiesta di lettura e genera quindi una risposta che ? comunicata mediante i segnali COMa. Per contro, in risposta a una richiesta di scrittura ricevuta mediante i segnali COMa, il controllore di memoria 500a genera i segnali EXTa al fine di scrivere i dati ricevuti con la richiesta di scrittura a un indirizzo di memoria indicato dalla richiesta di scrittura.
[0093] Similmente, in varie forme di attuazione, il controllore di memoria 500b ? configurato per ricevere richieste di lettura e di scrittura mediante segnali COMb. In risposta al fatto di avere ricevuto una richiesta mediante i segnali COMb, il controllore di memoria 500a genera segnali EXTb per comunicare con una memoria esterna. Specificamente, in risposta a una richiesta di lettura ricevuta mediante i segnali COMb, il controllore di memoria 500b genera i segnali EXTb al fine di leggere dati da un indirizzo di memoria indicato dalla richiesta di lettura e genera quindi una risposta che ? comunicata mediante i segnali COMb. Per contro, in risposta a una richiesta di scrittura ricevuta mediante i segnali COMb, il controllore di memoria 500a genera i segnali EXTb al fine di scrivere i dati ricevuti con la richiesta di scrittura a un indirizzo di memoria indicato dalla richiesta di scrittura.
[0094] Per esempio, in modo simile a quanto ? stato descritto con riferimento alla Figura 4, ciascuno dei controllori di memoria 500a e 500b pu? essere configurato per ricevere richieste di lettura e di scrittura usando i segnali ADR, DATA (o DATA_IN e DATA_OUT), CREQ e CRES descritti in precedenza. Di conseguenza, ciascuno dei segnali COMa e COMb pu? comprendere tali segnali, come i segnali DATA_INa e DATA_OUTa (o DATAa), ADRa, CREQa e CRESa per la comunicazione COMa, e i segnali DATA_INb e DATA_OUTb (o DATAb), ADRb, CREQb e CRESb per la comunicazione COMb. Inoltre, per comunicare con una memoria, ciascun controllore di memoria 500a e 500b pu? essere configurato per generare un segnale di clock CLK, uno o pi? segnali di dati IO e preferibilmente un segnale di chip-select CS. Di conseguenza, ciascuno dei segnali EXTa ed EXTb pu? comprendere tali segnali, come i segnali CLKa, IOa e CSa per la comunicazione EXTa, e CLKb, IOb e CSb per la comunicazione EXTb.
[0095] In varie forme di attuazione, il sottosistema controllore di memoria 50a comprende anche un circuito di confronto 504 configurato per confrontare uno o pi? segnali e per generare uno o pi? segnali di errore ERR in funzione del confronto. Per esempio, l?uno o pi? segnali di errore ERR possono essere forniti a un circuito di raccolta guasti e gestione degli errori del sistema di elaborazione 10a. Per esempio, un tale circuito di raccolta guasti e gestione degli errori pu? essere configurato per generare un interrupt o un reset del sistema di elaborazione 10a in funzione dell?uno o pi? segnali di errore ERR.
[0096] In varie forme di attuazione, il sottosistema controllore di memoria 50a pu? anche comprendere un primo circuito di rilevazione e opzionalmente di correzione di errori 502a associato al controllore di memoria 500a e un secondo circuito di rilevazione e opzionalmente di correzione di errori 502b associato al controllore di memoria 500b. Per esempio, come ben noto di per s? nella tecnica, un circuito di rilevazione di errori pu? usare un Codice di Correzione di Errori (ECC). Per esempio, in questo caso, il circuito di rilevazione di errori riceve una pluralit? di bit e rispettivi bit di ECC, e calcola ulteriori bit di ECC per la pluralit? di bit. A questo riguardo, in base allo schema di ECC usato, il circuito di rilevazione di errori pu? rilevare e pu? opzionalmente correggere gli errori nella pluralit? dei bit confrontando i bit di ECC calcolati con i bit di ECC ricevuti.
[0097] In varie forme di attuazione, il sottosistema controllore di memoria 50a comprende un primo circuito di commutazione 506 configurato per interfacciare il sottosistema controllore di memoria 50a con il sistema di comunicazione 52, che ? rappresentato schematicamente mediante i segnali COM. Per esempio, come menzionato in precedenza, anche i segnali COM possono comprendere rispettivi segnali ADR, DATA_IN e DATA_OUT (o DATA), CREQ e CRES.
[0098] Specificamente, in varie forme di attuazione, il primo circuito di commutazione 506 ? configurato per connettere selettivamente i segnali COM al primo controllore di memoria 500a (mediante i segnali COMa), il secondo controllore di memoria 500b (mediante i segnali COMb) e il circuito di confronto 504.
[0099] In varie forme di attuazione, il sottosistema controllore di memoria 50a comprende anche un secondo circuito di commutazione 508 configurato per interfacciare il sottosistema controllore di memoria 50a con una prima memoria esterna 42a, che ? rappresentato schematicamente mediante segnali EXT1, e opzionalmente una seconda memoria esterna 42b, che ? rappresentato schematicamente mediante segnali EXT2. Per esempio, anche ciascuno dei segnali EXT1 ed EXT2 pu? comprendere rispettivi segnali CLK, IO e opzionalmente CS, come tali segnali CLK1, IO1 e CS1 per la comunicazione EXT1, e CLK2, IO2 e CS2 per la comunicazione EXT2. Come menzionato in precedenza, i segnali di clock CLK1 e CLK2, e i segnali di dati IO1 e IO2 possono anche essere segnali condivisi, cio?, i segnali di clock CLK1 e CLK2 possono corrispondere a un segnale di clock CLK e i segnali di dati IO1 e IO2 possono corrispondere a segnali di dati IO.
[0100] Per esempio, questo ? anche rappresentato nella Figura 6, in cui il circuito di commutazione 508 fornisce un segnale di clock CLK, uno o pi? segnali di dati IO, un primo segnale di chip-select CS1 e un secondo segnale di chip-select CS2. Di conseguenza, in questo caso, i segnali EXT1 usati per interfacciare la memoria 42a possono comprendere i segnali CLK, IO e CS1, e i segnali EXT2 usati per interfacciare la memoria 42b possono comprendere i segnali CLK, IO e CS2. Di conseguenza, in questo caso, il circuito integrato 40 pu? comprendere giusto i pad/pin per i segnali CLK, IO, CS1 e CS2, perch? i segnali CLK e IO sono condivisi per entrambe le memorie 42a e 42b, mentre i segnali di chip-select CS1 e CS2 possono essere usati per abilitare una delle memorie 42a o 42b.
[0101] Gli esperti nella tecnica apprezzeranno che i segnali condivisi possono essere implementati connettendo la rispettiva linea mediante una resistenza di pull-up a una tensione di alimentazione, e in cui ciascun circuito disposto per trasmettere dati comprende un dispositivo di pilotaggio open drain. In effetti, in questo caso, quando nessuno dei circuiti pilota alla linea (configurazione open drain), la linea ? connessa mediante la resistenza di pull-up alla tensione di alimentazione e il livello logico della linea ? alto. Per contro, quando uno dei circuiti connette la linea mediante il circuito di pilotaggio a massa, il livello logico della linea ? basso. In generale, una tale resistenza di pull-up pu? essere integrata nel circuito integrato 40 e/o pu? essere connessa esternamente al rispettivo pad/pin del circuito integrato 40. Per esempio, in varie forme di attuazione, ciascuno dei controllori di memoria 500a e 500b pu? comprendere un dispositivo di pilotaggio open-drain per il segnale di clock CLK e ciascun segnale IO. In generale, ciascuno dei controllori di memoria 500a e 500b pu? pilotare il rispettivo segnale di chip-select CSa e CSb mediante un dispositivo di pilotaggio open-drain o mediante una configurazione push-pull.
[0102] Specificamente, in varie forme di attuazione, il secondo circuito di commutazione 508 ? configurato per connettere selettivamente i segnali EXT1 ed EXT2 al primo controllore di memoria 500a (mediante i segnali EXTa), al secondo controllore di memoria 500b (mediante i segnali EXTb) e al circuito di confronto 504.
[0103] In varie forme di attuazione, il sottosistema controllore di memoria 50a comprende cos? anche un circuito di controllo 510 configurato per pilotare il primo circuito di commutazione 506 e il secondo circuito di commutazione 508 in funzione di dati di configurazione CD.
[0104] Per esempio, in varie forme di attuazione, il sistema di elaborazione 10a ? configurato per leggere i dati di configurazione CD da una memoria non volatile del sistema di elaborazione 10a. In generale, questa memoria non volatile pu? essere una qualsiasi memoria non volatile integrata nel circuito integrato 40 o esterna rispetto al circuito integrato 42. Per esempio, i dati di configurazione CD possono essere memorizzati in una memoria di programma non volatile 104 del sistema di elaborazione 10a o in una memoria programmabile una sola volta o OTP (One-Time Programmable), per es., implementata con dei fusibili. In alternativa, la memoria non volatile pu? essere una memoria esterna, per es., la prima memoria esterna 42a. Per esempio, in varie forme di attuazione, il sistema di elaborazione 10a pu? essere configurato per leggere i dati di configurazione CD da una tale memoria non volatile durante una fase di inizializzazione del sistema di elaborazione 10a. Per esempio, la Pubblicazione della Domanda di Brevetto Europeo n. EP 3413 194 A1, il cui contenuto ? incorporato qui tramite riferimento, descrive possibili soluzioni per ottenere dati di configurazione di un sistema di elaborazione 10a da una memoria non volatile.
[0105] In alternativa, i dati di configurazione CD possono essere impostati mediante uno o pi? pad o pin del circuito integrato 40, per es., connettendo selettivamente il rispettivo pin a una tensione di alimentazione o alla massa. In generale, i dati di configurazione CD possono anche essere cablati in hardware (?hard-wired?) all?interno del sistema di elaborazione 10a.
[0106] In alternativa, i dati di configurazione CD possono essere memorizzati in un registro, preferibilmente un registro che ? programmabile mediante richieste di scrittura inviate mediante il sistema di comunicazione 52, come registri che sono programmabili da un microprocessore 1020 del sistema di elaborazione 10a.
[0107] Di conseguenza, in varie forme di attuazione, il circuito di controllo 510 ? configurato per gestire differenti modalit? di funzionamento del sottosistema controllore di memoria 50a in funzione dei dati di configurazione CD.
[0108] Come menzionato in precedenza, il sottosistema controllore di memoria 50a ? configurato per supportare una pluralit? di modalit? di funzionamento in funzione dei dati di configurazione CD. Specificamente, in varie forme di attuazione, il sottosistema controllore di memoria 50a pu? supportare almeno una e preferibilmente almeno due delle modalit? di funzionamento seguenti:
[0109] - una prima modalit? di funzionamento, per es., quando i dati di configurazione CD sono impostati a "00";
[0110] - una seconda modalit? di funzionamento, che ? preferibilmente conforme ad ASIL B o C, per es., quando i dati di configurazione CD sono impostati a "01"; e
[0111] - una terza modalit? di funzionamento, che ? preferibilmente conforme ad ASIL D, per es., quando i dati di configurazione CD sono impostati a "10".
[0112] Come indicato in precedenza, anche se si fa riferimento a una prima, a una seconda o a una terza modalit? di funzionamento, il sottosistema controllore di memoria 50a pu? supportare solo una delle modalit? di funzionamento o una combinazione qualsiasi di modalit? di funzionamento, per es., la prima modalit? di funzionamento e la seconda modalit? di funzionamento, la prima modalit? di funzionamento e la terza modalit? di funzionamento, la seconda modalit? di funzionamento e la terza modalit? di funzionamento, o tutte e tre le modalit? di funzionamento.
[0113] Le Figure 7 e 8 rappresentano una forma di attuazione della prima modalit? di funzionamento. Specificamente, la Figura 7 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di scrittura e la Figura 8 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di lettura.
[0114] Specificamente, nella prima modalit? di funzionamento, ciascun controllore di memoria 500a e 500b ? configurato per interfacciare una rispettiva memoria 42a e 42b. Per esempio, nella forma di attuazione considerata, il secondo circuito di commutazione 508 ? configurato in modo tale che la comunicazione EXT1 corrisponda alla comunicazione EXTa del primo controllore di memoria 500a e che la comunicazione EXT2 corrisponda alla comunicazione EXTb del secondo controllore di memoria 500b.
[0115] Di conseguenza, in questo caso, il sottosistema controllore di memoria 50a ha associato due sotto-intervalli di indirizzi nell?intervallo di indirizzi fisici del sistema di comunicazione 52, in cui richieste che hanno un indirizzo nel primo sotto-intervallo sono usate per interfacciare la prima memoria 42a mediante il primo controllore di memoria 500a e richieste che hanno un indirizzo nel secondo sotto-intervallo sono usate per interfacciare la seconda memoria 42b mediante il secondo controllore di memoria 500b.
[0116] In generale, la rispettiva operazione di mappatura di indirizzo pu? essere implementata in ciascun controllore di memoria 500a e 500b, o all?interno del circuito di commutazione 506. Specificamente, nel primo caso, ciascuna delle comunicazioni COMa e COMb corrisponde alla comunicazione COM scambiata con il sistema di comunicazione 52. Per contro, nel secondo caso, il circuito di commutazione 506 riceve una richiesta dal sistema di comunicazione 52 mediante i segnali COM e inoltra la richiesta mediante i segnali COMa o COMb a uno dei controllori di memoria 500a e 500b in funzione dei dati di indirizzo ADR inclusi nella richiesta, implementando anche eventualmente un?operazione di mappatura di indirizzo.
[0117] Per esempio, nelle Figure 7 e 8 ? rappresentato schematicamente che ciascun controllore di memoria 500a e 500b ? configurato per ricevere una richiesta comprendente:
[0118] - un rispettivo indirizzo ADRa o ADRb, che eventualmente corrisponde direttamente a un indirizzo di memoria, per es., ottenuto mediante un?operazione di mappatura di indirizzo;
[0119] - rispettivi segnali di controllo di richiesta CREQa o CREQb che indicano il tipo della richiesta, cio?, richiesta di scrittura o richiesta di lettura.
[0120] Inoltre, come rappresentato nella Figura 7, nel caso di una richiesta di scrittura, ciascun controllore di memoria 500a e 500b ? configurato per ricevere rispettivi dati DATA_INa o DATA_INb da memorizzare nella rispettiva memoria. Per contro, come rappresentato nella Figura 8, nel caso di una richiesta di lettura, ciascun controllore di memoria 500a e 500b ? configurato per fornire rispettivi dati DATA_OUTa o DATA_OUTb comprendenti i dati letti dalla rispettiva memoria. Come descritto in precedenza, questi dati possono anche essere comunicati mediante un segnale di dati DATA bidirezionale.
[0121] Inoltre, ciascun controllore di memoria 500a e 500b pu? generare uno o pi? segnali di controllo di risposta CRESa o CRESb, per es., che indicano che la richiesta ? stata ricevuta e/o elaborata, per es., al fine di indicare che i dati DATA_OUTa o DATA_OUTb che sono stati letti dalla rispettiva memoria sono disponibili.
[0122] Di conseguenza, quando riceve una richiesta di scrittura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di scrivere i rispettivi dati DATA_INa (corrispondenti ai dati ricevuti mediante la comunicazione COM dal sistema di comunicazione 52) nella memoria 42a, per es., asserendo un segnale di chip-select CSa, generando un segnale di clock CLKa e trasmettendo l?indirizzo di memoria ADRa e i dati DATA_INa mediante segnali IOa. Come menzionato in precedenza, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente.
[0123] Per contro, quando riceve una richiesta di lettura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di leggere i rispettivi dati DATA_OUTa dalla memoria 42a, per es., asserendo il segnale di chip-select CSa, generando il segnale di clock CLKa, trasmettendo l?indirizzo di memoria ADRa mediante i segnali IO, e ricevendo i dati DATA_OUTa mediante i segnali IO. Anche in questo caso, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente. In seguito, il controllore di memoria 500a trasmette una risposta, per es., segnalata mediante i segnali CRESa, comprendente i dati DATA_OUTa (corrispondenti ai dati ricevuti dalla memoria 42a).
[0124] Come menzionato in precedenza, quando ? usata OctalSPI, l?indirizzo di memoria ADRa e i dati DATA_INa possono essere scambiati sequenzialmente mediante le stesse linee bidirezionali IO.
[0125] Similmente, quando riceve una richiesta di scrittura comprendente un indirizzo ADR associato al controllore di memoria 50b, il controllore di memoria 500a usa i segnali EXTb al fine di scrivere i rispettivi dati DATA_INb (corrispondenti ai dati ricevuti mediante la comunicazione COM dal sistema di comunicazione 52) nella memoria 42b, per es., asserendo un segnale di chip-select CSb, generando un segnale di clock CLKb e trasmettendo l?indirizzo di memoria ADRb e i dati DATA_INb mediante segnali IOb. Come menzionato in precedenza, al fine di interfacciare la memoria 42b, il secondo circuito di commutazione 508 pu? connettere i segnali EXTb ai segnali EXT2, per es., i segnali CSb, CLKb e IOb possono corrispondere ai segnali CS2, CLK e IO, rispettivamente.
[0126] Per contro, quando riceve una richiesta di lettura comprendente un indirizzo ADR associato al controllore di memoria 500b, il controllore di memoria 500a usa i segnali EXTb al fine di leggere i rispettivi dati DATA_OUTb dalla memoria 42b, per es., asserendo il segnale di chip-select CSb, generando il segnale di clock CLK, trasmettendo l?indirizzo di memoria ADRb mediante i segnali IO, e ricevendo i dati DATA_OUTb mediante i segnali IO. Anche in questo caso, al fine di interfacciare la memoria 42b, il secondo circuito di commutazione 508 pu? connettere i segnali EXTb ai segnali EXT2, per es., i segnali CSb, CLKb e IOb possono corrispondere ai segnali CS2, CLK e IO, rispettivamente. In seguito, il controllore di memoria 500b trasmette una risposta, per es., segnalata mediante i segnali CRESb, comprendente i dati DATA_OUTb (corrispondenti ai dati ricevuti dalla memoria 42b).
[0127] Di conseguenza, nella forma di attuazione considerata, la prima modalit? di funzionamento pu? essere usata per interfacciare in modo indipendente due memorie esterne 42a e 42b mediante due controllori di memoria 500a e 500b, dove ciascun controllore di memoria 500a e 500b ha associato un rispettivo sotto-intervallo nell?intervallo di indirizzi del sistema di comunicazione 52. In generale, il numero di controllori di memoria 500 (e di rispettive memorie 42) pu? anche essere maggiore di due.
[0128] Di conseguenza, in varie forme di attuazione, un circuito master 54 pu? scrivere e leggere nella prima modalit? di funzionamento lo spazio di memoria completo delle memorie 42a e 42b.
[0129] Le Figure 9 e 10 rappresentano una forma di attuazione della seconda modalit? di funzionamento. Specificamente, la Figura 9 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di scrittura e la Figura 10 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di lettura.
[0130] Specificamente, nella forma di attuazione considerata, il primo controllore di memoria 500a ? configurato per interfacciare una memoria esterna 42a, mentre il secondo controllore di memoria 500a e il circuito di confronto 504 sono configurati per verificare il funzionamento del primo controllore di memoria 500a.
[0131] In varie forme di attuazione, il sottosistema di memoria 50a pu? anche usare il primo e opzionalmente il secondo circuito di ECC 502a e 502b. Specificamente, in varie forme di attuazione, quando ricevono una richiesta di scrittura, il primo circuito di ECC 502a e il primo controllore di memoria 500a sono configurati per memorizzare bit di ECC aggiuntivi nella memoria 42a. Inoltre, quando ricevono una richiesta di lettura, il circuito di ECC 502a e il controllore di memoria 500a sono configurati per verificare i bit di ECC letti dalla memoria 42a. In questo caso, il secondo circuito di ECC 502b e il circuito di confronto 504 possono essere configurati per verificare il funzionamento del primo circuito di ECC 502a.
[0132] Specificamente, nella forma di attuazione rappresentata nella Figura 9, in risposta alla ricezione di una richiesta di scrittura, il primo circuito di commutazione 506 ? configurato per inoltrare la comunicazione COM al primo controllore di memoria 500a, che cos? riceve un indirizzo ADRa (per es., ottenuto mediante una mappatura di indirizzo dell?indirizzo ADR della comunicazione COM), i rispettivi dati DATA_INa della richiesta di scrittura e i rispettivi segnali di controllo di richiesta CREQa (ricevuti mediante la comunicazione COM).
[0133] In varie forme di attuazione, il primo circuito di ECC 502a pu? essere configurato per calcolare bit di ECC esclusivamente in funzione dei dati DATA_INa ricevuti, o in funzione dei dati DATA_INa ricevuti e dell?indirizzo di memoria ADRa.
[0134] Di conseguenza, in varie forme di attuazione, quando riceve mediante la comunicazione COM una richiesta di scrittura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di scrivere i rispettivi dati DATA_INa (corrispondenti ai dati ricevuti mediante la comunicazione COM dal sistema di comunicazione 52) e i bit di ECC opzionali generati dal circuito di ECC 502a nella memoria 42a, per es., asserendo il segnale di chip-select CSa, generando un segnale di clock CLKa e trasmettendo l?indirizzo di memoria ADRa, i dati DATA_INa e i bit di ECC opzionali mediante segnali IOa. Come menzionato in precedenza, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente.
[0135] In varie forme di attuazione, il primo circuito di commutazione 506 ? configurato per fornire i segnali ADRa, DATA_INa e CREQa come rispettivi segnali ADRb, DATA_INb e CREQb al secondo controllore di memoria 500b. A questo riguardo, quando ? usato il primo circuito di ECC 502a, il secondo circuito di ECC 502b pu? essere configurato per calcolare secondi bit di ECC in funzione dei dati DATA_INb (cio?, DATA_INa) ricevuti e opzionalmente dell?indirizzo ADRb (cio?, ADRa).
[0136] Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di scrittura, anche il controllore di memoria 500b genera i segnali EXTb al fine di scrivere i rispettivi dati DATA_INb (cio?, DATA_INa) e i bit di ECC opzionali generati dal secondo circuito di ECC 502b in una memoria esterna 42b (che in realt? non esiste o almeno non ? usata), per es., asserendo il segnale di chip-select CSb, generando il segnale di clock CLKb e trasmettendo l?indirizzo di memoria ADRb, i dati DATA_INb e opzionalmente i secondi bit di ECC mediante i segnali IOb.
[0137] Di conseguenza, nella forma di attuazione considerata, al fine di verificare il funzionamento del controllore di memoria 500a, e opzionalmente del circuito di ECC 502a, il circuito di confronto 504 pu? comprendere un circuito di confronto 5040 configurato per confrontare sequenzialmente i bit applicati dal controllore di memoria 500a al segnale (ai segnali) IOa con i bit applicati dal controllore di memoria 500b al segnale (ai segnali) IOb, e per asserire un segnale di errore A1 in risposta a una determinazione che uno o pi? bit non corrispondono. Sebbene non rappresentato nella Figura 9, il circuito di confronto 5040 pu? anche essere configurato per confrontare i segnali di clock CLKa e CLKb e/o i segnali di chip-select CSa e CSb.
[0138] Come menzionato in precedenza, in varie forme di attuazione, i controllori di memoria 500a e 500b possono anche generare uno o pi? rispettivi segnali di controllo di risposta CRESa e CRESb, per es., al fine di indicare che ? stata ricevuta una richiesta di scrittura e/o che la richiesta di scrittura ? stata eseguita. Di conseguenza, in questo caso, il circuito di confronto 504 pu? comprendere un circuito di confronto 5042 configurato per confrontare i segnali CRESa e CRESb, e per asserire un segnale di errore A2 in risposta a una determinazione che i segnali CRESa e CRESb non corrispondono.
[0139] In varie forme di attuazione, il circuito di confronto 504 pu? comprendere un circuito logico combinatorio 5044, per es., una porta logica OR, configurato per generare un segnale di errore combinato ERR1, in cui il circuito logico combinatorio 5044 ? configurato per asserire il segnale di errore combinato ERR1 in risposta a una determinazione che almeno uno dei segnali di errore A1 e A2 ? asserito. In varie forme di attuazione, uno o pi? dei segnali di errore A1, A2 e/o ERR1 sono forniti a un circuito di raccolta guasti e gestione degli errori del sistema di elaborazione 10a.
[0140] Per contro, nella forma di attuazione rappresentata nella Figura 10, in risposta alla ricezione di una richiesta di lettura, il primo circuito di commutazione 506 ? configurato di nuovo per inoltrare la comunicazione COM al primo controllore di memoria 500a, che cos? riceve un indirizzo ADRa (per es., ottenuto mediante una mappatura di indirizzo dell?indirizzo ADR della comunicazione COM) e il segnale di controllo di richiesta CREQa che indica una richiesta di lettura.
[0141] Specificamente, nella forma di attuazione considerata, il primo controllore di memoria 500a ? configurato di nuovo per interfacciare la memoria esterna 42a, mentre il secondo controllore di memoria 500a e il circuito di confronto 504 sono configurati di nuovo per verificare il funzionamento del primo controllore di memoria 500a.
[0142] Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di lettura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di leggere rispettivi dati DATA_OUTa dalla memoria 42a, per es., asserendo il segnale di chip-select CSa, generando il segnale di clock CLKa e trasmettendo l?indirizzo di memoria ADRa mediante i segnali IOa. Come menzionato in precedenza, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente.
[0143] In varie forme di attuazione, quando ha scritto i bit di ECC nella memoria in risposta a una richiesta di scrittura, il controllore di memoria 500a riceve cos? anche bit di ECC mediante i segnali IOa, cio?, le linee IO. Di conseguenza, in questo caso, il controllore di memoria 500a pu? fornire i bit di ECC ricevuti, i dati DATA_OUTa e opzionalmente l?indirizzo ADRa al primo circuito di ECC 502a, che pu? cos? calcolare ulteriori bit di ECC in funzione dei dati DATA_OUTa e opzionalmente dell?indirizzo ADRa (in base alle stesse regole di ECC usate durante l?operazione di scrittura), e pu? asserire un segnale di errore E1 quando i bit di ECC ricevuti non corrispondono ai bit di ECC calcolati.
[0144] In varie forme di attuazione, il primo circuito di ECC 502a pu? anche essere configurato per generare dati DATA_OUTa corretti confrontando i bit di ECC ricevuti con i bit di ECC calcolati. Specificamente, in questo caso, il circuito di ECC 502a pu? asserire:
[0145] - il segnale di errore E1 quando ? rilevato un errore non correggibile, per es., un errore di bit doppio nel caso di un codice di ECC con correzione di errore singolo e rilevazione di errore doppio (SECDED, ?Single-Error Correction and Double-Error Detection?);
[0146] - un segnale di errore E2 quando ? rilevato un errore correggibile, per es., un errore di bit singolo con un codice SECDED.
[0147] In varie forme di attuazione, i segnali ADRa e CREQa sono forniti anche come rispettivi segnali ADRb e CREQb al secondo controllore di memoria 500b. Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di lettura, anche il controllore di memoria 500b genera i segnali EXTb al fine di leggere rispettivi dati DATA_OUTb da una memoria esterna 42b (che in realt? non esiste o almeno non ? usata), per es., asserendo il segnale di chip-select CSb, generando il segnale di clock CLKb e trasmettendo l?indirizzo di memoria ADRa mediante segnali IOb, e campionando quindi sequenzialmente i segnali IOb.
[0148] Di conseguenza, la comunicazione tra il controllore di memoria 500a e la memoria 42a sta funzionando correttamente, quando anche il controllore di memoria 500b trasmette un comando di lettura comprendente lo stesso indirizzo, e il controllore di memoria 500b elabora i dati ricevuti come il controllore di memoria 500a.
[0149] Di conseguenza, in varie forme di attuazione, il circuito di confronto 504 comprende un circuito di confronto 5046 (corrispondente eventualmente al circuito di confronto 5040) configurato per verificare se i controllori di memoria 500a e 500b generano gli stessi segnali IOa e IOb al fine di trasmettere un comando di lettura comprendente l?indirizzo ADRa. Per esempio, come menzionato in precedenza, quando ? usata OctalSPI, i controllori di memoria 500a e 500b possono essere configurati per trasmettere il comando di lettura e l?indirizzo di memoria mediante un numero fisso di cicli, come 5 cicli nel caso di indirizzi di 32 bit. Di conseguenza, il circuito di confronto 5046 pu? essere configurato per determinare se i segnali IOa e IOb corrispondono per ciascuno di questo numero fisso di cicli, e pu? asserire un segnale di errore A3 in risposta a una determinazione che uno o pi? bit non corrispondono. Sebbene non rappresentato nella Figura 10, il circuito di confronto 5046 pu? anche essere configurato per confrontare i segnali di clock CLKa e CLKb e/o i segnali di chip-select CSa e CSb.
[0150] In varie forme di attuazione, i dati DATA_OUTa ricevuti mediante i segnali IO sono forniti anche al controllore di memoria 500b. Per esempio, quando ? usata OctalSPI, una volta che ha trasmesso il comando di lettura mediante il numero fisso di cicli, la memoria 42a applicher? i rispettivi dati alle linee IO. Per esempio, in varie forme di attuazione, il secondo circuito di commutazione 508 pu? comprendere uno switch 5080 configurato per fornire il segnale IOb al circuito di confronto 5046 durante il numero fisso di cicli, e per connettere il segnale IOb alla linea IO al fine di ricevere i dati DATA_OUTa. Per esempio, questo switch 5080 pu? essere pilotato dal circuito di commutazione 508, dal primo controllore di memoria 500a o dal circuito di controllo 510 in risposta al fatto di avere determinato che il numero fisso di cicli ? stato raggiunto.
[0151] Di conseguenza, il controllore di memoria 500b riceve dati DATA_OUTb, che dovrebbero corrispondere ai dati DATA_OUTa letti dalla memoria 42a. A questo riguardo, quando ha scritto i bit di ECC nella memoria 42a in risposta a una richiesta di scrittura, il controllore di memoria 500b riceve anche bit di ECC mediante i segnali IOb, cio?, le linee IO. Di conseguenza, in questo caso, il controllore di memoria 500b pu? fornire i bit di ECC ricevuti, i dati DATA_OUTb ricevuti (che dovrebbero corrispondere ai dati DATA_OUTa) e opzionalmente l?indirizzo ADRa al secondo circuito di ECC 502b, che pu? cos? calcolare ulteriori bit di ECC in funzione dei dati DATA_OUTb e opzionalmente dell?indirizzo ADRa (in base allo schema di ECC usato), e pu? asserire un segnale di errore E3 quando i bit di ECC ricevuti non corrispondono ai bit di ECC calcolati.
[0152] In modo simile al primo circuito di ECC 502a, in varie forme di attuazione, il secondo circuito di ECC 502b pu? anche essere configurato per generare dati DATA_OUTb corretti confrontando i bit di ECC ricevuti con i bit di ECC calcolati. Specificamente, in questo caso, il circuito di ECC 502b pu? asserire:
[0153] - il segnale di errore E3 quando ? rilevato un errore non correggibile, per es., un errore doppio nel caso di un codice di ECC SECDED;
[0154] - un segnale di errore E4 quando ? rilevato un errore correggibile, per es., un errore di bit singolo con un codice SECDED.
[0155] Una volta che ha ricevuto i dati DATA_OUTa e opzionalmente che ha corretto i dati DATA_OUTa mediante il circuito di ECC 502a, il controllore di memoria 500a genera la risposta per trasmettere i dati DATA_OUTa mediante i segnali COMa, per es., asserendo uno o pi? segnali di controllo di risposta CRESa. Similmente, una volta che ha ricevuto i dati DATA_OUTb e opzionalmente corretto i dati DATA_OUTb mediante il circuito di ECC 502b, il controllore di memoria 500b genera la risposta per trasmettere i dati DATA_OUTb mediante i segnali COMb, per es., asserendo uno o pi? segnali di controllo di risposta CRESb. In generale, ciascuno dei segnali di controllo di risposta CRESa e CRESb pu? anche comprendere segnali per indicare lo stato della verifica di ECC, come i segnali E1 e/o E2, ed E3 e/o E4, rispettivamente.
[0156] Di conseguenza, in varie forme di attuazione, il circuito di confronto 504 pu? comprendere un circuito di confronto 5048 (corrispondente eventualmente al circuito di confronto 5042) configurato per confrontare i segnali CRESa e CRESb, e per asserire un segnale di errore A4 in risposta a una determinazione che i segnali CRESa e CRESb non corrispondono. Similmente, in varie forme di attuazione, il circuito di confronto 504 pu? comprendere un circuito di confronto 5050 configurato per confrontare i segnali DATA_OUTa e DATA_OUTb (forniti dai controllori di memoria 500a e 500b), e per asserire un segnale di errore A5 in risposta a una determinazione che i segnali DATA_OUTa e DATA_OUTb non corrispondono.
[0157] In varie forme di attuazione, il circuito di confronto 504 pu? comprendere cos? un circuito logico combinatorio 5052, per es., una porta logica OR, configurato per generare un segnale di errore combinato ERR2 che indica un errore non correggibile, in cui il circuito logico combinatorio 5052 ? configurato per asserire il segnale di errore combinato ERR2 in risposta a una determinazione che almeno uno dei segnali di errore A3, A4, A5, E1 ed E3 (quando usati) ? asserito. In varie forme di attuazione, uno o pi? dei segnali di errore A3, A5, A5, E1, E3 e/o ERR2 sono forniti a un circuito di raccolta guasti e di rilevazione degli errori del sistema di elaborazione 10a.
[0158] In varie forme di attuazione, il circuito di confronto 504 pu? comprendere anche un circuito logico combinatorio 5054, per es., una porta logica OR, configurata per generare un segnale di errore combinato ERR3 che indica un errore correggibile, in cui il circuito logico combinatorio 5054 ? configurato per asserire il segnale di errore combinato ERR3 in risposta a una determinazione che almeno uno dei segnali di errore E2 ed E4 ? asserito. In varie forme di attuazione, uno o pi? dei segnali di errore E2, E4 e/o ERR3 sono forniti al circuito di raccolta guasti e gestione degli errori del sistema di elaborazione 10a.
[0159] Di conseguenza, nella forma di attuazione considerata, la seconda modalit? di funzionamento permette di implementare una configurazione ASIL-B/C con una singola memoria 42a. Specificamente, usando un codice di ECC calcolato per i dati e per l?indirizzo di memoria, l?intero percorso dalla comunicazione COM ricevuta dal sistema di comunicazione 52 fino all?interfaccia di dispositivo EXT1 alla memoria esterna 42a pu? essere protetto. Il codice di ECC ? quindi verificato quando i dati sono letti dalla memoria esterna 42a.
[0160] Per esempio, nella forma di attuazione rappresentata nella Figura 9, l?indirizzo, i dati e i segnali di controllo di richiesta ricevuti dal sistema di comunicazione 52 sono inviati a entrambi i controllori di memoria 500a e 500b. Il comparatore 5040 verifica i segnali EXTa ed EXTb generati dai controllori di memoria 500a e 500b. Un ulteriore comparatore 5048 verifica la risposta prodotta dai controllori di memoria 500a e 500b. Per contro, nella forma di attuazione rappresentata nella Figura 10, l?indirizzo e i segnali di controllo di richiesta ricevuti dal sistema di comunicazione 52 sono inviati a entrambi i controllori di memoria 500a e 500b. Il comparatore 5046 verifica i segnali EXTa ed EXTb generati dai controllori di memoria 500a e 500b. Inoltre, due comparatori 5048 e 5050 verificano i dati e la risposta prodotta dai controllori di memoria 500a e 500b.
[0161] Tuttavia, questo schema non protegge da tutti i possibili malfunzionamenti all?interno della memoria 42a, per esempio segnali fissi (?stuck-at?) interni, per cui ? scritta o letta una locazione di memoria che non corrisponde all?indirizzo di memoria richiesto come specificato mediante il segnale ADRa.
[0162] Le Figure 11 e 12 rappresentano una forma di attuazione della terza modalit? di funzionamento. Specificamente, la Figura 11 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di scrittura e la Figura 12 rappresenta lo scenario in cui il sottosistema controllore di memoria 50a riceve una richiesta di lettura.
[0163] Specificamente, nella forma di attuazione considerata, il primo controllore di memoria 500a ? configurato per interfacciare una prima memoria esterna 42a e il secondo controllore di memoria 500b ? configurato per interfacciare una seconda memoria esterna 42b. Inoltre, il primo controllore di memoria 500a e il secondo controllore di memoria 500b sono configurati per memorizzare gli stessi dati nella prima e nella seconda memoria 42a e 42b, duplicando con ci? sostanzialmente il contenuto della memoria 42a nella memoria 42b. In effetti, in questo modo, il circuito di confronto 504 pu? essere configurato per verificare se i dati letti mediante il primo controllore di memoria 500a dalla prima memoria 42a corrispondono ai dati letti mediante il secondo controllore di memoria 500b dalla seconda memoria 42b, verificando anche con ci? il funzionamento della memoria 42a.
[0164] In varie forme di attuazione, il sottosistema di memoria 50a pu? anche usare il primo e il secondo circuito di ECC 502a e 502b. Specificamente, in varie forme di attuazione, quando riceve una richiesta di scrittura, il primo circuito di ECC 502a e il primo controllore di memoria 500a sono configurati per memorizzare bit di ECC aggiuntivi nella memoria 42a. Similmente, il secondo circuito di ECC 502b e il secondo controllore di memoria 500b sono configurati per memorizzare bit di ECC aggiuntivi nella memoria 42b. Inoltre, quando riceve una richiesta di lettura, il circuito di ECC 502a e il controllore di memoria 500a sono configurati per verificare i bit di ECC letti dalla memoria 42a. Similmente, il circuito di ECC 502b e il controllore di memoria 500b sono configurati per verificare i bit di ECC letti dalla memoria 42b. In questo caso, il circuito di confronto 504 pu? essere configurato per verificare anche il funzionamento del primo circuito di ECC 502a.
[0165] Specificamente, nella forma di attuazione rappresentata nella Figura 11, in risposta alla ricezione di una richiesta di scrittura, il primo circuito di commutazione 506 ? configurato per inoltrare la comunicazione COM al primo controllore di memoria 500a, che cos? riceve un indirizzo ADRa (per es., ottenuto mediante una mappatura di indirizzo dell?indirizzo ADR della comunicazione COM), i rispettivi dati DATA_INa della richiesta di scrittura e i rispettivi segnali di controllo di richiesta CREQa (ricevuti mediante la comunicazione COM).
[0166] In varie forme di attuazione, il primo circuito di ECC 502a pu? essere configurato per calcolare bit di ECC in funzione dei dati DATA_INa ricevuti e opzionalmente dell?indirizzo ADRa.
[0167] Di conseguenza, in varie forme di attuazione, quando riceve mediante la comunicazione COM una richiesta di scrittura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di scrivere i rispettivi dati DATA_INa (corrispondenti ai dati ricevuti mediante la comunicazione COM dal sistema di comunicazione 52) e i bit di ECC opzionali generati dal circuito di ECC 502a nella memoria 42a, per es., asserendo il segnale di chip-select CSa, generando un segnale di clock CLKa e trasmettendo l?indirizzo di memoria ADRa, i dati DATA_INa e opzionalmente i bit di ECC mediante i segnali IOa. Come menzionato in precedenza, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente.
[0168] In varie forme di attuazione, il primo circuito di commutazione 506 ? configurato per fornire i segnali ADRa, DATA_INa e CREQa come rispettivi segnali ADRb, DATA_INb e CREQb al secondo controllore di memoria 500b. A questo riguardo, quando ? usato il primo circuito di ECC 502a, il secondo circuito di ECC 502b pu? essere configurato per calcolare secondi bit di ECC in funzione dei dati DATA_INb ricevuti (cio?, DATA_INa) e opzionalmente dell?indirizzo ADRb (cio?, ADRa).
[0169] Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di scrittura, anche il controllore di memoria 500b genera i segnali EXTb al fine di scrivere i rispettivi dati DATA_INb (cio?, DATA_INa) e i bit di ECC opzionali generati dal secondo circuito di ECC 502b nella memoria esterna 42b, per es., asserendo il segnale di chip-select CSb, generando un segnale di clock CLKb e trasmettendo l?indirizzo di memoria ADRb, i dati DATA_INb e opzionalmente i bit di ECC mediante segnali IOb. Come menzionato in precedenza, al fine di interfacciare la memoria 42b, il secondo circuito di commutazione 508 pu? connettere i segnali EXTb ai segnali EXT2, per es., i segnali CSb, CLKb e IOb possono corrispondere ai segnali CS2, CLK e IO, rispettivamente.
[0170] Specificamente, quando sono usati i segnali CLK e IO condivisi, in realt? soltanto uno dei controllori di memoria 500a e 500b pu? trasmettere dati durante un dato ciclo. Di conseguenza, in questo caso, il sottosistema di memoria 50a pu? comprendere un circuito di selezione 5082 configurato per indicare uno dei controllori di memoria 500a e 500b a cui ? permesso di accedere ai segnali CLK e IO condivisi. Per esempio, il circuito di selezione 5082 pu? essere implementato con un arbitro. Di conseguenza, una volta che ha ricevuto una richiesta di scrittura mediante i segnali COM, il circuito di selezione 5082 pu? selezionare uno dei controllori di memoria 500a e 500b, per es., il controllore di memoria 500a, che pu? cos? scrivere i dati ricevuti nella rispettiva memoria esterna, per es., nella memoria 42a. In seguito, il circuito di selezione 5082 pu? selezionare l?altro controllore di memoria 500a o 500b, per es., il controllore di memoria 500b, che cos? pu? scrivere i dati ricevuti nella rispettiva memoria esterna, per es., nella memoria 42b.
[0171] In varie forme di attuazione, il circuito di confronto 504 pu? essere configurato per verificare uno o pi? segnali generati dai controllori di memoria 500a o 500b. Per esempio, nelle forme di attuazione considerate, il circuito di confronto 504 comprende un circuito di confronto 5056 configurato per asserire un segnale di errore ERR4 quando i segnali di controllo di risposta CRESa e CRESb generati dai controllori di memoria 500a o 500b non corrispondono una volta che sono state completate entrambe le operazioni di scrittura. Per esempio, il circuito di confronto 5056 pu? corrispondere al circuito di confronto 5042 rappresentato nella Figura 9 e/o al circuito di confronto 5048 rappresentato nella Figura 10, che sono usati per la seconda modalit? di funzionamento.
[0172] Per contro, nella forma di attuazione rappresentata nella Figura 12, in risposta alla ricezione di una richiesta di lettura, il primo circuito di commutazione 506 ? configurato di nuovo per inoltrare la comunicazione COM al primo controllore di memoria 500a, che cos? riceve un indirizzo ADRa (per es., ottenuto mediante una mappatura di indirizzo dell?indirizzo ADR della comunicazione COM) e il segnale di controllo di richiesta CREQa che indica una richiesta di lettura.
[0173] Specificamente, nella forma di attuazione considerata, il primo controllore di memoria 500a e il secondo controllore di memoria 500b sono configurati di nuovo per interfacciare rispettive memorie esterne 42a e 42b, mentre il circuito di confronto 504 ? configurato per confrontare uno o pi? segnali generati dai controllori di memoria 500a e 500b e/o dai circuiti di ECC 502a e 502b.
[0174] Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di lettura comprendente un indirizzo ADR associato al controllore di memoria 500a, il controllore di memoria 500a usa i segnali EXTa al fine di leggere rispettivi dati DATA_OUTa dalla memoria 42a, per es., asserendo il segnale di chip-select CSa, generando il segnale di clock CLKa e trasmettendo l?indirizzo di memoria ADRa mediante segnali IOa. Come menzionato in precedenza, al fine di interfacciare la memoria 42a, il secondo circuito di commutazione 508 pu? connettere i segnali EXTa ai segnali EXT1, per es., i segnali CSa, CLKa e IOa possono corrispondere ai segnali CS1, CLK e IO, rispettivamente.
[0175] In varie forme di attuazione, quando ha scritto i bit di ECC nella memoria in risposta a una richiesta di scrittura, il controllore di memoria 500a riceve cos? anche bit di ECC mediante i segnali IOa, cio?, le linee IO. Di conseguenza, in questo caso, il controllore di memoria 500a pu? fornire i bit di ECC ricevuti, i dati DATA_OUTa ricevuti e opzionalmente l?indirizzo ADRa al primo circuito di ECC 502a, che pu? cos? calcolare ulteriori bit di ECC in funzione dei dati DATA_OUTa e opzionalmente dell?indirizzo ADRa (in base allo schema di ECC usato), e pu? asserire un segnale di errore E1 quando i bit di ECC ricevuti non corrispondono ai bit di ECC calcolati.
[0176] Come descritto in precedenza, in varie forme di attuazione, il primo circuito di ECC 502a pu? anche essere configurato per generare dati DATA_OUTa corretti confrontando i bit di ECC ricevuti con i bit di ECC calcolati. Specificamente, in questo caso, il circuito di ECC 502a pu? asserire:
[0177] - il segnale di errore E1 quando ? rilevato un errore non correggibile, per es., un errore di bit doppio nel caso di un codice di ECC SECDED;
[0178] - il segnale di errore E2 quando ? rilevato un errore correggibile, per es., un errore di bit singolo con un codice SECDED.
[0179] In varie forme di attuazione, i segnali ADRa e CREQa sono forniti anche come rispettivi segnali ADRb e CREQb al secondo controllore di memoria 500b. Di conseguenza, in varie forme di attuazione, quando riceve una richiesta di lettura, anche il controllore di memoria 500b usa i segnali EXTb al fine di leggere rispettivi dati DATA_OUTb dalla memoria 42b, per es., asserendo il segnale di chip-select CSb, generando il segnale di clock CLKb e trasmettendo l?indirizzo di memoria ADRb (corrispondente all?indirizzo di memoria ADRa) mediante segnali IOb. Come menzionato in precedenza, al fine di interfacciare la memoria 42b, il secondo circuito di commutazione 508 pu? connettere i segnali EXTb ai segnali EXT2, per es., i segnali CSb, CLKb e IOb possono corrispondere ai segnali CS2, CLK e IO, rispettivamente.
[0180] In varie forme di attuazione, quando ha scritto i bit di ECC nella memoria in risposta a una richiesta di scrittura, il controllore di memoria 500b riceve cos? anche bit di ECC mediante i segnali IOb, cio?, le linee IO. Di conseguenza, in questo caso, il controllore di memoria 500b pu? fornire i bit di ECC ricevuti, i dati DATA_OUTb ricevuti e opzionalmente l?indirizzo ADRb (cio?, ADRa) al secondo circuito di ECC 502b, che pu? cos? calcolare ulteriori bit di ECC in funzione dei dati DATA_OUTb ricevuti e opzionalmente dell?indirizzo ADRb, e pu? asserire un segnale di errore E3 quando i bit di ECC ricevuti non corrispondono ai bit di ECC calcolati.
[0181] In varie forme di attuazione, in modo simile al circuito di ECC 502a, il secondo circuito di ECC 502b pu? anche essere configurato per generare dati DATA_OUTb corretti confrontando i bit di ECC ricevuti con i bit di ECC calcolati. Specificamente, in questo caso, il circuito di ECC 502b pu? asserire:
[0182] - il segnale di errore E3 quando ? rilevato un errore non correggibile, per es., un errore di bit doppio nel caso di un codice di ECC SECDED; e
[0183] - un segnale di errore E4 quando ? rilevato un errore correggibile, per es., un errore di bit singolo con un codice SECDED.
[0184] Anche in questo caso, quando sono usati segnali CLK e IO condivisi, in realt? soltanto uno dei controllori di memoria 500a e 500b pu? scambiare dati durante un dato ciclo. Di conseguenza, in questo caso, il circuito di selezione 5082 pu? essere configurato per indicare uno dei controllori di memoria 500a e 500b a cui ? permesso di accedere ai segnali CLK e IO condivisi. Di conseguenza, una volta che ha ricevuto una richiesta di lettura mediante i segnali COM, il circuito di selezione 5082 pu? selezionare uno dei controllori di memoria 500a e 500b, per es., il controllore di memoria 500a, che cos? pu? comunicare con la rispettiva memoria esterna, per es., la memoria 42a. In seguito, il circuito di selezione 5082 pu? selezionare l?altro controllore di memoria 500a o 500b, per es., il controllore di memoria 500b, che cos? pu? comunicare con la rispettiva memoria esterna, per es., la memoria 42b.
[0185] In varie forme di attuazione, il circuito di confronto 504 pu? essere configurato per verificare uno o pi? segnali generati dai controllori di memoria 500a o 500b.
[0186] Per esempio, nelle forme di attuazione considerate, il circuito di confronto 504 comprende un circuito di confronto 5058 configurato per asserire un segnale di errore A6 in risposta a una determinazione che i segnali di controllo di risposta CRESa e CRESb generati dai controllori di memoria 500a o 500b non corrispondono una volta che entrambe le operazioni di scrittura sono state completate. Per esempio, il circuito di confronto 5058 pu? corrispondere al circuito di confronto 5056 rappresentato nella Figura 11.
[0187] In aggiunta o in alternativa, il circuito di confronto 504 pu? comprendere un circuito di confronto 5060 configurato per confrontare i segnali DATA_OUTa e DATA_OUTb (forniti dai controllori di memoria 500a e 500b, o i dati corretti forniti dai circuiti di ECC 502a e 502b), e per asserire un segnale di errore A7 in risposta a una determinazione che i segnali DATA_OUTa e DATA_OUTb non corrispondono. Per esempio, il circuito di confronto 5060 pu? corrispondere al circuito di confronto 5050 rappresentato nella Figura 10.
[0188] In varie forme di attuazione, il circuito di confronto 504 pu? comprendere cos? un circuito logico combinatorio 5062, per es., una porta logica OR, configurato per generare un segnale di errore combinato ERR2 che indica un errore non correggibile, in cui il circuito logico combinatorio 5062 ? configurato per asserire il segnale di errore combinato ERR5 in risposta a una determinazione che almeno uno dei segnali di errore A6, A7, E1 ed E3 (quando usati) ? asserito. In varie forme di attuazione, uno o pi? dei segnali di errore A6, A7, E1, E3 e/o ERR5 sono forniti a un circuito di raccolta guasti e gestione degli errori del sistema di elaborazione 10a.
[0189] In varie forme di attuazione, il circuito di confronto 504 pu? comprendere anche un circuito logico combinatorio 5064, per es., una porta logica OR, configurato per generare un segnale di errore combinato ERR6 che indica un errore correggibile, in cui il circuito logico combinatorio 5064 ? configurato per asserire il segnale di errore combinato ERR6 in risposta a una determinazione che almeno uno dei segnali di errore E2 ed E4 ? asserito. In varie forme di attuazione, uno o pi? dei segnali di errore E2, E4 e/o ERR6 sono forniti al circuito di raccolta guasti e gestione degli errori del sistema di elaborazione 10a. Per esempio, il circuito logico combinatorio 5064 pu? corrispondere al circuito logico combinatorio 5054 rappresentato nella Figura 10.
[0190] Di conseguenza, nelle forme di attuazione rappresentate nelle Figure 11 e 12, una prima memoria 42a ? connessa (mediante il circuito di commutazione 508) al controllore di memoria 500a, e una seconda memoria 42b (preferibilmente identica) ? connessa al secondo controllore di memoria 500b. Le due memorie 42a e 42b e i controllori di memoria 500a e 500b sono usati sostanzialmente in modalit? con duplicazione.
[0191] La terza modalit? di funzionamento rappresentata nelle Figure 11 e 12 permette di ottenere una configurazione ASIL-D, perch? l?intero percorso dal sistema di comunicazione 52 fino alle interfacce di dispositivo EXT1 ed EXT2 alle memorie esterne 42a e 42b ? protetto. In aggiunta, un codice di ECC pu? essere calcolato sopra i dati DATA_INa e l?indirizzo di memoria ADRa e pu? essere aggiunto di seguito ai dati DATA_INa scritti nelle memorie esterne 42a e 42b, che possono quindi essere verificati per ciascuna operazione di lettura. Possibili malfunzionamenti all?interno delle memorie esterne 42a e 42b sono coperti dalla duplicazione.
[0192] Di conseguenza, in varie forme di attuazione, il sottosistema di memoria 50a supporta una pluralit? di modalit? di funzionamento, in cui una modalit? di funzionamento ? selezionata in base ai dati di configurazione CD (per es., statici). Per esempio, la configurazione pu? essere selezionata in base al tipo e alla quantit? dei dati da memorizzare nella memoria esterna 42a o nelle memorie esterne 42a e 42b, e alla protezione richiesta.
[0193] Sostanzialmente, la prima modalit? di funzionamento permette di usare lo spazio di memoria completo delle due memorie esterne 42a e 42b. Sebbene non rappresentato esplicitamente nelle Figure 7 e 8, anche in questa modalit? di funzionamento possono essere usati i circuiti di ECC 502a e 502b (in modo simile a quanto ? rappresentato nelle Figure 11 e 12), al fine di memorizzare bit di ECC aggiuntivi nelle memorie 42a e 42b.
[0194] Per contro, la seconda e la terza modalit? di funzionamento usano il secondo controllore di memoria 500b e il circuito di confronto 508 al fine di verificare il funzionamento del primo controllore di memoria 500a. A questo riguardo, quando ? usato il primo circuito di ECC 502a, il secondo circuito di ECC 502b e il circuito di confronto 508 sono configurati per verificare il funzionamento del primo circuito di ECC 502a. Specificamente, in entrambe le modalit? di funzionamento, il circuito di confronto 508 ? configurato per confrontare i segnali COMa e COMb generati dai controllori di memoria 500a e 500b. Per esempio, i circuiti di confronto 5042, 5048, 5056 e 5058 (corrispondenti eventualmente allo stesso circuito di confronto) sono configurati per confrontare i segnali di controllo di risposta CRESa e CRESb, e i circuiti di confronto 5050 e 5060 (corrispondenti eventualmente allo stesso circuito di confronto) sono configurati per confrontare i dati di risposta DATA_OUTa e DATA_OUTb.
[0195] Nella terza modalit? di funzionamento, questo confronto ? sufficiente perch? i controllori di memoria 500a e 500b interfacciano separatamente due memorie 42a e 42b con una duplicazione dei dati. Per contro, nella seconda modalit? di funzionamento, i controllori di memoria 500a e 500b interfacciano una singola memoria 42a, ma circuiti di confronto 5040 e 5046 aggiuntivi (corrispondenti eventualmente allo stesso circuito di confronto) sono configurati per confrontare almeno una parte dei segnali EXTa ed EXTb generati dai controllori di memoria 500a e 500b. Specificamente, in varie forme di attuazione, i circuiti di confronto 5040 e 5046 (corrispondenti eventualmente allo stesso circuito di confronto) sono configurati per confrontare i segnali IOa e IOb, almeno durante i cicli in cui i controllori di memoria 500a e 500b applicano dati a questi segnali, per es., per trasmettere una richiesta di scrittura e i rispettivi dati, o una richiesta di lettura. Come menzionato in precedenza, il circuito di confronto 508 pu? anche essere configurato per confrontare i segnali di clock CLKa e CLKb e/o i segnali di chip-select CSa e CSb.
[0196] 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 (11)

1. RIVENDICAZIONI
1. Sistema di elaborazione (10a) integrato in un circuito integrato (40), detto sistema di elaborazione (10a) comprendendo:
- un sistema di comunicazione (52; 114);
- un sottosistema di memoria (50a) configurato per interfacciare una memoria (42a) esterna rispetto a detto circuito integrato (40);
- un circuito master (54; 102, 110) configurato per inviare richieste di scrittura e di lettura mediante detto sistema di comunicazione (54; 114) a detto sottosistema di memoria (50a) per memorizzare dati e per leggere dati da detta memoria (42a);
in cui detto sottosistema controllore di memoria (50a) ? connesso a detto sistema di comunicazione (52; 114) e a un canale di comunicazione (EXT1, EXT2) connesso ai terminali di detto circuito integrato (40) configurato per essere connesso a detta memoria (42a), in cui detto canale di comunicazione (EXT1, EXT2) comprende un segnale di dati (IO),
in cui detto sottosistema controllore di memoria (50a) comprende un primo controllore di memoria (500a) e un secondo controllore di memoria (500b), in cui ciascuno di detto primo controllore di memoria (500a) e di detto secondo controllore di memoria (500b) ? configurato per:
- ricevere una richiesta di lettura o di scrittura comprendente dati che indicano un indirizzo di memoria (ADRa, ADRb) e, nel caso di una richiesta di scrittura, rispettivi dati (DATA_INa, DATA_INb) da memorizzare;
- in risposta alla ricezione di una richiesta di scrittura:
- estrarre dalla richiesta di scrittura il rispettivo indirizzo di memoria (ADRa, ADRb) e i rispettivi dati da memorizzare (DATA_INa, DATA_INb), e - generare una rispettiva prima o seconda comunicazione (EXTa, EXTb) per memorizzare i rispettivi dati (DATA_INa, DATA_INb) estratti al rispettivo indirizzo di memoria (ADRa, ADRb) estratto generando un rispettivo primo o secondo segnale di dati (IOa, IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRa, ADRb) estratto e i rispettivi dati (DATA_INa, DATA_INb) estratti;
- in risposta alla ricezione di una richiesta di lettura:
- estrarre dalla richiesta di lettura il rispettivo indirizzo di memoria (ADRa, ADRb),
- generare la rispettiva prima o seconda comunicazione (EXTa, EXTb) per ricevere dati (DATA_OUTa, DATA_OUTb) associati a detto indirizzo di memoria (ADRa, ADRb) estratto generando il rispettivo primo o secondo segnale di dati (IOa, IOb) al fine di trasmettere il rispettivo indirizzo di memoria (ADRa, ADRb) estratto e ricevere i rispettivi dati (DATA_OUTa, DATA_OUTb) associati a detto indirizzo di memoria (ADRa, ADRb) estratto, e
- generare una rispettiva prima o seconda risposta comprendente i rispettivi dati (DATA_OUTa, DATA_OUTb) ricevuti;
in cui, in una prima modalit? di funzionamento, la prima comunicazione (EXTa) di detto primo controllore di memoria (500a) ? connessa (508) a detto canale di comunicazione (EXT1, EXT2), per cui detto primo segnale di dati (IOa) corrisponde a detto segnale di dati (IO), e detto sottosistema controllore di memoria (50a) ? configurato per:
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di scrittura:
- inoltrare (506, COMa, COMb) detta richiesta di scrittura ricevuta a detto primo controllore di memoria (500a) e a detto secondo controllore di memoria (500b), per cui detto primo controllore di memoria (500a) genera il rispettivo primo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e i rispettivi dati (DATA_INa) estratti e detto secondo controllore di memoria (500b) genera il rispettivo secondo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e i rispettivi dati (DATA_INb) estratti;
- confrontare (5040) detto primo segnale di dati (IOa) con detto secondo segnale di dati (IOb) e, in risposta a una determinazione che detto primo segnale di dati (IOa) non corrisponde a detto secondo segnale di dati (IOb), asserire un primo segnale di errore (A1);
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di lettura:
- inoltrare (506, COMa, COMb) detta richiesta di lettura ricevuta a detto primo controllore di memoria (500a) e a detto secondo controllore di memoria (500b), per cui detto primo controllore di memoria (500a) genera il rispettivo primo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e per ricevere i rispettivi dati (DATA_OUTa) associati al rispettivo indirizzo di memoria (ADRa) estratto e detto secondo controllore di memoria (500b) genera il rispettivo secondo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e per ricevere i rispettivi dati (DATA_OUTb) associati al rispettivo indirizzo di memoria (ADRb) estratto, e detto primo controllore di memoria (500a) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTa) ricevuti e detto secondo controllore di memoria (500b) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTb) ricevuti;
- in risposta a una determinazione che detto primo controllore di memoria (500a) trasmette detto indirizzo di memoria (ADRa) estratto mediante detto primo segnale di dati (IOa), confrontare (5046) detto primo segnale di dati (IOa) con detto secondo segnale di dati (IOb) e, in risposta a una determinazione che detto primo segnale di dati (IOa) non corrisponde a detto secondo segnale di dati (IOb), asserire un secondo segnale di errore (A3);
- in risposta a una determinazione che detto primo controllore di memoria (500a) riceve i rispettivi dati (DATA_OUTa) mediante detto primo segnale di dati (IOa), connettere (5080) detto primo segnale di dati (IOa) a detto secondo segnale di dati (IOb), confrontare (5050) la prima risposta generata da detto primo controllore di memoria (500a) con la seconda risposta generata da detto secondo controllore di memoria (500b) e, in risposta a una determinazione che detta prima risposta non corrisponde a detta seconda risposta, asserire un terzo segnale di errore (A5).
2. Sistema di elaborazione secondo la Rivendicazione 1, in cui detto canale di comunicazione (EXT1, EXT2) ? un canale di comunicazione condiviso, e in cui, in una seconda modalit? di funzionamento, la prima comunicazione (EXTa) di detto primo controllore di memoria (500a) e la seconda comunicazione (EXTb) di detto secondo controllore di memoria (500b) sono connesse (508) a detto canale di comunicazione (EXT1, EXT2), per cui detto primo segnale di dati (IOa) e detto secondo segnale di dati (IOb) corrispondono a detto segnale di dati (IO), e detto sottosistema controllore di memoria (50a) ? configurato per:
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di scrittura:
- selezionare (5082) uno tra detto primo controllore di memoria (500a) e detto secondo controllore di memoria (500b),
- inoltrare (506, COMa, COMb) la richiesta di scrittura ricevuta a detto un controllore di memoria (500a; 500b), per cui detto un controllore di memoria (500a; 500a) genera il rispettivo primo segnale di dati (IOa; IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRa; ADRb) estratto e i rispettivi dati (DATA_INa; DATA_INb) estratti,
- selezionare (5082) l?altro tra detto primo controllore di memoria (500a) e detto secondo controllore di memoria (500b),
- inoltrare (506, COMa, COMb) la richiesta di scrittura ricevuta a detto altro controllore di memoria (500a; 500b), per cui detto altro controllore di memoria (500a; 500b) genera il rispettivo primo segnale di dati (IOa; IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRa; ADRb) estratto e i rispettivi dati (DATA_INa; DATA_INb) estratti;
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di lettura:
- selezionare (5082) uno tra detto primo controllore di memoria (500a) e detto secondo controllore di memoria (500b),
- inoltrare (506, COMa, COMb) detta richiesta di lettura ricevuta a detto un controllore di memoria (500a; 500b), per cui detto un controllore di memoria (500a; 500b) genera il rispettivo segnale di dati (IOa; IOb) usato per trasmettere
il rispettivo indirizzo di memoria (ADRa; ADRb) estratto e riceve i rispettivi dati (DATA_OUTa; DATA_OUTb) associati al rispettivo indirizzo di memoria (ADRa; ADRb) estratto, e detto un controllore di memoria (500a; 500b) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTa; DATA_OUTb) ricevuti,
- selezionare (5082) l?altro tra detto primo controllore di memoria (500a) e detto secondo controllore di memoria (500b),
- inoltrare (506, COMa, COMb) detta richiesta di lettura ricevuta a detto altro controllore di memoria (500a; 500b), per cui detto altro controllore di memoria (500a; 500b) genera il rispettivo segnale di dati (IOa; IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRa; ADRb) estratto e riceve i rispettivi dati (DATA_OUTa; DATA_OUTb) associati al rispettivo indirizzo di memoria (ADRa; ADRb) estratto, e detto altro controllore di memoria (500a; 500b) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTa; DATA_OUTb) ricevuti,
- confrontare (5060) la prima risposta generata da detto primo controllore di memoria (500a) con la seconda risposta generata da detto secondo controllore di memoria (500b) e, in risposta a una determinazione che detta prima risposta non corrisponde a detta seconda risposta, asserire un quarto segnale di errore (A7).
3. Sistema di elaborazione secondo la Rivendicazione 1 o la Rivendicazione 2, in cui detta prima e detta seconda risposta comprendono rispettivi primi e secondi segnali di controllo di risposta (CRESa, CRESb) e in cui, in detta prima modalit? di funzionamento e/o in detta seconda modalit? di funzionamento, detto sottosistema controllore di memoria (50a) ? configurato per confrontare (5042, 5048, 5056, 5058) i primi segnali di controllo di risposta (CRESa) generati da detto primo controllore di memoria (500a) con i secondi segnali di controllo di risposta (CRESb) generati da detto secondo controllore di memoria (500b) e, in risposta a una determinazione che detti primi segnali di controllo di risposta (CRESa) non corrispondono a detti secondi segnali di controllo di risposta (CRESb), per asserire un quinto segnale di errore (A2, A4, ERR4, A6).
4. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto canale di comunicazione (EXT1, EXT2) ? un canale di comunicazione condiviso, e in cui, in una terza modalit? di funzionamento, la prima comunicazione (EXTa) di detto primo controllore di memoria (500a) e la seconda comunicazione (EXTb) di detto secondo controllore di memoria (500b) sono connesse (508) a detto canale di comunicazione (EXT1, EXT2), per cui detto primo segnale di dati (IOa) e detto secondo segnale di dati (IOb) corrispondono a detto segnale di dati (IO), e detto sottosistema controllore di memoria (50a) ? configurato per:
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di scrittura:
- determinare se la richiesta di scrittura comprende dati che indicano un indirizzo di memoria (ADRa) associato a detto primo controllore di memoria (500a) o dati che indicano un indirizzo di memoria (ADRb) associato a detto secondo controllore di memoria (500b),
- in risposta a una determinazione che la richiesta di scrittura comprende dati che indicano un indirizzo di memoria (ADRa) associato a detto primo controllore di memoria (500a), inoltrare (506, COMa, COMb) la richiesta di scrittura ricevuta a detto primo controllore di memoria (500a), per cui detto primo controllore di memoria (500a) genera il rispettivo primo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e i rispettivi dati (DATA_INa) estratti, e
- in risposta a una determinazione che la richiesta di scrittura comprende dati che indicano un indirizzo di memoria (ADRb) associato a detto secondo controllore di memoria (500b), inoltrare (506, COMa, COMb) la richiesta di scrittura ricevuta a detto secondo controllore di memoria (500b), per cui detto secondo controllore di memoria (500b) genera il rispettivo secondo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e i rispettivi dati (DATA_INb) estratti,
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di lettura:
- determinare se la richiesta di lettura comprende dati che indicano un indirizzo di memoria (ADRa) associato a detto primo controllore di memoria (500a) o dati che indicano un indirizzo di memoria (ADRb) associato a detto secondo controllore di memoria (500b),
- in risposta a una determinazione che la richiesta di lettura comprende dati che indicano un indirizzo di memoria (ADRa) associato a detto primo controllore di memoria (500a), inoltrare (506, COMa, COMb) detta richiesta di lettura ricevuta a detto primo controllore di memoria (500a), per cui detto primo controllore di memoria (500a) genera il rispettivo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e riceve i rispettivi dati (DATA_OUTa) associati al rispettivo indirizzo di memoria (ADRa) estratto, e detto primo controllore di memoria (500a) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTa) ricevuti,
- in risposta a una determinazione che la richiesta di lettura comprende dati che indicano un indirizzo di memoria (ADRb) associato a detto primo controllore di memoria (500b), inoltrare (506, COMa, COMb) detta richiesta di lettura ricevuta a detto primo controllore di memoria (500b), per cui detto primo controllore di memoria (500b) genera il rispettivo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e riceve i rispettivi dati (DATA_OUTb) associati al rispettivo indirizzo di memoria (ADRb) estratto, e detto primo controllore di memoria (500a) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTb) ricevuti.
5. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto canale di comunicazione condiviso (EXT1, EXT2) comprende un primo segnale di chip-enable (CS1) atto ad abilitare una prima memoria (42a) e un secondo segnale di chip-enable (CS2) atto ad abilitare una seconda memoria (42b), e in cui detto primo controllore di memoria (500a) ? configurato per asserire detto primo segnale di chip select (CS1) quando trasmette o riceve dati mediante detto primo segnale di dati (IOa) e detto secondo controllore di memoria (500b) ? configurato per asserire detto
secondo segnale di chip select (CS2) quando trasmette o riceve dati mediante detto secondo segnale di dati (IOb).
6. Sistema di elaborazione secondo la Rivendicazione 5, in cui detto canale di comunicazione condiviso (EXT1, EXT2) ? un Bus SPI (Serial Peripheral Interface) o OctalSPI.
7. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto sottosistema controllore di memoria (50a) comprende un primo circuito di Codice di Correzione di Errori, ECC, (502a) associato a detto primo controllore di memoria (500a) e un secondo circuito di ECC (502a) associato a detto secondo controllore di memoria (500b), in cui ciascuno di detto primo controllore di memoria (500a) e di detto secondo controllore di memoria (500b) ? configurato per:
- in risposta alla ricezione di una richiesta di scrittura:
- calcolare mediante il rispettivo primo o secondo circuito di ECC (502a, 502b) bit di ECC,
- trasmettere il rispettivo indirizzo di memoria (ADRa, ADRb) estratto, i rispettivi dati (DATA_INa, DATA_INb) estratti e i rispettivi bit di ECC calcolati; - in risposta alla ricezione di una richiesta di lettura:
- trasmettere il rispettivo indirizzo di memoria (ADRa, ADRb) estratto e ricevere i rispettivi dati (DATA_OUTa, DATA_OUTb) e rispettivi bit di ECC;
- calcolare mediante il rispettivo primo o secondo circuito di ECC (502a, 502b) ulteriori bit di ECC,
- confrontare gli ulteriori bit di ECC con i bit di ECC ricevuti e, in risposta a una determinazione che gli ulteriori bit di ECC non corrispondono ai bit di ECC ricevuti, asserire un segnale di errore di ECC (E1, E2, E3, E4).
8. Sistema di elaborazione secondo la Rivendicazione 7, in cui detto primo e detto secondo circuito di ECC (502a, 502b) sono circuiti di rilevazione e di correzione di errori configurati per generare dati (DATA_OUTa, DATA_OUTb) corretti, e in cui detta prima
o detta seconda risposta comprende i rispettivi dati (DATA_OUTa, DATA_OUTb) corretti.
9. Sistema di elaborazione secondo la Rivendicazione 7 o la Rivendicazione 8, in cui detto primo e detto secondo circuito di ECC (502a, 502b) sono configurati per calcolare i rispettivi bit di ECC in funzione dei rispettivi dati (DATA_INa, DATA_INb) estratti o dei dati (DATA_OUTa, DATA_OUTb) ricevuti e del rispettivo indirizzo di memoria (ADRa, ADRb).
10. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto sottosistema controllore di memoria comprende un circuito di controllo (510) configurato per ricevere dati di configurazione (CD) e per selezionare una tra detta prima, detta seconda o detta terza modalit? di funzionamento in funzione di detti dati di configurazione (CD).
11. Procedimento di funzionamento di un sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, comprendente in una prima modalit? di funzionamento:
- connettere (508) detto primo controllore di memoria (500a) a detto canale di comunicazione (EXT1, EXT2), per cui detto primo segnale di dati (IOa) corrisponde a detto segnale di dati (IO),
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di scrittura:
- inoltrare (506, COMa, COMb) la richiesta di scrittura ricevuta al primo controllore di memoria (500a) e al secondo controllore di memoria (500b), per cui il primo controllore di memoria (500a) genera il rispettivo primo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e i rispettivi dati (DATA_INa) estratti e il secondo controllore di memoria (500b) genera il rispettivo secondo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e i rispettivi dati (DATA_INb) estratti;
- confrontare (5040) il primo segnale di dati (IOa) con il secondo segnale di dati (IOb) e, in risposta a una determinazione che detto primo segnale di dati (IOa) non corrisponde a detto secondo segnale di dati (IOb), asserire un primo segnale di errore (A1);
- in risposta alla ricezione da detto sistema di comunicazione (52; 114) di una richiesta di lettura:
- inoltrare (506, COMa, COMb) la richiesta di lettura ricevuta al primo controllore di memoria (500a) e al secondo controllore di memoria (500b), per cui il primo controllore di memoria (500a) genera il rispettivo primo segnale di dati (IOa) usato per trasmettere il rispettivo indirizzo di memoria (ADRa) estratto e per ricevere i rispettivi dati (DATA_OUTa) associati al rispettivo indirizzo di memoria (ADRa) estratto e il secondo controllore di memoria (500b) genera il rispettivo secondo segnale di dati (IOb) usato per trasmettere il rispettivo indirizzo di memoria (ADRb) estratto e per ricevere i rispettivi dati (DATA_OUTb) associati al rispettivo indirizzo di memoria (ADRb) estratto, e il primo controllore di memoria (500a) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTa) ricevuti e il secondo controllore di memoria (500b) genera la rispettiva risposta comprendente i rispettivi dati (DATA_OUTb) ricevuti;
- in risposta a una determinazione che il primo controllore di memoria (500a) trasmette l?indirizzo di memoria (ADRa) estratto mediante il primo segnale di dati (IOa), confrontare (5046) il primo segnale di dati (IOa) con il secondo segnale di dati (IOb) e, in risposta a una determinazione che detto primo segnale di dati (IOa) non corrisponde a detto secondo segnale di dati (IOb), asserire un secondo segnale di errore (A3);
- in risposta a una determinazione che il primo controllore di memoria (500a) riceve i rispettivi dati (DATA_OUTa) mediante il primo segnale di dati (IOa), connettere (5080) il primo segnale di dati (IOa) al secondo segnale di dati (IOb), confrontare (5050) la prima risposta generata dal primo controllore di memoria (500a) con la seconda risposta generata dal secondo controllore di memoria (500b) e, in risposta a una determinazione che detta prima risposta non corrisponde a detta seconda risposta, asserire un terzo segnale di errore (A5).
IT102024000000057A 2024-01-04 2024-01-04 Sistema di elaborazione e relativo procedimento IT202400000057A1 (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT102024000000057A IT202400000057A1 (it) 2024-01-04 2024-01-04 Sistema di elaborazione e relativo procedimento
US18/937,579 US20250225068A1 (en) 2024-01-04 2024-11-05 Processing system, and related method
EP24221778.4A EP4582962B1 (en) 2024-01-04 2024-12-19 Processing system, and related method
CN202411985724.6A CN120256342A (zh) 2024-01-04 2024-12-31 处理系统和相关方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102024000000057A IT202400000057A1 (it) 2024-01-04 2024-01-04 Sistema di elaborazione e relativo procedimento

Publications (1)

Publication Number Publication Date
IT202400000057A1 true IT202400000057A1 (it) 2025-07-04

Family

ID=90123559

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102024000000057A IT202400000057A1 (it) 2024-01-04 2024-01-04 Sistema di elaborazione e relativo procedimento

Country Status (3)

Country Link
US (1) US20250225068A1 (it)
EP (1) EP4582962B1 (it)
IT (1) IT202400000057A1 (it)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249187A (en) * 1987-09-04 1993-09-28 Digital Equipment Corporation Dual rail processors with error checking on I/O reads
EP3413194A1 (en) 2017-06-08 2018-12-12 STMicroelectronics Application GmbH Processing system, related integrated circuit, device and method
US20190220346A1 (en) 2018-01-15 2019-07-18 Microchip Technology Incorporated Safety Enhancement for Memory Controllers
US20200310683A1 (en) 2019-03-28 2020-10-01 Infineon Technologies Ag Memory dispatcher
US20220180959A1 (en) 2020-12-03 2022-06-09 Stmicroelectronics S.R.L. Hardware accelerator device, corresponding system and method of operation
US11392455B1 (en) 2021-02-26 2022-07-19 Texas Instruments Incorporated Methods, apparatus, and articles of manufacture to determine memory access integrity based on feedback from memory
US20220243437A1 (en) 2021-01-29 2022-08-04 Qualcomm Incorporated Dynamically Re-Configurable In-Field Self-Test Capability For Automotive Systems

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046492A1 (en) * 2001-08-28 2003-03-06 International Business Machines Corporation, Armonk, New York Configurable memory array
US8468419B2 (en) * 2009-08-31 2013-06-18 Lsi Corporation High-reliability memory
US8990660B2 (en) * 2010-09-13 2015-03-24 Freescale Semiconductor, Inc. Data processing system having end-to-end error correction and method therefor
CN102933443B (zh) * 2011-06-07 2015-11-25 大星电机工业株式会社 双控制器系统的错误检测装置和方法
JP2020035335A (ja) * 2018-08-31 2020-03-05 キヤノン株式会社 ブリッジデバイスおよび、ブリッジデバイスの制御方法と当該ブリッジデバイスを有する情報処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249187A (en) * 1987-09-04 1993-09-28 Digital Equipment Corporation Dual rail processors with error checking on I/O reads
EP3413194A1 (en) 2017-06-08 2018-12-12 STMicroelectronics Application GmbH Processing system, related integrated circuit, device and method
US20190220346A1 (en) 2018-01-15 2019-07-18 Microchip Technology Incorporated Safety Enhancement for Memory Controllers
US20200310683A1 (en) 2019-03-28 2020-10-01 Infineon Technologies Ag Memory dispatcher
US20220180959A1 (en) 2020-12-03 2022-06-09 Stmicroelectronics S.R.L. Hardware accelerator device, corresponding system and method of operation
US20220243437A1 (en) 2021-01-29 2022-08-04 Qualcomm Incorporated Dynamically Re-Configurable In-Field Self-Test Capability For Automotive Systems
US11392455B1 (en) 2021-02-26 2022-07-19 Texas Instruments Incorporated Methods, apparatus, and articles of manufacture to determine memory access integrity based on feedback from memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GETTING STARTED WITH OCTO-SPI AND HEXADECA-SPIINTERFACE ON STM32 MICROCONTROLLERS, March 2023 (2023-03-01)

Also Published As

Publication number Publication date
EP4582962A1 (en) 2025-07-09
EP4582962B1 (en) 2026-02-25
EP4582962C0 (en) 2026-02-25
US20250225068A1 (en) 2025-07-10

Similar Documents

Publication Publication Date Title
US7441060B2 (en) System, method and storage medium for providing a service interface to a memory system
IT201800003234A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
US9632869B1 (en) Error correction for interconnect circuits
US11764807B2 (en) Processing system, related integrated circuit, device and method
EP4064001B1 (en) Processing system, related integrated circuit, device and method
EP4254130B1 (en) Processing system, related integrated circuit, device and method
EP4141677B1 (en) Processing system, related integrated circuit, device and method
JP6447167B2 (ja) 半導体デバイス、ログ取得方法及び電子機器
US11915008B2 (en) Processing system, related integrated circuit, device and method
EP4254196B1 (en) Processing system, related integrated circuit, device and method
US12353880B2 (en) One-time programmable (OTP) memory controller with a control circuit configured to assert a pre-load start signal and a pre-load end signal, related processing system, integrated circuit and method
IT202400000057A1 (it) Sistema di elaborazione e relativo procedimento
CN120256342A (zh) 处理系统和相关方法
US5893932A (en) Address path architecture
EP4239481B1 (en) Processing system, related integrated circuit, device and method
WO2006107380A2 (en) System for intergrated data integrity verification and method thereof
CN116701045A (zh) 处理系统、相关集成电路、设备和方法
EP4296850B1 (en) Processing system, related integrated circuit, device and method
IT201900018587A1 (it) Disposizione circuitale comprendente un circuito slave che riceve un segnale di clock esterno da un circuito master, relativo procedimento
CN115145753A (zh) 处理系统、相关集成电路、设备和方法
IT202200023610A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
CN117253518A (zh) 一次性可编程存储器控制器、相关处理系统、集成电路和方法
Zhao et al. Research of Gathering Parking Grade of Vehicle Electric Parking Brake System
JPS63155215A (ja) 情報処理装置