реклама на сайте
подробности

 
 
> Linux - прямой доступ к кешу ОЗУ, Есть ли доступ к кешу ОЗУ для ускорения доступа к данным
robix
сообщение Oct 22 2013, 06:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 15-08-06
Из: Москва
Пользователь №: 19 556



Всем привет!
Форумчане, помогите разобраться в важном вопросе!!!
Суть проблемы следующая - необходимо обеспечить высокую скорость рандомного доступа к большому массиву данных (относительно большому, несколько мегабайт).
Если брать стандартную базу данных, то для поиска элемента в таблице из 1000000 компонентов требуется порядка 100 микросекунд, что не приемлемо.
Рандомный доступ в ОЗУ современных ПК может достигать 300 наносекунд (могу ошибаться). То есть если выполнять поиск по таблице без базы данных, то 2^20=1000000, это значит нам нужно как минимум 20 раз выполнить рандомный доступ в память для поиска эелемента. В теории получается порядка 6 микросекунд. Это уже на много лучше, но не достаточно.
Кто нибудь может сказать, можно ли взять, например Xeon с 10 Мб кеша ОЗУ и разместить массив целиком в нем и производить поиск в кеше не обращаясь в ОЗУ?
Буду рад любым комментариям!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
krux
сообщение Oct 22 2013, 17:29
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



во-первых, если ваши данные кратны (нормально влезают в) cache line и ваш код не вызывает cache-miss'ов из-за кривых, не выровненных структур данных, то все попадет в кэш без вашего участия.

во-вторых, во время работы BIOS при включении ПК процессор ещё не видит SDRAM-памяти, и весь кэш... на самом деле не кэш а большой такой RAM, и BIOS фактически использует в качестве памяти кода и данных его. После инициализации SDRAM код копируется туда, и RAM переводится в режим кеша при помощи записи в регистр.
Регистр этот является write-once, т.е. запись в него допускается только один раз после подачи питания, поэтому после того как BIOS отработал, он бесполезен.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
robix
сообщение Oct 23 2013, 11:15
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 15-08-06
Из: Москва
Пользователь №: 19 556



Спасибо, Krux, за ответ.
То есть, если я правильно понял, прямого доступа в кеш нет.
Если работать в автоматическом режиме, то Вы хотите сказать что имея таблицу размером в 8 мегабайт, при частых обращениях к ней она целиком вся будет в кеше?
Например для Xeon 6 ядер и 10 МБайт кеша всего!? Если второе верно, то это тоже неплохой вариант.


Цитата(krux @ Oct 22 2013, 21:29) *
во-первых, если ваши данные кратны (нормально влезают в) cache line и ваш код не вызывает cache-miss'ов из-за кривых, не выровненных структур данных, то все попадет в кэш без вашего участия.

во-вторых, во время работы BIOS при включении ПК процессор ещё не видит SDRAM-памяти, и весь кэш... на самом деле не кэш а большой такой RAM, и BIOS фактически использует в качестве памяти кода и данных его. После инициализации SDRAM код копируется туда, и RAM переводится в режим кеша при помощи записи в регистр.
Регистр этот является write-once, т.е. запись в него допускается только один раз после подачи питания, поэтому после того как BIOS отработал, он бесполезен.

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 07:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016