Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DRAMSim2 with GEM5 FS mode #30

Open
hassahma opened this issue Oct 16, 2013 · 4 comments
Open

DRAMSim2 with GEM5 FS mode #30

hassahma opened this issue Oct 16, 2013 · 4 comments

Comments

@hassahma
Copy link

I have integrated DRAMSim2 with Gem5 FS mode but the linux boot process becomes very very slow and benchmark execution is almost not possible due to slow speed. I found out that the slowness is due to the fact that 'DRAMSim2' update callback is called every clock cycles even when there is no read/write request going in to the DRAMSim2.

Please can somebody tell me how to reduce the 'update' call back frequency of DRAMsim2 so that we can use it with gem5 in FS mode. Ideally I would like the update method to be called only when read/write is sent to the DRAMsim2.

Thanks.

@dramninjasUMD
Copy link
Collaborator

Unfortunately this is not possible with DRAMSim2's current architecture. Since DRAMSim2 is cycle-based, the update() function is basically the clock tick function. Even if there are no requests, there is still state being updated in the DRAM (for example, refresh).

You'd pretty much have to re-write the simulator from scratch to accomplish this.

@dramninjasUMD
Copy link
Collaborator

After speaking with a colleague in our group, he told me that there have been other people who have complained about the speed of DRAMSim2. The only benchmarking I did was with MARSSx86 and the DRAMSim2 overhead wasn't that significant so I never really bothered to optimize (you know the adage about premature optimization).

Over the weekend I plan on doing some work on DRAMSim2 and I will try to run it through a profiler to see if I can squeeze some performance out of it.

@hassahma
Copy link
Author

Thanks for the details. If I run gem5 in FS mode (atomic cpu) with integrated DRAMSim2 then the linux doesn't boot up even in 8 hours. But if I comment out the statement "channels[i]->update();" in actual_update method then linux boots in 3 minutes.

In Atomic cpu mode, there is no memory traffic, so all the overhead is due to background energy processing dramsim2 on each clock tick I think. I was thinking of changing dramsim2 in a way that, I only increase the cycle count on each clock tick. But when a memory access comes in, then I call 'update' method in MemoryController.cpp in a loop that iterates through the number of clock cycles since last memory access. I tried that but it ranks throgh the error that they are not in valid state.

@debiprasannasahoo
Copy link

Hi,

I was also trying to integrate DRAMSim2 (revision 2.2.2) with gem5 (revision : 10005). I found a similar behavior as discussed above. After the integration, I configured to run the PARSEC benchmark in fs mode and it executed for ever even for max inst set to a very low value. I tried to comment out "channels[i]->update();" but the simulation didn't stop rather hanged.

Can somebody tell me if the above problem was resolved or any other alternative.

Thanks,
Debiprasanna

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants