ВЫПОЛНЕНИЕ ПРОГРАММЫ.docx

  • docx
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала ВЫПОЛНЕНИЕ ПРОГРАММЫ.docx

ВЫПОЛНЕНИЕ ПРОГРАММЫ

Машинный цикл. Компьютер выполняет хранимую в его памяти программу посредством копирования команд из ос- новной памяти в блок управления (по мере необходимости). Как только команда попадает в блок управления, она декодиру- ется, после чего выполняется. Порядок, в котором команды выбираются из памяти, соответствует порядку их размещения в памяти, за исключением случаев выполнения команды перехода. Чтобы представить себе общий процесс выполнения ко- манд, необходимо познакомиться с тем, как блок управления функционирует внутри процессора. Этот блок включает два специализированных регистра: счетчик адреса (program counter) и регистр команд (instruction register) (см. рис. 2.4). Счет- чик адреса содержит адрес следующей выполняемой команды, т.е. он предназначен для наблюдения за ходом выполнения программы. Регистр команды используется для хранения кода выполняемой команды.

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

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

Рис. 2.6. Схема машинного цикла

Затем блок управления выполняет команду посредством активизации соответствующей схемы, предназначенной для выполнения поставленной задачи. Например, если команда представляет собой операцию загрузки данных из основной па- мяти, блок управления выполняет загрузку требуемых данных; если же команда предусматривает выполнение арифметиче- ской операции, то блок управления активизирует соответствующую схему в арифметико-логическом блоке, указывая в каче- стве входных регистры, заданные в команде.

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

Особым случаем является команда перехода. Давайте рассмотрим выполнение команды с кодом В258, которая имеет следующий смысл: "Выполнить переход к команде, сохраняемой по адресу 58, если содержимое регистра 2 идентично со- держимому регистра 0". В этом случае этап выполнения в машинном цикле начинается со сравнения содержимого регистров 2 и 0. Если оно различно, то этап выполнения этой команды завершается и начинается выполнение нового машинного цикла.


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

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

Пример выполнения программы. Давайте проследим за выполнением всех машинных циклов, предусматриваемых программой, текст которой представлен в конце раздела 2.2. Вначале необходимо разместить программу в какой-либо облас- ти памяти машины. Например, будем считать, что текст нашей программы занесен в последовательные ячейки памяти, на- чиная с адреса А0 (шестнадцатеричное представление). На рис. 2.7 представлена таблица, отра-

А0
А1
А2
А3
А4
А5

15
6C
16
6D
50
56
30
6E
С0

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

Блок управления начинает с извлечения из основной памяти команды, записанной по адресу А0, и помещает ее (156С) в регистр команды, выполнив тем самым этап выборки первого машин- ного цикла. Обратите внимание, что длина команды составляет шестнадцать разрядов (2 байта). Поэтому выбираемая команда должна занимать две ячейки памяти с адресами А0 и А1. Конст- рукция блока управления разработана с учетом этой особенности, поэтому он выбирает содержи- мое обеих ячеек и помещает данные в регистр команды, размер которого составляет 16 бит. Затем блок управления добавляет число 2 к значению в счетчике адреса, чтобы содержимое этого реги- стра представляло собой адрес следующей команды. По завершении этапа выборки первого ма-


Рис. 2.7. Программа

сложения чисел, записанная в памяти машины, начиная

с адреса А0


шинного цикла в счетчике адреса и регистре команд будут содержаться следующие данные.

Счетчик адреса: А2 Регистр команд: 156С

На следующем этапе блок управления анализирует команду, помещенную в регистр команд, и приходит к заключению, что это команда загрузки в регистр 5 содержимого ячейки памяти с


адресом 6С. Загрузка осуществляется на этапе выполнения данного машинного цикла, после чего блок управления начнет новый машинный цикл.

Новый цикл начинается с выборки команды 166D из ячеек памяти с адресами А2 и A3. Блок управления помещает эту команду в регистр команд и увеличивает значение счетчика адреса, после чего оно становится равным А4. После завершения очередного этапа выборки в счетчике адреса и регистре команд будут следующие данные.

Счетчик адреса: А4 Регистр команд: 166D

Блок управления декодирует команду 166D и определяет, что в регистр 6 необходимо загрузить содержимое ячейки па- мяти с адресом 6D, после чего выполняет команду, и в регистр 6 действительно загружается требуемое значение.

Поскольку в данный момент счетчик адреса имеет значение А4, блок управления считывает следующую команду, кото- рая начинается с указанного адреса. В результате в регистр команд помещается значение 5056, а счетчик адреса получает новое значение А6. Блок управления декодирует содержимое очередной команды и выполняет ее посредством активизации электронной схемы сложения чисел в дополнительном двоичном коде, указав этой схеме использовать как входные регистры 5 и 6.

На этапе выполнения данной команды арифметико-логический блок выполняет сложение и записывает результат в ре- гистр 0 (как было указано блоком управления), после чего сообщает блоку управления о том, что требуемые действия вы- полнены. После этого блок управления начинает следующий машинный цикл. И вновь, используя текущее значение в счет- чике адреса, он выбирает следующую команду из двух смежных ячеек памяти с адресами А6 и А7 (теперь это команда 306Е) и модифицирует значение счетчика адреса, установив его равным А8. Затем считанная из памяти команда декодируется и выполня- ется. В результате сумма двух чисел помещается в ячейку памяти с адресом 6Е.

Следующая выбираемая команда расположена в памяти, начиная с адреса А8. После ее извлечения значение счетчика адреса увеличивается до АА. Содержимое регистра команд равно С000 и расшифровывается как команда останова. В ре- зультате работа машины останавливается на этапе выполнения, и это означает, что выполнение нашей программы заверше- но.

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

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

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


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

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

Вопросы для самопроверки

1.  Предположим, что в памяти машины, описанной в приложении В, в ячейках с адресами от 00 до 05 содержатся битовые комбинации, приведенные ниже (шестнадцатеричное представление).

Адрес

Содержимое

00

14

01

02

02

34

03

17

04

С0

05

00

Если запустить машину, предварительно установив в счетчике адреса значение 00, то какая битовая комбинация ока- жется в ячейке памяти с адресом 17 (шестнадцатеричное представление), когда работа машины будет остановлена?

2.  Предположим, что в памяти машины, описанной в приложении В, в ячейках с адресами от В0 до В8 содержатся битовые комбинации, приведенные ниже (шестнадцатеричное представление).

Адрес

Содержимое

В0

13

Bl

B8

B2

A3

B3

02

B4

33

B5

В8

B6

С0

B7

00

B8

0F

а) Если в начале работы в счетчик адреса помещается значение В0, то какая битовая комбинация будет содержаться в регистре 3 после выполнения пер- вой команды?

б) Какая битовая комбинация будет находиться в ячейке памяти с адресом В8 после выполнения команды останова?

3.  Предположим, что в памяти машины, описанной в приложении В, в ячейках с адресами от А4 до В1 содержатся битовые комбинации, приведенные ниже (шестнадцатеричное представление).

 

Адрес

Содержимое

А4

20

А5

00

А6

21

А7

03

А8

22

А9

01

АА

В1

АВ

В0

АС

50

AD

02

АЕ

В0

AF

АА

B0

С0

B1

00

Отвечая на следующие вопросы, исходите из того, что в начале работы счетчик адреса содержит значение А4.

а) Какое значение будет находиться в регистре 0 после первого выполнения команды, расположенной в ячейке с адре- сом АА?

б) Что будет находиться в регистре 0 после второго выполнения команды, расположенной в ячейке с адресом АА?

в) Сколько раз должна быть выполнена команда, расположенная в ячейке с адресом АА, прежде чем машина остановит-

ся?

4.  Предположим, что в памяти машины, описанной в приложении В, в ячейках с адресами от F0 до F9 содержатся битовые

комбинации, приведенные ниже (шестнадцатеричное представление).

Адрес       Содержимое

F0                    20

F1                    С0


F2

30

F3

F8

F4

20

F5

00

F6

30

F7

F9

F8

FF

F9

FF

Если в начале работы машины счетчик адреса содержит значение F0, то какими будут действия машины, если она дой- дет до команды, записанной в ячейке с адресом F8?