Podcast o Architektúra ARM Cortex-M3 a základy programovania

Architektúra ARM Cortex-M3 a základy programovania | Komplexný sprievodca

Podcast

Architektúra Počítačov: Od Harvardskej Architektúry po ARM Cortex0:00 / 9:03
0:001:00 zostáva
MarekDobre, Simona, poďme na to. Je tu jedna vec, ktorá pri architektúre počítačov zamotá hlavu asi osemdesiatim percentám študentov. A to je ten zásadný rozdiel, ktorý rozhoduje o rýchlosti celého systému.
SimonaPresne tak, Marek! A keď to pochopíte, už sa nikdy nepomýlite. Počúvate Studyfi Podcast.
Kapitoly

Architektúra Počítačov: Od Harvardskej Architektúry po ARM Cortex

Délka: 9 minut

Kapitoly

Kľúčový rozdiel

Čo je Harvardská architektúra?

Srdce systému: ARM Cortex-M3

Módy, zásobníky a prerušenia

Jazyk počítačov: Nuly a jednotky

Jazyk symbolických inštrukcií (JSI)

Vyššie programovacie jazyky

Prekladatelia: Kompilátor vs. Interpret

Výhody a nevýhody

Celkové zhrnutie a záver

Přepis

Marek: Dobre, Simona, poďme na to. Je tu jedna vec, ktorá pri architektúre počítačov zamotá hlavu asi osemdesiatim percentám študentov. A to je ten zásadný rozdiel, ktorý rozhoduje o rýchlosti celého systému.

Simona: Presne tak, Marek! A keď to pochopíte, už sa nikdy nepomýlite. Počúvate Studyfi Podcast.

Marek: Takže, čo je tá tajná prísada? O čom hovoríme?

Simona: Hovoríme o Harvardskej architektúre. Predstav si kuchára, ktorý má recepty v jednej knihe a ingrediencie v druhej. Môže súčasne čítať recept a brať si ingrediencie. Je to oveľa rýchlejšie.

Marek: A to je presne to, čo robí Harvardská architektúra? Má oddelenú pamäť pre program, teda kód, a pre dáta. Vďaka oddeleným zberniciam môže robiť dve veci naraz.

Simona: Presne! A to je kľúčové pre výkon. Práve túto architektúru využíva aj procesor ARM Cortex-M3, na ktorý sa dnes pozrieme.

Marek: Dobre, poďme na konkrétny príklad. ARM Cortex-M3 je 32-bitový procesor. Čo to pre nás znamená v praxi?

Simona: Znamená to, že dokáže pracovať s 32-bitovými číslami naraz. Jeho registre, teda také malé rýchle úložiská, majú šírku 32 bitov. A čo je najdôležitejšie, má 32-bitovú adresnú zbernicu.

Marek: A to nám umožňuje adresovať... koľko pamäte?

Simona: Obrovské množstvo! Konkrétne 2 na 32 adries, čo sú štyri gigabajty. To je ako mať knižnicu so štyrmi miliardami kníh, kde každá má svoju unikátnu adresu.

Marek: Páni. Takže miesta je dosť. Ako ale tento procesor spracováva inštrukcie tak efektívne?

Simona: To je ďalšia skvelá vec. Využíva takzvané trojstupňové pipeline spracovanie. Je to ako pásová výroba v továrni. Kým sa jedna inštrukcia vykonáva, ďalšia sa už dekóduje a tretia sa načítava z pamäte.

Marek: Znie to, že procesor je neustále zaneprázdnený. A čo tie operačné módy? Počul som o Thread a Handler móde.

Simona: Áno. V Thread móde beží tvoj bežný program. Ale keď príde nejaká naliehavá požiadavka, napríklad z periférie, procesor sa prepne do Handler módu, aby ju obslúžil. Tomu hovoríme prerušenie.

Marek: Takže prerušenie je ako keď ti niekto zazvoní pri dverách, zatiaľ čo varíš? Musíš prestať variť a ísť otvoriť.

Simona: Perfektné prirovnanie! Presne tak. A potom sú tu ešte výnimky, ktoré vznikajú priamo v procesore. To je skôr, akoby si si pri varení popálil ruku. Problém vznikol zvnútra.

Marek: Rozumiem. A ako to súvisí so zásobníkmi? MSP a PSP?

Simona: Veľmi úzko. Procesor má dva zásobníky. Hlavný, MSP, a procesný, PSP. Používa ich podľa toho, v akom režime je – či v privilegovanom, kde má plnú moc, alebo v neprivilegovanom. Hneď po štarte je v privilegovanom Thread móde a používa hlavný zásobník MSP.

Marek: Takže toto všetko dáva zmysel. Ale prichádzame k poslednej téme, a priznám sa, Simona, táto mi vŕta v hlave najviac.

Simona: Tak schválne, čo to je?

Marek: Všetky tie rôzne programovacie jazyky. Strojový kód, Assembly, potom Python, Java... Prečo ich je toľko? Nestačil by jeden, ktorý by sme sa všetci naučili?

Simona: Výborná otázka na záver! A odpoveď je vlastne celkom logická. Je to všetko o úrovniach abstrakcie. Predstav si to ako komunikáciu.

Marek: Komunikáciu? Ako medzi ľuďmi?

Simona: Presne tak. Na tej najzákladnejšej úrovni, procesor v tvojom počítači alebo telefóne rozumie len jednému jedinému jazyku. A tým je strojový kód.

Marek: A to sú tie slávne nuly a jednotky, však?

Simona: Áno. Je to binárny kód. Každá sekvencia núl a jednotiek je pre procesor priamy príkaz. Urob toto, presuň tamto, sčítaj hento. Je to extrémne rýchle a efektívne.

Marek: Znie to aj extrémne... nečitateľne. Pre človeka, samozrejme.

Simona: Presne! Čítať alebo písať v strojovom kóde je ako snažiť sa prečítať knihu napísanú v morzeovke. Ide to, ale je to šialene náročné a pomalé.

Marek: Okej, takže potrebovali sme niečo jednoduchšie. Čo prišlo potom?

Simona: O úroveň vyššie prišiel Jazyk symbolických inštrukcií, alebo skrátene JSI, či Assembly. Tu sa to trošku zlepšilo.

Marek: Ako presne?

Simona: Namiesto dlhých reťazcov núl a jednotiek sa začali používať krátke, zapamätateľné skratky. Napríklad MOV pre presun dát alebo ADD pre sčítanie.

Marek: Čiže taký prekladový slovník pre strojový kód?

Simona: Dá sa to tak povedať. Každá táto skratka, alebo inštrukcia, priamo zodpovedá jednej inštrukcii v strojovom kóde. Ale stále je to veľmi nízkoúrovňové. Stále musíš rozmýšľať ako procesor.

Marek: Takže sme sa posunuli od morzeovky k nejakým starodávnym hieroglyfom. Lepšie, ale stále nie ideálne.

Simona: To je skvelé prirovnanie! A presne preto sme potrebovali ďalší krok.

Marek: A to sú tie, o ktorých počúvame najčastejšie, však? Python, Java, C++...

Simona: Áno. Vyššie programovacie jazyky sú navrhnuté tak, aby boli čo najbližšie k ľudskej reči. Sú čitateľné a zrozumiteľné.

Marek: Takže namiesto príkazu ADD jednoducho napíšem sucet = 1 + 2?

Simona: Presne tak! Jeden takýto jednoduchý príkaz vo vyššom jazyku môže v skutočnosti zodpovedať desiatkam inštrukcií v strojovom kóde. Tieto jazyky skrývajú tú zložitú komunikáciu s hardvérom.

Marek: A vďaka tomu sú asi aj jednoduchšie na učenie.

Simona: Jednoznačne. Nemusíš poznať architektúru konkrétneho procesora. A tu prichádza obrovská výhoda — prenositeľnosť.

Marek: Čo to znamená?

Simona: Znamená to, že kód, ktorý napíšeš v Pythone na jednom počítači, môžeš spustiť na úplne inom počítači s iným procesorom a operačným systémom, často bez akýchkoľvek úprav.

Marek: To pri JSI a strojovom kóde neplatí?

Simona: Vôbec nie. Tie sú napevno viazané na konkrétny hardvér. Kód pre jeden procesor nebude fungovať na inom. Je to ako snažiť sa použiť kľúč od jedného auta na naštartovanie iného.

Marek: Dobre, ale tu mi niečo nesedí. Ak procesor rozumie len strojovému kódu, ako môže spustiť niečo napísané v Pythone?

Simona: Skvelá otázka! Potrebujeme prekladateľa. A tu máme dva hlavné typy: kompilátor a interpret.

Marek: Aký je medzi nimi rozdiel?

Simona: Kompilátor, alebo prekladač, si môžeme predstaviť ako prekladateľa knihy. Prečíta celý tvoj kód naraz, preloží ho celý do strojového kódu a vytvorí spustiteľný súbor. Až potom ho môžeš spustiť.

Marek: A interpret?

Simona: Interpret je skôr ako tlmočník na konferencii. Prekladá tvoj kód riadok po riadku, za behu. Prečíta prvý riadok, preloží ho, vykoná ho, potom ide na druhý a tak ďalej.

Marek: Ktoré jazyky používajú čo? Daj nejaký príklad.

Simona: Typickým príkladom kompilovaného jazyka je C alebo C++. A interpretované jazyky sú napríklad Python alebo PHP.

Marek: Takže zhrňme si to. Prečo by dnes niekto vôbec používal strojový kód, keď máme tie pohodlné vyššie jazyky?

Simona: Rýchlosť. Strojový kód je absolútne najrýchlejší, pretože tam nie je žiadna vrstva prekladu. Procesor ho vykonáva priamo. Preto sa stále používa tam, kde je rýchlosť kritická. Napríklad v ovládačoch zariadení alebo v jadre operačného systému.

Marek: A vyššie jazyky sú pomalšie kvôli tomu prekladu, ale sú prenositeľné a ľahšie sa v nich píše.

Simona: Presne. Je to klasický kompromis. Čitateľnosť a jednoduchosť pre človeka versus surový výkon a rýchlosť pre stroj.

Marek: Takže v podstate, strojový kód je ako keby si staval auto súčiastku po súčiastke sám. Bude to presne podľa teba a extrémne rýchle, ale potrvá to večnosť.

Simona: A vyšší programovací jazyk je ako keď si to auto kúpiš hotové. Dostaneš sa kam potrebuješ, je to pohodlné, ale možno to nebude pretekársky špeciál.

Marek: To bola skvelá bodka za našou dnešnou epizódou. Simona, máš pre našich poslucháčov nejakú jednu hlavnú myšlienku, ktorú by si mali odniesť z celej tejto série o základoch informatiky?

Simona: Určite. Kľúčový poznatok je, že technológie nie sú mágia. Za každou aplikáciou, za každým kliknutím, je logika, systém a štruktúra. A keď pochopíte tieto základné princípy, ktoré sme dnes preberali — od algoritmov cez dáta až po jazyky — zrazu sa celý ten digitálny svet stane oveľa zrozumiteľnejším.

Marek: A menej strašidelným. Zistíte, že máte na to, aby ste ho nielen používali, ale aj tvorili.

Simona: Presne tak. Dúfam, že sme vás inšpirovali, aby ste sa na svet okolo seba pozerali s väčšou zvedavosťou. A možno aj skúsili niečo naprogramovať. Nebojte sa toho!

Marek: Súhlasím. Takže, ešte raz ďakujeme, že ste nás počúvali. Dúfame, že ste si z toho odniesli niečo užitočné. Toto bol Studyfi Podcast.

Simona: Za mikrofónom sa s vami lúčia Simona...

Marek: ...a Marek. Majte sa skvele a veľa úspechov pri štúdiu!

Simona: Ahojte!