¿Cómo funciona una computadora?

40

He sido un nerd informático durante muchos años. Puedo programar en bastantes idiomas e incluso puedo construirlos. El otro día me senté con un amigo y pregunté cómo una computadora realmente toma electricidad y hace algo con ella, y simplemente no pudimos resolverlo, y Google tampoco fue de mucha ayuda.

Quiero decir, ¿cómo toma una computadora un flujo constante de electricidad y lo convierte en 1 y 0 y luego hace algo con esos 1 y 0 como encender una luz durante 15 segundos?

Entiendo las puertas (AND, OR, NOR, NAND, NOT) y un poco sobre diodos , resistencias y transistores , ¡pero pensé que este sería el lugar perfecto para que lo explicaran en términos verdaderos!

¿Alguien puede señalarme en la dirección correcta o darme una breve explicación?

cristiano
fuente
8
También podría preguntar "¿cómo funcionan las bacterias?". Esta es una pregunta increíblemente amplia. Le sugiero que mire una arquitectura de procesador simple (por ejemplo, MIPS ; nos enseñaron esto en clase) y trabaje hacia abajo y hacia arriba desde allí. Las preguntas que enfrenta en el camino probablemente sean mucho más adecuadas para Stack Exchange que esta.
Raphael
3
Sé cómo funcionan las bacterias, es la computadora que no tengo lol
Christian
14
Elfos Pequeños elfos mágicos.
JeffE
1
La mejor manera de aprender cómo funciona realmente una computadora en el nivel más bajo es diseñar un microcontrolador simplista en una fpga o manualmente desde las puertas de Nand. Lo hice en una clase de "Arquitecturas de computadoras" y fue realmente una revelación. Ni siquiera es difícil de hacer si mantiene todo al mínimo y diseña un controlador de 4 bits con adición, manipulación de bits y un salto condicional. O incluso más simple, un hardware que implementa una máquina Turing simplificada. Hm, esta idea me dio una idea: aprender cómo funciona una máquina de Turing. Te dará una buena idea.
vsz

Respuestas:

47

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 :

MIPS de una etapa
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.


  1. 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.
  2. 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.
  3. 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.
Rafael
fuente
¡Guauu! Eso merece un aplauso. Esa fue una gran lectura. Gracias por compartir. Ciertamente he aprendido algo. Aunque, después de leer eso, creo que lo que quiero saber son más los fundamentos de la ingeniería eléctrica en términos de cómo controla físicamente la electricidad. Publicaré la misma pregunta a ese grupo un poco más tarde hoy. ¡Gracias!
Cristiano
1
Se me ocurrió que probablemente debería haber incluido la "parte de hablar con la máquina". Eso significa diseñar un lenguaje con el que los humanos puedan trabajar de manera eficiente y traducirlo (con un compilador) al conjunto de instrucciones que especificó. Estos son temas centrales de la informática , mientras que el material en mi respuesta es principalmente ingeniería informática .
Raphael
Me imagino que no es una respuesta rápida. Un día le pagaré a un ingeniero informático que construye placas base o teléfonos móviles, como funcionan los fundamentos. Es decir, cómo una computadora calcula o enciende una luz durante 5 segundos y luego la apaga. Me imagino que tiene mucho que ver con interruptores y condensadores.
Christian
@Christian Si desea ahorrar algo de dinero, considere comprar una caja de experimento EE (como las de los niños) que incluye transistores. Normalmente se incluye el cambio de luces o la construcción de una pequeña víbora, afaik. (Una vez más, las Ingeniería Eléctrica gente probablemente saben más.)
Rafael
25

La imagen completa es bastante complicada. Hay muchas capas construidas una encima de la otra que implementan colectivamente abstracciones de alto nivel además de voltajes eléctricos. No existe una explicación simple de cómo se arma todo, especialmente considerando que el hardware y el software de la computadora ha evolucionado dramáticamente en los últimos cincuenta años.

Si está interesado en ver cómo se arma todo, puede consultar The Elements of Computing Systems , un libro que comienza con puertas NAND y desarrolla progresivamente una implementación funcional de Tetris sobre un compilador y un sistema operativo que tú también construyes. Cada pieza de la computadora está construida sobre la anterior, lo que podría ayudarlo a ver cómo funciona todo.

templatetypedef
fuente
Eso suena como un punto de partida perfecto. Comenzaré por ahí. Muchas gracias :)
Christian
2
También recomiendo leer CODE de Charles Petzold.
ybakos
7

El podcast Security Now! Hicimos una serie sobre cómo funcionan las computadoras, comenzando con los principios básicos.

  • 233 - Diseñemos una computadora (parte 1)
  • 235 - Lenguaje de máquina
  • 237 - Indirección: El poder de los punteros (técnicamente no forma parte de la serie)
  • 239 - Pilas, registros y recursión
  • 241 - Interrupciones de hardware
  • 247 - El inverso "Multi"
  • 250 - Sistemas operativos
  • 252 - RISCy Business
  • 254 - Lo que haremos por la velocidad

Las brechas en los números se deben a que cada otro episodio es un episodio de Comentarios de oyentes, por lo que es posible que también desee verlos. También entre 241 y 247 hicieron algunos episodios sobre SSL debido a las noticias de última hora en ese momento sobre los países que obligaban a CA a darles certificados raíz.

También EP. 248 es el "Asesino de perros portátil" que no mata perros, sino un arma de haz sónico que Steve hizo solo cuando era niño para ayudar a enseñar a un perro vecino a no correr hasta la línea de la cerca e intentar atacar a las personas en la acera .

Scott Chamberlain
fuente
¡interesante! Gracias por compartir. Echaré un vistazo.
Christian
4

Una computadora funciona manipulando los gradientes de energía (que luego interpretamos como 1 y 0) de una manera consistente y definida . Es la consistencia que define una computadora, mientras que es la definición que separa los diferentes procesadores.

Además, aprenda cómo solo dos puertas lógicas (OR y AND) son bloques de construcción suficientes para construir cualquier computadora de propósito general. Ver también, Danny Hillis y la computadora Tinkertoy.


fuente
Esa fue una lectura interesante sobre el TinkerToy, ¡especialmente el hecho de que siempre gana! ( Science20.com/brain_candyfeed_your_mind/… )
Christian
Sin embargo, aunque me da una buena idea de cómo "piensa" una computadora, es decir, al darle todas las combinaciones y la mecánica para encontrar la siguiente respuesta dada la anterior, no responde a mi pregunta original sobre cómo construir realmente una computadora. Suponga que me dirijo a mi ferretería eléctrica local (que tiene todo) para comprar los bits fundamentales (transitores, resistores, condensadores, compuertas, etc.) y configurarlos para tener una computadora extremadamente básica, ¿qué necesitaría? Después de todo, la primera computadora era del tamaño de un almacén con brocas y cables, ¡así que debe ser posible!
Christian
@Christian: jaja, está bien, construya algunas puertas lógicas básicas (Y / O / NO) algunos flip-flops para el almacenamiento de memoria básico y es posible que pueda agregar dos números de 4 bits.
Tengo unas chanclas! Dos pares de hecho.
Christian
3

Una computadora es un gran sistema lógico sincrónico , lo que significa que

  • 0 0/ /1
  • funciona con un reloj (muy rápido) para que todas las señales se muestreen en momentos discretos para garantizar la coherencia.

0 0/ /1

Tiene circuitos especializados para retener información mientras la computadora esté encendida (RAM, en grandes cantidades). Tiene circuitos especializados para realizar aritmética binaria (en realidad, los bits se manejan en grupos, generalmente en múltiplos de 8, que colectivamente representan un número entero). Y tiene capacidades de enrutamiento especializadas basadas en direcciones de memoria, que no son más que enteros.

Por último, pero no menos importante, una computadora moderna tiene un programa también almacenado en la RAM, que es una lista de instrucciones codificadas como números enteros, que se ejecuta de forma secuencial, generalmente recuperando datos de la memoria, realizando algunos cálculos y enviando los resultados a la memoria.

En su escenario, uno podría pensar en una implementación donde el tiempo transcurrido se almacena en algún lugar de la RAM y el programa le indica a

  • buscar el valor del tiempo transcurrido,
  • increméntelo con un sumador,
  • compárelo con un retraso predefinido con un comparador,
  • volver a la dirección de inicio del programa en caso de desigualdad (es decir, "bucles"),
  • de lo contrario, configure una señal especializada que vaya a un interruptor externo en lugar de RAM.

Tenga en cuenta que todos estos elementos hoy en día logran un alto grado de sofisticación, y cada oración en esta breve descripción merece varios libros de explicaciones.

Yves Daoust
fuente
-1

Hay varias formas de hacer una función de retraso o convertir los datos binarios a datos decimales o intensidad de la señal. Cuando ingresa el valor "15", la computadora muestra una imagen de mapa de bits del número 15 en la pantalla. Este es en realidad el valor binario, en este momento el código binario de su teclado también se envía a la CPU. Analizará los datos y luego cambiará el código a la unidad de procesamiento ALU (unidad lógica aritmética) para convertirlo en un pulso a chip DAC. La señal analógica ahora está controlando la frecuencia (la frecuencia de khz a hz) de un circuito flip-flop. Ahora la salida de frecuencia se dirigirá a la RAM, y la CPU leerá la RAM para que coincida si los datos son "1111". Eso son 4 segundos.

Lan ...
fuente
No estoy seguro de cómo esto responde la pregunta.
Yuval Filmus
puede ver que él preguntó cómo el parpadeo de la computadora condujo durante 15 segundos, y le explico cómo la computadora crea el segundo valor para usar en bucle.
Lan ...