Главная » Просмотр файлов » Э. Таненбаум - Архитектура компьютера

Э. Таненбаум - Архитектура компьютера (1127755), страница 105

Файл №1127755 Э. Таненбаум - Архитектура компьютера (Э. Таненбаум - Архитектура компьютера) 105 страницаЭ. Таненбаум - Архитектура компьютера (1127755) страница 1052019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 105)

Важным применением команды ИЛИ является помещение битов в слово. Эта операция обратна операции извлечения. Чтобы изменить правые 8 бит 32-раз- Типы команд 421 рядного слова, не повредив при этом остальные 24 бита, сначала нежелательные 8 бит надо заменить нулями, а затем новый символ соединить операцией ИЛИ с полученным результатом: А: 10110111 10111100 11011011 10001011 В (маска): 11111111 11111111 11111111 00000000 А ИВ: 10110111 10111100 11011011 00000000 С: 00000000 00000000 00000000 01010111 (А И В) ИЛИ С: 10110111 10111100 11011011 01010111 Операция И удаляет единицы, поэтому в полученном результате никогда не бывает больше единиц, чем в любом из двух операндов. Операция ИЛИ вставляет единицы, поэтому в полученном результате всегда по крайней мере столько же единиц, сколько в операнде с большим количеством единиц.

Операция ИСКЛЮЧАЮ)ЦЕЕ ИЛИ, в отличие от них, симметрична в отношении единиц и нулей. Такая симметрия иногда может быть полезной, например при порождении случайных чисел. Большинство компьютеров сегодня поддерживают команды с плавающей точкой, которые в основном соответствуют арифметическим операциям с целыми числами. Большая часп машин поддерживает по крайней мере 2 варианта таких чисел: более короткие для скорости и более длинные на тот случай, если требуется высокая точность вычислений. Существует множество возможных форматов для чисел с плавающей точкой, но сейчас практически везде применяется единый стандарт 1ЕЕЕ 754.

Числа с плавающей точкой и этот стандарт обсуждшотся в приложении Б. Унарные операции В унарных операциях результат получается обработкой единственного операнда. Поскольку в данном случае нужно задавать на один адрес меньше, чем в бинарных операциях, команды иногда бывают короче, если только не требуется задавать другую информацию. Очень полезны команды сдвига и циклического сдвига. Они часто даются в нескольких вариантах. Сдвиги — это операции, при которых биты сдвигаются влево или вправо, при этом биты, которые сдвигаются за пределы слова, утрачиваются. Циклические сдвиги — это сдвиги, при которых биты, вытесненные с одного конца, появляются на другом конце слова.

Разницу между обычным сдвигом и циклическим сдвигом иллюстрирует следующий пример: А: 00000000 00000000 00000000 01110011 Сдвиг А вправо на 2 бита: 00000000 00000000 00000000 00011100 Циклический сдвиг А вправо на 2 бита: 11000000 00000000 00000000 00011100 422 Глава 5. Уровень архитектуры набора команд Обычные и циклические сдвиги влево и вправо играют очень важную роль. Если и-разрядное слово циклически сдвигается влево на й бит, результат будет такой же, как при циклическом сдвиге вправо на и — й бит. Сдвиги вправо часто выполняются с расширением по знаку.

Это значит, что позиции, освободившиеся на левом конце слова, заполняются знаковым битом (О или 1) исходного слова, как будто знаковый бит перетаскивают вправо. Кроме того, это значит, что отрицательное число остается отрицательным. Вот как выглядят сдвиги на 2 бита вправо: А; 1111111 11111111 11111111 11110000 А сдвигается без знакового расширения: 0011111 11111111 11111111 11111100 А сдвигается со знаковым расширением: 1111111 11111111 11111111 11111100 Операция сдвига используется при умножении и делении на 2. Если положительное целое число сдвигается влево на й бит, результатом будет исходное число, умноженное на 2~. Если положительное целое число сдвигается вправо на Й бит, результатом становится исходное число, деленное на 2ь.

Сдвиги могут использоваться для повышения скорости выполнения некоторых арифметических операций. Рассмотрим выражение 18 х и, где и — положительное целое число: 18 х и = 16 х и + 2 х и. Значение 16 х и можно получить путем сдвига копии п на 4 бита влево. Значение 2 х и можно получить, сдвинув п на 1 бит влево.

Сумма этих двух чисел равна 18 х и. Таким образом, целиком произведение можно вычислить путем одного перемещения, двух сдвигов и одного сложения, что обычно выполняется гораздо быстрее, чем операция умножения. Конечно, компилятор может применить такую схему, только если один из множителей является константой. Сдвиг отрицательных чисел даже со знаковым расширением дает совершенно другие результаты. Рассмотрим, например, число — 1 в обратном двоичном коде.

При сдвиге влево на 1 бит получается число -3. При сдвиге влево еще на 1 бит получается число — 7: Число -1 в обратном двоичном коде; 11111111 11111111 11111111 11111110 Число -1 сдвигается влево на 1 бит ( — 3): 11111111 11111111 11111111 11111100 Число -1 сдвигается влево на 2 бита ( — 7): 11111111 11111111 11111111 11111000 Сдвиг влево отрицательных чисел в обратном двоичном коде не ведет к умножению числа на 2. В то же время сдвиг вправо корректно обеспечивает деление.

А теперь рассмотрим число -1 в дополнительном двоичном коде. При сдвиге вправо на 6 бит с расширением по знаку получается число — 1, что неверно, поскольку целая часть от -1/64 равна 0: Число -1 в дополнительном двоичном коде: 11111111 11111111 11111111 11111111 Число — 1, сдвинутое влево на 6 бит, равно -1; 11111111 11111111 11111111 11111111 Типы команд 423 Как правило, сдвиг вправо вызывает ошибки, поскольку он производит округление до большего отрицательного целого числа, что недопустимо при выполнении целочисленных арифметических операций с отрицательными числами. В то же время сдвиг влево аналогичен умножению на 2.

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

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

Прибавление 1 к слову тоже часто требуется при различных подсчетах. Унарная форма команды А00 — это операция инкремента 1МС. Другой пример — операция МЕ6. Отрицание Х вЂ” это на самом деле бинарная операция вычитания 0 — Х, но поскольку операция отрицания применяется очень часто, в архитектуру команд вводится команда МЕ6. Важно понимать разницу между арифметической операцией МЕ6 и логической операцией МОТ. При выполнении операции МЕ6 происходит аддитивная инверсия числа (такое число, сумма которого с исходным числом дает О).

При выполнении операции МОТ все биты в слове просто инвертируются. Эти операции очень похожи, а для системы, в которой отрицательные величины представлены в обратном двоичном коде„они идентичны. (В арифметике дополнительных кодов для выполнения команды МЕ6 сначала инвертируются все биты, а затем к полученному результату прибавляется 1.) Унарные и бинарные операции часто объединяются в группы по функциям, которые они выполняют, а вовсе не по числу операндов. В первую группу входят арифметические операции, в том числе операция отрицания. Во вторую группу входят логические операции и операции сдвига, поскольку эти две категории очень часто используются вместе для извлечения данных. Сравнения и условные переходы Практически все программы должны проверять свои данные н на основе полученных результатов изменять последовательность выполняемых команд.

Рассмотрим функцию извлечения квадратного корня из числа х. Если это число отрицательно, функция должна сообщать об ошибке, если положительно — выполнять вычисления. То есть соответствующая программа должна проверять знак числа х, а затем совершать переход в зависимости от полученного результата. 424 Глава 5. Уровень архитектуры набора команд Этот алгоритм можно реализовать с помощью специальных команд условного перехода, проверяющих разного рода условия и при их выполнении совершающих переходы к определенным адресам памяти. Иногда один из битов в команде указывает, нужно ли осуществлять переход в случае выполнения или в случае не выполнения условия. Часто целевой адрес является не абсолютным, а относительным (связанным с текущей командой). Самое распространенное условие — проверка на равенство или на неравенство определенного бита нулю. Если команда проверяет знаковый бит числа и совершает переход к метке (ШВЕЕ), когда этот бит равен 1 (проверяемое число отрицательно), то выполняются те команды, которые начинаются с метки ШВЕЕ, а если этот бит равен О (проверяемое число положительно), то выполняются команды, следующие за командой условного перехода.

Во многих машинах имеются биты кодов условий; например, это может быть бит переполнения, который принимает значение 1 всякий раз, когда арифметическая операция выдает неправильный результат. По этому биту проверяется правильность выполнения предыдуп1ей арифметической операции и в случае ошибки запускается программа обработки ошибок. В некоторых процессорах есть специальный бит переноса, который принимает значение 1, если происходит перенос из самого левого бита (например, при сложении двух отрицательных чисел).

Характеристики

Тип файла
DJVU-файл
Размер
13,7 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6461
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее