Есть ли у архитектуры Гарварда узкое место фон Неймана? - PullRequest
0 голосов
/ 26 февраля 2019

Из названия и этой статьи Я чувствую, что ответ - нет, но я не понимаю, почему.Узким местом является то, насколько быстро вы можете извлекать данные из памяти.Кажется, не имеет значения, можете ли вы получить инструкцию одновременно.Вам все еще не нужно ждать, пока данные поступят?Предположим, что выборка данных занимает 100 процессорных циклов, а выполнение команды - 1, возможность сделать этот 1 цикл заранее не кажется огромным улучшением.Что мне здесь не хватает?

Контекст: я наткнулся на эту статью , в которой говорится, что ошибка Спектра не будет исправлена ​​из-за спекулятивного выполнения.Я думаю, что спекулятивное выполнение, например предсказание ветвлений, имеет смысл и для архитектуры Гарварда.Я прав?Я понимаю, что спекулятивное исполнение более выгодно для архитектуры фон Неймана, но насколько?Может кто-нибудь дать приблизительное число?В какой степени мы можем сказать, что Призрак останется из-за архитектуры фон Неймана?

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Архитектура Гарварда , разделенная памятью команд и данных, является смягчением узкого места фон Неймана.Исходное определение узкого места в Backus решает несколько более общую проблему, чем просто инструкция или выборка данных, и говорит об интерфейсе ЦП / памяти.В предыдущем абзаце денежная цитата Backus говорит о том, как посмотреть реальный трафик на этой шине,

По иронии судьбы, большая часть трафика - это не полезные данные, а просто именаданные, которые в большинстве своем состоят из имен, а также операций и данных, используемых только для вычисления таких имен.

В архитектуре Гарварда с отдельной шиной ввода / вывода это не изменится.Он по-прежнему будет в основном состоять из имен.

Так что ответ будет сложным.Гарвардская архитектура смягчает узкие места фон Неймана, но не решает их.Вкратце, это более быстрое узкое место фон Неймана.

0 голосов
/ 28 февраля 2019

Термин «узкое место фон Неймана» не говорит о архитектурах Гарварда и фон Неймана .Речь идет о всей идее компьютеров с хранимой программой, которую изобрел Джон фон Нейман.

Это в равной степени относится к обоим типам компьютеров с хранимой программой.И даже для процессоров с фиксированной (не хранимой) программой, которые хранят данные в оперативной памяти, как старые графические процессоры (без программируемых шейдеров).

Обычно это наиболее актуально при циклическом выполнении больших массивов, поэтому код помещается вкеш инструкций и не должен быть извлечен во время доступа к данным в любом случае.(Компьютеры, слишком старые, чтобы даже иметь кеши, были просто медленными, и мне неинтересно обсуждать семантику того, является ли медлительность, даже когда есть временная и / или пространственная локальность, узким местом для фон Неймана или нет.)

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 может в конечном итоге содержать код.Возможно, вы все равно сделаете это с одним дополнительным битом в теге, чтобы отличить адреса кодов от адресов данных.

...