MENU

Selasa, 17 Januari 2012

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.