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

Каждому из основных компонентов вычислительной системы отведены определенные функции, которые выполняются определенным способом. Два таких компонента впервые были описаны в 1833 г. Чарльзом Бэббиджем в проекте Аналитической машины. Бэббидж ввел понятие устройства, названного «мельницей», в котором производятся действия над величинами, и понятие запоминающего устройства, «склада», где хранятся значения величин и результаты выполняемых «мельницей» операций. В наше время - это соответственно арифметико-логическое устройство (АЛУ) и оперативное запоминающее устройство (ОЗУ). АЛУ является частью центрального процессорного устройства компьютера, которое выполняет инструкции, а также управляет информацией, поступающей в машину от таких устройств, как клавиатура или световое перо, и выводимой из нее, например, на печатающее устройство (принтер) или телевизионный экран (монитор).

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

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

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

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

Теперь машина готова к процессу, называемому начальной загрузкой, который протекает в несколько этапов. При следующем тактовом импульсе в программный счетчик заносится адрес, подготовленный еще при конструировании компьютера. Адрес обычно устанавливается при помощи набора ручных переключателей. Адрес - серия высоких и низких уровней напряжения (на рисунке представлена в виде двоичных разрядов 11110010) - указывает ячейку ПЗУ, в которой записана первая инструкция программы начальной загрузки. (На рисунке показан адрес, состоящий всего из 8 бит, в действительности же у большинства микрокомпьютеров адрес содержит 16-20 бит.)

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

Центральный процессор выполняет программу начальной проверки, совершая тысячи мелких шагов; в данном случае каждый шаг заключается в обработке байта данных. Этот байт может представлять собой часть адреса, код инструкции или элемент данных, найденный по определенному адресу (скажем, цифру или букву алфавита). Байт - это набор сигналов с высоким или низким уровнем напряжения, которые передаются либо по адресной шине (желтая полоса), либо по шине данных (красная).
 
 
При включении питания в машине начинается цепочка операций, выполняемых настолько быстро, что они кажутся почти одновременными. По первому тактовому импульсу поступает сигнал сброса, очищающий все регистры центрального процессора и устанавливающий программный счетчик на нуль. Программный счетчик, выступающий в роли диспетчера, указывает процессору, где искать следующую инструкцию.
 
 
На следующем такте заранее заготовленный фиксированный адрес поступает в программный счетчик. В данном примере этот адрес указывает на ячейку ПЗУ, где хранится первая инструкция неизменяемой программы начальной проверки и загрузки. При следующем тактовом сигнале ЦП выставляет адрес, содержащийся в программном счетчике (11110010), на адресную шину (желтая полоса). К концу этого сигнала в программном счетчике появляется адрес следующей инструкции программы.
 
 
По приходу тактового импульса на линиях адресной шины фиксируются высокие и низкие уровни напряжения, представляющие адрес первой инструкции программы начальной проверки. (Адрес следующей инструкции уже подготовлен в программном счетчике.) На следующем такте схемы дешифратора адреса определяют, где находится ячейка с данным адресом. Очередной тактовый импульс активизирует соответствующую микросхему ПЗУ.
 
 
По мере прихода очередных тактовых импульсов управляющие схемы ПЗУ обращаются к нужной ячейке памяти (ее биты изображены в виде желтых кружочков) в выбранном кристалле. Как показано на рисунке, двоичная цепочка, представляющая адрес, отличается от цепочки, представляющей информацию, которая хранится по этому адресу: адрес лишь указывает, где хранится элемент данных, но не сами данные. В показанном здесь случае затребованная цепочка данных представляет собой код первой инструкции в начальной последовательности команд. ЦПУ хотело бы «прочитать» этот код, но должно ждать специального разрешающего сигнала и очередного тактового импульса.
 
 
На следующем такте ЦПУ посылает сигнал «чтение» микросхеме ПЗУ, которая мгновенно подает информацию в шину данных. Это тщательно скоординированное сочетание управляющих сигналов и тактовых импульсов гарантирует, что на шину не поступит никакой информации, прежде чем устройство, для которого она предназначена, не будет готово к приему. Благодаря тому, что тактовый импульс и сигнал «чтение» проходят через один и тот .же логический вентиль «и», информация не может попасть на шину данных до тех пор, пока на обеих линиях сигналы не будут соответствовать логическому значению «истино».
 
 
Попав на шину данных, байт информации, извлеченный из ПЗУ в соответствии с начальным адресом программы, поступает в ЦП. На следующем такте ЦП фиксирует байт данных, принятый по шине, и посылает его в свои регистры. Поскольку это первый элемент данных, полученный процессором с момента включения питания, он воспринимается как код инструкции, который дешифрируется при следующем тактовом импульсе. Последовательность - программный счетчик, адресная шина, ПЗУ, шина данных, дешифрация команды - повторяется сотни раз, пока все байты, составляющие программу начальной проверки, не будут один за другим переданы процессору и выполнены.
 
Шаги машинного цикла, описанные здесь, хорошо иллюстрируют последовательности дискретных действий, которые повторяются многократно при чтении очередной инструкции центральным процессором. Каждое действие происходит за время порядка 30 нс (наносекунда; 1 нс = 0,000000001 ). Рисунки, помещенные здесь, позволяют взглянуть на программу начальной проверки в более крупном временном масштабе, однако характер действий остается по существу тем же.

На данном примере показано, как компьютер проверяет работу микросхем ОЗУ. Эта процедура состоит из миллионов отдельных шагов и в зависимости от объема памяти компьютера занимает до нескольких секунд. Проверка ОЗУ сложна по двум причинам. Во-первых, каждая микросхема ОЗУ обычно содержит 64 К информации (1 К = 1024 бит), т. е. 65536 бит. Во-вторых, в этих крошечных, плотно упакованных микросхемах информация хранится иначе, чем в ПЗУ. Как показано здесь, восьмибитный элемент данных, считываемый процессором из ПЗУ, содержится в одной микросхеме. В ОЗУ 8 бит (1 байт) данных записаны в определенной последовательности в 8 различных микросхемах. Такая организация оперативной памяти позволяет наиболее эффективно пользоваться адресным пространством памяти и оптимально планировать схему системной платы.

Чтобы убедиться, что ни одна микросхема ОЗУ не вышла из строя, ЦПУ обращается к ним, задавая адреса на адресной шине (желтая). Дешифратор адреса определяет те 8 микросхем, которые должны хранить 8 бит, составляющих пробный байт данных, и эти биты поступают по шине данных. Далее ЦПУ обращается к ОЗУ, чтобы прочесть только что записанные там данные. Дешифратор адреса активирует 8 микросхем, каждая из которых должна послать 1 бит по шине данных (синяя) в центральный процессор. Процессор сверяет принятый таким образом байт с тем, который записан в память. Эти байты должны совпадать. Для проверки всех ячеек одной микросхемы ЦП должен повторить этот тест 65536 раз (с различными адресами). Разумеется, в то же самое время проверяются другие семь микросхем ОЗУ. Обнаружив ошибки, процессор запоминает, что определенные области ОЗУ неисправны и ими не следует пользоваться.
 
 
Для проверки оперативной памяти центральный процессор «записывает», т. е. посылает, пробный элемент данных в каждую ячейку. Чтобы записать байт данных в оперативную память, дешифратор адреса отыскивает 8 отдельных микросхем, в каждой из которых хранится один бит от байта, записанного по данному адресу.
 
 
После того как эти пробные данные попали в ОЗУ на доли секунды, ЦП сигнализирует, что хочет снова прочесть байт данных и поместить его в один из своих регистров . Микросхемы, содержащие по одному биту от этого байта, передают их на шину данных. Далее байт данных поступает в ЦПУ для сравнения - цикл повторяется, пока не закончится проверка всех ячеек во всех микросхемах ОЗУ.
 
 
Закончив проверку своей оперативной памяти, компьютерная система приступает к аналогичной проверке портов ввода-вывода. Программа, управляющая этой процедурой, извлекается из ПЗУ согласно инструкции, как это было описано выше. Теперь процессор посылает последовательность сигналов в порты, расположенные на задней стороне системной платы. Процессор по очереди проверяет функционирование портов для экрана, принтера и других внешних устройств.
 
 
Последние несколько инструкций начальной программы проверки дают процессору информацию от том, по какому адресу в ПЗУ находится очередная инструкция. С этого адреса начинается программа, реализующая «Встроенный» язык программирования - обычно Бейсик или какую либо встроенную специализированную программу, например для обработки текстов. Таким образом, уже через несколько секунд после включения питания управление в компьютере передается этой программе или языку.
 
 RedyНа экране появляется сообщение, что машина готова к работе. Форма подобных сообщений различна у разных машин, но обычно они «звучат» довольно приветливо. В данном случае в верхней строке экрана над ярко светящимся курсором (указателем) появляется сообщение: READY (готов).