Какое максимальное количество оперативной памяти теоретически может адресовать 64-битная машина?

41414
KingNestor

Я читаю книгу о своей компьютерной архитектуре и вижу, что в 32-битном процессоре x86 счетчик программ 32-битный.

Таким образом, число байтов, которые он может адресовать, составляет 2 ^ 32 байта или 4 ГБ. Поэтому для меня имеет смысл, что большинство 32-битных машин ограничивают объем оперативной памяти до 4 Гб (игнорируя PAE).

Прав ли я, предполагая, что 64-битная машина теоретически может адресовать 2 ^ 64 байта или 16 эксабайт оперативной памяти ?!

21
Обратите внимание, что ни один из существующих 64-разрядных процессоров x86 не может это сделать. Их кэшам не хватает битов тегов, их адресным шинам не хватает ширины и так далее. 46 бит (8 ТБ) - максимум для многих современных процессоров x86. David Schwartz 11 лет назад 4
Теоретически, нет предела. Даже 32-разрядные процессоры могут иметь адресное пространство выше 4 ГиБ. Это зависит от того, как система управления памятью реализована * аппаратно *, которая ** обычно ** не зависит от длины слова процессора. Указатели в программах всегда имеют длину слова, но в любом случае это виртуальные адреса (а не физические), поэтому они дополнительно отображаются в другое адресное пространство. Breakthrough 11 лет назад 4
Это старый вопрос со старыми ответами, но я чувствую, что большинство проголосовавших ответов на этот вопрос очень вводят в заблуждение, и они являются ответами на то, сколько ОЗУ может иметь машина с 64-битной адресной шиной адреса_. Как указывалось выше David and Breakthrough, «битность» архитектуры отражает размер первичных регистров, а не размер адресной шины. Sebi 8 лет назад 0
Почему вы игнорируете PAE? Jamie Hanrahan 8 лет назад 0

9 ответов на вопрос

28
Matt Ball

Theoretically: 16.8 million terabytes. In practice: your computer case is a little too small to fit all that RAM.

http://en.wikipedia.org/wiki/64-bit#Limitations_of_practical_processors

Слишком маленький .... * сегодня !!!! * snicker 14 лет назад 13
16,777216 миллионов тебибайт. Если вы хотите быть точным. totymedli 10 лет назад 2
Я читал в других источниках, что процессор не может использовать каждый бит для доступа к памяти, учитывается ли это в вашем ответе? Andrey 9 лет назад 0
16
Conrad.Dean

To supplement Matt Ball's answer, the current largest stick of RAM I can find on one particular online retailer is 32GB. It would take 32 of these to reach 1 terabyte. At about a half inch per stick this brings us to a devoted 16 inches of space on your motherboard for a terabyte of commercial ram. To reach 16.8 million terabytes would require a motherboard 4,242.42 miles. The distance from LA to NYC is about 2141 miles, so the motherboard would stretch across the country and back to accomodate that much RAM.

Clearly this is impractical.

How about we didn't put our RAM all in one row like on most motherboards, but instead placed them side-by-side. I want to say the average stick of ram is about six inches long, so if we allow a half an inch for width, you can have a square unit of 12 sticks of ram in a 6 inch square. Let's call this square a RAM-tile. A RAM-tile then holds 384GB of RAM. To reach the required 16.8 million terabytes in 384GB tiles would take 44.8 million tiles. Let's be messy, and use square root of that to conclude that this will fit in a square of 6693 by 6694 tiles, or 13,386 by 13,388 feet, which is close enough to 2.5 miles squared, enough to cover downtown Seattle in shadow, as if they didn't already have enough to complain about.

Слишком большой. Почему вы кладете их на квартиру? Вы можете получить все это в 100-футовом кубе. Возможно, вам понадобится жидкий азот, чтобы он остыл. Loren Pechtel 10 лет назад 2
количество газообразного азота, которое могло бы закипеть, представляло бы угрозу безопасности для великих людей Сиэтла Conrad.Dean 10 лет назад 1
4
Adam Wright

Effectively, yes - processes could, in theory, address 2^64 bytes of memory. But as you pointed out, there are ways around this limit.

3
supercat

There is no particular fixed relationship between the bit size of a processor and the amount of addressable memory. Most 8-bit machines of the late 1970s could easily access 65,536 bytes directly, the 16-bit 8088 and 8086 could access 1,048,576 bytes directly. Additionally, it's possible to add hardware to allow machines to access any quantity of RAM indirectly; many machines with 8-bit processors had 128K or more, and memory-expansion units for 8088-based PCs could access over 16 megs. Although Microsoft only enabled such feature in "server" versions of Windows, it was possible for 32-bit code to access memory beyond the 4GiB mark using similar approaches.

2

You would be correct. You can address up to 16 exabytes of RAM. Now.. whether the operating system can handle it would be another question....

2
decasteljau

Would be also good to note that the operating system has its own limitation about memory in a 64-bit architecture.

For example, see what wikipedia sais about Windows Vista 64:

All 64-bit versions of Microsoft operating systems currently impose a 16 TB limit on address space. Processes created on the 64-bit editions of Windows Vista can have 8 TB in virtual memory for user processes and 8 TB for kernel processes to create a virtual memory of 16 TB.[29] In terms of physical memory Windows Vista 64-Bit Basic supports up to 8 GB of RAM, Windows Vista 64-Bit Home Premium supports up to 16 GB of RAM, and Windows Vista 64-Bit Business/Enterprise/Ultimate supports up to 128 GB of RAM.[8]

Последние сведения для Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778.aspx Arjan 9 лет назад 0
1
Mark Ransom

The biggest advantage to 64 bits is not the RAM it can address, but everything else. You can define an address for every byte on a disk, for example, and increasing disk capacities will not invalidate this for decades.

Конечно, поскольку современные процессоры имеют это адресное пространство искусственно ограниченным, может пройти всего десять лет, прежде чем не хватит битов для адресации каждого байта на диске. Надеемся, что на этом этапе ограничения будут увеличены по мере того, как работают твердотельные накопители, и появление целого диска в виде раздела памяти может значительно повысить производительность. Я не против подключить SSD к слоту RAM, а не к кабелю SATA! Malvineous 9 лет назад 0
@ Malvineous Я говорил о чем-то более фундаментальном, даже если вы ограничитесь 63 битами, вы можете напрямую обратиться к 9223372 ТБ. А SSD в слоте ОЗУ уже существуют, см. [Sandisk] (http://www.sandisk.com/enterprise/ulltradimm-ssd/). Mark Ransom 9 лет назад 0
Я не был с вами не согласен, я просто указывал, что с текущей технологией существуют искусственные ограничения на то, что вы предлагаете (например, только 48 или 51 бит адреса, выводимого на физическую шину). Если эти DIMM-SSD зацепят нас, у нас могут закончиться адреса памяти раньше, чем вы предлагаете, если эти искусственные ограничения не могут быть увеличены или удалены. Я согласен, если бы были доступны все 64-битные версии, то прошло бы десятилетия, прежде чем это станет проблемой. Malvineous 9 лет назад 0
Просто для справки, я посмотрел ссылку SanDisk UlltraDIMM, но, к сожалению, технически это не SSD-как-RAM. Это SATA SSD 6 Гбит / с, с адаптером DDR3-SATA, который позволяет получить к нему доступ, как к памяти. Дополнительное преобразование запросов памяти в протокол SATA вносит некоторую задержку и выглядит немного грязно. Надеюсь, кто-то увидит пользу от этого и вскоре выпустит настоящий интерфейс памяти для прошивки без каких-либо ненужных адаптеров между ними! Malvineous 9 лет назад 0
0

Most of today's current processors have some sort of artificial limit on their address size. For example, the AMD64 architecture has a 52-bit limit on physical memory and currently only supports a 48-bit virtual address space. (Via Wikipedia). However yes, physically ~16.4 million terabytes is possible.

-1
Weazel

for a realistic physical answer 1536gb with 48 ram cards runing 32gb single sticks and 4x lga2011 xeons

this is for the esayist pc someone can buy without breaching hidden hardcore severs think theres 64gb single stics brings to.... 3072gb 128gb be 6144gb 256gb be 12288gb

just to throw out there that theres ways to get around os limitations with ram if ur os can only see 4gb ram turn the leftover into a ram drive and use the ram drive as page file XD XD XD XD just a matter of making a preboot os system some such simular thing was done back in early days of dos/windows 3.11 etc

and there can be other little hacks for getting around cpu limitations

gear we can see isnt wats out there theres way more potent stuff i had a pc from 98 runing 8 proccessors and somethink like 32gb ram but this is expensive hi end servers

im looking into servers as desktops because im sick of the computers for the public XD