Организация ЭВМ и систем. Однопроцессорные ЭВМ
Функции устройств, входящих в состав неймановской модели электронно-вычислительной машины. Контроллер как блок обработки данных и выдачи управляющих сигналов. Особенности десятичной системы счисления. Принципы построения элементарного процессора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курс лекций |
Язык | русский |
Дата добавления | 28.12.2020 |
Размер файла | 787,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Такая структура называется магистрально-модульной. Ее основу составляет общая магистраль (общая шина), к которой подсоединены в нужной номенклатуре и количестве все устройства машины, выполненные в виде конструктивно законченных модулей. Эта структура более простая и гибкая, чем у больших ЭВМ. Устройства машины обмениваются информацией только через общую магистраль.
Такая структура оказывается эффективной, а система обмена данных через общую шину - достаточно динамичной лишь при небольшом наборе ПУ.
Универсальность применения миниЭВМ при ограниченном наборе команд могла быть обеспечена лишь при сравнительно высоком быстродействии процессора - в первых моделях около 200-800 тысяч операций в секунду, что превышало скорость многих ЭВМ общего назначения. Это позволяло малым ЭВМ обслуживать технологические процессы в реальном масштабе времени, а также компенсировать замедление обработки данных, связанное с тем, что малый объем аппаратных средств вынуждал реализовывать многие процедуры обработки программным путем (например, операции арифметики с плавающей запятой).
Подобное решение оказалось настолько эффективным, что и сейчас простейшие контроллеры и микроЭВМ строятся по этой же схеме. Однако структуры сколько-нибудь сложных микро- и миниЭВМ, в частности персональных компьютеров, в процессе эволюции существенно усложнились. Современный персональный компьютер имеет сложную структуру магистралей, иерархию внутренней памяти и множество подсистем ввода-вывода различного быстродействия. Архитектура современного персонального компьютера будет рассмотрена в отдельном разделе.
Вопросы для самопроверки
Укажите, чем АВМ отличается от ЦВМ.
Назовите основные этапы эволюции ЭВМ.
Опишите классическую структуру ЭВМ по Нейману и укажите свойства каждого блока.
В чем заключается принцип оптимального соотношения аппаратных и программных средств при построении вычислительной техники?
Опишите способ обращения пользователя ЭВМ к ее аппаратным средствам.
Что нового появилось в каждом поколении по отношению к предыдущему.
Чем различается принцип построения малых ЭВМ и больших ЭВМ общего пользования?
2. Представление информации в ЭВМ
2.1 Позиционные системы счисления
Под системой счисления понимают способ представления любого числа с помощью некоторого алфавита символов, называемых цифрами. Существуют различные системы счисления. От их особенностей зависят наглядность представления числа при помощи цифр и сложность выполнения арифметических операций.
В ЭВМ используются только позиционные системы счисления с различными основаниями. Позиционные системы счисления характеризуются тем, что одна и та же цифра имеет различное значение, определяющееся позицией цифры в последовательности цифр, изображающих число.
Пример.:
· Десятичная система счисления - позиционная,
· Римская система счисления - непозиционная.
Количество S различных цифр, употребляющихся в позиционной системе счисления, называется ее основанием. В общем случае, любое число в позиционной системе счисления можно представить в виде полинома от основания S:
.
В качестве коэффициента могут стоять любые из S цифр, используемых в системе счисления. Однако для краткости число принято изображать в виде последовательности цифр.
Позиции цифры, отсчитанные от запятой (точки), отделяющей целую часть от дробной, называются разрядами. В позиционной системе счисления вес каждого разряда больше соседнего в число раз, равное основанию системы S.
Пример.
Для десятичной системы счисления (основание S = 10) имеем число 6321.564. Веса разряда и коэффициенты для этого числа будут следующими:
Веса |
103 |
102 |
101 |
100 |
10-1 |
10-2 |
10-3 |
|
6 |
3 |
2 |
1 |
5 |
6 |
4 |
В ЭВМ применяют двоичную, восьмеричную и шестнадцатеричную системы счисления.
В дальнейшем систему счисления, в которой записано число, будем обозначать подстрочным индексом, заключенным в круглые скобки. Например: 1101(2), 369(10), BF(16) и т.д.
2.2 Двоичная система счисления
В двоичной системе счисления основание S = 2, т.е. используются всего два символа: 0 и 1. Двоичная система счисления проще десятичной. Однако двоичное изображение числа требует большего (для многоразрядного числа примерно в 3,3 раза) числа разрядов, чем его десятичное представление. Тем не менее применение двоичной системы создает большие удобства для проектирования ЭВМ, так как для представления в машине разряда двоичного числа может быть использован любой простой элемент, имеющий всего два устойчивых состояния.
Также достоинством двоичной системы счисления является простота двоичной арифметики.
В общем виде двоичное число выглядит следующим образом:
, где .
Вес каждого разряда в двоичной системе счисления кратен 2 или 1/2.
Пример.
Двоичное число - 101101(2).
Веса |
, |
т.е. .
Как и в десятичной, в двоичной системе счисления для отделения целой части от дробной используется точка. Значение веса разрядов справа от точки равно основанию двоичной системы (2), возведенному в отрицательную степень. Такие веса - это дроби вида: 1/2, 1/22, 1/23, 1/24, 1/25 или 1/2, 1/4, 1/8, 1/16. Их можно выразить через десятичные дроби: 2-1 = 0.5, 2-2 = 0.25, 2-3 = 0.125, 2-4 = 0,0625.
В общем случае двоичное число имеет целую и дробную части, например 1101101.10111.
Каждая позиция, занятая двоичной цифрой, называется битом. Бит является наименьшей единицей информации в ЭВМ. Наименьшим значащим битом (МЗР) называют самый младший двоичный разряд, а самым старшим двоичным разрядом - наибольший значащий бит (СЗР). В двоичном числе эти биты имеют соответственно наименьший и наибольший вес. Обычно двоичное число записывают так, что старший значащий бит является крайним слева.
Преобразование двоичных чисел в десятичные
Для преобразования двоичных чисел в десятичные необходимо сложить десятичные веса всех разрядов двоичного числа, в которых содержатся единицы.
Пример.
Преобразовать целое двоичное число 11001100(2) в десятичное.
Преобразование вещественного двоичного числа 101.011(2) будет выглядеть следующим образом:
Если преобразуемое число большое, то операцию перевода удобнее делать отдельно для целой и дробной частей.
При работе с ЭВМ, особенно с микропроцессорами, очень часто приходится выполнять преобразование десятичных чисел в двоичные.
Для преобразования целого десятичного числа в двоичное необходимо разделить его на основание новой системы счисления (S = 2). Полученное частное снова делится на основание новой системы счисления, до тех пор пока частное, полученное в результате очередного деления, не будет меньше основания новой системы счисления. Последнее частное (являющееся старшим значащим разрядом) и все полученные остатки от деления составляют число в новой системе счисления.
Проиллюстрируем преобразование на примере.
Пример.
Перевести целое десятичное число 10(10) в двоичное число.
Если процедуру перевода выполняет человек, то последний шаг получения частного, равного нулю, никогда не делается. Если перевод выполняется ЭВМ, то он необходим. Таким образом, полный вариант преобразования 10(10) будет иметь следующий вид:
Пример.
Десятичное число 57(10) преобразовать в двоичное число.
Для перевода дробных чисел (или дробных частей вещественных чисел) требуется другая процедура преобразования. Рассмотрим ее на примере.
Пример.
Десятичное число 0.375(10) преобразовать в двоичное число.
Умножим дробь на основание новой системы счисления S = 2: 2*0.375 = 0.75.
Если результат умножения меньше единицы, то СЗР присваивают значение 0. Если больше единицы, то присваивают значение 1. Поскольку 0.75<1, то СЗР=0.
Результат предыдущей операции вновь умножаем на основание новой системы счисления 2. Если бы он был больше единицы, то в этой операции умножения участвовала бы только его дробная часть. В данном случае: 2*0.75=1.5.
Поскольку 1.5>1, то ближайшему разряду справа от СЗР присваивается значение один, а следующая операция умножения производится только над дробной частью числа 1.5, т.е. над числом 0.5: 2*0.5=1.
Шаги описанной процедуры повторяются до тех пор, пока либо результат умножения не будет точно равен 1 (как в рассматриваемом примере), либо не будет достигнута требуемая точность.
Таким образом, 0.375(10) = 0.011(2).
Если в результате умножения на основание новой системы счисления S = 2 результат не равен единице, операцию останавливают при достижении необходимой точности, а целую часть результата последней операции умножения используют в качестве значения МЗР.
Пример.
Десятичное число 0.34375(10) преобразовать в двоичное число.
Таким образом, 0.34375(10) = 0.01011(2).
Пример.
Десятичное число 0.3(10) преобразовать в двоичное число.
Далее будут следовать повторяющиеся группы операций и результатов, поэтому ограничимся восемью разрядами, т.е. 0.3(10) = 0.01001100(2).
Из рассмотренных выше примеров видно, что если десятичное число дробное, то его преобразование в двоичное должно выполняться отдельно над его целой и дробной частями.
Следует иметь в виду, что рассмотренные процедуры перевода целых и дробных чисел из десятичных в двоичные и обратно являются общими для перевода чисел в любых позиционных системах счисления (т.е. целое число делится на основание системы счисления, в которую число переводится, а правильная дробь умножается). Притом надо помнить, что при выполнении переводов чисел из одной системы счисления в другую все необходимые арифметические действия выполняются в той системе счисления, в которой записано переводимое число.
Эта система имеет основание S = 10, но каждая цифра изображается четырехразрядным двоичным числом, называемым тетрадой. Обычно данная система счисления используется в ЭВМ при вводе и выводе информации. Однако в некоторых типах ЭВМ в АЛУ имеются специальные блоки десятичной арифметики, выполняющие операции над числами в двоично-десятичном коде. Это позволяет в ряде случаев существенно повышать производительность ЭВМ.
Например, в автоматизированной системе обработки данных чисел много, а вычислений мало. В этом случае операции, связанные с переводом чисел из одной системы в другую, существенно превысили бы время выполнения операций по обработке информации.
Перевод чисел из десятичной системы в двоично-десятичную весьма прост и заключается в замене каждой цифры двоичной тетрадой.
Пример.
Записать десятичное число 572.38(10) в двоично-десятичной системе счисления.
Обратный перевод также прост: необходимо двоично-десятичное число разбить на тетрады от точки влево (для целой части) и вправо (для дробной), дописать необходимое число незначащих нулей, а затем каждую тетраду записать в виде десятичной цифры.
Пример.
Записать двоично-десятичное число 10010.010101(2-10) в десятичной системе счисления.
Перевод чисел из двоично-десятичной в двоичную систему осуществляется по общим правилам, описанным выше.
2.3 Восьмеричная система счисления
В восьмеричной системе счисления употребляются всего восемь цифр, т.е. эта система счисления имеет основание S = 8. В общем виде восьмеричное число выглядит следующим образом:
,
где .
Восьмеричная система счисления не нужна ЭВМ в отличие от двоичной системы. Она удобна как компактная форма записи чисел и используется программистами (например, в текстах программ для более краткой и удобной записи двоичных кодов команд, адресов и операндов). В восьмеричной системе счисления вес каждого разряда кратен восьми или одной восьмой, поэтому восьмиразрядное двоичное число позволяет выразить десятичные величины в пределах 0-255, а восьмеричное охватывает диапазон 0-99999999 (для двоичной это составляет 27 разрядов).
Поскольку 8=23, то каждый восьмеричный символ можно представить трехбитовым двоичным числом. Для перевода числа из двоичной системы счисления в восьмеричную необходимо разбить это число влево (для целой части) и вправо (для дробной) от точки (запятой) на группы по три разряда (триады) и представить каждую группу цифрой в восьмеричной системе счисления. Крайние неполные триады дополняются необходимым количеством незначащих нулей.
Пример.
Двоичное число 10101011111101(2) записать в восьмеричной системе счисления.
Пример.
Двоичное число 1011.0101(2) записать в восьмеричной системе счисления.
Перевод из восьмеричной системы счисления в двоичную осуществляется путем представления каждой цифры восьмеричного числа трехразрядным двоичным числом (триадой).
2.4 Шестнадцатеричная система счисления
Эта система счисления имеет основание S = 16. В общем виде шестнадцатеричное число выглядит следующим образом:
,
где .
Шестнадцатеричная система счисления позволяет еще короче записывать многоразрядные двоичные числа и, кроме того, сокращать запись 4-разрядного двоичного числа, т.е. полубайта, поскольку 16=24. Шестнадцатеричная система также применяется в текстах программ для более краткой и удобной записи двоичных чисел.
Для перевода числа из двоичной системы счисления в шестнадцатеричную необходимо разбить это число влево и вправо от точки на тетрады и представить каждую тетраду цифрой в шестнадцатеричной системе счисления.
Пример.
Двоичное число 10101011111101(2) записать в шестнадцатеричной системе.
Пример.
Двоичное число 11101.01111(2) записать в шестнадцатеричной системе.
Для перевода числа из шестнадцатеричной системы счисления в двоичную, необходимо, наоборот, каждую цифру этого числа заменить тетрадой.
В заключение следует отметить, что перевод из одной системы счисления в другую произвольных чисел можно осуществлять по общим правилам, описанным в разделе “Двоичная система счисления”. Однако на практике переводы чисел из десятичной системы в рассмотренные системы счисления и обратно осуществляются через двоичную систему счисления.
Кроме того, следует помнить, что шестнадцатеричные и восьмеричные числа - это только способ представления больших двоичных чисел, которыми фактически оперирует процессор. При этом шестнадцатеричная система оказывается предпочтительнее, поскольку в современных ЭВМ процессоры манипулируют словами длиной 4, 8, 16, 32 или 64 бита, т.е. длиной слов, кратной 4. В восьмеричной же системе счисления предпочтительны слова, кратные 3 битам, например слова длиной 12 бит (как в PDP-8 фирмы DEC).
2.5 Двоичная арифметика
Правила выполнения арифметических действий над двоичными числами определяются арифметическими действиями над одноразрядными двоичными числами.
перенос в старший разряд
Правила выполнения арифметических действий во всех позиционных системах счисления аналогичны.
Как и в десятичной системе счисления, сложение двоичных чисел начинается с правых (младших) разрядов. Если результат сложения цифр МЗР обоих слагаемых не помещается в этом же разряде результата, то происходит перенос. Цифра, переносимая в соседний разряд слева, добавляется к его содержимому. Такая операция выполняется над всеми разрядами слагаемых от МЗР до СЗР.
Пример.
Сложить два числа в десятичном и двоичном представлении (формат - 1 байт).
Перенос (единицы) 11 1111111
Слагаемое 1 099(10) 01100011(2)
Слагаемое 2 095(10) 01011111(2)
Сумма 194(10) 11000010(2)
Операция получается громоздкая со многими переносами, но удобная для ЭВМ.
Операция вычитания двоичных чисел аналогична операции в десятичной системе счисления. Операция вычитания начинается, как и сложение, с МЗР. Если содержимое разряда уменьшаемого меньше содержимого одноименного разряда вычитаемого, то происходит заем 1 из соседнего старшего разряда. Операция повторяется над всеми разрядами операндов от МЗР до СЗР.
Поясним это примером.
Пример.
Вычесть два числа в десятичном и двоичном представлении (формат - 1 байт).
Заем (единица) 1 01100000
Уменьшаемое 109(10) 01101101(2)
Вычитаемое 049(10) 00110001(2)
Разность 060(10) 00111100(2)
Второй вариант операции вычитания - когда уменьшаемое меньше вычитаемого - приведен в разделе представления двоичных чисел в дополнительном коде.
Как и в десятичной системе счисления, операция перемножения двоичных многоразрядных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения формируются в результате умножения множимого на каждый разряд множителя, начиная с МЗР. Каждое частичное произведение смещено относительно предыдущего на один разряд. Поскольку умножение идет в двоичной системе счисления, каждое частичное произведение равно либо 0 (если в соответствующем разряде множителя стоит 0), либо является копией множимого, смещенного на соответствующее число разрядов влево (если в разряде множителя стоит 1). Поэтому умножение двоичных чисел идет путем сдвига и сложения. Таким образом, количество частичных произведений определяется количеством единиц в множителе, а их сдвиг - положением единиц (МЗР частичного произведения совпадает с положением соответствующей единицы в множителе). Положение точки в дробном числе определяется так же, как и при умножении десятичных чисел.
Пример.
Вычислить произведение 17(10)*12(10) в двоичной форме.
Естественно, что при сложении частичных произведений в общем случае возникают переносы.
Теперь рассмотрим машинный вариант операции перемножения. Общий алгоритм перемножения имеет вид
Как отмечалось выше, операция перемножения состоит в формировании суммы частичных произведений, которые суммируются с соответствующими сдвигами относительно друг друга. Этот процесс суммирования можно начинать либо с младшего, либо со старшего частичного произведения. В ЭВМ процессу суммирования придают последовательный характер, т.е. формируют одно частичное произведение, к нему с соответствующим сдвигом прибавляют следующее и т.д. (т.е. не формируют все частичные произведения, а потом их складывают). В зависимости от того, с какого частичного произведения начинается суммирование (старшего или младшего), сдвиг текущей суммы осуществляется влево или вправо. При умножении целых чисел для фиксации результата в разрядной сетке число разрядов должно равняться сумме числа разрядов в X и Y.
Рассмотрим на примере два машинных варианта выполнения умножения целых чисел: начиная со старшего частичного произведения (“старшими разрядами вперед”) и начиная с младшего частичного произведения (“младшими разрядами вперед”).
Пример.
Найти произведение двух чисел X*Y=1101(2)*1011(2)=13(10)*11(10)= 143(10).
Обозначим Pi - i-е частичное произведение.
1. Умножение старшими разрядами вперед:
2. Умножение младшими разрядами вперед:
Деление - операция, обратная умножению, поэтому при делении двоичных чисел, так же как и в десятичной системе счисления, операция вычитания повторяется до тех пор, пока уменьшаемое не станет меньше вычитаемого. Число этих повторений показывает, сколько раз вычитаемое укладывается в уменьшаемом.
Пример.
Вычислить 204(10) /12(10) в двоичном коде.
Таким образом, процедура деления не так проста для машинной реализации, поскольку постоянно приходится выяснять, сколько раз делитель укладывается в определенном числе. В общем случае частное от деления получается дробным, причем выбор положения точки совершенно аналогичен тому, как это делается при операциях с десятичными числами.
Пример.
Вычислить 1100.011(2)/10.01(2).
2.6 Прямой, обратный и дополнительный коды
В целях упрощения выполнения арифметических операций и определения знака результата применяют специальные коды для представления чисел. Операция вычитания (или алгебраического сложения) чисел сводится к арифметическому сложению кодов, облегчается выработка признаков переполнения разрядной сетки. В результате упрощаются устройства, выполняющие арифметические операции.
Для представления чисел со знаком в ЭВМ применяют прямой, обратный и дополнительный коды.
Общая идея построения кодов такова. Код трактуется как число без знака, а диапазон представляемых кодами чисел без знака разбивается на два поддиапазона. Один из них представляет положительные числа, другой - отрицательные. Разбиение выполняется таким образом, чтобы принадлежность к поддиапазону определялась максимально просто.
Наиболее распространенным и удобным является формирование кодов таким образом, чтобы значение старшего разряда указывало на знак представляемых чисел, т.е. использование такого кодирования позволяет говорить о старшем разряде как о знаковом (бит знака) и об остальных как о цифровых разрядах кода.
Это обычный двоичный код, рассмотренный в разделе двоичной системы счисления. Если двоичное число является положительным, то бит знака равен 0, если двоичное число отрицательное, то бит знака равен 1. Цифровые разряды прямого кода содержат модуль представляемого числа, что обеспечивает наглядность представления чисел в прямом коде (ПК).
Рассмотрим однобайтовое представление двоичного числа. Пусть это будет 28(10). В двоичном формате - 0011100(2) (при однобайтовом формате под величину числа отведено 7 разрядов). Двоичное число со знаком будет выглядеть так, как показано на рис. 2.1.
Сложение в прямом коде чисел, имеющих одинаковые знаки, достаточно просто: числа складываются, и сумме присваивается знак слагаемых. Значительно более сложным является алгебраическое сложение в прямом коде чисел с разными знаками. В этом случае приходится определять большее по модулю число, производить вычитание модулей и присваивать разности знак большего по модулю числа. Такую операцию значительно проще выполнять, используя обратный и дополнительный коды.
В обратном коде (ОК), так же как и в прямом коде, для обозначения знака положительного числа используется бит, равный нулю, и знака отрицательного - единица. Обратный код отрицательного двоичного числа формируется дополнением модуля исходного числа нулями до самого старшего разряда модуля, а затем поразрядной заменой всех нулей числа на единицу и всех единиц на нули. В знаковом разряде обратного кода у положительных чисел будет 0, а у отрицательных - 1.
На рис. 2.2 приведен формат однобайтового двоичного числа в обратном коде.
В общем случае ОК является дополнением модуля исходного числа до наибольшего числа без знака, помещенного в разрядную сетку.
Алгоритм формирования ОК очень прост, при этом ОК позволяет унифицировать операции сложения и вычитания в АЛУ, которые в прямом коде выполняются по-разному. Однако работа с ОК вызывает ряд трудностей. В частности, возникают два нуля: +0 и -0, т.е. в прямом коде (в котором представлены положительные числа) имеет место (+0) = 000...0, а в обратном коде (в котором представлены отрицательные числа): (-0) = 111...1.
Кроме того, в операциях сложения и вычитания требуется дополнительная операция по прибавлению бита переноса в младший разряд суммы. Рассмотрим правила алгебраического сложения в ОК (поскольку А-В=А+(-В)). Алгоритм сложения в ОК содержит:
· сложение кодов, включая знаковый разряд;
· прибавление переноса к МЗР (младшему значащему разряду) суммы.
Пример.
Вычислить выражение -3(10) -2(10).
Пример.
Вычислить 7(10)-3(10).
Указанные трудности привели к тому, что в современных ЭВМ абсолютное большинство операций выполняется в дополнительном коде.
Дополнительный код (ДК) строится следующим образом. Сначала формируется обратный код (ОК), а затем к младшему разряду (МЗР) добавляют 1. При выполнении арифметических операций положительные числа представляются в прямом коде (ПК), а отрицательные числа - в ДК, причем обратный перевод ДК в ПК осуществляется аналогичными операциями в той же последовательности. На рис. 2.3 рассмотрена цепь преобразований числа из ПК в ДК и обратно в двух вариантах.
Пример.
Число -5(10) перевести в ДК и обратно (первый вариант).
Пример.
Число -5(10) перевести в ДК и обратно (второй вариант).
Использование ДК для представления отрицательных чисел устраняет двусмысленное представление нулевого результата (наличие двух нулей: +0 и -0), так как -0 исчезает.
В общем случае использованием ДК для записи отрицательных чисел можно перекрыть диапазон десятичных чисел от -2k-1 до +2k-1-1, где k - число используемых двоичных разрядов, включая знаковый. Так, с помощью одного байта можно представить десятичные числа от -128 до +127 либо только положительные числа от 0 до 255 (здесь под положительными числами понимаются числа без знака). В табл.2.1 приведены 4-разрядные двоичные числа от 0000 до 1111 и десятичные числа для представления их со знаком и без знака. Из этой таблицы следует, что в формате 4-разрядного двоичного числа могут быть представлены десятичные числа со знаком в диапазоне от -8 до +7 или десятичные числа без знака в диапазоне от 0 до +15.
Оба способа представления чисел широко используются в ЭВМ.
Таблица 2.1. Представление десятичных чисел одним полубайтом
4 - разрядное двоичное число |
Десятичные эквиваленты двоичного числа со знаком |
Десятичные эквиваленты двоичного числа без знака |
|
0000 |
+0 |
0 |
|
0001 |
+1 |
1 |
|
. . . . ПК |
. . . |
. . . |
|
0110 |
+6 |
6 |
|
0111 |
+7 |
7 |
|
1000 |
-8 |
8 |
|
1001 |
-7 |
9 |
|
1010 |
-6 |
10 |
|
. . . . ДК |
. . . |
. . . |
|
1110 |
-2 |
14 |
|
1111 |
-1 |
15 |
В ЭВМ используется быстрый способ формирования ДК.При этом двоичное число просматривается от МЗР к СЗР. Пока встречаются нули, их копируют в разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд, а каждый последующий бит исходного числа заменяется на противоположный (0 на 1, 1 на 0).
Пример.
Число -44(10) (10101100 (2)) перевести в ДК и обратно.
Проверка:
Пример.
Перевести в ДК модуль числа -44.
Видно, что результаты преобразований обоими методами совпадают.
При выполнении арифметических операций в современных ЭВМ используется представление положительных чисел в прямом коде (ПК), а отрицательных - в обратном (ОК) или в дополнительном (ДК) кодах. Это можно проиллюстрировать схемой на рис. 2.4.
Общее правило. При алгебраическом сложении двух двоичных чисел, представленных обратным (или дополнительным) кодом, производится арифметическое суммирование этих кодов, включая разряды знаков. При возникновении переноса из разряда знака единица переноса прибавляется к МЗР суммы кодов при использовании ОК и отбрасывается при использовании ДК. В результате получается алгебраическая сумма в обратном (или дополнительном) коде.
Рассмотрим подробнее алгебраическое сложение для случая представления отрицательных чисел в ДК.
При алгебраическом сложении чисел со знаком результатом также является число со знаком. Суммирование происходит по всем разрядам, включая знаковые, которые при этом рассматриваются как старшие. При переносе из старшего разряда единица переноса отбрасывается и возможны два варианта результата:
· знаковый разряд равен нулю: результат - положительное число в ПК;
· знаковый разряд равен единице: результат - отрицательное число в ДК.
Для определения абсолютного значения результата его необходимо инвертировать, затем прибавить единицу.
Пример.
Вычислить алгебраическую сумму 58-23.
Пример.
Вычислить алгебраическую сумму 26-34.
Пример.
Вычислить алгебраическую сумму -5-1.
При алгебраическом суммировании двух чисел, помещающихся в разрядную сетку, может возникнуть переполнение, т.е. образуется сумма, требующая для своего представления на один двоичный разряд больше, чем разрядная сетка слагаемых. Предполагается, что положительные числа представляются в прямом коде, а отрицательные в дополнительном.
Признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из знакового разряда (положительное переполнение) или наличие переноса из знакового разряда суммы при отсутствии переноса в знаковый разряд (отрицательное переполнение).
При положительном переполнении результат операции положительный, а при отрицательном переполнении - отрицательный.
Если и в знаковый, и из знакового разряда суммы есть переносы или этих переносов нет, то переполнение отсутствует.
Рассмотрим простейшие примеры с трехбитовыми словами. Диапазон чисел, которые они представляют, равен от -4 до +3. В рассматриваемых словах 1 бит знака и 2 информационных бита.
1. Алгебраическое суммирование без переноса.
Поскольку перенос в знаковый разряд или из знакового разряда суммы отсутствует, то переполнения нет.
Результат - положительное число в ПК, равное 3.
2. Алгебраическое суммирование с двумя переносами.
Имеются переносы в знаковый разряд и из знакового разряда вычисляемой суммы, поэтому переполнения нет.
Результат - отрицательное число в ДК, равное -4.
3. Алгебраическое суммирование с одним переносом.
(Положительное переполнение).
При суммировании есть перенос в знаковый разряд суммы, а перенос из знакового разряда отсутствует, т.е. имеет место положительное переполнение, и результат операции положительный.
Число 4 нельзя представить в прямом коде. Формальный результат равен -4.
4. Алгебраическое суммирование с одним переносом.
(Отрицательное переполнение).
Число -5 нельзя представить 3-битовой комбинацией. Формальный результат равен +3.
Из рассмотренных ранее примеров видно, что арифметические операции в дополнительном коде выполняются достаточно просто. Необходимо только не упускать из виду то, с какими числами происходит работа в данный момент - без знака или со знаком. Поскольку внешний вид обоих чисел одинаков, возможны ошибки.
Деление в дополнительном коде осуществляется по тем же правилам, что были описаны в п. 5.4. разд. "Двоичная арифметика". Но метод деления "столбиком" для ЭВМ не пригоден. Используются более громоздкие методы деления, которые здесь не рассматриваются. Информацию о них можно найти в литературе, приведенной в конце главы.
Перевод чисел из дополнительного кода в десятичную систему можно проводить по схеме, приведенной на рис. 2.5.
Однако существует прямой способ перевода числа из ДК в десятичную систему без использования промежуточного перевода в ПК.
Рассмотрим машинное слово произвольной длины (рис. 2.6). При прямом способе перевода десятичное число со знаком формируется как сумма разрядов со своими весами и знаками (старший N-й разряд имеет отрицательный вес).
Проиллюстрируем перевод чисел из ДК в десятичную систему примерами.
Пример.
Перевести число 1110 из ДК в десятичную систему.
Проверим правильность перевода, используя промежуточный перевод в ПК:
Пример.
Перевести число 101100 из ДК в десятичную систему.
101100(2) (ДК) = -25+23+22 = -32+8+4 = -20(10)
Проверим:
Эти коды отличаются от прямого, обратного и дополнительного кодов тем, что на изображение знака отводится два разряда: если число положительное - 00, если число отрицательное - 11. Такие коды оказались удобны (с точки зрения построения АЛУ) для выявления переполнения разрядной сетки. Если знаковые разряды результата принимают значение 00 и 11, то переполнения разрядной сетки не было, а если 01 или 10 - то было переполнение. Вернемся к примерам в п. 2.6.5.
В предыдущих разделах рассмотрены основные принципы выполнения арифметических операций, из которых видно, что все арифметические операции с двоичными числами могут быть сведены к операциям суммирования в прямом или дополнительном кодах, а также операциям сдвига двоичного числа вправо или влево. Реальные алгоритмы выполнения операций умножения и деления в современных ЭВМ достаточно громоздки и здесь не рассматриваются.
Проблема точности возникает, как правило, при работе с микро- и миниЭВМ, имеющих небольшую длину машинного слова (1-2 байта). Рассмотрим микропроцессор, работающий со словами длины 1 байт. Этот формат позволяет представить целые числа в диапазоне от -128 до 127. Очевидно, что для решения большинства задач такого диапазона чисел недостаточно. Использование двух однобайтовых слов (16 бит) позволяет представить уже числа в диапазоне от -32768 до 32767. Это так называемые числа с двойной точностью. Иногда используются числа тройной точности (1 бит - знак и 23 бита для модуля числа). Это обеспечивает диапазон уже от _8388608 до 8388607, т.е. точность существенно повышается.
Однако при работе с арифметикой повышенной точности требуется больший объем памяти для хранения того же объема данных и более интенсивная работа процессора. Увеличение объема требуемой памяти достаточно очевидно. Рассмотрим очень коротко последовательность операций при сложении чисел с тройной точностью. Здесь уже недостаточно извлечь два слова из памяти, сформировать сумму в аккумуляторе и переслать результат в однобайтовую ячейку памяти. Сначала необходимо произвести обращение к младшему значащему байту каждого числа. После сложения результат записывается в память, а возможные при этом переносы подлежат временному хранению. Затем извлекаются средние по значимости байты, их складывают и к сумме добавляют биты переноса, полученные в результате предыдущей операции. Результат записывается в память на место, специально зарезервированное для среднего байта суммы. Со старшим байтом поступают аналогично.
Таким образом, при использовании арифметики тройной точности требуются в три раза большие объем памяти и время на операции сложения по сравнению с арифметикой одинарной точности. Кроме того, в случае возникновения прерываний необходимо временно хранить содержимое регистра переносов (то же самое для вычитания, умножения и деления).
2.7 Представление дробных чисел в ЭВМ. Числа сфиксированной и плавающей запятой
В ЭВМ числа представлены в двоичной форме и под число отводится N разрядов. N-разрядное двоичное число называют машинным словом. Диапазон представления чисел можно расширить за счет использования машинных слов двойной и большей длины. Но увеличение длины слова не может разрешить всех проблем представления чисел. Рассмотрим, как обращаться с дробной частью числа, как представлять очень большие и очень малые числа.
Используют две формы представления чисел:
· числа с плавающей запятой (точкой), которые сокращенно называются ЧПЗ (ЧПТ);
· числа с фиксированной запятой (точкой) - ЧФЗ (ЧФТ), которые подразделяются по месту фиксации запятой на:
- слева от СЗР (дробные |X| < 1);
- справа от МЗР (целые).
Первые ЭВМ были машинами с фиксированной запятой, причем запятая фиксировалась перед старшим разрядом. В настоящее время форму ЧФЗ, как правило, применяют для представления целых чисел (запятая фиксируется после младшего разряда). Следует отметить, что нумерация разрядов в слове может быть разная. Наиболее распространенной в настоящее время является нумерация разрядов справа налево. Между тем, возможна нумерация и слева направо, которая традиционно использовалась в старых мэйнфреймах, например IBM-360/370 и некоторых других ЭВМ, в том числе и миниЭВМ.
Поскольку фиксация точки слева от СЗР в настоящее время практически не используется, рассмотрим только формат представления целых чисел на примере 32-разрядного слова, используемого в мэйнфреймах IBM-360 (рис. 2.7). Аналогичный формат используется и в современных 32-разрядных процессорах, причем нумерация разрядов может быть как справа налево, так и слева направо.
Целые числа могут быть представлены как в формате слова (32 разряда), так и в формате полуслова (16 разрядов).
Используют два варианта представления целых чисел - со знаком и без знака. В последнем случае все разряды служат для представления модуля числа. В ЭВМ реализуются оба этих варианта в формате слова и полуслова.
В мини- и микроЭВМ разрядность слова обычно меньше (16 бит), но формат представления целых чисел аналогичен рассмотренному (рис. 2.8), за исключением того, что нумерация разрядов в большинстве случаев осуществляется в другую сторону.
Следует иметь в виду, что в мини- и микроЭВМ целые числа могут быть представлены как в формате слова (16 или 8 бит), так и в формате двойного слова (32 или 16 бит). В микроЭВМ целые числа часто представляют без знака в формате слова (8 бит) или двойного слова. В современных ЭВМ, как правило, слова содержат целое число байт, кратное степени двойки (1,2,4… байта).
Рассмотрим диапазон представления чисел с фиксированной запятой (только целых чисел, т.е. точка фиксирована справа от МЗР). Если в разрядной сетке N разрядов, то под модуль числа отводится N-1 разряд (число со знаком). Самое большое по модулю число, записанное в такой сетке, имеет вид
Следовательно, |X|max = 2N-1 -1 или 0 |X| 2N-1 - 1.
При записи отрицательных чисел в дополнительном коде наибольшее по модулю отрицательное число - это -2N-1. Но модуль этого числа при такой же разрядной сетке (N бит) получить уже нельзя. Поэтому диапазон представления десятичных чисел N-разрядным двоичным числом определяется следующим выражением:
-2N-1X 2N-1-1 .
В табл. 2.2 приведены диапазоны представления десятичных чисел 8-, 16- и 32- разрядными двоичными числами.
Таблица 2.2
N |
8 |
16 |
32 |
|
Xmax |
127 |
32767 |
2147483647 |
|
Xmin |
-128 |
-32768 |
- 2147483648 |
При решении расчетных задач на ЭВМ с фиксированной точкой для предотвращения переполнения разрядной сетки при подготовке к решению приходится вводить масштабные коэффициенты, которые не позволяют числам, участвующим в решении, и результатам превышать по модулю максимальное машинное число.
В настоящее время представление чисел с фиксированной запятой используется как основное и единственное лишь в сравнительно небольших по своим вычислительным возможностям машинах. Подобные ЭВМ применяют в системах передачи данных, для управления технологическими процессами, для обработки измерительной информации в реальном масштабе времени, для построения кодирующих и декодирующих устройств в каналах связи. В ЭВМ общего назначения основным является представление чисел с плавающей запятой.
Представление чисел в виде ЧПЗ позволяет избавиться от операции масштабирования при вычислениях, поскольку диапазон представляемых чисел существенно расширяется по сравнению с ЧФЗ. Однако в большинстве ЭВМ общего назначения, для целых чисел сохраняется возможность представления в виде ЧФЗ. Операции с ЧФЗ всегда выполняются за меньшее время, чем операции с ЧПЗ. В частности, к операциям с целыми числами сводятся операции над кодами адресов (операции индексной арифметики).
Представление чисел с плавающей запятой в общем случае имеет вид:
X = Sp*q; |q|<1,
где q - мантисса (правильная дробь со знаком),
p - порядок (целое число со знаком),
S - основание,
Sp - характеристика.
В ЭВМ q и p представлены в системе счисления с основанием S в соответствующей двоичной кодировке. Знак числа совпадает со знаком мантиссы. Порядок может быть как положительным, так и отрицательным и определяет положение точки в числе X. Арифметические действия над ЧПЗ требуют помимо действий с мантиссами, определенные операции над порядками (сравнение, вычитание и др.). Для упрощения операций над p их сводят к действиям над целыми положительными числами, применяя представление ЧПЗ со смещенным порядком.
В этом случае к порядку p прибавляют целое число R=2k, где k - число двоичных разрядов, используемых для представления модуля порядка. Смещенный порядок PСМ=P+R всегда больше нуля или равен ему. Для его представления требуется такое же количество двоичных разрядов, как и для представления знака и модуля p.
При фиксированном числе разрядов мантиссы любая величина представляется в ЭВМ нормализованным числом с наибольшей возможной точностью. Число называется нормализованным, если мантисса q удовлетворяет условию 1>|q|1/S, т.е. старший разряд мантиссы в S-ричной системе счисления отличен от нуля, иначе число не нормализовано. Так, например, в десятичной системе счисления число 0.00726*10-3 не нормализовано, а число 0.726*10-5 - нормализовано.
В процессе вычислений числа могут оказаться ненормализованными. Обычно ЭВМ автоматически нормализует такие числа, выполняя ряд действий. На рис. 2.9 представлен обобщенный формат представления ЧПЗ в микро- и миниЭВМ.
Пусть r старших разрядов S-ричной мантиссы равны нулю. Тогда нормализация состоит:
- из сдвиг мантиссы на r разрядов влево;
- уменьшения PСМ на r единиц;
- запись нуля в r младших разрядах мантиссы.
При этом число не изменяется, а условия нормализации выполняются.
Пример.
Нормализовать двоичное число.
Ненормализованное двоичное число:
Нормализованное двоичное число:
Пример.
Нормализовать двоичное число. Ненормализованное двоичное число:
Нормализованное двоичное число:
Следует иметь в виду, что нормализация может происходить в другую сторону, если в результате выполнения операции слева от точки появилась единица. В этом случае необходимо выполнить следующие операции:
- сдвиг мантиссы на один разряд вправо;
- увеличение PСМ на единицу.
В различных ЭВМ числа с плавающей запятой используются в системах счисления с различными основаниями S, но равными целым степеням числа 2, т.е. S=2W.
При этом порядок представляют целым числом, а мантиссу q - числом, в котором группы по W двоичных разрядов изображают цифры мантиссы с основанием системы счисления S=2W. В современных ЭВМ используются, как правило, S = 2, 16.
Использование S>2 позволяет:
- расширить диапазон представления чисел;
- ускорить выполнение операций нормализации, поскольку сдвиг может сразу происходить на несколько разрядов (при S=16 - сдвиг на 4 разряда).
Пример.
В результате операции получили (S=16):
Произведем нормализацию.
Для этого q нужно сдвинуть влево на один шестнадцатеричный разряд, т.е. на 4 двоичные единицы, а из P вычесть 1. В результате получим
Итак, диапазон представляемых в ЭВМ чисел с плавающей запятой зависит от основания системы счисления S и числа разрядов, выделенных для P. Точность вычисления для ЧПЗ определяется числом разрядов q. С увеличением числа разрядов q увеличивается точность, но одновременно увеличивается и время выполнения арифметических операций. Ввиду этого использование S, отличного от 2, несколько уменьшает точность вычислений при фиксированном числе двоичных разрядов q. Традиционно шестнадцатеричная арифметика используется в мэйнфреймах.
Задачи, решаемые на ЭВМ, предъявляют различные требования к точности вычисления, поэтому большинство машин общего назначения имеют несколько форматов ЧПЗ с различным числом разрядов q. Рассмотрим только короткие форматы ЧПЗ в ЭВМ с 32-разрядным словом, использующих шестнадцатеричную (S=16) и двоичную (S=2) системы счисления.
Формат ЧПЗ при S=16 представлен на рис. 2.10.
Всего под q отведено 24 двоичных разряда. Общая длина слова N - 32 двоичных разряда. Еще есть длинный формат (64 бита) и расширенный (128 бит). Во всех форматах под PСМ отведено по 7 двоичных разрядов (с первого по седьмой). Если бы порядок был несмещенный, то один двоичный разряд отводился бы под знак порядка и k разрядов - под модуль (k = 6). При этом диапазон изменения модуля несмещенного порядка P составил бы 0 2k-1 или 0 63, а полный диапазон изменения порядка Р = (-64) (+63). Выражение для смещенного порядка соответственно имеет вид
.
Таким образом, при S=16 диапазон изменения PСМ = 0 127.
Следует иметь в виду, что при изображении машинного слова с помощью шестнадцатеричных символов первые две старшие шестнадцатеричные цифры представляют совместно знак числа и смещенный порядок.
Формат ЧПЗ при S=2 представлен на рис. 2.11.
Общая длина слова N - 32 двоичных разряда. Обычно еще есть длинный формат, имеющий N = 64 бита. В обоих форматах под смещенный порядок отведено 8 двоичных разрядов. Таким образом, диапазоны изменения смещенного и несмещенного порядков составляют соответственно
PСМ = 0...255 и P = -128...+127.
Поскольку числа в памяти хранятся в нормализованной форме, старший разряд q всегда равен единице, поэтому он не запоминается, а подразумевается., В таких ЭВМ точность представления числа фактически определяется мантиссой q в 24 двоичных разряда (короткий формат) и 56 двоичных разрядов (длинный формат).
Рассмотрим только короткие форматы.
Диапазон представления ЧПЗ определяется значением S и числом разрядов, отведенных под P.
Двоичное основание (S=2): (k=7) Xmax=2127 1038 .
Шестнадцатеричное основание (S=16): (k=6) Xmax=1663 1076 .
Точность представления ЧПЗ определяется значением S и числом разрядов мантиссы в соответствующей системе счисления. И при S=16, и при S=2 под q отведено фактически 24 двоичных разряда:
· при S=2: 24 двоичных разряда обеспечивают точность, соответствующую семи десятичным разрядам;
· при S=16: точность при использовании короткого слова (N = 32) ниже за счет другого способа нормализации, т.е. в q могут быть три нуля слева, поскольку шестнадцатеричное число при этом еще не равно нулю. В двоичных числах слева всегда единица, то есть разрядная сетка используется полнее. Пояснить это можно на примере 8-разрядной сетки:
При S=16 нормализация не произойдет, так как d1 не равно нулю. Это приведет к потере четырех младших разрядов результата. При S=2 нормализация произойдет и будет потерян только один младший разряд результата. В связи с этим в ЭВМ с S=16 обычно предусматриваются еще длинный и расширенный форматы.
Еще до недавнего времени каждый производитель процессоров пользовался собственным представлением вещественных чисел (чисел с плавающей точкой). За последние несколько лет ситуация изменилась. Большинство поставщиков процессоров в настоящее время для представления вещественных чисел придерживаются стандарта ANSI/IEEE 754-1985 Standard for Binary Floating-Point Arithmetic.
Стандарт описывает два основных формата ЧПЗ: одиночный (single - 32 бита) и двойной (double - 64 бита). В IEEE 754 не указан точный размер расширенного формата, но описаны минимальная точность и размер (79 бит).
Формат числа - структура, определяющая поля, составляющие число с плавающей запятой, их размер, расположение и интерпретацию.
Одиночный формат
Одиночный формат состоит из трех полей: 23-разрядной мантиссы f, 8-разрядного смещенного порядка e, знакового бита s (см. рис. 2.12).
В табл. 2.3 показано соответствие между значениями трех полей и значением числа с плавающей запятой.
Таблица 2.3
Комбинация значений полей |
Значение |
|
0 < e < 255 |
(-1)s Ч 2e-127 Ч 1.f (нормализованные числа) |
|
e= 0; f 0 (по крайней мере, один бит не нулевой) |
(-1)s Ч 2-126 Ч 0.f (ненормализованные числа) |
|
e= 0; f = 0 (все биты нулевые) |
(-1)s Ч 0.0 (ноль со знаком) |
|
e= 255; f = 0 (все биты нулевые) |
INF (бесконечность со знаком) |
|
e= 255; f 0 (по крайней мере, один бит не нулевой) |
NaN (Not-a-Number) |
Значение неявного бита (старшего разряда мантиссы) прямо не задается, но подразумевается значением порядка. 23-разрядная мантисса вместе с неявным битом обеспечивает точность в 24 разряда.
Двойной формат
Двойной формат состоит из трех полей: 53-разрядной мантиссы f, 11-разрядного смещенного порядка e, знакового бита s. Эти поля хранятся в двух 32-разрядных словах, как показано на рис. 2.13. В x86-архитектуре слово с меньшим адресом содержит младшие разряды мантиссы, в то время как, например, в SPARC- архитектуре младшие разряды мантиссы содержит слово с большим адресом.
В табл. 2.4 показано соответствие между значением трех полей и значением ЧПЗ двойной точности.
Таблица 2.4
Комбинация значений полей |
Значение |
|
0 < e < 2047 |
(-1)s Ч 2e-1023 Ч 1.f (нормализованное число) |
|
e = 0; f 0 |
(-1)s Ч 2-1022 Ч 0.f (ненормализованное число) |
|
e = 0; f = 0 |
(-1)s Ч 0.0 (ноль со знаком) |
|
s = 0; e = 2047; f = 0 |
+INF (положительная бесконечность) |
|
s = 1; e = 2047; f = 0 |
-INF (отрицательная бесконечность) |
|
e = 2047; f 0 |
NaN (Not-a-Number) |
Значение неявного бита (старшего разряда мантиссы) прямо не задается, но подразумевается значением порядка. 53-разрядная мантисса вместе с неявным битом обеспечивает точность в 54 разряда.
Расширенный формат (SPARC- архитектура)
Расширенный формат состоит из трех полей: 112-разрядной мантиссы f, 15-разрядного смещенного порядка e, знакового бита s. Эти поля хранятся в четырех 32-разрядных словах, как показано на рис. 2.14. В SPARC-архитектуре младшие разряды мантиссы содержит слово с большим адресом.
В табл. 2.5 показано соответствие между значением трех полей и значением ЧПЗ расширенного формата для SPARC-архитектуры.
Таблица 2.5
Комбинация значений полей |
Значение |
|
0 < e < 32767 |
(-1)s Ч 2e-16383 Ч 1.f (нормализованное число) |
|
e = 0; f 0 |
(-1)s Ч 2-16382 Ч 0.f (ненормализованное число) |
|
e = 0; f = 0 |
(-1)s Ч 0.0 (ноль со знаком) |
|
s = 0; e = 32767; f = 0 |
+INF (положительная бесконечность) |
|
s = 1; e = 32767; f = 0 |
-INF (отрицательная бесконечность) |
|
e = 32767; f 0 |
NaN (Not-a-Number) |
Расширенный формат (х86- архитектура)
Расширенный формат состоит из 4-ч полей: 63-разрядной мантиссы f, явного старшего значащего бита j, 15-разрядного смещенного порядка e, знакового бита s.
В х86-архитектуре эти поля сохранены в восьми последовательно адресованных 8-разрядных байтах. Однако UNIX System V Application Binary Interface Intel 386 Processor Supplement (Intel ABI) требует, чтобы числа расширенного формата занимали три последовательно адресованных 32-разрядных слова в стеке, оставляя 16 старших бит неиспользованными, как показано на рис. 2.15.
В табл. 2.6 показано соответствие между значениями трех полей и значением ЧПЗ расширенного формата для х86-архитектуры.
Таблица 2.6
Комбинация значений полей |
Значение |
|
j = 0; 0 < e < 32767 |
Не поддерживается |
|
j = 1; 0 < e < 32767 |
(-1)s Ч 2e-16383 Ч 1.f (нормализованное число) |
|
j = 0; e = 0; f 0 |
(-1)s Ч 2-16382 Ч 0.f (ненормализованное число) |
|
j = 1; e = 0 |
(-1)s Ч 2-16382 Ч 0.f (псевдоненормализованное число) |
|
j = 0; e = 0; f = 0 |
(-1)s Ч 0.0 (ноль со знаком) |
|
j = 1; s = 0; e = 32767; f = 0 |
+INF (положительная бесконечность) |
|
j = 1; s = 1; e = 32767; f = 0 |
-INF (отрицательная бесконечность) |
|
j = 1; e = 32767; f 0 |
quiet или signaling NaN |
Мэйнфреймы
В мэйнфреймах фирмы IBM используемое еще со времен S/360 шестнадцатеричное представление чисел с плавающей запятой - с шестнадцатеричной мантиссой и характеристикой (HFР) - в ESA/390 (мэйнфреймы серии S/390) дополнено двоичным представлением BFP, удовлетворяющим стандарту IEEE 754. Это представление определяет 3 формата данных - короткий, длинный и расширенный- и 87 новых команд для работы с ними.
BFP появилось в ESA/390 относительно недавно, в 1998 году. Одновременно было введено 12 дополнительных регистров FR (общее число FR достигло 16). Кроме того, в архитектуре появился управляющий регистр с плавающей запятой и средства сохранения содержания регистров при операции записи состояния. Добавлено еще 8 новых команд, не связанных однозначно с тем или иным представлением данных с плавающей запятой, в том числе 4 - для преобразования между форматами HFP и BFP.
Для работы с HFP-данными появилось 26 новых команд, являющихся аналогами соответствующих BFP-команд. Эти новые команды включают, в частности, преобразования между форматами чисел с фиксированной и с плавающей запятой и новые операции с расширенной точностью.
В суперкомпьютерах NEC SX-4 (представленных в 1995 году) целые числа могут быть как 32-, так и 64-разрядными. Для чисел с плавающей запятой применяется стандарт IEEE 754 (как для 32-, так и для 64-разрядных чисел). Кроме того, SX-4 может работать со 128-разрядными числами с плавающей запятой расширенной точности и с форматами чисел с плавающей запятой, используемыми в PVP-системах Cray и мэйнфреймах IBM. При этом производительность SX-4 не зависит от формата представления, а сам этот формат выбирается при компиляции.
Требуется вычислить Z=XY при условии, что |X||Y|. Формальное выражение для выполнения этой операции можно записать следующим образом:
.
Алгоритм выполнения операции состоит в следующем:
производится выравнивание порядков, при котором порядок меньшего по модулю числа принимается равным порядку большего, а мантисса меньшего числа сдвигается вправо на число S-ричных разрядов, равное разности (Px-Py), т.е. происходит денормализация;
...Подобные документы
Принципы программного управления компьютером. Модульная и функциональная организация, аппаратная реализация электронно-вычислительной машины. Назначение устройств ввода и вывода информации. Функции процессора; устройства внутренней и внешней памяти.
презентация [2,2 M], добавлен 27.11.2013Принципы организации и построения электронно-вычислительной машины. Основные характеристики и режимы работы ЭВМ. Организация интерфейса. Устройства управления в процессоре. Вычислительные системы и арифметико-логическое устройство. Микрооперация сдвига.
курс лекций [880,9 K], добавлен 31.05.2014Функциональный состав микро-ЭВМ, разработка системы команд. Описание взаимодействия всех блоков электронно-вычислительной машины при выполнении команд программы. Арифметико-логическое устройство, кэш-память процессора, функциональное моделирование.
курсовая работа [981,4 K], добавлен 27.05.2013Разработка вычислительной системы, предназначенной для реализации заданного алгоритма обработки входных цифровых данных. Особенности ее построения на базе процессора x86 (К1810) в минимальном режиме. Описание микропроцессорного комплекта серии К1810.
курсовая работа [318,4 K], добавлен 15.08.2012Современные семейства ПЛИС фирмы Xilinx, их характеристики и значимость в процессе построения систем цифровой обработки сигналов. Создание базы параметров, фактов и запрещенных комбинаций для решения открытой задачи поискового проектирования модели ПЛИС.
курсовая работа [3,6 M], добавлен 14.12.2012Общий вид вычислительной системы. Начальная последовательность действий. Элементы организации основных блоков ЭВМ. Архитектурная организация процессора ЭВМ. Организация систем адресации и команд ЭВМ. Система внешних устройств. Средства вывода информации.
курсовая работа [39,5 K], добавлен 28.01.2012Логические элементы как устройства, предназначенные для обработки информации в цифровой форме. Определение основных отличительных особенностей и преимуществ двоичной и троичной систем счисления по сравнению с десятичной системой счисления, их типы.
реферат [30,5 K], добавлен 20.11.2011Команды вычислительной машины, которые интерпретируются микропроцессором или микропрограммами. Правила для записи чисел цифровыми знаками. Способы кодирования информации. Практическое применение машинных кодов, систем счисления, кодировки информации.
курсовая работа [1,6 M], добавлен 15.03.2015Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Intel 82C55A. Роль процессора в обработке прерывания ввода-вывода. Обзор алгоритма обработки прерывания.
контрольная работа [8,0 M], добавлен 19.05.2010Характеристики элементов вычислительной машины для выполнения офисных операций. Выбор процессора, расчет его мощности на 60 GFLOPS. Выбор материнской платы, системы охлаждения для процессора, физической и оперативной памяти для хранения информации.
контрольная работа [43,6 K], добавлен 11.11.2015Система счисления как способ записи (изображения) чисел. История появления и развития различных систем счисления: двоичная, восьмеричная, десятичная и шестнадцатеричная. Основные принципы и правила алгоритма перевода из одной системы счисления в другую.
курсовая работа [343,1 K], добавлен 11.11.2014Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.
презентация [170,6 K], добавлен 14.08.2013Разновидности систем счисления данных, особенности позиционной системы. Порядок перехода между основными системами счисления и реализации целочисленных операций. Представление отрицательных чисел. Представление отрицательных чисел в двоичном коде.
лабораторная работа [142,3 K], добавлен 06.07.2009Примеры правила перевода чисел с одной системы в другую, правила и особенности выполнения арифметических операций в двоичной системе счисления. Перевод числа с десятичной системы в двоичную систему счисления. Умножение целых чисел в двоичной системе.
контрольная работа [37,3 K], добавлен 13.02.2009Агентно-ориентированная программная архитектура систем обработки потоковых данных. Обеспечение гибкости и живучести программного обеспечения распределенных информационно-управляющих систем. Спецификации программных комплексов распределенной обработки.
реферат [1,1 M], добавлен 28.11.2015Понятие информации, автоматизированных информационных систем и банка данных. Общая характеристика описательной модели предметной области, концептуальной модели и реляционной модели данных. Анализ принципов построения и этапы проектирования базы данных.
курсовая работа [1,7 M], добавлен 18.01.2012Особенности конструирование модуля первого уровня электронно-вычислительной машины. Анализ назначения, области применения, условий эксплуатации ЭВМ. Принципиальная схема и характеристики ИМС и РЭ, выбор аппаратных средств, типа конструкции печатной платы.
курсовая работа [1,0 M], добавлен 06.02.2011Структура памяти и адресация данных. Особенности модели проектируемой машины базы данных. Схема формирования адреса среза, поиска отмеченных строк и их ускоренной передачи. Структура управляющего процессора. Кодированная граф-схема операции MARK.NE.
курсовая работа [677,2 K], добавлен 28.10.2011Роль и практическое значение автоматизации вычислений и обработки данных. Представление информации в компьютере, сущность системы счисления. Перевод числа из одной системы счисления в другую. Арифметические операции в позиционных системах счисления.
контрольная работа [1,2 M], добавлен 23.10.2009Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.
контрольная работа [41,2 K], добавлен 21.08.2010