Comment sont construites la plupart des ALU et est-il possible de «construire la vôtre»?

11

J'ai vraiment vraiment essayé d'en savoir plus sur le très faible niveau d'ordinateurs. J'ai regardé beaucoup de pages homebrew et c'est beaucoup à prendre. J'ai suivi des cours d'ingénierie électronique au collège, mais nous n'avons pas vraiment approfondi le sujet (c'était l'informatique, donc la plupart il s'agissait en fait d'algorithmes et autres).

Quoi qu'il en soit, comment sont / ont été construits la plupart des ALU ? Je me rends compte que ce n'est pas la seule partie d'un ordinateur, mais c'est quand même une partie importante.

Et pourriez-vous créer votre propre ALU en utilisant simplement des portes logiques (à des fins d'apprentissage)? Je comprends que cela semble probablement stupide à ceux qui connaissent mieux, mais j'essaie juste de comprendre. (Heck, même un simple additionneur serait un projet soigné.) Si oui, comment procéder? Y a-t-il des exemples de matériel? (J'ai regardé autour de Google, mais je ne trouve rien de ce genre qui a un guide étape par étape expliquant les choses).

Brian Carlton
la source
1
Vous pourriez être intéressé par ce .
Dean
6
Parlant de l'intérieur d'une équipe de puces CPU, si vous êtes intéressé par l'architecture informatique et CPU, les livres canoniques sont "Organisation et conception informatique: l'interface matérielle / logicielle" suivie de "Architecture informatique: une approche quantitative". Ceux-ci sont appelés respectivement "Patterson et Hennessy" et "Hennessy et Patterson".
Ross Rogers
@Dean - Oui, les fils à code couleur sont pour les poules mouillées! :-)
stevenvh
Notre projet de semestre en EE360M à UT Austin en 1994 était une ALU 4 bits basée sur une pile implémentée sur une carte de démonstration Xilinx avec un XC3000-quelque chose, utilisé comme une pile à 16 niveaux qui a conduit sa valeur maximale à un écran LED à 7 segments et un XC4000-quelque chose qui était l'ALU réel. Réglez votre entrée et votre fonctionnement sur les commutateurs DIP, appuyez sur un bouton et c'est parti. Le XC4k avait un oscillateur interne avec plusieurs fréquences de 63 kHz à 8 MHz, et notre note était en partie basée sur la vitesse à laquelle notre conception pouvait aller et continuer à fonctionner.
Mike DeSimone
1
@Shubham: Une fois que j'ai vu que je savais que je devais rester loin de Minecraft ... je ne ferais rien d'autre ... O_o
Mike DeSimone

Réponses:

15

Vous pouvez les construire complètement à partir de portes logiques de base , et le résultat sera une belle œuvre d'art :-).

La série logique 74xx contient également un 74LS181 , une ALU de tranche 4 bits , ce qui simplifie considérablement les choses. Les ALU de tranche de bits ont été utilisés pour construire des ALU plus complexes (lire: longueurs de mots plus longues), mais les technologies plus récentes ont rendu ce type de CI obsolète.
remarque: TTL (74xx) n'est qu'une technologie utilisée pour les portes logiques. Plus rarement utilisé. Il a été suivi par Low-Power Schottky: 74LSxx, à proprement parler également une forme de TTL. De nos jours, il existe des dizaines de familles logiques, toutes basées sur le CMOS haut débit (74HCxx, 74HCTxx, 74ACxx, ...)

De nos jours, la bonne façon de créer une ALU serait de le faire dans un CPLD ou un FPGA . Cela vous donne beaucoup de portes et le HDL (Hardware Description Language) que vous utilisez pour concevoir l'ALU est beaucoup plus facile et moins sujet aux erreurs que d'essayer de comprendre comment établir vous-même les connexions avec les portes logiques. VHDL et Verilog sont les HDL du jour.

Une autre méthode pour créer une ALU (sans utiliser de portes logiques, cependant) serait une EEPROM / Flash parallèle unique . Vous utilisez les entrées A et B et l'opération en entrée (adresse) et obtenez le résultat de l'opération en sortie (données). Tout ce que vous avez à faire est de compiler le contenu de la ROM, ce qui signifie que vous devez écrire à chaque adresse ce que sera le résultat de l'opération pour les entrées A, B et l'opération correspondantes. La taille des mots sera limitée par la plus grande taille de ROM que vous puissiez trouver.

stevenvh
la source
5

Vous pouvez créer votre propre ALU, mais même les anciens ordinateurs avec des puces TTL discrètes utilisaient une certaine intégration pour cela. Par exemple, regardez la puce 74x181. C'est une tranche de 4 bits d'une ALU, et a été utilisée dans certains ordinateurs TTL pour implémenter l'ALU complète en utilisant l'une de ces puces pour chaque 4 bits.

Olin Lathrop
la source
Désolé de paraître ignorant, mais en quoi les puces TTL sont-elles différentes des portes logiques? et TTL a-t-il été utilisé avant ou après les portes logiques? ou sont-ils fabriqués à partir de portes logiques: confus:
@Sauron - J'ai ajouté une note sur les familles logiques à ma réponse
stevenvh
5

Je commencerais par le monde HDL en premier. Écrivez un verilog, utilisez verilator ou icarus verilog pour le simuler. Écrivez le code de telle sorte qu'il ressemble à des portes discrètes et, ou non, puis, si vous le souhaitez, trouvez des pièces de la série 74xx (recyclées?) Et quelque chose de la planche à pain. OU, il existe un certain nombre de cartes CPLD et FPGA de 50 $ plus ou moins et vous pouvez mettre l'alu dans l'une de celles qui proposent une sorte d'interface à l'extérieur pour voir si cela fonctionne. Je dirais que l'éducation HDL est la même que vous apprenez les bases de l'additionneur, etc. et le multiplexage des entrées et des sorties et du fonctionnement. Mais vous pouvez le faire dans un environnement facile à utiliser et à voir avant de le passer au matériel. Tout comme la façon dont les gens le font aujourd'hui, concevoir et simuler puis déployer.

old_timer
la source
1
Absolument. Simulez d'abord. Ensuite, si vous devez avoir du matériel, un FPGA est le plus pratique. Câbler 74xx TTL pour quelque chose de ce complexe serait un énorme projet qui ne devrait pas être abordé jusqu'à ce qu'un design soit vraiment pensé.
Chris Stratton
5

Pour les livres, j'appuie définitivement les livres "Patterson et Hennessy" (IIRC il y en a 3, déguisés en 3 éditions, mais en réalité des livres totalement différents. Si vous êtes sérieux: prenez-les tous.)

Si vous voulez expérimenter votre chemin dans la conception de base d'ALU ou même de CPU: commencez à expérimenter avec un simulateur logique. Nous avons utilisé DigitalWorks pour nos cours, mais je ne le recommanderais pas. Logisim ( http://sourceforge.net/projects/circuit/ ) semble prometteur. Ce que vous devez maîtriser, c'est la superposition: créez des blocs de base comme un additionneur complet, un sélecteur et une bascule déclenchée par un bord à partir de portes, puis créez des registres, ALU, une logique de séquençage à partir de ces blocs de construction, jusqu'à un processeur avec mémoire. Ce n'est vraiment pas si difficile à construire, disons l'équivalent d'un processeur PIC (cœur 14 bits), attachez un tas de LED et programmez-le pour afficher un écran Kitt.

Après cela, il sera amusant de faire un noyau 32 bits, de le porter GCC, de le réaliser dans un FPGA et d'exécuter Linux dessus. Mais tu ne seras pas le premier ...

Wouter van Ooijen
la source
4

Ce n'est pas du tout une question stupide. La page Wikipedia montre un tel circuit au niveau de la porte pour une ALU 2 bits. Les circuits intégrés ALU étaient généralement disponibles en «tranches» - généralement 4 bits, que vous pourriez mettre en cascade pour obtenir des largeurs de bus plus importantes (voir découpage de bits ).

La fiche technique du Texas 74181 4 bits bits ALU a également un schéma de niveau de porte.

MikeJ-UK
la source
4

L'histoire des processeurs est celle d'une quantité croissante de choses par paquet.

Les premiers processeurs utilisaient toujours des ALU série construits à partir de quelques relais ou tubes à vide. Le premier à renverser cette tradition fut le Whirlwind de 1947.

Les premiers processeurs transistorisés ont tout construit à partir de transistors individuels.

L'ordinateur de guidage Apollo (AGM), peut-être le premier ordinateur construit à partir de circuits intégrés, n'utilisait qu'un seul type de CI en dehors de la mémoire: les portes NOR à 3 entrées. L'ALU et toutes les autres parties du CPU ont été entièrement construites à partir d'un grand nombre de circuits intégrés de porte NOR. Le (beaucoup plus rapide) Cray 1 utilisait également un seul type de CI en dehors de la mémoire: un autre type de porte NOR.

Au fur et à mesure que les gens trouvaient comment monter plus de transistors sur une puce, les processeurs ultérieurs utilisaient (relativement) moins de puces pour implémenter une ALU.

Une ALU peut être entièrement construite à partir de multiplexeurs ( "Multiplexeurs: la tactique Nuke of Logic Design" ), en utilisant beaucoup moins de puces que l'implémentation NOR.

Dieter Mueller a publié un design ALU 8 bits qui a plus de fonctionnalités que deux puces 74181 - le 74181 ne peut pas bouger à droite - construit à partir d'un nombre encore moindre de puces: 14 puces TTL complexes: deux additionneurs 4 bits 74283, certains 4: 1 multiplexeur et quelques multiplexeurs 2: 1.

Comme de nombreux ordinateurs commerciaux historiquement importants, de nombreux processeurs maison utilisent une version du 74181, la première ALU "complète" sur une seule puce.

Beaucoup de ces processeurs ont construit une ALU 8 bits ou 16 bits (ou les deux) à partir de quelques puces 74181 et de quelques puces 74182 - chaque 74181 ne gère que les opérations à 4 bits. Les machines Homebrew utilisent généralement la chose la plus simple possible qui fonctionnera - le report d'un 74181 alimentant le report du suivant, formant un additionneur à report ondulé. Les machines commerciales qui utilisent des puces 74181 utilisent généralement un générateur de report 74182 pour accélérer considérablement l'addition et la soustraction.

Aujourd'hui, la plupart des ALU sont cachées dans une puce - une petite partie d'un processeur, un autre type d'ASIC, ou un CPLD ou FPGA.

Même après la disponibilité des "ordinateurs à puce unique", quelqu'un construira parfois une ALU compatible 74181 à partir d' une liste d' adresses globale , ou une ALU en utilisant uniquement des portes logiques plus simples, ou même des transistors ou relais individuels, à des fins d'apprentissage.

Les gens l'ont fait, donc cela doit être possible.

Un guide étape par étape expliquant la conception et la mise en œuvre d'ALU semble être une très bonne idée. Veuillez nous aider à en rédiger un dans le wikibook Microprocess Design, peut-être dans les sections "ALU" ou "Wire Wrap" .

davidcary
la source
2

Historiquement, certains travaux ALU ont été effectués avec des discrets (ouais, des transistors et autres), et certains avec des grilles, et beaucoup avec des puces `` tranche '' de 4 bits (le SN74181 de TI était l'un des premiers, et Fairchild 29F01 a fait son temps).
Mais AUJOURD'HUI, il s'agit de construire les équations logiques dans un langage de description logique à matrice de portes ou PLA. Il existe des modules préconfigurés disponibles dans le commerce qui intégreront n'importe quelle petite unité logique choisie dans votre conception, tout ce qu'il faut, c'est de l'argent pour obtenir une licence pour la «propriété intellectuelle».

Whit3rd
la source
1
Lorsque les résistances étaient bon marché par rapport aux résistances, il y avait un certain nombre d'astuces qui pouvaient permettre la construction d'ALU avec un nombre de transistors très bas (par exemple, un additionneur complet utilisant deux transistors par étage). De tels circuits étaient gourmands en énergie et pas terriblement rapides, mais lorsque les transistors étaient chers, ils pouvaient économiser des coûts considérables.
supercat