From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] softmmu thoughts
Date: Thu, 16 Dec 2004 23:16:39 +0100 [thread overview]
Message-ID: <41C20947.8060808@bellard.org> (raw)
In-Reply-To: <da63183704121604224c071a3c@mail.gmail.com>
Hi,
Here are a few points to look at:
1) MMU_MAP -> SOFT_MMU transition : more work is needed there, but I
will look at it too, but not in the near future (I think the best
solution is to recompile the TB directly in the fault handler - the goal
is to suppress 'HF_SOFTMMU_MASK' which slows down the emulator).
2) Try to make a Windows port. It seems doable because when you create a
64 KB mapping in Windows you can select which 4 KB subpages are mapped.
3) Test it with the ppc emulation if not already done.
4) Use assembly code in most of the SOFTMMU code to accelerate unaligned
and I/O accesses (the current code is not optimized).
5) For you and me: reduce the number of ifdefs for SOFTMMU/MMU_MAP and
mmap().
6) You can go even faster (at least on Linux or *BSD) by using hard mmu
for pages between 0 and a given address 'L' by using mmap() and by using
segment limits. You can fall back to MMU_MAP if the address is >= 'L',
and fall back to soft MMU if I/O accesses are done. The advantage is
that the 'code copy' mode can be used in that case, so you get closer to
1:1 performance on most of the user code.
Fabrice.
Piotras wrote:
> Hi!
>
> I updated the patch to solve problems reported by Jens Arm:
> * compilation problem on Mandrake 9.1
> * SEGV problem when working with non-TLS glibc.
> Jens, thanks for your help!
>
> I also cleaned-up the code and comments in several places (for
> example page_unprotect).
>
> The patch should apply cleanly to recent CVS. It should work
> with 0.6.1 without problems too.
>
>
> Regards,
>
> Piotrek
>
> On Tue, 14 Dec 2004 18:54:04 +0100, Piotras <piotras@gmail.com> wrote:
>
>>Hi!
>>
>>I'm attaching a new patch based on your suggestions. On my machine
>>nbench gives:
>> memory index: 37% up
>> integer index: 36% up
>> fp index: 4% up
>>
>>The patch is divided in three files to simplify review. Part 1 contains
>>mostly rearrangement existing code necessary for the patch. Part 2
>>adds the new mmu mode. Part 3 contains heuristic to optimize
>>performance of iomem and self modifying code.
>>
>>To test the patch create a build directory and run:
>> > tar -zxf _PATH_TO_qemu-0.6.1.tar.gz
>> > tar -zxf _PATH_TO_linux-test-0.5.1.tar.gz
>> > cd qemu-0.6.1
>> > ./configure --target-list=i386-softmmu
>> > gunzip < _PATH_TO_mmu-part1.patch.gz | patch -p1
>> > gunzip < _PATH_TO_mmu-part2.patch.gz | patch -p1
>> > gunzip < _PATH_TO_mmu-part3.patch.gz | patch -p1
>> > make
>> > ./i386-softmmu/qemu -m 64 -L pc-bios -hda ../linux-test/linux.img
>>
>>Last but not least. I'd like to acknowledge Magnus contribution -- VM
>>setup code is derived from his work.
>>
>>Regards,
>>
>>Piotrek
>>
>>On Wed, 20 Oct 2004 14:41:42 +0200, Fabrice Bellard <fabrice@bellard.org> wrote:
>>
>>>Hi,
>>>
>>>The idea is interesting. Here are several suggestions:
>>>
>>>- It would be more efficient and simpler to map one 4KB host memory page
>>>every 8 KB. Then you can have a fixed mmap() mapping (no syscall
>>>overhead to change the mappings) and a simple way to handle unaligned
>>>accesses.
>>>- The critical point would be to keep standard soft MMU accesses for
>>>device access. An architectural change is needed to do that, but it
>>>seems easy to add.
>>>- This patch should work with qemu, not qemu-fast. The future of
>>>qemu-fast is to use a kernel module to have near native performances. It
>>>is not worthwhile to invest time in soft MMU or dynamic translation when
>>>you can just execute the code as is !
>>>
>>>Fabrice.
next prev parent reply other threads:[~2004-12-16 23:01 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1098217677.26133.26.camel@kubu.opensource.se>
[not found] ` <da63183704101917137df1cdc6@mail.gmail.com>
[not found] ` <da631837041019172720317e1c@mail.gmail.com>
[not found] ` <4175B3CA.9050209@sti.net>
[not found] ` <da63183704102000527be2cc6a@mail.gmail.com>
[not found] ` <41765D06.4020006@bellard.org>
2004-12-14 17:54 ` [Qemu-devel] softmmu thoughts Piotras
2004-12-15 7:50 ` Jens Arm
2004-12-15 7:59 ` Jens Arm
2004-12-16 12:22 ` Piotras
2004-12-16 15:53 ` Elefterios Stamatogiannakis
2004-12-16 16:49 ` Jens Arm
2004-12-16 17:21 ` André Braga
2004-12-16 21:28 ` Piotras
2004-12-16 21:43 ` Jim C. Brown
2004-12-16 22:16 ` Fabrice Bellard [this message]
2004-12-17 9:45 ` Piotras
2004-12-18 18:59 ` Magnus Damm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41C20947.8060808@bellard.org \
--to=fabrice@bellard.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).