Tema 2: Lenguaje máquina La interfaz entre el hardware y el software 1 Índice • Introducción. • Formatos de Instrucción. • Modos de Direccionamiento. • Ortogonalidad y Regularidad. • Frecuencia de Utilización de Instrucciones. • Filosofías RISC y CISC. • Caso de estudio: ARM 2 Arquitectura y Organización de computadores Arquitectura de un sistema • Atributos visibles para el usuario (programador) • Instrucciones, formatos, modos de direccionamiento, ... Ej: ¿Hay una instrucción de multiplicar? Organización de un sistema • ¿Cómo se implementan las características? • Señales de control, interfaces, tecnología de memoria, ... Ej: ¿Hay un multiplicador, o se hace por sumas repetidas? 3 Arquitectura vs. Organización • Toda la familia Intel x86 comparte la misma arquitectura básica. • La familia de IBM System/370 comparte la misma arquitectura básica. Esto proporciona compatibilidad de código (al menos hacia atrás). La organización varía en las diferentes versiones dentro de una misma aquitectura. 4 Arquitectura del repertorio de instrucciones (ISA) Lenguaje Alto Nivel L. Ensamblador Compilador Programa ensamblador Software Arquitectura del Repertorio de Instrucciones (ISA) Hardware L. Máquina Procesador Unidad de Control Unidad AritméticoLógica Salida Memoria Entrada Computador 5 Lenguaje máquina • Lenguaje restringido y de bajo nivel que entiende el computador. • Expone las capacidades básicas del computador. • Características más importantes de su arquitectura. • Depende del computador, lo que crea incompatibilidades entre distintos computadores. 6 Instrucciones máquina • Se almacenan en la memoria de programa. • Realizan una única y sencilla operación. • Utilizan un número fijo de operandos, representados de una determinada forma. • Codificación sistemática. ⇒ Decodificación sencilla. • Son autocontenidas e independientes. 7 Ejecución de instrucciones : 1000100086008113831203130430A4007F30A200F2 : 100020002208860000000608A5002202031D1F28E2 : 100030000314A20CA40B10288030A2000800643026 : 10004000A600A7016400A70B2328A60B21282208DD : 100050008600000006082502031D10282508A500BB : 10006000A4013A20250203193728A40A31282408BC : 10007000A2000800240882077D34EE34ED34EB340E : 10008000DE34DD34DB34BE34BD34BB347E347B340B : 100090007734B734D734E7340520A21B4C28A300AB : 1000A0000520A21F50282308A2000800831603136E Memoria de programa Unidad Aritmético-Lógica Acumulador Ruta de datos Registro de Instrucción Unidad de control 8 Formatos de Instrucción (1) • Representación de la instrucción. o Significado de cada uno de los bits. • Información que debe contener: o Operación a realizar. o Dirección de los operandos y de los resultados. o Dirección de la siguiente instrucción. o Modo de representación de los operandos. 9 Formatos de Instrucción (2) • Las instrucciones se dividen en campos de una longitud determinada. • Tipos básicos de campos: Código de operación (COP). Campo/s de dirección (CD). COP CD1 COP COP CD2 Instrucción de 2 operandos CD Instrucción de 1 operando Instrucción sin operandos 10 Características del Formato de Instrucción • Pocos formatos y sistemáticos. • Instrucciones cortas mejor que largas: menos memoria y mayor rapidez de ejecución. o No se suele especificar la representación. o No se suele poner la dirección de la siguiente instrucción. o El resultado suele coincidir con un operando. • El tamaño de los formatos suelen encajar con el tamaño de palabra de la máquina. 11 Campo de Código de Operación Función: codificar la función que debe realizar la instrucción. Codificación en bloque Codificación por extensión • Instrucciones de tamaño variable. • Instrucciones de tamaño fijo. • Tamaño COP fijo. • Tamaño COP variable. • Con n bits se pueden obtener 2n • Extensión de COP para COP distintos. instrucciones. con menor número de • Ej: Intel, Motorola. operandos. • Ej: PowerPC. 12 Codificación por extensión (1) Ejemplo: Un computador tiene las siguientes características: • Instrucciones máquina de 16 bits. • 16 direcciones posibles. Diseñar mediante codificación por extensión el siguiente juego de instrucciones: • 15 instrucciones de 3 direcciones. • 14 instrucciones de 2 direcciones. • 31 instrucciones de 1 dirección. • 16 instrucciones sin dirección. 13 Codificación por extensión (2) COP xxxx CD1 CD2 CD3 COP CD1 1111xxxx CD2 COP 1111111xxxxx CD COP 111111111111xxxx Sobra 1 combinación Por ejemplo 1111 Sobran 2 combinaciones Por ejemplo 111X Sobra 1 combinación Por ejemplo 1111 14 Codificación por extensión (3) 15 Instrucciones con 3 dir. COP CD1 CD2 CD3 0000 31 Instrucciones con 1 dir. COP CD 111111100000 … … 111111111110 1110 14 Instrucciones con 2 dir. COP CD1 CD2 11110000 … 11111101 16 Instrucciones sin dir. COP 1111111111110000 … 1111111111111111 • Mediante codificación por extensión se consigue 76 instrucciones. • Mediante codificación en bloque fijando el COP a 4 bits según el caso más restrictivo (instrucciones con 3 direcciones) se hubiera obtenido 16 instrucciones. 15 Modelo de ejecución • Especifica los dispositivos en los que están almacenados los operandos. Muchos computadores emplean varios modelos de ejecución. Modelo Pila Operandos Ejemplos Operandos y PUSH, POP resultado en la pila Registro-Registro Operandos en registros. Se indica addi $1,$3,$5 número de registro Registro-Memoria Mixto Memoria-Memoria Operandos en memoria MOV AX,1000 MOV 800,1000 16 Modos de direccionamiento • Implícito. • Inmediato. • Directo: o Absoluto: A registro / a memoria. o Relativo: Al PC / mediante reg. base / mediante reg. índice. • Indirecto. 17 Direccionamiento Implícito • No existe campo de dirección (CD). •La dirección del operando se encuentra implícita en el propio código de operación. o Ventaja: no ocupa espacio en la instrucción. o Inconveniente: limita la aplicación de la operación. • Ejemplo: • Instrucciones del modelo de pila. Introducir y sacar datos de la pila. 18 Direccionamiento Inmediato • El operando está contenido dentro de la propia instrucción (literal). • Ventaja: no requiere accesos a memoria ni a registros. • Inconveniente: rango limitado por ancho del campo. CP COP CD=1000 ALU Memoria principal A 19 Direccionamiento Directo Absoluto (1) • La instrucción contiene la dirección del operando. Campo de operando A registro Registro donde se almacena el operando A memoria Dirección donde se almacena el operando A página base Dirección donde se almacena el operando dentro de un rango limitado (página) 20 Direccionamiento Directo Absoluto (2) Ejemplo (i8085): Instrucción LDA 1000, carga el acumulador con el contenido de la posición 1000 de la memoria. CP COP 1000 CD=1000 Operando ALU Memoria principal A • El caso de direccionamiento directo absoluto a registro presenta como ventajas que el acceso a un registro de la CPU es más rápido que a memoria y que el CD ocupa menos espacio al haber pocos registros. Como inconveniente está el reducido número de registros que suele haber en la CPU. 21 Directo Relativo (1) • La instrucción no contiene la dirección, sino un desplazamiento D sobre una dirección marcada por un puntero. CP COP o Ventaja: Necesita menos bits que en Absoluto o Inconveniente: Necesita realizar una suma + CD d bits Puntero P P - 2d-1 Operando Rango direccionable P + 2d-1 - 1 Memoria principal 22 Directo Relativo (2) • La mayoría de los computadores permiten desplazamiento positivos y negativos. o Permite generar código reubicable, recorrer estructuras de datos, esquemas de protección de memoria, ... • Según el puntero, existen diversas variantes: o Contador de programa (PC). o Registro base. o Indexado. o Pila. 23 Directo Relativo (3) CP 102 COP CD=16 + 103 103 119 Relativo a Registro Base CP COP RB CD=16 216 Operando Memoria principal + Relativo al Contador de Programa RB 200 Operando Memoria principal 24 Directo Relativo (4) • Directo indexado: Se utiliza un registro índice y un desplazamiento, que se especifica mediante registro. CP COP 216 Ri RB RB Operando Memoria principal 200 + Ri 16 25 Otros modos relativos • Relativo/indexado con auto-incremento: El contenido del registro base o índice puede modificarse para ir recorriendo los elementos de un vector. o Preincremento, predecremento. o (Primero se incrementa / decrementa el RB y después se resuelve la dirección) o Postincremento, postdecremento. o (Primero se resuelve la dirección y después se incrementa / decrementa el RB) +1 CP COP RB CD=16 217 Operando + RB 200 ALU Memoria principal 26 Direccionamiento Indirecto • La instrucción indica la dirección de memoria o el registro que contiene la dirección del operando. CP COP CD=100 100 Dir. Operando=200 200 Operando Memoria principal 27 Resumen de los modos de direccionamiento más comunes Operando CD Inmediato R(CD) Directo a registro M(CD) Directo a memoria Directo a página M(PAG. & CD) Relativo al CP M(R(CP) + CD) Relativo a registro base M(R(RB) + CD) Indexado M(R(RB) + R(Ri)) M(M(CD)) Indirecto 28 Regularidad Regularidad: El juego de instrucciones no presenta casos especiales. • Es más fácil programar arquitecturas regulares. • Permite diseñar compiladores más sencillos y eficaces. 29 Ortogonalidad Ortogonalidad: Cada operación debe poder hacerse con cualquier tipo de operandos y con cualquier tipo de direccionamiento. • Gran número de instrucciones con un pequeño número de nemónicos. • La ortogonalidad proporciona simplicidad y claridad al programador. 30 Tipos de instrucciones • Aritméticas / lógicas / desplazamiento. • Transferencia de datos. • Comparación / condicional. • Saltos, llamadas a subrutinas. • De entrada / salida. 31 Frecuencia de utilización de las instrucciones (1) • Para optimizar diseño se han realizado estudios sobre la utilización de las instrucciones en computadores comerciales. o Analizan la frecuencia de utilización de las instrucciones y las secuencias más utilizadas. • Dos tipos de estudios: o Estáticos (lectura del listado de los programas). o Dinámicos (en tiempo de ejecución). 32 Frecuencia de utilización de las instrucciones (2) 33 Conclusiones de los estudios • 50% de las instrucciones se dedican a mover información dentro del computador. • Las bifurcaciones constituyen el segundo grupo de instrucciones más empleado. • El 50% de las instrucciones de los computadores se utilizan menos de un 2%, pero son importantes para aplicaciones específicas y no se pueden eliminar. 34 Filosofías CISC y RISC (1) • Históricamente, CISC (Complex Instruction Set Computing): o Al principio las memorias eran lentas y costosa. Había que reducir el tamaño de los programas. o Muchas instrucciones para tareas complejas. ⇒ más HW, ralentiza el ordenador. • Actualmente, RISC (Reduced Instruction Set Computing): o Concepto introducido por Hennesy y Patterson en los años 80. o Menos instrucciones y modos de direccionamiento. o Formato fijo para las instrucciones, ejecución regular. o Unidad de control simple. o Aumenta las prestaciones y el rendimiento. Reduce el coste. 35 Filosofías CISC y RISC (2) • Tiempo de ejecución de un programa (Tp): Tp = I x C x Tc I: nº de instrucciones. C: nº de ciclos. Tc: duración de un ciclo. CISC: Minimiza I, incrementando C y Tc. RISC: Minimiza C y Tc, incrementando I. 36 Caso de estudio: ARM • ARM (Advanced RISC Machines) es una familia de procesadores RISC diseñada por la empresa Acorn Computers Ltd desde inicios de los años 80. • La Nintendo DS incorpora 2 microprocesadores ARM en su diseño. • Características principales: CPU con 37 registros de 32 bits. Instrucciones de 32 bits de longitud. La mayoría de instrucciones se ejecuta en un solo ciclo. Los 4 primeros bits de cada instrucción forman el campo de condición que permite su ejecución condicional. Una instrucción no ejecutada consume sólo un ciclo. Arquitectura (Load/Store). Los datos deben ser guardados en los registros de la CPU antes de operar con ellos. Modelo de ejecución muy rápido. 37 ARM: tipos de instrucciones 38 ARM: Ejemplos de instrucciones (1) Direccionamiento Directo Absoluto a Registro. 39 ARM: Ejemplos de instrucciones (2) Direccionamiento Directo Absoluto a Registro e Inmediato. 40 ARM: Repertorio de instrucciones 41 Conceptos importantes • Arquitectura y organización de un computador. • Lenguaje máquina. • Formatos de instrucción. • Modos de direccionamiento. • Tipos de instrucción y su frecuencia de utilización. • Filosofía RISC vs. CISC como búsqueda del mejor compromiso rendimiento/coste. 42