인텔 8087 탄젠트 알고리즘 해부: CORDIC과 다항식 근사를 합친 하드웨어 비밀
- 1980년 나온 인텔 8087은 탄젠트 명령 FPTAN을 CORDIC과 다항식 근사를 섞은 방식으로 계산해 높은 정확도와 속도를 함께 확보함
- 8087은 탄젠트를 90마이크로초에 풀어 8086 소프트웨어 계산의 13,000마이크로초를 크게 앞질렀음
- 켄 셔리프는 끌로 칩 뚜껑을 깨고 현미경으로 다이를 촬영, 중앙 마이크로코드 ROM에 1648개 마이크로명령이 저장된 걸 확인함
- 데이터패스는 지수 ROM, 상수 ROM, 시프터, 덧셈기 등으로 이뤄지고 시프트 레지스터가 CORDIC 계산용 16개 상태 비트를 보관함
- CORDIC은 1956년 잭 볼더가 마하 2 폭격기 B-58 허슬러의 항법 컴퓨터를 대체할 디지털 장치를 설계하며 고안한 알고리즘으로, 곱셈과 나눗셈 없이 시프트와 덧셈, 테이블 조회만 씀
Hacker News opinions
여기 글쓴이다. 8087에 대해 궁금한 거 있으면 다 받아줌.
대단한 작업이다. 이 알고리즘 C로 직접 구현해보는 것도 꽤 재밌을 듯.
이런 딥다이브 볼 때마다 좋더라. 160lb짜리 디지털 컴퓨터 한 대 분량이 실리콘에 굳혔다는 게 놀랍고, 리버스 엔지니어링도 대단함.
수치해석이랑 저수준 하드웨어가 이렇게 섞이는 게 흥미롭다. 20세기 엔지니어들이 똑똑하기도 하고 창의적이기도 하고.
fptan이 레지스터 스택에 1까지 밀어넣는 게 항상 이상했거든. 8087에서 y/x로 탄젠트 구하던 코드가 뉴 프로세서에서 y/1으로 그대로 동작하게 하려는 하위호환이었구나 싶더라.