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 <e441bbb92669d424b991cef854cb943f@www.novabbs.org>
Deutsch   English   Français   Italiano  
<e441bbb92669d424b991cef854cb943f@www.novabbs.org>

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

Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail
From: mitchalsup@aol.com (MitchAlsup1)
Newsgroups: comp.arch
Subject: Re: Computer architects leaving Intel...
Date: Fri, 20 Sep 2024 17:39:34 +0000
Organization: Rocksolid Light
Message-ID: <e441bbb92669d424b991cef854cb943f@www.novabbs.org>
References: <vaqgtl$3526$1@dont-email.me> <2024Sep11.123824@mips.complang.tuwien.ac.at> <vbsoro$3ol1a$1@dont-email.me> <867cbhgozo.fsf@linuxsc.com> <20240912142948.00002757@yahoo.com> <vbuu5n$9tue$1@dont-email.me> <20240915001153.000029bf@yahoo.com> <vc6jbk$5v9f$1@paganini.bofh.team> <20240915154038.0000016e@yahoo.com> <vc70sl$285g2$4@dont-email.me> <vc73bl$28v0v$1@dont-email.me> <OvEFO.70694$EEm7.38286@fx16.iad> <32a15246310ea544570564a6ea100cab@www.novabbs.org> <vc7a6h$2afrl$2@dont-email.me> <50cd3ba7c0cbb587a55dd67ae46fc9ce@www.novabbs.org> <vc8qic$2od19$1@dont-email.me> <fCXFO.4617$9Rk4.4393@fx37.iad> <vcb730$3ci7o$1@dont-email.me> <7cBGO.169512$_o_3.43954@fx17.iad> <vcffub$77jk$1@dont-email.me> <n7XGO.89096$15a6.87061@fx12.iad> <35b8ff2e6baa54c7aa22ec4edf45c3f9@www.novabbs.org> <vcht39$mbru$1@dont-email.me> <790b8efbbbb95a6e56ea52bc004f466a@www.novabbs.org> <17fHO.39328$S9Vb.11276@fx45.iad>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: i2pn2.org;
	logging-data="2791334"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="65wTazMNTleAJDh/pRqmKE7ADni/0wesT78+pyiDW8A";
User-Agent: Rocksolid Light
X-Rslight-Site: $2y$10$5dTHmlRQEdqwac18IVUGL.6.tVsrw3l2a09buDSi6do1Lg3F7XFga
X-Rslight-Posting-User: ac58ceb75ea22753186dae54d967fed894c3dce8
X-Spam-Checker-Version: SpamAssassin 4.0.0
Bytes: 6804
Lines: 124

On Fri, 20 Sep 2024 13:52:32 +0000, EricP wrote:

> MitchAlsup1 wrote:
>> On Thu, 19 Sep 2024 19:12:41 +0000, Brett wrote:
>>
>>> MitchAlsup1 <mitchalsup@aol.com> wrote:
>>>> On Thu, 19 Sep 2024 15:07:11 +0000, EricP wrote:
>>>
>>>
>>>>> - register specifier fields are either source or dest, never both
>>>>
>>>> I happen to be wishywashy on this
>>>
>>>
>>> This is deeply interesting, can you expound on why it is fine a register
>>> field can be shared by loads and stores, and sometimes both like x86.
>>
>> My 66000 encodes store data register in the same field position as it
>> encodes "what kind of branch" is being performed, and the same position
>> as all calculation (and load) results.
>>
>> I started doing this in 1982 with Mc88100 ISA, and never found a problem
>> with the encoding nor in the decoding nor with the pipelining of it.
>>
>> Let me be clear, I do not support necessarily damaging a source operand
>> to fit in another destination as::
>>
>>     ADD     SP,SP,#0x40
>>
>> by specifying SP only once in the instruction.
>>
>> So,
>>
>>     +------+-----+-----+----------------+
>>     | major| Rd  | Rs1 | whatever       |
>>     +------+-----+-----+----------------+
>>     |  BC  | cnd | Rs1 | label  offset  |
>>     +------+-----+-----+----------------+
>>     |  LD  | Rd  | Rb  | displacement   |
>>     +------+-----+-----+----------------+
>>     | ST   | Rs0 | Rb  | displacement   |
>>     +------+-----+-----+----------------+
>>
>> Is:
>> a) no burden in encoding
>> b) no burden in decoding
>> c) no burden in pipelining
>> d) no burden in stealing the Store data port late in the pipeline
>>   {in particular, this saves lots of flip-flops deferring store
>>    data until after cache hit, TLB hit, and data has arrived at
>>    cache.}
>>
>> I disagree with things like::
>>
>>     +------+-----+-----+----------------+
>>     | big OpCode | Rds | whatever       |
>>     +------+-----+-----+----------------+
>>
>> Where Rds means the specifier is used as both a source and destination.
>>
>> Notice in my encoding one can ALWAYS take the register specification
>> fields and wire them directly into the RF/renamer decoder ports.
>> You lose this property the other way around.
>
> I assume in your examples that you want to start your register file
> read access and or rename register lookup access in the decode stage,
> and not wait to start at the end of the decode stage.
> Effectively pipelining those accesses.
> That's fine.
>
> But that's my point - it doesn't make a difference because in both
> cases you can wire the reg fields to the reg file or rename directly
> and start the access ASAP.

Not when a source field and a destination field are the same
field sometimes but not always. Your thought train adds a
register specifier mux between the destination field and
the overused source field in front of the destination
rename port. It is not a BIG hinderance, but it is not
insignificant is you are doing a "balls to the walls"
design.

> In both cases the enable signal determining what to do shows up
> later after decode has done its thing. And the critical path for
> that decode enable signal is the same both ways.
>
> And if you are not doing this early access start but the traditional
> of latch the decode output THEN start your RegRd or Rename access
> it makes no timing difference at all.
>
> By allowing the opcode-Rds style instructions to be *CONSIDERED*
> it opens an avenue to potential instructions that cost little or
> nothing extra in terms of logic or performance.

The actual calculations are easy, it is the routing of data
to and from the calculation that is hard.

> And this is particularly useful with fixed width 32-bit instructions
> where one is try to pack as much function into a fixed size space as
> possible. Even more so with 16-bit compact instructions.

RISC-V, because of where the various fields ARE, have a mux between
every source field and every register port--simply because their
positions move between non-compressed and compressed.

I agree with the position that if the mux is already there
that one should use it often and greatly.

Where I disagree is that the mux HAS to be there.

> For example, a 32-bit fixed format instruction with four 5-bit registers
> could do a full width integer multiply wide-accumulate
>
>    IMAC (Rsd_hi,Rsd_lo) = (Rsd_hi,Rsd_lo) + Rs1 * Rs2

This violates the RISC tenet where each calculation instruction
produces exactly 1 result. I get around this with the mechanical
definition of the CARRY instruction. The MUL instruction produces
its result, CARRY captures the other, and deposits it in RF when
possible.

> with little more logic than the existing MULL,MULH approach.
> It still only needs 2 read ports because Rs1,Rs2 are read first to start
> the multiply, then (Rsd_hi,Rsd_lo) second as they aren't needed until
> late in the multiply-accumulate.