Computer Architecture

[컴퓨터 구조 및 설계] 2-1. Instructions, Language of the Computer: 하드웨어

noahkim_ 2025. 3. 24. 22:55

최규상 님의 KOCW 강의 "컴퓨터 구조"를 정리한 글입니다.

* David A. Patterson님과 John L. Hennessy 님의
"컴퓨터 구조 및 설계" 책을 교제로 한 강의입니다. (책의 내용은 포함되지 않았습니다)

 

1. Introduction

Instruction Set

  • 컴퓨터의 명령어 셋
    • 컴퓨터마다 다름
  • 발전과정
    • 초창기 컴퓨터들은 매우 단순하였음 (수 적음)
    • 현대 컴퓨터들도 단순함 (중간에 복잡함을 겪다가 단순해짐)

 

ISA (Instruction Set Architecture)

  • 하드웨어와 로우레벨 소프트웨어간의 인터페이스
  • 레지스터, 메모리 접근, I/O 등의 정보를 하드웨어에 전달함
  • 같은 소프트웨어라도, 성능과 비용에 따라서 다양한 CPU에서 동작 가능함

 

ABI (Application Binary Interface)

  • ISA와 OS Interface의 결합
  • 애플리케이션이 OS와 상호작용하는 방식을 정의
  • 실행 파일 수준에서 바이너리 호환성을 보장하는 역할

 

MIPS Instruction Set

  • MIPS CPU가 사용하는 Instruction Set
  • ARM (embedded)에서 사용됨
  • 현대적인 ISA에서 함께 사용됨

 

2. Operations of the Computer Hardware 

CPU Byte Addresses

  • 대부분의 컴퓨터는 바이트 단위로 메모리에 데이터 저장

 

Alignment restriction
  • CPU는 word 단위로 메모리에 접근함

 

메모리 읽기 방식

 

특징 Big Endian Little Endian
워드 주소 기준 맨 왼쪽(상위) 바이트가 워드 주소 맨 오른쪽(하위) 바이트가 워드 주소
메모리 저장 순서 큰 자리(상위 바이트)부터 저장 작은 자리(하위 바이트)부터 저장
예시 (0x12345678 저장 방식, 4바이트 워드) 12 34 56 78 (높은 바이트가 앞) 78 56 34 12 (낮은 바이트가 앞)
사용 프로세서 IBM 360/370, MIPS, Motorola Intel 80x86, DEC VAX, ARM (기본적으로 Little)
직관성 사람에게 익숙한 숫자 표현과 동일 성능 최적화에 유리 (LSB 먼저 접근 가능)

 

MIPS Register

  • 32-bit 레지스터 (32개의 비트를 저장할 수 있음)

 

구성
  • 2개의 read port ($t0, $t1)
  • 1개의 write port (한번에 한개의 레지스터만 업데이트 가능)

 

$zero (The Constant Zero)
  • MIPS 레지스터 0는 상수 0을 의미 (수정 불가)

 

3. Operands of the Computer Hardware

Memory Operands (MIPS)

  • arithmetic operations을 사용하여 계산함 (load & store 명령어 사용)

 

example
g = h + A[8]
lw $t0, 32($s3) # load word
add $s1, $s2, $t0
  • $t: temporary
  • $s: saved variables

 

A[12] = h + A[8]
lw $t0, 32($s3)
add $t0, $s2, $t0
sw $t0, 48($s3) # store word

 

Register Operands (MIPS)

Example
f = (g+h) - (i + j)
add $t0, $s1, $s2 # temp t0 = g+ h
add $t1, $s3, $s4
sub $s0, $t0, $t1
  • $t: temporary
  • $s: saved variables

 

Registers vs Memory

레지스터
  • 훨씬 접근 시간이 빠름
  • code density가 높음
    • 명령어가 차지하는 공간이 얼마나 효율적인지 나타내는 개념
    • 수행하기 위한 명령어 길이가 짧음을 의미함
    • 레지스터를 표현하기 위해 5bit 만 필요하기 때문 (모든 레지스터를 5비트로 표현 가능)
    • 메모리 접근 기반 명령어는 상대적으로 더 긴 주소나 오프셋을 포함해야 하므로 코드 밀도가 낮아짐

 

메모리
  • 명령 실행은 load-store 명령어를 사용함 (load-store Architecture)

 

 

출처