Tema 2: Lenguaje máquina
Tema 2: Lenguaje máquina Tema 2: Lenguaje máquina
Tema 2: Lenguaje máquinaLa interfaz entre el hardware y el software1
- Page 2 and 3: Índice• Introducción.• Format
- Page 4 and 5: Arquitectura vs. Organización• T
- Page 6 and 7: Lenguaje máquina• Lenguaje restr
- Page 8 and 9: Ejecución de instrucciones: 100010
- Page 10 and 11: Formatos de Instrucción (2)• Las
- Page 12 and 13: Campo de Código de OperaciónFunci
- Page 14 and 15: Codificación por extensión (2)COP
- Page 16 and 17: Modelo de ejecución• Especifica
- Page 18 and 19: Direccionamiento Implícito• No e
- Page 20 and 21: DireccionamientoDirecto Absoluto (1
- Page 22 and 23: Directo Relativo (1)• La instrucc
- Page 24 and 25: Directo Relativo (3)102103COPCD=16+
- Page 26 and 27: Otros modos relativos• Relativo/i
- Page 28 and 29: Resumen de los modos dedireccionami
- Page 30 and 31: OrtogonalidadOrtogonalidad: Cada op
- Page 32 and 33: Frecuencia de utilización de lasin
- Page 34 and 35: Conclusiones de los estudios• 50%
- Page 36 and 37: Filosofías CISC y RISC (2)• Tiem
- Page 38 and 39: ARM: tipos de instrucciones38
- Page 40 and 41: ARM: Ejemplos de instrucciones (2)D
- Page 42: Conceptos importantes• Arquitectu
<strong>Tema</strong> 2: <strong>Lenguaje</strong> máquinaLa interfaz entre el hardware y el software1
Í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: ARM2
Arquitectura y Organizaciónde computadoresArquitectura 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 arquitecturabásica.• La familia de IBM System/370 comparte la mismaarquitectura básica. Esto proporciona compatibilidad de código (al menoshacia atrás). La organización varía en las diferentes versiones dentrode una misma aquitectura.4
Arquitectura del repertorio deinstrucciones (ISA)<strong>Lenguaje</strong> Alto NivelL. EnsambladorSoftwareArquitectura delRepertorio de Instrucciones(ISA)HardwareCompiladorL. MáquinaProcesadorUnidadde ControlUnidadAritmético-LógicaProgramaensambladorMemoriaSalidaEntradaComputador5
<strong>Lenguaje</strong> máquina• <strong>Lenguaje</strong> restringido y de bajo nivel que entiende elcomputador.• Expone las capacidades básicas del computador.• Características más importantes de su arquitectura.• Depende del computador, lo que crea incompatibilidadesentre 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 deuna 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: 1000A0000520A21F50282308A2000800831603136EMemoria de programaUnidadAritmético-LógicaAcumuladorRuta dedatosRegistro de InstrucciónUnidad de control8
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 longituddeterminada.• Tipos básicos de campos:‣ Código de operación (COP).‣ Campo/s de dirección (CD).COPCD1CD2Instrucción de 2 operandosCOPCDInstrucción de 1 operandoCOPInstrucción sin operandos10
Características delFormato de Instrucción• Pocos formatos y sistemáticos.• Instrucciones cortas mejor que largas: menos memoriay mayor rapidez de ejecución.o No se suele especificar la representación.o No se suele poner la dirección de la siguienteinstrucción.o El resultado suele coincidir con un operando.• El tamaño de los formatos suelen encajar con el tamañode palabra de la máquina.11
Campo de Código de OperaciónFunción: codificar la función que debe realizar la instrucción.Codificación en bloque• Instrucciones de tamaño variable.• Tamaño COP fijo.• Con n bits se pueden obtener 2nCOP distintos.• Ej: Intel, Motorola.Codificación por extensión• Instrucciones de tamaño fijo.• Tamaño COP variable.• Extensión de COP parainstrucciones. con menor número deoperandos.• 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 juegode 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 CD1 CD2 CD3x x x xCOP CD1 CD21 1 1 1 x x x xCOP1 1 1 1 1 1 1 x x x x xCDCOP1 1 1 1 1 1 1 1 1 1 1 1 x x x xSobra 1 combinaciónPor ejemplo 1111Sobran 2 combinacionesPor ejemplo 111XSobra 1 combinaciónPor ejemplo 111114
0 0 0 0Codificación por extensión (3)15 Instrucciones con 3 dir. 31 Instrucciones con 1 dir.COP CD1 CD2 CD3COPCD1 1 1 1 1 1 1 0 0 0 0 0……1 1 1 014 Instrucciones con 2 dir.COP CD1 CD21 1 1 1 0 0 0 0…1 1 1 1 1 1 0 11 1 1 1 1 1 1 1 1 1 1 016 Instrucciones sin dir.COP1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0…1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1• 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ásrestrictivo (instrucciones con 3 direcciones) se hubiera obtenido 16 instrucciones.15
Modelo de ejecución• Especifica los dispositivos en los que están almacenados losoperandos. Muchos computadores emplean varios modelos deejecución.PilaModelo Operandos EjemplosOperandos yresultado en la pilaPUSH, POPRegistro-Registro Operandos enregistros. Se indicanúmero de registroRegistro-Memoria MixtoMemoria-Memoria Operandos enmemoriaaddi $1,$3,$5MOV AX,1000MOV 800,100016
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 elpropio 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 sacardatos de la pila.18
Direccionamiento Inmediato• El operando está contenido dentro de la propiainstrucción (literal).• Ventaja: no requiere accesos a memoria ni a registros.• Inconveniente: rango limitado por ancho del campo.CPCOPCD=1000ALUMemoria principalA19
DireccionamientoDirecto Absoluto (1)• La instrucción contiene la dirección del operando.A registroA memoriaA página baseCampo de operandoRegistro donde se almacena eloperandoDirección donde se almacena eloperandoDirección donde se almacena eloperando dentro de un rangolimitado (página)20
DireccionamientoDirecto Absoluto (2)Ejemplo (i8085): Instrucción LDA 1000, carga elacumulador con el contenido de la posición 1000 de lamemoria.CPCOPCD=10001000OperandoMemoria principalALUA• El caso de direccionamiento directo absoluto a registro presenta como ventajasque el acceso a un registro de la CPU es más rápido que a memoria y que el CDocupa menos espacio al haber pocos registros. Como inconveniente está elreducido 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 Dsobre una dirección marcada por un puntero.o Ventaja: Necesita menosbits que en Absolutoo Inconveniente: Necesitarealizar una sumaCPCOP CDd bitsOperandoP - 2 d-1+PunteroPRango direccionableP + 2 d-1 - 1Memoria principal22
Directo Relativo (2)• La mayoría de los computadores permiten desplazamientopositivos y negativos.o Permite generar código reubicable, recorrerestructuras de datos, esquemas de protección dememoria, ...• Según el puntero, existen diversas variantes:o Contador de programa (PC).o Registro base.o Indexado.o Pila.23
Directo Relativo (3)102103COPCD=16+CP103Relativo aRegistro Base119OperandoMemoria principalRelativo alContador deProgramaCPCOPRBCD=16+RB200216OperandoMemoria principal24
Directo Relativo (4)• Directo indexado: Se utiliza un registro índice y undesplazamiento, que se especifica mediante registro.CPCOPRiRBRB200216OperandoMemoria principal+Ri1625
Otros modos relativos• Relativo/indexado con auto-incremento: El contenido delregistro base o índice puede modificarse para ir recorriendolos 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)CPCOPRBCD=16+RB200+1217OperandoMemoria principalALU26
Direccionamiento Indirecto• La instrucción indica la dirección de memoria o el registroque contiene la dirección del operando.CPCOPCD=100100Dir. Operando=200200OperandoMemoria principal27
Resumen de los modos dedireccionamiento más comunesOperandoInmediato CDDirecto a registro R(CD)Directo a memoria M(CD)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))Indirecto M(M(CD))28
RegularidadRegularidad: El juego de instrucciones no presenta casosespeciales.• Es más fácil programar arquitecturas regulares.• Permite diseñar compiladores más sencillos y eficaces.29
OrtogonalidadOrtogonalidad: Cada operación debe poder hacerse concualquier tipo de operandos y con cualquier tipo dedireccionamiento.• Gran número de instrucciones con un pequeño númerode nemónicos.• La ortogonalidad proporciona simplicidad y claridad alprogramador.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 lasinstrucciones (1)• Para optimizar diseño se han realizado estudios sobre lautilización de las instrucciones en computadorescomerciales.o Analizan la frecuencia de utilización de lasinstrucciones 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 lasinstrucciones (2)33
Conclusiones de los estudios• 50% de las instrucciones se dedican a moverinformación dentro del computador.• Las bifurcaciones constituyen el segundo grupo deinstrucciones más empleado.• El 50% de las instrucciones de los computadores seutilizan menos de un 2%, pero son importantes paraaplicaciones 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 quereducir 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):I: nº de instrucciones.C: nº de ciclos.Tc: duración de un ciclo.Tp = I x C x TcCISC: 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ñadapor 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 quepermite su ejecución condicional. Una instrucción no ejecutada consumesólo un ciclo.• Arquitectura (Load/Store). Los datos deben ser guardados en los registrosde la CPU antes de operar con ellos. Modelo de ejecución muy rápido.37
ARM: tipos de instrucciones38
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 instrucciones41
Conceptos importantes• Arquitectura y organización de un computador.• <strong>Lenguaje</strong> 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 mejorcompromiso rendimiento/coste.42