Оптимизация работы с памятью на P4 по скорости

Тема в разделе "WASM.A&O", создана пользователем Celeron2400, 5 ноя 2004.

  1. Celeron2400

    Celeron2400 New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2004
    Сообщения:
    1
    Предполагается обрабатывать два массива, каждый длиной до 4к. Вопросы:

    1. Дает ли выигрыш в тактах загрузка из памяти и запись с помощью XMM регистров по сравнению с четырьмя загрузками/записью 32-битными регистрами?

    2. При использовании prefetchnta как определить, за сколько тактов до реального обращения к памяти нужно использовать эту команду?

    3. При использовании prefetchnta [esi] в линию кеша загружается 64 байта, начинающихся с адреса, указанного в esi, или выровненого по 16-байтной границе?

    4. Следует ли выравнивать метку начала цикла по границе (по какой именнои в каких случаях, какой выигрыш в тактах) и как осуществить выравнивание, если код пишу как ассемблерную вставку в Borland Delphi7?



    Мануалы с интеловского сайта читал, но кеширование данных не совсем освоил.
     
  2. lis

    lis New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2004
    Сообщения:
    23
    Адрес:
    Russia
    Привет! Буду пока краток, т.к. новый год на носу. С наступающим!

    1. Загрузка в XMM регистры даёт выигрыш лиш в том случае, если память выровнена по 16 байтной границе. Иначе, в процессоре возникают исключения, что задерживает обработку на 200 тактов.

    2. Уточню после НГ. В кеш нужно грузить в то время пока выполняются арифметические и др. команды. Пример позже.



    4. Лучше выравнивай по границе 16 байт.

    Смотрю ты давно здесь не был. Заходи пообщаемся.