Author
truongthuan
View
228
Download
1
Embed Size (px)
Arquitectura [email protected]
Curso 2004-2005
Arquitectura de Computadores 2
Arquitectura de Computadores
Arquitectura de computadores es ladisciplina que estudia la organizacin yfuncionamiento de los computadores
A veces se emplean los trminosarquitectura y organizacin ensentidos distintos: Arquitectura: Qu es capaz de hacer Organizacin: Cmo lo hace
Arquitectura de Computadores 3
Hacer una suma
:
867 X
:
778 Z
:
562 Y
:
2
1
0
1023
Memoria de 1024 8
Ejemplo:
Cmo sumar el contenido dela posicin 867 con elcontenido de la posicin 562 yalmacenar el resultado en laposicin 778?
Z X + Y
Direccin Dato
Arquitectura de Computadores 4
Hacer una suma
:
867
:
778
:
562
:
2
1
0
1023
Memoria de 1024 8
Ejemplo:
Cmo sumar el contenido dela posicin 867 con elcontenido de la posicin 562 yalmacenar el resultado en laposicin 778?
+
Direccin Dato
Arquitectura de Computadores 5
Hacer una suma
:
867
:
778
:
562
:
2
1
0
1023
Decoder & Read/Write
output
Solucin:
1. Leer en la memoria laposicin 867
Direccin 867 Read
Arquitectura de Computadores 6
Hacer una suma
:
867
:
778
:
562
:
2
1
0
1023Solucin:
1. Leer en la memoria laposicin 867
2. Almacenar lo ledo en unregistro externo
Decoder & Read/Write
output
AC
Arquitectura de Computadores 7
Hacer una suma
Solucin:
1. Leer en la memoria laposicin 867
2. Almacenar lo ledo en unregistro externo
3. Leer en la memoria laposicin 562
AC
:
867
:
778
:
562
:
2
1
0
1023
Decoder & Read/Write
output
Direccin 562 Read
Arquitectura de Computadores 8
Hacer una suma
Solucin:
1. Leer en la memoria laposicin 867
2. Almacenar lo ledo en unregistro externo
3. Leer en la memoria laposicin 562
4. Sumar lo ledo con elregistro externo
AC
:
867
:
778
:
562
:
2
1
0
1023
Decoder & Read/Write
output
sumador
Arquitectura de Computadores 9
Hacer una suma
Solucin:
1. Leer en la memoria laposicin 867
2. Almacenar lo ledo en unregistro externo
3. Leer en la memoria laposicin 562
4. Sumar lo ledo con elregistro externo
5. Almacenar la suma en laposicin 778
:
867
:
778
:
562
:
2
1
0
1023
Decoder & Read/Write
sumador
Direccin 778 Write
input
Arquitectura de Computadores 10
Cmo hacer mas que una suma ?
:
867
:
778
:
562
:
2
1
0
1023Solucin general:
Usar un programaresidente enmemoria
Decoder & Read/Write
Unidad dearitmticay lgica
Unidadde controlPrograma
......
Arquitectura de Computadores 11
Hacer mas que una suma
:
867
:
778
:
562
:
2
1 Programa0
1023Solucin general:
El programa le dainstrucciones a laUnidad de Control
Ejemplo:
00100001 110110011significa leer en lamemoria 110110011 yalmacenar la lecturaen el registro AC de laALU.
Decoder & Read/Write
Unidad dearitmticay lgica
Unidadde control
Arquitectura de Computadores 12
Hacer mas que una suma
:
867
:
778
:
562
:
2
1 Programa0
1023Solucin general:
El programa le dainstrucciones a laUnidad Central.
Ejemplo:
00100001 110110011significa leer en lamemoria 110110011 yalmacenar la lecturaen el registro AC de laALU.
Decoder & Read/Write
Unidad dearitmticay lgica
Unidadde control
Significaleer y
almacenaren AC
Arquitectura de Computadores 13
Hacer mas que una suma
:
867
:
778
:
562
:
2
1 Programa0
1023
Memoria de 1024 8
Solucin general:
El programa le dainstrucciones a laUnidad Central.
Ejemplo:
00100001 110110011significa leer en lamemoria 110110011 yalmacenar la lecturaen el registro AC de laALU.
Decoder & Read/Write
Unidad dearitmticay lgica
Unidadde control
Significa lo que sedebe leer:
110110011 = 867
Arquitectura de Computadores 14
Hacer mas que una suma
:
867
:
778
:
562
:
2 :
1 1101100110 000100001
1023Solucin general:
El programa le dainstrucciones a laUnidad Central.
Ejemplo:
00100001 110110011significa leer en lamemoria 110110011 yalmacenar la lecturaen el registro AC de laALU.
Decoder & Read/Write
Unidad dearitmticay lgica
Unidadde control
Arquitectura de Computadores 15
Principios de la arquitectura Von Neumann:
Los datos y las instrucciones se almacenan enuna sola memoria de lectura-escritura.
Los contenidos de esta memoria sedireccionan indicando su posicin, sinconsiderar el tipo del de dato contenido en lamisma.
La ejecucin se produce siguiendo unasecuencia de instruccin tras instruccin (ano ser que dicha secuencia se modifiqueexplcitamente).
Arquitectura de Computadores 16
Estructura Von Neumann
MemoriaPrincipal
Unidad Aritmtico-Lgica
Unidad Central
Unidad de Entrada y
Salida
Unidad de Control
Arquitectura de Computadores 17
Procesador
Control Unit
Memoria
ALU
Ciclos de mquina
Paso 1. BsquedaTraer una instruccin de memoria
Paso 2. DecodificacinTraducir la instruccin a comandos
Paso 4. AlmacenamientoEscribir el resultado a memoria
Paso 3. EjecucinHacer lo debido
Cuatro pasos por ciclo de mquina
Arquitectura de Computadores 18
Datos en memoriaEjemplo Memoria de 1000 x 40 bit words
Binary number 2 x 20 bit instructions
0 1 39
0 8 19 20 28 39
CO Direccin CO Direccin
Signo
Nmeros
Instrucciones
Arquitectura de Computadores 19
Formato de instruccin
0 8 19
CO Direccin
Instrucciones
La parte del cdigo de operacin (CO, OpCode, los primeros 8bits) especifican qu instruccin ser ejecutada.
La parte de la direccin (los 12 bits restantes) especifican culde las 1000 posiciones de memoria est implicada en lainstruccin.
Arquitectura de Computadores 20
Instruccin de cuatro direcciones
0 8 19
CO Operando 1 Operando 2 Resultado Siguiente
Instruccin de cuatro direcciones
Arquitectura de Computadores 21
Instruccin de tres direcciones
0 8 19
CO Operando 1 Operando 2 Resultado Siguiente
Instruccin de tres direcciones
Se usa un contador de programa (PC) para saber cual es lasiguiente instruccin
Arquitectura de Computadores 22
Instruccin de dos direcciones
0 8 19
CO Operando 1 Operando 2 Resultado Siguiente
Instruccin de dos direcciones
Se usa un contador de programa (PC) para saber cual es lasiguiente instruccin Se usa un acumulador (AC) para almacenar el resultado
Arquitectura de Computadores 23
Instruccin de una direcciones
0 8 19
CO Operando 1 Operando 2 Resultado Siguiente
Instruccin de una direcciones
Se usa un contador de programa (PC) para saber cual es lasiguiente instruccin Se usa un acumulador (AC) para almacenar el resultadoSe usa un registro como operando
Arquitectura de Computadores 24
Instruccin de cero direcciones
0 8 19
CO Operando 1 Operando 2 Resultado Siguiente
Instruccin de cero direcciones
Se usa un contador de programa (PC) para saber cual es lasiguiente instruccin Se opera sobre datos en la pila (stack)
Arquitectura de Computadores 25
Registros tpicos de la CPU
Memory Buffer Register (MBR) Memory Address Register (MAR) Instruction Register (IR) Instruction Buffer Register (IBR) Program Counter (PC) Accumulator (AC) Multiplier Quotient (MQ)
Arquitectura de Computadores 26
Registros
ALU
Unidad de Control Bus de
controlBus de datos
Bus dedirecciones
Bus del sistema
Organizacin bsica de una CPU
Arquitectura de Computadores 27
Detalles
Partes de la CPU
Unidad Aritmtico-LgicaUnidad de controlRegistrosCaminos de datos
Arquitectura de Computadores 28
Detalles de la estructura
MBR:Memory Buffer Register
Contiene una palabra que debeser almacenada en la memoria, oes usado para recibir una palabraprocedente de la memoria.
Arquitectura de Computadores 29
Detalles de la estructura
MAR:Memory Adress Register
Especifica la direccin enmemoria de la palabra que va aser escrita o leda en MBR.
Arquitectura de Computadores 30
Detalles de la estructura
IR:Instruction Register
Contiene los 8 bits del cdigo deoperacin de la instruccin que seva a ejecutar.
Arquitectura de Computadores 31
Detalles de la estructura
IBR:Instruction Buffer Register
Empleado para almacenartemporalmente la instruccincontenida en la parte derecha deuna palabra en memoria.
Arquitectura de Computadores 32
Detalles de la estructura
PC:Program Counter
Contiene la direccin de la prximapareja de instrucciones que van aser captadas de la memoria.
Arquitectura de Computadores 33
Detalles de la estructura
AC y MQ:Accumulator y MultiplierQuotient
Se emplean para almacenaroperandos y resultados deoperaciones de la ALUtemporalmente. Por ejemplo, elresultado de multiplicar dosnmeros de 40 bits es un nmerode 80 bits; los 40 bits mssignificativos se almacenan en ACy los menos significativos sealmacenan en MQ.
Arquitectura de Computadores 34
Un procesador incluye registros visibles para el usuario yregistros de control/estado.
Registros visibles:
pueden referenciarse en las instrucciones demquina.
pueden ser:
1. Uso general2. Datos3. Direcciones4. Cdigos de condicin
Registros en CPU
Arquitectura de Computadores 35
cuntos registros de propsito general ?
Variable: 8, 32, 1024 Ms en RISC, menos en CISC
Si hay muy pocos registros entonces se necesitandemasiados accesos a memoria.
Muchos ms registros no reducen considerablementelas referencias a memoria y hace la CPU mscompleja.
Registros de Propsito General
Arquitectura de Computadores 36
De cuntos bits deben ser los registros?
Deben ser de un nmero suficiente tal que se puedanmanejar las direcciones a memoria (posiblemente condireccionamiento indirecto).
Adems deben ser capaces de manejar una palabrade datos completa (tipicamanete un entero).
A veces se combinan dos registros para conformaruno solo.
Tamao de los Registros
Arquitectura de Computadores 37
Registros del 68000
El Motorola 68000es un procesadorclsico en el mbitode los sistemasempotrados
Su sucesor es elPowerPC (PPC)
Arquitectura de Computadores 38
Registros del 68000/8086/Pentium
68000
8086
80386-Pentium
Arquitectura de Computadores 39
Las instrucciones de una CPU a otra difierenbastante, sin embargo en todas las CPU se puedeencontrar el siguiente conjunto de instrucciones:
1.- Instrucciones de transferencias de datos
2.- Instrucciones aritmticas
3.- Instrucciones lgicas
4.- Control de flujo
5.- Entrada / Salida
Conjunto de instrucciones
Arquitectura de Computadores 40
Transferir |M(X)| a ACLOAD |M(X)|00000100
Transferir M(X) a ACLOAD M(X)00000010
Transferir M(X) a ACLOAD M(X)00000001
Transferir el contenido de AC a laposicin de memoria X
STOR M(X)00100001
Transferir el contenido de laposicin de memoria X a MQ
LOAD MQ,M(X)00001001
Transferir el contenido del registroMQ a AC
LOAD MQ00001010DescripcinInstruccinCO
Instrucciones de Transferencia De Datos
Se transfieren datos entre la memoria y losregistros de la ALU o entre dos registros de laALU.
Arquitectura de Computadores 41
Saltar a la instruccin indicadapor la mitad derecha de M(X)
JUMP M(X,28:39)00001110
Saltar a la instruccin indicadapor la mitad izquierda de M(X)
JUMP M(X,8:19)00001101
DescripcinInstruccinCodop
Instrucciones de Salto Incondicional
Normalmente, la unidad de control ejecutainstrucciones secuencialmente en la memoria.Las instrucciones de salto pueden cambiareste orden (ej. Operaciones repetitivas).
Arquitectura de Computadores 42
Si AC 0 saltar a la instruccinindicada por la mitad derecha deM(X)
JUMP +M(X,28:39)00001000
Si AC 0 saltar a la instruccinindicada por la mitad izquierdade M(X)
JUMP +M(X,8:19)00001111
DescripcinInstruccinCodop
Instrucciones de Salto Condicional
El salto depende de una condicin, estopermite puntos de decisin.
Arquitectura de Computadores 43
AC AC 2RSH00010101
AC AC 2LSH00010100
[AC][MQ] AC M(X)DIV M(X)00001100
[AC][MQ] AC M(X)MUL M(X)00001011
AC AC - |M(X)|SUB |M(X)|00001000
AC AC - M(X)SUB M(X)00000110
AC AC + |M(X)|ADD |M(X)|00000111
AC AC + M(X)ADD M(X)00000101
DescripcinInstruccinCodop
Instrucciones Aritmticas
Son las operaciones realizadas por la ALU.
Arquitectura de Computadores 44
RSH = desplazar a la derecha = divisin entre dos
CK
D Q
CK
D Q
CK
D Q
CK
D Q
Cmo se implementan por hardware?
Arquitectura de Computadores 45
Reemplazar el campo de direccinde la derecha de M(X) por los 12bits de la derecha de AC.
STOR M(X,28:39)00010011
Reemplazar el campo de direccinde la izquierda de M(X) por los 12bits de la derecha de AC.
STOR M(X,8:19)00010010
DescripcinInstruccinCodop
Instrucciones de Modificacin de Direcciones
Permite que la ALU haga operaciones con lasdirecciones y las inserte en instruccionesalmacenadas en memoria. Esto permite unaconsiderable flexibilidad de direccionamientoen un programa.
Arquitectura de Computadores 46
CISC vs RISC
Los tiempos de ejecucin (ciclos de reloj)dependen de la instruccin
Instrucciones ms complejas necesitan msciclos
Se puede optimizar la CPU uniformizado losciclos necesarios para cada instruccin
RISC: Reduced Instruction Set Computer CISC: Complex Instruction Set Computer
Arquitectura de Computadores 47
Ejercicio
Escribir un programa que sume el nmeroalmacenado en la posicin 867 ms elnmero almacenado en la posicin 562. Elresultado de la suma (sin considerar acarreo)se debe almacenar en la posicin 778.
Arquitectura de Computadores 48
LOAD M(867) % transfiere el contenido de 867 a ACADD M(562) % AC AC + M(562)STOR M(778) % transfiere AC a la memoria 778
Ejercicio
Escribir un programa que sume el nmeroalmacenado en la posicin 867 ms elnmero almacenado en la posicin 562. Elresultado de la suma (sin considerar acarreo)se debe almacenar en la posicin 778.
Arquitectura de Computadores 49
LOAD M(867) 00000001 001101100011ADD M(562) 00000100 001000110010STOR M(778) 00100001 001100001010
Cmo se almacena el programa?
Arquitectura de Computadores 50
Ejercicio
Escribir un programa que divida el nmeroalmacenado en la posicin 867 por 8. Elresultado de la divisin (sin considerar elresto ni la parte fraccionaria) se debealmacenar en la posicin 778.
Arquitectura de Computadores 51
LOAD M(867) % transfiere el contenido de 867 a ACRSH % divide el acumulador entre dosRSH % divide el acumulador entre dosRSH % divide el acumulador entre dosSTOR M(778) % transfiere AC a la memoria 778
Ejercicio
Escribir un programa que divida el nmeroalmacenado en la posicin 867 por 8. Elresultado de la divisin (sin considerar elresto ni la parte fraccionaria) se debealmacenar en la posicin 778.
Arquitectura de Computadores 52
Ejercicio
Escribir un programa que compare el nmeroalmacenado en la posicin 867 con el nmeroalmacenado en la posicin 562. Si el primeroes menor que el segundo copiar el contenidode la memoria 500 en la memoria 501, de locontrario se almacena en 501 el contenido de867 menos el contenido de 562.
Arquitectura de Computadores 53
1. LOAD M(867) % transfiere el contenido de 867 a AC2. SUB M(562) % AC AC - M(562)3. JUMP +M(3,28:39) % salta si AC 0 (i.e. M(867) M(562))4. LOAD M(500) % transfiere el contenido de 500 a AC5. STOR M(501) % transfiere AC a la memoria 501
Ejercicio
Escribir un programa que compare el nmero almacenadoen la posicin 867 con el nmero almacenado en laposicin 562. Si el primero es menor que el segundocopiar el contenido de la memoria 500 en la memoria 501,de lo contrario se almacena en 501 el contenido de 867menos el contenido de 562.
En la posicin derecha de 3 debe estar almacenado 5, deesta manera la tercera instruccin salta a la direccin 5 siAC 0.
Arquitectura de Computadores 54
Subrutinas
Frecuentemente la misma pieza de cdigodebe escribirse varias veces en muchaspartes diferentes de un programa.
En vez de repetir el cdigo cada vez que seanecesario, hay una ventaja obvia si lasinstrucciones comunes se escriben solamenteuna vez.
Un conjunto de instrucciones comunes quepueden utilizarse en un programa muchasveces se denomina subrutina.
Arquitectura de Computadores 55
Subrutinas
Cada vez que la subrutina se utiliza en laparte del programa principal, se pasa alcomienzo de la subrutina.
Despus que la subrutina ha sido ejecutada,se vuelve de nuevo al programa principal.
Arquitectura de Computadores 56
Uso de subrutinas
Los registros y la memoria son comunes parael programa principal y para la subrutina, Ventaja: la comunicacin de los parmetros entre
el programa principal y la subrutina es simple yrpida.
Desventaja: el programador puede olvidar queciertos registros usados por en el programaprincipal no deben ser alterados en la subrutina,esto puede causar serios problemas y la deteccinde este error es difcil.
Arquitectura de Computadores 57
Se desea hacer un programa que realice las siguientesoperaciones:
(0100) (0100) + 5(0200) (0200) + 5(0204) (0204) + 5
Ejemplo de Subrutinas
Arquitectura de Computadores 58
Se desea hacer un programa que realice las siguientesoperaciones:
(0100) (0100) + 5(0200) (0200) + 5(0204) (0204) + 5
La mejor solucin sera utilizando una subrutina que tengacomo parmetro una direccin X y que realice la operacin:
(X) (X) + 5
El programa principal debe cargar correctamente el registro Xy llamar a la subrutina tres veces.
Ejemplo de Subrutinas
Arquitectura de Computadores 59
Se desea hacer un programa que realice las siguientesoperaciones:
(0100) (0100) + 5(0200) (0200) + 5(0204) (0204) + 5
Programa principal SubrutinaLOAD X,0100 SUM5 LOAD A,(X)CALL SUM5 ADD 5LOAD X,0200 STORE (X),ACALL SUM5 RETLOAD X,0204CALL SUM5
Qu pasa si el programaprincipal estaba usando A?
Ejemplo de Subrutinas
Arquitectura de Computadores 60
Se desea hacer un programa que realice las siguientesoperaciones:
(0100) (0100) + 5(0200) (0200) + 5(0204) (0204) + 5
Programa principal SubrutinaLOAD X,0100 SUM5 PUSH ACALL SUM5 LOAD A,(X)LOAD X,0200 ADD 5CALL SUM5 STORE (X),ALOAD X,0204 POP ACALL SUM5 RET
Solucin: se usa la pila
Ejemplo de Subrutinas
Arquitectura de Computadores 61
Existe una memoria direccionada por el registro SP (stackpointer). Cmo se usa?
Cada vez que se hace PUSH X:
(SP) XSP SP + 1
Cada vez que se hace POP X:
SP SP - 1X (SP)
(es posible hacer PUSH X y luego POP Y)
Uso de la pila (Stack)
Arquitectura de Computadores 62
Hemos visto
Estructura bsica de una CPU Ciclo de operacin Formatos de instruccin Tipos de instrucciones Subrutinas