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.

Implementations

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.

Technical features
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 referred to the design as the "i860 64-Bit Microprocessor".

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. Experience with the i860 influenced the MMX functionality later added to Intel's Pentium processors.

The pipelines into the functional units are program-accessible (VLIW), requiring the compilers to order instructions carefully in the object code to keep the pipelines filled. In traditional architectures these duties were handled at runtime by a scheduler on the CPU itself, but the complexity of these systems limited their application in early RISC designs. The i860 was an attempt to avoid this entirely by moving this duty off-chip into the compiler. This allowed the i860 to devote more room to functional units, improving performance. As a result of its architecture, the i860 could run certain graphics and floating-point algorithms with exceptionally high speed, but its performance in general-purpose applications suffered and it was difficult to program efficiently (see below).

Performance
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.

Demise
As the compilers improved, the general performance of the i860 did likewise, but by then most other RISC designs had already passed the i860 in performance.

In the late 1990s, Intel replaced their entire RISC line with ARM-based designs, known as the XScale. Confusingly, the 860 number has since been re-used for a motherboard control chipset for Intel Xeon (high-end Pentium) systems and a model of the Core i7.

Andy Grove suggested that the i860's failure in the marketplace was due to Intel being stretched too thin:

Applications

At first, the i860 was only used in a small number of supercomputers such as the Intel iPSC/860. Intel later marketed the i860 as a workstation microprocessor for a time, where it competed with microprocessors based on the MIPS and SPARC architectures, among others. The Oki Electric OKI Station 7300/30 and Stardent Vistra 800 Unix workstations were based on a 40 MHz i860 XR running UNIX System V/i860.  The Hauppauge 4860 and Olivetti CP486 featured an Intel 80486 and i860 on the same motherboard.  Microsoft initially developed what was to become Windows NT on internally designed i860XR-based workstations (codenamed Dazzle), only porting NT to the MIPS (Microsoft Jazz), Intel 80386 and other processors later. Some claim the NT designation was a reference to the "N-Ten" codename of the i860XR.

The i860 did see some use in the workstation world as a graphics accelerator. It was used, for instance, in the NeXTdimension, where it ran a cut-down version of the Mach kernel running a complete PostScript stack. However, the PostScript part of the project was never finished so it ended up just moving color pixels around. In this role, the i860 design worked considerably better, as the core program could be loaded into the cache and made entirely "predictable", allowing the compilers to get the ordering right. Truevision produced an i860-based accelerator board intended for use with their Targa and Vista framebuffer cards. Pixar produced a custom version of RenderMan to run on the card that ran approximately four times faster than the 386 host. Another example was SGI's RealityEngine, which used a number of i860XP processors in its geometry engine. This sort of use slowly disappeared as well, as more general-purpose CPUs started to match the i860's performance, and as Intel turned its focus to Pentium processors for general-purpose computing.

Mercury Computer Systems used the i860 in their multicomputer. From 2 to 360 compute nodes would reside in a circuit switched fat tree network, with each node having local memory that could be mapped by any other node. Each node in this heterogeneous system could be an i860, a PowerPC, or a group of three SHARC DSPs. Good performance was obtained from the i860 by supplying customers with a library of signal processing functions written in assembly language. The hardware packed up to 360 compute nodes in 9U of rack space, making it suitable for mobile applications such as airborne radar processing.

During the early 1990s, Stratus Technologies built i860-based servers, the XA/R series, running their proprietary VOS operating system.

Also in the 1990s, Alliant Computer Systems built their i860-based FX/800 and FX/2800 servers, replacing the FX/80 and FX/8 series that had
been based on the Motorola 68000 ISA. Both the Alliant and Mercury compute systems were in heavy use at NASA/JPL for the SIR-C missions.

The U.S. military used the i860 for numerous aerospace and digital signal processing applications as a coprocessor, where it saw use up until the late 1990s.

References

External links

 Many i860 expansion cards
 i860 images and description.
 Rhodehamel, Michael W. "The Bus Interface and Paging Units of the i860(tm) Microprocessor". In Proc. IEEE International Conference on Computer Design, p. 380–384, 1989.

Graphics chips
Intel graphics
I860
Very long instruction word computing
32-bit microprocessors
인텔 i860 (80860)은 인텔이 1989년 출시한 RISC 마이크로프로세서다. i860은(i960을 포함해) 1980년대 인텔 i432가 실패한 이후 고급용 명령어 셋에 대한 완전히 새로운 시도였다. i850은 매우 화려하게 출시되었는데 더 좋은 설계라고 여겨지던 i960의 출시를 가려버릴 정도였다. 하지만 i860은 상업적으로 전혀 성공하지 못했으며 1990년대 중반, 생산도 종료되었다.

기술적인 특징 
i860은 당시로서는 몇가지 독특한 특징을 가지고 있었는데 그 중 두드러진 특징으로 VLIW(Very Long Instruction Word) 아키텍처와 빠른 부동소수점 연산 기능을 들 수 있다.
32비트 ALU와 64비트 FPU를 갖추고 있으며 FPU는 덧셈기, 곱셈기, 그래픽 프로세서 등 3부분으로 이루어져 있다. ALU와 부동소수점 덧셈기, 곱셈기는 독립된 파이프라인을 가지고 있어서 3가지 작업을 한 클럭에 끝낼 수 있다. 즉, 1개의 정수 명령어와 1개의 부동소수점 곱셈과 적산하는 명령어 같은 2개의 명령어를 한 클럭에 처리할 수 있다.

모든 버스는 64비트 이상으로 구성되며 캐시가 연결된 내부 메모리 버스는 128비트로 구성된다. 32비트 레지스터 32개를 갖추고 있지만 FPU에서 사용할 때는 64비트 레지스터 16개로 사용된다. ALU 명령어를 한번에 2개를 펫치(fetch)해서 64비트 외부 버스를 완전히 이용할 수 있다. 그래서 인텔은 이런 설계를 가리켜 “i860 64비트 마이크로프로세서”라고 했다.

그래픽 유닛 내장은 당시로선 드문 일이었다. 그래픽 유닛은 기본적으로 FPU 레지스터를 사용하는 64비트 정수 유닛으로 기본적인 64비트 정수 연산과 함께 여러 가지 SIMD적인 명령어를 지원했다. i860에서의 경험은 나중에 인텔 펜티엄 프로세서에 추가되는 MMX (명령어 집합) 기능에 영향을 끼쳤다.

i860의 독특한 특징 중 하나로 각각의 기능 유닛의 파이프라인에 프로그램으로 접근이 가능하다는 것이다. 컴파일러는 파이프라인을 가득 채운 상태로 유지하도록 주의하여 명령어를 배열할 필요가 있다. 전통적인 아키텍처에서 이런 임무는 CPU 내부에 내장된 스케줄러에서 처리되었지만 초창기 RISC 설계에서 이런 복잡한 시스템을 적용하기엔 한계가 있었다. i860은 이 임무를 컴파일러에 맡겼는데 그로 인해 칩 내의 기능 유닛에 사용할 수 있는 공간이 좀 더 넓어져 성능을 향상시키게 되었다. 그 결과 i860은 그래픽과 부동소수점 연산을 확연히 빠른 속도로 실행할 수 있었지만 일반적인 용도에서 효과적인 프로그램을 작성하기에는 어려움이 있었다.

성능 (문제점) 
문서상의 성능은 단일 칩으로서는 매우 인상적이었지만 실제 성능은 크게 뒤떨어졌다. 당시에는 그 원인이 명확히 밝혀지지 않았지만 그 이유 중 하나는 실행 시 코드의 흐름을 예측하기가 어려웠던 것으로 생각되는데 컴파일 할 때 명령어를 정확히 배열하는 것이 엄청나게 어려웠다는 것을 의미한다. 예를 들어 두 숫자를 더하는 명령어는 캐시 안에 데이터가 없다면 매우 오랜 시간이 걸리는데 프로그래머는 데이터가 캐시에 있는지 없는지 알아낼 방법이 없었다. 예측이 틀리면 데이터를 기다리며 모든 파이프라인이 멈추게 된다. i860의 설계는 컴파일러를 효과적으로 다루는 것을 바탕으로 하는데 실제 작업에서는 불가능하다는 것이 입증된 것이다. XP 버전은 이론상 성능이 최대 60-80 MFLOPS였지만 어셈블러로 작성했을 경우에도 40 MFLOPS 정도의 성능만 발휘되었으며 대부분의 컴파일러에서는 10 MFLOP의 성능을 내기도 힘들었다.

또 다른 심각한 문제점은 문맥 교환(Context Switch)을 빠르게 다룰 수 있는 수단이 없었던 것이다. i860은 ALU와 FPU 부분마다 독립된 파이프라인이 있는데 인터럽트는 파이프라인 안의 데이터를 누설시켜서 복귀시에는 모든 데이터를 다시 로드해야 했다. 이것은 최소 62 사이클이 걸리며 최악의 경우 거의 2000 사이클이 걸린다. 이것은 1/20000 초이며 CPU에서는 엄청나게 긴 시간이었다. 이러한 점이 i860을 일반 용도의 CPU로 사용하지 않았던 이유다.

버전과 사용 사례 

i860은 XR (코드네임 N10) 과 XP (코드네임 N11)의 2가지 버전이 출시되었다. XR는 큰 캐시, 2차 캐시, 더욱 빠른 버스와 병렬 컴퓨팅 시스템에서 캐시의 일관성을 유지하기 위한 버스 스누핑을 지원한다. XP는 생산 공정을 1μm에서 0.8μm로 줄여 40 ~ 50MHz로 동작 속도를 높였으며 둘 다 명령어 셋은 같다.

처음에 i860은 로스앨러모스 국립 연구소(Los Alamos National Laboratory)의 iPSC/860같은 적은 수의 대규모 머신에만 사용되었다. 컴파일러가 개선되어 i860의 전반적인 성능도 증가하였지만 다른 RISC는 이미 i860의 성능을 넘어서 버렸다.

인텔은 한동안 i860을 MIPS같은 경쟁 칩들처럼 워크스테이션에서의 사용 가능성을 시험하였다. 마이크로소프트가 최초로 개발한 윈도우 NT는 원래 i860을 타겟으로 자체 설계한 i860 시뮬레이터에서 개발되었지만(코드네임 대즐) MIPS(마이크로소프트 재즈), 인텔 80386 등 i860을 제외한 기타 다른 프로세서로 이식되었다. NT라는 명칭은 원래 "N-Ten" (i860 XR) 프로세서에서 유래됐다.

i860은 워크스테이션 분야에서 그래픽 가속기로 사용되기도 했다. 예를 들어 NeXTdimension에도 사용되었는데 마하 커널의 기능을 줄인 버전에서 완전한 포스트스크립트가 실행되었다.

포스트스크립트에서는 끊임없이 주변의 칼라 픽셀을 이동시키는 일이 대부분이었는데 이런 역할은 i860에 아주 적합했다. 핵심 프로그램은 캐시 안에 로드되어 완전하게 예측 가능하게 되었으며 컴파일러가 올바르게 명령어를 배열할 수 있었다. 또 다른 예로 SGI RealityEngine의 지오메트리 엔진에 다수의 i860XP 프로세서가 사용되었다. 일반적인 CPU들이 i860의 성능을 따라잡자 이런 종류의 사용도 점차 사라지게 되었으며 인텔도 펜티엄 프로세서에 초점을 맞추게 된다.

1990년대 말, 인텔은 ARM 기반의 XScale로 RISC 생산 라인 전체를 교체하였다. 860이라는 제품 번호는 인텔 제온(Xeon) 시스템용 메인보드의 칩셋에 다시 사용되어 혼란을 일으키기도 했다.

참조

외부 링크 

 i860 사진과 설명.
 Rhodehamel, Michael W. "The Bus Interface and Paging Units of the i860(tm) Microprocessor". In Proc. IEEE International Conference on Computer Design, p. 380-384, 1989.

인텔의 마이크로프로세서
그래픽스 칩
인텔 그래픽스