Là kích thước của một địa chỉ bộ nhớ và kích thước của bus địa chỉ liên quan?


4

Câu hỏi của tôi là về mối quan hệ giữa kích thước của địa chỉ thực / vật lý và kích thước của bus địa chỉ.

  1. Nếu tôi hiểu chính xác, kích thước địa chỉ thực / vật lý được xác định trong quá trình thiết kế kiến ​​trúc máy tính.
  2. Phải có kích thước của bus địa chỉ giống với số bit trong một địa chỉ? Nếu không, điều đó có nghĩa là một địa chỉ vật lý phải được truyền qua một bus địa chỉ nhỏ hơn một lần?

chú thích

  • Tôi không nói về kích thước từ (tức là kích thước CPU có thể xử lý cùng một lúc), có thể khác với cả kích thước địa chỉ thực / vật lý và kích thước bus địa chỉ.
  • Tôi không nói về việc sử dụng phân đoạn và địa chỉ offset để thể hiện một địa chỉ vật lý.

Câu trả lời:


3

Độ rộng bit của bus địa chỉ vật lý có thể nhiều hơn hoặc ít hơn chiều rộng bit trong một địa chỉ bộ nhớ cụ thể, vì có tất cả các loại hack phần cứng bạn có thể thiết kế thành một hệ thống để cho phép các chế độ địa chỉ lạ. Ví dụ: trong một số hệ thống 32 bit, bus địa chỉ rộng 52 bit. Một ví dụ khác, một số lệnh CPU có thể giải mã một địa chỉ dài hơn bằng cách sử dụng kết hợp địa chỉ cơ sở và bảng tra cứu.

Vào cuối ngày, công việc của phần cứng là giải thích địa chỉ bộ nhớ từ CPU. CPU chỉ tính toán địa chỉ bộ nhớ cần thiết và gửi nó đến bộ điều khiển bộ nhớ của bo mạch chủ (hãy nhớ rằng chúng ta đang nói về phần cứng, không phải phần mềm ở đây, xem ghi chú cuối cùng của tôi ở phía dưới). Công việc của bộ điều khiển bộ nhớ là diễn giải địa chỉ đó và đưa dữ liệu phù hợp lên bus bộ nhớ.

Vì tất cả được xử lý ở mức phần cứng, nên bạn thực sự có thể tăng không gian địa chỉ vật lý của một số hệ thống bộ nhớ bit thấp hơn bằng cách sử dụng phần mở rộng địa chỉ vật lý . Một lần nữa, cách xử lý các địa chỉ mở rộng này là một phần trong cách hệ thống / phần cứng được triển khai.

Cuối cùng, để có thêm một số công đức cho các bản hack phần cứng mà tôi đã đề cập ở trên, một ví dụ điển hình là đầu vào / đầu ra được ánh xạ bộ nhớ (viết tắt là MMIO). Điều này cho phép CPU truy cập cả thiết bị ngoại vi RAM thông qua chính bus địa chỉ. Thông thường điều này được thực hiện mặc dù các địa chỉ bộ nhớ bậc cao hơn để tránh xung đột địa chỉ bậc thấp hơn. Tuy nhiên, điều này đã dẫn đến Rào chắn bộ nhớ 3 GB thường được biết đến trong tất cả các biến thể tiêu dùng của hệ điều hành Windows 32 bit. Một lần nữa, đây chỉ là để cho bạn thấy những gì có thể ở cấp độ phần cứng.


Từ quan điểm của một lập trình viên cấp cao, điều này không liên quan gì đến các biến con trỏ. Chúng luôn có cùng kích thước dữ liệu, vì các phần mở rộng địa chỉ này được xử lý cho bạn bởi hệ điều hành và / hoặc chính phần cứng. Kích thước con trỏ, địa chỉ và độ lệch được thiết lập / tính toán bởi trình biên dịch.


Cảm ơn! (1) trong đoạn cuối của bạn, sự khác biệt giữa "biến con trỏ" và "kích thước con trỏ" là gì? Bạn đã đề cập họ được xử lý ở các cấp độ khác nhau. (2) Tôi tự hỏi bạn học những điều này ở đâu? Có tài liệu tham khảo như sách giáo khoa, trang web?
Tim

(3) Phải truyền một địa chỉ vật lý qua một bus địa chỉ nhỏ hơn một lần?
Tim

Tôi đã học được rất nhiều điều này từ cả trường học và tự học (tôi chưa bao giờ đọc nó, nhưng tôi nghe nói đây là một tài nguyên tuyệt vời ). Nếu bạn cần một từ điển kỹ thuật nhanh chóng nhưng tiên tiến, hãy kiểm tra điều này . Ngoài ra, nếu bạn tò mò về bất cứ điều gì, Google sẽ đưa bạn đến những địa điểm kỳ lạ trên internet mà bạn chưa từng biết tồn tại;)
Đột phá

(1) Một biến con trỏ biểu thị một địa chỉ bộ nhớ cho một kiểu dữ liệu tùy ý (được gọi là loại của con trỏ). Kích thước con trỏ thường có cùng kích thước (tính bằng byte) trên bất kỳ hệ thống nào, bất kể kích thước của loại dữ liệu cơ bản, vì nó chỉ đại diện cho một địa chỉ bộ nhớ. (2) Tìm hiểu lắp ráp trên một bộ điều khiển vi mô, nó sẽ dạy cho bạn nhiều hơn sau đó bạn muốn biết về một máy tính. Tôi đã học được hầu hết những điều này từ khóa học vi xử lý và máy vi tính của mình (chúng tôi đã sử dụng Motorola 68HC12).
Đột phá

1
@Tim xin lỗi để tiếp tục gửi thư rác cho bạn bằng các bình luận, nhưng đây là hướng dẫn tham khảo cho vi điều khiển mà tôi đã đề cập. Nó đi qua rất nhiều thông tin hữu ích liên quan đến cách trình bày bộ xử lý, cách giải quyết mọi thứ, v.v. Tôi sẽ thừa nhận, mặc dù nó giúp biết một số điều về vi điều khiển hoặc ngôn ngữ lắp ráp trước khi bắt đầu đọc nó, mặc dù bạn có thể có thể học khi bạn đi qua nó
Đột phá

1

Một điều cần hiểu là tất cả các máy tính hiện đại lớn hơn đều được ánh xạ bộ nhớ. Chương trình "không gian địa chỉ" (về cơ bản được xác định bởi kích thước của một con trỏ) có thể lớn hơn hoặc nhỏ hơn không gian địa chỉ vật lý (được xác định bởi lượng RAM có thể được xử lý). Ở giữa ngồi một hoặc một vài lớp logic ánh xạ địa chỉ chuyển đổi từ địa chỉ "logic" sang địa chỉ "vật lý". Điều này hỗ trợ "phân trang" bộ nhớ ảo (trong đó một trang bộ nhớ cụ thể có thể được "phân trang" vào ổ đĩa khi nó không được tham chiếu gần đây) và nó cũng hỗ trợ cho phép nhiều tiến trình / tác vụ có "không gian địa chỉ" riêng.

Ngoài các phần trên (và đặc biệt là trên các bộ vi xử lý có chân bị giới hạn), địa chỉ "bus" chạy ra khỏi bộ xử lý đến ngân hàng bộ nhớ có thể được "ghép" sao cho các địa chỉ được gửi theo hai chu kỳ riêng biệt, đầu tiên là nửa cao , ví dụ, sau đó là một nửa thấp. Trong thực tế, một số mô-đun bộ nhớ được xây dựng với ý tưởng này, vì chúng cũng có các địa chỉ "ghép kênh".


1
Bộ nhớ ảo (và phân trang) được hệ điều hành triển khai trong phần mềm và độc lập với cách phần cứng thực hiện các bản dịch địa chỉ logic / vật lý.
Đột phá

1
Được triển khai trong HĐH, có, nhưng khác xa với cơ chế dịch địa chỉ. Tối thiểu, bạn không thể có bộ nhớ ảo và phân trang mà không có một số loại cơ chế dịch địa chỉ và cơ chế này quy định kích thước trang và một số thuộc tính khác của mô hình bộ nhớ.
Daniel R Hicks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.