Changes between Version 1 and Version 2 of Component/Mips
- Timestamp:
- May 6, 2007, 2:26:06 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/Mips
v1 v2 9 9 The simulation model is actually an instruction set simulator (ISS), 10 10 organised as a two-stage pipeline: 11 * T he first pipeline stage is the instruction fetch, with access to the external instruction cache12 * The second pipeline stage is the instruction execution; with a possible access to the external data cache11 * TIn the first cycle, the instruction fetch, with access to the external instruction cache. 12 * In the second cycle, the instruction is executed with a possible access to the external data cache. 13 13 * The "delayed branch" is accurately modelized, but not the "delayed load". 14 14 The main functional specifications are the following: … … 16 16 * There is no TLB : no hardware support for virtual memory 17 17 * All Mips R3000 exceptions are handled, including the memory addressing X_IBE and X_DBE, but the write errors are not precise, due to the posted write buffer in the cache controller. 18 * Five "system registers" are defined :18 * A data cache line invalidation mechanism is supported : when a ''lw'' instruction is executed with the R0 destination register, a cache line invalidation request is sent to the data cache. 19 19 20 21 20 = Mips Processor CABA Implementation = 22 21 23 22 The caba implementation is in 24 * source:trunk/soclib/systemc/include/caba/ interconnect/pibus_bcu.h25 * source:trunk/soclib/systemc/src/caba/ interconnect/pibus_bcu.cc23 * source:trunk/soclib/systemc/include/caba/processor/Mips.h 24 * source:trunk/soclib/systemc/src/caba/processor/Mips.cc 26 25 27 26 == Template parameters == 28 27 29 template<typename vci_param> 28 This component has no template parameters. 30 29 31 30 == Constructor parameters == 32 31 {{{ 33 PiBcu(32 Mips( 34 33 sc_module_name name, // Instance Name 35 const soclib::common::MappingTable &mp, // Mapping Table 36 size_t nb_master, // Number of initiators 37 size_t nb-slave, // Number of targets 38 uint32_t time_out); // Time-out (number of cycles) 34 int ident); // processor id 39 35 }}} 36 37 == Visible registers == 38 39 The following internal registers define the processor internal state, and can be inspected: 40 * PC : program counter 41 * IR : Instruction register 42 * GR[i] : General registers ( 0 < i < 32) 43 * HI & LO : intermediate registers for multiply / divide instructions 44 * IDENT : processor id register = CP0[0] 45 * BAR : Bad address register = CP0[8] 46 * SR : Status register = CP0[12] 47 * CR : Cause register = CP0[13] 48 * EPC : Exception PC register = CP0[14] 40 49 41 50 == Ports ==