⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu_stats.h

📁 一个用在mips体系结构中的操作系统
💻 H
字号:
/* * Copyright (C) 1996-1998 by the Board of Trustees *    of Leland Stanford Junior University. *  * This file is part of the SimOS distribution.  * See LICENSE file for terms of the license.  * *//**************************************************************** * stats.h * * Definitions and macros for the general cpu statistics collection.  * The goal is for this to hook up to visualization engines easily. * * Author: $author$ * Date: $date$ ****************************************************************/#ifndef CPU_STATS_H#define CPU_STATS_H#include "simtypes.h"/* Exported functions */extern void InitCPUStats(void);extern void ResetCPUStats(void);extern void PrintPeriodicCPUStats(void);extern void PrintAllCPUStats(void);#define SPIN_LOOP_INST         35#define STAT_INTERVAL          (1024*1024*4)#define MAX_SYSCALL             181#define MAX_UTLB_CAUSE          4#define MAX_CAUSE               75#ifdef NO_STATS# define STATS_INC(_cpu, _var, _count) # define STATS_SET(_cpu, _var, _value) # define STATS_VALUE(_cpu, _var)        0# define STATS_ADD_INTERVAL(_cpu, _var, _startVar) #else#define STATS_INC(_cpu, _var, _count) cpuStats[(_cpu)]._var += _count;#define STATS_SET(_cpu, _var, _value) cpuStats[(_cpu)]._var = _value;#define STATS_VALUE(_cpu, _var)       (cpuStats[(_cpu)]._var)#define STATS_ADD_INTERVAL(_cpu, _var, _startVar) \{ if (cpuStats[(_cpu)]._startVar) { \     cpuStats[(_cpu)]._var += (CPUVec.CycleCount(_cpu) - STATS_VALUE(_cpu, _startVar)); \     cpuStats[(_cpu)]._startVar = 0; \     } \}#endiftypedef struct CPUStats {   /* Stats */   SimCounter iReads;   SimCounter dReads;   SimCounter dWrites;     SimTime stallStart;   SimCounter stallTime;   SimCounter numInstructions;   /* Number of instruction executed */   SimTime nextInstrSample;   /* When to sample the PC next */   SimTime syncOpStallStart;  /* Start time of sync op */   SimTime syncOpStallTime;   /* Total time spent waiting for the sync op */   SimTime syncStallStart;     SimTime syncStallTime;      SimTime prefMHTStallStart;   SimTime writeMHTStallStart;   SimTime libcWaitStart;   SimTime libcWaitTime;   SimTime haltedTime;        /* Just in SOLO - time before CREATE */   uint numSyscalls;   uint numFaults;   uint numInterrupts;   SimCounter numBdoorInsts;   SimCounter numFPOps;   SimCounter syscallCount[MAX_SYSCALL];   SimCounter causeCount[MAX_CAUSE];   SimCounter utlbCount[MAX_UTLB_CAUSE];   SimCounter syncOps;   struct {       SimCounter lls;	    /* Number of LL */      SimCounter llNonZero;   /* Number of LL returned non zero */      SimCounter llStallTime; /* LL stall time*/      SimCounter scs;	    /* Number of SC */      SimCounter scFailed;    /* Number failed SC */      SimCounter scStallTime; /* Stall time on sc in cycles*/      SimCounter llscConflictSuccess;       SimCounter syncs;	    /* Number of SYNCs */      SimCounter syncStallTime; /* Time stalled on SYNCs */      SimCounter locks;	      /* Number of Locks */      SimCounter lockStallTime; /* Time stalled on locks */      SimCounter barriers;      /* Number of barriers */      SimCounter barrierStallTime; /* Time stalled on barriers */      SimCounter waitForCount;  /* Number of WAIT_FOR_END calls */      SimCounter waitForStallTime; /* Time stalled in WAIT_FOR_END */   } syncStats;   struct {      SimCounter prefs;       /* Number of prefetches */      SimCounter prefXs;      /* Number of prefetch exclusives */      SimCounter prefTLBMisses;      SimCounter prefXTLBMisses;      SimCounter prefL1Hits;      SimCounter prefXL1Hits;      SimCounter prefL2Hits;      SimCounter prefXL2Hits;      SimCounter prefStalls;      SimCounter prefXStalls;      SimCounter prefMerges;      SimCounter prefXMerges;      SimCounter prefFails;      SimCounter prefXFails;      SimCounter prefMHTStall;      SimCounter prefXMHTStall;      SimCounter prefMHTStallTime;      SimCounter prefXMHTStallTime;      SimCounter prefUpgrades;      SimCounter prefXUpgrades;   } prefStats;   struct {      SimCounter writeMHTStall;      SimCounter writeMHTStallTime;   } writeBufferStats;} CPUStats;extern CPUStats *cpuStats;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -