“사이클 당 지침”이란 무엇입니까?


23

프로세서 작동 방식에 대해 조금 더 배웠지 만 사이클 당 명령에 대한 직접적인 대답을 찾지 못했습니다.

예를 들어, 4 코어 CPU가 사이클 당 4 개의 명령을 실행할 수 있다는 인상을 받고 있었기 때문에 2Ghz에서 실행되는 4 코어 CPU는 초당 80 억 작업을 수행 할 것입니다. 이 경우입니까?

나는 그것이 지나치게 단순화 된 것이라고 확신하지만, 나 자신을 똑바로 세우기 위해 사용할 수있는 가이드 또는 다른 것이 있다면, 나는 아이디어에 분명히 열려 있습니다.


아니요, 그렇지 않습니다. 최신 x86 CPU는 이상적인 조건에서 사이클 당 코어 당 3 개의 명령을 유지할 수있는 반면 일부 명령에는 수십 개의 사이클이 필요할 수 있습니다.
David Schwartz

답변:


22

찾아보아야 할 키워드는 CISC , RISCsuperscalar architecture 입니다.

CISC

CISC 아키텍처 (x86, 68000, VAX)에서는 하나의 명령이 강력하지만 처리 하는 데 여러 번의주기 가 필요합니다. 오래된 아키텍처에서는 사이클 수가 고정되어 있지만 현재 명령 당 사이클 수는 일반적으로 다양한 요소 (캐시 히트 / 미스, 분기 예측 등)에 따라 다릅니다. 그 물건을 찾아 볼 테이블 이 있습니다 . 특정 상황에서 특정 명령이 몇 번의 사이클을 수행하는지 실제로 측정하기도합니다 ( 성능 카운터 참조 ).

인텔에 대한 세부 정보에 관심이 있다면 인텔 64 및 IA-32 최적화 참조 매뉴얼을 잘 읽어보십시오.

RISC

RISC (ARM, PowerPC, SPARC) 아키텍처는 일반적으로 하나의 매우 간단한 명령어는 몇 번 (종종 단 하나의) 주기만 걸립니다.

수퍼 스칼라

그러나 CISC 또는 RISC에 관계없이 수퍼 스칼라 아키텍처가 있습니다. CPU는 하나의 명령을 차례로 처리하지 않지만 조립 라인과 매우 유사한 많은 명령을 동시에 처리하고 있습니다.

결과는 다음과 같습니다. 프로그램의 모든 명령에 대한 사이클을 간단히 찾아서 모두 추가하면 여러 가지 방법으로 끝납니다. 단일 코어 RISC CPU가 있다고 가정하십시오. 단일 명령을 처리하는 데 걸리는 시간은 한 사이클 시간보다 작을 수 없지만 전체 처리량은 사이클 당 여러 명령 일 수 있습니다.


9
나에게 "어셈블리 라인"비유는 슈퍼 스칼라 아키텍처가 아니라 단순한 파이프 라이닝을 제안합니다. Superscalar는 처리량을 향상시키기 위해 CPU 하드웨어의 일부 (예 : 병목 현상 인 파이프 라인 단계)를 복제하는 과정입니다.
sblair

2
간결하게 추가하고 있습니다. RISC = 축소 된 명령어 세트; CISC = 복잡한 명령어 세트. 캐시 적중률 (miss / miss ratio)을 지적하고 TLB를 지적하는 Ludwig에 대한 좋은 설명. 마이크로 프로세서 아키텍처를 설명하는 것은 쉬운 일이 아닙니다. 특히 모든 것을 하나의 (정말 컴팩트 한) 포스트에 넣는 것은 쉽지 않습니다! :)
osij2은

1
내가 듣는 것에서 요즘 CPU는 메인 메모리에서 작업하기 위해 많은 시간을 소비합니다. 적어도 그것이 CPU에 더 많은 실행 코어가없는 이유를 물었을 때 얻은 응답이었습니다.
surfasb

32

내가 생각하는 방식은 세탁물과 비슷합니다. CPU 명령어는 많은 양의 세탁물과 같습니다. 각 하중에 대해 세탁기와 건조기를 모두 사용해야합니다. 각각 실행하는 데 30 분이 걸린다고 가정 해 봅시다. 이것이 클럭 사이클입니다. 오래된 CPU는 세탁기를 가동 한 다음 건조기를 가동하여 매번 세탁물을 마칠 때마다 60 분 (2 사이클)이 소요됩니다.

파이프 라이닝 : 파이프 라인은 두 가지를 동시에 사용할 때입니다.로드를 씻은 다음 건조하는 동안 다음로드를 씻습니다. 첫 번째 부하는 완료하는 데 2주기가 걸리지 만 두 번째 부하는 1주기 더 완료된 후에 완료됩니다. 따라서 대부분의 하중은 첫 번째 하중을 제외하고 1 주기만 필요합니다.

Superscalar : 세탁소를 세탁실로 가져갑니다. 2 개의 와셔를 가져 와서 모두로드하십시오. 완료되면 2 개의 건조기를 찾아 두 가지를 모두 사용하십시오. 이제 60 분 안에 2 개의로드를 세척하고 건조 할 수 있습니다. 그것은 2주기에서 2로드입니다. 각로드에는 여전히 2주기가 걸리지 만 더 많은 작업을 수행 할 수 있습니다. 평균 시간은 이제 사이클 당 1로드입니다.

파이프 라이닝이 포함 된 수퍼 스칼라 : 처음 2 개의 하중을 씻은 다음 건조하는 동안 다음 2 개의 하중으로 와셔를 로딩하십시오. 이제 처음 2 번의로드는 여전히 2 사이클이 걸리고 그 다음 2 번은 1 번 더 사이클 후 완료됩니다. 따라서 대부분의 경우 각 사이클에서 2 개의 하중을 완료합니다.

다중 코어 : 세탁기 2 개와 건조기 2 개가있는 세탁소의 절반을 어머니에게 제공하십시오. 두 사람이 함께 일하면 두 배나 더 많은 일을 할 수 있습니다. 이것은 수퍼 스칼라와 비슷하지만 약간 다릅니다. 모든 세탁물을 각 기계로 직접 옮길 필요없이, 그녀는 당신과 동시에 그것을 할 수 있습니다.

이것은 좋은, 우리는 할 수있는 여덟 배 더 빠른 컴퓨터를 만들 필요없이, 동일한 시간에 세탁 이전보다. (클럭 속도 두 배 : 세탁기는 15 분이면 작동합니다.)

이제 어떻게 일이 잘못되는지 이야기 해 봅시다.

파이프 라인 버블 : 세척 과정에서 얼룩이 나오지 않아 다시 세척하기로 결정했습니다. 이제 건조기가 거기에 앉아 무언가를 기다리고 있습니다.

캐시 미스 (Cash Miss) : 더러운 세탁물을 배달하는 트럭이 교통 체증에 걸려 있습니다. 이제 2 개의 와셔와 2 개의 건조기가 있지만 기다릴 필요가 없어 작업이 완료되지 않습니다.

일이 얼마나 자주 잘못되는지에 따라주기마다 4 번의로드를 항상 수행 할 수는 없으므로 실제 수행되는 작업량은 다를 수 있습니다.

지점 예측 : 글쎄, 나중에 옷을 더럽혀 서 이미 깨끗해 질 수 있도록 깨끗한 ​​옷을 세탁하기 시작합니다 ... 좋아요. 이것이 비유가 깨지는 곳입니다 ...


좋은 비유입니다. 나는 그것을 훔칠 것입니다.
dmckee

6
하이퍼 스레딩은 여러 사람이 같은 세탁실에서 세탁을하는 것과 같습니다.
Ronald Pottol

1
지점 예측 : 다음 주에 필요할 것으로 예상되는 옷 세탁을 시작합니다
Akash

2
하이퍼 스레딩 : 다른 사람의 세탁물을 받기 시작하고 가지고있는 세탁기의 수를 알리십시오 (1). 곧 세탁기에는 세탁하는 바지보다 더 많은 바지를 넣을 공간이 있다는 것을 알고 있습니다. 양말도 입어요 이제 세탁기 2 대를 광고하고 사람들이 항상 작은 물건으로 "구멍을 채울"수있을만큼 다양한 세탁물을 떨어 뜨리기를 바랍니다. 온니가 10 개의 더러운 청바지와 1 켤레의 양말을 썼을 때, 그것은 그 어느 때보 다 느립니다.
Florenz Kley

@Akash 아직 얼룩이없는 옷을 씻는 경우가 있습니다.
케빈 판코

3

정확히. 당신이 말하는 사이클은 클럭 사이클이며 대부분의 최신 프로세서 파이프 라인이기 때문에 하나의 명령을 실행하는 데 여러 클럭 사이클이 필요합니다. (이것은 다른 명령이 첫 번째 명령이 완료되기 전에도 실행을 시작할 수 있기 때문에 좋은 일입니다.) 가장 이상적인 상황을 가정하면 아마도 약 80 억 IPC 일 것입니다. 그러나 모든 종류의 일은 종속성, 파이프 라인의 거품과 같은 일이 발생합니다 , 분기 등으로 항상 작동하지는 않습니다.

죄송합니다. 정답으로는 너무 복잡합니다. Jon Stokes는 이 기사를 통해 이를 잘 설명하고있다 .


2

각 명령어의 사이클 시간을 조회 (또는 암기) 할 수있는 날과 특정 코드 비트가 완료되는 데 걸리는 클럭 수를 알고있는 날은 고급 칩의 경우 오랜 시간이 지났습니다. 마이크로 컨트롤러). 현대의 범용 CPU 코어는 여러 파이프 라인에 여러 개의 서로 다른 실행 단위의 여러 복사본을 가지고 자체 로직과 분기 예측 및 추론 적 실행 기능을 갖춘 다단계 메모리 캐시에 액세스 할 수 있습니다. 캐시 일관성 논리 및 기타 복잡성에서 단일 다이 드래그에 여러 개의 코어를 사용합니다.

짧은 대답은 다음과 같습니다. 코어가 많을수록 작업을 수행 할 수있는 용량이 많아 지지만 예측하기 쉬운 방식은 아닙니다 .


1

Ludwig는 CISC와 RISC의 차이점을 설명했지만 RISC 명령어는 간단하고 빠르지 만 개별적으로 수행하는 작업이 적으므로 CISC 프로세서의 단일 명령어와 동일한 작업을 수행하려면 여러 문자열을 함께 묶어야합니다. 결과적으로 일부 RISC 명령어는 더 빠르며 다른 명령어는 더 빠릅니다.


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