El Nivel ISA Conjuntos de instrucciones: Características Generales Que es un Conjunto de Instrucciones? • Colección completa de instrucciones comprendida por un procesador • Lenguaje de máquina • Binario • Usualmete es representado en lenguaje ensamblador Elementos de una Instrucción • Código de operación (Op code) —Hacer esto… • Referencia a operandos fuente —A esto… • Referencia a operando resultado —Pon la respuesta aquí… • Referencia a la siguiente instrucción —Cuando lo termines, sigues con esto otro... Diagrama de Estados del ciclo de Instrucción Representación de Instrucciones • En código de máquina cada instrucción tiene una representación binaria única • Para consumo humano (programadores) de usa una representación simbólica —ej. ADD, SUB, LOAD • Los operandos se representan asi: -ADD A,B Formato de Instrucción Sencillo Tipos de Instrucciones • Procesamiento de datos • Almacenamiento de datos(main memory) • Movimiento de datos (I/O) • Control de flujo de Programa Número de direcciones (a) • 3 direcciones —Operando 1, Operando 2, Resultado —a = b + c; —Puede haber una cuarta – prox. instrución (usually implicit) —No es común —Necesita palabras muy largas para contener toda la información Número de direcciones(b) • 2 direcciones —Una dirección actúa como operando y resultado a=a+b —Reduce el largo de la instrución —Requiere algún trabajo adicional – Temporary storage to hold some results – Es necesario almacenar temporalmente algunos resultados Número de direcciones (c) • 1 dirección —Segunda dirección implicita —Usualmente es un registro (acumulador) —Comúnmente usado en máquinas tempranas Número de direcciones (d) • 0 (cero) direcciones —Todas las direcciones son implicitas —Usa una pila —ej. push a — push b — add — pop c —c = a + b Cuantas direcciones? • Mas direcciones —Instrucciones mas complejas (poderosas?) Mas registros – Operaciones entre registros son mas rapidas —Menos instrucciones por programa • Menos direcciones —Instrucciones menos complejas (poderosas?) Mas instrucciones por programa —Búsqueda/ejecución de instrucciones mas rápida Decisiones de diseño (1) • Repertorio —Cuantas? —Que pueden hacer? —Cuan complejas serán? • Tipos de datos • Formatos de instrucción —Largo del opcode —Numero de direcciones Decisiones de diseño (2) • Registros —Número de registros disponibles en el CPU —Que operaciones pueden ser efectuadas por los registros? • Modos de direccionamiento (después…) • RISC v CISC Tipos de Operando • Direcciones • Numeros —Entero/Punto flotante —Caracteres —ASCII etc. • Datos Lógicos —Bits o Banderas Specific Data Types • • • • • • General - arbitrary binary contents Integer - single binary value Ordinal - unsigned integer Unpacked BCD - One digit per byte Packed BCD - 2 BCD digits per byte Near Pointer - 32 bit offset within segment • Bit field • Byte String • Floating Point Tipos de Operación • • • • • • • Transferencia de datos: Aritmeticas: Lógicas: Conversión Entrada / Salida Control del Sistema Transferencia de Control Mov Add And Num In, Read Trap Jump, Call Conjuntos de Instrucciones Modos de Direccionamiento y formatos de instrucción Modos de Direccionamiento • • • • • • • Inmediato Directo Indirecto Registro Registro Indirecto Desplazamiento (Indexado) Pila Direccionamiento Inmediato Opcode Operando • El operando es parte de la instrucción • El operando ocupa el campo de dirección • ej. ADD #5 — Suma 5 al contenido del acumulador — 5 es operando • No hay referencia a memoria para buscar el dato • Rápido • Rango limitado Direccionamiento Directo • El campo de dirección contiene la dirección del operando • Dirección efectiva (EA) = Campo de dirección (A) • e.g. ADD 32 —Suma el contenido de la celda 32 con el acumulador —Busca el operando en la posicion 32 • Referencia única a memoria • No requiere calculos adicionales para determinar la dirección • Espacio de direccionamiento limitado Direccionamiento Directo Instrucción Opcode Dirección A Memoria Operando Direccionamiento Indirecto (1) • El operando se encuentra en una celda de de memoria apuntada por el contenido de la posición apuntada por el campo de dirección • EA = (A) —Buscar en A, Encontrar la dirección (A) y buscar el operando • e.g. ADD (A) —Add el contenido de la celda de memoria apuntada por el contenido de A con el acumulador Direccionamiento Indirecto (2) • Mayor espacio de direccionamiento • 2n donde n = ancho de la palabra • Puede ser anidada, multinivel, en cascada —ej. EA = (((A))) • Multiples accesos a memoria para encontrar el operando • >>>Lento Direccionamiento Indirecto Instruction Opcode Address A Memory Pointer to operand Operand Direccionamiento por Registro (1) • Es en terminos generales, directo • El operando esta en un registro referenciado en el campo de dirección • EA = R • Número de registros limitado • Se necesitan campos de dirección mas pequeños —Instrucciones mas cortas —Búsquedas de direcciones mas rápidas Direccionamiento por Registro(2) • • • • No necesita acceder a memoria Ejecución mas rápida Espacio de direcciones muy limitado Multiples registros mejoran el rendimiento Direccionamiento por Registro Instruction Opcode Register Address R Registers Operand Direccionamiento Indirecto por Registro • Direccionamiento Indirecto • EA = (R) • El operando está en la posición de memoria apuntada por el contenido del registro R • Amplio espacio de direcciones (2n) • Requiere un solo acceso a memoria para leer el operando Direccionamiento Indirecto por Registro Instruction Opcode Register Address R Memory Registers Pointer to Operand Operand Direccionamiento por desplazamiento • EA = A + (R) • El campo de dirección contiene dos valores: —A = valor base —R = registro que contiene el desplazamiento —o vice versa Direccionamiento por desplazamiento Instruction Opcode Register R Address A Memory Registers Pointer to Operand + Operand Direccionamiento Indexado • • • • A = base R = desplazamiento (autoincrementado) EA = A + R Eficiente direccionando arreglos —EA = A + R —R++ Direccionamiento de pila • El operando está (implicitamente) en el tope de la pila Ej: —ADD: Saca dos elementos del tope de la pila y coloca su suma Formatos de Instrución • Distribución de los bits en una instrucción • Incluye el opcode • Incluye (implicita o explicitamente) los operandos • Generalmente hay mas de un formato de instrucción en un conjunto de instrucciones Longitud de Instrucción • Afectada por y afecta a: —Tamaño de la Memoria —Organización de la memoria —Estructura del Bus —Complejidad del CPU —Velocidad del CPU • Compromiso entre disponer de un repertorio de instrucciones poderoso y ahorrar espacio Asignación de Bits Factores: • # de Modos de direccionamiento • Numero of operandos • # de Registos • # de conjuntos de registros • Rango de direcciones • Granularidad de las direcciones (palabras vs bytes) Diagrama de Estados del ciclo de Instrucción