Apakah ini ukuran bus alamat atau ukuran bus data yang menentukan sistem “8-bit, 16-bit, 32-bit, 64-bit”?


15

Pemahaman sederhana saya adalah sebagai berikut.

Memori (RAM) terdiri dari bit, kelompok 8 yang membentuk byte, yang masing-masing dapat diatasi, dan karenanya byte memori dialamatkan.

Bus Alamat menyimpan lokasi satu byte memori.

Jika bus alamat berukuran 32 bit, itu berarti dapat menampung hingga 2 32 angka dan karenanya dapat merujuk hingga 2 32 byte memori = 4GB memori dan memori yang lebih besar dari itu tidak berguna.

Bus data digunakan untuk mengirim nilai yang akan ditulis / dibaca memori. Jika saya memiliki data bus ukuran 32 bit, itu berarti maksimum 4 byte dapat ditulis / dibaca memori pada suatu waktu. Saya tidak menemukan hubungan antara ukuran ini dan ukuran memori maksimum yang dimungkinkan.

Tapi saya baca di sini bahwa:

Meskipun sebagian besar sistem adalah byte-addressable, masuk akal bagi prosesor untuk memindahkan data sebanyak mungkin. Ini dilakukan oleh bus data, dan ukuran bus data adalah dari mana nama sistem 8-bit, sistem 16-bit, sistem 32-bit, sistem 64-bit, dll. Berasal. Ketika bus data lebar 8 bit, ia dapat mentransfer 8 bit dalam operasi memori tunggal. Ketika bus data lebar 32 bit (seperti yang paling umum pada saat penulisan), paling banyak, 32 bit dapat dipindahkan dalam operasi memori tunggal.

Ini mengatakan bahwa ukuran bus data adalah apa yang memberi OS nama, 8bit, 16bit dan sebagainya. Apa yang salah dengan pemahaman saya?


" Apa yang salah dengan pemahaman saya? " - Anda mencoba membuat satu definisi sesuai dengan hal yang berbeda. Deskriptor bit-size telah digunakan pada waktu yang berbeda untuk hal yang berbeda.
serbuk kayu

1
Itu berarti apa pun yang dikatakan pabrikan. Secara umum itu akan menjadi sesuatu yang menyerupai ukuran register, tetapi ada banyak cara untuk memalsukan / membingungkan itu.
Daniel R Hicks

Jawaban:


12

Secara umum ukuran databus ditentukan oleh ukuran register prosesor. Seringkali ukuran register prosesor yang menentukan jenis OS (64 vs 32). Ukuran bus fisik secara teknis dapat berbeda dari ini (8088 sebagai contoh) tetapi sangat jarang bahwa penulis kutipan Anda mungkin mengaitkan keduanya.

Umumnya ukuran pointer juga mengikuti ukuran register tapi alamat fisik lebar bus dapat menjadi lebih besar (seperti dengan 8086 16-bit pada 20) atau lebih kecil (seperti dengan AMD 64 pada 48)


2
" lebar bus alamat fisik bisa lebih besar " - Terutama dengan prosesor 4-bit dan 8-bit!
serbuk gergaji

Baik. Tapi saya mencoba memahaminya sepele. Saya tidak dapat menemukan hubungan antara ukuran databus dan memori maksimum yang mungkin, seperti yang bisa saya jelaskan dengan ukuran bus alamat. Jadi jawabannya tampaknya "BUKAN ALAMAT BUS UKURAN tetapi DATA BUS UKURAN" (karena biasanya sebesar prosesor terdaftar). Apakah saya melewatkan sesuatu?
pelajar

@ LEARNER Benar, kebingungan juga terletak pada kenyataan bahwa ukuran pointer maksimum sistem adalah ukuran register prosesor. Dalam ruang alamat datar seperti kebanyakan sistem modern yang sama dibatasi oleh ukuran register prosesor, maka keterbatasan pengalamatan seperti yang Anda tunjukkan. Beberapa prosesor, terutama yang lebih tua, menggunakan trik seperti pengalamatan tersegmentasi khusus untuk menyiasatinya.
Dougvj

@ Dougvj, Oke, semakin jelas. Tetapi mengapa mereka membuat ukuran bus alamat berbeda dari ukuran register prosesor? Tidakkah lebih masuk akal untuk membiarkan mereka tetap sama? Dan saya bingung tentang di mana alamat disimpan? (bus alamat atau register prosesor?) Terima kasih
pelajar

1
@learner Itu benar. Untuk meringkas: Penunjukan OS sesuai persis dengan ukuran register prosesor. Bus alamat mungkin memiliki ukuran yang sama atau tidak sama dengan register prosesor, sehingga RAM maksimum yang dapat dialamatkan tidak tergantung pada hal itu. Prosesor secara internal, bagaimanapun, hampir selalu memiliki semacam skema pengalamatan yang melibatkan pointer yang ukurannya sama dengan register prosesor.
Dougvj

1

Ini adalah ukuran register dan penanganan memori dalam prosesor.

Menggunakan trik, prosesor 16 bit memiliki bus alamat 20 bit, jadi itu bukan memori eksternal prosesor.


1

Tidak ada sistem "murni" 32 atau 64 bit, dan oleh karena itu istilahnya hanya perkiraan saja.

Misalnya, ambil pernyataan Anda "Memori (RAM) terdiri dari bit, kelompok 8 yang membentuk byte, yang masing-masing dapat diatasi" . Itu tidak terlalu umum. PC memiliki RAM pada modul DIMM, dan itu lebar 64 bit. Kembali di tahun 90-an, Anda memiliki SIMM, dan itu lebar 32 bit.

Dalam beberapa sistem, DIMM harus atau dapat dipasangkan ("ganged" / "dual channel"), yang akan menjadi databus 128 bit. Konsep ini mendahului apa yang disebut prosesor "64 bit" dari AMD dan Intel.

Kelompok-kelompok 64 bit dari DIMM tunggal memang dapat dibagi lagi dalam 8 byte. Itu cukup transparan oleh CPU Anda. Itu juga dapat memecahkan 64 bit dalam 4 * 16 bit, 2 * 32 bit, atau hanya menggunakan semua 64 bit sebagai variabel tunggal.

Namun pertanyaan yang paling penting adalah lebar alamat. Setiap byte dalam memori memiliki alamatnya sendiri, tetapi tidak setiap bit. Itu berarti 64 bit yang Anda dapatkan dari DIMM tunggal memiliki 8 alamat. Yang terendah di antaranya selalu merupakan kelipatan 8: Sekarang, berapa banyak alamat berbeda yang didukung CPU? Ada dua jawaban umum, setidaknya dalam teori. Beberapa dukungan CPU 2 32 alamat yang berbeda, beberapa dukungan 2 64 . Perbedaan ini adalah perbedaan paling umum antara sistem 32 dan 64 bit.

Dalam praktiknya, sistem 64 bit saat ini mendukung kurang dari 2 64 byte RAM. Itu tidak akan terjangkau, dan tidak cocok dengan PC normal. Memori sebanyak itu akan berbobot beberapa juta ton!


Apakah itu register prosesor tempat alamat disimpan, atau apakah itu bus alamat? Anda mengatakan "beberapa CPU mendukung 2 ^ 32 alamat yang berbeda ...". Apa sebenarnya yang dibatasi oleh mereka?
pelajar

Biasanya, ukuran register dan MMU (Memory Management Unit, bagian dari CPU yang secara langsung bertanggung jawab atas memori).
MSalters

0

Keduanya sebenarnya.

Bit pada CPU biasanya merujuk pada ukuran register internal. CPU 32 Bit memiliki register 32 Bit yang mungkin atau mungkin tidak dibagi menjadi beberapa bagian.

Masuk akal untuk memiliki CPU 32 Bit dengan bus data 32 bit karena Anda dapat mentransfer semua data dari memori langsung ke register, tetapi Anda dapat memiliki ukuran bus data apa pun. Jadi CPU 32 Bit biasanya memiliki bus data 32 Bit untuk memudahkan transfer data dari dan ke sana.

Dan juga masuk akal untuk memiliki bus Alamat 32 Bit karena dua alasan. Bus alamat yang lebih besar akan membuat lebih sulit untuk melakukan pengalamatan tidak langsung karena Anda tidak akan memiliki register yang lebih besar untuk menyimpan alamat memori atau CPU akan membutuhkan register khusus untuk pengalamatan memori, perhatikan bahwa CPU lama seperti Intel 8080 adalah 8 bit dan memiliki Bus alamat 16 bit. Sebaliknya, bus alamat yang lebih kecil dari register hanyalah pemborosan sumber daya. Ada mikrokontroler yang menggunakan bus alamat yang lebih kecil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.