Teoría 3y4

Anuncio
ORGANIZACIÓN DE UNA
COMPUTADORA
Introducción
• Las computadoras se usan en diversas aplicaciones
(i d t i oficinas,
(industria,
fi i
h
hogares, ciencia,
i
i etc.)
t )
• La primera computadora digital electrónica fue construida
durante la segunda guerra mundial (1942) para resolver
problemas científicos: ENIAC
Caracteristicas de la ENIAC (primera generación)
•
•
•
•
300 multiplicaciones por segundo y 5000 sumas
18000 tubos de vacío
Ocupaba 1800 sq feets (~200 m2)
Problemas:
- Costo (~600000 dólares),
- Tamaño,
T
ñ
- Potencia y refrigeración
- Confiabilidad (alta frecuencia de fallos)
• E
Esto
t se fue
f solucionando
l i
d en lla segunda
d generación
ió con ell
transistor, y luego con los circuitos integrados y el aumento
en la densidad de integración.
• En 1945 Von Neumann introdujo la idea de programa almacenado.
• Para lograr funciones especificas, los chips eran muy caros.
• Para cada cambio en las condiciones del sistema se necesitaba
prácticamente un nuevo diseño.
• La solución p
para esto fue diseñar un circuito q
que p
pueda realizar muchas
funciones distintas, según la combinación de unos y ceros (código) que
tenga en determinados terminales.
Ejemplo: sumar dos números, compararlos, almacenarlos, etc.
código de
operación
Salidas
Entradas
• El valor codificado indica que se debe hacer (instrucción).
g sean las instrucciones q
que se le p
pida y el orden de estas,, el circuito
• Según
realizará distintas tareas.
• Esto es esencialmente, lo que hace un microprocesador.
• En 1971 Intel introdujo el primer microprocesador (de 4-bits): el 4004
• 1972 Intel crea el 8008 Primer µP de 8-bits
• 1974-77 aparecen otros µP de 8 bits de otras compañías: Motorola (6800), Zilog
(Z80) e Intel (8085)
• 1978-79 aparecen los µP de 16 bits 8086 y el 68000
• En los ‘80 siguen apareciendo µP con mejor performace y aparece el 1° Risc
• En los ‘90 Intel introduce el Pentium y en 1999 el Pentium III a 500 Mhz.
• 2003 Intel comercializa el Pentium IV a 3
3.2
2 Ghz
Ghz.
• En cuanto a la tecnología usada es principalmente del tipo CMOS, la densidad de
integración crece 50% por año y la frecuencia del clock ha crecido desde ~1
1 Mhz al
comienzo a varios Ghz actualmente.
• Un µP esta compuesto por elementos estudiados en cursos anteriores: registros,
contadores, ALU, etc. (hardware)
• Software es el conjunto de instrucciones (programa) que se le da al µP para
ejecutar.
• Un µP solo “entiende”
entiende un conjunto determinado de instrucciones,
instrucciones las cuales llegan
al él para ser ejecutadas, a través de unos y ceros.
• Este lenguaje de unos y ceros es el llamado lenguaje de máquina
 Existe un lenguaje mas fácil de comprender llamado Assembler
Ejemplo: La instrucción encargada de sumarle uno a un registro del µP
(en este caso el registro A):
Lenguaje de máquina
00010110
Assembler
INC A
 Cada µ
µP tiene su assembler p
particular,, q
que en algunos
g
casos es compatible
p
con
otros procesadores.
 Los lenguajes superiores como C, Pascal ó Basic no dependen del µP donde se
ejecuten, mientras que el assembler sí.
 Existen programas que “traducen” los lenguajes superiores a assembler o lenguaje
de máquina para un dado P. Estos son los llamados compiladores:
Lenguaje superior (Ej. C)
general
Assembler
específico del P
Lenguaje de máquina
UNIDAD DE COMPUTO
Vamos a llamar unidad de cómputo a un sistema que tiene la capacidad de poder
realizar por sí solo una determinada tarea
tarea, consistente en:
- recibir información (del exterior),
- procesarla,
- tomar decisiones,
decisiones y
- brindar información o dar órdenes (al exterior).
Estructura básica:
Mem.
de
Progr.
Entrad
E
t d
a
Mem.
de
Datos
Unidad de
Control
ALU
S lid
Salida
Elementos básicos de una computadora
P
Arithmetic
L i
Logic
Unit
Input/Output
(comunicación
con el exterior)
Memorias
Registers
Control
Clock
(programa,
datos etc.)
datos,
etc )
Elementos básicos: descripción de cada bloque
BLOQUE DE LA UNIDAD ARITMÉTICO LÓGICA (ALU)
• Es el área del µP donde se realizan todas las operaciones aritméticas y lógicas
lógicas.
• Puede realizar muchas operaciones que se seleccionan mediante líneas de
entrada manejadas por el área de control del µP
• Los operandos
p
y los datos resultantes se almacenan en registros
g
o en memoria.
• El número de bits con que opera una ALU varía con el µP, existiendo de 4, 8, 16,
32 y 64 bits.
BLOQUE DE REGISTROS
• Son elementos que almacenan datos en forma temporaria.
• Son flip-flops o registros de un bit agrupados de a 8, 16, 32 ó 64 bits dependiendo
del procesador
procesador.
• Existen registros especiales (para tareas específicas) y registros de uso general.
• Se usan en general como paso de los datos entre la CPU y la memoria y entre la
CPU y los dispositivos de entrada-salida.
• Almacenan por ejemplo: los datos que se quieren operar en la ALU, la dirección de
la próxima instrucción, la dirección de memoria donde está un dato especifico, etc.
• No todos los registros del microprocesador son accesibles para el programador.
RELOJ (CLOCK)
• Los microprocesadores
p
son,, en general,
g
, circuitos secuenciales sincrónicos.
• El clock es el encargado de fijar la señal que con la cual se sincronizarán todas las
tareas de la unidad de cómputo.
• La frecuencia del clock debe ser lo mas estable posible y normalmente queda
determinada por un cristal
cristal.
• Casi todos los nuevos procesadores tienen el circuito oscilador dentro del chip y
solo se debe colocar externamente el cristal.
BUSES
Las distintas partes se vinculan entre si por líneas eléctricas que solo pueden tener
2 estados (digitales).
( g
)
Estas líneas forman parte de alguno de los siguientes grupos:
Bus de datos
Tiene código de instrucciones o datos
Bus de direcciones
Tiene la dirección desde donde se quiere lee o escribir
Bus de control
Es el responsable de llevar las señales que controlan y
sincronizan la unidad de cómputo
BLOQUE DE CONTROL
• Es el encargado de controlar el flujo de información de datos entre las distintas
partes de la unidad de cómputo.
• Interpreta que tarea debe realizar el µP cuando llega una nueva instrucción y
orquesta las señales de control necesarias para realizarla.
• Manda a leer o escribir datos de la memoria o de los dispositivos de entrada/salida
haciendo uso de las señales del bus de control, habilitando algunos bloques e
inhibiendo otros.
• Selecciona que dirección se debe colocar en el bus de direcciones.
Memoria
prog.
p
g
µP
Datos
Direcciones
Control
Memoria
datos
Entrada.
Salida
Instrucciones de un P
Algunas de las instrucciones típicas de los µP son:
• Incrementar
I
t en uno ell contenido
t id de
d un registro
i t d
dell µP
P
• Sumar el contenido de dos registros del µP
• Cargar el valor que tiene un periférico de entrada en un registro del µP
• Sacar p
por un p
periférico de salida el contenido de un registro
g
del µ
µP
¿Como sumaria dos valores que llegan por un periférico de entrada?
El hardware indispensable para ejecutar un programa sería el µP y la memoria.
Ejemplo:
j p si q
queremos sumar los 10 p
primeros números ( 1 + 2+3...+10 )
teniendo ademas dos instrucciones, una que borre un registro y otra que
sume uno a ese registro.
El problema es que no se ve el resultado (es necesario un dispositivo de salida).
Si queremos sumar los N primeros números naturales es necesario una entrada,
para saber N.
Como se ejecuta la primer instrucción
• Cuando alimentamos el P este pone siempre la misma dirección para leer la
primer instrucción (por ejemplo 0000h).
• Lee lo que hay en el bus de datos y lo guarda en un registro especial llamado
registro de instrucción
instrucción.
• Luego decodifica la instrucción y pasa a ejecutar la operación solicitada.
Todo este proceso se llama opcode fetch (búsqueda del código de operación)
¿Qué pasa si no hay nada en esa dirección?
Una iinstrucción
U
t
ió puede
d ttener mas d
de una palabra,
l b pero lla operación
ió ya esta
t
especificada en la primer palabra.
“Incrementar
Incrementar un registro interno”
interno ( INR B ) no necesita mas que una palabra
palabra.
La instrucción en lenguaje de máquina (para un procesador de 8 bits) podría ser:
00000100  04h
U iinstrucción
Una
t
ió similar
i il pero para ell registro
i t A es:
Asembler:
INR A
Lenguaje de máquina: 00111100
Instrucciones de transferencia: MVI
Ejemplo de una instrucción donde se necesita mas de una palabra podría ser:
“cargar
g el registro
g
A ((8 bits)) con un número de 8 bits”
Esta instrucción tiene dos palabras, la primera (opcode) indica que se va a
cargar el registro A del µP con un número de 8 bits, la segunda palabra dice de que
número se trata
trata.
Simbólicamente:
A  4Bh
La instrucción en assembler es:
En lenguaje de máquina es:
MVI A,4Bh
00111110
01001011
= 3Eh
= 4Bh
Instrucciones de transferencia: LDA
“cargar el acumulador con un dato que está en una dirección determinada”
Cada
C
d P
P tiene
ti
un número
ú
d
determinado
t
i d d
de lí
líneas d
de di
direcciones,
i
por llo
tanto tiene la posibilidad de “direccionar” 2n posiciones:
8 bits
28
16 bit
bits 216
32 bits 232
256 posiciones
65536 (64K) posiciones
i i
4 Giga posiciones
Vamos a trabajar
j suponiendo
p
un 
P de 8 bits de datos y 16 bits de direcciones.
Para cargar el registro A con lo que hay en una dirección cualquiera (de 16 bits)
por ejemplo:
163Fh = 0001 0110 0011 1111
En assembler:
LDA
dirección
¿Cuántas palabras de código son necesarias?
Instrucciones de transferencia: LDA
LDA dirección
El primer byte indica el tipo de operación (opcode), que en este caso le dice que hay
que cargar al reg. A el valor que está en una dirección, la cual viene en los próximos
2 bytes.
El siguiente byte indica los primeros 8 bits de la dirección donde está el dato y el
tercero la parte restante.
En lenguaje de máquina: 00111010
00010110
00111111
El assembler será:
LDA 163Fh
¿Que paso con el valor que tenía A?
= 3Ah
= 16h
= 3Fh
(opcode)
( t baja
(parte
b j di
dir.))
(parte alta dir.)
A  (163Fh)
(
)
Instrucciones de transferencia: STA
“transferir lo que está en el registro A en una dirección cualquiera”
(por ejemplo la 3B01h = 0011 1011 0000 0001 )
(3B01h)  A
Si bóli
Simbólicamente:
t
Aquí se escribe en la dirección 3B01 (de la RAM) el valor del registro A.
En asembler sería:
STA dirección
STA 3B01h
En binario:
00110010
00111011
00000001
= 32h
= 3Bh
= 01h
(opcode)
Instrucciones de transferencia: MOV
Otro tipo de instrucción es move que consiste en “copiar el contenido de un registro
en otro”:
MOV B,C
B  C
La instrucción tendría un solo byte (el opcode) con el siguiente formato:
01DDDSSS
donde SSS es la fuente y DDD es el destino. Sería:
01 000 001
= 41h
Para hacer la asignación en sentido contrario,
C  B
MOV C, B
01 001 000
= 48h
Otras instrucciones: ADD
“
“sumar
2 registros
i t
iinternos”
t
”
El asembler es:
ADD C
En binario:
10000001
A  A+C
= 81h
Y en este caso de nuevo basta con una sola palabra.
Hay 4 registros internos en este P que se los identificará con el
siguiente código:
A 111
C 001
B 000
D 010
En la instrucción anterior los tres últimos bits del opcode indican que registro se
suma al A (dado que A siempre es uno de los sumandos).
Para sumar A + B el código sería:
Assembler:
Binario:
a o
ADD
B
10000000
0000000
¿como multiplicaría 2xA?
= 80
80h
Arquitecturas
De buses independientes:
DIR
DATOS
DIR
MEM.
MEM
DE
PROG
MEM.
DATOS
DIR
DATOS
µP
DATOS
ENTR.
DIR
DATOS
SAL.
Este esquema no se usa ya que necesita muchas conexiones.
Arquitecturas
Con memoria de programa (instrucciones) y memoria de datos independientes
(tipo Harvard):
DIR
DATOS
DIR
MEM.
DE
PROG.
MEM.
DATOS
DATOS
µP
ENTR.
SAL.
Tiene algunas aplicaciones (PICs).
Arquitecturas
Con memoria de programa y de datos común (tipo von Neumann):
DIR
DATOS
MEM.
DE
PROG
Ejercicio:
µP
MEM.
DATOS
ENTR.
SAL.
Veamos con un poco de detalle
el µP por dentro y como se
ejecutan las siguientes
instrucciones:
INC
MOV
LDA
STA
MVI
ADD
Esta es la arquitectura mas frecuente y con la que vamos a trabajar.
B
A,B
dir
dir
A,dato
B
Instrucciones de salto: JMP
• En general las instrucciones que debe ejecutar un µP no ocupan lugares
consecutivos en la memoria de programa.
• Existen instrucciones de salto que hacen que la próxima instrucción a ejecutar este
en cualquier lugar de la memoria.
• Hay dos tipos de instrucciones de salto:
Salto incondicional
Salto condicional
Instrucciones de salto incondicional: No se debe cumplir ninguna condición para que
se ejecute el salto.
Si queremos seguir nuestro programa en la dirección 0100h.
La instrucción en asembler será:
JMP dir
di
donde dir esta formada por dos bytes.
E llenguaje
En
j d
de máquina:
á i
11000011
00000001
00000000
= C3h
= 00h
= 01h
((opcode)
d )
(dir parte baja)
(dir parte alta)
Instrucciones de salto condicional: JZ y JNZ
Son aquellas donde la dirección de la próxima instrucción depende del resultado
de la ultima operación de la ALU.
Ejemplos:
“saltar si dió cero”
En asembler:
JZ dir
En lenguaje de máquina:
dir_L
dir_H
11001011
= CBh (opcode)
(parte baja de dir)
(parte alta de dir)
Esta instrucción salta a la dirección dir si la última operación realizada por la ALU
dió cero, caso contrario ejecuta la instrucción que está en PC+3.
Otra instrucción de este tipo es la siguiente:
JNZ dir
Aquí el salto se produce si la última operación fue distinta de cero, en caso
contrario sigue en PC+3.
Resumen de las instrucciones vistas
ASSEMBLER
INC B
INC A
MVI A,dato
MVI B,dato
LDA dir
STA dir
ADD B
ADD C
MOV B,C
MOV C,B
MOV A,B
MOV B,A
DEC A
JMP dir
JZ dir
JNZ dir
HEXADECIMAL
04
3C
3E,dato
06,dato
3A,dir
32,dir
80
81
41
48
78
47
05
C3,dir
CB,dir
C2,dir
OPERACIÓN
B  B+1
A  A+1
A  dato
B  dato
A  (dir)
(*)
(dir)  A
AA
A+B
B
((*))
A  A+C
(*)
BC
CB
A B
B A
A  A-1
(*)
PC  dir
PC  dir si Z
Z=1,
1, PC  PC
PC+3
3 si Z
Z=00
PC  dir si Z=0, PC  PC+3 si Z=1
Nota1: dato tiene una longitud de 8 bits y dir de 16 bits
Nota2: las instrucciones con (*) modifican el estado del flag Z. Si el resultado de la última operación con
la ALU fue cero => Z=1 y si el resultado de la última operación con ALU fue distinto de cero => Z=0.
Detalle de un P con Memoria, E/S y
decodificación
Descargar