1

Например, в случае 32-разрядных процессоров слово имеет 4 байта. Также возможно использовать 5-байтовое слово или другие.В компьютерах используются 32-разрядные или 64-разрядные процессоры, почему не 40-разрядные или другие номера?

+1

32 и 64 являются степенями a 2. 32 = 2^5 64 = 2^6. «Следующий биттут», вероятно, будет 128 (2^7). – BanksySan

+0

да, но зачем это нужно, в глубине есть 1 и 0. – rneha725

+0

Это не обязательно. Но есть несколько причин. Помимо 32 = 100000b и 64 = 1000000b, являющихся «хорошими» числами в двоичном выражении, полномочия 2 имеют много делителей (то есть, разумеется, снова степени 2). Идя еще глубже, мы приводим подробные сведения о дизайне https://en.wikipedia.org/wiki/Arithmetic_logic_unit и иерархиях памяти/кеша, которые, вероятно, выходят за рамки ответа здесь (хотя, тем не менее, можно * попробовать * дать хороший ответ - я не посмею ...) – Marco13

ответ

1

Исторически сложилось, что было несколько компьютеров с размерами слов, не равными двум, как в этом Table of word sizes. Однако, в конце концов, люди обнаружили, что адресная арифметика намного проще реализовать, когда размер адреса равен двум.

Рассмотрите операцию типа «прыгать вперед 14 словами». Если размер слова равен двум, скажем, 64, то схема должна сдвинуть число 14 на log(64)/log(2)=6 и добавить к ip, и это можно легко сделать за 1 цикл. Если, однако, размер слова равен 36, как в IBM 701, тогда число 14 должно быть умножено на 36, и это займет больше циклов. Учитывая, что умножение целого числа на размер слова является очень распространенной операцией, замедление будет значительным.

+1

Я пробовал, но не понятно , Предположим, у меня есть адреса в 4-битном, а слово имеет 4-битную длину. Я хочу перепрыгнуть 2 слова, '2 << log (4)/log (2) = 8' эквивалентно, что это' 1000', которые будут добавлены в 'ip'. Мои адреса таковы, что: '0000 0001 0010 0011 0100 ...' прыгая два слова из '0000' должен приземлиться на' 0011', но по формуле это '1000'? – rneha725

+0

@ rneha725, вы правы, я думал о битах вместо байтов. Если ваша адресация находится в 8-битных байтах, как сегодня на большинстве компьютеров, вам нужно разделить размер слова на размер байта. – Michael

 Смежные вопросы

  • Нет связанных вопросов^_^