Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.arch > #5832

Re: Register file splits, a new look.

From torbenm@diku.dk (Torben Ægidius Mogensen)
Newsgroups comp.arch
Subject Re: Register file splits, a new look.
References <ggtgp-1DA77E.06332706022012@netnews.mchsi.com>
Date 2012-02-09 11:19 +0100
Message-ID <7z1uq4qpf4.fsf@ask.diku.dk> (permalink)
Organization SunSITE.dk - Supporting Open source

Show all headers | View raw


Brett Davis <ggtgp@yahoo.com> writes:

> Does separate address registers make sense?
>
> For historical reasons we have lots of CPU's with a separate 
> FPU/vector unit. Often under the hood designers have decided
> to use a unified register file. Intel did this with the Nehalem
> family of CPU's that were recently replaced SandyBridge.
> ...
> Does it make more sense to split the address registers into
> there own register file for best performance?
> This allows you to split the rename registers into two smaller
> register files.
> ...
> The goal is to make high end implementations faster, lower power,
> easier, etc.
> ...
> So what do people think of unifying the int-float registers, and
> separating the address registers?

A disadvantage of a single unified register file is that you need more
read/write ports to support the same total number of reads and writes
per cycle.  A disadvantage of splitting the register file is that you
may underutilize some banks, for example in code that does not use FP,
and at the same time not have enough of the other kind.

An advantage of a split file is also that you need fewer bits in the
instruction word to specify a register, as the bank will be implied by
the instruction.  On the other hand, you may have to essentially
duplicate instructions for several banks, as common operations like
register moves and equality tests are needed for all types of registers.

So there is no clear case either way, and it may depend a lot on the
number of registers.  If you want to keep the total number of registers
down, a unified file is probably the best bet, as the risk of running
out of registers in one bank while having spare registers in another is
higher than if you have plenty of registers.  So you could see a unified
register file as a way of reducing the register total (at the cost of
adding more read/write ports and complicating the data paths to the
functional units).

An idea could be to split the register file not by type but into, say,
even and odd-numbered registers, each with its own rename set.  Each
instruction that reads two registers is made to read one from each file.
This way, the left operand to the ALU will always come from (say) even
registers and the right operand from odd registers.  This simplifies the
data paths a bit compared to having either argument taking values from
either file, and it saves a bit per register specifier, as the lsb is
implied.  It also spreads reads more or less evenly across both files.
If you want two-address instructions (where the destination is teh same
as one of the arguments), you can use one bit to specify which argument
register gets the result.

Since you don't split per type, you can use all registers for integers,
all for floats or all for indexes, so you avoid uneven utilisation.

	Torben

Back to comp.arch | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-06 06:33 -0600
  Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-06 09:29 -0800
    Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-07 07:08 -0600
  Re: Register file splits, a new look. torbenm@diku.dk (Torben Ægidius Mogensen) - 2012-02-09 11:19 +0100
    Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-09 12:12 -0800
      Re: Register file splits, a new look. "Paul A. Clayton" <paaronclayton@gmail.com> - 2012-02-09 15:27 -0800
        Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-09 15:52 -0800
      Re: Register file splits, a new look. nmm1@cam.ac.uk - 2012-02-10 08:07 +0000
        Re: Register file splits, a new look. "Andy (Super) Glew" <andy@SPAM.comp-arch.net> - 2012-02-10 06:37 -0800
      Re: Register file splits, a new look. Terje Mathisen <"terje.mathisen at tmsw.no"> - 2012-02-10 09:36 +0100
      Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-10 12:22 -0600
        Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-10 12:26 -0800
          Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-11 07:25 -0600
            Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-16 17:17 -0600
            Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-16 16:25 -0800
              Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-17 14:08 -0600
                Re: Register file splits, a new look. MitchAlsup <MitchAlsup@aol.com> - 2012-02-28 08:54 -0800
                Re: Register file splits, a new look. Brett Davis <ggtgp@yahoo.com> - 2012-02-28 19:33 -0600

csiph-web