Разница между загрузкой i386 и amd64?

164

В чем разница между стандартной загрузкой i386 и загрузкой amd64 Ubuntu 11.04? В настоящее время я использую i386 на машине amd, лучше ли будет работать моя система с загрузкой amd64? (моя машина работала под управлением Windows 7 64bit, но я не обратил на это внимания перед установкой Ubuntu).

обкрадывать
источник

Ответы:

165

i386 относится к 32-разрядной версии, а amd64 (или x86_64) относится к 64-разрядной версии для процессоров Intel и AMD.

Википедия i386 запись:

Intel 80386, также известный как i386, или просто 386, был 32-разрядным микропроцессором, представленным Intel в 1985 году ... Это называется x86, IA-32 или архитектура i386, в зависимости от контекста.

Запись в Википедии x86_64:

x86-64 является расширением набора команд x86. Он поддерживает гораздо большие виртуальные и физические адресные пространства, чем это возможно в x86, что позволяет программистам удобно работать с гораздо большими наборами данных ... После запуска архитектуры под именем "x86-64" AMD переименовала его в AMD64 ... x86 -64 до сих пор используется многими в отрасли как термин, не зависящий от производителя, в то время как другие, в частности Sun Microsystems (сейчас Oracle Corporation) и Microsoft, используют x64.

Даже если у вас есть процессор Intel, вы должны использовать AMD64 для установки 64-битной версии на свой компьютер (он использует те же наборы инструкций).

Я настоятельно рекомендую использовать его. По большей части вы не заметите разницы, но для больших рабочих нагрузок (таких как редактирование видео, игры и т. Д.) Компьютер будет работать быстрее (у компьютера есть возможность вычислить 2 + 2 + 2 = 6 вместо необходимости выполнять 2 + 2 = 4 + 2 = 6 в примере). В мире Windows 32-битная ОС не позволит вам использовать более 3,5 ГБ ОЗУ на вашем компьютере (даже если у вас есть 8!). Вам необходимо использовать 64-битную ОС, чтобы полностью использовать всю оперативную память. Однако для Linux такого ограничения нет (спасибо, Ури).

Несмотря на это, мир изменился с 32-разрядных, и он только там поддерживает старые машины, которые не способны работать на 64-разрядных.

Джереми Бича
источник
Эта последняя часть теперь (в Linux, конечно) Просто не соответствует действительности, вы МОЖЕТЕ использовать более 3,5 ГБ ОЗУ с ядром PAE в 32-битной версии.
Ури Эррера
не будет ли ограничение 32 ГБ на 3,5 Гбайт оперативной памяти 4 ГБс- <память графической карты>?
Chriskin
3
Для простоты я пропустил такие технические детали, как память видеокарты. Моя цель состояла в том, чтобы сказать: «Если у вас больше 3,5-4 гигабайт, используйте 64 бит».
1
@ Treefroginc Какие именно твики?
Ури Эррера
1
64-битный - это каждый бит, который можно использовать и стабильный, как 32-битный, с почти ничтожным исключением Flash при определенных обстоятельствах в определенное время суток и при выравнивании планет, испускающих космические лучи.
41

Архитектура названа в честь AMD, потому что AMD изобрела ее с Athlon 64. Аналогично, 32-разрядная архитектура i386 названа в честь процессора Intel 386, поскольку она была первой в своем роде, но i386 также будет работать на процессорах AMD. Так что да, вы можете использовать этот образ ISO.

Источник: https://superuser.com/questions/128482/ubuntu-amd64-vs-i386

Митч
источник
10

да, вы можете установить amd64 bit на 64-битный процессор Intel. AMD изобрела процессор набора битовых команд x86-64, так что название - это просто дань AMD.

Рони Томас
источник
Спасибо за разъяснение этого. Я знаю, что это был простой вопрос, но я нигде не мог найти ответ.
Дэйв Вуловер
8

Разница между amd64 и i386 заключается в том, что amd64 является 64-разрядным, а i386 - 32-разрядным . Это ширина (в битах) регистров, доступных в ядре.

По сути, наибольшее число, которое 32-разрядное ядро ​​процессора может обработать за один раз, составляет чуть более 4,29 миллиарда, в то время как 64-разрядное ядро ​​может обрабатывать чуть более 18,44 миллиарда миллиардов.

Ядра современных ПК могут работать как 64-разрядный или 32-разрядный процессор, в зависимости от того, какую версию операционной системы вы установили.

64-разрядный код имеет тенденцию работать быстрее, чем 32-разрядный код, либо потому, что он может работать с большими числами на ходу, либо потому, что 64-разрядные ядра имеют больше регистров, поэтому могут хранить больше вещей без необходимости помещать их во внешнюю память. Хотя нет никакой гарантии, что 64-битный код будет работать быстрее, если код не был написан для использования дополнительных возможностей процессора.

Компиляция в 32-битной системе даст код, отличный от 64-битной системы. Вы можете доказать это, скомпилировав код ассемблера в двух системах. Предполагая, что ваш C-файл - myfile.c, попробуйте gcc -S myfile.cв обеих системах сравнить myfile.s

Хорошо написанный код для 32-разрядной системы должен компилироваться и выполняться в 64-разрядной системе, но не весь код написан хорошо. Многие программисты делают предположения о системе, которые могут быть неверными: например, ширина регистра или порядок байтов.

Без доступа к исходному коду трудно понять, в чем проблема, но segmenation faultуказывает, что была сделана попытка получить доступ к памяти, которая не принадлежит программе. Это может, например, указывать на то, что mem_ptr является 32-битным указателем, что хорошо в 32-битной системе, но должно быть 64-битным указателем в 64-битной системе.

Уоррен Хилл
источник
Я проверю это и вернусь к этому ... Спасибо
bikram990
realloc(mem_ptr, 0)Функция освобождения памяти , ранее выделяются malloc, callocи т.д. Если этот указатель был поврежден каким - либо образом , то вы пытаетесь освободить память вы не владеете , и это порождает ошибку сегментации
Warren Hill
6

Да, вы можете использовать это .ISO. amd64 относится к архитектуре. AMD была первой, кто создал 64-битный процессор, так что я считаю, что он был назван так в то время, и название застряло. Это немного сбивает с толку, но amd64 означает 64-битный.

reverendj1
источник
10
Они не были первыми, кто создал 64-битный процессор. У Intel был один раньше, но он не был обратно совместимым, поэтому не получил широкого распространения. Название amd64 должно было отличить архитектуру AMD от Intel IA64, которая в настоящее время больше не выпускается.
psusi