KnowledgeNoCScheduler Class Reference
#include <knowledge.h>
Public Member Functions | |
KnowledgeNoCScheduler (const CSize maxDetour, const uint maxNrRipups) | |
~KnowledgeNoCScheduler () | |
bool | solve () |
Private Member Functions | |
bool | knowledge (const CSize maxDetour, const uint maxNrRipups) |
void | setRequirementsMessages (LinksReqs &linksReqs) |
void | setRequirementsMessage (Message *m, LinksReqs &linksReqs) |
void | updateRequirementsLink (const TTime startTime, const TTime endTime, const bool loopPeriod, const uint nrSlotsReq, LinkReqs &lReqs) |
double | costLinkForMessage (Message *m, LinkReqs &linkReqs) |
bool | findScheduleEntityForMessageUsingKnowledge (Message *m, const CSize maxDetour, LinksReqs &linksReqs) |
void | sortRoutesOnMessageRequirements (Message *m, LinksReqs &linksReqs, Routes &routes) |
Private Attributes | |
CSize | maxDetour |
uint | maxNrRipups |
Detailed Description
KnowledgeNoCScheduler () Knowledge NoC scheduling algorithm
Constructor & Destructor Documentation
KnowledgeNoCScheduler::KnowledgeNoCScheduler | ( | const CSize | maxDetour, | |
const uint | maxNrRipups | |||
) | [inline] |
KnowledgeNoCScheduler::~KnowledgeNoCScheduler | ( | ) | [inline] |
Member Function Documentation
costLinkForMessage () The cost for using a link by a message is the maximum number of slots allocated in the time period within which the message can be sent.
References _LinkReq::endTime, Message::getDuration(), NoCScheduler::getInterconnectGraph(), InterconnectGraph::getSlotTablePeriod(), Message::getStartTime(), _LinkReq::nrSlotsReq, and _LinkReq::startTime.
Referenced by sortRoutesOnMessageRequirements().
bool KnowledgeNoCScheduler::findScheduleEntityForMessageUsingKnowledge | ( | Message * | m, | |
const CSize | maxDetour, | |||
LinksReqs & | linksReqs | |||
) | [private] |
findScheduleEntityForMessageUsingKnowledge () The function tries to find a schedule entity for the message. On success it returns true and allocates the entity on the NoC. Else it returns false and no resources are claimed.
References NoCScheduler::earliestStartTime(), NoCScheduler::findAllRoutes(), NoCScheduler::findSlotsOnRoute(), Message::getDstNodeId(), NoCSchedulingEntity::getDuration(), NoCScheduler::getInterconnectGraph(), NoCScheduler::getLengthShortestPathBetweenNodes(), InterconnectGraph::getNode(), InterconnectGraph::getSlotTableSize(), Message::getSrcNodeId(), NoCSchedulingEntity::getStartTime(), Route::length(), NoCScheduler::maximalDuration(), NoCScheduler::minimalDuration(), NoCScheduler::reserveResources(), NoCSchedulingEntity::setDuration(), NoCSchedulingEntity::setRoute(), Message::setSchedulingEntity(), NoCSchedulingEntity::setSlotReservations(), NoCSchedulingEntity::setStartTime(), and sortRoutesOnMessageRequirements().
Referenced by knowledge().
knowledge () Global knowledge NoC scheduling algorithm
References _LinkReq::endTime, findScheduleEntityForMessageUsingKnowledge(), NoCScheduler::getInterconnectGraph(), NoCScheduler::messagesBegin(), NoCScheduler::messagesEnd(), InterconnectGraph::nrLinks(), _LinkReq::nrSlotsReq, Message::print(), NoCScheduler::ripupScheduleEntity(), setRequirementsMessages(), NoCScheduler::sortMessagesOnCost(), and _LinkReq::startTime.
Referenced by solve().
setRequirementsMessage () The function computes the requirements for a message and updates the information in the requirements on the links (i.e. nr of slots needed on links)
References NoCScheduler::findAllRoutes(), Message::getDstNodeId(), Message::getDuration(), Link::getId(), NoCScheduler::getInterconnectGraph(), InterconnectGraph::getNode(), Message::getSize(), InterconnectGraph::getSlotTablePeriod(), Message::getSrcNodeId(), Message::getStartTime(), Route::linksBegin(), Route::linksEnd(), NoCScheduler::nrSlotsRequired(), and updateRequirementsLink().
Referenced by setRequirementsMessages().
void KnowledgeNoCScheduler::setRequirementsMessages | ( | LinksReqs & | linksReqs | ) | [private] |
setRequirementsMessages () The function computes the requirements for all messages and store them in the array linksReqs which contains the requirements for all links in the architecture graph.
References _LinkReq::endTime, NoCScheduler::getInterconnectGraph(), InterconnectGraph::getSlotTablePeriod(), NoCScheduler::messagesBegin(), NoCScheduler::messagesEnd(), InterconnectGraph::nrLinks(), _LinkReq::nrSlotsReq, setRequirementsMessage(), and _LinkReq::startTime.
Referenced by knowledge().
bool KnowledgeNoCScheduler::solve | ( | ) | [inline, virtual] |
Implements NoCScheduler.
References NoCScheduler::getSchedulingProblem(), knowledge(), maxDetour, maxNrRipups, and NoCScheduleProblem::setSolvedFlag().
void KnowledgeNoCScheduler::sortRoutesOnMessageRequirements | ( | Message * | m, | |
LinksReqs & | linksReqs, | |||
Routes & | routes | |||
) | [private] |
sortRoutesOnMessageRequirements () Sort a set of routes based on the resource requirements a message has on the links. Routes are sorted from least used route to heaviest used route.
References costLinkForMessage(), Link::getId(), Route::linksBegin(), Route::linksEnd(), and Route::setCost().
Referenced by findScheduleEntityForMessageUsingKnowledge().
void KnowledgeNoCScheduler::updateRequirementsLink | ( | const TTime | startTime, | |
const TTime | endTime, | |||
const bool | loopPeriod, | |||
const uint | nrSlotsReq, | |||
LinkReqs & | lReqs | |||
) | [private] |
updateRequirementsLink () Add the slot requirements (nrSlotsReq) to the correct time intervals for the link requirements 'lReqs'.
References _LinkReq::endTime, _LinkReq::nrSlotsReq, and _LinkReq::startTime.
Referenced by setRequirementsMessage().
Member Data Documentation
CSize KnowledgeNoCScheduler::maxDetour [private] |
Referenced by solve().
uint KnowledgeNoCScheduler::maxNrRipups [private] |
Referenced by solve().
The documentation for this class was generated from the following files: