[virtmach] Definition a virtual machine ?

Stephen Pelc sfp@mpeltd.demon.co.uk
Thu, 18 Nov 1999 13:06:23 -0000

> > We added direct 
> > support for local variable frames in main memory, and changed 
> > the encoding several times after profiling the compiler output.
> I'm not sure what you mean by "main memory". Does that mean off-stack,
> off-heap variables (like C "static" variables inside functions)?
> Or does that mean strictly framing the return stack (as opposed to
> free-form return stack in FORTH), or adding a third stack?
In a canonical stack machine, such as the one used by most Forth 
systems, you cannot assume that the stacks are in the main 
address space. The model used by most languages such as C 
assumes that local frames are in the same address space as 
globals. Consequently the SENDIT/OTA VMS provide special support 
for local frames, and the data/return stacks are not 
addressable. This also has security implications.

> Maybe it's simpler for you to publish a URL, if there are publicly
> available specifications for SENDIT/OTA.
See www.europay.com for the OTA specifications.

> (also, where's SENDIT/OTA within its life cycle?).
In public deployment in several countries. The banks are still 
recovering from Y2K and Euro problems.

> One concern is also about certification and authentification
> of dynamically loaded code: how does SENDIT/OTA compare to embedded JVM?
OTA is used in live payment systems - smart-card and credit card 
transactions. It has to be secure! Much of the security is 
provided outside the VM, but there are parts of the VM design 
that are they way they are for security reasons.

> What I proposed was that the latter backend be not a bundle of a
> chip+runtime+interpreter, but rather a bundle of a chip+runtime+compiler.
There is nothing in the SENDIT/OTA specs to preclude using a 
compiler. We have prototyped compilers for SENDIT, but in an 
environment such as OTA, programs have to be stored in their 
most compact form (the byte code), and are installed when the 
card is inserted in the terminal. On slow CPUs, the time taken 
to compile and install can be longer than than the program 

We have new designs in our current PRACTICAL project for "token 
sufaces" that are tuned to larger CPUs in your sort of 
environment, and the preliminary results are very encouraging, 
with much less performance degradation compared to native 
compilers. However, compared to SENDIT/OTA, the code density of 
the distributed code is about 50% worse (1.5 times the size). 
The PRACTICAL system uses the VFX compiler techniques discussed 
on our web site.

Stephen Pelc, sfp@mpeltd.demon.co.uk
MicroProcessor Engineering Ltd - More Real, Less Time
133 Hill Lane, Southampton SO15 5AF, England
tel: +44 1703 631441, fax: +44 1703 339691
web: http://www.mpeltd.demon.co.uk