Wednesday, May 6, 2015

PARTES DEL COMPUTADOR

En este video se pueden ver las partes mas importantes del computador,señalando claramente cada una de sus partes y las funciones de algunas.
espero que les sirva de ayuda Gracias..!




Tuesday, May 5, 2015

DISEÑO DEL SISTEMA DE UN MICROPROCESADOR

Esencialmente, un microprocesador es un circuito de alta escala de integración (LSI), compuesto de muchos circuitos mas simples como son los Fip-flops, contadores, registros, decodificadores, comparadores, etc. todos ellos en una misma pastilla de silicio, de modo que el microprocesador puede ser considerado un dispositivo lógico de propósito general o universal. Todos estos componentes que llevan a cabo físicamente la lógica y operación del microprocesador se denominan el hardware del micro. Además existe una lista de instrucciones que puede realizar o acciones que puede llevar a cabo el micro. Éstas constituyen el lenguaje del micro o software.
Pongamos de ejemplo un micro que puede realizar cuatro tareas lógicas: AND, OR, NAND, XOR. Estas cuatro acciones serian el lenguaje del micro y a cada una le corresponderá una combinación binaria de dos dígitos.
Acción
Código
AND
00
OR
01
NAND
10
XOR
11

Sin embargo, en la actualidad se requiere que un sistema cuente con una unidad de control, unidad aritmético / lógica y algunos registros para que se le pueda denominar microprocesador. La forma en que están conectadas estas unidades se denomina la organización de un microprocesador.
Los sistemas digitales simples pueden ser diseñados por medio de tablas de estado. De esta manera se llega a circuitos lógicos secuenciales de grado no muy complejo. Sin embargo, a la hora de diseñar circuitos lógicos complejos las tablas de estado se tornan increíblemente complicadas, extensas y poco prácticas. Una manera de poder llegar a este tipo de circuitos es describir el sistema digital desde el punto de vista operacional. De esta manera se encuentran cuatro partes fundamentales en los sistemas digitales complejos:
a.       Registros
b.      Información en código binario
c.       Operaciones realizadas con la información en los registros
d.      Funciones de control que inician las operaciones.
Esta manera de ver al sistema (operacionalmente) se conoce también como lógica de transferencia ente registros y fue sumamente útil en el diseño de sistemas lógicos complejos como los sistemas de procesamiento o procesadores. En la lógica de transferencia entre registros la unidad registro abarca una gran gama de circuitos lógicos como son los contadores, registros de desplazamiento, unidades de la memoria, etc. Una unidad de memoria se considera como una colección de registros de almacenamiento donde se guarda la información. De hecho, un flip-flop se considera como un registro de un bit. La información binaria puede ser código, números binarios, decimales codificados en binario, etc. Dicha información es guardada en los registros antes mencionados. Las operaciones realizadas con la información en los registros se conocen como micro operaciones. Un micro operación es una operación elemental que se realiza en paralelo durante un periodo del pulso de reloj. Por ejemplo, sumar, restar, desplazar, borrar, cargar, etc. Las funciones de control, son las condiciones que deben de prevalecer para iniciar una secuencia de operación.
Es necesario a este punto normalizar el lenguaje de transferencia que se utilizará de aquí en adelante. En nuestro caso utilizaremos los siguientes símbolos:

Diseño de un microprocesador

Hasta ahora hemos revisado paso por paso y en separado conceptos, procedimientos y circuitos que son utilizados en el diseño de micro procesadores. Sin embargo, ya es tiempo de que juntemos toda esta información para lograr el fin que hemos perseguido desde el inicio de este artículo: el diseño del microprocesador. En esta parte es cuando hay que poner todos los en alerta y prepararse para algo que, a mi manera de ver, es el secreto de la tecnología. Si miramos a nuestro alrededor podemos observar un sin fin de aparatos electrónicos de diferentes usos, formas y diseños. La mayoría, no digo todos, utilizan en su interior un sistema basado en uno o más microprocesadores. Los más simples podrán basarse en micro controladores, pero los complejos y, sobre todo, de propósito general, como las computadoras contienen un procesador principal y varios procesadores a su alrededor como es el chip set.

 Organización vs Arquitectura

Antes de entrar de lleno al diseño de nuestro micro creo necesario definir y delimitar dos conceptos que aparecen siempre juntos pero que cuesta trabajo decir cuando comienza uno y termina el otro. Me refiero al concepto de organización y al de arquitectura. ¿Por qué en algunos temas nos presentan como organización algo que pudiera tomarse como arquitectura, o viceversa? A continuación se presentan algunas definiciones de arquitectura:
Arte de diseñar una máquina con la cual sea agradable trabajar”. (Caxton Foster - 1970)
“Determinar componentes, funciones de los componentes y reglas de interacción entre los " (N. Prassard - 1981).
“La estructura de la Computadora que el programador necesita conocer con el objeto de escribir programas en lenguaje de máquina correctos " (Informe final del proyecto CFA Arquitectura de Familias de Computadoras).
Para mi gusto, las definiciones que presenta William Stallings en su libro Organización y Arquitectura de Computadoras (1996) delimitan de manera clara la diferencia entre los dos temas antes mencionados.
Arquitectura: La arquitectura se refiere a los atributos de un sistema que son visibles para un programador o bien, a aquellos atributos que tienen un impacto directo en la ejecución lógica de un programa.

Organización: La organización se refiere a las unidades funcionales y sus interconexiones, que dan lugar a especificaciones arquitectónicas.
Lo interesante de estos conceptos es que para el diseño de nuestro microprocesador necesariamente tendremos que involucrarnos en su arquitectura (conjunto de instrucciones, numero de bits para representar números, instrucciones y caracteres, etc.) y en su organización (señales de control, memoria, registros, etc). De hecho, en la actualidad muchos microprocesadores han conservado su arquitectura de una manera u otra pero su organización ha cambiado para mejorar su rendimiento. En las mismas compañías que ofrecen microprocesadores la arquitectura es la misma o muy similar con diferencia únicamente en la organización lo que hace variar precios y rendimiento.

Organización del microprocesador
Comencemos por definir y explicar cada una de las partes de este microprocesador.

MAR: Este es el registro de direcciones de memoria (memory adress register). Debido a que la memoria RAM requiere cierto tiempo para encontrar y posicionarse en una dirección, dicha dirección debe estar siempre en las entradas. Este registro funciona como buffer del PC.

PC: Este es un contador (program counter) que sirve para tener la dirección de memoria de la siguiente instrucción o dato que se debe de leer. Esto es, si en la memoria comenzamos con la localidad 0000, el contador, después de apuntar hacia esa dirección y después de haber tomado el dato contenido en la memoria, debe ser incrementado en uno para que contenga un 0001, o sea, apunte a la siguiente dirección de la memoria. En nuestro caso, este contador debe ser capaz de cargar datos en paralelo para poder realizar instrucciones de salto. Por ejemplo, el contador puede tener el numero 0100, y en esa dirección, la memoria contiene una instrucción de salto a la dirección 1000. El PC debe ser capaz de cargar este nuevo número y seguir su cuenta a partir de él.

MBR: Este registro es el buffer de datos de la memoria (memory buffer register). Cuando la memoria se posiciona en una dirección, muestra el contenido en su bus de datos, pero estos datos o contenido cambiaran si se cambia la dirección que se pone en las entradas del bus de direcciones de la memoria. Es por esto que es necesario un buffer de salida en la memoria. También nos servirá como buffer para instrucciones de escritura a la memoria.

IR: Este registro el es registro de instrucciones (instruction register). Cuando el dato contenido en una dirección de memoria es una instrucción (suma, resta, salto, etc.) se manda a este registro para decodificarlo y mandar las señales correctas para realizar dicha instrucción.

ALU: La unidad aritmético lógica es un integrado que puede realizar operaciones aritméticas y operaciones lógicas ya sea con un solo operando o hasta con dos operandos.

Acc: Este es el registro acumulador y es de propósito general. En nuestro caso será utilizado para guardar uno de los operandos del la ALU para llevar a cabo operaciones con dos operandos. El segundo se proporcionará directamente a la ALU desde el MBR.

ROP: Este registro contiene el código de operación de la ALU. Esto es, se requiere de un código binario en las entradas de la ALU para seleccionar qué tipo de operación se quiere llevar a cabo (suma, resta, complemento,etc.).

R: Este registro sirve únicamente para observar el resultado de las operaciones realizadas en la ALU pues está conectado directamente a las salidas.

Generador de tiempos: Es la parte de nuestro microprocesador que se encarga de generar señales de tiempos de acuerdo a la frecuencia de reloj que estemos manejando.

Unidad de control: Es la encargada de generar las señales correctas para realizar las operaciones deseadas por el usuario. Como una analogía tenemos al director de una orquesta.
La idea de esta organización es poder implementar cuatro operaciones básicas que nos servirán para echar a andar al microprocesador. Cuando veamos las instrucciones se comprenderá completamente el por qué de esta organización.

Códigos de instrucción
Un sistema digital se define por las operaciones que puede realizar. Cuando estas operaciones son fijadas de manera que solo puede ejecutar las mismas operaciones una y otra vez de manera secuencial entonces hablamos de un sistema digital de propósito especial. Cuando la secuencia de las operaciones que realizará nuestro sistema digital se puede modificar para que realice las tareas que deseamos en ese momento, entonces tenemos un sistema digital de propósito general. Los microprocesadores son sistemas digitales de propósito general puesto que cuentan con una lista de instrucciones que pueden realizar en el orden que nosotros deseemos. Este orden de instrucciones es lo que se conoce como programa. Todos nosotros, al menos que estamos en el ámbito de las computadoras, sabemos y conocemos los programas de computadoras y, quizás, hasta hemos hecho algún programilla por nuestra cuenta. Estos grandes programas están hechos con un lenguaje fácil de interpretar y comprender para los seres humanos. Sin embargo, hablando del lenguaje de microprocesadores, solo podemos manejar códigos binarios. Para realizar una multiplicación tenemos el código 1110, para la suma 1100, etc. Con cuatro bits podemos referir hasta 16 códigos de instrucciones. Para el microprocesador de una computadora son pocas 16 instrucciones, pero para nuestro procesador serán suficientes. Comenzaremos con cuatro instrucciones:

LEE: Saca de la memoria el contenido que está en la dirección DIR y se lleva el registro A.

GUARDA: Guarda el contenido del registro A en la dirección de memoria DIR

SALTA: Continua la ejecución de las instrucción que se encuentra en DIR (2a. Palabra).

OPERA: Realiza la operación aritmética lógica que es codificada por tipo entre el contenido del registro A y el operando OP.2
En ocasiones como la nuestra es necesario proporcionar no solo el código de operación que se desea hacer sino también alguna información extra como son los operandos o las direcciones de los operandos. Para nuestra instrucción LEE es necesario el código de instrucción y la dirección de la memoria que se desea leer. En la siguiente tabla se muestra cada una de las instrucciones y sus operandos necesarios. Cabe recalcar que los códigos de operación son propuestos, podrían ser cualquier combinación binaria de cuatro bits, pero para fines del diseño de nuestro microprocesador estos códigos son fáciles y prácticos.

Instrucción
Señal
Código
Operando 1
Operando 2
Lee
q1
0001
Dirección
Guarda
q2
0010
Dirección
Salta
q3
0100
Dirección
Opera
q4
1000
Código de Operación
Segundo Operando
Tabla de Instrucciones del microprocesador

De esta manera para hacer un GUARDA es necesario proporcionar la dirección en la cual se va a guardar el contenido del registro A. Para hacer un SALTA es necesario proporcionar la dirección a la cual se saltará el programa. Para el OPERA es necesario una combinación binaria que determina qué operación se va a realizar (suma, resta, and, or, xor, etc.), esta combinación será de acuerdo a la ALU que usemos, y también hay que determinar el segundo operando ya que el primero se encuentra en A y el segundo estará en el MBR. Nótese las conexiones que tiene la ALU en el diagrama a bloques para poder observar el registro ROP que es el que tendrá la combinación que determina qué operación se realiza con los datos que hay en A y MBR conectados a las entradas de la ALU.
Traslademos todo esto a una memoria de 16 x 4 bits. El microprocesador siempre iniciará buscando en la primera dirección de la memoria que contiene el programa. Si quisiéramos realizar un LEE la dirección 1000 y luego un salta a la dirección 1111 tendríamos.



Dirección
0000
0001
0010
0011
0100
0101
0110
0111
1000
Contenido
0001
1000
0100
1111





Ejemplo de un programa en memoria

En la primera dirección (0000) está el código de un LEE (0001) seguido de su dirección a leer (1000) en la segunda dirección (0001). En la tercera dirección (00010) se encuentra el código de un SALTA (0100) seguido de la dirección. De esta manera es como se escribe un programa en lenguaje maquina (con unos y ceros). Cada instrucción genera una señal para el circuito de control. El IR se encarga de decodificar una instrucción y enviarle la respectiva señal al sistema de control.

Otras consideraciones de diseño
Como ya mencionamos con anterioridad, el microprocesador es un circuito que ejecuta instrucciones de manera secuencial. Para lograr esto es necesario una parte de temporizador dentro del micro. Aunque pareciera sencillo pensar en implementar un circuito temporizador hay que tener algunas consideraciones con respecto a los integrados que estemos utilizando. Para nuestro caso, los registros que usaremos necesitan señales se reloj para poder funcionar. Luego entonces nuestro reloj maestro debe de proporcionar no solo los tiempos que ingresarán al circuito de control, sino también las señales de reloj de nuestros integrados. A esto se le llama un circuito síncrono.
http://www.monografias.com/trabajos14/micros/Image2111.gif
 Ejemplo de conexión eléctrica del temporizador


Utilizamos un contador 74lLS161 para generar los tiempos por medio de un botón de tiempo (será manual). Las salidas deberían entrar a un decodificador para que se genere una sola señal de tiempo a la vez. Del mismo botón de tiempos saldrá una señal que se niega y se dirige hacia los relojes de nuestro registro. Se debe negar para que se genere primero los tiempos que ingresan a la unidad de control.
Otra consideración importante es el uso de compuertas de tres estados para poder realizar lecturas y escrituras de la memoria con seguridad. Recordemos que el bus de daos de la memoria es bidireccional. Para poder utilizarlo necesitamos de estas compuertas de tres estados. Además, hay que notar el uso de unos multiplexores a la entrada de las direcciones y de los datos. Son colocados porque programaremos la memoria de manera manual con unos switches tipo DIP. Por lo tanto debemos de habilitar a la hora de programar las entradas de los switches y una vez terminada la programación se dejarán habilitadas únicamente las entradas del MAR, para el caso de las direcciones, y las entradas del MBR, para el caso de los datos. Observa que se usan otros multiplexores también. Como vimos en el inicio, se usan para poder tener dos entradas a un mismo integrado.
http://www.monografias.com/trabajos14/micros/Image2112.gif



















CONCLUSIÓN


El diseño de microprocesadores se estudiaba en las universidades de ingeniería con miras a mejorar los diseños existentes. Hoy en día se prefiere enseñar microprocesadores y arquitectura de computadoras desde el punto de vista económico o cuantitativo, desde el punto de rendimiento-costo. A nuestro parecer, no deja de ser importante aprender las bases principales del diseño de microprocesadores ya que ello llevará a una mejor comprensión de los lenguajes de programación, segmentación, computadoras de procesadores paralelos, micro controladores, etc. Además, poder diseñar un microprocesador sencillo como el que se desarrolla en este documento, nos conduce a conocer y comprender uno de los secretos de la electrónica más hermosos y enigmáticos. ¿Cómo se procesa la información? ¿Cómo es posible que una computadora me pueda desplegar imágenes, vídeos, texto, etc.? Todas estas preguntas son el enigma de las computadoras y los estudiantes de una ingeniería relacionada con la computación, así como nosotros que estudiamos esta carrera de ingeniería de sistemas debemos adentrarnos, al menos de manera superficial, con las respuestas.