728x90
반응형
캐시메모리

"캐시"란 속도가 다른 두 장치 사이에서 속도차이를 메워주는 장치입니다.

시스템에서는 많은 기기사이의 데이터 흐름이 항상 일어나고 있습니다.
만약 모든 기기들이 같은 속도와 대역폭으로 데이터를 전송한다면 가장 이상적인 데이터 흐름이라 할 수 있지만, 실제 시스템에서는 각 기기(device)들 간의 속도도 다르며 데이터가 흐르는 통로(bus)의 대역폭도 다릅니다.
이렇게 처리속도가 다른 기기들 사이에서 데이터의 흐름이 속도조절을 해주는 부분이 캐시 입니다.
빠른 처리속도를 가진 기기에게는 미리 데이터를 준비해줌으로서 최대한의 효율을 내도록 하고, 느린 처리속도를 가진 기기에게는 처리할 데이터를 대신 받아줌으로서 다른 기기가 기다리는 일이 적어지도록 하는 것 입니다.
예를 들면, 메모리의 속도가 100이고, 하드디스크의 속도를 1이라고 가정 한다고 했을 때, 
이 때 갑자기 어떤 데이터(용량이 50)를 메모리가 하드디스크에서 읽어 오려고 할 경우 속도가 1인 하드디스크가 50인 용량을 읽기 위해서는 시간이 50 걸립니다. 
그런데 50인 용량을 메모리가 받을때는 0.5라는 시간이 걸립니다. 
결국 메모리는 하드디스크가 정보를 다 읽을때까지 모두 49.5라는 시간을 아무일도 못하고 놀게 됩니다. 

그것을 막기 위해서 캐시라는 장치가 생겼습니다.
만약 메모리의 특정영역을 캐시로 정하고 위의 경우에서 읽어올 데이터 50중에 30을 미리 읽어 왔다면, 30은 미리 메모리에 있으니, 20만 더 읽어 오면 됩니다. 
그래서 하드디스크는 20의 시간이 걸리고, 메모리는 19.5라는 시간만 놀게 됩니다. 결국 하드디스크가 2.5배나 빨라진 셈입니다. 
보통 윈도우95/98에서는 하드디스크 캐시를 사용하면, 하드디스크 속도가 10배 정도 빨라지는 효과를 얻을 수 있습니다. 
그것은 윈도우95/98이 캐시메모리를 훌륭하게 관리해서 90%이상의 데이터를 미리 읽어오기 때문입니다. 

캐시 메모리는 하드디스크와 메모리 사이에만 있는 것이 아니고, CPU와 메모리 사이에도 있고, 하드디스크와 케이블 사이에도 있으며, CD-ROM과 메모리 사이에도 있습니다. 
속도차이가 나는 모든 장치에 있다고 생각하면 됩니다. 

캐시메모리는 많으면 많을 수록 좋지만, 비례해서 좋아지지는 않습니다. 
미리 읽어 올 데이터가 30인데, 캐시 메모리가 10이면 속도가 나질 않겠습니다. 그런데 캐시를 30으로 늘리면 속도가 많이 늘것입니다. 
그런데, 캐시를 60으로 늘리면, 미리 읽어와야 할 데이터가 30이상일 때는 속도는 늘어나겠지만, 30이하일 때는 늘지는 않을 것입니다. 
게다가 메모리는 비싸기 때문에 무조건 캐시로 사용할 수는 없습니다. 





버퍼메모리

버퍼 캐시(buffer cache)란 보조기억장치로서, 특히 디스크의 입출력 효율을 높이기 위해 주기억 장치의 한 영역을 최근에 사용된 디스크 블록의 내용을 기억하는 버퍼영역으로 할당한 것을 말하는데, 버퍼캐시에 있는 디스크 블록은 디스크 액세스 없이 바로 이용할 수 있으므로 효율이 높아집니다. 
이는 주기억장치와 CPU 캐시 기억장치와 관계가 비슷합니다. 

버퍼는 역시 두 장치 속도가 차이가 날때 사용하지만, 보통 속도 향상을 위한 것이 아니라, 빠른쪽에서 데이터가 느린쪽으로 보내질때 데이터의 손실을 막기 위해서 쓰입니다. 

예를 들자면 키보드를 들 수가 있습니다. 터미널 상태의 통신을 할때를 생각해 봅시다. 
만약 게시판에서 키보드로 '엔터'키를 눌러 다음 페이지로 넘기면, 바로 다음 페이지로 넘어가지 못하고 1,2초 늦게 화면이 넘어갑니다. 
만약 계속 엔터키를 누르고 있다가 손을 떼면, 손을 놨는데도 엔터키가 눌러지면서 한참을 페이지가 넘어갑니다. 

이것은 모뎀과 서비스 업체의 화면 처리 속도가 키보드 보다 느리기 때문에 키보드 버퍼가 작동한 것입니다. 

만약 화면이 처리된 후에만 키보드 데이터를 받아 들이면, 키보드 타이핑 도중에 글자를 잃어버릴 위험이 있습니다. 
"1234567890"을 빨리 치면 처리를 못해서 "12367890"이 쳐질 수도 있다는 것이죠. 
그런것을 막기 위해서 키보드는 사용자가 치는 키를 차례차례 받아 두었다가 처리가 되는 데로 계속 내보내는 것입니다. 

이 기능을 버퍼라고 합니다. C같은 언어로 프로그래밍 할때는 이런 기능을 이용하기도 합니다. 

사실 캐시도 넓은 의미로는 버퍼에 포함되는 개념이기 때문에 같은 뜻으로 쓰이기도 합니다. 


버퍼란 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을 때 정보를 임시로 기억해 두고 사용할 수 있는 공간 입니다.

컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을 때 각 장치들 사이에 존재하는 전송되는 속도 차, 또는 시간 차로 인해 발생되는 문제점을 해결할 수 있는 고속의 임시 기억장치를 말합니다. 
즉, 데이터의 처리속도나 처리단위, 데이터 사용시간이 서로 다른 두 장치나 프로그램 사이에서 데이터를 주고받기 위한 목적으로 사용되는 임시 기억장소 입니다. 

버퍼가 사용되면 중앙처리장치는 입출력 자료를 기다릴 필요없이 입력이나 출력명령을 내릴 수 있습니다. 
버퍼를 이용하면 처리속도가 빨라집니다. 
그러므로 특히 느린 시스템 구성요소의 동작을 기다리는 동안 유용하게 사용됩니다. 
또한 버퍼는 논리회로에서 신호의 전달을 잠시 지연시키는 게이트 역할을 하기도 합니다.


버퍼와 캐쉬의 차이

1. 버퍼 : Buffer(속도완충기)
일시적인 데이터 저장소로 이용하는 기억 장치로 (서버과 클라이언트의 속도차 때문에 서버가 버퍼에 내용을 저정해 놓으면 클라이언트는 버퍼의 내용을 가져간다.)

2. 캐쉬 : Cache(속도 완충기)

속도가 빠른 중앙처리장치와 상대적으로 느린 ram사이의 원활한 데이터 통신을 위해 주기억장치의 정보를 일시적으로 저장하는 고속기억회로 버퍼와 같은 개념이지만 인공지능이라는 점에서 속도가 훨씬 빠르다 


반응형

'System' 카테고리의 다른 글

Windows 실행파일이 안되는 경우  (0) 2018.08.14
Windows Install시 Drive 찾지 못하는 현상  (0) 2018.08.14
Hardware Raid and Software Raid  (0) 2018.08.14
HP-UX 점검 명령어  (0) 2018.08.14
HP-UX IP 설정 변경  (0) 2018.08.14

+ Recent posts