SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Architetture parallele

                                         Giovanni Erbacci - g.erbacci@cineca.it
                         Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie




                                          1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008




Architetture parallele

   Argomenti
   Il modello di von Neumann
   I primordi del parallelismo
   Verso il parallelismo effettivo
   Pipelining
   Classificazione di Flynn
   Architetture vettoriali
   Architetture Parallele




                                                                  Giovanni Erbacci                1




                                             9
Architetture parallele


Modello di von Neumann
                                 Calcolatore Convenzionale

                     Controllo



    Input                Memoria                 Output



                   Unità Aritm.
                     Logica
                         Le istruzioni vengono processate sequenzialmente:
                           1    un istruzione viene caricata dalla memoria (fetch) e decodificata
                           2    vengono calcolati gli indirizzi degli operandi;
                           3    vengono prelevati gli operandi dalla memoria;
                           4    viene eseguita l'istruzione;
                           5   il risultato viene scritto in memoria (store).


                                                                                Giovanni Erbacci         2




Architetture parallele



Calcolatori più Veloci
                                                                  Performance




                                                                                            Processori


                                                                                                   Gap

                                                                                             Memoria




                                                                                             Tempo




                                                                                Giovanni Erbacci         3




                                                      10
Architetture parallele


  Velocità dei Componenti
     Ciclo macchina
     Si definisce ciclo macchina o clock period  l'intervallo temporale che regola la
     sincronizzazione delle operazioni in un calcolatore
     Unit temporale di base di un calcolatore (si misura in ns - 10-9 s)
     Si calcola come l inverso della frequenza di clock (misurata in MHz)
     Tutte le operazioni all interno del processore durano un multiplo di .



           CDC 6600      100   ns
           Cyber 76     27.5 ns
           IBM ES 9000      9   ns
           Cray Y-MP C90    4.1 ns
           Intel i860    20    ns
           PC Pentium    1     ns




                                                                   Giovanni Erbacci       4




Architetture parallele

   Legge di Moore




    Legge empirica che afferma che la complessità dei dispositivi (numero di transistor
        per sqare inch nei microprocessori) raddoppia ogni 18 mesi.
    Gordon Moore, co-founder di Intel, 1965
    Si stima che la legge di Moore valga ancora almeno per questo decennio.




                                                                   Giovanni Erbacci       5




                                                 11
Architetture parallele




                                     Arithmetic-
                                     Logical Unit        Control
                                         ALU              Unit

                         Dati
                         Indirizzi

                                     Memoria
                                     Centrale
                                                              Device



     Oltre alla potenza del processore, altri fattori influenzano le prestazioni degli
     elaboratori:
     - dimensione della memoria
     - larghezza di banda (bandwidth) fra memoria e processore
     - larghezza di banda verso il sistema di I/O
     - dimensione e larghezza di banda della cache
      - latenza fra processore, memoria e sistema di I/O


                                                                       Giovanni Erbacci   6




Architetture parallele


Primordi del Parallelismo
       Miglioramenti architetturali
       Memoria bit-parallel e Aritmetica bit-parallel
       Processori indipendenti per l’attività di I/O
       Memoria interleaved
       Gerarchie di memoria
       Unità funzionali multiple
       Unità funzionali segmentate
       Pipelining

       Miglioramenti software
       Multiprogrammazione e
       Look-ahead e scheduling delle istruzioni




                                                                       Giovanni Erbacci   7




                                                    12
Architetture parallele



Verso il Parallelismo effettivo

      Sistemi vettoriali
      Array processors
      Architetture sistoliche
      Very Long Instruction Word (VLIW)
      Sistemi Multiprocessore
      Sistemi Multicomputer




                                                                    Giovanni Erbacci           8




Architetture parallele



Memoria e Aritmetica Bit-parallel

   Nei primi calcolatori elettronici, i bit di una word venivano letti singolarmente dalla
       memoria
   L'aritmetica bit-parallel divenne possibile con l'introduzione delle memorie bit parallel
       (IBM 701, 1953)
   L'IBM 704 (1955) fu il primo calcolatore commerciale ad usare memoria a nuclei di ferrite.
       Consentiva:
        –   accesso bit-parallel alla memoria
        –   non volatilità
        –   velocità a costi ragionevoli.




                                                                    Giovanni Erbacci           9




                                                  13
Architetture parallele



Processori di I/O (Canali)
    Nei calcolatori della prima generazione, le
        istruzioni di I/O venivano eseguite
        dalla CPU                                                   Input         Output
    Questa inefficienza fu risolta
        introducendo processori separati per
        gestire le operazioni di I/O
                                                                      I/O Processor
    I processori di I/O (canali) ricevono le
        istruzioni di I/O dalla CPU poi
        operano in modo indipendente,
        liberando la CPU
                                                                   Memory Control Unit
                                                      CPU                                    Memory
                                                                        (Multiplexer)




                                                                      Giovanni Erbacci           10




Architetture parallele



Memoria Interleaved o banchi che possono essere acceduti
 Unità di memoria suddivisa in moduli
        simultaneamente
   Ogni banco ha la propria circuiteria di indirizzamento
   Gli indirizzi delle istruzioni e dei dati sono interleaved così si ha la possibilità di fetch in
        parallelo
   L'IBM STRETCH (1961) è stato il primo calcolatore ad avere una memoria interleaved (2
        banchi).
   Il CDC 6600 (1964) aveva una memoria suddivisa in 32 banchi indipendenti




                         Banchi di                0         1               2           3
                         memoria
                                              0000        0001      0010           1011

                                              0100        0101      0110           0111
                         indirizzo
                         contenuto            1000        1001      1010           1011




                                                                      Giovanni Erbacci           11




                                                     14
Architetture parallele



Gerarchie di Memoria

  Tempo di accesso alla memoria: indica la velocità
    con la quale si può referenziare una locazione
    di memoria
                                                                                     Registri
                                                                                     Registri
  Tempo di ciclo della memoria: indica il tempo che




                                                                                                Maggior Capacità
    deve trascorrere prima di un nuovo accesso a
    una stessa locazione di memoria                                                  Cache
                                                                                      Cache




                                                         Maggior velocità
  Negli ultimi anni questi tempi sono molto migliorati                               Memory




                                                                                                                   Minor costo
                                                                                     Memory
    rendendo possibili sistemi di memoria più veloci
    ma al tempo stesso è diminuito anche il tempo                                   Memoria
                                                                                    Memoria
    di clock del processore:
       –   IBM PC XT (1980) 4.77 MHz = 210 ns                                      Primaria
                                                                                    Primaria
           Commodity DRAM T. acc.  200 ns
       –   Pentium II (1998) 300 MHz = 3.3 ns
           Commodity DRAM T. acc.  50 ns
                                                                                    Memoria
                                                                                    Memoria
  La performance dei processori raddoppia ogni 18                                  Secondaria
                                                                                   Secondaria
     mesi mentre quella della memoria raddoppia
     circa ogni 6 anni.


                                                                            Giovanni Erbacci              12




Architetture parallele


    Gerarchie di Memoria / 1


    La capacità dei dispositivi di memoria secondaria è dell’ordine dei Gbyte
         (capacità di circa 10-100 Gbyte per singolo disco).
    La capacità della memoria centrale è dell’ordine delle Mword-Gword
         mentre la capacità della cache memory è dell’ordine dei KByte-MByte.
    Il tempo di accesso fra memoria primaria e memoria secondaria (ad
         es.dischi) è dell’ordine dei µsecondi (se si sfruttano meccanismi di
         caching su disco o su memoria primaria) o addirittura dei msecondi
         quando si accede direttamente all’informazione localizzata sul disco.
    Il tempo di accesso dalla cache memory alla memoria centrale è
         dell’ordine dei nanosecondi (1 ns = 10-9 s).




                                                                            Giovanni Erbacci              13




                                                 15
Architetture parallele


Cache Memory
   Unità di memoria di dimensioni ridotte usata come buffer per i dati che
   vengono scambiati fra la memoria centrale e il processore.




                                                                               L'instruction buffer del CDC
        – località temporale: una istruzione o un dato possono essere          6600 era costituito da 8
                              referenziati più volte                           registri di 60 bit ciascuno
                                                                               (istruzioni di 15 o 30 bit).
        – località spaziale:   quando si referenzia una locazione di           Il Cray Y-MP aveva 4
                               memoria, è molto probabile che vengano          instruction buffer di 128
                               referenziate anche le locazioni adiacenti.      parcel (16 bit) per CPU
                                                                               (istruzioni di 1, 2, o 4 parcel).
                                                                               Ogni processsore del Cray
                                                                               T3E ha una cache per le
                                                                               istruzioni di 8 KByte, una per i
                                                                               dati di 8KByte e di una di
         l'istruzione viene prelevata dalla cache anzich dalla memoria.        secondo livello di 96KByte.
         un'istruzione può essere eseguita ripetutamente senza ulteriori
         riferimenti alla memoria principale.



                                                                            Giovanni Erbacci                   14




Architetture parallele

   Cache Memory / 1


       E' demandato all'abilità del sistema far
       rientrare le istruzioni che compongono
       un kernel computazionale pesante (es.
       un loop) all’interno della cache, se                             Registri                2 ns
       queste possono esservi contenute per
                                                                        L1 On-chip              4 ns
       intero.
                                                                        L2 On-Chip              5 ns
       Lo stesso vale per i dati, ma in questo                          L3 Off-Chip           30 ns
       caso l’opera di ottimizzazione coinvolge
                                                                        Memoria              220 ns
       anche il programmatore




                                                                            Giovanni Erbacci                   15




                                                       16
Architetture parallele


   Organizzazione della Cache
   La cache è divisa in slot della stessa dimensione (linee)
   Ogni linea contiene k locazioni di memoria consecutive (es. 4 word).
   Quando è richiesto un dato dalla memoria, se questo non è già in cache,
      viene caricata dalla memoria l’intera linea di cache che lo contiene,
      sovrascrivendo così il contenuto precedente della linea.



           Memoria



                                               Cache




                                                          Giovanni Erbacci          16




Architetture parallele


Organizzazione della Cache / 1


Quando si modifica un dato memorizzando un
  nuovo valore in cache, occorre aggiornare il
  dato anche in memoria principale:
     – Cache write-back - i dati scritti nella cache vi                M
       rimangono finché la linea di cache non è
       richiesta per memorizzare altri dati quando si        P1                P2
       deve rimpiazzare la cache il dato viene
       scritto in memoria; comune nei sistemi
       mono-processore.
     – Cache write-through – i dati vengono scritti        Cache P1          Cache P2
       immediatamente nella cache e nella memoria
       principale.
Nei sistemi con più processori occorre gestire la
   coerenza della cache: per accedere a dati
   aggiornati i processori devono essere a
   conoscenza dell’attività delle cache locali


                                                          Giovanni Erbacci          17




                                              17
Architetture parallele

   Mapping

   Poiché in ogni istante temporale la cache
      può contiene solo un sotto-insieme della                         Memoria
      memoria, occorre sapere quale: si tratta
      di associare un insieme di locazioni di
      memoria ad una linea di cache
      (mapping).
   In base al mapping la cache può essere
       organizzata in uno dei seguenti modi:
        –   - Direct mapped
            - Fully associative
            - Set associative

   Il modo con cui le locazioni di memoria vengono                                         Cache
   mappate nelle linee di cache può incidere sulle
   prestazioni  dei programmi (due locazioni di
   memoria pesantemente usate possono essere
   mappate oppure no sulla stessa linea).




                                                                       Giovanni Erbacci              18




Architetture parallele


    Cache Direct Mapping
                                        1   1.9
    Con questo schema, se ad            2   725

    es. la dimensione della             3   51.9

    cache è di 8 Kbyte e la             4   -18.5

                                        5   1.7
    memoria centrale ha word
                                        6   -25.3
    di 8 Byte, la prima                …    ……
                                                               Linea   1   1.9   725      51.9     -18.5
    locazione di memoria (word       1024
                                                               Linea   2   1.7   -25.3
                                     1025
    1) viene mappata sulla                                     Linea   3
                                     1026
    linea 1, così come la            1027
                                                               Linea   4

    locazione d+1, 2d+1, 3d+1        1028
                                                               Linea   5

                                                                …..…       ……
    ecc. (dove d = N° linee *        1029
                                                               Linea 256
                                     1030
    N° word per linea).
                                      ….

                                     2048                                                        Cache
                                     2049

                                     2050



                                                     Memoria


                                                                       Giovanni Erbacci              19




                                                    18
Architetture parallele


  Cache Direct Mapping / 1
                                  Indirizzo
                                                          Contenuto
      Indica la                    0    0000   000   00    1.9
      parola                       1    0000   000   01    725
      all’interno
                                   2    0000   000   10    51.9
      della linea   Indica
                                   3    0000   000   11    -18.5
                    la
                    linea          4    0000   001   00    1.7

                                   5    0000   001   01    -25.3
                                                                        Linea   0   1.9   725      51.9   -18.5
                                   ..     ….     …   ..    ……
                                                                        Linea   1   1.7   -25.3
                                   10   0000   010   10
                                                                        Linea   2
                                   11   0000   010   11
                        Memoria




                                   12   0000   011   00                 Linea   3

                                   ..     ….     …   ..    ……           Linea   4

                                   29   0000   111   01                 Linea   5
                                   30   0000   111   10
                                                                        Linea   6
                                   31   0000   111   11
                                                                        Linea   7
                                   32   0001   000   00

                                   33   0001   000   01

                                   ..     ….     …   ..    ……           Cache
                                   62   0001   111   10                  8 linee
                                   63   0001   111   11                  4 word per linea
                                   64   0010   000   00

                                   65   0010   000   01




                                                                                Giovanni Erbacci            20




Architetture parallele


 Cache Direct Mapping / 2
    Quando si hanno riferimenti di memoria che alternativamente puntano alla stessa
       linea di cache (es. word 1, word 1025, word 1, word 1025, ripetutamente), ogni
       riferimento causa un cache miss e si deve rimpiazzare la linea appena inserita.
    Si genera parecchio lavoro aggiuntivo (overhead); questo fenomeno è detto
        thrashing.




                                                                                Giovanni Erbacci            21




                                                                   19
Architetture parallele



Cache Fully Associative
    Con questo schema, ogni locazione di memoria può essere mappata in
        qualsiasi linea di cache, senza tener conto dell’indirizzo di memoria.
    Il nome deriva dal tipo di memoria usata per costruire questo tipo di cache
        (memoria associativa).
    Quando il processore richiede un dato questo viene richiesto a tutte le
        linee di cache contemporaneamente.
    Se una linea contiene il dato, questo viene fornito, diversamente si ha un
        cache miss.
    In genere la linea usata meno recentemente (politica LRU) è destinata ad
        essere sovrascritta con il nuovo dato.
    Le cache fully associative sono costose ma garantiscono un utilizzo
        superiore se confrontate con le cache direct mapped.




                                                          Giovanni Erbacci        22




Architetture parallele



Cache Set Associative
    Si tratta praticamente di una cache direct mapped replicata in più copie
        (banchi).
    In genere si hanno 2 o 4 banchi separati di cache (two-way, four-way set
        associative).
    Con questo schema, se una locazione di memoria viene mappata sulla
        linea k, un successivo riferimento a una locazione di memoria sempre
        mappato sulla stessa linea, verrà allocato sulla linea K di un diverso
        banco.
    Una cache set associative è meno predisposta a cache thrashing rispetto
        a una cache direct mapped della stessa grandezza. Infatti una
        locazione di memoria verrà mappata in una linea che può essere scelta
        su banchi differenti.




                                                          Giovanni Erbacci        23




                                           20
Architetture parallele


 Cache Set Associative
                    1    1.9

                    2    725
       Memoria


                    3   51.9                  2 way set associative
                    4   -18.5
                                              2048 word, linee di 4 word
                    5    1.7

                    6   -25.3

                   …    ……

                 1024                                         Linea   1   66       71     33       100

                 1025     66                                  Linea   2   17

                 1026     71
                                                  Linea   1     1.9       725     51.9   -18.5
                 1027     33




                                          Cache
                                                  Linea   2     1.7       -25.3
                 1028    100
                                                  Linea   3
                 1029     17
                                                  Linea   4
                 1030
                                                  Linea   5
                  ….
                                                   …..…        ……                                Banco 2
                 2048
                                                  Linea 256
                 2049

                 2050                                                                    Banco 1




                                                                      Giovanni Erbacci             24




Architetture parallele

   Quesito
   E’ più efficiente una cache set associative a k vie oppure una chache direct
       mapping con la stessa capienza e con lo stesso numero di word per linea?
   Dare una dimostrazione della risposta data.




                                                                      Giovanni Erbacci             25




                                          21
Architetture parallele


Multiprogrammazione e Time Sharing




                                                                              Giovanni Erbacci                26




Architetture parallele


Look ahead delle Istruzioni

     Il concetto di look ahead consiste nel rendere disponibili diverse istruzioni
         decodificate e pronte per l'esecuzione, prima che vengano effettivamente
         richieste.
          –   L'IBM STRETCH è stato il primo sistema ad introdurre questa possibilità: era possibile
              prelevare le istruzioni, decodificarle, calcolare gli indirizzi degli operandi, fare il fetch
              degli operandi, diverse istruzioni in anticipo rispetto alla loro esecuzione effettiva.
          –   L'IBM 360/91 inoltre ammetteva il prefetch di un'istruzione condizionale e di alcune
              delle istruzioni successive, in modo da mantenere l'unità di esecuzione piena dopo
              ogni salto condizionale.




     Il look ahead delle istruzioni è necessario per migliorare le prestazioni nei sistemi
          con più unità funzionali.


                                                                              Giovanni Erbacci                27




                                                         22
Architetture parallele


Compilatori e Look-ahead
   Per migliorare le prestazioni i compilatori riorganizzano la sequenza delle istruzioni
      affinchè in esecuzione sfruttino il look ahead.




                                           FETCH R1, B                    FETCH R1, B

            A       B + C                 FETCH R2, C                    FETCH R2, C

            D       E + F                 ADD R1, R2                      FETCH R3, E

                                           STORE A, R1                     FETCH R4, F

                                           FETCH R3, E                    ADD R1, R2

                                           FETCH R4, F                    ADD R3, R4

                                           ADD R3, R4                     STORE A, R1

                                           STORE D, R3                    STORE D, R3




                                                                    Giovanni Erbacci        28




Architetture parallele



Unità Funzionali Multiple

           Nei calcolatori tradizionali, la CPU è costituita da un insieme di
               registri generali, da alcuni registri speciali (es. il program
               counter) e dall'unità aritmetico logica (ALU) che, una per volta,
               calcola le operazioni.
           Un primo passo verso il parallelismo consiste nel suddividere le
               funzioni dell'ALU e progettare unità indipendenti capaci di
               operare in parallelo (unità funzionali indipendenti).
           E' compito del compilatore esaminare le istruzioni e stabilire quali
               operazioni possono essere fatte in parallelo, senza alterare la
               semantica del programma.




                                                                    Giovanni Erbacci        29




                                                  23
Architetture parallele


Unità Funzionali Multiple / 1




                                                      10 Functional Units
                 Peripheral    Processors

                                   PP 0                                Add
                                   PP 1     Central                   Multiply
                                                                      Multiply
                                   PP 2
                                   PP 3     Storage                   Divide
                    12                                   24           Fixed Add
                                   PP 4                Registers
                  Peripheral       PP 5                               Increment
                  Channels         PP 6                               Increment
                                   PP 7                               Boolean
                                   PP 8                               Shift
                                   PP 9                               Branch
                                                       Instruction
                                                         Stack     Scoreboard



                    I/O Subsystem           Memory    Central Processor




                                                                Giovanni Erbacci   30




Architetture parallele


  Pipelining


    Il concetto di pipelining è analogo a quello di catena di montaggio
        dove in una linea di flusso (pipe) di stazioni di assemblaggio gli
        elementi vengono assemblati a flusso continuo.
    Idealmente tutte le stazioni di assemblaggio devono avere la
        stessa velocità di elaborazione altrimenti la stazione più lenta
        diventa il bottleneck dell'intera pipe.




                                                                Giovanni Erbacci   31




                                                 24
Architetture parallele


 Pipelining / 1

        Un task T viene scomposto in un insieme di sotto task {T1,T2,...Tk}
           legati da una relazione di dipendenza: il task Tj non può partire
           finchè tutti i sotto task precedenti {Ti , ij} non sono terminati


                   Spazio

                                                  i
                                         Tj                   j mo subtask del task i mo


                S4                                            T
                                                                  4
                                                                      1
                                                                          T
                                                                              4
                                                                                  2
                                                                                      T
                                                                                          4
                                                                                              3
                                                                                                      T
                                                                                                       4
                                                                                                           4
                                                                                                                    T
                                                                                                                      4
                                                                                                                          5
                                                                                                                                       ....
                                                                                                           5
                S3                                T
                                                      3
                                                          1
                                                              T
                                                                  3
                                                                      2
                                                                          T
                                                                              3
                                                                                  3
                                                                                      T
                                                                                          3
                                                                                              4
                                                                                                      T
                                                                                                       3
                                                                                                                              ....
                S2                   T
                                     2
                                         1
                                                  T
                                                      2
                                                          2
                                                              T
                                                                  2
                                                                      3
                                                                          T
                                                                              2
                                                                                  4
                                                                                      T
                                                                                          2
                                                                                              5
                                                                                                               ....
                S1       T
                         1
                             1
                                     T
                                     1
                                         2
                                                  T
                                                      1
                                                          3
                                                              T
                                                                  1
                                                                      4
                                                                          T
                                                                              1
                                                                                  5
                                                                                                  ....
                     0           1           2                3           4           5            6            7              8        9         10
                                                                                                                                                 Tempo(cicli)



                                                                                                                                                       Giovanni Erbacci   32




Architetture parallele

Struttura di un Processore a
Pipeline
                                 L                                L                               L                                L                   L


               INPUT                                                                                                                                       OUTPUT
                                             S1                               S2                           ....                             Sk



               C

                                              L:              latch                                       Si :            stage i mo
                                              C:              clock


    Un processore a pipeline consiste di una cascata di stages di elaborazione.
    Gli stages sono circuiti che eseguono le operazioni aritmetiche o logiche sulla
        corrente di dati che fluisce attraverso la pipe.
    Gli stages sono separati da interfacce (latches) cioè da registri veloci che
        contengono i risultati intermedi fra gli stages.
    Le informazioni fluiscono fra stages adiacenti sotto il controllo di un clock
        comune applicato a tutti i latches simultaneamente



                                                                                                                                                       Giovanni Erbacci   33




                                                                                                           25
Architetture parallele


Prestazione della Pipeline

        Sia i il delay temporale relativo all'insieme dei circuiti logici che
             compongono ciascun stage Si e sia l il delay temporale di ciascun
             latch di interfaccia.
        Il clock period (ciclo macchina) di una pipeline è definito da:
                                    = max{i, i = 1, k} + l
                                            
        Si definisce frequenza di una pipeline il reciproco del clock period:
                                           f=1/
        La pipe, una volta riempita, produce un risultato per clock period,
             indipendentemente dal numero di stages che la compongono
        Idealmente, una pipe con k stages processa n tasks in
                                        tk = k + (n-1)
            clock periods; di questi, k servono a riempire la pipe cioè a
             completare l'esecuzione del primo task (tempo di start up).




                                                                                                                                                    Giovanni Erbacci           34




Architetture parallele

  Pipeline di
  Istruzioni
                                               S1                                               S2                            S3           S4                S5


                                              Fetch                                    Decodifica                           Fetch      Esecuzione             Store
                                           istruzioni                                                                      operandi                         risultato




                    0        1        2        3        4        5        6        7   8        9        10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

               I1                                                                                                                                                       Time
                        I2
                                 I3
                                          I4
                                                   I5
                                                            I6
                                                                     I7
                                                                              I8
                                                                                           ........




                    0        1        2        3        4        5        6        7   8        9        10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

               I1                                                                                                                                                       Time
                        I2
                                 I3
                                          I4
                                               I5
                                                                                           I6
                                                                                                    I7
                                                                                                          I8
                                                                                                                ........

                                                                                                                                                    Giovanni Erbacci           35




                                                                                                                               26
Architetture parallele


  Esempio

    Il CDC 6600 aveva unit funzionali segmentate.
    Riordinando il codice si poteva sfruttare il pipelining (pipelining delle
        istruzioni scalari) in maniera efficiente.

                                              A = B*C+D*E
                                              K = W*X-Y*Z


          B*C         S1-S1+S2

          D*E                     S3-S3*S4

      (B*C)+(D*E)                                  S1-S1+S3

          W*X                                                       S5-S5*S6

          Y*Z                                                                      S7-S7*S8

       (W*X)-(Y*Z)                                                                                 S5-S5-S7




                                                                                               Tempo


                                                                                Giovanni Erbacci               36




Architetture parallele

   Esempio / 1




           B*C                      S1-S1*S2

           D*E                       S3-S3*S4

           W*X                        S5-S5*S6

            Y*Z                        S7-S7*S8

        (B*C)+(D*E)                                  S1-S1+S3

        (W*X)-(Y*Z)                                     S5-S5-S7


                                                                          Tempo




                                                                                Giovanni Erbacci               37




                                                       27
Architetture parallele

Modelli di Elaborazione



    Somma di due vettori A e B
    Elementi floating point
       Ci = Ai + Bi per i = 1, …., n
                                                                            Ai = fi x 2pi
    L’operazione di somma comporta lo svolgimento                           Bi = gi X 2ri
    di 4 azioni in sequenza:
                         confronto degli esponenti (ri - pi)
                         allineamento delle mantisse
                         addizione delle mantisse
                         normalizzazione del risultato


    Supponiamo che ogni azione duri esattamente 1 ciclo macchina


                                                                    Giovanni Erbacci        38




Architetture parallele


Elaborazione Sequenziale

                                                               A1      B1
       Elaborazione sequenziale:
       un risultato ogni 4 cicli
                                                     Tempo




                                                                      C1
                                                               A2      B2




                                                                      C2
                                                               A3      B3




                                                                      C3


                                                               ………


                                                                    Giovanni Erbacci        39




                                                     28
Architetture parallele


Elaborazione Pipelining

           Unità funzionale in pipelining
           Dopo la fase di start-up si ha un risultato per ciclo


                                                A1    B1
                                                           A2    B2
                                                                      A3    B3
                     Tempo




                                     =1                                         A4    B4
                                     =2                                                    A5        B5
                                     =3
                                     =4
                                     =5
                                     =6              C1
                                     =7                         C2
                                     =8                                    C3
                                                                                       C4
                                    ………                                                               C5




                                                                                             Giovanni Erbacci                40




Architetture parallele


Elaborazione Parallela
     Sincrona


                                           A1    B1 A2      B2   A3    B3 A4      B4   A5        B5
             Tempo




                              =1
                              =2
                              =3                                                                             Sincronizzazione
                              =4
                                                                                                              ad ogni passo
                                                 C1         C2         C3         C4         C5


                                                                 ………                                       Clock




           Con P processori si producono P risultati ogni 4 cicli




                                                                                             Giovanni Erbacci                41




                                                                      29
Architetture parallele


Elaborazione Parallela
          Asincrona



                                       A1      B1 A2       B2   A3      B3 A4        B4    A5      B5
                Tempo




                         =4
                                              C1           C2           C3           C4            C5           Sincronizzazione
                                                                                                                finale
                                                                ………



           Con P processori si producono P risultati ogni 4 cicli




                                                                                                  Giovanni Erbacci                           42




Architetture parallele


Classificazione di Flynn
     M. J. Flynn
        Very high speed computing systems, proceedings of the IEEE (1966).
        Some computer organizations and their effectiveness, IEEE Transaction on Computers.(1972).
                        The moltiplicity is taken as the maximum possible number of simultaneous operations (instructions) or operands (data)
                        being in the same phase of execution at the most constrained component of the organization




                                                                SISD, SIMD, MISD, MIMD



                                                                                                  Giovanni Erbacci                           43




                                                                     30
Architetture parallele


 Sistemi SISD
    Sistemi Sequenziali
            - Corrisponde alla classica architettura di von Neumann.
            - Sistemi scalari monoprocessore.
            - L'esecuzione delle istruzioni può essere pipelined (Cyber 76).
            - Ciascuna istruzione aritmetica inizia un'operazione aritmetica




                                     IS                       DS
                         CU                       PU                     MM


                                          CU   Control Unit
                                          PU   Processing Unit
                                          MM   Memory Module
                                          DS   Data stream
                                          IS   Instruction Stream




                                                                              Giovanni Erbacci           44




Architetture parallele


Sistemi SIMD


                                                                                           DS1
                                                                               PU1                 MM1


                                                                    IS                     DS2
                                                            CU                 PU2                 MM2

                                                                                 .                  .
                                                                                 .                  .
                                                                                 .                  .
                                                                                            DSn
                                                                               PUn                 MMn




                                                                         CU   Control Unit
                                                                         PU   Processing Unit
                                                                         MM   Memory Module
                                                                         DS   Data stream
                                                                         IS   Instruction Stream




                                                                              Giovanni Erbacci           45




                                                         31
Architetture parallele

   Sistemi MIMD


                                                     IS1                          DS1
                                              CU1                  PU1                  MM1


                                                     IS2                          DS2
                                              CU2                  PU2                  MM2

                                               .                      .                  .
                                               .                      .                  .
                                               .                      .           DSn    .
                                                     ISn
                                              CUn                  PUn                  MMn
                                                     ISn
                                                     IS2
                                                     IS1

                                                            CU Control Unit
                                                            PU   Processing Unit
                                                            MM   Memory Module
                                                            DS   Data stream
                                                            IS   Instruction Stream




                                                                     Giovanni Erbacci         46




Architetture parallele

   Calcolatori Vettoriali


    Dispongono di un set di istruzioni vettoriali che si
        aggiunge al set di istruzioni di istruzioni
        scalari.
    Le istruzioni vettoriali specificano una particolare
        operazione che deve essere eseguita su un
        determinato insieme di operandi detto vettore.
    In questo contesto un vettore è una lista ordinata
        di valori scalari.
    Le unità funzionali che eseguono istruzioni
        vettoriali sfruttano il pipelining per esegure la
        stessa operazione su tutte le coppie di
        operandi.




                                                                     Giovanni Erbacci         47




                                              32
Architetture parallele


Calcolatori Vettoriali / 1

         Organizzazione da memoria a memoria
            Le unità funzionali floating point possono comunicare
            direttamente con la memoria principale per ricevere o trasferire
            dati.
            I sistemi Cyber 205 e ETA10 adottavano questa soluzione.

         Organizzazione da registro a registro
            Le unità funzionali interfacciano i registri; occorre un set di registri
            vettoriali, ciascuno dei quali è in grado di contenere più di un
            elemento.
            Il path con la memoria viene attivato attraverso i registri.




                                                                             Giovanni Erbacci            48




Architetture parallele

   Registri Vettoriali

    Un registro vettoriale è un particolare registro in grado di contenere più dati di uno
         stesso tipo.
    si tratta di un insieme fisso di locazioni di memoria, che fa parte di una speciale
         memoria sotto il controllo utente.
    Il numero di elementi che può contenere un registro vettoriale è detto vector length.
         –   Cray Y-MP: 8 registri vettoriali di 64 elementi a 64 bit
         –   Cray C90: 8 registri vettoriali di 128 elementi a 64 bit
         –   IBM ES 9000: 16 registri vettoriali di 256 elementi a 32 bit opure 8 a 64 bit.


                                                                                   Registri   Elementi
               Registri vettoriali configurabili                                        32        256

                                                                                        64        128

                                                                                       128         64

                                                                                       256         32

                                                                                       512         16

                                                                                      1024          8




                                                                             Giovanni Erbacci            49




                                                        33
Architetture parallele

   Esempio
                                                           Unità Funzionale Add Floating Point
                         CP 0       .... B(3) B(2) B(1)
           do i = 1, N              .... C(3) C(2) C(1)
             A(i) =
                         CP 1       .... B(4) B(3) B(2)         B(1)
           B(i)+C(i)                .... C(4) C(3) C(2)         C(1)
           end do
                         CP 2       .... B(5) B(4) B(3)         B(2) B(1)
                                    .... C(5) C(4) C(3)         C(2) C(1)


        V0  V1 + V2     CP 3       .... B(6) B(5) B(4)
                                    .... C(6) C(5) C(4)
                                                                B(3) B(2) B(1)
                                                                C(3) C(2) C(1)

                         CP 4       .... B(7) B(6) B(5)         B(4) B(3) B(2) B(1)
                                    .... C(7) C(6) C(5)         C(4) C(3) C(2) C(1)

                         CP 5       .... B(8) B(7) B(6)         B(5) B(4) B(3) B(2) B(1)
                                    .... C(8) C(7) C(6)         C(5) C(4) C(3) C(2) C(1)

                         CP 6       .... B(9) B(8) B(7)         B(6) B(5) B(4) B(3) B(2) B(1)
                                    .... C(9) C(8) C(7)         C(6) C(5) C(4) C(3) C(2) C(1)

                         CP 7       .... B(10) B(9) B(8)        B(7) B(6) B(5) B(4) B(3) B(2)
                                                                                                B(1) + C(1)
                                    .... C(10) C(9) C(8)        C(7) C(6) C(5) C(4) C(3) C(2)




                                                                   Giovanni Erbacci                     50




Architetture parallele


Supercalcolatori Vettoriali




                                .




                                                                   Giovanni Erbacci                     51




                                           34
Architetture parallele


Chaining nei Calcolatori Vettoriali
                                                  S0

                                                  V0     1
                                                        ...    MOLTIPLICAZIONE
                                                        29
                                                        30
                                                        ...    27 25 23 21 19 17
                                                        128
    do i = 1, n                                                28 26 24 22 20 18

      A(i) = B(i) + C(i) * 0.5
                                                  V1
    end do                                               1
                                                        ...
                                                        15
                                   MEMORIA              16         SOMMA
                                                        ...
                                                        128
                                                               13 11   9   7   5   3
                                                               14 12 10    8   6   4
                                                  V2     1
                                                        ...
                                                        15
                                                        16
                                                        ...
                                                        128

                                                   V3
                                                         1
                                                         2
                                                        ...
                                                        14
                                                        ...
                                                        128




                                                              Giovanni Erbacci         52




Architetture parallele

   Array Processors

       Un array processor è costituito da un set di processing element (PE)
       identici, che operano in modo sincrono, capaci di eseguire
       simultaneamente la stessa operazione su dati differenti.
       Gli array processor costituiscono un altro modo classico di realizzare
       sistemi di elaborazione in grado di operare su array.
       Sono sistemi ormai fuori commercio ma che negli anni ’70-’80 hanno
       avuto un loro successo.
       Con questa soluzione, ogni elemento vettoriale viene elaborato da un
       differente PE.
       Alcuni array processor sono concepiti come sistemi indipendenti, altri,
       chiamati attached array processor, richiedono un sistema ospite.




                                                              Giovanni Erbacci         53




                                             35
Architetture parallele

Esempi
  Illiac IV
  progettato nella seconda met degli anni '60, Universit dell'Illinois
  256 processori elementari, ciascuno con una propria memoria locale di 2K
  word, suddivisi in 4 quadranti ciascun quadrante prevedeva un'unit di controllo
  che supervisionava l'array di 8 x 8 processori di quel quadrante solo nel 1972 la
  Burroughs ne realizzò una versione a un solo quadrante.

  Altri esempi
  Staran e MPP goodyear (1975),
  PEPE (1976), realizzato da Burroughs come attached per il Cyber 76
  BSP Burroughs (1978),attached per il Burroughs B7800
  ICL DAP (Inghilterra, 1979) attached per i sistemi della serie ICL 2900.
  Gli attached processor pi noti sono i sistemi prodotti dalla Floating Point
  System Inc, come ad es. AP-120 (1976) e FPS-164 (1980).
  Gli attached processor FPS non sono strutturati come array di PE, ma sfruttano
  il pipelining.



                                                                      Giovanni Erbacci   54




Architetture parallele


Progetto APE
    APE: computer SIMD a parallelismo massiccio

    Il progetto APE nasce verso la metà degli anni 80 ad opera di un gruppo
    di fisici italiani dell`INFN. Potenza di calcolo di 1 Gflops.
    Intorno al 1988 nasce il progetto di APE100, evoluzione di APE,
    determinato da una più forte richiesta di potenza di calcolo (primi prototipi
    realizzati nel 1990).
    APE100, commercializzato da QSW (ALENIA) con il nome di Quadrics, è
    scalabile da 8 a 2048 nodi
    Ogni nodo di elaborazione è composto da:
         – processore floating point a 32 bit (MAD),
         – banco di memoria RAM da 4 a 16 Mbytes,
         – logica di comunicazione node-to-node
         e può raggiungere una potenza di calcolo pari a 50 Mflops.
    La configurazione completa di APE100 era costituita da 2048 nodi
    (potenza di picco di 100 Gflops)




                                                                      Giovanni Erbacci   55




                                                  36
Architetture parallele

   Progetto APE / 1

   Nel 1994 nasce il progetto APEmille: come APE100 è una macchina
   parallela scalabile, tridimensionale di tipo SIMD
   Architettura tridimensionale basata su una griglia cubica di nodi di
   elaborazione.

   Ogni nodo è connesso direttamente con i 6 nodi più vicini attraverso dei
   canali di comunicazione dati sincroni.

   I nodi sono ottimizzati per eseguire aritmetica in floating point a singola
   precisione, ma sono supportate anche operazioni intere e in floating point
   a doppia precisione (non presenti su APE100).

       APE NEXT




                                                           Giovanni Erbacci      56




Architetture parallele


  CM 2
  Sistema SIMD prodotto da Connection Machine Corporation nel 1987
  Prevede fino a 64k processori (bit procesor)


                               Architecture
          The machines consist of an array
              of simple proprietary bit-serial
           processors directly connected to
                local memory. Groups of 32
           processors may optionally share
            a floating point accelerator unit.
           The memory uses commercially
               available dynamic RAM. The
           machine is driven by a Sun, Vax
                   or Symbolics 3600-series
                                   machine.



                                                           Giovanni Erbacci      57




                                                 37
Architetture parallele

   Array Sistolici

    Il concetto di architettura sistolica è stato sviluppato da H. Kung alla
         Carnegie Mellon University, all'inizio degli anni '80.
    Un array sistolico consiste di un insieme di celle identiche, interconnesse,
         ciascuna capace di eseguire un set di operazioni elementari.
    Il flusso dei dati scorre fra le celle in una sorta di pipeline e la comunicazione
         col mondo esterno avviene solo nelle celle di frontiera.
    Ad intervalli regolari, ogni cella riceve da più direzioni dati che combina e poi
         ripropaga alle altre celle.
    I dati dalla memoria vengono spinti attraverso l'array di celle, in modo
         analogo a come opera la contrazione cardiaca, da cui deriva il nome
         sistolico.




                                                                                                                                       Giovanni Erbacci                  58




Architetture parallele

   Esempio

                                        Moltiplicazione di una matrice a bande
                   a11    a12     0      0      0      0     ...       b11   b12    b13     0     0      0     ...       c11    c12    c13    c14     0      0     ...
                   a 21   a 22   a 23    0      0      0     ...   b21       b 22   b 23   b24    0      0     ...       c 21   c 22   c 23   c 24   c 25    0     ...
                   a 31   a 32   a 33   a 34    0      0     ...    0        b32    b33    b34   b35     0     ...       c 31   c 32   c 33   c 34   c 35   c 36   ...
                    0     a 42   a 43   a 44   a 45    0     ...  0          0     b 43   b44   b45    b46    ... = c 41       c 42   c 43   c 44   c 45   c 46   ...
                    0      0     a 53   a 54   a 55   a 56   ...   0          0      0     b54   b55    b56    ...    0         c 52   c 53   c 54   c 55   c 56   ...
                   0      0      0      a 64   a 65   a 66   ...       0      0     0      0     b65    b66    ...        0      0     c 63   c 64   c 65   c 66   ...
                   ...    ...    ...     ...    ...    ...   ...       ...    ...   ...    ...    ...    ...   ...       ...    ...     ...    ...    ...    ...   ...



                                         A                       =                        B                         =                        C
         A ha una banda lungo la diagonale principale di (3+2)-1=4
         B ha una banda lungo la diagonale principale di (2+3)-1=4
         C avrà una banda lungo la diagonale principale di (4+4)-1=7




                                                      Cijout = Cijin + aik  bkj



                                                                                                                                       Giovanni Erbacci                  59




                                                                                            38
Architetture parallele


Esempio
  È richiesta una griglia di 4 x 4 celle di         Cijout = Cijin + aik  bkj
     tipo esagonale, ogni cella ha 3 input
     e 3 output.
  Gli elementi di A = (aij) e B = (bij)
     entrano nelle celle lungo le due
     diagonali.     Entrano     anche    gli
     elementi C = (cij) che inizialmente
     hanno valore cij = 0.
  I dati fluiscono attraverso l'array in
     modalità pipeline e dall'alto escono i
     risultati.
  Se il delay temporale per ogni cella è
     unitario,   l'array    sistolico  può
     terminare la computazione in un
     tempo T = 3n + min(4, 4),
     linearmente      proporzionale    alla
     dimensione della matrice (n).


                                                         Giovanni Erbacci        60




Architetture parallele

  VLIW
    Joseph-Fisher Yale University
    Very Long Instruction Word architectures,
    Multiflow Computer (1984)
    Architetture RISC con un numero elevato di unità funzionali
        pipeline per sovrapporre l'esecuzione di operazioni
        indipendenti
    Il controllo è centralizzato
    Le risorse sono completamente controllate dal compilatore.




                                                         Giovanni Erbacci        61




                                               39
Architetture parallele

  VLIW / 1




                                                                Giovanni Erbacci        62




Architetture parallele


Sistemi Paralleli di classe MIMD
    Mainframes multiprocessor
    A metà degli anni '70 si diffondono i primi mainframes multiprocessore: Univac 1100/80
       (1976), Burroughs B-7800 (1978), Cyber 170/720 (1979), IBM 3081 (1980).
    Solo il gestore del sistema beneficia del miglioramento del throughput (numero di
       lavori completati per unità di tempo).
    Rimane il von Neumann bottelneck.

    Sistemi multiprocessor ed elaborazione parallela
    E' interessante invece disporre di sistemi multiprocessore in cui le diverse CPU
        possono essere attive in modo concorrente nella soluzione di un singolo problema
        (elaborazione parallela).

    Multicomputer
    Un sistema multicomputer consiste di più calcolatori autonomi che possono comunicare
       o meno l'uno con l'altro (distributed memory system).
    Multiprocessor
    In un sistema multiprocessor le diverse CPU che compongono il sistema condividono
        una memoria centrale unica (shared memory system).



                                                                Giovanni Erbacci        63




                                               40
Architetture parallele


Esempi di Sistemi MIMD

                         Cray Y MP/8, Cray C90/16, Cray T90/32
                         Cray T3D, Cray T3E
                         IBM ES900-530-VF
                         IBM SP1, SP2, SP3, SP4
                         Ipercubi N-Cube
                         Ipercubi Intel
                         Paragon Intel
                         KSR1
                         Meiko
                         Parsytec GC-2
                         Thinking Machine Corp. CM5
                         Fujitsu AP 100 e VPP500
                         NEC SX4, SX5
                         SGI Origin 3800




                                                               Giovanni Erbacci       64




Architetture parallele


Classificazione in Base alla Memoria

                                                           M                 M
                                                           P                  P
          P                  P
                   M
                                               P
          P                  P                                    N               P
                                               M
                                                                                  M
        Sistema a Memoria                                 P               P
        Condivisa                                        M               M

                                               Sistema a Memoria Distribuita



                                                               Giovanni Erbacci       65




                                              41
Architetture parallele


Sistemi a Memoria Condivisa
    I processori coordinano la loro attività, accedendo ai dati e alle istruzioni in
    una memoria globale (shared memory), condivisa da tutti i processori
    Uniform Memory Access (UMA)model = SMP: Symmetric Multi Processors
    L’accesso alla memoria è uniforme: i processori presentano lo stesso tempo
    di accesso per tutte le parole di memoria
    l’interconnessione processore-memoria avviene tramite common bus,
    crossbar switch, o multistage network.
    ogni processore può disporre di una cache locale, le periferche sono
    condivise.
    Alcuni esempi: ETA10, Cray 2, Cray C90, IBM 3090/600 VF, NEC SX-5
    I sistemi a memoria condivisa presentano un numero limitato di processori
    (da 2 a 32) molto potenti (possoo presentare anche un’architettura vettoriale)
    Questi multiprocessori sono chiamati tightly coupled systems per l’alto grado
    di condivisione delle risorse




                                                            Giovanni Erbacci       66




Architetture parallele


Sistemi a Memoria Distribuita


    La memoria è distribuita fisicamente tra i processori (local memory).

    tutte le memorie locali sono private e può accedervi solo il processore
        locale
    La comunicazione tra i processori avviene tramite un protocollo di
        comunicazione a scambio di messaggi (message passing).
    I messaggi che vengono instradati sulla rete di interconnessione
    In genere si tratta di sistemi che presentano un numero elevato di
        processori (da poche decine ad alcune migliaia), ma di potenza non
        troppo elevata, chiamati nodi di elaborazione.




                                                            Giovanni Erbacci       67




                                            42
Architetture parallele


Sistemi NUMA

                      Non Uniform Memory Access (NUMA) model
     La memoria è fisicamemte distribuita fra tutti i processori (ogni
         processore ha una propria memoria locale)
     L’insieme delle memorie locali forma uno spazio di indirizzi globale,
         accessibile da tutti i processori
     Supporto hw per far si che ogni processore possa indirizzare la memoria
         di tutti i processori
     Il tempo di accesso dal processore alla memoria non è uniforme:
          – l’accesso è più veloce se il processore accede alla propria memoria
            locale;
          – quando si accede alla memoria dei processori remoti si ha un delay
            dovuto alla rete di interconnessione.




                                                                Giovanni Erbacci   68




Architetture parallele

   Il concetto di Nodo




        P         P
             M
        P         P



       Nodo SMP




                                                                Giovanni Erbacci   69




                                               43
Architetture parallele


Condivisione Fisica e Logica

      Condivisione fisica della memoria
      le CPU hanno lo stesso spazio di indirizzamento
      i valori scritti in una parola da una CPU possono essere letti da
          un'altra.

      Condivisione logica della memoria
        determinata da come il sw, in opposizione all'hw, vede il
         sistema.
      Quando due processi (programmi in esecuzione) condividono la
         stessa memoria logica, le informazioni scritte in una struttura
         dati da uno di questi, possono essere lette dall'altro.
      Quando non c'        condivisione logica i processi devono
         comunicare con forme di I/O (read e write di buffer) o tramite
         message passing.



                                                                         Giovanni Erbacci   70




Architetture parallele


Condivisione Fisica e Logica / 1
          Memoria fisica    Memoria logica                          Esempi
             (Hw)               (Sw)

        non condivisa      non condivisa     Message passing tra processori disgiunti

        non condivisa      condivisa         memoria virtuale distribuita (Linda)

        condivisa          non condivisa     message passing simulato da buffer condivisi

        condivisa          condivisa         multiprocessori a memoria condivisa


    In sistemi a memoria fisica condivisa il software può usare il message passing.
    Simulazione di memoria condivisa logicamente su macchine che possono
        comunicare solo tramite message passing.
    Linda è un modello di programmazione basato su uno spazio astratto di tuple.
        Ogni tupla contiene uno o più elementi dati, come un record Pascal. Tutti i
        processi condividono logicamente lo stesso spazio delle tuple, non importa
        dove risiede.




                                                                         Giovanni Erbacci   71




                                                  44
Architetture parallele

Rete di Interconnessione:
definizioni
    Grafo aciclico:
     un grafo che non contiene cicli

    grado:
     il grado è il numero di linee connesse a un nodo in una data topologia. E’ equivalente al
     numero di primi vicini del nodo. E’ un indice della connettività
     Un grado grande è un benefico perché identifica una molteplicità di paths.

    Diametro:
       il diametro di una rete è la distanza tra i due nodi più lontani (percorso più lungo tra
     due nodi)
        Un diametro piccolo corrisponde a una latenza bassa.

    Neighbor:
       Due nodi si dicono vicini se c un link che li connette.




                                                                             Giovanni Erbacci              72




Architetture parallele

Rete di Interconnessione
    Cos      una rete di interconnessione?
    È l’insieme dei cavi che definiscono come i diversi processori di un calcolatore parallelo sono connessi
    tra loro e con le unità di memoria.
    Il tempo richiesto per trasferire i dati dipende dal tipo di interconnessione.
    Il tempo di trasferimento è detto communication time.
    La massima distanza che devono percorrere i dati scambiati tra due processori che comunicano
    incide sulle prestazioni della rete.

    Caratteristiche di una rete di interconnessione
    Bandwidth: identifica la quantità di dati che possono essere inviati per unità di tempo sulla rete. Occorre
    massimizzare la bandwidth
    Latenza: identifica il tempo necessario per instradare un messaggio tra due processori. Si definisce
    anche come il tempo necessario per trasferire un messaggio di lunghezza nulla.
    Occorre minimizzare la latenza
    Altri aspetti da considerare
                                        - Costo
                                        - Scalabilità
                                        - Affidabilità
                                        - Diametro
                                        - Degree


                                                                             Giovanni Erbacci              73




                                                         45
Architetture parallele

   Connettività

    Interconnessione completa (ideale)
         – Ogni nodo può comunicare direttamente con tutti
           gli altri nodi (in parallelo)
         – con n nodi si ha un'ampiezza di banda
           proporzionale a n2.
         – il costo cresce proporzionalmente a n2.




                                                             Giovanni Erbacci   74




Architetture parallele

    Bus Network

   La topologia Bus è costituita da
      un cavo coassiale (bus) al
      quale vengono connessi tutti I
      dispositivi

   I benefici di una rete basata su
       Bus sono la semplicità di
       costruzione e il costo molto
       basso.
   Gli aspetti negativi sono il rate di
       trasmissione dati limitato e di
       conseguenza la non
       scalabilità in termini di
       performance.




                                                             Giovanni Erbacci   75




                                              46
Architetture parallele


Cross-bar Switch Network
    Un cross-bar switch è una network che opera secondo un meccanismo
    di switching per connettere dispositivi ad altri dispositivi (processori,
    memoria).

    Meccanismo analogo a quello adottato dai sistemi telefonici. Scala
    meglio del bus ma ha costi maggiori




                                                            Giovanni Erbacci       76




Architetture parallele



Multi-Stage Switching Network

     In questa topologia diversi layers di switches connettono N nodi di un tipo
         a N nodi di un altro tipo.
     Il Multi-Stage Switching una Network configurabile dinamicamente. Ciò
         significa che gli switches che connettono i vari processori possono
         esssere cambiati dinamicamente, a seconda di dove va inviato il
         messaggio.




                                                            Giovanni Erbacci       77




                                            47
Architetture parallele


  Topologia Mesh
         In una network a griglia, i nodi sono disposti secondo un reticolo a k
             dimensioni (k dimensional lattice) di ampiezza w, per un totale di wk
             nodi.
              –   k=1 (array lineare)
              –   k=2 (2D array) es. ICL DAP, Intel Paragon,


         La comunicazione diretta è consentita solo tra i nodi vicini.
         I nodi interni comunicano direttamente con altri 2k nodi.




                                                                   Giovanni Erbacci   78




Architetture parallele


 Topologia Toroidale


     Alcune varianti del
     modello a mesh
     presentano connessioni
     di tipo wrap-around fra i
     nodi ai bordi della mesh
     (topologia toroidale).
     Il Cray T3E adotta una
     topologia toroidale 3D.




                                                                   Giovanni Erbacci   79




                                                    48
Architetture parallele


Topologia Ipercubo

   Una topologia ipercubo (cube-connected) formata da n =2k nodi connessi
       secondo i vertici di un cubo a k dimensioni.
   Ogni nodo connesso direttamente a k altri nodi.
   Il degree di una topologia ipercubo log n ed anche il diametro log n.
   Esempi di calcolatori con questo tipo di network sono la CM2, NCUBE-2, Intel
       iPSC860, SGI Origin.




                                                         Giovanni Erbacci         80




Architetture parallele


Topologia Ipercubo / 1




                                                         Giovanni Erbacci         81




                                          49
Architetture parallele

  Gray Coding
    In un ipercubo a k dimensioni, ciascuno dei 2k vertici etichettato
        con un numero intero binario di k bit.
    Coordinate cartesiane nello spazio k-dimensionale.
    Gli identificatori di due nodi adiacenti differiscono di un solo bit.
    La distanza tra due nodi qualsiasi            uguale al numero di bit
        differenti nei loro identificatori.
    Fra coppie di nodi non adiacenti sono possibili pi percorsi.
    Occorre un algoritmo di instradamento (routing).
    Esempio: XOR(Natt., Ndest)
              I bit a 1 indicano gli assi su cui i nodi si diversificano
              Il messaggio va inviato lungo uno di questi assi




             XOR(100,001) = 101
                    lungo il 1° asse
                    oppure lungo il 3°



                                                             Giovanni Erbacci   82




Architetture parallele


   Topologia Tree
   I processori sono I nodi terminali (foglie) di un
       albero
   Il degree di una network con topologia ad
       albero con N nodi è log2N e il diametro è
      2 log 2(N) - 2

   Fat tree
      la bandwidh della network aumenta
      all aumentare del livello della rete.
      Esempi: CM-5, Network Myrinet e QSNet

   Piramide
      Una network piramidale di ampiezza p un
      albero 4-rio completo con livelli, dove i
      nodi di ciascun livello sono collegati in una
      mesh bi-dimensionale.



                                                             Giovanni Erbacci   83




                                              50
Architetture parallele

Architetture RISC
  RISC : Reduced Instruction Set Computer
  contrapposto a
  CISC: Complex Instruction Set Computers

                                                CISC                                   RISC
                               IBM 370/168      VAX 11/780   XEROX          IBM        Berkeley    Stanford
                                                             Dorado                     RISC I      MIPS

     Anno di completamento        1973             1978       1978          801         1981        1983


     Istruzioni                   208               303       270           1980         39          55

                                  54 K             61 K       17 K          120           0              0

     Dimensione                   2-6              2 - 57      13            0            4              4
     Microcodice

     Dimensione Istruzioni      Reg– Reg        Reg - Reg    Stack           4         Reg-Reg     Reg-Reg
                                Reg - Mem       Reg - Mem
                               Mem - Mem        Mem - Mem




                                                                                        Giovanni Erbacci      84




Architetture parallele

Architetture RISC /
1
                                         CISC                                        RISC
                     Istruzioni complesse che richiedono            Istruzioni semplici che richiedono un
                     più cicli                                      ciclo

                     Ogni istruzione può far riferimento            Solo le istruzioni di load e store
                     alla memoria                                   possono far riferimento alla
                                                                    memoria

                     Nessun o poco pipelining                       Molto pipelining
                     Istruzioni interpretate dal                    Istruzioni eseguite dall’hardware
                     microprogramma

                     Istruzioni a formato variabile                 Istruzioni a formato fisso
                     Molte istruzioni e modalità                    Poche istruzioni e modalità
                     La complessità è nel                           La complessità è nel compilatore
                     microprogramma

                     Insieme di registri singoli                    Insieme di registri multipli




                                                                                        Giovanni Erbacci      85




                                                              51
Architetture parallele

   Architetture RISC / 2

    Superscalari
    Un processore superscalare ha più unità funzionali (pipeline multiple).
    Più istruzioni per volta vengono caricate, decodificate, eseguite.
    In genere: operazione Integer / operazione Floating Point / Load
    Pipelining delle istruzioni.
    Esempi di sistemi RISC superscalari:
              –   DEC Alpha, HP PA-RISC, IBM RS/6000, (Intel Pentium), SGI Origin,
                  IBM Power IV e Power V




                                                                    Giovanni Erbacci   86




                                                  52

Contenu connexe

Tendances

Muscle histology by dr. armaan singh
Muscle histology by  dr. armaan singhMuscle histology by  dr. armaan singh
Muscle histology by dr. armaan singhDr. Armaan Singh
 
Muscles of facial expresssion
Muscles of facial expresssionMuscles of facial expresssion
Muscles of facial expresssionTazeen Raees
 
Skeletal structure of the Equine Forelimb
Skeletal structure of the Equine ForelimbSkeletal structure of the Equine Forelimb
Skeletal structure of the Equine ForelimbPer Karlsson
 
Histology of tongue by Dr. Shubham Gupta
Histology of tongue by Dr. Shubham Gupta Histology of tongue by Dr. Shubham Gupta
Histology of tongue by Dr. Shubham Gupta shubhamgupta1791
 

Tendances (7)

Muscle histology by dr. armaan singh
Muscle histology by  dr. armaan singhMuscle histology by  dr. armaan singh
Muscle histology by dr. armaan singh
 
Dental Anatomy
Dental AnatomyDental Anatomy
Dental Anatomy
 
Enamle
EnamleEnamle
Enamle
 
Muscles of facial expresssion
Muscles of facial expresssionMuscles of facial expresssion
Muscles of facial expresssion
 
Cameron Park Trail Map
Cameron Park Trail MapCameron Park Trail Map
Cameron Park Trail Map
 
Skeletal structure of the Equine Forelimb
Skeletal structure of the Equine ForelimbSkeletal structure of the Equine Forelimb
Skeletal structure of the Equine Forelimb
 
Histology of tongue by Dr. Shubham Gupta
Histology of tongue by Dr. Shubham Gupta Histology of tongue by Dr. Shubham Gupta
Histology of tongue by Dr. Shubham Gupta
 

Similaire à Architetture Parallele

Architettura dei Calcolatori 06 Elementi Architetturali Di Base
Architettura dei Calcolatori 06 Elementi Architetturali Di BaseArchitettura dei Calcolatori 06 Elementi Architetturali Di Base
Architettura dei Calcolatori 06 Elementi Architetturali Di BaseMajong DevJfu
 
20090213 Cattaneo Architettura Degli Elaboratori P1
20090213 Cattaneo Architettura Degli Elaboratori P120090213 Cattaneo Architettura Degli Elaboratori P1
20090213 Cattaneo Architettura Degli Elaboratori P1pipp8
 
Architettura degli elaboratori
Architettura degli elaboratoriArchitettura degli elaboratori
Architettura degli elaboratoriservetti
 
Architettura degli Elaboratori
Architettura degli ElaboratoriArchitettura degli Elaboratori
Architettura degli Elaboratorisviciu
 
Architettura dei calcolatori
Architettura dei calcolatoriArchitettura dei calcolatori
Architettura dei calcolatorikaliaragorn
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiorestJump
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02Formazioneenna Enna
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Majong DevJfu
 
Storia dei sistemi di elaborazione
Storia dei sistemi di elaborazioneStoria dei sistemi di elaborazione
Storia dei sistemi di elaborazioneDavideMeschini
 
Storia dei sistemi di elaborazione
Storia dei sistemi di elaborazioneStoria dei sistemi di elaborazione
Storia dei sistemi di elaborazioneUniversita' di Bari
 

Similaire à Architetture Parallele (20)

Architettura dei Calcolatori 06 Elementi Architetturali Di Base
Architettura dei Calcolatori 06 Elementi Architetturali Di BaseArchitettura dei Calcolatori 06 Elementi Architetturali Di Base
Architettura dei Calcolatori 06 Elementi Architetturali Di Base
 
20090213 Cattaneo Architettura Degli Elaboratori P1
20090213 Cattaneo Architettura Degli Elaboratori P120090213 Cattaneo Architettura Degli Elaboratori P1
20090213 Cattaneo Architettura Degli Elaboratori P1
 
Architettura degli elaboratori
Architettura degli elaboratoriArchitettura degli elaboratori
Architettura degli elaboratori
 
Architettura degli Elaboratori
Architettura degli ElaboratoriArchitettura degli Elaboratori
Architettura degli Elaboratori
 
Sistemi 2 (4' ITI) - Lezione 1
Sistemi 2 (4' ITI) - Lezione 1Sistemi 2 (4' ITI) - Lezione 1
Sistemi 2 (4' ITI) - Lezione 1
 
Cpu
CpuCpu
Cpu
 
Cpu Abacus
Cpu AbacusCpu Abacus
Cpu Abacus
 
Cpu abacus
Cpu abacusCpu abacus
Cpu abacus
 
Architettura dei calcolatori
Architettura dei calcolatoriArchitettura dei calcolatori
Architettura dei calcolatori
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Personal computer
Personal computerPersonal computer
Personal computer
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
 
Storia dei sistemi di elaborazione
Storia dei sistemi di elaborazioneStoria dei sistemi di elaborazione
Storia dei sistemi di elaborazione
 
Storia dei sistemi di elaborazione
Storia dei sistemi di elaborazioneStoria dei sistemi di elaborazione
Storia dei sistemi di elaborazione
 
01 hardware
01 hardware01 hardware
01 hardware
 
01 Hardware
01  Hardware01  Hardware
01 Hardware
 

Plus de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Plus de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Architetture Parallele

  • 1. Architetture parallele Giovanni Erbacci - g.erbacci@cineca.it Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie 1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008 Architetture parallele Argomenti Il modello di von Neumann I primordi del parallelismo Verso il parallelismo effettivo Pipelining Classificazione di Flynn Architetture vettoriali Architetture Parallele Giovanni Erbacci 1 9
  • 2. Architetture parallele Modello di von Neumann Calcolatore Convenzionale Controllo Input Memoria Output Unità Aritm. Logica Le istruzioni vengono processate sequenzialmente: 1 un istruzione viene caricata dalla memoria (fetch) e decodificata 2 vengono calcolati gli indirizzi degli operandi; 3 vengono prelevati gli operandi dalla memoria; 4 viene eseguita l'istruzione; 5 il risultato viene scritto in memoria (store). Giovanni Erbacci 2 Architetture parallele Calcolatori più Veloci Performance Processori Gap Memoria Tempo Giovanni Erbacci 3 10
  • 3. Architetture parallele Velocità dei Componenti Ciclo macchina Si definisce ciclo macchina o clock period l'intervallo temporale che regola la sincronizzazione delle operazioni in un calcolatore Unit temporale di base di un calcolatore (si misura in ns - 10-9 s) Si calcola come l inverso della frequenza di clock (misurata in MHz) Tutte le operazioni all interno del processore durano un multiplo di . CDC 6600 100 ns Cyber 76 27.5 ns IBM ES 9000 9 ns Cray Y-MP C90 4.1 ns Intel i860 20 ns PC Pentium 1 ns Giovanni Erbacci 4 Architetture parallele Legge di Moore Legge empirica che afferma che la complessità dei dispositivi (numero di transistor per sqare inch nei microprocessori) raddoppia ogni 18 mesi. Gordon Moore, co-founder di Intel, 1965 Si stima che la legge di Moore valga ancora almeno per questo decennio. Giovanni Erbacci 5 11
  • 4. Architetture parallele Arithmetic- Logical Unit Control ALU Unit Dati Indirizzi Memoria Centrale Device Oltre alla potenza del processore, altri fattori influenzano le prestazioni degli elaboratori: - dimensione della memoria - larghezza di banda (bandwidth) fra memoria e processore - larghezza di banda verso il sistema di I/O - dimensione e larghezza di banda della cache - latenza fra processore, memoria e sistema di I/O Giovanni Erbacci 6 Architetture parallele Primordi del Parallelismo Miglioramenti architetturali Memoria bit-parallel e Aritmetica bit-parallel Processori indipendenti per l’attività di I/O Memoria interleaved Gerarchie di memoria Unità funzionali multiple Unità funzionali segmentate Pipelining Miglioramenti software Multiprogrammazione e Look-ahead e scheduling delle istruzioni Giovanni Erbacci 7 12
  • 5. Architetture parallele Verso il Parallelismo effettivo Sistemi vettoriali Array processors Architetture sistoliche Very Long Instruction Word (VLIW) Sistemi Multiprocessore Sistemi Multicomputer Giovanni Erbacci 8 Architetture parallele Memoria e Aritmetica Bit-parallel Nei primi calcolatori elettronici, i bit di una word venivano letti singolarmente dalla memoria L'aritmetica bit-parallel divenne possibile con l'introduzione delle memorie bit parallel (IBM 701, 1953) L'IBM 704 (1955) fu il primo calcolatore commerciale ad usare memoria a nuclei di ferrite. Consentiva: – accesso bit-parallel alla memoria – non volatilità – velocità a costi ragionevoli. Giovanni Erbacci 9 13
  • 6. Architetture parallele Processori di I/O (Canali) Nei calcolatori della prima generazione, le istruzioni di I/O venivano eseguite dalla CPU Input Output Questa inefficienza fu risolta introducendo processori separati per gestire le operazioni di I/O I/O Processor I processori di I/O (canali) ricevono le istruzioni di I/O dalla CPU poi operano in modo indipendente, liberando la CPU Memory Control Unit CPU Memory (Multiplexer) Giovanni Erbacci 10 Architetture parallele Memoria Interleaved o banchi che possono essere acceduti Unità di memoria suddivisa in moduli simultaneamente Ogni banco ha la propria circuiteria di indirizzamento Gli indirizzi delle istruzioni e dei dati sono interleaved così si ha la possibilità di fetch in parallelo L'IBM STRETCH (1961) è stato il primo calcolatore ad avere una memoria interleaved (2 banchi). Il CDC 6600 (1964) aveva una memoria suddivisa in 32 banchi indipendenti Banchi di 0 1 2 3 memoria 0000 0001 0010 1011 0100 0101 0110 0111 indirizzo contenuto 1000 1001 1010 1011 Giovanni Erbacci 11 14
  • 7. Architetture parallele Gerarchie di Memoria Tempo di accesso alla memoria: indica la velocità con la quale si può referenziare una locazione di memoria Registri Registri Tempo di ciclo della memoria: indica il tempo che Maggior Capacità deve trascorrere prima di un nuovo accesso a una stessa locazione di memoria Cache Cache Maggior velocità Negli ultimi anni questi tempi sono molto migliorati Memory Minor costo Memory rendendo possibili sistemi di memoria più veloci ma al tempo stesso è diminuito anche il tempo Memoria Memoria di clock del processore: – IBM PC XT (1980) 4.77 MHz = 210 ns Primaria Primaria Commodity DRAM T. acc. 200 ns – Pentium II (1998) 300 MHz = 3.3 ns Commodity DRAM T. acc. 50 ns Memoria Memoria La performance dei processori raddoppia ogni 18 Secondaria Secondaria mesi mentre quella della memoria raddoppia circa ogni 6 anni. Giovanni Erbacci 12 Architetture parallele Gerarchie di Memoria / 1 La capacità dei dispositivi di memoria secondaria è dell’ordine dei Gbyte (capacità di circa 10-100 Gbyte per singolo disco). La capacità della memoria centrale è dell’ordine delle Mword-Gword mentre la capacità della cache memory è dell’ordine dei KByte-MByte. Il tempo di accesso fra memoria primaria e memoria secondaria (ad es.dischi) è dell’ordine dei µsecondi (se si sfruttano meccanismi di caching su disco o su memoria primaria) o addirittura dei msecondi quando si accede direttamente all’informazione localizzata sul disco. Il tempo di accesso dalla cache memory alla memoria centrale è dell’ordine dei nanosecondi (1 ns = 10-9 s). Giovanni Erbacci 13 15
  • 8. Architetture parallele Cache Memory Unità di memoria di dimensioni ridotte usata come buffer per i dati che vengono scambiati fra la memoria centrale e il processore. L'instruction buffer del CDC – località temporale: una istruzione o un dato possono essere 6600 era costituito da 8 referenziati più volte registri di 60 bit ciascuno (istruzioni di 15 o 30 bit). – località spaziale: quando si referenzia una locazione di Il Cray Y-MP aveva 4 memoria, è molto probabile che vengano instruction buffer di 128 referenziate anche le locazioni adiacenti. parcel (16 bit) per CPU (istruzioni di 1, 2, o 4 parcel). Ogni processsore del Cray T3E ha una cache per le istruzioni di 8 KByte, una per i dati di 8KByte e di una di l'istruzione viene prelevata dalla cache anzich dalla memoria. secondo livello di 96KByte. un'istruzione può essere eseguita ripetutamente senza ulteriori riferimenti alla memoria principale. Giovanni Erbacci 14 Architetture parallele Cache Memory / 1 E' demandato all'abilità del sistema far rientrare le istruzioni che compongono un kernel computazionale pesante (es. un loop) all’interno della cache, se Registri 2 ns queste possono esservi contenute per L1 On-chip 4 ns intero. L2 On-Chip 5 ns Lo stesso vale per i dati, ma in questo L3 Off-Chip 30 ns caso l’opera di ottimizzazione coinvolge Memoria 220 ns anche il programmatore Giovanni Erbacci 15 16
  • 9. Architetture parallele Organizzazione della Cache La cache è divisa in slot della stessa dimensione (linee) Ogni linea contiene k locazioni di memoria consecutive (es. 4 word). Quando è richiesto un dato dalla memoria, se questo non è già in cache, viene caricata dalla memoria l’intera linea di cache che lo contiene, sovrascrivendo così il contenuto precedente della linea. Memoria Cache Giovanni Erbacci 16 Architetture parallele Organizzazione della Cache / 1 Quando si modifica un dato memorizzando un nuovo valore in cache, occorre aggiornare il dato anche in memoria principale: – Cache write-back - i dati scritti nella cache vi M rimangono finché la linea di cache non è richiesta per memorizzare altri dati quando si P1 P2 deve rimpiazzare la cache il dato viene scritto in memoria; comune nei sistemi mono-processore. – Cache write-through – i dati vengono scritti Cache P1 Cache P2 immediatamente nella cache e nella memoria principale. Nei sistemi con più processori occorre gestire la coerenza della cache: per accedere a dati aggiornati i processori devono essere a conoscenza dell’attività delle cache locali Giovanni Erbacci 17 17
  • 10. Architetture parallele Mapping Poiché in ogni istante temporale la cache può contiene solo un sotto-insieme della Memoria memoria, occorre sapere quale: si tratta di associare un insieme di locazioni di memoria ad una linea di cache (mapping). In base al mapping la cache può essere organizzata in uno dei seguenti modi: – - Direct mapped - Fully associative - Set associative Il modo con cui le locazioni di memoria vengono Cache mappate nelle linee di cache può incidere sulle prestazioni dei programmi (due locazioni di memoria pesantemente usate possono essere mappate oppure no sulla stessa linea). Giovanni Erbacci 18 Architetture parallele Cache Direct Mapping 1 1.9 Con questo schema, se ad 2 725 es. la dimensione della 3 51.9 cache è di 8 Kbyte e la 4 -18.5 5 1.7 memoria centrale ha word 6 -25.3 di 8 Byte, la prima … …… Linea 1 1.9 725 51.9 -18.5 locazione di memoria (word 1024 Linea 2 1.7 -25.3 1025 1) viene mappata sulla Linea 3 1026 linea 1, così come la 1027 Linea 4 locazione d+1, 2d+1, 3d+1 1028 Linea 5 …..… …… ecc. (dove d = N° linee * 1029 Linea 256 1030 N° word per linea). …. 2048 Cache 2049 2050 Memoria Giovanni Erbacci 19 18
  • 11. Architetture parallele Cache Direct Mapping / 1 Indirizzo Contenuto Indica la 0 0000 000 00 1.9 parola 1 0000 000 01 725 all’interno 2 0000 000 10 51.9 della linea Indica 3 0000 000 11 -18.5 la linea 4 0000 001 00 1.7 5 0000 001 01 -25.3 Linea 0 1.9 725 51.9 -18.5 .. …. … .. …… Linea 1 1.7 -25.3 10 0000 010 10 Linea 2 11 0000 010 11 Memoria 12 0000 011 00 Linea 3 .. …. … .. …… Linea 4 29 0000 111 01 Linea 5 30 0000 111 10 Linea 6 31 0000 111 11 Linea 7 32 0001 000 00 33 0001 000 01 .. …. … .. …… Cache 62 0001 111 10 8 linee 63 0001 111 11 4 word per linea 64 0010 000 00 65 0010 000 01 Giovanni Erbacci 20 Architetture parallele Cache Direct Mapping / 2 Quando si hanno riferimenti di memoria che alternativamente puntano alla stessa linea di cache (es. word 1, word 1025, word 1, word 1025, ripetutamente), ogni riferimento causa un cache miss e si deve rimpiazzare la linea appena inserita. Si genera parecchio lavoro aggiuntivo (overhead); questo fenomeno è detto thrashing. Giovanni Erbacci 21 19
  • 12. Architetture parallele Cache Fully Associative Con questo schema, ogni locazione di memoria può essere mappata in qualsiasi linea di cache, senza tener conto dell’indirizzo di memoria. Il nome deriva dal tipo di memoria usata per costruire questo tipo di cache (memoria associativa). Quando il processore richiede un dato questo viene richiesto a tutte le linee di cache contemporaneamente. Se una linea contiene il dato, questo viene fornito, diversamente si ha un cache miss. In genere la linea usata meno recentemente (politica LRU) è destinata ad essere sovrascritta con il nuovo dato. Le cache fully associative sono costose ma garantiscono un utilizzo superiore se confrontate con le cache direct mapped. Giovanni Erbacci 22 Architetture parallele Cache Set Associative Si tratta praticamente di una cache direct mapped replicata in più copie (banchi). In genere si hanno 2 o 4 banchi separati di cache (two-way, four-way set associative). Con questo schema, se una locazione di memoria viene mappata sulla linea k, un successivo riferimento a una locazione di memoria sempre mappato sulla stessa linea, verrà allocato sulla linea K di un diverso banco. Una cache set associative è meno predisposta a cache thrashing rispetto a una cache direct mapped della stessa grandezza. Infatti una locazione di memoria verrà mappata in una linea che può essere scelta su banchi differenti. Giovanni Erbacci 23 20
  • 13. Architetture parallele Cache Set Associative 1 1.9 2 725 Memoria 3 51.9 2 way set associative 4 -18.5 2048 word, linee di 4 word 5 1.7 6 -25.3 … …… 1024 Linea 1 66 71 33 100 1025 66 Linea 2 17 1026 71 Linea 1 1.9 725 51.9 -18.5 1027 33 Cache Linea 2 1.7 -25.3 1028 100 Linea 3 1029 17 Linea 4 1030 Linea 5 …. …..… …… Banco 2 2048 Linea 256 2049 2050 Banco 1 Giovanni Erbacci 24 Architetture parallele Quesito E’ più efficiente una cache set associative a k vie oppure una chache direct mapping con la stessa capienza e con lo stesso numero di word per linea? Dare una dimostrazione della risposta data. Giovanni Erbacci 25 21
  • 14. Architetture parallele Multiprogrammazione e Time Sharing Giovanni Erbacci 26 Architetture parallele Look ahead delle Istruzioni Il concetto di look ahead consiste nel rendere disponibili diverse istruzioni decodificate e pronte per l'esecuzione, prima che vengano effettivamente richieste. – L'IBM STRETCH è stato il primo sistema ad introdurre questa possibilità: era possibile prelevare le istruzioni, decodificarle, calcolare gli indirizzi degli operandi, fare il fetch degli operandi, diverse istruzioni in anticipo rispetto alla loro esecuzione effettiva. – L'IBM 360/91 inoltre ammetteva il prefetch di un'istruzione condizionale e di alcune delle istruzioni successive, in modo da mantenere l'unità di esecuzione piena dopo ogni salto condizionale. Il look ahead delle istruzioni è necessario per migliorare le prestazioni nei sistemi con più unità funzionali. Giovanni Erbacci 27 22
  • 15. Architetture parallele Compilatori e Look-ahead Per migliorare le prestazioni i compilatori riorganizzano la sequenza delle istruzioni affinchè in esecuzione sfruttino il look ahead. FETCH R1, B FETCH R1, B A B + C FETCH R2, C FETCH R2, C D E + F ADD R1, R2 FETCH R3, E STORE A, R1 FETCH R4, F FETCH R3, E ADD R1, R2 FETCH R4, F ADD R3, R4 ADD R3, R4 STORE A, R1 STORE D, R3 STORE D, R3 Giovanni Erbacci 28 Architetture parallele Unità Funzionali Multiple Nei calcolatori tradizionali, la CPU è costituita da un insieme di registri generali, da alcuni registri speciali (es. il program counter) e dall'unità aritmetico logica (ALU) che, una per volta, calcola le operazioni. Un primo passo verso il parallelismo consiste nel suddividere le funzioni dell'ALU e progettare unità indipendenti capaci di operare in parallelo (unità funzionali indipendenti). E' compito del compilatore esaminare le istruzioni e stabilire quali operazioni possono essere fatte in parallelo, senza alterare la semantica del programma. Giovanni Erbacci 29 23
  • 16. Architetture parallele Unità Funzionali Multiple / 1 10 Functional Units Peripheral Processors PP 0 Add PP 1 Central Multiply Multiply PP 2 PP 3 Storage Divide 12 24 Fixed Add PP 4 Registers Peripheral PP 5 Increment Channels PP 6 Increment PP 7 Boolean PP 8 Shift PP 9 Branch Instruction Stack Scoreboard I/O Subsystem Memory Central Processor Giovanni Erbacci 30 Architetture parallele Pipelining Il concetto di pipelining è analogo a quello di catena di montaggio dove in una linea di flusso (pipe) di stazioni di assemblaggio gli elementi vengono assemblati a flusso continuo. Idealmente tutte le stazioni di assemblaggio devono avere la stessa velocità di elaborazione altrimenti la stazione più lenta diventa il bottleneck dell'intera pipe. Giovanni Erbacci 31 24
  • 17. Architetture parallele Pipelining / 1 Un task T viene scomposto in un insieme di sotto task {T1,T2,...Tk} legati da una relazione di dipendenza: il task Tj non può partire finchè tutti i sotto task precedenti {Ti , ij} non sono terminati Spazio i Tj j mo subtask del task i mo S4 T 4 1 T 4 2 T 4 3 T 4 4 T 4 5 .... 5 S3 T 3 1 T 3 2 T 3 3 T 3 4 T 3 .... S2 T 2 1 T 2 2 T 2 3 T 2 4 T 2 5 .... S1 T 1 1 T 1 2 T 1 3 T 1 4 T 1 5 .... 0 1 2 3 4 5 6 7 8 9 10 Tempo(cicli) Giovanni Erbacci 32 Architetture parallele Struttura di un Processore a Pipeline L L L L L INPUT OUTPUT S1 S2 .... Sk C L: latch Si : stage i mo C: clock Un processore a pipeline consiste di una cascata di stages di elaborazione. Gli stages sono circuiti che eseguono le operazioni aritmetiche o logiche sulla corrente di dati che fluisce attraverso la pipe. Gli stages sono separati da interfacce (latches) cioè da registri veloci che contengono i risultati intermedi fra gli stages. Le informazioni fluiscono fra stages adiacenti sotto il controllo di un clock comune applicato a tutti i latches simultaneamente Giovanni Erbacci 33 25
  • 18. Architetture parallele Prestazione della Pipeline Sia i il delay temporale relativo all'insieme dei circuiti logici che compongono ciascun stage Si e sia l il delay temporale di ciascun latch di interfaccia. Il clock period (ciclo macchina) di una pipeline è definito da: = max{i, i = 1, k} + l Si definisce frequenza di una pipeline il reciproco del clock period: f=1/ La pipe, una volta riempita, produce un risultato per clock period, indipendentemente dal numero di stages che la compongono Idealmente, una pipe con k stages processa n tasks in tk = k + (n-1) clock periods; di questi, k servono a riempire la pipe cioè a completare l'esecuzione del primo task (tempo di start up). Giovanni Erbacci 34 Architetture parallele Pipeline di Istruzioni S1 S2 S3 S4 S5 Fetch Decodifica Fetch Esecuzione Store istruzioni operandi risultato 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 I1 Time I2 I3 I4 I5 I6 I7 I8 ........ 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 I1 Time I2 I3 I4 I5 I6 I7 I8 ........ Giovanni Erbacci 35 26
  • 19. Architetture parallele Esempio Il CDC 6600 aveva unit funzionali segmentate. Riordinando il codice si poteva sfruttare il pipelining (pipelining delle istruzioni scalari) in maniera efficiente. A = B*C+D*E K = W*X-Y*Z B*C S1-S1+S2 D*E S3-S3*S4 (B*C)+(D*E) S1-S1+S3 W*X S5-S5*S6 Y*Z S7-S7*S8 (W*X)-(Y*Z) S5-S5-S7 Tempo Giovanni Erbacci 36 Architetture parallele Esempio / 1 B*C S1-S1*S2 D*E S3-S3*S4 W*X S5-S5*S6 Y*Z S7-S7*S8 (B*C)+(D*E) S1-S1+S3 (W*X)-(Y*Z) S5-S5-S7 Tempo Giovanni Erbacci 37 27
  • 20. Architetture parallele Modelli di Elaborazione Somma di due vettori A e B Elementi floating point Ci = Ai + Bi per i = 1, …., n Ai = fi x 2pi L’operazione di somma comporta lo svolgimento Bi = gi X 2ri di 4 azioni in sequenza: confronto degli esponenti (ri - pi) allineamento delle mantisse addizione delle mantisse normalizzazione del risultato Supponiamo che ogni azione duri esattamente 1 ciclo macchina Giovanni Erbacci 38 Architetture parallele Elaborazione Sequenziale A1 B1 Elaborazione sequenziale: un risultato ogni 4 cicli Tempo C1 A2 B2 C2 A3 B3 C3 ……… Giovanni Erbacci 39 28
  • 21. Architetture parallele Elaborazione Pipelining Unità funzionale in pipelining Dopo la fase di start-up si ha un risultato per ciclo A1 B1 A2 B2 A3 B3 Tempo =1 A4 B4 =2 A5 B5 =3 =4 =5 =6 C1 =7 C2 =8 C3 C4 ……… C5 Giovanni Erbacci 40 Architetture parallele Elaborazione Parallela Sincrona A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 Tempo =1 =2 =3 Sincronizzazione =4 ad ogni passo C1 C2 C3 C4 C5 ……… Clock Con P processori si producono P risultati ogni 4 cicli Giovanni Erbacci 41 29
  • 22. Architetture parallele Elaborazione Parallela Asincrona A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 Tempo =4 C1 C2 C3 C4 C5 Sincronizzazione finale ……… Con P processori si producono P risultati ogni 4 cicli Giovanni Erbacci 42 Architetture parallele Classificazione di Flynn M. J. Flynn Very high speed computing systems, proceedings of the IEEE (1966). Some computer organizations and their effectiveness, IEEE Transaction on Computers.(1972). The moltiplicity is taken as the maximum possible number of simultaneous operations (instructions) or operands (data) being in the same phase of execution at the most constrained component of the organization SISD, SIMD, MISD, MIMD Giovanni Erbacci 43 30
  • 23. Architetture parallele Sistemi SISD Sistemi Sequenziali - Corrisponde alla classica architettura di von Neumann. - Sistemi scalari monoprocessore. - L'esecuzione delle istruzioni può essere pipelined (Cyber 76). - Ciascuna istruzione aritmetica inizia un'operazione aritmetica IS DS CU PU MM CU Control Unit PU Processing Unit MM Memory Module DS Data stream IS Instruction Stream Giovanni Erbacci 44 Architetture parallele Sistemi SIMD DS1 PU1 MM1 IS DS2 CU PU2 MM2 . . . . . . DSn PUn MMn CU Control Unit PU Processing Unit MM Memory Module DS Data stream IS Instruction Stream Giovanni Erbacci 45 31
  • 24. Architetture parallele Sistemi MIMD IS1 DS1 CU1 PU1 MM1 IS2 DS2 CU2 PU2 MM2 . . . . . . . . DSn . ISn CUn PUn MMn ISn IS2 IS1 CU Control Unit PU Processing Unit MM Memory Module DS Data stream IS Instruction Stream Giovanni Erbacci 46 Architetture parallele Calcolatori Vettoriali Dispongono di un set di istruzioni vettoriali che si aggiunge al set di istruzioni di istruzioni scalari. Le istruzioni vettoriali specificano una particolare operazione che deve essere eseguita su un determinato insieme di operandi detto vettore. In questo contesto un vettore è una lista ordinata di valori scalari. Le unità funzionali che eseguono istruzioni vettoriali sfruttano il pipelining per esegure la stessa operazione su tutte le coppie di operandi. Giovanni Erbacci 47 32
  • 25. Architetture parallele Calcolatori Vettoriali / 1 Organizzazione da memoria a memoria Le unità funzionali floating point possono comunicare direttamente con la memoria principale per ricevere o trasferire dati. I sistemi Cyber 205 e ETA10 adottavano questa soluzione. Organizzazione da registro a registro Le unità funzionali interfacciano i registri; occorre un set di registri vettoriali, ciascuno dei quali è in grado di contenere più di un elemento. Il path con la memoria viene attivato attraverso i registri. Giovanni Erbacci 48 Architetture parallele Registri Vettoriali Un registro vettoriale è un particolare registro in grado di contenere più dati di uno stesso tipo. si tratta di un insieme fisso di locazioni di memoria, che fa parte di una speciale memoria sotto il controllo utente. Il numero di elementi che può contenere un registro vettoriale è detto vector length. – Cray Y-MP: 8 registri vettoriali di 64 elementi a 64 bit – Cray C90: 8 registri vettoriali di 128 elementi a 64 bit – IBM ES 9000: 16 registri vettoriali di 256 elementi a 32 bit opure 8 a 64 bit. Registri Elementi Registri vettoriali configurabili 32 256 64 128 128 64 256 32 512 16 1024 8 Giovanni Erbacci 49 33
  • 26. Architetture parallele Esempio Unità Funzionale Add Floating Point CP 0 .... B(3) B(2) B(1) do i = 1, N .... C(3) C(2) C(1) A(i) = CP 1 .... B(4) B(3) B(2) B(1) B(i)+C(i) .... C(4) C(3) C(2) C(1) end do CP 2 .... B(5) B(4) B(3) B(2) B(1) .... C(5) C(4) C(3) C(2) C(1) V0 V1 + V2 CP 3 .... B(6) B(5) B(4) .... C(6) C(5) C(4) B(3) B(2) B(1) C(3) C(2) C(1) CP 4 .... B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 5 .... B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(8) C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 6 .... B(9) B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(9) C(8) C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 7 .... B(10) B(9) B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) + C(1) .... C(10) C(9) C(8) C(7) C(6) C(5) C(4) C(3) C(2) Giovanni Erbacci 50 Architetture parallele Supercalcolatori Vettoriali . Giovanni Erbacci 51 34
  • 27. Architetture parallele Chaining nei Calcolatori Vettoriali S0 V0 1 ... MOLTIPLICAZIONE 29 30 ... 27 25 23 21 19 17 128 do i = 1, n 28 26 24 22 20 18 A(i) = B(i) + C(i) * 0.5 V1 end do 1 ... 15 MEMORIA 16 SOMMA ... 128 13 11 9 7 5 3 14 12 10 8 6 4 V2 1 ... 15 16 ... 128 V3 1 2 ... 14 ... 128 Giovanni Erbacci 52 Architetture parallele Array Processors Un array processor è costituito da un set di processing element (PE) identici, che operano in modo sincrono, capaci di eseguire simultaneamente la stessa operazione su dati differenti. Gli array processor costituiscono un altro modo classico di realizzare sistemi di elaborazione in grado di operare su array. Sono sistemi ormai fuori commercio ma che negli anni ’70-’80 hanno avuto un loro successo. Con questa soluzione, ogni elemento vettoriale viene elaborato da un differente PE. Alcuni array processor sono concepiti come sistemi indipendenti, altri, chiamati attached array processor, richiedono un sistema ospite. Giovanni Erbacci 53 35
  • 28. Architetture parallele Esempi Illiac IV progettato nella seconda met degli anni '60, Universit dell'Illinois 256 processori elementari, ciascuno con una propria memoria locale di 2K word, suddivisi in 4 quadranti ciascun quadrante prevedeva un'unit di controllo che supervisionava l'array di 8 x 8 processori di quel quadrante solo nel 1972 la Burroughs ne realizzò una versione a un solo quadrante. Altri esempi Staran e MPP goodyear (1975), PEPE (1976), realizzato da Burroughs come attached per il Cyber 76 BSP Burroughs (1978),attached per il Burroughs B7800 ICL DAP (Inghilterra, 1979) attached per i sistemi della serie ICL 2900. Gli attached processor pi noti sono i sistemi prodotti dalla Floating Point System Inc, come ad es. AP-120 (1976) e FPS-164 (1980). Gli attached processor FPS non sono strutturati come array di PE, ma sfruttano il pipelining. Giovanni Erbacci 54 Architetture parallele Progetto APE APE: computer SIMD a parallelismo massiccio Il progetto APE nasce verso la metà degli anni 80 ad opera di un gruppo di fisici italiani dell`INFN. Potenza di calcolo di 1 Gflops. Intorno al 1988 nasce il progetto di APE100, evoluzione di APE, determinato da una più forte richiesta di potenza di calcolo (primi prototipi realizzati nel 1990). APE100, commercializzato da QSW (ALENIA) con il nome di Quadrics, è scalabile da 8 a 2048 nodi Ogni nodo di elaborazione è composto da: – processore floating point a 32 bit (MAD), – banco di memoria RAM da 4 a 16 Mbytes, – logica di comunicazione node-to-node e può raggiungere una potenza di calcolo pari a 50 Mflops. La configurazione completa di APE100 era costituita da 2048 nodi (potenza di picco di 100 Gflops) Giovanni Erbacci 55 36
  • 29. Architetture parallele Progetto APE / 1 Nel 1994 nasce il progetto APEmille: come APE100 è una macchina parallela scalabile, tridimensionale di tipo SIMD Architettura tridimensionale basata su una griglia cubica di nodi di elaborazione. Ogni nodo è connesso direttamente con i 6 nodi più vicini attraverso dei canali di comunicazione dati sincroni. I nodi sono ottimizzati per eseguire aritmetica in floating point a singola precisione, ma sono supportate anche operazioni intere e in floating point a doppia precisione (non presenti su APE100). APE NEXT Giovanni Erbacci 56 Architetture parallele CM 2 Sistema SIMD prodotto da Connection Machine Corporation nel 1987 Prevede fino a 64k processori (bit procesor) Architecture The machines consist of an array of simple proprietary bit-serial processors directly connected to local memory. Groups of 32 processors may optionally share a floating point accelerator unit. The memory uses commercially available dynamic RAM. The machine is driven by a Sun, Vax or Symbolics 3600-series machine. Giovanni Erbacci 57 37
  • 30. Architetture parallele Array Sistolici Il concetto di architettura sistolica è stato sviluppato da H. Kung alla Carnegie Mellon University, all'inizio degli anni '80. Un array sistolico consiste di un insieme di celle identiche, interconnesse, ciascuna capace di eseguire un set di operazioni elementari. Il flusso dei dati scorre fra le celle in una sorta di pipeline e la comunicazione col mondo esterno avviene solo nelle celle di frontiera. Ad intervalli regolari, ogni cella riceve da più direzioni dati che combina e poi ripropaga alle altre celle. I dati dalla memoria vengono spinti attraverso l'array di celle, in modo analogo a come opera la contrazione cardiaca, da cui deriva il nome sistolico. Giovanni Erbacci 58 Architetture parallele Esempio Moltiplicazione di una matrice a bande a11 a12 0 0 0 0 ... b11 b12 b13 0 0 0 ... c11 c12 c13 c14 0 0 ... a 21 a 22 a 23 0 0 0 ... b21 b 22 b 23 b24 0 0 ... c 21 c 22 c 23 c 24 c 25 0 ... a 31 a 32 a 33 a 34 0 0 ... 0 b32 b33 b34 b35 0 ... c 31 c 32 c 33 c 34 c 35 c 36 ... 0 a 42 a 43 a 44 a 45 0 ... 0 0 b 43 b44 b45 b46 ... = c 41 c 42 c 43 c 44 c 45 c 46 ... 0 0 a 53 a 54 a 55 a 56 ... 0 0 0 b54 b55 b56 ... 0 c 52 c 53 c 54 c 55 c 56 ... 0 0 0 a 64 a 65 a 66 ... 0 0 0 0 b65 b66 ... 0 0 c 63 c 64 c 65 c 66 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... A = B = C A ha una banda lungo la diagonale principale di (3+2)-1=4 B ha una banda lungo la diagonale principale di (2+3)-1=4 C avrà una banda lungo la diagonale principale di (4+4)-1=7 Cijout = Cijin + aik bkj Giovanni Erbacci 59 38
  • 31. Architetture parallele Esempio È richiesta una griglia di 4 x 4 celle di Cijout = Cijin + aik bkj tipo esagonale, ogni cella ha 3 input e 3 output. Gli elementi di A = (aij) e B = (bij) entrano nelle celle lungo le due diagonali. Entrano anche gli elementi C = (cij) che inizialmente hanno valore cij = 0. I dati fluiscono attraverso l'array in modalità pipeline e dall'alto escono i risultati. Se il delay temporale per ogni cella è unitario, l'array sistolico può terminare la computazione in un tempo T = 3n + min(4, 4), linearmente proporzionale alla dimensione della matrice (n). Giovanni Erbacci 60 Architetture parallele VLIW Joseph-Fisher Yale University Very Long Instruction Word architectures, Multiflow Computer (1984) Architetture RISC con un numero elevato di unità funzionali pipeline per sovrapporre l'esecuzione di operazioni indipendenti Il controllo è centralizzato Le risorse sono completamente controllate dal compilatore. Giovanni Erbacci 61 39
  • 32. Architetture parallele VLIW / 1 Giovanni Erbacci 62 Architetture parallele Sistemi Paralleli di classe MIMD Mainframes multiprocessor A metà degli anni '70 si diffondono i primi mainframes multiprocessore: Univac 1100/80 (1976), Burroughs B-7800 (1978), Cyber 170/720 (1979), IBM 3081 (1980). Solo il gestore del sistema beneficia del miglioramento del throughput (numero di lavori completati per unità di tempo). Rimane il von Neumann bottelneck. Sistemi multiprocessor ed elaborazione parallela E' interessante invece disporre di sistemi multiprocessore in cui le diverse CPU possono essere attive in modo concorrente nella soluzione di un singolo problema (elaborazione parallela). Multicomputer Un sistema multicomputer consiste di più calcolatori autonomi che possono comunicare o meno l'uno con l'altro (distributed memory system). Multiprocessor In un sistema multiprocessor le diverse CPU che compongono il sistema condividono una memoria centrale unica (shared memory system). Giovanni Erbacci 63 40
  • 33. Architetture parallele Esempi di Sistemi MIMD Cray Y MP/8, Cray C90/16, Cray T90/32 Cray T3D, Cray T3E IBM ES900-530-VF IBM SP1, SP2, SP3, SP4 Ipercubi N-Cube Ipercubi Intel Paragon Intel KSR1 Meiko Parsytec GC-2 Thinking Machine Corp. CM5 Fujitsu AP 100 e VPP500 NEC SX4, SX5 SGI Origin 3800 Giovanni Erbacci 64 Architetture parallele Classificazione in Base alla Memoria M M P P P P M P P P N P M M Sistema a Memoria P P Condivisa M M Sistema a Memoria Distribuita Giovanni Erbacci 65 41
  • 34. Architetture parallele Sistemi a Memoria Condivisa I processori coordinano la loro attività, accedendo ai dati e alle istruzioni in una memoria globale (shared memory), condivisa da tutti i processori Uniform Memory Access (UMA)model = SMP: Symmetric Multi Processors L’accesso alla memoria è uniforme: i processori presentano lo stesso tempo di accesso per tutte le parole di memoria l’interconnessione processore-memoria avviene tramite common bus, crossbar switch, o multistage network. ogni processore può disporre di una cache locale, le periferche sono condivise. Alcuni esempi: ETA10, Cray 2, Cray C90, IBM 3090/600 VF, NEC SX-5 I sistemi a memoria condivisa presentano un numero limitato di processori (da 2 a 32) molto potenti (possoo presentare anche un’architettura vettoriale) Questi multiprocessori sono chiamati tightly coupled systems per l’alto grado di condivisione delle risorse Giovanni Erbacci 66 Architetture parallele Sistemi a Memoria Distribuita La memoria è distribuita fisicamente tra i processori (local memory). tutte le memorie locali sono private e può accedervi solo il processore locale La comunicazione tra i processori avviene tramite un protocollo di comunicazione a scambio di messaggi (message passing). I messaggi che vengono instradati sulla rete di interconnessione In genere si tratta di sistemi che presentano un numero elevato di processori (da poche decine ad alcune migliaia), ma di potenza non troppo elevata, chiamati nodi di elaborazione. Giovanni Erbacci 67 42
  • 35. Architetture parallele Sistemi NUMA Non Uniform Memory Access (NUMA) model La memoria è fisicamemte distribuita fra tutti i processori (ogni processore ha una propria memoria locale) L’insieme delle memorie locali forma uno spazio di indirizzi globale, accessibile da tutti i processori Supporto hw per far si che ogni processore possa indirizzare la memoria di tutti i processori Il tempo di accesso dal processore alla memoria non è uniforme: – l’accesso è più veloce se il processore accede alla propria memoria locale; – quando si accede alla memoria dei processori remoti si ha un delay dovuto alla rete di interconnessione. Giovanni Erbacci 68 Architetture parallele Il concetto di Nodo P P M P P Nodo SMP Giovanni Erbacci 69 43
  • 36. Architetture parallele Condivisione Fisica e Logica Condivisione fisica della memoria le CPU hanno lo stesso spazio di indirizzamento i valori scritti in una parola da una CPU possono essere letti da un'altra. Condivisione logica della memoria determinata da come il sw, in opposizione all'hw, vede il sistema. Quando due processi (programmi in esecuzione) condividono la stessa memoria logica, le informazioni scritte in una struttura dati da uno di questi, possono essere lette dall'altro. Quando non c' condivisione logica i processi devono comunicare con forme di I/O (read e write di buffer) o tramite message passing. Giovanni Erbacci 70 Architetture parallele Condivisione Fisica e Logica / 1 Memoria fisica Memoria logica Esempi (Hw) (Sw) non condivisa non condivisa Message passing tra processori disgiunti non condivisa condivisa memoria virtuale distribuita (Linda) condivisa non condivisa message passing simulato da buffer condivisi condivisa condivisa multiprocessori a memoria condivisa In sistemi a memoria fisica condivisa il software può usare il message passing. Simulazione di memoria condivisa logicamente su macchine che possono comunicare solo tramite message passing. Linda è un modello di programmazione basato su uno spazio astratto di tuple. Ogni tupla contiene uno o più elementi dati, come un record Pascal. Tutti i processi condividono logicamente lo stesso spazio delle tuple, non importa dove risiede. Giovanni Erbacci 71 44
  • 37. Architetture parallele Rete di Interconnessione: definizioni Grafo aciclico: un grafo che non contiene cicli grado: il grado è il numero di linee connesse a un nodo in una data topologia. E’ equivalente al numero di primi vicini del nodo. E’ un indice della connettività Un grado grande è un benefico perché identifica una molteplicità di paths. Diametro: il diametro di una rete è la distanza tra i due nodi più lontani (percorso più lungo tra due nodi) Un diametro piccolo corrisponde a una latenza bassa. Neighbor: Due nodi si dicono vicini se c un link che li connette. Giovanni Erbacci 72 Architetture parallele Rete di Interconnessione Cos una rete di interconnessione? È l’insieme dei cavi che definiscono come i diversi processori di un calcolatore parallelo sono connessi tra loro e con le unità di memoria. Il tempo richiesto per trasferire i dati dipende dal tipo di interconnessione. Il tempo di trasferimento è detto communication time. La massima distanza che devono percorrere i dati scambiati tra due processori che comunicano incide sulle prestazioni della rete. Caratteristiche di una rete di interconnessione Bandwidth: identifica la quantità di dati che possono essere inviati per unità di tempo sulla rete. Occorre massimizzare la bandwidth Latenza: identifica il tempo necessario per instradare un messaggio tra due processori. Si definisce anche come il tempo necessario per trasferire un messaggio di lunghezza nulla. Occorre minimizzare la latenza Altri aspetti da considerare - Costo - Scalabilità - Affidabilità - Diametro - Degree Giovanni Erbacci 73 45
  • 38. Architetture parallele Connettività Interconnessione completa (ideale) – Ogni nodo può comunicare direttamente con tutti gli altri nodi (in parallelo) – con n nodi si ha un'ampiezza di banda proporzionale a n2. – il costo cresce proporzionalmente a n2. Giovanni Erbacci 74 Architetture parallele Bus Network La topologia Bus è costituita da un cavo coassiale (bus) al quale vengono connessi tutti I dispositivi I benefici di una rete basata su Bus sono la semplicità di costruzione e il costo molto basso. Gli aspetti negativi sono il rate di trasmissione dati limitato e di conseguenza la non scalabilità in termini di performance. Giovanni Erbacci 75 46
  • 39. Architetture parallele Cross-bar Switch Network Un cross-bar switch è una network che opera secondo un meccanismo di switching per connettere dispositivi ad altri dispositivi (processori, memoria). Meccanismo analogo a quello adottato dai sistemi telefonici. Scala meglio del bus ma ha costi maggiori Giovanni Erbacci 76 Architetture parallele Multi-Stage Switching Network In questa topologia diversi layers di switches connettono N nodi di un tipo a N nodi di un altro tipo. Il Multi-Stage Switching una Network configurabile dinamicamente. Ciò significa che gli switches che connettono i vari processori possono esssere cambiati dinamicamente, a seconda di dove va inviato il messaggio. Giovanni Erbacci 77 47
  • 40. Architetture parallele Topologia Mesh In una network a griglia, i nodi sono disposti secondo un reticolo a k dimensioni (k dimensional lattice) di ampiezza w, per un totale di wk nodi. – k=1 (array lineare) – k=2 (2D array) es. ICL DAP, Intel Paragon, La comunicazione diretta è consentita solo tra i nodi vicini. I nodi interni comunicano direttamente con altri 2k nodi. Giovanni Erbacci 78 Architetture parallele Topologia Toroidale Alcune varianti del modello a mesh presentano connessioni di tipo wrap-around fra i nodi ai bordi della mesh (topologia toroidale). Il Cray T3E adotta una topologia toroidale 3D. Giovanni Erbacci 79 48
  • 41. Architetture parallele Topologia Ipercubo Una topologia ipercubo (cube-connected) formata da n =2k nodi connessi secondo i vertici di un cubo a k dimensioni. Ogni nodo connesso direttamente a k altri nodi. Il degree di una topologia ipercubo log n ed anche il diametro log n. Esempi di calcolatori con questo tipo di network sono la CM2, NCUBE-2, Intel iPSC860, SGI Origin. Giovanni Erbacci 80 Architetture parallele Topologia Ipercubo / 1 Giovanni Erbacci 81 49
  • 42. Architetture parallele Gray Coding In un ipercubo a k dimensioni, ciascuno dei 2k vertici etichettato con un numero intero binario di k bit. Coordinate cartesiane nello spazio k-dimensionale. Gli identificatori di due nodi adiacenti differiscono di un solo bit. La distanza tra due nodi qualsiasi uguale al numero di bit differenti nei loro identificatori. Fra coppie di nodi non adiacenti sono possibili pi percorsi. Occorre un algoritmo di instradamento (routing). Esempio: XOR(Natt., Ndest) I bit a 1 indicano gli assi su cui i nodi si diversificano Il messaggio va inviato lungo uno di questi assi XOR(100,001) = 101 lungo il 1° asse oppure lungo il 3° Giovanni Erbacci 82 Architetture parallele Topologia Tree I processori sono I nodi terminali (foglie) di un albero Il degree di una network con topologia ad albero con N nodi è log2N e il diametro è 2 log 2(N) - 2 Fat tree la bandwidh della network aumenta all aumentare del livello della rete. Esempi: CM-5, Network Myrinet e QSNet Piramide Una network piramidale di ampiezza p un albero 4-rio completo con livelli, dove i nodi di ciascun livello sono collegati in una mesh bi-dimensionale. Giovanni Erbacci 83 50
  • 43. Architetture parallele Architetture RISC RISC : Reduced Instruction Set Computer contrapposto a CISC: Complex Instruction Set Computers CISC RISC IBM 370/168 VAX 11/780 XEROX IBM Berkeley Stanford Dorado RISC I MIPS Anno di completamento 1973 1978 1978 801 1981 1983 Istruzioni 208 303 270 1980 39 55 54 K 61 K 17 K 120 0 0 Dimensione 2-6 2 - 57 13 0 4 4 Microcodice Dimensione Istruzioni Reg– Reg Reg - Reg Stack 4 Reg-Reg Reg-Reg Reg - Mem Reg - Mem Mem - Mem Mem - Mem Giovanni Erbacci 84 Architetture parallele Architetture RISC / 1 CISC RISC Istruzioni complesse che richiedono Istruzioni semplici che richiedono un più cicli ciclo Ogni istruzione può far riferimento Solo le istruzioni di load e store alla memoria possono far riferimento alla memoria Nessun o poco pipelining Molto pipelining Istruzioni interpretate dal Istruzioni eseguite dall’hardware microprogramma Istruzioni a formato variabile Istruzioni a formato fisso Molte istruzioni e modalità Poche istruzioni e modalità La complessità è nel La complessità è nel compilatore microprogramma Insieme di registri singoli Insieme di registri multipli Giovanni Erbacci 85 51
  • 44. Architetture parallele Architetture RISC / 2 Superscalari Un processore superscalare ha più unità funzionali (pipeline multiple). Più istruzioni per volta vengono caricate, decodificate, eseguite. In genere: operazione Integer / operazione Floating Point / Load Pipelining delle istruzioni. Esempi di sistemi RISC superscalari: – DEC Alpha, HP PA-RISC, IBM RS/6000, (Intel Pentium), SGI Origin, IBM Power IV e Power V Giovanni Erbacci 86 52