> Indeed. From the paper:
> 
> "A long-running question in the design of VMs is whether stack
> architecture or register architecture can be implemented more
> efficiently with an interpreter. On the one hand stack architectures
> allow smaller VM code so less code must be fetched per VM instruction
> executed. On the other hand, stack machines require more VM
> instructions for a given computation, each of which requires an
> expensive (usually unpredictable) indirect branch for VM instruction
> dispatch. Several authors have discussed the issue [12, 15, 11, 16]
> and presented small examples where each architecture performs better,
> but no general conclusions can be drawn without a larger study."
> 
> It later states:
> 
> "We find that the increased cost of fetching more VM code [in register
> machines] involves only 1.07 extra real machine loads per VM
> instruction eliminated. Given that VM dispatches are much more
> expensive than real machine loads, this indicates strongly that
> register VM code is likely to be much more time-efficient when
> implemented with an interpreter, although at the cost of increased VM
> code size."
> 
> However:
> 
> "As the cost of dispatches falls, any benefit from using a register VM
> instead of a stack VM falls. However, switch and simple threaded
> dispatch are the most commonly used interpreter techniques, and switch
> is the only efficient alternative if ANSI C must be used."
> 
> Hope it helps. :-)

Yes, but they are talking here about interpreter loop. Performances in
Neko are not focused on the interpreter itself (for example I'm not
using a threaded loop) but on the x86 JIT compiler which eliminate all
the dispatching cost since bytecode is mapped to native opcodes.

Nicolas



-- 
Neko : One VM to run them all
(http://nekovm.org)

Reply via email to