본문 바로가기
카테고리 없음

2-1 컴퓨터 성능 향상 기술(버퍼,스풀,캐시)

by jissi 2020. 5. 21.

필요한 이유

CPU 내부에 컨트롤유닛, 레지스터, ALU 등은 CPU 내부 버스로 연결되어 있고 메모리나 다른 입출력 장치들은 시스템 버스들로 연결되어 있다.

CPU 내부버스가 시스템 버스들에 비해 속도가 빠르기때문에 CPU에서 데이터 연산,처리가 끝나더라도 다른 장치들은 계속해서 작업을 수행중이기 때문에 CPU를 효율적으로 사용하지 못한다. 그래서 여러가지 기술들을 통해서 이 문제를 해결하려고 한다.

 

 

1. 버퍼

버퍼란 데이터를 모아서 전송함으로써 둘의 속도를 완화하는 장치이다. 데이터를 하나씩 전송하는 경우 작업량에 비해 실제 전송되는 데이터 양은 적지만, 데이터를 모아서 전송하면 적은 작업량으로 많은 데이터를 옮길수 있다.

물리적인 버퍼도 존재하지만 Software상의 버퍼도 존재한다. 대표적인 예로 동영상 스트리밍이 있다. 네트워크에서 들어는 데이터양이 내가 재생하고 있는 속도를 따라가지 못하면 동영상이 정지하는데 이러한 현상을 방지하기 위해서 동영상 데이터의 일정 부분을 버퍼에 넣은 후 수행한다.

 

2. 스풀

소프트웨어적인 버퍼의 일종으로 CPU와 입출력장치가 서로 독립적으로 수행하도록 고안된것이다. 대표적인 예로 프린터의 스풀러가 있다. 

평소에 워드로 문서편집을 한 후 인쇄를 하게되면 CPU가 이를 처리할 시 출력이 끝날때까지  워드를 사용하지 못한다. 이를 방지하고자 인쇄할내용을 하드디스크에 스풀러공간에 저장하여 CPU는 다른 작업을 수행할 수 있다.  스풀러와 일반적인 버퍼의 차이점은 버퍼의 경우 여러 프로그램에 데이터들을 모아서 한번에 전송하지만 스풀러의 경우 한 인쇄물이 완료될때까지 다른 인쇄물이 끼어들 수 없다.

 

 

캐시

캐시는 메모리의 있는 데이터의 일부를 미리 CPU영역에 저장하는 방법을 통해서 속도의 차이를 완화하는 방법이다. CPU는 데이터를 가져올 시 캐시에서 검사 후 데이터가 없는 경우에만 메모리에서 가져온다. 캐시에서 데이터를 찾으면 캐시 히드, 못찾으면 캐시 미스라고 한다. 이러한 캐시를 활용하는 방법이 효과가 좋으려면 캐시 히트율이 좋아야 하는데 이를 높이기 위해서 2가지 방법이 존재한다.

-캐시의 크기를 키운다.

-미리 가져오는 데이터가 앞으로 많이 쓰일 데이터이어야 한다.(가까운 데이터를 먼저 가지고 온다)

 

캐시를 사용하는 경우 데이터를 가져오는것외에도 데이터가 변경되었을때 역시 고려해야한다.

데이터의 변경이 있을때마다 메모리를 직접 찾아가서 데이터를 변경하는 방법(즉시쓰기) 과

데이터의 변경이 있을시 캐시에 반영한 후 일정시간이 지나고 변경된 데이터들을 한번에 메모리엣 변경하는 방법(지연쓰기) 이 있다.

즉시쓰기 같은경우 매번 메모리에 접근해야하기때문에 속도가 느리지만 여러가지 문제가 발생하더라도 데이터가 안정적으로 저장이 된다. 

반면 지연쓰기 같은경우 속도를 빠르지만 정전이나 여러 다른 문제로 데이터가 날아갈 수 있다. 

댓글