Unidad 3 Arquitectura de conjunto de instrucciones
ACI605 Tecnología de Hw. computacional
Docente:Godofredo Becerra 2014
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.
1. Conceptos de arquitectura de computación.
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.
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.
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.
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.
Instrucciones y direccionamiento
Una instrucción típica MIPS y los pasos de su ejecución
Visión abstracta del hardware
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.
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.
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.
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
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)
Formato de instrucción
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.
Formato de instrucción
El Código ASCII
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.
La CPU y sus componentes
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.
La CPU y sus componentes
Programas en lenguaje ensamblador
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
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:
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
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.
Bloques que conforman el Simuproc
Bloques que conforman el Simuproc
Bloques que conforman el Simuproc
Bloques que conforman el Simuproc
Bloques que conforman el Simuproc
Bloques que conforman el Simuproc
Cod. Oper Nemotec
Bloques que conforman el Simuproc
Dispositivos de E / S
Programas en lenguaje ensamblador
Simuproc y la pantalla de comunicación con el usuario.
Programas en lenguaje ensamblador
Editor del Simuproc
Fin de la unidad 3
Top Related