1 / 67

PicoBlaze, MicroBlaze, PowerPC

PicoBlaze, MicroBlaze, PowerPC. Tomáš Martínek martinto@fit.vutbr.cz. Motivace. Tvorba systémů uvnitř FPGA čipu Uvnitř FPGA lze vytvořit komplexní systém složený z mikroprocesorů, specializovaných výpočetních jednotek a propojení jednotlivých částí

sheena
Télécharger la présentation

PicoBlaze, MicroBlaze, PowerPC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PicoBlaze, MicroBlaze, PowerPC Tomáš Martínek martinto@fit.vutbr.cz

  2. Motivace • Tvorba systémů uvnitř FPGA čipu • Uvnitř FPGA lze vytvořit komplexní systém složený z mikroprocesorů, specializovaných výpočetních jednotek a propojení jednotlivých částí • Umístění systému na jeden čip vede na jednodušší návrh plošného spoje a odpadají problémy s propojením jednotlivých obvodů na desce plošného spoje – může také vést na nižší cenu systému • Chyby vzniklé při návrhu systému lze jednoduše odstranit nahráním nové konfigurace FPGA • Spojení FPGA hradlového pole s procesorem • Procesor je vhodný pro řízení úloh, které mají složitější sekvenční charakter. Funkce procesoru je dána jeho programem a lze ji snadno modifikovat. Procesor má ale omezený výkon a jeho činnost má sekvenční charakter • Specializované jednotky vytvořené v FPGA jsou vhodné pro implementaci náročných výpočtů s vysokým stupněm paralelismu. Komplikované sekvenční řízení je ale náročné na implementaci. • Spojením mikroprocesoru s FPGA lze efektivně řešit vysoce náročné paralelní výpočty

  3. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  4. Základní informace • 8-bitový procesor • Zabírá pouze 96 SLICEs (FPGA hradlové pole obsahují až desítky tisíc SLICEs) • Pracovní frekvence 100 až 200MHz podle použitého FPGA hradlového pole • Každá instrukce je zpracována ve dvou taktech • Výkonnost 50 až 100 MIPS, zahrnuje pouze operace s pevnou řádovou čárkou • Jednoduchá komunikace s ostatními zařízeními na čipu skrze 256 vstupně/výstupních portů • Obsahuje řadič přerušení s podporou jednoho externího přerušení • Zdrojový kód v jazyce VHDL, kompilátor KPCM3 a simulátor jevolně šiřitelný

  5. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  6. Architektura procesoru • Blokové schéma procesoru

  7. Architektura procesoru • Paměť programu • implementována pomocí jedné BlockRAM paměti • velikost je 1K instrukcí (nelze dále rozšiřovat) • každá instrukce má velikost 18 bitů (využívají se paritní bity BlockRAM) • V základní konfiguraci je paměť programu pouze pro čtení a její obsah je nahrán současně s nahráním konfigurace FPGA

  8. Architektura procesoru • Lze ale i zvolit způsob zapojení, kdy je možné měnit programza běhu například připojením druhého portu na JTAG nebo UART rozhraní • Také je možné například vyžít dvouportové BlockRAM a sdílet jednu paměť programu pro dva procesory

  9. Architektura procesoru • Registrové pole • 16 registrů o velikosti 8 bitů pro obecné použití (žádný z nich není použit pro speciální účel) • Zásobník pro volání podprogramu • 31 položek (jedna položka je rezervována pro případ přerušení), pokud přeteče, začnou se položky přepisovat • Datová paměť (Scratchpad Memory) • paměť o pevné velikosti 64 bajtů • podporuje přímé i nepřímé adresování (pomocí registru) prostřednictvím instrukcí FETCH/STORE • vhodné pro odkládaní dat, implementaci zásobníku, vyhledávací tabulky apod.

  10. Architektura procesoru • Aritmeticko-logická jednotka (ALU) • 8-bitové operace pouze s pevnou řádovou čárkou • Obsahuje příznaky Zero a Carry

  11. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  12. Instrukční sada • Aritmetické instrukce • ADD, SUB, ADDCY, SUBCY • Pomocí instrukcí s přenosem lze jednoduše realizovat součet/rozdíl více-bajtových položek • Není dostupná vestavěná násobička resp. dělička, násobení resp. dělení se musí provádět v cyklu (cca 57 resp. 120 cyklů) • Násobení lze realizovat také připojením externí vestavěné násobičky MULT18 skrze vstupně/výstupní porty

  13. Instrukční sada • Logické instrukce • AND, OR, XOR • NOT lze realizovat pomocí instrukce XOR, • Nastavování/nulování bitů lze realizovat pomocí OR/AND instrukcí • Posun a rotace • SL0, SL1, SLA, SLX, RL, SR0, SR1, SRA, SRX, RR • posun vlevo/vpravo, nasouvání Carry, MSB, LSB, konstanty, rotace vlevo/vpravo • Instrukce skoku • JUMP, JUMP C, JUMP NC, JUMP Z, JUMP NZ • skoky přímé/nepřímé, na základě Carry/Zero, pozitivní/negativní • Instrukce pro porovnání • COMPARE – test na rovnost (příznak Z), test na “<“ (příznak C) • TEST – test na nulu (příznak Z), sudá parita (příznak C)

  14. Instrukční sada • Instrukce pro přesun dat • FETCH, STORE – mezi registrovým polem a datovou pamětí • LOAD – analogie instrukce MOV u běžných procesorů • INPUT, OUTPUT – mezi registrovým polem a vstupně- výstupními porty

  15. Instrukční sada • Instrukce pro volání podprogramu • CALL – volání podprogramu • RETURN [C, NC, Z, NZ] – podmíněný návrat z podprogramu • Instrukce pro podporu přerušení • CALLI – volání obsluhy přerušení, na zásobník se navíc uloží stav Zero a Carry příznaku • RETTURNI [ENABLE/DISABLE] – návrat z obsluhy přerušení, přídavné parametry definují, zda se má povolit/zakázat příchod následujícího přerušení • ENABLE INTERRUPT • DISABLE INTERRUPT

  16. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  17. Přerušovací systém • Podpora pouze jednoho vnějšího přerušení, pro podporu více přerušení je potřeba na vstupu jednotlivé signály sdružovat a uvnitř obsluhy přerušení pak dále rozlišit, o které přerušení se jedná • Po příchodu přerušení odpoví procesor vysláním pulsu na signálu INTERRUPT_ACK, který muže sloužit například pro nulování RS klopného obvodu • Užitečné pro komunikaci s vnějšími zařízeními na FPGA čipu nebo i mimo něj - například obsluha stisknutí klávesy z připojené externí klávesnice apod.

  18. Průběh obsluhy přerušení Příchod přerušení musí být povolen instrukcí ENABLE INTERRUPT V okamžiku vyvolání přerušení se dokončí aktuálně rozpracovaná instrukce a na zásobník se uloží návratová adresa a Z, C příznaky. Do programového čítače se vždy vnutí adresa 3FF (poslední položka v paměti programu) Na této adrese je obvykle skok na adresu obslužné rutiny Provede se obsluha přerušení Provede se návrat pomocí instrukce RETURNI Přerušovací systém

  19. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  20. Vstupně/výstupní porty • Vstupně/výstupní porty • Až 256 portů, které se rozlišují pomocí signálu PORT_ID[7:0] • Vhodné pro komunikaci s zařízeními mimo procesor • Vstupní porty • Při vykonávání instrukce INPUT se nastaví na výstupu procesoru signál READ_STROBE a na PORT_ID se vystaví adresa čteného porty • Data se načtou ze vstupu PORT_IN, který je multiplexován při použití více portů (PORT_ID řídí vstupní multiplexor)

  21. Vstupně/výstupní porty • Výstupní porty • Při vykonávání instrukce OUTPUT se nastaví na výstupu procesoru signál WRITE_STROBE a na PORT_ID se vystaví adresa portu, na který se zapisuje, zapisovaná data se vystaví na výstup PORT_OUT • Při použití více výstupních portů je potřeba použít dekodér na výstupu, který rozlišuje komu zapisovaná data náleží

  22. Obsah • PicoBlaze • Základní informace • Architektura procesoru • Instrukční sada • Přerušovací systém • Vstupně/Výstupní rozhraní • Příklad použití procesoru • MicroBlaze • PowerPC

  23. Zdrojový kód procesoru v jazyce VHDL nebo Verilog je volně dostupný na WWW stránkách firmy Xilinx Procesor lze jednoduše instancovat v jazyce VHDL jako komponentu KCPSM3 K procesoru je připojena paměť programu (viz. deklarace v pravé části) Zdrojový VHDL kód paměti programu včetně jejího obsahu je vygenerován kompilátorem na základě kódu v assembleru procesoru PicoBlaze Příklad VHDL: Deklarace procesoru component KCPSM3 port ( address : out std_logic_vector( 9 downto 0); instruction : in std_logic_vector(17 downto 0); port_id : out std_logic_vector( 7 downto 0); write_strobe: out std_logic; out_port: out std_logic_vector( 7 downto 0); read_strobe : out std_logic; in_port : in std_logic_vector( 7 downto 0); interrupt : in std_logic; interrupt_ack: out std_logic; reset : in std_logic; clk : in std_logic ); end component; Příklad VHDL: Deklarace paměti programu component prog_rom port ( address : in std_logic_vector( 9 downto 0); instruction : out std_logic_vector(17 downto 0); clk : in std_logic ); end component; Použití procesoru – instance ve VHDL

  24. Použití procesoru – kompilátor KCPSM3 • Vstup: zdrojový soubor v assembleru <filename>.psm • Výstup: • zdrojový soubor ve VHDL s entitou a obsahem pamětí programu • alternativní obsah paměti programu v decimálním nebo hexadecimálním tvaru • ladící informace

  25. Simulátor pBlazIDE je volně šiřitelný, dostupný na adrese: http://www.mediatronix.com/pBlazeIDE.html Podporuje: krokování, breakpointy, snadnou změnu obsahu vnitřních registrů nebo obsahu pamětí, simulace I/O portů skrze načítání/ukládání dat z/do textových souborů Ideální pro rychlý vývoj aplikací (Modelsim není pro lazení instrukčního programu vhodný) Syntax assembleru v prostření pBlazeIDE se liší od původní definice, ale lze použít Import do této nové syntaxe Použití procesoru – simulátor pBlazIDE

  26. Obsah • PicoBlaze • MicroBlaze • Základní vlastnosti • Architektura procesoru • Instrukční sada • Přerušovací systém • Rozhraní procesoru • PowerPC

  27. Základní vlastnosti • 32-bitový procesor s podporou pro zpracování dat o velikosti 32, 16 nebo 8 bitů • Zahrnuje podporu pro instrukční a datovou cache • Procesor obsahuje množství uživatelem volitelných částí, například: FPU jednotku, barrel shifter, násobičku, děličku, podporu pro instrukční/datovou cache • V závislosti na zvolených částech zabírá 900 až 2600 LUTs (FPGA hradlové pole obsahují až desítky tisíc LUTs) • Pracovní frekvence 100 až 200 MHz podle použitého FPGA čipu • Výkonnost 92 až 166 DMIPS • Programy pro procesor MicroBlaze lze psát v jazyce C a kompilovat a ladit s použitím GNU nástrojů

  28. Obsah • PicoBlaze • MicroBlaze • Základní vlastnosti • Architektura procesoru • Instrukční sada • Přerušovací systém • Rozhraní procesoru • PowerPC

  29. Architektura procesoru • Blokové schéma:

  30. Architektura procesoru • Registry procesoru • 32 registrů pro obecné použití, některé z těchto registrů mají speciální význam • R0 – má vždy hodnotu 0 • R14 – použit pro návratovou adresu z přerušení • R16 – použit pro návratovou adresu z chyby • R17 – použit pro návratovou adresu z vyjímky • 5 speciálních registrů, které nejsou přístupné programem, ale jejich obsah lze nahrát do registrů pro obecné použití pomocí instrukcí MFS/MTS • PC – Program Counter • MSW – Machine Status Word (obsahuje Carry, Interrupt Enable, Exception Enable, Division by Zero apod.) • EAR – Exeption Address Register • ESR – Exeption Status Register • FSR – Floating Point Status Register

  31. Architektura procesoru • Zřetězené zpracovaní • Probíhá ve třech stupních: Fetch, Decode, Execute • Většina instrukcí potřebuje ve fázi vykonávaní 1 takt hodin, výjimečně 3 takty • Zpoždění mohou způsobovat např. čtení dat nebo instrukcí z vnějších pamětí. Z toho důvodu nabízí MicroBlaze implementaci prefetch bufferu - předčítání instrukcí, redukce zpoždění • Skokové instrukce se zpravidla zpracovávají 3 takty, neboť při provedení skoku je nutné zrušit rozpracované instrukce ve stupních Fetch a Decode. Z tohoto důvodu MB podporuje tzv. zpožděné skoky, kdy je povoleno dokončení instrukce hned za instrukcí skoku

  32. Architektura procesoru • Paměťový prostor (paměť programu a dat) • Hardwardská architektura, 32 bitů, až 4GB paměti • Podpora instrukcí 32, 16 a 8 bitů, přístupy musí být zarovnané • MB nerozlišuje prostor pro paměť a I/O • Pro připojení instrukční a datové paměti podporuje MB 3 typy paměťových rozhraní: • Local Memory Bus (LMB) – přepokládá připojení lokálních BlockRAM paměti k procesoru, jednoduchý protokol • On-chip Peripheal Bus (OPB) – standard od firmy IBM pro připojení komponent na čipu, složitější protokol • Xilinx Cache-Link (XCL) – rozhraní zaměřené pro načítání dat do cache pamětí

  33. Architektura procesoru • Instrukční cache • Podporu pro načítání instrukcí do cache lze zapnout/vypnout podle požadavku uživatele (je vhodné použít, pokud se například program načítá z externí paměti programu připojené k FPGA. • Pro uložení instrukcí do cache paměti lze použít rozhraní OPB (IBM) nebo CacheLink (Xilinx) • Uživatel si může paměť rozdělit na část, kterou lze uložit do cache a část, kterou nelze uložit do cache. Dále se může nastavit velikost cache paměti 2-64kB a automaticky se vygeneruje příslušný obvod složený z BlockRAM pamětí • Používá se jednocestná cache (viz. obrázek)

  34. Architektura procesoru • Příklad: Pro zvolenou oblast cache-ovatelné paměti o velikosti 64kB a velikost cache paměti 4kB se použije spodních 12 bitů adresy instrukce (10 bitů pro adresaci slova, 2 bity nevyužity) pro adresaci cache paměti a horních 4 bity se vyčlení pro TAG. Z pohledu zdrojů se využijí 2xBRAM paměti pro „Instruction BRAM“ a 1xBRAM pro „Tag BRAM“ • Algoritmus pro načítání dat do cache je velmi jednoduchý: (1) pokud je zadaná položka v cache, použije se (2) v opačném případě se musí načíst z externí paměti • Podle typu rozhraní (OPB, XCL) se načtou při výpadku cache až 4 nová slova • Datová cache • Pracuje podobně jako instrukční cache • Při zápisu dat se navíc používá režim Write-Through, tedy data se při zápisu do cache současně zapíší také do paměti, aby byla zajištěna koherence dat

  35. Architektura procesoru • Floating Point Unit (FPU) • Založena na standardu IEEE 754 • Podporuje pouzejednoduchou přesnost (velikost slova je 32-bitů), včetně definice nekonečna, NaN a nuly • Implementuje operace: sčítání, odčítání, násobení, dělení a porovnání • Při operacích se používají běžné registry, není potřeba speciálních FPU registrů • Formát slova:

  36. Obsah • PicoBlaze • MicroBlaze • Základní vlastnosti • Architektura procesoru • Instrukční sada • Přerušovací systém • Rozhraní procesoru • PowerPC

  37. Instrukční sada • Instrukce mají velikost 32 bitů • Rozlišují se dva typy instrukčních slov • Typ A: Instrukce s registrovými operandy • Typ B: Instrukce s přímím operandem • Pro instrukce s přímím operandem je operand tvořen pouze 16-ti bity. Rozšíření na 32-bitový operand je možné dvěma způsoby: • Instrukce doplní horních 16 bitů nulami nebo rozšíří znaménko, • Před instrukcí s přímím operandem se použije speciální instrukce IMM, která do pomocného registru načte horních 16 bitů, které se pak použijí ve spojení s následující instrukcí

  38. Instrukční sada • Aritmetické instrukce • ADD, RSUB, DIV, MUL, CMP • Logické instrukce • AND, ANDN, OR, XOR • Posuny a rotace • BS (Barell Shifter), SRA, SRC, SRL • Skokové instrukce • BR, BEQ, BNE, BGE, BGT, BLE, BLT • Floating Point instrukce • FADD, FRSUB, FMUL, FDIV, FCMP • Instrukce pro přesun dat • GET, PUT – čtení/zápis do Fast Simplex Link rozhraní • L[B,H,W], S[B,H,W] – Load/Store (Byte, HalfWord, Word) • MFS, MTS – přesun ze speciálních registrů do registrového pole • Instrukce pro návrat z podprogramu • RT[BR,ID,ED,SD]- návrat z chyby, přerušení a podprogramu

  39. Obsah • PicoBlaze • MicroBlaze • Základní vlastnosti • Architektura procesoru • Instrukční sada • Přerušovací systém • Rozhraní procesoru • PowerPC

  40. Přerušovací systém • MB podporuje následující hierarchii přerušení: • Reset (vyvoláno nastavením externího signálu) • Hardwarové výjimky (např. neplatná instrukce, nezarovnaný přístup, dělení nulou, výjimka od FPU, apod, návratová adresa je uložena v R17) • Nemaskovatelné chyby • Chyby (vyvoláno nastavením externího signálu procesoru, návratová adresa je v R16) • Přerušení (MB podporuje jedno externí přerušení, může být povoleno/zakázáno, návratová adresa je v R14) • Uživatelský vektor přerušení (vyvoláno instrukcí BRAILD) • Tabulka vektorů těchto šesti přerušení je umístěna na začátku instrukční paměti a obsahu skokové instrukce na příslušné rutiny obsluh přerušení • Při RESETu procesoru se implicitně začne provádět program od adresy 0x0

  41. Obsah • PicoBlaze • MicroBlaze • Základní vlastnosti • Architektura procesoru • Instrukční sada • Přerušovací systém • Rozhraní procesoru • PowerPC

  42. Rozhraní procesoru • MB je podporuje následující rozhraní • Local Memory Bus (LMB) • On-Chip Peripheral Bus (OPB) • Fast Simplex Link (FSL) • Xilinx Cache-Line (XCL)

  43. Velmi jednoduché rozhraní pro připojení BlockRAM pamětí Protokol při zápisu / čtení: Nejprve se vystaví adresa společně se signálem Address Strobe Dále se vystaví signál Write_Strobe nebo Read_Strobe v případě čtení. V případě zápisu se vystaví data. V případě čtení se data očekávají s příchodem signálu Ready Podpora Byte Enable – lze zapisovat jednotlivé bajty Číst lze v každém taktu jedno slovo, zapisovat lze ale pouze rychlostí jedno slovo za dva takty Local Memory Bus (LMB) rozhraní Obr.: Zápisová transakce Obr.: Čtecí transakce

  44. On-chip Peripheral Bus (OPB) rozhraní • Standard od firmy IBM, adresová sběrnice o velikosti až 64bitů, datová sběrnice o velikosti 32 nebo 64 bitů (podporuje také přístupy pro 8 nebo 16 bitů) • Plně synchronní sběrnice, podporuje Master-Slave komunikaci. Masterů může být připojeno na sběrnici více, přidělení mezi Mastery řeší centrální arbiter, MB se chová jako Master • Složitější protokol: Při komunikaci musí nejprve Master požádat o sběrnici, arbitr sběrnici přidělí a poté probíhá operace čtení / zápisu • Příklad: zapojení MB

  45. Fast Simplex Link (FSL) rozhraní • MB podporuje speciální rozhraní FSL, které lze využít pro čtení / zápis hodnot mezi registrovým polem a externím zařízením např. uživatelským koprocesorem (viz obrázek) • Čtecí a zápisové rozhraní je ve velice podobné těm, které se používá u FIFO komponent. Při zápisu se rozlišují datová nebo řídící slova pomocí signálu CONTROL • Zápisové rozhraní tvoří signály: WRITE, DATA(31:0), CONTROL, FULL • Čtecí rozhraní tvoří signály: READ, DATA(31:0), CONTROL, EXISTS • Zápisové / Čtecí operace se provádějí instrukcí PUT / GET

  46. Fast Simplex Link (FSL) rozhraní • Podporuje blokující a neblokujícírežim • Při blokujícím režimu je procesor pozastaven v případě nedostupných dat nebo zaplněné výstupní linky • Při neblokujícím procesor zapisuje/čte bez ohledu na FULL a Exists signály a pokud nejsou data k dispozici nastaví příznak Carry • Pro čtení i zápis jsou potřeba 2 hodinové takty • Podporuje až 8 FSL linek

  47. Lze efektivně použít pro nahrávání dat z externích pamětí do cache Rozhraní XCL odpovídá přesně rozhraní FSL s tím, že se předpokládá, že FSL kanály mohou byt připojeny mezi řadičem paměti a MB a nebo mohou být implementovány uvnitř řadiče paměti (viz. obrázek) Při načítání instrukcí nebo data z externích pamětí se přečtou vždy čtyři slova Zápis funguje po slovech v režimu Write Through, je nutné poslat za sebou nejprve adresu a poté data Xilinx Cache-Link (XCL) rozhraní

  48. Podpůrné nástroje • Ladění přímo v hardware • Procesor lze ladit připojením MB ke komponentě Xilinx Microprocesor Debug Tool (MDM), která je dále připojena k JTAG rozhraní • Podpora pro lazení zahrnuje: • konfigurovatelný počet hardwarových breakpointu, libovolný počet softwarových breakepointů • externí řízení procesoru jako je: zastavení, reset nebo krokování • čtení a zápis do registrového pole a speciálních registrů procesoru (kromě zápisu do ESR a EAR) • zápis do instrukční a datové cache • podpora více procesoru

  49. Obsah • PicoBlaze • MicroBlaze • PowerPC • Základní vlastnosti • Architektura procesoru • Instrukční sada • Rozhraní procesoru

  50. Základní vlastnosti • Vestavěný 32-bitový procesor PowerPC 405 dostupný v FPGA čipech s technologií Virtex II Pro nebo Virtex 4 • Datová sběrnice 32 bitů, adresová sběrnice 64-bitů (načítají se dvě instrukce v jednom taktu) • Procesor nepodporuje 64-bitové operace a Floating Point operace • Pracovní frekvence dosahuje až 400 MHz podle typu FPGA • 1-2PowerPC procesory na čipech s technologií Virtex II Pro • Jedná se o variantu od firmy IBM určenou pro vestavěné aplikace. Splňuje specifikaci UISA (User Instruction Set Architecture) a částečně také splňuje i ostatní specifikace (VEA – Virtual Enviroment Architectrue, OEA – Operating System Architecture) • Podpora uživatelského a chráněného režimu (pro operační systém) procesoru • Podpora virtuální paměťového prostoru (režim stránkování)

More Related