Pertanyaan utama: Apa istilah yang tepat untuk blok memori terkecil yang dapat dialamatkan?
Saya akan menambahkan jawaban lain untuk mengatasinya dengan cara yang berbeda. Dalam perangkat keras elektronik, kami menyebutnya bit - binary digit. Itu adalah entitas yang dapat mewakili dua nilai. Kami biasanya berpikir dalam istilah 0 dan 1, tetapi bisa 3 atau 4, 365 atau 266, -3 atau -4, bahkan 25 atau 37.
Sistem pensinyalan apa pun dapat digunakan untuk merepresentasikan nilai-nilai ini - flag atas, flag bawah, mata terbuka, mata tertutup, + 5v, -5v. Itu tidak penting.
Yang penting adalah bahwa secara filosofis kami mewakili jumlah informasi terkecil yang dapat dibedakan. Ini bisa hidup, mati, atau benar, salah, atau naik, turun, atau 0, 1 - apa pun yang membedakan dua keadaan terpisah. Kami dapat memetakan nilai-nilai ini ke salah satu sistem pensinyalan di atas dan banyak lainnya.
Sekarang pertanyaannya adalah, bagaimana kita dapat menguji dan mengatur sejumlah kecil informasi secara individual? Seperti yang saya katakan di jawaban sebelumnya, B1700 memilih untuk menangani informasi sekecil itu secara langsung.
Namun, sebagian besar mesin memutuskan untuk hanya menangani sejumlah besar informasi. Mari kita pertimbangkan sekelompok empat bit dengan satu alamat. Jadi jika kita mendapatkan nilai 1011 di lokasi kita, bagaimana kita menguji bit kedua dari kiri. Kami menggunakan masker: tes 1011 dan 0100 hanya bit kedua. Jadi bagaimana kita mengatur bit kedua ke 1? Sebuah aritmatika CPU kecil mengatakan nilainya akan 15 atau 1111, sehingga seluruh empat bit ditulis kembali ke memori, meskipun kita hanya benar-benar menetapkan satu bit.
Sekarang ini tidak berguna untuk sebagian besar aplikasi. Sebagian besar aplikasi mewakili data atau informasi, atas, bawah, benar, salah, buka, tutup.
Kami ingin mengatakan hal-hal seperti:
jika terbuka maka ... lain ... akhiri
atau lebih mungkin menerapkannya pada entitas yang lebih besar:
jika pintu terbuka maka - kemungkinan besar 'door.open' ... else ... end
'pintu terbuka' menggambarkan pengalamatan hierarkis. Pengalamatan sistem utama memberikan pintu entitas, dan pintu memiliki pengalamatan sendiri yang memberikan akses ke buka (dan mungkin atribut lainnya).
Sebagian besar set juga memiliki lebih dari dua nilai yang mungkin (satu set dengan satu nilai tidak pernah berubah dan karena itu bahkan tidak perlu representasi, jadi nol bit). Untuk ini kami telah menetapkan set, seperti (kuning, hijau, biru, kabut ungu, merah). Ini mendefinisikan set dan jenis dan jumlah bit yang dibutuhkan yang tepat diberikan oleh jumlah nilai (log2 (jumlah nilai)).
Jadi pengalamatan yang optimal sangat tergantung pada ukuran entitas yang digunakan dalam aplikasi - bahkan mungkin entitas berukuran variabel. Tetapi di sebagian besar perangkat keras alamat tersebut harus diterjemahkan ke ukuran tetap yang didefinisikan perangkat keras. Ini tentu saja bisa memakan biaya dalam hal waktu. Itu juga harus menjadi sesuatu yang dilakukan penerjemah otomatis (kompiler atau penerjemah), bukan seorang programmer, seperti halnya sistem akan menghasilkan kode untuk menguji dan mengatur bit seperti di atas (jika bit tidak langsung dialamatkan).
Poin penting di sini adalah jangan berpikir dalam hal elektronik - elektronik hanyalah cara pemrosesan komputasi yang sangat bagus dan cepat. Tidak ada keajaiban tentang perhitungan elektronik yang memungkinkan untuk melakukan perhitungan yang tidak dapat Anda lakukan sebaliknya. Keajaiban hanya dalam kecepatan. Itulah mengapa abstraksi tingkat rendah seperti bit, byte, word, atau mekanisme pengalamatan perangkat keras (pointer) benar-benar tidak berguna.