История изменений
Исправление www_linux_org_ru, (текущая версия) :
Не будет. Но RISC тут не причем - это шина памяти и кэш
у меня это, похоже, отнюдь не тормоза на шине
я гоняю этот тест с чуть другими количеством итераций, так вот:
хард-версия делает чуть больше 3Г итераций с 8МБ на фрейм, т.е. читает 26 ГБ и записывает 26 ГБ за 13 секунд => 4ГБ/с на шине
софт-версии делают 3Г итераций с 4МБ на «фрейм», т.е. читает 13 ГБ и записывает 13 ГБ за 8.5 секунд => 3 ГБ/с на шине
учитывая, что максимальный объем стека составляет всего 1МБ, т.е. все хозяйство влезает в кэш (и даже в быструю его часть), говорить про тормоза на шине, по-моему, смешно
да даже последовательное чтение или запись памяти даст скорость на шине существенно больше, чем 4ГБ/с
моя версия — то, что на чтение лишних 13 ГБ и запись лишних 13 ГБ в хард-версии тратятся *команды* процессора и значит лишние такты (очень ориентировочно 26ГБ/4Б=6.5 Гигатактов, что довольно близко к 4.5 секундам), а шина тут не лимитирует
з.ы. «8МБ на фрейм» определено исходя из объема стека в 8МБ и того, что глубина рекурсии в 900К вызовов еще не приводит к sigsegv
Исходная версия www_linux_org_ru, :
Не будет. Но RISC тут не причем - это шина памяти и кэш
у меня это, похоже, отнюдь не тормоза на шине
я гоняю этот тест с чуть другими количеством итераций, так вот:
хард-версия делает чуть больше 3Г итераций с 8МБ на фрейм, т.е. читает 26 ГБ и записывает 26 ГБ за 13 секунд => 4ГБ/с на шине
софт-версии делают 3Г итераций с 4МБ на «фрейм», т.е. читает 13 ГБ и записывает 13 ГБ за 8.5 секунд => 3 ГБ/с на шине
учитывая, что максимальный объем стека составляет всего 1МБ, т.е. все хозяйство влезает в кэш (и даже в быструю его часть), говорить про тормоза на шине, по-моему, смешно
да даже последовательное чтение-запись памяти даст скорость существенно больше, чем 4ГБ/с
моя версия — то, что на чтение лишних 13 ГБ и запись лишних 13 ГБ в хард-версии тратятся *команды* процессора и значит лишние такты (очень ориентировочно 26ГБ/4Б=6.5 Гигатактов, что довольно близко к 4.5 секундам), а шина тут не лимитирует
з.ы. «8МБ на фрейм» определено исходя из объема стека в 8МБ и того, что глубина рекурсии в 900К вызовов еще не приводит к sigsegv