CPU 캐시, 버퍼란?
주 기억장치 또는 중앙제어처리 장치, CPU(central processing unit) 은 시스템에서의 가장 핵심적인 역할을 수행하는 장치로, 시스템 전반을 통제하고 사용자가 명령한 명령어를 해석해 연산하는 역할을 수행한다.
컴퓨터 구조의 문제점은 CPU, 메모리와 주변장치의 작업 속도가 다르다는 것이다.
일반적으로 메모리나, 주변장치는 CPU 의 속도를 따라가지 못한다.
이러한 장치 간 속도 차이를 개선하고, 시스템의 작업 속도를 올리기 위해 개발된 기술 중에 버퍼, 캐시가 있다.
캐시 메모리
💡 CPU 가 메모리에 접근하는 횟수를 줄여 성능을 향상시키는 방법

속도 차이
CPU (빠름) > 메모리 (느림)
- CPU는 상대적으로 빠르고, 메모리는 상대적으로 속도가 느리다.
- CPU 는 빠르게 일처리를 하고 있는데, 메모리가 느려서 이 일에 필요한 데이터를 넘기는 속도를 맞추기 못해 발생하는 문제(병목 현상)을 해결하기 위해 사용하는 것이 캐시 메모리
- CPU 와 메모리 중간에서 데이터를 미리 들고 서있다고 생각하면 된다.
캐시메모리란?
CPU 가 메모리에 접근하는 횟수를 줄여, 성능을 향상하는 방법이다.
- 즉, 자주 사용하는 데이터를 CPU 와 더 가까운 캐시메모리에 ‘잠시' 저장함으로써, 필요할때마다 꺼내서 바로 사용할 수 있도록 하는 방법이다.
- CPU 에 cache memory 는 2~3개 사용된다. (L1, L2, L3 캐시 메모리)
- CPU 내 존재할 수도, CPU 외에 존재할 수 도 있다.
Cache Hit, Miss
- CPU 가 기억장치의 데이터를 읽을 때, cache 에 존재하는지 확인 → CPU 는 캐시에서 해당 데이터 읽음 → 주기억장치에서 데이터를 읽어서 사용하고 cache 에 적재시킴
- Cache Hit (cache 에 필요한 데이터가 있는 경우)
- Hit rate (적중률)
- 요청한 데이터를 cache 메모리에서 찾을 확률
- cache 메모리의 성능은 적중률에 의해 결정 됨
- Cache Miss (cache 에 찾는 데이터가 없는 경우)
버퍼메모리
💡 주기억 장치와 주변장치 사이에서 데이터를 주고받을 때 정보를 임시로 기억해두고 사용할 수 있는 공간 (임시 저장 공간)

속도 차이
- 입출력(빠름) > CPU (느림)?
- 만일 타자속도 2000인 사용자가 빠른 속도로 입력할 경우
- 컴퓨터의 성능이나 상황에 따라 이 속도에 맞춰 데이터를 입력하지 못하는 상황에 처하면, 타이핑되는 데이터를 ‘유실'할 가능성이 생긴다.
- 이 문제를 해결하기 위해 버퍼메모리는 타이핑된 정보를 일시적으로 보관한다.
- 입출력 (느림) < CPU (빠름)
- 예를 들어 창고에 있는 사과 5개를 도마에 옮긴다고 하면, 이때 한번에 하나씩 옮기면 다섯 번을 왕복해야 하지만 사과를 바구니에 담아서 옮기면 한 번에 옮길 수 있어서 효율적이다.
- 느린 입출력 장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 전송되는 데이터 양이 매우 적다.
- 일정량의 데이터를 모아서 한번에 전송하면 적은 노력으로 많은 데이터를 옮길 수 있다.
버퍼메모리란?
- 일시적인 데이터 저장소로 이용하는 곳
- 캐시메모리랑 비슷한 역할을 하지만 데이터가 유실이 나지 않게 만들어 준다는 점에서 차이가 있다.
- 즉, 데이터의 처리 속도나 처리 단위, 데이터 사용 시간이 서로 다른 두 장치나 프로그램 사이에서 데이터를 주고받기 위한 목적으로 사용되는 임시 기억장소이다.
동영상 스트리밍
- 버퍼가 소프트웨어적으로 사용되는 경우
- 네트워크에서 데이터가 들어오는 시간, 플레이어에서 재생되는 시간의 속도 차이가 있음.
- 이런 문제를 방지하기 위해 동영상 데이터를 일부분 가져와 버퍼에 넣은 후 실행하게 된다.
- 버퍼링 : 버퍼에 데이터를 담는 과정

레지스터
- CPU 가 요청을 처리하는 데이터의 임시저장공간.
- 공간은 작고, 가격은 비싸지만 CPU 에 직접 연결되어 있어 연산속도가 매우 빠르다.
- CPU 는 자체적으로 데이터를 저장할 수 없기 때문, 레지스터를 이용해 연산처리 및 데이터 주소 지정을 돕는다.
참고