Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Кэширование данных процессором
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
ikoryakin ikoryakin вне форума
Member
 
Сообщений: 47
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2009
По умолчанию Кэширование данных процессором - 24.05.2010, 20:00

Кто знает, будет ли кэшироваться переменная Iterations???
получаю результат где-то 20 наносекунд. при пустом прогоне цекла где-то 19 нансек
а при переборе массива, в котором данные беруться с шагом, превышающим кэш, время где-то 30нансек

вот не пойму, толи кеширование дает выигрыш в 10нансек, толи его вообще нет, толи в случае с массивом работает какое-то умное упреждающее кэширование и массив все равно кешируется (хотя он размером 900000 элиментов типа long, а кэш L2 512килобайт)

вот и не знаю, чего и думать....(((


Код:
int Iterations=10000000;


double Test_ProstueDannue_QPC()
{
    static __int64 tbegin,tend;
    __int64 freq;

   QueryPerformanceCounter((LARGE_INTEGER *)&tbegin);  // Получить кол-во тактов
   QueryPerformanceFrequency((LARGE_INTEGER *)&freq); // Получить тактовую частоту 

 for(int i=0; i<Iterations; i++)
  {
   asm
   {
       mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1
      mov ax,1

      mov eax,Iterations
   }
  }
   QueryPerformanceCounter((LARGE_INTEGER *)&tend);
  double res=(double)((double)(tend-tbegin)/(double)freq);
  return res*1000000;
}
Ответить с цитированием
  (#2 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 25.05.2010, 03:52

Кэширование и упреждающее чтение - не одно и то же. В случае с массивом используется второе, особенно при последовательной выборке. Тут надо уже курить доки к процессору. В цикле переменная скорее всего будет закэширована, там же она постоянно используется. А может быть её компилятор вообще в регистр поместит, ведь у тебя кроме EAX ничего не используется...
Ответить с цитированием
  (#3 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 25.05.2010, 21:20

Компилятор мог сделать тебе "услугу" и соптимизировать код (вплоть до полного исключения всего цикла). Что бы переменная не кешировалась используй модификатор volatile.

по кешированию на хабре недавно была интерестная статейка.
Ответить с цитированием
  (#4 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 27.05.2010, 11:39

Angel5a
Volatile запретит лишь помещать переменную в регистр. А тут человек замахнулся на L2 кэш... Интересно, кстати, зачем это надо делать программно?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с процессором gorrent Процессоры 2 13.03.2012 20:28
Проблема с процессором! Bad Santa Процессоры 30 14.05.2011 19:49
Помогите с процессором!!! Лёха. Процессоры 22 27.02.2011 15:55
Проблема с процессором cliem Техническая поддержка 3 02.01.2011 14:32
проблема с процессором Дмитрий00102 Процессоры 8 06.10.2010 10:20
Помогите с процессором PavelB Процессоры 34 31.03.2010 11:51
Подскажите с процессором! CJинг Ноутбуки 5 08.12.2008 10:37
Кэширование данных как реализовать AleksT_0 .NET 0 18.04.2006 16:33
Кэширование записи как реализовать ДВП MySQL 0 09.01.2006 17:10
Кэширование команд для DC в потоке под WinXP RoboTact Visual C++ 4 17.08.2004 15:50
Про кэширование файлов CD_Eater WinAPI 2 09.08.2004 00:54
Запретить кэширование как реализовать Anonymous DHTML, JavaScript, VBScript 0 05.05.2003 15:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов