Вы должны вместо этого вызвать метод read
файлового объекта rf
:
def readMem(memId):
with open(memId, "r") as rf:
memVal = rf.read()
Когда я обучаю своих студентов архитектуре кеш-памяти, я начинаю с кеша с прямым отображением. Как только это поняли, Вы можете думать о N-образном множестве ассоциативных кэшей как о параллельных блоках кэша с прямым отображением. Чтобы понять, что обе цифры могут быть правильными, вам необходимо сначала понять назначение кэшей set-assoc.
Они предназначены для решения проблемы «алиасинга» в кеше с прямым отображением, где могут отображаться несколько областей памяти. к конкретной записи в кеше. Это показано на рисунке в Википедии. Таким образом, вместо удаления записи в кеше мы можем использовать N-way кеш для хранения других «псевдонимных» областей памяти.
Фактически диаграмма аппаратных секретов будет правильной, если предположить, что порядок замены таков, что первый кусок основной памяти отображается в Way-1, а затем второй блок в Way-2 и так далее и так далее. Тем не менее, одинаково возможно, чтобы первая часть основной памяти была распределена по нескольким путям.
Надеюсь, это объяснение поможет!
PS: Смежные области памяти нужны только для одной строки кэша, эксплуатирующей пространственную локальность. Что касается последней части вашего вопроса, я полагаю, что вы можете смешивать несколько разных концепций.