ClassicNoCScheduler Class Reference
#include <classic.h>
Public Member Functions | |
ClassicNoCScheduler (const CSize maxDetour, const uint maxNrRipups) | |
~ClassicNoCScheduler () | |
bool | solve () |
Private Member Functions | |
bool | classic (const CSize maxDetour, const uint maxNrRipups) |
bool | findScheduleEntityForMessageUsingClassic (Message *m, const CSize maxDetour) |
bool | findSlotsOnRouteUsingClassic (NoCSchedulingEntity *e, SlotReservations &s) |
void | sortRoutesOnCostUsingClassic (Routes &routes, const TTime startTime, const TTime duration) |
Private Attributes | |
CSize | maxDetour |
uint | maxNrRipups |
Detailed Description
ClassicNoCScheduler () Classic NoC scheduling algorithm
Constructor & Destructor Documentation
ClassicNoCScheduler::~ClassicNoCScheduler | ( | ) | [inline] |
Member Function Documentation
classic () Classic NoC scheduling algorithm
References findScheduleEntityForMessageUsingClassic(), NoCScheduler::messagesBegin(), NoCScheduler::messagesEnd(), Message::print(), NoCScheduler::ripupStream(), and NoCScheduler::sortMessagesOnCost().
Referenced by solve().
bool ClassicNoCScheduler::findScheduleEntityForMessageUsingClassic | ( | Message * | m, | |
const CSize | maxDetour | |||
) | [private] |
findScheduleEntityForMessageUsingClassic () 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(), findSlotsOnRouteUsingClassic(), Message::getDstNodeId(), NoCSchedulingEntity::getDuration(), NoCScheduler::getFirstScheduledMessageInStream(), NoCScheduler::getInterconnectGraph(), NoCScheduler::getLengthShortestPathBetweenNodes(), InterconnectGraph::getNode(), Message::getSrcNodeId(), NoCSchedulingEntity::getStartTime(), Route::length(), NoCScheduler::maximalDuration(), NoCScheduler::minimalDuration(), NoCScheduler::reserveResources(), NoCSchedulingEntity::setDuration(), NoCSchedulingEntity::setRoute(), Message::setSchedulingEntity(), NoCSchedulingEntity::setSlotReservations(), NoCSchedulingEntity::setStartTime(), and sortRoutesOnCostUsingClassic().
Referenced by classic().
bool ClassicNoCScheduler::findSlotsOnRouteUsingClassic | ( | NoCSchedulingEntity * | e, | |
SlotReservations & | s | |||
) | [private] |
findSlotsOnRouteUsingClassic () The function looks for a set of slots which can be reserved along the route such that flits entering a router leave it in the next slot and there is enough space to transmit both the data and the packatization headers. On success, the slot reservations for the first link of the route are stored in s and the function returns true. On failure, the function returns false. The function tries to minimize the number of packets used. The classic reservation technique assumes that reconfiguration is not possible and slots cannot be shared amongst streams.
References Packet::endTime, NoCScheduler::findFreePackets(), NoCScheduler::findFreeSlotsForStream(), NoCScheduler::findSlotsAllocatedForStream(), NoCSchedulingEntity::getDuration(), NoCScheduler::getInterconnectGraph(), NoCSchedulingEntity::getMessage(), NoCSchedulingEntity::getRoute(), Message::getSize(), InterconnectGraph::getSlotTableSize(), NoCSchedulingEntity::getStartTime(), Packet::loop, Packet::nrSlots, NoCScheduler::nrSlotsRequired(), and Packet::startTime.
Referenced by findScheduleEntityForMessageUsingClassic().
bool ClassicNoCScheduler::solve | ( | ) | [inline, virtual] |
Implements NoCScheduler.
References classic(), NoCScheduler::getSchedulingProblem(), maxDetour, maxNrRipups, and NoCScheduleProblem::setSolvedFlag().
void ClassicNoCScheduler::sortRoutesOnCostUsingClassic | ( | Routes & | routes, | |
const TTime | startTime, | |||
const TTime | duration | |||
) | [private] |
sortRoutesOnCostUsingClassic () The function sorts all routes using a cost function with cost from high to low. The cost is determined by the minimum number of free slots available overall links within the given time bounds.
References SlotTable::getEndTime(), NoCScheduler::getInterconnectGraph(), SlotTable::getNrFreeSlots(), InterconnectGraph::getSlotTablePeriod(), InterconnectGraph::getSlotTableSize(), SlotTable::getStartTime(), Route::linksBegin(), Route::linksEnd(), Route::setCost(), Link::slotTableSeqBegin(), and Link::slotTableSeqEnd().
Referenced by findScheduleEntityForMessageUsingClassic().
Member Data Documentation
CSize ClassicNoCScheduler::maxDetour [private] |
Referenced by solve().
uint ClassicNoCScheduler::maxNrRipups [private] |
Referenced by solve().
The documentation for this class was generated from the following files: