Architektura a princip funkce počítačů
Co je architektura obecně: souhrn znalostí o prvcích, ze kterých se skládá nebo dá složit nějaký celek o způsobech, kterými lze tyto prvky využít pro dosažení požadovaných vlastností celku
dále se omezíme na
architekturu počítačů
Systém soubor prvků, mezi kterými existují určité vztahy nebo vazby prvky systému neexistují osamoceně, jsou součástí mnohem rozsáhlejší množiny (např. vesmíru) všechny ostatní entity, které nepatří do systému, označujeme jako okolí systému vzájemné vazby mezi prvky systému jsou obvykle silnější než vazby mezi prvky systému a prvky okolí vazby mezi prvky systému a prvky okolí způsobují, že mezi systémem a okolím existuje interakce. Abychom rozlišili směr působení při interakci, používáme pojmy vstup a výstup systému
Systém
Systém hranice systému určují, které prvky do systému patří a které ne obvykle existují přirozené hranice systému, dané vazbami mezi prvky např. atom, molekula, součástka, modul ...
kde leží hranice systému z hlediska jeho pozorování určuje pozorovatel přirozené hranice systému pro nás nejsou závazné hranice systému můžeme volit podle okamžité potřeby
pozorovatel systému může volit rozlišovací úroveň a tím velikost a počet rozlišovaných prvků při přechodu na nižší rozlišovací úroveň splyne několik prvků rozlišitelných na vyšší rozlišovací úrovni do jediného prvku
počítač můžeme vnímat jako množinu jednotek, modulů, registrů, hradel, součástek …
Systém u systému můžeme studovat interakce s okolím vnitřní strukturu systému
interakci systému s okolím označujeme jako chování systému chování se snažíme popsat algoritmem, vyjadřujícím závislost výstupu (odezev, akcí) na vstupu (podnětech, stimulech) vnitřní strukturu systému můžeme popsat objektivně detailním popisem jeho prvků a vazeb pomocí modelu podobnost modelu a modelovaného systému na určité úrovni rozlišení posuzujeme podle podobnosti jejich chování (izomorfismus, homomorfizmus).
Stroj každý stroj má vstup zpracovávané suroviny výstup zpracované suroviny funkci (způsob zpracování vstupní suroviny na výstupní)
důležitým atributem stroje je jeho ovladatelnost člověkem zpracování suroviny probíhá podle záměrů člověka
řízení stroje může být přímé (typické pro jednoduché stroje a nástroje) člověk působí na ovládací prvky stroje a dosahuje tak požadovaného výsledku
nepřímé (typické pro složité stroje) způsob zpracování suroviny je jednoznačně určen konstrukcí a nastavením stroje, který pak již pracuje automaticky, bez zásahu člověka
oba způsoby řízení lze kombinovat
Počítač počítač můžeme definovat jako
stroj na zpracování informací vstupem i výstupem počítače jsou informace řízení počítače je převážně nepřímé (programem) … … ale může být i přímé (interaktivní ovládání)
program je předpis, jednoznačně určující způsob odvození výstupních dat z dat vstupních jeden program lze použít opakovaně pro zpracování různých kolekcí vstupních dat program počítače lze změnit a tak způsob zpracování dat přizpůsobit okamžitým potřebám
Kybernetika věda o řízení v neživých a živých systémech základy položil Norbert Wiener knihou
Cybernetics: or, Control and Communication in the Animal and the Machine (1948) kybernetika studuje systémy z hlediska toku a zpracování informací její vztah k pojmu informace je podobný jako vztah matematiky k pojmu číslo, fyziky k pojmu hmota ...
Kybernetický systém průběžně vyhodnocuje vstupní informace (podněty) a reaguje na ně výstupní aktivitou (odezvou), která je dána určitými pravidly chování pokud má systém paměť, může do ní ukládat historii, tj. časový záznam podnětů a odezev odezvy systému s pamětí mohou být závislé nejen na aktuálních podnětech, ale také na historii vazby mezi vyhodnocovacím a paměťovým blokem tvoří uzavřenou smyčku, tzv. zpětnovazební
vazba mezi vyhodnocovacím blokem a blokem pravidel chování umožňuje systému měnit na základě získaných zkušeností pravidla chování (optimalizace, učení)
Schéma kybernetického systému
Schéma počítače
co je zde?
není náhoda, že (až na názvy bloků) je shodné se schématem kybernetického systému
Chování počítače v kybernetickém systému je v pozici ? blok pravidel chování u smysluplně reagujících systémů se obvykle jedná o nějakou formu dlouhodobé paměti zkušenost, genetická paměť ...
souhrn pravidel, umožňujících systému řešit "informační situace", do kterých se dostane během své existence pravidla chování lze většinou vyjádřit ve tvaru děje-li se (stalo-li se) to a to, reaguj tak a tak
Program a programátor nejvhodnějším způsobem ovládání počítače je vkládání a modifikace pravidel chování jestliže místo přímého řízení systému dokážeme do systému vložit pravidla chování, můžeme určit nejen jeho okamžité chování (jako např. při řízení automobilu), ale také jeho chování kdykoliv v budoucnosti
blok ? je tedy vhodné implementovat jako paměť, jejíž obsah – program – bude určovat člověk – programátor pokud do bloku zahrneme program i programátora, jsou obě schémata zcela shodná
pokud programátora vyčleníme mimo systém, objeví se na tomto místě nový typ interakce systému s okolím - vstup programu
Schéma počítače
program
vstup programu
programátor
Program počítače program je zvláštní formou vstupních dat formálně se od vstupních dat nijak neliší jeho úloha v počítači je specifická tím, pokud neuvažujeme že program není zpracováván strojový překlad programu ale prováděn jinak řečeno, představuje pokyny, podle kterých počítač postupuje při zpracování vstupních informací
počítač těmto pokynům pochopitelně musí rozumět a program proto musí být napsán podle určitých pravidel, kterým říkáme programovací jazyk rozdíl mezi programem a vstupními daty je také v tom, že jeden program může být použit opakovaně pro zpracování různých kolekcí dat srovnáme-li proces zpracování dat v počítači s chemickými procesy, hraje program podobnou roli jako katalyzátor – vstupuje do procesu transformace vstupních dat na data výstupní, ale z procesu vyjde nezměněn a lze ho opakovaně použít.
Role počítače počítač je velmi vhodný pro roli univerzálního řídícího prvku automatizace, vestavěné systémy, robotika ...
počítač je téměř ideálním prostředkem pro simulaci jakéhokoliv kybernetického systému počítače umožňují novou interpretaci rozsáhlých kolekcí dat, které by člověk jinak nedokázal zpracovat a vyhodnotit počítače umožnily řadu významných objevů ve fyzice, chemii, biologii, astronomii ...
Harwardské schéma historicky starší koncepce používá pro program a pro data dvě nezávislé paměti označení podle počítače Harward Mark I, uvedeného do provozu na Harwardské univerzitě (1943)
Von Neumannovo schéma dnes nejrozšířenější architektura program i data jsou uloženy ve společné paměti (Stored Program Computer) označení podle autora této koncepce (1945)
Von Neumannovo schéma Operační paměť slouží k uchování prováděného programu a zpracovávaných dat
Aritmeticko-logická jednotka (ALU, Arithmetic-Logic Unit) provádí podle pokynů řadiče požadované operace s daty (aritmetické výpočty, logické operace)
Řadič postupně čte z operační paměti jednotlivé instrukce programu a interpretuje (provádí) je generuje řídící signály pro ovládání ostatních částí počítače umožňuje počítači reagovat na stavové informace z ostatních částí počítače a synchronizovat návaznost jednotlivých akcí
Vstupní zařízení zajišťují vstup programu a dat
Výstupní zařízení zajišťují výstup dat (výsledků)
Porovnání
Harwardského a Von Neumannova počítače
Harwardské schéma dnes se používá u specializovaných procesorů signálové procesory, jednočipové počítače ...
výhody: vysoká bezpečnost (paměť programu je typu ROM, takže program ji nemůže přepsat) u paměti programu lze použít jinou šířku slova (počet bitů) než u paměti dat
nevýhody: vyšší cena hardware (dvě paměti) malá pružnost systému (program lze změnit jen obtížně nebo vůbec ne)
Porovnání
Harwardského a Von Neumannova počítače
Von Neumannovo schéma používá se u univerzálních počítačů (PC) výhody: nižší cena systému (jedna paměť) vysoká pružnost systému (program lze snadno měnit a zpracovávat jako data)
nevýhody: je nutný kompromis mezi šířku toku programu a dat program může být nežádoucím způsobem ovlivněn (chybami v programu, viry)
Změny terminologie řadič a ALU dnes vnímáme jako jeden celek – procesor (CPU, Central Procesing Unit) ALU se dnes považuje spíše za stavební prvek nižší úrovně (jako registr, multiplexor …)
pro vstupní zařízení a výstupní zařízení se používá společný název vnější (periferní) zařízení alternativně I/O zařízení (Input/Output Device), V/V zařízení (vstup/výstup), periferie …
řada periferních zařízení je obousměrná, tj. slouží pro vstup i výstup dat (disky, terminály …) způsob připojení a ovládání vnějších zařízení se sjednotil
Další vývoj architektury v počítačích se vystřídalo několik generací prvků relé, elektronky, tranzistory, integrované obvody MSI, LSI, VLSI …
Von Neumannova koncepce získala převahu výhoda větší pružnosti převážila nad nevýhodami V průmyslových a vestavěných systémech obě koncepce koexistují
přibyly nové architektonické prvky a řešení sběrnice, přerušovací systém, DMA, hierarchická paměť, zřetězené zpracování instrukcí (pipelining), multiprocesorové systémy …
došlo k výraznému pokroku v programování programovací jazyky, operační systémy, objektové programování …
Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů
pokyny pro zpracování dat (program) a vstupní data si operátor nejprve zapíše (vstup) do poznámek (paměti) nyní operátor (řadič) může po malých částech (instrukcích) číst postup, vyhledávat potřebná vstupní data a pomocí kalkulátoru (ALU) s nimi provádět požadované operace do poznámek (paměti) si operátor může zapsat i jakékoliv mezivýsledky, které pak lze použít opakovaně konečné výsledky operátor zapíše do výstupního protokolu (výstup)
Instrukční soubor instrukce je elementární operace, kterou počítač dokáže provést instrukční soubor (Instruction Set) je množina všech instrukcí, kterým počítač rozumí a dokáže je provádět program může obsahovat pouze instrukce, kterým daný počítač rozumí jedná se vlastně o formu jazyka, který musí programátor ovládat, aby se s počítačem dokázal domluvit What is your name?
půl šesté!
proveditelný program (ve strojovém kódu) je zápis postupu řešení úlohy ve formě posloupnosti instrukcí, dostupných v instrukčním souboru daného počítače na počítači s jiným instrukčním souborem tento program není použitelný !
Instrukce instrukce se obvykle skládá z několika částí (polí) 28
1234
ADD
m[1234]
operační kód=součet
1235
+
m[1235]
odkud
1287
m[1287] kam
operační kód určuje, jaká operace s daty se má provést specifikace operandu určuje, odkud se mají číst data, kam se má uložit výsledek … … nebo jak má program pokračovat (skoky)
Provádění instrukce dobu provádění instrukce obvykle dělíme na dvě základní fáze: fázi načtení a dekódování instrukce – FETCH Cycle fázi provedení instrukce – EXECUTE Cycle anglické označení (FETCH, EXECUTE) souvisí s činností paměti během provádění instrukce jedna úplná operace s pamětí (čtení nebo zápis) se obvykle označuje jako paměťový cyklus během provádění jednooperandové instrukce proběhnou obvykle dva přístupy k paměti – v prvním se načte instrukce, ve druhém se načte operand nebo uloží výsledek
po načtení instrukce řadič převede operační kód na posloupnost řídících signálů pro ostatní části počítače registry, multiplexory, ALU, operační paměť
Provádění instrukce řadič generuje dva typy signálů: hladinové výběr funkce multiplexoru, ALU, paměti ...
impulsní časově přesně vymezené akce – zápis do registru, inkrementace registru, zápis do paměti ...
vlastní operace s operandy se provádí v ALU výsledek operace se ukládá do operační paměti ... … nebo zůstává v registrech procesoru mezivýsledky uložené v registrech jsou v případě potřeby snadněji dostupné
při provádění operace se získávají také další informace, umožňující pozdější vyhodnocení nulový nebo záporný výsledek, přetečení, dělení nulou …
Počet operandů obecně může být v instrukci specifikován libovolný počet operandů … v našem příkladu jsou tři
… jenže adresa slova paměti zabírá v instrukci hodně místa! ... instrukce musí být rozdělena do několika slov a proto je její zpracování složitější a pomalejší
... nebo je nutné použít velkou šířku slova paměti což vyžaduje více hardware a proto stoupne cena, rozměry a spotřeba energie
Formát instrukce Řešení: jednooperandové instrukce (další operandy implicitní) nebo registrově orientované instrukce (specifikace registru je mnohem kratší) A
B
operand ALU
A
B
ALU
výběr registru A registry
implicitní operand
výběr registru B
Specifikace operandu operand může být specifikován různým způsobem přímý (bezprostřední, immediate) operand operand je uveden přímo v instrukci obvykle jen malá celá čísla (např. +127 až -128)
operand v registru operandy se čtou z (ukládají do) pole registrů v instrukci jsou adresy registrů (např. pro výběr jednoho z 8 registrů stačí 3 bity)
operand v operační paměti operandy se čtou z (ukládají do) operační paměti v instrukci je adresa paměťového místa
implicitní operand Např. při provádění jednooperandové instrukce ADD 1234 se druhý (implicitní) operand čte z pomocného registru a výsledek se ukládá opět do tohoto registru
nepřímé adresování, relativní adresování ....
Nepřímé adresování nepřímé adresování (indirect addressing) paměťové místo adresované instrukcí neobsahuje data, ale opět adresu operandu nepřímé adresování může být víceúrovňové (řetězené) instrukce: op
oa if=1 if
oa if=1 if
oa
if=0 if = Indirect Flag (1 bit) 1 ... oa = nepřímá adresa 0 ... oa = adresa operandu
if
oa
operand
Relativní adresování relativní adresování adresa se vypočítává jako součet několika složek, např. báze a indexu:
oa = báze + index umožňuje realizaci virtuální paměti kvůli rychlosti jsou složky adresy obvykle uloženy v registrech a pro výpočet adresy se používá samostatná ALU báze
index
ALU
adresa operandu
Pořadí provádění instrukcí pořadí provádění instrukcí není libovolné algoritmus není komutativní
teoreticky lze v každé instrukci pomocí dalšího operandu určit, odkud se má číst následující instrukce … ... tak byl navržen např. počítač prof. Svobody (5-operandové instrukce) … ale takové instrukce by byly neúnosně dlouhé
instrukce programu se obvykle provádějí v pevném pořadí sekvenčně, tj. v pořadí, ve kterém jsou za sebou uloženy v operační paměti …
… takže adresu příští instrukce lze získat velmi jednoduše inkrementací registru PC (programového čítače), obsahujícího adresu právě provedené instrukce
PC+1—>PC
… někdy je ale nutné pořadí provádění instrukcí změnit !
Skok někdy je nutné pořadí provádění instrukcí změnit při výběru více variant pokračování … při volání podprogramu a návratu z něj … při obsluze přerušení …
k tomuto účelu slouží skokové instrukce operandem skokové instrukce je adresa příští instrukce tj. instrukce, která se má provést místo instrukce bezprostředně následující za skokem
provedení skoku může být podmíněné
tj. závisí na výsledku některé z předchozích operace ALU nebo stavu některé jiné části počítače
podmíněné skoky umožňují větvení programu v závislosti na mezivýsledcích rozhodovací operace typu:
jestliže platí C, proveď P1, jinak P2
Operační paměť počítač potřebuje rychlý přístup k instrukcím programu a operandům … … data v operační paměti jsou uložena tak, aby vyhledávání dat probíhalo co nejrychleji používá se náhodný přístup (Random Access) paměť je rozdělena na velký počet paměťových míst všechna paměťová místa paměti jsou stejně velká každému paměťovému místu je přiřazena unikátní adresa operační paměť můžeme považovat za jednorozměrné pole paměťových míst, kde adresa je indexem paměťového místa v tomto poli
s požadavkem na čtení nebo zápis se paměti předává adresa paměťového místa, se kterým má být operace provedena
Operační paměť velikost jednoho adresovatelného paměťového místa je nejčastěji 1 byte (slabika, 1B) s informační kapacitou 8 bitů vyhovuje pro ukládání binárních čísel a instrukcí (v případě potřeby lze použít více slabik za sebou), textu (1 slabika = 1 znak) i dekadických čísel (1 slabika = 2 dekadické řády)
s daty se často pracuje po větších celcích po slovech, blocích, stránkách, sektorech, segmentech … dosahuje se tím vyšší rychlosti zpracování termínem slovo (word) se obvykle označuje dvojice slabik … … ale někdy se tímto termínem označuje plná šířka toku dat (např. sběrnice) bez ohledu na počet slabik !!
velikost instrukcí a čísel je obvykle mocninou čísla 2 (16, 32, 64 či 128 bitů = 2, 4, 8 či 16 byte)
Operační paměť
Operační paměť Kromě vstupu adresy, vstupu dat a výstupu dat má operační paměť ještě řídící vstupy a stavové výstupy Řídící vstupy umožňují: určit typ operace (čtení, zápis) určit šířku toku dat (byte, slovo, dvojslovo …) aktivaci (start) paměťové operace
Stavové výstupy umožňují řadiči zjistit aktuální stav paměti dokončení operace, chyba parity, chyba zápisu, pokus o přístup k neexistujícímu paměťovému místu, pokus o přístup do zakázané oblasti …
Časování paměti paměť obvykle pracuje v cyklech délka cyklu je určena časem, který uplyne od okamžiku zahájení operace do okamžiku, kdy lze zahájit další operaci
Cyklus čtení (READ) před zahájením a po dobu provádění operace musí byt na vstupy paměti přivedena adresa čtení nějakou dobu trvá; dokončení operace čtení (tj. okamžik, kdy jsou na výstupu platná data) hlásí signál hotovo (Ready) přístupová doba paměti je čas, který uplyne od okamžiku zahájení operace do okamžiku, kdy se objeví signál hotovo
Cyklus zápisu (WRITE) před zahájením a po dobu provádění operace musí byt na vstupy paměti přivedena adresa a data zápis nějakou dobu trvá; dokončení operace zápisu (tj. okamžik, kdy adresu a data na vstupech již lze změnit a zahájit novou operaci) hlásí signál hotovo (Ready)
Rozhraní paměti celé soustavě propojovacích vodičů se říká rozhraní (interface) termín rozhraní označuje jednak vlastní adresní, datové, řídící a stavové vodiče, např. paměť
adresa (24 bitů) adresa
vstup dat (16 bitů)
výstup dat (16 bitů)
R/W STR RDY
data
řízení/stav
... ale také specifikaci, tj. podrobný popis funkce všech vodičů včetně logických úrovní, časování signálů, napájecích napětí, zapojení konektorů …
z rozhraní mezi pamětí a procesorem se později vyvinuly systémové sběrnice - zobecněná rozhraní pro vzájemné propojení jednotlivých částí počítače (bus).
Sběrnicím bude věnována samostatná přednáška
Děkuji za pozornost