Термин «узкое место фон Неймана» не говорит о архитектурах Гарварда и фон Неймана .Речь идет о всей идее компьютеров с хранимой программой, которую изобрел Джон фон Нейман.
Это в равной степени относится к обоим типам компьютеров с хранимой программой.И даже для процессоров с фиксированной (не хранимой) программой, которые хранят данные в оперативной памяти, как старые графические процессоры (без программируемых шейдеров).
Обычно это наиболее актуально при циклическом выполнении больших массивов, поэтому код помещается вкеш инструкций и не должен быть извлечен во время доступа к данным в любом случае.(Компьютеры, слишком старые, чтобы даже иметь кеши, были просто медленными, и мне неинтересно обсуждать семантику того, является ли медлительность, даже когда есть временная и / или пространственная локальность, узким местом для фон Неймана или нет.)
https://whatis.techtarget.com/definition/von-Neumann-bottleneck указывает на то, что кэширование и предварительная выборка являются частью того, как мы работаем над узким местом фон Неймана, и что более быстрые и широкие шины делают узкое место шире.Но только такие вещи, как Processor-in-Memory / https://en.wikipedia.org/wiki/Computational_RAM, по-настоящему решают эту проблему, когда ALU напрямую подключается к ячейкам памяти, поэтому не существует центрального узкого места между вычислениями и хранилищем, а объемы вычислительной емкости зависят от размера хранилища.Но фон Нейман с процессором и отдельной оперативной памятью работает достаточно хорошо для большинства вещей, которые скоро исчезнут (учитывая большие кеши и интеллектуальную аппаратную предварительную выборку, а также неупорядоченное выполнение и / или SMT, чтобы скрыть задержку памяти).
Джон фон Нейман был пионером в ранних вычислениях, и неудивительно, что его имя связано с двумя различными концепциями.
Гарвард против фон Неймана онаходится ли память программы в отдельном адресном пространстве (и отдельной шине);это подробности реализации для компьютеров с хранимыми программами.
Spectre: да, Spectre - только доступ к данным.Если вы можете получить атаку Spectre на программную память в архитектуре Гарварда, то она может выполняться так же, как на фон Неймане.
Я понимаю, что умозрительное выполнение более выгодно для фон Нейманаархитектура, но сколько?
Что?Нет, здесь нет никакой связи.Конечно, все высокопроизводительные современные процессоры - это фон Нейман.(С разделенными кэшами L1i / L1d, но память программ и данных не разделена, разделяя одно и то же адресное пространство и физическое хранилище. Разделенные кэши L1 часто называют «модифицированным Гарвардом», что имеет некоторый смысл на ISA, отличных от x86, где L1i не является 't согласован с кешами данных, поэтому вам нужно использовать специальные инструкции по очистке, прежде чем вы сможете выполнять вновь сохраненные байты в виде кода. x86 имеет когерентные кеши команд, поэтому это очень большая деталь реализации.)
Некоторые встроенные ЦП являются истинными гарвардскими,с памятью программы, подключенной к Flash, и адресным пространством данных, отображенным в RAM.Но часто эти процессоры имеют довольно низкую производительность.Конвейерное, но упорядоченное и использующее только прогноз ветвления для предварительной выборки команд.
Но если вы создали очень высокопроизводительный ЦП с полностью раздельными программами и памятью данных (поэтому копирование из одногодругой должен был пройти через ЦП), в сущности, ноль будет отличаться от современных высокопроизводительных ЦП. Пропуски кэша L1i редки, и неважно, конкурирует ли он с извлечением данных.
Полагаю, вы бы разбили кэши полностью;обычно современные процессоры имеют унифицированные кэши L2 и L3, поэтому в зависимости от рабочей нагрузки (большой размер кода или нет) большее или меньшее количество L2 и L3 может в конечном итоге содержать код.Возможно, вы все равно сделаете это с одним дополнительным битом в теге, чтобы отличить адреса кодов от адресов данных.