qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Blue Swirl <blauwirbel@gmail.com>
To: Stefano Bonifazi <stefboombastic@gmail.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] TCG flow vs dyngen
Date: Sat, 11 Dec 2010 13:11:38 +0000	[thread overview]
Message-ID: <AANLkTi=odznJjPf1qbPs4EqV7sLZzXttsg5wpUUdMD8e@mail.gmail.com> (raw)
In-Reply-To: <4D036E9D.90401@gmail.com>

On Sat, Dec 11, 2010 at 12:29 PM, Stefano Bonifazi
<stefboombastic@gmail.com> wrote:
> Thank you very very much! I'd take months for understanding everything
> myself from the source code! :)
>
> On 12/11/2010 12:02 PM, Blue Swirl wrote:
>>
>> On Fri, Dec 10, 2010 at 9:26 PM, Stefano Bonifazi
>> <stefboombastic@gmail.com>  wrote:
>>>
>>> [..]
>>>
>>> - So, I think that the technical documentation is now obsolete, isn't it?
>>
>> At least we shouldn't link to that paper anymore. There's also
>> documentation generated from qemu-tech.texi that should be up to date.
>
> Do you mean this:
> http://www.weilnetz.de/qemu-tech.html
> ?

Yes.

>>> - If I understand well, TCG runtime flow is the following:
>>>     - TCG takes the target binary, and splits it into target blocks
>>>     - if the TB is not cached, TCG translates it (or better the target
>>> instructions it is composed by) into TCG micro ops,
>>
>> The above is not the job of TCG (which is host specific), but the
>> target specific translators (target-*/translate.c).
>
> Ok, then considering QEMU flow instead of simply TCG, do those steps take
> place in the order I considered?

Yes, that's about it.

>>>     - TCG caches the TB,
>>>     - TCG tries to chain the block with others,
>>
>> The above is part of the CPU execution loop (cpu-exec.c), TCG is not
>> involved anymore.
>
> Ok! Thank you, now I have a clearer idea of where different operations are
> implemented.. but again considering the whole QEMU flow, are the steps I
> reported executed in the order I put them?
>>>
>>>     - TCG copies the TB into the execution buffer
>>
>> There is no copying.
>
> Does that mean TCG produces the host object code directly into the
> emulator's memory for it to fetch? Or does TCG make the emulator even
> execute that object code as soon as it is produced?
> But, if the object code is consumed on the fly, it means there is no cashing
> of it, is it there?
> What is actually cached? Only target blocks? Their translation into TCG
> uops? Host binary code generated by TCG?

There's a large buffer for generated code, allocated in exec.c. This
is filled with host code by TCG, when full it is flushed. The CPU
execution loop generates new TBs when needed, otherwise the old code
can be executed.

TCG also uses intermediate ops but those are used only once during translation.

  reply	other threads:[~2010-12-11 13:12 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-10 21:26 [Qemu-devel] TCG flow vs dyngen Stefano Bonifazi
2010-12-11 11:02 ` Blue Swirl
2010-12-11 12:29   ` Stefano Bonifazi
2010-12-11 13:11     ` Blue Swirl [this message]
2010-12-11 14:32       ` Stefano Bonifazi
2010-12-11 14:44         ` Blue Swirl
2010-12-14 20:17           ` Stefano Bonifazi
  -- strict thread matches above, loose matches on Subject: below --
2011-01-16 14:46 Raphael Lefevre
2011-01-16 15:21 ` Stefano Bonifazi
2011-01-16 16:01   ` Raphaël Lefèvre
2011-01-16 16:43     ` Stefano Bonifazi
2011-01-16 18:29       ` Peter Maydell
2011-01-16 19:02         ` Stefano Bonifazi
2011-01-16 19:24           ` Peter Maydell
2011-01-16 20:50           ` Stefano Bonifazi
2011-01-16 21:08             ` Raphaël Lefèvre
2011-01-17 11:59             ` Lluís
2011-01-16 19:16       ` Raphaël Lefèvre
2011-01-23 21:50     ` Rob Landley
2011-01-23 22:25       ` Stefano Bonifazi
2011-01-23 23:40         ` Rob Landley
2011-01-24 10:17           ` Stefano Bonifazi
2011-01-24 18:20             ` Rob Landley
2011-01-24 21:16               ` Stefano Bonifazi
2011-01-25  1:19                 ` Rob Landley
2011-01-25  8:53                   ` Stefano Bonifazi
2011-01-24 14:32       ` Peter Maydell
2011-01-24 14:56         ` Stefano Bonifazi
2011-01-24 15:15           ` Lluís
2011-01-24 18:02           ` Dushyant Bansal
2011-01-24 19:38             ` Stefano Bonifazi
2011-01-25  7:56               ` Dushyant Bansal
2011-01-25  9:04                 ` Stefano Bonifazi
2011-01-25  9:05                   ` Edgar E. Iglesias
2011-01-25  9:28                     ` Stefano Bonifazi

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='AANLkTi=odznJjPf1qbPs4EqV7sLZzXttsg5wpUUdMD8e@mail.gmail.com' \
    --to=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefboombastic@gmail.com \
    /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).