Câu hỏi chính: Thuật ngữ chính xác cho khối bộ nhớ địa chỉ nhỏ nhất là gì?
Tôi sẽ thêm một câu trả lời khác để giải quyết vấn đề đó theo một cách khác. Trong phần cứng điện tử, chúng tôi gọi nó là bit - chữ số nhị phân. Đó là một thực thể có thể đại diện cho bất kỳ hai giá trị. Chúng ta thường nghĩ theo 0 và 1, nhưng nó có thể là 3 hoặc 4, 365 hoặc 266, -3 hoặc -4, thậm chí 25 hoặc 37.
Bất kỳ hệ thống tín hiệu nào cũng có thể được sử dụng để thể hiện các giá trị này - cờ lên, cờ xuống, mắt mở, mắt nhắm, + 5v, -5v. Điều đó không quan trọng.
Điều quan trọng là về mặt triết học, chúng tôi đang đại diện cho lượng thông tin phân biệt nhỏ nhất. Điều này có thể là bật, tắt hoặc đúng, sai, hoặc lên, xuống hoặc 0, 1 - bất cứ điều gì phân biệt hai trạng thái riêng biệt. Chúng ta có thể ánh xạ các giá trị này lên bất kỳ hệ thống tín hiệu nào ở trên và nhiều hệ thống khác.
Bây giờ câu hỏi là, làm thế nào chúng ta có thể kiểm tra và thiết lập một lượng nhỏ thông tin riêng lẻ như vậy? Như tôi đã nói trong câu trả lời trước, B1700 đã chọn giải quyết trực tiếp lượng thông tin nhỏ nhất đó.
Tuy nhiên, hầu hết các máy quyết định chỉ giải quyết lượng thông tin lớn hơn. Hãy xem xét một nhóm bốn bit với một địa chỉ. Vì vậy, nếu chúng tôi nhận được giá trị 1011 ở vị trí của mình, làm thế nào để chúng tôi kiểm tra bit thứ hai từ bên trái. Chúng tôi sử dụng mặt nạ: 1011 và 0100 thử nghiệm chỉ là bit thứ hai. Vậy làm thế nào để chúng ta thiết lập bit thứ hai thành 1? Một số học CPU nhỏ cho biết giá trị sẽ là 15 hoặc 1111, do đó toàn bộ bốn bit được ghi lại vào bộ nhớ, mặc dù chúng tôi thực sự chỉ đặt một bit.
Bây giờ điều này không hữu ích cho hầu hết các ứng dụng. Hầu hết các ứng dụng đại diện cho dữ liệu hoặc thông tin, lên, xuống, đúng, sai, mở, đóng.
Chúng tôi muốn nói những điều như:
nếu mở thì ... khác ... kết thúc
hoặc nhiều khả năng áp dụng điều đó cho một thực thể lớn hơn:
nếu cánh cửa đang mở thì - rất có thể là 'door.open' ... khác ... kết thúc
"Cửa đang mở" minh họa địa chỉ phân cấp. Địa chỉ hệ thống chính cung cấp cho cửa thực thể và cửa có địa chỉ riêng cho phép truy cập để mở (và có thể các thuộc tính khác).
Hầu hết các tập hợp cũng có nhiều hơn hai giá trị có thể (một tập hợp có một giá trị không bao giờ thay đổi và do đó thậm chí không cần biểu diễn, vì vậy các bit bằng 0). Đối với những điều này, chúng tôi đã liệt kê các bộ, như (vàng, xanh lá cây, xanh dương, tím, đỏ). Chúng xác định các bộ và loại và số bit chính xác được yêu cầu được cho bởi số lượng giá trị (log2 (số giá trị)).
Do đó, địa chỉ tối ưu thực sự phụ thuộc vào kích thước thực thể được sử dụng trong ứng dụng - thậm chí có thể là các thực thể có kích thước thay đổi. Nhưng trong hầu hết các phần cứng, các địa chỉ như vậy phải được dịch sang kích thước cố định mà phần cứng xác định. Điều này tất nhiên có thể chi phí về thời gian. Nó cũng phải là thứ mà trình dịch tự động thực hiện (trình biên dịch hoặc trình thông dịch), không phải là lập trình viên, giống như một hệ thống như vậy sẽ tạo mã để kiểm tra và đặt bit như trên (nếu bit không thể định địa chỉ trực tiếp).
Một điểm quan trọng ở đây là không nghĩ về mặt điện tử - điện tử chỉ là một cách tính toán thực sự tốt và nhanh chóng. Không có gì kỳ diệu về tính toán điện tử cho phép thực hiện các tính toán mà bạn không thể làm khác được. Phép thuật chỉ ở tốc độ. Đó là lý do tại sao các khái niệm trừu tượng ở mức độ thấp như bit, byte, word hoặc cơ chế đánh địa chỉ phần cứng (con trỏ) thực sự không hữu ích.