lunes, 8 de diciembre de 2008

Modelo Von Neuman

Modelo de John Von Newmann
A principios de la década de 1950, von Neumann estudió los mecanismos que debe tener una máquina para que pueda tener la capacidad de construir otra máquina igual a la máquina creadora; de manera que diseñó un autómata celular con esas propiedades. A partir de la fecha de su muerte en 1957, dejó el proyecto sin terminar y desde entonces se han hecho varios intentos de completarlo; uno de los trabajos más destacados de reproducir y completar el trabajo de von Neumann se dio en el año 2000 por un grupo de especialistas en diseño de hardware en el Laboratorio de Sistemas Lógicos del Instituto de Tecnología Federal Suiza.

El constructor universal es uno de los conceptos que von Neumann definió y que es una parte fundamental en el diseño de esa máquina constructor universal, que es capaz de construir cualquier otra máquina constructor universal a partir de su descripción. Este proceso requiere que la descripción del constructor universal incluya su propia descripción, idea que fue tomada de modelos celulares vivos que contienen información de cómo construir otras células del mismo tipo:

  • La descripción muestra las características básicas de la máquina, al estilo de un genoma, que es interpretado para construir una copia del constructor universal.
  • La descripción es literalmente copiada, una vez que ha sido detectada y leída.
Stanislaw Ulam hizo la sugerencia (a von Neumann) de implementar sus ideas en un espacio bidimensional discreto. De manera que el universo creado por von Neumann lo define una matriz bidimensional infinita, cuyas entradas, llamadas células, son máquinas de estados finitos. Después de haber estudiado el modelo con varias opciones, llegó a definir 29 estados y una regla de transición.

Definición Decodificador

¿Qué es un decodificador?
Un decodificador o descodificador es un circuito combinacional, cuya función es inversa a la del codificador, esto es, convierte un código binario de entrada (natural, BCD, etc.) de N bits de entrada y M líneas de salida (N puede ser cualquier entero y M es un entero menor o igual a 2N), tales que cada línea de salida será activada para una sola de las combinaciones posibles de entrada. Estos circuitos, normalmente, se suelen encontrar como decodificador / demultiplexor. Esto es debido a que un demultiplexor puede comportarse como un decodificador.

Compuertas Logicas

COMPUERTAS LÓGICAS
Una puerta lógica, o compuerta lógica, es un dispositivo electrónico que es la expresión física de un operador booleano en la lógica de conmutación. Cada puerta lógica consiste en una red de dispositivos interruptores que cumple las condiciones booleanas para el operador particular. Son esencialmente circuitos de conmutación integrados en un chip.

Claude Elwood Shannon experimentaba con relés o interruptores electromagnéticos para conseguir las condiciones de cada compuerta lógica, por ejemplo, para la función booleana Y (AND) colocaba interruptores en circuito serie, ya que con uno solo de éstos que tuviera la condición «abierto», la salida de la compuerta Y sería = 0, mientras que para la implementación de una compuerta O (OR), la conexión de los interruptores tiene una configuración en circuito paralelo.

La tecnología microelectrónica actual permite la elevada integración de transistores actuando como conmutadores en redes lógicas dentro de un pequeño circuito integrado. El chip de la CPU es una de las máximas expresiones de este avance tecnológico.

Puerta SI o Buffer

La puerta lógica SI, realiza la función booleana igualdad. En la práctica se suele utilizar como amplificador de corriente (buffer en inglés).

Símbolo de la función lógica SI a) Contactos, b) Normalizado y c) No normalizado

Puerta Y (AND)


La puerta lógica Y, más conocida por su nombre en inglés AND, realiza la función booleana de producto lógico. Su símbolo es un punto (·), aunque se suele omitir. Así, el producto lógico de las variables A y B se indica como AB, y se lee A y B o simplemente A por B.

Símbolo de la función lógica Y a) Contactos, b) Normalizado y c) No normalizado

Puerta O (OR)


Símbolo de la función lógica O a) Contactos, b) Normalizado y c) No normalizado


La puerta lógica O, más conocida por su nombre en inglés OR, realiza la operación de suma lógica.
La ecuación característica que describe el comportamiento de la puerta OR es:F+A

Puerta NO (NOT)

La puerta lógica NO (NOT en inglés) realiza la función booleana de inversión o negación de una variable lógica.

Símbolo de la función lógica NO a) Contactos, b) Normalizado y c) No normalizado

Puerta NO-Y (NAND)
La puerta lógica NO-Y, más conocida por su nombre en inglés NAND, realiza la operación de producto lógico negado. En la figura de la derecha pueden observarse sus símbolos en electrónic

Símbolo de la función lógica NO-Y. a) Contactos, b) Normalizado y c) No normalizado

Puerta NO-O (NOR)

La puerta lógica NO-O, más conocida por su nombre en inglés NOR, realiza la operación de suma lógica negada. En la figura de la derecha pueden observarse sus símbolos en electrónica.
Símbolo de la función lógica NO-O. a) Contactos, b) Normalizado y c) No normalizado

Puerta equivalencia (XNOR)


La puerta lógica equivalencia, más conocida por su nombre en inglés XNOR, realiza la función booleana AB+A'B'. Su símbolo es un punto (·) inscrito en un círculo. En la figura de la derecha pueden observarse sus símbolos en electrónica

Símbolo de la función lógica equivalencia. a) Contactos, b) Normalizado y c) No normalizado

Mapas de Karnaugh

Mapas de Karnaugh

Un mapa de Karnaugh (también conocido como tabla de Karnaugh o diagrama de Veitch, abreviado como K-Mapa o KV-Mapa) es un diagrama utilizado para la minimización de funciones algebraicas booleanas. El mapa de Karnaugh fue inventado en 1950 por Maurice Karnaugh, un físico y matemático de los laboratorios Bell.

Los mapas K aprovechan la capacidad del cerebro humano de trabajar mejor con patrones que con ecuaciones y otras formas de expresión analítica. Externamente, un mapa de Karnaugh consiste de una serie de cuadrados, cada uno de los cuales representa una línea de la tabla de verdad. Puesto que la tabla de verdad de una función de N variables posee 2N filas, el mapa K correspondiente debe poseer también 2N cuadrados. Cada cuadrado alberga un 0 ó un 1, dependiendo del valor que toma la función en cada fila. Las tablas de Karnaugh se pueden utilizar para funciones de hasta 6 variables.
Reglas para el uso de mapas de Karnaugh
Los lazos de minterms (minitérminos) o maxterms (maxitérminos) son en base a la potencia del sistema binario.
Los lazos van a ser horizontales y verticales; los diagonales no están permitidos.
En un lazo las variables que cambien se deben eliminar. Las variables que no cambien se deben representar en dicho lazo.
Hacer la menor cantidad de lazos o grupos con la mayor cantidad de maxterms y minterms.


Cuando se tiene una función lógica con su tabla de verdad y se desea implementar esa función de la manera más económica posible se utiliza este método.

Ejemplo: Se tiene la siguiente tabla de verdad para tres variables.

Se desarrolla la función lógica basada en ella. (primera forma canónica). Ver que en la fórmula se incluyen solamente las variables (A, B, C) cuando F cuando es igual a "1". Si A en la tabla de verdad es "0" se pone A, si B = "1" se pone B, Si C = "0" se pone C, etc.

Funciones Booleanas

¿Qué es una función booleana?

Se denomina función lógica o booleana a aquella función matemática cuyas son binarias y están unidas mediante los operadores del álgebra de Boole suma lógica (+), producto lógico (.) o negación(-).

Modos de representación

Existen distintas formas de representar una función lógica, entre las que podemos destacar las siguientes:

  • Algebraica
  • Por tabla de verdad
  • Numérica
  • Gráfica
Algebraíca

Se utiliza cuando se realizan operaciones algebraicas. A continuación se ofrece un ejemplo con distintas formas en las que se puede expresar algebraicamente una misma función de tres variables.

a) F = [(A + BC’)’ + ABC]’ + AB’C
b) F = A’BC’ + AB’C’ + AB’C + ABC’
c) F = (A + B + C)(A + B + C’)(A + B’ + C’)(A’ + B’ + C’)
d) F = BC’ + AB’
e) F = (A + B)(B’ + C’)
f) F = [(BC’)’ · (AB’)’]’
g) F = [(A + B)’ + (B’ + C’)’]’

La expresión a) puede proceder de un problema lógico planteado o del paso de unas especificaciones a lenguaje algebraico. Las formas b) y c) reciben el nombre expresiones canónicas de suma de productos (sum-of-products, SOP, en inglés), la b), y de productos de sumas (product-of-sums, POS, en inglés), la c); su característica principal es la aparición de cada una de las variables (A, B y C) en cada uno de los sumandos o productos. Las d) y e) son funciones simplificadas, esto es, reducidas a su mínima expresión. Las dos últimas expresiones tienen la particularidad de que exclusivamente utiliza funciones NO-Y, la f), o funciones NO-O, la g).


Tabla de verdad

Una tabla de verdad contiene todos los valores posibles de una función lógica dependiendo del valor de sus variables. El número de combinaciones posibles para una función de n variables vendrá dado por 2n. Una función lógica puede representarse algebraicamente de distintas formas como acabamos de ver, pero sólo tiene una tabla de verdad. La siguiente tabla corresponde a la función lógica del punto anterior.

A B C F
0
0
0
0
0
0
1
0
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0

La forma más cómodo para ver la equivalencia entre una tabla de verdad y una expresión algebraica es cuando esta última se da en su forma canónica. Así, la función canónica de suma de productos

F = A’BC’ + AB’C’ + AB’C + ABC’

nos indica que será 1 cuando lo sea uno de sus sumandos, lo que significa que tendrá por lo tanto cuatro combinaciones que lo serán (010 para A’BC’, 100 para AB’C’, 101 para AB’C y 110 para ABC’) siendo el resto de combiaciones 0. Con la función canónica de producto de sumas se puede razonar de forma análoga, pero en este caso observando que la función será 0 cuando lo sea uno de sus productos. También es fácil obtener la tabla de verdad a partir de la función simplificada, pero no así a la inversa.

Numérica

La representación numérica es una forma simplificada de representar las expresiones canónicas. Si consideramos el criterio de sustituir una variable sin negar por un 1 y una negada por un 0, podremos representar el término, ya sea una suma o un producto, por un número decimal equivalente al valor binario de la combinación. Por ejemplo, los siguientes términos canónicos se representarán del siguiente modo (observe que se toma el orden de A a D como de mayor a menor peso):
AB’CD = 10112 = 1110
A’ + B + C’ + D’ = 01002 = 410

Para representar una función canónica en suma de productos utilizaremos el símbolo Σn (sigma) y en producto de sumas Πn (pi), donde n indicará el número de variables. Así, la representación numérica correspondiente a la tabla de verdad del punto anterior quedará como:

F = Σ3(2, 4, 5, 6) = Π3(0, 1, 3, 7)

Matemáticamente se demuestra, que para todo término i de una función, se cumple la siguiente ecuación:

F = [Σn(i)]' = Πn(2n-1-i )

A modo de ejemplo se puede utilizar esta igualdad para obtener el producto de sumas a partir de la suma de productos del ejemplo anterior:

F = Σ3(2, 4, 5, 6) = [Σ3(2, 4, 5, 6)]' ' = [Σ3(0, 1, 3, 7)]' = Π3(0, 4, 6, 7)
Gráfica

La representación gráfica es la que se utiliza en circuitos y esquemas electrónicos. En la siguiente figura se representan gráficamente dos funciones algebraicas, una con símbolos no normalizados, superior, y la otra con normalizados, inferior.

Representación gráfica de dos funciones lógicas

Codificador

Un codificador es un circuito combinacional con 2N entradas y N salidas, cuya misión es presentar en la salida el código binario correspondiente a la entrada activada.

Existen dos tipos fundamentales de codificadores: codificadores sin prioridad y codificadores con prioridad. En el caso de codificadores sin prioridad, puede darse el caso de salidas cuya entrada no pueda ser conocida: por ejemplo, la salida 0 podría indicar que no hay ninguna entrada activada o que se ha activado la entrada número 0. Además, ciertas entradas pueden hacer que en la salida se presente la suma lógica de dichas entradas, ocasionando mayor confusión. Por ello, este tipo de codificadores es usado únicamente cuando el rango de datos de entrada está correctamente acotado y su funcionamiento garantizado.

Dirección local de lugar


Para evitar los problemas anteriormente comentados, se diseñan los codificadores con prioridad. En estos sistemas, cuando existe más de una señal activa, la salida codifica la de mayor prioridad (generalmente correspondiente al valor decimal más alto). Adicionalmente, se codifican dos salidas más: una indica que ninguna entrada está activa, y la otra que alguna entrada está activa. Esta medida permite discernir entre los supuestos de que el circuito estuviera deshabilitado por la no activación de la señal de capacitación, que el circuito no tuviera ninguna entrada activa, o que la entrada número 0 estuviera activada.


También entendemos como codificador (códec), un esquema que regula una serie de transformaciones sobre un señal o información. Estos pueden transformar un señal a una forma codificada usada para la transmisión o cifrado o bien obtener la señal adecuada para la visualización o edición (no necesariamente la forma original) a partir de la forma codificada.

En este caso, los codificadores son utilizados en archivos multimedia para comprimir audio, imagen o vídeo, ya que la forma original de este tipo de archivos es demasiado grande para ser procesada y transmitida por los sistema de comunicación disponibles actualmente. Se utilizan también en la compresión de datos para obtener un tamaño de archivo menor.

Según esta nueva definición, podemos dividir los codificadores en códecs sin pérdidas y códecs con pérdidas, según si la información que se recupera coincide exactamente con la original o es una aproximación.

Microprocesadores

Microprocesador
El microprocesador es un circuito integrado que contiene algunos o todos los elementos necesarios para conformar una (o más) "unidad central de procesamiento" UCP, también conocido como CPU (por sus siglas en inglés: Central Process Unit). En la actualidad este componente electrónico está compuesto por millones de transistores, integrados en una misma placa de silicio.

Funcionamiento

Desde el punto de vista lógico y funcional, el microprocesador está compuesto básicamente por: varios registros; una Unidad de control, una Unidad aritmético-lógica; y dependiendo del procesador, puede contener una unidad en coma flotante.

El microprocesador ejecuta instrucciones almacenadas como números binarios organizados secuencialmente en la memoria principal. La ejecución de las instrucciones se puede realizar en varias fases:
PreFetch, Pre lectura de la instrucción desde la memoria principal,
Fetch, envío de la instrucción al decodificador,
Decodificación de la instrucción, es decir, determinar qué instrucción es y por tanto qué se debe hacer,
Lectura de operandos (si los hay),
Ejecución,(Lanzamiento de las Máquinas de estado que llevan a cabo el procesamiento).
Escritura de los resultados en la memoria principal o en los registros.

Cada una de estas fases se realiza en uno o varios ciclos de CPU, dependiendo de la estructura del procesador, y concretamente de su grado de segmentación. La duración de estos ciclos viene determinada por la frecuencia de reloj, y nunca podrá ser inferior al tiempo requerido para realizar la tarea individual (realizada en un solo ciclo) de mayor coste temporal. El microprocesador se conecta a un oscilador, normalmente un cristal de cuarzo capaz de generar pulsos a un ritmo constante, de modo que genera varios ciclos (o pulsos) en un segundo. Este reloj, en la actualidad, genera miles de MHz.
Bus de Direccion

El bus de dirección (o direcciones) es un canal del microprocesador totalmente independiente al bus de datos donde se establece la dirección de memoria del dato en tránsito. El bus de dirección consiste en el conjunto de líneas eléctricas necesarias para establecer una dirección.La capacidad de la memoria que se puede direccionar depende de la cantidad de bits que conforman el bus de direcciones, siendo 2^n (dos elevado a la ene) el tamaño máximo en bytes del banco de memoria que se podrá direccionar con n líneas. Por ejemplo, para direccionar una memoria de 256 bytes, son necesarias al menos 8 líneas, pues 2^8 = 256. Adicionalmente pueden ser necesarias líneas de control para señalar cuando la dirección está disponible en el bus. Esto depende del diseño del propio bus.

Bus de Datos

Mueve los datos entre los dispositivos del hardware de Entrada como el teclado, el ratón, micrófono, etc.; de salida como la Impresora, el Monitor; y de Almacenamiento como el Disco Duro, el Disquete o la Memoria-Flash. Estas transferencias que se dan a través del Bus de Datos son gobernadas por varios dispositivos y métodos, de los cuales el Controlador PCI, "Peripheral Component Interconnect", Interconexión de componentes Periféricos, es uno de los principales. Su trabajo equivale, simplificando mucho el asunto, a una central de semáforos para el tráfico en las calles de una ciudad.

Bus de control

Este bus transporta señales de estado de las operaciones efectuadas por la CPU. El método utilizado por el ordenador para sincronizar las distintas operaciones es por medio de un reloj interno que posee el ordenador y facilita la sincronización y evita las colisiones de operaciones (unidad de control).Estas operaciones se transmiten en un modo bidireccional y unidireccional.

*Unidad de control

La Unidad de control es la encargada de activar o desactivar los diversos componentes del microprocesador en función de la instrucción que el microprocesador esté ejecutando y en función también de la etapa de dicha instrucción que se esté ejecutando.

La unidad de control (UC) interpreta y ejecuta las instrucciones almacenadas en la memoria principal y genera las señales de control necesarias para ejecutarlas.

Existen dos tipos de unidades de control, las cableadas, usadas generalmente en máquinas sencillas, y las microprogramadas, propias de máquinas más complejas. En el primer caso, los componentes principales son el circuito de lógica secuencial, el de control de estado, el de lógica combinacional, y el de emisión de reconocimiento señales de control. En el segundo caso, la microprogramación se encuentra almacenada en una micromemoria (se accede a las mismas de manera secuencial (1, 2, ..., n), y posteriormente se ejecuta cada una de ellas).

*Unidad aritmético lógica

Un típico símbolo esquemático para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida

La Unidad Aritmético Lógica (UAL), o Arithmetic Logic Unit (ALU), es un circuito digital que calcula operaciones aritméticas (como adición, substracción, etc.) y operaciones lógicas (como OR, NOT, XOR, etc.), entre dos números.

Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se mantiene comprobando si debe activar el pitido del temporizador, etc.

Por mucho, los más complejos circuitos electrónicos son los que están construidos dentro de los chips de microprocesadores modernos como el Intel Core Duo. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy complejo y poderoso. De hecho, un microprocesador moderno (y los mainframes) pueden tener múltiples núcleos, cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU.

*Registros
Un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones matemáticas.

Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits". Los registros generalmente se implementan en un banco de registros, pero antiguamente se usaban biestables individuales, memoria SRAM o formas aún más primitivas.

El término es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instrucción, como está definido en el conjunto de instrucciones. Sin embargo, los microprocesadores tienen además muchos otros registros que son usados con un propósito específico, como el contador de programa. Por ejemplo, en la arquitectura IA32, el conjunto de instrucciones define 8 registros de 32 bits.

Tipos de registros
Los registros de datos son usados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador.
Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.
Los registros de propósito general (en inglés GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.
Los registros de coma flotante son usados para guardar datos en formato de coma flotante.
Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro $zero siempre vale 0.
Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.

Codigos Numericos

Códigos Númericos

Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los números de punto fijo y de punto flotante son ejemplos de estos códigos.

Binary-coded decimal (BCD8421) es un sistema numérico usado en sistemas computacionales y electrónicos para codificar números enteros positivos y facilitar las operaciones aritméticas. Es un código pesado debido a que representa los dígitos con un orden específico (8421).En BCD cada cifra que representa un dígito decimal (0, 1,...8 y 9) se representa con su equivalente binario en cuatro bits (nibble o cuarteto) (esto es así porque es el número de bits necesario para representar el nueve, el número más alto que se puede representar en BCD.

Codigo Gray

El código binario reflejado o código Gray, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos.

El código Gray fue diseñado originalmente para prevenir señales espurias de los switches electromecánicos. Actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.

Codigos Numericos

Códigos Númericos

Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los números de punto fijo y de punto flotante son ejemplos de estos códigos.

Binary-coded decimal (BCD8421) es un sistema numérico usado en sistemas computacionales y electrónicos para codificar números enteros positivos y facilitar las operaciones aritméticas. Es un código pesado debido a que representa los dígitos con un orden específico (8421).En BCD cada cifra que representa un dígito decimal (0, 1,...8 y 9) se representa con su equivalente binario en cuatro bits (nibble o cuarteto) (esto es así porque es el número de bits necesario para representar el nueve, el número más alto que se puede representar en BCD.

Codigo Gray

El código binario reflejado o código Gray, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos.

El código Gray fue diseñado originalmente para prevenir señales espurias de los switches electromecánicos. Actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.

Arquitectura de computadoras

¿Que es Arquitectura de Computadoras?

el diseño conceptual y la estructura operacional fundamental de un sistema de computadoras. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria. También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo