64 비트 시스템이 한 번에 몇 개의 메모리를 처리 할 수 ​​있습니까?


32

메모리가 바이트 주소를 지정할 수있는 경우

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

일반적인 Google 검색에 최대 8GB 또는 16GB가 표시됩니다.

그게 어때? 또한 운영 체제에 따라 어떻게 달라 집니까?


내 작업 시스템에 12GB가 있고 8GB의 비디오 RAM, 모든 하드웨어 및 모든 가상 메모리를 모두 처리 할 수 ​​있으므로 8GB는 분명히 벽에서 벗어났습니다.

Newegg는 한 대의 컴퓨터를위한 32GB 램 패키지를 판매합니다. 32 비트는 3.2GB를 지원하고 128 비트는 수백만 테라 바이트를 지원하므로 64 비트는 32 비트보다 두 배 이상이라고 생각합니다.
tkbx

답변:


53

여러 가지 인터리빙 요소가 있습니다.

우선, 2 64 바이트 (16 엑시 바이트)의 물리적 RAM 이있는 시스템을 절대로 조립할 수 없습니다 .

둘째, 아키텍처가 64 비트 포인터를 사용한다고해서 해당 포인터의 모든 비트가 실제로 사용되는 것은 아닙니다. 특히, 현재 x86-64 CPU (일명 AMD64 및 인텔의 현재 64 비트 칩)는 실제로 48 비트 주소 라인 (AMD64) 및 42 비트 주소 라인 (인텔)을 사용합니다 ( http://en.wikipedia.org/wiki 참조) . 이론적으로 256 테라 바이트의 물리적 RAM을 허용합니다 / X86_64 # Virtual_address_space_details ).

둘째, 마더 보드에는 물리적 및 논리적으로 지원할 수있는 RAM 용량에 대한 자체 제한이 있습니다. 실제로는 RAM에 사용할 수있는 슬롯이 너무 많습니다. "논리적"한계에 관해서는, 이것이 왜 x86-64 (메모리 컨트롤러가 CPU 자체로 마이그레이션 된 지 오래 되었음)의 경우인지는 아직 완전히 이해하지 못하지만, 여전히 존재합니다. 아마도 설계 및 제조 비용을 절감하기 위해 주소 라인에서 코너를 절단하고있을 것입니다.

셋째, 운영 체제는 효율적으로 지원할 수있는 RAM의 양에 대한 내부 제한이있을 수 있습니다. 실제로 이것은 실제로 존재하지 않는 메모리의 사용을 추적하기 위해 지나치게 큰 데이터 구조가 필요하지 않도록하기위한 것입니다. 마지막으로 확인한 Linux는 x86-64에서 프로세스 당 128TB의 가상 주소 공간을 허용하며 이론적으로 64TB의 물리적 RAM을 지원할 수 있습니다.

넷째, 일부 운영 체제 (예 : Windows)는 더 많은 RAM을 원할 경우 사용자가 더 비싼 버전으로 업그레이드 할 수있는 전술로 사용할 수있는 RAM의 양을 인위적으로 제한합니다 (Windows 7 Starter는 2GB, Home Basic은 8, Home Premium으로 제한됨) Professional 이상은 192GB이며 Windows Server 릴리스에는 훨씬 더 높은 제한이 있습니다.


1
물리적 주소 라인이 일반적으로 << 64 비트 아키텍처의 주소 레지스터에있는 비트 수라고 언급하면 ​​+1
Paul R

3
(익명 편집으로 추가 된) 42 비트 주소 라인의 소스가 인정 될 것입니다. 그때까지 나는 개인적으로 그 정보를 신뢰할 수 있다고 생각하지 않습니다.
Bob

21
절대 말하지 마 마지막으로 들었던 무어의 법칙은 여전히 ​​유효합니다. 따라서 16 엑사 바이트의 RAM을 가진 시스템은 우리의 생애 안에 나타날 수 있습니다. 그렇다면 모두 128 비트 운영 체제로 옮겨야합니다.
Michael Hampton

물리적 주소는 또한 TLB의 물리적 주소에 제공된 비트 수 (물리적 주소 태깅이 제공되는 캐시 태그의 크기)와 페이지 테이블 항목의 물리적 주소에 사용 가능한 비트 (이에 의해 정의 된 경우)에 의해 제한됩니다. 4KiB 페이지로 52 비트 실제 주소 공간을 지원하는 x86-64와 같은 아키텍처). 후자는 아키텍처 (구현 기반이 아닌) 한계이지만, 아키텍처조차도 변경 될 수 있습니다.
Paul A. Clayton

2
@MichaelHampton-NecroReply, 그러나 저항 할 수는 없습니다 :) 2 년마다 두 배씩 (최근 트렌드보다 빠름) 16GB에서 16EB까지는 60 년이 걸립니다. 그때까지 나는 실리콘 트랜지스터에 관한 "법칙"이 어떤 관련성을 가질 지 의심한다.;)
MatBailie

9

MS Windows를 사용하는 경우 최대 메모리는 운영 체제에 의해 제한됩니다.

Windows 7의 경우 최대 값은 다음과 같습니다.

  • 초보자 : 2GB
  • 홈 기본 : 8GB
  • 홈 프리미엄 : 16GB
  • 전문가 : 192GB
  • 엔터프라이즈 : 192GB
  • 궁극 : 192GB

Windows Server 2008의 범위는 엔트리 레벨의 경우 8GB에서 최상위 라인의 경우 2TB입니다.

전체 목록 은 http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx 를 참조 하십시오 .

이러한 제한은 주로 마케팅상의 이유입니다. 더 저렴한 버전을 제한함으로써 고급 버전 (비교적으로)이 더 매력적입니다.

모든 리눅스가 지원할 수는 없지만 최근 리눅스 빌드는 약 32TB의 RAM에서 작동한다고 생각합니다.


4
그것들은 실제로 기술적 한계가 아닙니다. 이것들은 사업상의 이유로 도입 된 인공적인 한계입니다.
kasperd

8

64 비트 시스템은 최대 2 개의 64 개의 주소 지정 가능 장치 를 처리 할 수 ​​있어야합니다 (지난 수십 년 동안 설계된 아키텍처에서 주소 지정 가능 장치는 바이트, 일명 옥텟). "기가 바이트"를 주소 지정 가능한 단위 2 30 개로 정의하면 2 34 기가 바이트가 같은 수를 나타내는 또 다른 방법입니다.

Google 검색에서 그처럼 우스운 작은 결과가 나왔습니까? 아마 당신이 찾은 페이지가 특정 모델의 상당히 저렴한 박스에서 구매할 수있는 RAM의 양에 대해 이야기했을 수도 있습니다.-매우 비싸지 않은 박스에도 훨씬 더 많은 RAM을 가질 수 있습니다 .

운영 체제는 주소 지정 가능한 메모리의 양을 가장 확실하게 할 수 있고 제한합니다 (예를 들어 페이지 테이블의 크기를 제한하여 구성 할 수 있음). 몇 가지에 집중하지 않고 더 구체적으로 특정의 OS에서의 그룹).


2 ^ 30의 주소 지정 가능 장치가 1GB 인 이유는 무엇입니까? 각 주소 단위는 1 비트를 저장하므로 2 ^ 30 주소 단위는 0.134217728 기가 바이트에 해당하는 많은 비트를 저장합니다. 내가 무엇을 놓치고 있습니까?
Darshan Chaudhary

1
@DarshanChaudhary 2 ^ 30은 고유 주소 수입니다. 각 주소는 1 비트가 아닌 1 바이트의 메모리를 식별합니다.
David Moles

3

원하는만큼의 RAM을 가질 수 있지만 다른 사람이 언급 한 것처럼 운영 체제와 실행중인 응용 프로그램에 따라 다릅니다.

하드 디스크와 같은 다른 하드웨어에도 집중된 굶주린 CPU 집약적 응용 프로그램을 실행하는 경우 완전히 별도의 시스템에서 두 번째 CPU를 진지하게 고려하는 것이 가장 좋습니다. 예를 들어 데이터베이스 응용 프로그램과 전자 메일 서버를 모두 별도의 컴퓨터에서 실행합니다.

얼마나 많은 메모리를 가지고 있는지는 중요하지 않습니다. 오늘날 시장에서는 전체 시스템이 중단됩니다. 단일 CPU는 단순히 멀티 태스킹을 예상 한대로 처리 할 수 ​​없습니다.

메모리가 많은 단일 시스템의 경우 설치된 메모리 양에 관계없이 동일한 시스템에서 여러 응용 프로그램을 실행하는 경우 더 좋지만 훌륭하지는 않습니다. 이것이 바로 대기업이 64 비트 아키텍처를 사용하여 더 많은 메모리를 처리 할뿐만 아니라 두 대 이상의 서버로 전체 부하를 분산시키는 이유입니다.

성능에 대해 진지하게 생각한다면 분명히 64 비트가되지만 두 번째 서버와의 부하 분산을 고려하십시오.

나는 그 길을갔습니다-최대 RAM으로 단일 컴퓨터를 구성했습니다. 그러나 여러 응용 프로그램을 실행할 때 여전히 개처럼 실행됩니다. CPU 자체가 처리 할 수 ​​없기 때문입니다.

내 조언은 당신의 벅을 메모리에 저장하고 두 번째 서버를 구입 한 다음 두 서버를로드 밸런스하는 것입니다. 훨씬 간단 해집니다. 일단 손에 닿으면 더 많은 처리 능력과 속도가 필요할 때 쉽게 확장 할 수 있습니다.

또한 64 비트 아키텍처 시스템은 32 비트 소프트웨어에 대처할 수 있지만 32 비트 시스템에서는 운영 체제를 포함하여 32 비트 이하의 응용 프로그램으로 제한됩니다.

전체 시장이 하드웨어 및 소프트웨어 측면에서 64 비트로 가고 있기 때문에 장기적으로 64 비트로 이동하는 것이 좋지만 실망 할 수 있기 때문에 버킷로드 메모리가있는 단일 시스템으로 모두 스 쿼싱한다는 아이디어는 잊어 버려야합니다.

"로드 밸런싱"이 무엇인지 확실하지 않으면 구글입니다.


2

엑사 바이트 "EB"이상이 필요할 수 있다고 생각합니다.

이 32 비트 프로세서는 2 32 B = 4GB를 사용할 수 있지만 "반복 된 주소의 경우 1GB이므로"최대 3GB가 걸립니다.

즉, 64 비트 프로세서는 2 64 B = 16 EB를 사용할 수 있지만 반전 된 주소가 어떻게 사용되는지는 알 수 없습니다. 따라서 64 비트 프로세서는 1 개 이상의 EB를 사용합니다. 이 사양은 PC가 사용하는 OS 또는 모델에 따라 다릅니다.


1
실제로, 64 비트 프로세서는 일반적으로 48 비트 주소 공간을 가지며 이는 256 테라 바이트 메모리에 충분합니다.
465544

나는 당신에게 평균 생각한다 엑스 비 바이트 가 아닌 엑사 바이트를 .
martineau

1

예를 들어 인텔 또는 AMD CPU를 사용하면 실제 메모리와 가상 메모리 모두에 몇 가지 제한이 있습니다. 다른 사람들은 하드웨어 핀아웃 및 마더 보드 제한 사항에 대해 이야기했지만 내부 제한 사항도 있습니다.

MMU의 터미널 페이지 테이블 항목에는 52 개의 유효 비트의 물리적 주소가 포함되며 이론적으로 최대 4096TB의 물리적 RAM을 매핑 할 수 있습니다.

MMU는 최상위 수준이 512 × 512GB 항목으로 구성된 4 단계 페이지 테이블을 구현합니다. 따라서 가상 메모리는 256TB로 제한됩니다.

내가 아는 한, 모든 64 비트 운영 체제는 DMAP (직접 맵)을 구현하는데 매우 편리합니다. 그러나 가상 메모리는 256TB로 제한되므로 DMAP의 크기도 제한됩니다. 일반적으로 128TB는 사용자 모드 용이며 128TB는 커널 용입니다. 커널에 대한 128TB 중 DMAP에 최대 절반이 예약 될 수 있습니다. DMAP의 유용성으로 인해 운영 체제는 일반적으로 실제 메모리를 DMAP가 처리 할 수있는 것으로 제한합니다.

따라서 지원되는 실제 메모리는 인텔 / AMD 용의 모든 64 비트 운영 체제가 약 64TB로 제한되어 일반 커널 가상 메모리는 64TB, 사용자 가상 메모리는 128TB입니다.

-

CPU 내부에서 CPU 캐시는 또한 저장하는 물리적 주소 비트 수에 제한이 있습니다. 각 추가 주소 비트는 캐시 태그에 더 많은 트랜지스터를 사용하기 때문입니다. 메모리가 DMI 링크를 통해 처리 될 수 있기 때문에 DRAM 컨트롤러 핀 제한이 반드시 최종 단어 일 필요는 없습니다.

다른 CPU 아키텍처 (예 : ARM, PowerPC 등)에는 다른 제한이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.