сейчас я изучаю исходный код simplescalar. Но меня смущает модуль прогнозирования. Речь идет о предиторе бимода. Вот инициализация:Confused by 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;
Но что к моему удивлению это рассказ РНТ никогда не обновляется !!!. Я не нашел код нигде, ни в функции pred_update() funtion !!!. Можете ли вы рассказать мне причину? Какой механизм использовать дозу simplescalar?
Да, спасибо, как вы сказали, это указатель на 2-битный счетчик, а не на копию. –