Comment fonctionne un ordinateur?

40

Je suis un nerd informatique depuis de nombreuses années. Je peux programmer dans pas mal de langues et je peux même les construire. L'autre jour, je me suis assis avec un copain et je lui ai demandé comment un ordinateur prend de l'électricité et en fait quelque chose, mais nous ne pouvions tout simplement pas le savoir et Google ne nous a pas beaucoup aidé.

Je veux dire, comment un ordinateur prend-il un flux constant d’électricité et le transforme-t-il en 1 et en 0 puis fait quelque chose avec ces 1 et 0 comme allumer une lumière pendant 15 secondes?

Je comprends les portes (AND, OR, NOR, NAND, NOT) et un peu sur les diodes , les résistances et les transistors , mais j’ai pensé que ce serait l’endroit idéal pour l’expliquer en termes simples!

Quelqu'un peut-il m'indiquer dans la bonne direction ou me donner une brève explication?

Christian
la source
8
Vous pourriez aussi bien demander "comment fonctionnent les bactéries?". C'est une question incroyablement vaste. Je vous suggère de regarder une architecture de processeur simple (par exemple, MIPS ; on nous a appris celle-ci en classe) et de travailler à partir de là. Les questions que vous rencontrerez en cours de route conviennent probablement beaucoup mieux à Stack Exchange que celle-ci.
Raphaël
3
Je sais comment les bactéries fonctionnent, c’est l’ordinateur que je ne reçois pas lol
Christian
14
Elfes Petits elfes magiques.
JeffE
1
Le meilleur moyen d'apprendre comment un ordinateur fonctionne réellement au niveau le plus bas est de concevoir un microcontrôleur simpliste sur un fpga ou manuellement à partir de Nand gates. Je l'ai fait dans un cours "d'architectures informatiques" et c'était vraiment une révélation. Ce n'est même pas difficile à faire si vous gardez tout au strict minimum et concevez un contrôleur 4 bits avec addition, manipulation de bits et saut conditionnel. Ou encore plus simple, un matériel implémentant une machine de Turing simplifiée. Hm, cette idée m'a donné une idée: découvrez le fonctionnement d'une machine de Turing. Cela vous donnera un bon aperçu.
vsz

Réponses:

47

C'est une vaste question à laquelle il n'est pas facile de répondre. le chemin parcouru par les électrons sur des fils de cuivre est très loin du rendu d’un site Web dans Firefox. Je vais essayer de vous donner un aperçu de bas en haut et de vous indiquer les bonnes choses à regarder.

Chiffres d'encodage

La motivation de base est de calculer des choses, comme en arithmétique¹. La première chose à regarder est de savoir comment représenter les nombres. Il y a eu beaucoup d'approches, utilisant des systèmes décimaux ou ternaires et même des systèmes octaux, mais finalement, le binaire l'emporte. Nous savons maintenant que nous devons construire des périphériques qui traitent deux valeurs - appelons-les et 1 .01

Notez qu'il existe également plusieurs façons de coder des nombres en binaire. Après avoir construit votre premier processeur, vous réalisez les avantages de certaines choses. Des exemples populaires sont les flottants à double complément et IEEE . Pour commencer, limitez-vous aux nombres naturels.

portes

Supposons que nous utilisions un encodage binaire. Pensez à la façon dont vous avez appris à ajouter au primaire et notez la même chose pour les nombres binaires. Les éléments constitutifs de l’algèbre booléenne sont déjà là pour vous; il est facile de construire un additionneur de base (et d'autres fonctions arithmétiques) à l'aide de portes logiques .

Comment construire de telles portes n'entre pas dans le cadre de l'informatique; ingénierie électrique a fourni de multiples solutions utilisant par exemple des tubes ou des transistors . Rendez-vous sur Stack Exchange pour le génie électrique pour des questions à ce sujet.

Horloge et état

Toutes les portes ne sont pas également rapides et toutes les parties d'un calcul n'ont pas le même nombre de portes. Par conséquent, nous devons faire très attention à ce que les opérations individuelles ne se dépassent pas. Il s'est avéré utile d'utiliser une horloge globale ; le résultat d'un réseau de portes donné est l'état des fils de sortie à la fin du cycle (qui peut changer énormément pendant que les portes se mettent en cascade vers leurs états finaux individuels).

Cela signifie que les résultats d'un cycle peuvent devoir être enregistrés jusqu'au début du cycle suivant, par exemple si vous câblez des boucles. Il existe un certain nombre d'éléments de base que vous pouvez utiliser pour obtenir des effets variables, tous créés à partir de portes; certains s'appellent des tongs . Ceux-ci sont également utilisés pour construire des registres , des éléments qui stockent des nombres pour autant de cycles d'horloge que nécessaire.

Architecture et commandes

Vous avez maintenant une multitude de choix de conception à faire. Quelles opérations arithmétiques votre processeur fournit-il? À quoi ressemblent vos commandes? Il peut être instructif de regarder l’ architecture MIPS dont les premières formes sont faciles à comparer aux autres conceptions. Regardez les plans :

MIPS à une étape
Original de http://ube.ege.edu.tr/~erciyes/CENG311

Il s'agit essentiellement d'extraire et de désassembler des commandes, un ensemble de registres, un ALU et un contrôle. Les commandes indiquent quelle opération ALU exécuter sur quels opérandes (par le numéro du registre dans lequel ils sont tenus), comment manipuler le compteur de programme² ou lequel enregistrer pour charger / stocker de / vers la mémoire³.

Considérations supplémentaires

Vous avez maintenant un processeur fonctionnel au sens moderne du terme, en supposant que vous ayez compris comment créer une mémoire et un moyen de l’alimenter par des commandes. En route vers une machine moderne, de nombreux choix doivent être faits. Voilà quelque:

Des alternatives

Ce qui précède est fortement influencé par l'évolution de l'histoire. Dans un monde différent avec des esprits différents, les ordinateurs peuvent fonctionner différemment. En fait, il existe de nombreux modèles de calcul , dont certains présentent des avantages qui les rendent utiles comme abstraction pour de vraies machines dans de nombreux cas. Il existe également des tentatives pour imiter le fonctionnement de notre cerveau, c'est-à-dire permettre l'informatique neuronale , ou plus généralement exploiter les stratégies de résolution de problèmes et de stockage d'informations observées dans la nature , notamment l' ADN et l' informatique quantique .

Alors peut-être (espérons-le?) Les informations ci-dessus représentent toute l'histoire ancienne dans 50 ou 100 ans.


  1. Toutes les choses fantaisistes que nous faisons avec les ordinateurs d’aujourd’hui sont décomposées en nombreuses petites tâches arithmétiques que le processeur exécute une à une.
  2. Si votre modèle autorise le programme à manipuler le flux de contrôle, il s’agit de l’adresse mémoire à partir de laquelle le processeur reçoit l’instruction suivante. Vous pouvez également concevoir des machines qui ne lisent qu'un ensemble fixe d'instructions à partir d'une bande, par exemple. En fait, les premières implémentations l'ont fait. Pas de sauts signifiait pas de boucles; un programme était une série d'instructions complètement déroulées / dépliées en fonction des données. Évidemment, pouvoir utiliser le même programme pour plusieurs données d'entrée est plus puissant.
  3. En supposant que vous avez de la mémoire; votre processeur fonctionne bien sans, mais ne peut alors traiter que de nombreuses valeurs à la fois. Les premiers ordinateurs lisaient toutes leurs données à partir de bandes et les gardaient dans des registres. Il n'y avait pas de mémoire, encore moins d'écriture, de stockage persistant tel que nous le connaissons aujourd'hui.
Raphaël
la source
Hou la la! Cela mérite un coup. C'était une excellente lecture. Merci pour le partage. J'ai certainement appris quelque chose. Bien que, après avoir lu cela, je pense que ce que je veux savoir, ce sont davantage les principes de base du génie électrique en termes de contrôle physique de l’électricité. Je poserai la même question à ce groupe un peu plus tard dans la journée. Merci!
Christian le
1
Je me suis dit que j'aurais probablement dû inclure "parler à la partie machine". Cela signifie que concevoir un langage avec lequel les humains peuvent travailler efficacement et le traduire (avec un compilateur) dans le jeu d'instructions que vous avez spécifié. Ce sont des sujets principaux de l' ordinateur la science alors que le matériau dans ma réponse est la plupart du temps informatique d' ingénierie .
Raphaël
J'imagine que ce n'est pas une réponse rapide. Un jour, je paierai un ingénieur en informatique qui construira des cartes mères ou des téléphones portables, comment fonctionnent les principes fondamentaux. C'est-à-dire comment un ordinateur calcule ou allume une lumière pendant 5 secondes puis l'éteint. J'imagine que cela a beaucoup à voir avec les commutateurs et les condensateurs.
Christian
@Christian Si vous voulez économiser de l'argent, pensez à acheter une boîte d'expérimentation EE (comme celle pour enfants) comprenant des transistors. Commuter les lumières ou construire un petit additionneur est généralement inclus, autant que je sache. (Encore une fois, les gens du génie électrique en savent probablement plus.)
Raphael
25

Le tableau complet est assez compliqué. De nombreuses couches superposées implémentent collectivement des abstractions de haut niveau au-dessus de tensions électriques. Il n’existe aucune explication simple sur la façon dont tout est mis en place, d’autant plus que le matériel informatique et les logiciels ont considérablement évolué au cours des cinquante dernières années.

Si vous souhaitez voir comment tout est mis en place, vous pouvez consulter le livre intitulé Elements of Computing Systems , un ouvrage qui commence par les portes NAND et construit progressivement une implémentation fonctionnelle de Tetris sur un compilateur et un système d'exploitation vous construisez aussi. Chaque pièce de l'ordinateur est construite sur la précédente, ce qui peut vous aider à voir comment tout fonctionne.

templatetypedef
la source
Cela ressemble à un point de départ idéal. Va commencer par là. Merci beaucoup :)
Christian le
2
Je recommande également de lire CODE de Charles Petzold.
Ybakos
7

Le podcast Sécurité maintenant! fait une série sur le fonctionnement des ordinateurs, en commençant par les principes de base.

  • 233 - Concevons un ordinateur (partie 1)
  • 235 - Langage machine
  • 237 - Indirection: La puissance des pointeurs (ne fait pas techniquement partie de la série)
  • 239 - Piles, registres et récursivité
  • 241 - Interruptions matérielles
  • 247 - Le "multi" -verse
  • 250 - Systèmes d'exploitation
  • 252 - Affaires à risque
  • 254 - Ce que nous ferons pour la vitesse

Les lacunes dans les chiffres sont dues au fait que chaque épisode est un épisode de commentaires d'auditeur, vous pouvez donc également les regarder. De plus, entre 241 et 247, ils ont fait quelques épisodes sur SSL en raison des dernières nouvelles sur les pays qui obligeaient les autorités de certification à leur fournir des certificats racine.

Aussi EP. 248 est le "Portable Dog Killer" qui ne tue pas les chiens, mais une arme à faisceau sonique que Steve a fabriquée tout seul pour aider un chien voisin à apprendre à ne pas courir jusqu'au bord de la clôture et à tenter d'attaquer des personnes sur le trottoir .

Scott Chamberlain
la source
intéressant! Merci pour le partage. J'irais regarder.
Christian le
4

Un ordinateur fonctionne en manipulant les gradients d'énergie (que nous interprétons ensuite comme des 1 et des 0) de manière cohérente et définie . C'est la cohérence qui définit un ordinateur, tandis que c'est la définition qui sépare les différents processeurs.

Découvrez également à quel point deux portes logiques (OU et ET) suffisent pour créer un ordinateur polyvalent. Voir aussi Danny Hillis et l'ordinateur Tinkertoy.


la source
C'était une lecture intéressante sur le TinkerToy, en particulier sur le fait qu'il gagne toujours! ( Science20.com/brain_candyfeed_your_mind/… )
Christian
Cependant, bien que cela me donne une bonne idée de la façon dont un ordinateur "pense", c’est-à-dire qu’il combine toutes les combinaisons possibles et permet de trouver la réponse suivante à la question précédente, cela ne répond pas à ma question initiale de savoir comment construire un ordinateur. Supposons que je me dirige vers mon magasin de matériel électrique local (qui a tout) pour acheter les bits de base (transitors, résistances, condensateurs, portes, etc.) et les configurer afin d’avoir un ordinateur extrêmement basique, de quoi aurais-je besoin? Après tout, le premier ordinateur avait la taille d’un entrepôt avec des bits et des fils, cela doit donc être possible!
Christian
@Christian: haha, d'accord, construisez des portes logiques de base (ET / OU / NON), des bascules pour le stockage de mémoire de base et vous pourrez peut-être ajouter deux nombres de 4 bits.
J'ai des tongs! Deux paires en fait.
Christian le
3

Un ordinateur est un grand système logique synchrone , ce qui signifie que

  • 0/1
  • il fonctionne avec une horloge (très rapide) afin que tous les signaux soient échantillonnés à des moments précis pour assurer la cohérence.

0/1

Il dispose de circuits spécialisés pour conserver les informations tant que l'ordinateur est alimenté (RAM, en très grande quantité). Il dispose de circuits spécialisés pour effectuer une arithmétique binaire (en réalité, les bits sont traités par groupes, généralement par multiples de 8, qui représentent collectivement un nombre entier). Et il dispose de capacités de routage spécialisées basées sur des adresses de mémoire, qui ne sont que des entiers.

Enfin et surtout, un ordinateur moderne contient également un programme stocké dans la RAM, qui contient une liste d'instructions codées sous forme d'entiers, qui sont exécutées de manière séquentielle. Elles récupèrent généralement des données dans la mémoire, effectuent des opérations arithmétiques et renvoient les résultats en mémoire.

Dans votre scénario, on pourrait penser à une implémentation où le temps écoulé est stocké quelque part dans la RAM et où le programme demande à

  • récupérer la valeur du temps écoulé,
  • incrémenter avec un additionneur,
  • le comparer à un délai prédéfini avec un comparateur,
  • retourner à l'adresse du programme de départ en cas d'inégalité (ie "boucles"),
  • sinon, définissez un signal spécialisé destiné à un commutateur externe plutôt qu’à la RAM.

Notez que tous ces éléments atteignent aujourd'hui un degré élevé de sophistication, et chaque phrase de ce très bref aperçu mérite plusieurs cahiers d'explications.

Yves Daoust
la source
-1

Il existe plusieurs façons d’effectuer une fonction de délai ou de convertir les données binaires en données décimales ou en puissance du signal. Lorsque vous entrez la valeur "15", l’ordinateur affiche une image bitmap du nombre 15 à l’écran. C'est en fait la valeur binaire, à l'heure actuelle, le code binaire de votre clavier est également envoyé à l'unité centrale de traitement. Il analysera les données, puis retournera le code en unité de traitement ALU (unité arithmétique et logique) pour le convertir en impulsion sur puce DAC. Le signal analogique contrôle maintenant la fréquence (la fréquence de khz à hz) d’un circuit à bascule. Maintenant, la sortie de fréquence sera dirigée vers la RAM, et la RAM de lecture du processeur sera identique si les données sont "1111". Donc ça fait 4 secondes.

Lan ...
la source
Je ne sais pas comment cela répond à la question.
Yuval Filmus
vous pouvez voir qu'il a demandé comment l'ordinateur clignotait pendant 15 secondes, et j'explique comment l'ordinateur crée la deuxième valeur à utiliser en boucle.
Lan ...