Elements d’architecture

Historique

Besoin de calculer, d’effectuer des opérations répétitives de plus en plus complexes qu’un humain est apte à décrire, mais pas à effectuer efficacement.

-1000 boulier (Chine) mémorisation des nombres aide pour effectuer additions
1640

Pascaline

progrès ultérieurs

mémorise un nombre effectue l’addition (propagation retenue)

addition, multiplication

1740 machines à tisser motif programmé sur carte perforée
1940 machines Zuse calculs programmables

Au cours du 19è siècle et du début du 20è siècle, nombre de machines spécialisées de plus en plus complexes sont construites (factorisation).

Idée fondamentale : si une machine est capable d’effectuer un certain nombre
très réduit d’opérations élémentaires choisies selon l’état d’une mémoire, et que ces opérations peuvent elles-même modifier le contenu de la mémoire, cette machine peut effectuer n’importe quelle opération complexe.

NB/ analogie avec le développement des smartphones versatiles.

Machine de Von Newmann

image

cycle de Von Newmann

Un compteur noté PC contient l’adresse de l’instruction à effectuer par le processeur.

  1. Lire l’instruction à l’adresse PC
  2. Exécuter l’instruction
  3. Ajouter 1 à PC
  4. recommencer à 1.

Ce cycle très simple opérant sur une mémoire qui contient à la fois instructions et données permet d’effectuer n’importe quelle opération, y compris les plus complexes.

exemple

On considère l’état de mémoire suivant, en exécuter les instructions.

1  -- GET 8
2  -- PUT 10
3  -- GET 9
4  -- PUT 8
5  -- GET 10
6  -- PUT 9
7  -- JUMP 11
8  -- 18
9  -- 14
10 -- 0
11 -- STOP

Avec un processeur au jeu d’instructions plus évolué, on pourrait réduire ce programme à

1 -- SWAP 3 4
2 -- STOP
3 -- 18
4 -- 14
5 -- END

langages, compilateurs

On appelle assembleur le langage constitué des instructions directement exécutées par le processeur (rendues humainement lisibles en donnant à chacune un nom).

Afin d’éviter l’écriture fastidieuse de programmes comme ci-dessus, très vite on a utilisé l’ordinateur pour générer les suites d’instructions machine permettant d’effectuer des tâches usuelles : naissance du couple langage de programmation/compilateur.

Le compilateur est un programme qui transforme une donnée constituée d’instructions complexes facilement compréhensibles par un humain, en suite d’instructions machines directement exécutables par le processeur.

Par exemple, le langage C permet d’écrire

int main() {
  int a,b;
  a = 3;
  b = 5;
  while(b!=0) {
    int q,r;
    q = a / b;
    r = a % b;
    a = q;
    b = r;
  }
  return a;
}
  

ce que le compilateur gcc transforme en

	.section	__TEXT,__text,regular,pure_instructions
	.globl	_main
	.align	4, 0x90
_main:
Leh_func_begin1:
	pushq	%rbp
Ltmp0:
	movq	%rsp, %rbp
Ltmp1:
	movl	$3, -12(%rbp)
	movl	$5, -16(%rbp)
	jmp	LBB1_2
LBB1_1:
	movl	-12(%rbp), %eax
	movl	-16(%rbp), %ecx
	cltd
	idivl	%ecx
	movl	%eax, -20(%rbp)
	movl	-12(%rbp), %eax
	movl	-16(%rbp), %ecx
	cltd
	idivl	%ecx
	movl	%edx, -24(%rbp)
	movl	-20(%rbp), %eax
	movl	%eax, -12(%rbp)
	movl	-24(%rbp), %eax
	movl	%eax, -16(%rbp)
LBB1_2:
	movl	-16(%rbp), %eax
	cmpl	$0, %eax
	jne	LBB1_1
	movl	-12(%rbp), %eax
	movl	%eax, -8(%rbp)
	movl	-8(%rbp), %eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	popq	%rbp
	ret
Leh_func_end1:

	.section	__TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame0:
Lsection_eh_frame:
Leh_frame_common:
Lset0 = Leh_frame_common_end-Leh_frame_common_begin
	.long	Lset0
Leh_frame_common_begin:
	.long	0
	.byte	1
	.asciz	 "zR"
	.byte	1
	.byte	120
	.byte	16
	.byte	1
	.byte	16
	.byte	12
	.byte	7
	.byte	8
	.byte	144
	.byte	1
	.align	3
Leh_frame_common_end:
	.globl	_main.eh
_main.eh:
Lset1 = Leh_frame_end1-Leh_frame_begin1
	.long	Lset1
Leh_frame_begin1:
Lset2 = Leh_frame_begin1-Leh_frame_common
	.long	Lset2
Ltmp2:
	.quad	Leh_func_begin1-Ltmp2
Lset3 = Leh_func_end1-Leh_func_begin1
	.quad	Lset3
	.byte	0
	.byte	4
Lset4 = Ltmp0-Leh_func_begin1
	.long	Lset4
	.byte	14
	.byte	16
	.byte	134
	.byte	2
	.byte	4
Lset5 = Ltmp1-Ltmp0
	.long	Lset5
	.byte	13
	.byte	6
	.align	3
Leh_frame_end1:


.subsections_via_symbols

Architecture générale

Le processeur, au centre, est connecté par les communications à la mémoire et à diverses interfaces.

  • cpu
  • carte-mère : bus et contrôleurs
  • interfaces :
    • mémoire
      • cache de niveaux 1, 2, 3
      • RAM
      • ROM
    • stockage
      • disque dur
      • lecteur DVD
    • périphériques d’entrée
      • clavier, souris
      • scanner
      • port ethernet
    • périphériques de sortie
      • écran
      • carte son
      • imprimante
      • port ethernet

Quelques détails

Depuis les années 50, le fonctionnement des machines est entièrement binaire, c’est-à-dire codé à l’aide de 0 et de 1. En effet,

  • on peut tout faire avec ce système
  • c’est le plus simple à manier électroniquement (courant ou pas).

On appelle bit un chiffre binaire, qui vaut donc 0 ou 1.

On appelle mot un groupe de bits : les mots de 8 bits sont appelés octets, la machine opère souvent sur des mots de 32 ou de 64 bits.

processeur

  • circuit électronique très complexe constitué de transistors (3 pattes, l’une commande le passage ou non du courant entre les deux autres)

    Des groupes de transistors constituent des unités effectuant des opérations précises sur les instructions : unités arithmétiques, logiques, de contrôle, d’entrée-sortie...

  • horloge qui cadence la progression des opérations, pour que les tâches soient effectuées en synchronisation (ex: attendre la propagation d’une retenue).

Fréquence en Hertz.

mémoire

Grande liste de bits, organisés en mots, puis en blocs, un peu comme un grand dossier avec des tiroirs, des classeurs, des cahiers, des pages. Chaque mot a une adresse.

Une suite de mots peut représenter des instructions, des programmes, des images,...

Taille en octets.

  • mémoire RAM
    • de l’ordre du Go
    • rapide (dizaine de cycles pour y accéder), on peut y lire et y écrire
    • elle perd son contenu quand on éteint la machine
  • mémoire cache
    • de l’ordre du Mo
    • extrèmement rapide, utilisée par la processeur pour les intructions et données en cours de traitement

bus de communication

ensemble de fils parallèles par lesquels transitent le courant constituant les informations

  • bus de contrôle
  • bus de données

Remarque : avec ces principes, il n’y a pas d’obstacle à faire un ordinateur en lego fonctionnant avec des billes, ou avec un liquide dans des canaux. La vitesse de propagation des électrons permet d’atteindre les vitesses de l’ordre du milliard d’instructions par seconde.

Documents