컴퓨터의 구조와 성능 향상

단셰·2022년 10월 16일
0

2-1 하드웨어의 구성

: CPU(중앙 처리 장치), 메모리(주기억장치 / 보조 기억 장치), 입출력 장치

2-2 폰노이만 구조

: CPU, 메모리, IO장치가 버스로 연결된 구조

: 프로그램이 HDD같은 저장 장치에 담겨있지마, 저장장치에서 바로 실행할 수 없고
메모리로 가지고 와야지만 실행이 됨

⇒ 메인메모리가 유일한 작업공간!!

⇒ 메모리 관리가 중요해짐,,

  • CPU? ALU(산술연산 장치), CU(control unit - 제어 장치), Register(임시 보관)

2-3 Register(레지스터)

  • 사용자 가시 레지스터
    • 데이터 레지스터(DR) - CPU가 명령어를 처리하는데 필요한 데이터를 임시저장하는 범용 RS
    • 주소 레지스터(AR) - 데이터나 명령어가 저장된 메모리 주소를 저장하는 공간
  • 사용자 불가시 레지스터
    • 프로그램 카운터(PC) - 다음 실행할 명령어의 위치 정보 저장
    • 명령어 레지스터(IR) - 현재 실행 중인 명령어 저장
    • 메모리 주소 레지스터(MAR) - 메모리 관리자가 접근해야 할 메모리 주소 저장
    • 메모리 버퍼 레지스터(MBR) - 메모리 관리자가 메모리에서 가져온 데이터 임시 저장
    • 프로그램 상태 레지스터(PSR)- 연산 결과 저장

2-4 버스 종류와 특징

  • 제어 버스(↔) : 제어장치와 연결. CPU가 메모리와 주변 장치에 제어신호를 보내기 위해 사용 (주변 장치에서도 제어신호를 보내므로 양방향)
  • 주소 버스(➡️) : MAR와 연결. 메모리나 주변 장치에 데이터를 읽거나 쓸 때 위치 정보 보낼 때 사용 (단방향)
  • 데이터 버스(↔) : MBR와 연결. 데이터 이동이 이루어짐 (양방향)

2-5 메모리의 종류

2-6 메모리 보호의 필요성

A 작업이 B 작업 영역에 침범하여 프로그램을 파괴하거나 데이터를 지울 수도 있고, OS 영역을 침범하면 시스템이 멈출 수도 있기 때문임

2-7 메모리 보호 방법

  1. 작업의 메모리 시작 주소를 경계 레지스터에 저장 후 작업
  2. 작업이 차지하고 있는 메모리의 크기(마지막 주소까지의 차이)를 한계 레지스터에 저장
  3. 작업이 진행되는 동안 두 레지스터의 주소를 벗어나는지 하드웨어적으로 점검
  4. 두 레지스터 값을 벗어나면 메모리 오류 관련 인터럽트 발생
  5. 메모리 영역을 벗어나서 발생한 인터럽트의 경우, OS가 해당 프로그램을 강제 종료

2-8 부팅

컴퓨터를 켰을 때 OS를 메모리에 올리는 과정

2-9 버퍼

  • 속도 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할하는 장치
  • 일정량의 데이터를 모아 옮겨서 속도 차이 완화

2-10 스풀 (버퍼의 예)

CPU와 I/O장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼

  • ex) 스풀러
    : 인쇄 내용을 순차적으로 출력하는 sw로, 출력 명령을 내린 프로그램과 독립적으로 동작
    : 인쇄물이 완료될 때 까지 다른 인쇄물이 끼어들 수 없음 ⇒ 프로그램 간에 배타적임

2-11 캐시 (버퍼의 일종)

  • CPU와 메모리 간 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시장소
  • CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음

2-12 저장 장치의 계층 구조

속도가 빠르고, 값이 높은 저장장치를 CPU와 가까이,
용량이 크고, 값은 낮은 저장장치를 반대쪽에 배치
👉 적당한 가격으로 속도는 빠르고, 대용량을 동시에 얻는 법

2-13 인터럽트

입출력 관리자가 CPU에 보내는 완료 신호

  • 폴링 방식
    : CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식
    ⇒ CPU가 명령어 해석/실행의 본래 역할을 하고 I/O도 관여해야 하므로 작업 효율 떨어짐,,
  • 인터럽트 방식
    : 입출력 관리자가 대신 입출력 해주는 방식
    ⇒ 데이터 입출력이 이루어지는 동안 CPU가 다른 작업이 가능

2-14 병렬 처리

: 동시에 여러 개의 명령을 처리하여 작업의 능률을 높이는 방식

💡 CPU에서 명령어가 실행되는 과정
1. 명령어 패치(IF) : 다음에 실행할 명령어를 IR(Instruction Register)에 저장
2. 명령어 해석(ID) : 명령어를 해석함
3. 실행(EX) : 해석한 결과대로 명령어를 실행
4. 쓰기(WB) : 실행 결과를 메모리에 저장

2-14-1 파이프라인 기법

: CPU 사용을 극대화 하기 위해 명령을 겹쳐서 실행하는 기법

: 1, 2번 명령어에 데이터가 겹치는 경우, 앞의 명령어가 끝날 때 까지 두 번째 명령어가 실행되면 안 됨 (데이터 의존성 문제 - 데이터 위험)

2-14-2 슈퍼스칼라 기법

: 파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식

: 파이프라인과 동일하지만 코어 2개 / 각 단계마다 동시 실행 명령어가 2개 라는 점이 다름

2-14-3 슈퍼파이프라인 기법

  • 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리
  • 한 클록 내에 다양한 명령어를 실행하면 다음 명령어가 빠른 시간 안에 시작될 수 있어 병렬 처리 능력이 향상

2-14-4 슈퍼파이프라인 슈퍼스칼라 기법

: 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행

profile
Happy Hacking!

0개의 댓글