Микропрограммирование

РЕФЕРАТ

по учебной дисциплине: Уилкс, Морис Винсент

 и его вклад в информатику

работу выполнил:

 студент 1, группы ТМП20-1

                                                                                ФИО Турушев Александр

Проверила:

                                                    должность

                                          ФИО

 

 

Улан-Удэ 2020

Содержание

Введение........................................................................................................... 3

Основная часть................................................................................................ 4

Микропрограммирование.............................................................................. 7

Заключение.................................................................................................... 14

Награды........................................................................................................ 15

Источники информации................................................................................ 16


 


Введение

Прежде чем начать рассказ, позвольте мне привести обширную цитату из «Краткого философского словаря» (Госполитиздат, 1954):

 

КИБЕРНЕТИКА (от др. греч. слова, означающего рулевой, управляющий) – реакционная лженаука, возникшая в США после Второй мировой войны и получившая широкое распространение и в других капиталистических странах; форма современного механицизма.

 

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

 

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

 

Вот так: «массовое истребление людей», ни больше, ни меньше. Рискнули бы вы, живя в СССР в те времена, заниматься кибернетикой?

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

 

Оригинальный текст (англ.) 

I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs

— Морис Уилкс, 1949 год. Инженер, исследователь, ученый

Основная часть

После этого грустного исторического экскурса давайте вернемся к первому из авторов книги – Морису Винсенту Уилксу. Морис Уилкс прожил долгую жизнь (1913-2010 гг.). Его творческие достижения были по достоинству оценены: мало кто может похвастать сравнимым списком премий и наград, среди которых главная – премия Тьюринга (1967 г).

 

Вкратце биография Уилкса такова. В 1934 году он закончил Кембриджский университет (Великобритания), защитил диссертацию по распространению радиоволн. С 1939 по 1945год служил в армии, занимаясь преимущественно радарами. С 1945-го Уилкс – директор математической лаборатории университета (впоследствии переименованной в компьютерную лабораторию). Уилкс был знаком с Аланом Тьюрингом и Джоном фон Нейманом – создателями и главными действующими лицами computer science той поры. В 1946году Уилкса пригласили прослушать курс лекций, который вели создатели компьютера ENIAC (США) Джон Мочли и Проспер Экерт. По словам Уилкса, этот курс произвел на него чрезвычайное впечатление, и он решил: его дальнейшая карьера будет посвящена компьютерам.Тогда же Уилкс возглавил в Кембриджском университете работы по созданию компьютера (запущен в 1949 году), который получил имя EDSAC (от Electronic Delay Storage Automatic Computer). EDSAC стал выдающейся

разработкой, т.к., во-первых, это был действительно программируемый компьютер (тот же ENIAC программировался установкой накоммутационных панелях перемычек и штекеров, т.е. фактически программа была частью схемы компьютера). Во-вторых, программа для EDSAC хранилась в памяти компьютера (архитектура фон Неймана). В-третьих, использовалась двоичная система счисления (куда более простая и удобная, чем привычная десятичная). Машина размещалась в шкафах, занимавших площадь 20 кв.м и насчитывала около трех тысяч электронных ламп. Такое количество ламп требовало солидных энергозатрат: потребляемая мощность машины составляла 12 кВт. Объем памяти на ртутных ультразвуковых линиях задержки поначалу составлял 1024 слова по 32 бита каждое. Была предусмотрена (и чуть позже реализована) возможность подключения дополнительной памяти. Скорость вычислений достигала 15 тысяч операций в секунду. В 1953 году началась доработка машины (а фактически полное ее перепроектирование): ртутная память была заменена на ферритовую, появилось постоянное запоминающее устройство. Машина получила имя EDSAC-2 и проработала с 1957 по 1965 год.

 

Но самое главное, что было в новой модификации машины, – принцип микропрограммного управления (часто используются термины «микропрограммирование», «микрокод», и мы будем употреблять их как равнозначные). Если сама машина EDSAC была технологическим прорывом, то

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

 

Уилкс одним из первых ввел концепцию мнемоник команд, символических имен (меток) и макросов в языках низкого уровня. Именно Уилкс ввел в оборот священное для многих слово «ассемблер». Он был среди тех, кто впервые начал заниматься системами разделения времени – предтечей многозадачных операционных систем и написал по этому вопросу книгу (была переведена на русский язык).

 

Морис Уилкс – основатель и первый президент Британского компьютерного общества (1957-1960 гг.). Он был членом Королевского общества – британской Академии наук. В 2000 году за научные и технические достижения Морис В. Уилкс был произведен в рыцарское достоинство, и с тех пор перед его именем обязательным стало обращение «сэр».


 


Микропрограммирование

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

 

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

 

Сама идея микрокода витала, что называется, в воздухе. Еще в 1947 году при проектировании компьютера MIT Whirlwind была предложена управляющая контрольная матрица: двумерная диодная решетка, синхронизируемая импульсами от внутренних часов ЦПУ. Однако это была лишь начальная и робкая попытка, не доведенная до логического завершения. Кроме того, развитию этой идеи препятствовал недостаточный уровень развития электроники. В июле 1951-го Уилкс сделал первое сообщение на конференции вМанчестерском университете, а окончательное решение было оформлено им в статье (в соавторстве с Дж. Стрингером), опубликованной в апреле 1953 года. Еще через несколько лет микропрограммное управление было наконец реализовано.

 

Микрокод занимает промежуточное положение между аппаратурой (hardware) и программным обеспечением (software). Часто микрокод называют

«прошивкой» (firmware); это объясняется тем, что микрокод тем или иным образом фиксируют (прошивают) в микросхемах энергонезависимых ПЗУ.

 

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

 

В первых компьютерах каждой выполняемой ими операции соответствовал отдельный компонент электронной схемы. Если на исполнение поступала какая-то команда, то происходило примерно следующее:

 

Выделялся код операции (например, сложение, переход, сдвиг и т.д.).

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

Операция осуществлялась, и компьютер переходил к обработке следующей операции.

Мы опускаем такие «мелочи», как выборка и запись операндов из памяти и в память, обращение к внешним устройствам, обработка прерываний, синхронизация импульсов и т.д.

 

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

компоненты, протестировать систему в целом. Если конструкторы где-то ошибались (а это, как понимаете, было нетрудно), то все приходилось

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

 

Легко видеть, что при таком подходе компьютеры просто не могли не быть дорогими, громоздкими и ненадежными. Неудивительно, что компьютеры занимали целые шкафы: где же еще можно было разместить такое количество плат и соединительных проводов! Каждому из них требовались специальное помещение и целый штат обслуживающего персонала. Нужно было что-то делать. Решение, предложенное Уилксом, оказалось выходом из технологического тупика.

 

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

 

Сложение двух положительных чисел x+y можно представить как прибавление к числу x стольких единиц, сколько их содержится в числе y:

 

while (y!= 0) {

 

x++;

 

y--

 

}

 

Так, относительно сложная операция сложения сводится к более простым – инкременту и декременту.

Вычитание x-y, это уже знакомая операция сложения, в которой операнд y берется с противоположным знаком.

 

Само изменение знака числа достигается совсем просто:

 

y = (~y) + 1

 

где «~»– логическая операция отрицания (замена 0 на 1 и обратно).

 

Копирование данных из одной ячейки памяти (x) в другую (y) очень похоже на сложение:

 

x = 0

 

while (y!= 0) {

 

x++;

 

y--;

 

}

 

Здесь видно, что нужна еще одна элементарная операция – обнуление (стирание) содержимого ячейки памяти.

 

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

 

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

 

Вот тут на сцене и появляется микрокод.

 

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

 

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

 

Любая операция процессора – это набор (совокупность) нескольких микрокоманд, прошитых в ПЗУ процессора. Для того чтобы изменить «поведение» процессора, нужно изменить его микропрограмму.

 

М.Уилкс предложил рассматривать микрокод как двумерную таблицу (матрицу). Столбцы матрицы соединятся проводниками с линиями управления процессором, а строки представляют собой микрокоманды (микроинструкции), т.е. битовые (двоичные) последовательности, описывающие исполнение той или иной операции. Каждая микрокоманда исполняется за один такт. Единица, как обычно, означает, что данный бит включен, а нуль – то, что этот бит выключен. Таким образом, процессор – это автомат, управляемый микрокодом (сравните с механическим пианино, о котором мы говорили ранее). Логика управления реализуется не в виде электронной схемы, а в виде хранимых в ПЗУ микрокоманд (предписаний).

 

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

 

Каждой обычной операции процессора (такой, например, как сложение двух чисел, сдвиг, очистка ячейки памяти, переход и т.д.) соответствует определенная комбинация сигналов, передаваемых в процессор по линиям управления.

 

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

 

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

 

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

 

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

 

Но к началу 60-х годов прошлого века ситуация кардинально изменилась: транзисторы стали так дешевы и надежны, что появилась возможность полной перестройки элементной базы компьютеров (т.н. третье поколение компьютеров). Корпорация IBM приняла решение о создании новой линейки программно-совместимых (от младших моделей к старшим) компьютеров – той самой IBM-360. И вот тут микропрограммирование оказалось решающим фактором. Хотя отдельные модели линейки имели отличающиеся центральные процессоры, все они были способны исполнять один и тот же набор операций.

 

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


 


Заключение

Как я уже говорил, микропрограммирование – весьма сложное направление, и желательно понимание схемотехники компьютеров. Для начинающих имеется прекрасный учебный курс:

 

Р.Токхейм. Основы цифровой электроники. – М.: «Мир», 1988, включающий не только теоретический материал, но и ряд лабораторных работ, выполнив которые вы определенно будете понимать процессы, происходящие в электрических цепях компьютера. На русском языке имеется несколько книг, специально посвященных микропрограммированию. Они изданы довольно давно, но это нисколько не снижает их ценности:

 

Г.Булей. Микропрограммирование. – М.: «Мир», 1973. Обзорный курс для начинающих.

 

Я.Чу. Организация ЭВМ и микропрограммирование. – М.: «Мир», 1975. Весьма громоздкое, но фундаментальное руководство, в котором описаны все аспекты микропрограммирования и архитектуры компьютеров. Много примеров и упражнений.

 

Кроме того, я рекомендую прочесть популярную статью Д.Паттерсона «Микропрограммирование», опубликованную в пятом выпуске журнала «В мире науки» за 1983 год (русскоязычное издание журнала Scientific American).

 

Чтобы ощутить атмосферу первых лет программирования, обратите внимание на интереснейшую книгу одного из первых отечественных первопроходцев: А.С.Кронрод. Беседы опрограммировании. – М.: УРРС, 2004.


Награды

1956 — почётное членство в Лондонском королевском обществе

1967 — Премия Тьюринга за разработку EDSAC и введение понятия программных библиотек

1968 — Harry H. Goode Memorial Award за вклад в развитие компьютерной техники

1976 — почётное членство в Королевской инженерной академии

1980 — Eckert-Mauchly award

1997 — Медаль Джона фон Неймана за вклад в развитие компьютерной техники


 


Источники информации

https://ru.wikipedia.org/wiki/Уилкс,_Морис_Винсент

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: