Universidad Nacional de Catamarca Facultad de Ciencias Exactas … · 2016-06-04 · Von Neumann...

Post on 24-Jun-2020

0 views 0 download

transcript

Universidad Nacional de Catamarca

Facultad de Ciencias Exactas y Naturales

CICLO PROFESORADO EN COMPUTACIÓN

San Miguel de Tucumán

ARTICULACIÓN CURRICULAR II

PARTE I: ARQUITECTURA DEL PROCESADOR

Clase 4

Estructura de una computadora

Jerarquía de Niveles

Ing. Georgina Inés Cerúsico

Estructura de una Computadora

Máquina de von Neumann

Jerarquía de Niveles

Inicios de la computación

Turing y Church sientan las bases teóricas de la

computación

Máquina de Turing

Máquina teórica compuesta por una cinta y una

cabeza que puede leer y grabar símbolos en ella.

Un conjunto finito de estados

Un programa “cableado” del tipo (condición, acción)

Máquina universal de Turing

Máquina (teórica) capaz de simular el

comportamiento de cualquier máquina (de

Turing) a partir de un programa ingresado en

la cinta

El modelo de von Neumann

Antes: programar era

conectar cables…

Hacer programas era

más una cuestión de

ingeniería electrónica

Cada vez que había

que calcular algo

distinto había que

reconectar todo.

Como vemos en la

fotografía, las

encargadas de

programar las primeras

computadoras eran

mujeres.

Von Neumann – Eckert - Mauchly

1903 – 1957, Matemático

En 1944, el Proyecto ENIAC (una máquina de propósito

general, limitada por una pequeña cantidad de memoria

y por la dificultad de programación) atrajo a von

Neumann. El grupo formado por los Ing. Prespert Eckert

y John Mauchly quería mejorar el proceso de

introducción de los programas y se planteó la posibilidad

de guardarlos codificados como números. Von

Neumann ayudó a cristalizar estas ideas y escribió un

informe proponiendo una máquina con el programa

almacenado llamado EDVAC.

Se publicó y publicitó la idea de programa almacenado

en memoria, en un informe con el nombre de von

Neumann, mientras que los de Eckert y Mauchly, fueron

omitidos.

Esto sirvió de base para el término de uso habitual

“máquina von Neumann”, que para muchos autores

otorga demasiado protagonismo a von Neumann, y

demasiado poco a los ingenieros Eckert y Mauchly, que

trabajaron en las máquinas.

Ideas publicitadas por von Neumann

Los datos y programas se almacenan en una

misma memoria de lectura-escritura

Los contenidos de esta memoria se

direccionan indicando su posición sin

importar su tipo

Ejecución en secuencia (salvo que se indique

lo contrario)

Representación Binaria

Computadora

Memoria

Principal

Entrada

Salida

Sistema de

interconexión

Unidad

Central de

Proceso

CPU

Computador

Estructura (computadora)

Características principales

3 componentes principales:

CPU:

• Unidad de Control, Unidad aritmético lógica (ALU), Registros

Memoria principal:

• Almacena programas y datos

Sistema de Entrada/Salida

Procesamiento secuencial de instrucciones

Datos binarios

Un sistema de interconexión

Conecta la memoria y unidad de control

Fuerza la alternación entre ciclos de lectura y ejecución

Computer Unidad

Aritmética y

Lógica

Unidad

de

Control

Interconexión

Interna de la CPU

Registros

CPU

I/O

Memory

System

Bus

CPU

Estructura (CPU)

CPU

Unidad de Control (UC)

Controla todos los componentes

Interpreta instrucciones

Decodifica y Ejecuta instrucciones. Transforma instrucciones en órdenes a otros componentes

Puede ser programada por hardware (cableada) y “microprogramada” (varias microinstrucciones por instrucción)

Unidad Aritmético Lógica (ALU)

Realiza operaciones matemáticas y lógicas

Sumas, restas, multiplicaciones

And, Or, Xor

Corrimientos

CPU

Registros

Almacenan datos binarios, acceso rápido

De tamaño fijo

De propósito general (programas) o específicos (acumulador, program counter, puntero a memoria, etc.)

DataPath (Camino de datos)

Red interna que comunica la UC con las otras unidades y registros

Mueve datos entre los diferentes componentes

Controlada por un reloj.

Estructura de una máquina von Neumann

Registros PC Contador de Programa

IR Registro de Instrucción

AC Acumulador

DR Registro de Datos

AR Registro de Dirección

TR Registro temporal

INPR Registro de entrada

OUTR Registro de salida

1. Búsqueda: Recuperar la

siguiente instrucción

desde memoria

(apuntada por el program

counter) y luego

incrementar el program

counter para que

indique donde se

encuentra la siguiente

instrucción.

2. Decodificación:

Decodificar el patrón

de bits en el registro de

instrucción IR. Y

Buscar los operandos

que intervienen en la

operación

3. Ejecución: Ejecutar la

instrucción indicada en el

registro de instrucción IR.

Ciclo de instrucción

Ciclo de Ejecución

1. UC obtiene la próxima instrucción de

memoria (usando el registro PC).

2. Se incrementa el PC.

3. La instrucción es decodificada a un

lenguaje que entiende la ALU

(cuando se trata de una operación

aritmética o lógica).

4. Obtiene de memoria los operandos

requeridos por la operación.

5. La ALU ejecuta y deja los resultados

en registros o en memoria.

6. Repetir paso 1.

La unidad de control levanta la próxima instrucción de memoria usando el “contador de programa” (o RPI) que dice en qué dirección está la próxima instrucción.

Ciclo de ejecución

La instrucción es decodificada a un lenguaje que entiende la ALU (unidad aritmética lógica).

Ciclo de ejecución

Cada operando requerido para ejecutar es levantado de la memoria principal y ubicado en registros dentro de la CPU.

Ciclo de ejecución

La ALU ejecuta la instrucción y coloca los resultados en registros o en memoria.

Ciclo de ejecución

Tipos de Operaciones

Procesador-memoria

Transferencia de datos entre la CPU y la memoria

Procesador-E/S

Transferencia de datos entre la CPU y un módulo de E/S

Procesamiento de datos

Alguna operación aritmética o lógica sobre los datos

Control

Alteración de la secuencia de operaciones

Ej.: jump, call

Formatos de Instrucción

I Código de Operación Dirección Cód. De Operación del 000 al 110

15 14 12 11 0

a) Instrucciones de Referencia a memoria

0 1 1 1 Operación de registro Cód. De Operación = 111, I = 0

15 12 11 0

b) Instrucciones de referencia a registro

1 1 1 1 Operación de I/O Cód. De Operación = 111, I = 1

15 12 11 0

c) Instrucciones de entrada salida (I/O)

La Unidad de Control interpreta el código binario de

la instrucción y procede a ejecutarla mediante una

secuencia de microoperaciones.

Por ejemplo para la instrucción:

AND (operación lógica AND)

DR ← M[AR]

AC ← AC ˄ DR

Microoperaciones

Modelo de von Neumann

Bus del Sistema

Una posible configuración

Buses

Una vía comunicación que conecta 2 o más

dispositivos

En general “broadcast” (todos lo ven)

En general agrupados

Varios canales en un grupo

Ej: Data bus de 32 bits, son 32 canales de 1 bit

Data Bus: Bus de Datos

Transfieren información

Su tamaño es un punto clave en la

performance del sistema

8, 16, 32, 64 bits

Address bus: Bus de dirección

Identifican la fuente o destino de un dato

Ej: la CPU necesita leer una instrucción

(dato) de una locación en memoria

Su tamaño determina la capacidad máxima

de memoria del sistema

Ej: el Intel 8080 tiene 16 bit => 64kb de espacio

direccionable

Control Bus: Bus de control

Control y sincronización

Señal de lectura escritura a memoria

Señales del reloj

Solicitud de interrupción

- De Acumulador único: la CPU cuenta con AC para realizar las operaciones.

ADD X (X es la dirección del operando)

AC ← AC + M[X]

- De Registro general: la CPU cuenta con un conjunto de registros para realizar las operaciones.

ADD R1,R2,R3 ≡ R1 ← R2 + R3

ADD R1,R2 ≡ R1 ← R1 + R2

- De Pila: la CPU cuenta con una pila para realizar las operaciones.

PUSH X (escribirá la palabra de la dirección X, M[X] en la parte superior de la pila) ADD (lee los dos números superiores de la pila, los suma y escribe la suma en la pila)

Organización de la CPU

Instrucciones con:

Tres direcciones:

ADD R1,A,B R1 ← M[A] + M[B]

Dos direcciones:

MOV R1,A R1 ← M[A]

Una dirección

ADD B AC ← AC + M[B]

Cero direcciones

PUSH A TOP ← A (TOP: parte superior de la pila)

ADD TOP ← (A + B)

Formato de las instrucciones de

acuerdo al número de direcciones

Conjunto de Instrucciones

Un procesador típico posee:

- Instrucciones Aritméticas, lógicas y de corrimiento.

- Instrucciones para mover información hacia y desde

la memoria y los registros del procesador.

- Instrucciones de control del programa, junto con

instrucciones que verifiquen las condiciones de estado

(registro de banderas).

- Instrucciones de entrada y salida.

Se define como la dirección de memoria obtenida del cálculo, fijado mediante el modo de direccionamiento proporcionado. Es decir, es la dirección del operando en una instrucción.

- Modo de direccionamiento directo: La dirección efectiva es igual a la parte de dirección de la instrucción. - Modo de direccionamiento indirecto: El campo de dirección de la instrucción proporciona la dirección en que se almacena la dirección efectiva en la memoria.

Dirección Efectiva

0 ADD 29

Operando

14

29

+

+

AC

1 ADD 180

350

Operando

70

180

350

+

+

AC

Modo de direccionamiento Directo e

Indirecto

Configuración de entrada-salida

Impresora Interfaz

receptora

Terminal de

E/S

Interfaz de

comunicación

serial

Registros de

computadora y flip-flops

OUTR

AC

INPR

FGO

FGI

Teclado Interfaz

transmisora

Configuración de entrada-salida

Impresora Interfaz

receptora

Terminal de

E/S

Interfaz de

comunicación

serial

Registros de

computadora y flip-flops

OUTR

AC

INPR

FGO

FGI

Teclado Interfaz

transmisora

La bandera FGI se activa en

1 cuando hay disponible

información nueva en el

dispositivo de entrada. Y se

desactiva a 0 cuando la

computadora acepta la

información.

La computadora no carga un

nuevo caracter en OUTR

cuando FGO es 0 porque

esta condición indica que el

dispositivo de salida se

encuentra en el proceso de

imprimir el caracter.

Modelos no von Neumann

Cuello de von Neumann El procesador ejecuta una instrucción por vez…

Comunicación con Memoria y E/S empeoran la cosas..

Mejoras: Buses especializados

Interrupciones

Unidades de punto flotante

Caches,

Pipelines

Otro enfoque: apartarse de la arquitectura clásica de von Neumann.

Agregar procesadores es una posibilidad…

Modelos no von Neumann

A finales de los 60’ los sistemas de cómputo “high-

performance” fueron equipados con procesadores

duales para mejorar su desempeño.

En los 70’ supercomputadoras con 32

procesadores.

En los 80’ con 1000 procesadores

En 1999, IBM anunció su sistema “Blue Gene” que

contiene aprox. 1 millón de procesadores.

Procesadores superescalares

Modelos no von Neumann

Supersegmentación

El procesamiento paralelo es una de las formas de

mejorar el poder de cómputo.

Otras ideas más radicales:

Computadoras genéticas

Computadoras cuánticas

Sistemas Dataflow.

La jerarquía de niveles de una computadora

Una computadora es mucho más que chips.

Para que la computadora haga “algo” necesita software

Para escribir programas complejos se suele dividir el problema en módulos que resuelven problemas más simples

En las computadoras

Varios niveles de máquinas “virtuales”

Jerarquía de niveles

Cada capa es una máquina virtual que abstrae a las máquina del nivel inferior.

Las máquinas, en su nivel, “interpretan” sus instrucciones particulares, utilizando servicios de su capa inferior para implementarlas.

En última instancia los circuitos terminan haciendo el trabajo…

Jerarquía de niveles

Level 6: Nivel Usuario

Ejecución de programas e interfaces de usuario.

Pensamos en términos de la aplicación que se ejecuta

Level 5: Lenguajes de alto nivel

El nivel donde interactuamos cuando escribimos programas en Haskell, C, Java, etc.

Pensamos el algoritmo, TADs, etc.

Level 4: Nivel de Lenguaje Ensamblador

Lenguaje ensamblador, en general producido por

compiladores, o escrito directamente por programadores.

Muy cercano a la arquitectura de la computadora.

Level 3: Nivel del software del Sistema

Controla la ejecución de los procesos del sistema.

Protege los recursos.

Brinda servicios para acceder a dispositivos de E/S

Muchas instrucciones en Assembler pasan este nivel sin

modificación.

Jerarquía de niveles

Level 2: Nivel del Lenguaje de máquina

También conocido como nivel ISA

(Instruction Set Architecture).

Consiste en las instrucciones particulares

para la arquitectura de la máquina.

Los programas escritos en lenguaje de

máquina no necesitan compilación ni

ensamblado.

Jerarquía de niveles

Level 1: Nivel de Control

La unidad de control (UC) decodifica y ejecuta

instrucciones y mueve datos a través del

sistema.

Puede ser microprogramada o “cableada”.

• Un microprograma es un programa escrito en un

lenguaje de bajo nivel que puede ser

implementado en hardware.

• Las UC “cableadas” tienen hardware que ejecuta

directamente las instrucciones en código de

máquina.

Jerarquía de niveles

Level 0: Nivel de Lógica Digital

Aquí encontramos los circuitos digitales

(chips).

Son básicamente compuertas y cables.

Implementan la lógica matemática de los

niveles superiores.

Jerarquía de niveles

Links y Fuentes de información John von Neumann, “First Draft of a Report on the EDVAC”,

1946 (en sección download)

Computer Architecture home page: www.cs.wisc.edu/~arch/www

Null, L. and J. Lobur. The Essentials of Computer Organization and Architecture, Jones and Bartlett Publishers, Feb. 2003

Organización del Computador 1, Máquina de von Neumann

Jerarquía de Niveles

Organización y Arquitectura de Computadores. Stallings. W. 5ª Edición. Prentice Hall. 2000.

Arquitectura de Computadoras. Mano, M. Morris. Tercera Edición. Prentice-Hall Hispanoamericana. 1995.

Estructura y Diseño de Computadores. Patterson, David A. y Hennessy, John L. Vols. 1 y 2. Ed. Reverte. 2011.