Як обчислити кількість бітів тегу, індексу та зміщення різних кешів?


20

Конкретно:

1) Кеш прямого відображення з 4096 блоками / рядками, в якому кожен блок має 8 32-бітних слів. Скільки бітів потрібно для тегів та полів індексу, припускаючи 32-бітну адресу?

2) Те саме питання, що і 1), але для повністю асоціативного кешу ?

Виправте мене, якщо я помиляюся, чи це:

біт тегу = бітова довжина адреси - експонент індексу - показник зміщення?

[Чи є зсув = 3 через 2 ^ 3 = 8 чи це 5 від 2 ^ 5 = 32?]


кілька пояснень щодо тегу, індексу та зміщення в cs.stackexchange.com/questions/33818/…
Ran G.

Відповіді:


20

Викладене питання не зовсім відповідальний. Слово було визначено як 32 біта. Нам потрібно знати, чи система "адресована байтом" (ви можете отримати доступ до 8-бітового фрагменту даних) або "адресною для слова" (найменший доступний фрагмент - 32 біт) або навіть "адресована півсловом" ( найменший фрагмент даних, до якого ви можете отримати, - це 16-бітний.) Вам потрібно це знати, щоб знати, про що говорить вам біт найнижчого порядку.

Тоді ви працюєте знизу вгору. Припустимо, що система є байт адресною.

Тоді кожен блок кешу містить 8 слів * (4 байти / слово) = 32 = 2 5 байт, тому зміщення становить 5 біт.

Індекс для прямого відображення кешу є кількість блоків в кеші (12 біт в цьому випадку, оскільки 2 12 = 4096) .

Тоді тег - це всі біти, що залишилися, як ви вказали.

Оскільки кеш стає більш асоціативним, але залишається однакового розміру, менша кількість бітів індексу та більше бітів тегів.


Так, це байт, який адресується, але питання, на яке я звернувся, конкретно не
говорив про

3

Ваша формула для бітів тегів правильна.

Чи буде зсув три біт або п’ять біт, залежить від того, чи використовує процесор байт (октет) або адресацію слів. Поза DSP майже всі останні процесори використовують байт-адресацію, тому було б безпечно припустити байт-адресацію (і п'ять зміщених бітів).


Я не знав, що існують такі відмінності, так, це байт-адресація
compski

1
До середини 1970-х років можна обгрунтовано припустити, що "слово" було розміром найменшої адресованої одиниці даних. Ця таблиця на сторінці вікіпедії на слова є кумедною (якщо вам подобається така штука (що я роблю))
Блукаюча логіка

1

Я навчаюсь на випускному іспиті з предмету Комп'ютерна система, я деякий час гуглився і знайшов це питання. І ця частина питання плутає: "в кожному блоці є 8 32-бітних слів". Слово - 4 байти (або 32 біта), тому питання просто має бути "... в якому кожен блок має 8 слів"

Відповідь - кожен блок має 32 байти (8 слів), тому нам потрібно 5 зміщених бітів, щоб визначити, який байт у кожному блоці - Пряме відображення => кількість наборів = кількість блоків = 4096 => нам потрібно 12 біт індексу, щоб визначте, який набір

=> біт тегу = 32 - 12 - 5 = 15

Для повністю асоціативного число набору дорівнює 1 => немає біт індексу => біт тегу = 32 - 0 - 5 = 27


1

У повністю асоціативному кеші немає індексних бітів. Біти індексу використовуються для однозначної ідентифікації того, до якого набору належить блок. У повністю асоціативному кеші всі блоки по суті є частиною одного набору.


-1

в повному асоційованому індексі відображення дорівнює 0 b / s, як ви говорите, set = 1, тому індекс = log 1 у базі 2 = 0 встановити зміщення = log розміру блоку байтової бази 2, тому використовуйте 8 = 2 ^ 3 або 32 = 2 ^ 5 тегів = 32-0-5 = 27 для прямого індексу = 2 ^ 12 = 12 зміщення = 0 бітний тег = 32-12-0 = 20


Я вважаю це дуже неможливим для читання. Будь ласка, використовуйте деякі розділові знаки.
Девід Річербі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.