Úvod do architektur procesorů

Podobné dokumenty
Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Pohled do nitra mikroprocesoru Josef Horálek

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Procesor. Procesor FPU ALU. Řadič mikrokód

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Struktura a architektura počítačů (BI-SAP) 7

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

Architektury CISC a RISC, uplatnění v personálních počítačích

Princip funkce počítače

PROCESOR. Typy procesorů

Profilová část maturitní zkoušky 2014/2015

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Architektury počítačů a procesorů

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

Architektury VLIW M. Skrbek a I. Šimeček

Mikrokontroléry. Doplňující text pro POS K. D. 2001

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

RISC a CISC architektura

Technické prostředky počítačové techniky

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Struktura a architektura počítačů

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Úvod do architektur personálních počítačů

Profilová část maturitní zkoušky 2015/2016

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 TECHNICKÉ VYBAVENÍ POČÍTAČŮ

Architektura počítače

Provádění instrukcí. procesorem. Základní model

Řízení IO přenosů DMA řadičem

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Architektura procesoru ARM

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

SYSTÉMY NAČIPU MI-SOC

PB002 Základy informačních technologií

Architektura počítačů

Principy počítačů I - Procesory

2 Hardware a operační systémy

Architektura Intel Atom

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Struktura a architektura počítačů (BI-SAP) 1

CISC A RISC PROCESORY Jak pracují procesory CISC:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Architekura mikroprocesoru AVR ATMega ( Pokročilé architektury počítačů )

Architektury CISC a RISC, uplatnění v personálních počítačích - pokračování

Y36SAP

Řetězené zpracování. INP 2008 FIT VUT v Brně

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

MSP 430F1611. Jiří Kašpar. Charakteristika

Procesor z pohledu programátora

Paměťový podsystém počítače

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Cílem kapitoly je seznámit studenta s pamětmi. Jejich minulostí, současností a hlavnímu parametry.

Architektura počítačů Implementace procesoru

ARCHITEKTURA PROCESORŮ

Struktura a architektura počítačů (BI-SAP) 11

Strojový kód. Instrukce počítače

Charakteristika dalších verzí procesorů v PC

Úvod do architektur personálních počítačů

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

Vstupně výstupní moduly. 13.přednáška

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

Počítač jako prostředek řízení. Struktura a organizace počítače

Jak do počítače. aneb. Co je vlastně uvnitř

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

Vstupně - výstupní moduly

C2115 Praktický úvod do superpočítání

Cache paměť - mezipaměť

Charakteristika dalších verzí procesorů Pentium

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Základní uspořádání pamětí MCU

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Pohled do nitra mikroprocesoru

PROCESOR. Rozdělení procesorů

OPS Paralelní systémy, seznam pojmů, klasifikace

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

Paralelní a distribuované výpočty (B4B36PDV)

Paměti Flash. Paměti Flash. Základní charakteristiky

Náplň přednášky 1. Vestavěný systém Výrobci technických řešení Mikrokontroléry ARM NXP Kinetis KL25Z Rapid prototyping Laboratorní vývojová platforma

CHARAKTERISTIKA PROCESORU PENTIUM První verze:

Intel Procesor a jeho konstrukce. Vývojové typy, činnost procesoru

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

MIKROPROCESOR. (c) Ing. Josef Varačka. Title: XI 28 11:40 (1 of 8)

Transkript:

Úvod do architektur procesorů Přednáška pro AČS Ing. Jakub Št astný, Ph.D. 1 1 FPGA Laboratoř/Laboratoř zpracování biologických signálů Katedra teorie obvodů, FEL ČVUT Technická 2, Praha 6, 166 27 23. února 2015

Osnova přednášky 1 Úvod 2 Programovatelné procesory 3 Architektura CPU Pamět ová architektura Šířka datového slova Architektura instrukční sady Proudové zpracování Paralelizace 4 Standardní funkční bloky 5 Návrh řadiče

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

neprogramovatelný systém stavový automat implementace zákaznické logiky Jak realizovat algoritmus systém programovatelný na úrovni hardware I/O buňky, piny - okruh kolem FPGA 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ý blok Programovatelný blok Programovatelný blok Programovatelný blok

Úrovně programovatelnosti systém programovatelný na úrovni mikrokódu realizace automatu kombinační logikou vstupní signály stavový registr aktuální stav kombinační logika výstupní signály vstupní signály stavový registr aktuální stav adresa ROM nebo RAM data výstupní signály implementované tabulky přechodů a výstupů paměť mikroprogramu budoucí stav budoucí stav realizace automatu pamětí s mikroprogramem systém programovatelný na úrovni strojového kódu

Programovatelné procesory

Zjednodušené schéma mikropočítačového systému Oč se budeme zajímat pamět ová architektura šířka datového slova typ instrukční sady paralelizace Hodnocení výkonu procesoru typ instrukční sady typ hierarchie pamětí, pamět ová architektura propustnost IO zařízení

Hodnocení výkonu procesoru doba provádění programu T c = T N CPI (1) T perioda hodin = 1 f clk N počet instrukcí v programu CPI průměrný počet hodinových cyklů na instrukci subskalární procesor CPI > 1 (př. 4 a více Z0) skalární procesor CPI = 1 superskalární procesor CPI < 1 doba provádění programu dnes často už nehovoříme o f clk, není podstatné zrychlení musíme zmenšit jeden z faktorů bez zvětšení ostatních

Co tím rozumíme? Pamět ová architektura

Pamět ová architektura:von Neumann historicky starší jedna společná pamět pro data a instrukce jedna sada sběrnic k paměti bud čteme D, nebo I program může modifikovat sám sebe buffer overflow attack (změna 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 paměti (tzv. von Neumannův bottleneck) dnešní architektura procesorů osobních počítačů je z hlediska programátora von Neumannova T c = T N CPI

Pamět ová architektura:harvard fyzicky oddělená pamět pro data a instrukce dvě sady sběrnic k paměti lze číst současně D a I program nemůže modifikovat sám sebe, nelze číst pamět programu výhody vyšší výkon fyzicky oddělené paměti mohou mít odlišné parametry (př. PIC24F 24b instrukční, 16b datová pamět ) nevýhody dražší, protože potřebujeme dvě sady sběrnic problém s inicializací konstant v paměti programu v této "extrémistické" podobě se příliš nepoužívá T c = T N CPI

Pamět ová architektura:další úzké hrdlo! modifikovaná harvardská architektura harvardská architektura možnost číst programovou pamět jako data řeší problém inicializace datové paměti mnoho mikrokontrolérů, DSP procesory hybridní architektura moderních procesorů z hlediska programátora von Neumannova fyzicky sdílená pamět na program a data z hlediska procesoru harvardská, dvě cache výkon

Šířka datového slova

Šířka datového slova 1 co tím rozumíme? 2 co je lepší rychlejší a kdy? 3 jaké parametry procesoru ovlivní šířka datového slova? v rovnici T c = T N CPI a jaké fyzické parametry logického obvodu a jaké fyzické parametry nás vlastně zajímají?

Šířka datového slova mýty a realita o šířce slova jen částečně určuje výpočetní výkon specifické aplikace je třeba najít rovnováhu mezi rychlostí výpočtu a přesností vliv na počet bitů instrukce vliv na velikost logiky vliv na rychlost logických obvodů vliv na spotřebu energie systémem přenos apl. mezi systémy s různě širokým slovem noční můra 4b jednoduché mikrokontroléry, 16b embedded systémy, chytré senzory, nízká komplexita aplikací 24b často DSP procesory, vhodný kompromis šum/cena 32b, 64b embedded systémy, osobní počítače, high end další šířky podle potřeby aplikace vyplave zase u aritmetiky

Šířka datového slova příklad př. EM650 http://www.emmicroelectronic.com/products.asp?idproduct=215 0.4 MIPS, flash memory 4096x16 bits, RAM 0x4 bity 4bit ADC, 5 výstupů/2 výkonové výstupy (do 10 ma) SO-/14 pouzdro, UID v čipu Sleep Counter Reset (automatic wake-up from sleep mode) RC oscillátor 32kHz 00kHz watchdog timer (2 sec), Power-On-Reset with Power-Check on start-up 3 wire serial port, 10-bit čítač, PWM, event counter pro domácí přístroje, automobilový průmysl, rozhraní k senzorům, hodinky, atd.

Co tím rozumíme? Architektura instrukční sady

Architektura instrukční sady a mikroarchitektura Instruction Set Architecture (ISA) definuje které operace jsou procesorem podporovány jak jsou kódovány instrukce formát instrukce, operačního znaku, reprezentace operandů, adresní módy, ukládání výsledků, etc. je rozhraním mezi programátorem a procesorem Microarchitecture/mikroarchitektura definuje detaily HW implementace procesoru obecně detaily implementace SW HW CPU, MEM, IO,... ISA

CISC - Complex Instruction Set Architecture snaha o rozšíření instrukčního souboru, podpora pro vyšší programovací jazyky košatý instrukční soubor, mikroprogramovaný řadič historicky 60./70. léta často se programovalo ve strojáku" sémantická mezera snaha přiblížit asembler vyšším jazykům načítání instrukce z paměti 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 snižuje množství čtení z paměti místo více jednoduchých instrukcí jedna komplikovaná operace akceptovatelné delší dekódování instrukce malé paměti

CISC - Complex Instruction Set Architecture Pří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říklady: http://wikiti.brandonw.net/index.php?title=z0_instruction_set Jak ovlivní CISC architektura členy známé rovnice? T c = T N CPI

CISC - Complex Instruction Set Architecture nejznámější příklady Z0, řada 0x6 70. léta první VLSI čipy,jednoduché procesory s pipeline se už vešly do jednoho čipu, zrychlení pamětí pozorování: cca 0% času CISC procesor vykonává 20% typů instrukcí nejčastěji jednoduché operace typu load, store, add,... negativa: komplexní a pomalý řadič řadič zabírá velkou plochu čipu řadič je velký stavový automat mnoho spojů a špatná routovatelnost/utilizace časově náročná verifikace systému vývoj: zjednodušení instrukční sady na naprosté minimum

RISC - Reduced Instruction Set Architecture ISA: pevná délka instrukce, jednotné kódování malý počet jednoduchých instrukcí zadrátovaný řadič" v průměru CPI<1.5, ideálně 1 velký počet registrů dostupných programátorovi (32-192) operace s daty jen nad registry load/store architektura, omezené množství adresních módů často nezbytná podpora kompilátoru, různá omezení příklad: http://en.wikipedia.org/wiki/mips_instruction_set A dopad na známou rovnici? T c = T N CPI

RISC vs. CISC dnes rozdíly mezi CISC a RISC se v podstatě setřely 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.

Co si pod tím představíte? Proudové zpracování

Proudové zpracování: koncepce komb. logika t r t l komb. logika komb. logika t r t l /2 t r t l /2 t r pomalá komb. cesta více menších c. vložením registrů rozdělení do fází/stages, mezivýsledky registrovány po fázi jak nám to pomůže?

Proudové zpracování: koncepce komb. logika t r t l komb. logika komb. logika t r t l /2 t r t l /2 t r vzroste latence je možné začít výpočet nové úlohy ještě než skončí stará co to bude stát?

Proudové zpracování: koncepce komb. logika t r t l komb. logika komb. logika t r t l /2 t r t l /2 t r na FPGA téměř zdarma, protože se jedná o architekturu bohatou na registry. kombinační zpoždění se sice N zmenší ALE zpoždění registrů vložených do obvodu původní návrh: t clkmin = t r + t l + t s proudové zpracování: t clkmin = t r + t l /2 + t s možnost automatické aplikace obecná metodika

Proudové zpracování v CPU pipeline jak zrychlit výpočet: replikací jednotek paralelizací zřetězením jednotek snižujeme CPI, T, T c = T N CPI podmínky pro zřetězení: nepřetržitý přísun dat operaci nutno rozdělit na sekvenci stejně časově náročných kroků realizovaných jednotlivými stupni řetězu trvání jednotlivých kroků by mělo být zhruba stejné urychlení běhu aplikace bez pipeline: perioda hodin a CPI určuje výkon, doba běhu programu je prostý součet dob běhu jednotlivých instrukcí s pipeline: latence, hodinová frekvence a iniciační interval pipeline určuje výkon

Proudové zpracování nejjednodušší dvě fáze, Fetch, Execute nízká využitost IF fáze (33% v příkladu), řešení více fází příklad 06, asynchronní pipeline, fetch když je "volno" 6B FIFO MEM BIU write read EXU full empty IF EX EX EX Intel 06 CPU IF EX EX EX IF EX EX EX

Proudové zpracování Typická pipeline v RISC procesoru: IF instruction fetch, načtení instr. z paměti z adresy v program counteru, ten je automaticky inkrementován ID instruction decode, dekódování instrukce, přenos operandů z registrového pole do ALU EX instruction execution, vykonání ME memory access WB writeback, zpětný zápis výsledků z ALU do reg. pole pří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ři 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 r1 = r2+r2?? EX WB r5 = r1 r4 řídící nevíme, zda se podmíněný skok vykoná, nebo ne. Jaká se má načíst instrukce po instrukci skoku? strukturní závislosti blok v procesorovém systému je současně vyžadován dvěma instrukcemi v různých fázích zpracování (např. pamět současně pro fetch a pro čtení operandů instrukce) řešíme staticky kompilátorem dynamicky za běhu, procesorem, v hardware (pipeline stall, predikce skoků)

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. 2 W, 125M vs. 55M tranzistoru

Co tím rozumíme? Paralelizace

Paralelizace téměř všechny algoritmy dovolují využít jistého paralelizmu dosažení vyšší rychlosti výpočtu s rostoucí rychlostí CPU nelineárně 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 snížit napájecí napětí kombinace 4 procesorů může mít menší spotřebu) použití specifických procesorů koprocesorů optimalizovaných na konkrétní úlohy

Paralelizace granularita na úrovni procesů na úrovni vláken na úrovni instrukcí na úrovni mikroinstrukcí na úrovni hradel Amdahlův zákon Speedup = 1 r s+ rp n Příklad: lze paralelizovat bez omezení počtu procesorů 75% výpočtu r s = 0.25, r p = 0.75, Speedup max,n = 4

Paralelizace: Flynnova taxonomie

Nejjednodušší paralelizace nejjednodušší spolupráce DMA a procesoru, double buffering

Multithreading mezera ve výkonu pamětí a CPU CPU čeká na pamět, když (př 50 instrukcí/pipeline stall) instrukce načítá data, která nejsou v cache došlo ke špatné predikci podmíněného skoku... během čekání lze pokračovat v jiné úloze, která pamět nepotřebuje 1 1

Multithreading nutná podpora pro rychlé přepnutí úloh, sdílená pamět více čítačů programu, registrových sad v procesoru příklad: MIPS MT, 14% overhead podpory pro MT, o 60% větší výkon CPU 2 2 Demistyfing multithreading and multi-core, Kevin D. Kissell, EE Times

Multiprocessing víceprocesorový systém rovnocenné procesory vs. koprocesor oddělené úlohy, sdílení paměti je nutno implementovat velká granularita symetrický a asymetrický multiprocessing

von Neumann s bottleneck další akcelerace výpočtu limit datové propustnosti rozhraní k paměti tzv. "von Neumann s bottleneck" nelze přidávat další a další výpočetní jednotky a zvyšovat množství paralelně prováděných operací nebudeme stačit dodávat dostatečně rychle data pro výpočet z paměti Dalši urychlení umožňují až specializované výpočetní architektury.

Standardní funkční bloky

Schéma jednoduchého procesoru řadič čítač instrukcí adresová sběrnice paměť instrukční registr datová sběrnice dekodér instrukcí datová cesta řadič ALU registrové pole

Standardní funkční bloky paměť datová cesta registrové pole Řadič řídí ostatní jednotky podle dekódované instrukce řadič adresová sběrnice čítač instrukcí datová sběrnice instrukční registr dekodér instrukcí řadič ALU "zadrátovaný" řadič FSM RISC mikroprogramovaný řadič "CPU v CPU" CISC procesory př. Intel Pentia aktualizace mikrokódu možná př. microcode update Linux

Standardní funkční bloky paměť datová cesta registrové pole ALU Arithmetic-Logic Unit v každém CPU adresová sběrnice datová sběrnice ALU elementární aritm. a log. operace +,-,*,and,not,or,xor,posuvy čítač instrukcí instrukční registr dekodér instrukcí řadič operandy akumulátorová architektura vs. GPR řadič příznaky Cy,S,Z

Standardní funkční bloky paměť datová cesta registrové pole registrové pole nejrychleji dostupná pamět tzv. architekturní registry adresová sběrnice datová sběrnice ALU obecné vs. specializované registry jeden vs. více adresních registrů čítač instrukcí instrukční registr dekodér instrukcí řadič řadič hodně registrů urychlí práci s lokálními proměnnými (RISC architektury)

Standardní funkční bloky adresová sběrnice paměť datová sběrnice datová cesta registrové pole ALU adresní jednotka adresovací režimy: přímý operand, registrový operand, přímá adresa, nepřímá adresa, index, báze, autoinkrementace stránkování vs. lineární adresní režim čítač instrukcí instrukční registr dekodér instrukcí řadič bloková adresace (ofset,limit) DSP, cyklická autoinkrementace řadič reverzní adresace DSP (FFT)

Standardní funkční bloky MMU Memory Management Unit správa paměti segmentace, stránkování virtuální pamět přístupová práva k paměti FPU Floating-Point Unit elementární aritm. operace (+-*/) někdy složitější,sin,cos softwarová emulace

Návrh mikrořadiče

Návrh řadiče adc_start <= 1 get_result <= 0 chceme: velmi jednoduchý programovatelný řadič pro realizaci stavových automatů potřebné operace? adc_start <= 0 get_result <= 0 adc_ready = 0 adc_start <= 0 get_result <= 1 +

Požadavky na řadič 1 pamět mikroprogramu na 256 instrukcí, bit PC, pokud PC = 255 PC = 0, poč. stav je PC = 0 2 7 vst. podmínkových signálů kt. lze ovlivňovat provádění instrukci (podmíněné instrukce, predikáty), signály jsou asynchronní vůči hodinám 3 4 výstupní bit brány ovládané mikroinstrukcí WRITE. Brána je registrovaná, reset registr nastaví do 0x00 4 mikroinstrukce JUMP umožňuje nahrát obsah PC a provést skok 5 uvolnění asynchronního resetu je už externě synchronizované do lokální hodinové domény

Interface řadiče clk res cond_1 cond_2 cond_3 cond_4 cond_5 cond_6 cond_7 PicoCTRL port_0 port_1 port_2 port_3

Příklad mikroprogramu clk res cond_1 cond_2 cond_3 cond_4 cond_5 cond_6 cond_7 PicoCTRL port_0 port_1 port_2 port_3 adc_start <= 1 get_result <= 0 adc_start <= 0 get_result <= 0 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_ready = 0 adc_start <= 0 get_result <= 1 +

Formát mikroinstrukce 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka OpCode Parametry instrukce OpCode operační kód instrukce, 01 WRITE, 00 JUMP Parametry WRITE AADDDDDDDD Adresa reg., bit Data Parametry JUMP 00JJJJJJJJ bit cílová adresa pro skok Podmínka index podmínkového vstupu, podmínky 1 7 čteny ze vstupů 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

Přelož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

Pamět mikroprogramu a čítač instrukcí PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0 0x01 Odkud se nahrává PC?

Nepodmíněná instrukce JUMP 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka 00 00JJJJJJJJ PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 JUMP Jak přidáme podmínky?

Podmínky a podmíněný JUMP 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka 00 00JJJJJJJJ PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 cond_1 0 JUMP cond_2 cond_3 cond_4 cond_5 = cond_6 cond_7 Jak rozpoznáme instrukci WRITE?

Detekce instrukce WRITE 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka 01 AADDDDDDDD PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 cond_1 cond_2 0 WRITE JUMP cond_3 cond_4 cond_5 = cond_6 cond_7 Jak bude vypada logika pro výstupní brány?

Implementace výstupních bran 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka 01 AADDDDDDDD PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 cond_1 cond_2 cond_3 cond_4 cond_5 cond_6 cond_7 0 = WRITE JUMP 0 1 0 1 0 1 0 1 port_0 port_1 port_2 port_3 Odkud bereme data pro zápis do výstupních bran?

Datová cesta data pro brány 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 CV Podmínka 01 AADDDDDDDD PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 cond_1 cond_2 cond_3 cond_4 cond_5 cond_6 cond_7 0 = WRITE JUMP 0 1 0 1 0 1 0 1 port_0 port_1 port_2 port_3 Odkud bereme informaci do které brány zapsat?

PicoCTRL kompletní schéma PC 1 15 14 13 12 11 10 ROM 5 4 3 2 9 7 6 1 0 0x01 0 cond_1 cond_2 cond_3 cond_4 cond_5 cond_6 cond_7 0 = JUMP WRITE 0 1 0 1 0 1 0 1 port_0 port_1 port_2 port_3