Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 / Lectures / Lect1v12.doc
Скачиваний:
58
Добавлен:
28.05.2015
Размер:
453.63 Кб
Скачать

2. Структура цифровых эвм и принципы Дж. Фон Неймана

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

Одним из первых в 1938 г построил механический программируемый вычислитель Z1 немецкий инженер Конрад Цузе (Konrad Zuse, 1910–1995). Об этой разработке часто говорят, как о первом в мире программируемом компьютере.

Конрад Цузе занимался проектированием самолетов в немецкой фирме Henschel Aircraft. В его задачу входил расчет оптимальной конфигурации крыльев, что требовало обилия вычислений, поэтому он и занялся созданием устройства, способного эти вычисления автоматизировать. За первой моделью, которой заинтересовались военные, последовали Z2 (не завершена) и Z3 (1941). Последняя была выполнена на электромагнитных реле, работала с 22-разрядными двоичными числами с плавающей запятой, выполняла все арифметические действия за время: сложение – 0,3 с, умножение – 4-5 с. и имела оперативную память на 64 слова (1408 бит – на реле). Всего в машине было 2600 реле, в т.ч., 600 реле – в арифметическом устройстве.Z3 рассматривают как первую попытка реализации принципа программного управления, хотя и не в полном объеме. В частности, не предусматривалась возможность условного перехода. Программа хранилась на перфоленте, в роли которой использовалась перфорированная кинопленка.

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

После войны им были созданы еще несколько моделей. Кроме того, Цузе в 1945 году разработал первый в мире алгоритмический язык PlanKalkul. В этом языке, не привязанном ни к какой системе команд, была реализована идея подпрограмм с параметрами, введено понятие объект, предусмотрена работа с массивами, в том числе массивами подпрограмм.

Другим представителем электромеханических вычислительных машин явилась Mark I (ASCC – Automatic Sequence-Controlled Calculator – автоматический пошагово-управляемый калькулятор), разработанная в Гарвардском университете совместно с фирмой IBM под руководством Говарда Айкена (Howard Aiken, 1900–1973). Работы над ней велись в период с 1939 по 1944 годы. Это был первый программно управляемый вычислитель, получивший, в отличие от машин Цузе, широкую известность.

Машина имела длина 15 м и высоту 2,5 м. В ней имелись 72 счетчика (электромеханических 23-разрядных), образующих накапливающий сумматор, 60 регистров памяти на электромагнитных реле, блок умножения-деления и функциональные счетчики для логарифмических и тригонометрических функций. Машина обрабатывала 23-разрядные десятичные числа, и выполняла сложение и вычитание за 0,3 с, умножение за 5,7 с, а деление за 15 с. Команды считывались с бумажной перфоленты (каждая команда представлялось рядом из 24 пробивок на ленте) со скоростью до 200 шагов в минуту и выполнялись в порядке считывания. Данные считывались с перфокарт.

Позднее (в 1947 г.) был создан несколько более быстродействующий (сложение – 0,2 с, умножение – 0,7 с) вариант машины – Mark II.

Еще одним известным семейством электромеханических вычислителей были вычислители Модель-I (1938 г.) и Модель-II (1942 г.), Модель-III (1943 г.), созданные под руководством американского ученого Дж. Стибица (George Stibitz, 1904–1995) в компании Bell Telephone Laboratories. Модель-III обладала примерно такими же характеристиками, как и Mark-I Г.Айкена.

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

К первым представителям электронных вычислительных машин принято относить следующие разработки.

В период с1939 по 1941 годы в университете (тогда колледже) штата Айова Джон Атанасов (John Atanasoff, 1903–1995) с аспирантом Клиффордом Берри (Clifford Berry, 1918–1963) разработали специализированный вычислитель ABC (Atanasoff–Berry Computer), предназначенный для решения систем линейных алгебраических уравнений с 30 неизвестными. Вычислитель, по некоторым сведениям, содержащий до 300 электронных ламп, оперировал с 50-разрядными двоичными числами, в которые преобразовывались входные десятичные числа, вводимые с перфокарт. Память была построена на конденсаторах (знак заряда кодировал информацию), объединенных в барабан на 32 дорожки по 51 конденсатору в каждой. Промежуточные результаты записывались на перфокарты с помощью прожигания в них отверстий.

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

Тем не менее, ABC не является ЭВМ с программным управлением в принятом ныне понимании, его скорее следует отнести к специализированным электронным калькуляторам.

Еще одной долгое время закрытой разработкой является специализированная электронная вычислительная машина “Colossus” (“Колосс”), созданная в Англии в годы второй мировой войны (в 1943 г.) для декодирования шифрованных сообщений немецких военных. Эта ЭВМ была построена на электронных лампах, была программируемой и выполняла арифметические и логические операции. Разработана она была под руководством М.Ньюмана (Max Newman, 1987–1984) в Правительственной школе кодирования и шифрования (Government Code & Cipher School - GC&CS) в Блетчли-Парк, недалеко от Лондона. Изготовлен “Колосс” был инженером Почтового управления Великобритании Томми Флауэрсом. В группу разработчиков входил и сам Алан Тьюринг.

Машина содержала около 2000 электронных ламп и состояла из нескольких стоек высотой более 2 м и общей длиной более 5 м. Машина была построена за 11 месяцев. Всего (со второй, более быстродействующей модификацией) их было сделано 10 штук. Но по окончании войны по распоряжению У.Черчилля из соображений секретности были уничтожены и сами ЭВМ и их чертежи с описаниями. Позднее “Колосс” восстановили по единственному чертежу и нескольким фотографиям под руководством Тони Сейла, сотрудника Национального музея вычислительной техники Великобритании. На восстановление ушло 14 лет.

Наибольшую известность получил проект, развернутый в 1942 г. в университете Пенсильвании при поддержке Лаборатории баллистики армии США. Задач, для решения которых, в первую очередь, проектировался вычислитель, были связаны с баллистическими расчетами. Проект возглавили Дж. Мочли (John J. Mauchly, 1907–1980) и Дж. Экерт (J. Presper Eckert, 1919–1995). Первый из них в 1941 г. в Айове познакомился с работами Дж.Атанасова. В 1943 г. при участии Г.Голдстайна из Лаборатории баллистика был подписан правительственный контракт с Пенсильванским университетом, предусматривающий создание электронного цифрового интегратора и компьютера, названного впоследствии по первым буквам ЭНИАК (Electronic Numeric Integrator And Computer). Г.Голдстайн привлек к этим работам в качестве консультанта и знакомого с ним Дж. Фон Неймана (John von Neumann, 1903–1957).

Работы над ЭНИАК официально были завершены в конце 1945 г. Он был построен на 18000 электронных ламп, занимал помещение 135 м2, весил более 30 т и потреблял мощность 150 кВт. Машина работала на частоте 100 кГц и выполняла сложение за 0,2 мс, а умножение – за 2,8 мс, т.е. примерно в 1000 раз быстрее, чем современные ей электромеханические машины. Операции выполнялись в десятичной системе счисления на декадных счетчиках, образующих 20 десятиразрядных регистров (по 10 счетчиков в каждом), построенных на ламповых триггерах, что в то время было довольно дорого, а программирование производилось с помощью соединений, выполнявшихся проводами на коммутационной панели. Т.е., переход от одной программы к другой мог занять от 30 минут до 8 часов, требуя переключения до нескольких тысяч проводов.

Сразу стало очевидно, что такое программирование надо заменить хранением программы электронным способом. Да и надежность этой ЭВМ была невысокой, а поиск неисправностей мог занять от нескольких часов до суток, хотя одним из первых ее практических применений было использование при решении некоторых задач проекта атомной бомбы.

В СССР в 1947 году под руководством С. А. Лебедева начаты работы по созданию малой электронной счетной машины (МЭСМ), которая была введена в строй в 1951 году и стала первой ЭВМ не только в СССР, но и в Европе (исключая Англию).

Участие Дж. фон Неймана в проекте ЭНИАК знаменательно тем, что вместе со своими коллегами Г.Голдстайном и А.Берксом в июне 1946 г. он опубликовал отчет под названием “Предварительное обсуждение логического конструирования электронного вычислительного устройства” (A.W.Burks, H.H.Goldstine,J.vonNeumann,Preliminarydiscussionofthelogicaldesignofanelectroniccomputinginstrument, –Princeton, 1946). В этом отчете содержалось обоснование выбора конструкции ЭВМ, выполненное по результатам анализа сильных и слабых сторон ЭНИАК, рассматривалась ее структура, и предлагался ряд идей (принципов построения ЭВМ), оказавших серьезное влияние на развитие вычислительной техники. Как известно, много последующих поколений ЭВМ имели архитектуру, называемую “архитектурой фон Неймана”.

Обсуждаемую в отчете структуру ЭВМ можно изобразить так, как показано на рис. 2

Рис.2. Структурная схема цифровой вычислительной машины

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

Эта структура, возможно, в силу своей общности и достаточно высокого уровня представления, может быть в той или иной мере отнесена и к большинству современных ЭВМ. Хотя, конечно, более детальное рассмотрение позволяет найти в них и отличия от этой схемы, иногда, довольно значительные.

На рис.2 пунктиром показана связь между устройствами ввода-вывода (УВВ) и запоминающим устройством (ЗУ). Эта связь, которой не было в исходной структуре: ввод и вывод (обмен с ЗУ) осуществлялся через регистры арифметического устройства, – появилась в структуре ЭВМ достаточно быстро. Впоследствии управление этой связью было возложено на выделенные в самостоятельные блоки: каналы (контроллеры) ввода-вывода, в которые была перемещена из общего устройства управления соответствующая логика. Основная часть управление совместно с арифметическим (позже арифметико-логическим) устройством объединилось в блок, названный процессором. Так можно охарактеризовать наиболее общие изменения структуры фон Неймана.

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

Некоторые из этих рекомендаций впоследствии утратили свое значение, но часть их оказалась ключевой для последующих поколений ЭВМ. К этим положениям относятся следующие.

1. Машины на электронных элементах должны работать не в десятичной, а в двоичной системе счисления.

За последующие более чем полвека было предпринято много попыток найти более эффективный способ представления данных для выполнения арифметики в ЭВМ. Существовали различные варианты десятичных способов кодирования, троичные системы, системы на многозначных элементах, а также специальные представления – системы счисления в остаточных классах, системы на числах Фибоначчи. Однако двоичная система осталась основным вариантом, используемым в ЭВМ.

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

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

3. Программа, так же как и данные, записывается в двоичном коде. Это дает однотипное представление команд и данных, что, в свою очередь, приводит к следующему:

а) данные, константы, промежуточные и конечные результаты могут размещаться в одном ЗУ с командами программы;

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

По поводу первого из названных следствий можно сказать, что, хотя и программы и данные в большинстве ЭВМ хранятся сегодня в оперативной памяти вместе, на более высоком уровне памяти: в кэше первого уровня они хранятся в раздельных блоках, что позволяет уменьшить конфликты при обращении к памяти.

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

Кроме того, это свойство может служить основой для повреждения (в т.ч., умышленного) программ.

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

Иерархическая организация памяти имеет место практических в любой ЭВМ. Причем с течением времени количество уровней памяти в них увеличивается. Иногда в ЭВМ можно насчитать до десятка различных по своим характеристикам и функциональному назначению запоминающих устройств.

5. В машине должны реализовываться аппаратно параллельные операции сложения, вычитания и умножения. Требование аппаратной реализации операций деления и извлечения квадратного корня неочевидны.

Арифметико-логические устройства (СЛУ) большинства современных ЭВМ действительно выполняют параллельно основные арифметические операции (в том числе и деление). Операция извлечения квадратного корня, обычно, отсутствует. Тем не менее, параллельный характер выполнения операций над многоразрядными числами (а у Неймана с коллегами речь шла о 40-разрядных двоичных числах) не всегда имел место в ЭВМ. На начальных этапах их развития, когда электроника была относительно дорогой, часто встречались ЭВМ с последовательным (поразрядным) или последовательно-параллельным (например, побайтовым) выполнением операций в АЛУ.

Правда, как упоминалось выше, были среди рассматриваемых положений и такие, которые впоследствии не оправдались. Например, отсутствие необходимости аппаратной реализации операции с плавающей запятой. Как известно, практически все процессоры общего назначения современных ЭВМ содержат встроенные аппаратные средства (NPU – numeric processing unit) выполнения таких операций.

5.3. Several of the digital computers being built or planned in this country and England are to contain a so-called "floating decimal point". This is a mechanism for expressing each word as a characteristic and a mantissa-e.g. 123.45 would be carried in the machine as (0.12345,03), where the 3 is the exponent of 10 associated with the number. There appear to be two major purposes in a "floating" decimal point system both of which arise from the fact that the number of digits in a word is a constant, fixed by design considerations for each particular machine. The first of these purposes is to retain in a sum or product as many significant digits as possible and the second of these is to free the human operator from the burden of estimating and inserting into a problem "scale factors"- multiplicative constants which serve to keep numbers within the limits of the machine.

There is, of course, no denying the fact that human time is consumed in arranging for the introduction of suitable scale factors. We only argue that the time so consumed is a very small percentage of the total time we will spend in preparing an interesting problem for our machine. The first advantage of the floating point is, we feel, somewhat illusory. In order to have such a floating point one must waste memory capacity which could otherwise be used for carrying more digits per word. It would therefore seem to us not at all clear whether the modest advantages of a floating binary point offset the loss of memory capacity and the increased complexity of the arithmetic and control circuits.

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

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

В Советском Союзе работы в этом направлении были начаты несколько позже и первая ЭВМ (МЭСМ – малая электронная счетная машина) была создана в 1951 г. под руководством Сергея Алексеевича Лебедева.

Тем не менее, по прошествии нескольких десятилетий с момента опубликования работы Неймана стала усиливаться критика в адрес предложенной им архитектуры ЭВМ. Эта критика имеет различную направленность, а ключевые ее моменты сводятся, в основном, к следующему:

1. Оперативная (да и не только) память имеет линейную, или одномерную, адресацию, тогда как информационные объекты, с которыми имеют дело программы, могут значительно различаться по своей форме, представляя собой одномерные и многомерные массивы, списки, типы, структуры.

2. Характер связей между блоками в структуре ЭВМ жесткий и не адаптируется к особенностям решаемых задач.

3. Функционирование блоков ЭВМ развертывается последовательно во времени, как и выполняемые внутри них самих действия.

Каждый из указанных аспектов, конечно, имеет место. Однако, только второй из них, действительно, может рассматриваться как одно из направлений совершенствования архитектуры и находит отражение в исследованиях по системам с перестраиваемой (динамической) архитектурой.

Что касается линейной адресации памяти, то она представляет собой простейшую упорядоченность (проще которой может быть только неупорядоченное множество), позволяющую различать отдельные элементы запоминающего устройства, из которых на программном уровне и компонуются структуры данных. Конечно, существуют исследования по альтернативным вариантам организации памяти ЭВМ. Однако достаточного распространения в практике построения последних они не получили.

Что касается последовательного характера функционирования блоков ЭВМ и межблочного взаимодействия, то они более обусловлены алгоритмическим характером логики процессов, протекающих в ЭВМ. Хотя, конечно, работы по созданию параллельных вычислительных систем и развития внутреннего параллелизма в устройствах ЭВМ представляют одно из магистральных направлений развития их архитектуры.

Соседние файлы в папке Lectures