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).
Réponses:
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.
la source
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.
la source
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.
la source
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 ...
la source
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.
la source
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" .
la source
Vous devriez vous pencher sur les éléments des systèmes informatiques de Nisan & Schocken.
la source
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».
la source