Сложение и вычитание в прямом, обратном и дополнительном кодах
Сложение в прямом коде чисел, имеющих одинаковые знаки, выполняется достаточно просто. Мантиссы складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с раз- личными знаками. В этом случае приходится определять большое по модулю число, производить вычитание мантисс и присваивать разности знак большего (по модулю) числа. Таким образом, если положительные и отрицательные числа представлены в прямом коде, операции над кодами знаков и мантиссами выполняются раздельно. Операция вычитания (алгебраического сложения) сводится к операции простого арифметического сложения при помощи обратного и дополнительного кодов, используемых для представления отрицательных чисел в машине. При этом операция сложения распространяется и на разряды знаков, рассматриваемых как разряды целой части числа. Чтобы представить двоичное отрицательное число (1а) в обратном коде, нужно поставить в знаковый разряд единицу, а во всех других разрядах заменить единицы нулями, а нули — единицами: (G-) обр = 1, σ1, σ 2, …, σ n (3) σi = 1 при γi = 0 и σi = 0 при γi = 1.
При записи отрицательного числа в дополнительном коде ставят единицу в разряд знака, а цифровую часть числа заменяют дополнением модуля числа до целой единицы. Отрицательное число G- = - 0, γ1, γ2, …, γn в дополнительном коде имеет вид: (G-) доп = 1, ε1, ε 2, …, ε n (4) где 0, ε1, ε 2, …, ε n = 1 - 0, γ1, γ2, …, γn (4a) Установим связь между самим отрицательным числом G- и числами (G-)обр и (G-)доп, представляющими его обратный и дополнительный коды. Вычитая (1а) из (3), имеем: (G-) обр - G- = 1, σ1, σ 2, …, σ n – (- 0, γ1, γ2, …, γn) = 1,11…1 = 2 – 2-n (так как σi + γi = 1) Следовательно, (G-) обр = G- + 2 - 2-n (4b) Вычитая (1a) из (4), имеем: (G-) доп - G- = 1, ε1, ε 2, …, ε n - (- 0, γ1, γ2, …, γn) (5) Учитывая (4a), получаем: (G-) доп = G- + 2 (5а)
Из (5) и (5а) следует: (G-) доп = (G-) обр + 2-n где n — число разрядов в числе. Таким образом, дополнительный код может быть получен из обратного путем добавления к нему единицы младшего разряда. Рассмотрим представление нуля. В процессе вычислений могут возникнуть «положительный» и «отрицательный» нули: + 0,00…0; - 0,00…0 Представление «положительного» нуля одинаково для прямого, обратного и дополнительного кодов: (+ 0) пр = 0,00…0 Отрицательный нуль изображается: в прямом коде (- 0) пр = 0,00…0 в обратном коде (- 0) обр = 1,11…1 в дополнительном коде (- 0) доп = 1,11…1 + 2-n = 0,00…0 так как перенос из разряда знака теряется. Используя обратный или дополнительный код, можно операции вычитания и сложения чисел различных знаков свести к арифметическому сложению кодов чисел. Рассмотрим использование обратного кода при алгебраическом сложении двух двоичных чисел G и Q, когда одно из них или оба числа отрицательны. Для этого случая может быть сформулировано следующее правило (предполагаем, что модуль алгебраической суммы меньше единицы). При алгебраическом сложении двух двоичных чисел с использованием обратного кода положительные слагаемые представляются в прямом коде, а отрицательные - в обратном и производится арифметическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду суммы кодов (такой перенос называется круговым или циклическим). В результате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в обратном коде, если она отрицательна. Рассмотрим теперь использование дополнительного кода для алгебраического сложения. Приведем соответствующее правило (полагаем, что модуль алгебраической суммы меньше единицы). При алгебраическом сложении двух двоичных чисел с использованием дополнительного кода положительные слагаемые представляются в прямом коде, а отрицательные — в дополнительном и производится арифметическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса отбрасывается. В результате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в дополнительном коде, если эта сумма отрицательна. В самом деле, если G- < 0 и Q- < 0, то согласно (4b):
(G-) доп + (Q-) доп = G- + 2 + G- + 2 = 2 + (G- + Q- + 2) Так как -1 < G- + Q- < 0, то величина, стоящая в скобках, меньше двух, но больше единицы. Двойка, стоящая вне скобки, образует перенос из разряда знака, который будет отброшен. В результате получаем: (G-) доп + (Q-) доп = (G- + Q-) + 2 = (G- + Q-) доп G+ > 0, а Q- < 0, то (G+) пр + (Q-) доп = (G+ + Q-) + 2 Если при этом 0 < G+ + Q- < 1, то стоящая вне скобки двойка дает единицу переноса из разряда знака, которая отбрасывается. При этом получаем: (G+) пр + (Q-) доп = (G+ + Q-) пр (G+ + Q- > 0) Если же -1 < G+ + Q- < 0, то (G+ + Q-) + 2 < 2 и переноса из разряда знака не возникает. В этом случае: (G+) пр + (Q-) доп = (G+ + Q-) доп (G+ + Q- < 0). Применение дополнительного или обратного кода для представления отрицательных чисел упрощает операцию алгебраического сложения. Алгебраическое сложение чисел с разными знаками заменяется арифметическим сложением кодов, при этом автоматически получается код знака результата. Однако остается нерешенным вопрос о выработке признака переполнения разрядной сетки. При сложении кодов теряется единица переноса из разряда целых единиц и результат ошибочно воспринимается как положительное число, меньшее единицы. Отметим, что при алгебраическом сложении двух чисел G и Q, каждое из которых по модулю меньше единицы, может возникнуть переполнение разрядной сетки, но при этом модуль получаемой суммы всегда меньше двух. Это обстоятельство облегчает построение кодов, по виду которых можно судить о переполнении разрядной сетки. Для получения признака переполнения разрядной сетки применяют модифицированные прямой, дополнительный и обратный коды. Эти коды отличаются от ранее рассмотренных кодов тем, что для представления знака используются два разряда. При этом знак плюс обозначается 00, а знак минус — 11. При алгебраическом сложении чисел знаковые разряды рассматриваются как разряды целой части числа. При возникновении переноса единицы из старшего разряда знака эта единица отбрасывается, если отрицательные числа представляются модифицированным дополнительным кодом, или производится циклический перенос в младший разряд мантиссы, если отрицательные числа изображаются модифицированным обратным кодом. При алгебраическом сложении на переполнение разрядной сетки (модуль алгебраической суммы больше единицы) указывает несовпадение цифр в знаковых разрядах. Комбинации 01 в знаковых разрядах соответствует положительное число, а комбинации 10 — отрицательное число. В этих случаях модуль суммы: 1 ≤ |x| < 2 Отметим также особенности нормализации и выполнения сдвига для отрицательных чисел, представленных в дополнительном (обратном) коде. У нормализованного положительного или отрицательного числа с мантиссой, изображаемой в прямом коде, цифра в старшем S-ичном разряде мантиссы должна быть отлична от нуля. Для отрицательных мантисс, представленных в обратном или дополнительном коде, условие нормализации |q| ≥ 1/S выполняется, если цифра в старшем S-ичном разряде мантиссы есть нуль. В случае чисел с плавающей запятой комбинации 01 и 10 в знаковых разрядах мантиссы указывают на нарушение нормализации влево, а комбинации цифр 00 и 1 σs1 (σs1 ≠ 0) в младшем знаковом разряде и старшем S-ичном цифровом разряде мантиссы сигнализируют о нарушении нормализации вправо. Для восстановления нормализации производится сдвиг мантиссы вправо (или влево) на нужное число разрядов, при этом порядок увеличивается (уменьшается) на соответствующее число единиц, Если отрицательные числа представляются в дополнительном (обратном) коде, сдвиг производится по особым правилам («модифицированный сдвиг»), с тем чтобы в результате сдвига дополнительного (обратного) кода числа х на m S-ичных разрядов получился дополнительный (обратный) код числа Smx или S-mх соответственно для сдвига влево или вправо. При модифицированном сдвиге дополнительного (обратного) кода вправо в освобождающиеся старшие разряды мантиссы записываются единицы, а при сдвиге влево единицы записываются в освобождающиеся младшие разряды.
5. ОЗУ Запоминающие устройства (ЗУ) служат для приема, хранения и выдачи информации. Запоминающие устройства по выполняемым функциям делятся на оперативные и постоянные. Оперативные запоминающие устройства (ОЗУ) осуществляют запись, хранение и считывание информации и работают только при включенном питании, т. е. ОЗУ являются энергозависимыми. Постоянные запоминающие устройства (ПЗУ) хранят информацию при отключении питания, т. е. ПЗУ являются энергонезависимыми. ОЗУ по виду хранения информации разделяются на статические и динамические. В статическом ОЗУ в качестве элемента памяти используется триггер, в динамическом - конденсатор. По-буржуйски ОЗУ называется RAM (random access memory - память с произвольным доступом). Статическое ОЗУ соответственно SRAM, динамическое DRAM. Статическое ОЗУ На рисунке 1 показана структура статического запоминающего устройства.
Рис. 1 - Структура статического ОЗУ ЭП - это элемент памяти. Еще его называют запоминающим элементом (ЗЭ). Все эти элементы памяти заключены в матрице накопителя. Число элементов равно 2n, где n - целое число. Каждый конкретный ЭП хранит один бит информации и имеет свой адрес, задаваемый n-разрядным двоичным кодом. Для удобства адрес разбивают на две части (обычно одинаковые) - адрес строки и адрес столбца. В итоге получается прямоугольная матрица, содержащая 2k строк и 2m столбцов. Всего элементов памяти будет 2k+m. Поскольку число строк и число столбцов значительно больше, чем разрядность двоичного числа, между адресными входами и матрицей элементов памяти ставят дешифраторы, на рисунке обозначенные как дешифратор строк и дешифратор столбцов. Иногда в структуре микросхем ОЗУ между дешифратором столбцов и матрицей накопителя изображают ключи выбора столбцов. Рассмотрим один из вариантов исполнения элемента памяти статического ОЗУ. Вот схемка:
Рис. 2 - Элемент памяти статического ОЗУ Собственно элементом памяти является D-триггер, находящийся на пересечении i-й строки и j-го столбца. Для уменьшения количества выводов микросхем ОЗУ совмещают входы и выходы в них. Поэтому на схеме введен еще и электронный ключ SW. При уровнях лог. 1 на линиях i и j и при подаче сигнала разрешения записи WR=1 (от буржуйского write - записывать), в триггер записывается информация, которая поступает на вход D. При этом шина Вх./Вых. оказывается подключенной к D входу триггера через электронный ключ SW и выполняет функции входа, при снятии сигнала WR ключ подключает к шине Вх./Вых. выход триггера, и эта шина выполняет функции выхода. Если оператива одноразрядная, то шина Вх./Вых. будет общей для всех элементов памяти. Но чаще оперативы многоразрядные и в этом случае на каждой паре линий строка-столбец располагается по n триггеров и n ключей, где n-число разрядов, а элемент "И" при этом остается один. Естественно, что каждый из ключей подключается к своей шине Вх./Вых. Помимо режимов записи и считывания, которые определяются потенциалом на входе WR, существует режим хранения данных, в котором запись и считывание запрещены. Режим хранения имеет двоякий смысл. Во-первых, если в устройстве много микросхем ОЗУ, что характерно, то запись или считывание ведется по одной микросхеме, остальные в этом случае должны быть отключены. Во-вторых, в режиме хранения данных энергопотребление намного меньше, чем в режиме записи и считывания (рабочий режим). Для перевода оперативы в режим хранения используется сигнал CS, по-буржуйски crystal selection - выбор кристалла. Обычно для перевода в режим хранения на вход CS подается уровень лог. 1, для перевода в рабочий режим - лог. 0. Динамическое ОЗУ Как говорилось ранее, в динамическом ОЗУ функции элемента памяти выполняет кондер. Информация представляется электрическим зарядом, к примеру, если есть заряд на кондере, значит в элемент памяти записана лог. 1, нет заряда - лог. 0. Ну а поскольку время сохранения на кондере заряда ограничено (вследствие утечки), необходимо периодически восстанавливать записанную информацию. Этот процесс красиво зовется регенерацией. Помимо этого, для динамического ОЗУ требуется синхронизация, обеспечивающая последовательность включений функциональных узлов. Для реализации элемента памяти динамического ОЗУ широко применяется схема, показанная на рисунке 3.
Рис. 3 - Элемент памяти динамического ОЗУ Выбор элемента памяти производится сигналом лог. 1 на шине строки. Транзистор VT2 открывается и соединяет кондер С1 с шиной столбца. РШ - разрядная шина. Предварительно через транзистор VT1, который открывается сигналом "Такт (С)", заряжается емкость Сш до напряжения U0. Емкость Сш должна значительно превышать емкость С1. Элемент памяти динамического ОЗУ проще, чем статического, поэтому объем памяти в динамических ОЗУ выше, чем в статических. Соответственно, при большой разрядности адреса его делят на две части. Первая называется RAS, что по-буржуйски означает row access signal - сигнал выборки строки, вторая - CAS, на буржуйском означающая column access signal - сигнал выборки столбца. Сигналы RAS и CAS сдвинуты друг относительно друга во времени, сигнал разрешения записи WR должен появляться при введении обеих частей адреса. Одновременно с WR вводится информационный сигнал. В режиме считывания информационный сигнал появляется на выходе с некоторой задержкой, относительно сигнала CAS. На последок табличка с обозначением сигналов микросхем памяти:
Оперативная память (также оперативное запоминающее устройство, ОЗУ) — в информатике — память, часть системы памяти ЭВМ, в которую процессор может обратиться за одну операцию (jump, move и т. п.). Предназначена для временного хранения данных и команд, необходимых процессору для выполнения им операций. Оперативная память передаёт процессору данные непосредственно, либо через кеш-память. Каждая ячейка оперативной памяти имеет свой индивидуальный адрес. ОЗУ может изготавливаться как отдельный блок, или входить в конструкцию однокристальной ЭВМ или микроконтроллера.
Запоминающее устройство с произвольным доступом — ЗУПВ (или Запоминающее устройство произвольной выборки — ЗУПВ) (от англ. Random Access Memory) — один из видов памяти, позволяющий в любой момент времени получить доступ к любой ячейке по её адресу на чтение или запись. ЗУПВ используются в качестве оперативной памяти персонального компьютера. Предназначены для записи, хранения и считывания информации в процессе её обработки. Подразделяются на статические и динамические. В статических ОЗУ запоминающий элемент представляет собой триггер, изготовленные по той или иной технологии (ТТЛ, ЭСЛ, КМОП и др.), что позволяет считывание информации без её потери. В динамических ОЗУ элементом памяти является ёмкость (например, входная ёмкость полевого транзистора), что требует восстановления записанной информации в процессе её хранения и использования. Это усложняет применение ОЗУ динамического типа, но позволяет реализовать больший объём памяти. В современных динамических ОЗУ имеются встроенные системы синхронизации и регенерации, поэтому по внешним сигналам управления они не отличаются от статических. Полупроводниковая динамическая (DRAM) — каждая ячейка представляет собой конденсатор на основе перехода КМОП-транзистора. Достоинства — низкая стоимость, большой объём. Недостатки — необходимость периодического считывания и перезаписи каждой ячейки — т. н. «регенерации», и, как следствие, понижение быстродействия, большое энергопотребление. Процесс регенерации реализуется специальным контроллером, установленным на материнской плате или в центральном процессоре. DRAM обычно используется в качестве оперативной памяти (ОЗУ) компьютеров. Ферромагнитная — представляет собой матрицу из проводников, на пересечении которых находятся кольца или биаксы, изготовленные из ферромагнитных материалов. Достоинства — устойчивость к радиации, сохранение информации при выключении питания; недостатки — малая ёмкость, большой вес, стирание информации при каждом чтении. В настоящее время в таком, собранном из дискретных компонентов виде, не применяется. Однако к 2003 году появилась магнитная память MRAM в интегральном исполнении. Сочетая скорость SRAM и возможность хранения информации при отключённом питании, MRAM является перспективной заменой используемым ныне типам ROM и RAM. Однако она на сегодняшний день (2006 год) приблизительно вдвое дороже микросхем SRAM (при той же ёмкости и габаритах). ОЗУ, собранное на триггерах, называется статической памятью с произвольным доступом, или просто статической памятью. Достоинство этого вида памяти — скорость. Поскольку триггеры собраны на вентилях, а время задержки вентиля очень мало, то и переключение состояния триггера происходит очень быстро. Данный вид памяти не лишён недостатков. Во-первых, группа транзисторов, входящих в состав триггера, обходится дороже, даже если они вытравляются миллионами на одной кремниевой подложке. Кроме того, группа транзисторов занимает гораздо больше места, поскольку между транзисторами, которые образуют триггер, должны быть вытравлены линии связи. Более экономичной вид памяти. Для хранения разряда (бита) используется схема, состоящая из одного конденсатора и одного транзистора (в некоторых вариациях конденсаторов два). Такой вид памяти решает, во-первых, проблему дороговизны (один конденсатор и один транзистор дешевле нескольких транзисторов) и, во-вторых, компактности (там, где в SRAM размещается один триггер, то есть один бит, можно уместить восемь конденсаторов и транзисторов). Есть и свои минусы. Во-первых, память на основе конденсаторов работает медленнее, поскольку если в SRAM изменение напряжения на входе триггера сразу же приводит к изменению его состояния, то для того, чтобы установить в 1 бит на основе конденсатора, этот конденсатор нужно зарядить, а для того, чтобы бит установить в 0, соответственно, разрядить. А это гораздо более длительные (в 10 и более раз) операции, чем переключение триггера, даже если конденсатор имеет весьма небольшие размеры. Второй существенный минус — конденсаторы склонны к «стеканию» заряда; проще говоря, со временем конденсаторы разряжаются. Причём разряжаются они тем быстрее, чем меньше их ёмкость. В связи с этим обстоятельством, дабы не потерять содержимое битов, конденсаторы необходимо регенерировать через определённый интервал времени, чтобы восстанавливать заряд. Регенерация выполняется путем считывания заряда (через транзистор). Контроллер памяти периодически приостанавливает все операции с памятью для регенерации её содержимого, что значительно снижает производительность данного вида ОЗУ. Память на конденсаторах получила своё название Dynamic RAM (динамическая память) как раз за то, что разряды в ней хранятся не статически, а «стекают» динамически во времени. Таким образом, DRAM дешевле SRAM и её плотность выше, что позволяет на том же пространстве кремниевой подложки размещать больше битов, но при этом её быстродействие ниже. SRAM, наоборот, более быстрая память, но зато и дороже. В связи с этим обычную память строят на модулях DRAM, а SRAM используется для построения, например, кеш-памяти в микропроцессорах.
Типичная ячейка статической двоичной памяти (двоичный триггер) на КМОП-технологии состоит из двух перекрёстно (кольцом) включенных инверторов и ключевых транзисторов для обеспечения доступа к ячейке (рис.1.). Часто для увеличения плотности упаковки элементов на кристалле в качестве нагрузки применяют поликремниевые резисторы. Недостатком такого решения является рост статического энергопотребления. Линия WL (Word Line) управляет двумя транзисторами доступа. Линии BL и BL - битовые линии, используются и для записи данных и для чтения данных. Преимущества: · Быстрый доступ. SRAM — это действительно память произвольного доступа, доступ к любой ячейке памяти в любой момент занимает одно и то же время. · Простая схемотехника — SRAM не требуются сложные контроллеры. · Возможны очень низкие частоты синхронизации, вплоть до полной остановки синхроимпульсов. Недостатки · Высокое энергопотребление. · Невысокая плотность записи (шесть элементов на бит, вместо двух у DRAM). · Вследствие чего — дороговизна килобайта памяти. Тем не менее, высокое энергопотребление не является принципиальной особенностью SRAM, оно обусловлено высокими скоростями обмена с данным видом внутренней памяти процессора. Энергия потребляется только в момент изменения информации в ячейке SRAM. Применение: SRAM применяется в микроконтроллерах и ПЛИС, в которых объём ОЗУ невелик (единицы килобайт), зато нужны низкое энергопотребление (за счёт отсутствия сложного контроллера динамической памяти), предсказываемое с точностью до такта время работы подпрограмм и отладка прямо на устройстве. В устройствах с большим объёмом ОЗУ рабочая память выполняется как DRAM. SRAM’ом же делают регистры и кэш-память.
Конструктивно память DRAM состоит из «ячеек» размером в 1 или 4 бит, в каждой из которых можно хранить определённый объём данных. Совокупность «ячеек» такой памяти образуют условный «прямоугольник», состоящий из определённого количества строк и столбцов. Один такой «прямоугольник» называется страницей, а совокупность страниц называется банком. Весь набор «ячеек» условно делится на несколько областей. Принцип действия Процесс регенерации памяти в классическом варианте существенно «тормозит» работу системы, поскольку в это время обмен данными с памятью невозможен. Регенерация, основанная на обычном переборе строк, не применяется в современных типах DRAM. Существует несколько более экономичных вариантов этого процесса — расширенный, пакетный, распределенный; наиболее экономичной является скрытая регенерация. Из новых технологий регенерации можно выделить тип регенерации PASR (англ. Partial Array Self Refresh), применяемый компанией Samsung в чипах памяти SDRAM с низким уровнем энергопотребления. Регенерация «ячеек» выполняется только в период ожидания в тех банках памяти, в которых имеются данные. Параллельно с этой технологией реализуется метод TCSR (англ. Temperature Compensated Self Refresh), который предназначен для регулировки скорости процесса регенерации в зависимости от рабочей температуры.
|