Что такое разрядная сетка компьютера

Обновлено: 07.07.2024

Термин «разрядность» часто используют при описании вычислительных устройств и систем, понимая под этим число бит, одновременно хранимых, обрабатываемых или передаваемых в другое устройство. Но именно применительно к центральным процессорам (ЦП), как к наиболее сложным представителям вычислительного железа, не делимым на отдельные детали (до тех пор, пока кто-то не придумал, как продать отдельно кэш или умножитель внутри чипа), понятие разрядности оказывается весьма расплывчатым. Продемонстрировать это поможет умозрительный пример.

Представьте себе, что вокруг благодатные 80-е, в мире (всё ещё) десятки производителей ЦП, и вы работаете в одном из них над очередным поколением. Никаких 256-битных SSE8, встроенных GPU и 5-канальных контроллёров памяти на свете пока нет, но у вас уже есть готовый 16-битный процессор (точнее, «16-битный» пишется в технической документации), в котором 16 бит везде и во всём — от всех внешних шин до архитектурного размера обрабатываемых данных. Реальным примером такого ЦП могут быть первые однокорпусные (правда, не однокристальные) ЦП для архитектуры DEC PDP-11. И вот приходит задание руководства — разработать новое, обратно совместимое поколение этого же ЦП, которое будет 32-битным — не уточняя, что понимается под последним. Именно это понимание и предстоит прояснить в первую очередь. Итак, наш главный вопрос: что именно надо удвоить по разрядности в нашем пока насквозь 16-битном ЦП, чтобы получившийся процессор мог называться 32-битным? Чтобы решать задачу было легче, применим два подхода: систематизируем определения и посмотрим на примеры.Систематизируем

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

Рискну предположить, что все производители любого программируемого «железа», особенно процессоров, на 90% стараются не для конечных пользователей, а для программистов. Следовательно, с точки зрения производителей процессор должен выполнять нужные команды нужным образом. С другой стороны, детали структуры кристалла (топологические, электрические и физические параметры отдельных транзисторов, вентилей, логических элементов и блоков) могут быть скрыты не только от пользователя, но и от программиста. Выходит, что разрядность надо отличать и по реализации — физическую и архитектурную.

Следует добавить, что программисты тоже бывают разные: большинство пишут прикладные программы на языках высокого уровня с помощью компиляторов (что делает код до некоторой степени платформонезависимым), некоторые пишут драйверы и компоненты ОС (что заставляет более внимательно относиться к учёту реальных возможностей аппаратной части), есть творцы на ассемблере (явно требующем знания целевого процессора), а кто-то пишет сами компиляторы и ассемблеры (аналогично). Поэтому под программистами далее будем понимать именно тех, для кого детали аппаратной реализации важны если не для написания программы вообще, то хотя бы для её оптимизации по скорости — «архитектурная» разрядность чего-либо будет относиться именно к программированию на родном машинном языке процессора или более удобном ассемблере, не залезая при этом в нутро ЦП (это уже вопросы микроархитектуры, которую мы для большего различия и назвали физической реализацией). Описанные нюансы всё равно влияют на всех программистов, т.к. языки высокого уровня почти всегда переводятся компиляторами в машинный код, а компиляторы тоже должен кто-то написать. Исключения в виде интерпретируемых языков тоже не стоят в стороне — сами интерпретаторы тоже создаются с помощью компиляторов.

Осталось рассмотреть, разрядность какой именно информации нам интересна. Что вообще потребляет и генерирует ЦП в информационном смысле? Команды, данные, адреса и сигнально-управляющие коды. О последних речь не идёт — их разрядность жёстко зафиксирована в конкретной аппаратной реализации и в большинстве случаев программно не управляема. Чуть трудней с командами — в семействе архитектур RISC, например, разрядность любого обращения к памяти должна быть равна физической разрядности шины данных процессора, в т.ч. и при считывании кода (кроме некоторых послаблений в современных ARM и PowerPC). Это хорошо для ЦП — нет проблем с невыровненным доступом, все команды имеют одинаковую, либо переменную, но просто вычисляемую длину. Зато плохо для программиста — RISC это усечённый набор команд, которые ещё и занимают больше места, чем при более компактном кодировании (для того же алгоритма нужно больше команд, но и для того же числа команд надо больше байтов). Поэтому именно CISC-парадигма завоевала наибольший подход с её разнообразием и переменной длинной команд, не равной разрядности чего-либо. Разумеется, все современные ЦП внутри — настоящие RISC, но это только физически, а не архитектурно. Остались только два вида информации — данные и адреса. Их и рассмотрим.Собираем

У нас имеется три критерия видов разрядности: функциональный (обработки, хранения и обмена), реализационный (физическая и архитектурная) и типовой (данных и адресов). Итого уже 12 видов этой непонятной штуки. Предположим, что на каждую комбинацию критериев для нашего исходного ЦП мы отвечаем «16-битная» (и физическая разрядность обработки данных, и архитектурная хранения адресов, и все остальные). Теперь посмотрим, какие из этих вопросов обязательно должны давать ответ «32-битная», чтобы получившийся процессор оказался именно таким.

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



Intel 486DX2. Где-то здесь притаилась разрядность…

Но это ещё не всё. Зачем нам вообще 32-битная физическая или логическая адресация? Середина-конец 80-х, на рынке только-только появились мегабитные микросхемы памяти, типичный объём памяти для ПК пока что измеряется сотнями килобайт, но чуть позже — мегабайтами. А 32-битная адресация позволит получить доступ к 4 ГБ физического ОЗУ! Да кому вообще такое может понадобиться в ближайшие лет 20 в персоналках?! Неудивительно, что первые популярные «32-битные» ЦП имели совсем не 32 бита логической ширины шины адреса: MC68000 имел 24 (23 физических + 1 для управления разрядами), а MC68008 — и вовсе 20. Intel 386SX (вышедший на 3 года позже оригинального полностью 32-битного i80386), помимо уполовинивания шины данных, сократил и шину адреса до 24 (23 физических) бит, а его встраиваемые версии 386EX/CX имели 26-битную шину. Более того, первые чипсеты, позволявшие оперировать 32-битными адресами, появились лишь в 90-х, а первые материнские платы, имевшие достаточное число слотов памяти, чтобы набрать >4 ГБ модулями максимального на тот момент размера — лишь в 2000-х. Хотя первые ЦП с 64-битной физической шиной адреса (IBM/Motorola PowerPC 620) появились аж в 1994 г.. Выводим

Итак, физически в процессоре вообще ничего не требуется делать 32-битным. Достаточно лишь архитектурно убедить программиста, что ЦП выполняет 32-битные операции одной командой. И хотя она при отсутствии полноценных внутренних ресурсов неизбежно будет декодироваться в цепочки микрокода для управления 16-битными физическими порциями информации и аппаратными блоками — это уже программиста не волнует. Так что же, достаточно переписать прошивку, переделать декодер и схему управления, и вот наш 16-битный процессор сразу стал 32-битным?

Но означает ли всё это, что в ЦП как можно больше ресурсов, и аппаратных, и архитектурных, должны быть 32-битными, чтобы его можно было бы назвать полноценным 32-битным процессором? Совсем нет. Возьмём тот же MC68000 — у него 32-битная архитектура для данных и адресов и 32-битные регистры, но 16-битные АЛУ и внешняя шина данных и 24-битная физическая внешняя адресация. Тем не менее, недостаточная «32-битность» не мешает ему обгонять появившийся на 3 года позже «16-битный» 80286: на популярном в 1980-е бенчмарке Dhrystones MC68000 на 8 МГц набирает 2100 «попугаев», а 286 на 10 МГц — 1900 (также 16-битный i8088 на 4,77 МГц — 300).

Разрядности некоторых процессоров для ПК

* — Мультиплексированная шина данных и адреса (для ЦП с интегрированным контроллёром памяти — только межпроцессорная)
«A/B|C/D» — для данных указана разрядность скалярного целого / вещественного | векторного целого / вещественного доменов
«X+Y» — имеет домены этого вида двух разрядностей
«X-Y» — в зависимости от команды или ФУ принимает все промежуточные значения с целой степенью двойки

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

В компьютерной технике разрядная сетка устройств имеет ограничения -->− - диапазон чисел и точность их представления.

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


Рисунок 1.3. Система машинных чисел.

-->− - max и min представления числа, между которыми находится конечное множество представимых чисел.

Если результат больше xmax, то возникает переполнение (overflow).

Если модуль результата меньше xmin, то фиксируется антипереполнение (underflow).

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

В зависимости от назначения и конструкции ЭВМ в них применяются две формы представления двоичных чисел: естественная и нормальная.

Естественной называется такая форма числа, которая в неявном, условном виде реализует формулу, приведенную ниже, т.е. число записывается только с помощью набора значащих цифр xj без явного указания их весов и знаков сложения между ними. Отсчет разрядов (что равносильно указанию их весов) ведется от точки, которая обычно фиксируется между целой и дробной частями числа. Изображение числа имеет следующий вид:

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

Нормальной называется такая форма числа, которая в неявном, условном виде реализует формулу:


(1.3)

когда число представляется как произведение некоторой целой степени основания системы и цифровой части, являющейся правильной дробью. При этом показатель степени основания называется порядком, а цифровая часть -->− - мантиссой числа. Мантисса может иметь знак. Знак мантиссы -->− - это знак всего числа. При записи и порядок, и мантисса представляются в естественной форме, как показано в таблице:

10 3 -->⋅ × 0.118375 = 10 4 -->⋅ × 0.0118375 = 10 -3 -->⋅ × 118375 =

10 111 -->⋅ × 0.1110110011 = 10 1000 -->⋅ × 0.01110110011 = .

При записи числа в нормальной форме достаточно указать только порядок и мантиссу, не фиксируя в явном виде основание системы 10. Например, можно (в машинах так и делается) записать 10 3 · 0.118375 = 0.118375e3. Формула, записанная выражением 1.3, описывает нормальную (как уже было сказанно), научную или полулогарифмическую запись числа, т.к. половина числа записано нормально, а половина логарифмически.

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

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

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

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

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

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

В результате нормализации числа получаем

В результате нормализации числа получаем

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

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

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

I. В режиме с фиксированной точкой

II. В режиме с плавающей точкой

Знак числа -->− - 1 разряд,

Знак числа (мантиссы) -->− - 1 разряд,

Целая часть -->− - 3 разряда,

Мантисса -->− - 5 разрядов,

Дробная часть -->− - 5 разрядов,

Знак порядка -->− - 1 разряд,

Итого -->− - 9 разрядов.

Порядок числа -->− - 2 разряда,

Итого -->− - 9 разрядов.



Слева изображена сетка условной машины в режиме с фиксированной точкой, справа -->− - в режиме с плавающей точкой. Заметим, что знак числа имеет двоичную природу, так как может принимать только два значения: плюс или минус. В машинах принято плюс изображать нулем, а минус -->− - единицей, хотя в принципе можно сделать и наоборот. Посмотрим, какие числа можно записать в любую из ячеек нашей машины:

Для хранения чисел в памяти компьютера используется два формата: целочисленный (естественная форма) и с плавающей точкой (нормализованная форма) (точка — разделительный знак для целой и дробной части числа).

Целочисленный формат (формат с фиксированной точкой) используется для представления в компьютере целых (англ. integer) положительных и отрицательных чисел. Для этого, как правило, используются форматы, кратные байту: 1, 2, 4 байта.

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

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

Однобайтовое представление применяется только для положительных целых чисел. В этом формате отсутствует знаковый разряд. Наибольшее двоичное число, которое может быть записано при помощи 1 байта, равно 11111111, что в десятичной системе счисления соответствует числу 25510.

Для положительных и отрицательных целых чисел обычно используется 2 и 4 байта, при этом старший бит выделяется под знак числа: 0 - плюс, 1 - минус.

Самое большое (по модулю) целое число со знаком, которое может поместиться в 2-байтовом формате, это число 0111111111111111, то есть при помощи подобного кодирования можно представить числа от −32 76810 до 32 76710.

Если число вышло за указанные границы, произойдет переполнение! Поэтому при работе с большими целыми числами под них выделяется больше места, например 4 байта.

Формат с плавающей точкой (нормализованная форма) используется для представления в компьютере действительных чисел (англ. real). Числа с плавающей точкой размещаются, как правило, в 4 или 8 байтах.

Нормализованная форма представления чисел обеспечивает огромный диапазон их записи и является основной в современных ЭВМ.

Представление целого положительного числа в компьютере

Для представления целого положительного числа в компьютере используется следующее правило:

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

Например, положительное число +13510 в зависимости от формата представления в компьютере будет иметь следующий вид:
- для формата в виде 1 байта - 10000111 (отсутствует знаковый разряд);
- для формата в виде 2 байтов - 0000000010000111;
- для формата в виде 4 байтов - 00000000000000000000000010000111.

Представление целого отрицательного числа в компьютере

Для представления целого отрицательного числа в компьютере используется дополнительный код. Такое представление позволяет заменить операцию вычитания числа операцией сложения с дополнительным кодом этого числа. Знаковый разряд целых отрицательных чисел всегда равен 1.

Для представления целого отрицательного числа в компьютере используется следующее правило:

- число без знака переводится в двоичную систему;
- результат дополняется нулями слева в пределах выбранного формата;
- полученное число переводится в обратный код (нули заменяются единицами, а единицы - нулями);

- к полученному коду прибавляется 1.

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

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

Отрицательное число может быть представлено в виде 2 или 4 байт.

Например, представим число −13510 в 2-байтовом формате:

- 13510 → 10000111 (перевод десятичного числа без знака в двоичный код);
- 0000000010000111(дополнение двоичного числа нулями слева в пределах формата);
- 0000000010000111 → 1111111101111000(перевод в обратный код);
- 1111111101111000 → 1111111101111001 (перевод в дополнительный код).

Представление вещественного (действительного) числа в компьютере

Вещественное число может быть представлено в экспоненциальном виде, например:

В этом формате вещественное число (R) представляется в виде произведения мантиссы (m) и основания системы счисления (P) в целой степени (n), называемой порядком.

Представим это в общем виде, как: R=m⋅P n .

Порядок n указывает, на какое количество позиций и в каком направлении должна сместиться в мантиссе точка (запятая), отделяющая дробную часть от целой. Мантисса, как правило, нормализуется, то есть представляется в виде правильной дроби 0 < m < 1.

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

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

Для размещения вещественного числа обычно используется 2 или 4 байта.

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

10.jpg

В 4-байтовом формате представления вещественного числа первые три байта выделяются для размещения мантиссы, в четвертом байте размещаются порядок числа, знаки числа и порядка.

11.jpg

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа.

Пример записи числа 6,2510=110,012=0,11001⋅2 11 , представленного в нормализованном виде, в четырёхбайтовом формате с семью разрядами для записи порядка.

Задания для самостоятельного решения

Задание 1 Получить десятичный эквивалент для двоичных чисел.

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

Разрядная сетка при операциях с фиксированной запятой в значительно большей степени, чем при работе с плавающей запятой, влияет на точность представления чисел. Чем больше разрядов в ячейке памяти, тем с большей точностью ( с большим количеством знаков) может быть записано в ней число.  [1]

Разрядная сетка такой машины содержит определенное количество цифровых разрядов и один знаковый разряд. Некоторое число разрядов отводится под целую часть числа, остальные - под дробную. На рис. 36 представлена разрядная сетка, в которой может быть записано 15 разрядов числа, из них 7 разрядов целых, а 8 - дробных.  [3]

Разрядная сетка ЭВМ и форма представления числовой информации однозначно определяют диапазон представляемых в ЭВМ чисел и как следствие точность получаемых результатов.  [5]

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

Разрядная сетка ЭВМ и форма представления числовой информации однозначно определяют диапазон представляемых в ЭВМ чисел и как следствие точность получаемых результатов.  [8]

Если разрядная сетка ЭВМ не позволяет хранить обе координаты в одной ячейке, то все усложняется. Координаты х и у должны передаваться в дисплей отдельными командами, и необходимо иметь третью команду для подсвечивания точки.  [9]

Переполнение разрядной сетки той части сумматора, которая отведена для оперирования мантиссами, не мешает получению искомой суммы или разности. Переполнение разрядной сетки в целом после сложения или вычитания может произойти только при увеличении порядка п2 на 1 и заключается в переполнении той части разрядной сетки, которая отведена под порядок.  [10]

Переполнение разрядной сетки при сложении s модифицированных машинных кодах обнаруживается способом сравнения знаковых разрядов полученной суммы.  [11]

Переполнение разрядной сетки возможно при сложении операндов с одинаковыми знаками. Оно может быть определено по наличию переноса из старшей тетрады. При выполнении операции вычитания меняется знак второго операнда, после чего действия над десятичными числами производятся так же, как и при сложении.  [12]

Переполнение разрядной сетки может наступить только при сложении чисел одинакового знака.  [13]

Переполнение разрядной сетки той части сумматора, которая отведена для оперирования мантиссами, не мешает получению искомой суммы или разности. Переполнение разрядной сетки в целом после сложения или вычитания может произойти только при увеличении порядка я2 на 1 и заключается в переполнении той части разрядной сетки, которая отведена под порядок.  [14]

Длина разрядной сетки - термин, используемый для определения длины числа. В разных системах счисления длина разрядной сетки при записи одного и того же числа неодинаковая. Из примера видно, что одно и то же число, записанное в разных системах счисления, имеет разную длину разрядной сетки.  [15]

Читайте также: