Fabio Casale, Matteo Sosso

Slides:



Advertisements
Presentazioni simili
Gestione della memoria centrale
Advertisements

La struttura fisica e logica di un elaboratore
Gestione della memoria
Introduzione allarchitettura dei calcolatori 2/ed Carl Hamacher, Zvonko Vranesic, Safwat Zaky Copyright © 2007 – The McGraw-Hill Companies srl Versione.
Elaboratore e Sistemi Operativo
Gestione della memoria
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Gestione delle subroutine
Introduzione ai PLC.
Criticità sul controllo
Struttura dei sistemi operativi (panoramica)
Il Linguaggio Macchina
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
memoria gestita staticamente:
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Lezione 4 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Il calcolatore Stefano Cagnoni e Monica Mordonini Dipartimento.
LEvoluzione dei computer In principio fu Eniac il primo calcolatore ad essere in grado di eseguire trecento moltiplicazioni al secondo. Bisogna aspettare.
ELETTRONICA DIGITALE (II Parte)
STRUTTURA GENERALE DI UN ELABORATORE
Architettura degli elaboratori
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Simulatore Breve riassunto dei comandi più importanti del simulatore MPLAB.
Architettura del calcolatore
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
Introduzione all'uso del PC
GESTIONE INTERRUPT CPU INTEL 8086
ARCHITETTURA DI UN ELABORATORE
Unità centrale di processo
Architettura di una CPU
Arch. Elab. - S. Orlando 1 Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Calcolatori Elettronici Il Processore
Codice Subroutine A Subroutine B IF DEC1 DEC2 EX WB Pipeline Pentium IF1 IF2 IF3 DEC1 DEC2 RAT ROB DIS EX P6.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Gestione dei dispositivi di I/O:
Sistemi Elettronici Programmabili
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
Clocking Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti Fronte di discesa (negativo) Falling edge.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Esercizio 14 – chiamata di una procedura Il codice deve: Passare due parametri alla procedura ‘salva’ Questa procedura deve salvare i due parametri nel.
Il calcolatore Stefano Cagnoni e Monica Mordonini
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Presentazione di sistemi Ambrosio Federica Anna Esposito 3C inf.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Il modello di Von Neumann
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
HARDWARE (2). MEMORIE Due classi di memoria MEMORIA CENTRALE –media capacità - ottima velocità MEMORIA DI MASSA elevata capacità - bassa velocità.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Transcript della presentazione:

Fabio Casale, Matteo Sosso ARCHITETTURA IA-64

Introduzione all’ IA-64 CISC RISC VLIW EPIC ARCHITETTURA IA-64 Introduzione all’ IA-64 EPIC nasce dall’analisi delle caratteristiche dalle architetture esistenti CISC RISC VLIW EPIC E’ necessario cambiare architettura! E’ necessario cambiare architettura, perdendo la compatibilita’ binaria con l’x86. Per la progetazione dell’IA 64 si e’ tenuto conto dei vantaggi e degli svantaggi delle architetture esistenti ( CISC, RISC, VLIW). Avendo perso la compatibilita’ binaria e’ necessario usare software nuovo, a partire dal sistema operativo e dai compilatori (possibile limite iniziale). IA 64 e x86 non sono compatibili a livello binario Possibile compatibilita’ con codice a 32 bit tramite emulatori o traduttori binari. Necessita’ di nuovo software (sistemi operativi, compilatori ecc.) Nuovo set di istruzioni orientate al parallelismo ( ILP )

le limitazioni del x86 Problemi x86 CISC: ARCHITETTURA IA-64 le limitazioni del x86 Problemi x86 CISC: parallelismo implementato via hardware predizione dei salti limitate risorse interne latenza memoria complessita’ hardware Per aumentare le performace dei processori a 32 bit si puo’ agire solamente sul clock e sulla lunghezza della pipeline

… sono state risolte Esecuzione parallela architettura EPIC ARCHITETTURA IA-64 … sono state risolte Esecuzione parallela architettura EPIC Predizione dei salti: uso dei predicati (predicative execution) Grandi cache suddivise su piu’ livelli, istruzioni di precaricamento dati direttamente nel codice (a compile time invece che a run time) Grande disponibilita’ di risorse, registri rotanti, pagine di memoria a dimensione variabile (indirizzamento) Chiamate a subroutine e passaggio dei parametri (register stack engine) Implementazione dei cicli

Parallelismo delle istruzioni ARCHITETTURA IA-64 Parallelismo delle istruzioni VECCHIE ARCHITETTURE unita’ hardware aggiuntive per scegliere parallelo gruppi di istruzioni da eseguire in parallelo. natura intrinsecamente sequenziale del set di istruzioni x86. Vedere pagina web lithium ARCHITETTURA EPIC ( Explicitly Parallel Instruction Computing ) la scelta dei gruppi da eseguire parallelamente e’ presa dal compilatore. non serve piu’ hardware aggiuntivo che esegue controlli a run time. il nuovo set di istruzioni permette di creare un codice contente riferimenti espliciti ai gruppi eseguibili in parallelo.

Predizione dei salti ARCHITETTURA IA-64 VECCHIE ARCHITETTURE dispositivi hardware aggiuntivi per la predizione dei salti in caso di fallimento e’ necessario svuotare la pipeline e ricaricare le nuove istruzioni piu’ lunga e’ la pipeline maggiore e’ lo svantaggio portato da una predizione errata IA-64 introduzione dei predicati ( predicative execution ) possibilita’ di eseguire entrambi i flussi di un salto il compilatore puo’ aggiungere nel codice istruzioni per aiutare la predizione dei salti

Predizione dei salti Sistema dei predicati Architettura tradizionale ARCHITETTURA IA-64 Predizione dei salti Esempio di salto eseguito nelle architetture tradizionali e nella nuova IA-64 codice stile C if a[i].ptr != 0 b[i]=a[i].l; else b[i]=a[i].r; i++; Sistema dei predicati Architettura tradizionale IA-64 load a[i].ptr load a[i].ptr p1, p2=CMP a[i].ptr != 0 p1, p2=CMP a[i].ptr != 0 jump if p2 p1 load a[i].l p2 load a[i].r load a[i].l p1 store b[i] p2 store b[i] then store b[i] i = i +1 jump load a[i].r else store b[i] i = i +1

ARCHITETTURA IA-64 Predizione dei salti Il compilatore ha la possibilita’ di inserire nel codice informazioni per aiutare la predizione dei salti. Indizi disponibili per la predizione dei salti: Strategia di predizione: Taken / Not Taken: salto probabile / improbabile Static / Dynamic: se static utilizza il valore Taken/Not Taken, lascia all’algoritmo di predizione la scelta Prefetch Sequenziale: Few / Many: indica la quantita’ di istruzioni da precaricare nel ramo prescelto

Organizzazione della memoria ARCHITETTURA IA-64 Organizzazione della memoria Con l’aumento della velocita’ dei processori e’ venuto a crearsi il problema del tempo di latenza delle memorie. Per questo motivo sono state introdotte le memorie cache. In caso di lunghe pipeline, se un solo elemento della pipeline ha bisogno di un dato residente in memoria tutta la pipeline deve fermarsi per attenderne il caricamento. VECCHIE ARCHITETTURE adozione di memorie cache introduzione di circuiti hardware per predire quali dati della memoria debbano venir caricati in cache ( hardware prefetch ) necessita’ di controllare la coerenza fra dati in cache e in memoria IA-64 adozione di memorie cache di grandi dimensioni e divise su piu’ livelli ( tre livelli per Itanium ) set di istruzioni specifico per la verifica della coerenza fra cache e memoria. possibilita’ di gestire il precaricamento in cache dei dati tramite istruzioni inserite al momento della compilazione.

Control speculation ARCHITETTURA IA-64 Permette al compilatore di caricare i dati prima che il codice ne abbia effettivamente bisogno questo permette di ridurre la perdita di tempo dovuta alla latenza delle memorie e di eseguire istruzioni in parallelo al caricamento dei dati. Vedi note disi Esistono due istrizioni speciali: - speculative load (ld.s) - check (check.s)

Control speculation Control speculation Architettura tradizionale ARCHITETTURA IA-64 Control speculation codice stile C t1=t1+1; if t1>t2 { j=a[t1-t2]; b[j]++ } Control speculation Architettura tradizionale IA-64 add t1 + 1 add t1 + 1 exception detection cmp t1 > t2 ld.s r8=a[t1-t2] jump cmp t1 > t2 Vedi note disi jump exception delivery load a[t1-t2] check.s r8 load b[j] load b[j] add b[j] + 1 add b[j] + 1

Grande disponibilita’ di risorse interne ARCHITETTURA IA-64 Grande disponibilita’ di risorse interne L’architettura IA-64 mette a disposizione un elevato numero di risorse interne: grande numero di registri interni (interi, float, flag) registri rotanti stack sui registri possibilta’ di indirizzare pagine di memoria di dimensione variabile

Grande numero di registri ARCHITETTURA IA-64 Grande numero di registri 128 registri a 64 bit per gli interi di cui 32 statici e 96 rotanti 128 registri a 82 bit per i numeri in virgola mobile di cui 32 statici e 96 rotanti 64 registri per i predicati di cui 16 statici e 48 rotanti 8 registri per i salti 128 registri speciali 1 registro CFM Guardare cos’e’ CFM

Grande numero di registri ARCHITETTURA IA-64 Grande numero di registri Schema dei registri interni dell’IA-64

ARCHITETTURA IA-64 Registri rotanti I registri vengono usati come fossero uno stack rotante. Nei momenti di inutilizzo della memoria centrale si effettua un salvataggio/ripristino dei registri più vecchi (quelli più lontani dalla posizione della finestra corrente). Man mano che la finestra avanza, la logica di controllo libera dei registri davanti ad essa per permettere altri avanzamenti, e vicerversa man mano che torna indietro il valore dei vecchi registri viene ripristinato. In conclusione il risultato di tutto ciò è una ruota di registri virtualmente infinita. La copia dei dati in memoria viene eseguita via hardware in background senza l’intervento dell’applicazione. la seconda frase fa cagare

ARCHITETTURA IA-64 Registri rotanti Registro virtuale = registro fisico – registro di rotazione base (RRB)

ARCHITETTURA IA-64 Chiamate a subroutine Il passaggio dei parametri avviene attraverso il banco dei registri, organizzato in una struttura a stack rotante di 96 registri. Ciascuna subroutine ha accesso ad un numero programmabile di registri consecutivi (la sua finestra), i primi saranno i registri dei parametri ricevuti dalla subroutine chiamante, gli ultimi quelli di uscita verso altre subroutine. Quando una subroutine A chiama un'altra subroutine B, la finestra scorre in avanti, così che quelli che per A erano i registri dei parametri di uscita, per B sono i registri dei parametri di ingresso. Al ritorno dalla subroutine la finestra scorre indietro, ripristinando la finestra precedente.

ARCHITETTURA IA-64 Chiamate a subroutine Schema del passaggio di parametri fra subroutine tramite il meccanismo dello stack sui registri.

Indirizzamento della memoria ARCHITETTURA IA-64 Indirizzamento della memoria E’ possibile indirizzare fino a 18 miliardi di GB di memoria direttamente 2^64 = 18.446.744.073.709.551.616 Byte L’ IA-64 puo’ indirizzare pagine di memoria di dimensione variabile fino a 256MB. L’ IA-32 permetteva di indirizzare solo pagine di dimensione fissa di 4KB. Vedi note disi L’ IA-64 mette a disposizione del Sistema Operativo registri per suddividere lo spazio di indirizzamento fino ad un massimo di 8 aree.

Conclusioni Grande passo in avanti rispetto all’architettura x86 ARCHITETTURA IA-64 Conclusioni Grande passo in avanti rispetto all’architettura x86 Elevata potenza specifica (maggiore efficienza a parita’ di clock) Necessita’ di riscrivere completamente il software (Sistemi Operativi, Compilatori, ecc.) Vedi note disi Viene delegato molto “lavoro” ai compilatori. L’unico processore con architettura IA-64 attualmente in commercio e’ l’ITANIUM di Intel.