Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы вокруг нас.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
13.11 Mб
Скачать

§ 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. Если sU, то вернуться к п. 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). Такие ЭВМ называются многопроцессорными, что не очень удачно, потому что любые ЭВМ являются много­процессорными.

За счет большого числа центральных процессоров сред­нее число операций, которые может выполнять ЭВМ в еди­ницу времени (т. е. быстродействие ЭВМ), возрастает. Для многопроцессорной ЭВМ программу решения задачи иногда можно составить так, чтобы различные части этой програм­мы выполняли разные центральные процессоры. Составле­ние таких программ получило название параллельного про­граммирования (точнее — программирования с расчетом на параллельное выполнение программ). Поскольку ЭВМ пред­ставляет собой систему процессоров, то можно говорить о коллективе исполнителей.

До сих пор мы рассматривали примеры алгоритмов и строили теории алгоритмов, предполагая, что исполнитель алгоритма один. Практика ставит перед нами задачу со­ставления алгоритмов, рассчитанную на коллектив испол­нителей.