2016-08-06 7 views
4

"기계주기"의 정확한 정의에 대해 다소 혼란스러워합니다.기계주기는 정확히 무엇입니까?

는 예를 들어, 일부 source 온라인 그것이 말 :

CPU가 각 기계 언어 교육을 위해 수행하는 네 단계 :,, 디코드를 가져 실행 및 저장.

가정으로 좋은 평판을 가지고 책 Programming the Z80는 말한다 동안 :

우리는 모든 지시는 세 단계로 실행되는 것을 볼 수있다 :,, DECODE를 FETCH 실행합니다. 이제 몇 가지 정의를 소개해야합니다. 이 단계들 각각은 여러 클럭 사이클을 필요로합니다. Z80은 "머신 사이클"이라고하는 하나 이상의 논리 사이클에서 각 위상을 실행합니다. 을 기계 : 를 기계 사이클은 페치 - 디코드 - 실행이 책은 기본적으로 말을하는 동안,주기입니다 : - 나는 이해 것과 - 첫 번째는 기본적으로 말하는

지금 여기에서 저를 혼란스럽게하는 것입니다 cycle은 각각 페치, 디코드 또는 실행 사이클에서 발생하는 하나 이상의 클럭 사이클입니다.

그래서 무엇입니까?

+0

https://en.wikipedia.org/wiki/Instruction_cycle – YOU

+0

@YOU 예, 읽었습니다. 첫 번째 예에서 보여주는 내용입니다. 이제 그 책의 정의가 잘못되었다는 뜻입니까? –

+0

첫 번째 단계는 "단계"입니다. 그것은 개념을 분명히 지칭하지 않는다. 어쨌든 –

답변

6

z80에는 "주기"라는 두 가지 개념이 있습니다. 구별은 중요합니다. 왜냐하면 z80은 다중 사이클 아키텍처이고 명령어 당 "단계"와 여러 단계 (여러 단계)마다 여러 클록주기를 모두 사용하기 때문입니다.

"steps"은 기계주기 (M-cycles)라고 불리며, 메모리 읽기, ALU 연산 등의 "높은 레벨"작업을 수행합니다. inc (iy+42)과 같은 복잡한 명령어는 디코딩 접두사, 주 연산 코드, 오프셋을 읽은 후이를 iy에 추가하고 증분을 수행 한 다음 결과를 다시 쓰십시오. 조건부 점프는 다양한 M- 사이클 수를 갖기 때문에 조건이 거짓이면 실제 점핑을 수행하는 M- 사이클을 생략합니다.

각 M- 사이클은 다중 (3- 사이클) 클럭 사이클 (일명 T- 사이클 또는 T- 상태,이 용어는 대부분 이전의 멀티 사이클 프로세서를 언급하지 않는 한 사망했다. 예를 들어, 메모리 읽기는 3 사이클을 소요하고, opcode 디코드는 일반적으로 4, 일부 내부 연산은 5를 취하고 16 비트 증분은 OCF를 다른 2 사이클만큼 확장하는 것처럼 보입니다.

모두 z80에만 해당됩니다.

다른 곳에서 "기계주기"라는 용어는 명령의 "일종의 완료"를 시작부터 끝까지 가리키는 데 사용되었습니다. 이는 z80 컨텍스트에서 의미하는 바가 아닙니다.

+0

Pedantic : 조건부 'JP'는 지점 출장 여부와 상관없이 동일합니다. 'JR','CALL'과'RET'는 가변적 인 타이밍을 가지고 있습니다. 그래서 나는이 주석을 아마도 그렇게 필요하지 않은 것으로 분류하고 있습니다. 'CALL'은 흥미 롭습니다 : 문서마다 피연산자를 읽는 것을 끝내기 전에 호출을 할 것인지를 결정하고 SP를 조정할 필요가있을 때만 여분의 대기 상태를 3 바이트 페치로 던집니다. 따라서 추가 작업을 기존 시스템 사이클에로드합니다 (하지만 아마도 다른 시스템 사이클을 선택하는 것으로 나타 났을 것입니다). – Tommy

3

CPU가 각 기계어 명령어에 대해 수행하는 4 단계 : 페치, 디코드, 실행 및 저장.

이러한 단계는 일반적으로 다른 주기로 발생합니다. "실행"은 일부 하위 단계와 많은 트랜지스터가 포함 된 복잡한 프로세스이지만 대부분의 지침에서는 단일 사이클로 수행 할 수 있습니다. 이는 그 장소에있는 CPU의 부분 사이에 경계를 두는 이유 중 하나입니다.


첫 번째는 기본적으로 말하고있다 : 기계 사이클은 페치 - 디코드 - 실행주기

아니, 그것은 그 말을하지 않습니다. 그건 완전히 잘못되었습니다. 각 명령은 다음 사이클이 시작되기 전에 여러 사이클이 걸리기 때문에 이전의 비 파이프 라인 CPU는 보통 1 사이클 당 처리량이 1 미만입니다..


CPU 클록주기 또는 기계주기는 저전압에서 고전압까지 순환하는주기입니다. https://en.wikipedia.org/wiki/Clock_signal. CPU는이 클럭 입력을 사용하여 다양한 단계를 동기화합니다.

CPU의 최대 클럭 속도는 단일 클럭 사이클에서 발생해야하는 가장 느린 속도로 제한됩니다. 예 : 어쩌면 디코드 스테이지에 많은 수의 gate delays이있을 수 있습니다. 따라서 클럭이 더 빠르게 실행되면 클록이 하이에서 로우로 전환 할 때 그 스테이지와 다음 스테이지 사이의 래치에 결과가 래치되지 않습니다.

파이프 라인 된 CPU는 한 명령이 다음 명령을 디코딩 (또는 심지어 페치)하기 전에 실행을 마칠 때까지 기다리지 않고 동시에 여러 단계를 점유하려고합니다. https://en.wikipedia.org/wiki/Classic_RISC_pipeline

+0

이 쉬운 설명을 주셔서 감사합니다. 그러나 이것은 기계주기의 순수/추상적 정의라고 생각합니다. 그렇다면 내가 제공 한 두 가지 예 중 어느 것이 맞습니까? 왜냐하면 내가 이해 한 바에 따르면 그들은 둘 다 똑같은 근본적인 방식으로 일하기 때문에, 당신은 방금 설명했습니다. –

+0

@ Abd-ElrhmanEid : 특정 질문에 대답하도록 업데이트되었습니다. 처음에는 대부분 제목에 답하고있었습니다. –