먼저, Keelan의 의견 과 Turbo J의 답변에서 지적했듯이 측정은 네이티브 MIPS가 아닌 113,093 Dhrystone MIPS입니다.
i7 3630QM의 아이비 브릿지 (Ivy Bridge) 마이크로 아키텍처는 사이클 당 4 개의 융합 된 µops 만 커밋 할 수 있지만 사이클 당 6µops의 실행을 시작할 수 있습니다. (코드 트레이스에서 융합 된 µops 의 수는 명령어 수와 대략 동일합니다. 일부 복잡한 명령어는 융합되지 않은 여러 µops로 디코딩되며 일부 명령어 쌍은 단일 µop에 융합 될 수 있습니다 (예 : 즉시 비교) 조건부 점프가 뒤 따릅니다.)
단일 사이클에서 여러 명령을 실행하는 방법에 대한 두 가지 추측은 상당히 유효하며 실제 프로세서에서 사용되었습니다. 더 빠른 내부 시계가 사용된다는 첫 번째 추측은 원래 Pentium 4의 "fireball"ALU에 사용되었습니다. 이 ALU는 나머지 코어 주파수의 두 배로 클럭되었으며 이미 상대적으로 높았습니다.
(이것은 엇갈린 ALU를 사용하여 수행되었습니다. 추가의 절반이 한 사이클로 완료되었으므로 종속 작업이 다음 사이클에서 결과의 절반을 사용할 수 있습니다. add, xor 또는 left shift와 같은 조작의 경우 너비 파이프 라인이라고도하는 스 태거 링은 단일 사이클 결과 대기 시간 및 단일 사이클 처리량을 허용합니다.)
약간 관련된 기술인 계단식 ALU가 HyperSPARC에 의해 사용되었습니다. HyperSPARC는 두 ALU의 결과를 세 번째 ALU로 제공했습니다. 이를 통해 두 번의 독립 작업과 세 번째 종속 작업을 단일 주기로 실행할 수 있습니다.
"코어 당 여러 개의 동시 파이프 라인이있다"는 사용자의 추측은 다른 기법입니다. 이러한 유형의 설계를 슈퍼 스칼라라고하며 단일주기에서 실행되는 작업 수를 늘리는 가장 일반적인 방법입니다.
주목할만한 몇 가지 다른 확률과 명령 실행 끝이 있습니다. 일부 작업은 일반 실행 장치 외부에서보다 효율적으로 수행 할 수 있습니다. 이동 제거 기술은 비 순차적 프로세서에서 레지스터 이름 바꾸기를 사용하여 레지스터 이름을 바꾸는 동안 이동 작업을 수행합니다. 이동은 단순히 이름 바꾸기 테이블의 한 위치 (레지스터 별명 테이블)에서 다른 위치로 실제 레지스터 번호 를 복사합니다 . 이를 통해 실행 너비가 효과적으로 증가 할뿐만 아니라 종속성도 제거됩니다. 이 기술은 스택 기반 x87에서 초기에 사용되었지만 이제는 인텔의 고성능 x86 프로세서에서 널리 사용됩니다. (x86에서 파괴적인 2 연산 명령어를 사용하면 일반적인 RISC보다 이동 제거가 더 유용합니다.)
이동 제거와 유사한 기술은 이름을 바꾸는 동안 레지스터 제로화 명령을 처리하는 것입니다. 0 값을 제공하는 레지스터 이름을 제공하면 레지스터 지우기 명령 (xor 또는 같은 두 피연산자가 같은 레지스터 인 빼기 등)만으로 해당 이름을 이름 바꾸기 테이블 (RAT)에 삽입 할 수 있습니다.
일부 x86 프로세서에서 사용되는 다른 기술은 푸시 및 팝 작업 비용을 줄입니다. 일반적으로 스택 포인터를 사용하는 명령은 스택 포인터의 값을 업데이트하기 위해 이전 푸시 또는 팝을 위해 전체주기를 기다려야합니다. 푸시 앤 팝은 스택 포인터에 작은 값을 더하거나 뺄뿐임을 인식함으로써 여러 가산 / 감산 결과를 병렬로 계산할 수 있습니다. 추가를위한 주요 지연은 캐리 전파이지만 작은 값을 사용하면 기본 값의 더 중요한 비트 (이 경우 스택 포인터)는 최대 하나의 캐리 인을 갖습니다. 이는 캐리 선택 가산기와 유사한 최적화가 작은 값의 여러 추가에 적용될 수 있도록합니다. 또한 스택 포인터는 일반적으로 상수에 의해서만 업데이트되므로
명령을보다 복잡한 단일 작업으로 병합 할 수도 있습니다. 명령어를 여러 개의 더 간단한 작업으로 분리하는 역 프로세스는 오래된 기술이지만, 명령어를 병합하면 (인텔이라는 매크로-옵 퓨전) 구현에서 명령어 집합에 노출 된 것보다 복잡한 작업을 지원할 수 있습니다.
이론적 인 측면에서 다른 기술이 제안되었습니다. RAT에서는 0 이외의 작은 상수가 지원 될 수 있으며 이러한 작은 값을 사용하거나 안정적으로 생성하는 일부 간단한 작업은 조기에 처리 될 수 있습니다. Mikko H. Lipasti 등 (2004)은 "물리적 레지스터 인라이닝"을 통해 레지스터 수를 줄이는 수단으로 RAT를 사용할 것을 제안했지만이 아이디어는 적은 수의 즉각적인 작업과 간단한 작업로드를 지원하도록 확장 될 수 있습니다.
추적 캐시 (제어 흐름의 특정 가정하에 명령 시퀀스를 저장)의 경우 분기로 분리 된 작업을 병합하고 추적에서 사용되지 않은 결과를 생성하는 작업을 제거 할 수 있습니다. 추적 캐시에서 최적화 캐싱을 수행하면 명령 스트림을 가져올 때마다 수행해야 할 경우 가치가없는 명령 병합과 같은 최적화를 수행 할 수 있습니다.
값 예측은 종속성을 제거하여 병렬로 실행할 수있는 작업 수를 늘리는 데 사용될 수 있습니다. 보폭 기반 값 예측기는 앞서 언급 한 특수 스택 엔진의 팝 / 푸시 최적화 와 유사 합니다. 직렬화를 제거하여 대부분 병렬로 여러 개의 덧셈을 계산할 수 있습니다. 값 예측의 일반적인 아이디어는 예측 된 값으로 종속 작업이 지연없이 진행될 수 있다는 것입니다. (지점 방향 및 목표 예측은 사실상 매우 제한된 값 예측 형식으로, 분기의 "값"(취득 여부에 따라)과 다음 명령 주소, 또 다른 값에 따라 다음 명령을 페치 할 수 있습니다.