Procesador casero. Procesador central: en casa desde cero. Exclusivo O Elemento - XOR
Desde que tengo uso de razón, siempre he soñado con fabricar un procesador. Finalmente ayer lo logré. Dios sabe qué: 8 bits, RISC, actual frecuencia de operación- 4 kHz, pero funciona. Hasta ahora en el programa para modelar circuitos lógicos, pero todos sabemos: "¡hoy - en el modelo, mañana - en la realidad!"
Debajo del corte hay varias animaciones, una breve introducción a lógica binaria para los más pequeños, una breve historia sobre los chips lógicos del procesador principal y, de hecho, el circuito.
Lógica binaria
El sistema numérico binario (para aquellos que no lo saben) es un sistema numérico en el que no hay dígitos mayores que uno. Esta definición confunde a muchos hasta que recuerdan que en sistema decimal No hay números mayores que nueve en número.
El sistema binario se utiliza en las computadoras porque los números que contiene son fáciles de codificar con voltaje: hay voltaje, lo que significa uno; sin voltaje significa cero. Además, "cero" y "uno" pueden entenderse fácilmente como "falso" y "verdadero". Además, La mayoría de dispositivos que funcionan en sistema binario notación, generalmente se refiere a los números como un conjunto de “verdades” y “falsedades”, es decir, opera con números como valores lógicos. Para los más pequeños y los que no lo saben, les contaré y mostraré cómo funcionan los elementos más simples de la lógica binaria.
elemento buffer
Imagina que estás sentado en tu habitación y tu amigo está en la cocina. Le gritas: “Amigo, dime, ¿hay luz en el pasillo?” El amigo responde: “¡Sí, está ardiendo!” o "No, no está encendido". Tu amigo es un amortiguador entre la fuente de señal (la bombilla del pasillo) y el receptor (tú). Además, su amigo no es un búfer cualquiera, sino un búfer administrado. Sería un amortiguador ordinario si gritara constantemente: "La bombilla está encendida" o "La bombilla no está encendida".
Elemento “No” - NO
Ahora imagina que tu amigo es un bromista que siempre dice mentiras. Y si la luz del pasillo está encendida, entonces te dirá: "No, el pasillo está muy, muy oscuro", y si no está encendida, entonces "Sí, la luz del pasillo está encendida". Si realmente tienes un amigo así, entonces él es la encarnación del elemento "No".
Elemento “O” - O
Desafortunadamente, una bombilla y un amigo no son suficientes para explicar la esencia del elemento "O". Necesitas dos bombillas. Entonces, en el pasillo tienes dos bombillas: una lámpara de pie, por ejemplo, y una lámpara de araña. Gritas: “Amigo, dime, ¿hay al menos una bombilla encendida en el pasillo?”, y tu amigo responde “Sí” o “No”. Evidentemente, para responder “No” hay que apagar todas las luces.
Elemento “Y” - Y
El mismo apartamento, tú, un amigo en la cocina, una lámpara de pie y una lámpara de araña en el pasillo. A su pregunta "¿Están encendidas ambas luces en el pasillo?" obtienes una respuesta “Sí” o “No”. Felicitaciones, tu amigo es ahora el elemento "yo".
Exclusivo O Elemento - XOR
Repitamos nuevamente el experimento para el elemento “O”, pero reformulemos nuestra pregunta a un amigo: “Amigo, dime, ¿hay solo una bombilla en el pasillo?” amigo honesto Responderá “Sí” a esta pregunta sólo si realmente hay una sola bombilla encendida en el pasillo.
sumadores
Sumador de cuartos
El elemento "O exclusivo" se llama cuarto sumador. ¿Por qué? Vamos a resolverlo.
Creemos una tabla de suma para dos números en el sistema numérico binario:
0+0= 0
0+1= 1
1+0= 1
1+1= 10
Ahora escribamos la tabla de verdad del elemento "O exclusivo". Para hacer esto, denotamos la bombilla encendida como 1, la bombilla apagada como 0 y las respuestas del amigo "Sí"/"No" como 1 y 0, respectivamente.
0 XOR 0 = 0
0 XO 1 = 1
1XO 0 = 1
1XO 1 = 0
Muy parecido, ¿no? La tabla de suma y la tabla de verdad de “O Exclusivo” coinciden completamente, salvo en un solo caso. Y este caso se llama "desbordamiento".
Medio sumador
Cuando ocurre un desbordamiento, el resultado de la suma ya no se coloca en la misma cantidad de dígitos en los que se colocaron los términos. Los términos son dos números de un solo dígito (una cifra significativa, ¿entiendes?), y la suma ya es un número de dos dígitos (dos personajes importantes). Ya no es posible transmitir dos números con una bombilla (“encendido”/“apagado”). Necesitas dos bombillas. Lo necesitamos, ¡lo haremos!
Además de XOR, necesitamos un elemento AND para el sumador.
0 XOR 0 = 0 0 Y 0 = 0
0 XOR 1 = 1 0 Y 1 = 0
1 XOR 0 = 1 1 Y 0 = 0
1 XOR 1 = 0 1 Y 1 = 1
¡Tadam!
0+0= 00
0+1= 01
1+0= 01
1+1= 10
Nuestro medio sumador wunderwaffle funciona. Se puede considerar el más simple. procesador especializado, que suma dos números. Un medio sumador se llama medio sumador porque no puede tener en cuenta el arrastre (el resultado de otro sumador), es decir, es imposible sumar tres inequívocos numeros binarios. En este sentido, es imposible crear un medio sumador de varios bits a partir de varios medios sumadores de un solo bit.
No entraré en detalles sobre cómo funcionan los sumadores completos y de varios bits, sólo espero que entiendas la idea básica.
Elementos más complejos
multiplexor
Sugiero usar tu imaginación nuevamente. Entonces imagina esto. Vives en una casa privada de un apartamento, cerca de la puerta de esta casa está tu Buzón. Mientras caminas, te das cuenta de que hay un cartero extraño parado cerca de este mismo buzón. Y esto es lo que hace: saca un montón de cartas de su bolso, lee el número del buzón y, dependiendo del número del buzón, tira en él una u otra carta. El cartero trabaja como multiplexor. Determina de cierta manera (el número en el sobre) qué señal (carta) enviar a lo largo de la línea de señal (buzón).
Los multiplexores suelen consistir únicamente en combinaciones de elementos "Y", "O" y "No". Un multiplexor de un solo bit tiene una entrada llamada "selección de dirección", dos entradas con nombre común « señal de entrada" y una salida, que se llama: "señal de salida".
Cuando se aplica 0 a la "selección de dirección", la "señal de salida" se vuelve la misma que la primera "señal de entrada". En consecuencia, cuando se aplica un 1 a la "selección", la "señal de salida" se vuelve igual a la segunda "señal de entrada".
Demultiplexor
Pero esto funciona exactamente al revés. Para “seleccionar dirección” damos la dirección, para “entrada de datos” damos los datos, en la salida con el número “dirección” tenemos los datos de la entrada.
Encimera
Para entender cómo funciona el medidor, necesitarás nuevamente a tu amigo. Llámalo desde la cocina (espero que no se haya aburrido mucho allí y, lo más importante, que no se haya comido toda tu comida) y pídele que haga esto: déjale recordar el número 0. Cada vez que lo toques. , debe sumar uno al número que recuerda, decir el resultado y recordarlo. Cuando el resultado sea (digamos) 3, deberá gritar "¡Abracadabra!" y responder la próxima vez que toque que ahora recuerda el número 0. ¿Un poco difícil? Ver:
Tocas a un amigo. El amigo dice "Uno".
Tocas a un amigo. El amigo dice "Dos".
Tocas a un amigo. El amigo dice "Tres". Un amigo grita " ¡Habrahabr!" ¡Ataque crítico! Está temporalmente paralizado y no puede moverse.
Tocas a un amigo. El amigo dice "cero".
Bueno, y así sucesivamente. Muy sencillo, ¿verdad?
Por supuesto, te diste cuenta de que tu amigo ahora es un contador. Tocar a un amigo puede considerarse una "señal de sincronización" o, en pocas palabras, una señal para seguir contando. El grito de “Abracadabra” indica que el valor almacenado en el contador es el máximo, y que la siguiente señal de reloj pondrá el contador a cero. Hay dos diferencias entre el contador binario y tu amigo. Primero: un contador binario real produce un valor almacenado en binario. Segundo: siempre hace sólo lo que usted le dice que haga y nunca se rebaja a hacer bromas estúpidas que podrían alterar el funcionamiento de todo el sistema del procesador.
Memoria
Desencadenar
Sigamos burlándonos de tu desafortunado (quizás incluso imaginario) amigo. Que recuerde ahora el número cero. Cuando toques su mano izquierda, debe recordar el número cero, y cuando toques su mano derecha, debe recordar el número uno. Cuando se le preguntó "¿Qué número recuerdas?" un amigo siempre debe responder con el número que recuerda: cero o uno.
La celda de memoria más simple es un flip-flop RS (“disparador” significa “interruptor”). Un flip-flop RS puede almacenar un bit de datos (“cero”/“uno”) y tiene dos entradas. La entrada Establecer (al igual que la mano izquierda de tu amigo) escribe "uno" en el disparador, y la entrada Restablecer (respectivamente, la mano derecha) escribe "cero".
Registro
El registro es un poco más complicado. Tu amigo se convierte en un registro cuando le pides que recuerde algo y luego dices: "Oye, ¿recuérdame lo que te dije que recordaras?" y tu amigo responde correctamente.
Normalmente, un registro puede almacenar poco más de un bit. Tiene necesariamente una entrada de datos, una salida de datos y una entrada de habilitación de escritura. Desde la salida de datos se puede leer en cualquier momento lo que está escrito en este registro. Puede proporcionar la entrada de datos que desea escribir en este registro. Puedes enviar datos hasta que te aburras. De todos modos, no se escribirá nada en el registro hasta que se aplique uno a la entrada de permiso de escritura, es decir, uno "lógico".
registro de turno
¿Alguna vez has hecho cola? Probablemente lo eran. Entonces puedes imaginar lo que es tener datos en un registro de desplazamiento. La gente viene y se para al final de la fila. La primera persona de la fila entra a la oficina del pez gordo. El que estaba segundo en la fila pasa a ser primero, y el que estaba tercero pasa a ser segundo, y así sucesivamente. Una cola es un registro de turnos tan complicado del que los "datos" (bueno, es decir, las personas) pueden huir por negocios, habiendo advertido previamente a los vecinos en la cola. Por supuesto, en un registro de desplazamiento real, los “datos” no pueden escapar de la cola.
Entonces, un registro de desplazamiento tiene una entrada de datos (a través de la cual los datos ingresan a la "cola") y una salida de datos (desde la cual se puede leer el primer registro de la "cola"). El registro de desplazamiento también tiene una entrada de "registro de desplazamiento". Tan pronto como llega uno "lógico" a esta entrada, toda la cola se desplaza.
Hay una diferencia importante entre una cola y un registro de turnos. Si el registro de desplazamiento está diseñado para cuatro entradas (por ejemplo, cuatro bytes), entonces la primera entrada en la cola llegará a la salida del registro solo después de cuatro señales a la entrada "registro de desplazamiento".
RAM
Si se combinan muchos, muchos flip-flops en registros, y muchos, muchos registros se combinan en un microcircuito, se obtiene un microcircuito. memoria de acceso aleatorio. Un chip de memoria generalmente tiene una entrada de dirección, una entrada de datos bidireccional (es decir, esta entrada se puede escribir y leer) y una entrada de habilitación de escritura. Proporcionamos algún número a la entrada de dirección, y este número seleccionará una celda de memoria específica. Después de esto, en la entrada/salida de datos podemos leer lo que está escrito en esta misma celda.
Ahora enviaremos simultáneamente a la entrada/salida de datos lo que queremos escribir en esta celda, y a la entrada de permiso de escritura, una “lógica”. El resultado es un poco predecible, ¿no?
UPC
BitBitJump
Los procesadores a veces se dividen en CISC (aquellos que pueden ejecutar muchos comandos diferentes) y RISC (aquellos que pueden ejecutar pocos comandos, pero los ejecutan bien). Una buena tarde pensé: sería genial si pudiera hacer procesador completo, que puede ejecutar solo un comando. Pronto aprendí que existe toda una clase de procesadores de una sola instrucción: OISC, la mayoría de las veces usan Subleq (resta, y si es menor o igual a cero, entonces vamos) o Subeq (resta, y si es igual a cero, entonces ir) instrucción. Estudiando varias opciones Procesadores OISC, encontré en Internet el sitio web de Oleg Mazonka, quien desarrolló el lenguaje de comando único más simple, BitBitJump. El único comando en este lenguaje se llama BitBitJump (copia un bit y ve a la dirección). Este lenguaje ciertamente esotérico es Turing completo, es decir, en él se puede implementar cualquier algoritmo informático.
Descripción detallada BitBitJump y el ensamblador para este lenguaje se pueden encontrar en el sitio web del desarrollador. Para describir el algoritmo de funcionamiento del procesador, basta con saber lo siguiente:
1. Cuando se enciende el procesador, se escribe 0 en los registros de la PC, A y B
2. Leer la celda de memoria con la dirección de la PC y guardar lo que leemos en el registro A.
3. Aumentar la PC
4. Leer la celda de memoria con la dirección de la PC y guardar lo que leemos en el registro B.
5. Aumentar la PC
6. Escribimos el contenido del bit con dirección A en la celda con la dirección escrita en el registro B.
7. Leer la celda de memoria con la dirección de la PC y guardar lo que leemos en el registro B.
8. Escriba el contenido del registro B en el registro de la PC.
9. Pasemos al punto 2 de nuestro plan.
10. ¡¡¡BENEFICIO!!!
Desafortunadamente, el algoritmo es infinito y, por lo tanto, no se lograrán GANANCIAS.
En realidad, el esquema
El plan se construyó de forma espontánea, por lo que el miedo, el horror y el caos gobiernan el gallinero. Sin embargo, funciona y funciona bien. Para encender el procesador, necesita:
1. Ingrese el programa a la RAM.
2. Presione el interruptor
3. Coloque el contador en la posición 4 (esto se puede hacer en hardware, pero el circuito sería aún más engorroso)
4. Habilite el generador de reloj
Como puede ver, se utilizan un registro, un registro de desplazamiento, un chip RAM, dos contadores binarios, un demultiplexor (representado por comparadores), dos multiplexores y algo de lógica pura.
Un ingeniero desconocido, Steve Chamberlin, decidió cambiar la opinión generalmente aceptada de que es imposible crear un procesador con sus propias manos. Más precisamente, el procesador de un PC suficientemente complejo que podría duplicar las funciones de los dispositivos informáticos de 8 bits que se generalizaron a principios de los años 80. Al principio fue un proyecto pequeño, que con el tiempo se convirtió en algo más grande. Ahora BMOW 1 es una PC completa basada en un procesador casero que ejecuta programas, tiene teclado, video VGA y un sistema de audio. Entorno de software Para BMW 1-básico.
El procesador, creado por Steve Chamberlin, consta de docenas de chips lógicos simples, por lo que no todo en esta PC son cables y PCB. Sin embargo, todo esto se montó a mano, lo que le llevó a Steve varios años. Como se mencionó anteriormente, al principio solo quería crear un procesador que él mismo ensamblara, pero al final decidió crear una PC que funcionara y pudiera realizar ciertas tareas.
Steve se fijó varios objetivos y todos se lograron:
Crear un procesador desde elementos simples, se utilizaron chips de la serie 7400, sin componentes de las series 6502, Z-80, etc.;
Reducir la complejidad del hardware al mínimo;
La computadora tenía que ejecutar programas "reales", no ser puramente un "juguete";
El procesador debe convertirse en un elemento de un sistema de PC completo;
El sistema debe ser lo suficientemente rápido para iniciar y ejecutar programas de forma interactiva.
La idea en sí se le ocurrió a Steve en noviembre de 2007 y el ingeniero comenzó a implementarla en febrero de 2008. En abril de 2008, se lanzó por primera vez el sistema BMOW 1, lo que hizo increíblemente feliz a nuestro creador. Poco a poco se fueron añadiendo vídeo VGA, un sistema de audio, BASIC y un gestor de arranque, que permitía la interacción con una PC conectada. Después de un tiempo, BMOW 1 se volvió lo suficientemente sofisticado como para soportar programas complejos. El trabajo principal sobre la creación de BMOW 1 se completó en febrero de 2009, la PC está finalizada hasta ahora.
Aquí hay algunos detalles sobre la configuración del dispositivo:
La frecuencia actual del procesador es de unos 2 MHz. El procesador se puede "overclockear" a 3 MHz (teóricamente, aún no probado);
512 KB de RAM, 512 KB de ROM;
Consumo de energía 10 Watt, 2A a 5V;
La imagen de “salida” tiene una resolución de 512*480, dos colores, o 128*240 - 256 colores;
Audio: generador de sonido de tres canales;
Teclado normal con conector PS\2;
Pantalla adicional para salida de texto, 24*2 caracteres;
1250 conductores de alambre, es decir. alrededor de 2500 conexiones;
Otros detalles - en
Un problema similar me ha interesado durante los últimos 3 años, pero no abandoné la idea original de construir sobre transistores, y ahora puedo contarles mis pensamientos y mostrarles los desarrollos actuales, y también, quiero preguntar su opinión sobre lo que, en su opinión, un transistor _serie_ decorativo debería ser una computadora. Pero hay que tener en cuenta inmediatamente que todavía quedan un par de años de trabajo por delante :-)
La pregunta principal es ¿por qué se necesita todo esto si hay FPGA y todo tipo de Raspberry Pis?
La respuesta es simple:
1) Estoy interesado en hacer esto en tiempo libre Y
2) Una computadora decorativa (la decoración es una cuestión de actitud hacia la computadora, no de su apariencia): es como mascotas decorativas: un pug no le arrancará la pierna a un ladrón y un gato persa no derrotará a una rata del metro en una pelea. . Pero es interesante jugar con ellos y mostrárselos a los invitados, incluso si en el campo de la informática, la seguridad y la caza son muy inferiores a sus homólogos de "combate".
Sustitución de problemas y arquitectura.
¿Cuáles serán nuestros requisitos para una computadora decorativa?¿Pero es posible arreglárselas con sólo 4 transistores? Hice una lluvia de ideas y se me ocurrió esto:
Horario de apertura:
Está disponible un circuito para simulación en LTspice IV.
El principio de funcionamiento es el siguiente: porque el orden de los términos no importa, simplemente los mezclamos de forma analógica y, al seleccionar con precisión el voltaje umbral del inversor dual, obtenemos inmediatamente la transferencia. Luego, restando la transferencia en el transistor Q3 de la suma analógica, obtenemos la suma. Por supuesto, todo esto requiere una selección precisa de los niveles de activación y una simulación teniendo en cuenta la temperatura. Diodos Schottky: para evitar que los transistores entren en una saturación profunda, lo que reduce drásticamente la velocidad de funcionamiento.
El uso de transistores de efecto de campo es posible y proporciona una mejor estabilidad de la temperatura, siempre que tengan un umbral de tensión suficientemente bajo.
registro de turno- la parte más importante de esta computadora de transistores. La implementación clásica en flip-flops D síncronos requiere una cantidad monstruosa de transistores por bit.
Logré encajar en 2 transistores por bit, con las siguientes características:
1) Los registros se basan en condensadores y, si no se "mueven", con el tiempo los datos se perderán. Nariz Transistor de efecto de campo El tiempo de almacenamiento es bastante largo.
2) Transferir datos a la siguiente etapa usando un transistor bipolar. La mitad de las veces funciona al revés, modo no estándar- el voltaje de ruptura es mucho menor (pero deberían mantenerse 3,3 V) y la ganancia es mucho menor que la conexión directa (pero espero que sea suficiente).
3) Cada etapa posterior invierte la señal, esto no es un problema cuando solo es necesario acceso secuencial(por ejemplo en el caso de registros de procesador). Si necesita una salida paralela no invertida, deberá agregar 8 inversores (es decir, un registro de desplazamiento de 16 bits requerirá 40 transistores, no 32).
4) Sigue existiendo un problema con la saturación del transistor bipolar.
Cronograma:
Con estas implementaciones compactas circuitos digitales- Creo que será muy posible mantenerse dentro de los 1.000 transistores.
Eso es todo por ahora. Tengo una enorme cantidad de trabajo por delante.
Y ahora, algunas preguntas para los lectores: ¿Qué opciones le parecen aceptables?
No mucha gente recuerda cómo aparecieron los 16 bits en las tiendas en 1991. Computadora personal"Buscar". Este monobloque cautivó a muchos. Por supuesto, en términos de rendimiento era inferior al IBM PC/XT, pero era nuestro. Los bloques de expansión permitieron aumentar ligeramente su funcionalidad. Gracias a esta PC, muchos vecinos de nuestro país comenzaron a dominar la programación, y en general pudieron acceder alta tecnología. Hoy hablaremos de algo similar, pero ensamblado por una sola persona con sus propias manos.Mientras las fábricas producen cientos de miles de procesadores modernos al día, el entusiasta californiano Steve Chamberlin decidió construir un procesador con sus propias manos. Como resultado, para fabricar un procesador de 8 bits, Parecido a eso que se paró en computadoras Apple II, Commodore 64 y modelos anteriores consolas de juegos Atari, se necesitaron 18 meses-hombre, 1000 dólares estadounidenses y 1"253 cables de conexión.
Al fabricar la unidad central de procesamiento para toda la computadora, Chamberlain eligió conexiones cableadas, en lugar de pistas, ya que los cables son fáciles de reemplazar. Debido al desorden de cables, la computadora recibió el nombre de BMOW (Big Mess of Wires). El procesador contiene tres registros de datos de 8 bits, direccionamiento de memoria de 24 bits y 12 modos de direccionamiento. En términos de conjunto de instrucciones y diseño, el procesador BMOW es el más cercano al procesador MOS Technology 6502; estos procesadores todavía se utilizan en algunos sistemas integrados. Además, en el cerebro del robot Bender de la serie Futurama está instalado el legendario procesador 6502, y se instalaron análogos de este procesador en las computadoras Pravets búlgaras y en las PC Agat soviéticas.
Los componentes del procesador BMOW están montados en un panel Augat de 12x7 pulgadas que contiene 2.832 contactos chapados en oro; el autor lo compró en una subasta en línea por 50 dólares. Como resultado, tuve que usar cables de 1"253 para crear 2"506 conexiones individuales– la velocidad de soldadura fue de aproximadamente 25 cables por hora. El propio autor señala que, a pesar de la aparente complejidad, soldar los cables no llevó tanto tiempo. La mayor parte del tiempo se dedicó al diseño, la depuración y el pensamiento.
Basado en su procesador BMWW, Chamberlain creó casi computadora completa con entrada de teclado, panel LCD de una línea, toma USB, tres voces sistema de sonido y salida de vídeo VGA. Para mostrar información en un monitor a color se utilizó un microcircuito UMC 70C171, que el autor logró encontrar en un cajón para piezas innecesarias en el almacén de una tienda de electrónica. Toda la computadora está alojada en una carcasa de la computadora X Terminal, popular a principios de los años 90 del siglo pasado.
Chamberlain señaló que es mucho más difícil trabajar con piezas modernas, porque en lugar de las patas habituales, que se pueden soldar en los agujeros de placa de circuito impreso, para la instalación se utilizan tecnologías completamente diferentes que son inaccesibles para los aficionados, incluida la tecnología de soldadura por ola.
Especificaciones de BMW:
Frecuencia de funcionamiento 2 MHz, aunque probada a 3 MHz;
Capacidad de RAM 512 KB;
Volumen ROM 512 KB;
Consumo de energía 10 W;
Proporciona una resolución de 512 x 480 o 128 x 240, según la profundidad del color;
Generador de sonido programable;
El teclado tiene un conector PS/2 estándar.Steve Chamberlain presentó su computadora en la cuarta Maker Faire anual en San Mateo, California, EE. UU. Puede leer más sobre el progreso del trabajo en la computadora BMWW en el sitio web de Chamberlain.
si en años recientes 40 para realizar la tarea se necesita un microprocesador; la única opción que se considera es comprar uno ya preparado. Bueno, o en casos extremadamente raros, "enrolle" un núcleo FPGA configurable estándar (por ejemplo, Nios II) con un par de instrucciones adicionales. Muchas personas ahora ni siquiera pueden imaginar que los procesadores se puedan producir de otra manera :-) Es lo mismo que pensar que los productos se sacan de una tienda, pero cultivarlos uno mismo es absolutamente imposible.
Por un lado, ¿por qué recordar los fundamentos de la tecnología si todo se produce industrialmente? En mi opinión, para estar seguros de que la tecnología no se perderá, que incluso si ocurre una guerra nuclear, las computadoras se pueden ensamblar a partir de materiales de desecho (lo mismo que con los productos de principios de los años 90), muchos tuvieron que volver a la tecnología de hace 100 años. debido al colapso de la infraestructura de producción y entrega).
Resulta que hay personas que, como hobby, todavía fabrican procesadores centrales a partir de componentes discretos (transistores, relés) y microcircuitos de baja integración (contadores, registros). Los únicos microcircuitos utilizados son la memoria (RAM y reprogramable).
En este artículo quiero hablar brevemente sobre la arquitectura y sobre varios procesadores caseros que realmente funcionan.
Notas arquitectónicas generales:
La mayoría de los procesadores caseros funcionan (casi como la mayoría procesadores modernos) – en el microcódigo leído desde la memoria flash/SRAM – aquí es donde suele ubicarse el lugar más lento: en los últimos 20 años, se ha avanzado en la latencia flash funciona la memoria permaneció casi en su lugar y, para los microcircuitos ampliamente disponibles, es de 70 ns, por lo que es imposible overclockear más rápido que 14 MHz en un procesador de microcódigo en flash. Los procesadores suelen tener un bus de datos de 8 o 16 bits, un bus de direcciones de 16-20-24 bits (nadie quiere limitarse a 65 KB, especialmente con los precios actuales de la memoria). La ALU (núcleo computacional) se fabrica en un bit (es decir, para una operación de 16 bits, se necesitan 16 ciclos de reloj) o se usa una ALU ya preparada de 2 a 4 bits (de la cual se obtiene un 8-16- bit ALU está montado). Los procesadores de microcódigo suelen almacenar código y datos en la misma memoria (arquitectura Von Neumann). Los procesadores tipo RISC sin microcódigo generalmente funcionan en la arquitectura Harvard (los datos y el código están separados, a menudo el programa no puede escribir nada en la memoria del código). En absolutamente todos procesadores caseros La longitud de todas las instrucciones es la misma. Longitud variable Las instrucciones crean dificultades incluso cuando se desarrollan procesadores "industriales". SRAM generalmente se usa como memoria; anteriormente se usaba solo como caché debido a precios grandiosos. Se diferencia de la memoria SDR/DDR convencional por su interfaz extremadamente simple y sin pretensiones, no es necesario controlar la "actualización" de la memoria (en la memoria SDR/DDR convencional, los datos sobreviven sólo entre 32 y 64 milisegundos).Pequeños trucos
A pesar de que se suelen utilizar chips simples, hay algunos trucos que antes (hace 30 años) no estaban disponibles: ALU listas para usar (no es exactamente un chip simple), memoria SRAM (por ejemplo, 1 MB de memoria SRAM son aproximadamente 48 millones de transistores) y el uso de memoria EEPROM como ALU (por ejemplo, en un chip de memoria de 65 KB y 8 bits puede hacer un sumador o multiplicador, y en un chip de 1 MB puede "realizar" 16 operaciones diferentes de 8 bits - FPGA usa el mismo principio para construir arbitrariamente circuitos lógicos). Además, ahora puedes usar mucho más memoria para almacenar microcódigo y el código de programa en mente.Y ahora algunas de las implementaciones más destacadas:
BMW – Gran lío de cables
http://www.stevechamberlin.com/cpu/bmow1Ensamblado a partir de microcircuitos simples. Frecuencia de reloj– 2MHz.
Mi CPU
![](https://i0.wp.com/3.14.by/files/mycpu.jpg)
http://www.mycpu.eu/
Montado a partir de microcircuitos simples. Frecuencia de reloj – 8 MHz. Periféricos desarrollados – hasta acceso a la red. Por cierto, el sitio web http://www.mycpu.eu/ funciona exactamente con esto servidor casero. El diseño está reconstruido, se han recogido muchas copias.
Computadora de retransmisión de Harry Porter
![](https://i0.wp.com/3.14.by/files/relay.jpg)
http://web.cecs.pdx.edu/~harry/Relay/index.html
Montado con 415 relés, parece alrededor de 7 Hz :-)
Magia-1
![](https://i0.wp.com/3.14.by/files/magic1.jpg)
http://www.homebrewcpu.com/
Montado en ~200 microcircuitos simples, frecuencia de funcionamiento de hasta 4 MHz. Puerto Minux, el sitio en sí se ejecuta en este servidor casero.
Mark-1 cuarta computadora
![](https://i1.wp.com/3.14.by/files/mark1.jpg)
http://www.holmea.demon.co.uk/Mk1/Architecture.htm
Montado sobre microcircuitos simples, frecuencia de funcionamiento 1 MHz. Como se desprende del nombre, está optimizado para programas en el idioma Forth. El microcódigo se almacena en una matriz de diodos, en lugar de en chips de memoria flash "no deportivos".
MT15
![](https://i1.wp.com/3.14.by/files/mt15.jpg)
http://www.6502.org/users/dieter/
Lo más delicioso para el final: 16 procesador de bits, recopilado en la baja frecuencia más simple. transistores bipolares(alrededor de 3000 piezas). La frecuencia del reloj es de 500 KHz, los únicos microcircuitos son la memoria y la generación de señales de reloj. Es muy posible establecer la producción de tales transistores en la cocina un año después de una guerra nuclear.