astra-sim-alibabacloud/astra-sim/system/MemMovRequest.cc (52 lines of code) (raw):

/****************************************************************************** This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree. *******************************************************************************/ #include "MemMovRequest.hh" #include "LogGP.hh" #include "Sys.hh" namespace AstraSim { int MemMovRequest::id = 0; MemMovRequest::MemMovRequest( int request_num, Sys* generator, LogGP* loggp, int size, int latency, Callable* callable, bool processed, bool send_back) : SharedBusStat(BusType::Mem, 0, 0, 0, 0) { this->size = size; this->latency = latency; this->callable = callable; this->processed = processed; this->send_back = send_back; this->my_id = id++; this->generator = generator; this->loggp = loggp; this->total_transfer_queue_time = 0; this->total_transfer_time = 0; this->total_processing_queue_time = 0; this->total_processing_time = 0; this->request_num = request_num; this->start_time = Sys::boostedTick(); this->mem_bus_finished = true; } void MemMovRequest::call(EventType event, CallData* data) { update_bus_stats(BusType::Mem, (SharedBusStat*)data); total_mem_bus_transfer_delay += ((SharedBusStat*)data)->total_shared_bus_transfer_delay; total_mem_bus_processing_delay += ((SharedBusStat*)data)->total_shared_bus_processing_delay; total_mem_bus_processing_queue_delay += ((SharedBusStat*)data)->total_shared_bus_processing_queue_delay; total_mem_bus_transfer_queue_delay += ((SharedBusStat*)data)->total_shared_bus_transfer_queue_delay; mem_request_counter = 1; mem_bus_finished = true; loggp->talking_it = pointer; loggp->call(callEvent, data); } void MemMovRequest::wait_wait_for_mem_bus( std::list<MemMovRequest>::iterator pointer) { mem_bus_finished = false; this->pointer = pointer; } } // namespace AstraSim