2016-11-14 3 views
0

Я понимаю, что размер слова процессора - это количество бит, обрабатываемых этим процессором в одном вычислении. Это (в настоящее время) обычно 32 или 64 бит. Однако мои исследования показывают, что размер слова в прошлом был меньше, и со временем он постепенно увеличивался.Как определяется размер оптимального (процессорного) слова? Чем больше, тем лучше?

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

Учитывая это, как оптимальное размер слова определяется? Является ли размер большего слова лучше? Если нет, то почему?

Я подозреваю, что размер большего слова не всегда лучше, поскольку размер большего слова может означает, что один цикл шины (время, затрачиваемое на перенос одного слова через шину) занимает больше времени?

спасибо.

+0

62 бит? никогда не слышал об этом. Ну, с одной стороны, более крупный размер слова дает вам возможность доступа к более широкому пространству адресов и в некоторой степени увеличивает сложность инструкций. – babon

+0

@babon Typo! Благодарю. –

ответ

1

Однако мои исследования показывают, что размер слова был меньше в прошлом и постепенно увеличивался с течением времени.

Да, очень хорошо. В то время как Intel занималась новаторскими работами для 16-битных и 32-разрядных процессоров (соответственно, процессоры 8086 и 80386 были первыми в своем роде), AMD создала архитектуру AMD64 (aka x86-64 или просто x64), расширение по сравнению с 32-разрядная архитектура x86 началась с 80386. Intel создала совершенно новую вещь - архитектуру IA-64, но никто ее не использует.

Я подозреваю, что больший размер слова не всегда лучше, так как больший размер слово может означать, что один цикл шины (время, необходимое для передачи одно слово по шине) занимает больше времени?

Это верно в предположении, что ваш автобус не такой широкий, как дата, которую вы хотите транспортировать. Отправка 32-разрядной базы данных по 16-разрядной шине действительно занимает больше времени. Однако транспортировка 64-разрядной базы данных по 64-разрядной шине занимает столько же времени, сколько и 16-разрядная система данных по 16-разрядной шине.

Из-за этого размер слова равен ширине шины. В машине Von Neumann есть три автобуса, поэтому были некоторые разногласия относительно того, что на самом деле определить как размер слова, но обычно речь идет о шине данных.

Итак, тот факт, что размер слова увеличился за эти годы, вызван технологией продвижения (связанный: Moore's Law). Наука продвинулась вперед и нацелена на улучшение, быстрее процессоров.

Теперь у нас есть 64-разрядные процессоры, но с их наборами команд немедленные операнды (литералы) также рассматриваются как 64-разрядные. Это означает, что загрузка, например, 0x1 в 64-разрядный регистр требует минимум 9 байтов (непосредственный операнд + код операции). Это, очевидно, невыгодно, если в архитектуре не предусмотрена специальная инструкция для загрузки одного байта с символом или нулем в 64-разрядный регистр. Поэтому были способы улучшить это, в частности, набор команд ARM Thumb , который пытается уменьшить размер кода за счет увеличения времени выполнения.

В конце концов, нет «оптимального размера слова». Это зависит от приложения и окружающей среды. Некоторые программы требуют скорости, некоторые должны быть маленькими по размеру.


Я не знаю, почему это называется «Thumb», возможно, потому что инструкции настолько малы, они вписываются в наперсток.

+0

Благодарим вас за отличную реакцию. У меня есть вопрос относительно вашего последнего комментария: «В конце концов, нет« оптимального размера слова ». Это зависит от приложения и окружающей среды. Некоторые программы требуют скорости, некоторые должны быть маленькими по размеру. '. Поэтому, хотя нет «оптимального размера слова», * если предположить, что автобус был достаточно широким, чтобы транспортировать * любой размер слова, который требуется, размер большего слова всегда будет лучше? –

+0

@ handler'shandle Вам нужно сделать компромисс. Если у вас есть 128-битная шина данных и вы можете передавать 128-битные данные за раз. Это круто! Но инструкция, сообщающая процессору о переносе этих 128 битов, каким-то образом должна включать эти данные для отправки, размер которых составляет 128 бит. Таким образом, либо разработчики набора инструкций придумали метод, чтобы каким-то образом сжать эти данные, либо инструкция просто имеет эти 128 бит (16 байт), что, очевидно, делает ее очень большой. Таким образом, компромисс здесь - увеличенная скорость (большая шина данных) или уменьшенный размер (небольшая шина данных). – Downvoter

+0

@ handler'shandle Я очень рекомендую прочитать о ARM Thumb, если вы действительно хотите узнать больше. Я уже говорил об этом компромиссе. – Downvoter

1

Учитывая это, как определяется оптимальный размер слова?

Размер слова определяется как часть конструкции процессора. Это не обязательно оптимально. В прошлом размер слов включал 8, 12, 16, 32, 36 и 64 бит. Чем больше бит в размере слова, тем сложнее процессор должен реализовать. 64-разрядное дополнение (включающее вычисление адресов памяти) занимает в 4 раза больше, чем 16-разрядное дополнение.

Больше ли размер слова лучше? Если нет, то почему?

«640K должно быть достаточно для всех».

Было время, когда считалось, что 32 бит (4 ГБ памяти) хватит навсегда. Как долго хватит 64 бит?

Большие размеры слова потребляют больше памяти и усложняются для реализации. Есть компромисс.

Я подозреваю, что размер большего слова не всегда лучше, поскольку больший размер слова может означать, что один цикл шины (время, необходимое для передачи одного слова через шину) занимает больше времени?

Размер передачи по шине может отличаться от размера слова процессора. Это часто является узким местом.

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