RAM trong máy tính của tôi có thể chứa được bao nhiêu địa chỉ bộ nhớ?

Jun 18, 2025
Phần cứng

Một ngày nào đó thật thú vị khi xem xét cấp độ bề mặt của trải nghiệm máy tính và những ngày khác, thật thú vị khi đi sâu vào hoạt động bên trong. Hôm nay chúng ta sẽ xem xét cấu trúc của bộ nhớ máy tính và số lượng nội dung bạn có thể đóng gói vào một thanh RAM.

Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Câu hỏi

Trình đọc SuperUser Johan Smohan đang vật lộn với cách loại bộ xử lý và kích thước bộ nhớ hoạt động cùng nhau để mang lại tổng số địa chỉ. Anh ấy viết:

Chúng ta có thể nhận được bao nhiêu địa chỉ bộ nhớ với bộ xử lý 32 bit và ram 1GB và bao nhiêu địa chỉ với bộ xử lý 64 bit?

Tôi nghĩ rằng nó giống như thế này:

1GB ram chia cho 32 bit 4 bit (?) Để được số địa chỉ bộ nhớ?

Tôi đọc trên Wikipedia rằng 1 địa chỉ bộ nhớ rộng 32 bit hoặc 4 octet (1 octet = 8 bit), so với bộ xử lý 64 bit trong đó 1 địa chỉ bộ nhớ hoặc 1 số nguyên có chiều rộng 64 bit hoặc 8 octet. Nhưng tôi cũng không biết mình đã hiểu đúng chưa.

Đây là những loại câu hỏi có thể khiến người xem tò mò vào ban đêm. Có bao nhiêu địa chỉ có sẵn trong mỗi hệ thống giả định của Johan?

Câu trả lời

Người đóng góp cho SuperUser Gronostaj cung cấp một số thông tin chi tiết về cách RAM được phân chia và sử dụng:

Câu trả lời ngắn: Số lượng địa chỉ có sẵn bằng số nhỏ hơn trong số đó:

  • Kích thước bộ nhớ tính bằng byte
  • Số nguyên không dấu lớn nhất có thể được lưu trong từ máy của CPU

Câu trả lời dài và giải thích về những điều trên:

Bộ nhớ bao gồm các byte (B). Mỗi byte bao gồm 8 bit (b).

1 B = 8 b

1 GB RAM thực chất là 1 GiB (gibibyte, không phải gigabyte). Sự khác biệt là:

1 GB = 10 ^ 9 B = 1 000 000 000 B
1 GiB = 2 ^ 30 B = 1 073 741 824 B

Mỗi byte bộ nhớ đều có địa chỉ riêng của nó, bất kể từ máy CPU lớn đến đâu. Ví dụ. CPU Intel 8086 là 16-bit và nó xử lý bộ nhớ theo byte, các CPU 32-bit và 64-bit hiện đại cũng vậy. Đó là nguyên nhân của giới hạn đầu tiên - bạn không thể có nhiều địa chỉ hơn byte bộ nhớ.

Địa chỉ bộ nhớ chỉ là một số byte CPU phải bỏ qua từ đầu bộ nhớ để đến địa chỉ mà nó đang tìm kiếm.

  • Để truy cập byte đầu tiên, nó phải bỏ qua 0 byte, vì vậy địa chỉ của byte đầu tiên là 0.
  • Để truy cập byte thứ hai, nó phải bỏ qua 1 byte, vì vậy địa chỉ của nó là 1.
  • (và kể từ đó trở đi…)
  • Để truy cập byte cuối cùng, CPU bỏ qua 1073741823 byte, vì vậy địa chỉ của nó là 1073741823.

Bây giờ bạn phải biết 32-bit thực sự có nghĩa là gì. Như tôi đã đề cập trước đây, nó có kích thước của một từ máy.

Từ máy là dung lượng bộ nhớ CPU sử dụng để chứa số (trong RAM, bộ nhớ đệm hoặc các thanh ghi bên trong). CPU 32-bit sử dụng 32 bit (4 byte) để giữ số. Địa chỉ bộ nhớ cũng là số, vì vậy trên CPU 32 bit, địa chỉ bộ nhớ bao gồm 32 bit.

Bây giờ hãy nghĩ về điều này: nếu bạn có một bit, bạn có thể lưu hai giá trị trên đó: 0 hoặc 1. Thêm một bit nữa và bạn có bốn giá trị: 0, 1, 2, 3. Trên ba bit, bạn có thể lưu tám giá trị : 0, 1, 2… 6, 7. Đây thực sự là một hệ thống nhị phân và nó hoạt động như vậy:

Thập phân nhị phân
0 0000
1 0001
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

Nó hoạt động chính xác như phép cộng thông thường, nhưng chữ số tối đa là 1, không phải 9. Số thập phân 0 là 0000 , sau đó bạn thêm 1 và nhận được 0001 , thêm một lần nữa và bạn có 0010 . Điều gì đã xảy ra ở đây giống như với số thập phân 09 và thêm một: bạn thay đổi 9 thành 0 và tăng chữ số tiếp theo.

Từ ví dụ trên, bạn có thể thấy rằng luôn có một giá trị lớn nhất mà bạn có thể giữ trong một số với số lượng bit không đổi - bởi vì khi tất cả các bit là 1 và bạn cố gắng tăng giá trị lên 1, tất cả các bit sẽ trở thành 0, do đó phá vỡ con số. Nó được gọi là tràn số nguyên và gây ra nhiều vấn đề khó chịu, cho cả người dùng và nhà phát triển.

11111111 = 255
+ 1
-----------
  100000000 = 0 (9 bit ở đây, vì vậy 1 được cắt bớt)
  • Đối với 1 bit, giá trị lớn nhất là 1,
  • 2 bit - 3,
  • 3 bit - 7,
  • 4 bit - 15

Số lớn nhất có thể luôn là 2 ^ N-1, trong đó N là số bit. Như tôi đã nói trước đây, địa chỉ bộ nhớ là một số và nó cũng có giá trị lớn nhất. Đó là lý do tại sao kích thước từ máy cũng là giới hạn cho số lượng địa chỉ bộ nhớ khả dụng - đôi khi CPU của bạn không thể xử lý các số đủ lớn để giải quyết nhiều bộ nhớ hơn.

Vì vậy, trên 32 bit, bạn có thể giữ các số từ 0 đến 2 ^ 32-1 và đó là 4 294 967 295. Nó không chỉ là địa chỉ lớn nhất trong RAM 1 GB, vì vậy trong trường hợp cụ thể của bạn, dung lượng RAM sẽ là yếu tố giới hạn.

Giới hạn RAM đối với CPU 32 bit về mặt lý thuyết là 4 GB (2 ^ 32) và đối với CPU 64 bit là 16 EB (exabyte, 1 EB = 2 ^ 30 GB). Nói cách khác, CPU 64-bit có thể giải quyết toàn bộ Internet… 200 lần;) (ước tính bởi WolframAlpha ).

Tuy nhiên, trong hệ điều hành đời thực, CPU 32-bit có thể xử lý khoảng 3 GiB RAM. Đó là do kiến ​​trúc bên trong của hệ điều hành - một số địa chỉ được dành riêng cho các mục đích khác. Bạn có thể đọc thêm về cái gọi là 3 GB barrier on Wikipedia . Bạn có thể nâng giới hạn này với Phần mở rộng địa chỉ vật lý .

Nói về địa chỉ bộ nhớ, có một số điều tôi nên đề cập: bộ nhớ ảo , phân đoạn phân trang .

Bộ nhớ ảo

Như @Daniel R Hicks đã chỉ ra trong một câu trả lời khác, hệ điều hành sử dụng bộ nhớ ảo. Điều đó có nghĩa là các ứng dụng thực sự không hoạt động trên các địa chỉ bộ nhớ thực, mà là các địa chỉ do OS cung cấp.

Kỹ thuật này cho phép hệ điều hành di chuyển một số dữ liệu từ RAM sang cái gọi là Pagefile (Windows) hoặc Swap (* NIX). Ổ cứng HDD chậm hơn RAM vài lần, nhưng đó không phải là vấn đề nghiêm trọng đối với dữ liệu hiếm khi được truy cập và nó cho phép Hệ điều hành cung cấp cho các ứng dụng nhiều RAM hơn so với thực tế bạn đã cài đặt.

Phân trang

Những gì chúng ta đã nói đến cho đến nay được gọi là lược đồ địa chỉ phẳng.

Phân trang là một lược đồ địa chỉ thay thế cho phép giải quyết nhiều bộ nhớ hơn mà bạn thường có thể làm với một từ máy trong mô hình phẳng.

Hãy tưởng tượng một cuốn sách chứa đầy các từ gồm 4 chữ cái. Giả sử có 1024 số trên mỗi trang. Để nói một số, bạn phải biết hai điều:

  • Số trang mà từ đó được in.
  • Từ nào trên trang đó là từ bạn đang tìm kiếm.

Now that’s exactly how modern x86 CPUs handle memory. It’s divided into 4 KiB pages (1024 machine words each) and those pages have numbers. (actually pages can also be 4 MiB big or 2 MiB with PAE ). Khi bạn muốn định địa chỉ ô nhớ, bạn cần số trang và địa chỉ trong trang đó. Lưu ý rằng mỗi ô nhớ được tham chiếu bởi chính xác một cặp số, điều đó sẽ không đúng với trường hợp phân đoạn.

Phân đoạn

Chà, cái này khá giống với phân trang. Nó đã được sử dụng trong Intel 8086, chỉ để nêu tên một ví dụ. Các nhóm địa chỉ bây giờ được gọi là phân đoạn bộ nhớ, không phải trang. Sự khác biệt là các phân đoạn có thể chồng chéo và chúng chồng chéo lên nhau rất nhiều. Ví dụ trên 8086 hầu hết các ô nhớ có sẵn từ 4096 phân đoạn khác nhau.

Một ví dụ:

Giả sử chúng ta có 8 byte bộ nhớ, tất cả đều chứa các số không ngoại trừ byte thứ 4 bằng 255.

Hình minh họa cho mô hình bộ nhớ phẳng:

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

Hình minh họa cho bộ nhớ được phân trang với các trang 4 byte:

TRANG0
 _____
| 0 |
| 0 |
| 0 | TRANG1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

Hình minh họa cho bộ nhớ được phân đoạn với các phân đoạn 4 byte được dịch chuyển bằng 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 |
                                 ----- ----- ----- -----

As you can see, 4th byte can be addressed in four ways: (addressing from 0)

  • Segment 0, offset 3
  • Phân đoạn 1, phần bù 2
  • Phân đoạn 2, phần bù 1
  • Phân đoạn 3, phần bù 0

Nó luôn là cùng một ô nhớ.

Trong việc triển khai thực tế, các phân đoạn được dịch chuyển nhiều hơn 1 byte (đối với 8086 là 16 byte).

Điều không tốt về phân đoạn là nó phức tạp (nhưng tôi nghĩ bạn đã biết điều đó;) Điều tốt là bạn có thể sử dụng một số kỹ thuật thông minh để tạo các chương trình mô-đun.

Ví dụ: bạn có thể tải một số mô-đun vào một phân đoạn, sau đó giả sử phân đoạn đó nhỏ hơn thực tế (chỉ đủ nhỏ để chứa mô-đun), sau đó chọn phân đoạn đầu tiên không trùng lặp với phân đoạn giả nhỏ hơn đó và tải tiếp theo mô-đun, v.v. Về cơ bản, những gì bạn nhận được theo cách này là các trang có kích thước thay đổi.


Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các bình luận. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chuỗi thảo luận tại đây .

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


Phần cứng - Các bài báo phổ biến nhất

Intel Macs và Apple Silicon ARM Macs: Bạn nên mua cái nào?

Phần cứng Aug 13, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Apple Những luồng gió thay đổi đang thổi tới Apple. Công ty thông báo rằng họ có ý định chu..


Bạn Nên Làm Gì Với Tất Cả Các Thiết Bị Smarthome Khi Di Chuyển?

Phần cứng Mar 26, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Bạn đã trang trí cho ngôi nhà của mình tất cả các sản phẩm nhà thông minh thú vị nhất và bây giờ bạn đang ..


Làm thế nào để không làm rơi điện thoại của bạn

Phần cứng Mar 12, 2025

Kính đã trở lại, con yêu. Và kính là trở lại cho mặt sau. Hầu hết các điện thoại cao cấp mới trong năm nay — như iPhone X và Galaxy S9, đều c�..


Các công cụ trực tuyến tốt nhất để giúp bạn xây dựng máy tính tiếp theo của mình

Phần cứng Nov 8, 2024

Tạo máy tính để bàn của riêng bạn không khó như vẻ ngoài — nó thường được gọi là “LEGO cho người lớn”. Và mặc dù cụm từ đó có th�..


PSA: Không tắt máy tính của bạn, chỉ sử dụng chế độ ngủ (hoặc Ngủ đông)

Phần cứng Jul 5, 2025

Trong thời đại ngày nay, không có lý do gì để tắt máy tính của bạn, sau đó bắt đầu quá trình khởi động khi bạn muốn sử dụng nó. Tiết ki..


Tại sao các thiết bị tương tự lại sử dụng cáp chéo thay vì cáp thẳng?

Phần cứng Apr 14, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Khi liên kết các thiết bị tương tự với nhau, bạn có thể thắc mắc tại sao lại sử dụng một loại cáp cụ ..


Cách chọn Hộp thư nào Hiển thị trên Apple Watch của bạn

Phần cứng Mar 10, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Ứng dụng Thư trên Apple Watch của bạn giúp bạn có thể xem email và thậm chí trả lời một số email. Tuy nhiên, n..


Cách xóa CMOS của máy tính để đặt lại cài đặt BIOS

Phần cứng Jul 3, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Máy tính của bạn lưu trữ các cài đặt cấp thấp như thời gian hệ thống và cài đặt phần cứng trong CMOS củ..


Thể loại