Jabarkan RISC dan MIPS dari RISC

Pada akhir 1970-an, IBM 801 menjadi terkenal dalam kalangan industri. Ini bertepatan dengan teknik fabrikasi baru yang memungkinkan chip yang lebih kompleks untuk datang ke pasar. Zilog Z80 tahun 1976 memiliki 8.000 transistor, sedangkan Motorola 68000 (68k) tahun 1979 memiliki 68.000 transistor. Desain yang lebih baru ini umumnya menggunakan kompleksitas yang baru ditemukan untuk memperluas set instruksi untuk membuatnya lebih ortogonal. Sebagian besar desain, seperti 68k, menggunakan kode mikro untuk melakukan ini, membaca instruksi dan menerapkannya kembali sebagai urutan instruksi internal yang lebih sederhana. Pada 68k, 1/3 transistor penuh digunakan untuk pengkodean mikro ini.

Pada tahun 1979, David Patterson dikirim cuti panjang dari University of California, Berkeley untuk membantu tim pantai barat DEC meningkatkan kode mikro VAX. Patterson dikejutkan oleh kompleksitas proses pengkodean dan menyimpulkan itu tidak dapat dipertahankan. Dia pertama kali menulis makalah tentang cara meningkatkan pengkodean mikro, tetapi kemudian berubah pikiran dan memutuskan kode mikro itu sendiri adalah masalahnya. Dengan dana dari Program DARPA VLSI, Patterson memulai upaya Berkeley RISC. Program ini, secara praktik tidak diketahui hari ini, menyebabkan sejumlah besar kemajuan dalam desain chip, fabrikasi, dan bahkan grafis komputer. Mempertimbangkan berbagai program dari varian BSD Unix mereka, tim Berkeley menemukan, seperti halnya IBM, bahwa sebagian besar program tidak menggunakan berbagai macam instruksi di 68k.

Pekerjaan awal David Patterson menunjukkan masalah penting dengan pendekatan tradisional yang lebih baik; bahkan instruksi yang sangat penting untuk eseluruhank inerja tertunda oleh perjalanan mereka melalui mkode mikro Jika kode mikro dihapus, maka program akan berjalan lebih cepat. Dan karena mkodeamikro khirnya mengambil instruksi yang kompleks dan memecahnya menjadi beberapa langkah, tidak ada alasan penyusun tidak bisa melakukan ini sebagai gantinya. Studi-studi ini menunjukkan bahwa, bahkan tanpa perubahan lain, seseorang dapat membuat chip dengan 1/3 transistor lebih sedikit yang akan berjalan lebih cepat. Tim IBM 801 juga memperhatikan hal ini; ketika penyusun dihadapkan dengan pilihan kode operasi yang mungkin, mereka akan memilih salah satu yang penulis tahu telah dioptimalkan untuk menjalankan tercepat. Ini berarti kode mikro, yang membangun urutan operasi untuk melakukan kode operasi selalu melakukan hal yang sama berulang-ulang. Tugas itu memperkenalkan penundaan yang dapat dihilangkan jika kode mikro dihapus dan satu kode operasi yang benar-benar digunakan langsung tersedia untuk penyusun.

Ditemukan juga bahwa pada implementasi berkode mikro dari arsitektur tertentu, operasi yang kompleks cenderung lebih lambat daripada urutan operasi yang lebih sederhana melakukan hal yang sama. Ini sebagian merupakan efek dari fakta bahwa banyak desain terburu-buru, dengan sedikit waktu untuk mengoptimalkan atau menyetel setiap instruksi; hanya yang paling sering digunakan yang dioptimalkan, dan urutan instruksi tersebut bisa lebih cepat daripada instruksi yang kurang disetel melakukan operasi yang setara dengan urutan itu. Salah satu contoh yang terkenal adalah instruksi INDEX VAX.

Pekerjaan Berkeley juga menghasilkan sejumlah poin tambahan. Di antaranya adalah kenyataan bahwa program menghabiskan banyak waktu melakukan panggilan dan pengembalian subrutin, dan tampaknya ada potensi untuk meningkatkan kinerja secara keseluruhan dengan mempercepat panggilan tersebut. Hal ini menyebabkan desain Berkeley untuk memilih metode yang dikenal sebagai jendela register yang secara signifikan dapat meningkatkan kinerja subrutin meskipun dengan biaya beberapa kompleksitas. Mereka juga memperhatikan bahwa sebagian besar instruksi matematika adalah tugas sederhana, hanya 1/3 dari mereka yang benar-benar melakukan operasi seperti penambahan atau pengurangan. Tetapi ketika operasi tersebut terjadi, mereka cenderung lambat. Hal ini menyebabkan penekanan yang jauh lebih besar pada unit data aritmatika yang mendasarinya, dibandingkan dengan desain sebelumnya di mana sebagian besar chip didedikasikan untuk kendali dan kode mikro.

Berkeley RISC yang dihasilkan didasarkan pada peningkatan kinerja melalui penggunaan perpipaan dan penggunaan penjendelaan register yang agresif. Dalam CPU tradisional, 1 CPU memiliki sejumlah kecil register, dan program dapat menggunakan register apa pun kapan saja. Dalam CPU dengan jendela register, ada sejumlah besar register, misalnya 128, tetapi program hanya dapat menggunakan sejumlah kecil dari mereka, misalnya delapan pada satu waktu. Sebuah program yang membatasi dirinya untuk delapan register per prosedur dapat membuat panggilan prosedur yang sangat cepat: Panggilan cukup memindahkan jendela "turun" sebanyak delapan, ke set delapan register yang digunakan oleh prosedur itu, dan pengembaliannya memindahkan jendela kembali. Proyek Berkeley RISC mengirimkan prosesor RISC-I pada tahun 1982. Terdiri dari hanya 44.420 transistor (dibandingkan dengan rata-rata sekitar 100.000 dalam desain CISC yang lebih baru pada zaman itu) RISC-I hanya memiliki 32 instruksi, namun benar-benar mengungguli desain chip tunggal lainnya. Mereka melanjutkan proyek mereka dengan RISC-II yang memiliki 40.760 transistor dan 39 instruksi pada tahun 1983, yang berjalan lebih dari tiga kali lebih cepat dari RISC-I.

Ketika proyek RISC mulai dikenal di Silicon Valley, proyek serupa dimulai di Stanford University pada tahun 1981. Proyek MIPS ini tumbuh dari kursus pascasarjana oleh John L. Hennessy, menghasilkan sistem yang berfungsi pada tahun 1983, dan dapat menjalankan program sederhana pada tahun 1984. Pendekatan MIPS menekankan siklus jam yang agresif dan penggunaan pipa, memastikannya dapat dijalankan "sepenuh" mungkin. Sistem MIPS diikuti oleh MIPS-X, dan pada tahun 1984, Hennessy dan rekan-rekannya membentuk MIPS Computer Systems. Usaha komersial menghasilkan arsitektur baru yang juga disebut MIPS dan prosesor mikro R2000 pada tahun 1985.

Filosofi keseluruhan konsep RISC dipahami secara luas pada paruh kedua tahun 1980-an, dan memimpin para perancang MIPS-X untuk mengatakannya seperti ini pada tahun 1987:Tujuan dari setiap format instruksi harus: 1. dekode sederhana, 2. dekode sederhana, dan 3. dekode sederhana. Setiap upaya peningkatan kepadatan kode dengan mengorbankan kinerja CPU harus diejek di setiap kesempatan.