Back Next
  Limited address types :

    Direct memory referenced by operand. 
      Direct memory references are usually limited in range.
    
    Register indirect
      Register holds address of memory being accessed. 
       (indirect pointer).

      Indirect important for larger address ranges.

      But require additional steps to initialize (load) register pointer.
      
  Only read/write (load/store) between memory and CPU. 
    Because read/write may not complete in 1 clock cycle,

      NOP padding or out of order coding may be used to improve performance.

    RISC CPUs expect to run on cached memory systems.

  Any/All computational activity occurs only between registers in CPU.

  Instructions decoded by hardwired decoder, very fast but unchangeable.
    Most RISC commands are too simple to make microcode necessary.

  Goal is to fetch, decode and execute instruction in one cycle.
    In practice, most RISC chips can do most work in 1 to 2 cycles.

    Although branch instructions may trigger a 'stall' to allow the CPU
      to update the PC and registers.
 
  Requires programmer/compiler to implement more complex actions 
    via software algorithm.

  Simple design allows :
    Faster clock cycles.
    Shorter data-paths.
    Fewer stages. 
    Fewer propagation delays.
    Wider paths easier to implement.
    Lower power consumption.

  Simple instruction design makes efficient pipe-lining easier.

  RISC pipeline
 
  Pipeline length : 5 stages. 

    Instruction fetch (whole instruction).
    Instruction decode
    Execute
      Register to Register, simple math completed by end of clock cycle.

      Memory reference - calculate target data's memory location.
        RISC generally supports 5 address modes.
          Direct 
          Indirect (pointer register)
          Indirect Indexed (pointer register and index register)
          Indirect displacement (pointer register and hard coded offset)
          Indirect dIndexed isplacement 
            (pointer register, index register, and hard coded offset)

      Multi-cycle, more complex instructions such as mul/div.
        Done in parallel with secondary registers, 
          allowing data path to be used for next instructions.

        May create data-dependency hazard.

    Memory access
      For an indirect memory read, calculating the memory address is 
        considered part of the execute stage.

      Accessing the memory is this stage.
      # remember calculations are never done during a memory access.

    Write-back - move results of previous actions to specified registers.