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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2010, 16:18   #1
Morkonwen
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 44
По умолчанию Трехканальность.

если я правиольно понимаю, это означает, что процессор может работать одновременно с тремя планками памяти. Встает вопрос как оптимизировать свое приложение так, чтобы при выполнении программы каждое из ядер размещало данные по планкам так, чтобы можно было работать с ними паралельно.
то есть не было такого что все данные программы в одной планке и трехканальность никак не помогает при распаралеливании, что другим ядрам нужно ждать пока одно получит свои данные.
Morkonwen вне форума Ответить с цитированием
Старый 17.09.2010, 23:07   #2
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

По-моему, ты собираешься заняться какой-то ерундой. Процессор же не обращается к памяти КАЖДЫЙ раз когда ему нужно получить несколько байт. Для этого есть кэш-память и всё-такое.
kogemrka вне форума Ответить с цитированием
Старый 19.09.2010, 09:07   #3
Morkonwen
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 44
По умолчанию

ну у моего приложения объемы постоянно используемых данных несколько гигов и хранить все в кеше нельзя. Итак, как пользоваться трехканальностю? Вопрос открыт=)
Morkonwen вне форума Ответить с цитированием
Старый 19.09.2010, 13:48   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
если я правиольно понимаю
неправильно
p51x вне форума Ответить с цитированием
Старый 19.09.2010, 13:54   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)где вы вообще взяли трехканальность эту?
2)вам всеравно не дадут прав решать где какую страницу памяти располагать в ОЗУ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 22:30   #6
Morkonwen
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 44
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
неправильно
Расскажите пожалуйста тогда что это значит.

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

Последний раз редактировалось Stilet; 17.10.2010 в 18:25.
Morkonwen вне форума Ответить с цитированием
Старый 26.09.2010, 21:58   #7
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

это успешно делает visual assist - плагин для MSVS. Он, правда, по -моему, не бесплатный, но кряки в инете должны быть

Вы в каком языке программирования видели, чтобы программист мог вальяжно заказывать области памяти, в которых его программа будет размещать свой код? Раньше люди писали на ассемблере под DOS. Вот там-то можно было решать по каким адресам распихивать свои данные. Но и тогда врядли можно было писать данные в какую-то планку по выбору. Что вы можете сделать для оптимизации работы с памятью, так это, например, использовать аллокаторы памяти в программе для более экономного его расходования. Ну а если ваше приложение юзает такие объемы памяти, реализуйте динамическую подгрузку данных.

Последний раз редактировалось Stilet; 17.10.2010 в 18:26.
sashonk вне форума Ответить с цитированием
Старый 26.09.2010, 23:58   #8
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Это невозможно, технически. Выбор каналов памяти и чипов памяти осуществляет контроллер памяти, расположенный в процессоре. Он не доступен для программирования, даже с Assembler уровня.
oleg kutkov вне форума Ответить с цитированием
Старый 17.10.2010, 16:05   #9
Morkonwen
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 44
По умолчанию

на самом деле все немного прояснилось. Есть в паралельном программировании понятие "локальность данных" это означает, что размещение данных надо проводить распаралеленно, в этом случае каждый поток размещает нужные ему данные в удобном для него месте.

если это так, то потоки получают доступ к таким способом размещенным данным в несколько раз быстрее.
Morkonwen вне форума Ответить с цитированием
Старый 17.10.2010, 17:34   #10
ATAMAN200
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 41
По умолчанию

Интересный вопрос но что бы перераспределить данные переменных сред по физическим планкам ОЗУ то их сначала надо определить скоко их всего потом определить адрес слота каждой планки.
Я правда не знаю может ли WinXP обращятся к пустым регистрам памяти в неочереди.
Кстати надо установить SiSoft Sandra и посмотреть на как этот софт работает с ОЗУ.
ATAMAN200 вне форума Ответить с цитированием
Ответ


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