You are on page 1of 699

- http://www.natahaus.

ru/
,
.

.
!
,

.

,
.

.

.

.


.
.

,
, ,
e-mail -
.

COmPUTER SCIENCE

4-

^
-
--

2003

15

1.

18

2.

56

3.

139

4.

230

5.

334

6.

437

7.

517

8.

556

9.

647

663

674

683

1.

,



(1642-1945)
(1945-1955)
(1955-1965)
(1965-1980)
(1980-?)




Pentium II
UltraSPARC II
PicoJavall

2.



RISC CISC



14
15

18
18
19
21
24
29
29
;.... 32
35
37
39
40
41
42
45
45
48
50
52
54

56
56
57
58
62
64
65
69
73
73
74
75
77
81
84

IDE
SCSI-
RAID-
-
CD-R
CD-RW
DVD
-

3.

(flip-flops)






Pentium II
UltraSPARC II
PicoJavall

85
85
87
90
91
92
93
98
102
105
105
108
108
111
119
121
126
129
133
134

139
139
139
142
144
145
149
149
151
157
161
163
163
165
168
168
172
174
177
177
179
182
183
188
191
193
193
200
203


ISA
PCI
USB

-


4.

: Mic-1
: IJVM

IJVM
IJVM
Java IJVM


IJVM Mic-1



: Mic-2
: Mtc-
7 : Mic-4

-




Pentium II
UltraSPARC II
picoJava II
Pentium, UltraSPARC picoJava

205
206
207
215
219
219
220
223
224

230
230
231
237
240
244
245
247
248
252
254
254
258
271
271
274
280
284
290
293
294
300
306
311
314
314
319
322
327
329
330

5.

334

Pentium II
UltraSPARC II
Java

336
336
338
340
342
342
345
348





Pentium II
UltraSPARC II
Java



Pentium II
UltraSPARC II











Pentium II
UltraSPARC II
JVM








-
Pentium
UltraSPARC II
picoJava II



Pentium II
UltraSPARC II
JVM

9
349
350
351
351
352
352
353
354
356
358
360
361
364
365
365
366
366
366
367
369
369
372
373
375
377
377
378
379
379
380
381
383
385
385
386
390
394
397
403
404
404
405
410
412
413
417
418
419
421

10

Intel IA-64
Pentium II
IA-64:

6.






Pentium II
UltraSPARC II

-

7.

?
?

423
423
425
426
429
430
430
431

437
438
439
441
444
445
448
449
452
455
460
463
463
464
465
469
470
471
472
476
479
480
489
493
504
510
511

517
518
518
519
521
524
527
527
529
530
530
531
531
532

8.




SIMD
-



UMASMP
UMA
UMAc
NUMA
CC-NUMA



COW Clusters of Workstations { )

9.









11
536
537
538
540
543
545
547
551
552

556
557
559
564
572
574
579
584
587
587
588
592
593
597
603
605
607
609
619
621
622
626
627
632
635
642
643

647
647
648
649
649
650
651
652
652
653
654

12

665

665
667
669
670
673
674

676


IEEE 754

676
680
683

685

, , ,


. . , .
( , , ).
.
, ,
.
, . 85 , , 5 .
.
Amsterdam Compiler Kit ( ),
MINIX ( UNIX ).
Amoeba (
). MINIX Amoeba
.
.
.
,
(IEEE),
. 1994 . 1997
( )
. (Who's
Who in the World).
http://www.cs.vu.nl/~ast/.


, , -
. , , -
, .
, ,
, ( ,
).
,
,
. , ,
Pascal, Java,
Java .
,
(Intel Pentium II, Sun UltraSPARC II Sun picojava II).

, , , .

.
( , ). ,
.
, ,
, . , ( ) ,
, ,
.
1 -
,
. : Pentium II,
UltraSPARC II picojava II.
.
-: RAID, CD-R, DVD, . .

16

3 ( )

-. ( , PCI
USB). .
4 ( ) .
,
JVM. . . , Mic-4, .
(, Pentium II). , (, ,
, ).
.
5 ( ) .
Pentium II, UltraSPARC II JVM.
6 ( )
Pentium II (Windows NT) UltraSPARC II (UNIX). . , . UNIX
, , , , .
7 ( ) ,
. ,
.
8 ( ) . (UMA, NUMA )
( COW).
. , , .
,
.
, , , .
web- . PostScript
. . , .
: http://www.cs.vu.nl/~ast/sco4/
(Ray Ontko).
.
,
- ,
(Henri Bal), (Alan Charlesworth), -

17

(Koorosh Gharachorloo), (Marcus Goncalves), (Karen Panetta Lentz), (Timothy Mattson),


- (Harlan McGhan), (Miles Murdocca), (Kevin Normoyle), ' (Mike O'Connor),
(Mitsunori Ogihara), (Ray Ontko), (Aske Plaat),
(William Potvin II), (Nagarajan Prabhakaran),
. (James H. Pugsley), . (RonaldN. Schroeder),
(Ryan Shoemaker), -. (Charles Silio, Jr.) (Dale Skrien). (Adriaan Bon),
(Laura de Vries), (Dolf Loth), (Guido van't Noordende)
, .
Qim Goodman)
( , ).
JVM , JVM
. . .
, ,
, Pentium'oM.
, Pentium , IBM-386,
.
, , ,
, .
.

5 68069


, , . , , .
. , :
2 ;
, ;
.
,
. . , . ,
, .
, .
, .
,
. . .
. ,
. , .

, , , , . X,
Y. - .
, .

19

,
. , , . ,
1. ,
0. , 0.
, , 1.
, 1,
0. , 0, , 1. .
0, , 1, ,
0.
0.
, , ,
.
. 0, 1. , 1 0, 1 ,
0 .
1 0
. , 0, . , .
,
1, . 1, 0 0. 1
, 0, , 0, .
1, . , .
, 0,
.
, ,
.
, 0 1
. , 1 , 0,
. , 1 -

20

1.

, , .
.
, , 1. ,
2, 2.
2,
2 . 1, , 1.
, , , , .
, ,
. 1.1. ,
, .

3
3

2
2

1
1

1
,
,

1
,
1 0,
1
1
,
0,

0

. 1.1.

. - ,
, . ,
. ,
, . , , ,
. C++ COBOL
, , -

21

. :
.

, . . ,
0,
. , 1, 2,..., ,
, .
, , .
, ,
.
: .
, ,
, ,
. , , , . , ( ),
. ,
.


. (. 1.2). 0 . ,
1. , 0. . 1.2,
, ,
. .
, .
, , .
, ,
. , , .
(, 0 1). ,
. .
1 , 0 1. , , , 16,32 64, . .
. 3.

22

1.


()


()


()


()

. 1.2. . .

.
8 32 ,
, (- ). .
, . . ,
- , ,
.
, .
. ,
.
,
, .
, ,
2.
,
. , ADD, , , ,
. , ,
2.

23

.
, ,
Western Wombat Model 100X . .
. , , - .
, , .
.
(,
, ). : ,
,
. ,
.
, , , . -
. , , ,
. , , .
. .
.
, .
, . ,
.
, .
, 4, , . 2 3 , 4,
5 , , .
1,2,3 4,5
. 1,2 3 . ,
, , ,
. , , .
.
. 1, 2
3,
. , , .

24

1.

, . .
. BASIC, , C++,
Java, LISP Prolog. , , 3 4. , , . , . , Java .

, .
, , .
: , .
. , .
, . , . , , , . (,
) .
, , , .
.


,
, . , ( 1),
( 0), . - .
, , , , . ,
.
, , ( , , ) , .
, , - , , ,
, .
. , , , ,

25

, .
.
:
.
, , ( , ).
;
. , : , , .
, , , ,
. , ,
X , a Y .

.


1940- 2 :
, , , .
.
1951 , - , ,
[158]. (),
. , .
,
, , .
50- . 60-
. 70- ,
, , .


, ,
. . ,
, - , , 3 5 (
). ,
, , , . 80 ;

26

. , .
FORTRAN,
:
1. , ,
FORTRAN,
.
2. , FORTRAN, .
.
3. , . ,
.
.
4. .
, ,
. , .
5.
.
6. . . .
, , FORTRAN, .
,
,

.
. , ,
, .
, ,
.
60- ,
.
.
, . 1.3 FMS (FORTRAN Monitor System)
IBM-709.

27

'JOB, 5494, BARBARA


"XEQ
FORTRAN

FORTRAN

DATA

END
. 1.3. FMS

*JOB ( ,
).
*FORTRAN, FORTRAN . ,
FORTRAN. ,
*DATA .
,
( ), .
. *FORTRAN
, *DATA
. ,
.
. , , .
, (
-) . .
.

.

28

1.

. , .
.
60- () , . .
,
. , (, ). ( )
.
, , , .



1970 , ,
, .
, , . ,
, ,
. , INC (INCrement), .
ADD, , . INC
, ADD,
.
.
:
1. .
2. .
3. .
4. .
5. .
, ,
,
. :
1. ( ).
2.
().

29

3. , ,
4. ,
( ).
.


60--70- .
, . ,
.
, , .
, ,
.
. .
, ( , , ). ,
, ,
, . ,
, .
.



. , .
, ,
.
, .
, , . 1.1.


(1642-1945)
, ,
(1623-1662), .
1642 , 19 ,
, . :
.
.

30

1.


(1646-1716) , . ,
.
150
(1792-1871), ,
. , , ,
,
. .
: , - -.
,
, . ,
17000 , , .
4 : (), , ( ), ( ). 1000 50
, . , , ,
. , .
, . .
2 ,
, (, )
. , , .
, .
.
,
. , , . . Ada.
, . , , XIX . , .
,
.

31

1.1.

1834

1936

Z1

1943

COLOSSUS

1944

Mark!

1946

ENIAC I

1949

EDSAC

1951

Whirlwind I

1952

IAS

1960

PDP-1

DEC

- ( 50 )

1961

1401

IBM

1962

7094

IBM

1963

B5000

Burroughs

1964

360

IBM

1964

6600

CDC

1965

PDP-8

DEC

-
( 50 000 )

1970

PDP-11

DEC

-
70- .

1974

8080

Intel

8-

1974

CRAY-1

Cray

1978

VAX

DEC

32-

1981

IBM PC

IBM

1985

MIPS

MIPS

RISC

1987

SPARC

Sun

RISC
SPARC

1990

RS6000

IBM

30- XX
.
,
. ,
1944 ,
.
.

32

1.

.
.
, , .
() . ,
. - : , .
, , . 1940 .
, . .
, ,
. . , , .
Mark I 1944 .
72 23
6 . - . , Mark II,
. .


(1945-1955)
.
. ,
. , ENIGMA, -
.
ENIGMA , ,
, .
, , , .

COLOSSUS.
. COLOSSUS
1943 ,
30 , COLOSSUS
.
, .

33

.
, . (,
, ). ,
.
, , ,
. .
1943 , ,
. , ,
ENIAC (Electronic Numerical Integrator and Computer ). 18 000 1500 . ENIAC 30 140 . 20 , 10-
. ( ,
- , - , .) ENIAC 6000 .
1946 , .
,
, -. .

. EDS
(1949 ). . JOHNIAC Rand, ILLIAC , MANIAC - WEIZAC .
EDVAC (Electronic Discrete
Variable Computer ). , , ,
(
). Unisys Corporation.
. ,
,
, .
EDVAC, ENIAC, , , EDVAC,
IAS1. , . ,
; , - , .
. Immediate Address Storadge . . .

34

1.

,
. ,
.
,
.
,
, . , , ENIAC, 10 (1 9 ),
.
, , - . EDS ,
, , ,
. IAS
,
. . 1.4.

J--

. 1.4. -

: , - , , -. 4096 , 40 , 0
1. 2 20 ,
40 . 8 , 12 4096 .
-
40 , .
. ,
, .
, IAS, Whirlwind I. IAS, ENI
, Whirlwind I
16 .

35

( ), -.
IBM , . IBM , 1953
IBM-701, ,
UNIVAC
.
IBM-701 2048 36 , .
, .
IBM-704, 4 , 36 . 1958
IBM , IBM-709,
IBM-704.

(1955-1965)
Bell Laboratories
, , 1956 . , 50- .
. 16 , Whirlwind I.
-0 (Transistorized experimental computer 0 0)
-2.
-2 , , , 1957 DEC (Digital Equipment
Corporation ), , -0. , PDP-1,
, ,
DEC, . DEC
.
PDP-1 1961 . 4 18
5 . , IBM-7090, IBM-709. PDP-1
. PDP-1 $120000, a IBM-7090 . DEC PDP-1, .
PDP-1 ,
, .
PDP-1 512 512 ,
.
PDP-1, .
DEC PDP-8, 12- .
PDP-8 , PDP-1 ($16000).
(Omnibus) (. 1.5).

36

1.

. PDP-8
I AS. . DEC 50 000 PDP-8
-.

Omnibus
. 1.5. PDP-8

, IBM
IBM-709 IBM-7090, IBM-7094.
2 , 32 16 .
IBM-7090 IBM-7094 ENIAC, 60- .
IBM IBM-1401
. , IBM-7094, . ,
.
IBM-1401 . 4 8 (4 ). 6 , . MOVE, ,
. , 1.
1964 CDC (Control Data Corporation) 6600,
, IBM-7094.
, CDC
. ,
( ) .
, , . , , ,
, 10 .
6600 . ,
, , ( , )
. 6600 .
6600 ,
. , .
CDC-6600, CDC-7600 -1.

37

: , ,
, , : . ( ) ( ).
Burroughs B5000.
PDP-1, -7094 CDC-6600 , (DEC) (IBM
CDC). . 5000
.
Algol 60 ( Pascal), , . , .
.


(1965-1980)
1958 (
) . ,
, . .
1964 IBM , : IBM-7094 IBM-1401,
, .
,
36 ,
. , ,
.
, IBM
. ,
System/360, ,
. System/360 .
().
, .
IBM-1401 IBM-360 ( 30), a IBM-7094 - IBM-360 ( 75). 75 , , , , .
, ,
. .
. ,
-

38

1.

. . 1.2 IBM-360.0 .
1.2. IBM-360


,
,
,
1

30 40 50 60
1
1000
64
1

3,5
625
256
2

10
500
256
4

21
250
512
16

IBM-360 . , , -, .
IBM-360 ,
. IBM-1401,
IBM-7094,
IBM-360. IBM-360
, IBM-1401, ,
IBM-1401, .
IBM-360 ,
.
:
IBM-360, IBM-1401 IBM-7094. .
IMB-360 :
16 32 ,
, IBM-1401. ,
IBM-1401.
IBM-360 224 (16 ).
. IBM-360 IBM-370,
IBM-4300, IBM-3080, IBM-3090.
. 80- 16 , IBM ,
32 , 2 .
, 32
, 32 .
16 . IBM
, 32 . , 4 , 32 .
-
PDP-11, PDP-8co

39

16 . PDP-11 IBM-360,
a PDP-1 - IBM-7094. IBM-360, PDP-11 , , ,
. PDP-1 , , DEC .


(1980-?)
() 80-
, , , .
. PDP-1
,
( ). 80- , , . .
. ,
, .
.
, , Intel 8080, , 8-
. . .
. /, Intel 8080. ,
, .
, Apple ( Apple II), .
, ,
Apple IBM.
, , IBM, , . ,
, IBM
, , , -
, -, ,
.
( ),
Intel 8088 . (IBM PC) 1981
.

40

1.

IBM , .
(
), , , , $49.
, IBM PC,
.
IBM, IBM PC , ,
PC , IBM.
.
( Commodore, Apple, Amiga, Atari) , Intel,
IBM PC ,
. ,
, , .
IBM PC MS-DOS, Microsoft. IBM Microsoft MS-DOS OS/2,
,
Apple Macintosh. Microsoft
Windows, MS-DOS, ,
OS/2 . OS/2 ,
a Microsoft Windows,
IBM Microsoft. ,
Intel Microsoft, ,
Intel, IBM, , , .
80- CISC1 RISC2. RISC . 90- , , ,
. RISC, CISC 2 .


.

. ,
, .
1

Complex instruction set computer .


. .

Reduced instruction set computer . . .

41


.
. (
), .
, ,
Intel ,
1965 .
, ,
.
4 , , , , , ,
. ,
18 ,
60% . ,
. 1.6, , .
100000000

16

10000000
1000000

.
|

100000

10000

64
4

256

16

10
1
1965

1980

1970

1975

1985

1990

1995

. 1.6. ,
60% .

, ,
, -
, , .
, XXI , ,
2020 . ,
, , , 1 .
,
. ( )
. ( ,
$10 ). .

42

, , , . .

, ,
Microsoft : . ,
80- troff ( troff ). Troff .
. , ,
. , ,
, -.

. , . , IBM PC/XT, 1982 ,
10 , ,
. , , , (, , . ),
, , ,
50% .
. , 300 /, ,
56 /, ISDN, 2x64 /, - ,
1 /. - (,
-12/13) $700 , 10
300 000 , 10- 1 ,
, 1 / (1012 /) 100 ,
.


, Bell Laboratories, , .
, , 1000 /
, ,
100 / 100 , 10,
1 000 000 .

43

: ,
, . ,
.
. 1.3.
1.3. .

($)

10

100

1000

10 000

100 000

1 000 000

10 000 000

, ,



-

,

Happy Birthday, - .
, ,
, . ,
, , . ,
, (
, ?).
, , , , CD-, , . . ,
.
, 1 -,
, .
. ,
, .
, web-. ,
, - ( , ) . .
. . :
. , , CD-ROM, ,

44

1.

.
, ,
. Intel
,
, .

( ),
. ,
.
.
.
,
(NOW Networks of Workstations)
(COW Clusters of Workstations). , ,
1 /, ,
. .

. , -.
, 60- . IBM-360.
, , -
1
(1 =1012). , , . ,
, , .
2000 . - , 60- 70- ,
COBOL,
. , .
, .
, 31 9999 ,
COBOL-, 8000 1.
. , , .
, , .
, 31 1999 . . .

45


, , , , ,
.


, : Pentium II, UltraSPARC II picojava II.

Pentium II
1968 , ,
, , , -,
Intel . $3000,
.
60- 20 .
1969 Busicom Intel
12 . Intel ,
, , 4-
,
. 1970 , 4004 2300 .
, Intel, Busicom , . Intel , 4004 ,
Busicom $60000, ,
Busicom Intel . Busicom
Intel, Intel 8- 8008, 1972 .
Intel 8008,
. , , Intel
, 16 ( 8008),
, .
8080, 1974 .
PDP-8, : DEC PDP-8, a Intel 8080.
1978 8086 16- . 8086 8080, . 8088 , 8086.

46

1.

, 8086, 16-
8-, - , , 80861.
IBM 8088 IBM PC,
.
8088, 8086 1 . 80- , Intel
80286, 8086. ,
8086 8088, -,
- -
. 80286 IBM PC/AT PS/2.
, 8088, ( , 8088).
32- 80386, 1985 .
80286, . , , , , .
80486. , 80386,
8 -. ,
() . - , . 80486 ,
.
Intel,
, , (, 80486)
,
Pentium ( ). 80486,
, Pentium ,
( 2).
, ,
Sexium (sex - ), . Pentium
, ,
Pentium Pro. , . , .
Pentium Pro -. 8 8
. Pentium Pro (
) - 256 .
. ,
8088, , 8086. 8- , 8088 . . . .

47

Pentium Pro Pentium II, ,


, -
( multimedia extensions). , .
. Pentium, Pentium Pro.
, Pentium II Pentium Pro -.
1998 Intel
Celeron. Celeron , Pentium II,
. Celeron , Pentium II,
. 1998 Intel Pentium II . - , ,
, Pentium II, .
Intel . 1.4.
1.4. Intel.
(1 = 1 /)


8-

4004

4/1971

0,108

2 300

640

8008

4/1972

0,08

3 500

16

8080

4/1974

6 000

64

8086

6/1978

5-10

29 000

8088

6/1979

5-8

29 000

80286

2/1982

8-12

134 000

80386

10/1985

16-33

275 000

32-

80486

4/1989

25-100

1 200 000

8 -

Pentium

3/1993

60-223

3 100 000

Pentium Pro

3/1995

150-200

5 500 000

Pentium II

5/1997

233-400

7 500 000

64

Pentium Pro +



16-

IBM PC

Pentium Pro Pentium II 36 ,


64 . . , .

48

1.

Intel
8086. , Pentium II , 80861.
, . , Pentium II , 8086, , 8086.
,
Pentium II , ,
Pentium II 7,5 , .
, , .

( . 1.4), ,
. . 1.7.
Pentium

Pentium

1
80286

100

'

Pentium
Pro

80386

8086

8080.

1 -100

80486

8088

8008

10 h
i

1
!
1
1
t
I
i
i
1
,
1
>
I
i
I
i
i
i
i
.
i
1
1970 1972 1974 1976 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998


. 1.7.

UltraSPARC II
70- UNIX,
, UNIX -
, PDP-11 VAX. ,
, ,
, , 8086, () . . . .

49

, UNIX. 1981 , UNIX , , SUN-1 (Stanford University


Network ).
, 27- ,
.
Sun. -, , . , UNIX. 1982
Sun Microsystems. ,
Sun-1, Motorola 68020 , Sun-2 Sun-, Motorola. ,
( ), . Sun Ethernet TCP/IP ARPANET, .
1987 Sun,
, , (RISC II). SPARC (Scalable Processor
ARCitecture ).
Sun-4.
Sun .
, Sun SPARC.
, ,
. , ,
.
MicroSPARC, HyperSPARK, SuperSPARK TurboSPARK.
,
, .
Sun , SPARK
. ,
Intel, . , SPARC,
, Intel, Sun SPARC International
SPARC. SPARC,
, .
SPARC, ,
SPARC ( ).

50

1.

SPARC 32- 36 .
(Integer Unit )
.
55 . 14 . , Intel 8- 16- ( 8088, 8086, 80286), 32-
( 80386), a Sun, Intel, 32-.
SPARC 1995 ,
64- ( 9) 64 . UltraSPARC I,
1995 . 32- SPARC,
64-.

, UltraSPARC , , . , 64-
, 23 ,
64- , , , . VIS (Visual Instruction Set) . .
UltraSPARC web- 2 (, 1 = 1012 ). UltraSPARC .
UltraSPARC I UltraSPARC II UltraSPARC III.
, - . SPARC,
64- UltraSPARC II ( 9).

PicoJava II
Bell Laboratories
.
UNIX. - UNIX
. ,
Bell Laboratories, - , C++,
.
90- Sun Microsystems ,
,
web-. C++,
, , , . C++
Java, . Java
- ,
. , .

51

Java , , Pentium, SPARC


. . , .
Java SPARC,
Pentium, .
, Sun
JVM ( J

ava

Virtual Machine Java).

32- , 226 . ,
.
Sun , Java JVM, JVM .
, , . ,
Java, JVM (, Pentium II
Windows 98 SPARC UNIX) . , JVM, ( Java, World Wide Web).
.
JVM ( ) .
JVM , . JVM , .
JIT- (Just In Time ), .
JVM- , JVM-
.
JVM (JVM- JIT-) Sun JVM ,
JVM - . Picojava I picojava II . (
$50), , ,
, , . , Sun,
picojava,
, , - . .
Java ,
. , ,
Java. -

52

1.

, . , .
JIT-, JVM.
Picojava II ( ), , ,
Sun Microjava 701 . , Sun. picojava II
, Pentium II
UltraSPARC II . Picojava II , 4 ,
JVM .
JVM JVM.
Picojava II : -
, . picojava II , , .
Sun Microjava 701,
picojava II. , , picojava II ,
, .
Pentium II, UltraSPARC II picojava II ,
.
CISC , RISC . .
,
.


, (, ). ,
, .
, ,
( ), , , , .
.

. ,
, .

53

, , , ,
Pentium II, UltraSPARC II picojava II. . -, ,
. -, ,
. ,
, , ,
, . , , .
, ,
Pentium II, UltraSPARC II picojava II.
, .
, ,
.
2 : , , -. .
3, 4, 5 6 , . 1.2.
, .
-1, , ,
, .
, .
3 , . , . , . , ,
, PCI. , , .
4 .
, . .
5 ,
. 3 ,
.
6 , ,
.
Windows NT, Pentium , UNIX, UltraSPARC .

54

1.

7 . , . .
8 , . ,
, . ,
9 , , .


1. :
1. .
2 .
3. .
2. ?
3. , ?
.
4. ,

? , .
5. , . ,
, . . , ?
6. ,
. m , ,
m -1. , , , , +1
?
7.
. , . , , .
8. ?
?

55

9. . ,
(: ).
10. 75- IBM-360 50 , 30,
5 . , .
11. 1.4 1.5 . ,
- .
?
12.
.
?


,
-.
, . . ,
- ,
,
.

. 2.1 .
. , . , , . ,
, ,
. (
-) .
.
. -
(, ) (, ).
. , .
. ,
.
, .
, ,
. , , 1.
, ,
. . , .

57

. , , - .

. 2 . 1 .
-


-
. 2.2. ( 1 32),
(- ) . , . 2.2 . ,
. , .
, .
. , . . 2.2 . ,
.
: -. ,
, .
( ,
1 .) .
. .
. , ,
16- 8086 8088 16-, 32-
32 . . ,

58

2.

^~*

. 2.2. -

,
, -
.
. - ,
. ,
.


:
1) ;
2) ,
1;
3) ;
4) , , ;
5) , , 2;
1

, . .
, .

, ,
- . . . .

59

6) ;
7) 1, .
() .
. 2.1 - Java. : ,
, ,
. ,
, (instr),
(instr_type), (datajloc) (data). . ,
, .
2 . 1 . ( Java)
public class Interp{
s t a t i c i n t PC.
//PC
s t a t i c i n t AC;
// ,
static int instr.
//
s t a t i c i n t instr_type.
// ( )
s t a t i c mt data_loc.
// - 1 ,
s t a t i c i n t data.
//
s t a t i c boolean run_bit = t r u e ; //. ,
public s t a t i c void interpretCint memory[], i n t starting_address{
// .

() , ADD
. .
HALT, run_bit false. ,
, run b i t

PC=starting_address.
while (run_bit) {
instr-memory[PC], // i n s t r
-+1.
//
m s t r _ t y p e = g e t j n s t retype ( i n s t r ) .
//
data_loc=find_data(instr, m s t r j t y p e ) . // ( - 1 , )
1f(datajoc>=0) // data_lock=-l. //,

data=memory[data_loc].
execute(mstr_type.data),

//
//

}
private s t a t i c i n t get_instr_type(mt addr) {.}
private s t a t i c i n t find_dataCint i n s t r . i n t type) {.}
private s t a t i c void executednt type, i n t data) {..}
}

,
, , , . ,

60

2.

, . .
1.
-, , .
() ,
, , ,
.
, . , , .
. , , , .
, . ,
().
,
. , , . ,
, .
,
. . ,
,
, .
, . - , .
. ,
, . ,
,
, .
50- IBM, , , , , , . ,
IBM .
, , . , , ?

61

. ,
1951 ,
, , , . IBM System/360,
, .
.

. :
1)
;
2) ,
;
3) , , .
70- , . .
. , ,
. , 70- , .
70-
, (, -1 Control Data Cyber).
, ,
.
VAX
( Digital Equipment Corporation),
200 . , VAX , . ,
.
VAX, ( DEC). Compaq DEC
1998 .
8- , 70- .
. ,
, . ,

62

2.


.
Motorola 68000 Zilog Z8000, ,
,
. Motorola 68000 , , Z80 ( Zilog Z8000)
, Motorola 6800 ( Motorola 68000).
, , , Motorola
, a Exxon ( Zilog)
.
( )
. ,
Motorola 68000 10 ,
, 100 , 2 500 . ,
, 2000 , ,
.

, 6000 . ,
.

RISC CISC
70- , . , ,
, . - ,
, , . . ( ).
IBM ; , - 801. IBM ,
, ,
.
1980
VLSI .
RISC RISC I,
RISC II. , 1981 , , MIPS. SPARC MIPS .

. , -

I
[

63

,
. , , , , .
, , ,
.
,
( 50).
: DEC VAX IBM
200 300. RISC Reduced Instruction Set Computer
. RISC CISC
(Complex Instruction Set Computer ).
CISC VAX,
. ,
RISC CISC , .
RISC VAX, Intel IBM. , ,
(. . 2.2), , - (, )
. ,
RISC 4 5 , CISC, RISC 10 (
), . ,
,
, RISC.
RISC, , , Alpha DEC,
CISC (Pentium . .) . . : ?
-, RISC , Intel. -, , Intel
CISC. Intel, 486-, RISC,
( ) , CISC . , .
, RISC, ,
.

2.


, RISC, , . (,
10 , ), .
, .
, RISC,
. - , , ,
, .
.
.
.
. .
CISC ,
.
,
.
.
,
. 500-MIPS 500 , , (MIPS
Millions of Instructions Per Second .) , , ,
.
, (
) , , , .
, 1 , 2 , , 2
, . , , .

65

. . , , . ,
. ,
. , .
.
, .
.
, ,
, , . , (LOAD STORE).
. , ( 32). , , .

. .


,
, . ,
, .
(
).
:
. . . .
, .

, . ,

66

2.

, . , .
, ,
, , . IBM Stretch, 1959 .
: .
.
, , , .
. 2.3, 5 , .
1 ,
, . 2 ,
, .
,
. 4 ,
(. . 2.2). , 5 .
1

1
2

4
5
3

. 2.3. 5 ();
(). 9

. 2.3, , . 1
1 1, . 2 2 1, 1 2. 3 1, 2
2, 1 . 4
4 1, 2, 2 3, 1 4. , 5
1 ,
.

67

,
.
. , , 5 (
). 10 ( )
. , . , . , . ,

. :
( ) .
, . 2.3. ,
2 . ,
, 10 . ,
100 , . (2 ) , 100 ,
500 .
( )
( ).
, ,
, 1000/ .


, . . 2.4. , . 2.3.
.
. , (, ), . , ,
(, , ), .
( , )
RISC. 386- . 1
Intel 486- .486- , 386- . 5-
486. . .

68

2.

, a Pentium .
. 2.4, ( 1 2) . (u-) . (v-)
, (FXCH).
1

. 2.4.

, , . , ,
, ( -). . . , Pentium
,
, , . , , ,
Pentium , 486-,
. ,
.
, (, ,
, ). . , . 2.5. Pentium II, ,
( 4). 1987
.
30 CDC 6600. CDC 6600
100 10 . , .
, 3 , 4
. 3 10 ,
10 ,
,
.

69

, (
). . 2 5,
.
4

. 2.5.


, , . ,
, , 3D
. ,
,

- - 20 /, ,
Intel. , , 1, .
- ,

5-10 . 50, 100 ,
.
.
, , , ,
, , .

70

2.


, . .

. , . , , .
- (array processor)
,
. ILLIAC IV ( ). . 2.6. , , 8x8 /.
. , , (
). -
, 50
.
1 ,
.


CZJ CD I I

8x8
/

. 2.6. - ILLIAC IV

(vector processor)
- (array processor). - , . , (array processor),
,

71

. Cray Research, , , Cray-1 (1974)


. Cray Research SGI.
.
, , , . - (array processor)
, ,
(vector processor) , .
.
, . , , .
- (array processor) ,
, , . - (array processor)
, (vector computer),
, . (vector processor), ,
. , , ,
.

- ,
. , , .

, , - .
.
, .
. 2.7, . .
, ,
, .
, .
. 2.7, .
, .
,
.
, , , . (, -).

72

2.

. 2.7. {); ,
()


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

(< 64) , . , . ,
,
, , . .
(
, ). ,

73

2D, 3D, . ,
.
.
, 10 000 .
,
, ,
. ,
. 8.


, . . , ,
.

, .
0 1. . (,
, . .)
, , . ( ),

- ,
. , ,
.
, , . , .
, , IBM,
, . - . 4 . 4 16 10
( 0 9). 6 .
1944 - ;
16 :
: 0001 10010100 0100
: 0000011110011000
16 - 0 9999,
10000 , 16 65536 . , .

74

2.

, , - , 0 9, 0 10
10 .
0 9999, 10 000 .
, 16 . , .


,
. , , .
, 0 -1. . ,
2 . . 2.8 3 96-
. ,
.

0L

1I

| |

| |

5|_

-16 -

II

12

9
10
11
-8

. 2.6. 96-

, ( ),
. m , 2|. , , . 2.8, ,

75

4 , 0 11. ,
. 2.8, 6 2.8, , 3- .
. 12- 212 8 ,
212 64 .
. 2.1 .
2 . 1 .

Burroughs B1700
IBM PC

1
8

DECPDP-8

12

IBM 1130

16

DECPDP-15

18

XDS 940

24

Electrologica X8

27

XDS Sigma 9

32

Honeywell 6180

36

CDC 3600

48

CDC Syber

60

, ,
8- , , .
32- 4 , 64-
8 . , , , (, ). , 32-
32- 32- ,
64- 64- , , 64- .


.
, ,
, . . 2.9,
32- , ( SPARC IBM). 2.9,6
32-
( Intel).
, 32- (, 6)
110 , 29

76

2.

. , 110 3 ( 7, 11 . .). , 110


0 ( 4, 8 . .). ,
, 0.

10

11

11

10

12

13

14

15

15

14

13

12

12

12

32-

32-
6

. 2.9. (),
()

, .
, . , , , ( )
( ).
0, . . 2.10,
, . 2.10,
Jim Smith, 21 , 260 (1x256+4=260).

J I
4 S I
0 0 0

J
S

I J
I S

I J
I S

12

0 21

0 21

12

21 0

16

1 4

16

8
0 21 12
1 4 16

. 2.10. ();
{),

(); ()

. , . , -

77

, 0 19. , . , 0
0 . ., . 2.10, .
, , , 24
212 , . ,
, , , .
, , .
. 2.10, . , , MIJTIMS, . , 0 (), 1 () . .
. , . ( , ,
, . . - .) ,

.


- . , .
.
, .
, , ,
. , m
, ( ).
( =+). n- , m
, .
, 10001001 10110001,
, .
. ,
1 .
, , . d, ,
d , . ,
11110001 00110000 3, 3 .
m- , , 2
. , - -

78

2.

2 2" .
, ,
.
, . .

. d , d+1, d ,
d , 2d+l,
,
d ,
, ,
.
,
.
, 1 (
). 2, . ,
. . , , . ,
.

:
0000000000,0000011111, 1111111111
5 ,
. 0000000111, ,
0000011111 ( ). , , , 0000000000
0000000111, .
, m
, . 2 ,
.
n- . , 2
+1 , ( ). 2, (+1)2<2. n-+, ,
(++ 1)<2. , . 2.2
.

79

2.2. ,

8
16
32
64
128
256
512

4
5
6
7
8
9
10

12
21
38
71
136
265
522

50
31
19
11
6
4
2

, . ,
, 4- . . 2.11 3 ,
, , .
4 1100 , ABC, AC , ( ). . 2.11, .

. 2 . 1 1 . 1100 (); (); ()

, , . 2.11, .
, , , , .
4 : 0, 0, 1 1, 2.
1, 1, 0 0, 2.
. ,
, 0 4.
, 4 3 .
, 0 1,
. 2.11, . , .
, , 0. .
, .

80

2.

, m , ,
+ . ( ),
. , ,
; . , 16-
5 . 1, 2, 4, 8 16
, . 21 (16
5 ).
( ).
.
1 . :
1 1, 3, 5,7, 9,11, 13,15,17,19, 21.
2 2, 3, 6, 7,10,11,14,15,18,19.
4 4, 5,6, 7,12,13,14,15, 20, 21.
8 8,9,10, , 12,13,14, 15.
16 16,17,18,19, 20, 21.
b 2,..., bJt bi+b2+... +b,=b.
, 5 1 4, 1+4=5. 6
2 4, 2+4=6 . .
. 2.12 16-
1111000010101110 21- 001011100000101101110. , ,
, , 5 -
.
001011100000101101110 001001100000101101 .
5 . :
1 ( 1, 3, 5, 7,9, 11, 13, 15, 17, 19, 21
).
2 ( 2, 3, 6,7,10,11,14,15,18,19
).
4 ( 4,5,6,7,12,13,14,15,20,21
).
8 ( 8,9,10,11,12,13,14,15 ).
16 ( 16,17,18,19,20,21 ).
1, 3, 5, 7, 9, 11, 13, 15, 17, 19 21
, . , 1 ( 1,
3,5,7,9,11,13,15,17,19 21). 4 . ,
: 4,5,6,7,12,13,14,15,20,21.
, .
5,7,13,15 21. 2 , 7 15
. 8 13.
, 21 , 16 .
5, . 1, 0. .

81

1111000010101110

3 4

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

. 2.12. 1111000010101110
5 ,16

, .
, ( , ).
, . ,
, . , 1 4 , 2,8 16 , 5 (1+4).

-
, . , .
,
, .
, , . : , , ,
. , , .
, . , ,
, - , ,
. , . , 10 , , 10
, .
, , , -
, .
.
, , , . , , .

82

2.

, .
, , , , ( ).
, , ,
,
, . ,
.
.
, ,
, . - ( cacher 1;
). , -
. . 4.
- : ,
. - , -. , , . -,
.
, ,
-. , .
, , . ( )
. ,
, . , - .
, , . -.
: , -,
. ,
- . 2.13.
, 1
-1 -. ,
.
cash* () , ,
, .
, .

83

'

. 2.13. -
. -

. , m h ,
-
. h=(k~l)/k. , :
=+( 1 -h)m.
h -,
. , h0 , +:
- ( ), m .
-, .
-,
.
- . - - (cache lines). - ,
- ,
. , 64 , 260 - , 256- 319- .
, .
, , 1 , 1 .
- , ,
, , .
- . -. ,
, . . - 16 1 16 ,
2 8 . . -,
, . - 4.

84

2.


-. -, , . .
-, -,
. (Harvard Architecture),

III, . ,
,
,
(). - , . ,
, -
.
, -.
- , - , , - .


90- , . 1 1 .
, .
. (
8 16)
. SIMM (Single Inline Memory Module ,
) DIMM (Dual Inline Memory Module
, ).
(
), . SIMM
. 2.14.

***

. 2.14. SIMM 32 .

85

SIMM 8 32 (4 ) .
, 32 . 4 , , SIMM
32 128 . SIMM (64
).
SIMM 30 , 8
.
. 72 32
. Pentium, 64 , ,
. DIMM. 84 , 168. DIMM 64
. DIMM 64 . DIMM ,
SO-DIMM (Small Outline DIMM). SIMM DIMM , ,
1 10 , .


, : .
, , . , ,
( $49). 1
1 . , 50 10'4 100 . (50 000) . ,
( , ).



. 2.15.
. . -, 32
. ,

86

2.

16 .
, , ,
.

. 2.15.

. , .
, - ,
. :
10 , ( ).
-, .
128 , - ,
,
.
, .
-, , 1 .
1,
,
.
, - .
, . ,
;
.
1

, , . . 1 10 . .
, .

87


1 . 50 , 3 12 , 3 ,
. ,
, , .
, .
, . . ,
( ) , . , , .
. 2.16.

1
0 1 0 2

5-10
. 2.16. ( )

,
. . 512 . (preamble), . (
, , ). .
( ),
, 1

IBM . , .

88

2.

, . 15% .
,
, .
. ,
, . 1
. 800 2000 ,
5 10 (1 =1/1000 ). , ,
, .
, .
.
50 000 100 000 /.
, ,
. . IBM. 30 30 . , 30-30
30-302 , , . 2.17.
. ,
.
, , .
.
, .
. ,
, 5 15 ,
1 . ,
(
), .
3600, 5400 7200 . ,
( ) 4 8 . 10800 (180 ). . 5 10 3
(512 ) 25 100 . ,
. ,
.
1

,
1 10000 . , .

30- . .

40 .

89

/
7
6
5
4
3
2
1

. 2.17.

, - , , , - ,
, , , ,
. , .
. , , .
60 120 ,
, . , . , , .

, ,
( ).
-,
.
,
=2 , , .
, , . ,
. , , 18 , 20,
, .

90

2.

.
( 10 30). .
, ,
. . , -
.
, . . , READ, WRITE
FORMAT ( ), , , 8- ,
, . , .
,
, . , , .

-
. (floppy disk ; , ) .
IBM. ( ).
.
, ,
, ,
,
. , . , , .
. ,
, ( )
, .
: 5,25 3,5 1.
(Low-Density, LD), (High-Density, HD). 3,5
,
1

5,25 2001 , 3,5 , . . , .

91

. 3- , , , 5-.
4 . 2.3.
2.3.
LD5.25

HD5.25

LD3,5

HD3.5

5,25

5,25

3,5

3,5

360

1,2

720

1,44
80

40

60

80

15

18

300

360

300

300

, /

250

500

250

500

IDE

IBM PC XT. Seagate 10 , Xebec
. 4 , 306 17 . . . BIOS (Basic Input Output
System -), .
BIOS , .
, , IDE (Integrated Drive Electronics ),
80- , 2. BIOS , . , ,
0, 1. ,
- BIOS,
8088. 4 , 6
10 , 16 , 63
1024 , 1 032 192 .
528 , (
,
1 ?).
1

, , . . , .

, , .
. . ..

92

2.

528 , (4 , 32 , 2000 ).
- , BIOS ( ).
, ,
BIOS. . , , , .
IDE EIDE- (Extended IDE
IDE),
LBA (Logical Block Adressing), 0 2 2 4 -1.
LBA , , 528 . EIDE . ,
4 , ,
CD-ROM.
IDE- EIDE- Intel, IBM PC.

- .

SCSI-
SCSI- IDE- , , , SCSI-
(Hovard Shugart). 19791 SASI (Shugart
Associates System Interface). 1986
SCSI (Small Computer System Interface
). SCSI
. , , Fast
SCSI (10 ), Ultra SCSI (20 ) Ultra2 SCSI (40 ). 16- . . 2.4.
2.4. SCSI

SCSI-1
Fast SCSI
Wide Fast SCSI
Ultra SCSI
Wide Ultra SCSI
Ultra2 SCSI
Wide Ultra2 SCSI

()


, /

10

10

16

10

20

20

20

16

20

40

40

40

16

40

80

93

SCSI , UNIX, Sun, HP, SGI


. Macintosh
Intel.
SCSI . ,
SCSI . SCSI, -,
-, , .
7 ( 15 16- ). :
, . . .
. ,
.
,
.
8- SCSI 50 , 25
() 25 , ,
. 25 8 , 1 , 9 , . 16- 32- 1 .
, ( . .).
SCSI ,
. , ,
, , ,
. 16 , , . , , ,
. , SCSI ,
,
( UNIX Windows NT). IDE EIDE ,
.

RAID-
, 1,5 .
. 70- - 50 100 . 10 . (, ) 5 10
,

94

,
, ,

, ,
- 1988 , 6 ,
,
, - RAID , RAID Redundunt Array
of Inexpensive Disks , I
Independent () Inexpensive () ,
? RAID- SLED (Single Large Expensive Disk )
RAID ( ) ,
RAID-, RAID-,
, RAID
SLED, RAID-
SCSI-
,
( 7 8- SCSI 15 16-), ,
RAID RAID SCSI-
SCSI-,
, RAID-, ,
RAID -, , RAID -, RAID ,
,
RAID- , RAID-
RAID- , , ,

RAID- 2 18,
, , (strips) no k ,
0 -1 0, 2-1 1
=1 , =2
RAID- ,
2 18, RAID- 4
(striping)

95

,
,
, RAID- 4 , , . , -
.
RAID- ,
, . , RAID, ,
, . , ,
,
.
, .
RAID- , .
, , , , , .
,
, SLED. RAID-, ,
20 000 .
RAID- 5000 ,
. SLED
20 000 , , 4 .
, 1
RAID-.
RAID- .
. 2.18, , RAID- ,
RAID-2. , 4 4 . . ,
, RAID- . , , ,
( ). :
, . .
, , RAID- , .
,
4 , , 7 , 1,2 4 . ,
7 , . 2.18, , 1

, . . , .

. 2.18, RAID 0+1, 1- . . ..

96

. 7 7 , 1
-2.
32- 6 ( ). 38- , , 39 . , 32
, 39- ,
.
, ,
, , ( 32 6
19 ). ,
.
RAID- RAID . . 2.18, . 1 . RAID , ,
.
, , . , ,
1- ,
. , ,
0 , ,
, 1, , . RAID , - ,
.
RAID- ,
, RAID-
(. . 2.18, ) , RAID- , , RAID- , ,
,
,

,
. 1 , , ,
. .

RAID-
5

. 2.18. RAID-

97

98

2.

. RAID- , , . 2.18, .
, .

-
.
, 1.
,
. -
,
.
Philips
. 30 , LaserVision, , , .
1980 Philips Sony CD (Compact Disc
-), ,
.
- (IS 10149),
( ). , , ANSI, DIN . .
IS- (International Standard ). ,
- . - 120
1,2 ,
15 . -- , . ,
. , 2080
-.
- , 0,8
.
, .
(), - , .
, .
. (pit),
- (land).
. . , .

99

0,78 , ,

, ,
, ,
, , ,
, , 0, 1,
/ /
1 0
, 32
22 188 ( 600 1 )
, 5,6 2 19

. 2.19. -

,
,
, 530 ,
120 / ,
200 ,
, , ,
, - (530 ) , 3600 7200

100

2,

1984 Philips Sony -


. ,
, CD-ROM (Compact Disc - Read Only
Memory - ). -

--, - , -,
. ,
. 1 .
.
,
, , ,
. - 14- . , 14 , 8- ,
. . 16- 8- .
42
588 . 192 (24 ).
396 . - - .
- 98 ,
. 2.20. 16 ,
12 - O0FFFFFFFFFFFFFFFFFFFFO0 (
), . 3 , ,
-, , ,
, .
, , ; , , , . .


14
588 ,

42

98 1

16

2048

1-
(2352 )

288

. 2.20. -

101

2 . 1 , 2 20, 16 , 2048
, 228 ( ) 2
2336 .
,
(, , ),
,
, ,
, 98 588
(7203 ), 2048 ,
28%
- 75 /, 153 600 / 175 200 /
,
-- 74 , 681 984 000 650 , 1 =220
(1 048 576 ), 1 000 000
, - , 32 (4 915 200 /),
SCSI-2 (10 /), , SCSI ( , EIDE).
, ,
, - , -
1.
1986 Philips , -, - ,
-
, ,
- ,
- ,
(the High Sierras) , High Sierra (IS 9660)
8 , ( MS-DOS) ,
,
1

102

2.

8 . . , , ,
. -, IS 9660 ,
MS-DOS, Apple, Unix . -
.
IS 9660
32 , . Rock Ridge (
) (
Unix), UID, GID , -,
,
-
, , , . - .
- .

CD-R
, - ( -, ), ,
,
. 90- - ,
.
, , -, .
, . ,
- , . CD-R (CD-Recordable).
CD-R . - CD-R - , CD-R 0,6 ,
0,3
22,05 ,
. CD-R , , ,

103

. - , CD-R , 2.21.
: - . ,
. , , Kodak Fuji
CD-R.
,
. 8-16 . ,
, . . ( 0,5 ) , , ,
. -
-.
-
. CD-R , 1989 . CD-R, ,
CD-ROM XA, CD-R :
, ,
. , 1 , -.

1.2

L
[j

. 2 . 2 1 . CD-R ( ).
- ,

104

2.

CD-R -- Kodak.
-- -,
. , , - . , CD-R
,
.
. - VTOC (Volume Table of
Contents ). .
- VTOC. VTOC
. CD-R
, VTOC, .
VTOC , , , .
. -. - -, VTOC .
.
, , , . , , , CD-R , ,
.
(, ) . CD-R
.
CD-R - 650 . , 650 , .
CD-R
-, . , ,
. -
, .
. - - ( ).
. -

105

, -, , , . ,
.

CD-RW
, ( , , ),
-.
CD-RW (CD-Rewritable ). , CD-R.
( ) CD-RW , , .
: , .
-
. ,
, .

, .
(
), .
CD-RW CD-R, CD-RW CD-R. , ,
, , CD-R
.

DVD
- 1980 . ,
.
,
, , ,
. ,
, , .

DVD (
Digital Video Disk , Digital Versatile
Disk ). DVD -. -, 120 , , -

106

2.

. :
1. (0,4 0,8 , -).
2. (0,74 1,6 ).
3. ( 0,65 0,78 ).
( 4,7 ). DVD 1 1,4 / ( - 150 /). , -
DVD- , -. , DVD- -. ,
CD-R CD-RW.
4,7 ? . MPEG-2
( IS 13346), DVD- 4,7 133 (720x480)
8 32 .
92% , , 133 .
(,
) , . 4 :
1. (4,7 ).
2. (8,5 ).
3. (9,4 ).
4. (17 ).
? , . Philips Sony , , a Toshiba Time Warner
. Philips Sony , , Time Warner ,
, .
, , .
. , ,
, . ,
, , .

0,6 . , 0,6 (, -

107

133 , , , ). . 2.22.
1
> <


0,6

"""^

"*-*.


0,6
2

. 2.22. DVD

DVD , 10 , ,
( ). , ,
DVD DVD: ( NC171 , ), , .
DVD- , ( 3:2) ,
( 4:3).
, , , ,

. ,
. ,

( ).
,
3,5 , 9 .
DVD- , ,
DVD-R ( )
DVD-RW ( ) . DVD ,
, .
NC17 , .
. .

108

-
, : , ( ) - (, ).
. - , .


, , . 2.23.
,
. , DIMM
, , -.
(
-), (
-).
SCSI



. 2.23.

. 2.24.
, -,
- :
, -, .
, .
, (, ),
. ()
, -

109

,
,
. . , .

. 2.24.

-
. , , ,
.
. ,
. . , ,
(Direct Memory Access,
DMA). , ,

.
, , ,
- . , ,
.
-,
. ,
- ?
, , , .
-, , . - ,
-

110

2.

. - - ,
,
. .
,
. , -
, :
. , , .
- ,
.

, ,
. , , - IBM PC, , . IBM
, IBM PC PS/2. PS/2 , PC, ISA (Industry Standard Architecture
). -
, IBM , , IBM.
ISA. , ISA
Instruction Set Architecture ( ), . , ISA Industry
Standard Architecture ( ).
, , -
, , -
. , ,
ISA EISA (Extended ISA ). EISA ISA, . PCI (Peripheral Component
Interconnect ). Intel, , ( ) .
PCI.
. 2.25. -

111

. PCI , , PCI.
, SCSI-, PCI. , PCI ISA, ISA
. 3 4 PCI
3 4 ISA,
- ISA ( ),
PCI ( 1).
-.
.

PCI

SCSI

SCSI

SCSI

_|
SCSI

PCI

ISA

ISA
. 2.25. PCI ISA.
ISA; SCSI- PCI

: . . , , ,
.
.
.
1

,
ISA. . . .

112

2.

. IBM PC , . .
( ). ,
. , , . ,
. , , .

( ). ,
, ( 1 102). ,
. , SHIFT,
>, SHIFT, , , .
SHIFT, CTRL ALT ( CTRL-ALT-DEL,
IBM PC ).

-
, -
. - ,
, . 2.26, . (
: , .) () 50 , .
,
. , , , , .
, , . ,
, . ( 400 1000)
, . 30 60 1. . 2.26, 6. 1

- ( ,
) 150 . , , , . . . .

113

- , , ( ).

. 2.26. - ();
- ()

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


-
,
. . ,
, .
,
, , , .
(Rheinitzer) 1888
( , . .) 1960 . ,
. , , .
, ,

114

2.

, . .
, . .
. , , , . , . ,
. . 2.27, .
, .
, ,
. 2.27, .
. () ,
90.

jS

*
*"

. 2.27. ();
, ()

. .
. . , -

115

, , ,
.
, , . .
, , .
. .
, 640x480
640 , 480
. ,
,
, , .
. ., , - . 60 ,
( , - ).
. , ,
, .


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


: , RS-232-C. , ,
, ,
. .

: . . 2.28 , ( ). ,
,
.

116

2.

\
\\
222

1 ;

ABC

. 2.28.

,
. ,
, . , ,
, . , 25x80 4000 (2000 2000 ). .
- , .
,
. ,
, .
, , ,
.



25x80, , . . . 640x480 , 800x600 .
1280x960 . , , , . , .
. 2.28. - .
,
. , , , 9x14 . .
.
8, 16 24 .

117

, . , . , ,
.
, . -, -. 640x480 (VGA), 800x600 (SVGA), 1024x768 (XVGA)
1280x960. , 4:3,
.
, 8 , 3
. , 1024x768 2,3 -.
- . 8- . ,
256 , 24 .
, . ,
, -
2/3, 256 .
, . , ,
.
.
,
, , , .
- , -
.
1024x768, 2,3 -
.
25 , 57,6 /.
(E)ISA , PCI, .
, , . , . ,
,
, .

RS-232-C
, (
). () ()
,
RS-232-C.
RS-232-C 25 .
RS-232-C , .

118

2.

,
. , ,
RS-232-C,
,
, (-). .
. 2.29 ,
.
, , , , RS-232-C,
, , .

-

RS-232-C

()

ABC

/ S i

(1)
* ~ (2)
- * (3)
-** (4)
- * (5)
- * (6)
(7)
- * (8)
* - (20)
. 2.29. RS-232-C .

, , UART (Universal Asynchronous Receiver Transmitter ),


. ,
UART,
RS-232-C . UART (1 ),
,
. UART , .
110 / 2 .

119

UART ,
. ,
, , UART .
RS-232-C 25 , ( , , ). 2
3 . ( ,
). , ( 1), , . , .
, .
, , . ,
.

, , . ENIAC ,
. 50- . ,
( ), .
, . ,
. .
,
. , ,
. ,
,
. ,
. (
), , .
: , .
, . , , , .
(). , , ,
, -

120

2.

. , , . . 2.30.


. 2.30.

. , .
,
. , , . , , ,
. .
. , , , , . . , . ,
,
.
.
-, : 3 ,
(, 0,01 ). .
, , .
. . .

121


, , . ,
.
, ,
, ,
.

, World Wide Web, . ( -) .


, . 7
24 , .
7 , , 80 5x7.
7 ,
5x80=400 . , . . 2.31, *>,
5x7.
:
. . 2.31, ,
24 ,
.
, , . , .

. 2 . 3 1 . 5x7 (); , 24 .
()

122

2.

( )
, , , .
, , . -,
( 30 ). -,
(,
, , ). -, ,
.
. .
, .
,
, . , , . , /. 300 dpi (dots
per inch ) 720 dpi, 1440 dpi. , , , , .
,
, XV ,
. ,
, .
,
. ,
, .
. 2.32.
( ).
1000 . ( ) - ,
. , . , , .
,
. ( ). , , . ,
. , . ,
. .

123

. 2.32.

,
, , . ,
. . ,
, , . , , ( , ).
PCL PostScript.
300 dpi - , , . ,
600 dpi, (600 dpi). 600x600 /, 0 ( ) 255 ( ).
600 dpi,
( ), ( ). .
( ). ,
6x6 . 0 36 .

124

2.

, . 0 255 .
37 . 0 6 0, 7 13 1 . . (
36 , , 256 37 ). 0, , . 2.33, .
1 . 2
, . 2.33, .
. 2 33,
600 dpi, 100 /. lpi (lines
per inch )

. 2.33. 0-6 (); 14-20 (), 28-34 (),


56-62(), 105-111 (); 161-167 ()


: . , , - .
' , .
. , : ( ), ( )
( ). , .
,
.
: , , . CYMK ( Cyan (), Y Yellow () Magenta () ()).
black , Blue (). , , , .
, , ,
.

125

256 , 16 777 216


. ,
. , , .
, ,
, . :
1. ; .
2. - 256 ; .
3. ; .
4. RGB (Red, Green, Blue , , ) CYMK
.
( ), , .
, CYMK. . , , ( , , ).
,
(, , ).

. . , .
. ,
, . , . , . , ,
. ,
, .
. ,
.
. 4 ,
. 10 (, , ).
,
.

126

2.

.
, , (, , )
. , 1200x1200 dpi
80 115 .
4 , 55 , , , . . , .
.
.
, . ,
. CYMK. - ,

.
.
1,
. , , ( ). , , CYMK , .
. 256 . , . ,
,
. . .

. ,
, ,
.

, 0 0 , 1 3 5 ,
. 2.34, .

; 3. . . .

127

, , . 1000 2000 , ,
, .
,
. , , , . 2.34. . ( 2.34, 6) , 0 1 .
, 1 ,
0 .

2
1

0
1
1

. 2.34. 01001011000100
(), (); ();
()

(. 2.34, ) ,
1 0. : 0,
1. .
(. 2.34, ) , 180 , 0 1 1 0.
45,135, 225 315 , 2
. . ,

128

2.

45 00, 135 01 .

( ) 1 . ,
.
8- , 8 , 8
. , , ,
( , ). ,
( )
, , . 8- , , 10 .

, 9600 ,
104 , ,
. , ,

28 800 /
57 600 /, . 1 ,
, . , ,
. , ( ,
, ,
), . , , .

ISDN
80- ,
ISDN (Integrated
Services Digital Network
). ,
,
,
World Wide Web,
. - ISDN ( ).
.
ISDN, . (
, .)

129

,
64 000 /, 16 000 /.
, 144 000 /. 30- ISDN.
ISDN , ,
( 1 ), , , ,
. , ISDN ,
.
ISDN . 2.35. , . .
NT1 - U- .
NT1, .
ISDN

ISDN

ISDN

ISDN

ISDN

. 2.35. ISDN


, . 26 26 1, 0 9,
: , , , ,
. .
, : , =1, =2,..., z=26, +=27, -=28.
. ,
, . .
.
. . .

130

ASCII
ASCII (American Standard Code
for Information Interchange ) ASCII- 7 , , 128 ( 2 5) 0 1F (
) ,
ASCII , SOH (Start of
Header), , STX (Start of Text), , (End of Text) , ,
EOT (End of Transmission) , , -, ASCII
ASCII
, , .
2.5. ASCII

NUL

Null (
)

10

DLE

Data Link Escape (


)

SOH

Start of Heading
{
)

11

DC1

Device Control 1
( )

STX

Start of Text
( )

12

DC2

Device Control 2
( )

End of Text
( )

13

DC3

Device Control 3
( )

EOT

End of
Transmission
( )

14

DC4

Device Control 4
( )

ENQ

ENQunty
()

15

NAK

Negative AcKnolidgement
(
)

ACKnoligement
(
)

16

SYN

SYNcronous idle ()

BEL

Bell (
)

17

End of Transmission Block


( )

BS

Backspace
( )

18

CAN

CANcel ()

Horizontal Tab
(
)

19

End of Medium (
)

LF

Line Feed
( )

SUB

SUBstitute (
)

VT

Vertical Tab
(
)

ESC

ESCape ()

131

FF

From Feed
(
)

FS

File Separator
( )

CR

Carnage Return
( )

1D

GS

Group Separator
( )

SO

Shift Out
{

)

RS

Record Separator
( )

11.

SI

Shift In
(

)

1F

US

Unit Separator
( )

() 30
I
31

40

50

60

70

21

41

51

61

71

22

32

42

52

62

72

23

33

43

53

63

20

24

34

3
4

44

54

64

73
74

25

35

45

55

65

75

26

&

36

46

56

66

76

27

37

47

57

67

77

28

38

48

58

68

g
h

78

39

9
;

49

59

69

79

7A

J
k

7B

29
2
2

2
2D

2
2F

3D

<
=

4D

5D

6D

7D

}
~

6F

7F

DEL

>

]
-

3F

4F

5F

UNICODE
, ASCII. ,
.
(, systeme), (, far) . .
, ASCII, ,
3 0. (,
), (, ). , ,
, -
.

132

2.

ASCII IS 646, ASCII


128 , 8- Latin-1.

. IS 8859,
. 256
. IS 8859-1 - Latin-1. IS 8859-2
(, , ). IS 8859-3
, ,
. . , , , .
.
, UNICODE,
(IS 10646). UNICODE
(, Java), (, Windows NT)
. ,
.
UNICODE 16- , . escape- .
16 , .
UNICODE 16 , 65 536 .
200 000 , ,
.
, , UNICODE, .
UNICODE, Latin-1 0 255,
ASCII UNICODE.

.
.
, 16 .
UNICODE . ( ): (336),
(144), (256), (96), (112), (128),
(128), (128), (128)(128). ,
, . , . , : . ,
, : , .
, (112),
(112), (48), (48), (256), (96) (192).

133

, .
1024 (, ), , (20 992), (11 156).
, 6400 .
UNICODE , , . ,
, ,
cat? dog , , , , .
, . 50
, , , , , .
. . ,
20 000 ( ). , , , . -
. UNICODE .
UNICODE , , -
(
blue blew, ).
,
- (
, 16- ?). ,
50 000 ( ), 20 992 - .
, ,
, , ,
.


: ,
-. , , .
.
, -, .
-

134

2.

, .
.
,
, , , , ,
.
.
, .
( )
, -
.
.
, , ( ) .
, . : , , IDE-, SCSI-
RAID-. -,
CD-R DVD.
- , ,
. - ASCII,
UNICODE .


1. , . 2.2. , 5 , 10 ,
5 ?
2. 2 ,
? , ?
3. 1 10 , 2 - 5 . , 2 ? .
4. ,
. , . , , , (
).

135

5 - , . 2.7, ?
, ?
6. : ? , .
7. ,
. . ,
. , .
, . (. )
?
8.
.
? (,
.)
9. , . 106 (). , 64 .
100 .
10.
.
: , , G . 109 100 000 . ( )? ( )?
11. ? ? , .
1)
2)
3)
4)

10- , 1024 , 8 ;
10- , 1024 , 12 ;
9- , 1024 , 10 ;
11- , 1024 , 10 ;

5) 10- , 10 , 1024 ;
6) 1024- , 10 , 10 .
12. 3
?: , , . ,
. , ( ?)
8 , 0, 1 2.

136

2.

6- ?
, .
13. 268 435 456 . - , 250 000 000?
14. 0 9.
15. 0 9 2.
16. , .
, ( + ) 2"-1? 3 10.
17.
( ). ,
, . ASCII no , 100 .
, . : .
18. 800 ,
5 32 ? 0, 0, 1,
0 . . 20 ,
10 , 50 .
.
19. , . 2.16, 64
7200 . ?
20. 25 . 1 32- .
Ultra-SCSI,
40 /. 32- 25 .
?
21. , ,
. 0 -
. ,
. .
, ? .
22. LBA 24 .
, ?

137

23. RAID , i . RAID-


? ,
.
24. ( ) - , 74 ?
25. CD-R, . ( ) , - 4?
26. 133 DVD
, . ,
. ,
3,5 , 720x480
24- 30 .
27.
,
-.
?
?
28. 1024x768. 75 . ?
29. , 224 .
1 .
?
30. 50
80 . 2x2 , 25% , . 25 .
25x8x2 .
?
31. ASCII-
2880 / ,
28 800 /, ?
32. , ,
, 16 2. ,
16 .
?
33. , ( )
. ,

138

2.

ASCII ? - 10 000 ? ,
DVD- ?
34. ASCII: 1001001 0100000 1001100
1001111 1010110 1000101 0100000 1011001 1001 1010101 0101110.
35. hamming (ascii, encoded), 7 ascii 11 - encoded.
36. distance (code, n, k),
code k .

. 1.2
, .
, .
, , .
, , . , ( ), . ,
, .
, .
, . .



.
, , , , .

, . 0 1 (, 0), 2
5 (, 1). . , -

3.

140

, .
,
.
, , 0. ,
. , . . 3.1,
, .
; , . , ,
.
VoUt, Vcc (, ), +5
. V,n , , Vout ( ).

. 3 . 1 . (); - (); - ()

, Vin , Vout , .
, , , 0 1 1 0. ( )
, ,
. .
. 3.1, 6 . V,, V2 , Vout. ,
.
, Vout , V], .

141

. 3.1, .
,
,


, - -. . . ,
(Vcc) 1, () 0,
. , ,
. 3.2, . .
, X .
.
-

. 3.2. 5 .

(. . 3.1, ) ,
, -, , 1 , 1.
; . 3.2, . -
. , 1
, 1, 0, 0. , ,
. 3.2, . , - -
.
, . 3.2, . ,
- - ,
. -

142

3.

- -, . (
-, - - , .) , .
-, , ,
.
,
,
. (--).
(- ), , (- ), ,
.
, ,
, .
: - -, n- - . - , , ,
. , +3,3 . ,
. , ,
, 9.


, ,
, : 0 1. .
(1815-1864).
,
,
, .
( , ),
. , .
f, , f(A)=l, =0, f(A)=-O,
=1. (. . 3.2, ).
2" , 2" .
. . . 3.2 .

143

,
00, 01, 10, 11, 2"- , ,
, -
1110, - - 1000, - 0001 - 0111. ,
16 , 16 4- . , ,
, , ,
.
. 3.3, : M-f(A, , ) , 0, 0, 1,
1.
,
.
.
A B C A B C

ABC
1

0
0

. 3.3.
(), ()

144

3.

, , , , ,
1. ,
. 3.3, , 4 , 1. , ,
. , . , () ( ) +
. , ABC 1, =1,
=0 =1. + 1, (=1 =0) (=1
=0). . 3.3, 1 :
ABC, ABC, ABC ABC. ( 1),
. ,

=+++.
. ,
2" , . , ,
.
. , , , , . , :
F=ABC+ABC.
( ) ,
, , , , .


,
2" . 3.3 , . 3.3, ,
, , ,
. ()
, 1,2 3. , 6 , 3
, 3 . . , 5, 6 7
. , , - .
,
( 1). -

145

. ( ) .
. 3.3, , : ,
, . , 3 6 , . ,
.
3.3 ,
:
1. .
2. ,
.
3. 1.
4. .
5. .
, , .
. , ,
, - -.
, , , , . 3.4 , ,
- -. , .
- -, , , .
. , A+B+C+D
(A+B)+(C+D), .
, . 3.4.

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


, ,
, . . , , , (
,
). .

146

3.

. 3.4. (), () ()
- -

+ (. 3.5, ). ,
. , + (+) . . 3.5, (+). ,
.
. 3.5 , (+) +. , . 3.5, , . 3.5, , .
, , , . .
, . . 3.1 . , . ,
0 1. ,
. ,
, +=(+)(+).
, =++.

147

( + )

I 1

. 3.5. : + (); (+) ().


3 . 1 .

1=
=0
=

0+=
1+=1
+=

"=0
=

+=1

()=()
+=(+)(+)
(+)=
=+

+=+
(+)+=++)
(+)=+
+=
+=

. . 3.6,
,
. , -. . 3.6, ,
, , -
.
(. . 3.6, 3.6, ).
(, n- - ).

148

3.

. 3.6. : - (); - (); (); ()

, . 3.6,
, - -.
(. 3.7, ). , , . 3.7, . -,
, , , . 3.7, . ,
. 3.6, , . 3.7, .
, - - . , ()
, , .

XOR

. 3.7. ();
(), (), ()

149

,
. . 3.8,
, F, .
, . ,
, 3,3 5 ,
, . 3.8, <5, . . ,
, , 3,3 5
, , . 3.8, , .

o
ov

0v

0v

. .8. (); ();


(s)

, ,
.
. .


, .
, - . , .
, .


, , () .
5x5 ,
1
.
1

, . , . . , .

150

3.


5 15 20 50 . 5 ,
.
- , , .
(Dual Inline Package, DIP),
, , . 14, 16, 18, 20, 22,
24, 28,40, 64 68 . , .
, . , , ,
:
( ): 1 10 .
( ): 1 100 .
( ): 100 100 000 .
( ): 100 000 .
.
,
, .
. 3.9 ,
-. , 12 . , (Vcc) (GND).
. 1 , , 1. , ,
.
'
14

13

12

11

10

8 8

J
>

>

>

>

7
GND

. 3.9. , 4

151

. 20 . 70-
,

(-).
, ,
.
, . 1 10 .
10
1
. -,
, , 5 -. , 15 000 002 .
0,1 , 18 ,
.
, ,
.
, ,


, . .
. , ,
, , , . , (, . 3.3, ),
. .


2" , ,
. . . 3.10
. , 3- , ,
, , . , , 0, 0, 1
1

. Pentium IV 42 , , .

152

3.

. . . 3.10.
, 14 .

. 3.10.

, (.
. 3.3, ), . 3.11, . , . Vcc ( 1),
( 0). : D; , i . . 3.3,
0, 1, 2 4 0,
; 1, 1. ,
. 3.11, .
,
.
-

153

. 8 ,
000 i l l ( ), 8 . ,
7- 8- ,
.
Vcc

A B C

A B C

. 3 . 1 1 . , (), ,
()

,
2"
.
, .

, - , ( 1) 2" . .
=3 . 3.12.
, , ,
8 , 1 . 0
0 1 , 1 1 2 . .
.
. 3.12 ,
(Do,..., D7) 1; 0. . 1, .

154

. 3.12. , 3 8

, . 3.12, . , , , , ,
, . : Do , Di . .

. , . , . 3.13,
, , 4 , 1, , ,
. ,
0, , 1,
. , 0.
. 0, , , , ;
.
, : 1 , 0 .


, ( ) , , , -

155

. (. 3.14).
12 . ()
. 24 .
,
24x50 . 50
. 1200 .
, ,
.

=
2
2

. 3.13.

,
50 , 50 .
, ,
50x6. 12 , 6 , ( 20 ).
. , . 3.3, . , , . , ,
12 , 50 6 . (
ABC, ABC, ABC ABC;
4 .) ,

. , .

156

3.

,
()

1
12x2=24

J"


1

5

. 3.14. 12 6 .
, ,
, .
,

, , .
, .
. .
, . 3.3, . ,
4 . , , , . 3.11, . ,
. , , -

157

, . .


,
.
8- , , ,
- ,
.


, , , 8 8 (. 3.15).
D o ,..., D7. , , 1 , So,. ., S7. : 0 , 1 .

. 3.15.

, , (
) =1, ,
.
, ,
. =0, ,
.

, , .
, . -

158

3.

. 3.16, . : () . . 3.16,6.
.

. 3.16. ();
()

. ,
. (. 3.17). ,
. 1, ,
1 ( , ). 1, 1 ( ), 1,
1. ,
.
, , 16- , , . 3.17, , 16 .
. 0.
. 1 111... 111
,
. ,
. , .
. 32- 2 : 16- 16-. , , , 16
.
. ,
. 16- -

159

: U0 U1, .
U0 0, U1 1.
, . 16 ,
. . . 16- 8- . .

0
0
0

. 3.17. (); {)

-
,
. - .
. 3.18 , - , . 4 : , , +. ,
Fo F,: 00,01,10 11 ( ) , + , .
, . -

160

3.

Fo Fj. Fo Fi
,
.

< C l !
^ s \ , ^

Fo

. 3.18.


, ,
,
. 1,
.
0 .

, , ENA ( )
ENB ( ). X, INVA ( ). ENA, ENB INVA, 4. -

161

ENA, ENB 1,
, INVA 0. .
Fi
Fo

7 7

5 5

1 -

1-

1 -

! 1

, ,/\\

4
I I

3 3

2 2

1 -

1-

1-

I I

1-
1-
~+
I
Oi

INC

. 3-19. , 8-


. , .
, , . 3.18, .
. . 3.19
8- , . INC
( ) . , +1 ++1.


, . ,
. , . , .
.
. .
1 500 , 1000 2 . ,
.
.
,
. , , .

162

,
( 3 20, ) ( 3 20, )

1 1
2 1
3 2
4 2
, ,

-1

, 3.20. {), (),


{)

,
, , 1 ,
, 2
, ,
. 4 ^, 1
2,122

( 3 20, ) ,
,

163


(. . 3.20, , ),

.
, , . , , . ,
. , .

, , - .
-, . 3.21, . -. ,
, , -.

. 3 . 2 1 . - 0 (); - 1 ();
- ()

, . 3.21, , SR-.
: S (setting ) R (resetting ). 1 () : Q Q. , .
, , , S=0 R=0 (
0 ). , , Q=0. Q -
0, , Q, 1. , 0, 1, Q=0. , , (. 3.21, ).
. complementary . . .

164

3.

, Q=l, a R S 0. 0 1 Q ( 0),
. , . 3.21, , . , 0, , , ,
. 1,
0 1, 0, 1.
: R=S=0 ,
0 1 Q.
. , S 1, Q=0.
1 0, Q=0.
0 , ,
1. , S 1 0 1. R 1, 0, , -
0 10, 11.
, , S 1 1 ( Q=l) , R 1 . ,
S 1, Q 1 . R 1 Q=0. , : S R. , .

SR-
, . ,
SR- (. 3.22).

. 3.22. SR-

,
0. 0, 0 S
R, .
1, S R. , 1

165

( S R),
.
, , S=R=1. : R, S 0, . S=R=1 Q=Q=0,
0,
. 0 ,
, 1 , 1, . 0 ( ),
.

D-
SR- (
, S=R=1), . . 3.23 D.

, , 1, . D=l 1, Q,= l. D=0 1,
Q=0. , 1, D . , D-, 1 . ,
, Q.
D, .

. 3.23. D-

11 .
1 , 6 . .

(flip-flops)
. , ,

166

3.

, 1,
0 1 ( )
1 0 ( ). ,
, .
. , . , .
, , 1.
. ,
, D-. . . 3.24, .

. 3.24. (); ()

, , 0,
.
, - .
. ,
, , d.
(. . 3.24, ). b
. ,
1

* (latch) , i ,
-, . .
.

167

. .
, ( ). , , 20 , 0,0001 , , , ,
. , .
b , , ()
( 5 ). , - (. . 3 24, ). , D-
. 50 5
( , D) ,
, . 3.25.
, , .

. 3.25. D-
3 26 .3 26,
, ,
( clock) 1, ,
. 3 26,6, 1,
0, D. . 3.26, .
, , , . . 3.26,
( 0 1), 3 26,
( 0 1). ( )
, . Set () Preset ( ) Reset ()
Clear (). (Set Preset) Q = l ,
(Reset Clear) Q=0.

168

3.

. 3.26. D- D-

. 3.27, , D- .
14 , . - , . 3.27, . , , (J
11.
, . 3.26, ,
, 11, 0 1. , 1
0, 0.
, 11 ,
, :
, ;
.
. 3.27, ~ . ,
. 8- . , 16- .
1 11. 4.


1 (. . 3.23) 8- (. . 3.27, ), ,
, .
, ,
. 3.28. 3- . 3- . (12 ) , 8- , , , ,
.

v ;
14

1:i

13

11

10

169

CLR

~l
2

>CK Q
PR

> Q
PR

CLR

7
GND

GND
. 3.27. D- (); ()

, . 3.28, ,
. 8 (3 10, 12; 2

170

3.

,; 3 CS (Chip Select
), RD ( ) (Output Enable
)) 3 ,
Ot - 14 ( ), 8- 20 .

|
0

-7

CS-RD
CS
RD

= CS RD

. 3.28. - 4X3.
3- .

, CS 1,
RD 1 0 .
, 3- . .

171

.
, , ; .
, , . 3.28.
. ,
. ( 0, 1,
2 3). , CS 1
1, 4 . , 1.
, . ,
CS 1, a RD 0, ,

. , . CS RD 0,
. , Q ,
, , 0. , , .
.
,
, .
.
, ( ) ,
. -
. , , ,
.
, . 3 29, .
, .
1, (. . 3.29, ).
0,
( . 3.29, ), -
. ,
1.
. 3.29, ,
, 1, , 0.
, 0,1 ( ). -

172

3.

, , ,
. , .

[\

>-

. 3.29. (); ,
1 (); ,
0 {s); ()

,
. CS, RD 1,
1, .
CS, RD 0, .


, . 3.28, ,
.
4x3 ( 4 3 ). 4x8,
5 4 , 5 5 . 4x3 8x3,
,
2.
, .

, .
, ,
, 18 ( ).
- , , , . ,
, 1 , .
. . 3.30 4 : 512 8 4096 Kxl. (
, , .) . 3.30, 19
19
2 8 .

DO
D1

512 8
(4 )

D2
D3
D4
D5

1
2
A3
4

173

_
^
**

5
6
7
8
9
10

***
"

*4096 1
*(4 )

RAS

CAS

"

D6
D7

111
CS

W E

CS WE

. 3.30. 4

.
- , . , -,
- , ,
. , 1, 0. , 0, . CS 1,
CS 0. .
. , , , , .
CS (Chip Select )
. , . , . WE (Write Enable ) , , . , ( (Output Enable
) .
, .
. 3.30, . 2048x2048 , 4 .
, . -
.
RAS (Row Address Strobe ). CAS (Column Address Strobe
). ,
1 .

174

3.

mxn, . , , ,
, : ,
. , , .

, . 3.30, . 8 32 ,
. 4096 Kxl
32- , 32 ,
. 32 , , 16 .
512 8, 4 ,
2 . 32 ,
1,4, 8 16 .


, , : , . ( ). :
. D-. ,
: , , .
. . - .
, , .
,
. , .
, () , . ,
, ,
.
1 1
( 6 ), ( ). . (
). , -

.
. , , FPM (Fast Page Mode

175

). .
, ( ,
, . 3.30, 6).
FPM EDO1 (Extended Data Output ),
, .
, ,
.
FPM, EDO . .
.
- . ,
.
.
, (,
, ). , , .
( ),
( , ).
.
,
, ( ) .
.
, , . , .
, , .
, , . .
, ,
.
, ,
.
15 , 1.
, , ,
.
, . , 27040
, . 3.30, , .
EDO ,
FPM, 90- . . , .

176

3.

- , , ,
, . , ,
, , , - 64 , . -
,
10 , 100 .
,
.
- -. , , - ,
, - . - , - ,
. , -. . , - , ,
100 . ,
- 10 000 , , .
. 3.2.
3.2.

(SRAM)

/
(DRAM)

(ROM)

(PROM)

n3Y(EPROM)

-

(EEPROM)

-
(Flash)

177


, ,
. , (
). ,
, .

.


. . ,
. , , . , ,
- .
:
, . -
( ). ,
. ,
, , , . , , . , .
, .
. , . ,
-, . .

, . ,
m , 2 . m 16, 20, 32 64. , , n- .
8,16,32,36 64. 8 4 , 32- , , 32 ,

178

3.

. , 32 , .
. , .
( +3,3 +5 ),
(). . :
1. .
2. .
3. .
4. .
5. .
. Pentium II, UltraSPARC II picojava II, . , , . 3.31.
-*-
--/-

^
*

*-

_ . . _

F +5v

. 3 . 3 1 . .
.
.


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

179

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

, .
.
, -.
, . ,
-. .
, . ( 50
100), .
-.
-. . 3.32
-.
, . . , ,
. , , .
, , ,

180

3.

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

. 3.32.

.
: Omnibus (PDP-8), Unibus (PDP-11), IBM PC (PC/XT), ISA
(PC/AT), EISA (80386), MicroChannel (PC/2), PCI ( ), SCSI ( ), Nubus
(Macintosh), Universal Serial Bus ( ), FireWire
( ), VME ( ) ( ). , , ,
, ( ). , ,
.
, . ,
,
, . , .

, ,
. , , . . 3.3.
.

181

3.3.

( )

, , , ,
. ,
, .
. , ,
, . ,
, .
, .
,
.
. , ,
, .
, , .
. , , , -, -, - .
, ,
-, - . . - , 3-
, .
^ [128, 135,136]. , ,
.
.
.

182


. , . , 2" .
. .
, , . (,
), . . ,
. , 64 , 232 ,
, 32 , 232 . .
,
. IBM PC 8088 20-
(. 3.33, ). 1 .
20-
20-

20-

4-
80386
4-

8-

. 3,33.

(80286), Intel 16 , 4 ( 20 ),
. 3.33, . , . 80386,
8 , , ,
. 3.33, . EISA. ,
32 .
, . .
:
( ) -

183

( ).
, , ( ). , .
:
. , , .
.
,
. 3.33. , . IBM PC
, , 8 ,
16, 32, .
, . . , , 32 , .
. .
, ,
. . , .
, .


.
, .
5
100 .
. .

. .


, ,
. 3.34. 40 , 25 . ,
500 ,
. , ISA (
Intel) 8,33 ,
PCI 33 66 .
: ,
.
,
40 , . ,
, .

184

3.

3, . 3.34. ,
,
.
, 1 .
ADDRESS, DATA, MREQ, RD, WAIT .
1
2


ns
,

Y
'

'RH

'DH

*. 3.34.

Ti .
Ti .
( ),
.
, .
, , .
, ,
3.

, MREQ RD. , , -, , . 40 , ( ),
2.
, WAIT . ( ),
WAIT.
( 2 ), .

185

, ,
, WAIT .
3
. 3 ( ) , .
, MREQ. RD. .
(.
. 3.34 . 3.4). TAD, , ( .
T A D < 11 . , 1,
11 TV
3.4.

TAD

TML


MREQ


Ti
MREQ

TR L


T t
RD

Tos



MREQ



RD


RD

,
11

, 5 (TDs) 3,
, .
T A D T D S ,
62,5-11-5=46,5 ,
. 40 , 3. 50 , , 3.

186

3.

, 6 , MREQ.
, MREQ ,
. , , 10 .
TR[. , WREQ RD 8
MREQ RD 25+25-8-5=37
. 40
.
TRH , MREQ
R~D , . , , .
,
RT); , , .
, .
. , .
, ,
. , , , , .



, . ,
3,1 ,
4,0 , .
, -, . , ,
, . 3.34,
40, 20 .
. , 10 . ,
2 .
,
, , ,
.
, , . 3.35. . , MREQ, RD

187

, , MSYN (Master SYNchronization).


, ,
. , SSYN (Slavf
SYNchronization).

JC

MREQ

\
RD

MSYN

SSYN
. 3.35.

SSYN , . Oi
, MREQ, RD M$YN
MSYN ,
SSYN, , .
( ) - (. 3.35)
MSYN ,
SSYN. SSYN, , , MREQ, RD MSYN. , MSYN SSYN, .
. , , 4 :
1. MSYN.
2. SSVN
3. MSYN
4. SSYN MSYN.
, . ,
. - ( ) , , .

188

3.

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


,
, - . ,
. .
: ,
?** ,
, .

. . . 3.36, .
, . ,
, . ( ),
. , . .
, .
- ( ).
, , .
, ,
. ,
. , ,

. ,
- .
.
, .
.
,
, . .
. 3.36, 6 2 (
4, 8 16 ).

189

, , ,
. . 3.36, , 1, 2 4
1, 3 5 2,

I
1

. 3.36.
(); ()

,
. . . 3.36, ,
2 4, 4 3. 5 , .
1 2, .
, .
, ,
, . ,
.
, . ,
,
. ,

3.

190

. .
,
.
, , -
. , . , . , -
, . , , . , - ,
, .
. ,
16 .
, .
,
, , , .
,
. .

, (. 3.37).
. .
BUSY. .
.
. 5 .

Busy
+5v

In Out

In Out

In Out

In Out

In Out

. 3.37.

, . , , , IN. IN
, . OUT. IN ,
OUT, IN , , OUT. ,
IN OUT. -

191

, IN , OUT
. , BUSY
OUT .
, , , , .
, ,
. .


,
( ) ( ) . . .
. - - ( 16 32 ). ,
. , ,
(, Ti).
,
,
. . 3.38 , . 3.34,
BLOCK, , . 4
6 12.

'

,-

MREQ
RD
WAIT
BLOCK
. 3.38.

192

3.

. , ,
,
. , ,
0, , 1,
. , , ,
1. , .
, 0, 1, ,
.
, ,
, ,
; .
, , .
.
- -
, . .
, ,
, .
, .
, . IBM PC Intel 8259.
. 3.39.
-4

INT
INTA
RD
WR

CS

8259

D0-D7

+5v
. 3.39. 8259

193

-
IRx (Interrupt Request ) 8259
,
, 8259
INT (INTerrupt ), , 8259 INTA
(INTerrupt Acknowledge ) 8259 ,


, , ,

8259 , ,
RD (ReaD ), WR (WRite ), CS (Chip Select
) Xfl
, , INT 8259,
,
8259 ,

-, 8259

8259 ,
64 -
8259 ,

, , , ,


Pentium II, Ultra SPARC II picojava

Pentium II
Pentium II 8088,
IBM PC Pentium II 8088
( 7,5 , 29 000),

194

3.

8088 , 8088 (
, Pentium II 8088).
, Pentium II 32 . , 80386, 80486, Pentium Pentium Pro, , IEEE 754.
, Pentium II
, 64 64 .
64 , , 32-.
Pentium II Pentium Pro
. . , , .
, Pentium II .
Pentium II -. - 16 16 , - 512 . - 32 . -
. 233 .
Pentium II ,
.
; PCI -. PCI ( ) ,
.
Pentium II ,
. . , , ,
, . , .
Pentium II .
, 8088 Pentium Pro, , . Pentium II SEC (Single Edge
Cartridge ).
. 3.40, , , - . 242 .
Intel ,
, .
.
Pentium II
( !). Intel , () SEC.

195

.14 0 cm.

SEC

Pentium II
6.3 cm
-


16

-

512




16

1 6 cm
. 3.40. SEC

, Pentium II, . , 30 50 .
. , 50 ,
50 , ( ). SEC , . Pentium II
, .
, , . , , . ,
Intel ( ), ,
( ), ,
.
- , . Pentium II ,
.

Pentium II
242 SEC 170 , 27
( ), 35 10 . (,
), 53 .
. 3.41.
6 ; . ,

196

3.

( ).
Intel , . , ASCII.
, , , Intel #. , BPRI BPRI#. , Pentium II .
. . ( ).
BPRI#
. LOCK# ,
.
, .
36 , 0, , , # 33 . 8 . 36 , 236, 64 .
, ADS#.
(, ), . REQ# (,
).
#, ADS# REQ#.
. - .
, , . , , , - . Pentium II ,
8.
. RS# . TRDY# ,
( ) .
.
. D# , 8 . , DRDY# ( ). ,
.
RESET# . Pentium II
, 8088 ( ),
APIC (Advanced Programmable Interrupt Controller
).

197

RESET#

BPRI#
<LOCK#

[ Misc#

I ADS#
I REQ#
[ Parity#

VID

< Misc#

Misc#

Pentium II

11

RS#

< TRDY#

[ Parity*

D#
IDRDY#

]DBSY#
i Parity*

27

- 35

. 3 . 4 1 . Pentium II.
.

Pentium II . VID . ,
8088.

IEEE 1149.1 JTAG. . . ,
. , , ,
, 130 (266F).
130, , ,
.

Pentium U
, Pentium II, . , -

198

3.

.
Pentium II , 8 . 2,
. ,
.
, ,
6 :
1. .
2. .
3. .
4. .
5. .
6. .
. , .
.
- .
,
. .
, .
.
Pentium II , ,
. . 3.41. ,
, . , . - -
. . . 3.42 , .
. 3.42 , .
, , ( ), , .
, . 1 2 :
. 3
(, , ). 4

, DBSY#. 5
, 6. , , 7 ,
. , ,
.

"

CD

S
>

CD

L _ n o aflpecaM__J

X
Z]
D

CD

v
to

TJ

(D

200

3.

UltraSPARC II
UltraSPARC ( Sun). UltraSPARC 64-
SPARC.
Version 9 SPARC, 64- .
Sun, . UltraSPARC I, UltraSPARC II
UltraSPARC III, , . UltraSPARC II,
, UltraSPARC.
UltraSPARC II RISC. 32- SPARC V8. , UltraSPARC II
SPARC V9, VIS,
, MPEG . .
UltraSPARC II 4- ,
. , UltraSPARC II , .
Pentium II SEC, UltraSPARC II ,
5,4 . 787 , ,
. 3.43. , , 64 128 . , -. , . 787 ,
. , ,
.
UltraSPARC II 2 -: 16
16 . Pentium II, - , , Pentium II, UltraSPARC II - , -
.
-
, Intel Sun. - (- UltraSPARC II 512
16 ; - Pentium II
512 ), - ,
. -
( SEC -,
- ), 787
UltraSPARC II -.

201

aaananai
M

1
oaaaaaaa
Dananana
DanananaL_
ananaaaa

. 3.43. UltraSPARC II

, Intel , -
. Sun, , , .
(, UltraSPARC II), , (, Texas Instruments
Fujitsu). Sun , . - , Sun
.
, - .
Sun 25 , Sbus. -. Sbus ,
Sun
UltraSPARC II : UPA (Ultra Port Architecture
). UPA ,
. UPA. UPA ,
UPA
( ) .
. 3.44 UltraSPARC II: ,
UPA - (2 ).

202

3.

UDB II (UltraSPARC II Data Buffer II. Data


Buffer ), .
, - .
, .
- , -
.
18

25
4


35 ^

UltraSPARC
_

^20

?8

UPA


5-


UDBII

128

? ^

. 3.44. UltraSPARC II

4 -, - .
- () 64 . -
256 256 . - ,
- . -
. ,
. 3.44 - . , - . , . 3.44 - .
- , ( ), - . ( )
, - . , . 16 ,
- 4 .

203

- ,
UPA. UPA UltraSPARC II . ( ,
). , .
, , . ( , UltraSPARC II -.)
, , ,
. 3.30.

. , -
, , -. ,
UPA . UPA
( ), . .
8 . 16- .
-, 8 .
UDB . UDB ,
. , -
, UPA, UDB,
. UDB . , UltraSPARC II Pentium II
. .

PicoJava II
Pentium II UltraSPARC II , . :
. .
, 100 . ,
, , , , , , ,
, (
) . , ,
, .

204

3.

,
, .
Java,
. . . -, Java , JVM. ( Java JVM
.) -, .
, Sun JVM. Java, ,
JVM, , ,
.
,
.
picojava II,
microjava 701. Sun,
.
: 64 , PCI, . 3.45. Pentium II
UltraSPARC II, -
( 16 16 ). ,
, - ,
. microjava II 701. :
2 1,5 -.

16

Microjava 701
- ,

PCI

I
I-

. 3.45. microjava H 701

. 3.45 . -,
microjava 701 PCI ( 33 66 ).
Intel Pentium,
. PCI ,
,

205

. , .
PCI ,
(,
web-TV).
-, microjava II701 -. ,
,
. - ,
. (
), , -.
-, microjava 701 16 -,
, .
, , . -
-, . microjava 701
,
, .
microjava 701 BGA (Ball Grid
Array ).
316 . 59 PCI.
PCI . 123 ,
64 , . (7), (3), (11), (10), -(16).
, . picojava II
, . .
. , ,
( ),
, IEEE 1149.1 JTAG.


. : ISA, PCI Universal Serial Bus ( ). ISA
IBM PC.
Intel'. , , ISA.
ISA . Intel . . , .

206

3.

PCI. , ISA,
. USB - (, ).
.

ISA
IBM PC 8088, , - . 62 , 20
, 8 , , -
-. , . .
IBM PC .
, 2
. .
( 31 ), .
.
IBM PC/AT 80286,
. 16- ,
, ,
, . ,
, (, 16
16- ).
.
(62 ), .
, . , PC/AT , .
. 3.46 PC/AT.
PC/AT 36 . 31 , , , ( ), .
8- 16- .
IBM PS/2, . , ( PC ).
, ,
, . PS/2 MCA (MicroChannel Architecture), .

207

PC

D DD

Z1

PC/AT

. 3.46. PC/AT '


, ISA (Industry Standard Architecture ), , ,
PC/AT, 8,33 . ,
. , , IBM. IBM -
, IBM. IBM .
Intel,
.
ISA [127].
ISA 32 .
(, ).
EISA (Extended Industry Standard Architecture ). .

PCI
IBM PC .
Windows .
ISA. -

208

3.

, , , .
. 1024x768
(3 /). 2,25 . 30
, , 67,5 /.
, , , - DVD . ( ). ,
135 /, .
, , .
ISA 8,33 .
,
16,7 /. EISA 4 . 33,3 /. , , .
1990 Intel
, EISA. PCI (Peripheral
Component Interconnect ). Intel PCI ,

- . Intel
Special Interest Group, PCI. , PCI .
Intel ( Pentium), PCI. Sun UltraSPARC,
PCI ( UltraSPARC ).
PCI [128,136].
PCI 32 33
( 30 ), 133 /.
1993 PCI 2.0, 1995 - PCI 2.1. PCI 2.2 ( ).
PCI 66 , 64 ,
528 /. (,
).
, PCI .
528 / ,
. -, . , ISA.
Intel ,
. 3.47. ,

209

ISA PCI.
Pentium II, .
( Intel ). PCI , PCI. ISA
PCI ISA, IDE.
Pentium II PCI ISA .
, . 3.47, ,
,
PCI (SCSI-, . .), ISA. USB, .
PCI ISA.
.
, PCI, PCI (2 ). (2 ), PCI
ISA, ISA.

PCI

PCI

USB

ISA

LJULJ

ISA

. 3.47. Pentium . , ,

210

3.

, PCI. , . , . 5 ,
3,3 , PCI .
( , , 5 PCI
3,3 ). , , . , . :
32- 64-. 32- 120 ; 64-
120 64 ( ,
IBM PC 16 , . . 3.46). PCI, 64- , 32-,
. , PCI
33 , 66 . . , ,
.
PCI , PC,
IBM PC. PCI
. , . 64 , PCI
64- 64- .
. 1 . 2
,
. 3 . ,
, . .
, .
, .

PCI
PCI - ,
. PCI ,
. 3.48.
. PCI . (REQ#) ,
(GNT#) .
, PCI ( ) REQ# ,
GNT#. GNT#, -

211

. , ,
PCI. ,
. , .

11

PCI

PCI

QL

PCI

PCI

PCI

. 3.48. PCI

,
.
,
, . ( )

. , - ,
GNT#. ,
GNT#. ,
. ( ) ,
,
.

PCI
PCI (. 3.5) (. 3.6). ,
. ,
. (, CLK),
.
PCI . (32-) , (64-).
CLK . .
ISA, PCI CLK, , .

212

3.

3.5. PCI

CLK

AD

32

PAR
/#

1
4

1}
2) ,
,
( )

FRAME*

,
AD /

IRDY#

:
; :

IDS EL

(33
66 )

DEVSEL# 1

TRDY#

:
AD; :

STOP#

PERR#

SERR#

REQ#

GNT#

RST#

AD ( 32) ( 32 ).
, . PAR AD. /#
. ( , . .). 4 , , 32- .
/#, 1, 2 3 , .
FRAME# , . ,
. FRAME#
IRDY#. ,
. IRDY# ,
.

213

IDSEL , PCI 256 ,


( IDSEL). . Plug-and-Play
( ) , , .
, . DEVSEL# ,
AD . DEVSEL#
,
, , ,
, .
TRDY#.
, , AD, ,
, .
. , STOP#, , . ,
PERR#,
. , .
, . , SERR# .
3.6. PCI

REQ64#

64-

AD

1
32

64-
32

PAR64

/#


32
4 ,

( )
:

64#

LOCK

SBO#
SDONE
INTx
JTAG
M66EN

,
, .

IEEE 1149.1 JTAG

(66
33 )

214

3.

REQ# GNT# . , , ,
. , RST#, , , RESET, -
. .
, 32 64 . REQ64# 64#
64- , . AD, PAR64
/# 32- .
32 64 .
. PCI , .
LOCK .
, . , - .
INT* . PCI
, . JTAG
IEEE 1149.1 JTAG. , M66EN , , .
.

PCI
PCI . ,
. 3.49. , ,
.
Ti
AD /#. FRAME#, .
2 , 3. /#, ,
.
3 DEVSEL#.
, . AD TRDY#, . ,
DEVSEL#, ,
TRDY# , .
.

215

.,

..

/#

><

><

-^
X

FRAMES
IRDY#
DEVSEL#

TRDY#

. 3.49. 32- PCI.


, ,

( )
. , 5 . , , .
. AD
, . 7
.

USB
PCI , PCI
- (, ) .
- , ISA PCI. ,
. , -
ISA PCI.
,
. , , ,
. .

216

3.

, ISA PCI ( ).
Plug and Play ,
. .
90- (Compaq, DEC, IBM, Intel,
Microsoft, NEC Nothern Telecom) , ,
.
. USB
(Universal Serial Bus ), .
[7,144].
, :
1.
.
2. ,
-.
3. , .
4. - .
5. 127 .
6. (,
, ).
7. .
8. .
9. - .
USB . (, , , ,
. .). 1,5 /.
. ,
.
USB 1, (. . 3.47). ( ) ,
- , . , USB , .
, .
1

. hub - . . .

217

:
, (+5 ) .
0 , 1 , .
-, () .
,
.
, ,
(1-127) . ,
,
ISA PCI. 0, .
. , .
USB
-. 16 (, ). . -
.
(0,05 ) , .
, . , ( ). \ 3.50 .
,

*-

0
|
0

SOF

\
\
\

><
SOF IN DATA

SOF

ft

SOF OUT DATA ACK

\
,

SYN PID PAYLOAD CRC

/ ' \
SYN PID PAYLOAD CRC

. 3.50. USB

218

3.

. 3.50. 0 2 ,
SOF (Start of Frame ).
. 1 (,
).
3 - (, ).
USB 4 : , , . ,
. (, ), .
, .
(, ). , , , USB . , ,
, 50
.
.
. : , ,
. . SOF, IN
OUT . 3.50 . SOF (Start of Frame )
. , SOF . IN .
, . IN , , , ( ). OUT ,
. , SETUP ( ), .
. DATA ( 64 ), . . 3.50.
8- , 8- (PID),
16- CRC (Cyclic Redunduncy Code
) . :
( ), NAC (
CRC) STALL (, , ).
. 3.50. , . 0 2 SOF, ,
. 1 ,
SOF IN, -, DATA .

219

, .
NACK, (, ) 3 1,
.


, -.
, . -. .

-
-.
UART, USART, CRT (CRT - ), PIO. UART (Universal Asynchronous Receiver
Transmitter ) ,
. UART : 50 19 200 /;
5 8 ; 1,1,5 2 . ,
,
USART (Universal Synchronous Asynchronous Receiver Transmitter - ) , .
UART. UART 2,
- .

PIO
PIO (Parallel Input/Output
-) Intel 8255A (. 3.51). 24 - , TTL-
(, , , , ) 0 1
, PIO (
).
8255 , ,

220

3.

. 8- , . 8-
. ,
8- , 8-
, .
, .
CS
0-1

8
2

-
8255

WR
RD
RESET
D0-D7 -

8
i

8
*-

*-

. 3 . 5 1 . 8255


. , , 8255
, , . .
. 3.51 , 24
8255 , ,
, ,
.
, , .
. , , , . .


, -.
. 16- , , 28
, 28 PIO.
.
.
PIO : - .

221

-, , ,
, -, .
, - , 4
. - .
- , .
2 ,
2 , 4 . 64 , , .
. 3.52. 2 ,
32 34 , 4 , 65532 65535. , , .
-, ( ).

8000
\

FFFCH
\

4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64

. 3.52. , 64

(. 3.52)
16- ( ).
, , 0,
2 , , . ,
5- ,
00000.
,
, 11 15.
0 , 0.
US. ,
. -. , (. 3.53, ).
, .
.

222

3.

CS

2 8

CS
28

V
cs

2 8

CS
28

. 3.53. (); ()

.
,
( ). PIO , 4
11111111111111. ,

223

CS ,
, . 3.53. -,
. , . 3.53, , :
, .
,
PIO, .
, 15 0. ,
5 15, . 3.53, .
8000 . , ,
. , , 11, PIO.
- . -,
, - .
, . 3.53, , , . 0001000000000000,
0001100000000000 0010000000000000 . . ,
, ,
( ),
, .

(. . 3.12).
, , 8 , 8 . . ,
8 8 8 , . 8
2 8 , ,
8 . ( ,
- .)


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

224

3.

, , .
. .
. .
,
,
.
,
. . : , , , ,
- -. : , .
, , , .
. ( )
. ,
. . .
Pentium II .
, PCI, ISA
USB. PCI 64
66 . ,
.
, , - , - (, 8255).
- .
, .


1. : , ,
- . , ( ), ,
, . ,
. ? (,
).

225

1. .
2. -.
3. .
4. - .
5. .
6. - .
7. .
8. , .
2. , , . , .
, . ,
. ?
3. 4 16
. ? ?
4. , , =( ))( Q).
5. , , -.
6. , .
7. , . 3.11,
, 1 ,
1.
8. , . 3.11, . , ,
, 0, , , , 1,
(, 0000 = =
> 0; 0010 - - > 1; 0111 = = - 0;
1101 = = > 0). : D. Vcc, , D D.
9 2- ,

.
10 2- , 4 2 . 1. 2 ,
1.
11. ,
. 3.14. ,
(. . 3.3). ,
.

226

3.

12. ?

13. 4- .
16- . , 4- ? ?
14. -
, i, Ci,
i-i. 0 ()
0.
, i iT
. . ,
. : , () A,-i ,. C,_i. , , 0 i-1,
.
15. . 3.18 10 ,
, () ?
16. , . 3.19, 8- . ?
, , . , ,
.
17. , 8- (., , . 3.19)
- 1 . ,
.
.
18. 16- 16 ,
10 . 1 , ?
19. S R SR-, -?
20. . 3.25 , .

227

, , .
21. .
, D, Q Q . 4
( ). . .
22. 4x3, . 3.28, 22
,
256x8?
23. , , , , .
. 2"
, .
24. 32-
1 Mxl. ( ),
?
25. . 3.34. ,
40 25 , .
, 3
, MREQ?
26. . 3 34. , 40 , a T A D 16 . 40 ?
27. . 3.4 , T M L 6 .
, ?
, MREQ ,
? .
28. , , . 3.38, 3.34. (
)? ,
32 8 . ?
29. . 3.35.
[ 2> MREQ TMREQI TMREO.2 . .
,
30. 32- 16 .
- , ?
.

228

3.

31.
. ?
32. PC/AT, 10 , 4 ,
. ?
33. 32- 2-31 , . , , 4, 8,12 . .
( 4), , .
.
,
? .
34. Pentium II 32- PCI
? 64- 32,16 8 .
35. , -
5 10 . 50 . 20%
- , 60%
- , ?
36. , picojava II
8255?
37. ,
VGA (640x480) (30 /), , : , .
38. , Pentium II
FRAME#HaimmePCI?
39. , . 3.49,
?
40. :
, .
250 , 500 ( ). . 16 512 .
8,192 . ( ),
?
: 8- 16- .
41. ,
USB, 1023 . , ,
?

229

42. . 3.53, . , -, PIO, ,


13?
43. , mxn,
-. (
) ] .
j, , m .
,
. j , - -.
, - -. 1. 2J .
, ,
( ) , .
.
. , , . ( ), ,
. .
45. , 24x50 50x6,
,
. 3.14. , .
.

.
2 ( ), . 1.2. ,
, .
, (, , RISC).
(, Pentium II)
; .
, , .
, .


. , .
. . Java, 1.
, IJVM (Integer JVM;
integer ). JVM 5.
, IJVM.
IJVM . ,
1. IJVM ,

.
( ),
, IJVM.
JVM, Sun,

231

,
. JVM Sun , .
, . , 3,
, IJVM. ,
, ( ).
, , . .
. ,
, , .
,
. .
,
. , . ( ),
.
.
IJVM . ,
, .
. , , , , - . ,
. , , , , , .
, -, , (, IJVM). , ,
, .
,
.


, (- ) . . 4.1.
IJVM, . 32- , (, PC, SP, MDR).

232

, , ( ). ,
, . ,
, ,

MAR

ft

PC

> ; MBR

SP

LV

CPP


TOS

|==>

OPC


. 4 . 1 . ,

233

, . 3.18 3.19. . . 4.1


6 .
Fu ! , EN ENB
, 1NVA INC
. 64
.
. 4.1.
IJVM, JVM.
. + , -
, - .
4 . 1 .
Fo

F,

ENA

ENB

INVA

INC

0
0

0
0

A+B

A+B+1

A+1

B+1

B-A

B-1

-A

-1

, . 4.1, : ()
(). . ,
, ,
. ,
.
,
( )
, ENA ,
0. 0, .
( )
.

234

4.

,
. . SLL8 (Shift Left
Logical ) 1 , 8 ; SRA1 (Shift Right Arithmetic
) 1 ,
.
. , , SP , , INC SP,
1 (. . 4.1).
, ? ,
.
,
.
, .
, , .
, .

. .


, . 4.2. . , . 3.20, . , .
Aw. , . . .
.
, . , -

. ,
, . . 4.2 MIR, .
.
, , . ,
( ). ,
,

235

, ( ) , , .


1




2

_
MIR



. 4 . 2 .


; ;
.
, ,
.
. 1 . , . .
1. (Aw).
2. ().
3. ().
4. ().
.
, ,
, . . Aw+.
Aw+ +. , ,
, ,
,
. , .

236

4.


:
(32-) (8-). ; MAR (Memory
Address Register ) MDR (Memory Data Register
), . 4.1.
PC, 1 8
MBR (Memory Buffer Register ).
, .
, ,
. 4.1, . ,
. MAR ,
. ,
.
, ( ) . MBR
, ( , ).
, , ( . 4.1).
MAR , , 0,1,2 . . . PC ,
, 0,1,2 . . . 2 PC ,
2, 8 MBR.
2 MAR , 8-11 ( 2), MDR.
? , MAR PC
, , . ,
MAR MDR
, PC MBR
, . , , , MAR.
: .
MAR , ? MAR , 32
32 ( 0 31). 0
2, 1 3 . . , 232,
4 . MAR 1,
4; MAR 2, 8
. . MAR . 4.3.

237

32- MAR ( )

32- ( )
. 4 . 3 . MAR

, , 8- ,
8- MBR.
: . , 32- , , MBR
8 24 . 16- ( ) .
8- MBR 32- -128 +127 32- .
(
) MBR 24 .
, 24 0,
1, , MBR: 0 1.
32- ( )
8- MBR, , ( MBR . 4.1) . , , 8-
MBR 32- .

, . 4.1, 29 '
9 .
9 .
8 .
2 , ,
MAR/MDR ( )
1 , ,
PC/MBR ( ).

238

4.

29 . , , (). ,
,
MAR . MBR MDR
, ,
. , , +1 ( +2 ).
. 4.2.
MAR PC,
1. , ,
MBR () MDR .
, MAR
. , ,
MDR , . . .
, .
, ,
, -
100%. ,
,
.
MBR MDR ,
, . , , . :
MBR MDR , . , , (
). , .
.
, .
, ,
.

239

9 , ( MBR
) , 4 16 , 7 . ,
, ,
3 . ,
.

NEXT_ADDRESS

Addr

3
J

8
J

JAM

F
W
R
I
S S

I
R

L

L R
N
S

Fi N N
N
D I
L Fo
V R R
V
S

8 1
D

ALU

Mem

0-MDR
1 =PC
2 = MBR
3 = MBRU
4 = SP

5 = LV
6 = CPP
7 = TOS
8 = OPC
9-15-

. 4.4. -1

9+4+8+2+1=24 , , 24 . 24
. , . ,
, ,
24 NEXT_ADDRESS ( ) JAM. .
. 4.4 .
6 , 36 '

Addr .
JAM , .
ALU .
, .
Mem .
( ,
)
, , . 4 5. . .

240

4.

: Mic-1
, ,
, , .
, , .

:
1. .
2. , .
4.5 , Mic-1.
, .
, ,
. : (), ,
(), .
. , , .
, ,
MBR MDR.
, . 512 ,
32- ,
. 4.4. ,
512 .
, , , ( ), . 2.1 , , , ,
. ( ),
. .
,
. , . (Microprogram
Counter ). ,
, .
MIR (Microinstruction Register ).
, , .

241


(rd, wr, fetch)

4
9


512x36

Addr | J | I ||

1-



. 4.5. Mic-1

MIR, 4 5, ,
4.4. Addr J ( , JAM)
ALU 8 ,

, 4 , ,
,
4 16 , 9
, 4
9 ,
, ,
,

242

4.

,
.
, . 4.5, . ( . 4.2) MIR
, . MIR ;,
(. . 4.2).
MIR,
. , ,
. .
Aw+Ax .
/ N Z
. N Z 1- .
, , , ,
. , . 3.
, , ,
, . (. . 4.2). 4 N Z. , ,
. , .
, , ,
. MIR. 9- NEXT_ADDRESS ( ). , JAM 000,
; NEXT_ADDRESS ,
.
JAM 1,
. JAMN 1, N
. JAMZ 1, Z
. 1,
,
N Z. , (
) ,
. N Z , , .
. 4.5 , ,
. :
F = (0AMZ Z) QAMN N)) NEXT_ADDRESS[8]

243

,
. :
1. NEXT_ADDRESS.
2. NEXT_ADDRESS ,
.
. NEXT_ADDRESS
1, JAMN JAMZ.
, JAM 0, 9- NEXT_ADDRESS- JAMN JAMZ 1,
: NEXT_
ADDRESS NEXT_ADDRESS, 0x100 (, NEXT_ADDRESS<OxFF). (, , ,
, ). . 4.6. 0x75
NEXT_ADDRESS=0x92, JAMZ 1. , Z, . Z 0,
0x92. Z 1, 0x192.
JAM JMPC. , 8 MBR
8 NEXT_
ADDRESS . .
. 4.5 ,
MBR NEXT_ADDRESS, JMPC 1,
NEXT_ADDRESS , JMPC 0. JMPC 1,
8 NEXT_ADDRESS 0. 0 1,
NEXT_ADDRESS 0x000 0x100. 0x000, 0x100, .

Add r

JAM

0x75

0x92

001

JAMZ
;

0x92
;
0x192

0x73

OTZ

. 4.6. JAMZ, 1,

MBR NEXT_ADDRESS . , , MBR,


256 . MBR ,
JMPC

244

4.

. ,
.
, , .
,
, , ,
N Z. . 4.2.
1, , ,
, MIR. 2 MIR
. 3 .
4 , . , N Z,
MBR MDR , ( ).
MBR , . -
,
MBR/MDR. ( )
.
, ,
MBR, N Z, . , , .
, . , , , , , ,
.
. 4.5.
, 9 . .
. ,
MIR, .
. , , . , :
. ,
.

: IJVM
, , IJVM (. . 4.5).
-

245

. IJVM

, . IJVM, .

,
. : ?
,
. ,
. 5.
, ,
, .
.
, ,
. - , , LV,
.
. 4.7, .
1,2 , ,
, LV. , SP,
. LV
100, 4 , SP 108.
LV. LV SP ( )
.
SP-LV -SP-~

LV -~
SP
LV

2
1

108
104
100

2
1

d
4

2
1

SP

LV

d5
d4
d3
d2
d1
a3
a2
a1

, 4.7. ();
(), ();
, D ()

, , , . 4
(, 2, , 4)? : , ,
. 4.7, 6. , LV . LV. -

246

4.

, LV SP , . 4.7, .
,
(. . 4.7, ), LV . ,
(. . 4.7, ). LV
, a SP .
, D,
5 . . 4.7, . D
.
. , .
,
.
. , :
1=2+
, 2 ,
. 4.8, . SP ,
(, 4), .
, . 4.8, . , ,
.
.
, , , ,
. 4.8, . 1, . 4.8, .
SP"

SP

LV

2
1

LV

2
1

SP-

LV

2+

2
1

SPLV

2
2+

. 4.8.

. , i x2+f(x),
(2) . 2, .
,
, .
, JVM IJVM .
5.

: IJVM

247

IJVM
IJVM. , 4 294 967 296 (4 ),
1 073 741 824 , 4 .
, Java , , , . IJVM
.
:
1. . ,
, .
, ,
. (Constant Pool Pointer
),
.
2. . . . (
) . . .
,
. ,
. LV (Local
Variable ). .
3. . , Java.
,
. 4.9.
.
, . , LV
, .
4. . , , . , ,
.
, PC (Program Counter). ,
.
. , LV SP
, ,
. , LV, LV+1 LV+2 , a LV, LV+4 LV+8 , (16 ) .

248

4.
SP

3

LV

PC

. 4.9. IJVM

PC, , ,
, .
PC , Mic-1 PC. ,
. PC , . SP
, .

IJVM
IJVM . 4.2. (, ).
.
.
.
,
. (LDC_W), (ILOAD)
(BIPUSH). (ISTORE).
(IADD ISUB) (IAND I0R). , .
4 : (GOTO), (IFEQ, IFLT IF_ICMPEQ).
PC , . 16 . . (SWAP),
(DUP) (POP).

: IJVM

249

4.2. IJVM. byte, const varnum 1 .


disp, index offset 2

0x10
0x59

BIPUSHbyfe
DUP

07

GOTO offset

0x60

IADD

0x7

IAND

;
( )

0x99

IFEQoffsef

0x9B

IFLT offset

0x9F

IFJCMPEQ offset

; ,

0x84

IINC varnum const

0x15

\LOAD varnum

0xB6

INVOKEVIRTUAL disp

0x80

IOR

;
{ )

OxAC
0x36

IRETURN
ISTORE varnum

( )

0x64

ISUB

0x13

LDCJN index

0x00

NOP

0x57

POP

0x5 F

SWAP

0xC4

WIDE

;
16-

,
. , JVM
, IJVM .
. ,
WIDE .
, (INVOKEVIRTUAL)
, . - . , , Java,
,
. Java,
, .
( - , . Java -

250

4.

, Pascal.) , JVM, , , CALL, , .


. , . . 4.10,
OBJREF. ( 1, 2
3). INVOKEVIRTUAL.

INVOKEVIRTUAL


INVOKEVIRTUAL

3
2
1
OBJREF

LV

PC

2
1

LV

PC


SP

INVOKEVIRTUAL

INVOKEVIRTUAL
LV

3
2
1

LV

PC

2
1

-SP

LV

. 4 . 1 0 . INVOKEVIRTUAL ();
()

INVOKEVIRTUAL (disp). .
, . 4
.
16- , ( ). OBJREF
: 0. 16- SP OBJREF. , LV OBJREF,

: IJVM

251

. , LV, -
.
16-
, . ,
, ,
. ,
, .
, (.
. 4.10). , ,
( ).
.
, a LV OBJREF.
OBJREF , '.
.
( + ) , LV. ,
PC, , LV.
. SP
LV,
. , SP . ,
SP , , .
, INVOKEVIRTUAL ,
PC .
IRETURN INVOKEVIRTUAL (. 4.11). , .
, , : 1) OBJREF
; 2) , , OBJREF. , IRETURN
PC LV.
( , LV).
, OBJREF, OBJREF
, PC. ,
PC LV .
, ,
, OBJREF, SP
. ,
INVOKEVIRTUAL.
-.
. , Java,
, J V M -.
, - . ( J V M .)

252

4.

I RETURN

LV

PC

3
2
1

LV

PC

2
1

SP


IRETURN
IRETURN

LV

LV

PC

2
IRETURN
1

SP

LV

. 4 . 1 1 . IRETURN (a);
()

Java IJVM
, Java IJVM. 4.1
Java. Java IJVM.
4.2. 1 15 ,
// .
. Java
. 4.3. ( Java .) i 1, j 2, 3.
4 . 1 . Java
I3)
k-0:
else
J-J-l:

IJVM

253

4.2. Java
1
ILOAD j
//i=J+k
2
ILOAD k
3
IADD
4
ISTORE l
5
I LOAD l
//if (13)
6
BIPUSH 3
7
IFJCMPEQ LI
8
ILOAD j
//J-J-l
9
BIPUSH 1
10
ISUB
11
ISTORE j
12
GOTO L2
13 LI BIPUSH 0
//k-0
14
ISTORE k
15 L2
4.3. IJVM
0x15
0x15
0x60
0x36
0x15
0x10
0x9F
0x15
0x10
0x64

0xA7
0x10
0x36

0x02
0x03
0x01
0x01
0x03
0x00 OxOD
0x02
0x01
0x02
0x00 0x07
0x00
0x03

. j , , i i 3
, L1,
0 ,
IF_ICMPEQ L2, el se
then
IJVM, 4.2,
. 4 12 , 0 I LOAD j ( 1 ) 1 ,
1 ILOAD , 2 IADD , j+k. i,

5 (ILOAD) if. i
3 ( 6) (7) 8 el se
12, L2.

254

4.

10

11

12

14

15

. 4.12.
, 4.2


, .
. , , , . , , .


, 36 .
, ,
. , , , , , , .
,
, .
, . , . , , , .
,
.
. , .
, ,
, . , .
. : , , . ,
.
, . ,

255

SP .
,
122. :
ReadRegister=SP, ALIMNC, WSP, Read, NEXT_ADDRESS=122

WSP SP. ,
.
:
SP-SP+1, rd

MAL (Micro Assembly Language ). - MAL ,


, . MAL , .
, .
. +1, 0, -1 . , , Java. ,
SP MDR, :
MDR=SP

, - , , :
MDR-H+SP

, SP MDR. ( , ),
:
MDR=SP+H

36- , , , .
. . 4.3, SOURCE MDR,
PC, MBR, MBRU, SP, LV, CPP, TOS (MBRU (MBR Unsigned) - MBR ). ( ).
DEST : MAR, MDR, PC, SP, LV,
CPP, TOS, .
, . ,
, . ,
MDR=SP+MDR

, ,
. 4.5, . ,
( 1)
. ,
H=H-MDR

256

4.

, ,
.
, , .

. , 1 SP SP MDR, :
SP=MDR=SP+1


4 rd wr.
1- fetch.
. ,
, .
, , Mic-1
. 4- AR/MDR. rd
wr . 1- PC/MBR. fetch.
.

.
MAR=SP. rd
MDR-H

MDR . MDR. , .
4.3. .
, <<8, 1 .
, H = M B R 8
DEST=H
DEST=SOURCE
DEST=H
DEST=SOURCE
DEST=H+SOURCE
DEST=H+SOURCE+1
DEST=H+1
DEST=SOURCE+1
DEST=SOURCE-H
DEST=SOURCE-1
DEST= -H
DEST=H SOURCE
DEST=H SOURCE
DEST=O
DESTM
DEST=-1

257

, ,
, , . ,
(
) NEXT_ADDRESS,
.
, . :
goto label


. , ,
goto Mainl

,
, goto.
NEXT_ADDRESS. goto ,
, ,
. goto, , , goto
.
, JAMN
JAMZ N Z . , , 0.
, . :
T0S=TOS

, ( Z TOS).
MAL,
N Z, . ,
Z=TOS

TOS , Z ( N),
.
Z N ,
(. . 4.4) 0.
, ,
. , ' N Z. , , . , ,
IBM PC 4,77 .

258

4.

JAMZ, :
if(Z) goto LI, else goto L2

, 8 , ,
. , L2 256
, .
. ,
Z=TOS. i f ( Z ) goto L I . else goto L2

MAL ,
TOS , ,
Z. Z
, L2, . , .
, , JMPC:
goto (MBR OR value)

, value () NEXT^ADDRESS JMPC, MBR NEXT_ADDRESS.


value 0, :
g o t o (MBR)

, 8 MBR
(. . 4.5), . , MBR, .

IJVM Mic-1
, .
. 4.4- ,
Mic-1 IJVM. 112 . . , ,
. , .
, . 4.1,
. (Constant Pool Pointer ),
LV (Local Variable pointer ) SP (Stack
Pointer ) ,
, PC
(Program Counter ) ,
. MBR (Memory Buffer Register
) 1- , , . TOS
. .

259


. . TOS (Top Of Stack register ) , SP. ,
, ,
.
TOS, , . ,
POP , , TOS.
. .
, , ,
PC , .
.
, , . ,
, , ( IJVM).
Mainl, (),
PC , .
, MBR.
, , PC , MBR.
,
.
Mic-1, . , , , , MBR.
, -, , , -, , , .
, . , ,
. , . 4.2 , ,
POP, 0x57, , DUP,
0x59. ( MAL , POP 0x57, . , - , .)
, , POP,
, ,
DUP.
, , , , , .

260

4.

,
, .
, , , MBR
0x60, IADO (. . 4.2). , , :
1. PC ,
.
2. MBR. IJVM,
( IADD,
).
3. , MBR Main 1. , . . , ,
, .
,
. , , ,
- , , .
4.4. Mic-1

Maini

PC=PC+1; fetch; goto(MBR) MBR ;

!
iaddi

goto Maini
MAR=SP=SP-1;rd
H=TOS

iadd2
iadd3

MDR=TOS=MDR+H;wr;
goto Main 1

isubi

MAR=SP=SP-1.rd
H=TOS
MDR=TOS=MDR-H;wr;
goto Maini

isub2
isub3
iandi
iand2
iand3
ior1

ior2
ior3
duol

;

,
=
;

,
=
;

MAR=SP=SP-1;rd
H=TOS

,
=

MDR=TOS=MDRHH,wr;
goto Maini

MAR=SP=SP-1;rd

H=TOS
0=5=;
wr;goto Maini
MAR=SP=SP+1

=
;
SP 1
MAR


dup2
1

261

MDR=TOS; wr; goto Maini


,
MAR=SP=SP-1;rd
,
TOS

TOS^MDR; goto Maini

TOS

swapi

MAR=SP=SP-1;rd

MAR SP-1;

swap2

MAR=SP

MAR

swap3

H=MDR; wr

TOS ;

swap4

MDR=TOS

TOS MDR

swap5

MAR=SP-1;wr

MAR SP-1;

swap6

TOS-H; goto Maini

TOS

bipushi

SP=MAR=SP+1

MBR = ,

bipush2

PC=PC+1; fetch

PC 1;

bipush3

iloadi

MDR=TOS=MBR;wr;
goto Maini
H=LV

iload2

MAR=MBRU+H;rd

MAR = ,

iload3

MAR=SP=SP+1

SP ;

iload4

PC=PC+1; fetch; wr

PC 1,
,

iload5

TOS=MDR;gotoMam1

TOS

istore 1

H=LV

MBR ;
LVBH

MBR ;
LVBH

istore2

MAR=MBRU+H

MAR = ,

istore3

MDR=TOS; wr

TOS MDR;

istore4

SP=MAR=SP-1;rd

istore5

PC=PC+1; fetch

PC 1;

istore6

TOS=MDR; goto Main 1


PC=PC+1;fetch,
goto(MBR 0x100)

TOS

widei
widejloadi

PC=PC+1;fetch

MBR ;

wide_iload2

H=MBRU8

= , 8

wide_iload3

= 16-

wide_iload4

MAR=LV+H; rd;
goto iload3

MAR = ,

262

4.

4.4 ()

widejstorei

PC=PC+1; fetch

MBR ;

wide_istore2

H=MBRU8

= ,
8

wide_istore3
wide_istore4

H=MBRU

= 16-

Idc_w1

PC=PC+1;fetch

MBR ;

Idc_w2

H=MBRU8

= ,
8

MAR=LV+H; rd; goto istore3 MAR = ,


Idc_w3

= 16-

Idc_w4

MAR=H+CPP; rd;
goto iload3

MAR =

iincl

H=LV

MBR ;
LVBH

iinc2

MAR=MBRU+H;rd

LV
MAR;

iinc3

PC=PC+1; fetch

iinc4

H=MDR

iinc5

PC=PC+1; fetch

iinc6

MDR=MBR+H;wr,
goto Maini

MDR;

gotoi

OPC=PC-1

goto2

PC=PC+1; fetch

MBR = ;

goto3

H=MBR8

goto4

H=MBRU

=16-

goto5

PC=OPC+H; fetch

goto6
if It 1

goto Maini

MAR=SP=SP-1;rd

iflt2

OPC=TOS

TOS

iflt3

TOS=MDR

TOS

mt4

N=OPC; if(N) goto T;


else goto F

ifeqi
ifeq2

MAR=SP=SP~1;rd

OPC=TOS

TOS

ifeq3
ifeq4

TOS=MDR

TOS

ZOPC;if(Z)gotoT;
else goto F

ifjcmpeqi

MAR=SP=SP-1;rd

if_icmpeq2

MAR=SP=SP-1

MAR

if icmpeq3

H=MDR; rd


if_icmpeq4
if_icmpeq5

OPC=TOS
TOS=MDR

263

TOS
TOS

Z=OPC-H, if(Z)gotoT,
else goto F

,
, ,
F

O P O P C - 1 ; fetch;
goto goto2

, gotoi,

PC=PC+1

F2

PC=PC+1; fetch

PC

F3

goto Mam1

invoke virtual!

PC=PC+1, fetch

MBR = ; PC 1,

if_icmpeq6

invoke virtual

H=MBRU8

mvoke_virtual3

H=MBRU

invoke_virtual4

MAR=CPP+H, rd

mvoke_virtual5

OPC=PC+1

invoke_virtual6

PC=MDR, fetch

PC
PC ,

mvoke_virtual7

PC=PC+1; fetch

mvoke_virtual8

H=MBRU8

invoke_virtual9

H=MBRU

invoke_ virtual! 0

PC=PC+1, fetch

invoke_virtual11

TOS=SP-H

TOS = OBJREF-1

mvoke_virtual12

TOS=MAR=TOS+1

TOS = OBJREF { LV)

invoke virtual 13

PC=PC+1, fetch

mvoke_virtual14

H=MBRU<<8

invoke_virtual15
mvoke_virtual16

MDR=SP+H+1;wr

OBJREF

invoke_virtual17

MAR=SP=MDR

SP MAR ,
PC

invoke_virtual18

MDR=OPC, wr

PC

invoke_virtual 19

MAR=SP=SP+1

SP ,
LV

mvoke_virtual20

MDR=LV, wr

LV
PC

invoke_virtual21

PC=PC+1, fetch

invoke_virtual22

LV=TOS, gotoMami

LV

ireturni

MAR=SP=LV; rd

SP MAR

264

4.

4.4 {}

ireturn2
ireturn3

LV=MAR=MDR; rd

LV ;
PC

ireturn4

MAR=LV+1

MAR
LV

ireturn5

PC=MDR; rd; fetch

PC;

ireturn6

MAR=SP

MAR TOS

ireturn7

LV=MDR

LV

ireturn8

MDR=TOS; wr; goto Mainl

MBR 0 ( NOP), nopl, 0.


,
, , MBR.
, , . 4.4, Mainl
0 (
nopl). , NEX1VADDRESS.
, (, POP 0x57),
, .
IADD. iaddl.
:
1. TOS ,
.
2. TOS , .
3. , ,
TOS.
,
MAR. , . ,
, SP.
, SP MAR, SP 1
.
(i addl).
. , NEXT
ADDRESS iaddl. iadd2. iadd2 -

265

. ,
, TOS ,
,
(iadd3) MDR ,
. ,
MDR TOS. ,
, .
goto Mainl , ,

, MBR, 0x64 (ISUB),
Mainl 0x64 (1 subl) i sub2, i sub3, Mai nl

, isub3 MDR,

IAND IADD ISUB, ( ),
I0R
OUP, POP SWAP, DUP TOS, SP 1
SP TOS POP
SP 1,
TOS. ,
SWAP ,
TOS ,
() .
BIPUSH ,
, 4 13 , MBR
Mainl, 32 ( )
MDR. , SP 1 MAR,
. TOS , PC
1, Mainl .
BIPUSH
(0x10)

. 4.13. BIPUSH

ILOAD
(. 4.14, ), ( ),

266

4.

, , . 1 ,
28=256 , 256
. ILOAD (
), ( ).
, ,
MBR ( ), LV. MBR LV ,
LV ( iloadl), MBR.
MAR, ( iload2).
ILOAD
(0x15)

WIDE
(04)

ILOAD
(0x15)


1
2

. 4.14. ILOAD ();


WIDE ILOAD ()

MBR , BIPUSH,
. ,
( BIPUSH,
8- ).
MBR ,
. BIPUSH ( 8- )
MBR 24 . ILOAD
( 8- ) 24
. , (. . 4.5). MBR
( bipush3), a MBRU (
iload2).
( iload3),
SP 1 .
MAR ( ). PC 1, ( iload4). , MDR TOS,
( iload5).
ISTORE ILOAD ( ,
LV ).
, ILOAD (. 4.14, ), 0x15,
0x36. (
TOS), .
, , , ( ,
).

267

ILOAD ISTORE 256 . ,


,
. ,
IJVM , JVM:
WIDE ( ), ILOAD
ISTORE. , ILOAD
ISTORE , 8-, 16- ,
. 4,14, .
WIDE .
widel, WIDE. ,
, MBR, widel
, . ,
, WIDE.
WIDE ILOAD , ILOAD, WIDE ISTORE
, ISTORE, . ., .
wi del 100
, . WIDE
LOAD 0x115 ( 0x15), WIDE ISTORE
0x136 ( 0x36) . . , WIDE
, 256 ( 100) , .
ILOAD WIDE ILOAD . 4.15.
WIDE ILOAD ILOAD , . , 8 .
, MBRU (24 ). ( ,
0), , .
. ,
ILOAD.
ILOAD ( iload3 iload5), wide_iload4 iload3.
, PC 1 , . ILOAD ;
WIDE_ILOAD .
WIDEISTORE. ( wi de_i storel wi de_i store4) , ISTORE ,
wide_istore4 istore3.
LDC_W.
ILOAD. -, 16- (
ILOAD), -, ,

268

4.

LV, , . ( LDC,
IJVM,
, 3 2.)


0x1FF

0x115

wide iloadi

0x100

Maini

04

widei

0x15

iloadi

WIDE
ILOAD ILOAD
3

0x00
. 4.15. ILOAD WIDE ILOAD.

IINC ISTORE,
. ,
. 4.16.
1INC
(0x84)

. 4.16. IINC

,
. ,
( )
. , 8- -128 +127. JVM
, .
: GOTO.
PC , IJVM
, 16-
( ) GOTO. ,
, PC -

269

, ,
.
, . 4.17, . , Mainl. MBR, PC . . 4.17, 6 gotol. PC 1
MBR. (. 4.17, ) PC, , .
, , PC,
GOTO. .

-1 -

+3

+2 2

+1 1

GOTO (0xA7)

GOTO (0xA7)

GOTO (0xA7)

GOTO (0xA7)

+1

+1

+2

+2

GOTO (0xA7)

-1 PC

MBR

07

OFFSET 1 8

. 4.17. - Mainl (a); gotol ();


goto2 (); goto3 (); goto4 ()

goto2 ,
, . 4.17, ( goto3).
8 ,
goto4 (. . 4.17, ). , , , MBR,
. goto5
16- , PC. , goto4 MBR MBRU,
. 16-
( ) . -

270

4.

, Mainl , MBR , . ,
goto6, , MBR.
, goto, 16- -32768 +32767. , . , IJVM ( JVM). ,
, , JVM . , , ,
, :
Program is too big and hairy. You must rewrite it. Compilation aborted. (
. . .)
( ),
, el se then 32 , , , 50 Java.
: IFLT, IFEQ IFICMPEQ.
, 0 0 . IFICMPEQ
, . TOS.
. , TOS , , ,
. IFLT. ,
, TOS, IFLT , TOS. ifltl.
iflt2 , , , TOS, . iflt3 ,
MDR, TOS. , i f 114
( )
, N.
, , F.
, ,
GOTO, goto2. , (F, F2 F3),
(), Mainl .
IFEQ IFLT, Z.
, F .
IF_ICMPEQ IFLT, .
i f_i cmpeq3, . , TOS. ,
if_icmpeq6 ifeq4.

271

INVOKEVIRTUAL IRETURN.
IJVM, . INVOKEVIRTUAL 22 .
IJVM. . 4.10. 16-
, , .
. , 4 . 16- .
( OBJREF . . 4.10), ( ). 8-
, 16- .

PC. . , , PC , Mainl
.
IRETURN .
,
. SP, LV PC , . 4.11.


( ) . : , , , , , .

. ,
, , , .


. , :
1. , .
2. , .
3. .

272

4.

,
, , ( ) . , .
, ,
.
. , PC
( , , ),
, , . , . , PC 1, ,
, , .
, ,
, , PC 1. ,
. (8- PC MBR), . ,
. ,

.

(, ).
16 , ,
16 ,
32 .
. .
. . , . ,
.
, .
,
. ,
, . ,
,
. (, , ), , , . ,

273

. , .
, , ,
(, ).
.
, . , .
.
,
.
,
, , , .
,

. , - , .
.

,
. , ,
. ,
,
.
.
. 4.5. ,
, , ,
4 . , .
. , ,
. , . ,
. , , ,

. ,
. 5 ,
.
,
.
, .

274

4.


Mic-1 , .
,
. Mic-1
; 10 , (. . 3.18), 32 ,
, , .
5000 ,
() ().
, IJVM ,
.
. ,
( ), .


Mic-1 , IJVM.
. -
. , Mainl
MBR. ( ),
.
.
. . , Mainl.
(
), (
).
Mic-1 ,
.
. 4.5 POP.
,
POP. , 4 : POP
.
4 . 5 . POP

MAR=SP=SP-1; rd

Mainl


,
TOS

TOS=MDR; goto Mainl


PC=PC+1; fetch;
goto(MBR)

TOS
MBR ;
;

275

. 4.6 ,
< 2 . ,
, 3 . , , , IADD
. 250 ( 4 ) 333
( 3 ).
4.6. POP

MAR>SP=SP-1; rd

Maini pop

PC=PC+1; fetch

MBR ,

TOS=MDR, goto(MBR)

TOS;

POP , , , .
, , , . ,
- , Mai nl . . , :
.


, ?
, , , . (,
, )
. , . ,
, ILOAD (. 4 7).
4.7. ILOAD

iloadi
iload2

H=LV
MAR=MBRU+H, rd

MBR , LV

iload3

MAR=SP=SP+1

SP ,

iload4

PC=PC+1; fetch; wr

PC 1,
,

iload5

TOS=MDR;gotoMain1

TOS

Mam1

PC=PC+1; fetch;
goto(MBR)

MBR ;
,

MAR= ,

276

4.

, iloadl LV .
, MBRU iload2.

, . , . 4.8.
IL0AD, .
.
:
.
4 . 8 . ILOAD

Iloadl

MAR=MBRU+LV; rd

MAR= ,

Iload2

MAR=SP=SP+1

SP ;

Iloacl3

PC=PC+1; fetch; wr

PC 1;
;

!load4

TOS=MDR

TOS

lloadS

PC=PC+1; fetch;
goto(MBR)

MBR ;


, , . - : . , :
1. PC 1.
2. PC .
3. .
4. .
5. , .
( ),
. , .
PC ,
. , .
- ,
. ,
. ,

.
, ,
. , , TOS MDR
MDR TOS,
.
Mic-1 ,
. ,
, PC 1 , .
, , . .
8- 16- , , . , , :
1. , , , , .
2. 8-
16- , .
,
.

. 4.18. -1

. 4.18 . 8-
MBR ( ) MBR: 8- MBR1 16- MBR2. , .

278

4.

, MBR, Mic-1,
,
, MBR1.
Mic-1, : MBR1 MBR1U.
32 , .
MBR2 , 2 .
: MBR2 MBR2U, , 32 .
. 4- , 4- ,
, .
MBR1 MBR2.
MBR1 , a MBR2
2 ( ), 16- (. . 4.14, ). MBR2
, IJVM .
, MBR1,
1 . , MBR2, 2 . MBR1
MBR2 .
, ,
. , MBR, , .

( ), . 4.19.
( ) (
).
, . ,
, . 4.18. , ( 0 6 ).
, . .
MBR1. , , (
1). MBR2. , 2 (, 2 0 5 3). MBR1 MBR2. 0,1
2, , (-

279

, ).
4.
, , - ,
(, MBR2,
1 , ).
, , . , , PC, . .
.

MBR2

MBR2
MBR2

MBR2

MBR1: MBR1
MBR2: MBR2
:
4
. 4.19.


(IMAR), ,
. ,
1 PC .
,
PC PC IMAR.
PC ,

.
PC ,
.
, INVOKEVIRTUAL IRETURN.
PC
, PC .
? , , , MBR1 MBR2 (

280

4.

) . PC ,
1 2 , . , PC
. MBR
.
, , . PC 1 2.
AR 1 ( 4 ). MAR, IMAR , 0 IMAR 2 . . ( ), .
, PC , , , PC, . , .
. , :

.


: Mic-2
.
-, ,
. -,
PC. -, , 16- ,
16-
32- , . . 4.20 Mic-2,
Mic-1, ,
. 4.18.
. 4.9.
, Mic-2, IADD.
, ,
Mainl , PC .
, iadd3 MBR1,
MBR1 MBR2.
, 1 .
2,
. .
. IADD
.

281

. 4.20. -2
4.9. Mic-2

goto (MBR)

MAR=SP=SP-1; rd

H=TOS

H =

iadd2

&

282

4.

4.9 {}

iadd3
isubi

MDR=TOS=MDR+H;
wr;goto(MBR1)
MAR=SP=SP-I;rd

;

,

isub2

H=TOS

isub3

MDR=TOS=MDR-H;
wr; goto(MBRI)

TOS TOS-1

MAR=SP=SP-1;rd

iandi
Iand2

H=TOS

iand3

MDR=TOS=MDRHH;
wr;goto{MBR1)

TOS-1
TOS ( )

ior1

MAR=SP=SP-1;rd
H=TOS

MDR=TOS=MDRHnM
H;wr;goto(MBR1)

TOS-1
TOS ( )

dup1

MAR=SP=SP+1

SP 1
MAR

dup2

MDR=TOS; wr;
goto (MBR1)

pop1

MAR=SP=SP-1;rd

ior2
ior3

pop2

TOS=MDR;goto(MBR1)

TOS

swapi

MAR=SP-1;rd

;
MAR SP

swap2

MAR=SP

swap3

H-MDR; wr

TOS;

swap4
swap5

MDR=TOS
MAR=SP-1;wr

swap6

TOS=H;goto(MBR1)

TOS

bipush!

SP=MAR=SP+1

MAR

bipush2

MDR=TOS=MBR1;
wr;goto(MBR1)

TOS

iloadi

MAR=LV+MBR1U;rd

LV
MAR;

iload2

MAR=SP=SP+1

SP 1;
SP MAR

iload3

TOS=MDR;wr;
goto{MBR1)

TOS

i store 1

MAR=LV+MBR1U

MAR LV+

istore2

MDR=TOS;wr

TOS

istore3

MAR=SP=SP-1;rd

SP 1; TOS

istore4
istore5

TOS MDR
TOS


TOS=MDR:aoto(MBR1l

TOS

283

widei
widejloadi

goto{MBR1 0x100) 0x100


MAR=LV+MBR2U, rd,
, iloadi, 2-
goto iload2

widejstorei

MAR=LV+MBR2U,
goto istore2

, istorei, 2-

tdc_w1

MAR=CPP+MBR2U,
rd, goto iload2

, widejload 1,

iind

MAR=LV+MBR1U,rd

nnc2

H=MBR1

MDR=MDR+H,wr,
goto(MBRI)

MAR LV+,


gotoi

H=PC-1
PC=H+MBR2

goto2
goto3

PC
PC
,

goto4

goto(MBRI)

rflti

MAR=SP=SP-1,rd

rflt2

OPC=TOS

TOS

iflt3

TOS=MDR

TOS

iflt4

N=OPC,if(N)gotoT,
else goto F

MAR=SP=SP-1,rd

ifeqi
ifeq2

OPC=TOS

TOS

ifeq3

TOS=MDR

TOS

ifeq4

Z=OPC, if{Z)gotoT;
else goto F

ifjcmpeql

MAR=SP=SP-1,rd

if_icmpeq2

MAR=SP=SP-1

MAR

if_icmpeq3

H=MDR, rd

if_icmpeq4

OPC=TOS

TOS

if_icmpeq5

TOS=MDR

TOS

if_icmpeq6

Z=H-OPC,if(Z)gotoT,
else goto F

,
, ,
F

H=PC-1,gotogoto2

, !

H=MBR2

, MBR2

F2

goto(MBRI)

invoke_virtuaM

MAR=CPP+MBR2U, rd


MAR

invoke_virtua!2

OPC=PC

PC

invoke_virtual3

PC=MDR

PC

invoke_virtual4

TOS=SP-MBR2U

TOS = OBJREF-1

invoke virtual5

TOS=MAR=H=TOS+1

TOS = OBJREF
^

284

4.

4.9 ()

invoke_virtual6
invoke_virtual7

MDR=SP+MBR2U+1;wr OBJREF
MAR=SP=MDR
SP MAR ,
PC

invoke_virtual8

MDR-OPC; wr

PC

invoke virtua!9

MAR=SP=SP+1

SP 1; SP ,
LV

invoke_virtual10

MDR=LV; wr

LV

invoke_virtual11

LV=TOS; goto (MBR1)

LV

ireturni

MAR=SP=LV;rd

SP MAR

ireturn2
ireturn3

LV=MAR=MDR; rd

LV MAR
; PC

ireturn4

MAR=LV+1

MAR LV;
LV

ireturn5

PC-MDR; rd

PC

ireturn6

MAR=SP

ireturn7

LV=MDR

LV

ireturn8

MDR-TOS; wr;
goto(MBRI)

Mic-2 , . LDC_W 9 3 , , . - SWAP: 8 , 6.



. ILOAD ( 6, 3), IADD ( 4,
3) IFJCMPEQ ( 13, 10 , ; 10, 8
, ). , , ,
, .

: Mic-3
, Mic-2 Mic-1. ,
, , ,
. ,
Mic-2 .
, .
, ? . ,
. , , ,

285

, ( ,
). , .
. Mic-2 . , ,
, .
,
. .
, , . . 4.2 .
:
1. ,
.
2. , .
3. , .
. 4.21
(), . .
, . Mic-3.
? :
, ,
- . ,
? (: ). :
1. ,
.
2. .
, .
, , . ( ,
,
.)
,
- , , , . , ,
.

286



'


'

I
. 4 . 2 1 , Mic-3

, Mic-2
, ,

, Mic-. ,
-

287

, , . 4.10 Mic-2 ( SWAP).


4 . 1 0 . Mic-2 SWAP

swapi
swap2

MAR=SP-1;rd
MAR=SP

; MAR SP

swap3

H=MDR;wr

TOS;

swap4

MDR=TOS

TOS MDR

swap 5

MAR=SP-1;wr

TOS

swap6

TOS=H;goto(IV

Mic-. ,
:
, . .
SWAP Mic- . 4.11. 1 swapl, SP .
, , 1 , ENA ( ) (. . 4.1).
, . 2 . 3 MAR, ,
, .
, . MDR 4. MDR
.
4 . 1 1 . SWAP Mic-
Swapl

Swap2

MAR=SP-1;rd MAR=SP
1

B=SP

=-1

B=SP

MAR=C; rd

C=B

MDR=Mem

MAR=C

Swap3

Swap4

Swap5

H=MDR,wr

MDR-TOS

MAR-SP-1 ;wr TOS=H;goto(MBR1)

B=MDR

C=B

B=TOS

H=C; wr

C=B

B=SP

Mem=MDR

MDR=C

Swap6

C=B-1

B=H

MAR=C; wr

C=B

10

Mem=MDR

TOS-C

11

goto(MBRI)

288

4.

2. swap2 . 2 SP ,
3 , , MAR 4. . ,
, . ,
Mic- , Mic-2.
.
, 3. swap3, MDR
, MDR 5. ,
, , RAW- (Read After Write
). ,
.
swap3 , MDR , . . ,
, : swap6 ,
swap3.
swap5,
.
Mic- , Mic-2, . Mic-
, SWAP Mic- 11 ,
Mic-2 6 , 18 . , ,
- .
, . . 4.22
, . 4.21.
, 1, 2 . . (, ). 1 1 ,
1. 2 ,
1, ,
2.
.
3 1 ,
2, 3 . , 4
4 . 1, 2, 3, 4 .

* Reg

Reg

Reg

= :
|=5

289

Req

. 4.22.

5 , ,
4: .
4 : , , .
, . 2.3, , (). , 4 ,
.
. 4.22 ( ), ( ). 1 1
. 2 .
. , 4 . , 4

290

4.

, , .
.
, ,
,
. ,
, .
( 1 ) . , .
. , .

7 : Mic-4
,
.
, , swap6, , , .
.
( ) Mic-4. . 4.23, ,
. Mic-, ,
MBR.

. , IJVM. () :
IJVM .
IJVM , , ,
. 1 (,
POP), ,
. 2 ,
, ,
. WIDE, , , WIDE+ILOAD WIDE_ILOAD.
,
, , .
:
. , IJVM , -

291

. , , ,
wide_iload2 iload2, Mic-2,
.
, .

ILVM

, .
IADD
ISUB
ILOAD
IFLT

4 || | JA|

MIR1

MIR2

||||

MIR3

7 ||

||||

MIR4

. 4.23. Mic-4

(. . 4.4),
NEXT_ADDRESS JAM
. :
(Final bit) (Goto bit).
(
). , . . JAM . , - ,
(, iflt4), .

292

4.

.
. .
, .
, .
.
, . , IJVM.
, IJVM
.
MIR, .
, :
. ,
, ,
.
, 4 MIR . 4.23. ( . 4.2 Aw)
MIR3 MIR4, MIR2
MIR3, MIR1 MIR2, MIR1
. MIR , . MIR1
, ,
MIR1 .
MIR2,
. .
. MIR4
, MAR ( MDR ).
Mic-4: .
IJVM ,
N. , . .
, . ,
.
, IJVM, , , , .
,
, . . ,
GOTO Statement Considered Harmful ( GOTO ), .

293

Mic-1 , , Mic-4. Mic-i


,
.
Mic-4 . . 4.24.
. 4.23. Mic-4 ,
IJVM, .
,
. ,
,
IJVM .

. 4.24. Mic-4

MIR , ,
, MIR1. MIR , . MIR
, , .
.
, . , , (CISC). ,
Pentium II Mic-4, .


,
. ( ), . ,
, , . , ,
, .
, , : .

294

4.

, , .
, ,
. , , ,
, .
, 80386 80486, Pentium,
Pentium Pro, Pentium II .
. , ,
, ,
. , , .
,
. RISC 80- , .
(Intel IA-64) 5.
.
, , . -, , , .

-

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

( ), ( , ). , .
.
, , Mic-, ,

295

, . , , Mic-,
.
,
.
-.
- 2, -
, . -, .
-. ( -).
- . -, -, . Mic-1 : -. ,
- .
.
- -
. , -,
. . 4.25 -.
- - , 16 64 . - , , .
. - . 512 1 . -
, ,
, , . -
- , -
- .
. -
. ,
,
. - , .
, . , , , . ,

296

4.

- -. ,
.

(
)

-
( )

. 4.25. -

- .
, . - ( 4 64). , 0, 32 , 0 0 31, 1 32 63
. . -. , - ,
-. , ,
. - , -
, - .
, -
, - .

-
- - . - . 4.26, . - 2048 . ()
. - 32

297

( ), - 64 . :
1. , .
, .
2. 16- ,
, .
3. .
- 32 .

65504-65535, 131040-131072,...

20477
'-

7
6
5
4
3
2
1
0

96-127, 65632-65663, 131068-131099


64-95, 65600-65631, 131036-131067,...
32-63, 65568-65599, 131004-131035,...
0-31, 65536-65567, 131072-131003,...

16

11

. 4.26. - (); 32- ()

- . , -
. , , . -
4 , . 4.26, :
1. , .
2. , - , -.
3. , .
4. , ,
, . -, 32- , 0.

298

4.

,
11
- 2048 . , -.
, , - , .
: -. -, . - .
. - () , .
-. 32-
-13 -, ,
. - ,
, .
, 1 . , ,
'. -. , , ( ), - ,
, .
1 -. - 64 . ,
64 (65, 536 ) ,
> - ( ). , X, , + 65,
536 ( ), 1 -. ,
. , - ,
-, , .
- , , ,
, 1 . ,
. , ,
,
> -. ,
- :
' .
- TOI ,
. ,
. . . .

299

-
,
-. , , . 4.26, , 0 65 536,

- -.
, , - . -
n- -. - . 4.27.

2047

',

7
6
5
4
3
2
1
0

. 4.27. -

- , - , -
,
-, , . , -
,
.
-
. -,
? LRU (Least Recenly Used
).
, . ,
, , .
- , ,
, ,
.

300

4.

2048- -,
2048 . , 2048 -. , -
.
0,
. , - , 2048 .
,
LRU . (, .) , - - ,
. .
, - .
, -, , ,
, -.
-. ?
, - LRU.
, .
. , , ,
, . , ,
.
: ,
- , -? - ? . , ,
-.
(write allocation). , ,
, - ,
.
,
-.


. ,
. 4.25, ; .
, ,
, .

301

, . .
. 4.4.
i 0 (,
). , ,
.
4.4.
i f (10)

-1,
else
=2:

4.5. , ,
,
4.5, . i 0. Else, i 0.
1 .
. Next.
2 .
4.5. 4.4
1. . i
Else,
BNE Else
Then
MOV k. 1
1
Next
BR Next
2
MOV 2
Else
Next

, . ,
, BNE, (, , ,
). . .
, , BR Next 4.5, . ,
, .
( , )?
. . 4.23, , , . , , , , .
, ,
,
.
(, UltraSPARC II) ,
, ,

302

4.

. . Pentium II
( , 4.5) ,
. -
, ,
, NOP.
, .
. -, , -, ,
, .
, , . , 20% ,
.
,
, , . , , , ,
. ,
, .
, .
.

(, ). ,
. ,
, , , . , .
, .
. ,
. , , . , , .
. , ,
, (, ). ,
, () ,
, , , . , , , (,
),
.
.
, ,
, .

303


, , . ,
(, [32,70,108,125,138,163]). ( ),
, ,
, .
. 4.28, . . , ,
, , . , ,
. ,
.

/
1
1

II.

*
J

6
5
4
3
2
1
0

. 4.28. 1 - (),
2- (),
()

. -,

304

4.

32- , , 00. 2
(). +2
. n-
, , , , . -,
+2 , ( ). , . , , .
/.
, , 4096 , 0, 16384, 32768,... ;
-. : , , n- .
-, - .

.
. ,
, , , , , .
, ,
. , .
,
.
: ,
, , . . 4.28, 6.
(. 4.29).
00 , . , 01, . ,
, 11 . , ,
, ( ). 2 , 4, 8 .
, . . 4.19
. ,
, , .
.

305


. 4.29.

, .
, ( ),
( , ). ,
, , . , . 4.29, , , .
, , . 4.28, . ,
, ,
516, 4000,
, 4000.
, , ,
[108]. k- , , - , , . , .


, , , .
, . ,
, .
. ,
for (1=0 1 < 1000000, 1++) {

306

4.

, .
,
.
'
( ), , UltraSPARC II,
( ). , , . , , . ,
,
.
,
[37]. ,
, ,
. ,
. , , , .




, . 2.5. ,
, . , , . ,
.
, , , (,
). - . , , ,
. . , .
,
() . , , , , . , .
, , , , ,
, . .

307

8 , , R0
R7. :
, Mic-4. ,
, +1.
, , +2.
, ,
n+ , . 4 6 .
. 4.12. , , . , (
). , , , ,
, +1
, +1
, .
16 .
4.12.

#
1
2

1
2
3
4

R3=R0*R1 1
R4=R0+R2 2
R5=R0+R1 3
R6=R1+R4 -

3
4

5
6
7
8
9

1
2
3

1
2
3
3
3
2
1

4
5 R7=R1'R2 5
6 R1=R0-R2 -

1
1
1
1
1

1
1
1

1
1
1
1

R1=R4+R4

1
1
1
1
1
1
1

1
1
1
1

2
8

1
1
1
1
1

1 1
1 1
1

6
7

1
1
1
1
1

1
1
1

2 1
1 1
1
1
1


0 1 2 3 4 5 6 7

1
1
1
1
1

6
R3=R3*R1 -

10
11
12

1
1
2
2
2
1
1

2 1
4
5

13
14
15
16
17
18

-
0 1 2 3 4 5 6 7

1
1

308

4.

, .
. , , ,
, ,
.
(scoreboard), CDC 6600. , ,
,
, .
15 , 4- . , , , 1. ,
1.
, .
, . 16 . 4.12
.
, , . ,
,
.
. 4.12 1,
R0 1,113.
, , , R0 R1 , R3 .

R3 , 1. , 4. , ,
, . 0.
,
,
1. R0 R2, R4. , , :
1. - , (RAW).
2. , (WAR).
3. , (WAW).
RAW-, , ,

309

. . , . WAR- (Write After Read )


, . WAW- (Write After Write ) WAR-. , - (, ).
,
. 2 R0, , , 2 . 3 2.
4, R4. , , R4
(. 3 ). RAW-, , R4 . .
, .
, , 5,
. ,
, .
, 3. ,
( ), 3.
R4 ( 4). ?
. ? ,
R4 ?
. , .
, . , , - , .

[99]. ,
.
.
, 5 4,
5. , , ,
, .
6 , R1, R1 . 9.
8 , 15 -
,

310

4.

.
. 4.12 ,
.
: .
. . 4.13
,
.
3. , 4 , 5,
.
. , 5 , 4.
.
, , . , , , ,
( ). , ,
, , .
4.13.

#

1 R3=R0*R1
2 R4=R0+R2

1
2

1 1
2 1 1

1
1 1

3 R5^R0+R1 3
4 R6=R1+R4 5 R7^R1*R2 5
6 S1=R0-R2 6

3 2 1
3 2 1

1 1 1
1 1 1

3 3 2
4 3 3
3 3 2

1 1 1
1 1 1
1
1

1
3

3
3
3
2
1

4
7 R3=R3*S1
8 S2=R4+R4

4
8

5
6

-
0 1 2 3 4 5 6 7

7
4
5
8

4
4
4
3
2

2
2
2
2
2


0 1 2 3 4 5 6 7

1
1
3
3
3

2 1

3
2 1 1 3
1 1 1 2
1 2
1

1
1
1

1
1
1
1

1
1
1
1
1

1
1
1
1
1

1 1
1
1
1
1

1
1
1
1

1
1
1

1 1
1

6, 7 8 . 4.12. , 6 R1, -

311

7. , ,
8 R1. R1 6. ,
R1 , ,
, .
4.12 :
. R1 6 ( 3) 7 ( 4) S1, .
6 5. ,
. WAR- WAW-.
8 . R1
S2, ,
R1 , 6. ,
R1, S2
. , ,
, , , . 8 ,
( ) . ,
. , R0, 0 . R0
, R0 .
, .
. 4.12. ,
.
: , .


. .
. .
,

. (, i f whi I e),
. .

312

4.


, . 4.30. - evensum oddsum
( 4.6). ,
, .
4.6.
evesum=0,
oddsum-O;
i=0;
while (I<limit) {
k-i*i*i.

evens um=evensunH-k;
else
oddsum=oddsum+k;
i-i+l:

,
. , ,

. ,
. LOAD,
. .
evensum = 0;
oddsum = 0;
= 0;
while (i < limit) {

evensum = 0;
oddsum = 0;
= 0;
\
while (i < limit)

k = i * i * i;
if ((1/2)* 2) ==0)

k = i * i * i;
if((i/2)*2)= = 0)

evensum = evensum + k;
else

evensum = evensum + k;

oddsum = oddsum + k;

oddsum = oddsum + k;
1 = 1 + 1;

.*i+1;
i

. 4.30. , 4.6

. 4.30. , , evensum oddsum (- ).


LOAD ,

313

,
, . , , LOAD , - , . , ,
, .
, , , . ,
.
. , , , ,
,
4.6 . 4 30. , ( if),
. , , , () , .
, ,
.
, , (exception)?
LOAD, - - (, 256 ) ,
, .
LOAD ,
, -, ,
,
, , , ,
. , , .
( , 6,
LOAD , )
. SPECULATIVE-LOAD, -, , .
, , ,
. ,
, .

314

4.

:
if (x>0) z-y/x;
, z . ,
( )
i f. , 0,
0. , . ,
, ,
.
,
(exceptions). ,
(poison bit). , trap (), .
, trap (
). , .


, . , ,
. , ;
Pentium II, UltraSPARC II picojava .

Pentium II
Pentium II Intel. 32-
, 64- , 8-
16- , . 64 64 . Pentium II
. 3.47.
. 3.40, (SEC) Pentium II : ( ) - . . 4.31
: /, / , .
. , ROB
(ReOrder Buffer ). ,

315

/
ROB. ROB .
. ROB , , .
,
PCI

\7

\7

. 4 . 3 1 . Pentium


( - , ). -
, ,
-. Pentium II
- MESI, , UMA SMP 8.

/
/ ( ). . 4.32 IFU0,..., ROB.
/ ,
12. IFUO (IFU
Instruction Fetch Unit ), 32- . , ,
-. NEXT IP (NEXT Instruction
Pointer ) .

316

4.
-


IFU0

Next IP

IFU1

IFU2

ID0

m : ^

RAT
ROB


ROB

. 4.32. / ( )

Intel, IA-32 (32- Intel), , , IFU1, ,


. IFU1
30 IA-32 . ,
4 5 , ,
. IFU2 , .
0 (Instruction Decoding ). Pentium II IA-32 , Mic-4. , ,
. . .
ID0 .
, . .
, .
ID1. , . 4.23. -

317

( , ).
, ,
, , , , . 4 29, , . ,
12 , , .
, .
WAR WAW, Pentium II (), . 4.13. IA-32 40 , ROB.
RAT.
, ROB . , .
,
, . ROB, .

/
/, . 4.33.
, .
( ID0), , . , . ,
. , , .
, , ,
ROB , , , , , ,
, .
/ ,
20 , . , .
. , .

. , ,
.

318

4.

ROB/
ROB

. 4.33. /


, ,
ROB, .
/, . / , , . , , ,
.
Pentium II , ,
.
. , -
, ,

319

. . ,
, , .

UltraSPARC II
UltraSPARC, Sun, 9 SPARC. . , ,
UltraSPARC II , .
UltraSPARC II 64- 64-
64- , 8
( 32-) 32- , , 32- SPARC,
. 64 , 128 , Pentium II
32- 64- . UltraSPARC II . 3.44.
SPARC RISC. ,
. CISC RISC, Pentium II, .
UltraSPARC II , 4 . , . (
, , ).

PREFETCH, . . ,
PREFETCH , , , ,
, -,

UltraSPARC II
UltraSPARC II . 4.34.
.
- , . 16 -, 32 .
- (16 ) , . - 16 - .
32- , 2 16 .

4.

320

/
-

. 4.34. UltraSPARC II

- . , . - (- )
.
UltraSPARC II.
/ Pentium II
(. . 4.31). ,
,
. - ,
- .
.
, - , , .
, .

321

2- , , . 4.29. , UltraSPARC II ,
,
. 12 , .
,
. , 4 ,
. ,
. . , , .
, , .
,
. , .
, - , , Pentium II.
/ LOAD STORE. - , . -
( LOAD) (
STORE). - write-al locate,
- ( STORE) - . ,
,
- , . - - ,
/ LOAD STORE,
,
.

UltraSPARC II
UltraSPARC II 9 .
(. 4.35). - (
). ( , , ,
. .) 4 .
. (, ).

322

4.

*-

**

N1

N2

. .

3 ^



. 4.35. UltraSPARC II

, . . 4 .
, .
. 4 . STORE
LOAD .
Ni N2 ,
.
, ,
.
4 .
.
. , ( 12 ) (
22 ),
.
N3, ,
, . ,
.
Pentium II , , .

picoJava II
picoJava II JVM
. JVM . 30 JVM . picoJava II traps ().
JVM, , .

323

picoJava II
picoJava II . 4.36.
- . - . 1 , 2 , 4 , 8
16 . - .
16 . - ,
1 , 2 , 4 , 8 16 .
-. 16 .
. -
32- . microjava 701 - , 16 .
picoJava II.
-

' 32

'32
-'
-

(0-16 )
'32


;,

(0-16 )

' 32

'2x32

i
f

'3x32

64 32-
64
. 4.36. picoJava II -
. microJava 701

- ,
8 . , ,
( ). 32 . (IEEE 754).
. 4.36 , 64
32- . 64
JVM, . ,

324

4.

,
( ,
- ).

96 . 2 32- 32- .
, , ,
62 . , . , , . ,
, , ,
, . , , , , .
, .
, .

picoJava
picoJava II . . 4.37.
-
8 . 16 . .
,
( ). picoJava II Pentium II:
CISC, RISC. , Pentium II, picoJava II

, . -,
, .

*-

. 4.37. picoJava II

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

325


, . , , :
(I)JVM :
ILOAD 7
IL0AD 1
IADD

ISTORE 3,

, k, m 7,1 3 .
. 4,38, .

SP-

SP *-

6
5
4

2
1
0

SP-*

k+m

k+m

k+m

ILOAD k
ILOAD m
IADD
ISTORE n

. 4.38.
n=k+m (); , ()

, , , , . ILOAD 7 ,
, 1. ILOAD 1 . IADD
, ISTORE . .
picojava II .
.
: ADD. , JVM, 9 ,

326

4.

, . 4.38,6. CISC , . , picojava II


Java, JVM,
, RISC.
, JVM
. , , . (. 4.14).
, . . IJVM , ILOAD,
a JVM . , ISTORE. .
, , .
4.14. JVM
^~-

NF

GOTO

LV

ILOAD

MEM

ISTORE

BG1

IFEQ

BG2

IF^CMPEQ

OP

IADD

74- ( ).
.
JVM ,
. , ,
JVM .
. , , .
. 4.15 JVM,
.
, , .
, ADD, . 4.38. ,
, .

327

4.15. JVM,


MEM

ILOAD, ILOAD, IADD, ISTORE

LV
LV

LV
LV

OP
OP

LV

LV

BG2

LV

ILOAD, IFEQ

LV

BG1
BG2

LV

MEM

ILOAD, ISTORE

MEM

IADD, ISTORE

ILOAD, ILOAD, IADD


ILOAD, ILOAD, IF_CMPEQ
ILOAD, IF_CMPEQ

,
JVM , RISC. , picojava II Java , Pentium,
, 15 , Pentium.
picojava II : , .
,
.
(6 12, Pentium II) .

Pentium, UltraSPARC picojava


, , - , . Pentium II CISC, Intel -,
. UltraSPARC II
RISC. Picojava II
, . '
,
. ,
, . .
. - , 16 .
, .
Mic- Mic-4, , , -

328

4.

, . 4.22 .
.
Pentium II, UltraSPARC II picojava II
. Pentium II
CISC, , . . 4.32
. picojava II
, . .
UltraSPARC II , .
RISC, , ,
- (,
Java ).
, Mic-4,
. Mic-4 Pentium II.
,
RISC. , . . Mic-4
,
, a Pentium II ,
, . ,
Pentium II, , . 4.32, Mic-4.
Mic-4 picojava . ,

, . ,
. Mic-4
IJVM ,
a picojava II () IJVM . i=j+k 14 Mic-4
1 picojava II. 14 . ,
, .
Mic-4 UltraSPARC II , UltraSPARC II RISC ( ).
, . , , .
. Pentium II 12 , UltraSPARC II 9 , picojava II 6 , Mic-4 7 . Pentium II , .
UltraSPARC II , ,
2 , -

329

,
. :
, . Mic-4
, ( , ,
RISC).


. , , , , .
.
.
,
. , . , ,
. ,
( ).
IJVM 1- , ,
(, )
Mic-1.
, ,
,

1 , ,
Mic-1 , . Mic-4, , .
.
-. -
-
, . , ( , ), .
, Pentium II, UltraSPARC II picojava II, , .

330

4.

Pentium II CISC , , . UltraSPARC II


64- RISC.
, . Picojavall , , , .
J VM
, RISC.
, , .


1. . 4.1
. .
2. Mic-1 1 MIR, 1
, 3
1 .
2 .
100 ? 150 ?
3. . 4.5 4- , . ?
4. . 4.5 . .
5. JMPC, MBR
NEXT_ADDRESS, . ,
JMPC, NEXT_ADDRESS OxlFF?
6. , , 4.1, i-0:
. ? , .
7. IJVM
Java: i=j+k+4;
8. Java , IJVM:
ILOAD j
ILOAD k
ISUB
BIPUSH 6
ISUB
DUP
IADD
ISTORE i

331

9. ,
if goto LI; else goto L2

L2 256 . L1, , 0x40,


a L2 0x140? , .
10. Mic-1 if__cmpeq3
MDR ,
TOS. , :
if_cmpeq3 Z-MDR-TOS. rd

11.

12.

13.

14.

?
Mic-1,
200 , Java: i=j+k;
.
, , Mic-2
200 . , ,
Mic-2,
Mic-1 100 ?
JVM 1-
0 3, IL0AD. IJVM,
?
ISHR ( ) JVM, IJVM.
().
, . 0
31 ,
( 27 ).
, .
ISHR 122 (0x7).

1. 2?
2. , IJVM.
15. ISHR ( ) JVM,
IJVM. (). ,
. 0 31 , ( 2 ).
, . ISHL 120 (0x78).
1. 2?
2. , IJVM.
16. INVOKEVIRTUAL JVM , . ?

332

4.

17. Mic-1, JVM


POPTWO. .
18. JVM DLOAD Mic-2. 1-6~
, ,
. .
19. .
. , 4 2 ,
. (0, 0), ,
. (1,0). , . (0,0) (1,0) .
(0,1), , ,
(0, 1) , , .
20. . , , ? , ?
21. , , , . 4.29. .
22. , . 4.18,
6 .
5- ? 4-?
23. .
. - ,
, , 12 ? , ? , ?
24. Mic-2 if_icmpeq6
, Z 1.
, gotol. gotol ,
?
25. Mic-4
IJVM , . ,
IJVM . IJVM
, , Mic-1.
?
26. -. , 80%
- ,
15% - , 5% .
5 , 15 60 , ,
, (, -
, npoMLx -
). ?

333

27. - , ,
-. ,
?
28. . 4.27 4- - 3- -.
, , ,
. , 4- -. ? .
29. .
, 20% ?
.
30. , 20 . 4
, 90%. , ?
31. , ,
. 4.12, 16 8.
6, R8 . , 6?
32. . - WAW-, ? ?
33 Mic-1 , LV , .
34. - .
. .


.
, 1.2. . , ( )
:
. ,
,
, , C++, FORTRAN 90
, . . , , , .
, , ,
, ,
( ).
. , , . . 5.1 ,
.
, , , , . -
, , .
, - ,
, , ,
.
, ,
. , ,
?. :

335

? :

? - , , .
.


FORTRAN 90

FORTRAN 90,


. 5 . 1 .


, , . .
, .
,
, - ,
.
, , ,
. ,
. 1 , .
, . ,

25%. ,
( ) .
, (,
)
. , .

336

? . -, ,
,
.
. . , ,
, . ,
,
,
.
-,
. , .
, ,

. ,
, , .


, . ,
.
. , .


, . , .
, (
). , , , , . .
.
,
, ,
. ., , .

337

, , . , , , back-to-back
, ,
. , . , ,
.
,
, .
, V9 SPARC (Version 9 SPARC) JVM [156, 85]. ,

,
SPARC , SPARC, . , , SPARC (
). , , ,
, . ., ,
.
,
, , ,
, . . , , :

, , ,
, .
:
.
, - , . ,
.
, V9 SPARC ,
: , V9 SPARC .
JVM: ( , picojava II)
JVM. Pentium II , Intel , Pentium II. Intel
,
.

338

5.

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


, .
8 , 1 60 (. . 2.1).
8 . 8- : ASCII 7 , ASCII
.
UNICODE, , , 16-. , 24 , 23, 4 , 3 .
4- (32-) 8- (64-) . , . ,
, 4- 0,4,8 . .,
1 2. 8 0,8 16,
4 6. 8- . 5.2.

15 14 13 12 11 10

24
16
8

8-
8

-*

8 -

Ij
19 18 ! 17 ! 16
15 14 13 12

! I

24
16
8

8-
12

. 5.2. 8 : (); ().


,

339

,
. , Pentium II,
8 , 36- ,
33 , . 3.41. , Pentium II
,
. 0,
8 .

. Pentium II , , 8088 1 , ,
8- . Pentium II 4- 7,
, 0- 7-, ,
8- 15-. 4 16 , ,
, 4- .

, . , , .
: 8088, ? :
.
,
0 - , 232 24 .

, 8
8 .
, , .
-, 232 232 , 32- . -,
, , ,
.
,
, - .
,
, : . -
, -
.
. ,
LOAD, STORE
, . ,
4, .

340

5.

, ,
, . ,
, .

. , , , . ,
( ).
, . , SYNC, ,
. ,
, ,
, .
, (, , RAW- WAR-),
.
( , ),
. , , , - . . .

, . , ,
, . , , TOS MAR
(. . 4.1), . , , . ,
, ,
.
: .
, .

. ,
( ). RISC ( ) 32
, .

341


. ,
R1, R25.
.
. , Pentium II EDX, ,
.
, ,
. , ,
. R1, , R1 , , , R1 .
- ,
, .
, ,
, . -,
, -
. , .
, - . , PSW (Program State
Word . ,
. .
. :

N , (Negative);
Z , 0 (Zero);
V , (oVerflow);
,
(Carry out);

, 3 (Auxiliary
carry );
, (Parity).
,
. ,
.

342

5.

, 0 Z. BEQ (Branch Equal )


Z , .
. . (, ), (
), , . ,
(, , ).

, , . . LOAD STORE ( )
MOVE
.
. (. . 4.2.).
.

Pentium II
: IA-32 Intel ( Pentium II), Version 9 SPARC (
SPARC) JVM ( picojavall).
.
, . Pentium II.
Pentium II . , 1.
, 8086 8088 ( ),
8080 8- , 70- . 8080, , 8008, 4004
(4- , ).
, 8086 8088
16- ( 8088 8- ). 80286 16-. ,
, 16 384 64 , 224- .

343

80386 32- ,
Intel. (80486, Pentium, Pentium Pro, Pentium II,
Celeron ) 32- , IA-32, . 80386 Pentium
Pentium II .
Pentium II 3 ,
8086. ,
8088, , Pentium II 8088. , . Intel ,
, ( , ,
..).
8086,
, 8088, . 8088,
, 8088, ,
, .
WINDOWS MS-DOS, "", , 8086, WINDOWS MS-DOS.
, Pentium II
Pentium II, 8088. 4 , . 0 .
. 3
. , -
. 1 2 . Pentium II
. 16 384 , 0 2 3 J -1. ( UNIX WINDOWS)
,
232 , . .
32 . (
).
Pentium II . 5.3.
, , EDX 32-. , .
; ( ); ; EDX

344

5.

64- .
16- 16 8-
8 . 16- 8- . 8088 80286
8- 16- . 32-
80386 (Extended ).
,
. ESI EDI , , ESI , a EDI . .
, LV IJVM.
. , ESP .
-*-

16-

DH

X
X

-
D X

AL

BL

CL

DL

EDX

ESI
EDI

ESP

CS
SS
DS
ES
FS
GS

EIP

EFLAGS
. 5.3. Pentium

345

CS GS . , 8088,
22 , 16- . ,
Pentium II 32-
, . EIP (Extended Instruction Pointer ).
EFLAGS .


UltraSPARC II
SPARC 1987 Sun Microsystems.

RISC. , 80-
[110,113]. SPARC 32- , UltraSPARC II 64- , Version 9,
.
UltraSPARC II,
UltraSPARC .
UltraSPARC II :
2 . ,
(18 446 744 073 709 551 616 ), . , (2 UltraSPARC II), . ,
, .
, , ! , , -, ,
.
, . , : ,
. - ,
, - 32-
4 .
SPARC ,
, .
, ,
.
UltraSPARC II : 32 64- 32 . R0-R31,
. . 5.1.

346

5.

5 . 1 . UltraSPARC II

RO

GO

0. , ,

R1-R7

G1-G7

R8-R13

0-5

R14

SP

R15

07

R16-R23

L0-L7

R24-R29

I0-I5

R30

FP

R31

17

64-. , R0, 0,
. , . 5.1, , ,
. , , SPARC.
, . ,
,
, , , ,
.
,
, , , .
1 , . , .
. FP SP
. , LV
. 4.9. ,
. FP
. R31.
.
UltraSPARC II 32
, 32 .
, , . . 5.4. , .
,

347

. 32 .
CWP (Current Window Pointer ) ,
.
R0
R1

GO
G1

R0
R1

GO
G1

0
1

R7

G7

R7

G7

R8

R13 0 1
R14 SP
R15 07

R8

R13

OS

R14

SP

R15

07

R16

L0

R16

L0

R23

L7 7

R24

10

R29

15
FP
17

R30
R31


R23

L7 7

R24

R29

15
FP
17

R30
R31

CWP

. 5.4. UltraSPARC II

CWP ,
.
, . : R8 R15 ,

348

5.

R24 R31. . .
, ( , ), ,
.
, . .
, , . , .
UltraSPARC II 32 ,
32- ( ), 64- (
) . ,
128- .
UltraSPARC II /. ,
,
LOAD () STORE (),
. ( ),
( ).

Java
JVM , .
JVM. JVM
, IJVM, 4 (. . 4.9), , . .
4 : , , . , Mic-x
IJVM LV, SP, PC .
;
. JVM
, ( ) .

. Java: ,
- ,
. , .
, , IJVM,
.
64 . , , 64 . 64 . JVM : 16 .

349

, 64 .
, 64 .
, . JVM
, , , . Java
:
int a[]-new -int[4096]

,
. ,
JVM, .
,
. ,
, ( ), . .
, . . ; .
JVM ,
. .
, , .
: . ,
picojava II 4, JVM. ,
,
,
- ,
. ( - picojava II 16 +
16 , .)


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

350

5.

. ,
,
. , ,
, , ( ). , ,
. ,
.
, . 32- , 232 ( 4 ).
32-
, 64 .
, ,
, .
, , .
,
.


: .
.
: 8,16,32 64 . (, , ),
(, ),
. , . .
, .
, .
: , 32-
0 2 -1 . , , 2 3 1 -1,
.
(, 3,5) . . 32,64,
128 .
. .
, COBOL, . ,
COBOL, ,

351

4
(- ). , . 3.
. , 2000 COBOL, ,
, 16- .


, , , . , , .
. ,
.
ASCII UNICODE. 7- 16- . 2.
, . . . , ,
.
, . : .
: 0 , 1
( ). ,
, , . : 0 ,
.
, 1 ,
32- 32 . .
. , , .
, .
, . . Mic-: SP, PC, LV . ( I LOAD)
.

Pentium II
Pentium II , ,
- IEEE 754 (. 5.2). 8-, 16-

352

5.

.
, . , 4 , .
5.2. Pentium II.
()

16 32

64

128

Pentium II 8- ASCII:
.
, ,
, .
.

UltraSPARC II
UltraSPARC II (. 5.3).
8-, 16-, 32- 64-
. .
, 32,64 128 , 754 ( 32- 64- ). - . .
5.3. UltraSPARC II

16 32

64

128

UltraSPARC II , 64- . .

Java
Java . ,
, . , JVM. JVM , . 5. .

353

Java JVM,
- .
5.4. JVM
8 16 32 64 128

JVM , 8- ASCII, a
16- UNICODE.
. .
.


, , .
, ( ), .
5.5
. , ,
. , , .

1 2 3

. 5.5. : (); ();


(); ()

;
. ,
. ,
, ,
, . . 5.6
.

354

5.
1

. 5.6.


, . .
, 20 .
, ,
, , , .
, .
, ( ).
, ,
( JVM), ,
( UltraSPARC II). , ,
, : 1)
20 2) 20 .
, 20 , . , ,
, .
.
, , ,
, .
, ,
. , 16- ,
, 32- .
, ,
, .
,
. ,
, .

355

, : ( , ).
.
, .
. ,
, ,
-.
- t /, , -
t/r . , , ,
. , , ( ), .
, .
, . -
, .

. 2"
.
, , . , .
.
8- ,
232 . 8, 16, 24 32 .
, ,
, ,
8- , ,
32- . 232 , 1,2,3, ...,4 294 967 295. 230
0,1,2,3, ...,1073 741823.
, 32- ,
, , . ,
, . 8- , ,
,
.
32- ,
230 , 30 , 8- 32 .

356

5.

, . , .
32-
16 - 4 .
,
, , . ,
(, Burroughs B1700). ,
(, CDC Cyber 60- ).
, , - , . ,
, , , . UltraSPARC II 16 (. . 3.44), - 64 .


,
. ,
. (n+k)
. 2 2" .
(n+k) (-1) (+1) .
, ,
, . (+1)
(-1) ,
, .
, ,
. ,
, .
.
, 16 , 4 ,
. 5.7. ,
16 ( , 4- ), .
4- , 16 .
1

14

i v

12

10

ti

. 5.7. 4- 4-

357

15 , 14 ,
31 16 ,
0 14 , 15 - (. 5.8).
16
4-

8- __

12-

16-

-(5)
0001
0010

7771.
7222.
7222.

1100
1101
1110

2222.
7222.
7222

1111
1111

0000)
0001
0010

7777
7222
2222.

1111
1111
1111

1011
1100
1101

ZZZZ

<1111
1111

1110
1110

0000) Z777
0001 7222.

1111
1111
1111
1111

1110
1110
1111
1111

1110
1111
0000
0001

ZZ22
7222.

1111
1111

1111
1111

1101
1110

7222
7222.

-{1111
1111
1111

1111
1111
1111

1111
1111
1111

0000)
0001
0010

1111
1111
1111

1111
1111
1111

1111
1111
1111

1101
1110
1111

(1111

15

14

7222
2222

31

ZZZZ

2222.

16

15 12 11 8 7 4 3 0

. 5.8. 15 , 14
, 31 16 . ,
zzz2 4-

358

5.

, 15 8 15, 12 15.
0 3 4 7, , . 14 1111 0000 1101
8 11. 1111 1110
1111 8 11 .
, 4 15. 32 . 31 ,
111111111111 ,
15, 16 .
, : 4- , 8- , 12- , 16- .

.
, . . ,
,
, - . , ,

.
,
, , . , ,
.
( Intel 432), .
. JVM,
, , .

Pentium II
Pentium II . , . . 5.9. - ,
. - . ,
, . ,
,
, .
Intel 1 ,

359

. ,
, .
WIDE IJVM JVM. , -
Intel , , OxFF,

.
Pentium II
. , ,
, , ,
( ) .
, , , , , , , .
,
, , .

0-5

1 -2

0-1

0-1

0-4

0-4

SIB

1 1

SCALE
()

INDEX
()

BASE
()

REG

R/M

. 5.9. Pentium II

, , ,
. 8 2- MOD
3- REG R/M.
, 11
. 2- ,
4 , . , , ,
EDX, ESI, EDI, EBP, ESP,
, . , SIB (Scale,
Index, Base , , ), . ,

360

5.

,
.
, 1, 2 4
(), 1,2 4 , ( ).

UltraSPARC II
UltraSPARC II 32- ,
. .
. ,
, . . LOAD
( 13- )
, . .
SPARC .
. 5.10. .
, 31.
- . ,
3 22- . , 3 22 :
( ), ,
. 19- .
.
( . .).
lb, 5- , , 8- ,
. , .
, ,
. 1 ; lb ,
-4096 +4095. 13 . ( 0.) .
64 ,
.
32-, 32-
. SETHI 22 ,
, 10 . ,
.
3,
, .

361

, . , 19- ,
.

2
1

1 0 2

22

SETHI

22

30

BRANCH
(
)

CALL
(
)

. 5.10. SPARC

(CALL).
, 30 . 2- .
, .

JVM
JVM .
. 5.11. , JVM . 10 . 1 .
.
( ILOAD), ( BIPUSH)
( NEWARRAY, ). , ,
8- 16- (, , WIDE ILOAD GOTO). 4 IINC. 5 MULTINEWARRAY, . 6 INVOKEINTERFACE,
. 7
WIDE IINC, 16- 16-

362

5.

, . 8
WIDE GOTO WIDE JSR,
. ,
Java switch. , JVM,
, 1, 2 3.

32-

=,

SH0RT=HHfl6KC,

SHORT

. 5 . 1 1 . JVM

, . Java ,
.
256 , ,
IJVM.
, , , Java . . ,

363

. JVM ILOAD, 8- ,
. , WIDE
65 536
. WIDE ILOAD 4 : 1 WIDE,
1 ILOAD 2 16- . ,
ILOAD 256 .
WIDE , ,
.
JVM . , ILOAD . JVM ,
1- . ILOAD_O
0. 2- ILOAD 0, ,
. ILOAD_1, ILOADJ? IL0AD_3 ( OxlB,
OxlC OxlD ) 1, 2 3.
, 1, ,
: ILOAD_1, ILOAD 1 WIDE ILOAD 1.
, .
, BIPUSH, 0,1, 2, 3,4, 5, -1.
, , 4 .
, .
256 . 4
256 ,
4. ILOAD
5 . WIDE 256 ( , ),
.
, . : LDC LDC_W.
( IJVM) 65 536 . , 256 .
256 2- ,
3- . 2 2 256
. , , ILOAD,
WIDE, LDC_W.
256 4 , 3.
, 256
1978 , [145].

364

5.

.
, ,
, , ,
. ADD, : . ( ,
, .) ADD ,
. 32-,
32-
. , .
. -, ,
.
: ,
. 32 , , 5 . ADD , 15 , ,
96 .
. , , , . -, LOAD.
, , .
,
.
, ,
.
, , ,
. ,
.

. . .
ADD
0ESTINATI0N=S0URSEl+S0URSE2.


REGISER2-REGISTER2+S0URSE1.

, REGISTER2 . ,
. , , . -

365

. Pentium II, ,
, UltraSPARC II .
ADD . . , . ADD, ,
, (
). ,
, , . , .
, ADD , . ? ? . 4 ,
IJVM . IADD . . .


,
. ,
. , , :
. ,
,
.
, .



, - , ,
. ,
; , .
R1 4 . 5.12.
MOV

R1

. 5.12. 4 1


.
. -, . , .
.

366

5.


.
. , :
. ,
. ,
, . ,
. , , , .


, . (- ),
.
, ,
(, ), .
.
, UltraSPARC II,
.
, ( LOAD)
( STORE).
.


, ,
. .
, .
, , .
, .
, , , 1024-
R1. - , R2,
, , R3, . 1024 4
. , +4096.
, , 5.1.

367

5 . 1 .
MOV Rl.#0
R1. 0
MOV R2,#A
;R2=aflpec
MOV R3,#A+4096
;R3=aflpec
LOOP: ADD R1.(R2)
R2
ADD R2,#4
R2 (4)
CMP R2.R3
;
BLT LOOP
: R2<R3.

. ( )
(, #). R2 , . #.
R3 .
, -
. .
, . BLT ,
8- , BLT. ,
, . ,
Pentium II,
.
.
R1,
ADD R1.A

4. ,
;
ADD R1.A+4

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


. IJVM, LV.
.

368

5.

IJVM
(LV) ,
. 4.14, . :
. , , . 1024
. , Bi ,
1024 , , , .
, , , , (. 5.1). , , ,
, 5.2.
5 . 2 .
(Ai Bi) 1024
MOV Rl,#0
; R1.
MOV R2.#0
:R2= A [ i ] B [ i ]
MOV R3.#4096 ;R3=nepBoe
LOOP:

MOV R4.A(R2) ;R4-A[i]


AND R4,B(R2) ;R4=A[l] B [ i ]
OR R1.R4
ADO R2.#4
-1+4
CMP R2.R3
; ?
BLT LOOP
; R2<R3,

4 :
1. R1 .
2. R2 i, .
3. R3 4096. i, .
4. R4 .
.
LOOP Ai R4.
. (R2) ( )
, .
,
.
MOV R4.ACR2)

,
, R4 , , , a R2 . , , 124300, ,
. 5.13.
MOV

R4

R2

124300

. 5.13. MOV R4, A{R2)

369

R2 0 ( ),
124300. R4.
R2 4,
1 124304 . .
, , , .
,
, .
.


, ( ). .
, . .
R5, R6.
LOOP
LOOP:
MOV R4,(R2+R5)
AND R4,(R2+R6)

, . , 8-
, 0.
32 , ,
.
8- 16- .


,
. .
4, , IADD,
. .


(+), (+). .
. (1958), .

. -, . -,

370

5.

. -, , . , , axb+c (axb)+c, (+),


,
. ?
? .
. . . , : ,
+, -, *, /, . , -L .

^ ^

- +

J- )

0 0

. 5.14. ,

. 5.14 - , . .
(). , ,
. , ,
. , ,
,
.
. 5.15 , . 1
. :
1. .
2. , ,
.
3. , , , ,
( ).

371

4. . , , , .
5. . .
.

1

. 5.15.

,
( , ,
), ,
. , 4. , ,
, , , .
5.5.

AxB+CxD

Dx+

(A+B)/(C-D)

+ D-/

((+) xC+D)/(E+F+G)

A B+CxD+ E F + G +/

. . , . . 5.5
.


. ,
, .

372

5.

.
. ,
. , .
5.6
(8+2x5)/(1+3x2-4)
JVM.
:
825+132+4-/
IMUL IDIV. ( ). ,
( ). , I0IV
: ,
, . ,
(I)JVM :
. ,
.
,
.


, .
( )
. , , .
,
.
. , ,
. ,
.
,
.
, , . ,
.
.
( ),
, . , , PC.

373

5.6.

1
2

825+132+4-/
25+132+4-/

BIPUSH 8
BIPUSH 2

8
8,2

5+132+4-/

BIPUSH 5

8,2,5

+132+4-/

IMUL

8,10

+132+4-/

IADD

18

6
7

132+4-/
32+4-/

BIPUSH 1

18,1

BIPUSH 3

18,1,3

2+4-/

BIPUSH 2

18,1,3,2

+ 4-/

IMUL

18,1,6

10

+ 4-/

IADD

18,7

11

4-/

BIPUSH 4

18,7,4

12

-/
/

ISUB

18,3

IDIV

13



,
, .
.
, .
, ( (FP), (SP) (PC)).
32- (. 5.16).
256 . 1
.
.
6-
. ,
, . , 23, 2,
, 13- . LOAD STORE
.
(, ), 3. , () ,
. ., 24 .
, ,
32 . LOAD

374

5.

STORE, 3.
(, R0 ), .

. 5.16.

, (. 5.17).
,
, . ,
,
, .
PDP-11 VAX - . , , . 5.17.

| I []

4
I

32-
32-
. 5.17.

8- , 12
12 .
3 , 5 4
. 3 , , , ,
,
, , , . , ; , ,

, .
, , , . PDP-11 VAX

375

. 32- ,
.
,
,
96 3 (
). , RISC
96 , ,
,
4 .
, . 5.17, .

32- , i HJ
16 . 16
32- . 8- 4- ,
, , .
,
, .

Pentium II
Pentium II
, 16- 32-. 16- . 32-. , ,
,
. ,

. .
MODE . 5.9 .
MOD R/M.
REG. 5.7
32 2- MOD 3- R/M. ,
0, ,
.
01 10 ,
8- 32- , . 8- , 32-
. , ADD R/M=011, MOD=01
, 6, 6,
.
.

5.

376

5.7. 32- Pentium II.


[]
MOD
R/M

00

01

10

11

000
001

[]
[]

[+ 8]

[+ 32]

AL

[+ 8]

[+ 32]

CL

010

M[EDX]

MtEDX+ 8]

[+ 32]

EDX DL

011

[]

[+8]

[+32]

BL

100

SIB

SIB 8

SIB 32

ESP

101

[+8]

[+32]

110

M[ESI]

M[ESI+CMEU4EHME8]

[1+32]

ESI DH

111

M[EDI]

M[EDI+CMEU4EHHE 8]

MtEDI+ 32]

EDI

MOD=11 . , . ,
. ,
ESP.
MODE SIB (Scale, Index,
Base , , ) (. . 5.9). SIB
. SIB, 1, 2, 4 8 (
SCALE), , , 8- 32- , MOD. , .
SIB . Java:
for (i=0; i<n; i++) a[i]=0;

4- , .
, , . 5.18. i . a[i]
SIB, 4, 8.
a[i] .
? . , . , . ,
, , . ,
- .
,
. -
, ,

377

, . ,
8088 web- . ,
20 ,
. -
, .

[0]

+ 8

SIB
[4*++8]

+ 12
[2]

+16

. 5.18. a[i]

UltraSPARC II
UltraSPARC , ,
. 5 , . 13- . , .
: (LOAD),
(STORE) .
LOAD STORE . '
,
. 13- .

JVM
JVM , , , (
Pentium II, ).
. JVM ,
. , BIPUSH, .

378

5.

. LOAD,
ISTORE, LDCW, , ,
- , LV .
, PC
.


.
Pentium II, UltraSPARC II JVM . 5.8. , .
5.8.

Pentium II

UltraSPARC II

JVM

X
X

X
X

X
X

. ,
, , , .
, .
,
.

,
. , , . (
, )
, .
,
, .
.
,
, , , , ,
.

379


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



. , . . ,
- - , ,
,
-. , 2000 - , , 2000. ,
.
,
. : .
=

,
, , .

. ,
, .
( ) ( ), ,
4 . 4
4 , 4 . LOAD , STORE
, MOVE ,
.
- , . . .
( ) -

380

5.

.
( ), . ,
, ,
, .
,
, .
, .


, .
. . , ,
.
. 16 , , 16. , ;
, - -.
. 32 ,
8- . ,
, . , , 8 24 ( ).
, , , , .
:
10110111 10111100 11011011 10001011
00000000 11111111 00000000 00000000 ()
00000000 10111100 00000000 00000000
16 , .
.
. 8 32- , 24 , 8
, , :
10110111 10111100 11011011 10001011
11111111 11111111 11111111 00000000 ()
10110111 10111100 00000000
00000000 00000000 00000000 01010111
10110111 10111100 01010111 ()

381

,
, . , , . , , .
,
.
, . 2 :
, . , IEEE 754.
.


. ,
, , .
.
. ,
, , , . , , , . :
00000000 00000000 00000000 01110011
00000000 00000000 00000000 00011100 2
11000000 00000000 00000000 00011100 2
. -
, ,
n-k .
. ,
, , (0 1), . ,
, .
2 :
1111111 11111111 11111111 11110000
0011111 11111111 11111111 11111100
1111111 11111111 11111111 11111100
2. ,
, 2.
, , 2.

382

5.

. 18, . 18xn=16xn+2xn. 16xn


4 . 2 , 1 .
18. , , , ,
. ,
, .

. , , -1 .
1 -3. 1
-7:
11111111 11111111 11111111 11111110 -1
11111111 11111111 11111111 11111100 -1 1 (-3)
11111111 11111111 11111111 11111000 -1 2(-7)
2. .
-1 .
6 - 1 , , -1/64 0:
11111111 11111111 11111111 11111111 -1

11111111 11111111 11111111 11111111 -1, 6 ,


-1

, .
2.
. ,
1 ,
, ,
. , : .
,
. ,
. . CLR
, ( 0).
1 . ADD INC, 1. NEG. X 0-, ,

383

NEG.
NEG NOT. NEG ( , 0).
NOT . ,
, ,
. (
NEG , 1.)
,
, .
, .
,
.


, .
. ,
; , .
sqrt ,
, .
, -
, . ,
. , ( ).
, , . (LABEL) , 1,
, ,
LABEL, 0, , .
, . , ,
1 , . , , ,
.
() ,
1, (,
).
. ( ).

384

5.


. 1 , 0
, , 1. , ,
, 0. ,
.
,
, , , , 1. Z . 4.1
: ,
.
, , . , :
, .
, ,
. , -
, .
,
.
, , , . .
Pentium II UltraSPARC II.
.
, . ,
, .
, , . .
, ,
. . :


000
100 ( )
001
101
010

011
111
100
000
101
001

010
111
011 ( )
0 7 .
-4 +3
. : : 011 100?
, . .

385


, .
,
. ,
. , - - ,
.
: ,
. . , .
.
. , ,
.
, . , ,
. , , ,
. , ,
, (
), .
. ,
, .
.
, . ; ,
.
(..4.10).


, . ,
- .
, . .

. ,
,
. , -

386

5.

, . 5.3. ( Java,
goto.)
, <0.
, .

. ,
, . ,
, .
, 0, ,
.
5.4 ,
<0. ,
, ,
.
5.3.
i=l:
L1:
:

:
1-1+1:
if (i<n) goto LI:

5.4.
i=l:
LI:
if(i>n) goto L2:
:
:
i=i+l:
goto LI:

L2:
, :
for (i=0; i<n: 1++) {}

,
, 5.4, <0. , >0 (, , ), , 5.3. - FORTRAN ,
. ( 5.3).
1977 ,
FORTRAN ,
, .

-
, -. -:
1. - .
2. - .
3. - .

387

.
- , ,
,
( , ).
.
-. -
.
.
1- , . 5.19. :
.
: .
. - ,
4 , .
-, IN OUT.
-
.

. 5.19.

2 , , 6 , . 1 , .
1 6, .
. -
, , 7 1. , , .
CHARACTER AVAILABLE ( ) 0.
. ,
,
, READY ( ) 1. ,

388

5.

,
1. , .
, , 0. ,
, READY 1 .
- ,
Java ( 5.5). : , , , ( 1 ). ,
.
, , ,
.
in out , , , . 128 7 , READY 0.
5.5. -
public static void output_buffer(int buf[]. int count) {
//
int status, i. ready;
for (i=0; i<count; i++) {
do {
status=in(display_status_reg); //

ready=(status7)&0x01:
//

} while (ready==l);
out(display_buffer_reg, buf[i]);
- ,
, . . (, ),
( ). - , , , -.
, , - , , . . 5.19. ,
,
-.
, .

389


() .
( -), ,
1. , ,
.
, .
- -, .
, . , - .
-.
- . . 5.20. ()
.

\
\
\
100

32

100

. 5.20.

4 . , .
, . ,
. -, , , . , .
32 100 (, 4), 32,100 4
(, 1) ,

390

5.

. 5.20. , , , 100 ,
. ,
4 -, .

1 1.
0,
-.
0, .
. -
, .
. ,
, .
, - , ,
,
, .
( , - ).
. ,
(),
, - .

Pentium II
:
Pentium II, UltraSPARC II picojava II. , , ,
.
. Pentium II.
Pentium II 32-
, 8088. 5.21 , . ,
, ,
(, 8- ). ,
Pentium .
Pentium II , , . , ADD

391

, INC 1. . ,
, , .
.
5.21 SRC (SOURCE).
. DST (DESTINATION).
. , , , , .
: 8-, 16- 32- . / . . 5.21 32- .
. , : , . . 64-
: ( ) EDX ( ).
- .
4- . 1 ( 0 9). 1010 1111 .
, 16- 0
9999. ,
, .
- . COBOL.

. .

. EFLAGS. Jxx
, ( EFLAGS).
Pentium II , , ,
.
REP (repetition ), , (, ,
1 , 0). , (, . .)
.
, . , , .

392

5.

MOV DST, SRC

SRC DST

PUSH SRC

SRC

POP DST

DST

XCHGDS1.DS2

DS1 DS2

LEA DST, SRC

SRC DST

CMOV DST, SRC

ADD DST, SRC

SRC DST

SUB DST, SRC

SRC DST

MUL SRC

EAX SRC ( )

IMUL SRC

SRC ( )

DIV SRC

EDX:EAX SRC ( )

IDV SRC

EDX:EAX SRC ( )

ADC DST, SRC

SRC DST

SBB DST, SRC

DST SRC

INC DST

1 DST

DEC DST

1 DST

NEG DST

DST ( DST 0)
-

DAA

DAS

ASCII

AAS

ASCII

ASCII

AAD

ASCII

AND DST, SRC

SRC DST

OR DST, SRC

SRC DST

XOR DST, SRC

SRC DST

NOT DST

DST 1
/

SAL/SAR DST, #

DST / #

SHL/SHR DST, #

DST / #

ROL/ROR DST, #

DST / #

ROL/ROR DST, #

DST #
/

TSTSRC1.SRC2

CMPSRC1.SRC2

SRC1-SRC2

. 5 . 2 1 . Pentium ()

393


JMPADDR

Jxx ADDR

CALL ADDR

RET

IRET

LOOPxx

INT ADDR

INTO

LODS

STOS

MOVS

CMPS

SCAS

STC

EFLAGS

CLC

EFLAGS

CMC

EFLAGS

STD

EFLAGS

CLD

EFLAGS

STI

EFLAGS

CLI

EFLAGS

PUSHFD

EFLAGS

POPFD

EFLAGS

LAHF

EFLAGS

SAHF

EFLAGS

SWAP DST

DST

CWQ

EDX:EAX

SWDE

16-

ENTER SIZE, LV

LEAVE

, ENTER

NOP

HLT
IN AL, PORT

OUT PORT, AL

WAIT

SRC = (source);
DST = (destination);

# = ;
LV = #

. 5 . 2 1 . Pentium II ()

394

5.

Pentium II . (REP) . , ( WIDE IJVM). REP , , , 0,


. REPZ REPNZ
, Z 1 0 .
LOCK , . ,
16- 32- .
, .

UltraSPARC II
UltraSPARC II . 5.22. , (, -, ), , , ,
. : UltraSPARC II
RISC.
LOAD STORE .
1, 2,4 8 . 64- 64 , , . .
. .
CISC , RISC
,
, . ... ... ,
, , , . , , ,
. , .
, 30- .
, Smalltalk Prolog,
.
ADD, ,
ADD ADD .

. : 32- 64-.
. CISC
, .

LDSB ADDR, DST


LDUB ADDR, DST
LDSH ADDR, DST
LDUH ADDR, DST
LDSW ADDR, DST
LDUW ADDR, DST
LDX ADDR, DST

(8 )
(8 )
(8 )
(16 )
(32 )
(32 )
(64 )

STB SRC, ADDR


STH SRC, ADDR
STW SRC, ADDR
STX SRC, ADDR

(8 )
(16 )
(32 )
(64 )

ADDR1.S2, DST
ADDCC
ADDC
ADDCCC
SUBR1.S2, DST
SUBCC
SUBC
SUBCCC
MULXR1.S2, DST
SDIVXR1.S2, DST
UDIVXR1.S2, DST
TADCCR1.S2, DST
SLLR1.S2, DST
SLLXR1.S2, DST
SRLR1.S2, DST
SRLXR1.S2, DST
SRAR1.S2, DST
SRAXR1.S2, DST




/
(32 )
(64 )
(32 )
(64 )
(32 )
(64 )

ANDR1.S2, DST"
ANDCC "
ANDN "
ANDNCC"
ORR1.S2, DST"
ORCC"
ORN"
ORNCC"
XORR1.S2, DST"
XORCC"
XNOR"
XNORCC"



-
-


-
-


-
-

. 5.22. UltraSPARC II ()

395

396

5.

ADDR

BPr SRC, ADDR

CALL ADDR

RETURN ADDR

JMPL ADDR, DST

SAVER1.S2, DST

RESTORE "

, TRAP#

PREFETCH FNC

LDSTUB ADDR, R

MEMBAR MASK

SETHI CON, DST

10 13

MOVcc CC, S2, DST

MOVr, R1.S2, DST

NOP

POPCS1.DST

RDCCR V, DST

WRCCR, R1.S2, V

RDPC V, DST

SRC =
(source register);
DST =
(destination redister);
R1 = ;
S2 = : ;

;
ADDR = ;

TRAP# =
;
FCN = ;
MASK = ;
CON = ;
V = ;

= ;
R = ;
= ;
= LZ, LEZ, 2, NZ, GZ, GEZ

. 5.22. UltraSPARC II ()

. AND (), ((), EXCLUSIVE OR ( ), ANDN (-),


ORN (-) XNOR ( -).
,
, . RISC .
. ,
. , .

397

. CALL
4 (. . 5.10) 30- .
, 2 . CALL R15,
R31.
JMPL,
1 lb, .
,
.
SAVE RESTORE . , () .
, .
SETHI , 32- . SETHI 10
31, , .
1 .
.
CISC, , , GO, -
( lb). . 5.9. UltraSPARC II . , GO 0
.

picoJava II
picoJava II.
JVM (226 ), 115 ,
, C++ . JVM, Java
. JVM , , , . ( picoJava II 64 , .)
JVM , , , . JVM
picoJava II, , .
, ,
, , JVM, .
, ,
-, ( ).

398

5.

5.9. UltraSPARC II

MOV SRC, DST


OR SRC GO DST

CMP SRC1, SRC2 SRC2 SRC1 ( SUBCC) GO


TST SRC
NOT DST
NEG DST
INC DST

ORCC SRC GO GO
XNOR DST GO
SRC2 SRC1 ( SUBCC) GO
1 DST ( ) ADD

DEC DST

1 DST ( ) SUB

CLR DST

OR GO GO DST

NOP

SETHI GO

RET

JMPL%l7+8, %G0

JVM .
JVM ( , ) . 5.23.
JVM . . , ILOAD
32- , ALOAD 32- . , 32 , ,
32- .
,
, - (,
,
).
JVM. typeLOAD IND8.
, . JVM , ,
.
type : I, L, F D, integer ( ), long, float (32- )
double (64- ) . ,
4 (ILOAD, LLOAD, FLOAD DLOAD),
8- IND8 .
ILOAD,
, , .
typeALOAD.
. .
, ,
, .
, . , .

399


typeLOAD IND8
typeALOAD
BALOAD
SALOAD
CALOAD
AALOAD




short integer


typeSTORE IND8
typeASTORE
BASTORE
SASTORE
CASTORE
AASTORE




short


BIPUSH CON8
SIPUSHCON16
LDC IND8
typeCONST_*
ACONS_NULL


16-



typeADD
typeSUB
typeMUL
typeDIV
typeREM
typeNEG

HAND
NOR
ilXOR
ilSHL
lISHR
ilUSHR

i2c
i2b

DUPxx
POP
2
SWAP

. 5.23. ()

400

5.

IF ICMPrel 0FFSET16
IF ACMPEQ 0FFSET16
IF ACMPNE0FFSET16
IFrel 0FFSET16
IFNULLOFFSET16
IFNONNULLOFFSET16
LCMP
FCMPL
FCMPG
DCMPL
DCMPG





, 0
, 0
long
<
>
double <
double >

INVOKEVIRTUAL IND16

INVOKESTATIC IND16
INVOKEINTRFACE
INVOKESPECIAL IND16
JSROFFSET16
tipeRETURN
ARETURN
RETURN
RET IND8
G 0 T 0 0FFSET16

ANEWARRAYIND16
NEWARRAY ATYPE
MULTINEWARRAY 1N16, D
ARRAYLENGTH

IINCIND8, CON16
WIDE
NOP
GETFIELDIND16
PUTFIELD IND16
GETSTATIC IND16
NEWIND16
INSTANCEOF 0FFSET16
CHECKCASTIND16
ATHROW
LOOKUPSWITCH...
TABLESWITCH...
MONITORENTER
MONITOREXIT
IND 8/16 =
;
CON 8/16, D, ATYPE = ;













type, , = I, L, F, D;
OFFSET 16

. 5.23. JVM ()

401

, . byte ( 8 ), short (16 ), char ( 16 ) pointer ( 32 ).


, 12 LOAD.
typeSTORE typeLOAD.
.
(ISTORE) , IJVM. . . , .
.
PUSH . I PUSH . SIPUSH , 16- .
LDC .
(integer, long,
float double). , . , ICONST0 (
0x03) 32- 0.
BIPUSH, . JVM . : Integers ( ) - 1 , 0, 1, 2, 3, 4, 5; longs 0 1; floats ( ) 0,0, 1,0 2,0
doubles 0,0 1,0. CONST_NULL . 1 - ,
Java .
.
4 . long. AND
JVM. 2 4x4 . (
), 12 . I2F, .
, (
).
.

. , , . ,
. rel : LT, LE, EQ,
NE, GE GT. , . .
. IJVM INVOKEVIRTUAL IRETURN. ,

402

5.

, .
. . [85].
4 . JVM
( ),
.
. , -
Java. .
picojava II. ( ,
). 32 , 8,16 64 .
IJVM ( JVM ).
picojava II Java, C++.
C++, ,
C++ picojava . C++ JVM, ,
4, C++.
C++ picojava II,
115 .

JVM (OxFE OxFF), ,
.
picojava II, JVM.
picojava II 25 32- .
PC, LV, SP IJVM.
OPLIM SP. SP OPLIM, .
, . FRAME
, .
, , 64- , , . , 4 4
C++. picojava II
, ,
C++, . 5 .
.
. .
, -

403

, . ., . Java, C++.
C++, JVM. , ,
-. ,
. , , JVM.


. Pentium II
32- CISC.
, , , . UltraSPARC II
64- RISC /,
. JVM
, , .
Pentium II :
1. .
2. .
3. .
.
. -
,
, . Intel Pentium II
, . ,
4,
, picojava II, ,
UltraSPARC II.
UltraSPARC II. 64- ( 128 ). , ,
LOAD STORE. , -
. UltraSPARC II,
.
JVM .
,
. .
(

404

5.

1,8 ). ,
JVM
, .
64
RISC picojava II
.
/ RISC. UltraSPARC II
. Pentium II
RISC, CISC
RISC. picojava II RISC, RISC.


,
, . .
,
, .
. .
(traps) . .


. , .
, . , . , ,
, . 5.24, .
,
.
,
. 5.24, . . ,
, . [31]
GOTO ,
goto. ,
goto , while. , -

405

,
, if, while
.

. 5.24. ():
(); ()

. , , , , , .
, .
, .
, , ,
.
. ,
,
. ,
. .
,
. .
64 , .
. .
3 , . , , . , -

406

5.

, 64, , ,
. , 64 , . 5.25 ,
() 5.
1

. 5.25.

1 3, -1 1 2, 1
3, -1 2 3.
. 5.26.
, i ]. ,
towers (n I j)

. , .
, : i j.
1, , ,
.
5.6.
towers (3. 1 3)

towers (2 1 2)
towers (I 1.3)
towers (2, 2 3)
,
.
5.6.
public void towers (int n. int l. int j)
int k.
if (n==l)
System out ' " + i + "" + j ) . else
k=6-i-j.
towers(n-l. l, k)
towers ( 1 . i . j ) .
towers (n-1. k. j ) .

407


1
2



1
3


2
3

. 5.26.

, , IJVM.
.
, .
, IJVM.
, ,
(FP Frame Pointer),

408

5.

. , IJVM,
. . 5.27
32- . towers n, i j, CALL,
, 1012. FP (1000)
1016, . 32-
(k) SP (Stack Pointer ) 4 1020.
. 5.27, .
, , , FP (, ), SP FP , ,
, , FP .
FP , IJVM LV . , , ,
, . 5.27. . 5.27
. 4.12, . .
.
, , ,
, .
, .
. , . ENTER LEAVE
Pentium II , . , , , .
. ,
. , .
towers (3. 1, 3)
. 5.27, .
, , , =3,
towers (2. 1. 2)
. 5.27, .
(
). =1 ,

towers (1. 1, 3)

409

SP

-->

SP -->

J=3

j=2

1056

i=1

i=1

1052

n=1

1048
1044

=1024

FP - >

1060

k=3

k=3

FP
=1000

- FP
=1000

FP
=1000

j=2

j=2

j=2

j=2

1032

i=1

i=1

i=1

i=1

1028

n=2

n=2

n=2

n=2

1024

k=2

k=2

k=2

k=2

1020

FP

FP

FP

FP

FP

1016

1012

j=3

j=3

J=3

j=3

j=3

1008

i=1

i=1

i=1

i=1

i=1

1004

n=3

n=3

n=3

n=3

n=3

1000

FP
=1000

FP " >

FP-K

n=1

1064

k=3

SP -->

SP-^

->

1068

- FP
=1024

- FP

FP

k=3

>

. 5.27. 5.6

1040
1036

410

5.

. 5.27, .
. ,
. .
, FP SP (. . 5.27, ). :
towers (1. 1. 2)
(. . 5.27, ). . . ,
, . 5.27, , .
, ,

towers (3. 1. 3)

. , (. 5.28).
- , .
, , , . , . (
, .) ,
( ), (
).
, ,
; , ,
. ,
, , ,
. , , .
.
, ,
( , )
, , .
, .
,
, .
, , . 5.29. -

411

, . ,
( ), ,
. , ,
.

. 5.28.

, .
, . . , .

412

5.

. 5.29. ,
,

CALL RETURN ,
, , , ,
,
. , . ,
, ,
.
, , .
,
.

(trap) ,
. , . . , -

413

, . ,
- , .
( ), - , . , .
, - ,
. .
1- , , . , ,
. .
.
, ( ). ,
. , , .
,
, - . , , ,
, , .
, ,
, , , , ,
-,
0.

, , - -. ,

, . ,

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

414

5.

: , .
, ,
, . ,
, .
, , : .
, , ptr, , count,
, . ,
, , (, , . 5.30). -, - .
.
. ( ).
:
1.
.
2. , .
3. , , ,
( , ). 1.
4.
.
5.
.
6.
,
. , , 4 ,
4.
,
.
(,
).
1

: . . , , , . ,
, , . . . .

415

:
1. , , , .
.
2. ,
, . , -
.
3. , .
4. -, .
5. ptr count .
1, , 1,
, 1 . count ,
, . , ptr, .
6. ,
, .
7. .
8. RETURN FROM INTERRUPT ( ): ,
. , .
.
, - - , , , . ,
, .
-, , .
-, , , . ,
- .
. ( )
. , ,
. ,
9600 1042 .
, ,
.
-, , -

416

5.

. , . , .
, ,

. , , , .
,
,
. . -: , RS232 2,4 5 . (t=0; t ) . t= 10 .
, . 5.30.
,
2
RS232,


RS232,
5

,
2

10
I

15

20

25

RS232

[!

35

40

[!"

. 5.30. .

t=15 RS232 . RS232


(5), (2), .
, , , RS232.
, t=20, . (4)
, -

417

(5), , . t=25 RS232,


,
RS232, ,
2.
2, , 4
.
. , t=40
,
.
8088 Intel () : .
, . -
.
- ,
256 ,
. 8- .
. .

,

.
Intel (, 8259). (, ) .
, .
, . , -
.
,
.


, , . ( ) . 5.6
Java. .
, Java, Pentium II UltraSPARC II ,

418

5.

- Java. Java printf


printfC" %6 %d\r\", i,j)
printf ( *d , ). , : .
Pentium II UltraSPARC II, - Java , .
JVM Java. : .


Pentium II
5.7
Pentium . . , ( N, )
+8, i j +12 +16 . +20.
5.7. Pentium II

.586
; Pentium
.MODEL FLAT
PUBLIC _towers
; 'towers'
EXTERN _printf:NEAR
; printf
.CODE
_towers: PUSH EBP
( )
MOV EBP. ESP
[ ESP
CMP[EBP+8].l
;if(n==l)
JNE LI
;, ?1
MOV EAX. [EBP+16] ;printf("...". i. j);
PUSH EAX
; i. j
MOV EAX. [+12] ;
PUSH EAX
; .
PUSH OFFSET FLAT:format : OFFSET FLAT -
CALL _printf
; printf
ADD ESP. 12
:
JMP Done
;
MOV EAX.6
; k=6-i-j
SUB EAX. [EBP+12] :EAX=6-i
SUB EAX. [EBP+16] ;EAX-6-i-j
MOV [EBP+20], EAX ;k=EAX
PUSH EAX
; towers(n-l, . )
MOV EAX. [EBP+12] ;EAX=i
PUSH EAX
; i
MOV EAX. [EBP+8] ;EAX=n
DEC EAX;EAX=n-l
PUSH EAX
; n-1
CALL _towers
; towers(n-1. i, 6-i-j)

Done:

ADD ESP. 12
MOV EAX. [EBP+16]
PUSH EAX
MOV EAX, [EBP+12]
PUSH EAX
PUSH 1
CALL towers
ADD ESP. 12
MOV EAX. [EBP+12]
PUSH EAX
MOV EAX, [EBP+20]
PUSH EAX
MOV EAX. [EBP+8]
DEC EAX:!-n-l
PUSH EAX
CALL towers
ADD ESP. 12
LEAVE
RET 0

419

:
towers (1, i, j)
: j
:EAX=i
: i
1
; towersCl, t, j)
:
. towers(n-l. 6-i-j. i)
. i
:EAX=k
:
: =
; -1
: towersn-1, 6-i-j. i)
:
;
.

.DATA
format
DB " %d d\n" [
END
.
ESP .
1, >1, el se. then : , i j, .
,
.
. printf ,
, , .
ESP 12, . , () ESP .
else L1. 6-i-j, . .
, . .
.
. ,
.


UltraSPARC II
UltraSPARC . 5.8. UltraSPARC II
, ,

420

5.

. , ( ).
, Pentium II (
, ).
5.8. UltraSPARC II

/* N - 0 */
N iO
/* I - 1 */
Mil
J i2
/* J - 2 */
10
/* - 0 */
ParamO SoO /* ParamO - 0 */
Paraml Xol /* Paraml - 1 */
Param2 2 /* Param2 - 2 */
Scratch XII /*.: */
.proc 04
.global towers
towers: save *sp.-112. *sp
cmp N, 1
if(n= 1)
bne Else
if (n != 1) goto Else
sethi hi(format). ParamO
printf(" %d %d\n". i, j)
or ParamO. Xlo(format). ParamO
ParamO =
mov I. Paraml
Paraml = i
call printf
printf 2 (j)
mov J. Param2
2
b Done

#define
#define
#define
#define
#define
#define
Idefine
#define

Else:

mov 6.
sub K.J.K
sub K.I,

= -i-j
k-6-j

add N, -1. Scratch


mov Scratch, ParamO
mov I. Paraml
call towers
mov K, Param2
mov 1, ParamO
mov I. Paraml
call towers
mov J. Param2

towers(n-l. i. k)
Scratch = n-1
1 - i
towers 2 (k)

2
!
!
!
!

towersd. i. j)
1=1
towers 2 (j)
2 = j

mov Scratch. ParamO ! towers(n-l. k. j)


mov K. Paraml
! 1
call towers
! towers 2 (j)
mov J. Param2
! 2 = j
ret
!
Done:
restore
! ret
format:
.asciz " %d %\"
UltraSPARC Pentium II. , >1, el se.

421

UltraSPARC II .
UlraSPARC II printf,
, , 32-
. : SETHI OR.
,
RESTORE . .
NOP, Done. . ,
. , UltraSPARC II , , , .
RISC!
.
towers else. -1 %, a i %ol,
towers ,
. Pentium II ,
. , , . , , CALL,
(- ). , ?
, .
, Done. RET
.
RESTORE, 1 CWP,
.


JVM
5.9. ,
-. Java, . JVM ,
i j 0, 1 2 .
3. 1- , ILOAD0. JVM (
67 ).

422

5.

5.9. JVM
IL0ADJ)
ICONST_1
IFJCMPNE L I

GETSTATIC #13
NEW #7
DUP
LDC #2
INVOKESPECIAL #10
ILOAD_1
INVOKEVIRTUAL #11
LDC #1
INVOKEVIRTUAL #12
ILOAD_2
INVOKEVIRTUAL #11
INVOKEVIRTUAL #15
INVOKEVIRTUAL #14
RETURN
LI: BIPUSH6
ILOAD_1
ISUB
IL0AD_2
ISUB
ISTORE_3
IL0ADJ)
ICONST_1
ISUB
ILOAD_1
IL0AD_3
INVOKESTATIC #16
ICONST_1
ILOAD_1
IL0AD_2
INVOKESTATIC #16
ILOAD_0 "
ICONSTJ.
ISUB
IL0AD_3
IL0AD_2
INVOKESTATIC #16
RETURN

// . 0 = ;
// 1
//if(n!-l)gotoLl

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

1: pnntln
,

" "

i
i
""

j
j

println
towers
Else: k = 6-i-j
. 1 = i; i
= 6-i
. 2= j; j
= 6-i-j
. . 3 - k = 6-i-j:
towers(n-l.i. k);
1
= -1
i

towers(-1. i. )
j) 1
towersQ,
i
j
towersd. i. j)
towers(n-l. k. j ) ;
1
= -1

j
towers(n-l, k. j)
towers

1, IFICMPNE. IF_ICMPEQ,
IJVM.
, .
, .
13 ,
println . .
, 13
. GETSTATIC ,
13, .
NEW . -

Intel IA-64

423

11
println .
1, L1. .
.
IJVM .
. 2- , , ,
. #10, #11 . .
.
. INVOKESTATIC ,
towers. INVOKESPECIAL
, .
, INVOKEVIRTUAL ()
.

Intel IA-64
IA-32 . . ,
Intel Hewlett Packard, IA-64. 64- . , , .
Merced ,
.
, Intel, , IA-64.
,
. , .
, Intel, IA-64
.

Pentium II
, IA-32 .
CISC , .
RISC

424

5.

, .
IA-32 RISC ,
( ), .
.
IA-32 , .
/,
,
, . , , IA-32
. .
IA-32 . -
( , , ESI EDI) ,
, . .
- , WAR-, - , .
. - .
IA-32 , , ,
.
. .
,
(12 ). , 11 . , , .
. .
,
. .
, ,
. , 32- IA-32 4 ,
.
IA-32
. ,
,
.
, .

Intel IA-64

425

Intel .
Pentium II CISC RISC, , ,
,
, . Intel
: IA-32 (IA-64).

IA-64:

IA-32 64- RISC (
UltraSPARC II). IA-64
Hewlett Packard, , , PA-RISC. Merced ,
IA-32, IA-64,
IA-64.
IA-64 / 64-
64- . 64 , IA-64 (
IA-32). : , 6-
, 6- 6- , .
, - . . ,
. RISC-
.
. (. 5.31). .
128- 40-
8- . ( ),
. , .
, . , , , , . . .
, RISC .
EPIC (Explicitly Parallel Instruction Computing ).

426

5.

R1

R2

R3

. 5 . 3 1 . IA-64

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

. . , . (
). ,
, . , ,
, , , , .

IA-64
. , . , , if. IA-64
, 1, [10,63]. .
. predicate , . . ..

Intel IA-64

427

,
, .
: ? ,
, ,
, .
. , , .
, , ( 5.10-5.12), ( ). 5.10 if. 5.11 : ,
.
5.10. if
i f (Rl=0)
R2=R3:
5 . 1 1 . 5.10
CMP R1.0
BNE L1
MOV R2.R3
L1:
5 . 1 2 .
CMOVZ R2.R3.R1

5.12 , CMOVZ, . ,
R1 . , R3 R2. ,
.
, , -
, , ,
, - . CMOVN.
.
if then el se. , - 0,
, - , . , then CMOVN, el se CMOVZ.
, , CNOVN CMOVZ
.
. , , ( -

428

5.

). then el se 5.13-5.15.
5.13. if
if(Rl=0) {
R2=R3;
R4=R5;
} else {
R6=R7:
R8=R9:
}
5.14. 5.13

CMP R1.0
BNE L1
MOV R2.R3
MOV R4.R5
BR L2
LI: MOV R6.R7
MOV R8.R9
L2:
5 . 1 5 .
CMOVZ R2.R3.R1
CMOVZ R4.R5.R1
CMOVN R6.R7.R1
CMOVN R8.R9.R1

( Pentium II),
IA-64 . , . 6- ,
, 64 1- . , i f ,
1, , 0,
.
.
, then el se,
, ,
.
5.16-5.18 ,
. CMPEQ
4 1, , 0, .
, , 5, .
i f then ,
- (
). ,
.
5.16. if
if(Rl==R2)
R3=R4+R5:
Else
R6=R4-R5

Intel IA-64

429

5.17. 5.16
CMP R1.R2
BNE L1
MOV R3.R4
ADD R3.R5
BR L2
LI: MOV R6.R4
SUB R6.R5
L2:
5.18.
CMPEQ R1.R2.P4
<4> ADD R3.R4.R5
<5> SUB R6.R4.R5
IA-64 : , ,
, -
. - . .
IA-64 . , ,
, , . , .
, . [34].


IA-64 .
LOAD , (exception), , ,
, . ,
(exception).
LOAD , , . , ,
, . CHECK ,
. , CHECK NOP, . ,
.
, IA-64
. -, RISC /. -, , , ,
. , ,
. -,
if, ,
. , -

430

5.

, ,
, .


, Merced . . -, .
,
.
-, IA-64. IA-64 . ,
, 30 ,
. -
, IA-64
, .
-, 64- . Windows 95 Windows 98 - . ,
Windows NT UNIX, . 10
32- 386 Windows 95 16- , 10 Intel
( 6). ,
64-, .
-, IA-64 ,
16- MS DOS. Pentium Pro,
, 16-
, Pentium.
16- ( 32-)
IA-64, .
, IA-64. .
, ( Intel) , ,
RISC, ,
. Pentium II IA-64. , , IA-64
, IA-32.

431

,
, MOVE, ADD BEQ.
, 4 8 .
8 32 , .
1,2 3 ,
: , , , . . , ( ),
, , , -.
, , ,
, . 200 .

: , , , . , . ,
- ,
. . (, ). ,
, - .
.
, IA-64 EPIC. . IA-64 Pentium II,
.


1. Pentium II , .
UltraSPARC II . Pentium II?
2. ,
36- :
7 32- 3-
;
500 15- 3-
;
50 .

432

5.

3. , 12- :
4 ;
255 ;
16 .
( 3 .)
4. 16- 6- .
, . , ?
5. -. :
20 40;
+ 30 50;
40 60;
50 70.
-?

LOAD
LOAD
LOAD
LOAD
LOAD
LOAD

IMMEDIATE 20
DIRECT 20
INDIRECT 20
IMMEDIATE 30
DIRECT 30
INDIRECT 30.

6. , ,
:
X=(A+BxC)/(D-ExF).
7. :
:
PUSH

POP
ADD
SUB
MUL
DIV
:
LOAD M
STORE M
ADD M

433

SUB
MUL
DIV
+ :
MOV (X=Y)
ADD (X=X+Y)
SUB (X=X-Y)
MUL (X=X*Y)
DIV (X=X/Y)

:
MOV (X=Y)
ADD (X=Y+Z)
SUB (X=Y-Z)
MUL (X=Y*Z)
DIV (X=Y/Z).

8. M 16- , X, Y Z 16- ,
4- . , -, 16 ,
. SUB X, Y Y X, SUB X, Y, Z Z
Y X. 8 ,
4 ,
X?
9. ,
6- 64 , .
10. , ?
11.
:
A+B+C+D+E
(+) (C+D)+E
(AxB)+(CxD)+E
(-) (((C-DxE)/F)/G) xH
12. :
AB + C + D x
AB/CD/ +
ABCDE+xx/
ABCDExF/+G-H/x+

434

5.

13. ?
+ + + +
--- ++
14. , .
15.
.
( )
( ) ( )
( ) ( D)
16.
JVM, .
(2+4)-(4/2+1)
17.
MOV REG.ADDR
Pentium II.
U l t r a S P A R C II
LOAD ADDR, REG
?
18. ,
. 5.16?
19. . 5.16 23 1 2. 3 . ,
3?
20. X
.
, X, ?
21. Pentium II , 3
. ?
22. UltraSPARC II , 32- .
: SETHI ADD. -
32- ? .
23. 3
, :
. : ?

435

24. :
if (n==0)
if O>J).
if (k<4).

, .
?
25. 16- 1001 0101 1100 0011:
+ 4 .
4 .
4 .
4 .
4 .
26. , CLR, ?
27. ( ) :
-1101 0000 1010 1101
1111 11110000 1111
=0000 0000 0010 0000
28. , ,
. :
.
29. , ,
.
?
30. ( , ). Java
Pentium II, UltraSPARC II JVM. ,
(, i j ):
i-3;
i-j;
i-j-1;
31. for.
while.
32. , 1 ( ,
). , ( 64 )?
.

436

5.

33. - ?
?
34.
. 64 512 . 16 . 16 .
500 .
. - ?
35.
, ?
36. IA-64 (64).
? , ? , ?
37. . . ? ,
, -
, ?
38. , , . -
, ,
. ,
250 , , . 1 ,
?
39. . 5.24 .
,
?
40. ASCII.
41. .
42. ,
.
!, n!=n(n-l)! 01=1.
!.
43. . , , ,
.

, ,
,
. , .
.
, , .
,
, ( ). . 6.1.
, (
, ),
.
, . , ,
. .
,
. - .
3

. 6 . 1 .

. , , ,

438

6.

, ADD. , .

. . . . ,
, .
-. , -,
. ( , ). ,
. ( , ,
, - . .). ,
: Pentium II (Windows NT) UltraSPARC II (UNIX). picojava II ,
.


. IBM-650, ( 50- ), 2000 . 60 , ALGOL,
1024 .
PDP-1, 4096 18- .
, .
, , ,
,
.
(, ). , , .
, .
, . .
,
,
- .

439

,
, .
1961 ()
,
[42]. ,
, , . , 60- . 70- .
1
, Pentium II UltraSPARC II, .
.



. 16- 4096 .
, , 65536
( 16-, 216=65536). ,
.
0, 1, 2,..., 65535,
.
.
, 4096, , 4096.
( 4095 , ). ,
- .
. 4096
, ,
0 4095. , , 4096 0, 4097 1, 8191
4095 . . , (. 6.2).
1

, , , Pentium II, . , - . . . .

440

6.

8191
4096

-4095
-0

. 6.2. 4096 8191


0 4095

: , 8192 12287? ,
.
:
1. 4096 8191 .
2. 8192 12287 .
3. : 8192 12287 0 4095.
4. ,
.
, , , .

,
. , , ,
.

. , (, ,
, ).
, ,
.
, , .
, , .
, .
, .

441

,
, . ( ), . ,
,
( ).
. , .
, -
, , . , ,
MUL ( ), . ,
, . , , . , , ,
.



. , .
, 512 64 , 4 . .
,
. . 6.2 . .
6.3, 64
4 (,
64 4 ). ,
, . , . 6.3, , .
16 . 64 ,
, 0 65532
(, 4).
,
.

442

6.

15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

61440 65535
57344 61439
53248 57343
49152 53247
45056 49151
40960 45055
36864 40959
32768 36863
28672 32767
24576 28671
20480 24575
16384 20479
1228816383
8192 12287
4096 8191
0 4095

32

7
6
5
4
3
2
1
0

28672 32767
24576 28671
20480 24575
16384 20479
1228816383
8192 12287
4096 8191
0 4095

. 6.3. 64 16 4
(); 32 8 4 ()

. 6.3, ,
4 . 32 , : 1)
( ,
, ), 2) .
, 32-
. ,
, . .
(MMU - Memory
Management Unit). .
32- 15- ,
32- 15- .
, , . 6.4. 32- , 20- 12- (
4 ).
. . 6.4 3, 3.
, . 220

443

8 , .
. 1. , .
-15-

110 --

20- - * - 12- 32-


. 6.4.


( 6) 15-
. ,
8 . 12 ( ) 12

444

6.

. 15- - .
6.5 . 0 1.
1 0. 2
. 3 2.
4 . 5 6 . .

; '.

15 0

13 0

12 0

10 0

14

11

11

14

\
1 =
0 =
. 6.5. 16
, 8



, , , . ,
.

445

, ,
- . , , , .

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

. : , ( ).
, .
, ,
. , . ,
100 ,
. , .
, . . , .
t , . [29] .
, , , ,
.
(, ).


, ( ), , - . ,
,
.

446

6.

, , . , - . , ,
.
. , , , , ,
- . ,
,
. , ,
, , .
, , , , . LRU (Least Recently Used ).
, .
.
, , ,
. 7,
0 7 (. 6.1). 8, -
. , . LRU
0, .
0 ,
(. 6.2).
6 . 1 . , LRU (1)
7
6
5
4
3
2
1

6.2. , LRU (2)
7
6
5
4
3
2
1
8

447

6.3. , LRU (3)


7
6
5
4
3
2

8

8 , 0.
- . 0 . LRU 1
(. 6.3). 1, . 1
2 . .
, LRU (
). , -
.
FIFO (First-in First-out
, ). FIFO ,
, ,
. . 0.
- , , 1, 0. , .
, , .
,
, , -
.
, , (thrashing). ,
, . , , , . ,
, .
, , ,
( , , ), ,
. ,
, .

448

6.

, ,
.

, 0 1,
.
,
.



, , .
, ,
. ,
26 000 4096 ,
6 , 6x4096=24 576 , 26 000-24576=1424 .
4096 , 2672 . , ,
, . ( - ).
, /2 , ,
. ,
,
. , ,
. , .
, .
10 ( + ), . 10 8 0,7 ( 1 ).
.

,
( ), . 10 000x10 000, 8-([1,1],[2,1],[]. .). 1 ([1,1],
[1,2], [1,3] . .) 80 000 .
, , 10 000 , 79 992 .
8 , 80 .

449

1
10 . 32 8
, 1
.

, 0 - . . ,
, :
1. , .
2. , .
3. , .
4. , .
5. , .
.
.
, . 6.6.

. 6.6. ,
,

, ,
. , , , . , , ,

450

6.

- , ,
.
, .
,
.
,
. 0 - . 0 .
( ). , . , - , , - .
,

.
( ), , . ,
, ,
. , . . 6.7 .
, , . ,
, ,
.
20
16
12
8

. 6.7.


, . ,

451

0, , ,
. ,
0 (, 0).
,
(
), , . ,
. , . , ,
, , . , .
. ,
( ), ,
.
,
,
. .
. , ,
.
, . . .
, () .
( - ). ,
, . . 6.4.
6.4.

452

6.

- . . ,
, . ,
. , ,
.


. .
. ,
, .
,
( ;
). -
:
.
: , . . 6.8,
, 5 . , , 1 , 7,
, . , . 6.8, . 7 2 (). 4 5
(. 6.8, ), 3 6 (. 6.8, ). , ,
.
( ,
, ). .
, , 3
, (. 6.8, ).
10 , , 3,
, 3 . .
, . ,
, , , 0,
. . ,
( ),
. . 6.8, , .
, .

453

, . .
/

4
(7)

4
(7)

3
(8)

3
(8)

3
(8)

2
(5)

2
(5)

2
(5)

'()

(3K)

7
(5)

7
(5)

7
(5)

7
(5)


(4)


(4)


(4)


(4)

1
(8)

(4)

5
(4)

5
(4)

6
(4)
2
(5)

5
(4)
6
(4)
2
(5)

. 6.8. (, , , );
()

, ,
. .
, . , ,
.
, . , , , . , ,
, , [74].
. ,
, , ,
( ), .
, . ,
. .
. , , , ,
.
. 6.8, 5, 4 , , 11 .

454

6.

, : . . .
. , .
, .
, , ,
. , .
MULTICS (Multiplexed Information and Computing Service
) , . Bell Labs General
Electric [28, 106]. MULTICS :
. ,
. ,
(. 6.9). ,
. 16 . MULTICS
, Intel, 386-,
.

18-

10-

MULTICS,
. 6.9. MULTICS,
,

455

Pentium II
Pentium II ,
,
. : LDT (Local Descriptor
Table ) GDT (Global Descriptor Table
).
, . LDT ( , ,
. .), GDT ,
.
5, , Pentium II
. CS , DS
. . 16- (. 6.10).
, ( : ). 13 ,
8 (213) .
. .

13

12

0 = GDT
1=LDT

(0-3)

. 6.10. Pentium II

0 . , , , 0, .
,

, .
8 . ,
(. 6.11).
,
. 2
LDT GDT.
, 0, 13- 8. , -

456

6.

(
),
. , 72 9 , GDT+72.

32
LIMIT

BASE 0-15
BASE 24-31 G D
0: "
LIMIT
1:
LIMIT
0: 16-

LIMIT 16-19 P DPL

TYPE

BASE 16-23


(0-3)
0:
1:

1: 32-

. 6 . 1 1 . Pentium II.

, (, )
. ,
, , .
( 0) (=0),
(). ; , .
,
. , . 32- ,
20 , . G (Granularity ) 0,
LIMIT ( 1 ). G 1,
LIMIT , . Pentium II 4 , 20
232 .
, ,
Pentium II 32- BASE , (. 6.12). BASE
, 80286, BASE 24 . 32- .

457

32-
. 6.12. (, )

( ),
. , ,
. , , .
, , , . , 32- 4
1 . , , .
,
1024 32- . . , 1024 32- .
. . 6.13.
. 6.13, , : DIR, PAGE
OFF. DIR
. PAGE
. , OFF , .
32 , 20
. , , .
1024
4 , 4 .
4 (
). , , , .

458

6.

10


10

12

DIR

PAGE

OFF

DIR

PAGE

T
. 6.13.

, Pentium II DIR-PAGE . , . 6.13,


,
.
BASE
0. , BASE, , . BASE
( ), 80286, .
, 32- , . , BASE, 0,
LIMIT, .
, .
, . Pentium II 4 , 0 , 3
. . 6.14.
, 2-
PSW (Program Status Word ) -

, .
, .

459

"
. 6.14. Pentium II

,
. .
1:
(). ,
, . CALL .
, .
,
. .
. 6.14. 0 , -, . . 1 .
, . 2
, . , . 3 , . Pentium II,
, MULTICS.
, .
, ,
, . FIELD . 6.11 , .
1

: , , .
, , ,
, 3. . ..

460

6.

UltraSPARC II
UltraSPARC II 64- ,
64- .
64- . 64 ,
1,81013 .
2 243 , , . , , . - .
UltraSPARC II 241 (2200 ). 4 : 8 , 64 , 512
4 . . 6.15.

CD ^

CJ

S g-

CD

CD
Q.

Q.

28

13

X
CD

3
.

25

CD

Q.

CD

CN

X .
CD

CD

16

zs

S
X
CD
&

CD

CD
X

=
1
CD
2

22

I J
1

I I I I

Q.

42

*4

CD

g*

19

CD

45
K512

7i

16

48

Q.

13

51

22

19

19

22

. 6.15. UltraSPARC II

- ( Pentium II) . UltraSPARC II . ,


TLB (Translation Lookaside Buffer ). 31
. 8 2
, . , .
TLB . .
TLB 64
.
.

461

, ,

TLB . , , , 41-
(, ). . 6.16, .
TLB (
+
]

TLB (
)


( )

0

,

0...0000

1

,

0...0001

. 6.16. ,
UltraSPARC II: TLB ();
(); ()

, TLB, . . , - . TLB ,
. .
,
.
TLB

462

6.

(TSB translation storage buffer). -


. 16-
,
, , . - , , 8192 ,
, 13 0000000000000,
0 .
, 0000000000001,
1 , . 6.16, . , .
, TLB
. , .
, - TLB, . LRU
, .
-,
, . , , . ,
. , , - ,
,
, . ,
, TSB. , TSB
- . ,
, .
Pentium II UltraSPARC . Pentium II
,
. UltraSPARC II . Pentium II TLB TLB. UltraSPARC II
.
, Pentium II 32- , ( 1 )
. Pentium II , ,
Windows UNIX
, . UltraSPARC II 64- .
2 , . 64- ,
UltraSPARC II . Pentium II, UltraSPARC II [66].

463


, , .
. .
,
-
. .
-.
-, -
. , - , .
, - .
- , -
. -
(, 64 8 ). , , - . , .

-
. ,
. .

, .
.
- ,
. . -, , - , , - ,
. -,
- ,
. -
,
, , , .
.
1. .
2. .
3. - ( ) ,
.

464

6.

4. .
5. .
6. .
7. .
8. .

.

-
. ,
-. -
(, ),
. (, ), .
, , , .
. -.
, . - , , .
, . , .
. :
1. , .
2. , .
3. .
.
. ,
(, 2000
1000 ).
, ,
. read , read .
, . , , .
, .

465


. ,
. , , : , ,
, . , , , .
, ,
. 6.17. ,
, .
, , .

14
15
16
17

15

{ 17
16
18

18

19

19

20
21

20
21
22
23

18

22
23

24

24

25

25

26

19

. 6.17. , : 19 ();
19(6)

. write .

-
, -, , . . , .

466

6.


. . 6.18
, 5 12 . . 6.18,
.
-. . 6.18,
. .
11

11
4
0

. 6.18. '
(); ()

. .
, ,
.

- , -
. , ,
.
,
. , ( ),
.
( UNIX),
, . , , .

467

, .
.

. .
. , 64
64 ,
. , 4,52
19, 4 52, 52
19, 19 (, 0 -1),
. MS DOS,
Windows 95 Windows 98. Windows NT , , UNIX.
, , ,
.
, , . j , ,
. ,
,
. ,
, . ,
.
,
(, , -), , .
1200, 700, 2000 900 -,
0,1200,1900 3900 ( ). ,
.
,
, , .
- , . ( ),
.
. . 6.19,
. 6.18, .
, , . 6.19, . 1 , , 0 , .

468

6.


0
0
1
1
2
2
2
3
3
4

0
6
0
11
1
3
7
0
9
3

5
6
10
1
1
3
5
3
3
8

0
0
1
2
3
4

0
0
1
0
1

1 0

0
0
0
0
1

0
0
1
0
1

0
0
0
1
0

0
0
0
1
0

1
0
0
1
0

0
0
1
1
0

0
0
0
1
0

0
0
0
1
0

1 0

0
0
0
0
0

0
0
0
0
1

0
1
0
0
0

. 6.19. : ();
()

.
:
, .
, . ,
. .
, .
,
. . -, , ,
. 10 ,
8 ( 1 ), 1
( 0,125 ), 8
8 1 , 8 . .
, .
, ,
. MS DOS , 16- . 64 ,
, , 64 . Windows 95 , 32-
. Windows 98 .
. ,
. ,
. ,
.

469

, . ,
. , MS DOS
Windows 95 2
32 , 100
32 668 .

. , .


. , , .
(, ). , , . , ,
(, -).
.
-. , , , .
. . 6.20 .
, , :
1. .
2. .
3. .
4. .
. ,
. , .
, .
,
.
.
,
. , .
, .
.

470

6.

: Rubber-ducky

: 1840

: Anatidae dataram

: 16 1066

: 1 1492

: 4 1776

: 144

0: 4 6

1: 19 9

2: 11 2

10

3: 77 0

. 6.20. (); ()



( ).
, , .
, .
.
. , ,
1/ , .
. , ,
1 , 1 , ,
1 , . ,
, ()
. . ,
1000 1 , , 0,001 , .
, . , .
, . , .

471

. 6.21 ,
, , .
, , . ,
.
3

3
3

I
t
i

2
2

i
i
i

[ |
i
i
i

|
i
i

i
i

i i i i

1
1

. 6 . 2 1 . ();

( ) ()


- . ,
, , .
, , .

.
.

, , .
.
,
. : ,
, , . , .

472

6.


,
. , .
.
, 1 2, .
1 (producer), 2 (consumer).
. .
. , , ,
.
, ,
. , , . ,
.
. in out : in (
), a out , .
in=out, , . 6.22, . . 6.22, , .
. 6.22, , . . 6.22, . .

(), out (, =52,
out=53), . ; , ,
in=out .

In-*

In-

Out-
In-

In-

OutIn,
out'

Out-

Out-

In-

Out

. 6.22.

473

6.1 Java .
: m,produser consumer. , in out ,
100 ( buffer[O] buffer[99]).

(threads). producer consumer, . Thread run. run thread.
start , Thread, .
. ,
Java
. .
,
, .
,
.
( ), Java , .
next in out, , .
next 98 ,
. 99, ,
, 0.
, . Java Thread
suspend () resume ().
6.1.
. ( 1).
m.MAX_PRIME. . , MAXPRIME,
. in, out, buffer
next.
( 2), in out.
(, =62 out=63), suspend 2. ,
( ) in ( 4). in 1 out ( 5) (, =17, out=l6), , in out
, in. ,
( )
.
resume, ( 5). , .

474

6.

6 . 1 .
public class m {
final public s t a t i c i n t BUF_SIZE = 100;
final public static long MAX_PRIME=100000000000L;
public static i n t in = 0, out = 0.
public static long buffer[ ] - new long[BUF_SIZE];
public static producer p.
public static consumer c;

// 0 99
//
//
//
//
//
//
//
//
//
//

public static void mam(Stnng args[ ] ) {


p = new producer );
= new consumer ),
p startO:
startO.

// m out
public static i n t next(int k) { i f (k < BUF_SIZE - 1) return(k+l). else return(O):
//
//
//

class producer extends Thread {


public void runO {
long prime = 2;
while (prime < m.MAX_PRIME) {
prime = next_pnme(pnme):
if (m next(m.m) == m.out) suspendO:
m buffer[m. i n ] = prime;
m in = m.next(m i n ) .
if (m next(m out) = m in) m c.resumeO.

private long next_pnme(long pnme){ ..}

// 1
// 2
//
// 4
// 5

//,

class consumer extends Thread {


//
public void run() {
//
long emirp = 2;
//
while (emirp < m MAX_PRIME) {
if (m in == m out) suspendO:
// 1
emirp = m buffer[m.out]:
// 2
m.out = m next(m out);
//
if (m.out m.next(m next(m.in))) m p.resumeO; // 4
System out print!n(emirp).
// 5

. ( 1), , . ,
, . , ( 2) out.
out in, , out
in. in=out-\ ,
,
resume. , .

475

, (. 6.23). ,
, ,
, . ,
21, m=22, a out=2i (. . 6.23, ). 1
, 5 20. , 1 2. out. in ? 22. , 1,
in out , (. 6.23, ).
-
1
-
5
100

-
1
-
5
100

-
5

-
1
100

In = 23
In = 22
Out = 21

In = Out = 22

Out = 22

. 6.23. ,
w

, in out,
, .
in 4. =23,
=22. 5 , in=*next(out). , in out, , .
, , , resume (. 6.23, ).
, resume . .
. in out
, .
=22 out-22, . . , =24,
a out=22. , 2 ( ) ( ).

476

6.

. .
.
, , in
out, , , , , in=out+\,
, (
), resume, ,
. , , in out,
out .
. ,
Java Sun Thread
suspend resume,
. ,
, ,
, UNIX NT.



.
. , , , .
, , , . .
,
2 . .
, -1 , .
[31] . - , .
.
, up down, . Up
1 , a down 1 . down
, 0, 1 . 0, down
. ,
up .
up , . 0
, 1. , , down,
0. . 0, up 1. , .
: ,

477

,
down 0. 6.5 up down.
6.5.

Up

Down

= 0

>

= + 1; = +1
down ,

,
up

= -1

, Java , . ,
- Java.
, , up down, up down . , Java.
6.2 , . : available, 100 ( ), w. filled, 0.
1, 1. down
filled .
, down available
, available 99. 5 up filled, filled 1.
, down. filled 0, .
.
=22, a out=2\, 1, 5.
1, down, filled,
1, 0.
up available, available 100. 1.
, down, 2, 4.
MOMemfilled=0.
up, up.
, ,
( up). ,
1 . . .

. , ,
.
, .
if 6.1 .
.
, up down. ,

. up down,
, .

.
. , down . - up ,
down . 0, .
. 20 .
10 (). .
() . ,
7 . 0 7 (
0 7). up, .
down, .
.
( down);
. .
( up).
( down) .
, . (
up), .
6.2.

public class m {
final public static int BUF_SIZE = 100.
// 0 99
final public static long MAX_PRIME=100000000000L.
//
public static int in = 0. out = 0.
//
public static long buffer[ ] = new long[BUF_SIZE]. //
public static producer p
public static consumer
public static int filled = 0, available = 100.

// /
//
//

public static vend mainCStnng args[ ]) {


p = new producerO;
= new consumerO;
p.startO:
startO:

479

//
//
//
//
//

// in out
public static int nextdnt k) {if (k < BUF_SIZE - 1) return(k+l): else return(O).
class producer extends Thread {
native void updnt s); native void downdnt s);
public void run() {
long prime - 2;
while (prime < m.MAX_PRIME) {
prime = next_pnme(pnme):
downtm.available);
m buffer[m in] = prime;
m.in = m next(m.in);
up(m.filled);

//
//
//
//
// 1
// 2
//
// 4
// 5

private long next_pnme(long pnme){ ...}

//,

class consumer extends Thread {


native void updnt s); native void downdnt s);
public void runC) {
long emirp = 2,

//
//
//
//

while (emirp < m MAX_PRIME) {


down(m. filled),
emirp = m.buffer[m.out];
m.out = m next(m out);
up(m. available):
System.out.print!n(emirp);

// 1
// 2
//
// 4
// 5


Pentium II Ultra SPARC . , .
Pentium II Windows NT (
NT); UltraSPARC II UNIX. UNIX, NT. , UNIX NT,
.

480

6.

(UNIX NT).
, .

UNIX
UNIX Bell Labs
70- . (Ken Thompson)
- PDP-7.
PDP-11, . (Dennis
Ritchie). 1974 UNIX [120].
(Ritchie, 1984; Thompson, 1984).
Bell Labs UNIX. Bell Labs, AT&T
, UNIX
.
PDP-11
, , PDP-11,
, . UNIX .
,
.
, UNIX, . , . - VAX,
, 14
255, TCP/IP,
( ,
Berkeley UNIX).
, AT&T UNIX, 1982
System III, 1984 System V. 80-
UNIX: Berkeley UNIX System V.
, UNIX. UNIX,
, UNIX
( MS DOS). POSIX
1
(Portable Operating System-IX ).
POSIX 1003.
.
1

POSIX Portable Operating System Interface for Computer Environments - . . . .

481

POSIX ,
UNIX. 1003.1
; 1003.2
. . 1003.1 60 ,
.
, . .
UNIX 1003.1. UNIX
, ,
System V Berkeley UNIX. POSIX 100 . UltraSPARC II
System V. Solaris. Berkeley.
. 6.6 . .
1003.1. System V.
6.6. UNIX

, , ,
;

, ,

/ , , ;


;
;

/ ; /

;
;

Berkeley UNIX,
System V. ( ). , , . UNIX
,
. , TCP/IP. UNIX, UNIX.
UNIX, -
,
. , . 6.24,

482

6.

. ,
. . ,
, , ,
. .
.

.
, ,
. .


. 6.24. UNIX

. , , ,
.
,
.
. Berkeley [95]
[121].
UNIX .
, ,
, . .
, . , . , .
UNIX , (, ).

483

UNIX ,
. UNIX
, 24 25 80 ASCII-. , , . ,
UNIX,
.
, , UNIX X Windows. Motif X Windows.
, X Windows Motif .

Windows NT
IBM PC, 1981 , 16- , , . MS-DOS 1.0. 8 .
24 MS-DOS 2.O. () ,
UNIX. 1984 IBM PC/AT MS-DOS 3.0, 36 .
MS-DOS ,
.
Apple Macintosh, Microsoft
, Windows. Windows, Windows 3.x, ,
MS-DOS. , .
1995 Windows 95, MS-DOS,
MS-DOS 7.0. Windows 95 MS-DOS 7.0
,
, . Windows 95 32-
. 16-
MS-DOS . (
MS-DOS 8+3 ).
Windows 98 1998 MS-DOS ( 7.1) 16- . Windows 98
Windows 95, MS-DOS Windows , , . ,
, , .

484

6.

,
Microsoft , .
Microsoft 32- , .
Windows New Technology ( )
Windows NT1. , Intel, . .
NT : .
.

, ,
. , . -,
. .
. NT
( ).
.
.
MS-DOS Windows . NT ,
2. ,
, .
NT 32- . ,
32-
. , 32- .
NT, Windows 95, .
, ,
, . 1

, Windows NT,
32- OS/2,
IBM Microsoft
16- OS/2. ,
5386, 1989 , , Microsoft,
OS/2 v.3.0, Windows NT,
, IBM. . . .
, , UNIX, Windows NT
, , UNIX
. , . . . .

485

: , . NT Intel (DEC Alpha,


IBM Power PC SGI MIPS). NT 4.0 .
, NT
. , , , .
NT . 6.25. , . .
. ,
C++, - .
. , , .
- ,
, -, .
, NT , .
POSIX

Win32

OS/2

POSIX

Win32

> OS/2

. 6.25. Windows NT

Win32

486

6.

, . ,
.
, ,
, , , .
, , . ,
-.
-. , -
, ,
. ,
. .
.
,
. .
.
.
, (, , , , -, . .).
,
, .
6 , . 6.25.
-
-, -. -
, , , , .
- , , , . - ,
, . NT . - ,
. -
, - .
, ,
.
, - , .
. .

487

,
, . , .
, .
NT, .
,
, , .

. , .
. NT NT 4.0 ,
,
Microsoft . Win32 . , .
.
. NT .
.
, .
,
. 6.25 3 : Win32 ( NT Windows 95/98), POSIX
( UNIX) OS/2 OS/21.
Windows Win32 Win32, .
Win32 Win32 , NT .
POSIX UNIX. 1003.1. .
Win32,
. UNIX NT . NT ,
,
1003.1. , Win32,
Win32 .
, Windows NT ,
OS/2. NT 16-
OS/2, . 32- OS/2
Windows NT . . . .

488

6.

OS/2 . ,
. Win32. MS DOS ( ).
, NT.
. , Microsoft NT,
, .
, .
Microsoft Win32 API (Application
Programming Interface ). -

, ,
,
Win32. Win32 API .
, , NT API, NT. Win32 API , , NT.
Win32 API UNIX . UNIX
:
. Win32 .
. , Win32 ,
(, ).
Win32 API (,
, , . .). , , ,
(handle). . . ( UNIX ).
,
,
. ,
, .
NT -,
( API) . , - ,
.
Win32 API Windows 95/98 (
Windows ), , . , Windows 95/98
, API, ,
. , NT

489

Unicode, Windows 95/98. API. NT, , 32- , Windows 95/98


16 ( Windows 3.1). Win32 API
, - . Windows 95/98 NT . 6.7.
6.7. Windows

Windows 95/98

NT 5.0

Win32 API

32-



MS-DOS

Unicode

Intel 80x86

80x86, Alpha

(
)

Plug and Play


UNIX NT.
.

UNIX
UNIX . : , , . 6.26. ,
. . , .
.
Solaris.
, , ,
. , , ,
. UNIX,
,
, .

490

6.

OxFFFFFFFF

. 6.26. UNIX

, ( ), Berkeley UNIX. Sysytem V ( Solaris)


, .
. , 12 144 , 144 . , -
. , , . ,
fd (file descriptor).
, .
paddr=nmap(virtual_address.1ength.protection,f 1 ags.fd,fI1e_offset)
length, file_offset ,
, virtualjxddress. flags ,
, paddr.
. protection ,
( ).
unmap.
.
.
, , ,
. .
, - .
, ,
,
. ,
, .

Windows NT
NT
. 32 ,
4 .

491

2 ; 2
. NT
, : 3
1 . (4
Pentium II).
:
(free), (reserved)
(committed). , - . ,
,
.
, . , . ,
. . ,
, .
(, , ).
64 64 , ( 0 -1).
, . , ( ,
).
. , . ; .
NT, System V, . ,
.
,
, , . , ,
(-
). , .
NT ,
, .
, . . , ,

492

6.

, , ,
, .
Win32 API , . . 6.8.
, ,
, .
6.8. , API
Windows NT
API

VirtualAlloc

VirtualFree

VirtualProtect

//

VirtualQuery
VirtualLock


(
)

VirtualUnlock

CreateFileMapping
MapViewOfFile

UnmapViewOfFile

OpenFileMapping

. 30
. ,
. ,
. NT
API, ( . 6.8).
4 API
. , CreateFileMapping.
(handle) , .
.
, , . ,
.
API . . , API
. , .
, , -

493

. (
.) NT malloc UNIX, NT, UNIX, .

-

. , -
. UNIX, NT . UNIX NT
, , NT
UNIX.

- UNIX
UNIX
, , , .
8- 1 0 232-1 .
,
ASCII , .
,
. read write , , .
,
, . , .
, ,
-.
- .
,
- -. , ,
.
UNIX . 6.9.
creat ( ) .
, open
. unlink (, ).
open ,
. mode , ( ,
. .). , . . 1

8- , 5-, 7-, 8-. 8 . . . .

494

6.

- read write,
( , ),
, ,
. Iseek ,
.
Stat (, , . .). Chmod (, ,
, - ). , fcntl , .
6.9. UNIX

; mode

creat(name, mode)
unlink(name)

(, 1 )

open(name, mode)

close(fd)

read (fd, buffer, count) count buffer


write(fd, buffer, count)

count buffer

lseek(fd, offset, w)

offset w

stat(name, buffer)

chmod(name, mode)
fcntl(fd, cmd, j)

(,
)

6.3 , -.
. ,
data newf. infd outfd .
, ,
. .
open creat,
, , .
6.3.
UNIX. ,
Java
,
/* . */
infd = openC'data", 0);
outfd = creat("newf", ProtectionBits);
/* . */
do{
count = readCinfd. buffer, bytes);
if (count > 0) write(outfd, buffer, count):
} while (count > 0):
/* .*/
close(infd):
ciose(outfd);

495

read : , . .
count. Count , bytes,
. write . , . , .
UNIX
( 20). 0, 1 2
, . , , . UNIX
. .
.
, . UNIX , , bin
( ), dev ( -), lib ( ) usr ( , . 6.27). usr ast
jim. ast (data /.) bin,
4 .
, . ,
. , game2 : /usr/
ast/bin/game2. , , .

. .
( ).
. /usr/ast ,
game3, bin/game3.
, link. /usr/ast/bin/game3 /usr/jim/jotto
. ,
. open creat ,
.
UNIX . 6.10. Mkdir , a rmdir
.
. , ,
. Chdir .
Link ,
. , /usr/jim/jotto
Iink("/usr/ast/bin/game3", "/usr/jim/jotto")
, ,
. Unlink .

496

6.

, . ,
. , , .
unlink("/usr/ast/bin/game3")

game3 /usr/jim/jotto. link unlink


.


. 6.27. UNIX

497

( ,
) , ,
. RWX (Read, Write, eXecute
, , ). ,
,
, . RWX R-X X
, , -
(, ,
), , . ,
, (),
.
, . , .
6.10. UNIX

mkdir(name, mode)

rmdir(name)

Opendir(name)

readdir(dirpointer)

Closedir(dirpointer)

chdir(dirname)

dirname

Iink(name1, name2)

2, 1

unlink(name)

, UNIX.
. [152]. ( ,
) 64 , (i-node). I-node , , , . .
, ,
, . . , UNIX
i-node .
:
.
openC'foo.c", 0),

foo.c,
. , .
, , , . , /usr/ast/data, -

498

6.

usr. usr, ( UNIX ).


ast
/usr/ast. /usr/ast,
data , , /usr/ast/data. , .
, ( ), :
1.
2.
3.
4.
5.
6.
7.
8.
9.

, 9 RWX .
( ).
.
.
.
.
, .
, .
, .

: , - - .
. 32- , .
, 1 000 000 1 .
1 000 001.
.
10 .
1024 , 10 240 . 11
, 256 .
10 240+256x1024=272 384 .
12,
256 .
272384+256x256x1024=67 381 248 . - , 13.
, 256 . , ,
, 16 843 018 . ,
17 247 250 432 . 32 ,
4 294 967 295 .
. , . , .

499

- , .
, . ,
, .
, , .
, , . .
read, , .
, , -. Open .
, .
read write ,
. 10 ( ); . Lseek -.
Link ,
. . , 1. Unlink
.
0, .

- Windows NT
NT , NTFS
(NT File Sysytem Windows NT) FAT (File Allocation Table
). NT. MS-DOS, Windows 95/98 ( ).
FAT , NTFS. FAT32
NT 5.O. Windows 95
Windows 98.
NT 255 . Unicode, ,
, .
NT
( foo FOO). , Win32 API ,
, Win32.
UNIX,
, 2 - 1 . , 32,
64 , .
Win32 API UNIX,

500

6.

, . (handle), . UNIX, , ,
0,1 2 ( ).
Win32 API . 6.11.
6 . 1 1 . Win32 API - .
UNIX
API
CreateFile

UNIX
open

DeleteFile

unlink

CloseHandle

close

ReadFile

read

WriteFile

write

SetFilePointer

Iseek

SetFileAttributes stat
LockFile

Fcntl

UnlockFile

Fcntl

. CreateFile
(handle) . , API open.
API, . , CreateFile :
1. , .
2. , , : , .
3. , ,
.
4. , , .
5. , , ,
.
6. , , . .
7. (handle),
.
API UNIX. , .
API, , 6.3. ( -

501

) 6.4.
, CopyFile.
6.4.
API Windows NT. ,
Java ,

/* . */
inhandle - CreateFileCdata". GENERIC_READ. 0, NULL.
OPENJXISTING, 0. NULL);
outhandle = CreateFileC'newF. GENERIC.WRITE. 0. NULL. CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL.
NULL);
/* . */
do{
s = ReadFiIe(inhandle. buffer. BUF_SIZE. count. NULL);
if (s > 0 && count > 0) WriteFile(outhandle, buffer, count. Socnt. NULL);
while (s > 0 && count > 0);
/* . */
CloseHandle(inhandle);
CloseHandle(outhandle);

NT ,
UNIX. /, \ (
MS-DOS). ,
. NT UNIX . UNIX
, . NT 4.0 ,
, (, C:\windows\system\
foo.dll). NT 5.O.
. 6.12 (
UNIX). , .
, NT 4.0 .
,
. , . NT 5.0 .
6.12. Min32 API .
UNIX,
API

UNIX

CreateDirectiry

mkdir

RemoveDirectory

rmdir

FindFirstFile

opendir

FindNextFile

readdir

MoveFile
SetCurrentDirectory

chdir

NT , UNIX.
, .

502

6.

(SID Security ID),


, ,
. . , , .
,
. , (ACL Access Control List).

- . ,
, ,
, , ,
XYZ .
- (handle), ,
.
, , , ,
. , , ,
( , , , , ). , .
, NT.
, UNIX. , .
.
. 512 64 , .
. 64- .
MFT (Master File Table
),
.
(i-node) UNIX.
. , .
. 6.28. ,
( , , , . .).
(1 ,
2 ).
( ) . , . 6.28.


MS-DOS

503

MFT

MFT

(MFT)
. 6.28. Windows NT

,
POSIX, ,
. . . 255 Unicode. 16- , MS-DOS, 8 ,
3 .
MS-DOS (8+3),
MS-DOS .
. , NT 4.0,
. NT 5.0, , .
, , .
(immediate file) [100].
, ( )
, .
,
.
2 . , 2 . , , 0 1 1 . 267 15 . ,
, .
NTFS ,
. [137].

504

6.


NT UNIX , ,
, .
, .
, .

UNIX
UNIX , . fork. ,
. , fork,
. .
, exec, ,
exec. , xyz, () fork,
. exec,
xyz.
, - ,
, .
wait waitpid, , exit.
fork ,
. . 6.29. fork , . fork , .
, .

,

. 6.29. UNIX

UNIX , . -

505

, ,
.
, . .
, 4 128 ,
512 , ,
.
System V Solaris . .

msgget. msgsnd, msgrecv. , , ,
. -, , . -, , . -, , msgrecv , .
. UNIX
.
, ,
.
. , , ( shmat shmop).
System V Solaris .
, .
UNIX
. .
, ,
( ,
. .). ,
. (, -),
. ,
- -,
, , , .
. ., .
? World Wide
Web.
web-. -, . , . ,
( 20 ),
, web-
-.

506

6.


, - web-. , . .
, ,
, .
UNIX pthreads. POSIX (P1003.1C) . , , .
. 6.13.
6.13. , POSIX

pthread_create

pthread_exit

pthreadjoin

pthread_mutex_init

pthread_mutex_destroy

pthread_mutex_lock

pthread_mutex_unlock

pthread_cond_init

pthread_cond_destroy

pthread_cond_wait
pthread_cond_signal

. , pthread_create,
.
. , , pthread_exit.
, , pthreadjoin. ,
pthreadjoin .
,
. - (, , ). ,
. ,
. ( , : 0 1). (mutexes),
-
(MUTual Exclusion - ).

507

pthread jnutexjnit
pthread_mutex_destroy .
: . , pthread'_mutex_lock, . ,
, . ,
, , pthread_mutex_unlock.
(,
). (, , ).
(condition
variables). pthread_
cond_init pthread_cond__destroy .

, , , , , , pthread_cond_wait
. , , (
), pthread_cond_signal,
, .
, . (condition
variables) , . , ,
.

Windows NT
NT , . , , , (fiber) (
). ,
, .
API CreateProcess. 10 , . ,
UNIX, fork , a exec : ,
,
. 10 CreateProcess:
1. .
2. .
3. .
4. .
5. , ,
(handles) .
6. (, , , , ).
7. .

508

6.

8. .
9. , .
10. , 18 .
NT .
. 18 , , (handle) (
), ,
. ,
, ,
.
NT ,
. , , CreateThread 6 10: , , , ,
( ) .
( , ).
, , , . ,
, , . , . , ,
. .
NT , , . , NT (fibers), , , .
, ,
, , .
, ,
, . ,
. , , , , , NT.
:
, , , (sockets), . : . .
, UNIX. , 128 128 ( 512 , ).
, , .
, .

509

NT ( UNIX ).
, . -, ,
. , .
, ,
.
, . .
, .

. .
, .
, . , ,
. , , - -.
NT (, , ). ,
, , .
API CreateSemaphore,
. , (handles). DuplicateHandle ,
. up down, : ReleaseSemaphore (up)
WaitForSingleObject (down). WaitForSingleObject
,
, 0.
, , . , ,
API (WaitForSingleObject) (ReleaseMutex).
, , ,
.
,
,
. , (handles)
. EnterCriticalSection Leave CriticalSection . API ,
, .

510

6.

, . - ,
WaitForSingleObject.
SetEvent PulseEvent.
, .
, . ,
. ,
, .


, . , - .
, , ,
.
, .
.
, . .
- . Pentium II UltraSPARC II , .
- .
, , ,
-. , . . , .
. , .
.
.
. , . .
UNIX NT . .

511

, ,
. , .


1.
,
( )?
2. 32- . 8 . ?
3. 8 4 . 1024 . :

1. , - .
2. 0, 3728, 1023, 1024,1025, 7800 4096?
4. 16 4 . .
:
0,7,2,7,5,8,9,2,4
. LRU?
. FIFO?
5. FIFO. . : ,
.
6. ,
, , - , , , .

512

6.

(, ).
, ,
? ?
7. ,
, . - , ,
. ,
, , ,
, ?
8. . 2- , 2- 11- .
32 , 2 . , , , , . :
0

1 2 3

0
1


12

15

//

0
1

14
1


. , , .


1
1.
1
1
2.
10
3
3.
2047
1
4.
4
1
5.
2
0
6.
14
3
7.
100
2
8.
50
0
9.
5
0
10.
60

513

9. - . , .
- ,
? .
10. ,
, , .
, 4 , ,
4096, 5000.
?
11. Pentium II , . , Intel ?
12. Pentium II 10
8000. BASE 10 10000.
Pentium II? ? ?
13. .
14. . , ?
15. , . ,
. , , - , .
: LRU FIFO. ?
16. - , ( , 100 )?
17. ,
open?
18.
. 800 , 5
32 . , (
) , ? , 32- .
19. , . , N 1 .
,
, . . ,

514

6.

,
i 2''.
?
20. , , , . ,
? .
21. . , up
down ( ),
, . , .
. , :
. , 100 ?
. , ?
22. , ,
, . , ( ).
, , peek.
, . , ,
down. , ? ?
23. , 0 1000 , PI, P2 , . up down
. up,
, 1
2 . . , 1.
t=100 P1 down.
t=200 PI down.
t=300 PI up.
t=400 PI down.
t=500 PI down.
t=600 PI up.
t=700 PI down.
t=800 PI up.
t=900 PI up.

515

24. , ,
. , ,
.
, ,
(, ).
25. , , . TSL X X. 0, 1
, .
, TSL .
TSL, lock unlock :
lock{x) , . , ; unlock .
, , ,
.
,
, . lock
unlock .
26. in out 65 ? in out 0.
. 22 ;
. 9 ;
. 40 ;
. 17 ;
. 12 ;
. 45 ;
. 8 ;
. 11 .
27. , UNIX 2
512 (
, ). ? , 64 .
28. , UNIX
unlink("/usr/ast/bin/game3")
. 6.27. ,
.
29. , UNIX , .
, ,

516

30.

31.

32.

33.

6.

. pipe, . - -?
? .
UNIX, ,
,
. , - . ,
,
, , . , , , ,
.
?
NT , ,
. ?
-
-
NT. ,
.
. ,
, 64 1 . 64 , .
, . , ,
. , . , , , ( , ),
. .
, , : LRU FIFO.
, 4 , . .

34. UNIX NT,


. ,
,
. , .
().


, ,
.
, .
. , ,
.
, ,
- , , .
, , ,
, , .
. , , , .
, .
,
, ( ). , ,
,
.
1. .
, , ,
. :
1. .
2. .
.
. :
. ,
(, Java) .
, (
) . ,
, . . . .

518

7.

:
, .
,
: ,
( ). . , , , , .
, ,
( ), , , , .



. , , .
(, Java ),
, ,
.

?
, . ,

.
,
.
,
( ), . . , (add), (subtract), (multiply)
(divide) ADD, SUB, MUL DIV, , .
,
.
.
,
. . ,
,
.

519

,
. -, ( ). -, , .
. ,
, , Java .
, . , , ,
, , , . ( ) . ,
.
, , , , .
.

?
.
, . , .
?
: . -,
, , ,
. . , , , , BIOS
.
-,
, .
, , .
( )
, .
. 1% 50% ,
10% 90% .
, 10 - 100 ,

520

7.

. (
, , . .).
50 -.
33 ,
( ). . 7.1.
, .
. , , .
.
, ,
. .
, 10% 90% .
, 100 90 10%, 10 90% . 10% , . (tuning).
. 7.1.
5 , 90 30 .
7 . 1 .
( )
-,

50

33

10

100


10%

90%

90
10

10

100


10%

30

90%

10

15

40

, ,
, , (. 7.1). 20%
(33 40 ), (50 - 15). , :
, , .

521

, 1 ,
,
, 4:1 .
, , , ,
. , , , , .
,
MULTICS. [49] PL/I, , 26 50 , . PL/L, 20
40 , , . [27] PL/I, 50 000
1000 , 65 000 30 000
8 4 . ,
,
, .
, , 4
. -,
, , -
2 3 .
-,
- . , , , . . ,
, , . , , , .
-, , , . ,
, . , -
.
, . , , ,
.


,
, -

522

7.

. 7.2-7.4
Pentium II, Motorola 680x0 (Ultra)SPARC. N=I+J. . I, J N.
.
7.2. N=l+J Pentium II

FORMULA:

MOV
ADD

EAX.I

; =1

EAX.J

; EAX=I+J

MOV

N.EAX

; N=l+J
; 4 3

DW

DW

; 4 4

DW

; 4

7.3. N=l+J Motorola 680x0

FORMULA:


MOVE.L

I,DO

; D0=l

ADD.L

J,D0

; D0=l+J

MOVE.L

D0,N

; N=l+J

DC.L

; 4 3

J
N

DC.L

; 4 4

DC.L

; 4 0

7.4. N=l+J SPARC

%HI(I),%R1
[%R1+%LO(I)],%R1

! R1 = I
! R1=l

SETHI

%HI(J),%R2

! R2 = J

LD

[%R2+%LO(J)],%R2

!R2=J

%R1,%R2,%R2

!R2=R1+R2
! R1 = N

FORMULA: SETHI
LD

NOP
ADD

! J

SETHI

%HI(N),%R1

ST

%R2, [%R1+%LO(N)]

1:

.WORD3

! 4 . 3

J:

.WORD 4

! 4 . 4

N:

.WORD 0

! 4 . 0

523

Intel ,
.
Microsoft MASM. Pentium II, ,
, 386,486, Pentium Pentium
Pro. SPARC Sun.
32- . ,
Pentium II, , Sun,
.
: ,
, . ,
. ,
.
,
, . , 1.
4 : FORMULA, I, J N. ,
SPARC ,
Motorola . Intel
, . . .
.
, , 1. :

.
6 8 . .
.
,
. Pentium II , , . . Motorola DO, Dl, D2. SPARC . %R1 %R2.

( ), . ,
-.
Intel MOV
, . Motorola
MOVE . SPARC
LD ST . , .
,
SPARC,
32- ( SPARC Version 8) 44- ( SPARC

524

7.

Version 9), 22 . ,
, .

.
32 10 64- R1,
22 32- I R1
10 31.
+.
R1 10 I (
I), R1.
Pentium, 680x0 SPARC
( byte (), word () long).
, ? . Pentium II . , 32- ,
16- , 8- AL . Motorola
.L long, .W
word . byte. SPARC (, , (halfword)
64- LDSB, LDSH LDSW ). , .
, , . Intel DW (Define Word ).
.WORD. Motorola DC (Define Constant ). SPARC .WORD.
.
, . , .
, . ,
, . .
. ,
, , . ( ). . .
SETHI

,
, , (, - ).
-

525

. DW (. . 7.2). . 7.5
(). MASM Intel.
7.5. MASM

SEGMENT (, ..)
ENDS

ALIGN

EQU

DB

DD

16-

DW

32-

DQ

64-

PROC

ENDP

MACRO

ENDM

PUBLIC

EXTERN

INCLUDE

IF

ELSE

, IF

ENDIF

COMMENT
PAGE
END

SEGMENT , ENDS .
, ,
. .
ALIGN ( ) , . ,
61 , ALIGN 4 64.
EQU . ,
BASE EQU 1000

BASE 1000. , EQU,


,
, :
LIMIT EQU 4 * BASE + 2000

, MASM, ,
.

526

7.

, v^ . 1, 2,4 8 . ,
TABLE D8 1 1 . 2 3 . 49

3 11, 23
49 . , , TABLE,
, 11.
PROC ENDP . ,
. MACRO ENDM
. .
PUBLIC EXTERN. . , , , . , (),
,
PUBLIC. ,
, (EXTERN),
, - . ,
, . F00
, ,
.
INCLUDE
. , , .
, MASM, . ,
WORDSIZE EQU 16
IF WORDSIZE GT 16
WSIZE: DW32
ELSE
WSIZE: DW 16
ENDIF
32- WSIZE.
: 32, 16 WORDSIZE
( 16).
16- ( 8088) 32- ( Pentium II).
IF ENDIF,
, WORDSIZE,
. ,
. , WORDSIZE, ,
.
.
COMMENT
- . PAGE . , END .

527

MASM . Pentium II
,
, .


.
, .
, .
. ,

. (, ), ,
.
.

,

.
, .
, . 7.1 Pentium II, q.
( 7.2). SWAP :
MOV EAX.P
MOV EBX.Q
MOV Q.EAX
MOV P.EBX
SWAP .
, :
1. , .
2. , .
3. , (, ENDM).
, . ,
(
SWAP), . ,
.

528

7.

7 . 1 . , q
( )

MOV
MOV
MOV
MOV

EAX.P
EBX.Q
Q.EAX
.

MOV
MOV
MOV
MOV

EAX.P
EBX.Q
Q.EAX
P.EBX

7.2.
SWAP

MACRO

MOV EAX.P
MOV EBX.Q
MOV Q.EAX
MOV P.EBX
ENDM
SWAP

SWAP
, . . ,
7.1 7.2, .
, . . .
.
,
. ,
, . . 7.6 .
7.6.



, ?


,
?

529

, .
, . .
, ,
, . .
, .
, , , ( ). . .


, , ,
. , ( 7.3).
Q, R S.
7.3.

MOV
MOV
MOV
MOV

EAX.P
EBX.Q
Q.EAX
P.EBX

MOV
MOV
MOV
MOV

EAX.R
EBX.S
S.EAX
R.EBX

7.4.
CHANGE

MACRO P1.P2
MOV EAX.P1
MOV EBX.P2
MOV P2.EAX
MOV Pl.EBX
ENDM
CHANGE P.Q
CHANGE R.S

, , , . , , ,
.
. 7.4. 7.3, . 1

530

7.

2 .
1 ,
2 .
CHANGE P.Q

, a Q .
, 7.3 7.4 .


,
.
MASM.
: . , , .
, , .
. ( MASM) (LOCAL),
. .
MASM
.
. IF:
Ml

MACRO

IF WORDSIZE GT 16 M2

MACRO

ENDM
ELSE
M2 MACRO
ENDM
ENDIF
tNDM
2 > , ,
: 16- 32-.
Ml , 2 .
, , .
, ,
, , , . .


: . .

531

,
,
. , ,
, .
, , , .
. . ,
, .
CHANGE. ,
.
MOV EAX.&P1;MOV EBX.&P2:M0V &P2EAX;M0V &P1.EBX:

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


, . , , .


,
, ,
, , , . , .
, , .
, L. , L. L
- , ,
.

532

7.

, L , (
, ).
. -, . , ,
, . ,
. , , ,
. , .
,
. , , . ( ) , ,
-. , , . , , .
. ,
, .


, . , ,
:
BUFSIZE EQU 8192
,
, .
(ILC Instruction Location Counter) ( ).
0
(. 7.7.).
Pentium . SPARC Motorola,
. , SPARC .

3 : , .
. , . 7.8.
,
(, EQU).

533

( ),
. :
1. , .
2. ( , , , ).
3. , .
7.7. .
MARIA 100

MARIA:

MOV
MOV

EAX, I
EBX, J

EAX=I
EBX=J

5
6

100
105

ROBERTA:

MARILYN:

MOV

ECX,

ECX=K

111

IMUL

EAX, EAX

EAX=I*I

117

IMUL

EBX, EBX

EBX=J*J

119

IMUL

ECX, ECX

ECX=K*K

122

ADD

EAX, EBX

EAX=I*I+J*J

125

ADD

EAX, ECX

EAX=I*I+J*J+K*K 2

127

DONE

DONE 5

129

STEPHANY: JMP

7.8. . 7.7.

MARIA

100

ROBERTA

111

MARILYN

125

STEPHANY

129


(. 7.9).
, , , , , ( ).
7.9. Pentium II

37

ADD

EAX

immed32

05

ADD

reg

reg

01

19

AND

EAX

immed32

25

AND

reg

reg

21

19

534

7.

ADD. ADD
, 32-
(immed32), 0x05, 5 . ADD ,
2 , 0x01. , ,
19 , ADD
. ,
.
,
.
.
, .
, IBM 3090 .
L 14.=F'5'

14 5 . ,
, , 5, , L.
, , . ,
. , . , ,
, . , . , ,
. ,
,
, . .
7.5 ,
. ,
. 7.5 .
, , ,
,
.
7.5.

public static void pass_one() {


// -
boolean more_input=true;
//,
String line, symbol, literal, opcode;
//
int location_counter, length, value, type; //
final int END STATEMENT = -2;
//


location_counter = 0;
imtialize_tables(),

535

// 0
//

while (more_input) {
line = read_next_line();
length =0;
type =0.

//more_input END
//
//#
//

if (line_isjiot_coniment(line)) {
symbol = check_for_symbol(line), // ?
if (symbol !- null)
// ,
enter_new_symbol(symbol. 1ocation_counter),
literal = check_for_literal(line). // ?
if (literal != null)
// ,
enter_new_literal(1itera1);
// .
//-1 .
opcode = extract_opcode(line).
//
type =search_opcode_table(opcode). // , . OP REG1.REG2
if (type < 0)
// ,
// ?
type = search_pseudo_table(opcode).
switch(type) {
//
case l.length=get_length_of_typel (line), break,
case 2 Iength=get_length_of_type2(line); break.
//
}

}
wnte_temp_file(type, opcode, length, line), //
location_counter = location_counter + length, //
if (type == END_STATEMENT) {
// ?
morejinput - false.
// . rewind_temp_for_pass_two().
//
sort_literal_table().
//
remove_redundant_literals();
//

, check_jor_symbol,
,
, , . ,
get_length_of_type1 get_length_ofjtype2, . ,
, , , , ,
.

. , .
read_next_line.
(, - ), , passjone .
, (, ADD),

536

7.

( ) . , ,
.
-. -, ,
- , ,
. ,
, , . ,
.
END .
, . .


( ). , , ,
, . 7.6 .
7.6.
public static void pass_two() {
// -
boolean morejnput = true:
//,
String line, opcode;
//
int location_counter, length, type: //
final int END_STATEMENT = -2:
//
final int MAX_CODE =16;
//
byte code[] = new byte[MAX_CODE]; //
location_counter = 0;
while (morejnput) {
type = readj:ype():
opcode = read_opcode();
length = readJengthO;
line = readJineO;
if (type != 0) {
switch(type) {

// 0
//morejnput END
//
//
//
//
// 0
//

case l:evalj:ypel(opcode, length, line, code): break;


case 2: eval_type2(opcode, length, line, code); break;
//
}
}
write_output(code):
//
writejisting(code. line);
//
location_counter = location_counter + length; //
if (type == END_STATEMENT) {
// ?


more_input = false;
finishjjpO;

537

// ,
//

: .
, (
), , ,
. eval_type1, eval_type2 . . (, -). code.
. , write_code
, .
() , ( ), , . .
,
. , -
- , , . :
1. .
2. .
3. .
4. .
5. .
6. 8 9.
7. (, ).
8. END.
. - .
, , .
. ,
,
.



. ,
. . .

538

7.

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

. .
, ,
. , , . , .
, ,
. , .
. , . , lo&n . , ,
, .
-.
-, ()
0 -1. ASCII
. ASCII , . ,
.
, , 0
-1. ( , ), i, , i -. ,
n/k. , , . , . - . 7.1.


.
. -

539

. , . , , -: ,
.
, . 7.2:
1. .
2. .
Andy
Anton
Cathy
Dick
Erik
Frances
Frank
Gerrit
Hans
Henri
Jan
Jaco
Maarten
Reind
Roel
Willem
Wiebern

Andy

Reind | 63453

Henri

0
4
5
0
6
3
3
4
4
2

5
6
0
1
7
6
1

14025
31253
65254
54185
47357
56445
14332
32334
44546
75544
17097
64533
23267
63453
76764
34544
34344

14025 |

4+-|

Dick

| 54185~

Wiebern | 34344

75544

Frances | 56445 |
Hans

- Maarten | 23267 |

->\ Frank | 14332

44546

Jan

17097

Jaco

64533

Roel

76764

Gerrit

*^H

32334

Anton

31253

Erjk

"r7357

Cathy | 65254
Willem

34544

. 7 . 1 . -: , -,
(); - 8
()

, .

540

7.


, . ,

. , , ,
. MS-DOS, Windows 95/98 NT .obj, .. UNIX ., .

. 7.2.

. .

,
.
, . 7.2,
,
. , , ( ) .
, .


0. ,
0. . 7.3 4 .
BRANCH MOVE .
, , (. 7.4, ).
-

541


. , .
, , , , ,
, .
100.

500

CALL


400

400

300

CALL

200

MOVE P X

MOVE Q X

200
100

100
0

300

BRANCH TO 200

BRANCH TO 300


500
400

CALLD
D
300

300

200

MOVE R X

200

MOVE S X

100

100
BRANCH TO 200

BRANCH TO 200

. 7.3.
,

. 7.4, . , . ,
, .
MOVE, 300.
.

542

7.
1900

1900
1800

MOVE S X

1800

MOVE S X

1700

1700
1600

BRANCH TO 200

1600

BRANCH 1800

1500

CALLD

1500

CALL 1600

1400
1300

MOVE R X

1200
1100

1400
1 3 0 0

MOVE R TO X

V
/

1200
BRANCH TO 200

1100

1000

BRANCH TO 1300

1000
CALL

CALL 1100

900
800

/" D

900
MOVE Q X

i
/

800

700

700

600

600
BRANCH TO 300

MOVE Q TO X

v
}

BRANCH TO 800

500

500

400

CALL

300

MOVE P X

200

400

CALL 500

300

MOVE P TO X

200
BRANCH TO 200

100

100

BRANCH TO 300

. 7.4. ,
();
().
,

543

,
. 7.3 . (, Pentium II) , . Pentium II
1
OS/2 . Windows UNIX ,
.
, (. . 7.4, ) . 400 , ,
, CALL . . . .

. :
1. .
2. .
3. , , , .
4. , ,
.
. 7.4,
. , .

400
600
500
300

100
500
1100
1600

7.4, , .


(. 7.5).
, ,
(, ), .
,
OS/2, 16- 286- .
Pentium II . 1993
OS/2 32- , , , . . ..

544

7.

. 7.5.

, , . .
, bigbug,
bigbug, . PUBLIC , .
,
, . , ,
. ,
,
.
, . EXTERN , . .
.
,
. 5 , .
. , ,
(. . 7.4). ,
, .
, .
,
, , .
,
, , , .
.
, . ,
.

545



, , ,
.
,
.
. 7.6 , , (.
. 7.4, ) 400, 100, . . ,
.
,
.
, ,
, . (, BR L). ,
, L,
.
:
1. .
2. .
3. , .
4. .
5. , .
6. , .
, , ,
(, ,
, ).
,
, . ,
,
, (. . 7.6).
. , ? .
, .

. ,
.

546

7.
2200
2100

MOVE S X

2000
1900

BRANCH TO 1800

1800

CALL 1800

1700
1600

MOVE R TO X

1500
1400

BRANCH TO 1300

1300

CALL 1100

1200
1100

MOVE Q TO X

1000
900
800

BRANCH TO 800

700

CALL 500

600

MOVE P TO X

500
400

BRANCH TO 300

. 7.6. . 7.4, , 300 .


, , . 7.4, ,
. , , , , D, , . .

547

, ,
, . . ,
, .
. CDC 6600
. , ,
. , .
.
, .
,
. , , ( , , , Intel 8088, ).
,
. , , . ,
,
(, - ), - . - .


, , : , ,
. ,
.
, . , , ,
.
, .
.
MULTICS. .

MULTICS
MULTICS ,
, , -

548

7.

. , , ,
.

CALL EARTH
CALL FIRE
CALL ATR
CALL WATER

AIR
1 R //

1 R

/%1//,


CALL EARTH

A T

R /

CALL WATER

CALL EARTH
CALL FIRE



EARTH
E|A|R|T|H

EARTH

R
CALL ATR

CALL WATER
CALL EARTH


W| A | T | E 1 R

CALL WATER

. 7.7. : EARTH (a);


EARTH ()

, -

549

, . 7.7, . ,
, ().
,
. , , .
( ),
, . 7.7, .
, , ,
, .
,
. , ,
.
.

Windows
Windows, NT, .
, DLL (Dynamic Link Library ).
, . ,
. DDL .dll,
, .drv ( driver libraries)
.fon ( font libraries).

, ,
. . 7.8 , DLL, 4 , , ,
D. 1 ; 2 ,
.
DLL . DDL ,
DLL ,
, DLL. DLL ,
. DLL Windows . DDL,
. - , , , -

550

7.

. DLL, .

. 7.8. DLL

, , , , , .
, , DLL , ,
DLL , .
DLL
, DLL ( ).
. , DLL , . ,
, , DLL, , , DLL . ,
DLL.
DLL : . , ,
(), DLL.
, DLL. -

551

. ,
, ,
Windows , DLL
. , , ( , ). ,
( , . 7.7).
.
. DLL, .
. , DLL
.
,
DLL, ,
, . ,
, DLL DLL, .
, DLL ( ). .
(
) . .

UNIX
UNIX , DLL Windows. . DLL, ,
,
.
.
UNIX ,
: (host library),
, (target
library), .
, , DLL.


,
, ,
. -

552

7.

(, , ).
.
, .
- , ,
, , . ,
.
, . . .
.
, . , , ,
. , .
. ,
.
, , , . . . ,
, .
UNIX DLL ( ) Windows
.


1. 1% 50%
.
. , 100 -,
10 , 4
.
1. .
2. .
3. , 1% .
2. .
?

553

3. , . ?
4. Intel
, .
?
5. ? : EQU ,
.
A EQU
EQU
EQU D
EQU 4

6. 40- . , , ,
,
. , , Q .
? .
7. ?
8. ?
?
.
9. () Pentium II ( 1000)?
EVEREST: POP BX (1 )
2: PUSH BP (1 )
WHITNEY: MOV BP.SP (2 )
MCKINLEY: PUSH X (3 )
FUJI: PUSH SI (1 )
KIBO: SUB SI.300 (3 )
10. , (, MOV )? .
11. , , , Berkeley : Ann Arbor, Berkeley, Cambridge, Eugene,
Madison, New Haven, Palo Alto, Pasadena, Santa Cruz, Stony Brook, Westwood,
Yellow Springs. , ,
.
12. ,
?
13. - . (=1, =2 . .) -. - 19 ( 0 18).
els, jan, jelle, maaike

554

7.

-?
, ?
14. -, , , -, . , ( ).
, ,
.
, . . , . , , R,
, ?
15. , - , . , ?
16. Pentium II . .
SEG N, N.
?
17. DLL ( ).
DLL, ?
18. DLL
? ,
? ? , , ?
19. .
, , (EXTERN).
,
, . ? , , ?
20. ? ? , . , .
21. .
, . ?
22. , .
23. 5 , 200, 800,
600, 500 700 . ,
?

555

24. , : enterisymbol,
value) lookup(symbol, value). , . - -.
25. Mic-1, 4. , .
26. , , .



, , , .
.
, . ,
, . , ,
( , ).
,
.
, . -
. , , - ,
(,
).
,
.
0,001 , 1000 , 1 .
, ,
.
. , ,
,
10 . 100, 1000 1 000 000 , ,
, - .
.
. , .

557

,
.
. . . [86,115, 131, 159].



,
:
1. , ?
2. , ?
3. ?
. ,
. , ,
(, ).
-,
, 10 000 .
. , .
,
,
. ( )
( ). , . ( ) , -.
, -.
, ,
. :
. . , . ,
. .
, . .
,

558

8.

. . .
.
, 8 64 ,
UNIX , . , (, ), (, ) web-.
, .
, . , , ,
, .
, , .
, .
. ,
(, ).
.
.
. ( )
.
, .
,
, () . () , ,

.
, . .
, .

559

.
, ,
, , ,
.


, , - , . ? : .
.

,
. 8.1, . .
.
, , , .
LOAD STORE. .
, , .

II

. 8 . 1 . , 16 ,
(); , 16 ,
()

. . ,
. , . 8.1, . 16

560

8.

, 16 .
, , ,
.
, , , .
Sun Enterprise 10000,
Sequent NUMA-Q, SGI Origin 2000 HP/Convex Exemplar.

, .
.
. 8.2, . ( )
. , , ,
LOAD STORE,
LOAD STORE. ,
, , .

,
. , .
IBM SP/2, Intel/Sandia Option Red Wisconsin COW.
M

p
M

1 1 1 1

1
%

1 i
1

. 8.2. , 16 ,
(); . 8.1,
16 ()

561


. ,
LOAD STORE. ,
0 ( ) . 8.1, ^,
, 1,
, .
0 . 8.2, # , 1.
- .
, - , , .
0 . 1
,
. 0 , .
send receive. , .
.
, . , ,
.
: , ? : ,
. ,
, , , 10 000 , .
, : , , ,
.
, . , -, - .

, . , , .
,
, .

562

8.

, . 8.3. . 8.3,
, .
, . , ,
. , , , . .

, ,
, . , DSM (Distributed Shared Memory
) [82,83, 84], (. . 8.2, ). . LOAD STORE , ,
. , , ,
. , , . ,
, . , . DSM
.
.
, . , Linda (
, ). .
( Linda), .
, , . , ,
. , ,
. , ,
. Linda
.

563


. 8.3. , :
(); (); ()

564

8.


. 8.2 , . . ,
, , . , ,
, .

,
. ,
, .
, : .
, , , , .
:
1. .
2. .
3. .
4. .
5. .

. , . ,
( ).
,
.
, .
, .
-, (
1 ) ( 1 ). ( , ). ( ), (
, ) ( ).
. ,
, .
2 4 , (, 8 ).

565

. . , (
) (
). . ( ) , () , .

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

, (, , ).
, ,
(. 8.4). ( )
.
, . ,
.
,
, , -1
.
.
, ,
, , . ,
. , . , .
, , .
.
, ( )
. ,
.
. . ,
800 /. , 800 /.
, -

566

8.

.
.

-_

/
1

"\.
/

~~~

. 8.4. . .
: (); (full interconnect) ();
(); (); (); (); (); ()

.

. (
), .
(, , ),

567

.
, . .
. 8.4 . ( ) ( ).
( ) . . 8.4, ,
,
. ,
,
. ,
.
. 8.4, (full interconnect).
. , , (
). (-1)/2 , .
. 8.4, . ,
.
, . , . ,
, 2, 4b.
(fat tree).
Thinking Machines' CM-5.
(. 8.4, ) , . (. 8.4, )
, . ,
(
). (. 8.4, ) . , . , ,
.
(. 8.4, ) . 2x2x2, kxkxk. . 8.4,
, , . , 4 .
6 , 4
. .; n- . ,

568

8.

. ,
2 , 10-
1024 , 10, . , 32x32,
1024 , 62, . ,
( , ).
.

, .
8.5 . 4 4
. , ( ). , , .


. 8.5. .


( . 8.5. ).
. .
.
, -

569

, ( ,
), .

. , . , , ,
. . 8.5 ,
1 2 ( ).
.

, .
,
, ,
,
( ) .
. .
, . . 8 6,
1, , 2,
. , . 8.6, .
D (. 8.6, ). ,
2. , .
1

4
/

"

EE a R ar

, ,

, ,

,
M E t
ID
: ':
\

EEDRCI:

. 8.6.

,
(, , )
,
. , , -

570

8.

, .
. FIFO (
, ).
, .
, , , , , .
.
. .
, , - .
, .
. . , . , , , .
,
. , - .
, , .
, ,
, . , , .
,
. , , . 8.6, .
1 2, 4 ( , , D 2), , , 4. ,
,
. ,
. ,
,
.
, . ,
( ). , , .

571

. , wormhole routing (),


, , , . ,
.
, .
, , .


,
. . , ,
, .
, . , . ,
.
, ,
.
. 8.7.
,
. , .
, ,
,
, . , .
: . .
, . ,
,
1 . , .
.
1 , ,
.

572

8.

4
3

. 8.7.

,
. , ,
. , .
,
, .
, . . (
). , (3,7, 5) (6,9, 8),
=3 =6 (4, 7, 5), (5, 7, 5) (6,7, 5).
(6, 8, 5) (6, 9, 5). , z (6, 9, 6), (6, 9, 7) (6, 9, 8).
.

, , . , . ,
. , , , 50 -

573

, . , .


, - .
- , ,
, . : . .
, , . ,
, .
, , .
(
, -).
.
, . . , ,
. . , ,
Ts, , b , Ts+p/b.
,

Ts+2p/b .
, , ,
. +/,
. , < . . Td
( , ). , Ta+n(p/b+Td)+p/b,

.

+/,
, . , . , .

574

8.

. , , , ,
, . .
. .
, .
.
1 /,
100 / . , .
. . , - :
, , . 1024 4 ,
1 4096 . , ,
. . , , .
, (
),
. , .


, . . ,

.
: - 1- .
(. 8.8.). , , 64 Pentium Pro.
. ,
.
, ,
. N- -

575

; (
) ;
, .
[14].
60
N-
50

-
10

20

30

40

50

60


. 8.8. .

,
: ,
,
. . ,
, (f)
, (1-f)
, . 8.9, .
,
(l-f)T (1-f )/, . 8.9, .
( )
f T+( I -f )/. (), :
Speedup n /d+(n-l)f)

f=0 , f>0 , . .

576

8.

1-t

1
\

1-f

--fT---(1 -f )T/n*

. 8.9. ();
()

,
. , , .
1000 ,
, , .
, ,
.
, 2 . ,
.


. ,
. ,
, .
4 , (. 8.10, ). , 16 , 12 (. 8.10, ).
b /, 4
,
/4 / /16 /. .
()
(. 8.10, , ). ,
, .
1,0 4 (4 , 4 ) 1,5 16

577

(16 , 24 ),
.

???
tt

. 8.10. 4 , (); 16 ,
(); 4 ();
16 ()

, .
, , , .
2(1),
. 400 38, 1600 78,
4 , , ,
.

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

( /, -). , , .

578

8.


. .
. , .
, ,
. , . -
, - ,
.
.
, - , , , , . ,
,
, . LOAD
, , . - LOAD ,
, .
. ,
(
).
, ,
,
,
. 1, 2 . . , , .

, .
CDC 6600. ,
10 , .
, 10 .
, 1, 2 . .
.
STORE, , , .
, .
LOAD , ,
.

579


,
. ,
. . [160].
4 . . ,

, , . ,
, .
, . , .
^_ , , ,
,
. , .
. , , .
( ),
, -.
, , , , .
,
:
1. .
2. .
3. .
4. .
5. .
.

580

8.



, .
, .
.
,
.
LOAD THE TEMPERATURE FOR 1 A.M. INTO REGISTER Rl
( 1 R1),
, R1. ,

ADD THE TEMPERATURE FOR 2 A.M. TO REGISTER Rl
( 2 R1),
, .

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


.
(, IA-64). .

(block-level parallelism), ,
, .
, Algol-68
begin Statement-1; Statement-2: Statement-3 end
( )
, ,
begin Statement-1. Statement-2. Statement-3 end

581

. , , begin/end
.
, . ,
.
, , , .

, . ,
, (
) . (
.)
, .
;

, .
,
,
.
, ,
.


, , , . .
.
SPMD (Single Program Multiple Data ,
).
, ,
. , , , .
(. 8.11, ). ,
. . (, ), . UNIX. .
(. 8.11, ), , , .
,

582

8.

, , , . , . 8.11, , , ,
. ,
, , , , . ,
, .

1
\

Pi
Pi

P2

>

Pi

p2

Pi

Pi

\\

p5

p4

p
P2

p7

\\

1\

1\

P-

P8

p9

. 8.11. : (); ();


(); replicated worker ()

replicated worker (. . 8.11, ). ,


. , . , , .


, , ,
, () -
. :
. ,
. ,
, .
.
LOAD STORE.

583

,
. , Linda
, , , . , .
, .
. send receive. send, . receive,
.
,
send recei ve. . .
. ( ).
() ().
,
. ,
(/) ( / ) .
. . 8.1.
8.1.


(
(
)
)

(. . 8.1).

DSM, Linda, Orca . . SP/2



PVM MPI SP/2



, . ,
, - , . , ,
.

584

8.

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

( ), , (. . 8.11, ).
. ,
, . , .



,
.
, ,
- .
[39, 43, 148]. ,
. (Flynn), .
. 8.2.
8.2. ,

SISD

S1MD

MISD

MIMD

: .
.
, , .
. , , ,
.
- ,
4 (. . 8.2). SISD (Single Instruction stream Single Data stream

585

, )
.
. SIMD (Single
Instruction stream Multiple Data stream ,
) , ,
,
. ILLIAC IV (. . 2.6) SIMD.
SIMD. .
MISD (Multiple Instruction stream Single Data stream
, ) . . ,
. MISD .
MIMD (Multiple Instruction stream Multiple
Data stream , ). .
. , MIMD.
( . 8.12). SIMD
. , ,
.
ILLIAC IV,
.

SISD

SIMD

MISD

MIMD

( )

/
UMA

NUMA


CC-NUMA

NC-NUMA

\
COW

. 8.12.

586

8.

MIMD
( ) (
). . .
UMA (Uniform Memory Access ), NUMA (NonUniform Memory Access ) (Cache Only Memory Access -). UM
. ,
, .
, , , . . ,
.
NUMA, , .
, , , .
, .
, . , .
MIMD , . , ,
, LOAD.
.
LOAD . ,
LOAD STORE, ,
. , . ,
NORMA (NO Remote Memory Access ).
. (Massively Parallel Processors ) ,
, . Cray T3E IBM SP/2.
, .
NOW (Network of Workstations )
COW (Cluster of Workstattions ).

SIMD

587

SIMD, MIMD MIMD. , ,


. .

SIMD
SIMD (Single Instruction Stream Multiple Data Stream
, ) . , , . SIMD
- (array processors)
(vector processors). .

-
- 40
[151]. 10 , (ILLI IV)
NASA. - , -2 Maspar MP-2,
.
- , , ,
. 2.6.
, , .
- , .
. . 1- ( -2).
1- (, ). 1 . 32- , 1- 32 .
600 ,
19,2 , , IBM PC.
65 536 300 .
8- , 32-
, .
-
. -

588

8.

( ), .
.
, . 8.4.
, , .
. , ,
-
(,
), . .


SIMD . . , (Seymour Cray) Cray Research
( Silicon Graphics), -1 1976 , 90 90 . , .

, :
for(i=0: i<n: i++) a[i]-b[i]+c[i];

a, b 1 ( ), .
i-e b , i- . ,
, .
. 8.13 .
n- ,
, . . .
() , - . . 8.3. , U,
(, ) . , f2, ,
. . , f3, , 1

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

SIMD

589

. , , U, .
.
,
, .

. , , (f3), (f2).

. 8.13.
8 . 3 .

A=f,(B,)

f 1 _ ,

Cap=f2(A)

f2 ,

A,=f3(B,, )

f3 ,

^ 4 (, ,)

f 4 _ ,

,
. 8.13. ,
. 64
.
. . ,
.
, .
. 8.4. 1, 10 1. 9,212x10"
1,08212.

590

8.

8.4.

1,08210 12 -9,212x10"

1,082 12 -0,9212' 2

0,1608x1012

1,608x10"


, ,
. (, ) 10,82x10", (, ) 0,92121012. .
( ) ,
. ,
. .
12, , . 8.4
2. , .
for, .
. 8.5 .
.
, .
,
. , .
8.5.

,, ,

2, 2

3, 3

4, 4

5, 5

6,

7, 7

,, ,

2, 2

3, 3

4, 4

5, 6

, 6

Bi+Ci

2 + 2

3 + 3

4 + 4

6 + 5

B,+Ci

B 2 +C 2

3 + 3

4 + 4



. , .

-1
, , . -1.
, RISC,
,
.

SIMD

591

-1 ( RISC), 16-, 7- 3- . (. 8.14).


24- . 64 24- , ,
. 64- S ( ).
, . 64 64- S, LOAD STORE.
64

8 24-

64
24-
8 64-

64
64-

8 64-

. 8.14. -1

. 64-
. 16- ,
. , . , ,
, . .

592

8.

. , CDC Cyber 205 .


,
.
-1 12 (. . 8.14).
24- . 64- . -1
( ). . . , , .
, Cray-1 . ,
R1=R1*R2+R3

Rl, R2 R3 ,
, -, . , , R3.
. .
-1. 80 , 8 .
( 70-) .
- .
, .



. 8.12, MIMD
. , . ,
,
.
, , ,
, . ,
, , . .
, , (, . .).
- ,
, -. -

593

.
- , SMP (Symmetric Multiprocessor ). .


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

[3]. , .
. .
.
, 0 1 - ,
1 2 . 2 1.
? , .


. .
,
: ,
( ), - . ,
.


[79].
,
.

594

8.

. , 1
100 , 1 2 200 .
, 1 (
) , 3 4,
(. 8.15). , . 3 (20Q, 200),
4 (200, 200). (100, 200)
(200,200) . (100,100) (200,100) . , ,
.

\
2

200

100'
2

X
1

4
. 8.15. ,

8.18.3 .
8.1. . 8.15 ()
W100
W200
R3=200
R3=200
R4=200

R4=200

8.2. . 8.15 ()
W100
R3=100
W200

R4=200
R3=200
R4=200
8 . 3 . . 8.15 ()

W200
R4=200
W100
R3=100
R4=100
R3=100

595

3 (100, 200), 4 (200, 100).


, 3 ,
100 1 200, 2. . 4
, 2 200 1 100. ,
.
, . 3 , 100, 4 .
. , ,
( ),
. ,
.


[48] , . :
1. ,
.
2. , .
. , 1
1, 11 -
, .
, , - 1, 1. ,
, , .
.
. , , 2 2, 2 2
1. ,
, - , , 1, 1, 2, 2, 1, 2 2, 1, 2, 2, 1, 1 . .
, ( ).
, ,
, . ,
, , 1, 1.

596

8.


, , , , [33]. 1
1 , 1 1 . , . , ,
. , . , , - ,
.
,
(. 8.16).
1 1 ,
, 1 ,
1, 1, 1 . . 1, 1,
, 1 ,
1 2, 1, 2, . ,

, .

1D 1

1F
2D

. 8.16. ,


,

, .
, [46]. .
, ,

597

. , ,
.
.
, ( ) acquire
, . ( ). release , , .
release ,
, . , .
acqui re, ,
rel ease . , acqui re , ( , release). , acquire
rel ease, ,
. acquire release, acquire (
, )
release. , . , , :
, .

UMA SMP
,
. 8.17, . .
, , . ,
, , .
, , . .
; 32 64 .
,
.
, - , . 8.17, . - , , . .
-, ,
.

598

8.

(: <

. 8.17. : - (); - ();


- ()

,
-, ,
(. 8.17, ).
,
, , , ,
, . . , ,
.

-
, . ,
1 - , 2
-?
2 -. - . , 1 , 2 -. ,
. .
, , .
, -, , , -. (, [47,109]).
, ,

599

, -.
- , - ,
- . - (snooping caches snoopy caches), .
, -, , -, . - -.
- 32 64 .
. , 4 , . 8.6.
, -,
- - , . , : > . -.
8.6. . ,

- , , . , ,
-. -
, . ,
, .
, - ( . 8.6). -,
, -1, -2. -1, ,
. -2 , .
-1, , -2
-1.
. 1 , -1
, .
-2 .

600

8.

, -2
. (, . 8.6 ,
- ; ,
- . ,
.)
, -1 ,
-2. -2 , , -, , . . , ,
, - , . ,
.
--2
. -2 , . -1, -2 . - ,
, .
. ,

, . , , . , - ,
, .
. -.
, ,
, , -.
- .
. . : ,
? , - ( ). , - . ,
, .
, . , . . :
.
- - , ,
- , . ,

601

.
.

MESI
MESI ( , , , S I) [109].
[47]. MESI Pentium II
. -
:
1. Invalid - .
2. Shared ;
.
3. Exclusive ;
.
4. Modified ; ;
.
- .
- (Exclusive),
- (. 8.18, ). .
-,
( 1) , ,
, . S (Shared)
(. . 8.18, ). S
.
, , 2 , S. , , . (Modified)
(. . 8.18, ). . ,
, , , .
, , 3 .
2, , , , , 3 , .
, 3 ,
S (. . 8.18, ). 2 , - 3 (. . 8.18, ).
, 1 . 2
, 1,
, .
, , , .

602

8.

, - .
write-allocate, -
(. 8.18, ). write-allocate ,
, .
1

Exclsive

/
-

Shared

Shared

Modified

|
Shared

Shared

Modified

Modified

. 8.18. MESI

603

UMA


UMA 16 32 .
, .
(. 8.19).

.

. 8.19. 8x8 (); (); ()

() () (crosspoint), ,
. . 8.19, , ,
(, ) (001, 000), (101, 101)
(110, 010) . . , 8 .
. , , . , . ,

604

8.

. , .
, 2. 1000 1000 . . .

Sun Enterprise 10000


UMA, , Sun Enterprise 10000 [23, 24].
64 . Gigaplahe-XB
, 8 . (40x50 ), 4 UltraSPARC
333 4 .
, .

, Enterprise 10000 . 16x16
-. -
64 , 16 ,
- 4 .
, .
4
, - (. 8.20).
1/4 . . -

, , ,
-. 16
, , , - .

16 . 12 (83,3 ),
,
167 /.
- 64 ,
9,93 / (, 1 = 1,0737x109 /, 109/).
- 64 4 (48 )
1,24 / .
16 ,
19,87 /, , , 60% .

64

605

16x16 (Gigaplane XB)


UltraSPARC

4
4

4-
J
1


. 8.20. Sun Enterprise 10000

Enterprise 10000 4 ,
. , 64 . , .

UMA

2x2 (. 8.21, ).
. , , . (. 8.21, ).
, .
. , READ
WRITE. , ,
32- , WRITE. , : X Y.

. 8.21. 2x2 (); ()

2x2 [1, 15, 78].


omega (. 8.22). 8 8 , 12 . log2n , /2 , (n/2)log2n

606

8.

, , 2 ( ),
.
3

~000

. 8.22. omega

omega ,
, , , . ,
omega, , 011 110. READ,
ID, 110 . ( ) 110 . 0 ,
1 . 1, 2D.
, 2D,
. 1, 3D. . 0. , 110,
. , , . 8.22 .
,
. , ,
, .
0 ( ID), 1 ( 2D) 1 ( 3D) . 011, .
, 001 001. . , . . 8.22
. ,
001. , .
,
, .

607

, , 000
000. 001 . . , omega .
.
,
, , ,
.
.

. , 32- .
00, .
,
. ,
, . , . ,
.

NUMA
UMA , ,
. 100 , . , .
NUMA (NonUniform
Memory Access ).
UMA, , ,
UMA, , . , UMA
NUMA, , UMA .
NUMA , :
1. , .
2. LOAD STORE.
3. ,
.
( - ), NC-NUMA (No Caching NUMA NUMA
). , CC-NUMA (Coherent Cache NUMA NUMA -).

608

8.

DSM (Distributed Shared Memory


),
DSM,
.
NC-NUMA Carnegie-Mellon Cm*. . 8.23 [143].
LSI-11, , . (LSI-11 DEC PDP-11
; - 70- .)
, LSI-11 .
,
, . ,
. ,
, . ,
, . 10 ,
.


. 8.23. NUMA . Cm* ,

NC-NUMA,
-. ,
:
. ,
, . NCNUMA ,
.
(), , .
,
. ,
,
- . , , , ,
, .
, ,
, AT.

609

,
[80].

CC-NUMA
, , . 8.23, , -.
, , ,
: . .
. , ( Enterprise 10000), 16
64 . .
CCNUMA (Cache Coherent NUMA NUMA -) -

. , , -
. -
, .
,
, ,
.
, , 256 ,
16 ,
. 2 32 .
226 - 64 .
: 0-16 0, 16 -32 1 . .
(. 8.24, ). , .
2 18 64- -,
224- . ,
-.
, , LOAD 20, . ,
, , , 0x24000108.
, . 8.24, 6.
36, 4 8. ,
, , 36,
20, 36,
, , 4 -, , .
36,
. 2 18 (

610

8.

-) 4. . 8.24,
, -,
4 , 20 4, , - 20.
1

256

18

2 1 8 -1

0
0
Jl

82

~ol
0

. 8.24. , 256 ();


32- (); 36 ()

, 2 36. .
8.24, , - 82. 2, ,
20, 82,
20, -.
,
.
, . 18
16 2 9- .
18
, 92
16 1,76%, .
- 32 , 4%.
- 128 ,
1%.
,
. , - (,
). .

611


,
- ( k ).
, . , . , 256 64- (512-)
-, 50%. 8-
,
- .
. , , .
. .
, . -, , ,
-. -,
, , -, . -,
. 8.24, -, ,
.
- , ,
-.
, . - , . , -, ,
. .
CC-NUMA [140].

Stanford DASH
CC-NUMA DASH (Directory
Architecture for SHared memory
) [81]. . , SGI Origin 2000.
64- , . .
DASH . 8.25, .
16 , , 4
MIPS R3000, 16 , - ( . .), . .

612

8.

; , .


(
)


(
)

0123456789

3
13. 2 |2| | | | | | | [ | | | | | | | | -+\ Uncached, shared, modified
,
,
1
0
- -
0
g
. 8.25. DASH (); DASH ()

256 .
16 16 .
0 0 16 . 1 16 32 . . - 16 .
16 .
1 .
, , .

613

1 , 1 ,
. .
, . , 2- ,
.
1 18 , 2 . 16
36 , 14% 256 . , .
, ,
. .
DASH ,
.
, . 8.25, .
, , . ,
, ,
.
: ,
( ). .
- :
1. UNCACHED () .
2. SHARED ( ) ;
-.
3. MODIFIED () , , ;
-.
- , . 8.25, .
DASH .
. UNCHANGED SHARED
. MODIFIED , .
- SHARED, .
, , , . -. ,
, , ,
. , - .
SHARED, . -

614

8.

MODIFIED, ,
SHARED. - -,
(
1 , 1 ).
- ,
, . 4 ,
.
. , .
UNCACHED SHARED, , , . ,
- .
MODIFIED, , , .
, ,
SHARED,
-. ,
SHARED.
-. ,
, . -
MODIFIED, .
- , SHARED, ,
.
- , , ,
. , -
. SHARED, .
- , .
. UNCACHED,
MODIFIED .
SHARED, , ,
UNCASHED . MODIFIED (), ,
. ,
.
DASH , . . , , , ,
. -

615

DASH ( , , ).

Sequent NUMA-Q
DASH . Sequent NUMA-Q 2000.
SCI
(Scalable Coherent Interface ).
( IEEE 1569),
CC-NUMA.
NUMA-Q quard board, Intel. 4 Pentium Pro 4
. - - .
quard board MESI.
534 /. 64 . NUMA-Q . 8.26.

99999

-<>-

32

199999

quad board
4 Pentium Pro
4

-
-

-
IQ

. 8.26. NUMA-Q

,
quad board, . ,

616

8.

IQ-Link, quad board . SCI. IQ-Link 32


-, , , -, quad board , , IQ-Link IQ-Link.
, ,
, .
IQ-Link , . 8.26.
. SCI IQ-Link,
. MESI - 32 .
quad board SCI.
, (, NUMA-Q). SCI , ,
, . SCI 64 ,
248 . NUMA-Q 63 quad board, 252 238 . ,
SCI .
, IQ-Link, SCI. , .
18 : 1 , 1 16
. .
500 , 1 /.
. 14 , 0,
16, 64 256 2 .
.
NUMA-Q 2000 ,
. quad board
4 . - 64 , quad board 226 -.
, .
, 226 ,
.
, , IQ-Link . SCI
, . (, SCI 64 , 226 64
.)
-
. ,
. NUM A-Q 2000 6- , 63 . SCI 16- .

617

, . SCI DASH.
, IQ-Link
-,
. - 32 ,
- 64 , IQ-Link 219
-. 21 , -.
-, , , .
- ,
, ,
, . . , ,
. , , ,
. . 8.27 (
- 4, 9 22).

- 4

- 9

- 22

. 8.27. SCI
.

36 . ,
. , . , 63 , 64.
7 .

618

8.

13 ( ). ,
NUMA-Q2000 63232=238 , 232 -. , 232 219 -, 213 ,
. , 13-
, , .

(). : UNCACHED
(), SHARED ( ) MODIFIED (). SCI HOME, FRESH GONE
, . UNCACHED , IQ-Link, - quad board. SHARED ,
- IQ-Link, . MODIFIED ,
- - IQ-Link, , , ,
.
- 29
( 29).
7 (. 8.27). . , ,
, .
, ,
- . .
SCI 3 : ,
.
, .
SCI . -
(. . 8.24).
.
.
NUMA-Q ,
.
, READ. ,
, , IQ-Link IQ-Link,
. UNCACHED, SHARED, .
. , , - .
, SHARED.
, . . .
- .

619

, MODIFIED.
,
.
IQ-Link, - ,
.
, .
WRITE -. , , . ,
, .
,
. READ WRITE
, , . ,
.
. , IEEE 1596.


NUMA CC-NUMA : , . CC-NUMA -
-.
-, .
, UMA, Sun Enterprise 10000,
, .
NUMA , , .
, , , , - .
CC-NUMA, Sequent NUMA-Q, , . , .
,
, -.
(Cache Only Memory Access).
, NUMA CC-NUMA.
,
. . , , attraction memory.
- -, , .

620

8.

, .
:
1. -?
2. , , ?
. -, , . ,
-, . , , , ?
, .
.
, -.
-, .
,
-. ,
. , .
, , .
, ,
. (, ,
, ). , .
,
.
. NUMA, - .
, - , ,
. , ? .
,
. , . ,
- . - .
. , CC-NUMA, ,
, .
: KSR-1 [20] Data Diffusion Machine [53].
[36, 67,98, 123].

621


. 8.12,
MIMD: . . ,
, LOAD STORE. , , ,
. , ,
,
.
.
, . -,
. Interprise 10000 64 , .
Sequent NUMA-Q 256 ,
. ,
2048 9152 . - , 9000 , 100 000 .
, . 100 ,
,
.
, , .
.
send receive,
(
LOAD STORE). .
, ( ), ()
-, .
(. ). , .
: send,
(, ). . 8.28.

622

8.

|
-

|
-


. 8.28.

,
. :
COW. .


(Massively Parallel Processors )
.

, .
. Intel Pentium, Sun UltraSPARC, IBM RS/6000 DEC Alpha.
, ,
, . ,
( 256 ),
( 8 ).
-. , . , .
.
. - , .
, .
,
, , .

623

, . : Cray T3E Intel/Sandia Option Red.

( T3D) ,
6600. , -900 -1200
(, 600, 900 1200 ).
1 /. (FLOP FLoating-point OPerations
). 6600 -1,
, 2048 .
,
-1200. Cray
Research, Silicon Graphics. , .
DEC Alpha 21164. RISC, 4 . 300, 450 600 .
. Alpha 64- 64- . 43 , 40 . , 1 .
Alpha -, . - 8
8 . - - 96 , .
- ,
2 . 2048, 4 .
Alpha , (shell) (. 8.29). ,
512 ( -).
( 8 ). ,
, LOAD
STORE. NC-NUMA , . , , , -.
(. . 8.29).
3- . , , 512 ,
8x8x8. 3- 6
( , , , ,
). 480 /
.

624

GigaRing
*

Alpha

Alpha

4
- 1

+
-

4
- 1

+
-

+
-

Alpha

>

!
i


. 8.29. Cray Research T3E

GigaRings - , ,
, . 256 . GigaRing
32 , -. - (, HIPPI, Ethernet, ATM, FDDI), .
2048 , . 128
.

, , ,
. UNIX.

Intel/Sandia Option Red



1943 , ENIAC, . . 90-
5
, 1, 3, 10, 30 100 / -

625

14

. : 100 (10
) 500000 , Pentium Pro,
200 .
, (, 14
), , 10 , , , .
Intel ; IBM . , 80 .
. -
: red, white
blue (, ). , 14
10 , Option Red (Sandia National
Laborotary, 1996), Option Blue (1999), Option White
(2000). , Option Red.
Option Red 4608 , . . kestrel
, eagle
, , .
4536 , 32 , 32 , 6
2 .
kestrel (. 8.30, ) 2 ,
2 Pentium Pro 200 64 .
kestrel 64- NIC (Network Interface Chip ). NIC , ,
. eagle
Pentium Pro, . ,
-.
32x38x2 32x38 ( ,
). : , , , ,
kerstel eagle. 400 /. , .
, , -, - ,
, , .
.
, , , . , ,
, .

626

8.

" kestrel

64-
Pentium
Pro

Pentium
Pro

64

Pentium
Pro

Pentium
Pro

64

64-

. 8.30. Intel/Sandia Option Red: kestrel (); ()

4 : , , - . UNIX ,
. . UNIX, , (coguar)1.
- 640 , 1 .
-. , .
,
,
. ,
.

COW Clusters of Workstations


( )
COW (Cluster of Workstations
) NOW (Network of Workstations
) [8,90]. , .
COW . , , ,
. .
( , , ).
-. COW.
,
. Alpha; Option Red
Pentium Pro. . UNIX.
1

( ), , . ,
. . , .

627

. .
, COW,
DAS (Distributed ASCII Supercomputer).
128 , Pentium Pro 200
128 (. http://www.cs.vu.nl/~baL/das.htmt). 2- . 160 /
. Option Red:
, .
, Sandia . .
COW , COW
, . . , , , - , . ,
COW ,
,
.
COW, : . COW , .
, , .
, ,
, , . (Gordon Bell),
PDP-11 VAX, ( ).
COW , .
, .
. . , .

: COW
, ?
.
. COW, , , ,
. COW ,
, .

628

8.

. ,
(). FIFO ( ) (. 8.31, ).
, , , . ,
. . , ,
. COW
8 , 128 , 16 ( 8 ) .
Ipy ina

I >

0| 1 2 3|4| 5 6 7

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

0 1 I 2 3|4 5 6|7

:5

8
7

11 1 1 1

I I I

- 9

3
6
8

5
2

I I I I I I I

. 8 . 3 1 . COW: FIFO ( ) ();


(); - ().

, , ,
. ,
, . . 8.31, .
, , .
, . , , .
, . 8.31, .


.
Ethernet. : classic Ethernet, fast

629

Ethernet gigabit Ethernet. 10,100 1000 / (1,25,


12,5 125 /)1 . ,
2. .
Ethernet Ethernet,
. , .
- . Ethernet , .
Ethernet . 8.32, .

-|

J
,

backplane

11

11

Ethernet

i:
i

. 8.32. Ethernet (); Ethernet ()

Ethernet, , , . , .
,
. ,
. ,
, , .
, , .
, , . ,
(). 1

,
/, / . . Ethernet 800-850 /. , ,
() (1500 ), ( ,
). . , .

.
, . . . .

630

8.

, , , , ,
.
Ethernet
. 8.32, . , backplane, .
Ethernet,
, classic, fast gigabit Ethernet
.
, , backplane,
.
, ,
. Ethernet
Ethernet , , - .
Gigabit Ethernet Ethernet
backplane (
, ) 4 ,
, .
backplane ,
Ethernet,
.
gigabit Ethernet .
, , ATM (Asynchronous Transfer Mode ). ATM
, . ,
155 / ( 622 /).
.
155 / 622 /. , -12, .
, ATM, ATM , Ethernet.
, . Ethernet ATM
.
-, ATM , .
ATM -

631

. . 8.33. . Ethernet, ,
.
, . , , , ,
Ethernet , .

1 2
I

| | |

I 1I 1

_9^
10

|L

]
1

1 "
1 11 1 1

13 14

7
Q

-{

L_ J Lj.4J

!
|l

--, i

i
pAT M

i M

--.

^ r1-

ij Li

11
12

15 1f5

. 8.33. 16 , ATM.
()

-, Ethernet ( 1500 )
. ATM 53 .
, ,
, , ,
. 48 .
.
Myrinet ,

COW [18]. , Ethernet ATM,
, . Myrinet , 1,28 / . , ,
.
Myrinet COW,
.

632

8.

Myrinet , .
(., , [17,107,155]). ,
, , .


( ),
. . ,
COW.

. , - , . , , ()
, .
send
recei ve, . :
1. .
2. .
3. .
. send,
recei ve,
, receive,
. , , .
. : , .
. ,
, -, , , .
send,
. ,
.
. , , . ,
. .
. . ,

633

, . . , send, , ,
. - ,
. ,
, . .
, : PVM MPI.
, .

PVM
PVM (Parallel Virtual Machine )

, COW
UNIX [45, 142]. , . -.
PVM : , , , . PVM , ,
. . .
, PVM.

spawn -count n prog
prog. PVM , ,
spawn. Pvm_spawn. ,
.
PVM
,
. PVM .
, , , .
, pvm_send, send. -. -,
pvm_recv, ,
. , .
. -, pvmjtrecv,

634

8.

,
, . ,
. pvmjirecv, ,
. , .
PVM (pvm_bcast) (pvm_mcasi). , , .

pvmjbarrier. , ,

. , , , , . . PVM , , ,
.

MPI
MPI (MessagePassing Interface ). MPI ,
PVM.
. MPI, MPI-1,
, MPI-2, 1997 . MPI-1, , MPI-2. MPI . [52, 134].
MPI-1, PVM, . . , . MPI.
MPI 4 : , ,
.
. , -
(, ). ,
.
: , (short, regular
long integers), , . .
.
MPI . , :
MPI_Send(buffer. count. data_type. destination, tag. communicator)
(buffer) (datatype) . Count .
tag ; ,

635

. ,
( destination ).
:
MPI_Recv(&buffer, count, datajtype, source, tag. communicator, Sstatus)
,
.
MPI 4 . .
,
MPI_Recv. . . .
, . . , , . : , 8 .
: .
MPI , , , .
, . , .
, ,
,
( ).
.
MPI ,
, , , . .
.
MPI-2 , ,
,
-, .
MPI PVM. , PVM, , . ,
MPI, , ,
, , .



,
, . Sun Enterprise 10000,
64, NUMA-Q, 256,
UMA NUMA . Option Red 2048 9416 .

636

8.

. , PVM MPI.
, .
,
.
,
, . 8.3 , ,
. ,

.



. DSM (Distributed
Shared Memory ). :

.
. . 8.34,
, 16 4 .
, .
, - .
.
, , .
, ,
- . . 8.34,
, 0 - 10,
1 0.
IVY [83, 84]. ,
. . , IVY, ,
, . -
, , . 8.34, ,
, ( 10).
,
- ,
. -

637

, . .
, 16

10

| 7 | 11

12

] 15
3

. 8.34. , 16 ,
: ();
0 10 ();
0 10 ();

-.
,
[6]. ,
acquire, .
, , .

638

8.

, rel ease
.
. , , .
,
. -
, .
, , .
- , , . , , NUMA . ,
DSM, NUMA , DSM
NUMA , -.
DSM . CASHMERE [76, 141], CRL [68], Shata [124] Treadmarks [6, 87].

Linda
DSM (, IVY Treadmarks)
, . , , .
Linda,
[21, 22]. ,
(, FORTRAN),
, C-Linda FORTRAN-Linda.
Linda ,

. , . , .
C-Linda , long integers,
, ( ) (
). 8.4. 3 .
4 . , out,
. ,
outC'abc", 2, 5 ) ;

(abc, 2,5) . out


, ,
out("matnx-l". i . j , 3.14);

639

,
i j.
, in, . . wo , we wo vura . \ Viv
.
m C a b c " . 2, ? i ) ;

, abc, 2
, (,
i ). ,
i . in ,
, .
.
8.4. Linda
("abc".2.5)
Cmatrix-1". 1.6.3.14)
("family", "is sister". Carolyn, Elinor)

, in, .
in
. ,
:
1. .
2. .
3. .
, ,
, ( ),
, , .
, ,
,
. ,
, , ,
.
, read, in, . , eval, , .
.
Linda.
Linda replicated
worker. (task bag), . ,

out("task-bag",job):

640

8.

.
,
in("Task-bag". ?job):

. . . , , .
Linda .
,
. .
. . [16].


, . () . ,
, .
[11, 13, 14].
( Modula 2),
.
, Java Ada.
, . ,
, .
.
( (guard),
). , (true) (false). ,
.
(false), ,
true. true . 8.5 stack
push pop.
8.5. stack

Object implementation stack;


top:integer;
#
stack:array[integer O..N-l]of integer;
operation pushOtem:integer);
begin
stack[top]:=item;
top:=top+l:
end:

#.
#
#
#


operation pop integer.
begin
guard top>0 do
top =top-l.
return stack[top]:
od.
end

641

#,
#
,
#
#

begin
top =0,

end
stack, :
s, t stack.

top
0. s

s$push(k)

. . pop , ,
- .
(fork statement) , . , . , ,
. .
,
for I in I n do fork foobar(s) on I; od;

1 , foobar
. ( )
, s s, .

.
, , .
, .
. . . , ,
, .
[61].
,
.
. , -

642

8.

8.5, ,
, .
, . :
, .
, . , , . ( ), . ,
, . ,
, . , ,
.

Globe
DSM, Linda
. , . Globe , , [72,154].
, , . , , ( ,
). , .
Globe . , , . Globe ,
, . .
Globus [40,41 ] Legion
[50,51], , Globe, .


: SIMD MIMD. SIMD
. - . MIMD
. MIMD ,

643

, ,
. , , . , ,
, .
. , , .
, ,
MESI. , ,
NUMAHCOMA.

COW,
. Cray Intel/Sandia
Option Red. . COW, , ,
Ethernet, ATM Myrinet.
(, PVM MPI). . .

(, DSM , Linda, Globe).
DSM ,
NUMA. Linda, Orca Globe ,
.


1. ,
. . SIMD
MIMD?
2. , . 8.4.
3. , . 8.4, . ,
.
4. (. . 8.4, ), kxk. ? :
.

644

8.

5. 8x8x8. 1 /.
?
6. 4
3 . ,
,
.
1 4, 5 8, 9 12.
,
, 1 12.
7. , .
f , . f=0,l?
8. 8.10 , ,
. .

. 64 . ,
?
9. ,
, . -
: , ( , , =4096).
1. ?
2. ?
10. , ,
. ?
11. (, Cray-1) . 1 . 1024
?
12. . ,

?
13. ,
. ?
14.
-. ,

645

. , .
64 ?
15. MESI 4 . 4 ?
, ?
16. MESI , - -, ? , .
17. , . ,
, .
, :
1. (0 ).
2. .
3. .
18. Sun Enterprise 10000 333 , 83,3 . 64 , ,
. . , .
19. , 167 /,
16 ,
, -
60% . Enterprise 10000
4 (16 ).
?
20. , 2
Omega . ?
21. , ,
. ?
22. Omega 4096 RISC, 60 , 4096 . 5 . LOAD?
23. Omega (. . 8.22). , i i. ? (IBM RP3
BBN Butterfly .)
?

646

8.

24. NUM 20 ,
120 .
N , 1% .
,
. , ?
25. DASH b ,
. .
- . , (
).
26. CC-NUMA (. . 8.24),
512 8 . -
64 , ?
( , )?
27. SCI ?
28. SCI 63 . -
32 , 232 .
- 1 .
-?
29. NUMA-Q 2000 63 . 64 63. Sequent 63,
64?
30. 3 send , . ,
send, .
send?
31. , (, Ethernet). ( )
( )?
32. , ,
. : . ?


. , . .

, .



1. Hamacher et al., Computer Organization, 4th ed.
(, ,
-, , ).
68000 Power PC.
2. Hayes, Computer Architecture and Organization, 3rd ed.
. , , , ,
-.
3. Patterson and Hennessy, Computer Organization and Design.
1000 , RISC. , .
4. Price, A History of Calculating Machines.
, XIX ,
.
, , 3000 . . . XX .

648

9.

5. Slater, Portraits in Silicon.


? ?
. 34 , (
).
6. Stallings, Computer Organization and Archirecture, 4th ed.
. ,
.
7. Wilkes, Computers Then and Now.
,
,
1946 1968 . (space cadets) , .


1. Ng, Advances in Disk Technology: Performance Issues.
20 . . ,

.
2. Messmer, The Indispensable PC Hardware Book, 3rd ed.
1384 (36 13 ).
80x86, , ,
.
(. ) , .
3. Norton and Goodman, Inside the PC, 7th ed.
, , . . . ,
, , , , -,
, . . .
4. Pilgrim, Build Your Own Pentium II PC.
, . ,
, , .

649


1. Floyd, Digital Fundamentals, 6th ed.
,
. ,
, , , , .
2. Katayama, Trends in Semiconductor Memory.
,
. .
3. Mano and Kime, Logic and Computer Design Fundamentals.
,
(Floyd),
. , , , -.
4. Mazidi and Mazidi, The 80x86 IBM PC and Compatible Computers, 2nd ed.
,
.
,
.
5. McKee et al., Smarter Memory: Improving Bandwidth for Streamed References.

. , , .
6. Nelson et al., Digital Logic and Circuit Analysis and Design.
. .
7. Triebel, The 80386, 80486 and Pentium Processor.
, , . , , - 80x86,
, . 915
, , , .


1. Handy, The Cache Memory Book, 2nd ed.
- ,
, .
-, , ,

650

9.

-, . -
.
2. Johnson, Superscalar Microprocessor Design.
, .
, , , , .
3. Normoyle et al. UltraSPARC Hi: Expending the Boundaries of a System on a Chip.
UltraSPARC Iii UltraSPARC II PCI. , .
4. McChan and ' Connor, picojava: A Direct Execution Engine for Java ByteCode.
picojava
( , microjava 701). -, .
5. Shriver and Smith, The Anatomy of a High-Performance Microprocessor.
.
AMD ( Pentium). , .
6. Sima, Superscalar Instruction Issue.
. ,
( , ). .
7. Wilson, Challenges and Trends in Processor Design.
? Sun, Cyrix, Motorola, Mips, Intel Digital
. 2008 ,
.


1. Antonakos, The Pentium Microprocessor.
,
Pentium . Pentium. . -.

651

2. Paul, SPARC Architecture, Assembly Language, Programming, and


, Intel 80x86.
SPARC , .
3. Weaver and Germond, The SPARC Architecture Manual.
.
Version 9 SPARC, ,
. ,
64- SPARC.


1. Hart, Win32 System Programming.
Windows, . Windows ,
, ,
, , - . .
2. Jacob and Mudge, Virtual Memory: Issues of Implementation.
.
TLB MIPS, Power PC Pentium.
3. Korn, Porting UNIX to Windows NT.
, UNIX
NT , NT .
, - .
, .
4. McKusick et al., Design and Implementation of the 4.4 BSD Operating System.
UNIX, USENIX Conference. BSD 4.4 .
, , -. .
5. Ritchie and Thompson, The UNIX Time-Sharing System.
, UNIX.
. .
6. Solomon, Inside Windows NT, 2nd ed.
, NT, .
, , , , , -, -, .

652

9.

7. Tanenbaum and Woodhull, Operating Systems: Design and Implementation, 2nd ed.
.
MINIX, UNIX, IBM PC . .


1. Irvine, Assembly Language for Intel-Based Computers, 3rd ed.
Intel . -, , , , . .
2. Saloman, Assemblers and Loaders.
, ,
, ,
.



1. Adve and Gharachorloo, Shared Memory Consistency Models: A Tutorial.
, , , .
, .
.
2. Almasi and Gottlieb, Highly Parallel Computing, 2nd ed.
,
, , , .
,
.
3. Hill, Multiprocessors Should Support Simple Memory-Consistency Models.

. (,
), .
, , , ,
.
4. Hwang and Xu, Scalable Parallel Computing.
, ,
, -

653

. UMA
NUMA, COW, .
5. Pfister, In Search of Clusters, 2nd ed.
72- ( , ), , ,
. ,
. :
, 500- .
6. Snir et al., MPI: The Complete reference Manual.
. MPI, .
, ,
.
7. Stenstrom et al., Trends in Shared Memory Multiprocessing.

. . ,
.


1. Cody, Analysis of Proposals for the Floating-Point Standard.
(IEEE) , de facto . , ,
.
2. Garner, Nubmer Systems and Arithmetic.
( , , ).
, , .
3. IEEE, Pmc. of the n-th Symposium on Computer Arithmetic.

. . , , , , , .
4. Knuth, Seminumerical Algorithms, 3rd ed.
, , . .

654

9.

5. Wilson, Floating-Point Survival Kit.


. (, Unpack).


1. Adams, G. . HI, Agrawal, D. P., and Siegel, H.J. A Survey and Comparison of
Fault-Tolerant Multistage Interconnection Networks, IEEE Computer Magazine, vol. 20, p. 14-27, June 1987.
2. Adve, S. V., and Charachorloo, K. Shared Memory Consistency Models: A Tutorial, IEEE Computer Magazine, vol. 29, p. 66-76, Dec. 1996.
3. Adve, S V., and Hill, M. Weak Ordering: A New Definition, Proc. 17th Ann.
Int'l. Symp. on Computer Arch., ACM, p. 2-14,1990.
4. Agerwala, ., and Cocke,J. High Performance Reduced Instruction Set Processors, IBM TJ. Watson Research Center Technical Report RC12434, 1987.
5. Almasi, G. S., and Gottlieb, A. Highly Parallel Computing, 2nd ed. Redwood City,
CA: Benjamin/Cummings, 1994.
6. Amza, C, COX, A., Dwarkadas, S., Keleher, P., Lu, H., Rajamony, R., Yu, W., Zwaenepoel, W. TreadMarks: Shared Memory Computing on a Network of Workstations, IEEE Computer Magazine, vol. 29, p. 18-28, Feb. 1996.
7. Anderson, D. Universal Serial Bus System Architecture, Reading, MA: AddisonWesley, 1997.
8. Anderson, T. E., Culler, D. E., Patterson, D. A., andthe NOW team A Case for NOWr
(Networks of Workstations), IEEE Micro Magazine, vol. 15, p. 54-64, Feb.
1995.
9. AntonakosJ. L. The Pentium Microprocessor, Upper Saddle River, NJ: Prentice
Hall, 1997.
10. August, D. I., Connors, D. A., Mshlke, S. A., SIASJ. W., Crozier, K. M., Cheng, B.-C,
Eaton, P. R., Olaniran, Q. ., andHWU, W.-M. Integrated Predicated and Speculative Execution in the IMPACT EPIC Architecture, Proc. 25th Ann. Int'l.
Symp. on Computer Arch., ACM, p. 227-237,1998.
11. Bal, H. E. Programming Distributed Sysytems, Hemel Hempstead, England: Prentice Hall Int'l., 1991.
12. Bal, H. E., Bhoedjang, R., Hofman, R, Jacobs, C, Langendoen, K., Ruhl, ., and
Kaashoek, M. F. Performance Evaluation of the Orca Shared Object System,
ACM Trans, on Computer Systems, vol. 16, p. 1-40, Feb. 1998.

655

13. Bal, H. ., Kaashoek, M.F., and Tanenbaum, A. S. Orca: A Language for Parallel
Programming of Distributed Systems, IEEE trans, on Software Engeneering,
vol. 18, p. 190-205, March 1992.
14. Bal, H. E., and Tanenbaum, A. S. Distributed Programming with Shared Data,
Proc. 1988 Int'l. Conf. on Computer Languages, IEEE, p. 82-91, 1988.
15. Bhuyan, L. N., Yang, Q., andAgrawal, D. P. Performance of Multiprocessor Interconnection Networks, IEEE Computer Magazine, vol. 22, p. 25-37, Feb. 1989.
16. Bjornson, R. D. Linda on Distributed Memory Multiprocessors, Ph. D. Thesis,
Yale Univ., 1993.
17. Blumrich, M. A., Dubnicki, C, Felten, E. W., Li, K., and Mesarina, M. R. VirtualMemory Mapped Network Interfaces, IEEE Micro Magazine, vol. 15, p. 21-28,
Feb. 1995.
18. Boden, N.J., Cohen, D., Felderman, R. E., Kulawik, A. E., Seitz, L., SeizovicJ. N.,
and Su, W. -K. Myrinet: A Gigabit per second Local Area Network, IEEE Micro
Magazine, vol. 15, p. 29-36, Feb. 1995.
19. Bouknight, W.J., Denenberg, S. A., Mcintyre, D. E., Randall,J. M., Sameh, A. H., and
Slotnick, D. L. The Illiac IV System, Proc. IEEE, p. 369-388, April 1972.
20. Burkhardt, H., Frank, S., Knobe, ., and RothnieJ. Overview of the KSR-1 Computer Sysytem, Technical Report KSR-TR-9202001, Kendall Square Research
Corp, Cambridge, MA, 1992.
21. Carriero, N., and Gelernter, D. The S/Net's Linda Kernel, ACM Trans, on
Coputer Sysytems, vol. 4, p. 110-129, May 1986.
22. Carriero, N., and Gelernter, D. Linda and Context, Commun. of the ACM, vol. 32,
p. 444-458, April 1989.
23. Charlesworth, A. Starfire: Extending the SMP Envelope, IEEE Micro Magazine, vol. 18,39-49, Jan./Feb. 1998.
24. Charlesworth, A., Phelps, A., Williams, R., and Gilbert, G. Gigaplane-XB: Extending the Ultra Enterprise Family, Proc. Hot Interconnects V, IEEE, 1988.
25. Cody, W.J. Analysis of Proposals for the Floating-Point Standard, IEEE Computer Magazine, vol. 14, p. 63-68, Mar. 1981.
26. Cohen, D. On Holy Wars and a Plea for Peace, IEEE Computer Magazine,
vol. 14, p. 48-54, Oct. 1981.
27. Corbaty, F.J. PL/1 as a Tool for System Programming, Datamation, vol. 15,
p. 68-76, May 1969.
28. Corbaty, F.J., and Vyssotsky, V. A. Introduction and Overview of the MULTICS
System, Proc. FJCC, p. 185-196, 1965.

656

9.

29. Denning, P.J. The Working Set Model for Program Behavior, Commun. of the
ACM, vol. 11, p. 323-333, May 1968.
30. Dijkstra, E. W. GOTO Statement Considered Harmful, Commun. of the ACM,
vol. 11, p. 147-148, Mar. 1968a.
31. Dijkstra, E. W. Co-operating Sequential Processes, in Programming Languages,
F. Genuys (ed.), New York: Academic Press, 1968b.
32. Driesen, K., andHolzie, URS Accurate Indirect Branch Prediction, Proc. 25th
Ann. Int'l. Symp. on Computer Arch., ACM, p. 167-177,1998.
33. Dubois, M., Scheurich, C, andBriggs, FA. Memory Access Buffering in Multiprocessors, Proc. 13th Ann. Int'l. Symp. on Computer Arch., ACM, p. 434442,1986.
34. Dulong, The IA-64 Architecture at Work, IEEE Computer Magazine, vol. 31,
p. 24-32, July 1998.
35. Faggin, F., Hoff, M. E.Jr., Mazor, S., and Shima, M. The History of the 4004,
IEEE Micro Magazine, vol. 16, p. 10-20, Dec. 1996.
36. Falsafi, ., and Wood, DA. Reactive NUMA: A Design Unifying S-COMA and
CC-NUMA, Proc. 25th Ann. Int'l. Symp. on Computer Arch., ACM, p. 229240,1997.
37. FisherJ. A., andFreudenberger, S. M. Predicting Conditional Branch Directions
from Previous Runs of a Program, Proc. 5th Conf. on Arch. Support for Prog.
Lang, and Operating Syst, ACM, p. 85-95,1992.
38. Floyd, T. L. Digital Fundamentals, 6th ed., Upper Saddle River, NJ: Prentice Hall,
1997.
39. Flynn, M.J. Some Computer Organizations and Their Effectiveness, IEEE
Trans, on Computers, vol. C-21, p. 948-960, Sept. 1972.
40. Foster, I., andKesselman, Globus: A Metacomputing Infrastructure Toolkit,
Int'l. J. of Supercomputer Applications, vol. 11, p. 115-128,1998a.
41. Foster, I., and Kesselman, The Globus Project: A Status Report, IPPS/SPDP
'98 Heterogeneous Computing Workshop, IEEE, p. 4-18, 1998b.
42. FotheringhamJ'. Dynamic Storage Allocation in the Atlas Computer Including
an Automatic Use of a Backing Store, Commun. of the ACM, vol. 4, p. 435-436,
Oct. 1961.
43. Gajski, D. D., and Pier, . -. Essential Issues in Multiprocessor Systems, IEEE
Computer Magazine, vol. 18, p. 9-27, June 1985.

657

44. Garner, H. L. Number Sysytems and Arithmetic, in Advances in Computers,


vol. 6, F. Alt and M. Rubinoff (eds.), New York: Academic Press, 1965, p. 131
194.
45. Geist,A., Beguelin, A., Dongarra,J., Jiang, W., Mancheck, R., and Sunderram, V.
PVM: Parallel Virtual Machine A User's Guide and Tutorial for Networked
Parallel Computing, Cambridge, MA: M.I.T. Press, 1994.
46. Gharachorloo, K., Lenoski, D., LaudonJ., Gibbons, P., Gupta, A., and HennessyJ.
Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors, Proc. 17th Ann. Int'l. Symp. on Computer Arch., ACM, p. 15-26,
1990.
47. Goodman, J. R. Using Cache Memory to Reduce Processor Memory Traffic,
Proc. 10th Ann. Int'l. Symp. on Computer Arch., ACM, p. 124-131, 1983.
48. GoodmanJ. R. Cache Consistency and Sequential Consistency, Tech. Rep. 61,
IEEE Scalable Coherent Interface Working Group, IEEE, 1989.
49. Graham, R. Use of High Level Languages for System Programming, Project
MAC Report TM-13, Project MAC, MIT, Sept. 1970.
50. Grimshaw, A. S., and Wulf, W. Legion: A View from 50,000 Feet, Proc. Fifth
Int'l. Symp. on High-Performance Distributed Computing, IEEE, p. 89-99, Aug.
1996.
51. Grimshaw, A. S., and Wulf, W. The Legion Vision of a Worldwide Virtual Computer, Commun. of the ACM, vol. 40, p. 39-45, Jan. 1997.
52. Gropp, W., Lusk, E., andSkjellum, A. Using MPI: Portable Parallel Programming
with the Message Passing Interface, Cambridge, MA: M.I.T. Press, 1994.
53. Hagersten, E., Landin, A., Haridi, S. DDM A Cache-Only Memory Architecture, IEEE Computer Magazine, vol. 25, p. 44-54, Sept. 1992.
54. Hamacher, V. V., Vranesic, Z. G., andZaky, S. G. Computer Organization, 4th ed.,
New York: McGraw-Hill, 1996.
55. Hamming, R. W. Error Detecting and Error Correcting Codes, Bell Syst. Tech. J.,
vol. 29, p. 147-160, April 1950.
56. Handy,J. The Cache Memoru Book, 2nd ed., Orlando, FL: Academic Press, 1998.
57. Hart,]. M. Win32 System Programming, Reading, MA: Addison-Wesley, 1997.
58. Hayes,]. P. Computer Architecture and Organization, 3rd ed., New York: McGrawHill, 1998.
59. Hennessy,]. L. VLSI Processor Architecture, IEEE Trans, on Computers,
vol. C-33, p. 1221-1246, Dec. 1984.

658

9.

60. Hill, M. Multiprocessors Should Support Simple Memory-Consistency Models, IEEE Computer Magazine, vol. 31, p. 28-34, Aug. 1998.
61. Hoare, A. R. Monitors, An Operating System Structuring Concept, Commun. of the ACM, vol. 17, p. 549-557, Oct. 1974; Erratum in Commun. of the
ACM, vol. 18,p.95,Feb.l975.
62. Hwang, K., and Xu, Z. Scalable Parallel Computing, New York: McGraw-Hill,
1998.
63. Hwu, W. -M. Introduction to Predicated Execution, IEEE Computer Magazine, vol. 31, p. 49-50, Jan. 1998.
64. Irvine, K. Assembly Language for Intel-Based Computers, 3rd ed., Englewood
Cliffs, NJ: Prentice Hall, 1999.
65. Jacob, ., and Mudge, T. Virtual Memory: Issues of Implementation, IEEE
Computer Magazine, vol. 31, p. 33-43, June 1998a.
66. Jacob, ., and Mudge, T. Virtual Memory in Contemporary Microprocessors,
IEEE Micro Magazine, vol. 18, p. 60-75, July/Aug. 1998b.
67. Joe, ., and Hennessy,J. L. Evaluating the Memory Overhead Required for
COMA Architectures, Proc. 21th Ann. Int'l. Symp. on Computer Arch., ACM,
p. 82-93,1994.
68. Johnson, K. L., Kaashoek, M. F., and Wallach, D. A. CRL: High-Performance AllSoftware Distributed Shared Memory, Proc. 15th Symp. on Operating Systems
Principles, ACM, p. 213-228,1995.
69. Johnson, M. Superscalar Microprocessor Design, Englewood Cliffs, NJ: Prentice
Hall, 1991.
70. Juan, ., Sanjeevan, S., and Navarro,J.J. Dynamic History-Length Fitting:
A Third Level of Adaptivity for Branch Prediction, Proc. 25th Ann. Int'l. Symp.
on Computer Arch., ACM. p. 155-166,1998.
71. Katayama, Y. Trends in Semiconductor Memories, IEEE Micro Magazine,
p. 10-17, Nov./Dec. 1997.
72. Kermarrec, A. -M., Kuz, I., Van Steen, M., and Tanenbaum, A. S. A Framework
for Consistent Replicated Web Objects, Proc. 18th Int'l. Conf. on Distr. Computing Syst, IEEE, p. 276-284, 1998.
73. Knuth, D. E. An Empirical Study of FORTRAN Programs, Software Practice & Experience, vol. 1, p. 105-133,1971.
74. Knuth, D. E. The Art of Computer Programming: Fundamental Algorithms, 3rd ed..
Reading, MA: Addison-Wesley, 1997.

659

75. Knuth, D. E. The Art of Computer Programming: Seminumerical Algorithms,


3rd ed., Reading, MA: Addison-Wesley, 1998.
76. Kontothanassis, L., Hunt, G., Stets, R., Hardavellas, N., Cierniad, M., Parthasarathy, S.,
Meira, W., Dwarkadas, S., and Scott, M. VM-Based Shared Memory on Low Latency Remote Memory Access Networks, Proc. 24th Ann. Int'l. Symp. on Computer Arch., ACM, p. 157-169,1997.
77. , D. Porting UNIX to Windows NT, Proc. Winter 1997 USENIX Conf.,
p. 43-57,1997.
78. Kumar, V. P., andReddy, S. M. Augmented Shuffle-Exchange Multistage Interconnection Networks, IEEE Computer Magazine, vol. 20, p. 30-40, June 1987.
79. Lamport, L. How to Make a Multiprocessor Computer That Correctly Executes
Multiprocess Programs, IEEE Trans, on Computers, vol. C-28, p. 690-691, Sept.
1979.
80. LaRowe, R. P., and Ellis, C. S. Experimental Comparison of Memory Management Policies for NUMA Multiprocessors, ACM Trans, on Computer Systems,
vol. 9, p. 319-363, Nov. 1991.
81. Lenoski, D., LaudonJ., Gharachorloo, K, Weber, W. -D., Gupta, A., HennessyJ.,
Horowitz, M., and Lam, M. The Stanford Dash Multiprocessor, IEEE Computer Magazine, vol. 25, p. 63-79, March 1992.
82. Li, K. IVY: A Shared Virtual Memory System for Parallel Computing, Proc.
1988 Int'l. Conf. on Parallel Proc. (Vol. 11), IEEE, p. 94-101, 1988.
83. Li, K., andHudak, P. Memory Coherence in Shared Virtual Memory Systems,
ACM Trans, on Computer Systems, vol. 7, p. 321-359, Nov. 1989.
84. Li, K., andHudak, P. Memory Coherence in Shared Virtual Memory Systems,
Proc. 5th Ann. ACM Symp. on Prin. of Distr. Computing, ACM, p. 229-239,
1986.
85. Lindholm, ., and Yellin, F. The Java Virtual Machine Specification, Reading, MA:
Addison-Wesley, 1997.
86. Loshin, D. High Performance Computing Demystified, Cambridge, MA: AP Prof.,
1994.
87. Lu, H., Cox, A. L., Dwarkadas, S., Rajamony, R., and Zwaenepoel, W. Software
Distributed Shared Memory Support for Irregular Applications, Proc. 6th Conf.
on Prin. and Practice of Parallel Progr., p. 48-56, June 1997.
88. Lukasiewicz, J. Aristotle's Syllogistic, 2nd ed., Oxford: Oxford University Press,
1958.

660

9.

89. , . ., andKime, . R. Logic and Computer Design Fundamentals, Upper


Saddle River, NJ: Prentice Hall, 1997.
90. Martin, R. P., Vahdat, A. M., Culler, D. E., and Anderson, . . Effects of Communication Latency, Overhead, and Bandwidth in a Cluster Architecture, Proc.
24th Ann. Int'l. Symp. on Computer Arch., ACM, p. 85-97,1997.
91. Mazidi, M. A., andMazidiJ. G. The 80x86 IBM PC and Compatible Computers,
2nd ed., Upper Saddle River, NJ: Prentice Hall, 1998.
92. McGhan, H. and O'connorJ. M. picojava: A Direct Execution Engine for Java
Bytecode, IEEE Computer Magazine, vol. 31., Oct. 1998.
93. McKee, S. A., Klenke, R. #., Wright, K. L, Wulf, W. A., Saunas, M. H., AylorJ. H.,
and Batson, A. P. Smarter Memory: Improving Bandwidth for Streamed
References, IEEE Computer Magazine, vol. 31, p. 54-63, July 1998.
94. McKusick, M. K., Bostic, K., Karels, M., and QuartermanJ. S. The Design and
Implementation of the 4.4 BSD Operating System, Reading, MA: AddisonWesley, 1996.
95. McKusick, M. K.Joy, W. N, Leffler, S.J., andFabry, R. S. A Fast File System for
UNIX, ACM Trans, on Computer Systems, vol. 2, p. 181-197, Aug. 1984.
96. Messmer, H.-P. The Indispensible PC Hardware Book, 3rd ed.. Reading, MA:
Addison-Wesley, 1997.
97. Morgan, Portraits in Computing, New York: ACM Press, 1997.
98. Morin, C, Gefflaut, A., Banatre, M., and Kermarrec, A. -M. COMA: An Opportunity for Building a Fault-Tolerant Scalable Shared Memory Multiprocessor,
Proc. 24th Ann. tnt'l. Symp. on Computer Arch., ACM, p. 65-65,1996.
99. Moudgill, M., and Vassiliadis, S. Precise Interrupts, IEEE Micro Magazine,
vol. 16, p. 58-67, Feb. 1996.
100. Mullender, S.J., and Tanenbaum,A.S. Immediate Files, Software Practice
and Experience, vol. 14, p. 365-368,1984.
101. Nelson, V. P., Nagle, H. ., Carroll, B. D., andlrwinj. D. Digital Logic and Circuit
Analysis and Design, Englewood Cliffs, NJ: Prentice Hall, 1995.
102. Ng, S. W. Advances in Disk Technology: Performance Issues, IEEE Computer
Magazine, vol. 31, p. 75-81, May 1998.
103. Normoyle, . ., Csoppenszky, M. A., Tzeng, A., Johnson, T. P., Furman, D., and
Mos-Toufi,J. UltraSPARC Hi: Expanding the Boundaries of a System on a
Chip, IEEE Micro Magazine, vol. 18, p. 14-24, March/April 1998.
104. Norton, P., and Goodman,]. Inside the PC, 7th ed., Indianapolis, IN: Sams, 1997.

661

105. O'connor,J.M., and Tremblay, M. Picojava-I: The Java Virtual Machine in


Hardware, IEEE Micro Magazine, vol. 17, p. 45-53, March/April 1997.
106. Organick, E. The MULTICS System, Cambridge, MA: M.I.T. Press, 1972.
107. Pakin, S., Karamcheti, V., and Cfflen.A.A. Fast Messages (FM): Efficient,
Portable Communication for Workstation Cluster and Massively-Parallel
Processors, IEEE Concurrency, vol. 5, p. 60-73, April-June 1997.
108. Pan,S. -T.,So,K.,andRahmeh,J. T. Improving the Accuracy of Dynamic Branch
Prediction Using Branch Correlation, Proc. 5th Int'l. Conf. on Arch. Support
for Prog. Long, and Operating Syst, ACM, p. 76-84, Oct. 1992.
109. Papamarcos, M., and Patel.J. A Low Overhead Coherence Solution for Multiprocessors with Private Cache Memories, Proc. 1 lth Ann. Int'l. Symp. on Computer Arch., ACM, p. 348-354, 1984.
110. Patterson, D. A. Reduced Instruction Set Computers, Commun. of the ACM,
vol. 28, p. 8-21, Jan. 1985.
111. Patterson, D. A., Gibson, G., andKatz, R. A case for redundant arrays of inexpensive disks (RAID), Proc. ACM SIGMOD Int'l. Conf. on Management of Data,
ACM, p. 109-166,1988.
112. Patterson, D. A., andHennessyJ. L. Computer Organization and Design, 2nd ed.,
San Francisco, A: Morgan Kaufmann, 1998.
113. Patterson, D. A., and Suquin, . . A VLSI RISC, IEEE Computer Magazine,
vol. 15, p. 8-22, Sept. 1982.
114. Paul, R. P. SPARC Architecture, Assembly Language, Programming, and C,
Englewood Cliffs, NJ: Prentice Hall, 1994.
115. Pfister, G.F. In Search of Clusters, 2nded., Upper Saddle River, NJ: Prentice
Hall, 1998.
116. Pilgrim, A. Build Your Own Pentium II PC, New York: McGraw-Hill, 1998.
117. Pountain, D. Pentium: More RISC than CISC, Byte, vol. 18, p. 195-204, Sept.
1993.
118. Price, D. A History of Calculating Machines, IEEE Micro Magazine, vol.4,
p.22-52,Feb.l984.
119. Radin, G. The 801 Minicomputer, Computer Arch. News, vol. 10, p. 39-47,
March 1982.
120. Ritchie, D. M., and Thompson, K. The UNIX Time-Sharing System, Commun.
of the ACM, vol. 17, p. 365-375, July 1974.

662

9.

121. Rosenblum, M., and OusterhoutJ. . The Design and Implementation of a LogStructured File System, Proc. Thirteenth Symp. on Operating System Principles,
ACM, p. 1-15, 1991.
122. Saloman, D. Assemblers and Loaders, Englewood Cliffs, NJ: Prentice Hall, 1993.
123. Saulsbury, A., Wilkinson, ., Carger,]., and Landin, A. An Argument for Simple
COMA, Proc. of First IEEE Symp. on High-Performance . Arch., IEEE,
p. 276-285,1995.
124. Scales, D.J., Gharachorloo, K., and Thekkath, CA. Shasta: A Low-Overhead Software-Only Approach for Supporting Fine-Grain Shared Memory, Proc. 7th Int'l.
Conf. on Arch. Support for Prog. Long, and Oper. Syst., ACM, p. 174-185,1996.
125. Sechrest, S., Lee, . -, and Mudge, T. Correlation and Aliasing in Dynamic
Branch Predictors, Proc. 23th Ann. Int'l. Symp. on Computer Arch., ACM, p. 2232, 1996.
126. Seltzer, M., Bostic, K., McKusick, M.K., and Staelin, An Implementation of a
Log-Structured File System for UNIX, Proc. Winter 1993 USENIX Technical
Conf., p. 307-326,1993.
127. Shanley, ., and Anderson, D. ISA System Architecture, Reading, MA: AddisonWesley, 1995a.
128. Shanley, ., and Anderson, D. PCI System Architecture, 3rd ed.. Reading, MA:
Addison-Wesley, 1995b.
129. Shriver, ., and Smith, B. The Anatomy of a High-Performance Microprocessor:
A Systems Perspective, Los Alamitos, CA: IEEE Computer Society, 1998.
130. Sima, D. Superscalar Instruction Issue, IEEE Micro Magazine, vol. 17, p. 2839, Sept./Oct 1997.
131. Sima, D., Fountain, ., andKacsuk, P. Advanced Computer Architectures: A Design
Space Approach, Reading, MA: Addison-Wesley, 1997.
132. Slater, R. Portraits in Silicon, Cambridge, MA: M.I.T. Press, 1987.
133. Smith, A.J. Cache Memories, Computing Surveys, vol. 14, p. 473-530, Sept.
1982.
134. Snip, M., Otto, S. W., Huss-Lederman, S., Walker, D. W., andDongarraJ. MPI: The
Complete Reference Manual, Cambridge, MA: M.I.T. Press, 1996.
135. Solari, E. ISA & EISA Theory and Operation, San Diego, CA: Annabooks, 1993.
136. Solari, E., and Willse, G. PCI Hardware and Software Architecture and Design,
4th ed., San Diego, CA: Annabooks, 1998.

663

137. Solomon, DA. Inside Windows NT, 2nd ed., Redmond, WA: Microsoft Press, 1998.
138. Sprangle, E., Chappell, R. S., Alsup, M., and Patt, Y. N. The Agree Predictor: A
Mechanism for Reducing Negative Branch History Interference, Proc. 24th Ann.
Int'l. Symp. on Computer Arch., ACM, p. 284-291,1997.
139. Stallings, W. Computer Organization and Architecture, 4th ed. Upper Saddle
River, NJ: Prentice Hall, 1996.
140. Stenstrom, P., Hagersten, E., Lilja, D.J., Martonosi, M., and Venugopal, M. Trends
in Shared Memory Multiprocessing, IEEE Computer Magazine, vol. 30, p. 4450, Dec. 1997.
141. Stets, K, Dwarkadas, S., HardaveUas, N, Hunt, G., Kontothanassis, L, Parthasarathy, S.,
and Scott, M. CASHMERE-2L: Software Coherent Shared Memory on Clustered Remote-Write Networks, Proc. 16th Symp. on Operating Systems Principles, ACM, p. 170-183, 1997.
142. Sunderram, V. B. PVM: A Framework for Parallel Distributed Computing,
Concurrency: Practice and Experience, vol. 2, p. 315-339, Dec. 1990.
143. Swan, R.J., Fuller, S. H., andSiewiorek, D. P. Cm* A Modular Multiprocessor,
Proc. NCC, p. 645-655,1977.
144. Tan, W. M. Developing USB PC Peripherals, San Diego, CA: Annabooks, 1997.
145. Tanenbaum, A. S. Implications of Structured Programming for Machine
Architecture, Commun. of the ACM, vol. 21, p. 237-246, Mar. 1978.
146. Tanenbaum, A. S., and Woodhull, A. W. Operating Systems: Design and Implementation, 2nd ed. Upper Saddle River, NJ: Prentice Hall, 1997.
147. Thompson, K. UNIX Implementation, Bell Syst. Tech. J., vol. 57, p. 1931-1946,
July-Aug. 1978.
148. Treleaven, P. Control-Driven, Data-Driven, and Demand-Driven Computer
Architecture, Parallel Computing, vol. 2, 1985.
149. Tremblay, M. and 'connorj. M. UltraSPARC I: A Four-Issue Processor Supporting Multimedia, IEEE Micro Magazine, vol. 16, p. 42-50, April 1996.
150. Triebel, W. A. The 80386, 80486, and Pentium Processor, Upper Saddle River,
NJ: Prentice Hall, 1998.
151. linger, S. H. A Computer Oriented Toward Spatial Problems, Proc. IRE, vol. 46,
p. 1744-1750,1958.
152. Vahalia, U. UNIX Internals, Upper Saddle River, NJ: Prentice Hall, 1996.
153. Van DerPoel, W. L. The Software Crisis, Some Thoughts and Outlooks, Proc.
IFIP Congr. 68, p. 334-339, 1968.

664

9.

154. Van Steen, M., Homburg, P. C, and Tanenbaum, A. S. The Architectural Design
of Globe: A Wide-Area Distributed System, IEEE Concurrency, vol. 7, p. 7078Jan.-March 1999.
155. Verstoep, K., Langedoen, K., andBal, H. E. Efficient Reliable Mulicast on Myrinet, Proc. 1996 Int'l. Conf. on Parallel Processing, IEEE, p. 156-165,1996.
156. Weaver, D. L., and Germond, T. The SPARC Architecture Manual, Version 9,
Englewood Cliffs, NJ: Prentice Hall, 1994.
157. mikes, M. V. Computers Then and Now, J. ACM, vol. 15, p. 1-7, Jan. 1968.
158. Wilkes, M. V. The Best Way to Design an Automatic Calculating Machine,
Proc. Manchester Univ. Computer Inaugural Conf., 1951.
159. Wilkinson, B. Computer Architectural Design and Performance, 2nd ed., Englewood Cliffs, NJ: Prentice Hall, 1994. Wilinson, 1994.
160. Wilkinson, B. and Allen, M. -arallel Programming: Techniques and Applications
Using Networked Workstations and Parallel Computers, Upper Saddle River,
NJ: Prentice Hall, 1999.
161. Wilson, J. Challenges and Trends in Processor Design, IEEE Computer Magazine, vol. 31, p. 39-48, Jan. 1998.
162. Wilson, P. Floating-Point Survival Kit, Byte, vol. 13, p. 217-226, March 1988.
163. Yeh, T.-Y., and Pott, Y. -N. Two-Level Adaptive Training Branch Prediction,
Proc. 24th Int'l. Symp. on Microarchitectwe, ACM/IEEE, p. 51-61,1991.


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


- , , . , , , 1078 , , 79 .
.
.
,
. , , , ,
. , ,
. .

,
.
1000 : 000, 001, 002, 003,..., 999.
. :
1. 999.
2. .
3. .
4. .

666

5. .
, . ,
i nj i+j, i-j ixj . , nj, i/j (, 7/2 1/0).
.
:
600+600=1200 ( );
003-005=-2 ( );
050x050=2500 ( );
007/002=3,5 ( ).
: , ( ) ,
( - ), ,
, . , , , .
,
. , ,
,
. , .
.

a+(b-c)=(a+b)-c.
=700, 6=400 =300. (b-). 100.
800. , (+).
. , 1100. 300 - , 1100, 800. .
.
:
(b-c)=axb-axc.
=5,6=210 = 195. 5 15=75.
75 , axb .
, - , . , -

667

, , ,
.



. . . 1.
(
), 10 .
. 2, 8 16.
, .

d n ... 62

d-|

d0

d_i

d-2

d - 3 ... d.|<

n
=Ed|x10'
l=-k
. . 1.

&- k 0 k1.
10
0123456789
, ,
01

01234567
16 . ,
6 . , 9,
F. ,
.
0123456789ABCDEF
( 1 0) . . .2 2001 ,
. 79 ,
. 111
. ,
.

668
g

| 1 2

10

8*1024

1
9

+512

+256

7
3

+128

2
2

. 8 + 7 8 + 2 8
2 -

1
7

1
4

0
2

1
1

+ 1 2 + 1 2 + 1 2 + 1 2 + 0 2 + 1 2 + 0 2 + 0 2 + 0 2 + 1 2

1536 + 448

+64

+0

+16

+0

+0

+0

+1

1
1

+ 18

16 +1

2
0
1
0
3
210 I- 0 1 0 2 + 0 10 1 + 1 10
2000 * 0
+ 0
+1

1
7 1 6 2 16 + 1 16
1792 208
+1

3
. .2. 2001 ,

.
. 1. ,

0
1

10

11

100

101

110

111

1000

10

1001

11

10

1010

12

11

1011

13

12

1100

14

13

1101

15

14
15
16
20
30
40
50
60
70
80
90
100

16
17
20
24
36
50
62
74
106
120
132
144

1110
1111
10000
10100
11110
101000
110010
111100
1000110
1010000
1011010
11001000

1000

1111101000

1750

2989

101110101101

5655

669

10
14
1
28
32

46
50

5
64
8
BAD




. ,
, ,
. .
0 7 (.
. .1). , .
. 3- . 16- ,
, 8- ,
16- , . . .
.
. . , , ,
. . ,
. ,
, .
2.
, (0 1) .

670

. ,
0. . . .4 ,
.
1

ft

0001100101001000

1 4

fi

.101101100

0111101110100011
7 5

6 4

.101111000100
3 . 5

. .. 8-
16-

. , 1 . :
10110=24+22+2'=16+4+2=22
.
, . 1,
2 . . . 1. -1 (0 1). , ,
. . .5.
16- ,
, 8 16.


4 . .
(0 +, 1 -), .

671

1 492
746
373
1 86
93
46
23
11
5
2
1

1 0 1 1 1 0 1 0 1 0 0 =

1492 1 0

. .4. 1492
( ). , 93 2, 46 1.

1

1
1 + 2 1499 = 2999

1 + 2 749 = 1499
1 + 2 374 = 749
0 + 2 187 = 374
1 + 2 93 = 187
1 + 2 46> == 93
93
0 + 2 23 = 46
-- 1 + 2 '11 =23
-- 1 + 2 5 = '11
-^1+2x2=5
->- 0 + 2 1 = 2
-- 1 + 2 0 = 1

. .5. 101110110111
.
. , 374 2
( 1). 749

672

, , (0 , 1 ).
, 1 0 0 1.
. .
, , (0 +, 1
-). .
0, 0 1 ( ).
1.
, , ,
1, 9. , 6
:
00000110 (+6);
11111001 (-6 );
11111010 (-6 ).
, .
, - excess 2m~', 2~ , 8-
(=8) excess 128,
128. , -3 -3+128=125, (-3) 8- 125 (01111101). -128 +127
0 255 ( 8- ). ,
. .2 .
.2. 8-
N N -N -N -N -N excess 128


1
2
3
4
5
6
7
8
9
10
20
30
40
50
60
70
80
90
100
127
128

00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00010100
00011110
10101000
00110010
00111100
01000110
01010000
01011010
01100100
01111111
.

10000001
10000010
10000011
10000100
10000101
10000110
10000111
10001000
10001001
10001010
10010100
10011110
10101000
10110010
10111100
11000110
11010000
11011010
11100100
11111111
.

11111110
11111101
11111100
11111011
11111010
11111001
11111000
11110111
11110110
11110101
11101011
11100001
11010111
11001101
11000011
10111001
10101111
10100101
10011011
10000000
.

11111111
11111110
11111101
11111100
11111011
11111010
11111001
11111000
11110111
11110110
11101100
11100010
11011000
11001110
11000100
10111010
10110000
10100110
10011100
10000001
10000000

011111111
01111110
01111101
01111100
01111011
01111010
01111001
01111000
01110111
01110110
01101100
01100010
01011000
01001110
01000100
00111010
00110000
00100110
00011100
00000001
00000000

673

:
+0 -0. .
, .
. , 1, , .

.
, , :
1. .
2. .
, ,
.
, . -0, - ,
.


(. .6).

__

_tl

1 1
_2
1

_1
1

0
1

. .6.

. . , .
. . , , .
. .7.
, . , , , .
,
,

674

.
, , .

00001010
11111100

00001010
11111101

1 00000110

1 00000111

10
+ (-3)
+7

00000111
. .7.


1. : 1984, 4000, 8192.
2. 1001101001 ,
.
3. ? BED, CAB, DEAD, DECADE, ACCEDED, BAG, DAD.
4. 100 2 9.
5. k , ?
6. 10.
. ,
.
1, 0. , ? ? , . ?
7. 8-
:
00101101
11111111
00000000
11110111
+01101111 +11111111
-11111111 -11110111
8. .
9. 3-
. :
. 1.
. 0.

675

. .
000
000
111
100
100
+001 +111 +110 +111 +100
10. , ,
+1 . 0
. 9. , 014725 985274.
. .
3- : 6, -2, 100, -14, - 1 , 0.
11. ,
:
0001
0001
9997
9241
+9999
+9998
+9996
+0802
12. .

1 . ?
13. 3.
14. 0111 .
15. , ASCII,
,
.
16. , 2 32
ASCII, . 32- .
32 ASCII, .


, , . , (9x10 28
) (2x1033 ). 1060.
:
0000000000000000000000000000000000.0000000000000000000000000009
2000000000000000000000000000000000.0000000000000000000000000000
34
28 . 62 .
, . ,
62. 62 . 62 , 50 60 ,
.
, .
.
, , .



:
=/
/ , , ( ) . . .
3,14
=0,3141=3,1410
0,000001 =0,1-5=1,010-6
1941
= 0,1941104=1,941103

677

,
.
,
. , R 0,l<|f|<l
.
+
+0,100x10"" +0,99910 ", 199 , 5 2 .

,
. . .1 .
7 :
1.
2.
3.
4.
5.
6.
7.

-0,999x10".
-0,999x10" -0,100x10"".
-0,1 10"" .
.
0 0,1 10"".
0,100x10"" 0,999x10".
0,999x10".

3
5

4 g

\
-10"

-\
-10' 1 0 0

11 je 1
0
10" 100

. . 1. 7

,
, , 1,3,
5 7. 1
7 (, 10601060=10120), .
. 3 5.
- . , , 3 5.
10"102 0.

. , . , -

678

z=(x+y)/2. .
. 179100 ,
179100 0 ( ),
358201 . -10+10 +0,999x10" 358201
. . .1 .
, 2 6. ,
+0,100x103 3
.
, , . .
, , .
+0,998x10" +0,999x10" +0,998x10 +0,999x10.
, . , ,
, , .
,
,
.
.
, , .
2 6
1, 3, 5 7. . .1 6

.
.1.

3
3
3
3

1
2
3
4

4
4
4
4

1
2
3
4

5
5
5
5
10
20

1
2
3
4
3
3

- 12

109
10"

-102
-1002

- 13

10-

1Q999

109
10"

1 Q-1OO3

1Q999

-'

9999

-'4

109
10"

-104

10

~11

1 Q-10O9
-1019

1Q999
1 9999
1

9"

1Q999

679

. 2,4,8 16, 10.


, , . 0, , 1, (
).
.
, ,
.
. .2. .
16- ( ) 7- . .
1: 2
2" 2

ll

ig
.
1
I

2" 6

2~*

2" 8

2" 1 0 2 ' 1 2 2 ' 1 4 2" 1 6

2" | Z \ 2-9
5

2-

2"15

I I JMII I I I

0
1010100
0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 = 2 2 0 (1x2" 1 2 +1x2- 1 3 +1x2" 1 5

+ 1-1\ -?
+ : 1x2' 1 2 +1x2" 1 3
64(84-64=20)
+1x2^ +1x2-

11

1001001

11

S jg
II
5

1 1 0 1


+
73-64=9

1 0 0 0 0 0 0 0 0 0 0 0 = 29

: 1 X 2

-W1X2-2
,
.

+ 1 2

(12'1 +12"2

+ 12" 5 ) = 432

+ 1 2

2: 16
16"1

|
gra
q "
I*

1
|

||
q ..

/\

16"2

16"3

16"4

/\

/\

0 1000101 0000
1011
QOQQ
OQQQ = 165 (1 1 6 ^ 4 ) = 432

,
+ : 116"3+1 "4
69-64=5

2 2

1000011

0001

1011

0000

0000

=16 3 (1x16 1 +16" 2 ) = 432


: 116" 1 + 1 "2
+
67-64=3
. .2.

680

IEEE 754
80- . . ,
,
, .
, 70- IEEE
. , . IEEE 754 (IEEE, 1985).
( Intel, SPARC JVM)
, . ,
,
, , ,
(William Kahan). .
: (32 ), (64 ) (80 ). . ,
. 2 . . ..
1

23

1 1 1

52

. .. IEEE : ();
()

; 0
, 1 . . (excess) 127,
1023. (0) (255 2047)

IEEE 754

681

. , . 23
52 .
,
1 , . , PDP-11,
, 1 , , . ,
. , 1, , 23 52 .
23 52 0, 1,0.
1, ,
2,0.
, 23 52 (mantissa) significand.
significand s l<s<2.
IEEE
. .2. 0,5,1 1,5
. 3F000000, 3F800000 3FC00000 .
.2. IEEE

1
8

1
11

23
32

52

(excess) 127

(excess) 1023

-126 +127

-1022+1023

2-126

2-22

=2

64

128

_2 1 24

= 10- 10

=- 4 5

38

"308 1 0 3 0 8

- 3 2 4

, ,
, . , IEEE,
CDC 6600. 4
(. .4).
, () , . : 0,
- . , IEEE .
0 , 23

682

52 . 1 0. , 0.

0 < <

1 1 1...1

1 1 1...1


. .4. IEEE

1
0 1,02~126. 0 0,99999992~127, . ,
23 , 24 .
0,
, , . 1 , 0. 2~127, 2 23,
2~150. , 0,
.
2 , , . 0 0.
0, 1.
. : , ,
, 0. .
. ,
. 0. , 0, .
, ?
. , NaN
(Not a Number ). .

683


1. IEEE . .
. 9
. 5/32
. -5/32
. 6.125
2.
:
. 4228000
. 3F880000H
. 00800000
. C7F00000H
3. IBM/370 7- ( 64), 24- . .
16. , , . 7/64 .
4. ,
( 64) 2 16- . .
. 0 1000000 0001010100000001
. 001111110000001111111111
. 0 10000111000000000000000
5. ,
( ). , . 3EE00000H 3D800000H .
6. 16-
. 0.001 , 7- ( 64) 8- . 0.002
, 5- ( 16) 10- . 2.
? ? -
?

684

7. ,
. ?
8.
. (, ). . ?
9.
. 32- .
10.
, 16, 2
1 .
4 0001, 0010,..., 1111, 0000.
4 1 .

ACL, , 502
APIC, 196
ASCII-, 130
ATM, , 630
attraction memory, 619

BGA, Ball Grid Array, 205


BIOS, -, 91
BIPUSH, IJVM, 248, 265
Burroughs B5000, 37

CC-NUMA, 607
CD-ROM XA, 103
CDC 6600, 68, 308, 578
CDC-6600, 36
Celeron, 47
CISC,
, 63
COLOSSUS, 31
, 586,619
Control Data Corporation, 36
COW, , 44,
586,626
, , 247, 258
, 623
-1, 588
CRC, , 218
CYMK, 124

Digital Equipment Corporation, 35, 61


DIMM, 84
DIP, , 150
DLL,
, 549
DMA, , 109
dpi, 122
DSM
, 608
DSM,
, 562, 636
DUP, IJVM, 248, 265
DVD-, 105

-, 623
eagle, , 625
EDVAC, 33
EIDE-, 92
EISA, ISA, 110
ENIAC, 33
ENIGMA, 32
EPIC, 425
Ethernet, 628

, 630
excess,
, 672
-, 540

FAT
DAS, 627
DASH, 611

. , 499
FIFO, , 447
FMS, FORTRAN Monitor System, 26
FORTRAN, 26

686

GDT,
, 455
Gigaplahe-XB, 604
GigaRing, 624
Globe, 642
GOTO, IJVM, 248, 268
goto, , 257

H , 233

I
IA-32, 316,343
IA-64, 425
IADD, !JVM, 248,260,264
IAND, IJVM, 248, 265
IAS, 33
IBM PC, , 39
IBM PS/2, 206
IBM, , 35
IBM-1401, 36
IBM-360, 38
IBM-701, 35
IBM-704, 35
IBM-709, 26
IBM-7094, 36, 38
IBM-801, 62
-, 91
IFJCMPEQ, IJVM, 248, 270
IFEQ, IJVM, 248,270
IFLT, IJVM, 248, 270
IINC, IJVM, 249, 268
IJVM, 230, 244
Java, 252
, 248
Mic-2, 280
ILC, , 532
ILLIAC, 33
ILLIACIV, 585
ILLIAC IV, 70
ILOAD, IJVM, 248,265
Intel 8255A, 219
Intel 8259A, 192
Intel Pentium, 46

Intel, , 45
lntel-4004, 45
lntel-8008, 45
lntel-80286, 46
lntel-80386, 46
lntel-80486, 46
lntel-8080, 45
lntel-8086, 45
lntel-8088, 45
INVOKEVIRTUAL, IJVM, 249, 271
IOR, IJVM, 248, 265
IQ-Link, , 616
IRETURN, IJVM, 251, 271
ISA,
, 110
ISDN, 128
ISTORE, IJVM, 248
ISUB, IJVM, 248, 265
IU,
, 50

-, 51
JOHNIAC, 33
JVM, Java, 51

kestrel, , 625

Latin-1, 132
LBA, 92
LDC_W, IJVM, 248, 268
LDT,
, 455
Linda, 638
Ipi, 124
LRU,, 299,446
LV, , 245, 247, 250, 258

M
MAL, , 255
MAR,
, 236


MBR, , 236,
258, 266, 277
MDR,
, 236
Merced, 425
MESI, , 601
MFT, , 502
Mic-1, 240
Mic-2, 280
, 280
Mic-3, 285
Mic-4, 290
microJava II 701,
, 204
MicroJava, , 52
Microsoft, 40
MIMD, 585
MIPS
, 62

, 64
MIR, , 240
MISD, 585
MMU,
, 442
, 47
Motif, 483
Motorola 68000, 62
, , 240
MPI,
, 634
,
, 586, 622
MULTICS, 454, 521
Myrinet, 631

N
NaN, 682
NC-NUMA, 607
NIC, , 625
NOR IJVM, 249, 264
NORMA, 586

NOW, , 44, 586, 626


NTFS
.
Windows NT, 499
NUMA, 586,607
NUMA-Q, 615

687

OC-12, 630
omega, , 605
Omnibus, 35
OPC, , 259
Option Blue, 625
Option Red, 625
Option White, 625
Orca, 640

PC
, 251, 258
, 247
PCI, 110
PDP-1, 35
PDP-8, 35
Pentium II

, 318
/, 315
/, 317
8086, 343
, 194
, 198
, 343
, 343

, 197
, 195
Pentium II
, 47
, 194
picoJava I, 51
picoJava II
, 324
, 323
picoJava II
, 204
picoJava II, , 51
, -, 219
poison bit, 314
POP, IJVM, 248, 259, 265
POSIX, 480
POSIX, Windows NT, 487
PSW, , 341
pthreads, 506
PVM,
, 633

688

quard board, , 615

RAID, 94
RAW-, 288
replicated worker, , 582, 639
RISC,
, 40, 63
, 64
ROB,
, 314
RS-232-C, , 117

SCI,
, 615
SCSI, 92
SEC, Single Edge Cartridge, 194
Sequent NUMA-Q, 615
SIB, , , , 359, 376
SID, , 502
SIMD, 585, 587
SIMM, 84
Single Edge Cartridge, 194
SISD, 584
SLED, 94
SMR
, 593
SO-DIMM, 85
SP, , 231, 245, 251, 258
SPARC, 49
SPMD, 581
Sun Enterprise 10000, 604
Sun Microsystems, 48
SWAP, I JVM, 248, 265, 287

TAT-12/13, 42
TLB,
, 460
TOS, , 259
TSB,
, 462
-0, 35

-, 68
UART,
, 118,219
UDB II, UltraSPARC II Data Buffer II, 202
UltraSPARC I, 50
UltraSPARC II, 50
, 321
UltraSPARC II
, 200
UMA, 586
UNICODE, 132
UNIX, 480
Berkeley, 480
Solaris, 481
System V, 480
UPA,
, 201
USART, 219

v-, 68
VAX, 61,63
VIS, 50
VTOC, , 104

w
WAR-, 309
WAW-, 309
WEIZAC, 33
Whirlwind, 34
WIDE, I JVM, 249, 267
Win32 API, 488
Win32, Windows NT, 487
Windows, 483
Windows 95, 483
Windows 98, 483
Windows NT, 484
wormhole routing, , 571

X Windows, 483
, 47

z
Zilog Z8000,, 62


, 278
, 304

, 627
, 469
, 383
, 74
, 353
JVM, 377
Pentium II, 375
UltraSPARC II, 377
, 367
, 372
, 366
, 365
, 369
, 366
, 366
, 365
, 369
, 439
, , 32
, 34, 59, 365
, 388
, 115
, 142
, 24
, -
, 22, 57, 159, 231
, 575
, 30
, 24
, 109
, 188
- ,
22,57, 159,231
, 24, 60
/, 348
, 24
, 630
, 23, 518
, 537
, 454, 538
, , 32
, 116
-, 89

689

, 140
-, 91
, 311
, 75, 338
, 584,635
, , 48
, 550
, 551
, 380

, 565
, 73, 667
, 78
, 443
, 351

, 277
, 290
, 290

, 498
, 498

, 498
, 570
, 607
, 128
, 44
, 142
, , 142

, 66
, 314

, 460
, 461

, 570
, 570
, 570

, 236, 258, 266, 277

, 171
, 171
,, 30

690

-
, 221
, 588
, 414
, 193

, 70, 588
, 71
, 21, 139
, 583
, 571
-, 116
, 115
, 88

, 633
, 635
, 19
Java, 51
, 439
Pentium II, 455
UltraSPARC II, 460

, 440
, 244
, 544
, 543
, , 39
, 667
, 98
, 295

, 88
, 161
, 545
, 517
, 571
-, 59
-, , 231
, 491
, 445
, 27
, 380

, 201

, 517
, 39

, 84
, 567
, 551
, 502
, 455
, 124

, 483
, 116

, 667
- , 73
, 538
, 567
, 150
, 532
, 583
, 146
, 153
, 223
, 153
, 567
, 502
, 493
, , 39
, , 48
, 565
, 127

, 549
, 547
, 525
, 469
, 86
, 90
,
Windows NT, 487
-,
Windows NT, 486
-, Windows NT, 486
, Windows NT, 486


,
Windows NT, 487
, 272
, 274

, 672
, 672
, 87
, Windows NT, 486
, 181
, 324
, 676
, 128

, 100
, 113

, 180
, 151
, 41
, 666
, 110
, , 601
, 73

, 166
, 166
, 491
, 390

SR-, 163

D-, 165
SR-, 164
, 567
, 101
, 237
, 629
, , 31

, 488
, 502
, 85

691

, 141
, 141
, 466
, 117
, 497
, 149

, 37
, 77
, 19,60
, 19

, 634
,
Windows NT, 487
, 369
, 616
, 236
, , 149

, 310
, 517
, 540
, Windows NT, 486

, UNIX, 504
, 630
, 187
, 112
, 586, 626
, 40
, 466

, 231
, 87
, 77
, 129
, 359
, 341
, 79
, 77
, 132
, 140
, 472
, 567

-, 386
, 379

692

()
, 384
, 383
, 151
, 634

, 570
, 569
, 569
-, 98
CD-R, 102
CD-ReWritable, 105
CD-RW, 105
, 103
, 104
, 100
, 100
, 154
, 24,518
, 539

, 556
, 63
,
40,63
, 24
, 66,581
Pentium, 68
(Mic-3), 285
, 665
, 278
, 543
, 461
, 108
, 91
, 240
, 442
, 520
, 603
, 495
, 638
() , 558
, , 48

, 565
, 83
, 98
, , 36
, 509

, 567
, 626
, 349
-, 46, 82, 295
-, 299
, 295
, 300
, 300
, 296
, 84, 295
, 599
, 300
, 84
, 482

, 456
, 534
, , 30
, 412
, 465
, 637
, 455

, 87
, , 48
, 245
, 527
, 527
, 527
, 527
, 529
, 529
, 676
, 501

, 572
, 571
, 572
, 572
, 380
- ,
70,587
, , , 359, 376

, 615


, 108
, 18
, 87
--, 142
, 255
, 62
, 291
, 22
, 22
, 240
, 149
, 177
, Windows NT, 486
, , 42
, 578
, 605

, 18
, 118

, Windows NT, 486
, 127
, 127
, 127
, 127
, 112
, 181
, , 32
, 583
, 72, 560, 586, 621
, 561
, 151
, 38
, 71,559,586
, 609
, , 41, 45
, 119
, 506

, IJVM, 247
, 520
, 469
, 603
, 149
, 681
()
, 558

693

, 365
, 598
, 127
, 507, 508
, , 37, 45
, 679

, IJVM, 247
, 483,623
, 123

, 413
, 369
, 335
, 517
, 540, 543
, 438
, 104
, 161
, 117
, 678
, , 35
, 26,437
(), 640
, 532
, 453
, 98
, 103
, 667
, 181
, 678
, 302
, 505

- , 677
, 677
- , 445

, 564
, 639
, 28
, 73, 163
EDO, 175
FPM, 174

694

{)
, 174
, 174
, 175
,
, 174
,
, 175
, 175

, 175
, 176
, 174
-, 176
, 581

, 580
, 65
, 558
, 558
, 65
-, 219
, , 29
, 115
, , 389

, 632
, 632
, 632
, 183
, 507

, 543
, , 278
, 184
, 123
, 116

( ), 628
, 98
, 311
, 385
,
Windows NT, 487
, 180
, 149
-
, 547

, 88
, 452
, 567
, 145
, 391
, 128
, 338
, 504
, 504

, 188
, 369
, 473, 482, 581
UNIX, 505
, 404
(), 472
, 509
, 87
, 426

, 676
, 109,413
, 309
, 309
, 394
, 267, 359
, 497
, 338
, 181
, 181
, 121
, 122
, 121
, 126
, 125
, 122
, 82
, 447
, 18
, 413
, 109
, 349

, 155
-, 387
, 24
, 415
(), 472


, 408
TLB, 461
-, 298

, 67
, 288
, 302
, 295
, 638

, 598
, 601
, 602
, 601
, 532
, 385, 405
, 405

,
586,622

, 50
, 109, 389
, 524
, 495
, 495
, 495
, 425

, 445

, 26
, , 582
, 448
, 566
, 94
, 30

, 562, 636
, 607
, 112
, 569

, 356
, 237
ISA, 110

695

, 576
, 288
, 21, 168
, 236
, 56
, 240
, 340
, 346
, 539
, 385
, 567

, 367
,
, 39
,
, 349
, 173
, 325
, 120
, 491

, 550
, 551
, 539
, 495

, 305
, 450
, 547
, 87
, 476
-, 104

, 625
, 629
, 567

, 564
, 586,626
, 44
, 236
, 115
, 128
, 183

696

,
, 560

, 559
, Windows NT, 487

, 27
, 23
, 437
, 487
, 28
, 599
, 114
, 75
, 341

Pentium II, 458
, 510

, 593

, 593
, 595
, 596
, 596
, 593
, 603
, 481
, 411

, 231
, 278
, 476
, 429
, 313
, 502
, 467
, 66
, 495

, 110
, 495
, 495

IJVM, 245
, 246, 253
IJVM, 247
, 565
, 558

, , 32
, 440
, 440

, 608
, 441
, 165
-, 83, 296
, 126

, 574

, 158
, 158
, 159
, 158
, 36, 44
, 68
, 440
, 157

, 56, 247
, 308
, 532

, 616
, 142
, 499
, 532
, 440, 457
, 161
, 606
, 495
, 111

, 351
, 350
, 567
, 565
, 544
, 22,57
IJVM, 231
Mic-3, 286
, 198
, 35
, 142
, -, 142


, 462
, 517
, 19
, 165
, -
, 142

-, 298
, , 61
, 366
, 344
, 132
, 381
, 194

, 219
-
, 219

, 118
, 240
, 578
, 20
, 485

, 334
, 23
, 22, 230
, 271
, 23, 437
, 21,140
, 21
, 517
, 427
, 173
, 598
, 171

, 464
, 503
Windows NT, 499
, Windows NT, 486
, 440
, 495
, 341

, 584
, , 33
-
, 34, 57

, 452
, 448
, 245
IJVM, 247

, 629
, 216
, 405,417
-, 538

, 117
, 124
, 551
, 56

, 58
, 183
, 88
, 177

, 127
, 571

, 125
, 125

, 670
, 350

, 639

, 667
, 35,56, 109, 179
EISA, 207
IBM PC, 206

697

698

()
ISA, 207
PCI, 208
, 210
, 210
, 211
, 210
Sbus, 201
USB,
, 216
, 183, 186
, 183
, 180
, 183
, 179
, 182
, 583

, 145
, . , 33
, 676
- , 112
, 140
, 408
, - , 142
, , 39
, 41

, 518
, 24
, 74

- http://www.natahaus.ru/
,
.

.
!
,

.

,
.

.

.

.


.
.

,
, ,
e-mail -
.

You might also like