Vous êtes sur la page 1sur 6

GIF-16116, 14 mars 2007

Nom/Matricule : _________________________

Examen 1
Cet examen aut 40! "e la note totale "u cours# $es %uestions seront corri&'es sur un total "e 40 (oints# $a aleur "e c)a%ue %uestion est in"i%u'e a ec la %uestion# *ne calculatrice scienti+i%ue (eut ,tre utilis'e# Ce(en"ant, aucune "ocumentation, autre %ue la liste "-instructions "-assem.leur /0/6 %ue ous retrou ere0 en annexe I, n-est (ermise# 1ous (ou e0 r'(on"re aux %uestions "irectement sur ce %uestionnaire ou "ans le ca)ier .leu mis 2 otre "is(osition#

Q1 (2 points) : Parmi les composantes lectroniques suivantes, classez toutes les composantes pouvant emmagasiner des instructions de la plus rapide la plus lente: Cache L1, ALU, Tampon d instruction !"nstruction #egister$, %moire vive, Chipset, Contr&leur de '%A, 'isque 'ur, Cache L() Les composantes n emmagasinant pas d instructions ne doivent pas appara*tre dans votre rponse)

Q2 (2 point) : +aites les conversions requises pour remplir toute la ta,le suivante) Tous les nom,res dans cette ta,le sont des entiers sur - ,its reprsents selon la notation complment () .i vous additionniez chaque nom,re avec lui/m0me, quel serait l tat des drapeau1 de #etenu !Carr2$ et de ',ordement !3ver4lo5$ la 4in de l addition) 6e1adcimal :;h 11(d 1<1<1<1<, Q3 (2 points) : Paul a invent une mmoire non/volatile et d2namique) =ean a invent une mmoire +LA.6 aussi rapide qu une mmoire .#A%) Pierre a invent une mmoire U>P#3% aussi peu dispendieuse que la mmoire sur ,ande magntique) Lequel de Paul, =ean ou Pierre a invent un t2pe de mmoire qui n est pas a,surde et avantageu1 par rapport au1 t2pes de mmoires actuellement sur le march? 'cimal 7inaire 898, Carr2 898, 3ver4lo5

Q4 (2 points) : Un microprocesseur produit en (<<- contiendra un peu moins de 1@1<AB transistors par pouces carrs) .i la loi de %oore reste vraie Cusqu en (<(<, com,ien de transistors par pouces carrs contiendra un microprocesseur en (<(<?

Q5 (4 points) : Un compilateur traduit les instructionsDdirectives C suivantes en instructionsDdirectives assem,leur -<-E : "nstruction C short >ar1F short >ar(F short@ >arHF "nstruction correspondante en assem,leur -<-E >ar1 'G < >ar( 'G < >arH 'G <

Un peu plus loin, dans le m0me programme, le compilateur veut traduire une autre instructionDdirective C en une ou plusieurs instructionsDdirectives assem,leur -<-E) 'onnez l instruction ou les instructions gnre!s$ par le compilateur : "nstruction C >ar( I >ar1 9 @>arH 9 HF "nstruction!s$ correspondante!s$ en assem,leur -<-E

>ous pouvez utiliser les registres que vous voulez, sans vous soucier de leur valeur avant ou aprJs l instruction en C) La ta,le d instructions -<-E en anne1e l e1amen peut vous aider) Rappel : Var3 est un pointeur. *Var3 signifie ce quil y a ladresse indique par la valeur de Var3. Q6 (3 points) : .achant que le temps mo2en pour lire un ,loc de donnes de K ,2tes sur un disque dur de A Ligaoctet est B millisecondes) Muelle est la taille de ce ,loc de donnes !K, en ,2tes$, sachant que le disque dur a les caractristiques suivantes : / / / / Le disque tourne a C #P% !tour par minute$) Le temps mo2en de dplacement d une t0te de lecture pour lire le ,loc est Le disque dur a ! c2lindres. Le disque a " plateau1 et une t0te de lecture par plateau) ms)

Q7 (10 points) : >rai ou +au1 !1 point par ,onne rponse, /<)N points par mauvaise rponse, minimum de < pour l ensem,le du numroO$ A44irmation Le premier ordinateur sans tu,e sous vide contenait un microprocesseur ;<<; ou un microprocesseur -<<-) "l est possi,le de 4aire un programme assem,leur sur plusieurs 4ichiers, mais impossi,le de le com,iner avec un programme en C ou en C99) Utiliser une macro la place d une 4onction permet de sauver de l espace mmoire mais ralentit l e1cution du programme) Un microprocesseur a2ant E lignes d adresses, - lignes de donnes et ( lignes de contr&le pour grer une mmoire de 1(- ,2tes) 'ans l architecture >on 8eumann, le seul programme contenu dans le CPU est le programme permettant le dmarrage de l ordinateur) 'ans l architecture >on 8eumann, les donnes et les instructions sont p0le/ m0le dans la mmoire) Lorsqu on e1cute un programme en '3., le s2stJme d e1ploitation est remplac par le programme dans la mmoire : le programme doit 0tre en mmoire pour 0tre e1cut par le CPU) Le 7"3. 4ournit des 4onctions pour accder au1 priphriques de votre ordinateur sous 4orme de routines d interruption) Le '3. 4ournit des 4onctions pour accder au1 priphriques de votre ordinateur sous 4orme de routines d interruption) Lorsque vous voulez 4aire un nonc conditionnel en assem,leur et vri4ier qu une varia,le est gale une valeur, le drapeau Pro devrait 0tre utilis) > ou +

Q8 (3 points) : Une 4onction rcursive est une 4onction qui s appelle elle/m0me un certain nom,re de 4ois, en thorie) :n pratique, une 4onction rcursive mal code peut s e1cuter in4iniment) L e1emple de programme qui suit illustre ce propos : # Call $a"onctionRcursive%ans"in # $a"onctionRcursive%ans"in &roc Call $a"onctionRcursive%ans"in Ret $a"onctionRcursive%ans"in !nd& .i on suppose que tous les registres segments du -<-E ont la m0me valeur pour toute la dure du programme, quel phnomJne pourrait 4aire en sorte qu une 4onction rcursive comme $a"onctionRcursive%ans"in ne s e1cute pas ternellement? :1pliquez)

Q9 (5 points) : Les deu1 4igures suivantes reprsentent toutes les micro/instructions e44ectues par le CPU a4in d e1cuter deu1 instructions d assem,leur -<-E) Chaque 4lJche dans la 4igure est une micro/instruction et les numros indiquent l ordre dans lequel les micro/instructions sont e1cutes !la micro/instruction 1 est la premiJre 0tre e1cute, le < est mis titre indicati4$) .i la premiJre micro/instruction est e1cute aprJs avoir t trans4re CC, qu elles sont les deu1 instructions e1cutes? Aussi, e1pliquez, dans vos mots, les changes entre le CPU et la mmoire a4in de raliser ces instructions) "nstruction 1
C3* I3 7 >2 I4
5(co"e 6ata

"nstruction (
C3*
7"r# 2 et ; /

89

M74

I3

7 ?3 6 >2 11 M84 1 M74

7"r# 2 et /

12 M84
=a

6ata 4 et 11

M'moire

I4

=
6ata

5(co"e

6ata 4 et 10

M'moire

0 et 1< CC 7$*

=. 6

0 et 12 CC < et ; Contr:le

79 < et 10

Contr:le

"nstruction : Qchanges entre le CPU et la %moire :

"nstruction : Qchanges entre le CPU et la %moire :

%A# est un registre dont la valeur se retrouve sur le ,us d adresse !Adr)$) %7# est un registre tampon servant d inter4ace entre le CPU et le ,us de donne !'ata$) CC est l unit de contr&le du CPU) Tous les registres et lments du CPU ainsi que le ,us de contr&le sont grs par CC) "# est le registre d instruction) "l contient l instruction en cours d e1cution) ALU est l unit de traitement arithmtique du CPU)

Q10 (7 points) : Qcrivez une 4onction en assem,leur -<-E qui calcule appro1imativement la racine carre d un nom,re positi4 entre < et (NN) La valeur calcule doit 0tre la racine carre du nom,re, arrondi in4rieur l entier le plus prJs) Par e1emple, votre 4onction doit calculer B si on cherche la racine carre de BB) >ous devez galement 4aire un e1emple d appel de votre 4onction par une autre 4onction ou par le main de votre programme) +inalement, votre 4onction doit 0tre propre) (+1 points bonus!) R si les paramJtres de votre 4onction sont passs par la pile) Pour vous aider coder votre 4onction, vous pouvez utiliser la ta,le suivante :
KSCarre '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 '7 < 1 ; B 1E (N HE ;B E; -1 1<< 1(1 1;; 1EB 1BE ((N

Anne1e " : Liste non e1haustive des instructions du -<-E Instruction


A'' a,, A8' a,, CALL proc CLC C%P a,, ':C a '"> mot "'"> mot "%UL mot "8 dst, port "8C a "8T a "#:T =C la,el =%P la,el =8C la,el =8P la,el =8. la,el =P la,el =. la,el L:A dst,var %3> dst,src %UL ,2te 8:L a 83T a 3# a,, 3UT port, src P3P mot P3P+ PU.6 mot PU.6+ #:T et #:T+ #CL a,, #C# a,, .AL a,, .A# a,, .T" .U7 a,, T:.T a,, K3# a,,

Description
:44ectue a I a9,) :44ectue a I a :T ,, oT :T est un :T logique) Appelle la procdure proc et empile l emplacement de retour) %et < le drapeau de retenue !carr2$) :44ectue a/,, a et , sont inchangs) 'crmente a) :44ectue AK I 'KAKDmot, non sign, le rsultat est tronqu !arrondi in4rieur$) :44ectue AK I 'KAKDmot, sign, le rsultat est tronqu !arrondi in4rieur$) :44ectue 'KAK I AK@mot, sign) %et la valeur lue sur le port de "D3 port dans dst) "ncrmente a) Appelle la routine de service d interruption a) :mpile les drapeau1 et l emplacement de retour) #etourne d une int) en dpilant l emplacement de retour et les drapeau1) .aute l instruction dsigne par la,el si le drapeau Carr2 est 1) .aute la,el) La prochaine instruction e1cute est dsigne par la,el) .aute l instruction dsigne par la,el si le drapeau Carr2 est <) .aute l instruction dsigne par la,el si le drapeau Pro est <) .aute l instruction dsigne par la,el si le drapeau .igne est <) .aute l instruction dsigne par la,el si le drapeau Pro est 1) .aute l instruction dsigne par la,el si le drapeau .igne est 1) %et l adresse de la varia,le var dans dst) %et le contenu de src dans dst) 8e change pas les drapeau1) :44ectue AK I AL@,2te, non sign) "nverse tous les ,its de a, puis aCoute 1) "nverse tous les ,its de a) :44ectue a I a 3U ,, oT 3U est un 3U logique) %et la valeur de src sur le port de "D3 port) 'pile un mot) 8e change pas les drapeau1) 'pile les drapeau1) :mpile un mot) 8e change pas les drapeau1) :mpile les drapeau1) #etourne d une procdure en dpilant l emplacement de retour) #:T dpile "P) #:T+ dpile "P puis C.) +ait une rotation de , ,its vers la gauche) La rotation inclut le ,it de Carr2) +ait une rotation de , ,its vers la droite) La rotation inclut le ,it de Carr2) 'cale tous les ,its de a vers la gauche d un nom,re de ,its gal ,) 'es zros sont mis droite) 'cale tous les ,its de a vers la droite d un nom,re de ,its gal ,) Le ,it le plus signi4icati4 de a est mis gauche) %et 1 le drapeau des interruptions) :44ectue a I a/,) :44ectue a :T ,, oT :T est un :T logique) :44ectue a I a K3# ,, oT K3# est un 3U eKclusi4)