CISC (engl. Complex Instruction Set Computer) on yleisnimitys sellaisille suorittimien käskykannoille, joissa konekielen käskyt ovat rakenteeltaan monimutkaisia ja yksi käsky voi sisältää useita alkeistason operaatioita. CISC-arkkitehtuurin vastakohta on RISC-arkkitehtuuri, jossa käskykanta on pyritty pitämään mahdollisimman yksinkertaisena ja tehokkaana. Tunnettuja CISC-arkkitehtuureita ovat mm. x86 (IA-32), Motorola 68000 -sarja, VAX, IBM S/360 ja PDP-11.
Termi CISC on esitelty jälkikäteen vastakohtana yksinkertaisemmalle RISC-arkkitehtuurille: termi viittaa ratkaisujen monimutkaistumiseen.[1] CISC esitettiin kustannustehokkuuden kannalta haitallisena suuntauksena.[1] Monimutkaistumiseen on esitetty useita syitä kuten käskynopeus verrattuna aliohjelmakutsuun.[1]
Esimerkiksi IA-32:n käsky add [ebx+ecx*4],eax
laskee summan ebx+ecx*4
, lukee sitä vastaavasta osoitteesta sanan, summaa sen tulokseen eax
-rekisterin sisällön ja kirjoittaa tuloksen takaisin alkuperäiseen muistipaikkaan. Moderneissa CISC-suorittimissa käskyt pilkotaan RISC-tyylisiin mikro-operaatioihin suuremman suorituskyvyn ja hyötysuhteen vuoksi.[2]
Eräissä CISC-arkkitehtuureissa käskyn koko voi vaihdella siihen liitetyn tiedon mukaan ja muistiin osoittamiseen voi olla monta muotoa.[3][4] Register-memory -arkkitehtuurissa muistin käsittely voi olla osana muuta käskyä kun taas RISC-arkkitehtuurille tyypillisessä load-store-arkkitehtuurissa on vain erilliset käskyt.[3][5]
CISC-arkkitehtuurille on tyypillistä suuri määrä käskyjä, monimutkaisia käskyjä, useita osoitusmuotoja.[3] CISC-suorittimissa voi olla mikro-ohjelmointia monimutkaisien käskyjen toteuttamiseen.[3] Käskyt voivat vastata suoraan korkean tason ohjelmointikielien käsitteisiin.[3]
Sekä CISC- että RISC-tyypeissä on omat etunsa ja ongelmansa.[3]