본문 바로가기

Computer Science/Computer Architecture

컴퓨터 구조 개념 정리

컴퓨터 시스템

  • 하드웨어, 소프트웨어로 구성
    • 소프트웨어: 운영체제, 응용 프로그램
    • 주요 하드웨어: CPU(중앙처리장치), Memory, Storage, Network

폰 노이만 구조(현 컴퓨터 구조)

  • CPU, 메모리, 프로그램으로 구성
  • Memory에 프로그램, 데이터 저장
  • 하나씩 꺼내서 CPU:Arithmetic Logic Unit(내부의 Accumulator에 Input 후 결괏값 Output)으로 연산
  • 다른 작업을 할 때 소프트웨어만 교체하면 됨

컴퓨터 주요 구성 요소(3가지)

CPU

  • 연산
    • 산술 연산
    • 논리 연산
  • 제어
  • IO Device(입출력 장치), Memory, ALU 동작 제어

Memory(코드, 데이터 저장)

  • 프로그램, 프로그램 수행에 필요한 데이터 저장
  • 내부 기억장치(주기억장치)
    • CPU 안에 레지스터, 캐시 메모리
    • DRAM 등(램, RAM, DDR4)
  • 외부 기억장치(보조기억장치
    • SSD, HDD

IO Devices(입출력 장치)

  • 입력 장치: 마우스, 키보드, 터치패드 등
  • 출력 장치: 모니터, 프린터, 스피커 등

Bus(버스)

  • CPU, Memory, IO Devices를 연결하고 데이터를 송수신하는 장치

의사소통

  • 2진법의 0과 1(비트)을 통해 문자 또는 숫자를 표현하여 의사소통
  • 전원: 전기를 켜고(1) 끔(0)으로써 작동

논리 연산

AND Gate(직렬 회로)

  • A: 0, B: 0 —> output: 0
  • A: 0, B: 1 —> output: 0
  • A: 1, B: 0 —> output: 0
  • A: 1, B: 1 —> output: 1

OR Gate(병렬 회로)

  • A: 0, B: 0 —> output: 0
  • A: 0, B: 1 —> output: 1
  • A: 1, B: 0 —> output: 1
  • A: 1, B: 1 —> output: 1

NOT Gate

  • input: 0 —> output: 1
  • input: 1 —> output: 0

NAND Gate(AND의 결과를 마지막에 반대로 통과)

  • A: 0, B: 0 —> output: 1
  • A: 0, B: 1 —> output: 1
  • A: 1, B: 0 —> output: 1
  • A: 1, B: 1 —> output: 0

NOR Gate(OR의 결과를 마지막에 반대로 통과)

  • A: 0, B: 0 —> output: 1
  • A: 0, B: 1 —> output: 0
  • A: 1, B: 0 —> output: 0
  • A: 1, B: 1 —> output: 0

부울 대수식

  • 논리연산을 식으로 표현

이진수 덧셈(가산기)

  • (이진수) 논리연산을 통해 계산기를 만들 수 있음
  • sum, carry, OR, NAND, XOR을 조합해 원하는 계산을 할 수 있음

sum

  • 합을 계산

carry

  • 상위 자릿수 계산

OR

  • 하나가 1이면 1

NAND

  • 둘 다 1이면 0

XOR

  • input이 서로 다를 때만 1

반가산기(half adder)

  • 두 bit를 덧셈하여 carry 계산

전가산기(full adder)

  • 두 bit와 carry까지 같이 계산

8비트 전가산기

  • Carry 8개를 조합
  • 2^8까지 계산 가능

16비트 전가산기

  • Carry 16개를 조합
  • 2^16 = 65536까지 계산 가능

윈도우

  • 16비트와 32비트

Oscillator

  • 자기장을 이용해 NOT Gate의 두 값을 지속적으로 반복하는 회로

클럭(Oscillator를 통해 생성)

  • CPU: 2.5GHz —> 1초에 1,000,000,000Hz의 명령을 처리

오버클럭

  • Oscillator의 주기를 높여서 처리속도를 향상시키는 것

플립플롭

  • NOR Gate
  • 데이터를 저장(이전에 전기를 켰다는 사실을 기억)하는 논리 회로
    • 첫 번째 스위치 켜면 불이 켜지고, 꺼도 켜진 채로 지속
    • 두 번째 스위치 끄면 불이 꺼지고, 켜도 꺼진 채로 지속

Hold That Bit

  • 조합 논리회로

1 bit latch

  • 1 bit를 일시적으로 저장할 수 있는 메모리
  • Write이 1일 때 1 bit를 저장

8 bit latch

  • 8 bit를 일시적으로 저장할 수 있는 메모리
  • Write이 1일 때 8 bit Data Inputs를 8 bit Data Outputs에 저장, 0이면 그대로 유지
  • 3-to-8 decoder와 8-to-1 selector를 조합해 구성

8-to-1 selector

  • 8 bit 데이터에서 특정 bit값만 출력
  • 세 자리의 이진수를 조합하여 8개의 Inputs를 통해 특정 주소를 선택, 해당 Data를 출력

3-to-8 decoder

  • 8 bit 중 특정데이터 입력

RAM(Random Access Memory)

  • 온전한 8 bit latch(3-to-8 decoder와 8-to-1 selector로 구성)
  • 3개의 주소(Address), Write, Data in(1개의 Data bit를 입력)의 입력과 3-to-8 decoder, 8-to-1 selector를 조합해 구성

기능

  1. Memory: 데이터 저장
  2. Read/Write: 특정 공간의 데이터 읽기, 저장
  3. Random Access: 순차 검색할 필요 없이 주소(Address)를 통해 특정 저장공간을 바로 찾아갈 수 있음

8 X 2 RAM array

  • 8 X 1 RAM 두 개를 조합
    • Data In은 두 개에 각각 입력
    • Address와 Write는 두 개에 동일하게 입력

16 X 1 RAM array

  • 8 X 2 RAM 위에 1-to-2 Decoder 추가(주소 하나 더 필요) —> Data In
  • 주소 = 2^4 = 16개
  • 2-to-1 Selector(아웃풋 둘 중 하나 선택) —> Data Out

m*n RAM array

  • 많은 데이터를 저장할 수 있는 RAM array
  • 8 X 1 RAM 여러 개 연결, 여러 개의 Select로 Decoder/Selector 구성

Accumulator

  • Clear 입력 추가
    • Claer 1 —> Q output 0
    • Flip-flop 값 삭제
    • 입력에 관계없이 Claer를 입력하면 output값 삭제
  • 8-Bit Adder, 8-Bit Latch로 구성
  • 8-Bit Latch
    • Clear 스위치가 Clear 입력에 들어 감
    • ADD 스위치가 Clock 입력에 들어 감
      • 8-bit Adder에서 덧셈 계산, ADD 스위치가 눌러지면 8-bit Latch에 저장(Accumulating)

레지스터

  • CPU가 요청 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치

메모리 계층

  • CPU
    • 레지스터(1 cycle) - L1 캐시(2 cycle) - L2 캐시(10 cycle) - L3 캐시(40 cycle)
  • 메모리(RAM)(200 cycle)
  • SSD(10 us)
  • HDD(10 ms)

Assembly

  • CPU와 유사한 로직을 사용하는 언어

Program Counter(PC)

  • 16-Bit Counter: 1씩 증가하는 조합 논리회로

여러 숫자를 더하는 방법

  1. 각 숫자를 0000h부터 순차적으로 써 넣음
    • Control Panel의 Takeover 스위치를 1로 만들고, 각 숫자를 각 주소에 써 넣음
  2. Takeover 스위치를 0으로 만들고, Control Panel의 RAM 제어 중지
  3. PC의 Clear 스위치가 0이 되면 PC가 0000h(h: Hex number, 16진수)부터 RAM에서 데이터 가져 옴
  4. Adder가 값 더함
  5. 클럭(Oscillator)이 0 또는 1로 변할 때마다 PC 값 증가

Automation

  • 000h 주소부터 저장돼 있음
  • 수 3개 덧셈, 2개 덧셈, 3개 덧셈하는 것을 가정

Programming

  • 메모리에 명령(Load, Add, Store 등)을 추가하여 CPU가 이미 만들어진 회로를 통해 그에 맞춰 동작하도록 함
    • Load: 2-to1 Selector로 Data를 Add하지 않고, 바로 8-bit Latch에 삽입
    • Store: 8-bit Latch의 Output을 바로 64Kx8 RAM에 저장(Write 스위치 —> 1)

Instruction Set, Code

  • Software: Code + Data
    • Software Engineer: Code 작성
    • Machine Language: CPU가 Instruction code를 만들어 놓고 제공
    • Compile: 프로그래밍 언어로 작성된 프로그램을 CPU에게 제공받는 Instruction code 기반으로 변환
      • 저급 언어: Assembler —> 기계어
      • 고급 언어: Compiler, Interpreter —> 기계어
  • Load
    • OP(Operation) code: 10h
    • Assembly Language: LOD
  • Store
    • OP(Operation) code: 11h
    • Assembly Language: STO
  • Add
    • op(Operation) code: 20h
    • Assembly Language: ADD
  • Subtract
    • OP(Operation) code: 21h
    • Assembly Language: SUB

CPU

구조

  • 레지스터: CPU 내부의 저장공간 —> 빠른 실행
    • PC(Program Counter): 다음 실행할 명령어 주소 가리킴
    • IR(Instruction Register): 가장 최근 인출한 명령어 보관
    • 누산기(ACC, Accumulator): 데이터 일시적 보관
    • MAR(Memory Address Register): CPU가 메모리 참조 위해 보관하는 데이터 주소 가짐
    • MBR(Memory Buffer Register): CPU가 메모리로부터 읽거나 저장할 데이터 보관

실행 구조(순서)

  1. Instruction Fetch: 실행할 명령어를 메모리에서 읽어 가져 옴
    1. PC가 가리키는 주소 MAR로 보냄
    2. MAR에 적힌 주소를 메모리에서 읽어서 MBR로 전송
    3. MBR에 있는 명령어 IR에 저장
    4. 다음 명령어를 가리키도록 PC 주소값 증가
  2. Instruction Decode: 인출 명령어 포함된 데이터 가져온 후 명령어 해독
  3. Instruction Execution: 명령어 실행
    • MBR 데이터와 ACC(Accumulator)의 데이터로 연산 후 ACC에 저장
  4. Write Back: 실행 결과 저장

구성

  • 하나의 명령: opcode + argument(operand) 구조
    • 3E: 사전 약속된 load 명령 —> operand: 바로 이어지는 데이터
    • opperand: 데이터 주소
    • 데이터를 opperand 주소로부터 가져 와서 레지스터에 저장

파이프라인

  • CPU 성능 높이는 기법
  • 하나의 작업에 필요한 일을 세부적으로 나눠 동시에 여러 세부작업 실행
  • 하나의 실행을 취소하면 진행되고 있던 다른 모든 명령들 전체 롤백해야 함 —> CPU 사용 낭비

Fetch Stage (Instruction Fetch/Decode)

  • 명령어 인출(IF: Instruction Fetch)
  • 명령어 해독(ID: Instruction Decode): 인출된 명령어 해석
  • 오퍼랜드 인출(OF: Operand Fetch): 메모리에서 데이터 인출

Execution Stage (Instruction Excecution)

  • 명령어 실행(EX: EXecute)
  • 실행 결과 저장(SR: STore)

실행 속도

  • 하나의 명령 실행에 걸리는 시간: 5 cycle
  • 1HZ = 1 cycle / sec

Intel(주로 데스크톱과 노트북)

CISC(Complex Instruction Set Computer)

  • 한 명령어 실행으로 가능한 한 많은 작업 수행(복합 명령어)
  • CPU 로직 회로 복잡도 증가(∵복합 명령어 수행)
    • 한 명령어 실행 시간 증가
  • 명령어 포맷이나 길에 관련 규칙 없음
  • 하나 이상의 cycle로 명령어(세부 작업) 실행
  • 전체 명령 소요시간 예측 어려움

ARM(스마트폰, 임베디드, IoT(사물 인터넷) 기기 등)

RISC(Reduce Instruction Set Computer)

  • 간단한 명령어 조합해서 실행
  • 명렁어 포맷, 길이 고정
  • 한 cycle로 명령어(세부 작업) 실행
  • 전체 명령 시간 예측 가능

메모리

  • Register: CPU 안에서 데이터 보관
  • SRAM: L1, L2, L3 캐시
    • 가장 많이 사용하는 메모리의 데이터 저장
  • DRAM: 메모리
  • SSD/HDD: 전원이 꺼져도 데이터 보전

IO Devices

  • Bus를 통해 IO Device에 데이터 송수신