Hitrost računalnikov
Pozdrav,

Pred kratkim sem se lotil branja bloga nekega bivšega IBMovega razvijalca in specialista za clusterje... torej skupke računalnikov. Blog je poln smešnih opomb o arhitekturnih napakah v modernih računalnikih, ki so tudi mene vedno motile.

Zato sem se odločil da napišem še lasten blog da vas opozorim na zanimiv pojav ki sem ga odkril med razvijanjem mojega operacijskega sistema. Operacijski sistem sem razvijal z namenom da stvari naredim tako kot se za gre in ne delam takih oslarij kot jih je naprimer zaslediti v Windowsih. Na kratko recimo samo to da je povprečen računalnik izpred 10ih let dovolj dober za tiste pisarniške potrebe ki jih imamo danes, vendar pa zaradi slabega programiranja to ni očitno. Ceni se tisto kar se da na hitro izdelati, ne pa tisto kar je za uporabnika najboljše... no ampak to je filozofska debata ki bi jo pustil za kdaj drugič.

Ko sem programiral operacijski sistem sem ugotovil da se pohitritve ne kažejo na tistih mestih in okoliščinah kot sem pričakoval. Pričakoval sem, da se bo z kodo, ki je 10x manjša od kode kakega drugega operacijskega sistema pojavila 10x boljša odzivnost na vseh računalnikih - od najstarejših do najnovejših. Vendar začuda temu ni tako... koda ki je bila krajša je bila na prastarih računalnikih skoraj enako hitra kot na najnovejših. Razlog za ta pojav se skriva v arhitekturi modernega računalnika...

Če prikažem situacijo kot grafikon, vzemimo tri generacije računalnikov:
1. 486ke ki jih vsi razumemo kot prastari računalniki
2. Pentiumi 3 1,5 GHz, srednja generacija, v zlati dobi bitke za procesor z največ GHz
3. Athlon 64 4400+, moderni računalnik, nalašč vzel malo starejši model

Od teh generacij pa vzamem tri sestavne dele z katerimi najlepše prikažem neuravnovešenost moderne arhitekture:
a) Procesor, del ki je v novejših računalnikih najbolj disproporcionalno hiter in ki ga pogosto smatramo kot edinega pomembnega pri merjenju hitrosti računalnika
b) Severni most, del nabora čipov, predstavlja fizično povezavo med procesorjem in ostalimi komponentami, torej skrbi za komunikacijo med deli računalnika
c) Južni most, del nabora čipov ki je ločen ker opravlja počasnejše naloge, predstavlja fizično povezavo med severnim mostom in diski, USB porti, itd


Opomba: Grafikon je na logaritmični skali da se sploh kaj vidi, to pomeni da so razlike precej bolj radikalno različne kot izgleda, glej številke ob strani, enota je MB na sekundo, gre pa za orientacijske vrednosti.

Arhitekturni razvoj osebnega računalnika se je začel v obliki dragih kosov opreme: #1 Tu se je IBM potrudil in izbral nekaj dobrih standardov: Hiter dostop do periferije, malo počasnejši vmesnik ki sicer ni omogočal popolnega izkoristka periferije je bil pa zato univerzalno standarden in zgledno hiter procesor. #2 Skozi razvoj se je ta počasni vmesnik zamenjal z takim ki je omogočal poln izkoristek periferije. Potem pa se je zgodil veliki preskok(!): Procesorji so bili zmeraj hitrejši, začela se je tekma za procesor z največ GHz. Procesorji so postali disproporcionalno hitrejši. #3 Končno se je zgodilo tisto kar bi se počasi že lahko: Začel se je razvoj periferije (PCI Express, HyperTransport, itd) da so hitrosti postajale bolj primerne hitrosti procesorja.

Razlog zakaj so hitrosti periferije tu tako pomembne in imajo tako nepričakovano velik vpliv je v tem da se deli operacijskega sistema na katerih sem delal ukvarjajo predvsem z pošiljanjem ukazov periferiji računalnika. Zanimivost, na katero še pomislil nisem ko sem vse skupaj pisal, pa je ta da ko računalnik pošlje ukaz periferiji iz procesorja, počaka da ta vrne odgovor, kar seveda pomeni da v kolikor si te ukazi sledijo en za drugim, je hitrost računalnika ne glede na hitrost procesorja v tej fazi odvisna zgolj in samo od tega kako hitro periferija odgovarja.

Na tem področju je zaradi enakih standardov ki se uporabljajo v vseh primerih, performančna razlika med računalnikom generacije 1 in računalnikom generacije 3 ob uporabi istih programov nična, ne glede na 15 let razvoja ki se je zgodil vmes in za več velikostnih razredov hitrejše procesorje ki jih imamo dandanes.

To seveda ni slepa ulica saj so možne tudi drugačne izboljšave, je pa zanimivo kako se je napredek na področju računalništva zadnjih 15 let usmerjal predvsem v podpiranje programerske lenobe in z tem nizkokvalitetnih izdelkov z katerimi imamo opravka dandanes.

Računalnik v osnovi ni orodje za opravljanje čim več ukazov na sekundo, pa naj bodo celoštevilski ali taki z plavajočo vejico. Prav tako računalnik ni orodje za čim hitrejši dostop do podatkov v spominu. Računalnik je orodje za delo z podatki iz resničnega sveta, sveta okoli računalnika, se pravi periferijo. Delo z bizarno najpočasnejšim delom računalnika.

Tu pa se pojavi problem ki mi te dni najbolj para živce... Kako ljudje pojmujejo test zmogljivosti iz resničnega sveta za programsko in strojno opremo: Najprej ocenijo računalnik na podlagi tega da izberejo operacijski sistem ki kvačka v tri krasne namesto da bi delal, in zato potrebuje več velikostnih redov hitrejši procesor da deluje gladko. Potem pa na istem računalniku ocenjujejo unčinkovitost različnih operacijskih sistemov: Seveda, tisti ki dejansko samo delajo namesto da bi kvačkali ne izkoristijo 5% zmogljivosti, pa niso zato v končni fazi prav nič hitrejši.

Kritiki: Predvidljivi ste kot zlate ribice in pustite se zmanipulirat čisto vsaki korporaciji ki ima kak interes. Oziroma kot je lepše povedal avtor zgoraj omenjenega bloga (o korporacijah tipa Intel in njihovi uporabi imen tehnologij): "Polluting the language for perceived gain, or just from ignorance, by needlessly redefining words. It damages our ability to communicate, causing people to have arguments about nothing."

Včasih pomaga da ima kdo kaj pojma. :)

LP,
Jure

Oddano: 03.05.2009 ob 21:46:17
RTV Kategorija: Nove tehnologije
Natisni
Priporoči
Neprimerna vsebina
 
Oceni:

Ogledi 515 | Ocena 3.5 od 12 glasov

Blog: Komentarji
Prijavi sovražni govor
1.
večja moč distribuiranim enotam....torej periferiji in vmesnikom......

odličen blog Jure

pozdravljen
MooNmaN
pred 476 tedni
2.
odlično! lp
brane13
pred 476 tedni
3.
Hvala. :)

LP
DustWolf
pred 476 tedni
4.
To seveda ni slepa ulica saj so možne tudi drugačne izboljšave, je pa zanimivo kako se je napredek na področju računalništva zadnjih 15 let usmerjal predvsem v podpiranje programerske lenobe in z tem nizkokvalitetnih izdelkov z katerimi imamo opravka dandanes. in obračanje kupcev ob različnih Deluxe XYZ verzijah in neštetih plačljivih nadgradnjah ob nesramno neoptimiziranih kodah in groznih compiler-jih.

Bom podal primer hitre kode, ki je sicer napisana v Assembler-ju, katero seveda ne moremo primerjati s ne/komercialnimi razvojnimi orodji, ampak, kot primerjavo radovednežem. Podal bom Link programov katerega lahko snamete in zaženete za vzorec. Programček Vam bo predstavil nekajminutno grafično seanso ob zvočni spremljavi. Dolg je 64Kb, kar pomeni da gre lahko nekje približno 18 krat na disketo ali 10155 krat na CD.

Oprla se Vam bo stran, kjer izberete server za dolpoteg, nato razpakirajte datoteko. Računalnik mora imet 3D-kartico. Če se Vam prikaže meni ob zagonu si izberite Windowed in ločljivost 800*600. Jaz sem sicer registriran na tej spletni strani tako, da ne vem ali se Vam bo potebno povprej registirati. Je pa vsekakor zanimivo za pogledat....

Link1: http://www.scene.org/file.php?id=251063
Link2: http://www.scene.org/file.php?id=312783
Link3: http://www.scene.org/file.php?id=508478
Link4: http://www.scene.org/file.php?id=372899

1.-nemogoče je ustvariti slednji program s konvencionalnimi orodji in tehnikami
2.-nemogoče je stlačiti video, tudi z največjo kompresijo v tako majhno dimenzijo obsega dolžine
3.-to je optimizirana koda na strojnem nivoju z poznavanjem raznih zakonitosti programiranja in poznavanje strojne opreme
4-primer ni namenjen primerjavi nesramno slabo izprogramiranih aplikacij, ampak prikaz zmožnosti nesramno optimiziranih aplikacij.

Lp, 5
Afnagunca
pred 476 tedni
5.
Yee... scene.org :)) DemoScena forever. :)
DustWolf
pred 476 tedni
6.
:)), dobri so toti iz scene....
Afnagunca
pred 476 tedni
7.
huh.....prvi link sem pogledal....ne štekam kak 64k? lahko za na kratko in površno za laika kdo razloži? :P
lemur
pred 476 tedni
8.
Bom napisal. Upam, da bo še nekdo kaj dopisal.

64K je velikost pomnilnika, velikost podatka v pomnilniku ali velikost datoteke kjerkoli, ki je lahko program, dokument, slika ali karkoli. Npr. v 80-letih so bili pomnilniki na računalnikih običajno nekje na K-jih 'kilobajti' (K je označba za kilo=1000, v računalništvo pa je K=1024...zakaj je tako, kdaj drugič). V 90-tih se je pomnilnik širil na M-je megabajti (M je označba za milijon, v računalništvu 1024Kb). V Mileniumu smo počasi prešli na G-je 'gigabajt' (G je označba za milijardo, v računalništvu 1024Mb). Pomnilniki se merijo v Kb,Mb in Gb. Počasi se že bližamo na Tb-je terabajt (T je označba za bilijon ali računalniško 1024Gb. In kaj vse to skupi pomeni?

Tole:

1 bit =vsebuje informacijo ena ali nula. (Bit je lahko ena ali nula. Na tak način se pišejo in berejo vsi podatki v digitalizirani obliki. Manjše ali večje od nule ali ene ni, ker sta to v bistvu edini zapis v digitalnih napravah ali pa si ga lahko predstavljamo, da sti ena in nula edini številki ki jih digitalna elekrtonika pozna.)

Ker je strokovnjakom bilo nerodno se ukvarjati se z nulam in enkam so se začeli poslužavati lažjim načinom zapisa podatkov. Seveda so morali strokovnjaki uvesti nova elektronska vezja za avtomatsko obdelavo enic in nul v bolj enastavno obliko...neke vrste kodirnik, ki je zbral osem enk in nul v en paket in jih predstavil v željen simbol. Te simboli so se sčasoma standardizirali, tako kot vrsta paketov. Iz osem so razvil paket za 16-bitov naenkrat in tako naprej. Ampak tudi s tem niso bili zadovoljni. Zato so več vrst simbolov združili v ukaze in rojevati se je začel računalniški jezik. Namesto da bi premetavali enke in nule, so sedaj preko kodirnikov programirali in ustvarjali programe. Za vsak korak so morali naštancati novo, bolj izpopolnjeno vezje, ki bi bilo sposobno, kodirati in/ali dekodirati informacije. Tako so se digitalna elektronska vezja sčasoma prelila v mikroprocesor-vse v enem itn, spomin za shranjevanje je pa zunaj, od RAM-a do trdega diska itn.

1 bajt =8 bitov je tudi dolžina enega znak. Če npr. napišete v Notepadu en znak, Vam bo ta zasedel 1bajt
1Kb=1024 bajtov -----> 64K=65536 bajtov, se pravi, da je program iz Link-ov dolg 65536 znakov.
1Mb=1024Kb Če bi si posneli npr. Link 1 program v obliki videa, bi za eno minuto potreboval 565Mb. Če ga bi spravili v DivX bi bil video dolg 60Mb ob padcu kvalitete (zaradi Divx-a)

1Gb=1024Mb
1Tb=1024Gb

Tole: Če kupite danes povprečen računalnik boste nabrž imeli 1Gb-RAM 'RAM je kratica za fizični spomin računalnika', in recimo 500Gb trdi disk (zunanji spomin, kjer si shranjujete podatke) etc. Sedaj pa na spletu poiščite kakšno preprosti igrico ali program in ga primerjajte s programi z Linki 1-4. Ali boste našli kaj podobnega.....Njak.

V pomoč pa še en link: Link

Upam, da nisem preveč zakompliciral.. Lp
Afnagunca
pred 476 tedni
9.
Za lažjo primerjavo še en primer, :)

Na slednjem linku je slika letala velika 69Kb Link ,progami na linkih 1-4 pa so veliki 64Kb.

Letalo je navadna Jpg slika, statična za vekomaj, moji linki so pa spactacel napram slike.....
Morda Vam bo sedaj lažje razumeti primerjavo in namen komentarjev z moje strani.

...uf, zdej grem pa spat. Ln
Afnagunca
pred 476 tedni
10.
afnagunca...si se pa potrudil...bravo....;o)
MooNmaN
pred 475 tedni
11.
Ok. predpostavimo da načeloma razumem :P Še vedno je, zame, uganka KAKO to spraviš v 64K?
lemur
pred 475 tedni
12.
Sem imel veselje takrat mal dolgovezit.. :). Je pa vsekakor zelo zanimivo temo podal DustWolf . Sicer se pozno oglašam in na zadnji odgovor ne bom znal dobro odgovoriti, ker še sam nevem kako jim uspe toliko stlačit v tako majhen program. Prvo, kot je, je uporaba, meni za zdaj neznanega kompresijskega algoritma, lahko si ga predstavljamo kot ZIP ali RAR, kateri med zagonom raz-kompresira podatke v programu 'mogoče tudi izvorne koda programa'.-se še nisem pozanimal. Drugače pa njihova scena uporablja svoja 3D-orodja za ves njihov 3D-spektakel. Tudi za teksture po vsej verjetnosti uporabljajo programske algoritme in ne gole teksture, kot je to navada v igrah.
Afnagunca
pred 473 tedni
13.
PS. ....in temeljito poznavanje matematike in programiranja.
Afnagunca
pred 473 tedni
14.
dobro napisano! :)
Matjaž-SOSiGO
pred 435 tedni
Oddaj svoj komentar
Za komentiranje morate biti prijavljeni. Komentarji ne odražajo stališča uredniške politike RTV Slovenija.
Zadnji komentarji
Povezave
Uporabnik še ni dodal povezav.
Vsi blogi avtorja

201720182019
JanFebMarAprMajJun
JulAvgSepOktNovDec
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1



Št. registriranih uporabnikov: 183586
Forum avtorjev: 15868 Forum teme: 34414 // Odgovorov: 1872277
Blog avtorjev: 3584 // Blogov: 86271 // Komentarjev: 1237828
Avtorji fotografij: 26127 // Slik: 221241 // Videov: 18398 // Potopisov:
© RTV Slovenija (ISSN 1581-372X) | FAQ | Impresum | 1995-2009 | Vse pravice pridržane
" "