Word atau byte-addressable? Terminologi yang benar

9

Tampaknya, byte telah menetapkan dirinya menjadi 8bit (apakah itu benar?). RAM dan NOR-flash biasanya dapat diakses pada tingkat yang cukup granular, tetapi terserah arsitektur sistem untuk menentukan apakah unit terkecil yang dapat dialamatkan adalah 8bit, 16bit atau kekuatan lain dari nomor dua bit. Apakah istilah yang tepat untuk menyebut ini beralamat kata? Atau ditanya secara berbeda, apakah sebuah kata ukuran unit terkecil yang dapat dialamatkan? Atau adakah istilah lain untuk menggambarkan ini?

Apakah mabye nibble, byte, word, double word, semua variabel dalam bit-length dan hanya ditentukan oleh arsitektur? Dan karena itu hanya kebetulan bahwa byte selalu 8 bit? Misalnya seseorang dapat merancang beberapa jenis CPU dan memori baru dan menetapkan byte-nya menjadi 16bit?

Pertanyaan utama: Apa istilah yang tepat untuk blok memori terkecil yang dapat dialamatkan?

Pertanyaan sampingan: Apa antonim dari kata ini yang saya cari (mis. Digunakan dalam NAND-flash)? Page-addressable, block-addressable? Apakah keduanya benar atau tidak tepat?

Franz Kafka
sumber

Jawaban:

9

Dari sudut pandang arsitektur komputer, dan dengan peringatan bahwa nomenklatur kadang-kadang bervariasi, terutama ketika ada keluarga arsitektur terkait yang telah berevolusi untuk waktu yang lama, atau ketika departemen pemasaran memutuskan bahwa istilah biasa harus digunakan di negara lain. cara (baik untuk menempatkan produk dalam cahaya yang lebih baik dengan menggunakan nomor yang lebih besar, atau memiliki nomor sederhana untuk membedakan lebih banyak atau lebih sedikit produk terkait).

Sebuah kata memiliki ukuran yang biasanya digunakan untuk operasi bilangan bulat (sering dinyatakan sebagai ukuran bilangan bulat atau register tujuan umum, yaitu bukan alamat atau data, bus internal atau eksternal, bukan register alamat, bukan register indeks). Masalah umum adalah bahwa ketika arsitektur adalah evolusi dari yang sebelumnya, orang sering menyimpan kata untuk ukuran awal dan satu menggunakan "kata ganda" atau "kata quad" untuk apa kata jika Anda melihat arsitektur di isolasi. Secara historis kata-kata tidak selalu merupakan kekuatan dua (saya tahu ukuran: 12, 16, 18, 24, 32, 36, 60, 64 dan saya tidak berpikir pengetahuan saya lengkap).

Word addressable berarti memori dianggap sebagai array kata, dan dengan demikian tidak ada unit yang lebih kecil yang memiliki alamat individual.

Sebuah byte memiliki berbagai definisi. Istilah ini diperkenalkan berarti unit yang digunakan dalam pengkodean karakter pada saat di mana pengkodean multi-byte tidak ada. Ini sering digunakan untuk berarti unit addressable terkecil untuk mesin yang tidak dapat dialamatkan kata (dan selama itu tidak sedikit). Saya kira kedua definisi itu tidak pernah memberikan ukuran yang berbeda. (atau ukuran berbeda dari 6 atau 8 bit). Untuk mesin pengalamatan kata, sering berarti beberapa unit lebih kecil dari kata yang dimiliki mesin tersebut untuk (misalnya PDP-10 - komputer pengalamatan kata 36 bit - memiliki instruksi byte yang dapat memanipulasi ukuran dari 1 hingga 35 atau 36 bit). Saat ini juga sering 8 bit. Seringkali beberapa definisi tersebut secara praktis setara.

Byte addressable mencirikan mesin-mesin di mana memori dianggap sebagai array byte dalam salah satu makna di atas.

Menggigit AFAIK hanya digunakan untuk jumlah 4 bit.

Misalnya seseorang dapat merancang beberapa jenis CPU dan memori baru dan menetapkan byte-nya menjadi 16bit?

Ya, tapi saya tidak yakin apakah akan masuk akal untuk melakukannya jika seseorang menjaga penggunaan CA untuk menggunakan byte untuk sesuatu yang lebih kecil dari kata. Memiliki pengolah 16-bit yang dapat dialamatkan kata tanpa dukungan untuk sesuatu yang lebih kecil dari suatu kata mungkin merupakan pilihan yang baik untuk pengolah tujuan khusus.

Kedua, apa antonim dari kata ini yang saya cari? Halaman-addressable, blok-addressable

Bit-addressable, byte-addressable dan word-addressable adalah satu-satunya istilah yang saya lihat digunakan. Tidak masuk akal untuk membahas hanya unit yang lebih besar dari kata di tingkat arsitektur. Word-addressable saat ini hanya digunakan untuk prosesor tujuan khusus seperti DSP. Saya tidak berpikir bit-addressability telah digunakan untuk hal lain selain tujuan khusus kecuali IBM Stretch.

Tentang pertanyaan utama baru Anda

Apa istilah yang tepat untuk blok memori terkecil yang dapat dialamatkan?

Saya tahu tidak ada yang digunakan dalam Arsitektur Komputer ( byte telah digunakan untuk sesuatu yang lebih kecil di mesin adressable kata), tetapi definisi yang digunakan oleh C untuk byte .

Pemrogram
sumber
Terima kasih atas jawaban yang terperinci. Ketika saya membaca ulang pertanyaan saya, saya perhatikan saya agak kabur, oleh karena itu saya masih mencari jawaban yang pasti bahwa Anda mungkin masih dapat menambahkan jawaban Anda: Apa istilah yang tepat untuk blok memori terkecil yang dapat dialamatkan? Atau tidak ada? Selanjutnya, saya mengubah kalimat yang Anda kutip. Terima kasih banyak.
Franz Kafka
1
Daerah bit-banding pada beberapa mikrokontroler ISA mungkin dianggap sebagai pengalamatan bit. Sebagian dari ruang alamat menerjemahkan alamat kata (setidaknya dalam ARM Cortex-M) ke alamat bit. Jelas ini hanya mendukung bit-addressing untuk sebagian kecil dari total ruang alamat (hanya 2MiB dari 4GiB untuk Cortex-M3). Juga set instruksi addressability berbeda dari addressability hardware (misalnya, NAND flash adalah addressable page, DRAM sering dialamatkan pada granularity blok cache, L1 cache biasanya memuat ukuran maksimum yang dapat dialamatkan [dengan ECC yang lebih kecil memerlukan RMW].)
Paul A. Clayton
@ PaulA.Clayton Saya tidak tahu istilah bit banding tetapi saya tahu tentang 8051 yang menyediakannya juga. Saya tidak akan menganggap ISA yang menyediakan bit-addressable tidak lebih dari saya menganggap PDP-10 sebagai byte-addressable, sepertinya terlalu berbeda dengan datapath yang biasa.
Pemrogram
@Programmer Saya tidak yakin bagaimana saya akan mendefinisikan addressability ISA. Mendefinisikan seperti itu sesuai dengan unit terkecil dari pengalamatan eksternal yang didukung dalam satu instruksi memberikan jawaban yang berbeda daripada mendefinisikan seperti itu sesuai dengan unit addressability dari "address / pointer biasa" (yang tidak termasuk bit-banding dan address / pointer-dan-lebih halus mekanisme -grained-offset). Yang terakhir (yang Anda pilih) tampaknya lebih alami dalam beberapa konteks, tetapi yang pertama mungkin masuk akal dalam konteks lain. Atomicity (wrt interupsi atau koherensi cache wrt) juga dapat dipertimbangkan (instruksi dapat berupa non-atom).
Paul A. Clayton
1
@ PaulA.Clayton, saya mencoba untuk tetap berpegang pada apa yang tampaknya merupakan praktik yang mapan di lapangan, tetapi ini adalah bidang yang mencintai negara-negara perantara dan saya tidak memiliki bakat maupun budaya Andy Glew untuk dapat memberikan deskripsi yang lengkap namun dapat dipahami.
Pemrogram
1

Burroughs B1700 adalah bit addressable (sebenarnya alamat tersebut merujuk pada ruang di antara bit-bit tempat Anda dapat membaca maju atau mundur jumlah bit yang sewenang-wenang). (Jadi bukan hanya IBM's Stretch, yang merupakan kegagalan.)

B1700 dirancang untuk menjadi mesin yang paling fleksibel. Aplikasi tidak dimaksudkan untuk ditulis pada tingkat bit, tetapi lingkungan yang berbeda dibangun untuk gaya aplikasi yang berbeda. Lingkungan ini diprogram dalam mikrokode, menyediakan mesin mesin virtual. Setiap bahasa (sistem SDL untuk OS, COBOL untuk bisnis, FORTRAN untuk COBOL) runtime ditulis sebagai lingkungan mikrokode terpisah. Dengan demikian arsitektur dapat disesuaikan dengan gaya aplikasi apa pun di masa depan.

Wayne Wilner, salah satu desainer, menekankan bahwa mesin-mesin lain saat itu memaksa para programmer untuk berbaring di ranjang Procrustean dengan byte dan kata-kata berukuran tetap. Benar-benar apa yang dibutuhkan setiap lingkungan runtime adalah struktur data yang sesuai dengan aplikasi. Sayangnya, sebagian besar arsitektur mesin saat ini masih Procrustean (dan dengan demikian diprogram dalam bahasa seperti C yang mengekspos struktur mesin ini, daripada mendukung struktur berorientasi masalah).

Bacaan lebih lanjut tentang mesin yang menarik ini dan filosofinya tersedia di:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

dan lebih detail:

http://ianjoyner.name/Files/Wilner.pdf

Jadi mengapa B1700 tidak lagi dibuat?

Burroughs memiliki tiga rentang utama komputer, sistem besar B5000-B7000 (arsitektur ALGOL), sistem menengah B2000-B4000 (arsitektur COBOL), dan sistem kecil B1000 (arsitektur apa pun yang Anda suka).

Sistem besar benar-benar mahal, sampai B5900 yang diberi mikrokode pada prosesor murah untuk menyediakan mesin tumpukan ALGOL. Jack Allweis, perancang B5900 telah menunjukkan bahwa arsitektur sistem besar dengan demikian diperkecil menjadi komputer kecil, tetapi B1700 dirancang untuk menjadi murah dan tidak ditingkatkan.

Dengan demikian B1700 hingga B1900, walaupun sangat sukses pada saat itu, mati karena alasan komersial.

Sistem besar Burroughs masih tersedia sebagai Unisys ClearPath MCP dan bahkan berjalan pada PC Anda sebagai emulasi.

Sebagai catatan kaki lain, IPC pada B1700 adalah rasa sakit antara mesin virtual yang berbeda, tetapi sangat aman (seperti kernel mikro saat ini). Semua sistem besar menjalankan proses dalam lingkungan yang sama di mana data dapat dibagikan dengan cara yang aman, tetapi IPC bersifat langsung. Ini agak antara arsitektur microkernel (Mach) dan non-kernel (Linux). Namun, B5000 adalah mesin yang sangat aman, tetapi juga berkinerja baik.

Keamanan adalah masalah terbesar di industri saat ini, dan sesungguhnya mesin ini harus dihidupkan kembali dan dipelajari untuk menunjukkan jalan ke depan.

pengguna3717661
sumber
1

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.

pengguna3717661
sumber
-2

Sistem komputer kami digunakan oleh memori Byte default yang dapat dialamatkan. Satu selnya menunjuk ke informasi 8-bit. Dan ukuran sel tidak tergantung pada panjang prosesor. Dalam memori addressable kata satu sel menunjuk ke satu informasi kata, tetapi panjang kata tergantung pada panjang prosesor. Ketika kita menggunakan kata-kata memori yang dapat dialamatkan daripada itu menciptakan ambiguitas. Jadi komputer kami menggunakan memori byte addressable default.

Mayank Jain
sumber
Selamat datang di situs ini tetapi saya tidak melihat bagaimana ini menjawab pertanyaan.
David Richerby