//-----------------------------------------------------------------// // Construtor para um Controlador só com Política de Mapeamento // Direto. public MemoryController(MemoryCache cache, AP_Directo policy) { Cache = cache; nCounter = nHit = nMiss = 0; APolicy = policy; RAlgorithm = null; }
//-----------------------------------------------------------------// // Calcula o mapeamento para a Política: Por Conjuntos. public override MemoryAddressCache Calculate(int page) { MemoryAddressCache address; // A política de mapeamento ASSOCIATIVA POR CONJUNTOS usa as políticas anteriores // descrição: Usa mapeamento DIRETO para selecionar a linha, e // CONSECUTIVO para selecionar a columna. AP_Directo directo = new AP_Directo(CacheSize); address.Row = directo.Calculate(page).Row; address.Col = colIndex[address.Row] % 2; colIndex[address.Row]++; return(address); }