Süsteemikiip

**Süsteemikiip** (SoC – *System on a Chip*) on ühest või mitmest protsessori tuumast ja teistest funktsionaalsetest moodulitest koosnev kompaktselt integreeritud süsteem. Selline integratsioon sarnaneb väga mikrokontrolleri disainiga, kuid pakub tunduvalt suuremat arvutusvõimsust. SoC sisaldab protsessorit (CPU), mälu, sisendi/väljundi ja andmesalvestuse juhtimise funktsioone. Süsteemikiibile võib olla ka paigaldatud graafikakaart (GPU), Wi-Fi, raadio ja Bluetooth-ühenduse võimekus. Selline disain toob kaasa madalama energiatarbimise ja väiksema kiibipinna vajaduse võrreldes tavalisemate mitme kiibi arhitektuuridega, kuid see vähendab süsteemi modulaarsust ja komponentide asendatavust. 

Suure jõudlusega SoC-e kasutatakse sageli koos spetsiaalse mäluga, näiteks LPDDR, ja välkmälukiipidega, nagu eUFS või eMMC, mida võib paigutada otse SoC-i peale, PoP (*package-on-package*) meetodiga, või asetada trükkplaadile selle lähedusse. Mõned SoC-id töötavad koos spetsialiseeritud kiipidega, näiteks mobiilimodemitega, mis võimaldab seadmel ühendada mobiilsidevõrku, nagu nutitelefon.

## Süsteemikiibid mobiilsetes seadmetes
SoC-d on kõikjal mobiilsetes seadmetes, kus kompaktsus ja energiatõhusus on väga tähtis mängivad SoC-kiibid üliolulist rolli õhukese ja kompaktse disainiga suure jõudluse võimaldamisel. Nendel töötavad nutitelefonid, tahvelarvutid ja nutikellad. Integreerides kõik alates töötlemisvõimsusest kuni sideprotokollideni (nt 4G, 5G, Wi-Fi ja Bluetooth) ühele kiibile, suudavad mobiilseadmed pakkuda sujuvat jõudlust, säästes aku kasutusaega. Need SoC-süsteemid on kriitilise tähtsusega seadmete jaoks, mis peavad tasakaalustama rakenduste töötlemiskiirust, energiatõhusust ja mitme ülesandega töötamise võimalusi. See on lahendus, mis tagab kõigi nende elementide tõhusa koostöö, säilitades samal kaasaskantava disaini. Graafiliste väljunditega seadmetes on olemas integreeritud graafikaprotsessor (GPU).

## Internetti ühendatud seadmed
Süsteemikiibid teevad mugavaks kõiksugused internetiga ühendatud nutikad seadmed nagu termostaadid, valgustus ja tootmise automatiseerimissüsteemid, nõuavad kompaktset disaini ja võimalust töödelda andmeid tõhusalt, tarbides samal ajal minimaalset energiat. SoC-tehnoloogia teeb selle võimalikuks, integreerides vajalikud sideliidesed, andurid ja töötlemisvõimsuse ühele kiibile. See võimaldab seadmetel koguda andmeid, teostada reaalajas töötlemist ja suhelda interneti või muude sidevahenditega ühendatud seadmetega, ilma et oleks vaja eraldi töötlusüksust.

## Autotööstus
Süsteemikiibil olev süsteem võimaldab autotootjatel integreerida ühele kiibile mitu alamsüsteemi – näiteks kaamerate pilditöötlus ja radar. See kompaktsus on kriitilise tähtsusega tänapäevastes sõidukites, kus ruumi on vähe ning reaalajas otsuste tegemiseks on vajalik suurem arvutusvõimsus. SoC-tehnoloogia abil saavad autosüsteemid reageerida kiiremini ja usaldusväärsemalt, vähendades samal ajal üldist energiatarbimist, aidates kaasa tõhusamate ja nutikamate sõidukite arendamisele.

## Puudused
Süsteemikiipidel on puudusteks esialgsed projekteerimis- ja arenduskulud on väga kõrged. Isegi üksainus transistori või süsteemi kahjustus võib osutuda väga kulukaks, kuna terve plaat tuleb ära visata, mis tekitab kasutajatele lisakulusid. Lisaks ei saa sellest väga integreeritud keerulisest seadmest välja vahetada konkreetset seadet, muudatuste tegemiseks tuleb välja vahetada kogu SoC.

## Ajalugu
1960. Tekkisid esimesed integreeritud skeemid (IC). Need IC-d koondasid mõned transistorid räniplaadile, asendades suured ja energiakulukad vaakumtorud. Mikroprotsessorite, nagu Inteli 4004, väljatöötamine 1970. aastatel välja tulnud Intel 4004 peetakse esimeseks kommertskasutusse jõudnud mikroprotsessoriks. Siiski ei olnud Intel 4004 veel süsteemikiip. Kuigi need varajased mikroprotsessorid olid oma aja kohta revolutsioonilised, piirdus nende ulatus ainult arvutamisega. Teised kriitilised komponendid, nagu mälu ja sisend/väljund (I/O) kontrollerid, olid endiselt eraldiseisvad üksused. SoC-i puhul on kõik need osad ühel kiibil koos, et moodustada iseseisev, täisfunktsionaalne süsteem. Intel 4004 oli aga oluline eelkäija, mis näitas, et terve protsessor saab töötada ühel väikesel kiibil.

1980. ja 1990. aastatel levisid rakendusspetsiifilised integraallülitused (ASIC-id) ja mikrokontrollerid. Need arengud võimaldasid kohandada kiipe konkreetsete ülesannete täitmiseks, ühendades samale kiibile näiteks mälu, lihtsama loogika ja sisend-väljundfunktsioonid. Just sellest hakkas arenema ühe kiibi lahenduse ehk "ühe kiibi süsteemi" idee. Personaalarvutite, mobiiltelefonide ja muu tarbeelektroonika levik tõi samal ajal esile mitmest kiibist koosnevate süsteemide piirangud. Mida väiksemaks seadmed muutusid, seda rohkem hakkasid rolli mängima energiatarve, soojuse eraldamine ja füüsiline ruum. See kõik lõi vajaduse suurema integratsiooni järele ja pani aluse tänapäevaste süsteemikiipide (SoC-de) arengule.

1990. aastate lõpuks ja 2000. aastate alguseks ilmusid esimesed tõelised süsteemikiibid. Need kiibid ühendasid endas protsessori, mälu, sisendi-väljundi kontrollerid ning spetsialiseeritud funktsioonid, nagu graafikamoodulid või sideühendused. Märkimisväärne näide olid ARM-põhised SoC-d, mida kasutati varastes mobiiltelefonides – need pakkusid head tasakaalu jõudluse ja energiatõhususe vahel.

## Süsteemikiibid (SoC)

### Mikroprotsessoripõhised (''Microprocessor-based'')
Tööd juhib mikroprotsessor. Neid leidub tavaliselt nutitelefonides, tahvelarvutites ja suure jõudlusega arvutiseadmetes. Märkimisväärne näide on Qualcommi Snapdragoni seeria, mis integreerib CPU, GPU, modemi ja muud välisseadmed, et pakkuda kõrget jõudlust madala energiatarbimisega.

### Mikrokontrolleripõhised (''Microcontroller-based'')
Mikrokontrollereid aetakse sageli segamini SoC-dega nende sarnaste funktsioonide tõttu. Mikrokontrolleripõhised SoC-id on loodud lihtsamate ülesannete jaoks ja neid kasutatakse tavaliselt manussüsteemides, nagu koduseadmed ja autotööstuse rakendused. Need sisaldavad olulisi komponente, nagu mälu ja sisend-/väljundpordid ühel kiibil, muutes need sobivaks kulutundlike ja vähese energiatarbega rakenduste jaoks.

### Rakenduspõhised (''Application-specific'')
Need SoC-d on kohandatud konkreetsete rakenduste jaoks, nagu tehisintellekt (AI), masinõpe või signaalitöötlus. Need optimeerivad jõudlust konkreetsete ülesannete jaoks, kasutades traditsiooniliste CPU-de ja GPU-de kõrval spetsiaalseid arvutusmooduleid, nagu tensori töötlemisüksused (TPU-d). See kohandamine suurendab sihtrakenduste tõhusust ja jõudlust.

### Segasignaaliga (''Mixed-signal'')
Segasignaaliga SoC-d integreerivad analoog- ja digitaalkomponendid ühele kiibile, et töödelda erinevaid signaale. Seda tüüpi kasutatakse tavaliselt helitöötluses, sideseadmetes ja andurirakendustes, kus mõlemat tüüpi signaalid on funktsionaalsuse jaoks olulised.

### Süsteem moodulis (''System on Module'')
Kuigi mooduli süsteem ei ole traditsiooniline SoC, integreerib see tervikliku arvutussüsteemi ühele plaadile, mille tuumaks võib olla SoC. SoM-e kasutatakse sageli tööstuslikes rakendustes ja Interneti-seadmetes, et pakkuda kompaktset lahendust, mida saab hõlpsasti suurematesse süsteemidesse integreerida.

### Eriotstarbelised (''Custom'')
Suuremad ettevõtted arendavad kohandatud SoC-sid, et vastata nende toodete spetsiifilistele nõuetele. Need süsteemid on optimeeritud teatud ülesannete jaoks, nagu kiire andmetöötlus või kaasaskantavate seadmete väike energiatarve. Eriotstarbelised SoC-d on populaarsed sellistes tööstusharudes nagu autotööstus ja tarbeelektroonika. Süsteemikiibile lisatakse erinevad komponendid selleks, et pakkuda võimalikult palju funktsionaalsust võimalikult väiksel pinnal ja võimalikult energiatõhusalt. Eri osadel on igaühel kindel roll ja need on lisatud konkreetsete vajaduste täitmiseks.

## Komponendid
### Protsessor (CPU)
Kõige kesksem komponent on protsessor ehk CPU, kuna ilma selleta ei saaks süsteem üldse toimida. CPU käitleb loogika- ja arvutusülesandeid ning koordineerib ülejäänud kiibi tööd.

### Graafikaprotsessor (GPU)
Integreeritud graafika on protsessorisse sisseehitatud GPU. Integreeritud graafika riistvara ei kasuta graafika/video jaoks eraldi mälu. Selle asemel kasutab GPU süsteemimälu, mida jagatakse protsessoriga. Kuna integreeritud graafika on protsessorisse sisse ehitatud, kasutab see tavaliselt vähem energiat ja selle tulemusena tekitab vähem soojust ehk seadmete akud kestavad kauem. Integreeritud graafikaga protsessoreid leidub kõige sagedamini väiksemates süsteemides, nagu sülearvutid ja Intel® NUC-id.

Integreeritud graafikakaart kasutab töötamiseks osa süsteemimälust. CPU suhtleb graafikakaardiga läbi kiire siini, PCI Expressi, kaudu. Graafikakaart kasutab andmete salvestamiseks ja töötlemiseks juurdepääsuks süsteemi RAM-i. CPU ja graafikakaart jagavad sama mälukontrollerit, seega peab graafikakaart taotlema protsessorilt juurdepääsu süsteemimälule, mis võib süsteemi üldist jõudlust aeglustada.

Kui tegelete ressursimahukate ülesannetega, nagu mängimine, videotöötlus ja 3D-modelleerimine, on vaja suure jõudluse tagamiseks eraldiseisvat spetsiaalset graafikakaarti. Sellised graafikakaardid pakuvad rohkem töötlemisvõimsust, rohkem mälu ja suuremat ribalaiust, võimaldades kiiremat ja sujuvamat graafika renderdamist. Suurem võimekus tuleb koos suuremate ja energiakulukamate komponentidega, mille paigutamine väikestesse seadmetesse oleks keeruline ja ebavajalik.

### Signaaliprotsessor (DSP)
Digitaalsed signaaliprotsessorid (DSP) võtavad vastu reaalseid signaale, nagu hääl, heli, video, temperatuur, rõhk või asend, mis on digiteeritud, ja töödeldud. DSP on loodud matemaatiliste funktsioonide nagu "liitmine", "lahutamine", "korrutamine" ja "jagamine" väga kiireks täitmiseks.

Signaale tuleb töödelda nii, et nendes sisalduvat teavet saaks kuvada, analüüsida või teisendada teist tüüpi signaalideks, mis võivad olla kasulikud. Reaalses maailmast tuvastavad analogsensorid signaale, nagu heli, valgus, temperatuur või rõhk. Seejärel analoog-digitaalmuundurid muudavad saadud signaali binaari. Siit edasi võtab DSP üle digiteeritud teabe jäädvustamise ja selle töötlemise. Töödeldud signaali on võimalik jälle kasutada päriselulistes rakendustes, näiteks seadme ekraanile kuvades. Saadud signaal võidaks muuta uuesti analoogsignaaliks digitaal-analoogmuunduriga, kui see on vajalik. Kogu protsess saab tänu spetsiaalsele riist- ja tarkvarale töötada väga kiiresti. Süsteemikiipide kontekstis on väga mugav ja efektiivne, et sellised rakendused on võimalik paigaldada sama räni peale.

### ''Neural processing unit'' (NPU)
NPU ülesanne on kiirendada tehisintellekti ja masinõppe rakendustega seotud ülesandeid - inimeste ja objektide tuvastamist piltidel, teksti ja kujutiste genereerimist, kõne tekstiks teisendamist, reaalajas tõlkimist ja järgmise sõna ennustamist, mida võiksite kasutajale soovitada.

Nende funktsioonide täitmiseks ei ole vaja NPU-d, kuid see muudab protsessi kiiremaks, energiasäästlikumaks ja vähem sõltuvaks pilvandmetöötlusest. Graafikaprotsessori ülesannete täitmiseks on vaja sooritatakse väga suure andmemahuga samasid arvutusi. Need arvutused on väga spetsiifilised ning ei pea olema täpsed ning tänu sellele on võimalik neid lahendada võrdlemisi lihtsates ning efektiivsetes tuumades, mida mahub graafikaprotsessorisse palju. 

Tänapäeval lisatakse telefoni süsteemikiipidele NPU-sid. Qualcommil on alates 2015. aastast Snapdragon 820 AI-mootor (PDF), mis on AI-ülesannete jaoks mõeldud riist- ja tarkvara kombinatsioon. Apple tutvustas oma Neural Engine NPU-d 2017. aastal koos A11 Bionic kiibiga.

### Mälukontroller
Mälukontroller tõlgib mälupäringud käskudeks, millest mälu aru saaks. Mälukontrollerid on süsteemikiipides, kus IP plokid on omavahel ühendatud, joonis[2], ja ka kontrollegi endaga, mis saab suhelda kiibivälise dünaamilise mäluga. IP plokid on komponendid, kes soovivad suhelda mäluga. Kui IP plokk soovid mällu kirjutada või lugeda saadetakse taotlus läbi ühise *interconnect* siini mälukontrollerile, mis teostab suhtluse mäluga ning vastab IP ploki päringule.

### Sisend-väljund (I/O) kontroller
Sisend-väljund (I/O) kontroller on komponent, mis on iga seadmega ühendatud ja mida kasutatakse sisendi vastuvõtmiseks ja väljundi edasisaatmiseks. Suhtlus sisend väljund seadmetega toimub sisend-väljund kontrolleri kaudu. Tegemist on spetsiaalse protsessoriga, mis töötab autonoomselt - süsteemi peamine protsessor ei pea juhtima selle tööd, mis võimaldab protsessidel paralleelselt töötada. Protsessor peab aga kontrollerile andma käsu, mida ta hakkab iseseisvalt täitma. Kui süsteemikiibil puuduks integreeritud I/O-kontroller, peaks protsessor ise haldama kõiki andmevahetusi sisend- ja väljundseadmetega. See koormaks protsessorit liigsete ülesannetega, vähendaks süsteemi jõudlust ning muudaks seadet tervikuna aeglasemaks ja energiakulukamaks. I/O-kontrolleri integreerimine võimaldab protsessoril keskenduda arvutusülesannetele, samal ajal kui kontroller suhtleb seadmetega iseseisvalt.

### Modem
Modem on seade, mis võimaldab arvutitel, nutitelefonidel, tahvelarvutitel ja muudel seadmetel Interneti-ühendust luua. See muudab nende seadmete digitaalsed signaalid analoogsignaalideks, mida saab edastada telefoniliinide või kaabelvõrkude kaudu. Modemid teevad ka vastupidist: teisendades sissetulevad analoogsignaalid digitaalsignaalideks. Ilma modemita ei oleks võimalik luua internetiühendust ega vahetada informatsioon seadmete vahel juhtmevabalt.

Esialgsed 5G-võimekusega seadmed töötasid FPGA (programmeeritava värava massiiv) kiibistikel, kuna need on programmeeritavad ja paindliku disainiga. Paindlikum disain tähendas aga üldiselt väiksemat töövõimet. Kuna kiibid ei olnud piisavalt efektiivseid, siis oli vaja neid tihti paigaldada mitu tükki, mis tähendas suuremat energiatarvet, suuremaid tootmiskulusid ja suuremaid lõpptooteid.

Võimsamate ja energiaefektiivsemate modemite masstootmise võimaldamiseks minnakse üle süsteemikiibil (SoC) põhise disaini peale. 5G on muutumas juhtmevaba infovahetuse standardiks, mis tähendab, et tootjad peavad integreerima toodete modemid süsteemikiipidele konkurentsivõimeliste seadmete tootmiseks. See võimaldab kompaktsemaid, võimsamaid ja efektiivsemaid süsteeme.

## Disain
### Arhitektuur
System-on-a-Chip (SoC) arhitektuuri projekteerimine algab nii-öelda eesmärgi seadmisest – mida peab valmis süsteem tegema. Selles etapis luuakse mudel õigesti töötavast kiibist. See näitab, kuidas komponendid, nagu mälu, loogikaplokid, siinid, lülitid ja olekumasinad, suhtlevad ülesannete täitmiseks. Mudel toimib andmevoo ja kiibi sisemiste funktsionaalsuse korraldamise plaanina. Kui see disain on paigas, jagatakse töö riist- ja tarkvarakomponentideks. Riistvara viitab kiibi füüsilisele vooluringile ja tarkvara süsteemis jooksvatele programmidele. Seejärel arendatakse ja testitakse neid kahte osa paralleelselt, et tagada nende sujuv koos töötamine, mis aitab integratsiooniprobleeme varakult avastada.

### Tarkvara
Kuna tänapäevased SoC-disainid muutuvad üha keerukamaks, ei saa tootjad enne tarkvaraarenduse alustamist riistvara valmimist oodata. Selle asemel arendatakse ja testitakse nüüd tarkvara ja riistvara projekteerimisetapis paralleelselt. Sellel lähenemisviisil on mitmeid eeliseid – lühem turuletuleku aeg ning on võimalik varakult testida ja täiustada riistvara ja tarkvara vahelist koostööd. Tarkvara varajane väljatöötamine aitab tagada süsteemi kui terviku tõrgeteta toimimise ja vähendab võimalusi viivitusteks projekti hilisemates etappides.

RTL ehk Register Transfer Level on disaini abstraktsioonitase, mille eesmärk on kirjeldada digitaallülitusi, keskendudes andmete liikumisele registrite vahel - millised toimingud ja mis järjekorras sooritatakse, kasutades registreid andmete salvestamiseks ning loogikablokke nende liigutamiseks või töötlemiseks. RTL-iga on kiibis liikuvate andmete liikumise simuleerimise tööriist. Selle abil luuakse kiibi loogika digitaalselt enne füüsilist prototüüpi. Ilma RTL võimaldab usaldusväärselt planeerida ja simuleerida, näiteks protsessori ning mälukontrolleri, loogikat süsteemikiibil.

## Viited