Mapper le processeur au schéma de circuit

11

Je suis un développeur de logiciels (utilisant des langages de haut niveau comme .NET, C, C ++, etc.) essayant de comprendre comment les ordinateurs fonctionnent à un niveau inférieur.

Je connais ce schéma:

J'essaie d'obtenir un aperçu de haut niveau sur la façon dont le diagramme du lien correspond à un schéma de circuit comme celui-ci:

Par exemple, jetez un œil à l'instruction du langage d'assemblage:

ADD 1,2

J'essaie de comprendre comment le processeur produit «3» en sortie. Je me rends compte qu'il peut être difficile de répondre à cette question en termes simples. Si c'est le cas, alors un lien aiderait, peut-être à un livre.

w0051977
la source
En référence au premier diagramme que vous avez publié, les détails dont vous avez besoin de l'arithmétique réelle sont tous cachés dans le grand bloc intitulé "ALU": tous les autres blocs sur ce diagramme sont juste là pour obtenir 1,2 et "ajouter" dans l'ALU et le résultat à nouveau. Sachant cela, vous pouvez commencer à lire comment fonctionne l'ALU, si c'est ce que vous demandiez ..
Brian Drummond
5
Votre premier diagramme correspond au CPU Z80 dans le deuxième diagramme.
starblue

Réponses:

7

Le problème est que pour comprendre comment l'ordinateur atteint 1 + 2 = 3, vous devez comprendre environ 2 niveaux plus profondément que vous ne l'avez fait.

Grosso modo, un ordinateur est organisé (en termes de domaines d'étude) du niveau d'abstraction le plus élevé à la réalité la plus physique:

  1. Logiciel d'application
  2. Machine virtuelle
  3. Système opérateur
  4. BIOS
  5. Systèmes embarqués
  6. Blocs IP (sous-unités / périphériques)
  7. Blocs logiques
  8. Niveau porte
  9. Niveau de transistor
  10. Semi-conducteurs
  11. Physique des appareils

Pour bien comprendre pourquoi l'ordinateur peut produire 2 + 1 = 3, vous devez d'abord décider ce que vous êtes prêt à accepter "sur la foi" et ce que vous ne croirez pas avant de l'internaliser. Cette information sera au niveau deux en dessous de ce que vous comprenez. Donc, si vous voulez comprendre un circuit additionneur au niveau logique, vous devrez comprendre les bases des transistors "numériques" (en particulier CMOS).

En utilisant votre ancien site comme exemple, considérez cette ressource . Il traite de la "pleine addition" - le circuit minimum tout à fait général capable d'addition / soustraction, y compris les entrées et sorties.

Vous devrez également comprendre comment les nombres sont représentés dans le complément à 2 (le système numérique utilisé dans les ordinateurs modernes pour l'arithmétique des nombres entiers).

Si vous voulez vraiment un cours d'introduction de classe mondiale, je ne saurais trop recommander le professeur Scott Wills de Georgia Tech. Il est décédé l'an dernier d'un cancer, mais son parcours continue . Le cours Georgia Tech ECE2030 (introduction à l'ingénierie informatique) a son manuel et ses exercices en ligne.

Bonne chance!

DrFriedParts
la source
Merci pour cela. +1. Je suis un développeur .NET, même si j'ai de l'expérience avec C et C ++. Je comprends que C # est compilé en langage intermédiaire et que le compilateur JIT cible l'architecture informatique en compilant le code IL à la volée. J'essaie de comprendre comment un microcontrôleur peut recevoir un opérande et un opcode et produire une sortie. Je connais bien (niveau GCSE) les composants électroniques tels que: transistors, condensateurs, etc.
w0051977
... alors je commencerais par "Switch Design" dans les lectures et continuerais dans les leçons à partir de là.
DrFriedParts
Votre liste de sujets parvient à en inclure plusieurs qui ne sont pas pertinents pour la question, tout en ignorant ceux qui sont les plus pertinents.
Chris Stratton
@Chris - Non, ce n'est pas le cas.
DrFriedParts
3

J'ai dû apprendre la même chose à l'université et nous avons utilisé le livre Computer Organisation and Design qui était très détaillé (mais peut-être qu'il est trop détaillé pour vos besoins).

Patterson et Hennesy ont utilisé un processeur MIPS "simple" et ont montré toute la fonction du CPU avec un exemple de code dans Assembler.

En général, je pense que ce serait une bonne idée de prendre un processeur "simple" (Arduino ou plus) et d'essayer de comprendre la fonction, car les différences entre cela et le plus complexe sont plus dans la taille des codes d'instructions implémentés.

PS Peut-être que le microprocesseur élémentaire de Google Code serait utile. Il s'agit d'un microprocesseur simulé en Java.

Thomas Fischer
la source
2

Le livre gratuit How Computers Work - Processor and Main Memory de Roger Young répondra à votre question, il utilise des relais au lieu de transistors pour une meilleure compréhension.

rvnd_kk
la source
2
Bien que ce livre semble utile, veuillez modifier la réponse pour inclure le titre complet et les informations sur l'auteur. De cette façon, si le lien change, il sera toujours possible de le retrouver à l'avenir.
PeterJ
Cela ressemble à ce que je cherchais à l'époque. +1. Je jetterai un coup d'œil puis reviendrai.
w0051977
-1

J'ai trouvé ma réponse ici . Il s'agit d'un aperçu de haut niveau du processus d'ajout de numéros.

w0051977
la source
4
C'est plus utile pour les futurs lecteurs si vous résumez le contenu de la réponse. Le simple fait de donner un lien vers une ressource externe n'ajoute pas grand chose à EE.SE.
The Photon
Veuillez noter ce que @ThePhoton dit ici. Bien que cette vidéo YouTube puisse vous aider, pouvez-vous résumer ce que vous avez appris afin que si ce lien vidéo se brise, cela reste une réponse?
Kortuk