BAKALÁŘSKÁ PRÁCE. České vysoké učení technické v Praze Fakulta elektrotechnická. Simulátor procesoru podorujícího MIPS ISA. katedra řídicí techniky
|
|
- Silvie Bílková
- před 7 lety
- Počet zobrazení:
Transkript
1 České vysoké učení technické v Praze Fakulta elektrotechnická katedra řídicí techniky BAKALÁŘSKÁ PRÁCE Simulátor procesoru podorujícího MIPS ISA Autor: Adam Svoboda Vedoucí práce: Ing. Michal Štepanovský, Ph.D. Praha, 2016
2
3 Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o dodržování etických principů při přípravě vysokoškolských závěrečných prací. V Praze dne Adam Svoboda
4
5 České vysoké učení technické v Praze Fakulta elektrotechnická katedra řídicí techniky ZADÁNÍ BAKALÁŘSKÉ PRÁCE Student: Adam Svoboda Studijní program: Kybernetika a robotika Obor: Systémy a řízení Název tématu: Simulátor procesoru podorujíciho MIPS ISA Pokyny pro vypracování: 1. Identifikujte výhody a nevýhody volně dostupných simulátorů procesoru podporujícího instrukční sadu MIPS. 2. Navrhněte ideové schéma simulátoru s důrazem na oddělení simulace a vizualizace. Zaměřte se i na práci s instrukční a datovou cache. 3. Implementujte simulátor navržený v předchozím bodě ve vybraném programovacím jazyce. 4. Vzhled a funkcionalitu simulátoru přizpůsobte potřebám předmětu A0B36APO Architektury počítačů. 5. Vypracujte dokumentaci a manuál k navrženému simulátoru. 6. Jednotlivé požadavky a postupy konzultujte s vedoucím práce. Seznam odborné literatury: [1] Hennesy, J. L., Patterson, D. A.: Computer Architecture: A Quantitative Approach, Third Edition, San Francisco, Morgan Kaufmann Publishers, Inc., 2002 [2] Hyvl, D.: Simulátor MIPS procesoru, Bakalářská práce, Katedra řídicí techniky, FEL ČVUT v Praze, Vedoucí: Ing. Michal Štepanovský, Ph.D. Platnost zadání: do konce letního semestru 2016/2017 L.S. prof. Ing. Michael Šebek, DrSc. vedoucí katedry prof. Ing. Pavel Ripka, CSc. děkan V Praze dne
6
7 Poděkování Chtěl bych poděkovat Ing. Michalu Štepanovskému, Ph.D. za odborné vedení, za pomoc a rady při zpracování této práce.
8
9 Název práce: Simulátor procesoru podorujíciho MIPS ISA Autor: Adam Svoboda Katedra (ústav): Katedra řídicí techniky Vedoucí bakalářské práce: Ing. Michal Štepanovský, Ph.D. vedoucího: Abstrakt Hlavním cílem této práce je návrh a implementace simulátoru MIPS procesoru. Vedlejším cílem je zhodnocení a porovnání současných simulátorů MIPS procesoru, za účelem identifikace jejich výhod a nevýhod a zapracování těchto poznatků do simulátoru. Tento simulátor může být využit pro pedagogické účely v předmětu A0B36APO, jehož potřebám je přizpůsobeno grafické uživatelské rozhraní. Bude sloužit jako názorná pomůcka při studiu, díky které budou moci studenti lépe pochopit principy chodu procesoru. Klíčová slova: MIPS, assembler, pipeline, grafické uživatelské rozhraní Title: MIPS ISA processor simulator Author: Adam Svoboda Department: Department of control engineering Supervisor: Ing. Michal Štepanovský, Ph.D. Supervisor s address: stepami9@fel.cvut.cz Abstract The main objective of this thesis is to design and implement MIPS processor simulator. The secondary objective is to evaluate and compare the existing MIPS processor simulators, in order to identify their advantages and disadvantages and involve this knowledge in the project. This simulator can be used for educational purposes of the course A0B36APO. Its graphical user interface is adapted to the needs of the course. It will serve as a visual utility during the studies. It will help students understand the principles of the processor better. Keywords: MIPS, assembler, pipeline, graphical user interface ix
10
11 Obsah Zadání práce Abstrakt v ix 1 Úvod 1 2 Popis procesoru Instrukční set Instrukce typu R Instrukce typu I Instrukce typu J Pseudoinstrukce Komponenty Registry Aritmeticko-logická jednotka Řídící jednotka Multiplexor Znaménkové rozšíření Bitový posuv Logická hradla Paměť Hazard unit Implementace procesoru Mips.processor Components.java Instructions.java Parser.java Processor.java SimpleProcessor.java PipelineProcessor Mips.controller Srovnání současných simulátorů Basic MIPS Simulator in JavaScript Uživatelské rozhraní Výhody a nevýhody xi
12 Obsah 4.2 QtSPIM Uživatelské rozhraní Výhody a nevýhody Mars Uživatelské rozhraní Výhody a nevýhody MipsIt Uživatelské rozhraní Výhody a nevýhody Shrnutí Výsledný simulátor Balíček Mips.viewer Hlavní okno Vytvoření procesoru Načtení souboru Přehledy Simulace Vedlejší okna Cache Procesor Příklad simulace Shrnutí 33 Literatura 34 Přílohy I 7 Seznam zkratek II 8 Obsah CD III xii
13 1Kapitola 1 Úvod Procesor MIPS je v principu jedním z nejjednodušších a nejnázornějších procesorů na světě. Je to procesor typu RISC, což znamená, že jeho instrukční sada obsahuje malý počet instrukcí, které představují jednoduché operace. Zkratka MIPS pochází z anglického názvu Microprocessor without Interlocked Pipeline Stages, což v překladu znamená procesor bez pozastavování (uzamykání) vnitřích částí pipeline. Pipeline představuje složitější způsob vykonávání instrukcí, při kterém se vykonává více instrukcí najednou, přičemž každá tato instrukce využívá v každém okamžiku jinou část procesoru. Pokud se o správné rozvrhování instrukcí do procesoru musí starat překladač nebo programátor (tak aby procesor vykonal program dle sémantiky programu), jedná se o tzv. non-interlocked pipeline. V tomto případě procesor nedokáže vykonat správně jisté sekvence na sobě závislých instrukcí. Pokud procesor sám detekuje tyto hazardy, které vnitřně řeší pozastavením frond-end částí pipeline - zavádění tzv. bubbles, jedná se o interlocked pipeline. Dnešní MIPS procesory běžně využívají interlocked pipeline, a proto původní akronym přestává z tohoto pohledu platit a spíše tedy označuje pouze použitou instrukční sadu. Procesory MIPS našly využití zejména v počítačích společnosti SGI, kde se pomocí nich podařilo dosáhnout vysokého výkonu vykreslování 3D scén. Dále se uplatnily v herních konzolích jako jsou PlayStation 2, PlayStation Portable a Nintendo 64[8]. Pro studijní účely byl zvolen pro jeho přehlednou a názornou funkčnost, tedy stejnou délku všech instrukcí a vykonání každé instrukce v jednom cyklu. V první části této práce se zaměříme na zhodnocení a porovnání současných simulátorů MIPS ISA, jako jsou MARS, SPIM, MipsIt a další. Shrneme jejich výhody a nevýhody a podle těchto poznatků se pokusíme navrhnout a realizovat vlastní simulátor, který bude později použit v předmětu A0B36APO[3]. Simulátor by měl být schopen načíst soubor se zapsaným programem ve formátu assembleru a nasimulovat běh tohoto programu. Pro výukové účely je nutné vizualizovat obsah všech registrů, vnější paměti, sledovat plnění instrukční a datové cache a průchod jednotlivých instrukcí procesorem. Instrukční sada není pro tyto účely potřeba celá, bude stačit pouze omezená množina instrukcí. 1
14 2Kapitola 2 Popis procesoru V této kapitole se pokusím popsat princip fungování procesoru. Nejprve popíši instrukční sadu, kterou budeme v simulátoru implementovat, a pak vysvětlím funkce jednotlivých komponent, ze kterých se procesor skládá. 2.1 Instrukční set Instrukce procesoru MIPS mají všechny shodnou délku 32b. Dělíme je do tří typů: R, I, J. Všechny tyto typy mají společný význam pouze pro prvních šest bitů, které označují tzv. opcode, pomocí kterého se dekóduje konkrétní instrukce. Význam ostatních bitů závisí na typu instrukce (Tabulky 2.1, 2.3 a 2.5)[4]. Pro využití v předmětu A0B36APO bude stačit redukovaný instrukční set: add, and, or, sll, slt, sub, lui, ori, addi, lw, sw, beq, bne, la, nop Instrukce typu R opcode rs rt rd shamt funct Tabulka 2.1: Formát instrukce typu R Instrukce typu R jsou instrukce aritmetických a logických operací, které pracují s hodnotami v registrech. Vstupem jsou hodnoty ze dvou registrů, po provedení dané operace se výsledek uloží do třetího registru. Zdrojové registry jsou rs a rt, výsledný registr je rd. Bity 10-6 (shamt 1 ) slouží k uložení informace o případném bitovém posunu. Všechny tyto instrukce mají opcode roven nule, liší se hodnotou funkčního znaku (funct). 1 shift amount 2
15 Instrukční set Instrukce Funct Popis funkce Add rd = rs + rt Sub rd = rs - rt And rd = rs & rt Or rd = rs rt Slt rd = 1 pokud rs < rt, jinak rd = 0 Sll rd = (rt < < shamt) Tabulka 2.2: Přehled instrukcí typu R Instrukce typu I opcode rs rt imm Tabulka 2.3: Formát instrukce typu I Instrukce typu I jsou instrukce aritmetických a logických operací, které pracují s jednou hodnotou z registru a druhou hodnotu nese sama instrukce jako 16-bitový přímý operand uložený ve dvojkovém doplňku. Výsledek operace uloží do druhého registru. Zdrojový registr je rs, výsledný registr je rt. Mezi instrukce typu I řadíme i instrukce, které manipulují s datovou pamětí: lw a sw. Instrukce lw načítá data z adresy, která se vypočítá jako součet hodnoty v registru rs a přímého operandu. Data jsou uložena do registru rt. Instrukce sw pracuje v podstatě stejně, avšak slouží pro uložení dat. Dále mezi instrukce řadíme skokové instrukce beq a bne, které v případě naplnění podmínky provedou skok o určitý počet instrukcí uložený v hodnotě imm. Instrukce Funct Popis funkce Addi rt = rs + imm Lui rt = (imm < < 16) Ori rt = rs imm Lw rt = MEM[rs + imm] Sw MEM[rs + imm] = rt Beq PC += (imm < <) pokud rs == rt Bne PC += (imm < <) pokud rs!= rt Tabulka 2.4: Přehled instrukcí typu I 3
16 Popis procesoru Instrukce typu J opcode target Tabulka 2.5: Formát instrukce typu J Instrukce typu J realizují skok v instrukční paměti na specifickou adresu. Tento simulátor žádnou takovouto instrukci nepodporuje, aby se zachovala jednoduchost procesoru. Skoky lze přesto realizovat pomocí instrukcí bne a beq, které svým formátem patří do instrukcí typu I Pseudoinstrukce Pseudoinstrukce jsou instrukce, které nelze vykonat v jednom cyklu procesoru. V našem simulátoru je podporována pouze jedna pseudoinstrukce: la, která slouží k načtení konkrétní adresy dat uložených překladačem. Instrukce se rozloží na instrukci lui a ori, přičemž lui načte horních 16 bitů adresy a ori dolních 16 bitů. la rt, address lui rt, high(address) ori rt, low(address) 2.2 Komponenty Jednotlivé komponenty, ze kterých se procesor skládá, jsou vidět ve schematickém zapojení na obrázku 2.1. S náběžnou hranou hodin se překlápí program counter (PC) a na sběrnici je vystavena adresa následující instrukce. Komponenta instrukční paměti načte strojový kód instrukce, který postupuje do instrukčního registru, kde se interpretuje jeho obsah. Řídící jednotka přijímá operační a funkční kód, soubor registrů přijímá adresy zdrojových registrů a přímý operand postupuje přes komponentu znaménkového rozšíření. Řídící jednotka nastaví multiplexory podle popisu dané instrukce, data z registrů a přímý operand postupují do aritmeticko-logické jednotky, kde se provede zvolená operace. Dále je vyhodnocen případný podmíněný skok a mohou být vyčtena data z paměti. Výsledek operace je pak s příchodem nové náběžné hrany hodin zapsán do registrů nebo paměti a program counter se opět překlápí na další instrukci[1]. 4
17 Komponenty Obrázek 2.1: Schéma jednoduchého jednocyklového procesoru[3] Registry Registr je úložiště dat přímo v procesoru. Přístup k datům uložených v registrech je mnohem rychlejší než příštup k datům, která jsou uložena v paměti počítače, proto se v nich ukládají pracovní hodnoty. Procesor MIPS má 32 registrů, které jsou 32-bitové. Registr 0 je nastaven tak, aby vždy obsahoval hodnotu 0. Ostatní pracovní registry nejsou nijak omezené. Dalším specifickým registrem je tzv. program counter, ve kterém je uložena adresa instrukce, která se vykonává. Strojový kód vykonávané instrukce je uložen v instrukčním registru, který zajišťuje čtení jednotlivých částí strojového kódu instrukce (Tabulky 2.1, 2.3, 2.5). Komponenta, která zajišťuje přístup k pracovním registrům má dva 5-bitové vstupy pro výběr registrů ke čtení, jeden 5-bitový vstup pro výběr registru k zápisu, jeden 32-bitový vstup pro zapisovanou hodnotu, dva 32-bitové výstupy pro čtení ze zvolených registrů a jeden řídicí vstup, který ovlivňuje zda proběhne zápis. Zápis probíhá vždy s náběžnou hranou hodinového impulzu, čtení probíhá nezávisle na hodinovém impulzu Aritmeticko-logická jednotka Aritmeticko-logická jednotka 2 je jedna ze stěžejních komponent procesoru. Vykonává aritmetické a logické oprace, čímž tvoří podstatu funkce celého procesoru. Má dva 32-bitové vstupy 2 zkratkou ALU 5
18 Popis procesoru pro operandy, jeden 32-bitový výstup pro výsledek operace, jeden 1-bitový příznak, který indikuje, zda je na výstupu ALU nula 3, a jeden 3-bitový vstup pro řídicí signál, kterým dává řídící jednotka aritmeticko-logické jednotce informaci, kterou operaci má provést. Jednotlivé operace (Tabulka 2.6) přímo souvisí s funkčním kódem instrukcí typu R (Tabulka 2.2). Operace Řídicí signál Popis And 000 bitový součin vstupních operandů Or 001 bitový součet vstupních operandů Add 010 aritmetický součet vstupních operandů Sll 011 logický bitový posuv prvního operandu vlevo o hodnotu druhého operandu Lui 100 logický bitový posuv vlevo o 16 bitů Sub 101 aritmetický rozdíl vstupních operandů Slt 110 porovnání operandů, pokud je první menší než druhý, výsledek je 1, jinak 0 Tabulka 2.6: Popis aritmetický a logických operací Řídící jednotka Řídící jednotka je jakýmsi mozkem procesoru. Dekóduje vykonávané instrukce pomocí jejich operačního a funkčního kódu (tabulky 2.2 a 2.4) a nastavuje řídicí signály, kterými ovlivňuje interpretaci strojového kódu instrukce, jednotlivé multiplexory a další komponenty tak, aby každá instrukce prošla procesorem správně. Jednotlivé řídicí signály jsou uvedeny v tabulce 2.7 a nastavení jejich hodnot se řídí tabulkou 2.8. Další řídicí signály souvisí s organizováním pipeline a budou vysvětleny později. Název MemToReg MemWrite BranchBeq BranchBne ALUControl SllSrc AluSrc RegDest RegWrite Význam vybírá, zda se do registrů bude zapisovat hodnota z paměti nebo výsledek ALU určuje, zda se v následujícím hodinovém cyklu bude zapisovat do paměti detekce skokové instrukce beq detekce skokové instrukce bne 3-bitová hodnota, nastavuje operaci ALU vybírá první operand ALU vybírá druhý operand ALU vybírá regsitr pro zápis výsledku operace určuje, zda se v následujícím hodinovém cyklu bude zapisovat do registrů Tabulka 2.7: Řídicí signály 3 tuto hodnotu využívá řídící jednotka při vyhodnocování podmíněných skokových instrukcí 6
19 Komponenty Instrukce MR MW Beq Bne ALU SS AS RD RW Add And Or Sll Slt Sub Lui Addi Lw Sw Beq Bne Ori Tabulka 2.8: Nastavení řídích signálů Multiplexor Multiplexor je komponenta, která má více vstupů, jeden výstup a jeden řídicí vstup. Na výstup je přepnut jeden ze vstupů, vybraný pomocí řídicího signálu Znaménkové rozšíření Instrukce typu I v sobě nesou 16-bitový přímý operand. Procesor pracuje avšak s 32-bitovými čísly, takže je potřeba tento operand znaménkově rozšířit, tedy pokud je záporný, doplnit zleva jedničkami, pokud je kladný, nulami Bitový posuv Skokové instrukce Beq a Bne v sobě nesou informaci o kolik instrukcí se bude skákat. Jelikož jsou instrukce v paměti slovně zarovnány, je adresa sousední instrukce vždy o čtyři vyšší. Bitový posun o dvě místa vlevo v podstatě znamená násobení čtyřmi. Tato komponenta tedy získá na vstupu přímý operand skokové instrukce a na výstup dává hodnotu, kterou je potřeba pro provedení daného skoku přičíst k program counteru Logická hradla Pro vyhodnocení skokových instrukcí potřebujeme 1-bitová logická hradla and, or a negaci. Ke skoku dojde pokud máme instrukci bne a zároveň nejsou operandy shodné, nebo pokud máme instrukci beq a zároveň jsou operandy shodné. 7
20 Popis procesoru Paměť Navržený simulátor nepodporuje virutální pamět, veškeré adresy jsou fyzické. Hlavní pamět o velikosti 4KB je rozdělena na dvě části - pamět programu (dolní 2KB) a pamět dat (horní 2KB). Pro názornost je v simulátoru tato pamět viualizována dvěma samostatnými komponentami (instrukční a datová pamět), aby bylo na první pohled zřejmé, že se jedná o výběr instrukce z paměti nebo o přístup k datům. Nicméně nevhodný programátorský přístup může zapříčinit, že program counter (PC) nabyde hodnot náležicích paměti dat, a tak může procesor nesprávně interpretovat data jako instrukce. Takové chování je v souladu s principem von Neumannovy architektury. Instrukční paměť Do instrukční paměti jsou překladačem assembleru nahrány instrukce programu v pořadí, ve kterém budou vykonávány. Komponenta instrukční paměti vybírá strojový kód instrukce, která bude vykonávána, na základě adresy, kterou získá z program counteru. Přístup do paměti není přímý, ale obvykle probíhá přes instrukční cache. Pamět je slovně zarovnána, tedy adresa následující instrukce je vždy o čtyři vyšší. Datová paměť Datová pamět slouží k uložení dat, na která už není místo v registrech. Může být naplněna překladačem assembleru. Komponenta datové paměti funguje podobně, jako komponenta instrukční paměti, tedy na základě vstupní adresy dodává na výstup příslušná data. Do datové paměti lze však data i ukládat, což je řízeno řídicím signálem MemWrite. Komponenta má tedy jak vstup pro adresu, tak vstup pro ukládaná data. Zápis do paměti probíhá podobně jako u registrů s náběžnou hranou hodinového cyklu, čtení pak kdykoli během hodinového cyklu. K paměti se opět přistupuje skrze cache a i tato pamět je slovně zarovnána Hazard unit Hazard unit je komponenta, která má význam pouze u procesoru vykonávajích instrukce zřetězeně. Při zřetězeném vykonávání totiž může docházet k různým hazardům. V principu rozdělujeme hazardy do dvou skupin: datové a řídicí. Datový hazard vznikne, pokud instrukci, která upravuje hodnotu v registru X, následuje instrukce, která čte hodnotu z regsitru X. Hodnota, kterou druhá instrukce čte, není platná, protože zápis nové hodnoty se děje později než toto čtení. Řídicí hazard souvisí s podmíněnými skokovými instrukcemi. Při náčítání následujících instrukcí není známo, zda se bude provádět skok. To znamená, že pokud se skok provede, instrukce načtené po dané skokové instrukci je pořeba z procesoru vymazat. 8
21 Komponenty Toto se dá vyřešit vhodnou skladbou instrukcí za sebou, ale to nelze vždy provést. Proto je v procesoru hazard unit, která dokáže tyto hazardy identifikovat a vyřešit. Datový hazard se řeší přeposláním hodnoty na místo, kde je potřeba, pokud jde o data, která již v procesoru jsou, nebo pozastavením, pokud jde o čtení dat z paměti. Toto je fyzicky zvládnuto pomocí čtyř multiplexorů a oddělovacích registrů. Řídicí hazard se nijak efektivně řešit nedá, procesorovou pipeline je třeba vyprázdnit. 9
22 3Kapitola 3 Implementace procesoru Pro implementaci procesoru jsem zvolil jazyk Java z důvodu snadné přenositelnosti na různé platformy. V rámci objektového návrhu jsem se nechal inspirovat návrhovým vzorem MVC 1 a celý projekt rozdělil do tří balíčků 2 : mips.procesor, která zajišťuje výpočetní část simulátoru mips.viewer, která obsahuje grafické uživatelské rozhraní mips.controller, která obě části propojuje. Balíček mips.viewer, ve kterém jsou implementovány ovládací a zobrazovací prvky simulátoru, si probereme samostatně v kapitole 5, protože tyto funkce budou přímo záviset na závěrech z kapitoly 4. Zbývající dva balíčky si popíšeme zde. 3.1 Mips.processor Tento balíček tvoří jakési jádro simulátoru. Obsahuje několik veřejných a několik neveřejných tříd popsaných v souborech v tabulce 3.1: Soubor Components.java Instructions.java Parser.java Processor.java SimpleProcessor.java PipelineProcessor.java Popis definuje třídy komponent, tyto třídy nejsou veřejné definuje třidu instrukcí a dekodér instrukcí definuje objekt, který načítá soubor v assembleru abstraktní třída definující základní atributy a funkce procesoru třída, která implementuje nezřetězený procesor, dědí z Processor třída, která implementuje zřetězený procesor, dědí z Processor Tabulka 3.1: Source package: mips.processor 1 model-view-controller 2 source packages 10
23 Mips.processor Components.java Výpočetní část procesoru je vystavěna podle obrázku 3.1 a komponenty zastávají své funkce tak, jak jsme si je popsali v kapitole 2. Objekty jednotlivých komponent jsou mezi sebou propojeny sběrnicemi, které jsou implementovány také pomocí objektů[2]. Třída symbolizující sběrnici se jmenuje Wire a uchovává hodnotu data (int) a name (String). Nabízí dvě jednoduché metody void setdata(int data) a int getdata(), pomocí kterých probíhá výměna dat po sběrnici. Všechny komponenty pak mají pro každý vstup nebo výstup jeden objekt typu Wire, kterým jsou vzájemně propojeny. Pro implementaci funkce jednotlivých komponent jsem vytvořil dvě rozhraní 3 : Updateable, definující metodu void update(), která charakterizuje funkci komponenty v hodinovém cyklu Preupdateable, definující metodu void preupdate(), která charakterizuje fuknci komponenty v náběžné hraně hodinového cyklu. Většina komponent implementuje pouze jedno rozhraní (vetšinou Updateable), některé komponenty ale implementují obě rozhraní najednou. Pokud má tedy komponenta např. dva vstupy a jeden výstup, po zavolání metody update() si pomocí funkcí getdata() na svých vstupních sběrnicích přečte vstupní data, provede svou charakteristickou funkci, kterou v procesoru zastává, a zapíše výsledek na výstupní sběrnici pomocí metody setdata(). Register Tato třída je velmi jednoduchá. Implementuje rozhraní Preupdateable a obsahuje pouze jednu výstupní a jednu vstupní sběrnici. Po zavolání metody preupdate() jednoduše přepíše vstupní hodnotu na výstup. Tento objekt tedy funguje jako jakýsi oddělovač hodnot. V jednocyklovém procesoru ho využijeme pouze jako program counter. Ve zřetězeném se pomocí něj oddělují jednolivé části pipeline. Pro tyto účely jsou zde zděděny další variatny registrů: ControlledRegister, ControlledRegisterClr a ControlledRegisterEnClr, které mají zapojeny ještě řídicí signály z hazard unit. Tyto registry tedy mohou být pozastaveny nebo vymazány. Pracovní registry mají na obsluhu vlastní komponentu RegisterFile, které stačí uchovávat jejich hodnoty v poli objektů typu Wire. Tato komponenta implementuje obě rozhraní, protože podporuje zápis i čtení. Zápis je řízen řídicím vodičem RegWrite. Pokud je na tomto vodiči hodnota 1, komponenta v metodě preupdate() zapisuje do zvoleného registru vstupní hodnotu. Čtení probíhá v každém cyklu, metodou update() se vyčtou příslušné registry na výstupní sběrnice. 3 java interface 11
24 Implementace procesoru Polední komponentou, která připadá v úvahu, je instrukční registr, který z důvodu mnoha výstupů tvoří vlastní třídu InstructionRegister. Vstupní hodnotou je strojový kód instrukce, která je potřeba rozdělit na jednotlivé významové úseky bitů podle tabulky 3.2 (příp. tabulek 2.1, 2.3, 2.5). Toto se děje pomocí jednoduché maskovací funkce int getbits(int number, int startbit, int endbit). Výstupem instrukčního registru jsou všechny významové úseky všech typů instrukcí najednou[4]: operační kód zdrojový registr zdrojový/cílový registr cílový registr hodnota posunu 10-6 funkční kód 5-0 přímý operand 15-0 Tabulka 3.2: Význam jednotlivých úseků strojového kódu všech typů instrukcí SignExtension Tato komponenta přebírá 16-bitové číslo, uložené ve dvojkovém doplňku, a jejím výstupem má být stejná hodnota, uložená jako 32-bitové číslo. Je tedy potřeba vstupní hodnotu znaménkově rozšířit, což znamená pro kladná čísla doplnit zleva nulami, pro záporná čísla doplnit zleva jedničkami. Znaménkový bit se vyčte pomocí masky 0x , kladné číslo pak doplní Java automaticky nulami, záporné je třeba logicky sečíst s hodnotou 0xFFFF0000. Multiplexor Multiplexor zapisuje na svůj výstup jednu ze vstupních hodnot v závislosti na hodnotě řídicího signálu. V nezřetězeném procesoru využijeme pouze dvouvstupový multiplexor, ve zřetězeném i třívstupový. ALU Aritmeticko-logická jednotka pracuje se dvěma vstupy, jedním řídicím vstupem, jedním normálním výstupem a jedním výstupem zero. V metodě update() je použit jednoduchý switch na hodnotu přijatou z řídicí sběrnice. Podle této hodnoty se provede příslušná operace, tak jak bylo popsáno v tabulce 2.6. U této komponenty lze velmi dobře využít dědičnosti a implementovat pomocí ní další logické a aritmetické obvody, které se v návrhu objevují: bitový posun, sčítání, logické and, or a ekvivalence. 12
25 Mips.processor ControlUnit Řídící jednotka má dvě vstupní hodnoty: operační a funkční kód instrukce. Výstupy z řídící jednotky jsou všechny řídicí vodiče v procesoru, např. multiplexory, ALU atd. Pro dekódování instrukce využívá objekt InstructionDecoder, který podle přijatého operačního a funkčního kódu vrací objekt dekódované instrukce, jenž v sobě uchovává hodnoty jednotlivých řídicích vodičů v procesoru. Řídící jednotka tedy pouze nastaví tyto hodnoty na příslušné vodiče. Memory Třída Memory symbolizuje externí pamět. Je implementována jako pole datových typů byte s maximálním počtem 4096 prvků, tedy pamět má velikost 4 KB. Jednotlivá slova se ukládají po vzoru big-endianu. Pamět je společná pro data i pro instrukce, jediné oddělení spočívá v rozdílných bázových adresách, které lze nastavit v konstruktoru. Komponenta pracující s pamětí má jako vstup 32-bitovou adresu a musí umět uložit/vyčíst 32-bitové slovo. Vzhledem k tomu, že je pamět slovně zarovnána, je třeba přistupovat vždy k začátku slova. Adresa je tedy nejprve přepočtena na začátek slova (pokud ukazuje do nějaké jiné části) a pak jsou uloženy/vyčteny čtyři následující bajty. Pro načítání instrukcí stačí komponenta, která nabízí jen čtení, na což potřebuje vstupní adresu a nastavuje výstupní slovo. Do datové paměti lze i zapisovat, tedy potřebuje jeden vstup pro ukládané slovo navíc. Čtení z obou pamětí probíhá metodou update(), zápis do datové paměti metodou preupdate(). Tyto komponenty nepřistupují k paměti přímo, ale skrze objekt typu Cache, který představuje mezipamět. Aby byla u cache volně nastavitelná velikost bloku, počet setů a stupeň asociativity, vytvořil jsem pro ni pyramidový model sestávající ze tříd: Row, SimpleCache, Cache. Row představuje jeden řádek v jednoduché jednocestně associované cache, který má atributy tag, valid bit, dirty bit, data[]. SimpleCache představuje jednocestně asociovanou cache a obsahuje tedy pole řádků (objektů typu Row). Tento objekt je také jediný, který má přístup přímo do paměti a obsluhuje finální čtení a zápis. Cache pak představuje obecnou n-cestně asociovanou cache (obsahuje pole objektů typu SimpleCache). Dále možné nastavit, zda se data zapsaná do cache propisují do paměti rovnou, nebo až při nutnosti načíst místo zapsaných dat nová data. Pro vybrání bloku, který bude nahrazen není implementován žádný vyšší algoritmus, výběr probíhá náhodně. HazardUnit HazardUnit se uplatní pouze v zřetězeném procesoru. Má několik vstupů z různých sběrnic v procesoru, protože potřebuje porovnávat adresované registry z různých stupňů pipeline a vy- 13
26 Implementace procesoru hodnocovat podmínky skokových instrukcí. Lze ji v konstruktoru vypnout, pokud nemá do běhu procesoru nijak zasahovat. Řízení chodu procesoru probíhá pomocí několika multiplexorů, které jsou umístěny před ALU a před Ekvivalencí, která vyhodnocuje skokové instrukce. Dále je HazardUnit schopná pozastavit nebo vymazat první tři části pipeline z důvodu uskutečněného podmíněného skoku, při kterém jsou v procesoru nahrány neplatné instrukce, které se nemají provádět. Logika přeposílání: k přeposlání dojde, pokud se bude zapisovat do registru, ze kterého se v následující instrukci bude číst. Logika pozastavení: k pozastavení dojde, pokud se budou zapisovat data z paměti do registru, ze kterého se v následující instrukci bude číst Logika vyprázdnění: k vyprázdnění dojde, pokud je vyhodnocena podmínka skokové instrukce jako platná Instructions.java V této třídě je definována jakási knihovna instrukcí v podobě ArrayListu, ve kterém jsou uložené objekty typu Instruction. Každý tento objekt má identifikační atributy (name, tag, opcode, funct) a hodnoty jednotlivých řídicích signálů pro ControlUnit. Pro dekódování je zde implementován objekt InstructionDecoder, který poskytuje funkce na dekódování: Instruction getinstrbyopcodeandfunct(int opcode, int funct), Instruction getinstrbyopcode(int opcode), Instruction getinstrbytag(string tag). První dvě jsou využívány řídící jednotkou, tu poslední využívá parser, který překládá assembler do strojového kódu Parser.java Tato třída se stará o přečtení vstupního souboru s programem v assembleru a naplnění instrukční paměti strojovými kódy instrukcí. Čtení je rozdělenu do dvou částí. V první části se načtou definice registrů a datová pamět se naplní daty zapsanými v části.data. Ve druhé části se načte sekce.text, která obsahuje instrukce i s navěštími, která mohou být použita ve skokových instrukcích. Parser otevře přijatý soubor a prochází jej řádek po řádku. Jednotlivé řádky jsou rozděleny na slova pomocí funkce split(" "), která rozdělí string podle mezer. Další postup se řídí podle prvního slova v řádku. Při prvním průchodu se interpretují pouze řádky, která začínají #define nebo jsou v sekci.data. Ve druhém průchodu se podle prvního slova na řádku buď vytvoří návěští nebo načte instrukce podle svého tagu. 14
27 Mips.processor Překlad definic registrů a načtení datových položek Definice registrů se předpokládají ve tvaru: #define XX $Y. Tuto formulaci interpretuje překladač tak, že registr číslo Y je v textu označován značkou XX. Např.: #define s0 $2. Definice dat se předpokládá ve tvaru: var:.word A, B, C... Toto se interpretuje jako pole hodnot, které se ukládají do datové paměti, a adresa začáku pole je zapamatována překladačem pod aliasem var. Tento alias může být později použit v instrukci la. Např.: pole:.word 1, 2, 3. Načtení instrukcí Definice instrukce závisí na typu instrukce. Instrukce typu R se předpokládá ve tvaru: tag rs, rt, rd, kde registry mohou být zapsány pomocí symbolu dolaru nebo pomocí definovaných značek. Např.: add $2, s0, $3. Pokud se jedná o instrukci sll, poslední registr je nahrazen konstantou. Např.: sll $1, $2, 2. Instrukce typu I se předpokládá ve tvaru: tag rs, rt, imm, kde registry mohou být zapsány stejně jako u typu R, přímý operand může být v decimální nebo hexadecimální soustavě. Např.: addi s1, $0, 10. Pokud se jedná o skokovou instrukci beq nebo bne, přímý operand je nahrazen návěštím cílové instrukce. Např.: bne t1, t2, loop. Pokud se jedná o instrukci lw nebo sw, je očekáván formát: lw rt, offset(rs), kde offset může být zapsán formálně stejně jako přímý operand. Např.: lw s0, 4($5). Závorku je nutné psát i pokud je offset roven nule. Instrukce la se předpokládá intuitivně ve tvaru: la rs, var. Např.: la s0, pole Processor.java Processor je abstraktní třída, která v sobě definuje základní atributy, jenž budou společné pro oba její potomky, jimiž budou jednocyklový a zřetězený procesor. Definuje základní komponenty, paměti, jejich bázové adresy, cache a abstraktní metodu void clock(), která provede jeden cyklus procesoru. Dále si tento objekt inicializuje parser a načte vstupní soubor. Tuto třídu budeme také využívat k pozorování procesoru skrze grafické uživatelské prostředí. Pro tyto potřeby jsou zde metody pro čtení dat ze základních komponent SimpleProcessor.java Nyní se dostáváme ke stavbě samotného procesoru. Tato třída dědí základní atributy ze třídy Processor a velké množství atributů, zvláště všechny atributy typu Wire, si zde definuje sama. V konstruktoru pak inicializujeme všechny sběrnice a komponenty tak, abychom získali funkční jednocyklový procesor z obrázku
28 Implementace procesoru Obrázek 3.1: Schématický obrázek propojení komponent jedno-cyklového procesoru[3] Zásadní pro funkci procesoru je implementace metody void clock(), která charakterizuje, v jakém pořadí budou jednotlivé komponenty aktualizovat své výstupní hodnoty. V jednocyklovém procesoru je nejdůležitejší oddělit od sebe náběžnou hranu hodin a aktivní dobu hodin. S náběžnou hranou je třeba aktualizovat programový čítač, pamět registrů a datovou pamět. Zbytek komponent lze aktualizovat postupně, jak se propagují hodnoty procesorem, tedy zleva doprava PipelineProcessor Zřetězený procesor je v principu podobně vystavěn jako jednocyklový procesor. Obsahuje mnohem více sběrnic a více dalších komponent, které jeho popis zesložiťují. Při popisu se držíme obrázku
29 Mips.controller Obrázek 3.2: Schématický obrázek propojení komponent zřetězeného procesoru[3] Pro funkci zřetězeného procesoru jsou kromě komponent reagujících na náběžnou hranu důležité registry, které oddělují jednotlivé stupně pipeline. Funkci void clock() zde můžeme rozdělit do dvou oddělených funkcí void compute() a void pipeline(), které vykonáme postupně. Funkce compute() aktualizuje všechny komponenty, vypadá tedy podobně jako funkce clock() u jednocyklového procesoru s tím rozdílem, že nakonec přidává aktualizaci HazardUnit. Funkce pipeline() pak překlopí vypočtené hodnoty do dalšího stupně pipeline a teprve tím končí jeden cyklus. Překlápění se děje aktualizací všech oddělujících registrů. 3.2 Mips.controller V tomto balíčku se nachází jediná spustitelná třída s názvem MIPSSimulator a jedna řídící třída s názvem Controller. Třída Controller propojuje všechny balíčky dohromady a tvoří kostru programu. Udržuje si referenci na Simulator (grafická část programu) i na Processor (výpočetní část programu). Tyto objekty mají referenci pouze na Controller, čímž lze dosáhnout vyšší přehlednosti a bezpečnosti programu. Všechny požadavky uživatele, které pocházejí z uživatelského rozhraní, jsou tedy obslouženy skrze tuto třídu. Program tedy po spuštění ve třídě MIPSSimulator vytvoří objekt typu Controller, čímž se rozeběhne celý program. 17
30 4Kapitola 4 Srovnání současných simulátorů Abychom byli shopni navrhnout uživatelsky co možná nejlepší simulátor, je třeba se porozhlédnout po již vytvořených simulátorech a zhodnotit jejich klady a zápory, ze kterých pak budeme vycházet při vlastním návrhu. 4.1 Basic MIPS Simulator in JavaScript Tento simulátor se nachází na adrese: Jde o velmi jednoduchý simulátor napsaný v javascriptu. Implementovaný procesor obsahuje pětistupňovou pipeline bez ošetřených hazardů, tedy nepodporuje přeposílání, pozastavení ani vyprázdnění. 18
31 Basic MIPS Simulator in JavaScript Uživatelské rozhraní Obrázek 4.1: Basic MIPS Simulator Simulátor obsahuje prostý editor assembleru, přehled registrů, přehled paměti a výstupní konzoli. Editor nezvýrazňuje syntax, takže pro přímé psaní assembleru není moc praktický. Při vykonávání instrukcí se obarví řádky, které jsou momentálně vykonávány. Přehled registrů lze překliknout na přehled pipeline s vypsanými vykonávanými instrukcemi a řídicími signály. Hodnoty lze zobrazit hexadecimálně nebo decimálně. Pamět je vypsána v přehledné tabulce a lze v ní i vyhledávat přímo podle adresy. Výstupní konzole informuje o stavu procesoru a případně slouží jako výstup simulovaného programu. Simulace lze spustit celá, nebo procházet krok po kroku. Po skončení ji lze restartovat Výhody a nevýhody Mezi výhody bych uvedl možnost zobrazení procházejících instrukcí v pipeline, krokování simulace a zvýrazňování vykonávaných řádků v kódu. Další výhodou může být jeho dostupnost na internetu. Hlavní nevýhodou je vykonávání instrukcí v pipeline bez ošetřených hazardů. Dalším nedostatkem je chybějící dokumentace se seznamem podporovaných instrukcí. 19
32 Srovnání současných simulátorů 4.2 QtSPIM SPIM (MIPS pozpátku) je soběstačný simulátor MIPS procesoru, který podporuje téměř kompletní instrukční sadu. Byl navržen jak pro studijní, tak pro vývojové účely. Je napsán v jazyce C a jeho nejnovější verze, QtSPIM, je napsána v jazyce C++ a využívá QT knihovnu pro grafické uživatelské rozhraní, díky čemuž může běžet na všech třech hlavních platformách 1 ve stejné verzi[6] Uživatelské rozhraní Obrázek 4.2: QtSPIM Tento simulátor na rozdíl od předchozího neobsahuje žádný editor assembleru a soubory *.s se do něj musí importovat. Pokud dojde při překladu k chybě, je potřeba soubor opravit v externím editoru. Simulátor má čistě textovou podobu, takže nabízí klasický textový náhled do registrů a do datové a instrukční paměti. Tato oddělení lze otevřít do samostatných oken, což dovoluje uživateli nastavit si rozhraní jak potřebuje. Data v registrech lze zobrazit ve třech formátech: decimálním, hexadecimálním a binárním a lze je při simulaci manuálně měnit. Nástroje pro simulaci nalezneme jak v nabídce File, tak i jako tlačítka přímo v okně. Simulovat můžeme celý program najednou, nebo postupovat klasicky po krocích. Dále můžeme využít možnost debugování s breakpointy. Po simulaci lze simulátor restartovat do původní polohy. 1 Windows, Mac OS X a Linux 20
33 Mars Výhody a nevýhody Hlavní výhodou je dle mého názoru podpora téměř kompletní instruikční sady MIPS, díky čemuž lze tento simulátor využívat i pro vývojové účely. S tím souvisí i možnost breakpointů a manuálního měnění obsahu registrů. Nevýhodou je absence editoru assembleru a hlavně jakéhokoliv grafického znázornění chodu procesoru. 4.3 Mars MARS 2 je jedním z nejpoužívanějších simulátorů obzvlásť pro výukové účely. Byl navržen na univerzitě v Missouri a byl implementován podle publikace Computer Organization and Design s ohledem na potřeby profesorů a studentů. Je napsán v Javě, takže je stejně jako QtSPIM nezávislý na platformě, ale nemá bohužel implementovanou pipeline 3. Podporuje většinu instrukcí a pseudoninstrukcí z MIPS ISA 4 a i některá systémová volání, přičemž jsou všechny tyto funkce podrobně zdokumentovány v nápovědě přímo v simulátoru[7] Uživatelské rozhraní Obrázek 4.3: MARS Simulátor MARS má velmi bohaté grafické uživatelské rozhraní. Obsahuje velmi propracovaný editor assembleru a dovoluje nastavit si simulační okno podle svých představ. Kromě tradičních 2 Mips Assembly and Runtime Simulator 3 zřetězené vykonávání instrukcí 4 instrukční set 21
34 Srovnání současných simulátorů nástrojů týkajících se samotné simulace (krokování, breakpointy) nabízí ještě řadu rozšiřujících nástrojů, mezi které patří například prediktor skokových instrukcí, cachování datové paměti a pedagogicky velmi povedený nástroj MIPS X - Ray, který dovoluje pozorovat průchod instrukce procesorem krok po kroku a jednotlivé kroky vykresluje na schematickém obrázku procesoru Výhody a nevýhody Výhod nalezneme u tohoto simulátoru opravdu mnoho. V první řadě je to velmi praktický editor assembleru, který má implementováno obarvování textu a automatické doplňování. Dále má velmi dobře ovladatelnou simulaci. Dovoluje spustit simulaci zvolenou rychlostí, např. 1 instrukce za sekundu. Nabízí kromě klasického krokování i krokování zpět. Velkým plusem jsou hlavně již zmíněné doplňující a rozšiřující nástroje v čele s MIPS X - Ray, který je velmi názornou pomůckou k výuce. Jediným nedostatkem je absenece zřetězeného vykonávání instrukcí, které je ale podstatnou částí funkcionality a principu chodu MIPS procesoru. 4.4 MipsIt MipsIt byl stejně jako MARS vyvinut přímo pro výuku a implementován podle publikace Computer Organization and Design. Podporuje většinu instrukcí MIPS ISA a momentálně je využíván jako pomůcka při výuce v předmětu A0B36APO. Obsahuje praktický editor a několik simulátorů[5] Uživatelské rozhraní Obrázek 4.4: MispIt 22
35 Shrnutí V editoru je možné zapsat program v assembleru nebo v C. Velmi praktické je stejně jako v editoru MARSu zvýrazňování syntaxe a psaní komentářů. Editor funguje také jako překladač a kompilátor pro simulátory. MipsIt obsahuje tři oddělené simulátory. Jeden pro jednoduchý nezřetězený procesor, jeden pro jednoduchý zřetězený procesor a jeden úplně zřetězený. Formálně vypadají okna všech tří simulátorů stejně. Podporují cachování obou pamětí včetně nastavení parametrů cache. Dále lze zobrazit přímo paměťová úložiště a vstupně výstupní sběrnici, která je znázorněna spínači a LED diodami. Simulace lze opět spustit celá nebo lze postupovat po jednotlivých krocích. V zřetězených simulátorech lze zobrazit schéma procesoru a sledovat změny hodnot na jednotlivých komponentách Výhody a nevýhody Mezi výhody můžeme zařadit podobně jako u MARSu praktický editor a schématický nákres procesoru, který pomáhá k pochopení principu fungování procesoru. Velmi dobře působí i nastavitelné cache. Nevýhodou může být absence schématického znázornění nezřetězeného procesoru a trochu nepohodlná práce s kompilátorem. 4.5 Shrnutí V této kapitole jsme se pokusili jednoduše popsat čtyři vybrané simulátory procesoru MIPS a zhodnotit jejich klady a zápory. Nejlepé byly hodnoceny simulátory MARS a MipsIt, protože nabízejí názorné schematické obrázky procesoru, které jsou při výuce velkou výhodou. Výsledkem této kapitoly je následující seznam vlastností dobrého simulátoru: zobrazení registrů, pipeline, pamětí možnost přímého vstupu do registrů a pamětí debug s breakpointy, krokování vpřed i vzad, nastavení rychlosti zpracovávání instrukcí zvýrazňování zpracovávaných instrukcí a jejich pozic v pipeline vizualizace průchodu instrukce procesorem prediktor skokových instrukcí cachování pamětí editor se zvýrazňováním syntaxe 23
36 5Kapitola 5 Výsledný simulátor V předchozí kapitole jsme si ujasnili, jaké vlastnosti by měl dobrý simulátor mít. Vzhledem k tomu, že simulátor je určen výhraně k výukovým účelům, hlavní důraz by měl být kladen na přehlednost a názornost simulace. V rozsahu bakalářské práce není možné vytvořit simulátor, který by splňoval všechny body zmíněné v závěru 4. kapitoly, a proto vybereme jen ty nejdůležitější. K implementaci využijeme knihovnu javax.swing, která vyhovuje technickým i estetickým požadavkům. 5.1 Balíček Mips.viewer Nejprve si stručně popíšeme jednotlivé třídy, které tvoří GUI 1 programu. Název třídy Simulator.java formsimulator.java formprocessor.java viewprocessor.java viewsimpleprocessor.java viewpipelineprocessor.java viewcache.java Popis základní kámen celého GUI, zajištuje komunikaci se zbytkem programu hlavní okno simulátoru s hlavními ovládacími prvky okno, pro nastavení parametrů simulovaného procesoru interface definující metody pro vykreslování chodu dat procesorem okno, pro názorné vykreslování chodu dat jednocyklovým procesorem okno, pro názorné vykreslování chodu dat zřetězeným procesorem okno, pro vykreslení obsahu cache pamětí Tabulka 5.1: Přehled balíčku Mips.viewer Třída Simulator se stará o řízení běhu celého GUI. Na začátku vytváří nové vlákno, ve kterém uživatelské rozhraní běží, a při běhu programu otevírá nová okna a nastavuje jejich vlastnosti v závislosti na volbách uživatele. Pro přístup do výpočetní části programu využívá třídu Controller, skrze kterou řídí spouštění a parametrizaci simulace. Ostatní třídy (kromě viewprocessor, což je pouze interface) už zastávají v programu specifickou grafickou funkci, takže si je popíšeme z pohledu uživatelského použití celého simulátoru. 1 graphical user interface 24
37 Hlavní okno 5.2 Hlavní okno Obrázek 5.1: Hlavní okno simulátoru Po spuštění simulátoru se nám zobrazí hlavní okno (obrázek 5.1). Okno je inspirováno přímo simulátorem MARS. Kromě hlavního menu v záhlaví obsahuje tři tabulky a několik tlačítek pro ovládání simulace a vzhledu. V hlavním menu se po spuštění velmi snadno intuitivně zorientujeme, protože nabídky, které nejsou momentálně k dispozici jsou zablokované Vytvoření procesoru Nový procesour můžeme vytvořit kliknutím na možnost Processor - New, která otevře příslušné dialogové okno (obrázek 5.2). 25
38 Výsledný simulátor Obrázek 5.2: Nový procesor V první řadě si můžeme vybrat, zda chceme simulovat na jednocyklovém (simple) nebo zřetězeném (pipeline) procesoru. Zřetězený procesor má ještě dvě varianty: bez aktivní hazard unit a s aktivní hazard unit (vypnuté nebo zapnuté řešení datových a řídicích hazardů). Dalšími parametry jsou parametry instrukční a datové cache. Kromě různého stupně asociativity, různého počtu setů a různé velikosti bloku lze také nastavit, zda má být cache typu write-back nebo writethrough (zda se do paměti propisuje pouze když je to nutné, nebo přímo při zápisu do cache). Tlačítkem Create nastavení potvrdíme Načtení souboru Nyní můžeme postoupit ke kroku dvě: otevření simulace. V menu Simulation vybereme New, což nám otevře dialogové okno pro výběr vstupního souboru assembleru. Vybereme soubor, který chceme simulovat a volbu potvrdíme. Nyní proběhne parsování souboru, při kterém může dojít k chybě, která se nám zobrazí v chybovém informačním okně. Pokud k tomu dojde, je třeba podle chyby opravit zdrojový soubor. Informace o formátu zdrojového souboru jsou v menu v nabídce Help pod možností Assembler file Přehledy Pokud proběhlo parsování v pořádku, tabulky v hlavním okně se nám naplní daty. Tabulky na levé straně nabízejí přímý náhled do paměti, přičemž ta horní zobrazuje programovou část paměti (dolní 2KB) a spodní datovou část paměti (horní 2KB). Programová tabulka nabízí kromě adresy 26
39 Vedlejší okna instrukce, jejího strojového kódu a zdrojové řádky ještě možnost nastavení tzv. breakpointu, před kterým se spuštěná simulace zastaví. Tabulky mají pouze 64 řádků, což dovoluje zobrazit pouze první polovinu paměti. Náhledu na druhou část lze dosáhnout kliknutím na tlačítko Next. Na pravé straně pak najdeme tlačíko, pomocí kterého lze změnit formát zobrazovaných čísel. V tabulce instrukcí lze měnit zobrazení strojového kódu instrukcí mezi hexadecimálním a binárním a v tabulce dat lze měnit zobrazení hodnot mezi hexadecimálním a decimálním. Vpravo je pak tabulka zobrazující registry. Formát dat registrů lze také změnit, avšak pouze v nabídce hlavního menu pod názvem Format Simulace Simulaci můžeme ovládat v hlavním menu nebo přímo tlačíky v horní části okna. Tlačíko Run spustí simulaci, která se zastaví buď na zvoleném breakpointu nebo po 100 vykonaných instrukcích. Pokud chceme simulací postupovat krok po kroku, využijeme tlačítko Step. Právě vykonávaná instrukce se pak v tabulce instrukčního segmentu paměti zvýrazňuje. Po skončení simulace ji můžeme vrátit opět do základního stavu tlačítkem Restart. Simulaci můžeme kdykoliv pomocí volby New změnit. Stejně tak můžeme pomocí volby Processor - Edit změnit parametry procesoru. 5.3 Vedlejší okna Pomocí tlačítek Show caches a Show processor můžeme otevřít vedlejší okna s rozšiřujícími vizualizacemi Cache Obrázek 5.3: Náhled na cache paměti V tomto okně (obrázek 5.3) vidíme obsah cache pamětí. Každá cache má vlastní panel, mezi kterými můžeme přepínat. Cache jsou vizualizovány klasicky pomocí tabulek. Obsahují hodnotu tag, příznaky valid a dirty a pak samotná data. Cache se automaticky aktualizují při běhu simulace. 27
40 Výsledný simulátor Procesor Toto okno nabízí asi nejnázornější pohled na simulaci. Jsou zde přímo ve schématu procesoru vypsané hodnoty, které se nacházejí na sběrnicích. Okno se opět aktualizuje automaticky při běhu simulace. Pro každý typ procesoru se liší, protože každý typ má jinak zapojené jednotlivé komponenty. V levé horní části se nachází tlačítko Step, které slouží k pohodlnému posouvání simulace přímo v tomto okně. Zřetězený procesor má navíc ve spodní části uvedené zdrojové texty instrukcí, které se nacházejí v jednotlivých částech pipeline. Obrázek 5.4: Simulační schéma jednocyklového procesoru 28
41 Příklad simulace Obrázek 5.5: Simulační schéma zřetězeného procesoru 5.4 Příklad simulace Prvním krokem je vytvoření nového procesoru, na kterém budeme program simulovat. V hlavní nabídce vybereme Processor - New. Obrázek 5.6: Vytvoření nového procesoru 29
42 Výsledný simulátor Nastavíme si jednocyklový procesor a nějaké rozumné cache paměti. Obrázek 5.7: Nastavení procesoru V dalším kroku si vytvoříme novou simulaci. V hlavní nabídce vybereme Simulation - New. Obrázek 5.8: Nová simulace V dialogovém okně vybereme soubor s programem, který chceme simulovat. 30
43 Příklad simulace Obrázek 5.9: Výběr souboru V simulačním okně si můžeme ověřit, že se nám program nahrál do paměti procesoru. Můj ukázkový program představuje jednoduchý cyklus počítající od jedné do pěti. Obrázek 5.10: Simulace Simulaci provádíme klikáním na tlačítko Step, přičemž můžeme sledovat, jak se mění hodnoty v registrech. Pro simulování složitejších programů můžeme využít tlačítko Run v kombinaci s breakpointy. 31
44 Výsledný simulátor Obrázek 5.11: Konec simulace Program counter již nyní ukazuje do prázdné paměti, simulace je tedy u konce. Pro opakování stiskneme tlačítko Restart, čímž simulaci vrátíme do základního stavu. Při simulování složitějších programů si pro názornější ukázku můžeme nechat zobrazit náhled procesoru tlačítkem Show processor nebo náhled cache pamětí tlačítkem Show caches. 32
Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).
Strojový kód k d a asembler procesoru MIPS Použit ití simulátoru SPIM K.D. - cvičení ÚPA 1 MIPS - prostředí 32 ks 32bitových registrů ( adresa registru = 5 bitů). Registr $0 je zero čte se jako 0x0, zápis
Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz
Assembler RISC T.Mainzer, kiv.zcu.cz RISC RISC, neboli Reduced Instruction Set Computer - koncepce procesorů s redukovaným souborem instrukcí (vs. CISC, neboli Complex Instruction Set Computer, "bohatý"
Fakulta elektrotechnická
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ Fakulta elektrotechnická BAKALÁŘSKÁ PRÁCE David Hývl Simulátor MIPS procesoru Katedra řídící techniky Vedoucí práce: Ing. Michal Štěpanovský, Ph.D. Prohlášení autora práce
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í
Příloha č. I: Schéma zapojení vývojové desky PVK-PRO
Příloha č. I: Schéma zapojení vývojové desky PVK-PRO Schéma zapojení vývojové desky PVK-PRO (http://poli.cs.vsb.cz/edu/arp/down/pvk-pro.png) Příloha č. III: Organizace registrů v bankách PIC 16F84 Příloha
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
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á
Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.
Model procesoru Jedná se o blokové schéma složené z registrů, paměti RAM, programového čítače, instrukčního registru, sčítačky a řídicí jednotky, které jsou propojeny sběrnicemi. Tento model má dva stavy:
Mezipaměti počítače. L2 cache. L3 cache
Mezipaměti počítače Cache paměť - mezipaměť Hlavní paměť procesoru je typu DRAM a je pomalá. Proto se mezi pomalou hlavní paměť a procesor vkládá menší, ale rychlá vyrovnávací (cache) paměť SRAM. Rychlost
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
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í
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
MSP 430F1611. Jiří Kašpar. Charakteristika
MSP 430F1611 Charakteristika Mikroprocesor MSP430F1611 je 16 bitový, RISC struktura s von-neumannovou architekturou. Na mikroprocesor má neuvěřitelně velkou RAM paměť 10KB, 48KB + 256B FLASH paměť. Takže
Architektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Digitální
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
Architektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 2/36 Digitální
Komunikace modulu s procesorem SPI protokol
Komunikace modulu s procesorem SPI protokol Propojení dvouřádkového LCD zobrazovače se sběrnicí SPI k procesotru (dále již jen MCU microcontroller unit) a rozložení pinů na HSES LCD modulu. Komunikace
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
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
Struktura a architektura počítačů (BI-SAP) 11
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 11 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
První kroky s METEL IEC IDE
První kroky s poskytuje programování v IEC 61131-3 jazycích, podporuje jak grafickou tak textovou podobu. Umožňuje vytvářet, upravovat a ladit IEC 61131-3 (ST, LD, IL, FBD) programy pro řídicí jednotky
Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače
V roce 1945 vystoupil na přednášce v USA matematik John von Neumann a představil architekturu samočinného univerzálního počítače (von Neumannova koncepce/schéma/architektura). Základy této koncepce se
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
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
Architektura počítačů
Architektura počítačů Procesor V přednášce byly použity (se souhlasem vydavatelství) obrázky z knihy Paterson, D., Henessy, V.: Computer Organization and Design, The HW/SW Interface. Elsevier, ISBN: 978-0-12-370606-5
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...
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
Architektura procesoru ARM
Architektura procesoru ARM Bc. Jan Grygerek GRY095 Obsah ARM...3 Historie...3 Charakteristika procesoru ARM...4 Architektura procesoru ARM...5 Specifikace procesoru...6 Instrukční soubor procesoru...6
Překladač a jeho struktura
Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice
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í
Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz
Semestrální práce z předmětu KIV/UPA Jan Bařtipán / A03043 bartipan@studentes.zcu.cz Zadání Program přečte ze vstupu dvě čísla v hexadecimálním tvaru a vypíše jejich součet (opět v hexadecimální tvaru).
Manuál k programu KaraokeEditor
Manuál k programu KaraokeEditor Co je KaraokeEditor? Program slouží pro editaci tagů v hudebních souborech formátu mp3. Tagy jsou doprovodné informace o písni, uložené přímo v mp3. Aplikace umí pracovat
VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy
VÝUKOVÝ MATERIÁL Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková
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
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
Vzorový příklad pro práci v prostředí MPLAB Zadání: Vytvořte program, který v intervalu 200ms točí doleva obsah registru reg, a který při stisku tlačítka RB0 nastaví bit 0 v registru reg na hodnotu 1.
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
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
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
Assembler pro Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Zápis instrukcí umíme už zapisovat instrukce v binárním tvaru to je silně nešikovné pro snazší vývoj
Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010
Přednášky o výpočetní technice Hardware teoreticky Adam Dominec 2010 Rozvržení Historie Procesor Paměť Základní deska přednášky o výpočetní technice Počítací stroje Mechanické počítačky se rozvíjely už
AUTOMATIZACE Úvod do programování PLC
AUTOMATIZACE Úvod do programování PLC Rostislav Palowski Střední škola, Havířov-Šumbark, Sýkorova 1/613, příspěvková organizace Tento výukový materiál byl zpracován v rámci akce EU peníze středním školám
Programátorská příručka
KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro
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
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
PDF Split and Merge. Průvodce programem pro práci s PDF
PDF Split and Merge Průvodce programem pro práci s PDF Obsah Instalace a nastavení programu... 1 Sloučení více PDF do jednoho souboru... 1 Rozdělení PDF... 2 Vizuální reorganizátor... 3 Vizuální průvodce
FORTANNS. havlicekv@fzp.czu.cz 22. února 2010
FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku
Vstupně - výstupní moduly
Vstupně - výstupní moduly Přídavná zařízení sloužící ke vstupu a výstupu dat bo k uchovávání a archivaci dat Nejsou připojována ke sběrnici přímo, ale prostřednictvím vstupně-výstupních modulů ( ů ). Hlavní
Číselné vyjádření hodnoty. Kolik váží hrouda zlata?
Čísla a logika Číselné vyjádření hodnoty Au Kolik váží hrouda zlata? Dekadické vážení Když přidám osmé závaží g, váha se převáží => závaží zase odeberu a začnu přidávat závaží x menší 7 závaží g 2 závaží
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
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Real Time programování v LabView. Ing. Martin Bušek, Ph.D.
Real Time programování v LabView Ing. Martin Bušek, Ph.D. Úvod - související komponenty LabVIEW development Konkrétní RT hardware - cíl Použití LabVIEW RT module - Pharlap ETS, RTX, VxWorks Možnost užití
Procesor. Procesor FPU ALU. Řadič mikrokód
Procesor Procesor Integrovaný obvod zajišťující funkce CPU Tvoří srdce a mozek celého počítače a do značné míry ovlivňuje výkon celého počítače (čím rychlejší procesor, tím rychlejší počítač) Provádí jednotlivé
Struktura a architektura počítačů (BI-SAP) 7
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 7 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a
1 Počítače CISC a RISC V dnešní době se ustálilo dělení počítačů do dvou základních kategorií podle typu použitého procesoru: CISC - počítač se složitým souborem instrukcí (Complex Instruction Set Computer)
František Hudek. duben ročník
VY_32_INOVACE_FH09_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek duben 2013 6.
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
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í
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
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
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí
8. Laboratoř: Aritmetika a řídicí struktury programu
8. Laboratoř: Aritmetika a řídicí struktury programu Programy v JSA aritmetika, posuvy, využití příznaků Navrhněte a simulujte v AVR studiu prográmky pro 24 bitovou (32 bitovou) aritmetiku: sčítání, odčítání,
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
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
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
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
1. Programování PLC. Programovatelné automaty II - 1 -
Programovatelné automaty II - 1-1. Programování PLC Centrální jednotka Poskytuje programovatelnému automatu inteligenci. Realizuje soubor instrukcí a systémových služeb, zajišťuje i základní komunikační
MIDAM Verze 1.1. Hlavní okno :
MIDAM Verze 1.1 Podporuje moduly Midam 100, Midam 200, Midam 300, Midam 400, Midam 401, Midam 410, Midam 411, Midam 500, Midam 600, Ghc 2x. Umožňuje nastavení parametrů, sledování výstupních nebo vstupních
Assembler - 5.část. poslední změna této stránky: Zpět
1 z 5 19.2.2007 7:52 Assembler - 5.část poslední změna této stránky: 9.2.2007 1. Pseudoinstrukce a direktivy Zpět Kromě instrukcí můžete v Assembleru psát také další konstrukce, které se obšem nepřekládají
Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM
Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM Úloha č.: 5. Zadání: 1. Seznamte se s konstrukcí cvičné zásuvné adaptérové desky
Novinky. Autodesk Vault helpdesk.graitec.cz,
Novinky Autodesk Vault 2018 www.graitec.cz www.cadnet.cz, helpdesk.graitec.cz, www.graitec.com Novinky Autodesk Vault 2018 PDF dokument obsahuje přehled novinek produktu Autodesk Vault 2018. Obsah: Úvod...
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
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
Pokyny pro obsluhu programu. EZZ01 File reader 1.3
www. první-saz.cz Pokyny pro obsluhu programu EZZ01 File reader 1.3 příloha k TP SaZ 3/01 1. Instalace programu EZZ01 File reader 1.3 do počítače Program EZZ01 File reader 1.2 pracuje s operačními systémy
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
Struktura a architektura počítačů (BI-SAP) 10
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 10 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
SignEditor 1 - návod k použití
SignEditor 1 - návod k použití Tomáš Ryba tryba@kky.zcu.cz Zdeněk Krňoul zdkrnoul@kky.zcu.cz Jakub Kanis jkanis@kky.zcu.cz 27. března 2012 1 Vznik za podpory projektu Pojabr - Potlačení jazykové bariéry
Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
Semestrální práce 2 znakový strom
Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového
3D sledování pozice vojáka v zastavěném prostoru a budově
3D sledování pozice vojáka v zastavěném prostoru a budově Úvod Programový produkt 3D sledování pozice vojáka v zastavěném prostoru a budově je navržen jako jednoduchá aplikace pro 3D zobrazení objektů
Zpravodaj. Uživatelská příručka. Verze
Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...
Architektura počítačů Implementace procesoru
Architektura počítačů Implementace procesoru http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematcs and physics Ukázková
Uživatelská příručka Autor: Martin Fiala
1 Uživatelská příručka Autor: Martin Fiala Vzhledem k tomu, že navržený program nefunguje samostatně a jedná se pouze o část implementovanou do pluginu BJ2NB vyvíjeného na Vysoké škole ekonomické, je nutné
Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux
KONTAKT 2011 Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux Autor: Rostislav Lisový (lisovy@gmail.com) Vedoucí: Ing. Pavel Píša, Ph.D. (pisa@cmp.felk.cvut.cz) Katedra řídicí techniky
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ší
Vstupně výstupní moduly. 13.přednáška
Vstupně výstupní moduly 13.přednáška Vstupně-výstupn výstupní modul (I/O modul) Přídavná zařízení sloužící ke vstupu a výstupu dat nebo k uchovávání a archivaci dat Nejsou připojována ke sběrnici přímo,
Č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á
Profilová část maturitní zkoušky 2013/2014
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA
KRY. Projekt č. 2. Kamil Dudka xdudka00
KRY Projekt č. 2 Kamil Dudka xdudka00 1 Úvod Úkolem bylo vytvořit program, který do určeného obrázku umí schovat text a tento text z obrázku později vytáhnout. Schovaný text měl být zabezpečený pomocí
Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica
Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová 5. Statistica StatSoft, Inc., http://www.statsoft.com, http://www.statsoft.cz. Verze pro Mac i PC, dostupná
Programátorská dokumentace
Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci
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
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
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šší
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í
VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ
VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ Stanislav Flígl Katedra elektrických pohonů a trakce (K13114),
Zálohování v MS Windows 10
Zálohování v MS Windows 10 Historie souborů Způsob zálohování jako v MS Windows 8.1 Nastavení Aktualizace a zabezpečení Zálohování nebo Ovládací panely Systém a zabezpečení - Historie souborů Přidat jednotku
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é
Sekvenční logické obvody
Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory
Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu
sq Program ZK EANPRINT verze 1.20 Uživatelská dokumentace programu Úvod Základní vlastnosti programu Jednoduchost ovládání - umožňuje obsluhu i málo zkušeným uživatelům bez nutnosti většího zaškolování.
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů