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.
sumber
Jawaban:
Jawabannya adalah Ed deCastro, Presiden Data General Management, telah membentuk tim insinyur di North Carolina khusus untuk merancang CPU generasi berikutnya. Dia memberikan tugas dukungan dan peningkatan tambahan kepada kami, tim Massachusetts. Tiga kali kami mengusulkan arsitektur baru utama, setiap kali dengan mode bit yang sangat masuk akal, dan menggambarkannya sebagai peningkatan bertahap sederhana. Setiap kali, Ed melihat melalui penyamaran kami dan menolak proposal, berharap tim Carolina Utara berhasil. Ed percaya bahwa terlepas dari bagaimana kami berusaha menyamarkan proposal kami, ia akan tahu itu adalah arsitektur generasi baru jika memiliki mode bit. Jadi kami harus mengusulkan arsitektur generasi baru tanpa mode bit, walaupun itu membuatnya kurang efisien. Begitulah cara kami melewati Ed deCastro. Lihat Jiwa Mesin Baru,
sumber
Dengan bit mode, OS 16-bit yang lama harus dimodifikasi untuk mengetahui apakah program itu 16-bit atau 32-bit dan kemudian mengatur bit mode dengan tepat sebelum meluncurkan program.
Dalam prakteknya, sepertinya MV / 8000 sebenarnya memiliki sedikit mode. Di tempat lain di halaman web Mark Smotherman di Clemson ia telah memposting Data General, ECLIPSE MV / 8000 Principles of Operation , 1980 . Jika Anda melihat di Lampiran E (mulai halaman 369) Anda akan melihat bahwa MV / 8000 memiliki dua mekanisme tabel halaman yang sama sekali berbeda. Mesin khusus MV / 8000 kompatibel dengan C / 350, dan C / 350 memiliki Unit Alokasi Memori dan Perlindungan 16-bit yang spesifik, dengan cara spesifik mengendalikan unit tersebut. Untuk operasi logis 32-bit ke operasi fisik, Anda akan mengaktifkan Unit Terjemahan Alamat (dijelaskan dalam Bab 3, mulai dari halaman 31.
Dalam prakteknya apa artinya adalah bahwa ketika Anda menjalankan instruksi 16-bit dalam mode 32-bit, ditentukan bahwa 16-bit tinggi dari alamat logis diatur ke 0. Juga harus ada beberapa spesifikasi tentang apa yang terjadi pada tinggi 16-bit alamat ketika Anda menjalankan instruksi 32-bit dalam mode 16-bit, tetapi saya tidak dapat menemukannya selama saya membaca buku panduan tersebut secara singkat.
Jadi itu bukan pertanyaan apakah mode bit itu baik atau buruk. Lebih dari itu tidak ada alasan khusus yang baik untuk menggunakan mode-bit untuk membedakan antara instruksi 16-bit dan 32-bit. Instruksi 16-bit menggunakan 16-bit alamat logis (dengan tinggi 16 bit diatur ke 0) dan register 16-bit, dan instruksi 32-bit menggunakan 32-bit dari alamat logis dan register 32-bit. OS lama "hanya berfungsi" pada mesin baru, tetapi Anda juga dapat mencoba instruksi baru dengan menjalankan program baru di bawah OS lama.
sumber