23-02
004.3
18
18
., .
. 6- . .: , 2013. 816 .: .
ISBN 978-5-496-00337-7
, , , , . , . , , .
: , , , .
32.973.23-02
004.3
ISBN 978-0132916523 .
ISBN 978-5-496-00337-7
........................................................................................... 16
1. .................................................................................. 20
2. .......................................... 76
3. ................................................ 172
4. ..................................................... 270
5. ....................................... 377
6. ............................................. 475
7. ............................................................... 555
8. ............................. 590
9. ......................................................................... 699
. . ......................................................... 708
. .......................................... 720
. ...................... 729
. ......................................................................... 791
............................................................... 16
............................................................................... 19
1. ......................................................... 20
........................................... 20
, ...................................................20
................................................23
..........................................................26
....................................................... 31
(16421945).............33
(19451955)..........................35
(19551965).....................................38
(19651980)..........................40
(1980?)......42
.................................................................46
.................................................................................... 47
...........................................48
...............................................................50
.....................................................................50
................................................................................53
.......................................................55
...................................................................56
................................................................................................57
...............................................................................................58
.........................................................................................59
. ......................................................................... 60
x86...................................................................60
ARM.................................................................66
AVR..................................................................69
................................................................................. 70
....................................................................... 72
................................................................................... 73
2. ..................... 76
............................................................................................. 76
...................................................77
..............................................................................78
RISC CISC.............................................................................82
.........................84
.............................................................85
....................................................90
...................................................................................... 94
........................................................................................................94
.......................................................................................95
............................................................................96
.......................................................................98
-.........................................................................................102
.......................................................106
........................................................................ 106
.........................................................107
.................................................................................108
IDE-............................................................................................112
SCSI-..........................................................................................114
RAID-......................................................................................115
..................................................................119
CD-ROM....................................................................................121
CD-R.........................................................................................126
CD-RW.......................................................................................128
DVD-...........................................................................................128
Blu-Ray......................................................................................130
- ............................................................................................ 131
...................................................................................................131
PCI PCIe..................................................................................133
...........................................................................................136
.......................................................................................141
..................................................................................................142
..........................................................................143
............................................................................................146
................................................151
.......................................................................159
....................................................................................162
..................................................................... 167
................................................................................. 168
3. .......................... 172
....................................................................... 172
...............................................................................................172
....................................................................................175
..............................................................177
.........................................................................179
.................................................. 182
...........................................................................182
........................................................................184
.......................................................................187
...........................................................................192
.................................................................................................... 193
..............................................................................................194
..............................................................................................196
.............................................................................................198
............................................................................199
............................................................................202
............................................................................................205
FPGA ....................................................................................................... 208
.......................................................... 210
...................................................................210
...........................................................................212
......................................................................................215
..........................................................................216
...................................................................................221
......................................................................224
....................................................... 227
Intel Core i7..........................................................................................227
Texas Instruments OMAP4430......................234
Atmel ATmega168.....................................................238
......................................................................................... 239
PCI.............................................................................................240
PCI Express..........................................................................................249
USB............................................................................................255
........................................................................................... 259
-..................................................................259
........................................................................260
..................................................................... 263
................................................................................. 264
4. ............................... 270
..................................................................... 270
.......................................................................................271
....................................................................................277
Mic-1...................279
IJVM ........................................... 284
.....................................................................................................284
IJVM............................................................................286
IJVM-.............................................................................288
IJVM.................................................................................292
.................................................. 294
..................................................................294
IJVM Mic-1.............298
.................................................... 313
..............................................................313
......................................................................315
Mic-2.................................................................322
Mic-3.........................327
Mic-4......................332
. .......................................................... 336
-.........................................................................................337
...............................................................343
......................................................................348
.................................................................355
....................................................... 357
Corei7................................................357
Omap4430..............................................................364
Cortex A9.....................................................364
ATmega168...............................368
i7, OMAP4430 ATmega168...........................370
..................................................................... 372
................................................................................. 373
5. .................. 377
.................................. 379
......................................379
....................................................................................381
.............................................................................................384
..............................................................................................385
Core i7....................385
OMAP4430I.............388
ATmega168........................390
........................................................................................... 392
........................................................................393
.....................................................................394
Corei7..........................................................395
OMAP4430.........................................................395
ATmega168......................................................................396
10
.................................................................................... 396
......................................397
.................................................................399
Corei7...................................................402
OMAP4430............................................403
ATmega168...............................................................405
.............................................................................................. 406
..............................................................................406
.............................................................406
...............................................................................406
.......................................................................407
......................................................407
..........................................................................408
..................................................410
............................................................................410
............................................413
.....................414
Corei7...............................................416
OMAP4430.........................................418
ATmega168........................................418
...........................................................419
........................................................................................... 419
...........................................................420
.............................................................................421
...............................................................................422
.........................................................424
..................................................................426
............................................................................427
-.......................................................................428
Corei7...............................................................432
OMAP4430............................................................................436
ATmega168............................................................................439
.................................................................442
................................................................................... 442
...............................443
..........................................................................................444
......................................................................................449
..........................................................................451
.........................................................................................452
.................................................................................... 456
Corei7.................456
OMAP4430..........458
11
6. ........................ 475
................................................................................ 476
.........................................................477
......................................479
...........................482
.............................................................483
.........................................................485
........................................................................................486
.....................................................................489
Corei7.................................................................492
OMAP4430...........................................................497
....................................................499
................................................................ 500
Corei7....................................................502
- ...................................................... 502
.................................................................................................503
-...................................504
.........................................................508
................................... 509
.....................................................................510
..................................................................................511
.....................515
............................................................. 518
UNIX WindowsXP..............519
.............................................................526
-.................................................529
.......................................................541
..................................................................... 547
................................................................................. 548
7. ........................................ 555
.................................................................... 556
?.............................................................556
12
......................................................................557
.......................................................558
...........................................................................................559
................................................................................................. 561
, .........................562
......................................................................564
............................................................565
....................................................565
..................................................................... 566
........................................................566
....................................................................................567
.....................................................................................571
..............................................................573
........................................................................... 574
.........................................................................575
..............................................................578
.........579
..................................................................582
..................................................................... 586
................................................................................. 587
8. ......... 590
........................................................ 592
...........................................................592
...............................................599
.................................................606
........................................................................................ 612
...........................................................................612
....................................................................620
NVIDIA Fermi..................................................620
..............................................................................623
................................................................................. 624
............................................624
...............................................................................631
UMA-
.................................................636
NUMA-...................................................................644
COMA-...................................................................653
................................................................................ 655
.....................................................................656
............................................659
......................................................................670
n=",
13
.................................................................675
....................................................................................678
.................................................679
..........................................................................686
................................................................ 691
.................................................................... 694
................................................................................ 696
9. ............................................... 699
. ................................... 708
.......................................................................
..........................................................
..............
............................................................
...........................................................................
................................................................................
708
710
712
714
716
717
. ..................... 720
............................ 720
IEEE 754 .................................................................................. 724
................................................................................ 727
. ... 729
................................................................................. 730
................................................................................730
......................................731
8088 ..................................................................................... 732
................................................................................732
.............................................................734
- ...........................................................................735
............................................................................... 737
.........................................................737
..........................................................................................739
8088 ................................................................................ 743
, ...................745
, .........747
......................................................................748
...............................................................749
.........................................................................751
14
.................................752
......................................755
.............................................................................................. 756
.............................................................................................756
as88 ACK...........................................................757
8088.................................761
.................................................................................................. 762
...............................................................................764
................................................................... 766
................................................................................................ 767
Hello World...........................................................................................767
..............................................................770
...................................................772
...................................................775
............................778
...................................................................782
.............................784
................................................................................. 790
. ............................................... 791
. (AST): , , ,
. . (TA): ,
( )
,
, .
, , , .
, ,
, ,
.
,
, . , ,
. Intel
Core i7, Texas Instrument OMAP4430 Atmel ATmega168. Core i7
, ,
. OMAP4430 ARM, .
, ATmega168,
. ATmega168
AVR , -.
, ATmega168
, , . , ATmega168 Pentium Corei3,
i5 i7. ATmega168
Arduino ,
,
.
,
, . - (. ),
.
8088, iA32, Corei7.
ARM AVR ,
, 8088
8088- .
Core i7 .
8088 , .
, Core i7, , 8088.
, , -
17
, 8088,
. Windows,
UNIX Linux. - .
( 443 ;
816). , ,
.
, ,
(, ) .
, 4 ( 4.4 ) 5, 4,
6, 7 8 .
( ). 1 -
, . ,
, 1960-,
,
. , FPGA, ,
. ,
(Core i7, OMAP4430 ATmega168).
2 . ,
(GPU). , , , . -
, , Wiimote Kinect, ,
.
3 . , ,
,
, .
(FPGA, Field-Programmable Gate Array) ,
, .
, .
4,
, .
, Core 7, OMAP4430 ATmega168.
5 6 ; ,
ARM AVR. 6
Windows XP Windows 7.
7, , .
18
8, , , .
Core i7 NVIDIA Fermi. ,
, BlueGene Red Storm,
.
9 . -,
, .
. ;
.
,
. , ,
(Evert Wattel)
. , ,
. ,
-, -.
, - ( ),
4. (Richard Salter)
. .
, .
- :
http://www.pearsonhighered.com/tanenbaum
Companion Website
.
:
/.
.
.
:
PowerPoint.
, .
.
, Pearson
Education.
( ) . , (Anna Austin),
(Mark Austin), (Livio Bertacco), (Valeria
Bertacco), (Debapriya Chatterjee),
(Jason Clemons), (AndrewDeOrio), ( Joseph
Greathouse) (Andrea Pellegrini).
19
:
. (Jason D. Bakos) , (Bob
Brown) ,
(Andrew Chen) (), .
(J. Archer Harris) ,
(Susan Krucke) , . (A.Yavuz
Oruc) , (Frances Marsh) (Kris Schindler) . .
, . . (Byron A. Jeff) ,
. (Laura W. McFall) , .
(Taghi M. Mostafavi)
(James Nystrom) . .
(Tracy Johnson) , .
(Carole Snyder)
. (Bob Englehardt)
.
(AST) . 21- , !
, ,
. :
, .
, ,
iPad.
, (TA) ,
.
() , ,
.
,
comp@piter.com ( , ).
!
- http://www.piter.com.
1.
, ,
. , , . .
, , , :
;
, ;
.
,
. .
, .
, . ,
.
, - , .
,
.
.
. ,
. , .
, , ,
, . X, Y. - . ,
.
,
. , , . ,
21
1. , 0.
, 0. , ,
1 , ,
0.
, 1, 0.
, 0,
, 1. .
0 ,
, 1. 1 ,
0. 0. , ,
, .
. 0,
1. , 1 0, 1 ,
0 . 0 .
1 0
. .
, 1
, . , .
, ,
, 1.
1, 00. 1
, 0, ,
0, .
1, . ,
, , (-
),
. , 0, . ,
, .
, 0 1 . , 1
, 0, . , 1 -
22 1.
, ,
. .
,
, 1. ,
2, 2.
2,
2 .
1, ,
1.
, , , ,
.
, ,
.1.1. ,
, ,
.
. 1.1.
.
- , , . ,
. ,
, , .
, , ,
,
23
. , C C++, , ,
.
. , ,
.
n n
, .
. ,
, , , ;
. , 0,
. ,
1, 2,...,n,
, .
, n,
.
, ,
.
.
, n,
, . , , ,
.
( ).
, ,
.
.
(.1.2). 0 . 1. , .
.1.2, , , .
. ,
. - ,
, .
, , , .
( ),
.
(, 0 1).
, .
24 1.
. 1.2. .
,
.
1 , 0 1. , , , 16, 32 64, .
.
.
3.
.
() 8 32 , , (- ).
.
, .
: , - ( ),
- .
, . .
,
.
(
), , .
, ,
2.
25
,
. , ADD , , , , .
,
, 2.
2 .
, ,
X,
Y ..
, .
-
.
, , .
.
(,
, ).
: , ,
. 3
, 1 2.
, 3, ,
. -
. 3, 2,
, . , 3 , .
.
.
3 4 .
.
,
. , .
, .
, 4,
. 2 3 , 4, 5
( ) .
1, 2, 3 4, 5
. 1, 2 3 . ,
, , , . 4,
, .
4
. -
26 1.
1,2 3 , .
1, 2 3, .
, , .
5 , . .
. C, C++, Java,
Perl, Python PHP. , , 3 4. , ,
, . , Java ,
- Java,
.
5
, . ,
.
, ,
, .
. ,
, ,
.
,
. ,
. , ,
, . (, , )
.
, .
.
, , . ,
(1),
(0). . , ,
, , .
, .
, , ( , )
, .
27
, , - ,
; , , , , .
.
, ,
, . (Vahid, 2003).
, :
.
, ,
( ,
). (Karen Panetta): . ,
: , ,
. , ,
, , . , , X ,
Y , . .
40- :
, ,
, .
,
.
1951 (Maurice Wilkes),
, , , ,
() [Wilkes, 1951].
(),
ISA .
ISA ,
.
,
, , (
).
50- . 60-
. 70- , ,
, .
.
28 1.
, ,
.
. ,
, - , , 3 5 (
). ,
, ( ) .
80 ; .
,
.
FORTRAN,
:
1. , ,
FORTRAN,
.
2. ,
FORTRAN, .
.
3. ,
.
, .
.
4. . , ,
.
,
.
5.
.
. ,
. .
, ,
FORTRAN,
. , , .
.
, ,
, .
, ,
.
29
60- , . .
, .
.1.3
FMS (FORTRAN Monitor System) 709
IBM.
. 1.3. FMS
*JOB ( ,
). *FORTRAN
FORTRAN . , FORTRAN.
,
*DATA
.
, ( ),
. *FORTRAN
, *DATA
. ,
.
. ,
,
30 1.
.
, ( , -)
.
, . .
. . , .
.
60- ,
() ,
.
. , .
,
(, ).
( ) .
, 3, ISA, .
, , ,
ISA, .
1970, ,
, . ,
( ) . , ,
, .
,
, ,
. ,
INC (INCrement), .
ADD, ,
. INC
, ADD, .
.
:
;
;
;
;
.
31
, ,
,
. :
( );
();
, , ;
,
( );
, .
,
.
60-70- .
, .
,
, . , ,
.
, , .
,
.
, ,
.
,
. , . ,
( , , ). ,
, ,
, . ,
, .
.
. ,
.
,
, . , ,
32 1.
.
,
. 1.1.
- (1987).
,
- , (1997).
1.1.
1834
1936
Z1
1943
COLOSSUS
1944
MarkI
1946
ENIACI
1949
EDSAC
1951
WhirlwindI
1952
IAS
1960
PDP-1
DEC
- ( 50)
1961
1401
IBM
1962
7094
IBM
1960-
1963
B5000
Burroughs
1964
360
IBM
1964
6600
CDC
1965
PDP-8
DEC
- ( 50000 )
1970
PDP-11
DEC
-
70-
1974
8080
Intel
8-
33
1974
CRAY-1
Cray
1978
VAX
DEC
32-
1981
IBMPC
IBM
1981
Osborne-1
Osborne
1983
Lisa
Apple
1985
386
Intel
32-
Pentium
1985
MIPS
MIPS
RISC
1985
XC2064
Xilinx
(FPGA)
1987
SPARC
Sun
RISC
SPARC
1989
GridPad
Grid Systems
1990
RS6000
IBM
1992
Alpha
DEC
64-
1992
Simon
IBM
1993
Newton
Apple
2001
POWER4
IBM
(16421945)
, ,
(16231662), . 1642,
19, , .
.
,
(16461716) ,
. ,
.
150 ,
(17921871), , -
34 1.
. , ,
, ,
.
.
:
, -.
,
, . ,
17000 ,
, . 4 : (),
, ( ), ( ). 1000
50 ; .
,
, , . ,
.
, . .
,
, (,
) .
,
, .
, .
.
, .
,
(Ada Augusta Lovelace), .
.
Ada.
, ,
. ,
, 19 .
,
. ,
.
30- (Konrad Zuse) .
, . ,
1944, -
35
.
.
: ( John Atanasoff)
Bell Labs.
. , , .
() . , . -
: ,
.
(George Stibbitz) ,
, .
1940. ( John Mauchley), .
.
, , (Howard Aiken)
.
. ,
, .
MarkI
1944. 72 23 , 6 . -
. ,
MarkII, .
.
(19451955)
.
.
, ,
, ENIGMA, .
ENIGMA , ,
, .
, , .
COLOSSUS.
. COLOSSUS 1943 ,
-
36 1.
30 , COLOSSUS
. , .
COLOSSUS,
.
, .
(, ,
). ,
.
, , , . .
1943 , .
( J. Presper Eckert) ,
ENIAC (Electronic Numerical Integrator and Computer
). ENIAC 18000
1500 , 30 140
. 20 , 10- . (
, -
, - , .) ENIAC 6000
, .
1946 , , .
, ,
-.
.
.
EDSAC (1949 ).
. JOHNNIAC Rand, ILLIAC , MANIAC - WEIZAC
.
EDVAC (Electronic
Discrete Variable Computer ). , , ,
(
). Unisys
Corporation.
. , ,
. , ,
37
, ,
.
EDVAC,
ENIAC, ,
, EDVAC
IAS (Immediate Address Storage ).
, .
, , : , - , .
,
. ,
.
,
,
. ,
, . ,
, ENIAC,
(1 9 ),
.
.
, ,
- . EDSAC,
, , , .
IAS, (Herman
Goldstine), , .
, , , .
.1.4.
. 1.4. -
: , , , -.
4096 , 40 (0 1).
38 1.
2 20 , 40- 40 . 8 , 12
4096 .
.
, ().
-
40 , .
. ,
,
.
, IAS, WhirlwindI.
IAS, ENIAC , , Whirlwind I
16 .
( Jay Forrester) , -.
IBM ,
. IBM
,
1953 701, , UNIVAC
. 701 2048 36 ,
. ,
.
704, 4096 , 36 . 1958 IBM
, 709,
704.
(19551965)
Bell Laboratories
( John Bardeen), (Walter Brattain)
(William Shockley), 1956 .
, 50-
.
. 16 , WhirlwindI.
TX-0 (Transistorized eXperimental computer0 0)
TX-2.
TX-2 ,
, (Kenneth Olsen), 1957
DEC (Digital Equipment Corporation
) , TX-0. ,
39
PDP-1, , ,
DEC, , .
, . . , IBM, ,
. DEC .
PDP-1 1961 . 4096 18
200000 . , 7090, 709
. PDP-1 120000 , 7090 . DEC PDP-1,
.
PDP-1 , , .
PDP-1 512512 ,
. PDP-1,
.
DEC PDP-8, 12- . PDP-8 , PDP-1 (16000).
(omnibus), .1.5.
, . PDP-8 IAS.
.
DEC 50000 PDP-8
-.
. 1.5. PDP-8
, IBM
709 7090, 7094.
2 , 32536 36 . 7090
7094 ENIAC,
60- .
IBM 1401 .
, 7094, .
, .
1401 ,
. 4000 8 (
16000).
40 1.
6 , . MOVE, , : . ,
, 1.
1964 , CDC (Control Data
Corporation) 6600,
, 7094 ( ).
, CDC
. ,
( )
. ,
, .
,
, 10 .
6600 .
, ,
( ,
) . , 6600
.
6600.
6600 (Seymour Cray)
, .
, .
6600, 7600 Cray-1.
: ,
, , , :
.
( )
( ).
BurroughsB5000.
PDP-1, 7094 6600 , (DEC) (IBM CDC).
. B5000
. Algol60 ( C Java),
, .
,
. , .
(19651980)
1958 (Jack
Kilby) (Robert Noyce)
.
, ,
.
41
30
40
50 65
- 1
3,5
10
21
1000
625
500
250
65536
262144
262144
524288
16
360 .
,
, -, .
.
360 ,
() .
1401, 7094,
360.
42 1.
(1980?)
() 80-
, , ,
.
. PDP-1
,
( ). 80-
43
, , . .
,
. , ,
(, ), .
.
, ,
Intel8080, , 8-
. .
. .
CP/M, (Gary Kildall) Intel8080.
( ), ,
.
, Apple ( AppleII), (Steve Jobs) (Steve Wozniak).
, Apple
.
, , IBM, ,
.
IBM ( IBM, IBM), , : ,
(Philip Estridge), ,
- , (.-). ,
2000 ,
Intel8088 .
(IBM PC) 1981 . 30- PC ,
[Bradley, 2011], [Goth, 2011], [Bride, 2011]
[Singh, 2011].
IBM , . (
, ),
, ,
, 49. ,
IBMPC,
.
IBM, IBMPC ,
PC , IBM (
).
.
44 1.
45
, , , .
RISC, CISC 2, .
1980- (Ross Freeman) Xilinx ,
.
, (FPGA, Field-Programmable Gate Array),
,
, .
FPGA
. FPGA
, . ,
-
, . FPGA
, , .
1992 8-, 16- 32-. 64- Alpha
DEC RISC-, . , 64- ,
.
1990-
, . ,
,
. 1990-
- : , . ,
,
. 2001 IBM POWER4 ,
.
. ,
, ( )
,
.
46 1.
1981 500
,
. ,
,
.
,
. - ,
,
.
, , ,
,
. 1989 Grid Systems
, GridPad.
, . ,
GridPad, ,
,
.
Apple Newton, 1993 , , . GridPad,
Newton ,
.
,
(Personal Digital Assistants, PDA), , .
.
PDA
( Jeff Hawkins), Palm
, .
-,
( ). ,
,
,
Graffiti, ,
.
Palm Palm Pilot , Graffiti,
,
.
PDA ,
. 1990-
47
. IBM
PDA, . ,
Simon, , PDA, ,
.
.
Apple iPhone Google Android.
-
. , , , [Bechini et al., 2004].
.
,
( 1970- ), . ,
.
, .
,
[Henkel et al., 2003],
.
,
(, ENIAC), (IBM7094),
(IBM360), ( Intel).
, ,
.
.
,
, .
, (Mark Weiser)
, ,
[Weiser, 2002].
, .
, , [Lyytinen and Yoo, 2002; Saha and Mukherjee, 2003; Sakamura,
2002].
.
. ,
, .
48 1.
.
.
( ), . (Gordon Moore),
Intel,
, ,
, 500 20
20 . ,
.
,
. , ,
.
4 , , ,
,
, .
, ,
18 ,
60% . ,
(.1.6).
. 1.6. ,
60% .
, , , -
, ,
. ,
49
, , . ,
,
, - [Bose,
2004; Kim et al., 2003]. ,
, .
,
. ,
,
[Oskin et al., 2002] [Heinze et al., 2002].
, , .
,
. ( )
. ( ,
10 $120000,
).
.
, , ,
. .
, (Nathan
Myhrvold), Microsoft. :
. , . 80-
troff ( troff ). troff
.
. , , ( ,
, , ; . ).
,
, , - .
, . , IBM PC/XT, 1982 , 10. -
PC/XT 1.
50%.
, ,
, , (
, , ..),
, 1982 /-
50 1.
50% .
, ,
, , , (Al
Hoagland) ,
( ). , ,
- .
. , 300/, ,
56/, - ,
1012/. -
(, TAT-12/13) 700 , 10
300000 , 10- .
, , 1/ (1012/) 100 .
.
(Richard Hamming), Bell Laboratories,
, . , , 1000/ ,
, 100/ .
100 .
,
10, 1000000 .
, ,
: .
,
. .1.3.
, .
,
Happy Birthday, - .
, , , ,
51
1.3. .
0,5
(
)
, ,
50
500
5000
5000000
. ,
,
, .
, . , RFID
(Radio Frequency Identification ). 0,5
; , 128- .
,
.
,
.
- .
, RFID ( -).
, ,
, . ,
,
. , ,
/ .
.
/ RFID , .
,
!
, -,
, 128- RFID -
52 1.
. , RFID. ,
,
,
RFID, , .
.
, ,
.
, !
RFID, .
. ,
. , , , !
, ,
. , , , RFID.
( )
RFID . ,
,
. , ,
.
.
RFID .
RFID . ()
, ,
. , ,
RFID,
. RFID , ,
.. ,
, ,
.
RFID .
.
, .
, , ,
, , -
53
.
, ,
,
. , ,
? ,
RFID,
.
RFID . (
), . RFID ,
, , .
, , -,
.
/ RFID .
. ,
, , . , ,
,
. RFID
, ,
. www.rfid.org.
,
. , , . ,
, ( ):
(, , , , );
( , , );
(, , , CDROM);
(, DVD-, , MP3-, );
(, , , , );
( , ,
, );
( ,
, );
54 1.
( , );
( , ,
).
, ,
, , ,
.
200 ! ,
. ,
, .
( ) .
RFID, , ,
.
, -. -, ,
, .
. : .
, .
,
, , .
4-, 8-, 16- 32-.
, ,
, , ,
. -,
.
, ,
( ) , . ,
, , .
, , ;
, 8-
10 . 10 .
-, .
. ,
,
.
.
55
-, , , .
, .
Arduino,
(Massimo Banzi) (David Cuartielles) ().
, ,
. ( .) ; Arduino 20 !
Arduino ; ,
,
( ) Arduino. 8- RISC- Atmel AVR,
-.
Wiring,
.
Arduino -
. , Arduino
, ,
, . Arduino
Arduino, www.arduino.cc.
. , ,
.
-, . ,
,
.
, , .
Sony PlayStation3. 3,2 ( Cell) RISC-
IBM PowerPC, 128- SPE (Synergistic Processing
Elements). PlayStation 3 512 ,
Nvidia 550 Blu-ray. Microsoft Xbox 360 IBM PowerPC
3,2 512 , ATI
56 1.
500 , DVD- .
Samsung Galaxy .
ARM- 1 , ( Nvidia Tegra2),
1 , , 3- -.
,
, , . ,
, , 128- SPE
PlayStation3 ( ).
, , , , , .
, USB FireWire. ,
.
. ,
, ,
( ) , .
, ,
, .
:
.
, .
,
(, )
, ,
.
. . : ().
,
, , CD-ROM/DVD/Blu-ray, , , .
, ,
.
, , ( , ..), , , , ,
. .1.7.
57
. 1.7.
. Intel DQ67SW
( Intel)
, ,
. , , .
. , ,
,
.
(, ,
iPad). PC ,
, , x86.
-.
(
), . , , .
,
.
.
, . ,
,
. , , ,
UNIX Windows.
58 1.
, /
,
.
, , ( ,
).
,
. , , ,
.
,
.
, .
. ,
.
, ,
.
-.
- ,
( ) . , Google
;
( ) .
- , , 2- ,
.
Google 1000000 .
, - . 1960- -
(. ), .
. . 1980-
. ,
.
2.0.
,
: PC, , , , , ( ),
, , .
59
, .
, : ,
- .
, ? , 10 , , ()
. : ,
.
,
60- . 360.
, ,
- , .
, -
, ,
. , ,
.
2000 .
- , 60- 70- ,
COBOL, . ,
. ,
, ,
, ,
. ,
31 9999 ,
, 8000 COBOL.
, 40 ,
.
,
, ,
, .
. , , .
, , , , , . ,
60 1.
, , ,
, .
(ISA): x86, ARM AVR. x86 (PC Windows Linux, Mac)
.
, , , . -. ARM
ARM. , AVR , .
, ,
, , ,
,
50. ,
.
x86
1968 (Robert Noyce),
, (Gordon Moore), ,
(Arthur Rock), -,
Intel . 3000,
( Intel
).
60- 20.
1969 Busicom Intel
12
. Intel (Ted Hoff ),
, , 4- ,
. 1970
4004 2300 [Faggin et al., 1996].
, Intel, Busicom , .
Intel , 4004 ,
Busicom 60000, , Busicom Intel
. Busicom Intel,
Intel 8- , 8008, -
61
4004
4/1971
0,108
2300
640
8008
4/1972
0,08
3500
16 8-
8080
4/1974
6000
64
8086
6/1978
510
29000
16-
8088
6/1979
58
29000
IBMPC
80286
2/1982
812
134000
16
80386
10/1985
1633
275000
32-
80486
4/1989
25100
1200000
- 8
Pentium
3/1993
60223
3100000
,
MMX
PentiumPro 3/1995
150200
5500000
41
PentiumII
5/1997
233400
7500000
PentiumPro MMX
PentiumIII
2/1999
6501400
9500000
SSE,
Pentium4
11/2000
13003800 42000000
, SSE-
Core Duo
1/2006
16003200 152000000
Core
7/2006
12003200 410000000
64
64- 4-
Core i7
1/2011
11003300 1160000000 24
62 1.
8008,
. ,
, Intel
, 16 (
8008), , . 8080,
1974. PDP-8,
. : DEC
PDP-8, Intel 8080.
1978 8086, 16-
. 8086 8080, . 8088 ,
8086. , 8086, 16-
8-, - ,
, 80861. IBM 8088 IBMPC,
.
8088, 8086 1. 80- , Intel 80286, 8086.
, 8086 8088,
-
-. 80286
IBMPC/AT PS/2. , 8088,
( ,
8088).
32- 80386, 1985
. 80286, .
,
, , ,
.
80486. , 80386,
-
8. -
()
. 80486
, .
Intel, , , (, 80486)
, Pentium ( ). 1
, ,
8088, ,
8086. 8- , 8088 . . . .
63
80486, , Pentium
, (
2).
Pentium ,
MMX (MultiMedia eXtension
). , ,
.
, ,
Sexium (sex ), .
Pentium , , PentiumPro. , .
.
Pentium Pro -.
8
8 . PentiumPro ( ) -
256.
- Pentium Pro MMX- ( Intel , ).
MMX- , PentiumII.
SSE
(Streaming SIMD Extensions SIMD-)
PentiumIII [Raman et al., 2000]. , PentiumII.
Pentium .
. Pentium4.
. 3,06
(hyperthreading).
,
; ,
. , SSE-.
2006 Intel Pentium Core Core 2 duo.
, Intel
Core 2 duo ,
. Core ; i3, i5 i7 -, - .
64 1.
, . i7
.1.8. ,
, Xeon, . ,
(-).
1 2 , 3 (L3),
. .
, , Intel .
1998 Celeron.
, Pentium 2 . Celeron
, Pentium2, .
1998 Intel Pentium2
Xeon. -
,
,
Pentium2,
. PentiumIII,
, Xeon.
Xeon .
2003 PentiumM ( M
Mobile) .
Centrino, , -, , , -,
65
, -,
IEEE 802.11 (WiFi). Pentium M
Pentium 4; , ( )
Pentium 4 Intel.
Intel 8086. , ,
- 8086, Pentium4 .
Intel
.
, Pentium4 , 8086,
. - , , , Pentium4
42 .
,
, .
(..1.4), ,
. .1.9.
10G
1G
Pentium III
100M
10M
1M
80286
100K
10K
4004
1K
8080
80386
8086
Core 2
Core Duo
Pentium 4
Core i7
Pentium II
Pentium
80486
Pentium
Pro
8008
8008
100
10
1
1970
1975
1980
1985
1990
1995
2000
2005
2010
. 1.9.
, , , .
, , , .
66 1.
, , , ,
, . Pentium4
3,6 115. ,
100. , .
2004 Intel
Pentium4 4 - .
, , , , . ,
, ,
. , ,
, ,
Intel . Intel
. ,
, ,
. ,
.
,
,
,
,
,
.
ARM
1980- Acorn Computer 8- BBC Micro
, IBM PC.
BBC Micro 8- 6502,
(Steve Furber) Acorn , 6502
16- IBM PC 8086. , , .
Berkeley RISC, (
SPARC),
. Acorn RISC Machine ( ARM , ARM Acorn,
Advanced RISC Machine). 1985 .
32- , 26-
VLSI Technology.
ARM ( ARM2)
Acorn Archimedes.
, 2 MIPS ( )
67
899 . , , ,
.
Archimedes, Apple Acorn
ARM Apple Newton.
, ARM Acorn
, Advanced RISC Machines (ARM).
ARM 610 Apple Newton 1993 . ARM,
4- , .
Apple Newton , ARM 610 ; ,
Acorn RISC PC.
1990- ARM Digital Equipment
Corporation ARM ,
PDA. StrongARM,
- (233 ) (1 ). , , 16- . StrongARM
DEC .
PDA, , .
, ARM ARM7, ARM 1994
. ,
16- Thumb 32- ARM, 16- ,
.
- , ,
Nintendo Gameboy Advance.
, ARM . ,
. , Samsung Galaxy Tab
Android ARM. Galaxy Tab Tegra 2, ARM Cortex-A9
Nvidia GeForce. Tegra 2
ARM, Nvidia TSMC
(Taiwan Semiconductor Manufacturing Company).
,
.
. 1.10
Nvidia Tegra 2. ARM: ARM Cortex
1,2 ARM7. Cortex-A9
68 1.
, 1- L2 . (
, .
, !)
ARM7 ARM-,
. 333- (GPU) GeForce, . Tegra 2 /
, HDMI.
ARM
, . 2011
ARM , ARM 15 . ARM , ,
. , 2011
64- ARM-. 2011
Nvidia Denver ARM
. 64- ARM-
(GPGPU, General-Purpose GPU).
.
69
AVR
( x86, ) (
ARM, PDA ). AVR
. AVR 1996 ,
- (Alf-Egil Bogen) (Vegard Wollan) 8- RISC-, AVR. ,
, RISC- ((A)lf and
(V)egards(R)ISC processor).
Atmel , AVR.
AVR AT90S1200 Atmel 1997 .
, Intel
8051 .
AVR ,
Arduino.
AVR , .1.5. tinyAVR
,
. 8- , - (,
). tinyAVR ,
:
,
. megaAVR,
Arduino,
-, .
AVR XMEGA, USB.
1.5. Intel.
(1=1 /)
EEPROM
tinyAVR
0,516
0512
32512
,
-,
632
megaAVR 8256
0,54 0,258
28100
,
AVR
XMEGA
14
44100 ,
- USB
16256
216
70 1.
,
AVR .
: -, (EEPROM, Electrically Erasable Programmable Read Only
Memory) (RAM, Random Access Memory). -
; . -
,
. EEPROM , - .
, (12- 24-).
,
. .
2.
:
, ( ,
), .
,
-. ,
,
Atmel megaAVR-168:
1. ( 8- 16-).
2. .
3. - , , ,
.
4. - ,
.
5. /.
6. I2C .
7. , .
8. , .
9. ,
.
10.
.
, ,
, -
71
.
.1.6. ,
1 (, ..). , 1 / 106 , 100- 1010 .
1.6.
103
0,000001
106
0,000000001
109
0,000000000001
1012
0,000000000000001
1015
0,000000000000000001
1018
0,000000000000000000001
1021
0,000000000000000000000001
1024
0,000000000000000000000000001
103
1000
106
1000000
109
1000000000
1012
1000000000000
1015
1000000000000000
1018
1000000000000000000
1021
1000000000000000000000
1024
1000000000000000000000000
, , ,
. ,
103 (1000), 210 (1024). , 2. , 1 210 (1024)
, 1 220 (1048576) , 1 230 (1073741824) ,
1 240 (1099511627776) .
, 1/
1000 , 10/ 10000000 .
, , . , ,
.
, : 210 , 220 , 230
240 . . , ,
, , 210, 220, 230
72 1.
240 , /, /, / /
103, 106, 109 1012/.
(, ).
, , . , ,
( ),
, , ,
. , .
. ,
, .
, , , , x86, ARM
AVR. . -,
, . , ,
. , ,
, ,
, . ,
, .
, ,
x86, ARM AVR. , . , ,
.
2 : , , -.
, .
36 , .1.2.
, . k
k1, , ,
, .
, .
73
3 ,
. ,
. , . , ,
, PCI.
,
.
4 .
, , . .
5 (ISA),
. ,
, .
6 , ,
. : Windows (
x86) UNIX, x86 ARM.
7 . ,
. .
8 , .
, .
, ,
.
9 , .
C - www.
prenhall.com/tanenbaum.
1. :
1) ;
2) ;
3) .
2.
, ?
.
3. ,
? , .
4. ,
. m
74 1.
, r , m r 1.
k , 2, 3 4, , r+ 1 n r?
5.
. , .
, , .
6. 1, 2
3. ,
n . 1
k . 2,
3 4?
7. ?
?
8.
. -? .
9. . , (:
).
10. 75- 360 50 , 30,
5 . , .
11. .1.4 1.5 . ,
- .
?
12. , 300
, RFID.
,
? , ?
,
?
13. ,
.
14.
.
?
15. , ,
( ) . ,
, 4 ,
, 3 ,
75
15 , 6 . ,
5
, 3 .
16. 1959 IBM 7090 500000 , 32768 36- , 3 .
, . ,
. 707
1959 . 950 /,
180 4000000 .
, ,
, ?
, .
17. .
,
, RISC-,
. . ,
.
18. , ,
1973 ,
Sperry Rand Corporation, ENIAC,
. Sperry Rand ,
, .
1971 ;
30000 .
20000 . ,
,
,
. ,
?
19. , , ,
; ,
.
20. .
21. , , , -,
. , .
2.
, -. 2
, .
. , - , ,
.
.2.1 .
. , .
, , .
, , .
( -)
. .
. 2.1.
-
77
.
. -
(, ) (, ).
. , . .
,
.
, .
, ,
. ,
, 1.
,
. ,
, - .
.
-
.2.2. ( 1 32),
- () .
, .2.2
A B. ,
. , .
, .
, .
A, B . .2.2 ,
.
: -. ,
,
( , 2). . . .
,
, - 1
. . . .
78 2.
. 2.2. -
. . -
, .
,
. ,
.
.
:
1. .
2. , 1.
3. .
4. , , .
5. , , 2.
1
, . .
. .
, ,
. . . .
79
6. .
7. 1, .
( )
.
. 2.1 - Java.
: (PC)
(AC), . , ,
(instr), (instr_type), (data_loc) (data).
. ,
, .
2.1. ( Java)
public class Interp{
static int PC;
static int AC;
static int instr;
static int instr_type;
static int data_loc;
static int data;
static boolean run_bit
// PC
// ,
//
// ( )
// 1,
//
= true; // , ,
//
public static void interpret(int memory[], int starting_address{
// ,
//
// . ().
// - ,
// ADD .
// ,
// HALT, run_bit
// false. , ,
// run bit AC.
// .
PC=starting_address;
while (run_bit) {
instr=memory[PC]; // instr
PC=PC+1;
//
instr_type=get_instr_type(instr);
//
data_loc=find_data(instr, instr_type); // (1,
// )
if(data_loc>=0)
// data_loc=1, ,
data=memory[data_loc];
//
execute(instr_type,data);
//
}
}
private static int get_instr_type(int addr) {...}
private static int find_data(int instr, int type) {...}
private static void execute(int type, int data) {...}
}
80 2.
, , , , (). , ,
.
.
1.
. ()
, , ,
,
. ,
. ,
, .
(). , ,
, ,
.
. ,
(), ,
.
, . ,
, .
, ,
. (
, ..)
, , , .
,
. ,
.
. ,
, .
,
,
, .
50- IBM, , , , , , . , IBM
.
, ,
81
.
, ,
?
. , 1951 , , , , .
IBM System/360, ,
. , ,
.
.
:
;
, ;
( ) ,
.
70- ,
.
.
. , ,
.
, 70- ,
- .
70-
, (, Cray-1 Control Data Cyber). , ,
( ) .
VAX,
DEC; 200 . , VAX
,
.
, .
VAX, ( DEC).
Compaq DEC 1998 (,
Compaq Hewlett-Packard).
8-
, 70-
82 2.
. .
, ,
. , .
Motorola68000 ZilogZ8000,
, ,
.
, , Z80 (
ZilogZ8000) , Motorola6800 ( Motorola68000). ,
, Motorola , Zilog Exxon
.
(
). ,
Motorola68000
10 ( ), 100 ,
, 500 .
, , 2000
,
. ,
6000 .
.
RISC CISC
70- , .
,
, , .
- ,
( )
, , - ..
IBM
( John Cocke);
, - 801.
IBM , [Radin, 1982],
,
.
1980
(David Patterson) (Carlo Squin) -
83
VLSI [Patterson,
1985; Patterson and Squin, 1982].
RISC, RISCI,
RISCII. , 1981 , ( John Hennesy)
,
MIPS [Hennessy, 1984].
SPARC MIPS .
. ,
,
.
, .
, , .
, , ,
.
, ( 50).
: VAX DEC
IBM 200 300.
RISC (Reduced Instruction Set Computer
) CISC (Complex Instruction Set Computer
)
VAX, .
, ,
.
RISC (VAX, Intel, IBM).
, ,
(. .2.2), -
(,
) .
, RISC 4 5
, CISC, RISC
, RISC- 10 (
). ,
, ,
RISC.
RISC ,
, , UltraSPARC Sun,
CISC (Intel Pentium ..).
. ?
-, RISC ,
Intel. -, , Intel
84 2.
,
RISC,
,
. (,
10 ,
), .
,
.
, RISC,
. - , , ,
, .
. , . . CISC
,
.
,
.
.
,
. , 500 ,
500 MIPS, .
(MIPS Millions of Instructions Per Second
.) ,
,
, .
, ( ) () . ,
85
1 , 2
, , 2
, .
,
,
.
.
.
, . ,
, . ,
.
, .
.
,
. .
, ,
,
.
(LOAD STORE).
.
, (
32). ,
, .
.
.
, .
, ,
.
( ).
:
.
.
.
.
, .
86 2.
, .
. 1959 Stretch IBM,
. , ,
, .
: , .
. ,
,
, .
. 2.3, 5 , . (1) , , . (2)
, .
(3)
. (4) , (. .2.2). , 5
.
. 2.3. ();
(). 9
. 2.3, , . 1 1 1, . 2
2 1, 1 2. 3 3 1, 2
2, 1 3. 4 4
87
1, 3 2, 2
3, 1 4. , 5 5 1 ,
.
,
. ,
. , , 5
( ). 10 ( )
.
, .
, .
, . ,
. : ( )
.
.2.3. , 2. ,
, 10. ,
100 ,
. (2)
, 100, 500
!
( )
( , ). T, n ,
nT.
,
109/T, 109/T. , T= 2, 500
. MIPS,
; , (109/T)/106= 1000/T
MIPS. , (Billion Instructions Per Second, BIPS),
, .
, . .2.4. , .2.3.
.
. , - (,
) . ,
88 2.
(, ,
),
.
. 2.4.
( , )
RISC-. 386 .
Intel ,
4861. 486 , Pentium . .2.4,
( 1 2)
. (u-)
. (v-)
, (FXCH).
. , ,
, ( u-).
. . Pentium
,
, . ,
, ,
Pentium , 486 [Pountain,
1993]. .
,
(, , , ). .
, .2.5. Intel Core, , (
4). 1987
[Agerwala and Cocke, 1987]. 40 CDC6600.
100
10 .
, .
1
,
(386). 5-
486. . . .
89
. 2.5.
.
, ( ) . ,
. ,
, , .2.5.
6600
.
, .
, 100, ,
400, , .
;
.
, 3 , 4 . 3
10 ,
10 , 4
, .
4 (,
)
, .
.2.5, 4 .
90 2.
, ,
. , ,
,
. ,
,
- - 20/,
, Intel. ,
, 1, .
,
510 . 50, 100 ,
.
.
, . .
,
,
. : SIMD- .
, ,
,
.
.
. ( )
, 1 (4047 ). , , .
. , , .
,
.
,
1
. , . ,
, , ,
, . . . .
91
,
.
SIMD- (Single Instruction-stream Multiple Data-stream
)
, .
ILLIACIV ( ) [Bouknight et al., 1972].
, ,
88 /
. .
, ,
. ,
50 . , 1
,
.
(GPU) SIMD .
SIMD-,
, , .
. 2.6 SIMD- Nvidia Fermi.
16 (SM, Stream Multiprocessor)
SIMD, 32 SIMD.
SIMD.
SIMD ( 16,
). 16
, Fermi 32 SM
512 . , ,
1/32 .
(vector processor)
SIMD-.
.
SIMD-, , . CrayResearch,
, , Cray-1 (1974).
.
, , ,
. SIMD- ,
, ,
.
, .
,
92 2.
. ,
, . SSE (Streaming
SIMD Extension) IntelCore
,
.
ILLIACIV Intel Core.
, , , . , ,
93
.
,
- , . ,
, , (tightly coupled).
.
.
.2.7,.
. 2.7. ();
()
, ,
,
. , .
.2.7,.
, .
, . , ,
, .
(, . ).
, .
, , .
, -
.
, , , .
(256)
,
. , .
94 2.
, ,
. .
,
.
(-
, ). , - , .
, .
, 250000 ,
Blue Gene/P IBM.
, , ,
.
, .
8.
, . . ,
, .
, . 0 1.
. (, ,
, , .)
,
. ( ), - , . ,
.
, ,
.
, .
, , IBM, , .
- .
4 . 4 16
10 ( 0 9). 6 -
95
. 1944 - ( 16 ):
- 0001 1001 0100 0100;
0000011110011000.
- 16
0 9999, 10000 ,
16 65536 .
, .
, , - ,
0 9, 0 10
10. 0
9999, 10000 .
, 16 .
, .
,
. , .
. n , 0 n 1.
. k,
2k . .2.8 3 96- . ,
.
. 2.8. 96-
96 2.
, ( ),
. m ,
2m. , , .2.8,,
4 , 0 11. , .2.8, 2.8,, 3- .
. 12- 212 8
, 212 64 .
.2.1
.
2.1.
BurroughsB1700
IBMPC
DECPDP-8
12
IBM1130
16
DECPDP-15
18
XDS940
24
ElectrologicaX8
27
XDSSigma9
32
Honeywell6180
36
CDC3600
48
CDCCyber
60
. 8- ,
( ).
. 32-
4, 64- 8.
, , ,
(, ). , 32- 32-
32- , 64-
64- , ,
64- .
.
, ,
97
. 2.9. ();
()
98 2.
. 2.10.
(); ();
();
( )
, 0 19. , . ,
0 0 ..,
.2.10,.
, , , 21 224, . , ,
, ,
.
,
.
.2.11,. , ,
MIJTIMS, H
. ,
0 (), 1 (M)..
. , .
( , , , ..
- .)
, .
-
. , .
.
, ,
.
99
, , ,
. , m
, r ( ).
n ( n= m+ r). n ,
m r ,
.
, 10001001 10110001, , .
. ,
1 .
, ,
[Hamming, 1950]. d,
, d ,
. , 11110001 00110000
3,
.
m- , , 2m . n , -
2m 2n .
, ,
. ,
.
.
. d d+ 1, d
. ,
d 2d+ 1,
, d ,
, ,
.
,
. , 1
( ). 2,
. ,
.
. , .
, .
: 0000000000, 0000011111, 1111100000
1111111111.
100 2.
5. , . 0000000111,
, 0000011111 (
). (, 0000000000
0000000111) .
, m r
, . 2m
n ,
. n
n- . , 2m
n+ 1 , (n ).
2n, (n+ 1)2m 2n. n= m+ r,
(m+r+ 1) 2r. ,
. .2.2 .
2.2. ,
12
50
16
21
31
32
38
19
64
71
11
128
136
256
265
512
10
522
,
(1950). ,
,
4- .
.2.11 3, A, B C, .
4 1100 AB, ABC,
AC BC, ( ).
.2.11,.
,
, A, B, C, , .2.11,. 4 : 0, 0, 1 1,
2. B 1, 1, 0 0,
2. C.
, ,
0 4. , 4
3 .
101
, AC 0 1,
.2.11,. , A C .
, , 0 AC.
.
, .
, m , r ,
m+ r . ( ),
. , ,
; . ,
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, 11, 12, 13, 14, 15;
16 16, 17, 18, 19, 20, 21.
b b1, b2,...,bj, b1+ b2+
+ ...+ bj= b. , 5 1 4, 1+ 4 = 5.
6 2 4, 2+ 4= 6 ..
2.12 16-
1111000010101110. 21-
001011100000101101110. ,
, , , 5 (, - ).
001011100000101101110 001001100000101101110.
5 . .
102 2.
);
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.
.
. 2.12. 1111000010101110
, .
, ( , ).
, . ,
, . ,
1 4 , 2, 8 16 ,
5 (1+ 4).
-
, . , .
, ,
.
103
, ,
.
, ,
, .
, , .
, .
, -
, , .
, . ,
5 ,
.
50, 11 (5 + 50
).
, , , -
, . .
, ,
, . ,
, .
, .
, , , .
(
). , , . , ,
. ,
. (, , .)
, ,
,
, .
- (
cacher 1; ).
, - .
4.
- : ,
. - ,
1
cash () , ,
. ,
. . . .
104 2.
-. , , . -,
.
, ,
-. , .
, , .
( ) . ,
,
. ,
, ,
- .
, , .
-. ,
, -, .
, - .2.13.
k ,
k 1
-. k, .
. 2.13. -
.
-
. c -, m h
- (hit ratio),
.
h= (k 1)/k. - (miss
ratio), 1 h.
, :
= c + (1 h)m.
h 1, -,
c. , h 0,
, c+ m:
c - ( ),
105
m .
-, -
.
-, .
-
. -
(cache lines). - -
, . ,
64 , 260 ( 256 319) ,
.
, , k , k .
, ,
, , . , ( 32-)
64128 .
- .
. -. , , . . - 16
1024 16, 2048 8 ..
-, , ,
. - 4.
-. - (unified
cache), , .
.
- (split cache),
-, . (Harvard architecture),
MarcIII,
(Howard Aiken) .
, ,
, ()
. - , . ,
,
.
, -. -
, - ,
, - .
106 2.
90-
, . 1 1
. ,
.
. (
8 16)
. SIMM (Single Inline Memory Module
) DIMM (Dual Inline Memory
Module ).
SIMM 72 ;
32 . DIMM,
, (
) 120 ; ,
240, 64 .
DDR3 DIMM . DIMM .2.14.
DIMM 8 256 .
, 2 .
; ,
2 8
( ).
DIMM
, SO-DIMM (Small Outline DIMM). SIMM
DIMM , ,
10 ,
.
, .
, ,
.
, . , -
107
,
( $299,95).
1 1 . ,
50 1014 100 .
(50000)
.
( , ).
(.2.15). . .
-, 32 . ,
1 .
.
.
. 2.15.
. , .
, - , . : 10
.
(
).
108 2.
-, . 128, - , ,
.
,
.
, ,
. 1, ,
.
, - .
, .
, ;
.
2,
. 50,
3 9, 3,
. , ,
, .
,
. .
, ( )
, .
, , . .2.16.
,
.
. 512 . (preamble),
. (ErrorCorrecting Code, ECC),
, ,
.
. ( ),
,
, ECC- .
15% .
1
, , .
. 10 . . . .
IBM . . . .
109
. 2.16. ( )
,
, .
. ,
, .
. 50000
, 200
(1= 1/1000000). , , ,
.
. , , ,
.
.
25 .
. ,
, .
,
, . ; ,
100/. ,
.
,
. .
, IBM, 30
110 2.
30 . ,
30301. ,
- , . , 30 .
, , .2.17.
. , . , , .
1 12 ,
12 24 .
1 , .
. 2.17.
.
, .
.
5 10, 1. ,
( ),
.
5400, 7200 10800 . ,
( ) 3 6.
.
150 (512) 3,5 . ,
. ,
.
, - , ECC-,
, - ,
1
30- . . .
111
, ,
. , .
.
(, )
.
,
c= 2r ,
, .
, ,
.
,
.
, , 18 ,
20, , .
.
( 10 30).
.
, ,
. .
.2.18.
. 2.18. .
, . .
112 2.
,
READ, WRITE FORMAT ( ),
, , , , , .
, .
,
, .
, ,
.
IDE-
IBMPCXT. Seagate 10,
Xebec . 4 , 306
17 . .
.
BIOS (Basic Input Output System -), . BIOS
, .
,
80- IDE (Integrated Drive Electronics ) 1. BIOS ,
.
, , 0, 1. , -
BIOS, 8088.
4 , 6 10 ,
16 , 63 1024 ,
1032192 . 504,
(
, 1000?).
504, (4 , 32 , 2000 ).
- , BIOS
( ). ,
BIOS,
. , ,
.
1
, , . . .
. .
113
114 2.
SCSI-
SCSI- ,
IDE-, . 1979
(Hovard Shugart) SASI (Shugart
Associates System Interface). 1986 ANCI
SCSI (Small Computer System Interface
). SCSI . ,
, Fast SCSI (10), Ultra SCSI
(20), Ultra2 SCSI (40), Ultra3 SCSI (80) Ultra4 SCSI (160).
16- . ,
16- .
.2.3.
2.3. SCSI
,
/
SCSI-1
Fast SCSI
10
10
16
10
20
Ultra SCSI
20
20
16
20
40
Ultra2 SCSI
40
40
16
40
80
16
80
160
16
160
320
16
320
640
SCSI- , ,
RAID (. ).
SCSI . ,
SCSI- .
SCSI-, CD-ROM,
, .
0 7 ( 15
16- ). : ,
.
. . , .
,
.
115
8- SCSI- 50 ,
25 () 25 ,
, . 25 8 , 1 ,
9 , .
16- 32-
. ,
( ..).
SCSI- SCSI-
. , , , ,
, . 16, , .
,
, , .
, SCSI
, ,
. IDE EIDE
.
RAID-
,
1,5 . . 70- -
50 100 .
10. (,
) 5
10 , . , .
, ,
. ,
, - .
1988 6 , , [Patterson et al., 1988].
, - RAID.
RAID Redundant Array of Inexpensive Disks
( ), I
Inexpensive () Independent ()
(, ?)
RAID- SLED (Single Large Expensive Disk
).
116 2.
RAID . (
) , RAID-, RAID-, . ,
RAID SLED, RAID- . SCSI-
( 7 8- SCSI 15 16-),
RAID- SCSI-,
RAID-, SCSI-,
. , RAID-, ,
.
RAID- . -, ,
RAID- .
-, RAID-
, .
, ,
RAID- 0, RAID- 1 ..,
RAID- 5. , ,
. ,
. 6
.
RAID- 0 .2.19,. , (strips) k ,
0 k 1 0, k 2k 1 1 ..
k= 1 , k= 2
.. RAID- 0 ,
.2.19,. (striping)
. RAID- . ,
,
, RAID- 4
, , .
, - .
RAID- 0
, . ,
RAID-, ,
,
. ,
, , .
, .
RAID- 0 , (
117
. 2.19. RAID- .
118 2.
). , , ,
, , . ,
, SLED-. , RAID-,
,
20000 . RAID- 5000 , .
SLED- 20000 ,
, 4 . , RAID-.
RAID- 1.
.2.19, , RAID- 0, RAID. , ,
4 4 . .
,
, RAID- 0. ,
, , ( ). :
, .
.
0 1, , RAID 2 , . ,
4 ,
,
7 , 1, 2 4 . , 7 ,
.2.19,, . 7
7 , 1 .
CM-2 Thinking Machines. 32- 6 ( ). 38- , , 39 .
,
32 . ,
39- , .
,
. , , ( 32
6 19%).
,
.
RAID- 3 RAID-
2. .2.19,. . RAID-
119
2, ,
.
,
, . , . , ,
. , ,
0. , ,
, 1, , , .
RAID- 2 3
, - ,
.
RAID- 4 5, RAID- , , , ,
. RAID- 4 (. .2.19,) ,
RAID- 0 , RAID- 4
, . ,
k .
,
k . ,
.
,
.
, ,
. .
.
.
RAID- 5,
, .2.19,.
, .
-, SSD- (Solid State Disk),
. SSD , .
,
. .
,
120 2.
,
.
, (Fujio Masuoka)
Toshiba
. 1980-
-.
. 2.20. -
- ,
-. -
. 2.20. ,
. , .
.
-
( 12 ), .
, . , ; ,
, ,
, 0 1 . ,
- .
121
SSD- ,
.
100 /, SSD - .
, (
). SSD-
.
, SSD-
. , . SSD ,
. , SSD
, .
. -
100000 .
. SSD
,
. ,
, , . -
, -
. -
, ,
.
SSD- ,
-. ,
. ,
.
CD-ROM
, ,
. , ,
, .
Philips
. 30 , LaserVision, .
1980 Philips Sony -
(Compact Disc, CD), , -
122 2.
. -
(IS10149),
( ). (International
Organization for Standardization, ISO),
, ANSI, DIN ..
IS (International Standard ).
, -
. 120 1,2 , 15. -
, .
, .
- , 0,8
-. -
, .
(), , , -
, .
, , , .
.
(pits), (lands).
0,78
. ,
,
.
, , ,
, .
, , , .
. , , , ,
- -,
.
. ,
32 . 22188 ( 600
1). , 5,6.
.2.21.
, . , -
.
, , 120/,
530 .
123
. 2.21. -
, 200 , . -, , ,
,
. , - (530 )
,
3600 7200 .
1984 Philips Sony -
. , , CD-ROM (Compact
Disc-Read Only Memory -). -,
- , , . ,
,
- .
.
, , , , . -
14- . ,
14 , 8-
, .
. 14- 8- .
42
588 . 192 (24 ).
396 . - .
124 2.
- 98 ,
.2.22. 16, 12 00FFFFFFFFFFFFFFFFFFFF00 ( ),
. 3 . ,
-, , , ,
. , , ;
, , ,
. .
. 2.22. -
. . 2.22
1, 16 ,
2048, 228 ( ).
2 2336 . ,
( ,
), . ,
: ,
. , ,
.
98 588 (7203 ), 2048 . , 28%.
- 75 , 153600/
1 175200/ 2.
.., .
- 74 ,
681984000 , 650, 1= 220 (1048576),
1000000 .
, ,
. CD-ROM Philips
125
Sony ,
.
, .
640 700.
, ,
703,12 (360000 2048- 333000)
.
, - , 32x (4915200/), SCSI-2 (10/), SCSI ( , IDE).
, -
, 1.
1986 Philips ,
- ,
, .
,
-, .
- ,
-.
,
, High Sierra (
, ). (IS9660). . 1 8 ,
3 (
MS-DOS). ,
. 8 . .
, ,
,
. -, IS9660
1, MS-DOS, Apple, Unix
. - .
2 IS9660 32 ,
3 . Rock
Ridge ( )
( UNIX), UID
GID, , -, 1, .
1
- . .
. .
126 2.
CD-R
, - ( ,
), . ,
, .
90- -
,
.
, ,
-, .
,
. ,
-
, .
CD-R (CD-Recordable -).
CD-R 120- . CD-ROM.
CD-R CD-ROM ,
0,6, .
0,3
22,05, . CD-R
, , ,
.
-, CD-R .
(.2.23).
. 2.23. CD-R ( ).
- , ,
127
: -
. , . .
,
.
816. , , .
. (
0,5) ,
, ,
. -
CD-ROM.
-
. CD-R , 1989 . CD-R, ,
CD-ROMXA, CD-R
( , , ..).
, , .
CD-R -
Kodak.
- ,
- , (
) . ,
, - . , CD-R
.
.
-
VTOC (Volume Table of Contents ), -
. VTOC.
, VTOC, . CD-R
,
VTOC,
. VTOC ,
, , .
. -.
-,
VTOC .
CD-R
-,
. ,
128 2.
- , .
. .
, -, - - ( ).
ECC-.
, -,
, ,
. ,
.
CD-RW
, (, , ,
), - . CD-RW (CD-ReWritable -), ,
CD-R, ( )
CD-RW , ,
. : ,
.
-
. ,
, .
, . (
), .
CD-RW CD-R,
CD-RW CD-R. , ,
, , CD-R .
DVD-
- (CD CD-ROM) 1980 .
,
. ,
, , ,
, . ,
.
,
, DVD-
129
130 2.
133 , ,
, ).
.2.24.
. 2.24. DVD-
DVD- , 10
( ), (
). ,
,
DVD .
DVD:
( NC171 ,
), , . DVD- ,
,
3:2,
( 4:3).
, , , ,
, ,
. ,
. ,
(
). , ,
3,5 , 9.
Blu-Ray
, .
DVD,
. DVD Blu-Ray, 1
NC17 , . . .
- 131
. , , ;
.
Blu-Ray 25 ; 50. 4,5/,
, - (, ATAPI-6
100/, Ultra4 SCSI 320/c).
, Blu-Ray CD-, DVD-,
, , .
-
,
: , ( ) - (, ).
.
- , .
, .2.25.
,
(
). , DIMM . ( )
-.
. 2.25.
.2.26. -
132 2.
, -;
. - : ,
-, .
,
. , (, ),
. ()
,
,
,
..
, .
. 2.26.
- . , ,
, .
.
, .
.
, , (Direct Memory Access, DMA). , ,
.
,
, ,
, - .
,
, .
- 133
-,
. , - ?
, , ,
. -,
,
. -
,
. -
-, ,
. , , (cycle stealing).
,
. ,
- , : . ,
,
.
-
, .
,
,
, .
, ,
- IBMPC,
,
. IBM ,
IBMPC PS/2. PS/2
,
PC,
ISA (Industry Standard Architecture ). -
, IBM :
, IBM.
ISA. ISA
,
, . ,
ISA Instruction Set Architecture ( ), .
PCI PCIe
, , , - .
134 2.
, ISA, EISA
(Extended ISA ),
ISA -.
,
PCI (Peripheral Component Interconnect
), Intel,
,
( )
.
PCI.
.2.27.
. , ,
PCI.
PCI. 2 3
PCI, PCI
).
. 2.27. PCI.
SCSI PCI-
, , .
PCI, PCI Express ( PCIe).
, , PCIe, ,
PCI.
PCI ISA
, PCIe PCI.
, , , . ,
. PCIe . 2.28.
PCIe . -,
,
8, 16, 32 64 . , 64--
- 135
,
64- ,
, . , .
PCI 66 .
64 528 /.
8 /, ,
PCIe 1/. ,
. 32 ,
(lanes) . , .
16- , PCIe 3.0 16 / 30 ,
PCI.
, ,
.
-, .
,
. , , (
PCI PCI). ,
, ,
Ethernet ( ),
, .
136 2.
. .
: .
. ,
, ,
. , .
. IBMPC
,
.
.
( ).
, .
, , .
, .
, , .
(
).
, ( 1 102).
, . ,
SHIFT, ,
SHIFT, , , . SHIFT, CTRL ALT
(
CTRL+ALT+DEL,
IBMPC ).
, .
Apple iPhone 2007 , .
Royal Radar Establishment
, , 1965 . / ,
iPhone, ,
1982 .
.
- 137
.
() .
. ,
. , .
(, )
, .
,
, .
, ; (x, y)
. ,
,
.
.
. . ,
( ) .
, .
, , .
, .
, . , (3, 3) (8, 8).
x = 3 x = 8, y = 3 y = 8.
: (3,8) (8,3) (3, 3),
(8, 3), (8, 8) (3, 8). ,
, . .
(,
/)
.
( !)
- .
, . ,
, -. , .
, : ,
.
, . -
138 2.
, ,
.
, (, ). .
, ,
, , ,
. , ,
, . ,
.
.
( 50 )
, . .
(!).
, .
, ,
.
,
,
. ,
(x, y).
(, , / ) .
10 , ,
, - .
-
(), .
, .
(flat-panel) -, , .
-.
. ,
,
.
- 139
, , ,
. (Rheinitzer)
1888 ( , ..) 1960 . ,
.
, , , . , ,
, .
.
, .
.
. , , ,
.
, .
,
. .2.29,.
. 2.29. ();
, ()
, (Twisted Nematic, TN).
140 2.
,
, .2.29,.
. () ,
90.
. .
.
. ,
, , ,
.
, , .
.
,
, .
.
. , 640 480
640 ,
480 .
, ,
, ,
. .., ,
- .
60 , ( ,
- ).
.
, , ,
. . ,
. (Thin Film Transistor, TFT),
, , TFT-.
TFT
.
, . , ,
, , .
, ,
, .
.
- 141
- TFT- 60
100 ; ,
. ,
. , ,
1920 1080 (), , 1920 1080 , .
.
3-
RGB, (Red), (Green) (Blue) ( 10 ). ,
.
1920 1080 ,
3 ,
6,2;
. 8- . ( ),
256 RGB (24-). ,
, 2/3 ,
. ,
256. , , ,
.
216 , 1/3.
( )
. ,
1920 1080
6,2. ,
25 , 155/.
PCI (132/), PCIe
.
142 2.
, , . ENIAC , .
50- . , , (
) , .
, . ,
( Macintosh Windows), .
,
. ,
,
. , , . , .
( ),
,
.
: , .
,
. , , ,
. ().
, ,
, ,
.
, ,
(.2.30).
. , .
.
, , . , ,
.
.
, ,
, ( , 1818 ) 1000 .
, . .
, .
. , , , ,
- 143
. 2.30.
. .
, . , ,
, .
.
-,
: 3 ,
(, 0,01). .
, , x .
y.
. 2 .
, ,
. ,
. , ,
.
.
.
: Nintendo Wiimote
Microsoft Kinect.
144 2.
Wiimote
Wiimote, 2006 Nintendo
Wii, .
Wiimote
Bluetooth. Wiimote
, .
. 2.31 , Wiimote . Wiimote
3- .
,
x, y z ( ). ,
.
-
. 2.31. Wiimote
- 145
. Wii Wiimote.
Wiimote, ,
.
, , Wiimote
.
Wiimote
, ,
.
,
Wiimote ( )
.
Wiimote .
(Sensor Bar) , . Wiimote ,
.
, Wiimote
Wiimote .
Wiimite , Wiimote
.
, .
Kinect
Microsoft Kinect
.
, .
,
. ,
, ,
.
Kinect
. ,
Kinect.
, . , , Kinect
.
, . . ,
( ), .
, .
146 2.
, ,
.
( -) .
,
( Johann Gutenberg),
XV , . , ,
. ,
. ,
, .
.2.32. (
).
1000 . ( ),
- ,
.
, .
, , .
. 2.32.
,
.
( ). , .
- 147
, . ,
.
. .
,
, , ,
. , ,
(print engines). .
, ,
. , ( ,
).
PCL HP PostScript Adobe , , .
600dpi - , ,
. ,
600dpi,
(600dpi).
600 600 , 0 ( ) 255 ( ).
600dpi,
( ),
( ). .
( ). ,
6 6 . 0 36
.
, .
0 255 . 37 . 0 6 0, 7 13 1
.. ( 36 , , 256 37
). 0, ,
.2.33,. 1 .
2 , .2.33,.
.2.33,. -
148 2.
600dpi,
100 . lpi (lines per inch ).
, ,
(
). : .
, , - .
: , .
.
, .
: (
), ( ) ( ). ,
.
, .
: (Cyan),
(Magenta), (Yellow) (blacK).
CMYK ( black ,
blue RGB). , ,
, .
, , . ,
.
256 ,
16777216 . , .
, ,
.
, ,
,
. :
;
;
- 256 ,
;
; ;
RGB CMYK
.
- 149
( ), , .
.
.
, . .
,
100 .
: (
Epson) ( Canon, HP Lexmark).
. , . ,
, .
()
.
, , .
, , . ,
.
/.
, , ,
.
1200dpi
(dots per inch ) 4800dpi. ,
, .
,
810.
. .
, .
. ,
,
.
, . ,
. , ,
. ,
, .
.
,
.
150 2.
.
, , .
.
4 ,
, 10
(, , ).
, . -
( ) (
).
, .
, .
CMYK. - ,
.
. 1,
. , ,
( ). ,
, CMYK ,
.
. 256
. ,
. ,
,
.
.
.
. .
,
, , . ,
, .
,
, . .
1
; ..
. .
- 151
,
.
.
.
. ,
,
. .
( )
, 0
, 1 3 5 (.2.34,).
,
, ,
. 1000 2000,
,
,
.
. 2.34. 01001011000100
: (); ( );
(); ( )
, . , ,
152 2.
, .2.34.
.
2 , 0 1 (.2.34,).
, 1
, 0 .
, 1 0 (.2.34,).
: 0, 1. .
, 180, 0
1 1 0 (.2.34,).
45, 135, 225 315, 2
. . ,
45 00, 135 01 .. .
( ) .
. ,
. :
, , . ,
, .
8- ,
8 , 8
. , , ,
( , ).
,
( )
, ,
.
8- , ,
10 .
. , 9600 ,
104 . , , .
. ,
, .
56 /,
.
, ,
. ,
,
. , -
- 153
(
), . ,
, .
56/,
.
10/.
,
50/.
,
,
- ,
.
. , ,
,
, , , , . ,
. , 10- Ethernet,
, , .
xDSL (Digital Subscriber Line ) x.
ADSL (Asymmetric DSL ).
ADSL ,
, . , , , . ADSL
[Summers, 1999, Vetter et al., 2000].
? ,
,
. .
( ), (),
.
, (
) 1,1.
ADSL
.2.35. 1,1 256 , 4312,5 .
0 . 15 ,
.
250
154 2.
.
. , ADSL- 250 .
. 2.35. ADSL
, , ,
. , , .
,
8090% ( 32 , ),
,
. ADSL .
, .
15/ . , , 224
, 4000 15/,
13,44/. / ,
48/ .
ADSL .2.36.
, (Network Interface Device, NID).
. NID ( ) ()
, 04000,
. ADSL-,
. ADSL-
, 250
. ADSL- , .
Ethernet Ethernet- ADSL-.
(Ethernet
- 155
.) ADSL- USB.
ADSL-.
. 2.36. ADSL
, . 26
(Digital Subscriber
Line Access Multiplexer, DSLAM).
,
.
.
ADSL, .
, ,
( ),
. .
. ,
, .
. ,
156 2.
750. ,
ADSL
, .
,
1,1, ,
200, ,
( , 400 ).
,
, ADSL
. :
, ( , , ,
), (
).
,
. , , .
54550 (
, , 88108, FM). 6 ( ,
). 65, 68 (
PAL/SECAM);
.
.
,
:
1. ?
2. ?
. 550, 750 . ( ) 542
( ), (
) (.2.37).
: ,
542, 54 .
, ,
. ,
,
, .
- 157
. 2.37.
, DSL ,
.
. , , , .
ADSL,
Ethernet. ,
, ,
, , .
.
,
. ,
,
ADSL-.
,
.
, , .
,
.
, .
. ,
, .
.
(ranging). , . ,
,
- (minislots).
158 2.
-.
-, ,
, . , ,
, -.
- .
- 8 .
-,
. ,
. , -.
,
,
-. , -, .
.
- , .
,
.
-. -,
. , , -, ,
, ,
. -, , , 204 .
, 184 ,
.
MPEG-2
. .2.38.
, . ,
. ,
, (Internet
Service Provider, ISP), .
, , (IP-).
.
.
,
.
,
, ,
- 159
. 2.38. .
QAM-64 ( )
6 /, . QPSK
( ) ,
2 /
. , , . ,
. ,
[Kaufman et al., 2002].
,
. .
. [Adams and Dulchinos, 2001;
Donaldson and Jones, 2001; Dutta-Roy, 2001].
.
. ,
. ,
, . .
(Charge-Coupled Devices,
CCD). ( ,
CCD .)
CCD
. , .
160 2.
- 0 255 ( ) 0 4095 (
). .2.39.
. 2.39.
CCD, ,
.
CCD .
(Bayer filter), CCD
, , . : -,
, -, ,
. ,
6 , . 6
CCD, 1,5 . 28282121 (
) 30002000 ( ) . .
: ,
.
.
, CCD, ,
- 161
CCD.
.
CCD . , ,
; , ,
1 . ,
.
,
( , , ,
, ).
CCD. (
)
.
,
. , , JPEG
( Joint Photographic Experts Group
). .
, .
, -
.
.
,
, USB FireWire.
. (, Adobe Photoshop)
, , ,
, , ,
.
, , , - DVD
.
,
, ,
(Single-Lens Reflex, SLR)
.
,
, , , ,
, .
162 2.
, . , 26 26 1, 0 9,
, , , ,
..
, , , a= 1, b= 2,..., z= 26, += 27, = 28.
. ,
, .
. .
ASCII
ASCII (American
Standard Code for Information Interchange
). ASCII- 7 , ,
128 . 0 1F (
) , (.2.4). 0 1F ( )
, . 128 255
ASCII; IBM PC ( . .),
.
2.4. ASCII-
NUL
BS
BackSpace ( )
SOH
Start Of Heading (
)
HT
Horizontal Tab ( )
STX
Start Of Text (
)
LF
Line Feed ( )
ETX
End of Text ( )
VT
Vertical Tab (
)
EOT
End Of Transmission ( )
FF
From Feed ( )
ENQ
ENQuiry ()
CR
Carriage Return (
)
ACK
ACKnoligement ( )
SO
Shift Out (
)
BEL
Bell ( )
SI
Shift In (
)
. . .
- 163
10
DLE
18
CAN
CANcel ()
11
DC1
Device Control1 ( 1)
19
EM
End of Medium (
)
12
DC2
Device Control2 ( 2)
1A
SUB
SUBstitute (
)
13
DC3
Device Control3 ( 3)
1B
ESC
ESCape ()
14
DC4
Device Control4 ( 4)
1C
FS
File Separator (
)
15
NAK
Negative AcKnolidgement 1D
( )
GS
Group Separator ( )
16
SYN
SYNcronous idle ()
1E
RS
Record Separator ( )
17
ETB
1F
US
Unit Separator ( )
20
(- 30
)
40
50
60
70
21
31
41
51
61
71
22
32
42
52
62
72
23
33
43
53
63
73
24
34
44
54
64
74
25
35
45
55
65
75
26
&
36
46
56
66
76
27
37
47
57
67
77
28
38
48
58
68
78
29
39
49
59
69
79
2A
3A
4A
5A
6A
7A
2B
3B
4B
5B
6B
7B
2C
3C
<
4C
5C
6C
7C
2D
3D
4D
5D
6D
7D
2E
3E
>
4E
5E
6E
7E
2F
3F
4F
5F
6F
7F
DEL
164 2.
ASCII- .
, SOH (Start
of Header), , STX (Start of Text),
, ETX (End of Text) , , EOT (End of Transmission). ,
, -,
ASCII- .
ASCII- ,
, .
Unicode
,
ASCII, ,
. , .. ,
ASCII-.
(, ),
(, ). ,
, ,
- .
ASCII IS646,
ASCII- 128 , 8- Latin-1.
. IS8859, .
256 ,
IS8859-1 Latin-1. IS8859-2
(, , ),
IS8859-3 , ,
.. , ,
, .
.
,
Unicode, (IS10646). Unicode
(, Java),
(, WindowsNT) . ,
.
Unicode 16- , .
- .
16 , .
Unicode- 16 , 65536 . 200000
, ,
- 165
.
, , Unicode,
.
Unicode, Latin-1 0 255,
ASCII- Unicode-. ,
.
, 16 .
Unicode . ( ): (336),
(144), (256), (96), (112), (128),
(128), (128), (128) (128). ,
, . ,
. ,
: . ,
, : , .
, (112),
(112), (48),
(48), (256), (96),
(192).
, .
1024 (, ),
, (20992),
(11156).
, 6400 .
Unicode , , .
, , , cat dog ,
,
, , .
, .
50 , , ,
, , . , .
, 20000
( ).
, , .
. Unicode .
166 2.
Unicode ,
,
- (
blue blew,
).
, ( , 16-
?). , 50000 ( ,
), 20992
- . , , ,
, .
, , 65536 , 1996
16- , 1114112.
UTF-8
Unicode ASCII, . , 16
ASCII-, .
UTF-8 UCS Transformation Format.
UCS Universal Character Set
Unicode. UTF-8 1 4 ,
. World Wide Web.
UTF-8 , 0 127 ASCII-. , ( Unicode). ,
ASCII, 1;
, .
, . 2.5. d .
2.5. UTF-8
0ddddddd
11
110ddddd
10dddddd
16
1110dddd
10dddddd
10dddddd
21
11110ddd
10dddddd
10dddddd
10dddddd
26
111110dd
10dddddd
10dddddd
10dddddd
10dddddd
31
1111110x
10dddddd
10dddddd
10dddddd
10dddddd
10dddddd
UTF-8 Unicode .
,
167
ASCII, 8 . -,
UTF-8
. -, UTF-8
10, ; . ,
() .
UTF-8 17 Unicode,
1114112 .
-
( ), UTF-8
.
: ,
-. ,
, .
. , -,
.
, .
,
.
.
,
;
, ;
, ,
.
.
, .
( ) , . -
. .
, , (
)
.
, , .
: , , IDE-,
SCSI- RAID-.
CD-ROM, CD-R, DVD Blu-ray.
168 2.
- . . , ,
. - ASCII,
Unicode , UTF-8
,
Web.
1. , .2.2.
, 5 ,
10, 5 .
?
2. 2 ,
? , ?
3. 1 10 , 2 5 . , 2
? .
4. ,
.
, .
, , ,
( ).
5. ,
. .
,
. , .
, . ,
, ?
6.
.
? (,
.)
7. (, ,
?),
: , .
, , Socimagnetic
Computer .
169
; ,
(, ) 8 ,
0, 1 2. 6-
? ,
n .
8. , . 106
(). , 64 .
100 .
9. , . 22 .
, 22,
44. 16-
( 65535 ).
10.
.
: A, C, G T. 3109 30000 .
( )?
( )?
11. 1073741824 . - , , 1000000000?
12. 7-
0 9.
13. 0 9 , 2.
14. , .
, (
) 2n 1?
n 3 10.
15. ASCII- 8 .
.
ASCII-
: Earth. .
16. ASCII : 0D3 DD3
0F2 5C1 1C5 CE3. .
17. , .2.16, 1024
7200 .
?
170 2.
18. 5 .
32- .
Ultra4-SCSI,
160/.
32- 25.
?
19. , , .
0
- .
.
. , ?
.
20. 10000 ,
4 2048 ?
0, 0, 1, 0 .. 10 ,
1 ,
20 .
.
21. RAID- 3 , . RAID-
2? ,
.
22. ( ) CD-ROM 2, 80 ( )?
1?
23. CD-R,
. ( ) , - 1 10x?
24. 133 DVD , . ,
. ,
3,5, 720480 24- 30 .
25. Blu-ray 25
4,5/.
?
26. , 224 .
. ?
27. ,
10, .
. 108
171
.
(, , , ),
32 .
10 .
(/) .
28. 1920 1080 .
75 . ?
29. 50
80 .
2 2, 25% ,
. 25 . 25 8 2. ?
30. , , , 64 2.
n ,
64 .
?
31. , ADSL
2/,
12.
QAM-64. n , .
( f ) .
ADSL?
32. 3000 2000
RGB 3 .
, JPEG 5 - .
?
33.
24 , 6. -
8 5?
, 1 230 .
34. , ( )
. ,
ASCII ? -
10000 ?
DVD- ?
35. hamming(ascii, encoded), 7 ascii 11- encoded.
36. distance(code, n, k),
code n k
.
3.
.1.2
, .
,
.
, ,
.
, ,
. ,
( ),
. ,
,
. ,
, , .
,
.
.
.
, , , .
, .
0 1 (, 0),
2 5 (, 1).
. ,
, . ,
.
, ,
0. ,
. ,
.
173
.3.1, , .
: , . Vin ,
.
Vout, VCC (,
), +5. Vin
, , Vout ( 0).
. 3.1. (); ( ); ()
, Vin , Vout , .
, , , 0
1 1 0. ( ) , ,
.
.
.3.1, . V1, V2 ,
Vout. ,
, .
, Vout , V1, V2 .
.3.1, .
, . ,
.
. , - - . . . ,
(VCC) 1, ()
0, -
174 3.
. ,
, .3.2,.
. A B , X
.
.
. 3.2. .
.3.1, ,
, -, , 1 , 1.
;
.3.2,. -
. ,
1 , ,
0, . ,
,
.3.2,. , -
- . .
, .3.2, . ,
- - ,
.
- -, . (
, - - ,
.) , .
-, ,
, .
,
,
.
(, , ).
(- ),
, (-
175
), ,
.
.
- , ,
,
. : p- , n- . - ,
, .
, +1,5. , .
, , , .
, , ,
: 0 1. .
(18151864). ,
, ,
, .
( , ),
. ,
. f, , f()= 1,
= 0 f()= 0, = 1. (. .3.2,).
n 2n ,
2n .
.
. .3.2 .
, 00, 01, 10, 11,
2n- , , .
, - 1110, - 1000, 0001 0111.
, 16 ,
16 4- . ,
, ,
,
.
.3.3,
: = f(A,B,C ). , -
176 3.
0, 0, 1, 1.
,
.
.
. 3.3. ();
()
, ,
,
. .3.3, 4 , .
, , . , .
, ()
( ) (+) . , ABC 1,
A= 1, B= 0 = 1. , AB+ BC 1,
(= 1 B= 0) (B= 1 C= 0). .3.3, 1 : ABC, ABC, ABC ABC. -
177
( 1), .
,
= ABC + ABC + ABC + ABC.
. , n
2n ,
n . ,
,
.
. ,
A, B C, , . , :
F = ABC + ABC.
( ) ,
, , , .
, 2n
. .3.3, A, B ,
, , .
, 1, 2 3.
, 6 , 3
, 3 .
. , 5, 6 7 . , ,
- .
,
( 1). . , (
) .
.3.3,. : ,
, . ,
3 6 , .
, .
. 3.3 , :
1. .
2. ,
.
3. 1.
178 3.
4. .
5. .
,
, .
. , , ,
- -.
,
- . .3.4 ,
- -. ( , .)
. 3.4. (), () ()
- -
-
-, , , . . ,
A+ B+ C+ D (A+ B)+ (C+ D), . , ,
.3.4.
, ,
. - - ,
179
.
, .
,
, , ..
, ,
,
( ,
). .
AB+ AC (.3.5,).
, .
, AB+ AC A(B+ C). .3.5,
A(B+ C ). ,
.
.3.5 , A(B+C )
AB+ AC. , .3.5, ,
.3.5,, .
180 3.
,
, ,
.
.
, () , .3.1. ,
. ,
0 1. ,
. , ,
.
, ABC= A+ B+ C.
3.1.
1A = A
0+A=A
0A = 0
1+A=1
AA = A
A+A=A
AA = 0
A+A=1
AB = BA
A+B=B+A
(AB)C = A(BC )
(A + B) + C = A + (B + C)
A + BC = (A + B)(A + C)
A(B + C) = AB + AC
A(A + B) = A
A + AB = A
AB = A + B
A + B = AB
. .3.7,
,
. ,
-. .3.6,,
, , - .
(.3.7,, ).
(, n-
- ).
, .3.6,
,
- -. (.3.7,).
, , .3.7,.
-, ,
, ,
181
. 3.6. :
-(); -(); (); ( )
. 3.7. ().
( )
,
. .3.8,
F
. , .
182 3.
, 0 , 3,3 5 , , .3.8,,
. .
, , 0 , 3,3
5 , ,
.3.8,, .
. 3.8. ();
( ); ()
, , .
, 1,
, 0, .
,
.
, - . ,
.
,
.
, ,
(), .
,
, .
2 2,
18 18. ,
.
- , .
183
. 3.9
. (, ), (Dual Inline Package, DIP)
, .
DIP 14, 16, 18, 20, 22, 24, 28, 40, 64 68 .
,
.
PGA (Pin Grid Array) LGA (Land Grid Array).
PGA
. PGA
; , PGA ,
PGA, . LGA
, LGA ,
LGA
.
, . DIP
,
DIP. PGA , PGA . LGA
,
LGA. LGA,
.
, ,
.
,
. c.
1
1.
-, ,
1
. PentiumIV 42 ,
, , . . . .
184 3.
, 500 -. ,
1500000002 .
1 , LGA
38, , , . ,
,
. ,
,
.
,
. .
. , ,
, , ,
. ,
(, .3.3,), .
.
2n , n ,
. . .3.10
. A,
B C 3- , , , , .
, ,
0, 0
1 .
.
.3.10.
,
(. .3.3,), .3.11,. A, B
.
VCC ( 1), ( 0).
: Di , i . .3.3, 0, 1, 2 4 0,
;
1, .
.3.11,
.
,
.
185
. 3.10.
. 3.11. (); ,
( )
186 3.
. 8 ,
, 000 111 ( ), 8 .
, 7- 8- ,
.
,
2n
n .
k, k.
,
n- , (
1) 2n . .
n= 3 .3.12.
. 3.12. , 3 8
, , ,
, 256. 0
0 256, 1 256 5122 ..
. .3.12 A, B .
187
(D0,..., D7)
1; 0.
.
1, .
, .3.12, . , , B B,
. :
D0 ABC, D1 ABC ..
. , . , .3.13,
A B 4 1, , 0,
. , 0, , 1, .
,
0. .
0, , , , ;
.
, :
1 , 0 .
. 3.13. 4-
, . , -
188 3.
, , ,
. 8- ,
, , -
, .
, ,
8 8 (.3.14).
D0,..., D7. , , , S0,..., S7.
: 0 , 1 . 7
0. 0 1.
. 3.14.
, , (
). = 1, ,
. , ,
. = 0, ,
.
, , .
,
.
.3.15,. : A B () .
.3.15,.
.
. ,
.
189
. 3.15. ();
()
(.3.16). ,
. 1, A, B
1 (
). 1, B
1 ( ), 1
1. ,
.
. 3.16. ();
()
190 3.
, , 16- ,
16 , .3.17,. . 0.
. 1
111...111 ,
. , . ,
.
. 32- : 16- 16-.
, ,
, , 16 .
. ,
. 16- :
U0 U1, .
U0 0, U1 1.
, .
16
, .
.
. 16-
8- ..
-
, .
n- n
. .3.17 , (). 4-
: A B, A B, B A+ B.
, F0 F1: 00, 01, 10 11 (
). , A+ B
A B, .
, .
F0 F1. F0 F1
,
.
, , ,
.
1, .
0 .
191
. 3.17.
, , ENA ( ) ENB ( B). ,
INVA ( ). ENA, ENB INVA,
4. ENA, ENB 1,
, INVA 0.
.
, . ,
. , .3.17,
.
. .3.18 8- ,
. INC (
) .
, + 1 + + 1.
192 3.
. 3.18. , 8- .
, . ,
; ,
. ,
.
.
,
.
,
. , . . .
.
100 4,
10 250 .
.
.
,
. , ,
. ,
(.3.19,). , .3.19,,
:
1. 1.
2. 1.
3. 2.
4. 2.
193
( ),
. ,
.
,
. , , , 1 .
, 2 .
,
,
. 4 : 1 2,
1 2, 1 2 12.
.
(. .3.19, ). (. .3.19,), ,
.
.
.
, , . , . -
194 3.
, . ,
, .
, , - .
-, .3.20,.
-. ,
-.
. 3.20. - 0(); - 1( );
-()
, .3.20,, SR-.
: S (Setting ) R (Resetting ).
: Q Q. ,
.
, , , S= 0 R= 0 ( 0 ).
, Q= 0. Q -
0, , Q, 1.
, 0, 1,
Q= 0.
(. .3.20,).
, Q= 1, R S 0.
0 1 Q ( 0), . , .3.20,,
. , 0,
,
, , .
1, 0 1,
0, 1. : R= S= 0
, 0 1 Q.
. , S 1, Q= 0.
1 0,
195
Q= 0. 0, , , 1. , S 1
0 1. R 1, 0, ,
- 0 10, 11.
, , S 1 1 ( Q= 1) ,
R 1 .
, S 1, Q 1 . R 1
Q= 0. , : S R.
, .
SR-
, . ,
SR- (3.21).
. 3.21. SR-
, 0. 0, 0,
S R . 1, ,
S R.
.
, , S= R = 1.
: R, S 0,
. S= R= 1
Q= Q= 0, 0,
. 0
, , 1 ,
. 0
( ), .
D-
SR- (
, S= R= 1), .
196 3.
.3.22 D.
, , 1,
. D= 1 1,
Q= 1. D= 0 1,
Q= 0. ,
1, D . , D-,
. Q.
D,
.
. 3.22. D-
11 . (
) 6 . ,
( ). ,
, , , .
. ,
(flip-flop), , 1, 0 1
() 1 0 (). ,
, .
. , .
, . , , 1.
. ,
, D-.
1
(latch) , .
-, .
. . .
197
.
.3.23,.
. 3.23. (); ()
, , 0,
. , - .
. , a, b, c d. a
( .3.24, ).
b . ,
.
.
c ,
( ).
a , , 20 , 0,0001 , , ,
. ,
c a.
b c , , () ( 5 ). ,
- ( .3.24, ). , D-
.
. 10c 1c (
, D) ,
198 3.
, .3.24. ,
,
.
. 3.24. D-
.3.25.
.3.25, , ,
CK ( clock) 1,
, .3.25,,
1, 0, D. 3.25,, . , ,
, . .3.25,
( 0 1),
.3.25, ( 0 1).
( ) Q,
: Set () Preset (
) Reset () Clear (). (Set Preset)
Q= 1, (Reset Clear) Q= 0.
. 3.25. D- D-
. .3.26 , 8- .
8- (I0 I 7) CK.
CK, CK 8- . ,
.3.25,, ,
199
CK, 0 1.
, CLR 0, 0. ,
CK ,
, :
, ;
.
O0
I0 O1
Q
I2 O3
Q
O3 CK
Q
CK
CLR
CK
CLR
CK
CLR
CK
CLR
CLR
CK
CLR
CK
CLR
CK
CLR
CK
Q
CLR O4
I1 O2
D
I4 O5
Q
I5 O6
Q
I6 O7
D
I7
. 3.26. 8- ,
8- . , 32-
16- ,
CK CLR.
4.
1 (..3.22)
8- (.. 3.26,),
, . ,
, .3.27. 3- .
3- . (12 ) , 8- ,
, , ,
.
: 2.
, .3.28,
, . 8 , 3
I0, I1 I2; 2 A0 A1; 3 CS
(Chip Select ), RD (ReaD , ) OE (Output Enable ), 3 O0, O1 O2.
200 3.
. 3.27. - 43.
3- .
, 12- ,
8- . 8-
20 ( ), 12-
13, 4
. ,
.
, CS 1, RD 1 0 .
, 3-
. -
201
, .
, , ; .
, , .3.27.
.
, . (
0, 1, 2 3). ,
CSRD 1, . , 1.
CK , . , CS 1, RD 0, , 0 1; .
.
, . CSRD
0, ,
. ,
Q . , 4- ,
, 0. ,
, .
.
,
, .
.
.
, (
) , . -
. , ,
.
, . .3.28, .
,
. 1, (. 3.28, ). 0,
(.3.28,), -
. , 1.
.3.28, ,
, 1,
, 0. ,
,
( ). , ,
202 3.
. 3.28. ();
, 1( );
, 0(); ( )
, . ,
.
, . CS, RD OE 1,
1, , .
CS, RD OE 0,
.
, .3.27, ,
. 4 3 ( 4- 3 ). 4 8, 5 4 ,
5 5 . 4 3
8 3, ,
2.
,
.
. ,
, ,
18 ( ). ,
, , ,
.
, , ,
.
. .3.29 4: 5128 40961 (
, , ). .3.29, 19
219 8 .
203
. 3.29. 4
.
- ,
. , , - , ,
. ,
, .
, 0, .
CS , CS .
.
. , , , ,
. CS (Chip Select ) . , .
, , . WE (Write
Enable ) , ,
. , OE (Output Enable )
. ,
.
.3.30, . 20482048 ,
4. , .
11- .
RAS (Row Address Strobe ).
CAS (Column Address Strobe ).
, .
204 3.
mn, . , , ,
, :
, .
,
.
, .3.29,. 8
32 , .
4096K1 32- ,
32 , . 32
16. 512K8,
4 , 2.
32 ,
4, 8 16 . 64-
, , .
512 .3.30.
128; ,
. 3216, .3.30, , 13
RAS, 10 CAS 2 .
, 25 225
16- . 1284, .3.30, ,
RAS 13 , CAS 12 ,
. 3.30. 512
205
2. , 27
227 4- .
.
.
.
( ) , (1, 4, 8, 16 .) . ;
: -,
, -,
, .3.30.
,
.
, ,
: , .
( ), RAM (Random
Access Memory ). :
. (Static RAM, SRAM) D-.
, : , ,
. .
.
- .
(Dynamic RAM, DRAM), , . ,
. , .
,
() ,
.
, ,
, .
( 6
), (
).
.
( ). ,
.
. , , FPM (Fast Page Mode
). .
, (
206 3.
, , .3.29,).
.
FPM EDO (Extended Data Output
)1, , .
, , ,
.
FPM EDO , 12 . ,
, , FPM
EDO (Synchronous DRAM, SDRAM).
. .
, . , , . 4, 8 16
.
.
SDRAM DDR (Double
Data Rate ). , ,
. , 8-
, 200 , 8-
200 (,
); , , 3,2 /. DDR2
DDR3 DDR 533 1067
. DDR3
17,067 /.
.
(,
, ). , , .
( ), ROM (ReadOnly Memory ).
( , ). .
,
1
EDO , FPM, . . . .
207
, ( ) .
.
, ,
.
,
.
, , (Programmable ROM, PROM). ,
,
. . ,
,
.
(Erasable PROM, EPROM), , .
15 , 1.
, ,
, . , . , 27040 ,
.3.30,, . ,
. , .
27C040 $3, .
(Electronically
EPROM, EEPROM), ,
. ,
,
,
.
64 , .
, 10 ,
100 , . , .
. ,
, ,
, - .
, 64
-. . 2, -
, ,
208 3.
50 . -
; , , .
.3.2.
3.2.
SRAM
DRAM
( )
SDRAM
( )
ROM
PROM
EPROM
EEPROM
FPGA
1, (FPGA)
FPGA
, . FPGA
( ,
). , FPGA,
. FPGA -
.
FPGA , . FPGA
, : LUT (LookUp Table) .
FPGA 209
LUT (. 3.31a)
, , ( ),
.
. LUT
164,
. LUT
. ,
X Y,
LUT X.
.3.31, , 4- LUT
3- .
1 ( 4),
CLR; 0.
LUT . 0 . ,
LUT (I3) (CLR).
LUT I0..3 (I+ 1)
4. O0..3
I0..3.
FPGA ,
. , , 2,
(CLR) , LUT 2,
3. (CLR),
LUT 6, 0.
, . ,
,
. FPGA ,
,
, .
210 3.
FPGA, ( ,
). ,
FPGA.
FPGA ,
FPGA. FPGA
LUT,
. , ,
, ,
( ) FPGA.
FPGA,
FPGA;
, - .
, ,
.
, (
). ,
, .
, .
,
. ,
.
, , . ,
, -
.
: , .
- ( ).
,
.
, , (, ).
, , .
, .
211
, .
.
, .
,
-,
. .
, . , m , 2m .
m 16, 32 64. , n ,
n- .
n 8, 32 64. 8
4 , 32- , ,
32 ,
. , 32
, .
,
.
, .
( +1,2 +1,5), ().
.
:
;
;
;
;
;
.
, Intel Core i7, TI OMAP4430 Atmel ATmega168,
. ,
, .3.32.
(, ,
-). ,
- .
- .
-
, - ,
- . -
, - , - (, -).
.
212 3.
. 3.32. .
,
.
, ,
. .
(, ,
..).
, .
, . , ,
-.
, .
.
,
-.
.
,
-.
.
,
. ( 50
100), .
-.
213
-. .3.33 -.
. 3.33.
, . ,
,
. , , . ,
, .
, , ;
, , ,
, ,
. . ,
,
, ,
, .. ,
,
(SoC).
, ,
: Omnibus (PDP-8), Unibus (PDP-11), Multibus (8086), VME ( ), IBMPC (PC/XT), ISA (PC/AT), EISA
(80386), Microchannel (PS/2), Nubus (Macintosh), PCI (
), SCSI ( ),
Universal Serial Bus ( ), FireWire (
). , , , , . ,
,
.
214 3.
, . , , ,
.
, .
, , . ,
, . .3.3.
.
3.3.
, ,
,
.
,
. .
, , ,
, , . , , , , .
, .
,
. . , ,
, .
, , .
. , ,
, -, -
- .
, ,
215
-, .. , 3- , .
, [Anderson et al., 2004; Solari and Willse,
2004]. ,
, . .
.
( )
. ,
. n
, 2n
.
. .
, , . (, ) .
. , .
, 64 , 232
, , 32 ,
232 . .
, . IBMPC 8088
20- (. 3.34,).
1 .
. 3.34.
216 3.
.
, .
5
133.
. . .
.
217
TAD
TML
MREQ
TM
T1
MREQ
TRL
T1 RD
TDS
- 2
TMH
T3
MREQ
TRH
T3 RD
TDH
RD
. 3.35. ();
( )
218 3.
, ,
.3.35. 100, 10 . ,
3 ,
. ,
PCI 33 66, ( ) PCI-X 133 .
:
,
.
,
15 . ,
. T1, T4, .3.35.
, ,
. ,
1 . , MREQ, RD, WAIT .
T1 . T1 .
( ),
.
, . , , .
, ,
T3.
, MREQ RD. , , -,
, . 15 ( ),
T2.
, WAIT T2. ( )
, WAIT.
(2), .
3, ,
, WAIT .
3 . 3 (
) , . , MREQ RD.
. .
219
.3.35, 8
. TAD, , T1
.
TAD4 . , ,
4 1.
, 2 (TDS) 3, , . TAD TDS ,
25 4 2= 19 ,
. 10 ,
T3. 20,
, T4.
, 2 , MREQ.
, MREQ ,
. ,
, 3 .
TM TRL , MREQ RD 3 T1.
MREQ RD 10+ 10 3 2= 15
. 15 .
TMH TRH ,
MREQ RD , . ,
TDH , RD.
, RD;
.
, .
. ,
.
, . ,
, , , .
,
, .
, . ,
3,1 ,
4,0 , .
220 3.
, -,
. , ,
, .3.35, 15, 8.
. , 4.
,
2 .
,
, , , .
,
(.3.36).
. , MREQ,
RD , MSYN (Master SYNchronization).
, ,
. ,
SSYN (Slave SYNchronization).
. 3.36.
SSYN , .
, MREQ,
RD MSYN. MSYN ,
, SSYN,
, .
( ) - (. .3.36).
MSYN ,
SSYN. SSYN, ,
, MREQ, RD MSYN.
221
, MSYN SSYN,
.
. , , 4 :
1. MSYN.
2. SSYN MSYN.
3. MSYN SSYN.
4. SSYN MSYN.
, .
, .
- ( ) ,
, .
,
. ,
, . , . - ,
, .
, .
,
.
-
. ,
.
. : ,
?
, ,
.
.
. .3.37,.
, .
, .
( ),
. , .
.
, . -
( ).
, , . , ,
. ,
. -
222 3.
. 3.37.
(); ()
, ,
. , - . .
,
. .
, .
.
.3.37, 2 ( 4, 8 16 ).
, ,
. .3.37, , 1, 2 4
1, 3 5 2.
,
.
. .3.37, ,
2 4,
4 3. 5 ,
.
,
2
1 2, .
223
,
.
, ,
,
. , .
, . , ,
. ,
.
.
,
.
, , -
. ,
. , .
, -
, .
, , , .
, - ,
, .
. ,
16 .
, .
,
, , , .
,
. .
, (.3.38).
. .
BUSY . . .
. 3.38.
224 3.
.
5.
,
. ,
, IN. IN , .
OUT. IN ,
OUT, IN , , OUT. ,
IN OUT.
, IN ,
OUT . , BUSY OUT, .
, , ,
, .
, , .
.
,
( ) ( ) .
.
.
. - - ( 16
64- ). , .
, ,
(,
T1). ,
,
. .3.39 ,
.3.35, BLOCK, , .
6 12-.
. , ,
,
.
, ,
0, , 1, . , ,
0, 1. ,
225
. 3.39.
. , 0,
1,
, .
,
, , ,
; .
, , .
. - -
, . .
, , , .
,
.
, . IBMPC
Intel8259A. .3.40.
-
IRx (Interrupt Request )
8259A. , . 8259A INT (INTerrupt ),
226 3.
. 3.40. 8259A
.
, 8259A
INTA (INTerrupt Acknowledge ).
8259A ,
. .
.
,
, .
8259A ,
,
RD (ReaD ), WR (WRite ), CS (Chip Select
) A0. ,
, INT 8259A,
. ,
8259A , .
8 -, 8259A
. 8
8 8259A, 64
- . / Intel ICH10 I/O, Core
i7, 8259A. , ICH10
15 1 16 8259A,
8259A. 8259A , . 8259A
.
,
.
.
227
Intel Corei7, TI OMAP4430 Atmel
ATmega168 .
Intel Core i7
Corei7 8088,
IBMPC. Corei7 2008 .
731 ,
3,2 45 . (
). ,
. ,
. , . ,
20100 (
).
Core i7 Nahalem,
Core i7 Sandy
Bridge.
, . ,
. , AMDK
Intel , .
K Kryptonite , ,
Intel.
Corei7 Sandy-Bridge
1,16 . 3,5
32. Core i7 8088
29000 , 8088 , 8088 (
, Corei7 8088).
Corei7 64- . (ISA), 80386, 80486, Pentium, PentiumII, PentiumPro,
Pentium III Pentium 4, ,
IEEE754. , Corei7 ,
.
Corei7 ; ,
. 2 6 (
). , -
228 3.
.
,
. (,
).
(, ),
.
Corei7 Core2 Core2Duo. Corei7
, 4-
. Corei7 4.
Corei7 .
Corei7 32- (L1) 32- .
256- (L2). ,
.
(L3),
4 15 .
,
, Core i7
17 .
Corei7 , ,
, . , , , ,
.
.
, .
8.
Corei7 ,
. DDR3
; PCIExpress -.
Core i7 PCI
Express, QPI (Quick Path Interconnect). QPI ,
, . QPI
, ,
.
Corei7, ,
. , . Corei7
17 1502.
229
Intel ,
.
.
Corei7 LGA
37,5. 1155 ,
286 , 360
. 4040,
1725 . , 20 ,
. Corei7
.3.41.
. 3.41. Corei7
, , , .
, 150,
150 ( ). .
, Corei7 , .
,
, .
, , . ,
230 3.
Intel ( ),
, ( ),
, .
. (, , ), .
- ,
.
. Corei7
, .
Core i7
1155 Corei7 447, ( ) 286, 360; 62
.
(, ), 131
. Corei7
.3.42. 5
; .
. 3.42. Corei7
, .
DDR3- .
, , . Core i7 DDR3, 666
; ,
231
232 3.
,
N- . N,
. ,
.
.
YouTube (
exploding CPU). , .
. IEEE 1149.1JTAG.
() .
CK
,
. , , DLL (Delay-Locked Loop)
IEEE 1149.1JTAG ( Joint Test Action Group). ,
,
.
Core i7
, Corei7,
. , , ,
.
, .
Corei7 DDR3
, .
2, (. . 2.4), .
, Corei7 :
1. (ACT) ,
.
2. (READ) (WRITE)
.
3. (PCHRG) .
Corei7 , DDR3 .
,
,
. DDR3
. , DDR3
233
. 3.43, DDR3
: (CK), (CMD),
(ADDR) (DATA). CK
. CMD , . ACT
, ADDR. READ
ADDR,
DATA.
, PCHRG , , ADDR. ACT
READ
DDR3, READ. ,
PCHRG READ .
READ
. READ 0 1 , 3 4
. 2 1, , 0
2.
Corei7 ,
READ ? -
234 3.
DDR3. ,
. Core i7
, DDR3
,
DDR3. , DDR3 ,
.
235
. 3.44. OMAP4430
OMAP4430
. , ISP IVA3
,
ARM A9.
OMAP4430 600 . 1/250
Corei7. OMAP4430 ;
100 . ,
(, , ).
, .
OMAP4430
,
. , .
, ,
, . (power gating) :
. ,
,
IVA3 . ,
IVA3 ,
ARMA9 .
236 3.
( ), ARMA9
. . 4, .
, .
, - ; , . ; ,
. ARMA9
,
, .
OMAP4430 L1
ARM A9; 32- 32-
.
LPDDR2. LPDDR2
DDR2, ,
. ,
(,
).
4,
. (),
32 . 1024 1024
. , ,
, .
, ARM A9,
. 32768
, .
. , ,
,
. , .
19.
,
, ;
.
,
LPDDR2. LPDDR2
OMAP4430 ,
OMAP4430 .
13 . , (ACTIVATE),
. READ WRITE,
13 ( )
32 .
237
.
, - ,
, .
, LPDDR2.
.
4 .
,
. .
OMAP4430 (
Corei7) , .
OMAP4430 547 BGA (.3.45).
BGA (Ball Grid Array) LGA, ,
LGA, .
, .
OMAP4430 28 26,
,
BGA.
. 3.45. OMAP4430
238 3.
Atmel ATmega168
Core i7 OMAP4430 ,
(Corei7
, OMAP4430 ). ,
. .
,
100 .
, , , ,
, , , , ,
( ) .
, ,
, .
1 , ATmega168. ,
, . ,
ATmega168 ,
. .3.46.
, ATmega168 28 (
). :
. ,
. ( -)
,
(. 3.47).
PC6
PD0
PD1
PD2
PD3
PD4
VCC
GND
PB6
PB7
PD5
PD6
PD7
PB0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
PC5
PC4
PC3
PC2
PC1
PC0
GND
AREF
AVCC
PB5
PB4
PB3
PB2
PB1
. 3.46.
ATmega168
PC6
PD0
PD1
PD2
PD3
PD4
VCC
GND
PB6
PB7
PD5
PD6
PD7
PB0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
PC5
PC4
PC3
PC2
PC1
PC0
GND
AREF
AVCC
PB5
PB4
PB3
PB2
PB1
. 3.47.
ATmega168
ATmega168 27
-, 8 B D 7 C. -
-,
239
( ). ,
,
-. -
ATmega168 , . ,
. , .
, C . - . ,
,
. C,
. ATmega168 (VCC),
(GND) - (AREF, AVCC).
ATmega168, OMAP4430,
. ATmega168 16 -
(, ). 1 EEPROM , .
EEPROM .
: , EEPROM ,
(12- 24-). ATmega168
1 , .
AVR.
131 , 16 .
8-; , 8- ,
8 . , 8-
. , 16-
( ) ,
.
: ,
- , I2C ( InterIC), -.
.
PCI USB. PCI -, PC.
240 3.
: PCI ,
PCI Express (PCIe). USB -
(, ). USB .
.
PCI
IBMPC .
Windows .
ISA. ,
, ,
.
. 1024 768 3 . 2,25 .
30 , , ,
67,5/. , ,
, , -
DVD- . ( ). ,
135/,
.
PCI
ISA 8,33. ISA ,
16,7/.
EISA 4 . 33,3/. ,
, .
Full HD . 19201080 30 ,
155 / ( 310/,
). , EISA
.
1990 Intel
, EISA. PCI (Peripheral
Component Interconnect ).
Intel PCI ,
- .
Intel PCI Special Interest
Group,
PCI. , PCI
. Intel ( Pentium), PCI. PCI
[Shanley and Anderson, 1999; Solari and Willse, 2004].
241
PCI 32 33
( 30 ), 133/.
1993 PCI2.0, 1995 PCI2.1. PCI2.2 ( ).
PCI, 66,
64 , 528/.
(
). , PCI .
528/ ,
. -, . -, PCI ISA.
Intel
, .3.48. ,
, ISA PCI. 1990-
.
. 3.48. Pentium.
( .
, )
( Intel
242 3.
). PCI , PCI.
ISA PCI ISA,
IDE-. PC, ,
PCI-
ISA- .
, .3.48, ,
, PCI (SCSI-, ..),
ISA.
USB, .
, PCI. , . ,
. 5,
3,3, PCI .
( , 5 PCI 3,3, ).
, ,
.
, . : 32- 64-. 32- 120 ; 64-
120 64 . PCI,
64- , 32-,
. , PCI
33, 66. .
,
, .
1990- ISA
, .
, (
16001200 ),
, , Intel ,
. AGP (Accelerated Graphics
Port ). , AGP 1.0,
264 /, 1.
( PCI)
.
, AGP 3.0 2,1/ (8). AGP3.0
, PCI Express, 16/
.
Corei7 .3.49.
Corei7
. DDR3,
243
. 3.49. Corei7
1333/,
10 / .
PCI Express 16 , 16- PCI Express 8-
PCI Express. 16 -
16 /.
P67 DMI (Direct Media Interface) 20 /
(2/). P67 -. 8 PCI Express SATA. P67
15 USB 2.0, 10G Ethernet .
ICH10 .
P67 DMI. ICH10
244 3.
. 3.50. PCI
245
, PCI.
, , . ,
, .
,
.
, ,
. (
)
.
, -
, GNT#. ,
GNT#,
. ( ) ,
, .
PCI
PCI (.3.4)
(.3.5). ,
.
, .
(, CLK), .
3.4. PCI
CLK
AD
32
PAR
C/BE#
-, , -,
, ,
( )
FRAME#
,
AD C/BE
IRDY#
,
;
(33
66)
246 3.
3.4 ()
IDSEL
DEVSEL# 1
TRDY#
, AD;
STOP#
PERR#
SERR#
REQ#
GNT#
RST#
3.5. PCI
REQ64#
ACK64#
AD
32
32
PAR64
32
C/BE#
4 ,
( )
LOCK
64-
64-
247
SBO#
SDONE
INTx
JTAG
IEEE 1149.1
JTAG
M66EN
(66
33)
PCI .
(32-) ,
(64-). CLK . . PCI CLK,
, .
AD ( 32) ( 32 ).
,
. PAR AD. C/BE# . (
, ..).
4 , , 32- . C/BE#, 1, 2 3 ,
.
FRAME# , . ,
. FRAME#
IRDY#. ,
. IRDY# ,
.
IDSEL , PCI
256 ,
( IDSEL). . (Plug and Play, PnP)
, , .
, . DEVSEL# ,
AD . DEVSEL#
,
, , ,
, .
248 3.
TRDY#.
, , AD, ,
, .
.
, STOP#, ,
- .
, PERR#,
. , .
, . ,
SERR# .
REQ# GNT# . , , ,
. , RST#, , RESET, - . .
, 32 64 . REQ64# ACK 64#
64- , . AD, PAR64
C/BE# 32- .
32 64 . . PCI
, . LOCK
.
,
.
INTx . PCI
,
. JTAG
IEEE 1149.1 JTAG. , M66EN , , .
.
PCI
PCI ( , ).
, .3.51.
, ,
.
T1 AD C/BE#.
FRAME#, .
T2 , T3.
C/BE#, ,
.
249
T3 DEVSEL#.
, .
AD TRDY#,
.
, DEVSEL#,
, TRDY# ,
.
.
( ) .
, T5
. . . AD
, . T7
.
PCI Express
PCI
, - . 3.50
250 3.
, PCI ,
. .
,
-, PCI.
, ,
. ,
PCI (
, , ..), Intel ,
PCI. ,
.
PCI .
PCI 17,510,7 ,
12,53,6 . , .
.
,
, .
PCI .
, ,
, PCI
Express, Intel. ,
PCI; .
PCI ,
. .
, .
PCI Express
PCI Express
.
, ISA/EISA/
PCI, (
Ethernet). : , , -,
. , PCI Express , .
PCI Express .3.52.
, , .
( ).
-, , , , .
. -
251
( ), .
.
PCI Express
PCI. , ,
. . ,
PCI, ,
. PCI Express , . , , .
, , ,
PCI. . , , PCI Express,
.
. , PCI
. ,
50 , .
, , , , . , PCI
252 3.
Express , , . ,
PCI-, . ,
PCI Express PCI.
PCI Express
, PCI Express . , .
, ,
. .
, , , , , .. . ,
, ,
. . , ,
, . ,
,
. PCI Express
.
PCI Express .3.53, .
.
. .
() .
, 2, 4, 8, 16
32 . , , (lanes).
.
2,5/
, , ,
10/.
ISA, EISA PCI, PCI Express . ,
253
, . , , , . , 1 +3, 0 0.
, , ?
. 8/10-
. , 1
10- . 1024 10- ,
. 8/10-
, 2,5/,
2/.
.
, ,
CRC (Cyclic Redundancy
Check ). CRC-
.
, .
, .
. ,
PCI, .
,
, .
, .
, . , ,
.
. ,
,
DMA, , ( ). ,
, . , , ,
. (
) ,
.
, , ,
, ,
.. , , ,
.
254 3.
:
(
);
- ( );
( ..);
( , ..).
- ,
. , (PnP).
.
, PCI Express PCI
.
PCI Express . ,
PCI, , PCI Express, - . ,
PCI Express ,
, ,
PCI Express. , .
, PCI Express, .3.53,.
, , , .
, , CRC-. ,
,
. ,
.
. PCI Express , ,
, .
PCI Express, , .
PCI Express .
[Mayhewand Krishnan, 2003; Solari and Congdon, 2005]. 2007 PCIe2.0.
500/ 32 ,
16/. 2011 PCIe3.0, 8/10-
128/130-, 8
, PCIe 2.0.
255
USB
PCI PCI Express , PCI - (, )
. -
,
ISA- PCI-. ,
.
, - ISA PCI.
,
.
, , . .
, ISA- PCI- ( ).
(PnP) ,
. .
1993 (Compaq, DEC, IBM, Intel,
Microsoft, NEC Nothern Telecom) , ,
.
.
USB (Universal Serial Bus ),
.
USB [Anderson, 1997; Tan 1997].
, :
;
,
-;
,
;
- ;
127
;
(,
, );
;
;
-
.
USB . (, , , , -
256 3.
..).
(USB1.0) 1,5/. 1.1 12 /,
, .
2.0 480/c,
, -
. USB3.0
5/; , .
USB (root hub),
(. .3.49). (
) , - ,
. , USB ,
. ,
.
:
, (+5) . 0
, 1 ,
.
- .
, ,
.
, ,
(1127)
. ,
,
ISA PCI. 0, .
. ,
.
USB -.
16 (, ).
. -
.
(0,05 )
, . , .
, ( ). .3.54
.
257
. 3.54. USB
0 2 ,
SOF (Start of Frame ).
. 1 (, ). 3
, - (, ).
USB 4 : ,
, .
, .
(, ),
. ,
.
(, )
, . ,
, USB .
, , , 50 .
. . : ,
, .
.
SOF, IN OUT .3.54 . SOF (Start of Frame
) , .
, SOF .
IN . , . IN ,
, , ( ).
258 3.
OUT , .
, SETUP ( ),
.
. ( 64 ),
. (DATA)
.3.54. 8- , 8- (PID), 16- CRC-
. : ACK (
), NAC ( CRC-) STALL
( , ,).
.3.54. , .
0 2 SOF, ,
. 1 , SOF IN,
-,
DATA . ACK ,
.
NACK, (,
). 3 1,
.
1998 USB , , USB,
USB2.0. USB 1.1
, 480/.
, , . USB1.1
UHCI OHCI. UHCI (Universal Host
Controller Interface -)
Intel, (
Microsoft). OHCI (Open
Host Controller Interface -),
( Intel). USB2.0 ,
EHCI (Enhanced Host Controller
Interface -).
USB 480 /,
IEEE1394 (FireWire),
400 / 800 /. Intel USB 2.0 USB 3.0 (. ),
1394 ,
, . USB
, 1394 .
, . , .
USB 2.0 USB 3.0. USB3.0
259
5 /, , ,
. USB3.0 USB,
USB 2.0. , USB 2.0 USB3.0 .
, -.
.
, TI OMAP4430.
, . -.
.
-
, . UART, USART, CRT,
PIO. UART (Universal Asynchronous Receiver Transmitter
) -,
.
UART : 50 19200/; 5
8 ; 1, 1,5 2 ; ,
. USART (Universal Synchronous
Asynchronous Receiver Transmitter -
) ,
, UART.
UART
, - PIO.
PIO
PIO (Parallel Input/Output -) Intel 8255A (.3.55).
24 -
(, , , , ).
0 1
, . ,
PIO, ,
, . PIO .
260 3.
. 3.55. 8255A
PIO 3- , , 8-
(0) (1).
- . 8-
. ,
8- , 8- ,
. ,
.
PIO. ,
. , , 8255A
,
, .
.
PIO . 3.55 ,
24 8255A , , ,
, .
,
A, B C,
.
. 24- PIO ,
.
,
-.
16- , ,
EPROM 28 ,
28 PIO.
.
, EEPROM .
261
PIO :
- . PIO -,
, , -, .
- (memory-mapped I/O). 4
. - . -
, .
EPROM 2 ,
2, PIO 4 .
64K , ,
. .3.56. EPROM 2, 32 34, PIO 4 , 65532 65535. ,
,
. PIO -,
( -).
EPROM
16- 00000xxxxxxxxxxx ( ).
, , 0, 2, EPROM. , EPROM
5- ,
00000.
:
, A11
A15. 0 ,
0. CS.
. 3.57, a; .
. 10000xxxxxxxxxxx, ( ). PIO , 4- 11111111111111xx.
, CS
, ,
262 3.
. 3.57. (); ( )
. - ,
.
,
PIO, . ,
EPROM ( EPROM) A15 0.
263
, CS A15,
.3.58,.
8000H . , 10xxxxxxxxxxxxxx,
. , , 11, PIO.
- .
, .3.58,, , . 0001000000000000,
0001100000000000 0010000000000000 .
EPROM. ,
, , ( ),
,
.
(. .3.12).
, ,
8, 8 .. ,
8 88 , . 8 28,
,
8. ( ,
- .)
, , . ,
, -, - . ,
.
, , , , .
(FPGA) .
,
, .
. .
.
. ,
,
.
264 3.
,
. , .
: , , PROM, EPROM, EEPROM, -.
: ,
. , , ,
.
.
( )
. , . .
.
Corei7 . , PCI USB.
PCIe ,
. ARM ,
ARM ,
. Atmel ATmega168
, , .
, , ,
-.
- .
, .
1. , .
? .
2. : , ,
- . ,
( ), ,
, . ,
.
? (
, .)
1) .
2) -.
3) .
4) - .
5) .
265
6) - .
7) .
8) , .
3. , ,
. , .
, . ,
. ?
4. , X = (X Y )
(XY).
5. 4 16
. ? n ?
6. 4 16
. ?
7. , , -.
8. , .3.11,
, 1 ,
1.
9. , .3.11, . , ,
, 0, , , , 1,
(, 0000= = 0;
0010= = 1; 0111= = 0; 1101=
= 0). : D. VCC, , D D.
10. ,
4 2 . 1.
,
1.
11. ,
.
12. ?
266 3.
13. 4- .
16- .
, 4- ? ?
14. n n , i,
Ci, i 1. 0,
C0 0.
T, i iT
. n
. , . : Ci
() Ai 1 Bi 1, Ci 1. , Ci 0
i 1, .
15. .3.18
1, ,
() ?
16. , .3.19, 8-
. ?
, , . , ,
.
17. 16- 16 ,
10.
1,
?
18. , 8- (., , .3.19) 1. ,
.
.
19. S R SR-,
-?
20. .3.25 , . ,
, .
21. 43, .3.28, 22 .
, 2568?
22. .
, D-,
Q Q. 4
( ).
.
.
267
23. , , , , .
.
2n
, n.
24. 32-
1M1. ( ), ?
25.
.3.35. ,
20 10, .
, T3 ,
MREQ?
26. .3.35. ,
100, TAD 4. 10?
27. .3.35, , TML
3. ,
? ,
MREQ ? , .
28. , .3.39 ,
.3.35.
( )? ,
8, 32 . ?
29. .3.36. TA1
TA2, MREQ TMREQ1 TMREQ2 ..
, .
30.
.
, PC, Ethernet?
31. ?
? -
?
32. PCI?
33. 32-
16 . ,
? .
34. . ?
35. 32- , 200, 4 , 32- .
?
268 3.
269
46. , mn,
-. (
) j k . j, k, m
n .
,
. j ,
- -. k , - -.
.
2j .
, (
) ,
.
.
47. , , .
( ),
, .
.
.
4.
.
2 ( ), .1.2. ,
, .
, (, , RISC). (, Corei7)
;
. , ,
.
, .
, , , .
. .
Java.
, IJVM (Integer Java Virtual Machine Java ).
, IJVM.
IJVM . 1, .
IJVM ,
.
( ),
, IJVM-.
Oracle JVM,
,
. Oracle JVM C
,
.
,
3, ,
271
IJVM. , ,
( ).
,
. . .
, , ,
. 2.3.
,
. .
,
. , .
( ), .
.
IJVM- . , , .
. (,
, - ).
, . , ,
,
, , .
, -, (, IJVM).
, , ,
. , .
, (
- ), . .4.1.
IJVM-,
. 32- ,
(, PC, SP, MDR). , ,
( ). ,
,
.
B.
C. C
. A , , .
, .3.17 .3.18.
. .4.1
6
272 4.
. 4.1. ,
273
.
(+) , () ,
A A.
4.1.
F0
F1
ENA
ENB
INVA
INC
A+ B
A+ B+ 1
A+ 1
B+ 1
B A
B 1
AB
A B
, .4.1, :
(A) (B). H.
B,
, , .
, .
H ,
( B) .
, ENA ,
0. B 0, .
( ) H.
,
. . SLL8 (Shift Left
Logical ) 1 , 8 . SRA1 (Shift Right Arithmetic
) 1 ,
.
274 4.
.
, , SP B,
, INC SP,
1 ( .4.1).
,
? , . , B
. ,
C.
, ,
C .
, B.
. .
.4.2 , .
.
, .3.19,.
, . w. ,
B. x.
. y
. z
,
. -
. 4.2.
275
, -
C
. , B,
. MPC
MIR, . .
,
, .
B C ,
( ). ,
, , ( ) ,
B, .
,
; ; C .
, ,
.
.
1 .
, .
.
1. (w).
2. B (x).
3. (y).
4. C (z).
.
,
,
C, . .
w+ x .
w + x+ y.
, , , , , C.
,
, w + x+ y + z
.
:
(32-) (8-). : MAR (Memory Address Register ) MDR
(Memory Data Register ),
276 4.
.4.1. 8- PC,
1 8 MBR (Memory Buffer Register
). ,
.
, ,
.4.1, . ,
B. MAR B,
. H ,
.
,
( ) C. MBR
C,
( , ). ,
,
( .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, 3 ..
,
232, 4. MAR 1, 4; MAR
2, 8 .. MAR
.4.3.
, , 8- ,
8- MBR.
B : .
277
. 4.3. MAR
, 32- , B, MBR
8- 24- .
16-
( ) .
8- MBR 32-
128 +127 32-
. ( ) MBR 24 B.
, .
, 24 0,
1 ,
MBR: 0 1.
32- ( )
8- MBR, ,
( MBR .4.1) .
8- MBR
32- B.
, .4.1, 29 . :
9 C ;
9 B ;
8 ;
2 , ,
MAR/MDR ( );
1 , ,
PC/MBR ( ).
29
. B,
,
278 4.
C (). ,
,
MAR . MBR
MDR , ,
. ,
k,
k+ 1 ( k+ 2 ).
, ,
.4.2.
MAR PC, 1. ,
, MBR /
MDR .
, MAR
. ,
, MDR , .
. . ,
, .
, , , - ( ) 100%.
,
, .
MBR MDR
, ,
. ,
, . :
MBR MDR
, . ,
, (
). , .
.
C ,
B
( , ). ,
, B. 9 ,
B ( MBR
). , B
4 16 , 7
279
( , ,
, ,
, , ,
).
9+ 4+ 8+ 2+ 1= 24
, , 24 . 24
. ,
. , , 24 : NEXT_ADDRESS
( ) JAM.
. .4.4 .
6 , 36 :
Addr ;
JAM , ;
ALU ;
C , C;
Mem ;
B B ( ,
).
. 4.4. Mic-1
,
, , .4.5.
.
.
Mic-1
, -
280 4.
. 4.5. Mic-1
. ,
,
.
:
;
, .
4.5 , Mic-1.
, . , ,
. :
281
(), ,
(), .
. ,
, . ,
, MBR
MDR. , .
512 ; 36- ,
.4.4. ,
512 .
, ,
, ( ), .
2.1 , , ,
. ( )
. .
,
.
, . MPC (MicroProgram
Counter ). , ,
, .
MIR (MicroInstruction Register ).
, , .
MIR, .4.5, , .4.4. Addr J ( , JAM) . .
ALU 8 ,
. C C. M
.
, 4 , ,
B.
, 9
. , 4 9 . , . , ,
, .
, ,
.
, .4.5, . ( .4.2) MIR -
282 4.
, MPC.
MIR w, (. .4.2).
MIR,
. B, ,
. . w+ x .
y N Z ,
. N Z 1-
. , , C
, ,
. ,
. 3.
, z, ,
C, .
(. .4.2). 4 N Z.
, ,
, MPC . ,
.
, , , . MIR.
MPC 9- NEXT_ADDRESS ( ).
, JAM. 000,
, NEXT_ADDRESS
, MPC .
JAM 1,
. JAMN 1, N
MPC. JAMZ 1, Z MPC.
1, .
, N Z. ,
( ) B ,
.
N Z MPC, ,
.
.4.5 , ,
. :
F = (( JAMZ Z ) ( JAMN N )) NEXT_ADDRESS [8]
, MPC
:
1. NEXT_ADDRESS.
2. NEXT_ADDRESS ,
.
283
. NEXT_ADDRESS
1, JAMN JAMZ.
, JAM 0,
9- NEXT_ADDRESS. JAMN
JAMZ 1,
( 0x , ): NEXT_ADDRESS
NEXT_ADDRESS, 0x100 (, NEXT_ADDRESS 0xFF). 4.6 .
0x75 NEXT_ADDRESS= 0x92,
JAMZ 1. , Z, .
Z 0, 0x92. Z
1, 0x192.
. 4.6. JAMZ, 1,
284 4.
, , ,
N Z. .4.2.
1, , , MPC, MIR. 2
MIR , B . 3 . 4
C, . C, N Z, MBR
MDR ,
( ).
MBR , MPC. -
,
MBR MDR. MPC ( )
, .
, MPC ,
MBR, N Z, . ,
, MPC .
, . , B,
, C , ,
MPC.
.4.5. MPC , 9
. .
.
, MIR, .
MPC. MPC
, , . MPC ,
:
. MPC ,
.
IJVM
, (ISA),
IJVM (. .4.5).
, . IJVM, .
(), .
IJVM 285
, .
: ?
. ,
. 5.
, ,
,
.
. ,
. - , , LV,
.
.4.7,. A a1, a2 a3,
, , LV. , SP, A.
LV 100, 4 ,
SP 108.
LV. LV SP ( )
.
. 4.7. : A();
A B(); B
C(); C B , A
D()
, , A
, B. 4
B (b1, b2, b3, b4)? : ,
A, .4.7,. ,
LV B.
B LV. B C, LV SP
C, .4.7,.
C , B ,
(. .4.7, ), LV
B. B ,
(. .4.7,). LV
, SP .
286 4.
, A D, 5 . .4.7,. D B C. .
, .
,
.
. , B A :
a1 = a2 + a3.
, a2 ,
.4.8,. SP ,
(, 4), .
a3, .4.8,. (
.)
. 4.8.
, , , ,
.4.8,.
a1, .4.8,.
.
, f x2+ f(x),
(x2) . x2,
.
,
, .
, JVM, IJVM .
5.
IJVM
IJVM.
, 4294967296
(4), 1073741824 ,
4. , Java
, , , . IJVM-
.
:
IJVM 287
. , IJVM-,
, ,
.
. CPP (Constant
Pool Pointer ),
.
. . , ,
.
( ) . , .
. , . LV (Local Variable ).
.
. , Java. ,
.4.9.
. , . , CPP LV,
,
.
. , , . ,
. (Program
Counter, PC). , .
. 4.9. IJVM
288 4.
. CPP, LV SP
, , . , LV, LV+ 1 LV+ 2
, LV, LV+ 4 LV+ 8 ,
(16) .
PC, , ,
, .
PC , Mic-1
PC.
. PC ,
. SP , .
IJVM-
IJVM- .4.2.
(, ).
.
.
.
4.2. IJVM-. byte, const varnum 1.
disp, index offset 2
Hex
0x10
BIPUSH byte
0x59
DUP
0xA7
GOTO offset
0x60
IADD
0x7E
IAND
;
()
0x99
IFEQ offset
0x9B
IFLT offset
0x9F
IF_ICMPEQ offset
; ,
0x84
0x15
ILOAD varnum
0xB6
INVOKEVIRTUAL disp
0x80
IOR
;
( )
IJVM 289
Hex
0xAC
IRETURN
(
)
0x36
ISTORE varnum
0x64
ISUB
0x13
LDC_W index
0x00
NOP
0x57
POP
0x5F
SWAP
0xC4
WIDE
;
16-
.
(LDC_W), (ILOAD) (BIPUSH).
(ISTORE).
( IADD ISUB)
(IAND IOR). , . 4 :
(GOTO), (IFEQ, IFLT
IF_ICMPEQ). PC ,
.
16 . .
(SWAP),
(DUP) (POP).
,
. , JVM , IJVM .
. ,
WIDE
.
, (INVOKEVIRTUAL)
, (IRETURN). - . , , Java,
,
. Java,
. ( - , .
Java - , C Pascal.)
290 4.
, JVM, , , CALL, ,
.
.
. .4.10,
OBJREF.
( 1,
2 3). INVOKEVIRTUAL.
. 4.10. INVOKEVIRTUAL();
()
INVOKEVIRTUAL , .
, . 4 . 2
16- ,
( ).
OBJREF 0. 16-
SP OBJREF. , LV
IJVM 291
OBJREF, . ,
LV, - .
2 16-
,
. , ,
,
. , , .
, (. .4.10).
, , ( ).
. , LV OBJREF. OBJREF
, PC.
(+ ) , LV.
, PC,
, LV. . SP
LV, .
, SP . ,
SP , . ,
.
, INVOKEVIRTUAL PC .
IRETURN INVOKEVIRTUAL (.4.11).
, , , , , -, OBJREF ; -, ,
, OBJREF.
, IRETURN PC
LV. ( , LV). ,
OBJREF, INVOKEVIRTUAL ,
PC. , ,
PC LV . ,
, , OBJREF, SP
. ,
INVOKEVIRTUAL.
-.
. , Java,
, JVM -.
, - . (
JVM .)
292 4.
. 4.11. IRETURN();
()
IJVM
, Java IJVM. 4.1
Java. Java
IJVM,
4.2. 115 , (//)
. . Java ,
4.3. ( Java
.) i
1, j 2, k 3.
4.1. Java
i=j+k;
if(I==3)
k=0;
else
j=j1;
IJVM 293
4.2. IJVM Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ILOAD j
ILOAD k
IADD
ISTORE i
ILOAD i
BIPUSH 3
IF_ICMPEQ L1
ILOAD j
BIPUSH 1
ISUB
ISTORE j
GOTO L2
L1: BIPUSH 0
ISTORE k
L2:
// i=j+k
// if(i==3)
// j=j1
// k=0
4.3. IJVM
0x15
0x15
0x60
0x36
0x15
0x10
0x9F
0x15
0x10
0x64
0x36
0xA7
0x10
0x36
0x02
0x03
0x01
0x01
0x03
0x00 0x0D
0x02
0x01
0x02
0x00 0x07
0x00
0x03
. j k ,
, i. i 3
. , L1,
k 0. ,
IF_ICMPEQ. L2, else then.
, 4.2,
.4.12. , 0. ILOAD j ( 1 ). 1 ,
. ILOAD , 2.
IADD ,
j+ k.
i, .
5 (ILOAD) if. i .
3 ( 6).
(7). 8 else.
12, L2.
294 4.
. 4.12. ,
4.2
- . . , ,
, . , ,
.
,
, 36 . ,
. ,
, ,
, . ,
, .
,
.
.
,
, .
,
.
, .
, . , .
.
: ,
,
.
,
. ,
295
SP . , , 122
. :
ReadRegister=SP, ALU=INC, WSP, Read, NEXT_ADDRESS=122
WSP SP. ,
.
:
SP = SP + 1; rd
, - ,
, , :
MDR = H + SP
, H
SP MDR.
( , ),
:
MDR = SP + H
36- , , ,
H .
;
:
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
DEST
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
H
SOURCE
H
SOURCE
H + SOURCE
H + SOURCE + 1
H + 1
SOURCE + 1
SOURCE H
SOURCE 1
H
H SOURCE
H SOURCE
0
1
1
296 4.
, (
1)
H. , , :
H = H MDR
,
H. , , .
. , 1 SP SP MDR, :
SP = MDR = SP + 1
4 rd wr.
1- fetch.
. , , .
, , Mic-1
. 4- MAR MDR.
rd wr . 1-
PC MBR. fetch.
.
. :
MAR = SP; rd
MDR = H
MDR . MDR.
, .
, . ,
, , . ,
(
297
)
NEXT_ADDRESS,
.
,
. :
goto
,
. ,
, :
goto Main1
,
, goto. NEXT_ADDRESS. goto ,
, ,
. ,
goto, ,
, goto .
. , JAMN
JAMZ N Z . , , .
, .
:
TOS = TOS
, ( Z TOS).
MAL,
N Z, . :
Z = TOS
TOS ,
Z ( N), .
Z N , 0 C (. .4.4).
, ,
. , ,
N Z. , , . (, ,
IBM PC 4,77.)
JAMZ,
:
if(Z) goto L1; else goto L2
, 8
, .
, L2 256
, .
298 4.
:
Z = TOS; if(Z) goto L1; else goto L2
MAL , TOS , ,
Z. Z
MPC ,
L2, L1.
MPC , .
, , JMPC:
goto (MBR OR )
,
NEXT_ADDRESS JMPC, MBR
MPC NEXT_
ADDRESS. value 0, :
goto (MBR)
IJVM
Mic-1
, .
.4.3 ,
Mic-1 IJVM. 112 . .
, , . , .
4.3. Mic-1
Main1
PC = PC + 1; fetch;
goto(MBR)
MBR ;
;
nop1
goto Main1
iadd1
MAR = SP = SP 1; rd ,
iadd2
H = TOS
H =
iadd3
299
isub1
MAR = SP = SP 1; rd ,
isub2
H = TOS
isub3
iand1
MAR = SP = SP 1; rd ,
iand2
H = TOS
iand3
ior1
MAR = SP = SP 1; rd ,
ior2
H = TOS
ior3
dup1
MAR = SP = SP + 1
SP 1 MAR
dup2
pop1
MAR = SP = SP 1; rd ,
pop2
H =
H =
H =
,
TOS
pop3
TOS
swap1
MAR = SP = SP 1; rd MAR
SP1;
swap2
MAR = SP
MAR
swap3
H = MDR; wr
TOS H;
swap4
MDR = TOS
TOS MDR
swap5
MAR = SP 1; wr
MAR SP1;
swap6
TOS
bipush1
SP = MAR = SP + 1
MBR = ,
300 4.
4.3 ()
bipush2
PC = PC + 1; fetch
PC 1;
bipush3
iload1
H = LV
MBR ; LV H
iload2
MAR = MBRU + H; rd
MAR = ,
iload3
MAR = SP = SP +1
SP
;
iload4
PC = PC + 1; fetch; wr
PC 1;
;
iload5
TOS
istore1
H = LV
MBR ; LV H
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
wide1
PC = PC + 1; fetch
wide2
goto(MBR 0x100)
wide_iload1
PC = PC + 1; fetch
MBR ;
wide_iload2
H = MBRU << 8
H = ,
8
wide_iload3
H=MBRU H
H = 16-
wide_iload4
wide_istore1
PC = PC + 1; fetch
MBR ;
301
wide_istore2
H = MBRU << 8
H = ,
8
wide_istore3
H = MBRU H
H = 16-
wide_istore4
ldc_w1
PC = PC + 1;fetch
MBR ;
ldc_w2
H = MBRU << 8
H = ,
8
ldc_w3
H = MBRU H
H = 16-
ldc_w4
MAR =
iinc1
H = LV
MBR ; LV H
iinc2
MAR = MBRU+H; rd
LV
MAR;
iinc3
PC = PC + 1; fetch
iinc4
H = MDR
iinc5
PC = PC + 1; fetch
iinc6
MDR;
goto1
OPC = PC 1
goto2
PC = PC + 1; fetch
MBR = ;
goto3
H = MBR << 8
8 H
goto4
H = MBRU H
H =16-
goto5
PC = OPC + H; fetch
OPC
goto6
goto Main1
iflt1
MAR = SP = SP 1; rd
iflt2
OPC = TOS
TOS OPC
iflt3
TOS = MDR
TOS
iflt4
302 4.
4.3 ()
ifeq1
MAR = SP = SP 1; rd
ifeq2
OPC = TOS
TOS OPC
ifeq3
TOS = MDR
TOS
ifeq4
if_icmpeq1
MAR = SP = SP 1; rd
if_icmpeq2
MAR = SP = SP 1
MAR
if_icmpeq3
H = MDR; rd
if_icmpeq4
OPC = TOS
TOS OPC
if_icmpeq5
TOS = MDR
TOS
if_icmpeq6
Z = OPC H; if(Z)
goto T; else goto F
, T; ,
F
OPC = PC 1; fetch;
goto goto2
, goto1;
PC = PC + 1
F2
PC = PC + 1; fetch
PC
F3
goto Main1
invokevirtual1
PC = PC + 1; fetch
MBR = ;
PC 1;
invokevirtual2
H = MBRU << 8
8
H
invokevirtual3
H = MBRU H
H = CPP
invokevirtual4
MAR = CPP+H; rd
invokevirtual5
OPC = PC + 1
PC OPC
invokevirtual6
PC = MDR; fetch
PC ;
invokevirtual7
PC = PC + 1; fetch
invokevirtual8
H = MBRU << 8
8
H
invokevirtual9
H = MBRU H
H =
303
invokevirtual10 PC = PC + 1; fetch
invokevirtual11 TOS = SP H
TOS = OBJREF1
8
H
invokevirtual15 H = MBRU H
H =
invokevirtual16 MDR = SP + H + 1; wr
OBJREF
SP MAR
, PC
PC
invokevirtual19 MAR = SP = SP + 1
SP ,
LV
LV PC
invokevirtual21 PC = PC + 1; fetch
LV
ireturn1
SP MAR
MAR = SP = LV; rd
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
304 4.
305
, .4.2 , , POP,
0x57, , DUP,
0x59. ( MAL , POP 0x57? , - .)
, , POP,
, ,
DUP. , , ,
, , .
,
, .
, , , MBR
0x60, IADD (. .4.2).
, , :
1. PC ,
.
2. MBR. IJVM-,
( IADD,
).
3. , MBR
Main1. , . . , ,
, .
,
.
, - ,
, .
MBR 0 (
NOP), nop1,
0. ,
, , MBR.
, , .4.3, , Main1
0 ( nop1). ,
NEXT_ADDRESS. ,
(, POP 0x57),
, .
306 4.
IADD. iadd1.
:
1. TOS ,
.
2. TOS ,
.
3. , ,
TOS.
,
MAR. , . ,
, SP.
, SP MAR, SP
1 .
(iadd1).
. , MPC
NEXT_ADDRESS iadd1. iadd2.
iadd2 . ,
, TOS H,
, .
(iadd3) MDR ,
. H,
MDR TOS. ,
, .
goto Main1 MPC,
.
IJVM-, MBR, 0x64 (ISUB),
. Main1
0x64 (isub1). isub2,
isub3, Main1. , isub3 H
MDR, .
IAND IADD ISUB,
( ),
. IOR.
DUP, POP SWAP, . DUP .
TOS, SP 1.
SP .
TOS. POP :
SP 1, .
TOS. , SWAP
307
, . TOS , ()
. .
BIPUSH ,
, .4.13.
. , MBR
Main1, 32 ( ) MDR. SP
1 MAR, .
TOS. ,
PC
1 , Main1
.
. 4.13. BIPUSH
ILOAD.
(.4.14,), ( ),
,
, . 1 ,
28= 256 , 256 . ILOAD (
), ( ).
, , MBR
( ), LV.
MBR LV B, LV
H ( iload1), MBR.
MAR, ( iload2).
MBR , BIPUSH,
. ,
( BIPUSH, 8-
). MBR B
, . BIPUSH (
8- ) MBR
24 B. ILOAD (
8- ) 24 B
308 4.
. ,
(. .4.5). MBR ( bipush3), MBRU
( iload2).
( iload3),
SP 1 .
MAR ( ).
PC 1
( iload4). , MDR
TOS, ( iload5).
ISTORE ILOAD ( ,
LV ).
, ILOAD (. .4.14,),
0x15, 0x36. ( TOS), .
,
, , (
, ).
ILOAD ISTORE 256 . ,
,
. , IJVM
, JVM WIDE (
), ILOAD
ISTORE. , ILOAD
ISTORE ;
8-, 16- , .4.14,.
WIDE .
wide1, WIDE.
, , MBR,
wide1 ,
.
, , WIDE.
WIDE ILOAD ILOAD , WIDE ISTORE ISTORE ..,
,
Main1.
wide1
0x100 , MPC.
WIDE LOAD 0x115 ( 0x15), WIDE ISTORE
0x136 ( 0x36) .. , WIDE , 256 ( 0x100)
, . ILOAD WIDE ILOAD .4.15.
WIDE ILOAD ILOAD ,
. -
309
,
8 H. , MBRU (24
). (
, H
0), , .
H.
, ILOAD.
( iload3 iload5) ILOAD, wide_iload4 iload3. ,
PC 1 ,
. ILOAD
; WIDE_ILOAD
.
WIDE_ISTORE.
( wide_istore1 wide_istore4) , ISTORE ,
wide_istore4 istore3.
LDC_W. ILOAD . -, 16-
( ILOAD), -,
CPP, LV, ,
. (
LDC, IJVM,
310 4.
,
3 2.)
IINC , ISTORE, .
, .4.16.
. 4.16. IINC
,
. ,
( )
. , 8-
128 +127. JVM
, 2 .
GOTO. PC , IJVM-
, 16- ( ) GOTO.
, , PC
, ,
2 .
, .4.17,. , Main1.
MBR, PC . .4.17,
goto1. PC
1, MBR.
(.4.17,) PC, , OPC. ,
, PC GOTO.
OPC.
goto2 ,
, .4.17, ( goto3).
8 H,
goto4 (.4.17,).
, , H,
MBR, OPC. goto5
16-
, PC. , goto4
MBR MBRU,
. 16-
( ) . ,
Main1 , MBR
, . , goto6, ,
MBR.
311
. 4.17. :
Main1(); goto1( ); goto2(); goto3( ); goto4()
312 4.
. , TOS , ,
. IFLT. ,
, TOS, IFLT , TOS. iflt1.
iflt2 OPC,
TOS,
. iflt3 ,
MDR, TOS. , iflt4
( OPC) , N. ,
T, F.
, ,
GOTO, goto2. , (F, F2 F3),
(), Main1
.
ifeq2 ifeq3 , N Z. , F T , .
IF_ICMPEQ IFLT, . H
if_icmpeq3, .
OPC, TOS.
, if_icmpeq6 ifeq4.
INVOKEVIRTUAL IRETURN. IJVM-
IJVM, . INVOKEVIRTUAL
22
IJVM.
.4.10. 16-
.
. ,
4 , 16- .
( OBJREF . .4.10),
( ). 8- , 16-
.
, , PC
. ,
, PC ,
Main1 .
IRETURN .
, ,
313
.
SP, LV PC
, .4.11.
( ) .
: , , , , , .
.
, ,
, , .
.
,
. ,
:
1. , .
2. ,
.
3. , .
,
, , ( ) .
,
.
, ,
. . , PC
( , ,
),
PC , , , .
, . ,
PC ,
, , , .
, , , , PC
1. , .
314 4.
(8- PC MBR),
.
, .
, .
2- , H (, PC n ).
16 , , 16
, 32
.
. .
. . ,
. ,
.
, .
,
. ,
, . ,
, .
(, , ),
, , .
, .
, . , ,
, (, ).
.
, . ,
.
.
,
.
,
, , ,
.
, . , -
, -
315
.
.
,
. , ,
. ,
,
.
. .4.5.
, ,
, ,
4 . , .
. ,
, ( B) . ,
. ,
C .
, ,
, , .
,
. 5 ,
.
,
.
, .
Mic-1
,
. , ,
, . Mic-1 : 10 , (. .3.18), 32 , , ,
. 5000 ,
(), ().
, IJVM ,
. .
,
( ),
.
Mic-1 ,
IJVM-. . -
. , Main1
316 4.
MBR.
(
), .
. .
. , Main1.
( ),
(
). Mic-1
, .
.4.4
POP. , POP. , 4 :
POP .
4.4. POP
pop1
MAR = SP = SP 1; rd
pop2
,
TOS
pop3
Main1
PC = PC + 1; fetch;
goto(MBR)
MBR ;
;
.4.5 ,
pop2 . , ,
3 .
, , , IADD .
250 ( 4)
333 ( 3).
4.5. POP
pop1
MAR = SP = SP 1; rd
Main1.
pop
PC = PC + 1; fetch
MBR ;
pop3
317
POP , , , .
, ,
, .
, - , Main1 .
. ,
:
.
3-
?
, A B; , .
( )
. . ,
, ILOAD
(.4.6).
4.6. ILOAD
iload1
H = LV
MBR ; LV H
iload2
MAR = MBRU + H; rd
MAR = ,
iload3
MAR = SP = SP + 1
SP ;
iload4
PC = PC + 1; fetch; wr
PC 1;
;
iload5
Main1
PC = PC + 1; fetch;
goto(MBR)
MBR ;
;
, iload1 LV H.
, H MBRU iload2.
, H. 3- , .4.7.
ILOAD,
. .
:
2- 3- .
318 4.
4.7. ILOAD
3-
Iload1
MAR = ,
Iload2
MAR = SP = SP + 1
SP ;
Iload3
PC = PC + 1; fetch; wr
PC 1;
;
Iload4
TOS = MDR
TOS
Iload5
PC = PC + 1; fetch;
goto(MBR)
MBR ;
,
. -
:
. , :
PC 1;
PC ;
;
;
, .
( ),
, .
, . PC ,
. ,
, , .
- ,
.
,
. ,
. , , . , ,
TOS MDR MDR TOS,
.
Mic-1 ,
. ,
(Instruction Fetch Unit, IFU), PC , . IFU ,
, . .
319
8- 16-
, , .
:
IFU , ,
, ,
.
IFU 8- 16-
, .
,
.
.4.18.
8- MBR MBR: 8- MBR1 16- MBR2. IFU
, . ,
MBR, Mic-1,
, ,
MBR1. Mic-1, B: MBR1 MBR1U.
32 , .
. 4.18. Mic-1
MBR2 , 2 .
B: MBR2 MBR2U, , 32 .
. 4- , 4-
,
, .
320 4.
MBR1 MBR2.
MBR1 , MBR2
2 ( ), 16- (. .4.14, ). MBR2
, IJVM-
.
, MBR1,
1 . MBR2 2 . MBR1 MBR2
.
, ,
. , MBR ,
.
(Finite State Machine, FSM), .4.19.
( ) (
).
, .
, , .4.18.
, ( 0 6
).
MBR1: MBR1
MBR2: MBR2
: 4
. 4.19.
.
.
MBR1. , , ( 1).
2 MBR2.
, 2 (, 2 0 -
321
5 3).
MBR1 MBR2. 0, 1 2, , (,
).
4.
,
, - ,
(, MBR2,
1 ,
). ,
,
. , PC
. .
.
,
IMAR , . ,
PC
. C,
PC PC
IMAR. PC
,
.
PC ,
.
, INVOKEVIRTUAL IRETURN.
PC
, PC .
? IFU , ,
MBR1 MBR2 ( )
. PC ,
1 2 , . , PC .
MBR .
, ,
. PC 1
2. IMAR 1 ( ). MAR, IMAR
: 0 IMAR 2 ..
.
, PC
, , , PC,
. , .
. , :
.
322 4.
Mic-2
. -, ,
. -,
PC. -, IFU
, 16- , -
. 4.20. Mic-2
323
16- 32- H.
.4.20 Mic-2
Mic-1, , .4.18.
.4.8.
4.8. Mic-2
nop1
goto (MBR)
iadd1
MAR = SP = SP 1; rd
iadd2
H = TOS
H =
iadd3
isub1
MAR = SP = SP 1; rd
isub2
H = TOS
H =
isub3
iand1
MAR = SP = SP 1; rd
iand2
H = TOS
H =
iand3
ior1
MAR = SP = SP 1; rd
ior2
H = TOS
H =
ior3
dup1
MAR = SP = SP + 1
SP 1 MAR
dup2
pop1
MAR = SP = SP 1; rd
pop2
pop3
swap1
MAR = SP 1; rd
;
MAR SP
324 4.
4.8 ()
swap2
MAR = SP
swap3
H = MDR; wr
TOS;
swap4
MDR = TOS
TOS
MDR
swap5
MAR = SP 1; wr
TOS
swap6
TOS
bipush1
SP = MAR = SP + 1
MAR
bipush2
TOS
iload1
MAR = LV + MBR1U; rd
LV
MAR;
iload2
MAR = SP = SP + 1
SP 1;
SP MAR
iload3
TOS
istore1
MAR = LV + MBR1U
MAR
LV+
istore2
MDR = TOS; wr
TOS
istore3
MAR = SP = SP 1; rd
SP 1;
TOS
istore4
istore5
wide1
0x100
wide_iload1
iload1,
2-
wide_istore1
MAR = LV + MBR2U;
goto istore2
istore1,
2-
ldc_w1
wide_iload1, CPP
iinc1
MAR = LV + MBR1U; rd
MAR
LV+ ;
325
iinc2
H = MBR1
iinc3
goto1
H = PC 1
PC H
goto2
PC = H + MBR2
PC
goto3
goto4
goto (MBR1)
iflt1
MAR = SP = SP 1; rd
iflt2
OPC = TOS
TOS OPC
iflt3
TOS = MDR
TOS
iflt4
ifeq1
MAR = SP = SP 1; rd
ifeq2
OPC = TOS
TOS OPC
TOS
ifeq3
TOS = MDR
ifeq4
if_icmpeq1
MAR = SP = SP 1; rd
if_icmpeq2
MAR = SP = SP 1
MAR
if_icmpeq3
H = MDR; rd
if_icmpeq4
OPC = TOS
TOS OPC
if_icmpeq5
TOS = MDR
TOS
if_icmpeq6
, T; ,
F
H = PC 1; goto goto2
, goto1
H = MBR2
,
MBR2
F2
goto (MBR1)
invokevirtual1
invokevirtual2
OPC = PC
PC
OPC
326 4.
4.8 ()
invokevirtual3
PC = MDR
PC
invokevirtual4
TOS = SP MBR2U
TOS = OBJREF 1
invokevirtual5
invokevirtual6
MDR = SP + MBR2U + 1;
wr
OBJREF
invokevirtual7
MAR = SP = MDR
SP MAR
,
PC
invokevirtual8
MDR = OPC; wr
PC
invokevirtual9
MAR = SP = SP + 1
SP 1; SP ,
LV
LV
LV
ireturn1
SP MAR
MAR = SP = LV; rd
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
, Mic-2, IADD.
,
Main1 ,
PC .
, iadd3
MBR1, -
327
MBR1 MBR2. ,
. 2, . .
. IADD
.
Mic-2 , . LDC_W 9 3 , ,
, . , SWAP 8 , 6.
, ILOAD ( 6, 3), IADD ( 4, 3)
IF_ICMPEQ ( 13, 10 , ; 10, 8
, ). , , ,
, .
Mic-3
, Mic-2 Mic-1. ,
,
. , Mic-2 . ,
.
?
.
,
. , , ,
, ( ,
). .
.
Mic-2
. , ,
, .
,
.
.
, , . .4.2
. :
1. ,
A B.
2. , .
3. , .
328 4.
.4.21 3-
(), . .
,
.
, Mic-3.
. 4.21. Mic-3
329
? 3 :
A B, ,
C, - C . , ? (: .)
:
1. ,
.
2. .
, .
,
, . ( , ,
.)
,
-
- , ,
, . , ,
.
, . Mic-2
.
, ,
.
, Mic-3.
- . A, B C , . .4.9
Mic-2 ( SWAP).
4.9. Mic-2 SWAP
swap1
MAR = SP 1; rd
; MAR SP
swap2
MAR = SP
swap3
H = MDR; wr
TOS;
swap4
MDR = TOS
TOS MDR
swap5
MAR = SP 1; wr TOS
swap6
TOS = H; goto
(MBR1)
TOS
Mic-3. ,
: A
330 4.
B, C, . .
SWAP Mic-3 .4.10. 1
swap1, SP B. , A, 1 B,
ENA ( A) (. .4.1).
, . 2
. 3 MAR
, , .
, .
MDR 4. MDR
.
4.10. SWAP Mic-3
Swap1
Swap2
MAR = SP 1; MAR =
rd
SP
1
B = SP
C = B 1
B = SP
MAR = C; rd
C=B
MDR = Mem
MAR = C
Swap3
Swap4
H=
MDR =
MDR; wr TOS
B = MDR
C=B
H = C; wr C = B
Mem =
MDR
Swap5
Swap6
MAR = SP 1; TOS = H;
wr
goto (MBR1)
B = TOS
B = SP
MDR = C C = B 1
B=H
MAR = C; wr
C=B
10
Mem = MDR
TOS = C
11
goto (MBR1)
2. swap2
. 2 SP B, 3 , ,
MAR 4. . ,
,
.
, Mic-3 ,
Mic-2. , .
, 3 .
swap3, MDR
, MDR 5. , ,
, -
331
332 4.
. 4.22.
, .
, ,
. ( 1 )
. ,
, . .
, .
Mic-4
, .
333
, , swap6,
, ,
.
.
( ) Mic-4. .4.23, , . Mic-3,
(IFU),
MBR.
. 4.23. Mic-4
. , IJVM-. () :
IJVM- .
IJVM- ,
, ,
334 4.
. 1 (, POP), ,
. 2 ,
, ,
.
WIDE, ;
, WIDE ILOAD WIDE_ILOAD.
, , , .
,
. , IJVM .
, , , wide_iload2 iload2, Mic-2, .
, .
(. .4.4),
NEXT_ADDRESS JAM ,
A. :
. ( ).
,
. .
JAM . ,
- ,
(, iflt4), .
. .
, , .
, .
.
,
. ,
IJVM-.
, IJVM-
. MIR,
. , : . A B , , C
, .
, 4
MIR .4.23. ( .4.2 w) MIR3 MIR4, MIR2
335
. 4.24. Mic-4
336 4.
,
.
( ), .
,
. , , ,
, .
,
.
, , .
,
, .
, , ,
, . ,
80386 80486, Pentium
(, Core i7)
, .
. , ,
, ,
. , ,
.
,
.
80- RISC-, .
(IntelIA-64) 5.
.
337
, , .
-, ,
, .
-
,
, .
, , .
.
, , ,
,
.
( ),
( , ).
, .
. , ,
Mic-3, ,
, .
, , Mic-3, .
, .
-.
- 2, ,
. -, .
-.
( -). -
, -,
. Mic-1
: . ,
.
. - -
. ,
- . .4.25
-.
338 4.
(L1-I) (L1-D)
16 64. - (L2),
,
. - . - . 512 1. - (L3) , ,
,
, . ,
- - , - - .
. 4.25. -
,
-. ,
,
. , - ,
. ,
. , , , , .
,
- -. ,
.
- .
,
339
. (
4 64). , 0,
32 , 0 0 31, 1 32 63 ..
- .
, - ,
-. ( -),
, . -
( -), ,
-
. ,
-
, - .
-
- - .
- .4.26,.
- 2048 . ()
.
32 ( ), - 64.
- :
,
. , .
340 4.
16- ,
, .
.
32 .
-
. , , -.
4, .4.26,:
, .
, - , -.
, .
, ,
, . -,
32- , 0.
,
11 -
2048 . ,
-. , , . -.
- -
. -
, . - () ,
. -. 32-
-,
, . - , ,
.
, . ,
, -. ,
-, , ( ). - ,
, .
-. , - 64
. ,
64 (65536 ) , ,
- ( ). , X,
, X+ 65536 (
),
-. , -
341
. - , ,
,
, .
- , , , ,
1. ,
. , ,
,
. ,
.
-
,
. ,
-, .4.26,, 0
65536, , -
. , ,
- . - n n-
-. 4- - .4.27.
. 4.27. 4- -
-
, - , , n
1
- ,
. ,
. . . .
342 4.
-, , .
. ,
2- 4- - , .
-
.
-, ?
,
(Least Recenly Used, LRU).
, . , , LRU
, ,
. - , ,
, ,
.
2048- , 2048 .
,
2048 -. ,
- . ,
. ,
, 2048 .
2048 , LRU
. (,
.) , -
-, , .
.
, - . , -, ,
, -.
-.
?
,
LRU. .
. ,
, ,
. ,
,
, , .
: ,
- , -? ?
. ,
343
, -.
(write allocation). , , , -
, .
,
.
. [Sanchez and Kozyrakis, 2011; Gaur et. al, 2011].
. ,
.4.23, ;
.
,
, , .
, .
. 4.4. i 0 (,
). ,
k, .
4.4.
if(i==0)
k=1;
else
k=2;
4.5.
, , , 4.5,
. i .
Else ( else), i 0.
1 k.
.
Next. 2 k.
4.5. 4.4
Then:
Else:
Next:
CMP i, 0
BNE Else
MOV k, 1
BR Next
MOV k, 2
;
;
;
;
;
i 0
Else,
1 k
Next
2 k
, .
, , BNE, (,
344 4.
, ,
CMP).
,
.
, ,
BR Next 4.5, .
, , .
( , )?
. .4.23, ,
, . ,
, , , . ,
, ,
. (, UltraSPARCIII) ,
,
. (delay slot).
Corei7 ( , 4.5)
, .
- , , ,
NOP.
, .
. -, , -, ,
, . , , .
, 20%
, .
,
. , , ,
, .
, , , .
.
(, ). ,
. ,
, ,
, . , .
,
. . ,
. , ,
345
, .
, .
. ,
,
(, ). , , ()
, , , , . (,
) ,
.
.
. ,
, ,
.
, , . ,
[Chen et al., 2003; Falcon et al., 2004; Jimenez, 2003; Parikh et al., 2004].
( ) , ,
. ,
. .4.28,.
. , ,
, ,
. ,
.
, .
.
-.
32- , ,
00. 2n
(). n+ 2
. n-
, , , ,
. -,
n+ 2 , (
). , .
, , .
/.
, , 4096 ,
0, 16384, 32768 . . ;
346 4.
. 4.28. 1- ();
2- ( );
()
. : 2-, 4- n- .
-, n- .
.
. , , ,
, ,
. , ,
.
, .
,
, . -
347
(.4.28, ): ,
, .
(.4.29).
00 , . , 01,
. ,
, 11, . ,
, ( ).
2 , 4, 8 .
. 4.29. 2-
, . .4.19
.
,
, ,
.
.
, .
, ( ),
( ,
). , ,
.
, .4.29,
, ,
. , ,
.4.28,. , , ,
348 4.
516, 4000,
4000 ( , ).
,
k , .
k- , , k-
, ,
. , .
, ,
, .
, . ,
,
.
, . :
for (I = 0; i < 1000000; i++) { ... }
, ,
.
, .
( ), , UltraSPARCIII,
( ),
. ,
, . ,
, . ,
, .
,
[Fisher and Freudenberger, 1992]. , ,
, . ,
; ,
, , .
, .2.5. ,
(IFU),
. , , .
349
, .
, ,
(,
). - .
, ,
, . , .
, .
,
() . , ,
, . , .
, , , , , ,
. .
8 , R0 R7.
:
, Mic-4. ,
n, n+ 1.
, ,
n+ 2.
, ,
n+ 3. ,
. 4 6 .
.4.11.
, ,
. ( ). , .
, , , , k+ 1
k, k+ 1
, k.
16 .
, .
. , , ,
, , .
(scoreboard), CDC 6600.
,
350 4.
, .
15, 4- . ,
, , 1. ,
1.
. ,
. 16 .4.11
.
, , . , ,
.
.4.11 1,
R0 R1 R3.
, ,
, R0 R1 , R3 .
R3 ,
1. ,
4. , ,
,
. 0.
,
,
1. R0 R2,
R4. , ,
:
1. - , (RAW).
2. , (WAR).
3. , (WAW).
(RAW-
), , , .
. , . WAR- (Write After Read ) ,
. WAW- (Write After
Write ) WAR-.
, - (, ).
3
3
1
1
18
17
16
15
R1=R4+R4
1
1
14
R3=R3R1
1
2
1
1
2
2
1
1
13
12
11
10
R1=R0 R2
4
5
4
R7=R1R2
1
2
3
1
2
1
1
1
1
1
1
1
1
R5=R0+R1
R6=R1+R4
1
2
2
1
3
4
R3=R0R1
R4=R0+R2
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4.11.
352 4.
,
. 2 R0,
,
, 2 . 3
2.
4, R4. , , R4
(. 3 ). RAW-,
, R4
. .
, .
, , 5,
. ,
, .
, 3. 2,
( ), 3. R4 ( 4). ?
-
. ? ,
R4 ?
. , .
, .
, , - , ,
, [Moudgill and Vassiliadis, 1996]. ,
.
. 4
, 5 4,
5. , -
, , ,
.
6 6 ,
R1, R1 . 9. 8 , 15 - , .
.4.11 ,
.
: .
. .4.12
,
.
3
4
5
6
1
1
2
2
2
2
2
2
3
2
1
1
1
1
1
1
2
1
4
4
4
3
2
3
3
3
2
2
1
1
4
5
8
3
3
3
2
1
3
4
3
3
3
1
2
1
3
R3=R3S1
S2=R4+R4
5
6
R7=R1R2
S1=R0 R2
1
2
R5=R0+R1
R6=R1+R4
R3=R0R1
R4=R0+R2
7
8
1
2
1
1
1
3
2
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
1
1
1
1
1
1
1
1
1
1
1
3
3
3
4.12.
354 4.
3. 4 , 5,
.
. , 5 , 4.
.
, ,
. , , , ,
( ). , ,
,
.
68 .4.11. ,
6 R1
7. , ,
8 R1.
R1 6. ,
R1 ,
,
, .
.4.12
(register renaming). R1 6 ( 3) 7 ( 4) S1.
6 5.
,
. WAR- WAW.
8 . R1
S2, ,
R1, 6.
, R1,
S2 . , , ,
, .
, 8 .
( )
. ,
. , R0,
0 . R0 ,
R0 .
, .
.4.12. ,
.
: , .
355
, .
.
.
,
. (, if while),
.
.
, .4.30. - evensum oddsum (4.6).
, , .
4.6.
evesum=0;
oddsum=0;
i=0;
while (I<limit) {
k=i*i*i;
if(((i/2)*2)==i)
evensum=evensum+k;
else
oddsum=oddsum+k;
i=i+1;
}
. 4.30. ,
4.6
356 4.
, ,
.
, ,
. , .
LOAD,
. .
.4.30. , ,
evensum oddsum, .
LOAD k,
, ,
. ,
, LOAD ,
- ,
. , ,
, .
, , ,
.
,
.
.
, , , , ,
. 4.6 .4.30.
, k (
if), . , ,
, ,
. , ,
.
,
. , ? LOAD, - (, 256 ) ,
, . LOAD
, , , .
, , ,
, .
, ,
. (
, 6, -
357
LOAD .
,
.)
. SPECULATIVE-LOAD,
-, ,
.
, , ,
. ,
, .
:
if (x > 0) z = y/x;
x, y z . ,
,
( ) if. , x 0,
0. ,
.
, , , .
,
. ,
(poison bit).
, ,
. ,
( ).
, .
, ,
. , , ,
. , ,
, Corei7, OMAP4430 ATmega168.
Core i7
, Corei7 CISC- , 8-, 16- 32-
, 32- 64-
. 8 ,
. 117 . ,
, .
358 4.
, Corei7
RISC- . , , , . ,
Intel ,
. , Corei7 .
Sandy Bridge
Corei7, Sandy Bridge, , P4 P6.
Corei7 .4.31.
. 4.31. Corei7
Corei7 : ,
, . ,
.
Corei7
(L2), 3 (L3).
3 ,
. L2 Corei7 256;
8- - 64- .
L3 1 20. Intel,
. L3
359
12- 64- .
,
DDR3.
(
),
L1 , .
, . , /
.
(, 0x1000...0x1020...0x1040...),
, , , . ,
.
.4.31 , L1.
,
RISC . L1 ( ). L1 32, 8- -
64- . L1 , ,
.
CISC- RISC.
,
Intel L0 ( ). ,
, .
, ,
. , Intel
( ,
), Intel ,
. 80 %
.
. ,
,
. Corei7 . ,
.
, , .
, .
360 4.
, . ,
. ,
. ,
- ,
.
, ,
. , , ,
, (, ..).
, WAR- WAW-
.
, Corei7 ,
ISA-
.
.
,
. , .
.
Sandy Bridge Core i7
.4.32 Sandy Bridge,
. , . x86 .
, 1,5K .
6 .
, .
.
,
. , , , ,
. ,
.
, . , , -,
, -, ,
. .
361
. 4.32. Corei7
if
. , .
, BTB. BTB
. (,
). (, C++
switch)
BTB .
.
(
) , 168
(ReOrder Buffer, ROB).
, . , . , . ,
, .
, ,
; ,
.
362 4.
. 154 , 64
, 36 .
. ,
; , , . , , WAR- WAW.
160 , ,
.
RAW-
( ), ROB. ,
,
.
:
1. 1 .
2. 2 / .
3. 3, .
4. .
5. 1.
6. 2.
, Corei7 3 18 ; ,
.
,
,
.
. 1 , . 2
. 3 , .
.
, ,
,
.
128 . , . , ; ,
.
, (EAX, EBX, ECX, EDX
..),
, .
363
364 4.
,
.
, , Corei7 ,
Pentium RISC-
. Pentium
, ( ) , , .
,
- .
Omap4430
OMAP4430 ARM CortexA9. Cortex A9 ,
ARM ( 7).
ARM Ltd;
. ARM , ,
( Texas Instruments).
Cortex A9 32- 32- 32- . , , 32-. Core i7 Cortex A9 RISC-.
,
CISC- . . ,
, .
Cortex A9
CortexA9 .4.33.
, Sandy Bridge,
Corei7,
. Corei7
. , . ,
, ;
- Cortex A9 (L2) 1 ;
Corei7,
(L3) 20 . ,
CISC-, .
.4.33 4-
32 32- .
365
. 4.33. Cortex A9
OMAP4430
ARM 4 , 8000
, Corei7.
. -
. 4000 ;
. ,
,
( , ),
( ).
,
.
, , . Corei7,
WAR-,
.
,
(, ).
.4.33,
.
.
, ISA, .
CortexA9
, . ARM VFP
SIMD, NEON.
366 4.
/ . .
32 , 4- L1 32- .
, (
).
,
, Corei7.
, .
,
.
L1 ,
L2. Cortex A9 L2 L1,
.
OMAP 4430
. : . 32-
LPDDR2. .
LPDDR2 26- 8 ,
32- .
LPDDR2 2 . OMAP4430 ,
4 .
32- 32- . Cortex A9
(.6) 4. ,
(Translation Lookaside Buffers, TLB).
, .
Cortex A9 OMAP4430
CortexA9 11 ;
.4.34. .
. Fe1 (Fetch 1 1).
.
, ,
,
, .
, Fe2
.
Fe3 ( ) .
367
368 4.
, .
.
Iss (Instruction Issue),
. ,
.
( ),
. Corei7,
CortexA9 , . .
.
Ex (Execute).
,
. ( L1),
. Ex :
1. 1 .
2. 2 .
3. .
4. SIMD (, VFP NEON).
5. .
Ex,
/ .
, Fe1 .
,
WB (WriteBack),
. ,
,
. ,
, , .
Corei7. , WB
L1.
Cortex A9 , Corei7.
ATmega168
Atmel ATmega168
.4.35. Corei7
OMAP4430. , , , .
ATmega168 , .
, ,
.
369
ATmega168 8- . , ,
-. .
32 8- ,
.
(, , , , ), .
, .
, .
.
ATmega168 .
1 8- .
AVR
8- ; 16- , 64 . EEPROM 1
, ,
.
370 4.
,
64 , .
AVR
(RAMPX, RAMPY RAMPZ), 8 . 16-
24- ,
16 .
: 64 ,
.
1964 IBM System 360 Model 30,
64 ( ). $250000, . ATmega168 $1 .
Boeing, ,
250000 50 .
, , .
, ATmega168 , (SPI) , . 8-
-, ATmega168 24
, , .. ATmega168
.
ATmega168
, , .
: . , .
, ,
.
, . ,
.
ATmega168 ,
, .4.35,
, . ATmega168 ( ),
, -, .
, ,
, .
371
Intel ,
. OMAP4430 RISC . ATmega168 8-
.
, .
, Corei7 OMAP4430
. , , .
. ,
- .
, . Mic-3 Mic-4, ,
, , . .4.22
.
.
Corei7 OMAP4430 ,
ISA- . Core i7
CISC-, 3- ,
. .4.32 . OMAP4430
,
. ISA RISC,
.
, Mic-4,
. Mic-4 Core i7.
, RISC-.
, , .
. Mic-4
,
. Corei7 , , - .
Mic-4 OMAP4430 ,
OMAP4430 RISC- ( 3- ).
, . ,
, .
Corei7 OMAP430, ATmega168 .
RISC, CISC,
.
, . ,
. ATmega168
Mic-1.
372 4.
. , , ,
, .
.
.
,
. , .
, ,
. , ( ). .
IJVM 1- , ,
(, ).
Mic-1.
,
,
.
:
2- 3- ,
, ,
.. Mic-1
,
. Mic-4, , 7- .
,
-. -
-
. -
( , ),
.
, Core
i7, OMAP4430 ATmega168, , . Cori7
ISA- , ,
RISC- ,
,
. OMAP4430, ,
, :
,
. ATmega168 .
373
1. ?
2. .4.5 B 4- , C
. ?
3. .4.5 . .
4. JMPC, MBR
NEXT_ADDRESS, . ,
JMPC, NEXT_ADDRESS
0x1FF?
5. , 4.1 if
:
k = 5;
,
?
6. IJVM
Java:
i = k + n + 5;
7. Java ,
IJVM:
ILOAD j
ILOAD k
ISUB
BIPUSH 6
ISUB
DUP
IADD
ISTORE i
8. , L2 256
:
if (Z) goto L1; else goto L2
L1 , , 0x40, L2
0x140? , .
9. if_cmpeq3 Mic-1
MDR H, TOS. , :
if_cmpeq3
Z=MDRTOS; rd
?
10. Mic-1,
2,5, Java-:
i = j + k;
374 4.
11. Mic-2,
2,5. , , Mic-2,
Mic-1 100?
12. Mic-1 , JVM- POPTWO.
.
13. JVM 1- 0 3,
ILOAD. IJVM,
?
14. ISHR ( ) JVM, IJVM.
().
.
0 31 , ( 27 ).
, .
ISHR 122 (0x7A).
1) ?
2) , IJVM.
15. ISHL ( ) JVM,
IJVM.
(). . 0 31 ,
( 2 ).
, .
ISHL 120 (0x78).
1) ?
2) , IJVM.
16. JVM- INVOKEVIRTUAL , . ?
17. JVM- DLOAD Mic-2. 1- , ,
. .
18. .
. , 4 2 ,
. (0, 0), ,
. (1, 0), , A
. (0, 0) (1, 0) A.
(0, 1), , B ,
375
(0, 1) B.
, .
19. . ,
, ?
, ?
20. , , .4.29.
.
21. , .4.18,
6 . 5- ? 4-?
22. .
. -
, , 12 ? , ?
, ?
23. Mic-2 if_icmpeq6
T, Z 1.
T , goto1. goto1
?
24. Mic-4 IJVM- , . ,
IJVM . IJVM- , ,
Mic-1. ?
25. ?
?
26. -. , 60 %
- - ,
35% - , 5% -. 5, 15 60 ,
-
, , (, - ,
- - ).
?
27. - , ,
. ?
?
28. .4.27 4- - 3- -.
, ,
3 , .
376 4.
, 4- -. ? .
29. . ?
30. . , 20% ?
.
31. ,
20. 4 ,
90%.
,
?
32. , , .4.11, 16 8.
6, R8 .
, 6?
33. . - WAW-,
? ?
34. Mic-1 , LV
, .
35. 1- -
. .
.
5.
(ISA).
.1.2,
.
.
, ( )
.
:
. ,
,
, C, C++, Java , .
. ,
,
, .
, , ,
;
.
. , , . .5.1 ,
.
. 5.1.
378 5.
, ,
,
. - , (,
),
. , - (,
, ),
,
. , ,
.
. . , , : ? :
? :
? ,
. ,
.
, ,
.
.
, .
, , - ,
.
,
, .., ,
.
, .
,
.
.
.
25%. ,
.
, (,
379
) .
, .
? . -, , ,
.
,
.. ,
, . ,
,
,
.
-,
, . , . ,
,
. ,
,
( ), (
).
,
. , .
, ,
.
, ,
,
.
, : ,
(
). , ,
380 5.
, , ..
.
, , ,
.., , . ,
; , .
, , ,
, , , . ,
,
, . ,
,
.
, ,
. , ARM v7 ( 7 ARM ISA) ,
ARM Ltd. ,
.
ARM ,
ARM,
. ,
, ARM (
). , , , ,
.., , .
,
, , , .
, , , , , . ,
, , ,
, :
.
:
.
, -
; , . ,
.
381
, ARM v7 ,
,
ARM .
IA-32
( x86) Intel , Intel- .
, ,
. 1990- Intel IA-32.
- ,
, , Intel
.
Intel - Intel
(http://developer.intel.com). Intel
Corei7 4161 ; ,
Corei7 .
,
, , .
.
.
. (, ,
-).
.
, .
8, 1 60 (. .2.1).
8 ( ). 8- , ASCII- 7,
( ) .
, Unicode UTF-8 , 8.
4- (32-) 8-
(64-) , . ,
. , 4- 0, 4, 8
.., 1 2. 8
0, 8 16, 4 6. 8-
.5.2.
,
. , Corei7,
8 DDR3,
64- . , Corei7
, ,
8.
382 5.
. 5.2. 8 : ();
( ). ,
. Corei7 , , 8088
1, ,
8- . Corei7 4- 7,
, 0 7, 8
15. 4 16,
, , 4-
. , .
, .
,
, . : ,
8088 ?
: .
,
0 - , 232 264.
, 8 8
.
383
, , .
-, 32-
232 232 . -,
, , ,
. ,
,
.
,
, - .
,
, : . -
, -
.
. ,
LOAD, STORE,
. , 4, .
, , ,
. ,
,
.
. ,
, , .
,
( ,
).
,
, ,
SYNC, , .
, , ,
.
,
(, , RAW- WAR-),
. (
, ), .
, , , - .. , ,
.
384 5.
, . ,
, .
, (, TOS MAR
.4.1), ,
, , . , ,
, .
: .
, ,
.
.
,
( ). RISC-
() 32 ,
.
. , R1,
R25. .
. , Corei7 EDX,
, ,
, (
).
,
. ,
, .
R1, , R1 ,
,
R1 .
- , , , ,
.
, ,
, . , , -,
. , .
385
, ,
. .
LOAD STORE,
, MOVE,
. ,
.
4 (. .4.2.), .
Core i7
: IA-32
Intel ( Corei7), ARM v7 ( OMAP4430) 8- AVR,
ATmega168.
.
,
. Corei7.
386 5.
Corei7 .
1, .
, 8086 8088 ( ), 8080 8- , 70-
. 8080, ,
8008, 4004 (4- , ).
8086 8088
16- ( 8088 8- ).
, 80286, 16-.
,
, 16384 64- ,
230- .
80386 32- ,
Intel. (80486, Pentium, PentiumPro, PentiumII,
PentiumIII, Pentium4, Celeron, Xeon, PentiumM, Centrino, Core 2 duo, Corei7
..) 32- ,
IA-32, .
80386 x86 MMX, SSE SSE2.
. 64- x86 ( x86-64),
64 . Intel,
, AMD.
Corei7 3 ,
8088. ,
8088, , Corei7 8088.
.
Intel ,
,
( , ,
, ..).
8086,
, 8088,
. 8088,
, 8088,
, , .
Windows MS-DOS,
8086
Windows DOS-.
, Corei7
Corei7, 8088. 4
, (PSW). 0 -
387
. .
3 . ,
- .
12 .
Corei7 . 16384
, 0 232 1.
( UNIX Windows)
,
232,
. . 32 .
( ).
Corei7 .5.3.
EAX, EBX, ECX EDX 32-. ,
. 5.3. Corei7
388 5.
OMAP4430I
ARM 1985 Acorn
Computers. , 80-
[Patterson, 1985; Patterson and Sequin, 1982]. ARM
( ARM2) 32- 26- . OMAP4430 ARM Cortex A9,
7 ARM,
. OMAP4430,
, ARM Cortex A9, .
OMAP4430
232. ( ); ,
.
, (little-endian) ,
(big-endian) .
, ,
, , ,
, . 32-
ARM ,
389
ARM (, )
232 . -, -
.
( ) ARM ARM 8
64- .
,
. , ,
. - , , 32- 4 ,
.
ARM ,
, .
( R15), ,
R15. ,
, ,
.
ARM : 16 32- 32 32-
( VFP).
R0R15, . .5.1.
5.1. ARM 7
R0R3
A1A4
R4R11 V1V8
R12
IP
( 32-
)
R13
SP
R14
LR
( )
R15
PC
32-;
.
, .5.1, ,
. , ,
,
ARM. ,
. ,
390 5.
, , ,
,
.
Vx , ,
, .
Ax , . , .
. IP
ARM (BL),
232 . ,
, IP. SP
, . LR
. PC
;
. ARM , PSR (Program Status Register)
. ,
, .
ARM ( VFP) 32 32-
. 32
, 16 64-
. ; ARM
.
ARM . , , , LOAD () STORE (),
.
( ),
( ).
ATmega168
ATmega168.
Corei7 ( ) OMAP4430 (
, ), ATmega168
( )
, .
ATmega168 .
391
ATmega168
. 8051 , .
. 16 1
. ,
,
.
, .
,
.
(ATmega48) 4 -
512 . -,
.
,
. ATmega88
: 8 1 .
ATmega168
.
; ,
. - .
, (
), ,
(
, -
). ,
.
- ,
.
: ,
. pple TiVo
, .
ATmega168 32 8- .
5- , . R0 R31.
ATmega168 :
. 0 R0 0.
R0, 0,
R0. 1 R1 ..,
R31. . 5.4.
32 , 3295, 64 ,
-,
.
4 8 , ATmega168
, .5.4.
( ): , ,
392 5.
. 5.4. ATmega168
, , , .
, , .
I /
. I 0, .
.
, , .
. I, .
SP ,
PUSH POP ( Java 4). - 80. 9-
1024 ,
.
.
, , , .
- .
. .
. ,
, -
393
. ,
, . , ,
,
, (
). , ,
.
, .
,
(
). 32- , 232 ( 4 ).
32- , 64 . ,
,
, .
, , . , .
: .
.
: 8, 16, 32 64 . (, , ),
(, ), .
, .
.
, .
, .
: ,
32- 0 2321 . , ,
2311, .
(, 3,5) . . 32, 64,
128 .
.
.
( COBOL)
. ,
COBOL,
394 5.
, (- ).
,
. 3.
. ,
2000 - COBOL, ,
(8 ),
16- 8- ,
(256), -
(100). !
,
,
.
, , .
. ,
. ASCII Unicode.
7- 16- .
2.
, . .
.
, , .
, . : .
: 0 , 1 ( ). ,
, ,
. :
0 , .
,
, 32- 32 . ,
. ,
,
. n ,
n .
, . . Mic-x
SP, PC, LV CPP .
( ILOAD)
.
395
,
. .
Core i7
Corei7 , ,
- IEEE
754 (.5.2). 8/16- ,
32- , , . , 64- ,
64- .
,
4 , .
5.2. Corei7
16
32
64
(64-)
(64-)
Corei7 8- ASCII-: .
, , ,
.
.
OMAP4430
OMAP4430 (.5.3). 8-, 16- 32- . OMAP4430
, Corei7. OMAP4430
32- 32- .
(, : LDRSB).
32- .
.
. , 32 64 , IEEE 754 ( 32- 64- ). -
. .
.
396 5.
5.3. OMAP4430
16
32
64
ATmega168
ATmega168 .
, 8 .
, , 8- (.5.4).
5.4. ATmega168
16
32
64
,
, , . , (
), .
.5.5 . .
, , .
,
. , ,
. , , ,
, . .5.6
.
397
. 5.5. : ();
(); (); ( )
. 5.6.
,
. .
, 40 .
, , ( ,
) .
, .
, ( 20 ) . ,
,
( IJVM), ,
( OMAP4430). , ,
,
:
20 ?
20 ?
,
20 , .
.
398 5.
, . ,
, ,
, .
. ,
n 16- ,
, n 32-.
, , , , , .
,
. ,
.
,
: ( , ).
.
, .
.
,
-.
- t /, r , -
t/r . , ,
, . , ,
( ), . , .
, . - ,
.
. , 2n
, n .
, ,
. ,
, .
. 8- ,
232 . 8, 16, 24 32 .
, ,
, ,
399
8- , , 32- .
232 0, 1, 2, 3,, 4294967295.
230 0, 1, 2, 3,, 1073741823.
, , 32- ,
, ,
. , , . 8- ,
, ,
.
32- ,
230 , 30 ,
8- 32
. , .
. , 32-
16 - 4.
,
, , . ,
(, Burroughs B1700). ,
(, CDC Cyber 60-
).
, ,
- , . , ,
, , . ,
Corei7 8 , - 64 .
, .
, .
n+ k k n .
2k 2n . n+ k k 1
n+ 1 . ,
, , .
k+ 1 n 1 ,
, .
.
.
400 5.
.
, 16 , 4 ,
.5.7. , 16
( , 4- ),
. 4- , 16 .
. 5.7. 4-
4-
15 , 14 ,
31 16 ,
0 14 , 15
- (.5.8).
, 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 , 0
15, 16 .
, :
4- , 8-, 12-, 16-.
.
, .
. ,
, ,
- . ,
,
.
,
, ,
. , ,
.
(, Intel432),
.
401
. 5.8. 15 ,
14 , 31 16 .
xxxx, yyyy zzzz 4-
. JVM, , ,
.
402 5.
Core i7
Corei7 .
, (
.5.9). - ,
. -
. ,
, . ,
, ,
.
. 5.9. Corei7
Intel 1 ,
. ,
, .
WIDE IJVM. ,
- Intel ,
, 0xFF, ,
.
Core i7
. , ,
, , ,
( ) .
, , , ,
, . ,
.
403
,
, , . 8 2- MOD
3- REG R/M. 3
, 11
. 2- ,
4
.
EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP,
, . , SIB (Scale,
Index, Base , , ), . ,
,
.
, 1, 2 4
(), 1, 2 4 , ( ).
OMAP4430
OMAP4430 16- 32-
, . . . ,
, . 16-
32- .
,
( ), 8 .
ARM ARM
Thumb.
3-, 8-, 12-, 16-
24- . LOAD ( 8- )
.
.
32- ARM . 5.10. , (,
LONG MULTIPLY SWAP). SWAP ,
SWAP , , MUL .
Thumb .
21 , . (
,
RISC-?) ,
, .
404 5.
26 27 , ,
. , 26 27 , 25
( ), ( MULTIPLY BRANCH EXCHANGE),
. 25 1,
, 0 4095.
.
16 , .
32-, 32-
. MOVT 16 32- , ,
16 . .
32- ( 28 31)
4- . , . , ( )
. ARM
(PSR),
(, , ..).
, .
,
. :
24 . 3-
. , .
, 225.
405
, ARM
,
( ) .
, 16- 32- .
ATmega168
ATmega168 (.5.11).
. 1
, ,
. , ADD
.
2 16 , 16
5- . , ,
1. , ,
. , .
3 8-
. 16- , ( ),
R16R31 ( ).
406 5.
, ,
(SUBCI, SUBI, ORI ANDI).
4 6- . , ,
/.
5 6 .
12- , PC . 22 , AVR 32 .
,
- . , , .
,
. . ,
.
, - , ,
. ,
; ,
. R1 4 .5.12.
. 5.12. 4 1
. . -, . -,
. .
.
. ,
:
. ,
407
. ,
, . ,
. ,
, , .
, . ( ),
.
, (, ), .
. (, ARM OMAP4420) .
, ( LDR)
( STR).
.
, , , . ,
. ,
, . ,
, , , .
,
, ,
1024- R1 . - , R2, , , R3, . 1024
4 . A,
A+ 4096. ,
, 5.1.
5.1.
LOOP:
MOV
MOV
MOV
ADD
ADD
CMP
BLT
R1,#0
R2,#A
R3,#A+4096
R1,(R2)
R2,#4
R2,R3
LOOP
;
;
;
;
;
;
;
R1, 0
R2 = A
R3 = A
R2
R2 (4 )
R2 < R3,
408 5.
.
() (,
#). R2 A,
A. #.
R3 .
, -
. .
, . BLT ,
8- , BLT. ,
. ,
Corei7,
,
Corei7 (MASM) 8088.
. A
R1, :
ADD R1, A
4. ,
:
ADD R1, A + 4
.
, ,
. ,
, ,
. .
, .
-
, -
( ,
). ,
.
( ).
. IJVM,
LV.
.
IJVM
(LV) ,
.4.14,. :
. , ,
409
. AB
1024 . AiBi ,
1024 , ,
, .
A , B ,
, ,
(. 5.1). , ,
, , 5.2.
5.2. ,
1024
MOV R1,#0
MOV R2,#0
MOV R3,#4096
LOOP:
MOV R4,A(R2)
AND R4,B(R2)
OR R1,R4
ADD R2,#4
CMP R2,R3
BLT LOOP
;
;
;
;
;
R1,
0
R2 = , i
A[i] B[i]
R3 =
; R4 = A[i]
; R4 = A[i] B[i]
; i = i + 4
; ?
; R2 < R3,
4 :
R1 ;
R2 i, ;
R3 4096 ( i);
R4 .
.
LOOP Ai R4.
. (R2) ( A) , .
,
. ,
,
:
MOV R4,A(R2)
R4 , A , R2 . A ,
, 124300, ,
.5.13.
. 5.13. MOVR4,A(R2)
R2 0 (
), A0
124300. R4. -
410 5.
R2 4, A1
124304 ..
, ,
, .
,
, ,
.
, (
). .
, . .
A R5, B R6.
LOOP:
LOOP:
MOV R4,(R2+R5)
AND R4,(R2+R6)
, . 8-
, .
32 , ,
. 8- 16- .
,
. . 4,
, IADD, . .
(x+ y), (xy+).
. ,
. (1958), .
. -,
. -,
. -, , . , , a b + c, , (a b)+ c,
a (b+ c), ,
.
? ? .
411
. ,
. (E.W.Dijkstra). ,
, +, , *, /,
. ,
.
.5.14 - , . . ().
,
. , , . ,
,
, .
. 5.14. ,
.5.15 ,
. ( ) .
:
1. .
2. , ,
.
3. , , , ,
( , ).
4. . , ,
, .
5. . .
.
412 5.
. 5.15.
,
( , , ), ,
. ,
4. , ,
, .
. .
,
. .5.5
.
5.5.
A + B C
ABC+
A B + C
ABC+
A B + C D
ABCD+
(A + B)/(C D)
A B + C D /
A B/C
ABC/
((A + B) C + D)/(E + F + G)
AB+CD+EF+G+/
. n ,
, .
: . ,
. , .
5.6 IJVM :
(8 + 2 5)/(1 + 3 2 4)
413
:
8 2 5 + 1 3 2 + 4 /
IMUL IDIV.
( ). ,
( ).
, IDIV : , , .
, IJVM- :
,
.
, , ,
.
5.6.
825+132+4 /
BIPUSH 8
25+132+4 /
BIPUSH 2
8, 2
5+132+4 /
BIPUSH 5
8, 2, 5
+132+4 /
IMUL
8, 10
+132+4 /
IADD
18
132+4 /
BIPUSH 1
18, 1
32+4 /
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
13
IDIV
, .
( )
. , ,
. , .
, . ,
414 5.
, . ,
. .
, ,
. , .
.
( ), , . , ,
.
.
.
,
. ,
, (FP), (SP)
(PC).
32-
(.5.16). 256 . 1 ()
(). .
. 5.16.
8-
. ,
,
. , 23,
2 , , 13- . LOAD STORE
.
415
(, ), 3 .
, () ,
.., 24 . , ,
32.
LOAD STORE, 3 .
(, LOAD STORE
R0), .
,
(.5.17). , ,
.
,
,
, . PDP-11
VAX, ,
- .
. 5.17.
8- , 12
. 3
, 5 4 . 3
, , ,
,
, , ,
. ,
, , .
, . PDP-11 VAX
.
32- , .
,
, 96
3 ( ).
RISC- 96 ,
, , , 4 ( ).
416 5.
, .5.17, .
32- ,
i j 16 ,
:
i = j;
, 16,
32- . 8- 4- ,
, , .
,
.
Core i7
Corei7
16- 32-. 16- , 32-.
, , , , . ,
. .
.5.10, . MOD
R/M.
REG. .5.7 32 2-
MOD 3- R/M. , 0,
, EAX.
5.7. 32- Corei7
(M[x] x)
MOD
R/M 00
01
10
000
M[EAX]
001
M[ECX]
010
M[EDX]
011
M[EBX]
100
SIB
SIB 8
101
110
M[ESI]
M[ESI + 8]
M[ESI + 32]
ESI DH
111
M[EDI]
M[EDI + 8]
M[EDI + 32]
EDI BH
SIB 32
11
ESP AH
01 10 , 8- 32- , -
417
. 8- ,
32- . , ADD R/M= 011,
MOD= 01 , 6, EBX 6
.
EBX .
MOD= 11 .
, .
, . ,
EBP ESP.
MODE SIB (.
.5.9). SIB .
SIB
1, 2, 4 8 ( SCALE),
, , 8- 32- , MOD.
, .
, SIB, . Java-:
for (i=0; i<n; i++) a[i]=0;
a 4- , .
EBP ,
, .5.18.
i EAX. a[i]
SIB,
4EAX, EBP 8. a[i] .
. 5.18. a[i]
? . ,
. , , ,
-
.
418 5.
. - ,
, , . ,
8088 - , , 20
, . , - , - .
OMAP4430
OMAP4430
, , . 5 ,
.
12- . ,
.
: (LOAD)
(STORE). . ,
.
13- . PC 13- . ,
,
.
ATmega168
ATmega168 .
. ,
. , . 8-
.
.
, ,
. 16- 7 (,
0 127). AVR 32- ,
16- , 64 .
, .
8 ,
16- .
64 . :
X, Y Z, R26/R27, R28/R29 R30/R31 .
, X, 8- R26 R27, .
419
Corei7, OMAP4430 ATmega168 . 5.8. ,
.
5.8.
Corei7
OMAP4430
ATmega168 AVR
. , , ( ATmega168),
. :
, .
,
.
,
. , , .
( , )
, .
,
,
.
, .
, ,
, , ,
.
, ,
, .
, , , ,
420 5.
, ,
, .
, , .
.
, . . ,
- - , ,
,
-. , 2000
- , ,
, 2000.
,
.
,
. : .
,
B, A, :
A = B
. , , . ( )
( ), 4
.
4, . LOAD , STORE
, MOVE
,
.
- ,
.
.
.
( )
.
(
), . , , , .
,
421
,
, ,
.
.
. ,
. , , .
.
16 , 16
.
, ; , -.
.
32 , 8- . ,
, . ,
, 8 , 24
( ).
, , , , .
.
A:
10110111 10111100 11011011 10001011
B ():
00000000 11111111 00000000 00000000
A B:
00000000 10111100 00000000 00000000
16 ,
.
.
. 8 32- , 24 ,
8 ,
.
A:
10110111 10111100 11011011 10001011
B ():
11111111 11111111 11111111 00000000
A B:
10110111 10111100 11011011 00000000
422 5.
:
00000000 00000000 00000000 01010111
(AB)C:
10110111 10111100 11011011 01010111
,
, . , , .
, ,
. , , .
, .
: ,
.
, IEEE754.
.
.
, , ,
.
.
. ,
, , , . , ,
, .
:
A:
00000000 00000000 00000000 01110011
A 2 :
00000000 00000000 00000000 00011100
A 2 :
11000000 00000000 00000000 00011100
.
n- k ,
, n k .
. ,
, ,
(0 1) , .
423
, , . 2 :
A:
1111111 11111111 11111111 11110000
A :
0011111 11111111 11111111 11111100
A :
1111111 11111111 11111111 11111100
2. k ,
, 2k.
k , , 2k.
. 18n, n .
18n = 16n + 2n. 16n n
4 . 2n , n 1 .
18n. ,
, ,
, . ,
,
.
. , , 1 .
1 3. 1
7:
1 :
11111111 11111111 11111111 11111110
1 1 (3):
11111111 11111111 11111111 11111100
1 2 (7):
11111111 11111111 11111111 11111000
2.
.
1 .
6 1, , 1/64 0:
1 :
11111111 11111111 11111111 11111111
1, 6 , 1:
11111111 11111111 11111111 11111111
424 5.
, ,
, .
2.
. ,
,
; ,
.
, :
.
,
. ,
.
. CLR
, ( 0).
.
ADD INC.
NEG. X
0 X, ,
NEG.
NEG NOT. NEG ( ,
0). NOT . , , , . (
NEG
, 1.)
,
, .
, .
,
.
.
x. , ,
. x,
.
, -
425
.
,
. , ( ).
.
(LABEL), 1 (
), , LABEL,
0 ( ),
, .
, ;
, , 1
, .
, .
, 1, (,
). .
( ).
. 1 ,
0 , , 1.
, ,
, 0.
, , .
,
, , ,
. Z .4.1
: ,
.
, , . , :
,
. ,
, . ,
- , .
, .
,
, ,
.. Corei7,
OMAP4430 ATmega168 AVR.
.
, .
426 5.
, , .
, , .
.
, ,
. 3-
. :
: 000, 001, 010, 011, 100, 101, 110, 111.
: 100, 101, 110, 111, 000, 001, 010, 011.
0 7,
4 +3
( ). : : 011
100? , .
.
,
. ,
. C , . Java
. ,
,
. , -
- ,
, .
: ,
.
. , ,
.
, .
, ,
. ,
. ,
, .
( , ,
, .) , A
B, B C, C A (, , ),
.
CDC 6600
427
, .
, -
. , . .
, .
,
, .
, , . 5.3. ( Java,
goto.)
5.3.
L1:
i = 1;
;
.
.
.
;
i = i + 1;
if (i<n) goto L1;
, n0.
, . . n , n , .
, , ( )
. n 0,
, .
428 5.
5.4 ,
n0. , ,
,
.
5.4.
L1:
i = 1;
if(i>n) goto L2;
;
.
.
.
;
i = i + 1;
goto L1;
L2:
,
:
for (i = 0; i<n; i++) { }
n, ,
n0, , 5.4.
, n > 0 (, ,
n), , 5.3. - FORTRAN ,
.
( 5.3). 1977 , FORTRAN ,
,
. C Java
.
-
,
-.
-:
- ;
- ;
- .
.
- . ,
, ( ). .
-.
-
429
. .
1- , .5.19. :
. : .
. - ,
4
, . -, IN OUT. -
.
. 5.19.
.
, . 6, . ( ). -
, 7 1. , ,
. .
. ,
, ,
. ,
, . ,
.
, ,
. ,
, .
- Java (5.5). :
430 5.
, , , ( ). , .
,
. in out
, . ,
, .
128 ( 7 ) 7,
.
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 = (status >> 7) & 0x01;
//
//
} while (ready == 1);
out(display_buffer_reg, buf[i]);
}
- ,
,
. .
(, , ), (
). - ,
,
-.
, ,
-,
.
.5.19. , ,
-.
, .
() .
( -) , ,
. ,
.
, .
431
-
-, . , -
.
-, - .
.5.20.
(), .
. 5.20.
4 . .
, . .
- -, . ,
.
32 100 (,
4), 32, 100 4
, (, 1) , .5.20. , ,
, 100 , ,
. ,
4 -,
.
1 1.
,
-.
432 5.
0, .
, - ,
. .
2, 3 , .
, - ,
, ,
, .
(
, - ) .
, ,
, , ()
.
Core i7
: Corei7, OMAP4430 ARM ATmega168 AVR.
, , ,
. Corei7
. .
Corei7 32- , , 8088. .5.9
,
:
SRC ;
DST ;
# , ;
LV .
5.9.
Corei7
MOV DST, SRC
SRC DST
PUSH SRC
SRC
POP DST
DST
DS1 DS2
SRC DST
433
ADD DST, SRC
SRC DST
SRC DST
MUL SRC
EAX SRC ( )
IMUL SRC
EAX 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
AAA
ASCII-
AAS
ASCII-
AAM
ASCII-
AAD
ASCII-
AND DST, SRC
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 / #
RCL/RR DST, #
DST #
TST SRC1, SRC2
SRC1 SRC2
JMP ADDR
Jxx ADDR
434 5.
5.9 ()
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
AH EFLAGS
SAHF
AH EFLAGS
SWAP DST
DST
CWQ
EAX EDX:EAX
CWDE
16- AX EAX
ENTER SIZE, LV
LEAVE
, ENTER
NOP
HLT
IN AL, PORT
OUT PORT, AL
WAIT
435
, , ,
(, 8- ). ,
Corei7.
Corei7 ,
. , ADD
, INC 1.
. ,
, ,
. .
(SRC) , (DST) . , , , ;
, .
: 8-, 16- 32- . / .
.5.9 32- .
. , :
, . . 64-
: EAX ( )
EDX ( ).
- .
4- . ( 0 9). 1010 1111
. , 16-
0 9999. ,
, . - .
COBOL.
.
,
. EFLAGS. Jxx
,
( EFLAGS).
Corei7 , , ,
. REP (repetition ),
,
(, ECX, 1
, 0). ,
436 5.
(, ..)
. .
,
. , , .
Corei7 . (REP) . ,
( WIDE IJVM). , REP
, , , ECX
0. REPZ REPNZ
, Z 1 0 . LOCK ,
. , 16- 32- .
,
. , Corei7 , , ,
( 8088).
. ,
.
OMAP4430
ARM ,
, .5.10,
:
S1 -;
S2IMM ( );
S3 - ( );
DST -;
DST1 - (1 2);
DST2 - (1 2);
ADDR ;
IMM ;
REGLIST ;
PSR ;
cc .
5.10. OMAP4430
LDRSB DST, ADDR
(8 )
(8 )
(8 )
437
(16 )
(32 )
STRB DST, ADDR
(8 )
(16 )
(32 )
ADD DST, S1, S2IMM
PSR
LSL DST, S1, S2IMM
TST DST, S1, S2IMM
438 5.
5.10 ()
Bcc IMM
PC+IMM
BLcc IMM
PC+IMM
BLcc S1
MOV DST, S1
IMM
MVN DST, S1
PSR
MSR PSR, S1
PSR
SWI IMM
, (, -,
), , , . . ,
OMAP4430 RISC-.
LDR STR .
1, 2 4 . (32-)
32, , .
.
. CISC , RISC-
,
, . A ... B ... C, A , B ,
C A B, C . ,
,
, .
, S , ADDS.
. ,
.
. 32- .
.
439
. CISC-
,
. .
.
AND (), EOR ( ), ORR (), TST, TEQ BIC.
,
, .
RISC- .
.
Bcc ,
. BLcc , (R14).
. RISC-,
.
MOV,
(R15).
. BLcc . 5.10 24- PC.
,
32 . BLcc
.
(, C++)
, 32 .
,
. MOVT - 32-
. MOVT 16
31, , . MRS MSR
(PSR). SWP . , 8. ,
SWI ,
.
ATmega168
ATmega168 . .5.11. ,
, .
MOV .
. 16- (SP).
,
.
64 , 32-.
440 5.
X, Y Z, 8-
16-.
5.11. ATmega168
ADD DST,SRC
ADC DST,SRC
ADIW DST,IMM
DST+1:DST DST+1:DST +
IMM
SUB DST,SRC
SUBI DST,IMM
SBC DST,SRC
SBCI DST,IMM
SBIW DST,IMM
AND DST,SRC
ANDI DST,IMM
DST DST AND IMM
OR DST,SRC
ORI DST,IMM
EOR DST,SRC
COM DST
NEG DST
SBR DST,IMM
CBR DST,IMM
ING DST
DST DST + 1
DEC DST
DST DST - 1
TST DST
CLR DST
SER DST
DST 0xFF
MUL DST,SRC
MULS DST,SRC
MULSU DST,SRC
RJMP IMM
PC PC + IMM + 1
PC
441
IJMP
PC Z (R30:R31)
JMP IMM
PC IMM
RCALL IMM
STACK PC+2, PC PC +
IMM + 1
ICALL
STACK PC+2, PC Z
(R30:R31)
CALL
RET
PC STACK
CP DST,SRC
DST SRC
CPC DST,SRC
DST SRC C
CPI DST,IMM
DST IMM
BRcc IMM
if cc(true) PC PC + IMM + 1
MOV DST,SRC
DST SRC
MOVW DST,SRC
DST+1:DST SRC+1:SRC
LDI DST,IMM
DST IMM
LDS DST,IMM
DST MEM[IMM]
LD DST,XYZ
DST MEM[XYZ]
LDD
DST,XYZ+IMM
DST MEM[XYZ+IMM]
STS IMM,SRC
MEM[IMM] SRC
ST XYZ,SRC
MEM[XYZ] SRC
STD
XYZ+IMM,SRC
MEM[XYZ+IMM] SRC
PUSH REGLIST
STACK REGLIST
POP REGLIST
REGLIST STACK
LSL DST
LSR DST
ROL DST
ROR DST
ASR DST
442 5.
. Corei7
32- CISC-.
,
.
OMAP4430 32- RISC-
/, ,
. ATmega168 ,
.
. Corei7
:
;
;
.
. Corei7 . -
, ,
3- -. Intel
Corei7 ,
. , 4,
.
OMAP4430. 32- .
, 3- ;
.
, . .
OMAP4430, .
ATmega168
, , .
32 8-
, .
,
. , , .
.
.
443
, .
. .
.
.
.
,
.
, .
. ,
,
, .5.21,. ,
.
,
.5.21,.
.
. 5.21. ():
(); ( )
, , .
goto [1968a]. ,
goto , , goto , while.
,
444 5.
2, ,
if, while .
.
, , ,
, ,
, .
,
.
, .
, , ,
.
,
, .
, , .
,
. .
64 .
. .
,
, .
, , . , , 64, . (
, , .
, 64 ,
.) .5.22 ,
(n) 5.
. 5.22.
445
n 1 3, n 1 1 2, 1 3, n 1 2 3.
.5.23.
. 5.23.
n i j:
towers (n, i, j)
446 5.
.
, n. , : i j. n 1,
.
5.6. :
towers (3, 1, 3)
:
towers (2, 1, 2)
towers (1, 1, 3)
towers (2, 2, 3)
,
.
5.6.
public void towers (int n, int i, int j) {
int k;
if (n == 1)
System.out.println(" c " + i + "" + j);
else {
k=6-i-j;
towers(n-1, i, k);
towers (1, i, j);
towers (n-1, k, j);
}
}
, , IJVM,
.
.
, .
, , IJVM.
(Stack Pointer, SP),
, (Frame Pointer, FP), , , IJVM,
. .5.24
32- . towers
n, i j, CALL,
, 1012.
FP (1000) 1016,
. 32-
(k) 4 1020.
.5.24, .
, ,
FP ( ),
SP FP , , SP , , FP . FP ( IJVM LV
447
. 5.24. 5.6
448 5.
).
-, , ,
, .5.24. .5.24
.4.10, . .
.
, , ,
, .
, .
.
, . ENTER LEAVE
Corei7 ,
. ,
, ,
.
. , .
, ,
towers (3, 1, 3)
.5.24, .
, n , , n= 3, k
towers (2, 1, 2)
. 5.24,.
(
). n= 1 ,
k
towers (1, 1, 3)
.5.24,.
. ,
. .
, FP SP (.5.24,). :
towers (1, 1, 2)
(.5.24,).
. .
,
, .5.24,, .
, , , ,
towers (3, 1, 3)
449
. A,
B (.5.25).
. 5.25.
B - , A.
, ,
A, B (,
A ,
). , A B ( ), B A ( ).
, A B, B ; B
A A , ,
450 5.
B. A ,
B, B ,
, A.
A B ,
B , A
.
A B.
A B, ,
( , ) ,
, . B
, . B , ,
.
, (A B)
, .5.26. B A B ,
. 5.26. ,
,
451
B. A B, B ( ), ,
A. ,
, .
. , .
.
,
.
CALL RETURN , , , ,
,
, .
, ,
.
,
, ,
. , , . ,
.
,
, , .
. ,
, , . ,
- ,
.
( ),
- ,
. , .
, ,
.
.
1- , , . ,
,
, .
.
, .
452 5.
. ,
,
- . , ,
,
,
.
, , : ,
, , , , -,
, 0.
, , - . . , , .
, ,
(Interrupt Service
Routine, ISR), ,
.
. , .
, ( ,
) .
, , .
, , (
, ,
).
, ,
.
, , :
.
, , ptr, ,
count , . , , ,
(, ,
.5.19). -,
- .
453
.
. ( ).
:
1. .
2. ,
.
3. , , ,
( , ). 1.
4.
.
5.
.
6. ,
. , , 4 ,
n 4n.
,
. (, ).
:
7.
, .
.
8.
, , . , .
9. , .
10. -, .
11. ptr count . 1,
, 1, , 1 . count 0,
, . ,
ptr, .
1
: .
. ,
,
, , .
, , , .
. . .
454 5.
12. ,
, .
13. .
14. ,
, .
, .
.
,
, ,
, .
, , .
-, , . -,
, , .
,
- .
. ( ) .
, . , , 9600
, 1042 .
, , .
-,
,
, .
,
. n ,
n.
n,
,
.
.
, ,
.
. -: ,
RS232 2, 4 5 . (t= 0,
t ) . t= 10 .
(ISR) , .5.27.
t= 15 RS232. RS232
(5), (2), -
455
. 5.27. .
. , ISR , ,
RS232.
, t= 20,
. (4) ,
(5),
, .
t= 25 ISR RS232,
, RS232,
, ISR 2. 2,
, 4 ,
ISR . . , t= 40
,
, .
8088 Intel () : .
, . .
- ,
256 ,
. 8- .
. .
456 5.
,
, . Intel (,
8259A). (, n)
.
, . ,
. ,
- .
,
.
, ,
.
). 5.6
Java.
- Java, Corei7
OMAP4430 Java, C.
Java- println C:
printf(" %d %d\n", i, j)
printf (
%d, ,
). ,
:
.
C Corei7 OMAP4430,
- Java , C . .
Core i7
5.7 C
Corei7. EBP .
, n (N,
)
EBP+ 8, i j EBP+ 12 EBP+16 . k EBP+ 20.
457
5.7. Corei7
.686
.MODEL FLAT
PUBLIC _towers
EXTERN _printf:NEAR
.CODE
_towers: PUSH EBP
MOV EBP, ESP
L1:
Done:
.DATA
format
END
; Core i7
; 'towers'
; printf
;
;
;
CMP[EBP+8],1
;
JNE L1
;
MOV EAX, [EBP+16]
;
PUSH EAX
;
MOV EAX, [EBP+12]
;
PUSH EAX
;
PUSH OFFSET FLAT:format ;
CALL _printf
;
ADD ESP, 12
;
JMP Done
;
MOV EAX,6
;
SUB EAX, [EBP+12]
;
SUB EAX, [EBP+16]
;
MOV [EBP+20], EAX
;
PUSH EAX
;
MOV EAX, [EBP+12]
;
PUSH EAX
;
MOV EAX, [EBP+8]
;
DEC EAX
;
PUSH EAX
;
CALL _towers
;
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
;
PUSH EAX
;
CALL _towers
;
ADD ESP, 12
;
LEAVE
;
RET 0
;
EBP ( )
ESP
if(n==1)
, n 1
printf("", i, j);
i, j
( C)
OFFSET FLAT
printf
k=6ij
EAX=6i
EAX=6ij
k=EAX
towers(n1, i, k)
EAX=i
i
EAX=n
EAX=n1
n1
towers(n1, i, 6ij)
towers (1, i, j)
j
EAX=i
i
1
towers(1, i, j)
towers(n1, 6ij, i)
i
EAX=k
k
EAX = n
EAX=n1
n1
towers(n1, 6ij, i)
DB " %d %d\n" ;
. ESP EBP. n 1,
458 5.
OMAP4430
OMAP4430 (5.8).
OMAP4430 , ,
. ,
cpp ( C).
, OMAP4430
( , ).
5.8. OMAP4430
#define
#define
#define
#define
#define
#define
Param0
Param1
Param2
FormatPtr
r0
r1
r2
r0
kr7
r5
n_minus_1
.text
towers: push {r3, r4, r5, r6, r7, lr}
movr4, Param1
movr6, Param2
cmp Param0, #1
bne else
movw FormatPtr,#:lower16:format
movt FormatPtr,#:upper16:format
bl printf
pop {r3, r4, r5, r6, r7, pc}
@
@
@
@
@
@
@
(n==1)?
, else
print move
main:
rsb k, r1, #6
subs k, k, r2
add n minus 1, r0, #-1
movr0, n_minus_1
movr2, k
bl towers
movr0, #1
movr1, r4
movr2, r6
bl towers
movr0, n_minus_1
movr1, k
movr2, r6
bl towers
pop {r3, r4, r5, r6, r7, pc}
.global main
push {lr}
movParam0, #3
movParam1, #1
movParam2, Param0
bl towers
pop {pc}
@ k=6 i j
@ compute (n-1)
@
@ call towers(n1, i, k)
@ call towers(1, k, j)
@ call towers(n1, k, j)
@
@
@
@ call towers(3, 1, 3)
@ ,
@
format: .ascii "Move a disk from %d to %d\n\0"
OMAP4430 Corei7.
n, n> 1, else. OMAP4430
.
OMAP4430
printf, , , 32-
. : MOVW
MOVT.
,
PUSH POP .
LR, PC.
IA-64 Itanium 2
2000 Intel , ,
IA-32 .
, ( ,
). ,
, IA-32.
460 5.
IA-32 .
Intel. , .
, EMT-64,
Pentium 64- 64- . , , , .
Pentium.
, Intel
Hewlett Packard, IA-64. 64- ,
32- .
IA-32. IA-64
, , .
, IA-64, Itanium,
, , . ,
IA-64 Itanium2.
IA-32
IA-62 Itanium2, , , ,
IA-32 Intel
. , IA-32
. CISC-
, . RISC, ,
, .
IA-32 RISC-,
( ),
. .
IA-32 ,
. /
, ,
,
. , , IA-32
. .
IA-32 .
, -
( , , ESI EDI)
, ,
. .
- , WAR-,
- , . -
(
). -
. IA-32
, , ,
.
. .
,
. ,
. ,
,
. ,
. .
,
. .
, ,
. , 32-
IA-32
4, . , EMT-64,
.
IA-32
. , , .
,
.
Intel .
Corei7
CISC- RISC-, , ,
, ,
, .
Intel : IA-32 (IA-64). EMT-64
, .
IA-64
IA-64 , . Corei7
, , -
462 5.
,
. IA-64
. , . ,
Corei7 , 8 ,
128,
- , .
IA-64,
, ,
. ,
,
. , , EPIC (Explicitly Parallel Instruction
Computing ).
EPIC RISC-.
IA-64 .
, , .
,
Itanium2.
Itanium2 . 264 .
1, 2, 4, 8, 16 10 ( 80- IEEE745).
, .
,
; ,
.
.
, .
. -
.
, ,
IA-64.
. Itanium2 128 64-
. 32 , 96 ,
RISC- (, UltraSPARC). UltraSPARC
. 32 () , .
,
,
. . , ,
, ,
.
, . ,
,
.
Itanium2 128 ,
IEEE745 .
, .
, Itanium2 64 1- , 8 128 ,
, .
Itanium2 .5.28.
. 5.28. Itanium2
Corei7
.
,
. IA-64 Itanium2 .
.
,
,
464 5.
, RAW- WAW-
(WAR- ). , ,
, ,
.
,
, , .
. ,
.
. ; ,
.
.
128- (bundles), .5.29. 41- 5- .
.
. 5.29. IA-64
100 . .5.29
.
ADD, .
(, ).
(, ADD SUB). . .
,
, ( ). , ,
, .. ,
216
3216
0, 1 2. 5 ,
. ,
,
. ,
.
IA-64
. , .
, ,
if. IA64
, (predication),
[August et al., 1998; Hwu, 1998].
.
,
, .
: ? , , ,
, .
.
, , .
, , ( 5.95.11), (
). 5.9 if.
5.10 : ,
. 5.11
, CMOVZ,
. , R1 .
, R3 R2,
.
5.9. if
if (R1==0)
R2 = R3;
5.10. 5.9
CMP R1,0
BNE L1
MOV R2, R3
L1:
5.11.
CMOVZ R2,R3,R1
466 5.
, , , , ,
, - .
CMOVN.
. if
then else.
,
- 0, , -
, . , then
CMOVN,
else CMOVZ.
, , CNOVN CMOVZ,
.
.
,
,
( - ). then else 5.125.14.
5.12. if
if(R1 == 0) {
R2 = R3;
R4 = R5;
} else {
R6 = R7;
R8 = R9;
}
5.13. 5.12
L1:
CMP R1,0
BNE L1
MOV R2,R3
MOV R4,R5
BR L2
MOV R6,R7
MOV R8,R9
L2:
5.14.
CMOVZ
CMOVZ
CMOVN
CMOVN
R2,R3,R1
R4,R5,R1
R6,R7,R1
R8,R9,R1
( IA-32), IA-64 . ,
.
6- , , 64 1- . , if
,
1, , 0, .
. ,
,
then else, ,
, .
.
5.155.17 ,
. CMPEQ
P4 1, , 0, . ,
, P5. if then
, - (
). , ,
.
5.15. if
if(R1 == R2)
R3 = R4 + R5;
Else
R6 = R4 R5
5.16. 5.15
L1:
CMP R1,R2
BNE L1
MOV R3,R4
ADD R3,R5
BR L2
MOV R6,R4
SUB R6,R5
L2:
5.17.
CMPEQ R1,R2,P4
<P4> ADD R3,R4,R5
<P5> SUB R6,R4,R5
IA-64
,
, .
- .
.
IA-64 . , ,
, ,
. , .
, .
[Dulong, 1998].
IA-64, , . LOAD ,
, ,
, , .
468 5.
, 4. ,
.
LOAD
. , , , .
, , CHECK. , CHECK
, NOP, .
, .
, , IA-64
. -,
RISC-,
/. IA-32.
-, IA-64 .
, , , . ,
, .
.
-,
if, ,
. ,
, ,
, .
Itanium ,
. , Itanium
? : ,
( ) . , 10 Itanium,
. Intel Itanium,
.
, ,
IA-64. Itanium
IA-32. , Intel
? 8, IA-32 ,
.
Itanium2 [McNairy and Soltis, 2003; Rusu et al., 2004].
, CISC-
469
. ,
MOVE, ADD BEQ.
, 4 8 .
8 32 , .
(, Corei7)
, (, OMAP4430) . , ,
.
1, 2 3 , : , ,
, ..
.
.
, (
), , , ,
-.
, , ,
. 200. CISC- .
: , , . ,
(, ).
- ,
.
.
(, ).
- , , - ,
.
.
, ,
, .
, IA-64 EPIC,
. ,
. IA-64
Corei7, , .
.
470 5.
1.
3. ,
, 0 0 ..
?
2.
, k-
2k 2k . ,
k = 32 4 4 ;
8 . ,
?
3. ,
32- :
yy 15 12- 4-
;
yy 650 12- 4- ;
yy 80 .
4. 16- 6-
. , . n ,
?
5. ,
12- (
3 ):
yy 4 ;
yy 255 ;
yy 16 .
6. -.
:
yy 20 40;
yy 30 50;
yy 40 60;
yy 50 70;
- ?
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
IMMEDIATE 20
DIRECT 20
INDIRECT 20
IMMEDIATE 30
DIRECT 30
INDIRECT 30
471
7. , ,
:
X = (A + B C )/(D E F )
.
yy : PUSH M, POP M, ADD, SUB, MUL, DIV;
yy : LOAD M, STORE M, ADD M, SUB M, MUL M, DIV M;
yy : MOV (X= Y ), ADD (X= X+ Y ), SUB (X= X Y ),
MUL (X= XY ), DIV (X= X/Y );
yy : MOV (X= Y ), ADD (X= Y+ Z ), SUB (X= Y Z ),
MUL (X= YZ ), DIV (X= Y/Z ).
M 16- , X, Y Z 16-
, 4- . ,
-, 16 ,
. SUB X,Y Y X, SUB X,Y,Z
Z Y X. 8 ,
4 , X ?
8. ,
6- 64 ,
.
9. ,
?
10. :
1) A + B + C + D - E;
2) (A + B)(C + D) + E;
3) (AB)+(CD) + E;
4) (A B)(((C DE)/F )/G )H.
11.
?
1) A B + C + A B C + +;
2) A B C A B C ;
3) A B C+ A B C + .
12. :
1) A B + C + D ;
2) A B / C D / +;
3) A B C D E + /;
4) A B C D E F / + G H / +.
472 5.
13. , .
14. :
1) (A B) C;
2) (A B) (A C );
3) (A B) (C D).
15.
IJVM-, :
(5 2 + 7) (4/2 + 1).
16. ,
.5.17?
17. .5.17 1 2
23. 3 . ,
3?
18.
X A B.
A, B X,
?
19. .
20. Corei7 ,
3 . ?
21. 3 ,
. ,
( )?
22. :
if (k==0) ...
if (a>b) ...
if (k<5) ...
, .
?
23. , 16- 1001010111000011
:
1) 4 ;
2) 4 ;
3) 4 ;
4) 4 ;
5) 4 .
24. , CLR, ?
473
25. (A B) C :
yy A = 1101000010101101;
yy B = 1111111100001111;
yy C = 0000000000100000.
26. , A B,
. :
.
27. ,
, .
?
28. (
, ).
Java-
Corei7 IJVM. ,
. , i j
.
.
i =3;
i = j;
i = j 1;
29. for.
while.
30. , ( ,
). , ( 64 )?
.
31. - ?
?
32.
. 64 512 .
16 . 16 .
500 .
. -
?
33. DMA, . 5.20,
- . ,
DMA
, . 3.33.
34. ,
?
474 5.
35. IA-64
(64). ? , ? ,
?
36. .
. ? ,
?
- , ?
37. , , . -
, ,
. ,
250 ,
, . 1K,
?
38. .5.25 .
?
39. ASCII-.
40.
.
41. , .
n!, n!= n(n 1)!, 0!= 1.
n!.
42. ,
. ( , ,
, .)
6.
,
,
. , .
.
, , ,
. ,
, , ,
. .6.1.
. 6.1.
, ( , ),
.
.
, , .
.
, . , .
. , , ,
, ADD.
, .
. . .
. ,
476 6.
, . -. , -,
. ( ,
). , .
(,
, , - ..). ,
: Corei7 (Windows7) OMAP4430 (Linux).
ATmega168 ,
.
. IBM-650, ( 50- ), 2000 . 60 ALGOL
1024 .
PDP-1,
4096 18- .
, .
,
.
(, ).
, , .
, . ,
. . ,
,
-
.
,
, .
1961 ()
,
[Fotheringham, 1961]. ,
, , ,
, . ,
60- . 70-
477
.
, Corei7 OMAP4430,
. .
.
16- 4096 . , ,
65536 ( 16-, 216= 65536).
,
.
0, 1, 2, ..., 65535,
.
.
, 4096, 4096.
( 4095 , ).
,
- .
.
4096 , , 0 4095. , ,
4096
0, 4097 1,
8191 4095 .. ,
(.6.2).
, 4 (
) 0 4095 4096
. : , -
478 6.
8192 12287?
,
, . :
1. .
2. 8192 12287 .
3. 8192 12287 .
4. : 8192 12287 0 4095.
5. , .
, , ,
.
, . ,
, ,
, ,
. , ,
. ,
(, , , ).
,
, .
,
. ,
. ,
.
, .
,
, . ( ),
. ,
, ( ).
.
, ,
.
, -
, , . , ,
MUL (), . , ,
479
. , ,
.
, .
. , .
, , . ,
, , , , . ,
.
, .
, 512 64,
4. .
,
.
. .6.2
.
.
. 6.3. 64
16 4 (); 32
8 4 ( )
480 6.
.6.3,
64 4.
, (, , ).
, .6.3,
,
.
16 .
64 ,
, 0 65532
(, 4). ,
.
.6.3, , 4K. 32K, : 1)
( ,
, ) 2)
.
, 32-
. , , ,
.
.
(Memory Management Unit, MMU).
. 32- 15- ,
32- 15- .
, , .6.4.
32- , 20- 12-
(
4).
. .6.4 3, 3.
, . 220
8 ,
.
. 1. ,
.
( 6) 3 15-
. 3 ,
8 . 12
( ) 12
481
. 6.4.
. 15- .
.6.5
. 0
1. 1 0.
2 . 3 2. 4 .
5 6 ..
482 6.
. 6.5. 16 ,
8
, , , . ,
. ,
, .
,
, ,
.
, . ,
.
,
483
, , , .
. , , ,
.
..
(demand paging). ( ):
, .
, .
,
, .
, .
,
100 , .
, .
,
.
.
. ,
. t ,
k . [Denning, 1968]
.
, , , ,
. ( , ,
).
, , , (
). ,
, .
, , .
, -
. , , ,
.
. , , , , ,
.
484 6.
,
, . :
, ,
, , , .
, , ,
, .
,
, ,
, . LRU (Least Recently Used
).
, . .
, ,
9 ,
. 7, 0 7.
8, .
LRU 0,
. 0 , 8 (
18). , . 6.6.
. 6.6. , LRU
8
, 0.
, 0
. LRU
1 ( 0 28).
1, . 1
2 ..
, LRU ( ).
,
.
485
, ,
. , ,
. ,
26000
4096 , 6 ,
64096= 24576 , 26000 24576 =
= 1424 . 4096,
2672 . , 7 , ,
.
(
).
486 6.
n , n/2 . ,
,
.
. ,
,
. , .
,
. 10 (
), .
100/, 8 1
70 .
. , ,
( ),
. A 1000010000,
8- (A[1,1], A[2,1], A[3,1] ..).
1 (A[1,1], A[1,2], A[1,3] ..) 80000 . ,
, 10000 ,
79992 . 8, 80.
1 10 . 32 8
,
1 . . 4
.
, 0 - .
. ,
, ;
:
;
;
;
;
, .
487
.
.
, .6.7.
, ,
. ,
, ,
. , , ,
- , ,
.
. 6.7.
,
, .
, ,
.
, .
0 - .
( ). ,
.
, - ,
, - .
,
.
( ), , . , , ,
488 6.
. ,
.
.6.8.
. 6.8.
, , . ,
, ,
.
,
, .
,
0, , , . ,
n 0
(n,0).
n , (
), ,
.
, . ,
. , , , . ,
.
. ,
( ), ,
.
,
,
.
.
489
(, , ), ,
-. ,
,
.
, ..
.
, () .
(
- ).
, , .
.6.1.
6.1.
- .
.
, ,
.
.
, ,
, .
:
. . ,
, . ,
(
, ). -
:
.
490 6.
: , . .6.9,
, 5 . , , 1 , 7,
, .
, .6.9,. 7 2
() . 4
5 (.6.9,), 3 6 (.6.9,).
, , . (
, ,
). (checkerboarding).
. 6.9. (, , , );
()
, , 3,
(. .6.9,).
10, , 3, 3 , .
.
:
0,
(, ). . ,
(
),
. .6.8, ,
491
. ,
. ,
.
, , .
. (best fit) , .
,
.
,
. , , ,
[Knuth, 1997].
.
, ,
, ( ),
. , ,
. (
)
, .
. , , , ,
. .6.8, 5,
, 4,
,
11.
,
: .
.
.
. ,
. ,
. , ,
, .
, .
MULTICS (Multiplexed Information and Computing Service
) ,
.
Bell Labs General
Electric [Corbat and Vyssotsky, 1965; Organick, 1972]. MULTICS
: . -
492 6.
,
.
(.6.10). ,
.
16 .
MULTICS ,
1965 30 2000 ,
MULTICS. 35 . ,
, Intel,
386, .
MULTICS www.multicians.org.
. 6.10. MULTICS-
Core i7
Corei7 , ,
. : LDT (Local Descriptor
Table ) GDT (Global Descriptor Table ). ,
.
( , , ..),
,
.
5, , Corei7
.
493
CS , DS .. 16- (.6.11).
. 6.11. Corei7
,
( , , ). 13
,
8 (213) .
. . 0
. , ,
, 0,
.
, ,
. 8 .
, (.6.12).
. 6.12. Corei7.
, . 2 .
, 0
13- 8. , (
494 6.
), . , 72 9
,
GDT+ 72.
, (, )
. , ,
, . ( 0) (P=0),
. ;
, .
,
. , . 32- ,
20 , . G (Granularity ) 0,
LIMIT ( ) ( 1).
G 1, LIMIT ,
. Corei7
4, 20 232.
, , Corei7 32- BASE ( )
, (.6.13).
BASE ,
80286, BASE
24 .
32- .
. 6.13. -
( ), . ,
,
.
,
, .
495
,
, .
, 32- 32-
4- ,
.
, 1024 32- .
. , 1024 32- .
. .6.14.
. 6.14.
496 6.
, Corei7
DIR-PAGE . , .6.14,
, .
BASE
. , BASE, , ,
. BASE ( ),
80286, .
, 32-
, . ,
BASE LIMIT.
, , ,
.
Corei7 . ( )
Corei7; Corei7 64-
.
, . Corei7 4
, 0 , 3
(.6.15). 2- (Program Status Word,
PSW) ,
. 6.15. Corei7
497
. , ,
.
,
. . .
, ,
.
CALL .
, (call gate)
. ,
.
.
.6.15. 0 ,
-, .. 1
.
, . 2 , .
, . 3
,
. Corei7, ,
MULTICS.
.
, ,
, .
TYPE .6.11 , .
OMAP4430
OMAP4430 32- , 32- , 32- . ,
ARM 232 (4 ) .
: 4 , 64 , 1
16 . .6.16.
. 6.16. OMAP4430
498 6.
OMAP4430 Corei7.
4- . 6.17 .
12 .
. ,
8 ,
.
, .
OMAP4430 . 1 16
, .
, .
64- .
4- 4- ,
64
16 . , , 64,
4? ,
, 64 TLB,
.
,
. .6.17, ,
. 200 %
,
, .
OMAP4430 -
. 6.17. ,
OMAP4430: (); TSB()
499
,
, .
.
.
500 6.
, ,
.
.
-. -, - ,
. , , .
, - .
- , . -
(: 64 8). ,
, - . ,
,
.
,
.
(, )
. ,
- , -. .
,
( )
.
, .
,
. ,
,
.
(. 6.18)
, . , .
,
. ,
. ,
,
, -.
501
. 6.18.
.
-
, ,
.
.
-. ,
. .
,
. .
,
,
.
(,
) ,
, .
, ,
. , - ( -,
) ,
-. -
,
-. -,
. -,
, ( ), .
502 6.
Core i7
Corei7
VMX (Virtual Machine eXtensions) ,
,
. VMX EPT (Extended
Page Table), . EPT
, TLB-
. ,
.
- ( , -,
) , VMCS (Virtual-Machine Control Structure).
,
-.
- ,
- .
-
,
. ,
, .
, .
,
. - , . . -,
, -
, , -
,
. -,
- ,
. -
, ,
, , . :
;
;
- ( ) ,
;
;
;
;
- 503
;
;
.
.
.
-
. ,
-. -
(, ), .
(,
), .
, , , .
.
-.
.
. - ,
, . ,
.
,
.
.
, , :
, ;
, ;
.
.
. (, 2000 1000).
, ,
. read
, read
. ,
. ,
,
. ,
.
(
), ( Linux).
504 6.
.
, . ,
,
: , ,
, , .
,
, , .
, ,
.6.19. ,
, . ,
, .
. 6.19. , :
19(); 19( )
. write
.
-
, -,
.
, , . ( )
, .
- 505
,
( ). .6.20
,
12 . .6.18, .
-.
.6.18, . ( , ).
. 6.20. :
(); ( )
.
.
, , .
n - , -
. ,
.
,
. , ,
.
(
UNIX), ,
. , ,
.
506 6.
, .
.
.
.
. , 64- 64 , . , 4, 52 19, 4
52, 52 19, 19
, (, 0 1).
MS-DOS, Windows95 Windows98.
Windows (2000, XP, Vista 7) ,
, UNIX.
, , , , . ,
, . j
, k,
. ,
,
. ,
,
.
,
.
,
(, -),
, . 1200, 700, 2000 900
-, 0, 1200, 1900 3900 ( ).
, .
,
, , .
- ,
.
(
), .
(free list). .6.21,
6.20,.
(
), . 6.21,. ,
, .
- 507
. 6.21. :
(); ( )
. : , .
, . , ( ) .
. ,
.
, .
. -,
, .
10, 8 ( ), 1 ( 0,125 ), 8 8 1,
8 .
. ,
,
.
: , .
, ,
. , MS-DOS
(512 ),
16- . 64 ,
16-
: . Windows95 ,
32- . Windows98 .
508 6.
, . ,
.
,
. ,
. ,
. , .
, MS-DOS Windows95 2-
32,
100 32668 .
.
,
.
.
, ,
.
(, ).
, ,
(on-line). , (off-line) (, -, USB-
SD).
.
-.
, , .
. .6.22 .
, ,
:
;
;
;
.
. , ,
, .
, . , .
.
509
. 6.22.
( ).
, . , . .
.
, 1/
, . . ,
, , , , 1, , 1, . ,
, ()
.
.
, 1000 1c , , 0,001,
.
8.
- , .
, .
,
510 6.
. , .
.6.23 ,
,
, .
, ,
.
, .
.
. 6.23. ();
( )
- .
, ,
, .
, , .
. .
, , .
() () .
, . :
, ,
, . ,
.
511
.
. .
, 1 2,
.
1 (producer), 2
(consumer).
. .
. , , ,
.
, ,
. , ,
. ,
.
. in out : in
(
), out , .
in= out, , .6.24,. .6.24, , . .6.24,
,
. .6.24, . .
(), out
(, in= 52, out= 53), . ;
, in= out,
.
. 6.24.
6.1
Java. : m, producer consumer. m
512 6.
, in out, ,
100 ( buffer[0] buffer[99]).
6.1.
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 c;
//
public static void main(String args[ ]){
//
p = new producer );
//
c = new consumer );
//
p.start();
//
c.start();
//
}
// in out
public static int next(int k) { if (k < BUF_SIZE - 1) return(k + 1);
else return(O); }
}
class producer extends Thread {
public void run() {
long prime = 2;
while (prime < m.MAX__PRIME) {
prime = next_prime(prime);
if (m.next(m.in) == m.out) suspend();
m. buffer[m. in] = prime;
m.in = m.next(m.in);
if (m.next(m.out) == m.in) m.c.resume();
}
//
//
//
//
//
//
//
//
P1
P2
P3
P4
P5
}
private long next_prime(long prime){ ... }
// ,
//
}
class consumer extends Thread {
public void run() {
long emirp = 2;
//
//
//
(threads). producer consumer, -
513
p c .
Thread. run
. start ,
Thread, .
. , Java-
. .
, , . ,
.
( ), Java
, .
next in out,
, . next 98 ,
. 99, , ,
0.
- ,
. ,
Java Thread suspend ()
resume ( ). 6.1.
. (P1).
m.MAX_PRIME. m ,
MAX_PRIME, m.
in, out, buffer next.
(P2) , in out.
(, in= 62 out= 63), , , suspend. ,
(P3), in (P4).
P5 , in , out (, in= 17, out= 16), , in out in
. , ,
( ) .
resume,
(P5). .
. ,
(C1). , ,
. ,
(C2) out (C3).
out in (C4), ,
out in. in= out 1, , ,
resume. (C5), .
514 6.
, (.6.25). ,
, , ,
, . ,
21, in= 22, out= 21 (.6.25,).
P1 , C5 20. , C1 C2.
out. in, out 22.
, C1, in out , (.6.25, ).
. 6.25. ,
, in out,
, . P3 in P4.
in= 23, out= 22. P5 , in
out, , . ,
, ,
resume, .6.25,.
,
resume . .
. in out ,
. in= 22 out= 22, .
.
, in= 24, out= 22. , ( ),
( ). . ,
515
.
.
, ,
in out, , , , ,
in=out+ 1 , (
), resume, ,
. , ,
out in out.
. , Java Sun Thread,
suspend resume,
. ,
, ,
, UNIX
Windows7.
, , .
.
,
. ,
, . .
. n . ,
n 1 , .
[1968b] . -
,
, . , up down, .
up , down
.
down , 0,
, .
0, down .
, up. ,
, .
up , 0 . , , .
down, 0
. .
0, up .
,
. :
516 6.
,
, , down
. .6.2
up down.
6.2.
=0
>0
up
=+1 (
down ,
)
=+1
down
,
=1
up
,
Java, , ,
- Java,
. , ,
, up down, up down,
.
6.2 ,
. m : available, 100 ( ), filled, 0.
P1, C1.
down filled .
, down available , 99. P5
up filled,
filled 1. ,
down. filled 0,
.
6.2.
public class m {
final public static int BUF_SIZE = 100;
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 c;
public static int filled = 0, available = 100;
public static void main(String args[ ]) {
p = new producer();
c = new consumer();
p.start();
c.start();
}
//
//
//
//
//
//
//
//
//
//
//
//
0 99
517
// in out
public static int next(int k) {if (k < BUF_SIZE - 1) return(k+1);
else return(O);}
}
class producer extends Thread {
//
native void up(int s); native void down(int s); //
public void run() {
//
long prime = 2;
//
while (prime < m.MAX_PRIME) {
prime = next_prime(prime);
down(m.available);
m.buffer[m.in] = prime;
m.in = m.next(m.in);
up(m.filled);
}
//
//
//
//
//
P1
P2
P3
P4
P5
}
// ,
private long next_prime(long prime){ ...}
}
class consumer extends Thread {
//
native void up(int s); native void down(int s); //
public void run() {
//
long emirp = 2;
//
while (emirp < m.MAX_PRIME) {
down(m.filled);
emirp = m.buffer[m.out];
m.out = m.next(m.out);
up(m. available);
System.out.println(emirp);
}
//
//
//
//
//
C1
C2
C3
C4
C5
}
}
C5. C1,
down filled, 1, 0.
up available,
available 100. C1. ,
down,
P2, P3 P4.
filled= 0. up, down. , , ( up). ,
1, .
. .
518 6.
. ,
,
. , .
if 6.1 .
.
, up down. ,
.
up down, ,
. ,
. .
. ,
down . up ,
down
. 0,
.
. 20
, 10 (). . () .
, 7. 0 7
( 0 7).
up, .
down ,
.
.
( down);
. . ,
, ( up).
( down) .
, . (
up), .
Corei7 OMAP4430
, c . Corei7 Windows, OMAP4430 UNIX.
UNIX, Windows. UNIX
519
Windows7,
.
UNIX
Windows XP
(UNIX
Windows 7). ,
.
UNIX
UNIX Bell Labs
70- . (Ken Thompson)
- PDP-7.
PDP-11, C. (Dennis
Ritchie). 1974 UNIX [Ritchie and Thompson, 1974].
[Ritchie,
1984; Thompson, 1984].
Bell Labs UNIX. Bell Labs, AT&T,
, UNIX
.
PDP-11 , ,
PDP-11, , .
UNIX, , .
, UNIX, . ,
UNIX.
- VAX, , 14 255 ,
TCP/IP,
( , Berkeley UNIX).
, AT&T
UNIX, 1982
SystemIII, 1984 SystemV. 80-
UNIX: Berkeley UNIX SystemV.
UNIX.
UNIX, ,
UNIX ( MS-DOS ). IEEE
(Institute of Electrical and Electronic Engineers -
520 6.
, , ,
, ,
, , ;
;
;
; ;
521
Berkeley UNIX,
SystemV.
. 4-
. UNIX
,
. , TCP/IP.
UNIX , ,
UNIX.
UNIX -
, .
, .6.26, .
,
.
.
, , , ,
..
- (stream). -
. -,
,
. .
. 6.26. UNIX
. , , ,
. (block
cache),
, . -
522 6.
.
Berkeley [McKusick et al., 1984]
[Rosenblum and Ousterhout, 1991; Seltzer et al., 1993].
UNIX .
,
(InterProcess Communication, IPC) , .
. ,
, () . , . UNIX
,
(,
).
UNIX ; . UNIX
, 24 25 80 ASCII-.
, .
, UNIX ,
.
, , UNIX , XWindows. XWindows
(Graphical
User Interface, GUI), Motif.
, XWindows Motif
.
Windows 7
IBMPC, 1981 , 16-
, .
MS-DOS1.0. 8- ,
. 24-
MS-DOS2.0. (),
UNIX. 1984
IBM PC/AT MSDOS-3.0,
36. MS-DOS
,
.
Apple Macintosh, Microsoft , Windows.
Windows, Windows3.x, ,
MS-DOS. ,
.
523
1995 Windows95,
MS-DOS, MS-DOS
MS-DOS7.0. Windows95 MS-DOS7.0
, , .
Windows95 32- .
16- (
32-) -
MS-DOS . ( MS-DOS
8+ 3 ) ( 65536) .
Windows98, 1998 , 16- MS-DOS
( 7.1) . Windows98 Windows95, MS-DOS
Windows, , ,
. ,
, - , .
, Microsoft
. Windows98 Windows Millenium Edition (ME),
.
Microsoft 32- . Windows New Technology ( Windows),
WindowsNT1. ,
, Intel (
PowerPC),
. WindowsNT
. WindowsNT,
Windows2000, ,
. Windows2000 WindowsXP,
( ). 2007
Windows Windows Vista. , (, ).
Vista -
1
, WindowsNT,
16- OS/2 IBM Microsoft
32- OS/2. ,
i386, 1989 ,
, Microsoft, OS/2v.3.0, WindowsNT,
, -, IBM, -, ,
. .
. .
524 6.
. Windows 7,
Windows Vista.
Windows7
.
Windows 7 .
, , .
; ,
. , .
, Windows7
, , .6.27. ,
.
. C, C++, -
.
. 6.27. Windows 7
.
,
, .
-, , , -, ,
. , Windows7
,
.
:
NTOS Windows, -
525
, . .
.
Windows7:
, , ,
.
, , - .
, .
UNIX Microsoft .
Windows (, XP, Vista Windows 7)
, Win32 API (Application Programming Interface
). ,
,
. Win32
Windows 7, ; . Windows
64- , Microsoft
Win32 Win64, 32-
.
Win32 API UNIX. UNIX
:
. Win32 ,
. , Win32 ,
(, ).
Win32 API
(, , , ..). , , ,
() (handle).
.
.
(
UNIX ). ,
,
. ,
, ,
.
Windows7 -
,
( API). ,
- ,
.
526 6.
UNIX Windows7.
.
UNIX
UNIX . : ,
, .6.28. ,
. . ,
( ).
. ,
Linux, OMAP4430.
. 6.28. UNIX
, ,
. , . UNIX,
,
, .
UNIX ( ) Berkeley UNIX,
SystemV ( Linux) ,
.
.
, 12
144, 144 .
, - .
, , . fd (file
descriptor). .
paddr = mmap(virtual_address, length, protection, flags, fd, file_offset)
527
flags , ,
paddr.
.
protection , ,
( ). unmap.
. .
, , ,
. .
, .
- , ,
. , (copy on write), ,
,
.
, .
Windows 7
Windows 7
. 32- Windows7 32 , 4 . 2 ;
2 () .
Windows7,
(3 1 ).
(4 Corei7). 64- Windows7
,
8 .
: (free), (reserved) (committed).
,
. ,
, .
, .
,
. ,
, .
.
, ,
. , (, ,
). 64 64 ,
528 6.
(
0 1).
, , . ,
( ,
).
. ,
.
; .
Windows 7, SystemV, . ,
.
,
, ,
. , ,
(-
). ,
.
Windows 7
, .
, .
. ,
, , ,
, ,
.
Win32 API , . .6.4. ,
, ,
.
6.4. API
WindowsXP
API
VirtualAlloc
VirtualFree
VirtualProtect
(//)
VirtualQuery
VirtualLock
(
)
VirtualUnlock
529
API
CreateFileMapping ( )
MapViewOfFile
UnmapViewOfFile
OpenFileMapping
. 30
. ,
. ,
. Windows7
API ( .6.4),
,
( ).
4 API
. , CreateFileMapping.
, .
. , , . ,
.
API .
. , API .
,
. ,
, ( ). Windows 7 malloc UNIX, Windows XP,
UNIX, .
-
, - .
UNIX, WindowsXP -.
UNIX Windows 7
, , Windows 7
UNIX.
- UNIX
UNIX , ,
, .
530 6.
8-
1 0 2641 .
,
ASCII , .
,
. read write , , .
,
, .
,
.
, , -. - .
,
-
-. ,
, .
UNIX .6.5.
creat ( e )
. , open
. unlink (,
).
6.5. UNIX
creat(name, mode)
; mode
unlink(name)
(, )
open(name, mode)
close(fd)
buffer count
, offset w
stat(name, buffer)
chmod(name, mode)
fcntl(fd, cmd,)
(,
)
open ,
. mode , ( ,
1
531
..). , . .
- read write,
( ,
), .
lseek ,
.
stat (, , ..), chmod (, , , -
), , fcntl ,
.
6.3 , -. , .
, data
newf. infd
outfd . ,
, .
. open creat
, .
6.3.
UNIX. C,
Java
/* . */
infd = open("data", 0);
outfd = creat("newf", ProtectionBits);
/* . */
do {
count = read(infd, buffer, bytes);
if (count > 0) write(outfd, buffer, count);
} while (count > 0);
/* .*/
close(infd);
close(outfd);
read : , .
. count. count
, bytes, .
write .
, . ,
.
UNIX
( 20). 0, 1 2
, .
, ,
-
532 6.
. UNIX
.
.
.
,
. UNIX , ,
bin ( ), dev (
-), lib ( ) usr ( , .6.29). usr ast jim. ast (data foo.c)
bin, 4 (game1, game2, ...).
.
,
(/). , game2
: /usr/ast/bin/game2. ,
, .
. .
( ).
. /usr/ast ,
game3, bin/game3.
, link. /usr/ast/bin/game3 /usr/jim/jotto
. ,
. open creat
, .
UNIX
.6.6. mkdir , rmdir
. . , ,
. chdir .
6.6. UNIX
mkdir(name, mode)
rmdir(name)
Opendir(name)
readdir(dirpointer)
Closedir(dirpointer)
chdir(dirname)
dirname
link(name1, name2)
( name2,
name1)
unlink(name)
( name)
533
. 6.29. UNIX
link , . , /usr/jim/jotto :
link("/usr/ast/bin/game3", "/usr/jim/jotto")
, . unlink
534 6.
. , .
, . ,
.
game3 /usr/jim/jotto:
unlink("/usr/ast/bin/game3")
link unlink
.
( ,
) , ,
. RWX (Read, Write, eXecute , , ). ,
,
, . ,
RWXR-X--X , , - (,
, ),
, .
, , (), .
, .
, .
, UNIX.
[Vahalia, 1996].
( , ) 64 , (i-node). ,
, , ...
,
, , .
. ,
UNIX
.
:
. ,
foo.c,
:
open("foo.c", 0)
,
.
,
. ,
/usr/ast/data,
usr. usr, (
UNIX ). ast -
535
/usr/ast.
/usr/ast,
data , , i-node /usr/ast/data.
,
.
, ( ), :
, RWX ( 9 ) ;
( );
;
;
;
;
, ;
, ;
, .
, ,
-.
.
32- , . , 1000000 1.
1000001.
.
10 . 1024 , 10240 . 11
,
. 1024- 32- 256
. 10240+ 256 1024=
= 272384 . 12, 256 . 272384+ 256 256 1024 = 67381248 .
,
13. , 256 . ,
, , 16843018. ,
17247250432. 32- 64-, 4,
, .
. , . ,
.
-
,
. , ,
536 6.
. , ,
. ,
, .
. read, , .
, , -. open
. , .
read write ,
. 10
( );
. lseek
-.
link unlink. link .
i-node
. , . unlink
. 0,
, .
- Windows 7
Windows XP , NTFS (NT File System NT) FAT (File Allocation
Table ).
Windows XP. MS-DOS,
Windows95/98 ( ). FAT USB-
, NTFS.
NTFS 255 .
Unicode, ,
,
. , Unicode Windows7;
, Windows 2000, ,
,
. NTFS
( foo FOO).
, Win32 API
, ,
Win32.
UNIX, , 264 1. ,
32, 64 ,
. Win32 API
UNIX,
537
.
, .
UNIX ,
, . Win32 API
.6.7.
6.7. Win32 API -
API
UNIX
CreateFile
open
DeleteFile
unlink
CloseHandle
close
ReadFile
read
WriteFile
write
SetFilePointer
lseek
SetFileAttributes stat
LockFile
Fcntl
UnlockFile
Fcntl
. CreateFile
.
, API open.
API, . ,
CreateFile :
;
, , (, );
, ,
;
, ,
;
, , ,
;
, , ..;
, .
API UNIX.
, - Windows7 ,
.
,
.
538 6.
API, ,
6.3. (
) 6.4.
, CopyFile,
.
6.4.
API Windows7. C,
Java
/* . */
inhandle = CreateFile("data", GENERIC_READ, 0, NULL,
OPEN_EXISTING, 0, NULL);
outhandle = CreateFileC'newF, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
/* . */
do {
s = ReadFile(inhandle, buffer, BUF_SIZE, &count, NULL);
if (s > 0 && count > 0) WriteFile(outhandle, buffer, count, &ocnt, NULL);
} while (s > 0 && count > 0);
/* . */
CloseHandle(inhandle);
CloseHandle(outhandle);
Windows7 ,
UNIX.
, ( MS-DOS). , . WindowsXP UNIX .
UNIX
, . WindowsXP
, (, C:\windows\system\foo.dll). ,
Windows2000,
UNIX.
.6.8 (
UNIX). ,
.
6.8. Win32 API
API
UNIX
CreateDirectiry
mkdir
RemoveDirectory
rmdir
FindFirstFile
opendir
FindNextFile
readdir
MoveFile
SetCurrentDirectory chdir
539
540 6.
, , ..).
(1
, 2 ). ( ) .
, .6.30.
. 6.30. Windows7
, POSIX, , , .. .
255 Unicode-.
16- ,
MS-DOS,
8, .
MS-DOS (8+ 3),
MS-DOS .
. , WindowsNT4.0,
. Win
dows2000, ,
.
, . [Mullender and Tanenbaum, 1984].
( )
,
.
,
().
264 . , . , ,
0 1 1 . 267
15 . ,
, .
541
NTFS ,
.
[Russinovich and Solomon, 2005].
Windows 7 UNIX , (-) ,
, .
,
. , .
UNIX
UNIX ,
. fork. , . ,
fork,
.
.
, exec, ,
exec. ,
xyz, () fork,
. exec,
xyz.
( exec
), - ,
,
. wait waitpid, , exit.
fork ,
. .6.31. A
fork , B C. B fork , C . , .
. 6.31. UNIX
542 6.
UNIX
, .
, ,
.
, . .
,
4 128 ,
512 ,
, .
SystemV Linux .
.
msgget.
msgsnd, msgrecv.
, , ,
. -, ,
. -, ,
. -, ,
msgrecv , .
. UNIX
. , ,
. . ,
, shmat shmop.
SystemV Linux .
.
POSIX- UNIX .
.
,
, ( , ..).
, .
(, ), .
, -, ,
, , .
..,
.
, Java.
Java , .
? , -.
-, .
543
, . ,
( 20 ),
,
- -.
, -.
,
. , .
, ,
.
UNIX pthreads POSIX (P1003.1C). . ,
, .
.6.9.
6.9. ,
POSIX
pthread_create
pthread_exit
pthread_join
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. , , pthread_join.
, pthread_
join . .
, (mutexes).
544 6.
- (, , ). ,
. , .
( , : 0 1).
pthread_mutex_init pthread_
mutex_destroy . : . , pthread_mutex_lock,
. , . , , ,
pthread_mutex_unlock.
(,
), (,
, ). (condition variables).
pthread_cond_init pthread_cond_
destroy .
:
. , , , , , ,
pthread_cond_wait. , ,
( ),
pthread_cond_signal.
, . , , .
, . , , .
Windows 7
Windows7 .
, , .
- .
CreateProcess API.
10 , . ,
UNIX, fork , exec
: ,
. 10
CreateProcess.
;
( );
545
;
;
, , -
(, , , , );
;
;
, ;
, 18
.
Windows7 .
. 18 , , (
),
,
. ,
, ,
.
Windows7 ,
. , , CreateThread
6 10: , , ,
, (
) . , (
, ,
).
,
, . ,
, , .
,
.
, , . , , .
: , , , , ,
. : .
. ,
UNIX. , 128 128 (
512 , ). ,
, .
, .
, , .
546 6.
,
.
A B
B A
A.
. ,
.
(), .
, . ,
, . , ,
- -.
Windows7 (, , , ).
, ,
,
.
CreateSemaphore API,
. ,
. DuplicateHandle , .
up down, : ReleaseSemaphore
( up) WaitForSingleObject ( down).
WaitForSingleObject ,
,
0 ( ).
, , . , ,
API (WaitForSingleObject) (ReleaseMutex).
, , ,
.
.
, .
, ,
.
EnterCriticalSection LeaveCriticalSection
. API , , .
, .
, WaitForSingleObject. SetEvent
,
547
PulseEvent . ,
.
, , . ,
. ,
, .
, .
, - .
, , ,
.
,
.
. , .
.
. Corei7, OMAP4430 , .
- .
, ,
, ,
-. , . .
, .
. ,
( ) ( ).
.
. ,
. .
- .
UNIX Windows7 . . , , . ,
.
548 6.
1.
3,
?
2. 32- . 4.
?
3. ? , , 4000?
, ?
4. 8 4 . 1024 .
.6.10.
6.10. 4
1) , .
2) 0, 3728, 1023, 1024,
1025, 7800 4096?
5. 16
4 . . :
0, 7, 2, 7, 5, 8, 9, 2, 4
1) LRU
?
2) FIFO
?
6.
FIFO.
. : , .
549
7. ,
,
, ,
.
(, ). , ,
? ?
8. , . - , ,
. ,
, , ,
, ?
9. .
2- , 2-
11- .
32, 2. , , , , .
.6.11.
6.11. 9
0
14
15
12
.6.12
. , ,
.
550 6.
6.12. 9
1.
2.
10
3.
2047
4.
5.
6.
14
7.
100
8.
50
9.
10.
60
10. - . , .
- ,
? .
11. , , , , . , 4- ,
, 4096,
5000. ?
12. Corei7
, .
, Intel ?
13. Corei7 10
8000. BASE 10
10 000. Corei7?
? ?
14. .
15. . ,
?
16. , .
,
. , , -
, .
: LRU FIFO. ?
17.
.
551
( ).
, .
-?
18. , open?
19. . 800 ,
5 32 . ( ), , ?
, , 32 .
20. ( ) . ?
21. , .
22. ,
. , N (N>> 1).
, , ..
,
,
i 2i.
?
23. - ,
,
, . ,
? .
24. ,
,
8. , 10%
( ) 95%
.
, ?
25. .
, up down ( ),
,
. ,
.
. , :
1) ,
100 ?
2) , ?
552 6.
26. :
, ,
.
up?
27. , ,
,
. , ( ).
, , peek.
,
. , ,
down. ,
? ?
28. , 0 1000 , P1, P2 P3 , . up down
. up,
, P1
P2 P3 .. ,
1.
yy t = 100 P1 down.
yy t = 200 P1 down.
yy t = 300 P2 up.
yy t = 400 P3 down.
yy t = 500 P1 down.
yy t = 600 P2 up.
yy t = 700 P2 down.
yy t = 800 P1 up.
yy t = 900 P1 up.
29. ,
,
. ,
, . , ,
(, ).
30. , ( TSL Test and Set Lock).
TSLX X. 0, 1 ,
. 0, TSL
553
. TSL, lock
unlock : lock(x) , x. , x
; unlock . x , ,
, x .
,
, .
lock unlock . (
, .)
31. in out 65
? in out 0.
1) 22 ;
2) 9 ;
3) 40 ;
4) 17 ;
5) 12 ;
6) 45 ;
7) 8 ;
8) 11 .
32. , UNIX 2
512 ( , ).
? ,
64.
33. , UNIX
.6.27:
unlink("/usr/ast/bin/game3")
, .
34. , UNIX- , . , -
, .
pipe,
. -
-? ?
.
35. UNIX,
.
,
- . , ,
554 6.
, ,
. , ,
, , . ?
36. Windows7 ,
,
. ?
37.
Windows7: .
, .
38. . , ,
,
64 1.
64 , .
,
.
, ,
. , . ,
, ,
( ),
. .
, ,
: LRU FIFO.
, x% 4 , . x
.
39. , 6.1, ,
. , -
. , ,
. ,
,
m.in m.out - .
, ,
, ?
40. UNIX Windows7,
. ,
, .
,
. ( ).
7.
46 , .
,
. . , ,
.
, . , ,
, , , , , , . ,
. , , ,
.
, (
) , . , , ( ). ,
, ,
, .
1. .
, ,
, , . :
1. .
2. .
.
. :
. ,
(, Java-).
: , .
,
1
,
( ). ,
, . . . .
556 7.
: ,
( ).
. . ,
, ( ), ,
.
. ,
, , .
(, Java C),
, , .
?
,
. , , , .
,
n
n .
, ( ), .
. , (add),
(subtract), (multiply) (divide) ADD, SUB,
MUL DIV, , . ,
, ,
.
. , , , , .
, ,
. , ,
.
,
. -, -
557
( ). -, , ,
. , ,
. , , , Java- .
, . ,
, , ,
, ,
, .
(, C) .
, ,
.
, , , , .
.
.
, .
, , .
? : . , , ,
, , .
.
(, -,
, ) BIOS,
, .
,
, . ,
, .
. -,
, , . ,
, .
, - ( ).
-, . ,
,
.
558 7.
,
, . 7.17.3 x86,
N= I+ J. I, J N,
.
7.1. N = I + J x86
FORMULA:
MOV
ADD
MOV
EAX,I
EAX,J
N,EAX
; EAX = I
; EAX = I + J
; N = I + J
DD
DD
DD
;
;
;
;
;
;
4
3
4
4
4
0
Intel ( x86) , .
Microsoft MASM. ARM,
x86, .
: , , .
. , , .
,
.
: FORMULA, I, J N. MASM ,
. - ,
.
.
, , , .
.
6 8 . .
.
,
. Corei7 EAX, EBX, ECX ..
( ), . ,
559
-. MASM
MOV , . MOVE
LOAD STORE.
. MASM DD
(Define Double ), 8088
16 .
,
.
, .
, . , , ..
,
. ,
,
, .
(
).
.
,
, ,
(,
). , . 7.1 DD. .7.1 ()
MASM x86.
7.1. MASM
SEGMENT
(, ..)
ENDS
ALIGN
EQU
DB
DW
16-
DD
32-
DQ
64-
PROC
560 7.
7.1 ()
ENDP
MACRO
ENDM
PUBLIC
EXTERN
INCLUDE
IF
ELSE
, IF
ENDIF
COMMENT
PAGE
END
SEGMENT , ENDS .
, ,
..
ALIGN ( ) ,
. , 61 , ALIGN 4
64.
EQU .
, BASE 1000:
BASE EQU 1000
, EQU,
, , :
LIMIT EQU 4 * BASE + 2000
, MASM, ,
, .
DB, DD, DW DQ 1, 2, 4 8 . :
TABLE DB 11, 23, 49
3 11, 23 49 , , TABLE,
, 11.
PROC ENDP .
, . MACRO ENDM
. .
561
PUBLIC EXTERN () . .
, ,
, .
, (),
,
PUBLIC.
, , (EXTERN), . , ,
. , , FOO
, ,
.
INCLUDE
. ,
, .
, MASM, . :
WORDSIZE EQU 32
IF WORDSIZE GT 32
WSIZE: DD 64
ELSE
WSIZE: DD 32
ENDIF
32-
WSIZE. : 32, 16 WORDSIZE ( 16).
, 32-,
64- .
IF ENDIF, ,
WORDSIZE, .
,
.
, WORDSIZE, ,
. .
COMMENT
( ) - . PAGE
. , END .
MASM . x86 , , .
, , .
562 7.
, , ,
.
,
. ,
. (, ), ,
. .
,
. , .
, . 7.2
x86, P Q. :
MOV
MOV
MOV
MOV
EAX,P
EBX,Q
Q,EAX
P,EBX
7.3 SWAP.
.
7.2. P Q
MOV
MOV
MOV
MOV
EAX,P
EBX,Q
Q,EAX
P,EBX
MOV
MOV
MOV
MOV
EAX,P
EBX,Q
Q,EAX
P,EBX
7.3. P Q
SWAP
MACRO
MOV EAX,P
MOV EBX,Q
MOV Q,EAX
MOV P,EBX
ENDM
SWAP
SWAP
-, :
563
, ;
, ;
, (, ENDM).
, .
, ( SWAP), .
,
.
, . . ,
7.2 7.3, .
,
.
.
.
,
. , ,
,
. .7.2 .
7.2.
, ?
,
, ?
-
?
,
. ,
.
. , ,
, .
.
, ,
, , ,
564 7.
( ). .
.
, . ,
. , 7.4
P Q, RS.
7.4.
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.5 7.4,
. P1 P2 . P1
, P2
. :
CHANGE P,Q
P , Q
. , 7.4 7.5 .
7.5.
CHANGE
MACRO P1,P2
MOV EAX,P1
MOV EBX,P2
MOV P2,EAX
MOV P1,EBX
ENDM
CHANGE P,Q
CHANGE R,S
565
, , .
MASM. :
. , ,
. ,
, . .
( MASM) (LOCAL),
.
.
MASM
. .
IF:
M1
M2
M2
MACRO
IF WORDSIZE GT 16
MACRO
...
ENDM
ELSE
MACRO
...
ENDM
ENDIF
ENDM
M2 , ,
: 16- 32-.
M1 , M2 .
, .
, ,
( ),
,
. , .
:
.
.
, ,
. , ,
566 7.
,
.
, , . .
. , ,
. CHANGE. , &.
MOV EAX,&P1;MOV EBX,&P2;MOV &P2EAX;MOV &P1,EBX;
.
, . , , .
. , , ,
. &
.
, .
, , , .
,
, ,
, ,
, . , . , , .
, L.
, L. L - ,
, . (forward reference problem) , L (
, ).
. -,
. , , , . -
567
, .
,
, .
,
.
,
. , ,
. ( )
, , -.
,
, . , , .
. ,
, .
, ,
:
BUFSIZE EQU 8192
, ,
. , (Instruction Location
Counter, ILC). 0
.
7.6 x86.
7.6.
MARIA:
MOV
MOV
ROBERTA: MOV
IMUL
IMUL
IMUL
MARILYN: ADD
ADD
STEPHANY: JMP
EAX,
EBX,
ECX,
EAX,
EBX,
ECX,
EAX,
EAX,
DONE
I
J
K
EAX
EBX
ECX
EBX
ECX
;
;
;
;
;
;
;
;
;
EAX = I
EBX = J
ECX = K
EAX = I
EBX = J
ECX = K
EAX = I
EAX = I
*
*
*
*
*
I
J
K
I + J * J
I + J * J + K * K
DONE
5
6
6
2
3
3
2
2
5
100
105
111
117
119
122
125
127
129
,
, : ,
. .
,
.7.3. ,
(, EQU).
(
568 7.
), .
:
, ;
( ,
, ,
);
,
.
7.3. 7.8
MARIA
100
ROBERTA
111
MARILYN
125
STEPHANY
129
, ,
(.7.4).
, ,
, , ,
(
).
7.4. x86
AAA
37
ADD
EAX
immed32
05
ADD
reg
reg
01
19
AND
EAX
immed32
25
AND
reg
reg
21
19
569
.
, .
, IBM3090
. 14 5 :
L 14,=F'5'
, ,
, 5, , L. ,
, . ;
.
, . ,
, ,
. ,
. ,
,
. ,
, , . ,
.
7.7 ,
. ,
.
. , ,
, .
7.7.
public static void pass_one() {
//
boolean more_input=true;
// ,
String line, symbol, literal, opcode;
//
int location_counter, length, value, type; //
final int END_STATEMENT = -2; //
location_counter = 0;
initialize_tables();
while (more_input) {
line = read_next_line();
length = 0;
type = 0;
// 0
//
//
//
//
//
//
more_input END
""
#
if (line_is_not_comment(line)) {
symbol = check_for_symbol(line);
if (symbol != null)
// ?
// ,
//
570 7.
7.7 ()
enter_new_symbol(symbol, location_counter);
literal = check_for_literal(line); // ?
if (literal != null)
// ,
//
enter_new_literal(literal);
// . -1
opcode = extract_opcode(line);
//
type =search_opcode_table(opcode); // ,
// , OP REG1,REG2
if (type < 0)
// ,
// ?
type = search_pseudo_table(opcode);
switch(type) {
//
case 1:length=get_length_of_type1(line); break;
case 2:length=get_length_of_type2(line); break;
//
}
}
write_temp_file(type, opcode, length, line); //
//
location_counter = location_counter + length; //
//
if (type == END_STATEMENT) {
// ?
more_input = false;
// ,
// :
rewind_temp_for_pass_two();
//
sort_literal_table();
//
remove_redundant_literals();
//
}
}
}
, , check_for_symbol,
, , , . ,
get_length_of_type1 get_length_of_type2,
. , , ,
.
,
. ,
. read_next_line. (, -
), , pass_one .
, (, ADD),
( ) . , ,
.
571
-.
-, ,
-
, ,
. , ,
. , .
END .
, . .
( ). , ,
, . 7.8
.
7.8.
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;
//
// 0
while (more_input) {
//
//
//
//
//
//
//
//
type = read_type();
opcode = read_opcode();
length = read_length();
line = read_line();
more_input END
""
if (type != 0) {
// 0
switch(type) {
//
case 1:eval_type1(opcode, length, line, code); break;
case 2: eval_type2(opcode, length, line, code); break;
//
}
}
write_output(code);
//
572 7.
7.8 ()
write_listing(code, line);
//
location_counter = location_counter + length; //
//
if (type == END_STATEMENT) {
// ?
more_input = false;
// ,
//
finish_up();
//
}
}
}
: . , ( ),
, , ,
. eval_type1,
eval_type2 .. (,
-).
code. . , write_code
.
() ,
( ), ,
.
.
, .
, - , ,
.
:
;
;
;
;
;
8 9;
(, );
END.
.
.
,
,
. . ,
,
.
573
. , .
.
.
,
( , ). .
,
( ), ( ). -
, ,
. ,
, .
. .
, ,
.
, , .
, .
, . , .
.
, . , n log2n
. , , ,
.
.
-, () 0 k 1. , ASCII-
, ,
k .
,
. , k
, 0 k 1. ( , ),
i, ,
i -. - n
k , n/k. k, n,
. k
, .
.7.1.
574 7.
. 7.1. : , -,
(); - 8
( )
. .
. ,
. ,
, -: ,
, .
(.7.2):
575
1. .
2. .
, .
. 7.2.
,
. ,
.
, ,
. Windows
.obj, .exe. UNIX
.o, .
. .
,
.
, .7.2,
,
.
, ,
( ) .
, .
0. ,
0. .7.3
4 , .
BRANCH MOVE
.
576 7.
. 7.3. ,
,
, (.7.4,).
. , .
, ,
, ,
, , , , .
( ) 100.
.7.4,. , . ,
, A.
MOVE, 300.
.
,
.7.3 . (,
577
. 7.4. ,
();
( ).
,
578 7.
x86)
, . x86
OS/2 . Windows UNIX
,
.
, .7.4, .
400 B,
,
, CALL B, B .
. .
.
:
1. .
2. .
3. , , ,
.
4. , ,
.
7.5
, .7.4. ,
.
7.5. , .7.4
400
100
600
500
500
1100
300
1600
.7.4, , .
:
1. .
2. .
3. .
4. .
5. .
6. .
579
, ,
(, ),
.
,
, .
. , bigbug, "bigbug" .
, , PUBLIC
, .
, , .
, ,
.
, , .
,
. , ,
EXTERN , . .
.
,
. , .
.
, ,
(. .7.4). ,
4 , .
, .
, , .
,
, , ,
.
.
, ,
. , .
, , ,
.
,
.
580 7.
581
,
.
, ,
.
(, BRL). ,
, L, . , ,
:
1. .
2. .
3. , .
4. .
5. , .
6. , .
, ,
, (, ,
, ).
,
, , . , , ,
(. .7.5).
. -, ? -,
? .
, .
.
, .
, , .7.4,,
. , , A, B, C D, ,
.
.
,
, ,
. .
,
, .
. CDC6600 .
582 7.
, , .
.
.
, . ,
. ,
, (
, , , Intel 8088, ).
, .
, ,
. ,
, (, -), -.
-
.
, , : , , .
,
.
, . ,
.
. .
MULTICS,
.
.
MULTICS
MULTICS ,
(linkage segment).
, .
, ,
, .
,
, .7.6,.
, ,
.
583
. ,
,
.
( ),
584 7.
, .7.6,. ,
, , , .
,
. ,
, .
.
Windows
Windows, Windows NT,
. , DLL (Dynamic Link Library
). , .
,
. DLL- .dll,
, .drv ( driver libraries)
.fon ( font libraries).
DLL , ,
. .7.7 ,
DLL-, 4 , A, B, C D. 1 A; 2 C,
.
. 7.7. DLL-
DLL- .
DDL ,
DLL , ,
585
DLL. DLL-
, .
DLL- Windows .
DDL-, .
, , .
DLL-
.
, ,
,
. ,
, DLL- ,
, DLL- ,
.
DLL
, DLL- (
). . , DLL-
, . ,
, ,
DLL-, ,
, DLL- .
, DLL-.
DLL- :
.
,
. ,
DLL-.
, DLL-.
. ,
, , Windows , DLL-
. , , (
, ). ,
(
, .7.6). .
; DLL- ,
.
.
, DLL- -
586 7.
.
, DLL-,
,
. , ,
DLL-.
DLL-, .
, DLL-
( ).
. , ( ), , .
.
UNIX
UNIX , DLL Windows. DLL-, ,
,
.
C .
UNIX , : (host library),
,
(target library), .
, DLL.
, .
(, -, , ).
.
, .
- , ,
,
, . ,
.
, .
587
.
.
.
, . , ,
, .
, . . (), , .
, , . ,
. ,
. UNIX (DLL)
Windows .
1. 2% 50% .
. , C
100 -, 10
, 4 .
1) C.
2) .
3) C, 2% .
2. ? .
1) .
2) .
3. x86
, .
?
4. ? EQU
, .
P
Q
R
S
EQU
EQU
EQU
EQU
Q
R
S
4
5. 40- . , -
588 7.
,
. ,
, Q .
? .
6. ?
7. ?
? .
8. x86 ( 1000)?
EVEREST:
K2:
WHITNEY:
MCKINLEY:
FUJI:
KIBO:
POP BX
PUSH BP
MOV BP,SP
PUSH X
PUSH SI
SUB SI,300
;
;
;
;
;
;
(1
(1
(2
(3
(1
(3
)
)
)
)
)
)
9. ,
(, MOV )? .
10. ,
Berkeley : Ann Arbor, Berkeley, Cambridge, Eugene,
Madison, New Haven, Palo Alto, Pasadena, Santa Cruz, Stony Brook, Westwood,
Yellow Springs.
, , .
11. ,
?
12. - .
(a= 1, b= 2 ..)
-. - 19 ( 0 18).
els, jan, jelle, maaike
? , ?
13. , ,
, -, . n ,
(
). , ,
. , ..
, .
, , R,
, ?
14. , - ,
589
.
, ?
15. x86 .
SEGN, N.
?
16. DLL.
DLL-, ?
17. DLL-
? ,
? ? , , ?
18. () :
, ,
(EXTERN).
, ,
. ? ,
?
19. ? ? , ? , ?
20. .
,
. ?
21. , .
22. 5 200, 800, 600, 500 700
. ,
?
23. , : enter(symbol, value) lookup(symbol, value).
, .
- .
24. , -
.
25. Mic-1,
4. , , .
26. , , .
8.
,
.
. ,
.
,
. , ,
( , ).
,
.
. -
.
, ,
,
,
(, ).
, , ( ).
0,001, 1000 , 1.
,
.
.
.
.
. ,
. , ,
10 .
. , ,
, , . .
591
510 .
, ,
.
( ). , ,
.
,
. , (grids).
, .
,
(tightly coupled). ,
,
(loosely coupled).
. , ,
. .8.1.
,
, .
9.
592 8.
, .
, ,
.
, . .
, , . , ,
: VLIW.
, .
.2.5.
.
.
, .
. ,
,
.
(Very Long Instruction Word, VLIW).
VLIW-, , ,
. , .8.2, .
, ,
. VLIW
. ,
6 , 5, 32 ,
134 , , , .
. ,
, (.8.2, ).
VLIW- -
, , (.8.2,).
. , , .
593
, VLIW-
. . ,
,
, . ,
,
Itanium.
, .
,
[Chou et al., 2004].
594 8.
VLIW- TriMedia
5 Itanium 2
VLIW. VLIW- TriMedia Philips. TriMedia
, - , CD-, DVDMP3-, CD DVD, , , .. ,
TriMedia Itanium 2 .
TriMedia- . .
266 366, ,
.
TM3260 .
TriMedia .
TriMedia- .8.3.
8-, 16- 32- IEEE 754
.
TriMedia , , .
. 8.3. TriMedia-
TriMedia , . (16 )
(32 ) .
,
, .
. 8- - (64 ) .
64 ; 16 .
128 32- .
R0 R1 . 126 .
, 32- :
, ,
. , 64- . 300
2000 .
595
Trimedia TM3260 11 , , (
, ). .8.1. .
. (, ) . , , , . ,
, ,
. , , , .
8.1. TM3260 ,
# 1
32-
32- - 2
17
2
( 16-
8- )
2
( 16-
8-
)
596 8.
,
. ,
.
,
. , , ,
.
.
. , TriMedia RISC- , ,
. 8, 16 32.
.
,
.
, , .
.
,
( 15 ). .
, , . (Digital Signal Processor, DSP).
, ,
,
(saturated arithmetic). - ,
.
, 8- 130 130 255.
,
. , .
26, 34 42 . TriMedia- ,
2 28 (
).
TriMedia-
.
, .
.
Corei7 , ,
. TriMedia -
597
,
.
, , .
Itanium 2, TriMedia . (
) ,
. ,
; .
( ) . :
IF R2 IADD R4, R5 > R8
R2,
, R4 R5 R8.
,
R1 ( 1). R0 ( )
.
TriMedia 15 , .8.2. , , .
8-, 16- 32- . , 40 340 0 255
40 255. .
8.2. TriMedia
, ,
(DSP)
(DSP)
(DSP)
(DSP)
16-
8- 16-
, ,
598 8.
8.2 ()
8-
8-
.8.2 , .
.
,
, .
32-
. ,
RGB (Red, Green, Blue , , ) 8- , . (,
) ,
( RGB), (
YUV, ). ,
8- .
TriMedia . 8- ,
(.8.4, ). 44
16 8- A P. ,
, .8.4,.
?
. 8.4. 8- (); ( );
, ();
( )
12 , ,
12, (, ). ,
24 , .
599
. ,
R2 R5 (
.8.4, ).
,
(.8.4, ). .
( 24 8),
-
.
TriMedia . . ,
. ,
. 4 5 R2 R3,
R4 R5.
, ,
1, 2 3 . 8
, . ,
6 , 14 30
, , .
. ,
TriMedia
.
, , .
(on-chip multithreading).
.
: 1 ,
, 2.
, ,
. , (fine-grained multithreading), ,
, .8.5. .8.5, (A, B, C ), 12 .
A A1. , A2.
, .
600 8.
5. , B C
.
. ,
,
.
. 8.5. .
(); ( );
()
,
(.8.5,). 4 , A1, , A2
A1, .
,
. 4
4 ..
, . , ,
. ,
.
.
, . ,
, .
: k ,
, , k ,
,
.
, .
,
, , (coarse-grained multithreading), .8.5,. A
, . .
B
(B1). , 6 C1.
601
, ,
, ,
.
.
, ,
.
, (, ,
) , .
( ) . ,
,
, .
.
-
. ,
.
. , . ,
, ,
.
,
. , . .8.6
, ,
. 8.6, . ,
A ,
B .
. 8.6. : ();
( ); ()
602 8.
.8.6,
,
. , ,
;
.
(simultaneous
multithreading), .8.6,.
,
,
. .
- .
, 11 B8,
12 C 7.
[Gebhart
et al., 2011; Wing-kei et al., 2011].
Core i7
,
Corei7. 2000- , Pentium4, , Intel
. , Pentium 4 , Intel
.
.
1. .
2. .
3. .
4. .
5. .
,
, . ,
, . ,
: (
, ) (
).
, , .
-,
, . -,
603
,
-
, . , ,
.
,
. ,
,
?
,
,
, , , -,
, .
, ,
, , , .
, . ,
, . Intel
, 5% 25%.
Intel Xeon 2002.
, 3,06, Pentium4 ( Corei7). Intel
(hyperthreading).
(
).
Corei7 .
. , . ,
,
, .
,
, . ,
.
, , .
, .
.
604 8.
, .
Intel : , ,
. .
(resource duplication). , . ,
,
. ,
(EAX, EBX ..) ; ,
.
(partitioned resource
sharing) . , , 1, 2.
, .
. ,
,
, , . ,
, .
(full
resource sharing).
, .
, ,
, , .
, , , ,
.
, - .
,
.
(threshold resource sharing).
() .
- . , ,
3/4 ,
. Corei7
. ,
, .
, -
605
( , ,
). 5% ,
. , ,
(, ),
. ,
(, ),
.
Sandy Bridge, Corei7, .8.7;
.
. 8.7. Corei7
, .
. . , ,
. .
, .
.
, , , .
,
, . , ,
3/4 . ,
- ( , ).
- ,
, .
Intel
[Gerber and Binstock, 2004; Gepner et al., 2011].
606 8.
, , .
. ,
, .
.
( ),
.
( ), ,
2, . ,
-.
, ,
,
( , ,
).
. (.8.8,)
,
. (.8.8, )
, .
(, , -
-), , , .
. 8.8. : ();
( )
( ) ; ,
, .
. ,
.
607
.
,
, .
Core i7
Core i7 ,
.
Corei7 . 8.9.
. 8.9. Core i7
Corei7
, L2.
-.
L3.
L2 L3 . ,
, . ,
.
, , (
, ). , .
Corei7 : -,
-
, - , ,
.
.
, :
, DVD-, , , .. .
, , -
608 8.
, ,
-. , , , , , ,
.
DVD-. :
1. , .
2. .
3. .
4. .
5. MPEG-2.
6. .
7. NTSC, PAL SECAM.
, ,
, , .
CD, DVD Blu-ray (.,
, .2.21). DVD
, Blu-ray, Blu-ray DVD,
, MPEG-4
MPEG-2.
.
.
, . ,
.
MPEG-2,
.
, . , - ,
NTSC, PAL SECAM , DVD-. ,
.
, . DVD- .8.10.
, .8.10, ;
. ,
DVD MPEG-2 (
Motion Picture Experts Group
).
.
609
. 8.10. DVD-
, ( x, y)
. , MPEG-2
. , -
.
, DVD- . ,
,
, DVD.
(CDMA GSM), - , , , ,
(IEEE802.11, WiFi).
, , , .
, GPS-, ,
.
.
. (, ,
)
.
, , . , .
610 8.
, , , ,
. ,
, , , , .
. , 50 75%
. .
- ? -, ?
? ?
? : SRAM ,
, SDRAM? , .
, . ,
,
.
. ,
(token).
. , . ,
.
CoreConnect IBM (.8.11).
.
CoreConnect
, PCI Pentium. , PCI CoreConnect
, , .
CoreConnect . 32, 64
128 , 66, 133
183. 23,4/ (
, PCI 4,2/).
. ,
PCI, .
, MPEG-2, .
,
- (UART,
611
, USB-, -
..) , , . 8-, 16- 32- ,
.
,
300/. ,
, PCI ISA, ISA .
CoreConnect .
,
. , .
, CoreConnect
PCI, . , PCI
. CoreConnect
,
.
,
.
(ARM, MIPS, PowerPC ..), MPEG,
-.
CoreConnect, . AMBA (Advanced Microcontroller Bus Architecture
ARM
- [Flynn, 1997].
VCI (Virtual Component Interconnect ) OCP-IP (Open Core Protocol-International Partnership
612 8.
,
, . , . IBM 360 -
. CDC 6600 10 ,
-.
. DMA .
;
.
( - IBM360), (
) (
). ,
. , :
, .
. ,
. ,
, .
.
:
(Local Area Networks, LAN) , , (Wide Area Networks, WAN)
613
, .
Ethernet.
Ethernet ,
(vampire tap)
. Ethernet
( .8.12).
Ethernet 3/, 10/.
Fast Ethernet Gigabit Ethernet 100/ 1/ .
10/,
40/.
. 8.12.
. , , .
641500 , . , ,
, ,
.
(store-and-forward packet switching).
, , .
, .
.8.12 .
- , ,
ADSL (.2).
. .8.12
,
. , ,
614 8.
,
(Internet Service Provider, ISP). ( ) , .
, .
, -,
, ,
(, ). ( ),
. ,
, , .8.12, .
,
, , . , - , HTTP (HyperText Transfer
Protocol ) GET PAGE
, , . , .
,
,
.
.
,
.
GET PAGE. -? TCP (Transmission
Control Protocol ). ,
, ,
, .
TCP ,
.
. HTTP GET PAGE,
TCP, . TCP
, . TCP-.
, TCP TCP ( GET PAGE)
, IP (Internet Protocol ). IP-
( , )
(, ), ,
(
, ), (
) .
( IP-, TCP- GET PAGE) ,
615
. , CRC (Cyclic
Redundancy Check )
. , ,
IP , , ,
. CRC-
, CRC- , . .8.13
, Ethernet.
(ADSL) , Ethernet-
. ,
. , ,
.
[Tanenbaum and Wetherall, 2011].
. 8.13. Ethernet-
. ,
, ( ), , (
), .
. ,
,
, , , -,
. ,
. ,
,
, .
,
. , ,
, ( ), ( ),
..
40 /,
1,
5 . 64
80 .
12200 ,
, .
.
(Application-
616 8.
617
. 8.14.
), RISC- (,
)
.
PPE-.
PPE- .
, PPE-, . PPE- ,
SDRAM,
PPE-. ,
.8.14, , PPE-
.
PPE- ,
PPE- , PPE- .
, 2. PPE-
.
PPE-
,
, , . ( ) , .
(, SDRAM, ),
PPE- , . PPE-,
SDRAM .
618 8.
PPE-, ,
(, ).
RISC- ,
. ,
,
.
(ASIC), ,
.
.
,
, .
(ingress processing)
(egress processing).
, ( ),
. ,
, . ,
(, ).
, , , ,
, .
1. . Ethernet,
(CRC-) , , , .
CRC Ethernet- , IP- . , IP-
, IP-. , , .
2. .
, . Ethernet- Ethernet, IP- IP-.
( PPE), SRAM ( ).
3. .
.
, .
4. .
, ,
-, -
619
. ,
.
5. . IP- 32- . ( ) 232 .
,
. , , ,
, .
.
6. . , SRAM, , . ,
.
7. .
() TCP-,
, TCP, IP, Ethernet
. , (, , )
.
.
8. .
, ,
. .
9. . ,
. , IP-
, . , .
10. .
. , . ,
.
.
11. . . IP-
, Ethernet-
.
12. . ,
. .
13. . :
, ,
.. .
620 8.
.
? , , . ,
, , .
, , , . ,
, .
. ,
,
. ,
.
PPE- .
, ,
.
, ,
.
,
.
,
. , (SRAM SDRAM), , ,
.
, , .
[Freitas et al., 2009; Lin et al., 2010;
Yamamoto and Nakao, 2011].
(, 3D-).
.
, .
NVIDIA Fermi
, ,
NVIDIA Fermi ,
.
621
. 8.15. Fermi
Fermi , , .
, 16 , , ,
, . SIMD (SingleInstruction Multiple Data); , SM .
SM NVIDIA
512 .
Fermi (
622 8.
),
, Corei7 OMAP4430.
SIMD SM ,
.
16 CUDA
. , NVIDIA
CUDA, .
,
.
(
), 16 ( ,
16 ). SM , , - .
.
, ,
. SIMD-
: , ,
.. GPGPU (GeneralPurpose Graphics Processing Units).
512 CUDA Fermi
.
Fermi ,
.8.15. SM ,
1. CUDA
SM. 1 DRAM.
, SM
16- 48- 1, 48- 16- 1.
SM 2 768.
DRAM, 1.
SM,
SM.
DRAM, ,
, ,
Fermi.
DRAM,
.
Fermi
. GTX580 Fermi, 772 512
CUDA, 1,5
623
. 8.16. Fermi
, ( ) ,
. , .
()
, .
, , .
:
.
(
). (1024-),
.
, . ,
624 8.
PCI-. ,
, . ,
, . [Gaspar et al., 2010; Haghighizadeh
et al., 2010; Shoufan et al., 2011].
, ,
.
. .
, , .
,
, - ,
. ?
: . . ,
, .
, , ,
(.8.17,). , ,
,
. LOAD STORE
. .
, .
. . ,
.
, .8.17,.
16 ,
16. ,
,
, . ,
, , .
625
. 8.17. 16 , (); ,
16 , ( )
, .
,
. ,
,
, . ,
, ,
.
, , (, ..).
-
, , -.
-.
-
, (Symmetric MultiProcessor, SMP).
, .
, (.8.18,).
,
,
, LOAD STORE,
. , , ,
.
, -
626 8.
. 8.18. 16 ,
(); .8.16, 16
()
.
IBM BlueGene/L, Red Storm Google.
, ,
.
,
LOAD STORE. ,
.8.17, ( 0) , ,
( 1), ,
. 0 .8.18,,
1.
.
0 - , ,
. 0 . 1
, ,
. 0 ,
, .
send receive. , .
.
,
, . , , .
627
: , ? :
,
. ,
, , , 10000 , .
50000 .
, :
, , ,
.
. ,
-,
.
, .
, ,
.
, , .
,
.8.19. .8.19, , , .
,
. ,
,
. , ,
, .
.
, , , .
(Distributed Shared Memory,
DSM),
(. .8.17,),
[Li and Hudak, 1989].
LOAD STORE, , ,
.
,
,
.
-, ,
. ,
, . , .
.
.
628 8.
. 8.19. , :
(); ( ); ()
,
( ). , Linda ( , ).
. ( Linda),
.
,
, Orca.
Orca , Linda, ,
. , ,
. ,
,
. Linda Orca .
,
629
. ,
- .
[Flynn, 1972; Treleaven, 1985], , ,
. ,
(.8.3).
8.3.
SISD
SIMD
MISD
MIMD
. . n
n , , n .
. ,
, .
- ,
4 (. .8.3). SISD (Single Instruction stream Single
Data stream ) .
. , SIMD
(Single Instruction-stream Multiple Data-stream ), ,
, ,
. SIMD- ILLIACIV
(..2.6). SIMD- ,
SIMD-. SSE- Pentium
SIMD-. , ,
SIMD, , . [Kapasi et al., 2003].
MISD (Multiple Instruction-stream Single Data-stream ) .
. ,
, MISD .
MIMD (Multiple Instruction-stream Multiple Datastream ).
.
. , MIMD-.
630 8.
(.8.20). SIMD-
.
, ,
. ILLIACIV,
.
. 8.20.
MIMD
( ) ( ). .
UMA (Uniform Memory
Access ), NUMA (NonUniform Memory Access
) COMA (Cache Only Memory Access
-). ,
.
UMA- . ,
, . ,
, ,
.
. ,
.
NUMA-, , .
,
, , -
631
, .
, . COMA- , .
, .
MIMD- ,
. , ,
, , LOAD.
.
LOAD
. ,
LOAD STORE, ,
. , .
, NORMA (NO Remote Memory Access
).
. MPP (Massively Parallel Processor
) ,
,
.
SP/3 IBM.
( ),
. , ,
,
, MPP-. (Network Of
Workstations, NOW), (Cluster Of Workstattions,
COW) (cluster).
, , -
.
(. ).
, ;
, .
(, -), ,
. , -
632 8.
.
[Adve and Hill, 1990]. ,
. ,
. [Sorin et al., 2011].
, , 0 1 - , 1
2 . 2
1.
? , .
.
x
x. ,
:
, (
), . , ,
.
[Lamport,
1979]. ,
.
. , 1 100 x, 1 2 200. , 1 (
) , 3 4, x (.8.21).
. 8.21. ,
.8.4.
633
8.4. .8.21
1
100
100
200
200
100 3
200 4
200 3
200
100
200 3
200 4
100 3
200 4
200 3
100 4
200 4
200 4
100 3
200
. 3 100
200, 4 200. 3 100, 4 200 100.
, , .
.
, , 3 100 200,
4 200 100. , 3 , 100 1 200, 2.
. 4 ,
2 200 1 100.
, .
( ) .
3 100, 4
.
, , .
, , ( ),
.
, ,
.
,
[Goodman, 1989].
.
1. ,
.
2.
.
634 8.
. , 1 1A, 1B 1 -
, .
, , -
1B, 1A. ,
, , . .
.
, , 2
2A, 2B 2C 1.
, , , 1A, 1B, 2A, 2B,
1C, 2C 2A, 1A, 2B, 2C, 1B, 1C ..
, (
). ,
1A, 1B, 2A, 2B, 1C, 2C, 2A, 1A, 2B, 2C, 1B, 1C,
- . ,
, ,
1B, 1A. , , .
, .
, , , [Dubois et al., 1986]. 1A,
1B, 1B, 1A. ,
.
, ,
.
,
.
,
, ,
.
, (.8.22).
1A 1B ,
-,
1A, 1B,
1B, 1A. .
1B 1C, 1C, 2B, 3A, 3B , 1A, 1B 2A. ,
635
,
, .
.
. 8.22.
,
, .
,
[Gharachorloo et al., 1990]. . , , . ,
, - .
.
,
( )
acquire ,
. ,
( ), release , , . release ,
, . , .
acquire, ,
release . , acquire , ( ,
release, ). ,
acquire
release, ,
. acquire
release,
( , )
636 8.
release. ,
. , , :
, .
.
[Naeem et al., 2011; Sorin et
al., 2011; Tu et al., 2010].
UMA-
(.8.23,).
. ,
, . ,
,
, .
. 8.23. : - ();
-( ); - ()
, , .
.
, , 32
64.
,
.
, , . 8.23,. -
, , .
637
. , ,
. , . , ,
.
,
, (.8.23,). ,
, , , ,
.
.
.
, ,
. , . , 1
, 2 ,
? 2
. ,
. , 1
, 2
-. ,
. , 2, .
, ,
. , -,
, ,
-.
(., , [Goodman, 1983; Papamarcos and Patel, 1984]). , ,
,
.
- ,
, ,
. (snooping
cache), . , , , ,
. .
32 64.
(write through). , 4 , .8.5.
, -, -
638 8.
, . ,
.
.
8.5. ( ,
)
- . , , .
- , . , ,
.
,
( .8.5). , ,
1, 2. - 1,
1 , .
2 , . -
1 ( 1),
, 2 - 1.
. 1 , 1
-, -.
2 .
, 2 - . (, .8.5, -
, , -
, . ,
- - , .)
, 1 , 2.
2 , ,
2 -,
. .
, - ,
. .
, 2 . 2 ,
. 1, 2
. - ,
, .
639
. , -
, .
, .
, , .
.
- . , , , , , -.
- .
;
. : ,
? ,
- ( ). , -
-. ,
- ,
- .
, .
,
.
. :
.
, , , .
,
, . .
MESI
MESI
(Invalid, Shared, Exclusive, Modified , , , ),
[Papamarcos and Patel, 1984].
[Goodman, 1983].
MESI Corei7 .
:
;
,
;
(
), ;
, , .
640 8.
.
,
(.8.24,).
, .
.
. 8.24. MESI
641
(1) ,
, , . (.8.24, ). ,
,
.
.
, , 2
. , ,
, 2 (.8.24,). .
, ,
,
.
, 3.
2, , ,
, ,
3 , .
3 ,
(.8.24,).
2 (.8.24,), 3 .
, 1. 2
, , , 1, , 2
. 2
, , . ,
. ,
(.8.24,).
, , .
UMA-
- UMA- 16 32 .
, .
n k
(.8.25). ,
.
() () (crosspoint),
,
. .8.25, , ,
- (001, 000), (101, 101) (110, 010). -
642 8.
. 8.25. 88(); ( ); ()
.
, .
, . ,
,
(, ). , .
,
. , .
, n2.
,
NUMA- Sun Fire E25K.
1000 1000 , . .
UMA-
2 2
(.8.26,) . ,
, .
(.8.26,).
, .
643
.
, READ WRITE. ,
, 32- ,
WRITE.
,
: X Y.
. 8.26. 22(); ( )
2 2 .
omega (.8.27). 8 8
12. n n log2n
n/2 , (n/2)log2n , , n2
, n.
. 8.27. omega
omega
(perfect shuffle),
. , omega, ,
011 110. READ, 1D,
110 . ( ) 110
(0 , 1 ).
1,
2D.
, 2D,
. 1, -
644 8.
3D, .
0, , 110, . , ,
.8.27 a.
, .
, ,
. a 0 ( 1D), 1 (
2D) 1 ( 3D) . ,
011, .
, , 001
001. .
, .
.8.27 b. , 001, ,
.
, , .
, , 000 000.
001 3A, .
, omega
. .
(
), ( )
( ).
, .
.
,
32- . 00,
. , . ,
, .
,
. ,
.
NUMA-
UMA-
,
,
.
100 , - .
, .
, -
645
. 8.28. NUMA-
NC-NUMA- ,
-.
646 8.
,
. , , , .
NC-NUMA-
.
(), .
,
. ,
,
.
, , (,
, ). ,
T. , [LaRowe and
Ellis, 1991]. .
CC-NUMA-
, , .8.28,
, -.
, ,
,
. - .
. ,
,
. .
, CC-NUMA,
. , .
,
().
,
,
.
, , 256 ,
16- , . 232.
226 64 .
: 016M 0, 1632M 1
.. (.8.29,).
647
, .
218 64- ,
224 . , .
, , LOAD 20, . ,
, , ,
, 0x24000108.
, .8.29,.
36, 4 8. , ,
, 36, 20,
36, , , 4 ,
, .
36, .
218 ( ) 4. . 8.29, ,
, 4 ,
20 4, ,
20.
, 2 36.
. 8.29, , 82.
2 , ,
648 8.
20, 82,
20, 82 . ,
.
, . 16- 218 9-
. 9 218 16,
1,76%, .
32, 4%.
128, 1%.
, .
, - (, ). .
k
,
( k ).
, .
, . ,
256 64- (512-) , 50%
. 8-
,
.
. , , .
, .
,
? , , , . ,
, ,
.
, .8.29, ,
,
.
,
( )
, .
, , -
, . ,
,
.
.
CC-NUMA- [Cheng and Carter, 2008].
649
650 8.
, . , ,
. .
150 , 150 , 2,7
18 .
.8.30 ,
,
. PCI ,
,
.8.31. ,
.
, .
(.8.29),
. 0
,
1. -
1. .
,
( ).
33.
: -, - , .
651
2 ,
- ( UltraSPARC ). , ,
2. ,
3
1818. 32 , ,
64 .
, , , .
576
229 64 . .
, , - .
.
,
17 , ,
. E25K
, , ,
.
( ) :
( );
( );
( ).
652 8.
, , , . , , .
,
- . , ,
. ,
, ,
.
, , , .
ECC-,
. ,
, .
.
, , (
), .
, , (
), , .
.
,
. , ,
. . ,
. , ,
, . ,
.
229 ,
229 .
, , ( ) .
17 ,
.
, ,
. ( ) ,
.
Sun Fire E25K .
653
2,7 .
- -. 32 ,
288 . 150
40 /,
.
, ,
.
Sun Fire E25K
[Charlesworth, 2002; Charlesworth, 2001].
2009 Oracle Sun Microsystems, SPARC . SPARC Enterprise M9000
E25K. M9000
SPARC, PCI. M9000 256 SPARC, 4 DRAM 128
- PCIe.
COMA-
NUMA- CC-NUMA- : , .
CC-NUMA- -
-.
-, -, .
, UMA, , .
NC-NUMA- ,
,
. , ,
, , -
. CC-NUMA-, Sun Fire E25K, ,
. ,
.
,
. COMA (Cache Only Memory Access
-). , NUMA CC-NUMA, ,
.
,
.
. ,
, , . ,
, .
654 8.
-, ,
.
, . COMA
:
?
, ?
. ,
.
, ,
, .
,
, .
, , , ?
, .
. ,
, .
, .
,
.
, ,
. ,
COMA, , . ,
,
.
, , .
( ,
, , ). ,
, ,
.
, , .
. CC-NUMA, .
-, , . , ?
.
, . , . ,
- .
.
. COMA-
, CC-NUMA,
655
COMA-,
. COMA- KSR-1 [Burkhardt
et al., 1992] Data Diffusion Machine [Hagersten et al., 1992].
COMA [Vu et al., 2008; Zhang and Jesshope, 2008].
.8.20, MIMD
: .
. , , LOAD STORE.
, , , . , ,
,
.
.
, . ,
. , Sun E25K,
72 . ,
65536 . ,
- 65536 ,
.
,
. 100 ,
, .
,
, . .
LOAD STORE, send receive, .
.
, ( ),
() -, .
(. UMA- ).
, ,
656 8.
:
send,
(, ). .8.32.
. 8.32.
.8.32,
. . ,
, ,
. ,
, ,
.
, . , ,
. , : .
, ,
, .
( , , ).
,
, (.8.33). ( ) . , .
, . k ,
657
, ,
k 1 .
. 8.33. . .
: (); ( );
(); ( ); (); (); (); ()
.
,
, ,
, .
,
658 8.
. , .
, .
, , .
. ,
( )
,
.
( ) . ,
, 800/, ,
,
800/. ,
. , ,
.
.
. (
), .
(, , ), .
, , ..
.8.33 . ( ). (
) .
.8.31, ,
,
. ,
.
, .
.8.33,
. .
, , (
). k k(k 1)/2 ,
k.
(.8.33,). ,
. , .
,
. ,
b, 2b, -
659
(Massively Parallel Processors, MPP)
.
, , .. ,
,
. - -
660 8.
1960- (
, ). , ,
MPP- SIMD-, .
MPP- . Intel Pentium, Sun UltraSPARC, IBM RS/6000 DECAlpha.
, . (
) ,
( 256),
( 8). MPP-
.
MPP -. MPP-
, .
,
.
, MPP .
.
- ,
, .
MPP- ,
.
, , MPP-, , , .
, MPP-
,
. MPP-, BlueGene/P
Red Storm.
BlueGene
IBM BlueGene. IBM 1999
. , ,
.
. , ,
(,
). ,
, ,
661
BlueGene.
, , .
, IBM
BlueGene 100 . 2001
BlueGene
BlueGene/L. , . 2007 IBM
Blue Gene BlueGene/P,
.
BlueGene MPP-,
,
/, / /3. IBM ,
MPP- . ,
,
. BlueGene/P 2007. 65536
, 167/.
. , BlueGene/P : 371/,
, BlueGene/L.
BlueGene/P 2009 294912 ,
1/.
BlueGene/P , , .8.34.
PowerPC 450, 850. PowerPC 450
,
. (Floating Point Unit, FPU),
4 .
SIMD-, . ,
.
.
, 32 32
. 2.
, , .
, . 4,
. L1 ; ,
,
662 8.
. 8.34. BlueGene/P
. , -
- , 11.
- -
28 . , -
(DDR SDRAM), 75.
, : , , , ,
. ,
, .
,
.
IBM , , . 8.35,,
DDR2 2. 8.35,,
.8.35,.
, 32 ,
32 ( 128 ) .
DRAM 2, 64
(.8.35,). 32 , 4096 .
.8.35,.
663
664 8.
665
, .
,
, ,
. - Linux .
BlueGene, BlueGene/Q. , 2012, 18 ,
. .
, 20/.
BlueGene/L [Adigaetal, 2002; Alam et al., 2008;
Almasi et al., 2003a 2003b; Blumrich et al., 2005; IBM, 2008].
Red Storm
MPP Sandia Red Storm ( Thors
Hammer). Sandia Lockheed Martin .
,
.
Sandia .
, ,
, MPP-.
2002 MPP- ASCI Red
. 9460 ,
1,2 13,5 ,
3 /.
2002 Sandia ASCI Red,
Cray Research.
2004 ,
.
, Red Storm
.
, . 2006
; .
Red Storm Opteron 2,4 AMD.
. .
, Pentium.
64- 264 ,
32-. , 64- 64-
64- . 64- -
666 8.
32-, 64- , .
Opteron .
, . , - . AMD Opteron
, ,
, .
DIMM 4 ,
32. Red Storm Opteron 24 , , ,
, . Opteron ,
.
Opteron
Seastar IBM.
,
Seastar. , ,
.
Opteron , , Red Storm
(.8.36). 4 Opteron,
667
668 8.
, Catamount ( ). -
Linux ,
MPI (. ). RAS- Linux.
Red Storm ASCI Red,
, , MPI, , .
.
RAS-,
, . MTBF (Mean Time Between Failures
), 50 . ASCI
Red 900 , 40 .
, - .
Red Storm [Brightwell et al., 2005,
2010].
BlueGene/P Red Storm
BlueGene/L Red Storm, , , .
.8.6 .
8.6. BlueGene/7 Red Storm
BlueGene/L
Red Storm
32- PowerPC
64- Opteron
850
2,4
294912
20736
128
669
BlueGene/L
Red Storm
4096
192
72
108
( )
124
1000
- 512
24
144
10
PowerPC
Seastar
73728
10368
723232
271624
Gigabit Ethernet
Fast Ethernet
Linux
Linux
IBM
Cray Research
,
, , , , IBM Cray.
BlueGene/P ,
,
. , Red Storm
Sandia, Cray .
IBM : , , ,
. , Sandia:
64- ,
, ,
BlueGene/P. ,
, , .
-.
, IBM ,
, 1024 . Sandia
670 8.
24,
96 . , Red Storm
, BlueGene/P.
. BlueGene/P
, 1000 /
124 / Red Storm. ,
Red Storm , Sandia, , Opteron. IBM
(, 850 ). , MPP
.
[Anderson et al.,
1995; Martin et al., 1997]. ,
,
. MPP
, .
, , , .. ( , , )
, - . MPP .
,
MPP, , ,
.
. , MMP-,
,
.
MMP ,
, .
, : .
,
. , , .
, , , , .
(Gordon Bell), PDP-11 VAX,
, , .
, .
, . . ,
.
671
, ,
, - ,
.
, -
, ,
. ,
.
, , 500.
. Google ,
.
Google
Google . , Google , .
, ( 40 ),
0,5 , ,
. , ,
, ,
. Google
.
Google ? Google
. . www.google.com IP- ,
.
OC-48 (2,488/),
. ,
OC-12 (622 /)
. , . ,
Google , .
, Google , , . ( 1 .8.38)
(2), , , (3) (4).
(5), .
(
672 8.
. 8.38. Google
,
. , 1
, n
. 2 n .. ,
,
k , k ..
.
(6),
. :
+digita +kapibara +dance
, . Google (7), , ,
, .
, .
673
. ,
(
),
100 .
(8),
.
, (9),
(10). ,
(, , camcoder),
, Google . ,
HTML (HyperText Markup Language )
-.
, ,
Google. ,
, ,
. Google .
. .
, . , , /.
: . ,
. ,
23 ,
23, 510 .
, ,
, . Google ,
. , ,
, 0,5 2% . Google , 2%
. ,
, .
, , . ,
, .
, (
).
, Google,
Pentium 2, 4 2
. , .
Ethernet. ,
. 1u ( 5) , 40 .
, , 80 , -
674 8.
Ethernet .
Ethernet ,
.
Google .8.39.
OC-48
128- Ethernet-.
OC-12. , Ethernet-.
Ethernet-, ,
, .
.
, ,
. 128
, 64 . ,
80 , 5120 , , ,
, 80 ,
128 .
Google .
. 8.39. Google
675
. 120 ,
10 .
, 32 .
, 3000/2.
600 1200 /2,
.
Google
-, .
1. , .
2. .
3. /.
,
. , , .
,
.
, ,
. , . Google ,
, , .
, . .
. , , RAID SCSI-. , , .
. ,
, (
).
Google [Barroso et al., 2003; Ghemawa
et al., 2003].
( ),
. , MPP-, ,
.
. , ,
( ) . ,
676 8.
, () ,
.
send receive, .
:
;
;
.
send, receive, () ,
receive, .
, , .
.
: , .
- ( ),
. send,
. ,
. . .
, -
.
, ,
. , , . . ,
send,
, , . - ,
. , .
.
.
,
.
MPI
PVM (Parallel Virtual Machine
) [Geist et al., 1994; Sunderram,. 1990].
MPI (Message-Passing
Interface ). MPI ,
PVM; . MPI, -
677
, _ _.
; ,
. () , (
).
:
MPI_Recv(&, _, _, ,
, , &)
,
_ .
MPI . . ,
MPI_Recv. .
. .
, , . .
, , ,
, .
, 8 .
: .
MPI .
. .
,
,
678 8.
, (, ).
MPI (, , , ..).
.
MPI-2 ,
, , -, .
MPI PVM.
PVM , . MPI , MPI
, , ,
. , PVM ,
, ,
. , ,
MPI.
MPI ,
.
. , ,
.
, .
FIFO (.8.40,). , ,
. ,
.. , ,
. 8 ,
128 16 ( 8
) - .
. , ,
, ,
. , ,
FIFO (.8.40, ).
, ,
. ,
(.8.40,). , ,
.
.
679
. 8.40. (
): FIFO(); ( );
()
,
, . , MPI.
, ,
. , : ( , ), .
, .
,
. .8.18 , , .
, , .
. DSM (Distributed Shared Memory ).
:
. .
.8.41, ,
16 , .
, .
, .
,
680 8.
. 8.41. 16 ,
: ();
0 10( ); 1
10, ()
, ,
.
, , . .8.41,
, 0 10,
1 0.
IVY [Li and Hudak, 1989].
. . IVY , ,
681
. , ,
. .8.41, ,
10, .
,
- ,
. ,
.
.
-. , Treadmarks [Amza, 1996].
, ,
,
acquire, .
, , , release .
release .
Treadmarks ,
. , , . ,
,
. ,
, .
, ,
, .
,
. , ,
NUMA- COMA-. , DSM,
NUMA- COMA-, DSM
, .
DSM - . CASHMERE [Kontothanassis, et al., 1997; Stets et al.,
1997], CRL [Johnson et al., 1995], Shasta [Scales et al., 1996] Treadmarks [Amza,
1996; Lu et al., 1997].
Linda
DSM ( IVY Treadmarks)
, .
,
,
.
682 8.
Linda,
[Carriero and Gelernter,1989].
,
(, C FORTRAN),
C-Linda FORTRAN-Linda.
Linda ,
. ,
.
. C-Linda , ,
, ( )
( ). 8.1 .
8.1. Linda
("abc", 2, 5)
("matrix-1", 1, 6, 3.14)
("family", "is sister", Carolyn, Elinor)
4 . , out,
. :
out("abc", 2, 5);
("abc", 2, 5) .
out , , :
out("matrix-1", i, j, 3.14);
,
ij.
in.
, .
in .
:
in("abc", 2, ? i);
, "abc", 2 ,
(, i ). , i . .
in, , .
.
, in,
. in, , -
683
.
, :
;
;
.
, ,
, ( ), , ,
.
, ,
.
. ,
, ,
, .
, read, in, . , eval, , .
.
Linda.
Linda
(replicated worker model). (task bag), .
,
out("task-bag", job);
.
, :
in("task-bag", ?job);
.
. , . ,
, .
Linda .
,
. . .
. [Bjornson, 1993].
Orca
,
. , ()
.
684 8.
, , .
, , Orca [Bal, 1991;
Bal et al., 1992; Bal and Tanenbaum, 1988]. Orca ( Modula2),
.
Orca , Java Ada. , . ,
, .
.
Orca - . ,
(true) (false). ,
. ,
,
.
. 8.2 stack ,
push pop.
8.2. stack
Object implementation stack;
top:integer;
#
stack:array[integer 0..N1]of integer;
operation push(item: integer); # ,
begin
stack[top] := item;
#
top := top + 1;
#
end;
operation pop(): integer;
begin
guard top>0 do
top := top 1;
return stack[top];
od;
end;
begin
top:=0;
end;
# ,
# ,
#
#
stack :
s, t, stack;
top
0. k s
s$push(k);
685
pop ,
, - .
Orca fork.
, fork. , . . :
for i in 1..n do fork foobar(s) on i; od;
1 n,
foobar . n (
) ,
s s, .
, .
. , ,
,
.
Orca ,
.
. .
. Orca
, , ,
. Orca
[Hoare, 1975].
, , . Orca
. , 8.2, ,
, .
Orca , ,
.
: .
, . ,
, .
( ), .
, ,
.
, , .
,
, .
686 8.
, ,
. ,
. ,
. , , , 50 ,
.
.
, - .
- , ,
. :
. .
, , , , .
, ,
. , , .
( , ).
,
,
, .
. ,
, . .
, ,
Ts, p ,
b /, Ts+ p/b.
, p
p Ts+ 2p/b .
, Ta .
Ta+ p/b, .
, Td,
.. Td
( , ). n , Ta+ n( p/b+
+ Td)+ p/b,
.
687
Ta+ p/b,
,
. ,
. , .
. , , , ,
, . .
(.
).
.
, .
.
1/,
100/ .
.
. . ,
, ,
, . 1024 4
, 4096.
,
. .
,
. ,
(
),
, .
, .
, ,
, . . , .
: n- .
(.8.42).
, , -
688 8.
64 PentiumPro.
k k. , k
k k.
, ,
. N , ( ,
) ,
,
. [Bal et al., 1998].
. 8.42. (
)
,
: ,
, ,
.
. , T , ( f) ,
(1 f) ,
.8.43,. n , (1 f)T (1 f)T/n,
.8.43,. (, ) fT+ (1 f )T/n.
(T),
:
689
n
.
1 + (n 1) f
f= 0 , f> 0
, .
.
. 8.43. ,
();
( )
, .
, , .
1000 , , , , ,
. ,
,
.
n ,
2n . , , - ,
100 %.
. ,
. ,
, .
4 , (.8.44,). ,
16 , 12 (.8.44,).
b/, 4
, b/4 b/16/. .
690 8.
. 8.44. 4 , ();
16 , ( );
4(); 16 ()
(.8.44,,).
, , . ,
1,0
4 (4 ) 1,5 16 (24
),
.
, .
, , , . nn 2(n 1),
. 400 38, 1600 78,
4 , , ,
.
.
,
.
, , .
,
.
, , , ,
. ,
, .
,
, , .
. , .
,
, .
691
(
-, -).
, , .
,
.
.
(prefetching),
, .
, .
, .
, ,
.
. , , , ,
. ,
,
. LOAD , ,
. LOAD
, , .
. (,
),
,
, .
1, 2 .. ,
, .
. STORE
.
, .
LOAD ,
.
, , ,
.
, , , , , .
692 8.
:
, ;
, (,
);
,
.
,
, .
, .
, ,
.
, (grid computing). ,
.8.1. ,
.
, ,
, . ,
. , ,
.
,
. . - , , ,
. ,
.
, .
.
, .
.
, , , .
, ,
.
(.8.7). ,
, .
693
, , , . ,
.
8.7.
, , ,
- , , ,
, ,
.
. ,
. ,
,
,
.
, .
, ,
.
. ,
, , , ,
.
, , ,
, .
. . , ,
, ,
, .
.
(,
).
.
, ,
. ,
, .
694 8.
. ,
, ,
. , ,
.
,
. , UNIX 16- , . , , ,
.
,
. Global Grid Forum.
, OGSA (Open Grid Services Architecture ).
, , OGSA
WSDL (Web Services Definition Language
-).
, , , .
1. ( ).
2. ( ).
3. ( , ).
4. ( ).
5. ( ).
6. ( ).
7. ( ).
8. ( ).
,
.
[Abramson, 2011; Balasangameshwara
and Raju, 2012; Celaya and Arronategui, 2011; Foster and Kesselman, 2003; Lee etal.,
2011].
,
.
. -
695
, ,
, , .
, .
;
, .
;
. .
. ,
.
.
,
, .
, ,
.
. ,
. (UMA) ( )
. . NUMA- ,
, . , COMA-
, ,
, .
,
. . MPP-, BlueGene/P
IBM, , .
(, , , Google).
, MPI, , .
.
DSM,
Linda, Orca Globe. DSM
, DSM NUMA-, , , .
696 8.
. ;
, , .
1. Intel x86 17 . x86 VLIW?
2.
, Intel AMD
. ?
3. 0255. 96, 9, 300 256?
4. TriMedia-, , ?
1) , , ,
, ;
2) , ,
, ;
3) , ,
, , .
5. .8.5, 12 .
, .
6. - 1 -
2 k .
- 1 . ,
?
7. NVIDIA Fermi , 2. ?
8. ,
.
. , SIMD
MIMD?
9. , ,
.
?
10. . ,
?
11. . ,
?
697
12. ,
, .
?
13.
. ,
,
. , FIFO.
64 ?
14. MESI .
.
MESI
? ,
?
15. MESI , -,
? , .
16. , n .
, ,
p. , :
1) (0 );
2) ;
3) .
17. .
18. Fire
E25K Sun?
19. , 2A 3B
omega . ?
20. ( , )
. ?
21. omega 4096 RISC-,
60, 4096 .
5. LOAD?
22. , omega (. .8.27). ,
i i. ? (
IBM RP3 BBN Butterfly.)
?
23. NUMA- 20,
120.
N , 1% P.
698 8.
,
C.
, ?
24. CC-NUMA-, .8.29, 512 8 .
64, ?
( , )?
25. NC-NUMA CC-NUMA?
26. ,
.8.33.
27. , .8.33, ( ,
).
28. (. .8.33,), kk. ? (: k
.)
29. 888. 1/.
?
30. , . f
, . f= 0,1?
31. 8.44 , , . ,
b.
. 64
. ,
?
32. send ,
. , , .
send?
33. , (, Ethernet).
( ) (
)?
9.
,
.
1. Abramson, D.: Mixing Cloud and Grid Resources for ManyTask Compu
ting, Proc. Intl Workshop on Many Task Computing on Grids and Super
computers,ACM, pp. 12, 2011.
2. Adams, M., and Dulchinos, D. OpenCable, IEEE Commun. Magazine, vol. 39,
pp.98105, June 2001.
3. Adiga, N.R. et al. An Overview of the BlueGene/L Supercomputer, Proc.
Supercomputing 2002, ACM, pp.122, 2002.
4. Adve, S.V., and Hill, M. Weak Ordering: A New Definition, Proc. 17th Ann.
Int'l. Symp. on Computer Arch., ACM, pp. 214, 1990.
5. Agerwala , T., and Cocke, J. High Performance Reduced Instruction Set
Processors, IBM T.J. Watson Research Center Technical Report RC12434,
1987.
6. Ahmadinia, A., and Shahrabi, A.: A Highly Adaptive and Efficient Router
Architecture for Network-on-Chip, Computer J.,vol. 54, pp. 12951307, Aug.
2011.
7. Alam, S., Barrett, R., Bast, M., Fahey, M.R., Kuehn, J., McCurdy, Rogers, J., Roth,
P., Sankaran, R., Vetter, J.S., Worley,P., and Yu,W.: Early Evaluation of IBM
BlueGene/P, Proc. ACM/IEEE Conf.onSupercomputing,ACM/IEEE, 2008.
8. Alameldeen, A.R., and Wood, D.A. Adaptive Cache Compression for HighPerformance Processors. Proc. 31st Ann. Intl Sym. on Computer Arch. ACM,
pp.212223, 2004.
9. Almasi, G.S. et al. System Management in the BlueGene/L Supercomputer,
Proc. 17th Intl Parallel and Distr. Proc. Symp., IEEE, 2003a.
10. Almasi , G.S. et al. An Overview Of The Bluegene/L System Software
Organization, Par. Proc. Letters, vol. 13, 561574, April 2003b.
11. 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 Magaxine, vol.29, pp. 1828, Feb. 1996.
12. Anderson, D. Universal Serial Bus System Architecture, Reading, MA: AddisonWesley, 1997.
13. Anderson, D., Budruk, R., and Shanley, T. PCI Express System Architecture,
Reading, MA: Addison-Wesley, 2004.
14. Anderson, T.E., Culler, D.E., Patterson,D.A., and the NOW team A Case for
NOW (Networks of Workstations), IEEE Micro Magazine, vol.15, pp. 5464,
Feb. 1995.
700 9.
15. August , D. I., Connors, D. A., Mahlke, S. A., SIAS, J. W., Crozier, K. M.,
Cheng,B.-C., Eaton,P.R., Olaniran,Q.B., and HWU,W.-M. Integrated
Predicated and Speculative Execution in the IMPACT EPIC Architecture,
Proc. 25th Ann. Int'l. Symp. on Computer Arch., ACM, pp. 227237, 1998.
16. Bal, H.E. Programming Distributed Sysytems, Hemel Hempstead, England:
Prentice Hall Int'l., 1991.
17. Bal, H.E., Bhoedjang, R., Hofman,R, Jacobs,C., Langendoen,K., Ruhl,T., and
Kaashoek,M.F. Performance Evaluation of the Orca Shared Object System,
ACM Trans. on Computer Systems, vol.16, pp. 140, Feb. 1998.
18. Bal, H.E., Kaashoek,M.F., and Tanenbaum,A.S. Orca: A Language for Parallel
Programming of Distributed Systems, IEEE trans. on Software Engeneering,
vol.18, pp. 190205, March 1992.
19. Bal, H.E., and Tanenbaum,A.S. Distributed Programming with Shared Data,
Proc. 1988 Int'l. Conf. on Computer Languages, IEEE, pp. 8291, 1988.
20. Balasangameshwara, J., and Raju, N.: A Hybrid Policy for Fault Tolerant
Load Balancing in Grid Computing Environments, J. Network and Computer
Applications, vol. 35, pp.412422, Jan. 2012.
21. Barroso, L.A., Dean, J., Holzle, U. Web Search for a Planet: The Google Cluster
Architecture, IEEE Micro Magazine, vol. 23, pp. 2228, March-April 2003.
22. Bechini, A., Conte, T.M., and Prete, C.A. Opportunities and Challenges in
Embedded Systems, IEEE Micro Magazine, vol. 24, pp. 89, July-Aug. 2004.
23. Bhakthavatchalu, R., Deepthy, G.R.; and Shanooja, S. : Implementation of
Reconfigurable Open Core Protocol Compliant Memory System Using VHDL,
Proc. Intl Conf. on Industrial and Information Systems, pp. 213218, 2010.
24. Bjornson, R.D. Linda on Distributed Memory Multiprocessors, Ph.D.Thesis,
Yale Univ., 1993.
25. Blumrich, M., Chen, D., Chiu, G., Coteus, P., Gara, A., Giampapa, M.E., Haring,
R.A., Heidelberger, P., Hoenicke, D., Kopcsay, G.V., Ohmacht, M., SteinmacherBurow, B.D., Takken, T., Vransas, P., and Liebsch, T. An Overview of the
BlueGene/L System, IBM J. Research and Devel., vol. 49, MarchMay,
2005.
26. Bose , P. Computer architecture research: Shifting priorities and newer
challenges, IEEE Micro Magazine, vol. 24, p.5, NovDec. 2004.
27. 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, pp. 369388, April
1972.
28. Bradley,D.: A Personal History of the IBM PC, IEEE Computer, vol. 44, pp.
1925, Aug. 2011.
29. Bride, E.: The IBM Personal Computer: A Software-DrivenMarket, IEEE
Computer, vol. 44, pp. 3439, Aug. 2011.
30. Brightwell, R., Camp, W., Cole, B., DeBenedictis, Leland, R, and Tompkins, J.
Architectural Specification for Massively Parallel Computers An Experience
and Measurement-Based Approach, Concurrency and Computation: Practice
and Experience,vol. 17, pp. 146, 2005.
701
31. Brightwell, R., Underwood, K.D., Vaughan, C., and Stevenson, J.: Performance
Evaluation of the Red Storm Dual-Core Upgrade, Concurrency and
Computation: Practice and Experience,vol.22, pp.175190, Feb. 2010.
32. Bryant, R.E., and OHallaron, D. Computer Systems: A Programmers Perspective
Upper Saddle River, NJ: Prentice Hall, 2003.
33. Burkhardt,H., Frank,S., Knobe,B., and Rothnie,J. Overview of the KSR-1
Computer Sysytem, Technical Report KSR-TR-9202001, Kendall Square
Research Corp, Cambridge, MA, 1992.
34. Carriero, N., and Gelernter,D. Linda and Context, Commun. of the ACM,
vol.32, pp. 444458, April 1989.
35. Celaya, J., and Arronategui, U.: A Highly Scalable Decentralized Scheduler of
Tasks with Deadlines, Proc. 12th Intl Conf. on Grid Computing, IEEE/ACM,
pp.5865, 2011.
36. Charlesworth, A. The Sun Fireplane Interconnect, IEEE Micro Magazine, vol.
22, pp.3645, Jan.-Feb. 2002.
37. Charlesworth, A. The Sun Fireplane Interconnect, Proc. Conf. on High Perf.
Networking and Computing, ACM, 2001.
38. Charlesworth, A., Phelps, A., Williams, R., and Gilbert, G. Gigaplane-XB:
Extending the Ultra Enterprise Family, Proc. Hot Interconnects V, IEEE,
1998.
39. Chen, L., Dropsho, S., Albonesi, D.H. Dynamic Data Dependence Tracking
and its Application to Branch Prediction, Proc. Ninth Intl Symp. on HighPerformance Computer Arch., IEEE, pp. 6578, 2003.
40. Cheng, L., and Carter, J.B.: Extending CC-NUMA Systems to Support Write
Update Optimizations, Proc. 2008 ACM/IEEE Conf. on Supercomputing,
ACM/IEEE, 2008.
41. Chou, Y., Fahs, B., Abraham, S. Microarchitecture Optimizations for Exploiting
Memory-Level Parallelism, Proc. 31st Ann. Intl Symp. on Computer Arch.,
ACM, pp.7677, 2004.
42. Cohen, D. On Holy Wars and a Plea for Peace, IEEE Computer Magazine,
vol.14, pp.4854, Oct. 1981.
43. Corbat, F.J., and Vyssotsky,V.A. Introduction and Overview of the MULTICS
System, Proc. FJCC, pp.185196, 1965.
44. Denning, P.J. The Working Set Model for Program Behavior, Commun. of
the ACM, vol.11, pp.323333, May 1968.
45. Dijkstra, E.W. GOTO Statement Considered Harmful, Commun. of the ACM,
vol.11, pp. 147148, Mar. 1968a.
46. Dijkstra, E.W. Co-operating Sequential Processes, in Programming Languages,
F.Genuys (ed.), New York: Academic Press, 1968b.
47. Donaldson , G., and Jones, D. Cable Television Broadband Network
Architectures, IEEE Commun. Magazine, vol. 39, pp.122126, June 2001.
48. Dubois, M., Scheurich, C., and Briggs, F .A. Memory Access Buffering in
Multiprocessors, Proc. 13th Ann. Int'l. Symp. on Computer Arch., ACM,
pp.434442, 1986.
702 9.
703
Multiprocessors, Proc. 17th Ann. Intl Symp. on Comp. Arch.,ACM, pp. 1526,
1990.
66. Ghemawat, S., Gobioff, H., and Leung, S.-T. The Google File System, Proc.
19th Symp. on Operating Systems Principles, ACM, pp.2943, 2003.
67. Goodman, J.R. Using Cache Memory to Reduce Processor Memory Traffic,
Proc. 10th Ann. Int'l. Symp. on Computer Arch., ACM, pp.124131, 1983.
68. Goodman J.R. Cache Consistency and Sequential Consistency, Tech. Rep.61,
IEEE Scalable Coherent Interface Working Group, IEEE, 1989.
69. Goth, G.: IBM PC Retrospective:There Was Enough Right to Make ItWork,
IEEE Computer,vol. 44, pp. 2633, Aug. 2011.
70. Gropp, W., Lusk,E., and Skjellum,A. Using MPI: Portable Parallel Programming
with the Message Passing Interface, Cambridge, MA: M.I.T. Press, 1994.
71. Gupta, N., Mandal, S., Malave, J., Mandal, A., and Mahapatra, R.N.: A Hardware
Scheduler for Real Time Multiprocessor System on Chip, Proc. 23rd Intl Conf.
on VLSI Design, IEEE, 2010.
72. Gurumurthi, S., Sivasubramaniam, Kandemir, M., and Franke, H. Reducing Disk
Power Consumption in Servers with DRPM, IEEE Computer Magazine, vol.
36, pp.5966, Dec. 2003.
73. Hagersten , E., Landin, A., Haridi, S. DDM A Cache-Only Memory
Architecture, IEEE Computer Magazine, vol.25, pp.4454, Sept. 1992.
74. Haghighizadeh, F., Attarzadeh, H., and Sharifkhani, M.: A Compact 8-Bit AES
Crypto-processor, Proc. Second. Intl Conf. on Computer and Network Tech.,
IEEE, 2010.
75. Hamming, R.W. Error Detecting and Error Correcting Codes, Bell Syst.
Tech.J., vol.29, pp.147160, April 1950.
76. Henkel, J., Hu, X.S., and Bhattacharyya, S.S. Taking on the Embedded System
Challenge, IEEE Computer Magazine, vol. 36, pp.3537, April 2003.
77. Hennessy, J.L. VLSI Processor Architecture, IEEE Trans. on Computers,
vol.C-33, pp.12211246, Dec. 1984.
78. Herrero, E., Gonzalez, J., and Canal, R. : Elastic Cooperative Caching: An
Autonomous Dynamically Adaptive Memory Hierarchyfor Chip Multiprocessors,
Proc. 23rd Intl Conf. on VLSI Design, IEEE, 2010.
79. Hoare , C. A. R. Monitors, An Operating System Structuring Concept,
Commun. of the ACM, vol.17, pp.549557, Oct. 1974; Erratum in Commun.
of the ACM, vol.18, p.95, Feb.1975.
80. Hwu, W.-M. Introduction to Predicated Execution, IEEE Computer Magazine,
vol.31, pp.4950, Jan. 1998.
81. Jimenez, D.A. Fast Path-Based Neural Branch Prediction, Proc. 36th Intl
Symp. on Microarchitecture, IEEE., pp.243252, 2003.
82. Johnson, K.L., Kaashoek,M.F., and Wallach,D.A. CRL: High-Performance AllSoftware Distributed Shared Memory, Proc. 15thSymp. on Operating Systems
Principles, ACM, pp.213228, 1995.
83. Kapasi, U.J., Rixner, S., Dally, W.J., Khailany, B., Ahn, J.H., Mattson, P., and
Owens, J.D. Programmable Stream Processors, IEEE Computer Magazine,
vol. 36, pp.5462, Aug. 2003.
704 9.
84. Kaufman, C., Perlman, R., and Speciner, M. Network Security, 2nd ed., Upper
Saddle River, NJ: Prentice Hall, 2002.
85. Kim, N.S., Austin, T., Blaauw, D., Mudge, T., Flautner, K., Hu, J.S., Irwin, M.J.,
Kandemir, M., and Narayanan, V. Leakage Current: Moores Law Meets Static
Power, IEEE Computer Magazine, vol. 36, pp.6875, Dec. 2003.
86. Knuth, D.E.: The Art of Computer Programming: Fundamental Algorithms,
3rded.. Reading, MA: Addison-Wesley, 1997.
87. Kontothanassis , L., Hunt, G., Stets, R., Hardavellas, N., Cierniad, M.,
Parthasarathy,S., Meira,W., Dwarkadas,S., and Scott,M.: VM-Based Shared
Memory on Low Latency Remote Memory Access Networks, Proc. 24th Ann.
Int'l. Symp. on Computer Arch., ACM, pp.157169, 1997.
88. Lamport, L. How to Make a Multiprocessor Computer That Correctly Executes
Multiprocess Programs, IEEE Trans. on Computers, vol.C-28, pp.690691,
Sept. 1979.
89. LaRowe, R.P., and Ellis,C.S. Experimental Comparison of Memory Management
Policies for NUMA Multiprocessors, ACM Trans. on Computer Systems, vol.9,
pp.319363, Nov. 1991.
90. Lee, J., Keleher, P., and Sussman, A. : Supporting Computing Element
Heterogeneity in P2P Grids, Proc. IEEE Intl Conf.on Cluster Computing,
IEEE, pp. 150158, 2011.
91. Li, K., and Hudak,P. Memory Coherence in Shared Virtual Memory Systems,
ACM Trans. on Computer Systems, vol.7, pp.321359, Nov. 1989.
92. Lin, Y.-N., Lin, Y.-D., and Lai, Y.-C. : Thread Allocation in CMP-based
Multithreaded Network Processors, Parallel Computing,vol. 36, pp. 104116,
Feb. 2010.
93. Lu, H., Cox,A.L., Dwarkadas,S., Rajamony,R., and Zwaenepoel,W. Software
Distributed Shared Memory Support for Irregular Applications, Proc. 6th Conf.
on Prin. and Practice of Parallel Progr., pp.4856, June 1997.
94. Lukasiewicz, J.: Aristotle's Syllogistic, 2nded., Oxford: Oxford University
Press, 1958.
95. Lyytinen, K., and Yoo, Y.: Issues and Challenges in Ubiquitous Computing,
Commun. of the ACM, vol. 45, pp.6365, Dec. 2002.
96. Martin, R. P., Vahdat, A. M., Culler, D. E., and Anderson, T. E. Effects of
Communication Latency, Overhead, and Bandwidth in a Cluster Architecture,
Proc. 24th Ann. Int'l. Symp. on Computer Arch., ACM, pp.8597, 1997.
97. Mayhew , D., and Krishnan, V. PCI Express and Advanced Switching:
Evolutionary Path to Building Next Generation Interconnects, Proc. 11th
Symp. on High Perf. Interconnects IEEE, pp.2129, Aug. 2003.
98. McKusick, M.K., Bostic,K., Karels,M., and Quarterman,J.S. The Design and
Implementation of the 4.4 BSD Operating System, Reading, MA: AddisonWesley, 1996.
99. MNairy, C., and Soltis, D. Itanium 2 Processor Microarchitecture, IEEE
Micro Magazine, vol. 23, pp.4455, MarchApril 2003.
100. Mishra, A.K., Vijaykrishnan, N., and Das, C.R.: A Case for Heterogeneous OnChip Interconnects for CMPs, Proc. 38th Intl Symp. on Computer Arch.
ACM, 2011.
705
101. Morgan, C.: Portraits in Computing, New York: ACM Press, 1997.
102. Moudgill, M., and Vassiliadis,S. Precise Interrupts, IEEE Micro Magazine,
vol.16, pp.5867, Feb. 1996.
103. Mullender, S.J., and Tanenbaum,A.S. Immediate Files, Software Practice
and Experience, vol.14, pp.365368, 1984.
104. Naeem, A., Chen, X., Lu, Z., and Jantsch, A.: Realization and Performance
Comparison of Sequential and Weak Memory Consistency Models in NetworkOn-Chip Based Multicore Systems, Proc. 16th Design Automation Conf.Asia
and South Pacific, IEEE, pp. 154159, 2011.
105. Organick,E.: The MULTICS System, Cambridge, MA: M.I.T. Press, 1972.
106. Oskin, M., Chong, F.T., and Chuang, I.L.: A Practical Architecture for Reliable
Quantum Computers, IEEE Computer Magazine, vol. 35, pp.7987, Jan.
2002.
107. Papamarcos, M., and Patel., J. A Low Overhead Coherence Solution for
Multiprocessors with Private Cache Memories, Proc. 11th Ann. Int'l. Symp.
on Computer Arch., ACM, pp.348354, 1984.
108. Parikh, D., Skadron, K., Zhang, Y., and Stan, M. Power-Aware Branch Prediction:
Characterization and Design, IEEE Trans. on Computers, vol. 53, pp.168186,
Feb.2004.
109. Patterson, D.A. Reduced Instruction Set Computers, Commun. of the ACM,
vol.28, pp.821, Jan. 1985.
110. Patterson, D. A., Gibson, G., and Katz, R. A case for redundant arrays of
inexpensive disks (RAID), Proc. ACM SIGMOD Int'l. Conf. on Management
of Data, ACM, pp.109166, 1988.
111. Patterson, D.A., and Squin,C.H. A VLSI RISC, IEEE Computer Magazine,
vol.15, pp.822, Sept. 1982.
112. Pountain, D. Pentium: More RISC than CISC, Byte, vol.18, pp.195204,
Sept. 1993.
113. Radin, G. The 801 Minicomputer, Computer Arch. News, vol.10, pp.3947,
March 1982.
114. Raman, S.K., Pentkovski, V., and Keshava, J. Implementing Streaming SIMD
Extensions on the Pentium III Processor, IEEE Micro Magazine, vol. 20,
pp.4757, JulyAug. 2000.
115. Ritchie, D.M.: Reflections on Software Research, Commun. of the ACM, vol.
27, pp.758760, Aug. 1984.
116. Ritchie, D.M., and Thompson,K. The UNIX Time-Sharing System, Commun.
of the ACM, vol.17, pp.365375, July 1974.
117. Robinson, G.S. Toward the Age of Smarter Storage, IEEE Computer Magazine,
vol. 35, pp.3541, Dec. 2002.
118. Rosenblum, M., and Ousterhout, J. K. The Design and Implementation of
aLog-Structured File System, Proc. Thirteenth Symp. on Operating System
Principles, ACM, pp.115, 1991.
119. Russinovich, M.E., and Solomon, D.A. Microsoft Windows Internals, 4th ed.,
Redmond, WA: Microsoft Press, 2005.
706 9.
120. Rusu, S., Muljono, H., and Cherkauer, B. Itanium 2 Processor 6M, IEEE Micro
Magazine, vol. 24, pp.1018, MarchApril 2004.
121. Saha, D., and Mukherjee, A. Pervasive Computing: A Paradigm for the 21st
Century, IEEE Computer Magazine, vol. 36, pp.2531, March 2003.
122. Sakamura, K. Making Computers Invisible, IEEE Micro Magazine, vol. 22,
pp.711, 2002.
123. Sanchez, D., and Kozyrakis, C.: Vantage: Scalable and Efficient Fine-Grain
Cache Partitioning, Proc. 38th Ann. Intl Symp. on Computer Arch.,ACM, pp.
5768, 2011.
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, pp.174
185, 1996.
125. Seltzer, M., Bostic,K., McKusick,M.K., and Staelin,C. An Implementation of a
Log-Structured File System for UNIX, Proc. Winter 1993 USENIX Technical
Conf., pp.307326, 1993.
126. Shanley, T., and Anderson,D. PCI System Architecture, 4thed.. Reading, MA:
AddisonWesley, 1999.
127. Shoufan, A., Huber, N., and Molter, H.G.: ANovelCryptoprocessor Architecture
for Chained Merkle Signature Schemes, Microprocessorsand Microsystems,vol.
35, pp. 3447, Feb.2011.
128. Singh, G.: The IBM PC: The Silicon Story, IEEE Computer,vol. 44, pp. 4045,
Aug. 2011.
129. Slater, R. Portraits in Silicon, Cambridge, MA: M.I.T. Press, 1987.
130. Snir, M., Otto, S.W., Huss-Lederman, S., Walker, D.W., and Dongarra, J.: MPI:
TheComplete Reference Manual, Cambridge, MA: M.I.T. Press, 1996.
131. Solari, E., and Congdon, B.: PCI Express Design & System Architecture,
Research Tech, Inc., 2005.
132. Solari, E., and Willse, G.: PCI and PCI-X Hardware and Software, 6th ed.,
SanDiego, CA: Annabooks, 2004.
133. Sorin, D.J., Hill, M.D., and Wood, D.A.: A Primer on Memory Consistency and
Cache Coherence, San Francisco: Morgan&Claypool, 2011.
134. Stets , R., Dwarkadas, S., Hardavellas, 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, pp.170183, 1997.
135. Summers, C.K.: ADSL: Standards, Implementation, and Architecture, Boca
Raton, FL: CRC Press, 1999.
136. Sunderram, V.B.: PVM: A Framework for Parallel Distributed Computing,
Concurrency: Practice and Experience, vol.2, pp.315339, Dec. 1990.
137. Swan, R.J., Fuller,S.H., and Siewiorek,D.P. Cm*A Modular Multiprocessor,
Proc. NCC, pp.645655, 1977.
138. Tan, W.M.: Developing USB PC Peripherals, San Diego, CA: Annabooks,
1997.
707
139. Tanenbaum, A.S., and Wetherall, D.J.: Computer Networks, 5th ed., Upper
Saddle River, NJ: Prentice Hall, 2011.
140. Thompson, K.: Reflections on Trusting Trust, Commun. of the ACM,vol. 27,
pp.761763, Aug. 1984.
141. Thompson, J., Dreisigmeyer, D.W., Jones, T., Kirby, M., and Ladd, J.: Accurate
Fault Prediction of BlueGene/P RAS Logs via Geometric Reduction, IEEE,
pp. 814, 2010.
142. Treleaven, P. Control-Driven, Data-Driven, and Demand-Driven Computer
Architecture, Parallel Computing, vol.2, 1985.
143. Tu, X., Fan, X., Jin, H., Zheng, L., and Peng, X. : Transactional Memory
Consistency: A New Consistency Model for Distributed Transactional Memory,
Proc. Third Intl Joint Conf. on Computational Science and Optimization,IEEE,
2010.
144. Vahalia, U.: UNIX Internals, Upper Saddle River, NJ: Prentice Hall, 1996.
145. Vahid, F.: The Softening of Hardware, IEEE Computer Magazine, vol. 36,
pp.27-34, April 2003.
146. Vetter, P., Goderis, D., Verpooten, L., and Granger, A. Systems Aspects of APON/
VDSL Deployment, IEEE Commun. Magazine, vol. 38, pp. 6672, May
2000.
147. Vu, T.D., Zhang, L., and Jesshope, C.: The Verification of the On-Chip COMA
Cache Coherence Protocol, Proc. 12th Intl Conf.onAlgebraic Methodology
and Software Technology,Springer-Verlag, pp. 413429, 2008.
148. Weiser, M. The Computer for the 21st Century, IEEE Pervasive Computing,
vol.1, pp.1925, Jan.March 2002; originally published in Scientific American,
Sept. 1991.
149. Wilkes, M.V. Computers Then and Now, J. ACM, vol.15, pp.17, Jan.
1968.
150. Wilkes, M.V. The Best Way to Design an Automatic Calculating Machine,
Proc. Manchester Univ. Computer Inaugural Conf., 1951.
151. Wing-Kei, Y., Huang, R., Xu, S., Wang, S.-E., Kan, E., and Suh, G.E.: SRAMDRAM Hybrid Memory with Applications to Efficient Register Files in FineGrained MultiThreading Architectures, Proc. 38th Intl Symp. on Computer
Arch. ACM, 2011.
152. Yamamoto, S., and Nakao, A.: Fast Path Performance of Packet Cache Router
Using Multi-core Network Processor, Proc. Seventh Symp. on Arch.for Network
and Comm. Sys., ACM/IEEE, 2011.
153. Zhang, L., and Jesshope, C.: On-Chip COMA Cache-Coherence Protocol for
Microgrids of Microthreaded Cores, Proc. of 2007 European Conf.onParallel
Processing, Springer-Verlag, pp. 3848, 2008.
.
, , ,
. -, ,
. -,
, .
.
- ,
, . ,
, , 1078 ,
, 79
. .
.
,
. ,
, , ,
. ,
, .
.
,
.
1000 : 000, 001, 002, 003,..., 999.
. :
999;
;
;
;
.
, . ,
i j i+ j, i j ij . , i j,
i/j (, 7/2 1/0).
.
.
709
003 005 = 2.
:
710 .
(). ..1.
(
), 10 . .
2, 8 16. ,
.
. .1.
k k
0 k 1. 10 :
0123456789
, , :
01
:
01234567
16 . ,
6 . , 9, A F. ,
:
0123456789ABCDEF
( 1 0) . ..2 2001 ,
. 7B9, , ,
B . 111
. , (
).
..1 .
711
. .2. 2001 ,
.1. ,
10
11
100
101
110
111
1000
10
1001
11
10
1010
12
11
1011
13
12
1100
14
13
1101
15
14
1110
16
15
1111
17
16
10000
20
10
712 .
.1 ()
20
10100
24
14
30
11110
36
1E
40
101000
50
28
50
110010
62
32
60
111100
74
3C
70
1000110
106
46
80
1010000
120
50
90
1011010
132
5A
100
11001000
144
64
1000
1111101000
1750
3E8
2989
101110101101
5655
BAD
.
, ,
,
..
0
7 (. ..1). ,
.
.
3- .
,
, . ..3
.
.
. , , ,
. .
,
. ,
, .
( ) 2.
, (0 1) . .
713
, 0.
.
. ..4 ,
.
. .3.
. .4. 1492
( ). , 93 2, 46 1.
714 .
.
, 1 . :
10110 = 24 + 22 + 21 = 16 + 4 + 2 = 22.
, .
1, 2 ..
. 1. n
n 1 n (0 1). ,
, . ..5.
. .5. 101110110111
.
. ,
374 2 ( 1).
749
,
, 8 16.
4 .
. (0
, 1 ), .
715
, , (0 , 1 ). , .
. .
, , (0 ,
1 ). .
, (
). .
, , , 1, 9. ,
6 :
+6:
00000110.
6 :
11111001.
6 :
11111010.
, .
, m-
2m1, 2m1.
, 8- (m= 8) 128,
128. ,
3 3+ 128= 125, (3) 8-
125 (01111101). 128 +127
0 255 ( 8- ).
, . ..2
.
.2. 8-
N
N
128
00000001
10000001
11111110
11111111
011111111
00000010
10000010
11111101
11111110
01111110
00000011
10000011
11111100
11111101
01111101
00000100
10000100
11111011
11111100
01111100
00000101
10000101
11111010
11111011
01111011
00000110
10000110
11111001
11111010
01111010
00000111
10000111
11111000
11111001
01111001
00001000
10001000
11110111
11111000
01111000
716 .
.2 ()
N
N
128
00001001
10001001
11110110
11110111
01110111
10
00001010
10001010
11110101
11110110
01110110
20
00010100
10010100
11101011
11101100
01101100
30
00011110
10011110
11100001
11100010
01100010
40
10101000
10101000
11010111
11011000
01011000
50
00110010
10110010
11001101
11001110
01001110
60
00111100
10111100
11000011
11000100
01000100
70
01000110
11000110
10111001
10111010
00111010
80
01010000
11010000
10101111
10110000
00110000
90
01011010
11011010
10100101
10100110
00100110
100
01100100
11100100
10011011
10011100
00011100
127
01111111
11111111
10000000
10000001
00000001
128
10000000
00000000
: +0 0. .
, .
. , ,
, .
.
, , ,
:
;
.
, ,
m .
, .
0, - ,
.
.6 .
.
. , .
717
. .6.
. .7.
.
. ,
, .
..7.
,
. ,
, ,
. , ,
. ,
, .
1. : 1984, 4000, 8192.
2. 1001101001 ,
.
3. BED, CAB, DEAD, DECADE, ACCEDED, BAG,
DAD ?
4. 100 2 9.
5. k , r?
718 .
6. 10.
. , . 1, 0. ,
? ? ,
. ?
7. 8- :
00101101 + 01101111
11111111 + 11111111
00000000 11111111
11110111 11110111
8. .
9. 3- . :
1) .
2) .
3) .
000 + 001
000 + 111
111 + 110
100 + 111
100 + 100
10. , n ,
n+ 1 . 0
.
9. , 014725 985274.
.
.
3- : 6, 2, 100,
14, 1,0.
11. , :
0001 + 9999
0001 + 9998
9997 +9996
9241 + 0802
719
12. .
. ?
13. 3.
14. 0111 0011.
15. ,
ASCII-,
,
.
16. , 32 ASCII . 32- .
32 ASCII- .
.
, , .
,
(910-28 ) (21033 ). 1060. :
0000000000000000000000000000000000.0000000000000000000000000009
2000000000000000000000000000000000.0000000000000000000000000000
34
28 . 62 .
, .
,
62.
- 62 .
62 , 50 60 ,
.
, .
.
, , .
:
n= f 10e,
f , e (
) .
. :
3,14 = 0,314 101 = 3,14 100.
0,000001 = 0,1 105 = 1,0 106.
1941 = 0,1941 104 = 1,941 103.
,
.
, .
721
. .1. 7
,
, ,
1, 3, 5 7.
1 7 (, 1060 1060= 10120), , .
. 3 5. .
, ,
3 5.
10102 .
. x y
,
y x. , x y
z= (x+ y)/2. .
. 179100 , 179100
0 ( ),
722 .
358201 .
10+100 +0,999 1099 358201
. ..1 .
, 2 6. ,
+0,100 103 3 .
, .
.
, , 2 6 .
+0,998 1099 +0,999 1099 +0,998 100 +0,999 100.
,
. , , , , .
,
, .
2 6 .
, , .
2 6 1, 3, 5 7. ..1 6
.
.1.
1012
109
10
1099
101002
10999
10
109999
1013
109
10
1099
10
10999
1010003
109999
10
109
10104
1099
10
10999
1010004
109999
10
10
10999
20
10
10999
102
10002
103
1003
14
1004
1009
1019
723
. 2, 4, 8 16, 10.
, , .
0,
, 1, ( ).
.
, ,
.
..2 . 16- ( ) 7- . .
.
. .2.
724 .
IEEE 754
80-
. . ,
, ,
.
, 70- IEEE
.
,
. 1985 IEEE754 [IEEE, 1985].
( Intel, SPARC JVM)
, . ,
, , , ,
(William Kahan).
.
IEEE754 : (32 ),
(64 ) (80 ).
.
, . 2
. ..3.
; 0
, 1 . . 127,
1023. (0) (255 2047) -
.
, . 23
52 .
, 1 , . ,
PDP-11, , 1
, , . ,
. ,
1, , 23 52
. 23 52 0,
1,0. 1,
, 2,0.
, 23 52 (mantissa)
(significand). (s)
1 s< 2.
IEEE
..2. 0,5, 1 1,5 . 3F000000, 3F800000 3FC00000 .
.2. IEEE
11
23
52
32
64
127
1023
126 +127
1022 +1023
2126
21022
2128
21024
1038 1038
10308 10308
1045
10324
, ,
, . ,
IEEE, CDC 6600.
4
(..4).
726 .
. .4. IEEE
, () ,
.
: 0,
. , IEEE
. 0 ,
23 52 . 1 0.
, .
1
0 1,02-126. 0 0,99999992-127, .
, 23 , 24 .
0,
, , . 1 ,
0. 2-127, 2-23,
2-150. , 0,
.
, ,
. 0 0.
0, 1.
. : , ,
, 0. .
. ,
. ,
, 0. , 0,
.
727
, ?
.
(Not a Number, NaN). .
1. IEEE . .
1) 9;
2) 5/32;
3) 5/32;
4) 6,125.
2.
:
1) 42E28000H;
2) 3F880000H;
3) 00800000H;
4) C7F00000H.
3. IBM/370 7- ( 64), 24-
. .
16. , , . 7/64
.
4. ,
( 64) 2 16-
. :
1) 0 1000000 0001010100000001;
2) 0 0111111 0000001111111111;
3) 0 1000011 1000000000000000.
5. ,
( ). , .
3EE00000H 3D800000H .
6. ,
16- . 0.001
, 7- ( 64)
8- . 0.002 ,
5- ( 16) 10-
. 2. ?
728 .
?
- ?
7. ,
. ?
8. . (, ).
.
?
9.
. 32- .
10.
, 16, 2, ,
1 .
4 0001, 0010,..., 1111,
0000. 4
1 .
( , , )
(Instruction Set
Architecture, ISA), ,
, ,
. ISA ,
. , ,
, ,
. ,
, ADD, SUB MUL.
8088 Intel.
IBM PC
Corei7. ,
, .
,
, , ,
.
, 8088 Intel. 8088 , , ,
Corei7,
.
Corei7 8088; (32 16 ). ,
Corei7.
,
. , 8088,
8088 , ,
8088. ,
.
730 .
, , . ,
,
. (, ),
.
. , ,
, .
, .
, ,
(, , ) ADD, SUB MUL.
, .
,
, ,
.
, , ( )
, . , , , ,
. ,
, ,
.
.
, ,
.
( , ),
. , , ,
. ,
, ;
, ;
, .
731
, . ..1,
8088. , ,
; . - ( HlloWrld.s) examples.
(s), , ,
, .
, ..1,, .
.
..1. (a);
( )
,
..1,.
. ,
(CS, DS, SS ES), (AH, AL, AX)
.
, .
;
, .
, ,
. , Enter . , ,
, ,
.
732 .
, ,
, . . , ,
,
. .
,
,
: , , .
,
, .
8088
, 8088, ,
.
. PC (Program Counter
). (),
.
IP (Instruction Pointer ). , ,
. , 8088, 1,
64.
1 CS (...1).
, CS.
, , 64 . ..1 DS,
, .
CS DS , 8088
16 , , , 20- , 1, .
.
, .
. , , ,
.
8088 ( )
.
:
8088 733
1. PC
.
2. .
3. .
4.
() .
5. .
6. () .
7. ( 1).
. , ( ).
4.
, , 8088
14 . , ; , , .
..2. ,
..1.
..2. 8088
734 .
8088 16 .
.
,
, ..2.
.
AX, BX, CX DX .
, AX, -.
. ,
(, ) AX .
, BX, . AX, .
BX , ,
. , BX
, AX .
, . :
MOV AX,BX
BX AX. :
MOV AX,(BX)
AX , BX. BX;
. ,
, MOV : () (). .
, CX, -.
, . LOOP
. ,
, CX .
(DX). AX
(32-). DX 16 , AX 16 . ,
32- .
64- ,
32- . ,
.
16- , 8- . ,
8088 8- , . ,
8088 735
, 8- . (, AX),
(, AL AH). , ,
, 16- , , ,
8- . , AL AH ,
AX. AX 16-
AL AH .
AX, AH AL
:
MOV AX,258
AX 258.
AH 1,
AL 2. :
ADDB AH,AL
AH AL
( 2), 3.
AX 770, 0000001100000010 003002
. , 8
. MULB,
AL,
AH . DIVB
AH AL . - CL
.
( GenReg.s) .
-
- .
(SP). .
, ,
. ,
, ,
,
. , , .
, , , ,
. ,
. ,
.
.
736 .
737
. , , .
, .
(CS), (DS), (SS)
(ES). .
,
, ,
.
.
8088 , 1- 16- . ,
1 20 .
, 16-
.
64 , 16 .
8088 .
8088, 8- ,
, .
, , 8088
, .
8088 65536 . : , , .
, .
PC
. PC
, . .
BX ,
. , . , SP BP,
. ,
.
16-
CS, DS, SS ES. 20- ,
4
. , 20-
, 16-.
738 .
. 16- 20-
.
16 .
, DS 7, BX 12, , BX
716+ 12= 124. , 7 DS
20- 00000000000001110000.
16- 0000000000001100 ( 12), 20- 00000000000001111100 (
124).
.
, ,
,
DS. , .
CS
. , 16-
CS 20- , 16- PC; 20-
.
2- , ,
(SP) .
. , PUSH
2, , SS SP. POP
PUSH SP 2.
, , SP, . ,
SP. DS SS
, 16- .
DS SS , 17-
. ,
.
, , .
.
16- . ,
.
739
,
, .
8088 . , () ().
:
MOV AX,BX
ADD CX,20
, . ( ;
.) ,
, . ,
.
8088 ,
, . ,
, ,
.
. ,
.
,
.
. , MULB
AX.
. ,
, , . ,
(
).
8088 : ,
(2), (4 ) - ,
. .
, , . , ,
20, 20 21. 24
2427. 8088 (little endian); ,
.
. AXDX, AX ,
8088.
740 .
..1 8088 .
. .
. 8 .
.1. ( #
)
(#)
BX
SI/DI
(BX)(SI), (BX)(DI)
BX SIDI
#(BX)(SI), #(BX)(DI)
(BP)
#(BP)
BP
BP
SI/DI
(BP)(SI), (BP)(DI)
BP SI/DI
#(BP)(SI), #(BP)(DI)
(SP) PUSH, POP, PUSHF, POPF
741
XLAT
AL, BX
XLAT
AX, AL
IN #, OUT #
AL, AX, DX
CBW, CWD
, .
.
,
. :
ADD CX,(20)
CX ,
20 21. , ,
. CALL JMP
, . ( , ,
),
:
ADD CX,20
, CX 20, ,
20. # ..1
, .
: BX, SI DI.
. , ,
.
, , . , SI 5,
, FORMAT, AL
:
MOVB AL,FORMAT(SI)
. -
2.
742 .
, ( )
BX, SI DI .
. :
PUSH (BX)(DI)
, BX DI.
.
:
NOT 20(BX)(DI)
AX 50 .
, . . :
PUSH AX
AX ; SP , AX ,
SP. SP .
,
. .
8088
(MOVS), (CMPS) (SCAS) . SI DI . , ,
. (
) SI DI
. , .
8088 743
1 2 .
: 2
PUSH 2 POP.
8088
, , ,
. , ,
.
8088. ..2,
10 .
.2. 8088
MOV(B)
re, er, e#
XCHG(B)
re
LEA
r#e
PUSH
e, #
POP
PUSHF
POPF
XLAT
AL
ADD(B)
re, er, e# *
ADC(B)
re, er, e# *
SUB(B)
re, er, e# *
SBB(B)
- re, er, e# *
IMUL(B)
U *
MUL(B)
U *
IDIV(B)
U U
DIV(B)
U
U U
744 .
.2 ()
CBW
CWD
NEG(B)
NOT(B)
INC(B)
DEC(B)
AND(B)
er, re, e# 0
OR(B)
er, re, e# 0
XOR(B)
er, re, e# 0
SHR(B)
e1, eCL
SAR(B)
e1, eCL
SAL(B)
(=SHL(B))
e1, eCL
ROL(B)
e1, eCL
ROR(B)
e1, eCL
RCL(B)
e1, eCL
RCR(B)
e1, eCL
TEST(B)
er, e#
CMP(B)
er, e#
STD
-
()
CLD
( )
STC
CLC
8088 745
CMC
LOOP
,
DEC(CX)0
LOOPZ
LOOPE
,
Z= 1 DEC(CX)0
LOOPNZ
LOOPNE
,
Z= 0 DEC(CX)0
REP REPZ
REPNZ
MOVS(B)
LODS(B)
STOS(B)
SCAS(B)
CMPS(B)
JCC
JMP
e,
CALL
e,
RET
, #
SYS
,
.
MOV, .
, . ..2 r, e. , ,
, er.
MOV. , ,
, , (). , er
, .
, MOV ,
. re (
).
, ,
e#.
746 .
8088 747
( ),
. 32-
. ,
.
.
IMUL IDIV;
MUL DIV.
AH : AL.
AX : DX.
, DX AX . ,
. ,
.
.
: DX: AX AH : AL. AX AL, DX
AH. , ,
.
, ,
, ,
, . ,
, 8088,
,
.
- , ASCII- (AAA) (DAA),
..2.
,
, , , .
, , DX : AX AH : AL.
() . NEG, INC DEC
, .
.
.
.
748 .
; CL .
; .
, . RCR,
RCL, RCRB RCLB , , 17- 9- ,
.
, ,
. , . ()
. TEST ,
. ,
. CMP ,
. ,
SI DI ,
STD CLD .
8088
. , ,
. ,
(4-) .
, LAHF SAHF, AH, .
. , , ,
, 8080 8085.
. LOOP
CX
. LOOPZ,
LOOPE, LOOPNZ LOOPNE, ,
CX .
LOOP
128 ; ,
8- .
( ), , . ,
,
. -
8088 749
,
,
- . 2,5 ,
50 .
: REP, REPZ REPNZ. ,
..2, / . SI , DI ,
ES. REP, MOVSB
. CX.
MOVSB , REPNZ
ASCII- ; , REPNZ
SCASB, CX ,
REP MOVSB. .
ES ( DS). , ES= DS= SS.
..2
, . JMP.
.
. , .
CS, , .
;
,
,
.
. 20- ,
16 . CS PC .
8088 15 , (, JUMP GREATER
OR EQUAL JUMP NOT LESS THAN ). ..3.
128 .
, ( jump over jump).
750 .
.
,
. :
JB FARLABEL
:
JNA 1f
JMP FARLABEL
1:
JNA, JBE
CF = 1 ZF = 1
CF = 0
JE, JZ
ZF = 1
JNLE, JG
SF = OF ZF = 0
JGE, JNL
SF = OF
JO
OF = 1
JS
SF = 1
JCXZ
CX
CX = 0
JB, JNAE, JC
CF = 1
JNBE, JA
CF = 0 ZF = 0
JNE, JNZ
ZF = 0
JL, JNGE
SF OF
JLE, JNG
SF OF ZF = 1
JNO
OF = 0
JNS
SF = 0
8088 751
. CMP
, ,
. .
( ) .
,
. , .
.
GREATER THAN
LESS THAN. ABOVE BELOW.
8088 , ,
(subroutines). . .
, . ,
,
(..3).
, .
CALL. , ,
, , . ,
.
..3.
. CS
PC, .
CALL .
752 .
, RET, ,
, , CALL. RET
. , ;
SP, . ( RETF)
.
.
SP
BP. , .
BP ,
BP+ 4 BP+6
. ,
; .
..3 ,
BP 2, BP 4 BP 6. ,
BP.
, , .
, , , , BP
RET.
. ,
, .
. ,
AX DX.
, ,
. ,
RET. , ,
AX DX ( ),
, .
,
, , . ,
. ..4.
8088 753
.4. UNIX,
_OPEN
*name, 0/1/2
_CREAT
*name, *mode
_READ
n (nbytes)
buf
_WRITE
n (nbytes)
buf
_CLOSE
fd
0 -
fd
19
_LSEEK
_EXIT
status
117
_GETCHAR
122
_PUTCHAR
char
127
_PRINTF
*format, arg
121
_SPRINTF
but, *format,
arg
buf
125
_SSCANF
buf, *format,
arg
buf
:
,
; ; ,
SYS . ,
,
. AX, DX: AX ( ).
SYS
. . ,
.
; ,
. ,
.
754 .
: bytes, buffer, fd.
CLOSE .
0 AX. EXIT
.
LSEEK - .
.
, ,
, .
: (0), (1)
(2). ;
DX: AX.
, .
GETCHAR
AL; AH . AX 1. PUTCHAR
. ;
1.
PRINTF . , . %d
, , .
, %x , %o
. %s
8088 755
,
.
.
:
printf(??x = %d and y = %d\n??, x, y);
x y %d
. C y, x, .
, printf ,
.
, , printf
.
SPRINTF ,
( PRINTF,
). , PRINTF.
SSCANF PRINTF
, ,
,
.
, .
,
. , .
8088
,
; , ,
. :
ESEG MOV DX,(BX)
BX,
, DX.
( SP),
( , DI)
. SS, DS ES
MOV, ,
XCHG .
,
. , .
. , . ,
. .
756 .
, 8088.
, 8088
, , ,
.
( ),
( ), , ,
.
, ADD CMP.
AX, BP .. ,
, , .
,
, . ,
, . ,
( ), .
, .
, , (
),
. , .
.
.
( );
,
. , ,
.
, .
,
.
, .
, ,
. , 2 3 ,
5. , , L 5:
757
MOV AX,6
MOV BX,500
L:
.
, . , ,
.
.
as88 ACK
/ as88,
- . , ACK (Amsterdam Compiler Kit), UNIX,
MS-DOS Windows.
(!). ,
,
. ,
.
,
. . , , .
, , ,
. , BSS
(Block Started by Symbol ), ( ,
) .
. ,
, , ,
, .., , ,
, ,
. ,
. , BSS
.
,
. ,
. :
CMP AX,ABC
JE L
MOV AX,XYZ
L:
L , . . -, , - , (:).
758 .
;
. -, , (:). .
:
JE 2f
JUMP EQUAL
2. :
JNE 4b
- , :
BLOCKSIZE = 1024
. ,
BLOCKSIZE, BLOCKSIZZ BLOCKSIZ . , .
,
.
( ), ( 0X 0x). af AF 10 15. +, , *, / %
, , , .
&, ^ ~ ,
() .
.
( ).
.
. , ,
. , , . ,
, as88
.
,
, . . as88 ..5.
759
.5. as88
.SECT .TEXT
.SECT .DATA
.SECT .BSS
BSS
.BYTE
.WORD
.LONG
.ASCII "str"
str ASCII-
.ASCIZ "str"
str ASCII-
.SPACE n
.ALIGN n
n-
.EXTERN
, . ,
.
, , BBS.
.
,
. .
. : .BYTE, .WORD, .LONG .
.
: ASCII ASCIZ.
, ASCIZ
. , . -, ..6.
, \377 ( , 0 ).
.6. as88 -
-
\n
( )
\t
\\
760 .
.6 ()
-
\b
\f
\r
\"
SPACE , . , BSS
. ALIGN
2-, 4- 8- , , ..
. , EXTERN
. ;
.
. ,
; .
- \r (
) \n ( ), . ,
,
.$.
#include _
$-. ,
, . ,
.
. #include
,
.
(, pr.s) ,
pr,
pr.$. , , $-,
.
,
oprojname; projname.$.
,
. ,
, . ,
761
, projname.$,
, , . ,
#include.
8088
as88 UNIX,
Microsoft MASM Borland 8088 TASM. MASM, TASM
MS-DOS,
. MASM
TASM 8088, MS-DOS.
, ,
, , 64, ,
64 , , .
.
DS.
(, CS MOV). as88 , ,
- .
BSS, .
; ,
.data,
.code. title ( ),
.model ( ) .stack ( ). .com,
;
, 256
.
.WORD .BYTE ASCIZ TASM MASM DW ( ) DB ( ).
DB .
.
DUP;
, . :
LABEL DB 1000 DUP (0)
1000 ASCII-
LABEL.
,
PROC. , -
762 .
ENDP, . .
, , MASM, TASM
as88. ,
. , , .
C C++, ,
C. ,
as88 .
MASM, TASM as88 . MASM TASM
INT. INT 21H; MS-DOS.
AX (
).
, INT 16H BIOS INT 10H
. ,
.
UNIX, as88, .
763
..4.
. ,
, . , (
Enter).
. ,
, .
8 . 11 ,
. ,
,
. ,
, :
.
.
, , . E, I, >. (->)
. read getchar
.
Enter.
(->).
, .
,
. .t,
.i. ,
764 .
, .
.$, , .
(, pr)
:
1. (pr.s).
2. (pr.$).
3. (pr.88).
4. (pr.i).
5. (pr.t).
6. (pr.#).
. , ,
: ;
.
..7. ( ),
, q ( ).
, . , k k-
. ,
(!) X.
.7.
,! ,X
24
/T +#
g,!,
/start +5g
# T
/T +#
/start +5b
#
T
/T +#
/start +5c
#
T
108g
765
/buf + 6
+#
/D +#
/D +#
d,!
/buf + 6d
+#
R , CTRL L
g .
. ,
. /T
( +# ) , , T. g
,
.
/label: .
, . /label: g.
(..7 #),
.
b . b
.
, . , .
,
. c, ,
b, .
r, ,
.
, ,
. ;
.
.
, (
, ). .
+,
( ) . = ,
,
CALL. =
766 .
. n,
. LOOP;
.
, , . .
Solaris, UNIX, Linux Windows.
- www.prenhall.com/tanenbaum.
, Companion Web Site, , , , . zip-
assembler. . - Bigendnx,
LtlendNx MSWindos. assembler, ,
, .
UNIX (
Sun), UNIX (
Linux, ) Windows.
assembler
: READ_ME, bin, as_src, trce_src, examples exercise.
bin,
examples.
,
examples
t88 HlloWrld
.
as_src.
C, make.
POSIX-
Makefile, . Windows
make.bat. , , PATH
, as88 t88
. , t88 .
Windows 2000 XP
ansi.sys; config.nt :
device=%systemRoot%\System32\ansi.sys
:
Windows 2000 \winnt\system32\config.nt;
Windows XP \windows\system32\config.nt.
UNIX Linux .
767
8088, 8088
8088, . ,
as88. . ,
. ,
. , ,
. . , ,
examples .
.
Hello World
HlloWrld.s. .1
, ..5 .
(!) .
,
.
..5. .1
.1. HlloWrld.s
_EXI T = 1
_WRITE = 4
_STDOUT = 1
.SECT .TEXT
!
!
!
!
1
2
3
4
768 .
.1 ()
start:
MOV CX,de-hw
PUSH CX
PUSH hw
PUSH _STDOUT
PUSH _WRITE
SYS
ADD SP, 8
SUB CX,AX
PUSH CX
PUSH _EXIT
SYS
.SECT .DATA
hw:
.ASCII "Hello World\n"
de: .BYTE 0
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.SECT 4 , , , .
, , 17, .
19 , 12 ,
(\n) .
5, 18 20 , (:).
, . . start
, 0,
( )
.
6. .
, 6 :
MOV CX,12
, , .
, , 19. MOV 6
de hw CX.
711
. , C:
write(1, hw, 12);
(1), (hw),
(12). 79 , , C
. 10
write (4), 11 .
UNIX ( Linux), -
769
. , Windows
as88 t88 , UNIX.
11 . 12
, ,
2- . write , AX. 13
11
, CX; ,
. ,
, , . 14 15 exit, 16; ,
EXIT, .
, MOV SUB , . ;
.
, , .
HlloWrld.s .
UNIX, Windows.
Linux, Solaris, MacOSX UNIX ,
UNIX. -,
( ). Windows
(Start Programs Accessories Command Prompt). ,
examples cd. .
, ;
ls (UNIX) dir (Windows).
as88 t88 . Windows
.exe, .
, .
as88 HlloWrld.s
examples,
, UNIX :
./as88 HlloWrld.s
Windows :
.\as88 HlloWrld.s
:
Project HlloWrld listfile HlloWrld.$
Project HlloWrld num file HlloWrld.#
Project HlloWrld loadfile HlloWrld.88
770 .
, .
,
t88 HlloWrld
,
MOV CX,de-hw
6 .1.
( Enter). ,
PUSH CX
CX , , 12.
, 000c 12.
, 12.
, 810.
, 000b.
, :
"Hello World\n"
,
8088. genReg.s, start,
.2, ..6 7.
771
..6. : 7 ();
( )
.2. genReg.s
start:
MOV AX,258
ADDB AH,AL
MOV CX,(times)
MOV BX,muldat
MOV AX,(BX)
llp: MUL 2(BX)
LOOP llp
.SECT .DATA
times: .WORD 10
muldat: .WORD 625,2
!
!
!
!
!
!
!
!
!
!
!
3
4
5
6
7
8
9
10
11
12
13
4 AX 258:
MOV AX,258
AH 1, AL 2. , 5, AL AH , AH .
6 CX times (10). 7
BX muldat, 2, .
, ..6,. , AH
3, AL 2, AX 770; ,
3256+ 2= 770.
( 8) muldat
AX. ,
AX 625.
, AX 2BX ( muldat+ 2), 2.
MUL
DX:AX. (1250) , AX, DX .
7 ..6,.
AX 625, 80000.
AX, 32- , DX:AX; , DX 1,
772 .
AX 14464. , 165536+
+ 14464= 80000. , CX 4, LOOP . 10,
MUL ( LOOP) CX 4.
. AX, DX ;
, MUL AX (14464) 2 28928.
AX 28928, DX ,
.
vecprod.s , : vec1 vec2.
.3.
.3. vecprod.s
_EXIT
= 1
_PRINTF
= 127
.SECT .TEXT
inpstart:
MOV BP,SP
PUSH vec2
PUSH vec1
MOV CX,vec2-vec1
SHR CX,1
PUSH CX
CALL vecmul
MOV (inprod),AX
PUSH AX
PUSH pfmt
PUSH _PRINTF
SYS
ADD SP,12
PUSH 0
PUSH _EXIT
SYS
vecmul:
PUSH BP
MOV BP,SP
MOV CX,4(BP)
1:
MOV SI,6(BP)
MOV DI,8(BP)
PUSH 0
LODS
MUL (DI)
ADD -2(BP),AX
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
1
2
3
4
5
6
_EXIT
_PRINTF
inpstart
SP BP
vec2
vec1
8 CX =
9 CX =
10
11 vecmul
12 AX
13
14
15
PRINTF
16 PRINTF
17
18
19 EXIT
20 EXIT
21 vecmul(count, vec1, vec2)
22 BP
23 SP BP
24 CX
25 SI = vec1
26 DI = vec2
27 0
28 (SI) AX
29 AX (DI)
30 AX
773
ADD DI,2
LOOP 1b
POP AX
POP BP
RET
!
!
!
!
!
!
!
31 DI
32 CX > 0, 1b
33 AX
34 BP
35
.SECT .DATA
! 36
pfmt: .ASCIZ "Inner product is: %d\n" ! 37
.ALIGN 2
! 38
vec1:.WORD 3,4,7,11,3
! 39 1
vec2:.WORD 2,6,3,1,0
! 40 2
.SECT .BSS
! 41 BSS
inprod:
.SPACE2
! 42 inprod
vecmul;
SP BP, vec2 vec1 ,
vecmul . , 8
CX.
1 ( 9) CX ,
10. vecmul 11.
, , , , C
. , C vecmul :
vecmul(count, vec1, vec2)
CALL .
, 0x0011.
PUSH.
(BP) 22. BP , .
, 23 BP ; ,
.
.
. ,
, , .
,
2(BP). count 4(BP).
CX 24. 25 26 vec1 vec2 SI DI .
0. 27 0.
, 28, ..7.
( ) .
vec2 (0x0022); , , vec1 (0x0018) , (0x0005).
(0x0011). 1 , ,
774 .
. 1,
.
BP (0x7fc0) , 27. ,
, (
SP). ;
.
, 28. LODS SI AX. , LODS , ,
SI vec1.
,
t88 vecprod
:
/vecmul+7b
..7. vecprod.s
28,
,
, LODS. ( ,
.)
g
. ,
LODS.
29 AX . ,
MUL, DI
. ( )
MUL DX:AX.
30 , -2(BP). MUL
775
, 31.
DI vec2.
LOOP.
CX ,
, 1
28. 1b l
. AX ( 33),
BP ( 34) ( 35).
MOV ( 12).
, . printf
printf C. 1315 3 :
, , (pfmt)
printf (127). pfmt %d, , , ,
printf.
17 . 5,
,
MOV SP,BP
, .
,
, .
vecmul . vecprod.s
, . _EXIT
_PRINTF. syscalnr.h ,
.
, . , .
,
vec1. 3 .
, .
, , ,
, ,
, :
#include "../syscalnr.h"
776 .
, :
STDIN = 0
STDOUT = 1
STDERR = 2
, , .
,
. ,
,
.
arrayprt .4. ,
,
. 4
, 10. ( 59)
. 2225 .
.4. arrayprt
#include "../syscalnr.h"
! 1
.SECT .TEXT
vecpstrt:
MOV BP,SP
PUSH vec1
MOV CX,frmatstr-vec1
SHR CX
PUSH CX
CALL vecprint
MOV SP,BP
PUSH0
PUSH _EXIT
SYS
!
!
!
!
!
!
!
!
!
!
!
!
.SECT .DATA
vec1: .WORD 3,4,7,11,3
frmatstr: .ASCIZ "%s"
! 14
! 15
! 16
frmatkop:
.ASCIZ "The array contains "
frmatint: .ASCIZ " %d"
! 17
! 18
! 19
.SECT .TEXT
vecprint:
PUSH BP
MOV BP,SP
MOV CX,4(BP)
MOV BX,6(BP)
MOV SI,0
PUSH frmatkop
!
!
!
!
!
!
!
!
2
3
4
5
6
7
8
9
10
11
12
13
20
21
22
23
24
25
26
27
777
PUSH frmatstr
PUSH _PRINTF
SYS
MOV -4(BP),frmatint
1: MOV DI,(BX)(SI)
MOV -2(BP),DI
SYS
INC SI
LOOP 1b
PUSH '\n'
PUSH _PUTCHAR
SYS
MOV SP,BP
RET
!
!
!
!
!
!
!
!
!
!
!
!
!
!
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2730 , ,
3134 printf . 27,
33 .
PRINTF. 3739
putchar.
.
as88 arrayprt.s
28
arrayprt.$.
;
. 28
. 28 arrayprt.s - arrayprt.$
. 28 arrayprt.$ 7 arrayprt.s,
syscalnr.h 21 .
UNIX 28 arrayprt.$
head 28 arrayprt.$
28 . ,
.
, . ,
7 , SHR. ..2 :
. 7
:
SHR CX,1
, arrayprt.s,
arrayprt.$,
.
, ,
.
t88 arrayprt
778 .
, , . 3, 4, 7, 11 3,
3, 1024, ,
- .
, . ,
, 32 33.
. , SI ,
, ,
. , 35. SI
, 2.
, :
ADD SI,2
.
. vecprint .
, ,
vecprint, ,
RET 41. , . ,
40 :
ADD SP,10
POP BP
5 , vecprint;
BP, 22.
BP, , . . ,
, ,
, .
. .5 .6 , strngcpy.s reverspr.s,
examples.
.5. (strngcpy.s)
.SECT .TEXT
stcstart:
PUSH mesg1
PUSH mesg2
CALL strngcpy
ADD SP,4
PUSH 0
PUSH 1
SYS
!
!
!
!
!
!
!
!
1
2
3
4
5
6
7
8
779
strngcpy:
PUSH CX
PUSH SI
PUSH DI
PUSH BP
MOV BP,SP
MOV AX,0
MOV DI,10(BP)
MOV CX,- 1
REPNZ SCASB
NEG CX
DEC CX
MOV SI,10(BP)
MOV DI,12(BP)
PUSH DI
REP MOVSB
CALL stringpr
MOV SP,BP
POP BP
POP DI
POP SI
POP CX
RET
.SECT .DATA
mesg1: .ASCIZ "Have a look\n"
mesg2: .ASCIZ "qrst\n"
.SECT .BSS
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.6. (reverspr.s)
#include "../syscalnr.h"
start: MOV DI,str
PUSH AX
MOV BP,SP
PUSH _PUTCHAR
MOVB AL,'\n'
MOV CX,-1
REPNZ SCASB
NEG CX
STD
DEC CX
SUB DI,2
MOV SI,DI
1: LODSB
MOV (BP),AX
SYS
LOOP 1b
MOVB (BP),'\n'
SYS
PUSH 0
PUSH _EXIT
SYS
.SECT .DATA
str: .ASCIZ "reverse\n"
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
780 .
.5 .
stringpr, stringpr.s
( ).
, , as88
, , . , , .5,
as88 strngcpy.s stringpr.s
.6
. .
.5 , .
( 28) strngcpy
: mesg2 mesg1; .
strngcpy, 9 . ,
. 1013
; , 2730, . 14 SP BP . BP
. 26
BP SP.
REP MOVSB, 24 . MOVSB ,
SI, , DI. . REP ,
MOVSB;
CX 1. CX
.
REP MOVSB , 1522. , SI,
21; , DI, 22.
CX . ,
. MOVSB
, SCASB ( ).
, DI, AL
DI . MOVSB, . 15 AX AL, 16
DI, 17 CX 1. 18 REPNZ SCASB,
. CX,
REPNZ
, CX. MOVSB,
, CX
1 ( 1920).
781
, ,
. ,
.
23 25
stringpr, examples.
, .
,
.6, 1 . 3 , 4
(BP) . ASCII- ,
_PUTCHAR. : BP ,
SYS.
2, 6 7 DI, AL CX SCASB.
, , , AL .
, SCASB str \n,
c, .
REP SCASB DI, ,
. 12 DI 2;
.
, , , ; 10 ,
. LODSB
14 AL, 15
_PUTCHAR, SYS .
, 18 19, ,
_EXIT.
, , .
.
/str str .
, ,
.
, ,
. . 13, . b
15. , ,
e. r,
. , r,
, .
782 .
.
, syscalnr.h, 20. ,
, , 16, 36b. ,
start 2
/start + 14b
, .
.
, , ,
SYS. 8088 jumptbl.s,
.7.
.7.
#include "../syscalnr.h"
.SECT .TEXT
jumpstrt:
PUSH strt
MOV BP,SP
PUSH _PRINTF
SYS
PUSH _GETCHAR
1: SYS
CMP AX,5
JL 8f
CMPB AL,'0'
JL 1b
CMPB AL,'9'
JLE 2f
MOVB AL,'9'+1
2: MOV BX,AX
AND BX,0Xf
SAL BX,1
CALL tbl(BX)
JMP 1b
8: PUSH 0
PUSH _EXIT
SYS
rout0: MOV AX,mes0
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
783
JMP 9f
rout1: MOV AX,mes1
JMP 9f
rout2: MOV AX,mes2
JMP 9f
rout3: MOV AX,mes3
JMP 9f
rout4: MOV AX,mes4
JMP 9f
rout5: MOV AX,mes5
JMP 9f
rout6: MOV AX,mes6
JMP 9f
rout7: MOV AX,mes7
JMP 9f
rout8: MOV AX,mes8
JMP 9f
erout: MOV AX,emes
9:
PUSH AX
PUSH _PRINTF
SYS
ADD SP,4
RET
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
.SECT .DATA
!
tbl: .WORD rout0,rout1,rout2,rout3,rout4,rout5,
rout6,rout7,rout8,rout8,erout
!
mes0: .ASCIZ "This is a zero.\n"
!
mes1: .ASCIZ "How about a one.\n"
!
mes2: .ASCIZ "You asked for a two.\n"
!
mes3: .ASCIZ "The digit was a three.\n"
!
mes4: .ASCIZ "You typed a four.\n"
!
mes5: .ASCIZ "You preferred a five.\n"
!
mes6: .ASCIZ "A six was encountered.\n"
!
mes7: .ASCIZ "This is number seven.\n"
!
mes8: .ASCIZ "This digit is not accepted as an octal.\n"
!
emes: .ASCIZ "This is not a digit. Try again.\n"
!
strt: .ASCIZ "Type an octal digit with a return. Stop on end of file.\n"!
49
50
51
52
53
54
55
56
57
58
59
60
61
strt, ( 47 ).
( 8 9). AX
5, ,
8 22 0.
,
AL. , 0,
13 ; . , 9, .
16 ASCII- , ASCII- 9.
, 17 AX
0 . BX. 18 AND , ,
784 .
0 10 ( , ASCII 0x30). ,
, BX 2 19.
20 .
BX tbl,
PC.
,
.
,
_PRINTF.
, , JMP
CALL PC .
, . ,
, ,
50. , , tbl, rout0, rout1, rout2 ..,
. 2-
1, 19. .
erout ( 4348 ). ,
. -, 43 ( AX).
_PRINTF.
, , .
rout0 rout8
AX, erout, .
, . , , ,
.
InFilBuf.s, .8, -. , ,
. , n n .
,
lseek read.
.
,
.
785
.8. ,
#include "../syscalnr.h"
bufsiz = 512
.SECT .TEXT
infbufst:
MOV BP,SP
MOV DI,linein
PUSH _GETCHAR
1: SYS
CMPB AL,'\n'
JL 9f
JE 1f
STOSB
JMP 1b
1: PUSH 0
PUSH linein
PUSH _OPEN
SYS
CMP AX,0
JL 9f
MOV (fildes),AX
MOV SI,linh+2
MOV BX,0
1: CALL fillbuf
CMP CX,0
JLE 3f
2: MOVB AL,'\n'
REPNE SCASB
JNE 1b
INC (count)
MOV AX,BX
SUB AX,CX
XCHG SI,DI
STOS
XCHG SI,DI
CMP CX,0
JNE 2b
JMP 1b
9: MOV SP,BP
PUSH linein
PUSH errmess
PUSH _PRINTF
SYS
PUSH _EXIT
PUSH _EXIT
SYS
3: CALL getnum
CMP AX,0
JLE 8f
MOV BX,(curlin)
CMP BX,0
JLE 7f
CMP BX,(count)
JG 7f
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
786 .
.8 ()
SHL BX,1
MOV AX,linh-2(BX)
MOV CX,linh(BX)
PUSH 0
PUSH 0
PUSH AX
PUSH (fildes)
PUSH _LSEEK
SYS
SUB CX,AX
PUSH CX
PUSH buf
PUSH (fildes)
PUSH _READ
SYS
ADD SP,4
PUSH 1
PUSH _WRITE
SYS
ADD SP,14
JMP 3b
8: PUSH scanerr
PUSH _PRINTF
SYS
ADD SP,4
JMP 3b
7: PUSH 0
PUSH _EXIT
SYS
fillbuf:
PUSH bufsiz
PUSH buf
PUSH (fildes)
PUSH _READ
SYS
ADD SP,8
MOV CX,AX
ADD BX,CX
MOV DI,buf
RET
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
getnum:
MOV DI,linein
PUSH _GETCHAR
1: SYS
CMPB AL,'\n'
JL 9b
JE 1f
STOSB
JMP 1b
1: MOVB (DI),' '
PUSH curlin
PUSH numfmt
PUSH linein
!
!
!
!
!
!
!
!
!
!
!
!
!
94
95
96
97
98
99
100
101
102
103
104
105
106
787
PUSH _SSCANF
SYS
ADD SP,10
RET
.SECT .DATA
errmess:
.ASCIZ "Open %s failed\n"
numfmt: .ASCIZ "%d"
scanerr:
.ASCIZ "Type a number.\n"
.ALIGN2
.SECT .BSS
linein: .SPACE 80
fildes: .SPACE2
linh: .SPACE 8192
curlin: .SPACE4
buf:
.SPACE bufsiz+2
count: .SPACE2
!
!
!
!
107
108
109
110
!
!
!
!
!
!
!
!
!
!
!
!
!
!
111
112
113
114
115
116
117
118
119
120
121
122
123
124
, , , .
613 , linein.
, ,
. 3845. ,
39,
40. ( 113)
$s _PRINTF.
linein.
1420. open ,
, 9 28. , ,
fildes.
read lseek.
512 , buf. ,
(512 ), ,
( 123). , 21 SI
linh,
. BX
, , , 22
.
fillbuf,
8393. read
, AX.
CX,
788 .
. BX, 91 CX
BX. 92 DI;
,
.
fillbuf 24 ,
- .
25.
. \n AL
26,
REP SCASB .
: CX
.
\n, (
) linh. ,
BX , CX ( 2931 ). 3234 ,
STOS SI, DI,
STOS . 3537
,
CX .
. linh , , 0, linh+ 2 .. n
n
n+ 1.
,
, write.
linh,
n- n .
, 7.
getnum ( 46
).
linein ( 95103 ). SSCANF.
, curlin,
,
numfmt , , linein,
. , SSCANF
curlin. AX. 48;
8.
getnum curlin, BX.
789
( 4953 ).
, , (EXIT).
; BX 2
(SHL). 55
AX. CX
.
lseek;
,
. lseek ,
57 .
.
(32-) , ,
AX ( 58 59 ); 32- . 62
LSEEK, . LSEEK
, DX:AX.
(
65536 , - ), AX; , CX ( 63),
, .
. 6468 ,
1 7072
. ,
, 69, . , 73, ,
3 getnum.
790 .
1. AH AL MOV AX,
702?
2. CS 4.
?
3. , 8088.
4. , CS= 40, DS= 8000, IP= 20.
1) ?
2) AX
MOV AX, (2)?
5.
, CALL.
BP , .
; .
, ,
AX.
6. ..1 de hw.
. , de+ hw?
.
7. ,
:
=a+b+2
8. C- :
footbar(x,y);
, .
9. , , , ,
.
+, -, /.
A
ACL, 539
Acorn Computer, 66
ADSL, 153
AGP, 242
AMBA, 611
APIC, 231
Apple, 43
Apple Newton, 67
ARM7, 67
ASCII, 162
ASIC, 616
ASID, 499
ATA, 113
ATAPI, 113
ATmega168, 238
, 418
, 390
, 368
, 439, 442
, 369
, 391
, 396
, 405, 406
AVR, 69
AVX, 363
B
BBC Micro, 66
BGA, 237
BIOS, 112
BlueGene/L, 661
Blu-Ray, 130
BSS, 757
Burroughs-B5000, 40
C
Catamount, 668
CCD, 159
CC-NUMA, 645, 646
CDC 6600, 40, 88, 349
CD-R, 126
CD-ROM, 123
CD-ROM XA, 127
CD-RW, 128
Celeron, 64
CISC, 83
CMYK, 148
COLOSSUS, 35
COMA, 630, 653
Core 2 duo, 63
CoreConnect, 610
Core i7
, 416
, 492
, 360363
, 357, 358
, 386
, 387
8086, 386
COW, 631
CPP, 287, 304
CRC, 253, 615
792
H
DDR, 206
DEC, 38, 81
DIMM, 106
DIP, 183
DLL, 232, 584
DMA, 132
DMI, 231, 243
dpi, 149
DRAM, 205
DSLAM, 155
DSM, 627, 679
DSP, 596
DVD, 129
I
IA-32, 386
IA-64, 459464
IAS, 37
IBM, 38
IBM 360, 41
IBM 701, 38
IBM 704, 38
IBM 709, 29
IBM 801, 82
IBM 1401, 39
IBM 7094, 39, 41
IDE, 112
IFU, 318
IJVM, 270, 284
, 288
, 285
, 271
ILC, 567
ILLIAC, 36
ILLIAC IV, 629
ILLIAC-IV, 91
i-node, 534
Intel, 60
Intel 8255A, 259
Intel-8259A, 225
Intel Pentium, 62
IP, 614
IPC, 522
ISA, 133, 729
ISP, 158, 614
ISR, 452
Itanium 2, 461464
E
ECC, 108
EDO, 206
EDVAC, 36
EEPROM, 70, 207
EIDE, 113
EISA, 134
ENIAC, 36
ENIGMA, 35
EPIC, 462
EPROM, 207
EPT, 502
F
FAT, 536
FIFO, 485
FMS, 29
FORTRAN, 28
FPGA, 45, 208, 616
FPM, 205
FPU, 661
FSM, 320
G
GDT, 492
Google, 671
GridPad, 46
GUI, 44, 522
J
JOHNNIAC, 36
K
Kinect, , 145
793
N
LAN, 612
Latin-1, 164
LBA, 113
LDT, 492
LGA, 183
Linda, 682
, 683
, 683
, 682
, 682
Linux, 520
lpi, 148
LRU, 342, 484
LUT, 208
LV, 287, 304
NaN, 727
NC-NUMA, 645
NID, 154
NORMA, 631
NOW, 631
NTFS, 536
NUMA, 630, 645
Nvidia, 68
NVIDIA Fermi, 620
O
OCP-IP, 611
OGSA, 694
OLED, 141
OLE_LINK, , 478
OLE_LINK, , 614
OLE_LINK, , 173
OLE_LINK,
, 451
OLE_LINK, , 657
OLE_LINK, ,
689
OMAP4430, 234
, 418
, 497
omega, 643
Omnibus, 39
OPC, 304
Opteron, 665
Orca, 684
, 684
, 685
, 684
M
MAL, 295
MAR, 275
MBR, 276, 304
MDR, 275
MESI, 639
MFT, 539
Mic-1, 280
Mic-2, 323
Mic-3, 328
Mic-4, 333
Microsoft, 44
Microsoft Xbox 360, 55
MIMD, 629
MINIX, 520
MIPS, 83, 84
MIR, 281
MISD, 629
MMU, 480
MMX, 63
Motif, 522
Motorola-68000, 82
MPC, 281
MPEG-2, 608
MPI, 676
MPP, 631, 659
MTBF, 668
MULTICS, 491
P
PC, 287, 304
PCI, 134, 240
PCIe, 134
PCI Express, 134, 249, 250
, 251
, 253
794
PCI Express ()
, 251
, 251
, 251
, 254
, 252
, 253
, 253
, 252
PDA, 46
PDP-1, 39
PDP-8, 39
Pentium 4, 227
PGA, 183
PIO, 259
PnP, 247
POSIX, 520
POWER4, 45
PPE, 616
PROM, 207
PSW, 385, 496
pthreads, 543
PVM, 676
T
TAT-12/13, 50
TCP, 614
TFT, 140
TLB, 366, 499
TLB-, 499
TN, 139
TOS, 304
TriMedia, 594
TX-0, 38
R
RAID, 115
RAM, 205
RAS, 667
RAW, 331
Red Storm, 665
RFID, 51, 52
RGB, 141
RISC, 44, 83, 84
ROB, 361
ROM, 206
S
Samsung Galaxy, 56
Samsung Galaxy Tab, 67
Sandy Bridge, 358
SCSI, 114
SDRAM, 206
Seastar, 666
Serial ATA, 113
U
UART, 259
UMA, 630
Unicode, 164
UNIX, 519
Berkeley, 519
System V, 519
, 586
, 542
, 542
, 586
USART, 259
USB, 255
USB 2.0, 258
UTF-8, 166
u-, 88
795
V
VAX, 81, 83
VCI, 611
VLIW, 592
VMCS, 502
VMX, 502
VTOC, 127
v-, 88
W
WAN, 612
WAR, 351
WAW, 351
WEIZAC, 36
Whirlwind, 38
Wiimote, , 144
Win32 API, 525
Win64, 525
Windows, 522
Windows 95, 523
Windows 98, 523
Windows 2000, 523
Windows ME, 523
Windows NT, 523
X
X3T, 667
Xeon, 64
X Windows, 522
Z
Zilog Z8000, 82
, 153
, 532
, 742
, 742
, 508
, 424
, 396, 406
, 408
, 742
()
, 742
, 413
, 407, 741
, 406, 741, 742
, 742
, 410
, 406
, 407
, 741
, 406
, 410
, 477
, 478
, 478
, 275
, 95, 732
, 742
, 494
, 35, 105
, 38, 79
, 430
, 140
, 175
, 175
, 26
, 24, 77, 190, 271
, 689
, 152
, 34
, 645
, 26
, 221
, 133
, 751
, 596
- , 24,
77, 190, 271
, 26, 80
, 105
, 390
, 26
, 88
796
, 153
, 216, 219
, 26, 556, 730, 756
, 757
, 757
, 757
, 730
, 756
, 758
, 730, 756
, 756
, 730, 758
BSS, 757
, 757
, 757
, 730
, 573
, 756
, 730
, 559
, 756
, 492, 573
, 35
, 173
-, 112
, 355
, 734
, 160
, 308, 402
, 96, 381
, 739
, 232
, 55
, 38
, 664
, 670
, 584
, 585
, 586
, 421
, 573
, 94, 710
, 357, 468
, 480
, 99
, 394
, 394
, 751
, 749
, 355
, 318
, 365
, 535
, 333
, 535
, 363
, 361
, 535
, 334
, 644
-, 69
, 152
, 761
, 614
, 38
, 175
, 175
, 366, 499
, 86
, 511
, 361
, 361
,
676
, 276
, 201
, 201
, 205
, 33
797
-
, 428
, 261
, 431
, 431
, 91
, 91
, 226, 453
, 23, 172, 178
, 134, 240
RAW, 331
WAR, 351
WAW, 351
, 141
, 109
, 500
, 21, 676
, 692
, 476
Core i7, 492
OMAP4430, 497
,
664
, 678
,
478
, 253
, 284
, 579
, 578
, 490
, 485
,
599
, 43
, 69
, 710
, 758
, 338
, 157
, 87
, 668
()
, 110
, 581
, 192
, 47
, 757
, 618
, 555
, 86
, 527
, 751
, 751
, 30, 475
, 483
, 30
, 421
, 618
, 555
, 462
, 42
, 105
, 757
, 500
, 659
, 228, 603
, 586
, 539
, 757
, 612
, 492
, 515
, 148
, 44, 522
, 737
, 146
, 751
, 749
, 28
798
, 137
, 681
, 734
, 659
, 730
, 710
- , 739
- , 94
, 566
, 742
, 186
, 180
, 186
, 658
, 539
, 534
, 531, 754
, 758
, 43
, 35
, 152
, 582
, 205
, 235
, 345
, 107
, 121
SSD, 119
, 480
, 784
OLED, 141
TFT, 140
, 138
- , 138
, 139
, 313
, 739
, 734
, 715
, 715
, 108, 127
, 630, 645
, 630
-, 630, 653
, 541
, 214
, 604
, 152
, 152
, 70, 71
, 123
, 110
, 604
, 138
, 689
, 48
, 65
, 708
-, 126
, 410
, 342
, 410
, 639
, 342, 639
, 109
, 351
, 351
, 410
, 342, 637
799
, 639
, 94
, 196
, 196
, 527
, 133, 432
D, 196
SR, 194, 195
, 195, 196
, 658
, 125
, 277
, 725
, 758
, 758
, 758
, 613
, 34
, 108
, 99
, 21, 80, 730
, 21
, 114
, 676
-
, 258
, 258
, 258
, 410
, 380
, 275
, 508
, 508
, 137
, 182
, 747
,
352
, 356
, 555
, 575
, 756
, 555
, 739
, 55, 56
, 539
, 107
, 174
, 173
, 736
, 736
, 505
, 141
, 408
, 742
, 742
, 534
, 735
, 140
, 140
, 182
, 40
, 42
, 155157
, 157
, 285, 287
, 157
, 253, 542
, 253
, 46
, 508
, 532
, 532
, 221
, 40
800
, 43
, 136
, 58
, 631
, 539
, 670
, 43
, 505
, 123
, 125
, 122
, 127
, 228
-, 94
, 98
, 271
, 108
, 162
, 402
, 385
, 101
8/10-, 253
, 164
, 99
, 164
, 732
, 173
, 511
, 659
-, 428
, 79
, 79
, 79
, 420
, 426
, 424
, 184
, 677
, 656
, 657
, 656
, 658
, 656
, 641
, 613
-, 121
, 126
, 127
, 128
, 124
, 123
, 187
, 26, 556
, 582
, 585
, 585
, 574, 756
, 574
, 55, 56
, 46
, 670
, 55
, 46, 47
, 590
, 56
, 44, 83
, 44,
83
, 26
, 26
, 57
, 86
Pentium, 88
, 344
, 328
, 320
, 320
, 320
, 578
-, 132
, 111
, 280
, 231
, 765
801
, 256
, 527
, 532
, 256
, 183
, 682
, 407,
741
-, 104
-, 104
, 656
, 122
, 40
, 546
,
600
, 55
, 659
, 521
, 359
, 637
, 637
, 639
, 639
-, 62, 103, 337
n-, 341
, 337
, 343
-, 340
-, 340
, 342
, 105
, 342
, 339
, 105, 337
, 342
, 34
, 146
, 739
, 113
, 494
, 153
, 152
, 153
, 569
, 182
, 182
, 504
, 338
, 338
, 758
, 612
, 492
, 122
, 108
, 284
, 563
, 562
, 563
, 562
, 30
, 564
, 564
, 761
, 720
, 539, 610
, 613
, 664
, 664
, 421
, 120
, 627
,
627
, 131
802
, 34
, 21
, 34
-, 37, 77
, 20, 729
, 108
, 614
, 599
, 730
, 757
, 758
, 426
, 295
, 161
, 82
, 53, 54
, 334
, 24, 323, 733
, 24
, 182
RFID, 51
, 210
, 761
-, 157
, 49
, 730, 756
, 681
, 41
, 599
, 600
, 599
, 602
-, 127
, 20
, 55
, 761
, 761
, 761
, 632
, 683
ADSL, 154
, 152
, 157
, 153
, 578
, 106
, 106
, 152
, 152
, 152
, 152
, 214
, 174
, 35
, 631
, 627
, 94, 625
, 216
, 184
, 93, 624, 630
, 646
, 625
, 137
, 48, 60
, 142
, 543
, 59
,
676
, 642
, 46, 47
, 182
, 726
, 630,
645
, 406, 741,
742
803
, 406
, 540
, 151
, 727
, 742
, 585
, 121
, 40, 60
, 723
, 380
()
, 406
, 739
, 508
, 205
, 205
, 205
, 29, 475
, 594, 684
, 421
, 422
, 525
, 222
, 491
, 121
, 127
, 710
, 694
-,
258
, 214
, 342, 639
,
410
, 722
, 532
, 542
, 482
, 721
, 721
, 287
, 58
, 522
, 618
, 618
, 147
, 452
, 596
, 342
, 410
, 378
,
97, 739
-, 105
, 555
, 575, 578
, 756
, 476
, 127
, 235
, 91
, 639
, 191
, 630
, 205
, 722
, 96
, 38
, 739
804
()
, 206
, 653
, 644
, 206
, 281
-, 207
, 85
, 85
,
676
-, 259
, 564
, 564
, 33
, 140
, 82
, 431
, 756
, 676
, 676
, 676
-, 128
, 641
, 755
, 363
, 451
, 749
, 749
, 320
, 218
, 611
, 109
, 56
,
46
, 82, 206
, 141
, 720
, 57
, 122
, 47
, 354
, 426, 751
, 214
, 356
, 182
, 110
-
, 582
, 490
, 251
, 639
, 658
, 643
, 221
, 604
, 178
, 189
, 252
, 435
, 153
, 188
, 381
, 604
, 685
, 97, 739
, 97
, 222
, 206
-, 123
, 207
, 207
,
207
, 410
-, 521
, 629
, 629
, 512, 542
, 442
, 511
, 108
, 404
, 465
805
, 132, 452
, 352
, 352
, 436
, 308, 402
, 534
, 381
, 214
OLE_LINK, , 259
, 259
, 214
, 25
,
525
, 146
, 146
, 150
, 150
, 149
, 150
RISC, 84
, 104, 483
, 653
, 578
, 576
, 637
, 485
, 343
, 345
, 348
, 20
, 730
, 555
, 756
, 132, 452
, 555
-, 582
, 408
,
45, 616
, 207
, 208
-, 428
, 231
, 25
, 25
, 26
, 512, 542
, 254
-
, 137
, 454
, 511
, 448
, 87
, 658
, 687
, 687
COMA, 654
, 331, 344
, 338
, 477
, 682
, 252, 614
, 614
, 639
, 639
, 614
, 637
, 614
, 213
, 566
, 426, 444
, 541
, 541
SIMD, 91
, 91
, 616
806
()
, 631, 659
,
592
, 76
, 633
, 406
, 132, 431
, 97
, 559, 730, 758
, 532
, 532
, 532
, 464
, 331
, 386
, 24, 384, 732
, 734
, 91
, 284
, 735
, 736
, 77
, 281
, 734
, 275
, 276
, 275
, 734
, 734
, 735
, 385, 736
, 407
, 741
, 574
, 742
, 742
, 406
, 205
8086, 386
, 30
, 381
, 381
, 386
, 137
, 444
, 426
, 659
, 331
, 541
, 483
, 380
, 380
, 604
, 604
, 604
-, 105, 337
,
658
, 34
, 116
, 627, 679
, 694
, 692
, 692
, 692
, 693
, 693
, 693
, 644
, 135
, 216
, 399
, 134
,
408
, 42, 606
, 203
807
, 42
, 142
, 635
, 527
, 532
, 348
, 487, 737
, 749
, 749
, 582
, 672
, 632
, 82
, 108
BSS, 757
, 757
, 757
, 515
, 137
, 57
, 127
, 154
, 616
, 659
, 664
, 644
, 612
, 656
, 612
, 642
, 631
,
643
, 151
, 203
, 276
, 203
, 591
, 730
, 625
, 153
D-, 196
SR-, 195
, 206
, 602
, 676
, 216, 218
- , 259
, 689
, 29
, 222
, 30
, 624
, 625
, 710
, 710
, 710
, 232
, 212
, 30, 475
, 25
, 342, 637
, 139
, 634
, 591
, 637
, 228
, 96, 739
, 99
, 385, 496
, 344
, 491
, 46
, 715
, 546
, 687
, 637
, 521
, 451
, 612
808
, 47
, 515
, 271
, 320
, 633
, 635
, 632
, 634
, 632
, 467
, 356
, 615
, 539
, 506
, 154
, 687
, 566
, 531
, 133
, 531
, 531
, 205
, 348
, 639
, 639
, 195
, 632
, 182
, 184
, 188
, 756
, 567
, 77, 287, 732
, 281
, 349
, 226
, 539
, 492
, 492
, 784
, 175
, 127
809
()
, 536
, 567, 573, 756
, 478, 495
, 192
, 119
, 532
, 136
, 150
, 231
, 739
- , 739
, 739
, 394
, 739
, 393
, 610
, 659
, 140
, 656, 678
, 520
, 579
, 765
, 665
, 135
, 24, 77, 271
, 38
, 174
, 174
, 174
, 174
, 214
, 555
, 21
, 730
, 196
, 174
, 81
, 407
, 736
, 754
()
, 388
, 732, 736
, 735
, 754
, 422
, 255
, 259
-, 258
, 253
, 281
, 691
, 22
, 524
, 25, 377, 729
, 555
, 692
, 253
, 693
, 24, 270, 313
, 24
, 25, 475
, 693
, 254
, 693
, 253
, 252
, 23, 172
, 23, 172
, 242
, 544
, 465
-, 258
, 231
, 203
, 637
-, 24, 77
-, 131
, 94
810
()
, 154
, 159
, 112
, 201
, 214
, 214
, 152
, 503
, 756
, 540
, 756
FAT, 536
NT, 536
, 564
, 66
, 252
, 478
, 160
, 140
, 532
, 742
, 748
, 748
, 385, 736
, 629
-, 110
-, 207
, 37
-
, 37, 77
, 564
, 490
, 485
, 45
, 426
, 256
, 50
, 444, 456
, 573
, 50
, 46
, 141
, 148
, 586
, 739
, 555
, 734
, 734
, 38, 76
, 58
--,
271
, 78
, 216
, 49
,
253, 615
, 110
, 153
, 159, 161
, 23, 172
, 210
, 38
, 263
, 152
, 152
, 149
, 149
, 708
, 726
811
, 723
, 714
, 393
, 331
, 38
, 114
, 179
. , 36
, 720
- , 138
, 207
, 138
, 448
, 174
, 43
, 49
, 682
,
710
, 758
, 39, 76, 133, 212
AGP, 242
PCI, 240
, 245
, 244
USB, 255
, 216, 219, 220
, 216
, 611
, 213
, 610
, 611
, 216, 218
, 212
, 215
, 153
, 623
, 623
, 497
, 585
, 606
. , .
6-
.
.
.
.
.
.
, 192102, -, . (. ), . 3, , . 7.
005-93, 2; 95 3005 .
25.02.13. 70100/16. . . . 69,660. 2500.
????????????????
?
!
?
?
? ,
?
!
!
www.piter.com/ePartners
www.piter.com,
,
( www.piter.com)
!
.
10% ,
, - c
. ,
, 5%
.
, , 500 ,
. Web.Money.
:
http://www.piter.com/book.phtml?978538800282
http://www.piter.com/book.phtml?978538800282&refer=0000
, 0000
WWW.PITER.COM
:
: www.piter.com
: postbook@piter.com
: (812) 7037374
: 197198, , / 127,
ICQ: 413763617
:
.
.
,
.
. : . Web-money USD
E-Gold, MoneyMail, INOCard, RBK Money (RuPay), USD Bets, Mobile Wallet
.
, ,
.
.
.
e-mail.
:
, , , , , e1mail;
, , , , , ,
, ;
, , .