Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
The MT-Evaluator Virtual Machine Kristine Joy Apon, Kai H. Fan, Joanie Feeney, Peter Laurina, Steve O’Brien, Gregory Van De Moere Advisor: Dr. Marco Morazán Functional Programming Describing processes such as mathematical notations and procedures (define (fact n) (if (= n 0) 1 (* n (fact (- n 1))) ) ) Functional Programming Benefits More intuitive than imperative languages such as C and Java Easy to prove correctness of functions Truly machine independent Fast prototyping Disadvantages Poor virtual memory interaction can make them slow. Excessive paging can profoundly affect performance. Distributed Virtual Memory System Tailored for functional languages implemented completely in software. Parallelize the engine that evaluates programs and not individual user code. Parallelize memory management. MT Architecture Virtual Machines Software that emulates a real machine by keeping track of state. Can port software from one machine to another. Can execute software designed for a machine never physically implemented. The MT evaluator is a switch-based virtual machine. MT Evaluator Virtual Machine Implementation Heap, stack, symbol table, and code are objects implemented in C++ Instance variables For data For virtual memory implementation Public and private methods Public methods: constructor, data access methods. Private Methods: memory management routines. Paging occurs within these discretized memory spaces. No shared memory (either pages or frames) between spaces. Paging Policy Considerations Paging behavior of distributed spaces Heap FIFO ≈ LRU (FIFO has less overhead). Stack LRU superior to FIFO. Uses a special version of LRU without timestamps. Code DLL-LRU: LRU employing a circular double-linked list. Test 1: Creating a list of 10000 random numbers using FIFO Empirical Measurements for performance Heap 40000 accesses 20000 allocations 60 faults (.0015 fault rate) Stack 270013 accesses 120006 allocations 99 faults (.0004 fault rate) Future Work Comparing FIFO & LRU, other paging algorithms for code space and garbage collection. Implementation of 1st-class functions. Development of an MT Compiler for different functional languages. Design and implementation of a GC algorithm that exploits the MT architecture.