Чему равна длина машинного слова в байтах с процессором разрядностью 32
Машинное слово — машиннозависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров процессора и/или разрядности шины данных (обычно некоторая степень двойки). На ранних компьютерах размер слова совпадал также с минимальным размером адресуемой информации (разрядностью данных, расположенных по одному адресу); на современных компьютерах минимальным адресуемым блоком информации обычно является байт, а слово состоит из нескольких байтов. Машинное слово определяет следующие характеристики аппаратной платформы:
- разрядность данных, обрабатываемых процессором;
- разрядность адресуемых данных (разрядность шины данных);
- максимальное значение беззнакового целого типа, напрямую поддерживаемого процессором: если результат арифметической операции превосходит это значение, то происходит переполнение;
- максимальный объём оперативной памяти, напрямую адресуемой процессором.
2 ответа 2
Думаю, вся путаница возникла из-за того, что когда то разработчики Интела (я так думаю) назвали два байта - словом (word) - тогда 16 битные процессоры были прорывом. Соответственно, 4 байта - двойным словом. (DWORD, double word). Это сохранилось и в многих языках программирования (в том числе в с/с++). Почему два байта - слово? да видимо от того, что байт это как буква. А две буквы - это уже слово. (Хотя сейчас прибегут филологи и скажут, что это скорее всего слог, чем слово). В википедии есть хорошая фраза "* Для 32-битных процессоров x86: исторически машинным словом считается 16 бит, реально — 32 бита."
А вот словосочетание "двойное машинное слово" я никогда не слышал. Даже гугл мало находит статей с таким сочетанием. А вот "двойное слово" или "машинное слово" - это нормально.
То есть как я понимаю если процессор 32-битный он может за один такт принять и обработать с оперативной памяти 32 бита информации
не все так просто. Далеко не факт, что он может даже принять 32 бита. Современные процессоры сложные, имеют кеш. Имеют сложные комманды, которые за один раз (не так, а именно раз) могут обработать до 16 байт памяти (всякие mmx и sse).
Обычно, машинным словом называют "разрядность процессора", так как разрядность обычно показывает оптимальный размер данных внутри процессора (регистры 32битного процессора 32 битные и с 32битными данными в основном все команды и работают). В некоторых процессорах слово было 60 бит:)
В любом случае рекомендую всегда всматриваться в контекст. Если о "слове" говорит программист на С/С++ - это 16 бит, если программист на ассемблере под 32 битные ARM процессоры - то скорее всего слово - это 32 бита.
Разбираясь в устройстве памяти, наткнулся на один момент касательно разрядности системы, насколько я понял в 32-разрядных системах под переменную, например, типа int отводится 32 бита, в результате выделяется 4 ячейки памяти под переменную (по 8 бит каждая), где частями хранится двоичный код значения переменной, переменная типа long int нуждается в 8ми байтах памяти, двоичный код такой переменной должен состоять из 64х бит, правильно ли я понимаю, что под разрядностью системы подразумевается кол-во бит отводящихся на переменную если так, то как long int помещается в 32- разрядных системах? И последний вопрос, почему 32-разрядная система не может использовать оперативную память больше 4х гигабайт ?
Вообще-то разрядность относится к размеру указателя. И как ни крути, 32 разрядами адрес более 4 Гб не получишь.
Я не специалист в этом вопросе, но могу предположить, что под long в 32 битной системе выделяется так же 64 бит, но только на 32х битных системах она считывается в 2 шага по 32 бита
Глава 2 Ввод данных. Типы, или форматы, данных
Глава 2 Ввод данных. Типы, или форматы, данных Работа с документами Excel сопряжена с вводом и обработкой различных данных, то есть ин формации, которая может быть текстовой, числовой, финансовой, статистической и т. д. МУЛЬТИМЕДИЙНЫЙ КУРС Методы ввода и обработки данных
Типы данных
Типы данных Многие языки программирования при объявлении переменной требуют указывать, какой тип данных будет ей присваиваться. Например, в языке Java кодint i = 15;объявит переменную целого типа int с именем i и присвоит ей значение 15. В этом случае тип данных ставится в
20.10.3 Типы данных MIB
20.10.3 Типы данных MIB Причиной широкого распространения SNMP стало то, что проектировщики придерживались правила "Будь проще!"? Все данные MIB состоят из простых скалярных переменных, хотя отдельные части MIB могут быть логически организованы в таблицы.? Только небольшое число
Размер машинного слова на различных архитектурах
На ранних компьютерах слово было минимально адресуемой ячейкой памяти; сейчас минимально адресуемой ячейкой памяти является байт, а слово состоит из нескольких байтов. Это приводит к неоднозначному толкованию размера слова. Например, на процессорах 80386 и их потомках «словом» традиционно называют 16 бит (2 байта), хотя эти процессоры могут одновременно обрабатывать и более крупные блоки данных.
Слова длиной битов принимают численные (беззнаковые) значения от 0 до включительно.
Год | Архитектура | Размер слова (w), битов | Размер целого | Размер чисел с плавающей запятой | Размер инструкции |
---|---|---|---|---|---|
1952 | IBM 701 | 36 | ½w, w | — | ½w |
1954 | IBM 704 | 36 | w | w | w |
1960 | PDP-1 | 18 | w | — | w |
1960 | CDC 1604 | 48 | w | w | ½w |
1964 | CDC 6600 | 60 | w | w | ¼w, ½w, w |
1965 | IBM 360 | 32 | ½w, w, 1d … 31d | w, 2w | ½w, w, 1½w |
1965 | PDP-8 | 12 | w | — | w |
1968 | БЭСМ-6 | 48 | w | w, 2w | ½w |
1970 | IBM 370 | 32 | ½w, w, 1d … 31d | w, 2w, 4w | ½w, w, 1½w |
1970 | PDP-11 | 16 | ½w, w | 2w, 4w | w, 2w, 3w |
1971 | Intel 4004 | 4 | w, d | — | 2w, 4w |
1972 | Intel 8008 | 8 | w, 2d | — | w, 2w, 3w |
1974 | Intel 8080 | 8 | w, 2w, 2d | — | w, 2w, 3w |
1975 | Cray-1 | 64 | 24 b, w | w | ¼w, ½w |
1975 | MOS Tech. 6501 MOS Tech. 6502 | 8 | w, 2d | — | w, 2w, 3w |
1976 | Zilog Z80 | 8 | w, 2w, 2d | — | w, 2w, 3w, 4w |
1978 (1980) | Intel 8086 (w/Intel 8087) | 16 | ½w, w, 2d (w, 2w, 4w) | — (2w, 4w, 5w, 17d) | ½w, w, … 7w |
1978 | VAX-11/780 | 32 | ¼w, ½w, w, 1d, … 31d, 1b, … 32b | w, 2w | ¼w, … 14¼w |
1979 | Motorola 68000 | 32 | ¼w, ½w, w, 2d | — | ½w, w, … 7½w |
1982 (1983) | Motorola 68020 (w/Motorola 68881) | 32 | ¼w, ½w, w, 2d | — (w, 2w, 2½w) | ½w, w, … 7½w |
1985 | ARM1 | 32 | w | — | w |
1985 | MIPS32 | 32 | ¼w, ½w, w | w, 2w | w |
1989 | Intel 80486 | 16 (32)* | ½w, w, 2w, 2d w, 2w, 4w | 2w, 4w, 5w, 17d | ½w, w, … 7w |
1989 | Motorola 68040 | 32 | ¼w, ½w, w, 2d | w, 2w, 2½w | ½w, w, … 7½w |
1991 | MIPS64 | 64 | ¼w, ½w, w | w, 2w | w |
1991 | PowerPC | 32 | ¼w, ½w, w | w, 2w | w |
1992 | SPARC v8 | 32 | ¼w, ½w, w | w, 2w | w |
1994 | SPARC v9 | 64 | ¼w, ½w, w | w, 2w | w |
2000 | Itanium (IA-64) | 64 | 8 b, ¼w, ½w, w | ½w, w | 41 b |
2002 | XScale | 32 | w | w, 2w | ½w, w |
2004 | Athlon 64 | 64 | ? | ? | ? |
Обозначения: b — бит (двоичная цифра), d — децит (десятичная цифра), w — размер машинного слова, n — переменное значение.
* Для 32-битных процессоров x86: исторически машинным словом считается 16 бит, реально — 32 бита.
Есть понятие "машинного слово", я читала об этом, но везде пишут по разному, на сколько я понимаю одно машинное слово равно 2 байта, а двойное машинное слово 4 байта, но откуда оно берётся, почему 2 байта а не один? То есть как я понимаю если процессор 32-битный он может за один такт принять и обработать с оперативной памяти 32 бита информации, а это 4 байта значит у него должно быть одно слово 4 байта ну а 64-х битный в 2 раза больше и его слово будет больше?
Типы данных
Типы данных Приведенные в этой главе таблицы взяты непосредственно из оперативной справочной системы и представляют единую модель данных Windows (Windows Uniform Data Model). Определения типов можно найти в заголовочном файле BASETSD.H, входящем в состав интегрированной среды разработки
Типы данных
Типы данных Один из этапов проектирования базы данных заключается в объявлении типа каждого поля, что позволяет процессору базы данных эффективно сохранять и извлекать данные. В SQL Server предусмотрено использование 21 типа данных, которые перечислены в табл. 1.1.Таблица 1.1.
Размер головного мозга и размер социального окружения
Размер головного мозга и размер социального окружения Дискуссии по поводу взаимосвязи между размером головного мозга какого-либо организма и размером группы, к которой этот организм принадлежит, ведутся нейробиологами уже давно. При этом взаимосвязь с социальной
2 ответа 2
Под разрядностью системы обычно понимается разрядность памяти (разрядность адреса памяти) плюс также разрядность АЛУ (арифметическо-логическое устройство).
По поводу АЛУ. 32-битное АЛУ означает что максимальный размер машинного слова АЛУ равен 32 битам, т.е. это максимальное целое число с которым возможны целочисленные операции такие как сложение, вычитание, умножение (результат умножения обычно доступен в два раза больший разрядности АЛУ) и деление (делимое обычно допускается в два раза большей разрядности чем АЛУ). У 64-битного АЛУ разрядность машинного слова 64 бита, т.е. процессор оперирует максимум 64 битными целыми числами.
На самом деле в 32-битной системе можно получить доступ к более чем 4Гб памяти, но только с помощью специальных дополнительных обращений к системным вызовам оперционной системы (Доступ к более чем 4Гб в 32-битной системе). Стандартными С/С++ методами получить сплошной доступ сразу ко всей памяти больше 4Гб нельзя, т.к. в С/С++ указатели 32-битные для 32-битных систем. Чтобы получить доступ к расширенной памяти нужно будет использовать сочетание двух указателей - указатель на отдельный участок в 4Гб плюс указатель внутри этого участка, и этот доступ требует ОС вызовов.
Изучаю архитектуру компьютера по книгам Танненбаума и Харрис.
И все равно не понимаю многих вроде бы простых вещей. Вопросов много, но почти все они так или иначе связаны с машинным словом. Это самая непонятная для меня тема.
Хочу оговориться, что я понимаю, что между разрядностью процессора, разрядностью регистров, размером адресуемой памяти и быстродействием компьютера существует прямая связь. Я не понимаю почему так.
-
Как рязрядность процессора влияет на его быстродействие. Вроде как 64-разрядные быстрее чем 32-разрядные. Но почему? Не понимаю. Приведу пример: Система команд для процессоров MIPS-32. Там ведь сама архитектура команд такая, что все команды убираются в 32 бита. То есть, если сделать 64 бита, старшие 32 бита придется просто заполнить нулями. И что, процессор станет от этого быстрее?
разрядность процессора (разрядность его машинного слова). Машинное слово — машинно-зависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров.
Почему машинное слово обязательно должно быть равно разрядности регистров? Почему мы не можем читать данные по 64 бита за раз имея 16-разрядные регистры, например?
Теперь про память. Снова из Википедии:
64-битный регистр способен хранить в себе одно из 264 = 18 446 744 073 709 551 616 значений. Процессор с 64-битной адресацией памяти может напрямую обращаться к 16 ЭБ памяти.
Я понимаю что количество памяти зависит от адреса количества бит в адресе. Но опять же, как это связано с регистрами? Я вижу только одну связь: если мы собираемся хранить адреса в регистрах, то регистры должны иметь ту же разрядность что и адреса. Но разве обязательно хранить адреса в регистрах?
И вот тут вопрос скорее исторический, но так же очень важный для меня. Я всегда считал что 64-разрядный процессор появился недавно и это преподносилось как большой прорыв. А на Википедии вот что написано:
Требования к точности научных вычислений возросли, и в 1974 году появилась первая машина с 64-битным словом — суперкомпьютер Cray-1
Честно говоря, так глубоко не залезал, но по пятому - архитектура предполагает не только саму разрядность процессора, но и кучу сопутствующей инфраструктуры (например, те же SSE или произвольный порядок выполнения инструкций), которые играют немаловажную роль в быстродействии процессора.
5.2.4. Типы данных
5.2.4. Типы данных Мы можем вводить в ячейки следующие данные: текст, числа, даты, также приложение Numbers предоставляет возможность добавлять флажки, ползунки и другие элементы управления. Аналогично MS Excel для выравнивания чисел, дат и текстовых данных в Numbers существуют
14.5.1 Типы данных
14.5.1 Типы данных Файл может содержать текст ASCII, EBCDIC или двоичный образ данных (существует еще тип, называемый локальным или логическим байтом и применяемый для компьютеров с размером байта в 11 бит). Текстовый файл может содержать обычный текст или текст, форматированный
3 ответа 3
Основная работа процессора заключается не в передаче информации, а в ее преобразовании. Регистр - это та же оперативная память, но от которой идет прямая разводка к куче исполняющих устройств, которые производят арифметические и другие действия с данными. Этих линий делается очень много. На каждый разряд регистра будет свой и большой набор транзисторов для выполнения конкретных операций. Отсюда и сложность увеличения количества разрядов. При росте размерности регистра в 2 раза как минимум удваивается и объем всех исполняющих устройств. растет кристалл, растет тепловыделение.
Посмотрите на систему команд, любые преобразования данных требуют участия как минимум одного регистра. А часть операций происходит исключительно в регистрах. В x86 архитектуре можно добавить к регистру память. Но например нельзя произвести сдвиг или умножение ячейки памяти. нельзя сложить значения двух ячеек памяти не забрав предварительно одну из них в регистр. потому что исполнительный механизм данной операции имеет прямую разводку только с регистром.
В: Почему мы не можем читать данные по 64 бита за раз имея 16-разрядные регистры
Можем, но куда читать и зачем ? Вообще современные процессоры так и делают, заполняют внутренний кеш и оперируют при этом разрядностью шины, регистры тут не участвуют. Прочитали мы 64 бита в кеш, а теперь нам надо их умножить на 3, например. А регистр у нас 16 битный, как умножать ? Правильно, частями, применяя кучу дополнительных преобразований и тратя на это драгоценные такты. Поэтому размерность шины передачи вторична. Главное - это разрядность регистра. И это назвали машинным словом.
В: Но разве обязательно хранить адреса в регистрах?
Да, обязательно. Процессору как то надо сказать - возьми вот там данные. А там это где ? В памяти ? А как тогда будет выглядеть инструкция - возьми адрес, находящийся по адресу, вон по тому адресу лежащему в инструкции . А если нам надо работать подряд с блоком данных (мы в цикле обрабатываем массив) и этот адрес надо увеличивать (т.е. выполнять сложение, которое мы можем произвести только в регистре)
Кстати, разрядность команды и разрядность процессора разные вещи. В MIPS упаковали все команды в 32 бита. А x86 платформа с незапамятных времен была с переменной разрядностью операций. от коротких однобайтных, до длиннющих монстров с кучей префиксов. Разрядность процессора = разрядность регистра = максимальный размер обрабатываемой одной инструкцией информации (в обычных командах, из которых состоит основной код, всякие SSE не берем).
Быстродействие - кто сказал, что разрядность играет ключевую роль. Да, разрядность влияет. Бум на 64 битные процессоры и ОС отличный пример маркетинга. 64 битный код часто оказывается медленнее 32 битного. Если программе не надо адресовать более 4 Гб памяти, а ее код хранит 64 битные адреса - то размер программы в 2 раза больше. Больше размер - дольше читать в кеш. Требуется больше памяти. Начинается гонка за гигабайтами оперативки . Сейчас даже пошел обратный процесс. во всю развивается x32 ABI - работа 32 битного кода в 64 битном режиме.
Но давайте возьмем RSA-шифрование, которое используется в том же повсеместном SSL. Для него необходимы сложные расчеты с очень большими числами. Предположим, что у нас нет специализированных инструкций процессора для него. Разумеется если процессор оперирует 64 битными регистрами он выполнит расчет в 2 раза быстрее, просто потому, что за один такт он способен обработать в 2 раза больше информации. Да, на расчетных задачах с большими числами выигрыш от увеличения разрядности сложно переоценить.
В: 64-разрядная ОС работает на 64-разрядном процессоре, 32-разрядная - на 32-разрядном.
Нет, 64 битная ОС состоит из 64 битного кода, способного адресовать память 64 битными адресами. Конечно она может это делать только на 64 битном процессоре. Появление ОС конечно было неизбежно. Хотя и тут маркетинг сыграл значительную роль. 90% разбирающего в компах народа считают, что для адресации свыше 4 Гб оперативной памяти на платформе intel нужна 64 Бит ОС. Да, в Windows было насильно введено такое ограничение. Процессоры Intel в 32 битном режиме PAE адресуют до 64 Гб оперативки, при этом правда один процесс ограничен 4 Гб. 32 Бит linux отлично себя чувствует с такими объемами.
По поводу истории и сложности построения 128 битных регистров . вопрос только в цене. Да, на каких то системах не массового рынка это сделано давно, на массовом рынке было не нужно, вот и не появлялось. И тогда оно стоило баснословно, ибо как мы говорили в начале - каждый бит регистра - это куча исполняющих устройств, а при тех технологиях производства разместить на кристалле столько транзисторов было, скажем так, затруднительно. Полноценные 128 битные процессоры попросту не нужны, особенно для массового рынка, адресовать больше 64 ЭБ памяти, где бы ее еще найти. Вообще сейчас во всех процессорах intel есть 16 регистров SSE размером 128 бит, это не регистры общего назначения, они для расчетов. А на современных Xeon, предназначенных для серьезных вычислений, 32 регистра ZMM по 512 бит (см. AVX).
Машинное слово (word) — это количество данных, которые процессор может обработать за одну операцию. Здесь можно применить аналогию документа, состоящего из символов (character, 8 бит) и страниц (много слов). Слово— это некоторое количество битов, как правило 16, 32 или 64. Когда говорят о "n-битовой" машине, то чаще всего имеют в виду размер машинного слова. Например, когда говорят, что процессор Intel Pentium — это 32-разрядный процессор, то обычно имеют в виду размер машинного слова, равный 32 бит, или 4 байт.
Размер процессорных регистров общего назначения равен размеру машинного слова этого процессора. Обычно разрядность остальных компонентов этой же аппаратной платформы в точности равна размеру машинного слова. Кроме того, по крайней мере для аппаратных платформ, которые поддерживаются ОС Linux, размер адресного пространства соответствует размеру машинного слова[92]. Следовательно, размер указателя равен размеру машинного слова. В дополнение к этому, размер типа long языка С также равен размеру машинного слова. Например, для аппаратной платформы Alpha размер машинного слова равен 64 бит. Следовательно, регистры, указатели и тип long имеют размер 64 бит. Тип int для этой платформы имеет размер 32 бит. Машины платформы Alpha могут обработать 64 бит — одно слово с помощью одной операции.
Слова, двойные слова и путаница
Для некоторых операционных систем и процессоров стандартную порцию данных не называют машинным словом. Вместо этого, словом называется некоторая фиксированная порция данных, название которой выбрано случайным образом или имеет исторические корни. Например, в некоторых системах данные могут разбиваться на байты (byte — 8 бит), слова (word — 16 бит), двойные слова (double word — 32 бит) и четверные слова (quad word — 64 бит), несмотря на то что на самом деле система является 32-разрядной. В этой книге и вообще в контексте операционной системы Linux под машинным словом понимают стандартную порцию данных процессора, как обсуждалось ранее.
Для каждой аппаратной платформы, поддерживаемой операционной системой Linux, в файле определяется константа BITTS_PER_LONG, которая равна размеру типа long языка С и совпадает с размером машинного слова системы. Полный список всех поддерживаемых аппаратных платформ и их размеры машинного слова приведены в табл. 19.1.
Таблица 19.1. Поддерживаемые аппаратные платформы
Аппаратная платформа Описание Размер машинного слова alpha Digital Alpha 64 бит arm ARM и StrongARM 32 бит cris CRIS 32 бит h8300 H8/300 32 бит I386 Intel x86 32 бит ia64 IA-64 64 бит m68k Motorola 68k 32 бит m86knommu m68k без устройства MMU 32 бит mips MIPS 32 бит mips64 64-разрядная MIPS 64 бит parisc HP PA-RISC 32 бит, или 64 бит ppc PowerPC 32 бит ppc64 POWER 64 бит s390 IBM S/390 32 бит, или 64 бит sh Hitachi SH 32 бит sparс SPARC 32 бит sparc64 UltraSPARC 64 бит um Usermode Linux 32 бит, или 64 бит v850 v850 32 бит x86_64 X86-64 64 бит
Стандарт языка С явно указывает, что размер памяти, которую занимают переменные стандартных типов данных, зависит от аппаратной реализации[93], при этом также определяется минимально возможный размер типа. Неопределенность размеров стандартных типов языка С для различных аппаратных платформ имеет свои положительные и отрицательные стороны. К плюсам можно отнести то, что для стандартных типов языка С можно пользоваться преимуществами, связанными с размером машинного слова, а также отсутствие необходимости явного указания размера. Для ОС Linux размер типа long гарантированно равен размеру машинного слова. Это не совсем соответствует стандарту ANSI С, однако является стандартной практикой в ОС Linux. Как недостаток можно отметить, что при разработке кода нельзя рассчитывать на то, что данные определенного типа занимают в памяти определенный размер. Более того, нельзя гарантировать, что переменные типа int занимают столько же памяти, сколько и переменные типа long[94].
Ситуация еще более запутывается тем, что одни и те же типы данных в пространстве пользователя и в пространстве ядра не обязательно должны соответствовать друг другу. Аппаратная платформа sparc64 предоставляет 32-разрядное пространство пользователя, а поэтому указатели, типы int и long имеют размер 32 бит. Однако в пространстве ядра для аппаратной платформы размер типа int равен 32 бит, а размер указателей и типа long равен 64 бит. Тем не менее такая ситуация не является обычной.
Всегда необходимо помнить о следующем.
• Как и требует стандарт языка С, размер типа char всегда равен 8 бит (1 байт),
• Нет никакой гарантии, что размер типа int для всех поддерживаемых аппаратных платформ будет равен 32 бит, хотя сейчас для всех платформ он равен именно этому числу.
• То же касается и типа short, который для всех поддерживаемых аппаратных платформ сейчас равен 16 бит.
• Никогда нельзя надеяться, что тип long или указатель имеет некоторый заданный размер. Этот размер для поддерживаемых аппаратных платформ может быть равен 32, или 64 бит.
• Так как размер типа long разный для различных аппаратных платформ, никогда нельзя предполагать, что sizeof(int) == sizeof(long).
• Точно так же нельзя предполагать, что размер типа int и размер указателя совпадают.
Ключевые слова, используемые для спецификации типа данных
Ключевые слова, используемые для спецификации типа данных Ключевые слова для спецификации типов данных в операторах DDL представлены здесь в качестве краткой справки. Точный синтаксис см. в соответствующей главе, связанной с типами данных этой части книги, а также в
12.2. Типы баз данных
12.2. Типы баз данных Группу связанных между собой элементов данных называют обычно записью. Известны три основных типа организации данных и связей между ними: иерархический (в виде дерева), сетевой и реляционный.Иерархическая БДВ иерархической БД существует
Типы данных
Типы данных В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный
Слова, слова, слова… Автор: Евгений Козловский.
Типы данных
Типы данных Несмотря на то, что типы данных подробно описаны в документации (см. [1, гл. 4]), необходимо рассмотреть ряд понятий, которые будут часто использоваться в последующих главах книги. Помимо изложения сведений общего характера будут рассмотрены также примеры
Читайте также: