Кіріспе

Intel i860 (80860 деп те аталады) – Intel компаниясы 1989 жылы ұсынған RISC микропроцессор дизайны. Бұл 1980 жылдардың басындағы Intel iAPX 432 сәтсіз аяқталғаннан кейін Intel-дің жасаған тұңғыш, толыққанды жаңа, жоғары деңгейдегі нұсқаулар жиынтығы архитектурасының әрекеті болды. Бұл әлемдегі алғашқы миллион транзистордан тұратын чип. Ол үлкен қызығушылықпен ұсынылды, бірақ бұрынғы Intel i960-ты жасырды, ол кейбір кіріктірілген жүйелерде табысқа жеткен болатын. i860 коммерциялық сәттілікке қол жеткізе алмады және жоба 1990 жылдардың ортасында тоқтатылды.

Қолданылу

I860 архитектурасының алғашқы іске асырылуы – 25, 33 немесе 40 МГц жиілікте жұмыс істейтін i860 XR микропроцессоры (N10 кодымен белгіленген). Екінші буын i860 XP микропроцессоры (N11 кодымен белгіленген) 4 Мбайттық беттерді, үлкен жад кэшін, екінші деңгейлі кэш қолдауын, жылдам шиналарды және көппроцессорлық жүйелерде кэш сәйкестігін қамтамасыз ету үшін шинаны бақылауға аппараттық қолдауды қосты. XP процессорының технологиялық процесін жетілдіру (1 мкм-ден 0,8 CHMOS V-ге дейін) жиілікті 40 және 50 МГц-ке дейін арттырды. Екі микропроцессор да қолданбалы бағдарламалар үшін бірдей командалар жиынтығын қолдады.

Техникалық ерекшеліктері

i860 сол кездегі ерекше мүмкіндіктерді біріктірді, әсіресе оның өте ұзын нұсқаулық сөзі (VLIW) архитектурасы және жоғары жылдамдықты қозғалатын нүктелік операцияларға күшті қолдауы. Дизайн екі класс нұсқауларды пайдаланады: 32 биттік АЛУ қолданатын "негізгі" нұсқаулар және қозғалатын нүкте қосушысы, қозғалатын нүкте көбейтушісі немесе 64 биттік бүтін сандық графикалық блокпен жұмыс істейтін "қозғалатын нүкте немесе графикалық" нұсқаулар. Жүйеде АЛУ, қозғалатын нүктелі қосу, қозғалатын нүктелі көбейту және графикалық блок үшін жеке құбырлар болды. Ол әр сағат сайын бір "негізгі" және бір "қозғалатын нүкте немесе графикалық" нұсқауын алу және декодтау мүмкіндігіне ие. Екі операциялық қозғалатын нүктелік нұсқауларды (мәндерді келесі екі операциялық нұсқаулар арасында беру) пайдаланғанда, ол бір сағатта үш операцияны (бір АЛУ, бір қозғалатын нүктелік көбейту және бір қозғалатын нүктелік қосу немесе алу) орындай алады. Барлық дерек шиналарының ені кемінде 64 бит болатын. Мысалы, кэшке арналған ішкі жад шинасының ені 128 бит болды. "Негізгі" класс нұсқаулары отыз екі 32 биттік бүтін сандық тіркегіштерді пайдаланады. Ал "қозғалатын нүкте немесе графикалық" нұсқаулары тіркегіштер жинағын пайдаланады, оған қозғалатын нүктелік блоктар отыз екі 32 биттік, он алты 64 биттік немесе сегіз 128 биттік қозғалатын нүктелік тіркегіштер ретінде немесе графикалық блок он алты 64 биттік бүтін сандық тіркегіштер ретінде кіре алады. "Негізгі" блок нұсқауларды алуға жауапты, және қалыпты "бір нұсқау" режимінде әр циклда 32 биттік "негізгі" немесе бір 32 биттік "қозғалатын нүкте немесе графикалық" нұсқауын ала алады. Бірақ екі нұсқаулық режимде орындалғанда, нұсқаулық кэшіне VLIW нұсқаулары ретінде қол жеткізіледі, ол 32 биттік "негізгі" нұсқаудан және 32 биттік "қозғалатын нүкте немесе графикалық" нұсқаудан тұрады, олар бір мезгілде 64 биттік шина арқылы бірге алынады. Intel i860 нұсқаулары 8 биттен 128 битке дейінгі дерек өлшемдерімен жұмыс істеді. Графика негізгі 64 биттік бүтін сандық математикадан басқа SIMD сияқты нұсқауларды да қолдайды. Мысалы, оның 64 биттік бүтін сандық дерек жолы бірнеше пикселдерді 8 биттік пикселдер, 16 биттік пикселдер немесе 32 биттік пикселдер ретінде бірге көрсете алады.

Өнер көрсету

Қағазда жүзінде, бір чиптік шешім үшін өнімділік әсерлі болды, бірақ нақты қолданыстағы өнімділік мүлдем басқаша еді. Бір мәселе, мүмкін сол кезде байқалмаған, орындалу кезіндегі код жолдарын болжау қиын, яғни компиляция кезінде нұсқауларды дұрыс реттеу өте қиынға соқты. Мысалы, екі санды қосу нұсқаулары, егер бұл сандар кэште болмаса, әлдеқайда көп уақыт алады, бірақ бағдарламашының олардың кэште бар-жоғын білуге мүмкіндігі жоқ. Егер дұрыс болжам жасалмаса, барлық құбыр желісі тоқтап, дерек күтеді. I860 дизайнының өзі компилятордың осы міндетті тиімді орындауына негізделген, бірақ практикада бұл мүмкін емес болып шықты. Теориялық тұрғыдан XP нұсқалары үшін бір және екі дәлдік үшін шамамен 60-80 MFLOPS-қа жетуге болар еді, бірақ қолмен жазылған ассемблер коды 40 MFLOPS-қа дейін ғана жете алды, ал көптеген компиляторлар тіпті 10 MFLOPS-қа да жете алмады. Кейінірек пайда болған Itanium архитектурасы, VLIW дизайны болғандықтан, жеткілікті түрде оңтайландырылған кодты ұсына алмайтын компиляторлардың мәселесінен қайта зардап шекті. Тағы бір маңызды мәселе – контекстік ауысуды жылдам жүзеге асыруға арналған шешімнің болмауы еді. I860 бірнеше құбыр желілеріне ие болды (ALU және FPU бөліктері үшін), ал үзіліс оларды тоқтата тұрып, қайта жүктеуді қажет ететін еді. Ең жақсы жағдайда бұл 62 цикл алса, ең нашар жағдайда – шамамен 2000 цикл алды. Соңғысы 40 МГц жиілікте (50 микросекунд) секундының 1/20000 бөлігіне тең, процессор үшін өте ұзақ уақыт. Осы себепті i860 жалпы мақсаттағы процессор ретінде қолданылмайтын болды.