Độ 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 và 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.