1 / 124

Struttura del Computer

Struttura del Computer. Unità Logico- Aritmetica (ALU). Unità di Input. Memoria. Unità di Output. Unità di Controllo. I/O. CPU o Processore. L’ Unità di Input accetta informazioni codificate dall’Operatore. Tale informazione può essere memorizzata o elaborata dall’ ALU.

yuri
Download Presentation

Struttura del Computer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Struttura del Computer Unità Logico- Aritmetica (ALU) Unità di Input Memoria Unità di Output Unità di Controllo I/O CPU o Processore L’Unità di Input accetta informazioni codificate dall’Operatore Tale informazione può essere memorizzata o elaborata dall’ALU La sequenza di passi necessaria ad elaborare l’informazione Viene determinata da un programma residente in memoria I risultati sono presentati all’esterno tramite le unità di Output Tutte queste operazioni sono coordinate dall’unitàdi controllo

  2. Istruzioni e Dati Istruzioni ( o istruzioni macchina) Sono comandi che: Governano il trasferimento di Informazioni sia all’interno del computer sia tra computer e dispositivi di I/O Specificano le operazioni Aritmetico-Logiche da effettuare Un’insieme di istruzioni che svolgono un determinato compito è un PROGRAMMA

  3. Istruzioni e Dati (cont.) I DATI sono numeri o caratteri codificati (estesa) Ogni numero, carattere o istruzione è codificata con una Una stringa di cifre binarie dette BIT (BInary digiT) Ognuno dei quali può assumere il valore 0 oppure 1 0 = 0000  0*23+ 0*22+ 0*21+ 0*20 1 = 0001  0*23+ 0*22+ 0*21+ 1*20 2 = 0010  0*23+ 0*22+ 1*21+ 0*20 6 = 0110  0*23+ 1*22+ 1*21+ 0*20

  4. Programma Alto Livello main() { int a,b,i; int c[100]; char *p; a=100; b=200; a=a+b; for (i=0;i<100;i++) { c[i]=a+i; } b=0; } load a,r1 load b,r2 add r1,r2 store r2,a I1  PC PC  MAR UC (Read: Load a,r1)  MDR MDR  IR a  MAR UC (Read: a)  MDR MDR  R1

  5. Programma Alto Livello Memoria Istruz. 1 i1 i+1 Istruz. 2 Progr. ……… i+n Istruz. n 100 a 200 b i Dati ** c ** c+1 …. …. c+100 ** main() { int a,b,i; int c[100]; char *p; a=100; b=200; a=a+b; for (i=0;i<100;i++) { c[i]=a+i; } b=0; }

  6. Sommario • Quali sono le istruzioni definite (Instruction Set) • Come si definiscono i dati • Come si accede ai dati da programma (Indirizzamento) • Come si cambia in flusso di esecuzione di un programma • in base a risultati di operazioni aritmetico-logiche (salti, condizioni)

  7. Memoria Principale Composta di Celle di 1 BIT Accesso a gruppi di n BIT (word) Ogni Operazione elementare legge o scrive 1 word n = Lunghezza della word ([16-64]) n=32 Ogni word ha associato un indirizzo che è un numero binario a k BIT k bit  2k numeri nell’intervallo 0 – (2k –1) 2k = Spazio di indirizzamento Es: k=24  S.I. = 224 word  16 Mword k=32  S.I. = 232 word  4 Gword

  8. Memoria (cont.) Unità di controllo ALU M E M O R I A M D R ….. R0 R1 Rn-1 M A R P C I R CPU MDR = Memory Data Register MAR = Memory Address Register PC = Program Counter IR = Instruction Register

  9. Memoria Principale (cont.) n bit Word 0 0 1 Word 1 2 Word 2 3 2 1 0 Byte n n-1 3 2 1 0 i • • • • • • • Word i 2k-1 Word 2k-1 Ogni word può contenere DATI (numeri, caratteri) o ISTRUZIONI

  10. 31 30 2 1 0 Numeri Modulo e Segno Modulo Bit di segno 0 = Positivo 1 = Negativo Modulo è espresso in notazione binaria posizionale Modulo = b30* 230+ b29* 229+…….+ b1* 21+ b0* 20 [-2.147.483.647,+2.147.483.647]

  11. 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 Numeri (cont.) Es: 35 = 0* 230+ 0* 229+……+ 1* 25+ 0* 24+ 0* 23+ 0* 22+ 1* 21+ 1* 20 +35 = 0 0 0 1 0 0 0 1 1 -35 = 1 0 0 1 0 0 0 1 1 +0 = ? -0 = AMBIGUITA’

  12. 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 Numeri (cont.) Complemento a 1: Numeri Positivi = come modulo e segno Numeri Negativi = si invertono i bit del corrispondente positivo +35 = 0 0 0 1 0 0 0 1 1 -35 = 1 1 1 0 1 1 1 0 0 +0 = ? -0 = AMBIGUITA’

  13. -02 = +0 = -01 = 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 Numeri (cont.) Complemento a 2: Numeri Positivi = come modulo e segno Numeri Negativi = Complemento a 1 + 1 +35 = 0 0 0 1 0 0 0 1 1 -351 = 1 1 1 0 1 1 1 0 0 -352 = 1 1 1 0 1 1 1 0 1

  14. Caratteri ASCII (7 bit) 32 bit 8 bit 8 bit 8 bit 8 bit Carattere ASCII Carattere ASCII Carattere ASCII Carattere ASCII Es: “ALBA” 3 2 1 0 A B L A

  15. Istruzioni Load a , r1 Add r1 , r2 Store r2 , b Opcode Operandi 32 bit 8 bit 24 bit OpCode Indirizzo Operando 28 = 256 istruzioni

  16. Problema 1 ? 0100111000011010101011110000100 Da una configurazione binaria contenuta in una locazione di memoria, è possibile dire se si tratta di numero,carattere o istruzione ? NO Risposta?:

  17. Convenzioni 31 0 30 1 2 29 1 30 31 0 0 0 3 0 2 1 1 2 3 0 7 4 6 5 6 5 4 7 4 4 2k-4 2k-4 2k-1 2k-4 2k-3 2k-2 2k-2 2k-3 2k-4 2k-1 Minima unità indirizzabile è il Byte Big-Endian Little-Endian

  18. 0 … 1000 I N F O 1004 R M A T 1008 I C A 2k-4 Problema 2 ? Un calcolatore con memoria indirizzabile a Byte, Organizzato con word di 32 bit secondo lo schema Big-Endian. Se un programma legge da tastiera la parola “INFORMATICA” e la memorizza in byte consecutivi a partire dalla locazione 1000. Quale sarà il contenuto Della memoria?

  19. Accesso alla Memoria Fetch (Lettura) Copia il contenuto della memoria  CPU Store (Scrittura) CPU  Memoria

  20. 00100010 0000000110001000010000 Linguaggi di Programmazione Linguaggi ad Alto Livello (Fortran, Cobol, C, C++, ecc.) Compilatore Assemblatore Linguaggio Macchina Assembler LOAD R0,R1

  21. Istruzioni Istruzioni ( o istruzioni macchina) Sono comandi che: Governano il trasferimento di Informazioni sia all’interno del computer sia tra computer e dispositivi di I/O Specificano le operazioni Aritmetico-Logiche da effettuare Un’insieme di istruzioni che svolgono un determinato compito è un PROGRAMMA

  22. Istruzioni • Trasferimento dati tra Memoria e CPU • Operazioni Aritmetiche e Logiche sui dati • Controllo del flusso del programma • Operazioni di I/O

  23. Istruzioni (cont.) Indirizzi in memoria A, B, LOC, VAR Registri R0, R1, ACCUM, IOSTAT, IOREAD Trasferimento dati R0 [LOC] Operazioni C = A + B  C  [A] + [B]

  24. ADD A B C Istruzioni (cont.) C  [A] + [B] Istruzione a 3 Indirizzi ADD A,B,C OpCode Source1,Source2,Destination

  25. ADD A B Istruzioni (cont.) C  [A] + [B] Istruzione a 2 Indirizzi OpCode Source1,Destination ADD A,B  B  [A] + [B]

  26. MOVE B C ADD A C Istruzioni (cont.) C  [A] + [B] MOVE B,C  C  [B] ADD A,C  C  [A] + [C]

  27. ADD A B C MOVE B C ADD A C Istruzioni (cont.) C  [A] + [B] ADD A,B,C MOVE B,C  C  [B] ADD A,C  C  [A] + [C]

  28. ADD R0 R1 R2 Istruzioni (cont.) Registri Ogni CPU ne ha da 8 a 64 8 registri  3 bit per indirizzarli 64 registri  6 bit per indirizzarli • Sono più veloci • Indirizzamento con numero minore di bit ADD R0, R1, R2 Compilatore deve ottimizzare l’uso dei registri

  29. MOVE B ADD A STORE C Istruzioni (cont.) Istruzioni ad 1 Operando OpCode Source OpCode Destination L’altro operando è implicito. E’ un registro fissato della CPU (ACCUMULATORE) MOVE B  ACC  [B] ADD A  ACC  [A] + [ACC] STORE C  C  [ACC] C  [A] + [B]

  30. Problema 3 ? Scrivere un Programma che valuti l’espressione: A*B + C*D In un processore con Accumulatore, ipotizzando che esistano le istruzioni: Load, Store, Add, Multiply

  31. n bit i MOVE A, R0 i+1 ADD B, R0 i+2 MOVE R0, C A B Dati C Esecuzione di Istruzioni C  [A] +[B] MOVE A, R0 ADD B, R0 MOVE R0, C Programma Esecuzione in 2 Fasi: Fetch dell’Istruzione Esecuzione dell’Istruzione

  32. Sequenze Lineari i MOVE NUM1, R0 i+1 ADD NUM2, R0 i+2 ADD NUM3, R0 • • • i+n-1 ADD NUMn, R0 i+n MOVE R0, C C NUM1 NUM2

  33. Controllo di Flusso: Salto i MOVE N, R1 i+1 CLEAR R0 LOOP Determino l’indirizzo del NUM successivo ed Eseguo ADD NUM,R0 DEC R1 Branch > 0 LOOP MOVE R0, C N K C NUM1 NUM2 • • NUMK

  34. Controllo di Flusso: Condizioni Registro di Stato C V Z N N = 1 L’operazione corrente produce un risultato negativo Z = 1 L’operazione corrente produce un risultato zero V = 1 L’operazione corrente produce un overflow C = 1 L’operazione corrente produce un riporto

  35. Modalità di indirizzamento Indirizzamento a Registro Operando contenuto in un registro della CPU. Il nome del registro è specificato nell’istruzione ADD A, R0 Indirizzamento Assoluto Operando è una locazione di memoria. L’indirizzo della locazione è specificato nell’istruzione ADD A, R0

  36. Modalità di indirizzamento (cont.) Indirizzamento immediato Operando definito esplicitamente nell’istruzione. ADD #200, R0 Indirizzamento indiretto Indirizzo dell’operando è contenuto in un registro o una locazione di memoria (puntatori). ADD (A), R0

  37. Modalità di Indirizzamento (cont.) Indirizzamento indiretto (cont.) i MOVE (A), R0 • • • A C C Operando

  38. Modalità di Indirizzamento (cont.) i MOVE N, R1 i+1 CLEAR R0 LOOP Determino l’indirizzo del NUM successivo ed Eseguo ADD NUM,R0 Move N, R1 Clear R0 Move #NUM1, R2 LOOP: Add (R2), R0 Inc R2 Dec R1 Branch > 0 LOOP Move R0,C DEC R1 Branch > 0 LOOP MOVE R0, C N K C NUM1 NUM2 • • NUMK

  39. Problema 4 ? • Scrivere un programma per eseguire il calcolo • C = A1*B1 + A2*B2 + A3*B3 • Programma che esegue una sequenza lineare • Scrivere un programma con ciclo • Calcolare il numero di accessi alla memoria • richiesti sia per a) che b).

  40. Problema 5 ? Scrivere un programma per eseguire il calcolo Il valore n è memorizzato alla locazione N. Calcolare i valori di k1 e k2nella formula k1+k2n Che rappresenta il numero di accessi alla memoria Per il programma scritto.

  41. Verifica R1 200 R2 500 100 ADD #200, R2 ADD A, R2 • • 1000 100 MOV #A,R1 ADD (R1), R2 A=1200 1500 C=1500 1000 ADD (C), R2

  42. Problema 6 ? Avere un gran numero di registri riduce Gli accessi alla memoria? Suggerire un semplice problema computazionale Che evidenzi ciò e mostrare la validità su una Macchina con 2 registri ed una con 4. “ Dati due array di k numeri A e B trovare il massimo di A ed il massimo di B e sommare i due massimi. “

  43. CONT = K MAX=0 SI MAX < A(CONT) ? MAX=A(CONT) NO CONT = CONT-1 SI CONT > 0 ? NO MAX_A=MAX Soluzione Problema 6 START Trovare il MAX di A Trovare il MAX di B Sommare i due MAX END

  44. Soluzione Problema 6 CONT = K START MAX=0 SI Trovare il MAX di A MAX < B(CONT) ? MAX=B(CONT) NO Trovare il MAX di B CONT = CONT-1 Sommare i due MAX SI CONT > 0 ? NO END MAX_B=MAX

  45. R0  #K CONT = K R1  #0 MAX=0 R2  #A SI MAX < A(CONT) ? R3  R1-[(R2)] SI MAX=A(CONT) NO R3 < 0 ? R1  [(R2)] NO CONT = CONT-1 R2  [R2] + 1 SI CONT > 0 ? R0  [R0] - 1 NO SI R0 > 0 ? MAX_A=MAX NO MAX_A  [R1]

  46. MOV #K, R0 R0  #K R1  #0 MOV #0, R1 R2  #A MOV #A, R2 R3  [(R2)] – R1 LOOP_A: SUB (R2), R1, R3 NO BRANCH < 0 STEP_A R3 < 0 ? R1  [(R2)] MOV (R2), R1 SI STEP_A: INC R2 R2  [R2] + 1 DEC R0 R0  [R0] - 1 SI BRANCH > 0 LOOP_A R0 > 0 ? NO MOV R1,MAX_A MAX_A  [R1]

  47. MOV #K, R0 MOV #K, R0 MOV #0, R1 MOV #0, R1 MOV #A, R2 MOV #A, R2 LOOP_A: SUB (R2), R1, R3 LOOP_A: MOV R1,R3 SUB (R2), R3 BRANCH < 0 STEP_A BRANCH < 0 STEP_A MOV (R2), R1 MOV (R2), R1 STEP_A: INC R2 STEP_A: INC R2 DEC R0 DEC R0 BRANCH > 0 LOOP_A BRANCH > 0 LOOP_A MOV R1,MAX_A MOV R1,MAX_A

  48. MOV #K, R0 MOV #0, R1 MOV #A, R2 LOOP_A: MOV R1,R3 SUB (R2), R3 BRANCH < 0 STEP_A MOV (R2), R1 STEP_A: INC R2 DEC R0 BRANCH > 0 LOOP_A MOV R1,MAX_A MOV #K, R0 MOV #0, R1 MOV #B, R2 LOOP_B: MOV R1,R3 SUB (R2), R3 BRANCH < 0 STEP_B MOV (R2), R1 STEP_B: INC R2 DEC R0 BRANCH > 0 LOOP_B ADD MAX_A, R1 MOV R1,SOMMA

  49. R0  #K CONT  #K MAX_A  #0 R1  #0 R0  #A R2  #A R1 [MAX_A] R3  [(R2)] – R1 R1  [(R0)] – R1 NO R3 < 0 ? NO R1 < 0 ? R1  [(R2)] SI R1  [(R0)] SI R2  [R2] + 1 MAX_A  [R1] R0  [R0] + 1 R0  [R0] - 1 R1  [CONT] SI R0 > 0 ? R1  [R1] - 1 NO NO SI MAX_A  [R1] R1 > 0 ? CONT  [R1]

  50. CONT  #K MAX_A  #0 R0  #A R1 [MAX_A] MOV #K,CONT MOV #0,MAX_A MOV #A,R0 LOOP_A: MOV MAX_A,R1 SUB (R0),R1 BRANCH < 0 STEP_A MOV (R0),R1 MOV R1,MAX_A STEP_A: INC R0 MOV CONT,R1 DEC R1 BRANCH = 0 OUT_A MOV R1,CONT BRANCH LOOP_A OUT_A: R1  [(R0)] – R1 NO R1 < 0 ? R1  [(R0)] SI MAX_A  [R1] R0  [R0] + 1 R1  [CONT] R1  [R1] - 1 NO SI R1 > 0 ? CONT  [R1]

More Related