Changes between Version 1 and Version 2 of Writing Rules/RISC
- Timestamp:
- Jan 7, 2008, 1:09:00 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Writing Rules/RISC
v1 v2 23 23 || ISS MIPSR3000 || CABA Model MIPS || TLM-T Model MIPS || PV Model MIPS || 24 24 || 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 || 26 26 27 27 The method has been demonstrated for the MIPSR3000 and PPC 405 processors, and can be simply extended to the OpenRISC, Sparc, Nios, and MicroBLAZE processors. … … 38 38 39 39 40 * '''inline void reset()'''40 * '''inline void reset()''' 41 41 This function reset all registers defining the processor internal state. 42 42 … … 50 50 This function performs one internal step of a long instruction. 51 51 52 * '''inline void getInstructionRequest (bool & req , enum InsAccessType & type, uint32_t & address)'''52 * '''inline void getInstructionRequest (bool & req , enum !InsAccessType & type, uint32_t & address)''' 53 53 This 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: 54 54 {{{ … … 59 59 }}} 60 60 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)''' 62 62 This 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 : 63 63 {{{ 64 64 enum DataAccessType { 65 RW , // Read Word Cached66 RH , // Read Half Cached67 RB , // Read Byte Cached68 RZ , // Cache Line Invalidate69 RWU , // Read Word Uncached70 RHU , // Read Half Uncached71 RBU , // Read Byte Uncached72 WW , // Write Word73 WH , // Write Half74 WB , // Write Byte75 SC , // Store Conditional word76 LL , // Load Linked word65 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 77 77 } 78 78 }}} … … 94 94 As 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. 95 95 96 96 [[Image(chronogramme.png, nolink)]] 97 97 98 98