Está en la página 1de 70

Informática

Ing. Aeroespacial

Computadores

C4: Organización de computadores:


1) Unidades funcionales del Computador

DISCA: Departamento de Informática de Sistemas y Computadores


Organización de Computadores (I) Informática
In g . A e r o e s p a c ia l

Arquitectura del computador


Organización de la memoria
Organización de la CPU

2
Informática
Arquitectura del Computador In g . A e r o e s p a c ia l

Unidades funcionales del computador


CPU (Central Processing Unit): Unidad Central de Proceso o procesador.
Responsable de ejecutar programas: reconoce instrucciones en código máquina
y las ejecuta. La CPU coordina al resto de los subsistemas.
Memoria principal (Main Memory): Almacena los programas en ejecución. Los
programas tienen que ser cargados de memoria secundaria (discos, memoria
flash) a memoria principal para que se puedan ejecutar.
Subsistema de E/S (Entrada/Salida) (I/O (Input/Output) Subsystem):
responsable de la interacción con el mundo exterior. Incluye periféricos y
comunicaciones. Periféricos

C o n tro la d o r C o n tro la d o r
Memoria d isc o v id e o

CPU Principal
E/S E/S

Bus
3
Informática
Arquitectura del Computador In g . A e r o e s p a c ia l

Arquitectura del computador


Es el diseño conceptual y la estructura operacional de un computador. Se suele
denominar Organización de Computadores.
Arquitectura von Neumann. La arquitectura en que las instrucciones y los
datos son almacenados en la memoria principal. Las instrucciones de código
máquina se ejecutan por la CPU en orden secuencial: una instrucción detrás de
otra de forma similar a la máquina de Turing. dispositivo
lect/escrit.
Turing machine:
... α ε ζ η λ π ψ ...
• Máquina teórica que se representa como una cinta
cinta en la que hay una CPU móvil.
CPU
• Esta CPU manipula los símbolos de la cinta de tabla
acuerdo a una tabla de reglas. símbolo regla
• El comportamiento de la máquina lo determina el α stop
símbolo leído en cada momento. β mover izq,
γ mover der.
• La CPU se puede mover de izquierda a derecha.
δ sumar
... ... 4
Informática
Arquitectura del Computador In g . A e r o e s p a c ia l

Bus (o canal)
Bus: el bus (o canal) es un sistema digital que transfiere datos entre los sistemas
de una computadora o entre computadoras. Está formado por cables, pistas en
un circuito impreso o conexiones en un circuito integrado.
Hay dos tipos de arquitecturas:
- Arquitectura de bus único: todas las unidades funcionales están conectadas al
mismo bus que es compartido por todos ellos. Es simple pero....
‣ Inconvenientes: el bus se convierte en un cuello de botella. Si dos dispositivos
usan el bus para transferirse información, los otros dispositivos tienen que esperar.

- Arquitectura de múltiples buses: hay varios buses, lo que permite que las
distintas unidades funcionales conectadas a estos buses se puedan comunicar
de forma simultánea. Incluso hay buses que conectan dispositivos concretos
(por ejemplo, el procesador de vídeo con la CPU).
‣ Esto permite tener distintos buses, con distintas velocidades y ancho de banda
(cantidad de información a transmitir)..

5
Informática
Arquitectura del Computador In g . A e r o e s p a c ia l

Arquitectura de bus único vs múltiples buses.

bus único múltiples buses

6
Informática
Arquitectura del Computador In g . A e r o e s p a c ia l

Ejemplo de placa base con múltiples buses.

7
Organización de Computadores (I) Informática
In g . A e r o e s p a c ia l

Arquitectura del computador


Organización de la memoria
Organización de la CPU

8
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Memoria
Memoria: dispositivo que almacena información con las siguientes operaciones
básicas:
- Escritura (write): almacenar (o actualizar) un ítem de información en la
memoria.
- Lectura (read): recuperar un ítem de información previamente almacenada en la
memoria.
Propiedad de la memoria: la operación de lectura siempre devuelve el valor de
la última operación de escritura.
Niveles de almacenamiento
- Memoria principal: memoria a corto-plazo. Almacena únicamente el/los
programa/s que la CPU está ejecutando y sus datos. Es memoria volátil: se
pierde su contenido cuando no tiene alimentación eléctrica.
- Memoria secundaria: comprende discos, memoria flash, lápices USB, CD’s,
discos remotos (dropbox) y otros. Es un almacenamiento a largo-plazo para los
programas y datos necesarios. Es una memoria no-volátil.

9
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Jerarquía de la memoria
Niveles:
- Registros de la CPU - internos a la capacidad velocidad
CPU. - +
- Memoria cache - interna al CPU
procesador (datos e instrucciones regs.
muy usados)
memoria
- Memoria principal - almacena cache
programas en ejecución y sus datos.
memoria
- Memoria virtual - simula una gran principal
memoria.
memoria
- Memoria secundaria - Discos y virtual
dispositivos similares.
memoria
La capacidad se incrementa de arriba secundaria
a abajo y la velocidad aumenta de + -
abajo a arriba
10
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Organización de la memoria principal


Organización: una matriz de celdas.
- Celda: Una celda almacena un bit.
Palabra de memoria (memory word): cada fila de la matriz de memoria. Puede
ser uno o más bytes. Cada palabra tiene asociada:
- Dirección (address): el número de fila o localización de la palabra dentro de la
memoria
- Valor (data) : contenido

Ejemplo
- Memoria 16 bytes
- El valor de la memoria en la
dirección F 16 es B6(h) 11
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Capacidad de la memoria
Volumen de información que puede almacenar. Se suele medir en bytes, KB, MB, GB, TB.
- Es el número de filas (palabras de memoria) x número de bytes por fila.
‣ Ejem plo: Palabra de 1 byte. 6 M b m em oria → 6 × 2 20 bytes.

Modos de acceso a la memoria


La memoria principal es de acceso aleatorio (Random-Access Memory o RAM)
- Acceso aleatorio (random access): se puede acceder directamente a cualquier palabra de
la memoria indicando su dirección.
- Acceso secuencial (sequential access): es el método de acceso de una cinta. El acceso a
una palabra determinada requiere el acceso a las palabras anteriores.
Señales (líneas de entrada/salida del sistema)
- Lineas de dirección (address lines): líneas de entrada que proporcionan la dirección de
una palabra.
- Líneas de datos (Data lines): líneas bidireccionales para obtener/poner el valor de una
palabra.
- RD/WR: líneas de entrada para especificar la operación RD (lectura) o WR (escritura).
- CS: Chip Select. Selecciona la memoria. Si CS=0 se aísla del bus
12
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Accesos a memoria
Lectura: La CPU proporciona la Dirección, RD/WR=1, CS=1 y espera a
obtener los Datos
Escritura: La CPU proporciona Dirección, Datos, RD/WR=0, CS=1

Operación Lectura Operación escritura


Bus Bus
Dirección Dirección
RD/WR 1 RD/WR 0
16 bytes 16 bytes
CS CS
CPU 1 RAM CPU 1 RAM
Memoria Memoria

Datos Datos

Dirección: A3-A0 Dirección: A3-A0


Datos: D7-D0 Datos: D7-D0

13
Informática
Organización de la memoria In g . A e r o e s p a c ia l

Clasificación de la memoria

RAM RAM Estática (SRAM)


Lectura y escritura
Memoria (Read/Write) RAM Dinámica (DRAM)
principal
ROM Programable una vez: ROM
Read Only Memory
Memoria sólo lectura Reprogramable: EPROM, EEPROM
Memorias
Memoria
lectura/escritura Hard disks, diskettes, Flash
Memoria (RW)
Secundaria
Sólo lectura
RO CD-ROMs, DVDs

14
Organización de Computadores (I) Informática
In g . A e r o e s p a c ia l

Arquitectura del computador


Organización de la memoria
Organización de la CPU

15
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Características principales de la CPU


La CPU (Central Processing Unit) es un subsistema del computador que ejecuta las
instrucciones del programa.
- Las instrucciones de los lenguajes de programación de alto nivel (Matlab, C, C++,Java...) se
puede descomponer en un conjunto de instrucciones básicas o primitivas que se denominan
instrucciones de lenguaje máquina
- Las instrucciones de código máquina son específicas a cada procesador, por ejemplo Intel
Pentium, Core i5, Core i7 tienen distintas instrucciones que el ARM.
Longitud de palabra (processor word): número de bits con los que trabaja internamente. Un
procesador con n-bits puede realizar operaciones (sumas, restas, etc) con datos de n-bits.
- Da una idea de la potencia del procesador.
- Un procesador de 16-bits tiene instrucciones para realizar sumas de 16-bits, pero también
puede hacer sumas de 32-bits usando un programa que lo descompone en sumas de 16-bits.
Pero es mucho más lento!!!!.
Capacidad de direccionamiento: número de bits necesario para acceder a la mayor posición
de memoria que puede soportar
- Determina varios aspectos, como el programa más largo que puede ejecutar.
Juego de instrucciones: conjunto de instrucciones del procesador. Un procesador se define por
su juego de instrucciones. Determina lo que puede hacer y también su interface.
16
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Subsistemas de la CPU
Banco de registros (Register bank): una memoria muy veloz de poca capacidad
que almacena los operandos de las instrucciones del lenguaje máquina.

Unidad aritmético-lógica, ALU (Arithmetic Logic Unit): es esencialmente un


circuito combinacional que realiza operaciones aritméticas (como suma, resta,
incremento, ...) y operaciones lógicas (como AND, OR, NOT, ...).

Unidad de control, CU (Control Unit): busca las instrucciones en memoria, las


decodifica (identifica) y coordina el resto de subsistemas de la CPU para
ejecutarlas.

Una CPU simple: el ‘SEP16’


Longitud de palabra: 16 bits
Capacidad de direccionamiento: 64 K x 16-bit (2 bytes) = 128 KB
- Direcciones de memoria de 16-bits
- Rango de direccionamiento: [0x0000, ..., 0xFFFF]
Banco de memoria: 16 registros de 16-bit.
- R0, R1, ..., R15

17
Informática
Organización de la CPU In g . A e r o e s p a c ia l

La ALU y el banco de registro del SEP16


Ejemplo de una instrucción en lenguaje máquina:

Banco de registros ADD R2,R0


0x0001 R0 Descripción:
R1
0xFFFF R2 R2 ← R2 + R0
...

R14
R15/SP

entradas
0xFFFF 0x0001 ALU
registros
temporales salidas ALU
opcode
ALU flags/banderas
V N Z C
0x0000 ...
PSR: Processor Status Register 18
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Ejemplo de instrucciones en lenguaje máquina (LA SUMA)


ADD R2,R0 : Suma el contenido del registro R0 al registro R2 y almacena el
resultado en el registro R2 (R2← R2+R0). Actualiza el valor de los flags si es
necesario.
- Asumiendo que R2=0xFFFF y R0=0x0001, la suma da 0x0000 que se transfiere
a R2.
- Se usan los registros temporales para evitar mezclar el valor inicial y final de R2.
- Esta suma produce un acarreo de registro (register overflow): un acarreo del bit
15 al 16 (que no existe)
‣ La ALU indica que se ha producido este acarreo poniendo el flag de overflow en un
registro especial que se denomina PSR (Processor Status Register), Registro de
estado del procesador.

19
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Registro de estado del procesador (PSR)


Contiene un conjunto de bits, llamados flags, donde cada
bit indica si ha ocurrido alguna condición especial
cuando la ALU realiza una operación:
- N (Negativo o menor que): se pone a 1 cuando el
resultado de una operación aritmética es un número
negativo considerando que está codificado en
complemento a 2.
‣ Simplemente copia el bit 15 del número.
- Z (Cero o igual que): se pone cuando el resultado de una
operación es cero.
- C (Acarreo): se pone cuando el resultado de una
operación aritmética o de desplazamiento no puede ser
representado con 16 bits.
‣ Se pone con el acarreo del bit 15 de la ALU. Es como un
bit adicional.
- V (oVerflow): Se ignora para los operadores sin signo,
pero avisa de un posible error si los operandos están en
complemento a 2..
20
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Unidad de control del SEP16 Memoria principal


Código (code)
CPU Banco de registros
0x1200 ADD R2,R0
0x0001 R0
0x1201 JNZ 0x2000
0x0001 R1
R2 ...
0xFFFF 0x2000
... MOV R0,R1
...
R14
0x7FFD R15/SP
Datos (data)
0x4000 0xA7B1
0xFFFF 0x0001
0x7A7A
PSR ...
opcode
flags ALU

0x0000 Pila (stack)


0x7FFD

Unidad de IR ADD R2,R0 0x8000


control (CU) PC 0x1201
21
Informática
Organización de la CPU In g . A e r o e s p a c ia l

La unidad de control del ‘SEP16’


Es la responsable de obtener las instrucciones de código máquina de memoria,
las decodifica, identificando cada instrucción, y dando las ordenes adecuadas a
los subsistemas involucrados para que se puedan ejecutar.
Hay dos registros relacionados con la ejecución de instrucciones:
- Registro de instrucciones, Instruction Register (IR): Contiene la instrucción
que la CPU está ejecutando actualmente.
‣ En el ejemplo anterior, contiene el código de la instrucción ADD R2,R0.
‣ Tiene que tener espacio para almacenar la instrucción de mayor tamaño → 32 bits
- Contador de programa, Program counter (PC): Apunta a la dirección de
memoria donde se ubica la próxima instrucción a ejecutar.
‣ Antes de ejecutar ADD R2,R0,el PC estaba apuntando a la dirección de memoria
0x1200. Una vez que se ha cargado la instrucción en el registro IR, apunta a la
siguiente instrucción (JNZ 0x2000), almacenada en la dirección 0x1201.
‣ Tiene que poder almacenar la máxima dirección posible → 16 bits

22
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Ejecutando instrucciones en lenguaje máquina.


La unidad de control realiza las siguientes acciones:
1. Lee (fetch) la instrucción de la posición de memoria
apuntada por registro PC, y la almacena en el registro IR.
2. Actualiza el PC para apuntar a la siguiente instrucción.
• while true
Depende del tamaño de la instrucción PC = PC + tam. En el
SEP16 normalmente se incrementa en 1, pero puede ser 2.IR⟵[PC];
3. Decodifica la instrucción: PC⟵PC+tam;
• En el ejemplo anterior identifica que el código de la
Decodifica IR
instrucción corresponde a “ADD” y que usa dos registros Ejecuta IR
como operandos (el R2 y el R0). end
4. Ejecuta la instrucción:
• Ordena a los registros R2 y R0 que pongan su contenido en
los registros temporales de entrada la ALU.
• Ordena a la ALU que realice la suma y espera a que ésta
finalice, proporcionando el resultado en el registro temporal
de salida y actualizando los flags si es necesario.
• Finalmente, mueve la salidad de la ALU al registro R2.
23
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Ejemplo de instrucciones de lenguaje máquina (EL SALTO)


Algunas instrucciones de control de flujo provocan que el PC no salte a la
siguiente instrucción.
JNE 0x2000 : Jump Not Equal (Salta si no es igual, a la dirección de
memoria 0x2000). Pone al PC el valor del operando (0x2000) SI el flag Z no
está señalado. SINO el PC no se modifica y sigue apuntando a la siguiente
instrucción. Esto se puede expresar como:
if Z ~=0
PC = 0x2000;
end
Es una instrucción de salto condicional: la acción de salto (esto es, de poner el
PC a un determinado valor) depende del estado de los flags.
Sólo tiene un operando (en vez de 2).
El operando no es un dato, sino una dirección de memoria (un puntero).

24
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Memoria cache
La capacidad de integración de los circuitos
digitales permite disponer en un mismo
circuito integrado (chip) de una memoria Memoria
ultra-rápida. Procesador principal
- Esta memoria es de reducida capacidad y
de acceso muy rápido al estar dentro del
mismo circuito.
Esta memoria almacena copias de los
CPU
bloques de memoria principal más
frecuentemente usados. Memoria
- Su contenido es un subconjunto muy
Cache ...
reducido de la memoria principal.
El objetivo es mejorar el tiempo medio de
acceso.
- Si el dato o instrucción está en la cache no
es necesario leerla de memoria principal
25
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Memoria Cache
El funcionamiento de la memoria cache es el siguiente: cuando la CPU necesita
leer o escribir de una posición de memoria principal, comprueba primero si el
contenido de esa posición de memoria está en la cache.
- Si está en la cache, decimos que ha ocurrido un acierto (cache hit).
‣ La CPU lee o escribe inmediatamente en la memoria cache.
- Sino, es un fallo (cache miss).
‣ Entonces, tiene que cargar en la cache el contenido de la posición de memoria
principal. Si no hay espacio en la cache, se descarta algún bloque para hacerle
espacio. Este bloque, si se ha modificado anteriormente, se tiene que volver a escribir
en memoria principal.
- Este bloque “victima” se selecciona usando una política de sustitución.
‣ Política óptima: sustituir el bloque que menos se va a usar en el futuro. Problema....
predecir el futuro no es fácil.
‣ LRU (Least Recently Used): sustituye la entrada menos usada recientemente.
El rendimiento de la memoria cache depende del porcentaje de accesos que
resultan en acierto con respecto al total. Se conoce como tasa de éxito o hit rate
26
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Memoria Cache
Las CPU modernas tienen distintas caches para instrucción y datos con el
objetivo de mejorar el rendimiento.
- Las caches de instrucciones son de lectura únicamente. No tenemos que volver
a escribir en memoria principal el bloque descartado.
Las cache de datos son actualmente multi-nivel, es decir, están organizadas
como una jerarquía de niveles (L1, L2, etc.)

27
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Microprocesadores
Microprocesador: una CPU en un único chip.
- La tecnología actual permite integrar todos los sistemas de la CPU
(registros, ALU, CU, memorias caches) en un único chip
- Incluso puede incluir varios núcleos (multicores) que son varias CPU que
comparten memoria y cache.

28
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Microprocesadores
El juego de instrucciones se considera la
definición del interface de una familia de
procesadores.
- Los procesadores Intel (Pentium, i5, i7) tienen
su juego de instrucciones diferentes al ARM7
por ejemplo.
- Dos microprocesadores con el mismo juego
de instrucciones se consideran compatibles.
‣ Ejemplos: Clones de Intel Pentium fabricados
por AMD o Cyrix, como AMD K5 o K6.

29
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Microprocesadores
Evolución de la familia Intel

30
Informática
Organización de la CPU In g . A e r o e s p a c ia l

Microprocesadores
Evolución de la familia Intel

31
Informática
Ing. Aeroespacial

Computadores

C4: Organización de computadores:


2) Lenguaje máquina

DISCA: Departamento de Informática de Sistemas y Computadores


Organización de computadores (II) Informática
In g . A e r o e s p a c ia l

Lenguaje máquina
Instrucciones de lenguaje máquina
La pila
Lenguajes y compiladores
Ejemplos

33
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Lenguaje máquina (o lenguaje ensamblador, assembler)


La CPU ejecuta instrucciones de lenguaje máquina.
- Las sentencias de los lenguajes de “alto nivel” se traducen en instrucciones de
lenguaje máquina para que puedan ser ejecutadas por la CPU.
- Cada familia de CPU tiene su propio juego de instrucciones.
Clasificación de las instrucciones:
- Movimiento de datos.
- Aritméticas y lógicas.
- Control del flujo
- Gestión de la pila (stack)
Formato del lenguaje máquina:
- Las instrucciones de lenguaje máquina consisten en:
‣ Mnemónico: identifica el código de la operación (opcode). Usualmente es un
mnemónico de la operación a realizar. Ejemplos: MOV, ADD.
‣ Operandos: los datos de la operación a realizar. Ejemplo: ADD R1,R2.
34
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Lenguaje máquina
Operandos de las instrucciones:
- Número de operandos: las instrucciones puede tener diferente número de
operandos:
‣ dos operandos: ADD R2,R0
‣ un operando: JNE 0x2000
‣ ningún operando: NOP
‣ ...
- Modos de direccionamiento: la forma en la cual los operandos son
especificados o interpretados:
‣ Direccionamiento de registro (Register addressing)
‣ Direccionamiento directo (Direct addressing)
‣ Direccionamiento indirecto por registro (Register indirect addressing)
‣ Direccionamiento inmediato (Immediate addressing)
‣ Direccionamiento implícito (Implicit addressing)

35
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Modos de direccionamiento (I)


Registro: el operando es el contenido del registro.
- Ejemplos: MOV R1,R2; ADD R3,R2; XOR R1,R2
Directo: el operando es el contenido de una dirección de memoria que se
especifica en la propia instrucción.
- Ejemplos: MOV R0,0x4002; JNZ 0x2002; CALL 0x7FE
Indirecto registro: el operando es el contenido de una dirección de memoria
cuya dirección es el contenido del registro indicado entre corchetes.
- Ejemplos: MOV R0,[R2]; JEQ [R2]; CAL [R2]
Instrucción: MOV R0,[R2]

CPU Memoria principal


Acceso
0xA7B1 R0 indirecto
0x4000 0xA7B1 registro

0x4000 R2
...
36
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Modos de direccionamiento (y II)


Inmediato: el operando es un dato inmediato especificado por la propia
instrucción.
- Ejemplos: LDR R0,0xFF01; ADD R2,0xAB01

Implícito: el operando es un registro predefinido que no está especificado


explícitamente en la instrucción..
- Ejemplos: PUSHSR; POPSR

37
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Codificación de las instrucciones


Las instrucciones en lenguaje máquina o ensamblador se codifican en lo que se
denomina código máquina.
- El código máquina es un código de bits que el procesador puede entender y
que se almacena en memoria. El lenguaje máquina se traduce a código máquina
utilizando un programa denominado ensamblador.
Los códigos de las instrucciones consisten en los siguientes campos:
- Opcode: código de la operación. En el SEP16 es de tamaño fijo.
‣ 6 bits: permite 26=64 instrucciones diferentes.
- Operando: para cada operando se reservan un número de bits que dependen
del modo de direccionamiento.
‣ Modo registro necesita 4 bits (16 registros)
‣ Modo directo requiere 16 bits (memoria de 64K palabras)
‣ Modo indirecto necesita 4 bits (16 registros)
‣ Modo inmediato requiere 16 bits (datos de 16 bit)
‣ Modo implícito (no requiere operandos)
38
Informática
Lenguaje máquina In g . A e r o e s p a c ia l

Formato de las instrucciones


El SEP16 sólo tiene 4 formatos de instrucciones.
Código máquina Lenguaje máquina
Tipos de 16
formato
6 4 2 4
1 opcode op1 op2 MOV reg1,reg2

6 4 6
2 opcode op1 PUSH reg
6 12
3 opcode RET

6 4 6
opcode op1
4 MOV reg,addr
op2 39
Organización de computadores (II) Informática
In g . A e r o e s p a c ia l

Lenguaje máquina
Instrucciones de lenguaje máquina
La pila
Lenguajes y compiladores
Ejemplos

40
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones de movimiento de datos


MOV - mov (mover)
- MOV reg1,reg2 - mover registro a registro
‣ RTL: reg1← reg2 Ej: MOV R1,R2
- MOV reg1,[reg2] - mover registro indirecto a registro
‣ RTL: reg1←[reg2] Ej: MOV R1,[R2]
- MOV [reg1],reg2 - mover registro a registro indirecto
‣ RTL: [reg1]←reg2 Ej: MOV [R1],R2
- MOV reg,addr - mover de memoria a registro
‣ RTL: reg←[addr] Ej: MOV R1, 0x2000
- MOV addr,reg - mover de registro a memoria
‣ RTL: [addr]←reg Ej: MOV 0x2000,R1
LDR - load register (carga registro)
- LDR reg,data - carga un registro con un dato inmediato
‣ RTL: reg←data Ej: LDR R1,0xFF00
41
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones aritméticas (I, sumas)


ADD - sumar
- ADD reg1,reg2 - suma registro a registro
‣ RTL: reg1←(reg1+reg2), Ej: ADD R1, R2
- ADD reg,data - suma dato inmediato a registro
‣ RTL: reg1←(reg1+data), Ej: ADD R1, 0x0003
ADC - add with carry (sumar con acarreo)
- ADC reg1,reg2 - adc registro a registro
‣ RTL: reg1←(reg1+reg2+C), Ej: ADC R1, R2
- ADC reg,data - adc inmediato a registro
‣ RTL: reg←(reg+data+C), Ej: ADC R1, 0x0003
INC - increment (incremento)
- INC reg - incrementa un registro
‣ RTL: reg←(reg+1), Ej: INC R1
42
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones aritméticas (II, restas)


SUB - substract (restar)
- SUB reg1,reg2 RTL: reg1←(reg1-reg2)
- SUB reg,data RTL: reg1←(reg1-data)
- Importante: la resta se hace como una suma en complemento a 2. Es decir,
se hace
‣ reg1=reg1+C 2(reg2)
‣ Esto provoca que se produzca acarreo si reg1 >= reg2.

SBC - substract with carry (restar con el acarreo)


- SBC reg1,reg2 RTL: reg1←(reg1-reg2-C)
- SBC reg,data RTL: reg←(reg-data-C)
DEC - decrement
- DEC reg RTL: reg←(reg-1)

43
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones lógicas (I)


CMP - compare (compara y modifica los registros)
- CMP reg1,reg2 - compara registro con registro
‣ RTL: PSR←(reg1 ? reg2) Ej: CMP R1,R2
- CMP reg,data - compara registro con un valor inmediato
‣ RTL: PSR←(reg ? data) Ej: CMP R1,0xFFFF
Realmente la comparación se realiza con una resta.
- Se resta al primer operando el segundo. El resultado se descarta.
- Se actualizan los flags.
‣ Si Z: (cero) la resta vale cero, con lo que los dos operando eran iguales.
‣ Si N: (negativo) la resta es negativa, y entonces el primer operando es menor que el
segundo.
‣ Si C: (carry) la resta ha producido acarreo, y por lo tanto el primer operando es
mayor o igual que el segundo,

44
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones lógicas (y II)


AND - logical and OR - logical or XOR - logical xor
- AND reg1,reg2 - and registro con registro.
‣ RTL: reg1←(reg1 & reg2) Ej: AND R1,R2
- AND reg,data - and register con dato inmediato
‣ RTL: reg←(reg & data) Ej: AND R1,0xFF00
BIC - bit clear (borra bits)
- BIC reg1,reg2 - bit clear registro a registro.
‣ RTL: reg1←(reg1 & ∼ reg2) Ej: BIC R1,R2
- BIC reg,data - bit clear registro con dato inmediato
‣ RTL: reg←(reg & ∼ data) Ej: BIC R1,0xFF00

45
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones de desplazamiento (Shift instructions)


SHR - shift right (desplazamiento der.) SHL - shift left (desplazamiento izq.)
- SHR reg,desp
‣ Se produce un desplazamiento de desp bits a la derecha.
‣ Ej: SHR R1,0x0A

46
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Instrucciones de control de flujo


Jcond - jump conditional (salto condicional)
- Jcond,addr - jump to address (salto a dirección indicada por addr)
‣ R T L: if (cond) P C ← addr; else P C ← (P C +2); end E j: JE Q 0x20FF

- Jcond,[reg] - jump register indirect (salto a dirección contenida en registro reg)


‣ R T L: if (cond) P C ← reg; else P C ← (P C +1); end E j: JN E [R 3]

Ccond - call subroutine conditional (llamar a sub-rutina condicional)


- Ccond,addr - call address (llama a sub-rutina indicada por addr)
‣ R T L: if (cond) [S P ]← P C ; S P ← (S P -1); P C ← addr; else P C ← (P C +2); end
‣ E x: C A L 0x27FF

- Ccond,[reg] - call register indirect (llama a sub-rutina de forma indirecta)


‣ R T L: if (cond) [S P ]← P C ; S P ← (S P -1); P C ← addr; else P C ← (P C +1); end
‣ E x: C N Z [R 3]

RET - return from subroutine (retorna de subrutina)


- RET
‣ R T L: S P ← (S P +1); P C ← [S P ]; E x: R E T
47
Informática
Instrucciones de lenguaje máquina In g . A e r o e s p a c ia l

Condiciones
Flags
Mnemónico Inglés Descripción
comprobados
AL Always siempre, incondicional ninguno
EQ Equal Igual después de comparación Z==1
NE Not equal Distinto después de comparación Z==0
MI Minus Negativo después de comparación N==1
PL Plus Positivo o cero de comparación N==0
CS Carry set La última operación tuvo acarreo C==1
CC Carry clear La última operación no tuvo acarreo C==0
HS Higher or same Mayor o igual (sin signo) C==1
LO Lower Menor (sin signo) C==0
VS Signed overflow OR exclusiva de la acarreo de bits 14 y 15 V==1
VC No signed overfllow No hay overflow con signo. V==0
48
Organización de computadores (II) Informática
In g . A e r o e s p a c ia l

Lenguaje máquina
Instrucciones de lenguaje máquina
La pila
Lenguajes y compiladores
Ejemplos

49
Informática
La pila In g . A e r o e s p a c ia l

La pila (the stack)


La pila es una estructura de datos de tipo LIFO (Last In, First Out), “último que
entra, primero que sale”. Es como una pila de platos.
Tiene asociadas dos operaciones
- push: pone un nuevo ítem en la pila (encima de todos)
- pop: retira un ítem de la pila (el de arriba)
La pila siempre crece hacia arriba
- Push: Cuando se añade un elemento
‣ SP = SP - 1
- Pop: Cuando se retira...
‣ SP = SP + 1

50
Informática
La pila In g . A e r o e s p a c ia l

Instrucción para manejar la pila


PUSH - push onto the stack (pone en la pila)
- PUSH reg - poner el valor del registro en la pila
‣ RTL: [SP]←reg; SP←(SP-1); Ej: PUSH R3
- PUSHSR - poner el valor del registro PSR en la pila. Es decir, guarda el estado.
‣ RTL: [SP]←PSR; SP←(SP-1); Ej: PUSHSR
POP - pop from the stack (retira de la pila)
- POP reg - retira un elemento de la pila y copia su contenido en el registro
‣ RTL: SP←(SP+1); reg←[SP]; Ej: POP R3
- POPSR - retira un elemento de la pila y copia su contenido en PSR. Recupera
estado
‣ RTL: SP←(SP+1); PSR←[SP]; Ej: POPSR

Otras operaciones
NOP - no operation (sin operación, no hace nada).
STOP - para el procesador
51
Informática
La pila In g . A e r o e s p a c ia l

Subrutinas y funciones
CAL 0x240A: (call). LLama siempre (incondicionalmente) a la función que
comienza en la dirección 0x240A.
RET: retorno de función

CAL
[SP] ← PC;
SP ← SP-1;
PC ← 0x240A;

RET
(Pila) SP ← SP+1;
PC ← [SP] ;

52
Informática
La pila In g . A e r o e s p a c ia l

Funciones anidadas...

53
Informática
La pila In g . A e r o e s p a c ia l

Variables globales y locales


La variables globales siempre se almacena en el sector de datos.
La variables locales se almacenan en la pila
Global

Local

54
Organización de computadores (II) Informática
In g . A e r o e s p a c ia l

Lenguaje máquina
Instrucciones de lenguaje máquina
La pila
Lenguajes y compiladores
Ejemplos

55
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Lenguajes
Lenguaje de programación de alto nivel: lenguaje más cercano al ser humano, en el que
es más fácil implementar algoritmos.
- No es dependiente de un procesador o juego de instrucciones.
- en principio se puede usar en cualquier computador, pero generalmente depende del
sistema operativo. La librerías (funciones) que utiliza dependen del sistema operativo.
Componentes del lenguaje
- Sintaxis (forma): describe las combinaciones correctas de símbolos que se pueden usar
para escribir un programa.
- Semántica: el significado (lo que hace).
Paradigmas de programación
- Programación estructurada: C, Matlab, Javascript
‣ U n program a es un núm ero lim itado de estructuras (secuencias, condiciones y repeticiones). La
estructura m ás im portante son las funciones, que perm ite descom pone un program a en un
conjunto de bloques bien definidos. S e usa para construir niveles de abstracción m ás altos
ocultando los detalles internos (concepto de sistem a)
- Orientado a objetos: Java, C++, ...
- Otros
56
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Compiladores
Compilador (Compiler): es un programa que transforma el código fuente escrito
en un lenguaje de programación (el fuente) en otro lenguaje objeto (target),
normalmente lenguaje máquina.
- Fuente: (C, C++, Fortran...) -> destino: Intel, ARM, etc.
- Target: normalmente código máquina

Un mismo programa se puede


compilar para distintos destinos.
- Para un sistema Windows que
utiliza Intel
- Para un teléfono móvil iPhone OS
que usa ARM
- Aunque esto puede no ser simple...

57
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Enlazadores (Linkers) (I)


Los grandes programas están compuesto por muchos ficheros de código fuente y
hacen uso de librerías externas.
Librerías o bibliotecas (library): es un fichero que contiene el código y los datos que
pueden ser usados por otros programas. Normalmente, son agrupaciones de funciones
que son útiles para un dominio de aplicación:
- Ejemplo: una biblioteca de matrices, de gráficos, de E/S,...
El proceso de generar un programa ejecutable consiste en dos pasos:
- 1. Compilar: cada fichero fuente se compila por separado. En este caso el compilador genera
un fichero intermedio, denominado fichero objeto, que contiene la traducción del código fuente
al código destino.
- 2. Enlazar es integrar todos los ficheros objetos generado por el compilador y las librerías
necesarias, para generar un fichero ejecutable.
Proceso de enlazado:
- El compilador genera una tabla de símbolos para cada fichero objeto, en el que se listan los
símbolos y su posición en memoria.
- Solving cross-references consists of associating each unsolved reference with an external
reference.
58
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Ejemplo Compilar y Enlazar (I)


Ejemplo de compilación y enlazado usando lenguaje C.

59
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Ejemplo Compilar y Enlazar (II)

60
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

Intérpretes
Un intérprete es un programa que directamente ejecuta las instrucciones
escritas en un lenguaje de programación. No hay un proceso previo de
compilación ni de enlazado.
- Ejemplos: Matlab, Perl, Python.
En un lenguaje compilado hay dos fases importantes en su ciclo de vida:
- Tiempo de compilación: se hace una vez para generar el ejecutable. Se
necesita un compilador y el código fuente.
- Tiempo de ejecución: se puede ejecutar directamente. Ya no se necesita el
compilador ni el código fuente. Es la forma habitual de usar los programas.
En un lenguaje interpretado no existe esa fase de compilado; todo se hace en
tiempo de ejecución: se lee el fichero fuente, se analiza, se resuelve las
referencias externas (llamadas a funciones, etc.), se traducen las ordenes a
código máquina y se ejecutan,
- Más ineficiente
- Más portable
61
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

El lenguaje Java (I)


Java es un caso especial, usa un esquema mixto, compilación e interpretación:
- Compilación: el código fuente del programa es compilado una primera vez para
producir una representación intermedia denominada bytecode que se ejecuta
en la “Java Virtual Machine” (JVM).
- Interpretación: este bytecode se interpreta en la JVM que produce el código
máquina para la CPU en la que está corriendo.

62
Informática
Lenguajes y compiladores In g . A e r o e s p a c ia l

El lenguaje Java (II)


El bytecode de Java es un juego de instrucciones
diseñado para una CPU virtual que se denomina:
“Java Virtual Machine” (JVM).
- La JVM no es una CPU real, pero podemos
imaginar que efectivamente lo es. Es lo que se
denomina máquina virtual.
Una máquina virtual (virtual machine) es una
aplicación que emula o reproduce una máquina
real con el juego de instrucciones definido y el
hardware asociado.
Ventajas de Java
- Portabilidad: los programas se pueden ejecutar
en cualquier plataforma que ejecute la JVM.
- Movilidad de código: el código se puede enviar
desde internet (por ejemplo Java Applets)

63
Organización de computadores (II) Informática
In g . A e r o e s p a c ia l

Lenguaje máquina
Instrucciones de lenguaje máquina
La pila
Lenguajes y compiladores
Ejemplos

64
Informática
Ejemplos In g . A e r o e s p a c ia l

Lenguaje ensamblador
//DATA segment (segmento de datos)
ORG 0x2000 TABLA SIMBOLOS
X: DWORD
X ≡ 0x2000
Y: DBYTE
Y ≡ 0x2001
//STACK segment (segmento de pila)
ORG 0x7000 STACK ≡ 0x7200
STACK: DWORD[512] START ≡ 0x4000
//CODE segment (segmento de código)
CASE2 ≡ 0x400A
ORG 0x4000
CASE1 ≡ 0x400E
START: LDR SP, STACK+512 //SP←Base pial - 0x4000
LDR R0, 200 //R0 ← 200 - 0x4002 END ≡ 0x4011
MOV X, R0 //0x2000 ← R0 - 0x4004
CMP R0, 100 //R0 > 100? - 0x4006
JGT CASE1 //Salta si > - 0x4008
//con signo
CASE2: LDR R1, 0 //R1←0 - 0x400A
JAL END //Salta siempre - 0x400C
CASE1: LDR R1, 1 //R1←1 - 0x400E
SHL R1, 1 //Despl. izq.R1 - 0x4010
END: NOP //No hacer nada - 0x4011
MOV Y, R1 //0x2001 ← R1 - 0x4012
65
Informática
Ejemplos In g . A e r o e s p a c ia l

Traduciendo sentencias if
ORG 0x2000 // DATA segment
x: DWORD
y: DWORD
ORG 0x4000 // CODE segment
START: LDR R0, 200 // R0 ← 200
MOV x, R0 // 0x2000 ← R0
LDR R1, 0 // R1 ← 0
MOV y, R1 // 0x2000 ← R1
CMP R0,100 // if R0>100?
JGT case1 //Jump signed GT case1
CMP R0,10 //if R0>10
JGT case2 //Jump signed GT case2
case3: MOV R2, 3 //else R2 ← 3
JAL END //Jump always END
case2: MOV R2, 2 //R2 ← 2
JAL END //Jump always END
case1: MOV R2, 1 //R2 ← 1
END: MOV y, R2 //0x2001 ← R2

66
Informática
Ejemplos In g . A e r o e s p a c ia l

Traduciendo sentencias for


ORG 0x2000 // DATA segment
y: DWORD[100] // y[0]...y[99]
// i assigned to R0
ORG 0x4000 // CODE segment
START: LDR R0, 0 // R0 ← 0
LDR R1, y // R1 points @ y[0]
loop: CMP R0,100 // R0>=100?
JGT END // if >= exit loop
ADD R1, 2 // R1 points @ y[i]
MOV [R1], RO // y[i] ← R0
INC R0 // i ← i+1
JAL loop // loop again
END: ...

67
Informática
Ejemplos In g . A e r o e s p a c ia l

Traduciendo sentencias while


ORG 0x2000 // DATA segment
x: DWORD //var x
ORG 0x4000 // CODE segment
START: MOV R0, x //R0 ← [x]
loop: CMP R0, 0 //x<0?
JLT END //exit loop
CMP R0,100 //x>=100?
JGE END //exit loop
INC R0 //x ← x+1
JAL loop //loop again
END: MOV x, R0 //[x] ← R0

68
Informática
Ejemplos In g . A e r o e s p a c ia l

Traduciendo llamadas a función


ORG 0x2000 // DATA segment
z: DWORD // var z
ORG 0x7000 // STACK segment
STACK: DWORD [512]
ORG 0x4000 // CODE segment
// Main program
MAIN: LDR SP, STACK-512 // SP ← Stack base
LDR R0, 0 // R0 ← 0
MOV z, 0 // init z=0
LDR R0, 9 // push y
PUSH R0
LDR R0, 5 // push x
PUSH R0
CAL sum // call sum (always)
POP R0 // pop z
END: MOV z, R0 // z ← R0
69
Informática
Ejemplos In g . A e r o e s p a c ia l

Convirtiendo llamadas a función


// CODE segment
// Function sum
sum: POP R1 // pop x
POP R0 // pop y
ADD R0, R1 // x=x+y
PUSH R0 // push z
RET // end sum

70

También podría gustarte