Re: Banked register files

Liste des GroupesRevenir à c arch 
Sujet : Re: Banked register files
De : mitchalsup (at) *nospam* aol.com (MitchAlsup1)
Groupes : comp.arch
Date : 20. Aug 2024, 03:19:10
Autres entêtes
Organisation : Rocksolid Light
Message-ID : <2cf5a18a58a4281b1b67935b31a8fe49@www.novabbs.org>
References : 1 2 3
User-Agent : Rocksolid Light
On Mon, 19 Aug 2024 23:23:11 +0000, Brett wrote:

MitchAlsup1 <mitchalsup@aol.com> wrote:
On Mon, 19 Aug 2024 21:46:07 +0000, Brett wrote:
>
Banked register files, a mental exercise at expanding the register file.
>
With three operand RISC you have you have three 5 bit register
specifiers using 15 bits.
>
If instead you have eight banks of eight registers you have a 3 bit bank
specifier and three 3 bit register specifiers for 12 bits.
>
Now the banks need to talk to each other and so you would add a bit to
each register specifier to tell whether it uses the bank or the base
registers, for 72 registers total, not 64. So a 3 bit bank specifier
and three 4 bit register specifiers for 15 bits, the same as a 32
register RISC chip.
>
This covers 100% of instructions that smell like::
>
    ADD    R17,R17,R25
>
but covers 000% of the instructions that smell like::
>
    ADD    R7,R17,R25
>
I strongly suspect that it covers less than 50% of the 3-operand
instruction uses.
>
My description was bad, let’s do a MC 68000 version, base registers are
addressing mostly, and the banks are integer/float.
There is a reason this style fell out of fashion.
Not enough address registers at the same time one had not enough
data registers--whereas a flat 16-entry file had enough for either.
There is a reason CRAY-2 staging memory was not copied, too; and
it is mainly the same reason.

The compiler can handle this easily, simple dependency grouping and if
you
need more than 8 registers you use the No base flag to total to the base
registers. So you have two chains that total in two banks and both write
to
the base registers where the last total of the two chains are added.
>
This saves a lot of no bank bits, only the result needs a no bank
override.
Yes, 68K did have pretty good code density--{{Now if 68020 had NOT
gone a blown up the addressing modes...}}
>
Simple code only uses base registers, or base plus one bank.
Call and return parameters are in the base registers, spilling to a bank
if you need more.
>
Since only the result needs an override, you can do 4 banks of 16
registers.
Dream on.

Date Sujet#  Auteur
19 Aug 24 * Banked register files14Brett
20 Aug 24 `* Re: Banked register files13MitchAlsup1
20 Aug 24  `* Re: Banked register files12Brett
20 Aug 24   `* Re: Banked register files11MitchAlsup1
20 Aug 24    +* Re: Banked register files9Brett
22 Aug 24    i`* Re: Banked register files8Brett
24 Aug 24    i `* Re: Banked register files7Robert Finch
24 Aug 24    i  `* Re: Banked register files6Brett
26 Aug 24    i   `* Re: Banked register files5Brett
27 Aug 24    i    `* Re: Banked register files4MitchAlsup1
28 Aug 24    i     `* Re: Banked register files3Brett
28 Aug 24    i      `* Re: Banked register files2MitchAlsup1
30 Aug 24    i       `- Re: Banked register files1Brett
22 Aug 24    `- Re: Banked register files1mac

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal