Многие компьютеры могут быть связаны между собой в единые вычислительные комплексы или сети. Для этого служат периферийные устройства, которые с помощью кабельных или даже спутниковых линий связи объединяют компьютеры, расположенные даже на разных континентах. Какие преимущества это дает, мы еще с вами обсудим.
А пока давайте вернемся снова в недра нашего компьютера и посмотрим, что в нем происходит по мере поступления данных и команд.
В памяти машины, как вы уже поняли, записываются и данные, с которыми ЭВМ должна работать, и программа–руководство, согласно которой она ведет их обработку. По своему виду один массив информации совершенно неотличим от другого. Дело в том, что это только для нашего удобства машина приучена программистами реагировать на определенные слова и символы. Внутри ЭВМ все они опять–таки переводятся в числа специальными подпрограммами, и уже с этими числами машина ведет дальнейшую работу. Например, команда «сложить» может быть обозначена числом 11, «вычесть» – 13 и т. д.
Так получается потому, что машинная логика в значительной мере отличается от нашей, человеческой: машине гораздо легче иметь дело просто с числами, причем записанными в двоичной системе исчисления, нежели с какими–то другими понятиями.
Таким образом, в счетчике команд содержится адрес той команды, которую нужно выполнить при следующем шаге работы машины. Процессор обращается к соответствующей ячейке памяти, считывает число, которое там содержится, и загружает его в регистр команд. После того как команда выполнена, адрес, содержащийся в счетчике команд, увеличивается на единицу, и процесс повторяется снова – теперь уже по отношению к новой команде и программе.
Таким образом, получается, что вся работа ЭВМ организована по циклам, каждый из которых состоит из двух частей. Первая половина цикла называется вызовом, и на этом этапе происходит вызов, считывание очередной команды из памяти. Вторая половина – исполнение, и в этот момент исполняется полученная команда. Каждый цикл обычно занимает порядка миллионной доли секунды; последние годы появляются машины, быстродействие которых измеряется уже миллиардами и триллионами операций в секунду.
И это еще не все. Каждая команда, попадающая в регистр команд, состоит, в свою очередь, из двух частей – операции и операнда.
Если провести аналогию с командами, которые отдает в армии командир своим подчиненным, то операцию и операнд можно рассматривать как сказуемое и дополнение в обычном предложении. Ведь в языке команд очень широко распространено повелительное наклонение, а подлежащее в них очень часто опускается, например: «Равняйсь! Смирно!..»
Пусть в нашем конкретном случае операция обозначена числом 10, а операнд – числом 0647. Операция 10 в перечне команд, допустим, означает «загрузить». Тогда вся команда в переводе с машинного языка может означать: «Считать число, хранящееся в ячейке памяти под номером 0647 и загрузить», то есть записать его в регистр–накопитель. Операция 11 может означать «прибавить». Тогда команда, скажем, типа 11.0885 означает: «Прибавь число, хранящееся в ячейке 0885, к содержимому регистра–накопителя и оставь полученную сумму в регистре–накопителе». Команда 12 может означать «запомнить». И тогда 12.2936 будет означать: «Содержимое регистра–накопителя надо записать в ячейку 2936». При этом все, что хранилось в этой ячейке прежде, стирается навсегда.
Чтобы иметь некоторую свободу передвижения, во. многих машинных языках предусмотрены команды «перехода» и «условного перехода». Если код команды перехода, например, 15, то команда 15.0073 будет означать: «Продолжай выполнять программу, начиная с ячейки 0073». При этом мы можем поставить и некое условие перехода к данной ячейке. Например, команда 16 может означать в переводе на наш обычный язык: «Переход по указанному адресу может быть осуществлен лишь в том случае, если в накопителе нуль». В противном случае перехода не произойдет, машина будет продолжать выполнение команд по тому порядку, как они записаны в программе. Все эти команды, которые мы только что описали, сами по себе довольно примитивны. Но, составляя из них длинные логические цепочки, можно заставить машину выполнить и самую сложную операцию.
Закодированные в виде числа команды образуют машинные коды. Мы в своих примерах брали эти коды чисто условно. На практике же системы этих кодов составляют тот или иной машинный язык. И они отличаются друг от друга примерно так же, как английский отличается от немецкого. Из одних и тех же букв латинского алфавита составляются слова, иногда они даже очень похожи внешне, но смысл этих слов в различных языках может быть различен. Для каждого народа удобен свой язык, так и машинные языки приспосабливаются к нуждам той или иной конкретной модели ЭВМ. Для какой–то удобнее работать при помощи языка «Бейсик», а для другой подходит только «Паскаль».
Читать дальше