Saya menerapkan ALU dari spesifikasi yang diberikan dalam buku The Elements of Computing system saya. Saya terjebak hanya pada satu masalah. Bagaimana saya menemukan jika angka yang diberikan adalah nol atau tidak. Satu hal yang bisa saya lakukan adalah atau setiap bit di bus, dan kemudian menerapkan gerbang tidak pada itu. Tetapi harus ada beberapa solusi elegan lainnya.
16
Jawaban:
Sama sekali tidak ada jalan lain ATAU semua bit, tidak memuaskan seperti yang tampak. Namun, Anda tidak terbatas pada dua gerbang input silikon juga. Anda dapat membangun 4-input gerbang NOR dalam logika CMOS dengan menempatkan 4 seri tipe-p transistor dalam jaringan pullup dan 4 transistor tipe-n paralel dalam jaringan pulldown. Itu mengurangi kedalaman topologi pohon Anda dan karenanya penundaan propagasi Anda. Anda hanya dapat mengambil teori itu sejauh ini sebelum jatuhnya voltase kumulatif pada transistor seri membuat pull-up tidak cukup pull-up menjadi "1" ... empat adalah aturan praktis yang baik jika saya ingat dengan benar.
sumber
Fungsi logika adalah gerbang NOR. Itu adalah fungsi logika paling sederhana yang ada.
sumber
Solusi khas dengan mesin 8 bit adalah bahwa ALU akan menghasilkan sejumlah bit 'flag' yang akan mewakili hasil dari operasi terbaru. Meskipun dimungkinkan untuk memiliki jumlah bit flag sekitar (yaitu, Anda bisa memiliki flag 'Z' untuk setiap register di CPU Anda), biasanya hal yang baru saja Anda hitung yang paling menarik, jadi masuk akal untuk melakukannya dengan cara tertentu.
Beberapa dari CPU lama itu akan secara otomatis mengatur bit flag untuk hampir setiap pemindahan data, sementara yang lain meminta Anda untuk menempel instruksi 'bandingkan' spesifik dalam kode Anda jika Anda tiba-tiba perlu mengetahui apakah register tertentu nol. Dan apakah Anda memberikan cek nol untuk setiap register atau hanya untuk apa yang baru saja dihitung, benar-benar tidak ada cara yang lebih sederhana untuk memeriksa "apakah ini kata nol" daripada hanya ATAU semua bit secara bersamaan.
sumber
Beberapa CPU, MIPS misalnya, memiliki register yang selalu berisi nol, membuat pengujian register lain untuk nol sangat cepat.
sumber
Saya penggemar berat
or_reduce
- sebagian besar alat sintesis akan mengoptimalkannya ke implementasi terbaik karena mereka tahu persis apa yang Anda lakukan.sumber