Jika CPU memiliki bus alamat 16 bit dan kata-kata 8 bit, berapa banyak memori yang bisa dialaminya?

23

Saya sedang belajar untuk ujian akhir semester dan saya bingung dengan pertanyaan berikut. Jika CPU memiliki bus alamat 16bit dan kata-kata 8 bit, berapa banyak memori dalam KB yang dapat dialaminya? Pemahaman saya akan memberitahu saya bahwa itu dapat mengatasi 64KB, namun untuk melakukan ini saya hanya menggunakan 2 ^ 16 = 65.536. Perhitungan itu tidak pernah benar-benar memperhitungkan 8 bit kata jadi saya tidak yakin apakah itu benar. Juga apa arti kata 8 bit?

Tepuk tangan

eZ_Harry
sumber
16
Anda menggunakannya secara tidak langsung: jumlah total memori yang dapat dialamatkan adalah 2 ^ 16 * 8 bit. Karena satu byte = 8 bit, itu 2 ^ 16 byte, yaitu 65536 byte, atau 64 KiB. Perhatikan bahwa K adalah awalan SI untuk 1000. Jika yang Anda maksud 1024, gunakan Ki.
jcaron
2
Pikirkan perbedaan antara kilobytes awalan SI (1.000 byte) dan kibibytes awalan biner (1.024 byte). 2 ^ 16 = 65.536 = 64 kibi ~ 65.5 kilo. Jawaban yang dicari mungkin adalah di mana kilo dianggap kibi, tetapi ada kalanya perbedaan itu sangat berarti. Jika Anda ingin benar-benar yakin, ambil rute yang aman dan tentukan jumlah byte , dan tawarkan terjemahan ke unit yang lebih berguna seperti kilobyte atau kibibyy sebagai kenyamanan bagi guru Anda. Bandingkan Wikipedia: Awalan biner . Chip memori biasanya menetapkan misalnya 65,536x8 bit.
CVn
3
Saya kira Anda menganggap tidak ada pertukaran bank. Kebanyakan CPU 16 bit menggunakan beberapa bentuk swapping bank yang membuat ini sangat sulit untuk dijawab.
Joshua
1
@ MichaelKjörling Pertanyaan mengatakan KB yang selalu berarti 1024 byte.
kasperd

Jawaban:

38

Sebuah kata, dalam arsitektur mayoritas, adalah bagian terbesar dari data yang dapat ditransfer ke dan dari memori yang bekerja dalam satu operasi.

Ukuran alamat terbesar yang mungkin digunakan untuk menunjuk lokasi dalam memori, biasanya disebut kata perangkat keras.

Jadi, CPU Anda akan dapat mengatasi 64KB (2 ^ 16) tetapi hanya akan dapat mentransfer dalam operasi tunggal 8 bit.

Overmind
sumber
3
Saya yakin jawaban ini adalah yang dicari guru, tetapi apakah ini benar? Bisakah Anda tidak menggunakan sesuatu seperti PAE untuk memungkinkan hirarki 3 tingkat (atau bahkan lebih) untuk memungkinkan CPU untuk mengakses lebih dari 64KB? Saya bukan ahli perangkat keras, tetapi bukankah Commodore 128 bahkan berhasil melakukan sesuatu seperti ini pada 8 bit kata, bus 16 bit dengan memungkinkan beralih dari bank RAM?
davidgo
5
Tidak yakin saya mengerti kalimat Anda "hanya akan dapat mentransfer dalam satu operasi adalah 256B (2 ^ 8)"? Itu hanya dapat mentransfer 1 kata = 1 byte = 8 bit dalam satu operasi.
jcaron
8
@davidgo masih PAE membutuhkan bus alamat untuk berukuran tepat. CPU Intel yang mendukung PAE memiliki bus alamat 36 bit.
Dmitry Grigoryev
6
PAE kurang lebih merupakan nama merek / fitur khusus untuk CPU x86 modern. Ya, skema untuk mengatasi secara tidak langsung jumlah memori yang lebih besar telah diterapkan selama berabad-abad (misalnya XMS), ini pada akhirnya memperlakukan subsistem memori seperti periferal yang dapat dikonfigurasi ulang secara konstan untuk mengekspos memori yang berbeda ke ruang alamat yang lebih kecil. Juga, lihat model memori tersegmentasi dari sekolah lama x86 ...
rackandboneman
6
@Lebih dari itu Anda harus sedikit memperjelas jawaban Anda. Tidak ada yang benar-benar menggunakan B tunggal sebagai sebuah unit dan alasannya persis apa yang terjadi di sini - Anda membingungkan bit dan byte. OP menyatakan "kata 8-bit * - karena itu setiap kata memiliki 8 bit (1 byte) dan hanya dapat mentransfernya dalam satu operasi. 256 hanyalah jumlah nilai yang mungkin dimiliki setiap kata, bukan berapa banyak yang ditransfer.
adelphus
21

Sebuah kata mesin, atau biasanya hanya kata adalah unit data terbesar yang dapat dimanipulasi CPU secara keseluruhan menggunakan instruksi umum. Ini tidak ada hubungannya dengan pengalamatan memori.

Yang penting adalah unit resolusi alamat , yang biasanya merupakan byte 8-bit bahkan pada arsitektur 16/32/64 bit. Itu tidak harus sama dengan ukuran kata mesin, tetapi mungkin dalam kasus Anda.

Unit addressable 8-bit yang dikombinasikan dengan bus alamat 16-bit berjumlah 64KiB dari RAM yang dapat diatasi oleh CPU.

Dmitry Grigoryev
sumber
3
Tetapi saya telah menggunakan mesin di mana unit resolusi alamat adalah 16 bit. (Jadi konsepnya bermakna.)
Martin Bonner mendukung Monica
4
@ MartinBonner Namun demikian, ini tidak terkait langsung dengan ukuran kata CPU.
glglgl
1
@glglgl - Ini sangat terkait. Saya tidak percaya ada setiap arsitektur yang tidak memiliki unit alamat baik 8 bit atau kata ukuran mereka.
Jules
1
Saya tidak setuju dengan pernyataan bahwa sebuah kata adalah unit terbesar yang dapat dimanipulasi CPU secara keseluruhan. Intel i7 memiliki bus data 64 bit dan masih dapat menggunakan instruksi SIMD 256 bit. Jika Wikipedia benar, maka kata mengacu pada lebar bus data dan bukan ke hal-hal internal CPU.
Thomas Weller
1
@ThomasWeller: 8088 memiliki bus data 8 bit, tetapi masih berupa instruksi 16-bit. Bahkan itu adalah 8086 dengan databus yang lebih kecil. Catatan: lebar databus dan transfer aktual juga berbeda (pikirkan data yang tidak selaras).
Giacomo Catenazzi
1

Juga apa arti kata 8 bit?

Dalam konteksnya, ukuran kata sesuai dengan ukuran alamat untuk menggambarkan bus memori. Ada 16 bit yang melekat ke memori sehingga dapat memilih lokasi 64ki. Lalu, setiap lokasi berisi 8 bit.

Ukuran kata di sini mungkin cocok atau tidak cocok dengan ukuran unit perhitungan CPU, dan ini mungkin cocok atau tidak cocok dengan rincian logis dalam pengalamatan.

Misalnya, CPU dapat mengiklankan bus 16-bit (untuk tujuan ini). Ini menggunakan alamat 16-bit dalam instruksinya, dan seperti contoh Anda memiliki 64ki. Tetapi memiliki 15 bit bus alamat dan 16 bit bus data. Hanya membutuhkan 32ki alamat dan selalu mendapat 2 byte dengan setiap lokasi. (Jika suatu instruksi menginginkan 1 byte, itu akan mengirimkan alamat dengan bit yang paling sedikit hilang, mengambil kedua byte dalam langkah itu, kemudian melihat sedikit dari alamat yang diinginkan untuk memutuskan setengah mana yang akan digunakan.)

Perhatikan bahwa pengalihan bank, PAE, dll. Yang disebutkan oleh orang lain tidak relevan di sini. Unit manajemen memori mungkin menggunakan alamat 16-bit dan memiliki alamat perangkat keras 20-bit, sehingga CPU perlu beralih dan memetakan hal-hal untuk memanfaatkan kisaran alamat 20-bit chip RAM yang sebenarnya yang dapat diatasi.

Pastikan untuk menentukan satuan dalam jawaban Anda. "64ki". Dari apa? Kata 8-bit, membuatnya (masih) 64ki byte RAM addressable. Langkah itu menghilangkan kebingungan dan membuat masalah sepele seperti ini.

JDługosz
sumber
0

Anda harus menggunakan ukuran kata dalam perhitungan juga. Jawabannya adalah 64 KB.

Anda dapat mengatasi 2 ^ 16 kata dan setiap kata adalah 8 bit (= 1 byte). Karena itu 64 KB.

Jika ukuran kata itu 16 bit. Jawabannya adalah 128 KB.

Nuri Tasdemir
sumber
1
Perhitungan Anda tidak berlaku untuk CPU 32-bit umum yang masih dapat mengatasi 2 ^ 32 byte memori (4GB), bukan (2 ^ 32) * 4 (16GB).
Dmitry Grigoryev
CPU modern mengatasi "baris" yang lebih besar dan memiliki garis alamat yang lebih sedikit untuk dicocokkan. Pertanyaannya berbicara tentang bus alamat sisi fisik hal. Jadi mengalikan dengan ukuran kata bus itu (bukan ukuran register CPU) benar.
JDługosz
0

Ada dua sisi dalam hal ini, apa yang instruktur Anda mungkin ingin Anda sampaikan kepadanya dan apa kenyataannya.

Pertama-tama apa yang instruktur Anda mungkin ingin Anda sampaikan kepadanya.

"16 bit dapat mengatasi 2 ^ 16 lokasi memori, masing-masing lokasi adalah 8 bit. Jadi kita dapat mengatasi memori 524288 bit (65536 oktet)."

Namun ini mencerminkan pandangan dunia yang agak disederhanakan. Kenyataannya lebih rumit dan untuk memberikan jawaban pasti membutuhkan lebih banyak informasi. Beberapa cara di mana sistem nyata bisa lebih rumit dari ini termasuk.

  • Banyak prosesor tidak memiliki peta IO khusus, jadi bagian dari ruang alamat memori mungkin perlu digunakan untuk hal-hal selain memori.
  • "Ukuran kata" prosesor tidak selalu sama dengan lebar bus data memori atau unit memori terkecil yang dapat dialamatkan.
  • Beberapa bus memungkinkan pergerakan unit data ukuran yang bervariasi. Ini membutuhkan pengalamatan lebih lanjut yang mungkin atau mungkin tidak ditangani oleh bit dari bus alamat utama.
  • Beberapa bus menggandakan sinyal berbeda pada jalur yang sama. Misalnya SDRAM menggunakan baris alamat yang sama dua kali untuk mengirim "alamat baris" dan "alamat kolom".
  • Banyak sistem menggunakan pendekatan transfer bank untuk memungkinkan program mengakses lebih banyak memori daripada yang bisa ditangani oleh prosesor.
plugwash
sumber