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 :
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.
- 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.
- 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.
- 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.