Beispiel #1
0
void check_heartbeat(void){

  if(pipeline->stat_num_cycle - last_hbeat_cycle < HEARTBEAT_CYCLES){
    return;
  }

  printf(".");
  fflush(stdout);

  // check for deadlock
  if(last_hbeat_inst == pipeline->stat_retired_inst){
    printf("No committed instructions in %u cycles.\n", HEARTBEAT_CYCLES);
    die_message("Pipeline is Deadlocked. Dying\n");
  }

  last_hbeat_cycle=pipeline->stat_num_cycle;
  last_hbeat_inst = pipeline->stat_retired_inst;

  // print a newline and CPI every so often
  if(pipeline->stat_num_cycle - last_hbeat_line >= 50*HEARTBEAT_CYCLES){
    printf("\n(Inst:%8u\tCycle:%8u\tCPI:%6.3f)\t", (uint32_t)pipeline->stat_retired_inst,
	   (uint32_t)pipeline->stat_num_cycle, (double)(pipeline->stat_num_cycle)/(double)(pipeline->stat_retired_inst+1));
    last_hbeat_line=pipeline->stat_num_cycle;
  }

}
Beispiel #2
0
void core_init_trace(Core *c)
{
  char  command_string[512];
  
  sprintf(command_string,"gunzip -c %s", c->trace_fname);
  if ((c->trace = popen(command_string, "r")) == NULL){
    printf("Command string is %s\n", command_string);
    die_message("Unable to open the file with gzip option \n");
  }
  
}
Beispiel #3
0
int main(int argc, char *argv[])
{
  int ii;

    FILE *tr_file;
    char tr_filename[1024];
    char cmd_string[256];
    
    if(argc < 1) {
        die_message("Must Provide a Trace File"); 
    }

    //--------------------------------------------------------------------
    // -- Get params from command line 
    //--------------------------------------------------------------------    
    for ( ii = 1; ii < argc; ii++) {
	if (argv[ii][0] == '-') {	    
	    if (!strcmp(argv[ii], "-h") || !strcmp(argv[ii], "-help")) {
		die_usage();
	    }	    


	    else if (!strcmp(argv[ii], "-pipewidth")) {
		if (ii < argc - 1) {		  
		    PIPE_WIDTH = atoi(argv[ii+1]);
		    ii += 1;
		}
	    }

	      else if (!strcmp(argv[ii], "-schedpolicy")) {
		if (ii < argc - 1) {		  
		    SCHED_POLICY = atoi(argv[ii+1]);
		    ii += 1;
		}
	    }

	      else if (!strcmp(argv[ii], "-loadlatency")) {
		if (ii < argc - 1) {		  
		    LOAD_EXE_CYCLES = atoi(argv[ii+1]);
		    ii += 1;
		}
	    }


	}
	else {
	  strcpy(tr_filename, argv[ii]);
	}
    }

    
  // ------- Open Trace File -------------------------------------------
    sprintf(cmd_string,"gunzip -c %s", tr_filename);
    if ((tr_file = popen(cmd_string, "r")) == NULL){
        printf("Command string is %s\n", cmd_string);
        die_message("Unable to open the trace file with gzip option \n")  ;
    } else {
        printf("Opened file with command: %s \n", cmd_string);
    }
     
  // ------- Pipeline Initialization & Execution ----------------------

     pipeline = pipe_init(tr_file); 

     printf("\n%48s", "");
     
    while(!pipeline->halt) {
      pipe_cycle(pipeline);
      check_heartbeat();
    }

  // ------- Print Statistics------------------------------------------
    print_stats();
    fclose(tr_file);
    return 0;
}