Professional Documents
Culture Documents
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
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
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
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
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
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
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
ava
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
- ,
. , , .
, , - .
.
, .
. 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.
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.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
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
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
, . . , .
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,
--, - , -,
. ,
. 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 .
119
UART ,
. ,
, , UART .
RS-232-C 25 , ( , , ). 2
3 . ( ,
). , ( 1), , . , .
, .
, , . ,
.
, , . ENIAC ,
. 50- . ,
( ), .
, . ,
. .
,
. , ,
. ,
,
. ,
. (
), , .
: , .
, . , , , .
(). , , ,
, -
120
2.
. , , . . 2.30.
. 2.30.
. , .
,
. , , . , , ,
. .
. , , , , . . , . ,
,
.
.
-, : 3 ,
(, 0,01 ). .
, , .
. . .
121
, , . ,
.
, ,
, ,
.
, . 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 )
: . , , - .
' , .
. , : ( ), ( )
( ). , .
,
.
: , , . CYMK ( Cyan (), Y Yellow () Magenta () ()).
black , Blue (). , , , .
, , ,
.
125
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
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
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.
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
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
1=
=0
=
0+=
1+=1
+=
"=0
=
+=1
()=()
+=(+)(+)
(+)=
=+
+=+
(+)+=++)
(+)=+
+=
+=
. . 3.6,
,
. , -. . 3.6, ,
, , -
.
(. . 3.6, 3.6, ).
(, n- - ).
148
3.
, . 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
, ,
.
. .
, .
, - . , .
, .
, , () .
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
,
, , 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
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.
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 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
, 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
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#
( )
. , 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
\
,
/ ' \
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
.
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
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,
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
0x10
0x59
BIPUSHbyfe
DUP
07
GOTO offset
0x60
IADD
0x7
IAND
;
( )
0x99
IFEQoffsef
0x9B
IFLT offset
0x9F
IFJCMPEQ offset
; ,
0x84
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.
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
, - , , :
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)
, 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
!
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
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
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
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
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
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
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;
ireturn6
MAR=SP
MAR TOS
ireturn7
LV=MDR
LV
ireturn8
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
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
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
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
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
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
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-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
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
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
. 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
16
11
- . , -
. , , . -
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
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
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. / ( )
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.
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
LV
LV
LV
LV
OP
OP
LV
LV
BG2
LV
ILOAD, IFEQ
LV
BG1
BG2
LV
MEM
ILOAD, ISTORE
MEM
IADD, ISTORE
,
JVM , RISC. , picojava II Java , Pentium,
, 15 , Pentium.
picojava II : , .
,
.
(6 12, Pentium II) .
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.
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
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.
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
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.
, , . . 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.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:
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
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.
^ ^
- +
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
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.
, .
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
SRC DST
SRC DST
SRC DST
MUL SRC
EAX SRC ( )
IMUL SRC
SRC ( )
DIV SRC
EDX:EAX SRC ( )
IDV SRC
EDX:EAX SRC ( )
SRC DST
DST SRC
INC DST
1 DST
DEC DST
1 DST
NEG DST
DST ( DST 0)
-
DAA
DAS
ASCII
AAS
ASCII
ASCII
AAD
ASCII
SRC DST
OR DST, SRC
SRC DST
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.
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
, .
(8 )
(8 )
(8 )
(16 )
(32 )
(32 )
(64 )
(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
CALL ADDR
RETURN ADDR
SAVER1.S2, DST
RESTORE "
, TRAP#
PREFETCH FNC
LDSTUB ADDR, R
MEMBAR MASK
10 13
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 ()
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
OR SRC GO 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
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. .
417
, , . ( ) . 5.6
Java. .
, Java, Pentium II UltraSPARC II ,
418
5.
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
towers(n-l. i. k)
Scratch = n-1
1 - i
towers 2 (k)
2
!
!
!
!
towersd. i. j)
1=1
towers 2 (j)
2 = j
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
: , 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 --
( 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
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-
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.
, .
, .
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
461
, ,
TLB . , , , 41-
(, ). . 6.16, .
TLB (
+
]
TLB (
)
( )
0
,
0...0000
1
,
0...0001
. 6.16. ,
UltraSPARC II: TLB ();
(); ()
, TLB, . . , - . TLB ,
. .
,
.
TLB
462
6.
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
//
//
//
//
//
//
//
//
//
//
// m out
public static i n t next(int k) { i f (k < BUF_SIZE - 1) return(k+l). else return(O):
//
//
//
// 1
// 2
//
// 4
// 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.
// /
//
//
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
//,
//
//
//
//
// 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
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
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
Windows 95/98
NT 5.0
Win32 API
32-
MS-DOS
Unicode
Intel 80x86
80x86, Alpha
(
)
UNIX NT.
.
UNIX
UNIX . : , , . 6.26. ,
. . , .
.
Solaris.
, , ,
. , , ,
. UNIX,
,
, .
490
6.
OxFFFFFFFF
. 6.26. UNIX
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
494
6.
- read write,
( , ),
, ,
. Iseek ,
.
Stat (, , . .). Chmod (, ,
, - ). , fcntl , .
6.9. UNIX
; mode
creat(name, mode)
unlink(name)
(, 1 )
open(name, mode)
close(fd)
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")
. 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.
, 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.
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 , . .
, ,
.
, .
. , ,
.
, ,
- , , .
, , ,
, , .
. , , , .
, .
,
, ( ). , ,
,
.
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
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
%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
, 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.
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
//
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 |
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.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
, -
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
,
. . , ,
, .
, . , . ,
.
, ,
.
. 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
, , ,
, () -
. :
. ,
. ,
, .
.
LOAD STORE.
583
,
. , Linda
, , , . , .
, .
. send receive. send, . receive,
.
,
send recei ve. . .
. ( ).
() ().
,
. ,
(/) ( / ) .
. . 8.1.
8.1.
(
(
)
)
(. . 8.1).
, . ,
, - , . , ,
.
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
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
8 24-
64
24-
8 64-
64
64-
8 64-
. 8.14. -1
. 64-
. 16- ,
. , . , ,
, . .
592
8.
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
[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, ).
,
, , , ,
, . . , ,
.
-
, . ,
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).
.
() () (crosspoint), ,
. . 8.19, , ,
(, ) (001, 000), (101, 101)
(110, 010) . . , 8 .
. , , . , . ,
604
8.
. , .
, 2. 1000 1000 . . .
64
605
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.
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.
. 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
, 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.
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
( 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.
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-
4 : , , - . UNIX ,
. . UNIX, , (coguar)1.
- 640 , 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.31, .
, , .
, . , , .
, . 8.31, .
.
Ethernet. : classic Ethernet, fast
629
-|
J
,
backplane
11
11
Ethernet
i:
i
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 ) ;
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
#.
#
#
#
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.
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
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.
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
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
660
9.
661
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
ll
ig
.
1
I
2" 6
2~*
2" 8
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
: 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
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
-, 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
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
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
, 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 -
.