Toto je starší verze dokumentu!


Princip činnosti počítače

Obecně lze princip činnosti počítače může být dvojí:

  • analogový počítač, který zpracovává analogová data (obvykle úzká specializace na jednu úlohu)
  • číslicový počítač, který zpracovává digitální data

Číslicový počítač lze snadno zkonstruovat jako univerzální počítač. Č.p. s určitými minimálními schopnostmi umí provést totéž co libovolný jiný počítač, proto jsou dnes kontruovány především číslicové počítače, protože jsou rychlejší a přesnější. Zpracovávají logické a číselné hodnoty. Operace jsou prováděny v aritmetické jednotce jedna za druhou. Hodnoty i program jsou uloženy v operační paměti na část pro data a program (Hardvardská architektura). Základní části počítače:

  • aritmeticko-lofická jednotka (ALU)
  • pamět
  • řadič
  • periferní zařízení
  • techniky urychlování výpočtu v HW
    • speciální kódování dle potřeby dané úlohy (není to řešení pro univerzální procesory (nejsou na nich naimplementované aritmetické operace v kódu zbytkových tříd)
    • speciální výpočetní jednotky dle potřeby dané úlohy (FFT - rychlá fourierova transformace)
    • paralelní zpracování (násobné výpočetní jednotky)
    • zřetězené zpracování (=pipeling)
  • něco k jednotlivým metodám
    • paralelní zpracování
      • více elementárních úloh běží současně
  • zřetězené zpracování:

Zřetězené zpracování

Jako vzorvný příklad se uvádí grafický filtr. Vstupem obvodu je pixel, který se po projití obvodu (filtrem) přefiltruje.

1) obvod bez zřětězení

2) zřetězený filtr
  • původní filtr je rozdělen a do obvodu jsou přidány registry

  • uvažujeme 9-ti stupňový filtr
    • stejně jakou u první obvodu počítame s 65 536 pixelů
    • zpoždění stupně filtru: 10 ns

1. pixel se zpracuje za 9 x 10 = 90 ns

2., 3., … 65 536. pixel vždy po 10 ns

  • celkem tedy: 90 ns + (65535 x 10 ns) = 655 440 ns ⇒ zrychlení 8.9989 krát

zrychlení není 9x, protože se musí naplnit zřetězená linka ve výpočtu se neuvažuje zpoždění registru

zrychlení použitím řetězením

  • vytvoříme k stupňů oddělených registry
    • počet vstupů: N
    • počet stupňů: k
    • zpoždění stupně: t
    • zpoždění registru: d
    • zrychlení celkem:
    • je třeba položit si otázky
      • kdy má smysl zavést zřetězené zpracování?
        • Pokud je N dostatečně velké!
        • Pokud je zpoždění stupňů přibližně stejné
      • jaký je optimální počet stupňů?

Řetězené zpracování instrukcí v procesorech

  • princip zřetězení se značně překrývá s principy procesorů RISC
  • základní myšlenka:

„V procesorech CIS používají složité strojové instrukce (CPI»1) pouze špičkový programátoři, ale standartí rutiny kompilátoru je nepoužívají.“

CPI = průměrný počet taktů na jednu instrukci

  • výhodnější by bylo implementovat pouze jednoduché, ale rychlé instrukce
  • cílem je dosáhnout parametru instrukčního souboru CPI = 1
  • toho lze dosáhnout pouze trikem - překrýváním cyklů (u jednoduchého procesoru má instrukce CPI minimálně 3)
  • Popis cyklů reálného procesoru

Obecné rysy architektur RISC

  • malý počet relativně jednoduchých instrukcí
  • snaha o CPI = 1 (ideální teoretický případ) ⇒ v každém taktu se procesoru se většinou dokončí jedna instrukce (reálný průměr je CPI < 1,5)
  • všechny instrukce mají stejnou složitost
  • přístup k paměti mají pouze 2 instrukce: LOAD a STORE (zbytek pracuje s registry) → malý počet adresivých modů (3-5)
  • registrová architektura (dostupných je 32-192)
  • rychlý obvodový řadič
  • oddělená pamět (cache) instrukcí a dat
    • p.p. řadič = pevně propojený řadič
    • oddělené paměti cache pro instrukce (I) a data (D)

DLX procesor

  • výukový RISC procesor

  • MX: multiplexor, DC: cache dat, =O?: detektor nuly, IC: cache instrukcí, ALU: aritmeticko-logická jednotka, PC: čítač instrukcí, IR: registr instruce, RF: soubor registrů, s.ex: jednotka rozšíření znaménka, dst: adresa cílového registru, src1 a scr2: adresy zdrojových registrů, imm: přímý operand, L/S: load/store
  • paměť M je rozdělena na paměť instrukcí (IC) a paměť dat (DC)
  • v každém taktu je celý stav zpracování instrukce obsažen úplně a výhradně v obvodech jen jednoho stupně → ostatní stupně jsou volné a dají se použít pro paralelní zpracování dalších nezávislých instrukcí

Konflikty u řetězeného zpracování v procesorech

  • tyto konflikty mohou vést ke zpomalení linky
  1. Strukturální
    • obvodová struktura neumožňuje současné provedení určitých akcí (např. současné čtení dvou hodnot z paměti nebo současné provedení dvou sčítání, pokud má procesor jednu ALU)
  2. Datové
    • když jsou zapotřebí data z předcházející instrukce, která ještě není dokončena
    • klasifikace
      • RAW - Read After Write
      • WAW - Write After Write
      • WAR - Write After Read
    • Bypassing
      • poskytnutí mezivýsledku dřív než bude zapsán do registru
      • je to umožněno přidáním speciálních datových cest (např. příklady na obrázku)
      • pomáhá řešit datové konflikty
  3. Řídící
    • když skoková instrukce mění obsah PC nebo jiné
    • neví, kam skočit, protože adresa bude známa až po fázi M na řádku BC
    • řešení:
Řídící konflikty a prediktory skoku
  • experimenty bylo zjištěno, že četnost skoků v programech je značná - z toho se asi 83% povede
  • u skoků je třeba zrychlit zjištění cílové adresy (kam skočit), proto se používá malá cache pamět pro uložení cílových adres (BTB - Branch Target Buffer)
  • u podmíněných skoků jsou navíc ještě vyhodnocovány podmínky, o jejich splnění je možné spelukovat predikce skoků - ta může být statická (kompilátor nastaví bit predikce) nebo dynamická (pomocí speciálního HW)
  • predikce (spekulace) probíhá podle předchozích směrů skoku (historii lze popsat binárním řetězcem několika bitů)
  • nejjednodušší prediktor = Jednobitový prediktor
    • použí 1 bit z historie (tj. předchozí skok) a předpovídá následující
    • stav 0 = skok se minule neprovedl, předpověd je neskoč (-)
    • stav 1 = skok se minile provedl ⇒ předpověd je skoč (+)
    • pokud je předpověd špatná musí být špatná větev programu ukončena a musí začít načítání instrukcí ze správné větve (je třeba aktualizovat BTB, to stojí několik taktů zřetězené linky)

Zřetězené zpracování přináší urychlení výpočtu nejen v procesorech, ale i jiných číslicových obvodech (např. pro zpracování obrazu, bioinformatických dat apod.). Pokud použijeme zřetězené zpracování, musíme dodat řadu podpůrných oibvodů a řešit řadu nových problémů. Moderní procesory používají kromě zřetězení i další koncepty:

  • superskalární architektury
  • VLIW procesory
  • vektorové procesory
  • multivlákonové procesory

CISC architektura

Vloženo jako poznámka pro znázornění rozdílu v architekturách.

  • = procesory s komplexním instrukčním souborem
  • vysoká složitost instrukcí ⇒ nutný systematický návrh řadiče procesoru
  • vykonání strojové instrukce probíhá posloupností mikrooperací (předpepsána mikroinstrukcí v řídící paměti)
  • řidící paměti byly pevné (Read-Only Memory = ROM) a mnohem rychlejší než RAM
  • díky vývoji mikrotechniky se řídící pamět přesuna na cache; to umožnilo držet krok s RISC architekturou
  • patří mezi nejvíce rozšířené (486, Pentium)
  • !!! OBRAYEK procesor_cisc.gif

Zdroje

INP: 5. přednáška věnová RISC procesorům (dostupná na https://wis.fit.vutbr.cz/FIT/st/course-files-st.php/course/INP-IT/lectures/inp2010_05risc.pdf)

Dvořák Václav Prof.Ing. DrSc., Drábek VLadimír Doc.Ing. CSc. - Architektura procesorů - VUTIUM 1999

CIS architektura (ilustrace z) http://www.wiki.sps-pi.com/index.php/CISC_architektura

Diskuze

vagyvagabund, 2011/04/07 16:08

priklad na prevod nezretezene na zretezene

Jirka Hynekgeorge, 2011/04/09 18:36

Dodělal jsem podkapitolu Obecné informace, která mi tu chyběla. Popisuje základní pojmy a činnost procesoru. Zdroj - záznam INP

Jirka Hynekgeorge, 2011/04/13 16:39

Ještě mi Ofeig posílal link na vysvětlení RISC a CISC

Mrndatest2a00:1028:96c4:335e:f80a:21e7:d5ca:ad3a, 2018/05/16 14:20

Akutalizovaý odkaz na vysvětlení RISC a CISC: http://web.fit.vutbr.cz/study/courses/ITP/public/texty/architektury01_2017.pdf

Vložte svůj komentář
 
temata/07-princip_cinnosti_pocitace/main.1301389505.txt.gz · Poslední úprava: 2011/03/29 11:05 autor: ofeig
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki