Машинные слова и байты

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

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

В компьютерах общего применения, используемых для решения научно-технических и коммерческих задач, самым значимым устройством является процессор, длина слова которого предопределяет большинство характеристик компьютера: быстродействие и производительность, стоимость процессора и т.д. На сегодняшний день длина слова в персональных компьютерах составляет 32 бита, а большинство серверов обрабатывают 64-битные слова. При этом система команд процессора позволяет выполнять операции над словами удвоенной длины: 64-битными словами в персональных компьютерах и 80-битными словами в серверах. При этом сверхоперативная память и в персональных компьютерах, и в серверах имеет длину слов, совпадающую с длиной слова процессора: 32 разряда для персональных компьютеров и 64 разряда для серверов. Однако длина слова, хранимого в ячейке оперативной памяти, как правило увеличивается как минимум в два раза, чтобы с использованием сверхоперативной памяти сократить разрыв между высоким быстродействием процессора и низким быстродействием оперативной памяти (см. рис. 1.8). Таким образом, длина слова оперативной памяти может составлять 64 разряда в персональных компьютерах и как минимум 128 разрядов в серверах. При этом каждое обращение к оперативной памяти сопровождается пересылкой в сверхоперативную память по крайней мере слова двойной длины, в результате чего увеличивается вероятность того, что последующее обращение процессора к сверхоперативной памяти будет обслужено без обращения к оперативной памяти.

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

 

31 0

 
 


,

 
 


Адрес слова Адрес

байта

где b31b30b1b0 – 32-разрядный адрес байта, который разделяется на 30-разрядный адрес слова памяти b31b30b3b2 и адрес байта в 32-разрядном слове b1b0 = 00, 01, 10 или 11. Аналогичную структуру имеет адрес, формируемый сервером, однако длина адреса возрастает на несколько разрядов и адрес байта в слове имеет длину три двоичных разряда. Таким образом, персональный компьютер позволяет адресовать 232 = 4 Гбайта памяти, а серверы обеспечивают адресацию значительно большего числа ячеек памяти – от 236 = 64 Тбайта и более.

Естественно, что в ячейках памяти команды программ, числа и логические значения хранятся записанными слева направо – от старших разрядов к младшим. Однако для записи текстовых строк, состоящих из последовательностей байтов, используется два стандарта: запись текстовой строки слева направо, как это принято в большинстве компьютеров IBM и компьютерах Sun Microsystems, и запись строки справа налево, как это принято в компьютерах IBM PC и Intel. В результате этого возникает сложная проблема по передаче программ и данных между компьютерами, работающими с разными способами записи текстовых строк.