Esta es una pregunta amplia que no tiene una respuesta fácil; Hay un largo camino desde los electrones que se deslizan por los cables de cobre hasta la representación de un sitio web en Firefox. Intentaré darle una visión general de abajo hacia arriba y señalarle las cosas correctas para buscar.
Números de codificación
La motivación básica es calcular cosas, como hacer aritmética¹. Lo primero a tener en cuenta es cómo representar números. Ha habido muchos enfoques, utilizando decimales o ternarios y creo que incluso los sistemas octales, pero al final, el binario ganó. Ahora sabemos que tenemos que construir dispositivos que manejen dos valores, llamémoslos y .10 01
Tenga en cuenta que también hay múltiples formas de codificar números en binario. Después de construir su primer procesador, se da cuenta de las ventajas de hacer las cosas de cierta manera. Ejemplos populares son los flotadores de dos complementos y IEEE . Para empezar, limítese a números naturales simples.
Puertas
Supongamos que usamos codificación binaria. Piensa en cómo aprendiste a sumar en la escuela primaria y escribe lo mismo para los números binarios. Resulta que los componentes básicos del álgebra booleana ya están allí para ti; Es fácil construir un sumador básico (y otras funciones aritméticas) utilizando puertas lógicas .
Cómo construir tales puertas está fuera del alcance de la informática; La ingeniería eléctrica ha proporcionado múltiples soluciones utilizando, por ejemplo, tubos o transistores . Dirígete a Electrical Engineering Stack Exchange para preguntas sobre esto.
Reloj y estado
No todas las puertas son igualmente rápidas y no todas las partes de un cálculo tienen el mismo número de puertas. Por lo tanto, debemos tener especial cuidado de que las operaciones individuales no se superen entre sí. Ha demostrado ser útil usar un reloj global ; El resultado de una red de compuertas dada es el estado de los cables de salida al final del ciclo (que puede cambiar enormemente mientras las compuertas caen en cascada hacia sus estados finales individuales).
Eso significa que los resultados de un ciclo pueden tener que almacenarse hasta que comience el siguiente ciclo, por ejemplo, si conecta los bucles. Hay una serie de elementos básicos que puede utilizar para variar el efecto, todos se acumulan a partir de puertas; algunos se llaman chanclas . Esos también se utilizan para crear registros , elementos que almacenan números para tantos ciclos de reloj como sea necesario.
Arquitectura y comandos
Ahora tiene una gran cantidad de opciones de diseño para hacer. ¿Qué operaciones aritméticas proporciona su procesador? ¿Cómo son tus comandos? Puede ser educativo mirar la arquitectura MIPS cuyas primeras formas son fáciles en comparación con otros diseños. Echa un vistazo a los planes :
Original de http://ube.ege.edu.tr/~erciyes/CENG311
Esencialmente, es buscar y desmontar comandos, un conjunto de registros, una ALU y control. Los comandos codifican qué operación ALU realizar en qué operandos (por el número del registro en el que se encuentran), cómo manipular el contador del programa² o qué registro cargar / almacenar desde / a la memoria³.
Consideraciones adicionales
Ahora tiene un procesador en funcionamiento en el sentido moderno, suponiendo que descubrió cómo construir una memoria y una forma de alimentar los comandos. En su camino hacia una máquina moderna, se deben tomar muchas decisiones. Aquí están algunos:
Alternativas
Lo anterior está fuertemente influenciado por cómo resultó la historia. En un mundo diferente con diferentes mentes, las computadoras pueden funcionar de manera diferente. De hecho, hay muchos modelos de computación , algunos de los cuales tienen ventajas que los hacen útiles como abstracción para máquinas reales en muchos casos. También hay intentos de imitar la forma en que funcionan nuestros cerebros, es decir, permitir la informática neuronal , o más generalmente, explotar las estrategias de resolución de problemas y almacenamiento de información observadas en la naturaleza , principalmente el ADN y la computación cuántica .
Entonces, tal vez (¿con suerte?) La información anterior es toda la historia antigua dentro de otros 50 o 100 años.
- Todas las cosas elegantes que hacemos hoy con las computadoras se dividen en muchas pequeñas tareas aritméticas que el procesador ejecuta una por una.
- Si su modelo permite que el programa manipule el flujo de control, esta sería la dirección de memoria de la que el procesador obtiene la siguiente instrucción. También puede concebir máquinas que solo leen un conjunto fijo de instrucciones de, por ejemplo, una cinta. De hecho, las primeras implementaciones hicieron eso. Sin saltos no significaba bucles; un programa era una serie de instrucciones completamente desenrolladas / desplegadas dependiendo de los datos. Obviamente, poder usar el mismo programa para múltiples datos de entrada es más poderoso.
- Asumiendo que tienes memoria; su procesador funciona bien sin él, pero solo puede manejar tantos valores a la vez. Las primeras computadoras sí leían todos sus datos de las cintas y los guardaban en registros. No había memoria, y mucho menos almacenamiento grabable y persistente como lo conocemos hoy.