Crear una computadora primitiva desde cero

Una computadora es fácil. O no?


Cualquier persona interesada en el campo de la tecnología de la información, al menos una vez pensó en cómo funciona realmente la computadora. Y, de hecho, con la ayuda de una computadora, puede hacer casi todo lo sorprendente, por lo que es imposible creer que todo lo que sucede dentro sea la suma de números. ¿Por qué no lo haces tú mismo?

imagen

Esta idea se ve claramente en el libro "Código" de Charles Petzold, una buena lectura para aquellos que quieren entender el dispositivo de la computadora en sus dedos sin pasar mucho tiempo. Este libro me causó una gran impresión, tanto que decidí que la computadora era una unidad completamente simple y que no tenía nada de complicado.

Pero esto no es así. Después de leer, todavía tenía la sensación de que algo estaba oculto para mí, que algunos aspectos de la arquitectura no se veían afectados en absoluto. Para obtener más información, pasé al siguiente libro, Computer Architecture de Andrew Tanenbaum . La información en este libro era mucho más extensa, pero no obtuve exactamente lo que quería.

En esto, mi camino en el mundo de la arquitectura de computadoras se detuvo, comenzaron los estudios, me distrajeron otros proyectos que eran más interesantes para mí en ese momento. Pero, desafortunadamente, soy una de esas personas que no pueden usar nada sin remordimiento, sin conocer al menos aproximadamente el mecanismo de esta herramienta. Me hizo buscar material sobre todo.

Después de leer varios capítulos de libros sobre motores de juegos, compiladores, sistemas operativos, etc., llegué a una serie de decepciones. Estaba completamente perdido: un mundo que parecía lógico y moderadamente simple en este momento se volvió enorme y confuso, requiriendo una cantidad impresionante de conocimiento.

El comienzo de un gran viaje.


Lo que me salvó fue la respuesta de un usuario en algún foro a la publicación de una persona que sufre de un "trastorno" similar, el mundo de TI le pareció tan grande que ciertamente no podía ser comprendido. Recuerdo esas palabras y me ayudan cada vez que me encuentro con algo nuevo. "No te dejes abrumar" es algo que todo novato de TI debería decir.

Y luego comencé a navegar por Internet con renovado vigor en busca de literatura. Tuve mucha suerte de encontrarme con el maravilloso libro The Elements of Computing Systems. Construyendo una computadora moderna a partir de los primeros principios ”por Noam Nisan y Shimon Schocken (sin edición rusa). Es para aquellos como yo que muestran la creación de una computadora que realmente funciona desde cero, es decir, desde puertas lógicas.

Se me ocurrió una idea y comencé a trabajar. Comenzó con lo que había hecho una vez después de leer Petzold: sumadores, registros, multiplexores. Estos son algunos de los dispositivos más simples cuyo trabajo no es del todo difícil de entender (si no piensa en la eficiencia), y puede hacerlo en 10 minutos en una aplicación conveniente en su teléfono inteligente.

Comencé cada capítulo siguiente con sed de conocimiento. ALU diseñado, guiado por las tareas del libro. No puedo decir que se me ocurrió algo, sino que me dieron las piezas terminadas y las puse juntas en un hermoso auto. Pero qué placer tuve cuando me di cuenta de que había ensamblado un ALU completamente funcional con mis propias manos.

Placa de circuito ALU, realizada en el programa BOOLR
imagen

Primicias


Fue seguido por un procesador de 16 bits totalmente funcional, que completé hoy. No hay límite para mi felicidad, pero no voy a parar. Para mi pesar, aunque todo el procesador en el libro fue ensamblado completamente desde cero, el ensamblador para él fue una abstracción en el próximo capítulo (lo cual es lógico, el libro está diseñado para una exposición más o menos concisa, aunque detallada). Después de un poco de tristeza, me di cuenta de que los ensamblados también son un lenguaje de programación, y crear un ensamblador completo desde cero tomará mucho tiempo.

Esquema del procesador terminado. El gran punto negro es el mismo ALU
imagen

Sobre ensamblador en un libro
De hecho, este tema en el libro no se omitió por completo. Dice que el ensamblador se puede escribir usando cualquier lenguaje de programación de alto nivel. Como idiota y valiente, esta opción no me conviene mucho, quiero hacer todo con mis propias manos usando el procesador que tengo. Y sí, entiendo que perderé mucho tiempo, pero lo disfrutaré, estoy seguro.

Escribir su ensamblador es un objetivo ambicioso, pero esta no es la única dificultad. El camino que elegí promete ser difícil. Los registros y, en general, la memoria en el programa BOOLR solo se pueden implementar utilizando puertas lógicas. ¿Por qué es esto un problema? Es simple: insignificantes 1024 bytes de RAM docenas de veces intentan recursivamente colocar sus registros compuestos de 16 bits en la RAM de mi computadora. Esto es lo que viene de esto:

Captura de pantalla de la Lista de procesos del Administrador de tareas

En términos generales, a veces un proyecto simplemente no se abre debido a la falta de RAM. Parece un callejón sin salida, pero no tengo la intención de detenerme allí.

Source: https://habr.com/ru/post/483568/


All Articles