|
|
Architettura dei calcolatori : un approccio strutturale - quinta edizione
|
| Editore | Pearson Education Italia |
| Autore | Tanenbaum Andrew S. |
| Titolo originale | Structured Computer Organization fifth edition |
| Editore originale | Prentice Hall |
| Pagine | 745 |
| Volumi | 1 |
| Supporto digitale | 1 CD-ROM |
| Livello | Intermedio-Avanzato |
| Lingua | Italiano |
| Data pubblicazione | 04 - 2006 |
| ISBN | 8871922719 |
|
|
| Prezzo di copertina |
| Euro 49,00 |
|
Prefazione all’edizione italiana
Prefazione
Capitolo 1 Introduzione
1.1 Approccio strutturale
1.1.1 Linguaggi, livelli e macchine virtuali
1.1.2 Attuali macchine multilivello
1.1.3 Evoluzione delle macchine multilivello
1.2 Pietre miliari nell’architettura dei computer
1.2.1 Generazione zero- Computer meccanici (1642-1945)
1.2.2 Prima generazione – Valvole (1945-1955)
1.2.3 Seconda generazione – Transistor (1955-1965)
1.2.4 Terza generazione- Circuiti integrati (1965-1980)
1.2.5 Quarta generazione –Integrazione a grandissima scala (1980-?)
1.2.6 Quinta generazione – Computer invisibili
1.3 Tipologie di computer
1.3.1 Forze tecnologiche ed economiche
1.3.2 Spettro di computer
1.3.3 Computer usa e getta
1.3.4 Microcontrollori
1.3.5 Computer per giocare
1.3.6 Personal computer
1.3.7 Server
1.3.8 Cluster di workstation
1.3.9 Mainframe
1.4 Esempi di famiglie di computer
1.4.1 Introduzione al Pentium 4
1.4.2 Introduzione all’UltraSPARC III
1.4.3 Introduzione all’8051
1.5 Unità metriche
1.6 Organizzazione del libro
Problemi
Capitolo 2 Organizzazione dei sistemi di calcolo
2.1 Processori
2.1.1 Organizzazione della CPU
2.1.2 Esecuzione dell’istruzione
2.1.3 RISC contro CISC
2.1.4 Principi di progettazione dei calcolatori moderni
2.1.5 Parallelismo a livello d’istruzione
2.1.6 Parallelismo a livello di processore
2.2 Memoria principale
2.2.1 Bit
2.2.2 Indirizzi di memoria
2.2.3 Ordinamento dei byte
2.2.4 Codici correttori
2.2.5 Memoria cache
2.2.6 Assemblaggio e tipi di memoria
2.3 Memoria secondaria
2.3.1 Gerarchie di memoria
2.3.2 Dischi magnetici
2.3.3 Floppy disk
2.3.4 Dischi IDE
2.3.5 Dischi SCSI
2.3.6 RADI
2.3.7 CD-ROM
2.3.8 CD-registrabili
2.3.9 CD-riscrivibili
2.3.10 DVD
2.3.11 Blu-Ray
2.4 Input/Output
2.4.1 Bus
2.4.2 Terminali
2.4.3 Mouse
2.4.4 Stampanti
2.4.5 Apparecchiature per le telecomunicazioni
2.4.6 Macchine fotografiche digitali
2.4.7 Codifica dei caratteri
2.5 Riepilogo
Problemi
Capitolo 3 Livello logico digitale
3.1 Porte logiche e algebra di Boole
3.1.1 Porte logiche
3.1.2 Algebra di Boole
3.1.3 Implementazione delle funzioni booleane
3.1.4 Equivalenza di circuiti
3.2 Circuiti logici digitali elementari
3.2.1 Circuiti integrati
3.2.2 Reti combinatorie
3.2.3 Circuiti per l’aritmetica
3.2.4 Clock
3.3 Memoria
3.3.1 Latch
3.3.2 Flip-flop
3.3.3 Registri
3.3.4 Organizzazione della memoria
3.3.5 Chip della memoria
3.3.6 RAM e ROM
3.4 Chip della CPU e bus
3.4.1 Chip della CPU
3.4.2 Bus del calcolatore
3.4.3 Ampiezza del bus
3.4.4 Temporizzazione del bus
3.4.5 Arbitraggio del bus
3.4.6 Operazioni del bus
3.5 Esempi di chip della CPU
3.5.1 Pentium 4
3.5.2 UltraSPARC III
3.5.3 Chip 8051
3.6 Esempi di bus
3.6.1 Bus ISA
3.6.2 Bus PCI
3.6.3 PCI Express
3.6.4 Universal Serial Bus
3.7 Interfacce
3.7.1 Chip di I/O
3.7.2 Decodifica dell’indirizzo
3.8 Riepilogo
Problemi
Capitolo 4 Livello di microarchitettura
4.1 Esempio di microarchitettura
4.1.2 Microistruzioni
4.1.3 Unità di controllo microgrammata: Mic-1
4.2 Esempio di ISA: JIJVM
4.2.1 Stack
4.2.2 Modello della memoria di IJVM
4.2.3 Insieme d’istruzioni IJVM
4.2.4 Compilazione da Java a IJVM
4.3 Implementazione di esempio
4.3.1 Microistruzioni e notazione
4.3.2 Implementazione di IJVM con Mic-1
4.4 Progettazione del livello di microarchitettura
4.4.1 Velocità/costi
4.4.2 Riduzione della lunghezza del percorso di esecuzione
4.4.3 Architettura con prefetching: Mic-2
4.4.4 Architettura a pipeline: Mic-3
4.4.5 Pipeline a sette stadi: Mic-4
4.5 Miglioramento delle prestazioni
4.5.1 Memoria cache
4.5.2 Predizione dei salti
4.5.3 Esecuzione fuori sequenza e rinomina dei registri
4.5.4 Esecuzione speculativa
4.6 Esempi del livello di microarchitettura
4.6.1 Microarchitettura della CPU Pentium 4
4.6.2 Microarchitettura della CPU UltraSPARC III Cu
4.6.3 Microarchitettura della CPU 8051
4.7 Confronto tra Pentium, UltraSPARC e 8051
4.8 Riepilogo
Problemi
Capitolo 5 Livello di architettura
5.1 Panoramica del livello
5.1.1 Proprietà del livello ISA
5.1.2 Modelli di memoria
5.1.3 Registri
5.1.4 Istruzioni
5.1.5 Panoramica del livello ISA del Pentium 4
5.1.6 Panoramica del livello ISA dell’Ultra SPARC III
5.1.7 Panoramica del livello ISA del’8051
5.2 Tipi di dati
5.2.1 Tipi di dati numerici
5.2.2 Tipi di dati non numerici
5.2.3 Tipi di dati del Pentium 4
5.2.4 Tipi di dati dell’UltraSPARC III
5.2.5 Tipi di dati dell’8051
5.3 Formati d’istruzione
5.3.1 Criteri progettuali per i formati d’istruzioni
5.3.2 Codice operativo espandibile
5.3.3 Formati delle istruzioni di Pentium 4
5.3.4 Formati delle istruzioni di UltraSPARCIII
5.3.5 Formati delle istruzioni di 8051
5.4 Indirizzamento
5.4.1 Modalità d’indirizzamento
5.4.2 Indirizzamento immediato
5.4.3 Indirizzamento diretto
5.4.4 Indirizzamento a registro
5.4.5 Indirizzamento a registro indiretto
5.4.6 Indirizzamento indicizzato
5.4.7 Indirizzamento indicizzato esteso
5.4.8 Indirizzamento a stack
5.4.9 Modalità d’indirizzamento per istruzioni di salto
5.4.10 Ortogonalità dei calcoli operativi e delle modalità d’indirizzamento
5.4.11 Modalità d’indirizzamento del Pentium 4
5.4.12 Modalità d’indirizzamento di UltraSPARC III
5.4.13 Modalità d’indirizzamento di 8051
5.4.14 Analisi delle modalità d’indirizzamento
5.5 Tipo d’istruzioni
5.5.1 Istruzioni di trasferimento dati
5.5.2 Operazioni binarie
5.5.3 Operazioni unarie
5.5.4 Confronti e salti condizionati
5.5.5 Invocazione di procedura
5.5.6 Istruzioni di ciclo
5.5.7 Input/Output
5.5.8 Istruzioni di Pentium 4
5.5.9 Istruzioni di UltraSPARC III
5.5.10 Insiemi d’istruzioni a confronto
5.6 Controllo del flusso
5.6.1 Flusso sequenziale e diramazioni
5.6.2 Procedure
5.6.3 Coroutine
5.6.4 Trap
5.6.5 Interrupt
5.7 Un esempio :le torri di Hanoi
5.7.1 Le torri di Hanoi nel linguaggio assemblativo di Pentium 4
5.7.2 Le torri di Hanoi nel linguaggio assemblativo di UltraSPARC III
5.8 Architettura IA-64 e Itanium 2
5.8.1 Il problema di Pentium 4
5.8.2 Modello IA-64 e calcolo che utilizza il parallelismo esplicito
5.8.3 Riduzione degli accessi in memoria
5.8.4 Scheduling delle istruzioni
5.8.5 Riduzione dei salti condizionati: attribuzione di predicati
5.8.6 Caricamenti speculativi
5.9 Riepilogo
Problemi
Capitolo 6 Livello macchina del sistema operativo
6.1 Memoria virtuale
6.1.1 Paginazione
6.1.2 Implementazione della paginazione
6.1.3 Paginazione a richiesta e working set
6.1.4 Politica di sostituzione delle pagine
6.1.5 Dimensione di pagina e frammentazione
6.1.6 Segmentazione
6.1.7 Implementazione della segmentazione
6.1.8 Memoria virtuale del Pentium 4
6.1.9 Memoria virtuale dell’UltraSPARC III
6.1.10 Memoria virtuale e caching
6.2 Istruzioni virtuali di I/O
6.2.1 File
6.2.2 Implementazione delle istruzioni virtuali di I/O
6.2.3 Istruzioni per la gestione di directory
6.3 Istruzioni virtuali per il calcolo parallelo
6.3.1 Creazione dei processi
6.3.2 Corso critica
6.3.3 Sincronizzazione dei processi tramite semafori
6.4 Sistemi operativi di esempio
6.4.1 Introduzione
6.4.2 Esempi di memoria virtuale
6.4.3 Esempi di I/O virtuale
6.4.4 Esempi di gestione dei processi
6.5 Riepilogo
Problemi
Capitolo 7 Livello del linguaggio assemblativo
7.1 Introduzione al linguaggio assemblativo
7.1.1 Che cos’è un linguaggio assemblativo
7.1.2 Perché usare il linguaggio assemblativo
7.1.3 Formato delle istruzioni del linguaggio assemblativo
7.1.4 Pseudoistruzioni
7.2 Macroistruzioni
7.2.1 Definizione, chiamata ed espansione di macro
7.2.2 Macro con parametri
7.2.3 Caratteristiche avanzate
7.2.4 Implementazione delle funzionalità macro negli assemblatori
7.3 Processo di assemblaggio
7.3.1 Assemblatori a due passate
7.3.2 Prima passata
7.3.3 Seconda passata
7.3.4 Tabella dei simboli
7.4 Collegamento e caricamento
7.4.1 Compiti del linker
7.4.2 Struttura di un modulo oggetto
7.4.3 Rilocazione a tempo del binding e dinamica
7.4.4 Collegamento dinamico
7.5 Riepilogo
Problemi
Capitolo 8 Architetture per il calcolo parallelo
8.1 Parallelismo nel chip
8.1.1 Parallelismo a livello delle istruzioni
8.1.2 Multithreading nel chip
8.1.3 Multiprocessori in un solo chip
8.2 Coprocessori
8.2.1 Processori di rete
8.2.2 Processori multimediali
8.2.3 Crittoprocessori
8.3 Multiprocessori con memoria condivisa
8.3.1 Multiprocessori e multicomputer a confronto
8.3.2 Semantica della memoria
8.3.3 Architetture di multiprocessori simmetrici UMA
8.3.4 Multiprocessori NUIMA
8.3.5 Multiprocessori COMA
8.4 Multicomputer a scambio di messaggi
8.4.1 Reti d’interconnessione
8.4.2 MPP: processori massicciamente paralleli
8.4.3 Cluster
8.4.4 Software di comunicazione per multicomputer
8.4.5 Scheduling
8.4.6 Memoria condivisa a livello applicativo
8.4.7 Prestazioni
8.5 Grid computing
8.6 Riepilogo
Problemi
Capitolo 9 Bibliografia e letture consigliate
9.1 Letture di approfondimento
9.1.1 Lavori introduttivi
9.1.2 Organizzazione dei calcolatori
9.1.3 Livello logico digitale
9.1.4 Livello di microarchitettura
9.1.5 Livello di architettura dell’insieme d’istruzioni
9.1.6 Livello macchina del sistema operativo
9.1.7 Livello del linguaggio assemblativo
9.1.8 Architetture per il calcolo parallelo
9.1.9 Aritmetica binaria
9.1.10 Programmazione in linguaggio assemblativo
9.2 Bibliografia alfabetica
Appendice A Aritmetica binaria
A.1 Numeri a precisione finita
A.2 Sistemi di numerazione in base fissa
A.3 Conversione tra basi
A.4 Numeri binari negativi
A.5 Aritmetica binaria
Problemi
Appendice B Numeri in virgola mobile
B.1 Principi dell’aritmetica in virgola mobile
B.2 Standard in virgola mobile IEEE 754
Problemi
Appendice C Programmazione in linguaggio assemblativo
C.1 Panoramica
C.1.1 Linguaggio assemblativo
C.1.2 Breve programma in linguaggio assemblativo
C.2 Processore 8088
C.2.1 Ciclo del processore
C.2.2 Registri d’uso generale
C.2.3 Registri puntatore
C.3 Memoria e indirizzamento
C.3.1 Organizzazione di memoria e segmenti
C.3.2 Indirizzamento
C.4 Istruzioni dell’8088
C.4.1 Trasferimento, copia e aritmetica
C.4.2 Operazioni logiche, su bit e di scorrimento
C.4.3 Cicli e operazioni iterative su stringhe
C.4.4 Istruzioni di salto e di chiamata
C.4.5 Chiamate di subroutine
C.4.6 Chiamate di sistema e subroutine di sistema
C.4.7 Osservazioni sull’insieme d’istruzioni
C.5 Assemblatore
C.5.1 Introduzione
C.5.2 as88, un assemblatore basato su ACK
C.5.3 Differenze tra assemblatori dell’8088
C.6 Tracer
C.6.1 Comandi del tracer
C.7 Installazione
C.8 Esempi
C.8.1 Esempio Hello World
C.8.2 Esempio con i registri d’uso generale
C.8.3 Istruzioni di chiamata e puntatori ai registri
C.8.4 Debugging di un programma per la stampa di array
C.8.5 Manipolazione di stringhe e istruzioni su stringhe
C.8.6 Tabella di salto
C.8.7 File: accesso diretto e accesso bufferizzato
Problemi
Indice analitico
|
|
|
|