Hi steve, Thanks for replying me! I am using M5 b3 version now. My SDRAM model is implemented from scratch in SE mode. I have another question: If I create a Memory port in my SDRAM object, how to connect this port to the bus, or how to set the peer port? Maybe this question is stupid, but I am not really clear about the usage and implementation of port object.
Rongrong > I'm a little confused... memory system timing is basically the same in > SE and FS modes. If you're using an old version of M5, it's true that > different main-memory objects got used in those two modes, but that's > not true anymore in b4; they both use PhysicalMemory. (Actually I > think that change happened in b3, or maybe even earlier.) > > It's probably easiest to derive from PhysicalMemory, though you could > write your own object from scratch. If you're working with b4 (which > you probably should), then I'd recommend the following approach: > > - derive your SDRAM object from PhysicalMemory > - inside your SDRAM object, create a MemoryPort class that derives > from PhysicalMemory::MemoryPort > - in SDRAM::MemoryPort, override the recvTiming() function (which is > currently defined in SimpleTimingPort) with a version that's the same > as in SimpleTimingPort except leave out the "schedSendTiming(pkt, > curTick + latency);" line. > - later when you know what tick the response will be ready, call > "port->schedSendTiming(pkt, doneTick);". Note that you'll either have > to record the port the packet came in on, or override > PhysicalMemory::getPort() to only allow one non-functional port to be > created. (I'm not sure when if ever PhysicalMemory needs multiple > non-functional ports...) > > I haven't actually tried this, but if I were trying to do a detailed > DRAM model that's how I'd go about it. > > Steve > > On 11/13/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >> Hi, >> >> I have some questions about adding a new SDRAM model with >> out-of-order >> memory access scheduling into FS mode. This SDRAM model can run >> correctly in SE mode. >> In SE mode, once a memory access is scheduled, the response time >> will >> be sent out by calling the callback function - >> slaveInterface->respond(). >> In FS mode, there is no such callback function. Instead, >> sendTiming(pkt, latency) is called to send the latency to EventQueue. >> This function is called every packet and the calculated memory access >> latency is fixed. >> My questions are : >> 1. Should I derive my SDRAM class from physicalMemory? In SE mode, >> this SDRAM model is derived from SimObject class. >> 2. In our SDRAM model, memory accesses are scheduled every memory >> cycle, could I just call sendTiming(pkt, latency) in my code once the >> latency is obtained? >> 3. How to set the port to my SDRAM model? >> >> Thanks, >> Tracy >> _______________________________________________ >> m5-users mailing list >> m5-users@m5sim.org >> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >> > _______________________________________________ > m5-users mailing list > m5-users@m5sim.org > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > _______________________________________________ m5-users mailing list m5-users@m5sim.org http://m5sim.org/cgi-bin/mailman/listinfo/m5-users