Sunteți pe pagina 1din 34

Historia del sistema binario

El antiguo matemtico indio Pingala present la primera descripcin que se conoce de


un sistema de numeracin binario en el siglo tercero antes de nuestra era, lo cual
coincidi con su descubrimiento del concepto del nmero cero.
Una serie completa de 8 trigramas y 64 hexagramas (anlogos a 3 bits) y nmeros
binarios de 6 bits eran conocidos en la antigua China en el texto clsico del I Ching.
Series similares de combinaciones binarias tambin han sido utilizadas en sistemas de
adivinacin tradicionales africanos, como el If, as como en la geomancia medieval
occidental.
Un arreglo binario ordenado de los hexagramas del I Ching, representando la
secuencia decimal de 0 a 63, y un mtodo para generar el mismo fue desarrollado por
el erudito y filsofo Chino Adgart en el siglo XI.
En 1605 Francis Bacon habl de un sistema por el cual las letras del alfabeto podran
reducirse a secuencias de dgitos binarios, las cuales podran ser codificadas como
variaciones apenas visibles en la fuente de cualquier texto arbitrario.
El sistema binario moderno fue documentado en su totalidad por Leibniz, en el siglo
XVII, en su artculo "Explication de l'Arithmtique Binaire". En l se mencionan los
smbolos binarios usados por matemticos chinos. Leibniz utiliz el 0 y el 1, al igual
que el sistema de numeracin binario actual.
En 1854, el matemtico britnico George Boole public un artculo que marc un antes
y un despus, detallando un sistema de lgica que terminara denominndose lgebra
de Boole. Dicho sistema desempeara un papel fundamental en el desarrollo del
sistema binario actual, particularmente en el desarrollo de circuitos electrnicos.
Aplicaciones
En 1937, Claude Shannon realiz su tesis doctoral en el MIT, en la cual implementaba
el lgebra de Boole y aritmtica binaria utilizando rels y conmutadores por primera
vez en la historia. Titulada Un Anlisis Simblico de Circuitos Conmutadores y Rels,
la tesis de Shannon bsicamente fund el diseo prctico de circuitos digitales.

En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los


Laboratorios Bell, construy una computadora basada en rels a la cual apod
"Modelo K" (porque la construy en una cocina, en ingls "kitchen") que utilizaba la
suma binaria para realizar los clculos. Los Laboratorios Bell autorizaron un completo
programa de investigacin a finales de 1938, con Stibitz al mando.
El 8 de enero de 1940 terminaron el diseo de una "Calculadora de Nmeros
Complejos", la cual era capaz de realizar clculos con nmeros complejos. En una
demostracin en la conferencia de la Sociedad Estadounidense de Matemtica, el 11
de septiembre de 1940, Stibitz logr enviar comandos de manera remota a la
Calculadora de Nmeros Complejos a travs de la lnea telefnica mediante un
teletipo. Fue la primera mquina computadora utilizada de manera remota a travs de
la lnea de telfono. Algunos participantes de la conferencia que presenciaron la
demostracin fueron John von Neumann, John Mauchly y Norbert Wiener, quien
escribi acerca de dicho suceso en sus diferentes tipos de memorias en la cual
alcanz diferentes logros.
Representacin
Ejemplo: el sistema binario puede ser representado solo por dos dgitos.

Un nmero binario puede ser representado por cualquier secuencia de bits (dgitos
binarios), que suelen representar cualquier mecanismo capaz de usar dos estados
mutuamente excluyentes. Las siguientes secuencias de smbolos podran ser
interpretadas como el mismo valor numrico binario:

1010011010
|- | - -|| -| xoxooxxoxo
ynynnyynyn

El valor numrico representado en cada caso depende del valor asignado a cada
smbolo. En una computadora, los valores numricos pueden representar dos voltajes
diferentes; tambin pueden indicar polaridades magnticas sobre un disco magntico.
Un "positivo", "s", o "sobre el estado" no es necesariamente el equivalente al valor
numrico de uno; esto depende de la nomenclatura usada.

De acuerdo con la representacin ms habitual, que es usando nmeros arbigos, los


nmeros binarios comnmente son escritos usando los smbolos 0 y 1. Los nmeros
binarios se escriben a menudo con subndices, prefijos o sufijos para indicar su base.
Las notaciones siguientes son equivalentes:

100101 binario (declaracin explcita de formato)


100101b (un sufijo que indica formato binario)
100101B (un sufijo que indica formato binario)
bin 100101 (un prefijo que indica formato binario)
1001012 (un subndice que indica base 2 (binaria) notacin)
%100101 (un prefijo que indica formato binario)
0b100101 (un prefijo que indica formato binario, comn en lenguajes de
programacin)
Conversin entre binario y decimal
Decimal a binario
Se divide el nmero del sistema decimal entre 2, cuyo resultado entero se vuelve a
dividir entre 2, y as sucesivamente hasta que el dividendo sea menor que el divisor, 2.
Es decir, cuando el nmero a dividir sea 1 finaliza la divisin.
A continuacin se ordenan los restos empezando desde el ltimo al primero,
simplemente se colocan en orden inverso a como aparecen en la divisin, se les da la
vuelta. ste ser el nmero binario que buscamos.

Ejemplo
Transformar el nmero decimal 131 en binario. El mtodo es muy simple:
131 dividido entre 2 da 65 y el residuo es igual a 1
65 dividido entre 2 da 32 y el residuo es igual a 1
32 dividido entre 2 da 16 y el residuo es igual a 0
16 dividido entre 2 da 8 y el residuo es igual a 0
8 dividido entre 2 da 4 y el residuo es igual a 0
4 dividido entre 2 da 2 y el residuo es igual a 0

2 dividido entre 2 da 1 y el residuo es igual a 0


1 dividido entre 2 da 0 y el residuo es igual a 1
-> Ordenamos los residuos, del ltimo al primero: 10000011

En sistema binario, 131 se escribe 10000011

Ejemplo
Transformar el nmero decimal 100 en binario.

Otra forma de conversin consiste en un mtodo parecido a la factorizacin en


nmeros primos. Es relativamente fcil dividir cualquier nmero entre 2. Este mtodo
consiste tambin en divisiones sucesivas. Dependiendo de si el nmero es par o
impar, colocaremos un cero o un uno en la columna de la derecha. Si es impar, le
restaremos uno y seguiremos dividiendo entre dos, hasta llegar a 1. Despus slo nos
queda tomar el ltimo resultado de la columna izquierda (que siempre ser 1) y todos
los de la columna de la derecha y ordenar los dgitos de abajo a arriba.

Ejemplo
100|0
50|0
25|1 --> 1, 25-1=24 y seguimos dividiendo entre 2
12|0
6|0
3|1

1|1 -->
Decimal (con decimales) a binario
Para transformar un nmero del sistema decimal al sistema binario:
1. Se transforma la parte entera a binario. (Si la parte entera es 0 en binario ser 0,
si la parte entera es 1 en binario ser 1, si la parte entera es 5 en binario ser
101 y as sucesivamente).
2. Se sigue con la parte fraccionaria, multiplicando cada nmero por 2. Si el
resultado obtenido es mayor o igual a 1 se anota como un uno (1) binario. Si es
menor que 1 se anota como un 0 binario. (Por ejemplo, al multiplicar 0.6 por 2
obtenemos como resultado 1.2 lo cual indica que nuestro resultado es un uno (1)
en binario, solo se toma la parte decimal del resultado).
3. Despus de realizar cada multiplicacin, se colocan los nmeros obtenidos en el
orden de su obtencin.
4. Algunos nmeros se transforman en dgitos peridicos, por ejemplo: el 0.1.
0,3125 (decimal) => 0,0101 (binario).
Proceso:
0,3125 2 = 0,625 => 0
0,625 2 = 1,25 => 1
0,25 2 = 0,5 => 0
0,5 2 = 1 => 1
En orden: 0101 -> 0,0101 (binario)
0,1 (decimal) => 0,0 0011 0011 ... (binario).
Proceso:
0,1 2 = 0,2 ==> 0
0,2 2 = 0,4 ==> 0
0,4 2 = 0,8 ==> 0
0,8 2 = 1,6 ==> 1
0,6 2 = 1,2 ==> 1
0,2 2 = 0,4 ==> 0 <--se repiten las cuatro cifras, peridicamente
0,4 2 = 0,8 ==> 0 <0,8 2 = 1,6 ==> 1 <0,6 2 = 1,2 ==> 1 <- ...
En orden: 0 0011 0011 ... => 0,0 0011 0011 ... (binario peridico)
Arquitectura de von Neumann

La arquitectura Von Neumann, tambin conocida como modelo de Von Neumann o


arquitectura Princeton, es una arquitectura de computadoras basada en la descrita
en 1945 por el matemtico y fsico John von Neumann y otros, en el primer borrador
de un informe sobre el EDVAC.1 Este describe una arquitectura de diseo para un
computador digital electrnico con partes que constan de una unidad de
procesamiento que contiene una unidad aritmtico lgica y registros del procesador,
una unidad de control que contiene un registro de instrucciones y un contador de
programa, una memoria para almacenar tanto datos como instrucciones,
almacenamiento masivo externo, y mecanismos de entrada y salida.1 2 El significado
ha evolucionado hasta ser cualquier computador de programa almacenado en el cual
no pueden ocurrir una extraccin de instruccin y una operacin de datos al mismo
tiempo, ya que comparten un bus en comn. Esto se conoce como el cuello de botella
Von Neumann y muchas veces limita el rendimiento del sistema. 3
El diseo de una arquitectura Von Neumann es ms simple que la arquitectura
Harvard ms moderna, que tambin es un sistema de programa almacenado, pero
tiene un conjunto dedicado de direcciones y buses de datos para leer datos desde
memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de datos
para ir a buscar instrucciones.
Un computador digital de programa almacenado es una que mantiene sus
instrucciones de programa, as como sus datos, en memoria de acceso aleatorio
(RAM) de lectura-escritura. Las computadoras de programa almacenado
representaron un avance sobre los ordenadores controlados por programas de la
dcada de 1940, como la Colossus y la ENIAC, que fueron programadas por
ajustando interruptores e insertando parches, conduciendo datos de la ruta y para
controlar las seales entre las distintas unidades funcionales. En la gran mayora de
las computadoras modernas, se utiliza la misma memoria tanto para datos como para
instrucciones de programa, y la distincin entre Von Neumann vs. Harvard se aplica a
la arquitectura de memoria cach, pero no a la memoria principal.
Historia

Las primeras mquinas de computacin tenan programas fijos. Algunos equipos muy
simples siguen utilizando este diseo, ya sea por motivos de simplificacin o de
formacin. Por ejemplo, una calculadora de escritorio es (en principio) una
computadora de programa fijo. En ella, se pueden hacer matemticas bsicas, pero no
puede ser utilizada como procesador de texto o consola de juegos. Cambiar el
programa de una mquina de programa fijo requiere re cablear, reestructurar, o
redisear la mquina. Las primeras computadoras no eran tanto "programadas" ya
que fueron "diseadas". Solo se "reprogramaba" cuando era absolutamente posible,
siendo un proceso laborioso, que comenzaba con diagramas de flujo y notas de papel,
seguido de diseos de ingeniera detallada, y luego el muchas veces arduo proceso

de re cablear fsicamente y reconstruir la mquina. Podra tomar hasta tres semanas


establecer un programa de ENIAC y conseguir que funcione.4
Esta situacin cambi con la propuesta de la computadora con programa almacenado.
Una computadora de programa almacenado por diseo incluye un conjunto de
instrucciones y puede almacenar en la memoria un conjunto de instrucciones (un
programa) que detalla la computacin.
Un diseo de programa almacenado tambin permite un cdigo mutante. Una primera
motivacin para una instalacin de este tipo fue la necesidad de que un programa
incremente o modifique de otro modo la porcin de direccin de instrucciones, lo cual,
en los primeros diseos, tena que hacerse manualmente. Esto lleg a ser menos
importante cuando los registros ndice y modos de direccionamiento se convirtieron en
caractersticas habituales de la arquitectura de la mquina. Otro uso fue para incrustar
datos frecuentemente usados en el flujo de instrucciones utilizando direccionamiento
inmediato. El cdigo mutante ha cado en gran parte en desuso, ya que suele ser
difcil de entender y de depurar, adems de ser ineficiente, en favor de los regmenes
de los modernos procesadores pipelines y del almacenamiento en cach.
A gran escala, la capacidad para tratar a las instrucciones de la misma forma que si
fueran datos es lo que hacen los ensambladores, compiladores, enlazadores,
cargadores, y otras posibles herramientas automticas de programacin. Se puede
"escribir programas que escriban programas". En una escala menor, las intensivas
operaciones repetitivas de E/S -como los primeros manipuladores de imgenes BitBLT
o los sombreadores de pxeles y vrtices en los grficos 3D modernos, se
consideraron ineficaces al funcionar sin necesidad de hardware personalizado. Estas
operaciones podran acelerarse en los procesadores de propsito general con
tecnologa de "compilacin mosca" ("compilacin en tiempo de ejecucin"), por
ejemplo, programas de cdigo generado una forma de cdigo auto-modificable que
ha mantenido popularidad.
Hay algunas desventajas para el diseo de Von Neumann. Aparte del cuello de botella
de Von Neumann descripto a continuacin, las modificaciones del programa pueden
ser muy perjudiciales, ya sea por accidente o por diseo. En algunos diseos simples
de computadora con programa almacenado, un programa que no funcione
correctamente puede daarse, daar a otros programas, o inclusive al sistema
operativo, lo que puede dar lugar a un desplome o crash de la computadora.
Normalmente, la proteccin de memoria y de otras formas de control de acceso
pueden proteger tanto de modificaciones accidentales como de programas maliciosos.
Desarrollo del concepto de programa almacenado
El matemtico Alan Turing, quien haba sido alertado de un problema de lgica
matemtica por las lecciones de Max Newman en la Universidad de Cambridge,
escribi un artculo en 1936 titulado On Computable Numbers, with an Application to

the Entscheidungsproblem, que fue publicado en los Proceedings of the London


Mathematical Society.5 En l describa una mquina hipottica que llam "mquina
computadora universal", y que ahora es conocida como la "Mquina de Turing
universal". La mquina hipottica tena un almacenamiento infinito (memoria en la
terminologa actual) que contena tanto las instrucciones como los datos. John Von
Neumann conoci a Turing cuando ejerca de profesor sustituto en Cambridge en
1935 y tambin durante el ao PhD que Turing pas en la Institute for Advanced Study
en Princeton, Nueva Jersey durante 1936-37. Cundo supo del artculo de 1936 de
Turing no est claro.
En 1936, Konrad Zuse tambin anticip en dos solicitudes de patente que
instrucciones de la mquina podan ser almacenadas en el mismo almacenamiento
utilizado para los datos.6
Independientemente, J. Presper Eckert y John Mauchly, quienes estaban
desarrollando el ENIAC en la Escuela Moore de Ingeniera Elctrica en la Universidad
de Pennsylvania, escribieron sobre el concepto de programa almacenado en
diciembre de 1943. En enero de 1944, mientras diseaba una nueva mquina,
EDVAC, Eckert escribi que se almacenaran datos y programas en un nuevo
dispositivo de memoria direccionable, una memoria de lnea de retardo. sta fue la
primera vez que se propuso la construccin de un prctico programa almacenado. Por
esas fechas, no tenan conocimiento del trabajo de Turing.
Von Neumann estaba involucrado en el Proyecto Manhattan en el Laboratorio
Nacional Los lamos, el cual requera ingentes cantidades de clculos. Esto le
condujo al proyecto ENIAC, en verano de 1944. All se incorpor a los debates sobre
el diseo de un ordenador con programas almacenados, el EDVAC. Como parte del
grupo, se ofreci voluntario a escribir una descripcin de l. El trmino "von Neumann
architecture" surgi del primer artculo de von Neumann: "First Draft of a Report on the
EDVAC", fechado el 30 de junio de 1945, el cual inclua ideas de Eckert y Mauchly.
Estaba inconcluso cuando su compaero Herman Goldstine lo hizo circular con slo el
nombre de von Neumann escrito en l, para consternacin de Eckert y Mauchly. El
artculo fue ledo por docenas de compaeros de trabajo de Von Neumann en Amrica
y Europa, e influenci la siguiente hornada de diseos de computadoras.
Por lo tanto, Von Neumann no se encontraba solo en el desarrollo de la idea de la
arquitectura de programa almacenado, y Jack Copeland considera que es
"histricamente inapropiado referirse a las computadoras electrnicas digitales de
programa almacenado como 'mquinas de von Neumann'". 7 Su colega del colegio Los
lamos, Stan Frankel dijo de las consideraciones de von Neumann con respecto a las
ideas de Turing:
S que en o alrededor de 1943 o '44 von Neumann era muy consciente de la
importancia fundamental del papel de 1936 de Turing... Von Neumann me introdujo a
ese papel y en su insistencia lo estudi con cuidado. Muchas personas han aclamado

a von Neumann como el "padre de la computadora" (en el sentido moderno del


trmino), pero estoy seguro de que nunca habra hecho que el propio error. l bien
podra haberse llamado tal vez la partera, pero con firmeza enfatiz para m, y para
otros, que estoy seguro, que la concepcin fundamental se debe a Turingen la
medida en que no anticipado por Babbage... Por supuesto, tanto Turing como von
Neumann tambin hicieron importantes contribuciones a la "reduccin a la prctica" de
estos conceptos, pero yo no considerara esto como comparable en importancia con la
introduccin y explicacin del concepto de una computadora capaz de almacenar en
su memoria su programa de actividades y de modificar ese programa en el curso de
estas actividades8
En el mismo momento en que el informe "Primer Borrador" fue distribuido, Turing
desarroll un informe tcnico detallado, Proposed Electronic Calculator, que describe
en detalle la ingeniera y la programacin, su idea de una mquina que fue llamada la
Automatic Computing Engine (ACE).9 Present ste al Laboratorio Nacional de Fsica
Britnico el 19 de febrero de 1946. A pesar de que Turing saba por su experiencia de
guerra en el Parque Bletchley que su propuesta era factible, el secretismo mantenido
durante muchas dcadas acerca de los ordenadores Colossus le impidi manifestarlo.
Se produjeron varias implementaciones del diseo ACE de forma exitosa.
Los trabajos tanto de von Neumann como de Turing, describan computadoras de
programas almacenados, pero al ser anterior el artculo de von Neumann, consigui
mayor circulacin y repercusin, as que la arquitectura de computadoras que esboz
adquiri el nombre de "arquitectura von Neumann". En la publicacin de 1953 Faster
than Thought: A Symposium on Digital Computing Machines (Ms rpido que el
pensamiento: Un Simposio sobre Mquinas informticas digitales -editado por BV
Bowden-), una seccin en el captulo sobre Computers in America (Computadoras en
Amrica) dice lo siguiente:10
La Mquina del Instituto de Estudios Avanzados, Princeton
En 1945, el profesor J. von Neumann, que en ese entonces trabajaba en la Escuela
Moore de Ingeniera en Filadelfia, donde se haba construido el ENIAC , emitido en
nombre de un grupo de sus compaeros de trabajo un informe sobre el diseo lgico
de las computadoras digitales. El informe contena una propuesta bastante detallada
para el diseo de la mquina que, desde entonces, se conoce como la EDVAC
(computadora de retardo variable discreta). Esta mquina ha sido recientemente
completada en Amrica, pero el informe von Neumann inspir la construccin de la
EDSAC (calculadora automtica de almacenamiento electrnico de retardo) en
Cambridge (vase pgina 130).
En 1947, Burks, Goldstine y Von Neumann, publicaron un informe en el que describen
el diseo de otro tipo de mquina (una mquina paralela en este momento) que
debera ser muy rpida, capaz de hacer 20.000 operaciones por segundo. Sealaron
que el problema persistente en la construccin de tal mquina estaba en el desarrollo

de una memoria adecuada, todos los contenidos de los cuales fueron


instantneamente accesibles, y al principio se sugiri el uso de un tubo especial
-llamado Selectron- que haba sido inventado por los laboratorios de Princeton de la
RCA. Estos tubos son caros y difciles para fabricar, as Von Neumman decidi
construir una mquina basada en la memoria de Williams. Esa mquina que se
complet en junio de 1952 en Princeton se ha conocido como MANIAC I. El diseo de
esta mquina que ha sido inspirado de una docena o ms de mquinas que estn
actualmente en construccin en Amrica.
En el mismo libro, los dos primeros prrafos de un captulo sobre ACE dicen lo
siguiente:11
Clculo automtico en el laboratorio nacional de fsica
Uno de los equipos digitales ms modernos que incorpora novedades y mejoras en la
tcnica de la computacin electrnica ha sido demostrado en el laboratorio nacional
de fsica, Teddington, donde ha sido diseado y construido por un pequeo equipo de
matemticos e ingenieros electrnicos investigadores sobre el personal del
laboratorio, asistido por ingenieros de produccin de la compaa elctrica inglesa. El
equipo construido hasta ahora en el laboratorio es solo el modelo piloto de muchas
instalaciones muy grandes que se va a conocer como el motor de clculo automtico,
pero aunque es relativamente pequeo en volumen y contiene solo 800 vlvulas
termoinicas, es una mquina de clculo muy rpido y verstil.
Los conceptos bsicos y principios abstractos de la computacin por una mquina
fueron formuladas por el Dr A. M. Turing, en un papel 1 ledo ante la Sociedad
Matemtica de Londres en 1936, pero el trabajo en dichas mquinas en el Reino
Unido se retras por la guerra. En 1945, se hizo una revisin al problema en el
laboratorio nacional de Fsica por el profesor J. R. Womersley. Se le adjunt al Dr.
Turing un pequeo equipo de especialistas, y en 1947 la planificacin preliminaria era
lo suficientemente avanzada para justificar el establecimiento del grupo especial ya
mencionado. En abril de 1948, estos ltimos se convirtieron en la seccin de
electrnica del laboratorio, bajo el cargo del Sr. F. M. Colebrook.
Estructura clsica de las mquinas von Neumann
Una mquina Von Neumann, al igual que prcticamente todos los computadores
modernos de uso general, consta de cuatro componentes principales:
1.

Dispositivo de operacin (DO), que ejecuta instrucciones de un conjunto


especificado, llamado sistema (conjunto) de instrucciones, sobre porciones de
informacin almacenada, separada de la memoria del dispositivo operativo
(aunque en la arquitectura moderna el dispositivo operativo consume ms
memoria -generalmente del banco de registros-), en la que los operandos son

2.

almacenados directamente en el proceso de clculo, en un tiempo relativamente


corto
Unidad de control (UC), que organiza la implementacin consistente de
algoritmos de decodificacin de instrucciones que provienen de la memoria del
dispositivo, responde a situaciones de emergencia y realiza funciones de
direccin general de todos los nodos de computacin. Por lo general, el DO y la
UC conforman una estructura llamada CPU. Cabe sealar que el requisito es
consistente, el orden de la memoria (el orden del cambio de direccin en el
contador de programa) es fundamental a la hora de la ejecucin de la
instruccin. Por lo general, la arquitectura que no se adhiere a este principio no
se considera von Neumann

3.

Memoria del dispositivo un conjunto de celdas con identificadores nicos


(direcciones), que contienen instrucciones y datos.

4.

Dispositivo de E/S (DES), que permite la comunicacin con el mundo exterior


de los computadores, son otros dispositivos que reciben los resultados y que le
transmiten la informacin al computador para su procesamiento.

Primeras computadoras basadas en arquitectura von Neumann


La primera saga se basaba en un diseo que fue utilizado por muchas universidades y
empresas para construir sus computadoras. 12 Entre estas, solo ILLIAC y ORDVAC
tenan un conjunto de instrucciones compatible.

Mquina Experimental de Pequea Escala de Mnchester (SSEM), apodada


"Baby" (Universidad de Manchester, Inglaterra) hizo su primera ejecucin exitosa
de un programa almacenado el 21 de junio de 1948.
EDSAC (Universidad de Cambridge, Inglaterra) fue el primer computador
electrnico prctico de programa almacenado (mayo de 1949)

Manchester Mark I (Universidad de Manchester, Inglaterra) Desarrollado a partir


de la SSEM (junio de 1949)

CSIRAC (Consejo de Investigacin Cientfica e Industrial) Australia (noviembre


de 1949)

EDVAC (Laboratorio de Investigacin Balstica, Laboratorio de Informtica de


Aberdeen Proving Ground, 1951)

ORDVAC (U-Illinois) en Aberdeen Proving Ground, Maryland (completado en


noviembre de 1951)13

IAS machine en Princeton University (enero 1952)

MANIAC I en Laboratorio Cientfico Los lamos (marzo de 1952)

ILLIAC en la Universidad de Illinois, (setiembre de 1952)

AVIDAC en Laboratorios Argonne National (1953)

ORACLE en Laboratorio Nacional de Oak Ridge (junio de 1953)

JOHNNIAC en RAND Corporation (enero de 1954)

BESK en Estocolmo (1953)

BESM-1 en Mosc (1952)

DASK en Dinamarca (1955)

PERM en Mnich (1956?)

SILLIAC en Sdney (1956)

WEIZAC en Rehovoth (1955)

Primeras computadoras de programa almacenado


La informacin de la fecha en la siguiente cronologa es difcil de establecer en el
orden correcto. Algunas fechas son de la primera ejecucin de un programa de
pruebas, algunas fechas son de la primera vez que el equipo se demostr o complet,
y algunas fechas son de la primera entrega o instalacin.

La IBM SSEC tena la capacidad para tratar instrucciones como datos, y se


demostr pblicamente el 27 de enero de 1948. Esta capacidad fue reivindicada
en una patente estadounidense.14 Sin embargo, fue parcialmente
electromecnica, no totalmente electrnica. En la prctica, las instrucciones eran
ledas desde una cinta de papel debido a su memoria limitada. 15
La Manchester SSEM (la beb) fue la primera computadora completamente
electrnica que ejecutaba un programa almacenado. Se corri un programa de
factoraje durante 52 minutos el 21 junio de 1948, despus de ejecutar un simple
programa de divisin y un programa para demostrar que dos nmeros eran
primos entre s.

La ENIAC fue modificada para funcionar como un computador primitivo con


programa almacenado de solo lectura (usando la tabla de funciones de
programa ROM) y se demostr como tal el 16 de septiembre de 1948,
ejecutando un programa de Adele Goldstine para von Neumann.

La BINAC corri algunos programas de prueba en febrero, marzo y abril de


1949, aunque no se termin hasta septiembre de 1949.

La Manchester Mark I desarrollada basada en el proyecto SSEM. En abril de


1949, con el fin de para ejecutar programas, se hizo disponible una versin
intermedia de la Mark 1, pero no se termin hasta octubre de 1949.

La EDSAC corri su primer programa el 6 de mayo de 1949.

La EDVAC fue presentada en agosto de 1949, pero tuvo problemas que la


mantena de su puesta en funcionamiento regular hasta 1951.

La CSIR Mark I corri su primer programa en noviembre de 1949.

La SEAC fue demostrada en abril de 1950.

La Pilot ACE corri su primer programa el 10 de mayo 1950 y fue demostrada en


diciembre de 1950

La SWAC se complet en julio de 1950.

La Computadora Whirlwind se complet en diciembre de 1950 y estuvo en uso


real en abril de 1951.

La ERA 1101 (ms tarde la ERA 1101/UNIVAC 1101 comercial) se instal en


diciembre de 1950.

Evolucin
A lo largo de las dcadas de los aos 1960 y 1970, las computadoras hicieron, en
general, tanto ms pequeas como rpidas, lo que llev a algunas evoluciones en su
arquitectura. Por ejemplo, el mapeado en memoria de E/S permiti que los dispositivos
de entrada y salida sean tratados de la misma como la memoria. 16 Un nico bus de
sistema podra ser utilizado para proporcionar un sistema modular con un menor
coste. A veces esto se denomina "racionalizacin" de la arquitectura. 17 En las dcadas
siguientes, los microcontroladores sencillos seran algunas veces omitir caractersticas
del modelo a menor costo y tamao. Las computadoras ms grandes aaden
caractersticas para un mayor rendimiento.

Cuello de botella de von Neumann (von Neumann bottleneck)


El canal de transmisin de los datos compartido entre CPU y memoria genera un
cuello de botella de Von Neumann, un rendimiento limitado (tasa de transferencia de
datos) entre la CPU y la memoria en comparacin con la cantidad de memoria. En la
mayora de computadoras modernas, la velocidad de comunicacin entre la memoria y
la CPU es ms baja que la velocidad a la que puede trabajar esta ltima, reduciendo
el rendimiento del procesador y limitando seriamente la velocidad de proceso eficaz,
sobre todo cuando se necesitan procesar grandes cantidades de datos. La CPU se ve

forzada a esperar continuamente a que lleguen los datos necesarios desde o hacia la
memoria. Puesto a que la velocidad de procesamiento y la cantidad de memoria han
aumentado mucho ms rpidamente que el rendimiento de transferencia entre ellos, el
cuello de botella ha vuelto ms que un problema, un problema cuya gravedad
aumenta con cada nueva generacin de CPU.
El trmino cuello de botella de von Neumann fue acuado por John Backus en su
conferencia de la concesin del Premio Turing ACM de 1977. Segn Backus:
Seguramente debe haber una manera menos primitiva de realizar grandes cambios
en la memoria, que empujando tantas palabras hacia un lado y otro del cuello de
botella de von Neumann. No solo es un cuello de botella para el trfico de datos, sino
que, ms importante, es un cuello de botella intelectual que nos ha mantenido atados
al pensamiento de "una palabra a la vez" en vez de fomentarnos el pensar en
unidades conceptuales mayores. Entonces la programacin es bsicamente la
planificacin del enorme trfico de palabras que cruzan el cuello de botella de von
Neumann, y gran parte de ese trfico no concierne a los propios datos, sino a dnde
encontrar stos.18 19
El problema de rendimiento puede ser aliviado (hasta cierto punto) utilizando diversos
mecanismos. Ofreciendo una memoria cach entre la CPU y la memoria principal,
proporcionando cachs separadas o vas de acceso independientes para datos e
instrucciones (la llamada arquitectura Harvard modificada), utilizando algoritmos y
lgica de predictor de saltos y proporcionando una limitada pila de CPU u otro en el
chip de memoria reutilizable para reducir el acceso a memoria, son cuatro de las
maneras que se dispone para aumentar el rendimiento. El problema tambin se puede
eludirse, cierta medida, usando computacin paralela, utilizando por ejemplo la
arquitectura de acceso a memoria no uniforme (NUMA), este enfoque es
comnmente empleado por las supercomputadoras. Est menos claro si el cuello de
botella intelectual que criticaba Backus ha cambiado mucho desde 1977. La solucin
que propuso Backus no ha tenido influencia importante. [cita requerida] La moderna
programacin funcional y la programacin orientada a objetos se preocupan mucho
menos de "empujar un gran nmero de palabras hacia un lado a otro" que los
lenguajes anteriores como era Fortran, pero internamente, esto sigue siendo lo que las
computadoras pasan gran parte del tiempo haciendo, incluso las supercomputadoras
altamente paralelas.
A partir de 1996, un estudio de referencia de base de datos se encontr que tres de
cada cuatro ciclos de CPU se dedican a la espera de de memoria. Los investigadores
esperan que el aumento del nmero de instrucciones simultneas arroye con el
multihilo o el multiprocesamiento de un solo chip har que este cuello de botella an
peor. 20
Procesadores no von Neumann

El National Semiconductor (Semiconductor nacional) COP8 se introdujo en 1986; tiene


una arquitectura Harvard modificada.21 22
Tal vez el tipo ms comn de estructura no von Neumann se utiliza en las
computadoras modernas es la memoria de contenido direccionable (CAM).
Mquina de Turing
Una mquina de Turing es un dispositivo que manipula smbolos sobre una tira de
cinta de acuerdo a una tabla de reglas. A pesar de su simplicidad, una mquina de
Turing puede ser adaptada para simular la lgica de cualquier algoritmo de
computador y es particularmente til en la explicacin de las funciones de una CPU
dentro de un computador.
La mquina de Turing fue descrita por Alan Turing como una mquina automtica
en 1936 en la revista Proceedings of the London Mathematical Society,1 La mquina
de Turing no est diseada como una tecnologa de computacin prctica, sino como
un dispositivo hipottico que representa una mquina de computacin. Las mquinas
de Turing ayudan a los cientficos a entender los lmites del clculo mecnico.
Turing dio una definicin sucinta del experimento en su ensayo de 1948, Mquinas
inteligentes. Refirindose a su publicacin de 1936, Turing escribi que la mquina
de Turing, aqu llamada una mquina de computacin lgica, consista en:
...una ilimitada capacidad de memoria obtenida en la forma de una cinta infinita
marcada con cuadrados, en cada uno de los cuales podra imprimirse un smbolo. En
cualquier momento hay un smbolo en la mquina; llamado el smbolo ledo. La
mquina puede alterar el smbolo ledo y su comportamiento est en parte
determinado por ese smbolo, pero los smbolos en otros lugares de la cinta no
afectan el comportamiento de la mquina. Sin embargo, la cinta se puede mover hacia
adelante y hacia atrs a travs de la mquina, siendo esto una de las operaciones
elementales de la mquina. Por lo tanto cualquier smbolo en la cinta puede tener
finalmente una oportunidad.2 (Turing 1948, p. 61)
Una mquina de Turing que es capaz de simular cualquier otra mquina de Turing es
llamada una mquina universal de Turing (UTM, o simplemente una mquina
universal). Una definicin ms matemticamente orientada, con una similar naturaleza
"universal", fue presentada por Alonzo Church, cuyo trabajo sobre el clculo lambda se
entrelaza con el de Turing en una teora formal de la computacin conocida como la
tesis de Church-Turing. La tesis seala que las mquinas de Turing capturan, de

hecho, la nocin informal de un mtodo eficaz en la lgica y las matemticas y


proporcionan una definicin precisa de un algoritmo o 'procedimiento mecnico'.
Estudiando sus propiedades abstractas, la mquina de Turing produce muchas
perspectivas en las ciencias de la computacin y en la teora de la complejidad.
Historia
Alan Turing introdujo el concepto de mquina de Turing en el trabajo On computable
numbers, with an application to the Entscheidungsproblem, publicado por la Sociedad
Matemtica de Londres en 1936, en el que se estudiaba la cuestin planteada por
David Hilbert sobre si las matemticas son decidibles, es decir, si hay un mtodo
definido que pueda aplicarse a cualquier sentencia matemtica y que nos diga si esa
sentencia es cierta o no. Turing ide un modelo formal de computador, la mquina de
Turing, y demostr que existan problemas que una mquina no poda resolver.
Con este aparato extremadamente sencillo es posible realizar cualquier cmputo que
un computador digital sea capaz de realizar.
Mediante este modelo terico y el anlisis de la complejidad de los algoritmos, fue
posible la categorizacin de problemas computacionales de acuerdo a su
comportamiento, apareciendo as, el conjunto de problemas denominados P y NP,
cuyas soluciones pueden encontrarse en tiempo polinmico por mquinas de Turing
deterministas y no deterministas, respectivamente.
Precisamente, la tesis de Church-Turing formulada por Alan Turing y Alonzo Church,
de forma independiente a mediados del siglo XX caracteriza la nocin informal de
computabilidad con la computacin mediante una mquina de Turing. 3
La idea subyacente es el concepto de que una mquina de Turing puede verse como
un autmata ejecutando un procedimiento efectivo definido formalmente, donde el
espacio de memoria de trabajo es ilimitado, pero en un momento determinado slo
una parte finita es accesible.
Descripcin informal
La mquina de Turing modela matemticamente a una mquina que opera
mecnicamente sobre una cinta. En esta cinta hay smbolos que la mquina puede
leer y escribir, uno a la vez, usando un cabezal lector/escritor de cinta. La operacin
est completamente determinada por un conjunto finito de instrucciones elementales
como "en el estado 42, si el smbolo visto es 0, escribe un 1; Si el smbolo visto es 1,
cambia al estado 17; en el estado 17, si el smbolo visto es 0, escribe un 1 y cambia al
estado 6; etc". En el artculo original ("Sobre nmeros computables con una aplicacin
al Entscheidungsproblem"), Turing no imagina un mecanismo, sino una persona a la

que l llama la "computadora", quien ejecuta servilmente estas reglas mecnicas


deterministas (o como Turing pone, "de una manera desganada").
Ms precisamente, una mquina de Turing consta de:
1. Una cinta que se divide en celdas, una al lado de la otra. Cada celda contiene
un smbolo de algn alfabeto finito. El alfabeto contiene un smbolo especial
llamado blanco (aqu escrito como 'B') y uno o ms smbolos adicionales. La
cinta se supone que es arbitrariamente extensible hacia la izquierda y hacia la
derecha, es decir, la mquina de Turing siempre es suministrada con tanta cinta
como necesite para su computacin. Las celdas que no se hayan escrito
previamente se asumen que estn rellenas con el smbolo blanco. En algunos
modelos la cinta tiene un extremo izquierdo marcado con un smbolo especial; la
cinta se extiende o es indefinidamente extensible hacia la derecha.
2. Un cabezal que puede leer y escribir smbolos en la cinta y mover la cinta a la
izquierda y a la derecha una (y slo una) celda a la vez. En algunos modelos el
cabezal se mueve y la cinta es estacionaria.
3. Un registro de estado que almacena el estado de la mquina de Turing, uno de
los estados finitos. Hay un estado inicial especial con el que el registro de estado
se inicia. Turing escribe que estos estados reemplazan el "estado de la mente"
en que ordinariamente estara una persona realizando clculos.
4. Una tabla finita de instrucciones (llamada ocasionalmente como tabla de accin
o funcin de transicin). Las instrucciones son usualmente 5-tuplas:
qiajqi1aj1dk, (a veces 4-tuplas), que, dado el estado (qi) la mquina est
actualmente en y el smbolo (aj) se est leyendo en la cinta (el smbolo
actualmente debajo del cabezal) le indica a la mquina hacer lo siguiente en
secuencia (para los modelos de 5-tupla):
o

Borra o escribe un smbolo (reemplazando aj con aj1), y entonces

Mueve el cabezal (que es descrito por d k y puede tener los valores: 'L' para
un paso a la izquierda, o 'R' para un paso a la derecha, o 'N' para
permanecer en el mismo lugar) y luego

Asume el mismo o un nuevo estado como prescrito (ve al estado q i1).

En los modelos de 4-tupla, son especificadas como instrucciones separadas:


borrar o escribir un smbolo (a j1) y mover el cabezal a la izquierda o la derecha
(dk). Especficamente, la tabla indica a la mquina: (ia) borrar o escribir un
smbolo o (ib) mover el cabezal a la izquierda o a la derecha, y luego (ii) asumir
el mismo o un nuevo estado, pero no las dos acciones (ia) y (ib) en la misma
instruccin. En algunos modelos, si no hay ninguna entrada en la tabla para la
actual combinacin de smbolo y estado, la mquina se detendr; otros modelos
requieren que estn llenas todas las entradas.

Note que cada parte de la mquina su estado y colecciones de smbolos y sus


acciones imprimir, borrar, movimiento de la cinta es finito, discreto y distinguible;
es la cantidad potencialmente ilimitada de cinta lo que le da una cantidad ilimitada de
espacio de almacenamiento.
Definicin formal
Una mquina de Turing 4 es un modelo computacional que realiza una lectura/escritura
de manera automtica sobre una entrada llamada cinta, generando una salida en esta
misma.
Este modelo est formado por un alfabeto de entrada y uno de salida, un smbolo
especial llamado blanco (normalmente b, o 0), un conjunto de estados finitos y un
conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una
funcin de transicin, que recibe un estado inicial y una cadena de caracteres (la cinta,
la cual puede ser infinita) pertenecientes al alfabeto de entrada. La mquina va
leyendo una celda de la cinta en cada paso, borrando el smbolo en el que se
encuentra posicionado su cabezal y escribiendo un nuevo smbolo perteneciente al
alfabeto de salida, para luego desplazar el cabezal a la izquierda o a la derecha (solo
una celda a la vez). Esto se repite segn se indique en la funcin de transicin, para
finalmente detenerse en un estado final o de aceptacin, representando as la salida.
Una mquina de Turing con una sola cinta puede definirse como una 7-tupla
M=(Q,,,s,b,F,),
donde:5

Q es un conjunto finito de estados.


es un conjunto finito de smbolos distinto del espacio en blanco, denominado
alfabeto de mquina o de entrada.

es un conjunto finito de smbolos de cinta, denominado alfabeto de cinta


().

sQ es el estado inicial.

b es un smbolo denominado blanco, y es el nico smbolo que se puede


repetir un nmero infinito de veces.

FQ es el conjunto de estados finales de aceptacin.

:QQ{L,R} es una funcin parcial denominada funcin de transicin,


donde L es un movimiento a la izquierda y R es el movimiento a la derecha.

Existen en la literatura un abundante nmero de definiciones alternativas, pero todas


ellas tienen el mismo poder computacional, por ejemplo se puede aadir el smbolo S
como smbolo de "no movimiento" en un paso de cmputo.

Funcionamiento
La mquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que
el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las
operaciones que se pueden realizar en esta mquina se limitan a:

Mover el cabezal lector/escritor hacia la derecha.

Visualizacin de una mquina de Turing, en la que se ve el cabezal y la cinta que


se lee.

Mover el cabezal lector/escritor hacia la izquierda.

El cmputo se determina a partir de una tabla de estados de la forma:


(estado, valor) (nuevo estado, nuevo valor, direccin)
Esta tabla toma como parmetros el estado actual de la mquina y el carcter ledo de
la cinta, dando la direccin para mover el cabezal, el nuevo estado de la mquina y el
valor a escribir en la cinta.
La memoria es la cinta de la mquina que se divide en espacios de trabajo
denominados celdas, donde se pueden escribir y leer smbolos. Inicialmente todas las
celdas contienen un smbolo especial denominado "blanco". Las instrucciones que
determinan el funcionamiento de la mquina tienen la forma, "si estamos en el estado
x leyendo la posicin y, donde hay escrito el smbolo z, entonces este smbolo debe
ser reemplazado por este otro smbolo, y pasar a leer la celda siguiente, bien a la
izquierda o bien a la derecha".
La mquina de Turing puede considerarse como un autmata capaz de reconocer
lenguajes formales. En ese sentido, es capaz de reconocer los lenguajes
recursivamente enumerables, de acuerdo a la jerarqua de Chomsky. Su potencia es,
por tanto, superior a otros tipos de autmatas, como el autmata finito, o el autmata
con pila, o igual a otros modelos con la misma potencia computacional.
Representacin como diagrama de estados
Las mquinas de Turing pueden representarse mediante grafos particulares, tambin
llamados diagramas de estados finitos, de la siguiente manera:

Esta mquina de Turing est definida sobre el alfabeto ={a,b,c}, posee el conjunto de
estados Q={qo,q1,q2,q3,q4,q5,q6}, con las transiciones que se pueden ver. Su estado
inicial es q0 y el estado final es q2, el lenguaje de salida
={X,Y,Z,B} siendo B el smbolo denominado "blanco". Esta mquina reconoce la
expresin regular de la forma anbncn con n>=0.
Los estados se representan como vrtices, etiquetados con su nombre en el
interior.
Una transicin desde un estado a otro, se representa mediante una arista
dirigida que une a estos vrtices, y est rotulada por smbolo que lee el
cabezal/smbolo que escribir el cabezal, movimiento del cabezal.

El estado inicial se caracteriza por tener una arista que llega a l y que no
proviene de ningn otro vrtice.

El o los estados finales se representan mediante vrtices que estn encerrados


a su vez por otra circunferencia.

Descripcin instantnea
Es una secuencia de la forma 1q2 donde 1,2 y qQ que escribe el estado
de una MT. La cinta contiene la cadena 12 seguida de infinitos blancos. El cabezal
seala el primer smbolo de 2.
Por ejemplo, para la mquina de Turing
MT=({p,q},{0,1},{0,1,x},,p,,{q}),
con las transiciones
(p,1)(p,0)(p,)=(p,x,D),=(p,0,D) y=(q,,D).
La descripcin instantnea para la cinta 1011 es:
p1011
xp011
x0p11
x0xp1

x0xxp
x0xxq
Ejemplo
Definimos una mquina de Turing sobre el alfabeto {0,1}, donde 0 representa el
smbolo blanco. La mquina comenzar su proceso situada sobre un smbolo "1" de
una serie. La mquina de Turing copiar el nmero de smbolos "1" que encuentre
hasta el primer blanco detrs de dicho smbolo blanco. Es decir, posiciona el cabezal
sobre el 1 situado en el extremo izquierdo, doblar el nmero de smbolos 1, con un 0
en medio. As, si tenemos la entrada "111" devolver "1110111", con "1111" devolver
"111101111", y sucesivamente.
El conjunto de estados es {s1,s2,s3,s4,s5} y el estado inicial es s1. La tabla que
describe la funcin de transicin es la siguiente:
Estado Smbolo ledo Smbolo escrito Mov. Estado sig.
s1

s2

s2

s2

s2

s3

s3

s4

s3

s3

s4

s4

s4

s5

s5

s5

s5

s1

El funcionamiento de una computacin de esta mquina puede mostrarse con el


siguiente ejemplo (en negrita se resalta la posicin de la cabeza lectora/escritora):

Paso Estado Cinta


1

s1

11

s2

01

s2

010

s3

0100

s4

0101

s5

0101

s5

0101

s1

1101

s2

1001

10

s3

1001

11

s3

10010

12

s4

10011

13

s4

10011

14

s5

10011

15

s1

11011

Parada

La mquina realiza su proceso por medio de un bucle, en el estado inicial s1,


reemplaza el primer 1 con un 0, y pasa al estado s2, con el que avanza hacia la
derecha, saltando los smbolos 1 hasta un 0 (que debe existir), cuando lo encuentra
pasa al estado s3, con este estado avanza saltando los 1 hasta encontrar otro 0 (la
primera vez no habr ningn 1). Una vez en el extremo derecho, aade un 1. Despus
comienza el proceso de retorno; con s4 vuelve a la izquierda saltando los 1, cuando
encuentra un 0 (en el medio de la secuencia), pasa a s5 que contina a la izquierda
saltando los 1 hasta el 0 que se escribi al principio. Se reemplaza de nuevo este 0
por 1, y pasa al smbolo siguiente, si es un 1, se pasa a otra iteracin del bucle,
pasando al estado s1 de nuevo. Si es un smbolo 0, ser el smbolo central, con lo que
la mquina se detiene al haber finalizado el cmputo.
Modificaciones equivalentes
Una razn para aceptar la mquina de Turing como un modelo general de cmputo es
que el modelo que hemos definido anteriormente es equivalente a muchas versiones
modificadas que en principio pareciera incrementar el poder computacional.

Mquina de Turing con movimiento stay o "esperar"


La funcin de transicin de la MT sencilla est definida por
:QQ{L,R},
la cual puede ser modificada como
:QQ{L,R,S}.
Donde S significa "permanecer" o "esperar", es decir no mover el cabezal de
lectura/escritura. Por lo tanto, (q,)=(p,,S) significa que se pasa del estado q al p,
se escribe en la celda actual y la cabeza se queda sobre la celda actual.
Mquina de Turing con cinta infinita a ambos lados
Esta modificacin se denota al igual que una MT sencilla, lo que la hace diferente es
que la cinta es infinita tanto por la derecha como por la izquierda, lo cual permite
realizar transiciones iniciales como (q0,x)=(q1,y,L).
Mquina de Turing con cinta multipista
Es aquella que mediante la cual cada celda de la cinta de una mquina sencilla se
divide en subceldas. Cada celda es as capaz de contener varios smbolos de la cinta.
Por ejemplo, la cinta de la figura tiene cada celda subdividida en tres subceldas.

Se dice que esta cinta tiene mltiples pistas puesto que cada celda de esta mquina
de Turing contiene mltiples caracteres, el contenido de las celdas de la cinta puede
ser representado mediante n-tuplas ordenadas. Los movimientos que realice esta
mquina dependern de su estado actual y de la n-tupla que represente el contenido
de la celda actual. Cabe mencionar que posee un solo cabezal al igual que una MT
sencilla.
Mquina de Turing multicinta
Una MT con ms de una cinta consiste de un control finito con k cabezales
lectores/escritores y k cintas. Cada cinta es infinita en ambos sentidos. La MT define
su movimiento dependiendo del smbolo que est leyendo cada uno de sus cabezales,
da reglas de sustitucin para cada uno de los smbolos y direccin de movimiento para
cada uno de los cabezales. Inicialmente la MT empieza con la entrada en la primera
cinta y el resto de las cintas en blanco.
Mquina de Turing multidimensional
Una MT multidimensional es aquella cuya cinta puede verse como extendindose
infinitamente en ms de una direccin, el ejemplo ms bsico sera el de una mquina
bidimensional cuya cinta se extendera infinitamente hacia arriba, abajo, derecha e
izquierda.
En la modificacin bidimensional de MT que se muestra en la figura tambin se
agregan dos nuevos movimientos del cabezal {U,D} (es decir arriba y abajo). De esta
forma la definicin de los movimientos que realiza el cabezal ser {L,R,U,D}.

Mquina de Turing determinista y no determinista


La entrada de una mquina de Turing viene determinada por el estado actual y el
smbolo ledo, un par (estado, smbolo), siendo el cambio de estado, la escritura de un
nuevo smbolo y el movimiento del cabezal, las acciones a tomar en funcin de una
entrada. En el caso de que para cada par (estado, smbolo) posible exista a lo sumo
una posibilidad de ejecucin, se dir que es una mquina de Turing determinista,
mientras que en el caso de que exista al menos un par (estado, smbolo) con ms de
una posible combinacin de actuaciones se dir que se trata de una mquina de
Turing no determinista.
La funcin de transicin en el caso no determinista, queda definida como sigue:
:QP(Q{L,R})
Cmo sabe una mquina no determinista qu accin tomar de las varias posibles?
Hay dos formas de verlo: una es decir que la mquina es "el mejor adivino posible",

esto es, que siempre elige la transicin que finalmente la llevar a un estado final de
aceptacin. La otra es imaginarse que la mquina se "clona", bifurcndose en varias
copias, cada una de las cuales sigue una de las posibles transiciones. Mientras que
una mquina determinista sigue un nico "camino computacional", una mquina no
determinista tiene un "rbol computacional". Si cualquiera de las ramas del rbol
finaliza en un estado de aceptacin, se dice que la mquina acepta la entrada.
La capacidad de cmputo de ambas versiones es equivalente; se puede demostrar
que dada una mquina de Turing no determinista existe otra mquina de Turing
determinista equivalente, en el sentido de que reconoce el mismo lenguaje, y
viceversa. No obstante, la velocidad de ejecucin de ambos formalismos no es la
misma, pues si una mquina no determinista M reconoce una cierta palabra de
tamao n en un tiempo O(t(n)), la mquina determinista equivalente reconocer la
palabra en un tiempo O(2t(n)). Es decir, el no determinismo permitir reducir la
complejidad de la solucin de los problemas, permitiendo resolver, por ejemplo,
problemas de complejidad exponencial en un tiempo polinmico.
Problema de la parada (halting problem)
El problema de la parada o problema de la detencin (halting problem en ingls) para
mquinas de Turing consiste en: dada una MT M y una palabra w, determinar si M
terminar en un nmero finito de pasos cuando se ejecuta usando w como entrada.
Alan Turing, en su famoso artculo "On computable numbers, with an application to the
Entscheidungsproblem" (1936), demostr que el problema de la parada de la mquina
de Turing es indecidible, en el sentido de que ninguna mquina de Turing lo puede
resolver.
Codificacin de una mquina de Turing
Toda mquina de Turing puede codificarse como una secuencia binaria finita, es decir
una secuencia finita de ceros y unos. Para simplificar la codificacin, suponemos que
toda MT tiene un nico estado inicial denotado por q1, y un nico estado final
denotado q2. Tendremos que para una MT M de la forma

={s1,s2,,sm,,sp} donde s1 representa el smbolo blanco 0, o b (segn se


desee denotar),
={s2,,sm} es alfabeto de entrada y
{sm+1,,sp} son los smbolos auxiliares utilizados por M (cada MT utiliza su
propia coleccin finito de smbolos auxiliares).

Todos estos smbolos se codifican como secuencias de unos:


Smbolo Codificacin

s1

s2

11

s3

111

.
.
.

.
.
.

sm

1m

sp

1p

Los estados de una MT q1,q2,q3,,qn se codifican tambin con secuencias de unos:


Smbolo Codificacin
q1(inicial) 1
q2(final) 11
.
.
.

.
.
.

qn

1n

Las directrices de desplazamiento R, L y S se codifican con 1, 11, 111,


respectivamente. Una transicin (q,a)=(p,c,R) se codifica usando ceros como
separadores entre los estados, los smbolos del alfabeto de cinta y la directriz de
desplazamiento R. As, la transicin (q3,s2)=(q5,s3,R) se codifica como
01110110111110111010.

En general, la codificacin de una transicin cualquiera (qi,sk)=(qj,st,R) es


01i01k01j01l01t,
donde t{1,2,3}, segn la direccin sea derecha(R), izquierda(L), esperar(S).
Una MT se codifica escribiendo consecutivamente las secuencias de las
modificaciones de todas sus transiciones. Ms precisamente, la codificacin de una
MT M es de la forma C1C2Ci, donde Ci es la codificacin de la i-sima transicin de
M. Puesto que el orden en que se representen las transiciones de una MT no es
relevante, una misma MT tiene varias codificaciones diferentes. Esto no representa
ninguna desventaja prctica o conceptual ya que no se pretende que las
codificaciones sean nicas.
Mquina de Turing universal
Una mquina de Turing computa una determinada funcin parcial de carcter definido
y unvoca, definida sobre las secuencias de posibles cadenas de smbolos de su
alfabeto. En este sentido se puede considerar como equivalente a un programa de
ordenador, o a un algoritmo. Sin embargo es posible realizar una codificacin de la
tabla que representa a una mquina de Turing, a su vez, como una secuencia de
smbolos en un determinado alfabeto; por ello, podemos construir una mquina de
Turing que acepte como entrada la tabla que representa a otra mquina de Turing, y,
de esta manera, simule su comportamiento.
En 1947, Turing indic:
Se puede demostrar que es posible construir una mquina especial de este tipo que
pueda realizar el trabajo de todas las dems. Esta mquina especial puede ser
denominada mquina universal.
Con esta codificacin de tablas como cadenas, se abre la posibilidad de que unas
mquinas de Turing se comporten como otras mquinas de Turing. Sin embargo,
muchas de sus posibilidades son indecidibles, pues no admiten una solucin
algortmica. Por ejemplo, un problema interesante es determinar si una mquina de
Turing cualquiera se parar en un tiempo finito sobre una determinada entrada;
problema conocido como problema de la parada, y que Turing demostr que era
indecidible. En general, se puede demostrar que cualquier cuestin no trivial sobre el
comportamiento o la salida de una mquina de Turing es un problema indecidible.
El concepto de Mquina de Turing universal est relacionado con el de un sistema
operativo bsico, pues puede ejecutar cualquier instruccin computable sobre l. 6
Mquina de Turing cuntica

En 1985, Deutsch present el diseo de la primera Mquina cuntica basada en una


mquina de Turing. Con este fin enunci una nueva variante la tesis de Church-Turing
dando lugar al denominado "principio de Church-Turing-Deutsch".
La estructura de una mquina de Turing cuntica es muy similar a la de una mquina
de Turing clsica. Est compuesta por los tres elementos clsicos:

Una cinta de memoria infinita en donde cada elemento es un qubit.


Un procesador finito.

Un cabezal.

El procesador contiene el conjunto de instrucciones que se aplica sobre el elemento


de la cinta sealado por el cabezal. El resultado depender del qubit de la cinta y del
estado del procesador. El procesador ejecuta una instruccin por unidad de tiempo.
La cinta de memoria es similar a la de una mquina de Turing tradicional. La nica
diferencia es que cada elemento de la cinta de la mquina cuntica es un qubit. El
alfabeto de esta nueva mquina est formado por el espacio de valores del qubit. La
posicin del cabezal se representa con una variable entera.

Mquina virtual
En informtica una mquina virtual es un software que emula a una computadora y
puede ejecutar programas como si fuese una computadora real. Este software en un
principio fue definido como "un duplicado eficiente y aislado de una mquina fsica". La
acepcin del trmino actualmente incluye a mquinas virtuales que no tienen ninguna
equivalencia directa con ningn hardware real.
Una caracterstica esencial de las mquinas virtuales es que los procesos que
ejecutan estn limitados por los recursos y abstracciones proporcionados por
ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domsticos ms extendidos de las mquinas virtuales es ejecutar
sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema
operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema
operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en
nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario.
Tipos de mquinas virtuales
Las mquinas virtuales se pueden clasificar en dos grandes categoras segn su
funcionalidad y su grado de equivalencia a una verdadera mquina.

Mquinas virtuales de sistema (en ingls System Virtual Machine)

Mquinas virtuales de proceso (en ingls Process Virtual Machine)

Mquinas virtuales de sistema


Las mquinas virtuales de sistema, tambin llamadas mquinas virtuales de
hardware, permiten a la mquina fsica subyacente multiplicarse entre varias
mquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de
software que permite la virtualizacin se la llama monitor de mquina virtual o
hypervisor. Un monitor de mquina virtual puede ejecutarse o bien directamente sobre
el hardware o bien sobre un sistema operativo ("host operating system").
Aplicaciones de las mquinas virtuales de sistema

Varios sistemas operativos distintos pueden coexistir sobre la misma


computadora, en slido aislamiento el uno del otro, por ejemplo para probar un
sistema operativo nuevo sin necesidad de instalarlo directamente.

La mquina virtual puede proporcionar una arquitectura de instrucciones


(ISA]) que sea algo distinta de la verdadera mquina. Es decir, podemos simular
hardware.

Varias mquinas virtuales (cada una con su propio sistema operativo llamado
sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar
servidores. Esto permite que servicios que normalmente se tengan que ejecutar
en computadoras distintas para evitar interferencias, se puedan ejecutar en la
misma mquina de manera completamente aislada y compartiendo los recursos
de una nica computadora. La consolidacin de servidores a menudo contribuye
a reducir el coste total de las instalaciones necesarias para mantener los
servicios, dado que permiten ahorrar en hardware.

La virtualizacin es una excelente opcin hoy da, ya que las mquinas actuales
(Laptops, desktops, servidores) en la mayora de los casos estn siendo "subutilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un
uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas
mquinas en una ya existente permite un ahorro considerable de los costos
asociados (energa, mantenimiento, espacio, etc).

Mquinas virtuales de proceso


Una mquina virtual de proceso, a veces llamada "mquina virtual de aplicacin",
se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo
proceso. La mquina se inicia automticamente cuando se lanza el proceso que se
desea ejecutar y se detiene para cuando ste finaliza. Su objetivo es el de
proporcionar un entorno de ejecucin independiente de la plataforma de hardware y

del sistema operativo, que oculte los detalles de la plataforma subyacente y permita
que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.
El ejemplo ms conocido actualmente de este tipo de mquina virtual es la mquina
virtual de Java. Otra mquina virtual muy conocida es la del entorno .Net de Microsoft
que se llama "Common Language Runtime".
Inconvenientes de las mquinas virtuales
Uno de los inconvenientes de las mquinas virtuales es que agregan gran complejidad
al sistema en tiempo de ejecucin. Esto tiene como efecto la ralentizacin del sistema,
es decir, el programa no alcanzar la misma velocidad de ejecucin que si se instalase
directamente en el sistema operativo "anfitrin" (host) o directamente sobre la
plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa
esta prdida de eficiencia.
Tcnicas
Emulacin del hardware subyacente (ejecucin nativa)
Esta tcnica se suele llamar virtualizacin completa (full virtualization) del hardware, y
se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2:

el tipo 1 se ejecuta directamente sobre el hardware.


el tipo 2 se ejecuta sobre otro sistema operativo.

Cada mquina virtual puede ejecutar cualquier sistema operativo soportado por el
hardware subyacente. As los usuarios pueden ejecutar dos o ms sistemas operativos
distintos simultneamente en computadoras "privadas" virtuales.
El sistema pionero que utiliz este concepto fue la CP-40, la primera versin (1967) de
la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de IBM (de 1972 en
adelante). Con la arquitectura VM, la mayor parte de usuarios controlan un sistema
operativo monousuario relativamente simple llamado CMS que se ejecuta en la
mquina virtual VM.
Actualmente tanto Intel como AMD han introducido prestaciones a sus procesadores
x86 para permitir la virtualizacin de hardware.

Emulacin de un sistema no nativo


Las mquinas virtuales tambin pueden actuar como emuladores de hardware,
permitiendo que aplicaciones y sistemas operativos concebidos para otras

arquitecturas de procesador se puedan ejecutar sobre un hardware que en teora no


soportan.
Algunas mquinas virtuales emulan hardware que slo existe como una
especificacin. Por ejemplo:

La mquina virtual P-Code que permita a los programadores de Pascal crear


aplicaciones que se ejecutasen sobre cualquier computadora con esta mquina
virtual correctamente instalada.
La mquina virtual de Java.

La mquina virtual del entorno .NET.

Open Firmware

Esta tcnica permite que cualquier computadora pueda ejecutar software escrito para
la mquina virtual. Slo la mquina virtual en s misma debe ser portada a cada una
de las plataformas de hardware.
Virtualizacin a nivel de sistema operativo
Esta tcnica consiste en dividir una computadora en varios compartimentos
independientes de manera que en cada compartimento podamos instalar un servidor.
A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del
usuario, el sistema en su conjunto acta como si realmente existiesen varios
servidores ejecutndose en varias mquinas distintas. Dos ejemplos son las zonas de
Solaris (Solaris Zones) y la tcnica de Micro Partioning de AIX.
Lista de hardware con soporte para virtualizacin

AMD-V (anteriormente llamado Pacifica)


ARM TrustZone

Boston Circuits gCore (grid-on-chip) con ncleos 16 ARC 750D y mdulo de


virtualizacin de hardware Time-machine.

Freescale PowerPC MPC8572 y MPC8641D

IBM System/370, System/390 y mainframes ZSeries

Intel VT (anteriormente llamado Vanderpool)

SPARC de Sun Microsystems

Lista de mquinas virtuales


Mquinas virtuales de proceso
Common Language Runtime - C#,
Visual Basic .NET, J#, Managed C+ Mquinas virtuales de sistema

+
EiffelStudiopara el lenguaje de
programacin Eiffel

VThere (de Sentillion, Inc. [1])


ATL (A MTL Virtual Machine)

Bochs emulador de PC x86 y AMD64,


porttil y open source

CoLinux Open Source Linux inside


Windows

Denali, uses paravirtualization of x86


for running para-virtualized PC
operating systems.

Lenguaje de programacin Erlang

Forth virtual machine - Forth

Glulx - Glulx, Z-code

Harbour - Harbour virtual machine

Hec - Hasm Assembler

Inferno - Limbo

FAUmachine

Java virtual machine - Java, Nice,


NetREXX

Hercules emulator, free System/370,


ESA/390, z/Mainframe

Low Level Virtual Machine (LLVM) actualmente C, C++, Stacker

Integrity Workstation Green Hills


Software[2]

Lua

Macromedia Flash Player - SWF

LilyVM is a lightweight virtual


machineAn introduction

MMIX - MMIXAL

Microsoft Virtual PC y Microsoft Virtual


Server

Neko virtual machine actualmente


Neko y haXe

OKL4

O-code machine - BCPL

P-code machine - Pascal

Parallels Workstation, virtualizacin


de x86 para ejecutar sistemas
operativos

Parrot - Perl 6

Perl virtual machine - Perl

Parallels Desktop for Mac,


virtualizacin de x86 para ejecutar
mquinas virtuales en Mac OS X

Portable.NET - C#, Visual Basic


.NET, J#, Managed C++

QEMU, muy popular en entornos


Linux

YARV - Ruby

SheepShaver.

Rubinius - Ruby

Simics

ScummVM - Scumm

SVISTA

SECD machine - ISWIM, Lispkit Lisp

Trango Virtual Processors

Sed the stream-editor can also be


seen as a VM with 2 storage spaces.

TwoOStwo

Smalltalk virtual machine - Smalltalk

User-mode Linux

SQLite virtual machine - SQLite

VirtualBox

opcodes

Virtual Iron (Virtual Iron 3.1)

Squeak virtual machine - Squeak

SWEET16

Virtual Operating System de Star


Virtual Machines

TrueType virtual machine - TrueType

VM de IBM

Valgrind - chequeo de accesos a


memoria y "leaks" en x86/x86-64
code under Linux

VMware (ESX Server, Fusion, Virtual


Server, Workstation, Player y ACE)

Xen

KVM

IBM POWER SYSTEMS

Torrecilla Virtual Machine (TVM)

VX32 virtual machine - applicationlevel virtualization for native code

Virtual Processor (VP) from Tao


Group (UK).

Waba - similar a Java, para


dispositivos pequeos

Warren Abstract Machine - Prolog,


CSC GraphTalk

Z-machine - Z-Code

Zend Engine - PHP

Mquinas virtuales a nivel de sistema


operativo
OpenVZ
Virtuozzo

FreeVPS

Linux-VServer

FreeBSD Jails

Solaris Containers

AIX Workload Partitions

Descripciones ampliadas para aplicaciones de virtualizacin seleccionadas


Los productos de software siguientes son capaces de virtualizar el hardware de modo
que varios sistemas operativos puedan compartirlo.

Adeos es una Capa de Abstraccin de Hardware que puede ser cargado como
un mdulo del ncleo Linux. Esto permite la carga de un ncleo en tiempo real
como mdulo, al mismo tiempo que se ejecuta Linux, pero con una prioridad
ms alta.
Denali utiliza la paravirtualizacin para proporcionar mquinas virtuales de alto
rendimiento sobre procesadores x86.
OKL4 utiliza el software libre L4 (microncleo) como un hypervisor para
proporcionar una solucin de virtualizacin de alto rendimiento para sistemas
embebidos.

OpenVZ para Linux

Parallels

QEMU puede emular una variedad de arquitecturas de CPU sobre muchas


plataformas distintas.

Virtual Iron

Virtuozzo

VMware

Xen

KVM

S-ar putea să vă placă și