Вы находитесь на странице: 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

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

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

2. MBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
4.
( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.
- L2$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.
MMU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9. DTLB . . . . . . . . . . . 264
10.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

, , , ,
.
, .
, .
. ,
.
,
. ,
, , ,
.
, ,
,
, .
, , ,
.


.

. ,
.
, ,
,
, ,
. ,
, . . . ,
,
.

.
. , ,
. , ,
, . ,
, 1. ,
, .
,
SPARC .
,
.
,
.
, , ,

. ,
,
1

, ,
.

. , .
, ,

, .
- , ,
.
, ,
3- . . . . , (Academia, 2010).
,
, ,
. . . .
,
.
- . . . (-),
.
1
, ,
.
.
2 SPARC,
SPARC
-R500,
.
,
.
3 ,

10

, ,
.
.
, DSP-.
4
() ,
.
:
 . . . : . . ,
. . , . . , . . , . . , . . , . . , . . ;
 - : . . ,
. . ;
 - . . . : . . , . . , . . , . . .

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

AAU
ALC
ALU
APB

API

ASI

BOOT PROM

CISC

CPU
CU
DDR
DMA
ECC
ELF

EPIC

HTML
HTTP
HTTPS

IB
IDE

Array Access Unit


Arithmetic Logic Channel -
Arithmetic Logic Unit -
Array Prefetch Buffer
Application Programming Interface
Address Space Identifier

() ,
Complex Instruction Set Computer
Central Processor Unit
Control Unit
Double Data Rate
Direct Memory Access
Error-correcting code
Executable and Linkable Format
Explicitly parallel instruction computing

HyperText Markup Language
HyperText Transfer Protocol
Hypertext Transfer Protocol Secure
HTTP,
Instruction Buffer
Integrated Development Environment

12

IEEE
LIFO
LRU
LVDS
MAU
MBUS
MFLOPS
MIPS
MMU
MMX
MOESI

MPP
NB
NUMA

PA
PF
PIC
PLU
PMC
PMU
POSIX
PT
PTE

Institute of Electrical and Electronics Engineers


Last In First Out
Least Recently Used -
Low-Voltage Differential Signaling
Memory Access Unit
Module BUS () SPARC
Million Floating Operations Per Second

Million Instructions Per Second
Memory Management Unit
Multi Media Extension
modified, owned, exclusive, shared, invalid (,
, , , )

Massive Parallel Processing
North Bridge
Non-Uniform Memory Architecture
()
Physical Address
Predicate File
Position-Independent Code
Predicate Logic Unit ( PU)
PCI Mezzanine Card PCI- IEEE 1386.1
Pipeline Management Unit
Portable Operating System Interface for UniX UNIX
Page Table
Page Table Entry

PT
RAM
RCU

RDMA
RF
RISC
SB
SBus
SCSI
SDRAM
SMP
SPARC
SRU
TLB
TLU
TU
UUCP
VA
VLIW
VNC

13

Page Table Pointer


Random Access Memory
read copy update ( )
,
remote direct memory access
()
Register File
Reduced Instruction Set Computer

South Bridge

SPARC
Small Computer System Interface
Synchronous Dynamic Random Access Memory

Symmetric Multi-Processors

Scalable Processor Architecture

SubRoutine Unit
Translation Lookaside Buffer

Table Look-Aside Unit


Trap Unit
Unix to Unix CoPy , UNIX
Virtual Address
Very Long Instruction Word
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]

CWP

r[16]
r[15]

r[31]

r[8]

r[24]
r[23]

CWP-1

r[16]
r[15]

r[8]

r[31]

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 (FloatingPointRegisterFile);
 - IU (IntegerUnit);
 () FPU (FloatingPointUnit);
 MMU (MemoryManagementUnit),
TLB (TableLookasideBuffer), 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

. 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

E1

E2

E3

. 2.5.

, , E2
E3 . ,
. .

(3 ).
- L1$ 5-
(. 2.6):
 F I$;
 D (Decode) ;
 E (Execute)
D$;
 C (Cache) (
D$);
 W (Write) IRF.
F

. 2.6. D$

33

2.1. -R500

- L2$
. 2.7. :
 -
L2$;
 C1 -
L2$;
 C2, 3 - L2$;
 C4, 5 - L2$;
 C6, 7 - L2$
;
 C8 - L2$
;
 C9 .
F

C1

C2

C3

C4

C5

C6

C7

C8

C9

. 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.10.
( ) , ,
( ).
( ) .
( )
. , ,
, .
. 14
, 58 .
, .

38

2. SPARC

. 2.10.


, . MBus.
. ,
, .
,
( ), MBus
.
- ,
.
- .

2.1.5.
(ControlUnit, CU)
, ,
IRF , .
,
. ,
. . 2.11.

. 2.11.

2.1. -R500

39

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)

(FMOV, FNEG, FABS)

(FiTOs, FdTOs, FiTOd, FsTOd, FsTOi, FdTOi)

, (FADD, FSUB)

(FMULs, FMULd, FsMULd)

3 (4)

(FDIVs, FDIVd)

8 (11)

(FSQRTs, FSQRTd)

10 (17)

(UMUL, SMUL)

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

(offset)

(PPN)
35

12 11

. 2.14.

VPN (VirtualPageNumber) (offset) (. 2.15).

(offset)

(VPN)
31

12 11

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

R
5

ACC
4

2 1

. 2.17. PT

PPN . 24 36- . PTE 256- , 16- 4- ,


6, 12 20 PPN .

49

2.1. -R500

C . 1,
.
.
M .
() ,
TLB, .
R . ,
( ) PTE
TLB. M, TLB .
ACC . ,
. 2.3.
2.3.

ACC
0

,
, ( ),
( ). ,
.
PTP . 2.18.

32

2 1

. 2.18. PTP

50

2. SPARC

PTP . . ET .
, PTP
PTE , .
ET . 2.4.
2.4. ET
ET

, 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:1

0:3

0:7

2:3

4:5

4:7

2.1. -R500

PA[4:0]

16-

32-

64-

6:7

8:9

8:11

8:15

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 .

55

56

2. SPARC

. .
8 , 8 .
.
,
, .
7
.
( )
.
. 2.6 .
, .
.
2.6.

1 1

0 1

1 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

, MIPS/MFLOPS

440/205

32/64

-, :
;

16
32

-,

-, /

1,6

MBus, /

0,8

4,9

, 2

25

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



,
, MIPS/
MFLOPS

-R500
24
500
440/205

512

-,
-,
- , ,

48 (32 , 16 )
4
36

,
,
, ,

/

220 22
50 1
800

Fast Ethernet, SCSI, , RS232/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

100 /

SCSI-2

10 /

IEEE 1284

2 /

RS-232

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

500

, MIPS/MFLOPS

1000/380

- ( ),

48 (32 ,
16 )

- ,

512

, /

2,664

RDMA

, /

667

:
PCI, /;
Ethernet, /;
SCSI-2, /;
RS-232, /;
EBus, /

264
100
10
115
10

, .

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 Memory);
 , 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. /

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

:
Dhrystone, GIPS;
32 , GFLOPS;
64 , GFLOPS

2
4
2

( ),

16 (I)

( ),

32 (D)

(),

, /

DDR2-800

-, /


(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

512

-,

- IOC
,
/

1000

PCI, /

264

IEEE1284, /

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

-,

- IOC
,
/

1000

PCI, /

264

PCIExpress, /

500

IEEE 1284, /

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

ALS

ALES

CS

CDS

PLS

LTS

AAS

SS

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

(AAU)

(RF-A)

(CU)


L1$-A

(PLU)


L1$-B

(PF)

(RF-B)

2-
L2$

(MAU)

(TLB)

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

(A)

()

0
(F0)

1
(F1)

(S)

(D)

(B)

(R)

0
(E0)

3.3.

(A)

(Associative search). . () (ITAG) (IDATA).


() (Instruction Table
Look-aside Buffer, ITLB)

0
(F0)

0 (Fetch 0). (IDATA),


.
(ITLB)

1
(F1)

1 (Fetch 1).

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.

( )

,
( )

( )

_ _

(., , .

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

3.

. 3.3. -

118

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.

128

76

10

64

75

111

32

73

11111

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

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

3.

. 3.12. L1$

152

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-

MAU
L2arb

(write-back)

L2arb

MAU

L2arb


(Invalidate & WbInvalidate)

L2arb

2-

CPU/AAU
CPU/AAU

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

. 3.17.

166
3.

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)

(16)

FIFO j

(32)

48

(RF)

...
FIFO k

(8)

28

28
x2

(Litera)

(32)

(PIB) (32x64p)

:
FIFO (32)

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;
32 , GIPS/GFLOPS;
168 , GIPS

6,67/2,4
9,5/4,8
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

16

300

, /

9,6

160

,
400 /

PCI, SBus

10

:
64/32 , GIPS;
64/32 ,
GFLOPS;
16/8 , GIPS

13,3/19,1
4,8/9,6
24,4/45,2

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;
32 , GIPS/GFLOPS;
168 , GIPS

10,0/4,0
15,9/8,0
21,539,5

- 1- ,

64

- 1- ,

64

- 2- (),

- ,

1024

- ,

64

-, /

16

, /

, /

12

/, /

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 ;
32

34,3/15,4
53,0/29,5

, /

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

DSP (Elcore-09)

( CPU + DSP):
64 , GFLOPS;
32 , GIPS/GFLOPS

8
44/28

- ( ),

64

- ( ),

64

- ( ),

DSP ( DSP),

128

-, /

16


( ), /

12,8

, /

/, /

289

368

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 ypbindmt;
 xinetd;
 , inetutils, iproute2, netsnmp, 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.

SPECint95


SAMATE

888

874

,
.


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 11460-20; 6 -; 7
-; 8 19-; 9
(); 10 ; 11

1. -90

213

. 1.2. -90
1.1. -90

-R500

24

500

,
MIPS/MFLOPS

440/205

512

-,

48 (32 , 16 )

214

1.1 ()

-,

- ,
,

36

220 22

50 1

, ,

800

Fast Ethernet, SCSI, , RS-232/RS423, 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

150

2561024

236


(SPECint95/SPECfp95)

10/8

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

500

1024

36


(SPECint95/SPECfp95)

35/28

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

500

256

36

(SPECint95/
SPECfp95)

10/8

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

500

500

5121024

5121024

36

36


(SPECint95/SPECfp95)

10/8

20/16

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

, ,

, "

15

102476818

, /

350

-,

/:
USB
RS232/422
Ethernet 10/100

4
2
1

2 -

GPS/

1036,

27

1. -90

3 /, 16,8

10 /, 14,4

20+50

2g

15g, 515

100g, 15

0,75

()

223

-90
. 1.7.
1.7. -90

M

SBus

100
()

1- SBus

600 /;
50 ;
8

1- SBus

600 /;
50 ;
2 8

CompactPCI, 6U

600 /;
50 ;
16

1- SBus

80 /;
500 ;
1

1- SBus

53
553

15 /;
400 ;
2

1- SBus

224

1.7 ()

19
519
(
)

9,6 /;
20 ;
4

1- SBus

, , /

267.65.5287
( 2)

1 /;

267.65.5287;
1 +

, :
1- SBus;
/:
CompactPCI ()

()


(-2, RS-232 IEEE
1284)

:
RS-232 8;
IEEE 1284 1

1- SBus

/, /

267.65.5287
( 2) SBus

1 /;

267.65.5287;
:
2 2;
/ ;
SBus 2

CompactPCI, 6U

, /, /

, /: 1280 1024, 76 ,
832 , 8 ;
/: 1600 1200, 60 , 832
, 8

1-
SBus-,
CompactPCI
(), 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

MBus

MAD[63] MAD[0]

I/O

, ,

MAS#

MRDY#

MRTY#

MERR#

I/O

MSH#

I/O

MIH#

MBR#

I/O

MBG#

MBB#

I/O

IR[3] IR[0]

MID[3] MID[0]

AERR#

RSTIN#

6356

5548

4740

3932

3124

4 5

2316

158

70

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

S
60 59

58

VA
53 52

46

45

44

43

42

40 39

36

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

(2 )

(4 )

(8 )

16

32

64

128

: H , L .

. 2.4.

230

2.4.
[3]

[2]

[1]

[0]

32

32

32

32

: H , L .

36 .
MBus.
- .
(snooping). .
( ) READ. . , , .
8 . 2.3.
, MAS#.
MBB# . MBB# 1/2 .

MRDY# .
,
MBG#.
.
32 . 2.4.

2. MBus

. 2.3. MBus

. 2.4. MBus

231

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,

. 5.2.

248

. 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

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.

Оценить