CPU 클럭 틱은 주기적으로 있습니까?


51

CPU의 주파수는 1 초 내에 몇 개의 클럭 틱이 있는지에 대한 평균값입니까, 아니면 물리적 안정성이 더 강합니까?

제 생각에는 안정적이거나 불안정해서는 안됩니다. CPU의 분산에 대한 정보가 있습니까?

CPU의 사이클 지속 시간이 수정 진동과 엄격하게 동기화되어 있습니까? 아니면 CPU가 다음 틱 전에주기를 달성해야합니까?


7
여러 유형의 CPU가 있습니다. 대부분 특정 주파수에서 진동하여 시간 자체를 결정하는 결정을 사용합니다. 대부분의 시간이 디지털 손목 시계 (같은 유형의 크리스탈을 사용하여 시간을 유지하는 것)만큼 정확하다는 것을 의미합니다. en.wikipedia.org/wiki/Crystal_oscillator
krowe

5
@Gael 일부 명령어는 완료하는 데 수백 번의 틱 또는 클럭 사이클 이 필요합니다.
misha256

1
@Gael : 또한 CPU가 느려지거나 속도를 높이는 것이 일반적이며, 자주 수행합니다. 나는 그것이 진드기와 어떻게 관련이 있는지 정확히 모르겠습니다.
Mooing Duck

18
제품, 서비스 또는 학습 자료 권장 사항찾는 것에 대해 투표하기로 결정 했습니까? 정말 사람들 이요?
CVn

30
이것은 하드웨어의 작동 방식을 명확히하려는 합법적 인 질문 입니다.
studiohack

답변:


49

복잡한 것과 마찬가지로 CPU가 다양한 수준에서 작동하는 방식을 설명 할 수 있습니다.

가장 기본적인 수준에서 CPU는 정확한 클럭에 의해 구동됩니다. 시계의 주파수는 변할 수 있습니다. 인텔의 스피드 스텝을 생각하십시오. 그러나 항상 CPU는 클럭 신호에 100 % 고정 되어 있습니다.

CPU 명령어는 훨씬 높은 수준에서 작동합니다. 하나의 명령은 복잡한 일이며 여기에 Wikipedia에 설명대로 완료하는 데 1 사이클 미만에서 수천 사이클 까지 소요될 수 있습니다 .

따라서 기본적으로 명령은 몇 개의 클럭 사이클을 소비 합니다. 최신 CPU에서는 다중 코어, 하이퍼 스레딩, 파이프 라이닝, 캐싱, 비 순차적 및 추론 적 실행과 같은 기술로 인해 단일 명령에 대한 정확한 클록주기 수가 보장되지 않으며 이러한 명령을 실행할 때마다 달라질 수 있습니다 !

편집하다

특정 CPU의 분산에 대한 정보가 있습니까?

예, 아니오 최종 사용자의 99.99 %가 전반적인 성능에 관심이 있으며 다양한 벤치 마크를 실행하여 수량화 할 수 있습니다.

당신이 요구하는 것은 고도의 기술 정보입니다. 인텔은 CPU 명령 대기 시간 / 처리량에 대한 완전하고 정확한 정보를 게시하지 않습니다 .

이것을 알아 내려고 시도한 연구원들이 있습니다. 다음은 관심을 가질만한 두 가지 PDF 파일입니다.

불행히도 분산 데이터 를 얻는 것은 어렵습니다 . 첫 번째 PDF에서 인용 :

나열된 숫자는 최소값입니다. 캐시 미스, 정렬 불량 및 예외는 클럭 수를 상당히 증가시킬 수 있습니다.

그럼에도 불구하고 재미있는 독서!


1
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Sathyajith Bhat

4
아주 좋아요 물론, But at all times the CPU is absolutely 100% locked to the clock signal동기 CPU에만 적용됩니다. 비동기 (시계가없는) CPU에서 진드기에 대해 이야기하는 것은 어리석은 일이지만 나에게는 빠진 것 같은 느낌이 들었습니다 :)
Luaan

1
@Luaan-맞습니다. 진정한 비동기 CPU는 여전히 아주 드물다고 생각하지만 존재합니다 (또는 과거에 있습니다). 하지만 연구원 및 하드웨어 전문가와 만 관련이 있습니다.
Daniel R은

@DanielRHicks 임베디드 디바이스 (구식 MIPS 및 ARM 비동기 CPU가 있음)에 관심이 있었지만 소비자 시장에서 큰 것은 아닙니다. 결국, 배고픈 디스플레이가 바로 옆에있을 때 스마트 폰의 CPU 전력 소비에주의해야하는 이유는 무엇입니까? IBM SyNAPSE는 과학적 목적을위한 멋진 프로젝트처럼 보입니다.
Luaan

@Luaan-처음 발명되었을 때의 흥미로운 점은 컴퓨터가 계산을 수행하는 데 필요한 속도만큼 느리게 실행되었다는 것입니다. 그러나보다 정교한 클럭킹 체계는 기본적으로 같은 것을 달성했습니다.
Daniel R Hicks

29

CPU 클럭 틱은 본질적으로 주기적입니까?

당연히 아니지. 아주 최고의 시계조차도주기적인 것은 아닙니다. 열역학 법칙은 다음과 같이 말합니다.

  • 제로 법칙 : 우주가 당신에게하는 불쾌한 작은 게임이 있습니다.
  • 법칙 : 당신은 이길 수 없습니다.
  • 제 2 법칙 :하지만 매우 추운 날에도 깨질 수도 있습니다.
  • 제 3 법칙 : 결코 그렇게 추워지지 않습니다.

최고의 시계 개발자는 열역학의 법칙을 극복하기 위해 매우 열심히 노력합니다. 그들은 이길 수는 없지만 깨지기에는 매우 가깝습니다. CPU의 시계? 최고의 원자 시계와 비교하면 쓰레기입니다. 네트워크 시간 프로토콜 이 존재 하는 이유 입니다.


예측 : 세계 최고의 원자 시계가 2015 년 6 월 30 일 23:59:59 UTC에서 2015 년 6 월 30 일 23:59:60 UTC에서 2015 년 7 월 1 일 00:00:00으로 갈 때 약간의 혼란이 다시 나타납니다. UTC. 너무 많은 시스템은 윤초를 인식하지 못하고 보안 수준을 2로 설정합니다 (1 초 이상의 시간 변경을 방지). 이러한 시스템의 클럭 지터는 네트워크 시간 프로토콜 윤초가 거부됨을 의미합니다. 2012 년과 마찬가지로 많은 컴퓨터가 배를 belly습니다.


9
+1, 재미 있고 유익한 정보. 그리고 Leap Second 주제도 잘 읽습니다.
jimm-cl

9
IIRC, go-belly-up wa는 커널 클럭 루틴이 윤초의 가능성을 알고 있었기 때문에 발생 했지만, 클럭이 이미 호출 된 동안 호출 할 수없는 클럭 조정 루틴에 대한 호출로 조정을 구현했습니다. 물론 시스템 클럭은 CPU 클럭과 아무 관련이 없습니다.
Hagen von Eitzen

1
롤, 대단해 "CPU 시계는 원자 시계와 비교하여 가비지입니다"라는 관찰 에 무언가를 추가해야합니다 . 그러나 친척은 말할 것도없고 매우 주관적입니다. 우리는 우리의 원자 시계는 "쓰레기"- P처럼 보이게 기술이있을 수 있습니다 (외부 아늑한 현실) 어딘가가 최선의 원자 시계의 우수한 정확성에 감탄하지만, 수
misha256

2
@ misha256 현실은 정확한 시계 가 없다는 것 입니다. 시간은 상대적입니다.
Keltari

CPU 클럭은 가비지 일 수 있지만 다음 비트를 발행하기 전에 8 비트 레지스터 오버플로가 알 수없는 상태의 7 세그먼트 디스플레이 드라이버에 약간의 시간을 주어 명령을 마비시키는 것과 같은 것은 없습니다. 우리는 그 결정을 필요로하지 않습니다. 또는 더 중요한 것은 결과를 레지스터 (또는 다른 ALU로 이어지는 버스)에 저장하기 전에 ALU가 계산을 완료하기까지 나노초를 기다리는 것과 같은 것은 없습니다.
John Dvorak

22

2000 년경, CPU의 클럭 속도가 휴대폰이 작동하는 범위에 도달하기 시작했을 때 실제 클럭 속도에 변화를주는 것이 일반적이되었습니다. 그 이유는 간단합니다. CPU 클록이 정확히 900Mhz이면 모든 전자 간섭이 해당 주파수에서 생성됩니다. 클럭 주파수를 895와 905Mhz 사이에서 조금씩 변경하면 간섭이 해당 범위에 분산됩니다.

최신 CPU는 열 제한이 있기 때문에 가능했습니다. 나중에 시계 속도가 느려질 때 냉각 될 수 있으므로 짧은 시간 동안 약간 빠르게 작동하는 데 아무런 문제가 없습니다.


13
BIOS에서 종종이 옵션이 "Spread Spectrum"
Mark Sowul

1
멀티 코어 CPU에서는 코어가 오프셋 클럭을 사용하고 있다는 점을 읽었습니다. 라디오 클럭을 피하고 전력 분배를 도와 주며 코어가 고조파를 만드는 것을 피하기 때문입니다.
Zan Lynx

3
@MarkSowul, 마침내이 "확산 스펙트럼"의 실제적인 사용을 말하는 누군가.

22

여기에 디지털 로직 디자이너. 입력 신호에 응답하여 논리 네트워크가 변경되는 데 걸리는 실제 시간은 전파 지연 입니다. 시스템을 다음과 같이 생각하십시오.

registers A,B,C... ---> logic cloud ---> registers A',B',C'

"launch clock"은 첫 번째 레지스터 세트가 변경되는 시간입니다. "캡처 클록"은 한주기 후에 다음 클록 에지입니다. 시스템이 작동하려면 캡처 클럭이 도착하기 전에 로직 클라우드의 출력이 안정적이어야합니다.

이 작업을 수행하는 프로세스는 타이밍 분석입니다. 물리 기반 시스템 시뮬레이션을 사용 하여 모든 출력에 대한 최악의 도착 시간을 계산하십시오. 시스템 전체에서이 숫자 중 가장 큰 숫자가 최소 클럭주기를 설정합니다.

최악의 경우를 참고하십시오 . 실제 전파 시간은 짧아 지지만 제조 공정 변동, 현재 온도 및 칩 전압 ( PVT )에 따라 다릅니다 . 이는 실제 용어로 더 빠른 클럭 (오버 클로킹)을 적용 할 수 있으며 작동 할 수 있음을 의미합니다. 0x1fffffff + 1 = 0x1f000000캐리 비트가 제 시간에 도착하지 않는지 를 결정하는 등의 오류가 발생할 수도 있습니다 .

칩에는 보드에 두 개 이상의 클럭이있을 수 있으며 (보통 FSB는 코어보다 느림) 실제 클럭은 열 제어 목적으로 증가 또는 감소하거나 다양 할 수 있습니다 (EMC 테스트 통과를 위해 확산 스펙트럼 사용에 대한 MSalter의 답변).


경우에 따라 캡처 클록은 다음 사이클이 아니라 두 번째 사이클 이후 일 수 있습니다. 일부 설계에서는 데이터가 항상 최소한 최소 시간이 걸리는 것으로 가정합니다 (예 : 전파 지연이 2.1 ~ 2.9 사이클 사이 인 것으로 알려진 경우 매 사이클마다 데이터가 출력되고 결과가 샘플링 될 수 있습니다. 각 샘플링 된 결과는 3의 데이터를 반영합니다) 사이클 전); 다른 보수적 인 디자인은 출력 데이터를 더 느리게 변경하고 안정적으로 보장 될 때까지 결과를 무시합니다.
supercat

2

CPU의 명령 지속 시간이 수정 진동과 엄격하게 동기화됩니까? 아니면 다음 틱 전에 CPU가 지시를 달성해야합니까?

둘 다. 명령 지속 시간은 몇 가지 클럭 틱이지만,이 수는 명령 요구 사항에 따라 달라질 수 있습니다. 예를 들어, 특정 메모리 위치가 L1 캐시에있을 때까지 명령을 진행할 수없는 경우 다음 클럭 틱 전에 명령이 완료되지 않습니다. 해당 명령이 진행될 때까지 진행되지 않습니다.

그러나 CPU가 무언가를하기로 결정한 경우, 기본적인 방법은 특정 정보가 CPU의 특정 부분으로 이동하도록 내부 스위치를 설정하는 것입니다. 입력이 해당 부분에 도달하고 출력이 다음 부분에 도달 할 때까지 기다립니다. 이 대기 부분은 시계의 목적입니다.

두 개의 이진 입력을 취해 합산하여 세 번째 와이어 세트에 합을 출력하는 물리적 회로를 상상해보십시오. 더하기 위해 CPU는이 가산기에 도달하기 위해 두 개의 숫자를 추가하고 CPU 레지스터 래치로가는 출력을 정렬해야합니다. CPU는 입력이 가산기에 도달하고 가산기가 출력을 생성하고 출력이 래치에 도달 할 때까지 출력을 저장하도록 래치에 지시 할 수 없습니다. 이것은 클럭의 목적입니다. 입력을 어딘가에 배치하고 출력을 사용할 준비가되기를 기다리는 사이의 대기 시간을 설정하는 것입니다.

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