Fondamenti di informatica: un po di storia L idea di utilizzare dispositivi meccanici per effettuare in modo automatico calcoli risale al 600 (Pascal, Leibniz) Nell ottocento vengono realizzati i primi dispositivi meccanici a programma : telai Jacquard, pianole, macchine di Babbage
Fondamenti di informatica: un po di storia Nel 1896 Hollerith fonda la Tabulating Machine Company (poi IBM), che produce sistemi meccanografici a schede Negli anni 30 vengono realizzate le prime macchine elettromecaniche (Zuse in Germania, Mark 1 ad Harvard) Nel 46 entra in servizio l ENIAC: elaboratore a valvole termoioniche e a programma filato Nel 48 ENIAC viene esteso per permettere una forma di funzionamento a programma memorizato
Fondamenti di informatica: lo sviluppo teorico Matematici e logici mostrarono come sia possibile risolvere importanti classi di problemi per via numerica Nel 1936 Turing pubblica On computable numbers, with an aaplication to the entscheidungsproblem, che mostra come sia concepibile una macchina universale in grado di calcolare tutto ciò che è calcolabile La teoria dell informazione (con un famoso articolo di Shannon del 1948) mostra come fenomeni continui possano essere descritti in modo preciso in forma discreta (campionamento e quantizzazione) L informatica teorica mostra che esistono problemi non risolvibili per via algoritmica, e problemi ardui non risolvibili (o difficilmente risolvibili) per mancanza di algoritmi efficienti
Introduzione all Architettura del Computer
Domande di partenza: 1. Che cos è un computer? 2. Da cosa è composto un computer? 3. Come interagisco con il computer? 4. Che cosa c è dentro il case? 5. Come funziona un computer?
Cos è un computer? Un computer è una macchina che: Memorizza dati Interagisce con dispositivi (schermo, tastiera, mouse) Esegue programmi I programmi sono sequenze di istruzioni che il computer esegue e di decisioni che il computer prende per svolgere una certa attività
Da cosa è composto un computer? Quattro parti principali: 1. Unità di input (tastiera, mouse) 2. Unità di output (monitor, stampante) 3. Central Processing Unit (CPU) 4. Unità di memoria (RAM, HD, FD)
Che cosa c è dentro il case? 1. Ci sono varie cose: 1. Scheda madre + CPU 2. Memoria RAM e ROM 3. HD, FD, CD-ROM 4. Scheda video, Scheda audio 5. Scheda di Rete 6. Ecc.
Come funziona un computer? (modello di John von Neumann) CPU Memoria principale (RAM e ROM) Memoria secondaria (HD, FD e CD-rom) Dispositivi di input e di output Bus dei dati
Come funziona un computer?
Come funziona un computer? Architettura di Von Neumann: la memoria della macchina è condivisa dai dati e dai programmi Architettura Harvard : esiste una memoria separata per i dati ed una per i programmi. Oggi il termine Architettura Harvard è usato per macchine co una sola memoria principale ma con due cache separate una per i programmi ed una per i dati
La memoria primaria E costituita da chip RAM (Random Access Memory) È memoria di lettura e scrittura e contiene dati in fase di modifica durante l esecuzione dei programmi e perde i dati quando si spegne il computer (volatile): SRAM (Static Random Access Memory) Tempo di accesso 1 10 ns, usata per cache L1/L2 DRAM/SDRAM ((Syncronous) Dynamic RAM) Tempo di accesso 50 100 ns, usata per memoria principale, costo 5 10 volte meno di SRAM e (50 volte più di dischi magnetici ma 100.000 volte più veloce)
Gerarchia di memoria Registri Cache L1 O(10) unità + velocità + costo - dimensione SRAM O(10 5 ) unità Cache L2 SDRAM RAM O(10 8 ) unità Dischi O(10 10 ) unità - velocità -costo + dimensione
Gerarchia di memoria Fornire molta memoria Costo delle tecnologie più economiche Prestazioni delle tecnologie più costose Principio di località i programmi accedono: a porzioni limitate di memoria durante limitati intervalli di tempo Località temporale Località spaziale
Funzionamento della Cache Cache line Cache RAM CPU
RAM memoria ad accesso diretto Nella RAM, come ovunque in un computer, le informazioni sono rappresentate con sequenze di 0 e di 1. Numeri binari. La RAM quindi è fatta per contenere tali numeri. un bit può contenere o 0 o 1 un byte è una sequenza di 8 bits una parola consiste di 4 bytes
Organizzazione della RAM La RAM è suddivisa in celle o locazioni di memoria, ognuna con un suo indirizzo univoco bit byte parola Si leggono e si scrivono singoli byte o blocchi di 4 bytes consecutivi: le parole.
Indirizzamento di byte e parole byte 0 1 2 3 4 5 6 7 8 9 10 11 parola 0 1 2 in binario 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011
Unità di misura della RAM 1 Kilo byte (KB) : 2 10 = 1024 bytes, 1000 1 Mega byte (MB) : 2 20 = 1.048.576 bytes, 1000000 1 Giga byte (GB) : 2 30 = 1.073.741.824 bytes, 10 9 1 Tera byte (TB) : 2 40 = 1.099.511.627.776 bytes, 10 12
La CPU: unità centrale di calcolo RAM CPU ALU C I 1 C I 2 C I k bus R 0 R n RC PC IP registri di calcolo (vengono memorizzati i dati usati dalle istruzioni) registro del risultato (viene memorizzato il risultato di ogni istruzione) indirizzo dell istruzione successiva (program counter) istruzione da eseguire
Ciclo Fetch-Decode-Execute Ogni ciclo di clock ha tre fasi: Accesso (legge istruzione da eseguire e la memorizza nel registro istruzione) Decodifica (l istruzione da eseguire) Esecuzione (dell istruzione)
Fetch CPU C I 1 bus R 0 RAM C I 2 C I k ALU R n RC P IP
Decode CPU bus R 0 RAM ALU C I 1 C I 2 C I k R n RC P IP
Execute CPU bus R 0 RAM ALU C I 1 C I 2 C I k R n RC P IP
CPU: caratteristiche
Instruction set Insieme di istruzioni offerte dall architettura CISC: (Complex Instruction Set Computer) Utilizzo del transistor budget per massimizzare la taglia dell instruction set Esempi: Intel X86, Pentium, P6 RISC: (Reduced Instruction Set Computer) Utilizzo del transistor budget per velocizzare un repertorio limitato di istruzioni (load/store). Esempi: MIPS RX000, SPARC, PowerPC
CISC vs RISC CISC RISC Prezzo / prestazioni Prezzo: complessità è spostata dal software all hardware Prezzo: complessità è spostata dall ahrdware al software Prestazioni: riduzione del codice, maggiore CPI. Prestazioni: minore CPI, maggiore dimensione del codice Strategie di progettazione Ampio insieme di istruzioni, che permettono di compiere sia operazioni semplici che complesse (corispondenti di istruzioni in HLL) Supporto per HLL è in hardware Unità di controllo in microcodice Meno transistors per i registri Insieme di funzioni base, mono-ciclo Supporto per HLL è fatto via software Indirizzamento semplice (LOAD STORE da registro a registro) Transistors usati per aumentare il numero di registri Pipeline
CPU: Pipeline
CPU: Pipeline Esempio Esecuzione di 10 9 istruzioni su un processore a 500 Mhz: Con pipeline a 5 stadi: (10 9-1)+5 cicli = ((10 9-1)+5) *2 ns = 2s Senza pipeline 10 9 *5 cicli = 10 9 * 5 *2 ns = 10s