본문 바로가기
junior developer :)/책 읽기

컴퓨터 성능 향상 기술 (Part 2-2. 컴퓨터의 구조와 성능향상)

by ㅁ윤슬ㅁ 2022. 8. 10.
728x90
반응형

CPU에 비하면 메모리가 느린 것은 물론이고, 프로그램과 데이터를 보관하는 하드디스크의 속도는 더욱 느리다 이처럼 장치간 속도 차이를 개선하고 시스템의 작업 속도를 올리기 위해 기발 된 기술 중 운영체제와 관련된 기술에 대해서 적어볼 것이다

- 버퍼(buffer)
속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다 (일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화하는 장치)
하드디스크에는 메모리 버퍼가 있다. 같은 사양의 하드디스크라면 버퍼의 용량이 큰 것이 더 빠르다
소프트웨어적으로 사용적인 버퍼의 예시로는 동영상 스트리밍이 있다.(동영상 끊김을 방지하기 위해 동영상 데이터의 일정 부분을 버퍼에 넣은 후 실행하는 방법)


유사용어로 스풀(SPOOL. Simultaneous Peripheral Operation On-Line)이 있다.
스풀은 CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼로 프린터에 사용되는 *스풀러가 대표적인 예시이다

- 캐시
메모리와 CPU간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소
성능을 향상하려면 캐시 크기가 크거나 앞으로 많이 사용될 데이터를 가지고 오는 방법 등으로 캐시 적중률이 높아야 함

- 저장장치의 계층구조

가격과 컴퓨터 성능사이의 타협점으로 저장장치의 계층구조가 존재한다

저장장치의 계층구조는 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법이다

- 인터럽트(interrupt)
CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높이는 것
즉, 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있다

CPU는 입출력 관리자에게 작업 지시를 내리고 다른 일을 하다가 완료를 신호를 받으면 하던 일을 중단하고 옮겨진 데이터를 처리한다. 이처럼 하던 작업을 중단하고 처리해야 하는 신호라는 의미에서 인터럽트라고 불리게 되었다.

  • 인터럽트 방식 동작 과정

CPU가 입출력 관리자에게 입출력 명령을 보냄 -> 입출력 관리자는 명령받은 데이터를 메모리에 가져다놓거나 메모리에 있는 데이터를 저장장치로 옮긴다 -> 데이터 전송이 완료되면 입출력 관리자는 완료 신호를 CPU에 보낸다 (이때 보내는 완료 신호를 인터럽트라고 함)

  • 직접 메모리 접근(DMA.Direct Memory Access) : 효율성을 높이기 위해 인터럽트 방식을 사용하면서 입출력 관리자가 CPU대신 데이터의 입출력을 맡게 되었다. 본래 메모리는 CPU만 접근 권한을 가진 작업 공간이기 때문에 입출력 관리자에게는 CPU의 허락없이 메모리에 접근 할 수 있는 권한이 필요한데 이러한 권한을 직접 메모리 접근이라고 한다


- 병렬처리 (Parallel Processing)

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

CPU에서 명령어가 실행되는 과정은 일반적으로 *4단계(명령어 패치, 명령어 해석, 실행, 쓰기)로 나뉘는데, 병렬 처리 기법에서는 CPU사용을 극대화하기 위해 이러한 단계를 겹쳐서 실행한다.

병렬처리 시 고려사항

- 상호의존성이 없어야 병렬 처리가 가능하다

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

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

    단계별 시간의 차이가 크면 병렬 처리의 효과가 떨어진다

- 전체 작업 시간을 몇 단계로 나눌지 잘 따져봐야 한다

    작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는데 시간이 너무 많이 걸려서 성능이 떨어지는 오버헤드현상이 벌어질 수 있다

병렬처리 기법

- 파이프라인기법

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

  명령어 처리의 단계마다 독립적으로 구성하여 각 단계가 쉬지 않고 명령어를 처리할 수 있게 한다.

- 슈퍼스칼라(super-scalar)기법

   파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식(오늘날의 CPU는 대부분 이 기법 사용)

- 슈퍼파이프라인기법

   크레이슈퍼컴퓨터의 CPU에서 사용 되는 슈퍼파이프라인기법

파이프라인 기법에서는 한 클록마다 하나의 명령어를 실행하지만, 슈퍼파이프라인 기법에서는 파이프라인의 각 단계를 세분화 하여 한 클록 내의 여어 명령어를 처리 할 수 있다.

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

  앞의 병렬 처리 기법을 모두 합쳐 놓은 것. 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행하는 방식

- VLIW(Very Long Instruction Word) 기법

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

앞의 병렬처리 기법들은 명령어 실행 시 병렬 처리가 이루어지지만 VLIW기법은 컴파일 시 병렬처리가 이루어진다


참고

* 스풀러 : 인쇄할 내용을 순차적으로 출력하는 소프트웨어, 출력명령을 내린 프로그램(문서작업)과 출력작업이 독립적으로 동작한다.

* 사이클 훔치기 

CPU와 직접메모리 접근이 동시에 메모리에 접근하려한다면 누군가는 양보해야하는데 보통은 CPU가 사용권한을 양보한다. CPU의 작업속도보다 입출력장치의 속도가 느리기 때문에 직접 메모리 접근에 양보하는 것으로, 이러한 상황을 사이클(순서) 훔치기라고 한다. 

* CPU 명령 실행 4단계

  명령어 패치(Instruction Fetch .IF) : 다음에 실행할 명령어를 명령어 레지스터에 저장한다.

 명령어 해석(Instruction Decode . ID) : 명령어를 해석한다

 실행 (EXecution .EX) : 해석한 결과를 토대로 명령어를 실행한다

 쓰기 (Write Back . WB) : 실행된 결과를 메모리에 저장한다


2-1 컴퓨터의 구조는 이 포스팅에서
https://jhn221.tistory.com/24

 

컴퓨터의 기본 구성_하드웨어의 구조 (Part 2-1. 컴퓨터의 구조와 성능향상)

컴퓨터의 기본 구성 . 하드웨어의 구조에 대해서 [쉽게 배우는 운영체제] 도서 2장에서 읽은 부분 중 앞부분을 정리해보려고 합니당 먼저 컴퓨터는 중앙처리장치(CPU), 메인메모리, 입력장치, 출

jhn221.tistory.com

 

728x90
반응형