컴퓨터 속도의 거의 모든 발전은 다음 영역 중 하나에서 비롯됩니다.
더 작은 트랜지스터
트랜지스터를 작게 만들면 다음 두 가지가 발생합니다.
- 물리적으로 서로 더 가깝기 때문에 전기 신호가 소스에서 대상으로 이동하는 데 걸리는 시간이 줄어 듭니다. 따라서 전기 신호는 50 년 전보다 더 빨리 이동하지 않지만 현재는 더 짧은 거리를 이동 합니다.
- 더 많은 트랜지스터가 칩에 포함될 수 있으며, 이는 더 많은 "작업"이 동시에 수행 될 수 있음을 의미합니다. 더 많은 트랜지스터가 추가 될수록 유용한 작업을 찾기가 어려워 지지만 많은 영리한 트릭이 사용됩니다 (아래 참조).
수업 당 더 "유용한 작업"
예를 들어, 일부 프로세서에는 정수를 곱하거나 나누는 명령이 없습니다. 대신이 작업은 느린 소프트웨어 루틴으로 수행해야합니다. 곱하기 및 나누기 명령어를 추가하면 작업 속도가 상당히 빨라집니다. 부동 소수점 명령어를 추가하면 부동 소수점 숫자가 필요한 소프트웨어의 속도가 빨라질 수 있습니다.
명령어 당 "유용한 작업"을 수행하는 중요한 방법은 단어 크기를 늘리는 것 입니다. 32 비트 숫자로 작업을 수행 할 수있는 CPU는 16 비트 또는 8 비트 CPU와 동일한 작업을 수행하기 위해 훨씬 적은 명령을 요구합니다.
일부 프로세서는 한 번에 여러 작업을 수행하는 명령, 특히 여러 데이터 항목 ( SIMD ) 에서 동일한 작업을 수행하는 명령을 지원합니다 .
사이클 당 추가 지침
"클럭주기"는 프로세서가 현재 상태에서 다음 상태로 전환되는 방식입니다. 어떤 의미에서는 프로세서가 한 번에 수행 할 수있는 가장 작은 작업 단위입니다. 그러나 특정 명령에 걸리는 클럭 사이클 수는 프로세서 설계에 따라 다릅니다.
파이프 라인 된 프로세서 가 등장하면서 별도의 명령이 "중복"될 수있게되었습니다. 즉, 이전 명령이 완료되기 전에 명령이 시작됩니다. 그러나 특정 명령어는 다음 명령어를 무효화 할 수 있으며, 이는 다음 명령어가 부분적으로 실행될 때까지 알 수 없으므로 상황이 복잡해질 수 있습니다. 파이프 라인 프로세서에는 모든 것이 제대로 작동하도록하는 논리가 포함되어 있지만 성능 특성은 더 복잡합니다.
슈퍼 스칼라 프로세서 는이를 한 단계 더 끌어 올려 문자 그대로 두 명령을 동시에 실행할 수 있으며, 비 순차적 실행 은 한 단계 더 나아가 명령을 순서대로 실행할 수 없습니다. 이러한 기능을 사용하려면 명령어 스트림을 분석하여 어떤 명령어가 서로 충돌하지 않는지 알아 내야합니다.
다른 트릭 (예 : 분기 예측 , 추측 실행 )이 있지만 더 중요한 것은 전체 그림입니다.
- 모든 인스트럭션은 일정한 수의 클럭 사이클을 완료해야합니다 (반드시 일정하지는 않음)
- 그러나 한 번에 여러 지침을 진행할 수 있습니다
- 따라서 하이 엔드 프로세서의 경우> 1 인 측정 가능한 " 사이클 당 명령어 수 "가 있습니다.
- 하지만 작업량에 따라 크게 달라집니다
초당 더 많은 사이클
다시 말해, 클럭 속도가 빠릅니다 . 클럭 속도를 높이면 열 발생이 증가 할뿐만 아니라 회로 안정화 시간 제한이 더 작기 때문에 더 잘 훈련 된 칩 설계가 필요합니다. 우리는 실용적인 한계에 도달했을 때까지 2000 년대까지이 중 많은 마일리지를 얻었습니다.
적시에 적절한 장소에있는 데이터
트랜지스터 축소로 인해 CPU 내부의 구성 요소가 점점 가까워지고 있지만 CPU와 RAM은 여전히 5-10cm 떨어져 있습니다. 명령어가 RAM에서 무언가를 필요로한다면, 그 명령어를 완료하는 데 5-6주기가 걸리지 않을 것입니다. 약 200이 걸립니다. 이것은 폰 노이만 병목 현상의 문제입니다.
이것에 대한 우리의 주요 무기는 캐시 입니다. 최근에 액세스 한 데이터는 다시 액세스 될 가능성이 높으므로 CPU 칩 내에있는 특수 메모리 (캐시라고 함)에 보관되므로 훨씬 빠르게 액세스 할 수 있습니다.
그러나 다른 기술 (예 : 파이프 라이닝 및 분기 예측 )은 프로세서가 데이터가 도착하기를 기다리는 동안 유용한 작업을 수행하고 어느 데이터가 곧 필요할지 예측할 수 있도록 도와줍니다.
다중 및 / 또는 특수 프로세서
여러 프로세서보다 단일 프로세서 용 소프트웨어를 작성하는 것이 훨씬 쉽습니다. 그러나 때로는 성능 / 비용 / 전력 소비 이점이 가치가 있습니다.
또한 특정 프로세서는 특정 작업에 특히 적합합니다. 예를 들어 GPU 는 2D 및 3D 그래픽 및 효과 렌더링에 필요한 계산을 위해 특별히 설계되었습니다.
멀티 코어 프로세서 는 기본적으로 단일 칩의 여러 프로세서입니다.