Гарвардская архитектура: как она улучшает скорость?
Я не понимаю разницы между архитектурами фон Неймана и Гарварда. Допустим, у вас есть эти две инструкции:
MOV топор, [адрес2]
MOV BX, топор
В гарвардской архитектуре процессор должен ждать два цикла, прежде чем выполнять вторую инструкцию: первую, чтобы декодировать первую инструкцию, и вторую, чтобы загрузить значение по адресу 2 в ax. Он не может выполнить инструкцию 2 немедленно, потому что она использует значение ax.
Таким образом, затраченное время будет таким же, как если бы это был фон Нейман, в этом более позднем случае первый цикл будет использоваться для декодирования инструкции, а второй цикл - для извлечения содержимого адреса 2 из памяти программы.
Что я не понимаю?
2 ответа
Разделение инструкций и данных легко оценить. Однако их поведение совсем другое.
Инструкции будут в основном проходить по линейной траектории и иметь очень похожие размеры.
Данные с другой стороны будут иметь полуслучайные местоположения, пакетные и разных размеров.
Попытка иметь одинаковую логику и размер шины для оптимизации в обоих случаях немного сложнее, чем иметь отдельные обработчики.
Ваш пример по номинальной стоимости кажется разумным вопросом, но с процессором Von Newmann загрузка памяти для завершения первой инструкции выдержит загрузку и декодирование второй инструкции. Тогда как на гарвардском процессоре вторая инструкция может быть загружена декодированной и наполовину обработанной, когда первая инструкция завершена.
Поток процессора фон Неймана
- загрузить инструкцию одну
- инструкция декодирования один
- загрузить данные из внешней памяти
- положить данные в регистр
- загрузить инструкцию два
- инструкция декодирования два
- скопировать регистр для регистрации
Гарвардский процессор потока
- загрузить инструкцию одну
инструкция декодирования один
3a. загрузить данные из внешней памяти в регистр3b. загрузить инструкцию два4а. положить данные в регистр4b. инструкция декодирования два- скопировать регистр для регистрации
Насколько я читаю, Гарвард может читать инструкцию и читать / записывать данные одновременно, а фон Нейман может только либо читать инструкцию, либо читать / записывать данные, но не одновременно.