Introduction
L'invention des ordinateurs est moderne (seconde guerre mondiale), et avec elle, celle de l'informatique. Il y là quelque chose de surprenant car il existait des machines intelligentes bien avant et qu'une notion centrale en informatique comme celle d'algorithme est probablement apparue en même temps que les mathématiques (ex. : le théorème de Thales est un algorithme). Et pourtant ordinateurs et informatique sont des constructions qui n'ont pas un siècle. Si l'on considère les machines à calculer, par exemple, les ordinateurs ne se distinguent pas de ces machines intelligentes si l'on considère les technologies employées pour les réaliser (ou qui auraient permis de les réaliser). Le cours d'architecture des ordinateurs commencera donc par une partie qui pourrait être commune à un cours sur l'architecture des calculatrices. Il montrera comment quelques assemblages électroniques simples (en employant la technologie qui a trait aujourd'hui, mais les premiers ordinateurs employaient d'autres technologies) permettent d'obtenir des machines virtuelles réalisant n'importe quel algorithme spécifique que l'on voudrait mettre en œuvre. Ce qui va distinguer ordinateurs et calculatrices et introduire une nouvelle ère de machines intelligentes, c'est le choix de l'algorithme spécifique mis en œuvre par cette machine, le choix de la machine virtuelle réalisée. Cette partie de la machine est tangible (physique) et non modifiable, elle fige les comportements possibles à venir de la machine virtuelle réalisée. Dans le cas d'une calculatrice, ces algorithmes embarquées sont ceux de l'addition et de la multiplication [...], et la machine virtuelle produite correspond à l'idée que l'on se fait d'une calculatrice : une machine capable de faire addition et multiplication. Son comportement est figé dans la production des sommes et produits des nombres saisis. Pour l'ordinateur, la couche physique de l'ordinateur ne fige pas moins le comportement de la machine virtuelle réalisée, mais le choix de l'algorithme mis en œuvre est substantiellement différent : cet algorithme consiste à recevoir la description d'un algorithme quelconque pour l'exécuter. C’est un algorithme qui travaille sur des algorithmes. Et cela donne au final une machine universelle, l’algorithme en entrée de la machine virtuel étant quelconque. Dans ce passage d'un traitement de données numériques à un traitement de données symboliques ou d'informations, il y a l'une des ruptures qui mène à l'informatique. L'ordinateur est donc une machine capable d'exécuter des algorithmes décrits chacun selon un formalisme fixe, spécifique lié à l'ordinateur, dont le comportement sera, à un niveau, toujours le même : exécution d'un algorithme quelconque décrit en entrée, mais qui semblera, à un autre niveau, celui lié à cet algorithme quelconque. Ce qui explique l'un des mystères des ordinateurs : comment ces machines peuvent changer de comportement sans avoir changer physiquement. La description des algorithmes exécutés par un ordinateur devra se faire selon un formalisme fixe lié à l'algorithme réalisé par la machine, ce formalisme est organisé comme un langage : le langage machine. La définition de ce langage et de l'algorithme d'exécution de ce langage par l'ordinateur physique distingue ordinateurs et calculatrices, le cours d'architecture de ordinateur terminera en abordant ces éléments. Au delà, parmi les premiers algorithmes habituellement introduits dans un ordinateur se trouvent des définitions de nouvelles machines virtuelles appelées systèmes d'exploitation (ce qui fera l'objet d'un autre cours), qui elles également permettent la définition et l'exécution d'algorithme parmi lesquels on trouve de nouvelles machines virtuelles, etc. … ce qui définit l'ordinateur comme un empilement de machines virtuelles chacune définies dans un certains langages (interface avec la machine virtuelle de niveau inférieur) et définissant un nouveau langage (interface avec de nouvelles machines virtuelles de niveau supérieur). Ce modèle, en pile ou en couche, est courant en informatique ... Autre concept en œuvre ici, courant en informatique : la récursivité ...Ce cours tachera de montrer que l'informatique (science des algorithmes, des langages, de l'information et des ordinateurs) commence des ces premiers éléments (les premières couches physiques de l'ordinateur) et s'établit à travers une continuité entre matériel (partie tangible, non modifiable) et logiciel (partie intangible, modifiable) où continuellement se retrouvent les notions clés d'information, de langage et d'algorithmes.