Limitación de frecuencia para CPUs homebrew

15

Al observar algunas CPU personalizadas, noté que las frecuencias en las que operan son relativamente bajas en comparación con las CPU modernas (del orden de varios MHz). ¿Existe alguna razón de ingeniería electrónica para esa limitación, por ejemplo, para las placas de pruebas? En caso afirmativo, ¿cómo determinar la frecuencia máxima que es posible lograr con su diseño?

Eugen
fuente
¿Como ... chips VLSI hechos en casa? Me imagino que es una limitación de costos. La precisión que ofrece un equipo multimillonario simplemente no se puede duplicar en casa y, como resultado, los chips deben funcionar más lentamente.
Nate
44
@Nate, imagino que se está refiriendo a las CPU multi-chip homebrew construidas a partir de TTL. Por ejemplo: homebrewcpu.com
Alfred Centauri
@Nate, he actualizado mi pregunta para que sea más específica.
Eugen
@AlfredCentauri - sí, tienes razón;)
Eugen

Respuestas:

16

Principalmente tiene que ver con la longitud de las interconexiones y los retrasos de propagación a través de las puertas. Si reducimos una CPU a su esencia, es una máquina de retroalimentación. Un grupo de circuitos lógicos combinatorios calculan algunas funciones booleanas sobre el estado actual de la máquina, y esas funciones determinan el nuevo estado, que se enclava en un circuito secuencial cuando llega un nuevo borde de reloj. Todos los circuitos combinatorios tienen retrasos. El período de reloj no puede ser más corto que el tiempo que tarda el camino más lento a través de estas puertas para producir un resultado estable porque un solo bit incorrecto detiene el espectáculo.

Además, la lógica secuencial tiene requisitos de tiempo. Antes de que llegue el borde del reloj, hay un tiempo mínimo de configuración para que las entradas tengan que ser estables y luego deben ser estables durante un tiempo de espera. Si se violan, el estado se convierte en basura.

Los retrasos en la propagación son causados ​​por cosas como la rapidez con que se pueden cargar las capacitancias parásitas, la rapidez con que se puede construir la corriente frente a una inductancia y la rapidez con que los dispositivos de silicio pueden cambiar. Por ejemplo, un transistor bipolar con una base más pequeña puede cambiar más rápido que uno con una base más grande, por lo que un pequeño transistor en un chip será más rápido que uno discreto.

En una respuesta anterior que eliminé, escribí sobre los efectos de la línea de transmisión. Pero no consideré que estos efectos ni siquiera entran en escena a las velocidades de las que estamos hablando porque, por ejemplo, a 10 Mhz, la longitud de onda sigue siendo de unos 30 metros. Entonces, en la escala de una placa de circuito de tamaño normal, los pulsos en la escala de tiempo de unos pocos megahercios aún alcanzan todas las partes de una red de cobre simultáneamente.

Por lo tanto, si crea una CPU con componentes discretos, simplemente no está logrando los componentes pequeños con tiempos de conmutación rápidos y la misma proximidad que minimiza las capacitancias e inductancias perdidas.

Sin embargo, las antiguas máquinas de componentes discretos en la década de 1960 funcionaban bastante más rápido que estas máquinas caseras. Tomó algo de tiempo y astucia llegar allí. Por ejemplo, el IBM 360 Model 44 (1964) funcionó a 4 Mhz. Puede que todavía sea "velocidad casera", pero el CDC 7600 lanzado unos años más tarde en 1969 superó los 36 Mhz. El artículo de Wikipedia http://en.wikipedia.org/wiki/CDC_7600 da una pista de algunos de los trucos que se extrajeron, por ejemplo:

"Como siempre, el diseño de Cray también se centró en el empaque para reducir el tamaño, acortar las rutas de señal y, por lo tanto, aumentar la frecuencia de funcionamiento ... [E] cada módulo de circuito en realidad constaba de hasta seis tarjetas de PC, cada una de ellas con resistencias subminiatura, diodos y transistores. Las seis placas se apilaron y luego se interconectaron a lo largo de sus bordes, lo que resultó en un módulo muy compacto, pero básicamente irreparable ".

Por lo tanto, las CPU caseras no están necesariamente construidas a su verdadero potencial debido a algunos efectos confusos que tienen que ver con la calidad de construcción y el diseño. Aún así, cualquier persona que construya una CPU a partir de circuitos integrados individuales y componentes discretos que se ejecutan a varios megahercios debe ser aplaudido.

Kaz
fuente
Dependiendo de la complejidad de la ruta de datos, creo que un dispositivo homebrew debería poder acceder a 20Mhz o más sin dificultad usando tecnología moderna y técnicas convencionales. No multi-GHz, pero no una holgura total. Sin embargo, sospecho que en la mayoría de los casos donde se utilizan CPUs caseras, la facilidad de solución de problemas es más importante que la velocidad. Por cierto, el cristal de reloj maestro de la máquina arcade original de la marca Pong (R) era de 14.3818Mhz, aunque se dividió bastante temprano; Creo que lo único cerrado por algo que la velocidad es la línea central del campo de juego.
supercat
1
Muchas CPU caseras utilizan EPROM para almacenar microcódigo, pero también para implementar tablas complejas de lógica y / o verdad (muchas de ellas incluso tienen una ALU hecha de una o más ROM). La velocidad de acceso de las ROM puede limitar significativamente la velocidad máxima de la máquina, pero son populares porque facilitan la depuración, reutilización y ajuste del procesador sin necesidad de volver a cablear de manera significativa.
Alexios
15

Como ex estudiante de secundaria que construyó una computadora para propósitos especiales con la serie 7400 TTL, que ganó un premio en la feria de ciencias, observé estas cosas que evitaron que funcionara lo más rápido posible:

  • Capacitancia perdida en el tablero. Unos pocos pF entre cada par de conectores adyacentes. Eso limitó los tiempos de subida / caída del borde del pulso y en algunos lugares agregó diafonía. Este fue probablemente el factor más importante.

  • Variaciones de chips de bolsa de agarre. (¿Alguien recuerda Poly-Paks?) 74LSxx, 74Hxx, 74xx con diferentes retrasos de propagación y otras características, hicieron imposible que las señales permanecieran sincronizadas a velocidades de reloj superiores a unos pocos MHz.

  • Chips de memoria estática Cheapo, nuevamente de una bolsa de mano u otra fuente sin calidad. Simplemente no podían leer ni escribir de manera confiable más allá de un cierto ritmo.

  • Mi instrumentación de prueba se limitó a los generadores de señal homebrew, un osciloscopio de ancho de banda de 5MHz y un circuito digital temporal con jurado. Difícil de verificar la integridad de la señal, el tiempo, las amplitudes de las señales digitales que se han filtrado de paso bajo en papilla tambaleante.

Hoy en día, sería difícil encontrar un alcance de 5MHz a menos que uno sea un comprador de antigüedades. Las mejores fichas de todo tipo son igual de fáciles de obtener, incluso en paquetes DIP de 0.1 "espaciados, excepto que no he visto mucho en el camino de las bolsas de agarre en mucho tiempo. Sin embargo, los paneles de conexión no han cambiado mucho. La capacitancia perdida sigue siendo un factor decisivo para cualquier proyecto digital creativo y vanguardista.

Evitar las placas de prueba utilizando una PCB casera es la mejor manera de evitar la capacitancia perdida, pero, por supuesto, requiere más esfuerzo y tiempo.

DarenW
fuente
4

Creo que la razón principal es que a medida que aumenta la frecuencia, la impedancia de las conexiones de su placa aumentará y limitará la velocidad final de su circuito.

Cada conexión en su placa tiene una inductancia baja, pero no nula. A medida que su frecuencia aumenta, debe tener en cuenta estos efectos. La impedancia de los cables se puede encontrar mediante:

Esta formula

donde L es la inductancia del cable. Eventualmente, Z llegará a ser lo suficientemente alto como para que no fluya corriente y su circuito dejará de funcionar. Encontrar el valor numérico exacto para este número será muy complicado, especialmente porque las placas de pruebas tienen trazas una al lado de la otra y eso cambiará un poco la impedancia de cada cable de esta fórmula. Si realmente desea un número (impreciso), puede intentar aquí calcular la inductancia (y, por lo tanto, la impedancia) de sus cables. Si conoce la corriente más baja desde la cual una parte puede operar, puede determinar la frecuencia máxima antes de alcanzar ese límite.

Nate
fuente
¿Podría explicar la relación entre la impendance y la velocidad del circuito?
Eugen
Entonces, ¿cómo explica esto que las CPU como Intel Core I7 funcionan a velocidades de reloj de 2.5 GHz y las CPU construidas en placas de pruebas no pueden alcanzar esta velocidad? Inicialmente pensé que hay una conexión con la longitud del cable entre la CPU y los chips de RAM.
Eugen
No niego las leyes de la física, pero no creo que la inductancia sea realmente el principal limitador de la velocidad. Después, se utilizan cables similares de rangos de longitudes similares en radios de fabricación casera y otros proyectos, a frecuencias mucho más altas. Solo hay que tener cuidado al combinar impedancias, longitudes, diseños, evitar acoplamientos accidentales, etc.
DarenW
1
@DarenW: inductancia perdida y capacitancia son de hecho los problemas. En un sistema de radio, normalmente solo tiene un cable de longitud no trivial. En una implementación de procesador, tiene cientos, con inductancia mutua dependiendo del espaciado. Las interacciones dependientes de la frecuencia son inmanejables debido a la complejidad. La impedancia característica depende en gran medida de cosas como la distancia desde los rastros del suelo ... que no están bien controlados en una placa de pruebas.
Ben Voigt el
1
Creo que tienes razón, supongo que probablemente solo sean reactancias en general. La capacitancia dará como resultado problemas similares, pero para cosas como bordes duros ascendentes / descendentes y cambios de estado. Sin embargo, las ecuaciones para encontrar la impedancia son similares, y si quiere una respuesta numérica, probablemente se podrían aplicar de manera similar.
Nate
3

Otros han respondido el "por qué". Aquí se explica cómo determinar la velocidad máxima.

  1. Para cada flip-flop, mira su reloj a Q.
  2. Totalice la longitud del cable de todos los cables desde el flip-flop hasta el próximo flip-flop. Convierta esta longitud en tiempo. El cable tiene una velocidad de luz de ~ 2/3
  3. Totalice cualquier retraso en la puerta, incluso a través de RAM asíncrona.
  4. Tómese el tiempo de configuración en el próximo flip-flop.
  5. Añadir 1-4. Este es tu período mínimo de reloj. Invertir para obtener frecuencia.
  6. Considere la inclinación del reloj. Si el reloj llega a la segunda ff antes de la primera, agregue sesgo con 1-4.
  7. Si el reloj llega a la segunda ff antes de la primera, calcule el mínimo de 1-3. Asegúrese de que sean inferiores al tiempo de espera requerido por el segundo ff más el sesgo del reloj.
Brian Carlton
fuente
¿De qué longitud de cable está hablando: la longitud de la fuente de alimentación a los pines de CPU, los pines de CPU a los chips RAM ...? Además, no tengo muy claro lo que quieres decir en el primer paso.
Eugen
2
@Eugen: creo que (pero no en mi área de especialización) se está refiriendo a su retraso de propagación interna: tiempo desde que se sincroniza hasta que tiene una salida estable.
Incondicionalmente
1

Además de todas las razones eléctricas que limitan la velocidad, también hay una en el nivel lógico:

No puede utilizar tantos recursos para hacer que las cosas funcionen más rápido, como la operación canalizada con predicción de rama, aritmética más rápida y otras cosas. Los cachés tampoco tienen mucho sentido si no son más rápidos que su memoria principal.

starblue
fuente
1

Para las máquinas de elaboración casera se reduce a dos factores. El retraso de propagación de los chips que está utilizando y la cantidad de chips que necesita usar en la ruta más larga a través del diseño de su CPU.

Por ejemplo, un 74HC574 (registro de 8 bits) tiene un retraso de propagación máximo de aproximadamente 41ns (tomado de su hoja de datos). Ahora digamos que el camino más largo a través del diseño de su CPU requiere que pase por 8 chips diferentes. Sume los retrasos de propagación para cada uno de los 8 y imaginemos que llega a 333ns. Con 1000ns siendo lo mismo que 1Mhz que le daría una velocidad máxima de 3Mhz.

En la práctica, es posible que desee restringirse a algo más lento como 2Mhz, para garantizar un diseño estable. Incluso si crees que solo perderás el tiempo una vez por mil millones de ciclos, entonces todavía estás en problemas. 10 mil millones dividido por 3 millones significa que ejecuta mal una vez cada 3,333 segundos, lo que es aproximadamente una vez por hora. ¡Bloquear tu máquina cada hora no es bueno!

Para hacerlo más rápido, puede usar chips más rápidos y / o cambiar el diseño para reducir la cantidad de chips en el camino más lento. La velocidad más rápida de homebrew que ves es de alrededor de 4Mhz, lo que te da 250ns para completar cada ciclo.

Phil Wright
fuente