0% ont trouvé ce document utile (0 vote)
43 vues21 pages

Programmation et Architecture COBOL

Ce document présente une introduction à l'architecture logicielle et matérielle des ordinateurs. Il décrit brièvement l'histoire des ordinateurs et de la programmation puis se concentre sur l'architecture des processeurs, le langage machine et l'assembleur.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues21 pages

Programmation et Architecture COBOL

Ce document présente une introduction à l'architecture logicielle et matérielle des ordinateurs. Il décrit brièvement l'histoire des ordinateurs et de la programmation puis se concentre sur l'architecture des processeurs, le langage machine et l'assembleur.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mise à jour: Février 2012 2

Architecture logicielle
Architecture et Programmation Applications
[Archi/Lycée]

http://fr.wikipedia.org/wiki/Langage_assembleur
Système d’Exploitation (OS)

Firmware Drivers Compilateur

Architecture matérielle

Nicolas Bredèche
Processeur(s) Mémoire Périphériques
Maître de Conférences
Université Paris-Sud Ressources bibliographiques utilisées pour ce cours :

- Polycopié de cours de E.Viennet (Univ. Paris 13) Portes logiques, circuits


[email protected] - http://wikipedia.com
- Patt, Patel. Introduction to Computing Systems: from bits and gates to C and
beyond. McGraw Hill Int. Editions, 2001. Cours 1
Electronique et câblage

Architecture de Processeur
3
Architecture logicielle

Applications
Architecture de Processeur
Système d’Exploitation (OS) Micro-architecture
Firmware Drivers Compilateur Logique numérique

Architecture matérielle
Cours 2 • Architecture externe de processeur «Instruction Set Architecture (ISA)»
• Spécification fonctionnelle pour le programmeur
Processeur(s) Mémoire Périphériques
• Eléments:
‣ Jeu d’instructions
Portes logiques, circuits ‣ Registres visibles
Cours 1 ‣ Organisation de la mémoire
Electronique et câblage
‣ Organisation des E/S
5 6

Objectif du module

• Acquérir un...
• Savoir
‣ Architecture du point de vue de la programmation
‣ Langage machine
‣ Langage assembleur
• Savoir faire
‣ Ecrire un programme en assembleur

source: David Paterons (depuis: M.Younis, CMCS 611)

Plan du Cours #2

• Architecture, Langage Machine, Assembleur


• Un peu d’histoire Brève histoire des ordinateurs
• Architecture de processeur et de leur programmation
• Langage Assembleur
• Assembleur et Vie Artificielle
9 10

La pascaline (1643) Métier à tisser Jacquard (1805)


addition, soustraction, conversion utilisation de cartes perforées

source: wikipedia

source de l’image: http://www.info.univ-angers.fr/~richer/ source: ?

11 12

Machine de Babbage (1833) Enigma (~1920)


Ada Lovelace, première programmeuse du monde? Machine électro-mécanique pour le chiffrement

http://www.charlesbabbage.net/ source: wikipedia


13 14

ENIAC (1946)
Les premiers ordinateur à tubes

Description du premier calculateur universel programmable

source: wikipedia

15 16

EDVAC (1948) UNIVAC (1951)


Adoption de l’architecture von Neumann abandon de la carte perforée pour la cassette

source: wikipedia source: wikipedia


17 18

IBM 701 (1952) Historique 1/2


calcul scientifique, pour l’armée
• 1946-1956 : Les ordinateurs à tubes
‣ ENIAC, EDVAC, EDSAC, Mark 1, Univac, IBM 701
‣ adoption de l’architecture von Neumann
• 1956-1963 : Les ordinateurs à transistors
‣ le transistor est inventé en 1947
‣ 1955: microprogrammation et jeu d’instructions
• 1963-1971 : Les circuits intégrés
‣ circuit intégré, inventé en 1958
‣ miniaturisation (permet la naissance du mini-ordinateur)
• 1971-...? : Le micro-processeur
console opérateur processeur
‣ on passe d’une histoire basée sur le matériel à une histoire
basée sur le niveau des langages de programmation

source: wikipedia

19 20

Historique 2/2 Historique 2/2

• Perspective: langage de programmation •Perspective: langage de programmation


‣ première génération : codage machine direct en binaire ‣ première génération : codage machine direct en binaire
‣ deuxième génération : langage assembleur ‣ deuxième génération : langage assembleur
‣ troisième génération : langages évolués Chaque‣nouvelle
troisième génération
génération : langages évoluésn’efface pas la
de langage
- Fortran, COBOL, Simula, APL, etc. - Fortran,
précédente, mais s’empile sur lesAPL,
COBOL, Simula, précédentes
etc.
‣ quatrième génération : langages évolués de 2ème génération ‣ quatrième génération : langages évolués de 2ème génération
- Pascal, C++, SQL, etc. - Pascal, C++, SQL, etc.
- langages structurés, langages objets - langages structurés, langages objets
‣ cinquième génération : langages et IA [échec pour l’instant] ‣ cinquième génération : langages et IA [échec pour l’instant]
- lancé par le MITI au tout début des années 1980. - lancé par le MITI au tout début des années 1980.
- moteur d’inférence et Prolog - moteur d’inférence et Prolog
21

Synthèse

Architecture de Processeur
• Informatique = Information + Automatique
• Ordinateur
‣ Machine de traitement de l’information
‣ Récupérer, stocker et traiter de l’information
- texte, son, image, instructions
- codage sous forme binaire
source: wikipedia

23 24

• Point de vue de la machine


• Unité de commande
‣ lecture en mémoire et décodage des instructions:
• Unité de traitement (ou unité arithmétique et logique)
‣ exécute les instructions qui manipulent des données

• Point de vue du programmeur


• Un jeu d’instruction («Instruction Set Architecture» (ISA))
• +/- indépendant de l’implémentation
‣ Exemple: le jeu d’instruction x86 et les processeurs Intel

Polycopié d’Emmanuel Viennet (Univ. Paris 13)


25 26

Un jeu d’instructions Une instruction


opcode opérandes

• Types d’instructions
• Une instruction, c’est...
• calculs arithmétiques et logiques
‣ un «opcode» : son code opération
• écriture et lecture de données en mémoire ‣ un ou des opérande(s) : ses paramètre(s)
• transfert de contrôle (tests et branchements)
• Types d’architecture • Une instruction à un coût

• CISC, RISC • notion de cycles


‣ lien avec la complexité de l’opération (ex.: division > addition)
• la nature des instructions varie
‣ lien avec le type d’objet manipulé (registre plus rapide que mémoire)
‣ indépendant de la fréquence du processeur

27 28

Programme Illustration
• Un programme = des instructions élémentaires compréhensible pour
le programmeur

• actions très simples, exécutées par le processeur langage de haut niveau 3+1
‣ opérations simples, écrire/lire la mémoire, sauts conditionnels

• Langage Machine (LM)


• chaque instruction correspond à un code spécifique
assembleur ADD 3 1
• directement exécutable par le processeur

• Assembleur (ASM)
langage machine 00000001 00000011 00000001
• un langage de bas niveau, mais lisible
compréhensible par

• instructions: symboles mnémotechniques la machine

• conversion directe en LM (réversible)


Mais ou met on le résultat?... il s’agit d’un exemple pour «jouer»
29 30

Registres

Que permet de voir l’architecture de processeur?

• Les registres
‣ petites mémoires internes très rapides (notion de mot, dont la taille dépend du processeur)
exemple avec le
‣ le nombre de registres dépend de l’architecture
jeu d’instructions x86 ‣ le registre «accumulateur» stocke le résultat des opérations (ici: AX)
source: http://fr.wikipedia.org http://fr.wikibooks.org/wiki/Programmation_Assembleur_x86/Registres

31 32

La mémoire La mémoire (cont.)


• Quelques remarques sur la mémoire:
• 1 octet, c’est...
‣ 8 bits
‣ 1 byte (en anglais)
‣ conversions:
- 1 pétaoctet (Po) = 1 024 To = 2^50 octets
- 1 téraoctet (To) = 1 024 Go = 2^40 octets
- 1 gigaoctet (Go) = 1 024 Mo = 2^30 octets
- 1 mégaoctet (Mo) = 1 024 ko = 2^20 octets
• On peut lire OU écrire sur la mémoire
- 1 kilooctet ( ko ) = 1 024 octets = 2^10 octets
‣ pour lire, il faut une adresse (qui pointe sur un emplacement de 8 bits)
‣ pour écrire, il faut en plus une valeur (notion de mot, dont la taille dépend du processeur)
Polycopié d’Emmanuel Viennet (Univ. Paris 13)
33 34

Que fait l’unité de commande?

1 - lit l’instruction à exécuter


2 - effectue le traitement
3 - passe à l’instruction suivante
Polycopié d’Emmanuel Viennet (Univ. Paris 13)

36

Langage Machine
Assembleur
Assembleur

exemple avec le jeu d’instructions x86


Polycopié d’Emmanuel Viennet (Univ. Paris 13)
37 38

Architecture x86 simplifiée Segment de code et de données


• Registre CS (code segment)
‣ Le processeur lit le code à l’adresse CS:IP
‣ Le processeur maintient à jour la valeur de IP
- IP est initialisé par convention à l’adresse 100h

• Registre DS (Data Segment)


‣ Ce registre pointe sur les données du programme
‣ les instructions écrivent/lisent à l’adresse DS:<à définir>
- exemple: MOV AX, [0110]
} décomposable en deux
sous-registres de 8 bits

• Registre SS (Stack Segment)


‣ cf. transparent sur la pile
Polycopié d’Emmanuel Viennet (Univ. Paris 13)

39 40

Instructions Syntaxe d’affectation


• écriture et lecture de données en mémoire
‣ affectation mémoire vers registre (et l’inverse)

• calculs arithmétiques et logiques


‣ logique: et, ou, ...
‣ arithmétique simple: +,-,*,/
‣ arithmétique complexe: sin, cos, tan
‣ incrémentation, décrémentation, shift

• transfert de contrôle (tests et branchements)


‣ comparaison
‣ saut inconditionnel et sauts conditionnels
‣ appel de fonction
Polycopié d’Emmanuel Viennet (Univ. Paris 13)
41 42

Adressage Syntaxe d’adressage


• Adressage implicite opcode opérandes
‣ uniquement un code opération
‣ par exemple: «incrémenter AX» Adressage immédiat
• Adressage immédiat
‣ code opération + opérande
‣ par exemple: «ajouter <opérande> à AX» Adressage direct
• Adressage direct
‣ l’opérande contient une adresse mémoire
‣ par exemple: «écrire ds AX la valeur à l’adresse <opérande>» Adressage relatif
• Adressage relatif
‣ le code opération est une instruction de branchement
‣ par exemple: «si AX = 0 alors IP = <opérande>»
Polycopié d’Emmanuel Viennet (Univ. Paris 13)

43 44

Calcul logique Opérations arithmétiques

exemple
et aussi ROL, ROR, MUL, DIV...

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)
45 46

Branchement inconditionnel Branchements conditionnels


• Registre d’état
• Il est mis à jour pour certaines opérations
JMP <adresse> ‣ opérations arithmétiques
‣ instruction CMP (CoMPare)
‣ instructions STC (SeT Carry) et CLC (CLear Carry)
• Il contient les «indicateurs»
‣ Zero Flag (ZF)
‣ Carry Flag (CF)
‣ Sign Flag (SF)
‣ Overflow Flag (OF)
• Il n’est pas accessible directement
• Il est utilisé par les instructions de branchement
Polycopié d’Emmanuel Viennet (Univ. Paris 13)

47 48

Branchements conditionnels (cont.) La pile

mov AX, 0xA


push AX
mov AX, 0xB
push AX
pop
mov BX,AX
pop
push A push B pop pop

Il s’agit d’une pile «LIFO»


cf. registre SS (Stack Segment) et SP (Stack Pointer)
Polycopié d’Emmanuel Viennet (Univ. Paris 13)
49 50

Les interruptions

Deux exemples

Retour au DOS

51 52

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)
53 54

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)

55 56

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)
57 58

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)

59 60

Polycopié d’Emmanuel Viennet (Univ. Paris 13) Polycopié d’Emmanuel Viennet (Univ. Paris 13)
61 62

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)

63 64

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)
65 66

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)

67 68

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)
69 70

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)

71 72

Programme convertissant les majuscules en minuscules Programme convertissant les majuscules en minuscules

Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13) Astuce: forcer le 5ème bit à 0 permet de passer en minuscule (cf. table ASCII) Poly d’E.Viennet (Univ. Paris 13)
73

Synthèse
• Assembleur
• Assembleur et Langage Machine (bijectif)
• Un point de passage obligé
‣ compilation d’un langage de haut niveau au langage machine
• Et aussi...
• Optimisation... Vie Artificielle et Assembleur
‣ des opérations: réduire le nombre cycles
‣ des compilateurs: mieux traduire
• Machine virtuelle (ex.: Java)
‣ bytecode, portabilité, compilation à la volée
• Code embarqué, firmware
‣ mémoire, vitesse... mais moins facile à programmer

i/o buffer

Compétition pour accéder CPU


aux ressources

stack
AX
Le programme ancêtre
BX (extrait de Artificial Life, 1994, C. Adami)

CX
DX
finite memory (loop) registers
contains self-replicator programs 1. le programme “ancètre”
début - reproduction - procédure de copie - fin
un pointeur par programme
TIERRA 2. mutation possible lors de la duplication
Thomas Ray, 1988 3. The Reaper: supprime le plus vieux (ie. lent) si besoin de place (ressources CPU et mémoire limitée)

source: adami98
1.variantes de l’ancêtre 1.variantes de l’ancêtre
(en rouge) (en rouge)

[2]. apparition de parasites


(en jaune)

cf. http://life.ou.edu/ (images: Marc Cygnus) cf. http://life.ou.edu/ (images: Marc Cygnus)

1.variantes de l’ancêtre 1.variantes de l’ancêtre


(en rouge) (en rouge)

[2]. apparition de parasites [2]. apparition de parasites


(en jaune) (en jaune)

[3]. apparition d’hôtes immunisés [3]. apparition d’hôtes immunisés


(en bleu) (en bleu)

[4]. les hôtes immunisés se


multiplient.

cf. http://life.ou.edu/ (images: Marc Cygnus) cf. http://life.ou.edu/ (images: Marc Cygnus)
Propriétés émergentes

Fin du cours #2
TIERRA : les premiers parasites

• Dynamiques de l’évolution
• Course aux armements
• Equilibres ponctuées
• Phénomènes observés
• Compression, hôtes-parasites, symbioses
source: adami98

Vous aimerez peut-être aussi