Tema 1: Introducción

Anuncio
Tema 1: Introducción
1
1.2. Jerarquía de niveles de un computador
¿Qué es un computador?
Sistema electrónico digital (binario) que procesa datos siguiendo
unas instrucciones almacenadas en su memoria
Es un sistema tan complejo que se estudia desde distintos puntos
de vista, mediante una jerarquía de niveles de abstracción.
Al principio solo había dos niveles (totalmente dependientes):
- Hardware: los circuitos digitales y su construcción.
- Software: los programas de instrucciones (lenguaje máquina).
2
Evolución del software
El software ha evolucionado desde programar con 0’s y 1’s hasta
los entornos gráficos de hoy en día.
Los pasos de esta evolución fueron la aparición de:
(1) Lenguaje máquina
(2) Lenguaje ensamblador
(3) Lenguaje de alto nivel
(4) Sistema operativo
(5) Aplicaciones
Veamos cada uno:
3
(1) Lenguaje máquina
El lenguaje que realmente entiende la máquina formado por ceros y
unos (números binarios).
P.e. programa de 7 instrucciones:
Formado por órdenes individuales: instrucciones.
ÆUna instrucción será un número binario almacenado en memoria.
P.e. “00000000100011100001100000100001”(la 2ª instrucción)
indica al computador que sume dos números.
4
(2) Lenguaje ensamblador
Programar usando números binarios es muy laborioso.
Se inventó notación simbólica (caracteres alfanuméricos) para
cada instrucción máquina, p.e. “add A, B, C”.
Al principio traducción a mano, pero luego se creó un software
traductor: el programa ensamblador .
P.e. el programador escribiría “add $2, $4, $2” y el ensamblador
traduciría esta notación a “00000000100011100001100000100001”.
Este lenguaje simbólico se llamó lenguaje ensamblador
swap:muli $2, $5,4
add $2, $4,$2
lw $16, 4($2)
sw $16, 0($2)
jr $31
[Programa en ensamblador]
5
(3) Lenguaje de alto nivel
Expresar resolución de problemas
ensamblador (ya lo comprobarán).
es
difícil
en
lenguaje
Fuerza al programador a pensar como funciona la máquina:
movimiento de datos, operaciones aritméticas y lógicas básicas y
cambios de secuencia de ejecución de instrucciones.
Solución: tener una notación de alto nivel (algorítmica) que se
traduzca a lenguaje ensamblador.
Programa traductor: compilador.
6
7
(4) Sistema operativo
(a) Con el desarrollo de la programación surgió la idea de reutilizar
programas para tareas rutinarias Æ bibliotecas de subrutinas.
Las primeras para entrada/salida de datos: controlar impresoras,
cintas magnéticas…
(b) Necesidad de programa independiente que supervisara la
ejecución del conjunto de programas.
Programa supervisor + bibliotecas de subrutinas de entrada/salida =
base de un sistema operativo (programa para la gestión de los
recursos del computador).
(5) Aplicaciones
Programas que realizan tratamientos específicos: procesadores de
texto, hojas de cálculo, bases de datos,…
8
Jerarquía de niveles para estudiar un computador
El modelo de computador que tenemos es:
Veamos cada uno de los niveles:
9
(1) Diseño de circuitos
Cómo implementar las puertas lógicas con transistores, diodos,
resistencias, y capacitores.
Se habla de diferentes tecnologías de circuitos integrados (familias
lógicas).
P.e. puerta NOR:
Se caracterizan los circuitos integrados por su fan-in, fan-out,
tiempo de respuesta…
10
(2) Diseño digital (FCI)
Conceptos de representación, síntesis y simulación de circuitos
digitales:
- Puertas lógicas.
- Bloques combinacionales y secuenciales.
- Sistemas secuenciales.
Se estudian los bloques digitales básicos a partir de los cuales se
diseña un procesador.
11
(3) Procesador del repertorio de instrucciones y subsistema de
entrada y salida
Da lugar al concepto de sistema digital complejo que ejecuta
instrucciones.
Estudio de formas de realizar la ruta de datos y la unidad de
control.
Se definen las etapas en que se divide la ejecución de las
instrucciones: descodificación, acceso a memoria, escritura en
registros…
También cómo realizar entrada/salida: sincronización
transferencia de datos procesador-controladores periféricos.
y
12
(4) Arquitectura del repertorio de instrucciones o nivel ISA
(Instruction Arquitecture Set)
Nivel más bajo al que se puede programar (nivel de lenguaje
máquina).
Interface entre el hardware y el software (nivel fundamental).
Elementos manejados en este nivel:
- Conjunto de instrucciones que ejecuta el procesador.
- Modos de direccionamiento de los operandos.
- Tipos de datos.
- Registros del procesador.
Con ellos se especificarán los programas que ejecutarán los niveles
inferiores.
13
(5) Sistema operativo
Este nivel es el que realiza la gestión de los recursos que ofrecen
los niveles inferiores del sistema computador: CPU, memoria…
Para obtener un uso fácil, eficiente, compartido y seguro de los
mismos: gestión de archivos, procesos, memoria virtual…
Proporciona a los usuarios una máquina más manejable.
14
(6) Compilador
Permite al programador expresar los programas en un lenguaje
cercano a su descripción algorítmica.
Traduce estos programas escritos en lenguajes de alto nivel a
programas especificados en lenguaje máquina.
15
(7) Aplicaciones
Programas que se ejecutan para realizar funciones útiles al
usuario: bases de datos, las hojas de cálculo o los procesadores de
texto.
Son programas escritos en lenguajes de alto nivel.
Su objetivo es crear un entorno amigable para el usuario del
sistema computador.
16
El modelo de computador que tenemos es:
17
¿Desde qué puntos de vista estudiaremos el computador en esta
asignatura?
(1) Arquitectura del repertorio de instrucciones
Estudiaremos:
(a) Cómo diseñar este nivel ‘mirando’ (en la jerarquía de niveles)
hacia:
- arriba: ‘sostener’ los lenguajes de alto nivel.
- abajo: fácil implementación hardware.
Es una cuestión de compromiso.
(b) Descripción de este nivel de una máquina en concreto: la
MIPS.
(c) Además escribirán programas de este nivel para la MIPS.
18
(2) Procesador del repertorio de instrucciones y subsistema de
entrada y salida
Estudiaremos:
(a) Cómo diseñar un procesador con circuitos lógicos (sumadores,
multiplexores, registros, memoria,…) que ejecute un repertorio de
instrucciones determinado (implementación del nivel ISA).
(b) Organización de la memoria.
(c) Gestión de la entrada/salida.
19
1.3. Conceptos de arquitectura y estructura de un computador
Arquitectura: qué hace el computador.
Funcionalidad que proporciona, desde el punto de vista de
- el programador en lenguaje ensamblador, y
- el generador de código del compilador
Atributos que definen una arquitectura (visibles a un programador
a bajo nivel):
- Repertorio y formato de las instrucciones que se usan en los
programas.
- Los registros del procesador para contener operandos.
- Modos direccionamiento de los operandos en registros y en
memoria.
- Tipos de datos que manejan las instrucciones.
20
21
Modos de direccionamiento de los operandos y tipos de datos:
22
Estructura: cómo se hace.
Implementación de la arquitectura con circuitos digitales.
Los componentes (sumadores, multiplexores, registros,…) y sus
conexiones para realizar una determinada arquitectura.
Son características hardware transparentes al programador.
Se especifican:
- Los componentes.
- Flujos de datos entre los componentes.
- Señales de control (del funcionamiento de los componentes).
Veremos distintas estructuras que implementan la misma
arquitectura de un repertorio (reducido) de instrucciones del
procesador MIPS:
23
(1) Estructura monociclo del procesador MIPS
24
(2) Estructura multiciclo del procesador MIPS
25
(3) Estructura segmentada del procesador MIPS
26
1.4. Estructura y funcionamiento de un computador
Un sistema computador se compone de
- Procesador: procesa los datos siguiendo las instrucciones.
- Memoria: almacena los datos y las instrucciones.
- Entrada/salida: para transferir información con el exterior.
El procesador está formado por:
- Camino de datos: realiza la transformación de los datos.
- Unidad de control: lee las instrucciones de memoria, las
interpreta y controla todos los componentes para que se
ejecuten.
27
Unidades funcionales del computador
28
Estructura de un computador: cinco componentes clásicos
29
El camino de datos se compone de:
- Unidad
aritmético-lógica
(ALU):
realiza
operaciones
aritméticas (sumas,…) y lógicas (and,…) sobre los datos.
- Banco de registros: contienen los operandos y los resultados
de las operaciones ALU.
30
La memoria
Se organiza como un vector de bytes (8 bits).
Cada byte es referenciado por su dirección, su posición dentro de
la memoria.
Una dirección de memoria hace referencia al contenido (8 bits) de
esa posición.
31
Sea la memoria:
En decimal En binario
Contenido
Dirección
En hexadecimal
Dirección Contenido
[0]
[1]
[2]
[3]
[4]
…
01011011
10101110
01011100
11100100
01101101
…
[0x00]
[0x01]
[0x02]
[0x03]
[0x04]
…
0x5B
0xAE
0x5C
0xE4
0x6D
…
[254]
[255]
10011011
10111101
[0xFE]
[0xFF]
0x9B
0xBD
Se diría que:
el byte en la dirección 3 es 11100100
ó en hexadecimal:
el byte en la dirección 0x03 es 0xE4
32
Se puede hacer referencia a datos en memoria de distintos
tamaños:
- Un byte: 8 bits.
- Una palabra: 4 bytes.
- Media palabra: 2 bytes.
- Doble palabra: 8 bytes.
Para los datos de varios bytes, habrá que establecer el orden en el
que se almacenan dichos bytes.
Suponemos de menos a más significativo (convenio ‘little-endian’).
33
Con el contenido de memoria visto:
El byte en la dirección 0x00 es 0x5B.
La media palabra en la dirección 0x00 es 0xAE5B.
La palabra en la dirección 0x00 es 0xE45CAE5B.
La doble palabra en la dirección 0x00 es 0xXXXXXX6DE45CAE5B.
34
Las operaciones que hace el procesador con la memoria son:
- Lectura : transferir un dato o instrucción en memoria al
procesador.
- Escritura : transferir un dato del procesador a memoria.
En ambos casos se tendrá que especificar:
- La dirección: posición en la memoria del dato a transferir.
- El tamaño (número de bytes) del dato a transferir.
- El destino/fuente del dato.
Todo esto se especificará en una instrucción máquina.
Ejemplos en la MIPS:
- lw rt, address (lectura de memoria, carga)
- sw rt, address (escritura en memoria, almacenamiento)
35
Acceso a las instrucciones en memoria
El procesador tiene que acceder a las instrucciones en memoria,
donde están almacenadas, para ejecutarlas.
El procesador tiene dos registros, de uso específico, para leer las
instrucciones de memoria:
(1) Contador de programa (PC): contiene la dirección en memoria
de la instrucción a ejecutar.
Es un registro contador con carga en paralelo.
(2) Registro de instrucción (IR): donde se carga (se transfiere
desde memoria) la instrucción a ejecutar.
Es un registro con carga en paralelo.
36
El funcionamiento básico de un computador
Consiste en procesar instrucciones una tras otra según están en
memoria.
Cada instrucción es procesada en dos fases:
- Fase de captación: cargar la instrucción en el registro de
instrucción (IR).
- Fase de ejecución: llevar a cabo la operación especificada por
la instrucción.
37
(1) Fase de captación de instrucción (común a todas las
instrucciones):
– El registro contador de programa (PC) contiene la dirección de
la instrucción a ejecutar.
– El procesador carga (lectura de memoria) en el registro de
instrucción (IR), la instrucción señalada por el PC.
– El procesador incrementa el contador de programa para que
apunte a la siguiente instrucción (el incremento depende del
tamaño de la instrucción).
38
Contenido de IR y PC después de la fase de captación
39
40
(2) Fase de ejecución: según el tipo de instrucción (4 tipos):
– Procesador-memoria: transferencia de datos entre el
procesador y la memoria.
carga_palabra registro, dirección
almacena_palabra registro, dirección
– Procesador-E/S: transferencia de datos entre el procesador y
un periférico.
li registro_v0, 5 # Código del servicio del SO para leer entero
syscall
# Llamada al SO
– Procesamiento de datos: el procesador ha de realizar alguna
operación aritmética o lógica con los datos (la ALU).
suma reg_destino, reg_fuente1, reg_fuente2
– Control (de secuencia; saltos): una instrucción puede
especificar que la secuencia de ejecución sea alterada,
cargando un valor en el contador de programa.
salta dirección
41
Descargar