head 1.25; access; symbols bg2_23:1.19 bg2_22:1.19 bg2_21:1.19 bg2_20:1.18 bg2_16:1.15 bg2_15:1.13 bg2_12:1.13 bg2_07:1.13; locks; strict; comment @% @; 1.25 date 2008.10.16.10.12.38; author martin; state Exp; branches; next 1.24; commitid 22ec48f713944567; 1.24 date 2008.10.10.22.19.43; author martin; state Exp; branches; next 1.23; commitid 45948efd4fe4567; 1.23 date 2008.09.16.17.21.17; author martin; state Exp; branches; next 1.22; commitid 375f48cfeb0c4567; 1.22 date 2008.09.15.16.33.34; author 9914pich; state Exp; branches; next 1.21; commitid 580248ce8e5c4567; 1.21 date 2008.08.22.12.35.26; author 9914pich; state Exp; branches; next 1.20; commitid 122048aeb28d4567; 1.20 date 2008.08.17.15.57.28; author martin; state Exp; branches; next 1.19; commitid 9e248a84a644567; 1.19 date 2008.07.23.08.45.59; author martin; state Exp; branches; next 1.18; commitid 7e424886efc34567; 1.18 date 2008.07.21.12.18.39; author martin; state Exp; branches; next 1.17; commitid 205348847e9c4567; 1.17 date 2008.07.13.17.37.22; author martin; state Exp; branches; next 1.16; commitid 384a487a3d4e4567; 1.16 date 2008.07.04.19.15.44; author martin; state Exp; branches; next 1.15; commitid 29f486e76d94567; 1.15 date 2008.06.26.18.43.43; author martin; state Exp; branches; next 1.14; commitid 5b214863e3594567; 1.14 date 2008.06.25.15.26.27; author jeuneS2; state Exp; branches; next 1.13; commitid 4a5c486263954567; 1.13 date 2008.05.22.12.21.48; author martin; state Exp; branches; next 1.12; commitid 16ea4835655a4567; 1.12 date 2008.05.02.10.19.41; author jeuneS2; state Exp; branches; next 1.11; commitid 5267481aeaa64567; 1.11 date 2008.03.11.12.38.06; author martin; state Exp; branches; next 1.10; commitid 178a47d67d2b4567; 1.10 date 2008.03.04.19.19.42; author martin; state Exp; branches; next 1.9; commitid d1347cda0cc4567; 1.9 date 2008.03.03.09.45.07; author martin; state Exp; branches; next 1.8; commitid 4bf47cbc8a24567; 1.8 date 2008.02.22.13.28.13; author 9914pich; state Exp; branches; next 1.7; commitid 120247becdec4567; 1.7 date 2008.02.21.16.48.13; author 9914pich; state Exp; branches; next 1.6; commitid 3d4147bdab4c4567; 1.6 date 2008.02.21.14.03.26; author martin; state Exp; branches; next 1.5; commitid 6b4e47bd84ac4567; 1.5 date 2008.02.20.15.42.04; author martin; state Exp; branches; next 1.4; commitid 6dbd47bc4a474567; 1.4 date 2008.02.20.12.43.55; author martin; state Exp; branches; next 1.3; commitid 103c47bc20894567; 1.3 date 2008.02.18.17.30.39; author jeuneS2; state Exp; branches; next 1.2; commitid f0e47b9c0b04567; 1.2 date 2008.02.06.09.42.31; author jeuneS2; state Exp; branches; next 1.1; commitid b8347a980f64567; 1.1 date 2008.02.05.17.25.11; author martin; state Exp; branches; next ; commitid 2f947a89bf54567; desc @@ 1.25 log @WCET preprocessing @ text @\documentclass[a4paper,12pt]{scrartcl} \usepackage{pslatex} % -- times instead of computer modern \usepackage[colorlinks=true,linkcolor=black,citecolor=black]{hyperref} \usepackage{booktabs} \usepackage{graphicx} \usepackage[latin1]{inputenc} \newcommand{\code}[1]{{\textsf{#1}}} \newcommand{\excelwidth}{10cm} \begin{document} \title{Change Log for JOP} %\author{Martin Schoeberl\\ Vienna University of Technology, Austria\\ mschoebe@@mail.tuwien.ac.at} \maketitle \thispagestyle{empty} \begin{abstract} Major changes in the JOP project. \end{abstract} \section{Performance Tracker} Table~\ref{tab:perf} shows the changing performance due to changes in JOP. \begin{table} \centering \begin{tabular}{rrrrrrl} \toprule Date & Version & Kfl & UdpIp & Lift & LCs & Comment \\ \midrule ??? & 20050509 & 16582 & 6849 & & & Austrochip \\ 13.6.2005 & & 16599 & 6838 & & & with direct object pointers \\ 13.6.2005 & & 16384 & 6405 & & & with handle indirection \\ 14.6.2005 & 20050614 & 16591 & 6838 & & 2711 & without handles again \\ 27.6.2005 & 20050620 & 16367 & 6405 & & 2716 & handles again \\ 26.7.2005 & 20050620 & 16367 & 6405 & & 2716 & \\ 31.7.2005 & 20050728 & 16384 & 6405 & & 2714 & \\ 11.8.2005 & 20050728 & 16367 & 6405 & & 2714 & \\ 16.8.2005 & 20050816 & 16253 & 6258 & & 2726 & new .jop format, Null pointer check \\ & & & & & &in xaload/xastore is moved! \\ 23.11.2005 & 20050827 & 16237 & 6262 & & 2927 & cycmin (w. WB test slaves) \\ 23.11.2005 & 20050827 & 16270 & 6272 & & 2827 & new memory interface (in cycwrk) \\ & & & & & & avoid 'register packing' -- Quartus crash \\ 1.1.2006 & 20051220 & 16270 & 6262 & & 2680 & new IO interface \\ 11.1.2006 & 20060111 & 16270 & 6262 & & 2691 & HW for exception (stack overflow)\\ 12.1.2006 & 20060111 & 16270 & 6262 & & 2703 & with add. SW exceptions (div. by zero)\\ 12.1.2006 & 20060112 & 16591 & 6365 & & 2700 & add ar, iinc is now 8 cycles\\ 22.1.2006 & 20060122 & 16591 & 6365 & & 2717 & additional field instructions \\ 23.1.2006 & 20060123 & 16591 & 6522 & & 2722 & offset in field instructions \\ 15.6.2006 & 20060615 & 16633 & 6537 & & 2722 & less cycles on cache load\\ 16.9.2006 & 20060615 & 17075 & 6692 & & 2722 & substitute IINC\\ 8.10.2006 & 20060615 & 17093 & 6809 & & 2776 & optimized with ProGuard\\ 4.11.2006 & 20061104 & 17111 & 6775 & & 2778 & changed object layout\\ 4.11.2006 & 20061104 & 17138 & 6889 & & 2778 & changed object layout + ProGuard\\ 30.12.2006 & 20061230 & 17111 & 6775 & & 2687 & 2K ROM (Q 6.1)\\ 11.04.2007 & 20070317 & 17120 & 6781 & 13574 & 2691 & no real change (Q 7.0)\\ 14.04.2007 & 20070414 & 18347 & 8520 & 16425 & 2906 & array HW \\ 31.08.2007 & 20070831 & 18347 & 8371 & 16425 & 2930 & use more stack \\ 04.12.2007 & 20071203 & 18347 & 8308 & 16425 & 3091 & added interrupt controller \\ 19.02.2008 & 20080219 & 18357 & 8511 & 18778 & 3092 & getfield/putfield HW support \\ 20.02.2008 & 20080220 & 18347 & 8511 & 18767 & 3136 & IO/memory MUX after mem\_sc \\ 22.08.2008 & 20080522 & 18275 & 8474 & 18671 & 3579 & memory write one cycle longer \\ \bottomrule \end{tabular} \caption{JOP performance with 100MHz, 4KB/16 cache, cycmin} \label{tab:perf} \end{table} Nokia 6300 with Jazelle is the real target ;-) \begin{verbatim} ARM9 237 MHz iaload_3 iadd 81840000 1/s 3 cycles iinc 83886000 1/s 3 cycles ldc 11066000 1/s 22 cycles if_icmplt 28149000 1/s 8 cycles if_icmplt not taken 47662000 1/s 5 cycles getfield 45221000 1/s 5 cycles getstatic 32704000 1/s 7 cycles iaload 35544000 1/s 7 cycles invoke 1836000 1/s 129 cycles invokestatic 1967000 1/s 120 cycles invokeinterface 1855000 1/s 127 cycles Sieve 26068 1/s Kfl 43229 1/s UDP/IP 11595 1/s \end{verbatim} \section{Changelog} \subsection{Hardware} \paragraph{20051201} IO devices are memory mapped (SimpCon) -- no more stioa, stiod, ldiod. \paragraph{20060111} Start to generate HW exceptions similar to the timer interrupt. Exception logic is in \code{cnt.vhd} (should perhaps get renamed). First exception is generated by a stack overflow (SP=0xff). \paragraph{20060112} Add a new register (\code{ar}) to address the local memory: \begin{itemize} \item New microcode instructions: star, ldmi, stmi \item Use it instead of vp on various bytecodes \item reduce vp to 7 bits (only the upper half of the local memory) \item ld and st instruction changed coding, different address mux coding -- document in JOP instruction set \item iinc is now 8 instead of 11 cycles \end{itemize} \paragraph{20060615} Enhanced memory/cache interface: Avoid one state, load one word less. \paragraph{20061230} Microcode ROM extended to 2K (with arom.vhd again), long array bytecodes enabled again, additional stack manipulation bytecodes. Class structure extended by pointer to super class, checkcast, instanceof. \paragraph{20070317} Restructure of JOP components: Additional \code{jopcpu} contains \code{core}, \code{extension}, and \code{mem\_sc}. Simple AMBA slave interface for SimpCon paper (FPL 2007). \paragraph{20070414} Array load and store in hardware. Original cycmin: 2691 LCs, 88.4 MHz (extension: 62, mem\_sc: 113). Original iaload timing: 32 + 3r = 35 and iastore timing: 35 + 2r + w = 38. Implement xaload and xastore in hardware. New timings: iaload: 7 + 3r = 10, iastore: 9 + 2r + w = 12. cycmin w array HW: 2906 LCs, 93 MHz (extension: 70, mem\_sc: 304). \paragraph{20070831} Change stack pointer handling: no wrapping, exception generation at maxstack-8, use constants for stack size and start, changed start to 64. With 512 stack words LC is 2948 (instead of 2906). \paragraph{20070909} sc\_ram16.vhd violated SimpCon rule to hold data in the register till new data arrives (used data input register to store first 16-bit value). Results in an error in the array bounds check. Added another register in sc\_ram16.vhd -- leads to on input MUX for RAM data register. Therefore, relax tsu constraint for the SRAM. \paragraph{20071012} Port to digilent nexys2 board: Added top-level jop\_nexys2.vhd, nexys2 project in xilinx folder. Quick hack uses only 4~MB of the 16~MB PSDRAM with a lot of wait states. \paragraph{20071121} more space in stack.vhd for the stack trace. Use 33 bit for the comparison (compare bug for diff $>$ 2**31 in stack.vhd corrected). \paragraph{20071122} Christof checked in the work on JOP CMP (jvm.asm, jop\_types.vhd, cmpsync.vhd, sc\_sys.vhd, jopmul.vhd). \paragraph{20071202} Additional signal from \code{bcfetch} to \code{sc\_sys} (interrupt acknowledgement). Move most interrupt logic to \code{sc\_sys}. Interrupt ack from \code{jfetch}, interrupt disable on handling. \paragraph{20071203} prioritized interrupt processing, affects RtThread scheduling. \paragraph{20071222} Correction of data MUX bug in \code{extension.vhd} for array read access -- was set to IO after an IO access, array read did not set it. \paragraph{20080218} WP: Faster multiplier: 15\% larger, but twice as fast; \code{imul} now takes 19 cycles. \paragraph{20080219} WP: getfield and putfield in hardware (\code{mem\_sc}). \paragraph{20080220} MS: Moved IO/memory muxing after the memory controller into \code{jopcpu} to keep the hardware objects working. Hurts fmax a little bit (92~MHz). \paragraph{20080221} CP: All scios changed to select the accurate rdy\_cnt for a write on an IO. \paragraph{20080222} CP: Added atomic to the SimpCon interface. \paragraph{20080222} CP: Checked in all different kinds of Arbiters working with the \code{cyccmp} and the \code{altde2cmp} projects. \paragraph{20080303} MS: Added scratchpad RAM to \code{jopcpu.vhd}. \paragraph{20080304} MS: correct MUX selection in \code{jopcpu.vhd}. \paragraph{20080311} MS: Interrupt global enable also in \code{bcfetch} (bug fix). \paragraph{20080430} WP: Added microcode for non-blocking copying. \emph{MS: and what VHDL fiels have been changed?} \paragraph{20080522} MS: \code{nwe} on positive edge, additional write wait state in \code{sc\_sram32\_flash.vhd}. \code{cycbg} at 60~MHz, modem baud rate now 115 kbit. \paragraph{20080625} WP: Fixed method cache/program counter bug; changes in \code{bcfetch.vhd}, \code{core.vhd} and \code{stack.vhd}. \paragraph{20080721} MS: \code{nwe} in first two cycles, data out enable till the last cycle in \code{sc\_sram32\_flash.vhd}. TODO: use configurable wait states (again), adapt other two SRAM interfaces. \paragraph{20080821} CP: Fixed bug in (\code{sc\_arbiter\_fair} and \code{sc\_arbiter\_tdma}) for pipelined memory access to a 16-bit SRAM. \paragraph{20080822} CP: Fixed the sram interfaces (\code{sc\_sram32\_flash.vhd}, \code{sc\_sram32}, \code{sc\_sram16}) to be configurable depending on the wait sates. \paragraph{20081010} MS: correct array access for fast on-chip memory (\code{mem\sc.vhd}). \subsection{Software} \paragraph{20050620} Added GC info field in class structure: ClassInfo.java (JOPizer), JVM.java (f\_new). Use handle, changed multianewarray to work with handles. \paragraph{20050625} Working stop-the-world, two space GC committed to CVS. \paragraph{20051217} Prototype of periodic scheduled real-time GC for the ISORC paper. \paragraph{20060120} Add individual field instructions for long and reference fields (\emph{special} bytecodes). \paragraph{20060123} Long instructions in JVM.java added (Peter and Christof jvmhw work). Replace CP index in field instructions by the field offset. \paragraph{20060819} System.arraycopy: Hello World is 11 KB code, 19 KB all. Changes in: \begin{itemize} \item GC: use type info of array + types for ref. and plain objects in handle \item 20 KB with arraycopy() and additional Exceptions \item 21 KB with Java 1.5 corrections (16.9.2006) \end{itemize} \paragraph{20060916} Substitute IINC by ILOAD, PUSH const, IADD, and ISTORE in JOPizer to avoid Java 1.5 compiler issues and improve the performance a little bit. Java 1.5 compiler can now be used (with -target 1.4). \paragraph{20061008} Optimize with \url{http://sourceforge.net/projects/proguard/} \paragraph{20061026} Merged Nelsons JDK port into the source tree. Moved \code{jdk} to three different directories: \code{jdk\_base}, \code{jdk11}, and \code{jdk14}. TODO: Check size of Hello World. \paragraph{20061104} Move mtab pointer and array size to the handle. Small optimization in array load and store (one cycle). invokevirtual, invokeinterface and arraylength should be faster. \paragraph{20070111} Check new TCP/IP stack (TU Graz). Application size: \begin{itemize} \item Hello World 33 KB (!) \item ejip.Main 47 KB (old stack) \item ejip.Main 49 KB (some changes) \end{itemize} 20060818: Hello World 19 KB %Questions: % %Warum zusaetzlich Payload und nicht Packet weiterverwenden? % %Das Zusammenstellen eines IP Paketes ist sehr aufwendig (z.B.: %prepareIPPacket()) \paragraph{20070411} New version of JavaBenchEmbedded (1.1) with an additional \emph{Lift} benchmark. \paragraph{20070528} putfield and putstatic for references invoke JVM.java (for GC write-barriers). \paragraph{20070803} Add pointer to static primitive fields into the class structure (for Hardware objects). \paragraph{20070911} Changes in ejip for TCP addition and some cleanup in packet manipulation. TCP connection works for a very simple Telnet server. \paragraph{20071002} Add changes for the debugger (in JOPizer, ClassInfo, MethodInfo). Correct wrong Makefile (Wolfgang) and add debugger changes. Removed build.bat/xml and jcc.jar in tools directory. Added debugger code in tools directory (com.jopdesign.debug, com.sun), added debug test kernel in target/src/test. \paragraph{20071006} Changed JOPizer to generate a correct static class initializer order. \paragraph{20071008} Correction of clinit error: Long methods have the length set to 0, but got invoked instead of interpreted (len<256 corrected to len<256 \&\& len!=0). \paragraph{20071115} Null pointer exception in ClinitOrder (from test/testrt/Periodic) corrected. \paragraph{20071121} stack tracing enabled, better trace output. \paragraph{20080113} Moving IO-device models from JopSim into their own classes. Can also be loaded dynamically (use the \code{ioclass} property with the class name, e.g., \code{-Dioclass="IOSimWD"}). \paragraph{20080115} GC bug fix by Paulo. GC did not use the constants for stack start and size for the root scanning in stop-the-world mode. \paragraph{20080205} Added invokesuper bytecode: the case of invoking the method of a super-class was not handled correctly by invokespecial. JOPizer replaces invokespecial with invokesuper where appropriate. \paragraph{20080221} WP: JOPizer: insert monitorenter and monitorexit for synchronized (non-static) methods. \paragraph{20080623} WP: Implemented athrow as specified by the JVM specification. Changed system code in a few places such that exceptions are throw instead of aborting immediately. \paragraph{20080624} WP: JOPizer: interface tables are now generated correctly \paragraph{20080626} MS: Back to original scheduler, OEBB BG version 2.16 \paragraph{20080703} WP: Fixed null pointer handling of invokexxx instructions (\code{jvm\_call.inc}). \paragraph{20080713} MS: Native versions of getfield, putfield, arraylength, iaload, and iastore. TODO: use it in putfield\_ref, use hardware for long versions of get/putfield and array access to use the GC copy redirection! \paragraph{20080723} MS: Scheduler change for CMP scheduling. Scheduler is now an object -- a \code{Runnable} that is registered as an interrupt handler for the time interrupt. Each CMP core has it's own scheduler registered on \code{missionStart()}. \paragraph{20080915} CP: Added WCET analysis for CMP in WCET tool of Rasmus and Martin. Description see JTRES 2008 paper. \paragraph{20080916} MS: changed to -source 1.5, added and changed the BCEL 5.1 sources, four needed classes in jdk11 (Void, Double, Comparable, Number). \paragraph{20081016} MS: changes in the JOPizer tool flow to make a more general use of \code{ClassInfo} and \code{MethodInfo}. Preprocessing (iinc, synchronized) for WCA. WCA delivers now (again) exact cycles for \code{wcet.Loop} with Java 1.5/1.6 ;-) \subsection{Documentation} \paragraph{20080108} corrected timing for \code{xastore}. It's $10 + 2r + w$. \section{Ant} \begin{itemize} \item Download ant (about 30 MB unzipped) \item add ant/bin to your path \end{itemize} \section{Possible Enhancements} \subsection{VHDL} \begin{itemize} \item tristate handling inside the memory component \item try to minimize the top-level -- more connections into the core \item rethink SC address decoding: more flexible for IO devices, additional SC components such as NoC memory \item check \code{scio\_rd <= sc\_rd;} in \code{extension.vhd}. Shouldn't it by \code{scio\_rd <= sc\_rd and not ain(31);}? \end{itemize} check \url{http://lipforge.ens-lyon.fr/www/divgen/} for division (a divisor generator). \section{Issues, Questions} \begin{itemize} \item Flag \emph{opd} has to be immediately before usage by ld\_opd. Why? (see instruction getfield). \item Do we really need the full class info for interfaces? Why? \end{itemize} \section{JDK based on phoneME change} \subsection{System dependent classes} \begin{itemize} \item System \item Object \item String ?? \item special IO classes (JOP-streams) \item Class (we don't have one) \end{itemize} \subsection{Take care} \begin{itemize} \item Our current StringBuffer contains a StringBuffer append (since JDK 1.4) \item How to avoid the big time zone thing? \item How to avoid all the encoding stuff? \item find all native methods -- check on Jopizer \item Wouldn't a JDK 1.4 -- 1.6 Classpath or Sun's JDK be a better base? \end{itemize} \subsection{Ideas} \begin{itemize} \item What about moving com.jopdesign.sys stuff into java.lang? \item Can we get rid of some public methods/classes from the c.j.sys package? \end{itemize} \section{Optimization} see \url{http://www.arm.com/pdfs/JazelleWhitePaper.pdf} Test with \url{http://www.cs.purdue.edu/s3/projects/bloat/}: \begin{verbatim} -classpath /usr/cpu/jop/java/target/dist/classes -verbose -stack-alloc jbe.kfl.Mast jbe.kfl.Msg jbe.kfl.Timer jbe.kfl.JopSys jbe.kfl.Triac /usr/cpu/jop/java/target/dist/new_classes with the main class: EDU.purdue.cs.bloat.optimize.Main \end{verbatim} \subsection{JMM} check \url{http://g.oswego.edu/dl/jmm/cookbook.html} \section{Thesis Errata} In the thesis you state jop can handle "16 different immediate values ..." (pg 68). However ldi microcode can address 32 constants. There are 32 JVM local variables and 32 constants. In the Thesis the numbers are 16 and 16. Stack figure. \section{CLDC TODO} \begin{itemize} \item Object.clone() \item add a Duke image from \url{https://duke.dev.java.net/} \item \end{itemize} \end{document} @ 1.24 log @mem_sc correction @ text @d415 5 @ 1.23 log @use Java 1.5 source option @ text @d251 3 @ 1.22 log @no message @ text @d408 4 @ 1.21 log @Sram interfaces are configurable depending on the wait sates again. @ text @d405 3 @ 1.20 log @another version for CreateSpace @ text @d243 8 @ 1.19 log @New scheduler to allow CMP scheulding. @ text @d82 1 a83 1 @ 1.18 log @SRAM interface correction - longer data out enable @ text @a27 169 \section{First Change Log} \subsubsection*{2005-06-20} Added GC info field in class structure: ClassInfo.java (JOPizer), JVM.java (f\_new). Use handle, changed multianewarray to work with handles. \subsubsection*{2005-06-25} Working stop-the-world, two space GC committed to CVS. \subsubsection*{2005-12-01} IO devices are memory mapped (SimpCon) - no more stioa, stiod, ldiod. \subsubsection*{2005-12-17} Prototype of periodic scheduled real-time GC for the ISORC paper. \subsubsection*{2006-01-11} Start to generate HW exceptions similar to the timer interrupt. Exception logic is in \code{cnt.vhd} (should perhaps get renamed). First exception is generated by a stack overflow (SP=0xff). \subsubsection*{2006-01-12} Add a new register (\code{ar}) to address the local memory: \begin{itemize} \item New microcode instructions: star, ldmi, stmi \item Use it instead of vp on various bytecodes \item reduce vp to 7 bits (only the upper half of the local memory) \item ld and st instruction changed coding, different address mux coding -- document in JOP instruction set \item iinc is now 8 instead of 11 cycles \end{itemize} \subsubsection*{2006-01-20} Add individual field instructions for long and reference fields (\emph{special} bytecodes). \subsubsection*{2006-01-23} Long instructions in JVM.java added (Peter and Christof jvmhw work). Replace CP index in field instructions by the field offset. \subsubsection*{2006-06-15} Enhanced memory/cache interface: Avoid one state, load one word less. \subsubsection*{2006-08-19} System.arraycopy: Hello World is 11 KB code, 19 KB all. Changes in: \begin{itemize} \item GC: use type info of array + types for ref. and plain objects in handle \item 20 KB with arraycopy() and additional Exceptions \item 21 KB with Java 1.5 corrections (16.9.2006) \end{itemize} \subsubsection*{2006-09-16} Substitute IINC by ILOAD, PUSH const, IADD, and ISTORE in JOPizer to avoid Java 1.5 compiler issues and improve the performance a little bit. Java 1.5 compiler can now be used (with -target 1.4). \subsubsection*{2006-10-08} Optimize with \url{http://sourceforge.net/projects/proguard/} \subsubsection*{2006-10-26} Merged Nelsons JDK port into the source tree. Moved \code{jdk} to three different directories: \code{jdk\_base}, \code{jdk11}, and \code{jdk14}. TODO: Check size of Hello World. \subsubsection*{2006-11-04} Move mtab pointer and array size to the handle. Small optimization in array load and store (one cycle). invokevirtual, invokeinterface and arraylength should be faster. \subsubsection*{2006-12-30} Microcode ROM extended to 2K (with arom.vhd again), long array bytecodes enabled again, additional stack manipulation bytecodes. Class structure extended by pointer to super class, checkcast, instanceof. \subsubsection*{2007-01-11} Check new TCP/IP stack (TU Graz). Application size: \begin{itemize} \item Hello World 33 KB (!) \item ejip.Main 47 KB (old stack) \item ejip.Main 49 KB (some changes) \end{itemize} 20060818: Hello World 19 KB %Questions: % %Warum zusaetzlich Payload und nicht Packet weiterverwenden? % %Das Zusammenstellen eines IP Paketes ist sehr aufwendig (z.B.: %prepareIPPacket()) \subsubsection*{2007-03-17} Restructure of JOP components: Additional \code{jopcpu} contains \code{core}, \code{extension}, and \code{mem\_sc}. Simple AMBA slave interface for SimpCon paper (FPL 2007). \subsubsection*{2007-04-11} New version of JavaBenchEmbedded (1.1) with an additional \emph{Lift} benchmark. \subsubsection*{2007-04-14} Original cycmin: 2691 LCs, 88.4 MHz (extension: 62, mem\_sc: 113). Original iaload timing: 32 + 3r = 35 and iastore timing: 35 + 2r + w = 38. Implement xaload and xastore in hardware. New timings: iaload: 7 + 3r = 10, iastore: 9 + 2r + w = 12. cycmin w array HW: 2906 LCs, 93 MHz (extension: 70, mem\_sc: 304). \subsubsection*{2007-05-28} putfield and putstatic for references invoke JVM.java (for GC write-barriers). \subsubsection*{2007-08-03} Add pointer to static primitive fields into the class structure (for Hardware objects). \subsubsection*{2007-08-31} Change stack pointer handling: no wrapping, exception generation at maxstack-8, use constants for stack size and start, changed start to 64. With 512 stack words LC is 2948 (instead of 2906). \subsubsection*{2008-02-05} Added invokesuper bytecode: the case of invoking the method of a super-class was not handled correctly by invokespecial. JOPizer replaces invokespecial with invokesuper where appropriate. \subsubsection*{2008-06-23} Implemented athrow as specified by the JVM specification. Changed system code in a few places such that exceptions are throw instead of aborting immediately. d113 61 d185 2 a186 5 trace. Use 33 bit for the comparison (compare bug for diff $>$ 2**31 in stack.vhd corrected). \subsubsection{Error with YAFFS code} is probably an issue with the cache. Run EraseNAND and TestWithNAND to see the error. d245 89 d366 6 d375 4 d392 5 @ 1.17 log @Native versions of getfield, putfield, iaload, iastore, arraylength @ text @d350 4 @ 1.16 log @new timing for invokevirtual/interface @ text @d392 1 a392 1 \paragraph{20080703} WP: Fixed null pointer handling of invokexxx d395 5 @ 1.15 log @BG V 2.16 and back to original single CPU scheduler @ text @d392 3 @ 1.14 log @Documenting recent changes. @ text @d384 1 a384 1 \paragraph{20080221} JOPizer: insert monitorenter and monitorexit for d387 4 a390 1 \paragraph{20080624} JOPizer: interface tables are now generated correctly @ 1.13 log @no message @ text @d192 6 d347 3 d353 2 a354 2 cleanup in packet manipulation. TCP connection works for a very simple Telnet server. d387 2 @ 1.12 log @Document added microcodes stgf, stpf and stcp. @ text @d335 5 @ 1.11 log @global interrupt enable in bcfetch (bug fix) @ text @a251 1 d334 2 @ 1.10 log @corrected MUX selection of SimpCon slaves (mem, scratchpad, IO) @ text @d332 3 @ 1.9 log @added scratchpad RAM @ text @d330 2 @ 1.8 log @no message @ text @d328 2 @ 1.7 log @no message @ text @d323 5 @ 1.6 log @monitorenter/exit on synchronized methods @ text @d320 3 @ 1.5 log @Moved IO/memory muxing after the memory controller @ text @d354 3 @ 1.4 log @new performance numbers @ text @d244 1 d310 1 a310 1 \paragraph{20080218} Faster multiplier: 15\% larger, but twice as d313 7 @ 1.3 log @Fatser multiplier. @ text @d242 2 a243 1 04.12.2007 & 20071203 & 16347 & 8308 & 16425 & 3091 & added interrupt controller \\ d252 20 @ 1.2 log @Added paragraph for invokesuper. @ text @d288 3 @ 1.1 log @change log @ text @d186 6 @