SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Palabras clave: set de instrucciones (ISA), lenguaje ensamblador, procesador, lenguaje de máquina.
Contenido
1
2
3
4
5
6
7
8
MIPS Microprocessor without Interlocked Pipeline Stages
Tipos de Instrucción
Modos de Direccionamiento
Traducción de ensamblador a máquina
Herramienta de simulación: MARS
Breve introducción a la aritmética para procesadores
Qué es el conjunto de instrucciones
Registros
Conjunto de instrucciones
(ISA – Instruction Set Architecture)
Unidad 2 / Escenario 3
Lectura fundamental
Diariamente se utilizan sistemas de cómputo para apoyar tareas en diversos (si no todos) campos.
Desde la ingeniería, hasta la agricultura. Gracias a las interfaces de usuario amigables, estas tareas
se realizan de forma casi trivial, de forma que los usuarios aprenden rápidamente utilizar nuevos
dispositivos o aplicaciones.
A través de esta lectura se presenta una introducción a qué pasa en el sistema de cómputo para
que sea capaz de traducir un conjunto de pasos de un algoritmo, en operaciones ejecutables por el
hardware del computador.
Esta introducción ayudará a responder:
¿Cómo el hardware de estos dispositivos entiende nuestras órdenes?
¿Cómo un computador recibe y ejecuta tareas?
Adicionalmente, este espacio permitirá entender cómo se traduce una instrucción a un conjunto que
1s y 0s que el hardware del computador pueda interpretar y ejecutar.
1.	 MIPS Microprocessor without Interlocked Pipeline Stages
En este módulo se estudiará una de las arquitecturas más populares en la actualidad: aquella en la
que la memoria de datos sólo se puede acceder a través de instrucciones de lectura y escritura load/
store. Específicamente, se estudiará esta arquitectura desde un caso particular: MIPS corresponde a
la sigla de Microprocessor without Interlocked Pipeline Stages (Microprocesador sin etapas de pipeline
bloqueadas). Su nombre se debe a que, en esta arquitectura, las instrucciones se ejecutan por etapas
en el procesador. Adicionalmente, estas etapas no dependen unas de otras y todas las instrucciones se
ejecutan pasando por todas las etapas. A este mecanismo de ejecución de instrucciones se le denomina.
El pipeline permite un paralelismo a nivel de instrucción. La razón es que más de una instrucción se puede
ejecutar a la vez, siempre y cuando estén en diferentes etapas. En la Figura 1 se muestra un ejemplo.
En la parte superior de la imagen se ejecuta el proceso de lavar la ropa (que representa, como un
recurso ilustrativo, una instrucción) sin aprovechar el pipeline, y en la parte inferior, aprovechando
el pipeline. De acuerdo con la imagen, lavar la ropa se hace en 4 etapas: lavado, secado, planchado y
guardado. Sin aprovechar el pipeline, cada “tanda” (instrucción) pasa por las 4 etapas, y solo hasta que
se acaben las todas las etapas, inicia la siguiente “tanda” (instrucción). Aprovechando el pipeline, la
“tanda” uno inicia, y tan pronto pasa la primera etapa, inicia la segunda “tanda”: mientras la primera se
encuentra en secado, la segunda está en la etapa de lavado.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 2
POLITÉCNICO GRANCOLOMBIANO 2
Así, sin pipeline 4 “tandas” (equivalentes a las instrucciones) se ejecutan en 8 horas. Con pipeline, las
mismas 4 “tandas” se realizan en 3 horas y media. Al pipeline se le denomina paralelismo a nivel de
instrucciones y se verá con más detalle en la Unidad 4.
Figura 1. Proceso de lavado de ropa
Fuente: elaboración propia
Se ha seleccionado MIPS como la arquitectura a ser estudiada porque se basa en un conjunto de
características y principios de diseño que facilitan el aprendizaje de la arquitectura del computador.
Una de las características es la simplicidad; por ejemplo: todas las instrucciones tienen el mismo
tamaño que es, además, el mismo tamaño de los datos: 32 bits para MIPS32 y 64 bits para MIPS64.
Figura 2. Tipos de Arquitectura MIPS: MIPS32 y MIPS64
Fuente: elaboración propia
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 3
POLITÉCNICO GRANCOLOMBIANO 3
Los principios de diseño de MIPS son (Hennessy & Patterson, 2000):
•	 La simplicidad favorece la regularidad. Que se ve reflejado en el hecho de que todas las
instrucciones tengan el mismo tamaño, todas las instrucciones pertenezcan a alguno de
tres grandes tipos y todas las instrucciones de un mismo tipo tengan el mismo formato de
instrucción.
•	 Si es más pequeño es más rápido. El manejo de registros en MIPS es óptimo. Además,
la cantidad de registros coincide con el tamaño de las instrucciones, facilitando también
la regularidad. El usar registros para almacenar los datos más inmediatos, ayuda a que el
procesador sea más rápido.
A continuación, se define lo que es el conjunto de instrucciones, específicamente ejemplarizando
con MIPS. En la siguiente lectura se realizará un repaso por algunas de las secciones de esta lectura,
particularizando sobre el proceso de diseño de un conjunto particular, propio, que parte de un reto de
diseño.
2.	Qué es el conjunto (set) de instrucciones
Como se presentó en el escenario 1, la arquitectura del computador estudia cómo un lenguaje de
programación se traduce a un conjunto de instrucciones que pueden ser interpretadas y ejecutadas
por una interconexión de elementos de hardware. Al conjunto de instrucciones se le denomina
ISA (Instruction Set Architecture) y a la interconexión de los elementos de hardware se le denomina
microarquitectura. El conjunto de instrucciones representa todas las instrucciones que puede
interpretar y ejecutar el hardware. Se distribuyen en diferentes tipos, según su funcionalidad. Algunas
orientadas a la ejecución de operaciones aritméticas o lógicas, otras a los saltos condicionales, otras
a los saltos incondicionales, etc. Adicionalmente, el conjunto de instrucciones incluye la definición
de los registros que se utilizan en el sistema, los modos de direccionamiento y del formato en el que
cada tipo de instrucción se traduce a lenguaje de máquina. En las secciones siguientes se detallarán y
ejemplificarán cada uno de estos elementos.
En la lectura complementaria se puede encontrar una versión del conjunto de instrucciones de MIPS
que incluye la definición completada y detallada de las instrucciones, su tipología, los registros que se
utilizan, los modos de direccionamiento y las estructuras que definen las tipologías para escribir las
instrucciones en formato binario. Es importante aclarar que más que una lectura, este documento es un
manual que puede ser consultado cuando sea necesario y que no se debe leer de forma continua.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 4
POLITÉCNICO GRANCOLOMBIANO 4
3.	Tipos de instrucción
De acuerdo con la documentación de MIPS, las instrucciones de esta arquitectura se agrupan en
3 grandes categorías, de acuerdo con su formato de instrucción: R, I y J. El tipo R (R de registros)
corresponde a aquellas instrucciones en la que los datos (operandos y resultados) son almacenados
en registros (Por ejemplo las instrucciones aritméticas o las lógicas). Las instrucciones de tipo I
(I de inmediato) corresponden aquellas donde el valor con el que se opera viene como parte de la
instrucción (equivalente a una constante).
Finalmente, las instrucciones tipo J, corresponde a instrucciones que permiten el cambio del flujo
del programa, como aquellas usadas en saltos condicionales y aquellas correspondientes a saltos
incondicionales (Araújo, Pádua, Andrade, & Correa, 2014).
Más allá de los tipos de instrucciones definidos por el formato de instrucción, las instrucciones se
pueden agrupar en diferentes categorías, de acuerdo con su utilidad y uso en la implementación de
algoritmos. A continuación se presentan en las categorías más generales:
3.1.	 Aritmético-lógicas
Como su nombre lo indica, corresponden a todas aquellas que reciben 3 parámetros: 2 indicando los
operandos y 1 indicando el resultado, y adicionalmente aplican una operación aritmética o lógica.
Por ejemplo:
add $s0, $s1, $s2
indica que en $s0 se guarde el resultado de sumar (add) $s1 con $s2.
3.2.	Artiméticas-inmediatas
Son muy similares a las anteriores, pero cambia el modo en el que se direccionan los datos que
se van a operar. En las inmediatas los datos a operar son constantes cuyo valor se incluye en la
misma instrucción. A diferencia de las anteriores, en las que el valor se almacena en un registro y la
instrucción incluye es la dirección del registro.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 5
POLITÉCNICO GRANCOLOMBIANO 5
Por ejemplo:
addi $s0, $s1, 127
indica que en $s0 se guarde el resultado de sumar (addi) $s1 con el valor constante 127.
En lenguaje ensamblador de MIPS, las constantes están en decimal por defecto. Para escribirlas en
binario, hay que antecederlas con 0b y en hexadecimal con 0x.
3.3.	De transferencia de datos
Permiten, en esencia, comunicar los registros con la memoria RAM, de manera que se puedan cargar
datos en los registros desde la memoria RAM (load (Resaltar y poner con un tipografía como de
código)) o guardar datos desde los registros hacia la memoria RAM (store (Resaltar y poner con un
tipografía como de código)).
Por ejemplo:
sw $s0,0($s1)
indica que se debe guardar (sw) el valor de $s0 en la posición apuntada por $s1(Es decir que $s1
no contiene un valor sino una dirección). El 0 que antecede el ($s1) indica que se debe guardar
justamente en esa posición. Si fuera un 4, indicaría que es 4 bytes delante de la dirección apuntada
por $s1, o un 8, indicaría 8 bytes delante de la dirección apuntada por $s1. En MIPS el valor que
antecede el registro que apunta la dirección debe ser una constante numérica (como en el ejemplo
que es 0).
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 6
POLITÉCNICO GRANCOLOMBIANO 6
3.4.	Salto
3.4.1.	 Condicionales
Permiten ir a una línea de código de acuerdo con una condición.
Por ejemplo:
beq $s0, $s1, fin
Compara si $s0 es igual a $s1 y si lo es, salta a la línea etiquetada con fin.
3.4.2.	 Incondicionales
Permiten moverse entre distintas líneas del código, saltando de una línea a otra sin depender de una
condición.
Por ejemplo:
j for
Permite saltar a la línea de código que tenga la etiqueta “for” (Resaltar y poner con un tipografía
como de código).
3.4.3.	 Comparación
Son muy similares a las aritmético-lógicas. Se encargan de poner un registro en 1 o 0 en caso de que
se cumpla una condición.
Por ejemplo:
slt $s0,$s1, $s2
pone en 1 el registro $s0 en caso de que $s1 sea menor que $s2.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 7
POLITÉCNICO GRANCOLOMBIANO 7
4.	Registros
Los registros son espacios de memoria de datos, tipo RAM, que se comunican directamente con la
ALU (Unidad Lógico-Aritmética). Esto simplifica la estructuración de las instrucciones y aumenta
la velocidad con la que se ejecutan las operaciones. En general, los registros se usan para almacenar
datos, pero existen algunos de propósito específico que se usan para almacenar direcciones o
apuntadores. En la Tabla 1 se presentan los 32 registros de la arquitectura MIPS.
El registro $zero sirve de constante nula: es un registro de sólo lectura que siempre vale cero (0).
Los registros $s0 a $s7 sirven para almacenar datos, tipo variables o direcciones de la memoria RAM
cuando se usan para almacenar apuntadores a arreglos, matrices y otras estructuras. Los registros
$t0 a $t9 se usan de forma similar a los $s, pero por convención se prefieren para datos temporales,
de cálculos parciales, cuyo valor no tenga que mantenerse por mucho tiempo. Los registros $a0-$a3,
$v0-$v1, $ra se utilizan para las funciones, los $a para enviarlos como parámetros, los $v para retorno
y el $ra para la dirección de memoria de programa a la que debe retornar cuando se acabe la función.
Los demás registros son de propósito específico: $sp como apuntador de pila, $fp como apuntador de
frame o sección, $gp como apuntador global.
Tabla 1. Registros de la arquitectura MIPS
Nombre
# del
registro
Uso
$zero 0 Constante 0
$v0 - $v1 2-3 Valores para resultados y evaluación de expresiones
$a0 - $a3 4-7 Argumentos
$t0 - $t7 8-15 Temporales
$s0 - $s7 16-23 Variables
$t8 - $t9 24-25 Más temporales
$gp 28 Global pointer
$sp 29 Stack pointer
$fp 30 Frame pointer
$ra 31 Dirección de retorno
Fuente: elaboración propia
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 8
POLITÉCNICO GRANCOLOMBIANO 8
5.	Modos de Direccionamiento
El direccionamiento, en la arquitectura del computador, se refiere a la forma en que se acceden los
datos que van a ser operados o que se requieren para ejecutar una instrucción. En MIPS, existen los
siguientes modos de direccionamiento: Registro-Indirecto, Desplazamiento, Índice base, Memoria-
indirecto, Auto-incremento, Auto-indexación, Escalado, Relativo al PC (Contador de programa)
(Martin & Roth, n.d.).
5.1.	 Directo a registro:
En este modo de direccionamiento se incluye en la instrucción la dirección del registro que se desea
acceder, como fuente o como destino.
Por ejemplo:
add $s1, $s2, $s3
Equivale a $s1=$s2+$s3 de manera que se envían como parámetros de la instrucción las direcciones
de los registros $s1 (destino), $s2 (fuente) y $s3 (fuente).
Figura 3. Direccionamiento directo a registro
Fuente: elaboración propia
5.2.	Indirecto a registro:
En este tipo modo de direccionamiento se incluye la dirección de un registro y un desplazamiento. El
dato que se usa como operando es el que se encuentre en una posición de la RAM equivalente a la
suma del apuntador del registro más el desplazamiento en la instrucción.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 9
POLITÉCNICO GRANCOLOMBIANO 9
Por ejemplo:
lw $s3, 4($s2)
Indica que en el registro $s3 (destino) se va a guardar (load - lw) lo que esté en la posición de la
memoria RAM a la que apunte ($s2+4).
Figura 4. Direccionamiento indirecto a registro
Fuente: elaboración propia
5.3.	Relativo a PC (Contador de programa):
En este caso, el operando corresponde a una dirección de la memoria de programa y resulta de la
suma entre el valor actual del contador de programa y una constante que viene en la instrucción.
Por ejemplo:
beq $s1,$s2,for
Esta instrucción salta a la línea del programa con etiqueta for cuando $s1 es igual a $s2. Como las
direcciones de programa son largas, no se guarda la dirección completa con etiqueta for, sino la
distancia entre la línea actual y la línea for (el desplazamiento).
Figura 5. Direccionamiento relativo a PC
Fuente: elaboración propia
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 10
POLITÉCNICO GRANCOLOMBIANO 10
5.4.	Inmediato
El modo de direccionamiento inmediato se refiere a aquellas instrucciones en los que uno de los
operandos es un valor constante que viene dentro de la instrucción.
Por ejemplo:
addi $s6, $s7, 8
Corresponde a $s6=$s7+8 donde 8 sería direccionado de forma inmediata por ser una constante que
haría parte de la instrucción.
Figura 6. Direccionamiento relativo a PC
Fuente: elaboración propia
5.5.	Pseudodirecto:
Se utiliza cuando se requiere una dirección del contador de programa absoluta. Funciona de manera
que en la instrucción viene un valor constante que representa la dirección. A este número se le
desplaza dos posiciones a la izquierda (lo multiplica por 4 - en binario) y luego lo concatena con los 4
bits más significativos del valor actual del contador de programa. Este resultado es el nuevo valor del
contador de programa.
Por ejemplo:
j 2100
Salta a la posición 2100*4=8400 concatenada con los bits más significativos del valor de la posición
actual.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 11
POLITÉCNICO GRANCOLOMBIANO 11
Figura 7. Direccionamiento pseudodirecto
Fuente: elaboración propia
5.6.	Implícito:
Es el menos común de los modos de direccionamiento. Corresponde al direccionamiento el operando
es determinado por el código de operación.
Por ejemplo:
jal 2500
Que salta a la posición 2500*4 y adicionalmente almacena la dirección del contador de programa
actual en el registro $ra.
Figura 8. Direccionamiento implícito
Fuente: elaboración propia
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 12
POLITÉCNICO GRANCOLOMBIANO 12
6.	Traducción de ensamblador a máquina
Cada una de las instrucciones, según su tipo, tiene un formato de instrucción que define cómo se
debe codificar desde el compilador y cómo el hardware la decodifica. A continuación se presenta
cómo son los principales formatos de instrucción y a qué corresponde a cada uno de los elementos
que conforman su estructura. En MIPS, todas las instrucciones tienen el mismo tamaño (32 bits),
independiente de su tipo. Si una instrucción requiere menos de los 32 bits, los restantes se llenan con
información basura, que nunca es usada por el hardware y por lo tanto no importa si su valor es 0 o 1.
Instrucciones tipo R
Se refiere a las instrucciones aritmético-lógicas. Los 6 bits más significativos corresponden a un
código de operación. Los 5 bits siguientes (del 26 al 22) corresponden al registro fuente 1, los 5
siguientes (del 21 al 17) se refieren al segundo registro fuente. Los bits del 16 al 12 corresponden a la
dirección del registro destino. Los últimos bits se utilizan en algunas funciones para el desplazamiento
o especificar el código de operación.
Instrucciones tipo I
Integra las instrucciones de referencia a memoria, aritméticas (inmediatas) y de salto condicional.
Los 6 bits más significativos corresponden a un código de operación. Los 5 bits siguientes (del 26
al 22) corresponden al registro fuente 1, los 5 siguientes (del 21 al 17) se refieren a la dirección del
registro destino. Los últimos bits se utilizan para un valor constante.
Instrucciones tipo J
Corresponde a las instrucciones de salto incondicional. Los 6 bits más significativos corresponden
a un código de operación. Los últimos bits se utilizan para un valor constante que representa una
dirección.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 13
POLITÉCNICO GRANCOLOMBIANO 13
7.	Herramienta de simulación: MARS
La herramienta de simulación MARS permite realizar la programación de algoritmos usando las
instrucciones de MIPS. En la simulación se puede ejecutar instrucción por instrucción, viendo el
estado de los registros, de la memoria de programa y de la memoria RAM tras la ejecución de todo un
programa o de cada instrucción. Se puede descargar para realizar el siguiente algoritmo en MIPS.
Para que se pueda interactuar con la herramienta de simulación, se propone implementar un
algoritmo en el que se guarden (en la RAM, a manera de arreglo) los divisores de un número n
guardado en un registro (para el ejemplo $s0). En las Figuras 9 y 10 se presentan, respectivamente, el
algoritmo en lenguaje de alto nivel y en lenguaje ensamblador MIPS. 	
Figura 9. Algoritmos de alto nivel
Fuente: elaboración propia
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 14
POLITÉCNICO GRANCOLOMBIANO 14
Figura 10. Algoritmos de alto nivel
Fuente: elaboración propia
8.	Breve introducción a la aritmética para procesadores
La aritmética del procesador se refiere a la manera en que se realizan las operaciones aritméticas
dentro del procesador. Esta definición incluye lo que sucede cuando hay un desbordamiento en la
suma o la resta, cómo se manejan los productos teniendo en cuenta que la multiplicación requiere el
doble de bits para el resultado que los bits que tienen los operandos, cómo se maneja el cociente y el
residuo en una división, cómo se representan y operan los números reales, entre otros. En la lectura
complementaria del escenario 3, podrás leer más acerca de la aritmética del procesador.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 15
POLITÉCNICO GRANCOLOMBIANO 15
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 16
POLITÉCNICO GRANCOLOMBIANO 16
Referencias
MIT –Software MARS Recuperado de: http://courses.missouristate.edu/KenVollmar/mars/ Mayo de
2017
Patt, Y. (2001). Requirements, bottlenecks, and good fortune: agents for microprocessor evolution.
Proceedings of the IEEE, 1553 - 1559.
Patterson, D., Hennessy L. (1994) Computer Organization and Design: the Hardware/Software
Interface. Editorial MK.
INFORMACIÓN TÉCNICA
Módulo: Arquitectura del Computador
Unidad 2: ISA: Instruction Set Architecture y Aritmética 	
	 para procesadores.
Escenario 3: Conjunto de Instrucciones
	 (ISA – Instruction Set Architecture)
Autor: Laura Juliana Cortés Rico
Asesor Pedagógico: Edwin Alcides Mojica Quintero
Diseñador Gráfico: Carlos Montoya
Asistente: Ginna Quiroga
Este material pertenece al Politécnico Grancolombiano. Por
ende, es de uso exclusivo de las Instituciones adscritas a la Red
Ilumno. Prohibida su reproducción total o parcial.
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 17
POLITÉCNICO GRANCOLOMBIANO 17

Más contenido relacionado

La actualidad más candente

Arquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de InstruccionesArquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de InstruccionesVideoconferencias UTPL
 
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTOCAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTORafael Espina
 
Trabajo COMPUTACION
Trabajo COMPUTACIONTrabajo COMPUTACION
Trabajo COMPUTACIONylastra
 
Capacidad de la unidad de procesamiento
Capacidad de la unidad de procesamientoCapacidad de la unidad de procesamiento
Capacidad de la unidad de procesamientoLucianoCabrera7
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamientoEduardo Abalo
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadorascamiche97
 
Andrea Avendaño 28.041.479
Andrea Avendaño 28.041.479Andrea Avendaño 28.041.479
Andrea Avendaño 28.041.479Andrea Carolina
 
Resumen del primer corte
Resumen del primer corteResumen del primer corte
Resumen del primer corteADOLFO BORJA
 

La actualidad más candente (10)

Arquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de InstruccionesArquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de Instrucciones
 
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTOCAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
 
Actividad colaborativa
Actividad colaborativaActividad colaborativa
Actividad colaborativa
 
Trabajo COMPUTACION
Trabajo COMPUTACIONTrabajo COMPUTACION
Trabajo COMPUTACION
 
Capacidad de la unidad de procesamiento
Capacidad de la unidad de procesamientoCapacidad de la unidad de procesamiento
Capacidad de la unidad de procesamiento
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamiento
 
Tarea 1.1
Tarea 1.1Tarea 1.1
Tarea 1.1
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Andrea Avendaño 28.041.479
Andrea Avendaño 28.041.479Andrea Avendaño 28.041.479
Andrea Avendaño 28.041.479
 
Resumen del primer corte
Resumen del primer corteResumen del primer corte
Resumen del primer corte
 

Similar a Lectura fundamental 3

Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLuis Fernando Aguas Bucheli
 
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO.
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO. REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO.
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO. Michelle Diaz
 
Unidad 2 clasificacion de arquitectura paralela
Unidad 2 clasificacion de arquitectura paralelaUnidad 2 clasificacion de arquitectura paralela
Unidad 2 clasificacion de arquitectura paralelaJhonny Real Schweinsteiger
 
Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )Nati Cabraless
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas alancardona3
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas alancardona3
 
Trabajo de ureche nataly el repertorio de instrucciones
Trabajo de ureche nataly el repertorio de instruccionesTrabajo de ureche nataly el repertorio de instrucciones
Trabajo de ureche nataly el repertorio de instruccionesNati Cabraless
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskJohann Chambilla
 
Pseudocódigo de Programación
Pseudocódigo de ProgramaciónPseudocódigo de Programación
Pseudocódigo de Programaciónreinimar912
 

Similar a Lectura fundamental 3 (20)

NASM
NASM NASM
NASM
 
00026966
0002696600026966
00026966
 
Estructuras de Control
Estructuras de ControlEstructuras de Control
Estructuras de Control
 
Ensayo ciclo De Instrucción
Ensayo ciclo De InstrucciónEnsayo ciclo De Instrucción
Ensayo ciclo De Instrucción
 
Procesamiento segmentado - INFORME
Procesamiento segmentado - INFORMEProcesamiento segmentado - INFORME
Procesamiento segmentado - INFORME
 
Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de Control
 
Estructuras de Control
Estructuras de Control Estructuras de Control
Estructuras de Control
 
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO.
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO. REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO.
REGISTRO E INSTRUCCIONES DEL MICROPROCESADOR, MODOS DE DIRECCIONAMIENTO.
 
Unidad 2 clasificacion de arquitectura paralela
Unidad 2 clasificacion de arquitectura paralelaUnidad 2 clasificacion de arquitectura paralela
Unidad 2 clasificacion de arquitectura paralela
 
Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
ESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICASESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICAS
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Tecno
TecnoTecno
Tecno
 
Estructuras basicas
Estructuras basicasEstructuras basicas
Estructuras basicas
 
Trabajo de ureche nataly el repertorio de instrucciones
Trabajo de ureche nataly el repertorio de instruccionesTrabajo de ureche nataly el repertorio de instrucciones
Trabajo de ureche nataly el repertorio de instrucciones
 
Tecnologia trabajo
Tecnologia trabajoTecnologia trabajo
Tecnologia trabajo
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoresk
 
Pseudocódigo de Programación
Pseudocódigo de ProgramaciónPseudocódigo de Programación
Pseudocódigo de Programación
 

Último

CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxMaikelPereira1
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruanoEFRAINSALAZARLOYOLA1
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptDerekLiberatoMartine
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Secssuser50da781
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxlizeth753950
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasAnkara2
 
LAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxLAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxJheissonAriasSalazar
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfDreydyAvila
 
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxSEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxLisetteChuquisea
 
Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxismaelchandi2010
 
Supremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmSupremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmolivayasser2
 
Arribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolArribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolLuis José Ferreira Calvo
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptxjezuz1231
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxJOELORELLANA15
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaEmmanuel Toloza
 
BIOGRAFIA MARIANO MELGAR presentacion en power point
BIOGRAFIA MARIANO MELGAR  presentacion en power pointBIOGRAFIA MARIANO MELGAR  presentacion en power point
BIOGRAFIA MARIANO MELGAR presentacion en power pointyupanquihuisahilario
 

Último (16)

CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruano
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).ppt
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Sec
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena Olvieras
 
LAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxLAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docx
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
 
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxSEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
 
Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptx
 
Supremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmSupremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxm
 
Arribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolArribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y español
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
 
BIOGRAFIA MARIANO MELGAR presentacion en power point
BIOGRAFIA MARIANO MELGAR  presentacion en power pointBIOGRAFIA MARIANO MELGAR  presentacion en power point
BIOGRAFIA MARIANO MELGAR presentacion en power point
 

Lectura fundamental 3

  • 1. Palabras clave: set de instrucciones (ISA), lenguaje ensamblador, procesador, lenguaje de máquina. Contenido 1 2 3 4 5 6 7 8 MIPS Microprocessor without Interlocked Pipeline Stages Tipos de Instrucción Modos de Direccionamiento Traducción de ensamblador a máquina Herramienta de simulación: MARS Breve introducción a la aritmética para procesadores Qué es el conjunto de instrucciones Registros Conjunto de instrucciones (ISA – Instruction Set Architecture) Unidad 2 / Escenario 3 Lectura fundamental
  • 2. Diariamente se utilizan sistemas de cómputo para apoyar tareas en diversos (si no todos) campos. Desde la ingeniería, hasta la agricultura. Gracias a las interfaces de usuario amigables, estas tareas se realizan de forma casi trivial, de forma que los usuarios aprenden rápidamente utilizar nuevos dispositivos o aplicaciones. A través de esta lectura se presenta una introducción a qué pasa en el sistema de cómputo para que sea capaz de traducir un conjunto de pasos de un algoritmo, en operaciones ejecutables por el hardware del computador. Esta introducción ayudará a responder: ¿Cómo el hardware de estos dispositivos entiende nuestras órdenes? ¿Cómo un computador recibe y ejecuta tareas? Adicionalmente, este espacio permitirá entender cómo se traduce una instrucción a un conjunto que 1s y 0s que el hardware del computador pueda interpretar y ejecutar. 1. MIPS Microprocessor without Interlocked Pipeline Stages En este módulo se estudiará una de las arquitecturas más populares en la actualidad: aquella en la que la memoria de datos sólo se puede acceder a través de instrucciones de lectura y escritura load/ store. Específicamente, se estudiará esta arquitectura desde un caso particular: MIPS corresponde a la sigla de Microprocessor without Interlocked Pipeline Stages (Microprocesador sin etapas de pipeline bloqueadas). Su nombre se debe a que, en esta arquitectura, las instrucciones se ejecutan por etapas en el procesador. Adicionalmente, estas etapas no dependen unas de otras y todas las instrucciones se ejecutan pasando por todas las etapas. A este mecanismo de ejecución de instrucciones se le denomina. El pipeline permite un paralelismo a nivel de instrucción. La razón es que más de una instrucción se puede ejecutar a la vez, siempre y cuando estén en diferentes etapas. En la Figura 1 se muestra un ejemplo. En la parte superior de la imagen se ejecuta el proceso de lavar la ropa (que representa, como un recurso ilustrativo, una instrucción) sin aprovechar el pipeline, y en la parte inferior, aprovechando el pipeline. De acuerdo con la imagen, lavar la ropa se hace en 4 etapas: lavado, secado, planchado y guardado. Sin aprovechar el pipeline, cada “tanda” (instrucción) pasa por las 4 etapas, y solo hasta que se acaben las todas las etapas, inicia la siguiente “tanda” (instrucción). Aprovechando el pipeline, la “tanda” uno inicia, y tan pronto pasa la primera etapa, inicia la segunda “tanda”: mientras la primera se encuentra en secado, la segunda está en la etapa de lavado. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 2 POLITÉCNICO GRANCOLOMBIANO 2
  • 3. Así, sin pipeline 4 “tandas” (equivalentes a las instrucciones) se ejecutan en 8 horas. Con pipeline, las mismas 4 “tandas” se realizan en 3 horas y media. Al pipeline se le denomina paralelismo a nivel de instrucciones y se verá con más detalle en la Unidad 4. Figura 1. Proceso de lavado de ropa Fuente: elaboración propia Se ha seleccionado MIPS como la arquitectura a ser estudiada porque se basa en un conjunto de características y principios de diseño que facilitan el aprendizaje de la arquitectura del computador. Una de las características es la simplicidad; por ejemplo: todas las instrucciones tienen el mismo tamaño que es, además, el mismo tamaño de los datos: 32 bits para MIPS32 y 64 bits para MIPS64. Figura 2. Tipos de Arquitectura MIPS: MIPS32 y MIPS64 Fuente: elaboración propia POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 3 POLITÉCNICO GRANCOLOMBIANO 3
  • 4. Los principios de diseño de MIPS son (Hennessy & Patterson, 2000): • La simplicidad favorece la regularidad. Que se ve reflejado en el hecho de que todas las instrucciones tengan el mismo tamaño, todas las instrucciones pertenezcan a alguno de tres grandes tipos y todas las instrucciones de un mismo tipo tengan el mismo formato de instrucción. • Si es más pequeño es más rápido. El manejo de registros en MIPS es óptimo. Además, la cantidad de registros coincide con el tamaño de las instrucciones, facilitando también la regularidad. El usar registros para almacenar los datos más inmediatos, ayuda a que el procesador sea más rápido. A continuación, se define lo que es el conjunto de instrucciones, específicamente ejemplarizando con MIPS. En la siguiente lectura se realizará un repaso por algunas de las secciones de esta lectura, particularizando sobre el proceso de diseño de un conjunto particular, propio, que parte de un reto de diseño. 2. Qué es el conjunto (set) de instrucciones Como se presentó en el escenario 1, la arquitectura del computador estudia cómo un lenguaje de programación se traduce a un conjunto de instrucciones que pueden ser interpretadas y ejecutadas por una interconexión de elementos de hardware. Al conjunto de instrucciones se le denomina ISA (Instruction Set Architecture) y a la interconexión de los elementos de hardware se le denomina microarquitectura. El conjunto de instrucciones representa todas las instrucciones que puede interpretar y ejecutar el hardware. Se distribuyen en diferentes tipos, según su funcionalidad. Algunas orientadas a la ejecución de operaciones aritméticas o lógicas, otras a los saltos condicionales, otras a los saltos incondicionales, etc. Adicionalmente, el conjunto de instrucciones incluye la definición de los registros que se utilizan en el sistema, los modos de direccionamiento y del formato en el que cada tipo de instrucción se traduce a lenguaje de máquina. En las secciones siguientes se detallarán y ejemplificarán cada uno de estos elementos. En la lectura complementaria se puede encontrar una versión del conjunto de instrucciones de MIPS que incluye la definición completada y detallada de las instrucciones, su tipología, los registros que se utilizan, los modos de direccionamiento y las estructuras que definen las tipologías para escribir las instrucciones en formato binario. Es importante aclarar que más que una lectura, este documento es un manual que puede ser consultado cuando sea necesario y que no se debe leer de forma continua. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 4 POLITÉCNICO GRANCOLOMBIANO 4
  • 5. 3. Tipos de instrucción De acuerdo con la documentación de MIPS, las instrucciones de esta arquitectura se agrupan en 3 grandes categorías, de acuerdo con su formato de instrucción: R, I y J. El tipo R (R de registros) corresponde a aquellas instrucciones en la que los datos (operandos y resultados) son almacenados en registros (Por ejemplo las instrucciones aritméticas o las lógicas). Las instrucciones de tipo I (I de inmediato) corresponden aquellas donde el valor con el que se opera viene como parte de la instrucción (equivalente a una constante). Finalmente, las instrucciones tipo J, corresponde a instrucciones que permiten el cambio del flujo del programa, como aquellas usadas en saltos condicionales y aquellas correspondientes a saltos incondicionales (Araújo, Pádua, Andrade, & Correa, 2014). Más allá de los tipos de instrucciones definidos por el formato de instrucción, las instrucciones se pueden agrupar en diferentes categorías, de acuerdo con su utilidad y uso en la implementación de algoritmos. A continuación se presentan en las categorías más generales: 3.1. Aritmético-lógicas Como su nombre lo indica, corresponden a todas aquellas que reciben 3 parámetros: 2 indicando los operandos y 1 indicando el resultado, y adicionalmente aplican una operación aritmética o lógica. Por ejemplo: add $s0, $s1, $s2 indica que en $s0 se guarde el resultado de sumar (add) $s1 con $s2. 3.2. Artiméticas-inmediatas Son muy similares a las anteriores, pero cambia el modo en el que se direccionan los datos que se van a operar. En las inmediatas los datos a operar son constantes cuyo valor se incluye en la misma instrucción. A diferencia de las anteriores, en las que el valor se almacena en un registro y la instrucción incluye es la dirección del registro. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 5 POLITÉCNICO GRANCOLOMBIANO 5
  • 6. Por ejemplo: addi $s0, $s1, 127 indica que en $s0 se guarde el resultado de sumar (addi) $s1 con el valor constante 127. En lenguaje ensamblador de MIPS, las constantes están en decimal por defecto. Para escribirlas en binario, hay que antecederlas con 0b y en hexadecimal con 0x. 3.3. De transferencia de datos Permiten, en esencia, comunicar los registros con la memoria RAM, de manera que se puedan cargar datos en los registros desde la memoria RAM (load (Resaltar y poner con un tipografía como de código)) o guardar datos desde los registros hacia la memoria RAM (store (Resaltar y poner con un tipografía como de código)). Por ejemplo: sw $s0,0($s1) indica que se debe guardar (sw) el valor de $s0 en la posición apuntada por $s1(Es decir que $s1 no contiene un valor sino una dirección). El 0 que antecede el ($s1) indica que se debe guardar justamente en esa posición. Si fuera un 4, indicaría que es 4 bytes delante de la dirección apuntada por $s1, o un 8, indicaría 8 bytes delante de la dirección apuntada por $s1. En MIPS el valor que antecede el registro que apunta la dirección debe ser una constante numérica (como en el ejemplo que es 0). POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 6 POLITÉCNICO GRANCOLOMBIANO 6
  • 7. 3.4. Salto 3.4.1. Condicionales Permiten ir a una línea de código de acuerdo con una condición. Por ejemplo: beq $s0, $s1, fin Compara si $s0 es igual a $s1 y si lo es, salta a la línea etiquetada con fin. 3.4.2. Incondicionales Permiten moverse entre distintas líneas del código, saltando de una línea a otra sin depender de una condición. Por ejemplo: j for Permite saltar a la línea de código que tenga la etiqueta “for” (Resaltar y poner con un tipografía como de código). 3.4.3. Comparación Son muy similares a las aritmético-lógicas. Se encargan de poner un registro en 1 o 0 en caso de que se cumpla una condición. Por ejemplo: slt $s0,$s1, $s2 pone en 1 el registro $s0 en caso de que $s1 sea menor que $s2. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 7 POLITÉCNICO GRANCOLOMBIANO 7
  • 8. 4. Registros Los registros son espacios de memoria de datos, tipo RAM, que se comunican directamente con la ALU (Unidad Lógico-Aritmética). Esto simplifica la estructuración de las instrucciones y aumenta la velocidad con la que se ejecutan las operaciones. En general, los registros se usan para almacenar datos, pero existen algunos de propósito específico que se usan para almacenar direcciones o apuntadores. En la Tabla 1 se presentan los 32 registros de la arquitectura MIPS. El registro $zero sirve de constante nula: es un registro de sólo lectura que siempre vale cero (0). Los registros $s0 a $s7 sirven para almacenar datos, tipo variables o direcciones de la memoria RAM cuando se usan para almacenar apuntadores a arreglos, matrices y otras estructuras. Los registros $t0 a $t9 se usan de forma similar a los $s, pero por convención se prefieren para datos temporales, de cálculos parciales, cuyo valor no tenga que mantenerse por mucho tiempo. Los registros $a0-$a3, $v0-$v1, $ra se utilizan para las funciones, los $a para enviarlos como parámetros, los $v para retorno y el $ra para la dirección de memoria de programa a la que debe retornar cuando se acabe la función. Los demás registros son de propósito específico: $sp como apuntador de pila, $fp como apuntador de frame o sección, $gp como apuntador global. Tabla 1. Registros de la arquitectura MIPS Nombre # del registro Uso $zero 0 Constante 0 $v0 - $v1 2-3 Valores para resultados y evaluación de expresiones $a0 - $a3 4-7 Argumentos $t0 - $t7 8-15 Temporales $s0 - $s7 16-23 Variables $t8 - $t9 24-25 Más temporales $gp 28 Global pointer $sp 29 Stack pointer $fp 30 Frame pointer $ra 31 Dirección de retorno Fuente: elaboración propia POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 8 POLITÉCNICO GRANCOLOMBIANO 8
  • 9. 5. Modos de Direccionamiento El direccionamiento, en la arquitectura del computador, se refiere a la forma en que se acceden los datos que van a ser operados o que se requieren para ejecutar una instrucción. En MIPS, existen los siguientes modos de direccionamiento: Registro-Indirecto, Desplazamiento, Índice base, Memoria- indirecto, Auto-incremento, Auto-indexación, Escalado, Relativo al PC (Contador de programa) (Martin & Roth, n.d.). 5.1. Directo a registro: En este modo de direccionamiento se incluye en la instrucción la dirección del registro que se desea acceder, como fuente o como destino. Por ejemplo: add $s1, $s2, $s3 Equivale a $s1=$s2+$s3 de manera que se envían como parámetros de la instrucción las direcciones de los registros $s1 (destino), $s2 (fuente) y $s3 (fuente). Figura 3. Direccionamiento directo a registro Fuente: elaboración propia 5.2. Indirecto a registro: En este tipo modo de direccionamiento se incluye la dirección de un registro y un desplazamiento. El dato que se usa como operando es el que se encuentre en una posición de la RAM equivalente a la suma del apuntador del registro más el desplazamiento en la instrucción. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 9 POLITÉCNICO GRANCOLOMBIANO 9
  • 10. Por ejemplo: lw $s3, 4($s2) Indica que en el registro $s3 (destino) se va a guardar (load - lw) lo que esté en la posición de la memoria RAM a la que apunte ($s2+4). Figura 4. Direccionamiento indirecto a registro Fuente: elaboración propia 5.3. Relativo a PC (Contador de programa): En este caso, el operando corresponde a una dirección de la memoria de programa y resulta de la suma entre el valor actual del contador de programa y una constante que viene en la instrucción. Por ejemplo: beq $s1,$s2,for Esta instrucción salta a la línea del programa con etiqueta for cuando $s1 es igual a $s2. Como las direcciones de programa son largas, no se guarda la dirección completa con etiqueta for, sino la distancia entre la línea actual y la línea for (el desplazamiento). Figura 5. Direccionamiento relativo a PC Fuente: elaboración propia POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 10 POLITÉCNICO GRANCOLOMBIANO 10
  • 11. 5.4. Inmediato El modo de direccionamiento inmediato se refiere a aquellas instrucciones en los que uno de los operandos es un valor constante que viene dentro de la instrucción. Por ejemplo: addi $s6, $s7, 8 Corresponde a $s6=$s7+8 donde 8 sería direccionado de forma inmediata por ser una constante que haría parte de la instrucción. Figura 6. Direccionamiento relativo a PC Fuente: elaboración propia 5.5. Pseudodirecto: Se utiliza cuando se requiere una dirección del contador de programa absoluta. Funciona de manera que en la instrucción viene un valor constante que representa la dirección. A este número se le desplaza dos posiciones a la izquierda (lo multiplica por 4 - en binario) y luego lo concatena con los 4 bits más significativos del valor actual del contador de programa. Este resultado es el nuevo valor del contador de programa. Por ejemplo: j 2100 Salta a la posición 2100*4=8400 concatenada con los bits más significativos del valor de la posición actual. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 11 POLITÉCNICO GRANCOLOMBIANO 11
  • 12. Figura 7. Direccionamiento pseudodirecto Fuente: elaboración propia 5.6. Implícito: Es el menos común de los modos de direccionamiento. Corresponde al direccionamiento el operando es determinado por el código de operación. Por ejemplo: jal 2500 Que salta a la posición 2500*4 y adicionalmente almacena la dirección del contador de programa actual en el registro $ra. Figura 8. Direccionamiento implícito Fuente: elaboración propia POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 12 POLITÉCNICO GRANCOLOMBIANO 12
  • 13. 6. Traducción de ensamblador a máquina Cada una de las instrucciones, según su tipo, tiene un formato de instrucción que define cómo se debe codificar desde el compilador y cómo el hardware la decodifica. A continuación se presenta cómo son los principales formatos de instrucción y a qué corresponde a cada uno de los elementos que conforman su estructura. En MIPS, todas las instrucciones tienen el mismo tamaño (32 bits), independiente de su tipo. Si una instrucción requiere menos de los 32 bits, los restantes se llenan con información basura, que nunca es usada por el hardware y por lo tanto no importa si su valor es 0 o 1. Instrucciones tipo R Se refiere a las instrucciones aritmético-lógicas. Los 6 bits más significativos corresponden a un código de operación. Los 5 bits siguientes (del 26 al 22) corresponden al registro fuente 1, los 5 siguientes (del 21 al 17) se refieren al segundo registro fuente. Los bits del 16 al 12 corresponden a la dirección del registro destino. Los últimos bits se utilizan en algunas funciones para el desplazamiento o especificar el código de operación. Instrucciones tipo I Integra las instrucciones de referencia a memoria, aritméticas (inmediatas) y de salto condicional. Los 6 bits más significativos corresponden a un código de operación. Los 5 bits siguientes (del 26 al 22) corresponden al registro fuente 1, los 5 siguientes (del 21 al 17) se refieren a la dirección del registro destino. Los últimos bits se utilizan para un valor constante. Instrucciones tipo J Corresponde a las instrucciones de salto incondicional. Los 6 bits más significativos corresponden a un código de operación. Los últimos bits se utilizan para un valor constante que representa una dirección. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 13 POLITÉCNICO GRANCOLOMBIANO 13
  • 14. 7. Herramienta de simulación: MARS La herramienta de simulación MARS permite realizar la programación de algoritmos usando las instrucciones de MIPS. En la simulación se puede ejecutar instrucción por instrucción, viendo el estado de los registros, de la memoria de programa y de la memoria RAM tras la ejecución de todo un programa o de cada instrucción. Se puede descargar para realizar el siguiente algoritmo en MIPS. Para que se pueda interactuar con la herramienta de simulación, se propone implementar un algoritmo en el que se guarden (en la RAM, a manera de arreglo) los divisores de un número n guardado en un registro (para el ejemplo $s0). En las Figuras 9 y 10 se presentan, respectivamente, el algoritmo en lenguaje de alto nivel y en lenguaje ensamblador MIPS. Figura 9. Algoritmos de alto nivel Fuente: elaboración propia POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 14 POLITÉCNICO GRANCOLOMBIANO 14
  • 15. Figura 10. Algoritmos de alto nivel Fuente: elaboración propia 8. Breve introducción a la aritmética para procesadores La aritmética del procesador se refiere a la manera en que se realizan las operaciones aritméticas dentro del procesador. Esta definición incluye lo que sucede cuando hay un desbordamiento en la suma o la resta, cómo se manejan los productos teniendo en cuenta que la multiplicación requiere el doble de bits para el resultado que los bits que tienen los operandos, cómo se maneja el cociente y el residuo en una división, cómo se representan y operan los números reales, entre otros. En la lectura complementaria del escenario 3, podrás leer más acerca de la aritmética del procesador. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 15 POLITÉCNICO GRANCOLOMBIANO 15
  • 16. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 16 POLITÉCNICO GRANCOLOMBIANO 16 Referencias MIT –Software MARS Recuperado de: http://courses.missouristate.edu/KenVollmar/mars/ Mayo de 2017 Patt, Y. (2001). Requirements, bottlenecks, and good fortune: agents for microprocessor evolution. Proceedings of the IEEE, 1553 - 1559. Patterson, D., Hennessy L. (1994) Computer Organization and Design: the Hardware/Software Interface. Editorial MK.
  • 17. INFORMACIÓN TÉCNICA Módulo: Arquitectura del Computador Unidad 2: ISA: Instruction Set Architecture y Aritmética para procesadores. Escenario 3: Conjunto de Instrucciones (ISA – Instruction Set Architecture) Autor: Laura Juliana Cortés Rico Asesor Pedagógico: Edwin Alcides Mojica Quintero Diseñador Gráfico: Carlos Montoya Asistente: Ginna Quiroga Este material pertenece al Politécnico Grancolombiano. Por ende, es de uso exclusivo de las Instituciones adscritas a la Red Ilumno. Prohibida su reproducción total o parcial. POLITÉCNICO GRANCOLOMBIANO POLITÉCNICO GRANCOLOMBIANO 17 POLITÉCNICO GRANCOLOMBIANO 17