{{위키데이터 속성 추적}}
{{CPU 정보
| 장치명칭          = 인텔 i860
| 그림              = 
| 그림_크기         = 
| 설명문            = 
| 생산시작          = 1989년
| 생산종료          = 1995년
| 최저속도          = 25
| 최고속도          = 50
| 최저속도단위      = MHz
| 최고속도단위      = MHz
| 최저FSB           = 
| 최고FSB           = 
| 최저FSB단위       = MHz
| 최고FSB단위       = MHz
| 최소공정          = 0.8
| 최대공정          = 1
| 제조사1           = 인텔
| core1             = 
| 소켓1             = 
| 아키              = 
| 마이크로아키      = 
| 코어수            = 1
}}
'''인텔 i860''' ('''80860''')은 [[인텔]]이 1989년 출시한 [[RISC]] [[마이크로프로세서]]다. i860은([[인텔 i960|i960]]을 포함해) 1980년대 [[인텔 iAPX 432|인텔 i432]]가 실패한 이후 고급용 [[명령어 집합|명령어 셋]]에 대한 완전히 새로운 시도였다. i850은 매우 화려하게 출시되었는데 더 좋은 설계라고 여겨지던 i960의 출시를 가려버릴 정도였다. 하지만 i860은 상업적으로 전혀 성공하지 못했으며 1990년대 중반, 생산도 종료되었다.

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

모든 버스는 64비트 이상으로 구성되며 [[CPU 캐시|캐시]]가 연결된 내부 메모리 버스는 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 [[메가|M]][[플롭스|FLOPS]]였지만 [[어셈블리어|어셈블러]]로 작성했을 경우에도 40 MFLOPS 정도의 성능만 발휘되었으며 대부분의 컴파일러에서는 10 MFLOP의 성능을 내기도 힘들었다.

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

== 버전과 사용 사례 ==
[[파일:Paragon Card.jpg|300px|섬네일|오른쪽|[[인텔 파라곤]] XP/S 슈퍼컴퓨터 회로보드에 탑재된 3개의 i860 XP-50 CPU]]
[[파일:KL Intel i860XR.jpg|오른쪽|섬네일|180px|인텔 i860 XR]]
i860은 XR ([[코드네임]] N10) 과 XP (코드네임 N11)의 2가지 버전이 출시되었다. XR는 큰 캐시, 2차 캐시, 더욱 빠른 버스와 [[병렬 컴퓨팅]] 시스템에서 캐시의 일관성을 유지하기 위한 버스 스누핑을 지원한다. XP는 생산 공정을 1[[마이크로|μ]][[미터|m]]에서 0.8μm로 줄여 40 ~ 50MHz로 동작 속도를 높였으며 둘 다 명령어 셋은 같다.

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

인텔은 한동안 i860을 [[MIPS 아키텍처|MIPS]]같은 경쟁 칩들처럼 [[워크스테이션]]에서의 사용 가능성을 시험하였다. [[마이크로소프트]]가 최초로 개발한 [[윈도우 NT]]는 원래 i860을 타겟으로 자체 설계한 i860 시뮬레이터에서 개발되었지만(코드네임 대즐) MIPS(마이크로소프트 재즈), [[인텔 80386]] 등 i860을 제외한 기타 다른 프로세서로 이식되었다. NT라는 명칭은 원래 "N-Ten" (i860 XR) 프로세서에서 유래됐다.<ref>{{웹 인용 |url=http://www.winsupersite.com/reviews/winserver2k3_gold1.asp |제목=Paul Thurrott's History of Windows Server 2003: The Road To Gold |확인날짜=2010년 7월 15일 |보존url=https://web.archive.org/web/20100604082534/http://www.winsupersite.com/reviews/winserver2k3_gold1.asp |보존날짜=2010년 6월 4일 |url-status=dead }}</ref>

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

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

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

== 각주 ==
{{각주}}

== 외부 링크 ==
{{위키공용분류}}
* [http://www.cpu-collection.de/?l0=co&l1=Intel&l2=i860 i860 사진과 설명].
* Rhodehamel, Michael W. "[http://ieeexplore.ieee.org/xpl/abs_free.jsp?arNumber=63392 The Bus Interface and Paging Units of the i860(tm) Microprocessor]". In Proc. IEEE International Conference on Computer Design, p. 380-384, 1989.

{{인텔 프로세서}}

{{전거 통제}}

[[분류:인텔의 마이크로프로세서]]
[[분류:그래픽스 칩]]
[[분류:인텔 그래픽스]]