Arquitectura de Conjunto de Instrucciones ISA Conjunto de

  • Slides: 22
Download presentation
Arquitectura de Conjunto de Instrucciones (ISA) Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones (ISA) Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones El conjunto de Instrucciones de un procesador (o computadora)

Arquitectura de Conjunto de Instrucciones El conjunto de Instrucciones de un procesador (o computadora) se refiere a todas las instrucciones que el procesador reconoce y, por lo tanto, puede ejecutar. La arquitectura de conjunto de instrucciones se refiere a todos los aspectos relacionados al diseño del conjunto de instrucciones, tales como registros a usar, tamaño de memoria a usar, tipos de direccionamiento de memoria, número máximo de operandos, tamaño del código de instrucciones (formato de instrucciones), tamaño del opcode, tamaño y tipo de operandos, forma en que los datos e instrucciones son almacenados en memoria, etc. Distintos procesadores tienen distintos tipos de instrucciones.

Arquitectura de Conjunto de Instrucciones Los conjuntos de instrucciones se caracterizan por lo siguiente:

Arquitectura de Conjunto de Instrucciones Los conjuntos de instrucciones se caracterizan por lo siguiente: • Número de bits por instrucción. Independientemente de que el número de bits del formato de instrucciones puede variar de un procesador a otro, existen casos en los que el número de bits de las instrucciones varía dentro de un mismo procesador, dependiendo del tipo de instrucción. • Conjunto basado en stack o registros. • Número de operandos explícitos por instrucción. • Localización del operando. • Tipo de operaciones. • Tipo y tamaño de operandos. • En cualquier conjunto de instrucciones, no todas las instrucciones requiere el mismo número de operandos. • Las operaciones que no requieren operando, tales como HALT (alto), implican un desperdicio de espacio de memoria cuando se tienen instrucciones de longitud fija. Una manera de recuperar este espacio desperdiciado es mediante el uso de opcodes expandibles. Las arquitecturas de los conjuntos de instrucciones se miden en base a: • • Espacio de memoria principal ocupado por el programa. Complejidad de las instrucciones. Longitud de las instrucciones (en bits). Número de instrucciones en el conjunto de instrucciones.

Arquitectura de Conjunto de Instrucciones En el diseño de un conjunto de instrucciones se

Arquitectura de Conjunto de Instrucciones En el diseño de un conjunto de instrucciones se considera: • • • Longitud de la instrucción – corto, largo o variable. Número de operandos. Número de registros direccionables (que pueden ser especificados). Modos de direccionamientos – directo, indexado, todos. Orden de los bytes que representan un dato o instrucción (endianness). La manera en la que el procesador almacena los datos u operandos durante la ejecución de instrucciones: • Arquitectura stack • Arquitectura acumulador • Arquitectura de registros de propósito general La selección entre las arquitecturas de almacenamiento de operandos anteriores es optar entre simplicidad y costo del diseño de hardware o velocidad de ejecución y facilidad de uso.

Arquitectura de Conjunto de Instrucciones Endianness Existen dos maneras de guardar datos o instrucciones

Arquitectura de Conjunto de Instrucciones Endianness Existen dos maneras de guardar datos o instrucciones en memoria: 1. Big Endian – La información se almacena del byte más alto (más significativo) al más bajo en direcciones crecientes de memoria. • • Es más natural. El signo de un número puede determinarse mediante el byte con offset 0 (byte más significativo en la primera dirección). Las cadenas y los enteros se almacenan en el mismo orden. Ejemplos de CPU: Motorola (serie 68000), Power. PC, SPARC, ARM, etc. 2. Little Endian – La información se almacena del byte más bajo (menos significativo) al más alto en direcciones crecientes de memoria. • • • Facilita el almacenar valores en direcciones que no están en el límite o frontera de una palabra. La conversión de la dirección de un entero de 16 bits a una dirección de un entero de 32 bits no requiere aritmética alguna. Ejemplos de CPU: Computadoras PCs (Intel x 86 -x 64), Z 80, VAX, PDP 11, DEC, etc.

Arquitectura de Conjunto de Instrucciones Endianness Ejemplo: Número hexadecimal 12345678 H en una memoria

Arquitectura de Conjunto de Instrucciones Endianness Ejemplo: Número hexadecimal 12345678 H en una memoria con localidades de 1 byte. Ejemplo:

Arquitectura de Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones Alineamiento en Memoria Otra situación a considerar es que

Arquitectura de Conjunto de Instrucciones Alineamiento en Memoria Otra situación a considerar es que muchas computadoras, para poder accesar objetos (datos, instrucciones y direcciones) que tienen una longitud mayor a un byte, éstos tienen que ser alineados. El acceso a un objeto de s bytes en la dirección A está alineado si A mod s = 0 (a mod b es la operación que proporciona como resultado el residuo que resulta de dividir el número entero a entre el número entero b). El desalineamiento (misalignment) causa algunas complicaciones al hardware, ya que la memoria está típicamente alineada en límites o fronteras que son múltiplos de una palabra o palabra doble. El acceso a un objeto alineado (aligned) puede completarse en un solo ciclo de acceso a memoria (fetch), siempre y cuando el bus de datos/instrucciones, y, por lo tanto, los registros del procesador sean lo suficientemente amplios para almacenar el objeto. El acceso a un objeto desalineado (misaligned) puede resultar en varios ciclos de acceso a memoria, lo cual implica un desperdicio de tiempo.

Arquitectura de Conjunto de Instrucciones La siguiente figura muestra las direcciones en las cuales

Arquitectura de Conjunto de Instrucciones La siguiente figura muestra las direcciones en las cuales un acceso a memoria es alineado o desalineado. La memoria está organizada en localidades de 8 bits (un byte). Los offset de byte que etiquetan a las columnas especifican los 3 bits menos significativos de las direcciones. Nota: El concepto de palabra varía muchas veces de autor a autor, pero se puede decir con argumentos válidos que una palabra es la longitud en bits o bytes del operando de mayor longitud que puede almacenarse en un registro, y, por lo tanto, procesar el ALU en una sola pasada.

Arquitectura de Conjunto de Instrucciones Arquitectura Stack Las instrucciones y los datos (operandos) son

Arquitectura de Conjunto de Instrucciones Arquitectura Stack Las instrucciones y los datos (operandos) son simplemente tomados del stack. Un stack no puede ser accesado de manera aleatoria. Instrucciones con uno o cero operandos. Las instrucciones LOAD y STORE requieren un operando de dirección de memoria. Otras instrucciones usan operandos del stack implícitamente. Las operaciones PUSH y POP involucran únicamente al elemento al tope del stack. Las instrucciones binarias (operaciones con dos operandos) usan los dos elementos al tope del stack. • La aritmética tipo stack usa la notación postfija (notación polaca). • • notación infija: Z = X + Y notación postfija: Z = XY+ Esto permite ahorrarse el uso de paréntesis: Z = (X * Y) + (W * U) en postfijo: Z = X Y * WU * +

Arquitectura de Conjunto de Instrucciones Arquitectura Acumulador • Un operando de una operación binaria

Arquitectura de Conjunto de Instrucciones Arquitectura Acumulador • Un operando de una operación binaria es implícitamente el acumulador y el otro operando debe ser extraído de memoria (fetch de operando). • Los fetchs de operandos causan un incremento considerable de tráfico y número de accesos a través del bus de direcciones y el bus de datos/instrucciones. Arquitectura de Registros de Propósito General (GPR) • Los registros pueden ser usados para almacenar los operandos en lugar de usar la memoria. • El acceso a los contenidos de los registros es mucho más rápido que el acceso a memoria. • Este método es más rápido que la arquitectura de acumulador. • Esto permite una implementación eficiente de compiladores. • El formato de las instrucciones es más largo. El número de operandos y el número de registros disponibles tiene un efecto directo en la longitud de la instrucción. • La mayoría de los sistemas de computadoras actuales son sistemas GPR.

Arquitectura de Conjunto de Instrucciones • Existen tres tipos de sistemas GPR: • Memoria-memoria,

Arquitectura de Conjunto de Instrucciones • Existen tres tipos de sistemas GPR: • Memoria-memoria, donde dos o tres operandos pueden estar en memoria. • Registro-memoria donde al menos un operando está en un registro. • Load-Store (registro-registro) donde puede no haber operandos en memoria.

Arquitectura de Conjunto de Instrucciones Tipo de Instrucciones Las instrucciones pueden ser clasificadas en

Arquitectura de Conjunto de Instrucciones Tipo de Instrucciones Las instrucciones pueden ser clasificadas en un amplio número de categorías, particularmente en los procesadores actuales en las que se tienen instrucciones de multimedia, comunicaciones, y un mayor conjunto de operaciones matemáticas y otras de uso especial. Las categorías más comunes son: • • • Movilidad de datos. Aritméticas. Booleanas. Manipulación de bits. I/O. Transferencia de control. Multimedia. Comunicaciones. Matemáticas especializadas. Propósito especial.

Arquitectura de Conjunto de Instrucciones Formato de Instrucciones Asúmase que se tiene una computadora

Arquitectura de Conjunto de Instrucciones Formato de Instrucciones Asúmase que se tiene una computadora con instrucciones de longitud fija de 16 bits; una memoria de 4 KB con localidades de 1 Byte (a cada localidad le corresponde una dirección única); el procesador tiene 16 registros. Por lo tanto, se requieren 4 bits para especificar los 16 registros y 12 bits para direccionar cada localidad de memoria. Se tiene dos posibilidades:

Arquitectura de Conjunto de Instrucciones Si se permite que la longitud del opcode sea

Arquitectura de Conjunto de Instrucciones Si se permite que la longitud del opcode sea variable, se puede crear un conjunto de instrucciones muy rico:

Arquitectura de Conjunto de Instrucciones Dirección Efectiva de un Dato o Instrucción La dirección

Arquitectura de Conjunto de Instrucciones Dirección Efectiva de un Dato o Instrucción La dirección real de un operando o instrucción es conocida como su dirección efectiva. En muchos sistemas de computadora que usan segmentación de datos, instrucciones y stack para los procesos, la dirección de datos o instrucciones especificados en una instrucción es relativa al inicio del segmento de datos o instrucciones, respectivamente. Esto es, la dirección efectiva resulta de sumar la dirección proporcionada por el procesador al segmento de datos o de instrucciones, según sea el caso. Ejemplo: La dirección de la siguiente instrucción a ejecutar, según el registro contador de programa (PC), es 00012 H; pero la computadora asigna segmento de código, datos y stack a cada proceso. Para determinar la dirección efectiva de la instrucción, la dirección dada por el PC es sumada a la dirección física o real del inicio del segmento de código (12300 H), ya que la instrucción se encuentra en este segmento.

Arquitectura de Conjunto de Instrucciones Modos de Direccionamiento Los modos de direccionamiento especifican en

Arquitectura de Conjunto de Instrucciones Modos de Direccionamiento Los modos de direccionamiento especifican en dónde se localiza (o está almacenado) un operando. • Dependiendo del modo de direccionamiento, la porción de la dirección del código o formato de instrucción puede especificar una constante, un registro o la dirección de una localidad de memoria. • Ciertos modos de direccionamiento nos permiten determinar la dirección de un operando de manera dinámica.

Arquitectura de Conjunto de Instrucciones Los modos de direccionamiento más comunes son: • Direccionamiento

Arquitectura de Conjunto de Instrucciones Los modos de direccionamiento más comunes son: • Direccionamiento Inmediato: Cuando la dirección o una de las direcciones especificadas en la instrucción representa el valor directo del operando o uno de los operandos a usar. • Direccionamiento Directo: Cuando la dirección del operando o dato es dada directamente por la dirección o una de las direcciones especificadas en la instrucción. • Direccionamiento de Registro: Cuando el dato u operando está en un registro y, por lo tanto, el registro correspondiente es especificado por la dirección o una de las direcciones en la instrucción. • Direccionamiento Indirecto: Cuando la instrucción proporciona la dirección en la que se encuentra la dirección del operando o dato. • Direccionamiento Indirecto de Registro: Cuando un registro contiene la dirección en la que se encuentra la dirección del operando o dato. • Direccionamiento Indexado: Usa un registro índice (implícita o explícitamente) como un offset (desplazamiento), el cual es sumado a la dirección en el operando para determinar la dirección efectiva de un dato u operando.

Arquitectura de Conjunto de Instrucciones • Direccionamiento Base: Similar al direccionamiento indexado, pero se

Arquitectura de Conjunto de Instrucciones • Direccionamiento Base: Similar al direccionamiento indexado, pero se usa un registro base en lugar de un registro índice. Nota: La diferencia entre estos dos modos de direccionamiento, es que un registro índice contiene un offset relativo a la dirección dada por la instrucción; un registro base contiene una dirección base en el que el campo de la dirección especificada en la instrucción representa un desplazamiento a partir de esta base. • Direccionamiento de Stack: Se asume que el operando está en el tope del stack. Existen muchas variaciones de estos modos de direccionamiento, incluyendo: • • Direccionamiento Indirecto Indexado. Base/offset. Auto-relativo. Auto incremental - decremental Además, también hay otros modos de direccionamiento que ya son obsoletos, por lo que raramente se encuentran en sistemas de computadoras actuales.

Arquitectura de Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones • Ejemplo: En la siguiente figura se muestra el

Arquitectura de Conjunto de Instrucciones • Ejemplo: En la siguiente figura se muestra el valor que se almacena en el acumulador para cada tipo de direccionamiento:

Arquitectura de Conjunto de Instrucciones

Arquitectura de Conjunto de Instrucciones