Changes between Version 1 and Version 2 of Writing Rules/RISC


Ignore:
Timestamp:
Jan 7, 2008, 1:09:00 PM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Writing Rules/RISC

    v1 v2  
    2323|| ISS MIPSR3000        || CABA Model MIPS          || TLM-T Model MIPS          || PV Model MIPS  ||
    2424|| ISS PPC405              || CABA Model PPC            || TLM-T Model PPC            || PV Model PPC   ||
    25 || ISS OpenRISC       || CABA Model OpenRISC || TLM-T Model OpenRISC || PV Model MIPS  ||
     25|| ISS OpenRISC       || CABA Model OpenRISC || TLM-T Model OpenRISC || PV Model OpenRISC  ||
    2626
    2727The method has been demonstrated for the MIPSR3000 and PPC 405 processors, and can be simply extended to the OpenRISC, Sparc, Nios, and MicroBLAZE processors.
     
    3838
    3939
    40 * '''inline void reset()'''
     40 * '''inline void reset()'''
    4141This function reset all registers defining the processor internal state.
    4242
     
    5050This function performs one internal step of a long instruction.
    5151 
    52  * '''inline void getInstructionRequest (bool & req , enum InsAccessType        & type, uint32_t & address)'''
     52 * '''inline void getInstructionRequest (bool & req , enum !InsAccessType       & type, uint32_t & address)'''
    5353This function is used by the wrapper to obtain from the ISS the instruction request parameters. The ‘’’req’’’ parameter is true when there is a valid request. The ‘’’address’’’ parameter is the instruction address. The  ‘’’type’’’ parameter can have the values defined below: 
    5454{{{
     
    5959}}}
    6060
    61  * '''inline void getDataRequest (bool &req , enum DataAccessType       & type, uint32_t & address, uint32_t & wdata)'''
     61 * '''inline void getDataRequest (bool &req , enum !DataAccessType      & type, uint32_t & address, uint32_t & wdata)'''
    6262This function is used by the wrapper to obtain from the ISS the data request parameters. The ‘’’req’’’ parameter is true when there is a valid request. The ‘’’address’’’ parameter is the data address, and the ‘’’wdata’’’ parameter is the data value to be written. The  ‘’’type’’’ parameter is  defined below :
    6363{{{
    6464enum DataAccessType {
    65 RW ,   // Read Word Cached
    66 RH ,  // Read Half Cached
    67 RB  ,  // Read Byte Cached
    68 RZ ,   // Cache Line Invalidate
    69 RWU ,  // Read Word Uncached
    70 RHU ,  // Read Half Uncached
    71 RBU ,  // Read Byte Uncached
    72 WW ,  // Write Word
    73 WH ,  // Write Half
    74 WB ,  // Write Byte
    75 SC ,  // Store Conditional word
    76 LL ,  // Load Linked word
     65    RW ,   // Read Word Cached
     66    RH ,  // Read Half Cached
     67    RB  ,  // Read Byte Cached
     68    RZ ,   // Cache Line Invalidate
     69    RWU ,  // Read Word Uncached
     70    RHU ,  // Read Half Uncached
     71    RBU ,  // Read Byte Uncached
     72    WW ,  // Write Word
     73    WH ,  // Write Half
     74    WB ,  // Write Byte
     75    SC ,  // Store Conditional Word
     76    LL ,  // Load Linked Word
    7777}
    7878}}}
     
    9494As an example, we present the general structure of the MIPS R3000 ISS, as depicted in the chronogram of figure 2. The instruction fetch, instruction decode, and instruction execution are done in one cycle. A specific register ‘’’r_npc’’’ is introduced to model the delayed branch mechanism : the instruction following a branch instruction is always executed. The load instructions are executed in two cycles, as those instructions require two cache access (one for the instruction, one for the data). The ISS can issue two simultaneous request for the instruction cache, and the data cache, but those requests are done for different instructions.
    9595
    96 
     96[[Image(chronogramme.png, nolink)]]
    9797
    9898