Sujet : Re: Split instruction and immediate stream
De : tkoenig (at) *nospam* netcologne.de (Thomas Koenig)
Groupes : comp.archDate : 09. Mar 2025, 08:17:31
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vqjfab$k5sa$2@dont-email.me>
References : 1 2
User-Agent : slrn/1.0.3 (Linux)
Robert Finch <
robfi680@gmail.com> schrieb:
I think splitting the code and constant into separate streams requires
another port(s) on the I$. The port may already be present if
jump-through-table, JTT, is supported.
There is also the problem of additional cache (page, ...) misses with
the instruction stream. Maybe an extra "constant data" cache?
That would depend on how far the extra data is from the code.
But branches are going to be more expensive because it is not
only the PC that needs to changed, but also the data pointer.
Thinking about this a bit more... conceptually, this is not so far
off from the /360 base pointer addressing mode, but with the base
pointer implied instead of explicit.
I guess that the constant tables for a subroutine would be placed either
before or after a subroutine.
Like what was usually done for the /360, I believe.
But much more "fun" could be had if the base pointer was supplied
by the caller. Want a routine that does something different,
just call it with a different constant stream for instructions.
(OK, you could also pass an argument, but that would offer less
possibilities for quasi self-modifying code).