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

$('
').text('This is fun & stuff').html(); // "This is fun & stuff"

Источник: http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

31
задан Simon 7 August 2010 в 10:56
поделиться

15 ответов

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

В цифровых схемах только нули и единицы (обычно низкое и высокое напряжение) могут передаваться от одного элемента (ЦП) к другому элементу ( микросхема памяти). Если у меня только 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 & Patterson), процессоры содержат регистры, которые он использует как «рабочее пространство» для хранения результатов своих вычислений. ЦП знает только, как выполнять простую арифметику и знает, как перемещать данные. Естественно, размер этих регистров в битах такой же, как и "# -биты" архитектуры, поэтому 32-битный процессор ' Регистры s будут иметь ширину 32 бита, а регистры 64-битного процессора будут иметь ширину 64 бита.

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

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

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

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

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

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

39
ответ дан 27 November 2019 в 21:23
поделиться

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

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

0
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

2
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

3
ответ дан 27 November 2019 в 21:23
поделиться

Многие современные процессоры могут работать в двух режимах: 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) приложения эмулируются очень плохо.

32
ответ дан 27 November 2019 в 21:23
поделиться

Я думаю, что это нормально - потому что это не похоже на TruncateToSize , реально заменяемый компонент. Это метод, который когда-либо должен делать только одну вещь.

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

Другими словами: если TruncateToSize был подлинным членом String , Вы бы даже дважды подумали, прежде чем использовать его? Вы также пытаетесь имитировать целочисленную арифметику, вводя IInt32Adder и т. Д.? Конечно нет. Это то же самое, только вы предоставляете реализацию. Модульное тестирование из TruncateToSize и не беспокойтесь об этом.

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

1
ответ дан 27 November 2019 в 21:23
поделиться
  • Процессор использует основание 2 для хранения чисел. Основание 2, вероятно, было выбрано потому, что оно «простейшее» из всех оснований: например, таблица умножения с основанием 2 имеет только 4 ячейки, а таблица умножения с основанием «10» - 100 ячеек.
  • До 2003 года обычные процессоры ПК были только «32-битный».
    • Это означает, что собственные числовые операции процессора были для 32-битных чисел.
    • Вы все еще можете выполнять числовые операции для больших чисел, но они должны выполняться программами, выполняемыми процессором, а не " примитивные действия »(команды на машинном языке), поддерживаемые процессором, например, для 32-битных целых чисел (в то время)
    • 32 бита были выбраны, потому что инженеры ЦП любят степени двойки, а 16-битные числа не были t достаточно
  • Почему не хватило 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-битная версия CPU.
    • Обратная совместимость - это бизнес-стратегия. Больше пользователей захотят перейти на более мощный процессор, если он также сможет делать все, что мог предыдущий.
    • В ЦП обратная совместимость означает, что новые действия, поддерживаемые ЦП, добавляются к предыдущему машинному языку. Например, предыдущий машинный язык мог иметь некоторую спецификацию вроде «все коды операций, начинающиеся с 1111 , зарезервированы для использования в будущем»
    • Теоретически такая обратная совместимость ЦП не была необходима, поскольку все программное обеспечение могло были только что перекомпилированы на новый и несовместимый машинный язык. Однако это не так из-за корпоративных стратегий и политических или экономических систем. В утопическом мире с открытым исходным кодом обратная совместимость машинных языков, вероятно, не будет проблемой.
  • Обратная совместимость x86-64 (общий машинный язык 64-битных процессоров) осуществляется в форме «режима совместимости». Это означает, что любая программа, желающая использовать новые возможности ЦП, должна уведомить ЦП (через ОС), что она должна работать в «64-битном режиме». И тогда он мог бы использовать новые великолепные 64-битные возможности ЦП.
  • Следовательно, чтобы программа использовала 64-битные возможности ЦП: ЦП, ОС и программа должны «поддерживать 64-битные» .
  • 64-битных чисел достаточно, чтобы дать каждому человеку в мире несколько уникальных чисел. Вероятно, он достаточно велик для большинства современных вычислительных задач. Вероятно, маловероятно, что будущие процессоры перейдут на 128 бит. Но если они это сделают, это '
1
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

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

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

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

Другими распространенными примерами ограничений адресации являются местные телефонные номера. Обычно это 7-значные числа 111-2222 или переформатируются в число 1,112,222 .. что происходит, когда более 9 999 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-битном процессоре также может ухудшить производительность в некоторых областях, так что обычно это промывание.

2
ответ дан 27 November 2019 в 21:23
поделиться

Давайте попробуем ответить на этот вопрос, посмотрев на людей по сравнению с компьютерами ; Надеюсь, это прольет свет на вас:

О чем следует помнить

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

Память

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

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

Числа

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

Адреса

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

32-битная v. 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 уникальных адресах. Это МНОГО памяти!

Последствия

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

39
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

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

Было бы интересно прочитать все, что попроще!

-AD.

0
ответ дан 27 November 2019 в 21:23
поделиться

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

0
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

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

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

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

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

0
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

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

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

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

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

И разве это не то, чего мы все добиваемся?

2
ответ дан 27 November 2019 в 21:23
поделиться

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Будет ли достаточно 64 бит? Кто знает в это время,

18
ответ дан 27 November 2019 в 21:23
поделиться

Для лиц без CS. 64-разрядная версия будет работать лучше для вычислений (всех видов), это будет хорошо, также она позволит вам иметь больше оперативной памяти.

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

0
ответ дан 27 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: