5

Я прочитал в учебнике Фонда вычислительной техники (Behrouz A. Forouzan), что программа модели фон Неймана должна выполняться последовательно, а современный компьютер выполняет код в наиболее эффективном порядке. Но это не говорит, что последовательный подход фон Неймана является наиболее эффективным.

Так современный компьютер выполняет код таким образом?

5 ответов5

5

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

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

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

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

2

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

Современные процессоры для настольных ПК, однако, будут переупорядочивать инструкции, основываясь на эффективности, но, насколько я понял, это не ключевой момент для архитектуры фон Неймана.

0

Программа модели фон Неймана должна выполняться последовательно

современный компьютер выполняет код в наиболее эффективном порядке.

Современные ЦП общего назначения по-прежнему потребляют один поток команд (в любом случае на каждый логический ЦП), и хотя ЦП Intel/AMD выполняют операции внутреннего переупорядочения (особенно медленные операции с памятью) для повышения производительности, это происходит только тогда, когда это не повлияет на результаты. потока инструкций.

Таким образом, современные процессоры все еще работают последовательно - я думаю, что официальным "обходным путем" к этому было введение логических процессоров - технология Intel Hyperthreading позволила многим операциям перекрываться и происходить одновременно, а интерфейс, который она представляла потоку команд, был вторым логическим процессором ,

Но это не говорит, что последовательный подход фон Неймана является наиболее эффективным.

Что ж, когда компьютеры становятся медиаустройствами, если ЦПУ приходится загружать большие объемы данных, но с простыми операциями, не требующими большого количества решений, чистый последовательный подход не эффективен. Таким образом, были введены SIMD-инструкции, которые позволяют ЦП загружать набор значений и запускать операции на всех из них за один цикл. И, конечно, графические процессоры работают по-разному, со многими, многими "ядрами", которые выполняют простые математические операции с огромными объемами данных в параллельном режиме.

-1

Из википедии:

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

-2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .