Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Get L2 cache   Найти похожие ветки 

 
Delphino   (2004-01-10 23:16) [0]

Может, несколько "не в тему", но:
function TCpuData.GetL2Cache:word;
var
 I: Integer;
 l2cache:word;
 d:byte;
 tte:byte;
 CacheDescriptors: array [0..15] of Byte;
begin
asm

 @@RepeatCacheQuery:
       POP     ECX
       MOV     EAX, 2
       DB      0FH
       DB      0A2H
       INC     d
       CMP     d, 1
       JNE     @@DoneCacheQuery
       MOV     tte, AL
       CMP     AL, 0

  @@DoneCacheQuery:
       PUSH    ECX
       MOV     CL, d
       SUB     CL, tte
       JNZ     @@RepeatCacheQuery
       POP     ECX
       MOV     DWORD PTR [CacheDescriptors], EAX
       MOV     DWORD PTR [CacheDescriptors + 4], EBX
       MOV     DWORD PTR [CacheDescriptors + 8], ECX
       MOV     DWORD PTR [CacheDescriptors + 12], EDX

 end;
       L2Cache := 0;
       for I := 1 to 15 do
         case CacheDescriptors[I] of
           $40:
             L2Cache := 0;
           $41:
             L2Cache := 128;
           $42:
             L2Cache := 256;
           $43:
             L2Cache := 512;
           $44:
             L2Cache := 1024;
           $45:
             L2Cache := 2048;
 end;
Getl2cache:=l2cache;
end;
Работать это должно на процах от Intel.

Q: Это правильно?!


 
Delphino   (2004-01-11 12:03) [1]

PLZ прочекайте, если не сложно!


 
jack128 ©   (2004-01-11 12:25) [2]

как там дела а асм коде обстоят - не знаю, но вот это
> for I := 1 to 15 do
>          case CacheDescriptors[I] of
>            $40:
>              L2Cache := 0;
>            $41:
>              L2Cache := 128;
>            $42:
>              L2Cache := 256;
>            $43:
>              L2Cache := 512;
>            $44:
>              L2Cache := 1024;
>            $45:
>              L2Cache := 2048;
>  end;
явно не правильно. Может имелось в виду inc(L2Cache, <128 или 256 или что то там..>


 
Delphino   (2004-01-11 13:19) [3]

Есть дескрипторы, и их нужно считать не всегда один раз - количество раз d. Если среди них встречается какой либо из нижеперечисленных, то кэш - такой, какой соответствует дескриптору.
40h no integrated L2 cache (P6 core) or L3 cache (P4 core)
41h code and data L2 cache, 128 KB, 4 ways, 32 byte lines
42h code and data L2 cache, 256 KB, 4 ways, 32 byte lines
43h code and data L2 cache, 512 KB, 4 ways, 32 byte lines
44h code and data L2 cache, 1024 KB, 4 ways, 32 byte lines
45h code and data L2 cache, 2048 KB, 4 ways, 32 byte lines
Так ты уверен, что, если имелось ввиду именно это, то всё же неправильно?
Кстати, что ты не пробовал эт дело компильнуть?


 
jack128 ©   (2004-01-11 13:28) [4]


> Кстати, что ты не пробовал эт дело компильнуть?
CacheDescriptors[I] = $40..$45 Так? Никакие другие значения эти дискрипторы не могут принимать? Если так, то получается ты посмотриваешь все дискрипторы, в то время в результате учитываешь значение только последнего (CacheDescriptors[15]). Только из этих соображний я и сказал, что это наверника не правильно.


 
Delphino   (2004-01-11 13:39) [5]

Нет, не так. Дескрипторов - гораздо больше. Просто только эти предоставляют нужну мне на данный момент информацию - о кэше 2-го уровня.
Ну а asm... Я конечно понимаю, что форум по Дельфи и всё такое, но asm-то теоретически правильный?! Вообще это моя первая прога с использованием asm... Я в основном пишу на Delphi. И сижу на AMD. Посему выдаёт мне сия функция 0. Это правильно, но вдруг она и на инопроцессорных тачках нолик выдаст?!
Мож всё-таки попробуешь это у себя запустить, если сидишь на Intel"е? Буду УЖАСНО благодарен т.к мне эту шнягу уже завтра сдавать!


 
jack128 ©   (2004-01-11 14:13) [6]

к сожелению ничем помочь не могу, сам на дюроне сижу.


 
Delphino   (2004-01-11 14:51) [7]

дааа... Работа со всеми K7 моей проги отлажена и проверена на 100%. Уже всё протестировано. Эх... ещё бы мне достать бета-тестеров с K8 =)

Intel"овцы, отзовитесь!


 
cr   (2004-01-11 15:32) [8]

На интеле это тоже 0 дает .:(


 
cr   (2004-01-11 15:38) [9]

L2Cache := 0;
      for I := 1 to 15 do
        case CacheDescriptors[I] of
          $40:
            L2Cache := 0;
          $41:
            L2Cache := 128;
          $42:
            L2Cache := 256;
          $43:
            L2Cache := 512;
          $44:
            L2Cache := 1024;
          $45:
            L2Cache := 2048;
end;

Что-то я не понял - это опрашивает состояние дескрипторов
несколько раз и что ? Если например на 5 проходе ты получиш
$43 а на 6 $40 то L2Cache один черт будет равен 0 :)


 
Delphino   (2004-01-11 16:15) [10]

cr
Но ты почти никогда не сможешь получить на 5-ом проходе 40! Из дескрипторов почти всегда есть только один, если P4 без L3, то это вполне возможно, в противном случае нет. У тебя ведь P4, да? Спасибо тебе, кстати, огромное - я про эту фичу P4 забыл. А не мог бы проверить без опознания дескриптора $40?!


 
cr   (2004-01-11 17:36) [11]

да p4 1.7
Двенадцатый дескриптор равен $40

А вообще в десятичном виде:

1-80
2-91
3-102
4-0
5-0
6-0
7-0
8-0
9-0
10-0
11-0
12-64
13-112
14-122
15-0


 
Delphino   (2004-01-11 19:20) [12]

cr
Слушай, а ты будешь в нете ещё некоторое время? Я достал процедуру, совсем скоро допишу свою прогу и выложу её. Ты не сможешь её проверить? Определит всё!


 
Delphino   (2004-01-11 22:10) [13]

ПИПЛЫ help! Let Me Live! Надо протестить прогу, активно юзающую эту чёртову функцию! http://www.zcommunity.narod.ru/vcpuida48.rar
Помогите PLZ ! С меня ящики виртуального пива!



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
3-1077687094
Drozdov A
2004-02-25 08:31
2004.03.28
редактирование


9-1061994670
VitGun
2003-08-27 18:31
2004.03.28
OpenGL+WinAPI+collision=?


1-1078775266
xobbit
2004-03-08 22:47
2004.03.28
Окно в качестве фона


1-1078591736
Ivolg
2004-03-06 19:48
2004.03.28
Удаление


9-1062764173
cyborg
2003-09-05 16:16
2004.03.28
Гамма