T3-Lenguaje Máquina - docencia de la ETSIT-URJC

T3-Lenguaje Máquina - docencia de la ETSIT-URJC T3-Lenguaje Máquina - docencia de la ETSIT-URJC

docencia.etsit.urjc.es
from docencia.etsit.urjc.es More from this publisher
10.07.2015 Views

Departamento de Sistemas Telemáticos y Computación(GSyC)Lenguaje MáquinaKatia Leal AlgaraSeptiembre 2011katia@gsyc.eshttp://gsyc.escet.urjc.es/~katia/0

Departamento <strong>de</strong> Sistemas Telemáticos y Computación(GSyC)<strong>Lenguaje</strong> MáquinaKatia Leal AlgaraSeptiembre 2011katia@gsyc.eshttp://gsyc.escet.urjc.es/~katia/0


IntroducciónInstrucciones y direccionamientoDireccionamientos, juego <strong>de</strong> instrucciones yformatoSecuencia básica <strong>de</strong> ejecución1. Leer <strong>de</strong> memoria una instrucción2. UC interpreta <strong>la</strong> instrucción3. Ejecución <strong>de</strong> <strong>la</strong> instrucción bajo <strong>la</strong>s ór<strong>de</strong>nes <strong>de</strong> <strong>la</strong> UCUn computador solo entien<strong>de</strong> lenguaje máquinaEl lenguaje máquina es distinto para cadacomputador, salvo compatibilidad entre familiasEl lenguaje máquina establece <strong>la</strong>s capacida<strong>de</strong>sbásicas <strong>de</strong>l computadorAl conjunto <strong>de</strong> instrucciones <strong>de</strong>l lenguaje máquinase conoce como juego <strong>de</strong> instruccionesGSyC 2011 - <strong>Lenguaje</strong> máquina 1


<strong>Lenguaje</strong> máquina y lenguaje ensamb<strong>la</strong>dor<strong>Lenguaje</strong> ensamb<strong>la</strong>dor<strong>Lenguaje</strong> simbólico a base <strong>de</strong> nemónicos(nombres que recuerdan <strong>la</strong> operación a realizar)Este lenguaje simbólico se conoce comolenguaje ensamb<strong>la</strong>dorAl programa que traduce a binario un programaescrito en lenguaje ensamb<strong>la</strong>dor se le conocecomo programa ensamb<strong>la</strong>dorEl programa ensamb<strong>la</strong>dor utiliza una tab<strong>la</strong> quehace correspon<strong>de</strong>r a cada nemónico con sucódigo binarioGSyC 2011 - <strong>Lenguaje</strong> máquina 3


<strong>Lenguaje</strong> máquina y lenguaje ensamb<strong>la</strong>dor<strong>Lenguaje</strong> ensamb<strong>la</strong>dorPropieda<strong>de</strong>s que cumplen <strong>la</strong>s instrucciones:Emplean un número fijo <strong>de</strong> operandosCodificación sistemática y ajustada a un formato <strong>de</strong>instruccionesAutocontenidas e in<strong>de</strong>pendientes, contienen toda <strong>la</strong>información que necesitan para ejecutarsePor ser autocontenidas <strong>de</strong>ben tener <strong>la</strong> siguienteinformación:Operación a realizarUbicación <strong>de</strong> los operandosUbicación <strong>de</strong>l resultadoPosición <strong>de</strong> <strong>la</strong> siguiente instrucciónoperaciónoperandosresultadosiguienteinstrucciónGSyC 2011 - <strong>Lenguaje</strong> máquina 4


<strong>Lenguaje</strong> máquina y lenguaje ensamb<strong>la</strong>dor<strong>Lenguaje</strong> ensamb<strong>la</strong>dor Juego <strong>de</strong> instrucciones: análisis <strong>de</strong> <strong>la</strong>soperaciones posibles y <strong>de</strong>terminación <strong>de</strong><strong>la</strong> siguiente instrucción a ejecutar Modos <strong>de</strong> direccionamiento:<strong>de</strong>terminación <strong>de</strong> <strong>la</strong> ubicación <strong>de</strong> losoperandos Formato <strong>de</strong> <strong>la</strong>s instrucciones: modo enque se codifica en binario toda estainformaciónGSyC 2011 - <strong>Lenguaje</strong> máquina 5


<strong>Lenguaje</strong> máquina y lenguaje ensamb<strong>la</strong>dorGSyC 2011 - <strong>Lenguaje</strong> máquina 6


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesDiseño <strong>de</strong> un repertorio <strong>de</strong> instrucciones El repertorio <strong>de</strong> instrucciones influye directamente en:1. El número <strong>de</strong> instrucciones necesarias para realizar una<strong>de</strong>terminada tarea2. El diseño <strong>de</strong>l compi<strong>la</strong>dor3. El diseño <strong>de</strong> <strong>la</strong> ruta <strong>de</strong> datos y <strong>la</strong> unidad <strong>de</strong> control Hasta los 80 todo era CISC. Después se impusieron los RISC CISC, gran número <strong>de</strong> instrucciones complejas Gran variedad <strong>de</strong> tipos <strong>de</strong> datos, <strong>de</strong> modos <strong>de</strong>direccionamiento y <strong>de</strong> operaciones Permite implementar instrucciones <strong>de</strong> alto nivel directamente ocon un número pequeño <strong>de</strong> instrucciones ensamb<strong>la</strong>dor HW más complejo RISC, pocas instrucciones y muy básicas Pocos tipos <strong>de</strong> datos y <strong>de</strong> modos <strong>de</strong> direccionamiento Técnicas <strong>de</strong> optimización, tanto a nivel <strong>de</strong> HW como <strong>de</strong>lcompi<strong>la</strong>dor, más sencil<strong>la</strong>s <strong>de</strong> implementar Necesitan más instrucciones para realizar <strong>la</strong> misma tareaGSyC 2011 - <strong>Lenguaje</strong> máquina 7


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesAspectos a tener en cuenta Tipo <strong>de</strong> almacenamiento <strong>de</strong> operandos Interpretaciones <strong>de</strong> <strong>la</strong>s direcciones <strong>de</strong>memoria Modos <strong>de</strong> direccionamiento soportados Otras <strong>de</strong>cisionesGSyC 2011 - <strong>Lenguaje</strong> máquina 8


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandosLos distintos repertorios se diferencianen el tipo <strong>de</strong> almacenamiento internoque utilizan: Pi<strong>la</strong> Acumu<strong>la</strong>dor Registros <strong>de</strong> propósito general(General Purpose Registers, GPR)GSyC 2011 - <strong>Lenguaje</strong> máquina 9


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandos Pi<strong>la</strong>: los operandos son implícitos, siempreen <strong>la</strong> parte superior <strong>de</strong> <strong>la</strong> pi<strong>la</strong> (Top of Stack,TOS) No es necesario indicar dón<strong>de</strong> se encuentranlos operandos Acumu<strong>la</strong>dor: uno <strong>de</strong> los operandos esimplícito El otro se <strong>de</strong>be especificar <strong>de</strong> forma explícitaGSyC 2011 - <strong>Lenguaje</strong> máquina 10


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandosGPR: los operandos se especifican <strong>de</strong>forma explícita Pue<strong>de</strong>n ser dos o tres operandos, ¿porqué? Alguno o todos los operandos pue<strong>de</strong>nestar en memoria. Por lo tanto, sepue<strong>de</strong>n diseñar …GSyC 2011 - <strong>Lenguaje</strong> máquina 11


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandos: GPRRegistro-Registro <strong>de</strong> 3 operandos,todos <strong>de</strong>ben estar en registros Se utilizan instrucciones <strong>de</strong> carga (load)y almacenamiento (store)Registro-Memoria <strong>de</strong> 2 operandos, almenos uno <strong>de</strong> los operandos <strong>de</strong>beestar en registroMemoria-Memoria <strong>de</strong> 2 o 3operandos, todos ellos en memoriaGSyC 2011 - <strong>Lenguaje</strong> máquina 12


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandos Casi todas <strong>la</strong>s arquitecturas se basan enGPR Los registros son más rápidos Son utilizados <strong>de</strong> manera mucho máseficiente por los compi<strong>la</strong>dores Almacenamiento temporal <strong>de</strong> variables Diferentes alternativas para diseñar unrepertorio basado en GPR En los repertorios registro-registro todas <strong>la</strong>sinstrucciones tienen <strong>la</strong> misma longitud y seejecutan en un número simi<strong>la</strong>r <strong>de</strong> ciclosGSyC 2011 - <strong>Lenguaje</strong> máquina 13


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesTipo <strong>de</strong> almacenamiento <strong>de</strong> los operandos En arquitecturas registro-registro: La codificación es sencil<strong>la</strong>, siempre hay queespecificar el i<strong>de</strong>ntificador <strong>de</strong> tres registros Pero los programas ocupan más, ¿por qué? En arquitecturas memoria-memoria: Código más compacto La memoria, un cuello <strong>de</strong> botel<strong>la</strong>, ¿por qué? Gran<strong>de</strong>s diferencias entre <strong>la</strong> longitud <strong>de</strong> <strong>la</strong>sinstrucciones y entre su duración Se complica <strong>la</strong> codificación <strong>de</strong> <strong>la</strong>sinstrucciones y pue<strong>de</strong> variar mucho el CPI(Ciclos Por Instrucción) entre instruccionesGSyC 2011 - <strong>Lenguaje</strong> máquina 14


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesEjemplo Vamos a evaluar dos alternativas:1. Registro-Registro <strong>de</strong> 3 operandos con 8 registros <strong>de</strong>propósito general2. Memoria-Memoria <strong>de</strong> 3 operandos Se <strong>de</strong>sea realizar una secuencia <strong>de</strong> operacioneslógicasR = X AND YZ = X OR YY = R AND X El código <strong>de</strong> operación ocupa 1Byte Las direcciones <strong>de</strong> memoria y los operandosocupan 4 Bytes Los operandos están almacenados inicialmente enmemoriaGSyC 2011 - <strong>Lenguaje</strong> máquina 15


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesload r1,Xload r2,Yand r3,r1,r2or r4,r1,r2and r2,r3,r1store r3,Rstore r4,Zstore r2,Yand R,X,Yor Z,X,Yand Y,R,XTráfico con <strong>la</strong> memoria <strong>de</strong>instruccionesopco<strong>de</strong>+dir+registro=6Bopco<strong>de</strong>+dir+registro=6Bopco<strong>de</strong>+3 registro=3Bopco<strong>de</strong>+3 registro=3Bopco<strong>de</strong>+3 registro=3Bopco<strong>de</strong>+dir+registro=6Bopco<strong>de</strong>+dir+registro=6Bopco<strong>de</strong>+dir+registro=6BTotal, 39BTráfico con <strong>la</strong> memoria <strong>de</strong>instruccionesopco<strong>de</strong>+3 direcciones=13Bopco<strong>de</strong>+3 direcciones=13Bopco<strong>de</strong>+3 direcciones=13BTráfico con <strong>la</strong> memoria<strong>de</strong> datos1 operando = 4B1 operando = 4B1 operando = 4B1 operando = 4B1 operando = 4BTotal, 20BTotal, 39BTotal, 36BGSyC 2011 - <strong>Lenguaje</strong> máquina 16---Tráfico con <strong>la</strong> memoria<strong>de</strong> datos3 operandos = 12B3 operandos = 12B3 operandos = 12B


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesInterpretación <strong>de</strong> <strong>la</strong>s direcciones <strong>de</strong> memoria La mayoría <strong>de</strong> <strong>la</strong>s máquinas están direccionadas por bytes Proporcionan acceso a bytes (8 bits), medias pa<strong>la</strong>bras (16bits), pa<strong>la</strong>bras (32 bits) y dobles pa<strong>la</strong>bras (64 bits) Convenios para c<strong>la</strong>sificar los bytes <strong>de</strong> una pa<strong>la</strong>bra Little Endian, “little-end-in”, <strong>de</strong> comienzo por el extremopequeño Coloca el byte menos significativo en <strong>la</strong> posición mássignificativa <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra La dirección <strong>de</strong> un dato es <strong>la</strong> <strong>de</strong>l byte menos significativo Big Endian, “big-end-in”, <strong>de</strong> comienzo por el extremo gran<strong>de</strong> Coloca el byte menos significativo en <strong>la</strong> posición menossignificativa <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra La dirección <strong>de</strong> un dato es <strong>la</strong> <strong>de</strong>l byte más significativo Middle Endian, arquitectura capaz <strong>de</strong> trabajar con ambasor<strong>de</strong>naciones, como por ejemplo los procesadores MIPS oPower PCGSyC 2011 - <strong>Lenguaje</strong> máquina 17


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesInterpretación <strong>de</strong> <strong>la</strong>s direcciones <strong>de</strong> memoria Ejemplo: el valor hexa<strong>de</strong>cimal 0x4A3B2C1D secodificaría en memoria en <strong>la</strong> secuencia: {4A, 3B, 2C, 1D} en big-endian {1D, 2C, 3B, 4A} en little-endianGSyC 2011 - <strong>Lenguaje</strong> máquina 18


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesInterpretación <strong>de</strong> <strong>la</strong>s direcciones <strong>de</strong> memoria Ejercicio 1: explica cómo pue<strong>de</strong> ser que tras <strong>la</strong> ejecución <strong>de</strong>lmismo código, en unas máquinas se imprima un mensaje yen otras otro. Debes indicar <strong>la</strong> or<strong>de</strong>nación <strong>de</strong> los datos enmemoria teniendo en cuenta que un entero ocupa 16 bits yun char 8 bits. A<strong>de</strong>más, <strong>de</strong>bes indicar el valor <strong>de</strong> p[0] y p[1]en cada caso#inclu<strong>de</strong> int main(void){int i = 1;char *p = (char *) &i;if ( p[0] == 1 )printf("Little Endian\n");elseprintf("Big Endian\n");return 0;}GSyC 2011 - <strong>Lenguaje</strong> máquina 19


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesAccesos a información <strong>de</strong> tamaño mayor que 1 byte Estos accesos <strong>de</strong>ben estar alineados, es <strong>de</strong>cir, unacceso a una información <strong>de</strong> s bytes en <strong>la</strong>dirección <strong>de</strong>l byte B está alineado siB módulo s = 0 Estas restricciones <strong>de</strong> alineamiento se <strong>de</strong>ben aque <strong>la</strong>s memorias, físicamente, están diseñadaspara hacer accesos alineados Un acceso no alineado o mal alineado, suponevarios accesos alineados a <strong>la</strong> memoria Si el dato está bien alineado, soportar accesos abytes y medias pa<strong>la</strong>bras requiere una red <strong>de</strong>alineamiento para alinear los bytes y mediaspa<strong>la</strong>bras en los registrosGSyC 2011 - <strong>Lenguaje</strong> máquina 20


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesAlineación datos en registros Red <strong>de</strong> alimentación para cargar un byte o mediapa<strong>la</strong>bra La máquina también pue<strong>de</strong> necesitar exten<strong>de</strong>r elsigno En algunas máquinas, un byte o media pa<strong>la</strong>bra noafecta a <strong>la</strong> parte superior <strong>de</strong> un registro Ejemplo: en un sistema <strong>de</strong> memoria <strong>de</strong> 32 bits, senecesitan cuatro caminos <strong>de</strong> alineación para losbytesGSyC 2011 - <strong>Lenguaje</strong> máquina 21


Modos <strong>de</strong> direccionamientoModos <strong>de</strong> direccionamiento ¿Dón<strong>de</strong> po<strong>de</strong>mos encontrar un operando? En <strong>la</strong> propia instrucción En un registro En memoria principal ¿Siempre en <strong>la</strong> propia instrucción? Ahorro <strong>de</strong> espacio: instrucciones más cortas Direccionamiento re<strong>la</strong>tivo: código reubicable Estructuras <strong>de</strong> datos: direccionamiento másfácil mediante índices y punterosGSyC 2011 - <strong>Lenguaje</strong> máquina 22


Modos <strong>de</strong> direccionamientoModos <strong>de</strong> direccionamiento básicosInmediato: el operando se codifica <strong>de</strong>ntro <strong>de</strong> <strong>la</strong>instrucciónRegistro: se incluye el i<strong>de</strong>ntificador <strong>de</strong>l registroque amacena el operandoDirecto: se incluye <strong>la</strong> dirección <strong>de</strong> memoria en <strong>la</strong>que está almacenado el operandoIndirecto: se indica el registro que almacena <strong>la</strong>dirección <strong>de</strong> memoria en <strong>la</strong> que se encuentra eloperandoIndirecto con <strong>de</strong>sp<strong>la</strong>zamiento: se suma unoperando inmediato al contenido <strong>de</strong>l registro paraobtener <strong>la</strong> dirección <strong>de</strong> memoria en <strong>la</strong> que seencuentra el operandoGSyC 2011 - <strong>Lenguaje</strong> máquina 23


Modos <strong>de</strong> direccionamientoC<strong>la</strong>sificación modos <strong>de</strong> direccionamientoModo <strong>de</strong>direccionamientoEjemploSignificadoUsoInmediatoAdd R4, #3R4←R4+3Para constantesRegistroAdd R4, R3R4←R4+R3Cuando un valor está enregistroDirectoAdd R1, (1001)R1←R1+M[1001]Acceso a datos estáticosIndirecto a registroAdd R4, (R1)R4←R4+M[R1]Acceso utilizando unpuntero a una direccióncalcu<strong>la</strong>daIndirecto +<strong>de</strong>sp<strong>la</strong>zamientoAdd R4, 100(R1)R4←R4+M[100+R1]Acceso a variableslocalesIn<strong>de</strong>xadoAdd R3, (R1+R2)R3←R3+M[R1+R2]Acceso a arrays,base+índiceIndirecto a memoriaAdd R1, @(R3)R1←R1+M[M[R3]]Post-incrementoAdd R1, (R2)+R1←R1+M[R2]R2←R2+dRecorrido <strong>de</strong> arrays enun buclePre-<strong>de</strong>cremento Add R1, -(R2) R2←R2-dR1←R1+M[R2]GSyC 2011 - <strong>Lenguaje</strong> máquina 24


Modos <strong>de</strong> direccionamientoDirecccionamiento inmediatoGSyC 2011 - <strong>Lenguaje</strong> máquina 25


Modos <strong>de</strong> direccionamientoDirecccionamiento <strong>de</strong> registroGSyC 2011 - <strong>Lenguaje</strong> máquina 26


Modos <strong>de</strong> direccionamientoDirecccionamiento directoGSyC 2011 - <strong>Lenguaje</strong> máquina 27


Modos <strong>de</strong> direccionamientoDirecccionamiento indirecto con <strong>de</strong>sp<strong>la</strong>zamientoGSyC 2011 - <strong>Lenguaje</strong> máquina 28


Modos <strong>de</strong> direccionamientoModos <strong>de</strong> direccionamiento en un repertorio RISC Los repertorios RISC incluyen como mínimodireccionamiento inmediato e indirecto con<strong>de</strong>sp<strong>la</strong>zamiento Direccionamiento inmediato: a <strong>la</strong> hora <strong>de</strong> diseñarel repertorio hay que <strong>de</strong>cidir sí1. Todas <strong>la</strong>s instrucciones <strong>de</strong>ben soportar este modo osólo un subconjunto2. El rango <strong>de</strong> valores <strong>de</strong>l operando inmediato, ¿en quéinfluye esto? Direccionamiento indirecto con<strong>de</strong>sp<strong>la</strong>zamiento: <strong>la</strong> <strong>de</strong>cisión más importanteconsiste en <strong>de</strong>terminar el rango <strong>de</strong> valores quepue<strong>de</strong> tomar el <strong>de</strong>sp<strong>la</strong>zamientoGSyC 2011 - <strong>Lenguaje</strong> máquina 29


Diseño <strong>de</strong>l repertorio <strong>de</strong> instruccionesOtras consi<strong>de</strong>raciones Tipo y tamaño <strong>de</strong> los operandos: ¿Qué tipo <strong>de</strong> datos se soportan? ¿Con qué tamaños?Carácter, entero, coma flotante, etc El código <strong>de</strong> operación, opco<strong>de</strong>, indicará el tipo <strong>de</strong> losoperandos implicados en <strong>la</strong> ejecución <strong>de</strong> <strong>la</strong> instrucción … también lo pue<strong>de</strong>n indicar los operandos medianteetiquetas, ¿inconvenientes? Conjunto <strong>de</strong> operaciones soportadas: ¿Qué tipo <strong>de</strong> operaciones van a realizar <strong>la</strong>s instrucciones <strong>de</strong>lrepertorio? Un conjunto sencillo: aritmético-logicas, <strong>de</strong> acceso amemoria, <strong>de</strong> control <strong>de</strong> flujo (saltos) y l<strong>la</strong>madas al sistemaoperativo Dependiendo <strong>de</strong> los tipos <strong>de</strong> datos, instrucciones paramanejo <strong>de</strong> caracteres, coma flotante, etc Tratamiento <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong> control <strong>de</strong> flujo:modifican el flujo <strong>de</strong> control <strong>de</strong> un códigoGSyC 2011 - <strong>Lenguaje</strong> máquina 30


Diseño <strong>de</strong>l repertorio <strong>de</strong> instruccionesTratamiento <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong> control <strong>de</strong> flujo Saltos condicionales: ¿Cómo se especifica <strong>la</strong> condición?¿Cómo se indica <strong>la</strong> dirección <strong>de</strong>stino <strong>de</strong> salto? Saltos incondicionales: ¿Cómo se indica el <strong>de</strong>stino? Dos alternativas para indicar el <strong>de</strong>stino <strong>de</strong> salto Direccionamiento re<strong>la</strong>tivo al PC Se conoce el <strong>de</strong>stino <strong>de</strong> salto en tiempo <strong>de</strong>compi<strong>la</strong>ción Los <strong>de</strong>stinos <strong>de</strong> los saltos están cercanos al salto Código reubicable ¿Cuántos bits se necesitan para el <strong>de</strong>sp<strong>la</strong>zamiento? Direccionamiento indirecto con registro No se conoce <strong>la</strong> dirección <strong>de</strong> salto o su valor exce<strong>de</strong><strong>de</strong>l que se pue<strong>de</strong> indicar con el <strong>de</strong>sp<strong>la</strong>zamiento Se indica el i<strong>de</strong>ntificador <strong>de</strong>l registro que contiene <strong>la</strong>dirección <strong>de</strong>stino <strong>de</strong> saltoGSyC 2011 - <strong>Lenguaje</strong> máquina 31


Diseño <strong>de</strong>l repertorio <strong>de</strong> instruccionesTratamiento <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong> control <strong>de</strong> flujo La condición <strong>de</strong> salto consiste en unacomparación Evaluar los códigos <strong>de</strong> condición <strong>de</strong> <strong>la</strong>ALU Evaluar uno o varios registros Especificar <strong>la</strong> comparación en <strong>la</strong> propiainstrucciónGSyC 2011 - <strong>Lenguaje</strong> máquina 32


Operaciones <strong>de</strong>l repertorio <strong>de</strong> instruccionesCodificación <strong>de</strong>l repertorio <strong>de</strong> instrucciones La codificación afecta al tamaño <strong>de</strong>l código <strong>de</strong> losprogramas y a <strong>la</strong> implementación <strong>de</strong>l procesador En <strong>la</strong> codificación influyen factores como Tipo <strong>de</strong> almacenamiento <strong>de</strong> los operandos Número <strong>de</strong> registros Modos <strong>de</strong> direccionamiento soportados Tipos y tamaño <strong>de</strong> los operandos Existen tres tipos <strong>de</strong> codificación Longitud variable Longitud fija HíbridaGSyC 2011 - <strong>Lenguaje</strong> máquina 33


Operaciones <strong>de</strong>l repertorio <strong>de</strong> instruccionesCodificación <strong>de</strong>l repertorio <strong>de</strong> instrucciones Longitud variable Soporta cualquier número <strong>de</strong> operandos y cualquiercombinación instrucción/modo <strong>de</strong> direccionamiento Etiquetas que indican el modo Se aña<strong>de</strong>n tantos campos como sean necesarios + <strong>la</strong>setiquetas que permiten su interpretación Longitud fija Híbrida El código <strong>de</strong> operación especifica el modo <strong>de</strong>direccionamiento Sólo se permiten unas combinaciones <strong>de</strong>terminadas <strong>de</strong>operaciones+modos Los campos <strong>de</strong> <strong>la</strong> instrucción son siempre los mismos Sólo se permiten unos <strong>de</strong>terminados formatos <strong>de</strong> instrucción,que incluyen un número variable <strong>de</strong> modos y operandosGSyC 2011 - <strong>Lenguaje</strong> máquina 34


Operaciones <strong>de</strong>l repertorio <strong>de</strong> instruccionesCodificación <strong>de</strong>l repertorio <strong>de</strong> instrucciones CISC Soporta muchos tipos <strong>de</strong> modo <strong>de</strong> direccionamiento yoperaciones, y distinto número <strong>de</strong> operandos Códigos <strong>de</strong> menor tamaño Decodificación más complicada RISC Pocos modos <strong>de</strong> direccionamiento y operaciones El código tiene un tamaño mayor (camposinfrautilizados) Gran rendimiento en <strong>la</strong> <strong>de</strong>codificación En cualquiercaso, <strong>la</strong> longitud <strong>de</strong> <strong>la</strong>s instrucciones<strong>de</strong>be ser un número entero <strong>de</strong> bytes para facilitar<strong>la</strong> <strong>de</strong>codificación y el almacenamientoGSyC 2011 - <strong>Lenguaje</strong> máquina 35


Ejemplo <strong>de</strong> codificación híbrida: MIPS64Repertorio <strong>de</strong> instrucciones <strong>de</strong>l procesador MIPS64 MIPS64, arquitectura RISC basada en registros<strong>de</strong> propósito general <strong>de</strong> tipocarga/almacenamiento 32 registros <strong>de</strong> propósito general <strong>de</strong> 64 bits (R0-R31) R0 siempre almacena un 0 y no se pue<strong>de</strong> modificar 32 registros para coma flotante (F0-F31) quealmacenan números en precisión simple o doble Soporta tipos enteros <strong>de</strong> 8, 16, 32 y 64 bits Soporta tipos en coma flotante <strong>de</strong> 32 y 64 bitsGSyC 2011 - <strong>Lenguaje</strong> máquina 36


Ejemplo <strong>de</strong> codificación híbrida: MIPS64Repertorio <strong>de</strong> instrucciones <strong>de</strong>l procesador MIPS64 Modos <strong>de</strong> direccionamiento soportadosInmediatoIndirecto con <strong>de</strong>sp<strong>la</strong>zamiento Indirecto puro, si el <strong>de</strong>sp<strong>la</strong>zamiento es 0 Absoluto, si R0 es el registro base Todas <strong>la</strong>s instrucciones son <strong>de</strong> 32 bits conun opco<strong>de</strong> <strong>de</strong> 6 bits Tres formatos diferentes <strong>de</strong> instrucciónTipo I (Inmediato)Tipo R (Registro)Tipo J (Jump)GSyC 2011 - <strong>Lenguaje</strong> máquina 37


Ejemplo <strong>de</strong> codificación híbrida: MIPS64Instrucciones <strong>de</strong> Tipo I Load/Store RS (registro fuente): registro base para el acceso a memoria RT (registro <strong>de</strong>stino): registro para los datos Inmediato: <strong>de</strong>sp<strong>la</strong>zamiento para el cálculo <strong>de</strong> <strong>la</strong> dirección <strong>de</strong>memoria a <strong>la</strong> que hay que acce<strong>de</strong>r Aritmético-lógicas con direccionamiento inmediato RS (registro fuente): operando 1 RT (registro <strong>de</strong>stino): registro <strong>de</strong>stino <strong>de</strong> <strong>la</strong> operación Inmediato: operando 2, directamente su valor Saltos codicionales/incodicionales RS (registro fuente): registro <strong>de</strong> condición (para <strong>la</strong>comparación)/Registro que contiene <strong>la</strong> dirección <strong>de</strong>stino <strong>de</strong>l salto RT (registro <strong>de</strong>stino): registro <strong>de</strong> condición (para <strong>la</strong>comparación)/No se utiliza Inmediato: <strong>de</strong>sp<strong>la</strong>zamiento respecto <strong>de</strong>l PC/0GSyC 2011 - <strong>Lenguaje</strong> máquina 38


Ejemplo <strong>de</strong> codificación híbrida: MIPS64Instrucciones <strong>de</strong> Tipo R Aritmético-lógicas registro-registro RS (registro fuente): operando 1 RT (registro <strong>de</strong>stino): operando 2 RD: registro <strong>de</strong>stino sa (Shift Amount): indica el <strong>de</strong>sp<strong>la</strong>zamiento para <strong>la</strong>sinstrucciones <strong>de</strong> tipo Shift function: junto con el OpCo<strong>de</strong> indica el tipo <strong>de</strong>operación que se <strong>de</strong>be realizarGSyC 2011 - <strong>Lenguaje</strong> máquina 39


Ejemplo <strong>de</strong> codificación híbrida: MIPS64Instrucciones <strong>de</strong> Tipo J Salto incondicional y retorno <strong>de</strong> procedimientoque utilizan direccionamiento con <strong>de</strong>sp<strong>la</strong>zamientore<strong>la</strong>tivo al PCopCo<strong>de</strong>: Código <strong>de</strong> <strong>la</strong> operaciónInstr_in<strong>de</strong>x: offset re<strong>la</strong>tivo el PCGSyC 2011 - <strong>Lenguaje</strong> máquina 40


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesOptimizaciones <strong>de</strong>l repertorio <strong>de</strong> instrucciones Casi todas <strong>la</strong>s mejoras se basan en <strong>la</strong> extensibilidad Instrucciones que mejoran el rendimiento <strong>de</strong> losprocesadores en <strong>la</strong> ejecución <strong>de</strong> aplicaciones y códigosconcretos Instrucciones que incorporan predicados y ahorranbifurcaciones Instrucciones que combinan dos o más operaciones quesuelen aparecer agrupadas Extensiones multimedia Operaciones repetitivas sobre diferentes operandos que nollegan a los 32 bits <strong>de</strong> un típico tipo entero (un píxel son 8bits, una muestra <strong>de</strong> audio son 16 bits) Instrucciones capaces <strong>de</strong> operar con vectores que agrupanen los registros típicos <strong>de</strong> 64 bits, 8 operandos <strong>de</strong> 8 bits, 4operandos <strong>de</strong> 16 bits, o 2 operandos <strong>de</strong> 32 bits Se incluyen instrucciones aritmético-lógicas, <strong>de</strong> acceso amemoria y <strong>de</strong> empaquetamiento, reor<strong>de</strong>namiento y copia <strong>de</strong>datosGSyC 2011 - <strong>Lenguaje</strong> máquina 41


Diseño <strong>de</strong> un repertorio <strong>de</strong> instruccionesOptimizaciones <strong>de</strong>l repertorio <strong>de</strong> instrucciones Ejemplos MIPS Digital Media eXtension (MDMX) o a <strong>la</strong>sMultimedia Acceleration eXtensions (MAX) Extensiones <strong>de</strong> <strong>la</strong>s arquitecturas x86, primero <strong>la</strong>s MMX,<strong>de</strong>spués <strong>la</strong>s diferentes versiones <strong>de</strong> 3Dnow! y <strong>la</strong>s SSE MIPS64 Application Specific ExtensionsGSyC 2011 - <strong>Lenguaje</strong> máquina 42


Mecanismo completo <strong>de</strong> ejecución <strong>de</strong> una instrucciónEjecución <strong>de</strong> una instrucción Fetch (F): buscar en memoria <strong>la</strong> instrucciónapuntada por el PC. Actualización <strong>de</strong>l PC Deco<strong>de</strong> (D): <strong>de</strong>codificación <strong>de</strong> <strong>la</strong> instrucción,separar los diferentes campos. Si es necesario, seleen 1 o 2 operandos <strong>de</strong> los registros Execution (X): ejecución <strong>de</strong> <strong>la</strong> operación indicadaen el opco<strong>de</strong> Memory Access (M): si es necesario, acce<strong>de</strong>r amemoria para leer o escribir Writeback (W): si es necesario, se vuelca unresultado a un registroGSyC 2011 - <strong>Lenguaje</strong> máquina 43


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo I: Load/StoreFDX- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC.- Actualización <strong>de</strong>l PC- Decodificación y lectura <strong>de</strong> registros- Extensión <strong>de</strong> signo para inmediato- Suma en <strong>la</strong> ALU <strong>de</strong>l registro base +el <strong>de</strong>sp<strong>la</strong>zamientoMI[PC]PC ← PC+4[RS]ext(Inmediato)Si es Store: [RD][RS]+ext(Inmediato)MW- Acceso a <strong>la</strong> dirección <strong>de</strong> memoriacalcu<strong>la</strong>da en <strong>la</strong> etapa anterior- En caso se Load, se escribe elcontenido <strong>de</strong> memoria en el registroRDLoad:MD[[RS]+ext(Inmediato)]Store:MD[[RS]+ext(Inmediato)] ←[RD][RD] ← MD[[RS]+ext(Inmediato)]GSyC 2011 - <strong>Lenguaje</strong> máquina 44


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo I: Aritmético-LógicasFDX- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC.- Actualización <strong>de</strong>l PC- Decodificación y lectura <strong>de</strong>l registroRS- Extensión <strong>de</strong> signo para inmediato- La ALU realiza <strong>la</strong> operación queindique el opco<strong>de</strong>MI[PC]PC ← PC+4[RS]ext(Inmediato)[RS] OP ext(Inmediato)MW- Se escribe el resultado <strong>de</strong> <strong>la</strong>operación en el registro RD[RD] ← [RS] OP ext(Inmediato)GSyC 2011 - <strong>Lenguaje</strong> máquina 45


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo I: Saltos condicionalesFDXMW- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC- Actualización <strong>de</strong>l PC- Decodificación <strong>de</strong> <strong>la</strong> instrucción- Lectura <strong>de</strong> los registros RS y RD- Extensión <strong>de</strong> signo para inmediato- Cálculo <strong>de</strong> <strong>la</strong> dirección <strong>de</strong> salto: PC+ Inmediato- Evaluación condición <strong>de</strong> salto en RSy RD- Si evaluación positiva, se carga el PCcon <strong>la</strong> dirección <strong>de</strong> saltoMI[PC]PC ← PC+4[RS][RD]ext(Inmediato)[PC] + ext(Inmediato)cond ([RS],[RD])Si con = TRUEPC ← [PC] + ext(Inmediato)GSyC 2011 - <strong>Lenguaje</strong> máquina 46


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo I: Saltos incondicionalesFD- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC- Actualización <strong>de</strong>l PC- Decodificación <strong>de</strong> <strong>la</strong> instrucción- Lectura <strong>de</strong>l registro RSMI[PC]PC ← PC+4[RS]X- Se carga el PC con el valor <strong>de</strong>lregistro RSPC ← [RS]MWGSyC 2011 - <strong>Lenguaje</strong> máquina 47


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo R: Aritmético-LógicasFD- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC.- Actualización <strong>de</strong>l PC- Decodificación- Lectura <strong>de</strong> los registros RS y RDMI[PC]PC ← PC+4[RS][RD]X- La ALU realiza <strong>la</strong> operación indicadapor <strong>la</strong> combinación <strong>de</strong>l opco<strong>de</strong> y <strong>de</strong>lcampo Function[RS] OP [RT]MW- Se escribe el resultado <strong>de</strong> <strong>la</strong>operación en el registro RD[RD] ← [RS] OP [RT]GSyC 2011 - <strong>Lenguaje</strong> máquina 48


Ejemplo: ejecución <strong>de</strong> <strong>la</strong>s instrucciones <strong>de</strong>l repertorio <strong>de</strong>l MIPS64Instrucciones tipo J: Saltos incondicionalescon direccionamiento re<strong>la</strong>tivo al PCFDXMW- Búsqueda en <strong>la</strong> MI <strong>de</strong> <strong>la</strong> instrucciónapuntada por PC.- Actualización <strong>de</strong>l PC- Decodificación- Lectura <strong>de</strong>l registros RS- Extensión <strong>de</strong> signo para Offset- Se suma al PC el Offset para obtener<strong>la</strong> dirección <strong>de</strong>l salto- Se carga el PC con el valor obtenidopara <strong>la</strong> dirección <strong>de</strong> saltoMI[PC]PC ← PC+4[RS]ext(Offset)[PC] + ext(Offset)PC ← [PC] + ext(Offset)GSyC 2011 - <strong>Lenguaje</strong> máquina 49


Evaluación <strong>de</strong> prestaciones <strong>de</strong> un procesadorEvaluación <strong>de</strong> prestaciones Rendimiento <strong>de</strong> un procesadort CPU = I •CPI • TT, periodo <strong>de</strong> reloj <strong>de</strong>l procesadorCPI, ciclos que tarda en ejecutarse en media unainstrucciónI, número <strong>de</strong> instrucciones en ensamb<strong>la</strong>dor En general, t respuesta < t CPU SSOO multitareaGSyC 2011 - <strong>Lenguaje</strong> máquina 50


Evaluación <strong>de</strong> prestaciones <strong>de</strong> un procesadorEjemplo Frecuencia procesador = 2.1GHz 1200 instrucciones ensamb<strong>la</strong>dor 20% saltos, 50% aritmético-lógicas, 30% load/store Saltos 3 ciclos, aritmético-lógicas 4 ciclos,load/store 5 ciclos ¿Cuánto tiempo tar<strong>de</strong> en ejecutarse este códigoen el procesador? T = 1/f CPI = Σf instrucción • CPI instrucciónGSyC 2011 - <strong>Lenguaje</strong> máquina 51

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!