Question:
Un ALU est-il un multiplexeur?
Niklas R.
2012-07-13 17:51:44 UTC
view on stackexchange narkive permalink

J'étudie l'électronique numérique où apparaissent les composants ALU et multiplexeur. Pour moi, l'ALU ressemble à un multiplexeur, mais il n'est pas spécifiquement mentionné que c'est le cas. Est-ce vrai ou pourquoi pas?

Un "Mux" sélectionne l'un des nombreux ports d'entrée pour chaque port de sortie. La mémoire Dual Channel est un exemple qui double la bande passante en utilisant 2 canaux pour la RAM 64 bits pour rendre le bus 128 bits plus rapide. Mais l'ALU calcule tous les sauts mathématiques de votre programme en précision simple, double ou n'importe quelle précision. Il est également utilisé dans certains circuits ECC.
Bien que tout le monde ait donné de bonnes réponses, permettez-moi d'ajouter quelque chose d'important: les symboles d'un MUX et d'un ALU sont presque identiques et faciles à confondre. Le symbole ALU a un petit morceau de triangle enlevé entre les 2 entrées, tandis que le symbole mux est un simple quadrilatère. Bien que leurs fonctions soient très différentes, je peux voir comment vous pourriez confondre l'une avec l'autre.
@David - Oui, j'ai été tenté de l'expliquer comme le "pantalon à l'envers" et le "bateau", mais je pense que je vais garder ça pour ma conférence pour les élèves de 1ère année :-)
@stevenvh Merci Je suis content que vous ayez mentionné les mnémoniques "pantalon à l'envers" et le "bateau" c'est très pédagocial.
Cinq réponses:
#1
+11
stevenvh
2012-07-13 17:59:41 UTC
view on stackexchange narkive permalink

Non, ce n'est pas un multiplexeur. Un multiplexeur sélectionnerait l'une des deux entrées, dans une ALU les deux entrées peuvent être utilisées simultanément, selon l'opération en cours.

ALU signifie Arithmetic and Logic Unit, et ce sont les types d'opérations qu'il effectue.

Si l'opération appelle un décalage vers la gauche du registre R1, alors la deuxième entrée est ignorée, mais vous pourriez aussi bien avoir "ajouter le contenu de l'adresse RAM 0x1208 au registre R1", alors les deux entrées sont utilisées . Avant que l'ajout puisse être effectué, les données RAM doivent être extraites et placées sur l'une des entrées, et le contenu de R1 sur l'autre.

enter image description here

Dans l'ensemble, une ALU peut effectuer plusieurs opérations logiques, comme l'ajout, le décalage, l'effacement, etc. C'est une logique assez complexe qui fonctionne sur les opérandes sur les entrées et le code d'opération.
Les opérations comme "effacer A" sont simples, mais "multiplier A et B" nécessite beaucoup de portes.

@Nick - Vous êtes le bienvenu, heureux de vous aider. Merci de l'acceptation.
#2
+8
vicatcu
2012-07-13 20:21:18 UTC
view on stackexchange narkive permalink

Comme d'autres l'ont noté, la fonction d'une ALU est d'effectuer des opérations arithmétiques et logiques (typiquement binaires ou unaires) sur les bus d'entrée. Vous pouvez diviser une ALU en trois étapes principales avec une logique de contrôle qui configure ces étapes.

  • Sélection d'argument: cette étape est vraiment juste un multiplexeur pour chaque entrée qui permet la sélection de diverses entrées pour l'un ou l'autre des arguments (ie RegisterA, RegisterB, MemoryLoad, Pipeline Byassed Value, etc.).
  • Calcul arithmétique / logique: c'est là que tous les calculs sont effectués en parallèle sur les entrées sélectionnées / acheminées
  • Sélection de sortie: cela peut être considéré comme logiquement comme un autre multiplexeur, mais pour des raisons de fan-in / fan-out est souvent implémenté comme un bus à trois états avec les la sortie est activée par un décodeur basé sur l'instruction op-code.

Voici un dessin de très haut niveau que j'ai fouetté pour illustrer ce partitionnement.

enter image description here

Il peut y avoir un débat sur la question de savoir si la première étape et la logique de commande font vraiment partie de l'ALU, ou si elles font plutôt simplement partie de l'étape d'exécution du pipeline CPU. / p>

+1 pour souligner clairement qu'un multiplexeur est généralement un très petit morceau d'une ALU beaucoup plus grande. J'aimerais pouvoir vous donner un autre +1 pour avoir signalé qu'une ALU exécute * toutes * les opérations mathématiques en parallèle, et le multiplexeur sélectionne l'opération qui a été demandée par l'instruction.
Très intéressant. Merci beaucoup pour l'information. J'ai également trouvé du code VHDL pour une ALU dans mon livre de logique numérique qui m'a aidé à comprendre que c'est l'ALU qui permet au processeur de comprendre le code machine (?)
@NickRosencrantz la plupart du code machine (c'est-à-dire les bits d'instruction) sont utilisés pour contrôler les éléments du chemin de données dans les différentes étapes en pipeline - l'ALU finit par faire les opérations mathématiques primitives dictées par les instructions
#3
+6
Russell McMahon
2012-07-13 18:29:28 UTC
view on stackexchange narkive permalink

Pour moi, l'ALU ressemble à un multiplexeur ...

Une ALU effectue de nombreuses tâches.
Un multiplexeur effectue essentiellement une tâche.

Une ALU pourrait se voir attribuer une fonction de multiplexeur comme l'une de ses caractéristiques si on le souhaite.
ie les capacités d'un multiplexeur peuvent être un petit sous-ensemble des capacités d'une ALU.

Dans une implémentation typique, les deux ont deux entrées et une sortie.
Mais le multiplexeur n'effectue qu'une sélection soit / ou entre les deux entrées.
L'ALU pourrait faire ceci plus l'addition, OU, ET, XOR, Ajouter, Soustraire, ...


Étant donné une seule entrée de commande C et un port A à n bits (avec les bits A0, A1, A2 ... An) et un n bit B port un multiplexeur peut être considéré comme implémentant.

Mout_x = A_x.C + B_x./C pour tout x = 0 ... n

"." = ET logique
"+" = OU logique.

C'est une question intéressante s'il existe des ALU pratiques qui ne peuvent pas fonctionner comme des multiplexeurs. Au début, on ne le pense pas, mais il y a ensuite des architectures vraiment uniques.
@ChrisStratton APRÈS avoir fait plus de recherches sur ce qui est ici, je commence à penser qu'une ALU peut être désactivée pour fonctionner comme un MUX afin qu'une ALU puisse être la classe de base d'un MUX et non l'inverse. Merci pour le commentaire (+1).
#4
+4
Oli Glaser
2012-07-13 17:58:10 UTC
view on stackexchange narkive permalink

Non, ce n'est pas un multiplexeur. Une ALU est une unité logique arithmétique.

Elle fait ce que son nom suggère, effectue diverses opérations arithmétiques et logiques comme ajouter, soustraire, multiplier, décaler, ET, OU, etc.

ALU

Merci pour la réponse. Je pense que la relation pourrait être considérée à l'inverse, qu'un MUX est comme un ALU dont certaines fonctions sont désactivées.
#5
+1
sybreon
2012-07-13 20:23:25 UTC
view on stackexchange narkive permalink

Une ALU effectue plusieurs opérations arithmétiques / logiques en fonction de la "fonction" sélectionnée.

Ce n'est qu'un multiplexage dans le sens où la "fonction" sélectionnée sélectionnera le résultat approprié à envoyer à la sortie.

À titre d'exemple, AJOUTEZ deux nombres ET deux nombres ensemble. Ensuite, la "fonction" multiplexe les résultats ADD ou AND vers la sortie.

Soit dit en passant, c'est ainsi que certains ALU à l'intérieur des microprocesseurs sont conçus.

Merci pour la réponse. Le livre que j'utilise est Digital Logic avec VHDL Design et vos réponses m'aident à comprendre le texte. Maintenant, les 2 autres choses que je dois étudier davantage sont les cartes de Karnaugh et la 4-LUT que je ne comprends pas complètement. Merci encore pour votre aide.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...