Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

branch_result.h

Go to the documentation of this file.
00001 /*
00002         Copyright (C) 1997 CFU Corporation
00003 
00004         File: branch_result.h
00005         Description: branch result
00006         Author: Chao-yinig Fu
00007         Date: Oct. 31, 2000
00008 
00009         ^..^
00010         (00)
00011 
00012          $__$
00013         <~00~>
00014          (oo)
00015           ||
00016 
00017         ```````
00018         C ^|^ D
00019          \ O /
00020 */
00021 
00022 #ifndef INCLUDED_BRANCH_RESULT_H
00023 #define INCLUDED_BRANCH_RESULT_H
00024 
00025 #include <stdio.h>
00026 #include <assert.h>
00027 
00028 #include "my_mem_db.h"
00029 
00030 #define MAX_NUM_OF_BR 10000
00031 
00032 class Branch_Result
00033 {
00034 public:
00035         Branch_Result():_ip(-1),_access(0),_br_incor(0),_br_cor(0),_next(NULL) {}
00036         ~Branch_Result() {}
00037 
00038         void reset()
00039         {
00040                 _ip=-1;
00041                 _access=0;
00042                 _br_incor=0;
00043                 _br_cor=0;
00044                 _next=NULL;
00045         }
00046 
00047         void set_ip(int ip) {_ip=ip;}
00048         void inc_access() {_access++;}
00049         void inc_br_incor() {_br_incor++;}
00050         void inc_br_cor() {_br_cor++;}
00051         void set_next(Branch_Result *i) {_next=i;}
00052 
00053         int ip() {return _ip;}
00054         int access() {return _access;}
00055         int br_incor() {return _br_incor;}
00056         int br_cor() {return _br_cor;}
00057         Branch_Result *next() {return _next;}
00058 
00059         void print(FILE *f)
00060         {
00061                 fprintf(f,"_ip=%d _access=%d _br_incor=%d _br_cor=%d miss_rate=%.2f%%",_ip,_access,_br_incor,_br_cor,(double)100*_br_incor/_access);
00062         }
00063 
00064 private:
00065         int _ip;
00066         int _access;
00067         int _br_incor;
00068         int _br_cor;
00069 
00070         Branch_Result *_next;
00071 };
00072 
00073 class Profile_Branch
00074 {
00075 public:
00076         Profile_Branch():_b(0) 
00077         {
00078                 init();
00079         }
00080         Profile_Branch(int b):_b(b) 
00081         {
00082                 init();
00083         }
00084 
00085         void init()
00086         {
00087                 for(int i=0;i<MAX_NUM_OF_BR;i++)
00088                 {
00089                         _br[i].reset();
00090                 }
00091         }
00092 
00093         ~Profile_Branch() {}
00094 
00095         void record(int ip,int correct);
00096         void print(FILE *f,A_Proc *code_database);
00097 
00098 private:
00099         int _b; // 2^_b block size
00100         Branch_Result _br[MAX_NUM_OF_BR];
00101 };
00102 
00103 #endif // INCLUDED_BRANCH_RESULT_H
00104 

Generated on Mon Jul 21 20:24:02 2003 for TINKER LEGO DOC by doxygen 1.3.2