Instruction Buffers - Cray 1

By: Björn R. Björnsson (, February 23, 2020 11:25 am
Room: Moderated Discussions
Marcus ( on February 23, 2020 10:24 am wrote:
> Björn R. Björnsson ( on February 23, 2020 9:40 am wrote:
> > Marcus ( on February 23, 2020 2:50 am wrote:
> > >
> > > I have always wondered how the instruction buffers in the Cray 1 worked. IIRC
> > > the Cray used 16-bit instruction words and had an instruction buffer of 16-64
> > > words or so, but I don't know what kind of update/eviction policy it used.
> > >
> >
> > From the Cray-1 Hardware Reference Manual (
> >
> > "There are four instruction buffers in the CRAY-1, each of which holds 64
> > consecutive 16-bit instruction parcels (figure 3-7). Instruction parcels are
> > held in the buffers prior to being delivered to the NIP or LIP registers.
> >
> > The beginning instruction parcel in a buffer always has a parcel address that is an
> > even multiple of 64. This allows the entire range of addresses for instructions in a
> > buffer to be defined by the high-order 16 bits of the beginning parcel address. For
> > each buffer, there is a 16-bit beginning address register that contains this value."
> >
> > Instructions for execution could only come from one of the instruction buffers. If the instruction
> > was not present in one of the instruction buffers a 2-bit counter would be increment to select
> > which of the four buffers to load with the memory block containing the instruction.
> >
> Yes, I just found the manual and the section on instruction buffers. So it seems
> that they had something very similar to a modern instruction cache, though with
> a FIFO replacement policy instead of LRU, and only four cache lines in total.

Fully associative with four lines. On a 'cache-miss' execution would suspend until the 'cache-line' was loaded from memory. Even if the next instruction was in an instruction buffer a two cycle penalty was incurred if it wasn't in the 'current' instruction buffer.

There were some additional details. On a miss the instruction buffer was loaded such that the next instruction would be within the first four words in the buffer and the other words in the cache line would fill the buffer in a circular fashion. Presumably this would allow execution to resume before the entire cache-line was loaded from memory.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Has there ever been a CPU with ...Moritz2020/02/21 07:11 AM
  Has there ever been a CPU with ...hobold2020/02/21 07:33 AM
    Has there ever been a CPU with ...Adrian2020/02/21 09:10 AM
      Has there ever been a CPU with ...Lyra Heartstrings2020/02/21 01:45 PM
    locked i-cacheMoritz2020/02/21 09:32 AM
      locked i-cacheWilco2020/02/21 10:33 AM
    Has there ever been a CPU with ...blaine2020/02/21 12:39 PM
  Has there ever been a CPU with ...Gabriele Svelto2020/02/21 10:11 AM
    Atari Jaguarincorrector2020/02/22 05:40 AM
    Super-FX & THX, allMoritz2020/02/22 10:40 AM
  Has there ever been a CPU with ...Tim McCaffrey2020/02/21 10:41 AM
    Instruction BuffersRob Thorpe2020/02/22 07:37 PM
      Instruction BuffersMarcus2020/02/23 02:50 AM
        Instruction Buffers - Cray 1Björn R. Björnsson2020/02/23 09:40 AM
          Instruction Buffers - Cray 1Marcus2020/02/23 10:24 AM
            Instruction Buffers - Cray 1Björn R. Björnsson2020/02/23 11:25 AM
  Has there ever been a CPU with ...Mark Roulo2020/02/21 11:57 AM
    before I-cacheMoritz2020/02/21 03:46 PM
      before I-cacheMark Roulo2020/02/21 04:03 PM
        before I-cacherwessel2020/02/22 12:13 PM
          before I-cacheanonymou52020/02/22 02:49 PM
            microcode RAM capacity (before I-cache)hobold2020/02/23 02:33 AM
  Has there ever been a CPU with ...anonymous22020/02/21 12:21 PM
  Has there ever been a CPU with ...Jose2020/02/21 02:43 PM
  Has there ever been a CPU with ...Peter Greenhalgh2020/02/23 03:20 AM
  Has there ever been a CPU with ...gallier22020/02/24 12:28 AM
  Has there ever been a CPU with ...Etienne2020/02/24 05:25 AM
Reply to this Topic
Body: No Text
How do you spell avocado?