Страницы

Поиск по вопросам

среда, 4 декабря 2019 г.

Машинное слово, каков его размер?

#процессор


Есть понятие "машинного слово", я читала об этом, но везде пишут по разному, на сколько
я понимаю одно машинное слово равно 2 байта, а двойное машинное слово 4 байта, но откуда
оно берётся, почему 2 байта а не один? То есть как я понимаю если процессор 32-битный
он может за один такт принять и обработать с оперативной памяти 32 бита информации,
а это 4 байта значит у него должно быть одно слово 4 байта ну а 64-х битный в 2 раза
больше и его слово будет больше?  
    


Ответы

Ответ 1



Думаю, вся путаница возникла из-за того, что когда то разработчики Интела (я так думаю) назвали два байта - словом (word) - тогда 16 битные процессоры были прорывом. Соответственно, 4 байта - двойным словом. (DWORD, double word). Это сохранилось и в многих языках программирования (в том числе в с/с++). Почему два байта - слово? да видимо от того, что байт это как буква. А две буквы - это уже слово. (Хотя сейчас прибегут филологи и скажут, что это скорее всего слог, чем слово). В википедии есть хорошая фраза "* Для 32-битных процессоров x86: исторически машинным словом считается 16 бит, реально — 32 бита." А вот словосочетание "двойное машинное слово" я никогда не слышал. Даже гугл мало находит статей с таким сочетанием. А вот "двойное слово" или "машинное слово" - это нормально. То есть как я понимаю если процессор 32-битный он может за один такт принять и обработать с оперативной памяти 32 бита информации не все так просто. Далеко не факт, что он может даже принять 32 бита. Современные процессоры сложные, имеют кеш. Имеют сложные комманды, которые за один раз (не так, а именно раз) могут обработать до 16 байт памяти (всякие mmx и sse). Обычно, машинным словом называют "разрядность процессора", так как разрядность обычно показывает оптимальный размер данных внутри процессора (регистры 32битного процессора 32 битные и с 32битными данными в основном все команды и работают). В некоторых процессорах слово было 60 бит:) В любом случае рекомендую всегда всматриваться в контекст. Если о "слове" говорит программист на С/С++ - это 16 бит, если программист на ассемблере под 32 битные ARM процессоры - то скорее всего слово - это 32 бита.

Ответ 2



По определению, размер машинного слова равен разрядности регистров процессора и/или разрядности шины данных. Т.е. для процессоров, поддерживающих систему команд x64 - это 8 байт. Но в Windows API, например, повсеместно используется тип WORD как синоним 2-х байт. Я думаю, это пошло из 16-битных версий Windows - после появления 32-битных версий, Microsoft было выгодней использовать неправильное название, чем использовать правильное и получить большие проблемы совместимости при компиляции под Windows. Вобщем, не заморачивайтесь сильно и смотрите на контекст :)

Комментариев нет:

Отправить комментарий