Pulse aquí para obtener el archivo

Anuncio
09/03/2008
E.P.S. de Zamora
Informática
El procesador
Escuela Politécnica Superior de Zamora
Departamento de Informática y Automática
Informática ITOP
José Mª González Ríos
Curso 2007/2008
Estructura de un ordenador propuesta por
Von Neumann
Se entiende por ordenador una máquina que permite el tratamiento de
la información. Desde un punto de vista muy general, se pueden
distinguir dos partes en todo ordenador:
Hardware: Se refiere a todos los componentes físicos del ordenador, tales
como el disco duro, el CDROM, la CPU, la tarjeta de video, la impresora, etc.
Software: Se refiere al conjunto de algoritmos, programados en algún tipo
de lenguaje comprensible por el ordenador, cuyo objetivo es realizar alguna
tarea mediante cómputos operando sobre el hardware del ordenador. El
software más importante es el Sistema Operativo (SO), dedicado a gestionar
las distintas partes del ordenador para poder hacer uso de esta.
Un sistema informático es, en mayor o menor medida, el conjunto de
hardware y software interconectados entre si para el tratamiento de la
información.
En este estudio nos centraremos exclusivamente en el hardware del
ordenador. Obtendremos una visión de conjunto del hardware de todo
ordenador y nos centraremos sobre todo en los componentes hardware
más importantes, a saber:
La Unidad Central de Proceso (CPU - Central Processing Unit
Unit).
).
La Memoria Principal, (tema siguiente).
José Mª González Ríos
Informática – 2007/2008
2
1
09/03/2008
Estructura de un ordenador propuesta por
Von Neumann
La idea de Von Neumann consistió en conectar
permanentemente determinadas unidades del ordenador,
colocándolas bajo un control central, donde las
instrucciones eran tratadas secuencialmente en un ciclo
repetitivo de operaciones. Los dos puntos más importantes
a tener en cuenta son:
a) Todos los datos y las instrucciones se representan en código
binario y se almacenarán juntos en la memoria del ordenador.
b) El ordenador no hará distinciones entre datos e instrucciones.
Von Neumann propuso una estructura concreta para los
ordenadores, y los que se ajustan a esa estructura se
conocen como máquinas de Von Neumann.
Neumann. Una máquina de
Von Neumann consta de 3 unidades básicas: Procesador
Procesador,,
también llamado CPU (siglas de Unidad Central de Proceso,
en inglés Central Process Unit
Unit),
), memoria y unidad de E/S.
José Mª González Ríos
Informática – 2007/2008
3
Estructura de un ordenador propuesta por
Von Neumann
En la figura podemos ver dividido el ordenador en las
siguientes partes:
Buses de control, dirección y datos.
Memoria principal.
Unidad central de proceso.
Dispositivos periféricos.
José Mª González Ríos
Informática – 2007/2008
4
2
09/03/2008
Memoria
Resulta necesario almacenar instrucciones y datos en algún sitio mientras se
ejecuta un programa en el ordenador, cuando menos de manera temporal. Para
este fin existe la memoria principal, que es donde se almacenan los datos y las
instrucciones de los programas en ejecución, donde se pueden recuperar y
grabar en ella datos a través de las dos operaciones básicas definidas sobre
ella, una de lectura y la otra de escritura.
La memoria principal o central está dividida en celdas formadas generalmente
por un octeto (byte), aunque puede estarlo en unidades mayores. Habitualmente
a estas celdas se les denomina palabras de memoria. Cada una de esas palabras
es una unidad direccionable en la memoria. El mapa de memoria se corresponde
con el espacio de memoria direccionable. Este espacio viene determinado por el
tamaño de las direcciones.
El siguiente gráfico esquematiza de forma básica una unidad de memoria:
Bus de control
José Mª González Ríos
Bus de dirección
Memoria
Informática – 2007/2008
Bus de datos
5
Memoria
Para acceder a una palabra en particular se envía su dirección (a
través del un bus de dirección)
dirección) y una apropiada función de
control, leer o grabar en la memoria (a través de un bus de
control).
control
). Si la función es de grabación además se debe colocar la
palabra que desea grabar en el bus de datos de la memoria desde
donde será transferida a su correcta ubicación. Cuando la palabra
es leída aparecerá en el bus de datos la palabra solicitada.
De lo dicho se deduce que la memoria de un ordenador es una
secuencia de bytes, que empieza en el 0 y termina en un
determinado número, según la capacidad que tenga la memoria. Es
decir, es una tabla o ""array
array"" de bytes. Cada byte tiene una
dirección: el número que ocupa posicionalmente en la memoria.
Esta dirección es conocida como "dirección
"dirección física".
física". En oposición al
concepto de “dirección virtual” de la “memoria virtual” que
veremos más adelante.
José Mª González Ríos
Informática – 2007/2008
6
3
09/03/2008
Memoria
La siguiente figura muestra la
memoria de un ordenador con
una longitud de palabra de 8
bits y un bus de direcciones
también de 8 bits.
Existen 28 = 256 casillas (en
lenguaje binario, desde la
00000000 hasta la 11111111),
cada una conteniendo un dato
de 8 bits de tamaño, en total
256 x 8 = 2048 bits o 256
Bytes. Los datos contenidos en
las casillas de memoria no
tienen evidentemente ninguna
relación con la dirección de
estas, ya que van variando
conforme se ejecuta el
programa o se producen
entradas de nuevos datos.
José Mª González Ríos
Informática – 2007/2008
7
CPU
Se define Unidad Central de Proceso (CPU - Control Processing Unit
Unit)) o
procesador, como la unidad funcional que ejecuta las instrucciones de una
determinada arquitectura de propósito general. Muchos ordenadores tienen
un procesador que se encarga de la totalidad de las funciones de
interpretación de instrucciones y su ejecución.
El término de propósito general sirve para diferenciar a la CPU de otros
procesadores tales como los procesadores de E/S cuyas funciones son en
cierta forma más restringidas o para un propósito específico.
Generalmente existe una sola CPU en la mayoría de los ordenadores. Un
ordenador con una sola CPU se denomina Monoprocesador; un ordenador con
más CPUs se denomina un Multiprocesador.
La figura siguiente muestra un bloque sencillo que se utiliza para
representar a la CPU. Existe un bus de datos de una sola palabra que es el
camino por el cual fluye la información desde o hacia la CPU. Un segundo bus
por el cual se transmiten las direcciones desde la CPU a la memoria principal
y también a los dispositivos de E/S. Y por último un bus de control que se
utilizan para controlar los otros componentes del sistema y además para
sincronizar sus operaciones con las de la CPU.
José Mª González Ríos
Informática – 2007/2008
8
4
09/03/2008
CPU
Bus de control
Bus de dirección
CPU
Bus de datos
Desde un punto de vista conceptual, la CPU muestra una
clara división funcional. Estas funciones son:
Procesamiento de los datos.
Control del procesamiento en sí mismo.
En esencia el trabajo de un ordenador consiste en recibir
datos del usuario (entrada) según el dispositivo periférico y
seguir las instrucciones para transformar esa entrada en
una salida y devolverla al usuario. Estas transformaciones
son realizadas por la CPU que interpreta y lleva a cabo las
instrucciones de los programas, efectúa manipulaciones
aritméticas y lógicas con los datos y se comunica con las
demás partes del sistema.
José Mª González Ríos
Informática – 2007/2008
9
Objetivos de la CPU
Ejecutar rápidamente todos los pasos de una tarea
Funcionar lo mas rápidamente posible
Consumiendo la mínima potencia
Evitar errores y paradas
Para ello, el procesador utiliza una serie de operaciones
elementales, a partir de las cuales se pueden resolver
tareas más complejas. Cada una de las operaciones
elementales tiene un código binario y puede tener uno, o
varios operandos sobre los que actuar.
El procesador dispone habitualmente de un conjunto
reducido de posiciones de memoria internas, que se conocen
como registros, y que le permiten almacenar los datos y los
resultados con los que está trabajando en ese momento
José Mª González Ríos
Informática – 2007/2008
10
5
09/03/2008
Estructura de la CPU
Se distinguen básicamente dos partes:
Lógica: Agrupa a todos los componentes capaces de
1. La Unidad Aritmética Lógica:
manipular los datos, es decir los recursos que disponemos en el interior del
procesador. También es conocida como UAL ó ALU (Aritmethic Logic
Unit).
Unit
). Generalmente, la unidad aritmético lógica está dividida en tres
subunidades que realizan las funciones:
2.
9 Operaciones de punto fijo,
fijo, que incluye aritmética entera y cálculo efectivo de las
direcciones.
9 Operaciones de punto flotante,
flotante, que incluyen aritmética con mantisa y exponente.
9 Operaciones de longitud variable,
variable, que incluye aritmética decimal y operaciones
sobre conjuntos de caracteres.
La Unidad de Control:
Control: Encargada de realizar el control del proceso, es
decir, de generar las señales necesarias para activar los componentes de la
unidad de tratamiento que actuarán sobre los datos en el instante de
tiempo que corresponda. También es conocida como UC o CU (Control
Unit).
Unit
).
La unidad de control trabaja en base al reloj maestro que interpreta y
coordina la ejecución de todas las operaciones que realiza el
microprocesador. Como ya hemos dicho, la función fundamental de este
reloj es marcar la cantidad de instrucciones que el microprocesador puede
ejecutar en un segundo. La frecuencia del reloj determina la velocidad en la
transferencia de un dato entre dos dispositivos conectados a un mismo bus
(por ejemplo, la lectura de una palabra de memoria por parte de la CPU).
José Mª González Ríos
Informática – 2007/2008
11
Alu
Se encarga de realizar todas las operaciones, tanto aritméticas
como lógicas, mediante un número elevado de pequeños pasos.
Esta formada por:
1. Acumulador:
9 Es el área de trabajo del procesador.
9 Contiene uno de los datos implicados en la operación y almacena el
resultado (En los procesadores actuales no suele existir un registro
reservado a tal fin).
2. Circuitos lógicos:
9 Son los circuitos encargados de realizar las operaciones con 1 ó 2
datos. Estas operaciones se llevan a cabo mediante un gran número
de pequeños pasos, involucrando cada una de ellas, a uno, o varios de
los circuitos lógicos.
3. Registro de códigos de condición:
9 Informa sobre la última operación realizada. Algunos de sus bits
son:
• C (carry
(carry):
): Se activa al operar con números sin signo, cuando no
puede almacenarse el resultado correctamente (desbordamiento).
• Z (Zero
(Zero):
): Se activa con resultado 0
• OV ((overflow
overflow):
): Igual que C pero para números con signo.
José Mª González Ríos
Informática – 2007/2008
12
6
09/03/2008
Alu
La unidad de control, reducida a la mínima expresión, consta de contador de
programa (normalmente llamado PC), decodificador de instrucciones,
puntero de pila (comúnmente llamado SP, en inglés Stack Pointer) y,
índice.
opcionalmente, de registro índice.
La unidad de control tiene, así mismo, algo muy necesario, que es el
generador de impulsos de reloj, encargado de sincronizar el
funcionamiento del procesador. Para ello, se emplea un cristal de cuarzo
externo a la CPU que le suministra a través de una de sus patas una onda
cuadrada. Cada período de la onda recibe el nombre de ciclo de reloj, y se
utiliza su frecuencia para medir la velocidad del procesador. Para realizar
cualquier operación, el procesador tiene unas tablas en las que se especifica
los ciclos de reloj que dura, la unidad de control coloca los operandos
necesarios para la misma, donde se necesiten y espera los ciclos que marca
la tabla, para darla por concluida.
Las funciones de la unidad de control son las de controlar el funcionamiento
paso a paso del procesador, mientras éste ejecuta cada una de las
instrucciones de un programa. Resumiendo:
a)
b)
c)
d)
Controlar la secuencia en que se ejecutan las instrucciones.
Controlar el acceso del procesador a la memoria principal.
Regular las temporizaciones de todas las operaciones que ejecuta el procesador.
Enviar y recibir señales de control desde los periféricos.
José Mª González Ríos
Informática – 2007/2008
13
Generador de impulsos de reloj
José Mª González Ríos
Informática – 2007/2008
14
7
09/03/2008
Registros
Otro componente importante en un procesador son los Registros. Un
registro es la unión de varios circuitos lógicos que almacenan un
determinado número de bits,
bits, normalmente el de una palabra (8, 16, 32
o 64 bits). Estos circuitos son muy rápidos y, puesto que forman parte
del propio procesador, componen la memoria a la que más fácilmente y
más rápidamente puede acceder cualquier otra parte de la CPU. Los
registros suelen formar grupos según la funcionalidad a la que estén
destinados. Los tipos básicos de registros según su función son:
Uso general: No tienen una función específica. Cualquier registro de
propósito general puede almacenar el operando para cualquier código de
operación; como en todo orden de cosas, existen algunas restricciones,
por ejemplo, podrán existir registros de propósito general específicos
para operaciones de punto flotante, o de direccionamiento.
Datos: Sólo se usan para contener datos y no participan en el cálculo de
direcciones de operandos.
operandos.
Direcciones: Pueden ser registros de uso parcialmente general, o sólo
dedicados a modos de direccionamientos específicos. Algunos registros
de dirección más usados son los Registros índices y los Punteros de Pila.
Códigos de condición: También llamados “flags
“flags”.
”. Específicamente son
bits fijados mediante el hardware, por ejemplo, indican si una operación
entrega un resultado positivo, negativo, nulo, si hay overflow
overflow,, etc.
José Mª González Ríos
Informática – 2007/2008
15
Registros fundamentales
1. PC ((Program
Program Counter):
Counter): Contador de Programa.
Programa. Contiene la dirección de la siguiente instrucción.
instrucción.
Típicamente, la CPU actualiza el contador de programa después de cada lectura de instrucción de
manera que siempre apunta a la siguiente instrucción a ejecutar. Una instrucción de bifurcación o
salto también modificará el contenido de PC. La instrucción leída se carga en el registro de
instrucción.
2. INC ((Incrementer
Incrementer):
): Incrementador
Incrementador.. Registro que, sumando su contenido al registro PC,
incrementa el contenido de este. Normalmente este incremento es la unidad (PC=PC+1), pero en
ciertas ocasiones puede ser otro valor, tales como instrucciones de salto o instrucciones que
ocupen más de una palabra en memoria.
3. IR ((Instruction
Instruction Register
Register):
): Registro de Instrucción.
Instrucción. Contiene la instrucción actual, aquí se analiza
el código de operación. Nótese que almacena el contenido de las posiciones de memoria que indica
el registro PC.
4. MAR ((Memory
Memory Address Register
Register):
): Registro de dirección de memoria.
memoria. Contiene la dirección de una
posición de memoria, y el intercambio de datos con la memoria se realiza conectado directamente
al bus de direcciones.
5. MBR ((Memory
Memory Buffer Register
Register):
): Registro intermedio de memoria.
memoria. Contiene la palabra de datos
para escribir en memoria que ha sido leída más recientemente, el intercambio de datos con la
memoria se realiza conectándose directamente al bus de datos.
6. Registros E/S: Entrada/Salida. Registros destinados a contener la dirección de memoria cuyo
contenido se reserva para almacenar datos provenientes de algún dispositivo de entrada y salida.
Algunos de estos registros son:
9 E/SAR (E/S Address Register
Register):
): Registro de direcciones para especificar un dispositivo
de E/S. A estas posiciones de memoria cuyo contenido se usa para comunicarse con los
dispositivos de E/S se les denomina puertos.
9 E/SBR (E/S Buffer Register
Register):
): Registro de datos que se utiliza para intercambiar datos
entre un módulo de E/S y la CPU.
7. Registros D0, D1 ... DN (Data Registers):
Registers): Registros genéricos destinados a contener todo tipo
de datos. En ciertos procesadores estos registros son también llamados simplemente R0, R1 ...
RN ((Registers
Registers).
).
José Mª González Ríos
Informática – 2007/2008
16
8
09/03/2008
Contador del programa
Contiene la
dirección de la
instrucción del
programa que se
está ejecutando en
cada momento
Recogida la
instrucción de la
memoria del PC se
incrementa,, de
incrementa
acuerdo al tamaño
en bytes de las
instrucciones que se
ejecuten
Informática – 2007/2008
José Mª González Ríos
17
Esquema de los registros de la CPU
Unidad de control
Contador de programa
Registro de dirección de memoria
Incrementador
Registro intermedio de memoria
Registro de instrucción
Registros de datos
Unidad aritmético lógica
José Mª González Ríos
Informática – 2007/2008
18
9
09/03/2008
Estructura básica de una CPU
ALU
Registro de desplazamiento
Unidad de Control
(Secuenciador)
Palabra de Estado (F)
2º Operando
Contador de programa (PC)
BUS DE
DIRECCIONES
direcciones (RD)
Registro de Decodificador de
Instrucciones
(Microprograma)
CLK
R/W
RESET
INT
BUS DE
CONTROL
Acumulador(A)
BUS DE DATOS (INTERNO)
Registros Indice Puntero de pila (IX)
(SP)
José Mª González Ríos
Registro de instrucciones
y datos
BUS DE
DATOS
Informática – 2007/2008
19
Comunicación con el sistema. BUSES
Para funcionar el hardware necesita unas conexiones
materiales que permitan a los componentes comunicarse
entre sí e interaccionar. Estas conexiones se denominan
buses o canales. Un bus constituye un sistema común
interconectado compuesto por un grupo de cables o
circuitos que coordina y transporta información entre las
partes internas del ordenador.
Existen tres tipos de buses en un ordenador, en función del
tipo de datos que transporten:
Bus de Control: Se encarga de transmitir datos que serán
utilizados como órdenes de control.
Bus de Direcciones: Se encarga de transmitir datos que serán
utilizados como direcciones de memoria.
Bus de Datos: Se encarga de transportar datos como tales.
José Mª González Ríos
Informática – 2007/2008
20
10
09/03/2008
Comunicación con el sistema. BUSES
Un bus se caracteriza por dos propiedades:
La cantidad de información que puede manipular simultáneamente,
llamada ”anchura de bus”.
La rapidez con que puede transferir dichos datos.
El conjunto de estos tres buses forma el Bus del Sistema.
Sistema. Su
capacidad debe estar en correspondencia con la demanda de
servicio que realizan los componentes conectados al bus, tales
como la unidad central de proceso, la memoria, etc,
etc, y que el ancho
del bus sea tal que no imposibilite la adecuada transmisión de
datos.
José Mª González Ríos
Informática – 2007/2008
21
Comunicación con el sistema. BUSES
Bus de datos
Son las líneas por las que el procesador lee o escribe datos en la memoria o
en los periféricos. Consta normalmente de 8, 16, 32 o 64 hilos, cada uno de
ellos representa un bit del dato que el procesador lee o escribe.
Bus de direcciones
Son las líneas por las que el procesador decide la posición de memoria con la
que quiere comunicarse. Cada posición tiene un número y dependiendo del
número de hilos que compongan dicho bus, el procesador podrá manejar más
o menos memoria. Aunque el bus de datos sea de más de 8 bits, por razones
de compatibilidad las posiciones de memoria se numeran de 8 en 8 bits. Por
cada hilo del bus de direcciones circula un bit, y la dirección se forma con el
número binario que representan dichos bits. Los tamaños más comunes de
bus de direcciones son 16(lo que permite tener 64Kb de memoria), 20
(1Mb), 24 (16Mb) y 32 (4Gb).
Bus de control
Las señales de control sirven para que el procesador pueda controlar lo que
hace, por ejemplo hay una llamada W/ R que le sirve al procesador para
indicar cuando quiere leer y cuando quiere escribir, si la señal está a 0 se
trata de una lectura y si está a 1 el procesador necesita escribir
José Mª González Ríos
Informática – 2007/2008
22
11
09/03/2008
Buses del 8038680386-SX de AMD
Bus de direcciones: A0…A23
Bus de datos: D0…D15
Bus de control: W/R, M/IO
Alimentación: VCC
Masa de referencia: VSS
Entrada de reloj: CLK2
Interrupción: INTR
José Mª González Ríos
Informática – 2007/2008
23
Diagrama de los buses de un ordenador
José Mª González Ríos
Informática – 2007/2008
24
12
09/03/2008
CHIPSET
"Chipset" significa "conjunto de chips".
Normalmente, en las placas base se trata de 2 chips,
denominados Northbridge y Southbridge
Southbridge..
Controla los aparatos de I/O
(entrada/salida: disco duro,
USB, ...)
Controla aspectos específicos
del microprocesador y la
memoria (tipo de bus y de
memoria, por ejemplo)
José Mª González Ríos
Informática – 2007/2008
25
Comunicación con el sistema
Mapeado en memoria:
memoria: (Motorola)
Se reservan determinadas direcciones de memoria para los
periféricos.
Espacio de E/S separado:
separado: (Intel)
El µP posee una señal de control llamada M/IO, con la que el
procesador indica si quiere comunicarse con un periférico
(0), o con la memoria (1).
Las direcciones de los periféricos se suelen llamar
puertos.
En cualquiera de los dos casos anteriores, en el acceso
a los periféricos el procesador emplea tres
estrategias:
Escrutinio
Interrupción
Acceso directo a memoria
José Mª González Ríos
Informática – 2007/2008
26
13
09/03/2008
Escrutinio
Consiste en leer periódicamente el estado del periférico
para decidir lo que debe hacer.
Por ejemplo, si se usa un teclado de esta forma,
periódicamente (por ejemplo, cada centésima de segundo)
se lee a través de un puerto un registro de estado del
teclado, que informa de sí hay una tecla pendiente de ser
leída, en ese caso el procesador lee la tecla a través de otro
puerto.
José Mª González Ríos
Informática – 2007/2008
27
Interrupción
El periférico interrumpe al procesador cuando necesita ser
atendido,, para ello el procesador dispone de una señal de control
atendido
llamada INTR
INTR,, que debe ser usada en ese caso, existe además un
controlador de interrupciones externo encargado de canalizar
todas las posibles peticiones de interrupción.
Cuando se interrumpe al procesador, éste para lo que está
haciendo y ejecuta un programa de atención al periférico.
periférico.
Cuando acaba dicho programa, se vuelve al estado anterior y
continúa con lo que hacía al ser interrumpido.
interrumpido.
La pila sirve para conservar el estado del procesador cuando se
produce la interrupción, y poder continuar más adelante. Por
ejemplo, el reloj funciona de esta forma. Cada cierto tiempo (por
ejemplo, una centésima de segundo) interrumpe al procesador y le
fuerza a que ejecute un programa que se encarga de incrementar
la hora, que está almacenada en varias posiciones de memoria (una
para las centésimas de segundo, otra para los segundos, etc.).
José Mª González Ríos
Informática – 2007/2008
28
14
09/03/2008
Acceso directo a memoria
Cuando un periférico necesita enviar varios datos
consecutivamente a memoria, los dos métodos anteriores son muy
difíciles de emplear y se emplea éste, que consiste en tener un
chip de apoyo al procesador que se llama controlador de DMA
(acceso directo a memoria) que es capaz de leer y escribir en
memoria sin ayuda del procesador.
procesador.
Un ejemplo de esto es el caso de los disquetes, cuando se lee un
sector, se deben transferir 512 bytes del disquete a la memoria.
memoria.
En este caso, se programa al controlador de disquetes para que
lea el sector y lo envíe al controlador de DMA.
DMA.
Por otra parte, se programa al controlador de DMA para decirle
que la unidad de disquetes va a enviarle 512 bytes, que tiene que
poner a partir de determinada posición de memoria.
Después de hecho esto, el procesador no tiene que intervenir
para nada en la operación,
operación, la realizan entera solos el controlador
de disquetes y el controlador de DMA. Para avisar al procesador
de que la lectura ha concluido se utiliza una interrupción.
José Mª González Ríos
Informática – 2007/2008
29
Lenguaje máquina
Son instrucciones que controlan paso a paso el
funcionamiento del procesador
Son propias de cada arquitectura
Características:
Están en código binario
Hacen referencia directa a registros y unidades funcionales del
microprocesador
Tienen dos partes: una dedicada al código de la operación y otra
dedicada al operando u operandos (si existen)
José Mª González Ríos
Informática – 2007/2008
30
15
09/03/2008
Lenguaje máquina - lenguaje ensamblador
Es un lenguaje complicado, por lo que se buscó algo que se
pareciera más al humano:
LENGUAJE ENSAMBLADOR
Cada instrucción se sustituyó por un mnemónico:
José Mª González Ríos
ADD
Sumar
SUB
Restar, …
Informática – 2007/2008
31
Lenguaje máquina - tipos de instrucciones
Instrucciones sin operando: CLC
Borra (Clear) el flag de Carry
Instrucciones con un operando: INC I
Incrementa en 1 el contenido de la posición de memoria o registro I
Instrucciones con dos operandos: ADD I,3
Suma los números I y 3 (en registros o en memoria) y almacena el
resultado en I.
Los operandos de las instrucciones pueden estar en la
memoria principal del ordenador, en registros, o en la propia
instrucción.
Los métodos para especificar los operandos se conocen
Cada procesador
habitualmente como:
tiene los suyos
MODOS DE DIRECCIONAMIENTO
propios
José Mª González Ríos
Informática – 2007/2008
32
16
09/03/2008
Modos de direccionamiento ÆIntel
Máquina Intel 80x86:
Bus de datos y direcciones: 16 bits
Registros de 16 bits: AX, BX, CX, DX
9 En estos registros se puede acceder solo a una mitad(8 bits):
AH (parte alta), AL (parte baja).
Fuente:
el dato que se copia
Instrucción: MOV
Mueve datos
Tiene dos operandos
Destino:
donde se copia Æ un registro
Los números en Hexadecimal
José Mª González Ríos
Informática – 2007/2008
33
Modos de direccionamiento
Inmediato
Directo
Indirecto
Registro
Registro indirecto
Desplazamiento (Indexado)
José Mª González Ríos
Informática – 2007/2008
34
17
09/03/2008
Direccionamiento inmediato
El dato es parte de la instrucción
Operando = campo dirección
ejemplo. ADD 5
Suma 5 al contenido del acumulador
5 es operando
MOV AX, 5 Æ Pone el número 5 en el registro AX
No hay referencia a memoria para extraer datos
Rápido
Rango limitado
Diagrama:
Instrucción
Operando
Opcode
José Mª González Ríos
Informática – 2007/2008
35
Direccionamiento directo
El campo de direcciones contiene la dirección del operando
La dirección efectiva (EA) = campo de dirección (A)
ejemplo. ADD A
Suma el contenido de la celda A al acumulador
Buscar en memoria la dirección A para el operando
MOV AX, [1234] Lee el dato de 16 bits contenido en las
direcciones de memoria 1234 y 1235, colocándolo en AX
Una sola referencia a memoria para accesar datos
No se hacen cálculos adicionales para trabajar la dirección efectiva
Espacio de direcciones limitado
Diagrama:
Instrucción
Opcode
Memoria
Dirección A
Operando
José Mª González Ríos
Informática – 2007/2008
36
18
09/03/2008
Direccionamiento indirecto
Celdas de memoria apuntadas por un campo de dirección que
contiene la dirección (apuntador) al operando (dato).
EA = (A)
Busca en A, encuentra la dirección (A) y ahí busca el operando
Ejemplo. ADD (A)
Suma el contenido de una celda apuntada por el contenido de A al
acumulador
Espacio de direccionamiento grande
2n donde n = es la longitud de la palabra
Puede ser anidado, multinivel, en cascada
ejemplo. EA = (((A)))
9 ¿Cómo sería el diagrama?
MOV AX, [BX] Se lee el contenido de BX, supongamos que es 2345,
el contenido de 2345 y 2346 pasa a AX
Varios accesos a memoria para encontrar el operando
Más lento
José Mª González Ríos
Informática – 2007/2008
37
Diagrama de direccionamiento indirecto
Instrucción
Opcode
Dirección A
Memoria
Apuntador al operando
Operando
José Mª González Ríos
Informática – 2007/2008
38
19
09/03/2008
Direccionamiento registro
El operando está en el registro nombrado en el campo dirección
EA = R
Número limitado de registros
Se requiere un campo de direcciones muy pequeño
Instrucciones más cortas
Extracción de instrucciones más rápida
MOV AX, BX Copia el contenido del registro BX en el AX
No se hace acceso a memoria
La ejecución es muy rápida
Espacio de direcciones muy limitado
Muchos registros ayudan al rendimiento
Requiere una buena programación en ensamblador o el desarrollo de
un buen compilador
Programando en C
9 register int a;
José Mª González Ríos
Informática – 2007/2008
39
Diagrama de direccionamiento registro
Instrucción
Opcode
Dirección del del Registro
Registro R
Registros
Operando
José Mª González Ríos
Informática – 2007/2008
40
20
09/03/2008
Direccionamiento indirecto con registro
EA = (R)
El operando está en una celda de memoria apuntado por el
contenido del registro R
Espacio de direcciones grande (2n)
No se hace acceso a memoria
La ejecución es muy rápida
Espacio de direcciones muy limitado
Muchos registros ayudan al rendimiento
Requiere una buena programación en ensamblador o el desarrollo
de un buen compilador
Programando en C
9 register int a;
Informática – 2007/2008
José Mª González Ríos
41
Diagrama de direccionamiento indirecto con
registro
Instrucción
Opcode
Dirección del registro R
Memoria
Registros
Apuntador al operando
José Mª González Ríos
Operando
Informática – 2007/2008
42
21
09/03/2008
Direccionamiento con desplazamiento
EA = A + (R)
El campo de direcciones tiene dos valores
A = valor base
R = registro que tiene el desplazamiento
o viceversa
Instrucción
Opcode Registro R
Dirección A
Memoria
Registros
Apuntador al operando
José Mª González Ríos
+
Operando
Informática – 2007/2008
43
Direccionamiento relativo
Una versión de direccionamiento con desplazamiento
R = Contador del programa, PC
EA = A + (PC)
Obtener operando de A celdas a partir de la posición actual
9 Apuntada por el registro PC
Localidad de referencias y el uso de la caché
El operando es un número que sumado al contador de
programa nos da la dirección del dato:
JMP +25
La siguiente instrucción que se ejecutará será la que
encuentre 25 posiciones de memoria más abajo
José Mª González Ríos
Informática – 2007/2008
44
22
09/03/2008
Direccionamiento indexado
A = base
R = desplazamiento
EA = A + R
Bueno para el acceso de arreglos
EA = A + R
R++
La instrucción contiene un número que, sumado al registro
índice, indica la dirección de memoria donde está el dato
MOV AL, 1234[BX] Suma 1234 con el contenido del registro
BX (que actúa como registro índice). El resultado será la
dirección del dato buscado, que se copiará en la parte baja
del registro AX (AL)
José Mª González Ríos
Informática – 2007/2008
45
Procesadores
Los procesadores reales no tienen registros específicos.
Contienen un conjunto de registros generales que se
utilizarán para las distintas tareas
tareas..
Dedicados
De propósito general
José Mª González Ríos
Se reduce su campo de aplicación
para que sean mas efectivos en
determinadas aplicaciones:
ajedrez, imágenes 3D, etc.
Se buscan prestaciones
generales
Informática – 2007/2008
46
23
09/03/2008
RISC ((Reduced
Reduced Instruction Set Computer)
Computer)
Características clave:
Muchos registros de propósito general
El uso de la tecnología del compilador para optimizar el
uso de los registros
Conjunto de instrucciones limitado y simple
Énfasis en optimizar el pipelining de las instrucciones
Una instrucción por ciclo
Operaciones de registro a registro
Menos modos de direccionamiento simples
Menos formatos de instrucciones simples
Formato de instrucción fijo
Más tiempo/esfuerzo para compilar
Plataformas Operativas
CPU
47
Filosofía de diseño RISC
Reduced Instruction Set Computer
CPUs con un conjunto de instrucciones más
simple y pequeño.
9Ejecución más rápida de los programas.
Instrucciones de Longitud Fija (32 ó 64 Bits)
9Diferencia con los CISC. Ventaja/Desventaja.
Dos características principales
9CPUs RISC contienen muchos registros internos
internos.
9Carga y almacenamiento
almacenamiento:: Instrucciones dedicadas.
¾ Ventaja: Reducción de Modos de Direccionamiento y por lo
tanto el acceso a memoria externa.
José Mª González Ríos
Informática – 2007/2008
48
24
09/03/2008
Filosofía de diseño RISC
Múltiples operaciones de bajo nivel, múltiples
instrucciones:
9SUMAR ($00) + ($03) y guardarlo en $07
Sumar $10 con $1A y llevarlo a un registro
Guardar el valor del registro en $07
Cargar el valor que hay en $03
Cargar el valor que hay en $00
CPU
$03
$00 $07
Bus de Direcciones
Control y ALU
$10+$1A=$2A
$10
$1A
Bus de Datos
$10
$2E
$89
$1A
$3E
$5F
$2E
$2A
$30
$00
$01
$02
$03
$04
$05
$06
$07
$1A
$10
$2A
Informática – 2007/2008
José Mª González Ríos
Memoria 8‐Bits
$00
$03
$07
49
Filosofía de diseño RISC
Reduced Instruction Set Computer
Varias instrucciones:
Reg. Op A
Reg. Result.
Memoria
Memoria
Reg. Op B
Instrucción de Carga
José Mª González Ríos
Instrucción Sumar
Informática – 2007/2008
Instrucción de Almacenamiento
50
25
09/03/2008
Intención del CISC
(Complex Instruction Set Computer)
Computer)
Desarrollo fácil del compilador
Mayor número de instrucciones, que realizan tanto operaciones
elementales como complejas
La mayoría de los tipos de instrucciones permiten que el acceso a
memoria sea de forma directa
Número considerable de modos de direccionamiento
Los formatos de las instrucciones tienen longitudes diferentes
Hacer la ejecución eficiente
9 Operaciones complejas en micromicro-código
Soporta lenguajes de alto nivel más complejos
El costo del software excede los costos del hardware
Cada vez más lenguajes de alto nivel complejos
Huecos en la semántica
Los diseños RISC pueden sacar provecho de la inclusión de algunas
características CISC y los CISC sacar provecho de algunas
características RISC
Ejemplos: PowerPC y Pentium
Plataformas Operativas
CPU
51
Filosofía de diseño CISC
Complex Instruction Set Computer
CPUs con un conjunto de instrucciones
bastante amplio.
9Reducción de Código en Memoria.
Operaciones complejas entre operandos
ubicados en registros y memoria.
9Ventaja
Ventaja:: Facilidad de programación.
9Desventaja
Desventaja:: Memoria externa.
Aceptan muchos modos de direccionamiento.
direccionamiento.
9Ventaja
Ventaja:: Facilidad de programación.
9Desventaja
Desventaja:: No comúnmente usados por el
compilador.
José Mª González Ríos
Informática – 2007/2008
52
26
09/03/2008
Filosofía de diseño CISC
Una instrucción, múltiples operaciones de bajo
nivel.
9SUMAR ($00) + ($03) y guardarlo en $07
CPU
$03
$00 $07
Bus de Direcciones
Control y ALU
$10+$1A=$2A
$10+$1A
$10
Bus de Datos
$00
$01
$02
$03
$04
$05
$06
$07
$1A
$10
$2A
José Mª González Ríos
$10
$2E
$89
$1A
$3E
$5F
$2E
$30
$2A
Memoria 8‐Bits
$07
$00
$03
Informática – 2007/2008
53
Filosofía de diseño CISC
Complex Instruction Set Computer
Una sola instrucción:
Operando A
Resultado
Operando B
Tomar datos de memoria principal
José Mª González Ríos
Operación
Informática – 2007/2008
Llevar resultado a memoria principal
54
27
09/03/2008
Familia INTEL: en el inicio …
El primer microprocesador de la historia, aunque hay alguna
disputa al respecto, fue el 4004, creado por Intel a petición de
un fabricante de calculadoras japonés, pero que al final no se
llegó a usar, era un micro de 4 bits y fue diseñado a finales del
año 1971.
El sucesor del 4004 fue el 8008, diseñado al año siguiente, ya era
un procesador de 8 bits, pero tampoco tuvo gran difusión. El
primer procesador que se empleo en grandes cantidades fue el
8080, fabricado el año 1974, tenía un bus de datos de 8 bits, un
bus de direcciones de 16 bits y 7 registros de 8 bits de propósito
general, más el contador de programa, puntero de pila y registro
de flags
flags.. Funcionaba a 2MHz.
El primer procesador de la familia 80x86 fue el 8086, fabricado
el año 1978, era ya un procesador de 16 bits, que tenía un bus de
datos de 16 bits, un bus de direcciones de 20 bits y 7 registros
de 16 bits de propósito general, además de los consabidos PC (que
rebautizaron como IP), SP y flags.
flags. Funcionaba a 5MHz y
posteriormente a 8MHz
José Mª González Ríos
Informática – 2007/2008
55
Familia INTEL: 8088
Un año después apareció el 8088, idéntico al anterior, salvo
por tener un bus de datos de 8bits, lo que lo hacía muy
apropiado para construir un ordenador personal, ya que para
manejarlos periféricos podía ayudarse por los chips de 8
bits desarrollados para los microprocesadores de 8 bits
como el 8080, por ello fue el elegido por IBM para construir
su ordenador IBM PC,PC/XT, portátil y en el PCjr (PC
Junior). La velocidad también se mantuvo en 5 y 8 Mhz.
El siguiente miembro de la familia, el 80186, ha pasado por
el mundo del PC, prácticamente desapercibido. Suponía
respecto a sus predecesores, un aumento de velocidad
pequeño y no rentaba su fabricación para las mejoras
conseguidas, por lo que se instaló en muy pocos aparatos.
Sus buses de datos y de direcciones eran iguales que en los
micros anteriores. También existió el 80188.
José Mª González Ríos
Informática – 2007/2008
56
28
09/03/2008
Familia INTEL: 80286
El 80286 fue un avance importante en la historia del PC,
comercializándose a mediados del año 1.984 bajo el modelo AT y todos
los compatibles con él.
Es un microprocesador que trabaja con un bus de datos de 16 bits, con
un bus de direcciones de 24 bits (por lo que puede trabajar con una
capacidad de memoria de 16Mb) y una velocidad de reloj que oscila
entre 8 y 16Mhz. Además de la mejora de velocidad (superior a lo que
indican los MHz del reloj), introdujo un nuevo modo de funcionamiento,
el modo protegido, el modo compatible con el 8086 se llamó modo real.
El modo protegido estaba diseñado para trabajar en multitarea.
El 80286 tiene varios fallos, el primero y principal es que los programas
diseñados para funcionar en modo real no pueden hacerlo en modo
protegido y viceversa, además el aumento de memoria, la multitarea, la
memoria virtual, etc. es sólo posible para los programas en modo
protegido.
Además, seguía empleando segmentos de 64Kb, lo cual es tolerable en
un micro como el 8086 pensado para la monotarea, pero no lo es como el
80286, y para colmo, el procesador arranca en modo real, tiene una
instrucción que permite pasar a modo protegido, pero olvidaron poner
una instrucción para volver a modo real. Por todo ello el modo protegido
es prácticamente inútil y el 80286 se queda en un 8086 más rápido.
José Mª González Ríos
Informática – 2007/2008
57
Familia INTEL: 80386
El año 1985 INTEL empezó la fabricación del 80386, que pasaría
a denominarse posteriormente 386DX, en este caso las mejoras
eran importantes, lo fundamental es que extendió el bus de
datos, el de direcciones y los registros a 32 bits, ahora se podía
direccionar toda la memoria, que en este caso es nada menos que
4Gb, sin necesidad de segmentos.
Además la velocidad pasó a ser entre 16 y 40 MHz y el modo
protegido, único en el que se puede acceder a las mejoras de
memoria, se hizo más compatible con el modo real: no sólo
incluyeron la instrucción para volver a modo real, sino que
hicieron que los programas diseñados para modo real pudieran
funcionar en un submodo del modo protegido, el modo V86,
pudiendo ejecutarse en multitarea varios de ellos o con
programas diseñados para el modo protegido.
Por alguna extraña razón, IBM en principio no empleó este micro
en sus ordenadores y hubo que esperar a la llegada de los PS/2
para verlo en modelos de IBM.
José Mª González Ríos
Informática – 2007/2008
58
29
09/03/2008
Familia INTEL: 386SX
Tres años más tarde del lanzamiento del 386DX, Intel sacó al mercado el
386SX, para competir con AMD que fabricaba micros 80286 más rápidos y
baratos que los de Intel. Básicamente el 386SX es un 386DX por dentro y
un 80286 por fuera, es decir, tiene todas las características del 386DX,
pero se ha reducido el bus de datos a 16 bits y el de direcciones a 24,lo que
permite emplear como chips de apoyo los mismos que para el 80286 y sin
embargo tener un auténtico micro de 32 bits.
El siguiente de la serie fue el 486DX, básicamente igual al 386DX, pero con
el coprocesador y 8Kb de memoria caché incorporada en el chip. Los
modelos anteriores disponían de un compañero llamado 8087, 80287, 80387
que permitía realizar operaciones en coma flotante, ya que el procesador
sólo es capaz de operar con enteros, en el caso del 486DX no era ya
necesario, pues estaba incluido en el propio procesador.
La memoria caché era en este modelo casi imprescindible, era el primero
que se acercaba a los procesadores RISC, era capaz de ejecutar algunas de
sus instrucciones en tan sólo un ciclo de reloj, y para poder hacer eso se
necesita tener los datos en el propio procesador, sin necesidad de ir a
buscarlos a la memoria. Empezó a funcionar a 20MHz y llegó hasta los
50MHz
José Mª González Ríos
Informática – 2007/2008
59
Familia INTEL: 486
Posteriormente y de modo análogo al caso del 386SX, Intel sacó
una versión reducida del 486DX, llamada 486SX, a la que se le
había quitado el coprocesador. También comercializó un 487SX,
que era en realidad un 486DX que además desactivaba el 486SX
junto al que se instalaba.
Posteriormente aparecieron los 486DX2 y 486SX2, eran iguales
que sus homónimos sin el 2, pero internamente doblaban la
velocidad del reloj; así el 486DX2
486DX2--66 funcionaba internamente a
66MHz y externamente a 33MHz igual que el 486DX486DX-33, con ello
y gracias a los 8Kb de memoria caché interna casi duplicaba el
rendimiento de un 486DX486DX-33.
Más adelante aparecieron modelos 486DX4 que en realidad
multiplicaban por 3 la frecuencia externa de funcionamiento, es
decir un 486DX4486DX4-100 funcionaba a 33MHz por fuera y a 100MHz
por dentro, AMD llegó incluso a fabricar 486DX5486DX5-133 que
funcionaban a 33MHz por fuera y 133MHz internamente.
José Mª González Ríos
Informática – 2007/2008
60
30
09/03/2008
Familia INTEL: Pentium
En sus batallas legales con Cyrix y AMD para que no
pudieran usar el mismo nombre en los procesadores
compatibles que fabricaban, no consiguió que le dejaran
usar los números 386, 486, etc. como marca registrada, por
tanto cambió la numeración por una palabra como Pentium
que sí le fue posible registrar como marca.
Por eso los procesadores compatibles Pentium de Cyrix se
llaman 6x86 y los de AMD K5 y K6.Los primeros Pentium
aparecieron el año 1991 y funcionaban a 60 y 66MHz (tanto
interna como externamente), las mejoras más significativas
de los mismos eran: un bus de datos de 64bits, un tamaño
doble de la cache interna, pasando a 16Kb, 8Kb para datos y
otros 8Kb para código, una unidad doble de operaciones con
enteros, lo que le permite ejecutar simultáneamente 2
instrucciones por ciclo de reloj (es lo que se llama
superescalar)) y diversas mejorasen el rendimiento, como
superescalar
predicción de saltos, etc.
José Mª González Ríos
Informática – 2007/2008
61
Familia INTEL: Pentium
Los siguientes microprocesadores fueron:
El Pentium Pro, que cuenta en su interior no sólo con la cache L1,
sino también con 256 o 512Kb de caché L2, Utilizó encapsulado
distinto del Pentium.
El Pentium MMX, que incorpora 57 nuevas instrucciones que
operan con varios enteros a la vez, utilizando para ello los 64 bits
de la mantisa de los registros del coprocesador, que pueden
dividir en 8 registros de 8 bits, 4 de 16 o 2 de 32 y operar
simultáneamente con ellos. Utilizó el mismo encapsulado que el
Pentium y se fabricó hasta 233 MHz (velocidad interna, la
velocidad externa era 66 MHz).
El Pentium II, que es básicamente un Pentium Pro con
instrucciones MMX. El Pentium MMX se fabrica hasta 233MHz y
el Pentium II hasta 450MHz. Como en el caso de los 486 estas
velocidades son internas, externamente funcionan a 66MHz o a
100MHz (Pentium II, desde el 350MHz).
José Mª González Ríos
Informática – 2007/2008
62
31
09/03/2008
Familia INTEL: Pentium III
El Pentium III se lanzó 28 de febrero de 1999 con velocidades
de 450, 500 y 550MHz, aunque posteriormente alcanzó 1 GHz.
Este procesador de Intel no descubre ninguna arquitectura
innovadora: simplemente, se trata de un Pentium II modificado
para emplear un conjunto de 70 nuevas instrucciones para la
aceleración de gráficos 3D, reproducción de vídeo y sonido
digital, tratamiento de imágenes y reconocimiento de voz.
Otra característica, que provocó cierto revuelo entre los
consumidores y algunos medios informativos, fue la inclusión en
cada procesador Pentium III de un número de serie único. El
número de serie lo leía el software con el fin de utilizarlo para didiversos fines como, por ejemplo, realizar una identificación de un
usuario en una red local o en Internet.
Levantó airadas críticas entre los grupos defensores de la
privacidad de los usuarios de Internet, por lo que Intel decidió
que dicha característica se deshabilitará por defecto en los
Pentium III de nueva fabricación y que fuera el usuario quién la
activara mediante un software diseñado para tal efecto.
José Mª González Ríos
Informática – 2007/2008
63
Familia INTEL: Pentium iv
Este chip es de diseño totalmente nuevo. La mayor ventaja con
respecto al anterior es que se ha aumentado la longitud de la
pipeline, lo que permite alcanzar mayores velocidades de reloj
(cada instrucción se ejecuta en más etapas, cada una de ellas más
sencilla), el inconveniente es que cuando falla una predicción de
salto la penalización es mayor, por eso a igualdad de velocidad, es
más lento que el Pentium III.
Para la sorpresa de la industria informática, el Pentium 4 no
mejoró el viejo diseño P6 según las dos tradicionales formas para
medir el rendimiento: velocidad en el proceso de enteros u
operaciones de coma flotante.
flotante.
La estrategia de Intel fue sacrificar el rendimiento de cada ciclo
para obtener a cambio mayor cantidad de ciclos por segundo y
una mejora en las instrucciones SSE. Al igual que los demás
procesadores de Intel, el Pentium 4 se comercializa en una
versión para equipos de bajo presupuesto (Celeron), y una
orientada a servidores de gama alta (Xeon
(Xeon),
), además del normal.
José Mª González Ríos
Informática – 2007/2008
64
32
09/03/2008
Familia Intel: Doble, dual, quad
quad,, …
Doble Procesador
Intel tiene cuatro variantes con doble procesador del Pentium 4. La
primera es denominada Paxville
Paxville,, que consiste en poco más que dos
procesadores Prescott colocados en el mismo substrato. Le seguirá ,
situándose el más básico de los Core2 Duo (E4300, 1,86 GHz) por
encima del más potente de los Pentium D (965 EE, 3,73 GHz). Esto se
debe a que la arquitectura Core 2 Duo es muy eficiente, realiza mucho
más trabajo por clock que NetBurst (Pentium 4); asemejándose al K8
(Athlon 64) de AMD en este sentido...
DualCore y QuadCore
Intel a principios de 2006 presenta sus últimos procesadores
orientados a negocios, diseño, juegos, con procesadores de dos y cuatro
núcleos y velocidades de 1,7; 1,8; 2,1; 2,4; 2,5 Ghz. Aunque los precios
del procesador de 4 núcleos ((QuadCore
QuadCore)) aún es muy alto es la muestra
clara de que Intel seguirá al futuro incrementando los núcleos del
procesador para aumentar velocidad y rendimiento multimedia. En Mayo
de 2007 en televisión vía satélite Intel presento un equipo que incluía un
procesador de 80 núcleos que, según los informantes del evento es el
prototipo de los procesadores Intel para 2012.
José Mª González Ríos
Informática – 2007/2008
65
Familia INTEL 80x86
José Mª González Ríos
Informática – 2007/2008
66
33
09/03/2008
Familia Intel 80x86: otras consideraciones
José Mª González Ríos
Name
Date Transistors Microns
Clock
speed
8080
1974
6,000
6
Data
width
MIPS
2 MHz
8 bits
0.64
5 MHz
16 bits
8-bit
bus
0.33
1
8088
1979
29,000
3
80286
1982
134,000
1.5
6 MHz
16 bits
80386
1985
275,000
1.5
16 MHz
32 bits
5
80486
1989
1,200,000
1
25 MHz
32 bits
20
Pentium
1993
3,100,000
0.8
60 MHz
32 bits
64-bit
bus
100
Pentium II
1997
7,500,000
0.35
233
MHz
32 bits
64-bit
bus
~300
Pentium III
1999
9,500,000
0.25
450
MHz
32 bits
64-bit
bus
~510
Pentium 4
2000 42,000,000
0.18
1.5 GHz
32 bits
64-bit ~1,700
bus
Pentium 4
"Prescott"
2004 125,000,000
0.09
3.6 GHz
32 bits
64-bit ~7,000
bus
Informática – 2007/2008
67
Familia INTEL 80x86
José Mª González Ríos
Informática – 2007/2008
68
34
09/03/2008
Familia INTEL 80x86
José Mª González Ríos
Informática – 2007/2008
69
Familia INTEL 80x86
José Mª González Ríos
Informática – 2007/2008
70
35
Descargar