¿Cómo funcionan las computadoras como lo hacen? ¿Cuándo se convierte la electricidad en lógica ejecutable y cómo?

Esta es una gran pregunta. Lo pregunté yo mismo cuando jugaba FIFA 99 en PC cuando era un niño de 11 años y emprendí un viaje universitario de 6 años tratando de encontrar una respuesta a esto.

Es realmente complejo, pero déjame tontarlo un poco (en realidad mucho). Comencemos desde abajo:

  • La materia está compuesta de átomos (podemos ir más pequeños que esto, pero esto debería ser suficiente para esta pregunta)
  • Los átomos tienen electrones y el flujo de estos electrones se define como electricidad.
  • Ahora, para hacer uso de estos electrones, creamos transistores que pueden almacenar / liberar electricidad según sea necesario. Se almacenan en unidades de 1 (5 voltios) y 0 (0 voltios)
  • Un número de 8 bits se representa con 8 transistores. Entonces, la representación de 8 bits del número 3 será: 0000 0011. ¿Cómo se logra eso en el hardware? Mantenga 8 transistores uno al lado del otro (llamados registros y unidades de memoria). Haga que los primeros 6 transistores sostengan 0V y los siguientes 2 transistores sostengan 5V
  • Ahora, una organización de tales registros y memoria hace una CPU + RAM
  • Para facilitar el cálculo con la CPU, desarrollamos código máquina. Este lenguaje es lo que esencialmente se ejecuta en la CPU. ¿Qué quiero decir con “correr”? Significa, sigue volteando bits. Si quiero realizar 2 + 3, en la máquina, almacenaría 2 en un registro (registro explicado anteriormente) y 3 en otro registro. Luego tomaría estos valores a una unidad Adder que haría una suma matemática (no es lo mismo que la adición de voltaje) y me daría la respuesta en otro registro. Así es como se vería un código de máquina de muestra:

80 02 F3
80 03 F4
88 F3 F4 F5

Obviamente, nadie entendió nada con esto. Así que se nos ocurrió un sistema ingenuo para que sea legible para los humanos. Esto se llama lenguaje ensamblador. El siguiente código representa los números mencionados anteriormente:

MOVI 2, REG A
MOVI 3, REG B
AGREGAR REG A, REG B, REG C (agregue A y B y almacene en C)

donde MOVI = 80
REG A = F3
REG B = F4
REG C = F5
AGREGAR = 88

Voila, nuestro primer lenguaje de codificación 🙂

  • Ahora, el ensamblaje es demasiado difícil para que los humanos lo recuerden y lo codifiquen correctamente. Así que desarrollaron compiladores que convertirían un lenguaje de alto nivel como C a lenguaje ensamblador (recuerden, este lenguaje ensamblador hace el cambio real de bits)

Entonces, una representación en C de la asamblea mencionada anteriormente sería:
{
int a = 2; b = 3;
c = a + b;
}

  • Al igual que las personas podían escribir poemas con inglés y no con signos manuales, nos dimos cuenta de que con un lenguaje expresivo, las personas podían escribir algunos mejores programas. Luego compílelo para ensamblar. Entonces eso voltearía bits en los registros. Lo que a su vez afectaría a los transistores, que afectan el flujo de electrones.
  • Con la expresividad encontrada anteriormente, escribimos sistemas operativos para maximizar el uso de hardware, ya que se vio que la CPU permaneció inactiva mientras recuperamos datos del disco
  • Todo, desde la entrada del teclado hasta el mouse, el escritorio, las ventanas y el sonido, es un programa escrito en dichos lenguajes expresivos, que se ejecuta sobre el sistema operativo
  • En el sistema operativo, desarrollamos una pila de red llamada TCP / IP. Esta pila proporcionó una metodología estandarizada para que las computadoras se comuniquen entre sí
  • Una vez que funcionó y pudimos conectar las computadoras entre sí mediante cables, creamos WWW y http. Esto permitió a las personas de diferentes redes comunicarse entre sí. Tenga en cuenta que http es un protocolo. Los servidores y clientes son programas que siguen (al menos) http además de los protocolos internos.

Caminemos hacia el otro lado, desde el software hasta los electrones ahora

  • Cuando escribe Google en el navegador y presiona la tecla Intro, se envía una solicitud http desde su navegador (el cliente) a Google (servidor)
  • En su propia computadora, el navegador es un programa escrito en C / C ++
  • Esto se compila para ensamblar (en realidad el navegador ya está compilado, solo está dando números de entrada al navegador compilado)
  • El sistema operativo (Windows / Linux, etc.) y los controladores de dispositivo ya están compilados para ensamblar y se están ejecutando en su máquina
  • Cuando el ensamblaje del navegador tiene su turno para ejecutarse en la CPU, ejecuta el ensamblaje
  • Este código de ensamblaje hace voltear bits en registros y memoria
  • Los registros y la memoria están compuestos por transistores.
  • Los transistores controlan el flujo de electrones y, por lo tanto, la electricidad.

Lo he simplificado demasiado. Pero esto es lo que es en esencia. Hay muchas otras cosas que suceden, pero la mayoría son diferentes programas de software que interactúan entre sí (¿recuerdan la matriz de películas?).

Me alegra que hayas hecho esta pregunta. Las computadoras son milagros hechos por el hombre del más alto orden. Ninguna persona sola podría haber pensado en todo esto. Se han necesitado más de 50 años y millones de personas inteligentes para llegar a este punto. La mayoría de los programadores informáticos y profesionales con los que he hablado tienen una imagen incompleta de lo que realmente es una computadora y (como usted lo dice) cómo se convierte la electricidad en software.

Espero que esto ayude.

Editar:

A juzgar por la popularidad de esta respuesta, parece que muchas personas usarían esto como referencia en alguna parte. Me gustaría señalar que lo he simplificado a la definición de trivia. No he tocado ni siquiera el 1% de los detalles reales. Cada punto que menciono tiene miles de ingenieros trabajando en él todos los días y los detalles son alucinantes.

La respuesta tiene algunas imprecisiones. Por ejemplo, no es cierto que 1 transistor represente 1 bit. De hecho, un grupo de 6 puertas (haciendo un D Flip-flop) que lo hace. Hay otras chanclas haciendo lo mismo. Sin embargo, no tenía ganas de entrar en detalles de puertas y circuitos lógicos.

Sin embargo, el resumen es cierto. Esto es esencialmente cómo se vería un sistema informático desde el exterior.

También tenga en cuenta que nos hemos alejado mucho más de esta descripción trivial. Ni siquiera hablé sobre cachés, coherencias, consistencias en sistemas multiprocesador, programadores, microarquitecturas, archivos de registro, puentes, GPU, cómo funciona la pantalla, ¿cómo funciona el BIOS, qué es init ?, ¿qué quieres decir cuando dices que algo es un “programa”? etc.

Tampoco hablé sobre máquinas de estado, ALU, tuberías, fuente de alimentación, cómo se mide la corriente, CLOCK, ticks del sistema, HDL, lógica de control, circuitos digitales como mux / demux, decodificadores, criptos, etc.

Esa es demasiada información para sentarse y publicar en línea (tengo vida social y laboral en el mundo real 😉). También mucha información en Wikipedia sobre todo esto parece anticuada / trivial.

Editar:

Si * todo * de lo anterior le parece escandalosamente trivial, tomemos cerveza en algún momento y analicemos el estado actual de la arquitectura y el sistema operativo. Obviamente eres alguien de quien puedo aprender más.

Piensa en cómo sumas números en tu dedo. Solo puede contar hasta 10 … luego baja todos los dedos cuando pasa de 10, luego continúa contando nuevamente.

Ahora, si tan solo hubiera una manera de construir algo que use electricidad para automatizar el cambio y el conteo. A principios de 1900, inventaron un dispositivo llamado transistor, que es simplemente un interruptor (bueno … también amplificador). En las computadoras, las cosas se cuentan por el modular 2 porque bueno … un interruptor eléctrico, al igual que su interruptor de luz, está encendido o apagado, 1 o 0. No puede tener un tercer o cuarto estado; si pudiera, las computadoras tendrían cuenta por mod 3 .. o mod 4 .. o mod 32 (computadoras cuánticas!) … pero de todos modos, un interruptor solo puede tener 2 estados.

¿Cómo puede un trozo de metal cambiar y recordar cosas? En química, aprendiste sobre conductores, semiconductores y aislantes. Algunos chicos pensaron que si colocabas algunos metales de una manera muy específica (electrones de valencia, blabla), construirías algo llamado transistor. Y un transistor tiene una propiedad especial de dejar pasar electrones solo si se aplica un voltaje suficientemente alto.

Sé que las últimas dos oraciones apenas tienen sentido, pero digamos que hay una tubería de agua con agua corriente. Y el transistor es una válvula de cierre de agua l̶a̶r̶g̶e̶ ̶d̶r̶a̶i̶n̶ en la tubería antes de que entre en su casa. Si el transistor está ENCENDIDO, es decir, el cierre de la válvula está encendido, su grifo no recibirá agua, y si el transistor está APAGADO, el cierre de la válvula está apagado, el agua llega a su grifo. Esta es una explicación muy aproximada de cómo los electrones fluyen a través de los circuitos de transistores.

Por esto, un transistor imita la lógica de inversión, un inversor. Usando este comportamiento simple, puede construir una lógica más compleja como AND, NAND, NOR, etc., que luego genera MUX, DEMUX, contadores, ALU, pestillos, etc. Luego hay matemática binaria que puede hacer estos componentes y se obtiene todos locos. Básicamente, construye una gran red de conmutadores que pueden hacer cálculos matemáticos o computar. Aprender sobre todas las cosas de este párrafo solo probablemente tomará un año.

El primer transistor inventado era del tamaño de tu mano. Hacer una “computadora” que pueda agregar 4 bits requeriría más de 50 transistores, aproximadamente el tamaño de su escritorio.

Pero, por supuesto, hoy, ¿sabes cómo escuchas sobre la arquitectura de 45 nm y la arquitectura de 22 nm para tu CPU? Sí, así de pequeños son los transistores (pero todo es relativo, ¿eh?). Un billón de ellos puede caber en la palma de su mano ahora.

Hacer un circuito con un montón de transistores en ese entonces tomaría una eternidad. Me tomó una semana dibujar y conectar un sumador de 16 bits en la escuela, no puedo imaginar cuánto tiempo tardó en ese momento … Podría haber sacado la aplicación de mi calculadora.

Por supuesto, hace décadas, ya se aburrían de usarlo solo para resolver problemas matemáticos y vieron sus muchas otras aplicaciones. Entonces, los chicos comenzaron a conectar cosas a su calculadora elegante como pantallas digitales, conectando un montón de voltajes de salida de sus circuitos a bombillas para mostrar las respuestas a 7 + 8. Luego, la gente se dejó llevar y comenzó a construir monitores LCD, impresoras, etc. Pero imagine la codificación dura de cada bit uno a la vez, es decir, conectar transistores, resistencias, etc. juntos para cada problema específico que pueda imaginar, imagine cuánto tiempo tomaría programar cualquier cosa si ese fuera el caso. (por supuesto, todavía hay chips y circuitos para aplicaciones específicas)

Por suerte no lo es. La gente ha hecho circuitos de propósito general que pueden tomar cualquier entrada y ejecutar cualquier operación, y su computadora es solo una gran cantidad de estos pequeños bloques de construcción interconectados. Su tarjeta gráfica, su tarjeta ethernet, su tarjeta de sonido, todas estas partes están formadas por transistores y otras partes. Por lo general, incluyen un CD en la caja con los controladores. Los controladores son programas que le dicen a su sistema operativo cómo manipular los 1s y 0s en el metal para hacer lo que necesita hacer. Luego, los programadores escriben programas que el sistema operativo comprende y luego se traducen al metal.

Increíble, ¿eh? Todo eso solo para traernos porno.

Copié textualmente de mi propia publicación aquí: – Una explicación detallada de cómo funcionan las computadoras

Intenta digerir esto, lo que estás leyendo ahora mismo, es solo un poco de electricidad manipulada por una gran cantidad de hardware complicado y proyectada en una pantalla LCD. Simplemente electricidad vieja que alimenta ventiladores, lámparas, motores e incluso móviles. Una computadora básicamente solo convierte la electricidad en software, y es este software el que se ha convertido en una parte integral de todas y cada una de nuestras vidas. Si no cree en esta declaración mía aparentemente descabellada, considere esto, la única entrada a una computadora es la electricidad. Lo que hace una computadora es almacenar esta electricidad en forma de datos y realizar operaciones aritméticas y lógicas básicas en los datos almacenados para ejecutar software, mostrar fotos, navegar por Internet, jugar juegos y procesar información.

créditos: – Slim Films Home

Todo comienza con el transistor, que es un dispositivo semiconductor utilizado para amplificar señales eléctricas. No es necesario conocer el funcionamiento de estos componentes eléctricos, todo lo que necesitamos saber es que si se usan en conjunto, pueden almacenar electricidad. Un par de transistores dispuestos de cierta manera forman flip-flops, que pueden almacenar un solo bit de datos. Ahora uno preguntaría qué es un solo bit de datos. Es simplemente la presencia de carga (1) o la ausencia de carga (0). Para resumir lo que hemos aprendido hasta ahora, los transistores forman flip-flops, y cada flip-flop puede almacenar electricidad. Si un flip-flop almacena electricidad, se dice que está almacenando un 1, de lo contrario se dice que está almacenando un 0.
Estoy seguro de que todos saben que las computadoras se ejecutan en código binario que se compone de 1s y 0s. Entonces, básicamente, todo lo que ves en tu pantalla está compuesto por millones y millones de 1s y 0s, que a su vez son solo la presencia (o ausencia) o la electricidad. ¿Ahora crees que el reclamo original de que todo lo digital es electricidad? Lo que hace una computadora es almacenar estos 1s y 0s en formatos específicos, y los manipula utilizando circuitos lógicos.


Un flip-flip usando puertas NAND
Créditos: – Notas de ingeniería electrónica, conferencias, proyectos

Los circuitos lógicos toman 1s y 0s como entrada y los transforman en 1 o 0 dependiendo de la naturaleza del circuito utilizado. Esto es un poco complejo de entender al principio, así que lea detenidamente. Un circuito lógico está compuesto por puertas lógicas. Tomemos un circuito con una sola puerta lógica con solo dos entradas para simplificar. Tomemos la puerta AND. Lo que hace una puerta AND es convertir las dos entradas a 1 o 0, dependiendo únicamente de las entradas utilizadas. Digamos que las dos entradas son 0 y 0. Estas dos entradas entran en la puerta AND y la puerta AND produce un 1 o un 0 como salida, dependiendo de su lógica interna. La compuerta AND emite un 1 si y solo si ambas entradas son también 1. Entonces, digamos que nuestra entrada es 0 y 1, la salida será 0. Si la entrada es 0 y 0, aún la salida de la compuerta sería 0 Ahora, si la entrada es 1 y 1, la salida de la compuerta AND será un 1. Este es un ejemplo muy básico de cómo una computadora realiza el cálculo lógico.

créditos: – Departamento de Ingeniería

Tomemos otro ejemplo de una puerta común llamada la puerta NO. Esta puerta tiene una sola entrada y una sola salida. Si la entrada es 1, la salida será 0 y si la entrada es 0, la salida será 1. La tercera puerta básica se llama puerta OR, que emite 1 si la entrada contiene uno o más 1s. Así que básicamente 0 y 0-> 0, 0 y 1-> 1, 1 y 0-> 1 y 1 y 1-> 1. Ahora, dado que conocemos las tres puertas básicas, podemos entender las puertas complejas, como una puerta NAND y una puerta NOR. Una puerta NAND es básicamente una puerta AND seguida de una puerta NOT. Digamos que la compuerta AND tiene dos entradas, 0 y 1. Emite 0 (porque solo ingresa 1 cuando todas las entradas a ella también son 1), y este 0 es la entrada a la compuerta NOT que la convierte en 1. De manera similar a La puerta NOR es una puerta OR seguida de una puerta NOT. Estas cinco puertas construyen toda la circuitería lógica utilizada por las computadoras.

créditos: – BuildCircuit | Electrónica para principiantes

Entonces tenemos flip-flops que almacenan datos, y puertas lógicas que manipulan datos. Hablando estrictamente, un flip-flop está compuesto por puertas lógicas, lo que puede parecer contradictorio con la explicación anterior de que está compuesto por transistores. Bueno, incluso las puertas de registro están formadas por transistores, por lo que, en esencia, los transistores forman puertas lógicas, que forman flip-flops, que almacenan un 1 o un 0. Los datos almacenados en estos flip-flops pueden cambiarse si pasamos a través de otras puertas lógicas.

Ahora entenderemos cómo se almacenan los datos. Todos deben conocer la capacidad de almacenamiento de sus teléfonos y computadoras portátiles. Asumamos una computadora con una capacidad de 1GB. ¿Qué es este 1GB? Un GB es un gigabyte, que es 1024 megabytes. Entonces, su computadora de 1GB tiene la capacidad de almacenar 1024 megabytes de memoria. Cada MB (megabyte) puede almacenar 1024 kilobytes (KB). Por lo tanto, su computadora de 1 GB, que puede contener 1024 MB de datos, puede contener esencialmente 1024 * 1024 KB de datos. Cada KB puede almacenar 1024 bytes de datos y, por lo tanto, 1 KB equivale a 1024 B. Para resumir 1GB = 1024MB = 1024 * 1024KB = 1024 * 1024 * 1024B.

créditos: – Toneladas de materiales de enseñanza gratuitos y revisión de las TIC

¿Qué es un byte? Cada byte está compuesto por ocho bits. Cada bit es un solo 1 o 0. Entonces, como aprendimos anteriormente, un 1 o un 0 se almacena en un flip-flop, y por lo tanto cada bit se almacena en un flip-flop. Por lo tanto, un byte requiere ocho flip-flops. Un kilobyte requiere un poco más de ocho mil chanclas. Un megabyte requiere ocho millones de ellos, y un gigabyte requiere ocho mil millones de ellos. ¡Así que esa película de 1GB que acaba de transferir desde su disco duro externo a su computadora implicó el cambio de ocho mil millones de chanclas! Y dado que las chanclas comunes generalmente están formadas por seis puertas lógicas cada una, ese 1 GB de datos requiere 48 mil millones de puertas NAND o NOR. Y dado que cada compuerta está hecha de 3 a 4 transistores, puedes imaginar la cantidad de transistores necesarios para almacenar un solo gigabyte de datos. Estoy bastante seguro de que todas sus computadoras tienen al menos 100 GB de capacidad de almacenamiento, solo imagine cuántos transistores están conectados dentro de su computadora.

Ahora que sabe cómo se almacenan los datos sin procesar, centremos nuestra atención en cómo se almacena la información en una computadora. Un solo bit no tiene importancia, ya que solo puede transmitir dos valores posibles (un 1 o un 0). Los datos en las computadoras se almacenan en forma de bytes, u ocho bits. Un grupo de ocho flip-flops conectados entre sí forman un registro. Cada carácter básico se puede representar en la forma de ocho bits. Tome el número 5. La representación binaria para 5 sería 00000101. Por lo tanto, un registro que contiene 5 tendría sus primeros cinco flip-flops que no almacenarían carga (o 0) y luego un 1 y un 0 y un 1. Estos registros pueden sufrir varios operaciones como desplazamiento a la izquierda, desplazamiento a la derecha, etc., utilizando las puertas lógicas que discutimos anteriormente. También podemos construir circuitos para sumar, restar, multiplicar y dividir los valores almacenados en dos registros, y estas operaciones son los componentes básicos de todo el software que utiliza todos los días.

créditos: – Electronixandmore.com, hogar de las radios antiguas de Jon y más

Todavía solo hemos discutido lo que hace un disco duro. Ahora comenzaremos a entender cómo funciona un procesador. ¿Qué es un procesador? Es un chip electrónico que contiene millones y millones de puertas lógicas, y es capaz de interpretar instrucciones. Es como la parte cognitiva del cerebro humano. Digamos que lees en alguna parte 2 + 2 = 4. Ahora, si en una prueba la pregunta pregunta qué es dos más dos, puede recordar cuatro de memoria y responder fácilmente. Pero, ¿y si te pregunto qué es 2 + 3? Ahora tiene que tomar estos dos números como entradas para su cerebro, realizar la suma según la teoría detrás de la suma y producir una salida de 5. Usted tenía las siguientes entradas, 2, 3, y cómo funciona la suma. Su resultado fue 5. Pero, ¿cómo calculó la respuesta como 5? utilizó los números de entrada 2 y 3 y les aplicó la lógica de suma. Eso es lo que hace un procesador.

Un procesador toma los datos de entrada y el conocimiento de las operaciones a realizar, y calcula la salida. Un circuito que contiene una sola compuerta AND es también un procesador, aunque pequeño con poco uso. Cada vez que escribo una clave, el procesador la interpreta como una entrada, identifica qué carácter se ingresó y se almacena en el disco duro. Básicamente toma entrada, calcula en la entrada y produce una salida. En realidad, incluso escribir una sola tecla requiere cientos de cálculos y, por lo tanto, los procesadores deben hacer sus cálculos extremadamente rápido. Los procesadores modernos realizan miles de millones de operaciones cada segundo.

créditos: – Página en it168.com

Para realizar el cálculo, el procesador necesita entradas. Estas entradas se almacenan en su disco duro. Cada vez que los procesadores necesiten un valor, lo solicitará, entonces el valor se ubicaría entre los miles de millones de bytes en su disco duro y luego obtendría los datos. Estas transferencias entre el disco duro y el procesador son lentas y, por lo tanto, pierden un tiempo valioso en el que el procesador se sienta a esperar los datos. Por eso usamos una RAM. La RAM es un búfer entre el disco duro y el procesador. Las transferencias entre la RAM y el procesador son rápidas y, por lo tanto, ahorran tiempo del procesador. Lo que hace una RAM es predecir qué información se requerirá pronto por los procesadores y la obtiene por adelantado del disco duro. Entonces, cuando los procesadores solicitan ese fragmento de datos, la RAM ya lo tiene listo. Cómo predice qué datos requiere el procesador es bastante interesante, pero está más allá del alcance de este artículo. Ahora, dado que queremos que las computadoras funcionen aún más rápido, queremos reducir aún más el tiempo necesario para obtener datos de la RAM. Usamos otro nivel de almacenamiento entre la RAM y el procesador llamado caché. Lo que hace una memoria caché es similar a lo que hace una RAM, justo ahora el procesador toma directamente los datos de la memoria caché, lo que sigue obteniendo datos de la RAM por adelantado. Por lo tanto, los datos originalmente en el disco duro se recuperan previamente en la RAM, que a su vez se recupera previamente en la memoria caché, que el procesador utiliza cuando lo necesita. Ah, y por qué no solo usamos cachés en lugar de discos duros es porque los cachés son caros. Verifique las especificaciones de su computadora. Su disco duro probablemente sea de 250 GB o más. RAM de aproximadamente 4 GB y caché de menos de 1 GB. Teóricamente podríamos tener una computadora rápida con 250 GB de RAM, pero sería demasiado costosa y, por lo tanto, no comercialmente viable.

RAM de la computadora
créditos: – Compras en línea Mumbai – Compre en línea computadoras de escritorio, computadoras portátiles, periféricos para computadoras, impresoras, productos de red, cámaras CCTV y más en Dotsinfosystems.com

La placa base conecta el procesador, los cachés, la RAM y las tarjetas gráficas. Es solo un gran circuito lleno de conexiones. Adjuntamos los diversos periféricos mencionados anteriormente a la placa base a través de la cual todos se comunican. Creo que he cubierto todas las partes básicas de la CPU. Hablando estrictamente, la CPU es solo el procesador, pero por conveniencia, llamamos a todos estos periféricos juntos como una CPU. Otras cosas dentro de una CPU son los ventiladores (para enfriar el hardware ya que se calienta debido al uso continuo), un montón de cables para conectar una cosa a la otra y una caja de alimentación para aceptar electricidad y dividirla en consecuencia entre varias partes . La placa base también contiene varios puertos, como el puerto en el que inserta el cable Ethernet, para acceder a Internet, los puertos USB y el puerto que conecta el monitor a la CPU.

Una placa base
créditos: – Página en flixcart.com

Todavía no hemos tocado la parte del software de las computadoras. Entonces, ¿dónde entra el software? El código binario constituye todo el software en una computadora. Cualquier aplicación de computadora es solo una larga cadena de 1s y 0s. El texto que está leyendo, el navegador que está utilizando e incluso el sistema operativo en el que se ejecuta el navegador, todos ellos son solo una combinación de 1s y 0s. La codificación en 1s y 0s es extremadamente difícil, ya que los humanos no son naturalmente capaces de leer e interpretar estos 1s y 0s. Por lo tanto, los lenguajes de programación se desarrollaron para facilitar el trabajo de los ingenieros de software. El primer lote de estos idiomas se denominó idiomas de nivel ensamblador, que se muestra a continuación.

MOV R1, A
MOV R2, B
AGREGAR R1, R2, R3
STR C, R3

Este programa agrega el valor en la ubicación de memoria A al valor en la ubicación de memoria B y almacena el resultado en la ubicación de memoria C. Básicamente C <= A + B. Primero movemos el valor en A al registro R1. A es una ubicación en la RAM (o el caché), y R1 es un registro que pertenece al procesador. El procesador obtiene el valor en A en R1, ya que no puede usar A directamente y solo puede calcular en los pocos registros que contiene. Del mismo modo, movemos el valor en B para registrar R2. Ahora agregamos R1 y R2, y almacenamos el resultado en R3. Además, almacenamos el valor en R3 en la ubicación de memoria C como estaba previsto. No podemos almacenar directamente el valor de R1 + R2 en C ya que el procesador no puede acceder a C y solo puede acceder a los pocos registros que contiene. A medida que los programas de computadora se volvieron más complejos, incluso los lenguajes de nivel ensamblador se volvieron difíciles de usar. Los expertos desarrollaron lenguajes de nivel superior como C, C ++, JAVA, Python, etc. Es posible que haya oído hablar de estos lenguajes, y algunos de ustedes incluso tengan la oportunidad de aprender algunos. La mayoría de los ingenieros informáticos de hoy solo conocen lenguajes de nivel moderno y solo tienen la idea básica de los lenguajes de nivel ensamblador.

El código para agregar A y B, y almacenar el resultado en C es simple C = A + B; en los idiomas más comunes de alto nivel. Dado que estos son amigables para los programadores, los ingenieros de software podrían diseñar aplicaciones extremadamente complejas, como sistemas operativos, navegadores, editores de palabras, etc. Pero, ¿cómo se convierten estos lenguajes de alto nivel en los 1 y 0 que entiende una computadora? Esto se hace a través de compiladores e intérpretes, que realizan las siguientes tareas. Primero, el código en idiomas de alto nivel se convierte en código de lenguaje ensamblador. Este código de lenguaje ensamblador se traduce aún más en código de máquina, básicamente 1s y 0s. Si bien hay pérdida de eficiencia en tantos niveles de conversión, la programación en código máquina sería casi imposible.

Usando estos lenguajes de alto nivel, se desarrolló una amplia variedad de sistemas operativos. Algunos de los más conocidos incluyen Windows, Mac OS, Linux, Android, etc. Los sistemas operativos son la columna vertebral de cualquier computadora. Todo el software se ejecuta en el sistema operativo. El sistema operativo actúa como un puente entre el hardware y el software de la computadora. Dado que el sistema operativo maneja todo lo que hace el usuario y muchas tareas en segundo plano, en un punto dado se ejecutan miles de procesos en un sistema operativo. Dado que un sistema operativo, como un procesador, puede manejar solo un proceso a la vez, se deben tomar muchas decisiones para determinar qué proceso se ejecutará a continuación. Sin embargo, estos procesos funcionan tan rápido que el usuario generalmente no puede sentir ningún retraso de tiempo.

créditos: – Diccionario técnico en línea para profesionales de TI

Recuerde que establecimos que el procesador es el cerebro de la computadora. Pues no lo es. Es solo una herramienta utilizada por el sistema operativo para obtener resultados. El sistema operativo controla lo que se debe enviar al procesador, y recupera y almacena los datos manipulados. El procesador es simplemente un chip que realiza los cálculos que el sistema operativo le ordena. Los sistemas operativos modernos constan de más de mil millones de líneas de código cada uno. Otra cosa que ofrece el sistema operativo es la capacidad de conexión en red, que es compatible con Internet, Bluetooth y el NFC menos escuchado. Dado que la creación de redes es un concepto completamente diferente en sí mismo, este artículo no debe informar sobre sus principios y funcionamiento. Los lectores interesados ​​siempre pueden buscar en línea, ya que las redes son posiblemente la parte más interesante de las computadoras.

Otra responsabilidad del sistema operativo es la seguridad. Emplea una gran cantidad de herramientas como firewalls, software antivirus y listas de control de acceso para protegerse a sí mismo y a toda la computadora. Imagine que envío un programa a través de Internet a su computadora que copia todas las teclas que presiona y me envía los datos cada pocas horas. Pronto sabré todas sus contraseñas, conversaciones y datos personales. Tal software se llama keylogger. Aunque técnicamente no es un virus, clasificamos ampliamente todo el software malicioso como virus. El sistema operativo ayuda a fortalecer la computadora para garantizar que no se permita la ejecución de virus. También mantiene todas las contraseñas, para garantizar que ningún usuario extranjero pueda acceder a sus archivos.

créditos: – Página en blogspot.com

Por fin llegamos al principio. ¿Cómo se inicia una computadora? Tan pronto como presiona el botón de encendido, se envía al procesador un código en la ROM (memoria de solo lectura) de la computadora y se ejecuta. ¿Por qué la memoria es de solo lectura? Porque si algún virus logra ingresar a su computadora, podría corromper estos datos y, en consecuencia, su computadora nunca se iniciará. El código ROM carga el sistema operativo. El tiempo que tarda su computadora en iniciarse es de solo unos segundos, pero se realizan más de un millón de procesos en esos segundos para cargar con éxito el sistema operativo y garantizar que comience con cualquier falla. El sistema operativo en sí se almacena en el disco duro y debe copiarse en la RAM para ejecutarse. Si alguna vez se preguntó por qué una computadora de 256 GB ofrece solo 230 GB de almacenamiento, el resto de 26 GB se está utilizando para almacenar el sistema operativo. Una vez que el sistema operativo se copia en la RAM, se puede comenzar a usar la computadora.

Espero que este artículo responda a la mayoría de tus dudas sobre las computadoras. Si tiene más dudas, deje un comentario a continuación y estaremos encantados de responder su consulta. Un día podríamos incluso hacer una computadora que pueda pensar por sí misma. Se están realizando muchas investigaciones para desarrollar inteligencia artificial. Otro campo prometedor en las computadoras es la computación paralela, en la cual varios procesadores trabajan juntos para calcular la salida más rápido. Un procesador de doble núcleo es simplemente dos procesadores que trabajan en paralelo. La computación cuántica es otro campo de la computación que es nuevo y aún se requiere mucha investigación para implementarlo con éxito. Contrariamente a la opinión popular, la informática no está saturada de ingenieros. Las computadoras son el futuro de la humanidad, y la comunidad de programación necesita toda la ayuda que pueda obtener para continuar acelerando el desarrollo de la informática. Si esta publicación le interesa, una carrera en ciencias de la computación definitivamente podría ser su futuro.

Esta pregunta me recuerda a mi dibujo animado favorito de “Peanuts”. Peppermint Patty está sentada en la escuela con una prueba frente a ella. Solo tiene una pregunta, que dice “Explicar la Segunda Guerra Mundial”. Debajo dice: “Use el reverso de la página si es necesario”.

Esta es una pregunta bastante amplia, pero permítanme abordarla a un alto nivel con la antigua analogía de una caja negra. Hay una caja con cosas que entran y cosas que salen. No se puede ver el interior, pero las cosas que entran están cambiando de alguna manera para producir lo que sale. Un “programador” tiene el conocimiento y la habilidad para quitar la parte superior de la caja y cambiar lo que sucede dentro.

Más específicamente, una computadora toma una serie de entradas, aplica varias transformaciones y produce alguna salida, así de simple. Las entradas pueden ser cosas que está escribiendo en un teclado, algo que graba a través de un micrófono, una transmisión de video de su cámara, una transmisión de noticias de Internet, una ubicación desde un receptor GPS incorporado, y así sucesivamente. Las salidas pueden ser puntos dibujados en una pantalla o una impresora, un archivo almacenado en algún dispositivo magnético,

Un sistema operativo como Windows 7 o Mac OS o Linux, que es solo un programa informático, sabe cómo comunicarse con los distintos hardware de la computadora, como discos duros, monitores, altavoces, sensores de temperatura, etc. Un programa de aplicación, como su El navegador de Internet, por ejemplo, utiliza el sistema operativo como un “traductor” para su hardware en particular. Es por eso que HP puede colocar un tipo de disco duro en una computadora portátil y Lenovo puede colocar uno diferente: el sistema operativo conoce la diferencia para que el programa de aplicación no tenga que hacerlo, y se ejecutará en cualquier computadora compatible con ese sistema operativo (generalmente !).

(Lo sé, algunos de ustedes están pensando en los controladores, pero no vayamos allí, los resumiremos en el sistema operativo).

Vamos a abrir la tapa del cuadro negro para ver un ejemplo de navegación a Google:

  • Mueves el mouse (las señales eléctricas para el movimiento vertical y horizontal del mouse se comunican al sistema operativo, que las usa para volver a dibujar el cursor en la pantalla para que se “mueva” en relación con tu mano).
  • Hace clic en la barra de direcciones de su navegador (el sistema operativo le dice al programa de aplicación dónde estaba ubicado el cursor en la pantalla cuando recibió la señal eléctrica del mouse que significaba que había presionado el botón. El programa de aplicación sabe que hay un texto campo allí que se puede escribir y cambia el cursor a la barra vertical parpadeante).
  • Escribe http://www.google.com (las señales eléctricas del teclado, que en realidad son solo una gran cantidad de interruptores, son interpretadas por el sistema operativo que sabe qué teclado estás usando, QWERTY, Dvorak, cirílico, etc. A medida que recibe estas señales, dibuja la letra apropiada en la pantalla en la ubicación apropiada. La tecla “Enter” es solo otro interruptor, pero generalmente el sistema operativo le dice al programa de aplicación que el usuario ha terminado de escribir y que debe hacer algo con la información ingresó).
  • El programa de aplicación del navegador analiza lo que ingresó (www.google.com) y realiza una acción particular. En el caso de un navegador, envía una solicitud a las partes de la red del sistema operativo para retransmitir esa dirección, interpretarla y enviar una solicitud a los servidores de Google.
  • El navegador espera. En realidad, las computadoras pasan mucho tiempo esperando, principalmente porque los humanos son muy lentos. Entonces, en segundo plano, su computadora hace muchas otras cosas mientras está inactiva, como actualizar un índice en su disco duro, buscar nuevas versiones del programa, asegurarse de que la temperatura de la CPU no sea demasiado alta, leer su correo electrónico (solo bromeando sobre el último).
  • Finalmente, los bits de red del sistema operativo reciben un flujo de información de Google a través del hardware de su red. Esto se envía al programa del navegador, que decide qué hacer con él en función de su programación y, en algunos casos, de las preferencias que haya establecido. En este ejemplo, el ícono de Google se dibuja en su pantalla en la ubicación adecuada, se dibuja el cuadro de búsqueda, aparece texto en el tamaño y estilo de fuente que ha elegido, y nuevamente el sistema espera a que haga otra cosa.
  • Y eso es de una manera muy abstracta. Entradas (mecanografía, movimiento del mouse, transmisión de datos a través de una red), Interpretación (qué quiere hacer el programa de aplicación con las entradas), Salida (cosas dibujadas en la pantalla). Sin embargo, al igual que Peppermint Patty, ¡necesitaríamos usar ambos lados de una página muy grande para realmente profundizar en esta pregunta!

De la electricidad a la lógica.

La mayoría de los sistemas informáticos se basan en una representación binaria de números; unos y ceros que representan información.

Es bastante simple hacer aritmética binaria en papel, pero en una computadora digital necesitamos señales y componentes eléctricos. Entonces, codificamos binario como una señal de bajo voltaje y una señal de alto voltaje.

Luego, podemos combinar diferentes componentes eléctricos discretos para manipular estas señales eléctricas. Cuando combinamos múltiples componentes discretos, podemos hacer que hagan algo útil, desde una simple CPU a medio agregar hasta una CPU completa.

Sección TLDR

Cambiamos el voltaje para ir entre 1 y 0.

Fetch-decode-execute

Las computadoras operan en una búsqueda, deciden, ejecutan ciclos.

Las computadoras obtienen la siguiente instrucción de la memoria buscando la dirección de memoria almacenada en el contador del programa.

La instrucción se decodifica para decidir qué acción tomar. Por ejemplo, podría ser mover un valor de un registro a la memoria, o dos realizar la multiplicación de dos valores en un registro.

Luego la etapa de ejecución. La CPU realiza la acción y luego incrementa el contador del programa para que apunte a la siguiente dirección en la memoria.

¡Enjuague y repita!

Una abstracción

Todo lo mencionado anteriormente funciona en binario, ya que es un modelo puramente electrónico.

La programación en binario, por supuesto, sería tediosa, especialmente pensando que Google ahora tiene 2 mil millones de líneas de código. ¡Imagínese escribir eso en binario!

Entonces desarrollamos una abstracción, algo que podría entenderse más fácilmente y ser más fácil de escribir, conocido como ensamblaje. El ensamblaje es principalmente mnemotécnico, por lo que tiene una representación casi 1–1 en código máquina. Es lo más cerca que estará de escribir en el hardware hoy.

Más abstracciones

Con el desarrollo de lenguajes de programación de bajo nivel pudimos crear programas más complejos. Finalmente, la complejidad y el tamaño de estos programas crecieron demasiado para continuar desarrollando software a este nivel.

Así que creamos abstracciones de nivel superior, creando lenguajes de programación de nivel superior como C que compila a las cosas de nivel inferior.

Eventualmente, continuamos construyendo más abstracciones sobre las abstracciones inferiores hasta que no necesitábamos tener un vistazo sobre cómo funcionaba.

Nota final …

Esperemos que pueda ver cómo las señales eléctricas están tan lejos de nosotros, los usuarios, y cómo se logra. La transformación de las señales eléctricas en lógica ejecutable es de un nivel tan bajo que es casi irrelevante para la mayoría de nosotros, incluidos los profesionales de TI.

Pero si realmente quiere aprender cómo funciona todo, obtenga un libro, una placa de pruebas y algunos chips IC y haga los suyos y construya, ¡poco a poco!

Encontré una publicación relacionada de google +. Aquí está el enlace original: Jean-Baptiste Queru

Mareante pero profundidad invisible

Acabas de ir a la página de inicio de Google.

Simple, ¿no es así?

¿Qué acaba de pasar?

Bueno, cuando sabes un poco sobre cómo funcionan los navegadores, no es tan simple. Acaba de poner en juego HTTP, HTML, CSS, ECMAscript y más. Esas son en realidad tecnologías tan increíblemente complejas que harán que cualquier ingeniero se maree si piensa demasiado en ellas, y de tal manera que ninguna compañía pueda lidiar con toda esa complejidad.

Simplificamos

Acabas de conectar tu computadora a http://www.google.com .

Simple, ¿no es así?

¿Qué acaba de pasar?

Bueno, cuando sabes un poco sobre cómo funcionan las redes, no es tan simple. Acaba de poner en juego DNS, TCP, UDP, IP, Wifi, Ethernet, DOCSIS, OC, SONET y más. Esas son en realidad tecnologías tan increíblemente complejas que harán que cualquier ingeniero se maree si piensa demasiado en ellas, y de tal manera que ninguna compañía pueda lidiar con toda esa complejidad.

Simplificamos

Acaba de escribir http://www.google.com en la barra de ubicación de su navegador.

Simple, ¿no es así?

¿Qué acaba de pasar?

Bueno, cuando sabes un poco sobre cómo funcionan los sistemas operativos, no es tan simple. Acaba de poner en juego un kernel, una pila de host USB, un despachador de entrada, un controlador de eventos, un controlador de fuente, un rasterizador de subpíxeles, un sistema de ventanas, un controlador de gráficos y más, todos aquellos escritos en alto – lenguajes de nivel que procesan compiladores, enlazadores, optimizadores, intérpretes y más. Esas son en realidad tecnologías tan increíblemente complejas que harán que cualquier ingeniero se maree si piensa demasiado en ellas, y de tal manera que ninguna compañía pueda lidiar con toda esa complejidad.

Simplificamos

Acabas de presionar una tecla en tu teclado.

Simple, ¿no es así?

¿Qué acaba de pasar?

Bueno, cuando sabes un poco sobre cómo funcionan los periféricos de entrada, no es tan simple. Acaba de poner en juego un regulador de potencia, un antirrebote, un multiplexor de entrada, una pila de dispositivos USB, una pila de concentrador USB, todo eso implementado en un solo chip. Ese chip se construye alrededor de obleas en rodajas finas de lingotes de silicio monocristalino altamente purificadas, dopadas con pequeñas cantidades de otros átomos que se lanzan a la estructura cristalina, interconectadas con múltiples capas de aluminio o cobre, que se depositan de acuerdo con patrones de alta calidad. Luz ultravioleta de energía que se enfoca con una precisión de una fracción de micra, conectada al mundo exterior a través de delgados hilos de oro, todo dentro de un embalaje hecho de una resina dimensional y térmicamente estable. Los patrones de dopaje y las interconexiones implementan transistores, que se agrupan para crear puertas lógicas. En algunas partes del chip, las puertas lógicas se combinan para crear funciones aritméticas y bit a bit, que se combinan para crear una ALU. En otra parte del chip, las puertas lógicas se combinan en bucles biestables, que se alinean en filas, que se combinan con selectores para crear un banco de registro. En otra parte del chip, las puertas lógicas se combinan en controladores de bus y decodificadores de instrucciones y microcódigo para crear un programador de ejecución. En otra parte del chip, se combinan en multiplexores de dirección y datos y circuitos de temporización para crear un controlador de memoria. Hay aún más. Esas son en realidad tecnologías tan increíblemente complejas que harán que cualquier ingeniero se maree si piensa demasiado en ellas, y de tal manera que ninguna compañía pueda lidiar con toda esa complejidad.

¿Podemos simplificar más?

De hecho, muy aterrador, no, no podemos. Apenas podemos comprender la complejidad de un solo chip en un teclado de computadora y, sin embargo, no hay un nivel más simple. El siguiente paso nos lleva al software que se utiliza para diseñar la lógica del chip, y ese software en sí tiene un nivel de complejidad que requiere volver al principio del ciclo.

Las computadoras de hoy son tan complejas que solo pueden diseñarse y fabricarse con computadoras un poco menos complejas. A su vez, las computadoras utilizadas para el diseño y la fabricación son tan complejas que solo pueden diseñarse y fabricarse con computadoras un poco menos complejas. Tendría que pasar por muchos de estos bucles para volver a un nivel que posiblemente podría reconstruirse desde cero.

Una vez que comienza a comprender cómo funcionan nuestros dispositivos modernos y cómo se crean, es imposible no sentirse mareado por la profundidad de todo lo que está involucrado, y no estar asombrado por el hecho de que funcionan en absoluto, cuando la ley de Murphy dice que simplemente no deberían funcionar.

Para los no tecnólogos, todo esto es una caja negra. Ese es un gran éxito de la tecnología: todas esas capas de complejidad están completamente ocultas y las personas pueden usarlas sin siquiera saber que existen. Esa es la razón por la cual muchas personas pueden encontrar las computadoras tan frustrantes de usar: hay tantas cosas que posiblemente pueden salir mal que algunas de ellas inevitablemente ocurrirán, pero la complejidad es tan profunda que es imposible que la mayoría de los usuarios puedan hacer algo sobre cualquier error

Por eso también es tan difícil para los tecnólogos y los no tecnólogos comunicarse juntos: los tecnólogos saben demasiado sobre demasiadas capas y los no tecnólogos saben muy poco sobre muy pocas capas para poder establecer una comunicación directa efectiva. La brecha es tan grande que ya ni siquiera es posible que una sola persona sea un intermediario entre esos dos grupos, y es por eso que, por ejemplo, terminamos con esos centros de llamadas de soporte técnico enrevesados ​​y sus múltiples niveles. Sin estas estructuras de soporte tan profundas, terminas con la situación frustrante que vemos cuando los usuarios finales tienen acceso a una base de datos de errores que utilizan directamente los ingenieros: ni los usuarios finales ni los ingenieros obtienen la información que necesitan para lograr sus objetivos.

Es por eso que la prensa convencional y la población en general han hablado tanto sobre la muerte de Steve Jobs y comparativamente tan poco sobre la de Dennis Ritchie: la influencia de Steve estaba en un nivel que la mayoría de la gente podía ver, mientras que la de Dennis era mucho más profunda. Por un lado, puedo imaginar dónde estaría el mundo de la informática sin el trabajo que hizo Jobs y las personas que él inspiró: probablemente un poco menos brillante, un poco más beige, un poco más cuadrado. Sin embargo, en el fondo, nuestros dispositivos seguirían funcionando de la misma manera y harían lo mismo. Por otro lado, literalmente no puedo imaginar dónde estaría el mundo de la informática sin el trabajo que hizo Ritchie y las personas que inspiró. A mediados de los años 80, la influencia de Ritchie se había apoderado, e incluso en aquel entonces quedaba muy poco del mundo anterior a Ritchie.

Finalmente, por último pero no menos importante, es por eso que nuestro sistema de patentes está roto: la tecnología ha hecho un trabajo tan sorprendente al ocultar su complejidad que las personas que regulan y administran el sistema de patentes apenas son conscientes de la complejidad de lo que están regulando y corriendo. Ese es el mejor cambio de bicicletas: al igual que las discusiones proverbiales en el ayuntamiento sobre una planta de energía nuclear terminan siendo sobre el color de la pintura para el cobertizo de bicicletas de la planta, las discusiones sobre patentes sobre los sistemas informáticos modernos terminan sobre el tamaño de la pantalla y el orden de los iconos, porque en ambos casos, ese es el único aspecto que las personas involucradas en la discusión son capaces de discutir, a pesar de que son irrelevantes para la función real del sistema general que se está discutiendo.

Al encontrarme con estas preguntas, me recuerda HowStuffWorks “¡Aprenda cómo funciona todo!” más a menudo..

Aquí hay un artículo increíble, HowStuffWorks “Cómo funcionan las PC”. Uno nunca puede cubrir los detalles completos que se incluyen en preguntas como estas preguntas … Pero este artículo es un buen comienzo … También puede encontrar algunos buenos videos de YouTube …

En el nivel más básico, todo se debe al silicio. El silicio es un elemento con 14 electrones.

Debido a cómo los electrones se organizan alrededor del núcleo, el silicio tiene 4 electrones de valencia en la capa más externa (llamados electrones de valencia). Todos los elementos que tienen 4 electrones de valencia son especiales. Son excelentes semiconductores . Los átomos de silicio se unen estrechamente con otros átomos de silicio, y no tienen electrones libres. Entonces, si les aplicas una corriente eléctrica, la corriente no fluirá. No hay electrones para empujar. Sin embargo, puede agregar impurezas al silicio para convertirlo en un conductor. Agrega elementos con electrones libres, y la corriente puede fluir a través de él. Al agregar más impurezas, puede hacer que el silicio sea más conductor. Esencialmente, puede usar silicio para fabricar materiales de cualquier resistencia eléctrica que desee. Simplemente comienza con silicio puro y luego agrega tantas impurezas como desees.

Pero eso no es todo. Puede hacer algo llamado Transistor de efecto de campo (FET), y aquí es donde comienza a suceder la magia de la informática.

Una resistencia es un dispositivo que proporciona resistencia eléctrica. Impide el paso de la corriente. A mayor resistencia, menor corriente para la misma cantidad de voltaje.

Un transistor es un tipo especial de resistencia. Puede controlar la resistencia del transistor eléctricamente. En el diagrama anterior, puede ver que se aplica un voltaje Vcc al transistor. El transistor también tiene otro voltaje aplicado llamado Vin. Al cambiar Vin, puede cambiar la cantidad de corriente que pasará por el transistor. El silicio se puede usar para crear un transistor de efecto de campo. El silicio cerca del lado positivo y negativo se trata para que su resistencia pueda cambiar cuando se le aplica un campo eléctrico. El Silicio cerca de Vin es tratado para crear el campo eléctrico. Me estoy saltando muchas explicaciones en interés del espacio. Te animamos a leerlo. Es algo realmente interesante.

El punto principal que debe comprender en el futuro es que los transistores son resistencias que se pueden controlar. Y el silicio hace buenos transistores

Entonces, ahora, qué puedes hacer con un transistor. Una cosa que puedes hacer es hacer un amplificador. Un pequeño voltaje en Vin puede controlar una corriente más grande que fluye a través de Vcc. Usan esto para hacer cajas de auge. Sin embargo, para nosotros, lo más importante que puede hacer un transistor es que puede actuar como un interruptor .

Aplica voltaje a Vin, y la resistencia irá a 0. No aplica voltaje a Vin, la resistencia irá al infinito. Es un interruptor, al igual que el interruptor que controla sus luces, excepto que en lugar de controlarlo mecánicamente, lo está controlando eléctricamente

¿Te estas riendo? Quizás se pregunte de qué sirve un interruptor controlado eléctricamente. Después de todo, realmente no necesita interruptores para que puedan controlarse mecánicamente. Sí, en última instancia, todo tiene que ser controlado por algo mecánico. Lo que sucede es la magia cuando se encadenan interruptores controlados eléctricamente.

Al juntar interruptores controlados eléctricamente, puede hacer estas cosas llamadas puertas lógicas

Por ejemplo, esta es una puerta OR

Aquí el puerto etiquetado como Salida estará a 6V, cuando cualquiera de A o B tenga algo de voltaje. Vea, si A tiene algo de voltaje, la resistencia del transistor superior es 0. Esto significa que Out está directamente conectado a 6V. Lo mismo si B tiene algo de voltaje, y si ambos tienen algo de voltaje. Cuando ninguno de ellos tiene voltaje, entonces ambos interruptores están abiertos y Out no tiene voltaje. Entonces, no, tenemos un circuito que proporciona voltaje cuando A o B tienen voltaje.

Del mismo modo, este es un circuito AND

Out tiene voltaje cuando A y B tienen voltaje

Entonces, ahora nos estamos moviendo hacia un circuito eléctrico capaz de tomar decisiones. Al cambiar estas puertas juntas, puede hacer un circuito eléctrico que tenga voltaje positivo cuando se cumplan ciertas condiciones, y voltaje 0 cuando no se cumplan ciertas condiciones.

Estos circuitos se pueden juntar para hacer circuitos computacionales. Puedes armar una compuerta ANd y una XOR para hacer algo llamado sumador completo (que suena como una serpiente venenosa adulta)

En este circuito (tenga en cuenta que de ahora en adelante, 1 significa voltaje positivo y 0 significa voltaje 0, así que si digo A = 0., Significa que el voltaje 0 se aplica a A o está disponible en A, y cuando I)

A = 0, B = 0, Cin = 0, luego S = 0, Cout = 0
A = 1, B = 0, Cin = 0, luego S = 1, Cout = 0
A = 0, B = 1, Cin = 0 y luego S = 1, Cout = 0
A = 1, B = 1, Cin = 0, luego S = 0, Cout = 1
A = 0, B = 0, Cin = 1, luego S = 1, Cout = 0
A = 1, B = 0, Cin = 1, luego S = 0, Cout = 1
A = 0, B = 1, Cin = 1 y luego S = 0, Cout = 1
A = 1, B = 1, Cin = 1, luego S = 1, Cout = 1

Esencialmente, lo que está haciendo es sumar números binarios. Puede considerar que A y B son bits, que es una forma elegante de decir un dígito de un número binario. . Si pone 8 de estos circuitos juntos, puede agregar un número compuesto por 8 bits (que se denomina byte).

Sé que me estoy apurando por esto. Busque números binarios si quiere entender esto más. Cosas interesantes. La parte importante a recordar es que puede usar puertas lógicas para hacer diferentes tipos de circuitos. Puedes hacer un circuito que pueda sumar 2 números binarios. Otro circuito que puede restar 2 números binarios. Otro circuito que puede incrementar un número binario. otro que puede disminuirlo, otro que puede realizar una operación AND en 2 números binarios, y otro que puede hacer OR, y así sucesivamente. Hay muchos más circuitos que se pueden construir, pero centrémonos en lo que hicieron las primeras computadoras por ahora antes de complicar las cosas


En este punto, cambiemos de marcha y hablemos sobre el almacenamiento . Hablamos de transitores, donde la resistencia del transistor depende del voltaje aplicado a través de la entrada de control. Con los transistores, cambiar el voltaje en el control cambia inmediatamente el comportamiento del transistor. El transistor no tiene memoria de cuál era el voltaje anterior. Está viviendo en el momento. Eso es genial cuando quieres calcular cosas … porque no quieres que el circuito sumador completo recuerde qué adición hizo hace unos minutos. Desea que solo agregue lo que le dice que agregue en este momento. Sin embargo, necesitas recordar cosas, ¿verdad?

El almacenamiento temprano se realizó en dispositivos magnéticos. Una cinta magnética tiene un revestimiento que contiene la carga que se le aplicó. Así funciona su grabadora. Una grabadora de voz convierte el sonido en energía eléctrica y luego la utiliza para aplicar una carga a la cinta. La cinta retiene la carga. Cuando reproduce, hace lo contrario y convierte la carga en energía eléctrica para que suene, y puede escuchar la música nuevamente. Las computadoras hacen algo similar. almacenaría datos en cintas magnéticas con solo tomar un byte (que es solo una serie de bits) y grabaría un bit a la vez en cinta. Más tarde, puede leer el byte de nuevo. Su disco duro funciona con el mismo principio, excepto que en lugar de una cinta, es un disco

Las cintas y los discos son excelentes para almacenar grandes cantidades de información. Son muy baratos El problema es que no son rápidos. Para leer datos de la cinta / disco, debe mover físicamente la cinta / disco a la parte inferior del lector. Para que una computadora funcione rápidamente, necesita almacenar información a la que se pueda acceder con bastante rapidez. Ingrese el transistor. Básicamente, al tratar el silicio de cierta manera, puede hacer un transitor que recuerde qué carga se le dio. La ventaja del transistor sobre el disco / cinta es que puede crear un banco de chips de memoria basados ​​en transistores. Como los transistores están controlados eléctricamente, puede leer cualquier chip de memoria en su banco activando y desactivando los interruptores eléctricos correctos. Esto es mas rapido. Este banco de chips de memoria se llamaba RAM.

Hoy en día ha habido muchas mejoras en los chips de memoria con los que no me he quedado. Sin embargo, la parte importante a recordar es que los transistores se pueden usar para crear un banco de chips que pueden almacenar información. Este banco se llama RAM.


Entonces, ahora veamos cómo se hace una computadora.

El diagrama anterior se llama arquitectura de Von Nuemann . La mayoría de las computadoras están construidas en una arquitectura Von Nuemman. En el centro de esta arquitectura se encuentra la Unidad Central de Procesamiento (CPU), también conocido como microprocesador. Profundicemos en el microprocesador.

Una nota rápida antes de ir más lejos. Mucha gente llama a esto CPU

¡Eso no es una CPU! Esa es la torre que contiene la CPU más muchas cosas que son controladas por la CPU. En general, muchos de los componentes de la arquitectura de Von Nuemman van dentro de esa carcasa.

Esta es la CPU

Si abres la torre, encontrarás algo como esto.

Recuerde cuando dije que puede crear un circuito eléctrico para diferentes tipos de operaciones. En el corazón del microprocesador se encuentra la ALU (unidad lógica aritmética). Básicamente, ALU es la colección de todos los circuitos posibles que puedes hacer. El ALU es controlable. Puede activar diferentes circuitos aplicando diferentes voltajes. Además, tiene algo llamado Registros (que no debe confundirse con la resistencia). Los registros son chips de memoria especiales que se encuentran dentro del microprocesador. La ALU puede operar con los datos almacenados en los registros y devolver el resultado a los registros.

La CPU generalmente es parte de una unidad más grande. Básicamente, está conectado a una RAM (que, como hemos hablado, es un banco de chips de memoria), dispositivos de entrada y dispositivos de salida. La CPU tiene pines, algunos de estos pines son pines de control y otros son pines de datos. Los pines de control controlarán lo que hará la CPU. Al aplicar diferentes configuraciones de voltajes a las tuberías, puede hacer que la CPU haga algo. Por ejemplo, al aplicar una configuración particular, puede leer datos de la RAM en el registro. Al aplicar otra configuración, haces que agregue 2 registros. Cada una de estas configuraciones de control se denomina comando . Encadena estos comandos juntos y obtiene un programa

En general, para que sea más fácil, los programadores de microprocesadores escriben sus programas de una manera especial que sea legible. Por ejemplo, el siguiente es un programa hellow world escrito para el procesador 8080

Escupe “Me gusta mi computadora” a los pines de salida. Tenga en cuenta que los comandos reales son números binarios. Puede ver esos números binarios en la segunda columna de la lista anterior. Estos se llaman opcodes. Sin embargo, lo que los programadores leen son los códigos escritos junto a los códigos de operación. Estas son anotaciones abreviadas que los programadores inventaron para su uso. Es difícil recordar códigos de operación. Entonces, en lugar de escribir 303 (que es el código de operación para el comando Jump), escribe JMP. Las computadoras no se preocupan por esas anotaciones

La mayoría de los CPUS comenzarán a leer comandos desde una ubicación particular en la unidad de memoria y comenzarán a ejecutarlos. Entonces, si toma el programa anterior y carga los códigos de operación en el lugar donde la CPU los está buscando, la CPU los ejecutará uno por uno e imprimirá “me gusta mi computadora”. Genial .. eh? Ahora tiene una computadora que puede hacer algo … pero es difícil de usar porque tiene que cargar mágicamente un programa en una ubicación de memoria particular

En computadoras personales, la ubicación de la memoria apunta a Boot Rom. La ROM de arranque contiene la rutina de arranque. Básicamente, lo que contiene la rom de arranque es un programa especial que le dice a la CPU que cargue otro programa del disco duro en la RAM y luego ejecute ese programa. No le importa cuál es el programa. Simplemente le dice a la CPU que lo cargue, lo ejecute. El programa cargado desde el disco se llama Sistema Operativo .

Los primeros sistemas operativos eran simples. Simplemente contendrían un programa que mostraría un mensaje en la pantalla y leería la entrada del teclado. El usuario podría escribir un comando a través del teclado, y el sistema operativo lo repetirá en la pantalla. Cuando presiona enter, ejecutará el comando. El disco duro podría contener otros programas, y el sistema operativo tendría un comando que le indicaría a la CPU que ejecute el programa para el disco duro. Podría dar este comando para ejecutar otros programas.

Finalmente, el sistema operativo se convirtió en gráfico. Esto significa que la misma información se presenta en formato gráfico, y también acepta la entrada del mouse para controlar un puntero en la pantalla


Solo para reiterar que he pasado por alto mucha información. Esta pregunta es muy amplia y puede convertirse fácilmente en un libro completo. No dude en hacerme más preguntas en los comentarios a continuación, e intentaré mejorar la respuesta.

Literalmente, la electricidad nunca se convierte en lógica. Pero podemos diseñar hardware físico que pueda producir un patrón de señales eléctricas. Este hardware puede incluir puertas lógicas> Flip Flops> Memoria de acceso aleatorio. El patrón de las señales eléctricas se denominan códigos operativos de lenguaje máquina. Lo que significa que, a diferencia de los programas definidos por el usuario (como C, C ++), estos códigos de operación vienen con diseño de hardware y no puede cambiarlo.

Habría llegado una situación en la que no puede recordar todos los códigos operativos (000 1111010 1010 …), es decir, cuando desarrollaron lenguaje ensamblador donde cada declaración en lenguaje ensamblador coincidiría con los códigos de operación. Luego desarrollaron los programas de nivel superior (la misma razón por la que desarrollaron lenguaje ensamblador) como C, C ++.

El teclado está conectado tanto al módulo de pantalla como a la RAM. Cuando escribe un programa, la pantalla muestra las letras para que pueda leerlo. Al mismo tiempo, el programa se mapea en un conjunto de señales binarias (como si deberían coincidir con Opcodes). Por ejemplo, simplemente ESCRIBA un programa hello world C y compílelo. Obtienes un archivo .obj. Incluso cuando lo abra usando editores, el módulo de pantalla hará coincidir la información binaria con los códigos ASCII y mostrará algo como,

008D 9698 977F 88F5

008D 9698 977F 88F5

008D E698 97EF 88G5

008D D698 977F 88F5

Y gracias a Shubhojit Chattopadhyay por la respuesta. Eso es realmente útil.

Las computadoras solo pueden hacer algunas operaciones muy simples que consisten en encender y apagar interruptores eléctricos. Puede representar números en patrones de los estados de activación / desactivación de secuencias de interruptores. Al activar y desactivar interruptores en patrones particulares, puede realizar operaciones matemáticas simples en los números. Puede realizar operaciones matemáticas más complejas al unir operaciones más simples.

A continuación se muestra un diagrama que muestra una computadora que puede agregar uno más uno para obtener dos. Está hecho de una puerta XOR ( http://en.wikipedia.org/wiki/XOR …) y una puerta AND ( http://en.wikipedia.org/wiki/AND …), cada una de las cuales es relativamente simple conjunto de transistores conectados juntos de formas particulares. Los transistores son interruptores de encendido y apagado que se pueden activar eléctricamente, por lo que no tienen partes móviles (excepto electrones). La mejor parte es que el cable de salida de un transistor se puede usar para encender y apagar otro transistor.

Los “números” en el diagrama son voltajes: “cero” es cero voltios, y “uno” es (creo) 2.5 voltios. Los números en una computadora están codificados en binario (base dos) porque es la forma más conveniente de realizarlos físicamente: el voltaje que está bastante cerca de cero puede leerse como cero, y un voltaje que está bastante cerca de 2.5 puede leerse como uno.
Este sumador simple tiene dos cables de entrada y dos cables de salida. Los cables de entrada representan cada uno un solo dígito binario, y los cables de salida juntos representan dos dígitos binarios. Si un cable de entrada tiene voltaje y el otro no, lo que equivale a sumar uno más cero, el sumador no devuelve voltaje en el dígito “dos” y un voltaje en el dígito “unos”. Si hay un voltaje en ambos cables de entrada, el equivalente a sumar uno más uno, el sumador devuelve un voltaje en el dígito “dos” y no hay voltaje en el dígito “unos”, el número binario 10, o como lo conocemos en decimal notación, 2.

Aquí hay un diagrama de un sumador de cuatro bits, capaz de sumar números tan grandes como dieciséis. El diagrama muestra cómo sumar siete (0111) más doce (1100) para obtener diecinueve (10011) funcionaría.
Conecte suficientes sumadores y otros dispositivos lógicos básicos, configúrelos en los voltajes iniciales correctos y obtendrá una computadora.

Por cierto, aquí hay una publicación de blog que explica cómo funcionan los transistores: http://www.ethanhein.com/wp/2009

Microprocesador: metal.
Memoria: metal.
Alambres y circuitos: metal.
Trackpad: vidrio.
Teclado: Plástico.

¿Cómo se almacena un archivo de imagen / video típico en su computadora?
Digamos que en su casa, un ventilador puede estar encendido o apagado. ¿Hay un estado medio? ¡No! La corriente fluye y en cuyo caso el ventilador comienza a moverse. O la corriente no fluye, en cuyo caso el ventilador no se mueve.

Del mismo modo, en las computadoras todos los datos que tiene, como imágenes, videos, archivos de música, documentos, palabras, ppt, todo se almacena en forma de ON u OFF. En las computadoras, ON está representado por 1 y OFF está representado por 0.
Por lo tanto, si observa cualquier documento almacenado en la memoria de su computadora, se almacena en forma de muchos muchos muchos 1s y 0s.

Si dice que aumenta el brillo de su imagen, algunos de los 1s y 0s en su imagen cambian y ve el cambio en su pantalla. De lo que hablaré más adelante.
Este sistema de 1s y 0s se llama binario. Y 1 y 0 se llaman bits.

8 bits = 1 byte.
1024 bytes = 1kilo byte.
1024 kilobytes = 1 megabyte.
1024 mega bytes = 1 giga byte.
1024 giga bytes = 1 tera byte.

Una película típica que ves tiene alrededor de 1 gigabyte, lo que debería darte una idea de cuántos 1s y 0s se requieren para hacer esa película. (1024mb * 1024kb * 1024bytes * 8bits = 8589934592 bits).
Una imagen típica tiene alrededor de 1 megabyte, que equivale a alrededor de 8388608 bits. Por lo tanto, se necesitan 8388608 1s y 0s para formar una imagen.

Ahora que sabe cómo se almacenan los videos en la memoria de su computadora.

Vamos a entender cómo se muestra en la pantalla.
Cuando hace doble clic en su imagen, el software comprende lo que significa una colección de 0s y 1s (es decir, el color, la saturación, la temperatura).
El software ordena a la pantalla de la computadora que muestre una parte de la imagen que es el resultado de esa colección de 0s y 1s.

¿Cómo funciona la pantalla?
Nuestras Macbooks típicas tienen pantallas LCD. LCD significa pantalla de cristal líquido.
Por lo tanto, la pantalla está hecha de cristales líquidos como su nombre indica.
Los cristales están hechos para cambiar el color y la intensidad variando la cantidad de campo eléctrico a su alrededor. La ionización de cristales ayuda a cambiar el color, el brillo de los píxeles.

¿Cómo maneja la computadora la llamada multitarea?
Por lo general, puede ejecutar las siguientes aplicaciones en su Macbook al mismo tiempo:
Safari
iPhoto
Correo
Writer Pro.
Microsoft Word.
etc.

El procesador de la computadora nunca ejecuta estas aplicaciones simultáneamente al mismo tiempo. Cambia de una aplicación a otra. Ejecuta algo de Safari durante unos pocos milisegundos. Inmediatamente detiene el safari y cambia a iPhoto. Ejecuta algo de iPhoto durante unos milisegundos y lo detiene. De repente vuelve a cambiar a Correo. Y sigue revisando la lista una y otra vez. Pero hace todo esto tan rápido que da la impresión de que todas las aplicaciones se ejecutan al mismo tiempo.

Tu pregunta es muy interesante. Cuando comencé a estudiar Ciencias de la Computación, esta pregunta me fascinó mucho, pero ninguno de los ingenieros que conocía tenía la respuesta a mi pregunta. O tenía una respuesta que no podía entender.

Una computadora es un dispositivo electrónico programable capaz de recibir instrucciones en forma de entrada de datos y realizarlas. Es capaz de recuperar, almacenar y procesar datos. Está diseñado utilizando un hardware que solo responde a señales eléctricas que se traducen como 1s y 0s o verdadero y falso respectivamente en un nivel muy básico. Estas señales son las que componen el software de la computadora. Las secuencias predeterminadas de estas señales se convierten en un paquete de datos que permitiría que el hardware responda para producir un resultado específico a una entrada específica a la computadora. Por lo tanto, el software impulsa el hardware para trabajar hacia las funciones mencionadas anteriormente, que son el almacenamiento de recuperación y el procesamiento de datos. Estos paquetes específicos de señales se denominan conjuntos de instrucciones.

El hardware de la computadora es lo que es físicamente visible, mientras que el software es la entidad invisible de la computadora que hace que el hardware funcione de esa manera para que todo el sistema funcione como una computadora. El hardware de la computadora se divide en dispositivos de entrada y salida y el procesador. El procesador es la pieza de hardware que hace que la computadora funcione como debe hacerlo mientras que el resto sirve como interfaz entre el usuario y la computadora. Para que el software sea programable y sirva para múltiples propósitos, el hardware que se cableará será programable por software.

El hardware que aprovecha al máximo la computadora es el procesador o la unidad central de procesamiento de la computadora, que en breve se denomina CPU. El procesador central está compuesto por piezas de hardware aún más pequeñas que se denominan unidad de memoria, unidad aritmética y lógica y unidad de control.

La memoria en términos de computadora se puede clasificar como memoria interna, memoria externa y memoria caché. Cada uno tiene un propósito diferente. Como los nombres sugieren, la memoria interna es la memoria que está disponible para que la computadora la use libremente y estas están disponibles en la unidad central de procesamiento en forma de registros cuyos componentes básicos son flip-flops y la memoria externa es la memoria que lo hace es posible que el usuario transfiera datos entre dispositivos y está disponible para que el usuario lo use en forma de dispositivos de memoria externos como el CD, DVD y la unidad flash, etc. La memoria caché, por otro lado, aunque interna la unidad central de procesamiento está disponible solo para el procesamiento de instrucciones en lugar de almacenamiento, con el propósito de hacer un uso eficiente de la memoria.

La unidad aritmética y lógica es la parte de la unidad central de procesamiento que se encarga del cálculo y procesamiento de datos. Todos los cálculos matemáticos que hacemos usando la computadora son hechos por este componente de la CPU. No solo esto, sino que también es responsable de calcular las decisiones lógicas que toma la computadora en el procesamiento de datos y el desempeño de sus funciones.

La unidad de control es el componente principal responsable de toda la toma de decisiones. La computadora funciona como lo hace únicamente debido a las señales de control que esta unidad envía a cada una de las unidades de la computadora. Esta unidad coordina todas y cada una de las piezas del hardware para que funcionen como una sola unidad que es la computadora que utilizamos.

La unidad de procesamiento central de una computadora típica tiene aproximadamente cuatro funciones principales que son el movimiento de datos, el procesamiento de datos y el almacenamiento de datos y finalmente el control. Las unidades de CPU mencionadas anteriormente realizan una o más de estas funciones. La unidad de memoria es responsable del almacenamiento y el movimiento, la unidad aritmética y lógica es responsable del procesamiento de datos y la unidad de control es responsable de controlar todas estas funciones.

El funcionamiento de la computadora se puede discernir de la siguiente manera. Supongamos que el usuario da algunas instrucciones, supongamos que es un cálculo matemático simple. El usuario ingresa físicamente las instrucciones en la computadora mediante el uso de uno de los dispositivos de entrada, que generalmente es el teclado. La computadora proporciona la salida a través de uno de los dispositivos de salida, generalmente la pantalla del monitor. Entre la entrada de la instrucción y la visualización de salida del resultado por parte del monitor, hay una serie de cosas que se llevan a cabo en una secuencia específica en la unidad central de procesamiento. La computadora recibe la entrada a través de una aplicación que es un software que convierte estas instrucciones del usuario en un código comprensible para la máquina. Esto se hace cuando la unidad de control obtiene estas instrucciones y de la memoria a través del bus del sistema. Esta instrucción será decodificada por la unidad de control y se volverá a colocar en el bus del sistema para que se mueva a la memoria. Luego, la unidad de control emite instrucciones para que los datos decodificados se coloquen en la unidad atemática y lógica desde la memoria. Una vez que se realiza el procesamiento, los datos procesados ​​resultantes de la entrada se colocan nuevamente en el bus del sistema para que los datos se almacenen nuevamente en la memoria. La unidad de control finalmente dirige la memoria para liberar el resultado a un dispositivo de salida o un dispositivo de almacenamiento secundario.

La obtención y decodificación de la instrucción se denomina ciclo de instrucción y el procesamiento y almacenamiento de datos y luego la salida se denominan ciclo de ejecución. La combinación del tiempo de instrucción y el tiempo de ejecución se denomina ciclo de la máquina. Cada unidad central de procesamiento tiene un reloj interno que produce pulsos a una velocidad fija para sincronizar todas las operaciones de la computadora. Una sola instrucción de ciclo de máquina puede estar compuesta por un número sustancial de subinstrucciones, cada una de las cuales debe tomar al menos un ciclo de reloj. Cada tipo de unidad central de procesamiento está diseñado para comprender un grupo específico de instrucciones denominado conjunto de instrucciones. Al igual que hay muchos idiomas diferentes que las personas entienden, cada tipo diferente de CPU tiene un conjunto de instrucciones que comprende. Por lo tanto, una CPU, como la de una computadora personal de Compaq, no puede entender el conjunto de instrucciones de otra CPU, por ejemplo, para un Macintosh.

La ubicación en la memoria para cada instrucción y cada dato se identifica mediante una dirección. Es decir, cada ubicación tiene un número de dirección, como los buzones de correo frente a un edificio de apartamentos. Y, al igual que los buzones, los números de dirección de las ubicaciones siguen siendo los mismos, pero los contenidos (instrucciones y datos) de las ubicaciones pueden cambiar. Es decir, se pueden colocar nuevas instrucciones o nuevos datos en las ubicaciones cuando los contenidos antiguos ya no necesitan almacenarse en la memoria. Sin embargo, a diferencia de un buzón, una ubicación de memoria solo puede contener una cantidad fija de datos; una dirección puede contener solo un número fijo de bytes, a menudo dos bytes en una computadora moderna. Un programa manipula datos en la memoria. Un programa de nómina, por ejemplo, puede dar instrucciones para colocar la tasa de pago en la ubicación 3 y la cantidad de horas trabajadas en la ubicación 6. Para calcular el salario del empleado, las instrucciones le dicen a la computadora que multiplique los datos en la ubicación 3 por datos en la ubicación 6 y mueva el resultado a la ubicación 8. La elección de las ubicaciones es arbitraria: se puede utilizar cualquier ubicación que aún no se haya mencionado. Sin embargo, los programadores que usan lenguajes de programación no tienen que preocuparse por los números de dirección reales, porque cada dirección de datos se conoce por un nombre. El nombre se llama una dirección simbólica. En este ejemplo, los nombres de las direcciones simbólicas son Tarifa, Horas y Salario.

Todos los datos pasan a través de la computadora como nada más que pulsos de electricidad; la máquina reconoce dos estados: con cargo y sin cargo. A menudo representamos estos dos estados con dos dígitos, “1” y “0” respectivamente. (Esto en realidad revierte la representación histórica: los modelos lógicos de dispositivos informáticos utilizaron la lógica binaria anterior a la construcción real de máquinas electromecánicas o puramente eléctricas). Este es también el origen del término “bit” y, por extensión, “byte”. Un bit de información es un interruptor, uno 1 o 0, un “lugar”; ocho bits es un byte. Entonces, nuestros teclados y nuestras computadoras se comunican a través de la electricidad, y los matemáticos y lógicos han desarrollado métodos para traducir el lenguaje (símbolos) y muchos procesos de pensamiento en código binario.

El ejemplo más pertinente para nuestros propósitos es el Código Estándar Americano para el Intercambio de Información (ASCII). El conjunto de caracteres ASCII asigna los 256 caracteres más comunes a equivalentes binarios, una cadena única de ocho dígitos. Este es también el origen del byte como medida de la capacidad de almacenamiento, ya que un byte de información es suficiente para representar cualquier carácter en el conjunto ASCII. Por lo tanto, ASCII traduce el alfabeto occidental en código que puede transmitirse como pulsos de electricidad. Mientras escribe en su cliente de correo electrónico, los caracteres se almacenan como cadenas de bits, como secuencias de 1s y 0s. Volvamos a nuestro ejemplo, “¡Hola!”; en código binario: 101000 1101001 0100001. Los clientes y terminales de correo electrónico basados ​​en estándares entienden todos los caracteres como cadenas de bits, y son cadenas de bits que se transmiten desde el teclado a la computadora.

Cuando usamos la palabra “almacenamiento” generalmente nos referimos a discos duros, disquetes u otros medios relativamente permanentes pero lentos para almacenar datos. Existen cuatro tipos principales de almacenamiento interno en las computadoras modernas, enumerados en orden de velocidad y costo decrecientes: registros, caché, memoria de acceso aleatorio (RAM) y unidades de disco duro (HDD). Los registros y la memoria caché se encuentran en la CPU o en la placa base y vienen en cantidades relativamente pequeñas, digamos 512 MB (megabytes). En contraste, los discos duros a menudo tienen 80 GB (gigabytes) de almacenamiento por una fracción del costo de la memoria caché.

Una computadora es un procesador o CPU, y una memoria o RAM, que están conectadas por un montón de cables de cobre.

La CPU y la memoria están construidas a partir de millones de componentes eléctricos minúsculos llamados transistores, pero no voy a hablar sobre los transistores: explicaré qué hacen la CPU y la memoria , no cómo funcionan internamente: una computadora es en realidad una pila de lotes de tecnologías una encima de la otra, y los transistores son demasiado pequeños para esta respuesta. ¡Quiero decir que ni siquiera puedes verlos!

Así es como se ve un procesador desde ambos lados (los pequeños puntos en el lado inferior son pines del conector):


¡Se nota que los diseñadores realmente han pensado en cómo tener muchos conectores en un solo chip!

Así es como se ve la memoria:

(Tenga en cuenta que la memoria consiste en un montón de pequeños chips de silicio en lugar de uno grande por alguna razón. ¡Aparentemente es más fácil fabricarlo de esa manera!)

Y los cables de cobre que los conectan pueden verse así:


En esta última imagen, en la parte superior se ve de nuevo la CPU, pero está oculta por un gran disipador de calor porque estas cosas se calientan y se sobrecalentarían de lo contrario. De hecho, hoy en día suelen montar un gran ventilador ruidoso y feo en la parte superior del procesador. En la parte inferior, verá las ranuras donde se debe enchufar la memoria.

Los cables que conectan la memoria y el procesador son digitales: llevan corriente o no. Primero explicaré cómo las corrientes en los cables impulsan la memoria.

Memoria. Alrededor de la mitad de los cables que van a la memoria especifican una dirección . De hecho, este grupo de 32 o 64 cables se denomina bus de direcciones. El bus de direcciones se usa para especificar a cuál de los muchos, muchos valores almacenados por la memoria a la que queremos acceder. Entonces puedes imaginar la memoria como una secuencia de valores muy muy larga; Al encender la corriente en algunos de los cables del bus de direcciones, pero no en otros, uno de estos valores se identifica como el que nos interesa actualmente.

Nuevamente, aproximadamente la mitad de los cables que van a la memoria se usan para transmitir los valores reales hacia y desde la memoria. Estos cables se llaman bus de datos . Un último cable de control especifica si los valores deben leerse de la memoria o escribirse en él: si el cable de control dice “leer” (es decir, sin corriente), la memoria recupera el valor en la dirección suministrada por el bus de direcciones, y envía ese valor a través del bus de datos. Si el cable de control dice “escribir” (es decir, hay una corriente), la memoria acepta el valor en el bus de datos y lo almacena en la dirección correcta para poder recuperarlo más tarde.

Por lo tanto, la memoria es un dispositivo bastante pasivo: busca y almacena, como un elfo doméstico obediente.

UPC. La CPU inicia la mayoría de los procesos que ocurren en la computadora. Cuando se enciende la computadora, se carga una lista de valores predeterminados en la memoria (por un mecanismo que estoy pasando por alto), y luego la CPU comienza a leer y ejecutar ese “programa” paso a paso. Entonces, cuando la CPU gana el control, puede comenzar a hacer algo como esto:

  • Lea el valor en la dirección 0 de la memoria (por dirección 0 me refiero a que todos los cables de dirección no llevan corriente)
  • Dependiendo del valor, ejecute una de las pocas operaciones integradas
  • Lea el valor en la dirección 1 de la memoria
  • y así…

Las operaciones integradas incluyen instrucciones como “agregar el valor en esta dirección al valor en esa dirección” o “si este valor es mayor que ese valor, entonces proceda de la dirección tal y tal”. Las primeras computadoras se programaron averiguando exactamente qué valores pegar en la memoria para que la CPU se comportara como se desea; esto se llama programación en “lenguaje de máquina”.

Hoy en día, escribimos la mayoría de nuestros programas en un lenguaje de programación más conveniente, como C, que luego es traducido al código de máquina por un programa especial llamado compilador. Pero como omitimos los transistores al principio por ser demasiado pequeños, aquí terminaremos antes de que necesitemos entrar en compiladores y lenguajes de programación, que son un tema demasiado grande para encajar en esta respuesta 🙂

En realidad nunca lo hace.

La forma en que funciona es que PEOPLE (también conocido como “ingenieros”) asigna un valor lógico a un nivel de voltaje / corriente. Una vez hecho esto, las ecuaciones lógicas (como las define el software) pueden procesarse mediante otras ecuaciones lógicas (implementadas en hardware, utilizando los valores lógicos asignados por los diseñadores).

El hardware implementado por los diseñadores del hardware utiliza circuitos analógicos diseñados para emular las matemáticas del álgebra booleana.

Toma un teclado. Cada tecla en el teclado tiene cables para indicar si la tecla se presiona o no (el voltaje se le asigna un valor lógico de “1” o “0”. Los otros componentes electrónicos en el teclado toman una señal dada para iniciar una secuencia de señales que se definieron para corresponder a esa única señal, y luego transmite esa combinación de señales a la interfaz del teclado. Una secuencia similar ocurre para la pantalla. Una secuencia dada de señales se utiliza para identificar qué patrón de imagen se debe pasar a la pantalla .

Eres tú quien luego traduce ese patrón de imagen en algo que puedes entender. Es usted quien traduce su idea para seleccionar qué tecla presionar.

Para alguien que nunca ha experimentado escribir, todo es magia. Las teclas del teclado no tienen ningún sentido, ni las imágenes mostradas tienen ningún sentido.

La electricidad no se convierte en software. Lo que sucede es que la electricidad puede mover pequeñas piezas, ahora microscópicas, de material semiconductor mediante fuerzas eléctricas y magnéticas. Al igual que dos imanes se mueven entre sí en el aire, de una manera más complicada, la electricidad mueve pequeños interruptores en un transistor. Puedes pensar en un transistor como una tubería con una válvula. Aunque hay diferentes tipos de transistores que no funcionan “exactamente” como lo estoy describiendo, puede suponer que cuando la válvula se enciende y se apaga, la electricidad fluye a través de la tubería o no. Lo interesante es que, en lugar de que una persona mueva físicamente esta válvula, la válvula se enciende y apaga por la electricidad que fluye hacia ella o hacia afuera. Así que puedes imaginar este gran sistema de tuberías donde la electricidad fluye a algunas válvulas que encienden o apagan esas válvulas. Luego, la electricidad fluye a través de las tuberías controladas por esas mismas válvulas. La electricidad de esas tuberías se aventurará a otros transistores para encender o apagar sus válvulas, afectando a otras tuberías y al flujo de más electricidad. Esta es una generalización de cómo operan los transistores.

Cuando se activa un transistor (nuevamente, en términos generales), se considera un ‘1’ en binario y cuando el transistor se desactiva se considera un ‘0’. En otras palabras, la electricidad que se mueve a través de una tubería es igual a ‘1’ y ninguna electricidad que fluye a través de una tubería es igual a ‘0’.

Lo que hace una computadora es tomar los estados de conjuntos de transistores y operar en ellos a través de otros transistores. Entonces, si tiene una serie de transistores que están activados / desactivados / desactivados / activados / activados / activados / desactivados, puede interpretarlo como el byte 10011110. La electricidad fluye a través de esta tubería hacia una unidad aritmética y lógica (ALU) compuesta por otros transistores Mediante una disposición muy inteligente de la tubería del transistor, la ALU puede realizar operaciones matemáticas con lógica binaria. Sin embargo, las matemáticas son una abstracción. Físicamente, todavía está tomando esa serie de encendido y apagado y luego tal vez cambiando un par de ellos que están encendidos o no. Por ejemplo, la ALU puede sumar dos pares de bytes de transistores 00000001 y 00000010 para formar 00000011. Es bueno tener en cuenta que un programa de computadora básicamente reduce las operaciones matemáticas en la ALU o mover datos binarios en la memoria (RAM). Pero todo si esto es solo una tubería realmente inteligente al final del día donde los transistores se encienden y apagan.

Ahora, puede mover bytes de datos, puede operar en bytes de datos a través de la ALU. La última parte es cómo ves las cosas en la pantalla. Sin sumergirse en el procesamiento de señales. Básicamente, la pantalla de su computadora está compuesta de pequeños píxeles de color rojo, verde y azul. Una parte de la computadora llamada acertadamente “Decodificador” toma algunos de esos datos binarios que fluyen encendiendo y apagando a través de todos esos transistores y los envía a encender y apagar los píxeles rojo, verde y azul en su pantalla para que pueda visualizar El programa que se está ejecutando. Los píxeles mismos se encienden y apagan por la electricidad que fluye hacia ellos también.

Entonces, cuando juegas con software, físicamente estás usando un mouse para encender y apagar un montón de válvulas pequeñas que encienden y apagan los colores en un montón de luces parpadeantes en una pantalla 🙂

Como nota al margen, sí, podría hacer una computadora con cualquier tipo de sistema mecánico, incluso con tuberías y válvulas de agua. La mayoría de las personas usan computadoras con transistores porque son rápidas y son pequeñas y portátiles. Cuando llega algo aún más conveniente económicamente que puede cambiar …

Un transistor es una pequeña cosa que permite que la presencia de un voltaje eléctrico en un lugar (A) controle si otros dos lugares (B y C) están conectados eléctricamente entre sí. Esto se convierte en lógica binaria cuando lo usa de modo que si A tiene un voltaje alto, entonces C tiene el voltaje B, pero si A tiene un voltaje bajo, entonces B no afecta a C. Es decir, si A = alto, entonces C = B.

Puede comprar un solo transistor en la tienda, o puede construir un montón de pequeños en un microchip.

Puede conectar algunos transistores juntos para construir circuitos que sean binarios AND, OR y NO puertas. Puede conectar algunos de ellos para construir circuitos que permanecen igual hasta que los cambie (memoria), y que muevan los datos almacenados de una pieza de memoria a otra. Puede considerar los datos como números y construir circuitos para sumarlos y restarlos. Puede tratar otros datos como texto o fotos u otra cosa, y enviarlos de una computadora a otra haciendo que el voltaje en un cable cambie de mayor a menor y viceversa mil millones de veces.

Eventualmente obtienes videos de gatos.

La computadora es una máquina tan maravillosa con amplias capacidades y una amplia gama de aplicaciones, que explica y responde cómo funciona, debe ajustarse y hacerse teniendo en cuenta la audiencia y su nivel.

Dicho de manera simple con un mayor grado de conocimiento, se podría decir:

  1. La computadora es una máquina que ejecuta ciertas instrucciones en una secuencia predeterminada y produce una respuesta a la tarea dada en las instrucciones, en base a las entradas de datos que se le dan.
  2. Básicamente, la computadora es una máquina que procesa los datos que se le proporcionan a través de sus dispositivos de entrada, según un conjunto de instrucciones que también se alimenta, y finalmente imprime un resultado en su dispositivo de salida.
  3. Una computadora tiene muchos componentes dentro para realizar las tareas, a saber. Unidad central de procesamiento, memoria de acceso aleatorio, sistemas de almacenamiento de datos de alta capacidad (discos duros, memoria de estado sólido, etc.), sistemas de interfaz para dispositivos de entrada y salida, a saber. teclados, monitores, impresoras, unidades de disco, sistemas de comunicación de alta velocidad inalámbricos / cableados para el intercambio de datos desde el exterior. Una unidad de fuente de alimentación para proporcionar una fuente de alimentación confiable y adecuada a todos los componentes. Y, sobre todo, un sistema operativo para hacer que todos estos componentes funcionen, se comuniquen entre sí, realicen sus tareas asignadas de manera coordinada e integrada.
  4. Una computadora realiza su tarea a muy alta velocidad. Verbigracia. Puede ejecutar un comando simple en unos pocos segundos nano.
  5. Las computadoras pueden comunicarse entre sí en función de ciertos protocolos de comunicación e intercambiar datos para realizar una tarea. Se dice que tal grupo de computadoras funciona en una red. Las autopistas de datos les ayudan a comunicarse entre sí, a intercambiar datos a una velocidad muy alta sin interrupciones, sin afectar el funcionamiento de los demás. A veces puede haber miles de computadoras conectadas en una red de área local, y / o internet comunicándose y asistiéndose mutuamente en la realización de su tarea.
  6. Cada uno de estos componentes que son de naturaleza física se denominan hardware y los conjuntos de instrucciones se denominan software. El diseño y la fabricación de cada uno de los componentes de hardware, en sí mismo, es bastante interesante, altamente especializado y sigue mejorando cada día en función de nuevas investigaciones en materiales, su uso y las instalaciones y procesos avanzados de fabricación de micro y nano. Así es el caso con el software. Los científicos, investigadores e ingenieros de aplicaciones están desarrollando técnicas de programación mejoradas y lenguajes, sistemas operativos altamente eficientes, que hacen que el uso de sistemas informáticos sea cada vez más fácil de usar al mismo tiempo que aumenta su confiabilidad y capacidades para que puedan ser utilizados para resolver problemas complicados a una velocidad muy alta.
  7. Debido a su versatilidad ilimitada, capacidades extra ordinarias, tales computadoras han sido desarrolladas para ayudar a realizar tareas que hasta ahora nunca se creía que estuvieran al alcance de la humanidad. Son de gran ayuda para hacer que las vidas de las personas en el planeta sean cómodas, agradables y seguras. Desde su aplicación en electrodomésticos, automóviles, telecomunicaciones, control de tráfico aéreo, terrestre y oceánico, sistemas de transporte público. Encuentran un uso cada vez mayor en la investigación y aplicaciones científicas de frontera, a saber monitoreo y pronóstico del tiempo, vehículos interplanetarios y lanzamiento de satélites, investigación de medicamentos y aparatos médicos, robots. Diseño y fabricación de máquinas simples a complejas a saber. Las aeronaves y los vehículos interplanetarios nunca fueron iguales a lo que son ahora y a lo que eran hace un siglo. La historia se está desarrollando incluso ahora y todavía tenemos que explorar muchas aplicaciones.

La lógica de la computadora se basa en álgebra booleana y sistema de numeración en base dos (binario). La información se representa en forma binaria, utilizando los dígitos 0 (cero) y 1 (uno). En un circuito digital, en un instante dado, la presencia de un pulso eléctrico (bits o dígitos) representa el primer dígito del sistema binario. Por el contrario, la ausencia de un impulso eléctrico es 0.

Los impulsos eléctricos se llaman bits. La información, una vez traducida en bits, es procesada por circuitos lógicos (puertas lógicas), capaces de asociar una salida de pulso particular a los impulsos eléctricos en la entrada. Las puertas lógicas son circuitos compuestos de interruptores (interruptores) en serie o en paralelo. Cada puerta lógica realiza una función específica de álgebra booleana simple (NO, AND, OR, NAND, XOR, etc.).

La combinación de puertas lógicas puede crear circuitos lógicos combinatorios para realizar las funciones y también cálculos más complejos. Desde una tabla de verdad de las puertas lógicas se combinan en un circuito eléctrico (circuito de conmutación de modo de operación) para lograr el mismo resultado con impulsos eléctricos.

Los circuitos lógicos también pueden ir acompañados de elementos de memoria para registrar los pulsos eléctricos transmitidos durante el proceso de cálculo. En presencia de elementos de circuito lógico, la memoria se denomina circuito secuencial (circuito de conmutación secuencialmente). La combinación de circuitos integrados de circuitos determina la ciencia electrónica / informática, que se basa en la lógica de la computadora.

Mejor formulación: cómo la electricidad se convierte en lógica ejecutable . Es bastante simple en el nivel conceptual; progresivamente más difícil y más intrincado para explicar cuanto más se acerca al meollo de la cuestión.

En el centro de esto está el concepto de lógica binaria (dos estados). Dados dos canales de entrada, cualquiera de los cuales puede estar en uno de los dos estados (correspondientes a 0 y 1 matemáticos), es decir, un total de 4 combinaciones:

[0: 0] [0: 1] [1: 0] [1: 1]

[ 0 ] [ 0 ] [ 0 ] [ 1 ]

la salida (en circuitos electrónicos: corriente o señal “alta”) sería [0] para los primeros tres, y [1] solo para el último. Esta es la instancia más simple de una ” red combinatoria “, descrita por primera vez, creo, en 1937 por Claude Shannon .

Al combinar multitudes de tales redes combinacionales (o lógica) en marcos lógicos multidimensionales cada vez más grandes, en capas, se pueden construir estructuras de árbol de decisión virtuales bastante avanzadas con auto-filtrado, comportamiento condicional, etc. Esta es la clave de la electrónica digital donde lo analógico las entradas de voltaje se convierten en señales digitales o digitales mediante simples diodos y triodos eléctricos; es decir, tipos de circuitos eléctricos con 2 o 3 cables que están hechos para expresar esa lógica: por ejemplo, pasan corriente en una dirección, pero no en la otra; o pasar corriente solo si ambos cables de entrada están activos. Es entonces cuando la “electricidad” se convierte en secuencias de señales que viajan a lo largo de los cables (ya sean impresas, discretas o microscópicas dentro de los circuitos integrados).

Aquí hay dos componentes conceptuales más importantes: la necesidad de mantener un reloj preciso en el sistema, uno por el cual el voltaje de transmisión se divide en estados discretos; y un umbral acordado que “clasifica” el voltaje real en “señal” (= binario “1”) o “sin señal” (= “0”). Eso es todo, cómo “electricidad” se convierte en lógica ejecutable fluyen dentro de las cajas negras conocidas como circuitos integrados [es decir, una disposición de diodos en miniatura y otros elementos en un sustrato de silicio conocido como chip].

Uno realmente no necesita saber más de lo que sucede debajo / dentro de esa ” caja negra “: las entradas eléctricas entran en secuencias, y dependiendo de los patrones de esos y la función del CI, las salidas salen (a otros chips y etc.) en otras secuencias controladas. La complejidad general de los circuitos que realiza el trabajo real es alucinante, más allá de la capacidad humana de visión general, por lo que implementamos computadoras para que lo hagan por nosotros.

Una advertencia: la explicación anterior es sobre las computadoras digitales, aquellas que dependen de la aritmética binaria (base 2). Al principio, los pioneros de la computadora intentaron construir máquinas que pudieran contar, es decir, calcular, en una aritmética decimal (base 10) más comprensible para los humanos. Para ello, utilizaron tubos de radio de vacío que se podían hacer para discernir entre varios niveles de voltaje analógico correspondientes a 1,2,3,4,5 digitales, etc. Sin embargo, pronto se supo que tales tubos eran componentes poco confiables, de fácil soplado que también consumían mucha electricidad y generaban mucho calor que era necesario disipar (en comparación, la primera computadora verdaderamente totalmente digital construida en 1942 por el ingeniero alemán Konrad Zuse utilizó simples interruptores de láminas magnéticas de lógica binaria con revestimiento de vidrio que emitían casi ningún calor. No, los poderes nazis no entendieron para qué sirve, por lo que negaron a Zuse más fondos, lo cual es igual de bueno, o tal vez no estaría aquí hoy). Pronto las máquinas del sistema decimal ya no existían, y todas las computadoras posteriores dependen de la lógica binaria.

Puedo intentar simplificarlo, no estoy seguro de si funcionará.

La electricidad atraviesa diferentes materiales de manera diferente. Como el metal contra el caucho. Hay materiales entre esos dos que se pueden controlar.

Combina los materiales intermedios y puedes crear una puerta. Al igual que una valla real, las puertas permiten que las cosas pasen algunas veces y otras no, dependiendo de si está abierto. En este caso, la electricidad pasa o no. Explicar cómo crea una puerta es difícil, solo piense en abrir y cerrar.

La combinación de puertas crea lógica. Lógica como, si la puerta de mi cerca está abierta, permite el acceso a mi casa, si la suya está abierta, permite el acceso a su casa. Ambos abiertos me permiten ir a tu casa y hacer una fiesta. Individualmente, no puede suceder, pero juntos sí. Idea básica de la lógica.

La combinación de lógica crea matemáticas. Si quiero agregar 1 más 1, abro ambas puertas, nos juntamos y ahora somos dos. No es tan fácil, pero entiendes la idea.

La combinación de matemáticas crea software. Si quiero caminar a tu casa y a tu puerta de al lado, agrego 1 a mi posición actual y obtengo la tuya.

Los primeros trabajos decidieron que todo lo que tenían eran matemáticas, por lo que convirtieron todo en un problema matemático. Las letras se convirtieron en números, la memoria eran números y las imágenes eran números. Una imagen se almacena como un conjunto de números, como la cantidad de rojo, la cantidad de amarillo y la cantidad de azul. Se crearon ecuaciones complejas para hacer todo. El mouse se mueve, el láser detecta el movimiento hacia arriba y el software se suma a la posición del mouse. Los píxeles en esa posición se actualizan con nuevos números que representan la imagen de la flecha del mouse.

Wow, esto no es algo que cualquiera pueda responder en unos pocos párrafos. Sin embargo, aquí hay un camino para la exploración:

  1. Lea el Laboratorio 1 y el Laboratorio 2. Todo comienza con el transistor, un interruptor eléctrico. Reúna esos de manera inteligente, y obtendrá bloques de construcción que le permitirán expresar la lógica. Y y NO es realmente todo lo que se necesita.
  2. Combina esos de manera inteligente, y puedes comenzar a hacer matemáticas. Esto, por ejemplo, le permite agregar 1 bit:
  3. La próxima gran pieza es un componente que puede recordar el estado. Este es un componente que puede recordar 1 bit.
  4. Bien, ahora tienes dos bloques de construcción clave: algo para expresar lógica combinatoria arbitraria y algo para mantener el estado. Junte unos pocos miles de millones de estos de maneras realmente inteligentes, y tendrá un procesador.
  5. Solo unos pocos pasos más, y estará ejecutando node.js en él y sirviendo contenido web dinámico.

Así que eso es en pocas palabras. Da un significado real al término “desarrollador de pila completa”, ¿no?

Por cierto, Online Circuit Simulator con SPICE te permitirá probar algunas de estas ideas bajo simulación. La simulación se puede hacer en el contexto de partes reales y características de partes reales. Haga que la herramienta genere una lista de materiales para usted, ordene las piezas y construya.