2. 컴퓨터 구조와 성능 향상

2023. 4. 13. 17:53운영체제

728x90

컴퓨터의 기본 구성

1. 중앙처리장치(CPU)

: 명령어를 해석하여 실행하는 장치

 

2. 메모리

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

 

3. 입출력장치

 

4. 저장장치

  • 메모리보다 느리지만 저렴하고 용량이 큼
  • 전원의 온 · 오프와 상관없이 데이터를 영구적으로 저장
  • 예) 카세트테이프, 하드디스크, CD, USB, SSD

5. 메인보드

  • CPU와 메모리 등 다양한 부품을 연결하는 커다란 판
  • 다양한 장치들을 버스(데이터가 지나다니는 통로)로 연결

폰노이만 구조

  • CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조
  • 모든 프로그램은 저장 장치에서 바로 실행할 수 없고 메모리로 가지고 올라와야지만 실행이 가능

하드웨어 사양 관련 용어

1. 클록 (clock)

CPU의 속도와 관련된 단위

 

2. 헤르츠 (Hz)

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

예) 3.4 GHz는 1초에 클록이 3.4*10^9번 발생 
->  CPU 가 1초에 약 34억 번의 연산 작업 을 할 수 있음을 의미

 

3. 시스템 버스

  • 메모리와 CPU 주변장치를 연결하는 버스로 FSB (Front Side Bus) 즉, 전면 버스라고 함
  • 메모리는 시스템 버스의 속도로 작동

 

4. CPU 내부 버스

  • CPU 내부에 있는 장치 사이를 연결하는 버스로 (BSB Back Side Bus) 즉, 후면 버스라고 함
  • CPU는 CPU 내부 버스의 속도로 작동
두 버스의 속도 차이로 인하여 작업이 지연되며 이 문제를 캐시로 해결

 


CPU의 구성

1. 산술논리 연산장치(ALU)

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

 

2. 제어 장치

주변장치에게 작업을 지시

 

3. 레지스터

CPU 연산에 필요한 데이터를 임시로 보관

 

4. 버스의 종류

* 버스의 대역폭

  • 한 번에 전달(저장)할 수 있는 데이터의 최대 크기

메모리

메모리의 종류

 

휘발성 메모리 - 전력이 있어야 데이터 보관 가능

  • DRAM(Dynamic RAM): 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 함
  • SRAM(Static RAM): 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음
    -> 전원 꺼지면 데이터 날아감.

비휘발성 메모리

  • 플래시 메모리: 전력이 없어도 데이터 보관 
    예) USB
  • SSD: 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 내구성 때문에 많이 사용

  • 마스크 롬: 데이터를 지우거나 쓸 수 없음
  • PROM(Programmable ROM): 데이터 한 번만 저장 가능
  • EPROM(Erasable Programmable ROM): 데이터를 여러 번 쓰고 지울 수 있음

메모리 보호 방법

1. 작업의 메모리 시작 주소를 경계 레지스터에 저장 후 작업

2. 작업이 차지하고 있는 메모리의 크기,
즉 마지막 주소까지의 차이를 한계 레지스터에 저장

3. 작업이 진행진행되는 동안 이 두 레지스터의 주소 범위를 벗어나는지 점검

4. 두 레지스터의 값을 벗어나면 메모리 오류와 관련된 인터럽트가 발생

5. 운영체제가 해당 프로그램 강제 종료

 


부팅

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


버퍼

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

1. 스풀

CPU와 입출력장치의 속도차이로 인해 대기시간을 줄이기 위해 사용하는 기법

 

 

2. 캐시

  • 메모리와 CPU 간의 속도 차이 (BSB와 FSB의 속도 차이)를 완화하기 위해 메모리의
    데이터를 미리 가져와 저장해 두는 임시 장소
  • 일종으로 CPU 가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음
  • CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄
    *캐시 히트: 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용
    *캐시 미스:  원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음
    *캐시 적중률: 캐시 히트가 되는 비율로 일반적인 컴퓨터의 캐시 적중률은 약 90%

즉시 쓰기

  • 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식
  • 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐

지연 쓰기

  • 변경 내용을 모아서 주기적으로 반영하는 방식
  • copy back이라고도 함
  • 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상
  • 메모리와 캐시 된 데이터 사이의 불일치가 발생할 수도 있음

 

캐시의 종류

  • L1 캐시(특수 캐시): CPU 레지스터에 직접 연결
  • L2 캐시(일반 캐시): 메모리와 연결


저장장치의 계층 구조

속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치.


인터럽트

 

 

1. 폴링 방식

  • CPU 가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식
    -> 본래 역할 외에 모든 입출력까지 관여해야 하므로 작업 효율이 떨어짐
  • 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리

 

2. 인터럽트 방식

  • 입출력 관리자가 대신 입출력을 해주는 방식
  • 데이터의 입출력이 이루어지는 동안 CPU 가 다른 작업을 할 수 있음

* 인터럽트:  입출력 관리자가 CPU에게 보내는 완료 신호

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

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

 

<동작 과정>

1. CPU 가 입출력 관리자에게 입출력 명령을 보낸다
2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮긴다
3. 데이터 전송이 완료되면 입출력 관리자는 완료 신호를 CPU에 보낸다

 

 

직접 메모리 접근(DMA)

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

 

* CPU와 동시에 메모리에 접근하게 되면 입출력장치의 속도가 느리기 때문에 보통 CPU가 양보

-> 이러한 상황을 사이클 훔치기라 한다.

 

 

메모리 매핑 입출력

: 메모리의 일정 공간을 입출력에 할당


병렬 처리

1. 파이프라인 기법

: 하나의 코어에 여러 개의 스레드를 이용하는 방식

-> 명령을 겹쳐서 실행

* 3가지 위험

  • 데이터 위험: 아직 수행이 안된 명령의 결과 값을 참조할 때 발생하는 문제
    -> 명령어 단계를 지연하여 해결
  • 제어 위험: 프로그램 카운터(다음에 실행할 명령어의 주소를 저장하는 장치) 값을
    갑자기 변화시켜 발생하는 위험
    -> 분기 예측이나 분기 지연 방법으로 해결
  • 구조 위험: 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생하는 문제
    -> 해결하기 어려움

 

 

2. 슈퍼스칼라 기법

: 듀얼코어 CPU를 이용해 2개의 작업을 동시에 처리하는 방식

 

 

3. 슈퍼 파이프라인 기법

: 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리

-> 다음 명령어가 빠른 시간 안에 시작될 수 있어 병렬 처리 능력이 높아짐

 

4. 슈퍼파이프라인 슈퍼스칼라 기법

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

 

 

 

5. VLIW (Very Long Instruction Word) 기법

: CPU 가 병렬 처리를 지원하지 않을 경우 소프트웨어적으로 병렬 처리를 하는 방법

  • 컴파일 시 병렬 처리가 이루어짐
  • 동시에 수행할 수 있는 명령어들을 컴파일러가 추출하고 하나의 명령어로 압축하여 실행
  • 앞의 병렬 처리 기법들에 비해 동시에 처리하는 명령어의 개수가 적음

병렬 처리 시 고려 사항

1. 각 명령이 서로 독립적이고 앞의 결과가 뒤의 명령에 영향을 미치지 않아야 함

2. 단계별 시간의 차이가 크면 병렬 처리의 효과가 떨어짐

-> 기다리는 시간이 늘어나게 됨

3. 전체 작업 시간을 몇 단계로 나눌지 고려해야 함

-> 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는 데

 시간이 너무 많이 걸려서 오히려 성능이 떨어짐


CPU에서 명령어가 실행되는 과정

1. 명령어 패치(IF) :다음에 실행할 명령어를 명령어 레지스터에 저장
2. 명령어 해석(ID): 명령어 해석
3. 실행(EX): 해석한 결과를 토대로 명령어 실행
4. 쓰기(WB): 실행된 결과를 메모리에 저장

 


암달의 법칙

: 이 법칙에 따르면 주변장치의 향상 없이 CPU의 속도를 2 GHz에서 4 GHz로 늘리더라도 

컴퓨터의 성능이 2 배 빨라지지 않음

728x90

'운영체제' 카테고리의 다른 글

교착상태 (deadlock)  (1) 2023.05.29
5. 프로세스 동기화  (0) 2023.04.14
4. CPU 스케줄링  (0) 2023.04.14
3. 프로세스와 스레드  (2) 2023.04.13
1. 운영체제 개요  (1) 2023.04.13