MAR adalah singkatan dari alamat memori mendaftar.
Register ini memiliki output yang terhubung ke bus alamat. Register ini
akan menjadi satu-satunya cara untuk CPU untuk berkomunikasi dengan
bus. Namun, untuk mencegah alamat memori mendaftar dari pembuangan terus
output nya ke bus alamat, kami akan menempatkan 32-bit tri-state buffer
antara output dari MAR dan bus alamat. Hal ini memungkinkan perangkat
lain (misalnya, I / O device) untuk menggunakan bus alamat, jika perlu.
Para MAR dapat memegang dua macam alamat. Entah itu menyimpan alamat
instruksi, atau menyimpan alamat data. Tentu saja, sejauh memori yang
bersangkutan, alamat adalah alamat. Tidak peduli apa yang disimpan di
alamat itu. Namun, dari sudut pandang Anda, sebagai orang yang belajar
bagaimana CPU bekerja, ini berguna untuk mengetahui bahwa MAR dapat
memegang baik alamat instruksi atau alamat data. Darimana MAR beban
alamat nya? Untuk sekarang, kami hanya akan mengatakan bahwa itu berasal
dari beberapa bagian lain dari CPU, yang akan kita bahas pada titik
kemudian.
MDR
MDR singkat untuk data memori register.
Seperti yang Anda duga, MDR adalah analog dari MAR, kecuali digunakan
dengan data bus, bukan bus alamat. Berbeda dengan MAR, di mana kita baik
menempatkan alamat pada bus alamat atau kita tidak (dengan
menonaktifkan buffer tri-state antara MAR dan bus alamat), MDR memiliki
operasi lebih dari sekedar menempatkan data pada bus data atau tidak
menempatkannya. Secara khusus, data dapat berjalan dua arah. Untuk
operasi beban, kami berharap untuk membaca data dari bus data ke dalam
MDR tersebut. Untuk operasi toko, kami berharap untuk menempatkan data
dari MDR ke data bus. Ini berarti bahwa TB dapat (paralel) memuat data
dari salah satu dari dua tempat: bus data (untuk operasi beban) dan
tempat lain di dalam CPU (untuk operasi toko). Kami ingin menyediakan
dua pilihan untuk mana MDR harus mendapatkan data. Apa jenis sirkuit
yang seharusnya kami gunakan yang memungkinkan kita untuk memilih dari
salah satu dari dua input yang berbeda? Sebuah 2-1 MUX! Secara khusus,
32-bit 2-1 MUX. Demikian pula, data dari MDR baik dapat pergi ke bus
data (untuk operasi toko) atau ke beberapa bagian lain dari CPU (untuk
operasi beban). Meskipun terlihat seperti kita mungkin perlu demux, kami
tidak akan. Kami hanya akan membagi data, dan kedua tempat akan
mendapatkan data.
Diagram Sebuah
Ini adalah bagaimana diagram dari CPU terlihat sejauh ini.
Sejauh ini, CPU berisi dua register. MAR
di sebelah kiri. MDR di sebelah kanan. Input ke MAR berasal dari
beberapa tempat lain di CPU, yang akan kita bahas nanti. Output dari MAR
dihubungkan ke bus alamat menggunakan 32-bit tri-state buffer. Masukan
ke MDR berasal dari salah satu dari dua tempat. Entah itu berasal dari
beberapa tempat lain di CPU (untuk operasi toko) atau berasal dari bus
data (untuk operasi beban). Sebuah MUX digunakan untuk memilih mana
masukan MDR harus beban dari. Output dari MDR yang dihubungkan ke bus
data menggunakan 32-bit tri-state buffer. Hal ini juga
diarahkan ke beberapa tempat lain di CPU, yang mungkin menggunakan data
dalam MDR setelah itu telah diambil dari data bus. Diagram mungkin
tampak membingungkan, tetapi Anda harus memeriksanya sampai Anda merasa
nyaman dengan apa yang terjadi. Aku telah meninggalkan dari gambar
memori, yang akan terhubung ke alamat dan bus data, seperti yang
ditunjukkan dari satu set catatan sebelumnya (lihat catatan Roadmap
awal). Namun, Anda harus mengasumsikan bahwa memori masih ada.
Sinyal kontrol
Kami memiliki dua register, satu MUX, dan
dua tri-state buffer. Masing-masing perangkat memiliki input kontrol
yang memberitahu apa yang harus dilakukan. Masing-masing dari mereka
memiliki surat yang ditulis di sampingnya. Mari kita daftar mereka.
- A Ini adalah kontrol untuk 32-bit 2-1 MUX untuk MDR tersebut. Entah MDR bisa mendapatkan input dari bus data atau dari beberapa bagian lain dari CPU akan ditentukan di kemudian hari.
- B Ini adalah kontrol ke Maret Anda juga dapat memuat atau memegang.
- C Ini adalah kontrol untuk MDR tersebut. Anda juga dapat memuat atau memegang.
- D Ini adalah kontrol ke buffer tri-state dari MAR ke bus alamat. Kontrol dapat berada di (memungkinkan bit untuk mengalir melalui) atau nonaktifkan (memungkinkan tidak untuk mengalir melalui).
- E Ini adalah kontrol ke buffer tri-negara dari MDR ke data bus. Kontrol dapat berada di (memungkinkan bit untuk mengalir melalui) atau nonaktifkan (memungkinkan tidak untuk mengalir melalui).
Sinyal kontrol akan segera menjadi sangat
penting karena mereka akan memungkinkan digunakan untuk mengontrol
ketika CPU melakukan apa. Secara khusus, kita akhirnya akan berbicara
tentang desain dari unit kontrol, yang akan mengatur peristiwa di CPU.
Kita akan mengklasifikasikan sinyal kontrol ke dalam dua jenis:
- Operasi pada register (yaitu, beban paralel dan tahan)
- Operasi pada perangkat logika kombinasional (misalnya, MUXes,. Tri-state buffer)
Perbedaan terbesar antara kedua jenis
sinyal adalah bahwa satu adalah berdasarkan jam (yaitu, perangkat
sekuensial seperti register) dan yang lainnya tidak (yaitu, perangkat
logika kombinasional). Meskipun kedua adalah tidak didasarkan pada
sebuah jam, seluruh CPU berjalan menggunakan jam, dan sebagainya, secara
tidak langsung, jam ini penting ketika datang untuk berurusan dengan
perangkat logika kombinasional. Kita akan membahas masalah ini dalam
satu set catatan masa depan.
Tersembunyi register
Para MAR dan MDR dianggap “register
tersembunyi”. Ini adalah register yang tidak digunakan secara langsung
oleh programmer bahasa assembly. Mereka digunakan untuk
mengimplementasikan instruksi, namun. Pikirkan mereka seperti variabel
lokal untuk fungsi. Sebagai contoh, Anda mungkin telah ditugaskan untuk
menulis fungsi yang mengambil dua parameter dan mengembalikan beberapa
nilai. Untuk menghitung nilai kembali, Anda mungkin perlu untuk
mendeklarasikan beberapa variabel lokal. Siapa pun yang menggunakan
fungsi tidak harus menyadari variabel lokal, dan bahwa mereka digunakan
untuk membantu dengan fungsi. Demikian pula, pengguna tidak perlu
menyadari MAR dan MDR tersebut. Seiring waktu, kita dapat memutuskan itu
tidak perlu memiliki MAR atau MDR tersebut. Karena mereka tersembunyi,
seharusnya tidak mempengaruhi jalannya program bahasa assembly, karena
mereka tidak menggunakan register.