Click Here
home features news forums classifieds faqs links search
6071 members 
Amiga Q&A /  Free for All /  Emulation /  Gaming / (Latest Posts)
Login

Nickname

Password

Lost Password?

Don't have an account yet?
Register now!

Support Amigaworld.net
Your support is needed and is appreciated as Amigaworld.net is primarily dependent upon the support of its users.
Donate

Menu
Main sections
» Home
» Features
» News
» Forums
» Classifieds
» Links
» Downloads
Extras
» OS4 Zone
» IRC Network
» AmigaWorld Radio
» Newsfeed
» Top Members
» Amiga Dealers
Information
» About Us
» FAQs
» Advertise
» Polls
» Terms of Service
» Search

IRC Channel
Server: irc.amigaworld.net
Ports: 1024,5555, 6665-6669
SSL port: 6697
Channel: #Amigaworld
Channel Policy and Guidelines

Who's Online
20 crawler(s) on-line.
 152 guest(s) on-line.
 0 member(s) on-line.



You are an anonymous user.
Register Now!
 amigang:  24 mins ago
 OlafS25:  48 mins ago
 clint:  49 mins ago
 zipper:  1 hr 46 mins ago
 ppcamiga1:  1 hr 57 mins ago
 VooDoo:  2 hrs 16 mins ago
 marcofreeman:  2 hrs 35 mins ago
 pixie:  2 hrs 40 mins ago
 kolla:  2 hrs 56 mins ago
 BigD:  3 hrs 25 mins ago

/  Forum Index
   /  Amiga Emulation
      /  Productivity Amiga Emulation
Register To Post

Goto page ( Previous Page 1 | 2 | 3 | 4 | 5 )
Poll : Are you interested in productivity Amiga emulation?
Yessss, this is what I've been waiting for!
I would give it a try if it was for free.
Existing emulators are good enough for my purposes.
No thanks, I am only interested in hardware.
Get a life, man!
 
PosterThread
cdimauro 
Re: Productivity Amiga Emulation
Posted on 25-Jul-2015 9:35:40
#81 ]
Elite Member
Joined: 29-Oct-2012
Posts: 3650
From: Germany

@Wanderer

Quote:

Wanderer wrote:

Granularity: without having really seen WinUAE's JIT code, my intuition would be to translate all opcodes until a jump/branch happens or a maximum number of opcodes is translated. If the code is small and the jump is forward in the code, it could be included too, just loops won't work since the execution time is unpredictable.

If you treat a block as an atomic unit of execution, you have to explicitly check for loops (inside it, of course) and provide some "escapes". Analyzing the code you can take smart decisions against trivial, but also very common cases.

For example, using a DBRA we know that the counter, which is 16-bit, will expire soon. So, you can leave this block as atomic, because the loop will be executed 65536 times at most, and it's acceptable (we are talking about a compiled/native code!).

You can also intercept the usual SUBQ + BNE and take the same decision IF the SUBQ is a byte or word. If it's a long, well, you can take a look a the previous instructions and see if the counter is loaded with a reasonable value. But it's quite complicated.

For the general case, it's better to put an internal counter which keeps track of how many times you executed this block (without exiting from it): problem solved.
Quote:
Rollout of n loops would be possible though. Ideally we always get around the same "N" instructions in one chunk.

Let's do it when you introduce some "hot spot" algorithm.

For all other things that you wrote, I agree... or I wait to see something more.

 Status: Offline
Profile     Report this post  
Wanderer 
Re: Productivity Amiga Emulation
Posted on 25-Jul-2015 13:04:01
#82 ]
Cult Member
Joined: 16-Aug-2008
Posts: 654
From: Germany

@cdimauro

As I said, you target N instructions.

If you want N = 1000, and you see a loop of 100 instructions, you can roll it out 10 times (rolling out is simple). This way you get at most 1000 instructions i one block, sometimes less if the loop terminates. But you make pretty good use of the host CPU without too many interruptions.

_________________
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes and many more...
Homepage: http://www.hd-rec.de

 Status: Offline
Profile     Report this post  
cdimauro 
Re: Productivity Amiga Emulation
Posted on 25-Jul-2015 16:42:24
#83 ]
Elite Member
Joined: 29-Oct-2012
Posts: 3650
From: Germany

@Wanderer: you can use such big blocks only unrolling loops. That's because, on average, there's a jump instruction every ten. It means that normally you'll get a lot of small decoded blocks, if you follow the rule of: "I start decoding and I stop when I find a jump".

The only way to "defrag" such myriad of micro-blocks is by using a smart policy of "fusion", in order to get bigger chunks. But, again, it's a bit premature talking of such stuff (which includes block chaining).

 Status: Offline
Profile     Report this post  
Goto page ( Previous Page 1 | 2 | 3 | 4 | 5 )

[ home ][ about us ][ privacy ] [ forums ][ classifieds ] [ links ][ news archive ] [ link to us ][ user account ]
Copyright (C) 2000 - 2019 Amigaworld.net.
Amigaworld.net was originally founded by David Doyle