Organisation des ordinateurs Examen de seconde session 2015 Livres fermés. Durée : 3 heures 1/2. Veuillez répondre à chaque question sur une feuille séparée sur laquelle figurent nom, prénom et section. Soyez bref et concis, mais précis. [6/20] 1. On demande de concevoir un circuit séquentiel à une entrée i et une sortie s, possédant le comportement suivant. Si i reste égal à zéro, le circuit produit la valeur de sortie 0. Lorsque i vaut 1, le circuit produit pendant les trois périodes suivantes de l’horloge la séquence de valeurs de sortie “1 ; 0 ; 1”. L’entrée i est ignorée pendant la génération de cette séquence. Après la séquence, la sortie s prend la valeur 0 et le circuit attend à nouveau que i redevienne égal à 1. A titre d’exemple, voici le comportement souhaité du circuit pour un scénario particulier (le temps évoluant de gauche à droite) : i s 0 ? 0 ? 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 ··· ? 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 ··· [2/20] 2. (a) Comment le nombre −2n−1 + 1 se représente-t-il sur n bits en valeur signée, complément à un et complément à deux ? [1/20] (b) Calculer la représentation du nombre −2−64 selon le procédé IEEE 754 en simple précision. Cette représentation est-elle exacte ou approximée ? [1/20] (c) Quels sont les avantages de la représentation par complément à deux par rapport aux autres procédés de représentation de nombres entiers signés ? [4/20] 3. (a) On souhaite construire un composant de mémoire possédant 32 lignes d’adressage et 8 lignes d’entrée/sortie, tel que le premier quart de son espace d’adressage contient des cellules de mémoire vive, les trois autres quarts étant vides. (En d’autres termes, une opération de lecture ou d’écriture n’a aucun effet si elle porte sur une adresse située dans les trois derniers quarts de l’espace d’adressage.) Dessiner un schéma complet montrant comment construire ce composant, à partir d’un composant de mémoire vive de votre choix. Note : La forme des lignes de contrôle des composants peut être librement choisie. [1/20] (b) Qu’est-ce qu’une transaction d’un bus ? Dans quel but les transactions doivent-elles êtres signalées ? [5/20] 4. Ecrire un programme assembleur 80x86 capable de calculer la somme des carrés des nombres entiers de 1 à n, pour n ≥ 1, les nombres étant représentés sur 16 bits. La valeur de n est initialement fournie dans AX, et le programme doit retourner son résultat dans ce même registre. Les dépassements arithmétiques doivent être détectés et signalés par un résultat égal à 0. 1 Annexe 1 : Modes d’adressage des instructions 80x86 Op.1 rα mα rα pα MOV Op.2 Op.1 rα rα rα rα mα pα rα mα ADD, Op.1 rα mα rα pα r16 m16 Op.2 pα iα iα iα SUB, AND, OR, Op.2 Op.1 rα rα rα rα mα pα rα mα i8 p16 i8 XCHG Op.1 Op.2 rα rα mα rα pα rα rα mα rα pα XOR, CMP Op.2 pα iα iα iα i8 PUSH Op.1 r16 m16 i16 POP Op.1 r16 m16 INC, DEC, MUL, NOT Op.1 rα mα pα JMP, LOOP, CALL Op.1 i16 r16 m16 p16 r = registre, i = immédiat, m = direct, p = indirect ou indirect indexé, α = 8 ou 16. Annexe 2 : Instructions de saut conditionnel Instr. JE JNE JG JGE JL JLE JA JAE JB JBE Condition de saut Op1 = Op2 Op1 6= Op2 Op1 > Op2 (valeurs Op1 ≥ Op2 (valeurs Op1 < Op2 (valeurs Op1 ≤ Op2 (valeurs Op1 > Op2 (valeurs Op1 ≥ Op2 (valeurs Op1 < Op2 (valeurs Op1 ≤ Op2 (valeurs 2 signées) signées) signées) signées) non signées) non signées) non signées) non signées)