내 컴퓨터의 RAM은 몇 개의 메모리 주소를 보유 할 수 있습니까?

Jun 18, 2025
하드웨어

언젠가는 컴퓨팅 경험의 표면 수준을 보는 것이 재미 있고, 어떤 때는 내부 작업을 바로 파헤치는 것이 즐겁습니다. 오늘 우리는 컴퓨터 메모리의 구조와 RAM에 얼마나 많은 것을 담을 수 있는지 살펴 보겠습니다.

오늘의 질문 및 답변 세션은 커뮤니티 중심의 Q & A 웹 사이트 그룹 인 Stack Exchange의 하위 부문 인 SuperUser가 제공 한 것입니다.

질문

수퍼 유저 독자 인 Johan Smohan은 총 주소 수를 산출하기 위해 프로세서 유형과 메모리 크기가 어떻게 함께 작동하는지 고민하고 있습니다. 그는 다음과 같이 씁니다.

32 비트 프로세서와 1GB 램에서 얻을 수있는 메모리 주소는 몇 개이고 64 비트 프로세서에서는 몇 개입니까?

다음과 같은 것 같습니다.

1GB의 램을 32 비트 4 비트 (?)로 나누어 메모리 주소 수를 구 하시겠습니까?

1 개의 메모리 주소 또는 1 개의 정수가 64 비트 또는 8 옥텟 인 64 비트 프로세서와 비교하여 1 개의 메모리 주소가 32 비트 너비 또는 4 옥텟 (1 옥텟 = 8 비트)이라고 Wikipedia에서 읽었습니다. 하지만 내가 제대로 이해 했는지도 모르겠습니다.

이것들은 밤에 호기심 많은 괴짜를 유지할 수있는 종류의 질문입니다. Johan의 가상 시스템에서 사용할 수있는 주소는 몇 개입니까?

대답

수퍼 유저 기여자 인 Gronostaj는 RAM이 어떻게 분할되고 활용되는지에 대한 통찰력을 제공합니다.

짧은 답변: 사용 가능한 주소의 수는 다음 중 더 작은 수와 같습니다.

  • 메모리 크기 (바이트)
  • CPU의 기계어에 저장할 수있는 가장 큰 부호없는 정수

위 내용에 대한 긴 답변 및 설명 :

메모리는 바이트 (B)로 구성됩니다. 각 바이트는 8 비트 (b)로 구성됩니다.

1B = 8b

1GB RAM은 실제로 1GiB (기가 바이트가 아닌 기가 바이트)입니다. 차이점은 다음과 같습니다.

1GB = 10 ^ 9 B = 1,000,000,000B
1GiB = 2 ^ 30 B = 1073741824B

모든 메모리 바이트는 CPU 머신 워드의 크기에 관계없이 자체 주소를 가지고 있습니다. 예 : Intel 8086 CPU는 16 비트 였고 메모리 주소를 바이트 단위로 지정 했으므로 최신 32 비트 및 64 비트 CPU도 마찬가지입니다. 이것이 첫 번째 제한의 원인입니다. 메모리 바이트보다 더 많은 주소를 가질 수 없습니다.

메모리 주소는 CPU가 찾고있는 주소에 도달하기 위해 메모리의 시작 부분에서 건너 뛰어야하는 바이트 수입니다.

  • 첫 번째 바이트에 액세스하려면 0 바이트를 건너 뛰어야하므로 첫 번째 바이트의 주소는 0입니다.
  • 두 번째 바이트에 액세스하려면 1 바이트를 건너 뛰어야하므로 주소는 1입니다.
  • (기타 등등…)
  • 마지막 바이트에 액세스하기 위해 CPU는 1073741823 바이트를 건너 뛰므로 주소는 1073741823입니다.

이제 32 비트가 실제로 무엇을 의미하는지 알아야합니다. 앞서 언급했듯이 그것은 기계어의 크기입니다.

머신 워드는 CPU가 숫자 (RAM, 캐시 또는 내부 레지스터)를 저장하는 데 사용하는 메모리 양입니다. 32 비트 CPU는 32 비트 (4 바이트)를 사용하여 숫자를 저장합니다. 메모리 주소도 숫자이므로 32 비트 CPU에서 메모리 주소는 32 비트로 구성됩니다.

이제 이것에 대해 생각해보십시오. 만약 당신이 하나의 비트를 가지고 있다면 두 개의 값을 저장할 수 있습니다 : 0 또는 1입니다. 하나의 비트를 더 추가하고 4 개의 값을 갖게됩니다 : 0, 1, 2, 3. 3 개의 비트에 8 개의 값을 저장할 수 있습니다. : 0, 1, 2… 6, 7. 이것은 실제로 바이너리 시스템이며 다음과 같이 작동합니다.

이진 십진수
0 0000
10001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

일반적인 덧셈과 똑같이 작동하지만 최대 숫자는 9가 아니라 1입니다. 십진수 0은 0000 , 그런 다음 1을 더하고 0001 , 다시 한 번 추가하면 0010 . 여기서 일어난 일은 십진수를 갖는 것과 같습니다. 09 그리고 하나 더하기 : 9를 0으로 변경하고 다음 숫자를 증가시킵니다.

위의 예에서 항상 비트 수가 일정한 숫자에 유지할 수있는 최대 값이 있음을 알 수 있습니다. 모든 비트가 1이고 값을 1 씩 늘리려 고하면 모든 비트가 0이되어 번호. 정수 오버플로라고하며 사용자와 개발자 모두에게 많은 불쾌한 문제를 일으 킵니다.

11111111 = 255
+ 1
-----------
  100000000 = 0 (여기서는 9 비트이므로 1이 잘림)
  • 1 비트의 경우 가장 큰 값은 1입니다.
  • 2 비트 – 3,
  • 3 비트 – 7
  • 4 비트 – 15

가능한 가장 큰 수는 항상 2 ^ N-1이며, 여기서 N은 비트 수입니다. 앞서 말했듯이 메모리 주소는 숫자이며 최대 값도 있습니다. 그렇기 때문에 기계어의 크기가 사용 가능한 메모리 주소 수의 제한이기도합니다. 때로는 CPU가 더 많은 메모리를 처리 할만큼 큰 숫자를 처리하지 못하는 경우도 있습니다.

따라서 32 비트에서는 0에서 2 ^ 32-1까지의 숫자를 유지할 수 있습니다. 이는 4 294 967 295입니다. 1GB RAM에서 가장 큰 주소보다 많으므로 특정 경우에 RAM의 양이 제한 요소가됩니다.

32 비트 CPU의 RAM 제한은 이론적으로 4GB (2 ^ 32)이고 64 비트 CPU의 경우 16EB (엑사 바이트, 1EB = 2 ^ 30GB)입니다. 즉, 64 비트 CPU는 전체 인터넷을 200 번 처리 할 수 ​​있습니다. WolframAlpha ).

그러나 실제 운영 체제에서 32 비트 CPU는 약 3GiB의 RAM을 처리 할 수 ​​있습니다. 이는 운영 체제의 내부 아키텍처 때문입니다. 일부 주소는 다른 용도로 예약되어 있습니다. 이것에 대해 더 많이 읽을 수 있습니다. Wikipedia의 3GB 장벽 . 이 제한을 해제 할 수 있습니다. 물리적 주소 확장 .

메모리 주소 지정에 대해 언급해야 할 사항이 몇 가지 있습니다. 가상 메모리 , 분할 페이징 .

가상 메모리

@Daniel R Hicks가 다른 답변에서 지적했듯이 OS는 가상 메모리를 사용합니다. 의미하는 바는 응용 프로그램이 실제로 실제 메모리 주소에서 작동하지 않고 OS에서 제공하는 주소에서 작동한다는 것입니다.

이 기술을 사용하면 운영 체제가 일부 데이터를 RAM에서 소위 페이지 파일 (Windows) 또는 스왑 (* NIX)으로 이동할 수 있습니다. HDD는 RAM보다 약간 느리지 만 거의 액세스하지 않는 데이터에 대해서는 심각한 문제가 아니며 OS에서 실제로 설치 한 것보다 더 많은 RAM을 애플리케이션에 제공 할 수 있습니다.

페이징

지금까지 얘기 한 것은 플랫 주소 지정 방식입니다.

페이징은 플랫 모델에서 하나의 기계어로 일반적으로 할 수있는 더 많은 메모리를 주소 지정하는 대체 주소 지정 체계입니다.

4 글자 단어로 가득 찬 책을 상상해보십시오. 각 페이지에 1024 개의 숫자가 있다고 가정 해 보겠습니다. 번호를 지정하려면 두 가지를 알아야합니다.

  • 해당 단어가 인쇄 된 페이지 수입니다.
  • 해당 페이지에서 찾고있는 단어는 무엇입니까?

이것이 바로 최신 x86 CPU가 메모리를 처리하는 방법입니다. 4KiB 페이지 (각각 1024 개의 기계어)로 나뉘며 페이지에는 숫자가 있습니다. (실제로 페이지는 4MiB 또는 2MiB 일 수 있습니다. PAE ). 메모리 셀의 주소를 지정하려면 해당 페이지의 페이지 번호와 주소가 필요합니다. 각 메모리 셀은 정확히 한 쌍의 숫자로 참조되며 분할의 경우에는 해당되지 않습니다.

분할

음, 이것은 페이징과 매우 유사합니다. 한 가지 예를 들기 위해 Intel 8086에서 사용되었습니다. 이제 주소 그룹을 페이지가 아닌 메모리 세그먼트라고합니다. 차이점은 세그먼트가 겹칠 수 있고 많이 겹칠 수 있다는 것입니다. 예를 들어 8086에서 대부분의 메모리 셀은 4096 개의 서로 다른 세그먼트에서 사용 가능했습니다.

예 :

255와 같은 4 번째 바이트를 제외하고 모두 0을 유지하는 8 바이트의 메모리가 있다고 가정 해 보겠습니다.

플랫 메모리 모델의 그림 :

_____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

페이징 된 메모리에 대한 그림 4 바이트 페이지 :

PAGE0
 _____
| 0 |
| 0 |
| 0 | 페이지 1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

세그먼트 메모리에 대한 그림 4 바이트 세그먼트가 1만큼 이동합니다.

SEG 0
 _____ SEG 1
| 0 | _____ SEG 2
| 0 | | 0 | _____ SEG 3
| 0 | | 0 | | 0 | _____ SEG 4
| 255 | | 255 | | 255 | | 255 | _____ SEG 5
 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6
         ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7
                 ----- | 0 | | 0 | | 0 | | 0 | _____
                         ----- | 0 | | 0 | | 0 | | 0 |
                                 ----- ----- ----- -----

보시다시피 4 번째 바이트는 다음 네 가지 방법으로 주소 지정 될 수 있습니다. (0부터 주소 지정)

  • 세그먼트 0, 오프셋 3
  • 세그먼트 1, 오프셋 2
  • 세그먼트 2, 오프셋 1
  • 세그먼트 3, 오프셋 0

항상 같은 메모리 셀입니다.

실제 구현에서 세그먼트는 1 바이트 이상 이동합니다 (8086의 경우 16 바이트).

세분화의 단점은 복잡하다는 것입니다 (하지만 이미 알고 계신 것 같습니다.). 좋은 점은 몇 가지 영리한 기술을 사용하여 모듈 식 프로그램을 만들 수 있다는 것입니다.

예를 들어, 일부 모듈을 세그먼트에로드 한 다음 세그먼트가 실제보다 작은 척 (모듈을 보유 할 수있을만큼 작음) 한 다음, 더 작은 가상 세그먼트와 겹치지 않는 첫 번째 세그먼트를 선택하고 다음에로드 할 수 있습니다. 모듈 등. 기본적으로 이런 식으로 얻는 것은 다양한 크기의 페이지입니다.


설명에 추가 할 것이 있습니까? 댓글에서 소리를 내세요. 기술에 정통한 다른 Stack Exchange 사용자의 답변을 더 읽고 싶으신가요? 여기에서 전체 토론 스레드를 확인하십시오. .

How Many Memory Addresses Can We Get With A 32-bit Processor And 1gb Ram? (5 Solutions!!)

Memory Addresses, Computer Science Lecture | Sabaq.pk |

Q. 7.8: (a) How Many 32K * 8 RAM Chips Are Needed To Provide A Memory Capacity Of 256Kbytes? (b) How

How Computer Memory Works - Kanawat Senanan

Assembly Program - Obtaining Memory Addresses

What Is Virtual Memory? – Gary Explains

The Fetch-Execute Cycle: What's Your Computer Actually Doing?

256KB Memory Design Using 64KB Ram Blocks-Microprocessors Example

How Much RAM Do You ACTUALLY Need? (2020)

Registers And RAM: Crash Course Computer Science #6

Lesson 9.3 : Pointers Containing Memory Addresses Of Multi Byte Variables


하드웨어 - 가장 인기있는 기사

PlayStation 5 vs. Xbox Series X : 무엇을 구입해야합니까?

하드웨어 Sep 18, 2025

캐치되지 않은 콘텐츠 Barone Firenze / Shutterstock.com 소니와 마이크로 소프트가 올 11 월 PlayStation 5와 Xbox Series X�..


PC에서 새 그래픽 카드를 업그레이드하고 설치하는 방법

하드웨어 Mar 15, 2025

캐치되지 않은 콘텐츠 데스크탑 PC의 그래픽 카드를 업그레이드하면 게임 성능이 크게 향상 될 수 있습니다. 또한 매우 쉽게 할 수 있습..


Android 휴대폰에서 누락 된 앱을 Wear Watch로 가져 오는 방법

하드웨어 Mar 14, 2025

캐치되지 않은 콘텐츠 Android Wear 2.0에서 휴대 전화의 앱이 더 이상 시계와 자동으로 동기화되지 않습니다. 하지만 Wear에서 사용할 수있�..


무선 충전이 유선 충전보다 느립니까?

하드웨어 Dec 4, 2024

캐치되지 않은 콘텐츠 Apple이 iPhone 8, 8 Plus 및 X로 무선 충전을 다시 멋지게 만들고 있습니다. 기뻐요! 하지만이 기술에 대해 알아야 할 �..


iTunes에서 "iPhone이 감지되었지만 식별 할 수 없음"오류를 수정하는 방법

하드웨어 Dec 16, 2024

iPhone 또는 iOS 기기가 Windows와 연결이 불안정하면 약간 실망 스러울 것입니다. 그러나 약간의 문제 해결을 통해 감지되었지만 식별되지 �..


Android 장치를 파일 탐색기에 표시하는 방법 (아직없는 경우)

하드웨어 Jul 3, 2025

Android 휴대 전화를 사용하여 음악을 듣고, 동영상을보고, 사진을 찍을 수 있지만 이러한 파일을 기기에서 켜거나 끄려면 데스크톱 PC에 �..


Electronics Tinkering 시작하기 : 쇼핑 목록

하드웨어 Feb 11, 2025

캐치되지 않은 콘텐츠 전자 제품 땜질 취미를 시작하는 데 관심이 있다면이 세부 목록 (필요한 이유 및 최상의 가치를 얻는 방법 포함)이 훌..


HDMI와 DVI의 차이점은 무엇입니까? 어떤게 더 좋아?

하드웨어 Jul 3, 2025

오늘날 사용 가능한 비디오 케이블의 폭격에 혼란 스럽습니까? 오늘 가장 중요한 비디오 케이블을 살펴 보겠습니다. HDMI 및 DV..


카테고리