개발세발

06. 컴퓨터 성능 향상 기술 본문

코딩공부/OS

06. 컴퓨터 성능 향상 기술

뉼👩🏻‍💻 2022. 12. 28. 16:32
728x90
반응형
SMALL

 

 

메인 보드 내 메모리와 주변장치는 시스템 버스 FSB로 연결되어 있고,

CPU 내 레지스터, 산술논리 연산장치, 제어장치는 CPU 내부 버스 BSB로 연결되어 있다 

 

CPU 내부 버스의 속도 > 시스템 버스의 속도

이므로 메모리를 비롯한 주변장치의 속도가 CPU의 속도를 따라가질 못함 

 

그래서 이러한 장치 간 속도 차이를 개선하고 시스템의 작업 속도를 올리기 위한 여러 기술이 개발됨 

 

📍 버퍼 buffer

: 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화하는 장치 

- 같은 사양의 하드디스크라면 버퍼의 용량이 큰 것이 더 빠르다 

 

*node.js - buffer 

https://nodejs.org/dist/latest-v8.x/docs/api/buffer.html

 

Buffer | Node.js v8.17.0 Documentation

Buffer# Prior to the introduction of TypedArray, the JavaScript language had no mechanism for reading or manipulating streams of binary data. The Buffer class was introduced as part of the Node.js API to enable interaction with octet streams in TCP streams

nodejs.org

 

 

📍스풀 SPOOL, Simultaneous Perpheral Operation On-Line 

: CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼 

ex. 프린터에 사용되는 스풀러 spooler 

: 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작한다 

 

📍캐시 cache 

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

- 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음 (미리 가져오기 prefetch) 

 

- 캐시는 메모리의 내용 중 일부를 미리 가져오고, CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아본다 

* 캐시 히트 cache hit 

: 캐시에서 원하는 데이터를 찾았을 때 그 데이터를 바로 사용

 

* 캐시 미스 cache miss

: 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음 

 

* 캐시 적중률 cache hit ratio 

: 캐시 히드가 되는 비율  

- 일반적인 컴퓨터의 캐시 적중률은 약 90% 

- 캐시 적중률을 높이는 방법

1) 캐시의 크기를 늘림

2) 앞으로 많이 사용될 데이터를 가져 오는것 

- 지역성 이론(locality) 

:  현재 위치에 가까운 데이터가 멀리 있는 데이터보다 사용될 확률이 더 높다 

 

* 캐시에 있는 데이터가 변경되어 메모리에 있는 데이터를 변경해야 할 때 사용하는 방식 

1) 즉시 쓰기 write through

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

2) 지연 쓰기 write back

: 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영 (카피백 copy back) 

 

 

* 캐시 종류

- 일반 캐시 : 명령어와 데이터의 구분 없이 모든 자료를 가져옴

- 특수 캐시 : 명령어와 데이터를 구분하여 가져옴

 

 

*L1 level 1 캐시 

: CPU 레지스터에 직접 연결됨

- 명령어 캐시, 데이터 캐시  

 

*L2 level2 캐시 

: 메모리와 연결된 일반 캐시 

* 웹브라우저 캐시 

: 앞으로 다시 방문할 것을 예상하여 지우지 않은 데이터 

 

 

📍저장장치의 계층 구조

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

- CPU와 가까운 쪽에 레지스터나 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있게 함 

 

 

📍폴링 polling

CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식 

- CPU가 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 맍고할 때 데이터를 처리함 

- 오늘날에는 주변장치가 많아졌기에 CPU가 모든 입출력에 관여하면 작업 효율이 현저하게 떨어지게 되므로 인터럽트 interrupt방식을 사용함 

 

 

 

📍인터럽트 interrupt 

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

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

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

➡️ 입출력 관리자가 CPU에 보내는 완료 신호 = 인터럽트 

 

* 인터럽트 번호 interrupt number

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

- 번호는 완료 신호를 보낼 때 장치의 이름 대신 사용하는 장치의 고유번호. 운영체제마다 다름 

 

* 인터럽트 벡스 interrupt vector

: 여러 개의 인터럽트를 하나의 배열로 만듬 

 

 

📍 직접 메모리 접근 Direct Memory Access, DMA

: 인터럽트 방식을 사용하여 데이터의 입출력을 할 때 

CPU의 허락없이 메모리에 접근할 수 있는 권한

- 명령을 받은 입출력 관리자는 CPU가 요청한 데이터를 메모리에 가져다 놓아야 하는데 메모리는 CPU만 접근 권한을 가진 작업공간이라 입출력 관리자는 접근이 불가능하므로 이러한 권한이 필요함 

 

 

📍매핑 입출력 Memory Mapped I/O, MMIO

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

- CPU가 사용하는 메모리 공간과 직접 메모리 접근을 통해 들어오거나 나가는 데이터를 위한 공간을 분리하는 것 

 

 

📍사이클 훔치기 cycle stealing

: CPU와 직접 메모리 접근이 동시에 메모리에 접근하려 할 때, 두 장치가 동시에 메모리에 접근하면 CPU가 메모리 사용 권한을 양보함

➡️ CPU의 작업속도보다 입출력 장치의 속도가 느리기 때문에 

: CPU 입장에서는 직접 메모리 접근이 사이클(순서)를 훔쳐 간 것임 

728x90
반응형

'코딩공부 > OS' 카테고리의 다른 글

08. 프로세스의 개요  (1) 2022.12.30
07. 병렬 처리  (0) 2022.12.29
05. CPU와 메모리  (0) 2022.12.27
04. 컴퓨터의 기본 구성  (0) 2022.12.26
03. 운영체제의 구조  (0) 2022.12.23