Word (компьютерная архитектура) - Word (computer architecture)

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

Размер слова отражается во многих аспектах структуры и работы компьютера; Большинство регистров в процессоре обычно имеют размер слова, и самый большой фрагмент данных, который может быть передан в рабочую память и из нее за одну операцию, является словом во многих (не во всех) архитектурах. Максимально возможный размер адреса , используемый для обозначения места в памяти, обычно представляет собой аппаратное слово (здесь «аппаратное слово» означает полноразмерное естественное слово процессора, в отличие от любого другого используемого определения).

Документация для компьютеров с фиксированным размером слова. Обычно объем памяти указывается в словах, а не в байтах или символах. Обычно использовались такие термины, как киловорды (KW), означающие 1024 слова (2 · 10 ), и мегаворды (MW), означающие 1 048 576 слов (2 20 ). Благодаря стандартизации 8-битных байтов и байтовой адресации, указание размеров памяти в байтах, килобайтах и ​​мегабайтах стало нормой.

Некоторые из самых ранних компьютеров (а также несколько современных) использовали десятичную систему с двоичным кодом, а не простой двоичный код , обычно имеющий размер слова 10 или 12 десятичных цифр, а некоторые ранние компьютеры с десятичной дробью вообще не имели фиксированной длины слова. Ранние двоичные системы имели тенденцию использовать длину слова, которая была несколько кратна 6-битному, причем 36-битное слово было особенно распространено на мэйнфреймах . Внедрение ASCII привело к переходу к системам с длиной слова, кратной 8-битной, с 16-битными машинами, которые были популярны в 1970-х годах до перехода на современные процессоры с 32 или 64 битами. Конструкции специального назначения, такие как процессоры цифровых сигналов , могут иметь любую длину слова от 4 до 80 бит.

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

Использование слов

В зависимости от того, как устроен компьютер, единицы размера слова могут использоваться для:

Числа с фиксированной точкой
Держатели для фиксированной точки , обычно целочисленные , числовые значения могут быть доступны в одном или нескольких разных размерах, но один из доступных размеров почти всегда будет подходящим. Другие размеры, если таковые имеются, скорее всего, будут кратны или дроби размера слова. Меньшие размеры обычно используются только для эффективного использования памяти; при загрузке в процессор их значения обычно попадают в более крупный держатель размером с слово.
Числа с плавающей запятой
Держатели для числовых значений с плавающей запятой обычно представляют собой либо слово, либо кратное ему слово.
Адреса
Держатели для адресов памяти должны иметь размер, способный выражать необходимый диапазон значений, но не быть чрезмерно большим, поэтому часто используется размер слова, хотя он также может быть кратным или долей размера слова.
Регистры
Регистры процессора разработаны с размером, соответствующим типу данных, которые они хранят, например, целые числа, числа с плавающей запятой или адреса. Многие компьютерные архитектуры используют регистры общего назначения , которые могут хранить данные в нескольких представлениях.
Перенос памяти и процессора
Когда процессор считывает из подсистемы памяти в регистр или записывает значение регистра в память, количество передаваемых данных часто является словом. Исторически такое количество битов, которое может быть передано за один цикл, в некоторых средах также называлось катеной (например, Bull GAMMA 60  [ fr ] ). В простых подсистемах памяти слово передается по шине данных памяти , которая обычно имеет ширину слова или полуслова. В подсистемах памяти, которые используют кеши , передача размером с слово - это передача между процессором и первым уровнем кеша; на более низких уровнях иерархии памяти обычно используются большие передачи (которые кратны размеру слова).
Единица разрешения адреса
В данной архитектуре последовательные значения адреса обозначают последовательные единицы памяти; эта единица - единица разрешения адреса. В большинстве компьютеров единицей измерения является либо символ (например, байт), либо слово. (Несколько компьютеров использовали битовое разрешение.) Если единицей измерения является слово, то можно получить доступ к большему объему памяти, используя адрес заданного размера за счет дополнительной сложности доступа к отдельным символам. С другой стороны, если единица измерения - байт, то можно адресовать отдельные символы (т. Е. Выбирать во время операции с памятью).
инструкции
Машинные инструкции обычно имеют размер слова архитектуры, например, в архитектурах RISC , или кратны размеру "char", который составляет его долю. Это естественный выбор, поскольку инструкции и данные обычно используют одну и ту же подсистему памяти. В гарвардской архитектуре размеры слов инструкций и данных не обязательно должны быть связаны, поскольку инструкции и данные хранятся в разных запоминающих устройствах; например, процессор электронного телефонного коммутатора 1ESS имел 37-битные инструкции и 23-битные слова данных.

Выбор размера слова

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

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

После внедрения дизайна IBM System / 360 , в котором использовались восьмибитные символы и поддерживались строчные буквы, стандартный размер символа (или, точнее, байта ) стал восьмибитным. Размеры слов после этого, естественно, были кратны восьми битам, при этом обычно использовались 16, 32 и 64 бит.

Изменяемая архитектура слов

Ранние конструкции машин включали некоторые, в которых использовалось то, что часто называют переменной длиной слова . В этом типе организации числовой операнд не имеет фиксированной длины, а его конец обнаруживается, когда встречается символ со специальной маркировкой, часто называемой словесной меткой . Такие машины часто использовали десятичные дроби в двоичном коде . К этому классу машин относились IBM 702 , IBM 705 , IBM 7080 , IBM 7010 , UNIVAC 1050 , IBM 1401 и IBM 1620 .

Большинство этих машин работают с одной единицей памяти за раз, и поскольку каждая инструкция или данные имеют длину в несколько единиц, каждая инструкция занимает несколько циклов только для доступа к памяти. Из-за этого эти машины часто довольно медленные. Например, выборка инструкций в IBM 1620 Model I занимает 8 циклов только для чтения 12 цифр инструкции ( Модель II сократила это до 6 циклов или 4 циклов, если инструкции не нужны оба поля адреса). Выполнение инструкции занимало совершенно переменное количество циклов в зависимости от размера операндов.

Пословная и байтовая адресация

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

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

В байт-ориентированной (с байтовой адресацией ) машине перемещение одного байта из одного произвольного места в другое обычно:

  1. ЗАГРУЗИТЬ исходный байт
  2. СОХРАНИТЬ результат обратно в целевой байт

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

  1. ЗАГРУЗИТЬ слово, содержащее исходный байт
  2. СДВИГАЙТЕ исходное слово, чтобы выровнять желаемый байт с правильной позицией в целевом слове
  3. И исходное слово с маской, чтобы обнулить все, кроме желаемых битов
  4. ЗАГРУЗИТЬ слово, содержащее целевой байт
  5. И целевое слово с маской для обнуления целевого байта
  6. ИЛИ регистры, содержащие исходное и целевое слова, чтобы вставить исходный байт
  7. СОХРАНИТЬ результат обратно в целевое местоположение

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

Полномочия двух

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

Размер семьи

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

В середине 1970-х годов DEC разработала VAX как 32-разрядный преемник 16-разрядного PDP-11 . Они использовали слово для 16-битной величины, в то время как длинное слово относилось к 32-битной величине. Это отличалось от более ранних машин, где естественная единица адресации памяти называлась словом , а величина, равная половине слова, называлась полусловом . В соответствии с этой схемой квадраслово VAX составляет 64 бита. Они продолжили эту терминологию слова / длинного слова / четверного слова с 64-битной Alpha .

Другим примером является семейство x86 , из которого были выпущены процессоры с тремя разными длинами слов (16-разрядные, позже 32- и 64-разрядные), а слово продолжает обозначать 16-разрядное количество. Поскольку программное обеспечение обычно переносится с одного слова на другое, некоторые API и документация определяют или ссылаются на более старую (и, следовательно, более короткую) длину слова, чем полная длина слова на ЦП, для которого может быть скомпилировано программное обеспечение. Кроме того, аналогично тому, как байты используются для небольших чисел во многих программах, более короткое слово (16 или 32 бита) может использоваться в контекстах, где диапазон более широкого слова не требуется (особенно там, где это может сэкономить значительное пространство стека или кеш пространство памяти). Например, Microsoft Windows API поддерживает определение языка программирования WORD как 16-битное, несмотря на то, что API может использоваться на 32- или 64-битном процессоре x86, где стандартный размер слова будет 32 или 64 бит, соответственно. . Структуры данных, содержащие слова разного размера, называют их СЛОВО (16 бит / 2 байта), DWORD (32 бита / 4 байта) и QWORD (64 бит / 8 байтов) соответственно. Аналогичное явление развилось в ассемблере Intel x86 - из-за поддержки различных размеров (и обратной совместимости) в наборе команд некоторые мнемоники команд содержат идентификаторы «d» или «q», обозначающие «двойной», «четырехугольный». или "double-quad-", которые относятся к исходному 16-битному размеру слова архитектуры.

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

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

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

ключ: бит: биты , d: десятичные цифры , w : размер слова архитектуры, n : переменный размер
Год Компьютерная
архитектура
Размер слова w Целочисленные
размеры
С плавающей точкой
размеры

Размеры инструкции
Единица
разрешения адреса
Размер символа
1837 г. Аналитическая машина Бэббиджа
50 дн. ш - Для разных функций использовалось пять разных карт, точный размер карт неизвестен. ш -
1941 г. Цузе Z3 22 бит - ш 8 бит ш -
1942 г. ABC 50 бит ш - - - -
1944 г. Гарвард Марк I 23 дн. ш - 24 бит - -
1946
(1948)
{1953}
ENIAC
(с панелью № 16)
{с панелью № 26}
10 дн. ш , 2 ш
(ш)
{ш}
- -
(2 д, 4 д, 6 д, 8 д)
{2 д, 4 д, 6 д, 8 д}
-
-
{w}
-
1948 г. Манчестер Бэби 32 бит ш - ш ш -
1951 г. UNIVAC I 12 дн. ш - 12 нед ш 1 день
1952 г. Машина IAS 40 бит ш - 12 нед ш 5 бит
1952 г. Быстрая универсальная цифровая вычислительная машина М-2 34 бит ш? ш 34 бита = 4-битный код операции плюс 3 × 10-битный адрес 10 бит -
1952 г. IBM 701 36 бит 12 w , w - 12 нед 12 w , w 6 бит
1952 г. UNIVAC 60 н д 1 дн, ... 10 дн - - - 2 д, 3 д
1952 г. ARRA I 30 бит ш - ш ш 5 бит
1953 г. IBM 702 н д 0 дн, ... 511 дн - 5 дней d 1 день
1953 г. UNIVAC 120 н д 1 дн, ... 10 дн - - - 2 д, 3 д
1953 г. ARRA II 30 бит ш 2 нед 12 нед ш 5 бит
1954
(1955)
IBM 650
IBM 653 )
10 дн. ш -
(ж)
ш ш 2 дн.
1954 г. IBM 704 36 бит ш ш ш ш 6 бит
1954 г. IBM 705 н д 0 дн, ... 255 дн - 5 дней d 1 день
1954 г. IBM NORC 16 дней ш Вт , 2 Вт ш ш -
1956 г. IBM 305 н д 1 дн, ... 100 дн - 10 дн. d 1 день
1956 г. ARMAC 34 бит ш ш 12 нед ш 5 бит, 6 бит
1957 г. Autonetics Recomp I 40 бит w , 79 бит, 8 d, 15 d - 12 нед 12 w , w 5 бит
1958 г. UNIVAC II 12 дн. ш - 12 нед ш 1 день
1958 г. МУДРЕЦ 32 бит 12 нед - ш ш 6 бит
1958 г. Autonetics Recomp II 40 бит w , 79 бит, 8 d, 15 d 2 нед 12 нед 12 w , w 5 бит
1958 г. Сетунь трит (~ 9,5 бит) до 6  трите до 3-х попыток 4 трита ?
1958 г. Electrologica X1 27 бит ш 2 нед ш ш 5 бит, 6 бит
1959 г. IBM 1401 н д 1 д, ... - 1 д, 2 д, 4 д, 5 д, 7 д, 8 д d 1 день
1959
(подлежит уточнению)
IBM 1620 н д 2 д, ... -
(4 д, ... 102 д)
12 дн. d 2 дн.
1960 г. LARC 12 дн. Вт , 2 Вт Вт , 2 Вт ш ш 2 дн.
1960 г. CDC 1604 48 бит ш ш 12 нед ш 6 бит
1960 г. IBM 1410 н д 1 д, ... - 1 д, 2 д, 6 д, 7 д, 11 д, 12 д d 1 день
1960 г. IBM 7070 10 дн. ш ш ш ш , д 2 дн.
1960 г. PDP-1 18 бит ш - ш ш 6 бит
1960 г. Эллиот 803 39 бит
1961 г. IBM 7030
(растягивающийся)
64 бит 1 бит, ... 64 бит,
1 день, ... 16 дней
ш 12 w , w б, 12 ш , ш 1 бит, ... 8 бит
1961 г. IBM 7080 н д 0 дн, ... 255 дн - 5 дней d 1 день
1962 г. GE-6xx 36 бит Вт , 2 Вт w , 2 w , 80 бит ш ш 6 бит, 9 бит
1962 г. UNIVAC III 25 бит ш , 2 ш , 3 ш , 4 ш , 6 пр, 12 д - ш ш 6 бит
1962 г. Компьютер управления Autonetics D-17B
Minuteman I
27 бит 11 бит, 24 бит - 24 бит ш -
1962 г. UNIVAC 1107 36 бит 16 w , 13 w , 12 w , w ш ш ш 6 бит
1962 г. IBM 7010 н д 1 д, ... - 1 д, 2 д, 6 д, 7 д, 11 д, 12 д d 1 день
1962 г. IBM 7094 36 бит ш Вт , 2 Вт ш ш 6 бит
1962 г. SDS 9 серии 24 бит ш 2 нед ш ш
1963
(1966)
Компьютер наведения Apollo 15 бит ш - Вт , 2 Вт ш -
1963 г. Цифровой компьютер ракеты-носителя "Сатурн" 26 бит ш - 13 бит ш -
1964/1966 PDP-6 / PDP-10 36 бит ш Вт , 2 Вт ш ш 6 бит, 9 бит (типовая)
1964 г. Титан 48 бит ш ш ш ш ш
1964 г. CDC 6600 60 бит ш ш 14 w , 12 w ш 6 бит
1964 г. Компьютер управления Autonetics D-37C
Minuteman II
27 бит 11 бит, 24 бит - 24 бит ш 4 бит, 5 бит
1965 г. Компьютер наведения Близнецов 39 бит 26 бит - 13 бит 13 бит, 26 -немного
1965 г. IBM 360 32 бит 12 ш , ш ,
1 д, ... 16 д
Вт , 2 Вт 12 w , w , 1 12 w 8 бит 8 бит
1965 г. UNIVAC 1108 36 бит 16 w , 14 w , 13 w , 12 w , w , 2 w Вт , 2 Вт ш ш 6 бит, 9 бит
1965 г. PDP-8 12 бит ш - ш ш 8 бит
1965 г. Electrologica X8 27 бит ш 2 нед ш ш 6 бит, 7 бит
1966 г. SDS Sigma 7 32 бит 12 w , w Вт , 2 Вт ш 8 бит 8 бит
1969 г. Четырехфазные системы AL1 8 бит ш - ? ? ?
1970 г. MP944 20 бит ш - ? ? ?
1970 г. PDP-11 16 бит ш 2 Вт , 4 Вт ш , 2 ш , 3 ш 8 бит 8 бит
1971 г. TMS1802NC 4 бит ш - ? ? -
1971 г. Intel 4004 4 бит ш , д - 2 Вт , 4 Вт ш -
1972 г. Intel 8008 8 бит ш , 2 д - ш , 2 ш , 3 ш ш 8 бит
1972 г. Calcomp 900 9 бит ш - Вт , 2 Вт ш 8 бит
1974 г. Intel 8080 8 бит ш , 2 нед , 2 д - ш , 2 ш , 3 ш ш 8 бит
1975 г. ИЛЛИАК IV 64 бит ш ш , 12 ш ш ш -
1975 г. Motorola 6800 8 бит ш , 2 д - ш , 2 ш , 3 ш ш 8 бит
1975 г. MOS Tech. 6501
MOS Tech. 6502
8 бит ш , 2 д - ш , 2 ш , 3 ш ш 8 бит
1976 г. Крей-1 64 бит 24 бит, w ш 14 w , 12 w ш 8 бит
1976 г. Зилог Z80 8 бит ш , 2 нед , 2 д - ш , 2 ш , 3 ш , 4 ш , 5 ш ш 8 бит
1978
(1980)
16-битный x86 ( Intel 8086 )
(с плавающей запятой: Intel 8087 )
16 бит 12 нед , ш , 2 д -
(2 сбн , 4 сбн , 5 сбн , 17 сб)
12 w , w , ... 7 w 8 бит 8 бит
1978 г. VAX 32 бит 14 w , 12 w , w , 1 d, ... 31 d, 1 бит, ... 32 бит Вт , 2 Вт 14 w , ... 14 14 w 8 бит 8 бит
1979
(1984)
Motorola серии 68000
(с плавающей точкой)
32 бит 14 w , 12 w , w , 2 d -
( ш , 2 ш , 2 12 ш )
12 w , w , ... 7 12 w 8 бит 8 бит
1985 г. IA-32 ( Intel 80386 ) (с плавающей запятой) 32 бит 14 w , 12 w , w -
( ш , 2 ш , 80 бит)
8 бит, ... 120 бит
14 w ... 3 34 w
8 бит 8 бит
1985 г. ARMv1 32 бит 14 Вт , Вт - ш 8 бит 8 бит
1985 г. MIPS 32 бит 14 w , 12 w , w Вт , 2 Вт ш 8 бит 8 бит
1991 г. Cray C90 64 бит 32 бит, w ш 14 w , 12 w , 48 бит ш 8 бит
1992 г. Альфа 64 бит 8 бит, 1 / 4 ш , 1 / 2 ш , ш 12 w , w 12 нед 8 бит 8 бит
1992 г. PowerPC 32 бит 14 w , 12 w , w Вт , 2 Вт ш 8 бит 8 бит
1996 г. ARMv4
большим пальцем )
32 бит 14 w , 12 w , w - ш
( 12 ш , ш )
8 бит 8 бит
2000 г. IBM z / Architecture
(с векторной функцией)
64 бит 14 w , 12 w , w
1 d, ... 31 d
12 нед , w , 2 w 14 w , 12 w , 34 w 8 бит 8 бит, UTF-16 , UTF-32
2001 г. IA-64 64 бит 8 бит, 1 / 4 ш , 1 / 2 ш , ш 12 w , w 41 бит 8 бит 8 бит
2001 г. ARMv6
(с VFP)
32 бит 8 бит, 12 w , w -
(ш, 2 нед)
12 w , w 8 бит 8 бит
2003 г. x86-64 64 бит 8 бит, 1 / 4 ш , 1 / 2 ш , ш 12 w , w , 80 бит 8 бит, ... 120 бит 8 бит 8 бит
2013 ARMv8-A и ARMv9-A 64 бит 8 бит, 1 / 4 ш , 1 / 2 ш , ш 12 w , w 12 нед 8 бит 8 бит
Год Компьютерная
архитектура
Размер слова w Целочисленные
размеры
С плавающей точкой
размеры

Размеры инструкции
Единица
разрешения адреса
Размер символа
ключ: бит: биты, d: десятичные цифры, w : размер слова архитектуры, n : переменный размер

Смотрите также

использованная литература