29 January 2010, 00:01 | #21 |
Banned
Join Date: Nov 2007
Location: Trondheim, Norway
Posts: 1,893
|
For this it would make sense for m68k emulator devs to do a joint effort; aranym, uae and basilisk.
|
29 January 2010, 17:47 | #22 |
Moon 1969 = amiga 1985
Join Date: Apr 2007
Location: belgium
Age: 48
Posts: 3,913
|
not a beta 64 bits yet Toni ?
do you work on it ? |
30 January 2010, 06:48 | #23 |
Registered User
Join Date: Aug 2004
Location: 19 Jump Street
Posts: 238
|
I'm not a 64-bit Windows user so I have no need for a 64-bit WinUAE, and I don't really see the point of it unless you want to address more than 4gb of memory. Speedwise it won't be much quicker, if at all. Those of you wanting a 64-bit version really don't need it. Regardless, I would like to see some progress in the area, if only to clean up the JIT code and take WinUAE closer to portability.
Converting x86 opcodes to instructions is a fairly simple problem to solve. Looking at the WinUAE source, specifically codegen_x86.c in the jit folder, I see: Code:
LOWFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) { emit_byte(0x66); emit_byte(0xc7); emit_byte(0x05); emit_long(d); emit_word(s); } LENDFUNC(NONE,WRITE,2,raw_mov_w_mi,(MEMW d, IMM s)) Code:
66C705 00112233 4455 MOV WORD PTR DS:[33221100],5544 Now that we know what the opcodes map to, we can easily create a mov_w_mi () function which, when called, will dynamically convert to the assembly required by the architecture. Now take the following: Code:
LOWFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) { emit_byte(0x50+r); } LENDFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r)) The ultimate problem is that it's extremely time consuming if you don't have adequate x86 knowledge. Want proof? The process, as I see it, is as follows: - Get OllyDBG - Drag in any Windows executable so you have something to edit - Left click on the first line, then right click and go to Follow In Dump -> Selection. The memory window should now be pointing to the memory area of that line. - Click on the first byte in the memory window and begin typing the opcode. In the case of the MOV line, I would type 66 then press OK. Click on the next byte and begin typing the next opcode, C7. Do the same with the final one, 05. - Look at the disassembly and you will see that the line has changed to reflect the instruction. eg. 66:C705 28994900 E8D3 MOV WORD PTR DS:[499928],0D3E8 It's simple, but considering codegen_x86.c is so long, it'll take much more time than it's worth. Only someone really bored should tackle it. With all that said, if Toni was talking about something else entirely, forgot this post |
30 January 2010, 06:51 | #24 |
Registered User
Join Date: Aug 2004
Location: 19 Jump Street
Posts: 238
|
Actually, ignore that post entirely. I just reread the thread. Basilisk II almost does what we want, so it's a matter of implementing the remaining code into its JIT implementation, but I have no idea how difficult that is. I assume Toni's already looked into it before, and if it's not already done, it's doubtful that it's an easy task.
|
30 January 2010, 08:53 | #25 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,505
|
I don't want to touch any intel assembly (x86 or x64)
I can merge the BasiliskII JIT _IF_ there is someone who knows how to implement the exception handler. (which is extremely confusing in x86 version..) |
30 January 2010, 21:56 | #26 |
Global Moderator
Join Date: May 2001
Location: Derby, UK
Age: 46
Posts: 2,287
|
people always talk about the "addressing 4gb" thing but there is obviously more to it than that as mame is significantly faster in x64 builds than x86
|
30 January 2010, 22:35 | #27 | |
Posts: n/a
|
Quote:
do this. WinUAE is the cat's meow and totally usable on a 64 bit machine so -I- couldn't ask for more! How much faster does one need to run an emulated Amiga? regards, DJ |
|
30 January 2010, 23:37 | #28 | |
Registered User
Join Date: Aug 2004
Location: 19 Jump Street
Posts: 238
|
Quote:
The reason why MAME x64 is faster than x86 is because running a 32-bit application on a 64-bit OS will have an inherent slowdown. This is due to a 64-bit OS spending time manipulating numbers/strings/whatever from 32-bit to 64-bit. This takes time, so that's why MAME seems significantly faster to you. Theoretically it'll be 2 times faster than the 32-bit, however realistically, it will be under 2 times (I can't say by how much without seeing or performing actual benchmarks). I stand by my statement. WinUAE doesn't need to be made 64-bit since the speed increases you will see are marginal. You can't just run an x86 application under x64 and say x64 rocks your world. It's just not possible. |
|
30 January 2010, 23:59 | #29 |
Linux snob
Join Date: Sep 2008
Location: Monkey Island
Posts: 997
|
I don't think the problem is 32bit vs 64bit. The JIT is becoming sort of a black hole. It ties WinUAE inevitably to one dated platform, while even Toni says that he doesn't want to touch it. It is extremely confusing code. It seems practically unmaintainable, and therefore I think a complete overhaul would be a good idea.
But then, it works very well, and nobody seems to be a) competent and b) willing to change it in the moment. |
31 January 2010, 13:22 | #30 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,505
|
Here is quickly compiled 64-bit winuae: http://www.winuae.net/files/b/winuae64.zip (same optimization options as 32-bit build)
- No JIT. Anyone asking about this will get his/her head examined. - No tablet support (wintab appears to be 32-bit only) - No prowizard (didn't bother to recompile, possibly not 64-bit safe anyway) - No hq2x software filters (x86 assembly only) - Something else missing? I wouldn't care less. |
31 January 2010, 18:19 | #31 |
Registered User
Join Date: Jun 2006
Location: hannover/germany
Age: 57
Posts: 28
|
No capsimg.dll support.
|
13 February 2010, 19:45 | #32 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,505
|
Updated and uploaded to working site: http://files.winuae.net/beta/winuae64.zip
(Quiet here, I guess the main point was finally understood that 64-bit WinUAE is totally useless) |
14 February 2010, 00:39 | #33 |
Miggy Ate My Hamster!
Join Date: Nov 2008
Location: Lancashire, UK
Posts: 1,566
|
I personally don't see the need for 64-bit Winuae at the moment. The 32-bit version runs perfectly fine within a 64-bit OS and i doubt there will be a huge difference in performnce even if there was a 64-bit Winuae I mean how much more performance do you need from an Amiga emulator running on a current high end machine?
|
15 February 2010, 00:10 | #34 |
Registered User
Join Date: May 2002
Location: Essex, UK
Posts: 414
|
|
15 February 2010, 10:25 | #35 |
Global Moderator
Join Date: May 2001
Location: Derby, UK
Age: 46
Posts: 2,287
|
Well, rather than make baseless assumptions I decided to actually test the x64 build
I ran some tests, first with P96Speed, which was not even a quarter of the speed of the x86 build, then I ran sysspeed in a virgin classicwb install with the results seen in the attached image (Unamed in the second column is from the x86 test with the same options/config used - config also attached) - I know benchmarks can be misleading but you can tell it's far slower in normal operation even getting sysspeed to start. It seems as though the CPU speed is not being allowed to "run free" in Fastest Possible mode in the x64 build, but that is just from an end user point of view I have no clue what is causing the problem from a technical standpoint. Anyway, unless it's an easy fix this build should be dropped in my opinion. Edit: I was going to test if it was usable in cycle exact mode but that is a non starter, it will not even display the "insert disk" animation while booting. Edit2: Used builds marked beta 11 for both tests. Last edited by Ian; 15 February 2010 at 10:38. |
15 February 2010, 11:00 | #36 |
Linux snob
Join Date: Sep 2008
Location: Monkey Island
Posts: 997
|
Did you compare non-JIT to non-JIT?
|
15 February 2010, 11:11 | #37 | ||
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,505
|
Quote:
Quote:
|
||
15 February 2010, 11:18 | #38 |
Global Moderator
Join Date: May 2001
Location: Derby, UK
Age: 46
Posts: 2,287
|
I will run some tests and attach the logs.
Of course I tested none JIT modes. Maybe I'll do a jit enabled test for reference of speed loss |
15 February 2010, 11:41 | #39 |
Global Moderator
Join Date: May 2001
Location: Derby, UK
Age: 46
Posts: 2,287
|
Here are the logs, hope there is something useful in them.
|
15 February 2010, 14:13 | #40 | |
Registered User
Join Date: May 2002
Location: Essex, UK
Posts: 414
|
Quote:
http://www.softpres.org/download |
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
64 bit winuae and JIT | pjhutch | support.WinUAE | 1 | 25 September 2011 01:29 |
Winuae on Windows 7 Ultimate 64 bit ? | weasel_ch | support.WinUAE | 6 | 02 September 2011 18:07 |
REQ: 17-Bit Artwork 2 (1988-04)(17-Bit Software) | Sea7 | request.Demos | 5 | 13 May 2011 01:07 |
8 bit to optimized 6 bit palette histogram improvements needed | NovaCoder | Coders. General | 0 | 14 April 2011 02:13 |
64-bit WinUAE? | Jim | request.UAE Wishlist | 31 | 13 April 2006 15:24 |
|
|