Вот проблема, над которой я работаю:
Проблема:«Высокоскоростная рабочая станция имеет 64-битные слова и 64-битные адреса с разрешением адресов на уровне байтов. Если предположить, что кэш с прямым отображением содержит 8192 строки по 64 байта, сколько бит содержится в каждом из следующих адресных полей кэша? 1) байт 2) индекс 3) тег?»
Сначала я определил термины в этой задаче и использовал другой вопрос Stack Overflow Direct Mapped Cache и мой другой вопрос наКэшированиев качестве ссылок (пожалуйста, поправьте меня, если какие-либо из моих определений неверны)
- 64-битные слова — процессор может обрабатывать 64 бита одновременно
- 64-битные адреса с адресацией на уровне байтов — в ОЗУ имеется 2^64 ячеек памяти, и каждая ячейка памяти хранит один байт.
- Кэшимеет высокую скорость и разделен на строки кэша
- Кэш с прямым отображениемгде блок оперативной памяти отображается в одну строку кэша (не уверен в значимости этого)
Сейчас отрабатываюПрямой кэш с отображениемв качестве ссылки
- Байт — поскольку строка байтов состоит из 64 байтов, для идентификации одного байта в этой строке байтов требуется 6 бит.
- Индекс. Поскольку существует 8192 «строки» байтовых строк, для идентификации каждой строки вам понадобится не менее 10 бит.
А вот тут я застрял. Другоепочтасказал: «Все остальные биты — это биты TAG». В то время как эта лекцияпочтасказал: «Каждая строка имеет тег, который указывает адрес в M, с которого была скопирована строка». Я предполагаю, что M означает RAM.
Итак, здесь все остальные биты будут 64 - 6 - 10 = 48 бит. Но разве не нужны все 64 бита в TAG, чтобы указать, из какой ячейки памяти в ОЗУ поступили данные в кэш? Может кто-нибудь прояснить путаницу, которая у меня тут возникла?