HISTOIRE DES UNITES CENTRALES DES ORDINATEURS
2002, 2006 Jean Bellec
en construction
Je pensais au dbut dcrire l'volution des processeurs mais il m'a sembl prfrable d'y adjoindre au moins partiellement les volutions des architectures des mmoires principales et des canaux d'entres-sorties, ainsi que les volutions de l'architecture sous l'angle de vue du concepteur de processeurs. *** Les ordinateurs sont largement les descendants des calculatrices numriques capables d'effectuer une opration sur des nombres introduits par l'oprateur ou stocks dans des registres. L'utilisation de circuits lectroniques pour replacer les mcanismes d'horlogerie ou la logique relais permit de faire des oprations lmentaires beaucoup plus vite qu'auparavant. Si de nombreuses applications de gestion pouvaient se contenter de ces oprations (addition, soustraction, multiplication, pourcentage), beaucoup d'applications militaires et scientifiques ncessitaient l'excution d'un algorithme c'est dire d'une squence d'instructions. La puissance des calculateurs capables d'excuter des squences d'instructions fut dmontre par Alan Turing avant mme l'avnement du premier ordinateur. Les calculatrices programme enregistr (y compris les programmes par cartes et les automates) ont comme lment principal des instructions qui spcifient la commande excuter et les oprandes concerns par cette commande (en gnral des registres de calcul). La commande peut tre spcifie dans l'instruction sous forme dcode comprenant un bit par porte valider dans les circuits de commande des alimentations d'oprandes ou des oprateurs, solution gagnant du temps, mais gnralement onreuse ou sous forme code, solution gnralement employe mais prenant le temps de la dcodification. La nature des oprandes dpendait des applications. Les applications de statistiques et de comptabilit ncessitaient essentiellement des oprations sur des nombres reprsents extrieurement sous forme d'un ensemble discret de chiffres; elles avaient par ailleurs se proccuper de faire des oprations (comparaison) sur des libells cods en alphanumrique . Les applications scientifiques et techniques recherchaient des oprations rapides favorises par une reprsentation binaire des nombres. Deux problmes aux solutions assez largement contradictoires se sont poss aux designers pendant les annes 1950: la diminution du cot des machines et l'augmentation de leurs performances. La rduction de cot semblait devoir tre atteinte par une architecture "srie" pouvant se contenter d'oprateurs sur un seul bit. Quelques registres de travail toujours disponibles, des mmoires d'accs srie bases sur des tambours magntiques ou des lignes retard conduisaient une architecture simple et relativement conomique. Cependant, les machines mcanographiques taient dj des machines parallles (sur 12 ou 80 bits) et le traitement par l'ordinateur ncessiterait des conversions parallle/srie et srie/parallle, et par ailleurs une machine srie tait par construction au moins un ordre de grandeur plus lente qu'une machine parallle. Des compromis entre ces deux architectures furent raliss comme les machines dont le paralllisme tait limit un caractre, solution fort rpandue en 1960 et qui reprsentait un bon compromis pour les machines de gestion. Si certaines calculatrices lectroniques initiales excutaient leurs
oprations en tant synchronises par une source mcanographique extrieure, on
constata assez tt que la mise au point de sries de calculateurs asynchrones
prsentait de grandes difficults en particulier dues la variation des
caractristiques physiques des composants lectroniques (tubes et semi-conducteurs) et
on imagina de synchroniser intrieurement l'ordinateur par une horloge interne ou plus
exactement un oscillateur de synchronisation des oprations (on disait parfois
unification). Cet oscillateur (gnralement contrl par un simple circuit RC tait
assez facilement rglable et le ralentissement de l'horloge pouvait tre une solution
une certaine fatigue de composants). Le dveloppement de calculateurs entirement ou
partiellement asynchrones resta un sujet de discussion. La synchronisation par horloge
alignait les performances sur les oprateurs les plus complexes et les composants les
plus douteux, elle introduisait des retards intrinsques dans la machine. Cependant, la
plupart des designs de processeurs asynchrones -et chaque constructeur en a tudi, se
traduisirent par des checs traumatisants qui dcouragrent la recherche de meilleures
options de conception de telles machines. L'analyse des algorithmes conduisit immdiatement au souci de dfinir des instructions conditionnelles excuter en fonction de la valeur des rsultats des oprations prcdentes. Il tait relativement facile raliser des indicateurs de rsultats partir de l'oprateur de calcul (indicateur de report -carry- et indicateur de signe). Un indicateur d'identit souvent cod avec les deux premiers compltaient les registres de la machine, plus ou moins cachs au programmeur. Au dbut, une des solutions pour assurer l'enchanement des instructions d'un mme algorithme fut de prolonger le mot d'instructions par l'adresse de l'instruction suivante. Cette approche permettait de ranger l' instruction suivante sur le tambour une distance variable dpendant de la dure d'excution de l'instruction en cours. Cependant, cette solution tait encombrante et on lui prfra la solution du compteur d'instruction (program counter) qui contient en permanence l'emplacement de l'instruction suivante gnralement conscutive celui de l'emplacement en cours. Dans les ordinateurs instructions de longueur constante, ce compteur est incrment de 1 mot par cycle, dans le cas o les instructions sont de longueur variable (ex: S/360) ce compteur est incrment de la longueur de l'instruction. Les instructions conditionnelles et les instructions rptes (boucles ou itrations) sont ralises le plus souvent par une instruction de chargement du compteur d'instructions (JUMP ou BRANCH). Un grand dbat l'origine des ordinateurs qui se poursuit jusqu' aujourd'hui a t celui de la banalisation de la mmoire entre programmes et donnes. L'architecture banalise dite de von Neumann triompha au milieu des annes 1950, par suite de la similitude des deux lments, similitude augmente par la programmation automatique. Il tait galement considr comme primordial de pouvoir modifier dynamiquement les instructions pour pouvoir adresser des donnes diffrentes (ex: tableaux de variables) avec les mmes instructions. D'autres considrations de micro-optimisation (stockage de constantes) militaient aussi pour cette uniformisation de la mmoire. Il faut noter que des alternatives la modification dynamique des programmes pour la gestion des tableaux furent fournis par la mise au point des registres d'index et par l'tablissement de l'adressage indirect qui permettaient de dsigner une mmoire contenant non pas les donnes mais l'adresse des donnes. Plus tard, se rajoutrent la possibilit de cascader plusieurs registres d'index ou des descripteurs indirects. Il arriva sur des machines des annes 1960 que la dure de prparation des instructions devenait impossible prvoir et qu'il devint ncessaire de prendre des prcautions contre la possibilit de programmer des instructions sans fin avec de tels mcanismes.
|
La mmoire a t du temps des mmoires tambours ou des tubes de
Williams adresse par l'adresse physique (n de tte, n de mots sur la piste), puis
avec la gnralisation des mmoires tores, les positions de mmoire (mots de 1 ou
plusieurs caractres ou chanes de bits de longueur fixe) furent dsigns par des
adresses de valeur continues. Un autre dbat rgna entre les partisans d'un adressage binaire et ceux d'un adressage dcimal. Les seconds arguaient de la disponibilit d'un additionneur dcimal qui pouvait tre rutilis pour les calculs d'adresse ainsi que d'une meilleure lisibilit externe des valeurs d'adressage. Les premiers firent triompher leur point de vue ds la fin des annes 1950 et dfinitivement quelques annes plus tard en montrant la plus grande simplicit de l'unit de commande d'adressage. Une controverse qui dura plus longtemps (et dure encore) fut le choix entre faire les oprations arithmtiques directement sur la mmoire ou de les limiter des oprations sur des registres. La seconde thorie, qui permettait d'utiliser des zones d'adressage plus courtes pour les oprations arithmtiques, fut mme pousse l'extrme dans les machines piles o la position des oprandes tait implicite. Seules des oprations de lecture ou d'criture en mmoire principale citaient des adresses compltes. L'autre dbat concernait le nombre d'oprandes explicites cites dans une instruction. Certains estimaient que la logique des instructions du type " c=a + b" sous-entendait l'usage d'instructions 3 adresses. D'autres estimaient suffisant le nombre de 2 adresses explicites, les partisans des machines piles se contentaient de 0 ou une seule adresse. Lors de la conception de la srie S/360, IBM estima ncessaire de ne pas faire de dcisions optimales pour une seule machine mais simultanment sur toute une gamme de produits de puissances et d'usages diffrents. Pour rsoudre le problme de la longueur d'adressage, la S/360 tablit l'usage d'un registre de base (second registre d'index) qui contenait une adresse de 24 bits (soit 16 millions d'octets) associ une syllabe d'adresse rduite 12 bits (4Ko) ainsi qu' des registres d'index galement sur 24 bits. Une des caractristiques importantes gouvernant le cot et les performances d'un processeur est la largeur du chemin de donnes. Nous avons vu plus haut le naissance des ordinateurs srie (chemin de donnes sur 1-bit) et ordinateurs parallles (chemins de donne sur 1 mot). On s'est aperu au dbut des annes 1960, qu'il n'tait pas obligatoire d'aligner la taille des chemins de donnes sur celle des registres de mots d'instruction, ni sur celle des registres de calcul, ni mme de celle de l'unit arithmtique. Il tait possible de rduire le chemin de donnes au dpens des performances en transmettant successivement des portions de mots (par exemple chaque caractre) ou bien au contraire de transmettre simultanment en parallle des entits comportant plusieurs mots de faon librer plus tt l'entit mettrice. C'est sur cette particularit que se sont fondes les lignes de produits compatibles comme la srie 360. Les transferts de donnes peuvent se faire l'unit ou en blocs. Le transfert par bloc de plusieurs units de transfert permet de dsigner seulement l'adresse de la premire et le nombre d'unit transfrer, ce qui ne ncessite que seule opration de synchronisation pour l'ensemble du bloc. Ce mcanisme permet de gagner des performances en anticipant le besoin en donnes ou programmes, un moindre cot qu'une augmentation de la largeur des chemins de donnes, spcialement pour les transferts longue distance (entre armoires dans les annes 1950, en sortie de la puce aujourd'hui). Les transferts sous forme de blocs ncessitent toutefois des mmoires tampons additionnelles puisque les informations transfres ne sont pas immdiatement utilises comme donnes ou comme instructions par le processeur. *** On peut distinguer trois tapes dans l'histoire de la conception des units centrales:
Chacune de ces tapes reprsente des dveloppements complexes et coteux qui ne reprsentaient que des amliorations relativement minimes (de l'ordre de 2x) sur les performances de la gnration prcdentes. L'adoption de ces concepts a t freine par les amliorations technologiques qui ont permis la rduction des distances entre transistors et la baisse de cot de processeurs de la gnration prcdente. Le dveloppement du multiprocessing d'abord et du multi-cores actuellement a lui aussi retir de l'intrt une volution de la structure interne du processeur. La progression dans les tapes prcdentes n'a t possible que grce la technologie qui a permis un largissement considrable des chemins de donnes et la cration conomique de caches -structures rgulires consommant peu de surface-. IL reste encore quelque challenges:
|