Re: Tonights Tradeoff - Background Execution Buffers

Liste des GroupesRevenir à c arch 
Sujet : Re: Tonights Tradeoff - Background Execution Buffers
De : robfi680 (at) *nospam* gmail.com (Robert Finch)
Groupes : comp.arch
Date : 09. Oct 2024, 11:44:08
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <ve5mpq$2jt5k$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14
User-Agent : Mozilla Thunderbird
On 2024-10-05 5:43 a.m., Anton Ertl wrote:
Robert Finch <robfi680@gmail.com> writes:
On 2024-10-04 2:19 a.m., Anton Ertl wrote:
4) Keep the flags results along with GPRs: have carry and overflow as
bit 64 and 65, N is bit 63, and Z tells something about bits 0-63.
The advantage is that you do not have to track the flags separately
(and, in case of AMD64, track each of C, O, and NZP separately), but
instead can use the RAT that is already there for the GPRs.  You can
find a preliminary paper on that on
<https://www.complang.tuwien.ac.at/anton/tmp/carry.pdf>.
...
One solution, not mentioned in your article, is to support arithmetic
with two bits less than the number of bit a register can support, so
that the carry and overflow can be stored. On a 64-bit machine have all
operations use only 62-bits. It would solve the issue of how to load or
store the carry and overflow bits associated with a register.
 Yes, that's a solution, but the question is how well existing software
would react to having no int64_t (and equivalent types, such as long
long), but instead an int62_t (or maybe int63_t, if the 64th bit is
used for both signed and unsigned overflow, by having separate signed
and unsigned addition etc.).  I expect that such an architecture would
have low acceptance.  By contrast, in my paper I suggest an addition
to existing 64-bit architectures that has fewer of the same
disadvantages as the widely-used condition-code-register approach has,
but still has a few of them.
 
Sometimes
arithmetic is performed with fewer bits, as for pointer representation.
I wonder if pointer masking could somehow be involved. It may be useful
to have a bit indicating the presence of a pointer. Also thinking of how
to track a binary point position for fixed point arithmetic. Perhaps
using the whole upper byte of a register for status/control bits would work.
 There are some extensions for AMD64 in that direction.
 
It may be possible with Q+ to support a second destination register
which is in a subset of the GPRs. For example, one of eight registers
could be specified to holds the carry/overflow status. That effectively
ties up a second ALU though as an extra write port is needed for the
instruction.
 Needing only one write port is an advantage of my approach.
 - anton
Been thinking some about the carry and overflow and what to do about register spills and reloads during expression processing. My thought was that on the machine with 256 registers, simply allocate a ridiculous number of registers for expression processing, for example 25 or even 50. Then if the expression is too complex, have the compiler spit out an error message to the programmer to simplify the expression. Remnants of the ‘expression too complex’ error in BASIC. So, there are no spills or reloads during expression processing. I think the storextra / loadextra registers used during context switching would work okay. But in Q+ there are 256 regs which require eight storextra / loadextra registers. I think the store extra / load extra registers could be hidden in the context save and restore hardware. Not even requiring access via CSRs or whatever. I suppose context loads and stores could be done in blocks of 32 registers. An issue is that the load extra needs to be done before registers are loaded. So, the extra word full of carry/overflow bits would need to be fetched in a non-sequential fashion. Assuming for instance, that saving register values is followed by a save of the CO word. Then it is positioned wrong for a sequential load. It may be better to have the wrong position for a store, so loads can proceed sequentially.
It strikes me that there is no real good solution, only perhaps an engineered one. Toyed with the idea of having 16 separate flags registers, but not liking that as a solution as much as the store/load extra.
Another thought is to store additional info such as a CRC check of the register file on context save and restore.
*****
Finally wrote the SM to walk the ROB backwards and restore register mappings for a checkpoint restore. Cannot get Q+ to do more than light up one LED in SIM. Register values are not propagating properly.

Date Sujet#  Auteur
26 Sep 24 * Re: Tonights Tradeoff - Background Execution Buffers80MitchAlsup1
27 Sep 24 `* Re: Tonights Tradeoff - Background Execution Buffers79Robert Finch
4 Oct 24  `* Re: Tonights Tradeoff - Background Execution Buffers78Robert Finch
4 Oct 24   +* Re: Tonights Tradeoff - Background Execution Buffers75Anton Ertl
4 Oct 24   i`* Re: Tonights Tradeoff - Background Execution Buffers74Robert Finch
5 Oct 24   i `* Re: Tonights Tradeoff - Background Execution Buffers73Anton Ertl
9 Oct 24   i  `* Re: Tonights Tradeoff - Background Execution Buffers72Robert Finch
9 Oct 24   i   +* Re: Tonights Tradeoff - Background Execution Buffers3MitchAlsup1
9 Oct 24   i   i+- Re: Tonights Tradeoff - Background Execution Buffers1Robert Finch
12 Oct 24   i   i`- Re: Tonights Tradeoff - Background Execution Buffers1BGB
12 Oct 24   i   +* Re: Tonights Tradeoff - Carry and Overflow67Robert Finch
12 Oct 24   i   i`* Re: Tonights Tradeoff - Carry and Overflow66MitchAlsup1
12 Oct 24   i   i `* Re: Tonights Tradeoff - Carry and Overflow65BGB
12 Oct 24   i   i  `* Re: Tonights Tradeoff - Carry and Overflow64Robert Finch
13 Oct 24   i   i   +* Re: Tonights Tradeoff - Carry and Overflow3MitchAlsup1
13 Oct 24   i   i   i`* Re: Tonights Tradeoff - ATOM2Robert Finch
13 Oct 24   i   i   i `- Re: Tonights Tradeoff - ATOM1MitchAlsup1
13 Oct 24   i   i   +- Re: Tonights Tradeoff - Carry and Overflow1BGB
31 Oct 24   i   i   `* Page fetching cache controller59Robert Finch
31 Oct 24   i   i    +- Re: Page fetching cache controller1MitchAlsup1
6 Nov 24   i   i    `* Re: Q+ Fibonacci57Robert Finch
17 Apr 25   i   i     `* Re: register sets56Robert Finch
17 Apr 25   i   i      +* Re: register sets53Stephen Fuld
17 Apr 25   i   i      i+- Re: register sets1Robert Finch
17 Apr 25   i   i      i+* Re: register sets46MitchAlsup1
18 Apr 25   i   i      ii`* Re: register sets45Robert Finch
18 Apr 25   i   i      ii `* Re: register sets44MitchAlsup1
20 Apr 25   i   i      ii  `* Re: register sets43Robert Finch
21 Apr 25   i   i      ii   `* Re: auto predicating branches42Robert Finch
21 Apr 25   i   i      ii    `* Re: auto predicating branches41Anton Ertl
21 Apr 25   i   i      ii     +- Is an instruction on the critical path? (was: auto predicating branches)1Anton Ertl
21 Apr 25   i   i      ii     `* Re: auto predicating branches39MitchAlsup1
22 Apr 25   i   i      ii      `* Re: auto predicating branches38Anton Ertl
22 Apr 25   i   i      ii       +- Re: auto predicating branches1MitchAlsup1
22 Apr 25   i   i      ii       `* Re: auto predicating branches36Anton Ertl
22 Apr 25   i   i      ii        `* Re: auto predicating branches35MitchAlsup1
23 Apr 25   i   i      ii         +* Re: auto predicating branches3Stefan Monnier
23 Apr 25   i   i      ii         i`* Re: auto predicating branches2Anton Ertl
25 Apr 25   i   i      ii         i `- Re: auto predicating branches1MitchAlsup1
23 Apr 25   i   i      ii         `* Re: auto predicating branches31Anton Ertl
23 Apr 25   i   i      ii          `* Re: auto predicating branches30MitchAlsup1
24 Apr 25   i   i      ii           `* Re: asynch register rename29Robert Finch
27 Apr 25   i   i      ii            `* Re: fractional PCs28Robert Finch
27 Apr 25   i   i      ii             `* Re: fractional PCs27MitchAlsup1
28 Apr 25   i   i      ii              `* Re: fractional PCs26Robert Finch
28 Apr 25   i   i      ii               +* Re: fractional PCs15MitchAlsup1
29 Apr 25   i   i      ii               i`* Re: fractional PCs14Robert Finch
5 May 25   i   i      ii               i `* Re: control co-processor13Robert Finch
5 May 25   i   i      ii               i  `* Re: control co-processor12Al Kossow
5 May 25   i   i      ii               i   `* Re: control co-processor11Stefan Monnier
6 May 25   i   i      ii               i    +* Re: control co-processor3MitchAlsup1
7 May 25   i   i      ii               i    i+- Re: control co-processor1MitchAlsup1
15 Jul 25   i   i      ii               i    i`- Re: control co-processor1MitchAlsup1
7 May 25   i   i      ii               i    `* Scan chains (was: control co-processor)7Stefan Monnier
7 May 25   i   i      ii               i     +* Re: Scan chains (was: control co-processor)2Al Kossow
7 May 25   i   i      ii               i     i`- Re: Scan chains1Stefan Monnier
7 May 25   i   i      ii               i     +* Re: Scan chains3MitchAlsup1
7 May 25   i   i      ii               i     i`* Re: Scan chains2Stefan Monnier
8 May 25   i   i      ii               i     i `- Re: Scan chains1MitchAlsup1
15 Jul 25   i   i      ii               i     `- Re: Scan chains1MitchAlsup1
29 Apr 25   i   i      ii               `* Re: fractional PCs10Robert Finch
29 Apr 25   i   i      ii                `* Re: fractional PCs9MitchAlsup1
30 Apr 25   i   i      ii                 `* Re: fractional PCs8Robert Finch
30 Apr 25   i   i      ii                  +* Re: fractional PCs6Thomas Koenig
1 May 25   i   i      ii                  i+- Re: fractional PCs1Robert Finch
2 May 25   i   i      ii                  i`* Re: fractional PCs4moi
2 May 25   i   i      ii                  i +* Re: millicode, extracode, fractional PCs2John Levine
2 May 25   i   i      ii                  i i`- Re: millicode, extracode, fractional PCs1moi
2 May 25   i   i      ii                  i `- Re: fractional PCs1moi
30 Apr 25   i   i      ii                  `- Re: fractional PCs1MitchAlsup1
15 Jul 25   i   i      i`* Re: register sets5John Savard
15 Jul 25   i   i      i `* Re: register sets4MitchAlsup1
19 Jul 25   i   i      i  `* Re: register sets3Robert Finch
19 Jul 25   i   i      i   `* Re: register sets2Anton Ertl
19 Jul 25   i   i      i    `- Re: register sets1MitchAlsup1
15 Jul 25   i   i      `* Re: register sets2John Savard
15 Jul 25   i   i       `- Re: register sets1MitchAlsup1
13 Oct 24   i   `- Re: Tonights Tradeoff - Background Execution Buffers1Anton Ertl
4 Oct 24   +- Re: Tonights Tradeoff - Background Execution Buffers1BGB
6 Oct 24   `- Re: Tonights Tradeoff - Background Execution Buffers1MitchAlsup1

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal