Está en la página 1de 69

Arquitectura de

Computadoras
Clase #2
Arquitectura del Conjunto
de Instrucciones
Dr. Wladimir Rodríguez
Departamento de Computación
wladimir@ula.ve
http://sistemas.ing.ula.ve/~wladimir/ArquitecturaComputadoras.html
Temario
1. Introducción a la Arquitectura de Computadores
2. Arquitectura del conjunto de instrucciones (ISA)
3. Diseño Lógico
4. Aritmética para computadoras
5. Técnicas de implementación de la unidad central
de procesamiento
6. Sistema de memoria
7. Sistema de entrada/salida

Dr. Wladimir Rodríguez 2 Arquitectura de Computadores


Arquitectura del Conjunto de
Instrucciones (ISA)
• Introducción
• Modos de direccionamiento
• Tipos de instrucciones
• Tipos y tamaños de los operandos
• Formatos de las instrucciones
• Procedimientos
• Clasificación de las arquitecturas a nivel de
lenguaje máquina
• Caso de Estudio: MIPS
Dr. Wladimir Rodríguez 3 Arquitectura de Computadores
Introducción
• Nivel de lenguaje máquina o nivel ISA:
• Interfaz crítico entre el software y el hardware. Nivel más bajo
al que se puede programar un computador.

• Software

Arquitectura del repertorio de instrucciones (o nivel ISA)


Hardware

• Instrucción: Orden primitiva que debe ejecutar el


hardware.

• Objetivo común de los diseñadores de computadores:


• Encontrar un lenguaje que haga fácil la construcción del
hardware y del compilador.

• Maximizar el rendimiento y minimizar el coste o precio.

Dr. Wladimir Rodríguez 4 Arquitectura de Computadores


Introducción
• Dada una arquitectura del conjunto de instrucciones
• Software antiguo puede correr en hardware nuevo y
viceversa

• Familias de ISA
• Diferencias: ISA vs. implementación en hardware

• X86 ISA: 80x86 ⇔ Pentium4

• MIPS ISA: R2000 ⇔ R14000

• Las ISA también evolucionan


• MIPS-I, MIPS-II, MIPS-III, MIPS-IV, MIPS-MDMX,
MIPS-64

Dr. Wladimir Rodríguez 5 Arquitectura de Computadores


Clasificación de las ISA
• Basadas en almacenamiento dentro del procesador
• ISA de acumulador

• ISA de pila

• ISA de registros generales

• Basadas en la localización de los operandos para las


operaciones aritméticas

• ISA memoria a memoria

• ISA memoria a registro (CISC)

• ISA registro a registro (RISC)


Dr. Wladimir Rodríguez 6 Arquitectura de Computadores
Arquitecturas de Pila
• Pila: primero en entrar último en salir
• Operandos en las instrucciones
• Ninguno para la operaciones de ULA
• Uno para push/pop que acceden memoria

• Ventajas:
• Instrucciones muy cortas
• Compiladores fáciles de escribir

• Desventajas
• Código es ineficiente
• Tamaño de la pila & latencia de acceso

• Ejemplos
• 60s: Burroughs B5500, HP 3000/70
• Hoy: Java VM

Dr. Wladimir Rodríguez 7 Arquitectura de Computadores


Arquitecturas de
Acumulador
• Un solo registro (acumulador)
• Instrucciones
• ULA (Acc ←Acc + *M)
• Cargar al acumulador (Acc ←*M)
• Almacenar desde acumulador (*M ←Acc)
• Operandos en las instrucciones
• Uno explícito (dirección memoria)
• Uno implícito (acumulador)
• Atributos:
• Instrucciones cortas
• Diseño simple, difícil de segmentar
• Muchas cargas y almacenamientos
• Ejemplos:
• Máquinas antiguas: IBM 7090, DEC PDP-8
• Hoy: arquitecturas DSP

Dr. Wladimir Rodríguez 8 Arquitectura de Computadores


Arquitecturas de Registros
Generales
• Registros de Propósito General
• Pequeña memoria manejada por software para mantener los
valores recientemente usados

• 8 a 256 registros

• La arquitectura dominante
• Ventajas:
• Permite acceso rápido a los valores temporales

• Permite optimizar los compiladores

• Reduce el tráfico a memoria

• Desventajas:
• Instrucciones largas

Dr. Wladimir Rodríguez 9 Arquitectura de Computadores


Arquitecturas Registro a
Memoria o CISC
• Una dirección de memoria
• 2-operandos en ALU
• Ventajas
• Pocas instrucciones
• Codificación densa
• Desventajas
• Resultado destruye un operando
• Tamaño variable de instrucciones
• Duración variable de instrucciones
• Difícil de segmentar
• Ejemplos
• IBM 360/370, VAX

Dr. Wladimir Rodríguez 10 Arquitectura de Computadores


Arquitecturas Registro a
Registro o RISC
• Ninguna dirección de memoria
• 3-operandos en ALU
• Codificación menos densa
• Simplifica la asignación de registros
• Ventajas
• Instrucciones de tamaño fijo
• Fácil de segmentar
• Desventajas
• Número de instrucciones alto
• Ejemplos
• CDC6600, CRAY-1
• La mayoría de los RISC

Dr. Wladimir Rodríguez 11 Arquitectura de Computadores


Arquitectura Memoria a
Memoria
• Todos los operandos son direcciones de memoria
• Ventajas
• No se desperdician registros
• Número de instrucciones pequeño

• Desventajas
• Gran variación en el tamaño de las instrucciones
• Gran variación en la duración de las instrucciones
• Alto tráfico a memoria

• Ejemplos
• VAX (algunas instrucciones)

Dr. Wladimir Rodríguez 12 Arquitectura de Computadores


ISA Actuales

Dr. Wladimir Rodríguez 13 Arquitectura de Computadores


Características del Lenguaje
de Máquina
• Instrucción: Orden individual que ejecuta el
hardware.

• Información contenida en una instrucción:

• Operación a realizar

• Destino del resultado de la operación

• Especificación de los operandos

• Siguiente instrucción a realizar (implícitamente la siguiente


o la que se especifique en instrucciones de ruptura de
secuencia).

Dr. Wladimir Rodríguez 14 Arquitectura de Computadores


Características del Lenguaje
de Máquina
• Las características del lenguaje máquina o nivel
ISA de un computador vienen determinadas por:

• El repertorio de instrucciones

• Los modos de direccionamiento (formas de localizar


los operandos)

• La representación y tipos de datos que puede manejar

• Formato de las instrucciones (modo en el que se


codifican)

Dr. Wladimir Rodríguez 15 Arquitectura de Computadores


Sintaxis de una Instrucción en
Lenguaje Ensamblador
• Ejemplo: Lenguaje ensamblador del procesador
MIPS R2000/3000

• 4 campos básicos: etiqueta, nemónico de la instrucción,


operandos (fuentes y destino) y comentarios (opcional).

Dr. Wladimir Rodríguez 16 Arquitectura de Computadores


Modos de Direccionamiento
• ¿Qué se entiende por modo de direccionamiento?

• Las diversas formas que tiene una arquitectura (procesador) de


especificar la localización de los operandos (datos) a procesar.

• ¿Dónde pueden estar los operandos de una instrucción?

• Particularizando para una máquina de registros de propósito


general los operandos pueden estar en:

• En un registro del procesador: add r3,r1,r2

• En la propia instrucción (forma inmediata): addi r2,r1,4

• En memoria: add r2,r1,M

• Dirección efectiva (EA: Effective address): Dirección real de memoria


especificada por un modo de direccionamiento.

Dr. Wladimir Rodríguez 17 Arquitectura de Computadores


Modos de direccionamiento:
Ubicación de los operandos
• En Registros , en la propia instrucción (inmediato)
o en Memoria

Dr. Wladimir Rodríguez 18 Arquitectura de Computadores


Interpretación de las
direcciones de memoria
• Convenios para clasificar los bytes de una palabra:
• Little Endian: La dirección de un dato es la dirección de la parte
menos significativa del dato.
• Big Endian: La dirección de un dato es la dirección de la parte
más significativa del dato.
• Aspecto importante cuando se intercambia información entre
distintas máquinas.

Dr. Wladimir Rodríguez 19 Arquitectura de Computadores


Alineación de los Datos en
Memoria
• Algunas arquitecturas exigen que los objetos
mayores de un byte estén alineados en memoria.

• Definición:

• Un acceso a un objeto de tamaño t bytes en el byte de


dirección D se alinea si D mod t = 0 (mod: resto de la
división D/t).

• Es decir, la dirección del objeto debe ser múltiplo de su


tamaño en bytes.

Dr. Wladimir Rodríguez 20 Arquitectura de Computadores


Ejemplo

Dr. Wladimir Rodríguez 21 Arquitectura de Computadores


Tipos más Frecuentes

Dr. Wladimir Rodríguez 22 Arquitectura de Computadores


Arquitectura MIPS
• Máquina de carga-almacenamiento.
• Los operandos de las operaciones que realiza la ALU tienen que
estar en registros. No pueden estar en memoria. Los datos se
tienen que mover a los registros (instrucciones de carga/
almacenamiento) para procesarlos.
• Repertorio reducido tanto de instrucciones como de tipos
de datos.
• Todas las instrucciones son de la misma longitud.
• Número pequeño de modos de direccionamiento.
• 3 para acceso a operandos
• 2 para ruptura de secuencia (saltos y bifurcaciones)
• Número reducido de formatos de instrucciones.

Dr. Wladimir Rodríguez 23 Arquitectura de Computadores


MIPS: Registros
• 32 registros de 32 bits: $0 - $31.
• $1 - $31: Registros de propósito general.
• $0: Registro cuyo contenido siempre es 0.

• Contador de Programa: PC
• 32 registros de punto flotante.
• 16 doble precisión (64 bits): F0-F2-....-F30
• 16 simple precisión (32 bits): F0-F2- ...- F30 (direcciones
pares)

• Registros HI y LO para resultados aritméticos de 64 bits.


• HI,LO: 64 bits. Producto aritmética entera (multiplicación)
• LO: Cociente y HI: Resto para la división

Dr. Wladimir Rodríguez 24 Arquitectura de Computadores


Arquitectura MIPS

Dr. Wladimir Rodríguez 25 Arquitectura de Computadores


MIPS: Modos de
Direccionamiento
• Registro
• add $t0,$s0,$s1 # $t0= $s0 + $s1
• Inmediato
• addi $t0,$t1,3 # $t0= $t1 +3
• Base + desplazamiento
• lw $t6, 100($s0) # Carga: t6 = M[100+$s0]
• sw $t6, 100($s0) # Almacenamiento: M[100+$s0] = t6
• Relativo al contador de programa
• beq $t0,$t1,loop # Salto: si ($t0 = $t1) ir a loop
• Pseudodirecto
• j 1000 # Bifurcación a la posición 100
#(dentro del segmento actual de 256 Mb)
Dr. Wladimir Rodríguez 26 Arquitectura de Computadores
Codificación de los Modos
de Dirección
• La codificación de los modos de direccionamiento
de los operandos depende de:

• Número de modos de direccionamiento

• Grado de independencia entre modos y códigos de


operación

• Alternativas para la codificación según el número


de modos de direccionamiento que tenga una
arquitectura:

Dr. Wladimir Rodríguez 27 Arquitectura de Computadores


Codificación de los Modos
de Dirección
• Bajo: Codificación en el propio código de
operación de la instrucción.

• Alto: Utilización de especificadores de direcciones


que indican el modo de direccionamiento que
utiliza cada operando.

Dr. Wladimir Rodríguez 28 Arquitectura de Computadores


Tamaño de las Instrucciones

• El número de modos de direccionamiento y el


número de registros de una arquitectura influyen
directamente en el tamaño de las instrucciones.

• Cuanto mayor es el número de registros y modos de


direccionamiento más bits se necesitarán para la
codificación de los mismos. Por ejemplo: 32 registros
necesitarán como mínimo 5 bits para su codificación en
la instrucción: 00000 (R0) ………. 11111 (R31).

Dr. Wladimir Rodríguez 29 Arquitectura de Computadores


Tamaño de las Instrucciones

• Fuerzas que debe equilibrar el arquitecto de


computadores:

• El deseo de tener muchos registros y modos de


direccionamiento

• El impacto en el tamaño de las instrucciones → tamaño


de los programas

• El deseo de tener instrucciones codificadas en


longitudes fáciles de manejar o decodificar por una
implementación determinada (hardware que ejecuta el
repertorio de instrucciones).

Dr. Wladimir Rodríguez 30 Arquitectura de Computadores


Tipos de Instrucciones
• Las operaciones soportadas por la mayoría de las
arquitecturas pueden clasificarse según la siguiente
tabla:

Dr. Wladimir Rodríguez 31 Arquitectura de Computadores


Instrucciones para Control
de Flujo
• Nomenclaturas más aceptadas
• Saltos:
• Saltos CONDICIONALES

• Saltos INCONDICIONALES.

• Tipos de cambios de flujo


• Saltos condicionales
• Saltos incondicional
• Llamadas a procedimientos
• Retornos de procedimiento

Dr. Wladimir Rodríguez 32 Arquitectura de Computadores


Saltos Condicionales

• Normalmente, los saltos son relativos al PC


• La dirección de destino se da como un desplazamiento
que se suma o resta al Contador de Programa (PC).

• Código independiente de la posición


• Puede ejecutarse independientemente de su posición en
memoria.

Dr. Wladimir Rodríguez 33 Arquitectura de Computadores


Saltos Condicionales
• Un salto se realiza si la condición probada es
verdadera
• la condición que se prueba puede ser:
• Un bit especial de estado que se activa en función del
resultado de la ALU.
• add r1,r2,r3
• bz label # si (bit de estado “zero” está activo) ir a label

• Registro arbitrario que toma el valor del resultado de una


comparación.
• sub r1,r2,r3
• beqz r1,label # si (r1==0) ir a label

• En la propia instrucción de salto se realiza la comparación.


• beq $1,$2,label # si ($1==$2) ir a label

Dr. Wladimir Rodríguez 34 Arquitectura de Computadores


Saltos Incondicionales

• La dirección de la siguiente instrucción a ejecutar


es la especificada por el campo de operandos de la
instrucción de salto.

• Ejemplo: J 2000 # ir a la dirección 2000 de memoria

• La dirección de salto puede especificarse de las


siguientes formas:

• Directa

• Indirecta

Dr. Wladimir Rodríguez 35 Arquitectura de Computadores


Saltos Incondicionales
• Directa
• El campo de operandos de la instrucción especifica
directamente la siguiente instrucción que se ha de
ejecutar.
• J 1000

• Indirecta
• Saltos indirectos por registros
• jr $5

• Retornos de procedimientos o subrutinas


• RET # I8086: La dirección de retorno la recupera del
“stack”.

Dr. Wladimir Rodríguez 36 Arquitectura de Computadores


Procedimientos (Subrutinas)
• Concepto de procedimiento o subrutina
• Puede considerarse como una herramienta del programador
para estructurar los programas y permitir que un programa
desarrollado pueda ser reutilizado.
• Librerías de subrutinas

• Llamada y retorno de procedimientos: Funcionamiento


simplificado

Dr. Wladimir Rodríguez 37 Arquitectura de Computadores


Instrucciones de Llamada y
Retorno de Procedimientos
• Incluyen la transferencia del control y guardar
algún estado.

• Como mínimo, debe guardarse la dirección de retorno


en algún lugar que normalmente es: Un registro del
procesador o la pila (stack).

• Algunas arquitecturas proporcionan mecanismos


para guardar los registros. En otras, es el propio
compilador quien genera las instrucciones para
guardar los registros.

Dr. Wladimir Rodríguez 38 Arquitectura de Computadores


Instrucciones de Llamada y
Retorno de Procedimientos

• Convenios básicos para guardar los registros:


• Guarda llamador (caller-saving)

• Antes de llamar al procedimiento, se guardan los registros


cuyo contenido se quiere preservar después de la llamada.

• Guarda el llamado (called-saving)

• El procedimiento llamado guarda los registros que quiera a


utilizar.

Dr. Wladimir Rodríguez 39 Arquitectura de Computadores


Frecuencias de Uso de las
Instrucciones
Rango Instrucción Media
1 carga 22%
2 salto condicional 20%
3 comparar 16%
4 almacenar 12%
5 suma 8%
6 and 6%
7 resta 5%
8 mover reg-reg 4%
9 call 1%
10 return 1%
Total 96%
• Las instrucciones simples dominan la frecuencia de
instrucciones
Dr. Wladimir Rodríguez 40 Arquitectura de Computadores
Operaciones Básicas
• Conclusión: Soportar las siguientes operaciones
porque son las que predominan en el conjunto de
instrucciones ejecutadas.

Dr. Wladimir Rodríguez 41 Arquitectura de Computadores


Tipos y Tamaños de los
Operandos
• Bit: 0,1
• Carácter
• ASCII de 7 u 8 bits (extensiones gráficas)
• EBCDIC de 8 bits (utilizado por los grandes
computadores IBM)
• Enteros
• Números positivos y negativos representados en
complemento a 2.
• Byte: 8 bits
• Media palabra (half-word): 16 bits
• Palabra: 32 bits
Dr. Wladimir Rodríguez 42 Arquitectura de Computadores
Tipos y Tamaños de los
Operandos
• Punto flotante
• IEEE 754: Estándar para la representación en punto
flotante.

• Simple precisión (32 bits) y doble precisión (64 bits).

• Decimal
• Decimal empaquetado: Decimal codificado en binario
(BCD), 4 bits para cada dígito, dos dígitos por byte.
Ejemplo: 01001001 → 49

• Decimal no empaquetado. Ejemplo: 00000100


00001001 → 4 9

Dr. Wladimir Rodríguez 43 Arquitectura de Computadores


Especificación del Tipo de
Operando

• Dos alternativas:
• Codificarlo en el código de operación de la instrucción
(caso más frecuente).

• Añadir identificadores al dato que posteriormente serán


interpretados por el hardware (método raramente
utilizado)

• Tagged architectures: Máquina de Burroughs

Dr. Wladimir Rodríguez 44 Arquitectura de Computadores


Frecuencia del Tamaño de
Operandos

• Es importante que las arquitecturas soporten:


• Números enteros de 8, 16 y 32 bits.
• Números en punto flotante de 32 y 64 bits (estándar
IEEE754).
Dr. Wladimir Rodríguez 45 Arquitectura de Computadores
Formatos de Instrucción
• La información autocontenida en una instrucción se
codifica con unos y ceros y se empaqueta en grupos
de bits que definen los diferentes campos de una
instrucción.

• Campos de una instrucción

Dr. Wladimir Rodríguez 46 Arquitectura de Computadores


Formatos de Instrucciones
• Alternativas de diseño:
• Instrucciones de longitud variable

• Alta densidad de código.

• Programas compactos o de tamaño reducido.

• Difícil implementación hardware.

• Instrucciones de longitud fija

• Mayor rendimiento (vía segmentación de las instrucciones)

• Los programas son de mayor tamaño.

• Fácil implementación hardware.

Dr. Wladimir Rodríguez 47 Arquitectura de Computadores


MIPS: Formato de
Instrucciones
• Solo tres formatos:

Dr. Wladimir Rodríguez 48 Arquitectura de Computadores


Ejemplo de Arquitectura
CISC
• Máquina representativa CISC: VAX 11/780
• Objetivos de VAX:

• Compiladores sencillos y alta densidad de código.

• Estos objetivos dieron lugar a:

• Formato de instrucciones de longitud variable.

• Potentes modos de direccionamiento.

• Potentes instrucciones y codificación de las mismas.

Dr. Wladimir Rodríguez 49 Arquitectura de Computadores


Ejemplo de Arquitectura
CISC
• Arquitectura altamente ortogonal: El código de operación
es independiente de los modos de direccionamiento que
son independientes de los tipos de datos e incluso del
número de operandos. Una instrucción puede utilizar
cualquier modo de direccionamiento y tipo de dato de los
soportados.

• Ejemplo: SUMA
(código de operación) (tipos de datos:byte, word, ...)(nº de
operandos: 2,3)
addb2 addw2 addl2 addf2 addd2
addb3 addw3 addl3 addf3 addd3

• Cientos de operaciones se expanden a miles de


instrucciones!
Dr. Wladimir Rodríguez 50 Arquitectura de Computadores
Ejemplo de Arquitectura
RISC
• Ejemplo de procesador RISC: MIPS
• Objetivos de MIPS
• Alto rendimiento vía segmentación.

• Facilitar la implementación hardware de las instrucciones.

• Compatibilidad con compiladores altamente optimizados.

• Estos objetivos dieron lugar a:


• Instrucciones sencillas.

• Modos de direccionamiento sencillos.

• Formato de instrucciones de longitud fija.

• Gran número de registros.

Dr. Wladimir Rodríguez 51 Arquitectura de Computadores


Procedimientos
• Definición: Fragmento de código que realiza una
tarea concreta y que puede ser llamado o activado
desde otra parte del programa.

• Ventajas del uso de procedimientos


• Estructuración modular de los programas:

• Nos permite descomponer un programa complejo en otros


más sencillos que se pueden editar, compilar y depurar de
forma independiente.

• Código reutilizable

• Librerías de procedimientos

Dr. Wladimir Rodríguez 52 Arquitectura de Computadores


Pasos en la Llamada de un
Procedimiento

Dr. Wladimir Rodríguez 53 Arquitectura de Computadores


Tipos de Procedimientos
• Procedimiento anidado
• Un procedimiento A llama a otro B que a su vez llama
a otro C y ......

• Procedimiento recursivo
• Procedimiento que se llama a si mismo

• Procedimiento reentrante
• Proceso = código + estado (PC, registros, variables,..)

• Varios usuarios pueden hacer uso del mismo código


cargado en memoria pero manteniendo un estado para
cada usuario.
Dr. Wladimir Rodríguez 54 Arquitectura de Computadores
La Pila (o Stack)

• Estructura de datos tipo LIFO (Last Input First


Output) útil para:

• Contener valores pasados a un procedimiento como


parámetros.

• Salvar la información que se desee preservar en


llamadas a procedimientos.

• Por ejemplo, registros que el invocador no quiere cambiar.

• Proporcionar a un procedimiento espacio para variables


locales

Dr. Wladimir Rodríguez 55 Arquitectura de Computadores


La Pila (o Stack)
• Operaciones básicas:
• Guardar (push) y recuperar (pop).

• Normalmente, la estructura de datos crece hacia


posiciones más bajas de memoria.

• Puntero de pila (Stack Pointer, SP)


• Puntero o registro cuyo contenido apunta a la cima de
la pila.

• Ejemplo: MIPS utiliza el registro 29 ($29 o $sp) como


puntero de pila.

Dr. Wladimir Rodríguez 56 Arquitectura de Computadores


Operaciones sobre la Pila

Dr. Wladimir Rodríguez 57 Arquitectura de Computadores


Bloque de Activación
# Programa principal
.....
Llamar_a B(p1,p2,..) # Procedimiento B(...)
<guardar registros>
<cuerpo>
<restaurar registros>
<retorno>

Dr. Wladimir Rodríguez 58 Arquitectura de Computadores


Ejemplo: Arquitectura MIPS
• Convenio de los programadores para el uso de los
registros

• $a0 - $a3: Registros para paso de hasta 4 parámetros.

• $v0 - $v1: Registros para la devolución de resultados.

• $gp: puntero global que apunta a un segmento de datos


estáticos.

• $sp: Puntero de pila.

• $fp: Puntero de encuadre (frame pointer).

• $ra: Registro para guardar la dirección de retorno al


realizar la llamada.
Dr. Wladimir Rodríguez 59 Arquitectura de Computadores
Ejemplo: Arquitectura MIPS

• Instrucción MIPS para llamada a procedimientos


• Jump - and - Link (jal)

• jal ProcedureAddress # $ra= PC+ 4; ir a ProcedureAddress

• jalr registro # $ra= PC+ 4; ir a (registro)

• Instrucción MIPS para el retorno de procedimientos


Jump Register (jr)

• jr $ra # ir a la dirección dada por $ra

Dr. Wladimir Rodríguez 60 Arquitectura de Computadores


Ejemplo: Arquitectura MIPS

• Las abreviaciones de dos letras y nombre de los registros


reflejan los usos pensados para ellos en el convenio.
Dr. Wladimir Rodríguez 61 Arquitectura de Computadores
Ejemplo para MIPS
# Ejemplo para MIPS
# Programa principal
main: li $a0,5
li $a1,8
jal multi
....................
# comienzo del procedimiento
multi: addi $sp,$sp,-20 # Crea bloque de activación.
# Salva registros. Crea variables locales si se necesitan.
sw $fp, 16($sp) # guarda fp antiguo
sw $ra, 12($sp) # guarda dirección de retorno
sw $s0, 8($sp) # guarda $s0
sw $s1, 4($sp) # guarda $s1
sw $s2, 0($sp) # guarda $s2
addi $fp,$sp,16 # nuevo fp

# cuerpo procedimiento
.....
# Restaura registros
lw $s2, 0($sp) # recupera $s2
lw $s1, 4($sp) # recupera $s1
lw $s0, 8($sp) # recupera $s0
lw $ra, 12($sp) # recupera dirección de retorno
lw $fp, 16($sp) # recupera fp antiguo
addi $sp,$sp,20 # Destruye bloque activación
jr $ra # retorna al programa principal

Dr. Wladimir Rodríguez 62 Arquitectura de Computadores


Clasificación de las
Arquitecturas
• La clasificación puede realizarse atendiendo a
varios criterios entre los que destacamos:
• Almacenamiento de los operandos en la CPU.
• Además de en memoria ¿dónde se encuentran los
operandos?

• Criterio más importante que nos permite diferenciar una


arquitectura de otra

• Número de operandos explícitos por la instrucción.


• Posición del operando.
• Tipo de instrucciones
• Tipo y tamaño de los operandos
Dr. Wladimir Rodríguez 63 Arquitectura de Computadores
Almacenamiento de los
operandos en la CPU
• Alternativas para almacenar operandos en la CPU



• Ejemplo: C = A + B (C, A y B variables en
memoria)

Dr. Wladimir Rodríguez 64 Arquitectura de Computadores


Ventajas y Desventajas

• Años 60: Arquitecturas de pila.


• Años 70: Arquitecturas CISC (ej. VAX)
• Años 80: Arquitecturas RISC (ej. MIPS)
• Las arquitecturas de registros son las que dominan hoy
día!
Dr. Wladimir Rodríguez 65 Arquitectura de Computadores
Arquitectura de Registros
• Clasificación de las arquitecturas de registros
atendiendo a:
• Número de operandos: 2 o 3.
• add r1,r2 # r1=r1 + r2

• add r1,r2,r3 # r1=r2 + r3

• Número de operandos en memoria: de 0 a 3.


• add r1,r2,r3 # r1=r2 + r3

• add r1,r2,B # r1=r2 + EA(A)

• add r1,B,A # r1=EA(A) + EA(B)

• add C,B,A # EA(C)=EA(B) + EA(A)

Dr. Wladimir Rodríguez 66 Arquitectura de Computadores


Arquitectura de Registros

• Las arquitecturas de registros dominan hoy día.


• Los registros son más rápidos que la memoria

• Los registros son fáciles de usar por el compilador.

• Los registros pueden almacenar variables:

• Reducción del tráfico de memoria. Disminución del tiempo


de ejecución.

• Mejor densidad de código: unos cuantos bits son suficientes


para especificar un registro. En cualquier caso, menos que
los necesarios para indicar una dirección de memoria.

Dr. Wladimir Rodríguez 67 Arquitectura de Computadores


Arquitectura de Registros

• Notación (m,n). m: Número de operandos en


memoria; n: Número de operandos totales.

Dr. Wladimir Rodríguez 68 Arquitectura de Computadores


Número de Registros

Dr. Wladimir Rodríguez 69 Arquitectura de Computadores

También podría gustarte