Главная страница
Навигация по странице:

  • Перевод чисел из одной системы счисления в другую.

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

  • Представление данных в ЭВМ

  • Таблица 14.1. Тип данных Размер (бит)

  • Числа с плавающей запятой

  • Двоично-десятичные числа

  • Устный экзамен. Идея использования программного управления для построения устройства, автоматически выполняющего арифметические вычисления, была впервые высказана английским математиком Ч. Бэббиджем еще в 1833г


    Скачать 314.87 Kb.
    НазваниеИдея использования программного управления для построения устройства, автоматически выполняющего арифметические вычисления, была впервые высказана английским математиком Ч. Бэббиджем еще в 1833г
    Дата27.12.2019
    Размер314.87 Kb.
    Формат файлаdocx
    Имя файлаУстный экзамен.docx
    ТипДокументы
    #102372
    страница2 из 2
    1   2

    Арифметические основы

    Система счисления


    Как известно, еще в 19 веке производство операций над числами, содержащими много разрядов, представлялось сложной задачей, решить которую могли только профессионалы. В это время были уже разработаны основные правила выполнения операций над многозначными числами узбекским математиком Аль-Хорезми. Общие закономерности, по которым строились эти правила, впоследствии получили название АЛГОРИТМА. Они настолько широко вошли в жизнь, что, производя эти операции над многозначными числами, мы не задумываемся над тем, что выполняем строгую систему правил.

    Способ представления изображения произвольных чисел с помощью некоторого конечного множества символов назовем системой счисления .

    В повседневной практике мы пользуемся, как правило, десятичной системой счисления. Ответ на вопрос: " Почему именно эта система счета получила наибольшее распространение? " - сейчас дать затруднительно. В литературе, как правило, в качестве обоснования приводится тот факт, что на руках человека - в сумме 10 пальцев. Вряд ли это обоснование можно принимать всерьез. На практике мы сталкиваемся и с более сложными, в частности, со смешанными системами. Например, система счета времени, где за единицу принята секунда, минута, час, сутки, неделя, месяц, год. Или система счета денег, до недавнего времени применявшаяся в Англии (пенс, шиллинг, фунт):

    12п = 1ш, 20ш = 1ф.

    Или еще более интересная - римская система счета, которая использует символы: I - 1, V - 5, X - 10, L - 50, C - 100, D - 500, M - 1000.

    Эта система является особой и применяется редко (циферблат, архитектура, история и т.д.)

    Системы счисления принято делить на:

    • Позиционные.

    • Непозиционные.

    • Символические.

    Начнем с последних. В этих системах каждому числу ставится в соответствие свой символ. Эти системы не находят широкого применения в силу естественной их ограниченности (алхимия, кодированные сообщения) -бесчисленного множества символов, которое требуется для изображения всех возможных чисел. Поэтому эти системы из рассмотрения опустим.

    Позиционные системы счисления.


    Само название этих систем указывает на связь значимости числа и его изображения от позиции.

    Позиция - некоторое место, в котором может быть представлен лишь один символ.

    Примером позиционной системы счисления является десятичная система.

    В этой системе число представляется в виде полинома " n " степени, а изображается совокупностью некоторых символов, каждый из которых имеет различный вес в зависимости от позиции, которую он занимает.

    a4a3a2a1 - число; a1, a2, a3, a4 - символы.

    Всем позициям приписывается различный вес, который чаще всего выбирается как целая степень основания системы.

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

    Так для десятичной системы допускаемыми являются символы: 0, 1, 2, 3,..., 9.

    Обозначим через " p " основание системы счисления. Тогда веса позиций числа могут быть представлены так:

    ... p3 p2 p1 p0.

    Само число, изображение которого имеет вид, например, a3a2a1a0 может быть представлено так:

    a0p0 + a1p1 + a2p2 + a3p3 - это развернутая запись числа в позиционной системе.

    Например:

    97310 = 3*100 + 7*101 + 9*102 = 3 + 70 + 900.

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

    Таким образом, однородность - одно из важных свойств позиционных систем.

    Любое число X в позиционной системе счисления можно представить в виде:

    где

    m - число позиций или разрядов, отведенное для изображения целой части числа.

    n - общее число разрядов в числе.

    ai - любой допустимый символ в разряде, т.е. ai = {0, 1, 2,..., p-1}.

    p - основание системы счисления.

    Например:

    - 961,13 = - (9*102 + 6*101 + 1*100 + 1*10-1 + 3*10-2).

    1. Заметим, что число, равное основанию системы счисления, т.е. " p ", в самой системе с основанием " p " записывается только в двух позициях ( разрядах ), а именно так:

    pp = 10p

    1. Заметим также, что разделение числа на две части - дробную и целую - имеет смысл лишь в позиционных системах.

    2. Заметим, что основание системы для представления числа мы можем выбрать произвольное. Такой же произвол мы можем допустить и в назначении весов разрядов. Однако наиболее целесообразно считать его, как и в десятичной системе, естественным, т.е. ввести в качестве степеней основания числа натурального ряда:

    ... +3, +2, +1, 0, -1, -2, -3 ...

    Выбор системы счисления.


    Возникает естественный вопрос, является ли общепринятая система счисления с основанием 10 оптимальной? Если да, то с каких позиций? Вопрос заслуживает внимания, т.к. одна из первых ВМ (ENIAC) использовала именно десятеричную систему.

    Прямой и однозначный ответ на этот вопрос невозможен. Можно дать много различных ответов и все они будут справедливы лишь для каких-то определенных условий.

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

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

    Т.е. нужно было бы из десятеричной системы перевести информацию в " p "-систему, произвести над ней необходимые операции в системе " p ", затем снова сделать, но обратный перевод из " p "-системы в десятеричную, т.к. отказ от десятеричной системыпотребовал бы и устранения первого этапа.

    Если преобразование из десятеричной системы в " p "-систему требует не слишком много времени, в то же время, если выполнение функции F будет в системе " p " сделано много быстрее, то тогда эта цепочка действий будет оправданной.

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

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

    Очевидно, что можно, не сужая области применения ЭВМ, задаться величиной некоторого самого большого числа. Пусть это будет число M. Воспользуемся позиционной системой счисления с основанием " p ", и тогда потребуется " n " разрядов, чтобы представить все M чисел:

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

    Таким образом, при заданном числе M количество цифроразрядов при основании " p ":

    p*n = p* logpM, (6.1)

    где:

    цифроразряд - эквивалент оборудования,

    p*n - число устойчивых состояний элемента памяти,

    n - число разрядов в числе.

    Рассмотрим пример:

    Пусть есть 24 цифроразряда.

    Основание p.

    Возможное число цифроразрядов.

    Наибольшее число M.

    2

    2*12

    1*1*...*12 = 409510

    \________/

    12

    3

    3*8

    2*2*...*23 = 656010

    \________/

    8

    4

    4*6

    3*3*...*34 = 409510

    \________/

    6

    6

    6*4

    5*5*5*56 = 129510

    \______/

    4

    8

    8*3

    7*7*78 = 51110

    \____/

    3

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

    Считаем " p " - величиной непрерывной. Находим производную от (6.1) по величине " p ". Берем вторую производную по " p ". Увидим, что первая производная обращается в нуль, а вторая - больше нуля при p = e. Т.е. получаем минимум при p = e.

    Таким образом, оптимальной по оборудованию и быстродействию является система с основанием е.

    Но е = 2,718...

    Поэтому оптимальной является система с основанием р = 3.

    Построим функцию, характеризующую отношение оборудования в системе с основанием " p " относительно системы с основанием " 2 ".

    p

    2

    3

    4

    5

    6

    7

    8

    9

    10

    f(p)

    1,000

    0,946

    1,000

    1,078

    1,148

    1,247

    1,333

    1,420

    1,595

    Т.е. 10-я система является более чем в 1,5 раза неэкономичной по отношению ко 2-ой системе, а 3-я система оказывается лишь на 5% экономичнее 2 й.

    Действительное обоснование экономичности той или иной системы выглядит несколько сложнее.

    Когда говорим об экономичности, то, прежде всего, имеем ввиду объем оборудования, сосредоточенный в АУ и ЗУ. Объем оборудования УУ не находится в столь простой зависимости от " p " да и в АУ учитывается лишь оборудование, связанное с элементами хранения информации, но не логическое оборудование.

    Более детальный анализ показывает, что наиболее эффективными являются системы с основанием, кратным 2, т.е. 2, 4, 8, 16. Специфика построения схем ЭВМ показывает, что наиболее эффективной является 16-ая система. Именно она и применяется в современных машинах.

    Мы же будем считать эффективной систему с основанием 2 по причине ее наибольшего распространения.

    Вот основные соображения в пользу этой системы:

    1. Высокая информационная эффективность.

    2. Простота и надежность работы 2-ого элемента хранения информации (т.е. имеющего 2 устойчивых состояния)

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

    4. Простота построения схем для выполнения простых операций.

    5. Более высокая скорость выполнения основных арифметических операций.

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

    Если " p " - основание системы счисления, то максимальная цифра в одном разряде - (p-1).

    Если N - максимальное число, то для его изображения требуется logpN разрядов.

    Для того чтобы выполнить операцию умножения, например, потребуется (p-1)*logpN операций сложения. Если сравнить это число операций в системе с основанием " p " и отнести его к числу операций в системе с основанием " 2 ", то может получиться следующая функция:

    (p-1)*logpN p-1

    ___________ _____

    f(p)= =

    1*log2N log2p

    n

    2

    3

    4

    5

    6

    ...

    10

    f(n)

    1,000

    1,262

    1,500

    1,725

    1,913

    ...

    2,709

    Это лишь основные соображения в пользу выбора в качестве основы двоичную систему счисления. Существуют и другие (контроль, диагностика неисправностей), но мы их из рассмотрения опустим.

    Перевод чисел из одной системы счисления в другую.

    Всякий раз, когда используется для вычислений система счисления, отличная от фактической, необходимо выполнить перевод 10 => p, p => 10.

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

    Этот перевод может быть выполнен:

    1. вручную,

    2. на ЭВМ (с помощью специальных программ).

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

    Итак, имеем дело с позиционной системой счисления с основанием " p ", с естественными весами разрядов.

    В качестве промежуточной используется, естественно, десятичная система. Вначале число переводится из системы " p " в 10-ую, затем из 10-ой в систему с нужным основанием.

    Мы отступим от этого правила и воспользуемся алгоритмом непосредственного перевода из системы с основанием " p " в систему с основанием " q ".

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

    Рассмотрим перевод целых чисел:

    Перевод осуществляется по следующему правилу: исходное число, записанное в системе с основанием " p " и его частные последовательно делятся на число " q ", представленное в системе " p ". Деление производится в системе с основанием " p " и продолжается до получения результата, меньшего " q ". Первый остаток, меньший " q ", дает старшую цифру числа Nq. Остатки от деления дают остальные цифры числа Nq.

    Пример:

    1. 3110 => 2; 3110 = 111112



    1. 318 => 3; 318 = 2213 =

    2. 2*32 + 2*31 + 1*30 = 18 + 6 + 1 = 2510.



    1. 318 => 10; 318 = 2510.



    1. 1111112 => 10; 1111112 = 6310.



    Перевод дробных чисел из системы с основанием " p " в систему с основанием " q " выполняется по следующему правилу: исходное число Dp последовательно умножается на число " q ", записанное в системе " p ". Целые части получаемых произведений дают " p "-ые записи " q "-х цифр, начиная со старшей. Умножение производится в системе с основанием " p " до получения необходимой точности.

    Пример:

    1. 0,53148 => 5; 0,53148 = 0,3141...5.

      0,

      53148

      58

      3

      2774

      5

      1

      6754

      5

      4

      2634

      5

      1

      6014

    2. 0,31810 => 2; 0,31810 = 0,01010...2.

      0,

      31810

      210

      0

      636

      2

      1

      272

      2

      0

      544

      2

      1

      088

      2

      0

      176

    3. 0,53148 => 10; 0,53148 = 0,674...10

    0,

    53148

    128

    1

    5

    2630

    314

    6

    57708

    128

    1

    5

    3760

    770

    7

    36608

    128

    1

    3

    7540

    660

    4

    6340

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

    Как мы уже знаем, в ЭВМ наибольшее применение находит система с основаниями 2, 4, 8, 16, т.е. системы которые кратны степени 2. Поэтому целесообразно рассмотреть лишь правила перевода чисел в этих системах. Аналогичные правила будут справедливы и для других систем. Допустим, что имеется некоторое целое число N8 в 8-ой системе. Оно может быть представлено в виде:

    N8 = a1*8n-1 + a2*8n-2 + a3*8n-3 + ...

    + an-2*82 + an-1*81 + an*80.

    Пусть каким-либо образом мы получили запись этого числа в виде двоичного, т.е.:

    N2 = b1*2k-1 + b2*2k-2 + ...

    + bk-2*22 + bk-1*21 + bk*20.

    Разделим эти выражения на 23 = 8:

    a1*8n-2 + a2*8n-3 + a3*8n-4 + ... + an-1*80 + an*8-1

    -------

    дробная часть

    b1*2k-4 + b2*2k-5 + ... + bk-3*20 + bk-2*2-1 + bk-1*2-2 + bk*2-3

    -------------------------

    дробная часть

    Так как числа были равны, то получается одинаковые частные и одинаковые остатки:

    an*8-1 = bk-2*2-1 + bk-1*2-2 + bk*2-3. (6.2)

    Если снова разделим целые части на 23 = 8, то опять получим равные частные и равные остатки.

    При этом видим, что каждой восьмеричной цифре соответствует её двоичный эквивалент. Поэтому перевод выполняется простой заменой цифры восьмеричной системы её двоичным эквивалентом и обратно.

    Пример:

    62,7538 = 110010,1111010112

    Аналогично для 4-ой системы:

    321,22334 = 111001,101011112

    Аналогично для 16-ой системы:

    1D876,72 = 00011101100001110110,011100102

    Из этих примеров видим, что чем выше основание системы счисления, тем компактнее запись.


    bk-2

    bk-1

    bk

    an

    0

    0

    0

    0

    0

    0

    1

    1

    0

    1

    0

    2

    0

    1

    1

    3

    1

    0

    0

    4

    1

    0

    1

    5

    1

    1

    0

    6

    1

    1

    1

    7

    Если умножить последние соотношения (6.2) на 8, то:

    an*8-1*8 = (bk-2*2-1 + bk-1*2-2 + bk*2-3)*23

    an = bk-2*22 + bk-1*21 + bk*20

    Архитектура персонального компьютера

    Структура 16-разрядного микропроцессора


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

    Микропроцессоры фирмы Intel в ходе своего развития к настоящему времени прошли ряд этапов, которые с определенным приближением можно характеризовать разрядностью микропроцессора. Первым в мире микропроцессором был выпущенный в 1971 году 4-разрядный микропроцессор Intel 4004. Следующим шагом стало появление ряда 8-разрядных микропроцессоров, наиболее характерным представителем которых стал нашедший чрезвычайно широкое применение Intel 8080, архитектурный аналог которого выпускался в нашей стране в составе микропроцессорного комплекта К580. Разработанный затем 16-разрядный микропроцессор Intel-8086 (отечественный аналог – микропроцессор К1810ВМ80 ) лег в основу первых персональных ЭВМ. Его архитектура, получившая обозначение x86, стала де факто стандартом на длительный период последующего развития этого направления вычислительной техники. Микропроцессор Intel 286 представлял собой некоторый переходный этап к архитектуре 32-разрядных микропроцессоров IA-32 ( Intel Architеcture-32 ), которая с определенными модификациями развивается, начиная с выпущенного в 1985 году микропроцессора Intel 386. Появление в 2001 году микропроцессора Itanium ознаменовало начало периода 64-разрядных микропроцессоров.

    Целью данного пособия является изучение базовых понятий архитектуры ЭВМ. Поэтому рассмотрим ее на примере компьютера, имеющего в своей основе микропроцессор с архитектурой x86. В тех вопросах, где это необходимо (аппаратные средства защиты информации, организация виртуальной памяти и т.д.), изложение материала будет базироваться на компьютерах, имеющих в своем составе микропроцессоры с архитектурой IA-32.

    Структура 16-разрядного микропроцессора


    Персональная ЭВМ типа IBM PC (рис. 14.1) включает в себя микропроцессор ( МП ), оперативную память и устройства ввода-вывода (УВВ), объединенные между собой системной шиной.



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

    Компьютер строится по магистрально-модульному принципу, при котором все блоки компьютера связываются между собой системной шиной, предназначенной для обмена данными, адресной и управляющей информацией между составными частями ЭВМ. Как правило, при такой организации в любой момент может быть установлена связь только между двумя модулями ЭВМ. Системная шина определяет общий порядок обмена между любыми блоками компьютера, а также максимальное количество используемых устройств ввода-вывода. Она включает в себя шину адреса ( ША ), шину данных ( ШД ) и шину управления ( ШУ ), содержащую набор линий, по которым передаются управляющие сигналы между блоками компьютера. Специфика каждого конкретного блока учитывается особыми управляющими устройствами – контроллерами, входящими в состав этих блоков, например, работой жесткого диска управляет контроллер жесткого диска, используя информацию, поступающую к нему от микропроцессора по системной магистрали.

    Структура 16-разрядного микропроцессора I8086 представлена на рис. 14.2



    В состав микропроцессора входят:

    1. арифметико-логическое устройство ( АЛУ ), предназначенное для выполнения арифметических и логических операций;

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

    3. устройство управления, включающее в себя

      • буфер команд, который представляет собой регистровую память объемом 6 байт, предназначенную для хранения выполняемой в данный момент команды (аналогично регистру команд в структуре классической ЭВМ) и заполняемую очередными командами из оперативной памяти по мере своего освобождения;

      • дешифратор кода операций, определяющий тип выполняемой команды;

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

    4. указатель команд ( IP – instruction pointer ), определяющий адрес выполняемой команды в сегменте команд оперативной памяти;

    5. регистр флагов ( FLAGS ), содержащий признаки результата выполненных команд и некоторую управляющую информацию. Среди признаков результата отметим следующие:

    ZF – флаг нуля: равен 1 при получении нулевого результата,

    SF – флаг знака: устанавливается равным старшему биту результата,

    CF – флаг переноса: фиксирует факт переноса из старшего бита в арифметических операциях,

    OF – флаг переполнения: устанавливается в 1 при получении результата вне допустимого диапазона чисел,

    PF – флаг паритета: устанавливается в 1, если младшие 8 бит результата операции содержат четное число единиц;

    к флагам управления относятся

    IF – флаг разрешения прерывания: когда флаг установлен в 1, процессор распознает маскируемые прерывания, что позволяет микропроцессору реагировать на особые ситуации, возникающие в работе внешних устройств; если значение флага равно нулю, то эти прерывания игнорируются,

    DF – флаг направления, применяется в командах обработки последовательности байт в памяти: если флаг равен 0, последовательность обрабатывается с элемента, имеющего наименьший адрес; если флаг установлен в 1, последовательность обрабатывается от старшего адреса к младшему,

    TF – флаг трассировки: если значение флага равно 1, то в микропроцессоре после выполнения каждой команды генерируется внутреннее прерывание, позволяющее перейти к соответствующей подпрограмме (используется при отладке программ);

    1. блок сегментных регистров, состоящий из четырех 16-разрядных регистров, каждый из которых содержит старшие разряды базового (начального) адреса сегмента оперативной памяти, выделяемого программе при ее выполнении: кодового сегмента CS, в котором содержится код программы; сегмента данных DS ; сегмента стека SS и дополнительного сегмента данных ES ;

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

    Представление данных в ЭВМ

    Вся информация в ЭВМ хранится в виде наборов бит, то есть комбинаций 0 и 1. Числа представляются двоичными комбинациями в соответствии с числовыми форматами, принятыми для работы в данной ЭВМ, а символьный код устанавливает соответствие букв и других символов двоичным комбинациям.

    Для чисел имеется три числовых формата:

    • двоичный с фиксированной точкой;

    • двоичный с плавающей запятой;

    • двоично-кодированный десятичный ( BCD ).

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

    В двоично-кодированном десятичном формате каждая десятичная цифра представляется в виде 4 битного двоичного эквивалента. Существуют две основные разновидности этого формата: упакованный и неупакованный. В упакованном BCD -формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп. Например, число 3904 представляется в виде двоичного числа 0011 1001 0000 0100. В неупакованном BCD -формате каждая десятичная цифра находится в младшей тетраде 8-битной группы (байте), а содержимое старшей тетрады определяется используемой в данной ЭВМ системой кодирования, и в данном случае несущественно. То же число 3904 в неупакованном формате будет занимать 4 байта и иметь вид:

    xxxx0011 xxxx1001 xxxx0000 xxxx0100 .

    Числа с плавающей запятой обрабатываются на специальном сопроцессоре ( FPU - floating point unit ), который, начиная с МП I486, входит в состав БИС микропроцессора. Данные в нем хранятся в 80-разрядных регистрах. Управляя настройками сопроцессора, можно изменять диапазон и точность представления данных этого типа (табл. 14.1).

    Таблица 14.1.

    Тип данных

    Размер (бит)

    Диапазон

    Обрабатывающий блок

    Целые без знака

    1 байт

    1 слово

    1 двойное слово

    8

    16

    32

    0...255

    0...65535

    0...4294967295

    АЛУ

    Целые со знаком

    1 байт

    8

    -128...+127

    АЛУ

    1 слово

    16

    -32768...+32767

    FPU

    1 двойное слово

    32

    -2147483648...+2147483647

    1 учетверенное слово

    64

     ( 0.92*1019)

    Числа с плавающей запятой

    действительное число

    32 (1+8+23)

     ( 0.34*1039)

    FPU

    с двойной точностью

    64 (1+11+52)

     ( 0.18*10309)

    с увеличенной точностью

    80 (1+15+64)

     ( 0.12*104933)

    Двоично-десятичные числа

    1 байт неупакованное

    8

    0...9

    АЛУ

    1 байт упакованное

    8

    0...99

    АЛУ

    10 байт упакованное

    80

    0...(99...99)18цифр

    FPU


    Организация оперативной памяти


    ОП является основной памятью для хранения информации. Она организована как одномерный массив ячеек памяти размером в 1 байт. Каждый из байтов имеет уникальный 20 битный физический адрес в диапазоне от 00000 до FFFFFh (здесь и далее для записи адресов используется шестнадцатеричная система счисления, признаком которой является символ h в конце кода). Таким образом, размер адресного пространства ОП составляет 220 = 1Мбайт. Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово. Младший байт слова имеет меньший адрес, а старший - больший. Так шестнадцатеричное число 1F8Ah, занимающее слово, в памяти будет расположено в последовательности 8Ah, 1Fh. Адресом слова считается адрес его младшего байта. Поэтому 20 битовый адрес памяти может рассматриваться и как адрес байта, и как адрес слова.

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

    Поток команд разделяется на байты при заполнении очереди команд внутри микропроцессора. Поэтому выравнивание команд практически не влияет на производительность и не используется.

    Адресное пространство ОП делится на сегменты. Сегмент состоит из смежных ячеек ОП и является независимой и отдельно адресуемой единицей памяти, которая в базовой архитектуре персональной ЭВМ имеет фиксированную емкость 216 = 64К байт. Каждому сегменту назначается начальный (базовый) адрес, являющийся адресом первого байта сегмента в адресном поле ОП. Значение физического адреса ячейки складывается из адреса сегмента и смещения ячейки памяти относительно начала сегмента(внутрисегментное смещение). Для хранения значений адреса сегмента и смещения используются 16-битовые слова.

    Чтобы получить 20-битовый физический адрес, микропроцессор автоматически осуществляет следующие операции. Значение базового адреса сегмента умножается на 16 (сдвиг на 4 разряда влево) и суммируется со значением смещения в сегменте (рис. 14.3). В результате получается 20-битовое значение физического адреса. При суммировании может возникнуть перенос из старшего бита, который игнорируется. Это приводит к тому, что ОП оказывается как бы организованной по кольцевому принципу. За ячейкой с максимальным адресом FFFFFh следует ячейка с адресом 00000h.



    Сегменты физически не привязаны к конкретному адресу ОП, и каждая ячейка памяти может принадлежать одновременно нескольким сегментам, так как базовый адрес сегмента может определяться любым 16-битовым значением. Сегменты могут быть смежными, неперекрывающимися, частично или полностью перекрывающимися. Вместе с тем, в соответствии с алгоритмом вычисления физического адреса, начальные адреса сегментов всегда кратны 16.
    1   2


    написать администратору сайта