프로세서의 명령어 실행 과정

명령어 실행 과정

  1. PC값의 메모리에서 명령어를 읽어 옴
  2. 레지스터 액세스
  3. 명령어에 따라 ALU 연산 또는 메모리로부터 load/ store 작업 수행, 브랜치 명령어 등등
  4. PC에 +4 또는 타켓 주소 입력

CPU 구조

Control

내부 컴포넌트를 제어하는 모듈

예시: Registers에서 값을 쓸때는 RegWrite가 Control에 의해 1이 되어서 write 작업을 수행

Logic Design Basic (논리 회로 기초)

Combinational Element (Logic)

데이터에의해 값이 결정

input에 의해 output이 결정

예시: Adder, Multiplier 등등

State(sequential) Element

어떤 정보를 저장

예시: 레지스터, 캐시, 메모리, D램 등등

Register

회로 내에서 데이터를 저장

  • 클럭 신호를 사용해서 저장된 값을 업데이트 함
  • Edge-triggered: ClK가 0에서 1로 바뀌었을때 업데이트

Write Control과 Register

  • Clock Edge이고 write control 인풋값이 1일때 값을 업데이트

Clock Methodology (Clock 방법론)

combinational logic은 Clock cycle동안 연산을 끝내야 한다.

아래 사진을 보면 clock이 1이 되었을때 state element에서 값을 입력받아 combinational logic을 거쳐 state element에 저장 된다. 이 과정이 한 클락 사이클 안에 일어나는 것을 보장 받아야 함.

따라서 Clock Period는 가장 긴 combinational에 의해 결정 됨. 따라서 간단한 combinational logic역시 Clock Peroid가 길어져서 그에 맞추게 되므로 성능이 하락함

DataPath

CPU에서 데이터 및 주소를 처리하는 요소. 산술 연산, 논리 연산, 데이터 저장 및 이동 등과 관련된 기능을 수행.

대표적으로 레지스터, ALU, mux, 메모리 등이 있다.

Instruction Fetch

  • 32비트 레지스터인 PC에 저장된 주소를 Instruction memory에 input으로 넣어서 output으로 Instruction이 나옴.
  • 동시에 PC에서 현재 값에 4를 더함.
  • 더한 값이 다시 PC에 들어가서 다음 명령어를 가져옴.

R-Format Instructions

레지스터간의 연산 명령어

  • 두개의 레지스터에서 값을 읽어저 산술/로직 연산을 수행.
  • 레지스터에 결과값을 삽입.
  •  

  • Read register: 읽을 레지스터 번호. MIPS는 32개의 레지스터가 있으므로 5비트. Read register 1,2가 Source Tartget 레지스터
  • Write register: Destination
  • Write Data: 연산한 데이터가 들어올 포트.
  • Read data 1,2: Source Target의 값이 나옴

동작 과정

  1. Read register 1,2에 연산에 쓰일 레지스터 번호가 들어 오고, Write register에 연산된 값을 저장할 레지스터 번호가 들어 옴
  2. 레지스터에서 값을 읽어 Read data 1,2로 내보냄.
  3. ALU로 값이 전달 되고, ALU operation에 연산종류가 들어옴
  4. 연산한 결과를 Write Data에 보내고, 이를 write register값의 레지스터에 저장

Load/Store Instructions

  • Load 명령어일 시 MemRead값이 1이 들어오고, Address에 들어온 주소에서 값을 읽어 Read data로 내보냄
  • Stroe 명령어일 시 MemWrite에 값이 1이 들어오고, 메모리의 Address에 데이터를 저장

Sign-extend

16비트를 32비트로 바꾸는 이유는 명령어가 들어올 때, 주소값은 16비트로 들어오게 되므로 Sign-extend로 16비트 주소값을 32비트로 변경함

Branch Instructions

동작 과정

  1. 레지스터 값을 읽음
  2. 두 값을 비교. ALU를 사용해서 두 값을 빼서 0인지 아닌지 판단
  3. 타켓 address 계산 (16비트로 왔으므로 32비트로 만들어 줌)
  4. PC에 값 4 더한값에 타겟 address를 더한다

Full Datapath (종합)

'컴퓨터 구조' 카테고리의 다른 글

Pipeline의 개념과 성능  (0) 2023.07.11
ALU Control  (0) 2023.07.11
실수의 표현과 연산  (0) 2023.07.06
사칙연산 원리  (0) 2023.07.05
Static Linking 부터 로드까지  (0) 2023.06.30