Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Intel i860 (80860 деп те аталады) – Intel компаниясы 1989 жылы ұсынған RISC микропроцессор дизайны. Бұл 1980 жылдардың басындағы Intel iAPX 432 сәтсіз аяқталғаннан кейін Intel-дің жасаған тұңғыш, толыққанды жаңа, жоғары деңгейдегі нұсқаулар жиынтығы архитектурасының әрекеті болды. Бұл әлемдегі алғашқы миллион транзистордан тұратын чип. Ол үлкен қызығушылықпен ұсынылды, бірақ бұрынғы Intel i960-ты жасырды, ол кейбір кіріктірілген жүйелерде табысқа жеткен болатын. i860 коммерциялық сәттілікке қол жеткізе алмады және жоба 1990 жылдардың ортасында тоқтатылды.
Microprocessor design by Intel
The Intel i860 (also known as 80860) is a RISC microprocessor design introduced by Intel in 1989. It is one of Intel's first attempts at an entirely new, high end instruction set architecture since the failed Intel iAPX 432 from the beginning of the 1980s. It was the world's first million transistor chip. It was released with considerable fanfare, slightly obscuring the earlier Intel i960, which was successful in some niches of embedded systems. The i860 never achieved commercial success and the project was terminated in the mid 1990s.
Қолданылу
I860 архитектурасының алғашқы іске асырылуы – 25, 33 немесе 40 МГц жиілікте жұмыс істейтін i860 XR микропроцессоры (N10 кодымен белгіленген). Екінші буын i860 XP микропроцессоры (N11 кодымен белгіленген) 4 Мбайттық беттерді, үлкен жад кэшін, екінші деңгейлі кэш қолдауын, жылдам шиналарды және көппроцессорлық жүйелерде кэш сәйкестігін қамтамасыз ету үшін шинаны бақылауға аппараттық қолдауды қосты. XP процессорының технологиялық процесін жетілдіру (1 мкм-ден 0,8 CHMOS V-ге дейін) жиілікті 40 және 50 МГц-ке дейін арттырды. Екі микропроцессор да қолданбалы бағдарламалар үшін бірдей командалар жиынтығын қолдады.
The first implementation of the i860 architecture is the i860 XR microprocessor (code named N10), which ran at 25, 33, or 40 MHz. The second generation i860 XP microprocessor (code named N11) added 4 Mbyte pages, larger on chip caches, second level cache support, faster buses, and hardware support for bus snooping, for cache consistency in multiprocessor systems. A process shrink for the XP (from 1 μm to 0.8 CHMOS V) increased the clock to 40 and 50 MHz. Both microprocessors supported the same instruction set for application programs.
Техникалық ерекшеліктері
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 биттік пикселдер ретінде бірге көрсете алады.
The i860 combined a number of features that were unique at the time, most notably its very long instruction word (VLIW) architecture and powerful support for high speed floating point operations. The design uses two classes of instructions: "core" instructions which use a 32 bit ALU, and "floating point or graphics" instructions which operate on a floating point adder, a floating point multiplier, or a 64 bit integer graphics unit. The system had separate pipelines for the ALU, floating point adder, floating point multiplier, and graphics unit. It can fetch and decode one "core" instruction and one "floating point or graphics" instruction per clock. When using dual operation floating point instructions (which transfer values between subsequent dual operation instructions), it is able to execute up to three operations (one ALU, one floating point multiply, and one floating point add or subtract) per clock. All of the data buses were at least 64 bits wide. The internal memory bus to the cache, for instance, was 128 bits wide. The "core" class instructions use thirty two 32 bit integer registers. But the "floating point or graphics" instructions use a register file that can be accessed by the floating point units as either thirty two 32 bit, sixteen 64 bit, or eight 128 bit floating point registers, or that can be accessed by the graphics unit as sixteen 64 bit integer registers. The "core" unit is responsible for fetching instructions, and in the normal "single instruction" mode can fetch one 32 bit "core" or one 32 bit "floating point or graphics" instruction per cycle. But when executing in dual instruction mode, the instruction cache is accessed as VLIW instructions consisting of a 32 bit "core" instruction paired with a 32 bit "floating point or graphics" instruction, simultaneously fetched together over a 64 bit bus. Intel i860 instructions acted on data sizes from 8 bit through 128 bit. The graphics supports SIMD like instructions in addition to basic 64 bit integer math. For instance, its 64 bit integer datapath can represent multiple pixels together as either 8 bit pixels, 16 bit pixels, or 32 bit pixels.
Өнер көрсету
Қағазда жүзінде, бір чиптік шешім үшін өнімділік әсерлі болды, бірақ нақты қолданыстағы өнімділік мүлдем басқаша еді. Бір мәселе, мүмкін сол кезде байқалмаған, орындалу кезіндегі код жолдарын болжау қиын, яғни компиляция кезінде нұсқауларды дұрыс реттеу өте қиынға соқты. Мысалы, екі санды қосу нұсқаулары, егер бұл сандар кэште болмаса, әлдеқайда көп уақыт алады, бірақ бағдарламашының олардың кэште бар-жоғын білуге мүмкіндігі жоқ. Егер дұрыс болжам жасалмаса, барлық құбыр желісі тоқтап, дерек күтеді. I860 дизайнының өзі компилятордың осы міндетті тиімді орындауына негізделген, бірақ практикада бұл мүмкін емес болып шықты. Теориялық тұрғыдан XP нұсқалары үшін бір және екі дәлдік үшін шамамен 60-80 MFLOPS-қа жетуге болар еді, бірақ қолмен жазылған ассемблер коды 40 MFLOPS-қа дейін ғана жете алды, ал көптеген компиляторлар тіпті 10 MFLOPS-қа да жете алмады. Кейінірек пайда болған Itanium архитектурасы, VLIW дизайны болғандықтан, жеткілікті түрде оңтайландырылған кодты ұсына алмайтын компиляторлардың мәселесінен қайта зардап шекті. Тағы бір маңызды мәселе – контекстік ауысуды жылдам жүзеге асыруға арналған шешімнің болмауы еді. I860 бірнеше құбыр желілеріне ие болды (ALU және FPU бөліктері үшін), ал үзіліс оларды тоқтата тұрып, қайта жүктеуді қажет ететін еді. Ең жақсы жағдайда бұл 62 цикл алса, ең нашар жағдайда – шамамен 2000 цикл алды. Соңғысы 40 МГц жиілікте (50 микросекунд) секундының 1/20000 бөлігіне тең, процессор үшін өте ұзақ уақыт. Осы себепті i860 жалпы мақсаттағы процессор ретінде қолданылмайтын болды.
On paper, performance was impressive for a single chip solution; however, real world performance was anything but. One problem, perhaps unrecognized at the time, was that runtime code paths are difficult to predict, meaning that it becomes exceedingly difficult to order instructions properly at compile time. For instance, an instruction to add two numbers will take considerably longer if those numbers are not in the cache, yet there is no way for the programmer to know if they are or not. If an incorrect guess is made, the entire pipeline will stall, waiting for the data. The entire i860 design was based on the compiler efficiently handling this task, which proved almost impossible in practice. While theoretically capable of peaking at about 60 80 MFLOPS for both single precision and double precision for the XP versions, manually written assembler code managed to get only about up to 40 MFLOPS, and most compilers had difficulty getting even 10 MFLOPs. The later Itanium architecture, also a VLIW design, suffered again from the problem of compilers incapable of delivering sufficiently optimized code. Another serious problem was the lack of any solution to handle context switching quickly. The i860 had several pipelines (for the ALU and FPU parts) and an interrupt could spill them and require them all to be re loaded. This took 62 cycles in the best case, and almost 2000 cycles in the worst. The latter is 1/20000th of a second at 40 MHz (50 microseconds), an eternity for a CPU. This largely eliminated the i860 as a general purpose CPU.