+ All Categories
Home > Documents > 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer...

1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer...

Date post: 26-Dec-2015
Category:
Upload: arline-harris
View: 214 times
Download: 0 times
Share this document with a friend
Popular Tags:
47
1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz
Transcript
Page 1: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

1

Ralf Scheidhauer

PS Lab, DFKIMay 18, 1999

Design, Implementierung und Evaluierung einer virtuellen Maschine

für Oz

Page 2: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

2

Oz

Developed at DFKI since 1991

DFKI Oz 1.0 (1995), DFKI Oz 2.0 (1998)

Mozart 1.0 (1999)

180 000 lines of C++

140 000 lines of Oz

65 000 lines documentation

Since 1996 collaboration with SICS and UCL

Application strength system:

multi agents (DFKI, SICS), computer-bus scheduling (Daimler),

gate scheduling (Singapore), NL (SFB), comp. biology (LMU),...

Page 3: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

3

Related Work

LP, CLP [Warren 77], [Jaffer Lassez 86]

Concurrency [Saraswat 93]

AKL [Janson Haridi 90, Janson 94]

FP [Appel 92]

Page 4: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

4

Overview

Language L

Virtual machine

Implementation

Evaluation

Page 5: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

5

The Language L

Core language of Oz

Presentation as extension of a sub language of SML

Logic variables

Threads

Synchronization

Dynamic type system

Extensions via predefined functions

lvar() logic variable

unify(x,y) unification

spawn(f) thread creation

Page 6: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

6

Graph Model

Integers

Tuples

Functions

Cells (references)

Constructors

TUPLE

INT/3 TUPLE CELL

INT/5CON

Strict evaluation of expressions

e0 e1 ...

Page 7: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

7

Why Logic Variables?

Programming techniques: backpatching, difference lists, ...

Cyclic data structures

Tail recursive definition of many functions (append, map, ...)

Synchronization of threads

Search

Page 8: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

8

Logic Variables: Creation and Representation

let val x = lvar()

in (4,x,23)

end

TUPLE

INT/4 VAR INT/23

Page 9: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

9

Logic Variables: Unification

TUPLE

unify( , )

TUPLE

INT/3 VAR INT/2 INT/3 INT/5 VAR

TUPLE TUPLE

INT/3 INT/2 INT/3 INT/5

Page 10: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

10

Threads

Creation

spawn(f)

e1

thread1

en

threadn

. . .

f()

threadn+1

Synchronization: logic variables (x+y)

Fairness

store

Page 11: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

11

Virtual Machine

Page 12: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

12

Model

scheduler

threads

heap

code

...move Y3 X0move G5 X1apply G2 2return...

stac

k X-r

egs

Page 13: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

13

V-Addressing

Address toplevel variables via V-registers

Loader builds data on the heap

code contains direct references into heap

Example

fun f(l,u) = map(fn(x)=>h(x)+g(x)+u, l)

h and g in V-register reduced memory consumption

Page 14: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

14

Dynamic Code Specialization

fastApply V3

apply V3 2

specApply V3 2

Page 15: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

15

Unification in the Machine Model

TUPLE

unify( , )

TUPLE

INT/3 VAR INT/2 INT/3 INT/5 VAR

TUPLE TUPLE

INT/3 REF INT/2 INT/3 INT/5 REF

Page 16: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

16

Synchronization = Suspension + Wakeup

thread

(x+y)

.

.

.

VARx:

VARy:

suspension

. . .

Page 17: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

17

Synchronization = Suspension + Wakeup

Wakeup: unify(x,23)

threadREFx:

VARy:

(x+y)

.

.

.

. . .

to the scheduler

INT/23

Page 18: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

18

Implementation

Page 19: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

19

Emulator vs. Native Code

virtual machinevirtual machine

native codenative codeemulatoremulator

implementation

portable

flexible

fast (?)

Page 20: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

20

Threads

X registers: once per machine, not per thread

Save live X registers upon preemption/suspension:

pessimistic guess per function

Exact determination during GC by code interpretation

Page 21: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

21

Representation of the Graph: Naiv

type

register heap

...

...

INT23

Page 22: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

22

Representation of the Graph: Optimized

register

23 INT

PTRtype...

...

...

heap

Page 23: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

23

Representation of the Graph: Logic Variables

register heap

23 INT

PTRVAR ...

PTRREF ...

Page 24: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

24

REFREF

WAM

Logic Variables: Optimized

register heap

23 INT

REF

REF

...

VAR

PTRtype...

...

...

register

Page 25: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

25

Moving More Tags

register heap

23 INT

REF

...

PTRtype

...

TPL

...

...

...

Page 26: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

26

Evaluation

Page 27: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

27

Comparison with Emulators

Mozart is one of the fastest emulators

Competitive with OCAML and Java

Significantly faster than Moscow ML

Twice as fast as Sicstus Prolog and Erlang

Page 28: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

28

Comparison with Native Code Systems

Few memory accesses (i.e. arithmetics)

Mozart is easily one order of magnitude slower

Memory intensive (symbolic computation)

Difference only approx. factor 2-3

Mozart in single cases faster than native ML or C++

Page 29: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

29

Threads

Threads in Mozart are very light weight

Leading position both for creation and communication

Up to nearly 2 orders of magnitude faster than Java (creation)

Page 30: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

30

Summary

Extended sub language of SML by logic variables and threads

Machine model

V - registers

Dynamic code specialization

Synchronization

Implementation

Efficient implementation of threads

Tagging scheme

Evaluation

Mozart is one of the fastest emulators

Compares well with native code systems on its target applications

Mozart has very light weight threads

Page 31: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

31

Backup Slides for the Discussion

Page 32: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

32

Logic Variables vs. Functions

Runtime

fibonacci takeushi

speedup 1.18 1.45

Memory (large scale applications)

Use approx. 18 % of heap memory

Approx. twice as much as objects

Approx. as much as records

Page 33: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

33

Memory Profile

6%8%

20%

24%

18%

24%functionsobjectsrecordslistsvariablesother

Page 34: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

34

Mandelbrot (Floats)

0 1 2 3

C++

ACL

SML

OCAML(N)

JDK

OCAML(E)

Sicstus

Mozart 1.00

2.65

1/1.11

1/1.58

1/8.77

1/11.23

1.37

1/39.24

Page 35: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

35

Quicksort with Lists

0 2 4 6

C++

ACL

SML

OCAML(N)

JDK

OCAML(E)

Sicstus

Mozart 1.00

2.43

1.57

5.19

1/2.59

1/3.69

1/2.99

1/3.46

Page 36: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

36

Quicksort with Arrays

0 0.5 1 1.5

C++

ACL

SML

OCAML(N)

JDK

OCAML(E)

Mozart 1.00

1.25

1/1.48

1/4.01

1/7.92

1/1.52

1/20.86

Page 37: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

37

Naiv Reverse

0 5 10 15

C++

ACL

SML

OCAML(N)

JDK

OCAML(E)

Sicstus

Mozart (F)

Mozart (LV) 1.00

1.81

1.59

11.82

1.04

1/1.60

2.05

1.70

1.51

Page 38: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

38

Threads: Creation

1.16

49.86

2.61

1.94

1.00

0 20 40 60

SML

JDK

OCAML(E)

Erlang

Mozart

Page 39: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

39

Threads: fib(20)

0 200 400 600 800

SML

JDK

OCAML(E)

Erlang

Mozart 1.0

1.09

4.73

1/1.14

708.06

Page 40: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

40

Tagging Scheme of Mozart

4 bit tag, but only 2 bit loss for address space (=1GB):

align structures on word boundaries

Lists, tuples: no need to unmask before type test

REF - tag

no unmask before test necessary

no unmask before deref

Page 41: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

41

Threads

X

PCLG

task

thread

move Y3 X0move G5 X1apply G2 2...

Page 42: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

42

Emulators: Optimization Techniques

Threaded code

Instruction collapsing

Register access

Specialization

Example

move Y5 X3

move Y6 X1 34 11 (SPARC)

Page 43: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

43

Address Modes (Registers)

name liveness notation usage

Xthread Xi temp. values, parameters

local fct-body Li local variables

global function Gi free variables

virtual program Vi constants

Page 44: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

44

Threads

Fairness: status-register

check on every function call (and return)

GC IOPRE ....

Page 45: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

45

L

e ::= x variable

| n integer

| (e1,...,en) tuple

| fn (x1,...,xn) => e function

| e0(e1,...,en) application

| let val x = e in e end variable declaration

| let con x in e end constructor declaration

| case e of p1 => e1 | ... | pn=>en pattern matching

lvar : () -> logic variable

unify : -> () unification

spawn : (() -> ) -> () thread creation

Operators

Page 46: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

46

Tagged Xi = X[*(PC+1)]; 2 0 (2)DEREF(Xi); 2 0if (isInt(getTag(Xi))) { 1+2 0 Tagged Xk = X[*(PC+2)]; 2 2 DEREF(Xk); 2 0 if (isInt(getTag(Xk))) { 1+2 0 int aux = intValue(Xi)+intValue(Xk); 1+1+1 2 XPC(3) = oz_int(aux); ovflw+shifttag+store 3+2+2 0 (2) DISPATCH(4); 3 3 } ---------------} 277(11) no derefs 23 no type tests 17 overflow 6

add Xi Xk Xn

Page 47: 1 Ralf Scheidhauer PS Lab, DFKI May 18, 1999 Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz.

47

Java: JIT vs. Emulator

speedup

quicksort (array) 18.8

fib (int) 14.2

fib (float) 4.9

queens 6.1

nrev 2.0

quicksort (list) 2.3

fib (thread) 1.1

mandelbrot 5.4

deriv (virtual) 1.9


Recommended