C1_Intro

Anuncio
Estructura de
Computadores
Introducción

Perpectiva Histórica
 Pasado
y Presente
 Avances
Tecnológicos
Introducción

Primer computador Electrónico
 University
of Pennsylvania
 ENIAC (Electronic Numerical Integrator and
Calculator, 18.000 tubos al vacío).
Introducción

Ejemplo Tubos Vacío
 12AT7
amplificador 9-pin (medium-gain dual
triode vacuum tube).
Introducción

Transistor
 Tres
regiones semiconductoras
Introducción

Junio 1951, UNIVAC I
 Primer
Computador Comercial en EEUU
Introducción

En 1952 esta a la venta el primer computador IBM
computer (IBM 701), se venden 19 unidades.

En 1964 IBM anuncia System/360
Introducción
Un año después Digital Equipment
Corporation (DEC) PDP-8, el primer micro
computador comercial.
 En 1971 — Intel entrega el primer
microprocesador Intel 4004.

 CPU
de 4bits.
 Contiene 2.300 transistores.
Introducción

Intel 4004
Introducción

1976 Cray-1, el primer supercomputador
comercial.
Introducción

1977 personal computer, Apple IIe (Steve
Jobs y Steve Wozniak) inicia un estándar
en los computadores personales de bajo
costo y alto desempeño.

1981 primer computador portátil de la
historia, Osborne-1

Memoria era de 64 Kb.

Tenía una 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.

1981 primer computador portátil de la
historia, Osborne-1
Introducción

The Xerox Alto, inspiración Desktop
Introducción

Progreso en medio siglo.
Introducción

En la actualidad
 Intel
(Nehalem)
Introducción

En la actualidad
 Intel
(Nehalem)
Introducción

En la actualidad
 Intel
(Nehalem)
Introducción

En la actualidad
 AMD
Introducción

En la actualidad
 AMD
Introducción

En la actualidad
 AMD
Introducción

En la actualidad
 UltraSPARC
T2 (Niagara 2)
Introducción

En la actualidad
 IBM
Power 6
Introducción
Introducción

Placas Madres
Introducción

Crecimiento de DRAM(Dynamic Random
Access Memory)
Introducción

Reloj y Consumo.
Introducción

Crecimiento CPU
Introducción

Arquitectura de Computadores
 Coordinar
diferentes niveles de abstracción
con:
Cambios tecnológicos
 De programación.
 Aplicaciones.
 Sistemas Operativos.

Introducción

Arquitectura de Computadores
Aplicaciones
Compilador
Sistema Operativo
Assembler
Firmware
Repertorio de Instrucciones
Memoria Sistema Entrada/Salida
Camino de Datos y Control
Diseño Digital
Diseño Circuitos
Lógicos
Introducción

Arquitectura de Computadores
 Arquitectura
del repertorio de Instrucciones.
 Organización de Máquina.
Introducción

Arquitectura
Instrucciones
del
repertorio
de
 Vista
que poseen los diseñadores de
compiladores y sistemas operativos de un
computador.
 Establece
los
atributos
del
sistema
computacional vistos por el programador.
Introducción

La elección de la Arquitectura
repertorio se refleja en:
 La
organización del almacenamiento.
Tipos de Datos.
 Estructuras de Datos.
 Codificación y Representaciones.

 Repertorio
de Instrucciones.
 Formatos de Instrucciones
del
Introducción

La elección de la Arquitectura
repertorio se refleja en:
 Modos
del
de direccionamiento y formas de
acceder a los datos y a las instrucciones.
 Tratamiento
de Excepciones.
Introducción


El repertorio de instrucciones establece la
interfaz software-hardware.
Existen variados tipos de arquitecturas de
repertorios, las cuales han ido evolucionando en
el tiempo:
 Digital
Alpha.
 HP PA-RISC.
 Sun Sparc, UltraSPARC.
 SGI MIPS.
 Intel.
 Etc.
Introducción

Tipos de Repertorios
Se clasifican de acuerdo a cómo se
especifican los operandos de entrada y
salida.
 Una instrucción requiere especificar:

Donde se encuentran los operandos de entrada.
 La operación a realizar.
 Dónde se depositará el resultado,
 La próxima instrucción a realizar.

Introducción

Tipos de Repertorios
 Una
instrucción es una secuencia de unos y
ceros
Si el número de bits necesarios es menor o igual a
de una palabra de memoria, puede ensamblarse
los distintos campos en una celda de memoria.
 Si el número de bits es mayor, puede emplearse
dos o más palabras para especificar una
instrucción (tendrá que accesarse en más de una
oportunidad a la memoria para procesar la
instrucción).

Introducción

Tipos de Repertorios
 Suele
emplearse una notación simbólica para
describir los campos de la instrucción.
 Se
describe cada instrucción en una línea con
los campos separados por espacios y pueden
incluirse comentarios (lenguaje simbólico de
máquina o assembler)

Operación op1, op1 ;comentario
Introducción

Tipos de Repertorios. Ejemplos:
 Máquinas

de Stack
add M[tope-1] ⇐ M[tope-1] + M[tope] ; tope--;
Suele solo especificar la operación, se asume
que los operandos están en posiciones fijas de
memoria.
Tope pila
Memoria
Operando 1
Operando 2
…
…
…
Introducción

Tipos de Repertorios Ejemplos
 Máquinas
add A
 add x(A)

con acumulador
acc ⇐ acc + M[A]
acc ⇐ acc + M[A + x]
Registro
especial
acumulador
denominado
Introducción

Tipos de Repertorios Ejemplos
 Máquinas
de Registro-Memoria
add opA, opB
 add opA, opB, opC

opA ⇐ opA + opB
opA ⇐ opB + opC
Los operandos pueden ser direcciones
de memoria o registros internos.
Introducción

Tipos de Repertorios Ejemplos
 Máquinas
de Carga-Almacenamiento
add Ra, Rb, Rc
 load Ra, Rb
 store Ra, Rb

Ra ⇐ Rb + Rc
Ra ⇐ M[Rb]
M[Rb] ⇐ Ra
Las
operaciones
de
solamente entre registros.
efectúas
Introducción

Tipos de Repertorios
 Las
diferentes arquitecturas de repertorios
suelen compararse, observando:
El número de bytes por instrucción.
 El número de instrucciones que se requieren para
efectuar una acción determinada.
 El número de ciclos de reloj por instrucción

Introducción

Tipos de Repertorios
 Ejemplo,
para realizar C = A + B
Siendo A, B, C variables en memoria se requieren
las siguientes secuencias de instrucciones
dependiendo del tipo de repertorio:
Máquina Stack:




Push A
Push B
Add
Pop C
; tope++,M[tope] = M[A]
; tope++, M[tope] = M[B]
; M[tope-1] += M[tope], tope-; M[C] = M[tope], tope—
Introducción

Tipos de Repertorios
 Ejemplo,
para realizar C = A + B
Máquina con acumulador
LoadA
; acc = M[A]
Add B
; acc = acc + M[B]
Store C
; M[C] = acc
Introducción

Tipos de Repertorios
 Ejemplo,
para realizar C = A + B
Máquina con operandos registro-memoria
Load R1, A
; R1 = M[A]
Add R1, B
; R1 = R1 + M[B]
Store R1, C
; M[C] = R1
Introducción

Tipos de Repertorios
 Ejemplo,
para realizar C = A + B
Máquina
con
almacenamiento
Load R1, A
Load R2, B
Add R3, R1, R2
Store R3, C
registros
; R1 = M[A]
; R2 = M[B]
; R3 = R1 + R2
; M[C] = R3
carga-
Introducción

Instrucciones típicas de un repertorio
 Son
las operaciones que se encuentran en
casi todos los repertorios de instrucciones.
 No todas están presentes en un repertorio
determinado.
 Si no están pueden implementarse con las
primitivas existentes.
Introducción

Instrucciones típicas de un repertorio
 Movimientos
de Datos:
Cargar registro desde la memoria.
 Almacenar registro en la memoria.
 Movimiento entre celdas de memoria.
 Movimiento entre registros.
 Desde registro hacia dispositivo de salida (output).
 Desde dispositivo de entrada hacia registro (input).
 Push, pop. Operaciones en stack (pila).

Introducción

Instrucciones típicas de un repertorio
 Aritméticas:
Suma, resta, multiplicación, división. En binario,
con y sin signo.
 Suma, resta, multiplicación, división. En BCD, con
y sin signo.
 Suma, resta, multiplicación, división. En punto
flotante (reales binarios), con y sin signo.
 Suma, resta, multiplicación, división de precisión
extendida. En binario, con y sin signo.

Introducción

Instrucciones típicas de un repertorio
 Corrimientos:
Aritméticos hacia la izquierda y derecha.
 Lógicos hacia la izquierda y derecha.
 Rotaciones hacia la izquierda y derecha.

Introducción

Instrucciones típicas de un repertorio
 Control
de Secuencia de ejecución:
Comparaciones.
 Saltos condicionales e incondicionales.
 Bifurcaciones condicionales.

Introducción

Instrucciones típicas de un repertorio
 Enlace

a Subrutinas:
Llamado y retorno de subrutinas.
 Interrupciones:

Seteo del sistema de prioridades, habilitación y
deshabilitación de las interrupciones, retorno de
interrupciones enmascaradas y no enmascaradas.
 Sincronización:

Test and set. Operación para manejar procesos.
Introducción

Instrucciones típicas de un repertorio
 Control

del procesador:
Halt, manejo de memoria virtual y caché, llamados
al sistema, entrada y salida de modo supervisor.
 String:

Traducir, buscar, etc.
 Gráficas:

Operaciones para el manejo gráfico.
Introducción

Instrucciones
típicas
de un repertorio
 Estadística
de
la
frecuencia de uso de
instrucciones de un
procesador Intel(8086).
(Justifica empíricamente
los
repertorios
reducidos
de
instrucciones (RISC) ).
load
22 %
bifurcación condicional
20 %
compare
16 %
store
12 %
add
8%
and
6%
sub
5%
movimiento entre registros
4%
llamados a subrutinas
1%
retornos de subrutinas
1%
Introducción

Modos de Direccionamiento
(no todos están presentes en los diferentes repertorios)
Modo
Ejemplo
Significado
Registro
Add R4, R3
R4 ⇐ R4 + R3
Inmediato
Add R4, #3
R4 ⇐ R4 + 3
Desplazamiento
Add R4, 100(R1)
R4 ⇐ R4 + M[100 + R1]
Registro indirecto
Add R4, (R1)
R4 ⇐ R4 + M[R1]
Indice / Base
Add R3, (R1+R2)
R3 ⇐ R3 + M[R1 + R2]
Directo o absoluto
Add R1, (1001)
R1⇐ R1 + M[1001]
Introducción

Modos de Direccionamiento
(no todos están presentes en los diferentes repertorios)
Modo
Ejemplo
Significado
Memoria indirecto
Add R1, @(R3)
R1 ⇐ R1+ M[M[R3]]
Auto-incremento
Add R1, (R2)+
R1⇐ R1 + M[R2]; R2 ⇐ R2
+d
Auto-decremento
Add R1, –(R2)
R2 ⇐ R2 – d; R1 ⇐ R1+
M[R2]
Escalado
Add R1, 100(R2)[R3]
R1⇐R1+ M[100+R2+R3*d]
Introducción

Uso de Registros.
 Todas
las máquinas modernas usan múltiples
registros.
 Los registros son más rápidos que la memoria
principal y que la memoria cache.
 Permiten
mantener variables de uso
frecuente, rápidamente accesibles reduciendo
los accesos a memoria
Introducción

Uso de Registros.
 En
el lenguaje C existe la posibilidad de
indicar al compilador cuales variables deben
ser almacenadas en registros ( se agrega la
palabra register a variable).
 Se requiere menos bits para especificar
registros de direcciones de memoria.
 Debido a técnicas de segmentación suelen
emplearse
repertorios
tipo
cargaalmacenamiento.
Introducción

Estadística de uso
direccionamiento.
de
modos
A
de
través de mediciones, en máquinas que
tienen todos los modos de direccionamiento,
y con diversos programas, se llegó a que:
42% de los modos usados son con offset.
 33% inmediatos.
 13% son con registro indirecto.
 12% de otros modos.

Introducción

Organización de Máquina
 Describe
la forma en que están organizados:
Flujos de datos.
 La estructura del control.
 La ejecución de microinstrucciones.
 Diseño lógico.
 Implementación física.

Introducción

Organización de Máquina
 Desde
un punto de vista del diseñador lógico,
interesan:
Las capacidades y comportamiento característico
de
las
principales
unidades
funcionales.
(Registros, ALU, Shifters, Unidad de control ...)
 Las formas en que esas componentes están
interconectadas.
 Los flujos de información entre las componentes.

Introducción

Organización de Máquina
 Desde
un punto de vista del diseñador lógico,
interesan:
Medios lógicos por los cuales se controlan los
flujos de datos.
 Cómo las unidades funcionales (o recursos)
realizan el repertorio de instrucciones.
 Lenguaje de transferencia entre registros.

Introducción

Organización de Máquina
 Todos
los computadores consisten de 5
partes:

Procesador:
Camino de datos.
 Control.

Memoria
 Dispositivo de entrada
 Dispositivo de salida

Introducción

Niveles de Representación
Lenguaje C
Assembler MIPS
Lenguaje Máquina
Introducción

Niveles de Representación
 Programación
Lenguaje C
Diseñado considerando que sus elementos
pudieran
se
eficientemente
traducidos
a
assembler.
 Se verá como se desglosa cada instrucción de C
mediante una o varias instrucciones de un
determinado assembler.

Introducción

Niveles de Representación
 Programación
Assembler.
Representación simbólica de la codificación binaria
de las instrucciones o lenguaje de máquina
 El procesador decodifica los campos binarios y
ejecuta la secuencia de transferencias que
realizan las acciones que interpretan la instrucción

Introducción
Programa 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 assembler (para MIPS)
swap: sll $2, $5, 2
add $2, $4,$2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
Código Máquina (object code) (para MIPS)
000000 00000 00101 0001000010000000
000000 00100 00010 0001000000100000
Descargar