Dalam banyak kasus, pilihannya cukup sewenang-wenang atau didasarkan pada "di mana pun itu paling cocok" karena ISA tumbuh seiring waktu. Namun, MOS 6502 adalah contoh luar biasa dari sebuah chip di mana desain ISA sangat dipengaruhi oleh upaya untuk memeras sebanyak mungkin dari transistor terbatas.
Lihat video ini menjelaskan bagaimana 6502 direkayasa balik , khususnya mulai 34:20 dan seterusnya.
6502 adalah mikroprosesor 8-bit yang diperkenalkan pada tahun 1975. Walaupun memiliki gerbang 60% lebih sedikit daripada Z80, tetapi dua kali lebih cepat, dan meskipun lebih terbatas (dalam hal register dll), itu dibuat untuk itu dengan set instruksi yang elegan.
Ini berisi hanya 3.510 transistor, yang ditarik, dengan tangan , oleh tim kecil orang yang merangkak di atas beberapa lembaran plastik besar yang kemudian secara optik menyusut, membentuk berbagai lapisan 6502.
Seperti yang Anda lihat di bawah, 6502 meneruskan opcode instruksi dan data timing ke dalam decode ROM, kemudian meneruskannya ke komponen "random control logic" yang tujuannya mungkin untuk mengesampingkan output ROM dalam situasi kompleks tertentu.
Pada pukul 37:00 dalam video Anda dapat melihat tabel ROM decode yang menunjukkan kondisi apa yang harus dipenuhi input untuk mendapatkan "1" untuk output kontrol yang diberikan. Anda juga dapat menemukannya di halaman ini .
Anda dapat melihat bahwa sebagian besar hal dalam tabel ini memiliki Xs di berbagai posisi. Mari kita ambil contoh
011XXXXX 2 X RORRORA
Ini berarti 3 bit pertama opcode haruslah 011, dan G harus 2; tidak ada hal lain yang penting. Jika demikian, output bernama RORRORA akan menjadi kenyataan. Semua opcode ROR dimulai dengan 011; tetapi ada instruksi lain yang dimulai dengan 011 juga. Ini mungkin perlu disaring oleh unit "logika kontrol acak".
Jadi pada dasarnya, opcodes dipilih sehingga instruksi yang diperlukan untuk melakukan hal yang sama satu sama lain memiliki kesamaan di seluruh pola bit mereka. Anda dapat melihat ini dengan melihat tabel opcode ; semua instruksi ATAU mulai dengan 000, semua instruksi Store mulai dengan 010, semua instruksi yang menggunakan pengalamatan halaman nol adalah dalam bentuk xxxx01xx. Tentu saja, beberapa instruksi sepertinya tidak "pas", karena tujuannya bukan untuk memiliki format opcode yang benar-benar biasa, melainkan untuk menyediakan set instruksi yang kuat. Dan inilah mengapa "logika kontrol acak" diperlukan.
Halaman yang saya sebutkan di atas mengatakan bahwa beberapa garis output dalam ROM muncul dua kali, "Kami menganggap ini telah dilakukan karena mereka tidak memiliki cara untuk merutekan output dari beberapa baris di mana yang mereka inginkan, sehingga mereka meletakkan baris yang sama di tempat yang berbeda. lokasi lagi. " Saya bisa membayangkan para insinyur menggambar gerbang-gerbang itu satu per satu dan tiba-tiba menyadari kekurangan dalam desain dan mencoba mencari cara untuk menghindari memulai kembali seluruh proses.