Book Elbrus PDF
Book Elbrus PDF
Book Elbrus PDF
.
.
.
.
.
.
32.973.267
004.382 .7(075)
. ., . ., . .
59 . .:
, 2013. 272 .: .
ISBN 978-5-459-01697-0
, . . . .
, :
SPARC . , -
,
.
-
,
230100 .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1. . . . . . . 15
1.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2. SPARC . . . . . . . . . . 17
1.3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2. SPARC,
. . . . . . . . . . . . . . . . 23
2.1. -R500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.6. - . . . . . . . . . . . . . . 41
2.1.7. . . . . . . . . . . . . . . 43
2.1.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.9. MBus . . . . . . . . . . . . . . . . . . . . . . . 58
2.1.10. . . . . . . . . . . . . . . . . . 62
4
2.2. -90 . . . . . . . . . . . . . . . . . . . . . . . 63
2.2.1. . . . . . . . . . . . . . . . . . . . . . . . 63
2.2.2. - . . . . . . . . . . . . . . . . . . . . 64
2.2.3. -. . . . . . . 67
2.3. -R500S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.4. /C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.5. -R1000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.6. -R1000 . . . . . . . . . . . 80
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3. ,
. . . . . . . . . . . . . . . . 87
3.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.1.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.1.2. . . . . . 90
3.1.3. Intel 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.1.4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.2.2. . . . . . . . . . . . . . . . . . . . . . . . . 104
3.2.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.2.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3.2.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.2.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
3.2.8. - . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.2.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.3. . . . . . . . . . . . . 169
5
4.
. . . . . 187
4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
4.1.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
4.1.2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
4.1.3. . . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.2.
,
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.2.1. . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.2.2. . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
4.4. 86 . . . . . . . 197
4.5. ++ 200
4.5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
4.5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
4.5.3. . . . . . . . . . . . . . . . . 201
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
1. -90
( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
6
2. MBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
4.
( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.
- L2$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.
MMU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9. DTLB . . . . . . . . . . . 264
10.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
, -
, , -
,
.
-
, .
, .
. ,
.
,
. -
,
, -
, ,
.
, ,
-
,
, .
, , ,
-
.
-
-
.
8
. ,
-
.
, ,
,
, , -
. ,
, -
. . . ,
,
.
. -
. -
, ,
. , -
,
, . ,
, -
1. ,
, .
,
SPARC .
-
,
.
,
.
, -
, ,
. ,
-
,
1
, ,
.
9
. , -
-
.
, -
,
, .
- , -
,
.
, ,
3- . . . . -
, (Academia, 2010).
,
-
, -
-
,
. . . .
,
.
- . . . -
(-),
.
1
, -
,
.
.
2 SPARC,
SPARC
-R500,
.
-
,
.
3 ,
10
, ,
. -
.
-
, DSP-.
4
-
() -
,
.
:
. . . : . . ,
. . , . . , . . , . . , . . -
, . . , . . ;
- : . . ,
. . ;
- . . . : . . -
, . . , . . , . . .
. ., . ., . ., . .,
. ., . ., . ., . ., -
. .
. . ,
. . . ,
. . ,
. . . ,
,
. . ,
- . . .
SPARC-
( -
)
1.
16 1.
-
. 90-
-
-
, ,
,
.
-
, ,
. ,
.
1.1.
-
[1].
( )
() , -
, ,
.
, . . , -
1969
-
. ,
, . 1979
-
() -1,
TTL-. [2].
-
-2, -
-
-100. -
125 . -
, . -
,
1.2. SPARC 17
.
, , -
,
,
7080- -
[3].
-3. -
- -
, -1
-2. -
,
-2,
[4]. -
1990 ,
- .
-, -
. ,
, -
,
. -
SPARC (Scalable Processor
Architecture), Sun Microsystems,
, ,
-3 (
E2k) [5].
2006 -
-
. . ( . . . ).
1.2.
SPARC
, -
SPARC v8
18 1.
-
-
.
RIS- ,
,
.
350
-R150 150 ,
130 -
-R500 500 (
-
, ). -
-
, :
,
,
, -
.
,
, -
TSMC
().
, ,
, , /, -
, -
. ,
()
-.
-R500 -90
[6], . , -
-
. -90
,
.
/++,
1.2. SPARC 19
Linux Solaris -
( ),
.
-
, -
.
SPARC- -
- -
. 2008 -
-R500S ( 130 ) 500 ,
(),
, - , -
, ,
, -
( ).
-R500,
.
-
R500S
. /,
.
, . -
, -
.
2012 -
-R1000 ( -
-4R), 64-
SPARC v9. 1 -
90 .
,
NUMA. -
-
.
4/C 4-.
20 1.
1.3.
,
[7].
, (Very Large
Instruction Word, VLIW),
( -
),
.
, , -
, ,
.
, , -
.
-
()
, :
, , -
.
-
-
Intel x86,
.
. ,
(
),
-
.
64- ( 130 , -
300 ).
-31,
1.3. 21
.
-31
5,2 -90
(500 ) 1,44 Pentium 4 (1,4 ).
-
0,4 1 .
, -
Intel IA-32 (x86),
, -
. , ,
.
-
-31 .
-31
.
Linux , -
,
, ++ ,
Intel x86
, -
.
-31
-31
/,
, .
-S, 90 -
500 , -
,
, - .
3S/C.
22 1.
90 -
-2+,
-
(DSP), .
-2+ -
, [8]. -
-
,
. , ,
[9][11].
2.
SPARC,
24 2. SPARC
2.1. -R500
2.1.1.
SPARCv8 [12, 13]
-R500 :
32- ;
RISC-.
32- 32--
. ,
. /
/;
. -
+ , + -
, ;
-
(
), ;
136- 8 16 8 -
.
8 , 16-
8 . -
, ;
.
32
(32-), 16 (64--
), ;
. ,
.
-
;
.
,
.
2.1. -R500 25
, -
. ,
.
16 ,
. ,
:
() .
, -
.
;
, -
, .
:
( );
, , -
,
, , -
;
( -
, -
);
, (-
,
).
( ) -
,
lloca() . , -
,
%fp.
-
, lloca().
26 2. SPARC
, , -
%sp.
. 2.1.
. 2.1.
2.1. -R500 27
24- ,
r- . %g -
- -
, ,
.
%g0 .
,
.
( %g0) -
.
, - ,
,
.
-
, .
, ,
.
,
,
.
r- CWP, -
-
PSR. CWP -
(RESTORE
RETT) -
(SAVE) .
WIM, .
-
. CWP+1
, CWP-1.
() .
CWP
(NWINDOWS),
28 2. SPARC
.
NWINDOWS-1 .
0 NWINDOWS-1.
. 2.2.
CWP+1
r[31]
r[24]
r[23]
r[16] CWP
r[15] r[31]
r[8] r[24]
r[23]
r[16] CWP-1
r[15] r[31]
r[8] r[24]
r[23]
r[16]
r[15]
r[8]
r[7]
r[1]
r[0]
. 2.2.
2.1. -R500 29
SPARC -
,
.
2.1.2.
-R500 . 2.3.
. 2.3. -R500
30 2. SPARC
-
[14] :
IB (InstructionBuffer),
I$ (InstructionCache);
CU (ControlUnit);
IRF (IntegerRegisterFile);
FRF (FloatingPointRegister-
File);
- IU (IntegerUnit);
() FPU (FloatingPoint-
Unit);
MMU (MemoryManagementUnit),
TLB (TableLookaside-
Buffer), D$ (DataCache)
- L2$ (L2$ controller).
- L2$(L2Cache) -
.
- L2$-, MBus-
JTAG- .
(. . 2.3).
MMU
, IB -
IU. IB,
IRF FRF. ,
I$ D$ -
, L2$ .
IB CU.
CU IRF -
- IU FRF
FPU
.
2.1. -R500 31
- IU -
CU IRF,
IRF.
, IU
IRF FRF. -
FPU
CU FRF, -
FRF.
2.1.3.
-R500 -
[15]. -
.
( ) 5--
(. 2.4):
F(Fetch) I$;
D(Decode) () -
IRF;
E(Execute) IU;
C (Cache) ;
W(Write) IRF.
F D E C W
. 2.4.
-
,
.
, -
,
, E C
.
.
. 2.5.
32 2. SPARC
F I$;
D (Decode) ;
R (Read)
FRF;
E1, E2, E3 (Execute) FPU;
W (Write)
FRF.
F D R E1 E2 E3 W
. 2.5.
, , -
E2
E3 . ,
. -
-
.
(3 ).
- L1$ 5-
(. 2.6):
F I$;
D (Decode) ;
E (Execute)
D$;
C (Cache) (-
D$);
W (Write) IRF.
F D E C W
. 2.6. D$
2.1. -R500 33
- L2$
. 2.7. :
-
L2$;
C1 -
L2$;
C2, 3 - L2$;
C4, 5 - L2$;
C6, 7 - L2$
;
C8 - L2$
;
C9 .
F D E C C1 C2 C3 C4 C5 C6 C7 C8 C9 W
. 2.7. -
D$
9 .
- L2$,
L2$, .
2.1.4.
, ,
.
. 2.8.
I$,
I$_data I$_tag, -
I$_TLB
. ,
,
nPC.
34 2. SPARC
. 2.8.
, , -
IQ0 IQ1, -
.
I$_data
.
.
(F) .
PC
, -
.
(D) .
:
16 ;
-
128 ;
2.1. -R500 35
32 ;
I$_TLB
;
;
64- 32- .
. 2.9.
. 2.9.
36 2. SPARC
: ,
. 128 .
32-
. -
( 24
V). -
,
3
.
.
1. 36-
PA[35:0]. -
I$_TLB,
,
TLB
, .
2. PA[11:5]
. PA[4:2]
.
3. -
PA[35:12].
4. , -
, , -
.
-
- .
(32 )
- -
IR. -
11
- . -
,
.
, .
2.1. -R500 37
- -
.
.
, -
, , , -
.
.
,
. 3 -
.
( )
. . 2.1 -
.
2.1.
2 1 0
1 0
-
.
.
. , -
. -
. 2.10.
( ) -
, ,
( ).
( ) .
( )
. , -
,
, .
. 14
, 58 .
, .
38 2. SPARC
. 2.10.
, . -
MBus.
. ,
, .
,
( ), MBus
.
- ,
.
- .
2.1.5.
(ControlUnit, CU)
, ,
IRF -
, .
,
. ,
. -
. 2.11.
2.1. -R500
39
. 2.11.
40 2. SPARC
, -
. IR,
val_D. ,
D (PC), . -
,
D ,
IRF.
IR , ,
,
. -
.
.
-
. ( (val),
(flags),
(rfaddrs))
.
-
. ,
E, C W.
(PC)
. -
, D. W
-
.
,
, PC
nPC , , -
, .
-
(PSR), (WIM), (TBR),
(Y) , -
, -
.
2.1. -R500 41
.
(CCR).
2.1.6. -
/,
, ,
,
. . 2.12.
-
.
1. (D).
2. (E).
3. (C).
4. (W).
-
(D) IR
, ,
IRF -
S1, S2,
.
Op rd.
(E) , -
res_buf.
,
.
:
SH;
LOG;
SUM.
42 2. SPARC
. 2.12.
2.1. -R500 43
-
res_buf -
.
(C)
res_buf
res_out.
(W)
res_out
IRF, .
. -
AdrSUM .
IRF ( ,
) .
, -
. -
res_buf
S1 S2,
IS_data. -
res_out.
res_out.
. -
,
, -
.
2.1.7.
, -
, -
. -
. 2.13.
44 2. SPARC
. 2.13.
. 2.2 -
.
2.1. -R500 45
2.2.
(FCMP) 2
(FMOV, FNEG, FABS) 3
(FiTOs, FdTOs, FiTOd, FsTOd, FsTOi, FdTOi) 3
, (FADD, FSUB) 3
(FMULs, FMULd, FsMULd) 3 (4)
(FDIVs, FDIVd) 8 (11)
(FSQRTs, FSQRTd) 10 (17)
(UMUL, SMUL) 3
(UDIV, SDIV) 8 (11)
:
(R), (E1, E2, E3) -
(W).
.
(R)
IR_FU
FRF. -
S1
S2 .
E1, E2 E3 -
FPA,
DIV MUL. -
3 , 811 ,
1017
.
.
, -
.
DIV MUL
.
,
FU_data res .
46 2. SPARC
(W) -
res FSR.
res
FRF.
, -
.
res
S1 S2, -
FSdata.
res. -
.
,
, -
.
-
.
-
. ,
, -
Q1, Q2 Q3.
2.1.8.
(),
.
1. ,
. .
2. 32-
36- .
-
4 , 256 ,
16 4 .
3. . -
.
2.1. -R500 47
4. .
.
, .
5.
.
6.
.
. -
PPN (PhysicalPageNumber)
(offset) (. 2.14).
(PPN)
(offset)
35 12 11 0
. 2.14.
VPN (Virtual-
PageNumber) (offset) (. 2.15).
(VPN)
(offset)
31 12 11 0
. 2.15.
, -
PT (PageTable). ,
TLB
(TranslationLookasideBuffer) ,
PT . , -
TLB, 16-
.
-
4- .
4 (. 2.16).
48 2. SPARC
. 2.16.
4-
-
, .
16 .
PTP
(PageTablePointer) PTE (PageTableEntry).
PTE PTP . PTP -
, PTE -
. PTE
. 2.17.
N C M R ACC
8 7 6 5 4 2 1 0
. 2.17. PT
PPN . 24 36--
. PTE 256- -
, 16- 4- ,
6, 12 20 PPN .
2.1. -R500 49
C . 1,
.
.
M .
() ,
TLB, -
.
R . ,
( ) PTE
TLB. M, -
TLB -
.
ACC . ,
. 2.3.
2.3.
- - ACC
0 1 2 3 4 5 6 7
,
, ( ),
( ). -
,
.
PTP . 2.18.
32 2 1 0
. 2.18. PTP
50 2. SPARC
PTP . -
. ET .
, PTP
PTE , .
ET . 2.4.
2.4. ET
ET
0
1
2
3
, 4--
.
PT ( ET = 2) , 1
2. PTE -
,
4- (. 2.19).
. 2.19. 4-
PTE 1, -
16-
(. 2.20).
2.1. -R500 51
. 2.20. 16-
PTE 2, -
256--
(. 2.21).
. 2.21. 256-
52 2. SPARC
,
4 , 256 ,
16 4 . -
-
.
.
D$ TLB,
. 2.22. E, C W
.
D$ :
32 ;
- 8 128 ;
32 ;
;
64- .
. 2.23.
: ,
. 128 .
8 32- -
. 8
( 24
: V S , -
).
, -
7 .
1. 36-
PA[35:0].
2. PA[11:5] 128 .
3. 8 -
PA[35:12].
2.1. -R500 53
. 2.22.
4. , -
, , -
.
.
5. PA[4:0] ,
(. 2.5).
54 2. SPARC
. 2.23.
2.5. ,
PA[4:0]
16- 32- 64-
0 0 0:1 0:3 0:7
1 1 * * *
2 2 2:3 * *
3 3 * * *
4 4 4:5 4:7 *
2.1. -R500 55
PA[4:0]
16- 32- 64-
5 5 * * *
6 6 6:7 * *
7 7 * * *
8 8 8:9 8:11 8:15
9 9 * * *
10 10 10:11 * *
11 11 * * *
12 12 12:13 12:15 *
13 13 * * *
14 14 14:15 * *
15 15 * * *
16 16 16:17 16:19 16:23
17 17 * * *
18 18 18:19 * *
19 19 * * *
20 20 20:21 20:23 *
21 21 * * *
22 22 22:23 * *
23 23 * * *
24 24 24:25 24:27 24:31
25 25 * * *
26 26 26:27 * *
27 27 * * *
28 28 28:29 28:31 *
29 29 * * *
30 30 30:31 * *
31 31 * * *
:
* ;
n ;
n:n .
56 2. SPARC
-
. -
.
8 , 8 .
.
,
, .
7
.
( )
.
. 2.6 .
, -
.
.
2.6.
6
5 1
4 0
3 1 1
2 0 1
1 1 0
0 0 0
.
. ,
. ,
.
, ,
. -
, .
2.1. -R500 57
,
.
, .
.
.
, .
8 .
.
-
. .
, : , ,
.
FIFO (First In First Out
). .
.
, ,
.
-
, , ,
.
. ,
,
.
-
TLB 32 .
.
PTE, TLB,
, TLB. TLB
(),
TLB .
58 2. SPARC
TLB ,
.
LRU (LstRecentlyUsed) ( ) -
. TLB -
. TLB,
. TLB
, , -
, 0. ,
. , TLB
, TLB -
, 0. -
TLB 1 ,
.
, -
,
: (RootPointer)
PTP2. -
. -
,
.
TLB .
PTP2
.
2.1.9. MBus
:
4 ;
( )
131 072 ;
32 ;
(
19 );
2.1. -R500 59
: , ,
.
(writeallocate)
(write-back copy-back), ,
,
. -
. 2.24.
. 2.24.
: .
131 072 . 32-
. (
14 ).
60 2. SPARC
.
1. PA[21:5] .
2. -
PA[35:22].
3. PA[4:3] -
.
4. , ,
, PA[2:0]
, . -
.
MBus
. 2.25. ( MBus 2.)
MBus -
, MBus. tag_out,
a_out dt_out
. tag_in
dt_in .
PA_in PA_out, D_in
D_out MBus.
, MBus,
IN_data.
-
PA_in.
Ld_addr -
a_out.
St_addr
a_out.
.
, -
tag_in, .
2.1. -R500 61
. 2.25. MBus
-
,
,
, .
62 2. SPARC
( )
PA_out
D_out, MBus.
D_in IN_data .
,
(snooping), MBus PA_in -
a_out
PA_in. , -
MBus
, SRC,
DST D_cp.
2.1.10.
-
. 2.7.
2.7. -R500
, 0,13
, 500
1
, MIPS/MFLOPS 440/205
, 32/64
-, :
; 16
32
-, 4
-, / 1,6
MBus, / 0,8
, 4,9
, 2 25
8
/ BGA/376
, 1/2,5
, <1
2.2. -90 63
2.2.
-90
2.2.1.
, -90
[16],
( -
) [17].
1.
. 2.26.
. 2.26. -90
64 2. SPARC
. 2.8.
2.8. -90
-R500
24
, 500
, MIPS/ 440/205
MFLOPS
, 512
-, 48 (32 , 16 )
-, 4
- , , 36
, 220 22
, 50 1
, , 800
/ Fast Ethernet, SCSI, , RS-
232/RS-423, Centronics, -3,
519, 553
, 9000
, 12
2.2.2. -
MCP-1, -R500.
- , -
4 ( 384 ). M-1
: . -
,
-1.
MBus, 2,
NB (NorthBridge). -
:
;
50 ;
2.2. -90 65
100;
;
64 ;
36 ;
400 /;
4;
, .
NB
,
72- (64 8 -
). 168--
.
(9 18 64 256 )
64 512 .
SDRAMDIMM- ,
.
1024 . -
( 4 ) .
NB - MBus-PCI, -
MBus PCI. PCI
32- 33 ,
PCI 2.1. PCI
Audio, .
/ 32-
SBus 25 , -
100 /. (MBusSBus)
NB,
. , NB
SBus.
SBus 4 (SBus-)
/ SB (SouthBridge), -
:
66 2. SPARC
/ SEC;
SBus FastEthernet,
IEEE802.3u;
SBus SCSI-2.
SB
IEEE 1284, -
2 /.
/ SEC 8-
/ EBus,
10 / 20 . SEC
, :
8530, -
RS-232C;
8530, -
;
TOD/NVRAM, -
;
BOOTPROM,
;
().
, SEC (
).
- - -
. 2.9.
2.9. - -
/- - -,
FastEthernet 1 100 /
SCSI-2 1 10 / 3
IEEE 1284 1 2 / 3
RS-232 2 9600 / 50
2.2. -90 67
SCSI -
() SCSI-2.
SBus- SBus-. SBus-
( -
), ( ). -
. Sus-
, .
,
SBus- -, -
, SBus- -.
2.2.3.
-
-,
/
, -
SBus. -
SBus SBus, - ( ).
-
. -
- 500
1200 /c (-
) (
).
. :
() ;
- ;
( ).
/ ( -).
-
68 2. SPARC
SBus- -
, .
FE
FastEthernet
100 100 /.
53 19 -
.
SPC -
, ,
. -
, ,
Centronics,
-
,
.
2.3. -R500S
-R500S -
, -
[18]. ,
-R500,
SPARC.v8,
130 500 .
900LHFCBGA 900 -
(. 2.27).
. 2.10.
. 2.27. -R500S
2.3. -R500S 69
2.10. -R500S
-R500
2
, 500
, MIPS/MFLOPS 1000/380
- ( ), 48 (32 ,
16 )
- , 512
, 2
, / 2,664
RDMA
2
, / 667
:
PCI, /; 264
Ethernet, /; 100
SCSI-2, /; 10
RS-232, /; 115
EBus, / 10
, 5
, . 45
, :
; 1,05
2,5/3,3
HFCBGA
900
, 0,13 ;
8
, 99
-
500R
:
;
70 2. SPARC
, -
- , -
, ;
, -
, ;
,
.
-R500S . 2.28.
. 2.28. -R500S
CPU SPARCv8. -
32-, 32-
64-.
2.3. -R500S 71
- L2$ -
, , -
-
.
L2$ -
.
SCom -
, -
, RDMA, -
MC, SBusMSI
PCIMPI.
SCom
, RDMA,
MSI MPI.
-
SCom- .
. ,
-
.
MC DDRSDRAM- -
128 1 .
MC ,
.
-
.
RDMA -
DMA- -
.
RDMA . -
( -
(snoop-)
).
-
DMA.
-
. (
72 2. SPARC
4 -R500S)
RDMA-.
RDMA- -
LVDS-.
: -
, .
. -
,
.
RDMA-: DMA-,
BYPASS- BUS-.
DMA-
. DMA- RDMA-
.
BYPASS-
. LVDS- .
BYPASS- .
BUS- LVDS- -
, ,
/ .
RDMA .
32 .
MPI -
SCom PCI.
, -
PCI, PCI.
SCom PCI.
PCI-
PCI -
. PCI
SCom.
8
PCI 32 PCI .
2.3. -R500S 73
PCI
. PCI-
, .
MSI -
SCom ,
SBus.
SBus
.
MSI -
:
MSI;
SBus-;
SCSI, Ethernet, RS-232,
;
EBus .
SBus -
8 .
, ,
.
DMA-
. ,
. DMA- ,
.
.
.
SCSI
SCSI FASTSCSI-2. 8 .
SCSI . -
10 /.
16 .
Ethernet
100 MbitEthernet.
74 2. SPARC
SEC EBus
32- Sbus 8- Ebus,
,
( DMA-).
EBus , .
:
;
.
EBus :
NVRAM (Non Volatile Random Access Me-
mory);
, -
BOOTPROM;
.
SEC /
,
,
. SEC /
1 8 .
2.4. /C
-R500S
/, -
8
. MBC/C -
6U,
CompactPC.
. 2.29 2.30 .
4 , -
-
.
2.4. /C 75
. 2.29. /
-R500S,
2 .
RDMA
667 /.
2667 /. DMA,
-
, BYPASS,
.
- -
-R500S. ,
PCI -
. -
/ . 2.11.
76 2. SPARC
. 2.30. /
2.11. /
4
8;
2
4400 MIPS/1600 MFLOPS;
1190 MIPS/400 MFLOPS
2.5. -R1000 77
:
8 ;
2
4 2,664 /
- 512 (OpenBootPROM, IEEE 1275-1994)
NVRAM 8 NVRAM ( )
PCI 8;
264 /
SCSI-2 10 /
Ethernet 100 4;
100 /
RS-232 2;
115 /
5 /
USB 1.1 12 /
IDE 33/66 /
PCICS4281, CS4297A
(PMC- SVGA, truecolour, 16001200, 32 ,
) 2D-
2.5. -R1000
-R1000 ( -
-4R)
[19],
. -
, ,
SPARC.v9 [20]
1 .
, -
.
-
.
,
. ,
,
[21].
78 2. SPARC
-
R1000 . 2.31 . 2.12 .
:
CPU0CPU3;
- L2CacheControl;
L2Cache;
CC;
SCom;
MC;
- IOCC;
ISCC0, ISCC1
ISCC2.
. 2.31. -R1000
2.5. -R1000 79
2.12. -R1000
SPARCv9 + VIS2
, 1
4
:
Dhrystone, GIPS; 2
32 , GFLOPS; 4
64 , GFLOPS 2
( ), 16 (I)
( ), 32 (D)
(), 2
, / 4
DDR2-800
-, / 2
4
(3 ), /
, , 20
, . 180
, 1,0/1,8/2,5
/ HFCBGA/1156
90 , 10
, 2 128
CPU0CPU3 64-
SPARCv9 .
2 .
-
32 (4 )
1000 .
- L2CacheControl -
- L2Cache.
L2Cache -
2 . 8
4096 , - 64 .
80 2. SPARC
(
), -R1000.
SCom
, - IOCC -
ISCC0ISCC2.
MC
DDR2SDRAM 8 . -
250 ,
92 .
- IOCC
- ( ) -
.
ISCC0ISCC2 -
-R1000.
LVDS-. DDR (DoubleDataRate)
500 . -
12 ,
2000 /.
IOCC ISCC
,
. - IOC
( ).
ISC -
-R1000.
2.6.
-R1000
-
R1000 -
.
, -
.
-
2.6. -R1000 81
- -
.
-R1000
. 2.32.
. 2.32. -R1000
, . 4/
4- ,
-90, , -
-
.
,
3.0,
/++,
.
-
, ,
82 2. SPARC
, -
.
. 2.33, , . 2.13 2.14 .
. 2.33. : 4/; 4-
2.6. -R1000 83
2.13. 4/
-R1000/ 4/16
, .
, MIPS 24 992,4
SPARCv9
, 4
, 512
-, 1
- IOC
, 1000
/
PCI, / 264
IEEE1284, / 5
/ RS-232, USB 2.0, Ethernet
1000/100/10, SATA
-6U -
CompactPCI
2.14. 4-PC
-R1000/ 4/16
, .
, MIPS 25 004,3
SPARCv9
, 16
, 512
-, 1
- IOC
, 1000
/
PCI, / 264
PCIExpress, / 500
IEEE 1284, / 5
/ RS-232, USB 2.0, Ethernet
1000/100/10, SATA
ATXPC
84 2. SPARC
1.
-R500.
2. .
-R500?
3. -R500
.
4. -
-R500?
.
5. ?
6.
.
7. . , -
.
8. -
.
9. . -
.
10.
.
11. ? -
.
12. , -
.
13. -
.
14. . , -
.
15. -
.
16.
?
85
17. .
18.
.
19. . ,
.
20.
MBus .
21.
-R500.
22. -90 -
.
23. -
90.
24. , -
90. .
25. .
, SBus- -
, .
26. ,
, .
27. -
90 .
28. -R500S
-
.
29. /. -
?
30. -R1000
-
.
31. 4/ 4-.
-R1000?
3.
,
88 3.
3.1.
1
, -
, ,
.
4.
. 3
. -
.
3.1.1.
-
,
. , -
VLIW (Very Long
Instruction Word) [22], [15].
, (), -
( , -
), -
, .
,
.
- . -
,
, ,
.
:
, (16 ), , (32 -
), (64 ), (128 ).
1 8 . 4
3.1. 89
2 ,
.
. 3.1.
3.1.
HS - 1
ALS - 6
-
ALES 4
CS 2
CDS 3
-
PLS 3
LTS 4
AAS 6
SS 1
- HS -
,
.
CDS ,
.
PLS ,
.
.
LTS ,
- .
32- , 64--
.
AAS , ,
, .
90 3.
SS ,
,
.
HS ,
. -
: HS, ALS0, ALS1, ALS2, ALS3, ALS4,
ALS5, CS0, CS1, SS, ALES0, ALES1, ALES3, ALES4, AAS0, AAS1, AAS2,
AAS3, AAS4, AAS5, LTS3, LTS2, LTS1, LTS0, PLS2, PLS1, PLS0, CDS2,
CDS1, CDS0.
,
. , ALS -
-
. ()
LTS 2 , 4 8 . -
ALES ()
. CDS
, ALS,
, .
ALS.
S :
, ,
,
. .
SS, ,
. , ,
(
) -
.
3.1.2.
, -
.
. -
.
3.1. 91
256
, 32
224 .
( 224).
, ;
/
/. -
.
. 32 .
32 .
, , -
-
, . /
/
.
.
. ,
, -
,
. -
- .
( ) ,
, .
, .
,
, -
.
(-),
-
.
. -
, , ,
, .
. -
,
( )
92 3.
-
,
.
-
.
. , -
,
. -
. ,
, . -
,
() ,
.
,
.
.
-
, , -
.
.
, ,
(8 ). -
( ),
. -
-
(,
8 ).
. -
, -
.
.
.
.
3.1. 93
-
. , ,
, ,
.
,
.
.
,
. -
,
.
, -
, ,
, .
.
, -
. -
,
. -
6 ,
8 .
3.1.3. Intel 86
-
,
. ,
, -
, -
,
. -
.
,
, :
94 3.
, -
;
, -
;
, .
, , -
:
, x86;
80- ,
x87,
;
80- ;
,
MMX (Multi Media Extension);
32/64- ,
.
, ,
.
, ,
:
86;
, x86, :
;
,
;
;
() , -
;
3.1. 95
;
x87 () -
, ;
;
, -
;
- ,
-
;
,
;
- ;
(
);
.
, ,
, -
-
.
-
,
- (
).
86
-
,
86, -
- .
, -
- ,
-
,
96 3.
.
- -
, -
,
- .
,
x87, -
. -
.
-
. -
86
, . -
-
,
, -
.
-
. -
-
( )
.
- -
--
,
. -
, -
.
86,
3.1. 97
.
-
-
.
-
-
,
-
-
- .
, -
. ,
- , :
;
;
;
.
. ,
.
-
.
,
. -
( -
)
.
, -
. ,
.
98 3.
3.1.4.
, -
, -
.
,
, .
.
, -
.
, , -
. -
, .
4- ,
2- .
:
0 ,
;
1
;
2
;
3
.
, . -
-
, -
.
, .
(
), :
, ;
3.2. 99
-
.
, . ,
, 8 , , -
.
( ). ,
(, ),
.
-
.
, -
, , -
-
. .
, -
.
-
, -
, ,
.
.
, (
).
,
, 3.1,
3.
3.2.
3.2.1.
- . 3.1.
100 3.
(IB)
($I)
(PF)
(AAU) (CU) (PLU)
(RF-A) (RF-B)
L1$-A L1$-B
0 1 2 3 4 5
A B
2-
(MAU) (TLB)
L2$
(MU)
. 3.1. -
5. -
.
-
.
()
.
,
. -
-
.
-A
-B, . ,
,
, -
.
,
. ,
.
256 .
, .
( )
. , -
.
, . , -
.
,
.
. ,
(LIFO) ,
.
, ,
,
. -
.
,
, . ,
- L1$
.
3.2. 103
L1$
(L1$-A L1$-B) 64 , .
L1$ ,
. ,
.
,
L1$. -
, -
. L1$
- L2$
L1$. ,
,
L1$.
L2$ ,
256 , 4.
L2$ L1$
.
L2$,
. -
- .
(AAU Array Access Unit)
-
. -
,
.
( L2$
) . ,
(FIFO),
() (-
) .
(MMU Memory Management
Unit) .
(TLB) 64 . -
,
, ,
. , -
L2$ .
104 3.
3.2.2.
, . -
,
.
-
. ,
, -
.
(. 3.2 3.3),
.
3.2.
1 2 3 4 5 6 7 8
(A) 0 1 0
(F0) (F1) (S) (D) (B) (R) (E0)
()
3.3.
(A) (Associative search). -
. () (ITAG) -
(IDATA).
() (Instruction Table
Look-aside Buffer, ITLB)
0 0 (Fetch 0). (IDATA),
(F0) .
(ITLB)
1 1 (Fetch 1).
(F1)
3.2. 105
(S) (scattering). -
(D) (Decode) . 4 -
. , -
(B) (Branch and Basing). B -
.
. -
(R) (Read).
0 (E0) (Execute).
.
,
. , -
,
.
( ,
.)
,
.
. , -
, .
3.2.3.
, -
.
, ,
, L2$
. -
,
.
-
,
,
.
106 3.
-
.
.
, -
( ). -
. ,
8- 16, 32
64 128- ().
. , (64-)
8 . ,
,
. ,
-
. ,
, ,
.
128-
. -
.
.
, ,
. N -
N = log2 S,
S .
, ,
,
, -
. ,
,
.
.
, (Instruction Pointer)
.
3.2. 107
. 3.2. :
;
- I$, (IDATA)
(ITAG);
();
() (ITLB);
().
,
.
,
( ) -
j (j = 1, 2, 3).
,
, ,
. -
, .
.
I$ . -
, .
(IDATA) -
() 256 , .
I$ 4
64 . , , -
, -
4 .
, .
:
() (-
, L2$ ).
.
108 3.
0 1 2 3 4 5 6 7
( )
,
( )
( )
_ _
(., , . )
. 3.2.
3.2. 109
, -
( )
( ). -
(
)
.
(ITAG) , 64 -
4 .
() . , -
,
256 .
256
. -
, ,
( ) -
.
,
.
34 -
(47:14) .
26 (39:14) .
-
32 , -
(), .
,
.
, -
LRU.
: -
, .
, -
.
(_),
(). , ()
110 3.
, . -
.
, - ,
. -
.
,
, , -
.
(_0 _1) (
) , ( )
.
.
. -
-
.
, .
( -
).
.
L1$
.
34
,
. -
IDATA -
. ,
.
(Instruction Table Look-aside Buffer
(ITLB)) -
. -
I$ (
).
3.2. 111
-
64 .
(4712) , ,
, .
( 3912 ),
(Current compilation unit index (CUI) -
) (,
.). ,
, -
.
.
( )
-
.
( 0)
, .
(113) .
.
.
()
() (Table Look-aside Unit, TLU)
. ,
,
. ,
.
-
I$.
, -
.
. -
L2$ .
112 3.
(256 )
.
-
.
, -
.
. ,
,
, .
-
.
.
.
, -
(RESET),
. -
, 0_
, 1_
.
, -
. (hit)
()
, . -
. -
.
,
, -
. -
,
.
() . ,
3.2. 113
. -
.
-
0 , (256-)
, .
, 0_O (1_).
-
.
ITAG (
), -
, (LRU).
, -
.
.
L2$
, -
.
,
(Instruction Preliminary Depth, IPD)
) .
MMU_CR.IPD. :
0 I$ (
L2$, );
1 (
L2$
).
-
-
.
.
,
114 3.
.
.
. -
.
-
. ,
, . , -
,
.
, ( ),
, , ,
.
, .
(. 3.2) .
.
. ,
.
,
.
-
.
0_ 1_
. -
(
NK + 0) ( NK + 1)
.
ITAG ITLB.
ITAG ITLB, -
.
1, 3.
3.2. 115
,
. ,
, ,
.
-
. ,
. , ,
. -
,
.
L2
.
, ,
IPD . , -
SS.
:
00 ( -
L2$, );
01 ( -
IB$,
L2$ );
10, 11 (
, -
L2$
).
SS IPD 10 ( -
), .
. -
-
2. -
.
116 3.
L2$ . , -
I& . ,
IDATA, ,
. ,
, .
, -
-
. 256
64 , -
.
3.2.4.
, -
,
. ,
. -
,
. -
,
(88 ).
, -
, ,
. ,
.
-
.
-
(
). () 136 -
(64, 32, 16 ).
, -
( 4).
3.2. 117
.
-
,
. -
.
.
(Control Unit, CU) -
:
, ;
;
;
;
.
. 3.3, -
,
.
:
(S)
;
(D) ;
(B), (Basing) -
(Branch), -
, ,
.
.
.
118 3.
. 3.3. -
3.2. 119
256-
, I$ . -
64
(8 ) ,
.
() -
.
-
, ,
.
, .
-
, .
.
-
( 4).
: ALS0, ALS1, ALS2, ALS3,
ALS4, ALS5, CS0, CS1, SS, ALES0, ALES1, ALES3, ALES4, AAS0, AAS1,
AAS2, AAS3, AAS4, AAS5, LTS3, LTS2, LTS1, LTS0, PLS2, PLS1, PLS0,
CDS2, CDS1, CDS0. , -
.
6 , 17 10 .
(D)
. -
-
.
,
, .
-
.
. -
. -
.
120 3.
( 4).
,
.
-
,
LTS (LiTeral Syllable ).
. -
. 3.4.
. 3.4.
.
, -
(), .
(D) (B) .
( )
8- (source,
src), ()
.
3.2. 121
. ,
: (
), () ,
.
. .
. -
, .
. 3.4.
3.4.
-
, -
,
7 0 128 7
76 10 64 6
-
75 111 32 5
73 11111 8 3
75 110
. , -
. ,
,
WD (window descriptor),
( ).
, .
.
(dst (destination) ).
110, -
,
122 3.
. 1101 16, 32 64 -
.
. -
-
, -
. .
,
.
-
,
,
, -
, .
. ,
-
.
, -
, ( -
), -
,
.
0 (E0), 1 (E1) 2 (E2) -
.
(-
), ,
.
.
, -
, , , ,
,
. , -
.
. -
, , -
.
3.2. 123
-
.
- .
,
256 , -
, ,
.
, (64 ),
, .
-
, .
.
,
. -
,
.
:
(instant);
(prepared).
CT (Control Trans-
fer), .
:
(Control Transfer Preparation, CTP)
(CT).
CTP -
.
, , -
, , ,
, .
.
, ( ),
.
,
CTPR.
.
124 3.
, -
, L2$
. .
.
.
4-
.
-
. , 0
(never ), 1 (always ), 2 -
, 3
. .
, , -
. -
.
.
().
, , 32
( ). -
(Operation System Compilation
Unit Descriptor, OSCUD).
.
. -
, () .
.
-
, , . .
, ,
.
-
.
3.2. 125
, , , ,
.
,
,
, -
.
1 (E1) .
, -
(), -
,
. -
,
.
,
, -
. -
. , -
, ,
,
2 (2). , -
,
, -
-
.
.
,
,
. 2 , -
, ,
, , flush.
, , ,
.
,
.
126 3.
3.2.5.
(Register File, RF)
, -
.
() , ,
,
, - .
(R) . -
.
, , -
/.
:
, , -
. . -
20 ,
. ,
,
,
. -
,
.
RF-A RF-B
.
, 10 10
.
, -
,
, .
2 (5)
.
L1$.
, L2$,
. -
( ,
).
3.2. 127
, 20 10
.
: -
, -
.
256 84 , -
. 32-
2- , 64,
, 16- -
.
, -
-
.
, .
.
(Scoreboarding
) , -
,
.
,
.
, -
.
(output dependence). , -
,
.
. , ,
. -
. ,
WD (current Window Descriptor).
(. 3.5). -
(0223)
, (224255)
128 3.
.
. 223 0.
,
.
. 3.5.
3.2. 129
,
, -
. -
, .
, : -
.
.
.
-
. -
.
3.2.6.
()
( ), - -
. ,
(0 , 1 ) -
(0 false, 1 true).
() (Predicate Logic Unit (PLU)),
, -
-
. -
, ,
() -
. ,
.
:
() (PLU);
() (Rout Logic
Predicate Unit, RLPU);
() (Predicat File, PF) .
130 3.
.
.
1. -
.
2. .
3. .
- ( -
) .
. 64-
, . j 2
j- , j 2 + 1
j- . ,
32 .
, .
, .
.
-
.
-
, -
.
3.2.7.
-
, , ,
,
.
-
, .
- 0
,
0, 2, 3 5- .
-
, , -
, .
:
;
;
;
.
USBR (User Stack Base Register) -
USD (User Stack Descriptor).
.
,
,
( ).
, -
,
.
()
().
:
CUD (Current Compilation Unit De-
scriptor);
132 3.
Pointer ).
.
CR 128 , -
3264.
-
.
-
Intel (CS, DS, ES,
FS, GS, SS), ,
. .
:
;
;
.
. ,
,
( ).
,
.
() , .
,
, ,
.
.
.
. , -
.
, ,
.
134 3.
. , -
, -
-
.
new/delete.
.
, .
, -
, ,
.
.
.
, -
. -
,
.
.
5.
-
,
.
, -
.
;
,
-
;
3.2. 135
,
, ( -
);
;
, -
;
.
-
.
.
: -
.
,
.
CALL.
(CALL). CS1
wbs
, -
.
-
CR.
(PCSHTP),
CF. -
: , (
(CUIR),
), ( wbs), -
80, , -
, .
.
, .
-
,
136 3.
, (
) .
. ,
(). -
(PSHTP) -
, .
,
, ,
,
(. 3.6).
, .
SETWD,
.
(psl).
(RETURN). -
. -
,
.
, ,
,
. ,
, -
,
, CR, -
, ,
.
, (
),
,
(PSHTP.ind).
-
,
, . -
,
, .
. 3.6.
3.2.
137
138 3.
(
DONE).
-
(-
).
.
. -
(
BUBBLE), (SPILL) -
( )
(FILL) , .
. ,
(RF CF).
-
,
. . 3.7,
. -
:
0x6f
0x00 ( ,
112).
(PSHTP) (PSR).
, .
, .
. -
( 6).
. -
(PSHTP),
. 3.7. :
3.2.
; ;
139
140 3.
.
:
= ,
(PSHTP)
; (wbs) -
. -
,
.
(PSHTP) -
,
() , -
, . 3.8.
.
.
.
. 3.8.
3.2. 141
,
, -
.
()
.
, .
,
, . -
(PSR.ind)
(8 ).
.
( 6).
3.2.8. -
-
.
, -
.
.
-
, . -
. -
,
,
,
.
, -
.
, .
64, 8,
4 2 . -
. (
142 3.
)
.
-
,
.
( , -
),
. , , , -
, -
, . ,
, , .
: -
( )
( , ). -
-
.
(, ).
, -
.
,
.
,
( )
- . . 3.9
.
. ,
, .
, -
,
-
.
. . -
(2),
.
3.2. 143
. 3.9. -
.
. -
, -
.
. 3.9 (-
) .
144 3.
, -
(, , ),
(), .
(), (), , ().
. -
.
.
,
, .
. -
, .
,
- , /
.
, , ,
. ,
.
, , -
(, , ).
.
.
/.
,
.
.
.
. 3.10. (. 3.10, ) -
( ,
, ). -
0
3.2. 145
. , , , . 3.9,
-
,
.
, ,
, , .
,
(. 3.10, ).
. 3.10. :
;
,
( )
.
0 ( ),
1 1.
()
146 3.
.
, .
,
,
. ,
2 .
,
, .
. ,
(),
,
. (
) .
-
. -
32 (Floating point Word, FW
), 64 (Floating point Double Word, FDW
), 80 (Floating point eXtended, FX
).
32, 64 80.
-
() ,
.
,
, . ,
.
IEEE-754 .
,
(, -
Intel
). -
( / ,
.)
,
Intel .
3.2. 147
80-
80,
. -
80,
.
, -
.
, -
.
,
.
- . 3.9.
:
();
();
();
( );
;
(1);
(2).
(), -
, . , -
FX 32/64,
32/64 FX .
-
.
, :
/,
;
, ;
148 3.
;
32 64,
, .
, .
-
.
, -
32 64
, .
, -
. (
) .
32 -
. .
64 -
. .
,
, -
.
32 32, -
.
. ,
.
(2)
,
. ,
-
. -
.
.
3.2. 149
3.2.9.
-
, ,
,
. , -
,
-
[23].
-
(L1$ L2$),
() (MMU) () (AAU).
L1$
L1$ ,
.
,
. -
.
0 - 0 2,
1 3 5. L1$ -
2- ( )
64 .
. 3.11 L1$ ( )
. ,
. -
, . ,
LRU, -
. 512 .
.
.
4
.
150 3.
. 3.11. L1$
LRU 3 -
( ).
4 512 . -
4 (dw), 32 ,
. 48- [47:0]
:
3.2. 151
34- (), -
;
9- ( ), (-
) (29 = 512);
2- (22 = 4);
3- (23 = 8).
- L1$
.
[13:5]
. -
.
-
.
.
-
. ,
,
.
,
.
- L1$
.
L1$ . 3.12.
(m0, m1, m2, m3), 4 (b0,
b1, b2, b3). .
4 .
s0, s1, s2, s3, b0, b1, b2, b3,
(. 3.5).
-
(m[1:0], index_m[10:0]). ,
: set,
index, bank (s[1:0], index[8:0], b[1:0]). Bank
[4:3], index [13:5].
.
152 3.
. 3.12. L1$
3.2. 153
3.5. L1$
m0 m1 m2 m3
s3 b0 b1 b2 b3
s2 b1 b0 b3 b2
s1 b2 b3 b0 b1
s0 b3 b2 b1 b0
,
, ,
. 3.13:
addr ;
addr_is_va , (-
) ;
root -
Intel (root = 0
Elbrus);
context 12- ,
, ;
G (global) , -
;
pagesize_small , ,
, (4 ), (4 ).
1;
dontuse ( ) . -
, ;
vtag ,
.
. 3.13. L1$
154 3.
.
(TLB).
, , -
:
( / );
(/Intel);
([47:5]).
global, .
,
. L1$ REDUCED LRU. -
L1$ ( lru).
, (0 1 2 3)
. ,
(0 1, 2 3) . -
2.
-
. lru
-
(hit) . lru
,
, , -
L1$.
. lru
1.
L1$ - -
, .
:
L1$;
L1$ ( vtag);
L1$.
, L1$ , -
.
3.2. 155
, dontuse ( )
.
- -
. dontuse (
L1 ). dontuse
- .
dontuse L1$ .
L2$
L2$ .
256 , ( -
L1$) 9 , (4
256 , 64 ) -
.
L2$ . 3.14. -
.
4 , 4 ,
STB (STore Buffer), MAU (Memory Access Unit -
) MRQ (Memory Read Queue
), MAU
WBQ (Write-Back Queue ).
,
.
.
,
, -
.
4 -
[7:6] ( )
,
.
MMU.
-
1 .
,
.
156 3.
. 3.14. L2$
:
( , ,
write-back, );
(Coherent Read, Coherent
Invalidate .);
Refill , ;
IB (
).
, L2$ -
: L2 L2. L2 -
4 .
3.2. 157
-
L2. L2
, .
L2 . 3.15.
L2$ -
L1$ .
1. ( [18:15]
()) .
2. -
.
.
3.
. ,
,
.
, -
. L2$
.
7.
. L2-.
(.
. 3.14), L2$
(CPU), -
(AAU), (MAU), L2 ,
(IB) .
,
.
( ),
.
8 , 7 -
, -,
.
158 3.
. 3.15. - L2$
,
16 12 .
4 , 0, 2, 3 5,
2 , 2 5.
.
(. 3.6).
3.2. 159
3.6. L2-
1 MAU
/ L2arb
2 (write-back) L2arb
3 MAU
4 L2arb
5 L2arb
(Invalidate & WbInvalidate)
2-
6 CPU/AAU
CPU/AAU
7 IB IB
( ).
( ) -
.
, -
.
-
.
1.
, .
2. ,
.
.
3. , -
.
4. , ,
, -
.
160 3.
5. - (IO)
, -
.
,
-
. 256--
. ,
,
.
, , -
FIFO 32 , ,
STB, -
DW. ,
, . -
.
,
.
- , L2-, , -
. (. . 3.14) 03, -
MAU. -
64 , 4 -
. 256 64 .
, L2-, 8.
-
STB.
4 ,
2 0, 1, 2 3,
. -
-.
-
, -
.
STB (Store Buffer)
.
, ,
3.2. 161
, , -.
STB . -
.
,
( L2$).
STB.
STB ,
. STB
MAU .
STB
STB.
MMU -
:
48- 40- -
,
(DTLB);
;
4 4 ;
, -
(Table Look-Up, TLU);
,
,
.
-
Intel, -
. -
.
.
, ,
-
, 12-
(Context register)
162 3.
TLU.
. TLU TLB -
.
MMU 4 .
-
0, 2, 3, 5.
2- 5- , ,
0- 3- .
:
0- 3- -
AAU
;
2-
, -
TLU SRU;
5-
.
-
AAU -
DTLB, .
VPN (Virtual
Page Number) (offset) (. 3.16).
. 3.16.
MMU
PT (Page Table), PTP
(Page Table Pointer)
PTE (Page Table Entry)
3.2. 163
( 8).
, MMU
TLB,
.
TLU -
TLB.
.
, -
. -
,
. ,
.
(PTE) 64 . -
8.
, -
c Intel Pentium
Pro. 4 4 ,
32- .
DTLB ,
.
512 , -
(4 128 ) 2 . L1$ DTLB
.
, DTLB ,
DTLB .
DTLB
MMU. -
DTLB 9.
-
.
. , -
-
.
, .
164 3.
-
.
.
.
-
, ,
.
, ,
, .
-
,
.
,
, , -
, (one-block look ahead).
,
. ,
,
.
-
, ,
,
[24], [25]. -
,
.
(Array Access Unit, AAU).
, : -
AAU, () ,
(FAPB) -
(Array
Prefetch Buffer, APB) (MOVA).
,
3.2. 165
,
, , -
.
AAU
L2$ .
RF
(MOVA).
AAU . 3.17.
:
(APB)
2 ;
(PIB) 32 64--
;
(Prefetch);
(Move)
APB ;
(Store/Load).
, AAU (8 -
, 16 32
).
APB FIFO- -
4 , 2 . -
2 8 (2 ) -
,
(AAU_MOVE-), 1 4 ,
(AAU_Prefetch-
). ,
.
APB 4 ,
64 (8
), .
166
3.
. 3.17.
3.2. 167
APB, -
, Prefetch-
, .
Prefetch- APB -
, ,
(
). APB
32 , 8
( ).
, . -
, -
.
Prefetch- ,
APB.
Prefetch- , -
PIB. ,
32 Prefetch.
APB RF -
MOVE- ( 2 APB) -
MOVA ( ).
STORE/LOAD- -
RF .
, AAU.
. -
(AAU)
. 3.18.
, ,
AAU
. 1, 2
4
APB
(RF) .
. -
APB -
, AAU
.
(RF)
.
168 3.
(Exception)
(32)
a
28
FIFO j
48
(16) ... (RF)
(32) c
28
FIFO k
x2
(8)
(Litera)
:
FIFO (32)
(PIB) (32x64p)
x2
. 3.18. (AAU)
-
PIB, -
CTPR2 CU,
()
. -
FAPB ( -
64 ),
. FAPB
,
.
APB RF
MOVA .
MOVA .
-
.
,
, ,
3.3. 169
.
, ,
.
3.3.
-
. 3.7.
3.7.
0,13 , 8 -
, 300
:
64 , GIPS/GFLOPS; 6,67/2,4
32 , GIPS/GFLOPS; 9,5/4,8
168 , GIPS 12,222,6
, :
; 8, 16, 32, 64
32, 64, 80
- , 64
- , 64
- , 256
- , 512
-, / 9,6
, 4,8
/
/, 1,05/3,3
, 6,0
, 15,012,6
, . 75,8
/ HFCBGA/900
, 31,031,02,4
170 3.
3.4. -31
3.4.1.
-31 ,
-
, -
[7].
, -
, ,
.
(. 3.19), , -
, -
,
,
Pentium, ,
.
-
Intel x86
-31
- .
3.4. -31 171
3.4.2.
, -31
, -
(. 3.20).
. 3.20. -31
( 0
1), -
.
172 3.
4 .
, , -
4 , -
03.
(error correcting code, ), -
.
(,
NB)
DDR (Double Data Rate),
.
-
,
.
, -
LVDS-,
,
/, -
.
.
/ -
PCI (32 , 33 ),
NB ( ).
() -
Ethernet 10/100, ,
, MPS (
-90).
PCI SB ( ).
USB, IDE ISA. USB
, -
-, IDE
() DVD-ROM. ISA
,
BOOT,
NVRAM . -
RS-232, IEEE 1284,
Floppy
3.4. -31 173
(),
PS/2 .
Intel x86
BIOS - -
.
. 3.8.
3.8. -31
2
, 16
, 300
, / 9,6
, 160
,
400 /
PCI, SBus
, 10
:
64/32 , GIPS; 13,3/19,1
64/32 , 4,8/9,6
GFLOPS; 24,4/45,2
16/8 , GIPS
20
, 15
:
; 32, 64, 80
32, 64
,
10 000
, / 22010 %/50
( ), 120250
-31
(Rockmount 19) (. 3.21).
174 3.
. 3.21. -31:
, ;
Rockmount 19,
3.5. -S
-S,
, -
:
,
;
3.5. -S 175
90 500 ;
-
- .
(. 3.22) :
;
SIC, :
MC 0 MC 1;
IPCC 0,
IPCC 1, IPCC 2;
/ IOCC.
. 3.22. -S
. 500 .
176 3.
SIC :
0 1
,
/;
-S IPCC;
/ -
/ IOCC.
0 1 -
4 ,
8 . -
8 250
. , -
2 8 2 250 = 8 /, 2 -
.
IPCC 0, 1, 2
. -
3 8 = 24 . IPCC
2 500
. ,
4 / ( 2 /
),
12 /.
.
IOCC /
.
,
-
( DMA).
1 500 .
2 / (1 ,
1 ). -
, . 3.9.
3.6. MB3S/C 177
3.9. -S
, 500
:
; 8, 16, 32, 64
32, 64, 80
:
64 , GIPS/GFLOPS; 10,0/4,0
32 , GIPS/GFLOPS; 15,9/8,0
168 , GIPS 21,539,5
- 1- , 64
- 1- , 64
- 2- (), 2
- , 1024
- , 64
-, / 16
, / 8
, / 12
/, / 2
, 90
, . 218
, 1,1; 1,8; 2,5
, 13
/ , . HFCBGA/1156
, 35353,2
3.6. MB3S/C
MB3S/C,
-S, 4- -
, :
, -
,
;
178 3.
-
- ;
Intel
IA-32 (x86), -
;
.
,
,
. -
-
.
3S/C 3S1/C
3S2/C -6U Compact PCI, -
Compact PCI.
3S1/C -
, -S,
,
/.
-
-S.
-S . 3.23,
MB3S/C . 3.10.
. 3.23. -S: MB3S/C;
MB3S1/C
3.7. -2+ 179
3.10. 3S/C
, GIPS/GFLOPS:
64 ; 34,3/15,4
32 53,0/29,5
, 8
, / 32
: PCI Express 8x, PCI 64/66, SATA, IDE, Ethernet 10/100/1000,
USB 2.0, IEEE 1284, Video, AC-97, RS-232, SPI, I2C, GPIO
3.7.
-2+
, , -
, -
/ ,
.
, ,
, ,
[26].
-
,
. -2+ -
,
,
DSP- ElCore (
),
DDR2-800,
/ .
IP-
-S:
, L2-, -
SIC
180 3.
/. ,
, -
. DSP-
IP-, .
-2+ . 3.24.
-
(Core Integration Controller (CIC)).
MRC (MAU Request Controller),
, SC -
.
. 3.24. -2+
, CIC, -
Coh_box, -
SC, ,
,
.
3.7. -2+ 181
DSP-
, -
.
DSP-,
, -
. ,
DSP- ,
.
DSP -
AXI-box. -
, AMBA AXI 3.0 ARM
[26], -
.
AXI- (DMA-, DMA-
, I/O-, I/O-), -
4 / DSP (500 ).
, ,
, -
DSP-. , -
, /-
(IO-Link0), (South Bridge),
(IO-Link1) -
, ADC-.
,
-2+, -
. - -
MC
(
) -
[27].
,
-2+ 500 -
: DDR2-800,
DDR2-666, DDR2-600 DDR2-500.
,
. 3.11.
182 3.
3.11. -2+
90
, 500
2
DSP (Elcore-09) 4
( CPU + DSP):
64 , GFLOPS; 8
32 , GIPS/GFLOPS 44/28
- ( ), 64
- ( ), 64
- ( ), 1
DSP ( DSP), 128
-, / 16
12,8
( ), /
3
, / 4
/ 2
/, / 2
, 2
289
, 368
9
/ HFCBGA/1296
, 37,537,5
, 1,0/1,8/2,5
, ~25
1. ?
2. .
3. .
4. ?
183
5. ?
6. ?
7. .
8. , -
.
9. , -
.
10. , -
.
11. ?
12. ?
13. -
?
14. -
?
15. ?
16. -
? ?
17. -
?
18.
?
19. ?
20. -
?
21. -
?
22.
?
23. ?
184 3.
24.
( )?
25.
?
26.
?
27. -
?
28.
?
29.
?
30. ?
31.
?
32. -
?
33. ?
34. ,
?
35. -
?
36.
?
37. ?
38. -
?
39.
?
40.
?
185
41. ?
42.
?
43. ?
44. ?
45.
?
46.
?
47.
?
48. -
?
49.
?
50. -
?
51. ?
52. ?
53.
?
54. ?
55.
?
56. ?
57.
?
58. -
?
59. ?
186 3.
60. -31
.
61.
-31.
62. . , -
.
63. -
.
64. , -
.
65. -
.
66. . , -
.
67. .
68. -
AAU.
69.
.
70. -
-31?
71. -31.
72. -S.
73.
-S?
74. 3S/C?
75. -2+.
76. -2+?
4.
188 4.
-
, , -
(), -
,
. SPARC
.
-
, .
86
( )
++.
4.1.
4.1.1.
SPARC
,
Linux 2.6.14, -
.
, -
, , , , -
.
,
Linux , -
[28], -
-
libpthread elpthread [29].
OSL_90 ( Linux 2.4.25) -90-
OSL_3M1 ( Linux 2.6.14) -
-31. -90
OS_E90 Solaris 2.5.1.
.
,
,
.
.
4.1. 189
-
, ,
.
10.
4.1.2.
:
, -
, -
-
;
, -
( ) .
;
-
. , , ,
( ), , , ,
, , ,
;
, ,
.
, -
.
.
Xorg,
, GTK+ Qt.
,
:
apache;
190 4.
libpcap;
curl lynx;
mailx;
ntp;
openssh;
openssl;
portmap;
rdesktop;
rpc.rstatd;
yp-tools ypbind-
mt;
xinetd;
, inetutils, iproute2, net-
snmp, net-tools, nfs-utils, tcpdump, xproto.
Sylpheed ,
GTK+. :
( -
,
);
, POP3/APOP, IMAP4,
SMTP, NNTP, IPv6, -
;
-
, ( , ,
, , , . .) ;
( 30 ), -
.
Sylpheed
,
.
4.1. 191
Links , -
.
-, ,
, , -
JavaScript. ,
,
, TELNET
.
Links -
,
, .
Sendmail
.
,
,
. Sendmail -
.
,
, -
vncviewer (Terminal
Server Client).
, , -
, -
,
(, . .). vncviewer
Linux-,
Windows-,
Linux-.
VNCserver
,
. ,
, , -
192 4.
, ,
, -
.
-
Gdb Strace. Gdb -
, -
, ,
, ++, Free Pascal, FreeBASIC, ,
. Strace ,
().
-
,
ed, ede, vim, -
espgs.
, , -
.
Xfce
Xfce ,
-
. Xfce -
, -
.
Xfce :
, , , ;
;
, , -, .;
.
Xfce ,
.
4.2. 193
4.1.3.
, -
, -
.
:
-
;
,
-
;
,
, ;
,
,
;
.
4.2.
,
4.2.1.
, ++,
,
.
SPARC
,
,
, .
,
,
194 4.
. -
.
,
[30], -
,
.
, ,
.
, -
. -
, ,
, .
-
, .
-
,
.
. -
.
-
,
. -
, -
, ,
. -
.
-
.
.
-
[31].
4.2. 195
4.2.2.
.
,
. -
, -
,
. -
,
( ), -
[32].
-
,
.
.
,
, .
, -
, ,
.
-
SPEC 2000
3,01 7,66
Ultra 10.
, -
, ,
(-
) [33]. -
, -
, ,
,
. ,
196 4.
,
-
.
, .
,
.
-
, -
EML,
.
10 .
-
[19].
, -
, , -
, .
( ),
, -
. -31
. -
, .
-
, -
:
, ,
, -
,
.
libepl, -
.
SPEC 95 SPEC 2000
-3 1 1,42, 77% -
.
4.4. 197
4.3.
,
, ,
.
, ++ -
, :
(, , -
, , . .);
(
BLAS1/2/3 LAPACK);
(
, (),
, , );
( , -
, , -
, , , -
, );
(
, ,
. .);
( -
);
( , -
).
4.4.
86
-
, , -
, , , ,
198 4.
.
,
.
,
[34].
-
. -
x86-, BIOS,
, .
-
x86-.
Linux- Linux.
Linux- x86,
.
-
, .
,
,
.
.
() ,
.
,
.
, -
,
.
( , , ).
, -
,
.
, -
(
4.4. 199
) .
. , -
,
.
. -
,
.
, -
(, , -
)
, .
. 4.1 -
,
. 4.1.
x86 86
200 4.
-S ( 500 ),
Pentium-M (1000 ) Atom D510 (1660 ), -
.
4.5.
++
4.5.1.
, ,
.
C C++,
-
, -
.
.
,
, .
. -
,
, ,
.
-
, . ,
,
. , ,
-
. ,
, .
,
, ,
. .
4.5.2.
,
-
.
,
4.5. ++ 201
, , , , -
,
[35].
, -
-
() , -
.
,
, ,
.
, -
.
,
,
.
-
,
, -
.
, , -
,
,
.
-
, -
.
4.5.3.
, , -
- .
,
,
-
.
202 4.
. -
, ,
,
. , , -
,
, -
,
, .
. -
. ,
, , -
, .
.
,
,
.
.
.
.
. -
. , , ,
. ,
,
.
,
-
, .
, .
.
, -
. , , -
,
4.5. ++ 203
.
, ,
.
. -
. ,
, ,
.
,
, , ,
, -
.
, , -
. -
, ,
, .
, -
C ++
,
C
.
. -
.
-
,
-
.
,
, ,
,
, .
-
-
, .
204 4.
.
-
.
.
, -
-
, .
-
-
.
. -
-
,
,
.
.
,
.
, malloc, realloc, calloc, free
C, new, delete C++.
, , , -
.
-
. ,
2, , -
(
, -
). , ,
(
). ,
-
,
.
4.5. ++ 205
,
,
. , ,
.
, .
, -
, , .
-
. :
, ;
, -
,
.
. -
, longjmp C throw
C++, ,
,
.
setjump longjmp C, -
. jump_buf,
, , -
setjump.
longjmp
, .
-
.
, ,
. ,
,
set_jump,
, ,
.
,
, -
jmp_buf ,
, setjump, .
- , jmp_buf , -
,
206 4.
jmp_buf. -
, , jmp_
buf ,
longjmp.
,
. ,
setjump, , -
.
C++
. ,
,
,
. -
, try ( ).
,
,
,
. -
catch
, .
.
. -
. -
, -
.
,
,
,
. -
.
.
.
4.5. ++ 207
,
.
, .
-
,
,
. -
.
.
. ,
.
memcopy, . -
-
,
, .
, ,
, -
.
. -
-
(, C++),
.
.
. -
(
, ).
. -
,
, . ,
-
.
, :
208 4.
1. ( -
, ).
2. ()
.
3. ,
, -
.
4. ,
,
( ),
,
.
5. .
6. , -
.
.
1. ,
. -
1 2.
2. ,
. 5 6.
3.
,
. -
3 4.
, -
.
(
), ,
.
++, -
-
, ,
209
.
,
, .
-31
(. 4.1),
, SPECint 95
SAMATE,
. -
(buffer overflow), -
,
.
4.1. -
-
7 4
SPECint95 8 7
888 874
SAMATE
, -
.
1. -
?
2. -
?
3. -
?
4. ?
5. , .
210 4.
6. ?
7.
?
8. -
?
9. ? ?
?
10.
?
11. ,
.
12.
?
13. ?
14. ?
15. -
?
16. ?
17. ?
18. ?
19. ?
20. ?
21.
?
22.
?
23.
?
212
1.
-90
( )
-90 -
(. 1.1 1.2, . 1.1)
- , -
,
,
.
. 1.1. -90
: 1 ; 2 ; 3
15; 4 ; 5 114-
60-20; 6 -; 7
-; 8 19-; 9
(); 10 ; 11
1. -90 213
. 1.2. -90
1.1. -90
-R500
24
, 500
, 440/205
MIPS/MFLOPS
, 512
-, 48 (32 , 16 )
214
1.1 ()
-, 4
- , 36
,
, 220 22
, 50 1
, , 800
/ Fast Ethernet, SCSI, , RS-232/RS-
423, Centronics, -3, 519, 553
, 9000
, 12
-90
(. 1.3 1.4, . 1.2) -
.
. 1.3. -90
1. -90 215
. 1.4. -90
1.2. -90
-R150
4
, 150
, 2561024
, 236
10/8
(SPECint95/SPECfp95)
220 /50 , 220 /400
, 400
SBus (12 )
, 9000
, 12
216
,
, - ,
.
-
, - . -
.
-90,
cPCI, -
.
(. 1.5) (. 1.6) .
4- 8--
.
. 8-
.
, -
6U. -
- .
. 1.5. 8- -90
8- . 1.3,
. 1.7.
1. -90 217
. 1.6. -90
1.3. 8- -90
-R500
4
, 500
, 1024
, 36
35/28
(SPECint95/SPECfp95)
220 /50 , 27
, 650
, 9000
, 20
, 12
-90
() (. 1.8 1.9, . 1.4)
-
, -
, ,
,
.
218
. 1.7. 8- -90
. 1.8. -90
1. -90 219
. 1.9. -90
1.4. -90
-R500
4
, 500
, 256
, 36
(SPECint95/ 10/8
SPECfp95)
SBus (4 )
220 /50
, 100
, 10 000
, 20
-90 PC ATX
(. 1.10 1.11, . 1.5) -
.
220
.
SBus PCI, -
PCI USB.
. 1.11. -90
PC ATX
1. -90 221
1.5. -90
PC ATX
- -
-R500 -R500
1 2
, 500 500
, 5121024 5121024
, 36 36
10/8 20/16
(SPECint95/SPECfp95)
PCI, 4 PCI, 4
220 /50 220 /50
, 100 100
, 10 000 10 000
, 20 20
-90 -
() (. 1.12 1.13,
. 1.6) -
, .
. 1.12.
222
. 1.13.
1.6.
-R500
, 500
, MIPS/MFLOPS 500/200
, , 512
, , 8
, " 15
, 102476818
, / 2
350
-, 4
/:
USB 4
RS232/422 2
Ethernet 10/100 1
2 -
GPS/-
, 1036,
, 27
1. -90 223
3 /, 16,8
10 /, 14,4
, 20+50
2g
15g, 515
100g, 15
, 0,75
()
-90
. 1.7.
1.7. -90
M 100 1- SBus-
()
SBus
600 /; 1- SBus-
50 ;
8
/ 600 /; CompactPCI, -
50 ; 6U
2 8
600 /; 1- SBus-
50 ;
16
80 /; 1- SBus-
500 ;
1
53 15 /; 1- SBus-
553 400 ;
2
224
1.7 ()
19 9,6 /; 1- SBus-
519 20 ;
( 4
)
, , / 1 /; , :
1- SBus-
267.65.5287 267.65.5287; ;
( 2) 1 + /:
CompactPCI (-
)
() : 1- SBus-
RS-232 8;
IEEE 1284 1
(-2, RS-232 IEEE
1284)
/, / 1 /; CompactPCI, -
6U
267.65.5287 267.65.5287;
( 2) - :
SBus 2 2;
/ ;
SBus 2
, /, / , /: 1280 1024, 76 , 1-
- 832 , 8 ; SBus-,
/: 1600 1200, 60 , 832 CompactPCI
, 8 (), PCI
2.
MBus
-
/ 64-
MBus. , -
40120 .
128 800 /.
MBus
. ,
(, ), (, 1
32 ) .
, ,
. , , -
.
MBus- . -
, , -
. ,
, .
MBus .
, MBus, -
MOESI (modified, owned, exclusive, shared, invalid),
: , ,
, [Jim Handy].
MBus . 2.1.
I (In) O (Out).
.
MCLK MBus.
MAD[63:0] .
MAD[35:0] . MAD[63:36]
, .
MAD[63:0] . -
, . 2.1. ,
(8 ), .
226
2.1. MBus
MCLK I MBus
MAD[63] MAD[0] I/O , ,
MAS# O
MRDY# O
MRTY# I
MERR# I/O
MSH# I/O
MIH# O
MBR# I/O
MBG# I
MBB# I/O
IR[3] IR[0] I
MID[3] MID[0] I
AERR# O
RSTIN# I
. 2.1. , , MBus
MAS# .
.
.
MAS#. , +3
MAS#, MAS# +0.
MRDY# MBus.
, ,
. 2.2. MRDY#, -
. (MRDY#, MRTY# MERR#)
() .
2. MBus 227
MRTY# MBus.
, ,
. 2.2. MRTY#,
,
.
.
MERR# MBus.
, .
MERR# , .
2.2.
: H , L .
, -
, , ,
,
.
MBR# MBus.
MBus, . MBR# -
, MBus.
MBG# MBus. ,
.
MBG# .
MBB# MBus. -
, MAS# MRDY#
, (,
).
228
MIH# . MBus-
.
. ,
.
MSH# . MBus-
.
, MBus -
.
, MSH#.
RSTIN# . -
.
AERR# .
,
.
.
, .
IRL[3:0] .
.
IRL[3:0].
ID[3:0] .
.
MID[63:60].
-
, .
MBus,
MAD[63:0].
MBus, -
MAS#. MBus MAD[61:0]
. . 2.2
.
MID S VA M L C
63 60 59 58 53 52 46 45 44 43 42 40 39 36
35 0
. 2.2. MBus
2. MBus 229
2.3.
: H , L .
. 2.4.
230
2.4.
: H , L .
36 .
MBus.
- -
.
(snooping). .
( ) READ-
. . -
, , .
8 . 2.3.
, -
MAS#.
MBB# . -
MBB# 1/2 .
MRDY# .
, -
MBG#.
.
32 . 2.4.
2. MBus 231
. 2.3. MBus
. 2.4. MBus
232
-
, .
. -
, 8 ,
.
MRDY# 64- .
-
.
, -
MBG#.
WRITE-.
. -
, , .
8
. 2.5.
. 2.5. MBus
, -
MAS#.
.
MRDY# ,
MBB#.
2. MBus 233
-
.
32 . 2.6. -
MRDY#.
. 2.6. MBus
MRDY# -
.
. -
, .
. ,
MIH# .
,
-
. ,
.
,
. -
.
234
. -
32 . -
.
32 . 2.7.
. 2.7. MBus
-
- .
, -
.
, (snoop) .
.
1. , ,
.
2. , ,
, MSH#
( +2 +7).
, .
3. ,
, MSH# MIH# (
+2 +7)
2. MBus 235
, MIH#.
,
.
-
, MSH#.
-
. 2.8.
. 2.8. MBus
,
.
,
.
32 -
. , -
MAS#.
MBB# .
236
. -
MRDY# +2 .
,
, . -
. ,
, .
,
MIH# .
, . MSH#
.
.
. .
, . MIH#
MSH# .
3.
-
, , -
. 3.1.
. .3.1. : opcode
; src1, src2, src3, src4
; rd ; literal
src opcode:
src1
;
src1 src2
;
src1, src2, src3
;
src1, src2, src4
;
src1, src2, src3, src4 -
, -
.
src4.
1 ,
.
,
, -
, ( ).
238
, -
.
32 64 .
, -
.
80- .
-
.
. -
,
.
.
-
.
( ), -
.
.
,
( -
),
.
. -
: , , ,
, .
,
.
. ,
, ,
, .
-
.
3. 239
,
.
.
, .
.
, -
.
-
.
-
.
.
(
).
-
.
,
.
-
, (/
, ). -
.
240
, -
:
- ;
( ,
);
;
;
;
;
-
;
;
,
.
23 ,
, 14 .
4.
( )
-
, SS (Stubs syllable
). -
.
.
, .
1 ,
: ALE0, ALE1, ALE3,
ALE4, 0, 1, 2, , 4, 5. ( ALE -
, AA ,
, -
.)
( ): CD0, CD1,
CD2 ( ), PL0, PL1, PL2 (
), Lt0, Ltl, Lt2, Lt3 ( ).
.
. 4.14.3.
,
(. 4.1, ).
8-
. ()
() . -
. -
(. 4.1, ).
-
10- -
4- middle SS,
AA. ,
0, 2, 0,
242
. . (. 4.2).
.
. 4.1. : ;
. 4.2.
(. 4.3) -
. CD, PL, -
,
CD, CD0,
CD, CD0 CD1,
4. 243
CD. PL. , -
, CD0 CD1 PL1
PL2.
. 4.3.
CD PL ,
,
CD,
LP . -
,
, . 4.3.
, -
. -
64- ,
, . -
2 (Srs2)
.
Lt0Lt3.
32- ,
64- . , 64-
LTS.
-
1101 8- 2.
(16, 32 64 ), -
( 16- -
) ( ).
0, 3, 4
244
5 . 4.4.
2 1101.
. 4.4. :
;
2 0 1011. (10)
, (11)
Lt3. , 0
32- Lt3.
3 1101.
, (
4. 245
11). (64- ) -
, ,
, .
2 4 5 ,
.
(00) LT0, -
. 4
16- LTS0, 5 16--
.
, (B)
.
5.
. ,
,
.
(. 5.1),
(),
(Current window descriptor, WD)
(Procedure stack hardware top pointer, PSHTP).
. 5.1.
(WD.base) -
, (WD.size) .
(
,
).
(PSHTP) -
. (PSHTP.ind) ,
5. 247
,
. ind -
. -
() ,
, ,
, WD.base PSHTP.ind.
, ind (
). , -
.
, , -
(Procedure stack pointer, PSP),
.
,
, -
. (PSP.ind),
, .
.
(User Stack Base Register, USBR)
(User Stack Descriptor, USD).
-
( ).
.
, -
, .
. 5.2. ,
, (USBR), -
( ), (USD) ()
(), ( )
.
. ,
, .
CALL ,
. GETSP,
248
. 5.2.
. 5.3.
5.
249
250
, -
.
RETURN,
.
, .
(. 5.3)
(47:32)
, -
47-32
(USBR). ,
, SBR (Stack
Base Register),
32- SBR.
,
(47:32)
.
-
, ,
, . ,
() -
(procedure stack level, psl),
.
N N + 1.
.
-
: , .
,
.
.
-
.
, , -
,
.
, ,
5. 251
, .
-
-
( ).
, -
.
, .
. , (Array Pointer (AP)) -
,
(Stack Array Pointer (SAR)).
, .
psl -
:
-
, , ,
;
, -
, . -
,
.
psl
.
. ( -
) (. 5.4) CR, -
(Chain File,
CF). ,
. CR,
.
, -
, ,
, ,
252
. 5.4.
, .
(CWD), .
-
() (PCSHTP).
, ,
.
CR, . ,
, ,
. ,
.
, .
, , -
,
,
.
, -
. (
5. 253
), -
, .
, .
-
(). , -
.
, -
, .
-
: ,
-
.
. -
() .
.
6.
. 84 , -
, extended (80- -
, FX Floating point eXtended
), . FX 68 -
,
16- .
extended
68- : ,
. FX . 6.1,
68- A, B,
C, D, 16- .
.
.
. 6.1. Extended
6. 255
extended -
. : -
80 (mode_80).
.
.
.
80
, -
, , .
.
(A, B,
A, B). -
: (PSHTP.ind) ( -
), (PSR.ind) ,
.
-
, . -
WD.fx -
FX. ,
(PSHTP.fxind), ( )
FX. 80.
PSHTP.fxind :
.
, ( -
), ( B).
, :
(2 5) ,
1 4 .
. -
. mode_80 -
80, (. . 6.1).
68-
. ,
256
, ()
.
-
(PSHTP), ,
.
(PSP.ind) , -
.
( ) , -
. -
, , ,
,
. ,
, -
.
-
, , .
(0 2, 3
5). FX 0 2
, 3 5 . -
,
.
0 2 68- .
7.
- L2$
L2$.
, . 7.1.
. 7.1.
:
Opcode (/, .);
Tag [39:16] ;
Index [15:8] ;
NB [7:6] ;
Nbyte - [5:0]
;
Destination & Attrib (RF, U, L1$
. .);
Data ( 2 5).
L2-. -
8 , (4 )
(. 7.2).
. 7.2. L2$
24 -
5 . L2-
. 7.3.
258
. 7.3. L2$
7.1.
A B C
0 0 x 0
0 1 x 1
1 x 0 2
1 x 1 3
8.
MMU
MMU 4 -
. 8.1 -
4- .
. 8.1. 4-
( 0), , ,
, 512 64- ().
, -
512 ( 1).
1-
2- , 2-
3- . (Page Table
Entry (PTE)) 3- .
512 64 = 4 , 1 .
8. MMU 261
,
236, (4 236 -
= 248 ). , -
48- , 227 4--
. , PTE,
, 218 4- .
29 4- . , -
(4 ),
: Root_addr_level_0 [47:39].
, -
, :
Virt_addr_level_1 [47:30] 18 PTE 1-
( 2- );
Virt_addr_level_2 [47:21] 27 PTE
2- ( 3-
4- );
Virt_addr_level_3 [47:12] 36 PTE
3- ( -
);
Virt_addr [11:0] 12 -
(page size 4 ).
4 PTE
2- .
(PTE)
. 8.2.
P (Present) , -
( )
. 8.2.
262
. = 1 . = 0
,
.
W (Writable) .
PWT (Write Through)
L2$.
CD_1, 2 (Cache Disable) :
00 ;
01 DCACHE1 ;
10 DCACHE1, DCACHE2 ;
11 DCACHE1, DCACHE2, ECACHE .
(Access)
= 1
( 3- ).
D (Dirty )
1 .
D .
D.
, D = 0,
, -
.
PS (Page_Size) 0 (1) -
4 (4 ) .
G (Global) ,
.
Avail (Available) -
.
Ph_P_N (Phys_Page_Number) [39:12] .
28 40- . PTE -
4- , 10 [21:12] -
PPN .
8. MMU 263
. 8.3. Intel
9.
DTLB
DTLB VAL -
USED. -
USED , -
. 4 4 ,
VAL USED
.
DTLB
, (hit) -
.
.
. ,
USED-.
USED- ( ,
) -
, , -
, .
,
MPT.
L1$ DTLB 2 . -
MMU.
MMU_CR . 9.1.
. 9.1. MMU
, .
9. DTLB 265
(ROOT);
29 ( 4 K [47:19])
19 ( 4 M [47:29]) -
;
global flag
(DTLB_TAG.G = 0).
hit DTLB -
(DTLB_ENTRY.PHA) -
.
.
DTLB c -
PT,
.
, -
4--
.
-
.
.
10.
RTS_KERN_PRMPT
. -
,
. .
RTS_HIRQ_PRMPT
(TopHalfAck) .
(TopHalfDev) -
( ).
.
RTS_SOFT_ON_HARD BottomHalf ,
TopHalfDev.
.
.
RTS_NO_DYN_PRIO -
. -
. .
RTS_NO_CPU_BLNC -
, -
.
.
RTS_NO_RD_AHEAD .
.
RTS_NO_IO_SCHED (-
). .
RTS_PGFLT_RTWRN ( -
), , , -
.
.
RTS_PGFLT_WRN ( -
),
. .
268
RTS_NO_PTIMERS POSIX. -
.
| ( ) -
mask el_set_rts_active().
RTS_NO_DYN_PRIO, RTS_NO_CPU_BLNC, RTS_
NO_RD_AHEAD, RTS_NO_IO_SCHED .
RTS_PGFLT_RTWRN, RTS_PGFLT_WRN, RTS_NO_PTIMERS
.
1. . . // -
. 2002. 3. . 3135.
2. . .
. .: , 2006.
3. . .
// . . -
. ,
.
2008. 1. . 814.
4. . . //
. : - -
. . . , 2009.
5. . ., . ., . . -
- // .
. . 2010. . 3. . 517.
6. . .
//
-
. 2003. . 315.
7. . ., . ., . . . -
. // . . . 2009.
. 3. . 537.
8. . ., . ., . . . -
-2+ // -
. . . 2012. . 3. . 4252.
270
9. . . -
:
// . . . 2012.
. 3. . 513.
10. . ., . .
// . 2009. 1.
. 3646.
11. . ., . ., . ., . . -
//
. 2008. 8. . 6270.
12. . ., . . ,
. .: ACADEMIA, 2010.
13. The SPARC architecture manual: Version 8. Englewood Cliffs, N.J.:
Prentice Hall, 1992.
14. . . : . /
. . , . . , . . .; .
. . . .: , 2002.
15. . . 4- . .: ,
2003.
16. . . -90 //
. 2005. 1. . 1726.
17. . . -90 -15:
. . .: - . . . , 2010.
18. . ., . ., . ., . .
: -
// . . . 2011. . 3.
. 522.
19. . ., . ., . .
-R1000 //
. . . 2012. . 3. . 2742.
20. The SPARC architecture manual: Version 9. Englewood Cliffs, N.J.:
Prentice Hall, 1993.
271
21. . .
-4R // . . .
2012. . 3. . 1427.
22. Hennessy J. L., Patterson D. A. Computer Architecture. Quantitative
Approach. 4 rev. ed. Elsevier Science, 2006.
23. . ., . ., . ., - . .
// . .
. 2011. . 3. . 2238.
24. . ., . ., - . . -
-
- //
. 2008. 3. . 3539.
25. . ., . ., . .
-
// . 2008. 1. . 6774.
26. . ., . ., . . -
DSP-
// . . .
2010. . 3. . 7081.
27. . . -
// .
. . 2011. . 3. . 130141.
28. . ., . ., . . . Linux -
// . . .
2009. . 3. . 3767.
29. . . NPTL
Linux // -
. 2011. 4. . 7379.
30. . ., . ., ., . . : -
, . .: , 2008.
31. . . -
VLIW- // . 2010. 6.
. 7480.
272
32. . ., . ., . . . -
//
. . . 2012. . 3. . 6389.
33. . .
// . .
. 2010. . 3. . 4150.
34. . ., . ., . . . -
86 // -
. . . 2012. . 3. . 89108.
35. . ., . ., . . . -
-
// . . . V . .-. . -
-. .:
- . . -, 2010. . 2240.