From: Andrew Cagney <ac131313@redhat.com>
To: gdb@sources.redhat.com
Subject: Always cache memory and registers
Date: Sun, 22 Jun 2003 22:26:00 -0000 [thread overview]
Message-ID: <3EF62D05.8070205@redhat.com> (raw)
Hello,
Think back to the rationale for GDB simply flushing its entire state
after the user modifies a memory or register. No matter how inefficent
that update is, it can't be any worse than the full refresh needed after
a single step. All effort should be put into making single step fast,
and not into making read-modifywrite fast.
I think I've just found a similar argument that can be used to justify
always enabling a data cache. GDB's dcache is currently disabled (or at
least was the last time I looked :-). The rationale was that the user,
when inspecting in-memory devices, would be confused if repeated reads
did not reflect the devices current register values.
The problem with this is GUIs.
A GUI can simultaneously display multiple views of the same memory
region. Should each of those displays generate separate target reads
(with different values and side effects) or should they all share a
common cache?
I think the later because it is impossible, from a GUI, to predict or
control the number of reads that request will trigger. Hence I'm
thinking that a data cache should be enabled by default.
The only proviso being that the the current cache and target vector
would need to be modified so that the cache only ever requested the data
needed, leaving it to the target to supply more if available (much like
registers do today). The current dcache doesn't do this, it instead
pads out small reads :-(
One thing that could be added to this is the idea of a sync point.
When supplying data, the target could mark it as volatile. Such
volatile data would then be drawn from the cache but only up until the
next sync point. After that a fetch would trigger a new read.
Returning to the command line, for instance, could be a sync point.
Individual x/i commands on a volatile region would be separated by sync
points, and hence would trigger separate reads.
Thoughts. I think this provides at least one techical reason for
enabling the cache.
enjoy,
Andrew
next reply other threads:[~2003-06-22 22:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-22 22:26 Andrew Cagney [this message]
2003-06-22 22:34 ` Daniel Jacobowitz
2003-06-22 22:55 ` Andrew Cagney
2003-06-23 3:57 ` Daniel Jacobowitz
2003-06-23 14:13 ` Andrew Cagney
2003-06-23 19:02 ` Discrepency between gdbarch_frame_locals_address and get_frame_locals_address? Paul N. Hilfinger
2003-06-23 19:47 ` Andrew Cagney
[not found] <1056381193.18735.ezmlm@sources.redhat.com>
2003-06-23 20:11 ` Always cache memory and registers John S. Yates, Jr.
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=3EF62D05.8070205@redhat.com \
--to=ac131313@redhat.com \
--cc=gdb@sources.redhat.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