VOGONS

Common searches


Search results

Display options

Re: x86 emulator: optimizing RAM-heavy processes?

The TLB reads have been optimized for faster access, caching the MRU item. Also optimized the PIQ fetching from memory to use a faster ordering of handling it's variables. It's now at up to 38%/39% at 3 MIPS. Windows 95 is now running at ~22% on average, sometimes dipping to 19% and sometimes …

Windows 95 ET4000 DAC detection?

I've currently emulated a Sierra SC11487 DAC on the ET4000 board. When I open up dxdiag, I see that it knows of the Tseng Labs ET4000, with oddly enough 0.5MB of memory(1MB is installed), a display mode of 640 x 480 (16 bit), unknown monitor(not setup for this OS(Windows 95 RTM)), the mini VDD being …

Re: x86 emulator: optimizing RAM-heavy processes?

I feel your pain with this, I spent a couple of months optimizing just memory reads and writes for my program. I don't have any numbers off the top of my head and it may not apply to modern processors, but in general I avoid indirect jumps as much as possible. So I avoid things like function …

Re: x86 emulator: optimizing RAM-heavy processes?

Hmmmm... Can't seem to get it past 37% speed(at 3MIPS in IPS clocking mode). Pretty much optimized everything that has to do with the PIQ reading memory(as well as the PIQ function fetching opcodes into the FIFO). The heaviest part still seems to be just the prefetching process reading the bus(bus-> …

Re: x86 emulator: optimizing RAM-heavy processes?

Another small PIQ improvement: optimized 8-bit FIFO buffer reads(~0.2% less) and writes(~0.6% less) by optimizing the check for free size(to be able to read/write a byte from the buffer) to perform a simplified check(instead of the full multibyte check) to check against a simple buffer full/empty …

Re: x86 emulator: optimizing RAM-heavy processes?

Also, what I'm currently testing on mostly is the BIOS POST running(which doesn't enable paging at all). I already see 36.58% being spent on executing the virtual CPU, of which 16.99% on reading opcodes and prefixes(and 12.37% on executing the instructions themselves), of which 12.79% fetching the …

Re: x86 emulation optimizing RAM-heavy processes?

I'm already using a doubly-linked list for the TLB's emulation, which sped it up quite a bit. That's just reading a pointer for most accesses, only moving other items to the head of the queue when it's not the most recent(or allocated at all) entry. It will still slowdown a bit in protected mode, …

Re: x86 emulation optimizing RAM-heavy processes?

Just optimized the prefetching process to not fetch more than the maximum instruction length(as supported by the protection mechanism) when handling IPS clocking mode on a 80286+. So a 80286 will only fetch until it reaches 10 bytes filled in the PIQ, a 80386 and up with 15 bytes in the PIQ(instead …

Re: x86 emulator: optimizing RAM-heavy processes?

I know that for each instruction executed, it will prefetch the instruction length's worth of bytes from memory when starting the next instruction, to keep the prefetch buffer filled. So at worst, a 12-byte instruction will make it fetch 12 bytes from memory, filling the PIQ. The worst case scenario …

Re: x86 emulation optimizing RAM-heavy processes?

I'm already using a doubly-linked list for the TLB's emulation, which sped it up quite a bit. That's just reading a pointer for most accesses, only moving other items to the head of the queue when it's not the most recent(or allocated at all) entry. It will still slowdown a bit in protected mode, …

x86 emulator: optimizing RAM-heavy processes?

I notice in my profiler that most execution time is actually seeming to be spent purely on handling memory accesses in UniPCemu. So that's mostly prefetching and memory checking itself(protection checks), according to the profiler. Both are already heavily optimized to use as much precalculated data …

Re: 8088 MPH: We Break All Your Emulators

That just leaves the cycle-accurate part(the raster beam racing) and the Delorean Sprite recompiler just before the fading out to white making the odd or even(I think it was the odd) scanlines of the DeLorean sprite blink) while scrolling the bottom half of the DeLorean off the screen. Those simply …

Re: 8088 MPH: We Break All Your Emulators

What do VGA registers have to do with emulating CGA? UniPCemu keeps using the VGA registers for all basic rendering(e.g. 1/2-bit modes, text mode setup, different palettes) and MMU window(the memory accessed by the CPU) functionality. It's just hidden behind the CGA mode control and Color registers …

Page 1 of 184