Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.



Documentos relacionados
Arquitectura de Computadores

Organización Básica de un Computador y Lenguaje de Máquina

La memoria principal. Los subsistemas de E/S. Los buses del sistema

Tema 2. Diseño del repertorio de instrucciones

INTRODUCCIÓN. Definiciones ORDENADOR (RAE 1992): En esta asignatura computador y ordenador tiene el mismo significado

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Ejercicios. 5.2 [5] < 5.3> Este ejercicio es similar al 5.1, pero ahora considere los fallos causados por permanecer en 1 (la señal es siempre 1).

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

Capitulo V Administración de memoria

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

6-REGISTROS DEL 8086 Y DEL 80286

Estructura de Computadores

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Requerimientos principales de un sistema operativo

Guía Laboratorio Número 1

Entorno de Ejecución del Procesador Intel Pentium

Capítulo 4 Gestión de memoria

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

3.8 Construcción de una ALU básica

ENTORNO DE TRABAJO PARA LA SIMULACIÓN HARDWARE DE UNA COMPUTADORA SENCILLA

Documentación del simulador SPIM.

Carga de la instrucción / Decodificación y carga de registros (Figura 37) Instrucciones de salto condicional (Figura 40)

Requerimientos Principales de un Sistema Operativo. Descripción y Control de Procesos. Proceso

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

MÓDULO 1: Sistemas de Cómputo

Arquitectura t de Computadores Clase 10: Diseño del microprocesador monociclo pt.2

Organización de Computadoras. Turno Recursantes Clase 8

Arquitectura Von Neumann

Figura 1.4. Elementos que integran a la Tecnología de Información.

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Pipelining o Segmentación de Instrucciones

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo.

Estructura de Computadores

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Universidad Autónoma de Baja California Facultad de Ingeniería Mexicali

Procesadores segmentados. El DLX.

- La implementación es responsable de: Los ciclos de reloj por instrucción (CPI). La duración del ciclo de reloj.

Práctica 0. Emulador XENON de la computadora CESIUS

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes:

Computación I Representación Interna Curso 2011


Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32.

Introducción a Computación

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

ELO311 Estructuras de Computadores Digitales. Unidad Aritmética

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

Plataformas de soporte computacional: arquitecturas avanzadas,

PARTE II: Programación en ensamblador

Microarquitectura: DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE MICROARQUITECTURA: FLUJO DE DATOS Y CONTROL DEL MICROPROCESADOR

UNIDAD 1: Introducción a la arquitectura de computadoras.

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

La ventana de Microsoft Excel

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

UNIDAD 4: El procesador: Camino de los datos y Control.

Introducción a la Computación

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras.

MATERIAL 2 EXCEL 2007

DIAGRAMA DE CLASES EN UML

Modulo 1 El lenguaje Java

UNIDAD I Introducción. M.C. Juan Carlos Olivares Rojas

Autómata Siemens S7-200

Arquitectura Segmentada: Conceptos básicosb

AULA DE MAYORES UNIVERSIDAD DE MURCIA VICERRECTORADO DE EXTENSIÓN UNIVERSITARIA

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción

TEMA 6. Circuitos Aritméticos.

Guía de estudio para examen de recuperación tecnología I

Tema : ELECTRÓNICA DIGITAL

= C18+C19+C20+C21+C22 = SUMA(C18:C22) Con este sencillo ejemplo hemos querido demostrar que las funciones nos permiten simplificar los cálculos.

1. Aplicación de la conmutación de circuitos y la conmutación de paquetes. 1.1 Sistema de señalización número 7 (SS7).

Ejemplo del uso de las subrutinas

Test: Conteste exclusivamente en HOJA DE LECTURA ÓPTICA. No olvide marcar que su tipo de examen es A.

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

Unidad III El lenguaje de programación C

GENERACIÓN DE CÓDIGO

Presentación de la materia Historia de las computadoras

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Informática I para Bachillerato

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

SITEMA BINARIO, OCTAL Y HEXADECIMAL: OPERACIONES

Arquitectura de Redes y Comunicaciones

Unidad 3 Direccionamiento IP (Subnetting)

2.1 Funcionamiento del MPLS

ARITMÉTICA EN PUNTO FLOTANTE

Estructura de Computadores. Capítulo 3b: Programación en

Unidad II: Administración de Procesos y del procesador

Arquitectura basica de un computador

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

PROGRAMACIÓN ORIENTADA A OBJETOS

GUÍA BÁSICA DE USO DEL SISTEMA RED

Informática I Notas del curso

Estructuras de Datos y Algoritmos. Árboles de Expresión

Programación estructurada (Interfaces Windows y Unix)

Transcripción:

Tema 2: Arquitectura del repertorio de instrucciones Visión del computador que tiene el programador en bajo nivel. Lo que el programador en lenguaje ensamblador debe conocer para escribir programas: (1) Los registros del procesador (2) Tipos de instrucciones (3) Tipos de operandos (4) Modos de direccionamiento (5) Formato de las instrucciones 1 2. Arquitectura del repertorio de instrucciones (ISA) 2.1 Introducción (diseño del ISA; cómo es una instrucción) 2.2 Los registros (del procesador) 2.2 Tipos de instrucciones (qué operaciones) 2.3 Tipos de operandos 2.4 Modos de direccionamiento (especificación de operandos) 2.5 Formato de las instrucciones (codificación binaria) 2.6 Resumen de la ISA de la MIPS 2

2.1 Introducción Diseño del ISA Es un nivel complicado de diseñar. Al hacerlo, hay que tener en cuenta: El software (compilador de LANs) que tiene que soportar. La estructura del hardware que lo soportará. Es la conexión entre ambos niveles: lenguaje que ambos tienen que entender. 3 Es un punto de encuentro de el diseñador de la estructura y el programador a bajo nivel del computador (o el escritor del compilador): - El diseñador de la estructura ve el nivel ISA como la funcionalidad que ésta debe dar al programador. - El programador se hace consciente de la estructura definida por el diseñador: cómo usa los registros, qué operaciones tiene la ALU, cómo accede a memoria y qué tipos de datos tiene. Objetivo común de los diseñadores de computadores: Encontrar un lenguaje que haga fácil la construcción del hardware y del software (el compilador). Maximizar el rendimiento y minimizar el coste. 4

Cómo es una instrucción Los programas se escriben en lenguaje ensamblador. swap:muli $2, $5,4 add $2, $4,$2 lw $16, 4($2) sw $16, 0($2) jr $31 El lenguaje ensamblador es equivalente al lenguaje máquina. 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 5 El lenguaje máquina, lo interpreta y ejecuta directamente el hardware del computador. Está formado por instrucciones (máquina) simples. Una instrucción máquina especifica una procesamiento de datos que debe realizar el procesador. 6

Según el tipo, una instrucción especifica: - Una operación aritmética o lógica a realizar sobre uno o dos datos para obtener un resultado. Este tipo de instrucciones se realiza en el camino de datos: la ALU opera con datos en el banco de registros (fuentes) y el resultado se almacena en el banco de registros (destino). - Una transferencia de un dato desde una posición de memoria o registro (fuente) a un registro o posición de memoria (destino). Este tipo de instrucciones implican un acceso a memoria. - Un ruptura de la secuencia de ejecución de las instrucciones. Este tipo de instrucciones se realiza en el camino de datos: se carga un valor en el contador de programa. 7 Sintaxis típica de una instrucción en lenguaje ensamblador Ejemplo de la MIPS Cuatro campos básicos: etiqueta, nombre de la instrucción, operandos destino y fuente(s) y comentarios: En el simulador aparecen las instrucciones máquina: 8

2.2 Los registros Es un pequeña memoria rápida en el procesador para almacenamiento temporal de datos. Su número y función varían entre los distintos diseños de arquitecturas del repertorio de instrucciones Hoy en día, casi todas las arquitecturas son con registros de propósito general. En éstas, existe un conjunto de registros manejables libremente por el programador. Este no es el único tipo de arquitectura, veamos qué tipos de arquitectura hay en función de cómo se pueden especificar en una instrucción los operandos: 9 Tipos de arquitecturas del repertorio de instrucciones Una primera clasificación (histórica) según el tipo de almacenamiento temporal para los operandos. Esto determina el número de operandos explícitos por instrucción Almacenamiento Ejemplos Operandos Operando temporal explícitos destino en 1. Pila HP 3000 0 Pila 2. Acumulador PDP-8 Motorola 6809 1 Acumulador IBM 360 3. Conjunto de Registros o DEC 2 ó 3 registros memoria VAX, MIPS 10

Dónde están los operandos para las instrucciones aritméticas en los distintos tipos de arquitectura: - Arquitectura de pila: todos en memoria (en la pila). Ningún operando explícito en la instrucción. - Arquitectura de acumulador: uno de los fuente y el destino en el registro acumulador y el otro fuente en memoria. El operando en memoria explícito. - Arquitectura de registros: en registros o posiciones de memoria. Dos (uno será fuente y destino) o tres operandos explícitos. Según el tipo de arquitectura de registros: (i) Se podrá hacer operaciones ALU con datos en memoria. (ii) Habrá que cargarlos en registros para operar con ellos. 11 Veamos las instrucciones de transferencia y suma para cada una: Pila Estructura LIFO: el registro puntero de pila (SP) apunta (contiene la dirección de) al último elemento puesto en la pila. - PUSH dir = SP SP+1, M[SP] M[dir] (2 accesos a memoria) - POP dir = M[dir] M[SP], SP SP-1 (2 accesos a memoria) - ADD = SP SP-1, M[SP] M[SP+1] + M[SP] (3 accesos a memoria) 12

Acumulador - LOAD dir = AC M[dir] (1 acceso a memoria) - STORE dir = M[dir] AC (1 acceso a memoria) - ADD dir = AC AC + M[dir] (1 acceso a memoria) Registros - LOAD reg, dir = reg M[dir] (1 acceso a memoria) - STORE reg, dir = M[dir] reg (1 acceso a memoria) - ADD reg_dest, reg_f1, reg_f2 = reg_dest reg_f1 + reg_f2 (no hay accesos a memoria) 13 Veamos cómo se traduciría la secuencia de código C = A + B para las 3 clases de arquitectura: (A, B y C son variables y se almacenan en memoria) Pila Acumulador Registro PUSH dira LOAD dira LOAD R1,dirA PUSH dirb ADD dirb LOAD R2,dirB ADD STORE dirc ADD R3,R1,R2 POP dirc STORE R3,dirC 4 instrucciones 3 instrucciones 4 instrucciones 9 accesos a 3 accesos a 3 accesos a memoria memoria memoria Cómo sería para D = A + B +C? 14

Veamos las ventajas e inconvenientes de cada una: (1) Pila Ventaja: Instrucciones aritméticas cortas (no se especifican operandos). Inconveniente: Muchos accesos memoria. (2) Acumulador Ventaja: Menos accesos a memoria. Inconveniente: Instrucciones aritméticas más largas, se especifica un operando en memoria. (3) Registros (la mayoría hoy en día) Ventajas: Menos accesos a memoria e instrucciones más cortas (se especifican tres operandos en registro). 15 Registros del procesador Son de dos tipos: (1) Visibles al programador en lenguaje ensamblador. Serán especificados explícitamente en una instrucción. (2) De control y de estado, no pueden ser especificados explícitamente en una instrucción, son usados por: (a) La unidad de control para el procesamiento de instrucciones y los accesos a memoria. (b) El sistema operativo para controlar la ejecución de los programas. 16

(1) Registros manejables por el programador: Junto con la ALU forman el camino de datos Se utilizan para contener los operandos de las instrucciones aritméticas o para especificar una dirección de memoria. Son especificados explícitamente en las instrucciones. Por ejemplo en la MIPS mediante un número: add $9, $17, $2 ó lw $16, 4($2) 17 Cuestiones de diseño de los registros manejables por el programador: (a) Respecto al uso que le puede dar el programador: (1) De propósito general: pueden contener datos y especificar direcciones (MIPS). (2) De datos: sólo pueden contener datos. (3) De dirección: sólo para especificar direcciones (modos de direccionamiento indirecto ó base+desplazamiento). (b) Número de registros La experiencia dice que entre 8 32: - Menos: No son suficientes para contener variables lo que implica muchas referencias a memoria. - Más: No reduce notablemente las referencias a memoria y aumenta la longitud de las instrucciones (más número de bits para especificar los registros). 18

(c) Tamaño de los registros Habrá que decidir si todos los registros tienen el mismo tamaño (MIPS) o no. (1) Los que han de contener direcciones, lo suficientemente largo para contener direcciones completas. (2) Los que han de contener datos, lo suficientemente largos para contener la mayoría de los tipos de datos: una palabra. A menudo es posible usar dos registros de datos contiguos como uno solo para contener valores de doble longitud (MIPS: los registros para punto flotante doble precisión). 19 (2) Registros de control y estado del funcionamiento de la CPU: En la mayoría de las máquinas no son manejables por el programador. Algunos serán manejables por instrucciones ejecutadas en modo supervisor (control del sistema operativo). (a) Registros de control (1) Contador de programa: contiene la dirección de la instrucción a ejecutar. (2) Registro de instrucción: contiene la instrucción a ejecutar. (3) Registro de dirección de memoria: contiene la dirección de una posición de memoria para ser leída o escrita. (4) Registro de buffer de memoria: contiene la palabra de datos a escribir en memoria o que ha sido leída. 20

En esta figura vemos los registros de control 21 (b) Registro de estado (del programa en ejecución) Contiene los códigos de condición y otra información de estado. (i) Los códigos de condición (flags) son bits que especifican si se ha producido una determinada circunstancia en una operación ALU: signo del resultado, resultado igual a cero, acarreo de orden superior, desbordamiento, etc. Son utilizados implícitamente en las instrucciones de salto condicional (ii) Además de los códigos de condición la palabra de estado puede contener bits para: (1) Habilitación/deshabilitación de interrupciones (E/S). (2) Modo supervisor/usuario (de funcionamiento de la CPU). 22

Características del banco de registros del MIPS R2000 23 (1) Banco de registros de propósito general: 32 registros de 32 bits: se especifican con el símbolo $ y el número de registro (add $2, $3, $4). El registro $0 contiene invariablemente el valor 0. (2) Dos registros especiales de 32 bits: HI y LO almacenan los resultados de multiplicaciones y divisiones. (3) Banco de registros para números reales: 32 registros de 32 bits que puede utilizarse como: - 32 registros de 32 bits con formato IEEE 754 de simple precisión. Se identifican por $f0, $f2, $f4,, $f30-16 registros de 64 bits con formato IEEE 754 de doble precisión. Se identifican por $f0, $f2, $f4,, $f30 24

Convención en el uso de los registros en la MIPS Nombre Número Uso del registro zero 0 Constante 0 at 1 Reservada para ensamblador v0 2 Para devolver resultados de funciones v1 3 a0 4 Argumento 1 a una rutina a1 5 Argumento 2 a2 6 Argumento 3 a3 7 Argumento 4 t0..t7 8..15 Temporal (no se guarda valor entre llamadas) s0..s7 16..23 Temporal (el valor se guarda entre llamadas) t8, t9 24, 25 Temporal (no se guarda valor entre llamadas) k0, k1 26, 27 Reservado para el kernel del sistema operativo gp 28 Puntero al área global (apunta al bloque de datos) sp 29 Puntero de pila fp 30 Puntero de marco de pila ra 31 Dirección de retorno, usado por llamadas a rutina 25 Esta es la visión de los registros de la MIPS que nos da el PCSpim 26