Gen2 인벤토리 원리 — Q 알고리즘으로 태그를 세는 법 (3/5)
※ 이 글은 'Gen2 프로토콜' 5부작 시리즈의 3편입니다. (1편: Gen2란 / 2편: 메모리 구조)
리더 앞에 태그가 수십 개 놓여 있다고 해봅시다. 이 태그들을 하나씩 구분해 읽어내는 과정을 인벤토리(inventory)라고 합니다. 문제는 여러 태그가 동시에 응답하면 신호가 겹쳐 충돌(collision)이 나고, 리더가 아무것도 제대로 못 읽는다는 점입니다. 무선 통신에서 흔히 마주치는 "여러 명이 동시에 말하면 아무도 못 알아듣는" 문제와 근본적으로 같습니다.
Q값과 슬롯 방식으로 충돌을 해결하는 원리
Gen2는 이 문제를 슬롯(slot) 방식으로 해결합니다. 리더가 Query 명령으로 Q값을 정하면 슬롯 개수가 2의 Q제곱으로 결정됩니다(Q=2면 슬롯 4개, Q=4면 슬롯 16개). 각 태그는 0부터 슬롯 개수-1 사이에서 난수를 하나 뽑아 자기 슬롯을 정합니다. 그리고 자기 차례(슬롯 카운터가 0)가 됐을 때만 응답합니다. 이 방식은 통신 분야에서 "슬롯 알로하(Slotted ALOHA)"라고 불리는 다중 접속 기법의 한 종류로, 여러 장치가 하나의 채널을 나눠 쓸 때 널리 쓰이는 접근입니다.
Q값 조정: 너무 작아도, 너무 커도 문제
한 슬롯에 태그가 하나면 정상적으로 읽히고, 아무도 없으면 빈 슬롯(시간 낭비), 둘 이상이면 충돌이 납니다. 그래서 Q를 태그 수에 맞게 조정하는 것이 핵심입니다. Q가 너무 작으면 슬롯이 부족해 충돌이 잦고, 너무 크면 빈 슬롯이 많아 시간이 낭비됩니다. 리더는 상황을 보며 QueryAdjust로 Q를 실시간 조정합니다. 구체적으로는 충돌이 관찰되면 Q를 올리고(슬롯을 늘리고), 빈 슬롯이 많이 관찰되면 Q를 내리는(슬롯을 줄이는) 식으로 태그 수 추정치를 계속 갱신합니다.
인벤토리 명령 흐름
| 단계 | 동작 | 설명 |
| 1 | Query(Q) | 슬롯 개수(2^Q)를 정해 인벤토리 시작 |
| 2 | 슬롯 난수 선택 | 각 태그가 자기 슬롯 번호를 무작위로 정함 |
| 3 | RN16 응답 | 차례가 된 태그가 16비트 난수를 전송 |
| 4 | ACK | 리더가 그 RN16으로 응답해 정상 수신 확인 |
| 5 | EPC 전송 | 태그가 자신의 EPC 코드를 전송 |
| 6 | QueryRep / QueryAdjust | 다음 슬롯으로 진행, 필요 시 Q 조정 |
왜 RN16을 먼저 주고받을까
RN16(16비트 난수)을 한 번 주고받는 이유는, 리더가 "지금 응답한 그 태그"를 정확히 지목해 다음 통신을 이어가기 위해서입니다. 만약 태그가 바로 EPC를 보내버리면, 충돌이 났는지 아닌지 판단하기 전에 이미 긴 데이터가 낭비되어 버립니다. 반면 짧은 RN16으로 먼저 확인하면, 충돌이 난 슬롯은 빠르게 포기하고 다음 슬롯으로 넘어갈 수 있어 전체 인벤토리 속도가 빨라집니다. 이런 "먼저 짧게 확인하고, 성공한 경우에만 긴 데이터를 보낸다"는 설계는 무선 프로토콜에서 자주 쓰이는 최적화 패턴입니다.
실무 적용 팁
실무에서는 이 Q 조정 과정이 자동으로 이뤄지기 때문에 개발자가 직접 슬롯을 계산할 일은 많지 않습니다. 다만 리더기 SDK에는 "초기 Q값", "Q 조정 민감도" 같은 설정이 노출되는 경우가 있는데, 태그 수가 매우 많거나(수백 개 이상) 반대로 태그가 한두 개뿐인 환경에서는 이 값을 조정해 인식 속도를 개선할 수 있습니다. 다음 편에서는 여러 리더가 같은 공간에서 동작할 때 태그가 헷갈리지 않도록 해주는 세션과 플래그 개념을 다룹니다.
핵심 요약
- 인벤토리는 여러 태그를 충돌 없이 하나씩 골라 읽는 과정으로, 슬롯 알로하 방식을 기반으로 합니다.
- Q값이 슬롯 개수(2^Q)를 정하며, 태그 수에 맞게 조정해야 인식 속도가 빨라집니다.
- Q가 너무 작으면 충돌, 너무 크면 빈 슬롯이 늘어 둘 다 효율을 떨어뜨립니다.
- RN16으로 먼저 짧게 확인한 뒤 EPC를 보내는 2단계 구조 덕분에 충돌 상황에서도 시간 낭비를 줄일 수 있습니다.

댓글
댓글 쓰기
댓글은 검토 후 공개됩니다. 주제와 관련 없는 광고, 비방, 개인정보, 무단 링크는 게시되지 않을 수 있습니다.