Comment fonctionnent les ordinateurs? [fermé]

59

C'est presque embarrassant de demander ... J'ai un diplôme en informatique (et un deuxième en cours). Je travaille comme développeur .NET à temps plein depuis près de cinq ans. Je semble généralement compétent dans ce que je fais.

Mais je ne sais pas comment fonctionnent les ordinateurs!

S'il te plaît, nu avec moi une seconde. Un rapide Google de "Comment fonctionne un ordinateur" donnera de nombreux résultats, mais j'ai eu du mal à en trouver un qui réponde vraiment à ce que je recherche. Je me rends compte que c’est une question énorme, donc si vous pouvez me donner des mots-clés ou une indication.

Je sais qu'il y a des composants ... l'alimentation, la carte mère, la RAM, le processeur, etc. ... et j'ai une "idée générale" de ce qu'ils font. Mais je ne comprends vraiment pas comment vous passez d'une ligne de code comme Console.Readline().NET (ou Java ou C ++) et que vous la faites réellement faire .

Bien sûr, je suis vaguement au courant de MSIL (dans le cas de .NET) et du fait qu’un peu de magie se produit avec le compilateur JIT et que cela se transforme en code natif (je pense). On me dit que Java est similaire et que C ++ coupe la dernière étape.

J'ai fait l'assemblage du mainframe, il y a quelques années. Je me souviens qu'il y avait des instructions et des registres de CPU, et j'ai écrit du code ... et puis un peu de magie est arrivé ... et mon programme fonctionnerait (ou planterait). D'après ce que j'ai compris, un "émulateur" simulerait ce qui se passe lorsque vous appelez une instruction et mettrait à jour les registres de la CPU; mais qu'est-ce qui fait que ces instructions fonctionnent comme elles le font?

Est-ce que cela se transforme en une question électronique et non pas une question «informatique»? Je suppose qu'il n'y a aucune raison pratique pour que je comprenne cela, mais je sens que je devrais pouvoir le faire.

(Oui, c'est ce qui se passe lorsque vous passez une journée avec un petit enfant. Cela leur prend environ 10 minutes et cinq répétitions pour demander "Pourquoi?" Pour que vous réalisiez à quel point vous ne savez pas)

Rob P.
la source
20
Je recommanderais Code par Charles Petzold
Ce n'est pas un Emulator. C'est un groupe de vrais circuits à semi-conducteurs avec des centaines (des milliers) de fils d'entrée et de sortie et des milliards de portes logiques. Le a Emulatorété utilisé à des fins pédagogiques uniquement.
rwong
1
Je pense que le titre devrait être changé pour être plus spécifique / informatif. C'est en fait une question très utile, mais à première vue, cela semble totalement ridicule, à l'image de ce que le petit enfant a demandé à l'origine. Changez-le en quelque chose comme "comment les commandes logicielles de haut niveau se connectent-elles aux réponses matérielles de bas niveau?"
Jhocking le
2
Bonjour Rob, dans son libellé actuel, cette question est désespérément large et s'est rapidement transformée en une question de recommandation de livre et en une discussion prolongée: ce que nous ne voulons pas ici. Si vous pouvez vous concentrer davantage et poser des questions spécifiques sur un problème auquel vous êtes actuellement confronté, n'hésitez pas à poser des questions à ce sujet.

Réponses:

139

Je vais commencer par le niveau le plus bas qui pourrait être pertinent (je peux commencer par un niveau encore plus bas, mais ils sont probablement beaucoup trop inutiles), en commençant par Atom, en passant par l'électricité, les transistors, les portes logiques, les circuits intégrés (puce / processeur). ) et se termine à l’assemblée (je suppose que vous connaissez les niveaux supérieurs).

Au début

Atome

Atom est une structure composée d'électrons, de protons et de neutrons (eux-mêmes composés de particules élémentaires ). La partie la plus intéressante de l’atome pour les ordinateurs et l’électronique sont les électrons car ils sont mobiles (c’est-à-dire qu’ils peuvent se déplacer assez facilement, contrairement aux protons et aux neutrons qui sont plus difficiles à déplacer) et qu’ils peuvent flotter par eux-mêmes sans être retenus à l’intérieur. un atome.

Habituellement, chaque atome a un nombre égal de protons et d'électrons, nous appelons cet état "neutre". En l'occurrence, il est possible qu'un atome perde ou gagne des électrons supplémentaires. Les atomes dans cet état non équilibré sont dits être des atomes "chargés positivement" (plus de protons que d'électrons) et des atomes "chargés négativement" (plus d'électrons que de protons) respectivement.

Les électrons sont impossibles à construire et indestructibles (ce n'est pas le cas en mécanique quantique, mais cela n'a aucune importance pour notre propos); ainsi, si un atome perd un électron, un autre atome à proximité devait recevoir les électrons supplémentaires ou l'électron devait être libéré dans un électron flottant librement, inversement, l'électron étant non-constructible, pour gagner un électron supplémentaire, un atome devait l'enlever des atomes proches ou d'un électron flottant libre. La mécanique des électrons est telle que s'il y a un atome chargé négativement près d'un atome chargé positivement, certains électrons vont migrer jusqu'à ce que les deux atomes aient la même charge.

Électricité

L’électricité n’est qu’un flux d’électrons provenant d’une région comportant un très grand nombre d’atomes chargés négativement vers une région comportant un très grand nombre d’atomes chargés positivement. Certaines réactions chimiques peuvent créer une situation dans laquelle nous avons un nœud avec beaucoup d'atomes chargés négativement (appelé "anode") et un autre nœud avec beaucoup d'atomes chargés positivement (appelé "cathode"). Si nous connectons deux nœuds chargés de manière opposée avec un fil, des masses d'électrons vont circuler de l'anode à la cathode, et cet écoulement est ce que nous appelons "courant électrique".

Tous les fils ne peuvent pas transmettre les électrons aussi facilement, ils circulent beaucoup plus facilement dans les matériaux "conducteurs" que dans les matériaux "résistants". Un matériau "conducteur" a une faible résistance électrique (par exemple, des fils de cuivre dans des câbles) et un matériau "résistant" a une grande résistance électrique (par exemple, une isolation de câble en caoutchouc). Certains matériaux intéressants sont appelés semi-conducteurs (par exemple, les silicons), car ils peuvent modifier facilement leur résistance. Dans certaines conditions, un semi-conducteur peut agir en tant que conducteur et, dans d'autres conditions, il peut devenir une résistance.

L’électricité préfère toujours traverser le matériau avec la moindre résistance. Ainsi, si une cathode et une anode sont connectées avec deux fils, l’un ayant une résistance très élevée et l’autre avec une résistance très faible, la majorité des électrons traversera le câble à faible résistance et presque aucun ne traverse le matériau à haute résistance.

Le moyen age

Commutateurs et transistors

Les interrupteurs / bascules ressemblent à vos interrupteurs ordinaires. Un interrupteur peut être placé entre deux fils pour couper et / ou rétablir le flux d’électricité. Les transistors fonctionnent exactement comme un interrupteur de lumière, sauf qu'au lieu de connecter et de déconnecter physiquement les fils, un transistor connecte / déconnecte le flux électrique en modifiant sa résistance en fonction de la présence d'électricité dans le nœud de base et, comme vous l'avez peut-être déjà deviné Je sais que les transistors sont fabriqués à partir de semi-conducteurs, car nous pouvons en changer pour devenir soit une résistance, soit un conducteur pour connecter ou déconnecter des courants électriques.

Un type de transistor commun, le transistor de jonction bipolaire NPN (BJT), comporte trois noeuds: "base", "collecteur" et "émetteur". Dans un NPN BJT, l'électricité peut circuler du nœud "émetteur" vers le nœud "collecteur" uniquement lorsque le nœud "base" est chargé. Lorsque le nœud de base n'est pas chargé, pratiquement aucun électron ne peut circuler et lorsque le nœud de base est chargé, des électrons peuvent alors circuler entre l'émetteur et le collecteur.

Le comportement d'un transistor

(Je vous suggère fortement de lire ceci avant de continuer car cela peut expliquer mieux que moi avec des graphiques interactifs)

Supposons qu'un transistor soit connecté à une source électrique à sa base et à son collecteur, puis que nous connectons un câble de sortie près de son collecteur (voir la figure 3 à l' adresse http://www.spsu.edu/cs/faculty/bbrown/web_lectures). / transistors / ).

Lorsque nous n'appliquons ni l'électricité à la base ni au collecteur, aucune électricité ne peut circuler car il n'y a pas d'électricité à proprement parler:

B   C  |  E   O
0   0  |  0   0

Lorsque nous appliquons de l'électricité sur le collecteur mais pas sur la base, elle ne peut pas parvenir à l'émetteur car la base devient un matériau à haute résistance. Ainsi, l'électricité s'échappe sur le fil de sortie:

B   C  |  E   O
0   1  |  0   1

Lorsque nous appliquons de l’électricité à la base mais pas au collecteur, aucune électricité ne peut circuler car il n’ya pas de différence de charge entre le collecteur et l’émetteur:

B   C  |  E   O
1   0  |  0   0

Lorsque nous appliquons de l'électricité à la base et au collecteur, nous obtenons de l'électricité traversant le transistor, mais comme le transistor a maintenant une résistance inférieure à celle du fil de sortie, il n'y a presque plus d'électricité qui traverse le fil de sortie:

B   C  |  E   O
1   1  |  1   O

Des portes logiques

Lorsque nous connectons l’émetteur d’un transistor (E1) au collecteur d’un autre transistor (C2), nous connectons une sortie à proximité de la base du premier transistor (O) (voir la figure 4 dans http://www.spsu.edu). / cs / faculty / bbrown / web_lectures / transistors / ), il se passe alors quelque chose d’intéressant. Disons aussi que nous appliquons toujours de l'électricité au collecteur du premier transistor (C1) et que nous ne jouons qu'avec les nœuds de base des transistors (B1, B2):

B1   B2   C1   E1/C2  |  E2   O
----------------------+----------
0    0    1    0      |  0    1
0    1    1    0      |  0    1
1    0    1    0      |  0    1
1    1    1    1      |  1    0

Résumons le tableau afin que nous ne voyions que B1, B2 et O:

B1   B2  |  O
---------+-----
0    0   |  1
0    1   |  1
1    0   |  1
1    1   |  0

Et bien , si vous êtes familier avec la logique booléenne et / ou les portes logiques, vous devriez remarquer qu'il s'agit précisément de la porte NAND. Et si vous êtes familier avec la logique booléenne et / ou les portes logiques, vous savez peut-être aussi qu'un NAND (ou un NOR) est fonctionnellement complet , c'est-à-dire que vous n'utilisez que NAND, vous pouvez construire toutes les autres portes logiques et le reste de la vérité. les tables. En d’autres termes, vous pouvez concevoir une puce informatique entière en utilisant uniquement les portes NAND.

En fait, la plupart des processeurs sont (ou est-il déjà utilisé?) Conçus à l'aide de NAND uniquement, car leur fabrication coûte moins cher que d'utiliser une combinaison de NAND, NOR, AND, OU, etc.

Dériver les autres opérateurs booléens de NAND

Je ne décrirais pas comment rendre tous les opérateurs booléens, uniquement les opérateurs NOT et AND, vous pouvez trouver le reste ailleurs.

Avec un opérateur NAND, nous pouvons alors construire une porte NOT:

Given one input B
O = NAND(B, B)
Output O

Avec un opérateur NAND et NOT, nous pouvons alors construire une porte AND:

Given two inputs B1, B2
C = NAND(B1, B2)
O = NOT(C) // or NAND(C,C)
Output O

Nous pouvons construire d'autres portes logiques de la même manière. Puisque la porte NAND est fonctionnellement complète , il est également possible de construire des portes logiques avec plus de 2 entrées et plus d'une sortie, je ne vais pas discuter ici de la façon de construire de telles portes logiques.

Âge des Lumières

Construire une machine de Turing à partir de portes booléennes

Un processeur ne sont qu'une version plus compliquée d'une machine de Turing. Les registres de la CPU correspondent à l'état interne de la machine Turing et la RAM à la bande d'une machine.

Une machine de Turing (CPU) peut faire trois choses:

  • lire un 0 ou un 1 de la bande (lire une cellule de mémoire de la RAM)
  • changer son état interne (changer ses registres)
  • se déplacer à gauche ou à droite (lire plusieurs positions de la RAM)
  • écrivez 0 ou 1 sur la bande (écrivez dans une cellule de la mémoire dans la RAM)

Pour ce faire, nous construisons la machine de Turing à 2 états et à 3 symboles de Wolfram en utilisant une logique combinatoire (les processeurs modernes utiliseraient le microcode, mais ils sont plus complexes que nécessaire.

La table d'état de la machine de Turing de Wolfram (2,3) est la suivante:

    A       B
0   P1,R,B  P2,L,A
1   P2,L,A  P2,R,B
2   P1,L,A  P0,R,A

Nous voulons réencoder la table d'états ci-dessus en tant que table de vérité:

Let I1,I2 be the input from the tape reader (0 = (0,0), 1 = (0,1), 2 = (1,0))
Let O1,O2 be the tape writer (symbol encoding same as I1,I2)
Let M be connected to the machine's motor (0 = move left, 1 = move right)
Let R be the machine's internal state (A = 0, B = 1)
(R(t) is the machine's internal state at timestep t, R(t+1) at timestep t+1)
(Note that we used two input and two outputs since this is a 3-symbol Turing machine.)

      R  0          1
I1,I2
(0,0)    (0,1),1,1  (1,0),0,0
(0,1)    (1,0),0,0  (1,0),1,1
(1,0)    (0,1),0,0  (0,0),1,0

The truth table for the state table above:

I1  I2  R(t) | O1  O2  M   R(t+1)
-------------+--------------------
0   0   0    | 0   1   1   1
0   0   1    | 1   0   0   0
0   1   0    | 1   0   0   0
0   1   1    | 1   0   1   1
1   0   0    | 0   1   0   0
1   0   1    | 0   0   1   0

Je ne vais pas vraiment construire une telle porte logique (je ne sais pas comment la dessiner en SE et elle va probablement être assez énorme), mais puisque nous savons que la porte NAND est fonctionnellement complète , nous avons un moyen pour trouver une série de portes NAND qui implémenteront cette table de vérité.

Une propriété importante de Turing Machine est qu'il est possible d'émuler un ordinateur à programme enregistré à l' aide d'une machine de Turing qui possède uniquement une table d'états fixe. Par conséquent, toute machine universelle Turing peut lire son programme sur la bande (RAM) au lieu d’avoir à coder en dur ses instructions dans la table d’état interne. En d’autres termes, notre (2, 3) Turing Machine peut lire ses instructions à partir des broches I1, I2 (en tant que logiciel) au lieu d’être codées en dur dans l’implémentation de la porte logique (en tant que matériel).

Microcodes

En raison de la complexité croissante des processeurs modernes, il devient extrêmement difficile d’utiliser la logique combinatoire seule pour concevoir un processeur complet. Les processeurs modernes sont généralement conçus comme un interpréteur d'instructions de microcodes; Un microcode est un petit programme intégré dans la CPU qui est utilisé par la CPU pour interpréter le code machine réel. Cet interpréteur de microcode lui-même est généralement conçu en utilisant la logique combinatoire.

Register, Cache et RAM

Nous avons oublié quelque chose ci-dessus. Comment nous souvenons-nous de quelque chose? Comment mettons-nous en œuvre la bande et la RAM? La réponse se trouve dans un composant électronique appelé condensateur. Un condensateur est comme une batterie rechargeable. Si un condensateur est chargé, il retient les électrons supplémentaires et peut également renvoyer des électrons aux circuits.

Pour écrire sur un condensateur, remplissez-le d'électron (écriture 1) ou drainez tous les électrons du condensateur jusqu'à ce qu'il soit vide (écriture 0). Pour lire la valeur d'un condensateur, nous essayons de le décharger. Si, lorsque nous essayons de nous décharger, aucune électricité ne coule, alors le condensateur est vide (lire 0), mais si nous détectons de l'électricité, le condensateur doit alors être chargé (lire 1). Vous remarquerez peut-être que la lecture d'un condensateur draine son magasin d'électrons, les RAM modernes disposent des circuits permettant de recharger périodiquement le condensateur afin de pouvoir conserver leur mémoire aussi longtemps qu'il y a de l'électricité.

Il existe plusieurs types de condensateurs utilisés dans une CPU, les registres de la CPU et les caches de processeur de niveau supérieur sont réalisés à l'aide de "condensateurs" à très grande vitesse construits à partir de transistors (il n'y a donc presque pas de "retard" en lecture / écriture). eux), on parle de RAM statique (SRAM); alors que la mémoire vive principale est constituée de condensateurs plus lents et beaucoup moins chers, ils sont appelés RAM dynamique (DRAM).

L'horloge

Un composant très important d'un processeur est l'horloge. Une horloge est un composant qui "tique" régulièrement pour synchroniser le traitement. Une horloge contient généralement un quartz ou d’autres matériaux ayant une période d’oscillation bien connue et relativement constante, et le circuit d’horloge maintient et mesure cette oscillation pour conserver sa valeur temporelle.

Les opérations de la CPU sont effectuées entre les ticks d'horloge et les lectures / écritures sont effectuées dans les ticks pour garantir que tous les composants se déplacent de manière synchrone et ne se piétinent pas les uns dans les autres dans des états intermédiaires. Dans notre (2, 3) machine de Turing, entre les signaux d'horloge, l'électricité passe par les portes logiques pour calculer la sortie de l'entrée (I1, I2, R (t)); et dans les tics d'horloge, le graveur écrit O1, O2 sur la bande, le moteur se déplace en fonction de la valeur de M et le registre interne est écrit à partir de la valeur de R (t + 1), puis le lecteur de bande lit la bande en cours et met la charge dans I1, I2 et le registre interne est relu vers R (t).

Parler avec les périphériques

Notez comment la (2, 3) machine de Turing s'interface avec son moteur. C’est une vue très simplifiée de la façon dont un processeur peut s’interfacer avec un matériel arbitraire. Le matériel arbitraire peut écouter ou écrire sur un fil spécifique pour les entrées / sorties. Dans le cas de la (2, 3) machine de Turing, son interface avec le moteur est un simple fil qui demande au moteur de tourner dans le sens horaire ou anti-horaire.

Ce qui n’a pas été dit sur cette machine, c’est que le moteur devait disposer d’une autre "horloge" fonctionnant de manière synchronisée avec "l’horloge" interne de la machine pour savoir quand démarrer et arrêter de fonctionner. C’est donc un exemple de transmission de données synchrone . L'autre alternative couramment utilisée, la transmission asynchrone, utilise un autre fil, appelé ligne d'interruption, pour communiquer les points de synchronisation entre la CPU et le périphérique asynchrone.

L'ère numérique

Code machine et assemblage

Le langage d'assemblage est une mnémonique lisible par l'homme pour les codes machine. Dans le cas le plus simple, il existe un mappage un à un entre le code assemblage et le code machine; bien que, dans les langages d'assemblage modernes, certaines instructions puissent être mappées sur plusieurs opcodes.

Langage de programmation

Nous connaissons tous cela, n'est-ce pas?


Ouf, enfin fini, j'ai tapé tout cela en seulement 4 heures, donc je suis sûr qu'il y a une erreur quelque part (je suis avant tout un programmeur, pas un ingénieur électricien ni des physiciens, donc il pourrait y avoir plusieurs choses qui sont manifestement fausses). S'il vous plaît, si vous trouvez une erreur, n'hésitez pas à donner un @yell ou à la réparer vous-même si vous avez le représentant ou créez une réponse complémentaire.

Lie Ryan
la source
37
" génial " ne le fait pas justice. Cette réponse est positivement héroïque .
NJD
1
La partie atomes n'est-elle pas incorrecte? En général , ils vont ioniser pour former des atomes chargés plutôt que de rester neutre afin d'avoir une sous - armature extérieure complète.
alternative
3
+1, +1000 si je pouvais. Ce qui est vraiment étonnant pour moi et pourquoi j'aime ce domaine, c'est que la grande quantité d'informations de cette réponse ne commence même pas à effleurer la surface de l'incroyable profondeur de la technologie qui permet à un PC moderne de fonctionner.
Quentin-Starin
Merde sainte. C'est génial. Je souhaite pouvoir faire plus que upvote une fois.
Rob P.
3
+1 si j’ai le sentiment que je devrais noter que le matériel moderne n’est pas exactement réalisé via des portes NAND. Il y a des portes, oui, mais elles sont en réalité assez complexes et ne comportent (généralement) qu'une logique NAND approximative; les contraintes sont assez physiques. Les portes physiques sont d'abord assemblées dans des modules logiques, ce qui pourrait être une NAND classique, mais ils sont généralement plutôt plus nombreux (par exemple, une bascule ou un demi-additionneur). Le nombre exact de portes autorisées dépend du style logique utilisé et des contraintes de l’usine de fabrication; tous les fabricants ne peuvent pas tout construire. (Aaargh! Je commence à me souvenir des détails! À l'aide!)
Donal Fellows
12

De Nand à Tetris en 12 étapes

Je pense que ce sera absolument parfait pour vous:

De Nands à Tetris en 12 étapes

Nuit noire
la source
merci pour le lien, en le regardant maintenant. Existe-t-il un index central de ces discussions ou avez-vous simplement vu celle-ci sur un blog quelque part?
Jhocking le
Je ne suis pas sûr que cela se soit produit alors que je surfais un jour
Darknight le
Il a raté une 13ème étape - des plaquettes de silicium.
Job
merci de l'avoir posté! Ceci est fondamentalement le résumé du programme du cours que l'auteur des exposés dans les conférences vidéo d'IDC en Israël, est basé sur son livre - j'ai posté un lien vers le livre dans ma réponse.
Littleadv
Ce site est-il le même matériel? Parce qu'on dirait que c'est beaucoup mieux organisé qu'une simple vidéo nand2tetris.org
mercredi
10

Si vous avez terminé l'assemblage, il ne reste en réalité que deux ou trois couches à comprendre:

  • Les portes logiques , qui permettent de mettre en œuvre la logique via des électrons en mouvement, deviennent ici une question d'électronique
  • La conception de la CPU et du système, qui est la façon dont les portes logiques sont composées pour former une CPU et connectées à la RAM et aux périphériques. Les processeurs modernes sont extrêmement complexes, mais si vous souhaitez comprendre comment fonctionnent les choses, il devrait suffire de regarder un processeur simple et classique comme le Z80 .
  • Microcode , qui est la façon dont les instructions d'assemblage sont interprétées et transformées en actions au niveau matériel des registres et des circuits logiques.

Le dernier (Microcode) est ce qui m'a fait "cliquer" pour moi, parce qu'il a comblé le fossé entre l'électronique et le code.

Michael Borgwardt
la source
Peut-être que c'est le microcode qui me manque. J'ai suivi des cours sur les portes logiques et la conception CPU / système, programmé en assemblage et tout appris sur les commandes binaires (et bien réussi dans toutes ces classes), mais je ne pouvais toujours pas vous dire comment diable tout allait bien. Je vais devoir faire des recherches sur le microcode.
Casey Patton
@ Casey: il est fort possible que ce soit ce qui vous manque. Pour moi, apprendre sur (et écrire du microcode) était exactement ce à quoi je pensais: OK, maintenant je comprends le fonctionnement des ordinateurs. Bien sûr, ils sont devenus si complexes que vous pouvez toujours vous retrouver dans des situations qui semblent incompréhensibles, mais je suis tout à fait convaincu que de telles situations peuvent être comprises si vous êtes compétent, persévérant et investissez suffisamment de temps.
Michael Borgwardt
7

Vous trouverez ici un exemple de programme de cours de premier cycle CS qui explique précisément ce que vous avez demandé (cours CS101 de IDC.AC.IL.) . Il est basé sur ce livre de presse du MIT: " Les éléments des systèmes informatiques: Construire un ordinateur moderne à partir de principes premiers ".

littleadv
la source
1
+1 pour mentionner "Les éléments des systèmes informatiques". C'est un excellent livre qui devrait répondre précisément à la question "Comment fonctionnent les ordinateurs?".
Cédric
Pourriez-vous expliquer davantage ce que font ces ressources et pourquoi les recommandez-vous pour répondre à la question posée? « Link-ne répond » ne sont pas tout à fait la bienvenue à Stack Echange
moucheron
7

Répondre pleinement à cette question prendrait un livre entier. Heureusement, quelqu'un a déjà écrit ce livre. C'est ce qu'on appelle Code: Le langage caché du matériel informatique et des logiciels de Charles Petzold. C'est une lecture très informative et très divertissante.

Bill le lézard
la source
1
+1, juste Ctrl-F pour "Petzold" apporte la réponse que j'étais à peu près sûr d'être là;)
mlvljr
4

Je recommande vivement le code de Charles Petzold. Le livre est à la fois une leçon d’histoire et un aperçu technique de la construction d’un ordinateur. En commençant par expliquer de simples commutateurs télégraphiques, le livre montre le fonctionnement des transistors, puis passe aux portes logiques, aux ordinateurs programmables, à des éléments plus complexes. C'est aussi très bien écrit et pourrait probablement être saisi par tous ceux qui ont assez de curiosité.

Doug T.
la source
3

Il sera bien trop difficile (et long!) D’énumérer tout ce que vous devrez peut-être savoir pour bien comprendre ce que vous devez savoir. Andrew Tanenbaum: Structured Computer Organization, ouvrage célèbre qui répond effectivement à toutes ces questions .

Ce livre vous emmène en fait de l'ordinateur physique sur votre bureau jusqu'aux portes logiques et à l'algèbre booléenne, puis montre un exemple d'architecture pour vous montrer comment tout se passe réellement dans un tel système.

(Une remarque: c'est très cher, cela fait environ 800 pages. C'est probablement bien de se procurer une version de seconde main ou une édition plus ancienne. Les concepts n'ont pas changé.)

Deckard
la source
2

Eh bien, il faut beaucoup de couilles pour dire cela et demander je suppose.

En gros, le code est réduit de plus en plus au code de niveau inférieur plus compliqué. Jusqu'au niveau du code d'assemblage avec les registres push and move .. etc ...

Ensuite, le matériel prend ce code et agit en conséquence. La plupart du temps, le matériel aura ses propres instructions sur la façon de faire les choses. Donc, il peut y avoir une instruction simple telle qu'un PUSH où un registre (emplacement mémoire) obtient une valeur telle que 1 ou 2 ou autre.

C'est définitivement une question d'ordinateur. Et aussi une programmation. Certains programmeurs programment le matériel qui va prendre votre code et lui faire faire quelque chose mais à un niveau très bas. C'est aussi une question d'électronique.

Ross
la source
1

Il y a des appareils.

Ensuite, il existe des pilotes de périphérique qui interagissent avec ces périphériques. Partie écrite en C, partie en assemblage généralement.

Le système d'exploitation interagit avec le logiciel d'application à une extrémité et les pilotes de périphérique de l'autre pour communiquer avec le matériel réel.

Si vous êtes vraiment intéressé, pourquoi ne pas pirater un noyau Linux pour en savoir plus?

Fanatic23
la source
Merci pour votre réponse et votre suggestion. Ça semble être une bonne idée!
Rob P.
1

Au cœur des choses, il s’agit d’une question d’électronique, même si les bases de cette question auraient dû être abordées dans le cours d’enquête pour tous les diplômes de CS. Tout le matériel agit en fonction de portes programmées au niveau des composants. Ce sont les opérations logiques les plus élémentaires: NOT, AND, OR, XOR, NAND, NOR. Chaque porte a une fonction spécifique:

La porte NOT prend une valeur d'entrée et produit une valeur de sortie, elle obtient 0 ou 1 et génère le contraire.

La porte ET prend deux valeurs d'entrée et produit une valeur de sortie. Elle obtient toute combinaison de 0 et 1 et génère 0 pour toute combinaison sauf deux, pour lesquelles elle génère un 1.

La porte OU fonctionne beaucoup comme la porte ET, mais produira un 1 pour chaque combinaison de 0 et 1, sauf deux zéros, pour lesquels elle génère un 0.

La porte XOR est à nouveau similaire aux portes ET et OU, mais elle produira un 0 lorsque les deux entrées sont identiques et un 1 lorsque les deux entrées sont différentes.

La porte NON-ET est l'opposé logique de la porte ET et la porte NOR est l'opposé logique de la porte OU.

En d'autres termes, au niveau matériel, tout se résume à la plus fondamentale des expressions logiques binaires. Tout le reste n’est qu’une transition d’un niveau de programmation supérieur à un niveau inférieur jusqu’à atteindre ce dernier niveau.

MaQleod
la source
+1 Le niveau suivant est comment créer un comportement séquentiel avec ces portes logiques. L'élément clé est la bascule . Assemblez des portes logiques pour former une ALU, une bascule pour les registres, une horloge et vous obtenez un processeur.
mouviciel
@mouviciel Vous avez oublié les multiplexeurs.
starblue
1

Bien que je trouve stupéfiant que quelqu'un puisse terminer un cours en CS sans comprendre le matériel, je suppose qu'il est tout à fait possible qu'un cours puisse se concentrer uniquement sur la théorie en tant que branche des mathématiques, plutôt que sur les détails d'ingénierie et de mise en œuvre. Les vénérables conférences SICP (telles que données dans les années 1980) semblaient être comme ça.

Lors de mon cours de CS, il y a deux décennies, une édition antérieure d' ordinateurs: de la logique à l'architecture était une lecture obligatoire dès la première année.
Quelque chose comme cela devrait combler les lacunes.

Ou encore, Open Courseware du MIT devrait avoir quelque chose d’aide.

njd
la source