X86 и x86-64 более продвинуты, чем 64-битные?

Я знаю, что 32-битные имеют 32-битные регистры, а 64-битные имеют 64-битные регистры, но я хотел бы знать, каковы архитектуры x86 и x86-64 и являются ли они более продвинутыми по сравнению с 32-битными и 64-битными??

3 ответа

Решение

32 б против 64 б

Говоря об архитектуре 32 b против 64 b, вы говорите о размере регистра. Это размер адреса, указателя.

Основная проблема заключается в том, что 32 b может иметь только 2^32 ~ 4 × 10^9 различных значений. Байты адресуются, поэтому у нас 4 ГБ адресуемой памяти. Что-то зарезервировано для ядра, обычная программа не может использовать все это, даже в теории.

Наличие больших адресов делает размер адресного пространства без проблем. Указатели 64 b достаточно велики, чтобы обрабатывать любую доступную память даже в будущем. IIRC 2^64 больше, чем предполагаемое количество протонов во вселенной. Я имел в виду число Эддингтона, и оно намного больше. Но все же 2^64 действительно большой.

Но есть еще одна практическая проблема. Адреса теперь в два раза больше, занимают вдвое больше памяти. Когда их много, это не хорошо. Но это не шоу-стопор, а просто недостаток, о котором нужно помнить.

x86 и x86_64

Сначала я должен пояснить, что эти две архитектуры имеют много имен. x86 = x86_32 = i686 = IA32 = Intel32 - это 32-битная архитектура Intel, которая до недавнего времени была самой популярной архитектурой для настольных систем. Под расширением x86 подразумевается все семейство обратно совместимых архитектур, включая x86_64. Но x86_64 не от Intel, а от AMD. Вы также можете увидеть его с пометкой amd64 или x64, но не путайте его с IA64, который принадлежит Intel и был неудачным.

С x86_64 удвоился не только размер регистра (он равен 64b), но и количество регистров, доступных для программы. Новый ABI полностью использует пространство в регистрах. Многие вещи, которые раньше передавались в стек между вызовами функций, теперь находятся в регистрах, что уменьшает количество операций загрузки / сохранения и, таким образом, ускоряет вычисления.

Приступая к делу

32 b и 64 b является характеристикой архитектуры. x86 и x86_64 - это имена определенных архитектур. x86 обычно обозначается как 32b, x86_64 - 64b.

X86_64 более продвинут, чем x68_32? Определенно да. Поскольку он обратно совместим, он может обрабатывать все, что может x86_32, но также и многое другое. Однако части или архитектура процессора, видимые программисту, не единственные, которые имеют значение. Даже два процессора x86_64 могут иметь ошибки в производительности.

Но это будет слишком долго, лучше задать более конкретный вопрос или поискать его где-нибудь. Я просто добавлю, что большая часть темной магии надежно закрыта от программиста, который обладает комфортом архитектуры фон Неймана. Под капотом происходит безумная оптимизация. Реальность совсем не последовательна. Компиляторы и программисты на ассемблере должны знать, что происходит, и умело использовать скрытую внутреннюю структуру процессора.

Это действительно зависит. Большим преимуществом 64-битной машины является то, что она может хранить больше данных с большим адресным пространством, поддерживать больший объем памяти Адрес здесь - это виртуальный адрес или диапазон физических адресов.

x86 является 32-разрядным, а x86-64- 64-разрядным.

Другие вопросы по тегам