R-Code a Very Capable Virtual Computer
Total Page:16
File Type:pdf, Size:1020Kb
R-Code a Very Capable Virtual Computer The Harvard community has made this article openly available. Please share how this access benefits you. Your story matters Citation Walton, Robert Lee. 1995. R-Code a Very Capable Virtual Computer. Harvard Computer Science Group Technical Report TR-37-95. Citable link http://nrs.harvard.edu/urn-3:HUL.InstRepos:26506458 Terms of Use This article was downloaded from Harvard University’s DASH repository, and is made available under the terms and conditions applicable to Other Posted Material, as set forth at http:// nrs.harvard.edu/urn-3:HUL.InstRepos:dash.current.terms-of- use#LAA RCo de a Very Capable Virtual Computer Rob ert Lee Walton TR Octob er Center for Research in Computing Technology Harvard University Cambridge Massachusetts RCODE A Very Capable Virtual Computer A thesis presented by Rob ert Lee Walton to The Division of Applied Sciences in partial fulllment of the requirements for the degree of Do ctor of Philosophy in the sub ject of Computer Science Harvard University Cambridge Massachusetts Octob er c by Rob ert Lee Walton All rights reserved iii ABSTRACT This thesis investigates the design of a machine indep endent virtual computer the R CODE computer for use as a target by high level language compilers Unlike previous machine indep endent targets RCODE provides higher level capabilities such as a garbage collecting memory manager tagged data type maps array descriptors register dataow semantics and a shared ob ject memory Emphasis is on trying to nd universal versions of these high level features to promote interoperability of future programming languages and to suggest a migration path for future hardware The memory manager design combines b oth automatic garbage detection and an explicit manual delete op eration It p ermits ob jects to b e copied at any time to compact memory or expand ob jects It traps obsolete addresses and instantly forwards copied ob jects using a software cache of an ob ject map It uses an optimized writebarrier and is b etter suited for realtime than a standard copying collector RCODE investigates the design of type maps that extend the virtual function ta bles of C and similar tables of HASKELL EIFFEL and SATHER RCODE prop oses to include numeric types and sizes in type maps and to inline information from type maps by using dynamic case statements which switch on a type map iden tier When confronted with a type map not seen b efore a dynamic case statement compiles a new case of itself to handle the new type RCODE also investigates using IEEE oating p oint signalingNaNs as tagged data and making array descriptors rst class data RCODE uses a new register dataow execution ow mo del to b etter match the coming generation of sup erscalar pro cessors Functional dataow is used for op era tions on register values and memory op erations are treated as unordered IO Bar riers are introduced to sequence groups of unordered memory op erations A detailed semantic execution ow mo del is presented RCODE includes a shared ob ject memory design to supp ort multithreaded program ming within a building where network shared ob ject memory reads and writes take several thousand instructionexecutiontimes to complete The design runs on exist iv ing symmetric pro cessors but requires sp ecial caches to run on future withinbuilding systems v ACKNOWLEDGMENTS For an older student with a family to supp ort nancing is very imp ortant I would like to thank the following p eople and institutions that made this thesis nancially p ossible my wife my mother and my wifes family the Division of Applied Sci ences of Harvard University the Advanced Research Pro jects Agency Contract Nr FC and Professor Thomas Cheatham Contents Introduction Background SCODE RCODE VCODEs Metho dology Context Hardware Trends RCODE Feature Selection Memory Management Data Types Execution Flow Shared Ob ject Memory Summary of the Thesis Some Related Work Memory Management Goals Requirements vi CONTENTS vii Denitions Memory and Reachability Marking Scavenging and Sweeping Mutators and Frames Copying and Spaces Forwarding Swizzling Manual Deletion and Type Change Conservative Pointer Comp onents Two Level Addressing Related Work and Alternatives to Ob ject Maps Address Registers MultiPro cess SinglePro cessor Systems Address Register Loads and Stores Shared Memory MultiPro cessors Copying Stops Address Register Overhead The Interrupt Check Alternative Other Work Related to Address Registers Concurrent Garbage Detection Algorithms The Standard Marking Algorithm Ephemeral Marking Concurrent Marking Conditions Snapshot and NonSnapshot Detectors NonSnapshot Detectors Snapshot Detectors Read and Write Barriers CONTENTS viii Read Barrier Detectors Write Barriers Detectors The Write Barrier End Game Write Barrier End Thrashing Snapshot Detector Barriers Comparison of ReadBarrier WriteBarrier and Snapshot De tectors Copying Collectors Forwarding Read Barrier Forwarding Write Barrier Forwarding Replication Forwarding Two Level Addressing Comparison of ReadBarrierForwarding WriteBar rierForwarding ReplicationForwarding and Two LevelAddressing Detectors The RCODE Write Barrier The Bitstring AND Write Barrier Test Lo cal and Global Heaps A Future Use for the Write Barrier Test Deferred Action Buers Write Barrier Mutator Overhead Related Work on Write Barriers NonMutator Overhead Summary Data Types Goals CONTENTS ix Requirements Basic Data Types Memory Units Tagged Values Pointers The Pointer Type Field Scalar Types Loads and Stores Related Work on Dynamic Compilation Type Maps Issues to b e Analyzed Type Map Related Work Type Matching Static Type Matching Dynamic Type Matching in RCODE Dynamic Type Matching via Formal Types The Formal Type ANY Formal Comp onent Descriptors Constancy of Type Maps Adding Comp onent Descriptors to Type Maps Type Variables Actual Type Sp ecication An Actual Type Sp ecication Example Comp onent Descriptor Contents RCODE Comp onent Descriptors RCODE Actual Comp onent Descriptors RCODE Formal Comp onent Descriptors CONTENTS x Sub ob jects Examples of Deciencies in C Type Maps in Other Languages Array Descriptors Summary Execution Flow Goals Requirements Principals Virtual Computer Representation Dataow for Register Values RAM Memory is an InputOutput Device Based on Cases Calls Returns Barriers and Exception Throws Barriers are at Routine Top Level Return Terminates Subsequent Partitions Exception Catches are Cases Attached to Call Instructions Exception Throws are like Returns with Termination OutofLine Equals Inline Blo cks are Routines Lo ops are TailRecursive Routines Traps are like Subroutine Calls NaNs instead of Traps Either Strict or NonStrict Eager but for Traps Memory Reads have No Side Eects .