Deutsch   English   Français   Italiano  
<vqjfab$k5sa$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Thomas Koenig <tkoenig@netcologne.de>
Newsgroups: comp.arch
Subject: Re: Split instruction and immediate stream
Date: Sun, 9 Mar 2025 07:17:31 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 27
Message-ID: <vqjfab$k5sa$2@dont-email.me>
References: <vqhjpv$65am$1@dont-email.me> <vqiikd$c35o$1@dont-email.me>
Injection-Date: Sun, 09 Mar 2025 08:17:32 +0100 (CET)
Injection-Info: dont-email.me; posting-host="cf86517914ff84cfc8bef7c7a4010536";
	logging-data="661386"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/00b4iNZzRE2EiUv+rnbDwPWt0W6qBbQQ="
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:6rQKrJryJKJj6L0c+FaWUAzQfbs=
Bytes: 2074

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).