· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› К6 и время доступа к памяти

Посл.отвђт Сообщенiе


Дата: Ноя 13, 2004 02:16:28

идея с планировщиком, перебором всех процессов в списке ожидающих и успешно напоролась на пропускную способность памяти.
стал исследовать сабж и наткнулся на интересный факт
меряю время работы цикла из 30 нопов и 4 инструкций.
p0:
db 30 dup(90h)
add eax,[ebx]
add ebx,32
add ecx,8
jnz p0
время декодирования цикла никак не меньше 17 тактов, умножитель проц/шина=5.

значит в начале мы ждем 3 такта шины потом пытаемся читать, снова 3 такта ждем.
это потому что кэшу Л2 надо 3 цикла чтоб доставить остатки строки в проц.

то есть время работы цикла - Твнутр.проц+5(T(L2)+3);
потому что последние 4 инструкции не встанут на конвейере, кроме чтения памяти. это в теории, а на практике, щитая время по формуле

(dT/колво итераций)-15 получаю отрицательное число. читаю я с шагом 64 байта, так что попаданий в L1 нет.
ну плюс работает предвыборка(3-1-1-1-1-1-1)по промаху(2 строки грузятся вместо одной)

что может быть не так? код вроде верный весь


Дата: Ноя 13, 2004 02:28:29 · Поправил: Narkomanius

нашол ошибку. вдвое общитываюсь ровно. в пределах L1 - все точно по теории. но результат все равно плохой, потому что разрыв 100 тактов при выходе за первый кэш это ужасно.
единственное что могу предположить что идет подгрузка двух строк, а это 10-13 циклов шины, или 50-65 тактов. но все таки не 100 же


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.082