Návrh Zásobníkového Procesoru Pro Vestavěné Systémy a Implementace Podpůrných Nástrojů
Total Page:16
File Type:pdf, Size:1020Kb
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra řídicí techniky Návrh zásobníkového procesoru pro vestavěné systémy a implementace podpůrných nástrojů DIPLOMOVÁ PRÁCE Vypracoval: Jan Procházka Vedoucí práce: Ing. Pavel Píša PhD. Rok: 2012 zadani Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. V Praze dne .................... .….............................. Jan Procházka Poděkování Na tomto místě bych chtěl poděkovat Ing. Pavlu Píšovi Ph.D. za vedení mé práce, za poskytnutí podkladů k vypracování, a za cenné rady. Také bych chtěl poděkovat rodině za podporu v době psaní této práce. Jan Procházka Abstrakt Obsahem této práce je v teoretické části analýza virtuálních strojů založených jak na registrové, tak na zásobníkové technologii. Hlavním cílem bude navrhnout interpret typu Forth a zásobníkovou mikroprocesorovou architekturu vhodnou pro vestavěné aplikace řídicích systémů jako řízení, například číslicových systémů, s požadavkem na jednoduchost nejen celé architektury, ale i diagnostiky systému. Následně bude vytvořen interpret portovatelný na cizí platformy. Nakonec bude provedena diskuse aplikace synchronní a asynchronní architektury při návrhu mikroprocesoru. Abstract Content of this thesis is, in the first, theoretical part, virtual machine analysis based on register as well as stack technology. Main goal will be to design Forth style interpreter and stack microprocessor architecture which would be suitable for embedded applications of control systems for instance digital systems, with architecture simplicity and simple diagnostics requirement. Interpreter, which can be easily ported on other platforms, will be implemented. At the end an application of synchronous and asynchronous architecture for microprocessor will be discussed. Obsah Seznam zkratek...........................................................................................................................8 Seznam obrázků..........................................................................................................................9 Seznam úryvků kódu.................................................................................................................10 Seznam tabulek.........................................................................................................................11 Seznam příloh...........................................................................................................................12 1 Úvod.......................................................................................................................................13 1.1 Cíle práce........................................................................................................................13 1.2 Struktura práce...............................................................................................................14 2 Analýza...................................................................................................................................15 2.1 Virtuální stroje................................................................................................................15 2.1.1 Java Virtual Machine..............................................................................................16 Spouštěcí model..........................................................................................................16 HotSpot Java Virtual Machine....................................................................................25 K Virtual Machine.......................................................................................................27 Dalvik VM..................................................................................................................28 Squawk........................................................................................................................33 2.1.2 Common Intermediate Language...........................................................................35 Spouštěcí model..........................................................................................................35 Instrukční soubor........................................................................................................36 2.1.3 Low Level Virtual Machine....................................................................................41 Spouštěcí model..........................................................................................................42 Typový systém............................................................................................................43 IR bytekód...................................................................................................................43 2.1.4 Dis Virtual Machine................................................................................................48 Spouštěcí model..........................................................................................................48 Kanály.........................................................................................................................49 Instrukční soubor........................................................................................................50 2.1.5 Juice........................................................................................................................51 2.1.6 Forth........................................................................................................................53 Spouštěcí model..........................................................................................................53 Bytekód.......................................................................................................................54 Zdrojový kód...............................................................................................................55 3 Implementace.........................................................................................................................56 3.1 Interpret..........................................................................................................................56 3.1.1 Spouštěcí model......................................................................................................56 Token threading...........................................................................................................56 Subroutine threading...................................................................................................57 Direct threading..........................................................................................................58 6 Indirect threading........................................................................................................59 3.1.2 Reprezentace kódu..................................................................................................60 Smyčka interpretu.......................................................................................................61 Struktura paměti..........................................................................................................62 3.1.3 Instrukční sada........................................................................................................65 3.1.4 Proměnné, spouštění a kompilace ..........................................................................68 3.1.5 Jazykové struktury..................................................................................................69 Tvorba slov.................................................................................................................69 Makra a JIT kompilace...............................................................................................70 Podmínky a ostatní jazykové struktury.......................................................................70 Rozšíření.....................................................................................................................71 3.2 Mikroprocesor................................................................................................................71 3.2.1 Instrukční sada........................................................................................................72 3.2.2 Asynchronní architektura........................................................................................74 4 Závěr......................................................................................................................................75 Reference..................................................................................................................................77 Přílohy.......................................................................................................................................80 Obsah CD..................................................................................................................................84 7 Seznam zkratek ABI – Aplication Binary Interface API – Aplication Programming Interface AST – Abstract Syntax Tree BIOS – Basic Input Output System CAS – Compare and Swap CISC – Complex Instruction Set Computer CFG – Control Flow Graph CLDC – Connected Limited Device Configuration CIL – Common Intermediate Language CLI – Common Language Environment CMS – Concurrent Mark-sweep DVM – Dalvik Virtual Machine EEPROM - Electrically Erasable Programmable Read Only Memory EFI – Extensible