Подтвердить что ты не робот

Процессор, ОС: 32 бит, 64 бит

Я новичок в программировании и исхожу из не-CS-фона (без формальной степени). Я в основном программирую winforms с помощью С#.

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

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

Может ли кто-нибудь объяснить мне эти вещи простым простым английским языком или указать мне на что-то, что делает это.

EDIT: Я читал такие вещи, как в 32-битном режиме, они могут получить доступ к памяти объемом до 4 ГБ; в 64-битном режиме они могут получить доступ намного больше.... Я хочу знать ПОЧЕМУ ко всем таким вещам.

BOUNTY: ответы ниже действительно хороши.... esp one by Martin. Но я смотрю на подробное объяснение, но на простом английском языке.

4b9b3361

Ответ 1

На самом деле все сводится к проводам.

В цифровых цепях от одного элемента (CPU) к другому элементу (чипу памяти) может передаваться только 0 и 1 (обычно низкое напряжение и высокое напряжение). Если у меня всего 1 провод, я могу отправлять только 1 или 0 по кабелю за такт. Это означает, что я могу адресовать только 2 байта (при условии, что байтовая адресация и что целые адреса передаются всего за 1 цикл для скорости!).

Если у меня есть 2 провода, я могу адресовать 4 байта. Потому что я могу отправить: (0, 0), (0, 1), (1, 0) или (1, 1) по двум проводам. Так что в основном это 2 к мощности # проводов.

Итак, если у меня есть 32 провода, я могу адресовать 4 ГБ, и если у меня есть 64 провода, я могу адресовать гораздо больше.

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

Отредактировал мои комментарии здесь (неотредактированный);) И сделав его вики, если у кого-то есть что-то интересное для добавления.

Как и другие комментарии, 2 ^ 32 (2 до 32) = 4294967296, что составляет 4 ГБ. И 2 ^ 64 составляет 18 446 744 073 709 551 616. Чтобы копаться дальше (и вы, вероятно, читаете это в Hennesey and Patterson), процессоры содержат регистры, которые он использует как "пространство царапин" для хранения результатов своих вычислений. CPU знает, как делать простые арифметические операции и знает, как перемещать данные. Естественно, размер этих регистров одинаковой ширины в битах как "# -бит" архитектуры, поэтому 32-разрядные регистры процессора будут 32-битными, а 64-разрядные регистры процессора будут 64-битными широкий.

Будут исключения из этого, если речь идет о плавающей запятой (для обработки двойной точности) или других SIMD-инструкциях (однократная команда, несколько команд данных). ЦП загружает и сохраняет данные в и из основной памяти (ОЗУ). Поскольку ЦП также использует эти регистры для вычисления адресов памяти (физических и виртуальных), объем памяти, который он может адресовать, также совпадает с шириной его регистров. Есть некоторые процессоры, которые обрабатывают вычисления адресов с помощью специальных расширенных регистров, но те, которые я бы назвал "после мыслей", добавили после того, как инженеры поняли, что им это нужно.

В настоящий момент 64-бит довольно много для обращения к реальной физической памяти. Большинство 64-битных процессоров будут пропускать довольно много проводов, когда дело доходит до подключения процессора к памяти из-за практичности. Не имеет смысла использовать драгоценную материнскую плату для управления проводами, которые всегда будут иметь 0. Не говоря уже о том, чтобы максимальный объем оперативной памяти с сегодняшней плотностью DIMM потребовал бы 4 миллиарда слотов dimm:)

Помимо увеличения объема памяти, 64-разрядные процессоры предлагают более быстрое вычисление для целых чисел больше 2 ^ 32. Раньше программисты (или компиляторы, которые также запрограммированы программистами;) должны были бы имитировать наличие 64-битного регистра, занимая два 32-битных регистра и обрабатывая любые ситуации переполнения. Но на 64-битных процессорах он будет обрабатываться самим процессором.

Недостатком является то, что 64-разрядный процессор (со всем равным) потреблял бы больше энергии, чем 32-разрядный процессор, из-за (примерно) в два раза больше требуемой схемы. Однако на самом деле вы никогда не получите равного сравнения, потому что новые процессоры будут изготовлены в новых кремниевых процессах, которые имеют меньшую утечку мощности, позволят вам зацикливаться на большей схеме с одинаковым размером матрицы и т.д. Но 64-разрядные архитектуры будут потреблять в два раза больше Память. То, что когда-то считалось "уродливым" длины переменной переменной x86, на самом деле является преимуществом в настоящее время по сравнению с архитектурами, использующими фиксированный размер инструкции.

Ответ 2

Попробуйте ответить на этот вопрос, посмотрев на людей и компьютеры; мы надеемся, что это прольет некоторый свет на вещи для вас:

Вещи в разумении

  • Как ни удивительно, компьютеры очень, очень немые.

Память

  • У людей есть память (за исключением, возможно, мужей и политиков). Люди хранят информацию в своей памяти для последующего использования.
    • С вопросом (например, "Каков ваш номер телефона?" ) человек может получить информацию для ответа (например, "867-5309" ).
  • Все современные компьютеры имеют память и хранят информацию в своей памяти для последующего использования.
    • Поскольку компьютеры немыслимы, им может быть задан очень конкретный вопрос для получения информации: "Какое значение имеет значение X в вашей памяти?"
      • В вышеприведенном вопросе X известен как адрес, который также можно назвать указателем.

Итак, здесь у нас есть принципиальное различие между людьми и компьютерами: Чтобы отозвать информацию из памяти, компьютеры должны получить адрес, тогда как люди этого не делают. (В некотором смысле можно сказать, что "ваш номер телефона" - это адрес, потому что он дает различную информацию, чем "ваш день рождения", но этот другой разговор.)

Числа

  • Люди используют десятичную систему. Это означает, что для каждой цифры в десятичном значении цифра может быть одной из 0, 1, 2, 3, 4, 5, 6, 7, 8 или 9. У людей есть десять вариантов на цифру.
  • Все современные компьютеры используют двоичную систему счисления. Это означает, что для каждой цифры в двоичном номере цифра может быть только 1 или 0. У компьютеров есть два варианта на цифру.
    • В компьютерном жаргоне одна двоичная цифра называется битом, коротким для b inary dig it.

Адрес

  • Каждый адрес на компьютере представляет собой двоичный номер.
  • Каждый адрес на компьютере имеет максимальное количество цифр (или бит), которое оно может иметь. Это связано главным образом с тем, что компьютерное оборудование негибкое (также известное как фиксированное) и должно знать заранее, что адрес будет только таким длинным.
  • Термины, такие как "32-разрядные" и "64-разрядные", говорят о самом длинном адресе, для которого компьютер может хранить и извлекать информацию. На английском языке "32-бит" в этом смысле означает "Этот компьютер ожидает, что инструкции по его памяти будут иметь адреса длиной не более 32 двоичных цифр".
    • Как вы можете себе представить, чем больше бит компьютер может обрабатывать дольше адрес, который он может найти, и, следовательно, чем больше памяти он может управлять за один раз.

32-разрядная версия 64-разрядной адресации

  • Для негибкого (фиксированного) количества цифр (например, 2 десятичных разряда) возможные числа, которые вы можете представить, называются диапазоном (например, от 00 до 99 или 100 уникальными номерами). Добавление дополнительной десятичной цифры умножает диапазон на 10 (например, 3 десятичных цифры - от 000 до 999 или 1000 уникальных номеров).
  • Это относится и к компьютерам, но поскольку они являются двоичными машинами вместо десятичных машин, добавление дополнительной двоичной цифры (бит) увеличивает только диапазон в 2 раза.

    Адресационные диапазоны:
    • 1-битная адресация позволяет говорить о 2 уникальных адресах (0 и 1).
    • 2-битная адресация позволяет говорить о 4 уникальных адресах (00, 01, 10 и 11).
    • 3-битная адресация позволяет говорить о 8 уникальных адресах (000, 001, 010, 011, 100, 101, 110 и 111).
    • и через некоторое время... 32-разрядная адресация позволяет вам говорить о 4 294 967 296 уникальных адресах.
    • и еще дольше, пока... 64-разрядная адресация позволяет вам говорить о 18 446 744 073 709 551 616 уникальных адресов. Это LOT памяти!

Последствия

Все это означает, что 64-разрядный компьютер может хранить и получать гораздо больше информации, чем 32-разрядный компьютер. Для большинства пользователей это на самом деле не означает многого, потому что такие вещи, как просмотр в Интернете, проверка электронной почты и воспроизведение Solitaire, работают с комфортом в пределах 32-битной адресации. Там, где 64-битная выгода будет действительно сиять, в тех областях, где у вас много данных, которые компьютер должен будет опрокинуть. Цифровая обработка сигналов, гигапиксельная съемка и продвинутые 3D-игры - все это области, где их огромное количество обработки данных будет иметь большой импульс в 64-битной среде.

Ответ 3

Многие современные процессоры могут работать в двух режимах: 32-битном режиме и 64-битном режиме. В 32-битном режиме они могут получить доступ к памяти до 4 ГБ; в 64-битном режиме они могут получать гораздо больше. Старые процессоры поддерживают только 32-разрядный режим.

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

Приложения также могут быть записаны в 32-битном или 64-битном режиме (или скомпилированы для). Совместимость здесь сложнее, так как процессор, работающий в 64-битном режиме, все еще может поддерживать 32-разрядные приложения в качестве эмуляции. Таким образом, в 64-битной операционной системе вы можете запускать либо 32-разрядные приложения, либо 64-разрядные приложения. В 32-разрядной операционной системе вы можете запускать только 32-разрядные приложения.

Опять же, выбор размера в основном зависит от объема основной памяти, к которой вы хотите получить доступ. 32-разрядные приложения часто ограничиваются 2 ГБ на многих системах, поскольку для этого требуется некоторое адресное пространство.

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

Также можно задаться вопросом, стоит ли тратить 32-битное приложение на 64-разрядный процессор: на процессорах AMD64 и Intel64 этот режим эмуляции в основном аппаратно, поэтому нет реальной потери производительности при запуске 32 -битного приложения изначально. Это значительно отличается от Itanium, где 32-разрядные (x86) приложения эмулируются очень плохо.

Ответ 4

Позвольте мне рассказать вам историю о Бинвилле, маленьком городке в середине нигде. У Бинвилла была одна дорога, ведущая к ней. Каждый человек, приходящий или покидающий Бинвилл, должен был ехать по этой дороге. Но когда вы приблизились к городу, была вилка. Вы можете либо пойти налево, либо пойти направо.

Фактически, у каждой дороги была вилка, кроме дорог, ведущих к самим домам. Эти дороги просто закончились в доме. Ни одна из дорог не имела имен; им не нужны имена благодаря изобретательной схеме адресации, созданной комиссией по планированию Бинвилла. Вот карта Бинвиля, показывающая дороги и дома:

              ------- []  00
             /
       ------
      /      \
     /        ------- []  01
-----
     \        ------- []  10
      \      /
       ------
             \
              ------- []  11

Как вы можете видеть, каждый дом имеет двузначный адрес. Одного лишь этого адреса достаточно, чтобы: а) однозначно идентифицировать каждый дом (повторений нет) и б) рассказывать, как туда добраться. Понимаете, легко обойти город. Каждая вилка обозначается нулем или одной, которую Комиссия по планированию называет Bicville Intersection Tracer или бит для краткости. Когда вы приближаетесь к первой вилке, посмотрите на первый бит адреса. Если он равен нулю, идите влево; если он один, идите направо. Затем посмотрите на вторую цифру, когда вы дойдете до второй вилки, идите влево или вправо по мере необходимости.

Скажем, вы хотите посетить своего друга, который живет в Бинвилле. Она говорит, что живет в доме 10. Когда вы доберетесь до первой вилки Binville, идите направо (1). Затем на второй вилке идите влево (0). Вы там!

Бинвилл существовал вот так несколько лет, но слово начало обходить его идиллическую обстановку, отличную систему парков и щедрую медицинскую помощь. (В конце концов, если вам не нужно тратить деньги на уличные знаки, вы можете использовать его на лучших вещах.) Но была проблема. Только с двумя битами схема адресации была ограничена четырьмя домами!

Итак, Комиссия по планированию собрала свои головы и разработала план: они добавили бы немного к каждому адресу, тем самым удвоив количество домов. Чтобы реализовать план, они построят новую вилку на окраине города, и все получат новые адреса. Здесь новая карта, показывающая новую вилку, ведущую в город и новую часть Бинвиля:

                     ------- []  000
                    /
              ------
             /      \
            /        ------- []  001
       -----                            Old Binville
      /     \        ------- []  010
     /       \      /
    /         ------
   /                \
  /                  ------- []  011
--
  \                  -------     100
   \                /
    \         ------
     \       /      \
      \     /        ------- []  101
       -----                            New Binville (some homes not built yet)
            \        -------     110
             \      /
              ------
                    \
                     -------     111

Вы заметили, что все в оригинальной части Binville просто добавили нуль перед их адресом? Новый бит представляет собой новое пересечение, которое было построено. Когда количество бит увеличивается на единицу, количество адресов удваивается. Граждане всегда знали максимальный размер своего города: все, что им нужно было сделать, - вычислить значение двух поднятых до степени количества бит. С тремя битами они могли бы иметь 2 3= 8 домов.

Несколько лет прошло, и Бинвиль снова был заполнен. Больше людей хотели переехать, так что был добавлен еще один бит (наряду с необходимым пересечением), удвоив размер города до шестнадцати домов. Затем еще один бит, а другой и еще один... Бинвиллские адреса скоро были в шестнадцати битах, способных вмещать до 2 16 (16,384) домов, но этого было недостаточно. Люди продолжали приходить и приезжать!

Поэтому Комиссия по планированию решила решить проблему раз и навсегда: они перескочили бы до тридцати двух бит. Имея достаточные адреса для более чем четырех миллиардов домов (2 32), наверняка этого будет достаточно!

И это было... около двадцати пяти лет, когда Бинвиль больше не был маленьким городом в середине нигде. Теперь это был крупный мегаполис. Фактически, он был таким же большим, как целая нация с миллиардами жителей. Но парки все еще были хороши, и у всех была отличная медицинская помощь, поэтому население продолжало расти.

Столкнувшись с постоянно растущим населением, Комиссия по планированию вновь собрала свои головы и предложила еще одно расширение города. На этот раз они будут использовать 64 бита. Знаете ли вы, сколько домов могло бы вписаться в пределы города Бинвилл сейчас? Это право: 18 446 744 073 709 551 616. Это число настолько велико, что мы можем заселить около двух миллиардов земных шаров и дать каждому свой адрес.

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

Будет ли 64 бит достаточным? Кто знает в это время, но граждане Бинвиля ждут объявления 128-битных адресов...

Ответ 5

Ответ Мартина в основном правильный и подробный.

Я думал, что просто упомянул бы, что все ограничения памяти - это ограничения виртуальной памяти для каждого приложения, а не ограничения для реальной физической памяти на компьютере. Фактически, возможно работать с более чем 4 ГБ памяти в одном приложении даже в 32-битных системах, для этого требуется больше работы, поскольку он не может быть доступен с помощью указателей за один раз. текст ссылки

Еще одна вещь, о которой не упоминалось, заключается в том, что разница между традиционным процессором x86 и x86-64 заключается не только в размере указателя, но и в наборе инструкций. Хотя указатели больше и потребляют больше памяти (8 байтов вместо 4), он компенсируется большим набором регистров (15 регистров общего назначения вместо 8, iirc), поэтому производительность может быть лучше для кода, который выполняет вычислительную работу.

Ответ 6

Мартин ответ отличный. Просто добавьте дополнительные точки... поскольку вы упоминаете .NET, вы должны заметить, что CLI/JIT имеет некоторые отличия между x86 и x64, с различными оптимизациями (например, хвост-вызов) и некоторым тонким разным поведением продвинутых такие вещи, как volatile. Все это может повлиять на ваш код.

Кроме того, не весь код работает на x64. Все, что использует DirectX или определенные функции COM, может быть затруднено. Не очень эффективная функция, но важно знать.

(я удалил "DirectX" - я мог бы говорить мусор там... но просто: вам нужно проверить, что на вашей целевой платформе все зависит от вас)

Ответ 7

Подумайте о общей памяти компьютеров как о массивной бинго-карте с миллиардами квадратов. Чтобы адресовать любой отдельный квадрат на доске, существует схема для обозначения каждой строки и столбца B-5, I-12, O-52.. и т.д.

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

Перед тем, как вы это узнаете, диктор выматывает досадно огромные цифры и комбинации букв, чтобы вы знали, какой квадрат нужно отметить на вашей карточке размером 10 миллиардов квадратных метров. BAZC500000, IAAA12000000, OAAAAAA523111221

Счетчик бит компьютера определяет его предел сложности букв и цифр для обращения к любому конкретному квадрату.

32-биты означают, что если карта больше 2 ^ 32 квадратов, компьютер не имеет достаточного количества проводов и переходов, чтобы позволить ему однозначно физически обращаться к любому определенному квадрату, требуемому для считывания значения, или записать новое значение в указанный памяти.

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

Другими распространенными примерами пределов адресации являются локальные телефонные номера. Они обычно 7-значные 111-2222 или переформатированы как число 1,112,222. Что происходит, когда есть более 9999,999 человек, которые хотят иметь свои номера телефонов? Вы добавляете кодовые коды и коды стран, и ваш номер телефона идет от 7 цифр до 10-11, занимая больше места.

Если вы знакомы с надвигающимся недостатком IPv4, то та же проблема. IPv4-адреса - 32 бита, что означает, что есть только 2 ^ 32 (~ 4 миллиарда) уникальных IP-адресов, и есть еще много людей, чем живые сегодня.

На всех схемах, которые я упоминал (компьютеры, номера телефонов, адреса IPv4), есть накладные расходы, где определенные части зарезервированы для организационных целей, поэтому полезное пространство намного меньше.

Обещание производительности для 64-битного мира заключается в том, что вместо отправки 4 байтов за один раз (ABCD) 64-разрядный компьютер может отправлять по 8 байтов за один раз (ABCDEFGH), поэтому алфавит передается между различными областями памяти до двух раз быстрее, чем 32-разрядный компьютер. Также есть преимущество для некоторых приложений, которые работают быстрее, когда у них больше памяти, которую они могут использовать.

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

Ответ 8

Я не думаю, что в предыдущих ответах я много видел слово "регистр". Цифровой компьютер представляет собой группу регистров, с логикой для арифметики и памяти для хранения данных и программ.

Но сначала... цифровые компьютеры используют двоичное представление чисел, потому что двоичные цифры ( "бит" ) 0 и 1 легко представлены двумя состояниями (вкл/выкл) переключателя. Ранние компьютеры использовали электромеханические выключатели; современные компьютеры используют транзисторы, потому что они меньше и быстрее. Много меньше, а намного быстрее.

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

Имеет смысл организовать память компьютера как серию "местоположений", каждая из которых имеет такое же количество бит, что и регистр CPU: например, загрузите этот регистр из этой ячейки памяти. На самом деле, если мы думаем о памяти как о байтах, это просто удобная часть регистра, и мы можем загрузить регистр из ряда мест памяти (1, 2, 4, 8).

По мере того как транзисторы становятся меньше, дополнительная логика для более сложной арифметики может быть реализована в ограниченном пространстве компьютерного чипа. Недвижимость ЦП всегда с премией.

Но с улучшением изготовления микросхем, более транзисторы могут быть надежно изготовлены только на немного больших чипах. Регистры могут быть длиннее, а пути между ними могут быть более широкими.

Когда регистры, в которых хранятся адреса мест памяти, длиннее, они обращаются к большему количеству воспоминаний, и данные могут обрабатываться в больших кусках. В сочетании с более сложной арифметической логикой все становится быстрее.

И не так ли мы все после?

Ответ 9

чтобы объяснить, ПОЧЕМУ 32-битный режим может работать только с 4 ГБ ОЗУ:

Максимально доступное пространство памяти = 2 n байты, где n - длина слова архитектуры. Таким образом, в 32-битной архитектуре максимально доступное пространство памяти составляет 2 32= 4294967296 = 4 ГБ ОЗУ.

64-битная архитектура сможет получить доступ к 2 64= LOTS памяти.

Только что заметил комментарии Tchens. В любом случае, без фона CS, да, книги по компьютерной организации и архитектуре в лучшем случае будут трудно понять.

Ответ 10

Стоит отметить, что некоторые приложения (например, мультимедийное кодирование/декодирование и рендеринг) значительно увеличивают производительность (2x) при записи, чтобы полностью использовать 64-разрядную версию.

См. 32-битные и 64-разрядные тесты для Ubuntu и Windows Vista

Ответ 11

Для лиц, не являющихся членами CS. 64bit будет работать лучше для расчетов (все виды), это будет хорошо, и это позволит вам иметь больше ОЗУ.

Кроме того, если у вас ограниченная ОЗУ (в VPS, например, выделенный выделенный сервер), выберите 32 бит, службы будут потреблять меньше ОЗУ.

Ответ 12

  • Процессор использует base-2 для хранения чисел. База 2 была, вероятно, выбрана потому, что она "самая простая" из всех баз: например, таблица умножения базы-2 имеет только 4 ячейки, в то время как база "10" умножения имеет 100 ячеек.
  • До 2003 года обычные ПК-процессоры были только "32-битными".
    • Это означает, что собственные числовые операции процессора были для 32-разрядных чисел.
    • Вы все еще можете выполнять численные операции для больших чисел, но это должны выполняться программами, выполняемыми процессором, а не быть "примитивными действиями" (командами на машинных языках), поддерживаемыми процессором, такими как для 32 -битные целые числа (в то время)
    • Было выбрано 32 бита, потому что инженеры CPU увлекаются полномочиями 2, а 16 бит - недостаточно.
  • Почему не было достаточно 16 бит? С 16 битами вы можете представлять целые числа в диапазоне 0-65535
    • 65535 = 1111111111111111 в двоичном выражении (= 2 0 +2 1 +2 2... + 2 15= 2 16 -1)
    • 65535 недостаточно, потому что, например, программное обеспечение для управления больниц должно быть в состоянии подсчитать более 65535 пациентов.
    • Обычно люди рассматривают размер памяти компьютера при обсуждении того, насколько велики его целые числа. 65535 определенно недостаточно. У компьютеров есть больше оперативной памяти, чем это, и неважно, считаете ли вы в байтах или битах
  • 32 бита считались достаточно продолжительными. В 2003 году AMD представила первый 64-разрядный процессор "x86" . Intel вскоре последовали.
  • На самом деле 16 бит считался достаточно давно.
  • Общепринятой практикой является то, что многие аппаратные и программные средства имеют обратную совместимость. В этом случае это означает, что 64-битные процессоры могут также запускать каждое программное обеспечение, которое может использовать 32-разрядные процессоры.
    • Обратная совместимость развивается как бизнес-стратегия. Больше пользователей захотят перейти на более мощный процессор, если он может сделать все, что было раньше.
    • В обратную совместимость процессоров означает, что новые действия, поддерживаемые ЦП, добавляются на предыдущий машинный язык. Например, предыдущий машинный язык может иметь некоторую спецификацию, такую ​​как "все коды операций, начинающиеся с 1111, зарезервированы для будущего использования"
    • Теоретически такой тип обратной вычислительной мощности процессора не был бы необходим, поскольку все программное обеспечение могло быть просто перекомпилировано на новый и несовместимый машинный язык. Однако это не так из-за корпоративных стратегий и политических или экономических систем. В утопическом мире с открытым исходным кодом обратная совместимость машинных языков, вероятно, не будет проблемой.
  • Обратная вычислимость x86-64 (общий 64-разрядный процессорный язык процессоров) поставляется в виде "режима совместимости". Это означает, что любая программа, желающая использовать новые возможности процессора, должна уведомить CPU (через ОС) о том, что он должен работать в "64-битном режиме". И тогда он может использовать большие 64-разрядные возможности процессора.
  • Следовательно, для программы, использующей 64-битные возможности процессора: CPU, ОС и программа, все должны "поддерживать 64-битные".
  • 64-бит достаточно, чтобы дать каждому человеку в мире несколько уникальных номеров. Это, вероятно, достаточно большое для большинства текущих вычислений. Вероятно, маловероятно, что будущие процессоры будут двигаться дальше до 128 бит. Но если они это сделают, это определенно достаточно для всего, что я могу себе представить, и поэтому переход на 256 бит не понадобится.

Надеюсь, это поможет.

Ответ 13

Это очень простое объяснение, учитывая, что все вышеописанное довольно подробно.

32-бит относится к регистрам. Регистры - это места для хранения данных, и все программы работают, манипулируя этими вещами. Ассамблея работает непосредственно на них (и, следовательно, почему люди часто рады программировать в сборке).

32-битный означает, что базовый набор регистров может содержать 32 бита информации. 64-бит означает, что неудивительно, 64 бит информации.

Почему это может ускорить выполнение программ? Потому что вы можете делать большие операции быстрее. Между прочим, это сделает только определенные типы программ. Игры, как правило, могут иметь большое преимущество в оптимизации для каждого процессора из-за их математических операций (и, следовательно, использования регистра).

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

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

Надеюсь, что это поможет. другие плакаты гораздо более точны, чем я, я просто пытаюсь объяснить очень просто (это помогает, что я знаю очень мало:)

Ответ 14

У меня есть замечательный ответ на этот вопрос, но он не подходит всем в этом блоке ответов.... Простой ответ заключается в том, что для вашей программы, чтобы получить байты из памяти, ему нужен адрес. В 32-битных ЦП адрес памяти каждого байта хранится в 32-битном (без знака) целое число, которое в качестве максимального значения составляет 4 ГБ. Когда вы используете 64-битный процессор, адрес памяти является 64-битным целым числом, что дает вам примерно 1,84467441 × 10 ^ 19 возможных адресов памяти. Этого действительно должно быть достаточно, если вы новичок в программировании. Вы действительно должны сосредоточиться больше на том, как программировать, чем на внутренней работе вашего процессора, и почему вы не можете получить доступ к более чем 4 ГБ ОЗУ на своем 32-битном процессоре.

Ответ 15

Простой ответ для объяснения адресного диапазона памяти с 32-разрядными процессорами:

Предположим, что у вас есть только 3-значное число, разрешенное к построению, поэтому максимальное число u может идти до 999. Диапазон чисел (0-999). У вас всего 1000 номеров.

Но если u разрешено иметь 6-значные числа, тогда максимальное число, которое вы можете построить, равно 999999. Теперь диапазон (0-999999). Итак, теперь у вас есть 1 миллион номеров с вами.

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

Любое проще, чем это было бы интересно прочитать!

-AD.