Re: Concertlina II: Full Circle

Liste des GroupesRevenir à c arch 
Sujet : Re: Concertlina II: Full Circle
De : mitchalsup (at) *nospam* aol.com (MitchAlsup1)
Groupes : comp.arch
Date : 19. Jun 2024, 01:28:24
Autres entêtes
Organisation : Rocksolid Light
Message-ID : <f16fd31d0e97d55e6dabc560dcef4a38@www.novabbs.org>
References : 1 2 3 4 5 6 7 8
User-Agent : Rocksolid Light
John Savard wrote:

On Tue, 18 Jun 2024 16:54:04 +0000, mitchalsup@aol.com (MitchAlsup1)
wrote:

The semantics of instructions in a loop are subtly altered such
that they can be vectorized and to execute multi-lane style.

I've decided that I will not be able to use the one from the original
Concertina, and will need to design a VVM-like instruction for
Concertina II from scratch.

Unlike yours, it won't be...subtle.

The action of the instruction which begins the loop will, I think, be
basically the same as yours. It willl issue successive iterations of
the loop starting in consecutive cycles.

To do so, though, that instruction will contain a number of fields in
which to specify parameters:

(3 bits) An index register, which is initialized to zero at the start
of the loop, and "incremented" (the quote marks are, of course,
because it won't really be the same register on each iteration) for
subsequent iterations.
Ri is provided in the LOOP instruction

(3 bits) The power of two which is to serve as the increment.
There is no such need in VVM, increment is either a constant or a register and is not restricted to powers of 2.

(8 bits) A register mask, in which a 1 bit corresponds to a register
used for intermediate results within the loop. This will become a
forwarding node rather than a register; all other registers can only
be read, and serve as constant values only. The index register set up
previously does not need to be indicated by this.
The contrapositive of this is provided for in VEC.

(2 bits) This indicates which of the four groups of 8 registers in a
bank of 32 registers the register mask applies to.
I found no need.

(1 bit) This indicates whether we're talking about the integer
registers or the floating-point ones.
I have but 1 register file.

In addition, in the long version of the instruction, there's a 16-bit
register mask for the short vector registers.
I also have not software addressable vector registers.

Because iterations are independent, one can't handle a stride in the
natural efficient manner of adding the stride value to a second
pointer register. This could be a common source of error, so I feel
the need to make some provision for this.
     for( i = 0; i < max; i +=7 )
falls out for free. But also note::
     for( i = 0; i < max; i++ )
          a[i] = b[i];
is always faster than:
     for( i = 0; i < max; i++ )
          *ap++ = *bp++;
The top loop is 3 instruction, the bottom one is 5.

One scheme I am considering would be to include one bit in the
instruction that begins a loop to indicate the loop contains a
preamble. The preambles execute serially, and when they conclude,
everything that follows is issued immediately, to execute in parallel
(but now with a multi-cycle offset) to previous iterations.
VVM just has instruction before the VEC instruction to deal with this.

Upon reflection, this doesn't waste a huge amount of time, so it is
better to go with it than including fields for stride value and a
second counter register in the loop start instruction.

Since the preambles do execute serially, the "end preamble"
instruction would point to the loop start instruction. Instead of full
memory-reference, though, it would just include a short value that is
a negative program-relative address.

Iterations that execute in parallel, though, don't "branch back"
anywhere, so the loop end instruction has no parameters. At least
something is like your VVM.
By considering the the branch back to the top as a return, those loops
which were executed simultaneously just die instead of returning to the
top, only the MOD-N lane returns to the top.

So this is  how I take your VVM concept, and mess it up by making it
unnecessarily complicated; basically, because I don't want to make an
ISA that requires implementations to be, so to speak, "intelligent".
(i.e. upon the first store into a register in the loop, categorize
that register as a node reference)
LOL but have fun.

John Savard

Date Sujet#  Auteur
17 Jun 24 * Concertlina II: Full Circle39John Savard
17 Jun 24 `* Re: Concertlina II: Full Circle38MitchAlsup1
17 Jun 24  `* Re: Concertlina II: Full Circle37John Savard
18 Jun 24   `* Re: Concertlina II: Full Circle36MitchAlsup1
18 Jun 24    +* Re: Concertlina II: Full Circle34John Savard
18 Jun 24    i+* Re: Concertlina II: Full Circle31John Savard
18 Jun 24    ii+* Re: Concertlina II: Full Circle9Thomas Koenig
18 Jun 24    iii`* Re: Concertlina II: Full Circle8John Savard
18 Jun 24    iii `* Re: Concertlina II: Full Circle7Thomas Koenig
18 Jun 24    iii  +* Re: Concertlina II: Full Circle2John Savard
19 Jun 24    iii  i`- Re: Concertlina II: Full Circle1John Savard
19 Jun 24    iii  `* Re: Concertlina II: Full Circle4Stephen Fuld
19 Jun 24    iii   +- Re: Concertlina II: Full Circle1MitchAlsup1
19 Jun 24    iii   +- Re: Concertlina II: Full Circle1MitchAlsup1
19 Jun 24    iii   `- Re: Concertlina II: Full Circle1MitchAlsup1
18 Jun 24    ii`* Re: Concertlina II: Full Circle21MitchAlsup1
18 Jun 24    ii `* Re: Concertlina II: Full Circle20John Savard
18 Jun 24    ii  +* Re: Concertlina II: Full Circle18MitchAlsup1
19 Jun 24    ii  i+* Re: Concertlina II: Full Circle16John Savard
19 Jun 24    ii  ii`* Re: Concertlina II: Full Circle15MitchAlsup1
19 Jun 24    ii  ii +* Re: Concertlina II: Full Circle8John Savard
20 Jun 24    ii  ii i`* Re: Concertlina II: Full Circle7John Savard
23 Jun 24    ii  ii i +* Re: Concertlina II: Full Circle2John Savard
25 Jun 24    ii  ii i i`- Re: Concertlina II: Full Circle1John Savard
23 Jun 24    ii  ii i `* Re: Concertlina II: Full Circle4MitchAlsup1
23 Jun 24    ii  ii i  `* Re: Concertlina II: Full Circle3John Savard
24 Jun 24    ii  ii i   `* Re: Concertlina II: Full Circle2MitchAlsup1
24 Jun 24    ii  ii i    `- Re: Concertlina II: Full Circle1John Savard
19 Jun 24    ii  ii `* Re: Concertlina II: Full Circle6Terje Mathisen
19 Jun 24    ii  ii  +* Re: Concertlina II: Full Circle2MitchAlsup1
19 Jun 24    ii  ii  i`- Re: Concertlina II: Full Circle1Terje Mathisen
19 Jun 24    ii  ii  `* Re: Concertlina II: Full Circle3Thomas Koenig
19 Jun 24    ii  ii   `* Re: Concertlina II: Full Circle2MitchAlsup1
19 Jun 24    ii  ii    `- Re: Concertlina II: Full Circle1Terje Mathisen
20 Jun 24    ii  i`- Re: Concertlina II: Full Circle1John Savard
19 Jun 24    ii  `- Re: Concertlina II: Full Circle1MitchAlsup1
18 Jun 24    i`* Re: Concertlina II: Full Circle2MitchAlsup1
18 Jun 24    i `- Re: Concertlina II: Full Circle1BGB-Alt
19 Jun 24    `- return for loop-back edges (Re: Concertlina II: Full Circle)1Anton Ertl

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal