Summary: | 碩士 === 國立交通大學 === 資訊工程系 === 91 === The execution engine of micro JVM is usually interpreter. For interpreter, the comparison overhead in decoding phase is high, and there is still much improvement space for the stack-based execution in executing phase. Hence, on the constraints of low memory and low computing power, our objective is to reduce these overheads.
Handler address table-lookup is aimed at comparison overhead in decoding phase. A table-lookup is used to get handler address with original Java bytecodes instead of comparison. Common bytecode sequence execution is aimed at the overhead of stack-based execution in executing phase. The execution of common bytecode sequences is combined by a systematically-generated common bytecode sequence set. Certainly, the decision flow of the systematically-generating common bytecode sequence set is decided by the tools we write.
In the simulation, first we get a common bytecode sequence set by the systematical-generating tools we have written. Then we implement the handler address table-lookup and partial common bytecode sequence set into KVM, the micro Java Virtual Machine we select. Simulation result shows the total KVM performance increment (workload per unit time) is 50.6%, and the total KVM code size increment is 10.4%. To mention about the simulation analysis, first we can conclude that reducing decoding overhead of interpreter indeed enhance performance greatly. Second, with a well systematically-generated common bytecode sequence set, to combine the execution of the bytecode sequences in the set also enhance performance rather well.
|