Comments (19)
yes, I meant some reference so to have a common idea on the execution model. I will take at look to the paper tomorrow.
Now, but I'm talking only from a Noxim-developer "perspective", it could be interesting to have the chance to integrate your contribution in the official version. With this idea in mind, implementing it as a simple additional code in the tx/rx processes would be a good choice. I mean: without re-writing the whole Router, but just adding an additional step that may be executed or not, depending on user enabling/disabling VC. In short, it would be good that, when VC are disabled, the results would be exactly the same as before. Of course, it's your work after all and you can implement your the way you prefer :)
from noxim.
Hi guys, a Noxim co-author speaking here.
Actually, there was an experimental version including VC, but was mainly developed by a student and never really tested and so it may be considered as deprecated.
So, your effort could be useful. Please let me know to which specific VC model are your referring to ? Can you provide a reference paper so that we can have an idea? Thank you!
from noxim.
For what I've seen so far, Noxim does not implement virtual channels yet. You would have to implement it yourself. To do so, take a look at files Router.h and Router.cpp.
from noxim.
Thank you for the information. I will try to implement it.
Would like to know if you have implemented it before and was it complex task?
from noxim.
It is not a trivial task, but it is not so different from what it is already implemented with "naked" buffers. Just take into account that now in the Router::rxProcess(), flits must be saved into buffer[port][vc], and ACKs should be identified also by its VC, that would need more signals (one per port and VC probably).
Also in the Router::txProcess() you will need a more elaborated reservation_table (with VCs).
To accomplish all this, you could start adding a new field to the Flit struct identifying the VC it belongs to.
from noxim.
Yes! I had the notion that it will require more signals and buffer structure will change for VCs. Now I can see clear what needs to be done with your reply. Thank you once again.
from noxim.
You may not need more signals if each Flit and ACK has a field identifying the VC it belongs to.
PS: I'm quite interested in VCs for Noxim, if you get it working, don't hesitate to make a pull request with your changes so you can share it, it'll be appreciated. Thank you!
from noxim.
Sure! I will work on it. Lets see how it turns out.
from noxim.
Hello! Thank you for your reply. Its great to here from you.
I am working on NoC project using Noxim. This project work will improve with VCs in the Noxim. There is no specific paper for VCs I am refering to currently. After above discussion I got the basic idea how it can be done and looking for ways to implement it. If you can suggest some papers and give direction that will be really great. I look forward to hearing from you. Thank you!
from noxim.
I think what @davidepatti means is about the execution model. Adding VCs to the router architecture may change its execution model. For example: it could add an extra stage (Virtual Channel Allocation, VCA), so router would have a deeper pipeline (one extra stage for VCA). Or this may be performed at the second stage where txProcess() chooses the output port in conjunction with the output VC.
That's (I think) what he means when asking about a reference paper.
Take a look at this paper, (Equation 2), where they propose a 6-stage pipelined router:
Mello, A., Tedesco, L., Calazans, N., & Moraes, F. (2005, September). Virtual channels in networks on chip: implementation and evaluation on hermes NoC. In Proceedings of the 18th annual symposium on Integrated circuits and system design (pp. 178-183). ACM.
from noxim.
@jjgcc Thank you for clarification. May be my earlier comment was ambiguous but this (papers about execution model) is exactly what I wanted when I asked for suggestion and direction. There are few papers about VCs I could find today. But needed suggestion which will be best practise to follow. I did see above paper today but didnt go through it. Will refer it now. Your suggestions are very helpful in this process. Keep them coming. Thank you once again.
from noxim.
@jjgcc will you be working on implementation?
from noxim.
Sure! Just post a pull request and I can help you with the implementation.
from noxim.
Thats good to know! Will do it soon after I complete prerequisite tasks.
from noxim.
Hello @davidepatti and @jjgcc
I was building some knowledge base to implement ideas as discussed. As @davidepatti mentioned I am working out the idea of VCs which can be activated and deactivated as per user need.
I am stuck in flit transmission. Noxim uses Alternate Bit Protocol for flit transmission. The paper referred by @jjgcc, Hermes NoC uses credits based flit transmission. There were few mentions on Internet that credit based flit transmission is preferable for VCs. I would like your advice if we can continue with ABP for flit transmission in VCs or should we consider credit based flit transmission.
Thank you!
from noxim.
I would use ABP as it's already implemented and it's going to be faster for you to get things going in the short term, the paper I sent you was to highlight the design of a pipelined router scheme and its execution model.
Later, if you have time, you could add a credit-based flow control as an alternative for ABP. Credit-based flow control is not as simple as ABP, so it will take time to get a proper implementation. Keep in mind that credit-based flow control keeps track of the buffer occupation, while ABP does not, but ABP is simpler and I suggest you to stick with it for now.
from noxim.
Yes I agree! I was looking for ways to implement the credit based flow control but that sure look like lot of work. I will make the changes as per my understanding and will send you pull request for verification and if you can modify it more. Thank you once again! :)
from noxim.
I'm glad my answer suits you :D. Unless you want to include preemptive congestion management or similar, ABP is the right choice at this stage.
from noxim.
Hi! Because of my Master's Thesis deadline I had to put this work on hold.
I might start working on VCs after this. If I get it working will let you know.
Thank you for all help. :)
from noxim.
Related Issues (20)
- why xyz is has better performance than westfirst routing? HOT 4
- Static power for Router-to-Router link commented out HOT 3
- Is Same Virtual is being used from Input router to the Ouput Router ??? HOT 2
- routing problem of the fault-tolerant routing algorithm added in the Noxim HOT 2
- how do we map task graphs to cores on noxim.
- How adding a fault to the node? HOT 2
- Assertion Error HOT 5
- Received/Ideal flits ratio parameter HOT 2
- ULOCAL traffic pattern HOT 1
- Docker based build HOT 1
- Adding a new Routing Algorithm HOT 3
- How to simulate NoC multicast
- Routing Table's format HOT 1
- Reading buffer values inside Router Rxprocess functions is not accurate. HOT 2
- noxim topology HOT 1
- Is there a way to control the total received packets and total received flits in noxim
- routing problem of the fault-tolerant routing algorithm added in the Noxim
- Different hold times for different hubs HOT 1
- Noxim output in an excel sheet HOT 1
- how to configure the mapping algorithm in the Noxim simulator HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from noxim.