Repertorio de Instrucciones

Anuncio
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 <- PC + ∆
RN: registro utilizado 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 53
un ej.
del uso de esta característica).
Uso de una pila para implementar el
anidamiento de subrutinas
– 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: 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 hacer
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, dificultan procedimientos
reentrantes.
55
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)( varía según
edición del libro a consultar).,
56
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
57
Pilas: Operaciones básicas
Push: Apila; POP: Desapila; Multiplicar: requiere dos elementos de
58
la cabecera como operandos.
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).59
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)
60
Pilas: Organizaciones usuales
61
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+bxc
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.
62
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.
63
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:
64
Utilización de la pila para calcular f
65
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
66
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.
67
El orden de los Bytes (1) (Ejemplo)
•
•
•
•
•
•
•
•
Address
184
185
186
187
Value (1)
Value(2)
12
78
34
56
56
34
78
12
+ significativo
- significativo
big-endian
little-endian
i.e. leer de abajo hacia arriba o de arriba hacia
abajo?
• .
68
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.
69
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.
70
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.
71
Example of C Data Structure (5)
72
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).
73
Alternative View of Memory Map
74
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 uno75u
otro modo.
Orden de los bits
Al 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.
76
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
77
Descargar