컴퓨터는 실제로 캐리-리더 헤드 가산기를 사용합니까?


12

대학 CS 과정에서 Kogge-Stone, Lander-Fischer 등과 같은 캐리 룩어 헤드 가산기에 대한 자세한 내용이 있습니다. 이들은 "업계에서 일반적"으로 설명됩니다. 그러나 최근에는 맨체스터 운반 체인을 제외하고 실제로 실제로 어디에서나 사용되었다는 증거를 찾을 수 없습니다. Google 검색은 저널 및 학술 연구 페이지 만 반환합니다. 기껏해야 가상의 구현이 제공됩니다.

내 질문은, 특정 장소 / 구현 캐리-미리보기 가산기가 사용됩니까? 아니면 실제 세계와 무관합니까?


1
고성능 프로세서의 사이클 시간과 단일 사이클 추가 대기 시간은 리플 캐리를 사용하지 않는 프로세서를 가리 킵니다 (그러나 캐리 선택 가능). 인텔의 22nm 프로세스에서도 300ps 미만으로 64 비트를 리플 링하는 것은 불가능할 수 있습니다.
Paul A. Clayton

@ PaulA.Clayton 캐리 셀렉트 또는 디코더와 유사한 가산기가 사용되는 몇 가지 데이터 시트를 통해 인상을 얻습니다.
qwr

답변:


16

이것은 매우 복잡한 답을 가진 간단한 질문입니다.

먼저, 일부 배경.

실제 VLSI 설계는 끊임없이 변화하는 균형을 유지하는 매우 기술적 인 분야입니다. 회로가 답을 계산하는 데 걸리는 시간이 유일한 중요한 요소는 아닙니다. 또한 전력 소모 및 물리적 영역과 함께 설계중인 회로가 실제로 아날로그임을 나타내는 여러 가지 요소가 있습니다 (예 : 와이어 저항, 기생 용량). 이들 모두는 실제 회로에서 중요하며 선택한 설계에 영향을 줄 수 있습니다.

둘째, 프로젝트의 전체 수명주기를 고려해야합니다. VLSI 구현에 적합한 가산기는 FPGA 구현에 적합하지 않을 수 있습니다. 디자인이 FPGA에서 테스트되는 단계를 거칠 경우 그림을 얻을 수 있습니다.

셋째, 모든 가산기가 동일하지는 않습니다. 일반적인 CPU에는 다른 작업을 수행하는 많은 가산기가 있습니다. 아마도 여러 정수 ALU, 부동 소수점 가수 가산기, 주소 계산을 수행하는 가산기, 분기 대상을 계산하는 가산기 등이 있습니다. 그것은 현대 곱셈 장치에서 발견되는 캐리 저장 가산기를 세지 않습니다. 각각 고유 한 특성과 제약이 있습니다.

예를 들어, 분기 대상 계산에는 일반적으로 전체 단어에 작은 상수를 추가하는 것이 포함되는데, 이는 두 개의 전체 단어를 함께 추가하는 것과 다른 가산기 설계를 제안합니다. 마찬가지로 부동 소수점 추가에는 사이클보다 적은 추가 후 반올림 단계가 필요하므로 추가주기를 완료하기 위해 나머지주기를 훔칠 수없는 이유는 없습니다.

마지막으로, 아마도 가장 중요한 것은, 빅 플레이어 (예 : 인텔, AMD, 엔비디아)는 논문 및 / 또는 특허를 얻을 수 없다고 생각하지 않는 한 명백한 이유로 낮은 수준의 구현 세부 사항에 대해 상당히 긴밀한 관계를 맺고 있습니다. 그럼에도 불구하고 종종 리버스 엔지니어링없이 실제로 무엇을했는지 확신 할 수 없습니다.

우리가 알고있는 것이 몇 가지 있습니다.

꼭 알아야 할 것은 캐리-룩어 헤드 (carry-lookahead) 방법이 빌딩 블록이며 반드시 그 자체가 아니라는 것입니다. 여기에 비유가있을 수 있습니다.

알고리즘 클래스에 대해 생각한다면 빠른 정렬, 병합 정렬, 삽입 정렬 등과 ​​같은 정렬 알고리즘을 많이 배웠을 것입니다. 실제 환경에서 정렬이 성능 병목 현상이면 적절한 엔지니어는이를 "실제"정렬을 구성 할 수있는 기본 빌딩 블록으로 생각합니다.

예를 들어 GNU C ++ 표준 라이브러리의 정렬 알고리즘은 간격이 충분히 작아지면 삽입 정렬을 사용하여 빠른 정렬을 사용합니다. 그러나 몇 번의 통과 후에 빠른 정렬 분할이 병리학 적 동작에 도달 한 것처럼 보이면 힙 정렬로 돌아갑니다. 그것은 하나의 산업 강도 정렬을 만드는 세 가지 다른 정렬 알고리즘입니다.

가산기 회로도 마찬가지입니다. 예를 들어, 펜티엄 4 정수 단위는 Kogge-Stone과 Brent-Kung이 혼합 된 Han-Carlson 가산기를 사용하는 것으로 알려져 있습니다. (Han-Carlson은 전파 지연과 다이 영역 간의 절충점에서 전력 효율이 높기 때문에 "스위트 스폿"이기 때문에 특히 흥미 롭습니다.) 종종 여러 가지 방법을 혼합하여 사용하는 것이 좋습니다.

"순수한"캐리 미어 헤드 가산기는 수작업으로 설계 할 때 수퍼 스칼라가없는 최신 하이 엔드 CPU와 같이 합성 된 회로 (예 : Verilog "+"연산자를 Cadence 또는 Synopsys에 공급하는 경우)에서 여전히 표준입니다. 비 연속 실행 엔진은 정수 단위에 대해 약간 다른 디자인으로 이동하는 것 같습니다.

투기 가산기는 전파 지연이 극히 낮지 만 일부 시간 동안 만 제대로 작동하며 (시간의 95 %가 일반적 임) 투기 가산기가 정확한 결과를 반환하는지 여부를 아주 작은 논리로 알 수 있습니다. 따라서 아이디어는 투기 적 덧셈과 캐리 룩어 헤드 덧셈의 절반을 한 사이클로 동시에 수행하는 것입니다. 추론 가산기가 정답을 반환하면 지침이 수행됩니다. 그렇지 않으면 파이프 라인을 정지시키고 정확한 추가의 나머지 절반을 수행하십시오.

느린 경로에는 두 번의주기가 걸리므로 설계자는 일반적인 용도로는 속도가 느리더라도 더 많은 공간과 전력 효율적인 방법을 사용할 수 있습니다.


6

그렇습니다. 많은 컴퓨터에서 캐리 미리보기 추가기를 사용합니다. 오래된 마이크로 프로세서를 리버스 엔지니어링했으며 몇 가지 예를들 수 있습니다.

인텔 8008 (최초 8 비트 프로세서)의 ALU에는 동적 로직으로 구현 된 대형 캐리-헤드 (carry-lookahead) 회로가 포함되었습니다. 이 회로는 ALU 자체만큼 많은 다이 공간을 차지했습니다. Carry lookahead는 8008 데이터 시트 에 나와 있습니다 (그림 3). ALU에 대한 carry-lookahead가있는 다른 1970 년대 프로세서를 보지 못했기 때문에 8008은 이와 관련하여 조금 특이합니다.

6502는 프로그램 카운터 (PC) 증 분기에 원시 캐리-룩-헤드를 사용합니다. PC의 하위 바이트에서 캐리가 있는지 감지하고이를 사용하여 상위 바이트를 증가시킵니다. 이는 리플 캐리를 잠재적으로 16 비트에서 8 비트로 줄입니다. 6502의 ALU는 리플 캐리를 사용하지만 캐리 로직은 비트를 교대로 전환하기 때문에 인버터를 경로에서 차단하고 약간 더 빠르게 만듭니다.

Z-80에는 PC 업데이트, inc / dec 명령 및 루프 카운터에 사용되는 16 비트 증분 / 감속기가 있습니다. 캐리-스킵 구조를 사용하므로 캐리는 2 비트 그룹으로 계산됩니다. 또한 비트 0-7, 7-11 및 12-14에서 캐리를 생성하기 위해 일부 캐리 예측을 사용합니다. 기타 리플 캐리 (로 계산 수행 세부 사항 ). Z-80의 ALU는 놀랍게도 4 비트이므로 각 8 비트 작업은 ALU를 통해 두 번 통과합니다.

반면에 8085는 16 비트 증분 / 감소기에 리플 캐리를 사용합니다. 그러나 6502와 마찬가지로 캐리 로직을 번갈아 비트로 뒤집어 약간의 속도 향상을 얻습니다.

ARM-1 캐리 룩어-단지 리플 반송로 32 비트 ALU를 갖는다. 또한 캐리 비트를 번갈아 뒤집는 트릭을 사용합니다.

미니 컴퓨터 세계에서는 내부 캐리 룩어 헤드가있는 잘 알려진 74181 4 비트 ALU 칩으로 많은 프로세서가 만들어졌습니다. 예로는 Data General Nova, Xerox Alto, VAX-11 / 780 및 TI-990이 있습니다. (더 긴 위키 백과 목록을 참조하십시오 .) 이들 중 일부는 각 4 비트 칩 사이에서 리플 캐리를 사용하고 일부는 전체 lookahead를 위해 74182 캐리 룩 칩을 사용합니다.

요약하면, 서로 다른 마이크로 프로세서는 성능 목표와 중요한 경로에있는 작업에 따라 다양한 캐리 기술을 사용합니다. ALU는 8008과 같은 완전 캐리-헤드를 사용하거나 Z-80과 같은 절반 크기 일 수도 있습니다. 이 증분 기는 일반적으로 8 비트 프로세서에서 16 비트이므로 리플 지연의 두 배가되기 때문에 성능 문제가 될 수 있습니다. 증분 기는 리플 캐리 (8085), 하나의 캐리 lookahead (6502) 또는 여러 개의 캐리 lookahead 스테이지 (Z-80)를 가질 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.