대학원 일기

Chapter 02 컴퓨터의 구조와 성능 향상 본문

School/Operation System

Chapter 02 컴퓨터의 구조와 성능 향상

대학원생(노예) 2022. 3. 28. 22:56

컴퓨터의 기본 구성

1-1 하드웨어의 구성

  컴퓨터의 구성

- 필수장치: 중앙처리장치(CPU), 메인메모리(DRAM, 메모리, 주기억장치)

- 주변장치: 입력장치, 출력장치, 저장장치(보조기억장치)

 

  CPU(중앙처리장치)

- 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당

 

  메모리(주기억장치)

- 작업에 필요한 프로그램과 데이터를 저장하는 장소

- 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분

 

  입력장치

- 외부의 데이터를 컴퓨터에 입력하는 장치

 

  출력장치

- 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치

 

  저장장치

- 메모리보다 느리지만, 저렴하고 용량이 큼

- 전원의 온/오프와 상관없이 데이터를 영구적으로 저장

- 종류

  • 자성을 이용하는 장치: 카세트테이프, 플로피디스크, 하드디스크 등
  • 레이저를 이용하는 장치: CD, DVD, 블루레이디스크 등
  • 메모리를 이용하는 장치: USB 드라이버, SD 카드, CF 카드, SSD 등

  메인보드

- CPU와 메모리 등 다양한 부품을 연결하는 커다란 판

- 다양한 장치들을 버스(bus)로 연결함. 버스는 데이터가 지나다니는 통로

- 그래픽카드, 사운드카드, 랜카드 등이 기본으로 장착되어 있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함

 

1-2 폰노이만 구조(중요)

  폰노이만 구조(현재의 컴퓨터의 기반)

- CPU, 메모리, 입출력장치, 저장장치가 버스(bus)로 연결되어 있는 구조

- 프로그램은 하드디스크와 같은 저장장치에 담겨 있으나, 폰노이만 구조의 가장 큰 특징은 저장장치에서 바로 실행할 수 없고, 메모리(주기억장치)로 가지고 올라와야지만 실행이 가능함.

- 이러한 특징으로 인하여 메인 메모리(주기억장치)가 유일한 작업 공간이며, 메모리 관리가 중요함

모든 프로그램은 메모리(주기억장치)에 올라와야 실행할 수 있다.

- Program: 설치된 것.

- Process: 메모리에 올라와서 실행이 된 프로그램

 

1-4 하드웨어 사양 관련 용어

  클록(Clock)

- CPU의 속도와 관련된 단위

- 클록이 일정 간격으로 틱(tick)을 만들면 거기에 맞추어 CPU 안의 모든 구성 부품이 작업함

- 틱은 펄스(pulse) 또는 클록 틱(clock tick)이라고도 부름

 

  헤르츠(Hz)

- 클록틱이 발생하는 속도를 나타내는 단위

- 1초에 클록틱이 한 번이면 1Hz, 1000번이면 1kHz(1,000Hz)


  시스템 버스

- 메모리와 주변장치를 연결하는 버스로 FSB(Front-Side Bus), 즉 전면 버스라고 함

 

  CPU 내부 버스: CPU만을 위한 버스

- CPU 내부에 있는 장치를 연결하는 버스로 BSB(Back Side Bus), 즉 후면 버스라고 함

 

  CPU와 메모리의 속도

- CPU는 CPU 내부 버스(BSB)의 속도로 작동하고, 메모리는 시스템 버스(FSB)의 속도로 작동

- 두 버스의 속도 차이로 인하여 작업이 지연되며, 이 문제를 캐시(cache)로 해결(CPU와 RAM의 속도차이)

 

CPU와 메모리

2-1 CPU의 구성과 동작

  산술논리 연산장치

- 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR 같은 논리 연산을 수행

 

  제어장치

- CPU에서 작업을 지시

 

  레지스터

- CPU 내에 데이터를 임시로 보관

 

  CPU의 명령어 처리 과정

 

  주요 레지스터의 종류와 특징


 

  버스의 종류

  시스템 버스의 종류와 특징

- 제어 버스 : 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사용한다. 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문에 양방향이다.

- 주소 버스 : 메모리 주소 레지스터와 연결된 버스로, 메모리나 주변장치에 데이터를 읽거나 쓸 때 위치 정보를 보내기 위해 사용하며 단방향이다.

- 데이터 버스 : 메모리 버퍼 레지스터와 연결된 버스로, 데이터의 이동양방향으로 이루어진다.

 

  버스의 대역폭

- 한 번에 전달할 수 있는 데이터의 최대 크기(= 1 Word)

- CPU가 한 번에 처리할 수 있는 데이터의 크기와 같음

- CPU가 한 번에 처리할 수 있는 최대 데이터 크기를 워드(word)라고 부름

- 32bit CPU는 메모리에서 데이터를 읽거나 쓸 때 한 번에 최대 32bit(= 1 word)를 처리할 수 있으며, 이 경우 레지스터의 크기도 32bit, 버스의 대역폭도 32bit

- 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 데이터의 크기는 항상 같음

 

2-2 메모리의 종류와 부팅

  메모리의 종류

 

  휘발성 메모리(RAM, Random Access Memory)  - 전원을 끄면 데이터 삭제(=전기를 지속적으로 요구)

- DRAM(Dynamic RAM): 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 함

- SRAM(Static RAM): 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음

- SDRAM(Synchronous Dynamic RAM): 클록틱(펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM

 

  비휘발성 메모리

- 플래시 메모리(Flash memory): 디지털 카메라, MP3, USB 같은 전력 없이도 데이터를 보관하는 저장장치

- SSD: 빠른 데이터 접근 속도, 저전력, 내구성이 좋아 현재 나온 비휘발성 메모리 중에서는 탑급임

 

  롬(ROM: Read Only Memory)의 종류

- 마스크 롬(mask ROM): 데이터를 지우거나 쓸 수 없음

- PROM(Programmable ROM): 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음

- EPROM(Erasable Programmable ROM): 데이터를 여러 번 쓰고 지울 수 있음


  메모리 보호의 필요성

- 현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시에 실행하므로 사용자 영역이 여러 개의 작업 공간으로 나뉘어 있음

- 메모리가 보호되지 않으면 어떤 작업이 다른 작업의 영역을 침범하여 프로그램을 파괴하거나 데이터를 지울 수도 있으며, 최악의 경우 운영체제 영역을 침범하면 시스템이 멈출 수도 있음

(블루 스크린은 다른 프로세스가 운영체제에 침입하는 걸 막는 수단)

 

  메모리 보호 방법

정리: 작업을 시작하면 경계 레지스터에 메모리 시작 주소를 저장하고, 작업이 필요로 하는 메모리의 크기만큼 한계 레지스터에 저장한다. 작업이 진행되는 동안, 두 레지스터의 범위가 벗어나는지 하드웨어적으로 점검하는데 한계 레지스터의 값을 넘어가면 오류와 관련된 인터럽트가 발생하면서 운영체제가 해당 프로그램을 종료한다.


  부팅(Booting)

- 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정

- 하드웨어 점검할 때 모든 모듈에 전원을 연결하여 확인(컴퓨터 킬 때 키보드랑 마우스 잠깐 켜졌다 꺼지는 상황)

- 바이오스(BIOS, 롬): 운영체제로 올라오게 하기 위한 도구

 

컴퓨터 성능 향상 기술

3-1 버퍼

  버퍼

- 속도 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치

- 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화

- 주로 메모리와 주변 장치(I/O, HDD, SSD)의 속도 차이를 완화함

- 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역

- 버퍼는 사용 후에 데이터를 폐기함

 

  스풀(Spool)

- CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼(프린터에서 사용)

 

3-2 캐시

  캐시

- 메모리와 CPU 간의 속도 차이(BSB(CPU 내부버스)-FSB(시스템 버스))를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소 

- 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음

- CPU는 메모리에 접근해야 할 때, 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄

- 캐시는 CPU와 메모리 사이의 속도차이에 따른 병목현상을 줄이기 위한 범용 메모리

(일반적으로 CPU-레지스터, 레지스터-메모리 간에서 캐시. / 주변장치-CPU의 속도차가 버퍼.)

  버퍼와 캐시의 차이

- 버퍼는 일반적으로 캐시에 비해서 처리크기가 크기 때문에, 데이터를 저장할 수없다. 한번의 연산이 끝나면 사용된 데이터는 폐기된다. 이에 반해 캐시(Cache)는 캐시메모리에 해당 데이터를 저장하여 추후에도 계속 사용 할 수있다.

- 버퍼와 캐시 둘 다 두 장치 간의 속도 간극을 줄이는데 목적을 두지만, 버퍼는 속도가 느린 장치에 관점을 두어 속도 간극을 줄이고, 캐시는 속도가 빠른 장치에 관점을 두어 속도 간극을 줄이는 것에 차이가 있다.

 

  캐시의 구조

- 캐시 히트(cache hit): 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용

- 캐시 미스(cache miss): 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음

- 캐시 적중률(cache hit ratio): 캐시 히트가 되는 비율로, 일반적인 컴퓨터의 캐시 적중률은 약 90%

평균 메모리 접근 시간 공식(캐시 적중률 90%, 캐시 메모리 접근시간 50ns, 주기억장치 접근시간 400ns):

$T_{average} = 0.9 * 50ns + (1 - 0.9) * 400ns = 85ns$


(캐시는 CPU와 메모리 간 속도차이를 완화하기 위한 것)

CPU가 연산 결과를 캐시메모리에 저장해두는 경우, 캐시메모리와 메인메모리의 데이터 값이 다르게 된다. 이를 위해 데이터를 갱신하는 과이 필요함 = 아래 두 가지 방법 사용

 

  즉시 쓰기(write through)

- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식

- 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐

- 메모리의 최신 값이 항상 유지되기 때문에 갑작스러운 정전에도 데이터를 잃어버리지 않음

즉시 쓰기 방식은 CPU에서 연산결과를 캐시메모리에 저장할 경우 바로 메인메모리에도 값을 저장하는 방식이다. 이 방식은 메인메모리와 캐시메모리의 값이 항상 동일하다는 장점이 있다. 하지만, 쓰기 동작이 발생할 때마다 캐시메모리와 메인메모리에 쓰기 동작이 발생하기 때문에 시간이 길어진다.

 

  지연 쓰기(write back)

- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식

- 카피백(copy back)이라고도 함

- 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음

- 메모리와 캐시된 데이터 사이의 불일치가 발생할 수도 있음

나중쓰기 방식은 CPU의 연산결과를 캐시메모리에 저장해두고 메인메모리에는 저장하지 않는다. 변경된 캐시메모리의 블록에 1비트의 태그로 표시를 해두고, 해당 블록이 삭제되기 전에 메인메모리에 저장하는 방식이다. 이 방식은 메인메모리와 캐시메모리 간의 데이터가 불일치 할 수 있다.

  L1 캐시와 L2 캐시

- 명령어와 데이터를 구분하여 가져오는 특수 캐시(L1)

- 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시(L2)

 

특수 캐시: CPU 레지스터에 직접 연결되기 때문에 L1(Level 1)캐시라고 부름, L1캐시명령어 캐시와 데이터 캐시를 따로 나누어 동시에 읽어드림으로써 CPU의 파이프라이닝 성능을 향상시킴

- 일반 캐시: 메모리와 연결되기 때문에 L2(Level 2) 캐시라고 부름, L2 캐시는 둘의 구분없이 하나의 캐시 메모리로 구성됨.

 

3-3 저장장치의 계층 구조

저장장치의 계층 구조(지역성)

: 속도가 빠른 저장장치를 CPU와 가까운쪽으로 속도가 느린 대신 저장공간이 많은 저장장치는 CPU와 멀리

 

3-4 인터럽트

  인터럽트(interrupt) 방식

- 입출력 관리자가 대신 입출력을 해주는 방식

- CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임

- 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음

컴퓨터 구조에서 인터럽트는 CPU 프로세서가 다른 여러가지 원인에 의하여 현재 하는 일을 중단하고 발생된 일을 처리한 후 다시 실행 중인 작업으로 복귀하는 것을 말한다.

 

  인터럽트

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

 

  인터럽트 번호

- 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용하는 번호

- 윈도우 운영체제에서는 IRQ라고 부름

 

  인터럽트 벡터

- 여러 개의 입출력 작업을 한꺼번에 처리하기 위해 여러 개의 인터럽트를 하나의 배열로 만든 것

 

  인터럽트 방식의 동작 과정

1. CPU가 입출력 관리자에게 입출력 명령을 보낸다.

2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.

3. 데이터 전송이 완료되면 입출력 관리자는 완료신호를 CPU에 보낸다.

 

  직접 메모리 접근(Direct Memory Access, DMA)

- 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한

- 메모리는 CPU의 작업공간이지만, 데이터 전송을 지시받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음

 

  메모리 매핑 입출력(Memory Mapped I/O)

- 메모리의 일정 공간을 입출력에 할당하는 기법

  사이클 훔치기

- CPU와 직접 메모리 접근이 동시에 메모리에 접근하면 보통 CPU가 메모리 사용 권한을 양보

- CPU의 작업 속도보다 입출력장치의 속도가 느리기 때문에 직접 메모리 접근에 양보하는 것으로, 이러한 상황을 사이클 훔치기라고 함

 

병렬 처리

x

 

 

[심화] 무어의 법칙과 암달의 법칙

x

 

'School > Operation System' 카테고리의 다른 글

운영체제 6장  (0) 2022.06.08
Chapter 05 프로세스 동기화  (0) 2022.04.16
Chapter 04 CPU 스케줄링  (0) 2022.04.14
Chapter 03 프로세스와 스레드  (0) 2022.04.04
Chapter 01 운영체제의 개요  (0) 2022.03.28
Comments