더 많은 트랜지스터가 더 많은 처리 능력을 갖는 이유는 무엇입니까?


43

Wikipedia에 따르면 처리 능력은 무어의 법칙과 밀접한 관련이 있습니다.

http://en.wikipedia.org/wiki/Moore's_law

집적 회로에 저렴하게 배치 할 수있는 트랜지스터의 수는 약 2 년마다 두 배가되었습니다. 이 추세는 반세기 이상 지속되어 2015 년 이후까지 중단 될 것으로 예상되지 않습니다. 많은 디지털 전자 장치의 기능은 처리 속도, 메모리 용량, 센서 및 디지털 카메라의 픽셀 수 및 크기까지 Moore의 법칙과 밀접하게 연관되어 있습니다. 이들 모두는 (거의) 지수 속도로 개선되고 있습니다.

컴퓨터 아키텍처에 대한 배경 지식이있는 사람으로서 CPU에 더 많은 트랜지스터를 던지면 왜 명령이 대략 순차적으로 읽히고 실행되기 때문에 그 힘을 향상시키는 지 이해할 수 없습니다. 아무도 내가 누락 된 부분을 설명 할 수 있습니까?


10
더 많은 트랜지스터 = 더 병렬
토비 Jaffey

2
프로세서의 코어 수에 관계없이 사실입니다.
Thomas O

1
예. 더 많은 트랜지스터는 더 많은 병렬 실행 장치를 넣을 수 있음을 의미합니다. 더 큰 캐시. 더 깊은 파이프 라인.
Kaz

1
캐시는 큰 것입니다. 캐시 전용 실리콘 부동산의 비율이 증가하고 있다고 생각합니다. 최신 프로세서의 성능은 대부분 캐싱에 기인하며 캐싱은 로컬 성이있을 때만 작동하지만 캐시가 클수록 로컬 리티에 대한 요구가 더 완화됩니다 (더 이상한 메모리 액세스 패턴을 가진 더 큰 응용 프로그램은 여전히 ​​속도가 빨라집니다).
Kaz

2
승수 만 생각해보십시오. 충분한 트랜지스터를 사용하면 전체 조회 테이블을 사용하고 한 번에 전체 곱셈을 수행 할 수 있습니다. 더 적은 트랜지스터로 반복 추가와 같은 작업을 수행해야합니다.
David Schwartz

답변:


29

더 많은 전력을 공급하는 많은 것들이 더 많은 트랜지스터를 필요로합니다. 더 넓은 버스는 거의 모든 프로세서 구성 요소에서 트랜지스터 카운트를 확장합니다. 고속 캐시는 캐시 크기에 따라 트랜지스터를 추가합니다. 파이프 라인을 늘리면 스테이지와 더 복잡한 컨트롤 유닛을 추가해야합니다. 파이프 라인에서 병목 현상을 완화하는 데 도움이되는 실행 단위를 추가하면 각각 더 많은 트랜지스터가 필요하며 실행 단위를 유지하도록하는 컨트롤에 더 많은 트랜지스터가 추가됩니다.

문제는 전자 회로에서 모든 것이 병렬로 발생 한다는 것입니다 . 소프트웨어 세계에서는 기본적으로 순차적 인 것이 있으며, 소프트웨어 디자이너는 하드웨어의 병렬 특성을 활용할 수 있도록 소프트웨어에 병렬 처리 기능을 구현하는 데 큰 어려움을 겪습니다. 병렬 처리는 동시에 더 많은 일이 발생한다는 것을 의미하므로 속도와 거의 같습니다. 병렬로 수행 할 수있는 작업이 많을수록 작업을 더 빨리 수행 할 수 있습니다. 유일한 실제 병렬 처리는 작업에 더 많은 트랜지스터가있을 때 당신이 얻을 것입니다.


19

비 VLIW ISA에서도 첫 번째 명령이 반드시 "순차적으로 실행"되는 것은 아니며 실행은 순차적으로 만 나타나야합니다. 순차적 슈퍼 스칼라 구현은 하나 이상의 명령어를 다른 명령어와 동시에 실행할 수 있습니다. 이를 효과적으로 수행하려면 명령어 디코딩을위한 하드웨어를 늘리고 (확장), 명령어의 데이터 독립성을 병렬로 실행하고, 실행 리소스를 늘려야하며, 레지스터 파일 포트 수가 일반적으로 증가하도록 하드웨어를 추가해야합니다. 이들 모두 트랜지스터를 추가합니다.

비 순차적 구현은 데이터 종속성이없는 한 이후의 명령을 이전 명령보다 먼저 실행할 수 있도록하며, 추가 하드웨어를 사용하여 데이터를 사용할 수있는 즉시 명령 일정을 처리하고 매핑에 이름 바꾸기 레지스터 및 하드웨어를 추가합니다. 읽기 후 쓰기 및 쓰기 후 쓰기 위험을 피하기 위해 이들을 할당하고 해제합니다 (더 많은 트랜지스터). 비 순차적 실행은 프로세서가 정지되지 않도록합니다.

비 순차적 프로세서에서로드 및 저장 순서를 다시 정렬하려면 프로그램 순서의 초기에 상점이 동일한 주소의 이후로드로 결과를 전달해야합니다. 이는 저장소가 메모리 (캐시)에 커밋 될 때까지 저장소의 주소 (및 크기) 저장소 (및 데이터 저장소)와 주소 비교 논리를 의미합니다. (메모리 일관성 모델이 약한 ISA의 경우 다른 프로세서, 더 많은 트랜지스터의 저장소와 관련하여로드가 올바르게 정렬되어 있는지 확인해야합니다.)

파이프 라이닝은 추가적인 제어 및 버퍼링 오버 헤드를 추가하고 명령 처리의 다른 부분에 대한 논리 재사용을 방지하지만 명령 처리의 다른 부분이 다른 명령에 대해 시간이 겹치는 것을 허용합니다.

파이프 라이닝 및 슈퍼 스칼라 실행은 제어 위험 (예 : 조건부 분기 및 점프)의 영향을 증가시킵니다. 파이프 라이닝 (및 비 순차적 실행)은 무조건적인 점프에서도 대상의 가용성을 지연시킬 수 있으므로, 대상 (및 조건부 분기의 방향)을 예측하기위한 하드웨어를 추가하면 명령의 페치가 필요한 데이터를 사용할 수 있도록 프로세서. 보다 정확한 예측 변수에는 더 많은 트랜지스터가 필요합니다.

비 순차적 프로세서의 경우, 모든 이전 저장소의 주소가 계산되기 전에 메모리에서로드가 실행되도록하는 것이 바람직 할 수 있으므로, 예측을 포함하여 이러한 추론을 처리하기위한 일부 하드웨어가 필요합니다.

캐시는 대기 시간을 줄이고 메모리 액세스 대역폭을 증가시킬 수 있지만 데이터를 저장하고 태그를 저장하기 위해 트랜지스터를 추가합니다 (및 요청 된 주소와 태그를 비교). 교체 정책을 구현하려면 추가 하드웨어도 필요합니다. 하드웨어 프리 페칭은 더 많은 트랜지스터를 추가합니다.

소프트웨어가 아닌 하드웨어에서 기능을 구현하면 성능이 향상 될 수 있습니다 (트랜지스터가 더 필요함). 예를 들어 TLB 관리, 곱셈 또는 부동 소수점 연산과 같은 복잡한 연산, 선행 0과 같은 특수 연산. (명령을 추가하면 명령 디코딩의 복잡성과 일반적으로 실행의 복잡성이 증가합니다 (예 : 실행 하드웨어의 어떤 부분을 사용할지 제어).)

SIMD / 벡터 작업은 명령 당 수행되는 작업량을 늘리지 만 더 많은 데이터 저장소 (더 넓은 레지스터)를 필요로하며 일반적으로 더 많은 실행 리소스를 사용합니다.

(추론적인 멀티 스레딩은 또한 여러 프로세서가 단일 스레드 프로그램을 더 빠르게 실행할 수있게합니다. 분명히 칩에 프로세서를 추가하면 트랜지스터 수가 증가합니다.)

더 많은 트랜지스터를 사용할 수있게되면 컴퓨터 아키텍트는 소프트웨어에 더 많은 레지스터를 볼 수있는 ISA를 제공 할 수 있으며, 레지스터 액세스보다 속도가 느리고 어느 정도의 간접적 인 (예 : 스택에 오프셋 추가) 메모리 액세스 빈도를 줄일 수 있습니다 대기 시간이 증가합니다.

칩이 아닌 시스템의 칩 수를 늘리는 통합 기능은 통신 대기 시간을 줄이고 대역폭을 증가시켜 성능을 향상시킵니다. (또한 전력 소비가 감소하여 성능이 향상 될 수 있습니다.)

명령 실행 수준에서도 트랜지스터를 추가하면 성능이 향상 될 수 있습니다. 예를 들어, 캐리 선택 가산기는 하위 비트에서 캐리의 다른 가정과 병행하여 상위 비트를 두 번 병렬로 추가하여 하위 비트에서 캐리가 가능할 때 상위 비트의 정확한 합을 선택하여 명백히 단순한 것보다 더 많은 트랜지스터를 필요로한다 리플 캐리 가산기이지만 전체 합 생성 지연을 줄입니다. 마찬가지로, 한 줄의 캐리-세이브 가산기가있는 멀티 플라이어는 Dadda (또는 Wallace) 트리 멀티 플라이어보다 더 적은 수의 트랜지스터를 사용하지만 속도가 느리므로 파이프 라인 할 수 없습니다 (따라서 다른 멀티플라이가 더 빠른 동안 실행을 시작할 수 있도록 복제해야 함) 곱하기 진행 중).

위의 내용은 소진 될 수 있지만 전체가 아닙니다!


2
새로운 사람으로부터 훌륭한 답변!
코너 울프

12

트랜지스터의 수는 반드시 더 많은 처리 전력과 관련이있는 것은 아니지만, 트랜지스터가 많을수록 프로세서는 이전보다 점점 더 복잡한 명령을 수행 할 수 있습니다. 예를 들어, SSE가있는 프로세서는 추가 트랜지스터를 사용하여 이러한 복잡한 명령을 구현합니다 (예를 들어 한 번의 주기로 많은 수 추가).


2
Alan Kay는 Xerox PARC에서 스몰 토크를 작업 한 이래로 잘못된 아키텍처와 소프트웨어 비 효율성으로 인해 18 년 동안 트랜지스터가 두 배로 늘어 났으며 컴퓨터가 트랜지스터 두 배가 제시하는 것만 큼 빠르지 않기 때문에 18 년 동안 트랜지스터가 두 배로 줄어들 었다고 계산했습니다.
JPC

5

또 다른 요인 : 더 많은 트랜지스터를 주어진 영역에 넣을수록 더 작아집니다.


트랜지스터가 점점 더 가까워 질수록 누설 전류 증가와 같은 원하지 않는 다른 효과가 발생하므로 성능과 저전력 간의 균형을 유지해야합니다. 대부분의 제조업체는 성능을 추구 한 것으로 보입니다.
Thomas O

4

최근 몇 년간 마이크로 프로세서는 상당히 길어졌으며, 더 긴 파이프 라인, 예측 분기 및 온칩 캐시와 같은 것들이 모두 프로세서와 관련된 복잡성에 추가되었습니다.

CPU 처리, 페치, 디코드, ALU, 쓰기의 기본 사항은 여전히 ​​동일하지만 속도를 높이기 위해 더 긴 파이프 라인이 사용됩니다. 파이프 라인이 길수록 지속적인 코드 실행 성능이 향상되지만 코드 분기가 성능을 손상시킬 때 적중 시간이 더 커집니다. 치료, 예측 분기. 예측 분기는 영업 비밀이며 인텔은 일반적으로 전체 작업을 공개하지 않고 단순히 CPU에서 가능한 한 높은 성능을 유지하기 위해 사용합니다.

캐시 메모리는 RAM보다 훨씬 빠르지 만 RAM에서 캐시로, 캐시에서 RAM으로 다시 이동해야하는 것은 무엇입니까 ??? 다시 말하지만 독점적이지만 트랜지스터를 다시 구현해야합니다.

따라서 추가 트랜지스터는 더 긴 파이프 라인, 예측 분기 알고리즘, 캐시 메모리 및 메모리 알고리즘과 같은 방식으로 진행됩니다.

멀티 코어 프로세서와 공유 메모리 / 리소스 액세스 컨트롤러는 말할 것도 없습니다.

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