* RSE and incomplete register frame
@ 2006-08-02 8:17 Christian Hildner
2006-08-03 5:41 ` Matthew Chapman
2006-08-03 9:09 ` Christian Hildner
0 siblings, 2 replies; 3+ messages in thread
From: Christian Hildner @ 2006-08-02 8:17 UTC (permalink / raw)
To: linux-ia64
Hi there,
for an IA64 related question I dropped a query to
ia64-technical@gelato.unsw.edu.au . However there was not really any
helpful response. So please let me make use of the bigger audience on
this list. Your comments are all welcome. Thanks.
Here the original text:
Hi,
while developing an instruction set simulator I found the chapter about
incomplete register frame (ASDM vol. 2) to be inaccurate. It says that
the incomplete frame becomes complete when RSE.ndirty_words becomes
non-negative by executing mandatory RSE loads. However, mandatory RSE
loads are not touching BSPSTORE or the dirty partition. RSE loads are
extending the clean partition. Furthermore if you consider RSE.BOF to
end up inside the clean partition after a br.ret or rfi, then BSPSTORE
is located above BSP. However, the new current frame should be
considered complete since there are no mandatory RSE loads needed. Given
this, BSPSTORE should be replaced by RSE.Bspload, which is the true
criterion for an incomplete register frame.
The practice when dealing with br.ret or rfi seems to be that BSPSTORE
is forced to BSP when RSE.BOF is updated into the clean partition.
However, this behavior is lacking documentation in one of the ASDM.
Christian
____________
Virus checked by G DATA AntiVirusKit
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RSE and incomplete register frame
2006-08-02 8:17 RSE and incomplete register frame Christian Hildner
@ 2006-08-03 5:41 ` Matthew Chapman
2006-08-03 9:09 ` Christian Hildner
1 sibling, 0 replies; 3+ messages in thread
From: Matthew Chapman @ 2006-08-03 5:41 UTC (permalink / raw)
To: linux-ia64
Hi Christian,
It took me a while to get my head around this. I'm not convinced that
the documentation is incorrect, although they are maybe looking at it
from a slightly different perspective.
Keep in mind Figure 6-3... the current partition is above the dirty
partition is above the clean partition. RSE operation should preserve
this relationship (as I see it).
Also, note that the registers in the current partition, even though not
technically part of the dirty partition, are necessarily dirty... they
may be targeted at any time by writebacks.
> while developing an instruction set simulator
I'd be interested in learning more about this simulator :)
> incomplete register frame (ASDM vol. 2) to be inaccurate. It says that
> the incomplete frame becomes complete when RSE.ndirty_words becomes
> non-negative by executing mandatory RSE loads. However, mandatory RSE
> loads are not touching BSPSTORE or the dirty partition.
Indirectly they are, because presumably the dirty partition (and BSPSTORE)
must remain squeezed between the invalid partition and the current
partition (albeit being zero-size, or negative-size depending on how you
look at it - the invalid partition extends into the current partition!).
> RSE loads are extending the clean partition.
IMHO there is no clean partition. The RSE loads are targeting the current
frame so they are immediately dirty+current.
> Furthermore if you consider RSE.BOF to
> end up inside the clean partition after a br.ret or rfi, then BSPSTORE
> is located above BSP.
RSE.BOF by definition ends up in the current partition (which is
immediately dirty), which is above the other dirty registers (if any) in
the dirty partition, which is above the clean partition. Hence in the
normal case BSPSTORE is less than or equal to BSP.
Hope this helps, feel free to argue with me if you disagree.
Matt
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RSE and incomplete register frame
2006-08-02 8:17 RSE and incomplete register frame Christian Hildner
2006-08-03 5:41 ` Matthew Chapman
@ 2006-08-03 9:09 ` Christian Hildner
1 sibling, 0 replies; 3+ messages in thread
From: Christian Hildner @ 2006-08-03 9:09 UTC (permalink / raw)
To: linux-ia64
Matthew Chapman schrieb:
>Hi Christian,
>
>It took me a while to get my head around this.
>
>>while developing an instruction set simulator
>>
>>
>I'd be interested in learning more about this simulator :)
>
It will become a functional IA64 simulator with some more features
compared to HP Ski. And in opposite to HP Ski it also has the clean
partition architected.
>>incomplete register frame (ASDM vol. 2) to be inaccurate. It says that
>>the incomplete frame becomes complete when RSE.ndirty_words becomes
>>non-negative by executing mandatory RSE loads. However, mandatory RSE
>>loads are not touching BSPSTORE or the dirty partition.
>>
>>
>Indirectly they are, because presumably the dirty partition (and BSPSTORE)
>must remain squeezed between the invalid partition and the current
>partition (albeit being zero-size, or negative-size depending on how you
>look at it - the invalid partition extends into the current partition!).
>
>>RSE loads are extending the clean partition.
>>
>>
>IMHO there is no clean partition. The RSE loads are targeting the current
>frame so they are immediately dirty+current.
>
>>Furthermore if you consider RSE.BOF to
>>end up inside the clean partition after a br.ret or rfi, then BSPSTORE
>>is located above BSP.
>>
>>
>RSE.BOF by definition ends up in the current partition (which is
>immediately dirty), which is above the other dirty registers (if any) in
>the dirty partition, which is above the clean partition. Hence in the
>normal case BSPSTORE is less than or equal to BSP.
>
It looks to me like the clean partition only exists in the high level
IA64 architecture design. The clean partition is probably lacking in the
Intel reference models as well as in current hardware designs. So the
documentation does not care a lot about the clean partition and leaves
it up to the phantasy of the reader what happens to it in the case of a
br.ret or rfi.
>Hope this helps, feel free to argue with me if you disagree.
>
Your idea of treating all former clean regs as current dirty regs and so
logically flushing the clean parition is exactly the way I solved the
issue in our simulator.
Thanks
Christian
____________
Virus checked by G DATA AntiVirusKit
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-08-03 9:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-02 8:17 RSE and incomplete register frame Christian Hildner
2006-08-03 5:41 ` Matthew Chapman
2006-08-03 9:09 ` Christian Hildner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox