0
現在我正在學習simplescalar源代碼。但是我對預測模塊感到困惑。這是關於雙模預測器。 這裏是初始化:由simplescalr preditor困惑
case BPred2bit:
if (!l1size || (l1size & (l1size-1)) != 0)
fatal("2bit table size, `%d', must be non-zero and a power of two",
l1size);
pred_dir->config.bimod.size = l1size;
if (!(pred_dir->config.bimod.table =
calloc(l1size, sizeof(unsigned char))))
fatal("cannot allocate 2bit storage");
/* initialize counters to weakly this-or-that */
flipflop = 1;
for (cnt = 0; cnt < l1size; cnt++)
{
pred_dir->config.bimod.table[cnt] = flipflop;
flipflop = 3 - flipflop;
}
break;
這裏我們使用PHT表:
case BPred2bit:
p = &pred_dir->config.bimod.table[BIMOD_HASH(pred_dir, baddr)];
break;
但是我驚喜的是PHT故事永遠不會更新!!!我發現代碼無處,無論是在pred_update()功能!!!。 你能告訴我原因嗎?什麼機制劑量simplescalar使用?
是的,正如你所說,謝謝你,它是一個2位計數器的指針而不是副本。 –