Э. Таненбаум - Архитектура компьютера (1127755), страница 98
Текст из файла (страница 98)
Здесь очень важны символы, хотя не каждый компьютер обеспечивает аппаратную поддержку для них. Наиболее распространенными символьными кодами явля1отся АЗСН и 1)Н1СОРЕ. Они поддерживают 7-разрядные и 16-разрядные символы соответственно. Эти коды обсуждались в главе 2. На уровне архитектуры набора команд часто имеются особые команды, предназначенные для операций со строками. Эти строки иногда разграничиваются специальным символом в конце.
Вместо терминального символа для определения конца строки может использоваться поле длины строки. Строковые команды позволяют выполнять копирование, поиск и редактирование строк, а также другие действия. К нечисловым относится также очень важный логический тип данных, содержащий булевы значения. Этих значений два: истина и ложь. Теоретически булево значение можно представлять единственным битом: 0 — ложь, 1 — истина (или наоборот). На практике же используется байт или слово, поскольку отдельные биты в байте не имеют собственных адресов и, следовательно, к ним трудно обращаться.
В обычных системах применяется следующее соглашение: 0 означает ложь, а любое другое значение — истину. Единственная ситуация, в которой булево значение представлено одним битом — это массив битов, поэтому 32-разрядное слово может содержать 32 булевых значения. Такая структура данных называется битовым отображением, или Типы данных 393 битовой картой.
Битовое отображение встречается в различных контекстах, например, оно позволяет отслеживать свободные блоки на диске — в этом случае каждый быт отображает состояние каждого блока. Если диск содержит и блоков, тогда битовое отображение будет содержать л бит. Последний тип данных — это указатели, которые представляют собой машинные адреса. Мы уже неоднократно рассматривали указатели. В машинах М(с-х регистры 5Р, РС, ЬЪ' и СРР— это примеры указателей. Доступ к переменной на фиксированном расстоянии от указателя (а именно так работает команда 100А0) широко поддерживается всеми машинами. Типы данных процессора Репбит 4 Рептшш 4 поддерживает двоичные целые числа со знаком, целые числа без знака, числа двоично-десятичной системы счисления и числа с плавающей точкой по стандарту 1ЕЕЕ 754 (табл.
5.2). Эта машина является 8/16-разрядной и оперирует целыми числами такой же длины. Она поддерживает многочисленные арифметические команды, булевы операции и операции сравнения. Операнды не обязательно должны быть выровнены в памяти, но если адреса слов кратны значению 4 байта, имеет место более высокая производительность. Таблица 6.2. Числовые типы данных процессора Репбпгп 4 1 бит 8 бит 16 бит 32 бита 64 бита 128 бит Тип Бит Целые числа со знаком Целые числа без знака Да Да Да Да Да Двоично-десятичные целые числа Да Числа с плавающей точкой Да Да Типы данных машины О!тгаЗРАВС П! П1гга5РАКС П1 поддерживает множество форматов данных (табл.
5.3). Эта машина может обрабатывать 8-, 16ъ 32- и 64-раэрядные целочисленные операнды со знаком и без знака. Целые числа со знаком представлены в дополнительном коде. Кроме того, имеются операнды с плавающей точкой по 32, 64 и 128 бит, которые соответствуют стандарту 1ЕЕЕ 754 (для 32- и 64-разрядных чисел). Двоично-десятичные числа не поддерживаются. Все операнды должны быть выровнены в памяти. Репгшш 4 также может манипулировать 8-разрядными АБСП-символами: существуют специальные команды для копирования и поиска строк символов. Эти команды используются и для строк, длина которых известна заранее, и для строк, в конце которых стоит специальный терминальный символ. Строковые команды часто объединяются в библиотеки.
394 Глава 5. Уровень архитектуры набора команд Таблица 5.3. Числовые типы данных компьютера 011гаЯРАЯС 1й 1 бит 8 бит 16 бит 32 бита 64 бита 128 бит Тил Бит Да Да Да Да Целые числа со знаком Целые числа без знака Да Да Да Да Двоично-десятичные целые числа Числа с плавающей точкой Да Да Да Штга5РАКС 1П имеет регистровую структуру, и почти все команды оперируют 64-разрядными регистрами. Символьные и строковые типы данных специальными командами аппаратного обеспечения не поддерживаются. Типы данных 8051 Количество типов данных в микросхеме 8051 строго ограничено. Разрядность всех регистров, а значит, целых чисел и символов, составляет 8 бит. По существу, единственным типом данных для выполнения арифметических операций, который поддерживается аппаратно, является 8-разрядный байт (табл. 5.4).
Таблица 5.4. Числовые типы данных для 8051 1 бит 8 бит 16 бит 32 бита 64 бита 128 бит Тип Бит Да Целые числа со знаком Целые числа без знака Двоично-десятичные целые числа Числа с плавающей точкой Кроме того, 8051 поддерживает еще один тип данных, который не используется при выполнении арифметических операций, — бит. Блок из 16 байт, начинающийся с адреса 32, являет собой память с битовой ориентацией. Путем смещения от 0 до 127 можно обращаться индивидуально к каждому биту. Бит 0 занимает в байте 32 крайнее правое положение, бит 1 расположен сразу за ним, и т.
д. Для битов предусмотрены команды установки, сброса, выполнения операций И и ИЛИ, образования дополнения, перехода к битам и проверки. Во встроенных системах состояния переключателей, световых индикаторов и других устройств ввода-вывода сохраняются именно в отдельных битах, позтому возможность непосредственного управления ими очень важна. Форматы команд 395 Форматы команд Команда состоит из кода операции и некоторой дополнительной информации, позволяющей узнать, например, откуда поступают операнды и куда должны отправляться результаты. Процесс определения, где находятся операнды (то есть их адреса), называется адресацией.
На рис. 5.6 показано несколько возможных форматов команд уровня архитектуры набора команд. Команды всегда содержат код операции. В команде могут присутствовать ни одного, один, два или три адреса. Рис. 6.6. Четыре формата команд: безадресная команда (а); одноадресная команда (б); двуха)азесная команда (в); трехадресная команда (г) В одних машинах все команды по длине одинаковы, в других могут быть разными. Кроме того, команды по длине могут быть короче слова, длиннее слова или быть равными слову. Если все команды одной длины, то это упрощает декодирование, но часто требует излишнего пространства, поскольку все команды должны быть такой же длины, как самая длинная.
На рис. 5.7 показано несколько возможных соотношений между размерами команды и слова. — — 1 слово —— — — 1 слово — — — 1 слово Рис. 6.7. Некоторые возможные отношения между размерами команды и слова Критерии разработки форматов команд Если разработчикам нужно выбрать форматы команд для их машины, они должны принять во внимание ряд факторов. Нельзя недооценивать сложность этого 396 Глава 5. Уровень архитектуры набора команд решения. Если компьютер с коммерческой точки зрения получается удачным, набор команд может существовать на протяжении 20 лет и более.
Имеет огромное значение возможность на протяжении некоторого времени добавлять новые команды и другие элементы, но только в том случае, если архитектура (и компания, создавшая эту архитектуру) протянет достаточно долго. Эффективность конкретной архитектуры команд зависит от технологии, которая применялась при разработке компьютера. За длительный период времени эта технология значительно изменится, и некоторые характеристики архитектуры команд окажутся (если оглянуться лет на 20 назад) неудачными. Например, если доступ к памяти осуществляется быстро, то подойдет стековая архитектура (как в 1)Ъ'М), но если доступ к памяти медленный, тогда желательно иметь множество регистров (как в П)Г гаЗРАКС П1).
Тем читателям, которые считают, что выбор сделать просто, мы предлагаем взять лист бумаги и записать следую|цие предположения: + Какова будет типичная частота тактового генератора через 20 лет? + Каково будет типичное время доступа к ОЗУ через 20 лет? Аккуратно сложите этот лист бумаги и спрячьте его в надежном месте, а через 20 лет разверните и прочитайте, что на нем написано. Те из вас, кто принял этот вызов, могут, чтобы не пачкать бумагу, выставить свои пророчества в Интернете. Даже дальновидные разработчики не всегда могут сделать правильный выбор.
А если бы и смогли, то проработали бы недолго, поскольку если предлагаемая ими архитектура команд окажется дороже, чем у конкурентов, компания долго не продержится. Если речь идет об одинаковых машинах, то лучше иметь короткие команды, чем длинные. Программа, состоящая из л 16-разрядных команд, занимает в два раза меньше пространства памяти, чем программа из п 32-разрядных. Поскольку цены на память постоянно падают, этот фактор не имел бы значения в будугпем, но, к сожалению, программное обеспечение разрастается гораздо быстрее, чем снижаются цены.