2. Objetivos
Arquitecturas
von Neumann
Otras
Unidad Central de Procesamiento (CPU)
Responsabilidades
Requisitos
Partes de una CPU
ALU
Control & Decode
Registros
Electrónica y buses
Objetivos
M Bracho 2 Arquitectura de Computadores
3. M Bracho 3
Índice
Capítulo 3 : Arquitecturas
3. Arquitecturas
3.1 von Neumann
3.2 Harvard
3.3 Otras (Multiprocesador, Sistemas
distribuidos)
Arquitectura de Computadores
4. M Bracho 4
Introducción
Capítulo 3 : Arquitecturas
Arquitectura de Computadores
Corresponde a la estructura, organización, e
interconexión de las diversas partes de un
computador
Arquitectura de ComputadoresArquitectura de Computadores
Arquitectura del set de instrucciones
Cantidad de instrucciones
Tamaño de las instrucciones
Maneras de acceder a memoria
Organización funcional
Registros
Interconexión entre los componentes
Mecanísmos de Entrada/Salida (I/O)
Jerarquías de memoria
5. M Bracho 5
Introducción
Capítulo 3 : Arquitecturas
¿Qué hace un computador?
Almacenar Datos (leer - escribir).
Almacenar Programas.
Ejecutar operaciones sobre datos.
Ejecutar algoritmos.
Recibir nuevos datos.
Entregar resultados.
Arquitectura de Computadores
6. M Bracho 6
Índice
3.1 von Neumann3.1 von Neumann
3.2 Harvard
3.3 Otras (Multiprocesador, Sistemas
distribuidos)
Arquitectura de Computadores
Capítulo 3 : Arquitecturas
7. M Bracho 7
Introducción
Capítulo 3 : Arquitecturas –von Neumann
John von Neumann (se pronuncia «fon
noiman»)
(28 de diciembre de 1903 - 8 de febrero de 1957)
Fue un matemático húngaro-
estadounidense, de ascendencia judía.
Fue pionero de la computadora digital
moderna y de la aplicación de la teoría
operadora a la mecánica cuántica.
Participó del Proyecto Manhattan
Arquitectura de Computadores
8. M Bracho 8
Introducción
Trabajó con Eckert y Mauchly en la
Universidad de Pennsylvania, donde
publicó un artículo acerca del
almacenamiento de programas.
El concepto de programa almacenado
permitió la lectura de un programa
directamente desde la memoria del
computador, así como la ejecución de
las instrucciones del mismo sin
necesidad de un medio externo (cinta).
(Tomado de Wikipedia: John von Neumann)
Arquitectura de Computadores
Capítulo 3 : Arquitecturas –von Neumann
9. M Bracho 9
Arquitectura de von Neumann
John von Neumann propuso una manera de
estructurar un computador.
Almacenar Datos (leer - escribir).
Almacenar Programas.
Ejecutar operaciones sobre datos.
Ejecutar algoritmos.
Recibir nuevos datos.
Entregar resultados.
CPU
Memoria
Input/Output
Arquitectura de Computadores
Capítulo 3 : Arquitecturas –von Neumann
10. M Bracho 10
Arquitectura de von Neumann
CPU, Memoria e I/O se comunican a través
de Buses.
I/OMemoria
Address Bus
Control
CPU
Control
Data Bus
Arquitectura de Computadores
Capítulo 3 : Arquitecturas –von Neumann
11. M Bracho 11
Índice
3.1 von Neumann
3.2 Harvard3.2 Harvard
3.3 Otras (Multiprocesador, Sistemas
distribuidos)
Arquitectura de Computadores
Capítulo 3 : Arquitecturas
12. M Bracho 12
Arquitectura Harvard
Capítulo 3 : Arquitecturas - Harvard
Utiliza 2 memorias independientes
Datos
Instrucciones
El término proviene de la computadora
Harvard Mark I, que almacenaba las
instrucciones en cintas perforadas y los datos
en interruptores.
Arquitectura de Computadores
13. M Bracho 13
Arquitectura Harvard
Ventajas de la arquitectura Harvard
Instrucciones y datos de distinto largo
Memorias de distinto tamaño
bits de direccionamiento distintos
Memorias con distinta tecnología
Disminuyo el cuello de botella en el acceso a memoria
En controladores embebidos:
RAM para los datos
ROM para las instrucciones
Arquitectura de Computadores
Capítulo 3 : Arquitecturas - Comparación
14. M Bracho 14
Arquitectura de von Neumann
Capítulo 3 : Arquitecturas - Comparación
Ventajas de la arquitectura de von Neumann
Uso mas eficiente de la memoria
Jerarquía de memoria no requiere estar dividida en 2
Más simple arquitectónicamente
Un solo tipo de instrucciones para acceder a memoria
Un solo bus de datos y de direcciones
Una misma forma de acceso a datos e instrucciones
Mayor flexibilidad
Útil para el sistema operativo
Paginación a disco
Código automodificante
CPU con menos operaciones y mas flexible
Arquitectura de Computadores
15. M Bracho 15
Índice
3.1 von Neumann
3.2 Harvard
3.3 Otras (Multiprocesador, Sistemas3.3 Otras (Multiprocesador, Sistemas
distribuidos)distribuidos)
Arquitectura de Computadores
Capítulo 3 : Arquitecturas
16. M Bracho 16
Multiprocesador
Capítulo 3 : Arquitecturas
Arquitectura de Computadores
Procesador
Memoria
local *
Procesador
Memoria
local
Procesador
Memoria
local
Procesador
Memoria
local
Memoria Principal I/O
* Memoria Local: mantiene una copia local de una porción de la memoria principal
17. M Bracho 17
Multiprocesador
Capítulo 3 : Arquitecturas
Ventajas
Procesamiento paralelo
Cercanía entre CPUs
permite altas tasas de
transferencia de datos
Desventajas
No todo es paralelizable
Arquitectura de Computadores
Problemas de coherencia de memoria local con
memoria principal
18. M Bracho 18
Sistemas distribuidos
Arquitectura de Computadores
Red de interconexión
Procesador
Memoria
I/O
Procesador
Memoria
I/O
Procesador
Memoria
I/O
Capítulo 3 : Arquitecturas
19. M Bracho 19
Sistemas distribuidos
Arquitectura de Computadores
Red de interconexión
Cada nodo funciona como un computador
independiente
Se comunican por red
Distintas topologías: estrella, anillo, etc.
Capítulo 3 : Arquitecturas
20. M Bracho 20
Sistemas distribuidos
Arquitectura de Computadores
Ventajas
Procesamiento paralelo
Facilidad de incorporar y quitar
nodos del sistema
Desventajas
No todo es paralelizable
Overhead en la transferencia de datos es
considerablemente mayor
Problemas de coherencia de memorias
Capítulo 3 : Arquitecturas
21. M Bracho 21
Índice
Capítulo 4 : Unidad de Procesamiento Central (CPU)
4.Unidad de Central de Procesamiento (CPU)
4.1 Partes de la CPU.
4.2 Ciclo de la Instrucción.
4.3 Conjunto de Instrucciones y tipos de
funcionalidad.
4.4 Diseño de una CPU básica.
4.5 CISC/RISC.
4.6 Modos de direccionamiento.
4.7 Instrucciones en lenguaje de máquina.
4.8 Subrutinas y Manejo de Stack.
4.9 Interrupciones de software y hadware.
Arquitectura de Computadores
22. M Bracho 22
Introducción
Capítulo 4 : Unidad de Procesamiento Central (CPU)
Arquitectura de Computadores
Componente principal de un computador,
encargado del control de flujo, decodificación
y ejecución de instrucciones, y
procesamiento y transferencia de datos.
Cerebro del computador
Unidad Central de ProcesamientoUnidad Central de Procesamiento
(CPU o procesador)(CPU o procesador)
23. M Bracho 23
Índice
Capítulo 4 : Unidad de Procesamiento Central (CPU)
4.1 Partes de la CPU.
4.2 Ciclo de la Instrucción.
4.3 Conjunto de Instrucciones y tipos de
funcionalidad.
4.4 Diseño de una CPU básica.
4.5 CISC/RISC.
4.6 Modos de direccionamiento.
4.7 Instrucciones en lenguaje de máquina.
4.8 Subrutinas y Manejo de Stack.
4.9 Interrupciones de software y hadware.
Arquitectura de Computadores
24. M Bracho 24
Partes de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU)
Responsabilidades
Ejecutar Operaciones y Algoritmos
Controlar Flujo del Programa
Controlar Circuitos Internos
Arquitectura de Computadores
25. M Bracho 25
9
00
01 1100011001
02 1110001010
03 1110000000
04 0110011000
05 0000011000
06 0001111000
07 0000000100
08 1111000000
09 0000000101
0A 0000000000
Partes de la CPU
Requisitos:
Procesar instrucción
Leer datos
Almacenar
Temporalmente los
datos
ALU – FPU
Almacenar
Resultados
Capítulo 4 : Unidad de Procesamiento Central (CPU)
1101110111Load (7h)
4
5
Arquitectura de Computadores
0000001001
9
ALUALU
MemoriaEjecutar Operaciones y Algoritmos
26. 00
01
02
03
04 0110011000
05 0000011000
06 0001111000
07 0000000100
08 1111000000
09 0000000101
0A 0000000000
1110000000
MOVE(0Ah)
M Bracho 26
1110001010
1100011001ADD(09h)
Partes de la CPU
Ej. programa anterior.
LOAD (07h)
ADD (09h)
MOVE(0Ah)
GOTO(08h)
Capítulo 4 : Unidad de Procesamiento Central (CPU)
1101110111LOAD (07h)
4
5
ALUALU
9 Requisitos
Instruction Pointer
Mecanismos de Salto
Arquitectura de Computadores
9
GOTO(08h)
0000001001
Control de Flujo
Memoria
27. M Bracho 27
00 LOAD (07h)
01 ADD(09h)
02 MOVE(0Ah)
03 GOTO(08h)
04 0110011000
05 0000011000
06 0001111000
07 0000000100
08 1111000000
09 0000000101
0A 0000000000
Partes de la CPU
Ej. implementación
Capítulo 4 : Unidad de Procesamiento Central (CPU)
memoria
m
u
x
A
L
U
0001111000
registro
Circuitos internos
Requisitos
Buses internos.
Señales de control.
ALU (función)
Mux
Registros (Load,etc)
Contador (Inc,
Load,etc)
00000000
contador
Arquitectura de Computadores
28. M Bracho 28
Partes de la CPU
Control & Decode procesa las instrucciones.
ROM
Espacio de Direccionamiento determina cantidad de
instrucciones
Las salidas son señales de control para ejecutar
una instrucción.
Capítulo 4 : Unidad de Procesamiento Central (CPU)
Control & DecodeControl & Decode
Instrucción
de k bits
n señales de
control para
la instrucción
2k
palabras
n bits por palabra
Arquitectura de Computadores
29. M Bracho 29
Partes de la CPU
Registros de la CPURegistros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU)
Arquitectura de Computadores
30. M Bracho 30
Registros de la CPU
Un procesador incluye:
registros visibles para el usuario
registros de control/estado.
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
Registros Visibles.
Pueden referenciarse en las instrucciones.
Se clasifican en:
Uso general.
Datos.
Direcciones.
Códigos de Condición
Arquitectura de Computadores
31. M Bracho 31
Registros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
¿Cuántos registros de propósito general?
Óptimo entre 8 y 32
Pocos registros demasiados accesos a memoria.
Muchos registros no reducen considerablemente las
referencias a memoria
Muchos registros CPU más compleja.
Arquitectura de Computadores
32. M Bracho 32
Registros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
¿De cuántos bits deben ser los registros?
Deben ser de un número suficiente tal que se
puedan manejar las direcciones a memoria.
Además deben ser capaces de manejar una
palabra completa.
A veces se combinan dos registros para
conformar uno solo.
Arquitectura de Computadores
33. M Bracho 33
Registros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
Registros Control/Estado.
controlar el funcionamiento de la CPU
PC = program counter: contiene la dirección de la
instrucción a captar
IR = instruction register: contiene la última
instrucción captada
MAR = memory address register: contiene la
dirección de una posición de memoria.
MBR = memory buffer register: contiene la palabra
de datos a escribir en memoria, o la palabra leída
más recientemente
Arquitectura de Computadores
34. M Bracho 34
Registros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
Registros Control/Estado.
Adicionalmente se cuenta con PSW = program
status word:
Signo: contiene elbit de signo del resultado de última
operación
Cero: puesto a uno cuando el resultado es 0
Acarreo: puesto a uno si en la suma hay acarreo o
en la resta hay un adeudo del bit más significativo
Igual: puesto a uno si el el resultado de una
comparación lógica es la igualdad
Desbordamiento: Usado para indicar
desbordamiento aritmético
Arquitectura de Computadores
35. M Bracho 35
Registros de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU) – Partes de la CPU
Registros Control/Estado.
Adicionalmente se cuenta con PSW = program
status word:
(continuación)
Interrupciones: usado para permitir o inhabilitar
interrupciones
Supervisor: indica si la CPU funciona en modo
supervisor o usuario. Únicamente en modo
supervisor se pueden ejecutar ciertas instrucciones
privilegiadas y se puede acceder a ciertas áreas de
memoria
Arquitectura de Computadores
36. M Bracho 36
00 LOAD (07)
01 ADD(09)
02 GOTO(0A)
03 1110000000
04 0110011000
05 0000011000
06 0001111000
07 0000000100
08 1111000000
09 0000000101
0A 0000000000
Partes de la CPU
Ej.
Implementación
modificado
Capítulo 4 : Unidad de Procesamiento Central (CPU)
memoria
m
u
x
A
L
U
0001111000
registro
00000000
contador
IRIR
Control &Control &
DecodeDecode
Señales de
Control
Arquitectura de Computadores
37. M Bracho 37
Partes de la CPU
Capítulo 4 : Unidad de Procesamiento Central (CPU)
Partes de la CPU.
Registros
Program Counter
Instruction Register
Uso general
ALU
FPU
Control & Decode
Buses
Circuitería
Arquitectura de Computadores
38. M Bracho 38
Resumen
Distintas arquitecturas
Partes de la CPU y sus funciones
Registros
Visibles
Control/Estado
ALU, FPU
Control & Decode
Decodificación de instrucciones
Señales de control
Buses Internos
Circuitería
Arquitectura de Computadores
Resumen
Notas del editor
Estructura:
Estructuran
Controlan
Funcionan
Organización:
Agrupan
Sincronizan (síncronos o asíncronos)
Interconexión:
Comunican
Conectan (buses o líneas dedicadas)
Todo esto enfocado en que el computador haga lo que tiene que hacer… (siguiente slide)
Teoría de conjuntos
Teoría ergódiga
Teoría de juegos
Economía
Estadística
Geometría
Análisis numérico
Mecánica cuántica
Ciencia de la Computación
Contribuyó en el desarrollo de los métodos de MonteCarlo
ENVIAC y después ENIAC
Instrucciones y datos en el mismo espacio de direccionamiento
Antes del programa almacenado las instrucciones estaban en cintas
Explicitar que datos e instrucciones están almacenados en la misma memoria
Explicar:
Qué es una CPU
el cerebro del computador
quien procesa las instrucciones
quien se encarga de orquestar, dirigir y controlar todo lo que pasa en un computador
Qué es IO
la forma como el computador interactúa con el exterior
simil a nuestro sistema sensorial y motriz
Qué son los buses
el medio a través del cual viaja la información entre componentes dentro de un computador
sistema nervioso
Explicar:
Un programa tiene dos tipos de información: instrucciones y datos.
Ejemplo en alto nivel:
Datos variables de un programa
Instrucciones operaciones y flujo
Ambas deben se almacenadas
Cada uno de estos es almacenado en una memoria independiente
Ej. DSPs, PICs
Explicar:
Los datos e instrucciones son manejados en base a palabras de un tamaño dado (dibujar en pizarrón dos ejemplos)
Qué es el cuello de botella y por qué ocurre en von Neumann
Explicar:
No requiero duplicar instrucciones (implementación y codificación)
SO puede marcar páginas como de datos o instrucciones
Puede mover los programas, tanto sus instrucciones como datos como bien le parezca por toda la memoria
Ej. de uso de procesamiento paralelo:
multiplicación de matrices, cálculo de FFT, etc.
Ej. de cálculos no paralelisables:
Fibonacci, factorial
Explicar concepto de coherencia en la memoria:
Qué pasa si un procesador modifica la memoria
cómo sabe otro procesador que su memoria local está obsoleta?
Cómo sabe a qué memoria ir a buscar los datos, su copia local o la principal?
Explicitar que la ALU y la memoria son elementos fundamentales para estos requisitos
Ya vimos los requisitos para ejecutar cada instrucción o necesidad.
Ahora bien, que requerimos para ejecutar este conjunto de instrucciones coherentemente y en orden?
Que circuito digital podemos usar para implementar el instruction pointer:
Contador
Que necesita ademas de contar?
Load (para los saltos)
HASTA AQUÍ LLEGUE EN LA CLASE. TODO EL RESTO DE LA PPT LO VI EN OTRA CLASE COMPLETA
ME TOMÓ DOS CLASES COMPLETAS PASAR ESTA PPT (en la segunda clase repasé las dos slides anteriores también a manera de contexto)
Finalmente, cómo orquestamos todo esto de manera sincronizada?
Introducir la pregunta “¿Quién genera las señales de control?”, siguiente diapositiva es de control & decode
Explicar en detalle:
Cómo el C&D toma una instrucción y genera las señales de control.
Dibujar una ROM en el pizarrón
Explicar que cada dirección corresponde a una instrucción, siendo la dirección la codificación (opcode) de la instrucción.
La palabra almacenada en esa dirección corresponde a las señales de control
La salida está cableado al resto de la CPU.
Dibujé en el pizarrón una ROM.
Expliqué en el pizarrón basándome en el siguiente ejemplo (que además ayuda a que empiecen a entender qué es una instrucción y cómo funcionan):
Asumamos que la palabra 11011xxxxxxxxx corresponde a la instrucción LOAD. Los primeros 5 bits, en este caso, corresponden al codigo de la instrucción (opcode). Son esos 5 bits los que determinan qué instrucción se va a ejecutar, y los siguientes bits corresponden a los parámetros de la instrucción (por ejemplo, en LOAD(07h) el 07h tendría que ir como parámetro).
Así, cada instrucción distinta tiene un opcode distinto, y la siempre que el opcode sea 11011 la CPU va a ejecutar la instrucción LOAD.
Ahora bien, estos bits del opcode entran como dirección al Control & Decode, de manera que cada opcode (instrucción) va a estar asociada a una palabra (fila) específica del C&D. Cada bit de salida de la ROM está conectado a las señales de control de los distintos componentes del computador. Es así como la palabra asociada a cada instrucción no es más que el conjunto de señales de control necesarioas para que la CPU ejecute lo que se le está pidiendo.
De esta forma, se podría entender como que es el C&D el que “sabe” leer las instrucciones y ejecutarlas. Sin embargo, realmente no tiene idea de lo que está pasando ni de lo que está haciendo. Sólo genera una salida preprogramada para cada entrada, y resulta que con esas salidas todo funciona de manera que, al final, se ejecuta la instrucción requerida.
Es donde se almacenan temporalmente los datos requeridos por la CPU, tanto para su control como para ejecutar cada instrucción
Número mágico, sacado de pruebas experimentales. Pruebas no se hacen simplemente sumando o multiplicando matrices, sino que usando distintas cargas reales, como cargas intensivas en cálculo numérico (Matlab), alto uso de I/O y red (servidores), uso de grandes cantidades de datos, juegos, etc.
Ejemplo con un registro muestra que el uso de un solo registro hace muy verboso el código y muy trabado de programar.
Al usar muuuuchos registros resulta que voy a tener registros que nunca voy a utilizar dado que no tengo tantas variables. Sin embargo, más registros implican más señales de control, un C&D más ancho, más circuitería, más complejidad para indicar el registro que quiero accesar, y finalmente lo que pierdo y complejizo es más que lo que gano con registros que, a la postre, nunca voy a usar.
Ejemplo: Ejecutar con un solo registro (A+B)/(B+A·C)
LOAD A
LOAD B no me sirve, se me perdió A
ADD B
STORE D guarda el resultado en la dirección D
LOAD A
MULT C
ADD B
STORE E
LOAD D
DIV E y recién aquí tengo el resultado
Por qué necesito un IR??? Como puedo neceistar accesar a memoria para buscar operandos de la instrucción, necesito guardar la instrucción en un registro independiente, de manera de permitir otros accesos a memoria. Si leyera la instrucción desde memoria, al ir a buscar un operando perdería la instrucción, por lo que debo guardarla en algún lugar mientras ejecuto toda la instrucción.