Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <uvmsh6$ql2d$1@dont-email.me>
Deutsch   English   Français   Italiano  
<uvmsh6$ql2d$1@dont-email.me>

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

Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Stephen Fuld <sfuld@alumni.cmu.edu.invalid>
Newsgroups: comp.arch
Subject: Re: "Mini" tags to reduce the number of op codes
Date: Tue, 16 Apr 2024 15:02:13 -0700
Organization: A noiseless patient Spider
Lines: 73
Message-ID: <uvmsh6$ql2d$1@dont-email.me>
References: <uuk100$inj$1@dont-email.me>
 <2024Apr3.192405@mips.complang.tuwien.ac.at>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 17 Apr 2024 00:02:15 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e4560d6e9e80920818ac28626eb60e90";
	logging-data="873549"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19bOa7EVK+T9BfGsZCFYpzKeu/4URyDSfI="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:zpu5qRhcr+Faj4O/oGoDAT3y41U=
Content-Language: en-US
In-Reply-To: <2024Apr3.192405@mips.complang.tuwien.ac.at>
Bytes: 4182

On 4/3/2024 10:24 AM, Anton Ertl wrote:
> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>> The idea is to add 32 bits to the processor state, one per register
>> (though probably not physically part of the register file) as a tag.  If
>> set, the bit indicates that the corresponding register contains a
>> floating-point value.  Clear indicates not floating point (integer,
>> address, etc.).  There would be two additional instructions, load single
>> floating and load double floating, which work the same as the other 32-
>> and 64-bit loads, but in addition to loading the value, set the tag bit
>> for the destination register.  Non-floating-point loads would clear the
>> tag bit.  As I show below, I don’t think you need any special "store
>> tag" instructions.
> ...
>> But we can go further.  There are some opcodes that only make sense for
>> FP operands, e.g. the transcendental instructions.  And there are some
>> operations that probably only make sense for non-FP operands, e.g. POP,
>> FF1, probably shifts.  Given the tag bit, these could share the same
>> op-code.  There may be several more of these.
> 
> Certainly makes reading disassembler output fun (or writing the
> disassembler). 

Good point.  It probably isn't too bad for the arithmetic operations, 
etc, but once you extend it as I suggested in the last paragraph it gets 
ugly.  :-(


big snip
> 
>> That is as far as I got.  I think you could net save perhaps 8-12 op
>> codes, which is about 10% of the existing op codes - not bad.  Is it
>> worth it?  To me, a major question is the effect on performance.  What
>> is the cost of having to decode the source registers and reading their
>> respective tag bits before knowing which FU to use?
> 
> In in OoO CPU, that's pretty heavy.

OK, but in the vast majority of cases (i.e. unless there is something 
like a conditional branch that uses floating point  or integer depending 
upon whether the branch is taken.) the flag bit that a register will 
have can be known well in advance.  As I said, IANAHG, but that might 
make it easier.



> But actually, your idea does not need any computation results for
> determining the tag bits of registers (except during EXIT),

But even here, you almost certainly know what the tag bit for any given 
register is long before you execute the EXIT instruction.  And remember, 
on MY 66000 EXIT is performed lazily, so you have time and the mechanism 
is in place to wait if needed.


> so you
> probably can handle the tags in the front end (decoder and renamer).
> Then the tags are really separate and not part of the rgisters that
> have to be renamed, and you don't need to perform any waiting on
> ENTER.
> 
> However, in EXIT the front end would have to wait for the result of
> the load/store unit loading the 32 bits, unless you add a special
> mechanism for that.  So EXIT would become expensive, one way or the
> other.

Yes.



-- 
  - Stephen Fuld
(e-mail address disguised to prevent spam)