Projekti-ideed : Raskendatud sissemurdmisvõimalustega arvutustehnika : FPGA-arvuti t1

From mmmv_kos
Jump to: navigation, search

Projekti-ideed

Sard-versioon

Sard-versiooni Eesmärk

Projekti eesmärk on luua võimalikult vähe voolu tarbiv, kuid suure maksimum-arvutusjõudlusega, patareidelt toimida suutev, arvuti, mida saab kaasas kanda helilise kommunikatsiooni krüptomiseks, heli automaat-tuvastuseks, võimalikult odavate relvasüsteemide juht-arvutiks. Projekti riistvara kogumaksumus ei tohi hulgim tootes ületada 40€. Hiinas toodetud trükkplaadid on lubatud.


Sard-versiooni idee 1

Odavatest mikrokontrolleritest moodustada N-dimensionaalne võre, alguses 2-dimensionaalsest, tavalisest, ristkülikust piisab, kus sisendandmed liiguvad osadest võre külgedest sisse ja väljund-andmed laekuvad teistest külgedest. Ristküliku korral võib sisend tulla ülemisest ja vasakpoolsest servast ja väljund parempoolsest ja alumisest servast.

Esmane mõte on, et antud lahenduseks võiks kasutada olemasolevaid mikroskeeme, näiteks Forth'i kiipe, Proller'i mikrokontrollerit, jne. Riistvara peatükis loetletud Transputer'ilaadseid lahendusi, kuid antud projekt peab olema vaike-olekus vähe voolu võttev, reguleeritava arvutusvõimsusega ning rahaliselt odav. See seab piirangud mitmetele valmis-lahendustele.


Kontoritööarvuti

Kontoritööarvuti üldarhitektuuri idee 1

FPGA-arvuti emaplaat kasutab oma LAIENDUSKAARTIDENA Raspberry Pi laadseid arvuteid(edaspidi:RPi), mis on FPGA-arvutiga ühendatud üle Raspberry Pi laadse arvuti GPIO. Graafikakaardiks olev RPi pole üheski teises rollis, sest siis on sellel RPil raskem kuvatavat pilti võltsida. Klaviatuuri ja hiire liidestamiseks olev RPi pole üheski teises rollis. Kõvaketta-liidestus-kaardi RPi pole üheski teises rollis. Mõni RPi võib toimida ka FPGA-arvuti madalamat järku turvatsooni RAM-laiendus-kaardina. Osad RPid on kasutajaruumi-arvutus-laienduskaardi rollis. See RPi, mis võrgukaardi rollis on, asub 100% väljaspool turvatsooni.


Emaplaadi realisatsiooni idee 1

Mälu on ühendatud läbi FPGA, kus genereeritakse buutimisel ja töö käigus võtmeid. FPGA käitub kui krüptiv mälukontroller.

Kuna krüptoalgoritmid arenevad, siis FPGA on trükkplaadil pesa kaudu, kus FPGA ümber programmeerimiseks vajaminevad jalad on digitaal-ahelatest lahti ühendatud, maha maandatud, kuid kuist on võimalik FPGA-d välja võtta ja ümber programmeerida või kus jalad on digitaal-ahelasse ühendatavad trükkplaadil olevate, manuaalsete, lülitite ümberlülitamise kaudu.


Trükkplaadile on integreeritud kiirendusandur, trükkplaadi ja korpuse vahelist distantsi mõõtev valgus-andur, korpuse sisu konstantsust mõõtev heli-andur. Nagu ükski neist anduritest aktiveerub, nii antakse opsüsteemile CPU-katkestus, paariks sekundiks ja pärast toda 2 sekundit kustutab FPGA oma mälust krüptovõtme ning hakkab RAM'i pseudojuhuslikke andmeid kirjutama.

Trükkplaadile on integreeritud mingi hea juhuarvude generaator, mis on ühenduses mälu-FPGA-ga. Mälu-FPGA pakub opsüsteemile juhuarve teatud mälu-piirkonnast ning loob enda võtme tolle sama juhuarvude generaatori kaudu.



Kontoritööarvuti üldarhitektuuri idee 2 AKWATAR(AntiKernel with a Transputer Array)

Klassikalise arvuti asemel, kus on RAМ-is oleva baitide arvuga võrreldes suhteliselt vähe hästi jõudsaid ja uuel mikroskeemivalmistamise-tehnoloogial põhinevaid CPU-tuumi, on kasutusel ühelõimeliste, mäluhaldusblokita, TRANSPUUTERITE MASSIIV. Selle asemel, et teha malloc(...), allokeeritakse mäluga koos olevaid CPU-tuumi. Arvuti tsentraalne haldus toimub AntiKernel arhitektuuril baseeruva FPGA-arvuti abil.


Transpuutrid on adresseeritavad lineaarse massiivi-indeksi kaudu, nagu klassikalise Commodore64 masina ja mikrokontrollerite mälus baidid on adresseeritavad, kuid nad on füüsiliselt ühendatud OpenTransputer projektis välja käidud idee kohaselt Benes/Beneš-võrgu kujul. Ühe üksiku transpuutri aadressi-väli on minimaalselt 32b ehk aadressiruum igal transpuutril on minimaalselt 4GiB.


Transpuutreid võib olla massiivis erinevat tüüpi, nii nagu vanasti olid mäluaadressid jagatud RAM'iks ja sisend-väljund aadressideks. Osad transpuutrid võivad olla hästi primitiivsed, aga aeglased, olles optimeeritud riistvara-vigadest tulenevate turva-aukude minimiseerimisele, ning osad võivad olla optimeeritud vaid kiiruse järgi toimimisele, kus Meltdown ja Spectre sarnased probleemid kuuluvad teadlikult ignoreerimisele.


Esmane realisatsioon

Esmarealisatsioon on tarkvaraline simulatsioon agentorienteeritud programmeerimise stiilis. Seejärel võib proovida hästi odava FPGA-plaadi ja mikrokontrollerite massiiviga, et paremat aimdust saada, et mis probleemid seal ette tulevad. Mikrokontrollerite massiivi võib kohe panna erinevate tootjate mikrokontrollereid testimaks, kas transpuutril jooksev erinevaid mikrokontrollereid normaliseeriv assembleri interpretaator on piisavalt efektiivne. Arvuti lisaseadmeteks, sealhulgas JIT-blokiks, võib esialgu kasutada mõnda Raspberry Pi-d. Turvakriitilised ehk paigatavad MCU-d võiksid jooksta hästi odavates FPGA-des või CPLD-des ning esmakandidaat turvakriitiliseks, primitiivseks, CPU-ks on Zylin CPU.


Simulatsiooni realisatsioonis võib kasutada mikrokontrollerite simulaatoreid. Simulatsiooni käigus luua ka mingi formaalselt verifitseeritud translaator C keelest assemblerisse. Translaatori loomisel uurida K-framework'i ja Racket'it. Translaator ei pea olema kiire ega optimiseeriv, sest mitte-turva-kriitilise, aga kiire, koodi jaoks on JIT'il võimalik kasutada LLVM'i.


Esmaversiooni, tarkvaralise simulatsiooni, üks tõenäoliselt raskemaid, mahukamaid, ülesandeid on uurida, millised C-funktsioonid annavad JIT'i jaoks antud piirangute raames kõige suurema kiirusevõidu.


Mitmetuumalised transpuutrid

Kasutusele tuleb ka transpuutri tuuma mõiste. Transpuutrid võivad olla mitmetuumalised ehk ühe ja sama mikrokontrolleri plaadi poolt võib olla realiseeritud mitu transpuutrit korraga, mis omavahel on ühenduses täht-ühendusega(D on keskel). Iga transpuutri tuum võib jooksutada mitut, dünaamiliselt allokeeritud, Wirth-masinat. (Mitme Wirthimasina korraga toetamine ühe ainsa transpuutri tuuma poolt oli selleks, et saaks transpuutri mälu dünaamilisemalt osadeks jaotada, mäluhaldusega lihtsamini tegelda.) Mitmetuumalise transpuutri kood on loomulikult keerulisem kui ühe-tuumalise transpuutri kood, kuid see võimaldab paremini ära kasutada mitmetuumalisi mikrokontrollereid. Kuigi, kuna üks ja sama transpuuter võib enda poolt dünaamiliselt allokeeritud Wirthimasinaid ka paralleelselt jooksutada, siis mitmetuumalised mikrokontrollerid võivad hästi rakendust leida ka ühe-tuumaliste transpuutrite realiseerimisel.


Transpuutri assembleri interpretaator

Assembleri interpretaatori üks eesmärkidest on normaliseerida erinevate mikrokontrolleritootjate tooteid.


Kuna transpuutreid on erineva võimekusega, siis raporteerib iga transpuuter, mis interpretaatori versiooni ta jooksutab. Osad transpuutrid baseeruvad 8-bitistel mikrokontrolleritel, osad 32-bitistel, teoreetiliselt on võimalik, et osad transpuutrid on 16-bitiste mikrokontrolleritega. Lisaks assembleri interpreteerimisele on igal transpuutril võimalik toetada oma enda isendi spetsiifilist hulka programmeerimiskeeles C defineeritud funktsioone, mida käsitletakse "assembleri laiendustena", umbes nagu klassikalised x86 CPUd omavad assembleri käskude "laiendusi". JIT ning teised transpuutrid võivad igalt transpuutrilt, transpuutrite korral ka ise-endalt, küsida nimekirja toetatud funktsioonidest ning vastuse kompaktsuse huvides võivad transpuutrid vastata funktsioonide klassi-ID-ga, arvestusega, et vanemad transpuutrid nii kui nii uuemate transpuutrite poolt toetatud uutest funktsioonidest midagi ei tea, välja arvatud seda, et mille poolest funktsiooni ID formaat erineb funktsioonide hulga ID formaadist.


Kuna isegi jada-RAM võtab päris palju mikrokontrolleri portide jalgu, siis läheb transpuutri realisatsioonis tarvis eraldi mikrokontrollerit transpuutrite siiniga suhtlemiseks. See võimaldab kasutada transpuutris ka kahte lõime: üks töö tegemiseks, teine transpuutrite siinil suhtlemiseks.


Esmaversioon

Esmaversioon võiks olla Niklaus Wirth'i projectoberon'i realisatsioon. Mäluhalduse granuleerimiseks peaks üks ja sama transpuuter simuleerida N Wirthimasinat, arvestusega, et mida rohkem Wirthimasinaid ühel Transpuutril jookseb, seda kitsamaks läheb sellel transpuutril jooksvate Wirthimasinate CPU-RAM pudelikael. Iga Wirthimasin peaks suutma, soovi korral, jooksutada ProjecOberon'i GUI-d.


Portatiivsus, "compile-once-run-everywhere"

N Wirthimasina jaoks kompileeritud/transleeritud tarkvara peaks saama jooksta ka klastrites, umbes nagu Java bait-koodi. Sellega on ise-enesest lahendatud ka virtuaalmasinate portatiivsuse küsimus. Wirthimasinaid simuleeriva üksiku transpuuteri simulaator kirjutatakse nii, et seda koodi on hiljem suhteliselt lihtne mikrokontrollerile kohaldada. Tänu Wirthimasinatele ja kogu arvuti universaal-simulaatorile on võimalik ArrayOfTransputer_t1 jaoks kompileeritud rakendustarkvara ka x86 peal jooksutada ja selle läbi ongi loodud TÄIESTI PORTATIIVSETE VIRTUAALMASINATE KASUTAMISE VÕIMALUS!!! See on umbes nagu Java baitkoodi põhine lahendus, või ka kunagise Niklaus Wirth'i Pascal'i baitkoodi põhine lahendus, aga arvutusmudeliga, mis võimaldab kasutada transpuuterite massiivi.


Bochs'i sarnane simulaator on ise kah kirjutatud ParaSail'is ja on just mõnus testprojekt ParaSail'i õppimiseks.


Süsteemprogrammeerimise mudel

Nii nagu x86 arvutite operatsioonisüsteemid ja kiiruse järgi optimeeritud tarkvara on mõeldud olema kirjutatud programmeerimiskeelte C ja C++ laadsetes programmeerimiskeeltes, nii on antud transpuuterite massiivi põhimõtteliseks programmeerimismudeliks auto-paralleliseerimisega süsteem-programmeerimiskeeled, näiteks ParaSail. Esmane üldskeem on, et C ja C++ kood transleeritakse ParaSail'i, et suhteliselt aeglased transpuuterid paralleelselt tööle saada, ning translaatori realisatsioon peab olema "formaalselt verifitseeritud", tõenäoliselt midagi K-framework'i või Racket'i laadset. Racket oleks väga otsene töövahend, mis oma ümber-kirjutamistega moondab C koodi ParaSail'i koodiks, aga K-Framework'il on jällegi arvestatavaid arenguid.



Alglaadimine

Üks transpuutritest ei oma ainsatki otseühendust ühegi teise transpuutriga ja too transpuuter on masina juht-trasnpuuter, millelt saab anda käsklusi nagu "halt", "reboot" ja saata teistesse transpuutritesse programme jooksutamiseks, sealhulgas anda teistele transpuutritele käsklusi käivitada nende endi Wirthmasina esmaprogramm. Ükski teine transpuuter ei saa juht-transpuutrile programme käivitamiseks saata ja juhttranspuuter ise ei jooksuta üldse Wirth-masinat, vaid jooksutab ainult enda realisatsiooni spetsiifilist tarkvara. Juht-transpuuter on sisuliselt nuppude kollektsioon koos päringu-API-ga, millelt saab teada arvuti terviklikku seisu, protsesside arvu, muude transpuutrite hõivatust, Wirth-masinate asukohti, RAM-suurusi ja arve. Ideaalis peaks juht-transpuutri ja tema juht-puldi vahel olema optiline liides või on juht-transpuutril arvuti vastavate parameetrite kuvamiseks oma enda riistvaraline kasutajaliides: nupud ja tabloo.


Wirth-masinate ülesehitus

Kuna mitmed C/C++ programmid, eriti matemaatika-teegid, on efektiivsuse tõttu loodud opereerima üksikuid baite, mille järjestus int-tüübis ning bittide järjekord üksiku baidi raames on CPU-spetsiifilised, siis tuleb Wirth-masinas kasutada kõigi käskude jaoks 4 erineva baitide ja bittide järjestusega registrite komplekti, millel opereerivad kõik Wirth-masina käsud. Lisada tuleb ka Wirth-masina käskude realisatsioonid eri järjestusega registrite vahelisteks operatsioonideks. Need 4 varianti tuleb realiseerida nii 32-bitiste CPU-de kui ka 64-bitiste CPU-de jaoks. seega, iga Wirth-masina assembleri käsul on


    4*2 tava-asmi-realisatsiooni 
    +
    (64/32)*4 baitide ja bittide j2rjestuse realisatsiooni sisest 
              konversiooni 32b ja 64b vaheliste registrite vahel
    +
    t2isgraafi_servade_arv(4) konversiooni-funktsiooni 
                              eri biti- ja baidij2rjestusega 32-bitiste
                              registrite vahel.
    +
    t2isgraafi_servade_arv(4) konversiooni-funktsiooni 
                              eri biti- ja baidij2rjestusega 64-bitiste
                              registrite vahel.
    =
    =
    4*2 tava-asmi-realisatsiooni 
    + 12+8
    =
    =
    4*2 tava-asmi-realisatsiooni 
    + 20 erinevat konversioonifunktsiooni

Kuna C/C++'is kirjutatav või ka mõnes muus süsteemprogrammeerimiskeeles kirjutatud simulaator on/oleks kiiruse järgi optimeeritult samuti CPU-spetsiifiline, siis on targem käsitsi simulaatoritu üldse mitte kirjutada, vaid luua koh Wirthi-masinast ainult Verilog-realisatsioon ning transeerida see Verilog'ist C/C++ põhise simulaatori tuumaks. Uurida tasub ka VHDL'i varianti, võibolla GHDL'i näol. VHDL pidavat kompileerimisajal rohkem kontrolle tegema ja seeläbi kõvasti aega kokku hoidma. Kuna VHDL on tüüpiliselt avatud tarkvara poolt jube halvasti toetatud, siis mingi idee on kasutada mingit "hihg level synthesis" kraami.


GCC, LLVM, GNAT, ParaSail'i kohaldamine

x86/ARM'i Linux'i peal luua translaator, mis LLVM'i poolt LLVM'i vahekoodiks kompileeritud lihtsa "Hello World'i" ParaSail'i transleerib. Seejärel täiendada toda näidet keerukama "Hello World'iga", mis kasutab erinevaid linkimise vorme(staatiline, käivitusel lingitav, programmi töö ajal lingitav, jne.). Seejärel x86/ARM Linux'i peal kompileerida LLVM'iga LLVM enda kood tolleks vahekoodiks ja transleerida see ParaSaili ning x86/ARM Linux'i ParaSaili kompilaatoriga kompileerida testimiseks see ParaSail'i transleeritud LLVM ära. Seejärel luua LLVM'ile mingi mähis, mis "lisab" LLVM'ile lisaparameetri, mis ühendab vahekoodiks kompileerimise ja ParaSail'i kompilaatori tööle tõmbamise. Seejärel muuta kohaldatud LLVM'is see lisaparameeter vikimisi sisse-lülitatuks.


x86/ARM Linux'i peal luua translaator, mis transleerib GCC ja GNAT'i vahekoodid ümber LLVM'i vahekoodiks. Täiendada kumbagi lisa parameetriga, mis võib olla ka mähise vormis.


Seejärel x86/ARM Linux'i peal kompileerida kohaldatud GCC ja kohaldatud GNAT'iga ära kohaldatud GNAT, saades ParaSail'i realisatsiooni GNAt'ist, mis suudab transleerida Ada't ParaSail'iks.


Seejärel kompileerida x86/ARM Linux'i peal kohaldatud LLVM'iga ära kohaldatud LLVM, saades ParaSail'i realisatsiooni LLVM'ist, mis suudab C/C++'i transleerida ParaSailiks.

Lõpprealisatsioon

Lõpprealisatsioone võib olla erinevaid, erinevate nõuetega, kuid kindlasti on sellisel arvutil Linux'i kasutaja-ruumi-kiht, umbes nagu Microsoft oma Windows'i logule Linux'i kostüümi selga sikutas, selle erinevusega, et korporatiiv-porno ja meelega sisse pandud tagauksed ning muu sigatsemine jääb ära.


Jõudluse osas saab lugeda praktiliseks tööarvutiks oma-aegset 400MHz taktsagedusega, ühetuumalist, AMD_K6-III masinat, mil RAM'i minimaalselt 400MiB, pigem 1GiB. Oletatavasti umbes 20 transpuuterit, millel igaühel on töö-CPU-ks üks ~40MHz sisemise taktsagedusega toimiv mikrokontroller ja ~32MiB RAM'i, võiks sobida. Graafiline kasutajaliides selle tööarvuti rakendustel on mõeldud kasutama Lazaruse/FreePascal'i abil realiseeritud RASTCLSP_t1 "veebilehitsejat".


Riistvara tootmine

Üldiselt tuleb püüelda Raspberry Pi riistvara tootmise mudeli poole, kus mingi Element14 tüüpi jublaka-müügi-firma, mis võidab vaid jublakate võimalikult suurest müümisest mitte arvutiturul konkureerimisest, neid arvuteid tootma hakkab. Kogu intellektuaallooming(trükkplaadi joonised, elektriskeemid, tarkvara, jne.) tuleb nii ära pakendada, et inimestel oleks võimalik võimalikult hõlbsalt ise omale sobiva transpuuterite arvuga masinaid toota ja ilma, et nad peaks ParaSail'i ja rakendus-tarkvara-kihi poolel üldse midagi muutma. Klassikaliste suurfirmadega mingit koostööd ei toimu, sest kaabak-mafiatega on parem mitte tegemist teha, aga vabakutseliste ringis tasub erinevatest teenusepakkujatest kontaktvõrgustik luua. Seda nii tootmise poole peal kui ka IT-toe("IT-buss'i laadsete") teenusepakkujate poolel, kes ehk oma rahalise kasu eesmärgil hakkavad oma kasutajatele neid arvuteid ise, oma originaaltootena, tootma, umbes nagu kunagi Ericsson sai alguse telefoni-parandus-firmast. Need IT-toe-tegelased on enam-vähem arvuteid kokku kruvivate/tinutavate ja ära installivate osapoolte rollis, mistõttu tarkvara peab siis olema hästi korralikult lõpunivalmis tehtud.


Peamine rahaline müügiargument on kasutajaruumi portatiivsus. Riistvara pool ja andmeturbe pool pakub huvi vaid "tuumapommivarjendiehitajatele" ja "inimõiguslastele". Supermafia militaristidest tuleb suure kaarega eemale hoida, täpselt nagu tuleb eemale hoida muudest mafioosodest. Õnneks on supermafia militaristid ja planeerijad nii küündimatud, et nad mõtlevad vaid nendes terminites, et kui palju saab maksuorjadelt röövida ja mida röövsaagi eest KLASSIKALISTEST RELVADEST, MIDA TEISED SUPERMAFIOOSOD KASUTAVAD, osta saab. Loominguline mõtlemine on supermafioosode militaristide ja bürokraatide korral õnneks pea-aegu välistatud.


Testrakendused

  • Nexuiz 3D-arvutimäng.
  • Alien Arena 3D-arvutimäng.
  • porditud GCC ja porditud LLVM.
  • porditud FreePascal ja Lazarus koos kogu nende endi GUI loomise toega.
  • LibreOffice
  • Linux'i kasutajaruumi klassikalised rakendused, sealhulgas grep.


Lahendamist vajavad probleemid

  • C/C++ malloc(...), mis küsib rohkem RAM'i kui ühelgi transpuutril üksikult on. Kasutusjuhtumi näiteks on kirjašriftide failid, mis ei mahu ühe transpuutri RAM'i ära.
  • Operatsioonisüsteemi protsesside vaheline kommunikatsioon(IPC), kus kasutatakse kommunikatsiooniks mälutahvlit. Sisuliselt, vanamoodsed graafikateegid ja X11 kasutavad tõenäoliselt sellist lahendust.


Lahenduste kandidaate

Lisaks transpuutritele on FPGA-arvutis üks, AntiKernel'i poolthallatav, hiigel-mälu-kogus. WirthMasinatel on 2 režiimi: üks neist on selline, et C/C++ malloc(...) kasutab ainult transpuutri RAM'i ja teine režiim on selline, kus C/C++ malloc(...) kasutab ainult tolle hiigelmälu ruumi. WirthMasin ennast ise nende kahe režiimi vahel ümber lülitada ei saa, WirthMasin'a mälurežiim määratakse tema initsialiseerimisel. Koht kus vanamoodset malloc(...) funktsiooni koos hiigel-mälupiirkonnaga kindlasti vaja läheb, on dünaamilised programmeerimiskeeled nagu Ruby.


Kompromissina võib alguses see hiigel-mälu olla mõne Raspberry Pi laadse arvuti GPIO kaudu AntiKernel'iga ühendatud, nõnda, et Raspberry Pi laadses arvutis tava-operatsioonisüsteemi asemel jookseb hästi primitiivne, spetsiaal-opsüsteem.


Tollele arvutile tuleb luua turvalisuse huvides täiesti uhiuus, ParaSail'i põhine, GUI-teek, mis on kohe algusest saadik kirjutatud töökindlate juhtsüsteemide nõuete kohaselt, näiteks, et kogu RAM allokeeritakse seal ParaSail'i tarkvaras kohe alguses ära, et AntiKernel saaks konkreetse ParaSail'i programmi piisavalt suure RAM-kogusega transpuutrisse saata.

Viited teistele autoritele

Projektid, mis lisaks muule olid/on inspiratsiooniks realisatsiooniideedele
  • AntiKernel
  • OpenTransputer, Benes network
  • Tucker Taft, ParaSail
  • K-Framework, C-ParaSail translaator
  • Linux AVR'il, Wirthmasinate baas-idee
  • MINIX3 autor, arendatava operatsioonisüsteemi jooksutamine simuleeritaval riistvaral
  • Java virtuaalmasin, "compile-once-run-everywhere", baitkood.


Projektid, mis on realisatsiooni osaks, ilma, et nad oleks üldarhitektuuri-ideed põhjalikult mõjutanud
  • OpenCores avatud GPU
  • Niklaus Wirth, Project Oberon, Wirthimasinate CPU spetsifikatsioon
  • Project IceStorm FPGA-töövahendid

Sarnaseid projekte laiast maailmast

Tööplaan

Erinevad komponendid tavalise klaster-arvuti komponentidena valmis teha ja siis alles hakata ühendada nad kõik kokku ühtseks FPGA-arvutiks.


Kontoritööarvuti üldarhitektuuri idee 3

Versioon 3 arvutist on mõeldud laiatarbe kasutajatele, kes pole nõus loobuma transpuutrite põhise arvuti mälu segmenteeritusest tulenevatel põhjustel kasutuskõlbmatuks muutuvatest suurt ühtset mälumasiivi vajavatest klassikalistest rakendusprogrammidest. Versioon 3 on sisuliselt tarkvaralise tagasiühilduvuse tõttu eksisteeriv KOMPROMISSLAHENDUS, mis on ka PALJU ODAVAMA RIISTVARAGA kui Idee 2 põhine arvuti.


Idee 3 seisneb selles, et Raspberry Pi jooksutab oma tavapärast Raspbian'i Linux'it, klaviatuur ja monitor ja püsimäluseadmed on tolle sama, rakendusi jooksutava, Raspberry Pi külge ühendatud, kuid tolle Pi võrgukaarti ei kasutata. Võrgujuhtme pesa on toidukilesse mässitud plastiliiniga täidetud või vedela isoleeriga täidetud ja halli kleeplindiga kinni pandud ning sildistatud. GPIO ühendub mingi odava CPLD-ga, kus ei jookse mingit CPU-d ega opsüsteemi, vaid mis tuimalt suunab konkreetse protokolli järgi sisestatud andmed MCU-põhisesse krüptimismoodulisse ja sealt edasi võrgukaardiks oleva Raspberry Pi GPIO-sse. Võrgukaardi rollis olevas Raspberry Pi-s jookseb spetsiaaltarkvara, mis suhtleb CPLD-ga üle GPIO vastavalt antud protokollile ja saadab andmed vaid ettenähtud URL'ile. Võrgukaardi rollis olevas Raspberry Pi-s saab seadistusi muuta nii, et talle ühendatakse ajutiselt külge klaviatuur ja monitor ning siis vastavast programmist, mis võib olla ka turvaliselt seadistatud veebi-GUI-põhine programm, saab muuta URL'i, kuhu vastava protokolli põhised andmed saadetakse.


Põhimõtteliselt, see versioon 3 on see, mida praktikas kommertseesmärkidel pakkuda saab. CPLD saab tegelikult asendada ka mikrokontroller-plaadiga. Paar mikrokontroller-plaati ja natuke juhtmeid ning ongi kogu eriotstarbeline riistvara :-D Põhimõtteliselt võib krüptimis-mikrokontrolleri asendada 3. Raspberry Pi-ga. Rakendusi jooksutav Raspberry Pi ja krüptimise Raspberry Pi peavad olema raadiosideühendusteta. Krüptimise Raspberry Pi asenduseks sobib hästi Chip.


Turvameetmed

Riistvara ründepinna vähendamine

Inspireeritult Inteli "Meltdown" ja "Spectre" riistvara-vigadest, kus tingimuslause-hüppe-ennetus-blokist lekkis tolle bloki vahemälude kaudu turvakriitilisi andmeid (File:AzGxs.zip), tasub arvuti jagada riistvara osas erinevateks turva-tsoonideks. Turvakriitiliseim osa kernelist võiks jooksta hästi primitiivsel, kiirendusblokkidevabal, riistvaral ning kiirendushäkkidest kasu lõikav mittekriitiline mittereaalaja kood võiks saada oma kasutusse klassikalisi, "vilede ja kelladega", CPU-tuumi. Antud idee kontekstis tasub uurida ka "Antikernel-riistvara".


GPU

Graafikakaart peab olema FPGA-s realiseeritud avatud GPU põhine. Klassikalisele GPU-le lisada siinile ette eraldi mälujuurdepääsude kehtestamise blokk, mis võimaldab realiseerida GenodeOS'i GUI turvamudelit. GPU on vaid graafikaks, mitte teadusarvutusteks. Arvutuste kiirendusteks on spetsiaalsed FPGA-lisaseadmega transpuutrid.


Kõvaketas

Kõvaketas võib esialgu olla USB-mälu-pulkade "RAID", kuid pikas perspektiivis peaks asi toimima FPGA-s realiseeritud SATA liidese kaudu. Failisüsteemiks on DragonFlyBSD failisüsteem.


Korpusse integreeritud valvesüsteem

Varguste ja röövimiste("konfiskeerimised" kaasa arvatud) vastu on osad failid kõvakettal vaid krüptitult ja krüptimine/dekrüptimine toimub reaal-ajas kasutades RAМ'is olevat võtit. Nagu arvutikorpusse integreeritud valvesüsteem tuvastab, et keegi üritab emaplaadile füüsiliselt ligi pääseda, monteeritakse vastav kataloog/fail lahti ja kirjutatakse RAM'is olev võti juhu-arvudega üle.


Korpusesonar

Korpusesonar tuvastab "puute-ekraani" tööpõhimõttel korpusse aukude puurimist. Võimalik, et sama tööd saab teha ka kuidagi mahtuvuslikult, sest väline kondensaatori plaat muudab ennem kuju kui sisemine kondensaatori plaat.


Kummalisi turvameetmeid

Leidub mingi mehhanism, kuidas töös olevale sardvarale on võimalik arvutada "kontroll-räsi". (Idee pärineb Jacob Applebaum'ilt). Koos mikroskeemiga saab publitseerida selle mikroskeemi röngten-varjud eri nurkade alt, kuid füüsiline komponentide arvu ja kuju kontrollimine ei tuvasta elektriskeemi muutusi, mis tulenevad komponentide elektriliste omaduste muutmisest ("DopantLevel Hardware Trojans").


Igavam, aga kasulik

Osadel, kallimatel, erandlikel, statsionaarsetel, juhtudel kasutab antud seade korralikku toiteblokki.


Turustamine

Antud arvuti turuniš võiks olla "andmeturbe järgi optimeeritud arvutid", sest kiiruse järgi ning voolutarbe minimiseerimise järgi optimeeritud arvutid saavad kasutada lahendust, kus kõik on ühel mikroskeemil ja üksiku isendi raames täiesti auditeerimatu ning töökindluse järgi optimeeritud arvutid vajavad radiatsiooni-kindluse ning muude vigade tekkimise vastu mikroskeemisiseseid veakorrektsiooniblokke koos spetsiaalselt suuremate komponentidega mikroskeemidega, kuid antud arvuti kasutab just neid komponente, mida parasjagu kohalikest elekroonikakomponentide poodidest saada on. Seega müük toimub ainult auditeerimis-võimelistele isikutele, kel on mingi IT, matemaatika, telekommunikatsiooni või muu reaalteaduse alane taust. Bioloogid põhimõtteliselt sobivad kah klientideks, sest bioloogias organisme kui keerukaid süsteeme nad ju uurivad, aga nad saavad karmi hoiatuse ja soovituse mitte osta.


Saadetisega kaasa läheks eestist suveniirina kaasa pakk röstitud mandleid kuhu on kinnitatud laminaatorist läbi lastud ja lamedaks kuivatatud lilleõis ja lilleõiega koos plastmassi vahel olev käsitsi kirjutatud tänukaart tekstiga "Thank You for Your order :-)" Lilleõisi peaks olema erinevaid, lilleõite valikul tasub arvestada tänukaardi saaja kultuurilise taustaga. Näiteks, hiinlastele ei tasu saata kollaseid lilleõisi, sest nad kasutavad kollaseid lilli armusuhete lõpetamisel korvi andmiseks. Valge on Lätis matusevärv nii nagu eestis on matusevärviks must. Roosiõisi kasutavad osad soomlased vaid oma armusuhtepartneriga.


Teatavasti andmeturve ja tarnekindlus on turutingimustes lõppkasutajate silmis MITTEVEENVAD MÜÜGIARGUMENDID. Turg on odavaid, miniatuurseid, arvutusjõudluse järgi kiireid, vähe voolu tarbivaid, onlainis mugavalt kättesaadavaid(1984), "helendavaid ja piiksuvaid" arvuteid täis ning antud arvuti on isegi tootmisversioonina kole ja aeglane ning "palju" voolu tarbiv, rahaliselt kallis, kolakas. See on arvutiarhitektuur, millest võiks olla huvitatud väga väike, kitsas, seltskond, sisuliselt tuumapommivarjendiehitajate IT-inimeste analoog. (Naljaga pooleks öeldes, minu roll oleks ülitagasihoidlik versioon arvutimängu Fallout4 robotitehase{arhiivkoopia} omanikust enne tuumasõda või kuhjaga tagasihoidlikum versioon Alien'i Sevastopol kosmosejaama{arhiivkoopia} robotitehase omanikust.) Suures plaanis vaadates, ega mul mingeid muid võimalusi ei olegi kui midagi kokku panna endale kättesaadavatest komponentidest, üritades kokkupandut luua sellisena, et kasutatud komponente saaks üksikult teist tüüpi, teiste tootjate poolt loodud, komponentidega asendada, kiigates samal ajal võimalusi, et kas mul endal ehk õnnestub mõnda komponenti ise toota, odavalt ja täpselt sellisena, nagu mina ise seda saada soovin.


Viiteid ja lisa-ideid


Viiteid siit samast wikist