0% encontró este documento útil (0 votos)
41 vistas14 páginas

Arquitectura de Computadoras

Cargado por

Emanuel Roman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas14 páginas

Arquitectura de Computadoras

Cargado por

Emanuel Roman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Acapulco.

Gro, 28 de febrero de 2024 Enero – Junio 2024

Arquitectura de Computadoras II

Tema I: Modelado y simulación de las


arquitecturas de última generación.
Actividad: Arquitectura de un conjunto de instrucciones
Equipo:
Yeresmi Mayteth Medina Castro No Control: 20321110
Nelida Sugey Montes Morales No Control: 20321126
Edgar Osvaldo Vallejo Sandoval No Control: 20321253
Jesus Emanuel Roman Plata No Control: 20321202

Semestre: 8vo Horario: 13:00 – 14:00 hrs. Aula: 706

Docente: Héctor Sanchez Castro


Ingeniería en Sistemas Computacionales ISC

1|Página
Arquitectura de Computadoras II
•••

Contenido
Introducción .................................................................................................................. 3
Arquitectura de un conjunto de instrucciones ................................................................ 4
Tipo de instrucciones ..................................................................................................... 6
Operaciones soportadas................................................................................................................. 7
Formato de instrucciones .............................................................................................. 8
Tipos de datos ............................................................................................................................... 10
Datos soportados .......................................................................................................................... 11
Conjunto de registros .................................................................................................. 12
Modos de direccionamiento ........................................................................................ 13

2|Página
Arquitectura de Computadoras II
•••

Introducción
En el presente documento se desarrolla la elaboración de una arquitectura de computadora
y su conjunto de instrucciones.

La evolución ha sido un proceso continuo, influenciado por avances en tecnología,


demandas de aplicaciones y cambios en paradigmas de diseño de hardware y software.

Desde las arquitecturas CISC (Complex Instruction Set Computing) en la décadas de 1960 y
1970: Se caracterizaban por un amplio conjunto de instrucciones complejas.

Arquitecturas RISC de 1980: Se centra en un conjunto reducido de instrucciones simples y


uniformes. La arquitectura de un conjunto de instrucciones proporciona la base para el
diseño de la CPU y tiene un impacto significativo en el rendimiento y la eficiencia de la
ejecución de programas. La variedad de instrucciones y su eficacia para realizar diversas
tareas determinan la versatilidad y el rendimiento general del procesador.

3|Página
Arquitectura de Computadoras II
•••

Arquitectura de un conjunto de instrucciones


La arquitectura de un conjunto de instrucciones (ISA, por sus siglas en inglés) es el diseño
conceptual de un conjunto de comandos que una CPU (Unidad Central de Procesamiento)
puede ejecutar.

Conjunto de Instrucciones:

• OpCodes (Códigos de Operación): Identificadores únicos para cada instrucción en


el conjunto. Cada instrucción tiene un OpCode asociado que la CPU reconoce y
ejecuta.
• Formatos de Instrucciones: Especifican cómo se codifican y representan las
instrucciones en memoria. Pueden ser de longitud fija o variable.

1. Unidad de Control:
• Decodificación de Instrucciones: Interpreta el OpCode y controla la secuencia de
operaciones necesarias para ejecutar la instrucción.
• Generación de Señales de Control: Produce señales de control internas que
coordinan las operaciones de la CPU, como la activación de registros, ALU (Unidad
Lógica y Aritmética), etc.

2. Registros:
• Registros Generales: Almacenan datos temporales y resultados intermedios
durante la ejecución de instrucciones.
• Registro de Instrucción (PC): Mantiene la dirección de la próxima instrucción a
ejecutar.
• Otros Registros Especiales: Pueden incluir registros de estado, punteros de pila,
registros de segmento, etc.

3. Unidad Aritmética-Lógica (ALU):


• Operaciones Aritméticas: Realiza operaciones matemáticas como suma, resta,
multiplicación y división.
• Operaciones Lógicas: Ejecuta operaciones booleanas como AND, OR, NOT.

4. Unidad de Punto Flotante (FPU):

• Operaciones de Punto Flotante: Si la arquitectura lo admite, una FPU realiza


operaciones más avanzadas con números de punto flotante, como sumas y
productos escalares.

4|Página
Arquitectura de Computadoras II
•••

5. Memoria:

• Jerarquía de Caché: Si bien no siempre está explícitamente definida en la ISA, la


arquitectura puede tener instrucciones específicas para el manejo de la caché.
• Instrucciones de Acceso a la Memoria: Instrucciones para cargar y almacenar datos
en memoria.

6. Modos de Dirección:

• Dirección Absoluta/Relativa: Indica si las direcciones en las instrucciones son


absolutas o relativas a un registro o posición específica.
• Modos de Dirección Indirecta: Permite el uso de punteros y referencias a través de
registros o direcciones de memoria.

7. Control de Flujo:

• Instrucciones de Salto (Jump) y Ramificación (Branch): Permiten cambiar el flujo de


ejecución del programa.
• Interrupciones y Excepciones: Mecanismos para manejar eventos imprevistos
durante la ejecución.

8. Conjunto de Instrucciones SIMD/MIMD (opcional):

• Instrucciones Vectoriales o Matriciales: Si la arquitectura es compatible, puede


incluir instrucciones para operaciones simultáneas en conjuntos de datos.

9. Privilegios y Modos de Operación:

• Modos de Usuario y Supervisor: Diferencia entre niveles de privilegios para ejecutar


ciertas instrucciones y acceder a recursos protegidos.

10. Instrucciones de Entrada/Salida (E/S):

• Operaciones de E/S: Instrucciones que permiten la transferencia de datos entre la


CPU y dispositivos de entrada/salida.

5|Página
Arquitectura de Computadoras II
•••

Tipo de instrucciones
Las instrucciones en una arquitectura de conjunto de instrucciones (ISA) pueden clasificarse
en varios tipos según sus funciones y operaciones.

Instrucciones de Transferencia de Datos:

• Load (Carga): Transfiere datos desde la memoria a los registros.


• Store (Almacenamiento): Transfiere datos desde los registros a la memoria.

Instrucciones Aritméticas y Lógicas:

• Add (Suma): Realiza la operación de suma.


• Subtract (Resta): Realiza la operación de resta.
• Multiply (Multiplicación): Realiza la operación de multiplicación.
• Divide (División): Realiza la operación de división.
• AND, OR, XOR (Operaciones Lógicas): Realizan operaciones booleanas.

Instrucciones de Control de Flujo:

• Jump (Salto): Cambia la secuencia de ejecución a una dirección de memoria


específica.
• Branch (Ramificación): Realiza una decisión condicional para cambiar el flujo del
programa.
• Call (Llamada a Subrutina): Salta a una dirección de memoria específica y guarda la
dirección de retorno.

Instrucciones de Comparación y Condiciones:

• Compare (Comparar): Compara dos valores y establece banderas de estado.


• Conditional Jump (Salto Condicional): Salta a una dirección de memoria específica
si se cumple una condición.

Instrucciones de Punto Flotante (si es compatible):

• FADD, FSUB, FMUL, FDIV (Operaciones de Punto Flotante): Realizan operaciones


aritméticas en números de punto flotante.

Instrucciones SIMD/MIMD (si es compatible):

• Operaciones Vectoriales o Matriciales: Realizan operaciones simultáneas en


conjuntos de datos.

Instrucciones de Entrada/Salida (E/S):

• In/Out (Entrada/Salida): Transfieren datos entre la CPU y dispositivos periféricos.

6|Página
Arquitectura de Computadoras II
•••

Instrucciones de Control de Privilegios:

• Halt (Detener): Detiene la ejecución del programa.


• Trap (Trampa): Genera una excepción o interrupción.

Instrucciones de Manipulación de Bit (si es compatible):

• Shift (Desplazamiento): Desplaza bits hacia la izquierda o hacia la derecha.


• Bitwise Operations (Operaciones a nivel de bits): Realiza operaciones lógicas a nivel
de bits.

Instrucciones de Gestión de Interrupciones y Excepciones:

• Interrupt (Interrupción): Inicia un servicio de interrupción.


• Exception (Excepción): Maneja condiciones de error o eventos excepcionales.

Control de Flujo:

JUMP (Salto incondicional):

Cambia el flujo de ejecución del programa a una dirección de memoria específica.

Sintaxis: JUMP etiqueta

BRANCH (Salto condicional):

Realiza un salto condicional a una dirección de memoria basado en una condición específica.

Sintaxis: BRANCH condición, etiqueta.

Operaciones soportadas
Operaciones Aritméticas:

• Add (Suma): Suma dos operandos.


• Subtract (Resta): Resta el segundo operando del primero.
• Multiply (Multiplicación): Multiplica dos operandos.
• Divide (División): Divide el primer operando por el segundo.

Operaciones Lógicas:

• AND (AND lógico): Realiza la operación lógica AND bit a bit entre dos operandos.
• OR (OR lógico): Realiza la operación lógica OR bit a bit entre dos operandos.
• XOR (XOR lógico): Realiza la operación lógica XOR bit a bit entre dos operandos.
• NOT (NOT lógico): Realiza la operación lógica NOT bit a bit en un operando.

7|Página
Arquitectura de Computadoras II
•••

Operaciones de Desplazamiento:

• Shift Left (Desplazamiento a la Izquierda): Desplaza bits hacia la izquierda.


• Shift Right (Desplazamiento a la Derecha): Desplaza bits hacia la derecha.

Operaciones de Comparación:

• Compare (Comparar): Compara dos operandos y establece banderas de estado.


• Test (Prueba): Realiza una operación lógica AND entre dos operandos sin almacenar
el resultado, pero establece las banderas de estado.

Operaciones de Transferencia de Datos:

• Load (Cargar): Transfiere datos desde la memoria a un registro.


• Store (Almacenar): Transfiere datos desde un registro a la memoria.
• Move (Mover): Copia datos de un lugar a otro.

Operaciones de Control de Flujo:

• Jump (Salto Incondicional): Salta a una dirección de memoria específica.


• Branch (Ramificación Condicional): Cambia el flujo de ejecución dependiendo de una
condición.
• Call (Llamada a Subrutina): Salta a una dirección de memoria específica y guarda la
dirección de retorno.

Operaciones de Punto Flotante (si es compatible):

• FADD (Suma de Punto Flotante): Realiza la operación de suma en punto flotante.


• FSUB (Resta de Punto Flotante): Realiza la operación de resta en punto flotante.
• FMUL (Multiplicación de Punto Flotante): Realiza la operación de multiplicación en
punto flotante.
• FDIV (División de Punto Flotante): Realiza la operación de división en punto flotante.

Operaciones de Entrada/Salida (E/S):

• In/Out (Entrada/Salida): Transfiere datos entre la CPU y dispositivos periféricos.

Estas operaciones son ejemplos generales y la disponibilidad exacta puede variar según la
arquitectura. Algunas arquitecturas pueden incluir operaciones adicionales y conjuntos de
instrucciones especializados.

Formato de instrucciones
El formato de instrucciones en una arquitectura de conjunto de instrucciones (ISA) puede
variar considerablemente entre diferentes arquitecturas. Sin conocer una arquitectura

8|Página
Arquitectura de Computadoras II
•••

específica, proporcionaré un formato genérico que se encuentra comúnmente en muchas


arquitecturas. Este formato es una simplificación y puede no reflejar exactamente la
estructura de una arquitectura particular.

Un ejemplo de arquitectura de 32 bits

+-----------+-----------+-----------+-----------+-----------+

| OpCode | Rs | Rt | Imm/Offset |

+-----------+-----------+-----------+-----------+-----------+

| 6 bits | 5 bits | 5 bits | 16 bits /12 bits |

+-----------+-----------+-----------+-----------+-----------+

Descripción de los Campos:


OpCode (Código de Operación):
Identifica la operación que el procesador debe realizar.

Tamaño: Generalmente 6 bits, lo que permite hasta 64 operaciones diferentes.

Rs, Rt (Registros Fuente):


Especifican los registros fuente que contienen los operandos para la operación.

Tamaño: Normalmente 5 bits cada uno, lo que permite referenciar hasta 32 registros.

Imm/Offset (Valor Inmediato o Desplazamiento):


En algunas instrucciones, este campo puede contener un valor inmediato o un desplazamiento.

Utilizado en instrucciones que involucran datos constantes o en instrucciones de salto condicional


o de carga/almacenamiento indexado.

Tamaño: Puede variar según la necesidad del diseño, típicamente entre 12 y 16 bits.

Otros Campos (Opcionales):

Func (Función):
En algunas arquitecturas, se utiliza un campo de función adicional para especificar variantes de
operaciones, como operaciones de desplazamiento o rotación.

Tamaño: Depende de la cantidad de variantes de operaciones necesarias.

Ejemplo:
Veamos un ejemplo concreto de una instrucción utilizando este formato:

9|Página
Arquitectura de Computadoras II
•••

Instrucción: ADD R1, R2, #100

Codificación Binaria:

OpCode para suma: 001000 (por ejemplo).

Rs (R2): Se especifica el registro fuente 1.

Rt (R3): Se especifica el registro fuente 2.

Imm/Offset: Se especifica el valor inmediato 100.

Por lo tanto, la instrucción se codificaría como 001000 00010 00011 0000000001100100.

Este es un ejemplo simplificado del formato de instrucciones para una arquitectura de 32 bits. La
estructura básica proporciona una forma eficiente de codificar y decodificar las operaciones y los
operandos necesarios para las operaciones del procesador.

Tipos de datos
1. Números Enteros:
Enteros con signo: Pueden representar números positivos y negativos.

Ejemplo: Números enteros en el rango de -2,147,483,648 a 2,147,483,647.

Enteros sin signo: Solo representan números positivos.

Ejemplo: Números enteros en el rango de 0 a 4,294,967,295.

2. Punteros y Direcciones de Memoria:


Punteros: Se utilizan para almacenar direcciones de memoria.

Ejemplo: Punteros en el rango de direcciones de memoria de la arquitectura de 32 bits.

3. Caracteres y Cadenas:
Caracteres: Representan caracteres individuales utilizando el código ASCII o Unicode.

Cadenas: Secuencias de caracteres almacenadas consecutivamente en la memoria.

4. Datos en Coma Flotante:


Números de Punto Flotante: Representan valores con parte fraccionaria.

Ejemplo: Números en formato IEEE 754 de precisión simple (32 bits) o doble (64 bits).

Operaciones de Punto Flotante: Suma, resta, multiplicación, división, etc.

10 | P á g i n a
Arquitectura de Computadoras II
•••

5. Datos Binarios y Bitfields:


Bits Individuales: Representan valores binarios individuales (0 o 1).

Campos de Bits (Bitfields): Permiten manipular un número específico de bits dentro de una
palabra de datos.

6. Estructuras y Arreglos:
Estructuras: Agrupaciones de diferentes tipos de datos bajo un solo nombre.

Arreglos: Colecciones ordenadas de elementos del mismo tipo.

7. Otros Tipos de Datos:


Booleanos: Valores verdadero o falso.

Enumeraciones: Conjuntos de constantes nombradas.

Datos Personalizados: Tipos definidos por el usuario según las necesidades de la aplicación

Datos soportados
1.- OpCode (Código de Operación):
Rango de Valores: Los códigos de operación generalmente tienen un rango de valores que
identifican las diferentes operaciones admitidas por el procesador.

Ejemplo: Con 6 bits, se pueden representar hasta 64 operaciones diferentes (desde 000000
hasta 111111).

2. Registros Fuente y Destino (Rs, Rt, Rd):


Cantidad de Registros: Con 5 bits por campo, se pueden referenciar hasta 32 registros
diferentes en el banco de registros.

Ejemplo: Los registros podrían numerarse desde R0 hasta R31.

3. Valor Inmediato o Desplazamiento (Imm/Offset):


Rango de Valores: El tamaño del campo de valor inmediato o desplazamiento puede variar
dependiendo de la aplicación.

Ejemplo: Con 16 bits, se pueden representar valores inmediatos o desplazamientos que van
desde -32,768 hasta 32,767 (o de 0 a 65,535 si es sin signo).

4. Función (Opcional):

11 | P á g i n a
Arquitectura de Computadoras II
•••

Rango de Valores: Si se incluye un campo de función, su rango de valores dependerá de la


cantidad de variantes de operaciones que la arquitectura admita.

Ejemplo: Con 6 bits, se pueden representar hasta 64 variantes de operaciones diferentes.

Ejemplo de Datos Soportados:


Registros: R0 a R31.

Valores Inmediatos: Desde -32,768 hasta 32,767 (o de 0 a 65,535 sin signo).

Códigos de Operación: 64 operaciones diferentes identificadas por códigos de 6 bits.

Funciones (Opcional): Hasta 64 variantes de operaciones diferentes, si se incluye un campo


de función.

Conjunto de registros
1. Registros de propósito general (GPRs):
• Estos registros se utilizan para almacenar datos y direcciones de
memoria temporalmente durante la ejecución del programa.
• Permiten operaciones aritméticas, lógicas y de transferencia de datos.
• Su número y tamaño pueden variar según la arquitectura de la CPU,
pero suelen ser de 8, 16, 32 o 64 bits.
• Ejemplos comunes incluyen los registros EAX, EBX, ECX, EDX en
arquitecturas x86.
2. Contador de programa (PC):
• Este registro mantiene la dirección de la próxima instrucción que se
va a ejecutar.
• Se actualiza automáticamente después de cada instrucción para
apuntar a la siguiente en secuencia.
3. Registro de instrucción (IR):
• Almacena la instrucción actualmente en ejecución.
• Permite que la CPU decodifique y ejecute la instrucción.
4. Registro de estado (SR):
• Mantiene información sobre el estado actual de la CPU y del sistema.
• Puede incluir banderas de estado como indicadores de
desbordamiento, cero, signo, etc.
5. Registro de pila (Stack Pointer - SP):
• Indica la posición actual en la pila de llamadas.
• Se utiliza para realizar operaciones de push (empujar) y pop (sacar)
en la pila de llamadas.
6. Registros de segmento (Segment Registers):

12 | P á g i n a
Arquitectura de Computadoras II
•••

• En arquitecturas x86, estos registros se utilizan para apuntar a


diferentes segmentos de memoria, como el segmento de código, el
segmento de datos, etc.
7. Registros de puntero (Pointer Registers):
• Pueden utilizarse para almacenar punteros a datos o direcciones de
memoria específicas.
8. Registros de propósito especial (Special Purpose Registers):
• Estos registros tienen funciones específicas, como el registro de
temporizador, el registro de control de interrupciones, etc.
• Pueden variar ampliamente según la arquitectura de la CPU y las
características del sistema.

Modos de direccionamiento
1. Registro a registro (Register to Register):
• Este modo implica que los operandos se encuentran en registros de
la CPU.
• Las operaciones aritméticas y lógicas se realizan directamente entre
los datos almacenados en dos registros específicos.
2. Directo (Direct addressing):
• En este modo, la dirección de memoria del operando está codificada
directamente en la instrucción.
• Por ejemplo, una instrucción podría incluir una dirección de memoria
específica donde se encuentra el operando.
3. Indirecto (Indirect addressing):
• En lugar de especificar la dirección del operando, la instrucción
contiene la dirección de memoria de un registro que a su vez
contiene la dirección del operando.
• Es útil cuando la dirección del operando se calcula dinámicamente o
se almacena en otro lugar en la memoria.
4. Por dirección (Indexed addressing):
• Se utiliza un registro de índice para calcular la dirección del
operando.
• La instrucción incluye una dirección base y el desplazamiento desde
esa dirección base se calcula utilizando un registro de índice.
5. Relativo (Relative addressing):
• En este modo, la dirección del operando se calcula como un
desplazamiento relativo a la dirección actual o al contador de
programa (PC).

13 | P á g i n a
Arquitectura de Computadoras II
•••

• Es común en las instrucciones de salto condicional y de salto relativo.


6. Basado en pila (Stack-based addressing):
• Las operaciones se realizan en la cima de la pila, utilizando un
puntero de pila para acceder a los datos.
• Las instrucciones de push (empujar) y pop (sacar) modifican
automáticamente el puntero de pila.
7. Por registro (Register addressing):
• La dirección del operando se especifica directamente mediante un
registro de la CPU en lugar de una dirección de memoria.
• Se utiliza cuando el operando se encuentra en una posición fija en la
memoria, pero la dirección exacta no está codificada en la instrucción.

14 | P á g i n a

También podría gustarte