IFT-17583
Structure interne des ordinateurs
Examen 1, le 18 mars 2000, de 8h30 à 11h20 à la salle 1112 du pavillon Adrien-Pouliot.
1. Quelle est la valeur du nombre de virgule flottante IEEE de simple préci-
sion suivant : 80000008IEEE ? (10 pts)
Comme le signe est 1, le nombre est négatif. Comme l'exposant est 000000002 et que la partie fractionnaire f de la mantisse n'est pas nulle, il s'agit d'un nombre dénormalisé. Il est donc de la forme 0,f x 2-126. On a donc -2-126 * 8 * 2-23 = 2-126 * 2-20 = 2-146 = 1.1230388 x 10-44.
2. Donnez le circuit d'un transcodeur qui effectue le complément à 2 d’un
nombre de 4 bits (20 pts)
A B C D E F G H
0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1
0 0 1 0 1 1 1 0
0 0 1 1 1 1 0 1
0 1 0 0 1 1 0 0
0 1 0 1 1 0 1 1
0 1 1 0 1 0 1 0
0 1 1 1 1 0 0 1
1 0 0 0 1 0 0 0
1 0 0 1 0 1 1 1
1 0 1 0 0 1 1 0
1 0 1 1 0 1 0 1
1 1 0 0 0 1 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 0 1 0
1 1 1 1 0 0 0 1
On voit immédiatement que H = D. Pour E, F et G, on fait trois tables de Karnaugh :
3. Donnez le circuit d'un compteur synchrone modulo-4 avec une entrée x telle que si x = 0, le compteur est ascendant (00, 01, 10, 11, 00, 01, …) et
que si x = 1, le compteur des descendant (00, 11, 10, 01, 00, 11, 10, …) (20 pts) On a le diagramme d'états suivant :
01
10 11
0
0 0
0
1 1
1 1
00
On en tire la table d'états suivante : Le présent, xQ1Q2, le futur désiré Q1+Q2+, et finalement les entrées de bistables nécessaires pour obtenir ce futur. Nous avons mis quatre colonnes : T1T2 pour une réalisation avec des bistables T, et D1D2 pour une réalisation avec des bistables D.
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
00 01 11 10 00
01 11 10
AB CD
G = CD + CD = C ⊕ D
0 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1
00 01 11 10
AB CD
00 01 11 10
F = BCD + BD + BC = BCD + B(C + D) = B(C + D)+B(C + D) = B ⊕ (C + D)
0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0
00 01 11 10
AB CD
00 01 11 10
E = AB + AD + AC + ABCD = A(B +C + D) + A(B + C + D) = A⊕ (B + C + D)
D C B A
H G F E
x Q1 Q2 Q1 Q2 T1 T2 D1 D2 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0
+ +
Pour la réalisation avec des bistables T, on voit que T2 est toujours 1. On obtient T1 avec la table de Karnaugh suivante :
0 1 1 0 1 0 0 1
00 01 11 10
x Q1Q2 0 1
T1 = xQ2 + xQ2 = x ⊕ Q2
d'où le circuit :
x T1Q1 1 T2Q2
Ck
Pour la réalisation au moyen de bistables D, on voit queD2 = Q2. On obtient D1 avec la table de Karnaubh suivante :
0 1 0 1 1 0 1 0
00 01 11 10
x Q1Q2 0 1
D1 = xQ1Q2 + xQ1Q2 + xQ1Q2 + xQ1Q2 = x(Q1Q2 + Q1Q2) + x(Q1Q2 + Q1Q2) = x(Q1 ⊕ Q2) + x(Q1 ⊕ Q2)
= x ⊕ Q1 ⊕ Q2
d'où le circuit
x D1Q1 D2Q2
Ck
Q2
4. a. Combien y aurait-il de rangées dans un cache à correspondance directe
de 1 Mo organisé en blocs de 64 octets ? (5 pts)
b. Combien y aurait-il de bits dans les champs étiquette, index et adresse
dans le bloc ? (10 pts)
c. Dans quelle rangée l'adresse 0x12345678 serait-elle placée ? (5 pts) a. Il y a 1 Mo = 1 x 1024 x 1024 / 64 = 16384 rangées dans le cache.
b. Pour compter 64 octets, il faut 6 bits dans le camp adresse dans le bloc.
Pour compter jusqu'à 16384, il faut 14 bits. Le reste de l'adresse constitue l'étiquette. C'est 12 bits pour une adresse de 32 bits.
c. L'adresse 0x12345678, représentée en binaire par 000100100011 01 0001 0101 1001 111000 sera dans la rangée 0x1159, soit la rangée 4441.
5. Un certain disque dur de 3"1/2 a une capacité de 4 Go et tourne à 5400 tpm.
Il possède quatre plateaux, donc 8 faces, et 16384 cylindres.
a. Quelle est son débit maximum en Mo/s ? (5 pts)
b. En supposant des secteurs de 512 octets, combien y a-t-il de secteus par
piste ? (5 pts)
c. Quelle est la densité longitudinale d’enregistrement approximative en
bpi ? (5 pts)
a. Il y a 4 x 1024 x 1024 x 1024 / (8 x 16384) = 32768 octets par piste.
Chaque piste passe 5400 / 60 fois par seconde devant la tête. Le débit est donc de 5400 x 32768 / 60 = 2.949.120 octets / s = 2.8125 Mo / s.
b. Le nombre de secteurs par piste est 32768 / 512 = 64.
c. La densité longitudinale d'enregistrement approximative, en supposant une circonférence d'environ 10" pour une piste est de 32768 x 8 / 10 = 26214 bpi.
6. Implantez le programme suivant en assembleur du Pentium : (15 pts) void main() {
short a[10], b[10];
...
...
for ( i = 0; i < 10; i++ ) b[i] = a[i] * 2;
}
void main() {
short a[10], b[10];
…
… _asm {
lea esi, a lea edi, b mov ecx, 10 boucle: mov ax, [esi]
add ax, ax mov [edi], ax add esi, 2 add edi, 2 dec ecx jnz boucle }
}