Unidad 2 Repertorio _instrucciones

39
1 Arquitectura y Organización de Computadoras - 2011 Unidad 5.- Repertorio de Instrucciones: Características y Funciones Computer Organization and Architecture 6 th EditionWilliam Stallings 2 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.

Transcript of Unidad 2 Repertorio _instrucciones

Page 1: Unidad 2 Repertorio _instrucciones

1

Arquitectura y Organización

de Computadoras - 2011

Unidad 5.- Repertorio de

Instrucciones:

Características y Funciones

Computer Organization and Architecture6th EditionWilliam Stallings

2

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.

Page 2: Unidad 2 Repertorio _instrucciones

3

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.

4

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

Page 3: Unidad 2 Repertorio _instrucciones

5

Diagrama de estados de un ciclo de

instrucción ( 1 )

1

2

3

4

5

6

8

7

Ocasionan operaciones internas a la CPU

Ocasionan un intercambio entre CPU y memoria

6

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.

Page 4: Unidad 2 Repertorio _instrucciones

7

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 dispositivo de E/S.

8

Diagrama de estados de un ciclo de

instrucción ( 4)

• Los estados en la parte superior implicanun intercambio entre la CPU y la memoriaó E/S.

• Los estados en la parte inferior implicansólo operaciones internas en la CPU

Page 5: Unidad 2 Repertorio _instrucciones

9

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

10

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.

Page 6: Unidad 2 Repertorio _instrucciones

11

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.

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

12

Un formato de instrucciones sencillo

Page 7: Unidad 2 Repertorio _instrucciones

13

(a ) Palabra número

(b ) Palabra instrucción

1

Bit de

signo

Dirección Codop DirecciónCodop

0 8 19 20 28 39

0 39

Formatos de la memoria IAS

14

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.

Page 8: Unidad 2 Repertorio _instrucciones

15

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 datos a, o desde registros.

16

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)

Page 9: Unidad 2 Repertorio _instrucciones

17

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 partir del Contador del Programa )

18

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

Page 10: Unidad 2 Repertorio _instrucciones

19

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

20

Programas para calcular Y

Page 11: Unidad 2 Repertorio _instrucciones

21

Cúantas direcciones por instrucción ? (1)

• Es una decisión básica de diseño.

• Menos direcciones —CPU menos compleja

— Instrucciones más cortas

— Instrucciones menos complejas

— Más instrucciones por programa

— Rápidas instrucciones de captación/ejecución de instrucciones

• Más direcciones — Instrucciones más complejas (poderosas?)

— Permite disponer de un mayor numero de registros de uso general – Las operaciones realizadas 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 combinación de dos y de tres direcciones.

22

Cúantas direcciones por instrucción ? (2)

• Otros aspectos a considerar —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 CPU hacen uso de varios formatos de instrucciones

Page 12: Unidad 2 Repertorio _instrucciones

23

Decisiones para el diseño del repertorio de

instrucciones del lenguaje de maquina (1)

• Define muchas de las funciones realizadas por la CPU

• El repertorio es el medio del programador para controlar la CPU.

• Deben considerarse las necesidades del programador

• 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

24

Decisiones para el diseño (2)• Registros

—Número de registros de la CPU que pueden referenciarse

— 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 adoptadas en el diseño de computadores comerciales.

Page 13: Unidad 2 Repertorio _instrucciones

25

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

—En decimal

• Caracteres

—ASCII etc.

—EBCDIC.

• Datos lógicos

—Bits o flags

26

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.

Page 14: Unidad 2 Repertorio _instrucciones

27

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.

• Otro: EBCDIC.

28

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 coma flotante.

Page 15: Unidad 2 Repertorio _instrucciones

29

Tipos de datos en el Pentium II

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

30

Tipos de datos del Pentium II

• 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

• BCD desempaquetado - Un dígito en cada byte

• BCD empaquetado - 2 dígitos BCD por byte

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

Page 16: Unidad 2 Repertorio _instrucciones

31

Tipos de datos del Pentium II

• 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 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).

32

Pentium Floating Point Data Types

Page 17: Unidad 2 Repertorio _instrucciones

33

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.

34

Tipos de operaciones: Transferencia de datos

• Es el tipo mas básico de instrucción

• Debe especificar — Posiciones del operando fuente

— Posiciones del operando destino– Podrían ser de memoria, un registro o la cabecera de una pila.

— Longitud de los datos a transferir

— 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

Page 18: Unidad 2 Repertorio _instrucciones

35

Tipos de operaciones: Transferencia de datos

• Estas operaciones son las mas sencillas que debe realizar la 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.

4. Si no, cursar la orden al modulo de memoria.

36

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

Page 19: Unidad 2 Repertorio _instrucciones

37

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 parte ALU del procesador debe realizar la operación deseada.

38

Tipos de operaciones: Lógicas

A) Disponen operaciones para manipular bitsindividuales dentro de una palabra o de otra unidad direccionable.

• Basadas en operaciones booleanas: 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.

Page 20: Unidad 2 Repertorio _instrucciones

39

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, el bit saliente se pierde, y en el otro extremo se introduce un 0

• Son útiles para aislar campos dentro de una palabra. Los 0 introducidos desplazan la información no deseada.

40

Tipos de operaciones: Lógicas

• Desplazamiento aritmético: trata el dato como entero con signo, y no desplaza el bit de signo.

• Aritmético a la derecha: el bit de signo se replica en la posición de bit de su derecha.

• Aritmético a izquierda: Se realiza un desplazamiento lógico de todos los bits, exceptuando el de signo que se mantiene.

• Ventajas. Pueden acelerar ciertas operaciones aritméticas.

Page 21: Unidad 2 Repertorio _instrucciones

41

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 y pueden involucrar operaciones de transferencia de datos.

42

Operaciones de desplazamiento y de

rotación

Page 22: Unidad 2 Repertorio _instrucciones

43

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/390),

—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

44

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.

Page 23: Unidad 2 Repertorio _instrucciones

45

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

46

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.

• La mayoría de las máquinas proporciona un código de condición de uno o varios bits.

Page 24: Unidad 2 Repertorio _instrucciones

47

Tipos de operaciones: Control de flujo o

transferencia de control

a) Bifurcación (“Salto”). 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).

• Como resultado de una operación aritmética, el código de condición puede contener 4 estados: 0, +,- , desbordamiento)—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:

48

Instrucciones de bifurcación

Page 25: Unidad 2 Repertorio _instrucciones

49

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 ( R1 se fija a un valor negativo)

— .

— .

— 309 ISZ R1

— 310 BR 301

— 311

50

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

• Dos instrucciones básicas: “Call”, “Return”.

—c.f. llamada de interrupción

Page 26: Unidad 2 Repertorio _instrucciones

51

Procedimientos anidados

52

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

Page 27: Unidad 2 Repertorio _instrucciones

53

Uso de una pila

– La CPU cuando ejecuta una llamada, coloca la dirección de retorno en la pila.

– Cuando ejecuta un retorno utiliza la dirección guardada.

54

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 <- PC + ∆ RN: registro a este fin• PC <- X PC: contador de programa• ∆: long. de la instrucción• El procedimiento llamado puede consultar RN para el retorno

posterior. • Segunda posibilidad: Almacenar la dirección de retorno al

comienzo del procedimiento: CALL X • X<- PC + ∆• PC<- x+1 • Aquí la dirección de retorno queda almacenada en un lugar

seguro.• Limitación: Impiden el uso de procedimientos reentrantes • (Reentrante: Es posible tener abiertas varias llamadas al mismo tiempo). Los procedimientos recursivos son un ej. del uso de esta característica).

Page 28: Unidad 2 Repertorio _instrucciones

55

Tipos de operaciones: Instrucciones de

llamado a procedimientos

• Además de la dirección de retorno a veces es necesario pasar parámetros:

• Alternativa 1: Además de aportar la dirección de retorno, a veces, es necesario pasar o transferir ciertos parámetros , se puede hacerlo mediante registros.

• Alternativa 2: : Almacenar los parámetros en memoria justo después de la instrucción CALL.

• El retorno debe hacerse a la posic. siguiente a los parámetros.

• Tienen limitaciones.

56

Tipos de operaciones: Instrucciones de

llamado a procedimientos

• Alternativa 3: Mas flexible pasar parámetros a través de pilas.

• Cuando la CPU ejecuta una llamada, introduce la dirección de retorno mas los parámetros.

• El procedimiento accede a los parámetros en la pila.

• Para el retorno: los parámetros de retorno pueden introducirse en la pila.

• Marco de pila: Parámetros + dirección de retorno.

• Ver figura 9.9 ( Pag. 336 Stallings)

Page 29: Unidad 2 Repertorio _instrucciones

57

Apendice: Pilas

• Conjunto ordenado de elementos, en el que sólo uno de ellos es accesible en un instante dado.

• Punto de acceso: cabecera de la pila

• Nro de elementos variable: longitud

• Sólo se pueden añadir o eliminar elementos en la cabecera

• LIFO ( last-in-first-out)

• Gestionan las llamadas y retornos de procedimientos

• Son una alternativa para direccionar memoria

58

Pilas: Operaciones básicas

Push: Apila; POP: Desapila; Multiplicar: requiere dos elementos de la cabecera.

Page 30: Unidad 2 Repertorio _instrucciones

59

Implementación de la pila mediante

instrucciones (1)

• Depende de sus usos potenciales.

• Es una estructura útil para la CPU: Gestión de llamadas y retornos a/de procedimientos.

• Pueden ser útiles también para el programador:

• Ej. Evaluación de expresiones. ( Se definen inst.)—PUSH, POP

—Operaciones que utilicen 1 o 2 elementos de la cabecera como operandos.

—Todas las instrucciones referencian a la cabecera, -> la dirección de/l operando/s esta implícita. ( 0 direcciones).-

60

Implementación de las pila mediante

instrucciones. (2)

• Si solo será utilizada por la CPU: En memoria principal ( o virtual ) se reserva un bloque de posiciones contiguas para almacenar los elementos de la pila.

• La > parte del tiempo el bloque esta parcialmente lleno.• El resto esta disponible para que crezca la pila.• Se necesitan 3 direcciones, normalmente memorizadas en

registros de la CPU:— Puntero de pila: Contiene la dirección del tope o cabecera— Base de la pila: Contiene la dirección base. Si se intenta POP

cuando esta vacía que sucede ?? — Limite de la pila. Contiene la dirección del otro extremo del

bloque reservado. Si se intenta PUSH cuando esta utilizado totalmente: que sucede ??

• Para acelerar las operaciones con la pila, también los dos elementos de la cabecera se almacenan en registros. El puntero de pila contiene la dirección del tercer elemento de la pila. Ver figura 9.14 b (Stallings Pág.354)

Page 31: Unidad 2 Repertorio _instrucciones

61

Pilas: Organizaciones usuales

62

Pilas: Evaluación de expresiones.

• Formulas matemáticas: en notación infija (infix)

• El operador binario aparece entre los operandos (a + b)

• Se emplean () para determinar el orden.

• a+(bxc) distinto de (a+b) x c

• Las operaciones tienen prioridades implicitas: Ej. la multiplicación antes que la suma.

• a + b x c es equivalente a + ( b x c).

• Una alternativa: notación postfija o polaca inversa.

• El operador se especifica después de los operandos:

• a+ b seria a b +

• a+(bxc) seria a b c x +

• (a+b) x c seria a b + c x

• No se requieren paréntesis.

Page 32: Unidad 2 Repertorio _instrucciones

63

Pilas: Evaluacion de expresiones.

Ventaja: Una expresión con este formato es fácil de evaluar usando una pila.

Se recorre la expresión de izquierda a derecha.

Se aplican las siguientes reglas:

1.- Si el elemento es una variable o constante, se introduce en la pila.

2.- Si es un operador, se extraen de la cabecera de la pila los dos operandos, se realiza la operación y se apila el resultado.

El resultado se obtiene en la cabecera de la pila.

Muchos compiladores, partiendo de expresiones en alto nivel las convierten a notación postfija y generan las instrucciones maquina a partir de esta notación.

64

Pilas: Evaluacion de expresiones.

Secuencia de instrucciones de maquina: para evaluar

f = ( a – b )/(c+d x e ).

La notación postfija ha servido de guía para generar las instrucciones de maquina.

La secuencia de eventos, producidos por el programa en la pila se ilustra en la sig. Figura:

Page 33: Unidad 2 Repertorio _instrucciones

65

Utilización de la pila para calcular f

66

Apendice: Clasificación de procesadores

• Aspecto relacionado con la forma en que se referencian y se representan los bytes dentro de una palabra y los bits dentro de un byte.

• ORDEN DE LOS BYTES.• Endian: Surge cuando es necesario tratar una entidad

multi-byte como un único dato con una sola dirección.• El tipo de endian determina el orden de

direccionamiento y de bytes.• Big-endian: Un dato numérico multi-byte que se

almacena con el byte más significativo en la dirección numérica más baja.

• Little-endian: Si se memoriza con el byte más significativo en la dirección más alta.

• Bi-endian: puede manejar ambos estilos de memorización

Page 34: Unidad 2 Repertorio _instrucciones

67

El orden de los Bytes (1) (Ejemplo)

• Valor hexadecimal de 32 bits:

• 12345678, se almacena en una palabra de 32 bits de una memoria direccionable por bytes, en el byte 184.

• El valor consta de 4 bytes, con el contenido 78 para el byte menos significativo, y el mas significativo con el valor 12.

• se exponen dos maneras de memorizar este valor.

68

El orden de los Bytes (1) (Ejemplo)

• Address Value (1) Value(2)

• 184 12 78

• 185 34 56

• 186 56 34

• 187 78 12

• + significativo - significativo

• big-endian little-endian

• i.e. leer de abajo hacia arriba o de arriba hacia abajo?

• .

Page 35: Unidad 2 Repertorio _instrucciones

69

Byte Order Names (2)

• El problema se llama Endian. En relación con los bytes este concepto tiene que ver con la ordenación de los bytes en un escalar multi_byte.

• Se almacena el byte mas significativo en la dirección de byte con valor numérico mas bajo.

• Este se llama big-endian: equivalente al orden de escritura de izq. a derecha. Equivalente a la escritura de las lenguas en las culturas occidentales.

• La otra almacena: el byte menos significativo en la dirección con valor mas bajo.

• Se conoce con el nombre de little-endian: equivalente al orden de derecha a izq. seguido por las operaciones aritméticas.

70

Byte Order Names (3)

• Para determinadas tareas es necesario conocer la estructura de los datos.

• Por. Ejemplo: la conversión de un bloque de memoria con un tipo de endian a otro, requiere conocer la estructura de los datos.

• Procesadores “Little endian”: Intel 80x86, Pentium II, Vax y Alpha.

• Procesadores “Big endian”: IBM System 370/390; SUN SPARC y mayoría de los RISC.

Page 36: Unidad 2 Repertorio _instrucciones

71

Byte Order Names (4)• La figura siguiente muestra como el tipo de “endian”

determina el orden de direccionamiento y de los bytes.

• La estructura C, contiene varios tipos de datos

• Los cuadros son el resultado de la compilación

• Memoria: serie de filas de 64 bits

• “Big endian”: la memoria se representa de izq. A derecha y de arriba hacia abajo.

• “Little endian”: Memoria de derecha a izq. Y de arriba abajo.

• (Estos esquemas podrían variar de fila a fila, depende de la manera de hacer el trazado).

• Los manuales de programación muestran confusa colección de formatos.

72

Example of C Data Structure (5)

Page 37: Unidad 2 Repertorio _instrucciones

73

Alternative View of Memory Map

Ejemplo: Se considera la memoria como una matriz vertical de bytes.

No existe consenso acerca de que tipo es mejor.

Se prefiere el “big-endian” por lo siguiente:

•Ordenación de cadenas de caracteres: es mas rápido en comparar cadenas de caracteres alineadas como enteros; la ALU de enteros puede comparar varios en paralelo

•Volcados decimal/ASCII: Todos los valores pueden imprimirse de izquierda a derecha sin causar confusión.

•Orden coherente: Los procesadores “Big-endian”almacenan en el mismo orden los enteros y las cadenas de caracteres ( el byte mas signif. primero).

74

Alternative View of Memory Map

Page 38: Unidad 2 Repertorio _instrucciones

75

Alternative View of Memory Map

Se prefiere el “little-endian” por lo siguiente:

•Un procesador “big-endian” tiene que efectuar sumas cuando convierte una dirección entera de 32 bits a una de 16 bits, con el objeto de utilizar los bytes menos significativos.

•Mayor facilidad para realizar operaciones aritméticas de alta precisión al estilo “little endian”; no hay que buscar primero el byte menos significativo y luego retroceder.

•Diferencias son poco significativas y la elección del estilo “endian” se debe mas a la necesidad de compatibilizar con maquinas anteriores que por otras causas.

•El POWER PC es un procesador “bi-endian”.

•Este permite a los desarrolladores de software elegir uno u otro modo.

76

Orden de los bitsAl considerarlos dentro de un byte:

1. Se cuenta el primer bit como bit numero 0 o como nro 1?

2. El numero de bit mas bajo lo asignamos al bit menos significativo del byte ( little-endian) o al mas significativo ( big-endian)?

No hay respuestas iguales para todas las maquinas

El programador necesita ser consciente para manipular los bits de manera individual.

Otro aspecto: transmisión de datos a través de una línea serie.

Cuando se transmite un byte individual ¿ envía el sistema primero el bit mas significativo, o el menos significativo?

El diseñador debe asegurarse de que los bits recibidos son correctamente tratados.

Page 39: Unidad 2 Repertorio _instrucciones

77

Standard…What Standard?

• Pentium (80x86), VAX are little-endian

• IBM 370, Moterola 680x0 (Mac), and most RISC are big-endian

• Internet is big-endian—Makes writing Internet programs on PC more awkward!

—WinSock provides htoi and itoh (Host to Internet & Internet to Host) functions to convert