Arquitectura de Conjunto de Instrucciones (ISA)

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

Curso de java básico (scjp)
El modelo de Von Neumann
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Arquitectura de Computadores I
I S A INSTRUCTION SET ARCHITECTURE
ARQUITECTURA DE COMPUTADORES - VON NEUMANN MODEL
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
Circuitos Digitales II
ARQUITECTURA INTEL FORMATOS DE INSTRUCCIÓN
Andrés Núñez Herrero Enrique España Blanco Rodrigo Cembrero Carazo
VAX Diego Esteban Moreno Germán Aguado Llorente Félix Huete García.
ARQUITECTURA INTEL Modos de direccionamiento
Diego Esteban Moreno Germán Aguado Llorente Félix Huete García.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Windows XP sp3.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Algorítmo de Mapeo Directo
Funcionamiento de una Computadora
Circuitos Combinacionales Comunes
Composición Interna de un Procesador
Computadora Digital Arquitectura de John Von Neumann
Direcciones físicas y direcciones virtuales (lógicas)
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
Arquitectura del Computador
ISA (Instruction Set Architecture)
HILOS Y COMUNICACIÓN ENTRE PROCESOS

ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Unidad 2: Organización del CPU
Introducción a la Ingeniería en Sistemas
PAGINACIÓN Y SEGMENTACIÓN
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Sistemas decimal, binario, octal y hexadecimal
Administración de Memoria Memoria Virtual
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Conceptos Arquitectónicos del computador
Tema 1: DATOS Y REGISTROS
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Tema 2: Lenguaje máquina
Arquitectura de Von Neumann
Algoritmo Ing. Maria Rosana Heredia
Organización del Computador
ARQUITECTURA DE COMPUTADORES - I.S.A. -CODIFICACION ISA
Capítulo 4 CPU y la memoria.
ARQUICTECTURA DE SERVIDORES
introducción al Lenguaje Ensamblador
Modos de direccionamiento
Maquinas Digitales UNIDADES DE CONTROL.
Presente un cuestionario con los aspectos mas importantes sobre los
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
Principio unidad 1.
* UNIVERSIDAD TECNOLOGICA DE PUEBLA TECNOLOGIAS DE LA INFORMACION Y COM. AREA REDES Y TELECOMUNIC IONES ADMINISTRACION DE SERVIDORES «ARQUITECTURA DE COMPUTADORAS»
Unidad Central de Proceso
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
Algoritmos y Desarrollo de Programas I
MIPS Intermedio.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
CAPITULO V Arquitectura de Von Neumann
Lenguaje ensamblador Resumen en diapositivas
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Ing. Barros Rodriguez D. Ronald Introducción a la Programacón.
Transcripción de la presentación:

Arquitectura de Conjunto de Instrucciones (ISA)

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: 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 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, indirecto, 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 en memoria: 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), PowerPC, SPARC, ARM, etc. 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 x86-x64), Z80, VAX, PDP11, DEC, etc.

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

Arquitectura de Conjunto de Instrucciones

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 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 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 es implícitamente el acumulador y el otro operando debe ser extraído de memoria (fetch de operando). Los fetchs de operandos causan un incremente considerable en el bus de direcciones y en 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, 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 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 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 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 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 00012H; 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 (12300H), ya que la instrucción se encuentra en este segmento.

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 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 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 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