# Вопрос 1: Принципы фон Неймана
Фон Нейман впервые предложил в 40-х годах XX века концепцию хранимой программы, основные принципы которой заключаются в следующем:
Двоичное кодирование: вся информация (как команды, так и данные) кодируется двоичными циф- рами 0 и 1, поскольку двоичное кодирование по теории информации близко к оптимальному, а кроме того, легче реализовать элементы с двумя устойчивыми состояниями (магнитные сердечники, триггеры).
Программное управление: команды программы, так же как и данные, хранятся в памяти машины; хранимая программа позволяет выполнять команды в естественном порядке следования либо осуществлять произвольный переход от одной команды к другой.
Однородность памяти: Вид хранимой информации (команды или данные непосредственно в па- мяти) неразличим, а зависит от последующего использования; команды могут обрабатываться так же, как и числовые данные (модификация команд – сейчас не поощряется), либо порождать в процессе обработки другие команды (трансляция – широко применяется).
Адресность: в команде указываются не сами данные, а адреса их размещения в памяти.
Основные особенности первых машин, построенных по изложенным принципам и называемых сейчас машинами фон неймановского типа, состоят в следующем:
1) наличие единого вычислительного устройства, включающего один процессор, память и некоторые внешние устройства;
2) использование линейной структуры адресации памяти со словами фиксированной длины;
3) централизованный принцип управления выполнением программы по последовательному алгоритму;
4) низкий уровень машинных команд, позволяющих выполнять только элементарные операции.
Для таких машин «узким» местом», ограничивающим производительность, является память и каналы связи: как данные, так и команды должны последовательно выбираться из памяти и передаваться между устройствами. Для повышения производительности в фон неймановских машинах применяются:
увеличение разрядности обработки данных (16 бит -> 32 и 64 бит);
активное использование конвейеризации при выборке и обработке команд;
активное использование кэш-памяти (Cache – тайник, скрытый), т.е. модулей памяти, которые яв- ляются буферными между процессором и оперативной памятью.
Кроме того, наряду с Принстонской архитектурой, подразумевающей хранение команд и данных в общей памяти, распространяется Гарвардская архитектура, использующая раздельное хранение команд и данных.