d'arhiteture x86-64 sous Linux
Patrik Cégielski
KonstantinVerhinine
Mai 2019
Copyright
2019 PatrikCégielskiKonstantinVerhinine UniversitéParisEst-CréteilIUTRouteforestièreHurtault
F-77300Fontainebleau
egielskiu-pe.fr
Notre but,danse livre,est d'initier leleteuràlaprogrammationdesmiroproesseurs64
bits d'Intelet AMD, d'arhiteture ditex86-64,implémentée surpresquetouslesmiroproes-
seursatuels,maisquidemeureenoresous-employée.
Ilyatroisfaçons d'utiliserlesinstrutions(nes)d'unmiroproesseur:
enprogrammantenlangagemahine, lemoyenleplussûrmaisleplusrustre;
enprogrammantenlangaged'assemblageet enlaissantàl'assembleurlesoindetraduire
leprogrammesoureenunprogrammeenlangagemahine;
eninsérantunepartieenlangaged'assemblagedansunprogrammeenlangageC(outout
autrelangageévolué).
PourquoiutiliserlesinstrutionsdumiroproesseuretnepasseontenterdulangageC,qui
resteependantlelangagederéférene?
pouraugmenterlaperformanedeertainsprogrammes,ommenousleverronsàpropos
du alul du produit salaire de deux veteurs de grande dimension, en partiulier en
éliminant ertaines redondanes par rapport au ode obtenu grâe à un ompilateur à
partird'unlangagedehautniveau;
pourapporterdenouvellesfontionnalités, enpartiulierenaédantàdesregistresnon
prisenompte parlesappelssystème existants,ommenous leverrons àproposde TSC
(TimeStampCounter),leompteurdetopsd'horloge;
pour omprendreertains problèmes de séurité, ommenous le verrons à propos dela
pile(stak overow).
Un inonvénientestque leprogrammen'estplusportabled'unmiroproesseuràunautre,
voired'unsystèmed'exploitationàunautre(sionutilise desappelssystème).
Introdution
1.1 Les miroproesseurs 64 bits
1.1.1 Dénition
L'histoiredesmiroproesseursestfortementliéeàIntel,entreprisenéeen1968and'exploiter
unetehnologievenantalorsd'apparaître:lesiruitsintégrés.Elledébuteommefondeur,'est-
à-direfabriantdeiruitsintégréspasnéessairementonçusparelle,delapremièreappliation
des iruitsintégrésà onnaîtreunsuès ertain : les mémoiresàsemi-onduteurs, appelées
àremplaer lesmémoires àtoresde ferriteemployées alors. Elleen devienttrès rapidementle
numéroun.Lemiroproesseurestinventé auseindelasoiétéen1971,dontelledemeurerale
numérounsuremarhédurantquaranteans.
Lepremiermiroproesseur,dénommé4004,estunmiroproesseurdit4bits,danslamesure
oùlesentrées-sortiesainsiquelesopérations(additionetmultipliation)s'eetuentsur4bitsen
uneseuleinstrution.Ilaétéonçuandêtreinorporédansunenouvellegammedealulatries
debureaux,pourlesquelles untelmiroproesseurestbien adapté:4bits permettentdemani-
pulerleshiresde`0'à`9'.Par ontre,untelmiroproesseurnepeutpasservirde÷urd'un
ordinateur,aussipetitsoit-il.Intelsortensuitelemiroproesseur8bits8008, bienttsuivides
8080et8085. Lesmiroproesseurs8bitspermettentl'émergenedesmiro-ordinateursàusage
domestique,maisIntelperdàemoment-làlapremièreplaedumarhéauprotdeonurrents.
Lasoiétés'attellealorsaumiroproesseur16bits8086, quivaonnaîtreunénormesuèsen
permettantledéploiementdesmiro-ordinateursàunetrèsgrandeéhelledanslesentreprises.
Sur sa lanée, Intel
hh
innoveii
pour une question de prix de revient : elle rée le 8088, permettant desentrées-sortiessur 8bits maisdes aluls sur 16bits (lehh
÷urii
dunouveau miroproesseurestlemêmequele8086).IBMhoisitemiroproesseurpoursonPC,lemiro-ordinateur adopté par les entreprises, destiné jusque-là surtout à un publi d'
hh
amateursii
ou pour des tâhes spéialisées. Le nombre de bits n'est plus une aratéristique très préise
de lapuissane dumiroproeseur. Intelreprenantlapremière plae des fondeurs,onçoitdes
miroproesseurs32bits(i386,i486puispentium)qui luipermet dedétenirlapremièreplae
surlemarhédesmiro-ordinateursetréelemode protégé,destinéàfailiterlaoneptiondes
systèmesd'exploitation.
Iln'estplusalorsfailedesavoirequ'ilfautentendreparmiroproesseur
n
bits:lenombre de brohes des données,le nombre de brohes des adresses,la taille des registres,la taille desopérandessurlaquelleesteetuéeuneopérationenpeudeylesmahine?
Dénition.-On parle de miroproesseur
n
bitslorsque sesregistres généraux ontune taille den
bits.En 1982, Intel aordeàAMD (Advaned Miro Devies) une lienepourproduire lesmi-
roproesseurs8086et 8088,ande renforerlaposition de sonarhiteturesur lemarhé. À
lasuited'unebataillejuridique,AMDobtienten1995ledroitdeproduiredesmiroproesseurs
fondés sur l'arhiteture IA-32, onçue par Intel. AMD onçoit en 2003 l'arhiteture 64 bits
AMD64, totalement ompatible ave l'IA-32, e qui luipermet d'atteindre une part de près de
25% surlemarhédesmiroproesseursx86.Cettearhitetureest adoptéeparIntelquelques
annéesplustardsouslenomdeEM64T(ExtendedMemory 64bitsTehnology).
Dénition.-Onappellex86-64,aulieudesdénominationsAMD64ouEM64Tpropresauxfondeurs
onernés, l'extension du jeu d'instrutions x86 pour une arhiteture 64 bits. Cette extension
permet la gestion desentierssur64 bits, ave pourorollaire unadressage mémoire allantbien
au-delàde la limitedes4GiO dux86.À ela s'ajoute ledoublement (de8à16) du nombre de
registresgénéralistes.
1.1.2 Utilisation des miroproesseurs 64 bits
L'utilisation prinipale des miroproesseurs64 bits est l'adressage de la mémoire: 32 bits
nepeuventnormalementpasadresserplusde4Gio(
2 32otets)demémoireentrale,tandisque
lesproesseurs64bitspeuventenadresser16Eio(
2 64 otets).C'estpourquoidèsqu'ilyaplus
de4Giode RAMsurunemahine,lamémoiresituée au-delàde eseuilne sera(diretement)
adressablequ'enmode64bits.
Uneautreappliationseraitd'eetuerlesopérationssur64bitsenpeudeylesmahinede
façonàaméliorerlaperformanedesaluls.Maiselan'estpasleasdel'arhiteturex8664.
Intel a essayéde le faire ave le miroproesseurItanium (arhiteture x64), mais elle-i n'a
jamaisonnu desuèsetaétéabandonnéenjanvier2019.
1.2 Aide matérielle au temps partagé
1.2.1 L'emploi des ordinateurs en temps partagé (1962)
Maurie Wilkes, le onepteur du premier ordinateur opérationnel, érit un petit livre
[Wil-68℄ dans lequel il fait le point sur l'emploi partagé des ordinateurs, qui a ommené à
êtremisenplae àpartirde1962et estalorsenorepeudéveloppé.
Ilrappelleque,surlespremiersordinateurs,l'utilisateurpassaitletempsqu'ilvoulaitàtester
sonprogramme mais qu'
hh
on ne futpas long àréaliser que 'était là une bien mauvaise façon d'employer une mahine rareet oûteuse.ii
Onest donpasséautraitement par lots(bath proessing en anglais) :hh
Les travaux sont hargés par lots sur ruban magnétique, souvent à l'aided'unpetit ordinateurauxiliaire. Chaquelotdetravauxestplaésurl'ordinateurprinipal;lesrésultatssortentsurunautrerubanmagnétiqueetsontensuiteimprimés.[...℄Cesdéveloppe-
mentsont sansauun doute amélioréle rendement desordinateurs; ilsont euependant l'eet
regrettable d'éloigner l'utilisateur de l'ordinateur et de diminuer, en partiulier dans le as de
programmesendéveloppement,larapiditédutravaildemiseaupoint.
ii
Onestdonpasséensuite
autempspartagé(time-sharingenanglais):
hh
Ilestmaintenantpossibleauxutilisateursd'être
reliésparune paire deâbles àunordinateurpuissant qui peutêtre situéàproximitéouparfois
àdeskilomètresdedistane.Touslesutilisateurs,quelsqu'ilssoient,ontaèsinstantanémentà
l'ordinateuretpeuventobteniruneréponseàleursdemandessouslaréservequel'ordinateurdoit
partager sontempsentretouslesutilisateurs.Ledéveloppement de telssystèmesest,ependant,
enoreenenfane.
ii
1.2.2 Programmation des appliations et programmation système
Maurie Wilkes ontinue en distinguant e que nous appelons maintenant programma-
tion des appliations et programmation système:
hh
En dérivant un système d'emploi
partagé, une distintion doit être faite entre les programmes des utilisateurs et les programmes
qui assurent diverses fontions d'administration oude ommutation. Cesderniers sont plusou
moinsinteronnetéset désignésolletivementsouslenomde superviseur.[...℄Aulieu de pro-
gramme d'utilisateur, il estsouventpréférable d'employer leterme programme-objet;ei inlut
desprogrammesqui,bienquen'appartenantpasàunutilisateurdonné,sonttraitésparlesystème
exatementde la même manière queles programmes d'utilisateurs. L'une des plusimportantes
fontions du superviseur est déviter que les programmes-objets interfèrent entre eux. Dans e
but, le superviseurdoit avoir ertains privilèges qui sontrefusés auxprogrammes-objets. Parmi
eux-i, onpeut iterleontrle desdispositifs d'entréeet de sortie, l'asservissementdes inter-
ruptions, ainsiquel'établissementdeslimites demémoire danslesquelleslesprogrammes-objets
peuvent opérer. Beauoup d'ordinateurs fontionnent suivantdeux modes opératoires, unmode
ordinaire pour le déroulement du programme-objet, un mode privilégié réservé au superviseur;
quelques typesd'instrutions peuventêtreexéutés seulementen mode privilégié.
ii
Les onepts sontlà, même si le voabulaire ahangé : onparle desystème d'exploitation,
programme d'appliation et programme système aulieudesuperviseur, programme-objet et pro-
grammeassurantdiverses fontionsd'administration et deommutation. Un programme d'ap-
pliationest don,paronséquent,unprogrammeonçupourunsystèmed'exploitationdonné,
e dernierétant en plae. La programmation système onernela programmation du système
d'exploitation(yomprislespilotesdepériphériques).
1.2.3 Aide matérielleau temps partagé
Au momentoù MaurieWilkes érit,en 1968,l'emploi partagé desordinateursreposeen-
tièrement sur du logiiel. Le but de son livre est d'initer àrépartir ette fontionnalité entre
logiieletmatériel.
Mais ilvafalloirunertaintempsavantqu'ilnesoit entendu.
Intelintroduitlemodeprotégédanssesmiroproesseursàpartirdu80286pourmettreen
plaelapartiematériellerélaméeparMaurieWilkes.Nousaborderonsdonlaprogrammation
des appliations dans la première partie, réservant la programmation système à une seonde
partie.
Commele ditMaurieWilkes,lamiseen plaedel'emploi partagédes ordinateursrepose
àlafois sur unepartie matérielle (lemode protégé pourles miroproesseursIntel)maisaussi
sur une partie logiielle,une partie dusystème d'exploitation de nosjours. La programmation
desappliations nepeutdonpasfaireomplètementdusystème d'exploitationutilisé. Tous
nosexemplesonernerontLinux,pourunearhiteturex86-64.
1.3 Bibliographie
[Wil-68℄ Wilkes,MaurieVinent, Time-sharing omputer systems,MaDonald and
Co.,London,1968.Tr.fr.Emploipartagé desordinateurs,Dunod,1971,III+
124p.