Table of Contents

DreamCell CPU design [2016 .. ongoing]

Justification

Some abstractions are an unaffordable luxery

Waiting for technology that doesn't exist yet

Philosophy

  • General purpose processor
    • no specialized units.
    • per clock reconfigurable regions vs. set and forget FPGA config.
    • Scalable congruent regions, a 2x2 function block scales to the same configuration as a 4x4 function block. They perform the same function, only differing in the width of the input.
    • Localized data into regions, like a patch space.

Von Neumann architecture doesn't scale.

Design

Simulating in JADE

Need to emulate a photonic bus. clone the current register device and set the cap to 0, risetime to 0. the bus will for an N*N cell there will be a N-wide bus for each row.

Simulating in C

  • Instructions

    So there's instruction configuration data, and inherent cell features, abilities. cells have 8'wire to NESW nbrs.

    TODO: reword the following paragraph with real technical vocab. There are PROG cells, like DATA cells. PROG cells hold opcode data, which is instruction configuration data. So each cell has 256 different possible configurations. Some runs will require neighbor PROG cells to help with configuration to minimize chatter with the outboard photonics controller which needs to lock path segments from the edge of the chip to the target domain.

    • config instructions
    • neighbor instructions

      – CMPSWP

    • portal instructions

      use segments to route between two remote cells.

  • UI
    • keyboard
    • TAB between two modes
      • layout mode

        cell edit rollover

      • text based cmd mode
        • help mode

          key bindings.

    • Views on the grid

      cycle through different scales.

      • Design Scale

        about 10x10 showing cell registers and instruction

      • Region Scale

        about 50x50 showing cell only value register

      • Global Scale
  • Features

    save design

    • Heirarchy?

      not sure if traditional heirarchy type organization make sense. computations may be compiled into cell patterns, and that's that. They evolve independently and report back.

Information bottleneck

The size of configuration data is lower bounded by. the more specific a computation gets, the more information is required to describe it. There should be a optimized middle ground for any given processing unit. Even compressed configuration data may

Argument configuring by heading

A cell has a heading, depending on heading. Like relative addressing in two dimensions with make configurations easier to visualize. A cell with heading North looks Left to find West. A cell with heading South looks Left and finds East. So, the cell can be rotated simply by changing the two heading bits. A change of heading changes the cell arguments. A cell with heading West may look LEFT at a SOUTH neighbor for argument 1 and looks R at a N nbr for arg 2. If that cell changes heading to N, then look L for arg1 at W, and R for arg2 at E.


Table 1: Cells with two argument operations.
L R F B Heading f(a,b)
a b     North f(L, R)
a   b   North f(L, F)
a     b North f(L, B)
  b a   North f(F, R)
  b   a North f(B, R)
    a b North f(F, B)

Table 2: Cells with one argument operation.
L R F B Heading f(a,b)
a       North f(L)
  a     North f(R)
    a   North f(F)
      a North f(B)

#+ENDCENTER

Segment Broadcasting

A cell may broadcast an 8-bit value. The broadcast will occupy a 1, 2, 3 or 4 segments, each of which is to be terminated by a blocking cell.

Types of broadcasts

  • Filled Broadcast: Every cell in the segment receives the value of the source broadcast cell.
  • Portal Broadcast: Only the target portal cell receives the value from the source broadcast cell.

System Requirements

  • A broadcast segment is a set of adjacent row or column of cells that act as repeaters.
  • A broadcast starts from the broadcast cell and terminates at a blocking cell.
  • Any cell can broadcast except bBLOCK.
  • A broadcast segment delivers values quickly, the current model assumes a signal transmitted on a broadcast segment is driving a valid 8-bit value at each cell of a broadcast segment. For segments with many cells, this implies large capacitance and high rise/fall times. Therefore, photonics hardware may be needed to facilitate driving such signal in one cycle.
  • bBLOCK cell config, for terminating broadcast segments, row/col partitioning.

older broadcast thoughts

cell1.jpg

  • row broadcast
  • column broadcast
  • cell register
  • neighbor communication?
    • charts, map, atlas - reuse terminology.

    / A broadcasting cell /

Stalling evolution

Two approaches

Continue and repeat the operation (don't stall)

Instead of stalling after completing an operation, a source cell could set a flag that says: "I have a value ready in the data register!", and generate a \(\overline{\textrm{STALL}}\) signal and apply to target neighbor STALL pins.

Stop after one operation (stall immediately)

When a cell finishes running an operation, the cell may need to reserve the computed value for more than one cycle. In this case it should stall. So, there needs to be a stall bit and it needs to be written to at the right time.

Glossery

Source Cell (src)

A cell that acts as the source of a data value.

Target Cell (tgt)

A cell that receives data in some context where a source cell has been defined.

Author: Derek Rhodes

Created: 2018-11-25 Sun 16:59

Validate