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

Reply via email to