Thank you for taking the time to provide such a detailed and informative
answer.
I appreciate your kind attention to my inquiry. Your response has been very
helpful and will undoubtedly inform my next steps.

*Karim Soliman*
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)


On Fri, Aug 30, 2024 at 1:25 AM C.-Y. Wu via gem5-users <gem5-users@gem5.org>
wrote:

> Hello,
>
> My understanding is that, for a (Garnet) router, the VC buffer size is
> marked by the (initial) credit value.
>
> For example, the outport-East of Router 0 is connected to the inport-West
> of Router 1. The outport-East of Router 0 keeps all the credit values,
> corresponding to all VCs of Router 1's inport-West, in an "OutVcState"
> vector. In the constructor of OutVcState
> (src/mem/ruby/network/garnet/OutVcState.cc), the maximum credit values are
> initialized to buffers_per_ctrl_vc (for vnet 0 and 1) or
> buffers_per_data_vc (for vnet 2).
> If you change those two values, you will see that an outport can push at
> most buffers_per_ctrl_vc (or buffers_per_data_vc) flits into a VC buffer.
> Because the credits will then run out. The behavior is the same as setting
> the buffer depth. However, if you look at
> src/mem/ruby/network/garnet/flitBuffer.cc, the class member "max_size"
> seems indeed never set and the function isFull() is never called.
>
> If you want to check the number of flits in a specific VC buffer,
> you will have to check:
> - the class member virtualChannels (a vector of VirtualChannel) of
> InputUnit
> - the class member inputBuffer (type flitBuffer) of VirtualChannel
> - the member function getSize() of flitBuffer, which returns the size of
> m_buffer (type: std::deque) (Note that the size of std::deque is the number
> of elements in the queue.)
>
> Best regards,
>
> Chia
>
>
> On Mon, Aug 12, 2024 at 12:42 PM Karim Soliman via gem5-users <
> gem5-users@gem5.org> wrote:
>
>> Dear gem5 Community,
>>
>> I hope this email finds you well. I apologize in advance if my questions
>> seem basic, as I am still learning the ropes of gem5 and have encountered
>> some areas of confusion.
>>
>> For my research, I am interested in configuring the depth of the input
>> buffers per router. I understand that the default buffer size is zero,
>> which signifies an infinite buffer.
>>
>> I have reviewed the source code in
>> "src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that
>> buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is
>> set to 1. If I modify the default value of buffers_per_data_vc to 8,
>> would this accurately configure the input buffer depth to 8?
>>
>> Additionally, I would like to inquire about accessing the current number
>> of flits within the buffer. I reviewed the code in
>> "src/mem/ruby/network/garnet/InputUnit.cc" and
>> "src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the
>> relevant functionality.
>>
>> Thank you for your time and assistance.
>>
>> Best Regards,
>> *Eng. Karim Soliman*
>> Teaching Assistant
>> Computer Engineering Department
>> Pharos University in Alexandria (P.U.A)
>> _______________________________________________
>> gem5-users mailing list -- gem5-users@gem5.org
>> To unsubscribe send an email to gem5-users-le...@gem5.org
>>
> _______________________________________________
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
>
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to