|
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |
======================= приложение к главе 7 =======================
Там я написал что мол надо бы рассмотреть конкретные системы команд,
да больно далеко это нас уведёт... Ну так рассмотрим их здесь.
Начнём пожалуй с многократно упоминавшейся PDP-11. Типичная мини-ЭВМ
третьего поколения. У нас в своё время было множество машин с этой системой
команд и архитектурой.
Как это выглядело.
Линия СМ-ЭВМ: Первые две СМ-1 и СМ-2 имели другую, свою собственную
систему команд и к семейству PDP-11 не относились. А вот начиная с СМ-3...
— СМ-3, СМ-1300 — младшие модели (с разницей лет в пять-десять);
— СМ-4, СМ-1420 — более старшие, отличающиеся наличием "расширенных" команд
(а у СМ-1420 и сопроцессора для чисел с плавающей запятой) а так же диспетчера
памяти;
— СМ-1410 и СМ-1600 — двухпроцессорные комплексы, второй процессор которых -
для совместимости с машинами серии Мир и М5000.
Модели первой очереди (СМ-3, СМ-4) сделаны на микросхемах мелкой и
средней степени интеграции, второй — с использованием БИС (микропроцессорных
комплектов). Внешне всё это выглядит как ряд узких шкафов ("стоек") с
дверцами спереди и сзади, шириной и глубиной сантиметров по 60 — 70, в которые
вставлены блоки устройств, входящих в машину. В т.ч. центральный процессор
(ЦП), дисководы, накопители на магнитной ленте, мультиплексор для подключения
терминалов, и.т.п. Они все последовательно соединяются "общей шиной" в виде
толстенного кабеля (или даже двух). Плюс отдельно стоящее оборудование, типа
принтера или например дисководов для пакетных дисков, габаритами чуть
поменьше письменного стола, но на колёсиках. Всё это занимало отдельную
комнатку, как правило длинную и узкую, отгороженную стенкой с окном от
помещения по-больше, где размещался "терминал-класс" — штук пятнадцать
алфавитно-цифровых дисплеев. Стены и потолок в обоих помещениях отделывались
дырчатым шумопоглощающим покрытием; сооружался фальш-пол, под которым
проходили кабеля; а в окна вставлялись кондиционеры бакинского производства.
По которым с одного взгляда на фасад здания было видно где именно находится
вычислительный центр.
Линия Электроника: Самая младшая (да и самая старая тоже) модель -
Электроника-100/16. Не путать с Электроникой-100. Обе сделаны к столетнему
юбилею В.И.Ленина и выглядят очень похоже, но 12-и разрядная Э-100 — аналог
не PDP-11, а PDP-8 — другой разработки той же самой фирмы DEC. Эта тоже
весьма интересная одноадресная мини-ЭВМ, имеющая всего 8 (восемь!) команд и
четыре килослова ОЗУ, на фоне монстров предыдущего поколения выглядела
подлинным шедевром минимализма. Между тем на ней решались довольно серьёзные
даже по нынешним временам задачи. (Например расчет голографической
"мультилинзы" — объектива, дающего много изображений одного объекта.) Но в
силу малого количества ресурсов программировалась она исключительно на
ассемблере, а из всех языков высокого уровня "тянула" только интерпретатор
Фокала. Э-100/16 при том же самом объёме памяти была шестнадцатиразрядная...
Как впрочем и все машины семейства PDP-11.
Э-100/16 представляла из себя несколько металлических столов (не очень
удобных), на одном из которых стоял центральный процессор; на другом -
терминал в виде чешской электрической пишущей машинки "Консул"; а на третьем -
"перфостанция", включающая перфоратор и перфосчитыватель. Больше никаких
внешних устройств у того экземпляра, который я наблюдал, небыло. Но
теоретически можно было подключить — в недрах столов были упрятаны
соответствующие интерфейсы. (Зато памяти у неё было в два раза больше -
использовался "ферритовый куб" второго, несколько поломатого процессора.)
Процессор, более всего похожий по внешнему виду на старинную радиолу (но
габаритами ближе к цветному ламповому телевизору) имел стеклянную переднюю
панель, на которой располагался ряд лампочек и под ним ряд клавишей -
"клавишный регистр" — с помощью которых можно лазить непосредственно в
оперативную память и регистры процессора. (Да, это были не кнопки и не тумблеры,
а такие своеобразные переключатели, широкие и плоские, выглядевшие как
горизонтальный флажок, коий можно было поднять вверх, что означало логическую
единицу, или опустить вниз — логический ноль.) Справа несколько управляющих
клавишей: занести адрес, набранный на клавишах клавишного регистра (на шину
адреса, надо понимать); чтение по этому адресу — битики прочитанного слова
отображаются зажиганием лампочек (если "1"); запись слова, набранного на
клавишном регистре по ранее занесённому адресу. А кроме того "пуск программы" и
очень важная клавиша "работа". Если она выключена, то при нажатии на клавишу
"пуск" процессор выполнит ровно одну команду и сразу-же остановится. (Что
позволяет отлаживать программу, написанную в кодах, выполняя её по шагам.)
Справа над управляющими клавишами прямо на стекле была написана программка
"начальный загрузчик". Всё программное обеспечение было на перфолентах (каждая
в отдельной круглой коробочке); грузилось оно в ОЗУ с помощью специальной
программы "абсолютный загрузчик", а она — вот с помощью этого начального,
который предполагалось заносить в память вручную — с помощью клавишного
регистра. Но далеко не каждый раз, а только если вдруг испортится: память была
на ферритовых колечках — энергонезависимая. (Как устроена — см. в приложении.)
Особенность такой памяти: нельзя было писать (а равно и читать) много раз
подряд одно и то же слово — колечки (диаметром 0.8 мм) перегревались и могли
натурально расколоться. Говорят, какие-то гады использовали это свойство
ферритовой памяти для своего рода защиты: если что не так — программа начинала
выводить из строя машину. А еще такая память не любила — каникул: после
длительного перерыва в работе несколько дней сбоила.
Питание у этой машины включалось ключом (как у автомобиля или мотоцикла)
— круглый такой, который можно было при желании повесить на связку ключей от
квартиры и таскать с собою. Но разумеется так никто не делал — ключ всегда
торчал из передней панели. Вечером выключил машину и ушел домой; утром пришел,
повернул ключ, нажал "продолжить" и программа пошла выполняться с того места,
где вчера остановилась. (По прерыванию от контроля питания все регистры
процессора сохранялись в ОЗУ. А потом по тому-же прерыванию восстанавливались и
программа продолжалась как ни в чем небывало.)
Следующая по мощности и габаритам модель — Электроника-100/25 практически
полный аналог СМ-4, ничем по организации от неё не отличалась — такие-же стойки
со вставленными в них блоками, соединёнными парой кабелей "общей шины". И даже
сигналы в них те же самые, но разъёмы совершенно другие — просто так СМ`овское
оборудование не подключишь. (Разные министерства вишь делали!) На передней
панели процессора — клавишный регистр, организованный примерно так же как и в
Э-100/16.
Самая старшая (и соответственно самая высокопроизводительная) модель всего
семейства — Электроника-79 отличается только процессором (ну очень большой ящик,
а память — еще один — поменьше), а конструктив — такой же в точности. И
соответственно внешние устройства — те же самые. Клавишный регистр на передней
панели процессора тоже продвинутый — не лампочки и клавиши, а семисегментный
индикатор и цифровые кнопочки. Очень маленький и скромный. А основное место на
передней панели процессора занимал отладочный пульт, позволявший в частности
остановить тактовый генератор и прогонять тактовые импульсы даже не поштучно,
а по одному фронту... И к этому — сорок девять альбомов документации на один
только центральный процессор, подробнейшим образом описывающей абсолютно всё -
классная игрушка для начинающего электронщика!
В этом мистическом агрегате, как в квантовой системе, постоянно
присутствовало 0.5 дефекта: т.е. если починить последнюю известную, пусть даже
самую мелкую, неисправность — тут-же ломалось что-то еще. Но если не трогать -
всё исправно работало годами. (Опытным путём пришли к тому что пусть это будет
панелька, в которой воткнуто ПЗУ начального пуска, содержащее тэст процессора и
загрузчики. Оно нужно всего несколько секунд — в начальный момент загрузки
операционной системы. Соответственно, этот процесс выглядел так: набираешь на
клавишном регистре нужный адрес; суёшь левую руку внутрь процессора (для чего
он всегда из стойки несколько выдвинут и лишен боковой крышки) и нажимаешь на
эту микросхему пальцем; другой рукой нажимаешь на кнопку "пуск" — слышишь
характерные звуки, издаваемые например дисководом — всё, можно отпускать.)
А еще нельзя было хвастаться. Идёшь по коридору, а на встречу — зав.кафедрой
профессор Степанов, и спрашивает: как мол там семьдесятдевятка? Если отвечать
уклончиво — то всё в порядке. Но если честно сказать: всё хокей — пашет как
трактор, то... Возвращаешься обратно — висит! Перезагружаешь систему (там у
UNIX`а в суперблоке каждые тридцать секунд фиксируется текущее время) — ну
точно, именно в этот момент и повисла! (Было не менее трёх достоверных
случаев.) Но если соблюдать эти несложные правила, то не машина а прелесть -
вела себя паинькой. Правда было ей скучновато: чем не загрузи, а всё равно
большую часть времени висит на команде wait — это прекрасно видно по
характерному состоянию индикаторов отладочного пульта.
Электроника-60 — это уже не "мини-", а "микро-ЭВМ", предназначенная в
основном для управления каким либо оборудованием. Выглядит как один
небольшой блочок для СМ-овской стойки. По габаритам даже поменьше
системного блока писишки, но скомпонован горизонтально (как и все
промышленные процессоры). Внутри у него справа тяжеленный блок питания, а
слева то, что называется "корзина" — щелевой разъём, на котором и разведена
"общая шина" и в который втыкаются платы процессора, памяти и каких надо
интерфейсов к внешним устройствам из довольно большого набора. А буде нет
ничего подходящего — вот "слепая" плата — паяй что хочешь. На блоке питания
три клавиши: "питание" — включающая машину, "работа" — разрешающая
выполнение программы, и "таймер" — подающий на линию прерывания от таймера
пятидесятигерцовый сигнал от сети переменного тока (а то при желании можно
подключить что-то другое).
Щелевой разъём, кто не знает — под контакты, нарисованные прямо на краю
платы печатным способом (и обычно позолоченные). Используемый в Э-60 разъём
состоит из двух половин по 18 контактов с каждой стороны платы, с фигурным
вырезом между ними — чтобы не вставить её вверх ногами. В корзине по
горизонтали два таких разъёма, а по вертикали — четыре. (Или два раза по
четыре.) Плата с одним разъёмом почему-то считается "половинкой". "Целая"
вставляется сразу в оба. (А у моей любимой Э-79 в процесоре платы были с
такими же в точности разъёмами, но "полуторные", по виду и габаритам более
всего напоминающие снеговую лопату.)
Клавишный регистр эмулируется на системном ("консольном") терминале,
каковой обязательно присутствует по адресу 0177560. Эмулятор клавишного
регистра выдаёт туда символ @ и ждёт, что напишет человек, сидящий за
терминалом. Циферки он рассматривает как ввод числа (восьмеричного), а остальные
символы — как команды. (Или игнорирует.) Основная команда: / (косая черта) -
"открыть" ячейку памяти, т.е. рассмотреть вот только-что введенное число как
адрес, прочесть и выдать на терминал слово, по нему содержащееся. После этого
ожидается либо ВК — закрыть открытую ячейку, либо ПС — открыть следующую. (Ещё
вроде бы использовался символ ^ со значением — открыть предыдущую ячейку.)
Если перед этим ввести число — оно заносится в открытую ячейку как новое
содержимое. Команда @ означает косвенное обращение — открывает ячейку,
используя в качестве адреса содержимое уже открытой.
У машин с аппаратным клавишным регистром, регистры процессора имели адреса
на общей шине, по которым к ним можно было обращаться — как с помощью
клавишного регистра, так и из программы. Да и сам клавишный регистр тоже имел
такой адрес. (Потому так и назван.) А вот при использовании виртуального от
этого отказались: доступ к регистрам общего назначения процессора (РОН) — по
команде R плюс цифра т.е. R0..R7, еще RS — слово состояния процессора (ССП).
(Или про S — уже не помню.) Еще была предусмотрена команда L, эмулирующая
работу начального загрузчика. Только перед ней нужно было указать адрес
устройства, с которого загружать. В более поздних процессорах были введены
еще команды (например в ДВК, на процессоре 1801ВМ1 или 1801ВМ2 добавились
команды T1, T2, Т3 — запуск тестов). Ну и конешно-же команда G ("пуск")
запускающая программу с указанного перед ней адреса, а команда P
("продолжить") — с того, который уже находится в счетчике команд — регистре R7.
Если клавиша "работа" опущена — G только загружает адрес в счетчик команд, а
P приводит к выполнению одной очередной команды, позволяя таким образом
отлаживать программу по шагам. При опускании клавиши "работа", работающая
программа сразу же останавливается с выдачей на терминал адреса остановки и
очередного приглашения @. То же самое происходит при выполнении процессором
команды "стоп", имеющей, кстати, код 0.
Процессоров которыми комплектовалась Э-60 было несколько. Самый первый
М1 — с "базовым" набором команд, таким же как в СМ-3 или Э-100/16. У М2 уже
были "расширенные" команды, в т.ч. с плавающей запятой одинарной точности.
(Аппаратно — тот же самый М1 плюс лишняя ПЗУ микрокоманд.) Оба имели вид
"целой" платы, где кроме собственно процессора (четыре или соответственно
пять крупных БИС 581-й серии соединенных внутренней шиной плюс обвязка на
мелкой логике) дополнительно размещался один банк ОЗУ (8 Кб). Но всё равно
память приходилось подключать отдельно, дополнительно занимая одно или два
посадочных места в корзине. М3 вроде бы был аналогом М1, но "половинка" (на
однокристальном 581ВЕ1) и без ОЗУ. Чем отличался М4 уже не помню... Следующие
процессоры (до М11 включительно) строились на БИС других, более продвинутых
микропроцессорных комплектов (1804, 1811, 1831) и были аналогами старших
моделей — от СМ-4 или Э-100/25 до Э-79. Т.е. кроме диспетчера памяти некоторые
имели отдельный сопроцессор для работы с числами с плавающей запятой двойной
точности, аппаратно выполняющий соответствующие команды, в то время как на
остальных моделях их приходилось эмулировать.
|
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |