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
'junior developer :) > 책 읽기' 카테고리의 다른 글
컴퓨터의 기본 구성_하드웨어의 구조 (Part 2-1. 컴퓨터의 구조와 성능향상) (0) | 2022.08.09 |
---|---|
운영체제란 ?_쉽게 배우는 운영체제 (part 1. 운영체제와 컴퓨터) (0) | 2022.08.01 |