Arquitectura de Computadoras

Arquitectura de Computadoras - 2012 Repertorio de Instrucciones: Características y Funciones Computer Organization and Architecture 6th EditionWillia

47 downloads 229 Views 321KB Size

Recommend Stories


Arquitectura de computadoras I
Arquitectura de computadoras I JUAN BERNARDO VAZQUEZ GOMEZ Red Tercer Milenio ARQUITECTURA DE COMPUTADORAS I ARQUITECTURA DE COMPUTADORAS I JUA

Conceptos de Arquitectura de Computadoras Curso 2015
Conceptos de Arquitectura de Computadoras Curso 2015 PRACTICA 1 Assembly, Instrucciones, Programas, Subrutinas y Simulador MSX88 Objetivos: que el a

Story Transcript

Arquitectura de Computadoras - 2012 Repertorio de Instrucciones: Características y Funciones

Computer Organization and Architecture 6th EditionWilliam Stallings 1

Introduccion. • Repertorio de instrucciones en lenguaje maquina: Un punto de encuentro para el diseñador del computador y el programador. • Punto de vista del diseñador: El conjunto de instrucciones máquina informa de las especificaciones funcionales de la CPU: implementar la CPU es una tarea que implica implementar el set de inst. • Punto de Vista del programador: Quien se maneja en lenguaje ensamblador se hace consciente de la estructura de registros y memoria, de los tipos de datos y del funcionamiento de la ALU. • La descripción del repertorio de inst. maquina es un paso mas hacia la explicación de la CPU del computador. 2

Introduccion. • Objetivos: • Que hace una instrucción ? • Examinar y reconocer los distintos tipos de operandos. • Reconocer los distintos tipos de operaciones que pueden especificarse mediante instrucciones maquina.

3

Que es el repertorio de intrucciones? • Es la colección de instrucciones distintas que son ejecutadas por la CPU. • El funcionamiento de la CPU esta determinado por las instrucciones que ejecuta. • Cada instrucción debe contener la información que necesita la CPU para su ejecución. • Código de máquina • Lenguaje binario • Usualmente representada por código assembler

4

Diagrama de estados de un ciclo de instrucción ( 1 ) Ocasionan un intercambio entre CPU y memoria 5 8

2

3

6

1 4

7

Ocasionan operaciones internas a la CPU

5

Diagrama de estados de un ciclo de instrucción ( 2 ) 1. Cálculo dirección instrucción (IAC): determina la dirección de la siguiente instrucción a ejecutarse. Normalmente implica añadir un nro. fijo a la dirección de la instrucción previa. 2. Captación de la instrucción: La CPU la lee desde su posición en memoria. 3. Decodificación de la operación: analiza la instrucción para determinar el tipo de operación a realizar y los operandos que se usarán. 6

Diagrama de estados de un ciclo de instrucción ( 3 ) 4- Cálculo dirección operando: si la instrucción implica la referencia a un operando en la memoria ó E/S, entonces se determina la dirección. 5. Captación del operando: capta a el operando en la memoria ó se lee desde E/S. 6. Operación sobre los datos: realiza la operación indicada en la instrucción. 7. Cálculo dirección resultado.( Idem 4) 8. Almacenamiento resultado:escribe el resultado en memoria o lo saca a través de un 7 dispositivo de E/S.

Diagrama de estados de un ciclo de instrucción ( 4) • Los estados en la parte superior implican un intercambio entre la CPU y la memoria ó E/S. • Los estados en la parte inferior implican sólo operaciones internas en la CPU

8

Elementos de una Instrucción • Código de operación (Op code) —Especifica la operación a realizar ( suma, E/S, etc.)

• Referencia a operandos fuente —La operación puede implicar uno o más operandos fuente, que son entradas para la instrucción.

• Referencia al operando destino o resultado: —La operación puede producir un resultado

• Referencia a la siguiente instrucción —Dice a la CPU de donde captar la siguiente instrucción tras completarse la ejecución de la instrucción actual —Donde puede estar la siguiente instrucción? 9

Los operandos fuente y resultado pueden estar en: • Memoria principal (memoria virtual o cache): — Debe indicarse dicha dirección.

• Registro de la CPU — 1 sólo registro: referencia a él puede ser implícita — Más de 1 registro: cada uno tiene asignado un nro único y — La instrucción debe contener el nro de registro deseado.

• Dispositivo de I/O — La instrucción debe especificar el módulo y dispositivo de E/S para la operación. — En caso de E/S asignadas en memoria, se dara otra dirección de memoria principal o virtual.

10

Representación de las instrucciones • Cada instrucción se representa como una cadena de bits. • Está dividida en campos. • Cada repertorio emplea en gral mas de un formato de instruccion. • Durante su ejecución la instrucción se escribe en IR.( CPU) • La CPU debe extraer los datos de los distintos campos para realizar la operación requerida. • Para facilitar la comprensión humana de programadores y otros se utiliza una representación simbólica de los CODOPS — ej.: ADD, SUB,

• Conjunto de instrucciones del IAS. • Los operandos pueden también representarse simbólicamente — ADD R,Y — “SUMAR el valor contenido en la posición de datos Y al contenido del registro R” 11

Formatos de la memoria IAS 0

39

1

Bit de signo

0

Codop

(a ) Palabra número 8

19 20

Dirección

28

Codop

39

Dirección

(b ) Palabra instrucción 12

Representación de las instrucciones (2) • Los codops se representan con nemotécnicos, que indican la operación: —ADD Sumar —SUB Restar —MPY Multiplicar —DIV Dividir —LOAD Cargar datos en memoria —STOR Almacenar datos en memoria (memorizar)

• Es posible escribir un programa en leng. de maquina en forma simbólica. Cada cod. simbólico tiene una representación binaria fija. • El programador define: X= 513; Y = 514 • A partir de allí se construyen programas sencillos. 13

Un formato de instrucciones sencillo

14

Tipos de instrucciones • Instrucción en BASIC o Fortran. Por ej.: —X=X+Y • X=513 ; Y = 514 ( Corresponden a posiciones ) • Como realizarlo con instrucciones de maquina? • Puede necesitar de tres instrucciones máquina • 1) Cargar un registro con el contenido de la posición de memoria 513 • 2)Sumar al registro el contenido de la posición de memoria 514. • 3) Memorizar el contenido del registro en la posición de memoria 513. • Un lenguaje de alto nivel expresa las instrucciones de forma algebraica concisa utilizando variables. • Un lenguaje maquina expresa las operaciones de manera elemental, implicando operaciones de transferencia de 15 datos a, o desde registros.

Tipos de instrucciones • Cuales tipos incluir en un computador? • Debiera existir un conj. que permitiese al usuario formular cualquier tarea de procesamiento de datos. • O bien: Cualquier programe escrito en Alto nivel debe poder traducirse a lenguaje maquina para ser ejecutado. • De acuerdo a lo anterior se clasifican en: A) De Procesamiento de Datos: Instrucciones aritméticas y lógicas ( en registros de la CPU) B) De almacenamiento de datos: Instrucciones de memoria C) De transferencia de datos: Instrucciones de I/O D) De control: Instrucciones de comprobación y de bifurcación ( para testear el valor de una palabra o el estado de un calculo/ para bifurcar a diferentes conj. de instrucciones) 16

Número de direcciones de una inst. (a) • Permite describir la arquitectura de un procesador en termino del nro. de direcciones contenidas en cada instrucción. • Esta dimensión pierde significación a medida que crece la complejidad del diseño de la CPU. • Cual es el numero máximo de direcciones que serian necesarias en una instrucción? ? Cuatro ? Porque ? • 3 direcciones — Operando 1, Operando 2, Resultado — a = b + c; — No son comunes — Necesitan formatos relativamente largos para albergar las tres referencias — Es implícita la dirección de la instrucción siguiente ( se obtiene a 17 partir del Contador del Programa )

Número de direcciones (b) • 2 direcciones —Una de las direcciones debe hacer el servicio doble de uno de los operandos y del resultado. —a = a + b SUB Y, B —Reduce la longitud de la instrucción —Requiere algún trabajo extra – Almacenamiento temporario para algunos resultados

• 1 dirección —Una segunda dirección debe estar implícita —Usualmente era el registro acumulador (AC) —Esquema común en las primeras máquinas 18

Número de direcciones (c) • 0 (cero) direcciones • Todas las direcciones son implícitas —Usan una pila —Pila: Conjunto de posiciones del tipo last-in-first-out ( el ultimo en entrar es primero en salir). —e.j. push a — push b — add — pop c —La pila esta en una posición conocida —A menudo los dos elementos de su cabecera estàn en registros del procesador. 19

Programas para calcular Y

20

Cúantas direcciones por instrucción ? (1) • Es una decisión básica de diseño. • Menos direcciones — Procesador menos complejo — Instrucciones más cortas — Instrucciones menos complejas — Más instrucciones por programa -> mayor tiempo de ejecución y programas mas largos y complejos. — Rápidas instrucciones de captación/ejecución de instrucciones

• Más direcciones ( instrucciones de múltiples direcciones) — Instrucciones más complejas (poderosas?) — Más registros de uso general – Las operaciones Inter-registros son mas rápidas

— Menos instrucciones por programa

• Por razones de flexibilidad y facilidad para utilizar varios registros, las maquinas contemporáneas emplean una 21 combinación de dos y de tres direcciones.

Cúantas direcciones por instrucción ? (2) • Otros aspectos a considerar al momento del diseño —Si una dirección hace referencia a una posición de memoria o a un registro. – Hay menos registros, entonces se necesitan menos bits para referenciarlos

—Una máquina puede permitir diversos modos de direccionamiento – dicha especificación consume uno o más bits.

— La mayoría de los diseños de procesadores hacen uso de varios formatos de instrucciones 22

Decisiones para el diseño del repertorio de instrucciones del lenguaje de maquina (1) • Define muchas de las funciones realizadas por la CPU ( procesador) • El repertorio es el medio que dispone el programador para controlar la CPU. Por lo tanto deben considerarse sus necesidades a la hora de diseñarlo. • Los aspectos de diseño mas relevantes a considerar: • Repertorio de operaciones: — Cuántas operaciones considerar? — Qué operaciones considerar? — Cúan complejas deben ser?

• Tipos de datos: con los que se efectúan operaciones • Formatos de instrucciones — Longitud ( en bits) — Numero de direcciones — Tamaño de los distintos campos

23

Decisiones para el diseño (2) • Registros — Número de registros de la CPU disponibles — Cuáles operaciones pueden realizarse sobre cuáles registros?

• Direccionamiento — Diversas maneras mediante las cuales se especifica la dirección de un operando.

• Los aspectos están fuertemente relacionados y deben considerarse conjuntamente en el diseño de un set de instrucciones • RISC vs CISC. — RISC (POWER PC) : Reduced Instruction Set Computer o Computador de Conjunto Reducido de Instrucciones. — La arquitectura RISC cuestiona muchas de las decisiones sobre repertorios de instrucciones tradicionalmente adoptadas 24

Tipos de operandos (1) • Las instrucciones maquina operan con datos. Las categorías mas importantes son: • Direcciones: En ocasiones debe realizarse algún calculo sobre la referencia de un operando, se consideran como números enteros sin signo • Números —Enteros/punto flotante —Limitados ( magnitud de los nros representables en una maquina y además en coma flotante su precisión). —En decimal • Caracteres —ASCII etc. —EBCDIC. • Datos lógicos 25 —Bits o flags

Tipos de operandos (2) • Numeros: • Almacenados en un computador estan limitados — 1) Para la magnitud de los nros representables en una maquina. — 2) Para nros en coma flotante, su precisión esta limitada

• Programador consciente del redondeo, del desbordamiento. • Se usan datos numéricos: — Enteros o en coma fija — En coma flotante — En decimal

• Para aplicaciones con muchas E/S vs pocos cálculos y simples — Es preferible memorizar y operar con los números directamente en su forma decimal: decimal empaquetado. 26

Tipos de operandos (3) • Caracteres • Diversos códigos que permiten representar caracteres mediante secuencias de bits • ASCII: Código estándar americano para Intercambio de información. • Cada carácter representado por un patron de 7 bist • Otro: EBCDIC. ( Se emplea en los grandes computadores de IBM) 27

Tipos de operandos ( 4 ) • Datos lógicos: Bits o flags —En gral cada palabra se trata como unidad de datos individual (u otras unidades direccionables: byte, media palabra, etc) . —Otras se considera: una unidad de n bits como n elementos o datos de 1 bit, donde c/elemento vale 0 o 1. —Ventajas de los datos logicos: —1) Para almacenar una matriz de datos binarios o booleanos, c/elemento (0 o 1)=> la memoria se utiliza más eficientemente —2) Permite la manipulación de bits individuales de un dato. – EJ. Al convertir de ASCII a decimal empaquetado, se necesitan extraer los 4 bits de la derecha de cada byte. – Para desplazar bits de mantisas, en operaciones de 28 coma flotante.

Tipos de datos en el Pentium • Tipos generales de datos: • 8 bits (Byte) • 16 bits (palabra) • 32 bits (palabra doble) • 64 bits (palabra cuádruple) • Direccionamiento se hace mediante 8 bits (byte) • Reconoce una variedad impresionante de tipos de datos específicos que son reconocidos y procesados mediante instrucciones concretas. 29

Tipos de datos del Pentium • General – 1 byte, de palabra (16 bits), palabra doble ( 32 bits), y cuádruple (64) con contenido binario arbitrario • Entero - Valor binario con signo contenido en 1 Byte (C 2) • Ordinal - Un entero sin signo contenido en un byte , 1 palabra o una doble palabra. • BCD desempaquetado - Un dígito en cada byte • BCD empaquetado - 2 dígitos BCD por byte valor en el rango 0 a 99. • Puntero de proximidad – 32 bits que representa el desplazamiento dentro de un segmento • Campo de bits. Una secuencia contigua de bits, cada posición es independiente • Cadena de bytes. Secuencia contigua de bytes, de palabras, o palabras dobles, que contiene de 0 a 2 32 -1 bytes. 30

Tipos de datos del Pentium • Coma flotante. Existen una variedad de ellos, todos utilizados por la unidad de coma flotante. • Las instrucciones de coma flotante pueden operar con enteros y con enteros decimales empaquetados, así como numeros en coma flotante. • Los enteros con signo están en representación C2 y pueden ser de 16,32 o 64 bits. • Los enteros decimales empaquetados se almacenan en representación signo-magnitud con 18 dígitos en el rango de 0 a 9. • Las representaciones en coma flotante se ajustan al formato IEEE 754. • Ver tabla 9.2.- Pag. 322 Stallings y Figura 9.4 ( Pág.. 323). Varia según la edición del libro

31

Pentium Floating Point Data Types

32

Tipos de operaciones • El nro de Codops diferentes varia ampliamente de una maquina a otra. • En todas las maquinas se encuentran tipos generales de operaciones: • 1) Transferencia de datos • 2) Aritméticas • 3) Lógicas • 4) De conversión • 5) De E/S • 6) De control del sistema • 7) De control de flujo. 33

Tipos de operaciones: Transferencia de datos • Es el tipo mas básico de instrucción • Debe especificar — 1)Posiciones del operando fuente/origen — Posiciones del operando destino – Podrían ser de memoria, un registro o la cabecera de una pila.

— 2)Longitud de los datos a transferir — 3)El modo de direccionamiento para cada operando.

• Puede haber diferentes instrucciones para diferentes modelos: e.j. IBM S/370 — Load ( L ) Trans. Memoria a registro: 32 bits — Load Halfword (LH) Transf. Memoria a registro. 16 bits — Load ( LR ) Tranfs. De reg. A registro. 32 bits — Load (Long) (LDR) Trans. Larga entre dos registros de coma flot. — Load (Short) ( LE) Transf. Corta de memoria a reg. De coma flotante — Store (ST ) Transf. De registro a memoria. 32 bits 34

Tipos de operaciones: Transferencia de datos • • • • •

Por el contrario el VAX: Presenta una instrucción (MOV) con variantes según la cantidad de datos a transmitir Es mas sencilla que la utilizada por el Pentium, pero es menos compacta. e.g. VAX Estas operaciones son las mas sencillas que debe realizar el procesaror (CPU) Si el origen y el destino son registros, la CPU hace la operación (interna). Si uno o ambos operandos están en memoria -> La CPU debe realizar alguna o todas las siguientes tareas: 1. Calcular la dirección de memoria basándose en el modo de direccionamiento utilizado. 2. Si la dirección hace referencia a memoria virtual: traducir de dirección virtual a real. 3. Determinar si el elemento direccionado esta en cache. 35 4. Si no, cursar la orden al modulo de memoria.

Tipos de operaciones: Aritméticas • Suma, Resta , Multiplicación, División • Se tienen siempre para enteros con signo (coma fija) • A menudo se proporcionan para números en Punto flotante y para decimales empaquetados • Puede incluir varias instrucciones de un solo operando —Increment (a++): incrementa en 1 el operando —Decrement (a--): decrementa en 1 el operando —Negate (-a): cambia el signo del operando —Absolute: obtiene el valor absoluto del operando 36

Tipos de operaciones: Aritméticas • Su ejecución puede implicar: • Operaciones de transferencia de datos para ubicar los operandos como entradas a la ALU • Y para almacenar la salida de la ALU. • Además la ALU debe realizar la operación deseada.

37

Tipos de operaciones: Lógicas A) Disponen operaciones para manipular bits individuales dentro de una palabra o de otra unidad direccionable. • AND, OR, XOR, NOT • Pueden aplicarse desde bit a bit hasta n bits • Si dos registros contienen los siguiente: • (R1)= 10100101 ; Contenido de la posición R1 • (R2)= 00001111 ; Contenido de la posición R2 • (R1) AND (R2)=00000101 • Esta operación puede utilizarse como mascara, para poner a 0 ciertos bits y seleccionar otros.

38

Tipos de operaciones: Lógicas • • • •

En otro ejemplo: si dos registros contienen: (R1)=10100101 (R2)=11111111 Entonces: (R1) XOR (R2) = 01011010 (obtiene complemento a uno). b) Funciones de desplazamiento y rotación. • Desplazamiento lógico: se desplazan a la derecha o a la izquierda los bits de la palabra. • En un extremo, el bit saliente se pierde al desplazarse. En el otro se introduce un 0. Estos son útiles para aislar campos dentro de una palabra. • Los ceros que se van introduciendo en la palabra desplazan la información no deseada, que se va perdiendo por el otro extremo. 39

Tipos de operaciones: Lógicas b) Funciones de desplazamiento y rotación. • Desplazamiento aritmético: trata el dato como entero con signo, y no desplaza el bit de signo. • En un desplazamiento aritmético a derecha, el bit de signo normalmente se replica en la posición de bit de su derecha. • Estos desplazamientos sirven para acelerar ciertas operaciones aritméticas. • Con números en notación de C 2, un desplazamiento a izquierda o derecha equivale a multiplicar o dividir por 2 respectivamente, asumiendo que no hay desbordamiento ni desbordamiento a 0.

40

Tipos de operaciones: Lógicas • Rotación o desplazamiento cíclico. • Preserva todos los bits con que se esta operando. • Ej.: Ir volcando sucesivamente cada bit en la posición mas a la izquierda, donde puede ser identificado comprobando el bit de signo del dato. • Las operaciones lógicas implican actividad de la ALU

41

Operaciones de desplazamiento y de rotación

42

Tipos de operación: Conversión • Cambian el formato u operan sobre el formato de los datos. Ej. Conversión de decimal a binario. • Convierte un código de 8 bits a otro —TR R1, R2, L —Translate (s/370), —R2: Contiene la dirección de comienzo de una tabla de códigos de 8 bits. —Se traducen los L bytes que comienzan en la dirección especificada por R1. —Se sustituye cada byte por el contenido del elemento de la tabla indexadada por dicho byte. —Por ej.: Para convertir de EBCDIC a ASCII 43

Tipos de operaciones: Entrada/Salida • • • •

Las instrucciones admiten aproximaciones muy diversas. Incluyen E/S programadas aisladas. Incluyen E/S programadas asignadas en memoria. Instrucciones de movimiento de datos (mapeo de memoria ) • Puede ser hecha mediante un controlador separado (DMA). • Muchas implementaciones ofrecen solo unas pocas inst. de E/S con acciones especificas indicadas mediante parámetros, códigos o palabras de ordenes.

44

Tipos de operaciones: Control del sistema

• Son instrucciones privilegiadas. • CPU necesita estar en un estado específico • Están reservadas para ser usadas por el sistema operativo • Ej: Leer o alterar un registro de control • Ej.: para leer o modificar una clave de protección de memoria

45

Tipos de operaciones: Control de flujo o transferencia de control • Existe una serie de inst. cuya misión es cambiar la secuencialidad de la ejecución. • La operación que realiza la CPU es actualizar el PC para que contenga la dirección de alguna inst. que esta en memoria • Varias razones para utilizar estas instrucciones: —Si se va a procesar una tabla o una lista de elementos>lo normal es utilizar un bucle de programa. —Los programas incluyen tomas de decisión —Existen programas muy largos, se parte la tarea en trozos mas pequeños. 46

Tipos de operaciones: Control de flujo o transferencia de control a) Bifurcación (“Salto”). • Las maquinas poseen un codigo de condición de uno o varios bits, que se actualiza luego de una operacion. • Ejemplo: Se ejecuta el salto (se actualiza el PC con la dirección especificada en el operando) si se cumple la condición.



Sino se cumple se ejecuta la instrucción siguiente de la secuencia ( se incrementa el PC de forma habitual). — BRZ X (saltar a X si el resultado es cero) — BRP X ( saltar a la posición X, si el resultado es positivo) — BRN X (saltar a X si el resultado es negativo) — BR0 X (saltar a la posición X, si el resultado es desbordamiento) — Resultado: referencia a la ultima operación ejecutada que afecte al código de condición. — Otro ejemplo con inst. de 3 direcciones: 47 — BRE R1, R2, X Saltar a X si el contenido de R1 = R2

Instrucciones de bifurcación

48

Control de flujo o transferencia de control b) Salto implícito (“SKIP”). Incluye una dirección de manera implícita. Implica que se va a saltar una instrucción • La dirección implícita es igual a la dirección de la siguiente instrucción mas la longitud de una instrucción. • Ej. Instrucción “incrementar y saltar si es cero” (ISZ) — ISZ Register1 — 301 —. —. — 309 ISZ R1 — 310 BR 301 — 311

( R1 se fija a un valor negativo)

49

Tipos de operaciones: Control de flujo o transferencia de control c) Llamada a procedimiento • Procedimiento : programa autoconsistente que se incorpora en uno mas grande. • Razones de su uso: —Economía y modularidad —Economiza esfuerzo de programación y hace mas eficiente el uso del espacio de memoria.

• Dos instrucciones básicas: “Call”, “Return”. —c.f. llamada de interrupción 50

Procedimientos anidados

51

Tipos de operaciones: Control de flujo o transferencia de control • Llamada a procedimiento puede hacerse desde distintos puntos -> • La CPU debe guardar la dirección de retorno en algún sitio. • Existen 3 lugares habituales: —Un registro —Al principio de procedimiento —En la cabecera de una pila: es la opción mas potente y mas general

52

Tipos de operaciones: Control de flujo o transferencia de control •

• • • • • • • • • •

Primera ( Registro): CALL X ( llamada al procedimiento de la posición x). Si se utiliza un registro se produce: RN

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.