Download Intro

Document related concepts
no text concepts found
Transcript
ELO311
Estructuras de Computadores Digitales
Introducción
Tomás Arredondo Vidal
Objetivos del Curso
Introducción a los componentes principales de un
sistema de computación, como funcionan en conjunto
para ejecutar un programa y como se diseñan.
Aprender los elementos que determinan las
capacidades de sistemas computacionales.
Entender la interacción entre la arquitectura, el
hardware y el software de una computadora.
Para que como arquitectos y diseñadores de software
y hardware (compiladores, sistemas operativos, bases
de datos, sistemas embebidos, procesadores, ...)
podamos entender los efectos de diferentes diseños
en su capacidad y desempeño.
Conocimientos Previos
Escribir, compilar y correr programas en un lenguaje
como C, C++ o Java.
Como representar y operar en números positivos y
negativos binarios.
Diseño y análisis de componentes combinacionales y
secuenciales (álgebra Booleana, minimización lógica,
decodificadores, multiplexores, latches y flipflops,
registros, maquinas de estados finitos Mealy/Moore,
asignación de estados y minimización etc.).
Hardware: Algunas Definiciones
MSI: Medium Scale Integration, tipo de integración de
chip capaz de albergar entre 10 y 500 transistores.
LSI: Large Scale Integration, tipo de integración de
chip capaz de albergar entre 1.000 y 10.000
transistores.
ULSI: Ultra Large Scale Integration, tipo de
integración de chip capaz de albergar sobre 10.000
circuitos.
VLSI: Very Large Scale Integration, tipo de
integración de chip capaz de albergar sobre 100.000
transistores.
Hoy en día prácticamente solo se utiliza el término
VLSI.
Hardware: Algunas Definiciones II
Die Size: Corresponde al largo y ancho del circuito en
la oblea de silicio que contiene muchos circuitos
integrados.
ASIC: Application Specific Integrated Circuit, circuito
diseñado para una aplicación específica en oposición
a los circuitos de propósito general como los
microprocesadores.
Síntesis lógica: el procesos por el cual las
descripciones algorítmicas de circuitos son
convertidas en un diseño de hardware. Ejemplos de
este proceso incluyen la síntesis de Lenguajes de
Descripción de Hardware (HDL) tales como VHDL y
Verilog. El resultado de un proceso de síntesis puede
ser un PAL, un FPGA o un ASIC.
Compilador de silicio (silicon compiler): un software
que a partir de una especificación del usuario genera
un circuito integrado.
Die
die
wafer
El Primer Computador Programable (Mecánico)
The Babbage
Difference Engine
(1832)
25,000 parts
cost: £17,470
Tubos al Vacío
Ejemplo
12AT7 amplificador 9-pin (medium-gain dual triode
vacuum tube).
ENIAC – El Primer Computador Electrónico (1946)
Maquina general programable (general purpose) y
por ende Turing complete (emulable por una
maquina de Turing) de la University of Pennsylvania.
ENIAC (Electronic Numerical Integrator and
Calculator, 18.000 tubos al vacío).
Primer Computador Comercial en EEUU
Junio 1951, UNIVAC I de la Remington Rand Corp fue
disenada pro J. Prespert Eckert y John Mauchly (los
inventores de la ENIAC).
Primer Transistor (point contact transistor)
Bardeem, Brattain, Shockley
(Bell Labs, 1948)
BJT: tres regiones semiconductoras
Suma de corrientes: IE = IB + IC
BJTs empaquetados
Primer Computador de Transistores
En 1953 se desarrollo en
University of Manchester el
primer computador con
transistores.
Tambor de
almacenamiento
magnético
Usaba un tambor como
almacenamiento de 64
palabras, requería de media
revolución (30ms/rev) para
acceder a cada palabra de
44 bits.
Usaba un acumulador y
tenia 200 point contact
transistors y 1300 diodos y
consumía 150 watts.
http://www.computer50.org/kgill/transistor/trans.html
Primer Microprocesador – Intel 4004
Primer CPU Comercial
Introducido en 1971 con
2300 transistores @ 1 MHz
Ancho de sus circuitos
de 10 micrones (1 pelo
humano = 100 micrones)
Wafers de 3” diametro, 5
capas
Busicom calculator
http://www.intel.com/museum/archives/4004.htm
Primer Supercomputador
En 1976 se introdujo el Cray-1, usando CPUs vectoriales @
80Mhz, datapath de 64bits, 8MB RAM, usaba alrededor de
200000 compuertas para obtener 136-250megaflops.
Primer Computador Personal Masivo
En 1977 se introduce la Apple II (Steve Jobs y Steve
Wozniak) inicia un estándar en los computadores
personales de bajo costo y alto desempeño.
Procesador MOS 6502 (4000 transistores), 64KB
máximo RAM, pantalla de 24x40 pixeles.
MOS 6502 en paquete DIP-40
IBM Personal Computer (PC)
Introducida como lo 5150 PC en 1981 bajo la direccion de
Don Estridge de la Entry Systems Division de IBM
Intel 8088 @ 4.77Mhz, 256KB de RAM, 5¼” floppy de
160KB (SSDD) o 360KB (DSDD), PC-DOS 1.0 o CP/M-86
Intel 8088: 8 bit data bus, 16 bit registers, bus direcciones
1MB (220 bits = 1048576 ), 29000 transistores
Usaba segmentos de 64KB
Primer Portatil
1981 primer computador portátil, Osborne-1
CPU: Zilog Z80 @ 4Mhz, RAM 64 KB, CP/M
Pantalla monocromática de 25 x 52 caracteres que medía 5 pulgadas.
Contaba con dos unidades de disco de 5.25 pulgadas (los discos
podían almacenar hasta 91Kb cada uno).
Tenía un puerto serial RS-232.
Un puerto para módem y un teclado desprendible.
Dimensiones eran: 32.5 x 50 x 36.5 cms.
Peso de casi 13 kilogramos.
Pentium 4
Introducido el 2000 tiene 43 millones de transistores y un core
Intel Nehalem
CPU Intel actual con 731 millones de transistores y
cuatro cores (núcleos)
AMD
Quad-Core Opteron Processors
SUN
UltraSPARC T2 (Niagara 2)
IBM
Power 6
Comparación de CPUs
Organización de la Máquina
Capacidades y características de las principales
unidades funcionales (FUs)
e.g., registros, ALU, multiplexores, memorias, ...
Como se interconectan esas unidades
e.g., buses
Lógica y las maneras en el cual
el flujo de información entre las
unidades funcionales se controla
La arquitectura de instrucciones o Instruction Set
Architecture (ISA)
Descripción de la máquina a nivel registros o Register
Transfer Level (RTL) machine description
Placa Madre de una PC Pentium4
Placa Madre de la Sun SPARCstation20
CPU es un TI SuperSPARCtm TMS390Z50
CPU RISC (Reduced Instruction Set Computing) @ 33Mhz
MBus Module
SuperSPARC
Floating-point Unit
L2
$
Integer Unit
Inst
Cache
Ref
MMU
Data
Cache
CC
MBus
L64852 MBus control
M-S Adapter
SBus
Store
Buffer
Bus Interface
DRAM
Controller
SBus
DMA
SBus
Cards
SCSI
Ethernet
STDIO
serial
kbd
mouse
audio
RTC
Boot PROM
Floppy
Impactos de los Avances en Tecnología
Procesador
capacidad lógica: incrementa 30% por año
performance:
2x cada 1.5 años
Frecuencia Reloj = 1 / Periodo
500 MHz Frecuencia = 2 nsec Periodo
1 GHz Frecuencia = 1 nsec Periodo
4 GHz Frecuencia = 250 psec Periodo
...etc...
Memoria
capacidad DRAM:
velocidad de memoria:
costo por bit:
2x cada 2 años
1.5x cada 10 años
baja aprox. 25% cada año
Disco
capacidad:
incrementa aprox. 60% cada año
Ley de Moore
En 1965, Gordon Moore, co-fundador de Intel observó que
el número de transistores en un chip se duplicaba cada 18
a 24 meses.
A partir de esta observación predijo que la tecnología de
semiconductores duplicaría su efectividad cada 18 meses.
Ley de Moore: DRAM
Ley de Moore: Reloj y Consumo
Ley de Moore: Tamaño
Ley de Moore: Velocidad de la CPU
Performance (SPEC Int)
10000
Intel Pentium 4/3000
DEC Alpha 21264A/667
DEC Alpha 21264/600
Intel Xeon/2000
1000
DEC Alpha 4/266
100
DEC AXP/500
DEC Alpha 5/500
DEC Alpha 5/300
IBM POWER 100
HP 9000/750
10
SUN-4/260
IBM RS6000
MIPS M2000
MIPS M/120
1
1987
1989
1991
1993
1995
Year
1997
1999
2001
2003
Ley de Moore: Velocidad de la CPU
Turing Machine: Modelo de una Computadora
En 1936 Alan Turing presento un modelo abstracto para
una maquina de computación llamada Turing Machine.
La Máquina de Turing a pesar de ser muy simple es capaz
de ejecutar (o simular) cualquier algoritmo computacional.
Una maquina que puede ejecutar los programas de
cualquier maquina de Turing se llama Universal Turing
Machine (o UTM).
Estudiando sus propiedades se pueden entender muchos
conceptos sobre la informática y la complejidad.
La Máquina de Turing consiste de:
una cinta con celdas (cells) en la cual se escriben símbolos
que la maquina puede leer y escribir uno a la vez
una cabeza (tape head) que puede leer o escribir símbolos y
puede moverse una celda a la vez a la izquierda o derecha
un registro con el estado (símbolo) mas reciente que fue leído
una tabla de acciones o transiciones (i.e. tabla de estados)
inicialmente parte en el start state y apunta al start cell
Alan Turing
Turing Machine: Modelo de una Computadora
Las operaciones están completamente determinadas por un conjunto
de instrucciones (una maquina de estados) como: “en el estado 42, si
se lee un 0, escribir un 1; si se lee un 1, moverse a la izquierda y
cambiar al estado 17”
En el paper original de Turing: “On computable numbers, with an
application to the Entscheidungsproblem (problema de decisión)”,
Turing se imagina no una maquina mecánica o eléctrica si no una
persona (“computador”) que ejecuta estas tareas manualmente.
Turing Machine: Modelo de una Computadora
Una computadora se llama Turing complete si es que puede calcular cualquier
función que una Máquina de Turing puede calcular.
Estas son las acciones de la Maquina (parecido al esquema Mealy)
Leer el símbolo en la celda actual
Buscar la regla asociada al estado actual y símbolo leído
Escribir un nuevo símbolo en la celda actual
Mover la cabeza de lectura a la izquierda o la derecha dependiendo del
estado actual y símbolo leído
Cambiar el estado actual
X:# / <<
Le
El formato de las transiciones es:
símbolo leído : símbolo escrito / dirección
#:# / <<
Ejemplo: Conversor de unario a binario
Alfabeto: 0, 1, A, X, #
Parte en el estado amarillo
#:1 / >>
X:X / <<
/ <<
X:X / >>
0:0 / >>
1:1 / >>
Convierte el numero de A’s (6) a su
representación binaria (110) correspondiente
http://www.cs.princeton.edu/introcs/74turing/
Rf
Li
0:1 / >>
1:0 / <<
Componentes de una Computadora
Processor
Control
Datapath
Devices
Memory
Input
Output
Dispositivo de Input Lee el Código Objeto
000000
000000
100011
100011
101011
101011
000000
Processor
Control
Datapath
Devices
Memory
Input
Output
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Código Objeto se Almacena en Memoria
Memory
Processor
Control
Datapath
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Output
Procesador Lee (Fetches) una Instrucción
Procesador lee una instrucción de la memoria
Memory
Processor
Control
Datapath
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Output
Control Decodifica la Instruccion
Control decodifica la instrucción para ver que
hacer con ese comando y datos
Processor
Devices
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
Output
Camino de Datos Ejecuta la Instrucción
Camino de datos (datapath) ejecuta la
instrucción siguiendo las direcciones de control
Processor
Devices
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
contents Reg #4 ADD contents Reg #2
results put in Reg #2
Output
Organizacion del Procesador
Control tiene que tener la
Habilidad de traer instrucciones de la memoria
Lógica para controlar la secuenciación de instrucciones
Lógica para generar señales que controlan el flujo de
información entre los componentes del camino de datos
Lógica para controlar las operaciones hechas por las
unidades funcionales del camino de datos
Camino de datos (Datapath) tiene que tener
Componentes – unidades funcionales (e.g., sumador) y
almacenamiento (e.g., registros) – necesarios para ejecutar
instrucciones
Componentes interconectados para que las instrucciones
puedan ser completadas
Capacidad de cargar y almacenar datos de la memoria
Como es el ciclo completo?
Memory
Processor
Control
Datapath
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Output
Como es el ciclo completo?
Memory
Processor
Control
Datapath
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Output
Leer
Exec
Decode
Datos de Output se Almacenan en Memoria
Al terminar el programa los datos de output
están en la memoria
Processor
Memory
Control
Datapath
Devices
Input
00000100010100000000000000000000
00000000010011110000000000000100
00000011111000000000000000001000
Output
Dispositivo de Output Saca Datos
Processor
Control
Datapath
Devices
Memory
Input
Output
00000100010100000000000000000000
00000000010011110000000000000100
00000011111000000000000000001000
Arquitectura del Set de Instructciones (ISA)
software
instruction set architecture
hardware
La descripción del interfaz que separa el
software y el hardware.
MIPS R3000 Instruction Set Architecture
El MIPS ISA se usa mucho en
sistemas embebidos (e.g. routers
Cisco, Sony Playstation), ~1/3 de los
procesadores RISC usan MIPS
Registers
R0 - R31
Categorías de Instrucciones
Load/Store
Computacional
Jump and Branch
Floating Point (Punto Flotante), CoProc.
Manejo de Memoria
Especial
PC
HI
LO
3 Formatos de Instrucciones: todos son de 32 bits ancho (hay un MIPS64)
OP
rs
rt
OP
rs
rt
OP
rd
sa
immediate
jump target
funct
Compiladores y Ensambladores de Programas
Programas de alto nivel (en C)
swap (int v[], int k)
(int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
)
Programa en assembly (para MIPS)
swap:
sll
add
lw
lw
sw
sw
jr
C compiler
$2, $5, 2
$2, $4,$2
$15, 0($2)
$16, 4($2)
$16, 0($2)
$15, 4($2)
$31
Código Maquina (object code) (para MIPS)
000000 00000 00101 0001000010000000
000000 00100 00010 0001000000100000
. . .
assembler
spim Assembler / Simulador y compilador lcc
spim es un assembler y simulador para MIPS
R2000/R3000
Provee un assembler, depurador y un grupo de servicios del
sistema operativo
Incluye un interfaz simple tipo terminal y otro grafico
xspim en UNIX
PCSpim en Windows
lcc es un compilador cruzado para generar código
assembler MIPS
Compiladores y Ensambladores de Programas
Programas de alto nivel (en C)
swap (int v[], int k)
. . .
C compiler
Programa en assembly (para MIPS)
swap:
uno a muchos
sll
add
lw
lw
sw
sw
jr
$2, $5, 2
$2, $4, $2
$15, 0($2)
$16, 4($2)
$16, 0($2)
$15, 4($2)
$31
uno a uno
Código Maquina (object code) (para MIPS)
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
assembler
Como se relacionan las diferentes piezas?
Aplicación
Sistema
Operativo
Compilador
Firmware
Instruction Set
Sistema Procesador de
Sistema de Architecture
Memoria Set de Instrucciones I/O
Datapath y Control
Diseño Digital
Diseño de Circuitos
Coordinación de muchas capas de abstracción
Con elementos que cambian rápidamente
Requiere de diseño, medición y evaluación
Referencias
David Patterson, John Hennessy, "Computer
Organization & Design", (segunda – cuarta edicion),
Morgan Kaufmann, CA. 2009
Material del curso CSE331 de Mary Jane Irving de
Penn State
www.wikipedia.org
www.cs.princeton.edu/introcs/74turing/
Material del curso ELO311 del Prof. Leopoldo Silva
Material del curso ELO311 del Prof. Rudy Malonnek