읽은 책 정리/쉽게 배우는 운영체제

[정리] 02 컴퓨터의 구조와 성능 향상

포포015 2022. 8. 18. 23:39

목차

  • 1. 컴퓨터의 기본 구성
  • 2. CPU와 메모리
  • 3. 컴퓨터 성능 향상 기술
  • 4. 병렬 처리

 

1) 컴퓨터의 기본 구성

1.1) 하드웨어의 구성

- 컴퓨터는 CPU, 메인메모리, 입력장치, 출력장치, 저장장치로 구성 되어 있다.

( 컴퓨터의 작업 대부분은, CPU와 메인메모리의 협업으로 이루어진다.
 메인 메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구히 저장할 하드 디스크(HDD, SDD) 등 장비 추가 사용)

1.2) CPU와 메모리

- CPU는 명령어를 해석하여 실행하는 장치. 인간의 두뇌와 같은 역할.

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

1.3) 메인보드

- 메인보드는 CPU와 메모리등 다양한 부품을 연결하는 커다란판.
( 컴퓨터도 일정한 규칙에 따라 각 장치에 데이터를 전송하는데, 데이터가 지나가는 통로를 "버스" 라고한다.)

2) 폰노이만 구조

- 오늘날의 PC는 폰노이만 구조로 되어 있는데, 핵심은 메인보드에 붙어 있는 장치가 버스로 연결 되어 있는 구조 이다.

( 여기서 가장 중요한 특징은 폰노이만 구조에서는 모든 프로그램은 메모리에 올라가야 프로그램이 실행될수 있다는것이다.)

3) 하드웨어 사양 관련 용어

 - <1> 클록 - CPU의 속도와 관련된 단위 (CPU가 작업할때, 발생하는 일정한 박자.)

 - <2> 헤르츠 - 클록틱이 발생하는 속도를 나타내는 단위.

 - <3> 시스템 버스 - 메모리와 주변 장치를 연결하는 버스 (전면버스라함 - FSB )

 - <4> CPU 내부 버스 - CPU 내부에 있는 장치를 연결하는 버스(후면버스라함 - BSB )

 

 

2) CPU와 메모리

1) CPU의 기본 구성

- 산술논리 연산장치, 제어장치, 레지스터로 구성되며 이것들의 협업으로 작업처리.

<1> 산술논리 연산장치 - 데이터의 덧셈,뺄셈,곱셈,나눗셈 같은 산술연산과 AND, OR 같은 논리 연산 수행.

<2> 제어장치 - 작업을 지시하는 부분

<3> 레지스터 - CPU 내에 데이터를 임시로 보관하는곳.

 

* CPU의 내부 흐름

- 1) 필요한 데이터를 메모리에서 가져와 레지스터에 저장.

- 2) 산술 논리 연산 장치를 이용해 연산

- 3) 위의 결과를 다시 레지스터에 저장후 메모리로 옮김.

1.1) 대표적인 레지스터 종류

- 1) 데이터 레지스터 - 메모리에서 가져온 데이터를 임시로 보관할때 사용

- 2) 주소 레지스터 - 데이터 또는 명령어가 저장된 메모리의 주소 저장

- 3) 명령어 레지스터 - 현재 실행중인 명령어 저장

- 4) 메모리 주소 레지스터 - 메모리에서 데이터를 가져오거나, 반대로 메모리로 데이터를 보낼때, 주소를 지정할 때 사용

- 5) 메모리 버퍼 레지스터 - 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터 임시 저장

1.2) 버스의 종류

- CPU와 메모리, 주변 장치간 데이터를 주고 받을때 사용 . 대표적으로 3가지가 있다.

<1> 제어버스 - 다음에 어떤 작업을 할지 지시하는 제어신호가 오고간다.

<2> 주소버스 - 메모리의 데이터를 읽거나, 쓸때 어느 위치에서 작업할것인지를 알려주는 주소가 오고간다.

<3> 데이터버스 - 제어버스가 어떤 작업을 할지 신호를 보내고, 주소버스가 위치 정보를 전달하면 데이터가 데이터버스에 실려 이동.

 

1.3) 메모리의 종류

- 메모리는 읽거나 쓸수 있는 램과 읽기만 가능한 롬으로 구분된다

> 휘발성 메모리 - DRAM, SRAM 이 있다 일반적으로 메인 메모리에 DRAM / 캐시 같은 고속 메모리에 SRAM 을 사용한다.> 비휘발성 메모리 - FRAM, PRAM 을 사용한다. 

 DRAM, SRAM -> 빠르고 비싸다.

 FRAM, PRAM -> 느리고 싸다.

 

3) 컴퓨터 성능 향상 기술

1) 버퍼

- 장치간 속도에 차이가 있는 장치 사이에서 그 차이를 완화 해주는 역할

1.1)스풀

- CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적 버퍼. 대표적으로 프린트에 사용되는 스룰러이다.

2) 캐시

- 메모리와 CPU간 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소

2.1) 캐시의 즉시 쓰기와 지연쓰기

- 캐시에 있는 데이터가 변경 되었을때, 이를 반영 해줘야하는데 크게 두가지 방식이 있다. 각 장단점이 있다.

<1> 즉시 쓰기 - 데이터 변경감지시, 바로 메모리에 반영. 빈번한 데이터 전송으로 성능은 저하되나, 데이터의 정합성은 좋다.

<2> 지연 쓰기 - 변경내용을 모아서, 주기적으로 반영. 성능은 향상되나, 실시간 반영이 안이루어지기 때문에 데이터 정합성이 깨질수 있음.

3) 인터럽트 

- 과거에는 CPU가 직접 데이터를 가져오거나, 내보냈는데 이방식은 작업의 효율이 떨어지기때문에 나온 방안.

(나는 간단하게 중간에서 데이터를 가져오고 가져다 주는 역할로 이해 했다.
중간에서 데이터를 가져오고 가져다 주는 역할이 있기 때문에 CPU는 다른 작업을 더 할 수 있다.)

 

4) 병렬 처리

1) 병렬 처리의 개념

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

( 서로 겹치지 않는 작업을 동시에 진행하면 작업의 효율이 올라 갈 수 있다 )

 

* 스레드 - CPU의 작업 단위

 

2) 병렬 처리시 고려 사항

<1> 상호 의존성이 없어야 한다. (각 명령이 서로 독립적, 앞의 결과가 뒤의 명령에 영향이 가지않게 고려.)

<2> 각 단계의 시간을 일정하게 맞춰야 병렬처리가 원만하게 이루어진다

<3> 전체 작업을 몇 단계로 나눌지 잘 따져서 설계 해야한다.

 

3) 병렬 처리 기법

<1> 파이프라인 기법 - CPU의 사용을 극대화 하기 위해, 명령을 겹쳐서 실행

<2> 슈퍼스칼라 기법 - 파이프라인을 처리할수 있는 코어를 여러개 구성하여 복수의 명령어가 동시에 실행

<3> 슈퍼파이프 기법 - 파이프라인 기법을 강화 한것 ( 슈퍼 컴퓨터 CPU 에 사용)

<4> 슈퍼파이프라인,슈퍼스칼라 기법 - 위의 병렬 처리 기법을 모두 합쳐놓은것.

<5> VLIW 기법 - CPU가 병렬 처리를 지원하지 않을경우 소프트웨어 적으로 병렬처리

                         ( 동시에 수행할수 있는 명령어 들을 컴파일러가 추출하고, 하나의 명령어로 압축하여 실행 )