. .
- SPARC-.
- .
- , , .
, , , , .
- . , , (. 6.1).
, .
. .
. .
, 1943 (Thomas Watson), IBM, , " ".
, .
40- XX , . 1948 , . , .
.
( ).
. , .
- ,
-.
, :
. 6.2 " - ". 90- XX .
, . :
. - (. 6.3). ( .7), .
, , (. 6.4). ( ) , .
, . .
60- XX . - . , .
, . 6.5.
. 6.6.
, ,
, .
- . IEEE Spectrum [Computers 1997], 2002 (. 6.5).
, .
- .
- ,
.
, :
.
, , , , .
, . . - , -.
, () (John von Neumann) 40- XX . [ 1985]:
, , 6.1.
6.1.
program_counter = 0; /* */
do {
instruction = memory[program_counter++]; /* */
decode(instruction); /* */
fetch(operands); /* */
execute; /* */
store(results); /* */
} while ( instruction != halt);
(Accumulator architecture) . - , (. 6.6). - () . . . .
, :
load 1000 /* 1000 */
add 1002 /* 1002 */
store 1003 /* , , 1003 */
(Stack architecture) . , (. 6.7). . .
, :
push 1000 /* 1000 */
push 1002 /* 1002 */
add /* , , */
pop 1003 /* , , 1003 */
- (Load/Store architecture) , (. 6.8). , . ( ) . : , .
:
add reg_src_l, reg_src_2, reg_dest /* reg_src_l reg_src_2 reg_dest */
, -
CISC, RISC VLIW , . , CISC, - RISC. , " ", - .
, (Complete Instruction Set Computer - CISC), IBM IBM/360, 1964 . CISC- VAX. Intel ( 8 Pentium) .
CISC- :
, (Reduced Instruction Set Computer - RISC), , 70- XX , . 20/80, - 20% 80% , 80% 20% . IBM 801 - RISC- (. 6.9), 1979 .
RISC (David Patterson), , 1980 .
RISC- :
RISC- "" , .
(Very Long Instruction Word - VLIW) - . . . .
VLIW- -3. 256 500 . , . 7 - . , - , ( 1024 512 ). 8 () .
(Explicitly Parallel Instruction Computing - EPIC). EPIC Intel Hewlett-Packard. VLIW, (, VLIW-, ). :
, - .
(. . ). , . , .
IEEE 754. , . . 6.1 .
6.1.
6-7 | 4 | |
12-16 | 8 |
, , . . 6.2 , . . , , - .
6.2.
8 | 23 | |
11 | 52 |
, . . . , .
. a b- IEEE 754 {} > {b} + 8, {} - IEEE 754. := + nb ( n - ) . n := + b, ( ). nb, n := + (nb) .
.
. , . - . .
, , (http://cs.utep.edu/interval-comp/main.html). =[, '] y=[, ']. :
+ = [ + , ' + ']
- = [ - ' , ' - ]
* = [min{x'y', ', ', }, max('', ', ', }]
1 / = [1/', 1/] ( )
:
/ = * (1/)
. . , f () = ( - 1),
f([0, 1]) = [0, 1]([0, 1]-1) = [, 1] [-1, 0] = [-1, 0].
[-1/4, 0].
. , :
[ 1985] , , , . . - . , , "" , .
.
, , . - .
.
, (, ) , .
. . . . , :
.
, . .
- - , . . :
:
.
- , , . .
. . 6.10 , .
.
6.3.
( ) |
( ) |
|
3 | 32 | |
2- | 30 | 4 096 |
300 | 500 000 | |
() | 30 000 000 | 10 000 000 |
. , , [ 2001].
- . . .
. .
. . . DEC. - ; . , (. . 6.5.2).
, . ( ) . , , , .
, .
, , , - . .
- SPARC (Scalable Processor ARChitecture). Assembler , .
SPARC- 1985 Sun Microsystems Inc. RISC I, RISC II SOAR, 80- XX (. . 6.9).
, SPARC- RISC-. , :
:
SPARC- 32- . 32- SPARC-V8, 32 . 64- SPARC-V9.
SPARC-, , , .
Assembler . . 6.4 . .
6.4. SPARC-
%ri | i (0< i <3l) |
%gi (%r0-%r7) | i (0< i <7) |
%ii (%r24-%r31) | i (0< i <7) |
%li (%r16-%r23) | i (0< i <7) |
%oi (%r8-%r15) | i (0< i <7) |
%fi | i (0< i <3l) |
%sp | - (%o6) |
%fp | - ( ) (%i6) |
, , :
Assembler 8 (global) 24- . (in) %ii, (local) %ii (out) %oi . . (. 6.11). 3- 32-. , (floating point).
SPARC- 20 . . 6.5.
6.5. SPARC-
% (Program Counter) | |
%NPC (Next Program Counter) | |
%PSR (Processor State Register) |
Assembler :
- , /* */.
(. 6.6).
6.6. SPARC-
opcode [%reg1+const], %reg2 ( opcode [%reg1+%reg2],%reg3) | |
, , |
opcode %reg1, const, %reg2 ( opcode %reg1,%reg2,%reg) |
opcode address |
, , 13- . 6.2 .
6.2.
ld [%fp+68],%o0 ! %0 [%fp+68]
st %o0, [%fp-4] ! %0 [%fp-4]
add %i4,%o0,%i5 ! %i4 %0, %i5
add %i4,3,%i4 ! 3 %i4
(. 6.12) . , , (frame). . ( %sp) .
Assembler [SPARC 1994].
RISC- . SPARC- .
6.7.
ldub | |
ldsb | |
lduh | |
ldsh | |
ld | (32-) |
ldd | |
stb | |
sth | |
st | |
std |
(. 6.8) . , (, subcc).
6.8.
add | |
sub | |
and | "" |
andn | "" |
or | "" |
orn | "" |
xor | "" |
xnor | "" |
sethi 22- const 22 %reg:
sethi const,%reg
10 %reg . Assembler: %hi() %lo(), 22 10 , . 32- L (, ) %0, :
sethi %hi(L),%o0 or %o0,%lo(L),%o0
, Assembler set. set L, %o0 .
, st, (, %lo):
sethi %hi(L),%o0
st %10,[%o0+%lo(L)]
nop (no operation) sethi 0,%g0.
save restore .
save restore add, . save, 96 , :
save %sp,-96,%sp
. 6.9.
6.9.
ba | |
be | "" |
bne | " " |
bg | "" |
bge | " " |
bl | "" |
ble | " " |
call | |
jmpl |
, ( ). , %, %NPC, . , , . , . : .
- . . , % %5, %.
, , . , , , . .
ldstub [addr],reg;
swap [addr],reg.
SPARC- ( RISC-) , . SPARC-Assembler , , SPARC-. . 6.10.
6.10.
cmp %reg,%reg |
subcc %reg,%reg,%g0 |
dec %reg |
sub %reg,l,%reg |
inc %reg |
add %reg,1,%reg |
mov %reg,%reg |
or %g0,%reg,%reg |
neg %reg |
sub %g0,%reg,%reg |
not %reg |
xnor %reg,%g0,%reg |
restore |
restore %g0,%g0,%g0 |
ret |
jmpl %i7+8,%g0 |
( ) Assembler , , . . . 6.11.
6.11. Assembler
.section |
|
.size |
( ) |
.type |
|
.align |
( ) |
.skip |
|
.global |
, |
.word |
|
.double |
- Assembler, SPARC-Assembler, . , , . , Assembler , (, ) .
, .
.global main
main: save %sp,-96,%sp.
ret !
restore !
! , restore -
! ret.
, "Hello, world!", 6.3.
6.3. , "Hello, world!"
!
.section ".text"
.global main
.align 4 main:
save %sp,-96,%sp ! : (printf)
set string,%o0 ! sethi or
call printf
nop ! !
ret
restore !
!
.section ".rodatal"
.align 4
string:
.ascii "Hello, world!\n\000"
, Assembler. ( 6.4) Sun Microsystems Inc. Assembler ( 6.5).
6.4. C
#include <stdio,h>int counter(int i) { return(i); } int main(} ( int i; int s = 0; for (i=0; i<500; i++) s = s + counter(i); printf("%d \n", s); return 0; }
6.5. ,
.section ".bss",#alloc,#write Bbss.bss: .section ".data",#alloc,#write Ddata.data: .section ".rodata",#alloc ! ! CONSTANT POOL ! Drodata.rodata: .file "for.c" .section ".rodata1",#alloc .align 4 ! ! CONSTANT POOL ! .L104: .ascii "%d \n\000" .section ".text",#alloc,#execinstr /* 000000 0 */ .align 4 /* 000000 */ .skip 16 /* 0x0010 */ .align 4 ! FILE for.c ! 1 !#include <stdio.h> ! 2 !int counter(int i) { ! ! SUBROUTINE counter ! OFFSET SOURCE LINE LABEL INSTRUCTION .global counter counter: /* 000000 2 */ retl ! Result = %o0 /* 0x0004 */ nop /* 0x0008 0 */ .type counter, 2 /* 0x0008 0 */ .size counter,(.-counter) .section ".text",#alloc,#execinstr /* 000000 0 */ .align 4 ! 3 ! return(i); ! 4 ! } ! 5 lint main() { i ! SUBROUTINE main ! OFFSET SOURCE LINE LABEL INSTRUCTION .global main main: /* 000000 5 */ save %sp,-96,%sp ! 6 ! int i; ! 7 ! int s = 0; /* 0x0004 7 */ or %g0,0,%10 ! 8 ! for (i=0; i<500; i++) /* 0x0008 8 */ or %g0,0,%ll ! 9 ! s = s + counter(i); /* 0x000c 9 */ or %g0,0,%o0 .L900000207: /* 0x0010 9 */ call counter ! params = %o0 ! Result = %o0 /* 0x0014 */ add %11,1,%11 /* 0x0018 */ add %10,%o0,%10 /* 0x001c */ cmp %11,500 /* 0x0020 */ bl .L900000207 /* 0x0024 */ or %g0,%ll,%o0 ! 10 ! printf("%d \n", s); .L77000029: /* 0x0028 10 */ sethi %hi (.L104),%gl /* Ox002c */ add %gl,%lo(.L104),%o0 /* 0x0030 */ call printf ! params = %o0 %o1 ! Result = /* 0x0034 */ or %g0,%10,%o1 ! 11 ! return 0; /* 0x0038 11 */ ret ! Result = %i0 /* 3c */ restore %g0,0,%o0 /* 0x0040 0 */ .type main,2 /* 0x0040 0 */ .size main,(.-main)
SPARC- UltraSPARC Sun Microsystems Inc. UltraSPARC . .
Ultra Port Architecture - UFA , , (. 6.13). . UPA "-".
UltraSPARC , , SPARC-V9 (. 6.14). , , , , /, -, , . , , . 12 . : - , - .
, .
( ) . (http://www.parallel.ru).
:
. , , .
[ 1999].
, ,
. , ,
!
. . " "
- "-", [ 1999].
.
:
. , . , . . 6.15.
: , , , , , , , , , , (http://www.parallel.ru). .
, MIMD . , , .
.
- . . . (. 6.16).
.
, :
, - . , .
.
- ( ) . , , , (. 6.17).
.
[, 1989]. :
(Carrier Sense Multiple Access/Collision Detection CSMA/CD) [ 1990].
. - . . , .
- Ethernet. Ethernet IEEE 802.3.
, . . , , .
, . . - . , . , . . , . . , -, .
- - , , . .
. .
, - Token Ring. , Ethernet, - . .
Ethernet. , Ethernet:
Ethernet , . 90- XX . - Ethernet (51,2 ). , , .
. 6.18.
, .
- . , :
. 6.19.
, .
- - , .
- :
. 6.20.
, , . , .
() - .
- 100 .
6.6.3.4. Ethernet - (10Base-F)
- , . - .
, .
.
- XX . - - "".
- - , ,
.
- , , .
(-) Request for Comments (RFCs) (http://www.rfc-editor.org/). , , , , .
, , - (. . 7.2.3).
( , ) .
- ARPA (Advanced Research Projects Agency). , :
, :
1998 Forbes " " , :
. Apache (http://www.apache.org) Linux .
. 6.12 , .
6.12. ,
(1996 ) |
(2000 ) |
|
15 000 000 | 75 000 000 | |
45 000 000 | 300 000 000 | |
55 000 000 | 400 000 000 |
, , . , ( ) :
, . . . , " ", .
, Microsoft . 90- XX Netscape, Sun Microsystems Inc. . , .
( , ) c . (7-) .
, - .
.
1. , 1989- ., . . - .: , 1989.
2. 1990 - . : , , .- .: , 1990.
3. 1991 - : , , . . - .: , 1991.
4. 1986 - : . 3- . - .: , 1986.
5. 1999 - . . . - .: "", 1999.
6. 1978- . . . - .: , 1978.
7. 1995 - . Internet. - .: - BHV, 1995.
8. , 1996- ., . Internet. - .: "", 1996.
9. 1985 - . . 2- .- .: , 1985.
10. 2001 - . . - .: - " ", 2001.
11. 1990 - . . - .: , 1990.
12. 1996- . Internet ( ).- .: , 1996.
13. 1972 - . . . - .: 1972.
14. Paul 1994 - Richard P. Paul. SPARC architecture, assembly language programming, and C. Prentice-Hall, Inc. 1994.
15. SPARC 1994 - The SPARC Architecture Manual. Prentice-Hall, Inc. 1994.
10.11.2021 - 12:37: - Personalias -> WHO IS WHO - - _. 10.11.2021 - 12:36: - Conscience -> . ? - _. 10.11.2021 - 12:36: , , - Upbringing, Inlightening, Education -> ... - _. 10.11.2021 - 12:35: - Ecology -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> . - _. 10.11.2021 - 12:34: , , - Upbringing, Inlightening, Education -> , - _. 10.11.2021 - 09:18: - New Technologies -> , 5G- - _. 10.11.2021 - 09:18: - Ecology -> - _. 10.11.2021 - 09:16: - Ecology -> - _. 10.11.2021 - 09:15: , , - Upbringing, Inlightening, Education -> - _. 10.11.2021 - 09:13: , , - Upbringing, Inlightening, Education -> - _. |