The Design of the Inferno Virtual Machine. Introduction



Similar documents
Jonathan Worthington Scarborough Linux User Group

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

General Introduction

picojava TM : A Hardware Implementation of the Java Virtual Machine

Cloud Computing. Up until now

System Structures. Services Interface Structure

Processor Architectures

Effective Java Programming. efficient software development

How Java Software Solutions Outperform Hardware Accelerators

Instruction Set Architecture (ISA)

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz

Memory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation

CSCI E 98: Managed Environments for the Execution of Programs

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Developing Embedded Software in Java Part 1: Technology and Architecture

1/20/2016 INTRODUCTION

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

Practical Performance Understanding the Performance of Your Application

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

C# and Other Languages

Novel Systems. Extensible Networks

Instruction Set Architecture

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. Oct 2003 Presented to Gordon College CS 311

IT 3202 Internet Working (New)

Java and Real Time Storage Applications

CHAPTER 7: The CPU and Memory

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Chapter 3 Operating-System Structures

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

1 The Java Virtual Machine

Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

A Practical Method to Diagnose Memory Leaks in Java Application Alan Yu

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Java Garbage Collection Basics

02 B The Java Virtual Machine

Some Future Challenges of Binary Translation. Kemal Ebcioglu IBM T.J. Watson Research Center

Computer Organization and Architecture

Multi-core Programming System Overview

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra

Stack Allocation. Run-Time Data Structures. Static Structures

Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors

Caching and the Java Virtual Machine

Restraining Execution Environments

Virtual Machine Learning: Thinking Like a Computer Architect

İSTANBUL AYDIN UNIVERSITY

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

CPU Organization and Assembly Language

Instruction Set Architecture (ISA) Design. Classification Categories

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-12: ARM

Using jvmstat and visualgc to Solve Memory Management Problems

TOP TEN CONSIDERATIONS

Mobile Devices - An Introduction to the Android Operating Environment. Design, Architecture, and Performance Implications

1.1.1 Introduction to Cloud Computing

Instruction Set Design

(Refer Slide Time: 00:01:16 min)

1. Overview of the Java Language

Addressing The problem. When & Where do we encounter Data? The concept of addressing data' in computations. The implications for our machine design(s)

361 Computer Architecture Lecture 14: Cache Memory

Java Real-Time Distributed Processing over Chorus/OS

12. Introduction to Virtual Machines

a storage location directly on the CPU, used for temporary storage of small amounts of data during processing.

Mission-Critical Java. An Oracle White Paper Updated October 2008

Chapter 2 System Structures

Online Recruitment System 1. INTRODUCTION

Java Embedded Applications

Consolidating Multiple Network Appliances

CMPT 165: The Internet, Part 3

Performance Management for Cloudbased STC 2012

LSN 2 Computer Processors

Chapter 3: Operating-System Structures. Common System Components

Chapter 5 Names, Bindings, Type Checking, and Scopes

Garbage Collection in the Java HotSpot Virtual Machine

The Hotspot Java Virtual Machine: Memory and Architecture

This presentation covers virtual application shared services supplied with IBM Workload Deployer version 3.1.

Virtual Machines as an Aid in Teaching Computer Concepts

VXLAN: Scaling Data Center Capacity. White Paper

Validating Java for Safety-Critical Applications

Client/Server Computing Distributed Processing, Client/Server, and Clusters

Parrot in a Nutshell. Dan Sugalski dan@sidhe.org. Parrot in a nutshell 1

Highly Available Mobile Services Infrastructure Using Oracle Berkeley DB

Cloud Networking Disruption with Software Defined Network Virtualization. Ali Khayam

Web Analytics Understand your web visitors without web logs or page tags and keep all your data inside your firewall.

System Software Integration: An Expansive View. Overview

Week 1 out-of-class notes, discussions and sample problems

Habanero Extreme Scale Software Research Project

Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX

Inside the Erlang VM

Outline. Institute of Computer and Communication Network Engineering. Institute of Computer and Communication Network Engineering

MID-TIER DEPLOYMENT KB

CPS221 Lecture: Operating System Structure; Virtual Machines

INSTRUCTION LEVEL PARALLELISM PART VII: REORDER BUFFER

An Analysis of Container-based Platforms for NFV

Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University

GPU Computing with CUDA Lecture 2 - CUDA Memories. Christopher Cooper Boston University August, 2011 UTFSM, Valparaíso, Chile

OKTOBER 2010 CONSOLIDATING MULTIPLE NETWORK APPLIANCES

Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior

Parallel and Distributed Computing Programming Assignment 1

Transcription:

The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical Intrinsically portable More important because of networking Should be fast enough for general use Conflicting Goals Hide difference between architectures Must run fast on general purpose machines Want VM to be competitive with compiled programming languages Claim: design for on-the-fly compilation not interpretation

Context Fundamental shift in Telecom industry toward data communications More diverse networks LAN, Wireless, Fiber IP, Ethernet, ATM Technology changing more quickly hardware lifetime much shorter Need software systems that are portable, small, interoperate, based on network computing Current projects: Voice+IP router, firewall, ITS Inferno Environment for portable network-centric applications Server and client architecture Limbo, Dis VM Virtual Operating system same system interfaces and services everywhere Virtual network same network interfaces and facilities everywhere Virtual graphics environment same look and feel everywhere

Dis Instructions Memory-to-memory architecture looks like a CISC cpu, not an abstract machine Three operand instructions OP src1, src2, dst src1, dst are general memory addresses src2 restricted to constants and indirect addresses with small offsets All memory addresses are offsets from stack or module pointer no absolute addresses software memory protection Dis Instructions Special instructions for processes, communications, etc. Pointers are explicit, and pointer cells store only valid addresses or nil makes reference counting possible (c.f. Java which puns cells, requiring runtime type tagging for r.c.

Desires: small memory Garbage collection constant, predictable overhead for real-time fast collection No single GC can do this; Dis uses hybrid Exact reference counting instant free, bounded time, smallest footprint RT incremental coloring garbage collector recovers circular references, runs during idle time Garbage collection Conservative mark and sweep requires more memory typical for Java implementations larger arena for efficient execution larger high-water mark because of uncollected garbage GC algorithm selection is done during code generation in the language compiler

Interpretation Memory traffic depends on instruction set. Consider: c = a+b Stack machine (SM) implementation push b #LS push a #LS add #LLS store #LS Memory-to-memory (MM) add a, b, c #LLS Interpretation MM has less memory traffic, but costs are masked by need to decode operands. SM s implicit operands simplify instruction decode and reduce overhead of fetch execute

Compilation Tradeoffs change when using JIT compiler Although JIT for SM or MM can produce the same code, where and when the work is done different Want to do all static analysis in front end (language to VM) compiler Compilation Easier to approach this in MM: Storage allocation done statically at compile time no puns In SM: Stack floats; cells change type JIT must allocate storage and register to map onto native instructions These conditions dominate because in production, will always use JIT only interpret when debugging

Existing processors It is better to match the design of the VM to the processor than the other way around Existing processors are register based, not stack based VM should emulate the predominant underlying architectures Stack machines are easy to interpret harder and more expensive to JIT Special-purpose processors What about designing a special processor for VM Considerations are similar to designing JIT register relabeling <=> register allocation naïve stack machines produce more memory traffic using stack caches to reduce traffic lengthens critical paths and cycle times So Dis would be a better starting point but it s easily compiled so why bother?

Special-purpose processors In other words, JVM is hard to compile, so silicon looks attractive; a better design would make silicon unnecessary Language-specific processors have never succeeded They re always behind the technology curve Besides, special purpose silicon negates portability goal of a VM Conclusion Better to design VM to match processor architectures than the other way around Still need more work to meet our goals performance isn t as good as we d like register allocation needs to be done better Dis compiles quickly to native code that runs 30%-50% slower than native C. Only a few months of processor design time Design toward on-the-fly compilation, not interpretation