Exemple #1
0
void X86CpuUpdateOccupancyStats(X86Cpu *self) {
  X86Core *core;
  X86Thread *thread;

  int i;
  int j;

  for (i = 0; i < x86_cpu_num_cores; i++) {
    core = self->cores[i];

    /* Update occupancy stats for shared structures */
    if (x86_rob_kind == x86_rob_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(rob);
    if (x86_iq_kind == x86_iq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(iq);
    if (x86_lsq_kind == x86_lsq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(lsq);
    if (x86_reg_file_kind == x86_reg_file_kind_shared) {
      UPDATE_CORE_OCCUPANCY_STATS(reg_file_int);
      UPDATE_CORE_OCCUPANCY_STATS(reg_file_fp);
    }

    /* Occupancy stats for private structures */
    for (j = 0; j < x86_cpu_num_threads; j++) {
      thread = core->threads[j];
      if (x86_rob_kind == x86_rob_kind_private)
        UPDATE_THREAD_OCCUPANCY_STATS(rob);
      if (x86_iq_kind == x86_iq_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(iq);
      if (x86_lsq_kind == x86_lsq_kind_private)
        UPDATE_THREAD_OCCUPANCY_STATS(lsq);
      if (x86_reg_file_kind == x86_reg_file_kind_private) {
        UPDATE_THREAD_OCCUPANCY_STATS(reg_file_int);
        UPDATE_THREAD_OCCUPANCY_STATS(reg_file_fp);
      }
    }
  }
}
Exemple #2
0
void x86_cpu_update_occupancy_stats()
{
	int core, thread;

	X86_CORE_FOR_EACH
	{
		/* Update occupancy stats for shared structures */
		if (x86_rob_kind == x86_rob_kind_shared)
			UPDATE_CORE_OCCUPANCY_STATS(rob);
		if (x86_iq_kind == x86_iq_kind_shared)
			UPDATE_CORE_OCCUPANCY_STATS(iq);
		if (x86_lsq_kind == x86_lsq_kind_shared)
			UPDATE_CORE_OCCUPANCY_STATS(lsq);
		if (x86_reg_file_kind == x86_reg_file_kind_shared)
		{
			UPDATE_CORE_OCCUPANCY_STATS(reg_file_int);
			UPDATE_CORE_OCCUPANCY_STATS(reg_file_fp);
		}

		/* Occupancy stats for private structures */
		X86_THREAD_FOR_EACH
		{
			if (x86_rob_kind == x86_rob_kind_private)
				UPDATE_THREAD_OCCUPANCY_STATS(rob);
			if (x86_iq_kind == x86_iq_kind_private)
				UPDATE_THREAD_OCCUPANCY_STATS(iq);
			if (x86_lsq_kind == x86_lsq_kind_private)
				UPDATE_THREAD_OCCUPANCY_STATS(lsq);
			if (x86_reg_file_kind == x86_reg_file_kind_private)
			{
				UPDATE_THREAD_OCCUPANCY_STATS(reg_file_int);
				UPDATE_THREAD_OCCUPANCY_STATS(reg_file_fp);
			}
		}
	}
}