반응형
데이터 통로가 표시된 CPU 내부 구조

CPU 클록 주파수와 클록 주기
클록(Clock)
- CPU를 비롯한 컴퓨터의 모든 부품이 일정한 속도로 작동하기 위한 전기적 진동(pulse)
- 클록 발생기가 만들며, 클록 수가 클수록 컴퓨터의 처리 속도가 빠름
- 클록 주파수(Hz 단위)는 1초에 클록이 몇 번 발생하는지를 의미
- 1초에 1번 클록이 발생하면 클록 주파수는 1Hz
- 1초에 109번 클록이 발생하면 클록 주파수는 1GHz
- 클록 주기는 한 신호 뒤에서 다음 신호가 올 때까지의 간격
- 클록 주기 = 1 / 클록주파수
마이크로 연산(micro-operation)
- CPU 클록의 각 주기 동안 수행되는 기본 단위의 동작
인출 사이클
인출 사이클의 마이크로 연산

- 첫번째 주기(t0) : 현재의 PC가 지정하는 명령어의 주소가 CPU 내부 버스를 통하여 MAR로 이동
- 두번째 주기(t1) : MAR에 저장된 명령어의 주소가 기억장치로 이동되고, 기 억장치는 해당 주소의 명령어를 읽어서 데이터 버스를 통하여 MBR에 적 재하며, PC의 내용에 1을 더함
- 세번째 주기(t2) : MBR에 있는 명령어가 명령어 레지스터인 IR로 이동
인출 사이클의 주소 및 명령어 흐름도

실행 사이클
CPU는 실행 사이클 동안에 명령어 코드를 해독(decode) 하고, 그 결과에 따라 필요한 연산들을 수행
CPU가 수행하는 연산들의 종류
- 데이터 이동 : CPU와 기억장치 간 혹은 I/O장치 간에 데이터를 이동
- 데이터 처리 : 데이터에 대하여 산술 혹은 논리 연산을 수행
- 데이터 저장 : 연산 결과 데이터 혹은 입력장치로부터 읽어 들인 데이터 를 기억장치에 저장
- 프로그램 제어 : 프로그램의 실행 순서를 결정
실행 사이클에서 수행되는 마이크로-연산들은 명령어의 연산 코드(OP code)에 따라 결정됨
기본적인 명령어 형식의 구성
연산 코드(OPeration code, OP code)
- CPU가 수행할 연산을 지정
오퍼랜드(operand)
- 명령어 실행에 필요한 데이터가 저장된 주소(addr)

실행사이클 - LOAD, addr 명령어
기억장치에 저장되어 있는 데이터를 CPU 내부 레지스터인 AC로 이동하는 명령어

- 첫번째 주기(t0) : 명령어 레지스터(IR)에 있는 명령어의 주소 부분을 MAR로 전 송
- 두번째 주기(t1) : 해당 주소가 지정한 기억장소로부터 데이터를 인출하여 MBR 로 전송
- 세번째 주기(t2) : 해당 데이터를 AC에 적재
[예] CPU 클록이 2GHz 인 경우 클럭 주기 및 LOAD 명령어 수행 시간
- 클록의 주기 = 1s/(𝟐 ×𝟏𝟎9) = 0.5𝑛s
- 인출 및 실행 사이클 : 0.5𝑛s × (3+3) =3.0𝑛s
실행사이클 - STA[STOR], addr 명령어
AC 레지스터의 내용을 기억장치에 저장하는 명령어

- 첫번째 주기(t0) : 데이터를 저장할 기억장치의 주소를 MAR로 전송
- 두번째 주기(t1) : 저장할 데이터를 버퍼 레지스터인 MBR로 이동
- 세번째 주기(t2) : MBR의 내용을 MAR이 지정하는 기억장소에 저장
실행사이클 - ADD, addr 명령어
기억장치에 저장된 데이터를 AC의 내용과 더하고, 그 결과는 다시 AC에 저장하는 명령어

- 첫번째 주기(t0) : 명령어 레지스터(IR)에 있는 명령어의 주소 부분을 MAR 로 전송
- 두번째 주기(t1) : 해당 주소가 지정한 기억장소로부터 데이터를 인출하여 MBR로 전송
- 세번째 주기(t2) : 해당 데이터와 AC의 내용을 더하고, 결과값을 다시 AC에 저장
ADD 명령어 실행 사이클 동안의 정보 흐름

실행사이클 - JUMP, addr 명령어
오퍼랜드(addr)가 가리키는 위치의 명령어로 실행 순서를 변경하는 분기(branch) 명령어 (제어 명령어)
t0 : PC ← IR(addr)
- 명령어의 오퍼랜드(분기할 목정지 주소)를 PC에 저장
- 다음 명령어 인출 사이클에서 그 주소의 명령어가 인출되므로, 분기가 발생
[예] CPU 클록이 4GHz 인 경우 클럭 주기 및 JUMP 명령어 수행 시간
- 클록주기 = 1s/(4×𝟏𝟎𝟗 ) = 0.25𝑛s
- 인출 및 실행 사이클 : 0.25𝑛s × (3+1) =1.0𝑛s
기본 명령어 사이클 전체 흐름
