Re: [Gems-users] 回复: 回复: 回复: Latency and number of memory request


Date: Sat, 8 May 2010 21:22:19 -0600
From: Dan Gibson <degibson@xxxxxxxx>
Subject: Re: [Gems-users] 回复: 回复: 回复: Latency and number of memory request
That is correct.

2010/5/8 张轶 <zhangyi@xxxxxxxxxxxxxx>
"The target machine has no way to query the current Ruby cycle count, nor does Simics have any notion of Ruby's time -- ever. "
From the view of the Simics side, after a request returns, it would only know how much Simics cycles this request has spend on the Ruby. Am I right?
 
Regards,
Zhang Yi 
 
------------------ 原始邮件 ------------------
发件人: "Dan Gibson"<degibson@xxxxxxxx>;
发送时间: 2010年5月9日(星期天) 凌晨5:26
收件人: "Gems Users"<gems-users@xxxxxxxxxxx>;
主题: Re: [Gems-users]回复: 回复: Latency and number of memory request
 
2010/5/7 张轶 <zhangyi@xxxxxxxxxxxxxx>
Hi Dan,
 
I haven't well understood how to record time in Ruby.
 
In the file "rubyconfig.defaults", the comments of the MEM_BUS_CYCLE_MULTIPLIER says this parameter is the "Basic cycle time of the memory controller.  This defines the period which is used as the memory channel clock period, the address bus bit time, and the memory controller cycle time. Assuming a 200 MHz memory channel (DDR-400, which has 400 bits/sec data), and a 2 GHz Ruby clock." It seems to me the MEM_BUS_CYCLE_MULTIPLIER is a multiplier of an absolute time. Where is the definition of this absolute time?

There is now definition of any absolute cycle time. All cycle times are relative to one another.
 
What is the relation between memory cycle and cache cycle in Ruby?

That would be MEM_BUS_CYCLE_MULTIPLIER.
 
 
I am also confused that in the same file there is a parameter SIMICS_RUBY_MULTIPLIER "determines how many Simics cycles advance for every Ruby cycle". My understanding is Ruby cycle would refer to Simics cycle, ...
when SIMICS_RUBY_MULTIPLIER =1, this is true.
 
and cache and memory time recorded in Ruby are used with Ruby cycle, right?
Yes.
 
But in your last letter you wrote Simics cycle would not affect Ruby. So how does Simics use the time recorded in Ruby?

The target machine has no way to query the current Ruby cycle count, nor does Simics have any notion of Ruby's time -- ever.
 
Besides, I have checked that by far Simics's X86 mode still doesn't stall instruction fetch.

Bummer.
 
 
Regards,
Zhang Yi
 
------------------ 原始邮件 ------------------
发件人: "Dan Gibson"<degibson@xxxxxxxx>;
发送时间: 2010年5月5日(星期三) 晚上8:54
收件人: "Gems Users"<gems-users@xxxxxxxxxxx>;
主题: Re: [Gems-users]回复: Latency and number of memory request
 
Zhang,

2010/5/5 张轶 <zhangyi@xxxxxxxxxxxxxxx>
Hi Dan,
Many thanks for your reply!  And I have two more questions.
 
1."There is a number that the target /thinks/ is the clock rate". Is this number the "basic cycle time of the memory controller"?  And which parameter defines this number?
Is this number different from the delay value used in the cache?
 

By this, I meant that there is a clock rate configured in the script used to initially create the Simics checkpoint (e.g., I believe 20MHz is the default, to make I/O rather fast). This number then appears in various simulated registers and devices, so eventually the target Solaris instance thinks it is running at 20MHz. This clock rate in no way affects Ruby's performance, but when target software attempts to determine the clock rate from the OS, that is the number provided.
 
2. A stupid question. What is the "Demand accesses"?

A demand access is an access directly servicing a load or store. Writebacks and prefetches are examples of non-demand accesses.

Regards,
Dan
 
 
Regards,
Zhang Yi
 
------------------ 原始邮件 ------------------
发件人: "Dan Gibson"<degibson@xxxxxxxx>;
发送时间: 2010年5月4日(星期二) 凌晨0:13
收件人: "Gems Users"<gems-users@xxxxxxxxxxx>;
主题: Re: [Gems-users] Latency and number of memory request
 
Hi Zhang,
Please see my answers below.

Regards,
Dan

2010/5/3 张轶 <zhangyi@xxxxxxxxxxxxxx>
Hi all!
I have two questions about memory request in gems.
1.The first is about the memory request latency in gems.
In the simics, the cycle value is decided by the processor frequency, in other words, this value is not a fixed value. It seems that gems cycle is multiple of simics cycle. Is it to say if the processor frequency in the simulation changes, then the latency value of a memory requestchanges too?

All latencies are measured in Ruby cycles. This cycle count is, in general, a multiple of a "Simics cycle". However, the definition of a "Simics cycle" is vague and difficult. This is why Ruby cycles is the measure of time -- strange things happen in 1 'simics cycle'. In theory, by having the SIMICS_RUBY_MULTIPLIER >1, GEMS 'emulates' a multi-issue in-order core. In practice, by modeling instruction fetch, this is not the case. However, I see you are using x86, so you may not be modeling instruction fetch anyway (see below).

Overall, there is no number measured in MHz that represents the processor frequency in GEMS. There is a number that the target /thinks/ is the clock rate, but it is by no means accurate.
2.On one processor, how many request a thread can issueat the same time?
In my simulation,I am using X86 arch and SMP protocal and simulate a 2 processor system. So there is no opal, thenwithout pipeline and without out of order instruction. To my understanding, for such a simulation,in each processor eachtime therewould issue two requests at the most(one is instruction cache miss the other is data cache miss)..

As of the time that I made my x86 patch, Simics's x86 model wouldn't actually do a stalling instruction fetch. This may have changed since I last looked/cared. You should find out, empirically if necessary or via the Simics Reference Manual.

That said, the Simics+Ruby model is even simpler than you assume. Instruction fetches and data accesses aren't issued concurrently.

So totally, inmy system there would have 4 requests waiting in the memory controller at the most. I have tried to print out all the memory requests in the simulation and found that at some time there would be at most6 requests waiting in the memory controller.So why?

My guess: Write-back caches + Demand accesses.
Many thanks!
Zhang Yi

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.



_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.





--
http://www.cs.wisc.edu/~gibson [esc]:wq!

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.





--
http://www.cs.wisc.edu/~gibson [esc]:wq!

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.





--
http://www.cs.wisc.edu/~gibson [esc]:wq!
[← Prev in Thread] Current Thread [Next in Thread→]