CS01_CPU 구조

이혜윤·2023년 4월 6일
3

OS

목록 보기
4/4
post-thumbnail

1. 컴퓨터 시스템 기본 구성

1.1 HW

  • 컴퓨터 정보들의 전송 통로 제공
  • 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들
  • CPU, Memory, Hard Disk, Bus 등의 컴퓨터 구성장치 + 프린터, 백업 장치 등의 주변 장치

1.1.1 CPU

  • 데이터 처리
  • 데이터 저장 및 이동
  • 프로그램 흐름 제어

1.1.2 Memory

1) Cache Memory

2) 주기억장치

3) 보조기억장치

1.1.3 I/O Device

  • 사용자-컴퓨터 상호 연결 하는 입출력장치
  • CPU와 직접 연결하기에는 각 입출력장치다마다 사용 data크기도 다르고 명령어도 다르다. CPU 보다 실행속도도 현저히 느림. 비효율적.
  • 각 I/O 장치별 제어기(Bridge)가 있어 CPU와의 통신을 통해 장치의 동작 또는 Data를 제어.

1) Input module 입력 장치

  • 키보드
  • 시스템이 사용할 수 있는 형식화된 시그널로 명령을 입력할 수 있게 해주는 장치

2) Output module 출력 장치

  • 모니터

1.1.4 I/O 장치 제어기

CPU로부터 I/O 명령을 받아서 해당 I/O장치를 제어하고, 데이터를 이동함으로써 명령을 수행하는 전자회로장치
ex. 키보드 제어기, 프린터 제어기

1.1.5 레지스터

  • 상태 레지스터 : I/O 장치의 현재 상태를 나타내는 비트들을 저장하는 레지스터.
    • 준비 상태 비트 RDY
    • 데이터 전송 확인 비트 ACK
  • 데이터 레지스터: CPU와 I/O 장치 간에 이동되는 데이터를 일시적으로 저장. = 데이터 버퍼.

1.2 SW

  • 정보들이 실제로 이동하는 방향과 정보 처리의 종류를 지정

  • 그러한 동작들이 일어나는 시간을 지정해주는 명령의 집합

  • HW를 변경하지 않고 새로운 기능을 제공할 수 있다는 유연성

    • 시스템 소프트웨어: OS (ex. Window, Linux, Unix)
    • 응용 소프트웨어: 워드 프로세서, 웹 브라우저, MS-Excel

2. CPU의 구성

2.1 registers (레지스터 세트):

cpu 내부에 위치한 기억 장치
속도가 매우 빠르지만 내부회로가 복잡하여 공간차지 많이함.
따라서 CPU 내부 레지스터 개수는 제한적

2.2 ALU

실제 산술/논리 연산을 수행하는 회로들로 이루어진 HW 모듈

2.3. Control Unit

명령어 해석/실행 등 ALU 제어 신호들을 순차적으로 발생하는 HW 모듈
명령어 실행에 필요한 정보들의 전송 통로와 방향 지정
CPU 내부 요소들과 시스템 구성 요소들의 동작 시간 결정

2.4. CPU 내부버스

ALU와 레지스터들 간의 데이터 이동을 위한 데이터/주소 선/제어 신호 를 전송하는 선들로 구성.
1.1-1.3의 교집합


3. CPU의 명령어 실행

3.1 명령어 실행을 위한 CPU 내부의 레지스터 세트

전체 흐름: PC -> MAR -> 기억장치 -> MBT -> IR -> Control Unit (필요에 따라 ALU/AC 사용)

3.1.1 PC(Program Counter): 다음에 인출될 명령어의 주소를 가지고 있는 레지스터

3.1.2 AC(Accumulator): 데이터를 일시적으로 저장하는 레지스터

3.1.3. IR(Instruction Register): 가장 최근에 인출된 명령어가 저장되어있는 레지스터. 즉, 내가 지금 실행할 명령어.

  • 0-3bit: Opcode(=Operation Code). 어떤 동작을 할건지 규정. 2.2의 예시들을 수행할 수 있음
  • 4-15bit: Operand(=Operatino Address). 명령어 주소.
    • data의 주소 or data를 저장하는 장소
    • 데이터 저장/ register 주소 지정 / memory 주소 지정
  • addressing mode 비트: 주소 지정방식을 식별
    • 프로세서 마다 다름
    • 1이면 간접 주소 지정방식, 0이면 직접 주소 지정방식

3.1.4. MAR(Memory Adderess Register): PC에 저장된 명령어 주소가 주소 버스로 출력되기 전 일시적으로 저장되는 주소 레지스터
메모리에 CPU가 접근 시 메모리로부터 명령어/데이터를 읽거나 쓸 때 주소가 저장되어있는 곳

3.1.5. MBR(Memory Buffer Register): 기억 장치에 저장될(쓰여질) 혹은 메모리로부터 읽혀진 데이터가 일시적으로 저장되는 버퍼 레지스터.


3.2 IR 실행 과정

  • 명령어 인출, 명령어 해독은 모든 명령어에 대한 공통 기능
  • 데이터 인출/처리/쓰기 는 명령어에 따른 선택적 기능

3.2.1 명령어 인출(Instruction Fetch): PC가 가르키고 있는 기억 장치의 위치로부터 Instruction을 읽어서 IR에 넣는 과정. 이후 PC 값은 1 증가함.

PC-> MAR-> Memory(MAR) -> 값 -> 데이터버스 -> MBR-> IR, (PC)=(PC)+1

PC값이 외부의 주소 버스로 가기 위해서는 MAR을 거쳐야함. 따라서 PC값을 MAR에 먼저 저장시키고, 외부로 나간 후 메모리 값을 찾아 데이터 버스를 타고 다시 CPU로 돌아와 MBR에 저장되면서 동시에 PC값은 1증가함.

3.2.2 명령어 해독(Instruction decode)

  • OP code 해석

3.2.3 명령어 실행 Instruction Execution

  • DataFetch: 기억장치 or I/O장치로부터 데이터를 읽어오기
  • DataProcess: 데이터에 대한 산술/논리 연산 수행
  • DataStore: 수행 결과 저장

3.2.4 Write Back

  • 실행된 결과를 AC에 write

3.3 명령어 실행 예시

3.3.1 LOAD

메모리로부터 데이터를 읽어와서 AC에 삽입 =이동
IR에 저장된 명령어의 Operand(Opcode/Address중 Adress에 해당)가 MAR&MBR을 통해 메모리로 보내 데이터를 인출하여 AC에 삽입

IR(OPerand=data를 갖고있는 메모리의 주소)->MAR->기억장치(address->data)->data인출->MBR->AC

3.3.2 STORE

AC 값을 메모리에 저장 =저장
IR에 저장된 명령어의 주소 값(Operand)을 MAR에 전달한 후 AC에 저장되어있던 데이터를 MBR로 가져옴. MBR에서 기억장치의 MAR 번지로 데이터를 저장시킴.

IR(Operand=data를 저장하게될 메모리 주소)->MAR, AC(data)->MBR->메모리(주소(data저장))

3.3.3 ADD

AC + (메모리로부터 불러온 새로운 값) -> AC =처리
IR에 있는 명령어 addr중 주소값(여기서는 데이터를 가져올 번지)을 MAR에 저장. 기억장치의 MAR번지에서 데이터를 가져와 MBR에 저장. AC의 값에 MBR 값을 더하여 다시 AC에 저장.

IR(Operand=data를 갖고있는 메모리의 주소)->MAR->기억장치(address->data)->data->MBR->AC

3.3.4 JUMP

분기 명령어(기억장치에 저장되어있는 순서대로가 아닌 전혀 다른 위치의 ,,) 실행
명령어의 주소 값(목적지의 주소)으로 PC값을 바꾼다.

IR -> PC

예시 1

예시2


4. 시스템 BUS

4.1 데이터 버스

  • CPU & 기억장치, I/O 사이에 데이터를 전송하는 데 사용되는 선들의 집합
  • 데이터 버스의 폭이 CPU가 한 번에 전송할 수 있는 데이터 비트 수 결정
    • If, 데이터 버스 폭이 32bit
    • Then, CPU로부터 한번에 32bit 씩 읽어올 수 있다.

4.2 주소 버스

  • cpu가 기억장치로부터 데이터 쓰기/읽기 동작을 할때 해당 기억 장치를 지정하기위한 주소를 전송하는 선들의 집합
  • 이 주소 선들의 수가 CPU와 접속할 수 있는 최대 기억장치 용량 결정
    • If , 주소버스 폭이 16bit
    • Then, 2^16. 즉 64K 기억장소 지정 가능

4.3 제어 버스

  • cpu로부터 명령어가 해석되고 제어를 위한 선
  • 제어 신호선들은 고유의 기능 존재
    • I/O Read Signal
    • I/O Write Signal

5. 폰 노이만, 하버드 아키텍쳐

5.1 개념

  • 폰 노이만 아키텍쳐
    • 하나의 메모리에 명령어와 데이터 모두 저장

  • 하버드 아키텍쳐
    • 서로 다른 메모리에 명령어와 데이터가 각각 저장됨

5.2 특징 및 활용

  • 폰 노이만의 경우 Micro programmed 방식에 적합, 일반적으로 CISC에 적합
  • 하버드 아키텍처는 Hard-wired 방식이 적합, 일반적으로 RISC에 적합

5.3 폰 노이만 문제점 해결방안

modified harvard architecture

  • 캐시 메모리를 계층적으로 구성
  • 칩에 내장된 캐시 메모리는 명령어 캐시와 데이터 캐시로 분리하여 사용
  • 캐시가 적중하지 못한 경우 데이터를 데이터와 명령어로 구분되지 않은 메인 메모리에서 가져옴
  • 외부적으로는 폰 노이만, 내부적으로는 하버드 아키텍쳐

6. CISC / RISC

6.1 CISC

복잡한 명령 처리를 하나의 명령어로 실행할 수 있도록 다수의 복잡한 명령어를 H/W화한 복합 명령형 컴퓨터 ( 명령어의 길이를 줄임 )

가변 길이 명령어 구조를 가진 computer

decoding 속도를 높이고 최소의 메모리 구조를 갖는 방식

  • 필요한 정보만을 명령어로 저장 -> 가변길이
  • 낭비되는 코드를 줄여서 프로그램 크기도 작아짐
  • Micro-Program 방식
  • 주소 지정 방식 복잡
  • 대부분의 명령어 가능
  • 명령어 추가 용이
  • 명령어 형식 복잡, 회로 구성 복잡
  • 레지스터 수 적은 편 (메모리 접근 방법 자체가 다양하기 때문)
  • CPI 1보다 큼 (RISC 보다 느림)
  • 높은 밀도 메모리

6.2 RISC

사용빈도수 높은 기초 명령어로 구성

고정 길이 사용으로 파이프라인 적용

  • 32 비트의 고정된 명령어 길이로 파이프라인 적용 용이
  • Hard-Wired 방식
  • 주소 지정방식 단순
  • Load/Store 만 가능
  • 명령어 추가 제한적
  • 명령어 형식 단순, 회로 구성 단순
  • 레지스터 수 많은 편 (컴파일러가 메모리를 모두 활용하지 않고 store 이후 메모리끼리 연산하기 때문)
  • CPI 1에 가깝 (CISC보다 빠름)
  • 낮은 밀도 메모리. 비효율적.

참고 문헌

<컴퓨터 구조 및 운영체제 해설> 최종언 2018.04 _ 예문사

profile
구르미 누나

2개의 댓글

comment-user-thumbnail
2023년 4월 7일

머찐 재오 VS 바보같은 구르미 골라...

1개의 답글