본문으로 바로가기

산술 프로세서 : 과거와 현재

category IT/외부기사(번역글) 2017. 2. 11. 20:15

원문 THE CPUSHACK museum

번역 ComoCloud

 

 산술 프로세서(Arithmetic Processors)는 ALU와 레지스터 집합을 모아둔 마이크로프로세서로 시작했습니다. 이것은 대부분의 작업을 잘 처리했습니다. 간단한 수학, 그리고 부울 논리는 프로그래밍에 필요한 핵심이었고 컴퓨팅의 요구가 커짐에 따라 프로세서의 수명과 마이크로컨트롤러의 확장이 진행되었습니다. 프로그래머들은 더 큰 수와 부동 소수점을 조작하고 싶어했습니다. 더하기와 빼기만으로는 더 이상 충분하지 않았으며, 곱하기, 나누기, 다른 수학적 기능들이 필요했습니다. 1970년대 프로세서의 트랜지스터 수는 고작 수천 개였으며, 주파수는 MHz 단위, 공정의 선폭은 micron 단위였습니다. 그것은 프로세서의 동일한 칩(혹은 다이)에 수학 기능을 구현하기에는 부족했습니다.

 

 

AMD AM9511DM - 2MHz Military Temp Range APU - 1978

 일부 기업들이 그것을 해결하려고 했고, 아마 그 기업들 중에 가장 성공한 기업은 AMD일 것입니다. 1977년 AMD는 AM9511 산술 처리 유닛을 발표했습니다. 그것은 가장 잘 만들어진 과학 계산기였습니다. AM9511은 32비트 배정밀도 수학(레지스터당 16비트 스택)과 기본적인 ADD, SUB, MUL, DIV 연산 뿐만이 아닌 SIN, COS, TAN ASIN, ACOS, ATAN, LOG, LN, EXP, PWR도 지원했습니다. 단일 칩으로 하드웨어로 14개의 부동 소수점 명령어를 처리할 수 있었습니다. AM9511은 최대 3MHz(A 버전은 4MHz)로 동작했으며, 대부분의 마이크로프로세서와 마이크로컨트롤러에도 연결 가능해, 필요한 연산 성능을 제공할 수 있었습니다. 주변 장치로 설계되었기 때문에 메인 프로세서가 작업을 할당하고 AM9511이 그것을 해결하는 동안 다음 명령어를 수행할 수 있었습니다. 그런 다음 AM9511은 호스트 프로세서에게 인터럽트로 데이터/상태를 읽을 준비가 됐다고 알려줍니다.

 

 

REI (Intel end-of-life) C8231A - 2MHz -1998

 1979년, AMD는 디자인을 업그레이드했습니다. 두 번째 버전인 AM9511A는 비동기식 시스템만큼 동기식 시스템을 지원하도록 변경되었습니다. 또한 클록도 4MHz로 상승했습니다. 그 설계는 성공했으며, 인텔이 AMD에게 라이선스받아 8231과 8231A에 추가했습니다.

 인텔 i8080/8085 및 MCS-48의 라이선스를 AMD에게 주었으며, 그 대신 AMD는 Am9511/12 수학 코프로세서 디자인 및 오류 교정(EDC) 칩(Am2960?)을 주었습니다. i8080, i8085 그리고 향후 인텔 프로세서와 교환으로 AMD는 더 많은 주변 장치 칩을 디자인했으며, 그것들을 인텔과 크로스 라이선싱했습니다. 이것은 1986년 즈음에 법정 분쟁이 발생하여 어쩔수 없이 끝났으며, 라이선싱 협정도 종료되었습니다.

 당신은 인텔 8231에 AMD 저작권을 볼 수 있으며, 오늘날 두 회사의 경쟁 구도를 생각해보면 약간 아이러니합니다. AMD AM9511A는 Apple II와 Apple II+(microSPEED. etc)의 업그레이드 용으로 사용되었습니다.

 1979년 IEEE는 부동 소수점 숫자를 제어하는 표준과 이를 다루는 수학 함수를 개발하는 데 어려움을 겪고 있었습니다. 모든 프로세서에서 동일한 값을 얻어야 하기 때문에 매우 중요했으며, 이를 위해 스토리지 포맷과 반올림 개념이 표준화되어야 했습니다. 인텔의 8087 FPU를 기반으로 만들어졌으며, 1987년 출시된 i387이 완벽하게 호환되는 첫 FPU였습니다. 개발이 끝나고 이 표준은 IEEE 754-1985로 확정되었습니다.

 

 

AMD AM9512-IDC FPU - 2MHz IEEE 754 1981

 AMD는 초기 표준을 지원하는 AM9512를 만들었고 이것은 AM9511과 비슷하지만 4가지 기본적인 함수 ADD, SUB, MUL, DIV밖에 지원하지 않았습니다. 그러나 그들은 32비트인 9511과는 다르게 64비트를 지원했습니다. 인텔은 다시금 그것을 라이선스받아 8232에 탑재했습니다. 그러나 8232는 8087이 생산중이었기 때문에 9511A/8231A와 마찬가지로 팔지 않았으며, 디자이너는 9511의 IEEE 754를 완전하게 따르지 않고, 더 다양하게 사용하는 것이 나았습니다.

 지난 2-30년 동안 TI의 TMS1018이나 Weitek의 WTL1032/1033 2칩 솔루션과 같이 인기가 적은 회사에서 제작된 독립적인 APU들이 있었습니다. 그러나 대부분은 특정 CPU 아키텍처(Motorola MC68881/2, Intel 8087, National 32081 등)에 묶여있었습니다.

 하지만 오늘날에도 당신의 마이크로컨트롤러 응용 프로그램에서 약간의 수학적 도움이 필요할 때가 있습니다. 8051이나 COP8, Z80은 SIN, COS, 요즘 중요성이 부각된 GPS 계산과 같은 기능을 처리할 수 않습니다. Micromega라는 기업은 단지 이러한 목적을 위해 독립형 FPU 한 쌍을 생산하고 있습니다.

 

 

Micromega uM-FPU V2 and V3.1 Donated by Micromega

 uM-FPU V2는 AM9511의 원 기능과 일부 추가된 기능(Root, Floor, Ceil과 같은) 모두 제공하며, uM-FPU V3.1은 FFT, GPS 기능, 고속, 호스트 등을 지원합니다. Micromega는 똑똑한 코딩으로  그것을 해냈습니다. 그들은 V2은 Cypress CY8C27143 PSoC로, V3.1은 Microchip dsPIC30F3012로 프로그램을 설계했습니다. 그래서 FPU를 인터페이스로써 코딩되었지만 핵심은 ARE 마이크로컨트롤러로, 그들 자신만의 명령어 세트가 포함되어있습니다. 이것의 큰 장점중 하나는 엄청난 비용 절감입니다. Intel C8231A의 가격은 $140-$190지만 MicroMega는 고작 $15-$20에 불과합니다. 게다가 그 칩은 더 많은 일을 할 수 있고 더 적은 전력을 사용하며, 더 적은 보드 공간을 차지합니다.

 

 그러면 9511과 9512, MicroMega uM-FPU V3.1를 빠르게 살펴보도록 하겠습니다. (전부 최대 주파수 기준)

APU

32비트 ADD

64비트 FP ADD

64비트 FP DIV

주파수

명령어

 AMD 9511A-4

 Intel 8231A

 63us

 -

 -

 4MHz

 43

 AMD 9512-1

 Intel 8232-8

 73us

 400us

 1640us

 3MHz

 16

 MicroMega uM-FPU V3.1

 7us

 14us

 18us

 30MHz

 175+

 가장 낮은 것(32비트 ADD)는 주파수에 따라갑니다. 덧셈은 엄청난 속도로 할 수 있지만, 복잡한 명령어의 경우 uM-FPU의 아키텍처는 고작 10배 높은 클럭으로 25-100배만큼의 속도 향상을 얻을 수 있습니다.

 

수학을 필요로하고, 전통적인 마이크로컨트롤러 디자인이 살아있는 한 APU는 계속될 것입니다.