Está en la página 1de 20

Apuntes de Estructura de Computadores

Estructura de computadores
Tema 1 - Introducción
Esquema básico del computador Von Neumann

Toda la información se encuentra en la memoria principal y en los registros, además de en los


discos a los que se accede mediante la unidad E/S. Esta información puede ser datos o
instrucciones. La memoria principal almacena estos datos e instrucciones en binario sin
interpretación por posición. Todas las instrucciones están almacenadas consecutivamente y se
ejecutan de igual forma. La única manera de acceder a la MP es conociendo su dirección
dentro de la memoria. El ancho de palabra de la memoria es de 32 o 64 bits (4 u 8 bits).

Las instrucciones de la MP se ejecutan en la


CPU, en la unidad de control, que es donde se
coordinan todas las acciones de dicha
instrucción. Muchos datos necesitan para por la
ALU (Unidad Aritmético-Lógica en sus siglas en
inglés). En la ALU es donde se realizan las
acciones de las instrucciones, se realizan
operaciones aritméticas y lógicas muy sencillas.

La memoria principal es mucho más lenta (hasta


100 veces) que el procesador. Para evitar que
esto ralentice el trabajo del procesador se crea un registro pequeño (como una pequeña
memoria) para disminuir la comunicación directa con la memoria.

La memoria principal es volátil, se hace con tecnología RAM. Necesitamos una memoria no
volátil donde se pueden almacenar programas o datos permanentemente. Todos estos
dispositivos están fuera del computador pero necesitamos que se comuniquen con él, por ello
existe la unidad de E/S. También otros periféricos son importantes para darle utilidad al
computador, todos ellos se comunican a través del mismo dispositivo.

1
Apuntes de Estructura de Computadores

Memoria principal
Es un conjunto de CI. Podemos verla como una lista ordenada de posiciones donde se
almacenan datos (con palabras de igual longitud) a razón de una palabra por posición.

 m bits: 0, 1, 2, …, 2m-1  2m datos distintos


 m suele ser 8, 16, 32, 64
 n bits: 0, 1, …, 2n-1  2n direcciones distintas

Para acceder a la memoria primero la unidad de control debe procesar la instrucción con la
que lo pedimos y enviar una petición (MEMRQ). La memoria tarda un tiempo determinado en
introducir el dato o instrucción solicitado en el bus que se denomina tiempo de acceso (tacc) y
que depende de su velocidad. También hay que tener en cuenta su tamaño (que suele ser de 4
a 8 GB). Estas acciones se pueden representar mediante cronogramas.

Cronograma
Este cronograma es un ejemplo. En este caso la instrucción es la lectura de la memoria
principal.

Primero se coloca el bus de direcciones. La dirección debe ser estable.

Cuando se estabiliza se hace la petición de memoria, siempre debe activarse después. Como
MEMQR tiene rayita arriba activo es cuando está a cero.

2
Apuntes de Estructura de Computadores

Se mantiene activa hasta el fin de la petición.

Se activa la instrucción de lectura.

Cuando la instrucción finaliza se desactiva la petición.

Entonces se obtiene el dato, se van activando hasta completarse y estabilizarse.

El tiempo de acceso es el tiempo que tarda el procesador en comenzar la instrucción desde


que se envió la dirección. El tiempo de lectura es el tiempo total que se tarda en leer la
dirección.

La escritura tiene un cronograma simétrico.

Permanece inactiva

El dato se da en este
caso por la CPU.

3
Apuntes de Estructura de Computadores

Instrucción típica
En casi todas las instrucciones siempre se realizan ciclos de lectura y/o escritura. El primer
paso siempre es un ciclo de lectura para leer la instrucción.

Siguiente
instrucción

Debe leer un dato Debe escribir un


en memoria. dato en memoria.

Sus parámetros más importantes son la longitud de palabras, direcciones y contenido. Algunos
términos importantes de una memoria principal son:

 Capacidad (Cantidad de palabras). Número de direcciones o número de bits en cada


dirección  8 GB (ordenador), 512 MB (móvil), 32 KB (lavadora).
 Ancho de palabra  Los más habituales son: 64 y 32 bits u 8 y 4 Bytes (es lo mismo).
 Tiempo de acceso. Tiempo medio de acceso a memoria de lectura y escritura.
Depende de la tecnología de la memoria. Es mucho más lenta que el procesador,
aunque es algo que soluciona el uso de una jerarquía de memoria.  10 – 60 μs

Por ejemplo:

 tCPU = 1ns = 0,1 μs


 tDISCO = 10 ms = 10000 μs = 10000000ns

Organización del espacio de memoria


Sin embargo, en un computador pueden coexistir muchos programas e instrucciones al mismo
tiempo y, sin orden, sería fácil confundir las instrucciones y los datos entre sí. De ahí la
importancia de los compiladores, para poner orden en la memoria.

Aquí se encuentran las instrucciones, el programa.


Espacio de seguridad.
Datos importantes desde el inicio del programa.

Cuando el código necesita hueco para datos el SO los va


colocando en esta zona según se necesite.

Aquí se va colocando y sustrayendo la información de


parámetros y de retorno de las subrutinas que precise el
código.

4
Apuntes de Estructura de Computadores

La pila es una zona de memoria que debe recuperarse más tarde. Tiene una arquitectura LIFO
(Last In First Out). La pila está acotada en su cima por un registro especial llamado puntero de
pila (SP).

Con esta estructura el SO puede controlar donde hay instrucciones y donde hay datos en la
memoria. Si se intenta acceder a algún sitio que no se debe puede controlarse y minimizar el
número de errores.

Unidad central de proceso (CPU en inglés)


Dentro de la CPU hay tres elementos.

Unidad aritmético-lógica (ALU en inglés)


En la ALU es donde se realizan las operaciones necesarias de las instrucciones. Suelen trabajar
con registros ya que el tiempo de acceso de estos es mucho menor que el de la memoria. Así
mismo, el resultado también suele guardarse el resultado en los registros. Además, la ALU
genera registros de estado que proporcionan información sobre el estado de la operación
realizada.

Origen de los operandos en la ALU


El modelo de ejecución de la máquina viene definido por el lugar donde se encuentran los
operandos en una instrucción aritmético-lógica. Hay tres modelos:

 Memoria – Memoria (M–M)


 Registro – Memoria (R – M)
 Registro – Registro (R – R)

Si tienes una ALU que solo puede operar R-R y algún operando (o ambos) está en memoria,
primero tendrás que traerlo de la Mp a un registro y después operar con él.

Registros
Se distinguen tres tipos de registro.

5
Apuntes de Estructura de Computadores

Registros de propósito general


Son los que se encuentran en este banco de registros y podemos usarlos libremente en
cualquier instrucción. Que estén agrupados quiere decir que tienen señales de control
comunes. Este es el lugar donde se guardan los (generalmente pocos) registros que más
rápidamente se van a operar. Pueden salir de dos en dos para facilitar su inclusión en la ALU.

 De propósito específico: PC(contador de programa), RE(Registro de Estado), SP


(Puntero de pila)
 Transparentes al usuario: RI(Registro de Instrucciones), AR(Registro de Direcciones),
DR(Registro de Datos)

El Banco de registros de propósito general tiene el siguiente aspecto conceptual:

Existen dos señales de control


para poder sacar los registros
en pareja.

El multiplexor permite seleccionar el origen del dato: de la ALU o de la Mp. En general lo que
tendremos en los registros se utilizará en una instrucción determinada.

Los otros registros tienen estructuras diferentes.

Registros de propósito específico


Su uso está restringido a determinadas instrucciones y, en esas instrucciones, suele aparecer
de forma implícita.

Contador de programa
Contiene la dirección de la siguiente instrucción a ejecutar, suele trabajar de forma secuencial.

6
Apuntes de Estructura de Computadores

Incrementador automático para


avanzar de forma secuencial

Si quisiéramos cambiar el contenido del PC sin hacerlo de forma secuencial tenemos que
acceder al PC desde la memoria.

Ejemplo
ld r1, /1000
add r1, r2 Utiliza el incremento automático.
inc r1
jmp Z,/2000 Dependiendo de si se cumple o no la condición utilizará el
dec r2 incrementador o tendrá que echar mano de la memoria.

Registro de estado
Debemos actualizarlo cada vez que se haga una operación en la ALU. En él se guardan los flags.
Hablaremos más de él en la especificación de la ALU.

Puntero de pila (SP)


El puntero de pila da información sobre cuál es el último dato de la pila ya que contiene la
dirección de la Mp en la que se encuentra este o la primera posición vacía. Podemos decir que
apunta a la cima de la pila. En algunos procesadores no existe el puntero de pila, en ellos se
utiliza un registro de propósito general como puntero de pila.

Si se realiza una operación PUSH para añadir un dato a la pila, se aumenta SP y se coloca el
nuevo elemento en la nueva posición.

7
Apuntes de Estructura de Computadores

Si se quiere extraer un dato de la pila se realiza la operación POP, entonces se extrae el


contenido del registro al que apunta SP y se decrementa SP.

Registros transparentes
Son registros propios del procesador que, en ningún caso, pueden ser controlados o
modificados por el usuario.

Registro de instrucción
Contiene la instrucción que se está ejecutando. Esta instrucción está organizada en partes.

8
Apuntes de Estructura de Computadores

Si la instrucción tiene dos palabras, en el IR solo se carga la primera (la que contiene el código
de operación [CO] en cualquier caso). La segunda palabra no se sabe donde irá, pero nunca al
IR. El CO es el que da la información al procesador para activar las señales de control
necesarias.

Registro de direcciones
Contiene la dirección que se carga cuando se va a leer o escribir en memoria.

Registro de datos
Contiene el dato que se ha leído o se va a escribir en memoria. Tiene dos señales de control ya
que se puede cargar desde dos sitios diferentes, desde el procesador o desde memoria.

Unidad de control
La Unidad de control (UC) contiene todas las señales de control necesarias para controlar el
resto de elementos del controlador. Está sincronizada en el tiempo gracias a su entrada de
reloj.

9
Apuntes de Estructura de Computadores

La UC obtiene información de dos registros: del IR, ya que el


CO indica que elementos necesitamos cargar para realizar la
instrucción y, también, debe tener acceso al SR (Registro de Instrucciones: tipos y frecuencias
estado) ya que algunas instrucciones precisan conocer el  Transferencia 45-50%
estado de la operación para continuar.  Bifurcación  30%
 Aritméticas-Comparación 
La UC indica en qué momento se activan las señales de 15%
control de cada instante. En su entrada se encuentra el  Otras  5%
registro de instrucciones (RI), el registro de estado (RS) y el
reloj. En su salida se encuentran todas las señales de control
del resto de componentes.

Cuando una instrucción vaya del registro de direcciones a la U. de control se analiza y se


activan las señales pertinentes. Las instrucciones se dividen en fases gracias al contador de
fases. En cada fase se activan unas señales u otras.

Es importante tener un juego de instrucciones lo suficientemente flexible, simple y completo


para poder hacer cualquier cosa sin saturar la U. de control y que trabaje lo más rápidamente
posible.

Fases de ejecución de una instrucción

La fase de Fetch es común a todas las instrucciones del mismo computador. En esta fase debe
leerse la memoria buscando la instrucción, después llevarla al IR y finalmente incrementar el
PC. En la fase de análisis o decodificación la unidad de control decodifica el CO y entonces se
sabe que instrucción es. Por último en la fase de ejecución se leen los operandos de la
instrucción, se realizan las operaciones necesarias y se almacena el resultado. Esta fase es
diferente para cada instrucción, incluso hay instrucciones que no tienen esta fase.

10
Apuntes de Estructura de Computadores

Ejemplo 1 de instrucciones a ejecutar

Primera instrucción

Fetch: PC → AR; RD, MEMRQ; (Esperar) Bus


datos → DR; DR → RI; Incrementamos PC
(PC+1) Específica del ciclo de fetch

Siempre que se use la memoria y se lea en ella


lo que se hace es similar, quitando la parte
específica del ciclo de fetch.

A continuación vendría la fase de análisis y


codificación.

Análisis: Se hace automáticamente en la UC.

Ejecución: leer 2ª pal: PC → AR; RD, MEMRQ;


(Esperar) BD → DR; DR → AR; incrementamos
PC; RD, MEMRQ; BD → DR; DR → BR(r1).
Escritura de resultado

RD, MEMRQ

Segunda instrucción

Fetch: PC → AR; RD, MEMRQ; (Esp) BD → DR; inc PC; DR → RI

Ejecución: r1 → A; r2 → B; ALU(A – B); ALU → r1; mod R. Estado


Búsqueda de Operación Escritura de resultado
operandos

11
Apuntes de Estructura de Computadores

Tercera instrucción

Fetch: PC → AR; RD, MEMRQ; (Esp) BD → DR; inc PC; DR → RI

Ejecución: PC → AR; RD, MEMRQ; (Esperar) BD → DR; DR → AR; inc PC; r1 → DR; RD, MEMRQ;
(Esp).

Cuarta instrucción

Fetch: PC → AR; RD, MEMRQ; (Esp) BD → DR; inc PC


si Z=1; DR → PC

Ejemplo 2

Suponemos direccionamiento de Mp a nivel de palabra.

Fetch
El procesador debe leer la instrucción de Mp. La dirección de dicha instrucción se encuentra en
el PC:

AR ← PC
Lectura de Mp
DR ← M(AR) ; Tras un tiempo de acceso el contenido de la
; dirección de Ar se pasa al DR, por tanto en
; DR se encuentra la instrucción.
IR ← DR
PC ← PC + 1

Después vendrá la fase de decodificación y la fase de ejecución que sumaría los dos registros.

Ejemplo 3

LOAD carga un registro desde la memoria.

12
Apuntes de Estructura de Computadores

La dirección absoluta (/1000) probablemente no quepa en una sola palabra por lo que
debemos usar dos palabras. La lectura de la segunda palabra no es un Fetch, no se carga como
la primera.

Fetch
AR ← PC
Lectura de Mp
DR ← M(AR) ; DR contiene la primera palabra de la ins
IR ← DR
PC ← PC + 1

Ejecución
AR ← PC
Lectura de Mp
DR ← M(AR) ; DR contiene la primera palabra de la ins
AR ← DR
Lectura de Mp
R1 ← M(AR)

Tipos de instrucciones
Existen tres tipos básicos de instrucciones:

 De transferencia: Transfieren información entre diferentes partes de la máquina.


o Entre Mp y procesador.
o Entre E/S y procesador.

Ejemplo:

o LOAD (carga en registro desde Mp).


o STORE (Almacena en Mp desde registro).
 De procesamiento: Realizan operaciones aritméticas, lógicas o de desplazamiento
entre operadores.
 De bifurcación o salto: De los que existen cuatro tipos
o Con retorno, se salta a otro código y se vuelve.

o Sin retorno, se salta a otro código y no se vuelve.

o Condicionales, se salta si se da una condición.


o Incondicionales, se salta siempre.

13
Apuntes de Estructura de Computadores

Instrucciones privilegiadas
Son instrucciones que se reservan al SO, por tanto un usuario no puede ejecutarla. Para evitar
que lo haga la máquina tiene dos modos diferentes de acceso:

 Modo usuario. Existen instrucciones que no se pueden ejecutar y zonas de memoria a


las que no se puede acceder.
 Modo privilegiado o supervisor. Pueden ejecutarse todas las instrucciones del juego
de instrucciones y puede accederse a todas las zonas de memoria y, por tanto,
aprovechar todos los recursos.

Para diferenciar el modo de ejecución hay un bit que se almacena en el SR, junto a los flags de
condición. Se denomina bit N y toma un valor si está en modo usuario y el contrario si está en
modo supervisor.

Cuando un usuario quiere hacer algo que su modo no permite el procesador lanza una
excepción. Esas excepciones se tratan en la UC.

Complejidad de la UC
La complejidad de la UC depende de tres factores:

 El número de CO diferentes, es decir, el número de instrucciones que se puedan


ejecutar en la maquina.
 El formato de las instrucciones.
 Los modos de direccionamiento posibles. Las maneras diferentes de descubrir la
ubicación de los operandos.

Unidad de Entrada/Salida

14
Apuntes de Estructura de Computadores

Conecta la CPU con dispositivos periféricos. Estos nos permiten cargar tanto datos como
programas. Los periféricos facilitan la interacción persona/máquina.

Permite cargar los programas y datos que va a utilizar el periférico en la Mp. Es necesario
debido a la dificultad de unir directamente los periféricos al procesador (por la diferencia de
volumen de datos y velocidad).

Problemas previos
Lo primero que nos preguntamos es qué y cuantos periféricos vamos a utilizar para que el
módulo de E/S pueda comunicarse con ellos. Sin embargo, vemos que el número de periféricos
es demasiado grande para que el módulo sepa comunicarse con cada uno de ellos con su
lenguaje específico.

Además, cada periférico tiene diferentes formas de funcionar y diferentes cantidades de


información y velocidad.

Por ello es necesario que los fabricantes de ordenador publiquen sus especificaciones y, así, los
fabricantes de periféricos pueden adecuarse a ellos.

Estructura de un módulo de E/S


Un módulo de E/S está compuesto de dos partes: una parte que se conecta a los buses del
computador y otra que se conecta al periférico en sí. La parte de conexión (identificación)
trabaja con registros, algunos invisibles y otros conocidos por el usuario. Entre estos últimos
están:

 Registro de control: Envía las órdenes, parámetros e instrucciones de configuración al


procesador. Es un registro de entrada.
 Registro de estado: Podemos leer la información del estado en el que se encuentra el
periférico y el paquete de información enviando: si hay problemas, velocidad,...
Registro de salida.
 Registro de datos: Mediante este registro se envían los datos propiamente dichos
tanto del periférico al procesador como a la inversa. Es el único registro de
entrada/salida.

Cada registro tiene una dirección propia que permite la comunicación con el procesador.
Funciona de forma similar y, para leer el módulo, el CPU tiene que enviar un proceso de
lectura.

Direccionamiento de dispositivos
El módulo asigna a cada registro una dirección. Esta se lanza a través del bus de direcciones.
Puede hacerse de dos formas:

 Mapa de entrada-salida y memoria principal común. El conjunto de direcciones es el


mismo para E/S y para Mp. Se usan direcciones distintas pero las mismas señales de
control para acceder al módulo y a Mp. Se pueden utilizar entonces las mismas
instrucciones de acceso.

15
Apuntes de Estructura de Computadores

 Mapa de entrada-salida y memoria principal separados. En este caso se puede usar


la misma dirección para E/S y Mp. La diferencia entre sí reside en la señal de control
utilizada que es diferente.
o MEMRQ → Mp
o IOREQ → E/S

También hay que utilizar instrucciones específicas para E/S

 LOAD y STORE → Mp
 IN y OUT → E/S

Por ejemplo:

Transferencia de datos
Comunica el módulo con el periférico propiamente dicho. Existen varias formas de
transferencia.

E/S programada
Es el procesador el que se encarga de todos los procesos de E/S:

 Comprueba el estado del periférico.


 Si está preparado, enviar o recibir datos.

Estas operaciones el procesador las efectua mediante operaciones de lectura/escritura de los


registros del módulo.

En el bucle de espera el procesador no hace nada.

16
Apuntes de Estructura de Computadores

E/S con interrupciones


Existe otro modo de funcionamiento en el que, mientras está activo el bucle de espera otras
instrucciones se ejecutan de esta forma se puede disminuir el tiempo de ejecución de los
programas. Este modo se denomina, E/S con interrupciones. En él, el periférico avisa a la CPU

17
Apuntes de Estructura de Computadores

que está preparado enviando una señal de interrupción (INT). El procesador le atiende y se
encarga de hacer la transferencia de la siguiente forma:

 Interrumpe la ejecución del programa.


 Salva el estado de la máquina.
 Ejecuta una rutina de tratamiento de interrupción (RTI).
 Restaura el estado.
 Continúa la ejecución del programa interrumpido.

También existe una última forma de funcionamiento denominada E/S de acceso directo a
memoria en la que es el periférico el que hace todo el trabajo.

Software de sistemas
Son determinados programas necesarios para que el computador funcione y pueda
controlarse por el usuario.

Editores de texto
Necesarios para poder escribir los programas con lenguajes de alto nivel. Estos programas
serán los que el usuario necesite para controlar el computador. Este código fuente será el que
se lleve al compilador.

Compiladores y ensambladores
Los compiladores traducen el código escrito por el usuario en código ensamblador y los
ensambladores convierten el código ensamblador en código máquina comprensible para el
ordenador.

Cargadores (bootstrap)
Es un pequeño programa en memoria principal, siempre en el mismo sitio, que no puede
borrarse y cuyo cometido en encender toda la máquina.

Depuradores
Es muy extraño escribir un programa y que ejecute sin errores a la primera. Como siempre se
tienen errores y no siempre es fácil ver donde estos programas depuradores nos ayudan a
descubrir donde están.

Sistema operativo
Este programa en realidad es un enorme conjunto de programas básicamente dedicados a
controlar el computador. Tres tareas básicas de un OS son:

 Gestión de recursos (CPU, Mp, E/S): Cuando un programa necesita acceder a


memoria, utilizar la CPU, etc. es el OS el que asigna los turnos de la forma más
eficiente.
 Ocultar la complejidad de los periféricos: La gestión y utilización de un periférico es
muy tediosa y complicada, por ello el OS se encarga de facilitar la vida al usuario
haciendo los periféricos sencillos y visuales.
 Protección de recursos: Zonas de memoria inaccesibles para otros programas.

18
Apuntes de Estructura de Computadores

Parámetros característicos de un computador


Ancho de palabra
Dato privilegiado del computador. ALU, Mp, Buses,... utilizan anchos de palabras. Siempre es
un múltiplo de 8 bits.

8, 16, 32, 64 bits

Tamaño de la memoria
Capacidad de la memoria. No solo de la memoria principal sino de otros tipos de memorias
(CD, DVD, U. de disco, U. de cinta, Flash). Son potencias de dos.

K (kilo, 210), M (Mega, 220), G (Giga, 230), T (Tera, 240), P (Peta, 250) bytes

Velocidad de reloj
El reloj es una señal digital constante y fija, es uno de los parámetros de entrada de la U. de
control. La velocidad de reloj mide la frecuencia de esta señal. Se mide en hercios del orden de
Megahercios (MHz) y Gigahercios (GHz).

Duración de las operaciones


Es el tiempo que tarda la ALU en hacer una operación.

mili (m), micro (u, μ), pico (p), femto (f) segundos

Capacidad de cómputo
Velocidad del procesador. Se mide en flops, operaciones en coma flotante por segundo.

MIPS (Millones de Instrucciones Por Segundo), MFLOPS, specint, specfr

Aunque la flexibilidad y el tipo de instrucción son importantes para medir su velocidad.

Ancho de banda
Velocidad a la que los datos avanzan por el bus de datos. Bps es bytes por segundo y bps (bits
por segundo).

KB/s (KBps), MB/s (MBps), Kb/s (Kbps), Mb/s (Mbps)

Ejercicio
Tenemos una velocidad de reloj de 200 MHz y este compilador divide las operaciones en 5
fases. Sabemos que 200 MHz son 200 millones de ciclos por segundo. También sabemos:

 Fetch  12 ciclos
 Decodificación  1 ciclo
 Búsqueda operandos  1 ciclo 16 ciclos de reloj
 Operación  1 ciclo
 Escritura resultados  1 ciclo

¿Cuál es la capacidad de procesamiento o cómputo expresada en MIPS?

19
Apuntes de Estructura de Computadores

Aunque hay otra forma de resolverlo

20

También podría gustarte