Рубрики

ВОРОТА | GATE CS 2008 | Вопрос 71

Рассмотрим машину с двухсторонним набором ассоциативного кэша данных размером 64 КБ и размером блока 16 байтов. Управление кешем осуществляется с использованием 32-битных виртуальных адресов, а размер страницы составляет 4 Кбайт. Программа, запускаемая на этом компьютере, начинается следующим образом:

double ARR[1024][1024];

int i, j;

  
// Инициализируем массив ARR до 0.0

for(i = 0; i < 1024; i++)

    for(j = 0; j < 1024; j++)

        ARR[i][j] = 0.0;

Размер double — 8 байт. Массив ARR расположен в памяти, начиная с начала виртуальной страницы 0xFF000, и хранится в основном порядке строк. Кеш изначально пуст и никакой предварительной выборки не делается. Единственные ссылки на память данных, сделанные программой, это массивы ARR.

Общий размер тегов в каталоге кеша
(А) 32 Кбит
(B) 34 Кбит
(С) 64 кбит
(D) 68 Кбит

Ответ: (D)
Пояснение: Виртуальный адрес = 32 бита
Адрес кэша имеет вид: TAG | SET | BLOCK
Для БЛОКА 16 байтов нам нужно 4 бита.
Общее количество наборов (каждый набор содержит 2 блока) = 64 КБ / (2 * 16) B = 2 11
Итак, количество битов SET = 11
Количество бит TAG = 32 — (11 + 4) = 17

Таким образом, адрес кэша = 17 | 11 | 4 (TAG | SET | BLOCK)
Объем памяти тега = количество бит тегов * общее количество блоков
= 17 * 2 * 2 11 (Общее количество блоков = 2 * Общее количество комплектов)
= 68 КБ

Таким образом, D является правильным выбором.
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE CS 2008 | Вопрос 71

0.00 (0%) 0 votes