Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 11:17   #1
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию Программное управление кэшем

Почитал разные статьи про кэш процессора. Скажите, правильно-ли я понял, что программное управление кэшем процессора/процессоров - это пока только мечта. Или софт может это делать?

Если конкретнее, мне нужно зафиксировать блок данных в кэше (чтобы его не вытесняли оттудава) пока я с ним работаю. Т.е. так:
1.1 поток 1 создает динамический блок данных 1.1
1.2 ждем, пока в кэше не появится свободное местечко или можно будет вытяснить какой-нибудь блок
1.3 блок 1.1 помещается в кэш и 'фиксируется' там на приколе
1.4 поток 1 заполняет блок 1.1
1.5 поток 1 'помечает' блок 1.1 как готовый
1.6 поток 1 создает динамический блок данных 1.2
...
...

2.1 поток 2 создает блок 2.1
2.2 блок 2.1 'фиксируется' в кэше
2.3 поток 2 ждет готовности блока 1.1
2.4 поток 2 читает блок 1.1 и пишет в блок 2.1
2.5 блок 1.1 освобождается (уничтожается)
2.1 поток 2 создает блок 2.2
...
...

3.1 блок 2.1 уходит на дальнейшую обработку или вытесняется из кэша (по обстоятельствам)

Ну или насколько всё это актуально. Может игра не стоит свеч и при потоковой обработке данных (обращение к блоку, скажем, ч/з 100 циклов) промахов не будет или их количество будет стремится к нулю.

P.S.: Не знал, в какую еще ветку запостить.

Последний раз редактировалось Sibedir; 26.02.2013 в 11:20.
Sibedir вне форума Ответить с цитированием
Старый 26.02.2013, 20:16   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. В кэше нет блоков, есть строки.
2. Кое-какая возможность по управлению кэшем есть. Например, можно заранее прочитать в кэш фрагмент данных до того, как он понадобится.

Но, думаю, не понимая в деталях, как работает кэш, можно сделать только одно - существенно снизить производительность процессора.
s-andriano вне форума Ответить с цитированием
Старый 27.02.2013, 05:27   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
2. Кое-какая возможность по управлению кэшем есть. Например, можно заранее прочитать в кэш фрагмент данных до того, как он понадобится.
Ну да, можно обратиться к любому байту из этого фрагмента. Система не найдет фрагмент в кэше и запишет его туда.
Цитата:
Но, думаю, не понимая в деталях, как работает кэш, можно сделать только одно - существенно снизить производительность процессора.
А как может понизиться производительность, если фрагмент данных, с которым непрерывно работает процесс, постоянно находится в кэше?
-------------------------------------------------------------------------------------------------------------------------
Насчёт
Цитата:
не понимая в деталях
Вроде понял, что это делается через соответствующие управляющие регистры и структуры. Не?
И еще вопрос. Насколько разнятся реализации кэширования на разных процессорах? И где можно найти более-менее обобщенную информацию по разным типам процессоров по данной теме?
-------------------------------------------------------------------------------------------------------------------------
Короче понял. Можно но сложно, жутко заморочено (этож под разные процы по смоему всё нужно делать, не-е-е) и не так уж эффективно по сравнению с тем, что может получиться при более-менее граммотном программировании на ВУЯП'е.

Последний раз редактировалось Sibedir; 27.02.2013 в 16:59.
Sibedir вне форума Ответить с цитированием
Старый 02.03.2013, 16:34   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Ну да, можно обратиться к любому байту из этого фрагмента. Система не найдет фрагмент в кэше и запишет его туда.
Вам будет от этого лдегче, если Вы не знаете каков объем загруженного "фрагмента", на каком адресе он начинается и на каком заканчивается?
Цитата:
А как может понизиться производительность, если фрагмент данных, с которым непрерывно работает процесс, постоянно находится в кэше?
Чтобы понять, как может понизиться производительность, минимум, нужно понимать вообще как работает процессор.
Цитата:
И еще вопрос. Насколько разнятся реализации кэширования на разных процессорах? И где можно найти более-менее обобщенную информацию по разным типам процессоров по данной теме?
На сайте производителя. Их не так много - всего два. Но подход к кэшированию различается довольно существенно.
Цитата:
Короче понял. Можно но сложно, жутко заморочено (этож под разные процы по смоему всё нужно делать, не-е-е) и не так уж эффективно по сравнению с тем, что может получиться при более-менее граммотном программировании на ВУЯП'е.
Ну да.
Например, не зная особенностей реализации кэша, трудно понять, как в кэш объемом несколько Кбайт может не поместиться 5 байт данных. А это вполне реальная ситуация.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное управление температурным датчиком DS18S20 Terran Компьютерное железо 1 11.11.2011 12:36
Программное управление светодиодом Jacobson Общие вопросы Delphi 5 14.05.2010 23:02
CPU Internal Cache, программное управление SunKnight Свободное общение 0 11.05.2010 22:30
Сервис - программное управление. Air Win Api 3 23.06.2008 13:09