-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathpimPerfEnergyBitSerial.h
More file actions
42 lines (33 loc) · 2.33 KB
/
pimPerfEnergyBitSerial.h
File metadata and controls
42 lines (33 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// File: pimPerfEnergyBitSerial.h
// PIMeval Simulator - Performance Energy Models
// Copyright (c) 2024 University of Virginia
// This file is licensed under the MIT License.
// See the LICENSE file in the root of this repository for more details.
#ifndef LAVA_PIM_PERF_ENERGY_BIT_SERIAL_H
#define LAVA_PIM_PERF_ENERGY_BIT_SERIAL_H
#include "libpimeval.h" // for PimDeviceEnum, PimDataType
#include "pimParamsDram.h" // for pimParamsDram
#include "pimCmd.h" // for PimCmdEnum
#include "pimResMgr.h" // for pimObjInfo
#include "pimPerfEnergyBase.h" // for pimPerfEnergyBase
//! @class pimPerfEnergyBitSerial
//! @brief PIM performance energy model for bit-serial PIM family
class pimPerfEnergyBitSerial : public pimPerfEnergyBase
{
public:
pimPerfEnergyBitSerial(const pimPerfEnergyModelParams& params) : pimPerfEnergyBase(params) {}
virtual ~pimPerfEnergyBitSerial() {}
virtual pimeval::perfEnergy getPerfEnergyForFunc1(PimCmdEnum cmdType, const pimObjInfo& objSrc, const pimObjInfo& objDest) const override;
virtual pimeval::perfEnergy getPerfEnergyForFunc2(PimCmdEnum cmdType, const pimObjInfo& objSrc1, const pimObjInfo& objSrc2, const pimObjInfo& objDest) const override;
virtual pimeval::perfEnergy getPerfEnergyForReduction(PimCmdEnum cmdType, const pimObjInfo& obj, unsigned numPass) const override;
virtual pimeval::perfEnergy getPerfEnergyForBroadcast(PimCmdEnum cmdType, const pimObjInfo& obj) const override;
virtual pimeval::perfEnergy getPerfEnergyForRotate(PimCmdEnum cmdType, const pimObjInfo& obj, bool useCrossRegionCommunication) const override;
virtual pimeval::perfEnergy getPerfEnergyForPrefixSum(PimCmdEnum cmdType, const pimObjInfo& obj) const override;
protected:
pimeval::perfEnergy getPerfEnergyBitSerial(PimDeviceEnum deviceType, PimCmdEnum cmdType, unsigned numPass, const pimObjInfo& objSrc1, const pimObjInfo& objSrc2, const pimObjInfo& objDest) const;
pimeval::perfEnergy getPerfEnergyTypeConversion(PimDeviceEnum deviceType, PimCmdEnum cmdType, const pimObjInfo& objSrc, const pimObjInfo& objDest) const;
// Popcount logc Params from DRAM-CAM paper
double m_pclNsDelay = 0.76; // 64-bit popcount logic ns delay, using LUT no pipeline design
double m_pclUwPower = 0.03; // 64-bit popcount logic uW power, using LUT no pipeline design
};
#endif