짧은 패턴을 위한 고속 패킹 문자열 매칭

짧은 패턴을 위한 고속 패킹 문자열 매칭

초록

이 논문은 Intel SSE 기반의 워드‑사이즈 패킹 명령을 활용해 짧은 패턴에 특화된 문자열 매칭 알고리즘을 설계한다. 최악의 경우 시간 복잡도는 O(m·n) 이지만, 실험 결과 평균 성능에서 기존 최첨단 알고리즘들을 크게 앞선다.

상세 분석

본 연구는 문자열 매칭 문제를 워드 RAM 모델의 관점에서 재조명한다. 전통적인 알고리즘은 문자 단위로 비교를 수행하지만, 워드 RAM에서는 길이 w 비트의 워드에 여러 문자를 동시에 담아 연산함으로써 병렬성을 확보한다. 특히 Intel의 Streaming SIMD Extensions(SSE)는 128‑bit 레지스터에 최대 16개의 8‑bit 문자 혹은 8개의 16‑bit 문자를 패킹할 수 있어, 한 번의 논리·산술 연산으로 다수의 문자 비교가 가능하다. 논문은 이러한 SIMD 명령을 ‘packed compare’와 ‘packed shift’ 형태로 추상화하고, 짧은 패턴(길이 m ≤ w/8) 에 대해 두 단계의 매칭 루프를 설계한다. 첫 단계에서는 패턴 전체를 하나의 워드에 패킹하고, 텍스트 슬라이딩 윈도우를 동일한 워드 크기로 이동시키며 XOR‑MASK 연산으로 불일치를 탐지한다. 불일치가 발견되면 비트‑스캔을 통해 정확한 매칭 위치를 복원한다. 두 번째 단계는 경계 조건을 처리하기 위해 남은 문자들을 바이트 단위로 검증한다. 알고리즘은 최악의 경우 O(m·n) 이지만, 실제 데이터에서는 워드‑단위 비교가 대부분을 차지해 평균 시간 복잡도는 거의 O(n) 에 근접한다. 구현 측면에서는 컴파일러 인트린식(intrinsic) 함수를 이용해 어셈블리 수준의 최적화를 적용했으며, 메모리 정렬과 프리패칭을 통해 캐시 효율을 극대화했다. 실험은 다양한 텍스트(영문 소설, DNA 서열, 로그 파일)와 패턴 길이(232) 에 대해 기존 알고리즘(Boyer‑Moore, KMP, Shift‑Or, SIMD‑BNDM 등)과 비교하였다. 결과는 특히 m ≤ 8 인 경우 평균 속도가 25배 향상됨을 보여준다. 또한, 패턴이 짧을수록 워드‑패킹 효율이 높아져 SIMD 이득이 극대화되는 현상을 확인했다. 논문은 이러한 현상을 수학적으로 모델링하고, 워드‑사이즈 w 와 패턴 길이 m 의 비율이 성능에 미치는 영향을 분석한다. 최종적으로, 짧은 패턴 매칭에 있어 전통적인 최악‑시간 복잡도 분석보다 실제 평균 성능을 중시하는 새로운 설계 패러다임을 제시한다.