Inmediatamente después de hacer un microchip / microprocesador, ¿cómo se programa por primera vez y cómo saben los programadores su lenguaje binario particular?

Mucho antes de que el procesador se fabrique por primera vez, los ingenieros crearán una emulación de software del procesador. Por lo tanto, se construirá una máquina virtual (un programa de software) que hace que una computadora existente ‘pretenda’ ser el nuevo procesador (aunque funciona mucho más lento) .

Los programas se pueden desarrollar y probar en esa máquina virtual mucho antes de que el procesador real esté disponible. Los compiladores, ensambladores, sistemas operativos y controladores de dispositivos se pueden escribir y depurar al menos parcialmente en paralelo con el desarrollo del microprocesador.

Más adelante en el desarrollo, se creará una maqueta del procesador real utilizando FPGA y otros chips lógicos. Físicamente, esto será mucho más grande que el procesador real (probablemente varios racks de electrónica para emular un solo chip de microprocesador), y solo podrá sincronizarse a una versión reducida de la velocidad real del procesador (generalmente algo así como 1/100 de velocidad real). Esto se conectará a un encabezado con el mismo pinout que el procesador real, lo que permite construir y probar las placas base y los periféricos (a la frecuencia de reloj reducida) mientras el procesador en sí aún se está diseñando.

Cuando el chip finalmente se fabrica, teóricamente es solo un caso de cambiar el encabezado FPGA en una placa de circuito por lo real, y aumentar la frecuencia del reloj. Nunca funciona así, pero generalmente en algún lugar cercano.

Tu pregunta es un poco ambigua. *

Suponiendo que quiere decir cómo crear programas para el [primer] chip, los productores crean lo que se llama una hoja de datos, describiendo su código de máquina y el código de ensamblaje equivalente. Luego puede hacer un ensamblador (fácilmente), con la ayuda de lo que puede hacer, generalmente un compilador de C (podría ser cualquier otro lenguaje compilado), o estrictamente el back-end del mismo (generalmente los compiladores tienen una interfaz separada, para que sea más fácil hacer un compilador, ya que no necesita ser rehecho).

Luego puede compilar el código fuente, hecho para otros chips, con el compilador para este chip. No se necesita ensamblaje ni código de máquina binario (sucede entre escenas). Estoy ignorando los sistemas operativos aquí, necesitan algunas modificaciones, pero en su mayoría lo mismo se aplica a esos, usted usa el compilador [C].

Para cada chip de necesidad del mismo tipo, reutilice el mismo compilador y otra infraestructura.

* En algunos chips (al menos tipos CISC, no RISC) tiene microcódigo; eso solía estar integrado en el chip, “quemado”. Ahora, comúnmente, lo tiene modificable (usando memoria flash, no memoria ROM), realmente no es necesario, solo significa si el microcódigo (un tipo de programa) en sí está roto, por ejemplo, el chip en sí tiene errores. Si puede reparar el microcódigo, se llama firmware (algo más general), o también en ese caso un “blob binario”. No se le pregunta, pero los defensores del software libre lo consideran software no libre, aunque generalmente es un código libremente redistribuible, algo diferente.

🙂

“Cuando nace un niño, ¿cómo le enseñan los padres a succionar la leche de los senos?”

No entiendes lo que es un microprocesador.

El microprocesador es, esencialmente, una gran laberinto. Los visitantes de esta laberinto son impulsos eléctricos que ingresan a través de sus pines de entrada. Dependiendo de dónde ingresen o NO estos impulsos (ceros y unos – números binarios) y qué participantes adicionales ingresen al laberinto desde otras direcciones, ciertos circuitos eléctricos se conmutan / activan dentro del laberinto, cambiando los caminos que lo atraviesan, por lo tanto cambiando cómo se transformarán las entradas en salidas.

Todas las posibilidades son descritas y comunicadas de antemano por los creadores del microchip como una descripción de su lenguaje ASSEMBLER. Todos los programas escritos para ese microchip específico se convierten en última instancia al lenguaje ensamblador de acuerdo con las especificaciones comunicadas de antemano.

Por lo tanto, no es necesario enseñarle al procesador cómo debe ejecutar programas: ya tiene todas las instrucciones del programa y todo lo que tiene que hacer es comenzar a enviarle bits. Si las instrucciones que está enviando tienen sentido, se ejecutarán, y si las ha organizado correctamente en su programa, el programa hará cosas significativas.

Como reproducir un video de un gato que se cae de una mesa. O dele un me gusta a una imagen de un bebé hambriento. O envíe un correo electrónico borracho a su jefe.

Ya sabes, las cosas útiles …

Las nuevas versiones de procesador vienen con referencias completas de conjuntos de instrucciones, como estas:

http://www.intel.com/content/dam

Luego, los desarrolladores crean compiladores LLVM / CLang dirigidos a este conjunto de instrucciones. Dado que los microprocesadores suelen ser evolutivos, esto a menudo significa actualizaciones y nuevas marcas para nuevas capacidades, como nuevas instrucciones SIMD, en lugar de compiladores completamente nuevos.

Muy a menudo, los fabricantes de chips intervendrán y proporcionarán dichos compiladores, para garantizar que las capacidades que introducen puedan aprovecharse de la manera más amplia posible. Por ejemplo:

Intel® Parallel Studio XE

Arriba de la pila, los motores como el motor JavaScript V8, las máquinas virtuales Java o .NET Common Language Runtimes, generalmente se revisan rápidamente para aprovechar estas capacidades.

El conjunto de instrucciones, el lenguaje binario como lo pones, no solo sucede. Está diseñado con mucho cuidado por grandes equipos. Antes de construir algo, se habrá simulado en detalle. Lo que significa que se habrá incorporado una copia virtual exacta del procesador en el software, y se habrán escrito y ejecutado numerosos programas en simulación. Lo que significa que toda la cadena de herramientas de software estará en su lugar para crear programas para ella. Durante el desarrollo, los diseñadores habrán jugueteado con el conjunto de instrucciones y experimentado para ver si al cambiar el conjunto de instrucciones (si tienen la opción de hacerlo y no es una copia de un sistema anterior) lo hace correr más rápido. Y luego habrá emulaciones de hardware, utilizando FPGA para pretender ser el procesador final.

De las decenas a cientos de millones de dólares que cuesta desarrollar un nuevo procesador, se gastará aproximadamente un millón en herramientas de software mucho antes de que se fabrique el chip.

De ninguna manera soy un experto en microchip, pero aquí lo entiendo.

Cuando una empresa fabrica un nuevo chip, diseñará no solo el circuito, sino también cómo los usuarios deberían usarlo (conjunto de instrucciones, protocolos de comunicación, …). Luego ponen toda esta información en el manual que viene con el chip. Ahí es donde los programadores pueden encontrar cómo usar el chip.