introduction de Algorithme

Introduction a l’Algorithmique
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils. Ca, ce sont les caractéristiques de la magie. » - Dave Small
« C'est illogique, Capitaine » - Mr Spock
L’algorithmique est un terme d’origine arabe, comme algèbre, amiral ou zénith. Ce n’est pas une excuse pour massacrer son orthographe, ou sa prononciation.
Ainsi, l’algo n’est pas « rythmique », à la différence du bon rock’n roll. L’algo n’est pas non plus « l’agglo ».
Alors, ne confondez pas l’algorithmique avec l’agglo rythmique, qui consiste à poser des parpaings en cadence.
Avez-vous déjà ouvert un livre de recettes de cuisine ? Avez vous déjà déchiffré un mode d’emploi traduit directement du coréen pour faire fonctionner un magnétoscope ou un répondeur téléphonique réticent ? Si oui, sans le savoir, vous avez déjà exécuté des algorithmes.
Plus fort : avez-vous déjà indiqué un chemin à un touriste égaré ? Avez vous fait chercher un objet à quelqu’un par téléphone ? Ecrit une lettre anonyme stipulant comment procéder à une remise de rançon ? Si oui, vous avez déjà fabriqué – et fait exécuter – des algorithmes.
Comme quoi, l’algorithmique n’est pas un savoir ésotérique réservé à quelques rares initiés touchés par la grâce divine, mais une aptitude partagée par la totalité de l’humanité. Donc, pas d’excuses…
Un algorithme, c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné. Si l’algorithme est juste, le résultat est le résultat voulu, et le touriste se retrouve là où il voulait aller. Si l’algorithme est faux, le résultat est, disons, aléatoire, et décidément, cette saloperie de répondeur ne veut rien savoir.
Complétons toutefois cette définition. Après tout, en effet, si l’algorithme, comme on vient de le dire, n’est qu’une suite d’instructions menant celui qui l’exécute à résoudre un problème, pourquoi ne pas donner comme instruction unique : « résous le problème », et laisser l’interlocuteur se débrouiller avec ça ? A ce tarif, n’importe qui serait champion d’algorithmique sans faire aucun effort. Pas de ça Lisette, ce serait trop facile.
Le malheur (ou le bonheur, tout dépend du point de vue) est que justement, si le touriste vous demande son chemin, c’est qu’il ne le connaît pas. Donc, si on n’est pas un goujat intégral, il ne sert à rien de lui dire de le trouver tout seul. De même les modes d’emploi contiennent généralement (mais pas toujours) un peu plus d’informations que « débrouillez vous pour que ça marche ».
Pour fonctionner, un algorithme doit donc contenir uniquement des instructions compréhensibles par celui qui devra l’exécuter. C’est d’ailleurs l’un des points délicats pour les rédacteurs de modes d’emploi : les références culturelles, ou lexicales, des utilisateurs, étant variables, un même mode d’emploi peut être très clair pour certains et parfaitement abscons pour d’autres.
En informatique, heureusement, il n’y a pas ce problème : les choses auxquelles ont doit donner des instructions sont les ordinateurs, et ceux-ci ont le bon goût d’être tous strictement aussi idiots les uns que les autres.
Je consacre quelques lignes à cette question, car cette opinion aussi fortement affirmée que faiblement fondée sert régulièrement d’excuse : « moi, de toute façon, je suis mauvais(e) en algo, j’ai jamais rien pigé aux maths ». Faut-il être « bon en maths » pour expliquer correctement son chemin à quelqu’un ? Je vous laisse juge.
La maîtrise de l’algorithmique requiert deux qualités, très complémentaires d’ailleurs :
  • il faut avoir une certaine intuition, car aucune recette ne permet de savoir a priori quelles instructions permettront d’obtenir le résultat voulu. C’est là, si l’on y tient, qu’intervient la forme « d’intelligence » requise pour l’algorithmique. Alors, c’est certain, il y a des gens qui possèdent au départ davantage cette intuition que les autres.  Cependant, et j’insiste sur ce point, les réflexes, cela s’acquiert. Et ce qu’on appelle l’intuition n’est finalement que de l’expérience tellement répétée que le raisonnement, au départ laborieux, finit par devenir « spontané ».
  • il faut être méthodique et rigoureux. En effet, chaque fois qu’on écrit une série d’instructions qu’on croit justes, il faut systématiquement se mettre mentalement à la place de la machine qui va les exécuter, armé d'un papier et d'un crayon, afin de vérifier si le résultat obtenu est bien celui que l’on voulait. Cette opération ne requiert pas la moindre once d’intelligence. Mais elle reste néanmoins indispensable, si l’on ne veut pas écrire à l’aveuglette.
Et petit à petit, à force de pratique, vous verrez que vous pourrez faire de plus en plus souvent l’économie de cette dernière étape : l’expérience fera que vous « verrez » le résultat produit par vos instructions, au fur et à mesure que vous les écrirez. Naturellement, cet apprentissage est long, et demande des heures de travail patient. Aussi, dans un premier temps, évitez de sauter les étapes : la vérification méthodique, pas à pas, de chacun de vos algorithmes représente plus de la moitié du travail à accomplir... et le gage de vos progrès.
Quel rapport me direz-vous ? Eh bien le point commun est : quatre mots de vocabulaire.
L’univers lexical Shadok, c’est bien connu, se limite aux termes « Ga », « Bu », « Zo », et « Meu ». Ce qui leur a tout de même permis de formuler quelques fortes maximes, telles que : « Mieux vaut pomper et qu’il ne se passe rien, plutôt qu’arrêter de pomper et risquer qu’il se passe quelque chose de pire » (pour d’autres fortes maximes Shadok, n’hésitez pas à visiter leur site Internet, il y en a toute une collection qui vaut le détour).
L’ADN, qui est en quelque sorte le programme génétique, l’algorithme à la base de construction des êtres vivants, est une chaîne construite à partir de quatre éléments invariables. Ce n’est que le nombre de ces éléments, ainsi que l’ordre dans lequel ils sont arrangés, qui vont déterminer si on obtient une puce ou un éléphant. Et tous autant que nous sommes, splendides réussites de la Nature, avons été construits par un « programme » constitué uniquement de ces quatre briques, ce qui devrait nous inciter à la modestie.
Enfin, les ordinateurs, quels qu’ils soient, ne sont fondamentalement capables de comprendre que quatre catégories d'ordres (en programmation, on n'emploiera pas le terme d'ordre, mais plutôt celui d'instructions). Ces quatre familles d'instructions sont :
  • l’affectation de variables
  • la lecture / écriture
  • les tests
  • les boucles
Un algorithme informatique se ramène donc toujours au bout du compte à la combinaison de ces quatre petites briques de base. Il peut y en avoir quelques unes, quelques dizaines, et jusqu’à plusieurs centaines de milliers dans certains programmes de gestion. Rassurez-vous, dans le cadre de ce cours, nous n’irons pas jusque là (cependant, la taille d’un algorithme ne conditionne pas en soi sa complexité : de longs algorithmes peuvent être finalement assez simples, et de petits très compliqués).
Pourquoi apprendre l’algorithmique pour apprendre à programmer ? En quoi a-t-on besoin d’un langage spécial, distinct des langages de programmation compréhensibles par les ordinateurs ?
Parce que l’algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage. Pour prendre une image, si un programme était une dissertation, l’algorithmique serait le plan, une fois mis de côté la rédaction et l’orthographe. Or, vous savez qu’il vaut mieux faire d’abord le plan et rédiger ensuite que l’inverse…
Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme informatique. Cette dimension est présente quelle que soit le langage de programmation ; mais lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit en plus se colleter les problèmes de syntaxe, ou de types d’instructions, propres à ce langage. Apprendre l’algorithmique de manière séparée, c’est donc sérier les difficultés pour mieux les vaincre.
A cela, il faut ajouter que des générations de programmeurs, souvent autodidactes (mais pas toujours, hélas !), ayant directement appris à programmer dans tel ou tel langage, ne font pas mentalement clairement la différence entre ce qui relève de la structure logique générale de toute programmation (les règles fondamentales de l’algorithmique) et ce qui relève du langage particulier qu’ils ont appris. Ces programmeurs, non seulement ont beaucoup plus de mal à passer ensuite à un langage différent, mais encore écrivent bien souvent des programmes qui même s’ils sont justes, restent laborieux. Car on n’ignore pas impunément les règles fondamentales de l’algorithmique… Alors, autant l’apprendre en tant que telle !
Bon, maintenant que j’ai bien fait l’article pour vendre ma marchandise, on va presque pouvoir passer au vif du sujet…
Historiquement, plusieurs types de notations ont représenté des algorithmes.
Il y a eu notamment une représentation graphique, avec des carrés, des losanges, etc. qu’on appelait des organigrammes. Aujourd’hui, cette représentation est quasiment abandonnée, pour deux raisons. D’abord, parce que dès que l’algorithme commence à grossir un peu, ce n’est plus pratique du tout du tout. Ensuite parce que cette représentation favorise le glissement vers un certain type de programmation, dite non structurée (nous définirons ce terme plus tard), que l’on tente au contraire d’éviter.
C’est pourquoi on utilise généralement une série de conventions appelée «  pseudo-code », qui ressemble à un langage de programmation authentique dont on aurait évacué la plupart des problèmes de syntaxe. Ce pseudo-code est susceptible de varier légèrement d’un livre (ou d’un enseignant) à un autre. C’est bien normal : le pseudo-code, encore une fois, est purement conventionnel ; aucune machine n’est censée le reconnaître. Donc, chaque cuisinier peut faire sa sauce à sa guise, avec ses petites épices bien à lui, sans que cela prête à conséquence.
Comme je n’ai pas moins de petites manies que la majorité de mes semblables, le pseudo-code que vous découvrirez dans les pages qui suivent possède quelques spécificités mineures qui ne doivent qu’à mes névroses personnelles.
Rassurez-vous cependant, celles-ci restent dans les limites tout à fait acceptables.
En tout cas, personnellement, je les accepte très bien.

Archi

Architecture des ordinateurs

les circuits asynchrones

De la représentation des données à l'électronique



On a vu que toutes les données étaient numériques dans un ordinateur, et finalement représentées par des suites de 0 et de 1. Cela vient en partie du succès de l'électronique numérique, surtout depuis l'invention des transistors. La valeur logique 1 est représentée par un potentiel électrique « haut », par exemple 2 volts, et la valeur logique 0 par un potentiel « bas », par exemple 0 volt. Selon la technologie utilisée, la différence entre les deux potentiels pourra être plus grande ou moins grande.

Assemblage de transistors

Un processeur contient un certains nombre de circuits capables de réaliser des calculs en binaire : addition, soustraction, ... ou certaines manipulations sur des données (des décalages par exemple). Nous allons voir dans ce chapitre comment de tels circuits peuvent être réalisés par des assemblages de transistors.

Microélectronique ou informatique

Ce chapitre est à la croisée des chemins entre deux matières : la microélectronique et l'informatique, qui étudient toutes deux le fonctionnement du transistor. Nous garderons toutefois le point de vue de l'informaticien qui ne va s'intéresser qu'au comportement logique du transistor. Nous ne nous intéresserons pas à la consommation des transistors, à la réalisation pratique de ces transistors sous forme de masque, à leur effet capacitif, à l'évacuation de la chaleur, ...

Les transistors MOS

A la base des processeurs modernes, il y a le transistor MOS : un processeur n'est rien d'autre qu'un assemblage de transistors connectés par des conducteurs ! On peut réunir sur un processeur de moins de un centimètre carré des centaines de millions de transistors. Il existe deux types de transistor MOS : le transistor N et le transistor P qui ont des comportements complémentaires.
Remarque : La technologie MOS peut utiliser des potentiels hauts très variables. Nous choisirons ici une technologie de 2 volts.
  • Transistor N
TransistorN.gif
Le transistor NMOS (type N) est un circuit électronique ayant 3 points importants : la source notée S, le drain noté D et la grille notée G. Le comportement de ce circuit est le suivant : si la grille est reliée à un potentiel de 0 volt, alors la source et le drain seront électriquement isolés, on dit que le transistor est bloqué. Si la grille est reliée à un potentiel haut (2 volts) par exemple) il y aura conduction entre la source et le drain, on dit que le transistor est passant. Schématiquement il s'agit donc d'un interrupteur commandé par un signal électrique. Une contrainte supplémentaire propre à la technologie MOS est que le transistor de type N fait bien passer le 0 (depuis la source vers le drain), mais assez mal le 1.
  • Transistor P
TransistorP.gif
Le transistor PMOS (type P) est un circuit électronique ayant 3 points importants : la source notée S, le drain noté D et la grille notée G. Le comportement de ce circuit est le suivant : si la grille est reliée à un potentiel haut, alors la source et le drain seront électriquement isolés. Si la grille est reliée à un potentiel de 0 volt il y aura conduction entre la source et le drain. Le transistor de type P fait bien passer le 1 (depuis la source vers le drain), mais assez mal le 0.
  • La masse
La masse est reliée en permanence à un potentiel de 0 volt. Masse.gif
  • Le potentiel haut
Le potentiel haut est relié en permanence à un potentiel de 2 volts. PotentielHaut.gif
  • Traduction des potentiels hauts et de la masse
Lorsqu'un point du circuit est à un potentiel de 0 volt, on dira qu'il vaut la valeur binaire 0.
Lorsqu'un point du circuit est à un potentiel de 2 volts, on dira qu'il vaut la valeur binaire 1.

Synthèse de portes logiques

A partir des transistor N et P, de la masse et du potentiel haut, on peut réaliser des portes logiques. Toutes les portes logiques sont réalisables quelle que soit leur table de vérité. En pratique, la plupart des portes logiques ont un nombre d'entrées et de sorties raisonnables (moins de 5 en général). Nous allons étudier quelques portes logiques usuelles.

L'inverseur

Schéma :
Inverseur.gif
Notation :
Not-gate-en.svg
Un inverseur est un circuit avec une entrée A et une sortie B. Il est constitué deux 2 transistors comme sur le schéma.
  • Lorsque A sera à un potentiel de 0 volt, la grille du transistor P du haut sera reliée à un potentiel de 0 volt. Il y aura donc conduction entre la source et le drain de ce transistor. le point B sera donc relié au potentiel haut. Le transistor N du bas aura lui sa grille au potentiel 0 volt. Il n'y aura donc pas conduction entre la masse (source) et le point B (drain). B sera donc au potentiel haut.
  • Lorsque A sera à un potentiel haut, la grille du transistor P du haut sera reliée à un potentiel de 2 volts. La source et le drain de ce transistor seront donc électriquement isolés. Il n'y aura donc pas de conduction entre le point B et le potentiel haut. Le transistor N du bas aura lui sa grille au potentiel haut. Il y aura donc conduction entre la masse et le point B. B sera donc au potentiel de 0 volt.
  • Table de vérité
La table de vérité donne la valeur des sorties pour toutes les valeurs possibles des entrées.
Table de vérité :
AB
01
10

La porte NAND ou NON-ET

La sortie est l'inverse de celle d'une porte ET, donc elle n'est à zéro que si les deux entrées sont à 1.
Schéma :
NAND.gif ou Relay nand.svg
Notation :
Nand-gate-en.svg
Table de vérité :
ABS
001
011
101
110

La porte AND ou ET

Pour obtenir une porte ET (ou AND) on ajoute un inverseur à la sortie de la porte NAND.
Schéma :
Relay and.svg
Notation :
And.svg
ABS
000
010
100
111
La sortie est à 1 uniquement si A ET B sont à 1.

La porte NOR ou NON-OU

Inverse de la porte OU : la sortie n'est à 1 que si les deux entrées sont à 0.
Schéma :
NOR.gif ou Relay nor.svg
Notation:
Nor-gate-en.svg
Table de vérité :
ABS
001
010
100
110

La porte OR ou OU

Pour obtenir une porte OU (ou OR) on ajoute un inverseur à la sortie de la porte NOR. Ainsi la sortie est à 1 si A ou B est à 1 (ou les deux, on parle de OU inclusif)
Schéma :
Fichier:Or.gif ou Relay or.svg
Notation :
Or-gate-en.svg
ABS
000
011
101
111

La porte XOR

C'est le OU exclusif : la sortie est à 1 si une seule des deux entrées est à 1.
Schéma :
La sortie est vraie si A OU B est vrai et A ET B est faux. On peut donc construire une porte XOR avec une porte OR, deux porte AND et deux porte NOT.
Overzicht XOR.jpg
Notation :
Xor-gate-en.svg
Table de vérité :
ABS
000
011
101
110

La porte XNOR

C'est le OU exclusif inversé.
Schéma :
C'est une porte OU exclusif avec un inverseur à sa sortie.
Notation :
Xnor-gate-en.svg
Table de vérité :
ABS
001
010
100
111

Le multiplexeur (MUX 1 bit)

Si C vaut 1, la sortie vaut A, sinon la sortie vaut B.
Schéma :
MUX.gif
Table de vérité :
CABS
0000
0011
0100
0111
1000
1010
1101
1111
Notation :
MUX-2.gif

Additionneur 1 bit

Le schéma ci dessous est une porte logique à 3 entrées A,B et C et 2 sorties X et Y. Il est dû à H.T.Bui, Y.Wang et Y.Jiang. Le but est d'additionner les bits A, B et C.
FA-4.gif ou Full-adder.svg
Table de vérité :
CinABCoutS
00000
00101
01001
01110
10001
10110
11010
11111
On a la relation A+B+C=2R+S, R (Cout) est donc la retenue sortante. On peut dessiner un circuit un peu plus complexe à partir des portes vues plus haut :
  • R vaut 1 dès que deux entrées sont à 1 : (A AND B) OR (A AND C) OR (B AND C)
  • S vaut 1 si un nombre impair d'entrées est à 1 : (A XOR B) XOR C
Notation : (FA="Full Adder")
FA-1.gif

Assemblage de portes logiques de base

Une fois les différentes portes logiques synthétisées par des assemblages de transistors, il suffit d'assembler ces différentes portes logiques pour réaliser des circuits beaucoup plus complexes réalisant par exemple des opérations arithmétiques.

Additionneur base 2 sur 8 bits[modifier]

Additionneur-8bits.gif
Soit A et B deux entiers positifs en base 2 notés respectivement (A7 A6 A5 A4 A3 A2 A1 A0) et (B7 B6 B5 B4 B3 B2 B1 B0). On veut calculer la somme S=A+B.
S est sur 8 bits et est noté (S7 S6 S5 S4 S3 S2 S1 S0). Le bit C indique la validité du résultat : C=0 indique que le résultat est valide. C=1 indique que A+B n'est pas représentable en base 2 sur 8 bits car A+B>255.
Ce circuit comporte donc 16 bits en entrée en 9 bits en sortie.
L'intérêt de la représentation des entiers relatifs en complément à 2 est que le circuit est exactement le même pour leur addition, sans se soucier de leur signe. La seule différence est que C indique que le résultat calculé est négatif, et qu'il est un peu plus complexe de vérifier que le résultat est correct (qu'il n'y a pas eu de débordement).

Additionneur/soustracteur base 2 sur 4 bits

Fichier:Additionneur-soustracteur-4 bits.gif
Soit A et B deux entiers positifs en base 2 notés respectivement (A3 A2 A1 A0) et (B3 B2 B1 B0).
Le résultat S est sur 4 bits et est noté (S3 S2 S1 S0).
Si T=0 alors S=A+B et si T=1 alors S=A-B.
Le bit C indique la validité du résultat : C=0 indique que le résultat est valide. C=1 indique que le resultat n'est pas représentable.
Ce circuit comporte donc 9 bits en entrée et 5 bits en sortie.

Multiplexeur à 2 entrées sur 8 bits

MUX-8bits.gif
Soit A et B deux données sur 8 bits notées respectivement (A7 A6 A5 A4 A3 A2 A1 A0) et (B7 B6 B5 B4 B3 B2 B1 B0). Le bit en entrée C indique qu'on veut récupérer sur la sortie soit A soit B.
Le résultat S est sur 8 bits et est noté (S7 S6 S5 S4 S3 S2 S1 S0).
Si C=0 alors S=A et si C=1 alors S=B.

Ce circuit comporte donc 17 bits en entrée et 8 bits en sortie.

Multiplexeur à 4 entrées sur 8 bits

On peut le construire avec 3 multiplexeurs 2 entrées. Si les entrées sont A, B, C, D, le premier multiplexeur sélectionne soit A soit B, le deuxième soit C soit D, le troisième soit la sortie du premier, soit celle du deuxième.

Décaleur de 0 ou 1 bit sur 8 bits

Décaleur-8bits.gif
Soit A une données sur 8 bits notée (A7 A6 A5 A4 A3 A2 A1 A0) et C une entrée sur un bit. Le bit en entrée C indique s'il faut décaler A d'un bit vers la gauche ou non..
Le résultat S est sur 8 bits et est noté (S7 S6 S5 S4 S3 S2 S1 S0).
Si C=0 alors S=A et si C=1 alors S est obtenu en décalant tous les bits de A d'un bit vers la gauche.

Ce circuit comporte donc 9 bits en entrée et 8 bits en sortie.

Décaleur 4 bits - de 0 à 3 positions

Décaleurs 4 bits - 0 à 3 positions.gif
Soit A une données sur 4 bits notée (A3 A2 A1 A0) et C une entrée sur deux bits nots (C1C0). Le résultat S est sur 7 bits et est noté (S6 S5 S4 S3 S2 S1 S0).
S doit être égal à A décalé de C bits vers la gauche.

Ce circuit comporte donc 6 bits en entrée et 7 bits en sortie.

Additionneur à 3 entrées

Multiplieur à 2 entrées sur 4 bits

Toutes les fonctions booléennes peuvent être réalisées sous forme de circuit[modifier]

Les circuits précédents (additionneur, multiplexeur, ...) sont appelés circuits combinatoires, ou circuits fonctionnels. Ils réalisent une fonction (au sens mathématique) : la sortie est complètement déterminée par les valeurs des entrées, le circuit n'a pas de « mémoire », la sortie ne dépend pas du passé. En fait on peut réaliser comme cela n'importe quelle fonction booléenne. Étant donnée une table de vérité, on peut par exemple observer pour quelles valeurs des entrées la sortie vaut 1. Un réseau de portes ET (et des inverseurs) peut vérifier que les entrées correspondent à une ligne donnée de la table de vérité. On peut construire un tel réseau pour chaque ligne dont la sortie vaut 1. Il ne reste plus qu'à assembler ces réseaux avec des portes OU. Bien sûr, ce n'est pas très économique. On peut ensuite utiliser des simplifications. Cette démarche correspond à la forme normale disjonctive de la fonction booléenne.
De façon duale, on peut utiliser la forme normale conjonctive, on peut aussi observer seulement les lignes dont la sortie est 0. Pour en savoir plus sur la conception d'un circuit à partir de sa table de vérité, voir le wikilivre Électronique numérique : logique.



test to embed -

test to embed -

test to embed -

test to embed -


test to embed -
Plan de cours prévisionnel

Ce plan est donné à titre indicatif. Il est pourra être modifié au fil de l'avancement réel du cours.


test to embed -

 


 
test to embed - TD 1 - Échauffement - 

  • Numérations et changements de base
  • Arithmétique binaire
Feuille de TD 

Lien: Convertisseur binaire-décimal-hexadécimal

COURS 1 - Introduction - 

  • Bref historique
  • Architecture en couches: plan du cours
  • Couche circuits logiques
Transparents de cours - (4 par page) 

Liens: Histoire de l'informatique - Chronologie de l'informatique - Machine à différences 2

TD 2 - Codage de l'information - 

  • Codage des entiers
    • Entiers non signés
    • Entiers signés
    • Complément à 2
  • Codage des nombres flottants
  • Codage des caractères
  • Autre format numérique: images bitmap
Feuille de TD 

Lien: Convertisseur IEEE 754 (applet)

TD 3 - Portes logiques et premiers circuits - 

  • Circuits logiques
  • Fonctions booléennes
  • Tables de Karnaugh
Feuille de TD (3 et 4)

COURS 2 - Circuits logiques - 

  • Circuits combinatoires
  • Circuits arithmétiques
Transparents de cours - (4 par page) 

TD 4 - Circuits logiques (suite) - 


TD 5 - Circuits logiques non séquentiels - 

  • Circuits combinatoires
  • Circuits arithmétiques
Feuille de TD

COURS 3 - Structure de l'ordinateur - 

  • Circuits séquentiels
  • Mémoire
  • Machine de Von Neumann
  • Bus
Transparents de cours - (4 par page) 

TD 6 - Circuits séquentiels - 

  • Bascules
  • Horloge
  • Circuits à mémoire
Feuille de TD

TD de révisions - 


EXAM - 

formulaire (ne pas l'imprimer, il sera distribué lors de l'exam) 

COURS 4 - Couche micro-architecture - 

  • Chemin des données
  • Boucle d'exécution des micro-instructions
  • Micro-instructions
  • Pipeline
  • Cache
Transparents de cours - (4 par page) 

TD 7 - Autour de la pile - 7 novembre 2012

  • Manipulation de la pile
  • Calculs à l'aide d'une pile
  • Instructions
TD 8 - Autour de la pile (suite) - 
Feuille de TD

COURS 5 - Couches ISA (et OS) - 

  • Retour sur le cache
  • Assembleur x86
  • Registres
  • Modes d'adressage
  • Instructions
Transparents de cours - (4 par page) 

Liens: Jeu d'instructions x86 - x86 WikiBook - Liste réduite d'instructions x86 (IUT Arles) - Règles de choix des opérandes pour les instructions NASM 

TD 9 - Couche ISA - 
  • Mémoire et modes d'adressage
  • Masques
  • Instructions de branchement
Feuille de TD

TP 1 - NASM et Insight (gdb) - .. novembre 2012




COURS 6 - Programmer en Assembleur - 


Transparents de cours - (4 par page) 

rayures.asm 

TP 2 - Assembleur - 

TP 3 - Assembleur - 

Feuille de TP 

Lien: Manuel NASM (chap. 3) - NASM en 64 bits

COURS 7 - De l'Assembleur aux langages "haut-niveau" - 

  • Fonctions
  • Variables locales
  • Tableaux
Transparents de cours - (4 par page) 

somme_rec.asm - somme.asm - tab_carres.asm - fibo.asm - majuscule.asm 

TP 4 - Assembleur - ..TP 5 - Assembleur - ..
Feuille de TP 

EXAM 

Programme: à partir du cours 4: La couche micro-architecture, jusqu'au dernier TP. 
Document fourni: la liste des instructions en assembleur x86.

Les Livres:

 LL
  • Architecture et technologie des ordinateurs de Paolo Zanella, Yves Ligier, Editeur: Dunod; Édition : 4e édition, 2005, Collection : Sciences Sup.
  • Architecture des ordinateurs de Jean-Jacques Schwarz, Editeur : Eyrolles, 2005.
  • Architecture de l'ordinateur de Emmanuel Lazard, Editeur : Pearson Education, 2009, Collection : Synthex
  • Architecture de l'ordinateur (1Cédérom) de Andrew Tanenbaum (Auteur), Editeur : Pearson Education; Édition : 5e édition,  Collection : INFORMATIQUE
  • Architecture des ordinateurs : Interfaces et périphériques, cours avec exercices corrigés de Philippe Darche, Collection : Passeport pour l'informatique
  • Architecture de l'ordinateur : Portes logiques, circuits combinatoires, arithmétique binaire, circuits séquentiels et mémoires, exemple d'architecture de Robert Strandh, Irène Durand, Editeur : Dunod,  Collection : Sciences Sup.
  • Architecture de l'ordinateur, Emmanuel Lazard, Pearson Education
  • Concevoir son microprocesseur, Jean-Christophe BUISSON, Ellipses

test to embed -






Les video des cours



  



http://r3---sn-5hn7su76.googlevideo.com/videoplayback?expire=1386552050&fexp=919122%2C932283%2C929202%2C916612%2C909717%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&burst=40&algorithm=throttle-factor&ipbits=0&sver=3&id=ef85c036330fac82&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&source=youtube&upn=ylc_u0bJiiQ&factor=1.25&key=yt5&itag=5&ip=2a02%3A2498%3Ae003%3A44%3A225%3A90ff%3Afea6%3A805a&signature=795E099876B7FDFC8A07C83B271845E3CC1D51C9.683D6FD2863BB1685B21589EAC293D88A69574EA&title=Cours+r%C3%A9seaux+-+4+(mac%2C+arp%2C+arping%2C+binaire%2C+bits%2C+octets%2C+hexad%C3%A9cimal)&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386527961&mv=m









http://r2---sn-5hn7su7e.googlevideo.com/videoplayback?upn=achsH1Z4B2I&itag=5&id=df4e2936bab50fac&fexp=919111%2C932277%2C916623%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&sver=3&expire=1386568601&key=yt5&ip=2a02%3A2498%3Ae002%3A88%3A225%3A90ff%3Afe7c%3Ab806&algorithm=throttle-factor&burst=40&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Cpcm2fr%2Csource%2Cupn%2Cexpire&source=youtube&pcm2fr=yes&ipbits=0&factor=1.25&signature=CF4DEE3C2FB86BD9CA72214BDC2CFDA5921BF1BD.306F08420190457E91EEDAC85CC17796E85C444C&title=Passer+des+entiers+en+binaire+-+Comprendre+comment+marche+Internet&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386546807&mv=m









http://r3---sn-5hn7su7k.googlevideo.com/videoplayback?ip=146.185.29.12&source=youtube&upn=7u94mq7jUSU&fexp=907720%2C913432%2C932237%2C919007%2C924616%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&itag=5&ipbits=0&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&id=bbf54ddc55a52885&expire=1386612057&factor=1.25&key=yt5&burst=40&algorithm=throttle-factor&sver=3&signature=422C4E195952256F67C62CCD152CCF57DF60A303.9A2F51C333EF3A561C408ED877566CDAFF7174B0&title=Lord+Richard+Rogers-+Architecture+and+the+Compact+City&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386588372&mv=m











http://r2---sn-5hn7su76.googlevideo.com/videoplayback?id=ffbe75d7cdd105f5&burst=40&algorithm=throttle-factor&ipbits=0&fexp=908415%2C904313%2C916626%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&sver=3&factor=1.25&key=yt5&ip=146.185.29.14&upn=ECuRqD7Pp7w&expire=1386612851&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&itag=5&source=youtube&signature=706266B166F37F4FE0E433CF53F8EB5F9C7A21AE.6EC0FD16A45CE60FD732469AF8635FF5625CD7C8&title=Synth%C3%A8se+de+circuit+et+code+de+Gray&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386588610&mv=m





http://r4---sn-5hn7su7e.googlevideo.com/videoplayback?id=6c4f9a147889e199&burst=40&key=yt5&factor=1.25&source=youtube&expire=1386567922&sver=3&ipbits=0&fexp=900359%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&algorithm=throttle-factor&itag=5&upn=K5cZmm5yFj0&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&ip=2a02%3A2498%3Ae002%3A88%3A225%3A90ff%3Afe7c%3Ab806&signature=CAF20C9A5A0DCADDA5F884F7C1CF89B9DCA9A658.B4205612FD3BE4646C68F22F231E2E95BE8A49D2&title=Ex%C3%A9cution+comment%C3%A9e+d'un+programme+au+niveau+Assembleur+et+en+dessous+m%C3%AAme&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386546913&mv=m










http://r13---sn-aigllnel.googlevideo.com/videoplayback?mv=m&ipbits=0&upn=tozRa8RpxwE&fexp=900161%2C924616%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&burst=40&expire=1386610941&id=9cfdf95ef8979429&mt=1386588758&algorithm=throttle-factor&ms=au&sver=3&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&source=youtube&itag=5&factor=1.25&key=yt5&ip=146.185.29.12&signature=6F741657D967AE57D3F91C65784F32C821B84D1D.3C6CB74D4357418BB75FAB5499D90FB395785834&title=Maroc+Les+microcontr%C3%B4leurs+PIC






http://r8---sn-5hn7su7r.googlevideo.com/videoplayback?algorithm=throttle-factor&id=6d54a4bebf3dce8a&expire=1386612688&fexp=923438%2C919122%2C913568%2C914027%2C916625%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&source=youtube&upn=xccWat1NfJA&ip=146.185.29.14&key=yt5&factor=1.25&ipbits=0&itag=5&burst=40&sver=3&signature=E1941950B58301FF30DB70901F566523A1F39278.942ECFBAC9B95B186774D1255276576BCA97E8F3&title=D%C3%A9mo+de+Procesim+(Microprocesseur%2C+Aut.+de+contr%C3%B4le%2C+%2C+Microprogrammation%2C+Arch.+de+Von+Neumann)&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386589031&mv=m







http://r6---sn-5hn7su7l.googlevideo.com/videoplayback?sver=3&source=youtube&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&factor=1.25&key=yt5&ip=146.185.29.11&itag=5&fexp=942000%2C932243%2C914005%2C929305%2C909717%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&upn=gxLo_wrgDKo&burst=40&algorithm=throttle-factor&ipbits=0&expire=1386611339&id=f712a9d511f5cb56&signature=A639A9A1030ECB0B3E593B811775C4BC7E68ADCB.5B2C363B352176E038C30A4F90851B63A1897AE9&title=demoARM0_converted.mp4&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386589393&mv=m





http://r7---sn-5hn7su7l.googlevideo.com/videoplayback?id=6283d10b1020015d&fexp=935620%2C918117%2C930813%2C916623%2C909717%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&upn=4-LbYR1i0wE&key=yt5&factor=1.25&sver=3&itag=5&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&source=youtube&expire=1386612445&algorithm=throttle-factor&burst=40&ipbits=0&ip=146.185.29.13&signature=3A1D856F2BA4EDA6BB3943E4EF4E52208A48362B.9C00EEE19F733E023950C4B3354E4258A8354628&title=demoArmEtC_converted.mp4&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386589571&mv=m







http://r2---sn-5hn7su7z.googlevideo.com/videoplayback?source=youtube&itag=5&fexp=935503%2C919355%2C916626%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&pcm2fr=yes&factor=1.25&upn=i45kZue57iw&ip=146.185.29.14&algorithm=throttle-factor&ipbits=0&burst=40&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Cpcm2fr%2Csource%2Cupn%2Cexpire&expire=1386610282&id=c8ebdccd6a8063e8&key=yt5&sver=3&signature=BE28A4A899EEC0FC53C506EBB757CDF288A871B7.5BE092161B025E91A2C8813E85B01B545B972B31&title=demoArmDebug_converted.mp4&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386589694&mv=m





http://r8---sn-5hn7su76.googlevideo.com/videoplayback?source=youtube&ip=146.185.29.14&itag=5&key=yt5&burst=40&sparams=algorithm%2Cburst%2Cfactor%2Cid%2Cip%2Cipbits%2Citag%2Csource%2Cupn%2Cexpire&ipbits=0&upn=ouP0do60hU4&expire=1386612899&fexp=935614%2C916807%2C916623%2C924616%2C936912%2C936910%2C923305%2C936913%2C907231%2C907240&factor=1.25&sver=3&id=254bde46c3cb75b3&algorithm=throttle-factor&signature=82B08C9D735558588E0759D9D4E9A4FC639A80AB.61CA6F4C4EF4006D6D7312E903151D4614DC5E9C&title=demoArmOutilObservationCode_converted.mp4&redirect_counter=1&cms_redirect=yes&ms=tsu&mt=1386589811&mv=m