Download de presentatie
GepubliceerdChristina Smit Laatst gewijzigd meer dan 10 jaar geleden
1
SOCS Hoofdstuk 2 Elektronica Transistorgeheugens
Geheugenmedia (hulpgeheugens) Organisatie Snelheid
2
Hoofdstuk 2 Elektronica Transistorgeheugens Geheugenmedia Organisatie
Snelheid
3
Elektronica Digitale Logica Begrippen uit de elektriciteit
Transistoren Schakelingen Schakelalgebra
4
Begrippen u/d elektriciteit
spanningsbron E + I = E R electronen e stroom I weerstand R
5
Begrippen u/d elektriciteit
Elektrische lading Eenheid: Coulomb C Atoom Positieve kern Negatieve elektronen Elektrisch veld Kracht die eenheidslading zou ondervinden Elektrische spanning Potentiaalverschil tussen 2 punten Is arbeid nodig om eenheidslading van het ene punt naar het andere te verplaatsen Eenheid: Volt V
6
Begrippen u/d elektriciteit
Elektrische stroom Transport van ladingen doorheen medium Stroomsterkte = hoeveelheid ladingen die zich per tijdseenheid door een doorsnede van de geleider verplaatsen Eenheid: ampère A Elektronenstroom = verplaatsing van electronen Wet van Ohm Stroomsterkte doorheen geleider evenredig met de spanning over de geleider Weerstand: Eenheid: ohm
7
Begrippen u/d elektriciteit
spanningsbron E + I = E R electronen e stroom I weerstand R
8
Geleiders vs Isolatoren
Elektronen zwak gebonden aan atomen Bewegen gemakkelijk doorheen materiaal Isolatoren: geleiden niet Half-geleiders (Si, Ge) + vreemde atomen (Sb, As, P, …) p-type: plaats voor extra elektronen n-type: elektronen op overschot sandwich structuur
9
Transistor collector n-type basis p-type n-p-n Er bestaat ook p-n-p
emitter
10
Transistor Vuit Vin +Vcc C B Veel toepassingen:
o.a. snelle binaire schakeling E 0V
11
Transistor 0V 5V 5V 0V +5V +5V collector- emitter stroom basisstroom
TRANSISTOR = gesloten TRANSISTOR = open
12
Transistor NIET poort Vin Vuit 0 +Vcc +Vcc 0 Vuit Vin Vuit onwaar waar
waar onwaar Vin NIET poort
13
Transistor NOF poort V1 V2 Vuit 0 0 +Vcc +Vcc 0 0 0 +Vcc 0 +Vcc +Vcc 0
14
Transistor NEN poort V1 V2 Vuit 0 0 +Vcc +Vcc 0 +Vcc 0 +Vcc +Vcc
15
MOS Transistor Metal Oxyde Semiconductor PMOS, NMOS, CMOS Voordelen:
minder plaats op chip verbruiken minder energie compactere minder storend t.o.v. buren schakelingen goedkoper te maken Nadeel: trager
16
Schakelingen NEN NOF in uit in1 in2 uit in1 in2 uit 0 1 0 0 1 0 0 1
in1 in2 uit in1 in2 uit NIET Basis-operaties EN OF
17
Schakelalgebra Logische variabele: waar (1) of onwaar(0)
Basisbewerkingen: EN(.), OF(+), NIET( ) Logische functie in n variabelen voorstellen via waarheidstabel A B A B (XOR) A.B + A.B
18
Schakelalgebra A B A B A.B A.B A.B+A.B AB 0 0 1 1 0 0 0 0
A A.B A B B A.B
19
Schakelalgebra Vereenvoudigingen Wet EN-vorm OF-vorm
Identiteit 1.A = A 0+A=A Nulwet 0.A = 0 1+A=1 Idempotentie A.A = A A+A=A Inversie A.A = 0 A + A = 1 Commutatieve A.B = B.A A+B = B+A Distributieve A+B.C = (A+B).(A+C) A.(B+C) = A.B+A.C Absorbtie A.(A+B) = A A+A.B = A De Morgan A.B = A + B A+B = A . B
20
Schakelalgebra Voorbeeld: OF
A B A + B A.B + A.B + A.B = A.B + A.(B+B) [distributie] = A.B + A [inversie] = A.B + A [identiteit] = (A+A).(B+A) [distributie] = 1.(B+A) [inversie] = B+A [identiteit] A.B + A.B + A.B
21
Schakelalgebra Elke schakeling kan met uitsluitend NEN-poorten (NOF-poorten) gemaakt worden A A A A.B B A A+B B
22
Geïntegreerde Schakelingen
-O2 smelten ±15cm oxidatie lichtgevoelige laag masker (negatief) + belichting etsbad ontwikkelbad
23
Geïntegreerde Schakelingen
enz. oxidatie dopering tot n/p-type pinnetjes = chips testen verzagen behuizing
24
Geïntegreerde Schakelingen
Classificatie Klasse #poorten SSI Small Scale Integration 1..10 MSI Medium Scale Integration LSI Large Scale Integration VLSI Very Large Scale Integr. >
25
Hoofdstuk 2 Elektronica Transistorgeheugens Geheugenmedia Organisatie
Bipolaire FLIP-FLOP SRAM en DRAM Leesgeheugens Geheugenmedia Organisatie Snelheid
26
Bipolaire Flip-Flop Schakeling met 2 stabiele toestanden 1 1 1 1 1 1
27
Bipolaire Flip-Flop Lezen “0” “1” 1 Bit 1 1 1
28
Bipolaire Flip-Flop Schrijven 1 1 1 1 1 1 1 1 1 1 “1 schrijven”
1 1 1 1 1 1 1 1 “1 schrijven” “0 schrijven”
29
= puls = normaal 0, tijdens “schrijven” 1
Bipolaire Flip-Flop 1-bit geheugencel B P = puls = normaal 0, tijdens “schrijven” 1
30
Transistorgeheugens Matrixstructuur Individuele bits
Adresdecodering (selectie van bits) …
31
SRAM Static RAM Bouwstenen: Bipolaire flip-flops Snelste Duurste
Gebruik: CMOS SRAM (batterijvoeding: weinig energie) Voorgeheugens (caches: snelheid)
32
FET = Field Effect Transistor
DRAM Dynamic RAM Bouwstenen: Condensatoren (20 fF = 20 x F) Geladen: “1” Ontladen: “0” woordlijn FET FET = Field Effect Transistor bitlijn
33
DRAM Nadelen: Lezen = destructief (dus herschrijven)
Lekstroom (dus opfrissen) 10 ms
34
Vergelijking Lees Resultaat Lees toegangstijd geheugencyclustijd
SRAM DRAM Toegangstijd … 10 ns … ns Cyclustijd … 12 ns … ns Capaciteit # 100 kbits Mbit Resultaat Lees toegangstijd geheugencyclustijd (Herschrijven) (Opfrissen) Uitdoven parasietsignalen Decodering adres Schakeltijd van poorten
35
Optimisaties Reductie van geheugencyclustijd Geheugenspreiding
2 geheugenmodules EDO (Extended Data Output) Lezen van opeenvolgende woorden SDRAM (Sychronous burst DRAM) Gelijkaardig even adressen oneven adressen
36
SIMM en DIMM SIMM = Single In-line Memory Module
DIMM = Dual In-line Memory Module (2-zijdig)
37
Leesgeheugens (ROM) ROM = Read Only Memory Verschillende varianten:
ROM (bij constructie gevuld) PROM (Programmable ROM) slechts eenmaal beschrijfbaar (speciaal apparaat) EPROM (Erasable PROM) kan gewist worden via UV-licht EEPROM (Electrically EPROM) ter plaatse wissen FLASH: variante van EEPROM (grote blokken wissen) venster
38
Hoofdstuk 2 Elektronica Centraal Geheugen (RAM) Geheugenmedia
Magneetschijven Optische Schijven Magneto-Optische Schijven Magneetbanden/Cassettes Organisatie Snelheid
39
Magneetschijven Harde Magneetschijf Geperfectioneerde magneetschijven
Soepele Schijven Alternatieven
40
plaat (glas/aluminium)
Harde Magneetschijf Fysisch voorkomen holle as plaat (glas/aluminium) t/min 5400 7200 cm cm < 3 cm magnetiseerbare laag
41
Harde Magneetschijf Werking lezen schrijven I I 0 0 1 1 0 0 …
geleider in bewegend magnetisch veld m … 0,1 .. 0,2 m
42
Harde Magneetschijf
43
magnetiseerbare laag 2.5 m
Harde Magneetschijf menselijk haar 50 m lees/schrijfkop vlieghoogte 0.5 m rookdeeltje 5 m vingerafdruk 3 m magnetiseerbare laag 2.5 m
44
Harde Magneetschijf Lees/schrijfkop zweven boven oppervlak (< 1 m)
stofvrij zoniet headcrash Winchester-schijven platen + koppen in hermetisch afgesloten doos bij stilzetten: landen op landingszone
45
Harde Magneetschijf Spoor = { sectoren } sector spoor HD … data … ECC
512b .. 4kb data HD … data … ECC # sectoren / spoor = vast (niet optimaal) of = neemt toe naar buiten sporen/cm spoorbreedte = m
46
Harde Magneetschijf Werking kam lees/schijfkop
cilinder = { sporen onder lees/schrijfkoppen voor bep. stand kam }
47
Harde Magneetschijf
48
Harde Magneetschijf Lees/Schrijf (CILINDER, KOP, SECTOR)
Positioneren (= zoektijd, seektime) spoor-spoor: 1 ms gemiddeld: 10 ms Rotationele wachttijd (= latency time) wachten tot juiste sector onder de kop gemiddeld = ½ toer ( ms) Lezen/Schrijven debiet = Mb/s (kortstondig!)
49
Geperfectioneerde Schijven
Hogere Snelheid Hogere Betrouwbaarheid tegen verlies van informatie RAID Redundant Array of Inexpensive Disks Redundant Array of Independant Disks Controller Controller
50
RAID technologie Data 0 Data 2 Data 1 Data 3 Strip 0 Strip 1 Strip 2
disk striping I/O in parallel Strip 4 Strip 5 Strip 6 Strip 7 ... ... ... … Strip 0 Strip 1 Strip 2 Strip 3 Strip 0 Strip 1 Strip 2 Strip 3 Strip 4 Strip 5 Strip 6 Strip 7 Strip 4 Strip 5 Strip 6 Strip 7 ... ... ... … ... ... ... … RAID 1 disk striping disk mirroring schrijven duurt even lang lezen kan sneller
51
RAID technologie Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 ... ... ...
… ... ... ... RAID 2 Hamming code (4 bits 7 bits) bits in parallel armpositie & rot. positie gesynchroniseerd Bit 1 Bit 2 Bit 3 Bit 4 Pariteit ... ... ... … ... RAID 3 Pariteitsbit (4 bits 5 bits) bits in parallel armpositie & rot. positie gesynchroniseerd
52
RAID technologie Strip 0 Strip 1 Strip 2 Strip 3 P0-3 RAID 4
disk striping pariteits-strip disk crash: herstel 1 strip wijzigen: 2 x Lezen + 2 x Schrijven Strip 4 Strip 5 Strip 6 Strip 7 P4-7 ... ... ... … ... Strip 0 Strip 1 Strip 2 Strip 3 P0-3 RAID 5 = RAID 4 verspreid pariteit strip Strip 4 Strip 5 Strip 6 P4-7 Strip 7 ... ... ... … ...
53
Soepele Schijven Floppy Disk, Diskette Afmetingen Kop raakt oppervlak
Sleet + Warmte Start /Stop: ±½ s
54
Soepele Schijven
55
Magneet Schijven Harde Magneetschijf Geperfectioneerde magneetschijven
Soepele Schijven Alternatieven: ZIP (100MB/250MB), JAZ (1GB/2GB), SuperDisk (120MB) (Imation) HiFD (100MB) (Sony) ... Drive compatibel met 3.5” FD
56
Optische Schijven Voorloper: Video-disk (30 cm) Audio CD CD-ROM CD-R
CD-RW DVD (DVD-ROM, DVD-R, …)
57
Audio CD 1980 (Philips & Sony) 12 cm , 1.2 mm dik Informatie Digitaal
16-bit sampling, 44,4 kHz Red Book tot 74 min. muziek
58
Compact Disc Productie: branden van putjes in glasplaat
maken van matrijs persen van CD dunne laag aluminium laklaag label
59
Compact Disc Afspelen: m.b.v. laser infrarood 0.78 m
60
Compact Disc
61
Compact Disc 1: overgang, 0: geen overgang
62
Compact Disc Spiraal (binnen naar buiten)
omwentelingen (± 600 per mm) Constante bitstroom 530 T/min 200 T/min = Constant Linear Velocity
63
CD-ROM 1984 (Philips & Sony) CD voor opslag van data: CD-ROM
Compact Disc, Read-Only Memory Compatibel met audio CD Yellow Book Formaat van Data Extra Foutenbescherming
64
CD-ROM ... Symbool: 8 bits 14 bits 42 symbolen Frame (588 bits) ...
24 data bytes rest: fouten+synch. ... 98 frames 00ffffffffffffffffffff00 min:s:sect:mode Sector Mode 1 Mode 2 H DATA ECC 16 bytes bytes bytes H DATA 16 bytes bytes
65
CD-ROM Foutencontrole: 3 niveaus Per symbool (1-bit fout)
Per frame (# opeenvolgende fouten) ev. per sector (Cross Interleaved Reed-Solomon code) Efficientie: 98 x 588 bits = bits x 8 = bits
66
CD-ROM Capaciteit: Debiet: Zoektijd:
± sectoren (550 MB MB) Debiet: 75 sect. / s = 150 kB (mode 1) = 171 kB (mode 2) x2, x4, …, x32, … Hogere snelheden CAV (constant angular velocity) aan binnenzijde Zoektijd: controller: berekening van plaats + zoeken 100 ms
67
CD-I Compact Disc, Interactive Philips, 1986 Speler verbonden met TV
MPEG video, geluid, … Green Book Toepassing: Spelletjes Educatieve programma’s
68
CD-R Compact Disc, Recordable 1989 WORM, Write-Once, Read Many
Groef met sinusoidale rand (snelheid) Uitzicht: Goudkleurig i.p.v. zilverkleurig Label Beschermlaag Reflecterende Au-laag Doorzichtige Kleurstof Substraat 1.2 mm
69
CD-R Schrijven: Lezen: Beschrijven: Laser: Hoog vermogen (verkleuring)
Laser: Laag vermogen (donkere plek: minder reflectie) ook te lezen op gewone CD-ROM lezen Beschrijven: in een continue operatie beschrijven, zonder stoppen
70
CD-R Orange Book Toepassing: Piraterij! CD-R
CD-ROM/XA (incrementeel beschrijven) Toepassing: PhotoCD Backup Piraterij! verkeerde lengte, verkeerde ECC, …
71
CD-RW Compact Disc, ReWritable
Zoals CD-R, kleurstof vervangen door legering twee stabiele toestanden: kristallijn & amorf
72
CD-RW Schrijven: Lezen: Duurder dan CD-R (kan niet gewist!)
Laser: hoog vermogen legering smelt, koelt af tot amorf Laser: medium vermogen legering omgezet naar kristallijn Lezen: Laser: laag vermogen kristallijn: veel reflectie amorf: weinig reflectie Duurder dan CD-R (kan niet gewist!)
73
DVD Digital Video Disk, Digital Versatile Disk
Zelfde formaat CD-ROM (120 mm schijf) Capaciteit: 4.7 GB Debiet: 1.4 MB/s CD DVD
74
DVD Compressie: MPEG-2 (4 Mbps) Audio Films
afhankelijk van detail & hoeveelheid beweging Audio 24-bit sampling, 96 kHz DigitalSurround (5 kanalen + 1 subwoorfer-kan.) Films meerdere talen (<= 8) + ondertiteling meerdere verhaallijnen (te selecteren) meerdere gezichtspunten kinderslot
75
DVD 4 Formaten: single-sided, single-layer 4.7 GB
single-sided, dual-layer 8.5 GB double-sided, single-layer 9.4 GB double-sided, dual-layer 17 GB Semi-reflectieve laag Aluminium reflector
76
Magneto-Optische Schijven
Legering Boven Curiepunt (Tc): magnetisatie wijzigen Onder Curiepunt: magnetisatie bevroren Schrijven: Lezen: Kerr effect Concentrische sporen, sectoren, CAV Verwijderbaar medium, vaak 5.25” laser laser polarisatie B
77
Magneto-Optische Schijf
78
Magneetbanden Spoel-tot-spoel 1”, 1/2” breed, 2400 ft lang
capaciteit: … 180 MB ... 9 sporen (1 byte + pariteit) lees en schrijf koppen
79
Magneetbanden Blokken van variabele lengte hiaat (½ - 1”): start/stop
dichtheid: B/duim, 6250 B/duim debiet: tot 3 MB/s terugspoelen: 50 s tot 3 min hiaat
80
Cassettes
81
Cassettes Cartridge vaak streaming mode
blokken van ½kB .. 1 kB met heel klein hiaat backup: data compressie (tot 2 x zoveel op tape) sporen vaak serieel beschreven (serpentine recording)
82
Cassettes Types ½” cartridge ¼” cartridge (QIC) vooral op PCs
4 GB GB 1 MB/s .. 5 MB/s ¼” cartridge (QIC) vooral op PCs 400 MB .. 4 GB 125 kB/s MB/s heel veel incompatibele formaten
83
Cassettes Types (helical scan) 8 mm (videoband) 4 mm (DAT)
3 GB GB 500 kB/s .. 6 MB/s 4 mm (DAT) 2 GB GB 50 kB/s .. 1 MB/s
84
Massageheugens JukeBox met CDs Speciale Cassette lader 200 CDs
20 Cassettes
85
Hoofdstuk 2 Geheugenmedia Organisatie Snelheid Bussen Pijplijnen
Voorgeheugens Snelheid
86
Harde Schijf Bestuurder
Bussen Transport van gegevens tussen lokaties serieel vs parallel (8, 16, 32, 64, …) Implementatie punt-tot-punt verbinding (duur!) gemeenschappelijke verbinding (bus) RAM ... CPU Video Bestuurder Harde Schijf Bestuurder CD-ROM Bestuurder
87
Bussen Verschillende lijnen Voorbeelden Adressen Gegevens
Controlesignalen (Opdrachten) Voorbeelden (E)ISA (Extended Industry Standard Architecture) PCI (Peripheral Component Interconnect) ...
88
Bussen ... RAM PCI bridge CPU SCSI bus PCI bus ISA bridge ISA bus
SCSI Schijf SCSI Bestuurder Video Bestuurder PCI bus ISA bridge Geluid kaart Drukker Bestuurder Modem ISA bus ...
89
Interne bussen Registers Rekeneenheid
90
Bussen Bus breedte # adreslijnen # datalijnen
20 lijnen: max. 1M (PC/XT) 24 lijnen: max. 16 M (ISA) 32 lijnen: max. 4G (EISA/PCI) 64 lijnen: max. 16 E (PCI) # datalijnen 8, 16, 32, 64 lijnen ev. 32 bits ophalen over 8-bit bus = 4 x lezen multiplexed bus: adres/datalijnen gemeensch.
91
Bussen Participanten + Meester = apparaat dat comm. initieert
CPU, DMA-apparaat, ... Slaaf = andere partij geheugen, ... RAM CPU + Lees xyz = Bus cyclus Data
92
Bussen Werking: Bus Protocol: Synchroon Asynchroon Hoe bus werkt
op kadans van een klok bus cyclus = geheel # klokcycli ISA (8.33 Mhz), PCI (33 MHz/66MHz) Asynchroon bus toegang slechts zo lang als nodig Bus Protocol: Hoe bus werkt Hoe “meester” worden, Welke signalen + Timing ...
93
Synchrone Bus MIN MAX ADRES DATA MREQ READ WAIT (Geheugen)
94
Bus Arbitratie Hoe “meester” worden Gecentraliseerd Gedecentraliseerd
schakeling in CPU, aparte arbiter chip, … Gedecentraliseerd aanvraag Arbiter OK OK NOK NOK App. 1 App. 2 App. 3 App. 4
95
Bus Cycli Lees cyclus Schrijf cyclus Block transport
Meester: Lees xyz Slaaf: Data Schrijf cyclus Meester: Schrijf data xyz Slaaf: OK Block transport Meester: Lees xyz ... Slaaf: Data, data, ... Lees/Wijzig/Schrijf cyclus Meester: Lees xyz Slaaf: Data Meester: Schrijf Data* xyz Slaaf: OK Interrupt cyclus ...
96
Pijplijnen Soort lopende band in processor HIA.w R1,10 OPT R1,100
BIG R1,2(R3+) LEZ DRU Analyseer HIA.w R1,10 OPT R1,10 BIG R1,2(R3+) LEZ RAM Voer uit Haal operand op Bereken adres DRU
97
Pijplijnen Complex! Indexatie sprongbevelen
voorspellen, meerdere pijplijnen Compiler: herordenen van instructies inlassen van NOP HIA.w R1,10 OPT R3,100 BIG R1,2(R3+) LEZ DRU
98
Voorgeheugens RAM relatief traag t.o.v. CPU
Extra snel voorgeheugen (cache memory) RAM CPU cache SRAM Kopie van gedeelte van RAM DRAM
99
Voorgeheugens RAM CPU a RAM CPU b Lees a in VG? JA!
Lees b in VG? NEE! CPU b
100
Voorgeheugens Lokaliteitsprincipe Voorgeheugen lokaliteit in tijd
x nodig op tijd t x nodig op tijdstip t+dt lussen, tussenresultaten lokaliteit in ruimte x nodig op tijdstip t x+dx nodig op tijdstip t+dt programma’s, rijen, velden van records, … daarom: lijnbreedte (8 bytes, 16 bytes, …) Voorgeheugen 90% .. 98% succes!
101
Voorgeheugens Ontwerpkeuzen: grootte (16 kB, 32 kB, … 512 KB, …)
lijnbreedte (8B, 16B, 32B, …) hoeveel tegelijk ophalen uit RAM hoe georganiseerd gemeenschappelijk VG versus gescheiden VG voor data en instructies aantal voorgeheugens (1, 2 of meer)
102
Voorgeheugens Organisatie direct afgebeeld voorgeheugen
elk RAM “lijn” heeft vaste plaats in het VG tag duidt aan over welke geheugen-lijn het gaat (de meest beduidende bits van het adres) associatieve voorgeheugens een RAM lijn kan om het even waar in het VG tag duidt aan over welke geheugen-lijn het gaat associatief: alle tags tegelijk vergelijken!
103
Voorgeheugens Direct afgebeeld voorgeheugen tag VG =? adres RAM
104
Voorgeheugens Associatieve Voorgeheugens tag VG =? adres RAM
Tegelijk vergelijken! VG =? adres RAM
105
Voorgeheugens Schrijven in VG wegschrijven doorheen het VB
onmiddellijk hoofdgeheugen aanpassen uitgesteld wegschrijven alleen in VG aanpassen, pas later in hoofdgeheugen schrijven als niet in VG alleen in hoofdgeheugen eerst in VG brengen
106
Voorgeheugens Performantie ??? Kostprijs ???
Toegangstijden: TRAM, TVG Succesratio: s Gemiddeld: TG = s * TVG+ (1-s) * TRAM Voorbeeld: TRAM= 100 ns TVG = 10 ns s = 95% Tgem = 0.95 * * = = 14.5 ns Kostprijs ??? Capaciteiten: CRAM, CVG Prijs: KRAM, KVG Totaal: K = CRAM* KRAM+ CVG * KVG Voorbeeld: CRAM = 128 MB KRAM = 250 BEF/MB CVG = 128 kB KVG = BEF/MB K = 128 * /8 = = 7 x sneller, slechts 6 % duurder
107
Voorgeheugens Meerdere niveaus RAM Cache L2 CPU Cache L1 16 kB 512 kB
128 MB
108
Hoofdstuk 2 Geheugenmedia Organisatie Snelheid MIPS MFLOPS
Experimenteel testen
109
Snelheid MIPS MFLOPS Merk Op: Million Instructions Per Second
Million Floating Point Instructions Per Second Merk Op: niet alle instructies even veel tijd! niet alle instructie-sets even uitgebreid niet altijd uitgebreide datatypes MIPS/MFLOPS = relatieve maat binnen computerfamilie
110
Snelheid Experimenteel testen Gebruikersstandpunt Standaard testen
Whetstone: tech. wetenschappelijke programma’s Dhrystone: zonder bewegende komma operaties SPEC: { programma’s van verschillende constructeurs } Gebruikersstandpunt Responstijd = tijd eerste resultaat - tijd opdracht ingegeven Verblijftijd = tijd afgewerkt - tijd opdracht ingegeven Doorvoer = # afgewerkte programma’s / tijdseenheid
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.