Hi Folks,
I'd like to spearhead a port to IA64 on OpenVMS, which does not support IA32 subset. Am I correct that this is a deal breaker in that true 64 bit is a major initiative?
--
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Amount of bits is not an issue here at all, for example V8 already runs on x86-64 just fine.
Making V8 work on 64-bits is much much bigger than changing some types
around and changing the scons. It probably deserves some fairly big
design discussions, and I would guess it would take at least a few
months, and it will be hard not to fracture the code a bunch, with
separate code for 32/64 bit (GC, object layout, etc).
Despite confusingly similar names ia32 and IA64 (Itanium) are *very* different architectures.
I'd say generating efficient code for IA64 is much harder because compiler has to carefully schedule instructions in instruction bundles (IA64 is VLIW) to saturate execution units and avoid dreadful stalls.
[though I heard that newest Itanium micro-architecture actually is more forgiving to poor scheduling and is capable of a good built-in out-of-order execution, but I am not closely following this things so I might be wrong]
--
Vyacheslav Egorov
On Sat, Apr 27, 2013 at 4:50 AM, <jchi...@gmail.com> wrote:
Hi Folks,
I'd like to spearhead a port to IA64 on OpenVMS, which does not support IA32 subset. Am I correct that this is a deal breaker in that true 64 bit is a major initiative?
--
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to a topic in the Google Groups "v8-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/v8-dev/HnPDu-HygB4/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to v8-dev+un...@googlegroups.com.
In 2009 v8 didn't have a 64bits port, now as mentioned by Vyacheslav, it has (for intel x86-64). So the amount of bits is not a problem.
Let me repeat: at the moment V8 works on x86-64 just fine, both Linux builds of Chromium and node.js on various 64bit OSes are using it without any issues.
> And therein lies the problem: x86-64 instruction set isn't compatible with IA64 instruction set
That is exactly what we are talking about: it's instruction set that is the issue, not the amount of bits (32 vs. 64).
> And therein lies the problem: x86-64 instruction set isn't compatible with IA64 instruction set
That is exactly what we are talking about: it's instruction set that is the issue, not the amount of bits (32 vs. 64).
There is a Mips instruction set simulator. It's probably going to be the case that it will have to be a starting point. Or, is the mismatch between the RISC and VLIW too great to use that as a starting point?
On Sat, Apr 27, 2013 at 6:31 PM, Jeffrey Chimene <jchi...@gmail.com> wrote:
There is a Mips instruction set simulator. It's probably going to be the case that it will have to be a starting point. Or, is the mismatch between the RISC and VLIW too great to use that as a starting point?
A few points:
- There is also an ARM simulator; the two are fairly similar.
- I'm not sure what problem you're trying to solve by using either of them as a "starting point" for IA64. I would probably use the x64 port as a basis because it matches IA64's pointer width.
- The point of having simulators is that hardware architecture doesn't matter, as only compiled C++ code is executed. Theoretically, you should be able to compile V8 with the ARM simulator on an IA64 box today, it should "just work".
- Simulators are slow. On an x86 workstation, running ARM code in the ARM simulator is about 100x slower than native ia32 code. Meaning: the ARM/MIPS simulators are super useful for development and testing, but rather pointless for production use cases.
- As a consequence of the above, it might be a good idea to implement an IA64 simulator, at least if you want any help from people who don't have access to IA64 hardware (which isn't exactly common). For this particular sub-task, it would of course make sense to take a look at how the existing simulators are implemented.
- Since you suggested to spearhead an IA64 port, I would have assumed that you are familiar with the characteristics of that architecture. If you aren't, then this may be a good time to discard the idea ;-)
- Creating a new port is a significant amount of work. It takes at least one person-year to get the port up and running initially (about 50K LoC including lots of hand-written assembly need to be ported), and after that it's roughly one person's full-time job to keep it up to date. It is extremely unlikely that the V8 project would accept responsibility for maintaining an IA64 port after it is finished; you would have to do that yourself for the foreseeable future.
- Personally I'm not convinced that investing time into the "Itanic" architecture is worthwhile, but that's obviously your choice. Feel free to fork V8 on github and get cracking!
--