of 62 /62
Arquitectura de Computadores [email protected] Curso 2004-2005

C105 L2 Arquitectura - tierra.aslab.upm.estierra.aslab.upm.es/~sanz/old/cursos/C1/C105L2.pdf · Arquitectura de Computadores 2 Arquitectura de Computadores •Arquitectura de computadores

Embed Size (px)

Text of C105 L2 Arquitectura - tierra.aslab.upm.estierra.aslab.upm.es/~sanz/old/cursos/C1/C105L2.pdf ·...

  • 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