Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 391 • Страница 2 из 20<  1  2  3  4  5 ... 20  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Ой не знаю...

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!



Партнер
 

Пожиратель железа
Статус: Не в сети
Регистрация: 14.04.2003
Только что скачал.

Дурик Аппл Бред на КТ400, Вынь 2к3ее

#77

ЗЫ. Дюрон класса пентиум :D

_________________
Не шалю, никого не трогаю, починяю примус


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Могу выложить исходники для совместной доработки.

Добавлено спустя 12 минут, 57 секунд:
Вот для дуриков: [url]http:/rulezmaker.fatal.ru/cpudur.exe[/url]
В одном message box'е должно быть точное нащвание.

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


 

Member
Статус: Не в сети
Регистрация: 26.01.2005
Думаю комментарии излишни :) Но задумка хорошая, главное, чтобы энтузиазм не иссяк.

#77

Кстати прога загружается моментом, зависонов нету.


 

Member
Статус: Не в сети
Регистрация: 16.04.2004
Откуда: [MSK.RU]
Zoom Evstrahiev
Посмотри вот эту софтинку...
Написана она на Дельфе, кстати...

ЗЫ
Цитата:
Но задумка хорошая, главное, чтобы энтузиазм не иссяк.

Вот это действительно проблема...


 

Member
Статус: Не в сети
Регистрация: 15.09.2004
Откуда: Иркутск
Зато у меня даже на ноуте почти все правильно определилось. Загружается теперь в момент, но при Real Time Clock загруз все-равно 100%. И со Speed Step прога разобраться не смогла, ведь как нажмешь RTC, проц сразу же на максимуме пашет.:)
#77


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Тортон 2200+. Вот скрин

#77

Грузится моментом. Но доведи до ума базу процессоров.
На Делфях пишешь??? А как у тебя получается 33кБ ??? У меня пустая форма где то 170 кб занимает, ну если пожать то все равно не менее 100кб получится. Поделись секретом.

_________________
Лучшая зашита - это нападение.


 

Member
Статус: Не в сети
Регистрация: 31.01.2004
Откуда: Das Deutsche...
Идея замечательная. Но есть два замечания:
- после включения real-time clock на Вин2003 прога загрузила проц на 100% и пришлось ее аварийно вырубать.
- мой А64 3200+ определился верно, но в "классе" стояло: Pentium Class processor. Фанатам АМД эта прога противопоказана :)

Добавлено спустя 1 минуту, 20 секунд:
Еще в программе отсутствует четкое указание версии, а это необходимо.

_________________
И прежде чем взошла заря,
Рабы зарезали царя... (Г. Гейне, Валтасар)


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Так, отвечаю на вопросы:
1. Про размер: Пишу на KOL. Размер 69 кб. Сжимаю upx - размер 33 кб.
2. Далее: базы процессоров как таковой нет. Есть несколько функций на асме типа "checkpentium3" и т.п. Как они работают, ответить трудно...

Добавлено спустя 52 минуты, 10 секунд:
Проблема в том, что для определения почти всей инфы (кроме частоты) есть несколько функций, по разному работающих на разных мшинах.

Первым делом я получаю VendorString и, если это "genuineIntel" выполняются одни функции, если - "Authentic AMD" другие, но есть ещё и третьи т.н. "Generic" насколько я понял, они хреново работают и там и там 8-/
Сегодня сделаю рабочий вариант для тестирования, чтобы выводились все графы в принципе, какие возможно, без выборки. Посмотрим, как всё будет работать.

Добавлено спустя 2 минуты, 18 секунд:
Кстати, насчёт энтузиазма - Это одна из тех немногих прог, которую я не бросил по середине работы. На моей машине всё работает хорошо, не считая тормозов. :)

Добавлено спустя 49 минут, 43 секунды:
Продолжу монолог. Вот функции определения частоты, которыми я пользуюсь. Результат более-менее точен, но тормозит страшно:
Код:
function RdTSC : int64; register;
asm
  db $0f, $31
end;

function GetCyclesPerSecond : double;
var
  hF, T, et, sc : int64;
begin
  QueryPerformanceFrequency(hF); // HiTicks / second
  QueryPerformanceCounter(T); // Determine start HiTicks
  et := T + hF; // (Cycles are passing, but we can still USE them!)
  sc := RdTSC; // Get start cycles
  repeat // Use Hi Perf Timer to loop for 1 second
    QueryPerformanceCounter(T); // Check ticks NOW
  until (T >= et); // Break the moment we equal or exceed et
    Result := (RdTSC - sc) / 1000000; // Get stop cycles and calculate result
end;

+ К этому функция округления дробей.

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Попробуй вот эту
Код:
function GetCpuSpeed: Comp;
{ Function to return the CPU clock speed only.                                     }
{ Usage: MessageDlg(Format('%.1f MHz', [GetCpuSpeed]), mtConfirmation, [mbOk], 0); }
var
  t: DWORD;
  mhi, mlo, nhi, nlo: DWORD;
  t0, t1, chi, clo, shr32: Comp;
begin
  shr32 := 65536;
  shr32 := shr32 * 65536;

  t := GetTickCount;
  while t = GetTickCount do begin end;
  asm
    DB 0FH
    DB 031H
    mov mhi,edx
    mov mlo,eax
  end;

  while GetTickCount < (t + 1000) do begin end;
  asm
    DB 0FH
    DB 031H
    mov nhi,edx
    mov nlo,eax
  end;

  chi := mhi;
  {$IFNDEF VER120}
  if mhi < 0 then chi := chi + shr32;
  {$ENDIF}

  clo := mlo;
  {$IFNDEF VER120}
  if mlo < 0 then clo := clo + shr32;
  {$ENDIF}

  t0 := chi * shr32 + clo;

  chi := nhi;
  {$IFNDEF VER120}
  if nhi < 0 then chi := chi + shr32;
  {$ENDIF}

  clo := nlo;
  {$IFNDEF VER120}
  if nlo < 0 then clo := clo + shr32;
  {$ENDIF}
 
  t1 := chi * shr32 + clo;

  Result := (t1 - t0) / 1E6;
end;


 

Member
Статус: Не в сети
Регистрация: 26.11.2004
Откуда: Москва
Так теперь на моём целероне 1.2Ггц выросло 512кб кэша =)
А real time совсем камень не грузит всё как обычно загрузка 3%.


 

Member
Статус: Не в сети
Регистрация: 16.04.2004
Откуда: [MSK.RU]
Где-то на просторах сети нашёл вот эту вещь...
Цитата:
{Speed detection}
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
try
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);
except end;
end;
{/Speed detection}

Почти год юзал везде... Весьма точная штука...


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Zoom Evstrahiev на всякий случай: http://sources.ru/delphi/system/cpu_speed.shtml
Что касается частоты шины и множителя - надо лезть в MSR. Если понадобится драйвер - обращайся :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
to Tod Schwarzkaiser:
Эта функция даёт очень неточный результат. А тормозит не меньше (только если DelayTime уменьшить раз в 10, но тогда точность упадёт - у меня показал 2000 мгц)
to Ray Adams: Попробую

Добавлено спустя 50 минут, 55 секунд:
To Daemon: Со всеми этими ф-циями знакм. Последнюю из них и использую.

Я загрузил рабочую версию, для проверки всех основных функций. Кстати, у меня "checkPentiumIII" даёт положительный результат :)
http://download.nextmail.ru/1/5/1e4b6ba2a6538866ed6df45ebfd63239/cpu.exe

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


 

Member
Статус: Не в сети
Регистрация: 18.05.2004
Откуда: Эстония
#77
это на Целероне 2000 nortwood
При real-time по прежнему ест 90-100 % проца.
Грузиться стало гораздо быстрее. Продолжай. Удачи. :)


 

Member
Статус: Не в сети
Регистрация: 26.11.2004
Откуда: Москва
У меня по прежнему 512кэша =)
А с вкл риал тайм грузится на все 100%, раньше такого не было.


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Эх... Глючные какие функции. Сегодня выложу текст модуля, который я использую. Будем вместе разбираться :) .
Похоже, что в рекордах (authenticAMD.name;genuineIntel.name...) инфа получается везде через одни и теже функции.

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Цитата:
Эх... Глючные какие функции. Сегодня выложу текст модуля, который я использую. Будем вместе разбираться .
Похоже, что в рекордах (authenticAMD.name;genuineIntel.name...) инфа получается везде через одни и теже функции
Могу предложить:
Код:
function tCPUid.GetCPUString:shortstring;
var
  i, j:byte;
  tmp:ShortString;
begin
  tmp[48]:='0';
  i:=0;
  for j:=2 to 4 do
    begin
        cpuid($80000000 + j, EAX, EBX, ECX, EDX);
      memcpy(@tmp[4*i+1], @EAX, 4);i:=i+1;
        memcpy(@tmp[4*i+1], @EBX, 4);i:=i+1;
        memcpy(@tmp[4*i+1], @ECX, 4);i:=i+1;
        memcpy(@tmp[4*i+1], @EDX, 4);i:=i+1;
    end;
  result:=tmp;
end;

function tCPUid.GetVendorIDString:shortstring;
var
  cnt:byte;
  tmp:ShortString;
begin
  cpuid($00000000, EAX, EBX, ECX, EDX);

  FillChar(tmp, sizeof(tmp), ' '); //To-do allocating memory
  delete(tmp,13,sizeof(tmp));      //for string

   memcpy(@tmp[1], @EBX, 4);
   memcpy(@tmp[5], @EDX, 4);
   memcpy(@tmp[9], @ECX, 4);

  result:=tmp;
end;

Правла их нужно слегка доработать, ну а
Код:
function memcpy(Dest, Source: Pointer; Len: Integer): Pointer;
begin
  Move(Source^, Dest^, Len);
  Result := Dest;
end;


И еще, определение частоты засунь в трид, чтобы окно не подтормахивало.

Добавлено спустя 8 минут, 53 секунды:
Ну и на всякий:
Код:
procedure tCPUid.cpuid(op:DWord; var EAX, EBX, ECX, EDX:DWord);
var
  A, B, C, D: DWord;
begin
  asm
    pushad
    pushf
      mov eax, op
     cpuid
     mov A, eax
     mov B, ebx
     mov C, ecx
     mov D, edx
    popf
    popad
  end;
   EAX := A;
   EBX := B;
   ECX := C;
   EDX := D;
end;

Ну а инфы по cpuid - полно на sandpile.org
PS ты уже 4, кто на этом сайте пишет подобную прогу, все остальные пока временно сдались :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Спасибо!
Ок. Сейчас основная задача выяснить, работает хоть какая-нибудь из использованных функций на 100 (или хотя бы 80) %.
Сегодня как следует пороюсь, завтра выдам первый нормальный билд.
Сдаваться я не собираюсь. Надеюсь на всеобщую помощь :D

Добавлено спустя 6 часов, 4 минуты, 53 секунды:
to Ray: Функция глючная. Тормозит не меньше, а точность намного хуже, чем у той, что использую я.

Первый Альфа релиз - Альфа 0.1.3
Наконец более-или менее довёл программу до ума. Ввёл функцию определения наличия SSE3.
Определение ядра для AMD. Скоро и для Intel.
Определение Кэша пока работает плохо. На очереди :)
Ссылка та же http://rulezmaker.fatal.ru/cpu.exe

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


 

Member
Статус: Не в сети
Регистрация: 09.01.2005
Откуда: Питер
Хех. Молчат 8). (Затишье перед бурей? ;) )

Альфа релиз 0.1.4
Добавил функцию определения "codename" для Intel'ов, до P4 включительно, и для AMD64. К сожалению, без вашей помощи работоспособность проверить не могу.

_________________
Rara temporum felicitas, ubi quae velis sentire et quae sentias dicere licet!


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 391 • Страница 2 из 20<  1  2  3  4  5 ... 20  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan