CISC

**Komputer set instruksi kompleks** (Inggris: **''complex instruction set computer**,* *'CISC*') adalah [[arsitektur komputer]] di mana [[Set instruksi|instruksi]] tunggal dapat mengeksekusi beberapa operasi tingkat rendah (seperti beban dari [[Memori (komputer)|memori]], [[Operator (pemrograman)|operasi]] [[aritmetika]], dan [[Memori (komputer)|penyimpanan memori]]) atau mampu melakukan operasi multi-langkah atau [[mode pengalamatan]] dalam instruksi tunggal. Istilah ini secara retroaktif diciptakan berbeda dengan [[RISC|komputer set instruksi yang dikurangi]] (RISC) dan oleh karena itu telah menjadi [[Hiponim dan hipernim|istilah umum]] untuk segala sesuatu yang bukan RISC, di mana karakteristik pembeda yang khas adalah bahwa sebagian besar desain RISC menggunakan panjang instruksi yang seragam untuk hampir semua instruksi, dan menerapkan instruksi pemuatan dan penyimpanan yang sangat terpisah.

Contoh arsitektur CISC termasuk [[komputer bingkai utama]] yang kompleks hingga mikrokontroler sederhana di mana beban memori dan operasi penyimpanan tidak dipisahkan dari instruksi aritmetika. Arsitektur set instruksi khusus yang telah diberi label CISC secara retroaktif adalah [[System/360]] hingga [[z/Architecture]], arsitektur [[PDP-11]] dan [[VAX]], dan banyak lainnya. Mikroprosesor dan mikrokontroler terkenal yang juga telah diberi label CISC di banyak publikasi akademis termasuk keluarga [[Motorola 6800]], [[6809]] dan [[68000]]; keluarga Intel [[8080]], [[iAPX432]] dan [[x86]]; keluarga Zilog [[Z80]], [[Zilog Z8|Z8]] dan [[Z8000]]; [[National Semiconductor]] [[32016]] dan garis [[NS320xx]]; keluarga MOS Technology [[6502]]; keluarga Intel [[8051]]; dan lain-lain.

Beberapa desain telah dianggap sebagai kasus batas oleh beberapa penulis. Misalnya, [[Mikrokontroller PIC|PIC]] [[Microchip Technology]] telah diberi label RISC di beberapa kalangan dan CISC di kalangan lain. [[6502]] dan [[6809]] keduanya telah digambarkan seperti RISC, meskipun mereka memiliki mode pengalamatan yang kompleks serta instruksi aritmetika yang beroperasi pada memori, bertentangan dengan prinsip RISC.

== Hasutan dan manfaat ==
Sebelum filosofi RISC menjadi menonjol, banyak arsitek komputer mencoba menjembatani apa yang disebut [[celah semantik]], yaitu untuk merancang set instruksi yang secara langsung mendukung konstruksi pemrograman tingkat tinggi seperti panggilan prosedur, kontrol pengulangan, dan [[mode pengalamatan]] kompleks, memungkinkan struktur data dan akses array untuk digabungkan menjadi satu instruksi. Instruksi juga biasanya sangat dikodekan untuk lebih meningkatkan kepadatan kode. Sifat kompak dari set instruksi tersebut menghasilkan ukuran [[Program komputer|program]] yang lebih kecil dan lebih sedikit akses memori utama (yang sering lambat), yang pada saat itu (awal 1960-an dan seterusnya) menghasilkan penghematan yang luar biasa pada biaya memori komputer dan penyimpanan disk, seperti serta eksekusi yang lebih cepat. Ini juga berarti [[produktivitas pemrograman]] yang baik, bahkan dalam [[bahasa rakitan]], karena [[Bahasa pemrograman tingkat tinggi|bahasa tingkat tinggi]] seperti [[Fortran]] atau [[ALGOL]] tidak selalu tersedia atau sesuai. Memang, mikroprosesor dalam kategori ini terkadang masih diprogram dalam bahasa rakitan untuk jenis aplikasi kritis tertentu.

== Masalah desain ==
Sementara banyak desain mencapai hasil yang lebih baik dengan biaya lebih rendah, dan juga memungkinkan konstruksi bahasa tingkat tinggi diekspresikan dengan instruksi yang lebih sedikit, perlu diamati bahwa ini tidak *selalu* terjadi. Misalnya, versi kelas bawah dari arsitektur kompleks (yaitu menggunakan lebih sedikit perangkat keras) dapat menyebabkan situasi di mana dimungkinkan untuk meningkatkan kinerja dengan *tidak* menggunakan instruksi yang kompleks (seperti pemanggilan prosedur atau memasukkan instruksi) tetapi menggunakan urutan instruksi yang lebih sederhana.

Salah satu alasan untuk hal ini adalah bahwa arsitek (penulis [[mikrokode]]) terkadang "mendesain berlebihan" instruksi bahasa rakitan, termasuk fitur yang tidak dapat diimplementasikan secara efisien pada perangkat keras dasar yang tersedia. Mungkin ada, misalnya, "efek samping" (di atas tanda konvensional), seperti pengaturan register atau lokasi memori yang mungkin jarang digunakan; jika ini dilakukan melalui bus internal biasa (tidak terduplikasi), atau bahkan bus eksternal, itu akan menuntut siklus ekstra setiap saat, dan dengan demikian menjadi sangat tidak efisien.

=== Ide RISC ===
Sebuah awal (retroaktif) prosesor *berlabel* RISC ([[IBM 801]] – [[IBM]] Watson Research Center, pertengahan 1970-an) adalah mesin sederhana pipa ketat awalnya dimaksudkan untuk digunakan sebagai inti mikrokode internal, atau mesin, dalam desain CISC,tetapi juga menjadi prosesor yang memperkenalkan ide RISC ke audiens yang lebih besar. Kesederhanaan dan keteraturan juga dalam set instruksi yang terlihat akan membuatnya lebih mudah untuk mengimplementasikan tahapan prosesor yang tumpang tindih (perpipaan) pada tingkat kode mesin (yaitu tingkat yang dilihat oleh penyusun). Namun, perpipaan pada tingkat itu sudah digunakan di beberapa "superkomputer" CISC berkinerja tinggi untuk mengurangi waktu siklus instruksi (walaupun komplikasi penerapan dalam jumlah komponen terbatas dan kompleksitas pengkabelan yang layak pada saat itu). Eksekusi mikrokode internal di prosesor CISC, di sisi lain, bisa lebih atau kurang terpipa tergantung pada desain tertentu, dan membuatnya kurang lebih mirip dengan struktur dasar prosesor RISC.

=== Istilah CISC dan RISC ===
Istilah CISC dan RISC menjadi kurang bermakna dengan evolusi lanjutan dari desain dan implementasi CISC dan RISC. Implementasi x86 yang sangat (atau ketat) pertama, desain 486 dari [[Intel]], [[AMD]], [[Cyrix]], dan [[IBM]], mendukung setiap instruksi yang dilakukan pendahulunya, tetapi mencapai *efisiensi maksimum* hanya pada subset x86 yang cukup sederhana yang hanya sedikit lebih dari set instruksi RISC yang khas (yaitu, tanpa batas [[Arsitektur muat-simpan|*muat-simpan'']] RISC yang khas). Generasi Intel P5 Pentium adalah versi superskalar dari prinsip-prinsip ini. Namun, prosesor x86 modern juga (biasanya) mendekode dan membagi instruksi menjadi urutan dinamis dari operasi mikro buffer internal, yang membantu mengeksekusi subset instruksi yang lebih besar dalam mode terpipa (tumpang tindih), dan memfasilitasi ekstraksi paralelisme yang lebih maju dari aliran kode, untuk kinerja yang lebih tinggi.

## Lihat pula
* CPU
* RISC
* ZISC
* VLIW
* Prosesor mikro
* Mikrokode
* Komputer
* Desain prosesor
* Arsitektur komputer

## Referensi


## Bacaan lanjutan

* 
* Tanenbaum, Andrew S. (2006) , Pearson Education, Inc. Upper Saddle River, NJ.