Académique Documents
Professionnel Documents
Culture Documents
) Computadores I - 2018
Repertorio de Instrucciones:
Características y Funciones
Computer Organization
and Architecture
William Stallings
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.
4
Diagrama de estados de un ciclo de
instrucción ( 1 )
Ocasionan un intercambio entre
5 CPU y memoria 8
3 6
4 7
8
Elementos de una Instrucción
10
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
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
partir del Contador del Programa ) 17
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
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
22
Decisiones para el diseño del repertorio de
instrucciones del lenguaje de maquina (1)
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
bits (8 bits en el ASCII extendido).
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
31
32
ARM Data Types
• 8 (byte), 16 (halfword), 32 (word) bits
• Halfword and word accesses should be word aligned
• Nonaligned access alternatives
— Default
– Treated as truncated
– Bits[1:0] treated as zero for word
– Bit[0] treated as zero for halfword
– Load single word instructions rotate right word aligned data transferred by
non word-aligned address one, two or three bytes. Alignment checking
— Data abort signal indicates alignment fault for attempting unaligned
access
— Unaligned access
— Processor uses one or more memory accesses to generate transfer of
adjacent bytes transparently to the programmer
• Unsigned integer interpretation supported for all types
• Twos-complement signed integer interpretation supported for all
types
• Majority of implementations do not provide floating-point
hardware
— Saves power and area
— Floating-point arithmetic implemented in software
— Optional floating-point coprocessor
— Single- and double-precision IEEE 754 floating point data types
ARM Endian Support
• E-bit in system control register
• Under program control
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
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
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
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
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 ( R1 se fija a un valor negativo)
—.
—.
— 309 ISZ R1
— 310 BR 301
— 311 49
• 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”.
51
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).
59
61
64
Utilización de la pila para calcular f
65
66
El orden de los Bytes (1) (Ejemplo)
67
70
El orden de los Bytes (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
72
Vista Alternativa del Mapa de Memor
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
74
Vista Alternativa del Mapa de Memoria
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.
77