Sem vložte zadání Vaší práce.

Rozměr: px
Začít zobrazení ze stránky:

Download "Sem vložte zadání Vaší práce."

Transkript

1 Sem vložte zadání Vaší práce.

2

3 České vysoké učení technické v Praze Fakulta informačních technologií Katedra číslicového návrhu Diplomová práce Hardwarový akcelerátor pro dopočtení chybějících položek v datovém streamu Bc Josef Dvořáček Vedoucí práce: Ing. Jan Schmidt, Ph.D. 11. května 2012

4

5 Poděkování Rád bych poděkoval Ing. Janu Schmidtovi, Ph.D. za cenné rady při tvorbě této práce a také Bc. Michalu Prokšovi a jeho HW týmu ze spol RSJ za konzultace v průběhu návrhu.

6

7 Prohlášení Prohlašuji, že jsem tuto práci vytvořil samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některý zákonů (autorský zákon), nemám závažný důvod proti užití tohoto školního díla a k užití uděluji svolení. V Praze dne 11. května

8 České vysoké učení technické v Praze Fakulta informačních technologií c 2012 Josef Dvořáček. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Josef Dvořáček. Hardwarový akcelerátor pro dopočtení chybějících položek v datovém streamu: Diplomová práce. Praha: ČVUT v Praze, Fakulta informačních technologií, 2012.

9 Abstract This thesis deals with the design of hardware accelerator core which calculates missing items in input stream of pre-processed information on the derivative markets. Implemented was the unit calculating values of Implied IN spread using language VHDL. Keywords VHDL, HW core, Implied IN Abstrakt Tato diplomová práce se zabývá návrhem hardwarového akcelerátoru pro dopočtení chybějících položek v předzpracovaném streamu informací o derivátových trzích. Implementována je jednotka dopočítávající hodnoty impliedů spread IN za použití jazyka VHDL. Klíčová slova VHDL, HW jádro, Implied IN 9

10

11 Obsah Úvod 17 1 Popis problému, specifikace cíle Individual outright orders Strategie Implied orders Cíl práce Shrnutí kapitoly Analýza a návrh Studie proveditelnosti Požadavky na realizaci jednotky Analýza procesů v jednotce Popis na úrovni bloků Návrh výpočetního jádra Shrnutí kapitoly Realizace Struktura implementace Výsledky syntézy Testování Model Zapojení HW do testbenche Generátor stimulů Průběh testu, shrnutí testování Diskuze rozšíření stávajícího řešení Převedení ROM pamětí v jednotkách na RAM Převedení FSM ve výpočetním jádře na mikrokódový řadič Snížení latence v spread_unit Dopočítávání jiných strategií než je spread Počítání více hodnot žebříčku Optimalizace z hlediska využití paměti BRAM

12 5.7 Dopočítávání více generací Návrh překladače mikrokódu Závěr 59 Literatura 61 A Seznam použitých zkratek 63 B Obsah přiloženého CD 65 12

13 Seznam obrázků 1.1 tvar grafu strategie butterfly, zdroj [9] zjednodušený model výpočtu Vývoj množství dat na vstupním zásobníku Návrh algoritmu jednotky Architektura jednotky Vstupní a výstupní proměnné algoritmu Algoritmus výpočtu Konečný stavový automat řídící I/O operace Architektura INT části Architektura FP části činnost řídícího automatu v INT části činnost řídícího automatu v FP části Petriho síť synchronizace automatů Hloubka závislostí v datové struktuře outrightů

14

15 Seznam tabulek 1.1 Příklad výpočtu Implied In do spreadu Výchozí hodnoty pro výpočet butterfly implied IN Výpočet více generací impliedů význam bitů v datových slovech (vysvětlení zkratek: MS = market side, s = start of message, e = end of message) formát FP Výskyt instrukcí a jejich očekávané trvání rozhraní jednotky top Význam jednotlivých bitů mikrokódu Možnosti podmíněného skoku

16

17 Úvod Finanční prostředí je charakterizováno stále se zvyšujícím tempem shromažďovaných informací, a akcí, které tyto informace implikují. Vysoká rychlost reakce na získaná data je podmínkou pro úspěch na trhu. Toto prostředí tedy stimuluje závody ve zbrojení v informačních technologiích nasazovaných pro řešení těchto problému. [7] Již v devadesátých letech byl zaveden termín Electronic trading (ET)pro obchodování pomocí počítačových sítí oproti klasickým způsobům jako je pošta, telefon, nebo osobní kontakt. Algorithmic trading (AT) už může být definován jako elektronické obchodování při kterém algoritmy dynamicky určují načasování, cenu, množství a směrování zakázek v návaznosti na sledování aktuálních podmínek na trhu. [3] High frequency trading (dále jen HFT) je podmnožinou AT, kde jsou velká množství objednávek zasílána na burzu vysokou rychlostí, s dobou odezvy měřenou v mikrosekundách. [3] Je přirozené, že pro akceleraci výpočtů bývá část algoritmu implementována v hardwaru. Např. [8] uvádí, že řešení založené na FPGA je 20x rychlejší, než obvyklé aplikace běžící výhradně v SW. Má diplomová práce se bude zabývat analýzou podmnožiny výpočtů AT, návrhem algoritmu a implementací modulu pro HFT, konkrétně pro výpočet Implied Orders v reálném čase. 17

18

19 KAPITOLA 1 Popis problému, specifikace cíle V této kapitole si představíme instrumenty na finančním trhu a způsob jejich výpočtu důležitý z hlediska návrhu výpočetní jednotky. Přečtením této kapitoly se čtenář seznámí s výchozími informacemi pro návrh algoritmů a implementaci v dalších částech práce. Popis termínů níže odpovídá jejich použití na derivátových burzách. Na jiných můžou mít význam jiný, nebo vůbec neexistují. 1.1 Individual outright orders Jak bylo řečeno v úvodu, AT/HFT používá určité vstupní informace pro generování objednávek na burze. Jednou z nejdůležitějších informací je aktuální pozice jednotlivých trhů (marketů). Tu poznáme podle objednávek, které obchodníci vkládají na trh. Taková objednávka se může týkat buď jednoho instrumentu, nebo jejich kombinaci. Objednávku jednoduchého instrumentu budeme nazývat individual outright order. (OO) Taková objednávka udává cenu, za kterou je zadavatel objednávky (čili nějaký obchodník na burze) ochotný nakoupit nebo prodat určité množství obchodovaného subjektu. Pochopitelně, zájmem obchodníků je draze prodat (SELL side) a levně nakoupit (BUY side). Pokud bychom si rozložili tyto objednávky na osu dle ceny odspodu nahoru, vytvoříme si tím virtuální žebříček, na kterém se nabídky na prodej budou zespodu blížit nabídkám na koupi nahoře. ( K překřížení BUY / SELL stran nedochází, protože dříve proběhne samotný obchod) 19

20 1. Popis problému, specifikace cíle Obrázek 1.1: tvar grafu strategie butterfly, zdroj [9] Jednotlivé nabídky jsou indexovány od virtuálního středu. Při číslování od jedničky, nejnižší nabídka SELL má index 1, další vyšší nabídka má index 2 atd. Na strany BUY je to obráceně. Index 1 má nejvyšší nabídka a s klesající cenou index roste. Nejvíce pohybů na trhu se děje okolo virtuálního středu, kde dochází k vypořádávání objednávek, tato oblast je tedy pro analýzu trhu nejdůležitější. Zadáním bylo specifikováno, že pro výpočty jsou relevantní první dva indexy BUY a první dva indexy SELL. Ostatní indexy budou ignorovány, jejich případné využití bude diskutováno v kapitole Analýza a návrh. Jedna pozice na žebříčku je tedy definována tzv market side - tj, jestli obchodník chce nakupovat, nebo prodávat, dále cenou a množstvím. Seřazením objednávek vzestupně dle ceny dostaneme žebříček. 1.2 Strategie Na finančního trhu se používají i pokročilejší instrumenty. Jejich cílem je obvykle optimalizovat zisk investora, nicméně konkrétní účely a způsoby jejich využití nespadají do zadání této práce, proto se tady zmíním pouze o dvou typech strategií. Pro zápis strategie budu používat velká písmena pro identifikaci marketu (produktu) a znaménka pro operaci - žádné znaménko, popř plus znamená nákup, minus je prodej. A-B-2C tedy znamená nákup A, prodej B a dvojnásobné množství C. 20

21 1.3. Implied orders V1 Bid Qty Bid Price Offer Price Offer Qty V2 Bid Qty Bid Price Offer Price Offer Qty V1 - V2 Bid Qty Bid Price Offer Price Offer Qty Tabulka 1.1: Příklad výpočtu Implied In do spreadu Strategie spread Spread může být označení pro rozdíl mezi cenou nabídky a poptávky na konkrétním trhu, například, pokud prodávající žádá 1.5 M USD ale nabídka je pouze 1.2 M USD, spread bude USD. [6] Je to však také název strategie, při které se současně nakupují a prodávají dva outrighty [10]. Zkráceně tedy A B. Speciálním případem spreadu je tzv. calendar spread, kdy se obchoduje s jedním kontraktem, ale s různou dobou expirace. Strategie butterfly Složitější strategie, je nazvána butterfly, podle výsledného tvaru grafu 1.1, který snad připomíná motýla [9]. Strategie spočívá v nákupu ve množství n jednoho (M), prodeji 2*n druhého(u), a n třetího produktu(z) [4], zkráceně M 2U +Z. A protože platí výraz 1.1, jedná se o strategii ekvivalentní spreadu dvou spreadů.. (M U) (U Z) = (M U U + Z) = (M 2U + Z) (1.1) 1.3 Implied orders Pokud známe žebříčky výchozích marketů, dokážeme si dopočítat hodnoty na žebříčku strategie, která je nad nimi založena. Protože položky na žebříčku strategie nebudou skutečné, ale jen dopočtené, označují se jako Implied orders. 21

22 1. Popis problému, specifikace cíle Implied IN vs Implied OUT Pokud známe všechny outright orders které tvoří strategii, dokážeme tedy dopočítat implied orders této strategie. Tyto implied objednávky se pak nazývají implied IN. Obráceně, známe-li objednávky na žebříčku strategie, a všechny outrighty které ji tvoří kromě jednoho, dokážeme z nich zpětně dopočítat Implied OUT objednávky do chybějícího marketu. Dopočítávání Implied IN do strategie spread Implied IN se do spreadu počítá v BUY (Bid) side dle vzorce 1.2, pro výpočet SELL (Offer) side dle vzorce 1.3. Příklad výpočtu spread OUT je v tabulce 1.1. Dopočítávaná je poslední část tabulky V1 - V2. (V 1 V 2) BidP rice = V 1 BidP rice V 2 OfferP rice (1.2) (V 1 V 2) OfferP rice = V 1 OfferP rice V 2 BidP rice (1.3) Pro množství (Qty) platí vztahy 1.4 a 1.5. (V 1 V 2) BidQty = Min(V 1 BidQty, V 2 OfferQty ) (1.4) (V 1 V 2) OfferQty = Min(V 1 OfferQty, V 2 BidQty ) (1.5) Příklad výpočtu je v tabulce 1.1. Pokud je na vstupním žebříčku více hodnot(indexů), i na žebříčku kontraktu do kterého impliedy dopočítáváme bude hodnot více. Způsob dopočtení více hodnot je na diagramu 2.6. Dopočítávání Implied OUT ze strategie spread Tak jak se dá vypočítat implied in do strategie spread, tj rozdílu, dopočet lze provést obráceně. Pokud znám outrighty V1 a outrighty spreadu V1-V2, mohu dopočítat implieds do V2: V 2 BidP rice = (V 1 V 2) BidP rice V 1 OfferP rice (1.6) V 2 BidQty = Min((V 1 V 2) BidQty, V 1 OfferQty ) (1.7) V 2 OfferP rice = V 1 OfferP rice (V 1 V 2) OfferP rice (1.8) V 2 OfferQty = Min(V 1 OfferQty, (V 1 V 2) OfferQty ) (1.9) 22

23 1.3. Implied orders index / market side M8 U8 Z8 2 / BID 2@15 1@1 1 / BID 1@20 1@2 1 / ASK 5@5 2 / ASK 4@6 Tabulka 1.2: Výchozí hodnoty pro výpočet butterfly implied IN Analogicky bude probíhat výpočet V1 z outrightů spreadu V1-V2 a V2: V 1 BidP rice = V 2 BidP rice + (V 1 V 2) BidP rice (1.10) V 1 BidQty = Min(V 2 BidQty + (V 1 V 2) BidQty ) (1.11) V 1 OfferP rice = V 2 OfferP rice + (V 1 V 2) OfferP rice (1.12) V 1 OfferQty = Min(V 2 OfferQty + (V 1 V 2) OfferQty ) (1.13) Bid a BUY side, stejně tak Offer a SELL side jsou ekvivalentními výrazy pro označení jedné či druhé strany marketu. Dopočítávání Implied IN do strategie butterfly Strategie butterfly může být vybudována nad třemi individuálními outrighty, nebo dvěma individuálními outrighty a jedním spreadem, nebo nad dvěma spready. Vzorce by byly velmi podobné těm výše, proto provedu rovnou ukázku výpočtu. Výchozími hodnotami je žebříček marketů M8, U8, Z8 v tabulce 1.2. Pro zkrácení zápisu je v tabulce použit formát (množství)@(cena). Budeme počítat BUY (Bid) stranu marketu. Postup výpočtu: 1. Začneme na nejnižším indexu. Víme že pro výpočet butterfly potřebujeme celistvý násobek M 2U +2. Na nejnižších indexech máme: 1 M8, 5 U8 a 1 Z8. Z toho můžeme vypočítat jeden implied. Qty na prvním indexu bude Price vypočítáme jako (2 5) =

24 1. Popis problému, specifikace cíle krok popis A A-B B B-C C 1 výchozí stav z A-B a B mohu vypočíst 1, 2i implied 1. gen. 4 1, 2i z B-C a C mohu vypočíst 1, 2i 2 0,2i 0 0 implied 1. gen. 6. 1, 2i 2 0,2i z A-B a B mohu vypočíst 1, 2i, 0 0,0i 0 0 implied 2. gen. 2ii Tabulka 1.3: Výpočet více generací impliedů 3. Přejdeme k vyššímu indexu. V M8 máme hodnotu s nejnižším indexem na indexu 2, to samé u Z8. Na U8 zbyla nabídka 3@5 na indexu 1. Qty na druhém indexu bude tedy také Price vypočítáme podobně jako u prvního indexu, (2 5) = 6 Dopočítání druhé strany žebříčku by proběhlo analogicky. Počítání druhé a další generace impliedů První generace impliedů, které jsme počítali výše vycházejí z existujících outrightů na marketu. Impliedy je však možné počítat z již existujících impliedů, tj. k počítání další generace. Princip výpočtu je úplně stejný, postup jsem krok za krokem znázornil na příkladu v tabulce 1.3. Mějme kontrakty (markety) A, B, C, spread A B a spread B C. Impliedy první generace budu značit jedním písmenem i, impliedy druhé generace dvěma písmeny - ii. Pokud nějaký outright spotřebuji na implied, v dalších krocích ho již neuvádím. Pro přehlednost je v tabulce jen parametr množství, cena by se počítala stejně jako ve výpočtech výše. Budeme se snažit vypočítat všechny možné impliedy do kontraktu A. 1.4 Cíl práce Nejen výše uvedené instrumenty může obchodník získávat přímo z burzy, nebo, pokud nejsou dostupné, si je musí dopočítat sám. V současnosti jsou obvyklá softwarová i hardwarová řešení. Nejen HFT vyžaduje aktuální data co nejrychleji, proto jsou hardwarově akcelerovaná řešení považována za lepší. [8] 24

25 1.5. Shrnutí kapitoly Cílem práce tedy bude navrhnout HW jednotku která výpočte implied orders pro strategii spread z outright orders v reálném čase. Jednotka by měla splňovat následující podmínky: Požadavky na funkcionalitu jednotky sledovaná data se budou dočasně ukládat v jednotce automatická detekce všech možných výpočtů v daném časovém úseku po aktualizaci na vstupu následuje nový výpočet rychlost jednotky odpovídající příchozímu streamu dat možnost rozšíření o nové typy implied orders transparentní chování k existujícím datům - ta nesmí být modifikována postačí dopočítat pouze první dva indexy na daném marketu funkcionalita jednotky bude ilustrována na výpočtu spreadu IN Implementační podmínky návrhu návrh by měl používat syntetizovatelné VHDL kód by měl být přenositelný mezi HW platformami různých výrobců vnitřní škálovatelnost - tj. mělo by být možné zvýšit propustnost jednotky pro vybrané operace / markety na vstupu i na výstupu musí být použito specifikované rozhraní 1.5 Shrnutí kapitoly Dozvěděli jsme se co je to market, co jsou to impliedy a konkrétně, jak se počítá spread. Definovali jsme si požadavky na funkcionalitu i implementační podmínky návrhu. 25

26

27 KAPITOLA 2 Analýza a návrh V této kapitole bude předvedena studie proveditelnosti, následně bude analyzován algoritmus a navržena architektura jednotky. 2.1 Studie proveditelnosti Před návrhem jednotky bylo potřeba zjistit, jaké budou nároky na výslednou jednotku a to zejména v časové oblasti. Zadavatelskou firmou byly poskytnuty vzorové logy z jednotlivých serverů, zpracovávajících stejné objemy dat, které by měla zvládnout navrhovaná jednotka. Pro tyto účely byl navržen zjednodušený obecný sériový model jednotky: 2.1. Ten se skládá z vstupní fronty, paměti BRAM, výpočetní jednotky a výstupu. Model má tři operační módy: Výchozí stav: příchozí data se posílají transparentně na výstup. Když je detekován konec jedné zprávy (sady updatů) přechází se do režimu výpočet. Výpočet: data se hromadí ve vstupní frontě, výpočetní jednotka provádí výpočet. Po dokončení výpočtu se přejde do stavu vyčítání Vyčítání: Data se z výpočetní jednotky posílají na výstup, další stav je výchozí stav Tento model je dostatečně výstižný a současně dosti obecný, takže simuluje chování většiny možných řešení Implementace modelu Model byl implementován v jazyce Java, který byl zvolen zejména kvůli mým předchozím zkušenostem s tímto jazykem a také kvůli dostatku funkcí pro 27

28 2. Analýza a návrh Obrázek 2.1: zjednodušený model výpočtu práci se soubory. Hodinový signál a komunikace mezi jednotlivými jednotkami byly simulovány pomocí pomocí jednotlivých proměnných, latence jednotek tvořily for cykly. Vstupem jednotky byl textový soubor obsahující updaty z burzy opatřené timestampy. Vzhledem k charakteru dat bylo nutné provést některá zjednodušení - např. za ucelenou zprávu jsem považoval sadu dat s jednotným timestampem. Asymptoticky je však toto stejné Popis simulace Hlavní otázkou, kterou simulace měla zodpovědět, byla realizovatelnost jednotky a maximální čas, který máme k dispozici k výpočtu impliedů. Tento parametr může být v modelu dobře sledován tak, že ve výpočetní jednotce měníme parametr délky výpočtu a poté modelem necháme zpracovat zkušební data. Sledujeme poté velikost vstupního zásobníku. Simulační krok byl nastaven tak, že jeden tik hodin trvá s. Frekvence hodin tedy odpovídá 10 Mhz Na grafu zde 2.2 jsou zaneseny výsledky simulace pro délku výpočtu trvající 10,100 (totožné výsledky), 1000, 10000, a taktů. Na svislé ose je množství updatů na zásobníku, na vodorovné ose jsou změny na zásobníku. (tj. ne simulační čas!) 1 1 Pokud by byl na vodorovné ose simulační čas, mohlo by dojít k ztrátě špičkových hodnot během které by mohly vzniknout při více updatech s jedním timestampem. Pokud bychom chtěli graf převést do časové oblasti, došlo by pouze k horizontálnímu roztažení/stáhnutí, tj. námi požadovaný parametr, stav obsazenosti zásobníku se nijak neovlivní. 28

29 2.2. Požadavky na realizaci jednotky Obrázek 2.2: Vývoj množství dat na vstupním zásobníku Výsledky měření Ze simulace vyplývá, výpočet začíná být vzhledem k odsimulovaným vstupním datům neúnosně dlouhý až když trvá déle, než je taktů při frekvenci 10Mhz. Převedením tohoto grafu do časové oblasti bychom dostali okamžitou délku latence pro různé doby výpočtu, nicméně vzhledem k hrubosti modelu toto provádět nebudeme a tyto časy budeme měřit až ve VHDL implementaci. Během návrhu HW vyšlo najevo, že jednotka poběží bez problému s frekvencí hodin 250 Mhz, neúnosná délka výpočtu tedy je až 2,5 M taktů Interpretace měření Budeme-li předpokládat výpočet spread IN, který má za vstup 8 celočíselných hodnot, 8 čísel v plovoucí řádové čárce a výstupem jsou 4+4 hodnoty, můžeme s přihlédnutím do první kapitoly odhadnout potřebný výpočetní čas. Výpočet spreadu se bude skládat z cca 5 celočíselných operací (á 2 takty), cca 5 floatingpoint operací (á 7 taktů) a cca 24 in/out operací (á 1 takt) výpočet by tedy mohl trvat řádově 100 taktů. Máme-li k dispozici na výpočet taktů, můžeme provést jen s jednou výpočetní jednotkou 1000 výpočtů spread na jeden update, což je uspokojivá hodnota. Proveditelnost řešení je tedy ověřena. 2.2 Požadavky na realizaci jednotky Požadavky si můžeme rozdělit na kritéria obslužné logiky a samotného výpočetního jádra. 29

30 2. Analýza a návrh n včetně řídících bitů n bez řídících bitů položky hlavičky msg ID počet následujících slov UNIT ID expl. price update počet updatů implied price update počet updatů update ceny +/- Exponent Mantisa (horních 9b) update množství Množství - Integer - horních 18b timestamp Timestamp - horních 18b n včetně řídících bitů n bez řídících bitů položky hlavičky specifický obsah zprávy s e - - expl. price update Market ID MS s e - - implied price update Market ID MS 1. index s e - - update ceny Mantisa (zbylých 14b) s e - - update množství Množství - Integer - zbylých 14b s e - - timestamp Timestamp- zbylých 14b s e - - Tabulka 2.1: význam bitů v datových slovech (vysvětlení zkratek: MS = market side, s = start of message, e = end of message) Obslužná logika by měla zajišťovat tuto funkcionalitu: Transparentní chování vůči datům, která nás nezajímají Zajištění rovnoměrného vytížení výpočetního jádra Škálovatelnost na úrovni jader, možnost přidání dalších výpočetních jader dle potřeby Řízení výstupu dat Výpočetní jádro by mělo splňovat tyto kritéria: Autonomie jádra - po přivedení vstupních hodnot by jádro mělo provést výpočet samo - důležité kvůli případnému škálování počtu jader Rychlost výpočtu - na rychlosti výpočtu jádra bude záviset latence celé jednotky Variabilita - jádro by mělo být konfigurovatelné na jiný druh výpočtu Jedním z kritérií na obslužnou logiku je i rozhraní, které bylo specifikováno zadavatelem Specifikace vstupního a výstupního interface Komunikace s okolím probíhá po tzv. stream interface. Naše jednotka bude mít jedno vstupní a jedno výstupní. Komunikace probíhá paralelně po jednotlivých 30

31 2.3. Analýza procesů v jednotce Bit Význam 0-22 mantisa (skrytá jednička) exponent (bias=127) 31 znaménko, 0=kladné, 1=záporné číslo Tabulka 2.2: formát FP zprávách, a to s 32 datovými bity a 4 bity řídícími. Zprávy můžou obsahovat více slov. Slovo je široké právě 36 bitů, což je šířka sběrnice. První slovo každé zprávy obsahuje hlavičku, která nese informaci o případných dalších slovech zprávy. Řídicí bity Řídící bity jsou pro nás zajímavé pouze bit 3 - SOM - start of message, nastaven na 1 v prvním slově zprávy a 2 - EOM - end of message, nastaven na 1 v posledním slově zprávy. Datové bity Datových bitů je 32 a jejich využití se mění. Pro nás jsou důležité zprávy typu Explicit Price Update, které budeme přijímat a Implicit Price Update, které budeme na výstupu generovat. Oba tyto druhy zpráv obsahují parametr N, který udává počet následujících updatů. Pro získání počtu datových slov musíme tuto hodnotu vynásobit dvěma, každý update se totiž skládá ze dvou zpráv - 32 bitový integer - parametr množství a 32 bitový float - parametr cena. Bližší struktura je v tab??. Reprezentace FP je v souladu s IEE754 [11] jakožto single precision float: 2.2. Vztah mezi číslem a jeho obrazem je X F P = ( 1) s 2 exp bias (1 + m), kde s je znaménkový bit, exp je exponent, bias je 127 a m mantisa. V mantise se počítá se skrytou jedničkou. 2.3 Analýza procesů v jednotce Nejdříve je zadání analyzováno na úrovni jednotlivých procesů, které budou v jednotce probíhat. U každého procesu budou zmíněna kritéria, podle kterých budeme uvažovat způsob implementace Přijetí a detekce zprávy Na vstupním rozhraní se mohou obecně vyskytovat jakékoliv zprávy, tj. nejen Explicit Price Update. Jakékoliv přijaté zprávy nesmí být nijak měněny a musí 31

32 2. Analýza a návrh být poslány dále. Jediná povolená operace se vstupním tokem je jeho pozastavení po dobu výpočtu, případné vložení vlastních, nových zpráv. Manipulace s existujícími zprávami je nepřípustná. Po přijetí zprávy detekujeme typ a dle něj ji buď pouze předáme na výstup, nebo ji uložíme pro další zpracování. Možná kritéria latence zpracování - co nejmenší rekonfigurovatelnost - není nutná (formát zpráv se nebude měnit často) Cachování explicitních updatů Pro výpočet impliedů na obou marketside potřebujeme stejně velký žebříček indexů na explicitních hodnot. Tyto hodnoty (tj. cena a množství) budeme udržovat v cache, aby po příchodu update byly okamžitě k dispozici všechny výchozí hodnoty pro výpočet impliedů. Přijde-li do jednotky nový update, je jeho hodnotou přepsána minulá hodnota v cache. Možná kritéria malá plocha na čipu - paměti jsou obvykle náročné vhodný formát zápisu i čtení rychlost zápisu i čtení Detekce možného výpočtu Výpočet může proběhnout pouze za přítomnosti všech vstupních hodnot. Např. pro výpočet obou marketside impliedů do spread in potřebujeme obě strany žebříčku obou vstupních hodnot. Potřebujeme tedy detekci přítomnosti všech proměnných v cache pro daný výpočet. Možná kritéria rekonfigurovatelnost - občas může dojít ke změně počítaných impliedů Vlastní výpočet V prototypu implied IN do spread - z dostupných proměnných vypočítat požadovanou hodnotu. Popisu procesů v této jednotce se věnuje samostatná sekce této kapitoly dále. 32

33 2.4. Popis na úrovni bloků Obrázek 2.3: Návrh algoritmu jednotky Možná kritéria rekonfigurovatelnost - občas může dojít ke změně počítaných impliedů rychlost - na výkonu této části závisí propustnost celé jednotky Generování výstupních zpráv Posledním procesem je sběr dat z výpočtu a sestavení výstupní zprávy dle specifikace. Možná kritéria rychlost - střední Celkový algoritmus můžeme popsat tímto způsobem: Přijímajíce nová data je cache periodicky kontrolována, zda neobsahuje hodnoty, ze kterých můžeme vypočítat nějaký explicit. Obsahuje-li, pozastavíme příjem nových updatů (ty se hromadí ve frontě před naší jednotkou), provede se výpočet, výsledná data se pošlou na výstupní rozhraní a cyklus pokračuje dále od začátku přijmutím nových updatů. Překresleno do diagramu: Popis na úrovni bloků V této části popíšu obslužnou logiku na úrovni bloků, jejich chování a propojení. Jejich konkrétní implementace bude probrána v další kapitole. Propojení je naznačeno na obr

34 2. Analýza a návrh Obrázek 2.4: Architektura jednotky In/out řadič Tento blok zachytí data na vstupu, detekuje typ zprávy a dle něho s ní naloží. Implicit updaty pošle na vstup bloku implicit cache, ostatní jen přepošle na výstup. Blok zajišťuje logiku zamykání vstupu - je li výpočetní jednotka v činnosti, In/out řadič se zamkne a čeká na dokončení výpočtu, převezme vypočtená data, a až poté spustí příjem dalších dat. Tímto je zajištěna konzistence dat na výstupu, Explicitní markety následují vždy implicitní data která je vyvolala. Implicit cache V implicit cache se shromažďují vždy dvě strany z každé market side implicitního marketu. Updaty jsou jednoznačně identifikovány pomocí market ID. Implicit cache je také schopná zjistit zda byl daný market od počátku činnosti jednotky vůbec updatován - tj. zda je připraven na výpočet. Výpočetní jádro Výpočetní jádro je obecná jednotka, mající za vstup implicitní markety a vypočítávající z nich markety explicitní. Jednotka bude autonomní, tzn. není 34

35 2.5. Návrh výpočetního jádra potřeba žádné vnější řízení a v jejím rozhraní jsou zahrnuty signály signalizující její připravenost, nebo stav probíhajícího výpočtu. Vyčítací jednotka Vyčítací jednotka komunikuje s výpočetním jádrem/jádry, a z jejich výstupů je schopná sestavit validní zprávy dle specifikace, a odeslat je na výstup prostřednictvím in/out řadiče. Řadič výpočetních jednotek Jedna z nejdůležitějších částí celého designu, kontroluje Implicit cache na nachystané implicit markety. Jsou-li v Implicit cache připravena data pro alespoň jeden výpočet, řadič zajistí předání vstupních parametrů do výpočetního jádra a jeho spuštění. 2.5 Návrh výpočetního jádra V zadáním práce byla realizace výpočtu impliedu spread IN. Vlastní výpočet probíhá ve výpočetním jádru, které který dokáže z dat dvou vstupních marketů A, B vypočítat implied spread C = A - B. Nejdříve si představíme vstupy a výstupy jednotky Vstupní a výstupní proměnné Na obrázku 2.5 jsou znázorněny všechny vstupní a výstupní proměnné. Názvy proměnných jsou označeny tučným písmem. Jmenná konvence registrů je následující: písmeno 1.. P/Q = cena(p) / množství(q) písmeno 2.. A/B/C = A, B je označení vstupních proměnných, C je výstupní proměnná. číslo.. číslování viz obrázek dle indexu. Na obrázku je znázorněn vztah mezi indexem na žebříčku a názvy proměnných Algoritmus výpočtu První část algoritmu proběhne vždy nezávisle na vstupních proměnných, a to výpočet Pc2 = Pa2 - Pb3 a Pc3 = Pa3 - Pb2. Další výpočty jsou již podmíněné vstupními hodnotami a proto bude jejich výpočet jasnější z diagramu 2.6. Na něm je zobrazena pouze polovina žebříčku (!) - a to výpočet Qc1, Qc2 a Pc1. Proměnné Qc4. Qc3 a Pc4 se vypočtou analogickým postupem. 35

36 2. Analýza a návrh Obrázek 2.5: Vstupní a výstupní proměnné algoritmu Obrázek 2.6: Algoritmus výpočtu 36

37 2.6. Shrnutí kapitoly typ operace délka trvání výskyt celkem load / store 1 takt[13] 24x 24 taktů celočíselné porovnávání 1 takt max 4x 4 takty celočíselné odčítání 1 takt max 2x 2 takty FP odčítání 7 takt[1] 4x 28 taktů celkový odhad doby trvání 58 taktů Tabulka 2.3: Výskyt instrukcí a jejich očekávané trvání Operace prováděné během výpočtu, jejich četnost a předpokládaná časová náročnost Budeme-li počítat nejhorší možný případ - řetězení všech operací za sebe bez jakékoliv paralelizace, bude celý výpočet trvat 58 taktů. Více v tabulce 2.3 Ze simulace v Javě víme, že ještě délka výpočtu do taktů je ještě bezpečná. V daném počtu taktů stihneme 2000 výpočtů spreadu, což je dostatečný počet. Pokusíme se ovšem využít toho, že výpočet ceny a množství je naprosto nezávislý a musí probíhat na různých jednotkách (celočíselná vs. floating point). Tohoto přirozeného paralelismu využijeme. 2.6 Shrnutí kapitoly Ověřili jsme si, že zadání je teoreticky realizovatelné, analyzovali jsme procesy v jednotce, a navrhli jsme strukturu jednotky na úrovni bloků a specifikovali jejich chování. 37

38

39 KAPITOLA 3 Realizace Návrh proběhl v jazyce VHDL ve vývojovém prostředí Xilinx ISE. Cílovou platformou pro implementaci zařízení je Virtex 6, HX380T-3, nicméně z důvodu licenčního omezení ISE byla syntéza prováděna pro VLX75T-3. Jako syntézní nástroj byl zvolen XST, který je součástí vývojového prostředí Xilinx ISE. Při návrhu nebylo použito knihovních prvků od fy Xilinx, takže design by měl být přenositelný i na platformy jiných výrobců. 3.1 Struktura implementace U každého bloku je dokumentováno jeho rozhraní a funkcionalita. Ve zdrojovém kódu nejsou zobrazovány komentáře. Pro zobrazení VHDL kódu je použita výborná Latex package Listings [2]. Komentovány jsou jen důležité signály rozhraní top Je vrchní jednotkou celého návrhu. Implementuje logiku přijímání a přeposílání datových zpráv a propojuje všechny ostatní jednotky Interface ENTITY top IS PORT( c l k : IN STD_LOGIC; r s t : IN STD_LOGIC; timestamp : IN STD_LOGIC_VECTOR(TSWIDTH 1 DOWNTO 0 ) ; infifo_empty : IN STD_LOGIC; 39

40 3. Realizace Port clk rst timestamp infifo_empty infifo_rd_enable infifo_rd_data outfifo_wr_enable outfifo_wr_data outfifo_full Význam hodinový reset jednotky aktuální čas, potřeba pro generování nových datových zpráv vstupní fronta je prázdná clock enable pro čtení vstupní fronty výstupní data ze vstupní fronty clock enable pro zápis výstupní fronty vstupní data do výstupní fronty výstupní fronta je plná Tabulka 3.1: rozhraní jednotky top i n f i f o _ r d _ e n a b l e : OUT STD_LOGIC; infifo_rd_data : IN STD_LOGIC_VECTOR(MSGWIDTH 1 DOWNTO 0 ) ; outfifo_wr_enable : OUT STD_LOGIC; outfifo_ wr_ data : OUT STD_LOGIC_VECTOR(MSGWIDTH 1 DOWNTO 0 ) ; o u t f i f o _ f u l l : IN STD_LOGIC ) ; END top ; Komunikace odpovídá specifikacím z předchozí kapitoly. Propojení fronty je synchronní se signálem clk, platná data nám tedy fronta vystaví po nastavení infifo_rd_enable a na náběžnou hranu signálu clk. Stejně tak výstupní fronta zapíše data při nastaveném signálu outfifo_wr_enable a náběžné hraně clk. Komunikaci s okolím řídí konečný stavový automat dle přechodového diagramu 3.1. Dle coding style specifikací zadavatele byla použita dvojprocesová implementace stavového automatu. Po načtení dat z vstupní fronty je market ID převedeno pomocí id_to_addr_converter na adresu v RAM, a jsou na ni uloženy updaty ceny i množství. Automat přejde do stavu "locked"a který spustí mikrokódový řadič výpočetní jednotky. Ve stavu locked zůstane po celou dobu trvání výpočtů explicit updatů. Po dokončení výpočtu běží cyklus od začátku id_to_addr_converter Tato jednotka zajišťuje mapování ID marketu, které může být obecně jakékoliv 8bitové číslo, na fyzickou adresu v implicit_cache. V současné verzi překlad neprobíhá, protože není předem známé množství marketů se kterými bude jednotka počítat. Když bude tato hodnota známa, 40

41 3.1. Struktura implementace Obrázek 3.1: Konečný stavový automat řídící I/O operace 41

42 3. Realizace bude možné omezit kapacitu explicit_cache a v id_to_addr_converter provést mapování bitů tak, aby docházelo k přístupům pouze do platného adresního prostoru. Jednotka je umístěna mezi vstupem a cache, dále mezi microcode_driver a cache implicit_cache Zde se cachují došlé updaty. Od každého marketu, jednoznačně určeného adresou, se ukládají dva indexy obsahující cenu a množství. Zápis do implicit_cache probíhá po jednotlivých 32bitových datových slovech, naopak výstup je 256bitový a obsahuje všechny dostupné= updaty jednoho marketu. V implicit_cache tedy probíhá jakási deserializace vstupních dat. V modulu je také vestavěna ochrana proti čtení neinicializované paměti. Dokud se poprvé nezapíše na obě market side, při nastavení adresy daného marketu port r_flag tuto situaci signalizuje nulovou hodnotou microcode_driver Microcode_driver řídí výpočetní jednotku/y definuje jejich vstupní a výstupní data. Tuto jednotku bylo možné implementovat pomocí dvojprocesového konečného stavového automatu. Oproti jiným místům v designu v tomto místě může docházet ke změnám. proto bylo přistoupeno k návrhu horizontálního mikrokódového řadiče, u kterého jsou změny algoritmu snáze proveditelné. Význam bitů v mikroinstrukcích je v tabulce 3.2. Strukturálně je mikrořadič navrhnut jako ROM paměť, jejíž část výstupů je vyhrazena pro ovládání signálů, a část je adresou další instrukce. Instrukci v ROM paměti reprezentuje jedno slovo. Implementačně je mikrokód zapsán přímo do VHDL zdrojového kódu a je bohatě okomentován. V závěru kapitoly budu diskutovat případné rozšíření. Podmíněné skoky jsou řešené změnou bitu 1 a 0 adresy následující instrukce(pc+1). Pokud je bity nastaven nějaký typ podmíněného skoku, bit 0 adresy další instrukce je pevně nastaven na 1, bit 1 je nastaven podle vstupní podmínky. Přehled všech možných podmíněných skoků je v tabulce 3.3. Skok je tedy řešen přepnutím multiplexeru. V hodnotě 000 je jako příští instrukce zvolena část slova v paměti. 42 Po resetu je PC registr nastaven na adresu 0000 (HEX).

43 3.1. Struktura implementace Bity mikroinstrukce Význam 0-15 adresa následující instrukce (PC+1) výběr podmíněného skoku id v implicit_cache 27 uložení operandu A do vybrané výpočetní jednotky 28 uložení operandu B do vybrané výpočetní jednotky 29 uložení market_id do vybrané výpočetní jednotky 30 start vybrané výpočetní jednotky 31 odemčení TOP fsm (=obnovení načítání ze vstupního fifa) nevyužité výběr výpočetní jednotky nastavení market_id u aktuální výpočetní jednotky Tabulka 3.2: Význam jednotlivých bitů mikrokódu Bity 18,17,16 v mikroinstrukci Bit 1 v PC odpovídá PC+1 v mikroinstrukci 001 1, pokud jsou data v implicit_cache připravena 010 1, pokud vyčítací jednotka dokončila svoji práci 011 1, pokud na dané adrese v explicit_memory jsou inicializovaná data ostatní nevyužito Tabulka 3.3: Možnosti podmíněného skoku reader_unit Tato jednotka kontroluje připojený výpočetní jádra (v DP pouze spread_unit) jestli nemají nějaká data připravená k odeslání. Jestliže mají, data jsou serializována a poslána na výstupní fifo. Tato serializace probíhá v lock stavu hlavního fsm. Samotná jednotka v sobě obsahuje také konečný stavový automat, nicméně není zajímavý a jeho přechody pouze periodicky vyčítají výstupní registry výpočetního jádra spread_unit Jednotka spread_unit vypočítá z předaných parametrů hodnotu implied_in do spreadu. Požadavky na spread_unit Algoritmus výpočtu implieds spočívá pouze v následujících operacích: 43

44 3. Realizace odčítání INT čísel a uložení na výstup porovnání INT čísel odčítání FP čísel a uložení na výstup načtení čísla ze vstupu a jeho uložení na výstup + větvení algoritmu, cykly Diskuse možností návrhu Přes relativně malý počet požadovaných operací jsem zvažoval implementaci několika způsoby: Síťová architektura - v případě požadované rekonfigurovatelnosti pravidelná, jinak nepravidelná přímá síť 2, kde uzly by byly jednotlivé aritmetické jednotky, přepínače pak větvení a předávání hodnot v pipeline) Využití existujícího softcore mikroprocesoru 3 Navržení architektury na míru využívající více či méně univerzálních registrů a výpočetních jednotek. Síťová architektura Mezi klady této varianty patří vysoký výkon, mezi zápory mnoho zabraného místa. Softcore mikroprocesor - Picoblaze Picoblaze je embedded mikrokontrolér, uvolněný jako Open-Source. Pro PicoBlaze existuje assembler jak pro Windows, tak linuxové prostředí. Nicméně dle dokumentace [12] je aritmetická jednotka pouze 1 Byte široká, takže tento mikrokontrolér by šlo použít pouze jako řídící jednotku pro FPU jádro. Proti tomuto využití však hovoří zpracování instrukcí po dvou taktech bez pipeliningu. Vlastní architektura řízená FSM FSM se obecně vyznačují vysokou rychlostí při běhu, avšak pomalou implementací algoritmu při návrhu. Výhody vlastní architektury jsou zejména maximální přizpůsobení řešenému problému a také možnost snadné paralelizace bez zbytečného nárůstu zabrané plochy. Zvolena byla poslední možnost, a to návrh architektury na míru. 2 Přímá síť je taková síť, u které je každý přepínač připojen alespoň k jednomu uzlu 3 Procesor implementovaný pomocí syntézy v programovatelné součástce 44

45 3.1. Struktura implementace Obrázek 3.2: Architektura INT části Návrh architektury spread_unit Vzhledem k požadovaným vlastnostem byla jednotka rozdělena na FP a INT část. Mezi těmito dvěma segmenty nedochází k výměně dat, pouze řídících informací. Navržena tedy byla struktura z obr 3.2 a 3.3. Data jsou přivedena paralelně na vstupní porty, vyčítána mohou být také paralelně. Je rozdělena do dvou samostatných částí, celočíselné (INT), a části pro zpracování dat v plovoucí (FP) řádové čárce. INT část obsahuje vstupní registry, výstupní registry, komparátor a odčítačku, FP část obsahuje pouze registry a odčítačku. Dalších jednotek není potřeba. Nepřítomnost registrů na výstupu FP odčítačky je způsobena tím, že tyto jsou přímo součástí odčítačky. Na nákresu jsou pro přehlednost zobrazeny jen datové cesty, nikoliv řídící. Šířka sběrnic je naznačena. FP i INT část je řízena dvěma automaty. Algoritmus je na obrázcích 3.4 a 3.5. Oba jsou synchronizovány ve třech bodech: Při startu, dokončení porovnání v INT a po dokončení všech výpočtů. Princip synchronizace je na Petriho síti 3.6. Protože výpočet obou stran žebříčku je identický, je po dokončení výpočtu jedné strany automat spuštěn znovu, avšak s nastaveným registrem 45

46 3. Realizace Obrázek 3.3: Architektura FP části Obrázek 3.4: činnost řídícího automatu v INT části second_run. Tento způsobí, že je zpracovávána druhá polovina žebříčku. Tímto došlo ke zmenšení stavů, ale hlavně ke zpřehlednění kódu automatu. První testovací implementace obsahovala pouze jeden FSM. Tento však obsahoval 107 stavů a i když výsledná posloupnost změn na výstupních signálech byla stejná, případné úpravy automatu vývojářem by byly extrémně nepohodlné. Ze zadání se však přímo nabízí rozdělit řízení stejně, jako jsou rozděleny výkonné jednotky, totiž na FP část a INT část. Díky tomu mohly být vylou- 46

47 3.1. Struktura implementace Obrázek 3.5: činnost řídícího automatu v FP části čeny stavy, které řídily INT jednotku když FP čeká na latenci odčítačky a obráceně. Čekání na latence tak mohlo být převedeno na pomocný čítač, a došlo k výraznému zjednodušení kódu. Celočíselná odčítačka je triviálně popsaná ve VHDL pomocí paralelního přiřazení, algoritmus výpočtu totiž vylučuje odčítání většího čísla od menšího, a protože se jedná o množství, vždy se jedná o nezáporná čísla. Oproti tomu operandy FP odčítačky nejsou blíže specifikovány, obecně to mohou být jakákoliv FP čísla. Od zadavatele bylo specifikováno, že v designu celého plánovaného zařízení je již FP jednotka naimplementována, pouze pro mé testovací účely jsem tedy použil již hotové FP jádro od Jidana Al-Eryani z opencores.org [1]. Toto jádro podporuje daleko více operací než bylo pro můj návrh potřeba, nepotřebné moduly byly pro úsporu místa a zvýšení syntézy deaktivovány. Není bez zajímavosti, že současná kritická cesta po syntéze vede právě přes tuto odčítačku. Jedním z pokračováních této práce tedy bude vestavění odčítačky od zadavatele a vyhodnocení výsledků nové syntézy. Rozhraní spread unit ENTITY spread_ unit IS PORT( c l k : IN STD_LOGIC; r s t : IN STD_LOGIC; data_in : IN STD_LOGIC_VECTOR ( ( 8 WIDTH) 1 DOWNTO 0 ) ; data_out : OUT STD_LOGIC_VECTOR ( ( 8 WIDTH) 1 DOWNTO 0 ) ; 47

48 3. Realizace Obrázek 3.6: Petriho síť synchronizace automatů save_a : IN STD_LOGIC; save_b : IN STD_LOGIC; market_id_in : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 ) ; market_id_ce : IN STD_LOGIC; market_id_out : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ) ; s t a r t : IN STD_LOGIC; data_ready : OUT STD_LOGIC ) ; END; Vstupními daty jednotky je žebříček marketu A B. Výstupem jednotky jsou implieds do žebříčku A-B. Jednotka komunikuje s explicit_cache pomocí jednoduchého protokolu, který umožňuje nahrání relevantních informací z cache v jednom kroku. Vstup na data_in jsou přivedena zřetězená data od nejvyššího bitu Q1, Q2, Q3, Q4, P1, P2, P3, P4. Každá proměnná má 32 bitů. Je použita notace z 2.5. Je-li při náběžné hraně hodinového signálu aktivní save_a, je tento market považován za operand A, analogický význam má save_b. Vyčítání je řešeno autonomně vyčítací jednotkou, je tedy potřeba jí předat ID marketu, který počítáme. Proto je součástí spread_unit prostý re- 48

49 3.2. Výsledky syntézy gistr market_id, připojený na příslušně pojmenované vstupy a výstupy, do kterého mikrokódová řídící jednotka uloží ID výstupního marketu. Toto ID bude použito při vytváření zprávy vyčítací jednotkou a bude jí předáno přes market_id_out. Spuštění jednotky provede signál start. Výstupní data jsou připravena při aktivním signálu data_ready a to na portu data_out ve stejně zřetězené podobě, jako na vstupu, tj od nejvyššího bitu Q1, Q2, Q3, Q4, P1, P2, P3, P4. Data jsou na výstupu tak dlouho, dokud nejsou přepsána novým výpočtem. Signál data_ready je aktivní právě jeden hodinový takt. 3.2 Výsledky syntézy Primitive and Black Box Usage: # BELS : 1821 # GND : 1 # INV : 2 # LUT1 : 24 # LUT2 : 69 # LUT3 : 120 # LUT4 : 179 # LUT5 : 405 # LUT6 : 693 # MUXCY : 135 # MUXF7 : 99 # VCC : 1 # XORCY : 93 # FlipFlops/Latches : 1414 # FD : 333 # FDC : 13 # FDE : 790 # FDR : 13 # FDRE : 265 # RAMS : 8 # RAMB18E1 : 8 # Shift Registers : 7 # SRLC16E : 7 # Clock Buffers : 1 # BUFGP : 1 # IO Buffers :

50 3. Realizace # IBUF : 71 # OBUF : 38 Slice Logic Utilization: Number of Slice Registers: 1382 out of % Number of Slice LUTs: 1499 out of % Number used as Logic: 1492 out of % Number used as Memory: 7 out of % Number used as SRL: 7 Clock period: 3.954ns (frequency: MHz) Pozn. jedná se spíše o odhad, syntéza byla prováděna bez UCF souboru. 50

51 KAPITOLA 4 Testování Během návrhu probíhalo mnoho různých drobných testů. Na závěr byla provedena verifikace celé jednotky, o čemž bude tato kapitola. 4.1 Model Z důvodu neexistence formální specifikace chování jednotky od zadavatele byl jako základ modelu pro testování použit popis algoritmu z druhé kapitoly této práce. Z důvodu dobrých zkušeností s modelováním chování jednotky v jazyce JAVA ve studii proveditelnosti, bylo opět přistoupeno k implementaci modelu v tomto programovacím jazyce. Tentokrát bylo implementováno detailní chování jednotky včetně výpočtů, ukládání do cache apod. Vstup dat je simulován čtením textového souboru, výstup zapisováním do druhého. Stejně jako v HW jednotce jsou data po načtení zkontrolována, zda obsahují zájmové hodnoty (tj. updaty explicitů) a tyto jsou poté buď uloženy do pole, nebo pouze poslány na výstup. Po přijmutí zprávy proběhne sekvenční kontrola pole, zda obsahuje hodnoty potřebné k výpočtu zadaných impliedů, které jsou poté vypočítány a poslány na výstup. 4.2 Zapojení HW do testbenche Wrapper pro jednotku Ze zadání vyplývá, že jednotka bude pracovat mezi dvěma frontami. Součástí testování tedy bylo zapojení do této kombinace tak, abychom s jednotkou mohli zacházet jako s monolitickým blokem. Výsledný VHDL modul top_wrapper má následující rozhraní: 51

52 4. Testování ENTITY top_wrapper IS PORT( c l k : IN s t d _ l o g i c ; r e s e t : IN s t d _ l o g i c ; data_in : IN s t d_logic_vector (35 downto 0 ) ; data_out : OUT s t d_logic_vector (35 downto 0 ) ; i n f i f o _ w r i t e _ e n a b l e : IN s t d _ l o g i c ; outfifo_read_enable : IN s t d _ l o g i c ; outfifo_empty : OUT s t d _ l o g i c ) ; END; názvy portů odpovídají jejich významu. Nad tímto modulem už mohly být prováděny testy. Nastavení výstupní a vstupní fronty Dle zadání bude jednotka zapojena mezi dvě fronty. Tyto dvě fronty jsou tedy ve wrapperu zapojeny před, a za jednotku. Použita byla implementace front od zadavatele s těmito změnami ve výchozí konfiguraci: Šířka fronty nastavena na 36 (=šířka slova 32 bitů + 4 bity kontrolní) parametr FALL_THROUGH nastaven jako false Ostatní parametry jsou ponechány ve výchozím stavu. Signály almost_* nejsou využity. Více informací o implementaci front je v interní dokumentaci zadavatele Testbench modul Testbench modul tb_top_wrapper nahrává vstupní soubor, a naplní vstupní frontu jednotky. Jednotka samotná již sama detekuje neprázdnou vstupní frontu a začne zpracovávat vstupní data. Ta jsou odesílána na výstup, kam je připojena další fronta, která je v testbench modulu vyčítána do výstupního souboru. Pro návrh funkcionality čtení souborů byly použité lehce upravené funkce z [5]. Tyto funkce provádí převod mezi datovým typem string a proměnou typu std_logic_vector. 4.3 Generátor stimulů Další otázkou, kterou bylo nutné vyřešit byly vhodné stimuly pro test. Pro tento účel byl navržen generátor stimulů, který dokáže vygenerovat vstupní soubor obsahující fingované vstupní zprávy. 52

53 4.4. Průběh testu, shrnutí testování Code coverage Z hlediska code coverage testů můžeme design rozdělit do dvou částí: Obslužná logika Chod obslužné logiky je závislý na vstupních datech pouze omezeně, a to konkrétně na počtu slov v příchozí zprávě. Nastávají tři možnosti: počet updatů ve zprávě = 2 - stimuly v souboru input.txt počet updatů ve zprávě < 2 - stimuly v souboru input1,txt počet updatů ve zprávě > 2 - stimuly v souboru input3.txt Spread_unit Další závislost na vstupních datech je v spread_unit, algoritmus se větví na základě poměrů následujících vstupních dat: (QA 2, QB 3 ) (QA 3, QB 2 ) Varianty těchto poměrů jsou testovány vždy prvními 12 stimuly v testu, které jsou na toto zaměřené. FPU sub Součástí designu je i FPU odčítačka od třetí strany. Protože výhledově bude v designu nahrazena odčítačkou od zadavatele, nebyla tato odčítačka plně otestována. 4.4 Průběh testu, shrnutí testování Vlastní testování probíhalo vygenerováním stimulů pomocí generátoru. Dále bylo provedeno jejich zpracování JAVA modelem. Samotná jednotka byla simulována v nástroji ISIM, který je součástí Xilinx ISE a probíhá spuštěním simulátoru nad souborem tb_top_wrapper, který načte stimuly z v kódu specifikovaného souboru a výsledky zapíše do souboru výstupního. Názvy souborů je možné měnit v kódu testbenche. Vzniklá data, tj. výstupní soubor z modelu a výstupní soubor z testbenche již lze triviálně zpracovat pomocí unixové utility diff. Pokud test proběhl správně, výstupní data z modelu a výstupní data z testbenche se nemění. 53

54

55 KAPITOLA 5 Diskuze rozšíření stávajícího řešení Během návrhu byly objeveny další možnosti vylepšení designu jednotky, které však přesahují rámec zadání a většinou by vyžadovaly úpravu specifikací komunikace jednotky s okolím. 5.1 Převedení ROM pamětí v jednotkách na RAM V designu se dvakrát používá analogie ROM paměti - zejména v id_to_addr_converter, kde každému ID marketu je přiděleno právě jedna adresa. Rozšíření by mohlo spočívat ve vytvoření (B)RAM paměti, které by se inicializovala při startu jednotky servisní zprávou. Mezi výhodou tohoto řešení by bylo odstranění nutnosti nové syntézy jednotky při změnách vstupních dat, naopak mezi nevýhody můžeme řadit nutnost inicializace jednotky po každém resetu. Programovatelná BRAM paměť by byla vhodná i pro microcode_driver, řídící výpočetní jádra. Výhody a nevýhody zůstávají stejné. 5.2 Převedení FSM ve výpočetním jádře na mikrokódový řadič Nyní je jednotka počítající spread IN pevně zadrátovaná pomocí dvou dvojprocesových konečných automatů. Alternativou k tomuto řešení by bylo využití mikrokódového řadiče, nebo řadičů. Výhodou řešení pomocí FSM je větší volnost pro syntézu, která si sama může zvolit optimální kódování stavů, atd., zatímco při využití mikrokódového řadiče jsou přechody a výstupy syntetizovány dopředu, a budí se až na základě obsahu ROM/RAM paměti. 55

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011 Jiří Douša, katedra číslicového návrhu (K18103), České vysoké učení technické

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

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

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv

Více

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů: Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí

Více

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí

Více

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

Kryptoanalýza šifry PRESENT pomocí rekonfigurovatelného hardware COPACOBANA

Kryptoanalýza šifry PRESENT pomocí rekonfigurovatelného hardware COPACOBANA Kryptoanalýza šifry PRESENT pomocí rekonfigurovatelného hardware COPACOBANA Jan Pospíšil, pospij17@fit.cvut.cz, Martin Novotný, novotnym@fit.cvut.cz Katedra číslicového návrhu Fakulta informačních technologíı

Více

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

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 9 SYSTÉMOVÝ NÁVRH, IP-CORES doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze

Více

SEKVENČNÍ LOGICKÉ OBVODY

SEKVENČNÍ LOGICKÉ OBVODY Sekvenční logický obvod je elektronický obvod složený z logických členů. Sekvenční obvod se skládá ze dvou částí kombinační a paměťové. Abychom mohli určit hodnotu výstupní proměnné, je potřeba u sekvenčních

Více

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

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Petr

Více

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

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 Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

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

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

Více

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

Řízení IO přenosů DMA řadičem Řízení IO přenosů DMA řadičem Doplňující text pro POT K. D. 2001 DMA řadič Při přímém řízení IO operací procesorem i při použití přerušovacího systému je rychlost přenosu dat mezi IO řadičem a pamětí limitována

Více

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

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 Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2 Koncept pokročilého návrhu ve VHDL INP - cvičení 2 architecture behv of Cnt is process (CLK,RST,CE) variable value: std_logic_vector(3 downto 0 if (RST = '1') then value := (others => '0' elsif (CLK'event

Více

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

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná

Více

Systém adresace paměti

Systém adresace paměti Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného

Více

Projekt: Přístupový terminál

Projekt: Přístupový terminál Projekt: Přístupový terminál 1. Zadání 1. Seznamte se s přípravkem FITKit a způsobem připojení jeho periférií, zejména klávesnice a LCD displeje. 2. Prostudujte si zdrojové kódy projektu v jazyce VHDL.

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21 Stručný obsah 1. Hardware, procesory a vlákna... 19 2. Programování s ohledemna výkon... 45 3. Identifikování příležitostí pro paralelizmus... 93 4. Synchronizace a sdílení dat... 123 5. Vlákna v rozhraní

Více

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

OPS Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus

Více

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

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 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 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Principy komunikace s adaptéry periferních zařízení (PZ)

Principy komunikace s adaptéry periferních zařízení (PZ) Principy komunikace s adaptéry periferních zařízení (PZ) Několik možností kategorizace principů komunikace s externími adaptéry, např.: 1. Podle způsobu adresace registrů, které jsou součástí adaptérů.

Více

Návrh ovládání zdroje ATX

Návrh ovládání zdroje ATX Návrh ovládání zdroje ATX Zapínání a vypínání PC zdroj ATX se zapíná spojením řídicího signálu \PS_ON se zemí zapnutí PC stiskem tlačítka POWER vypnutí PC (hardwarové) stiskem tlačítka POWER a jeho podržením

Více

Architektura Intel Atom

Architektura Intel Atom Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí

Více

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí. Základní pojmy IT, číselné soustavy, logické funkce Základní pojmy Počítač: Stroj na zpracování informací Informace: 1. data, která se strojově zpracovávají 2. vše co nám nebo něčemu podává (popř. předává)

Více

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

Profilová část maturitní zkoušky 2014/2015 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2014/2015 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

Příklady popisu základních obvodů ve VHDL

Příklady popisu základních obvodů ve VHDL Příklady popisu základních obvodů ve VHDL INP - cvičení 2 Michal Bidlo, 2008 bidlom@fit.vutbr.cz entity Circuit is port ( -- rozhraní obvodu ); end Circuit; Proces architecture Behavioral of Circuit is

Více

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

C2115 Praktický úvod do superpočítání C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137

Více

7. Popis konečného automatu

7. Popis konečného automatu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš

Více

PROCESOR. Typy procesorů

PROCESOR. Typy procesorů PROCESOR Procesor je ústřední výkonnou jednotkou počítače, která čte z paměti instrukce a na jejich základě vykonává program. Primárním úkolem procesoru je řídit činnost ostatních částí počítače včetně

Více

Direct Digital Synthesis (DDS)

Direct Digital Synthesis (DDS) ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Direct Digital Synthesis (DDS) Přímá číslicová syntéza Tyto materiály vznikly za podpory

Více

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

Jak do počítače. aneb. Co je vlastně uvnitř Jak do počítače aneb Co je vlastně uvnitř Po odkrytí svrchních desek uvidíme... Von Neumannovo schéma Řadič ALU Vstupně/výstupní zař. Operační paměť Počítač je zařízení, které vstupní údaje transformuje

Více

5. Sekvenční logické obvody

5. Sekvenční logické obvody 5. Sekvenční logické obvody 3. Sekvenční logické obvody - úvod Sledujme chování jednoduchého logického obvodu se zpětnou vazbou 3. Sekvenční logické obvody - příklad asynchronního sekvenčního obvodu 3.

Více

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Disková pole (RAID) 1

Disková pole (RAID) 1 Disková pole (RAID) 1 Architektury RAID Důvod zavedení RAID: reakce na zvyšující se rychlost procesoru. Pozice diskové paměti v klasickém personálním počítači vyhovuje pro aplikace s jedním uživatelem.

Více

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic. Základní principy konstrukce systémové sběrnice - shrnutí Shrnout základní principy konstrukce a fungování systémových sběrnic. 1 Co je to systémová sběrnice? Systémová sběrnice je prostředek sloužící

Více

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 7. Pracovní postupy Posloupnosti analytických a syntetických

Více

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

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 7 ČASOVÁNÍ A SYNCHRONIZACE TECHNICKÉHO VYBAVENÍ doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních

Více

Procesy a vlákna (Processes and Threads)

Procesy a vlákna (Processes and Threads) ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna (Processes and Threads) Správa procesů a vláken České vysoké učení technické Fakulta elektrotechnická 2012 Použitá literatura [1] Stallings, W.: Operating

Více

Systém řízení sběrnice

Systém řízení sběrnice Systém řízení sběrnice Sběrnice je komunikační cesta, která spojuje dvě či více zařízení. V určitý okamžik je možné aby pouze jedno z připojených zařízení vložilo na sběrnici data. Vložená data pak mohou

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student Předmět Ústav Úloha č. 9 BIO - igitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student Cíle Pochopení funkce obvodu pro odstranění zákmitů na

Více

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

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 2 METODY VERIFIKACE SYSTÉMŮ NA ČIPU II doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

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

Profilová část maturitní zkoušky 2015/2016 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2015/2016 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D. Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Stavové automaty enkódování Proces, který rozhoduje kolik paměťových prvků bude využito v paměťové části. Binární enkódování je nejpoužívanější. j počet stavů

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

3. Sekvenční logické obvody

3. Sekvenční logické obvody 3. Sekvenční logické obvody 3. Sekvenční logické obvody - úvod Sledujme chování jednoduchého logického obvodu se zpětnou vazbou 3. Sekvenční logické obvody příklad sekv.o. Příklad sledování polohy vozíku

Více

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

Semestrální práce z předmětu Speciální číslicové systémy X31SCS Semestrální práce z předmětu Speciální číslicové systémy X31SCS Katedra obvodů DSP16411 ZPRACOVAL: Roman Holubec Školní rok: 2006/2007 Úvod DSP16411 patří do rodiny DSP16411 rozšiřuje DSP16410 o vyšší

Více

Přerušovací systém s prioritním řetězem

Přerušovací systém s prioritním řetězem Přerušovací systém s prioritním řetězem Doplňující text pro přednášky z POT Úvod Přerušovací systém mikropočítače může být koncipován několika způsoby. Jednou z možností je přerušovací systém s prioritním

Více

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

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru Počítačové systémy Procesor Miroslav Flídr Počítačové systémy LS 2006-1/17- Západočeská univerzita v Plzni Víceúrovňová organizace počítače Digital logic level Microarchitecture level Processor Instruction

Více

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

Architektury VLIW M. Skrbek a I. Šimeček Architektury VLIW M. Skrbek a I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PAP, LS2010/11, Predn.3 Příprava studijního programu

Více

Počítač jako elektronické, Číslicové zařízení

Počítač jako elektronické, Číslicové zařízení Počítač jako elektronické, Číslicové Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1135_Počítač jako elektrornické, číslicové _PWP Název školy: Číslo a název projektu: Číslo a název šablony

Více

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu Předmět Ústav Úloha č. 10 BDIO - Digitální obvody Ústav mikroelektroniky Komplexní příklad - návrh řídicí logiky pro jednoduchý nápojový automat, kombinační + sekvenční logika (stavové automaty) Student

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01 PROGRAMOVATELNÉ AUTOMATY Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01 KNIHOVNA RecDBXLib DATABÁZE V DATABOXU 2. vydání řijen 2008 OBSAH 1. ÚVOD...3 2. KNIHOVNA RecDBXLib DATABÁZE V DATABOXU...4

Více

SYSTÉMY NAČIPU MI-SOC

SYSTÉMY NAČIPU MI-SOC Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti SYSTÉMY NAČIPU MI-SOC doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze Hana Kubátová

Více

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Tomáš Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Zjednodušené schéma systému z základ hardware pro mainframe tvoří: operační pamět - MAIN / REAL STORAGE jeden

Více

SEMESTRÁLNÍ PROJEKT Y38PRO

SEMESTRÁLNÍ PROJEKT Y38PRO SEMESTRÁLNÍ PROJEKT Y38PRO Závěrečná zpráva Jiří Pomije Cíl projektu Propojení regulátoru s PC a vytvoření knihovny funkcí pro práci s regulátorem TLK43. Regulátor TLK43 je mikroprocesorový regulátor s

Více

Návrh čítače jako automatu

Návrh čítače jako automatu ávrh čítače jako automatu Domovská URL dokumentu: http://dce.felk.cvut.cz/lsy/cviceni/pdf/citacavrh.pdf Obsah ÁVRH ČÍTAČE JAO AUTOMATU.... SYCHROÍ A ASYCHROÍ AUTOMAT... 2.a. Výstupy automatu mohou být

Více

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Ústav radioelektroniky Vysoké učení technické v Brně Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Přednáška 8 doc. Ing. Tomáš Frýza, Ph.D. listopad 2012 Obsah

Více

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

Úvod do architektur personálních počítačů Úvod do architektur personálních počítačů 1 Cíl přednášky Popsat principy proudového zpracování informace. Popsat principy zřetězeného zpracování instrukcí. Zabývat se způsoby uplatnění tohoto principu

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

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

Mikrokontroléry. Doplňující text pro POS K. D. 2001 Mikrokontroléry Doplňující text pro POS K. D. 2001 Úvod Mikrokontroléry, jinak též označované jako jednočipové mikropočítače, obsahují v jediném pouzdře všechny podstatné části mikropočítače: Řadič a aritmetickou

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

Architektura počítače

Architektura počítače Architektura počítače Výpočetní systém HIERARCHICKÁ STRUKTURA Úroveň aplikačních programů Úroveň obecných funkčních programů Úroveň vyšších programovacích jazyků a prostředí Úroveň základních programovacích

Více

Firmware řídící jednotky stejnosměrného generátoru

Firmware řídící jednotky stejnosměrného generátoru Firmware řídící jednotky stejnosměrného generátoru Zdeněk KOLKA Projekt FR-TI1/184 - Výzkum a vývoj systému řízení a regulace pozemního letištního zdroje Popis Řídicí jednotka GCU 400SG je elektronické

Více

Návrh. číslicových obvodů

Návrh. číslicových obvodů Návrh číslicových obvodů SW Aritmetika HW Periférie CPU function AddSub(a,b,s); var c; a b k k a+b mpx c if (s==1) c=a+b; else c=a-b; a-b return c; End; PAMĚŤ s Princip: univerzální stroj Výhoda: univerzalita

Více

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

Strojový kód. Instrukce počítače Strojový kód Strojový kód (Machine code) je program vyjádřený v počítači jako posloupnost instrukcí procesoru (posloupnost bajtů, resp. bitů). Z hlediska uživatele je strojový kód nesrozumitelný, z hlediska

Více

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

Architektury CISC a RISC, uplatnění v personálních počítačích Architektury CISC a RISC, uplatnění v personálních počítačích 1 Cíl přednášky Vysvětlit, jak pracují architektury CISC a RISC, upozornit na rozdíly. Zdůraznit, jak se typické rysy obou typů architektur

Více

Software pro vzdálenou laboratoř

Software pro vzdálenou laboratoř Software pro vzdálenou laboratoř Autor: Vladimír Hamada, Petr Sadovský Typ: Software Rok: 2012 Samostatnou část vzdálených laboratoří tvoří programové vybavené, které je oživuje HW část vzdáleného experimentu

Více

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

Kubatova 19.4.2007 Y36SAP - 13. procesor - control unit obvodový a mikroprogramový řadič RISC. 19.4.2007 Y36SAP-control unit 1 Y36SAP - 13 procesor - control unit obvodový a mikroprogramový řadič RISC 19.4.2007 Y36SAP-control unit 1 Von Neumannova architektura (UPS1) Instrukce a data jsou uloženy v téže paměti. Paměť je organizována

Více

Pokročilé architektury počítačů

Pokročilé architektury počítačů Pokročilé architektury počítačů Architektura IO podsystému České vysoké učení technické, Fakulta elektrotechnická A4M36PAP Pokročílé architektury počítačů Ver.1.00 2010 1 Co je úkolem? Propojit jednotlivé

Více

Činnost počítače po zapnutí

Činnost počítače po zapnutí Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Činnost počítače po zapnutí Paměť RWM(Read Write Memory - paměť pro čtení a zápis, označovaná také jako RAM)

Více

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D. Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D. Základní invertor v technologii CMOS dva tranzistory: T1 vodivostní kanál typ N T2 vodivostní kanál typ P při u VST = H nebo L je klidový proud velmi malý

Více

Souhrn Apendixu A doporučení VHDL

Souhrn Apendixu A doporučení VHDL Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku

Více

Architektura procesorů PC shrnutí pojmů

Architektura procesorů PC shrnutí pojmů Architektura procesorů PC shrnutí pojmů 1 Co je to superskalární architektura? Minimálně dvě fronty instrukcí. Provádění instrukcí je možné iniciovat současně, instrukce se pak provádějí paralelně. Realizovatelné

Více

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič Obecné výpočty na GPU v jazyce CUDA Jiří Filipovič Obsah přednášky motivace architektura GPU CUDA programovací model jaké algoritmy urychlovat na GPU? optimalizace Motivace Moorův zákon stále platí pro

Více

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:

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: 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: procesor (mikroprocesor) patici pro numerický koprocesor (resp. osazený

Více

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4 1 Osobní počítač... 2 1.1 Architektura IBM PC... 2 2 Obecně o počítačích... 3 2.1 Co jsou počítače dnes... 3 3 Technické a programové vybavení... 4 3.1 Hardware... 4 3.1.1 Procesor... 4 3.1.2 Sběrnice...

Více

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití.

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Metodický list hardware Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Postupuje od výčtu základních prvků, bez kterých se PC

Více

1. Seznamte se s výukovou platformou FITkit (http://merlin.fit.vutbr.cz/fitkit/).

1. Seznamte se s výukovou platformou FITkit (http://merlin.fit.vutbr.cz/fitkit/). Zadání: Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Technika personálních počítačů, cvičení ITP FITkit Řízení 7mi-segmentového displeje Úloha č. 3. 1. Seznamte se s výukovou

Více

Systémy pro sběr a přenos dat

Systémy pro sběr a přenos dat Systémy pro sběr a přenos dat Centralizované SPD VME, VXI Compact PCI, PXI, PXI Express Sběrnice VME 16/32/64 bitová paralelní sběrnice pro průmyslové aplikace Počátky v roce 1981 neustále se vyvíjí původní

Více

09. Memory management. ZOS 2006, L.Pešička

09. Memory management. ZOS 2006, L.Pešička 09. Memory management ZOS 2006, L.Pešička Správa paměti paměťová pyramida absolutní adresa relativní adresa počet bytů od absolutní adresy fyzický prostor adres fyzicky k dispozici výpočetnímu systému

Více

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

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů Úvod: CHARAKTERISTIKA MODERNÍCH PENTIÍ Flynnova klasifikace paralelních systémů Paralelní systémy lze třídit z hlediska počtu toků instrukcí a počtu toků dat: SI systém s jedním tokem instrukcí (Single

Více

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4 Uložení dat v počítači Data = užitečné, zpracovávané informace Kódování (formát) dat = způsob uložení v počítači (nutno vše převést na čísla ve dvojkové soustavě) Příklady kódování dat Text každému znaku

Více

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných PJC Cvičení #2 Číselné soustavy a binární reprezentace proměnných Číselné soustavy Desítková (decimální) kdo nezná, tak...!!! Dvojková (binární) - nejjednodušší Šestnáctková (hexadecimální) - nejpoužívanější

Více

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

Paměťový podsystém počítače Paměťový podsystém počítače typy pamětových systémů počítače virtuální paměť stránkování segmentace rychlá vyrovnávací paměť 30.1.2013 O. Novák: CIE6 1 Organizace paměťového systému počítače Paměťová hierarchie...

Více

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE 2011 Technická univerzita v Liberci Ing. Přemysl Svoboda ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE V Liberci dne 16. 12. 2011 Obsah Obsah... 1 Úvod... 2 Funkce zařízení... 3 Režim sběru dat s jejich

Více

FPGA + mikroprocesorové jádro:

FPGA + mikroprocesorové jádro: Úvod: V tomto dokumentu je stručný popis programovatelných obvodů od firmy ALTERA www.altera.com, které umožňují realizovat číslicové systémy s procesorem v jenom programovatelném integrovaném obvodu (SOPC

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o. Zpracování obrazu v FPGA Leoš Maršálek ATEsystem s.r.o. Základní pojmy PROCESOROVÉ ČIPY Křemíkový čip zpracovávající obecné instrukce Různé architektury, pracují s různými paměti Výkon instrukcí je závislý

Více

PŘÍLOHA C Požadavky na Dokumentaci

PŘÍLOHA C Požadavky na Dokumentaci PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé

Více

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb. Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb. 1. Informace o přijímacích zkouškách Studijní program: Informatika navazující magisterský

Více

FVZ K13138-TACR-V004-G-TRIGGER_BOX

FVZ K13138-TACR-V004-G-TRIGGER_BOX TriggerBox Souhrn hlavních funkcí Synchronizace přes Ethernetový protokol IEEE 1588 v2 PTP Automatické určení možnosti, zda SyncCore zastává roli PTP master nebo PTP slave dle mechanizmů standardu PTP

Více

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra mikroelektroniky Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce Zadání Stávající

Více