컴퓨터 구조_3

김현우·2025년 1월 19일

04. MIPS instruction set architecture

MIPS Microarchitecture: Datapath & Control Logic

1. Datapath (파란 선):

  • CPU 내부에서 데이터가 흐르는 경로를 나타냄. 명령어, 레지스터 값, ALU 결과 등의 흐름을 포함.
  • 주요 구성 요소:
    • Program Counter (PC): 현재 실행 중인 명령어의 메모리 주소를 저장.
    • Instruction Memory: 실행할 명령어를 저장.
    • Registers (R0 ~ R31): 연산에 사용되는 임시 데이터를 저장.
    • ALU (Arithmetic Logic Unit): 산술 및 논리 연산을 수행.
  • 목적:
    • 명령어에서 지정한 작업을 실행하고 데이터를 처리.
    • 명령어 Fetch → Decode → Execute → Write Back 흐름을 구현.

2. Control Logic (주황 선):

  • 하드웨어 구성 요소를 제어하여 Datapath 상의 데이터 흐름을 제어.
  • 주요 구성 요소:
    • Multiplexer (MUX): ALU나 기타 유닛으로 전달할 입력을 선택.
    • Read/Write 제어: 메모리나 레지스터에 데이터를 읽거나 쓰는 작업을 제어.
  • 목적:
    • 명령어에 따라 하드웨어가 올바르게 동작하도록 제어 신호를 생성.
    • 각 컴포넌트가 적절한 순서로 동작하게 함.

Datapath 구성 요소

  1. Program Counter (PC):
    • 현재 실행 중인 명령어의 주소를 저장.
    • 명령어 실행 후에는 주소를 4 증가시키거나 분기(branch) 주소로 갱신.
  2. Instruction Memory:
    • Program Counter에 해당하는 명령어를 메모리에서 가져옴.
    • 가져온 명령어는 디코딩 후 실행에 사용.
  3. Registers (Register File):
    • 임시 데이터를 저장하고 연산에 사용.
    • 입력: R[rs], R[rt] (소스 레지스터).
    • 출력: 연산 결과는 다시 레지스터에 기록.
  4. ALU (Arithmetic Logic Unit):
    • 산술(덧셈, 뺄셈) 및 논리 연산 수행.
    • 출력: 연산 결과(ALUResult).
  5. Adder:
    • 다음 PC 값을 계산하여 순차 실행(4 증가) 또는 분기 주소를 결정.

Control Logic 구성 요소

  1. Multiplexer (MUX):
    • 특정 입력값을 선택하여 ALU나 다른 컴포넌트로 전달.
    • Opcode 및 명령어 유형에 따라 제어.
  2. Read/Write 제어:
    • 메모리 및 레지스터의 데이터 읽기/쓰기 작업 관리.
    • 필요한 작업(읽기/쓰기)만 수행하도록 제어.
  3. Instruction Decode Logic:
    • 명령어에서 rs, rt, rd, immediate, jump target, branch target 등의 필드를 추출.
    • 적절한 제어 신호를 생성하여 데이터와 연산이 올바르게 처리되도록 설정.

Datapath와 Control Logic의 통합

  1. 실행 흐름:
    • Datapath를 통해 데이터가 흐르며, Control Logic이 적절히 제어.
    • 예:
      • Datapath: PC에서 명령어를 가져옴 → 레지스터에서 값 읽음 → ALU가 연산 수행.
      • Control Logic: 필요한 레지스터를 읽고, ALU를 설정하며, 연산 결과를 적절한 위치에 저장.
  2. 처리 가능한 명령어 유형:
    • R-Type: 레지스터 간 연산 (예: add, sub).
    • I-Type: 즉시 값(Immediate) 연산 및 Load/Store 명령어.
    • J-Type: 점프(Jump) 명령어.

MIPS Microarchitecture: Memory Operations (Load/Store)

Memory Operations Overview

  1. Definition:

    • Load: 데이터를 메모리에서 레지스터로 읽어옴.
    • Store: 데이터를 레지스터에서 메모리로 저장(레지스터 값은 변경되지 않음).
  2. Characteristics:

    • 메모리 접근은 레지스터 접근보다 훨씬 느림.
    • 더 복잡한 설계가 필요.
    • 주소(Address): Load/Store 명령어는 데이터를 읽거나 쓰기 위한 메모리 주소를 요구.
  3. Addressing Mode:

    • 오퍼랜드(Operands)를 사용하는 방법을 정의.
    • 다양한 명령어 세트를 지원하여 유연한 데이터 접근 가능.

Instruction Types

ALU 연산

  1. R-Type Operations:

    • 레지스터 간 연산을 수행.
    • 예: add r1, r2, r3 → r1 = r2 + r3.
  2. I-Type Operations:

    • 즉시 값(Immediate) 또는 주소를 사용하는 연산.
    • 예: addi r1, r2, 10 → r1 = r2 + 10.

Memory 연산

  1. Load Operations (메모리 읽기):

    • 메모리에서 데이터를 읽어와 레지스터에 저장.
    • 예: lw r1, 4(r2) → r1 = 메모리[r2 + 4].
  2. Store Operations (메모리 쓰기):

    • 레지스터 값을 메모리에 저장(레지스터 자체는 업데이트되지 않음).
    • 예: sw r1, 4(r2) → 메모리[r2 + 4] = r1.

Addressing Modes in MIPS

  1. Immediate Addressing:

    • 명령어 자체에 즉시 값 포함.
    • 예: addi r1, r2, 10 (r1 = r2 + 10).
  2. Base Addressing (Displacement):

    • 기본 주소(base address)와 오프셋(offset)을 더해 실제 주소를 계산.
    • 예: lw r1, 4(r2) (r1 = 메모리[r2 + 4]).
  3. Register Indirect Addressing:

    • 레지스터 값이 주소로 사용됨.
    • 예: sw r1, (r2) (메모리[r2] = r1).
      PC-Relative Addressing:
  4. Program Counter(PC)를 - 기준으로 상대적인 주소 계산.

    • 주로 브랜치 명령어에서 사용.

MIPS Microarchitecture: Jump and Branch

Jump

  1. Definition:
    • Jump 명령어는 특정 메모리 위치로 프로그램의 흐름을 이동시킴.
  2. Instruction Format:
    • 64-bit Opcode + 26-bit Immediate Value.
  3. Execution Flow:
    • pc = j_target * 4
      • j_target: Immediate 값을 이용하여 점프할 주소를 계산.
      • 주소를 4로 곱하여 Word-Aligned 주소로 변환.
  4. Use Case:
    • 프로그램의 흐름을 다른 위치로 비조건적으로 이동.
    • 예: 함수 호출, 코드 블록 점프.

Branch

  1. Definition:
    • Branch 명령어는 조건에 따라 특정 주소로 프로그램 흐름을 변경.
  2. Instruction Format:
    • 64-bit Opcode + Two Registers + 16-bit Immediate Value.
  3. Execution Flow:
    • ALU를 사용하여 두 레지스터 값(R[rs], R[rt])을 비교.
    • 조건이 만족되면 다음을 실행:
      • if (R[rs] == R[rt])
        • pc = pc + b_target
          • b_target: 16-bit Immediate 값으로 계산된 분기(offset).
          • Register Update 없음.
  4. Use Case:
    • 조건부 흐름 제어(예: 반복문, 조건문 구현).

ALL

profile
학생

0개의 댓글