Я познаю мир. Компьютеры и интернет - Зигуненко Станислав Николаевич 5 стр.


И вот в начале 50–х годов XX века появились первые советские электронные вычислительные машины. Прежде всего следует вспомнить о малой электронной вычислительной машине «МЭСМ», построенной в Киеве под руководством С. А. Лебедева, действительного члена Академии наук Украины.

Вскоре Сергей Алексеевич переехал в Москву, где организовал и возглавил Институт точной механики и вычислительной техники Академии наук СССР. Здесь под его руководством в 1952 году была завершена работа над «Быстродействующей электронной счетной машиной Академии наук СССР», или «БЭСМ».

«БЭСМ» имела память в 2048 ячеек и к моменту ввода в эксплуатацию была самой быстродействующей машиной в мире, производя 8 тыс. операций в секунду.

Примерно в одно время с машиной «БЭСМ» была завершена работа над вычислительной машиной средней мощности «М–2», созданием которой в лаборатории Энергетического института им. Г. М. Кржижановского руководили член–корреспондент Академии наук СССР И. С. Брук и М. А. Карцев.

Через год после завершения «БЭСМ» и «М–2» была построена еще одна советская электронная вычислительная машина – «Стрела», главным конструктором которой был Герой Социалистического Труда Ю. Я. Базилевский. Причем в отличие от «БЭСМ» и «М–2» «Стрела» была построена уже в нескольких экземплярах.

В 1954 году под руководством Б. И. Рамеева была завершена работа над машиной «Урал–1». А вскоре ей на смену пришла ЭВМ «Урал–2». Затем семейство «Уралов» пополнилось моделями «Урал–3» и «Урал–4»...

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

В Киеве работы над ЭВМ сосредоточились в созданном в 1957 году Институте кибернетики, который возглавил 34–летний доктор физико–математических наук В. М. Глушков, впоследствии ставший академиком. Первая машина вновь созданного института, получившая название «Киев», была закончена в начале 60–х годов.

Затем последовали новые разработки, среди которых наибольшее признание получили ЭВМ «Проминь» и «МИР» (машина инженерных расчетов). Они были предназначены для широкого использования в конструкторских бюро и лабораториях.

В Минске под руководством В. Пржиялковского был создан класс машин, названных именем столицы БССР.

В Ереванском институте математических машин также были сконструированы два вида ЭВМ – «Раздан» и «Наири».

Затем, вслед за США, Англией и СССР началась разработка ЭВМ и в других странах – Голландии, Австралии, Польше, Чехословакии...

Любая вычислительная машина – большая она или маленькая – схематически выглядит одинаково. Машина имеет дело исключительно с числами. Эти числа хранятся, электронными схемами, которые называются регистрами. Физические размеры регистра определяют значение наибольшего числа, которое тот может запомнить. Обычно все регистры одной модели компьютера имеют одинаковый размер, и именно он в значительной степени определяет структуру машины. У больших машин обычно и регистры большие, а у микрокомпьютеров, как правило, маленькие.

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

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

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

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

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

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

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

В наши дни стоимость больших ЭВМ заметно снизилась, но системы разделения времени по–прежнему имеют довольно широкое распространение. Они теперь могут использоваться для совместного применения больших баз данных (глупо ведь устраивать большую библиотеку для одного человека) или служить дорогостоящими лазерными принтерами, которые печатают тексты настолько быстро, что, работая на одного пользователя, они опять–таки 99,9% своего рабочего времени будут простаивать.

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

А пока давайте вернемся снова в недра нашего компьютера и посмотрим, что в нем происходит по мере поступления данных и команд.

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

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

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

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

И это еще не все. Каждая команда, попадающая в регистр команд, состоит, в свою очередь, из двух частей – операции и операнда.

Если провести аналогию с командами, которые отдает в армии командир своим подчиненным, то операцию и операнд можно рассматривать как сказуемое и дополнение в обычном предложении. Ведь в языке команд очень широко распространено повелительное наклонение, а подлежащее в них очень часто опускается, например: «Равняйсь! Смирно!..»

Пусть в нашем конкретном случае операция обозначена числом 10, а операнд – числом 0647. Операция 10 в перечне команд, допустим, означает «загрузить». Тогда вся команда в переводе с машинного языка может означать: «Считать число, хранящееся в ячейке памяти под номером 0647 и загрузить», то есть записать его в регистр–накопитель. Операция 11 может означать «прибавить». Тогда команда, скажем, типа 11.0885 означает: «Прибавь число, хранящееся в ячейке 0885, к содержимому регистра–накопителя и оставь полученную сумму в регистре–накопителе». Команда 12 может означать «запомнить». И тогда 12.2936 будет означать: «Содержимое регистра–накопителя надо записать в ячейку 2936». При этом все, что хранилось в этой ячейке прежде, стирается навсегда.

Чтобы иметь некоторую свободу передвижения, во. многих машинных языках предусмотрены команды «перехода» и «условного перехода». Если код команды перехода, например, 15, то команда 15.0073 будет означать: «Продолжай выполнять программу, начиная с ячейки 0073». При этом мы можем поставить и некое условие перехода к данной ячейке. Например, команда 16 может означать в переводе на наш обычный язык: «Переход по указанному адресу может быть осуществлен лишь в том случае, если в накопителе нуль». В противном случае перехода не произойдет, машина будет продолжать выполнение команд по тому порядку, как они записаны в программе. Все эти команды, которые мы только что описали, сами по себе довольно примитивны. Но, составляя из них длинные логические цепочки, можно заставить машину выполнить и самую сложную операцию.

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

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

Но и при переходе от языка буквенных выражений к языку цифр, т. е. языку машинных кодов, перевод понятий человеческой логики в логику машинную еще не закончен. Как мы уже говорили, машине оказалось удобнее работать с двоичной системой исчисления, машинные же коды составлены в десятичной. Так машина может еще раз осуществить перевод, записав привычные нам цифры вот таким образом: 1=1, 2=10, 3=11, 4=100 и т. д.

Один двоичный разряд (0 или 1) называется битом; бит содержит наименьшее возможное количество информации. Обычный размер машинного регистра – 16 двоичных разрядов. Наибольшее число, которое может быть в нем записано, – 16 единиц подряд, что в переводе на десятичную систему исчисления означает 65535.

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

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

В их основе лежит логическое исчисление, созданное еще в 50–е годы XIX столетия английским математиком Джорджем Булем. Согласно разработанным им правилам, каждому из высказываний приписывают одно из двух возможных значений: «истинно» или «ложно». Кроме того, имеются три связки: «И», «ИЛИ» и «НЕ». Их достаточно, чтобы строить описания нашего мира, скажем, такого типа: «Сегодня я пойду играть в футбол, ЕСЛИ по телевизору не будут показывать мультиков И будет подходящая погода».

Аналогично обстоит дело со связкой «ИЛИ» для высказываний, например, такого рода: «В нашей команде будет хороший вратарь, ЕСЛИ придут играть Витя ИЛИ Вова». Конечно, на футбольное поле могут прийти и оба, и связка «ИЛИ» принимает во внимание и такую возможность. И наконец, проиллюстрируем возможности связки «НЕ»: «Мы, конечно, начнем играть сразу, ЕСЛИ поле НЕ будет занято другими командами».

Схема, поясняющая действие электронных логических ключей

Все эти высказывания можно без особого труда реализовать с помощью электронных схем. Для этого договоримся интерпретировать истинное высказывание как положение «включено» или «1» и соответственно ложное высказывание будет интерпретироваться как «выключено» или «О».

В таком случае высказывание «И» соответствует двум ключам, соединенным последовательно. На приведенной схеме лампочка загорится, ЕСЛИ будет включен ключ А, и ключ В.

Связка «ИЛИ» соответствует параллельному включению тех же ключей. Здесь лампочка загорится лишь в том случае, если включен или ключ А, или ключ В, или оба вместе.

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

Назад Дальше