컴퓨터 성능 향상 기술(1) - 버퍼와 캐시
왜 컴퓨터 성능 향상 기술이 필요한가?
- 현대 컴퓨터 구조의 가장 큰 문제는 CPU와 메모리, 주변장치의 작업 속도가 다르다는 것임
-> 메인보드 내 메모리와 주변장치는 시스템 버스로 연결되어 있고,
CPU 내 레지스터, 산술논리 연산장치, 제어장치는 CPU 내부 버스로 연결되어 있음
-> 이 때, CPU의 속도는 CPU 내부 버스의 속도와 같고, 메모리의 속도는 시스템 버스의 속도와 같음
-> CPU 내부 버스의 속도는 시스템 버스의 속도보다 빠르기 때문에,
메모리를 비롯한 주변장치의 속도가 CPU의 속도를 따라가지 못함
-> CPU에 비하면 메모리가 느린 것은 물론이고,
프로그램과 데이터를 보관하는 하드디스크의 속도는 더욱 느림
-> 따라서 장치 간 속도 차이를 개선하고, 시스템의 작업 속도를 올리기 위한 기술이 필요함
1) 버퍼
- 버퍼(buffer)는 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 함
-> 입출력 장치에서 데이터를 가져오는 경우에,
느린 입출력 장치에서 데이터를 읽을 때마다 하나씩 전송하면
작업량에 비해 실제로 전송되는 데이터의 양이 매우 적지만,
일정량의 데이터를 모아 한꺼번에 전송하면 적은 노력으로도 많은 양의 데이터를 옮길 수 있음
2) 캐시
2-1) 캐시의 개념
- 캐시(cache)는 메모리와 CPU 간의 속도 차이를 완화하기 위해
메모리의 데이터를 미리 가져와 저장해 두는 임시 장소임
-> 캐시는 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음
-> 이를 미리 가져오기(prefetch)라고 함
- 캐시는 메모리의 내용 중 일부를 가져오고, CPU는 메모리에 접근해야 할 때
캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄
- 캐시에서 원하는 데이터를 찾았다면 캐시 히트(cache hit)라고 하며,
그 데이터를 바로 사용함
-> 그러나 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾는데,
이를 캐시 미스(cache miss)라고 함
-> 캐시 히트가 되는 비율을 캐시 적중률(cache hit ratio)이라고 하며,
일반적인 컴퓨터의 캐시 적중률은 약 90%임
- 컴퓨터의 성능을 향상하려면 캐시 적중률이 높아야 함
-> 캐시 적중률을 높이는 방법 중 하나는 캐시의 크기를 늘리는 것임
-> 캐시의 크기가 커지면 더 많은 데이터를 미리 가져올 수 있어 캐시 적중률이 올라감
-> 단, 캐시는 가격이 비싸기 때문에 크기를 늘리는데 한계가 있어
몇 메가 바이트 정도만 사용함
- 캐시 적중률을 높이는 또 다른 방법은 앞으로 많이 사용될 데이터를 가져오는 것임
-> 즉, 현재 위치에 가까운 데이터가 멀리 있는 데이터보다 사용될 확률이 높다는 지역성(locality) 이론이 있음
-> 예컨대, 현재 프로그램의 10번 행이 실행되고 있다면
다음에 11번 행이 실행될 확률이 101번 행이 실행될 확률보다 더 높음
-> 따라서 현재 10번 행을 실행하는 경우 지역성 이론에 따라 11~20번 행을 미리 가져오면 됨
2-2) 즉시 쓰기와 지연 쓰기
- 캐시에 있는 데이터가 변경되는 경우 이를 반영해야 하는 문제도 있음
-> 캐시는 메모리에 있는 데이터를 임시로 가져온 것이기 때문에
캐시에 있는 데이터가 변경되면 메모리에 있는 원래 데이터를 변경해야 함
(1) 즉시 쓰기
- 즉시 쓰기(Write Through)는 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식임
- 즉시 쓰기의 장점은 데이터를 유실하지 않는다는 것이고,
즉시 쓰기의 단점은 빈번한 데이터 전송으로 인해 성능이 느려질 수 있다는 점임
(2) 지연 쓰기
- 지연 쓰기(Write Back)는 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라
변경된 내용을 모아서 주기적으로 반영하는 방식임. 카피백(copy back)이라고도 함.
- 지연 쓰기의 장점은 데이터 전송 횟수가 줄어들어 성능이 향상될 수 있다는 것이고,
지연 쓰기의 단점은 메모리와 캐시 데이터 사이의 불일치가 발생할 수 있다는 점임
2-3) L1 캐시와 L2 캐시
(1) L1 캐시
- CPU 레지스터에 직접 연결된 명령어 캐시나 데이터 캐시를 의미함
(2) L2 캐시
- 메모리와 연결된 캐시를 의미함
+ 웹 브라우저 캐시
- 웹 브라우저 캐시는 소프트웨어적으로 사용되는 캐시임
웹 브라우저 캐시에는 '앞으로 다시 방문할 것을 예상하여 지우지 않은 데이터'를 저장함
-> 즉, 방문했던 사이트의 데이터를 보관하여 재방문 시 속도를 높이는 역할을 함
-> 그러나, 너무 많은 데이터가 캐시에 보관되어 있으면 웹 브라우저의 속도를 떨어뜨릴 수 있음
참고
- 쉽게 배우는 운영체제