Например, в случае 32-разрядных процессоров слово имеет 4 байта. Также возможно использовать 5-байтовое слово или другие.В компьютерах используются 32-разрядные или 64-разрядные процессоры, почему не 40-разрядные или другие номера?
ответ
Исторически сложилось, что было несколько компьютеров с размерами слов, не равными двум, как в этом Table of word sizes. Однако, в конце концов, люди обнаружили, что адресная арифметика намного проще реализовать, когда размер адреса равен двум.
Рассмотрите операцию типа «прыгать вперед 14 словами». Если размер слова равен двум, скажем, 64, то схема должна сдвинуть число 14 на log(64)/log(2)=6
и добавить к ip
, и это можно легко сделать за 1 цикл. Если, однако, размер слова равен 36, как в IBM 701, тогда число 14 должно быть умножено на 36, и это займет больше циклов. Учитывая, что умножение целого числа на размер слова является очень распространенной операцией, замедление будет значительным.
Я пробовал, но не понятно , Предположим, у меня есть адреса в 4-битном, а слово имеет 4-битную длину. Я хочу перепрыгнуть 2 слова, '2 << log (4)/log (2) = 8' эквивалентно, что это' 1000', которые будут добавлены в 'ip'. Мои адреса таковы, что: '0000 0001 0010 0011 0100 ...' прыгая два слова из '0000' должен приземлиться на' 0011', но по формуле это '1000'? – rneha725
@ rneha725, вы правы, я думал о битах вместо байтов. Если ваша адресация находится в 8-битных байтах, как сегодня на большинстве компьютеров, вам нужно разделить размер слова на размер байта. – Michael
32 и 64 являются степенями a 2. 32 = 2^5 64 = 2^6. «Следующий биттут», вероятно, будет 128 (2^7). – BanksySan
да, но зачем это нужно, в глубине есть 1 и 0. – rneha725
Это не обязательно. Но есть несколько причин. Помимо 32 = 100000b и 64 = 1000000b, являющихся «хорошими» числами в двоичном выражении, полномочия 2 имеют много делителей (то есть, разумеется, снова степени 2). Идя еще глубже, мы приводим подробные сведения о дизайне https://en.wikipedia.org/wiki/Arithmetic_logic_unit и иерархиях памяти/кеша, которые, вероятно, выходят за рамки ответа здесь (хотя, тем не менее, можно * попробовать * дать хороший ответ - я не посмею ...) – Marco13