Sei sulla pagina 1di 39

1

Arquitectura y Organizacin
de Computadoras - 2011
Unidad 5.- Repertorio de
Instrucciones:
Caractersticas y Funciones
Computer Organization
and Architecture
6
th
EditionWilliam Stallings
2
Introduccion.
Repertorio de instrucciones en lenguaje maquina: Un
punto de encuentro para el diseador del computador y el
programador.
Punto de vista del diseador: El conjunto de
instrucciones mquina 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 descripcin del repertorio de inst. maquina es un paso
mas hacia la explicacin de la CPU del computador.
3
Introduccion.
Objetivos:
Que hace una instruccin ?
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 coleccin de instrucciones distintas que
son ejecutadas por la CPU.
El funcionamiento de la CPU esta determinado
por las instrucciones que ejecuta.
Cada instruccin debe contener la informacin
que necesita la CPU para su ejecucin.
Cdigo de mquina
Lenguaje binario
Usualmente representada por cdigo assembler
5
Diagrama de estados de un ciclo de
instruccin ( 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
instruccin ( 2 )
1. Clculo direccin instruccin (IAC):
determina la direccin de la siguiente
instruccin a ejecutarse. Normalmente
implica aadir un nro. fijo a la direccin de la
instruccin previa.
2. Captacin de la instruccin: La CPU la
lee desde su posicin en memoria.
3. Decodificacin de la operacin: analiza la
instruccin para determinar el tipo de
operacin a realizar y los operandos que se
usarn.
7
Diagrama de estados de un ciclo de
instruccin ( 3 )
4- Clculo direccin operando: si la
instruccin implica la referencia a un operando
en la memoria E/S, entonces se determina la
direccin.
5. Captacin del operando: capta a el
operando en la memoria se lee desde E/S.
6. Operacin sobre los datos: realiza la
operacin indicada en la instruccin.
7. Clculo direccin resultado.( Idem 4)
8. Almacenamiento resultado:escribe el
resultado en memoria o lo saca a travs de un
dispositivo de E/S.
8
Diagrama de estados de un ciclo de
instruccin ( 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
slo operaciones internas en la CPU
9
Elementos de una Instruccin
Cdigo de operacin (Op code)
Especifica la operacin a realizar ( suma, E/S, etc.)
Referencia a operandos fuente
La operacin puede implicar uno o ms operandos
fuente, que son entradas para la instruccin.
Referencia al operando resultado:
La operacin puede producir un resultado
Referencia a la siguiente instruccin
Dice a la CPU de donde captar la siguiente
instruccin tras completarse la ejecucin de la
instruccin actual
Donde puede estar la siguiente instruccin?
10
Los operandos fuente y resultado pueden
estar en:
Memoria principal (memoria virtual o cache):
Debe indicarse dicha direccin.
Registro de la CPU
1 slo registro: referencia a l puede ser implcita
Ms de 1 registro: cada uno tiene asignado un nro nico y
La instruccin debe contener el nro de registro deseado.
Dispositivo de I/O
La instruccin debe especificar el mdulo y dispositivo de E/S
para la operacin.
En caso de E/S asignadas en memoria, se dara otra direccin
de memoria principal o virtual.
11
Representacin de las instrucciones
Cada instruccin se representa como una cadena de bits.
Est dividida en campos.
Cada repertorio emplea en gral mas de un formato de
instruccion.
Durante su ejecucin la instruccin se escribe en IR.( CPU)
La CPU debe extraer los datos de los distintos campos para
realizar la operacin.
Para facilitar la comprensin humana de programadores y
otros se utiliza una representacin simblica de los CODOPS
ej.: ADD, SUB,
Conjunto de instrucciones del IAS.
Los operandos pueden tambin representarse simblicamente
ADD R,Y
SUMAR el valor contenido en la posicin de datos Y al contenido del
registro R
12
Un formato de instrucciones sencillo
13
(a ) Palabra nmero
(b ) Palabra instruccin
1
Bit de
signo
Direccin Codop Direccin Codop
0 8 19 20 28 39
0
39
Formatos de la memoria IAS
14
Representacin de las instrucciones (2)
Los codops se representan con nemotcnicos, que
indican la operacin:
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 simblica. Cada cod. simblico
tiene una representacin binaria fija.
El programador define: X= 513; Y = 514
A partir de all se construyen programas sencillos.
15
Tipos de instrucciones
Instruccin 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 mquina
1) Cargar un registro con el contenido de la posicin de
memoria 513
2)Sumar al registro el contenido de la posicin de memoria
514.
3) Memorizar el contenido del registro en la posicin 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 aritmticas y
lgicas ( 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 comprobacin y de bifurcacin
( para testear el valor de una palabra o el estado de un
calculo/ para bifurcar a diferentes conj. de instrucciones)
17
Nmero de direcciones de una inst. (a)
Permite describir la arquitectura de un procesador en
termino del nro. de direcciones contenidas en cada
instruccin.
Esta dimensin pierde significacin a medida que
crece la complejidad del diseo de la CPU.
Cual es el numero mximo de direcciones que serian
necesarias en una instruccin? ? 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 implcita la direccin de la instruccin siguiente ( se obtiene a
partir del Contador del Programa )
18
Nmero 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 instruccin
Requiere algn trabajo extra
Almacenamiento temporario para algunos resultados
1 direccin
Una segunda direccin debe estar implcita
Usualmente era el registro acumulador (AC)
Esquema comn en las primeras mquinas
19
Nmero de direcciones (c)
0 (cero) direcciones
Todas las direcciones son implcitas
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
21
Cantas direcciones por instruccin ? (1)
Es una decisin bsica de diseo.
Menos direcciones
CPU menos compleja
Instrucciones ms cortas
Instrucciones menos complejas
Ms instrucciones por programa
Rpidas instrucciones de captacin/ejecucin de instrucciones
Ms direcciones
Instrucciones ms complejas (poderosas?)
Permite disponer de un mayor numero de registros de uso
general
Las operaciones realizadas Inter-registros son mas rpidas
Menos instrucciones por programa
Por razones de flexibilidad y facilidad para utilizar varios
registros, las maquinas contemporneas emplean una
combinacin de dos y de tres direcciones.
22
Cantas direcciones por instruccin ? (2)
Otros aspectos a considerar
Si una direccin hace referencia a una posicin de
memoria o a un registro.
Hay menos registros, entonces se necesitan menos bits para
referenciarlos
Una mquina puede permitir diversos modos de
direccionamiento
dicha especificacin consume uno o ms bits.
La mayora de los diseos de CPU hacen uso de
varios formatos de instrucciones
23
Decisiones para el diseo 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 diseo mas relevantes a considerar:
Repertorio de operaciones:
Cuntas operaciones considerar?
Qu operaciones considerar?
Can complejas deben ser?
Tipos de datos: con los que se efectan operaciones
Formatos de instrucciones
Longitud ( en bits)
Numero de direcciones
Tamao de los distintos campos
24
Decisiones para el diseo (2)
Registros
Nmero de registros de la CPU que pueden referenciarse
Cules operaciones pueden realizarse sobre cules registros?
Direccionamiento
Diversas maneras mediante las cuales se especifica la direccin
de un operando.
Los aspectos estn fuertemente relacionados y deben
considerarse conjuntamente en el diseo 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 diseo de computadores comerciales.
25
Tipos de operandos (1)
Las instrucciones maquina operan con datos. Las categoras
mas importantes son:
Direcciones: En ocasiones debe realizarse algn calculo
sobre la referencia de un operando, se consideran como
nmeros enteros sin signo
Nmeros
Enteros/punto flotante
Limitados
En decimal
Caracteres
ASCII etc.
EBCDIC.
Datos lgicos
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 precisin esta limitada
Programador consciente del redondeo, del desbordamiento.
Se usan datos numricos:
Enteros o en coma fija
En coma flotante
En decimal
Para aplicaciones con muchas E/S vs pocos clculos y
simples
Es preferible memorizar y operar con los nmeros directamente en
su forma decimal: decimal empaquetado.
27
Tipos de operandos (3)
Caracteres
Diversos cdigos que permiten representar
caracteres mediante secuencias de bits
ASCII: Cdigo estndar americano para
Intercambio de informacin.
Otro: EBCDIC.
28
Tipos de operandos ( 4 )
Datos lgicos: 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
ms eficientemente
2) Permite la manipulacin 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.
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 cudruple)
Direccionamiento se hace mediante 8 bits
(byte)
Reconoce una variedad impresionante de tipos
de datos especficos 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 cudruple (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 dgito en cada byte
BCD empaquetado - 2 dgitos BCD por byte
Campo de bits. Una secuencia contigua de bits, cada
posicin es independiente
Cadena de bytes. Secuencia contigua de bytes, de
palabras, o palabras dobles, que contiene de 0 a 2
32
-1
bytes.
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 estn en representacin C2 y pueden ser de
16,32 o 64 bits.
Los enteros decimales empaquetados se almacenan en
representacin signo-magnitud con 18 dgitos 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 ( Pg..
323).
32
Pentium Floating Point Data Types
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) Aritmticas
3) Lgicas
4) De conversin
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 bsico de instruccin
Debe especificar
Posiciones del operando fuente
Posiciones del operando destino
Podran 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
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
operacin (interna).
Si uno o ambos operandos estn en memoria -> La CPU
debe realizar alguna o todas las siguientes tareas:
1. Calcular la direccin de memoria basndose en el modo
de direccionamiento utilizado.
2. Si la direccin hace referencia a memoria virtual:
traducir de direccin 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: Aritmticas
Suma, Resta , Multiplicacin, Divisin
Se tienen siempre para enteros con signo (coma
fija)
A menudo se proporcionan para nmeros 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
37
Tipos de operaciones: Aritmticas
Su ejecucin puede implicar:
Operaciones de transferencia de datos para
ubicar los operandos como entradas a la ALU
Y para almacenar la salida de la ALU.
Adems la parte ALU del procesador debe
realizar la operacin deseada.
38
Tipos de operaciones: Lgicas
A) Disponen operaciones para manipular bits
individuales 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 posicin R1
(R2)= 00001111 ; Contenido de la posicin R2
(R1) AND (R2)=00000101
Esta operacin puede utilizarse como mascara,
para poner a 0 ciertos bits y seleccionar otros.
39
Tipos de operaciones: Lgicas
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 rotacin.
Desplazamiento lgico: 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 informacin no
deseada.
40
Tipos de operaciones: Lgicas
Desplazamiento aritmtico: trata el dato como
entero con signo, y no desplaza el bit de signo.
Aritmtico a la derecha: el bit de signo se replica
en la posicin de bit de su derecha.
Aritmtico a izquierda: Se realiza un
desplazamiento lgico de todos los bits,
exceptuando el de signo que se mantiene.
Ventajas. Pueden acelerar ciertas operaciones
aritmticas.
41
Tipos de operaciones: Lgicas
Rotacin o desplazamiento cclico.
Preserva todos los bits con que se esta operando.
Ej.: Ir volcando sucesivamente cada bit en la
posicin mas a la izquierda, donde puede ser
identificado comprobando el bit de signo del dato.
Las operaciones lgicas implican actividad de la
ALU y pueden involucrar operaciones de
transferencia de datos.
42
Operaciones de desplazamiento y de
rotacin
43
Tipos de operacin: Conversin
Cambian el formato u operan sobre el formato de
los datos. Ej. Conversin de decimal a binario.
Convierte un cdigo de 8 bits a otro
TR R1, R2, L
Translate (s/390),
R2: Contiene la direccin de comienzo de una tabla de
cdigos de 8 bits.
Se traducen los L bytes que comienzan en la direccin
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
parmetros, cdigos o palabras de ordenes.
45
Tipos de operaciones: Control del sistema
Son instrucciones privilegiadas.
CPU necesita estar en un estado especfico
Estn reservadas para ser usadas por el sistema
operativo
Ej: Leer o alterar un registro de control
Ej.: para leer o modificar una clave de
proteccin de memoria
46
Tipos de operaciones: Control de flujo o
transferencia de control
Existe una serie de inst. cuya misin es cambiar la
secuencialidad de la ejecucin.
La operacin que realiza la CPU es actualizar el
PC para que contenga la direccin 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 decisin
Existen programas muy largos, se parte la tarea en
trozos mas pequeos.
La mayora de las mquinas proporciona un
cdigo de condicin de uno o varios bits.
47
Tipos de operaciones: Control de flujo o
transferencia de control
a) Bifurcacin (Salto). Ejemplo:
Se ejecuta el salto (se actualiza el PC con la direccin
especificada en el operando) si se cumple la condicin.
Sino se cumple se ejecuta la instruccin siguiente de la
secuencia ( se incrementa el PC de forma habitual).
Como resultado de una operacin aritmtica, el cdigo de
condicin puede contener 4 estados: 0, +,- ,
desbordamiento)
BRZ X (saltar a X si el resultado es cero)
BRP X ( saltar a la posicin X, si el resultado es positivo)
BRN X (saltar a X si el resultado es negativo)
BR0 X (saltar a la posicin X, si el resultado es
desbordamiento)
Resultado: referencia a la ultima operacin ejecutada que
afecte al cdigo de condicin.
Otro ejemplo con inst. de 3 direcciones:
48
Instrucciones de bifurcacin
49
Control de flujo o transferencia de
control
b) Salto implcito (SKIP). Incluye una direccin de
manera implcita. Implica que se va a saltar una
instruccin
La direccin implcita es igual a la direccin de la siguiente
instruccin mas la longitud de una instruccin.
Ej. Instruccin 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:
Economa y modularidad
Dos instrucciones bsicas: Call, Return.
c.f. llamada de interrupcin
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 direccin de retorno en
algn sitio.
Existen 3 lugares habituales:
Un registro
Al principio de procedimiento
En la cabecera de una pila: es la opcin mas potente y
mas general
53
Uso de una pila
La CPU cuando ejecuta una llamada, coloca la direccin de
retorno en la pila.
Cuando ejecuta un retorno utiliza la direccin guardada.
54
Tipos de operaciones: Control de flujo o
transferencia de control
Primera ( Registro): CALL X ( llamada al procedimiento de
la posicin x). Si se utiliza un registro se produce:
RN <- PC + RN: registro a este fin
PC <- X PC: contador de programa
: long. de la instruccin
El procedimiento llamado puede consultar RN para el retorno
posterior.
Segunda posibilidad: Almacenar la direccin de retorno al
comienzo del procedimiento: CALL X
X<- PC +
PC<- x+1
Aqu la direccin de retorno queda almacenada en un lugar
seguro.
Limitacin: 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 caracterstica).
55
Tipos de operaciones: Instrucciones de
llamado a procedimientos
Adems de la direccin de retorno a veces es
necesario pasar parmetros:
Alternativa 1: Adems de aportar la direccin
de retorno, a veces, es necesario pasar o
transferir ciertos parmetros , se puede hacerlo
mediante registros.
Alternativa 2: : Almacenar los parmetros en
memoria justo despus de la instruccin CALL.
El retorno debe hacerse a la posic. siguiente a los
parmetros.
Tienen limitaciones.
56
Tipos de operaciones: Instrucciones de
llamado a procedimientos
Alternativa 3: Mas flexible pasar parmetros a
travs de pilas.
Cuando la CPU ejecuta una llamada, introduce la
direccin de retorno mas los parmetros.
El procedimiento accede a los parmetros en la
pila.
Para el retorno: los parmetros de retorno pueden
introducirse en la pila.
Marco de pila: Parmetros + direccin de retorno.
Ver figura 9.9 ( Pag. 336 Stallings)
57
Apendice: Pilas
Conjunto ordenado de elementos, en el que slo
uno de ellos es accesible en un instante dado.
Punto de acceso: cabecera de la pila
Nro de elementos variable: longitud
Slo se pueden aadir 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 bsicas
Push: Apila; POP: Desapila; Multiplicar: requiere dos elementos de
la cabecera.
59
Implementacin de la pila mediante
instrucciones (1)
Depende de sus usos potenciales.
Es una estructura til para la CPU: Gestin de
llamadas y retornos a/de procedimientos.
Pueden ser tiles tambin para el
programador:
Ej. Evaluacin 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
direccin de/l operando/s esta implcita. ( 0 direcciones).-
60
Implementacin 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 direccin del tope o cabecera
Base de la pila: Contiene la direccin base. Si se intenta POP
cuando esta vaca que sucede ??
Limite de la pila. Contiene la direccin del otro extremo del
bloque reservado. Si se intenta PUSH cuando esta utilizado
totalmente: que sucede ??
Para acelerar las operaciones con la pila, tambin los dos
elementos de la cabecera se almacenan en registros. El
puntero de pila contiene la direccin del tercer elemento
de la pila. Ver figura 9.14 b (Stallings Pg.354)
61
Pilas: Organizaciones usuales
62
Pilas: Evaluacin de expresiones.
Formulas matemticas: en notacin 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
multiplicacin antes que la suma.
a + b x c es equivalente a + ( b x c).
Una alternativa: notacin postfija o polaca inversa.
El operador se especifica despus 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 parntesis.
63
Pilas: Evaluacion de expresiones.
Ventaja: Una expresin con este formato es fcil de evaluar
usando una pila.
Se recorre la expresin 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 operacin 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 notacin postfija y generan las instrucciones
maquina a partir de esta notacin.
64
Pilas: Evaluacion de expresiones.
Secuencia de instrucciones de maquina: para evaluar
f = ( a b )/(c+d x e ).
La notacin postfija ha servido de gua para generar las
instrucciones de maquina.
La secuencia de eventos, producidos por el programa en la pila
se ilustra en la sig. Figura:
65
Utilizacin de la pila para calcular f
66
Apendice: Clasificacin 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 direccin.
El tipo de endian determina el orden de
direccionamiento y de bytes.
Big-endian: Un dato numrico multi-byte que se
almacena con el byte ms significativo en la direccin
numrica ms baja.
Little-endian: Si se memoriza con el byte ms
significativo en la direccin ms alta.
Bi-endian: puede manejar ambos estilos de
memorizacin
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?
.
69
Byte Order Names (2)
El problema se llama Endian. En relacin con los bytes
este concepto tiene que ver con la ordenacin de los bytes
en un escalar multi_byte.
Se almacena el byte mas significativo en la direccin de
byte con valor numrico 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
direccin con valor mas bajo.
Se conoce con el nombre de little-endian: equivalente
al orden de derecha a izq. seguido por las operaciones
aritmticas.
70
Byte Order Names (3)
Para determinadas tareas es necesario conocer
la estructura de los datos.
Por. Ejemplo: la conversin 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 mayora de los RISC.
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 compilacin
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 podran variar de fila a fila, depende
de la manera de hacer el trazado).
Los manuales de programacin muestran confusa
coleccin de formatos.
72
Example of C Data Structure (5)
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:
Ordenacin de cadenas de caracteres: es mas rpido
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 confusin.
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
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 direccin entera de 32 bits a una de 16
bits, con el objeto de utilizar los bytes menos significativos.
Mayor facilidad para realizar operaciones aritmticas de alta
precisin al estilo little endian; no hay que buscar primero
el byte menos significativo y luego retroceder.
Diferencias son poco significativas y la eleccin 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 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: transmisin de datos a travs de una lnea
serie.
Cuando se transmite un byte individual enva el sistema
primero el bit mas significativo, o el menos significativo?
El diseador debe asegurarse de que los bits recibidos son
correctamente tratados.
77
StandardWhat 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

Potrebbero piacerti anche