Está en la página 1de 20

Los elementos básicos de una computadora propuestos por Von Neumann y que se

utilizan en la actualidad son los siguientes:

•-Memoria: Su misión consiste en servir de almacenamiento de la información


dentro de la computadora, sean programas o datos, y sin hacer distinción entre
código y datos (no hay una memoria para datos y otra para código ejecutable, está
unificada).

•-Dispositivos de E/S (Entrada/Salida): Engloban todos aquellos periféricos como


puedan ser ratones, monitores, teclados,… es decir, todo lo que proporcione datos al
computador o a través de lo cual salgan de él.

•-BUS de comunicaciones: Las operaciones de accesos a datos, de manejo de


periféricos y otras, han de realizarse a través de un BUS (hilos de comunicación); su
misión engloba por ejemplo la transferencia de datos entre memoria y procesador.

•-CPU - Unidad Central de Proceso (Central Processing Unit): Es la encargada de


controlar y ejecutar todas las funciones del computador. Es la que determina en qué
condición se ejecuta el código y como han de mandarse los datos, generando
además todas las señales de control que afectan al resto de las partes.
Jerarquía de memoria

La memoria en una computadora se organiza en


varios niveles que se organizan en forma
piramidal, en el pico aquello que es más rápido y
también más escaso (registros) y en la base lo más
lento pero al tiempo más abundante (discos)
Los registros pertenecientes al microprocesador son los más rápidos (con un tiempo de
acceso que suele estar entre 1 y 5 nanosegundos) aunque con tamaño reducido
(normalmente no más que 256 bytes). La memoria caché, más lenta, tarda entre 5 y
20 ns (tiempo de acceso). La memoria principal, lo que solemos conocer como RAM,
tiene ya un tamaño bastante mayor pero al tiempo un acceso más lento (entre 60 y
200 nanosegundos).

Finalmente, con la memoria secundaria hacemos referencia normalmente al disco duro,


que es utilizado por la computadora como memoria virtual.

Por ejemplo, cuando accedemos a una base de datos, esta se carga en memoria para
que podamos accederla a más velocidad; sin embargo, si modificamos valores de
estos datos en memoria, tendremos que hacer una actualización desde la memoria al
disco duro para que los cambios sean permanentes; así pues, siempre que
modifiquemos algo en un nivel de la jerarquía, tarde o temprano habrá que transferir
estos cambios a los niveles inferiores hasta llegar a la base de la pirámide.
Todas las operaciones mencionadas, han de realizarse a través de un BUS.
Básicamente, tendremos tres tipos de buses:

-BUS de datos: Transfiere información, como su propio nombre indica. Por


ejemplo, un bus de datos une el procesador con los discos duros o la memoria,
para que estos puedan ser accedidos y su información transferida de un lugar a
otro.

-BUS de control: Transporta las señales que se utilizan para configuración y


control; pueden ser por ejemplo señales que decidan qué periférico ha de
transmitir en un determinado momento, indicaciones para la memoria RAM de si
debe de leer o escribir, etc.

-BUS de direcciones: Su utilidad se hace patente en operaciones como


accesos a memoria; transportaría la indicación acerca del lugar de donde hay
que leer o escribir en la RAM, o en el acceso a un disco duro el lugar físico de
este donde se quiere leer o escribir.

Estos buses se combinan constantemente para poder llevar a cabo


satisfactoriamente las operaciones requeridas por el procesador central.
• Se trata del "gran cerebro" de la computadora, encargado del control de
todo lo que sucede y de la ejecución del código. Se compone de tres
partes principales; la ALU (Arithmethic-Logic Unit), la Unidad de Control y
la Unidad de Registros.
Todos somos impacientes y queremos que nuestra computadora funcione lo más
rápidamente posible y seguramente más rápido que la del operador más cercano!
Diferentes factores determinan con qué rapidez su computadora ejecuta los trabajos.
La Velocidad del Procesador es un factor. Pero ¿qué es lo que determina la velocidad
del procesador?

La Velocidad del Procesador es afectada por:


Reloj del Sistema = Un pulso electrónico usado para sincronizar el procesamiento.
(Entre pulso y pulso solamente puede tener lugar una sola acción).
Medido en megahertz (MHz) dónde
•1 MHz= 1 millón de ciclos por segundo o gigahertz (GHz)
•1 GHz = 1 ciclos de mil millones por segundo.
De esto es lo que están hablando cuando dicen que una computadora es una
máquina de 2.4 GHz .La velocidad de su reloj es de 2.4 mil millones de ciclos por
segundo.
Cuanto más grande el número = más rápido el procesamiento
El reloj de una computadora se utiliza para dos funciones principales:
1. Para sincronizar las diversas operaciones que realizan los diferentes
subcomponentes del sistema informático.
2. Para saber la hora.

Como los relojes de pulsera modernos, el reloj es accionado por un cristal de cuarzo. Las
moléculas en el cristal de cuarzo vibran millones de veces por segundo, a una velocidad
que nunca cambia. La computadora usa las vibraciones en el reloj del sistema para
tomar el tiempo de sus operaciones de procesamiento.

El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por
segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo
se llama Frecuencia del Reloj.

El reloj marca la velocidad de proceso de la computadora generando una señal


periódica que es utilizada por todos los componentes del sistema informático para
sincronizar y coordinar las actividades operativas, evitando el que un componente
maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre
dos componentes sea distinta.
Su misión es la de realizar operaciones aritméticas. Depende del diseño, aunque
encontraremos como básicas suma y resta; puede que queramos disponer de otras más
complejas como multiplicación y división . Tiene las siguientes operaciones lógicas:

• * AND: Un AND hecho a dos bits devuelve 1 sólo si los dos bits son 1 (por ejemplo,
011 AND 101 dará como resultado 001).

• * OR: Un OR hecho a dos bits devuelve 1 si al menos uno de los dos bits implicado en
la operación es 1 (un 011 OR 101 da como resultado 111).

• * XOR: Un XOR, (eXclusive OR, O exclusivo) da 1 operando sobre dos bits si uno de
los dos bits es 1 y el otro 0 ( la operación 011 XOR 101 resulta 110). Este "O
exclusivo" en lógica es el que se daría en un "X está vivo o está muerto"; una de las
dos condiciones ha de cumplirse para que esta sentencia sea cierta.

• * NOT: Esta operación trabaja con un sólo bit; lo que hace es invertirlo (así, NOT 011
dará 100 como resultado).
Las operaciones con la ALU se pueden indicar mediante una señal
de control con los bits suficientes como para diferenciar entre los
tipos de operación existentes.

Es decir, si tenemos 2 bits para la señal de control, las


posibilidades de estos bits serán "00-01-10-11", lo cual da como
resultado una ALU que pueda hacer cuatro funciones distintas.
Con 3 bits, tendríamos "000-001-010-011-100-101-110-111", es
decir, 8 operaciones posibles.

Además de esta señal de control, tendremos dos entradas de


datos; esto es, los operandos de la función que se va a realizar.
Así, si queremos hacer un AND entre dos números, meteremos
cada uno de ellos por una entrada de datos y seleccionaremos el
AND. Por supuesto, habrá al menos una salida conectada para el
resultado de la operación:
Operandos

Unidad
De
Estatus (0/1)
Control

Resultado
Es la que realiza el secuenciamiento del programa que se está
ejecutando; esto es, la ejecución de la instrucción actual y la
obtención de la siguiente.

Su función es obtener las señales de temporización y control para


ejecutar según los datos que entran, determinando el funcionamiento
de la CPU y su comunicación interna.

Al ir a ejecutar una instrucción, la unidad de control pedirá que sea


cargada y la analizará, viendo qué tiene que hacer en la CPU para que
lo que la instrucción dice que ha de hacerse, llegue a buen término;
por ejemplo, si esta instrucción es un AND de dos elementos,
mandaría estos dos a la ALU y activaría las señales de control para
que realizase un AND, para después transferir el resultado donde la
propia instrucción indicase.
La Unidad de Registros
Tiene una gran importancia, ya que el CPU usa estos registros para no tener
que estar siempre accediendo a la memoria. Un registro no es más que un
"pedazo" de memoria con una velocidad de acceso muy grande,
normalmente de un tamaño que no supera los 64 bits (siempre una cifra
tipo 16, 32, 64, 128...).

Sus usos, son diversos; mientras que por ejemplo cuando se ejecuta una
instrucción esta se guarda en un registro mientras dura su procesamiento,
pueden usarse también para almacenar datos con los que operar o hacer
transferencias con la memoria, etc.

Hay dos tipos básicos de registros : De propósito general y de propósito


específico.
Registros de propósito general
Podemos darles cualquier uso. Son accesibles, visibles al programador,
que puede utilizarlos. Sirven para volcado de datos, instrucciones... por
ejemplo, en el MC68000 de Motorola, existen 16 registros de 32 bits de
propósito general (A0-A7 y D0-D7, para almacenar direcciones y datos
respectivamente). En otros como los 80x86 de Intel tenemos otra serie de
registros de 32 bits con nombres como EAX, EBX, ECX, EDX, etc.

Registros de propósito específico


Son registros que utilizan la unidad de control; el programador no puede
utilizarlos, al menos directamente. Los principales (cuyo nombre cambia
según cada implementación pero que por lo general se suelen encontrar
en toda CPU) son:
Son registros que utilizan la unidad de control; el programador no puede
utilizarlos, al menos directamente.
• IR (Instruction Register): Registro de Instrucción, su misión es contener la
instrucción que se está ejecutando por la CPU; es el Registro de Instrucción
Mientras la instrucción se esté ejecutando, se contendrá ahí.
• PC (Program Counter): Registro de Contador, su misión es contener la dirección
de la instrucción siguiente a la que estamos ejecutando. Por ello, permite ejecutar
un programa de modo secuencial (línea a línea), tal y como ha sido programado.
• SR (Status Register): Registro de Estado, su misión es reflejar en cada momento
en qué situación se encuentran algunos detalles de la CPU (por ejemplo,
almacena resultados de comparaciones) de cara a tomar decisiones, así como
otros parámetros que pueden necesitar ser consultados. En la mayoría de las
implementaciones este registro es, al menos, accesible.
• SP (Stack Pointer): Apuntador a la Pila, es necesario para poder hacer llamadas
a funciones en programas y para muchas otras acciones.
• MAR (Memory Address Register): Registro de Dirección de Memoria, es el que
finalmente comunica la CPU con el bus externo. Concluída la instrucción, el PC se
vuelca en el MAR, y el bus de direcciones localizará la siguiente instrucción según
el contenido de este registro.
• MDR (Memory Data Register) : Registro de Datos de Memoria, es el que pone en
contacto la CPU y el bus de datos, que contiene la información para ser transferida
por él o para recibirla.
Podemos distinguir dos fases:

• Fase de Fetch:
1. Al comienzo del procesado de una nueva instrucción, el registro específico PC
(Registro de Contador) de la CPU contiene la dirección de la misma.
2. El contenido de este registro se pasará al MAR (Registro de dirección de memoria)
transfiriéndose a la memoria mediante el bus de direcciones, y se activará esta
memoria para indicar que se desea realizar una lectura sobre ella enviando una señal
adecuada a través del bus de control.
3. Así, la instrucción llegará hasta el MDR (Registro de datos de Memoria), de donde se
enviará a la Unidad de Control para su procesamiento.

• Procesamiento: Una vez llega la instrucción a la Unidad de Control, ésta distinguirá


según su codificación de qué tipo es y realizará las operaciones necesarias para
ejecutarla.

Ejemplo:

Instrucción CMP AC, 12.


1. Una vez que llegue tras la fase de fetch a la Unidad de Control, de nuevo se utilizará la ALU; en esta
ocasión se le indicará mediante señales de control que realice la operación de resta (SUB), metiendo
por un lado el 12 y por otro el registro AC.
2. Sin embargo, la salida de la ALU se perderá pues lo único que nos importa es si el resultado de la
operación es 0 (si el contenido de AC - 12 resulta cero, está claro que AC contiene un 12).
3. En caso si AC = 12, se modificará el SR Registro de Estado para indicar que el resultado de la anterior
operación fue cero, es decir, que AC vale efectivamente 12
4. Posteriormente, de nuevo se sumaría el tamaño de esta instrucción al registro PC Contador de
Programa y se haría el fetch de la siguiente instrucción.
Estructura del procesador

Nuestro pequeño ordenador, tendrá las siguientes características:


• Una memoria de 64Kb (65536 bytes), que será direccionable con un registro MAR en el
procesador de 16 bits.
• Un registro de propósito general de 16 bits, llamado AC; además, un SR (estado), MAR
y MDR (datos y direcciones) y PC.
• Una ALU en el procesador con 8 operaciones: AND, OR, NOT, XOR, ADD (suma), SUB
(resta), INC (incrementa en uno) y DEC (resta uno).
Juego de instrucciones

Las instrucciones que va a poder ejecutar la CPU son las siguientes:


• Aritmético-lógicas: las que realiza la ALU, es decir, AND, OR, NOT, XOR, ADD, SUB,
INC y DEC.
• Para mover posiciones de memoria entre sí, al registro AC o desde el registro AC (todo
ello reunido en la instrucción "MOV").
• Salto en ejecución (JMP)
• Comparación (CMP): Lo que hará será actualizar el registro de estado en la CPU
dependiendo del resultado de la comparación, para permitir saltos condicionales.
• Salto condicional (JE -> Salta si Igual (Jump if Equal), JNE -> Salta si no Igual (Jump if
Not Equal)).
• Parada del procesador (STOP)
Algunos ejemplos de la implementación de estas instrucciones serían:
• AND [1214h],AC
• OR [1263h], [1821h]
• MOV AC,[8241h]
• JMP 2222h
• CMP AC, 12
• JE 1111h
En este caso y dado que nuestro pequeño ordenador no posee operación de multiplicar, lo que va a hacer la rutina
siguiente es la multiplicación entre dos números contenidos en las direcciones de memoria [1000h] y [1002h] poniendo
el resultado en [1004h].

MOV AC,[1000h] ; Cargamos en AC el primer


operando
MOV [1004h],0 ; Ponemos a cero el resultado
Bucle DEC AC ; Decrementamos AC en uno
ADD [1004h],[1002h] ; Añadimos al resultado el
segundo operando
CMP AC,0
JNE Bucle
STOP

También podría gustarte