메모리 영역 중 한 곳으로 데이터를 임시 저장하는 공간을 말합니다. 버퍼 수집이란 버퍼링(Buffering) 또는 큐(Queue)라고도 부르는데 버퍼에다가 데이터를 채우는 작업을 말합니다. 대표적으로 버퍼 구조에 따라 큐(Queue), 스택(Stack)이라 부르고, 해당 구조에 따른 데이터 처리 방식을 FIFO, LIFO라고 부릅니다. 본 포스팅에서는 큐, 스택에 대한 자세한 설명은 생략하고 추후 업데이트를 한다면 링크를 걸도록 하겠습니다.
정리해보자면 버퍼 수집은 결국엔 DAQ와 PC쪽 메모리 영역 어딘가에서 데이터를 주고 받기 전 데이터를 버퍼에 저장하는 작업을 말합니다. 이후 샘플링 작업으로 서로 데이터를 주고 받는 것인데 리마인드가 필요하신 분들은 이전 포스팅에서 '샘플링 용어와 기법' 글과 함께 다시 참고해보시면 좋을 듯 하네요.
아래의 이미지는 버퍼 수집 및 샘플링 과정에서 샘플 수집 기준으로 데이터가 전달되는 과정입니다. DAQ Device에 내장된 FIFO 메모리에서 PC RAM으로 데이터를 전달 후 이를 Software를 통해 Digital 값으로 사용자가 볼 수 있게 되는 것이죠. 크게 유한 샘플링, 연속 샘플링 두가지 모드로 나뉘며 각각에 대해서 한번 살펴보도록 하겠습니다.
유한 샘플링(Finite Sampling)
유한 샘플링, 유한 버퍼 수집, N 샘플 등으로 부르며 말 그대로 지정한 샘플 N개만 수집 또는 생성하는 작업을 말합니다. 수집은 DAQ 버퍼에서 PC 메모리로 샘플을 가져오는 작업을 말하며 생성은 반대로 PC에서 DAQ 버퍼로 데이터를 전달해줍니다. 유한 샘플링에서는 데이터를 한번에 전달하기 때문에 충분한 버퍼 사이즈가 지원되야하며 샘플 속도 기준으로 샘플링하려는 데이터의 양에 따라 소요 시간이 결정됩니다.
(예 : 유한 샘플링, 샘플 속도 1kS/s, 10k 샘플을 수집하겠다라고 한다면 10k를 읽는데 10초가 걸리게 됩니다.)
연속 샘플링(Continuous Sampling)
연속 샘플링의 경우 유한 샘플링에서 수행되는 과정이 디바이스 정지 명령 전까지 계속 연속적으로 샘플링된다라고 보시면 되겠습니다. PC쪽 버퍼 사이즈도 한계가 있기에 연속 샘플링시에는 순환 버퍼(Circular Buffer) 형태로 사용되어진다고 볼 수 있는데요. 다음과 같은 형태입니다.