Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ураков А.Р. Технологические особенности проектирования вычислительной техники.doc
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
839.17 Кб
Скачать

3.3. Заключение

Основные достоинства машины фон Неймана заключаются в следующем:

  1. простота реализации;

  2. универсальность;

  3. гибкость (это значит, что машина фон Немана позволяет легко встраивать в нее самые разнообразные технические решения).

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

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

4. Процессор

4.1. Постановка задачи

Мы снова возвращаемся к каретке в машине Тьюринга.

Если обобщить сведения о вычислительной машине, изложенные выше, мы придем к выводу о том, что действия, которые должен уметь выполнять наш процессор, можно разбить на три группы: 1) выполнять операции над данными; 2) понимать и исполнять команды, записанные на ленте; 3) обращаться с устройствами ввода/вывода. Рассмотрим их более подробно.

4.2. Выборка и обработка данных

Выполнение операций над данными, помимо простого их переписывания, заключается в выполнении каких-либо математических функций над ними. Из всего большого множества функций, используя небольшое число элементов переключения, технически реально организовать только несколько. По мере увеличения числа элементов переключения можно увеличивать количество реализованных в машине функций, но это количество все равно останется небольшим. Все остальные функции следует представить на основе уже реализованных. Кроме того, что исходных функций должно быть мало, они должны быть просты для изготовления (содержать мало элементов переключения) и удобны для последующего представления остальных функций. Минимальный набор таких функций обычно состоит из сложения, сдвига, инверсии и логического умножения (логическое умножение может быть заменено на логическое сложение, но на практике для удобства программирования реализуют обе эти простые функции). Как мы видим, первые две функции (сложение и сдвиг) арифметические, остальные логические (сдвиг двоичного числа влево на один разряд соответствует умножению этого числа на два). Устройство, выполняющее все эти функции, называется арифметико-логическим устройством (АЛУ). Такое АЛУ обычно имеет внутри себя сумматор, устройство сдвига, инвертор, логический сумматор, логический умножитель, два входа для операндов, выход для результата и вход, на который подается код той операции, которую следует выполнить, а значит и того узла, который будет задействован. Чтобы задействовать нужный узел, код операции следует дешифровать, соответственно, дешифратор входит в состав АЛУ.

АЛУ в машине фон Неймана оперирует только с двоичными числами и, естественно, имеет ограниченную и одинаковую разрядность для всех узлов. Эта же разрядность на входе и выходе АЛУ. Эта же разрядность и определяет разрядность процессора. Если в ходе выполнения операции суммирования или сдвига разрядности не хватило, информация об этом также поступает на выход АЛУ в виде так называемогобита переполнения. На основании этого бита может быть сделан вывод об адекватности результата. Для того, чтобы выполнять арифметические операции с числами большей разрядности, чем нам это позволяет АЛУ, мы должны выполнять операции по частям. Число разбивается по группам разрядов (количество разрядов в группе равно разрядности АЛУ), например, на две группы: старшие разряды и младшие разряды. Младшие разряды это те, которые имеют меньший вес в числе, при записи они располагаются правее. Операции с числами начинаются с младших разрядов (т.е. справа). При выполнении операции со старшими разрядами чисел нам необходимо знать было ли переполнение при операции с младшими. Для этого бит переполнения называетсябитом переносаи поступает на вход АЛУ.

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

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

Количество проводов шины данных называется разрядностью шины данных.Вполне естественно, если разрядность шины данных, разрядность процессора и разрядность ячеек памяти совпадают, но это не всегда так. По технологическим причинам разрядность шины данных может быть меньше разрядности процессора, тогда данные передаются в несколько этапов. Разрядность шины данных может быть больше разрядности процессора, это делается для увеличения скорости передачи данных.