2_Машина Фон Неймана (975799), страница 3
Текст из файла (страница 3)
Регистр УУ с именем RA называется счётчиком адреса или регистром адреса(в англоязычной литературе его часто обозначают IP – instruction pointer), при выполнении текущейкоманды в него по определённым правилам записывается адрес следующей выполняемой команды(первую букву в сокращении слова регистр мы будем в дальнейшем изложении часто записывать латинской буквой R).Рассмотрим, например, схему выполнения команды, реализующей оператор присваивания с операцией сложения двух чисел z:=x+y. Здесь x, y и z – адреса ячеек памяти, в которых хранятся, соответственно, операнды и будет помещён результат операции сложения (предположим, что такая команды есть в языке машины).
После получения из памяти такой команды на регистр команд RK, УУпоследовательно посылает управляющие сигналы в АЛУ, предписывая ему сначала считать операндыx и y из памяти и поместить их на регистры R1 и R2. Затем по следующему управляющему сигналуустройства управления АЛУ производит операцию сложения чисел, находящихся на регистрах R1 иR2, и записывает результат на регистр сумматора S.
По следующему управляющему сигналу АЛУпересылает копию регистра S в ячейку памяти с адресом z.1 Ниже приведена иллюстрация описанного примера на языке Паскаль, где R1, R2 и S – переменные, обозначающие регистры АЛУ, ПАМ –массив ячеек, условно обозначающий память ЭВМ, а – бинарная операция (в нашем случае этосложение, т.е. = +).R1 := ПАМ[x]; R2 := ПАМ[y]; S: = R1R2; ПАМ[z] := S;В дальнейшем конструкция ПАМ[А], как это принято в научной литературе по архитектуре ЭВМ,для краткости будет обозначаться как <А>, тогда наш пример выполнения команды перепишется так:R1: = <x>; R2: = <y>; S: = R1R2; <z> := S;Опишем теперь более формально шаги выполнения одной команды в машине Фон Неймана:1.
RK := <RA>; считать из ячейки памяти с адресом RA команду на регистр команд RK;2. RA := RA+1; увеличить счётчик адреса на единицу;3. Выполнить очередную команду, хранящуюся в регистре RK.Затем по такой же схеме из трёх шагов выполняется следующая команда и т.д. Заметим, что послевыполнения очередной команды ЭВМ "не помнит", какую именно команду она только что выполнила.Напомним, что по такому же принципу выполняли свои "команды" и такие известные абстрактныеисполнители алгоритмов, как машина Тьюринга и Нормальные алгоритмы Маркова.Итак, если машинное слово попадает на регистр команд, то оно интерпретируется УУ как команда, а если слово попадает в АЛУ, то оно по определению считается числом.
Это позволяет, например,складывать команды программы как числа, либо выполнить некоторое число как команду. Разумеется,обычно такая ситуация является семантической ошибкой, если только специально не предусмотрена программистом для каких-то целей (мы иногда будем оперировать с командами, как с числами, в одной изнаших учебных машин).Современные ЭВМ в той или иной степени нарушают практически все принципы Фон Неймана. Исключение, пожалуй, составляют только принцип автоматической работы, он лежит в самой основе определения ЭВМ как устройства для автоматической обработки данных, и принцип хранимой программы.Например, существуют компьютеры, которые различают команды и данные.
В них каждая ячейка основной памяти кроме собственно машинного слова хранит ещё специальный признак, называемый тэгом1В схеме на рис. 2.1 от АЛУ к УУ тоже ведёт тонкая стрелка, однако она определяет не управляющийсигнал (так как АЛУ не может "командовать" УУ), а информационный, с помощью таких сигналов АЛУ "рапортует" УУ, что заданное действие выполнено, или при его выполнении возникла ошибка.6(tag), который и определяет, чем является это машинное слово.1 Так нарушается принцип неразличимости команд и чисел.
В такой архитектуре при попытке выполнить число как команду, либо складыватькоманды как числа, центральным процессором будет зафиксирована ошибка. Очевидно, что это позволяет повысить надёжность программирования на языке машины, не допуская, как часто говорят, случайного"выхода программы на константы".Практически все современные ЭВМ нарушают принцип однородности и линейности памяти. Памятьможет, например, состоять из двух частей со своей независимой нумерацией ячеек в каждой такой части(с такой архитектурой мы вскоре познакомимся); или быть двумерной, когда адрес ячейки задаётся неодним, а двумя числами; либо ячейки памяти могут вообще не иметь адресов, такая память называетсяассоциативной2 и т.д.Все современные достаточно мощные компьютеры нарушают и принцип последовательного выполнения команд: они могут одновременно выполнять несколько команд как из одной программы, так, иногда, и из разных программ (такие компьютеры могут иметь несколько центральных процессоров, а такжебыть так называемыми конвейерными ЭВМ, их мы рассмотрим в конце нашего курса).Особо следует отметить, что в архитектуре машины Фон Неймана зафиксированы и другие принципы, которые в работе самого Фон Неймана явно не формулировались, так как, безусловно, считались самоочевидными.
Так, например, предполагается, что во время выполнения программы не меняется числоузлов компьютера и взаимосвязи между ними, не меняется число ячеек в оперативной памяти. Далее, например, считалось, что машинный язык при выполнении программы не изменяется (например, "вдруг" непоявляются новые машинные команде) и т.д.3 В то же время сейчас существуют ЭВМ, которые нарушаюти этот принцип. Во время работы одни устройства могут, как говорят, отбраковываться (например, отключаться для ремонта), другие – автоматически подключаться. Кроме того, во время работы программымогут, как изменяться, так и появляются новые связи между элементами ЭВМ (например, в так называемых транспьютерах). Существуют и компьютеры, которые могут менять набор своих команд, они называются ЭВМ с микропрограммным управлением, о них немного рассказывается в конце этой книги.В заключение нашего краткого рассмотрения машины Фон Неймана ещё раз обратим внимание наодно важное свойство компьютеров, которое часто ускользает от внимания читателей.
Закончив выполнение текущей команды, машина начисто ''забывает" о том, что это была за команда, где она располагалась в памяти, с какими операндами работала и т.д. И, хотя некоторые команды могут изменять значения специальных флагов (или регистра результата выполнения команды), но это не меняет сути дела,т.к.
не сохраняется информации, какая именно команда и когда изменила эти значения. Выполнениекаждой следующей команды практически начинается "с чистого листа". Это важное свойство позволяет,например, надолго прерывать выполнение программы, запомнив относительно небольшой объём информации (текущее состояние регистров компьютера, сведения об открытых файлах и т.д.).
В дальнейшем влюбой момент возможно возобновление счёта этой программы с прерванного места (разумеется, самапрограмма и её данные в памяти компьютера должны сохраниться, или же должны быть восстановлены впрежнем виде). Как мы узнаем дальше в нашем курсе, это свойство является основой для так называемогомультипрограммного режима работы компьютера.На этом мы закончим краткое описание машины Фон Неймана и принципов её работы. Первая ЭВМ,построенная на основе принципов Фон Неймана, называлась EDVAC (Electronic Delay Storage Automatic Calculator – автоматический вычислитель с электронной памятью на линиях задержки4) [3].Компьютер EDVAC был построен в 1949 году в Англии М.Уилксом (при участии знакомого Вам поего знаменитой машине А.Тьюринга).
EDVAC была одноадресной ЭВМ (что это такое мы вскоре узнаем), которая работала в двоичной системе счисления со скоростью примерно 100 операций в се1Для экономии парями современные компьютеры могут приписывать такой тэг не каждой ячейке в отдельности, а сразу целой последовательности ячеек, называемой сегментом. Таким образом, различают, например, сегменты команд и данных, при этом выполнение данных в виде команды может трактоваться как ошибка.2Поиск нужной ячейки в ассоциативной памяти производится не по её адресу, а по содержимому хранящегося в этой ячейки машинного слова (например, считать из памяти первое машинное слово, хранящее целоечисло, кратное пяти и т.п.).3В теории алгоритмов аналогом такого компьютера, нарушающего эти принципы, является, например, такая экзотическая модификация машины Тьюринга, у которой во время работы могут появляться и исчезатьстроки и столбцы её таблицы и изменяться содержимое клеток этой таблицы.4Динамическая оперативная память этой ЭВМ была построена на так называемых ртутных линиях задержки – это длинные металлические трубки, наполненные парами ртути.