Está en la página 1de 39

El Computador

Descripción de alto nivel

1
Objetivos
El estudio a fondo de la arquitectura del
computador nos va a permitir:
● Evaluar el rendimiento
● Identificar cuellos de botella
● Identificar problemas de fiabilidad y como hacer
sistemas tolerantes a fallos

2
Generalidades
● Todos los computadores digitales modernos
siguen la arquitectura Von Neumann, cuyos
componentes principales son:
● Unidad Central de Procesamiento (CPU)
● Memoria
● Entradas/Salidas

3
Arquitectura von Neumann

Unidad
aritmético-
lógica

Dispositivos
Memoria
de E/S

Unidad de
control

4
Componentes de la
Arquitectura von Neumann
● CPU: Se descompone en una unidad de control
y una unidad aritmético lógica.
● Memoria: Sirve para almacenar tanto datos
como instrucciones.
● Entradas/Salidas: Permiten el intercambio de
datos con el mundo exterior.

5
Alternativas de Diseño:
Programación cableada
● Un circuito lógico puede diseñarse para llevar a
cabo una operación específica.
● Por cada dato de entrada, produce a su salida
la respuesta correspondiente.
● Cambiar la función del circuito implica “re-
cablear” el circuito.

Dato de Circuito Dato de


entrada Lógico Salida
Aritmético

6
Ejemplo:
Diseño de un sumador de 1 bit

7
Alternativas de diseño:
Programación por Software
● En lugar de tener un circuito diseñado
específicamente para una función, se puede diseñar
un circuito que mediante unas entradas de control
pueda realizar distintas operaciones con los datos de
entrada:

Código de Decodificador
instrucción de instrucción

Señales de control

Dato de Circuito Dato de


entrada Lógico Salida
Aritmético
8
Ventaja de la
programación por software
● No se hace necesario re-cablear el circuito para cada
nueva operación.
● El programa puede ser fácilmente alterado
simplemente cargando un nuevo programa en la
memoria.
● El programa mismo se almacena en la memoria junto
con los datos.
● Los datos de entrada pueden tomarse de la memoria
o de las entradas. Los datos de salida pueden
almacenarse en la memoria o enviarse a los
dispositivos de salida.
9
Modelo más detallado
CPU Memoria
0
PC 1
MAR 2
IR Bus del
MBR sistema
MAR = Memory Address Register
MBR = Memory Buffer Register AC instrucción
I/O AR = Input/Output Address Register
I/O BR = Input/Output Buffer Register I/O AR
PC = Program Counter
IR = Instruction Register ALU
AC = Accumulator I/O BR
ALU = Aritmetic-Logic Unit

Módulos de E/S
dato

Registros

2d-2
2d-1

10
Operación del computador
● El procesador opera realizando repetidamente
“ciclo de instrucción”.
● El ciclo de instrucción consta de 2 etapas:
● Fetch: Obtener una instrucción desde la memoria.
● Execution: Ejecutar la instrucción

Start Fetch Execution Stop

11
Fetch: Obtener la siguiente instrucción
● El registro contador de programa (PC) contiene
la dirección de memoria de la siguiente
instrucción a ejecutar.
● Se lee la instrucción de la posición indicada por
el PC y se trae al IR.
● El PC se incrementa
● Ciertas instrucciones pueden alterar el PC
también (ejecución no necesariamente
secuencial).
12
Execution: Ejecución de instrucción
● La unidad de control interpreta la instrucción
(binaria) almacenada en el IR.
● Se realiza la operación correspondiente.
Existen 4 tipos de operaciones:
➢ Transferencia procesador memoria
➢ Transferencia procesador E/S
➢ Operaciones aritmético-lógicas
➢ Operaciones de control

13
Ejemplo: Máquina hipotética

Formato de instrucción:
15 12 11 0

Opcode Address

Formato de enteros:
15 0

S Value

Bits de direcciones: d=12, 212 =4096


Espacio de memoria: 0..4095

14
Ejemplo: Programa y datos

Memoria
300 PC
300 1940
301 5941
302 2941

940 3
941 2

15
Ciclos de instrucción
● Muchos procesadores modernos ofrecen
instrucciones complejas, que pueden operar
sobre arreglos de datos (arrays, strings).
● Esto da lugar a que el proceso de ejecución
sea cíclico.

16
Diagrama de estados
del ciclo de instrucción

Leer Leer Escribir


Instr. Operando Resultado

Dir. Decod. Dir. Realizar Dir.


instr. Instr. Operando operación Resultado

17
Interrupciones
● El proceso normal de ejecución se puede
suspender para hacer que el procesador
atienda otros eventos:
➢ Errores de programa: Ejemplo división por cero, o
acceso a un área de memoria no permitida.
➢ Fallas en el hardware: Paridad de memoria
➢ Temporizador: Periódicamente se interrumpe el
procesador para llevar la hora y otras tareas del
sistema operativo.
➢ Entradas/Salidas: Utilizadas por los dispositivos
de E/S cuando requieren atención del procesador.
18
Uso de interrupciones
para operaciones de E/S
● Normalmente los dispositivos de E/S son
mucho más lentos que el procesador.
● Muchas veces los eventos de E/S ocurren
aleatoriamente, e.g. teclado, recepción de
paquetes, etc.
● Poner el procesador en un ciclo de espera es
ineficiente.
● Una interrupción permite que el procesador
atienda un dispositivo de E/S en el momento
que se genere un evento.
19
Ejemplo: Tarjeta de red
Eventos que se producen:
● Llega un paquete: Al momento de llegar un
paquete este se almacena temporalmente en
un buffer de la tarjeta. Si no se lee
oportunamente, la llegada del siguiente
paquete lo sobre-escribirá.
● Transmisión de paquetes: El procesador
escribe el paquete a transmitir en un buffer de
la tarjeta de red. Se debe esperar a que el
paquete haya sido transmitido antes de escribir
otro paquete en el buffer. 20
Illustración:
● Eventos en la tarjeta de red con y sin
interrupciones.

21
Interrupciones y el ciclo de instrucción
● Las interrupciones de hardware se transmiten
por medio de una señal del bus directamente al
procesador.
● La interrupción ocurre en cualquier instante de
tiempo – el procesador se encuentra
posiblemente ejecutando algún programa.
● El procesador debe atender la interrupción tan
pronto como sea posible.

22
Ciclo de instrucción modificado
Ciclo de interrupción

Ciclo de instrucción Intr


disabled?

Interrupt?
Start Fetch Execution
Intr
enabled?

Stop

23
Transferencia de control y
gestor de interrupciones
Si hay una interrupción, el procesador:
● Guarda el estado actual (PC,
registros, etc.) para poder continuar el programa
programa en la instrucción siguiente. en ejecución

● Carga en el contador de programa la


dirección de memoria de un “gestor de
interrupciones”, efectivamente
transfiriendo el control al gestor.
● Al concluir la atención de la gestor de
interrupción, se restaura el estado del interrupción

procesador.

24
Comparación de tiempos
● Sin interrupciones
● Con interrupciones

25
Múltiples interrupciones
● Existen un gran número de dispositivos de E/S
que pueden generar interrupciones.
● Excepciones del procesador.
● Interrupciones de software permitidas en
muchos procesadores (e.g. x86)

26
Ejemplo: Algunas de las
interrupciones en un PC

27
Gestión de Múltiples interrupciones
Cómo gestionar múltiples interrupciones?
● Atender una a la vez: Se ignoran otras interrupciones
hasta concluir la atención de la interrupción en curso.
Resulta inconveniente pues estos tiempos de espera
pueden afectar el desempeño de ciertos dispositivos.
● Permitir interrupciones anidadas: Un gestor de
interrupciones puede ser interrumpido para dar lugar a
atender una interrupción de mayor prioridad.
● Ilustración: Proceso de gestión de interrupciones
anidadas.

28
Entradas y Salidas
Los dispositivos de E/S se controlan de forma
muy similar a como se maneja la memoria:
● Una dirección de E/S determina el dispositivo
con el que se va a hacer la operación.
● Cada dispositivo internamente tiene registros
que pueden ser leídos o escritos según su
función.

29
Ejemplo: Puertos E/S en un PC

30
Entradas Salidas
Mapeadas en Memoria
● Algunos dispositivos de E/S aparecen como
parte de la memoria del sistema. El ejemplo
más frecuente son los controladores de video.
● Operaciones estándar de lectura/escritura en
memoria permiten controlar el dispositivo.

31
Transferencias Directas a Memoria
(DMA – Direct Memory Access)
● Para algunos tipos de dispositivos resulta
mucho más eficiente permitir que el dispositivo
transfiera datos directamente entre la memoria
del sistema y sus buffers internos.
● Ejemplos:
➢ Discos duros
➢ Controladores de sonido
➢ Algunas tarjetas de red

32
Medida de las prestaciones
de un sistema
Se usan varios parámetros para estimar el
desempeño de un determinado sistema:
● MIPS: Millions of Instructions Per Second
● CPI: Clocks per Instruction
● f: Clock frequency
Estos parámetros se relacionan así:

f
MIPS=
CPI

33
Ejemplo
● Se tiene un sistema con f=1GHz
● El programa ejecutado tiene la siguiente
mezcla de instrucciones:
Aritméticas (1 clock): 45000
Transferencia de datos (2 clock): 32000
Punto flotante (2 clock): 15000
Control (2 clock): 8000
● Determinar el CPI efectivo, la velocidad en
MIPS y el tiempo necesario para ejecutar el
programa.
34
CISC vs. RISC
Las arquitecturas CISC
● En la era de los 70s, mucho software era escrito en
lenguaje ensamblador.
● Los fabricantes de procesadores trataban de ofrecer
un lenguaje ensamblador poderoso:
● Conjunto amplio de instrucciones, e.g. para
manipulación de strings y vectores.
● Modos de direccionamiento ortogonales: Casi todas
las instrucciones podían usar todos los modos de
direccionamiento.
● Posteriormente este modelo se denominó CISC:
Complex Instruction Set Computing.
● Ejemplos: x86, 68k, IBM 360, VAX. 35
CISC vs. RISC
Transición a RISC
● Estudios en los 70s y 80s identificaron que la
mayoría de programas generados por los
compiladores utilizan solo un subconjunto de
las instrucciones de un procesador CISC.
● En algunos casos se observó que la instrucción
del procesador toma más tiempo que una
rutina implementada con instrucciones más
simples.

36
CISC vs. RISC
Primeros procesadores RISC
● Esto motivo el diseño de procesadores con un
conjunto de instrucciones simples.
● Esto facilita el diseño del procesador, y el
procesador resultante requiere menor número
de transistores y menos potencia.
● Estos diseños dieron origen al término
“Reduced Instruction Set Computing” (RISC)
● Ejemplos: DEC Alpha, ARM, MIPS, POWER,
PowerPC, SPARC, etc.
37
Características de procesadores
RISC
● Pocos formatos de instrucciones
● Gran número de registros de propósito general
● Modos de direccionamiento muy simples
● Operaciones aritmético/lógicas operan sobre
los registros.
● Se tienen instrucciones especiales para
transferencias a memoria (load/store)
● Esto da origen al uso del término “Load/Store
Architectures”.
38
Situación actual
● Las implementaciones modernas de la familia
x86 utilizan un conjunto de micro-operaciones
muy sencillo y muy optimizado.
● Las instrucciones de máquina son traducidas
por decodificadores internos. De esta forma se
mantiene la compatibilidad binaria.
● Una secuencia de instrucciones CISC da lugar
a una serie de micro-operaciones, muchas de
las cuales se pueden realizar en paralelo,
permitiendo así la implementación de
arquitecturas super-escalares. 39