Страница: 1 | 2 |
Вопрос: Скорость
Добавлено: 11.06.04 04:59
Автор вопроса: Павел | Web-сайт:
Ответы
Всего ответов: 22
Номер ответа: 16
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #16
Добавлено: 22.06.04 01:35
> Скорость выполнения той или иной команды ещё зависит от того использует она кэш или нет.
Начиная с PII L2-кэш работает на скорости ядра, поэтому данное утверждение, мягко говоря, сомнительно.
Номер ответа: 17
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #17
Добавлено: 22.06.04 01:46
Моё утверждение сомнительно? Ты уверен?
Блин. Чё это меня на смех пробило.
Так как там насчёт парочки твоих примерчиков на АСМе. Я всё ещё жду.
Номер ответа: 18
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #18
Добавлено: 22.06.04 05:22
Не помню, с чего я взял такое утверждение Наверно, я хотел сказать, что этот случай отличается от случая с памятью, которая работает на более низкой частоте, потому что кэш работает на той же.
Если это ты об обсуждении на fds-net, тогда ты не прав, ибо кэш там никоим образом не светится - там все дело в микрокоде, конвейере и хитрых интеловских механизмах (читах).
О каких примерах на асме ты говоришь? (Кстати, не употребляй слово АСМ - это Association of Computer Machinery, форма проведения студенческих турниров по программированию )
Номер ответа: 19
Автор ответа:
Djoni
Вопросов: 6
Ответов: 35
Профиль | | #19
Добавлено: 22.06.04 08:55
с Вашего разрешения я вмешаюсь
> Скорость выполнения той или иной команды ещё зависит от того использует она кэш или нет.
Sharp, мне кажется тут все правильно, единственное, как я писал ранее, все команды без исключения засовываются в кеш.Т.е я хочу сказать если бы не было кеш то команды выполнялись естественно дольше, ровно на задержку обращения к памяти.
Номер ответа: 20
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #20
Добавлено: 22.06.04 10:18
Пожалуй, стоит определиться, что значит - команда, использующая кэш. Насколько мне известно, ни одна команда не может напрямую обращаться к кэшу, его содержимым полностью управляет микрокод проца.
Номер ответа: 21
Автор ответа:
Djoni
Вопросов: 6
Ответов: 35
Профиль | | #21
Добавлено: 22.06.04 10:37
Sharp, так команды же не используют кеш, просто после выборки инструкции сама команда и данные задвигаются в кеш. Все правильно я в начале уже тоже об этом говорил, что кеш аппаратный и управляется процом. Просто при выборке следуешей команды он проверяет кеш на наличие команды и данных в нем и ему не надо лезть к основной памяти тем самым он сокращает время обработки команды за счет сокращения времени доступа к памяти(кеш же тоже такая же память, только быстрая и находится на борту процессора). После выполнения команды он(проц) обновляет данные в кеше, если они например изменились в оперативке, то он их дублирует в кеше, другими словами если ты в программе оперируешь одними и теми же переменными, то он работает только с кешом.
а так я не пойму даже куда зашла тема
Номер ответа: 22
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #22
Добавлено: 23.06.04 00:26
Вроде как рассуждали о производительности Но поскольку Intel микрокод процессора не открывает и, видимо, не собирается, поэтому бессмысленно рассуждать более-менее уверенно количественно относительно того, как кэш (в частном случае короткие и длинные джампы) влияет на быстродействие. Особенно в многозадачной среде. Поэтому, пожалуй, верхом оптимизации будет являться оптимизация по тактам, предложенным в мануалах а при прочих равных из некоторых качественных соображениях (хотя, имхо, это уже шаманство). А вообще, лучшую оптимизацию должен проводить программист, т.е. вместо
#include <iostream.h>
void main(){
long y=0;
for(long i=0;i<1000000000;i++){
y++;
}
cout<<y<<endl;
}
писать
cout<<1000000000<<endl;