Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10

Моделирование работы кэш памяти, Not recently Used

14.10.2018, 23:32. Показов 1744. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Написал программу - модель кэша.

Кэш состоит из групп.
Группа состоит из записей.

Каждая запись имеет флаги чтения, записи и присутствия.


Бит присутствия заполняется при первом обращений к записи и более не изменяется.
Бит чтения заполняется при доступе на запись или чтение.
Бит записи заполняется только при доступе на запись.

Имеется параметр - размер пространственной локальности.
Этим параметром кэш разбивается на участки равного размера.


В случае кэш-промаха происходит полное чтение участка к записи которого происходил доступ.

Также кэш имеет счетчик обращений.

Вопрос: должен ли изменятся счетчик при "подкачке" записей?

А также необходимо ли устанавливать бит чтения в 1 у таких "подкачанных" записей?

Добавлено через 1 час 52 минуты
Скорее вопрос такой: Считать ли проверку кэш-попадания обращением?

Или же полноценное обращение это когда мы изменяем флаги и возможно меняем содержимое диска?
А проверку адреса на предмет кэш-попадания можно сделать не изменяющей состояния?

Т.е. так:
Проверить было ли кэш попадание.
если нет, то


1. Подгрузить левую окрестность нашего адреса
2. Обратиться на чтение или запись по данному адресу
3. Прочитать правую окрестность точки.


Итого здесь будет N обращений, включая обращение по исходному адресу.
если N это размер окрестности(пространственной локальности).

Пример:
Допустим мы при каждом обращений подгружаем 1024 записи. Изначально кэш чист.


Первое обращение идет по адресу 413.
Проверяем его получаем кэш промах

Делаем обращения на чтение 0 - 412 записей из диска.
Делаем исходное обращение по 413. (допустим на запись)
Делаем обращения на чтение 414 - 1023 записей из диска.

Итого на счетчике кэша имеем 1024 обращения.


Счетчик используется для того, чтобы на Nом обращений занулять все флаги обращения, поскольку алгоритм NRU.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2018, 23:32
Ответы с готовыми решениями:

Очистка кэш памяти ПК
как написать программу, которая очищала бы кэш память

Окно кэш-памяти
Добрый день! Знающие CompModel, подскажите, пожалуйста, следующее. В окне Кэш-память снизу пишется "статистика" и идёт...

Сколько нужно кэш памяти 1-2 уровней ?
Всем привет, подскажите пожалуйста сколько нужно кэш памяти для работы в VISUAL C 2008. А то я вообще не могу найти этого нигде.

6
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
15.10.2018, 01:56
Цитата Сообщение от Qazan Посмотреть сообщение
Также кэш имеет счетчик обращений.
Обращений для чего (чтение,записи?)
Цитата Сообщение от Qazan Посмотреть сообщение
Считать ли проверку кэш-попадания обращением?
Ну если счетчик работает и на чтение, то проверку осуществляему чтением я бы считал.
Цитата Сообщение от Qazan Посмотреть сообщение
Или же полноценное обращение это когда
Все зависит от реализованой вами модели, и смысла вложенного в слово "полноценный".
Цитата Сообщение от Qazan Посмотреть сообщение
А проверку адреса на предмет кэш-попадания можно сделать не изменяющей состояния?
Состояние я так понимаю это :
Цитата Сообщение от Qazan Посмотреть сообщение
Бит присутствия заполняется при первом обращений к записи и более не изменяется.
Ну вы же обращаетесь чтением для проверки.
Это мне вообще не понятно. Вы проверите, обнаружите что там пусто да и вся запись пуста и проделаете N обращений? А в перспективе все время будете перепроверять поскольку бит присутствия не изменяется? А не проще ли если провереное место пустое (что ко всему прочему портит всю запись) изменить бит присутствия?

А это точно Джава? (с)
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
15.10.2018, 20:23  [ТС]
Цитата Сообщение от ViktorFX Посмотреть сообщение
А это точно Джава? (с)
На Java писал : https://bitbucket.org/Rakhim

Ссылка на место где происходит считывание элемента кэша, и, в случае кэш-промаха, считывание некоторой окрестности ("локали").


Проблема возникает, при считывании локали.
Получается, что я считываю целевую запись дважды. В методе
Java
1
readLocality(..)
.
Планирую переписать как:

Java
1
2
3
4
5
6
7
8
9
    private static void readLocality(Cache cache, int address, int start, int length) {
        for (int i = 0; i < address; i++) {
            cache.process(start + i, true);
        }
 
        for (int i = address + 1; i < length; i++) {
            cache.process(start + i, true);
        }
    }

Но мне интересно верный ли это подход, как на самом деле происходит в кэше процессора.

Добавлено через 49 минут
Цитата Сообщение от ViktorFX Посмотреть сообщение
А не проще ли если проверенное место пустое (что ко всему прочему портит всю запись) изменить бит присутствия?
Признак присутствия заполняется при первом обращений, подобно тому как инстанциируются классы Java.

Ввел его, для того, чтобы первое обращение по нулевому адресу к еще "свежему" кэшу не было кэш-попаданием.
Сам признак присутствия не используется алгоритмом замещения NRU.

Добавлено через 1 час 21 минуту
Точнее так переписал функцию считывания локали:

Java
1
2
3
4
5
6
7
8
9
10
11
    private static void readLocality(Cache cache, int address, int length) {
        final int start = (address / length) * length;
        for (int i = start; i < address; i++) {
            cache.process(i, true);
        }
 
        final int end = start + length;
        for (int i = address + 1; i < end; i++) {
            cache.process(i, true);
        }
    }

Вопрос: так ли происходит при работе алгоритма в кэша процессора?
Верно ли это концептуально

Добавлено через 9 минут
В принципе график кэш-попаданий получился логичным(по оси Х размеры пространственной локальности 2, 4, 8, 16, .. 1024):

Количество кэш-промах уменьшается вдвое при линейном обращений соизмеримым с общим размером кэша.
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
15.10.2018, 20:24  [ТС]
График:
Миниатюры
Моделирование работы кэш памяти, Not recently Used  
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
15.10.2018, 20:48  [ТС]
При увеличении количество запросов вдвое (растягивание модели программы) больше чем размер кэша дало следующий результат:
Миниатюры
Моделирование работы кэш памяти, Not recently Used  
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
15.10.2018, 20:48  [ТС]
Т.е. кэш-попадания стабильно 50%.
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
16.10.2018, 07:04
Qazan, К сожалению я вам не могу помочь, я в этой теме вообще не разбираюсь, мои вопросы лишь свидетельствуют о общих знаниях и обширных интересах, и здесь скорее логика и общие суждения.
Тема интересна, я думаю кто-то уже "прокладывал дорожку", я бы начал именно с этого, хотя в инете к сожалению не все можно найти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2018, 07:04
Помогаю со студенческими работами здесь

Увеличение производительности за счет кэш-памяти и конвейерности процессора
Читаю тут одну книгу и не понимаю. Перемножают матрицы. И говорят. Ну вот, если будем перемножать как обычно большие матрицы С=AB, то...

Наиболее эффективный алгоритм замещения для кэш-памяти большего объёма
Добрый день, интересует такой вопрос: Какой алгоритм замещения будет наиболее эффективным если применить кэш-память большего объёма? Спорим...

Определить наличие кэш памяти процессора и его параметров (ассемблерные вставки)
Необходимо определить наличие кэш памяти процессора и его параметров с ассемблерными вставками. Из ограничений только Intel IA-32. ЯП...

Загружаются ли в кэш данные из оперативной памяти при использовании арифметики указателей
Привет Операции с массивами работают быстрее если использовать индексацию указателей, чем при арифметике указателей. почему так? может...

Samsung NP530U3C-A08RU Как проверить работает ли сейчас SSD-диск в качестве кэш-памяти?
После всяческих манипуляций с ноутбуком samsung np530u3c-a08ru и удалением/форматированием SSD диска, можно ли как-нибудь проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru