- •Введение
- •Глава 1
- •§ 1. «Алгоритмические джунгли»
- •§ 2. Исходные данные и результаты. Массовость алгоритма
- •§ 4. Понятность алгоритма
- •§ 5. Рекурсивные определения
- •§ 6. Определенность алгоритма
- •§ 7. Выводы
- •Глава 2 создание алгоритмов
- •§ 1. Роль алгоритмов в науке и технике
- •§ 2. Как возникают алгоритмы
- •§ 3. Алгоритмы в математике
- •§ 4. Алгоритм Евклида
- •§ 5. Решето Эрагосфена
- •§ 6. Алгоритм разложения на простые множители. Определение наименьшего кратного двух чисел
- •§ 7. Распознавание алгебраического тождества
- •§ 8. Задачи на построение алгоритмов
- •Глава 3 кризис математики в начале XX века
- •§ 1. Арифметизация математики
- •§ 2. Теория множеств
- •§ 3. Кардинальные числа
- •§ 4. Антиномии
- •§ 5. Выводы из антиномий
- •Глава 4 логические теории алгоритмов
- •§ 1. Рекурсивные функции
- •§ 2. Машины Тьюринга
- •§ 3. Нормальные алгоритмы Маркова
- •§ 4. Эквивалентность описанных теорий
- •Глава 5
- •§ 1. Массовые проблемы. Неразрешимость проблем
- •§ 2. Экстраалгоритм и три неразрешимые проблемы
- •§ 3, Некоторые замечания
- •Глава 6 электронные вычислительные машины и программирование
- •§ 1. Устройство эвм
- •§ 2. Процессоры эвм. Рабочий цикл
- •§ 3. Что такое программа
- •§ 4. Особенности современных эвм
- •§ 5. Входные языки программирования
- •§ 6. Необходимость содержательной теории алгоритмов. Какой она должна быть
- •Г л а в а 7 формальные языки
- •§ 1. Анализ естественного языка
- •§ 2. Искусственные языки. Формальные языки
- •§ 3. Буквы, связи, оболочки, конструкции
- •§ 4. Формальные грамматики
- •§ 5. Нотация Бекуса. Тезаурусы
- •§ 1. Что такое операция?
- •§ 2. Натуральные операции
- •§ 4. Первичные алгоритмы
- •§ 5. Натуральные алгоритмы
- •§ 6. Ограничения на структуру исходных данных сняты
- •§ 8. Соотношение с алгоритмами в интуитивном смысле
- •§ 10. Исследование тупиков (клинчей)
- •§ 11. Формальная семантика формального языка
- •Глава 9 математическое обеспечение эвм
- •§ 1. Анализ эвм и программ
- •§ 2. Что такое математическое обеспечение эвм
- •§ 3. Функциональная классификация программ математического обеспечения эвм
- •§ 4. Операционные системы
- •И автоматизация процессов
- •§ I. Использование эвм для управления
- •§ 2. Информационные системы
- •§ 3. Алгоритмизация процессов
- •§ 4. Язык алгоритмизации процессов
- •§ 5. Наука и искусство алгоритмизации
- •Заключение
- •§ 1. Может ли машина мыслить? Может ли человек решить алгоритмически неразрешимую проблему?
- •§ 2. Детерминированность машин. Самообучение
- •§ 3. Сознание машин. Алгоритмическое моделирование
§ 4. Особенности современных эвм
В § 2 командам контакта и обмена посвящены пп. 16, 17, 18 описания работы центрального процессора. Детализируем эти пункты. Число операций контакта и обмена зависит от количества процессоров, с которыми связан данный процессор, и от особенностей контактирующихся процессоров. Мы, для пояснения сущности контакта и обмена, ограничимся рассмотрением этих процессоров в случае связи центрального процессора и процессора ввода.
Итак, предположим, что 6 представляет собой операцию контакта. Такой контакт в описываемом (упрощенном) случае может преследовать только одну цель — ввод информации (у нас — с перфокарт). Мы имеем три операции контакта и обмена (см. систему команд в табл. 4): θ=12— операция контакта, θ = 13 — операция контакта и обмена, θ = 14— только обмена. Детализацию выполнения этих операций получим, если вместо пп. 16—18, приведенных
в §2, напишем:
16. Если u=0, то перейти к п. 17, иначе вернуться к выполнению п. 16 (т. е. ждать конца работы процессора ввода).
17. В ячейку U записать число из ячейки j, а в ячейку s записать нуль. Перейти к п. 18.
18. Если θ = 14, то см. п. 23, иначе см. п. 19.
19. В ячейку и производится запись числа 1. Далее
см. п. 21.
21. Если θ = 13, то см. п. 20, иначе перейти к п. 22.
22. Если u≠1 (т. е. процессор ввода не работает), то см. п. 23, иначе снова перейти к п. 22 (т. е. ждать конца работы процессора ввода).
23. В ячейку zk записать число из ячейки ws+1, значение k увеличить на 1, значение s увеличить на 1, см. п. 24.
24. Если s≠U, то вернуться к п. 23, иначе см. п. 20. Блок-схема этой части алгоритма показана на рис. 7.
Мы видим, что операция контакта в данном случае представляет собой запуск другого процессора. В общем случае такие операции могут иметь и другое назначение. Операция обмена представляет собой перенос данных в буферную память (или из нее в основную память процессора). Если в момент выполнения операции контакта или обмена смежный процессор работает, может происходить приостановка работы данного процессора. В нашем примере так и делается.
Заметим, что как сами процессоры, так и способы контакта и обмена между ними, в реальных ЭВМ бывают очень разнообразными. Но принцип их действия один и тот же, и выше мы его пояснили на примере.
Современная ЭВМ, как уже было сказано в § 1, — это система взаимосвязанных процессоров. Связь между процессорами осуществляется с помощью буферных и контактных ЗУ.
Схема, на которой изображена эта система и указаны главнейшие функции процессоров, называется схемой архитектуры ЭВМ. На такой схеме обычно указывают и каналы связи. Мы их не рассматривали. Заметим, что они тоже могут быть истолкованы как процессоры. Однако такое истолкование каналов не нужно. Заметим только, что каналы, применяемые в данное время в составе ЭВМ, бывают двух видов, — мультиплексные, допускающие контакт с большим числом процессоров, но осуществляющие этот контакт медленно, и селекторные, могущие осуществлять контакт с небольшим числом процессоров, но с очень высокой скоростью обмена.
Приведем примеры архитектуры некоторых современных ЭВМ. На рис. 8 изображена архитектура современной ЭВМ, допускающей параллельную работу процессоров. На этом рисунке процессоры изображены в виде блоков, общие части которых представляют собой ЗУ контакта и обмена. Такое изображение архитектуры ЭВМ неудобно, потому что число процессоров в современной ЭВМ может быть очень большим, а обмен и контакты между ними — очень сложными.
Условимся процессор изображать в виде прямоугольного блока с поясняющей записью внутри, контактные и буферные ЗУ изображать кружочками. Каналы будем изображать двойными линиями (при этом пометка цифрой 1 будет говорить о том, что канал мультиплексный, а пометка цифрой 2 - о том, что он селекторный). Принадлежность контактного и буферного ЗУ процессору будем изображать, соединяя изображающие их блоки одинаковыми линиями. Та же архитектура, которая показана на рис. 8, но с новыми обозначениями, приведена на рис. 9.
Идея, в соответствии с которой ЭВМ рассматривается как система процессоров, и связанное с этой идеей выделение в особую категорию контактных ЗУ, оказалась очень плодотворной. Конструкторы ЭВМ стали искать наиболее совершенные способы осуществления контактов. В результате этих усилий были изобретены и включены в состав ЭВМ новые устройства (с нашей точки зрения, этот прогресс представляет собой внесение изменений в конструкцию процессоров и, как следствие, в алгоритмы их функционирования).
Одной из плодотворных находок явилась система прерываний. Сущность ее заключается в следующем (рис. 10). Однобуквенные контактные ячейки (обычно допускающие запись в них либо цифры 0, либо цифры 1) объединяют в некоторую группу, называемую регистром прерываний. Различные процессоры машины и даже некоторые элементы данного процессора могут в соответствующий разряд регистра прерываний записать 1. Наличие хотя бы в одном разряде регистра прерываний цифры 1 создает так называемую ситуацию прерывания.
Кроме регистра прерываний р обычно в состав процессора включают еще так называемый регистр маски. Этот регистр т содержит столько же одноразрядных ячеек, сколько их в регистре прерываний. Если в некотором разряде регистра маски стоит 0, то одноименный с ним разряд регистра прерываний считается замаскированным. Если же в указанном разряде регистра маски стоит 1, то одноименный с ним разряд регистра прерываний считается незамаскированным.
Кроме двух указанных регистров в состав процессора должны быть включены один или несколько наборов ячеек, которые служат для дублирования основных ячеек устройства управления (таких, как регистр команд, счетчик команд, ячеек ω, ячейка t и другие, если это надо), и один набор аналогичных ячеек, доступных только для чтения хранимых в них фиксированных кодов.
При выполнении каждого рабочего такта устройство управления «опрашивает» регистр прерываний и, если находит в нем незамаскированные единицы, производит прерывание, которое заключается в том, что коды, стоящие в регистре команд, счетчике команд, ячейках ω и t и т. д., переносятся в соответствующие ячейки одного из дублирующих наборов, а на место этих кодов в управляющие ячейки записываются коды, взятые из упомянутого набора ячеек с фиксированными содержимыми.
В результате описанного, вместо выполнения очередной команды программы, производится «скачок» к команде, стоящей в ячейке с заранее заданным адресом. В этой ячейке должна стоять первая команда специальной программы, называемой программой обработки прерываний.
Таким образом, выполнение основной программы оказывается прерванным, и начинает работать вспомогательная программа. Отсюда происходит название описанного процесса «прерывание».
Программа обработки прерываний должна определять реакцию процессора на соответствующий сигнал прерывания (единицу в разряде регистра прерываний). Обычно программа обработки прерываний переносит содержимое регистра прерываний в рабочую ячейку, стирает все единицы в регистре прерываний и затем уже «обрабатывает» прерывание (т. е. код, взятый из регистра прерываний).
Если в процессоре имеется только один набор дублирующих регистров, то программа обработки прерываний, получив «управление», прежде всего маскирует весь регистр прерываний, с тем чтобы новое прерывание, происшедшее во время ее работы, не привело к утрате информации, находящейся в регистрах дублирующего набора. Если же дублирующих наборов несколько, то подобная предосторожность может быть излишней.
В системе команд машины должны содержаться команды для считывания содержимого регистра прерываний в рабочую ячейку, для записи маски (специально составленного кода) из рабочей ячейки в регистр маски и, наконец, команда возврата к продолжению выполнения «прерванной» программы. По такой команде коды из ячеек дублирующего набора переносятся в соответствующие управляющие регистры, в результате чего прерванная программа продолжает выполняться так, будто прерывания не было.
Наличие в составе центрального процессора системы прерывания изменяет структуру его рабочего цикла. Например, рабочий цикл упрощенного центрального процессора, описанный в § 2, заменится следующим.
1. Содержимое ячейки t сравнивается с 1. Если оно совпадает с 1, то выполняется п.2°, иначе (если оно совпадает с 0) снова выполняется п. 1.
2°. Над кодами р и т производится операция поразрядного умножения. Если результат совпадает с 0, то см. п. 2, иначе (если не совпадает) см. п. 3°.
2. Содержимое ячейки zl переносится из оперативной памяти в регистр команд r. Далее выполняется п. 3.
3. Содержимое ячейки l увеличивается на единицу. Далее выполняется п. 4.
4. Выполняется операция, которая указана в ячейке 9. Далее см.
п. 20.
3°. Содержимое ячеек l, ω, t, p записывается соответственно в ячейках l', ω', t', p'. Далее содержимое ячеек U, ωо, t0 записывается соответственно в ячейках l, ω, t. В ячейку р производится запись нуля. Далее см. п. 2.
20. Далее выполняется п. 1.
Блок-схема видоизмененного рабочего цикла упрощенного центрального процессора приведена на рис. 11 (ср. с рис. 4).
Современные ЭВМ обладают еще многими другими устройствами, повышающими их эффективность и удобство применения, однако мы ограничимся уже сказанным.
Отметим лишь, что теперь созданы ЭВМ, допускающие одновременное обслуживание большого числа пользователей, каждому из которых предоставлен самостоятельный пользовательский пульт управления, имеющий в своем составе достаточно эффективные средства обмена (электрическую пишущую машинку и нередко — телевизор, на экран которого может выдаваться информация из машины). Такие пульты управления называются терминалами. Каждый терминал является, понятно, разновидностью процессора. Архитектура машины, приспособленной для такого применения, показана на рис. 12.
Большой интерес представляют также ЭВМ, содержащие в своем составе несколько центральных процессоров (рис. 13). Такие ЭВМ называются многопроцессорными, что не очень удачно, потому что любые ЭВМ являются многопроцессорными.
За счет большого числа центральных процессоров среднее число операций, которые может выполнять ЭВМ в единицу времени (т. е. быстродействие ЭВМ), возрастает. Для многопроцессорной ЭВМ программу решения задачи иногда можно составить так, чтобы различные части этой программы выполняли разные центральные процессоры. Составление таких программ получило название параллельного программирования (точнее — программирования с расчетом на параллельное выполнение программ). Поскольку ЭВМ представляет собой систему процессоров, то можно говорить о коллективе исполнителей.
До сих пор мы рассматривали примеры алгоритмов и строили теории алгоритмов, предполагая, что исполнитель алгоритма один. Практика ставит перед нами задачу составления алгоритмов, рассчитанную на коллектив исполнителей.
