인텔 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) 프로세서에서 유래됐다.[1]
i860은 워크스테이션 분야에서 그래픽 가속기로 사용되기도 했다. 예를 들어 NeXTdimension에도 사용되었는데 마하 커널의 기능을 줄인 버전에서 완전한 포스트스크립트가 실행되었다.
포스트스크립트에서는 끊임없이 주변의 칼라 픽셀을 이동시키는 일이 대부분이었는데 이런 역할은 i860에 아주 적합했다. 핵심 프로그램은 캐시 안에 로드되어 완전하게 예측 가능하게 되었으며 컴파일러가 올바르게 명령어를 배열할 수 있었다. 또 다른 예로 SGIRealityEngine의 지오메트리 엔진에 다수의 i860XP 프로세서가 사용되었다. 일반적인 CPU들이 i860의 성능을 따라잡자 이런 종류의 사용도 점차 사라지게 되었으며 인텔도 펜티엄 프로세서에 초점을 맞추게 된다.
1990년대 말, 인텔은 ARM 기반의 XScale로 RISC 생산 라인 전체를 교체하였다. 860이라는 제품 번호는 인텔 제온(Xeon) 시스템용 메인보드의 칩셋에 다시 사용되어 혼란을 일으키기도 했다.