I did the same experiment with O3CPU and I am seeing that the LSQ can
receive multiple packets per cpu cycle. For example, the trace below shows
that it gets 8 packets in one cycle:

7864000: system.cpu0.iew.lsq: received pkt for addr:0x67f80
7864001: system.cpu0.iew.lsq: received pkt for addr:0x67f88
7864002: system.cpu0.iew.lsq: received pkt for addr:0x67f84
7864003: system.cpu0.iew.lsq: received pkt for addr:0x67f90
7864004: system.cpu0.iew.lsq: received pkt for addr:0x67f8c
7864005: system.cpu0.iew.lsq: received pkt for addr:0x67f98
7864006: system.cpu0.iew.lsq: received pkt for addr:0x67fa0
7864007: system.cpu0.iew.lsq: received pkt for addr:0x67f9c

As I mentioned in previous posts, it does not make sense that LSQ can
accept up to 8 response packets at a time. Unless I am overlooking
something, I believe that there should be a limit on the number of RESPONSE
packets that cpu can receive from cache (As Ali mentioned, there is already
a mechanism in O3CPU to limit number of REQUEST packets). Before trying to
fix this, I just wanted to make sure this is also considered a bug by
others.

cpu: O3CPU at 1GHz, L1 latency: 2ns, LSQ size: 16, ISA: ARM

Thanks,
Amin

On Wed, Jun 13, 2012 at 10:00 PM, Nilay Vaish <ni...@cs.wisc.edu> wrote:

> Amin, you might be correct here. Why don't you investigate this further,
> and if you think gem5 should support this, then you can submit a patch
> which adds this support to caches.
>
> --
> Nilay
>
>  Tue, 12 Jun 2012, Amin Farmahini wrote:
>> Ali,
>>
>> That's right. O3 limits the number of requests, but even in this case,
>> responses can return to O3 in the same cycle.
>> My cpu also limits the number of requests. My cpu sends only one request
>> per cpu cycle. My question is about responses from cache. I would like to
>> know why the l1 cache sends multiple responses to cpu in the same cycle
>> (although in consecutive ticks)? For example, my cpu sends individual
>> requests in cycles 1, 2, and 3, and receives three responses in cycle 10.
>> Basically this is what is happening in the log file.
>> My conclusion would be that cache does not limit the number of responses
>> back to cpu and this mechanism (limiting responses) should be provided in
>> cpu.
>>
>> Thanks,
>> Amin
>>
>> On Tue, Jun 12, 2012 at 9:41 PM, Ali Saidi <sa...@umich.edu> wrote:
>>
>>  **
>>>
>>>
>>> The O3 CPU counts the number of requests it's submitted and limits it to
>>> the number set. I'm not sure how you got the trace you posted, but in our
>>> model it's the CPU's responsibility to limit the number of requests to
>>> the
>>> cache.
>>>
>>>
>>>
>>> Ali
>>>
>>>
>>>
>>>
>>>
>>> On 12.06.2012 15:40, Amin Farmahini wrote:
>>>
>>> I only modified the code in cpu side and not the cache. And
>>> CPU::DcachePort::recvTiming() is called when the l1 cache has made a
>>> response packet ready. I would guess the same behavior can be seen in O3
>>> cpu, because what I am doing is similar to LSQ implementation in O3.
>>> I totally agree that this should be decided by L1 cache bandwidth, but I
>>> don't know if this bandwidth is modeled in Gem5.
>>> BTW, I am using classic model, and not Ruby.
>>>
>>> Thanks,
>>> Amin
>>>
>>> On Tue, Jun 12, 2012 at 3:24 PM, Nilay <ni...@cs.wisc.edu> wrote:
>>>
>>>  at physically such a design would not make any sense (may be only for
>>>> now). But this should be decided by the bandwidth of the L1 cache and of
>>>> the link between the CPU the L1 cache.
>>>>
>>>>
>>>
>>>
>>> ______________________________**_________________
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>>
>>>
>>  ______________________________**_________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to