--- Log opened Mon Aug 05 00:00:57 2013 | ||
poke53281 | I have updated the emulator image of jor1k a little bit. Squeezed everything into 7MB. Take a look: https://github.com/s-macke/jor1k/wiki/Explore-the-emulator | 00:32 |
---|---|---|
poke53281 | It includes even the Monkey Island Demo | 00:37 |
poke53281 | But takes a while to load | 00:37 |
poke53281 | For the direct link: http://s-macke.github.io/jor1k/ | 00:39 |
poke53281 | stekern: It is much faster than you know from the other page. Thanks to a few patches you send on the mailing list I could finally reenable the TLBrefill | 01:19 |
stekern | poke53281: nice! | 02:21 |
poke53281 | Wanted to post on the Scummvm forum. As newbie no URLs allowed. My first mail was detected as spam (Come on, just three links). Now I have to contact the administrator to not be banned. | 02:29 |
poke53281 | Arghh | 02:29 |
poke53281 | Well, honestly my mail is spam for the OpenRISC project and the emulator. But at least it is on-topic. ;) | 02:42 |
stekern | mi is actually running faster than I'd expected | 03:07 |
stekern | so, how did you build scummvm for openrisc? | 03:11 |
stekern | is it using directfb? | 03:12 |
poke53281 | libsdl | 03:14 |
poke53281 | and libsdl uses the framebuffer. | 03:14 |
poke53281 | But in the image are also the directfb libraries with some demos. | 03:14 |
poke53281 | What is missing is a correct times which is synchonized with the actual time passing. | 03:15 |
stekern | ah, I see | 03:16 |
poke53281 | And stekern: This emulator is pretty much optimized. And with asm.js support it will be even faster. At the moment there is not so much difference. | 03:16 |
stekern | what's asm.js? | 03:17 |
poke53281 | assembler for Javascript :) | 03:17 |
poke53281 | http://asmjs.org/ | 03:17 |
poke53281 | a sub-set of javascript which can be optimized pretty well. Half the speed of a native compiled program. | 03:18 |
poke53281 | Firefox is the first that supports it. | 03:18 |
poke53281 | https://github.com/s-macke/jor1k/blob/master/js/worker/fastcpu.js | 03:18 |
stekern | that's impressive | 03:18 |
poke53281 | This is the code you have to write. | 03:18 |
poke53281 | Looks not so much different but there are lot of differences. | 03:19 |
poke53281 | Even "if ((a==b) && (c==d))" is not allowed | 03:19 |
poke53281 | instead of "nextpc++" I have to write "nextpc = nextpc + 1|0;" | 03:20 |
poke53281 | no arrays, just a heap which I have access with integers as pointers. | 03:20 |
poke53281 | The nice part is, that the emulator has not to be changed much. It has to emulated machine code. So it fits already pretty well in the asm.js syntax. I did the port within one day. | 03:22 |
stekern | cool | 03:32 |
stekern | so what kind of performance do you expect (roughly, in term of MIPS) | 03:33 |
poke53281 | My friend got 70MIPS running the "fbdemo". I get something around 50MIPS. But it depends strongly on the program which is running. Sometimes I get only 15MIPS. | 03:34 |
poke53281 | So it has to with the number of memory accesses I think. | 03:34 |
poke53281 | The data access can still be optimized like the instruction access. | 03:35 |
poke53281 | Or it depends on the number of device accesses. Here, the program has to leave the asm.js environment. | 03:36 |
poke53281 | I don't know but will find out. | 03:36 |
stekern | yeah, it's a bit the same as a "real" implementation, memory accesses will always be a bottle neck | 03:37 |
poke53281 | The speed of a 486 should be possible. Maybe I have already reached it. | 03:38 |
poke53281 | Oh, big endian to little endian conversion takes some time. | 03:38 |
poke53281 | Especially 8 bit and 16 bit accesses are slow under Javascript. | 03:39 |
poke53281 | And I could remove one command in the main loop if we remove the delayed jump. | 03:39 |
stekern | you can build the toolchain without the delay slot | 03:40 |
stekern | but you'll have to patch the kernel | 03:41 |
poke53281 | but I don't trust the assembler code already written | 03:41 |
poke53281 | Exactly. | 03:41 |
stekern | (and uclibc) | 03:41 |
poke53281 | At the moment the whole instruction fetch is handled with this code: | 03:43 |
stekern | so probably more pain than gain in that | 03:43 |
poke53281 | if ((checkpc ^ this.pc) >> 11) | 03:43 |
poke53281 | { | 03:43 |
poke53281 | handle wrong page | 03:43 |
poke53281 | } | 03:43 |
poke53281 | ins = int32mem[(this.instlb ^ this.pc)]; | 03:43 |
poke53281 | two lines most of the time. | 03:43 |
poke53281 | I have to the same for the data accesses. | 03:43 |
stekern | I just found the bug causing mor1kx to crash when hw tlb reload is turned off | 03:43 |
poke53281 | Well, 5% should be possible without delayed slow. | 03:44 |
poke53281 | delayed slot | 03:44 |
stekern | somehow the instruction stream isn't blocked on a tlb miss exception, this doesn't matter so much in most cases, except when the instruction at the wrongly translated address is an l.rfe | 03:44 |
poke53281 | with the endianess I don't know. 0%-100% maybe | 03:44 |
poke53281 | So, you handled the instruction l.rfe like it would have a delayed slot? | 03:51 |
stekern | no, it's just that the l.rfe is being fetched and passed through the pipeline even though it shouldn't | 03:52 |
stekern | I think I've got the right fix for that up my sleeve though =P | 03:55 |
mor1kx | [mor1kx] skristiansson pushed 1 new commit to master: https://github.com/openrisc/mor1kx/commit/1d7f430d40cabaa7ef511ae2a31890a477c8cf40 | 04:07 |
mor1kx | mor1kx/master 1d7f430 Stefan Kristiansson: cappuccino/fetch: prevent instructions to propagate on tlb miss/pagefault... | 04:07 |
poke53281 | "Error at undefined:undefined: undefined " Error message I got from the Internet Explorer. Wonder why Microsoft is still making profit. | 04:29 |
stekern | they make profit, because often it is enough to fool one person in a company to get their products used company wide | 04:44 |
stekern | bah, still crashes on atlys with 3.11 and hw tlb reload disabled | 06:41 |
blueCmd | *yawn* writing the thesis report isn't really loads of fun | 15:23 |
mschulze | what's a thesis report? | 15:32 |
blueCmd | mschulze: the final thing I have to do until I get my masters | 15:33 |
mschulze | blueCmd: I finished my bachelor thesis last week :-) so i feel with you. yes, the coding part was much more fun. | 15:34 |
blueCmd | indeed | 15:35 |
blueCmd | and congrats! :) | 15:35 |
mschulze | thanks! | 15:36 |
stekern | a fix have been committed for the bug in gcc that prevented us from having a native gcc: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12081 | 22:23 |
hno | Oh, nice turnaround time on that one.. filed 2003-08-27 | 22:30 |
stekern | =P | 22:30 |
stekern | I'm just happy it got resolved, and at least me poking at the bug report had some effect | 22:31 |
stekern | it didn't get to celebrate 10 years anniversery... so close, so close | 22:32 |
hno | you are poking too hard, let things mature first! | 22:36 |
--- Log closed Tue Aug 06 00:00:59 2013 |
Generated by irclog2html.py 2.15.2 by Marius Gedminas - find it at mg.pov.lt!