명령 파이프라인이란 무엇입니까?

모든 프로세서 명령에는 작업에 대한 여러 단계가 있습니다. 이러한 각 단계는 완료하는 데 단일 CPU 주기가 필요합니다. 이러한 단계는 명령어 가져오기, 명령어 디코드, 실행, 메모리 액세스 및 쓰기 저장입니다. 각각 완료해야 하는 명령을 받고, 연산 중인 값에서 연산을 분리하고, 프로세스를 실행하고, 결과가 기록될 레지스터를 열고, 열린 레지스터에 결과를 기록합니다.

역사적 순차 프로세서

초기 컴퓨터에서 CPU는 명령 파이프라인을 사용하지 않았습니다. 이러한 CPU에서는 각 단일 주기 작업이 모든 명령에 대해 발생해야 했습니다. 이는 다음 명령이 시작되기 전에 평균 명령이 완전히 처리되는 데 5클록 주기가 걸린다는 것을 의미했습니다. 일부 작업은 결과를 레지스터에 쓸 필요가 없을 수 있습니다. 즉, 메모리 액세스 및 쓰기 저장 단계를 건너뛸 수 있습니다.

명령 파이프라인이란 무엇입니까?

파이프라인이 없는 서브스칼라 프로세서에서는 각 명령의 각 부분이 순서대로 실행됩니다.

그러나 다음 명령으로 이동하기 전에 완전한 명령을 실행할 때 문제가 숨어 있습니다. 문제는 캐시 미스입니다. CPU는 현재 처리 중인 데이터를 레지스터에 저장합니다. 이는 1주기 대기 시간으로 액세스할 수 있습니다. 문제는 프로세서 코어에 내장되어 있기 때문에 레지스터가 작다는 것입니다. 데이터가 아직 로드되지 않은 경우 CPU는 더 크지만 더 느린 L1 캐시로 이동해야 합니다. 거기에 없으면 더 크고 더 느린 L2 캐시로 다시 이동해야 합니다. 다음 단계는 L3 캐시입니다. 마지막 옵션은 시스템 RAM입니다. 이러한 각 옵션은 확인하는 데 점점 더 많은 CPU 주기가 필요합니다.

이제 이렇게 추가된 대기 시간은 다음 명령을 시작하기 전에 각 명령을 순서대로 완전히 완료해야 하는 시스템에서 큰 문제가 될 수 있습니다. 명령 프로세서당 5사이클이었던 것이 갑자기 수십 또는 수백 클록 사이클 동안 하나의 명령에 중단될 수 있습니다. 그동안 컴퓨터에서는 아무 일도 일어나지 않습니다. 기술적으로 이것은 두 개의 독립적인 코어를 가짐으로써 다소 완화될 수 있습니다. 그러나 둘 다 잠재적으로 동시에 동일한 작업을 수행하는 것을 막을 수 있는 것은 없습니다. 따라서 멀티 코어 경로를 따라가는 것은 이 문제를 해결하지 못합니다.

클래식 RISC 파이프라인

RISC는 Reduced Instruction Set Computer의 약자입니다 . 각 명령을 더 쉽게 해독하여 성능을 최적화하는 프로세서 설계 스타일입니다. 이는 동일한 작업을 수행하는 데 더 적은 수의 명령이 필요하도록 보다 복잡한 명령 세트를 설계하는 CISC 또는 복합 명령 세트 컴퓨터와 비교됩니다.

고전적인 RISC 디자인에는 명령 파이프라인이 포함되어 있습니다. 주어진 주기에서 5개의 명령 단계 중 하나를 실행하는 대신 파이프라인을 통해 5단계를 모두 수행할 수 있습니다. 물론 한 사이클에서 한 명령어의 5단계를 모두 실행할 수는 없습니다. 그러나 각각 한 단계의 오프셋을 사용하여 5개의 연속 명령을 대기열에 올릴 수 있습니다. 이렇게 하면 각 클록 주기마다 새 명령어를 완료할 수 있습니다. 코어 복잡성의 상대적으로 낮은 증가에 대해 잠재적인 5배의 성능 향상을 제공합니다.

명령 파이프라인이란 무엇입니까?

스칼라 파이프라인 프로세서에서 명령 실행의 각 단계는 클록 주기당 한 번씩 수행될 수 있습니다. 이렇게 하면 주기당 하나의 완료된 명령의 최대 처리량이 가능합니다.

파이프라인이 없는 프로세서는 주기당 하나의 완전한 명령을 실행할 수 없으므로 하위 스칼라만 될 수 있습니다. 이 기본 5단계 파이프라인을 사용하면 모든 프로세스에 대한 명령을 완료할 수 있는 스칼라 CPU를 만들 수 있습니다. 훨씬 더 광범위한 파이프라인을 생성함으로써 클록 주기당 하나 이상의 명령을 실행할 수 있는 수퍼 스칼라 CPU를 만들 수 있습니다. 물론 여전히 잠재적인 문제가 있습니다.

여전히 순차

이 중 어느 것도 다른 수준의 캐시와 RAM을 쿼리해야 할 때 응답을 위해 많은 주기를 기다리는 문제를 해결하지 못합니다. 또한 새로운 문제를 소개합니다. 하나의 명령어가 이전 명령어의 출력에 의존한다면 어떻게 될까요? 이러한 문제는 고급 디스패처로 독립적으로 해결됩니다. 다른 명령의 출력에 의존하는 명령이 서로 너무 가깝지 않도록 실행 순서를 신중하게 계획합니다. 또한 명령을 파킹하고 파이프라인에서 실행할 준비가 되어 있고 결과가 필요하지 않은 다른 명령으로 교체하여 캐시 미스를 처리하고 준비가 되면 명령을 다시 시작합니다.

이러한 솔루션은 파이프라인되지 않은 프로세서에서 작동할 수 있지만 클록당 하나 이상의 명령을 실행하는 수퍼 스칼라 프로세서에 필요합니다. 또한 분기 예측기는 둘 이상의 잠재적 결과가 있는 명령의 결과를 예측하고 달리 입증되지 않는 한 계속해서 올바른 것으로 가정할 수 있으므로 매우 유용합니다.

결론

파이프라인을 사용하면 프로세서의 고유한 모든 기능을 모든 주기에서 사용할 수 있습니다. 서로 다른 명령의 서로 다른 단계를 동시에 실행하여 이를 수행합니다. 이것은 CPU 설계에 많은 복잡성을 추가하지도 않습니다. 또한 하나 이상의 명령이 주기당 단일 단계를 수행할 수 있도록 합니다.



하드 드라이브를 복제하는 방법

하드 드라이브를 복제하는 방법

데이터가 귀중한 자산인 현대 디지털 시대에 Windows에서 하드 드라이브를 복제하는 것은 많은 사람들에게 중요한 프로세스가 될 수 있습니다. 이 종합 가이드

Windows 10에서 드라이버 WUDFRd를 로드하지 못한 문제를 해결하는 방법은 무엇입니까?

Windows 10에서 드라이버 WUDFRd를 로드하지 못한 문제를 해결하는 방법은 무엇입니까?

컴퓨터를 부팅하는 동안 WUDFRd 드라이버를 컴퓨터에 로드하지 못했다는 오류 메시지가 나타납니까?

NVIDIA GeForce Experience 오류 코드 0x0003 수정 방법

NVIDIA GeForce Experience 오류 코드 0x0003 수정 방법

데스크탑에서 NVIDIA GeForce 경험 오류 코드 0x0003을 경험하고 계십니까? 그렇다면 블로그를 읽고 이 오류를 빠르고 쉽게 해결하는 방법을 알아보세요.

Chromebook이 켜지지 않는 이유

Chromebook이 켜지지 않는 이유

내 크롬북이 켜지지 않는 이유는 무엇입니까? 질문에 대한 답을 얻으십시오. Chromebook 사용자를 위한 유용한 가이드입니다.

Fitbit Versa 4에서 시계 페이스를 변경하는 방법

Fitbit Versa 4에서 시계 페이스를 변경하는 방법

Fitbit Versa 4의 시계 페이스를 변경하여 시계를 매일 무료로 다르게 꾸며보세요. 얼마나 빠르고 쉬운지 확인하십시오.

Roomba가 중지, 고정 및 회전 – 수정

Roomba가 중지, 고정 및 회전 – 수정

Roomba 로봇 청소기가 멈추고, 달라붙고, 계속 회전하는 문제를 해결합니다.

Steam Deck에서 그래픽 설정을 변경하는 방법

Steam Deck에서 그래픽 설정을 변경하는 방법

Steam Deck은 손끝에서 바로 강력하고 다양한 게임 경험을 제공합니다. 그러나 게임을 최적화하고 최상의 성능을 보장하려면

격리 기반 보안이란 무엇입니까?

격리 기반 보안이란 무엇입니까?

우리는 사이버 보안 세계에서 점점 더 중요해지고 있는 주제인 격리 기반 보안에 대해 탐구할 것입니다. 이 접근법은

Chromebook에서 Auto Clicker를 사용하는 방법

Chromebook에서 Auto Clicker를 사용하는 방법

오늘은 Chromebook에서 반복적인 클릭 작업을 자동화할 수 있는 도구인 Auto Clicker에 대해 자세히 살펴보겠습니다. 이 도구를 사용하면 시간과

SMPS란?

SMPS란?

컴퓨터에 SMPS를 선택하기 전에 SMPS란 무엇이며 다양한 효율 등급의 의미에 대해 알아보십시오.