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.