문제

레지스터 (루프에서)의 증가를 사용하여 (유효한) 클럭 속도를 결정할 수 있습니까? 나는 자연스럽게 그것을 할 수 있다고 가정했지만, CPU는 이런 종류의 계산을 쓸모 없게 만드는 슈퍼 스칼라 기술을 이식 할 수 있다고 언급했다. 또한 CPU에서 레지스터를 증가시키는 것은 한 번의 클럭 사이클 미만으로 수행 될 수 있다고 들었습니다.

사실인가요?

도움이 되었습니까?

해결책

아니요, 확실하게. 레지스터를 증가시키는 데 걸리는 사이클 수는 다른 유형의 프로세서마다 다를 수 있으며 루핑 오버 헤드도 포함해야합니다. 현대적인 운영 체제에서는 선제 적 멀티 태스킹을 처리해야하므로 프로세스 스케줄러가 제공 할 CPU 시간이 얼마나되는지 전혀 모릅니다. 다른 프로세스가 얼마나 많은 작업을 수행하는지에 따라 CPU 시간이 많이 걸리거나 약간의 CPU 시간을 얻을 수 있으므로 초당 수행 할 수있는 레지스터 증분 수는 매우 다양합니다.

또한, 멀티 코어 환경에서는 시계가 같은 속도로 진드 할 수 없습니다. 어떤 이유로 든 스케줄러에 의해 코어간에 프로세스가 이동하면 시계 속도가 예측할 수 없을 정도로 변경 될 수 있습니다.

운영 체제를 요청하는 것과 같이 시계 속도를 얻는 더 나은 방법이 훨씬 더 좋습니다 (물론이를 수행하는 방법은 OS에 따라 다릅니다).

다른 팁

아니요, 시계 속도를 결정하는 데 사용할 수 없습니다. 레지스터가 시계 당 한 번 정확히 한 번 증가 할 수 있다는 보장은 없습니다.

어떤 CPU를 타겟팅하고 있습니까? 적어도 x86에서 시계 속도를 결정하는 더 확실한 방법이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top