IT8922593A1 - Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali - Google Patents

Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali Download PDF

Info

Publication number
IT8922593A1
IT8922593A1 IT1989A22593A IT2259389A IT8922593A1 IT 8922593 A1 IT8922593 A1 IT 8922593A1 IT 1989A22593 A IT1989A22593 A IT 1989A22593A IT 2259389 A IT2259389 A IT 2259389A IT 8922593 A1 IT8922593 A1 IT 8922593A1
Authority
IT
Italy
Prior art keywords
page
cpus
local
data
global
Prior art date
Application number
IT1989A22593A
Other languages
English (en)
Other versions
IT8922593A0 (it
IT1239122B (it
Inventor
Maria Costa
Carlo Leonardi
Original Assignee
Bull Hn Information Systemsitalia Spa
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 Bull Hn Information Systemsitalia Spa filed Critical Bull Hn Information Systemsitalia Spa
Priority to IT22593A priority Critical patent/IT1239122B/it
Publication of IT8922593A0 publication Critical patent/IT8922593A0/it
Priority to US07/614,804 priority patent/US5247673A/en
Priority to DE69019925T priority patent/DE69019925T2/de
Priority to EP90122832A priority patent/EP0431467B1/en
Publication of IT8922593A1 publication Critical patent/IT8922593A1/it
Application granted granted Critical
Publication of IT1239122B publication Critical patent/IT1239122B/it

Links

Classifications

    • 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/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Description

DESCRIZIONE
dell' invenzione daL titolo "SISTEMA MULTIPROCESSORE A RISORSE DISTRIBUITE CON REPLICAZIONE DINAMICA DI DATI GLOBALI"
RIASSUNTO
In un sistema multiprocessore in cui una pluralit? di processori o CPU comunicano tra loro attraverso un bus di sistema, ogni CPU e' provvista di una memoria locale contenente dati usati localmente e dati globali potenzialmente condivisi da una pluralit? di processi operanti in CPU diverse e per questo replicati nella memoria locale di tutte le CPU, la replicazione dei dati globali in tutte le CPU e' effettuata a livello di pagina e solamente quando una pagina di dati globali e' effettivamente richiesta da processi operanti in CPU diverse, riducendo al minimo lo spazio di memoria richiesto per la replicazione e il traffico sul bus di sistema per l'esecuzione di operazioni di replicazione di scrittura, necessarie per assicurare la consistenza di pagine replicate.
La presente invenzione riguarda un sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali e il relativo metodo di allocazione e replicazione dinamica.
E' noto che i moderni sistemi di elaborazione dati offrono la possibilit?' di eseguire piu' processi congiuntamente e sono definiti sistemi di multiprocessing.
Mentre un programma pu? essere definito come successione di istruzioni ordinate che operano su un insieme di dati, un processo e* definito sinteticamente come "uno spazio di indirizzi, una trama di control lo che opera all'interno dello spazio indirizzi e l'insieme delle necessarie risorse di sistema".
L'esecuzione di un programma richiede la creazione di uno o piu' processi, cio?' l'allestimento in termini di spazio indi rizzabi le, l'organizzazione delle risorse necessarie e l'operazione delle stesse.
I dati che servono per l'esecuzione del programma e sui quali il programma opera devono essere caricati nello spazio del processo a cui deve necessariamente corrispondere uno spazio fisico di memoria di lavoro come supporto dei dati.
In un sistema di multiprogrammazione Co anche solo multiprocessing ) e' implicita la generazione congiunta di piu' processi ed e' possibile che alcuni dei dati usati nei diversi processi, nel caso anche in tempi successivi, siano identici tra loro.
Questi dati sono definiti come dati condivisi.
Si e' quindi posto il problema di evitare di caricare lo stesso dato, usato in piu' processi si multanemente o consecutivamente attivi, in uno spazio di indirizzi, quindi di memoria fisica, diverso per ciascun processo, con la necessita' di replicare la stessa informazione per ogni processo o anche solo di' doverla spostare da uno spazio di indirizzi ad un altro, in funzione del processo. Si e' quindi introdotto il concetto di memoria condivisa, tipico dei sistemi operativi UNIX (Marchio Registrato), come spazio di memoria destinato a contenere dati condivisi.
I diversi processi che devono operare su dati condivisi, attingono tali dati da questa memoria condivisa.
Nei moderni sistemi di elaborazione dati, per ottenere prestazioni piu' elevate, si fa uso di una pluralit?' di processori che congiuntamente e simultaneamente possono eseguire una pluralit?' di processi.
I processori sono interconnessi mediante un bus di sistema e attraverso di questo comunicano tra di loro e con risorse comuni condivise come unita' di ingresso/uscita e memorie di lavoro.
Per ovviare alle limitazioni di prestazione imposte dal bus di sistema e ridurre la competizione nel l'accesso al bus di sistema si fa anche uso di memorie locali, ciascuna associata a un processore e accessibile direttamente da questo, senza dover ottenere accesso al bus di sistema. In ciascuna di queste memorie locali sono preferibilmente memorizzati "dati locali" usati esclusivamente dal processore associato e nei proces si da questo eseguiti.
Per quanto riguarda i "dati condivisi" l'architettura a multiprocessori comporta alcuni problemi. E' evidente che piu' processori distinti possono operare con piu' processi sugli stessi dati condivisi.
In un sistema multiprocessore si pu? quindi introdurre il concetto di dati locali, condivisi o non condivisi, usati nei processi svolti da un processore, e dati globali, ossia dati condivisi usati da piu' processi svolti da processori diversi.
I dati globali possono essere memorizzati in un'unica memoria condivisa, accessibile attraverso il bus di sistema, oppure in una o piu' memorie locali a cui i processori non associati possono accedere attraverso il bus di sistema , con le limitazioni gi?' indicate.
Per evitare almeno in parte questa contropartita, e' stato introdotto di recente e descritto nella domanda di brevetto europea N. 0320607 pubblicata Il 21/6/1989 il concetto di dati globali replicati.
Secondo questo concetto i dati globali sono memorizzati e replicati in ciascuna delle memorie locali di un sistema multiprocessore. In questo modo ogni processore del sistema pu?' leggere i dati globali nella memoria locale associata senza accedere al bus di sistema. Nel caso di opera zioni di scrittura e' necessario accedere al bus di sistema per scrivere il dato in tutte le memorie locali e assicurarne la consistenza, contropartita largamente compensata dai vantaggi conseguiti. Una seconda contropartita e' che le memorie locali devono essere dimensionate per contenere i dati globali, devono quindi avere ciascuna una capacita1 rilevante, appropriata per contenere tutti i dati globali necessari per l'esecuzione parallela dei diversi processi. Per contenere in limiti economicamente accettabili la capacita1 delle memorie locali e' quindi necessario ridurre al minimo i dati globali e la relativa replicazione. La presente invenzione consegue questo risultato mediante un criterio di replicazione dinamica di dati globali e si basa sul fatto che i dati globali possono essere classificati in due ampie categorie:
- Dati globali che definiscono lo stato del sistema e che possono essere necessari in qualsiasi momento a uno qualsiasi dei processori. Si tratta in generale di dati usati dal Supervisore di sistema.
- Dati globali di processi utente che possono essere necessari in una pluralit?' di processi utente, quindi richiesti da piu' processori congiuntamente, in periodi di tempo limitati in cui ciascuno dei processori esegue simultaneamente agli altri uno della pluralit? di processi. I dati globali della seconda categoria, sono cio? dati che potenzialmente possono essere utilizzati da piu' processori ma di fatto sono usati contemporaneamente solo in circostanze particolari. Secondo l'invenzione i dati globali della seconda categoria, finche' usati da un solo processore, sono memorizzati nella sola memoria locale associata al processore, e qualificati come dati locali, in modo da non richiedere spazio nelle memorie associate agli altri processori ne* operazioni di replicazione e quindi di accesso al bus di sistema.
Essi assumono la qualifica di dati globali solo quando un secondo processore almeno ne richiede l' impiego e in questa occasione vengono replicati in tutte le memorie locali.
Essi tornano ad assumere la qualifica di dati locali quando il loro uso e' richiesto da un solo processore e non dagli altri, liberando cosi' dello spazio nelle memorie locali associate agli altri processori.
Per la gestione dinamica dei dati globali nel modo precedentemente descritto non sono necessarie modifiche di architettura. Occorre invece provvedere nelle memorie locali delle tabelle di informazioni che descrivono lo stato delle pagine di memoria, nelle diverse memorie locali, destinate a contenere dati condivisi e potenzialmente globali. Queste tabelle sono esse, stesse un insieme di dati globali utilizzato dal supervisore di sistema.
Inoltre sono necessarie alcune modifiche al noto meccanismo di "page fault" ossia alle routine di gestione del segnale di errore di pagina.
La replicazione di dati globali In ciascuna delle memorie locali del sistema richiede che In ogni memoria locale sia disponibile, per la replicazione, un adeguato spazio.
Se la replicazione e' eseguita con un comando di scrittura di dato globale caratterizzato da un Indirizzo -fisico di memoria, e generato da uno dei processori del sistema, e' necessario che lo spazio fisico di memoria, riservato ai dati globali nelle diverse memorie locali, abbia gli stessi indirizzi fisici.
Tale vincolo e? rimosso con gli accorgimenti e i mezzi descritti nella domanda di brevetto italiana N. 19787A/89 depositata il 15.03.1989. Sostanzialmente, secondo l'invenzione descritta in tale domanda, le operazioni di lettura e/o scrittura di dati globali, fanno uso di un indirizzo di memoria che viene denominato convenzionalmente come reale per distinguerlo dall'indirizzo fisico. Questo indirizzo reale viene convertito, in ciascuna delle memorie locali, in un indirizzo fisico, generalmente diverso da memoria locale a memoria locale, per mezzo di una pluralit? di memorie di traduzione, ciascuna associata a una memoria locale. Cosi' ogni processore pu?' gestire l'allocazione di dati globali nella sua memoria locale in modo autonomo, anche se a livello di sistema i dati globali sono individuati da un indirizzo comune, che e' appunto l'indirizzo reale.
Dato per scontato che il sistema multiprocessore oggetto della presente invenzione, cosi' come quelli descritti nelle domande di brevetto citate, fa uso del concetto di memoria virtuale, ne risulta che ogni proces sore del sistema e' fornito di una prima unita' di gestione indirizzi o MMU, che converte gli indirizzi logici o virtuali, usati a livello $W, in indirizzi fisici o nel caso di dati globali in indirizzi reali.
Ogni processore del sistema e' inoltre fornito di una seconda unita' di traduzione indirizzi, associata alla sua memoria locale, che converte gli indirizzi reali in indirizzi fisici. Ogni processore gestisce in modo autonomo con il suo sistema di gestione memoria, l'allocazione delle informazioni nella sua memoria locale.
Avendo fatto queste premesse introduttive, le caratteristiche ed i vantaggi dell'invenzione risulteranno piu' chiari dalla descrizione che segue di una forma preferita di realizzazione e dai disegni allegati in cui :
-La Figura 1 rappresenta in schema a blocchi un sistema multiprocessore a risorse distribuite che provvede a una replicazione e gestione dinamica dei dati globali secondo la presente invenzione.
-La Figura 2 rappresenta il formato degli indirizzi generati dalle unita' di gestione memoria (MMU) nel sistema di Fig.1.
-La Figura 3 mostra le tavole di memoria usate da un sistema di gestione memoria di tipo convenzionale nel sistema di Fig.1.
-La Figura 4 mostra le tavole di memoria che vengono usate, secondo la presente invenzione per la gestione e replicazione dinamica di dati globali e dei segmenti a cui appartengono.
-La Figura 5 mostra la struttura di una delle tavole di Fig.4 che descrive le caratteristiche di un segmento di dati globali.
-Le Figure 6,7,8, 9 mostrano a titolo di esempio i contenuti della tabella di Fig.5 in tempi successivi.
La Fig. 1 rappresenta in schema a blocchi, un sistema multiprocessore in grado di replicare dati globali e di gestirli dinamicamente secondo il metodo oggetto della presente invenzione.
Un sistema multiprocessore come quello illustrato in Fig.1 e' descritto in dettaglio nella pubblicazione europea gi? citata (EP-A-320607) nonch? nelle domande di brevetto italiane N. 22651A/88 depositata il 18.11.88; N. 22652A/88 depositata il 18.11.88 e 19787A/89 depositata il 15.03.89, a cui si rimanda per tutte le informazioni non qui contenute. Il sistema di Fig. 1 comprende quattro unita* centrali di elaborazione dati CPUO, CPU1, CPU2, CPU3, connesse tra loro per mezzo di un bus di sistema 5.
Le diverse unita* sono temporizzate da una unita* di temporizzazione 6. La CPUO comprende un microprocessore 7 o MPUO, una unita* di gestione indirizzi 9 o MMUO, una memoria locale 8 o LMO, una unita' di interfaccia e arbitrazione 10, un arbitratore locale 13 e una unita* di traduzione indirizzi 8B.
Il microprocessore 7 comunica con la memoria locale 8 e con l'unita' di interfaccia per mezzo di un bus locale 11.
Attraverso l'unita* di interfaccia 10 il microprocessore 7 ha accesso al bus di sistema, per ricevere e inviare informazioni alle altre CPU, nonch?* per accedere alle memorie locali delle altre CPU o a unita1 di governo di periferiche connesse al bus di sistema, quali un controllore 20 di unita' a dischi 21, o memorie secondarie, un controllore 22 di monitor 23 con tastiera 24, un governo linee 25, un governo 26 di stampante 27.
L'unita' 10, insieme a corrispondenti unita' presenti nelle altre CPU, arbitra l'accesso al bus di sistema da parte delle diverse CPU e gestisce il protocollo di comunicazione sul bus di sistema.
Attraverso l'unita' di interfaccia 10, le altre CPU del sistema possono avere accesso al bus locale 11 di CPUO (arbitrato dal l'unita' 13) e di qui alla memoria locale 8.
L'unita' di gestione indirizzi 9, rappresentata in figura 1 come unita' separata dal processore 7 pu? ssere di fatto incorporata come parte integrante del processore 7.
Ci?' si verifica, per esempio, se il processore 7 e' costituito da un microprocessore integrato prodotto dalla ditta Motorola con codice MC68030.
In aggiunta all'unita' di gestione indirizzi 9 (MMUO) la CPUO comprende una unita1 di traduzione indirizzi 8B associata alla memoria locale 8. L* indirizzamento della memoria locale 8 avviene per indirizzi fisici, ricevuti attraverso il bus locale 11, vuoi dalla unita' di gestione indirizzi 9, vuoi dalla unita' di interfaccia e arbitrazione 10.
Nel caso che sul bus locale 11 sia presente un indirizzo reale (quindi un indirizzo di dato globale) questo viene riconosciuto come tale e convertito in un indirizzo fisico dalla unita' di traduzione 8B associata alla memoria locale 8.
Le altre CPU del sistema hanno una architettura identica a quella della CPUO.
Nel sistema di Fig. 1 , gli indirizzi in uscita dalla MMU delle diverse CPU hanno il formato rappresentato in Figura 2.
Intenzionalmente tali indirizzi non sono identificati come fisici perche possono essere sia indirizzi fisici effettivi, sia indirizzi reali, che richiedono una ulteriore conversione in indirizzi fisici.
Un indirizzo fisico o reale, in uscita dalla MMU delle diverse CPU e' costituito da 32 bit (bit 0-31).
I bit di maggior peso, rispettivamente designati con I (spazio Interno, bit 31), PN (per Processor Number, bit 29,30) e G (per Globale, bit 28) definiscono la natura dello spazio indirizzato dai bit O-27.
II bit 31, secondo il suo livello vero o falso, identifica concettualmente due spazi di memoria distinti: uno spazio interno (bit 31=1) e uno spazio esterno (bit 31=0).
Nell'ambito dello spazio esterno (bit 31=0) i bit 29,30 identificano, secondo il loro stato, lo spazio di memoria (ossia la memoria locale) di una delle diverse CPU 0,1, 2, 3.
Nell'ambito dello spazio di memoria locale, il bit 28 asserito indica che lo spazio identificato e' "spazio globale" destinato a contenere dati globali, il bit 28 deasserito indica che lo spazio identificato e' spazio locale destinato a contenere informazioni locali.
Il bit 31 asserito identifica uno spazio interno ossia appartenente alle risorse della stessa CPU dove e' generato l'indirizzo.
Se i bit 29,30 sono entrambi deasseriti (e il bit 31 e' asserito) lo spazio interno che viene selezionato e' quello di memoria locale, e nell'ambito di tale spazio il bit 28, secondo il suo livello logico identifica uno spazio locale o globale.
Se uno almeno dei bit 29,30 e' asserito. lo spazio interno identificato e' genericamente uno "spazio di registri": i bit da 0 a 28 (o parte di questi) servono per identificare una tra una pluralit?' di risorse diverse dalla memoria locale.
Il bit 28, oltre che identificare uno spazio globale (bit 28=1) in alter nativa a uno spazio locale (bit 28=0) ha un'altra importante funzione: quando e' asserito esso indica che l'indirizzo a cui appartiene e' un indirizzo "reale" e deve essere convertito in un indirizzo fisico per indirizzare le diverse memorie locali.
L'operazione di conversione e' effettuata in modo autonomo da ciascuna CPU per mezzo dell'unita' di traduzione indirizzi (come 8B nella CPUO) . I bit da 27 a 12 di ogni indirizzo costituiscono un indirizzo fisico o reale di pagina (secondo che il bit 28 e' falso o vero) e i bit da 11 a 0 costituiscono un "offset" (invariabile nelle conversioni di indirizzo logico a reale o fisico e da reale a fisico) che identifica un byte di informazione nell'ambito di una pagina di 4Kbyte s.
E' chiaro che con questa struttura di indirizzi una CPU, per mezzo della MMU a questa associata pu?' indirizzare una locazione della propria memoria locale (spazio interno) o di una qualsiasi delle altre memorie locali (spazio esterno) che sono viste come risorse di memoria distribuite e condivise.
La selezione di uno spazio interno di memoria pu?* avvenire attraverso il bus locale, senza coinvolgere il bus di sistema. La selezione di uno spazio esterno, avviene tramite il bus locale e l'unita' di interfaccia della CPU agente, il bus di sistema, l'unita' di interfaccia e il bus locale della CPU associata alla memoria locale di destinazione .
Le domande di Brevetto citate, descrivono tutte in dettaglio i circuiti che consentono queste operazioni.
Inoltre nel caso di scrittura di dati globali, l'operazione viene congiuntamente eseguita in tutte le memorie locali cosi' che i dati globali risultano replicati in tutte le memorie locali.
L' indi rizzamento di dati globali sia per operazioni di scrittura che per operazioni di lettura avviene mediante l'indirizzo reale che localmente, immediatamente a monte di ogni memoria locale viene convertito in un indirizzo fisico dall'unita' di traduzione indirizzi associata a ciascuna memoria locale.
La gestione delle memorie locali, che nell'insieme formano una memoria di lavoro condivisa, avviene come e' noto per mezzo di un programma di gestione di memoria principale o MMMS che si basa su una pluralit?' di tabelle SW, concatenate in una struttura gerarchica di dati.
La Fig.3 mostra schematicamente tali tabelle e la loro concatenazione. Tali tabelle sono ovviamente contenute in memoria, e in relazione al contesto specifico in cui si colloca la presente invenzione, per ciascuna di queste e* indicato se essa e' locale (LOCAL) o globale (GLOBAL) ossia replicata in ciascuna delle memorie locali.
Lo spazio di memoria necessario per contenere tali tabelle e' allocato dal sistema supervisore all' inizializzazione del sistema.
La prima tabella 30 denominata PROC. T. E. e' sostanzialmente una lista di processi (in Fig 3 sono indicati i generici processi PROCSX, PROC#Y, PROC#Z) che sono stati creati per esecuzione nel sistema (per mezzo di primitive di sistema che nel caso di UNIX V sono la FORK e la EXEC.
Ad ogni processo, identificato da un identificatore (process ID) corrisponde un puntatore ad una regione di dati, chiamata P-REGION.
Nel la P-REGION sono contenute informazioni sullo spazio virtuale di indirizzi usato dal processo (base di impianto), ossia sulle regioni di indirizzi che lo compongono. In Fig.3 sono identificate le P-REGION 31, 32,33, connesse rispettivamente ai processi #X, #Y, #Z.
Una prima regione, denominata TEXT, e' destinata a contenere le istruzioni eseguite dal processo; una seconda regione, denominata DATA, e' destinata a contenere i dati usati e/o creati dal processo.
Una terza regione denominata STACK e' destinata a contenere informazioni transitorie usate nel corso del processo.
Una quarta o piu1 regioni (se presente/i) denominata SHM (memoria condivisa) e' destinata a contenere dati globali.
Per ognuna di queste regioni o segmenti esiste nella tabella P-REGION una struttura di dati che definisce l'indirizzo virtuale di impianto del segmento e un puntatore a una ulteriore tabella denominata REGION (in Fig.3 sono indicate le REGION 34,35,36,37).
Le tabelle PROC. T. E e P-REGION contengono informazioni che possono essere usate e verificate da piu' processi in processori diversi e che costituiscono quindi dati globali. Pertanto sono replicate in ciascuna memoria locale in un segmento di memoria condivisa del "kernel".
La tabella REGION associata a ogni segmento virtuale del processo contie ne informazioni relative alle dimensioni e al tipo del segmento, e un puntatore a una seconda tabella o lista denominata R-LIST (tabelle 38,39 di Fig.3) che definisce gli indirizzi virtuali dei gruppi di pagine costitutive del segmento virtuale in termini di "displacement" e in cui ciascun indirizzo rimanda a un'ulteriore tabella PTE (page table entry, tabelle 40,41,42,43 di Fig.3).
In questa tabella, per ogni indirizzo logico di pagina e' contenuto il corrispondente indirizzo fisico di pagina, che viene assegnato da MMMS, e altre informazioni quali la eventuale collocazione dell'informazione su disco o su file di scambio (swap) nonch?' lo stato della pagina di memoria (valida, se contiene effettivamente i dati, o invalida).
Le tabelle REGION e le tabelle R-LIST e PTE hanno carattere di informazioni specifiche del processo che descrivono e costituiscono pertanto dei dati locali, memorizzati nella sola memoria locale del processore in cui e' attivo il processo.
Come sara' visto piu' avanti, nel caso di segmenti di memoria condivisa (SHM), la tabella REGION contiene anche un puntatore che consente di passare ad una struttura globale che il sistema usa per coordinare l'uso di questi segmenti nelle diverse CPU e che costituisce un elemento essenziale della presente invenzione.
Il modo di operare convenzionale di un sistema operativo con queste strutture di dati e' il seguente:
Quando con una chiamata di sistema FORK si crea un nuovo processo in un processore, il sistema operativo aggiunge, in tabella PROC. T. E un nuovo identificatore di processo e relativo pointer, costruisce una nuova P-REGION per quel processo, una nuova REGION e una nuova R-LIST per ciascun segmento di processo, nonch?' una nuova tabella PTE in cui le pagine fisiche sono segnate come assenti.
L'effettiva allocazione di pagine fisiche al processo, la compilazione delle tabelle PTE con indirizzi di pagina fisica e la relativa validazione sono effettuate, pagina per pagina, su richiesta.
Il sistema operativo provvede anche a caricare gli eventuali riferimenti alla memoria di massa (disco) e un registro di contesto contenuto nella MMU associata al processore, mentre a tutte le "entry" di MMU si fa corrispondere un contenuto invalido. Infatti con le operazioni precedenti si e' solo riservato un certo spazio di memoria, senza riempirlo con un contenuto valido. A questo punto il processo pu?' avere inizio.
Il processore associato alla MMU cosi* predisposta comanda la lettura di una prima istruzione del segmento TEXT a un primo indirizzo virtuale che viene ricevuto da MMU.
Poich?' a questa entry corrisponde un contenuto invalido, la MMU genera un segnale di errore (Page fault) che attiva il supervisore.
Attraverso il contenuto del context register, e le tabelle concatenate gi?' menzionate il supervisore pu? identificare la causa del segnale. Quindi legge la prima pagina di testo da memoria secondaria e la carica in una pagina fisica disponibile di memoria locale, che viene fatta corrispondere all'indirizzo virtuale della prima pagina di testo.
La entry di tabella PTE corrispondente all'indirizzo virtuale di pagina viene caricata con il corrispondente indirizzo fisico di pagina e con un indicatore di pagina valida.
Il processo pu?' quindi essere riattivato e procede fino alla generazio ne di un indirizzo virtuale a cui non corrisponde un indirizzo fisico valido, causa di reinnesco del meccanismo di "page fault handling".
Va notato che tutte le operazioni sopra indicate, salvo quelle di lettura della memoria secondaria e di scrittura di tabelle globali, avvengono a livello locale di processore, senza interessare il bus di sistema. Ci?1 vale per il trattamento dei segmenti di testo, dati e stack.
Per il segmento di memoria condivisa SHM, il sistema opera in maniera diversa e innovativa in accordo con la presente invenzione.
La figura 4 rappresenta schematicamente le tabelle che vengono usate, secondo l'invenzione per la gestione di segmenti di memoria condivisa e la relativa concatenazione.
In questo caso una pluralit?* di processi listati nella tabella PROC.T.E (in figura 4 i processi PROC#I,PROC#M,PROC#N) possono condividere lo stesso segmento di memoria SHM.
Per gestire questo tipo di segmento il sistema usa una nuova tabella glo baie costituita da una parte 44 di dimensione fissa SHM-DS (per Struttura di dati di memoria condivisa) e da una parte 45 di dimensione variabi le GSD (per Descrittore di Segmento Globale).
Nella tabella SHM-DS sono depositate informazioni relative alle caratte ristiche del segmento di memoria destinato a contenere dati condivisi. In particolare si menzionano:
A)N puntatori (46,47,48,49), tanti quante sono le CPU del sistema (4 in esempio). Ogni puntatore identifica una tabella RBGION locale 50,51,52 53, specifica per CPU. Ogni tabella punta a una R-LIST locale 54. ..57. B) Informazioni relative all'utente che ha creato il segmento condiviso, gruppo di appartenenza dell'utente, permessi di accesso (chi e in che modo pu?' accedere al segmento), numero di utenti che lo stanno usando, dimensioni del segmento.
C)Un codice "key-t" che identifica la funzione di contenitore del segmen to, ossia i dati che devono essere contenuti nel segmento.
Ciascuna delle REGION locali contiene le informazioni gi?' viste nel caso dei segmenti TEXT, DATA,STACK). Inoltre contiene informazioni relative al numero di utenti della regione. Le R-LIST locali, associate al segmen to SHM, sono identiche per funzione a quel le corrispondenti ai segmenti TEXT, DATA,STACK.
La struttura del descrittore di segmento globale GSD 45 e' rappresentata in fig. 5 e comprende un'intestazione di riconoscimento HD(header) e una "entry" E1,E2..EN corrispondente a ogni indirizzo logico di pagina.
Ogni entry comprende un indirizzo reale di pagina RA corrispondente a un indirizzo logico di pagina, un bit di stato GS, che definisce se tale pagina e' globale o no, un bit di stato per ogni CPU, S0,S1,S2,S3 che definisce per ogni CPU se la pagina e' valida o meno e un indirizzo di area di "swap" SWA dove eventualmente le informazioni contenute nella pagina devono essere salvate.
La tavola GSD rimanda, attraverso SHM-DS, le REGION e le tabelle R-LIST come mostra la Fig.4, a quattro tabelle locali PTE 58,59,60,61, ciascuna delle quali e' destinata a contenere, per ogni indirizzo virtuale di pagina, un corrispondente indirizzo fisico.
Oltre alle tabelle cosi ' . considerate vi e' anche una tabella globale che e' semplicemente una lista RALIST 62 (fig. 4) di indirizzi reali usati in associazione con segmenti globali creati ed esistenti, nonch?' una tabel la 63 (KEYLIST) che ad ogni chiave di segmento globale fa corrispondere un codice identificatore di segmento condiviso o shm-id che consente di puntare direttamente alla struttura SHM-DS.
L'operazione del sistema con queste strutture di dati e' la seguente. Quando con una chiamata di sistema si crea un nuovo processo e quindi si crea una nuova struttura di dati che descrive il processo, e' anzitutto aggiornata la tabella PROC.T.E.
Se per il nuovo processo si richiede l'impiego di un segmento condiviso viene attivata una primitiva di sistema denominata shm-get. Questa verifica se un segmento condiviso con le caratteristiche e funzionalit?' richieste e definite dalla chiave esiste gi?' (controllando la KEY LIST). Se il segmento non esiste, viene costruita la struttura di dati SHM-DS (che e' una tabella globale, quindi replicata) per descrivere il nuovo segmento. Viene inoltre costruita una REGION locale per ogni CPU che descrive localmente il nuovo segmento; le REGION e la tavola SHM-DS sono collegate tra loro da puntatori.
Inoltre viene allocata come tabella globale (quindi replicata nella memo ria locale di tutte le CPU) una tabella GSD, a cui viene assegnata la dovuta intestazione (che corrisponde alla chiave o shm-id del segmento). Le dimensioni della tabella sono definite in funzione della dimensione del segmento che deve descrivere.
In questa fase la tabella GSD e' vuota, eccetto che per l'intestazione. La sua inizializzazione o compilazione avviene in una fase successiva. Si deve inoltre notare che non viene allocato alcuno spazio di memoria, all'infuori da quello richiesto per le tabelle locali REGION e per le tabelle globali SHM-DS e GSD.
La KEYLIST viene aggiornata con la nuova associazione KEY/shm-id, relati va al segmento condiviso creato.
L'uso del segmento cosi' creato nominalmente, avviene attraverso una primitiva "shm-at" che invoca la connessione del segmento a un processo utente. Con questa primitiva, la entry di PROC.T.E del processo richiedente viene connessa (in modo convenzionale attraverso la P-RBGION) alla REGION che descrive localmente il segmento condiviso.
Questo significa che se il processo richiedente I viene eseguito sulla CPUO, sara' collegato alla REGION 50, costruita sulla CPUO, mentre il processo richiedente N, eseguito sulla CPU1, sara' collegato alla REGION 51, costruita sulla CPU1 (Fig.4). Entrambe le REGION 50,51 sono col legate alla stessa tabella SHM-DS 44.
Inoltre, la prima, volta che in una CPU viene eseguita la primitiva shm-at per la connessione del segmento, vengono costruite nella memoria locale di tutte le CPU le tabelle R-LIST (54,55,56,57 di Fig.4) e le tabelle PTE (58,59,60,61 di Fig.4).
E' inoltre verificata, in tutte le CPU, la disponibilit?' di spazio di memoria per l'allocazione fisica del segmento condiviso. Verificato che lo spazio esiste, come spazio libero di memoria di lavoro e/o come spazio di memoria di lavoro occupato da informazioni che possono essere "swappate" e quindi liberabile, questo spazio viene prenotato in termini di numero di pagine necessarie (ma non al locato).
Poi il segmento GSD e' compilato con una serie di indirizzi reali scelti tra quelli non gi?' usati, sulla base della lista RALIST, che viene aggiornata.
L'allocazione di spazio fisico di memoria avviene solo su richiesta per effetto del meccanismo di "page fault" e inizialmente le tabelle R-LIST e PTE collegate alle REGION sono caricate con una informazione che definisce le diverse pagine fisiche come assenti (nessun indirizzo di pagina fisica e' assegnato).
Successivamente, man mano che pagine fisiche vengono allocate su richiesta per contenere informazioni identificate da indirizzi virtuali di pagina e dai corrispondenti indirizzi reali, e' definita la corrispondenza tra indirizzo reale di pagina e indirizzo fisico.
Gli indirizzi fisici cosi' assegnati vengono poi scritti nella memoria di traduzione 8B per la conversione locale di indirizzi reali in indiriz zi fisici.
Nella tabella GSD, di descrizione del segmento le pagine sono poste tutte assenti (bit S0,S1,S2,S3, invalidi) e il bit di stato globale o locale non e' significativo.
Nella tabella REGION relativa alla CPU in cui viene attivata la prima operazione di connessione del segmento condiviso, il campo riservato ad indicare il numero di utenti del segmento condiviso e inizialmente vuoto, viene incrementato di una unita'.
Lo stesso avviene per un campo della struttura SHM-DS che ha la stessa funzione a livello di sistema.
Si ricorda che la primitiva shm-at connette il segmento condiviso a un processo ma non alloca spazio fisico di memoria al processo. L'allocazio ne e' fatta su richiesta, usando il meccanismo di page fault, opportunamente modificato, rispetto alla consuetudine, come sara' visto poi.
Prima di considerare questo aspetto e' opportuno prendere in esame il caso di richiesta di creazione di un segmento condiviso che esiste gi?' e la sua connessione a un altro processo.
A)Se un generico processo richiede, con la primitiva shm-get, la creazione di un segmento condiviso e questo esiste gi? ed e' definito dalla stessa KEY e dallo stesso SHM-ID, la primitiva non fa altro che fornire le informazioni che consentono al processo di effettuarne la connessione, cio? di eseguire la primitiva shm-at. segmento.
B)Se un generico processo richiede, con la primitiva shm-at, la connessione di un segmento gi? creato e gi? connesso a un altro processo, il sistema non fa altro che scegliere, nella struttura SHM-DS, l'indirizzo della REGION nella stessa CPU in cui opera il processo e collega re la struttura P-REGION del processo a questa REGION. Poi viene incre mentato di uno il campo della RBGION che definisce il numero di utenti del segmento, nonch? il corrispondente campo della struttura SHM-DS. Ci? comporta che piu' processi operanti sullo stesso segmento condivi so possono usare indirizzi virtuali diversi per riferirsi al segmento poich?' l'indirizzo virtuale di impianto e' depositato nella P-REGION, che e' una per processo, mentre diverse P-REGION puntano alla stessa REGION.
Si pu?' ora considerare come il meccanismo di errore di pagina, quindi di MMMS opera per allocare delle pagine nel caso di pagine condivise. La prima volta che un programma attivo in una CPU (per esempio la CPUO) cerca di accedere (con un indirizzo virtuale) a una pagina di segmento condiviso (questa operazione e' certamente preceduta dalle primitive shm-get e shm-at che generano nella memoria locale di tutte le CPU le tabelle REGION, R-LIST e PTE), la corrispondente MMU fornisce un segnale di errore di pagina.
E? quindi attivato il sistema di gestione memoria MMMS, che tramite le tabelle gi? descritte, in particolare la GSD, riesce a verificare che la pagina non esiste ancora in nessuna delle memorie locali, (bit S0,S1, S2,S3 invalidi in tabella GSD).
Il sistema MMMS provvede quindi a identificare una pagina fisica libera e a caricare nella tabella PIE il corrispondente indirizzo fisico.
Provvede inoltre a validare lo stato di pagina, sia nella tabella PTE sia nella tabella GSD (ponendo a 1 il corrispondente bit SO.
Infine il contenuto della MMU viene aggiornato con la corrispondenza indirizzo vi rtuale-indi rizzo fisico.
Poich? in questo caso la pagina e' valida solo in una CPU (la CPUO), essa e' trattata come locale e nella MMU e' scritto il corrispondente indi rizzo fisi co.
In questo indirizzo il bit 28 che caratterizza l'informazione come globale o locale e' posto a 0.
Le successive operazioni di accesso alla stessa pagina, da parte dello stesso programma avvengono quindi senza attivazione del meccanismo di page fault.
Se un altro programma, attivo nella stessa CPU, cerca successivamente di accedere alla stessa pagina (nel rispetto delle condizioni di accesso, per esempio di sola lettura), l'accesso avviene normalmente senza l'attivazione del meccanismo di page fault.
Se ora un programma attivo in una CPU diversa da quella prima considerata (la CPUO) cerca di accedere alla stessa pagina di segmento condiviso, La corrispondente MMU genera un segnale di errore di pagina.
Viene quindi attivato (nella nuova CPU) definita per il seguito come CPU richiedente, il sistema MMMS che attraverso le tabelle gi? descritte riesce a verificare che la pagina e' gi? presente nella memoria locale di un'altra CPU (la CPUO definita per il seguito come CPU proprietaria). Provvede quindi a richiedere che la pagina venga convertita da locale in globale, ossia venga replicata in tutte le memorie locali.
Per fare questo la CPU richiedente istruisce tutte le altre CPU e se stessa, ma non la CPU propritaria, perche' ciascuna allochi una pagina fisica libera a cui viene assegnato un prefissato indirizzo reale scelto tra quelli gi?' prenotati e presenti nella tabella GSD.
Ogni CPU diversa dalla CPU proprietaria, per mezzo del suo sistema MMMS identifica una pagina fisica libera di memoria locale e carica il corrispondente indirizzo fisico nella memoria di traduzione 8B associata alla propria memoria locale, all'indirizzo di memoria di traduzione definito dall'indirizzo reale assegnato. Lo stato di questa pagina, nelle diverse tabelle che la identificano e* caratterizzato come invalido, per evitare che possa essere usata.
Eseguite queste operazioni ogni CPU diversa dalla CPU proprietaria, provvede a notificare alla CPU richiedente il loro completamento.
La CPU richiedente, ricevuta conferma che e' stata riservata una pagina fisica per la scrittura globale invia una notifica alla CPU proprietaria perche' questa sposti la pagina richiesta nello spazio globale.
La CPU proprietaria effettua allora le seguenti operazioni:
- aggiornamento delle tavole di MMU (sostituendo l'indirizzo fisico di pagina con quello reale corrispondente, in cui il bit 28 e' a livello 1 e caratterizza la pagina come globale.
- caricamento della propria memoria di traduzione 8B alla "entry" definita dall'indirizzo reale di pagina, con l'indirizzo fisico, ~ esecuzione di una successione di operazioni di lettura e di scrittura globale in modo da ricopiare localmente la pagina e al tempo stesso replicarla nelle memorie locali delle altre CPU.
- aggiornamento nella tavola GSD e per la pagina replicata del valore del bit GS che viene posto a livello indicativo di pagina globale. Eseguite queste operazioni, la CPU proprietaria notifica alla CPU richiedente che la pagina e' stata ricopiata, che pu? essere validata e che il processo utente pu?' essere riattivato.
La CPU richiedente, alla ricezione di questo messagqio, aggiorna il bit di stato nella tabella GSD e valida la pagina nella propria memoria locale, facendo ripartire il programma che aveva richiesto la pagina. Le altre CPU, diverse da proprietaria e da richiedente, non aggiornano il relativo bit di stato nella tabella GSD, lasciando invalida la pagina replicata nella propria memoria locale, anche se questa e' presente. Per il seguito, qualunque operazione di modifica di dati nella pagina globale, eseguita dalla CPU proprietaria o richiedente, e' eseguita e replicata in tutte le memorie locali.
Se una terza CPU, richiede per un generico processo, e naturalmente dopo che e' stata effettuata la connessione del segmento condiviso con la primitiva shm-at, l'accesso alla pagina condivisa, il meccanismo di page fault riconosce, attraverso l'esame del la tabella GSD che la pagina e' globale, quindi non fa altro che vali da ria, aggiornando il corrispondente bit di stato associato alla CPU.
Se un altro processo, sempre nella stessa terza CPU richiede accesso alla stessa pagina, l'accesso avviene senza attivazione del meccanismo di page fault.
Si pu?' quindi osservare che un segmento condiviso o globale, nel corso del suo uso da parte di piu' processi, risulta costituito da una plurali ta* di pagine fisiche, alcune delle quali sono globali, quindi replicate in tutte le memorie locali, altre delle quali sono locali e presenti solo in una delle memorie locali, ma non necessariamente la stessa memoria locale.
La situazione e' rappresentata a titolo esemplificativo dalla Fig.6 che mostra lo stato della tabella GSD compilata per descrivere lo stato di un segmento virtuale costituito da pagine definite dagli indirizzi reali 1,2, 3 ,4, 5.
Le pagine di indirizzo reale 1,2,3 sono globali (GS=1), replicate nella memoria locale di tutte le CPUO, 1,2,3 e usate, quindi valide, da uno o piu' processi attivi nella CPU1,2,3 nella CPUO, 1,2 e nella CPU0,1 rispettivamente.
La pagina di indirizzo reale 4 e' locale e presente nella sola memoria locale della CPU2 (GS=0,S2=1).
La pagina di indirizzo reale 5 e' locale e presente nella sola memoria locale della CPUO (GS=0,S0=1).
In questo modo. le pagine di indirizzo reale 4 e 5 sono trattate come locali, occupano spazio fisico di memoria in una sola memoria locale e la loro modifica non richiede operazioni di accesso al bus di sistema. Avendo illustrato come una pagina di un segmento condiviso pu? essere convertita da pagina locale a pagina globale din?micamente ossia a "run time", si pu? ora considerare come avviene l?operazione opposta.
Vi sono nei sistemi operativi, due comandi che consentono di uscire o terminare un processo o di sconnettere un segmento da un processo e sono i comandi exit e detach.
Il primo e' di natura implicita: alla fine del processo il sistema operativo determina l'uscita del processo. Il secondo e' un comando esplicito di programma, che controlla la sconnessione di un segmento. In particolare nei sistemi che prevedono segmenti condivisi esiste il comando specifico shm-dt che controlla la sconnessione di un segmento condivi so.
Quando in una generica CPUN un processo finisce, il comando exit o shm-dt decrementa di uno il numero di utenti contenuto nella struttura SHM-DS e nel la tabella REGION associata alla CPUN e verifica se nella tabella REGION il numero di utenti del segmento si e' ridotto a zero. Se vi sono ancora utenti la tabella GSD non e' modificata.
Se per la CPUN il numero di utenti si riduce a zero, la tabella GSD e' aggiornata invalidando il bit di stato, associato alla CPUN per tutte e le sole pagine che risultano globali (GS=1).
Le pagine usate solo localmente vengono lasciate valide, anche se nella CPUN nessun processo ne fa piu' uso, perche' sono comunque pagine appartenenti a un segmento condiviso e potenzialmente utilizzabili da processi in altre CPU. Viene inoltre verificato, se per effetto di questo aggiornamento le pagine gi?1 globali del segmento restano in tutto o in parte valide per una sola CPU, denominata CPU ricevente.
Se questa condizione non e' verificata, le pagine del segmento condiviso continuano ad essere trattate come globali. In particolare, se viene creato nella CPUN un nuovo processo che richiede le stesse pagine dello stesso segmento condiviso, queste sono gi?' disponibili (lo stato di pagina nella tabella locale PTE non e* stato modificato).
Se la condizione e' verificata per almeno una pagina. la CPUN segnala alla CPU ricevente che questa e' l'ultima a usare una o piu' pagine del segmento condiviso e che tali pagine vanno convertite in locali.
Pertanto la CPU ricevente accede a sua volta alla tabella GSD per modificare il bit GS (indicatore di pagina globale) da globale a locale per tutte le pagine del segmento che sono di suo uso esclusivo.
Inoltre sostituisce nelle tavole di MMU l'indirizzo reale, per le pagine del segmento ivi presenti, con il corrispondente indirizzo fisico, ottenuto dalla memoria di traduzione 8B, associata alla memoria locale della stessa CPU, e segnala alle altre CPU che possono liberare la o le pagine fisiche che avevano allocato per quella o quelle pagine globali.
In questo modo alcune o anche tutte le pagine del segmento condiviso prima globali e replicate, cessano di essere trattate come tali e ritornano ad essere trattate e indirizzate come locali di una CPU (anche se potenzialmente condivise da piu' processi nella stessa CPU).
Nelle CPU per cui tali pagine sono state invalidate, lo spazio fisico da queste occupato in memoria si rende disponibile per altri usi.
Quando nell'ultima CPU che usa pagine del segmento condiviso, l'ultimo processo che usa il segmento condiviso ha termine, il segmento risulta costituito da sole pagine locali che possono risultare distribuite in CPU differenti.
La liberazione di queste pagine locali e la sconnessione del segmento condiviso avvengono solo con una richiesta esplicita di RMID (remove shm-identif ier) .
Ci?' significa che tutte le strutture globali e locali create per descri vere il segmento condiviso (SHM,DS,REGION,R-LIST,PTE,GSD) e relativi puntatori di connessione, vengono cancellati, previo salvataggio in area di swap se necessario, dei contenuti del segmento.
Per rendere piu' evidenti i vantaggi e il modo in cui si passa da uno stato di pagine globali a uno stato di pagine locali di segmento condivi so, le figure 7,8,9 offrono un esempio specifico.
Partendo dallo stato descritto nella Figura 6 rappresentativo di una condizione al tempo T0 si pu?' supporre che a un tempo T1 successivo, nella CPUO, termini l'ultimo processo che usa il segmento.
Allora il bit SO relativo alle pagine di indirizzo reale 2 e 3 viene posto a 0 (Figura 7). La pagina di indirizzo reale 5 era gi?1 locale e quindi nella tabella GSD il bit SO associato viene Lasciato in stato valido e la pagina rimane disponibile.
La pagina di indirizzo reale 3 era globale ma usata solo nella CPUO e CPU1. Diventa quindi locale della CPU1 (il bit GS viene posto a 0) e viene liberata in tutte le CPU eccetto la CPU1 , rendendosi disponibile per altro uso.
La pagina di indirizzo reale 2, gi?' usata dalle CPU0,1,2 era globale e continua a restare globale.
Lo spazio fisico di memoria occupato da questa pagina nella CPUO continua ad essere occupato e non si rende disponibile.
A un istante T2 successivo a T1 (Fig. 8) anche i processi attivi nella CPU1 che usano il segmento, hanno termine.
Allora anche la pagina di indirizzo reale 2, che era globale viene convertita in locale.
A un istante T3 successivo a T1 (Fig. 9) anche i processi attivi nella CPU2, che usano il segmento hanno termine.
La pagina di indirizzo reale 1, che era globale, e' convertita in locale ed e' l'unica ancora in uso.
La maggior parte dello spazio fisico di memoria precedentemente occupato per contenere le diverse pagine del segmento usate concorrentemente e' quindi reso disponibile, prima che il segmento condiviso cessi di essere usato, ossia a un generico istante T4 in cui anche i processi nella CPU3 hanno termine e il segmento condiviso pu?' essere sconnesso e rimosso da memoria.
Inoltre la maggior parte del le pagine, anche se usate in CPU diverse, sono, in parte e per parte del tempo, trattate come locali senza incorrere negli oneri risultanti dal loro trattamento come globali.
Da quanto precede appare evidente che tutte le operazioni di allocazione e deal locazione dinamica di dati globali sono eseguite nelle diverse CPU dai processori ivi contenuti che opportunamente control lati da sequenze di istruzioni, costituiscono dei mezzi logici che unitamente a tabelle di memoria, tra cui in particolare quella definita come GSD, e mediante l'esame del contenuto di tale tabella consentono l'esecuzione delle diverse fasi operative descritte.
E' chiaro inoltre che la descrizione che precede riguarda solo una forma di realizzazione preferita di sistema e di metodo in accordo con l'invenzione e che molte varianti possono essere apportate.
In particolare l'uso di memorie di traduzione per svincolare l'allocazio ne di pagine di dati globali in pagine fisiche di egual indirizzo nelle diverse memorie locali, per quanto preferible e vantaggioso non e' indispensabile. In questo caso si perdono i vantaggi derivanti dal l' invenzio ne in termini di riduzione di spazio di memoria occupata da dati globali replicati. Tuttavia si salvano i vantaggi derivanti dalla riduzione del traffico sul bus di sistema per operazioni di scrittura replicata.
Anche le funzioni svolte dalle diverse primitive nella generazione e modifica delle tabelle di descrizione dei diversi processi, e nella generazione dei messagi tra le diverse CPU pu?' essere assegnata diversamente, in funzione di eventuali deroghe alla compatibilita' del sistema operativo incorporante le modifiche richieste dall'invenzione con sistemi operativi standardizzati.

Claims (3)

  1. RIVENDICAZIONI 1) Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali, comprendente - un bus di sistema - una pluralit? di CPU, ciascuna comprendente un processore, una memoria locale associata e una unita' di gestione di memoria (MMU) associata a detto processore e a detta memoria locale e una unita1 di interfaccia connessa a detto bus di sistema per consentire lo scambio di informazioni tra dette CPU attraverso detto bus di sistema, caratterizzato da ci? che comprende: - una tabella di memoria (GSD) replicata nella memoria locale di ognuna di dette CPU, e a cui si accede con codici correlati a indirizzi virtuali di pagina di segmenti condivisi e contenente informazioni che per ogni indirizzo virtuale di pagina definiscono se i dati appartenenti a detta pagina virtuale sono dati globali, ossia dati usati da processi eseguiti in piu' CPU di detto sistema, o dati loca li, ossia dati usati da processi eseguiti in una sola CPU di detto sistema, dette informazioni definendo inoltre in quali di dette CPU detti dati globali o locali sono usati e memorizzati nella memoria locale associata, - primi mezzi logici in una qualsiasi CPUX tra dette CPU, per eseguire una procedura di errore di pagina che, in risposta a una indicazione di pagina assente fornita dall'unita' di gestione memoria (MMU) asso ciata, indirizzano detta tabella di memoria (GSD) nella memoria loca le associata a detta CPUX per determinare se detta pagina assente e' usata in un'altra CPUY di dette CPU e memorizzata nella memoria loca le associata e solo in questa come pagina di dati locali e se questo e' il caso richiedono a tutte le CPU diverse da CPUY di allocare una pagina fisica di memoria locale associata per memorizzare una pagina di dati globali, e richiedono a detta CPUY la replicazione di detta pagina, memorizzata nella memoria locale di dette CPUY come pagina di dati locali, nella memoria locale di tutte dette CPU, - secondi mezzi logici in detta CPUY che in risposta a detta richiesta da detta CPUX copiano detta pagina assente nella memoria locale di tutte dette CPU e modificano l'informazione contenuta in detta tabel la GSD per indicare che detta pagina replicata e' globale.
  2. 2) Si sterna come a Riv 1, comprendente terzi mezzi logici in una CPUZ di dette CPU per riconoscere, al termine di un processo eseguito in detta CPUZ, che una pagina di dati globali non e' piu1 usata in detta CPUZ ma e' usata da almeno altre due di dette CPU e per modificare l'informazione contenuta in detta tabella GSD cosi* da indicare che detta pagina non piu' usata in detta CPUZ e' invalida in detta CPUZ.
  3. 3) Si stema come a riv. 1, comprendente terzi mezzi logici in una CPUZ di dette CPU per riconoscere, al termine di un processo eseguito in detta CPUZ, che una pagina di dati globali non e' piu' usata in detta CPUZ ed e' usata esclusivamente da una CPUM di dette CPU, per modificare l'informazione contenuta in detta tabel la GDS cosi' da indicare che detta pagina non piu' usata in detta CPUZ e' invalida in detta CPUZ e per richiedere a detta CPUM di modificare l'informazione contenuta in detta tabella GDS cosi' da indicare che detta pagina usata esclusivamente da detta CPUM e' una pagina di dati locali che non richiede replicazione nella memoria locale delle CPU diverse da CPUM. 4)Sistema come a riv. 1, in cui detta tabella GSD contiene per ogni indirizzo virtuale di pagina definita come pagina di dati globali da detta tabella, un codice di indirizzo di pagina, identificato come indirizzo reale e in cui ciscuna di dette CPU comprende mezzi di traduzione di indirizzi reali in indirizzi fisici, secondo criteri di traduzione autonomi per ogni CPU, e in cui ciascuna di dette unita' di gestione memoria MMU, per indirizzare dati appartenenti a pagine identificate da detta tabella come pagine di dati globali genera un indirizzo avente un primo campo costituito da detto indirizzo reale e un secondo campo che caratterizza detto indirizzo come relativo a un dato globale, detti mezzi di traduzione provvedendo alla traduzione di detto indiriz zo reale in indirizzo fisico al riconoscimento di detto secondo campo. 5)Metodo per la allocazione/deallocazione dinamica di dati globali replicati in un sistema multiprocessore comprendente: - un bus di sistema - una pluralit? di CPU, ciascuna comprendente un processore, una memoria locale associata e una unita* di gestione d? memoria (MMU) associata a detto processore e a detta memoria locale e una unita' di interfaccia connessa a detto bus di sistema per consentire lo scambio di informazioni tra dette CPU, attraverso detto bus di sistema , detto metodo essendo caratterizzato da ci?1 che comprende i seguenti passi : - generare per ogni segmento di dati potenzialmente condivisi da piu' processi, una tavola GSD che per ogni pagina del segmento potenzialmente condiviso, contiene una informazione che definisce se la pagina associata e' globale, ovvero usata da processi operanti in CPU diverse, o locale ovvero usata da uno o piu1 processi operanti nella stessa CPU, detta informazione definendo inoltre in quali di dette CPU detta pagina globale o locale e' usata e memorizzata nella memoria locale associata, - verificare per mezzo di detta tavola GSD se una pagina di dati potenzialmente condivisi richiesta da un processo attivo in una CPUX tra dette CPU e' usata in un altro processo creato in un'altra CPUY e memorizzata nella memoria locale di detta CPUY e in caso affermativo - richiedere a tutte le CPU diverse dalla CPUY di allocare una pagina fisica di memoria locale associata per memorizzare una pagina di dati globali, - richiedere a detta CPUY la replicazione di detta pagina richiesta da detto processo attivo, e memorizzata nella memoria locale di detta CPUY, nella memoria locale di tutte dette CPU, diverse da detta CPUY, - Eseguire, sotto il controllo di detta CPUY detta replicazione, - modificare, sotto il controllo di detta CPUY l'informazione contenuta in detta tabella GSD e associata alla pagina che e' stata replicata, per indicare che detta pagina e' globale. 6)Metodo come a riv. 5, comprendente gli ulteriori passi di: - riconoscere alla terminazione di un processo eseguito in una CPUZ tra dette CPU, se una pagina di dati globali gi? usata in detto processo non e' piu' usata in detta CPUZ ma e? usata in almeno altre due CPU, - modificare nel caso affermativo, l'informazione contenuta in detta tabella GDS per indicare che detta pagina, non piu' usata, in detta CPUZ e' invalida in detta CPUZ. 7)Metodo come a riv. 6 comprendente gli ulteriori passi di: - riconoscere alla terminazione di un processo eseguito in una CPUZ tra dette CPU, se una pagina di dati globali, gi? usata in detto processo non e' piu' usata in detta CPUZ ed e' usata esclusivamente in una CPUM di dette CPU; - modificare nel caso affermativo, l'informazione contenuta in detta tabella GDS per indicare che detta pagina e' invalida in detta CPUZ, - richiedere da parte di detta CPUZ, a detta CPUM di modificare l'informazione contenuta in detta tabella GDS per indicare che detta pagina usata esclusivamente in detta CPUM e' una pagina locale, che non richiede replicazione nella memoria locale delle CPU diverse da CPUM.
IT22593A 1989-12-04 1989-12-04 Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali IT1239122B (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT22593A IT1239122B (it) 1989-12-04 1989-12-04 Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali
US07/614,804 US5247673A (en) 1989-12-04 1990-11-16 Multiprocessor system having distributed shared resources and dynamic global data replication
DE69019925T DE69019925T2 (de) 1989-12-04 1990-11-29 Multiprozessorsystem mit verteilten gemeinsamen Betriebsmitteln und mit Vervielfältigung von globalen Daten.
EP90122832A EP0431467B1 (en) 1989-12-04 1990-11-29 Multiprocessor system having distributed shared resources and dynamic global data replication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT22593A IT1239122B (it) 1989-12-04 1989-12-04 Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali

Publications (3)

Publication Number Publication Date
IT8922593A0 IT8922593A0 (it) 1989-12-04
IT8922593A1 true IT8922593A1 (it) 1991-06-04
IT1239122B IT1239122B (it) 1993-09-28

Family

ID=11198229

Family Applications (1)

Application Number Title Priority Date Filing Date
IT22593A IT1239122B (it) 1989-12-04 1989-12-04 Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali

Country Status (4)

Country Link
US (1) US5247673A (it)
EP (1) EP0431467B1 (it)
DE (1) DE69019925T2 (it)
IT (1) IT1239122B (it)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108473A (ja) * 1991-03-20 1993-04-30 Hitachi Ltd デ−タ処理システム
US5446856A (en) * 1991-04-29 1995-08-29 Intel Corporation Circuitry and method for addressing global array elements in a distributed memory, multiple processor computer
US5584017A (en) * 1991-12-19 1996-12-10 Intel Corporation Cache control which inhibits snoop cycles if processor accessing memory is the only processor allowed to cache the memory location
JP2974526B2 (ja) * 1992-12-18 1999-11-10 富士通株式会社 データ転送処理方法及びデータ転送処理装置
SE515344C2 (sv) * 1994-02-08 2001-07-16 Ericsson Telefon Ab L M Distribuerat databassystem
EP0678812A1 (en) * 1994-04-20 1995-10-25 Microsoft Corporation Replication verification
US5717926A (en) * 1995-02-28 1998-02-10 International Business Machines Corporation Efficient forking of a process
WO1997030399A1 (en) 1996-02-20 1997-08-21 Intergraph Corporation High-availability super server
GB9604987D0 (en) * 1996-03-08 1996-05-08 Ibm Data management system and method for replicated data
US6412017B1 (en) 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
US6049809A (en) * 1996-10-30 2000-04-11 Microsoft Corporation Replication optimization system and method
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US7136903B1 (en) 1996-11-22 2006-11-14 Mangosoft Intellectual Property, Inc. Internet-based shared file service with native PC client access and semantics and distributed access control
US6647393B1 (en) * 1996-11-22 2003-11-11 Mangosoft Corporation Dynamic directory service
US6167437A (en) * 1997-09-02 2000-12-26 Silicon Graphics, Inc. Method, system, and computer program product for page replication in a non-uniform memory access system
US6240501B1 (en) 1997-09-05 2001-05-29 Sun Microsystems, Inc. Cache-less address translation
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6249802B1 (en) 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6148379A (en) * 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
US7756830B1 (en) 1999-03-31 2010-07-13 International Business Machines Corporation Error detection protocol
US6711595B1 (en) 2000-05-09 2004-03-23 Openwave Systems Inc. Method and apparatus for sharing standard template library objects among processes
US6430659B1 (en) * 2000-09-22 2002-08-06 International Business Machines Corporation Method and means for increasing performance of multiprocessor computer systems by reducing accesses to global memory locations through the use of quanta
US20020161452A1 (en) * 2001-04-25 2002-10-31 Peltier Michael G. Hierarchical collective memory architecture for multiple processors and method therefor
US6950846B2 (en) * 2001-06-27 2005-09-27 International Business Machines Corporation Providing a globally consistent desired group of reachable nodes
US7302692B2 (en) 2002-05-31 2007-11-27 International Business Machines Corporation Locally providing globally consistent information to communications layers
US7082600B1 (en) 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
US7086048B1 (en) * 2002-11-04 2006-08-01 Savaje Technologies, Inc. Method and apparatus for combining operating system resource data and application program resource data in a shared object
US8527454B2 (en) 2007-08-29 2013-09-03 Emc Corporation Data replication using a shared resource
US20090077777A1 (en) * 2007-09-24 2009-03-26 Horowitz Michael S Looking good fashion clip
RU2583741C1 (ru) * 2015-01-26 2016-05-10 Открытое акционерное общество "Концерн "Гранит-Электрон" Многопроцессорная корабельная вычислительная система
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
WO2018148923A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Application and system fast launch by virtual address area container
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
US4620276A (en) * 1983-06-02 1986-10-28 International Business Machines Corporation Method and apparatus for asynchronous processing of dynamic replication messages
GB8711663D0 (en) * 1987-05-18 1987-06-24 Singer Link Miles Ltd Multiprocessing architecture
IT1223142B (it) * 1987-11-17 1990-09-12 Honeywell Bull Spa Sistema multiprocessore di elaborazione con multiplazione di dati globali

Also Published As

Publication number Publication date
DE69019925T2 (de) 1995-12-14
IT8922593A0 (it) 1989-12-04
IT1239122B (it) 1993-09-28
EP0431467A1 (en) 1991-06-12
EP0431467B1 (en) 1995-06-07
US5247673A (en) 1993-09-21
DE69019925D1 (de) 1995-07-13

Similar Documents

Publication Publication Date Title
IT8922593A1 (it) Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali
EP0447736A1 (en) Multiprocessor system having distributed shared resources and dynamic and selective global data replication and method therefor
US7124410B2 (en) Distributed allocation of system hardware resources for multiprocessor systems
CA2414438C (en) System and method for semaphore and atomic operation management in a multiprocessor
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US6907494B2 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
JPH0797363B2 (ja) 多重階層レベルマルチプロセツサ装置
EP0497600B1 (en) Memory access method and apparatus
US7581054B2 (en) Data processing system
JPS60160463A (ja) プロセツサシステム
US20070150665A1 (en) Propagating data using mirrored lock caches
US6904490B2 (en) Method and system of managing virtualized physical memory in a multi-processor system
US10430327B2 (en) Virtual machine based huge page balloon support
JP2004506265A (ja) 分散処理システムにおけるロックの実行
JP5439808B2 (ja) 複数バスを有するシステムlsi
US5440708A (en) Microprocessor and storage management system having said microprocessor
US20030229721A1 (en) Address virtualization of a multi-partitionable machine
JPH01298457A (ja) コンピュータシステム
JP3251903B2 (ja) プロセッサ・データをバースト転送する方法及びコンピュータ・システム
JP2005346582A (ja) システムlsi及び画像処理装置
JP2008123333A5 (it)
JPH06187227A (ja) 記憶装置とメモリ管理方法
JPS62276663A (ja) プログラム転送方法
JPS59140566A (ja) 情報処理装置

Legal Events

Date Code Title Description
0001 Granted