Она не сможет использовать ресурсы новых процессоров, так что быстрее - очень относительно. И кстати многопоточные приложения в ней априори тупить будут.
Ну да, часть новых фич не увидит. Но то, что будет работать быстрее на каком нибудь не самом старом i5, чем на P4 - я уверен..
Палка о двух концах. У процессоров есть набор инструкций, и есть ограничения по размеру чипа (количество транзисторов), по тепловыделению и ещё много чего. Каждая инструкция процессора декодируется и выполняется на своих аппаратных ресурсах. Так вот, эти ресурсы надо распределять и оптимизировать. Но оптимизировать бездумно всё - это слишком дорого. Гораздо лучше делать так, чтобы большинство программ работали лучше, чем на прошлых моделях, а это значит, что нужно иметь профиль (то есть частоту в типовых сценариях) использования для большинства пользовательских задач. А ещё у новых процессоров более эффективно реализуется параллелизм на уровне инструкций (то есть если в программе идут подряд несколько инструкций, которые не зависят от результатов работы друг друга, то процессор их может выполнить параллельно, а не последовательно, как на более ранних ядрах). У всех инструкций есть такие метрики, как latency (время выполнения) и throughput (степень параллелизма), которые могут регулироваться используемыми для реализации ресурсами.
Далее, типовой сценарий - переключение в режим ядра и в пользовательский режим - оптимизируется в процессорах, но иногда под них заводятся новые инструкции для получения максимальной выгоды, и новые операционные системы используют этот новый более быстрый механизм процессора, а старый эмулируется с помощью нового внутри в самом процессоре, но это бывает медленнее, чем было раньше.
Ещё один момент - новые инструкции вместо старых. Была такая штука в старых процах, как сопроцессор x87 для вычислений над числами с плавающей точкой. Сейчас вместо них используются другие, более быстрые варианты - SSE, AVX и т.п., которые мало того что считают быстрее, так ещё и считают параллельно большие блоки (это называется SIMD - single instruction multiple data - одинаковая инструкция для множества данных), например, попарно перемножить 8 пар чисел за раз вместо перемножения 8 раз по 1 паре с загрузкой-вырузкой данных. Новые программы создаются компиляторами, которые умеют использовать такие инструкции, но они должны быть реализованы в процессоре. Поэтому вывод: хотите быструю математику - используйте новое железо. Например, в астрософте это очень и очень актуально. Есть альтернатива: реализация одного и того же кода несколько раз в одной программе для разных вариантов поддерживаемого железа, чтобы в одном случае использовать современные средства, если нет, то откатываться на реализацию предыдущего поколения железа, и так далее, но это заметно увеличит объём программы. Есть другие техники типа JIT, но этот пласт слишком велик, чтобы его начинать обсуждать.
И да, забыл ещё одну важную особенность современных процессоров: спекулятивное выполнение. Например, если у нас есть две ветки, которые выполняются в зависимости от условий, то иногда бывает выгоднее посчитать оба варианта и выбрать подходящий, чем делать переход со сбросом конвейера, предвыборки и т.п. Здравствуйте уязвимости типа Spectre и родственные им.
Теперь что касается криптографии, это вообще отдельная песня. К ним вообще предъявляются особые требования, которых нет к обычному софту. Начнём с того, что они обычно очень нагружены в части целочисленной математики, но при этом стандартизованы. Да, процессоры имеют криптографические модули, которые берут вычисления на себя, но если их нет, приходится криптографию реализовывать программно, и тут очень сильно начинает сказываться такой фактор, как наличие вторичных каналов получения информации, по которым могут утекать данные. Например у нас есть алгоритм, который использует ветвления. Предположим, что характер его такой, что повторяющийся бит данных не даёт перехода, а изменяющийся - даёт, то есть последовательности 00+11 отличаются от последовательности 01+10 по времени выполнения участка программы, и с помощью средств профилирования процессора мы можем понять все изменения данных. И у нас остаётся всего 2 варианта: последовательность началась с 0 или с 1 - и мы знаем всю последовательность. Такая криптография моментально перестала быть стойкой. То есть нужно, чтобы вычислительные варианты статистически не были различимыми.
За сим замолкаю, надеюсь, идеи понятны.