IFT-17583
Structure interne des ordinateurs
Examen 1, le 4 novembre 1999, 19h30 à 22h20, salle 1112 du pavillon Adrien-Pouliot.
1. Convertissez 12 884 901 88810 en hexadécimal. (10 pts) 12 884 901 888 / 65536 = 196608, reste 0
196608 / 65536 = 3, reste 0 3 / 65536 = 0, reste 3
Réponse : 30065536 = 30000256 = 3 0000 000016.
2. Donnez le circuit d'un transcodeur code-Grey à binaire naturel. La table de vérité est la
suivante : (20 pts)
G3 G2 G1 G0 B3 B2 B1 B0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0
0 1 0 0 0 1 1 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 0 0
0 1 1 1 0 1 0 1
1 0 0 0 1 1 1 1
1 0 0 1 1 1 1 0
1 0 1 0 1 1 0 0
1 0 1 1 1 1 0 1
1 1 0 0 1 0 0 0
1 1 0 1 1 0 0 1
1 1 1 0 1 0 1 1
1 1 1 1 1 0 1 0
Il est évident que B3 = G3. Pour les autres, on a les tables de Karnaugh suivantes :
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
00 01 11 10
00 01 11 10
G3G2 G1G0
B2
0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0
00 01 11 10
00 01 11 10
G3G2 G1G0
B1
0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0
00 01 11 10
00 01 11 10
G3G2 G1G0
B0
B2 =G3G2 +G3G2
=G3⊕G2
B1=G3 G2G1+G3G2G1 +G3G2G1+G3G2 G1 =(G3⊕G2)G1+(G3⊕G2)G1 =G1⊕G2⊕G3
B0 =G3G2G1G0+G3G2G1G0
+G3G2G1G0+G3G2G1G0 +G3G2G1G0+G3G2G1G0 +G3G2G1G0+G3G2G1G0
=G3G2(G1⊕G0)+G3G2(G1⊕G0) +G3G2(G1⊕G0)+G3G2(G1⊕G0)
=(G3⊕G2)(G1⊕G0)+(G3⊕G2)(G1⊕G0)
=G3⊕G2⊕G1⊕G0 B3
B2 B1 B0 G3
G2 G1 G0
3. Donnez le circuit d'un compteur synchrone modulo-4 descendant. (20 pts)
00 11
10 01
Q1Q0 Q1+Q0+ D1D0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0
D1=Q1.Q0+Q1Q0 =(Q1⊕Q0) D0= Q0
Q1
D0Q0 D1
Ck
C Q0 C
4. a.Combien y aurait-il de rangées dans un cache à correcpondance directe de 512Ko
organisé en blocs de 64 octets ? (5 pts)
512 Ko / 64 o = 8 K
b. Combien y aurait-il de bits dans les champs étiquette, index et adresse dans le
bloc ? (10 pts)
Bits pour adresse dans le bloc = log2 64 = 6 Bits pour index = log2 8 K = 13
Bits pour l'étiquette : 32 - 13 - 6 = 13.
c. Dans quelle rangée l'adresse 0x12345678 serait-elle placée ? (5 pts) L'adresse de 32 bits s'écrit en binaire : 0001001000110 1000101011001 111000.
La rangée(index en gras) est 0x1159 = 444110
5. Un certain disque dur de 3"1/2 a une capacité de 2 Go et tourne à 3600 tpm. Il possède deux plateaux, donc 4 faces, et 8192 cylindres. Sa densité longitudinale est 58000 bpi.
a. Quelle est son débit maximum en Mo/s ? (10 pts)
Nb d'octets par piste = 2 Go / (8192 * 4) = 65 536.
Temps de rotation = 1 / 60 sec.
Débit = 65 536 x 60 = 3 932 160 o / s et 3 932 160 / 10242 = 3,75 Mo / s.
On peut aussi utiliser la densité pour obtenir une valeur approximative. Un disque de 3"1/2 a une circonférence d'environ 10". Si on multiplie cette longueur par la densité longitudinale en bpi, on obtient ne nombre de bits par piste = 10 x 58 000 = 580 000 bits, ou 72 500 octets. Toutefois, ce nombre ne comprend pas que les données situées dans les secteurs, mais aussi l'overhead de gestion de piste : champ ID pour chaque secteur, etc. Il est plus élevé que la valeur efficace calculée plus haut.
On obtient donc 72 500 * 60 / 10242 = 4.14 Mo / s.
b. En supposant des secteurs de 512 octets, combien y a-t-il de secteus par piste ? (5 pts) 65536 / 512 = 128 secteurs
ou, en utilisant la densité, environ 72 500 / 512 = 141 secteurs
6. Implantez le programme suivant en assembleur du Pentium : (15 pts) void main() {
short x[10];
for (i = 0; i<10; i++) x[i] += 1;
}
_asm { lea esi,x for: mov ecx, 10 next: inc word ptr [esi]
add esi, 2 dec ecx jne next }
_asm { lea esi,x for: mov ebx,0
next: inc word ptr [esi + ebx*2]
inc ebx cmp ebx,10 jb next }
_asm {
lea esi,x for: mov ebx,0
next: mov ax, [esi + ebx*2]
inc ax
mov [esi+ebx*2],ax inc ebx
cmp ebx,10 jb next }