Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

<sangr> home is where the highest bandwidth is


devel / comp.arch / Re: Vector ISA Categorisation

SubjectAuthor
* Split register filesThomas Koenig
+* Re: Split register filesIvan Godard
|`* Re: Split register filesThomas Koenig
| `* Re: Split register filesBrett
|  `* Re: Split register filesThomas Koenig
|   `* Re: Split register filesBrett
|    `* Re: Split register filesBrett
|     `* Re: Split register filesIvan Godard
|      `* Re: Split register filesBrett
|       +* Re: Split register filesIvan Godard
|       |+* Re: Split register filesStefan Monnier
|       ||`* Re: Split register filesIvan Godard
|       || +- Re: Split register filesStephen Fuld
|       || +- Re: Split register filesStefan Monnier
|       || `* Rescue vs scratchpad (was: Split register files)Stefan Monnier
|       ||  `- Re: Rescue vs scratchpad (was: Split register files)Ivan Godard
|       |`* Re: Split register filesBrett
|       | `* Re: Split register filesIvan Godard
|       |  `* Re: Split register filesBrett
|       |   `* Re: Split register filesIvan Godard
|       |    `* Re: Mill conAsm vs genAsm (was: Split register files)Marcus
|       |     `* Re: Mill conAsm vs genAsm (was: Split register files)Ivan Godard
|       |      `* Re: Mill conAsm vs genAsm (was: Split register files)Quadibloc
|       |       +* Re: Mill conAsm vs genAsm (was: Split register files)Ivan Godard
|       |       |+* Re: Mill conAsm vs genAsm (was: Split register files)MitchAlsup
|       |       ||`* Re: Mill conAsm vs genAsm (was: Split register files)Quadibloc
|       |       || +* Re: Mill conAsm vs genAsm (was: Split register files)MitchAlsup
|       |       || |+* Re: Mill conAsm vs genAsm (was: Split register files)Quadibloc
|       |       || ||`* Re: Mill conAsm vs genAsm (was: Split register files)Marcus
|       |       || || `* Re: Mill conAsm vs genAsm (was: Split register files)Quadibloc
|       |       || ||  `* Re: Mill conAsm vs genAsm (was: Split register files)Marcus
|       |       || ||   `* Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    +* Re: Vector ISA CategorisationStephen Fuld
|       |       || ||    |+- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    |`* Re: Vector ISA CategorisationStefan Monnier
|       |       || ||    | `- Re: Vector ISA CategorisationStephen Fuld
|       |       || ||    +* Re: Vector ISA CategorisationMarcus
|       |       || ||    |+* Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    ||`* Re: Vector ISA Categorisationmbitsnbites
|       |       || ||    || +* Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    || |`- Re: Vector ISA CategorisationMarcus
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +* Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || |`* Re: Vector ISA CategorisationIvan Godard
|       |       || ||    || | `- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    || +* Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || |`* Re: Vector ISA CategorisationMarcus
|       |       || ||    || | `- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || `- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    |+- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    |+- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    |+- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    |+* Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    ||+- Re: Vector ISA CategorisationThomas Koenig
|       |       || ||    ||`* Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    || +- Re: Vector ISA CategorisationIvan Godard
|       |       || ||    || `- Re: Vector ISA CategorisationThomas Koenig
|       |       || ||    |+* Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    ||`* Re: Vector ISA CategorisationEricP
|       |       || ||    || +* Re: Vector ISA CategorisationStefan Monnier
|       |       || ||    || |`- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +* Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || |`* Re: Vector ISA CategorisationEricP
|       |       || ||    || | `- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || +- Re: Vector ISA CategorisationQuadibloc
|       |       || ||    || +* Re: Vector ISA CategorisationThomas Koenig
|       |       || ||    || |`* Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || | `* Re: Vector ISA CategorisationThomas Koenig
|       |       || ||    || |  `- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    || `- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    |+- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    |+- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    |+- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    |+- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    |`* Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    | `* Re: Vector ISA CategorisationTerje Mathisen
|       |       || ||    |  `- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    +- Re: Vector ISA CategorisationMitchAlsup
|       |       || ||    +- Re: Vector ISA Categorisationluke.l...@gmail.com
|       |       || ||    `- Re: Vector ISA CategorisationMitchAlsup
|       |       || |`* Re: Mill conAsm vs genAsm (was: Split register files)Quadibloc
|       |       || `* Re: Mill conAsm vs genAsm (was: Split register files)luke.l...@gmail.com
|       |       |`* Re: Mill conAsm vs genAsm (was: Split register files)Paul A. Clayton
|       |       `* Re: Mill conAsm vs genAsmStefan Monnier
|       +* Re: Split register filesStefan Monnier
|       `* Re: Split register filesThomas Koenig
+* Re: Split register filesJohn Dallman
+* Re: Split register filesAnton Ertl
+- Re: Split register filesStefan Monnier
`* Re: Split register filesMitchAlsup

Pages:12345678
Re: Vector ISA Categorisation

<b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18849&group=comp.arch#18849

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1a11:: with SMTP id f17mr10267295qtb.308.1626457313744;
Fri, 16 Jul 2021 10:41:53 -0700 (PDT)
X-Received: by 2002:a54:448a:: with SMTP id v10mr1948701oiv.44.1626457313484;
Fri, 16 Jul 2021 10:41:53 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 10:41:53 -0700 (PDT)
In-Reply-To: <d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb6vfb$1ov$1@dont-email.me>
<sb70q1$fsg$2@newsreader4.netcologne.de> <sb912k$c4c$1@dont-email.me>
<sb99gi$1r5$1@newsreader4.netcologne.de> <sbh665$sht$1@dont-email.me>
<sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me> <sc12qv$8ka$1@dont-email.me>
<sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me> <sc5fh8$p7q$1@dont-email.me>
<sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 17:41:53 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: MitchAlsup - Fri, 16 Jul 2021 17:41 UTC

On Friday, July 16, 2021 at 11:07:13 AM UTC-5, luke.l...@gmail.com wrote:
> On Thursday, July 15, 2021 at 9:37:02 PM UTC+1, MitchAlsup wrote:
> > On Thursday, July 15, 2021 at 1:51:55 PM UTC-5, luke.l...@gmail.com wrote:
> > > *however*.... what if there was a "hint" from the compiler? an instruction which
> > > informed the hardware, "it is absolutely 100% guaranteed to be the case that
> > > 8 elements can be parallelised".
> > <
> > Mostly the HW can figure this out by examining the register dependencies at
> > loop install time, and by performing AGENs in program order. When memory
> > references are dense the problem is actually easy. The AGENs in program
> > order is what causes minimal partial order.
<
> ok, so i am slowly trying to narrow down on the circumstances to describe,
> where hints would be useful.
>
> let us imagine that it is 10,000 instructions into the loop before an address
> read is encountered, and that the loop itself is 100,000. this is (deliberately)
> far beyond what any system may successfully identify the maximum safe
> element-level parallelism through looking for AGEN'd opportunities.
<
Instead, imaging a hard limit of 100 instructions in the loop.............
But try an imaging doing something for more than 20 instructions that does
not contain a memory reference !?! what kind of calculation could those be?
and how often are these going to occur ??
<
From my side, I cannot imagine an execution window of more than 100-200
instructions being profitable, and if profitable, there will be resources to back
up precisely to an exception.
<
What VVM essentially does is to add an iteration tag to the register tags in
a reservation station (or scoreboard entry) so that the station can fire once
per loop, and while the loop is running, FETCH-PARSE-DECODE is idle.
Scalar operand reside in the station (or file for the SB), vector operands
arrive each loop. So the firing mechanism is "the same" but the entries
remain in the station/SB for the next iteration.
<
You never let the calculation[k] in one loop begin before the calculation[k]
of the previous iteration so you don't get so far OoO that the cleanup is
a big hairy mess. Further, each calculation unit (and AGEN in particular)
are in program order per unit relative to themselves. The partial order is
only across the units. {This can be relaxed after deciding on what kind
of implementation one cares about.}
>
> so let us then imagine that the hardware goes, "hmmm, i have not yet
> encountered a LD/ST but i am going to continue assuming that 64
> elements in parallel is perfectly acceptable".
<
Where are you finding these large loops ? Notice that VVM only vectorizes
the innermost loop (no nesting). Now I know the loop in FPPPP is more
than 8K instructions--but this loop is NOT the innermost loop !! But Still
where are you fining a loop of 100,000 instructions ???
>
> it also goes, "hmmm i simply cannot possibly create in-flight buffers for
> 10,000 instructions so i am forced to write most of the 10,000 instructions
> data into actual registers"
<
The inflight buffers would be bigger than the rest of the entire machine !!
So, don't do that, but give the architecture a means of giving up and dropping
back to what it already knows how to do !! Just DO NOT mandate that different
instruction streams are required for different implementations. This is what is
WRONG with SIMD.
<
Realistically, the stations in Opteron were 2× the size of the integer calculation units.
{And FP was done differently--more like a dispatch stack.....}
>
> it then encounters the LD/ST, performs the analysis of 64 LD/ST AGENs
> and finds, oh s***, 33 of them are overlapping memory addresses.
<
Realistically, as you have found out, the size of the memory disambiguation
table (MDM) is on the order of ½ of the execution window. In Mc 88120
the condition cache was 48 entries, 3 entries for each packet in the window..
And entry[0] could cause entry[47] to be dependent upon him. Meaning
only that AGEN[47] cannot retire before AGEN[0] ! Proper configurations of
these buffers are self limiting and the partial order (as opposed to OoO)
saves the day.
>
> by this time it is far, far too late: it's already written to the regfile and the
> "damage" is impossible to unwind.
<
Which is why you don't do it that way in an implementation,
AND ESPECIALLY
Why you don't specify it to allow such in an architecture !!
Architecture is not implementation ! Architecture has to span implementations.
>
> if however there was a "hint" (in this case "31 elements may be performed in
> parallel perfectly safely") it would *never hit* the 33 cases that were impossible
> to detect without an in-flight buffer of size 10,000.
<
I still don't see how the compiler can figure out the Thomas example::
a(s1:s2;S3) = a(s4:s5:s6)
when s1,s2,s3,s4,s5,s6 are parameters to the function being separately compiled.
>
> l.

Re: Vector ISA Categorisation

<jwvim1ai1oa.fsf-monnier+comp.arch@gnu.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18851&group=comp.arch#18851

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: monn...@iro.umontreal.ca (Stefan Monnier)
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
Date: Fri, 16 Jul 2021 13:57:43 -0400
Organization: A noiseless patient Spider
Lines: 8
Message-ID: <jwvim1ai1oa.fsf-monnier+comp.arch@gnu.org>
References: <sb6s70$dip$1@newsreader4.netcologne.de>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me>
<63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me>
<dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="2481c689cfca0462a3e5e6d2df62e5dc";
logging-data="14114"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18daDis2dn61QI3NiSO4WUj"
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
Cancel-Lock: sha1:hNg9rlaZv0SUnPc1JE7U99xQKHw=
sha1:FRKWq3xPr4dGtjPvKc31ms7gbdc=
 by: Stefan Monnier - Fri, 16 Jul 2021 17:57 UTC

> What concerns me is the amount of tracking information required
> to do this in-flight alias detection.

I thought the idea was that the this tracking is already done for the
GBOoO core anyway.

Stefan

Re: Vector ISA Categorisation

<aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18852&group=comp.arch#18852

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:41d2:: with SMTP id o18mr10263042qtm.10.1626458611107;
Fri, 16 Jul 2021 11:03:31 -0700 (PDT)
X-Received: by 2002:a9d:5f19:: with SMTP id f25mr9490441oti.206.1626458610846;
Fri, 16 Jul 2021 11:03:30 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 11:03:30 -0700 (PDT)
In-Reply-To: <hsjII.8947$6j.5699@fx04.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 18:03:31 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: MitchAlsup - Fri, 16 Jul 2021 18:03 UTC

On Friday, July 16, 2021 at 12:36:18 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Thursday, July 15, 2021 at 1:51:55 PM UTC-5, luke.l...@gmail.com wrote:
> >> On Monday, July 12, 2021 at 8:55:42 PM UTC+1, MitchAlsup wrote:
> >>

> > <
> > Mostly the HW can figure this out by examining the register dependencies at
> > loop install time, and by performing AGENs in program order. When memory
> > references are dense the problem is actually easy. The AGENs in program
> > order is what causes minimal partial order.
<
> What concerns me is the amount of tracking information required
> to do this in-flight alias detection. Traditional OoO needs to
> track data flow dependencies, but that information is instantaneous
> and can be disposed of as soon as dependent executes.
<
Yes, and these dependencies are via registers (which are renamed) and
memory references (which are harder to rename).
<
Now imagine the renamed register has an iteration count concatenated
to track that it is to fire when result[k] of iteration[j] is delivered. Result[k]
is constant over the loop while iteration[j] increments by 1 every loop.
So, tracking register dependencies is straightforward in VVM--a straight
forward extension to typical reservation stations or scoreboards.
<
Memory references are conceptually AGENed in program order. Lesser
implementations will actually AGEN in program order making memory
alias tracking straightforward. Greater implementations will relax this
architectural rule and AGEN is in some reasonable partial order, but this
never gets harder than BigO( windowsize^2 ) in gates, and is in fact
just a dependency matrix (almost exactly like a scoreboard)........
>
> VVM needs to correlate every original source address to a version of
<
Do you mean "source address" as memory or as register--the response
is different for each.
<
> a register, then track all the dependencies on that source as it
> flows through the operations and merges with other dependencies,
> and hold onto all that tracking info while any dependent
> is still in flight.
<
Yes, dependencies have to be obeyed or garbage falls out the back end.
>
> Maybe something like...
>
> Detecting writes to prior memory address with in-flight dependents
> could be done with a TCAM.
<
First you know that there is a ST at DECODE time, and it is entered
into a memory dependency matrix in the "unknown address" state.
Younger LDs cannot deliver their result with an older ST in the UA
state--OR--the LD can deliver its result but is subject to being replayed
should the ST actually alias the LD. {This can get messy if the HW
is designed to prevent Spectré attacks.}
<
> Maybe include a Bloom filter reset at
> LOOP start to limit TCAM lookups and power usage.
> Nicer if data addresses are all naturally aligned too.
>
> Something like a scoreboard but which retains historical versions
> could track in-flight dependencies from source to sink.
>
> Then we need some way to detect that there are no in-flight
> dependencies remaining and recover above resources.
<
This is not usefully different than a GBOoO machine deciding that
inst[k..j] can all retire simultaneously. It is a solved (if complicated)
problem.
<
> So some way to backtrack through the dependency network
> and determine that the last consumer has retired,
<
In a SB design this is a big (BIG) OR gate,
In an RS design this is an OR gate across all instructions issued together.
<
> and recover all the tracking nodes and TCAM entries.
<
OK, I give up what the frack is a TCAM ?
<
> And ideally do all that resource recovery in parallel in 1 clock.
<As long as stuff can be staged in at 1/clock and staged out at 1/clock;
all of this does not have to be done in exactly 1 clock !!
<
> >> with such a hint available, even VVM LOOPs of 100,000 instructions in length
> >> could still be performed with (up to) 8 elements at a time being thrown at the
> >> back-end ALUs.
> >>
> >> l.

Re: Vector ISA Categorisation

<de063f49-f58e-4a55-9f43-64678148088en@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18853&group=comp.arch#18853

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:59c7:: with SMTP id n190mr11043017qkb.146.1626458665999;
Fri, 16 Jul 2021 11:04:25 -0700 (PDT)
X-Received: by 2002:a9d:3a49:: with SMTP id j67mr9624854otc.114.1626458665776;
Fri, 16 Jul 2021 11:04:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 11:04:25 -0700 (PDT)
In-Reply-To: <jwvim1ai1oa.fsf-monnier+comp.arch@gnu.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <jwvim1ai1oa.fsf-monnier+comp.arch@gnu.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <de063f49-f58e-4a55-9f43-64678148088en@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 18:04:25 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Fri, 16 Jul 2021 18:04 UTC

On Friday, July 16, 2021 at 12:57:46 PM UTC-5, Stefan Monnier wrote:
> > What concerns me is the amount of tracking information required
> > to do this in-flight alias detection.
<
> I thought the idea was that the this tracking is already done for the
> GBOoO core anyway.
<
For the GBOoO the only difference is that the renamed registers have an
iteration count concatenated.
>
>
> Stefan

Re: Vector ISA Categorisation

<7251418d-cc7d-4f31-9aa9-25060bf0810an@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18854&group=comp.arch#18854

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:9244:: with SMTP id u65mr11207992qkd.46.1626459526052;
Fri, 16 Jul 2021 11:18:46 -0700 (PDT)
X-Received: by 2002:a9d:4e0a:: with SMTP id p10mr8970014otf.329.1626459525819;
Fri, 16 Jul 2021 11:18:45 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 11:18:45 -0700 (PDT)
In-Reply-To: <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fa3c:a000:2556:f07:e0d:c581;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fa3c:a000:2556:f07:e0d:c581
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7251418d-cc7d-4f31-9aa9-25060bf0810an@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 16 Jul 2021 18:18:46 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 16 Jul 2021 18:18 UTC

On Friday, July 16, 2021 at 12:03:32 PM UTC-6, MitchAlsup wrote:

> OK, I give up what the frack is a TCAM ?

A Ternary Content-Addressable Memory.

It can search its entire contents directly in a single cycle... and the search
term can contain don't care bits, hence the name.

John Savard

Re: Vector ISA Categorisation

<47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18855&group=comp.arch#18855

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:71c1:: with SMTP id m184mr11453107qkc.367.1626461042920;
Fri, 16 Jul 2021 11:44:02 -0700 (PDT)
X-Received: by 2002:a9d:4c9a:: with SMTP id m26mr8823719otf.110.1626461042638;
Fri, 16 Jul 2021 11:44:02 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 11:44:02 -0700 (PDT)
In-Reply-To: <b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=92.40.189.182; posting-account=soFpvwoAAADIBXOYOBcm_mixNPAaxW9p
NNTP-Posting-Host: 92.40.189.182
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb6vfb$1ov$1@dont-email.me>
<sb70q1$fsg$2@newsreader4.netcologne.de> <sb912k$c4c$1@dont-email.me>
<sb99gi$1r5$1@newsreader4.netcologne.de> <sbh665$sht$1@dont-email.me>
<sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me> <sc12qv$8ka$1@dont-email.me>
<sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me> <sc5fh8$p7q$1@dont-email.me>
<sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com> <b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: luke.lei...@gmail.com (luke.l...@gmail.com)
Injection-Date: Fri, 16 Jul 2021 18:44:02 +0000
Content-Type: text/plain; charset="UTF-8"
 by: luke.l...@gmail.com - Fri, 16 Jul 2021 18:44 UTC

On Friday, July 16, 2021 at 6:41:54 PM UTC+1, MitchAlsup wrote:

> Instead, imaging a hard limit of 100 instructions in the loop.............
> But try an imaging doing something for more than 20 instructions that does
> not contain a memory reference !?! what kind of calculation could those be?
> and how often are these going to occur ??

i'm always concerned if a system that is designed for general purpose compute has a limitation of some kind, even though i personally cannot imagine something explicit that would tax those boundaries: "someone else will".

that said, there is almost certainly going to be cryptographic applications which perform well in parallel with initialisation not reading heavily from memory.

i _would_ suggest that the start of the loop could receive some computations in a vector of registers, such that no LD is needed, which brings me on to another issue: *passing in vector registers isn't possible*.

to perform vectorised computation it would appear that VVM *has* to operate from memory, and that only scalar registers may be passed in to the loop.

sorry, i would likely have pointed these things out 2 years ago if i had undersood VVM then! better late than never

l.

Re: Vector ISA Categorisation

<c707fcfe-4d7b-4896-9ab2-0f189afeb972n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18856&group=comp.arch#18856

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:2f5:: with SMTP id a21mr2368957qko.36.1626463234647; Fri, 16 Jul 2021 12:20:34 -0700 (PDT)
X-Received: by 2002:a05:6808:14c8:: with SMTP id f8mr9025030oiw.7.1626463234421; Fri, 16 Jul 2021 12:20:34 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 12:20:34 -0700 (PDT)
In-Reply-To: <47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb6vfb$1ov$1@dont-email.me> <sb70q1$fsg$2@newsreader4.netcologne.de> <sb912k$c4c$1@dont-email.me> <sb99gi$1r5$1@newsreader4.netcologne.de> <sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me> <sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me> <sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me> <sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com> <scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com> <9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com> <9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me> <0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me> <57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me> <999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com> <80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <
5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com> <2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com> <d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com> <b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com> <47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c707fcfe-4d7b-4896-9ab2-0f189afeb972n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 19:20:34 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 32
 by: MitchAlsup - Fri, 16 Jul 2021 19:20 UTC

On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
> On Friday, July 16, 2021 at 6:41:54 PM UTC+1, MitchAlsup wrote:
>
> > Instead, imaging a hard limit of 100 instructions in the loop.............
> > But try an imaging doing something for more than 20 instructions that does
> > not contain a memory reference !?! what kind of calculation could those be?
> > and how often are these going to occur ??
> i'm always concerned if a system that is designed for general purpose compute has a limitation of some kind, even though i personally cannot imagine something explicit that would tax those boundaries: "someone else will".
>
> that said, there is almost certainly going to be cryptographic applications which perform well in parallel with initialisation not reading heavily from memory.
>
> i _would_ suggest that the start of the loop could receive some computations in a vector of registers, such that no LD is needed, which brings me on to another issue: *passing in vector registers isn't possible*.
<
If the register operand is "busy" when the loop starts, certainly one can
guarantee that the dependent instruction will wait for its operand to
arrive before entering calculation.
<
The VEC instruction tells which scalar registers are alive outside of the loop,
so when it terminated, the scalar registers receive the last value calculated.
>
> to perform vectorised computation it would appear that VVM *has* to operate from memory, and that only scalar registers may be passed in to the loop.
<
My 66000 only has scalar registers. VVM is a concept whereby we use those
scalar names and figure out the iteration register and inbound memory
dependencies during installation. During iteration of the loop, register
and memory dependencies are obeyed. There is no mandate on memory
being inside a VVM loop.
<
I just can't see many useful loops devoid of memory references.
>
> sorry, i would likely have pointed these things out 2 years ago if i had undersood VVM then! better late than never
>
> l.

Re: Vector ISA Categorisation

<7657059b-1643-424e-8d90-7df458afc6d2n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18857&group=comp.arch#18857

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:129a:: with SMTP id w26mr11128785qki.330.1626463318607;
Fri, 16 Jul 2021 12:21:58 -0700 (PDT)
X-Received: by 2002:a9d:ba9:: with SMTP id 38mr9395453oth.276.1626463318367;
Fri, 16 Jul 2021 12:21:58 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 12:21:58 -0700 (PDT)
In-Reply-To: <47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb6vfb$1ov$1@dont-email.me>
<sb70q1$fsg$2@newsreader4.netcologne.de> <sb912k$c4c$1@dont-email.me>
<sb99gi$1r5$1@newsreader4.netcologne.de> <sbh665$sht$1@dont-email.me>
<sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me> <sc12qv$8ka$1@dont-email.me>
<sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me> <sc5fh8$p7q$1@dont-email.me>
<sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com> <b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>
<47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7657059b-1643-424e-8d90-7df458afc6d2n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 19:21:58 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 4114
 by: MitchAlsup - Fri, 16 Jul 2021 19:21 UTC

On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
> On Friday, July 16, 2021 at 6:41:54 PM UTC+1, MitchAlsup wrote:
>
> > Instead, imaging a hard limit of 100 instructions in the loop.............
> > But try an imaging doing something for more than 20 instructions that does
> > not contain a memory reference !?! what kind of calculation could those be?
> > and how often are these going to occur ??
> i'm always concerned if a system that is designed for general purpose compute has a limitation of some kind, even though i personally cannot imagine something explicit that would tax those boundaries: "someone else will".
>
> that said, there is almost certainly going to be cryptographic applications which perform well in parallel with initialisation not reading heavily from memory.
<
I also fail to see the need to completely unroll cryptographic calculations,
turning 7 instructions into 435.
>
> i _would_ suggest that the start of the loop could receive some computations in a vector of registers, such that no LD is needed, which brings me on to another issue: *passing in vector registers isn't possible*.
>
> to perform vectorised computation it would appear that VVM *has* to operate from memory, and that only scalar registers may be passed in to the loop.
>
> sorry, i would likely have pointed these things out 2 years ago if i had undersood VVM then! better late than never
>
> l.

Re: Vector ISA Categorisation

<scsngt$564$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18858&group=comp.arch#18858

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!nGb8eeSGMNR1Kqz1vCOYug.user.gioia.aioe.org.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
Date: Fri, 16 Jul 2021 21:43:26 +0200
Organization: Aioe.org NNTP Server
Lines: 36
Message-ID: <scsngt$564$1@gioia.aioe.org>
References: <sb6s70$dip$1@newsreader4.netcologne.de>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com>
<b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com>
<47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
<7657059b-1643-424e-8d90-7df458afc6d2n@googlegroups.com>
NNTP-Posting-Host: nGb8eeSGMNR1Kqz1vCOYug.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.8
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Fri, 16 Jul 2021 19:43 UTC

MitchAlsup wrote:
> On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
>> On Friday, July 16, 2021 at 6:41:54 PM UTC+1, MitchAlsup wrote:
>>
>>> Instead, imaging a hard limit of 100 instructions in the loop.............
>>> But try an imaging doing something for more than 20 instructions that does
>>> not contain a memory reference !?! what kind of calculation could those be?
>>> and how often are these going to occur ??
>> i'm always concerned if a system that is designed for general purpose compute has a limitation of some kind, even though i personally cannot imagine something explicit that would tax those boundaries: "someone else will".
>>
>> that said, there is almost certainly going to be cryptographic applications which perform well in parallel with initialisation not reading heavily from memory.
> <
> I also fail to see the need to completely unroll cryptographic calculations,
> turning 7 instructions into 435.

We did have to do this for DFC, one of the AES competition entrants:

The plain/optimized C version ran at 1/3 the speed of the faster
algorithms, including an inner loop that ran the feistel network 8 times.

For our asm version we did achieve speed parity with the fastest
algorithms, including Rijndael, the eventual winner, but to do so we did
have to unroll all 8 iterations and manually schedule some operations
across those iterations, even thought the target machine was an OoO
PentiumPro-200.

BTW, the speed we did achieve was sufficient to run 100 Mbit/s
(FastEthernet at the time) full duplex on a single core. I.e. one byte
encrypted/decrypted per clock cycle.

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: Vector ISA Categorisation

<5913b2d6-60ec-4792-881e-c6716d7d5aaan@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18859&group=comp.arch#18859

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:204c:: with SMTP id d12mr656280qka.417.1626465593169;
Fri, 16 Jul 2021 12:59:53 -0700 (PDT)
X-Received: by 2002:a54:448a:: with SMTP id v10mr2371165oiv.44.1626465592930;
Fri, 16 Jul 2021 12:59:52 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 12:59:52 -0700 (PDT)
In-Reply-To: <scsngt$564$1@gioia.aioe.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com> <9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me> <0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me> <57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me> <999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com> <80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com> <2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com> <d464e070-2e9e-4de5-936a-c47b66209887n@googlegroups.com>
<b0f5331d-3b8c-429e-99f3-f80eb8d7ef77n@googlegroups.com> <47406e4d-e8e2-4515-8140-81bd70e6a7f8n@googlegroups.com>
<7657059b-1643-424e-8d90-7df458afc6d2n@googlegroups.com> <scsngt$564$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5913b2d6-60ec-4792-881e-c6716d7d5aaan@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 19:59:53 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Fri, 16 Jul 2021 19:59 UTC

On Friday, July 16, 2021 at 2:43:30 PM UTC-5, Terje Mathisen wrote:
> MitchAlsup wrote:
> > On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
> >> On Friday, July 16, 2021 at 6:41:54 PM UTC+1, MitchAlsup wrote:
> >>
> >>> Instead, imaging a hard limit of 100 instructions in the loop.............
> >>> But try an imaging doing something for more than 20 instructions that does
> >>> not contain a memory reference !?! what kind of calculation could those be?
> >>> and how often are these going to occur ??
> >> i'm always concerned if a system that is designed for general purpose compute has a limitation of some kind, even though i personally cannot imagine something explicit that would tax those boundaries: "someone else will".
> >>
> >> that said, there is almost certainly going to be cryptographic applications which perform well in parallel with initialisation not reading heavily from memory.
> > <
> > I also fail to see the need to completely unroll cryptographic calculations,
> > turning 7 instructions into 435.
<
> We did have to do this for DFC, one of the AES competition entrants:
>
> The plain/optimized C version ran at 1/3 the speed of the faster
> algorithms, including an inner loop that ran the feistel network 8 times.
<
Yes, but we are talking about a machine where the ADD/CMP/BC takes
zero cycles per iteration, and performs exactly zero iterations too many.
<
I can see that other machines might want to do that, but there are machines
where it should become unnecessary. And when unnecessary, it should not
be done as it wastes code space and cache performance.
>
> For our asm version we did achieve speed parity with the fastest
> algorithms, including Rijndael, the eventual winner, but to do so we did
> have to unroll all 8 iterations and manually schedule some operations
> across those iterations, even thought the target machine was an OoO
> PentiumPro-200.
<
PP-200 took handful of cycles to perform the ADD/CMP/BC and looping was
far from free.
>
> BTW, the speed we did achieve was sufficient to run 100 Mbit/s
> (FastEthernet at the time) full duplex on a single core. I.e. one byte
> encrypted/decrypted per clock cycle.
>
> Terje
>
>
> --
> - <Terje.Mathisen at tmsw.no>
> "almost all programming can be viewed as an exercise in caching"

Re: Vector ISA Categorisation

<scsol5$om5$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18860&group=comp.arch#18860

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd7-ef14-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
Date: Fri, 16 Jul 2021 20:02:45 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <scsol5$om5$1@newsreader4.netcologne.de>
References: <sb6s70$dip$1@newsreader4.netcologne.de>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me>
<63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me>
<dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad>
Injection-Date: Fri, 16 Jul 2021 20:02:45 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd7-ef14-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd7:ef14:0:7285:c2ff:fe6c:992d";
logging-data="25285"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Fri, 16 Jul 2021 20:02 UTC

EricP <ThatWouldBeTelling@thevillage.com> schrieb:

> What concerns me is the amount of tracking information required
> to do this in-flight alias detection.

Consider a loop like

for (i=1; i<n; i++)
a[n[i]] = a[n[i-1]] + 1;

which basically makes this impossible, it _has_ to be
executed sequentially.

Or, different semantics, if you take Fortran's

a(n(2:)) = a(n(1:size(n-1))

you need a temporary.

If anybody wanted to do this kind of alias analysis, you would have
to restrict yourself to a subset of all the possible loops that
VVM can do, probably the stride+offset model. Possible, but better
done in the compiler, and the compiler is also better equipped to
do something like

if (stuff_can_alias (a,i))
use_ivdep_loop();
else
use_scalar_loop();

If the programmer writes

#pragma ivdep
for (i=1; i<n; i++)
a[n[i]] = a[n[i-1]] + 1;

then the compiler should be able to tell the hardware to go wild.

Re: Vector ISA Categorisation

<f4d54bc0-4319-40a4-97f3-0e095705d200n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18861&group=comp.arch#18861

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:90c:: with SMTP id v12mr11546578qkv.190.1626466351981;
Fri, 16 Jul 2021 13:12:31 -0700 (PDT)
X-Received: by 2002:a9d:7353:: with SMTP id l19mr6145742otk.76.1626466351775;
Fri, 16 Jul 2021 13:12:31 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 13:12:31 -0700 (PDT)
In-Reply-To: <scsol5$om5$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=92.40.189.182; posting-account=soFpvwoAAADIBXOYOBcm_mixNPAaxW9p
NNTP-Posting-Host: 92.40.189.182
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <scsol5$om5$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f4d54bc0-4319-40a4-97f3-0e095705d200n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: luke.lei...@gmail.com (luke.l...@gmail.com)
Injection-Date: Fri, 16 Jul 2021 20:12:31 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: luke.l...@gmail.com - Fri, 16 Jul 2021 20:12 UTC

On Friday, July 16, 2021 at 9:02:47 PM UTC+1, Thomas Koenig wrote:

> Consider a loop like
>
> for (i=1; i<n; i++)
> a[n[i]] = a[n[i-1]] + 1;
>
> which basically makes this impossible, it _has_ to be
> executed sequentially.

that looks very much like a traditional vector indexed load... oh wait, nope, it's an overwrite version.

if i may lob in a curveball here: SVP64 REMAP for FFT Triple loop butterfly i *have* to provide a Hint. the reason is that whilst the vector loop is N log2 N, you would think that full parallelism is possible, but it is not true: only the *two innermost* loops may be parallelised: on the next iteration round the outer loop there would be overwrites.

the "Hint" in effect greatly reduces the size of Dependency Matrix entries required, because all elements within the exact same "hint block" only need one single Hazard bit.

l.

Re: Vector ISA Categorisation

<73bd09f3-ca97-4f9d-b9fd-2897d1538e23n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18862&group=comp.arch#18862

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:101a:: with SMTP id z26mr11834964qkj.261.1626466877637;
Fri, 16 Jul 2021 13:21:17 -0700 (PDT)
X-Received: by 2002:aca:2b08:: with SMTP id i8mr9440491oik.0.1626466877446;
Fri, 16 Jul 2021 13:21:17 -0700 (PDT)
Path: i2pn2.org!i2pn.org!news.niel.me!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 16 Jul 2021 13:21:17 -0700 (PDT)
In-Reply-To: <scsol5$om5$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:e016:c858:874a:cac3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:e016:c858:874a:cac3
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sc9iib$3ei$1@dont-email.me>
<scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <scsol5$om5$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <73bd09f3-ca97-4f9d-b9fd-2897d1538e23n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 16 Jul 2021 20:21:17 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Fri, 16 Jul 2021 20:21 UTC

On Friday, July 16, 2021 at 3:02:47 PM UTC-5, Thomas Koenig wrote:
> EricP <ThatWould...@thevillage.com> schrieb:
> > What concerns me is the amount of tracking information required
> > to do this in-flight alias detection.
> Consider a loop like
>
> for (i=1; i<n; i++)
> a[n[i]] = a[n[i-1]] + 1;
<
I should point out that you are using 'n' as the loop maximum, and as an array
in the calculation at the same time:: no-no. SO let us change it into::
for (i=1; i<k; i++)
a[n[i]] = a[n[i-1]] + 1;
>
> which basically makes this impossible, it _has_ to be
> executed sequentially.
<
Not sequentially: but memory dependencies must be obeyed (doubly so
if a[] and n[] are aliased to each other !! )
<
Sequentially is the easiest way to obey memory dependencies.
But a memory dependence matrix can allow these references
to be calculated in a reasonable partial order and either delay or
re-run aliasing references (transitively).
>
> Or, different semantics, if you take Fortran's
>
> a(n(2:)) = a(n(1:size(n-1))
>
> you need a temporary.
>
> If anybody wanted to do this kind of alias analysis, you would have
> to restrict yourself to a subset of all the possible loops that
> VVM can do, probably the stride+offset model. Possible, but better
> done in the compiler, and the compiler is also better equipped to
> do something like
>
> if (stuff_can_alias (a,i))
> use_ivdep_loop();
> else
> use_scalar_loop();
<
But VVM does obey program order memory dependencies allowing the loop to
be expressed as::

VEC Ri,{Ri}
LDD R7,[Rn+Ri<<3]
LDD R8,[Rn+Ri<<3-8]
LDD R9,[Ra+R8<<3]
STD R9,[Ra+R7<<3]
LOOP LE,Ri,Rk,#1 // type 1 loop
<
and in the absence of aliasing, this runs as fast as the memory system can
push data through, while in the presence of aliasing it runs as fast as the
dependencies can be obeyed. What is better still is that is migrates from
as fast as memory to as fast as dependencies, back and forth, based on the
actual dependencies. When absent==fast, when present==sane. No change
code needed.
>
> If the programmer writes
>
> #pragma ivdep
> for (i=1; i<n; i++)
> a[n[i]] = a[n[i-1]] + 1;
<
That n duplicate problem again.
>
> then the compiler should be able to tell the hardware to go wild.

Re: Vector ISA Categorisation

<scu0c7$i82$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18865&group=comp.arch#18865

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!4.us.feeder.erje.net!2.eu.feeder.erje.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-a40-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
Date: Sat, 17 Jul 2021 07:20:39 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <scu0c7$i82$1@newsreader4.netcologne.de>
References: <sb6s70$dip$1@newsreader4.netcologne.de>
<scan92$k7m$1@dont-email.me>
<dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <scsol5$om5$1@newsreader4.netcologne.de>
<73bd09f3-ca97-4f9d-b9fd-2897d1538e23n@googlegroups.com>
Injection-Date: Sat, 17 Jul 2021 07:20:39 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-a40-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:a40:0:7285:c2ff:fe6c:992d";
logging-data="18690"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sat, 17 Jul 2021 07:20 UTC

MitchAlsup <MitchAlsup@aol.com> schrieb:
> On Friday, July 16, 2021 at 3:02:47 PM UTC-5, Thomas Koenig wrote:
>> EricP <ThatWould...@thevillage.com> schrieb:
>> > What concerns me is the amount of tracking information required
>> > to do this in-flight alias detection.
>> Consider a loop like
>>
>> for (i=1; i<n; i++)
>> a[n[i]] = a[n[i-1]] + 1;
><
> I should point out that you are using 'n' as the loop maximum, and as an array
> in the calculation at the same time:: no-no.

Which is what I get for not running the code through a compiler first :)

>SO let us change it into::
> for (i=1; i<k; i++)
> a[n[i]] = a[n[i-1]] + 1;
>>
>> which basically makes this impossible, it _has_ to be
>> executed sequentially.
><
> Not sequentially: but memory dependencies must be obeyed (doubly so
> if a[] and n[] are aliased to each other !! )
><
> Sequentially is the easiest way to obey memory dependencies.
> But a memory dependence matrix can allow these references
> to be calculated in a reasonable partial order and either delay or
> re-run aliasing references (transitively).

So, what would you do for a test case like

#include <stdio.h>
#include <stdlib.h>

int main()
{ int n;
int i,j,k,m;
int *ind;
double *a;
scanf ("%d",&n);

ind = malloc(n*sizeof *ind);
a = malloc(n*sizeof a);
for (i=0; i<n; i++)
{
scanf ("%d",ind+i);
a[i] = i;
}

for (i=0; i<n; i++)
{
j = ind[i];
k = ind[j];
m = ind[k];
a[i] += a[m];
}
for (i=0; i<n; i++)
printf (" %f",a[i]);
printf ("\n");
free (ind);
free(a);
return 0;
}

Is this also expressed in VVM, is this handled in a parallel
fashion fashion in (simulated) hardware, and do you get results
that agree with the serial execution?

$ echo "4 1 2 0 3" | ./a.out
0.000000 2.000000 4.000000 6.000000
$ echo "4 4 3 2 1" | ./a.out
0.000000 4.000000 4.000000 7.000000
$ echo "4 1 1 2 0" | ./a.out
1.000000 2.000000 4.000000 5.000000
$

Or do the hardware or the compiler have a heuristic to give
up cheaply i a case like that?

(It is, of course, possible to make this sort of test case into
something arbitrarily complex; I would not expect excellent
performance for this because this is of course artificial, but I
would expect that the execution is always correct, and not (much)
worse than a straight scalar execution).

Re: Vector ISA Categorisation

<7bdb55e5-9cfd-458c-a916-31aa13653effn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18871&group=comp.arch#18871

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:129a:: with SMTP id w26mr15664156qki.330.1626541842151;
Sat, 17 Jul 2021 10:10:42 -0700 (PDT)
X-Received: by 2002:aca:2b08:: with SMTP id i8mr12386705oik.0.1626541841928;
Sat, 17 Jul 2021 10:10:41 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 17 Jul 2021 10:10:41 -0700 (PDT)
In-Reply-To: <scu0c7$i82$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:95ef:5480:867b:c854;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:95ef:5480:867b:c854
References: <sb6s70$dip$1@newsreader4.netcologne.de> <scan92$k7m$1@dont-email.me>
<dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com> <9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com>
<2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com> <9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com>
<sceb52$b4t$1@dont-email.me> <0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com>
<scgi37$u7v$1@dont-email.me> <57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com>
<schqua$k02$1@dont-email.me> <999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com> <80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com>
<5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com> <2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com>
<806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com> <hsjII.8947$6j.5699@fx04.iad>
<scsol5$om5$1@newsreader4.netcologne.de> <73bd09f3-ca97-4f9d-b9fd-2897d1538e23n@googlegroups.com>
<scu0c7$i82$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7bdb55e5-9cfd-458c-a916-31aa13653effn@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 17 Jul 2021 17:10:42 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 96
 by: MitchAlsup - Sat, 17 Jul 2021 17:10 UTC

On Saturday, July 17, 2021 at 2:20:41 AM UTC-5, Thomas Koenig wrote:
> MitchAlsup <Mitch...@aol.com> schrieb:
> > On Friday, July 16, 2021 at 3:02:47 PM UTC-5, Thomas Koenig wrote:
> >> EricP <ThatWould...@thevillage.com> schrieb:
> >> > What concerns me is the amount of tracking information required
> >> > to do this in-flight alias detection.
> >> Consider a loop like
> >>
> >> for (i=1; i<n; i++)
> >> a[n[i]] = a[n[i-1]] + 1;
> ><
> > I should point out that you are using 'n' as the loop maximum, and as an array
> > in the calculation at the same time:: no-no.
> Which is what I get for not running the code through a compiler first :)
> >SO let us change it into::
> > for (i=1; i<k; i++)
> > a[n[i]] = a[n[i-1]] + 1;
> >>
> >> which basically makes this impossible, it _has_ to be
> >> executed sequentially.
> ><
> > Not sequentially: but memory dependencies must be obeyed (doubly so
> > if a[] and n[] are aliased to each other !! )
> ><
> > Sequentially is the easiest way to obey memory dependencies.
> > But a memory dependence matrix can allow these references
> > to be calculated in a reasonable partial order and either delay or
> > re-run aliasing references (transitively).
> So, what would you do for a test case like
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main()
> {
> int n;
> int i,j,k,m;
> int *ind;
> double *a;
> scanf ("%d",&n);
>
> ind = malloc(n*sizeof *ind);
> a = malloc(n*sizeof a);
> for (i=0; i<n; i++)
> {
> scanf ("%d",ind+i);
> a[i] = i;
> }
>
> for (i=0; i<n; i++)
> {
> j = ind[i];
> k = ind[j];
> m = ind[k];
> a[i] += a[m];
> }
> for (i=0; i<n; i++)
> printf (" %f",a[i]);
> printf ("\n");
> free (ind);
> free(a);
> return 0;
> }
>
> Is this also expressed in VVM, is this handled in a parallel
> fashion fashion in (simulated) hardware, and do you get results
> that agree with the serial execution?
<
You get results that agree with (serial) scalar execution.
<
A more advanced machine will recognize that each loop starts
out with 4-level indirect fetch and the addresses of three of the
fetches (LD) are unknown at the beginning of the loop, so these
go on hold due to a data dependency (can't calculate the address).
So the fetches are performed sequentially (necessarily).
<
>
> $ echo "4 1 2 0 3" | ./a.out
> 0.000000 2.000000 4.000000 6.000000
> $ echo "4 4 3 2 1" | ./a.out
> 0.000000 4.000000 4.000000 7.000000
> $ echo "4 1 1 2 0" | ./a.out
> 1.000000 2.000000 4.000000 5.000000
> $
>
> Or do the hardware or the compiler have a heuristic to give
> up cheaply i a case like that?
>
> (It is, of course, possible to make this sort of test case into
> something arbitrarily complex; I would not expect excellent
> performance for this because this is of course artificial, but I
> would expect that the execution is always correct, and not (much)
> worse than a straight scalar execution).
<
It is actually better than scalar performance because LOOP
executes in zero effective cycles whereas ADD/CMP/BC will
take at least 2. But, it is completely dependent on cache perf.

Re: Vector ISA Categorisation

<IyhJI.48452$dp5.47628@fx48.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18931&group=comp.arch#18931

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx48.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
References: <sb6s70$dip$1@newsreader4.netcologne.de> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com> <scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com> <9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com> <9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me> <0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me> <57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me> <999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com> <80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com> <2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com> <hsjII.8947$6j.5699@fx04.iad> <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
In-Reply-To: <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 62
Message-ID: <IyhJI.48452$dp5.47628@fx48.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Mon, 19 Jul 2021 16:15:36 UTC
Date: Mon, 19 Jul 2021 12:15:22 -0400
X-Received-Bytes: 4725
 by: EricP - Mon, 19 Jul 2021 16:15 UTC

MitchAlsup wrote:
> On Friday, July 16, 2021 at 12:36:18 PM UTC-5, EricP wrote:
>> MitchAlsup wrote:
>>>> On Monday, July 12, 2021 at 8:55:42 PM UTC+1, MitchAlsup wrote:
>>>>
>
>>> <
>>> Mostly the HW can figure this out by examining the register dependencies at
>>> loop install time, and by performing AGENs in program order. When memory
>>> references are dense the problem is actually easy. The AGENs in program
>>> order is what causes minimal partial order.
> <
>> What concerns me is the amount of tracking information required
>> to do this in-flight alias detection. Traditional OoO needs to
>> track data flow dependencies, but that information is instantaneous
>> and can be disposed of as soon as dependent executes.
> <
> Yes, and these dependencies are via registers (which are renamed) and
> memory references (which are harder to rename).
> <
> Now imagine the renamed register has an iteration count concatenated
> to track that it is to fire when result[k] of iteration[j] is delivered. Result[k]
> is constant over the loop while iteration[j] increments by 1 every loop.
> So, tracking register dependencies is straightforward in VVM--a straight
> forward extension to typical reservation stations or scoreboards.
> <
> Memory references are conceptually AGENed in program order. Lesser
> implementations will actually AGEN in program order making memory
> alias tracking straightforward. Greater implementations will relax this
> architectural rule and AGEN is in some reasonable partial order, but this
> never gets harder than BigO( windowsize^2 ) in gates, and is in fact
> just a dependency matrix (almost exactly like a scoreboard)........

> First you know that there is a ST at DECODE time, and it is entered
> into a memory dependency matrix in the "unknown address" state.
> Younger LDs cannot deliver their result with an older ST in the UA
> state--OR--the LD can deliver its result but is subject to being replayed
> should the ST actually alias the LD. {This can get messy if the HW
> is designed to prevent Spectré attacks.}

Ok, yes its a standard load-store queue with store to load
forwarding and cache line disambiguation.

What was confusing me is automatically packing multiple operands
together as elements in a single SIMD register "packet",
then what happens if the elements start to interact?

But I see elsewhere you answer that VVM is scalar only:

MitchAlsup wrote:
> On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
>> to perform vectorised computation it would appear that VVM *has* to operate from
memory, and that only scalar registers may be passed in to the loop.
> <
> My 66000 only has scalar registers. VVM is a concept whereby we use those
> scalar names and figure out the iteration register and inbound memory
> dependencies during installation. During iteration of the loop, register
> and memory dependencies are obeyed. There is no mandate on memory
> being inside a VVM loop.
> <

Re: Vector ISA Categorisation

<3daac0e0-463c-491e-ba06-90209f310b3dn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18933&group=comp.arch#18933

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:64c:: with SMTP id e12mr23089266qth.144.1626713049197;
Mon, 19 Jul 2021 09:44:09 -0700 (PDT)
X-Received: by 2002:a9d:61d9:: with SMTP id h25mr15436312otk.81.1626713048969;
Mon, 19 Jul 2021 09:44:08 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Mon, 19 Jul 2021 09:44:08 -0700 (PDT)
In-Reply-To: <IyhJI.48452$dp5.47628@fx48.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:1d07:72d5:67c7:329a;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:1d07:72d5:67c7:329a
References: <sb6s70$dip$1@newsreader4.netcologne.de> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <a0e2018b-9bae-4549-855b-50ff92cacbc2n@googlegroups.com>
<80be8c80-109d-4b85-9822-68fa19ee17ffn@googlegroups.com> <5c992582-0cde-4dc2-8e80-556de4f8eb26n@googlegroups.com>
<2ee7b3e0-21c2-4d48-ac4d-bac47df14d21n@googlegroups.com> <806b1dec-59b7-4f81-9dcd-4550fe43f5e0n@googlegroups.com>
<hsjII.8947$6j.5699@fx04.iad> <aea9247e-2b23-47b1-9d34-9a2c6afe07ebn@googlegroups.com>
<IyhJI.48452$dp5.47628@fx48.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3daac0e0-463c-491e-ba06-90209f310b3dn@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Mon, 19 Jul 2021 16:44:09 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: MitchAlsup - Mon, 19 Jul 2021 16:44 UTC

On Monday, July 19, 2021 at 11:15:39 AM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Friday, July 16, 2021 at 12:36:18 PM UTC-5, EricP wrote:
> >> MitchAlsup wrote:
> >>>> On Monday, July 12, 2021 at 8:55:42 PM UTC+1, MitchAlsup wrote:
> >>>>
> >
> >>> <
> >>> Mostly the HW can figure this out by examining the register dependencies at
> >>> loop install time, and by performing AGENs in program order. When memory
> >>> references are dense the problem is actually easy. The AGENs in program
> >>> order is what causes minimal partial order.
> > <
> >> What concerns me is the amount of tracking information required
> >> to do this in-flight alias detection. Traditional OoO needs to
> >> track data flow dependencies, but that information is instantaneous
> >> and can be disposed of as soon as dependent executes.
> > <
> > Yes, and these dependencies are via registers (which are renamed) and
> > memory references (which are harder to rename).
> > <
> > Now imagine the renamed register has an iteration count concatenated
> > to track that it is to fire when result[k] of iteration[j] is delivered.. Result[k]
> > is constant over the loop while iteration[j] increments by 1 every loop..
> > So, tracking register dependencies is straightforward in VVM--a straight
> > forward extension to typical reservation stations or scoreboards.
> > <
> > Memory references are conceptually AGENed in program order. Lesser
> > implementations will actually AGEN in program order making memory
> > alias tracking straightforward. Greater implementations will relax this
> > architectural rule and AGEN is in some reasonable partial order, but this
> > never gets harder than BigO( windowsize^2 ) in gates, and is in fact
> > just a dependency matrix (almost exactly like a scoreboard)........
> > First you know that there is a ST at DECODE time, and it is entered
> > into a memory dependency matrix in the "unknown address" state.
> > Younger LDs cannot deliver their result with an older ST in the UA
> > state--OR--the LD can deliver its result but is subject to being replayed
> > should the ST actually alias the LD. {This can get messy if the HW
> > is designed to prevent Spectré attacks.}
> Ok, yes its a standard load-store queue with store to load
> forwarding and cache line disambiguation.
>
> What was confusing me is automatically packing multiple operands
> together as elements in a single SIMD register "packet",
> then what happens if the elements start to interact?
<
It runs slower than if all the lanes are independent.
>
> But I see elsewhere you answer that VVM is scalar only:
> MitchAlsup wrote:
> > On Friday, July 16, 2021 at 1:44:03 PM UTC-5, luke.l...@gmail.com wrote:
> >> to perform vectorised computation it would appear that VVM *has* to operate from
> memory, and that only scalar registers may be passed in to the loop.
> > <
> > My 66000 only has scalar registers. VVM is a concept whereby we use those
> > scalar names and figure out the iteration register and inbound memory
> > dependencies during installation. During iteration of the loop, register
> > and memory dependencies are obeyed. There is no mandate on memory
> > being inside a VVM loop.
> > <

Re: Vector ISA Categorisation

<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19103&group=comp.arch#19103

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:6611:: with SMTP id c17mr5909185qtp.392.1627082814367;
Fri, 23 Jul 2021 16:26:54 -0700 (PDT)
X-Received: by 2002:a9d:7353:: with SMTP id l19mr4805365otk.76.1627082814163;
Fri, 23 Jul 2021 16:26:54 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 23 Jul 2021 16:26:53 -0700 (PDT)
In-Reply-To: <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f39a:d100:4173:8be8:d3ad:176c;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f39a:d100:4173:8be8:d3ad:176c
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 23 Jul 2021 23:26:54 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 23 Jul 2021 23:26 UTC

On Friday, July 16, 2021 at 10:02:42 AM UTC-6, Quadibloc wrote:
> On Wednesday, July 14, 2021 at 5:33:36 PM UTC-6, Quadibloc wrote:

> > So I should simplify down and reduce what I offer in that area to merely a single
> > bit per instruction to indicate groups of instructions that can be executed in
> > parallel without any checking.

> As the changes required were extensive, I have only now gotten around to
> making them, and posting the updated pages to

> http://www.quadibloc.com/arch/ct14int.htm

> and succeeding pages.

Except for adding conditional jump and subroutine jump instructions to the
mostly 16-bit instruction format on the page

http://www.quadibloc.com/arch/cp0101.htm

I haven't been making other changes to the instruction formats over the
last few days. While this is partly due to being busy with other distractions,
perhaps at this point I'm no longer seriously dissatisfied with any aspect
of the instruction formats, and so when I have the energy for the work,
perhaps now I'll proceed to filling in details like the opcodes someday
soon.

John Savard

Re: Vector ISA Categorisation

<f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19105&group=comp.arch#19105

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:7207:: with SMTP id a7mr6182499qtp.32.1627085650848;
Fri, 23 Jul 2021 17:14:10 -0700 (PDT)
X-Received: by 2002:aca:3144:: with SMTP id x65mr4603695oix.157.1627085650618;
Fri, 23 Jul 2021 17:14:10 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 23 Jul 2021 17:14:10 -0700 (PDT)
In-Reply-To: <994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=92.40.200.220; posting-account=soFpvwoAAADIBXOYOBcm_mixNPAaxW9p
NNTP-Posting-Host: 92.40.200.220
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: luke.lei...@gmail.com (luke.l...@gmail.com)
Injection-Date: Sat, 24 Jul 2021 00:14:10 +0000
Content-Type: text/plain; charset="UTF-8"
 by: luke.l...@gmail.com - Sat, 24 Jul 2021 00:14 UTC

On Saturday, July 24, 2021 at 12:26:55 AM UTC+1, Quadibloc wrote:

> Except for adding conditional jump and subroutine jump instructions to the
> mostly 16-bit instruction format on the page
>
> http://www.quadibloc.com/arch/cp0101.htm

"As all the 16-bit instructions begin with 0, and the first half of a 32-bit instruction always begins with 10 while the second half of a 32-bit instruction always begins with 11, fully parallel decoding is possible."

niiice. that's a really neat trick.

one of our team (Jacob) noted that if you have a prefix which easily identifies the size (16 bit starts with 0 for example) you can use a variant of carry propagation for multi issue length detection.

however i think it only works with two instruction lengths: if you mix 16 32 and 64 for example it is no longer O log N

what you csme up with is O(1) i love it.

l.

Re: Vector ISA Categorisation

<37a3317f-11c8-4f93-b683-d0d5e043532an@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19109&group=comp.arch#19109

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:540f:: with SMTP id b15mr6481412qtq.193.1627091015546;
Fri, 23 Jul 2021 18:43:35 -0700 (PDT)
X-Received: by 2002:a9d:5c8b:: with SMTP id a11mr5125797oti.206.1627091015329;
Fri, 23 Jul 2021 18:43:35 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 23 Jul 2021 18:43:35 -0700 (PDT)
In-Reply-To: <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f39a:d100:4173:8be8:d3ad:176c;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f39a:d100:4173:8be8:d3ad:176c
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com> <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <37a3317f-11c8-4f93-b683-d0d5e043532an@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 24 Jul 2021 01:43:35 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 24 Jul 2021 01:43 UTC

On Friday, July 23, 2021 at 6:14:11 PM UTC-6, luke.l...@gmail.com wrote:

> what you csme up with is O(1) i love it.

Of course, it _is_ wasteful of space in order to be O(1). But the whole ISA is O(1).

The default is that all instructions are 32 bits long, although a 32-bit slot can contain
a pair of 16 bit instructions instead.

A few unused instruction codes instead are headers - and every header indicates
some O(1) format; this 16-bit mostly format, formats with all the instructions 32 bits
long, or variable-length instruction formats with some other scheme of indicating
the length.

John Savard

Re: Vector ISA Categorisation

<sdpbp2$rsj$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19239&group=comp.arch#19239

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: m.del...@this.bitsnbites.eu (Marcus)
Newsgroups: comp.arch
Subject: Re: Vector ISA Categorisation
Date: Tue, 27 Jul 2021 18:20:50 +0200
Organization: A noiseless patient Spider
Lines: 25
Message-ID: <sdpbp2$rsj$1@dont-email.me>
References: <sb6s70$dip$1@newsreader4.netcologne.de>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com>
<863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com>
<ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com>
<f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com>
<a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com>
<8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com>
<5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>
<f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
<37a3317f-11c8-4f93-b683-d0d5e043532an@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 27 Jul 2021 16:20:50 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="aac6d43ec1da3802e0438f21242ccc52";
logging-data="28563"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/oc8/pz/B1XYGmgKMAYJpUlVSIpm9zy5U="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:Ojf/UwY8WeR56O7d77fFNFXFb/k=
In-Reply-To: <37a3317f-11c8-4f93-b683-d0d5e043532an@googlegroups.com>
Content-Language: en-US
 by: Marcus - Tue, 27 Jul 2021 16:20 UTC

On 2021-07-24 03:43, Quadibloc wrote:
> On Friday, July 23, 2021 at 6:14:11 PM UTC-6, luke.l...@gmail.com wrote:
>
>> what you csme up with is O(1) i love it.
>
> Of course, it _is_ wasteful of space in order to be O(1). But the whole ISA is O(1).
>
> The default is that all instructions are 32 bits long, although a 32-bit slot can contain
> a pair of 16 bit instructions instead.

Question: Do 16-bit instructions need to come in pairs, aligned to a
32-bit boundary (because it sounded like you said that)?

If so, you wouldn't need "10" and "11" headers for 16-bit instructions,
but "1" would be enough, no?

>
> A few unused instruction codes instead are headers - and every header indicates
> some O(1) format; this 16-bit mostly format, formats with all the instructions 32 bits
> long, or variable-length instruction formats with some other scheme of indicating
> the length.
>
> John Savard
>

Re: Vector ISA Categorisation

<7bda35a5-fc92-4b85-a04a-f3d0ac8684b4n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19271&group=comp.arch#19271

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:9a47:: with SMTP id c68mr24613642qke.37.1627442302161;
Tue, 27 Jul 2021 20:18:22 -0700 (PDT)
X-Received: by 2002:a05:6830:1658:: with SMTP id h24mr17047615otr.182.1627442301925;
Tue, 27 Jul 2021 20:18:21 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!usenet.pasdenom.info!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 27 Jul 2021 20:18:21 -0700 (PDT)
In-Reply-To: <sdpbp2$rsj$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f39c:db00:dd85:9b47:afc7:d0ad;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f39c:db00:dd85:9b47:afc7:d0ad
References: <sb6s70$dip$1@newsreader4.netcologne.de> <999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com>
<scjk6o$rme$1@dont-email.me> <fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com>
<863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com> <5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com>
<ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com> <7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com>
<f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com> <9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com>
<a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com> <0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com>
<8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com> <9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com>
<5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com> <994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com>
<f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com> <37a3317f-11c8-4f93-b683-d0d5e043532an@googlegroups.com>
<sdpbp2$rsj$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7bda35a5-fc92-4b85-a04a-f3d0ac8684b4n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 28 Jul 2021 03:18:22 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Wed, 28 Jul 2021 03:18 UTC

On Tuesday, July 27, 2021 at 10:20:53 AM UTC-6, Marcus wrote:

> Question: Do 16-bit instructions need to come in pairs, aligned to a
> 32-bit boundary (because it sounded like you said that)?

> If so, you wouldn't need "10" and "11" headers for 16-bit instructions,
> but "1" would be enough, no?

Ah; I didn't make one thing clear.

In the instruction format where 16-bit instructions start with 0
and 32-bit instructions start with 10 for their first half and 11
for their second half, no such restriction is present.

In _another_ instruction format, the 16-bit instructions need
to come in pairs. Here, they also start with 0, but any 32-bit
instruction slot that doesn't begin with 0 in both its halves
contains a single 32-bit instruction.

That other instruction format is the _default_. However, some
instruction codes are unused... as instructions, and instead
act as headers for a 256-bit block. Which may contain instructions
in one of four formats, the two that have been described, and
two others. Plus additional modifier information.

John Savard

Re: Vector ISA Categorisation

<da6d3279-6156-4d68-8b8d-4296634a3d47n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19613&group=comp.arch#19613

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:386:: with SMTP id j6mr11851455qtx.231.1628319728076;
Sat, 07 Aug 2021 00:02:08 -0700 (PDT)
X-Received: by 2002:a05:6830:929:: with SMTP id v41mr9767031ott.16.1628319727906;
Sat, 07 Aug 2021 00:02:07 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 7 Aug 2021 00:02:07 -0700 (PDT)
In-Reply-To: <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f39d:2c00:c514:b97d:402d:747;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f39d:2c00:c514:b97d:402d:747
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com> <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <da6d3279-6156-4d68-8b8d-4296634a3d47n@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 07 Aug 2021 07:02:08 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 7 Aug 2021 07:02 UTC

On Friday, July 23, 2021 at 6:14:11 PM UTC-6, luke.l...@gmail.com wrote:
> On Saturday, July 24, 2021 at 12:26:55 AM UTC+1, Quadibloc wrote:
>
> > Except for adding conditional jump and subroutine jump instructions to the
> > mostly 16-bit instruction format on the page
> >
> > http://www.quadibloc.com/arch/cp0101.htm

> "As all the 16-bit instructions begin with 0, and the first half of a 32-bit instruction always begins with 10 while the second half of a 32-bit instruction always begins with 11, fully parallel decoding is possible."

> niiice. that's a really neat trick.

> one of our team (Jacob) noted that if you have a prefix which easily identifies the size (16 bit starts with 0 for example) you can use a variant of carry propagation for multi issue length detection.

> however i think it only works with two instruction lengths: if you mix 16 32 and 64 for example it is no longer O log N

That may be, but I think Mitch Alsup noted that even with three instruction lengths - if a
very simple scheme is used like that of the IBM System/360 and its successors -
something similarly efficient can be achieved.

> what you csme up with is O(1) i love it.

I've been doing some more thinking, and I've come up with a way to reduce the needed
overhead, and still remain O(1). Soon I'll be updating the page to show the new scheme.

Basically:

Each 16-bit instruction slot has its first bit reserved for length indication.

What to _do_ with each 16-bit slot can be directly determined without having to go
sequentially through all the preceding slots... _but_ it is necessary to peek at the
first bit of the preceding slot and the following slot.

The instructions have the first bits of their parts like this:

0 if 16 bits
1 0 if 32 bits
1 1 0 if 48 bits.

Decoding of an instruction is initiated at the decoder which processes
the first 16 bits of the instruction. Here is what it is to do, based on the
three first bits of the preceding, current, and following slots (the first
slot in a block is treated as though it's preceded by a slot with a 0 in
the first bit position):

0 0 - Process a 16-bit instruction
1 0 - Take no action
0 1 0 Process a 32-bit instruction
0 1 1 Process a 48-bit instruction
1 1 - Take no action (only 1 1 0, never 1 1 1, should occur)

Perhaps in the 1 1 1 case, it should be - don't take the action of
decoding an instruction, but do signal an exception.

This also solves the issue of having to split up the address field, as a
nice bonus!

John Savard

Re: Vector ISA Categorisation

<821cf9de-a741-4af7-8e2c-0989ab3a9c0cn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19615&group=comp.arch#19615

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5ad5:: with SMTP id d21mr4429354qtd.200.1628331430267;
Sat, 07 Aug 2021 03:17:10 -0700 (PDT)
X-Received: by 2002:a54:4194:: with SMTP id 20mr10388649oiy.78.1628331430090;
Sat, 07 Aug 2021 03:17:10 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 7 Aug 2021 03:17:09 -0700 (PDT)
In-Reply-To: <da6d3279-6156-4d68-8b8d-4296634a3d47n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=217.147.94.29; posting-account=soFpvwoAAADIBXOYOBcm_mixNPAaxW9p
NNTP-Posting-Host: 217.147.94.29
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com> <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
<da6d3279-6156-4d68-8b8d-4296634a3d47n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <821cf9de-a741-4af7-8e2c-0989ab3a9c0cn@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: luke.lei...@gmail.com (luke.l...@gmail.com)
Injection-Date: Sat, 07 Aug 2021 10:17:10 +0000
Content-Type: text/plain; charset="UTF-8"
 by: luke.l...@gmail.com - Sat, 7 Aug 2021 10:17 UTC

On Saturday, August 7, 2021 at 8:02:09 AM UTC+1, Quadibloc wrote:

> Each 16-bit instruction slot has its first bit reserved for length indication.
>
> What to _do_ with each 16-bit slot can be directly determined without having to go
> sequentially through all the preceding slots... _but_ it is necessary to peek at the
> first bit of the preceding slot and the following slot.

yes, and then you can use a variant of carry-propagation which istr is O(log(N))
> The instructions have the first bits of their parts like this:
>
> 0 if 16 bits
> 1 0 if 32 bits
> 1 1 0 if 48 bits.

this is remarkably similar to the RISC-V ISA encoding, which they extended
to 192+ bits and beyond. 1110 is 64-bit, 11110NNN is 80-192 bit and
1111110 is reserved for future.

actually it's not quite like that, what it is, is:

* 0b00 is 16-bit Quadrant 0
* 0b01 is 16-bit Quadrant 1
* 0b10 is 16-bit Quadrant 2
* 0b11 is 32-bit:
- 0bNNNNN11 is Major opcodes 0-30
- 0b11111111 is further escape-sequenced

something like that, it's basically the same principle except the
major opcodes are spaced in between.

what i really like about what you came up with (the original version)
is that the number of bits used for signalling sizes is a completely
parallel one... but it's also about the same number of bits used *for*
signalling as in RISC-V.

l.

Re: Vector ISA Categorisation

<6793e2d8-873d-4033-931b-e257af0b2a9fn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=19616&group=comp.arch#19616

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:188d:: with SMTP id v13mr13124152qtc.192.1628345399623;
Sat, 07 Aug 2021 07:09:59 -0700 (PDT)
X-Received: by 2002:a05:6830:30a2:: with SMTP id g2mr8366741ots.206.1628345399310;
Sat, 07 Aug 2021 07:09:59 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 7 Aug 2021 07:09:59 -0700 (PDT)
In-Reply-To: <821cf9de-a741-4af7-8e2c-0989ab3a9c0cn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f39d:2c00:c8de:4782:24b9:9230;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f39d:2c00:c8de:4782:24b9:9230
References: <sb6s70$dip$1@newsreader4.netcologne.de> <sb99gi$1r5$1@newsreader4.netcologne.de>
<sbh665$sht$1@dont-email.me> <sbubiu$unp$1@dont-email.me> <sbudg8$aje$1@dont-email.me>
<sc12qv$8ka$1@dont-email.me> <sc186o$gns$1@dont-email.me> <sc5cg5$a3p$1@dont-email.me>
<sc5fh8$p7q$1@dont-email.me> <sc8pjr$8ib$1@dont-email.me> <sc8uoc$2tc$1@dont-email.me>
<sc9iib$3ei$1@dont-email.me> <scac7e$ph4$1@dont-email.me> <63597d55-f5bd-42fc-bae3-38155d072128n@googlegroups.com>
<scan92$k7m$1@dont-email.me> <dc5c8894-e51d-46a8-b682-9784fb8ac205n@googlegroups.com>
<9020308c-08e6-4f4f-b29f-e4320c19b1c2n@googlegroups.com> <2336ffa3-df90-461a-a1cb-51147dfc504dn@googlegroups.com>
<9a596e40-0c21-4b4c-83b1-56c745dd199cn@googlegroups.com> <sceb52$b4t$1@dont-email.me>
<0e87d075-e620-4173-accc-e16e0adbba35n@googlegroups.com> <scgi37$u7v$1@dont-email.me>
<57a0784c-b114-460e-af96-9930e94441f3n@googlegroups.com> <schqua$k02$1@dont-email.me>
<999476a5-100e-49dc-9a06-4550a7c928f0n@googlegroups.com> <scjk6o$rme$1@dont-email.me>
<fbf6751b-6b88-4283-92ea-1fff4b7fe200n@googlegroups.com> <863e6886-f580-4cce-aaef-ddf8d6baa4dfn@googlegroups.com>
<5deba2bb-fa46-43e7-a8f2-01bc5cffb519n@googlegroups.com> <ca4a2e3b-0589-4b4a-8447-39128dab7af8n@googlegroups.com>
<7dc19ec1-a43d-4868-ad8b-7f03c320012fn@googlegroups.com> <f6590a76-2e16-486d-baf8-879ebdf36266n@googlegroups.com>
<9cb2db22-9778-4e1b-bcc4-71005c225c73n@googlegroups.com> <a688aab7-5ba9-4f22-8817-1060c3b29375n@googlegroups.com>
<0785c4c1-b891-4b0a-8fa9-d712ea178e1en@googlegroups.com> <8f0d50a6-897a-4924-84f9-f790395c90e9n@googlegroups.com>
<9260f971-4fd2-487c-ab00-249ca72f29a4n@googlegroups.com> <5a96aea9-fac3-4a98-939a-58bb54e493ddn@googlegroups.com>
<994b54f1-8600-40ca-a42e-f96946ccd86en@googlegroups.com> <f412574c-c964-44ca-aed6-a12ac40c8e83n@googlegroups.com>
<da6d3279-6156-4d68-8b8d-4296634a3d47n@googlegroups.com> <821cf9de-a741-4af7-8e2c-0989ab3a9c0cn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6793e2d8-873d-4033-931b-e257af0b2a9fn@googlegroups.com>
Subject: Re: Vector ISA Categorisation
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 07 Aug 2021 14:09:59 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 7 Aug 2021 14:09 UTC

On Saturday, August 7, 2021 at 4:17:11 AM UTC-6, luke.l...@gmail.com wrote:

> what i really like about what you came up with (the original version)
> is that the number of bits used for signalling sizes is a completely
> parallel one... but it's also about the same number of bits used *for*
> signalling as in RISC-V.

Thank you. Of course, though, I'm only able to do this because a
signalling bit intrudes on every 16-bit instruction slot.

That is possible because in this restricted 16-bit instruction format,
I am not using displacements longer than 15 bits.

When I use full 16-bit displacements, and I also have immediates
that might be 16, 32, or 64 bits, with no possibility of a signalling
bit intruding on that space, normally I would have no option of using
a completely parallel scheme - at least, not one of this general kind.

In some previous incarnations of Concertina II, I switched to 18-bit
instruction slots so I could combine 16-bit displacements with parallel
encoding. (Immediates, though, were handled through block headers.)

So this is why the other instruction formats use block headers to
attain O(1) decoding instead.

John Savard

Pages:12345678
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor