Cuenta la leyenda que en 1981 Bill Gates dijo que "640K deberían ser suficientes para cualquiera". Él mismo negó más tarde haberlo dicho, y lo cierto es que no hay pruebas claras de que lo hiciera. Lo que sí existió desde luego fue ese límite para los programadores de los viejos IBM PC, y la barrera la impuso la propia IBM, dominadora absoluta del mercado en la época.
Aquel límite definió toda una generación de ordenadores. Una que empezaba a tratar de separar la informática "de juguete" de los ordenadores de 8 bits convencionales de esos IBM PC que con procesadores como el Intel 8086 o el 8088 quiso demostrar que, efectivamente, 640K serían todo lo que el mundo necesitara. Al menos durante un tiempo.
Gates y la cita maldita que nunca se pronunció
Como explicaban en ComputerWorld hace casi una década, aquella asombrosa metedura de pata nunca existió. Mucho más real fue la que el fundador de Digital Equipment, Ken Olsen, hizo en 1977 cuando dijo aquello de que "no hay razón para que una persona normal tenga un ordenador en su casa".

Olsen se cubrió de gloria, desde luego, y aunque luego intentó escapar de aquella frase, su visión de futuro le perseguiría el resto de su carrera, y lo haría porque ciertamente se lo merecía. Gates, por contra, ha sido perseguido por esa cita a pesar de haber negado una y otra vez haberla pronunciado y de que nadie ha conseguido demostrar que lo dijera. Contestando a un estudiante sobre el tema a mediados de los 90, el cofundador de Microsoft explicaba aquella pesadilla:
He dicho algunas cosas estúpidas y otras incorrectas, pero no esa. Nadie involucrado en la informática te podría decir que cierta cantidad de memoria podría ser suficiente para siempre. Sigo encontrándome con esa absurda cita atribuida a mí que dice que 640K de memoria son suficientes. Nunca hay una referencia, la cita simplemente fluye como un rumor, repitiéndose una y otra vez.
Así era el mundo en 640K
Cuando se produjo esa cita IBM era algo así como la Facebook de nuestros días. Omnipresente y aparentemente invulnerable, con un monopolio de facto en el mundo del PC que acabaría escapándosele entre los dedos.

Aquellos IBM PC contaban con procesadores como los Intel 8086 y los 8088, CPUs de 8 bits que no obstante contaban con un bus de direcciones de 16 bits. En este apartado había distintas filosofías: Motorola tenía un bus de direcciones unificados en el que las direcciones de la memoria RAM y las de los periféricos de entrada y salida compartían el mismo espacio de memoria, mientras que Intel prefirió dividir ambos espacios.
De hecho, los 8086 y 8088 tenían un bus de memoria de 20 bits que permitía direccionar hasta 1 MB de memoria, mientras que los Motorola 68000 tenía un bus de direcciones de 24 bits (16 Mbytes), un salto que Intel acabó dando con los Intel 286.
Aunque esos procesadores de Intel podían llegar a direccionar un espacio de direcciones de 1 MB, en realidad tanto el chipset como el sistema operativo acababan dictando los límites. Y si había un verdadero dictador en esa época, ese era MS-DOS, el sistema operativo de aquellos equipos.
La "maldición" de la memoria convencional
La barrera de los 640 KB que fue impuesta por IBM y el sistema operativo MS-DOS, y se conoce como "memoria convencional". Esa parte del espacio de direcciones físicas disponibles estaba destinada a la RAM, y estaba disponible desde el primer momento para todo tipo de aplicaciones y, por supuesto, para el propio sistema operativo DOS.

Los 384 KB restantes (recordemos, 1 MB = 1024 KB) que podía direccionar el 8088 de los IBM PC estaban reservados para la llamada Upper Memory Area (UMA), reservada por ejemplo para el mapa de memoria del adaptador gráfico de la época (el legendario Color Graphics Adapter o CGA), para la IOS y para memoria compartida para dispositivos físicos como adaptadores de red.
El problema es que esa limitación de los 640 KB pronto afectó a aplicaciones y juegos que trataban de ofrecer más prestaciones, y eso hizo que a medida que pasaban aquellos años de la década de los 80 se acabaran creando técnicas para liberar memoria convencional que por ejemplo llegaron con DR-DOS 5.0 y con MS-DOS 5.0.
Seguro que algunos de nuestros lectores recordarán hacer uso del controlador EMM386 de aquella versión de MS-DOS, aunque otras alternativas como QEMM también se hicieron populares. Para ello sobre todo se trasladaban los controladores de dispositivos a los bloques de memoria de la UMA , algo que no hacía necesario cambios hardware y que preservaba la compatibilidad de las aplicaciones.

Aquella legendaria barrera no desaparecería fácilmente: mantener la compatibilidad de aplicaciones y del sistema operativo con sus versiones anteriores hizo que tuviera vigor incluso tras el lanzamiento del Intel 286. Aquel microprocesador permitía direccionar hasta 16 MB de memoria en modo protegido, pero si el procesador funcionaba en "modo real" (para ofrecer esa compatibilidad total) volvíamos a contar con 1 MB de memoria direccionable, sin más.
De hecho y como indican la Wikipedia, incluso los PCs actuales con procesadores Intel tienen ese área de memoria entre los 640 y los 1024 KB reservada (PDF), pero en realidad esas direcciones son invisibles para los programas y para los sistemas operativos modernos, que hace años que pasaron a ofrecer un sistema de memoria virtual que hace que no tengan que trabajar con direcciones físicas de memoria.
Los 640KB en perspectiva: ¿cuánto consumen las aplicaciones actuales?
Mucho ha llovido desde que Intel lanzara aquellos procesadores y MS-DOS dominara la informática personal. Casi cuatro décadas después los avances han permitido que las ganancias en potencia de proceso y prestaciones hardware sean asombrosas. Los micros de hoy en día de 64 bits soportan en teoría 16 exabytes, pero los espacios de direcciones reales son inferiores, sobre todo por limitaciones impuestas por cada sistema operativo.

En Windows 10, por ejemplo, ese límite depende de la edición en la que nos encontremos: podríamos instalar 128 GB de RAM en Windows 10 Home, pero en el resto de ediciones (Pro, Education, Enterprise) ese límite asciende a unos increíbles 2 TB (con "T" de tera, ya sabéis). En Red Hat Enterprise Linux 6 ese límite llega a los 16 TB (aunque el espacio virtual de direcciones puede llegar a los 128 TB), mientras que en macOS podremos llegar a los 128 GB.
Esas cifras mareantes nos hablan desde luego de la evolución que hemos vivido en estos años, y que también se ha notado en la memoria que aprovechan las aplicaciones durante su ejecución. Aquellos 640 KB con los que tenían que "jugar" los desarrolladores en los 80 contrastan con cantidades que varían según la configuración pero que por norma rondan los 4 u 8 GB de RAM en equipos de sobremesa y portátiles y que suelen rondar los 2 GB en dispositivos móviles.
Eso, claro, hace que las aplicaciones disfruten de mucho margen de maniobra para poder funcionar en nuestros PCs y desde luego en nuestros móviles. Las cantidades de memoria utilizadas por estas aplicaciones son asombrosas, y hacen que nos demos cuenta de lo mucho que se hacía con tan poco hace casi cuarenta años; baste una imagen:
La idea aquí era comparar la memoria que consumen algunos procesos en nuestros móviles y ordenadores actuales para poner las cosas en perspectiva. En mi móvil la sesión actual de Firefox estaba consumiendo 139 MB de memoria, por los 211 de Chrome con otra sesión de prueba, los 59,6 MB de la galería, los 211 MB de una prueba con Netflix o los 145 MB del cliente oficial de Twitter.
En el PC la cosa se complica, porque si uno contabiliza la memoria de las 16 pestañas que tenía abiertas en el momento de comprobar ese consumo la cifra se disparaba (incluyendo plugins) a algo más de... ¡2 GB! según el gestor de tareas de Windows 10. Incluí por tanto Spotify, Slack y una ventana del explorador de Windows como ejemplos para esta referencia básica.
Como se puede ver, el consumo de memoria de todos estos ejemplos es enormemente alto en comparación con el de las aplicaciones y juegos en MS-DOS. De hecho hemos querido crear una breve comparación indicando "cuántos bloques de 640KB consumirían" esas aplicaciones en aquel momento si se hubieran podido combinar varios bloques de 640 KB para dar vida a estas herramientas. En el caso de Chrome o Netflix, por ejemplo, el resultado es claro: ambas consumen 132 veces más que ese máximo del que "nunca habló" Bill Gates. Curioso, y a la vez una prueba más de todo lo que ha avanzado el segmento.
En Xataka | Los 28 mejores juegos de la época MS-DOS para jugar ahora y gratis en el navegador
Ver 35 comentarios
35 comentarios
whisper5
Este es un tema interesante. Las limitaciones en velocidad y memoria requerían un desarrollo de software más fino. U optimizabas el código y buscabas algoritmos eficaces o un programa no podía funcionar o funcionaba demasiado lento.
Ahora todo es distinto. Un 8086 no llegaba a un MIPS y los mejores Core i7 y Ryzen 7 llegan a los 300.000 MIPS. Por decirlo de alguna manera, las actuales ineficacias están tan aceleradas por el hardware que no se notan. Imaginemos que un usuario dé a un botón, se realice un cálculo y se muestre en pantalla. Si un cálculo optimizado cuesta dos milisegundos y otro que sea cien veces más lento cuenta doscientos milisegundos (0,2 s) el usuario no lo va a notar, vera que casi es instantáneo. Otra cosa es que ese cálculo se tenga que repetir cien veces seguidas, porque entonces se pasa de 0,2 s a 20 s, y eso sí que se nota.
¿No os da la sensación de que por mucho que mejore la velocidad de los microprocesadores y la cantidad de memoria muchas tareas siguen tardando lo mismo de siempre? Me da la impresión que la enorme disponibilidad de memoria y velocidad de procesamiento ha hecho que los sistemas operativos y programas estén sobrecargados de código y (salvo partes críticas) poco optimizados. No le veo sentido, por mucha funcionalidad extra que tenga un Windows 10 con respecto al viejo MS-DOS, que Windows 10 ocupe varios GB y que MS-DOS cupiera en un disco flexible que no llegaba a 1 MB. La proporción está en el orden de miles.
Hace unos días se hablaba por aquí del sistema operativo Fuchsia que promueve Google y que está desarrollando desde cero. Será interesante ver si va más rápido que los actuales sistemas operativos y tiene un menor tamaño.
Miguel
Muy buen artículo Javier. Felicidades.
Hasta 16-128 TB en Red Hat. Vaya bestialidad!
felipeandresurzuaarenas
El nuevo gráfico está correcto. Para Firefox se indican 222 veces 640kb de RAM.
Por cierto, un MB de ram no es aproximadamente nada, es exactamente 1024kb.
Saludos
linkgold
Dios! Que recuerdos cuando pasabas el Memmaker o editabas el Autoexec.bat y el Config.sys para hacer que los controladores (ratón, cd, etc) se cargasen en memoria "Alta" con los LoadHigh y los DeviceHigh ...
O hacer un dico de arranque con los controladores básicos para poder jugar a un juego que te requería 620k o 630k de memoria convencional libre ...
nouware
A mi porque ya me pilló muy tarde y no pude experimentar estas cosillas.
Lo que si recuerdo a los 4 años con el pc que tenían mis padres era jugar al arcanoid, al ocus pocus y ver a mi hermano jugar a un tycoon de esos super antiguos.
Ya con la llegada de ordenadores más modernos me pusieron uno a mi personalmente y comencé mis andadas jugando a juegos antiguos como half life, counter strike, el POP las arenas del tiempo o un MMO coreano llamado MapleStory.
Lo que pasa es que por alguna extraña razón, mi PC era un poco bastante patata y resulta que tenía que reiniciar varias veces porque no me arrancaba ni pa atrás. Lo mejor de todo es que a veces me tiraba 1 hora reiniciando el ordenador para conseguir que arrancase y me desesperaba que no era ni normal.
Es increible como en un período de tantos años la informática haya avanzado a pasos agigantados... y cuando se consiga llegar al uso de la computación cuántica para el día a día vamos a pegar un salto tan brutalmente grande que trabajar como trabajamos hoy en día nos va a parecer trabajar a como lo hacían en los años 50 los científicos cuando la era de la computación apenas estaba arrancando.
mangrar77
Yo recuerdo que tenia que tener varias configuraciones de arranque según al juego que fuera a jugar. Unos necesitaban memoria extendida, otros expandida, otros 640k de memoria convencional. Era una mierda tener que reiniciar para cambiar de juego.
José Manuel
"Aquellos IBM PC contaban con procesadores como los Intel 8086 y los 8088, CPUs de 8 bits que no obstante contaban con un bus de direcciones de 16 bits"
Que yo sepa ambos son de 16 bits porque tienen registros de esa longitud. El 8086 tiene un bus de direcciones de 16 bits y de 8 bits en el 8088.
jtusell01
Con ese cacharro hice yo mis primeros pasos en MS-Dos, con una unidad diskette donde residía el disco con los comandos y la otra unidad para grabar y cargar archivos. El teclado era de una calidad excepcional con su sonido de click metálico.
videl
Me acuerdo de crío que mi primer contacto con la informática fue en el 486 de mis primos con poquísima memoria RAM (no recuerdo cuanta) y que tenía par de diskettes de arranque, que arrancando con cada uno o sin ninguno funcionaban unos juegos u otros.
Luego supe que era todo por la EMS y XMS, pero por entonces no tenía ni idea. Bastante que me enseño mi primo a preparar un diskette de arranque nuevo por si se rompía alguno.
plont
El último gráfico está fatal. Cómo lo habéis calculado?
Firefox 139MB, ¿Cuántos 640KB?
Si calculamos que 1MB es aproximadamente 1000KB: 139000/640 = 217
Vuestro resultado: 87
Pedazo de rollo para contarlo todo mal
marjuanmanuel
gracias por el artículo.
linuxok
Aquí uno con 8 GB