물론 지연 시간을 제어하는 것이 유용하지만 다른 용도로는 유용하다는 것을 알고 있습니다.
16Mhz 클럭으로 프로그램의 각 라인은 1/16000000 초가 소요됩니다.
매우 큰 라인조차도 1/16000000 초만 걸리나요?
8MHz 클럭을 사용하면 각 회선의 시간이 두 배로 늘어납니다. "메인 루프"전체도 두 배의 시간이 걸리죠?
물론 지연 시간을 제어하는 것이 유용하지만 다른 용도로는 유용하다는 것을 알고 있습니다.
16Mhz 클럭으로 프로그램의 각 라인은 1/16000000 초가 소요됩니다.
매우 큰 라인조차도 1/16000000 초만 걸리나요?
8MHz 클럭을 사용하면 각 회선의 시간이 두 배로 늘어납니다. "메인 루프"전체도 두 배의 시간이 걸리죠?
답변:
왜 내 아두 이노에 시계가 있습니까?
그것이 컴퓨터와 마이크로 컨트롤러 등이 작동하는 방식이기 때문입니다.
16mhz 클럭으로 프로그램의 각 라인은 1/16000000 초가 소요됩니다.
아니.
매우 큰 라인조차도 1/16000000 초만 걸리나요?
아니.
클럭은 머신 코드 명령어 가 메모리에서 페치되어 실행되는 속도를 정의합니다 . 대부분의 명령어는 1 클럭 사이클이 걸리지 만 일부는 더 많은 시간이 걸립니다.
한 줄의 C 코드를 여러 개의 어셈블리 명령어로 컴파일 한 다음 머신 코드 (원수)로 변환 할 수 있습니다. 이는 라인의 기능에 따라 1 개의 조립 명령에서 수천 개의 조립 명령에 이르기까지 다양합니다.
8mhz 시계를 사용하면 각 회선의 시간이 두 배로 늘어납니다. "메인 루프"전체도 두 배의 시간이 걸리죠?
칩의 모든 작업은 시계에 의해 제어됩니다. 클럭 속도가 절반이면 칩이 절반 속도로 작동하므로 모든 작업 시간이 두 배 길어집니다.
@Majenko의 게시물에서 대답하지 않았습니다. 그렇습니다. 8MHz 클럭으로 각 라인은 두 배의 시간이 걸립니다. 라인이 클럭으로 구동되지 않는 것을 기다리지 않는 한 (예 : 외부 입력).
@Majenko의 답변 외에도 CPU에는 다음 단계가 시작되기 전에 지침이 완료되도록 시계가 있습니다. CPU는 많은 트랜지스터로 만들어졌습니다 (AtMega가 수백만의 범위에 있음을 나타내는 참조를 찾았습니다).
사이클 동안, 전기는 칩을 통해 흐르고, 트랜지스터를 켜고 끄는데, 그 결과 더 많은 트랜지스터를 켜고 끄는 등의 결과가 발생합니다. 이런 일이 발생하는 동안 칩의 일부 부분에는 "잘못된"값이 있습니다. 계산 도중 절반 정도라고 생각할 수 있습니다 (한 열과 10 열을 추가 한 후 시작하려고합니다. 100s 열). 이것이 외부 세계에 영향을 미치는 것을 원하지 않기 때문에 (예를 들어) 명령이 완료 될 때까지 출력 핀이 고정됩니다. 명령을 완료하는 데 걸리는 시간은 다양하지만 제조업체는 최악의 상황에서 가장 느린 명령을 수행합니다.
AtMega (Arduino의 칩)의 경우 Atmel (칩을 설계 한 사람)은 1 / 20,000,000 초 (이것은 20MHz)라고 선언했습니다.
모든 마이크로 프로세서가 사이클 당 하나의 명령으로 모든 명령을 실행하는 것은 아닙니다. 일부 명령에는 1, 2 또는 10 사이클이 걸릴 수 있습니다. 파이프 라이닝은 프로세스를 한층 더 복잡하게 만듭니다. 프로세서는 한 사이클에서 일부 작업 (예 : 다음 명령 페치)을 수행하고 다음 사이클에서 실행하지만 명령 1을 실행하는 동안 다음 명령을 페치 할 수도 있습니다. 이를 위해서는 다음에 어떤 명령이 오는지 추측해야 할 수도 있습니다 ( "goto"와 같은 기계 코드의 경우-루프에 사용됨). 잘못 추측되면 대처해야합니다. 그; 검색된 명령을 버리고 다음 명령을 검색하여주기를 잃습니다.
명령어 파이프 라이닝 의 Wikipedia 페이지 에는 명령어 가져 오기, 명령어 디코딩, 실행, 메모리 액세스 및 쓰기 저장의 5 단계로 구성된 RISC 칩 파이프 라이닝의 예가 나와 있습니다. 따라서 어떤 실행 단계에서 5 개의 명령을 겹칠 수 있습니다. "쓰기 저장"단계까지는 지침이 실제로 적용되지 않습니다. 이것을 조립 라인으로 생각할 수 있습니다. 위젯을 구성하는 데 7 분이 걸리지 만 가장 긴 단계는 2 분이 걸리는 5 단계로 나눌 수 있습니다. 2 분마다 한 번씩, 부분적으로 완료된 각 위젯은 조립 라인에서 다음 스테이션으로 이동합니다. 2 분마다 하나의 위젯이 표시됩니다. "시계"는 가장 느린 단계만큼 빠르게 틱할 수 있습니다. 위젯을 더 빨리 밀어 내면 "병목 현상"에 점점 더 많은 위젯이 대기됩니다.