1 / 20

Speciale

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads Pedersen. Agenda. Introduktion Specialet generelt FPGA – VHDL JOP

leone
Download Presentation

Speciale

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

E N D

Presentation Transcript


  1. Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads Pedersen

  2. Agenda • Introduktion • Specialet generelt • FPGA – VHDL • JOP • Hvad er JOP? • SW/HW co-design • Java-eksempel • JOP i praksis JOP-speciale: Jan Lauritzen & Mads Pedersen

  3. Speciale generelt • Forskningsorienteret • Ikke produktorienteret (som afgangsprojekt) JOP-speciale: Jan Lauritzen & Mads Pedersen

  4. Introduktion til specialet • Øget brug af programmeringssproget Java • Krav til high-level reliable language til indlejret software: • Objektorientering • Kode-genbrug • Frameworks • Flere eksisterende løsninger (dedikeret Java processor, der udfører Java byte code - aJile). • En anden (nyere) løsning: Implementeret i FPGA FPGA = ”Field Programmable Gate Array” • FPGA er en standard platform (”extensible” og billig) for mange designs i industrien • “Java Optimized Processor” (JOP), Ph.D.-projekt fra Technischen Universität Wien (Østrig) af Martin Schoeberl JOP-speciale: Jan Lauritzen & Mads Pedersen

  5. Fokus Evaluering af JOP: • Undersøgelse af FPGA-løsningen (SW/HW co-design mv.) • Evaluering af realtidsaspekter i forhold til“Real-Time Specification for Java” (RTSJ).Både som teoretiske undersøgelser såvel som praktiske eksperimenter • Kan man lave forudsigelig eksekvering af Java-kode? • Evaluering af JOP’s performance, sammenlignet med andre former for Java-udførsel: • Eksekveret i en virtuel maskine (som “standard” Java) • Eksekveret af en dedikeret Java-processor • Eksekveret i FPGA (som JOP) JOP-speciale: Jan Lauritzen & Mads Pedersen

  6. FPGA - VHDL • FPGA = Field Programmable Gate Array • FPGA programmeres i programmeringssproget VHDL • VHDL = VHSIC Hardware Description Language • VHSIC = Very High Speed Integrated Circuits • Vi har haft et crash course i VHDL i den seneste tid. JOP-speciale: Jan Lauritzen & Mads Pedersen

  7. FPGA-basics CLB: Configurable Logic Block - indeholder ”logikken” IOB: Input/Output Block - interface til omverdenen Block RAM: Random Access Memory - FPGA’en hukommelse Multiplier: 18 x 18 bit hardware multipliers JOP-speciale: Jan Lauritzen & Mads Pedersen

  8. VHDL-eksempel library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter_simple is port ( CLK, UP, RESET, CE : in std_logic; -- CE: Count Enable COU_OUT : out std_logic_vector(3 downto 0)); end counter_simple; architecture Behavioral of counter_simple is signal COU: std_logic_vector(3 downto 0); -- Internt tælle-signal begin process (CLK, RESET) begin if RESET='1' then -- Asynkront reset COU <= "0000"; elsif CLK'event and CLK='1' then if CE='1' then if UP='1' then COU <= COU + 1; -- Valg af op-/nedtælling elseCOU <= COU - 1; end if; else COU <= COU; end if; end if; end process; COU_OUT <= COU; -- Internt signal forbindes til udgangene end Behavioral; JOP-speciale: Jan Lauritzen & Mads Pedersen

  9. Hvad er JOP? • Hardware-implementation af en JVM • Målrettet mindre indlejrede systemer med realtidskrav • JOP er implementeret som en “soft core” i en FPGA. • Ubrugte FPGA-ressourcer kan bruges til perifere enheder. JOP-speciale: Jan Lauritzen & Mads Pedersen

  10. JOP’s main features • Small core that fits in a low cost FPGA • Configurable resource usage through HW/SW co-design • Predictable execution time of Java bytecodes • Fast execution of Java bytecodes without JIT-Compiler • Flexibility for embedded systems through FPGA implementation JOP-speciale: Jan Lauritzen & Mads Pedersen

  11. JOP-hardware • FPGA: • Altera CycloneFPGA Board • I/O-board: • BaseioExpansion Board JOP-speciale: Jan Lauritzen & Mads Pedersen

  12. Data path JOP-speciale: Jan Lauritzen & Mads Pedersen

  13. Muligheder med JOP i FPGA • SW/HW co-design • Udføre udvalgte operationer direkte i hardware (implementeres i VHDL) og kaldes fra Java. • Spændende mulighed, som skal undersøges nærmere JOP-speciale: Jan Lauritzen & Mads Pedersen

  14. SW/HW co-design • Eksempel med 32-bit multiplikation i hhv.: • Java (software) • Micro code (JOP’s eget instruction set) • VHDL (hardware) JOP-speciale: Jan Lauritzen & Mads Pedersen

  15. RTJ på JOP JOP-speciale: Jan Lauritzen & Mads Pedersen

  16. Programmering af JOP • Faser • Initialization phase • Ikke-tidskritiske operationer, som oprettelse af realtidstråde og allokering af objekter • Mission phase • Startes ved startMission() • Realtidstråde skeduleres, udførsel af tidskritiske operationer • Restrictions: JOP-speciale: Jan Lauritzen & Mads Pedersen

  17. Realtidstråde JOP-speciale: Jan Lauritzen & Mads Pedersen

  18. Andre informationer • Skedulering • Garbage Collection • Forudsigelighed JOP-speciale: Jan Lauritzen & Mads Pedersen

  19. JOP Java-eksempel import joprt.RtThread; import joprt.SwEvent; import util.Dbg; public class Event { public final static int CNT = 10; static SwEvent sev; public static void main(String[] args) { Dbg.initSer(); // use serial line for debug output sev = new SwEvent(2, 10000) { public void handle() { Dbg.wr("fire!"); } }; RtThread rt = new RtThread(1, 100000) { public void run() { for (int i=0; i<CNT; ++i) { waitForNextPeriod(); Dbg.wr("\nbefore"); sev.fire(); Dbg.wr("after"); } for (;;) waitForNextPeriod(); } }; RtThread.startMission(); for (;;) { ; // busy do nothing } } } JOP-speciale: Jan Lauritzen & Mads Pedersen

  20. JOP in action! JOP-speciale: Jan Lauritzen & Mads Pedersen

More Related