When will the Iris web browser be released to mere mortals
Pages: 1 2
David R. Lane (77) 766 posts |
Chris Hughes post came while I was writing mine. Yes, I also read the ReadMe, and am trying to ‘get my head round’ the technicalities. I don’t pretend to understand technicalities of Webkit; but, if the explanation given by Chris Hughes (ROD?) is correct, then won’t Webkit browsers run on other ARM platforms with other OSes (e.g. Apple’s Safari?) also corrupt data? |
Chris Gransden (337) 1207 posts |
The Javascript JIT in Iris looks to be running quite slow. At least according to the Kraken Javascript benchmark.
|
Jeffrey Lee (213) 6048 posts |
The risk of data corruption from running programs with Alignment Exceptions off is down to the fact that ARM changed the behaviour of unaligned loads/stores.
There’s also the opposite problem (new program on old CPU could fail because of the differences in unaligned load/store behaviour), but for that scenario the program is likely to have safety checks to ensure it’s running on a compatible CPU. Other OS’s generally solve these compatibility issues by being a bit more aggressive with cutting off support for old builds of programs (and having much better infrastructure to help ensure programs are regularly rebuilt with the latest compilers/libraries). |
David R. Lane (77) 766 posts |
@Jeffrey
So, do you know how our versions of Webkit and Iris were compiled, on a newer compiler for ARMV7 (or later) or on an old compiler compatible with ARMV6 or earlier? |
Jeffrey Lee (213) 6048 posts |
They’ll be using the new unaligned load/store behaviour. The only reason to use the old behaviour would be if they were specifically targeting the Iyonix, RiscPC or Archimedes – good luck getting something as resource-hungry as WebKit running acceptably on those. |
David R. Lane (77) 766 posts |
Good. So why are we asked in the Iris readme to turn Alignment exceptions off? |
Alan Adams (2486) 1149 posts |
Because the JIT part uses Thumb instructions, which are 16-bit, i.e. half-word, and somewhere in that library are some unaligned loads. I guess it might get fixed in due course, not least because Linux should have the same issues – alignment exceptions are a function of the CPU, not the operating system. (Unless the Linux compiler fixes the unaligned loads…) |
Jeffrey Lee (213) 6048 posts |
If alignment exceptions are on, the CPU will trigger an abort/exception whenever software tries to perform an unaligned load/store. Iris wants to use unaligned loads/stores, so in order to allow it to run, alignment exceptions must be turned off. |
Colin Ferris (399) 1818 posts |
Wouldn’t it be better for users to give reports on the errors? |
Stuart Swales (8827) 1357 posts |
How about Iris tries an explicit unaligned load (wrapped in exception handler) in main() and issues a dire warning if it does raise the exception? |
David R. Lane (77) 766 posts |
@Alan What I find interesting is that Linux with its vast numbers of programmers has the same issues. |
Jeffrey Lee (213) 6048 posts |
To clarify, there are (up to) three ways in which a CPU can be configured:
If you’ve got some code which wants to access unaligned data, compiling the program to use the new behaviour will result in the best performance. Compiling it to not use unaligned loads/stores at all will result in the worst performance. Compiling it to use the old behaviour will be somewhere in the middle (actually, probably the same performance as if it didn’t use unaligned loads/stores at all, since the old behaviour was only useful in a small number of situations). So new-style unaligned loads/stores are A Very Good Thing for performance. The Linux distributions like Linux to be fast, so for distributions which target ARMv6+ they’ll almost certainly be running with the CPU configured to use the new behaviour. From WebKit’s perspective, the only ARM devices they care about are capable of using the new unaligned load/store behaviour, and the only OS’s they care about are running with the new behaviour enabled. So they’ve written the JIT to produce code which uses the new behaviour. Also note that ARMv6 is the only CPU architecture which allows a choice between the old & new behaviour; newer CPUs only support the new behaviour (or turning alignment exceptions on to disallow unaligned loads/stores), while older CPUs only support the old behaviour (and might not have a way of turning alignment exceptions on). IIRC there was a plan that after RISC OS 5.24 was released, we were going to change the ROM build settings so that the (ARMv6+) ROMs are built to use the new unaligned load/store behaviour. I’m not sure what happened to that – maybe it just got forgotten. |
David R. Lane (77) 766 posts |
Thanks for that explanation. |
Steve Pampling (1551) 8172 posts |
Taking those two comments it sounds like we’re currently complaining about real world application performance (browsers etc) and then shooting ourselves in the foot by not enabling the faster version. |
David Feugey (2125) 2709 posts |
With the Kraken JS Benchmark, I suspect Iris runs into problems with memory allocation, network transfers, CMT, etc. Smaller benchs, as SunSpider, give very good results here. |
Erich Kraehenbuehl (1634) 181 posts |
I got Iris now. My experience so far: That means we have finally a comparable browser on Risc Os! Therefore a big thank you to the developpers. Well done! |
Pages: 1 2