Postavme si procesor

Adam Dej

Čo je procesor?

  • (Wikipedia) elektronický obvod ktorý vykonáva inštrukcie počítačového programu vykonávaním základných aritmetických, logických, kontrolných a vstupno-výstupných operácií

Čo presne postavíme?

  • Veľmi zjednodušený procesor
  • Pripojíme aj predpripravené periférie na demonštráciu
  • Výpočtový výkon drozofily

Tranzistor

N-channel

P-channel

P-channel

N-channel

MOSFET tranzistory

Gate

Drain

Source

Gate

Drain

Source

Aproximácia:
Zapnutý, ak

V_{gate} = V_{cc}
Vgate=VccV_{gate} = V_{cc}

Aproximácia:
Zapnutý, ak

V_{gate} = \text{GND}
Vgate=GNDV_{gate} = \text{GND}

Postavme NOT

vstup

výstup

GND

V_{cc}
VccV_{cc}

P-channel

N-channel

Logické hradlá

NOT

OR

AND

NOR

NAND

Sčítačka

0001011
0010001
0011100

+

=

eXclusive OR

A B OUT
0 0 0
0 1 1
1 0 1
1 1 0

Half adder

Demonštrácia

Komponenty procesora

Aritmeticko-logická jednotka

  • Vstupom sú operandy
  • Sčíta, odčíta, logický and, logický not...
  • Výstupom je výsledok

Naša bude vedieť iba zvýšiť a znížiť číslo o 1

Registre

  • Sme vypočítali...
  • Teraz by bolo dobré si to niekde pamätať
     
  • S-R Latch
  • D flip-flop

Demonštrácia

Inštrukčná sada

< > + - [ ] , .
00 00 05 B4 A0 47 8E 00 00 00

Inštrukčná sada

  • '>' - Posun hlavy o políčko doprava
  • '<' - Posun hlavy o políčko doľava
  • '+' - Pripočítaj 1 k momentálnej bunke
  • '-' - Odpočítaj 1 od momentálnej bunky
  • '[' - Ak je momentálna bunka '0' preskoč k vhodnej ']'
  • ']' - Ak momentálna bunka nie je '0', vráť sa k vhodnej '['
  • '.' - Vypíš obsah bunky na výstup
  • ',' - Načítaj vstup do bunky

Čo teda našemu procesoru ešte chýba?

  • ROM
  • RAM
  • Program counter
  • Memory counter
  • Zero detect
  • Skip counter
  • Vstup
  • Výstup

Srdce procesora:
kontrolná jednotka

Čo to je?

  • Načíta inštrukciu
  • Dekóduje ju
  • Ovláda kontrolné signály častí procesora

Cykly operácie

  • Fetch
    • Zvýš Program counter o 1
    • Dekóduj inštrukciu
  • Execute

Kontrolné signály v Execute cykle
Vykonanie '+'

  • RAM[MC] → BUS; BUS → A
  • A → IDU; Increment; BUS → RAM[MC]

Kontrolné signály vo Fetch cykle

  • PC.low → BUS; BUS → A
  • A → IDU; Increment, BUS → PC.low
  • A → IDU; Increment; IF ZERO:
    • PC.high → BUS; BUS → A
    • A → IDU; Incement; BUS → PC.high
  • ROM[PC] → IDU.nextInstruction

Ako to zostrojiť?

  • Veľa hradiel, posuvné registre
  • Mikrokódová jednotka

Po dokončení...

Ďakujem za pozornosť!

Otázky?

  • Simulácia logických obvodov: Logisim
  • Hotový procesor sa dá nájť na mojom Githube
  • Prezentácia "powered by": slides.com

adam-dej.github.io

Made with Slides.com