Limitation de fréquence pour les CPU homebrew


15

En examinant certains processeurs personnalisés, j'ai remarqué que les fréquences auxquelles ils fonctionnent sont relativement faibles par rapport aux processeurs modernes (de l'ordre de plusieurs MHz). Y a-t-il une raison d'ingénierie électronique pour cette limitation, par exemple pour les platines d'essai? Si oui, comment déterminer la fréquence maximale qu'il est possible d'atteindre avec votre conception?


Comme ... des puces VLSI faites maison? J'imagine que c'est une limitation des coûts. La précision qu'offre un équipement de plusieurs millions de dollars ne peut tout simplement pas être reproduite à la maison et, par conséquent, les puces doivent fonctionner plus lentement.
Nate

4
@Nate, j'imagine qu'il fait référence aux processeurs multi-puces homebrew construits à partir de TTL. Par exemple: homebrewcpu.com
Alfred Centauri

@Nate, j'ai mis à jour ma question pour être plus précis.
Eugen

@AlfredCentauri - oui, vous avez raison;)
Eugen

Réponses:


16

Cela concerne principalement les longueurs des interconnexions et les délais de propagation à travers les portes. Si nous réduisons un CPU à son essence, c'est une machine à rétroaction. Un groupe de circuits logiques combinatoires calcule certaines fonctions booléennes sur l'état actuel de la machine, et ces fonctions déterminent le nouvel état, qui est verrouillé par des circuits séquentiels lorsqu'un nouveau front d'horloge arrive. Les circuits combinatoires ont tous des retards. La période d'horloge ne peut pas être plus courte que le temps qu'il faut au chemin le plus lent à travers ces portes pour produire un résultat stable car un seul bit incorrect arrête le show.

En outre, la logique séquentielle a des exigences de synchronisation. Avant l'arrivée du front d'horloge, il y a un temps de configuration minimum pour que les entrées soient stables et ensuite elles doivent être stables pendant un certain temps de maintien. Si ceux-ci sont violés, l'État devient une poubelle.

Les retards de propagation sont causés par des facteurs tels que la vitesse à laquelle les capacités parasites peuvent se charger, la vitesse à laquelle le courant peut s'accumuler face à une inductance et la vitesse à laquelle les dispositifs en silicium peuvent commuter. Par exemple, un transistor bipolaire avec une base plus petite peut commuter plus rapidement qu'un transistor avec une base plus grande, donc un minuscule transistor sur une puce sera plus rapide qu'un transistor discret.

Dans une réponse précédente que j'ai supprimée, j'ai écrit sur les effets de ligne de transmission. Mais je n'ai pas considéré que ces effets n'apparaissent même pas à la vitesse dont nous parlons parce que, disons, à 10 Mhz, la longueur d'onde est toujours d'environ 30 mètres. Ainsi, à l'échelle d'une carte de circuit imprimé de taille ordinaire, des impulsions à l'échelle de temps de quelques mégahertz atteignent toujours toutes les parties d'un réseau en cuivre simultanément.

Donc, si vous fabriquez un processeur à partir de composants discrets, vous n'atteignez tout simplement pas les petits composants avec des temps de commutation rapides et la même proximité qui minimise les capacités et les inductances parasites.

Néanmoins, les anciennes machines à composants discrets dans les années 1960 fonctionnaient un peu plus vite que ces machines homebrew. Il a fallu du temps et de la ruse pour y arriver. Par exemple, l'IBM 360 Model 44 (1964) fonctionnait à 4 MHz. C'est peut-être encore la "vitesse homebrew", mais le CDC 7600 sorti quelques années plus tard en 1969 a dépassé les 36 MHz. L'article de Wikipedia http://en.wikipedia.org/wiki/CDC_7600 donne un aperçu de certaines des astuces qui ont été tirées, par exemple:

"Comme toujours, la conception de Cray s'est également concentrée sur l'emballage pour réduire la taille, raccourcir les trajets des signaux et ainsi augmenter la fréquence de fonctionnement. ... et les transistors. Les six cartes ont été empilées puis interconnectées le long de leurs bords, ce qui en fait un module très compact, mais fondamentalement irréparable. "

Ainsi, les processeurs homebrew ne sont pas nécessairement construits à leur véritable potentiel en raison de certains effets de confusion liés à la qualité de construction et à la disposition. Néanmoins, toute personne qui construit un CPU à partir de circuits intégrés individuels et de composants discrets qui fonctionne à plusieurs mégahertz doit être applaudie.


Selon la complexité du chemin de données, je pense qu'un appareil homebrew devrait pouvoir cadencer à 20Mhz ou plus sans difficulté en utilisant la technologie moderne et les techniques conventionnelles. Pas multi-GHz, mais pas un jeu total. Je soupçonne cependant que dans la plupart des cas où des processeurs homebrew sont utilisés, la facilité de dépannage est plus importante que la vitesse. Soit dit en passant, le cristal d'horloge principal de la machine d'arcade de marque Pong (R) d'origine était de 14,3818 MHz, bien qu'il ait été divisé assez tôt; Je pense que la seule chose bloquée par quelque chose que la vitesse est la ligne médiane du terrain de jeu.
supercat

1
De nombreux processeurs homebrew utilisent des EPROM pour stocker le microcode, mais aussi pour implémenter des tables de logique et / ou de vérité complexes (beaucoup d'entre eux ont même une ALU composée d'une ou plusieurs ROM). La vitesse d'accès des ROM peut limiter considérablement la vitesse de pointe de la machine, mais elles sont populaires car elles facilitent le débogage, la réutilisation et le réglage du processeur sans recâblage important.
Alexios

15

En tant qu'ancien lycéen qui a construit un ordinateur à usage spécial avec la série 7400 TTL, qui a remporté un certain prix à la foire scientifique, j'ai observé ces choses qui l'empêchaient de fonctionner aussi vite que possible:

  • Capacité parasite dans la maquette. Quelques pF entre chaque paire de connecteurs adjacents. Ce temps de montée / descente de front d'impulsion limité et par endroits a ajouté une diaphonie. C'était probablement le facteur le plus important.

  • Variations de chips de sac à main. (Tout le monde se souvient des Poly-Paks?) 74LSxx, 74Hxx, 74xx avec des retards de propagation différents et d'autres caractéristiques, il était impossible d'avoir des signaux synchronisés à des vitesses d'horloge supérieures à quelques MHz.

  • Des puces de mémoire statiques bon marché, toujours à partir d'un sac à main ou d'une autre source de mauvaise qualité. Ils ne pouvaient tout simplement pas lire ou écrire de manière fiable au-delà d'un certain taux.

  • Mon instrumentation de test était limitée aux générateurs de signaux homebrew, à un oscilloscope à bande passante de 5 MHz et à des circuits numériques provisoirement truqués. Difficile de vérifier l'intégrité du signal, la synchronisation, les amplitudes des signaux numériques qui ont été filtrés passe-bas en bouillie vacillante.

Aujourd'hui, il serait difficile de trouver une portée de 5 MHz à moins d'être un acheteur d'antiquités. De meilleures puces de toutes sortes sont tout aussi faciles à obtenir, même dans des boîtiers DIP espacés de 0,1 ", sauf que je n'ai pas vu grand-chose dans la manière des sacs à main depuis longtemps. La capacité parasite est toujours un tueur de vitesse pour tous les projets numériques créatifs énervés.

Éviter les panneaux d'essais en utilisant un PCB homebrew est le meilleur moyen d'éviter la capacité parasite, mais nécessite bien sûr plus d'efforts et de temps.


4

Je pense que la principale raison est que lorsque vous augmentez la fréquence, l'impédance des connexions de votre maquette augmentera et limitera la vitesse finale de votre circuit.

Chaque connexion de votre maquette a une inductance faible mais non nulle. À mesure que votre fréquence augmente de plus en plus, vous devez tenir compte de ces effets. L'impédance des fils peut être trouvée par:

Cette formule

où L est l'inductance du fil. Finalement, Z deviendra suffisamment élevé pour qu'aucun courant ne circule et que votre circuit cesse de fonctionner. Trouver la valeur numérique exacte de ce nombre sera très compliqué, surtout parce que les planches d'essais ont des traces les unes à côté des autres et cela changera un peu l'impédance de chaque fil à partir de cette formule. Si vous voulez vraiment un nombre (imprécis), vous pouvez essayer ici de calculer l'inductance (et donc l'impédance) de vos fils. Si vous connaissez le courant le plus bas à partir duquel une pièce peut fonctionner, vous pouvez déterminer la fréquence maximale avant d'atteindre cette limite.


Pourriez-vous expliquer la relation entre l'impédance et la vitesse du circuit?
Eugen

Alors, comment cela explique-t-il que les processeurs comme Intel Core I7 fonctionnent à des vitesses d'horloge de 2,5 GHz et que les processeurs construits sur des platines ne peuvent pas atteindre cette vitesse? J'ai d'abord pensé qu'il y avait une connexion avec la longueur du fil entre le processeur et les puces RAM.
Eugen

Pour ne pas nier les lois de la physique, mais je ne pense pas que l'inductance soit vraiment le principal limiteur de vitesse. Après, des fils similaires de plages de longueurs similaires sont utilisés dans les radios homebrew et autres projets, à des fréquences beaucoup plus élevées. Il suffit de faire attention aux correspondances d'impédances, de longueurs, de dispositions, d'éviter les couplages accidentels, etc.
DarenW

1
@DarenW: L'inductance et la capacité parasites sont en effet les problèmes. Dans un système radio, vous n'avez généralement qu'un seul fil de longueur non triviale. Dans une implémentation de processeur, vous en avez des centaines, avec une inductance mutuelle en fonction de l'espacement. Les interactions en fonction de la fréquence sont ingérables en raison de la complexité. L'impédance caractéristique dépend fortement de choses comme la distance aux traces du sol ... qui ne sont pas bien contrôlées sur une planche à pain.
Ben Voigt

1
Je pense que vous avez raison, je suppose que cela devrait probablement être simplement des réactances en général. La capacité entraînera des problèmes similaires, mais pour des choses comme les fronts montants / descendants durs et les changements d'état. Les équations pour trouver l'impédance sont cependant similaires, et s'il veut une réponse numérique, elles pourraient probablement être appliquées de la même manière.
Nate

3

D'autres ont répondu au "pourquoi". Voici comment déterminer la vitesse maximale.

  1. Pour chaque bascule, regardez son horloge à Q.
  2. Additionnez la longueur de fil de tous les fils de la bascule à la bascule suivante. Tournez cette longueur dans le temps. Le fil a une vitesse de lumière d'environ 2/3
  3. Additionnez tous les retards de porte, y compris via la RAM asynchrone.
  4. Prenez le temps de configuration à la prochaine bascule.
  5. Ajoutez 1-4. Il s'agit de votre période d'horloge minimale. Inversez pour obtenir la fréquence.
  6. Considérez le décalage d'horloge. Si l'horloge arrive au deuxième ff avant le premier, ajoutez l'inclinaison avec 1-4.
  7. Si l'horloge arrive au deuxième ff avant le premier, calculez le minimum de 1-3. Assurez-vous qu'ils sont inférieurs au temps de maintien requis par le deuxième ff plus le décalage d'horloge.

De quelle longueur de fil vous parlez: la longueur de la source d'alimentation aux broches de sortie CPU, des broches de sortie CPU aux puces RAM ...? De plus, je ne sais pas vraiment ce que vous voulez dire dans la première étape.
Eugen

2
@Eugen - Je pense (mais pas mon domaine d'expertise) qu'il se réfère à son retard de propagation interne - le temps entre le cadencement et la sortie stable.
Remise en état sans condition

1

Outre toutes les raisons électriques qui limitent la vitesse, il y en a aussi une au niveau logique:

Vous ne pouvez pas utiliser autant de ressources pour accélérer les choses, telles que le fonctionnement en pipeline avec prédiction de branche, l'arithmétique plus rapide et ainsi de suite. Les caches n'ont pas beaucoup de sens non plus si elles ne sont pas plus rapides que votre mémoire principale.


1

Pour les machines homebrew, cela se résume à deux facteurs. Le délai de propagation des puces que vous utilisez et le nombre de puces que vous devez utiliser sur le chemin le plus long dans la conception de votre processeur.

Par exemple, un 74HC574 (registre 8 bits) a un retard de propagation maximum d'environ 41 ns (extrait de sa fiche technique). Supposons maintenant que le chemin le plus long dans la conception de votre processeur nécessite de passer par 8 puces différentes. Additionnez les délais de propagation pour chacun des 8 et imaginons qu'il arrive à 333ns. Avec 1000ns étant le même que 1Mhz, cela vous donnerait une vitesse maximale de 3Mhz.

Dans la pratique, vous voudrez peut-être vous limiter à quelque chose de plus lent comme 2Mhz, afin d'assurer une conception stable. Même si vous pensez que vous ne manquerez le timing qu'une fois par milliard de cycles, alors vous êtes toujours en difficulté. 10 milliards divisés par 3 millions signifient que vous exécutez mal une fois toutes les 3333 secondes, soit environ une fois par heure. Plantage de votre machine toutes les heures n'est pas bon!

Pour le rendre plus rapide, vous pouvez utiliser des puces plus rapides et / ou modifier la conception pour réduire le nombre de puces dans le chemin le plus lent. La vitesse homebrew la plus rapide que vous voyez est d'environ 4 MHz, ce qui vous donne 250 ns pour terminer chaque cycle.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.