Вы находитесь на странице: 1из 273

, ,

.
.
.
.
.
.

32.973.267
004.382 .7(075)
. ., . ., . .
59 . .:
, 2013. 272 .: .
ISBN 978-5-459-01697-0

, . . . .
, :
SPARC . , -
,
.
-
,
230100 .

ISBN 978-5-459-01697-0 , 2013

.
.

, 198206, -, , 73, . 29.


005-93, 2; 95 3005 .
02.08.12. 70100/16. . . . 21,930. 1050. 0000.
.
194044, -, . , 9.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

3.4. -31 . . . . . . . . . . . . . . . . . . . . . . . . . . 170


3.4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
3.4.2. . . . . . . . . . . . . . . . . . . . . . . 171
3.5. -S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
3.6. MB3S/C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.7. -2+ . . . . 179
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

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
-
() -
,
.
:
 . . . : . . ,
. . , . . , . . , . . , . . -
, . . , . . ;
 - : . . ,
. . ;
 - . . . : . . -
, . . , . . , . . .

. ., . ., . ., . .,
. ., . ., . ., . ., -
. .
. . ,
. . . ,

. . ,
. . . ,
,

. . ,
- . . .

AAU Array Access Unit


ALC Arithmetic Logic Channel -
ALU Arithmetic Logic Unit -
APB Array Prefetch Buffer -

API Application Programming Interface -

ASI Address Space Identifier -

BOOT PROM
() , -

CISC Complex Instruction Set Computer -

CPU Central Processor Unit
CU Control Unit
DDR Double Data Rate
DMA Direct Memory Access
ECC Error-correcting code
ELF Executable and Linkable Format -

EPIC Explicitly parallel instruction computing

HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
HTTPS Hypertext Transfer Protocol Secure
HTTP,
IB Instruction Buffer
IDE Integrated Development Environment

12

IEEE Institute of Electrical and Electronics Engineers -



LIFO Last In First Out -

LRU Least Recently Used - -

LVDS Low-Voltage Differential Signaling -

MAU Memory Access Unit -

MBUS Module BUS -
() SPARC
MFLOPS Million Floating Operations Per Second

MIPS Million Instructions Per Second
MMU Memory Management Unit
MMX Multi Media Extension -

MOESI modified, owned, exclusive, shared, invalid (,
, , , )

MPP Massive Parallel Processing -

NB North Bridge
NUMA Non-Uniform Memory Architecture -

()
PA Physical Address
PF Predicate File
PIC Position-Independent Code
PLU Predicate Logic Unit (-
PU)
PMC PCI Mezzanine Card PCI- IEEE 1386.1
PMU Pipeline Management Unit -

POSIX Portable Operating System Interface for UniX -
UNIX
PT Page Table
PTE Page Table Entry
13

PT Page Table Pointer


RAM Random Access Memory
RCU read copy update ( )
, -

RDMA remote direct memory access
()
RF Register File
RISC Reduced Instruction Set Computer

SB South Bridge
SBus
SPARC
SCSI Small Computer System Interface -

SDRAM Synchronous Dynamic Random Access Memory

SMP Symmetric Multi-Processors

SPARC Scalable Processor Architecture

SRU SubRoutine Unit
TLB Translation Lookaside Buffer

TLU Table Look-Aside Unit -

TU Trap Unit
UUCP Unix to Unix CoPy , -
UNIX
VA Virtual Address
VLIW Very Long Instruction Word
VNC Virtual Network Computing






14


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. -

(IB Instruction Buffer) -


, , -
,
. ()
I$ 64 .
3.2. 101

(CU Control Unit)


, ,
-
. -
,

. ,
-
.
( -

).
(PF Predicate File) -
, , -

.
32 ( -
).

.
(PLU Predicate Logic Unit)

, -
. -
,
- .

, -
, .
- ()
,
(, .).
-
(05), . -

.
. ,
. ,
102 3.

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.

(MAU Memory Access Unit)


.
, -
. 16-
. -
32 64 .

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.

() (SubRoutine Unit, SRU)


, -
.
.
( )
,
. ,
3.2. 131

-
, , ,
,
.
-
, .
- 0
,
0, 2, 3 5- .
-
, , -
, .
:
 ;
 ;
 ;
 .

USBR (User Stack Base Register) -
USD (User Stack Descriptor).

.
,
,
( ).
, -
,
.
()
().
:
 CUD (Current Compilation Unit De-
scriptor);
132 3.

 GD (Current compilation unit globals descriptor);


 TSD (Current compilation unit types descriptor).
, -
, ,
.
GD -
, CUD.
-
( ), .
(CUD, GD,
TSD) . -
CUT (Compilation Units Table),
.
, 32- , -
CUTD,
. -
, ,
.
CUIR (Current
Compilation Unit Index Register), CUIR
.
-
. , -
02. -

, ,
. -
, .
, -
,
. -
CR (chain registers), CWD (current Chain
Window Descriptor -
), PCSHTP (Procedure Stack Hardware Top Pointer
), PCSP (Procedure Chain Stack
3.2. 133

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, ,
.

. 3.19. -31 Pentium II III


SPECfp95

-
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.10. -90 PC ATX

. 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

6356 5548 4740 3932 3124 2316 158 70


0 1 2 3 4 5 6 7
0 1 2 3
0 1

. 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.

MERR# MRDY# MRTY#


H H H
H H L
H L H
H L L
L H H 1
L H L 2
L L H 3
L L L

: 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

MID MBus. ID[3:0]


. MID MBus-

.
S . , -
, MBus- .
MBus-,
.
VA . -
, .
M Boot. .
L .
.
MBB# .
, -
.
. ,
, .
. 2.3.

2.3.

[2] [1] [0]


L L L
L L H (2 )
L H L (4 )
L H H (8 )
H L L 16
H L H 32
H H L 64
H H H 128

: H , L .

. 2.4.
230

2.4.

[3] [2] [1] [0]


L L L L
L L L H
L L H L 32
L L H H 32
L H L L 32

L H L H 32

L H H L
L H H H
H x x x

: 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.

opcode src1 src2 src3 src4 rd literal

. .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$

V0, V1 - dw 03, dw 47.


- -
, , -
. 1 .
5- , (miss).
.
S shared .
S = 1 Coherent Invalidate MAU.
Invalidate CI (Coherent Invalidate) -
CRI (Coherent Read & Invalidate) L2$ (
) L2$,
. Coherent Invalidate S 0, M
1. CI
.
M modified . = 1
L2$. -
(write-back). Coherent Read
Coherent Read&Invalidate
(implicit write-back).
W wait .
W 1 L2$
. W = 1 (
(miss) ,
L2$). wait
, .
Addr tag , [39:16] .

L2$.
MAU:
 Invalid L2$ ;
 Shared ;
7. 259

 implicit Write Back , -


.
( )
(LRU).
, -
.
. (0, 1 2, 3).
B 0, 1. C 2, 3. -
, 0 1, B
1, C .
. 7.1.
, .

(V0 = 0, V1 = 0, W = 0). ,
. , LRU
.

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

V_Val (V_A_Valid) . V_Val = 0 -


.
PV (Privileged) ,
.
Int_Pr (Int_Addr_Protect)
.
Non_Ex (Non_Execute) .
Res (Reserved) ( ).
C_Unit (Compilation_Unit)
CUT.
. 8.3 -
Intel.

. 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

 TLB_EN (TLB ENABLE)


.
 CD (Cache Disable)
.
 SET1, SET2, SET3 , TLB
4 4 .
 CR0_PG (PAGING ENABLE) DTLB
.
 CR4_PSE (Page size extension enables)
4 Intel-.
 CR0_CD (Cache Disable Secondary)
.
 TLU2_EN (TLU ENABLE Secondary) -
-
TLB.
 LD_MPT Memory Protection Table
Intel- .
 IPD (Instruction Prefetch Depth)
: 0 0 , 1 2 .
DTLB
. , DTLB, -
(ROOT = 0)
(MAS) ,
Enable virtual address
translation MMU Control register MMU_CR.TLB_EN = 1.
,
( CONT), -
DTLB.
7 ( -
4 [18:12], 4 [28:22])

4 . -
. :
266

 (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.

Вам также может понравиться