tec_hw_computacional-u3(arquitectura del conjunto de i)

37
Unidad 3 Arquitectura de conjunto de instrucciones ACI605 Tecnología de Hw. computacional Docente: Godofredo Becerra 2014

Upload: polo

Post on 11-Apr-2016

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Unidad 3 Arquitectura de conjunto de instrucciones

ACI605 Tecnología de Hw. computacional

Docente:Godofredo Becerra 2014

Page 2: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Arquitectura de conjunto de instrucciones 1. - Instrucciones y direccionamiento.

1.1 Visión abstracta del Hardware.1.2 Formatos de instrucción.1.3 Aritmética simple instrucciones lógicas.1.4 Instrucciones Load y Store.1.5 Instrucciones Jump y Branch.

2. - Procesamientos y datos. 3. - Programas en lenguaje ensamblador.

Page 3: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

1. Conceptos de arquitectura de computación.

Page 4: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Conceptos de arquitectura de computación.

A la colección de todas las instrucciones que puede ejecutar un procesador se le denomina conjunto de instrucciones, y a la completa descripción de dicho conjunto, arquitectura del conjunto de instrucciones.

La arquitectura del conjunto de instrucciones determina cómo debe ser el hardware del procesador y cómo debe estar organizado. Por ello, los manuales de usuario de los procesadores se enfocan principalmente en la descripción del conjunto de instrucciones que el procesador puede ejecutar, así como de los elementos del procesador que son accesibles al programador.

Las instrucciones se definen y almacenan en la memoria del procesador en lenguaje binario, lo cual constituye el llamado código máquina. El lenguaje que sustituye los códigos de operación binarios y las direcciones por nombres simbólicos se denomina lenguaje ensamblador.

Page 5: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones y direccionamiento

Instrucciones y direccionamiento.La unidad de control de un procesador se diseña para ejecutar cada una de las instrucciones de un programa efectuando la siguiente secuencia de pasos:1.- Obtener la instrucción de memoria. Almacenarla en un registro de control.2.- Decodificar la instrucción.3.- Localizar los operandos empleados en la instrucción.4.- Obtener de la memoria los operandos (si fuese necesario)5.- Ejecutar la operación en la ruta de datos.6.- Almacenar el resultado en un lugar adecuado.7.- Volver al paso 1 y para procesar la siguiente instrucción.

Page 6: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas y lenguajes

Un programa: es un conjunto de instrucciones escritas en algún lenguaje entendible por la máquina. A través de los programas el computador puede realizar variadas operaciones, desde procesar textos y planillas hasta resolver complejos problemas matemáticos.

Lenguajes. Los lenguajes de programación se clasifican en dos;

Lenguajes de bajo nivel y Lenguajes de Alto nivel. Los lenguajes de programación son llamados de bajo nivel cuando se asemejan al lenguaje empleado por el propio computador. El lenguaje del computador son los ceros (0) y los unos (1) que integran a bits y bytes. Los lenguajes de programación de alto nivel están mas próximos al lenguaje humano.

Page 7: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones y direccionamiento

La unidad de control del procesador consta de un registro especial, el contador de programa PC (Program Counter). Su contenido apunta a la posición de memoria de la instrucción que se va a ejecutar a continuación, y se incrementa cada vez que se lee una instrucción del programa almacenado en la memoria.

La decodificación del paso 2 determina la operación a ejecutar y el modo de direccionamiento de la instrucción.

En el paso 3, los operandos se localizan según el modo de direccionamiento y el campo de direcciones de la instrucción.

El procesador ejecuta la instrucción sobre los operandos, almacena el resultado y regresa al paso 1 para obtener la siguiente instrucción del programa.

Con el nombre de MIPS (siglas de Microprocessor without Interlocked Pipeline Stages) se conoce a toda una familia de microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.

Page 8: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones y direccionamiento

Una instrucción típica MIPS y los pasos de su ejecución

Page 9: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Visión abstracta del hardware

Page 10: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Visión abstracta del hardware

o Para conducir un automóvil, se debe familiarizar con algunos elementos clave como el pedal del acelerador y del freno, el volante y algunos instrumentos del tablero. De manera colectiva, estos dispositivos le permiten conducir correctamente el automóvil, así como observar el estado de ciertos subsistemas cruciales.

o La interfaz correspondiente para el hardware de la computadora es su arquitectura de conjunto de instrucciones. Es necesario aprender esta interfaz para ser capaz de indicar a la computadora como realizar tareas computacionales de interés.

o Después de familiarizarse con el conjunto de instrucciones de una máquina, podrá aprender otras con poco esfuerzo ya que a lo largo del tiempo se han desarrollado muchas características adicionales para el conjunto de instrucciones comunes.

Page 11: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Visión abstracta del hardware

o El conjunto de instrucciones MIPS es bastante similar a lo que uno encuentra en muchos procesadores modernos. MIPS es un conjunto de instrucciones load/store (carga/almacenamiento), ello significa que los elementos de datos se deben copiar o cargar (load) en registros antes de procesarlos; los resultados de operación también van hacia registros y se deben copiar explícitamente de vuelta a la memoria a través de operaciones store (almacenamiento) separadas. 

o Por ende, para comprender y ser capaz de usar MIPS, es necesario saber acerca de esquemas de al macenamiento de datos en memoria, funciones de las instrucciones de carga y almacenamiento, tipos de operaciones permitidas en los elementos de datos que se conservan en los registros y algunos otros aspectos sueltos que permiten la programación eficiente.

Page 12: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones Load y Store

En la arquitectura RISC, la CPU dispone de un repertorio corto de instrucciones sencillas. Cada instrucción puede realizar una operación muy simple, como mover un dato entre la CPU y la memoria, pero a alta velocidad. Se puede lograr que todas las instrucciones tengan la misma longitud. Hay pocos modos de direccionamiento de los datos y son aplicables a todas las celdas de la memoria de datos. La complejidad de la CPU disminuye, de modo que es fácil aumentar la frecuencia del oscilador de la CPU y con ello la velocidad de las instrucciones.

Instrucciones LOAD / STORE Las operaciones se efectúan solamente entre registros. La única

forma de accesar la memoria es vía registros, para ello se dispone de las instrucciones load / store. En la arquitectura Load / Store se trabaja solo con los datos de los registros con el fin de evitar el acceso frecuente a memoria, lo cual ayuda a mejorar la velocidad, ya que, la memoria es mas lenta. Por lo tanto solo las instrucciones load y store accesan a la memoria.

Page 13: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones Load y Store

LOAD: (Cargar), para cargar un valor desde la memoria, se copian los datos de la memoria en un registro.STORE: (Almacenar), para almacenar un valor en la memoria, copiar los datos desde un registro y después a la memoriaEjemplo de modelo de programa para la arquitectura (Load-Store)LD R1,M1 Cargar el contenido de M1 en R1LD R2,M2 Cargar el contenido de M2 en R2ADD R3, R2,R1 Sumar R1+R2 y el resultado dejar en R3ST M3,R3 Almacenar R3 en M3

Page 14: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Instrucciones Branch y Jump

La diferencia entre un branch y un jump es que el primero puede ser condicional o incondicional, mientras que el segundo solo es incondicional.

Además y más importante aún, es el tamaño del salto que pueden hacer. Un Branch solo puede saltar el equivalente a localizaciones de 8 bits, mientras que el Jump a localizaciones de 16 bits (en nuestro caso todo el rango de la memoria)

Page 15: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Formato de instrucción

Page 16: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Formato de instrucción

El formato de las instrucciones se representa mediante una caja rectangular simbolizando los bits de la instrucción en binario. Estos bits se dividen en grupos llamados campos:

Campo de código de operación (opcode), que especifica la operación a realizar.

Campo de dirección(es), que proporciona direcciones de memoria o de registros.

Campo de modo, que especifica la forma en que se interpreta el campo de direcciones.

Page 17: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Formato de instrucción

Page 18: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

El Código ASCII

Page 19: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

La CPU y sus componentes

La organización de una computadora sencilla orientada hacia los buses se muestra en la figura 2-.1.

La CPU (unidad central de procesamiento) es el “cerebro” de la computadora. Su función es ejecutar programas almacenados en la memoria principal buscando sus instrucciones y examinándolas para que después ejecutarlas una tras otra. Los componentes están conectados por buses, que es una colección de alambres paralelos para transmitir direcciones, datos y señales de control. Los buses pueden ser externos a la CPU, cuando la conectan a la memoria y a los dispositivos de E/S, pero también internos, como veremos.

Page 20: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

La CPU y sus componentes

Page 21: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

La CPU y sus componentes

La CPU En la figura 2-2 se muestra con más detalle la organización

interna de una parte de una CPU Von Neumann típica. Esta parte se llama camino de datos y consiste en los registros (generalmente de 1 a 32), la ALU (unidad de aritmética y lógica,) y varios buses que conectan a los componentes.

Los registros alimentan a dos registros de la entrada de la ALU, rotulados A y B en la figura. Estos registros contienen los datos de entradas de la ALU mientras esta calculando. EL camino de datos es muy importante en todas las maquinas y lo examinaremos a través del simulador Simuproc.

Page 22: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

La CPU y sus componentes

Page 23: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

Page 24: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

El Assembler o lenguaje ensamblador es un lenguaje de programación de bajo nivel.Se necesita saber un Poco de la estructura de un computador para poder entender.

La CPU es el corazón de un computador, casi todos los procesos ocurren dentro de esta. La memoria Ram es el lugar donde los programas están cargados para poder ser ejecutados.

La CPU trabaja usando código binario. Electrónicamente esto es hecho con “switches” que están o encendidos o apagados.  Esto es representado por ceros y unos.  Un solo BIT o digito binario requiere un cable o switch dentro de la CPU.  Normalmente los datos son manipulados en BYTES o múltiplos de bytes. Un byte es un grupo de ocho bits. Ejemplo:   01101011

Page 25: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

Esto es un inconveniente para leer, decir y escribir, así que los programadores usan hexadecimal para representar los bytes.  Convertir entre binario y hexadecimal no es difícil. Primero se divide el byte en dos nybbles (Medio byte) así:

0110 1011(Bin) 6B (Hexa); si el caso fuera lo contrario: 6B (Hexa) 0110 1011 (Bin)

Podemos usar la tabla que viene a continuación:

Page 26: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

BINARIO HEXADECIMAL DECIMAL 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15

Page 27: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

Para trabajar en lenguaje ensamblador se requieren fundamentalmente tres condiciones:

1. Entender como procesa la información la CPU. 2. Saber los códigos nemotécnicos para trabajar en

lenguaje ensamblador y cargarlos en la memoria RAM del sistema.

3. Conocer y trabajar con un simulador (Simuproc), el cual nos facilitará nuestro aprendizaje. Para ello necesitamos bajar el simulador y saber los nemotécnicos mas importantes para trabajar. Ambos están disponibles en la página web de este curso.

Page 28: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Page 29: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Page 30: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Page 31: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Page 32: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Page 33: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Cod. Oper Nemotec

Page 34: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Bloques que conforman el Simuproc

Dispositivos de E / S

Page 35: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

Simuproc y la pantalla de comunicación con el usuario.

Page 36: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Programas en lenguaje ensamblador

Editor del Simuproc

Page 37: Tec_Hw_Computacional-U3(Arquitectura Del Conjunto de I)

Fin de la unidad 3