Úvod do architektur procesoru˚ ˇ Pˇrednáška pro ACS
Ing. Jakub Št’astný, Ph.D.1 1 FPGA
Laboratoˇr/Laboratoˇr zpracování biologických signálu˚ ˇ Katedra teorie obvodu, ˚ FEL CVUT Technická 2, Praha 6, 166 27
23. února 2015
Osnova pˇrednášky 1 Úvod 2 Programovatelné procesory 3 Architektura CPU
ˇ Pamet’ová architektura Šíˇrka datového slova Architektura instrukˇcní sady Proudové zpracování Paralelizace 4 Standardní funkˇcní bloky 5 Návrh ˇradiˇce
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away. [Antoine de Saint-Exupery]
Úvod, základní pojmy
Jak realizovat algoritmus • neprogramovatelný systém • stavový automat • implementace zákaznické logiky • systém programovatelný na úrovni hardware I/O buˇnky, piny - okruh kolem FPGA
Programovateln´y blok
Programovateln´y blok
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
PB
Programovateln´y blok
Programovateln´y blok
Úrovneˇ programovatelnosti
stavový registr
aktuální stav
realizace automatu kombinaˇcn´ı logikou
stavový registr
aktuální stav
• systém programovatelný na úrovni mikrokódu
kombinaˇcn´ı vstupní signály
logika
vstupní signály
pamˇeˇt
implementované tabulky
mikroprogramu
pˇrechod˚ u a v´ystup˚ u budoucí stav
ROM nebo RAM
data
adresa
výstupní signály
budoucí stav
realizace automatu pamˇet´ı s mikroprogramem
• systém programovatelný na úrovni strojového kódu
výstupní signály
Programovatelné procesory
Zjednodušené schéma mikropoˇcítaˇcového systému Oˇc se budeme zajímat • pamet’ová ˇ architektura • šíˇrka datového slova • typ instrukˇcní sady • paralelizace
Hodnocení výkonu procesoru • typ instrukˇcní sady
• typ hierarchie pametí, ˇ pamet’ová ˇ
architektura
• propustnost IO zaˇrízení
Hodnocení výkonu procesoru • doba provádení ˇ programu
Tc = T × N × CPI • T – perioda hodin =
(1)
1 fclk
• N – poˇcet instrukcí v programu • CPI – prum ˇ ˚ erný poˇcet hodinových cyklu˚ na instrukci • subskalární procesor – CPI > 1 (pˇr. 4 a více – Z80) • skalární procesor – CPI = 1 • superskalární procesor – CPI < 1 • doba provádení ˇ programu • dnes cˇ asto už nehovoˇríme o fclk , není podstatné • zrychlení – musíme zmenšit jeden z faktoru˚ bez zvetšení ˇ ostatních
Co tím rozumíme?
ˇ Pamet’ová architektura
ˇ Pamet’ová architektura:von Neumann • historicky starší
• jedna spoleˇcná pamet’ ˇ pro data a instrukce
• jedna sada sbernic ˇ ˇ – bud’ cˇ teme D, nebo I k pameti
• program muže ˚ modifikovat sám sebe – buffer overflow
ˇ attack (zmena návratové adresy+instrukce v prostoru zásobníku,“jump esp").
• výhoda – levné, snáze se programuje
• nevýhoda – snížený výkon sdílením pameti ˇ (tzv. von
Neumannuv ˚ bottleneck)
• dnešní architektura procesoru˚ osobních poˇcítaˇcu˚ je
z hlediska programátora von Neumannova
• Tc = T × N × CPI
ˇ Pamet’ová architektura:Harvard • fyzicky oddelená ˇ ˇ pro data a instrukce pamet’
• dveˇ sady sbernic ˇ ˇ – lze cˇ íst souˇcasneˇ D a I k pameti
• program nemuže ˇ ˚ modifikovat sám sebe, nelze cˇ íst pamet’
programu • výhody
• vyšší výkon • fyzicky oddelené ˇ ˇ mohou mít odlišné parametry (pˇr. pameti
ˇ PIC24F – 24b instrukˇcní, 16b datová pamet’) • nevýhody • dražší, protože potˇrebujeme dveˇ sady sbernic ˇ • problém s inicializací konstant v pameti ˇ programu • v této "extrémistické" podobeˇ se pˇríliš nepoužívá • Tc = T × N × CPI
ˇ Pamet’ová architektura:Další
• úzké hrdlo! • modifikovaná harvardská architektura • harvardská architektura • možnost cˇ íst programovou pamet’ ˇ jako data • ˇreší problém inicializace datové pameti ˇ • mnoho mikrokontroléru, ˚ DSP procesory • hybridní architektura moderních procesoru˚ • z hlediska programátora von Neumannova • fyzicky sdílená pamet’ ˇ na program a data • z hlediska procesoru harvardská, dveˇ cache – výkon
Šíˇrka datového slova
Šíˇrka datového slova
1
co tím rozumíme?
2
co je lepší – rychlejší a kdy? jaké parametry procesoru ovlivní šíˇrka datového slova?
3
• v rovnici Tc = T × N × CPI • a jaké fyzické parametry logického obvodu • a jaké fyzické parametry nás vlastneˇ zajímají?
Šíˇrka datového slova • mýty a realita o šíˇrce slova • jen cˇ ásteˇcneˇ urˇcuje výpoˇcetní výkon • specifické aplikace – je tˇreba najít rovnováhu mezi rychlostí výpoˇctu a pˇresností • vliv na poˇcet bitu˚ instrukce • vliv na velikost logiky • vliv na rychlost logických obvodu˚ • vliv na spotˇrebu energie systémem • pˇrenos apl. mezi systémy s ruzn ˚ eˇ širokým slovem – noˇcní mura ˚ • 4b – jednoduché mikrokontroléry • 8, 16b – embedded systémy, chytré senzory, nízká • • • •
komplexita aplikací 24b – cˇ asto DSP procesory, vhodný kompromis šum/cena 32b, 64b – embedded systémy, osobní poˇcítaˇce, high end další šíˇrky – podle potˇreby aplikace vyplave zase u aritmetiky
Šíˇrka datového slova – pˇríklad pˇr. EM6580 http://www.emmicroelectronic.com/Products.asp?IdProduct=215 • 0.4 MIPS, flash memory 4096x16 bits, RAM 80x4 bity • 4bit ADC, 5 výstupu/2 ˚ výkonové výstupy (do 10 mA) • SO-8/14 pouzdro, UID v cˇ ipu
• Sleep Counter Reset (automatic wake-up from sleep
mode)
• RC oscillátor 32kHz – 800kHz
• watchdog timer (2 sec), Power-On-Reset with
Power-Check on start-up
• 3 wire serial port , 10-bit cˇ ítaˇc, PWM, event counter
• pro domácí pˇrístroje, automobilový prumysl, ˚ rozhraní
k senzorum, ˚ hodinky, atd.
Architektura instrukˇcní sady Co tím rozumíme?
Architektura instrukˇcní sady a mikroarchitektura • Instruction Set Architecture (ISA) definuje • které operace jsou procesorem podporovány • jak jsou kódovány instrukce – formát instrukce, operaˇcního znaku, reprezentace operandu, ˚ adresní módy, ukládání výsledku, ˚ etc. • je rozhraním mezi programátorem a procesorem • Microarchitecture/mikroarchitektura definuje • detaily HW implementace procesoru • obecneˇ detaily implementace SW ISA HW CPU, MEM, IO,...
CISC - Complex Instruction Set Architecture • snaha o rozšíˇrení instrukˇcního souboru, podpora pro vyšší
programovací jazyky
• košatý instrukˇcní soubor, mikroprogramovaný ˇradiˇc • historicky – 60./70. léta • cˇ asto se programovalo ve “strojáku" • sémantická mezera – snaha pˇriblížit asembler vyšším jazykum ˚ • naˇcítání instrukce z pameti ˇ bylo pomalé • redukce množství instrukcí a možnost kódování s vyšší hustotou • složitá operace snižuje dobu vykonávání programu, protože ˇ – místo více jednoduchých snižuje množství cˇ tení z pameti instrukcí jedna komplikovaná operace • akceptovatelné delší dekódování instrukce • malé pameti ˇ
CISC - Complex Instruction Set Architecture Pˇríklad CISC instrukce: REPE CMPSB • Compare bytes: ES:[DI] from DS:[SI]. • Algorithm: 1 DS:[SI] - ES:[DI] 2 set flags according to result: OF, SF, ZF, AF, PF, CF 3 if DF = 0 then SI = SI + 1, DI = DI + 1 else SI = SI - 1, DI = DI - 1 • další pˇríklady:
http://wikiti.brandonw.net/index.php?title=Z80_Instruction_Set Jak ovlivní CISC architektura cˇ leny známé rovnice? Tc = T × N × CPI
CISC - Complex Instruction Set Architecture • nejznámejší ˇ pˇríklady – Z80, ˇrada 80x86
• 70. léta – první VLSI cˇ ipy,jednoduché procesory s pipeline
ˇ se už vešly do jednoho cˇ ipu, zrychlení pametí
• pozorování: cca 80% cˇ asu CISC procesor vykonává 20%
typu˚ instrukcí
• nejˇcasteji ˇ jednoduché operace typu load, store, add, ... • negativa: • komplexní a pomalý ˇradiˇc • ˇradiˇc zabírá velkou plochu cˇ ipu • ˇradiˇc je velký stavový automat – mnoho spoju˚ a špatná routovatelnost/utilizace • cˇ asoveˇ nároˇcná verifikace systému • vývoj: zjednodušení instrukˇcní sady na naprosté minimum
RISC - Reduced Instruction Set Architecture • ISA: pevná délka instrukce, jednotné kódování
• malý poˇcet jednoduchých instrukcí • “zadrátovaný ˇradiˇc"
• v prum ˇ CPI<1.5, ideálneˇ 1 ˚ eru
• velký poˇcet registru˚ dostupných programátorovi (32-192) • operace s daty jen nad registry
• load/store architektura, omezené množství adresních
módu˚
• cˇ asto nezbytná podpora kompilátoru, ruzná ˚ omezení
• pˇríklad: http://en.wikipedia.org/wiki/MIPS_instruction_set
A dopad na známou rovnici? Tc = T × N × CPI
RISC vs. CISC dnes
• rozdíly mezi CISC a RISC se v podstateˇ setˇrely
• moderní CISC procesory adoptovaly RISCové vlastnosti
(jednoduché instrukce v jednom cyklu)
• moderní kompilátory dokáží využít i komplexní instrukce • RISC - success story: ARM (embedded), MIPS
(PlayStations etc), Atmel AVR.
Proudové zpracování Co si pod tím pˇredstavíte?
Proudové zpracování: koncepce
komb. logika tr
tl
komb. logika
tr
t l /2
komb. logika
tr
t l /2
tr
• pomalá komb. cesta → více menších c. vložením registru˚
• rozdelení ˇ do fází/stages, mezivýsledky registrovány po fázi • jak nám to pomuže? ˚
Proudové zpracování: koncepce
komb. logika tr
tl
komb. logika
tr
t l /2
• vzroste latence
komb. logika
tr
t l /2
tr
• je možné zaˇcít výpoˇcet nové úlohy ješteˇ než skonˇcí stará • co to bude stát?
Proudové zpracování: koncepce komb. logika tr
tl
komb. logika
tr
t l /2
komb. logika
tr
t l /2
tr
• na FPGA témeˇ ˇ r zdarma, protože se jedná o architekturu • • • • • •
bohatou na registry. ˇ se sice N× zmenší kombinaˇcní zpoždení ˇ registru˚ vložených do obvodu ALE zpoždení puvodní ˚ návrh: tclkMIN = tr + tl + ts proudové zpracování: tclkMIN = tr + tl /2 + ts možnost automatické aplikace obecná metodika
Proudové zpracování v CPU – pipeline • jak zrychlit výpoˇcet: • replikací jednotek – paralelizací • zˇretezením ˇ jednotek • snižujeme CPI, T , Tc = T × N × CPI • podmínky pro zˇretezení: ˇ • nepˇretržitý pˇrísun dat • operaci nutno rozdelit ˇ na sekvenci stejneˇ cˇ asoveˇ nároˇcných ˇ kroku˚ realizovaných jednotlivými stupni ˇretezu • trvání jednotlivých kroku˚ by melo ˇ být zhruba stejné • urychlení behu ˇ aplikace • bez pipeline: perioda hodin a CPI urˇcuje výkon, doba behu ˇ ˇ jednotlivých instrukcí programu je prostý souˇcet dob behu • s pipeline: latence, hodinová frekvence a iniciaˇcní interval pipeline urˇcuje výkon
Proudové zpracování • nejjednodušší – dveˇ fáze, Fetch, Execute
• nízká využitost IF fáze (33% v pˇríkladu), ˇrešení → více fází • pˇríklad – 8086, asynchronní pipeline, fetch když je "volno" 6B FIFO MEM
BIU
write
read EXU
full
empty
Intel 8086 CPU
IF EX EX EX IF EX EX EX
IF EX EX EX
Proudové zpracování Typická pipeline v RISC procesoru: • IF – instruction fetch, naˇctení instr. z pameti ˇ z adresy v program counteru, ten je automaticky inkrementován • ID – instruction decode, dekódování instrukce, pˇrenos operandu˚ z registrového pole do ALU • EX – instruction execution, vykonání • ME – memory access • WB – writeback, zpetný ˇ zápis výsledku˚ z ALU do reg. pole • pˇríklad: http://en.wikipedia.org/wiki/MIPS_instruction_set
IF
ID EX ME WB IF
ID EX ME WB IF
ID EX ME WB
Proudové zpracování • konflikty pˇri zpracování instrukcí • datové – read after write (RAW), write after read (WAR), write after write (WAW), ADD r1,r2,r2 SUB r5,r1,r4
IF
ID EX WB IF
ID
?? EX WB
r1 = r2+r2 r5 = r1−r4
• ˇrídící – nevíme, zda se podmínený ˇ skok vykoná, nebo ne.
Jaká se má naˇcíst instrukce po instrukci skoku? • strukturní závislosti – blok v procesorovém systému je
ˇ souˇcasneˇ vyžadován dvema instrukcemi v ruzných ˚ fázích ˇ souˇcasneˇ pro fetch a pro cˇ tení zpracování (napˇr. pamet’ operandu˚ instrukce) • ˇrešíme • staticky – kompilátorem • dynamicky – za behu, ˇ procesorem, v hardware (pipeline stall, predikce skoku) ˚
Proudové zpracování
• CedarMill (Celeron D, Pentium 4), 65 nm, 31 stages • Core (Core 2, Xeon), 65 nm, 14 stages
• SandyBridge (Core I7), 32 nm, 14 – 19 stages, 2011 • Haswell, 22 nm, 14 – 19 stages, 2013
Prescott: 31 stages vs. 20 pro Northwood, larger cache (dvojnasobek L1 i L2), 5.7% performance improvement over Northwood only, 103 W vs. 82 W, 125M vs. 55M tranzistoru
Co tím rozumíme?
Paralelizace
Paralelizace
• témeˇ ˇ r všechny algoritmy dovolují využít jistého paralelizmu
• dosažení vyšší rychlosti výpoˇctu
• s rostoucí rychlostí CPU nelineárneˇ roste cena
• místo jedné jednotky s hodinami na 1 GHz lze teoreticky
lze použít 4×250MHz jednotky (a s klesající frekvencí lze ˇ – kombinace 4 procesoru˚ muže snížit napájecí napetí ˚ mít menší spotˇrebu)
• použití specifických procesoru˚ – koprocesoru˚ –
optimalizovaných na konkrétní úlohy
Paralelizace
• granularita • na úrovni procesu˚ • na úrovni vláken • na úrovni instrukcí • na úrovni mikroinstrukcí • na úrovni hradel • Amdahluv ˚ zákon • Speedup = 1 rp rs +
n
• Pˇríklad: lze paralelizovat bez omezení poˇctu procesoru˚
75% výpoˇctu • rs = 0.25, rp = 0.75, Speedupmax,n→∞ = 4
Paralelizace: Flynnova taxonomie
Nejjednodušší paralelizace • nejjednodušší – spolupráce DMA a procesoru, double
buffering
Multithreading • mezera ve výkonu pametí ˇ a CPU → CPU cˇ eká na pamet’, ˇ
když (pˇr 50 instrukcí/pipeline stall)
• instrukce naˇcítá data, která nejsou v cache • došlo ke špatné predikci podmíneného ˇ skoku...
• behem ˇ ˇ cˇ ekání lze pokraˇcovat v jiné úloze, která pamet’
nepotˇrebuje
1 1
Multithreading
• nutná podpora pro rychlé pˇrepnutí úloh, sdílená pamet’ ˇ • → více cˇ ítaˇcu˚ programu, registrových sad v procesoru
• pˇríklad: MIPS MT, 14% overhead podpory pro MT, o 60%
ˇ výkon CPU2 vetší
2
Demistyfing multithreading and multi-core, Kevin D. Kissell, EE Times
Multiprocessing
• víceprocesorový systém
• rovnocenné procesory vs. koprocesor
• oddelené ˇ ˇ je nutno implementovat úlohy, sdílení pameti • velká granularita
• symetrický a asymetrický multiprocessing
von Neumann’s bottleneck
• další akcelerace výpoˇctu – limit datové propustnosti
ˇ rozhraní k pameti
• tzv. "von Neumann’s bottleneck"
• nelze pˇridávat další a další výpoˇcetní jednotky a zvyšovat
ˇ množství paralelneˇ provádených operací
• nebudeme staˇcit dodávat dostateˇcneˇ rychle data pro
ˇ výpoˇcet z pameti
ˇ až specializované výpoˇcetní Dalši urychlení umožnují architektury.
Standardní funkˇcní bloky
Schéma jednoduchého procesoru ˇradiˇc ˇc´ıtaˇc instrukc´ı
instrukˇcn´ı registr
adresov´a sbˇernice
pamˇeˇt
datov´a sbˇernice
dekod´er instrukc´ı
datov´a cesta registrov´e pole
ˇradiˇc ALU
registrov´e pole
pamˇeˇt
datov´a cesta
Standardní funkˇcní bloky ˇ Radiˇ c
ˇradiˇc
ALU
dekódované instrukce • "zadrátovaný" rˇadiˇc – FSM – RISC • mikroprogramovaný ˇradiˇc "CPU v CPU" CISC procesory pˇr. Intel Pentia aktualizace mikrokódu možná • pˇr. microcode update – Linux • • • •
ˇradiˇc
dekod´er instrukc´ı
datov´a sbˇernice instrukˇcn´ı registr
ˇc´ıtaˇc instrukc´ı
adresov´a sbˇernice
• ˇrídí ostatní jednotky podle
registrov´e pole
ALU
ALU
• Arithmetic-Logic Unit
datov´a sbˇernice
adresov´a sbˇernice
pamˇeˇt
datov´a cesta
Standardní funkˇcní bloky
• v každém CPU
• elementární aritm. a log.
operace
• +,-,*,and,not,or,xor,posuvy
ˇradiˇc
architektura vs. GPR
ˇradiˇc
dekod´er instrukc´ı
instrukˇcn´ı registr
ˇc´ıtaˇc instrukc´ı
• operandy – akumulátorová • pˇríznaky – Cy,S,Z
registrov´e pole
pamˇeˇt
datov´a cesta
Standardní funkˇcní bloky registrové pole
ALU
datov´a sbˇernice
adresov´a sbˇernice
• nejrychleji dostupná pamet’ ˇ
• tzv. architekturní registry
• obecné vs. specializované
registry
• jeden vs. více adresních
ˇradiˇc
• hodneˇ registru˚ urychlí práci ˇradiˇc
dekod´er instrukc´ı
instrukˇcn´ı registr
ˇc´ıtaˇc instrukc´ı
registru˚
ˇ s lokálními promennými (RISC architektury)
registrov´e pole
pamˇeˇt
datov´a cesta
Standardní funkˇcní bloky adresní jednotka
ALU
datov´a sbˇernice
adresov´a sbˇernice
• adresovací režimy: pˇrímý
operand, registrový operand, pˇrímá adresa, nepˇrímá adresa, index, báze, autoinkrementace
• stránkování vs. lineární
ˇradiˇc
• bloková adresace ˇradiˇc
dekod´er instrukc´ı
instrukˇcn´ı registr
ˇc´ıtaˇc instrukc´ı
adresní režim
(ofset,limit) – DSP, cyklická autoinkrementace
• reverzní adresace – DSP
(FFT)
Standardní funkˇcní bloky
MMU • Memory Management Unit
• správa pameti ˇ –
segmentace, stránkování
• virtuální pamet’ ˇ
• pˇrístupová práva k pameti ˇ
FPU • Floating-Point Unit
• elementární aritm. operace
(+-*/)
• nekdy ˇ ˇ – složitejší
√
,sin,cos
• softwarová emulace
Návrh mikroˇradiˇce
Návrh ˇradiˇce
adc_start <= ’1’ get_result <= ’0’
• chceme: velmi jednoduchý
programovatelný ˇradiˇc pro realizaci stavových automatu˚
• potˇrebné operace?
adc_start <= ’0’ get_result <= ’0’
adc_ready = ’0’
− adc_start <= ’0’ get_result <= ’1’
+
Požadavky na ˇradiˇc
1
2
ˇ mikroprogramu na 256 instrukcí, 8 bit PC, pokud pamet’ PC = 255 → PC = 0, poˇc. stav je PC = 0 ˇ ˇ 7 vst. podmínkových signálu˚ kt. lze ovlivnovat provádení ˇ instrukce, predikáty), signály jsou instrukci (podmínené asynchronní vuˇ ˚ ci hodinám
3
4 výstupní 8bit brány ovládané mikroinstrukcí WRITE. Brána je registrovaná, reset registr nastaví do 0x00
4
ˇ mikroinstrukce JUMP umožnuje nahrát obsah PC a provést skok ˇ asynchronního resetu je už externeˇ uvolnení synchronizované do lokální hodinové domény
5
Interface ˇradiˇce clk
res
cond_1
port_0
cond_2
8 port_1
cond_3 cond_4 cond_5 cond_6 cond_7
PicoCTRL
8 port_2 8 port_3 8
Pˇríklad mikroprogramu clk
res
cond_1
port_0
cond_2
8 port_1
cond_3 cond_4 cond_5 cond_6 cond_7
PicoCTRL
adc_start <= ’1’ get_result <= ’0’
8 port_2 8 port_3 8
port0.0 = adc_start, port0.1 = get_result, cond_1 = adc_ready WRITE 0x01 TO port_0 WRITE 0x00 TO port_0 WAIT: IF cond_1 = 0 THEN JUMP TO WAIT WRITE 0x02 TO port_0
adc_start <= ’0’ get_result <= ’0’
adc_ready = ’0’
− adc_start <= ’0’ get_result <= ’1’
+
Formát mikroinstrukce 15 CV
14 13 12 Podmínka
11 10 OpCode
9
8
7 6 5 4 3 2 Parametry instrukce
1
• OpCode – operaˇcní kód instrukce, 01 – WRITE, 00 –
JUMP
• Parametry – WRITE – AADDDDDDDD – Adresa reg., 8 bit
Data
• Parametry – JUMP – 00JJJJJJJJ – 8 bit cílová adresa pro
skok
• Podmínka – index podmínkového vstupu, podmínky 1 – 7
cˇ teny ze vstupu˚ cond_1 – cond_7, podmínka 0 je trvale v log. 0
• CV – logická hodnota kt. musí podmínkový signál mít, aby
se instrukce provedla
0
Pˇreložený mikroprogram
00:0000 0100 0000 0001 IF cond_0 = 0 THEN WRITE 0x01 TO port_0 01:0000 0100 0000 0000 IF cond_0 = 0 THEN WRITE 0x00 TO port_0 WAIT: 02:0001 0000 0000 0010 IF cond_1 = 0 THEN JUMP TO WAIT 03:0000 0100 0000 0010 IF cond_0 = 0 THEN WRITE 0x02 TO port_0
ˇ mikroprogramu a cˇ ítaˇc instrukcí Pamet’
PC
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0x01
Odkud se nahrává PC?
ˇ Nepodmínená instrukce JUMP
15 CV
14 13 12 Podmínka
11 10 00
9
8
7
PC
6 5 4 3 00JJJJJJJJ 1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
JUMP
Jak pˇridáme podmínky?
2
1
0
ˇ JUMP Podmínky a podmínený 15 CV
14 13 12 Podmínka
11 10 00
9
8
7
6 5 4 3 00JJJJJJJJ PC
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
0
JUMP
cond_1 cond_2 cond_3 cond_4
=
cond_5 cond_6 cond_7
Jak rozpoznáme instrukci WRITE?
2
1
0
15 CV
14 13 12 Podmínka
Detekce instrukce WRITE 9 8 7 6 5 4 3 2
11 10 01
AADDDDDDDD PC
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
0
JUMP
cond_1
WRITE cond_2 cond_3 cond_4
=
cond_5 cond_6 cond_7
Jak bude vypada logika pro výstupní brány?
1
0
Implementace výstupních bran 15 CV
14 13 12 Podmínka
11 10 01
9
8
7
6 5 4 3 2 AADDDDDDDD
PC
1
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
8 0
JUMP
cond_1
WRITE cond_2
0 1 0
cond_3 1 cond_4
=
0
port_0 8 port_1 8 port_2
cond_5 1 cond_6 cond_7
0 1
Odkud bereme data pro zápis do výstupních bran?
8 port_3
0
Datová cesta – data pro brány 15 CV
14 13 12 Podmínka
11 10 01
9
8
7 PC
6 5 4 3 2 AADDDDDDDD
1
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
8 0
JUMP
cond_1
WRITE cond_2
0 1 0
cond_3 1 cond_4
=
0
port_0 8 port_1 8 port_2
cond_5 1 cond_6 cond_7
Odkud bereme informaci do které brány zapsat?
0 1
8 port_3
0
PicoCTRL – kompletní schéma PC
1
ROM 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 8 0x01
8 0
JUMP
cond_1
WRITE cond_2
0 1 0
cond_3 1 cond_4
=
0
port_0 8 port_1 8 port_2
cond_5 1 cond_6 cond_7
0 1
8 port_3