Лекция
команда : В контексте компьютеров и программирования, команда - это инструкция, написанная на языке программирования, которая указывает компьютеру, какое действие следует выполнить. Команды используются для управления работой компьютера и программ, а также для выполнения различных задач.
система команд : Система команд - это набор команд, которые компьютер или программа может интерпретировать и выполнять. Она определяет, какие команды доступны, как они должны быть сформулированы и какой эффект они будут иметь на компьютер или программу. Примером системы команд может служить командная строка операционной системы, где пользователь может вводить команды для управления компьютером.
Программное обеспечение: Программное обеспечение (ПО) - это совокупность программ, инструкций и данных, которые управляют работой компьютера и позволяют выполнять различные задачи. Программное обеспечение включает операционные системы, прикладные программы, утилиты и многое другое. Оно обеспечивает взаимодействие между пользователем и аппаратным обеспечением компьютера.
системное программное обеспечение : Системное программное обеспечение - это часть программного обеспечения, которая обеспечивает основные функции и управление компьютером. Оно включает операционные системы, драйверы устройств, компоненты управления памятью и другие системные службы. Системное ПО работает на более низком уровне, чем прикладное ПО, и обеспечивает среду, в которой прикладные программы могут выполняться.
Всякая компьютерная программа является последовательностью отдельных команд. Командой называется описание операции, которую выполняет компьютер. Обычно у команды существует свой код (условное обозначение), исходные данные (операнды) и результат. Совокупность команд, которые выполняет данный компьютер, представляет собой систему команд данного компьютера.
Рис. 1. Архитектура системы команд как интерфейс между программным и аппаратным обеспечением
Системой команд вычислительной машины называют полный перечень команд, которые способна выполнять данная ЭВМ. В свою очередь, под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту. АСК можно рассматривать как линию согласования нужд разработчиков программного обеспечения с возможностями создателей аппаратуры вычислительной машины (рис.1).
В конечном итоге, цель тех и других — реализация вычислений наиболее эффективным образом, то есть за минимальное время, и здесь важнейшую роль играет правильный выбор архитектуры системы команд.
В упрощенной трактовке время выполнения программы (Твыч) можно определить через число команд в программе (Nкам ), среднее количество тактов процессора, приходящихся на одну команду (CКТ), и длительность тактового периода P:
Твыч = N ком * СКТ * P
Программное обеспечение компьютера – это совокупность программ, процедур и инструкций, а также связанная с ними техническая документация, позволяющие использовать ЭВМ для решения конкретно поставленных задач.
Классификация архитектур системы команд
В истории развития вычислительной техники как в зеркале отражаются изменения, происходившие во взглядах разработчиков на перспективность той или иной архитектуры системы команд. Сложившуюся на настоящий момент ситуацию в области АСК иллюстрирует рис. 2.
Рис. 2. Хронология развития архтектур системы команд
Среди мотивов, чаще всего предопределяющих переход к новому типу АСК, остановимся на двух наиболее существенных. Первый — это состав операций, выполняемых вычислительной машиной, и их сложность. Второй — место хранения операндов, что влияет на количество и длину адресов, указываемых в адресной части команд обработки данных. Именно эти моменты взяты в качестве критериев излагаемых ниже вариантов классификации архитектур системы команд.
Классификация по составу и сложности команд
Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная цель которых — облегчить процесс программирования. Переход к ЯВУ, однако, породил серьезную проблему: сложные операторы, характерные для ЯВУ, существенно отличаются от простых машинных операций, реализуемых в большинстве вычислительных машин.
Рис. 5.1. Классификация команд.
Проблема получила название семантического разрыва, а ее следствием становится недостаточно эффективное выполнение программ на ЭВМ. Пытаясь преодолеть семантический разрыв, разработчики вычислительных машин в настоящее время выбирают один из трех под ходов и, соответственно, один из трех типов АСК:
В вычислительных машинах типа CISC проблема семантического разрыва решается за счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам ЯВУ. Основоположником CISC-архитектуры считается компания IBM, которая начала применять данный подход с семейства машин IBM 360 и продолжает его в своих мощных современных универсальных ЭВМ, таких как IBM ES/9000. Аналогичный подход характерен и для компании Intel в ее микропроцессорах серии 8086 и Pentium.
Для CISC-архитектуры типичны:
К типу CISC можно отнести практически все ЭВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры ЭВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности ЭВМ в целом. Это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований, в результате которых обнаружилось, что доля дополнительных команд, эквивалентных операторам ЯВУ, в общем объеме программ не превышает 10—20%, а для некоторых наиболее сложных команд даже 0,2%. В то же время объем аппаратных средств, требуемых для реализации дополнительных команд, возрастает весьма существенно. Так, емкость микропрограммной памяти при поддержании сложных команд может увеличиваться на 60%.
Детальный анализ результатов упомянутых исследований привел к серьезному пересмотру традиционных решений, следствием чего стало появление RISC-архитектуры. Термин RISC впервые был использован Д. Паттерсоном и Д. Дитцелем в 1980 году. Идея заключается в ограничении списка команд ЭВМ наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессорах. Обращение к памяти допускается лишь с помощью специальных команд чтения и записи. Резко уменьшено количество фор матов команд и способов указания адресов операндов. Сокращение числа форматов команд и их простота, использование ограниченного количества способов адресации, отделение операций обработки данных от операций обращения к памяти позволяет существенно упростить аппаратные средства ЭВМ и повысить их быстродействие. RISC-архитектура разрабатывалась таким образом, чтобы уменьшить Твыч за счет сокращения СКТ и P. Как следствие, реализация сложных команд за счет последовательности из простых, но быстрых RISC-команд оказывается не менее эффективной, чем аппаратный вариант сложных команд в CISC-архитектуре.
Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и суперЭВМ компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных ЭВМ, например в процессорах Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т. п.
В последних микропроцессорах фирмы Intel и AMD широко используются идеи, свойственные RISC-архитектуре, так что многие различия между CISC и RISC постепенно стираются.
Помимо CISC- и RISC-архитектур в общей классификации был упомянут еще один тип АСК — архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений, в силу чего архитектуру VLIW логичнее адресовать не к вычислительным машинам, а к вычислительным системам.
Типы команд
В современных ВМ используются следующие типы команд:
Команды пересылки данных
Это наиболее распространенный тип машинных команд. В таких командах должна содержаться следующая информация:
1) адреса источника и получателя операндов — адреса ячеек памяти, номера регистров процессора или информация о том, что операнды расположены в стеке;
2) длина подлежащих пересылке данных (обычно в байтах или словах), заданная явно или косвенно;
3) способ адресации каждого из операндов, с помощью которого содержимое адресной части команды может быть пересчитано в физический адрес операнда.
Рассматриваемая группа команд обеспечивает передачу информации между процессором и ОП, внутри процессора и между ячейками памяти. Пересылочные операции внутри процессора имеют тип «регистр-регистр». Передачи между процессором и памятью относятся к типу «регистр-память», а пересылки в памяти - к типу «память-память».
Команды арифметической и логической обработки
В данную группу входят команды, обеспечивающие арифметическую и логическую обработку информации в различных формах ее представления. Для каждой формы представления чисел в АСК обычно предусматривается некий стандартный набор операций.
Помимо вычисления результата выполнение арифметических и логических операций сопровождается формированием в АЛУ признаков (флагов), характеризующих этот результат. Наиболее часто фиксируются такие признаки, как: Z (Zero) — нулевой результат; N (Negative) — отрицательный результат; V (oVer-flow) — переполнение разрядной сетки; С (Carry) — наличие переноса.
Операции с целыми числами
К стандартному набору операций над целыми числами, представленными в форме с фиксированной запятой, следует отнести:
Часто этот перечень дополняют такими операциями, как вычисление остатка от целочисленного деления, сложение с учетом переноса, вычитание с учетом заема, увеличение значения операнда на единицу (инкремент), уменьшение значения операнда на единицу (декремент).
Выполнение арифметических команд может дополнительно сопровождаться перемещением данных из устройства ввода в АЛУ или из АЛУ на устройство вывода.
Операции с числами в форме с плавающей запятой
Для работы с числами, представленными в форме с плавающей запятой, в АСК большинства машин предусмотрены:
Логические операции
Стандартная система команд ВМ содержит команды для выполнения различных логических операций над отдельными битами слов или других адресуемых единиц. Такие команды предназначены для обработки символьных и логических данных. Минимальный набор поддерживаемых логических операций — это «НЕ», «И», «ИЛИ» и сложение по модулю 2.
Операции сдвигов
В дополнение к побитовым логическим операциям, практически во всех АСК предусмотрены команды для реализации операций логического, арифметического и циклического сдвигов (рис. 3.).
Рис. 3. Варианты операций сдвига
При логическом сдвиге влево или вправо (см. рис. 3, а), сдвигаются все разряды слова. Биты, вышедшие за пределы разрядной сетки, теряются, а освободившиеся позиции заполняются нулями.
При арифметическом сдвиге (см. рис. 3, б) данные трактуются как целые числа со знаком, причем бит знака не изменяет положения. При сдвиге вправо освободившиеся позиции заполняются значением знакового разряда, а при сдвиге влево — нулями. Арифметические сдвиги позволяют ускорить выполнение некоторых арифметических операций. Так, если числа представлены двоичным дополнительным кодом, то сдвиги влево и вправо эквивалентны соответственно умножению и делению на 2.
При циклическом сдвиге (см. рис. 3, в) смещаются все разряды слова. Причем значение разряда, выходящего за пределы слова, заносится в позицию, освободившуюся с противоположной стороны, то есть потери информации не происходит, Одно из возможных применений циклических сдвигов — это перемещение интересующего бита в крайнюю левую (знаковую) позицию, где он может быть про анализирован как знак числа.
Операции с десятичными числами
В вычислительных машинах первых поколений для обработки таких чисел предусматривались специальные команды, обеспечивавшие выполнение основных арифметических операций (сложение, вычитание, умножение и деление). В АСК современных машин подобных команд обычно нет, а соответствующие вычисления имитируются с помощью команд целочисленной арифметики.
Команды для работы со строками
Для работы со строками в АСК обычно предусматриваются команды, обеспечивающие перемещение, сравнение и поиск строк. В большинстве машин перечисленные операции просто имитируются за счет других команд.
SIMD-команды
Название данного типа команд представляет собой аббревиатуру от Single Instruc tion Multiple Data — буквально «одна инструкция — много данных». В отличие от обычных команд, оперирующих двумя числами, SIMD-команды обрабатывают сразу две группы чисел (в принципе их можно называть групповыми командами). Операнды таких команд обычно представлены в одном из упакованных форматов.
Идея SIMD-обработки была выдвинута в Институте точной механики и вы числительной техники им. С. А. Лебедева в 1978 году в рамках проекта «Эльбрус-1». С 1992 года команды типа SIMD становятся неотъемлемым элементом АСК микропроцессоров фирм Intel и AMD. Поводом послужило широкое распространение мультимедийных приложений. Видео, трехмерная графика и звук в ВМ представляются большими массивами данных, элементы которых чаще всего обрабатываются идентично. Так, при сжатии видео и преобразовании его в формат MPEG один и тот же алгоритм применяется к тысячам битов данных. В трехмерной графике часто встречаются операции, которые можно выполнить за один такт: интерполирование и нормировка векторов, вычисление скалярного произведения век торов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в АСК позволяет существенно ускорить подобные вычисления.
Первой на мультимедийный бум отреагировала фирма Intel, добавив в систему команд своего микропроцессора Pentium ММХ 57 SIMD-команд. Название ММХ (MultiMedia eXtention — мультимедийное расширение) разработчики обосновывали тем, что при выборе состава новых команд были проанализированы алгоритмы, применяемые в различных мультимедийных приложениях. Команды ММХ обеспечивали параллельную обработку упакованных целых чисел. При выполнении арифметических операций каждое из чисел, входящих в группу, рассматривается как самостоятельное, без связи с соседними числами. Учитывая специфику обрабатываемой информации, команды ММХ реализуют так называемую арифметику с насыщением: если в результате сложения образуется число, выходящее за пределы отведенных под него позиций, оно заменяется наибольшим двоичным числом, которое в эти позиции вмещается. На рис. 4 показано сложение двух групп четырехразрядных целых чисел, упакованных в 32-разрядные слова.
Рис. 4. Сложение с насыщением упакованных целых чисел
Следующим шагом стало создание новых наборов SIMD-команд, работающих также с операндами, представленными в виде упакованных чисел с плавающей запятой. Такие команды в соответствующих приложениях повышают производи тельность процессора примерно вдвое. Первой подобную технологию в середине 1998 года предложила фирма AMD в микропроцессоре К6-2. Это мультимедийное расширение включало в себя 21 SIMD-команду и получило название 3DNow!. Расширение 3DNow! в дополнение к SIMD-обработке целочисленной информации типа ММХ позволяло оперировать парой упакованных чисел в формате с плавающей запятой.
Полугодом позже фирма Intel ввела в свои микропроцессоры так называемые потоковые SIMD-команды, обозначив их аббревиатурой SSE — Streaming SIMD Extension (потоковая обработка по принципу «одна команда — много данных»). Сначала это были 70 команд в микропроцессоре Pentium III. Команды дополняли групповые целочисленные операции ММХ и расширяли их за счет групповых операций с 32-разрядными вещественными числами.
В зависимости от типа чисел (целые или вещественные) команды SSE делятся на три категории:
1) работа с упакованными группами целых чисел, которые могут иметь размер байта, слова, двойного слова или квадрослова (количество чисел в группе зависит от их разрядности и от разрядности всей группы — 64 или 128);
2) оперирование одной парой 32-разрядных или 64-разрядных чисел с плаваю щей запятой (обычная или двойная точность);
3) обработка четырех пар вещественных чисел обычной точности или двух пар вещественных чисел двойной точности.
Дальнейшее развитие технологии SSE вылилось в SSE2 и получило реализацию в Pentium 4. Этот вариант включает в себя 271 команду и позволяет выполнять групповые арифметические и логические операции, сдвиги, сравнения чисел, перегруппировку и извлечение отдельных чисел, различные варианты пересылок. За один такт обрабатываются четыре 32-разрядных числа с плавающей запятой, упакованных в 128-разрядное слово.
Команды преобразования
Команды преобразования осуществляют изменение формата представления данных. Примером может служить преобразование из десятичной системы счисления в двоичную.
Команды ввода/вывода
Команды этой группы могут быть подразделены на команды управления периферийным устройством (ПУ), проверки его состояния, ввода и вывода.
Команды управления периферийным устройством служат для запуска ПУ и указания ему требуемого действия. Например, накопителю на магнитной ленте может быть предписано на необходимость перемотки ленты или ее продвижения вперед на одну запись. Трактовка подобных инструкций зависит от типа ПУ.
Команды проверки состояния ввода/вывода применяются для тестирования различных признаков, характеризующих состояние модуля В/ВЫВ и подключенных к нему ПУ. Благодаря этим командам центральный процессор может выяснить, включено ли питание ПУ, завершена ли предыдущая операция ввода/вывода, возникли ли в процессе ввода/вывода какие-либо ошибки и т. п.
Собственно обмен информацией с ПУ обеспечивают команды ввода и вывода. Команды ввода предписывают модулю В/ВЫВ получить элемент данных (байт или слово) от ПУ и поместить его на шину данных, а команды вывода — заставляют модуль В/ВЫВ принять элемент данных с шины данных и переслать его на ПУ.
Команды управления системой
Команды, входящие в эту группу, являются привилегированными и могут выполняться, только когда центральный процессор ВМ находится в привилегированном состоянии или выполняет программу, находящуюся в привилегированной области памяти (обычно привилегированный режим используется лишь операционной системой). Так, лишь эти команды способны считывать и изменять состояние ряда регистров устройства управления.
Команды управления потоком команд
Концепция фон-неймановской вычислительной машины предполагает, что команды программы, как правило, выполняются в порядке их расположения в памяти. Для получения адреса очередной команды достаточно увеличить содержимое счетчика команд на длину текущей команды. В то же время основные преимущества ВМ заключаются именно в возможности изменения хода вычислений в зависимости от возникающих в процессе счета результатов. С этой целью в АСК вычисли тельной машины включаются команды, позволяющие нарушить естественный порядок следования и передать управление в иную точку программы. В адресной части таких команд содержится адрес точки перехода (адрес той команды, которая должна быть выполнена следующей). Переход реализуется путем загрузки адреса точки перехода в счетчик команд (вместо увеличения содержимого этого счетчика на длину команды).
В системе команд ВМ можно выделить три типа команд, способных изменить последовательность вычислений:
Несмотря на то что присутствие в программе большого числа команд безусловного перехода считается признаком плохого стиля программирования, такие команды обязательно входят в АСК любой ВМ. Для их обозначения в языке ассемблера обычно используется английское слово jump (прыжок). Команда безусловного перехода обеспечивает переход по заданному адресу без проверки каких-либо условий.
Условный переход происходит только при соблюдении определенного условия, в противном случае выполняется следующая по порядку команда программы. Большинство производителей ВМ в своих ассемблерах обозначают подобные команды словом branch (ветвление).
Условием, на основании которого осуществляется переход, чаще всего выступают признаки результата предшествующей арифметической или логической операции. Каждый из признаков фиксируется в своем разряде регистра флагов процессора. Возможен и иной подход, когда решение о переходе принимается в зависимости от состояния одного из регистров общего назначения, куда предварительно помещается результат операции сравнения. Третий вариант — это объединение операций сравнения и перехода в одной команде.
В системе команд ВМ для каждого признака результата предусматривается своя команда ветвления (иногда — две: переход при наличии признака и переход при его отсутствии). Большая часть условных переходов связана с проверкой взаимного соотношения двух величин или с равенством (неравенством) некоторой величины нулю. Последний вид проверок используется в программах наиболее интенсивно.
Одной из форм команд условного перехода являются команды пропуска. В них адрес перехода отсутствует, а при выполнении условия происходит пропуск следующей команды, то есть предполагается, что отсутствующий в команде адрес следующей команды эквивалентен адресу текущей команды, увеличенному на длину пропускаемой команды. Такой прием позволяет сократить длину команд передачи управления.
Для всех языков программирования характерно интенсивное использование механизма процедур. Процедура может быть вызвана в любой точке программы. Для ВМ такой вызов означает, что в этой точке необходимо выполнить процедуру, после чего вернуться в точку, непосредственно следующую за местом вызова.
Процедурный механизм базируется на командах вызова процедуры, обеспечивающих переход из текущей точки программы к начальной команде процедуры, и командах возврата из процедуры, для возврата в точку, непосредственно расположенную за командой вызова. Такой режим предполагает наличие средств для сохранения текущего состояния содержимого счетчика команд в момент вызова (запоминание адреса точки возврата) и его восстановления при выходе из процедуры.
Форматы команд
Типовая команда, в общем случае, должна указывать:
1) код подлежащей выполнению операции;
2) адреса исходных данных (операндов), над которыми выполняется операция;
3) адрес, по которому должен быть помещен результат операции.
В соответствии с этим команда состоит из двух частей: операционной и адрес ной:
Формат команды определяет ее структуру, то есть количество двоичных раз рядов, отводимых под всю команду, а также количество и расположение отдельных полей команды. Полем называется совокупность двоичных разрядов, кодирующих составную часть команды. При создании ЭВМ выбор формата команды влияет на многие характеристики будущей машины. Оценивая возможные форматы, нужно учитывать следующие факторы:
1) общее число различных команд;
2) общую длину команды;
3) тип полей команды (фиксированной или переменной длины) и их длина;
4) простоту декодирования;
5) адресуемость и способы адресации;
6) стоимость оборудования для декодирования и исполнения команд.
Длина команды
Это важнейшее обстоятельство, влияющее на организацию и емкость памяти, структуру шин, сложность и быстродействие ЦП. С одной стороны, удобно иметь в распоряжении мощный набор команд, то есть как можно больше кодов операций, операндов, способов адресации, и максимальное адресное пространство. Однако все это требует выделения большего количества разрядов под каждое поле команды, что приводит к увеличению ее длины. Вместе с тем, для ускорения выборки из памяти желательно, чтобы команда была как можно короче, а ее длина была равна или кратна ширине шины данных. Для упрощения аппаратуры и повышения быстродействия ЭВМ длину команды обычно выбирают кратной байту, поскольку в большинстве ЭВМ основная память организована в виде 8-битовых ячеек. В рамках системы команд одной ЭВМ могут использоваться разные форматы команд. Обычно это связано с применением различных способов адресации. В таком случае в состав кода команды вводится поле для задания способа адресации (СА), и обобщенный формат команды приобретает следующий вид:
Разрядность поля кода операции
Количество двоичных разрядов, отводимых под код операции, выбирается так, чтобы можно было представить любую из операций. Если система команд предполагает NКОп различных операций , то минимальная разрядность поля кода операции RКОп определяется следующим образом:
RKOп = int(log2NKOп),
где int означает округление в большую сторону до целого числа.
При заданной длине кода команды приходится искать компромисс между раз рядностью поля кода операции и адресного поля. Большее количество возможных операций предполагает длинное поле кода операции, что ведет к сокращению адресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное число разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля.
Разрядность адресной части
В адресной части команды содержится информация о местонахождении исходных данных и месте сохранения результата операции. Обычно местонахождение каждого из операндов и результата задается в команде путем указания адреса со ответствующей ячейки основной памяти или номера регистра процессора. Принципы использования информации из адресной части команды определяет система адресации. Система адресации задает число адресов в команде и принятые способы адресации.
Количество адресов в команде
Для определения количества адресов, включаемых в адресную часть, будем использовать термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции.
К сожалению, в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции — 8 бит, то длина команды составит 104 бита (13 байт).
Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды:
Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.
Команду можно еще более сократить, перейдя к одноадресному формату, что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр ЦП, известный под названием аккумулятора, поскольку здесь аккумулируется результат.
Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры ЦП. Так как число регистров в ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название регистрового формата:
Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нулъадресный формат команды:
Способы адресации операндов
Вопрос о том, каким образом в адресном поле команды может быть указано место положение операндов, считается одним из центральных при разработке архитектуры ЭВМ. С точки зрения сокращения аппаратурных затрат очевидно стремление разработчиков уменьшить длину адресного поля при сохранении возможностей доступа ко всему адресному пространству. С другой стороны, способ задания адресов должен способствовать максимальному сближению конструктов языков программирования высокого уровня и машинных команд. Все это привело к тому, что в архитектуре системы команд любой ЭВМ предусмотрены различные способы адресации операндов.
Приступая к рассмотрению способов адресации, вначале определим понятия «исполнительный» и «адресный код».
Исполнительным адресом операнда (Аисп) называется двоичный код номера ячейки памяти, служащей источником или приемником операнда. Этот код подается на адресные входы запоминающего устройства (ЗУ), и по нему происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основ ной памяти, а в регистре процессора, его исполнительным адресом будет номер регистра.
Адресный код команды (Ак) — это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.
В современных ЭВМ исполнительный адрес и адресный код, как правило, не со впадают, и для доступа к данным требуется соответствующее преобразование. Способ адресации — это способ формирования исполнительного адреса операнда по адресному коду команды. Способ адресации существенно влияет на параметры процесса обработки информации. Одни способы позволяют увеличить емкость адресуемой памяти без удлинения команды, но снижают скорость выполнения операции, другие — ускоряют операции над массивами данных, третьи — упрощают работу с подпрограммами и т. д. В сегодняшних ЭВМ обычно имеется возможность применения нескольких различных способов адресации операндов к одной и той же операции.
Чтобы устройство управления вычислительной машины могло определить, ка кой именно способ адресации принят в данной команде, в разных ЭВМ используются различные приемы. Часто разным способам адресации соответствуют и разные коды операции. Другой подход — это добавление в состав команды специального поля способа адресации, содержимое которого определяет, какой из способов адресации должен быть применен. Иногда в команде имеется нескольких полей — по одному на каждый адрес. Отметим, что возможен также вариант, когда в команде вообще отсутствует адресная информация, то есть имеет место неявная адресация. При неявной адресации адресного поля либо просто нет, либо оно содержит не все необходимые адреса — отсутствующий адрес подразумевается кодом операции. Так, при исключении из команды адреса результата подразумевается, что результат помещается на место второго операнда. Неявная адресация применяется достаточно широко, поскольку позволяет сократить длину команды.
В настоящее время используются различные виды адресации, наиболее распространенные из которых рассматриваются ниже.
Типы и форматы операндов
Машинные команды оперируют данными, которые в этом случае принято называть операндами. К наиболее общим (базовым) типам операндов можно отнести: адреса, числа, символы и логические данные. Помимо них ВМ обеспечивает об работку и более сложных информационных единиц: графических изображений, аудио-, видео- и анимационной информации. Такая информация является производной от базовых типов данных и хранится в виде файлов на внешних запоминающих устройствах.
Классификация по месту хранения операндов
Количество команд и их сложность, безусловно, являются важнейшими фактора ми, однако не меньшую роль при выборе АСК играет ответ на вопрос о том, где могут храниться операнды и каким образом к ним осуществляется доступ. С этих позиций различают следующие виды архитектур системы команд:
1) стековую;
2) аккумуляторную;
3) регистровую;
4) с выделенным доступом к памяти.
Выбор той или иной архитектуры влияет на принципиальные моменты: сколь ко адресов будет содержать адресная часть команд, какова будет длина этих адресов, насколько просто будет происходить доступ к операндам и какой, в конечном итоге, будет общая длина команд.
Стековая архитектура
Стеком называется память, по своей структурной организации отличная от основной памяти ЭВМ. Принципы построения стековой памяти детально рассматриваются позже, здесь же выделим только те аспекты, которые требуются для пояс нения особенностей АСК на базе стека.
Стек образует множество логически взаимосвязанных ячеек (рис. 5), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).
Рис. 5. Принцип действия стековой памяти
Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмотрены две операции: push (проталкивание данных в стек) и pop (выталкивание данных из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. В вы числительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стековой памяти. Результат операции заносится в стек.
Аккумуляторная архитектура
Архитектура на базе аккумулятора исторически возникла одной из первых. В ней для хранения одного из операндов арифметической или логической операции в процессоре имеется выделенный регистр — аккумулятор. В этот же регистр заносится и результат операции. Поскольку адрес одного из операндов предопределен, в командах обработки достаточно явно указать местоположение только второго операнда. Изначально оба операнда хранятся в основной памяти, и до выполнения операции один из них нужно загрузить в аккумулятор. После выполнения команды обработки результат находится в аккумуляторе и, если он не является операндом для последующей команды, его требуется сохранить в ячейке памяти.
Для загрузки в аккумулятор содержимого ячейки х предусмотрена команда за грузки load x. По этой команде информация считывается из ячейки памяти х, вы ход памяти подключается к входам аккумулятора и происходит занесение считан ныхданных в аккумулятор.
Запись содержимого аккумулятора в ячейку х осуществляется командой со хранения store х, при выполнении которой выходы аккумулятора подключаются к шине, после чего информация с шины записывается в память.
Для выполнения операции в АЛУ производится считывание одного из операндов из памяти в регистр данных. Второй операнд находится в аккумуляторе. Вы ходы регистра данных и аккумулятора подключаются к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.
Достоинствами аккумуляторной АСК можно считать короткие команды и про стотудекодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.
Регистровая архитектура
В машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения (РОН). Эти регистры, в каком-то смысле, можно рассматривать как явно управляемый кэш для хранения недавно использовавшихся данных.
Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления но мера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISC-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ЭВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.
Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки:
В варианте «регистр-регистр» операнды могут находиться только в регистрах. В них же засылается и результат. Подтип «регистр-память» предполагает, что один из операндов размещается в регистре, а второй в основной памяти. Результат обычно замещает один из операндов. В командах типа «память-память» оба операнда хранятся в основной памяти. Результат заносится в память.
Архитектура с выделенным доступом к памяти
В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и но мер регистра). Пересылка информации в противоположном направлении производится командой store (сохранение). Операнды во всех командах обработки ин формации могут находиться только в регистрах процессора (чаще всего в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. Допускается наличие в АСК ограниченного числа команд, где операнд является частью кода команды.
По областям применения программное обеспечение компьютера подразделяют на системное и прикладное.
Системное, или общее, программное обеспечение выступает в качестве «организатора» всех компонент компьютера, а также подключенных к нему внешних устройств.
В составе системного программного обеспечения выделяют две компоненты:
1) операционную систему – целый комплекс управляющих программ, являющихся интерфейсом между компонентами ПК и обеспечивающих наиболее эффективное использование ресурсов ЭВМ. Операционная система загружается при включении компьютера;
2) утилиты – вспомогательные программы технического обслуживания.
К утилитам относятся:
• программы для диагностики компьютера – проверяют конфигурацию компьютера и работоспособность его устройств; прежде всего осуществляется проверка жестких дисков на наличие ошибок;
• программы для оптимизации дисков – обеспечивают более быстрый доступ к информации, хранящейся на жестком диске, за счет оптимизации размещения данных на нем. Процесс оптимизации данных на жестком диске более известен как процесс дефрагментации диска;
• программы для очистки диска – находят и удаляют ненужную информацию (например, временные файлы, временные интернет-файлы, файлы, расположенные в корзине, и др.);
• программы-кэши для диска – ускоряют доступ к данным на диске путем организации в ОП компьютера кэш-буфера, содержащего наиболее часто используемые участки диска;
• программы динамического сжатия дисков – увеличивают объем информации, хранимой на жестких дисках, путем ее динамического сжатия. Действия данных программ для пользователя не заметны, они проявляются только через увеличение емкости дисков и изменение скорости доступа к информации;
• программы-упаковщики (или архиваторы) – упаковывают данные на жестких дисках за счет применения специальных методов сжатия информации. Данные программы позволяют освободить значительное место на диске за счет сжатия информации;
• антивирусные программы – предотвращают заражение компьютерным вирусом и ликвидируют его последствия;
• системы программирования – комплекс программ для автоматизации процесса программирования сценариев работы ЭВМ.
Прикладное программное обеспечение представляет собой специальные программы, которые применяются при решении определенных практических задач. В настоящее время программистами разработано множество прикладных программ, применяемых в математике, бухгалтерии и других областях науки.
1. Полный перечень команд, которые способна выполнять данная ЭВМ – это…
2. CISC – это..
3. RISC – это..
4. VLIW – это..
5. Принципы использования информации из адресной части команды определяет…
6. Формат команды определяет…
7. Машинные команды оперируют данными, которые принято называть…
8. множество логически взаимосвязанных ячеек, взаимодействующих по принципу «последним вошел, первым вышел» образует…
9. Верхняя ячейка стека называется…
10. выделенный регистр в процессоре для хранения одного из операндов арифметической или логической операции
Команды, системы команд, программное обеспечение и системное программное обеспечение играют важную роль в функционировании компьютеров и обеспечении их работы, начиная от управления аппаратурой до выполнения сложных задач на пользовательском уровне.
Комментарии
Оставить комментарий
Информатика
Термины: Информатика