Текущий архив: 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