Saya membaca Tracy Kidder "The Soul of a New Machine" di mana tim di Data General merancang mesin baru (diberi kode "Eagle", yang kemudian dinamai MV / 8000). Ini adalah ekstensi 32-bit dari arsitektur sebelumnya (Eclipse 16-bit). Salah satu tema yang berputar tampaknya adalah, bahwa mereka tidak ingin membuat mesin dengan mode bit dan bahwa mereka berhasil dalam hal ini.
Namun, itu meninggalkan bagaimana ini dicapai secara teknis, dan itu juga tidak masuk ke mengapa itu sangat menarik untuk membuat mesin tanpa mode bit. Buku itu bukan buku teknis sehingga bisa jadi detailnya entah bagaimana terdistorsi. Namun, Anda merasa membaca buku itu bahwa solusi "mode bit" adalah umum (dan karenanya layak) pada saat itu, tetapi dianggap tidak menarik oleh para insinyur mungkin karena alasan estetika. Buku ini juga membuatnya tampak seperti tugas yang sangat sulit untuk membuat desain tanpa sedikit mode, yang entah bagaimana diatasi oleh tim khusus ini.
Saya menemukan deskripsi ini tentang bagaimana itu dicapai:
http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt
Tampaknya pada dasarnya tentang menggunakan bagian ruang opcode yang sebelumnya tidak digunakan untuk instruksi baru. Saya harus mengakui bahwa saya agak kecewa bahwa itu "hanya itu". Juga saya pikir ini masih menyisakan beberapa pertanyaan:
Pertama, bagaimana proses 16-bit hidup dalam ruang alamat 32-bit? Karena saya pikir itu adalah tantangan utama dalam membuat ekstensi 32-bit "tanpa mode bit". Memperluas set instruksi, di sisi lain, adalah tugas yang relatif umum. Karena tidak ada deskripsi tentang bagaimana hal itu terjadi, seseorang dapat berasumsi bahwa kode 16-bit hanya mengakses memori seperti biasanya, mungkin ia melihat beberapa jenis tampilan memori yang divirtualisasi / dibelokkan (dengan register CPU baru mengendalikan di mana alamat pertama berada) atau sesuatu seperti itu. Tetapi saya tidak tahu apakah ada yang lebih dari itu. Dalam hal ini orang dapat membantahnya semacam solusi "mode bit". Proses mode 16-bit dapat berjalan bersamaan dengan proses lain berdasarkan fitur khusus yang ditambahkan ke CPU.
Kedua, mengapa begitu menarik untuk membuat mesin tanpa mode bit? Banyak manfaat yang disebut-sebut dalam buku ini adalah bahwa pelanggan ingin menjalankan perangkat lunak lama. Tetapi ini tampaknya tidak menentang bit mode, karena seluruh tujuan penggunaan bit mode adalah untuk memiliki kompatibilitas ke belakang. Ketika AMD diperpanjang x86 ke 64-bit, setidaknya menurut pemahaman saya tentang kata "mode bit" apa yang mereka lakukan adalah menambahkan bit mode. Bit khusus yang akan membuat CPU dalam mode 64-bit. Dan bit lain yang akan membuat proses dieksekusi dalam "sub-mode" dari mode 64-bit (untuk mengaktifkan kompatibilitas dengan aplikasi 32-bit). Inti dari submode adalah bahwa CPU menginterpretasikan aliran instruksi sebagai instruksi 32-bit yang lama tetapi bahwa akses memori 32-bit yang dibuat diselesaikan dengan menggunakan format tabel halaman baru (pengaturan oleh sistem operasi 64-bit sadar) dan akhirnya dipetakan ke ruang alamat fisik penuh. Juga, kode 32-bit dapat diawali dengan kode 64-bit. Seperti solusi Data General, ini juga memungkinkan program 32-bit berjalan di bawah program 64-bit (16-bit vs 32-bit dalam kasus DG). Jadi dari sudut pandang pelanggan, tampaknya tidak ada perbedaan sama sekali. Karenanya satu-satunya keuntungan bisa saja dalam implementasi, menyederhanakan desain, tetapi buku tidak membuatnya terdengar seperti itu yang menjadi perhatian, karena mode bit dianggap umum bahkan pada waktu itu (dan tampaknya kemudian arsitektur juga memiliki menggunakannya seperti yang ditunjukkan pada case x64).
Saya yakin ada sesuatu yang saya lewatkan, jadi akan lebih baik jika seseorang dapat membahas lebih lanjut tentang detail teknis dan kelebihan dari desain "tanpa mode-bit" ini.