Slo-Tech - Povedali smo že, da v majhnem helikopterju Ingenuity, ki ga je rover Perseverance vzel s seboj na Marsu, tiktaka čisto običajen procesor Snapdragon 801. Danes pa poglejmo, kaj najdemo v roverju. Na prvi pogled ga poganja uboren procesor, ki tiktaka s 110-200 MHz. Gre za procesor RAD750 britanskega podjetja BAE Systems, ki je po arhitekturi združljiv s PowerPC 750.
Pogled na specifikacije kaže, da so imeli razvijalci v mislih vse kaj drugega kakor največjo hitrost. Zgrajen je v ogromni 250-nm tehnologiji, sam čip pa ima 10,4 milijona tranzistorjev in meri 130 mm2. Njegove glavne odlike pa so odpornost na sevanje - do 10.000 grejev - širok temperaturni razpon delovanja od -55 do 125 °C in nizka poraba energije (5 W). Celoten sistem skupaj s ploščo je nekoliko bolj občutljiv (do 1000 grejev in 70 °C), a še vedno zelo trpežen. Zaradi teh lastnosti je RAD750 priljubljen čip za vesoljske misije, denimo Deep Impact, teleskop Kepler ali rover Curiosity. Proizvajalec trdi, da ga uporablja več kot 250 vesoljskih plovil ali strojev. Mimogrede, tak čip stane 200.000 dolarjev, v Perseverance pa sta dva glavna (redundanca je pomembna reč), tretji pa krmili Vision Compute Element (VCE). Pričakujejo, da se "modri zaslon" pojavi enkrat na 15 let, takrat pa bo težavo rešil drugi čip, ki bo prvega tudi resetiral. Operacijski sistem, ki krmili vse skupaj, pa se imenuje VxWorks. Gre za vgradni (embedded) sistem, ki na Zemlji teče v več kot poldrugi milijardi naprav. Razvilo ga je podjetje Wind River Systems.
Vsem vesoljskih misijam so skupni počasnejši, a preizkušeni in posebej utrjeni procesorji. V roverju Sojourner na Pathfinderju (1997) smo imeli Intelov čip Intel 80C85 s frekvenco 2 MHz in 512 kB pomnilnika, pa je bilo dovolj. Mars Exploration Rover (2004) je imel IBM RAD6000 z 20 MHz in 128 MB pomnilnika, Mars Science Laboratory (2011) pa že BAE Systems RAD750 z 200 MHz. Tako je tudi pri Perseverance, kjer procesorju družbo dela 256 MB pomnilnika in 2 GB prostora za shranjevanje podatkov.
... Mars Science Laboratory (2011) pa že BAE Systems RAD750 z 200 MHz. Tako je tudi pri Perserveranceu, kjer procesorju družbo dela 256 MB pomnilnika in 2 GB prostora za shranjevanje podatkov.
Torej gre dejansko za vsaj 10 let staro (in preizkušeno) tehnologijo.
Hrabri mišek (od 2015 nova serija!) -> http://tinyurl.com/na7r54l
18. november 2011 - Umrl je Mark Hall, "oče" Hrabrega miška
RTVSLO: http://tinyurl.com/74r9n7j
... Mars Science Laboratory (2011) pa že BAE Systems RAD750 z 200 MHz. Tako je tudi pri Perserveranceu, kjer procesorju družbo dela 256 MB pomnilnika in 2 GB prostora za shranjevanje podatkov.
Torej gre dejansko za vsaj 10 let staro (in preizkušeno) tehnologijo.
Najmanj 20let,... ko tech začnejo uporabljat v space zadevah, je dejansko že najmanj 10 let od tega, ko je bila skupaj spackana, potem pa testiranje in popravljanje in šele potem lansiranje nad naše glave,.
Ce eksplicitno ne odgovorim osebam PNG ali PR,..I dont care about your opinion.
VxWorks ... še za curiosity sem bral, da uporabljajo res le manjši del tega OSa. Recimo vse memory alokacije v rover kodi so statične in njihova velikost vnaprej preračunana. Dinamičnih memory alokacij se ne grejo, ker so preveč nepredvidljive in zato neprimerne za mission critical okolje kot je rover na marsu. Podobno kot npr. na praktično vseh switchih in routerjih danes teče linux, a le za process management, network stack je proprietary. Verjetno se še spomnite zgodbe, ko je nekaj tednov po pristanku na marsu curiositiyju zaribal flash in so ga morali na remote reformatirati? Greatest hack ever ;)
... Mars Science Laboratory (2011) pa že BAE Systems RAD750 z 200 MHz. Tako je tudi pri Perserveranceu, kjer procesorju družbo dela 256 MB pomnilnika in 2 GB prostora za shranjevanje podatkov.
Torej gre dejansko za vsaj 10 let staro (in preizkušeno) tehnologijo.
Pa najbrž še military grade zaradi hitrih delcev, ki bi lahko pokvarili pomnilnik.
VxWorks ... še za curiosity sem bral, da uporabljajo res le manjši del tega OSa. Recimo vse memory alokacije v rover kodi so statične in njihova velikost vnaprej preračunana. Dinamičnih memory alokacij se ne grejo, ker so preveč nepredvidljive in zato neprimerne za mission critical okolje kot je rover na marsu. Podobno kot npr. na praktično vseh switchih in routerjih danes teče linux, a le za process management, network stack je proprietary. Verjetno se še spomnite zgodbe, ko je nekaj tednov po pristanku na marsu curiositiyju zaribal flash in so ga morali na remote reformatirati? Greatest hack ever ;)
VxWorks sploh ni slab. En tak Unix like embedded OS. Delal tam 20 let nazaj na njem.
In ko ga rabiš, pač prevedeš tisto kar je uporabno. Fajn zadeva. Mal pogrešam prčkanje po teh zadevah.
"Life is hard; it's even harder when you're stupid."
To ni nova stvar za rover, ker je že curiosity to uporabljal. Pa da ne bo kdo mislil da zaradi tega lahko rover deluje dolgo časa (z vsemi inštrumenti), saj proizvedene energije se majnša tekom let zaradi polovilni čas plutonija.
In treba upoštevati da je že nekaj časa star plutonij. Recimo voyager bo leta 2025 nehal proizvajati zadostne količine energije za inštrumente ki so še aktivni. Isto bo z rover kjer bodo tekom let morali izklapljati inštrumente, zaradi majn proizvedene energije.
Ne vem, koliko ima to veze z modernimi programerji. Vse to, kar je opisano, so čisto standardne prakse pri razvoju sistemov, ki morajo biti zanesljivi. Določeni ključni deli kode se pogosto celo formalno preverijo, da so pravilni. Primer takega kosa kode je npr. seL4, ki je v celoti formalno preverjen. Seveda pa je vse to povezano z visokimi stroški, ki pri večini običajnega programja niso opravičeni.
Drži. A zanesljivost je ponavadi nekje na dnu prioritet modernih programerjev ... na to ciljam. In cloud ter container mentaliteta tak odnos samo še krepi.
Drži. A zanesljivost je ponavadi nekje na dnu prioritet modernih programerjev ... na to ciljam. In cloud ter container mentaliteta tak odnos samo še krepi.
Ja, to definitivno drži...
Na hitro spacane rešitve z dockerjem (po možnosti snetim z neta) in nekim cloudom, potem pa milijon support ticketov, ker nihče ne ve kaj je narobe. Dokumentacija je pa tako ali tako samo nekaj nadležnega...
"Life is hard; it's even harder when you're stupid."
Online prihajajo mladi programerji, kjer jim je doslednost sekundarnega pomena. Pomembni so jim hitri rezultati in good enough.
Ko bodo delali peti rover bo težava, ker programerjev s tako logiko in razmišljanjem ne bo več, oz. bo trening težavnejši. Nadomestili bodo vrjetno s kvantiteto in ne kvaliteto.
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Če z modernimi misliš slabimi (ali povprečnimi), potem se strinjam. Ampak ker je programerjev in programja vedno več, je trenutno (in prihodnje) stanje na tem področju kar se mene tiče več ali manj pričakovano. Včasih pač ni mogel biti vsak programer...
Včasih ko ni bil vsak lahko __(insert profession)__, so posamezniki, ki so bili....bili izjemno specializirani, vešči in kompetentni. Inovacij je bilo manj in manj bogate, a bolj zanesljive in dosledne.
Case in point je recimo SpaceX. Na svojemu dragonu ni inštalirala RAD CPUja, ampak je raje spacala skupaj 3 off-the shelf PCje, ki furajo v paralelki in upala, da vsaj eden od teh preživi dovolj dolgo za misijo.
Za recimo rover to ne bi prišlo v poštev, ker so resursi izredno limitirani.
Nasploh opažam, da z modernimi generacijami se celotna znanost premika iz elegantnih in jedrnatih metod, na brute force numerične. Če so včasih fiziki iskali elegantne enačbe, danes zmečemo tono surovih podatkov v stroj in upamo, da bo najdlo kaj uporabnega.
Gre za celoten zeitgeist znanosti, ki ga ne moreš kar tako spremeniti čez noč za en projekt.
V idiokraciji v katero drvimo...povsem pričakujem, da bodo future vesoljske odprave imele kar copy-pejstane rešitve iz git huba.
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Bruteforce metode (programiranja) lahko komot uporabiš, ko imaš na voljo resursov ko dreka. Ampak v resnici resursov ni ko dreka nikjer in prej ali slej trčiš v limito sposobnosti trenutnega HWja. Razlika med boljši in slabšim programerjem je, da boljši to razume, slab pa pač ne. Zelo dobrih programerjev, ki znajo iztisnit zadnje promile hitrosti in/ali procent več pri stabilnosti, pa skoraj ni več. So minili časo, ko je bilo treba spackat celo igro v 16kB ali pa 64kB ali pa bohnedej v kakšen atmel 8051 z 1kB :D Zdaj niti nek šašav program z manj kot 10MB sploh ne obstaja.
SpaceX uses an Actor-Judge system to provide triple redundancy to its rockets and spacecraft. The Falcon 9 has 3 dual core x86 processors running an instance of linux on each core. The flight software is written in C/C++ and runs in the x86 environment. For each calculation/decision, the "flight string" compares the results from both cores. If there is a inconsistency, the string is bad and doesn't send any commands. If both cores return the same response, the string sends the command to the various microcontrollers on the rocket that control things like the engines and grid fins.
Bruteforce metode (programiranja) lahko komot uporabiš, ko imaš na voljo resursov ko dreka. Ampak v resnici resursov ni ko dreka nikjer in prej ali slej trčiš v limito sposobnosti trenutnega HWja. Razlika med boljši in slabšim programerjem je, da boljši to razume, slab pa pač ne. Zelo dobrih programerjev, ki znajo iztisnit zadnje promile hitrosti in/ali procent več pri stabilnosti, pa skoraj ni več. So minili časo, ko je bilo treba spackat celo igro v 16kB ali pa 64kB ali pa bohnedej v kakšen atmel 8051 z 1kB :D Zdaj niti nek šašav program z manj kot 10MB sploh ne obstaja.
Exactly.
Je pa te moderne programerje rešila tehnologija. S tem, ko smo razvili boljše baterije, smo lahko začeli uporalbjati 3 standardne proce namesto enega dobrega.
Prej ali slej bomo naleteli na fizični limit in bo treba malo boljše začeti optimizirati. Case in point...stanje modernih procesorjev. Moorov zakon se zaključuje in performance dobivamo preko optimizacije in ne več brute-forcea.
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Vrjemite ali ne...kvaliteta programerjev ni toliko odvisna od stanja tehnologije...ampak funny enough...stanja psihe.
Včasih ko ni bilo tiktoka in instant gratifikacije...nihče se ni počutil "missing out" in je lahko cele dneve zabil za rešitev nekega problema. Danes ko se je življenje pohitrilo...tak način reševanja težav ni več intuitiven mladim.
Kot rečeno...gre za zeitgeist in ne zgolj materialno stanje.
S prihodnjimi vesoljskimi plovili bomo montirali dva RTGja za 3 standardne procesorje... ...zato ker bomo vrjetno imeli večje rakete na voljo, ki bodo lahko to transportirale tja.
Ampak kot rečeno...prej ali slej se bomo zaleteli v fizikalni zid.
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Če zanemarič rdeč trendline in plotaš polinomni, potem že deluje nekoliko bolj položno, če že ne rahlo napoveduje negativno. Sicer pa nisem prepričan, oz. precej siguren sem, da razpolovitev velikosti tranzistorja ne pomeni nujno prepolovitev power consumptiona. Prebrisana arhitektura pa pri isti velikosti proizvodnje pomeni zagotovo manjšo porabo ob istem performanceu. aka. ARM
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Ne rabiš biti pokroviteljski. Včasih, davno tega, v drugem svetu, so bili dobri, ker so samo taki bili programerji. Danes je to lahko vsak. In tako je tudi prav. Nobene potrebe ni, da bi nek programčič na sodobnem PCju ustvarjal vrhunski programer ali ekipa njih, zato, da bo namesto 60MB zasedel 20MB prostora na disku in se odprl pol nanosekunde hitreje. Prava reč, če Chrome požre 5GB rama, saj ga je še 10gb najmanj zadaj. Bi bilo bolje, če bi bil optimiziran do zadnjega bita? Seveda, ampak ti ne bi plačal za to poštene cene. NASA pa mora.
Ne rabiš biti pokroviteljski. Včasih, davno tega, v drugem svetu, so bili dobri, ker so samo taki bili programerji. Danes je to lahko vsak. In tako je tudi prav. Nobene potrebe ni, da bi nek programčič na sodobnem PCju ustvarjal vrhunski programer ali ekipa njih, zato, da bo namesto 60MB zasedel 20MB prostora na disku in se odprl pol nanosekunde hitreje. Prava reč, če Chrome požre 5GB rama, saj ga je še 10gb najmanj zadaj. Bi bilo bolje, če bi bil optimiziran do zadnjega bita? Seveda, ampak ti ne bi plačal za to poštene cene. NASA pa mora.
Poboldan ključen del.
Enkrat ko delaš vse na nož, mora biti tudi koda na nož. Problem je ker moderne generacije smo prestrašili za uporabo ostrih nožev in jim dali papirnate in zaobljene.
There will be chutes!
It came from the lab.
Like tears in rain. Time to die. v_1 2012-21
Ne rabiš biti pokroviteljski. Včasih, davno tega, v drugem svetu, so bili dobri, ker so samo taki bili programerji. Danes je to lahko vsak. In tako je tudi prav. Nobene potrebe ni, da bi nek programčič na sodobnem PCju ustvarjal vrhunski programer ali ekipa njih, zato, da bo namesto 60MB zasedel 20MB prostora na disku in se odprl pol nanosekunde hitreje. Prava reč, če Chrome požre 5GB rama, saj ga je še 10gb najmanj zadaj. Bi bilo bolje, če bi bil optimiziran do zadnjega bita? Seveda, ampak ti ne bi plačal za to poštene cene. NASA pa mora.
Poboldan ključen del.
Enkrat ko delaš vse na nož, mora biti tudi koda na nož. Problem je ker moderne generacije smo prestrašili za uporabo ostrih nožev in jim dali papirnate in zaobljene.
Ne bluzi, danes so orodja za optimizacijo in verifikacijo svetlobna leta pred tistimi v "dobrih starih časih". In to z razlogom!(tudi pradavni programerji so ga radi kje posrali)
Drži. A zanesljivost je ponavadi nekje na dnu prioritet modernih programerjev ... na to ciljam. In cloud ter container mentaliteta tak odnos samo še krepi.
Al pa ce bi vsi skupaj nehal kr tko mal posplosevat? Sploh s taksnimi off-topic iz riti potegnjenimi ranti. Eno je programiranje weba, drugo je programiranje mission critical stvari.
Curiosity in Perseverance koda je narjena tko, da so posamezni sklopi svoji kontejnerji, ki si med seboj posiljajo sporocila. Evo ti kontejner mentaliteto ...
Fuck, kot da bi vsi skupaj kolektivno pozabili na horde clipperasev, ki so pisali klobasaste glavne knjige in saldakonte, ki jih na koncu skupaj z Netware driverjem za mrezno kartico nisi vec mogel pognati s 640kB RAMa in je pol programer mojstrsko instaliral spiratiziran Automenu(tm) zato, da so v pisarnah izbiral a bodo delal z mrezo al z glavno knjigo. Extended rama ni znal noben ponucat, ker je blo pretezko in je blo treba delat s heap alokacijo, protected mode v DOSu je bla pa itak znanstvena fantastika.
Nehajte z bebavim romantiziranjem in nostalgijo, ker takrat smo mel tud taksne, ki so takoj hitel razlagat kako si vcasih na C64 lahko naredil fuckload stvari in tega teli crappy programerji dandanes sploh ne znajo vec narest potem pa porabijo 10x vec rama...
Eno je programiranje weba, drugo je programiranje mission critical stvari.
Tu je srž problema - ti dve stvari sta identični, čeprav se svet obnaša kot da nista. Ves web, s katerim sem delal, je bil mission critical - folk se je silno sekiral za vsako sekundo izpada. Bolj ko sem jim dopovedoval, da imajo popolnoma napačen pristop, če želijo visoko razpoložljivost, bolj so trmarili v svojo smer in na kup vlekli še več gnoja. In to počnejo še danes. In so srečni, ker jim je norma, da vsake toliko malo trpijo in so pod stresom. Normalni ljudje naredimo nekaj enkrat in kolikor blizu se da "za vedno". To za današnji web ne velja več. Na srečo sem si uspel najti nišo v ITju, kjer je uporabniški vmesnik praktično nespremenjen že pol stoletja in se od te web zmede uspel odmakniti.
web se je spremenil in razvil v teh letih neverjetno. Celo najbolj uporabljan cross platform GUI je počasi electron. Ampak backend koda na sebi lahko traja dolgo, zelo dolgo.
C ne bo nikoli varen, ker ni dizajniran za varnost. Vmes se je na področju jezikov naredilo precej. Od testinga do compiletime verifikacije.
Normalni ljudje naredimo nekaj enkrat in kolikor blizu se da "za vedno".
Potresi, huligani, moda, tehnologija...
Sicer pa curiosity koda je za upravljanje roverja eksperimenti imajo spet svoje rešitve. Zadeva se je obnesla zakaj bi menjali.
Moj favorit med jeziki je Spark ADA, ker implementira bolj ali manj vsa priporočila z C dokumenta zgoraj na način, da ti aktivno onemogoča pisat kodo na način, ki se ga ne da preverit. Pričakovano obnašanje kode pišeš vanjo v obliki komentarjev, nakar ti prevajalnik pove, kje si mentalno spregledal nedefinirana stanja. Zelo humbling experience za vse "jaz to obvladam" heroje.
Tu je srž problema - ti dve stvari sta identični, čeprav se svet obnaša kot da nista.
Nista identicni. Imas mission critical stvari in imas stvari, ki niso mission critical. Imas stvari za katere moras v vsakem momentu vedeti kje je kak bit in kaj pocne in moras zgubljati cas, da pises kodo tako, da se tega zaveda in imas stvari pri katerih je to nepotrebno in predstavlja metanje denarja v pec, ce to pocnes.
Posplosevat, da se nekaterih stvari ne pocne, ker jih ljudje ne znajo, vcasih so jih pa znali, je neumnost.
Imas mission critical stvari in imas stvari, ki niso mission critical.
Drži. Razloži to vsem web ekipam, ki se afnajo, da rabijo najmanj 6 devetk v svoji razpoložljivosti, gradijo jo pa z orodji, ki v najboljšem primeru omogočajo nekje 70% razpoložljivost. Anyway, jaz se tega ne grem več, sizifovo delo. Če ljudje uživajo v trpljenju, jim ne moreš pomagat.
@pegasus & BigWhale: Po mojem mnenju je delež slabih/dobrih programerjev približno enak skozi leta ... ker pa se število programerjev povečuje, se posledično povečuje število slabih (lenih) programerjev. In ti so ponavadi tudi najbolj glasni...
Delam v jeziku, ki se ponavadi giblje okrog 40. mesta po popularnosti, se pa veliko uporablja v proizvodni industriji. Ni ravno space mission critical, je pa mission critical za business. Pred leti sem še trudil pridobivat projekte, ampak ponavadi so posel dobili tisti "bolj glasni" in z vezami. Odkar sem se preusmeril samo v "popravljanje" sw imam dela več kot prej, stresa pa 2x manj. Naročnik ima na podlagi (slabih) izkušenj namreč že zelo točno izoblikovane zahteve, teste in želje, ter seveda najbolj pogoste napake. Dobim source (špageti) kodo, jo analiziram, in spišem na novo v malo bolj modernem frameworku (Actor Model), jo rigorozno testiram in optimiziram za znani hw. Do sedaj še nisem imel servisnega zahtevka.
Tako da, za moj poslovni model je super, da obstajajo slabi, leni, copy/paste programerji ... dober glas seže v deveto vas, slab pa še dlje (in hitreje).
Moj favorit med jeziki je Spark ADA, ker implementira bolj ali manj vsa priporočila z C dokumenta zgoraj na način, da ti aktivno onemogoča pisat kodo na način, ki se ga ne da preverit. Pričakovano obnašanje kode pišeš vanjo v obliki komentarjev, nakar ti prevajalnik pove, kje si mentalno spregledal nedefinirana stanja. Zelo humbling experience za vse "jaz to obvladam" heroje.
Vsak Turing complete sistem ima nedefinirana stanja. FSM je pa izrazno prešibak za splošno rabo. Sicer je pa firmware v DIJ dronih najbrž vsaj 10x bolj kompleksen kot v telih roverjih.
Najbrž res. Ker če pade ta drobiž vredna igrača na tla, greš v trgovino in za pest drobiža v dveh sekundah kupiš drugo. Kako pa to izgleda pri tem roverju? Drobiž in dve sekundi?