예를 들어, 2.66GHz 듀얼 코어 Core i5가 듀얼 코어 인 2.66GHz 코어 2 듀오보다 빠른 이유는 무엇입니까?
적은 클록 사이클로 정보를 처리 할 수있는 새로운 명령어 때문입니까? 다른 아키텍처 변경 사항은 무엇입니까?
이 질문은 자주 나오며 답은 대개 같습니다. 이 게시물은이 질문에 대한 결정적이고 정식적인 답변을 제공하기위한 것입니다. 추가 정보를 추가하려면 답변을 편집하십시오.
예를 들어, 2.66GHz 듀얼 코어 Core i5가 듀얼 코어 인 2.66GHz 코어 2 듀오보다 빠른 이유는 무엇입니까?
적은 클록 사이클로 정보를 처리 할 수있는 새로운 명령어 때문입니까? 다른 아키텍처 변경 사항은 무엇입니까?
이 질문은 자주 나오며 답은 대개 같습니다. 이 게시물은이 질문에 대한 결정적이고 정식적인 답변을 제공하기위한 것입니다. 추가 정보를 추가하려면 답변을 편집하십시오.
답변:
일반적으로 새로운 지침 때문이 아닙니다. 프로세서가 동일한 명령을 실행하는 데 더 적은 명령 사이클이 필요하기 때문입니다. 여러 가지 이유가있을 수 있습니다.
캐시가 크면 메모리를 기다리는 데 낭비되는 시간이 줄어 듭니다.
실행 단위가 많을수록 명령에서 작업을 시작하기 위해 대기하는 시간이 줄어 듭니다.
더 나은 브랜치 예측은 실제로 실행될 필요가없는 명령을 추측 적으로 실행하는 데 낭비되는 시간이 줄어든다는 것을 의미합니다.
실행 장치가 향상되면 명령이 완료되기를 기다리는 시간이 줄어 듭니다.
파이프 라인이 짧으면 파이프 라인이 더 빨리 채워집니다.
등등.
클럭 속도는 무한정 증가 할 수 없습니다.
언뜻보기에 프로세서는 더 높은 클럭 속도를 통해 성능이 향상되면서 명령 스트림을 차례로 실행하는 것처럼 보일 수 있습니다. 그러나 클럭 속도만으로는 충분하지 않습니다. 클록 속도가 증가함에 따라 전력 소비 및 열 출력이 증가합니다.
클럭 속도가 매우 높으면 CPU 코어 전압을 크게 증가시켜야 합니다. T 코어 는 V 코어 의 제곱에 따라 증가하기 때문에 과도한 전력 소비, 열 출력 및 냉각 요구 사항으로 인해 클럭 속도가 더 이상 증가하지 않는 지점에 도달합니다. 이 한도는 Pentium 4 Prescott 시대 인 2004 년에 도달했습니다 . 최근 전력 효율의 개선이 도움이되었지만, 클럭 속도의 상당한 증가는 더 이상 가능하지 않습니다. 참조 : CPU 제조업체들은 프로세서의 클럭 속도를 증가 중지 이유는 무엇입니까?
수년간 최첨단 매니아 PC의 주식 시계 속도 그래프. 이미지 소스
겉보기 순차적 명령 스트림은 종종 병렬화 될 수 있습니다.
파이프 라이닝은 명령을 작은 조각으로 나눠서 병렬로 실행할 수 있습니다.
각 명령은 일련의 단계로 나눌 수 있으며, 각 단계는 프로세서의 별도 부분에 의해 실행됩니다. 명령 파이프 라이닝을 사용하면 각 명령이 완전히 완료 될 때까지 기다릴 필요없이 여러 명령이이 단계를 차례로 수행 할 수 있습니다. 파이프 라이닝은 더 높은 클럭 속도를 가능하게합니다. 각 클럭 사이클에서 각 명령의 한 단계를 완료함으로써 전체 명령을 한 번에 하나씩 완료해야하는 경우보다 각 사이클에 필요한 시간이 줄어 듭니다.
고전적인 RISC 파이프 라인은 명령어 인출, 명령 디코드, 명령 실행, 메모리 액세스 및 쓰기 되돌림 : 다섯 단계가 포함되어 있습니다. 최신 프로세서는 더 많은 단계로 실행을 세분화하여 더 많은 단계로 더 깊은 파이프 라인을 생성합니다 (그리고 각 단계가 작고 완료하는 데 걸리는 시간이 줄어들수록 달성 가능한 클럭 속도 증가).이 모델은 파이프 라이닝 작동 방식에 대한 기본적인 이해를 제공해야합니다.
그러나 파이프 라이닝은 올바른 프로그램 실행을 보장하기 위해 해결해야하는 위험을 초래할 수 있습니다.
각 명령어의 서로 다른 부분이 동시에 실행되기 때문에 올바른 실행을 방해하는 충돌이 발생할 수 있습니다. 이것을 위험 이라고 합니다. 데이터, 구조 및 제어의 세 가지 유형의 위험이 있습니다.
명령이 동시에 또는 잘못된 순서로 동일한 데이터를 읽고 수정하면 데이터가 위험 해져 결과가 잘못 될 수 있습니다. 여러 명령이 동시에 프로세서의 특정 부분을 사용해야하는 경우 구조적 위험이 발생합니다. 조건부 분기 명령이 발생하면 제어 위험 이 발생합니다.
이러한 위험은 다양한 방식으로 해결 될 수 있습니다. 가장 간단한 해결책은 파이프 라인을 간단히 정지시키고 파이프 라인의 명령 또는 명령을 일시적으로 보류하여 올바른 결과를 얻는 것입니다. 성능이 저하되므로 가능하면 항상 피해야합니다. 데이터 위험의 경우 피연산자 전달 과 같은 기술 을 사용하여 실속을 줄입니다. 제어 위험은 분기 예측을 통해 처리되며 특별한 처리가 필요하며 다음 섹션에서 다룹니다.
분기 예측은 전체 파이프 라인을 방해 할 수있는 제어 위험을 해결하는 데 사용됩니다.
조건부 분기 가 발생할 때 발생하는 제어 위험 은 특히 심각합니다. 브랜치는 특정 조건이 참인지 거짓인지에 따라 단순히 명령 스트림의 다음 명령이 아니라 프로그램의 다른 곳에서 실행이 계속 될 가능성을 소개합니다.
분기 조건이 평가 될 때까지 다음에 실행할 명령어를 결정할 수 없으므로 분기가없는 경우 파이프 라인에 명령어를 삽입 할 수 없습니다. 따라서 파이프 라인은 비워 지거나 ( 플러시 ) 파이프 라인에 스테이지가있는 것처럼 거의 많은 클럭 사이클을 낭비 할 수 있습니다. 분기는 프로그램에서 자주 발생하는 경향이 있으므로 제어 위험은 프로세서 성능에 심각한 영향을 줄 수 있습니다.
분기 예측 은 분기가 수행 될지 여부를 추측하여이 문제를 해결합니다. 이를 수행하는 가장 간단한 방법은 가지를 항상 가져 오거나 전혀 가져 가지 않는다고 가정하는 것입니다. 그러나 최신 프로세서는 예측 정확도를 높이기 위해 훨씬 더 정교한 기술을 사용합니다. 본질적으로 프로세서는 이전 분기를 추적하고이 정보를 여러 가지 방법으로 사용하여 다음에 실행할 명령을 예측합니다. 그런 다음 파이프 라인에 예측을 기반으로 올바른 위치의 명령이 제공 될 수 있습니다.
물론, 예측이 틀리면 분기 이후에 파이프 라인을 통과 한 모든 명령이 삭제되어 파이프 라인을 플러시해야합니다. 결과적으로 파이프 라인이 점점 길어짐에 따라 분기 예측 변수의 정확도가 점점 더 중요 해지고 있습니다. 특정 분기 예측 기술은이 답변의 범위를 벗어납니다.
캐시는 메모리 액세스 속도를 높이는 데 사용됩니다.
최신 프로세서는 주 메모리에서 액세스 할 수있는 것보다 훨씬 빠르게 명령을 실행하고 데이터를 처리 할 수 있습니다. 프로세서가 RAM에 액세스해야하는 경우 데이터를 사용할 수있을 때까지 실행이 오랫동안 중단 될 수 있습니다. 이 효과를 완화하기 위해 캐시 라는 작은 고속 메모리 영역 이 프로세서에 포함되어 있습니다.
프로세서 다이에서 사용 가능한 공간이 제한되어 있기 때문에 캐시 크기는 매우 제한적입니다. 이 제한된 용량을 최대한 활용하기 위해 캐시는 가장 최근에 또는 자주 액세스하는 데이터 ( 임시 로컬 리티 ) 만 저장합니다 . 메모리 액세스가 특정 영역 ( 공간 위치 ) 내에 클러스터링되는 경향이 있으므로 , 최근에 액세스 한 것 근처의 데이터 블록도 캐시에 저장됩니다. 참조 : 참조 지역
캐시는 더 큰 캐시가 작은 캐시보다 속도가 느린 경향이 있으므로 성능을 최적화하기 위해 다양한 크기의 다양한 레벨로 구성됩니다. 예를 들어, 프로세서는 크기가 32KB에 불과한 레벨 1 (L1) 캐시를 가질 수있는 반면, 레벨 3 (L3) 캐시는 수 메가 바이트 일 수 있습니다. 프로세서가 전체 캐시에서 데이터 교체를 관리하는 방법에 영향을 미치는 캐시 크기 및 캐시 연관성 은 캐시를 통해 얻은 성능 향상에 크게 영향을줍니다.
비 순차적 실행은 독립적 인 명령이 먼저 실행되도록하여 위험으로 인한 중단을 줄입니다.
명령어 스트림의 모든 명령어가 서로 의존하는 것은 아닙니다. 예를 들어, 비록이 a + b = c
전에 실행되어야한다 c + d = e
, a + b = c
그리고 d + e = f
독립적으로 동시에 수행 될 수있다.
비 순차적 실행 은이 사실을 이용하여 하나의 명령이 정지 된 상태에서 다른 독립적 인 명령을 실행할 수 있도록합니다. 잠금 단계에서 명령을 차례대로 실행하도록 명령하는 대신, 스케줄링 명령 하드웨어가 추가되어 독립적 인 명령을 임의의 순서로 실행할 수 있습니다. 필요한 데이터가 사용 가능 해지면명령이 명령 대기열로 발송 되고프로세서의 해당 부분으로 발행 됩니다. 이렇게하면 이전 명령의 데이터를 대기하는 명령이 독립적 인 이후의 명령을 묶지 않습니다.
슈퍼 스칼라 아키텍처를 사용하면 명령 스트림 내의 여러 명령을 동시에 실행할 수 있습니다.
위에서 설명한 기술은 명령 파이프 라인의 성능 만 향상시킵니다. 이러한 기술만으로는 클럭 사이클 당 둘 이상의 명령을 완료 할 수 없습니다. 그러나, 명령 스트림 내에서 개별 명령을 병렬로 실행할 수 있습니다 (예 : 명령 순서가 서로 의존하지 않는 경우 (위의 순서가 잘못된 실행 섹션에서 설명)).
슈퍼 스칼라 아키텍처 는 명령을 여러 기능 단위로 한 번에 보낼 수 있도록하여이 명령 수준 병렬 처리를 이용합니다. 프로세서는 명령이 동시에 전송 될 수있는 특정 타입 (정수 ALU와 같은) 및 / 또는 상이한 유형의 기능 유닛 (부동 소수점 및 정수 유닛)의 복수의 기능 유닛을 가질 수있다.
수퍼 스칼라 프로세서에서 명령은 비 순차적 설계에서와 같이 예약되지만 이제 여러 개의 발행 포트 가있어 다른 명령을 동시에 발행하고 실행할 수 있습니다. 확장 된 명령어 디코딩 회로를 통해 프로세서는 각 클럭 사이클에서 한 번에 여러 개의 명령어를 읽고 이들 간의 관계를 결정할 수 있습니다. 최신 고성능 프로세서는 각 명령의 기능에 따라 클럭 사이클 당 최대 8 개의 명령을 예약 할 수 있습니다. 이것이 프로세서가 클럭 사이클 당 여러 명령을 완료하는 방법입니다. 참조 : AnandTech의 Haswell 실행 엔진
더 짧은 시간에 복잡한 작업을 수행하는 고급 명령이 추가되었습니다.
트랜지스터 예산이 증가함에 따라 복잡한 연산을 다른 시간보다 훨씬 짧은 시간에 수행 할 수있는 고급 명령을 구현할 수있게되었습니다. 예를 들어 동시에 여러 데이터 조각에 대해 계산을 수행하는 SSE 및 AVX 와 같은 벡터 명령어 세트 와 데이터 암호화 및 암호 해독을 가속화 하는 AES 명령어 세트 가 있습니다.
이러한 복잡한 작업을 수행하기 위해 최신 프로세서는 마이크로 작업 (μops)을 사용 합니다. 복잡한 명령어는 μops의 시퀀스로 디코딩되며, 전용 버퍼에 저장되며 개별적으로 (데이터 의존성이 허용하는 한도 내에서) 실행되도록 예약됩니다. 이는 프로세서가 ILP를 악용 할 수있는 더 많은 공간을 제공합니다. 성능을 더욱 향상시키기 위해, 최근에 디코딩 된 μops를 저장하기 위해 특별한 μop cache를 사용할 수 있으므로 최근에 실행 된 명령어에 대한 μops를 빠르게 조회 할 수 있습니다.
그러나 이러한 지침을 추가해도 성능이 자동으로 향상되지는 않습니다. 새로운 명령어는 응용 프로그램을 사용하도록 작성된 경우에만 성능을 향상시킬 수 있습니다. 이 명령어를 사용하는 응용 프로그램은이를 지원하지 않는 구형 프로세서에서는 작동하지 않기 때문에 이러한 명령어의 채택이 방해를받습니다.
파이프 라인은 수년에 걸쳐 더 길어짐에 따라 각 단계를 완료하는 데 필요한 시간을 줄이고 높은 클럭 속도를 가능하게합니다. 그러나 무엇보다도 파이프 라인이 길면 잘못된 분기 예측에 대한 패널티가 높아 지므로 파이프 라인이 너무 길 수 없습니다. 매우 빠른 클럭 속도에 도달하기 위해 Pentium 4 프로세서는 Prescott 에서 최대 31 단계의 매우 긴 파이프 라인을 사용했습니다 . 성능 결함을 줄이기 위해 프로세서는 명령이 실패하더라도 명령을 실행하려고 시도하고 성공할 때까지 계속 시도 합니다. 이로 인해 전력 소비가 매우 높아지고 하이퍼 스레딩 으로 인한 성능이 저하되었습니다 . 최신 프로세서는 더 이상 파이프 라인을 더 이상 사용하지 않습니다. 특히 클럭 속도 스케일링이 벽에 도달했기 때문입니다.Haswell 은 14 단계에서 19 단계 사이의 파이프 라인을 사용하고 저전력 아키텍처는 짧은 파이프 라인을 사용합니다 (Intel Atom Silvermont 는 12 단계에서 14 단계).
보다 고급 아키텍처에서는 분기 예측의 정확도가 향상되어 잘못된 예측으로 인한 파이프 라인 플러시 빈도가 줄어들고 더 많은 명령을 동시에 실행할 수 있습니다. 오늘날 프로세서의 파이프 라인 길이를 고려할 때 이는 고성능을 유지하는 데 중요합니다.
트랜지스터 예산이 증가함에 따라 더 크고 효과적인 캐시가 프로세서에 내장되어 메모리 액세스로 인한 중단을 줄일 수 있습니다. 최신 시스템에서 메모리 액세스를 완료하려면 200 회 이상의주기가 필요할 수 있으므로 가능한 한 메인 메모리에 액세스 할 필요성을 줄이는 것이 중요합니다.
최신 프로세서는 고급 슈퍼 스칼라 실행 로직과 "더 넓은"설계를 통해 ILP를 더 잘 활용하여 더 많은 명령어를 동시에 디코딩하고 실행할 수 있습니다. 하 스웰의 아키텍처는 네 개의 명령어를 디코딩하고 클럭 사이클 당 8 마이크로 작업을 전달할 수 있습니다. 트랜지스터 예산을 늘리면 정수 ALU와 같은 더 많은 기능 단위를 프로세서 코어에 포함시킬 수 있습니다. 예약 스테이션, 재정렬 버퍼 및 레지스터 파일과 같이 비 순차적 및 스칼라 실행에 사용되는 주요 데이터 구조는 새로운 디자인으로 확장되어 프로세서가 더 넓은 명령 창을 검색하여 ILP를 활용할 수 있습니다. 이것이 오늘날 프로세서의 성능 향상에 중요한 원동력입니다.
최신 프로세서에는보다 복잡한 명령어가 포함되어 있으며 점점 더 많은 응용 프로그램에서 이러한 명령어를 사용하여 성능을 향상시킵니다. 명령어 선택 및 자동 벡터화 개선을 포함하여 컴파일러 기술의 발전 으로 이러한 명령어를보다 효과적으로 사용할 수 있습니다.
위의 사항 외에도 노스 브릿지, 메모리 컨트롤러 및 PCIe 레인과 같이 이전에 CPU 외부에 있던 부품을 더 많이 통합하면 I / O 및 메모리 대기 시간이 줄어 듭니다. 이는 다른 장치의 데이터 액세스 지연으로 인한 중단을 줄임으로써 처리량을 증가시킵니다.
절대적인 기준은 인텔 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼 입니다. 아키텍처 간의 변경 사항을 자세히 설명하고 x86 아키텍처를 이해하는 데 유용한 리소스입니다.
1 ~ 3C의 결합 된 볼륨을 다운로드하는 것이 좋습니다 (해당 페이지의 첫 번째 다운로드 링크). 제 1 권 2.2 장에는 원하는 정보가 있습니다.
핵심에서 Nehalem / Sandy Bridge 마이크로 아키텍처로 넘어 가면서이 장에 나와있는 몇 가지 일반적인 차이점은 다음과 같습니다.
전체 목록은 위에 제공된 링크 (Vol. 1, Ch. 2.2)에서 찾을 수 있습니다.
앞서 말한 모든 것은 사실이지만 어느 정도는 사실입니다. 제 대답은 짧습니다. 차세대 프로세서는 주로 더 크고 더 체계적인 캐시를 가지고 있기 때문에 "빠릅니다" . 이것이 컴퓨터 성능의 주요 요소입니다. 보다 정량적 인 고려 사항은 " Linux Magazine : HPC의 성능을 높이는 요소 "
요컨대, SPEC 컬렉션에서와 같이 가장 일반적인 응용 프로그램의 경우 제한 요소는 메모리입니다. 실제 지속 계산이 실행되면 캐시에 모두 데이터가로드되지만 모든 캐시 누락으로 인해 CPU 실행 파이프가 정지되고 대기합니다. 문제는 CPU 파이프 라인이 아무리 정교하거나 더 나은 명령어인지에 관계없이 명령어 수준 병렬 처리가 여전히 상당히 제한되어 있다는 것입니다 (일부 고도로 최적화 된 프리 페치 된 경우 제외). 중요한 종속성이 발견되면 모든 병렬 처리가 5-10 개의 CPU 클록으로 종료되는 반면, 수십 개의 CPU 클록이 캘린 라인을 제거하고 주 메모리에서 새로운 클록을로드합니다. 따라서 프로세서는 아무것도하지 않습니다. 이 전체 개념은 멀티 코어에도 적용됩니다.
따라서 "빠른"PC를 원한다면 가장 큰 캐시를 보유한 CPU로 구입하십시오.
CPU는 각 사이클 (클럭) 당 끔찍한 명령을 향상시키기 때문에 CPU가 더 높은 실행 단위 (계산 단위)를 포함하여 IPC를 향상시킬 수있는 방법을 개선 할뿐만 아니라 캐시, 램, 디코딩, 페치 대기 시간 감소, 개선 비 순차적 연산 및 분기 예측 후 지연 시간이 짧으면 서 캐시를 더 추가합니다. 더 높은 대역폭 캐시. 몇 번이고 새로운 지침을 추가하십시오. 명령 당 원하는 사이클 감소 (CPI)
클럭 속도는 필수 구성 요소 인 CPU 성능의 일부일 뿐이지 만 지난 수십 년 동안 메소드 노드가 벽에 부딪 쳤지 만 수랭식 품질에도 불구하고 5-0.5.2Ghz를 넘어서는 것은 없습니다. 드라이 아이스 또는 액체 질소에 의지하지 않고.