stack_dist.hh revision 10995
110995Sandreas.sandberg@arm.com/* 210995Sandreas.sandberg@arm.com * Copyright (c) 2015 ARM Limited 310995Sandreas.sandberg@arm.com * All rights reserved 410995Sandreas.sandberg@arm.com * 510995Sandreas.sandberg@arm.com * The license below extends only to copyright in the software and shall 610995Sandreas.sandberg@arm.com * not be construed as granting a license to any other intellectual 710995Sandreas.sandberg@arm.com * property including but not limited to intellectual property relating 810995Sandreas.sandberg@arm.com * to a hardware implementation of the functionality of the software 910995Sandreas.sandberg@arm.com * licensed hereunder. You may use the software subject to the license 1010995Sandreas.sandberg@arm.com * terms below provided that you ensure that this notice is replicated 1110995Sandreas.sandberg@arm.com * unmodified and in its entirety in all distributions of the software, 1210995Sandreas.sandberg@arm.com * modified or unmodified, in source code or in binary form. 1310995Sandreas.sandberg@arm.com * 1410995Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 1510995Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 1610995Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 1710995Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 1810995Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 1910995Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 2010995Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 2110995Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 2210995Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 2310995Sandreas.sandberg@arm.com * this software without specific prior written permission. 2410995Sandreas.sandberg@arm.com * 2510995Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2610995Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2710995Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2810995Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2910995Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3010995Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3110995Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3210995Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3310995Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3410995Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3510995Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3610995Sandreas.sandberg@arm.com * 3710995Sandreas.sandberg@arm.com * Authors: Andreas Sandberg 3810995Sandreas.sandberg@arm.com */ 3910995Sandreas.sandberg@arm.com 4010995Sandreas.sandberg@arm.com#ifndef __MEM_PROBES_STACK_DIST_HH__ 4110995Sandreas.sandberg@arm.com#define __MEM_PROBES_STACK_DIST_HH__ 4210995Sandreas.sandberg@arm.com 4310995Sandreas.sandberg@arm.com#include "mem/packet.hh" 4410995Sandreas.sandberg@arm.com#include "mem/probes/base.hh" 4510995Sandreas.sandberg@arm.com#include "mem/stack_dist_calc.hh" 4610995Sandreas.sandberg@arm.com#include "sim/stats.hh" 4710995Sandreas.sandberg@arm.com 4810995Sandreas.sandberg@arm.comstruct StackDistProbeParams; 4910995Sandreas.sandberg@arm.com 5010995Sandreas.sandberg@arm.comclass StackDistProbe : public BaseMemProbe 5110995Sandreas.sandberg@arm.com{ 5210995Sandreas.sandberg@arm.com public: 5310995Sandreas.sandberg@arm.com StackDistProbe(StackDistProbeParams *params); 5410995Sandreas.sandberg@arm.com 5510995Sandreas.sandberg@arm.com void regStats() M5_ATTR_OVERRIDE; 5610995Sandreas.sandberg@arm.com 5710995Sandreas.sandberg@arm.com protected: 5810995Sandreas.sandberg@arm.com void handleRequest(const PacketPtr &pkt) M5_ATTR_OVERRIDE; 5910995Sandreas.sandberg@arm.com 6010995Sandreas.sandberg@arm.com protected: 6110995Sandreas.sandberg@arm.com // Cache line size to simulate 6210995Sandreas.sandberg@arm.com const unsigned lineSize; 6310995Sandreas.sandberg@arm.com 6410995Sandreas.sandberg@arm.com // Disable the linear histograms 6510995Sandreas.sandberg@arm.com const bool disableLinearHists; 6610995Sandreas.sandberg@arm.com 6710995Sandreas.sandberg@arm.com // Disable the logarithmic histograms 6810995Sandreas.sandberg@arm.com const bool disableLogHists; 6910995Sandreas.sandberg@arm.com 7010995Sandreas.sandberg@arm.com protected: 7110995Sandreas.sandberg@arm.com // Reads linear histogram 7210995Sandreas.sandberg@arm.com Stats::Histogram readLinearHist; 7310995Sandreas.sandberg@arm.com 7410995Sandreas.sandberg@arm.com // Reads logarithmic histogram 7510995Sandreas.sandberg@arm.com Stats::SparseHistogram readLogHist; 7610995Sandreas.sandberg@arm.com 7710995Sandreas.sandberg@arm.com // Writes linear histogram 7810995Sandreas.sandberg@arm.com Stats::Histogram writeLinearHist; 7910995Sandreas.sandberg@arm.com 8010995Sandreas.sandberg@arm.com // Writes logarithmic histogram 8110995Sandreas.sandberg@arm.com Stats::SparseHistogram writeLogHist; 8210995Sandreas.sandberg@arm.com 8310995Sandreas.sandberg@arm.com // Writes logarithmic histogram 8410995Sandreas.sandberg@arm.com Stats::Scalar infiniteSD; 8510995Sandreas.sandberg@arm.com 8610995Sandreas.sandberg@arm.com protected: 8710995Sandreas.sandberg@arm.com StackDistCalc calc; 8810995Sandreas.sandberg@arm.com}; 8910995Sandreas.sandberg@arm.com 9010995Sandreas.sandberg@arm.com 9110995Sandreas.sandberg@arm.com#endif //__MEM_PROBES_STACK_DIST_HH__ 92