URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [or1ksim/] [cpu/] [common/] [stats.h] - Rev 65
Go to most recent revision | Compare with Previous | Blame | View Log
/* stats.h -- Header file for stats.c Copyright (C) 1999 Damjan Lampret, lampret@opencores.org This file is part of OpenRISC 1000 Architectural Simulator. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define DSTATS_LEN 3000 #define SSTATS_LEN 300 #define FSTATS_LEN 200 #define RAW_RANGE 13 /* Used by safe division - increment divisor by one if it is zero */ #define SD(X) (X != 0 ? X : 1) struct dstats_entry { char insn1[OPERANDNAME_LEN]; char insn2[OPERANDNAME_LEN]; int cnt_dynamic; int depend; }; struct sstats_entry { char insn[OPERANDNAME_LEN]; int cnt_static; int cnt_dynamic; }; /* single stats */ struct fstats_entry { enum insn_type insn1; enum insn_type insn2; int cnt_dynamic; int depend; }; /* functional units stats */ struct branchstat { int taken; int nottaken; int forward; int backward; }; struct staticbp_stat { int correct; int all; }; struct bpbstat { int hit; int miss; int correct; int incorrect; }; struct bticstat { int hit; int miss; }; struct mstats_entry { int byteadd; struct branchstat beqz; struct branchstat bnez; struct staticbp_stat sbp_bf; struct staticbp_stat sbp_bnf; struct bpbstat bpb; struct bticstat btic; }; /* misc units stats */ struct cachestats_entry { int readhit; int readmiss; int writehit; int writemiss; }; /* cache stats */ struct mmustats_entry { int loads_tlbhit; int loads_tlbmiss; int loads_pagefaults; int stores_tlbhit; int stores_tlbmiss; int stores_pagefaults; }; /* MMU stats */ struct raw_stats { int reg[64]; int range[RAW_RANGE]; }; /* RAW hazard stats */ #define SLP_MEMREAD 0 #define SLP_MEMWRITE 1 struct slp_stats { int maxdepth; int curdepth; int calls; int supercalls; int supercnt; struct memaccess { struct memaccess *next; unsigned long addr; char type; /* bit 0: read; bit 1: write */ }; }; /* SLP */ extern struct mstats_entry mstats; extern struct sstats_entry sstats[SSTATS_LEN]; extern struct dstats_entry dstats[DSTATS_LEN]; extern struct fstats_entry fstats[FSTATS_LEN]; extern struct cachestats_entry ic_stats; extern struct cachestats_entry dc_stats; extern struct mmustats_entry dmmu_stats; extern struct raw_stats raw_stats; extern struct slp_stats slp_stats; extern int check_depend(); extern void addsstats(char *item, int cnt_dynamic, int cnt_static); extern void adddstats(char *item1, char *item2, int cnt_dynamic, int depend); extern void addfstats(enum insn_type item1, enum insn_type item2, int cnt_dynamic, int depend); extern void initstats(); extern void printstats();
Go to most recent revision | Compare with Previous | Blame | View Log