# 펜티엄에는 3을 곱하는 복잡한 회로가 포함되어 있음

> Clean Markdown view of GeekNews topic #19545. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19545](https://news.hada.io/topic?id=19545)
- GeekNews Markdown: [https://news.hada.io/topic/19545.md](https://news.hada.io/topic/19545.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-04T08:36:38+09:00
- Updated: 2025-03-04T08:36:38+09:00
- Original source: [righto.com](https://www.righto.com/2025/03/pentium-multiplier-adder-reverse-engineered.html)
- Points: 3
- Comments: 1

## Topic Body

- 1993년 Intel은 고성능 Pentium 프로세서를 출시했음  
  - Pentium의 회로를 분석하던 중, 3으로 곱하는 복잡한 회로를 발견  
  - 이 회로는 Pentium의 부동소수점 곱셈기 회로의 일부로, 64비트 숫자를 8진수 기반으로 곱셈함  
- **8진수 기반 곱셈의 필요성**  
  - 이진수 곱셈은 개념적으로 간단하지만 느림  
  - Pentium은 8진수 기반으로 곱셈하여 회로를 줄이고 속도를 높임  
  - 8진수 곱셈은 0에서 7까지의 숫자로 곱해야 하므로 복잡함  
- **Booth 알고리듬과 ×3 회로**  
  - Booth 알고리듬을 사용하여 곱셈을 최적화함  
  - ×3 회로는 부동소수점 곱셈에서 특별한 경우로 처리되어야 함  
  - 이 회로는 빠르게 작동해야 하며, 캐리 룩어헤드와 같은 기술을 사용하여 성능을 극대화함  
- **캐리 룩어헤드와 병렬 프리픽스 덧셈기**  
  - 캐리 룩어헤드 덧셈기는 모든 캐리 비트를 병렬로 계산하여 덧셈을 빠르게 수행  
  - 병렬 프리픽스 덧셈기를 사용하여 8비트 청크로 캐리 룩어헤드를 구현  
  - Kogge-Stone 알고리듬을 사용하여 지연을 최소화하고 회로를 효율적으로 구성  
- **캐리 셀렉트 덧셈기**  
  - 캐리 셀렉트 덧셈기는 두 개의 덧셈을 동시에 수행하여 캐리가 결정되면 즉시 결과를 제공  
  - Pentium은 ×3 회로에서 각 8비트 청크에 대해 캐리 셀렉트 덧셈기를 사용  
- **BiCMOS 출력 드라이버**  
  - ×3 회로의 출력은 높은 전류가 필요하며, BiCMOS 공정을 사용하여 신호 지연을 줄임  
  - BiCMOS는 CMOS와 바이폴라 트랜지스터를 결합하여 높은 성능을 제공  
- **결론**  
  - Pentium의 ×3 회로는 복잡한 설계로, 과거의 마이크로프로세서보다 더 많은 트랜지스터를 사용함  
  - 이는 프로세서의 복잡성이 얼마나 증가했는지를 보여주는 예시

## Comments



### Comment 35385

- Author: neo
- Created: 2025-03-04T08:36:38+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43233143) 
* Trinary 컴퓨터 에뮬레이션에서 3의 거듭제곱으로 나누는 것을 비트 시프트와 덧셈으로 변환하는 방법이 있음
  - 1/3을 1/2 - 1/2(1/3)으로 표현할 수 있음
  - 이를 무한히 반복하여 1/3 = -(-1/2)^N으로 표현 가능함
  - 2와 3의 임의의 거듭제곱 쌍으로도 가능함
  - 이를 통해 고정된 시간 내에 상수로 나누는 회로를 덧셈기와 뺄셈기로만 구성할 수 있음

* Cinematronics 아케이드 게임 프로세서는 두 개의 12비트 누산기를 가짐
  - 곱셈 명령은 24비트 값으로 시프트하고 메모리 내용을 더함
  - 8개의 곱셈을 연속으로 실행하여 24비트 결과를 얻음
  - 주로 게임 객체의 좌표 회전을 위한 2x2 행렬 곱셈에 사용됨
  - 1970년대 중반에 7400 시리즈 부품을 사용하여 5MIPS의 최고 처리량을 가짐

* Peter Kogge는 Stanford에서 박사 학위를 받았고, IBM 펠로우로서 다중 코어 CPU를 발명한 인물임

* 주소 계산에서 3으로 곱하는 것은 흔한 작업임
  - LEA 명령어를 사용하여 단일 사이클 내에 수행할 수 있음
  - 트랜지스터 예산을 사용하는 것이 좋은 선택이었음

* 곱셈기에서 7로 곱하는 대신 8을 곱하고 1을 빼는 방법이 있음
  - 이는 캐리 룩어헤드 회로와 유사함
  - 7 = 8-1, 6 = 8-2, 5 = 8-3, 4 = 8-4로 표현 가능함

* ×3 곱셈기는 약 9000개의 트랜지스터를 포함하며, 이는 1976년의 Z80 마이크로프로세서보다 많음
  - 이는 프로세서 복잡성의 엄청난 성장을 보여줌
  - 오늘날 실리콘 반도체 기술의 한계에 도달했으며, 더 스마트하게 작동해야 할 때임

* radix-8 부스 곱셈기는 x3 회로가 필요함
  - 이는 fmax를 밀어내기 위한 영역/성능 트레이드오프임

* 8086: 29,000
  - 386: 275,000
  - 486: 1.2 million
  - Pentium: 3.1 million
  - NSA는 2000년 이후에 참여함

* radix-8 곱셈의 단점은 0에서 7까지의 숫자로 곱하는 것이 복잡함
  - 2로 곱하는 것은 비트를 왼쪽으로 1비트 이동하는 것과 같음
  - 4로 곱하는 것은 비트를 왼쪽으로 2비트 이동하는 것과 같음
  - 7로 곱하는 것은 8을 곱하고 1을 빼는 방법으로 해결 가능함
  - ×3은 2x와 1x의 합 또는 4x와 1x의 차로 계산할 수 있음
  - ×6을 쉽게 계산할 수 있다면, ×3은 그 값을 오른쪽으로 시프트하여 얻을 수 있음
