ITMI940730A1 - Sistema di controllori di interruzioni programmabile a piu' processori con un controllore di interruzioni locale integrato nei processori - Google Patents

Sistema di controllori di interruzioni programmabile a piu' processori con un controllore di interruzioni locale integrato nei processori Download PDF

Info

Publication number
ITMI940730A1
ITMI940730A1 IT000730A ITMI940730A ITMI940730A1 IT MI940730 A1 ITMI940730 A1 IT MI940730A1 IT 000730 A IT000730 A IT 000730A IT MI940730 A ITMI940730 A IT MI940730A IT MI940730 A1 ITMI940730 A1 IT MI940730A1
Authority
IT
Italy
Prior art keywords
interrupt
processor
priority
local
bus
Prior art date
Application number
IT000730A
Other languages
English (en)
Inventor
David Carson
P K Nizar
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of ITMI940730A0 publication Critical patent/ITMI940730A0/it
Publication of ITMI940730A1 publication Critical patent/ITMI940730A1/it
Application granted granted Critical
Publication of IT1270035B publication Critical patent/IT1270035B/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Programmable Controllers (AREA)
  • Information Transfer Systems (AREA)

Description

Descrizione dell'invenzione avente per titolo:
"SISTEMA DI CONTROLLORI DI INTERRUZIONI PROGRAMMABILE A PIU’ PRO-CESSORI CON UN CONTROLLORE DI INTERRUZIONI LOCALE INTEGRATO NEI PROCESSORI "
La presente invenzione riguarda in generale il campo di sistemi a più processori e più specificamente controllori di interruzioni previsti per gestire richieste di interruzione di servizio di apparecchiature periferiche in un ambiente a più processori.
Apparecchiature periferiche di entrata/uscita, fra cui elementi relativi ad elaboratori quali stampanti, analizzatori e dispositivi di visualizzazione, richiedono un servizio intermittente da parte di un processore principale (host) per assicurare un funzionamento adeguato. I servizi possono comprendere, ad esempio, la fornitura di dati, l'acquisizione di dati e/o di segnali di controllo. Ciascuna periferica avrà tipicamente un'organizzazione di servizio differente, che dipende non solo dal tipo di unità, ma anche dal suo uso programmato. Al processore principale si richiede di multiplare la sua attività di servizio fra dette unità a seconda delle loro necessità individuali, eseguendo uno o più programmi non prioritari. Si sono usati due metodi per avvertire il processore principale di un servizio richiesto: metodi di unità interrogata e interruzione di unità. Nel primo metodo ciascuna unità periferica viene controllata periodicamente per vedere se è stato posizionato un indicatore indicante una richiesta di servizio, mentre, nel secondo metodo, la richiesta di servizio di unità viene indirizzata ad un controllore di interruzioni che può interrompere il processore principale, forzando un ramo dal suo programma corrente ad un sottoprogramma speciale di servizio di interruzioni. Il metodo di interruzione è vantaggioso in guanto il processore principale non deve dedicare cicli di orologio inutili all'interrogazione. La presente invenzione riguarda questo secondo metodo. Il problema specifico cui mira la presente invenzione è la gestione di interruzioni in un ambiente di sistema a più processori.
I sistemi a più processori, spesso un insieme di elaboratori collegati in rete aventi unità periferiche comuni, costituiscono uno stimolo nella progettazione di metodi di controllo di interruzioni. Ad esempio, nel caso di una rete di elaboratori al servizio di diversi utenti, sarebbe assai desiderabile distribuire il carico di gestione di interruzioni in qualche modo ottimale. Processori che stanno elaborando lavori con elevata priorità dovrebbero essere sollevati da tale obbligo quando sono disponibili processori con lavori di priorità inferiore. Processori operanti alla priorità più bassa dovrebbero essere caricati uniformemente dalle richieste di servizio di interruzioni. Inoltre circostanze particolari possono richiedere che una particolare unità di entrata/uscita sia servita esclusivamente da un processore prescelto (o "a fuoco"). Così la presente invenzione riguarda il problema del servizio ottimale di interruzione dinamica e statica in sistemi a più processori.
I controllori di interruzioni programmabili (PIC) noti, ad esempio Intel 82C59A e 82380, sono previsti per accettare un certo numero di entrate di richieste di interruzioni esterne. La struttura essenziale di tali controllori, mostrata in fig. 1, consiste di sei blocchi principali:
IRR- (Interrupt Request Register) Registro di richieste di interruzioni 11 immagazzina tutti i livelli di interruzioni (IRQ) su linee 16 che richiedono servizio;
ISR- (Interrupt Service Register) Registro di servizio di interruzioni 12 immagazzina tutti i livelli di interruzioni che vengono serviti, lo stato essendo aggiornato alla ricezione di una fine di interruzione (EOI); IMR- (Interrupt Mask Register) Registro di maschere di interruzioni 13 immagazzina i bit indicanti quali linee IRQ 16 devono essere mascherate o disabilitate operando su IRR11;
VR- (Vector Registers) Registri di vettori 19, un insieme di registri, uno per ciascuna linea IRQ 16, immagazzina il numero di vettore di interruzione preprogrammato fornito al processore principale su bus di dati 17, contenente tutte le informazioni necessarie al processore principale per servire la richiesta;
PR- (Priority Resolver) Risolutore di priorità 15, blocco logico che determina la priorità dei bit posti in IRRll, la priorità più elevata viene scelta e campionata nel bit corrispondente di ISR12 durante un ciclo di accettazione di interruzione (INTA) dal processore principale;
(Control Logic)
Logica di
controllo- Coordina il funzionamento complessivo degli altri blocchi interni nello stesso PIC, attiva la linea di interruzione di entrata di processore principale (INT) 19 quando sono attivi uno o più bit di IRRll, abilita VR19 per pilotare il vettore di interruzione su bus di dati 17 durante un ciclo INTA ed inibisce tutte le interru-' zioni con priorità uguale o inferiore a quella attualmente servita.
Per assegnare priorità alle varie linee IRQ 16 si sono usati diversi metodi, fra cui:
1) modo completamente intercalato,
2) modo a rotazione automatica - unità a priorità uguale, e
3) modo a rotazione specifica - priorità specifica.
Il modo completamente intercalato supporta una struttura di interruzioni a più livelli in cui tutte le linee di entrata IRQ 16 sono disposte dalla priorità più elevata a quella più bassa: tipicamente a IRQO à assegnata la priorità più elevata, mentre a IRQ7 è assegnata la più bassa.
La rotazione automatica di priorità, quando le unità di interruzione sono di priorità uguale, viene effettuata mediante la rotazione (scorrimento circolare) delle priorità assegnate così che alla linea IRQ servita più recentemente sia assegnata la priorità più bassa. In tal modo l'accessibilità al servizio di interruzioni tende ad essere livellata statisticamente per ciascuna delle unità concorrenti.
Lo specifico metodo di rotazione dà versatilità all'utente, consentendogli di scegliere quale linea IRQ deve ricevere la priorità inferiore, a tutte le altre linee IRQ essendo allora assegnate sequenzialmente (circolarmente) priorità più elevate.
Dalla descrizione precedente si può vedere che strutture PIC del tipo descritto forniscono a sistemi ad un processore unità periferiche multiple, ma non forniscono a sistemi a più processori unità periferiche multiple condivise, ciò a cui si riferisce la presente invenzione.
Uno scopo della presente invenzione è di fornire un sistema di controllori di interruzioni programmabile a più processori (MPIC) che usa un chip a circuito integrato che comprende come unità singola sia il processore locale, sia un controllore di interruzioni di processore locale associato come unità singola.
Un altro scopo è di fornire un sistema di controllore di interruzioni programmabile a più processori (MPIC) comprendente le seguenti caratteristche, ma non limitato ad esse:
1) unità periferiche di entrata/uscita multiple, ciascuna col proprio insieme di interruzioni;
2) gestione di interruzioni a più processori, sia statica che dinamica, comprendente la distribuzione simmetrica di interruzioni su processori scelti;
3) piedini di richiesta di interruzione fatti scattare da livello o fronte, software selezionabile per piedino;
4) vettore di interruzione e informazioni di guida programmabili per piedino;
5) campo indirizzo di vettore programmabile definito da ciascun sistema operativo;
6) interruzioni fra processori che consentono ad un processore di interromperne un altro per riassegnazione dinamica di compiti di interruzione; e
7) supporto di funzioni di ampio supporto di sistema relative ad interruzioni non mascherabili (NMI), rimessa a stato iniziale di processore e messa a punto di sistema.
La presente invenzione consegue dette caratteristiche mediante una struttura di sistema MPIC che comprende tre sottosistemi principali:
1) un'unità di entrata/uscita MPIC per acquisire segnali di richiesta di interruzione (IRQ) dalle sue unità periferiche di entrata/uscita associate, avente una tabella di reinstradamento per selezione di processore ed informazioni di vettore/priorità;
2) unità MPIC locali che possono essere unità ausiliarie separate connesse al processore associato o unità che sono parzialmente o totalmente integrate nel processore associato, ciascuna richiesta di interruzione di gestione per uno specifico processore di sistema comprendendo operazioni di spostamento verso la coda, intercalamento e mascheratura, nonché generazione di interruzioni fra processori; e
3) un bus di entrata/uscita dedicato, distinto dai bus di sistema o di memoria, per comunicazioni fra le unità di entrata/uscita ed MPIC locali così come fra unità MPIC locali.
E' un altro scopo di questa invenzione sopportare uno scaglione di progressione di cambiamento di scala di uno, cioè un processore alla volta senza che vengano sensibilmente penalizzati un qualsiasi numero di processori.
La presente invenzione può essere compresa più completamente dalla descrizione dettagliata data qui di seguito e dai disegni allegati delle forme di realizzazione preferite dell'invenzione, i quali non devono comunque essere considerati come limitativi dell'invenzione alla forma di realizzazione specifica, ma servono esclusivamente a spiegazione e comprensione, e nei quali:
fig. 1 rappresenta uno schema a blocchi di un comune controllore di interruzioni programmabile ad un processore (PIC) noto;
fig. 2 è uno schema a blocchi del sistema controllore di interruzioni programmabile a più processori (MPIC) attualmente preferito;
fig. 3 è uno schema a blocchi dell'unità di entrata/uscita-MPIC attualmente preferita;
fig. 4 mostra i vari campi che compongono un elemento da 64 bit di tabella di reinstradamento;
fig. 5 è uno schema a blocchi dell'unità MPIC locale attualmente preferita;
fig. 6 mostra i vari campi che costituiscono gli elementi di tabella di vettori locali di un'unità MPIC locale;
fig. 7 mostra le varie assegnazioni di campi del registro di comando di interruzione;
fig. 8 rappresenta la ricerca del bit IRR distante da parte del bit IRR di destinazione;
fig. 9 è un diagramma di flusso che rappresenta il processo di accettazione di interruzione da parte di un'unità MPIC locale;
fig. 10 mostra la configurazione di registro ID di MPIC; fig. 11 mostra le connessioni di bus MPIC non isolato; fig. 12 mostra una disposizione di bus MPIC con tampone a tre stati;
fig. 13 mostra il processo di decodifica per l'ID di MPIC usato in arbitraggio di bus;
fig. 14 mostra le forme di messaggio breve MPIC;
fig. 15 mostra la codifica di messaggio MPIC del modo di uscita;
fig. 16 definisce i bit di controllo del messaggio MPIC; fig. 17 definisce la codifica estesa di bit di controllo di modo di uscita;
fig. 18 mostra i formati di messaggio medio e lungo MPIC--Bus;
fig. 19 mostra il generatore di tempo in Base 0, 1 e 2; fig. 20 mostra le attribuzioni di bit di registro di configurazioni di divisione (Base 2);
fig. 21 mostra il contenuto della tabella di vettore locale a tre temporizzatori.
Si descrive un sistema di controllore di interruzioni programmabile a più processori (MPIC). Nella descrizione seguente si espongono numerosi dettagli specifici, quali un numero specifico di piedini di entrata, bit, unità, ecc. per consentire una piena comprensione della forma di realizzazione preferita della presente invenzione. Sarà tuttavia evidente al tecnico del ramo che la presente invenzione può essere applicata senza tali dettagli specifici. In altri casi circuiti ben noti non sono stati mostrati in dettaglio o sono stati mostrati solo sotto forma di schemi a blocchi, per evitare di complicare inutilmente la presente invenzione.
Inoltre, nella descrizione della presente invenzione, si fa riferimento a nomi di segnali peculiari della forma di realizzazione attualmente preferita. Il riferimento a tali nomi specìfici non va visto come una limitazione dello spirito o dell'ambito della presente invenzione.
Il sistema controllore di interruzioni programmabile a più processori (MPIC) è previsto per fornire servizio di interruzione in un ambiente a più processori. La tecnica attuale riguarda principalmente sistemi ad un processore in cui le interruzioni di un certo numero di unità periferiche sono servite da un singolo processore coadiuvato da un controllore di interruzioni programmabile (PIC). In un sistema a più processori è spesso desiderabile suddividere il carico di servizio di interruzione fra un gruppo di processori simili. Ciò comporta la capacità di trasmettere richieste di servizio di interruzione al gruppo di processori appropriato ed un meccanismo per determinare l'assegnazione corretta dei compiti fra i processori. Il problema di progettazione ad un processore è notevolmente più semplice: il PIC dedicato al processore assegna una priorità a ciascuna linea di richiesta di interruzione (IRQ), ordina le richieste in base alle priorità assegnate ed emette le informazioni necessarie al processore per iniziare tempestivamente il sottoprogramma di servizio appropriato.
Il sistema MPIC fornisce ai vari processori assegnazione di compiti di interruzione sia statica che dinamica. Funzionando in modo puramente statico, funziona molto come un PIC in un sistema ad un processore assegnando ciascuna interruzione secondo un'organizzazione prescritta.
Funzionando in modo dinamico, l’MPIC gestisce assegnazione di compiti di interruzione prendendo in considerazione la priorità di compiti relativa fra processori.
Ci si attende che uso più tipico implichi elementi di gestione di interruzione sia statica che dinamica. Assegnazione statica può effettuarsi, ad esempio, quando considerazioni di concessione di licenza precludono l'uso condiviso di software di servizio. In altri casi può essere desiderabile limitare il compito di servizio di interruzioni ad un sottoinsieme di processori che condividono un sottosistema periferico comune. Nel caso estremo, tutti i processori sono soggetti a richieste di interruzioni da tutti i sottosistemi periferici.
La fig. 2 è uno schema a blocchi del sistema controllore di interruzione programmabile a più processori (MPIC) attualmente preferito. L'MPIC 100 consiste di tre unità principali: unità MPIC di entrata/uscita 102, bus MPIC 103 ed unità MPIC locale multiple, una delle quali e indicata con 104. Ciascuna MPIC di entrata/uscita 102 accetta linee di interruzione 107 dal suo sottosistema di entrata/uscita associato (tipicamente un insieme di periferiche), ciascuna linea corrispondendo ad un'unica IRQ. L'MPIC di entrata/uscita è connessa al bus MPIC 103 che trasmette a tutte le unità MPIC locali 104 messaggi IRQ formattati appropriatamente contenenti tutte le informazioni di identificazione e priorità necessarie. Ciascuna unità MPIC locale 104 esamina il messaggio e decide se accettarlo. Se accattato in via di tentativo da più di un'unità MPIC locale 104, si richiama una procedura di arbitraggio fra unità in concorrenza. L'unità MPIC locale 104 con la priorità inferiore vince l'arbitraggio ed accetta l'IRQ e la fornisce tempestivamente al suo processore associato 105.
Il bus di sistema 30 costituisce i mezzi comuni per comunicazione fra processori, memoria ed altre unità periferiche del sistema a più processori. Ciascun processore e periferica è interfacciato con bus di sistema 30 mediante un controllore di bus di memoria (MBC) 31. In sistemi noti, il bus di sistema 30 porta traffico di richiesta di interruzione, traffico di servizio di interruzione; e tutto l'altro traffico di sistema fra unità. La presente invenzione relega il traffico di richiesta di interruzione al bus MPIC 103, aumentando cosi il rendimento complessivo di sistema.
Le funzioni di controllo di interruzioni delle due unità MPIC di entrata/uscita e locale sono responsabili collettivamente dell'emissione di interruzioni da sorgenti di interruzioni ad un processore di servizio di interruzione in un sistema a più processori.
Ciascuna interruzione ha un'identità, il vettore di interruzione, che distingue in modo unico l'interruzione dalle interruzioni nel sistema. Quando un processore accetta un'interruzione (IRQ), usa il vettore per localizzare il punto di entrata del gestore di interruzione di software appropriato nella sua tabella di interruzione. La forma di realizzazione preferita supporta 256 (8 bit) vettori distinti nel campo da 0 a 255.
Ciascuna interruzione ha una priorità di interruzione rappresentata dai cinque bit più significativi del vettore di interruzione a 8 bit, cioè 16 livelli di priorità, 0 essendo la priorità più bassa e 15 quella più elevata. Ciò'comporta che 16 vettori differenti possono condividere un singolo livello di priorità di interruzione.
Interruzioni sono generate da un certo numero di sorgenti differenti, che possono comprendere:
1) unità esterne di entrata/uscita connesse all'unità MPIC di entrata/uscita manifestate da fronti {transizioni di livello) o livelli su piedini di entrata di interruzione e possono essere reinstradate a un qualunque processore;
2) interruzioni di unità connesse localmente, sempre dirette solo al processore locale, manifestate come segnale di fronte o livello;
3) interruzioni di temporizzatore MPIC, generate nell'unità MPIC locale da uno dei tre temporizzatori programmabili;
4) interruzioni di inter-processori indirizzate ad un singolo processore di gruppi di processori in supporto di autointerruzioni di software, organizzazione di eliminazione, svuotamento di tampone di lettura a parte (TLB) di tabella di memoria nascosta; e 5) interruzione di errore di parità di bus generata a un'unità MPIC locale che rileva un errore di parità sul bus di dati provocando l'interruzione del suo processore principale.
La destinazione di un'interruzione può essere zero, uno, o un gruppo di processori nel sistema. Si può specificare una destinazione differente per ciascuna interruzione. Il trasmettitore specifica destinazione di un'interruzione in uno di due modi di destinazione: modo fisico e modo logico.
In modo fisico il processore di destinazione è specificato da un unico ID di MPIC a 8 bit. Solo una singola destinazione o una trasmissione a tutti (ID di MPIC di tutti) può essere specificata in modo di destinazione fisica.
Ciascuna unità MPIC ha un registro che contiene l'ID di MPIC a 8 bit dell'unità. L'ID di MPIC serve come nome fisico dell'unità MPIC. Esso può essere usato nella specifica di informazioni di destinazione ed è anche usato per accedere al bus MPIC. Il meccanismo con cui un MPIC stabilisce il suo ID di MPIC è dipendente dalla realizzazione. Alcune realizzazioni possono trattenere nell 'ID di MPIC su alcuni dei loro piedini da numero di porzioni di tempo in tempo di rimessa a stato iniziale. L'ID di MPIC è letto e scritto da software.
L'ID di MPIC serve da "nome" fisico dell'unità MPIC usata per indirizzare l'MFIC in modo di destinazione fisica e per uso di bus MPIC.
In modo logico, le destinazioni vengono specificate usando un campo di destinazione a 32 bit. Tutte le unità MPIC locali contengono un registro di destinazione logica a 32 bit 223 con cui viene confrontato il campo di destinazione dell'interruzione per determinare se l'interruzione è destinata al ricevitore. Un registro di formato di destinazione a 32 bit 221 in ciascuna unità MPIC locale definisce esattamente come deve essere comparato il campo di destinazione al registro di formato di destinazione. In altre parole, il registro di formato di destinazione 221 definisce l'interpretazione delle informazioni di destinazione logica.
Il registro di formato di destinazione 221 ripartisce le informazioni di destinazione a 32 bit in due campi:
(1) Un campo codificato che può essere usato per rappresentare qualche ID scalare. Concordanza sul campo codificato richiede concordanza esatta sul valore di questo campo. Per supportare trasmissione a tutti in modo logico, viene trattato un valore di campo codificato di tutti speciale in ciò che concorda con ogni valore codificato.
(2) Un campo decodificato (o insieme di bit) che può essere usato per rappresentare un insieme di elementi. La concordanza sul campo decodificato richiede che almeno una delle coppie corrispondenti di bit nei campi decodificati siano entrambi uno.
Il registro di formato di destinazione 221 è controllato da software e determina quali bit nelle informazioni di destinazione sono parte del campo codificato e quali bit sono parte del campo decodificato. Per avere concordanza sulla destinazione, devono concordare entrambi i campi.
L'interpretazione di livello logico di cosa rappresenta realmente ciascun campo è definita totalmente dal sistema operativo. Notare che questi campi non devono necessariamente usare bit e che la lunghezza di un campo può essere zero. Un campo di lunghezza zero concorda sempre. Dato che interpretazione di destinazione viene effettuata localmente da ciascuna unità MPIC locale, i registri di formato di destinazione di tutte le unità locali MPIC in un sistema devono essere predisposti in modo identico.
Si descrivono ora tre modelli di uso esemplificativi utilizzanti interpretazioni differenti, per illustrare ulteriormente il meccanismo di specificazione di destinazione. Questi sono probabilmente i modelli più comuni usati in pratica.
Esempio 1: modello a singolo livello
In questo modello, tutti i 32 bit di informazioni di destinazione sono interpretati come campo decodificato. Ciascuna posizione di bit corrisponde ad una singola unità MPIC locale. Posizione di bit può corrispondere a ID di MPIC fisico, ma non necessariamente. Questo schema consente di specificare gruppi arbitrari di unità MPIC semplicemente ponendo i bit dell'elemento ad uno, ma consente un massimo di 32 processori (o unità MPIC locali) per sistema. In questo schema, un'unità MPIC viene indirizzata se il suo bit è posizionato nell'insieme di destinazione. Trasmissione a tutti si ottiene posizionando ad uno tutti i 32 bit di destinazione. Ciò seleziona tutte le unità MPIC nel sistema.
Esempio 2: modello gerarchico
Questo modello usa campi codificati e decodificati di lunghezze non-zero. Il campo codificato rappresenta un gruppo statico di unità MPIC locali, mentre una posizione di bit nel campo decodificato identifica una singola unità MPIC locale nel gruppo. Insiemi arbitrari di processori in un gruppo possono essere specificati assegnando un nome al gruppo e posizionando i bit nel campo decodificato per gli elementi selezionati nel gruppo. Ciò supporta sistemi con più di 32 processori e concorda con un'architettura di gruppo in stile DASH. Trasmissione a tutti si ottiene posizionando ad uno tutti i 32 bit di destinazione. Ciò garantisce una concordanza su tutti i gruppi e selezionerà tutti gli MPIC in ciascun gruppo.
Esempio 3: modello bimodale
Ciascun valore del campo codificato è l'ID di un singolo MPIC locale. Questo ID potrebbe essere identico all'ID di MPIC fisico di MPIC, ma non necessariamente. Ciascun bit nel campo decodificato rappresente un campo predefinito. Questo schema consente di indirizzare una singola unità MPIC usando il suo ID nel campo codificato (e non selezionando alcun gruppo), o indirizzare un gruppo (o unione di gruppi) di MPIC posizionando il campo codificato a tutti uno e selezionando i gruppi nel campo decodificato. Ciascuna unità MPIC potrebbe essere un elemento di gruppi multipli. Trasmissione di supporto a tutti nel modello bimodale richiede che software definisca un gruppo che contiene tutti gli MPIC locali del sistema. Si ottiene allora trasmissione posizionando ad uno tutti i 32 bit di destinazione. Ciò concorda con tutti i singoli ID ed inoltre concorda nel gruppo che contiene tutte le unità locali.
Ciascun processore ha una priorità di processore che indica 1 'importanza relativa del compito o codice che il processore sta eseguendo attualmente. Questo codice può essere parte di un processo o percorso o può essere un gestore di interruzione. La priorità viene dinamicamente elevata o abbassata al variare dei compiti, eliminando così mediante mascheratura interruzioni di priorità inferiore. Servendo una IRQ, il processore ritorna ad un'attività interrotta in precedenza.
Un processore è priorità più bassa in un dato gruppo di processori se la sua priorità di processore è la più bassa di tutti i processori del gruppo. Dato che uno o più processori possono essere contemporaneamente di priorità più bassa in un dato gruppo, la disponibilità è soggetta al processo di arbitraggio.
Un processore è il fuoco di un'interruzione se sta attualmente servendo quell'interruzione, o se ha attualmente una richiesta in sospeso per quella interurruzione.
Una caratteristica importante della presente invenzione è la garanzia di semantica di emissione esattamente una volta di interruzioni alla destinazione specificata, ciò che implica i seguenti attributi del sistema di interruzione:
1) iniezione di interruzione non viene mai respinta;
2) interruzioni (IRQ) non sono mai perse;
3) nel caso di interruzioni fatte scattare da fronte, la stessa IRQ che si presenta non viene emessa più di una volta, cioè emettendo un'interruzione prima del suo processore di fuoco (se ne ha attualmente uno), presenze multiple della stessa interruzione mentre la prima è in sospeso (servizio non completo) sono registrate tutte come in sospeso nel bit in sospeso corrispondente del registro di richieste di interruzioni (XRR) dell'MPIC locale corrispondente a quella particolare richiesta di interruzione;
4) per interruzioni attivate dà livello, lo stato del piedino di interruzione di MPIC di entrata/uscita viene ricreato nel bit in sospeso di IRR di MPIC locale ogniqualvolta il suo stato differisce dallo stato del piedino di entrata di interruzione di MPIC di entrata/uscita, l'MPIC locale di destinazione iniziando la stessa IRQ solo all'esecuzione di un segnale fine di interruzione (EOI), a meno che il processore non elevi esplicitamente la sua priorità di compito.
La forma di realizzazione preferita supporta due modi per il reinstradamento di queste IRQ in arrivo e per la selezione del processore di destinazione: modo statico fisso e modo dinamico à priorità più bassa. Questi ed altri modi possibili supportati da sistemi operativi sono supportati dalle seguenti informazioni: 1) di ID di MPIC, conosciute da ciascuna unità MPIC;
2) campo indirizzo di destinazione dalla tabella di reinstradamento di ID di MPIC;
3) l'indirizzo di unità MPIC; ciascuna unità MPIC conosce il proprio indirizzo;
4) se un'unità MPIC è attualmente il fuoco per l’interruzione; e 5) priorità di tutti i processori.
Il modo fisso è il metodo più semplice. L’interruzione viene trasmessa incondizionatamente dall'MPIC di entrata/uscita a tutti gli MPIC codificati nel campo indirizzo di destinazione per la particolare IRQ, tipicamente viene indicato un singolo MPIC locale. Informazioni di priorità vengono ignorate. Se il processore di destinazione non è disponibile, l'interruzione è mantenuta in sospeso nell'unità MPIC locale di processore di destinazione finché la priorità di processore non è sufficientemente bassa da far sì che l'MPIC locale fornisca l'interruzione al processore. Reinstradamento dà luogo a:
1) distribuzione statica attraverso il processore; e
2) assegnazione di un MPIC locale specifico ad una data interruzione.
Il reinstradamento fisso consente ai piloti di unità a percorso singolo di funzionare in un ambiente a più processori purché il software vincoli il codice di pilota ad esecuzione su un processore e l'unità MPIC sia programmata per modo di emissione fisso così che l'interruzione di unità è diretta allo stesso processore su cui esegue il pilota.
Il modo di reinstradamento a priorità più bassa fa sì che serva 1'interruzione il processore di priorità più bassa in un gruppo specificato dal campo indirizzo di reinstradamento. Dato che questi MPIC locali di processore a priorità più bassa conoscono ciascuno le loro priorità di processore associato, si effettua un protocollo di arbitraggio sul bus di MPIC per determinare la priorità più bassa.
Se più di un processore sta operando alla priorità più bassa, allora uno di essi può essere preso casualmente. Un algoritmo addizionale di selezione di processore è applicato ai rimanenti processori di priorità più bassa candidati per la seiezione casuale di un processore con lo scopo di ripartire uniformemente il compito di servizio di interruzioni fra i processori di priorità più bassa.
L'unità MPIC di entrata/uscita 102 di fig. 2 è dettagliata ulteriormente in fig. 3. Le linee di entrata di interruzione 107 forniscono ai dispositivi di entrata/uscita i mezzi per iniettare le loro interruzioni. Un filtro di fianco 108 è usato per fornire transizioni di livello pulite ai piedini di entrata. La tabella di reinstradamento 104 ha un elemento da 64 bit dedicato per ciascun piedino (linea) di entrata di interruzione 107. A differenza dei piedini IRQ noti del PIC 82C59A/82380 discusso in precedenza, la nozione di priorità di interruzione è completamente non correlata alla posizione del piedino fisico di entrata di interruzione sull'unità MPIC di entrata/uscita della presente invenzione. La priorità di ciascun piedino di entrata 107 è programmabile da software assegnando un vettore da 8 bit nell'elemento corrispondente della Tabella di reinstradamento 104.
La fig. 4 mostra il formato di ciascun elemento da 64 bit di Tabella di reinstradamento. La descrizione di ciascun elemento è come segue:
Vettore (0:7) (Vector) Un campo a 8 bit contenente il vettore di interruzione.
Modo emissione (8:10) (Delivery Mode) Un campo a 8 bit che specifica come devono agire gli MPIC locali elencati nel campo di destinazione alla ricezione di questo segnale, ha il seguente significato:
000- Fisso (fixed) - emette a tutti i processori elencati in destinazione.
001- Priorità più bassa (Lowest Priority) emette a processore di priorità più bassa fra tutti i processori elencati in destinazione.
011- Legai remoto (Remote Read)- richiede contenuto di un registro di unità MPIC il cui indirizzo è nel campo di vettore, per essere immagazzinato nel Remote Register (registro remoto) per accesso da parte del processore locale, modo fatto scattare da fronte.
100- NMI - emette al piedino di interruzione non mascherabile (NMI) di tutti i processori elencati, ignorando informazioni di vettore, trattate come segnale sensibile a fronte.
101- Rimetti a stato iniziale (Reset) - emette a tutti i processori elencati asserendo/disasserendo il piedino di rimessa a stato iniziale del processore, posizionando su locale tutti gli indirizzati. 110- Metti a punto (Debug) - emette a tutti i processori elencati asserendo/disasserendo la spina di messa a punto di MPIC locale; trattato come segnale sensibile a livello.
111- Ext INT - emette al piedino INT di tutti i processori elencati com un'interruzione avente origine in un controllore di interruzioni compatibile 8259A connesso esternamente, trattato come segnale sensibile a livello.
(Notare che i modi di emissione di Rimetti a stato iniziale, Metti a punto ed ExtINT non sono correlati a interruzione di unità di entrata/uscita. Reset e Debug sono interruzioni interprocessori mentre il modo ExtINT è introdotto per fornire compatibilità col PIC 8259A esistente, di fatto standard).
Modo destinazione(11) (Destination Mode) Interpreta campo destinazione:
0 - Modo fisico (Physical Mode) - usa ID di MPIC in bit 56:63.
1 - Modo logico (Logicai Mode) - campo da 32 bit è la destinazione logica, sistema operativo definito.
Stato emissione (12) (Delivery Status) Un campo a sola lettura da software da 2 bit contenente stato di emissione di corrente dell'interruzione: 0 - Inattivo (Idle) - nessuna attività di corrente,
1 - Invio in sospeso (Send Pending) - interruzione iniettata in MPIC locale, ritardata da altre interruzioni iniettate, Questo bit è a sola lettura da software, cioè scritture di software da 32 bit alla tabella di reinstradamento 109 non influenzano questo bit.
IRR remoto(14) (Remote IRR) Rispecchia il bit di registro di richieste di interruzioni dell'MPIC locale di destinazione solo per interruzioni sensibili a livello e, quando lo stato di bit non concorda con lo stato della corrispondente linea di entrata di interruzione 107, viene inviato un messaggio MPIC di entrata/uscita per far si che il bit IRR di destinazione rifletta il nuovo stato, facendo si che il bit IRR (MPIC locale) remoto segua. Questo bit è a sola lettura da software.
Modo scatto(15) (Trigger Mode) Indica il formato di segnale di interruzione:
0 - sensibile a fronte
1 - sensibile a livello
Maschera(16) (Mask) Indica stato di mascheratura:
0 - interruzione non mascherata (NMI) 1 - interruzione mascherata che pud essere bloccata da compiti di priorità più elevata.
Destinazione(32 :63) (Destinazione) Campo da 32 bit che rappresenta destinazione di interruzione definita dal sistema operativo. La parte inferiore di fig. 4 rappresenta i due possibili formati discussi precedentemente: un formato fisico (decodificato) da 32 bit utilizzante un bit per processore di destinazione ed un formato logico da 8/24 bit con 8 bit codificati e 24 bit decodificati che definiscono uno spazio di destinazione bidimensionale 256x24.
La tabella di reinstradamento di larghezza 64 bit 109 è accessibile a lettura/scrittura tramite il DATA/ADDR 106, con indirizzo da 32 bit e 32 righe di dati, di un processore principale, eccetto quanto osservato sopra per i bit "Delivery Status" e "Remote IRR" che sono a scrittura da hardware e sola lettura da software.
Gli elementi della tabella di reinstradamento vengono formattati e trasmessi a tutte le unità MPIC locali 104 da unità trasmittente/ricevente bus MPIC 110. Il protocollo di bus MPIC 107 specifica un bus sincrono a fili, 4 fili per dati ed un filo per il suo orologio. Dettagli specifici di formati di messaggi saranno forniti nella sezione su protocollo di bus MPIC. Accettazione dà luogo a rimessa del "Delivery Status" a "Idle".
L'unità MPIC locale 104 è responsabile di accettazione di interruzione, fornitura di interruzioni al processore ed invio di interruzioni inter-processori.
A seconda del modo di emissione di interruzioni specificato nell'elemento di tabella di reinstradamento di interruzioni, zero, una o più unità MPIC possono accettare un'interruzione. Un MPIC locale accetta un'interruzione solo se può emettere l'interruzione al suo processore associato. L'accettazione di un'interruzione è puramente una questione di MPIC di entrata/uscita 102 ed MPIC locale 104, mentre fornire un'interruzione ad un processore comporta solo un MPIC locale 104 ed il suo processore locale 105.
La tabella di reinstradamento 109 dell'unità MPIC di entrata/uscita 102 serve ad indirizzare interruzioni che hanno origine nel sottosistema 101 e possono dovere essere dirette ad un processore trasmettendo l'elemento di tabella di reinstradamento corrispondente ad una data interruzione tramite il bus MPIC 103.
La fig. 5 specifica gli elementi strutturali dell'unità MPIC locale 104. La tabella di vettore locale (Locai Vector Table) 210 è simile in funzionamento alla tabella di reinstradamento 109 di MPIC di entrata/uscita eccetto che è limitata ad interruzioni relative solo al processore locale associato. La tabella di vettore locale 210 contiene sei elementi da 32 bit. Gli elementi da 201 a 202 corrispondono a temporizzatori da 0 a 2; gli elementi 203 e 204 corrispondono a piedini di entrata di interruzione; e l’elemento 205 controlla generazione di interruzioni per errori di parità di dati. I bit di ordine più elevato negli elementi di temporizzatori da 200 a 202 contengono campi specifici di temporizzatore non presenti negli altri elementi (come specificato nella discussione successiva su temporizzatori).
Benché le figg. 2 e 5 mostrino unità MPIC locale 104 come un'entità separata, essa può essere incorporata, in tutto o in parte nel processore o chip di processore 105 associato. Ciò può effettuarsi per migliorare l'efficienza di comunicazioni fra l'unità MPIC locale 104 ed il processore associato 105. Ad esempio, l'incorporazione della tabella di vettore di interruzione locale dell'unità MPIC locale comprendente unità 203 e 204 potrebbe fornire un percorso più diretto a memoria nascosta e rendere così più veloce lo svuotamento di una memoria tampone di consultazione di traduzione di memoria nascosta.
La fig. 6 definisce i vari campi associati ad elementi di tabella di vettore locale da 200 a 205.
Vettore(0 :7) (Vettore) Un campo da 8 bit contenente il vettore di interruzione.
Modo emissione
(DELV)(8:10) (Delivery Mode) Un campo da 3 bit avente lo stesso significato che nella tabella di reinstradamento 109 eccetto che priorità più bassa (001) è sinonimo di fisso (000). IRR Remoto (R)(14) (Remote IRR) Questo bit rispecchia il bit IRR di interruzione di questa unità MPIC locale. Esso viene usato solo per interruzioni locali fatte scattare da livello, è indefinito per interruzioni fatte scattare da fronte ed è a sola lettura da software. Modo scatto(TM)(15) (Trigger Mode) 0 indica scatto sensibile a fronte. 1 indica interruzione sensibile a livello. Piedini di interruzione locale (203, 204) possono essere programmati come altri fatti scattare da fronte o livello, mentre Temporizzatore (200:202) e Parità(205) sono sempre sensibili a fronte. Maschera (MS)(16) (Maschera) 0 abilita interruzione, 1 maschera interruzione.
Modo (M)(17) (Modo) Seleziona modo di temporizzatore; 0 è passo a passo, 1 è periodico.
Base(18 :19) Seleziona una di tre basi dei tempi per contatore .
(Parametri Modo Base saranno discussi ulteriormente nella sezione su architettura di temporizzatore).
Un processore genera interruzioni inter-processori scrivendo nel registro di comandi interruzione 220 da 64 bit, organizzato in modo sìmile a quello della tabella di reinstradamento di MPIC di entrata/uscita 109. Il formato programmabile, molto simile ad un elemento nella tabella di reìnstradamento 109, è mostrato in fig.
7, e consente ad ogni processore di generare un'interruzione consentendo così ad un processore di inoltrare ad altri processori un'interruzione accettata originalmente da esso. Questa caratteristica è anche utile per messa a punto. Il registro di comando di interruzione 220 è a lettura e scrittura da software.
Vettore(0:7) (Vector) Identifica interruzione che viene inviata.
Modo Emissione(8:10) (Delivery Mode) Stessa interpretazione che per tabella di reìnstradamento 109.
Modo Destinazione(11) (Destination Mode) Stessa interpretazione che per tabella di reìnstradamento 109. Stato Emissione(12) (Delivery Status) Stessa interpretazione che per tabella di reìnstradamento 109. Il processore locale posiziona stato, MPIC locale aggiorna. Il software può leggere questo campo per trovare se 1'interruzione è stata inviata e, se sì, il registro di comando di interruzione 220 è pronto per accettare una nuova interruzione. Seil registro 220 viene sovrascritto prima che lo stato di emissione sia inattivo (0), allora lo stato di detta interruzione è indefinito (può essere stato accettato o no).
Disasserire livello(14) (De-assert Level) Un bit usato congiuntamente a Modo scatto (15) per simulare asserzione/disasserzione di interruzioni sensibili a livello (0 disasserisci, 1 asserisci). Ad esempio, con Modo emissione a Rimessa a stato iniziale. Modo scatto a Livello e Disasserisci livello ad 1, si ha disasserimento di Rimessa a stato iniziale al processore del (o degli) MPIC indirizzato(i). Questa condizione farà inoltre sì che tutti gli MPIC rimettano a stato iniziale il loro Arbitraggio-ID (usato per diversificazione in arbitraggio a priorità piu bassa) all'ID di MPIC.
Modo Scatto(15) (Trigger Mode) Come per tabella di reinstradamento 109
Stato Lettura Remota
(16:17) (Remote Read Status) Indica stato di dati contenuti nel registro di lettura remota
224:
00 - Non valido (Invalidi - contenuto di registro lettura remota 224 non valido, unità MPIC remota inabile ad emettere. 01 - In corso (In Progress) - lettura remota in corso, in attesa di dati.
10 - Valido (Valid) - lettura remota completa, dati validi.
Abbreviazione Destinazione
(18:19) (Destination Shorthand) Un campo a 3 bit usato per specificare una destinazione senza necessità di fornire il campo di destinazione da 32 bit. Ciò riduce i tempi assorbiti dal software non richiedendo una seconda operazione di scrittura di 32 bit corrispondente a campo di bit 32:63 per i seguenti casi comuni:
a) autointerruzione software,
b) interruzione ad una singola destinazione fissa,
c) interruzione a tutti i processori che possono essere denominati nel campo destinazione (32:63), compreso il processore emittente.
Il codice a 2 bit è interpretato come segue:
00 - Nessuna abbreviazione (No shorthand), usa campo destinazione (32:63).
01 - Auto (Self), MPIC locale attuale è la sola destinazione (usato per interruzioni software).
10 - Tutto compreso auto (All including self).
11 - Tutto escluso auto (All excluding self), usato durante rimessa a stato iniziale e messa a punto.
Destinazione(32:63) (Destination) Sistema operativo definito, lo stesso che per tabella di reinstradamento 109. Usato solo quando Abbreviazione destinazione è posto a campo destinazione
(000) .
L’unità MPIC di entrata/uscita 102 e tutte le unità MPIC locali 104 ricevono messaggi tramite il bus MPIC 103. Le unità MPIC dapprima verificano se appartiene alla destinazione nel messaggio. Ad esempio, nel caso del sopra citato formato di destinazione da 32 bit, ciascuna unità MPIC con un valore ID nel registro ID di MPIC 22 minore di 32 usa il suo ID di MPIC per posizionare nell'insieme di destinazione da 32 bit. Se trova il suo bit posizionato, allora l'unità MPIC è indirizzata da questo messaggio. Nel caso del formato 8x24, ciascuna unità MPIC verifica se il suo ID di MPIC è uguale all'ID di MPIC nel campo di destinazione a 32 bit, o se è un elemento della lista di gruppo, come mostrato in fig. 7, sottoponendo ad operazione AND per bit il suo registro di lista di gruppo da 24 bit (32:55) con la lista di gruppo nel messaggio e sottoponendo ad operazione OR tutti i bit risultanti assieme. Se l'ID di MPIC nel messaggio ha un valore di 255, allora l'unità MPIC è indirizzata pure dal messaggio.
Il bus MPIC trasmette/riceve e l'unità di arbitraggio 216, fig. 5, dirige le informazioni di destinazione e modo sull'uscita 267 all'unità logica di accettazione 248 che effettua le operazioni logiche congiuntamente al contenuto del registro ID di MPIC 222. Se il messaggio viene accettato, le informazioni di vettore disponibili sull'uscita 266 dell'unità 226 sono decodificate e, insieme alle informazioni di modo, sono fatte passare avanti tramite l'insieme di vettori da 3x256 bit 230 dall'unità di decodifica di vettore 228. Il vettore di interruzione da 8 bit, quando decodificato da decodifica vettore 228, determina quale posizione di bit fra le 256 possibili è posizionata indicando la priorità di interruzione. Quando viene servita un'interruzione, tutte le interruzioni di priorità uguale o inferiore sono mascherate automaticamente dall'unità di classificazione per ordine di priorità 240.
L'insieme di vettori da 3x256 bit 230 consiste di vettori da 256 bit usati per immagazzinare informazioni relative ad interruzioni. I registri sono tutti a sola lettura da software e lettura/scrittura da hardware. I registri sono definiti come segue: ISR- <In Service Register) Registro in funzione 231, mostra interruzioni che sono attualmente in funzione per cui non è stata inviata dal processore alcuna fine di interruzione (EOI).
IRR- (Interrupt Request Register) Registro di richiesta di interruzione 232, contiene interruzioni accettate dall'unità MPIC locale ma non fornite al processore.
TMR- (Trigger Mode Register) Registro di modo di scatto 234, indica se l'interruzione è un tipo sensibile a livello o fronte come trasmesso dal bit di modo di scatto di unità MPIC di entrata/uscita emittenti nell'elemento di tabella di reinstradamento .
Se un'interruzione entra in funzione ed il bit TMR è 0, indicando tipo fronte, allora il bit IRR corrispondente viene cancellato e viene posizionato il bit ISR corrispondente. Se il bit TMR è 1, indicando tipo livello, allora il bit IRR non viene cancellato quanto l'interruzione entra in funzione (bit ISR posizionato). Invece, il bit IRR rispecchia lo stato del piedino di entrata di interruzione. Come discusso precedentemente, quando è disasserita l'interruzione fatta scattare da livello, l'MPIC di entrata/uscita di partenza rileva la discrepanza ed invia un messaggio all'unità MPIC locale di destinazione per cancellare il suo bit IRR.
La fig. 8 mostra, a titolo di esempio, come l'IRR remoto ed il bit IRR nell'unità MPIC locale di destinazione seguono lo stato dell'entrata di interruzione (INTIN). E' anche illustrato come un EOI è seguito immediatamente dalla riasserzione dell1interruzione purché l'INTIN sia ancora asserito da qualche unità. In questo esempio si suppone che due unità, A e B condividano un'entrata di interruzione fatta scattare da livello all'MPIC di entrata/uscita. L'unità A eleva un'interruzione fatta scattare da livello come indicato sulla linea (a), seguita da un'interruzione di unità B come mostrato sulla linea (b). Il segnale INTIN risultante è la combinazione sottoposta ad operazione OR di linee (a) e (b), come mostrato su linea (c). L'unità ricevente/trasmittente di bus MPIC 110 della fig. 3 effettua operazione di OR esclusivo (XOR) su INTIN col bit IRR remoto, bit 14 della tabella di reinstradamento 104, mostrato su linea (e) ottenendo "asserisci livello" (level assert) "disasserisci livello" (level deassert) mostrato sulla linea (d). Il bit IRR di MPIC locale segue lo stato di linea (e) come mostrato su linea (f). La linea (g) dimostra come un EOI è seguito immediatamente da riasserzione dell'interruzione purché il segnale INTIN sia ancora asserito da una delle unità.
La fig. 9 è un diagramma di flusso che rappresenta il processo di accettazione di interruzione di un'unità MPIC locale. Alla ricezione di un messaggio, un'unità MPIC locale è il fuoco attuale, cioè il bit IRR o ISR relativo è in sospeso, accetta l 'interruzione indipendente da priorità e segnala agli altri MPIC locali di sospendere l'arbitraggio di priorità. Ciò evita emissione multipla a processori differenti della stessa presenza di interruzione, coerente con semantica di emissione di interruzioni secondo la tecnica nota in sistemi ad un processore. Se un'unità MPIC locale non è attualmente il fuoco, essa riceve accettazione da un altro MPIC locale. Se è disponibile più di MPIC, si richiama arbitraggio, come descritto nella sezione dedicata a protocollo di bus MPIC, per determinare l'unità vincente (di priorità più bassa).
Se un messaggio viene inviato come NMI, messa a punto o rimessa a stato iniziale, allora tutte le unità elencate nella destinazione asseriscono/disasseriscono incondizionatamente i loro piedino di uscita NMI di processore 263, piedino di messa a punto 264 o piedino di rimessa a stato iniziale 265 di fig. 5. ISR 231 ed IRR 232 sono aggirati ed informazioni di vettore sono indefinite.
Il registro di priorità di compiti (TPR) 242 di fig. 5 immagazzina la priorità attuale del suo compito di processore che è soggetta dinamicamente a variazione a causa di azioni esplicite di software, come quando sono commutati compiti ed entrando o ritornando da un gestore di interruzione. TPR 242 è un registro a 32 bit che supporta fino a 256 livelli di priorità mediante un campo a 8 bit (0:7). I quattro bit più significativi (4:7) corrispondono alle 16 priorità di interruzione, mentre i quattro bit meno significativi (0:3) forniscono risoluzione addizionale. Ad esempio, un valore TPR con zero nei cinque bit più significativi e non zero nei tre bit meno significativi può essere usato per descrivere una classe di pianificazione di compiti fra 0 (inattivo) ed 1 per assegnare un'interruzione. Ciò è particolarmente utile quando diversi processori stanno operando allo stesso livello più basso di priorità.
Una priorità di processore viene ricavata da TPR 242, ISR 231 ed IRR 232. E' il massimo della sua priorità di compito e la priorità del bit ISR di ordine più elevato e la priorità del bit IRR più elevato, tutte valutate usando i quattro bit più significativi della loro rappresentazione codificata a 8 bit. Il valore, usato nella determinazione di disponibilità di un MPIC locale ad accettare un'interruzione e nella determinazione dell'unità MPIC locale di priorità più bassa, viene calcolato al volo come richiesto.
Una volta che un MPIC locale accetta un'interruzione, garantisce l'emissione dell'interruzione al suo processore locale. La fornitura di interruzioni mascherabili è controllata dal protocollo INT/INTA che incomincia con l'unità MPIC locale che asserisce il piedino INT 262 che è connesso al piedino INT di processore. Se il processore ha interruzioni abilitate, risponderà emettendo un ciclo INTA su linea 261 facendo sì che l'MPIC locale fissi il suo stato interno di priorità e liberi il vettore a 8 bit dell 'interruzione di priorità più elevata sul bus dati di processore 106. Il processore legge il vettore e lo usa per trovare il punto di ingresso del gestore di interruzione. L'MPIC locale posiziona anche il bit ISR di interruzione. Il bit IRR corrispondente viene cancellato solo se TMR 234 indica un'interruzione fatta scattare da fronte come discusso in precedenza.
Se un'interruzione fatta scattare da livello viene disasserita subito prima del suo ciclo INTA, tutti i bit IRR possono essere cancellati ed il classificatore per ordine di priorità 240 può non trovare un vettore da emettere al processore su bus di dati 106. Il classificatore per ordine di priorità 240 fornirà invece un vettore di interruzione spuria (SIV). La fornitura dello (Siv) non influenza ISR231, così che il gestore di interruzione dovrebbe ritornare senza emettere un EOI. Lo SIV è programmabile tramite il registro SIV nel classificatore per ordine di priorità 240.
E' possibile che esistano nel sistema unità MPIC che non hanno un processore a cui fornire interruzioni. Il solo pericolo che ciò rappresenta nel sistema è che, se un'interruzione viene trasmessa a tutti i processori utilizzanti modo di emissione a priorità più bassa quando tutti i processori sono della priorità più bassa, vi è una possibilità che un'unità MPIC locale senza il processore accetti l'interruzione se accade che questa unità MPIC abbia a quel tempo il più basso ID di arbitraggio (Arb ID). Per impedire che ciò accada, tutte le unità locali si inizializzano nello stato disabilitato e devono essere esplicitamente abilitate prima che possano incominciare ad accettare messaggi MPIC dal bus MPIC. Un'unità MPIC locale disabilitata risponde solo a messaggi con modo di emissione posizionato su "Rimettere a stato iniziale".
Messaggi di rimettere a stato iniziale/disasserire devono essere inviati in modo di destinazione fisica usando l'ID di MPIC di bersaglio in quanto le informazioni di destinazione logica negli MPIC locali sono indefinite (tutti zeri) quando l'MPIC locale esce da Rimettere a stato iniziale.
Prima di ritornare da un gestore di interruzione, il software deve emettere un comando fine di interruzione (EOI) al suo MPIC locale cancellando il bit di priorità più elevata in ISR 231, mediante scrittura in registro EOI 246, indicando che l'interruzione non è più in funzione e facendolo ritornare alla precedente attività di priorità più elevata.
Il sistema MPIC è inizializzato nel modo seguente:
a) Ciascuna unità MPIC ha un piedino di entrata di rimessa a stato iniziale connesso ad una linea comune di rimessa a stato iniziale ed attivato dal segnale di rimessa a stato iniziale di sistema. b) Gli 8 bit meno significativi del bus di dati 106 sono trattenuti nel registro MPIC-ID 222.
c) Ciascun MPIC locale asserisce il suo piedino di rimessa a stato iniziale (RST) di processore 265 e rimette a stato iniziale tutti i registri MPIC interni al loro stato iniziale, cioè tabella di reinstradamento 109 e tabella di vettore locale 210 disposte in modo da mascherare accettazione di interruzione, ponendo altrimenti stato di registro a zero.
d) Ciascun MPIC locale disasserisce il piedino di rimessa a stato iniziale del suo processore per effettuare autoverifica ed eseguire codice di inizializzazione;
e) Il primo processore che arriva su bus MPIC 103 forzerà altri processori in rimessa a stato iniziale inviando loro l'interruzione interprocessori con
Modo emissione = Rimessa a stato iniziale Modo a scatto = Livello
Disasserire livello = 0
Abbreviazione destinazione = Tutti escluso auto, tutti gli altri processori essendo tenuti in rimessa a stato iniziale finché il sistema operativo di processore consente loro di diventare attivi.
f ) Il solo processore in funzione effettua la maggior parte del-1 'inizializzazione e configurazione del sistema, innescando infine un sistema operativo che emette un segnale di disasserire/rimettere a stato iniziale per attivare gli altri processori.
Il bus MPIC 103 è un bus sincrono a 5 fili che connette le unità MPIC di entrata/uscita ed MPIC locale. Quattro di questi fili sono per trasmissione di dati ed arbitraggio mentre uno e una linea di orologio.
Elettricamente, il bus è connesso con OR cablato, ciò che dà luogo sia ad arbitraggio di uso di bus, sia ad arbitraggio di priorità più bassa. Data la connessione con OR cablato, il bus è fatto funzionare ad una velocità abbastanza bassa perché non sia richiesta messa a punto di terminazione. Inoltre, la velocità di bus deve consentire tempo sufficiente in un singolo ciclo di bus per trattenere il bus ed effettuare alcune semplici operazioni logiche sulle informazioni trattenute per determinare se deve essere inibito il ciclo di pilotaggio successivo. Con una velocità di bus di 10 MHz, un'interruzione che non richiede arbitraggio sarebbe emessa in circa 2,3 μs e, con arbitraggio di priorità, in circa 3,4 μs.
Le unità MPIC 102 e 104 hanno piedini di entrata ed uscita di bus MPIC separati che possono essere connessi direttamente in una configurazione non isolata come mostrato in fig. 11. Si possono usare memorie tampone di entrata 301 e di uscita 302 a tre stati per fornire una connessione gerarchica a bus MPIC che si richiede supportino un gran numero di processori, come mostrato in fig. 12.
L'arbitraggio per uso del bus MPIC 103 e per determinare l'unità MPIC a priorità più bassa dipende dalle unità di messaggi MPIC operanti in modo sincrono. Arbitraggio distribuito di bus viene usato nel caso in cui agenti multipli incomincino a trasmettere simultaneamente. L'arbitraggio di bus usa un piccolo numero di cicli di arbitraggio sul bus MPIC. Durante questi cicli, i "perdenti" dell'arbitraggio escono dal bus finché rimane a trasmettere solo un "vincitore". Una volta iniziato l'invio di un messaggio (fra cui arbitraggio di bus), un contendente possibile deve sopprimere trasmissione finché sono trascorsi cicli sufficienti alla completa trasmissione del messaggio. Il numero di cicli di bus usati dipende dal tipo di messaggio che viene inviato.
Un ciclo di arbitraggio di bus inizia con l'agente che pilota il suo MPIC-ID sul bus MPIC, con i bit di ordine più elevato per primi. Più specificamente, 1'MPIC-ID da 8 bit (10:17) viene suddiviso in gruppi successivi di 2 bit (17:16) (15:14) (13:12) (11:10). Queste tuple I(im):I(i) vengono quindi decodificate sequenzialmente producendo una configurazione di quattro bit (B0:B3) come mostrato in fig. 13. I bit (B0:B3) sono impressi sulle quattro linee di bus MPIC, uno per linea. Data la connessione con OR cablato al bus MPIC, ciascuna tupla dell'ID asserisce solo ad un singolo filo, rendendo possibile ad un agente di determinare con certezza se uscire ("perdere") o continuare l'arbitraggio del ciclo successivo per i due bit seguenti dell'MPIC-ID, semplicemente verificando se l'agente di linea di bus che sta pilotando il bus è anche l'I di ordine più elevato sul bus. In questo modo ciascun ciclo di bus MPIC arbitra due bit.
L'arbitraggio viene anche usato per trovare l'unità MPIC locale con la priorità di processore più bassa. L'arbitraggio di priorità più bassa usa il valore del registro di priorità di processore di MPIC aggiunto ad un ID di arbitraggio (Arb ID) a 8 bit per diversificazioni in caso vi siano MPIC multiple che eseguono alla priorità più bassa.
L’uso dell'ID di MPIC a 8 bit come Arb ID ha tendenza a simmetria disallineata in quanto favorirebbe MPIC con bassi valori di ID. Un Arb ID di MPIC non è perciò lo stesso ID di MPIC, ma è ricavato da esso. Alla rimessa a stato iniziale, un Arb ID di MPIC è uguale al suo ID di MPIC. Ogni volta che viene trasmesso un messaggio sul bus MPIC, tutti gli MPIC incrementano di uno il loro Arb ID, ciò che dà ad essi un valore differente di Arb ID per l'arbitraggio successivo. L'Arb ID viene allora invertito dalla fine (LSB diventa MSB, ecc.) per assicurare più selezione casuale di quale MPIC arriva ad avere l'Arb ID più basso la volta successiva. L'Arb ID invertito viene allora decodificato per generare segnali di arbitraggio sul bus MPIC come descritto sopra.
Dopo arbitraggio di bus il vincitore piloterà il suo messaggio effettivo sul bus, 4 bit per ciclo di orologio in modo seriale a mezzo byte. I messaggi MPIC vengono in due lunghezze: corta a 21 cicli e lunga a 30 cicli. L'interpretazione dei primi 19 cicli è la stessa per tutte le lunghezze di messaggi. Il tipo di messaggio lungo aggiunge cicli per arbitraggio di priorità ai primi 19 cicli. Il tipo di messaggio medio si ha solo se non è richiesto un arbitraggio completo, come nel caso in cui il vincitore è conosciuto prima dell'arbitraggio.
Il formato di messaggio corto è mostrato in fig. 14, ove la prima colonna rappresenta l'indice di ciclo di messaggio (1:19) mentre le quattro colonne successive rappresentano le 4 linee di dati del bus MPIC.
Le prime quattro righe (1:4) rappresentano i cicli di arbitraggio di bus MPIC in cui ogni riga ha quattro elementi rappresentanti la tupla decodificata dell'ID di MPIC come discusso precedentemente, cioè Ì76...Ì76 rappresenta tupla (7:6), Ì54...154 tupla (5:4), ecc.
Il ciclo 5 è il modo di emissione esteso del messaggio ed è interpretato seconda la fig. 15. Il bit indicato con DM è il bit modo di destinazione che è 0 per modo fisico ed 1 per modo logico.
1 bit MO, MI, M2 sono assegnati preventivamente nella tabella di reinstradamento di fig. 4.
Il ciclo 6 contiene i bit di controllo come definito in fig.
16. Il modo di emissione esteso ed i bit di controllo, cicli 5 e 6, determinano assieme la lunghezza di messaggio richiesta e l'interpretazione dei campi rimanenti del messaggio come mostrato in fig. 17.
I cicli 7 ed 8 costituiscono il vettore di interruzione ad 8 bit .
I cicli da 9 a 16 sono il campo di destinazione a 32 bit. II ciclo 17 è un totale di controllo sui dati in cicli da 5 a 16. Il totale di controllo protegge i dati in questi cicli da errori di trasmissione. L'unità MPIC trasmittente fornisce questo totale di controllo.
Il ciclo 18 è un ciclo di postambolo pilotato come 1111 dagli MPIC emittenti per effettuare vari calcoli interni basati sulle informazioni contenute nel messaggio ricevuto. Uno dei calcoli prende il totale di controllo calcolato di dati ricevuti nei cicli da 5 a 16 e lo compara al valore nel ciclo 17. Se un'unità MPIC calcola un totale di controllo differente da quello passato nel ciclo 17, allora quell'MPIC segnalerà un errore sul bus MPIC nel ciclo 19 pilotandolo come 1111. Se ciò accade, tutte le unità MPIC supporranno che il messaggio non sia mai stato inviato e l'emettitore deve cercare di inviare il messaggio di nuovo, ciò che comprende riarbitraggio per il bus MPIC. In emissione a priorità più bassa, quando l'interruzione ha un processore a fuoco, il processore a fuoco segnalerà ciò pilotando 1110 durante il ciclo 19. Ciò dice a tutte le altre unità MPIC che l'interruzione è stata accettata, l'arbitraggio è eliminato e si usa formato di messaggio breve. Tutte le unità MPIC (non fuoco) piloteranno 1000 in ciclo 19. In modo di emissione a priorità più bassa, 1000 implica che l'interruzione non abbia attualmente processore a fuoco e che sia richiesto arbitraggio di priorità per completare l'emissione. In tal caso, si usa formato di messaggio lungo. Se il ciclo 19 è 1000 per modo di priorità non più basso, allora il messaggio è stato accettato e si considera inviato.
Quando un'unità MPIC rileva e riferisce un errore durante il ciclo di errore, quali'unità MPIC semplicemente sta in ricezione del bus finché incontra due cicli (0000) inattivi consecutivi. Questi due cicli inattivi indicano che il messaggio è passato ed un nuovo messaggio può essere incominciato da chiunque. Ciò consente ad un MPIC che va esso stesso fuori di ciclo sul bus MPIC di ritornare in sincronizzazione con le altre unità MPIC.
I cicli da 1 a 19 del formato di messaggio lungo sono identici ai cicli da 1 a 19 del formato di messaggio breve.
Come accennato, il formato di messaggio lungo è usato in due casi:
(1) Emissione a priorità più bassa quando l'interruzione non ha un fuoco. I cicli da 20 a 27 sono otto cicli di arbitraggio in cui le unità MPIC di destinazione determinano l'unità MPIC con valore priorità di procesore/Arb ID più basso.
(2) Messaggi leggere a distanza. I cicli da 20 a 27 sono il contenuto a 32 bit del registro letto a distanza. Queste informazioni sono pilotate sul bus dall'unità MPIC remota.
Il ciclo 28 è un ciclo di accettazione. In emissione a priorità più bassa, tutte le unità MPIC che non vincono l'arbitraggio (fra cui quelle che non partecipano all'arbitraggio) pilotano il ciclo 28 con 1100 (nessuna accettazione), mentre l'unità MPIC vincente pilota 1111. Se il ciclo 28 legge 1111, allora tutte le unità MPIC sanno che 1'interruzione è stata accettata ed il messaggio si considera emesso. Se il ciclo 28 legge 1100 (o nient'altro che 1111 a tale riguardo), allora tutte le unità MPIC presumono che il messaggio fosse inaccettato e che si verificasse un errore durante l'arbitraggio. Il messaggio si considera non emesso, e l'unità MPIC emittente cercherà di emettere il messaggio nuovamente.
Per messaggi di leggere a distanza, il ciclo 28 è pilotato come 1100 da tutti gli MPIC eccetto quello corrispondente all'unità MPIC remoto, che pilota il bus con 1111, se era in grado di fornire felicemente i dati richiesti nei cicli da 20 a 27. Se il ciclo 28 legge 1111, i dati nei cicli da 20 a 27 sono considerati validi; altrimenti i dati sono considerati non validi. L'unità MPIC sorgente che ha emesso il leggere a distanza 28 per determinare lo stato del campo di stato leggere a distanza nel registro di comandi di interruzione (valido o non valido). In ogni caso, una richiesta di leggere a distanza ha sempre successo (benché i dati possano essere validi o non validi) in quanto un leggere a distanza non viene mai ripetuto. Il motivo per questo è che leggere a distanza è una funzione di messa a punto ed un MPIC remoto "sospeso" che non è in grado di rispondere non deve far sospendere la procedura di messa a punto.
I cicli 29 e 30 sono due cicli inattivi. Il bus MPIC è disponibile per inviare il messaggio successivo in ciclo 31. I due cicli inattivi alla fine di messaggi sia lunghi che corti, insieme a codifiche non zero (cioè non inattive) per alcuni altri cicli di bus consentono ad un agente di bus MPIC che si trovi ad essere fuori fase di un ciclo di ritornare in sincronismo in un messaggio semplicemente attendendo due cicli inattivi consecutivi dopo aver segnalato il suo errore di totale di controllo. Ciò fa uso del fatto che cicli di arbitraggio validi non sono mai 0000.
La tabella di vettore locale 210 dell'unità MPIC locale 104 contiene tre temporizzatori programmabili della lunghezza di 32 bit azionati indipendentemente 200, 201 e 202. Ciascun temporizzatore può selezionare la propria base d'orologio da una fra tre entrate di orologio. Ciascun temporizzatore può operare o in modo passo a passo o in modo periodico e ciascuno può essere configurato per interrompere il processore locale con un vettore programmabile arbitrario.
L'unità MPIC locale 104 ha due piedini di entrata d’orologio indipendenti: il piedino CLOCK fornisce l'orologio interno di MPIC, TMBASE fornisce un orologio esterno. La frequenza di TMBASE è fissata dall'architettura MPIC a 28636 MHz. Inoltre, lo MPIC locale contiene un divisore che può essere configurato per dividere segnale d'orologio per 2, 4, 8 o 16, come mostrato in fig.
19. Base 0 è sempre uguale a CLOCK; Base 1 è sempre uguale a TMBASE e Base 2 può essere uguale a CLOCK o a TMBASE diviso per 2, 4, 8 o 16. Il registro di configurazione di divisione (Base 2) è mostrato in fig. 20.
Il software avvia un temporizzatore programmando il suo registro di conteggio iniziale a 32 bit. Il temporizzatore copia tale valore nel registro di conteggio attuale ed inizia conteggio alla rovescia alla velocità di un conteggio per ciascun impulso di base di tempo (Base 0, 1 o 2}. Ciascun temporizzatore può operare in modo passo a passo o periodico. Se passo a passo, il temporizzatore conta alla rovescia una volta rimane a zero finché non è riprogrammato. In modo periodico, il temporizzatore ricarica automaticamente il contenuto del registro di conteggio iniziale nel registro di conteggio attuale.
I tre temporizzatori sono configurati mediante gli elementi della loro tabella di vettore locale come mostrato in fig. 21. Il campo di vettore (0:7) è come descritto precedentemente. Maschera i, bit(16) serve a mascherare (1) o non mascherare (0) la i-esima interruzione generata da temporizzatore quando il conteggio raggiunge 0. Il campo Base i (18:19) è l'entrata di base usata dallo i-esimo temporizzatore: 00-Base 0, 01-Base 1 e 10-Base 2. Il bit di modo i (17) indica il modo del temporizzatore i-esimo: 0-passo a passo, 1-periodico.
Ciascuna unità MPIC locale fornisce immagazzinamento privato di processore 250, come mostrato in fig. 5, con quattro registri da 32 bit accessibili solo dal processore locale. Dato che ciascun processore indirizza i suoi registri allo stesso modo (tramite lo stesso indirizzo), i registri forniscono un modo conveniente ed indipendente da architettura di processore per fornire dati "propri di processore". Il contenuto di questi registri non è interpretato in alcun modo dall'MPIC. Questi registri sono situati nella stessa pagina di indirizzo fisico degli altri registri MPIC locali, accesso a tali registri può perciò essere limitato a solo supervisore. Il sistema operativo eseguito sul processore è libero di usare a suo piacimento questi registri.

Claims (27)

  1. RIVENDICAZIONI 1) Circuito integrato (chip) per l'uso in un sistema controllori di interruzioni programmabile a più processori che comprende una molteplicità di processori, un bus di sistema comune, control- lori di interruzioni di processore locale associati, almeno un controllore di interruzioni di entrata/uscita ed un bus di interruzioni, il circuito integrato comprendendo: (a) un circuito di processore associato comprendente un'unità centrale di elaborazione (CPU) con porte di entrata/uscita dati, indirizzo e controllo; (b) un controllore di interruzione di processore locale connesso a dette porte di dati, indirizzo e controllo per accettare segnali di richiesta di interruzione di processore dal circuito di processore associato per formattare i segnali di richiesta di interruzione di processore associati, i segnali di processore associato formattati essendo indicativi della natura e priorità dell'interruzione di processore associata, per mettere in coda un'interruzione di accettazione e per fornire l'interruzione accettata al processore associato per servizio in ordine di priorità, mezzi per connessione al bus di interruzione per ricevere ed accettare segnali di interruzione formattati sia dal controllore di interruzione di entrata/uscita, sia da altro controllore di processore locale, per cui il processore associato può essere scelto per servizio, per trasmettere i segnali di interruzione formattati da processore associato sul bus di interruzione, per trasmettere sul bus di interruzione un segnale di accettazione all1accettazione dei segnali di interruzione ricevuti.
  2. 2) Circuito integrato come in 1), comprendente inoltre mezzi nel controllore di interruzioni di processore locale per arbitrare piorità con altri controllori di interruzione di processore di entrata/uscita e locale per controllo del bus di interruzione per la trasmissione di segnali relativi ad interruzione.
  3. 3) Circuito integrato come in 1), comprendente inoltre un registro nel controllore di interruzioni di processore locale per immagazzinare un unico numero di identificazione preassegnato per stabilire la priorità relativa di ciascun controllore locale, in caso di arbitraggio per stabilire la priorità più elevata per uso del bus di interruzione e/o stabilire la priorità più bassa per l'accettazione di messaggi di richiesta di interruzione.
  4. 4) Circuito integrato come in 1), in cui il controllore di interruzioni di processore locale comprende inoltre: (a) mezzi per arbitrare l'accettazione di segnali di interruzione in base alla priorità attuale del compito di processore associato così che, fra un sottoinsieme di processori sceglibili della molteplicità di processori, il controllore di interruzioni di processore locale associato col processore sceglibile di più bassa priorità accetta il segnale di richiesta di interruzione; e (b) mezzi per selezionare uno dei sottoìnsiemi di processori scaglibili quando più di uno sta operando ad uno stesso livello di priorità più basso per distribuire le richieste ed il servizio uniformemente fra il sottoinsieme per processori sceglibili operanti allo stesso livello più basso di priorità.
  5. 5) Circuito integrato come in 1), in cui il controllore di interruzione di processore locale comprende mezzi per generare formati di messaggi standard per uso con interruzioni di destinazione fissa.
  6. 6) Circuito integrato come in 1), in cui il controllore di interruzione di processore locale comprende inoltre mezzi per determinare se il controllore di interruzione di processore locale è un fuoco per la stessa interruzione per cui viene richiesto servizio; e, se è così, mezzi per eliminare la procedura di arbitraggio di priorità.
  7. 7) Circuito integrato come in 1), in cui il controllore di interruzione di processore comprende inoltre mezzi per generare una sequenza di arbitraggio di priorità per arbitrare fra processori candidati possibili.
  8. 8) Circuito integrato come in 7), in cui la sequenza di arbitraggio di priorità comprende: (a) una sequenza di priorità basata sulla priorità attuale di ciascun processore; e (b) un'unica sequenza di identificazione di arbitraggio casualizzata per determinare la destinazione di priorità più bassa vincente.
  9. 9) Circuito integrato come in 8), in cui i mezzi di generazione operano sul numero di identificazione di controllore di interruzione di processore locale incrementando il numero precedente e invertendo dalla fine la configurazione di bit risultante per produrre una nuova sequenza di identificazione di arbitraggio.
  10. 10) Circuito integrato come in 1), in cui il controllore di interruzione di processore locale comprende: (a) mezzi di emissione/ricezione per ricevere ed emettere messaggi relativi ad interruzione ed arbitraggio sul bus di interruzione; (b) mezzi logici di accettazione per respingere, accettare ed arbitrare messaggi di richiesta di interruzione ricevuti comprendenti informazioni di tipo interruzione e di priorità; (c) mezzi di registrazione, connessi ai mezzi di logica di accettazione ed ai mezzi di emissione/ricezione, per registrare lo stato di messaggi di richiesta di interruzione accettati comprendenti informazioni di tipo interruzione e di priorità; (d) mezzi di memoria a impilaggio per ordinamento di priorità (intercalamento) delle richieste di interruzione accettate, connessi alle porte di dati di processore locale e di indirizzo, per immagazzinamento ed emissione della richiesta di interruzione di priorità più elevata quando la sua priorità di processore locale associato è minore della richiesta di interruzione in coda con priorità più elevata e per inviare un riscontro accettato di tentativo di emissione dal processore alla sorgente emittente sul bus di interruzione; (e) mezzi per immagazzinare il numero di identificazione di controllore di interruzione di processore locale, connessi alle porte di dati di processore associato e di indirizzo per assegnazione di un numero di identificazione programmabile di processore e connessi ai mezzi di emissione/ricezione ed ai mezzi di logica di accettazione per arbitraggio ed accettazione di segnali di richiesta di interruzione ricevuti; (f) mezzi per seguire la priorità di compito attuale di processore associato ed emettere la priorità di compito ai mezzi logici di accettazione per arbitraggio ed accettazione di segnali di richiesta di interruzione ricevuti; e (g) mezzi di formattazione, connessi al processore locale associato ed ai mezzi di emissione/ricezione per formattare un messaggio di interruzione specificato dal processore associato e per iniziare trasmissione dei messaggi da parte dei mezzi di emissione/ricezione .
  11. 11) Circuito integrato come in 10), in cui il controllore di interruzione di processore locale comprende inoltre: (a) mezzi a temporizzatore con una sorgente di orologio selezionabile da processore associato per temporizzare un intervallo programmabile specificato dal processore associato e generare un messaggio di richiesta di interruzione di intervallo al processore associato alla fine dell'intervallo programmabile; (b) mezzi per rilevare interruzioni generate da processore associato e generare un'interruzione interna; (c) mezzi per rilevare errori di parità di bus di interruzione e generare un'interruzione interna; e (d) una tabella di vettore di interruzione locale per formattare le interruzioni locali e prioritizzare ed indirizzare il messaggio di interruzione per trasmissione da parte dei mezzi di emissione/ricezione del controllore di interruzione di processore locale.
  12. 12) Circuito integrato come in 10), in cui il controllore di interruzione di processore locale comprende inoltre mezzi per immagazzinamento e reperimento di dati ausiliari accessibili solo al processore associato.
  13. 13) Circuito integrato come in 10), in cui i mezzi di intercalamento generano un segnale di interruzione di processore per avvertire il processore associato che è pronta per accettazione un'interruzione di priorità più elevata di quella del suo compito presente .
  14. 14) Sistema di controllori di interruzione programmabile a più processori per il funzionamento in un ambiente a più processori che comprende una molteplicità di processori ed almeno un'unità periferica interconnesse da un bus di sistema comune, in cui l'unità periferica ha una linea di richiesta di interruzione che può segnalare una richiesta per servizio da almeno un processore ed in cui ogni processore può richiedere servizio da qualunque altro processore senza uso del bus di sistema a più processori comune, comprendente: (a) un bus di interruzione per comunicare una richiesta di interruzione ed un messaggio di riscontro; (b) un controllore di entrata/uscita connesso alla linea di richiesta di interruzione di almeno una periferica associata per accettare almeno un segnale di interruzione di periferica, per formattare il segnale di interruzione per trasmissione sul bus di interruzione, il segnale formattato essendo rappresentativo della natura e priorità del segnale di interruzione di periferica ed indicativo del gruppo di processori che possono essere scelti per servire l'interruzione, connesso al bus di interruzione per trasmettere i segnali di interruzione formattati e per ricevere informazioni di stato sulla disposizione della richiesta di interruzione; (c) una molteplicità di controllori di processori locali, ciascun controllore di processore locale associato ad uno specifico processore, almeno un controllore di processore locale della molteplicità di controllori di processori locali integrato in un chip comune col processore associato, per accettare segnali di richiesta di interruzione di processore dal processore associato, per formattare i segnali di interruzione di processore associato, i segnali di interruzione di processore associato formmattati essendo indicativi della natura e della priorità dell'interruzione di processore associato, il controllore di processore locale integrato connesso al bus di interruzione per ricevere ed accettare segnali di interruzione formattati sia da controllore di entrata/uscita, sia da altro controllore di processore locale per il quale può essere scelto per servire il suo processore associato, per trasmettere i segnali di interruzione formattati di processore associato del bus di interruzione, per trasmettere sul bus di interruzione un'accettazione dei segnali di interruzione ricevuti, per mettere in coda i segnali di interruzione accettati e per emettere interruzioni accettate al processore associato per servizio in ordine di priorità.
  15. 15) Sistema come in 14), comprendente inoltre: (a) mezzi nel controllore di entrata/uscita per arbitraggio con altri controllori di entrata/uscita e di processori locali sui bus di interruzione per il controllo del bus di interruzione per la trasmissione di segnali relativi ad interruzione; e (b) mezzi in ciascun controllore di processore locale per arbitraggio di priorità con altri controllori di entrata/uscita e di processori locali sul bus di interruzione per controllo del bus di interruzione per la trasmissione di segnali relativi ad interruzione.
  16. 16) Sistema come in 15), comprendente inoltre un registro nei controllori di processori locali per immagazzinare un unico numero di identificazione preassegnato per stabilire la priorità relativa di ciascun controllore locale durante arbitraggio per stabilire la priorità più elevata per uso di bus e per stabilire la priorità più bassa per l'accettazione di messaggi di richiesta di interruzione.
  17. 17) Sistema come in 15), in cui si usano formati di messaggi standard per tutte le trasmissioni sul bus di interruzione.
  18. 18) Sistema come in 14), comprendente inoltre: (a) mezzi per arbitraggio dell'accettazione di segnali di interruzione in base alla priorità attuale del compito di processore locale associato, cosi che, fra i processori che possono essere scelti, il controllore di processore locale associato col processore di priorità più bassa accetti il segnale di richiesta di interruzione; e (b) mezzi per selezionare uno dei processori locali compreso in un sottoinsieme di processori che possono essere scelti operanti alla stessa priorità di livello più basso così da distribuire la richiesta e il servizio con probabilità uniforme fra il sottoinsieme di processori che possono essere scelti operanti allo stesso livello più basso di priorità.
  19. 19) Sistema come in 18), in cui un primo formato standard per uso con interruzioni di destinazione fissa comprende inoltre: (a) una sequenza di arbitraggio di bus di interruzione; (b) una porzione di modo emissione indicante la base di emissione, ad esempio fissa o a priorità più bassa; (c) una porzione di controllo indicante la destinazione ed il modo di emissione, il tipo di interruzione (fatto scattare da livello o da fronte) e se asserire o disasserire segnale di tipo di livello; (d) una porzione di destinazione indicante i processori che possono essere scelti; e (e) un valore di totale di controllo indicante integrità di segnale.
  20. 20) Sistema come in 19), in cui il formato di messaggio è usato anche per funzioni di tutto il sistema diverse da interruzione di entrata/uscita quali procedure di rimessa a stato iniziale e messa a punto.
  21. 21) Sistema come in 20), comprendente inoltre: (a) mezzi per controllori di processori locali determinanti se è un fuoco per la stessa interruzione per cui viene richiesto servizio; e se è cosi (b) mezzi per eliminare la procedura di arbitraggio di priorità.
  22. 22) Sistema come in 20), avente un secondo formato aumentato per interruzioni di destinazione a priorità più bassa, comprendente inoltre una sequenza di arbitraggio di priorità per arbitraggio fra processori candidati che possono essere scelti.
  23. 23) Sistema come in 22), in cui i mezzi logici di accettazione hanno una sequenza di arbitraggio di priorità che comprende: (a) una sequenza di priorità basata sull'attuale priorità di ciascun processore associato; e (b) una sequenza di identificazione di arbitraggio casualizzata per determinare la destinazione di priorità più bassa vincente.
  24. 24) Sistema come in 23), comprendente inoltre mezzi per generare la sequenza di identificazione di arbitraggio di priorità.
  25. 25) Sistema come in 24), in cui i mezzi di generazione operano sul suo numero di identificazione di controllore incrementando il numero precedente ed invertendo dalla fine la configurazione di bit risultante per produrre una nuova sequenza di arbitraggio.
  26. 26) Sistema come in 19), comprendente inoltre: (a) mezzi per controllare il valore di totale di controllo e respingere il messaggio se in errore; (b) mezzi per aggiungere un indicatore di errore al primo formato standard; e (e) mezzi per far sì che tutti i controllori di processori di entrata/uscita e locali riconoscano che il messaggio trasmesso viene respinto a causa di errore di parità.
  27. 27) Sistema di controllori di interruzione programmabile a più processori per il funzionamento in un ambiente a più processori che comprende una molteplicità di processori ed almeno un'unità periferica interconnesse da un bus di sistema comune, in cui l'unità periferica ha una linea di richiesta di interruzione che può segnalare una richiesta per servizio da almeno un processore ed in cui ogni processore può richiedere servizio da qualunque altro processore senza uso del bus di sistema a più processori comune, comprendente: (a) un bus di interruzione per comunicare una richiesta di interruzione ed un messaggio di riscontro; (b) un controllore di entrata/uscita connesso alla linea di richiesta di interruzione di almeno una periferica associata per accettare almeno un segnale di interruzione di periferica, per formattare il segnale di interruzione per trasmissione sul bus di interruzione, il segnale formattato essendo rappresentativo della natura e priorità del segnale di interruzione di periferica ed indicativo del gruppo di processori che possono essere scelti per servire l'interruzione, connesso al bus di interruzione per trasmettere i segnali di interruzione formattati e per ricevere informazioni di stato sulla disposizione della richiesta di interruzione; (c) una molteplicità di controllori di processori locali, ciascun controllore di processore locale associato ad uno specifico processore per accettare segnali di richiesta di interruzione di processore dal processore associato, per formattare i segnali di richiesta di interruzione di processore associato, i segnali di interruzione di processore associato foriranattati essendo indicativi della natura e della priorità dell'interruzione di processore associato, connesso a detto bus di interruzione per ricevere ed accettare segnali di interruzione formattati sia da controllore di entrata/uscita, sia da altro controllore di processore locale per il quale può essere scelto per servire il suo processore associato, per trasmettere i segnali di interruzione formattati di processore associato del bus di interruzione, per trasmettere sul bus di interruzione un segnale di accettazione all'accettazione dei segnali di interruzione ricevuti, per mettere in coda i segnali di interruzione accettati e per emettere interruzioni accettate al processore associato per servizio in ordine di priorità; e (d) almeno un processore a circuito integrato associato con un controllore di processore locale e ad esso connesso, il processore a circuito integrato incorporando una tabella di vettore di interruzione locale per gestire direttamente vettori di interruzione di processore locale.
ITMI940730A 1993-04-19 1994-04-15 Sistema di controllori di interruzioni programmabile a piu' processoricon un controllore di interruzioni locale integrato nei processori IT1270035B (it)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US4951593A 1993-04-19 1993-04-19

Publications (3)

Publication Number Publication Date
ITMI940730A0 ITMI940730A0 (it) 1994-04-15
ITMI940730A1 true ITMI940730A1 (it) 1995-10-15
IT1270035B IT1270035B (it) 1997-04-28

Family

ID=21960233

Family Applications (1)

Application Number Title Priority Date Filing Date
ITMI940730A IT1270035B (it) 1993-04-19 1994-04-15 Sistema di controllori di interruzioni programmabile a piu' processoricon un controllore di interruzioni locale integrato nei processori

Country Status (6)

Country Link
JP (1) JPH06324996A (it)
DE (1) DE4413459C2 (it)
GB (1) GB2277388B (it)
HK (1) HK1001011A1 (it)
IT (1) IT1270035B (it)
SG (1) SG48803A1 (it)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2298503B (en) * 1993-12-16 1998-08-12 Intel Corp Multiple programmable interrupt controllers in a computer system
US7689747B2 (en) * 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
JP5243711B2 (ja) 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ
US7627706B2 (en) * 2007-09-06 2009-12-01 Intel Corporation Creation of logical APIC ID with cluster ID and intra-cluster ID
JP5322567B2 (ja) * 2008-10-02 2013-10-23 ルネサスエレクトロニクス株式会社 データ処理システム及び半導体集積回路
JP5169731B2 (ja) 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US8103816B2 (en) * 2008-10-28 2012-01-24 Intel Corporation Technique for communicating interrupts in a computer system
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
CN117294538B (zh) * 2023-11-27 2024-04-02 华信咨询设计研究院有限公司 一种数据安全风险行为的旁路检测与阻断方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3676861A (en) * 1970-12-30 1972-07-11 Honeywell Inf Systems Multiple mask registers for servicing interrupts in a multiprocessor system
US4495569A (en) * 1982-06-28 1985-01-22 Mitsubishi Denki Kabushiki Kaisha Interrupt control for multiprocessor system with storage data controlling processor interrupted by devices
JPH03122742A (ja) * 1989-10-05 1991-05-24 Oki Electric Ind Co Ltd 割込み通知方式
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5179707A (en) * 1990-06-01 1993-01-12 At&T Bell Laboratories Interrupt processing allocation in a multiprocessor system
US5125093A (en) * 1990-08-14 1992-06-23 Nexgen Microsystems Interrupt control for multiprocessor computer system

Also Published As

Publication number Publication date
SG48803A1 (en) 1998-05-18
HK1001011A1 (en) 1998-05-15
GB2277388A (en) 1994-10-26
GB9402811D0 (en) 1994-04-06
ITMI940730A0 (it) 1994-04-15
DE4413459A1 (de) 1994-10-20
IT1270035B (it) 1997-04-28
JPH06324996A (ja) 1994-11-25
DE4413459C2 (de) 2000-04-06
GB2277388B (en) 1997-08-13

Similar Documents

Publication Publication Date Title
JP2855298B2 (ja) 割込み要求の仲裁方法およびマルチプロセッサシステム
US5758169A (en) Protocol for interrupt bus arbitration in a multi-processor system
AU689201B2 (en) A multiprocessor programmable interrupt controller system with processor-integrated interrupt controllers
US5555420A (en) Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
US5410710A (en) Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
JP3381732B2 (ja) 多重プロセッサ・コンピュータの割り込み操向システム
KR910001790B1 (ko) 디지탈 컴퓨터 시스템에서의 통신로 제어 할당용 중재 장치 및 이의 중재 방법
US5530891A (en) System management interrupt mechanism within a symmetrical multiprocessing system
US4763249A (en) Bus device for use in a computer system having a synchronous bus
US4769768A (en) Method and apparatus for requesting service of interrupts by selected number of processors
US4953072A (en) Node for servicing interrupt request messages on a pended bus
EP0364849A2 (en) Bus for a data processing system
US4661905A (en) Bus-control mechanism
EP0357685A1 (en) METHOD AND ARRANGEMENT FOR SECURING ADAPTED ACCESS TO RESOURCES IN A MULTIPROCESSOR DATA PROCESSING SYSTEM.
EP0069774A1 (en) Interrupt coupling and monitoring system
US5428794A (en) Interrupting node for providing interrupt requests to a pended bus
AU1716888A (en) Computer systems
JPS6024499B2 (ja) 分散型多重デ−タ処理装置システム
JPH1097490A (ja) スケーラブル対称型マルチプロセッサにおいてバス幅またはバス・プロトコルを変更せずに割り込みを分散する方法および装置
JPH04312160A (ja) マルチプロセッサシステムおよびそのメッセージ送受信制御装置
EP0685798A2 (en) Interrupt controllers in symmetrical multiprocessing systems
ITMI940730A1 (it) Sistema di controllori di interruzioni programmabile a piu&#39; processori con un controllore di interruzioni locale integrato nei processori
EP0139568B1 (en) Message oriented interrupt mechanism for multiprocessor systems
US5241628A (en) Method wherein source arbitrates for bus using arbitration number of destination
EP0340347B1 (en) Bus arbitration system

Legal Events

Date Code Title Description
0001 Granted
TA Fee payment date (situation as of event date), data collected since 19931001

Effective date: 19970327