{"id":1461,"date":"2014-05-17T12:56:40","date_gmt":"2014-05-17T11:56:40","guid":{"rendered":"http:\/\/www.matjazev.net\/blog\/?p=1461"},"modified":"2014-05-17T13:18:25","modified_gmt":"2014-05-17T12:18:25","slug":"hitrost-racunalnika-in-virtualne-zivalice","status":"publish","type":"post","link":"https:\/\/www.matjazev.net\/blog\/2014\/05\/17\/hitrost-racunalnika-in-virtualne-zivalice\/","title":{"rendered":"Hitrost ra\u010dunalnika in &#8220;virtualne \u017eivalice&#8221;"},"content":{"rendered":"<p>Dana\u0161nji prispevek nima hude uporabne vrednosti, <strong>ponuja pa zanimiv pogled na mo\u010d dana\u0161njih ra\u010dunalnikov.<\/strong><\/p>\n<p>V zadnji \u0161tevilki reviji \u017dIT (<a href=\"http:\/\/www.tzs.si\/revija-zit\/revija-zit\">\u017divljenje in tehnika<\/a>) je tudi \u010dlanek o evolucijskih algoritmih. Ker se s to vedo ra\u010dunalni\u0161tva nisem ukvarjal vse od programiranja prvih preprostih programov in posledi\u010dno tki. &#8216;Igre \u017eivljenja&#8217;, sem \u010dlanek z veseljem prebral.<\/p>\n<p>\u010cisto tako vmes: &#8216;Igra \u017eivljenja&#8217; je zelo <a href=\"http:\/\/www.presek.si\/11\/639-Rojko.pdf\">preprost ra\u010dunalni\u0161ki algoritem<\/a>, kjer je svet predstavljen kot 2D mre\u017ea. V vsakem polju na mre\u017ei lahko \u00bb\u017eivi\u00ab organizem. V kolikor je ob njem \u0161e en organizem, potem naslednjo generacijo pre\u017eivita oba in mogo\u010de ustvarita novega potomca, \u010de ob njem ni nobenega organizma potem pogine zaradi osamljenosti, \u010de je ob njem preve\u010d organizmov pogine zaradi prenaseljenosti\u2026 V glavnem, kot programer imate na voljo razli\u010dne pogoje in s tem nadzorujete kako \u00bbva\u0161 svet\u00ab \u017eivi.<\/p>\n<p>\u010ce se torej povrnem k tematiki. Ko sem prebral \u010dlanek, ki je sicer resnici na ljubo \u010disto prekratek in ne pove kaj veliko, me je pre\u0161inilo vpra\u0161anje: &#8220;Kako hitro pa lahko kaj dandanes simuliramo \u017eivljenje v ra\u010dunalniku?&#8221;.<\/p>\n<p>V svetu evolucije ima mati narava pa\u010d na voljo generacije \u017eivih biti, da se \u00bbiz\u017eivlja\u00ab nad njimi in nad nekaterimi lahko to hitro po\u010dne (recimo vinske mu\u0161ice imajo zelo kratko \u017eivljenjsko dobo in zato lahko ima vsak dan novo generacijo). Po drugi strani pa ljudje potrebujemo kar 20 let za novo generacijo (no dandanes se to pomika proti 30 let). Kako hitro pa lahko dandana\u0161nji ra\u010dunalnik torej simulira \u017eivljenje oz. posamezne generacije?<\/p>\n<p>Seveda je to \u010disto presplo\u0161no vpra\u0161anje in odgovora nanj niti ne gre iskati, saj je predvsem pomembno koliko dela mora opraviti nek algoritem da ustvari novo generacijo. To vpra\u0161anje je torej presplo\u0161no, je pa zanimivo kako hitri pa so dana\u0161nji ra\u010dunalniki v primerjavi z ne\u010dim, kar je nam blizu oz. s \u010dimer se lahko poistovetimo.<\/p>\n<p>V na\u0161em svetu je nekako 1 sekunda minimalni \u010das neke akcije. Predpostavimo torej da sestavljamo kocke in vsako sekundo smo sposobni zlo\u017eiti dve kocki.\u00a0Sedaj pa si predstavljajo ra\u010dunalnik, ki ravno tako opravlja neke naloge in v neki enoti je sposoben opraviti minimalno delo. Kak\u0161na je torej tista minimalna enota v kateri je ra\u010dunalnik sposoben opraviti neko delo?<\/p>\n<p>V ra\u010dunalniku je <a href=\"http:\/\/sers.s-sers.mb.edus.si\/gradiva\/w3\/sistemi\/delovanje.html\">glavno bo\u017eanstvo \u00bbura\u00ab<\/a>, ki udarja in <strong>vsak udarec ure (CPU cikel), ra\u010dunalnik izvede eno operacijo<\/strong>. (Seveda to spet ni \u010disto res, saj je dandana\u0161nji ra\u010dunalnik sposoben v enem ciklu narediti celo ve\u010d kot 1 operacijo a pustimo tak\u0161ne \u00bbmalenkosti\u00ab in se osredoto\u010dimo na zanimivosti).\u00a0<strong>Hitrost ra\u010dunalnika pa merimo ravno v hitrosti njegove ure in hitrej\u0161a kot je ura hitrej\u0161i je ra\u010dunalnik (spet ne bodimo dlakocepski!).<\/strong><\/p>\n<p>No in sedaj si kon\u010dno poglejmo kako hitro tiktaka nek \u010disto povpre\u010den ra\u010dunalnik. V \u010dasu pisanja tega prispevka lahko za 200EUR kupimo namizni ra\u010dunalnik, ki tiktaka s hitrostjo 3,6GH. Torej 3,g \u00bbgigahercov\u00ab ali 3.600.000.000 cikov na sekundo! <strong>Ra\u010dunalnik za 200EUR torej v eni sekundi opravi vsaj 3600 milijonov operacij.<\/strong><\/p>\n<p>Seveda pa ra\u010dunalnik ne more oz. vsaj ni smiselno da dela kar nekaj brezveze zato mora navodila, kaj naj po\u010dne, dobivati iz svoje okolice. Predstavljamo si, da je ra\u010dunalnik \u010dlovek, ki sedi za mizo in opravlja pisarni\u0161ko delo, ki je zapisano na listih, listi pa se nahajajo na njegovi mizi, v predalih mize, v omarah v sobi, v drugih sobah, v drugih hi\u0161ah, v drugih mestih\u2026. Na drugih planetih.<\/p>\n<p><em>Ra\u010dunalniku najbli\u017eje so njegovi registri, ki jih ni ravno veliko (nekaj 10) in od njih dobi nov list v enem samem ciklu \u2013 to je torej enakovredno listu na mizi. Naslednje podro\u010dje, ki mu lahko dostavi list je tki. L1 predpomnilnik. Do njega potrebuje 4 cikle in to bi predstavljalo predal ob mizi. Potem je L2 predpomnilnik do katerega potrebuje 10 ciklov, pa L3 predpomnilnik, do katerega potrebuje 70 ciklov in \u0161ele potem pride tisto, ker vsi poznate \u2013 <strong>to je glavni pomnilnik ra\u010dunalnika (famozni RAM) in za dostop do njega potrebuje ra\u010dunalnik nekaj 100 ciklov.<\/strong><\/em><\/p>\n<p>Da bi se ni izgubljali v besedilu si poglejmo kar tabelo z dostopi. Seveda so vsi podatki v tabeli pribli\u017eni (za vse \u00bbne-fizike\u00ab \u0161e hitra ponovitev \u010dasovnih enot: 1s = 1.000 ms (milisekund) == 1.000.000 mikrosekund = 1.000.000.000 ns (nanosekund))<\/p>\n<table>\n<tbody>\n<tr>\n<td>Dostop<\/td>\n<td>\u0160t. cikov<\/td>\n<td>Porabljen \u010das<\/td>\n<\/tr>\n<tr>\n<td>Register<\/td>\n<td style=\"text-align: right;\">1<\/td>\n<td style=\"text-align: right;\">0,3ns<\/td>\n<\/tr>\n<tr>\n<td>L1 predpom.<\/td>\n<td style=\"text-align: right;\">4<\/td>\n<td style=\"text-align: right;\">1,2ns<\/td>\n<\/tr>\n<tr>\n<td>L2 predpom.<\/td>\n<td style=\"text-align: right;\">10<\/td>\n<td style=\"text-align: right;\">3ns<\/td>\n<\/tr>\n<tr>\n<td>L3 predpom.<\/td>\n<td style=\"text-align: right;\">70<\/td>\n<td style=\"text-align: right;\">21ns<\/td>\n<\/tr>\n<tr>\n<td>RAM<\/td>\n<td style=\"text-align: right;\">400<\/td>\n<td style=\"text-align: right;\">120ns<\/td>\n<\/tr>\n<tr>\n<td>SSD disk<\/td>\n<td style=\"text-align: right;\">400.000<\/td>\n<td style=\"text-align: right;\">120.000ns<\/td>\n<\/tr>\n<tr>\n<td>\u00bbnavaden\u00ab disk<\/td>\n<td style=\"text-align: right;\">15.000.000<\/td>\n<td style=\"text-align: right;\">4,5ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Ok. S to tabelo smo iz\u010drpali vse, ki ra\u010dunalniku lahko dajejo ukaze in se nahajajo v njegovi \u0161katli.<\/strong> Ob tem pa smo uvideli tudi, da je razmi\u0161ljanje v ciklih utrujajo\u010de, zato se preusmerimo samo na \u010das in si poglejmo dostop do drugih ra\u010dunalnikov in interneta<\/p>\n<table>\n<tbody>\n<tr>\n<td>Dostop<\/td>\n<td>Porabljen \u010das<\/td>\n<\/tr>\n<tr>\n<td>Register<\/td>\n<td style=\"text-align: right;\">0,3ns<\/td>\n<\/tr>\n<tr>\n<td>L1 predpom.<\/td>\n<td style=\"text-align: right;\">1,2ns<\/td>\n<\/tr>\n<tr>\n<td>L2 predpom.<\/td>\n<td style=\"text-align: right;\">3ns<\/td>\n<\/tr>\n<tr>\n<td>L3 predpom.<\/td>\n<td style=\"text-align: right;\">21ns<\/td>\n<\/tr>\n<tr>\n<td>RAM<\/td>\n<td style=\"text-align: right;\">120ns<\/td>\n<\/tr>\n<tr>\n<td>SSD disk<\/td>\n<td style=\"text-align: right;\">120.000ns<\/td>\n<\/tr>\n<tr>\n<td>\u00bbnavaden\u00ab disk<\/td>\n<td style=\"text-align: right;\">4,5ms<\/td>\n<\/tr>\n<tr>\n<td>mre\u017eni disk<\/td>\n<td style=\"text-align: right;\">10ms<\/td>\n<\/tr>\n<tr>\n<td>Stre\u017enik SIOL<\/td>\n<td style=\"text-align: right;\">20ms<\/td>\n<\/tr>\n<tr>\n<td>Stre\u017enik v Ameriki<\/td>\n<td style=\"text-align: right;\">200ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>In sedaj je \u010das, da vam predstavim glavno tabelo, ki me je tudi vodila v zapis tega prispevka.<\/strong> Povrnimo se torej na analogijo \u017eivih bitij, ki bi \u017eivela virtualno \u017eivljenje v va\u0161em ra\u010dunalniku. In privzamimo, da je en cikel v ra\u010dunalniku pa\u010d 1 sekunda njihovega \u017eivljenja.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Dostop<\/td>\n<td>Ra\u010dunalnik<\/td>\n<td>Virtualno bitje<\/td>\n<\/tr>\n<tr>\n<td>Register<\/td>\n<td style=\"text-align: right;\">0,3ns<\/td>\n<td style=\"text-align: right;\">1s<\/td>\n<\/tr>\n<tr>\n<td>L1 predpom.<\/td>\n<td style=\"text-align: right;\">1,2ns<\/td>\n<td style=\"text-align: right;\">4s<\/td>\n<\/tr>\n<tr>\n<td>L2 predpom.<\/td>\n<td style=\"text-align: right;\">3ns<\/td>\n<td style=\"text-align: right;\">10s<\/td>\n<\/tr>\n<tr>\n<td>L3 predpom.<\/td>\n<td style=\"text-align: right;\">21ns<\/td>\n<td style=\"text-align: right;\">1min<\/td>\n<\/tr>\n<tr>\n<td>RAM<\/td>\n<td style=\"text-align: right;\">120ns<\/td>\n<td style=\"text-align: right;\">7min<\/td>\n<\/tr>\n<tr>\n<td>SSD disk<\/td>\n<td style=\"text-align: right;\">120.000ns<\/td>\n<td style=\"text-align: right;\">4,5dni<\/td>\n<\/tr>\n<tr>\n<td>\u00bbnavaden\u00ab disk<\/td>\n<td style=\"text-align: right;\">4,5ms<\/td>\n<td style=\"text-align: right;\">173dni<\/td>\n<\/tr>\n<tr>\n<td>Mre\u017eni disk<\/td>\n<td style=\"text-align: right;\">10ms<\/td>\n<td style=\"text-align: right;\">1 leto<\/td>\n<\/tr>\n<tr>\n<td>Stre\u017enik SIOL<\/td>\n<td style=\"text-align: right;\">20ms<\/td>\n<td style=\"text-align: right;\">2leti<\/td>\n<\/tr>\n<tr>\n<td>Stre\u017enik v Ameriki<\/td>\n<td style=\"text-align: right;\">200ms<\/td>\n<td style=\"text-align: right;\">20let<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>Na\u0161e virtualno bitjece mora torej kar 20let \u010dakati, da dobi podatek iz stre\u017enika v Ameriki \ud83d\ude42<\/em><\/p>\n<p>Kaj sem vam sploh \u017eelel prikazati s to analogijo? Ne vem sicer ali mi je uspelo, a \u017eelel sem vam prikazati,<strong> kako smo ljudje povsem nesposobni dojemati razmerje koli\u010din kadar so slednje nepredstavljivo majhne ali nepredstavljivo velike.\u00a0<em>S stali\u0161\u010da ra\u010dunalnika je dostop do registra in dostop do stre\u017enika v Ameriki sorazmerno kot 1 sekundna proti 20 letom!<\/em><\/strong><\/p>\n<p>Virtualna bitja torej \u017eivijo zelooo hitro. Mogo\u010de \u0161e ena zelo zanimiva primerjava.<\/p>\n<p><em>Moj delovni ra\u010dunalnik se prestarta v 15 sekundah. \u010ce torej virtualno bitje, ki \u017eivi v mojem ra\u010dunalniku in katerega ena sekunda \u017eivljenja predstavlja 1 cikel mojega ra\u010dunalnika (ki je mimogrede, samohvala!, \u0161e hitrej\u0161i od prej predstavljenega) uspavamo, ko se ra\u010dunalnik ugasne; koliko \u010dase prete\u010de, ko se ra\u010dunalnik spet zbudi?<\/em><\/p>\n<p>Analogija je torej slede\u010da. Ko se ra\u010dunalnik ugasne se podatki o virtualnih bitjih shranijo na disk in ko se ra\u010dunalnik pri\u017ege, se podatki o virtualnih bitjih zopet preberejo ter bitja zopet o\u017eivijo. <strong>Kot, da bi nas uspavali in potem bi z vesoljsko ladjo potovali dale\u010d vstran, nakar bi nas zopet prebudili.<\/strong> Kot re\u010deno, traja zagon mojega ra\u010dunalnika 15 sekund, kar je torej 15.000.000.000 ns oz. 45.000.000.000 sekund v \u017eivljenju virtualnega bitja oz. 1400 let!<\/p>\n<p><strong>Za virtualna bitja mojega ra\u010dunalnika traja torej ponovni zagon ra\u010dunalnika 1400 let. Zanimivo!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dana\u0161nji prispevek nima hude uporabne vrednosti, ponuja pa zanimiv pogled na mo\u010d dana\u0161njih ra\u010dunalnikov. V zadnji \u0161tevilki reviji \u017dIT (\u017divljenje in tehnika) je tudi \u010dlanek o evolucijskih algoritmih. Ker se s to vedo ra\u010dunalni\u0161tva nisem ukvarjal vse od programiranja prvih preprostih programov in posledi\u010dno tki. &#8216;Igre \u017eivljenja&#8217;, sem \u010dlanek z veseljem prebral. \u010cisto tako vmes: &hellip; <a href=\"https:\/\/www.matjazev.net\/blog\/2014\/05\/17\/hitrost-racunalnika-in-virtualne-zivalice\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Hitrost ra\u010dunalnika in &#8220;virtualne \u017eivalice&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,1],"tags":[56],"_links":{"self":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1461"}],"collection":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/comments?post=1461"}],"version-history":[{"count":8,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1461\/revisions"}],"predecessor-version":[{"id":1469,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1461\/revisions\/1469"}],"wp:attachment":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/media?parent=1461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/categories?post=1461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/tags?post=1461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}