Введение

Базовая единица памяти, обрабатываемая компьютером. В вычислительной технике слово является естественной единицей данных, используемой в конкретной реализации процессора. Слово – это данные фиксированного размера, обрабатываемые как единое целое набором инструкций или аппаратным обеспечением процессора. Количество битов или цифр в слове (размер слова, ширина слова или длина слова) является важной характеристикой конкретной конструкции процессора или компьютерной архитектуры. Размер слова отражается во многих аспектах структуры и функционирования компьютера: большинство регистров процессора обычно имеют размер слова, а наибольший объем данных, который может быть передан в рабочую память и из нее за одну операцию, во многих (но не во всех) архитектурах составляет слово. Максимальный возможный размер адреса, используемый для обозначения местоположения в памяти, обычно соответствует аппаратному слову (здесь «аппаратное слово» означает слово естественного размера процессора, в отличие от других определений). В документации к старым компьютерам с фиксированным размером слова размеры памяти часто указываются в словах, а не в байтах или символах. В документации иногда правильно, иногда с округлением, а иногда и неправильно используются метрические префиксы, например, 65 килослов (кВт) означают 65536 слов, а килослово (кВт) может означать 1024 слова (2¹⁰), а мегаслово (МВт) – 1048576 слов (2²⁰). С стандартизацией 8-битных байтов и байтовой адресацией стало нормой указывать размеры памяти в байтах, килобайтах и мегабайтах, используя степени числа 1024 вместо 1000, хотя иногда используются и двоичные префиксы IEC. Некоторые из самых ранних компьютеров (и некоторые современные) используют двоично-десятичный код вместо двоичного, обычно имея размер слова 10 или 12 десятичных цифр, а некоторые ранние десятичные компьютеры вообще не имеют фиксированной длины слова. Ранние двоичные системы часто использовали длины слов, кратные 6 битам, причем 36-битные слова были особенно распространены на мейнфреймах. Введение ASCII привело к переходу к системам с длиной слов, кратной 8 битам, при этом 16-битные машины были популярны в 1970-х годах, прежде чем появились современные процессоры с 32 или 64 битами. В машине ("Stretch") инструкция с плавающей точкой может обращаться только к словам, в то время как инструкция целочисленной арифметики может указывать длину поля в 64 бита, размер байта в 8 битов и смещение аккумулятора в 127 битов. В байтно-адресуемой машине с инструкциями передачи из памяти в память (storage-to-storage, SS) обычно есть инструкции перемещения для копирования одного или нескольких байтов из одного произвольного местоположения в другое. В байтоориентированной (байтно-адресуемой) машине без SS-инструкций перемещение одного байта из одного произвольного местоположения в другое обычно выполняется так: ЗАГРУЗИТЬ исходный байт; СОХРАНИТЬ результат обратно в целевой байт. К отдельным байтам на словоориентированной машине можно получить доступ двумя способами. Байтами можно манипулировать с помощью комбинации операций сдвига и маскирования в регистрах. Перемещение одного байта из одного произвольного местоположения в другое может потребовать эквивалента следующего: ЗАГРУЗИТЬ слово, содержащее исходный байт; СДВИНУТЬ исходное слово, чтобы выровнять нужный байт в правильной позиции в целевом слове; И исходное слово с маской, чтобы обнулить все биты, кроме нужных; ЗАГРУЗИТЬ слово, содержащее целевой байт; И целевое слово с маской, чтобы обнулить целевой байт; ИЛИ регистры, содержащие исходное и целевое слова, чтобы вставить исходный байт; СОХРАНИТЬ результат обратно в целевое местоположение. В качестве альтернативы многие словоориентированные машины реализуют операции с байтами с помощью инструкций, использующих специальные байтовые указатели в регистрах или памяти. Например, байтовый указатель PDP-10 содержал размер байта в битах (что позволяло обращаться к байтам разного размера), битовую позицию байта в слове и адрес слова, содержащего данные. Инструкции могли автоматически корректировать указатель на следующий байт, например, при операциях загрузки и сохранения.

Силы двух

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

Таблица размеров слов

ключевой: бит: биты, с: символы, д: десятичные цифры, в: размер слова архитектуры, n: переменный размер, вм: знак слова ГодКомпьютерная архитектура Размер слова w Целые размеры Размеры чисел с плавающей точкой Размеры инструкций Единица разрешения адреса Размер символа 1837BabbageАналитическая машина50 dw—Для различных функций использовались пять различных карт, точный размер карт неизвестен. w—1941Zuse Z322 битw8 битw—1942ABC50 битw————1944Harvard Mark I23 dw24 бита——1946(1948){1953}ENIAC(w/Panel #168 бит8 бит2001ARMv6(w/VFP)32 бита8 бит, 1/2w, w—(w, 2w)1/2w, w8 бит8 бит2003x86 6464 бита8 бит, 1/4w, 1/2w, w1/2w, w, 80 бит8 бит, 120 бит8 бит8 бит2013ARMv8 A и ARMv9 A64 бита8 бит, 1/4w, 1/2w, w1/2w, w1/2w8 бит8 бит ГодКомпьютерная архитектура Размер слова w Размеры целых чисел Размеры чисел с плавающей точкой Размеры инструкций Единица разрешения адреса Размер символа ключевой: бит: биты, с: символы, д: десятичные цифры, в: размер слова архитектуры, n: переменный размер, вм: знак слова