Что такое система команд
Перейти к содержимому

Что такое система команд

  • автор:

Алгоритм и исполнитель

В этом уроке разберём некоторые теоретические понятия, которые формализуют понятие программирования. Заодно точнее сформулируем основную задачу вашего обучения.

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

Скриншот игры на code.org

Рис.1 Скриншот игрового поля на code.org

Надеюсь, у вас всё получилось. Теперь на этом примере опишем несколько основных понятий:

  • исполнитель;
  • система команд исполнителя;
  • алгоритм.

В игрушке мы управляем красной птичкой. Задача каждого этапа: добраться птичкой до свиньи. Птичка умеет выполнять определённые команды, например: переместить вперёд, повернуть налево, повернуть направо и др.

Человек, машина или устройство, которые умеют выполнять некоторые команды, называется исполнителем . В этой игрушке, очевидно, исполнитель – птичка. Набор команд, которые понимает и умеет выполнять исполнитель, называют системой команд исполнителя .

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

Необходимо заострить внимание на нескольких моментах.

Исполнитель может выполнять только те команды, которые входят в его систему команд.

Это означает, например, что нельзя написать исполнителю-птичке: «Иди к свинье!». Точнее записать можно, но только ничего не произойдёт, т.к. исполнитель таких команд не знает.

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

Исполнитель выполняет точно то, что предписывает ему алгоритм.

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

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

Теперь от наглядного примера перейдём к компьютерным реалиям. Мы пишем программы для компьютера, а значит, компьютер в нашем случае является исполнителем. Система команд – стандартные функции и конструкции языка Си.

В чём состоит основная задача вашего обучения основам программирования? Овладеть навыком алгоритмического мышления. То есть научиться записывать решение различных задач в виде алгоритма для конкретного исполнителя (в нашем случае компьютера).

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

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

Исполнитель – человек или некоторое устройство, которое может понимать и выполнять определённый набор команд.

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

Основная задача данного курса – научиться записывать решение различных задач в виде алгоритмов для компьютера.

Сохрани в закладки или поддержи проект.

Практика

Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим

Дополнительные материалы

  1. Определение алгоритма в этом уроке, конечно, совершенно неформальное. В теоретической информатике существуют строгие определения этого понятия. Для этого, например, вводится такое понятие как Машина Тьюринга. Подробнее об этом можно прочитать на википедии, викиучебнике или посмотреть на степике урок А. Шеня. А на сайте К.Ю. Полякова можно скачать тренажёр Машина Тьюринга.
  2. Тем, кто решает задачи на Stepikе посвящается:

Система команд

Пояснение причин и обсуждение — на странице Википедия:К объединению/6 ноября 2011.
Обсуждение длится одну неделю (или дольше, если оно идёт медленно).
Дата начала обсуждения — 2011-11-06.
Если обсуждение не требуется (очевидный случай), используйте другие шаблоны.
Не удаляйте шаблон до подведения итога обсуждения.

Систе́ма кома́нд (также набо́р команд) — соглашение о предоставляемых архитектурой средствах программирования, а именно: определённых типах данных, инструкций, системы регистров, методов адресации, моделей памяти, способов обработки прерываний и исключений, методов ввода и вывода.

Система команд представляется спецификацией соответствия (микро)команд наборам кодов (микро)операций, выполняемых при вызове команды, определяемых (микро)архитектурой системы. (При этом, на системах с различной (микро)архитектурой может быть реализована одна и та же система команд. Например, Intel Pentium и AMD Athlon имеют почти идентичные версии системы команд x86, но имеют радикально различный внутренний дизайн.)

Базовыми командами являются, как правило, следующие:

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

Оптимальными в различных ситуациях являются разные способы построения системы команд.

  • Если объединить наиболее часто используемую последовательность микроопераций под одной микрокомандой, то надо будет обеспечивать меньше микрокоманд. Такое построение системы команд носит название CISC (Complex Instruction Set Computer), в распоряжении имеется небольшое число составных команд.
  • С другой стороны, это объединение уменьшает гибкость системы команд. Вариант с наибольшей гибкостью — наличие множества близких к элементарным операциям команд. Это RISC (Reduced Instruction Set Computer), в распоряжении имеются усечённые, простые команды.
  • Еще большую гибкость системы команд можно получить используя MISC подход, построенный на уменьшении количества команд до минимального и упрощении вычислительного устройства обработки этих команд.

См. также

Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.
Pipeline Конвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution
Уровни Бит · Инструкций · Суперскалярность · Данных · Задач
Потоки Многопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация
Классификация Флинна SISD · SIMD · MISD · MIMD

Система команд

Архитектурные решения семейства нашли свое отражение в системе команд. Практически все команды для всех ЭВМ семейства (за исключением команд процессора плавающей точки ЭВМ «Электроника 79» и нескольких команд управления внутренним оборудованием центрального процессора) совпадают. Это обеспечивает совместимость программ на уровне Ассемблера как снизу вверх, так и сверху вниз. Отметим основные особенности системы команд.

Методы расширения кода операций

  1. Внесение счетчика команд в набор РОН позволило по-новому решить ряд проблем адресации. Основной тип адресации в любой системе — относительная адресация — обеспечивается указанием смещения относительно текущего места в программе. Следовательно, смещение зависит не только от положения операнда в программе (например, от расстояния от начала программы), но и от места команды, которая использует этот операнд. Это позволило отказаться от базовых регистров, а также уменьшить размер всех команд ветвления за счет указания смещения перехода (±256 байт) в самой команде. Считается, что большинство переходов в хорошей программе осуществляет переходы в этом диапазоне.
  2. Команды системы не зависят от уровня памяти, на которой размещены операнды (регистровой и оперативной). Метод адресации у каждого операнда свой и в подавляющем большинстве является произвольным (в том числе и непосредственная адресация). Поэтому варианты расположения операндов команды в памяти не увеличивают количество команд, и система команд имеет высокий логический уровень.
  3. Все операнды явным образом адресуются через регистры, и формат собственно команды является неизменным — одно слово (т. е. 16 разрядов). Адресация через счетчик команд (относительная, непосредственная, абсолютная) и индексная предполагают размещение вслед за командой смещения индекса непосредственного операнда или абсолютного адреса. Эти данные образуют с командой как бы одно целое — расширенную команду, которая имеет длину от одного до трех слов в зависимости от применяемых методов адресации операнда.
  4. Ограниченная разрядность слова привела к поиску новых решений в области назначения кода операции. Здесь применен прием расширения кода операции, при котором длина кода операции не фиксирована (как, например, в ЕС ЭВМ — 1 байт), а изменяется в зависимости от числа операндов. Этот прием проиллюстрирован в табл. 1.5.

Произвольный доступ к операнду занимает 6 разрядов: 3 — метод адресации, 3 — номер регистра. Поэтому в двухадресной команде на код операции — КОП (горизонтальная штриховка) остается 4 разряда, т. е. 16 комбинаций. 12 используются в команде, а 4 — для расширения: из них 2 комбинации идут на кодирование команд ветвления, 1 — двухадресных регистровых команд, в которых первый операнд обязательно в регистре, 1 — управления процессором плавающей точки. В следующей группе старшие 4 разряда уже заняты (косая штриховка), а два операнда занимают 9 разрядов, так как один просто номер регистра. Следовательно, код операции имеет 3 разряда, всего здесь 6 команд, одна комбинация расширяется для регистровых одноадресных команд, одна резервная и т. д.

С помощью такого приема удалось кодировать 150 команд. При фиксированном размере кода операции под него необходимо было бы отвести байт, т. е. при размере слова в 16 разрядов можно было использовать только один адрес. Кроме того, под возможные расширения системы имеются еще 182 резервных комбинации (в основном одноадресных регистровых и безадресных).

Общие принципы построения ЭВМ семейства «Электроника»

  • Архитектура ЭВМ
  • Канал обмена информацией
  • Организация центрального процессора
  • Организация оперативной памяти
  • Система команд

Внешние устройства ЭВМ

  • Устройства внешней памяти
  • Устройства ввода-вывода

Система команд ЭВМ М-3

Вычислительная машина М-3 разработана под руководством И. С. Брука. Она относится к классу малых универсальных машин. Машина выполняет действия над 31-разрядными числами с фиксированной запятой со скоростью 30 двухадресных операций в секунду. Оперативная память реализована на магнитном барабане и имеет емкость 2048 чисел. В случае подключения к ЭВМ памяти на магнитных сердечниках быстродействие возрастает до 1500 операций в секунду. Устройств внешней памяти М-3 не имеет. Для ввода-вывода информации используются перфолента и телетайп. Машина имеет 770 электронных ламп и 3000 полупроводниковых диодов, потребляет 10 кВт электроэнергии. Для ее размещения достаточно 30-40 м 2 .

Память и структура информации

Оперативная память ЭВМ М-3 имеет объем 2048 31-разрядных чисел или команд. Все ячейки памяти равноправны между собой. Для обращения к ячейкам памяти используются 11-разрядные адреса. Разряды ячеек памяти нумеруются слева направо; старший (самый левый) разряд имеет номер 0. Двоичные числа с фиксированной точкой содержат в нулевом разряде знак числа, а остальные 30 разрядов занимает абсолютная величина числа. Таким образом, М-3 использует прямой, а не дополнительный код для представления отрицательных чисел. Принято считать, что целая часть числа равна нулю, а разряды 1-30 содержат дробную его часть. Десятичные числа также имеют нулевую целую часть. Их знак размещается в нулевом разряде, а в разрядах 1-28 расположены семь тетрад, кодирующих десятичные цифры дробной части числа. Разряды 29-30 не используются.

Ввод-вывод информации

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

Система команд

ЭВМ М-3 относится к двухадресным машинам. Каждая команда занимает одну ячейку памяти. Разряд кода команды 0 не используется, разряды 1-6 содержат код операции, разряды 7-18 — адрес первого операнда, разряды 19-30 — адрес второго операнда и результата. Арифметическое устройство ЭВМ М-3 имеет сумматор, в который заносится результат последней выполненной операции. Содержимое сумматора может быть использовано при выполнении следующей операции. При получении отрицательного результата, в том числе отрицательного нуля, формируется признак w =1. При получении положительного результата признак w =0. Все команды можно разделить на две группы: арифметико-логические и команды управления. Код арифметико-логической команды имеет вид xy, где x — модификатор операции (одна восьмеричная цифра); y — код операции (вторая восьмеричная цифра). Возможные значения кодов и модификаторов арифметико-логических операций приведены в нижеследующих табл. 1-2. Таблица 1

Код x Модификация
0 b, r = a * b
1 r = a * b
2 b, r = r * a
3 r = r * a
4 b, r = a * b
Результат печатается
5 r = |a| * |b|
6 b, r = r * a
Результат печатается
7 r = |r| * |b|
Код y Операция
0 Сложение
1 Вычитание
2 Деление
3 Умножение
6 Логическое И

В табл. 1 a и b означают ячейки памяти, заданные первым и вторым адресом в коде команды соответственно; r — регистр-сумматор. Команды управления не имеют модификаций, поэтому их код всегда занимает две восьмеричные цифры. Список команд управления приведен в табл. 3. Таблица 3

Код операции Название команды Действия, выполняемые по команде
07
27
Ввод числа с перфоленты Одно число с перфоленты вводится в ячейку b. В сумматор оно не заносится. Адрес ячейки a равен нулю
05
15
Перенос числа Число из ячейки a переносится в ячейку b
45
55
Перенос числа и печать Число из ячейки a переносится в ячейку b и одновременно печатается на телетайпе
24 Безусловный переход по первому адресу Происходит передача управления на ячейку с адресом a
и одновременно содержимое сумматора записывается в ячейку с адресом b
64 Безусловный переход по первому адресу и печать Происходит передача управления на ячейку с адресом a
и одновременно содержимое сумматора записывается в ячейку с адресом b и печатается на телетайпе
74 Безусловный переход по второму адресу Управление передается команде с адресом b. Адрес a в коде команды равен нулю. Знаковый разряд сумматора очищается, т. е. в сумматоре остается абсолютная величина его первоначального значения
34 Условный переход Если w =1, происходит передача управления на ячейку с адресом a, а если w =0 — на ячейку с адресом b
37 Останов Машина останавливается. На пульт управления выдается a. Содержимое сумматора не изменяется. Поле адреса b в коде команды равно нулю

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *