Ryotta's Basic

LLM
๐Ÿค– LLM ๊ฒ€์ฆ์™„๋ฃŒ

KV Cache Offloading Analysis

KV ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ ์‹œ์Šคํ…œ ์‹ฌ์ธต ๋ถ„์„

Memory Hierarchy ยท Prefix Reuse ยท PD Disaggregation ยท LMCache ยท Mooncake ยท CacheGen ยท CXL-PNM

KV ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ์€ GPU ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค ๋‹ด๊ธฐ์ง€ ์•Š๋Š” KV ์บ์‹œ๋ฅผ CPU DRAMยทCXLยทNVMe ๊ฐ™์€ ํ•˜์œ„ ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋กœ ๋‚ด๋ ค ๋ณด๊ด€ยท์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธด ๋ฌธ๋งฅยทํฐ ๋ฐฐ์น˜ยท๋ฉ€ํ‹ฐํ„ด ์›Œํฌ๋กœ๋“œ์—์„œ KV ์บ์‹œ๊ฐ€ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋„˜์–ด์„ค ๋งŒํผ ์ปค์ง€๋ฉด์„œ, '์—ฐ์‚ฐ์„ ์ €์žฅ์œผ๋กœ ๋ฐ”๊พธ๋Š”(trade computation for storage)' ์ด ์ ‘๊ทผ์ด LLM ์„œ๋น™์˜ ํ•ต์‹ฌ ์ธํ”„๋ผ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” ์™œ ์˜คํ”„๋กœ๋”ฉํ•˜๋‚˜(๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต) โ†’ ๋‘ ๊ฐ€์ง€ ์“ฐ์ž„(ํ”„๋ฆฌํ”ฝ์Šค ์žฌ์‚ฌ์šฉยทPD ๋ถ„๋ฆฌ) โ†’ ์ฃผ์š” ์‹œ์Šคํ…œ(LMCacheยทMooncakeยทCacheGen) โ†’ ํ•ต์‹ฌ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„(์žฌ๊ณ„์‚ฐ vs ์ „์†ก) โ†’ ํ•˜๋“œ์›จ์–ด ํ”„๋ก ํ‹ฐ์–ด(CXLยทPNM)์™€ ์‹ ๋ขฐ์„ฑ ๊ด€์ ์˜ ์ˆœ์„œ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” KV ์˜คํ”„๋กœ๋”ฉ์„ ๋‹จ์ˆœํ•œ ์ €์žฅ ๊ณต๊ฐ„ ํ™•์žฅ์ด ์•„๋‹ˆ๋ผ, ์—”์ง„ ๊ฐ„ ์บ์‹œ ๊ณต์œ ยท๋ถ„๋ฆฌํ˜• ์„œ๋น™ยท์ „์†ก ์••์ถ•ยท๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ์„ค๊ณ„๊ฐ€ ๋งŒ๋‚˜๋Š” ์ง€์ ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ณ„ ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„ ์ฐจ์ด๋ณด๋‹ค ์–ด๋–ค ์›Œํฌ๋กœ๋“œ์—์„œ ์–ด๋–ค ํ‹ฐ์–ด๊ฐ€ ๋ณ‘๋ชฉ์ด ๋˜๋Š”์ง€์— ์ดˆ์ ์„ ๋‘ก๋‹ˆ๋‹ค.

1. ์™œ KV ์บ์‹œ๋ฅผ ์˜คํ”„๋กœ๋”ฉํ•˜๋‚˜ โ€” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต

KV ์บ์‹œ๋Š” ๊ณผ๊ฑฐ ํ† ํฐ์˜ Key/Value๋ฅผ ์ €์žฅํ•ด ์žฌ๊ณ„์‚ฐ์„ ํ”ผํ•จ์œผ๋กœ์จ ๋””์ฝ”๋”ฉ์„ ๋น ๋ฅด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ํฌ๊ธฐ๊ฐ€ ์‹œํ€€์Šค ๊ธธ์ดยท๋ฐฐ์น˜ยท๋ ˆ์ด์–ด์— ๋น„๋ก€ํ•ด ์ปค์ง€๋ฉด์„œ, ๊ธด ๋ฌธ๋งฅ์ด๋‚˜ ํฐ ๋ฐฐ์น˜์—์„œ๋Š” ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋„˜์–ด GPU HBM ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

llm_0040_kv_cache_offloading_analysis

๊ทธ๋ฆผ 1. KV ์บ์‹œ๊ฐ€ GPU๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋ฌธ์ œ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต(HBMโ†’DRAMโ†’CXLโ†’NVMe)

์—ฐ์‚ฐ์„ ์ €์žฅ์œผ๋กœ ๋ฐ”๊พผ๋‹ค

  • ๋ฌธ์ œ ๊ทœ๋ชจ โ€” ์˜ˆ๋ฅผ ๋“ค์–ด 70B ๋ชจ๋ธยท128K ๋ฌธ๋งฅยท๋ฐฐ์น˜ 32์—์„œ๋Š” KV ์บ์‹œ๋งŒ 150GB๋ฅผ ๋„˜๊ฒจ H100 VRAM์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. KV ์บ์‹œ๋Š” ์ข…์ข… ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ณด๋‹ค ์ปค์ง‘๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต โ€” GPU HBM(๋น ๋ฅด์ง€๋งŒ ์ž‘์Œ)์—์„œ CPU DRAM, CXL ๋ฉ”๋ชจ๋ฆฌ, NVMe SSD(๋А๋ฆฌ์ง€๋งŒ ํผ)๋กœ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก ์šฉ๋Ÿ‰์€ ์ปค์ง€๊ณ  ๋Œ€์—ญํญ์€ ์ž‘์•„์ง‘๋‹ˆ๋‹ค.

  • ๋‘ ๊ฐ€์ง€ ์“ฐ์ž„ โ€” (1) ์šฉ๋Ÿ‰ ํ™•์žฅ: ๋” ๊ธด ๋ฌธ๋งฅยทํฐ ๋ฐฐ์น˜๋ฅผ ์ˆ˜์šฉ. (2) ์žฌ์‚ฌ์šฉ: ๊ฐ™์€ ํ”„๋ฆฌํ”ฝ์Šค์˜ KV๋ฅผ ์บ์‹ฑํ•ด ์žฌ๊ณ„์‚ฐ์„ ํ”ผํ•จ.

  • ํ•ต์‹ฌ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ โ€” KV๋ฅผ ๋‹ค์‹œ '๊ณ„์‚ฐ'ํ• ์ง€, ์ €์žฅํ•ด๋‘” ๊ฑธ '์ „์†ก'ํ• ์ง€์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์ „์†ก์ด ์žฌ๊ณ„์‚ฐ๋ณด๋‹ค ์‹ธ๋ฉด ์˜คํ”„๋กœ๋”ฉ์ด ์ด๋“์ด์ง€๋งŒ, ๋А๋ฆฐ ํ‹ฐ์–ด์ผ์ˆ˜๋ก ์ „์†ก ๋Œ€์—ญํญ์ด ๋ณ‘๋ชฉ์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ„ด QAยทRAGยท๋ฌธ์„œ ๋ถ„์„์ฒ˜๋Ÿผ ๊ธด ๊ณตํ†ต ๋ฌธ๋งฅ์„ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•˜๋Š” ์›Œํฌ๋กœ๋“œ์—์„œ ํŠนํžˆ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

2. ์˜คํ”„๋กœ๋”ฉ์˜ ๋‘ ๊ฐ€์ง€ ์“ฐ์ž„

KV ์˜คํ”„๋กœ๋”ฉ์€ ํฌ๊ฒŒ ๋‘ ๋งฅ๋ฝ์—์„œ ์“ฐ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์—ฌ๋Ÿฌ ์งˆ์˜๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋ฌธ๋งฅ์˜ KV๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” prefill๊ณผ decode๋ฅผ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ KV๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

KV Cache Offloading Analysis

๊ทธ๋ฆผ 2. ํ”„๋ฆฌํ”ฝ์Šค ์žฌ์‚ฌ์šฉ(cross-query)๊ณผ Prefill-Decode ๋ถ„๋ฆฌ

(1) ํ”„๋ฆฌํ”ฝ์Šค ์žฌ์‚ฌ์šฉ (cache offloading)

  • ์—ฌ๋Ÿฌ ์งˆ์˜๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋ฌธ๋งฅ(์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ, RAG ๋ฌธ์„œ, ๋ฉ€ํ‹ฐํ„ด ๋Œ€ํ™” ์ด๋ ฅ)์˜ KV๋ฅผ ์ €์žฅํ•ด ๋‘๊ณ  ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋˜๋Š” ๊ธด ๋ฌธ๋งฅ์— ํŠนํžˆ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • GPU์˜ ํ”„๋ฆฌํ”ฝ์Šค ์บ์‹œ๋Š” ์šฉ๋Ÿ‰์ด ์ž‘์•„ ๊ธˆ๋ฐฉ ๋ฐ€๋ ค๋‚˜๋ฏ€๋กœ, CPUยทCXLยทNVMe๋กœ ๋‚ด๋ ค์•ผ ๋” ๋งŽ์ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํšจ๊ณผ โ€” ๊ณตํ†ต ๋ฌธ๋งฅ์˜ ํ”„๋ฆฌํ•„์„ ๊ฑด๋„ˆ๋›ฐ์–ด TTFT(์ฒซ ํ† ํฐ ์ง€์—ฐ)๋ฅผ ์ค„์ด๊ณ  GPU ์—ฐ์‚ฐ์„ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ LMCache ์‚ฌ๋ก€์—์„œ ๋””์Šคํฌ ์˜คํ”„๋กœ๋”ฉ ์‹œ cold TTFT 6.3์ดˆ๊ฐ€ warm 0.15์ดˆ๋กœ ๋–จ์–ด์ง„ ๋ณด๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(2) Prefill-Decode ๋ถ„๋ฆฌ (PD Disaggregation)

  • ๊ณ„์‚ฐ์ง‘์•ฝ์  prefill๊ณผ ๋ฉ”๋ชจ๋ฆฌ์ง‘์•ฝ์  decode๋ฅผ ๋‹ค๋ฅธ ๋…ธ๋“œ/ํ•˜๋“œ์›จ์–ด๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , prefill์ด ์ƒ์„ฑํ•œ KV๋ฅผ decode ๋…ธ๋“œ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

  • prefill์€ ์—ฐ์‚ฐ์ด, decode๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์ด ๋ณ‘๋ชฉ์ด๋ฏ€๋กœ, ๋ถ„๋ฆฌํ•˜๋ฉด ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๊ฐ„์„ญ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์Šค์ผ€์ผยท์ตœ์ ํ™”๋˜์–ด ์ž์› ํ™œ์šฉ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๋‘ ์“ฐ์ž„ ๋ชจ๋‘ 'KV๋ฅผ GPU ๋ฐ–์— ๋‘๊ณ  ๋…ธ๋“œ ๊ฐ„ ๋น ๋ฅด๊ฒŒ ์˜ฎ๊ธด๋‹ค'๋Š” ์ ์€ ๋™์ผํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ๊ณ ์† ์ „์†ก ์—”์ง„๊ณผ ๋ถ„๋ฆฌํ˜• KV ์บ์‹œ ํ’€์ด ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

3. ์ฃผ์š” KV ์˜คํ”„๋กœ๋”ฉ ์‹œ์Šคํ…œ

KV Cache Offloading Analysis

๊ทธ๋ฆผ 3. LMCache, Mooncake, CacheGen์˜ ํŠน์ง•๊ณผ ์ƒํ˜ธ ๊ฒฐํ•ฉ

LMCache โ€” KV ์บ์‹ฑ ๋ ˆ์ด์–ด (arXiv 2510.09665)

vLLMยทSGLang ๊ฐ™์€ ์—”์ง„์—์„œ KV ์บ์‹œ๋ฅผ ์ถ”์ถœํ•ด GPU ๋ฐ–(CPUยท๋””์Šคํฌยท์›๊ฒฉ)์— ์ €์žฅํ•˜๊ณ  ์—”์ง„/์งˆ์˜ ๊ฐ„์— ๊ณต์œ ํ•˜๋Š”, ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์˜คํ”ˆ์†Œ์Šค KV ์บ์‹ฑ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ(ํ”„๋ฆฌํ”ฝ์Šค ์žฌ์‚ฌ์šฉ)๊ณผ PD ๋ถ„๋ฆฌ(์—”์ง„/GPU ๊ฐ„ KV ์ „์†ก)๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜ ์ „์†กยท๊ณ„์‚ฐ/IO ํŒŒ์ดํ”„๋ผ์ด๋‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ด๋™์„ ์ตœ์ ํ™”ํ•˜๊ณ , ๋ชจ๋“ˆ์‹ ์ปค๋„ฅํ„ฐ๋กœ ์—”์ง„์˜ ๋น ๋ฅธ ์ง„ํ™”์™€ ๋ถ„๋ฆฌ๋˜๋ฉฐ, pinningยทlookupยทcleanupยท์ด๋™ยท์••์ถ• ๊ฐ™์€ ์ œ์–ด API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. vLLM๊ณผ ๊ฒฐํ•ฉ ์‹œ ๋ฉ€ํ‹ฐ๋ผ์šด๋“œ QAยท๋ฌธ์„œ ๋ถ„์„ ๋“ฑ์—์„œ ์ตœ๋Œ€ 15๋ฐฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ์ด ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

Mooncake โ€” KVCache ์ค‘์‹ฌ ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜ (arXiv 2407.00079, FAST 2025 Best Paper)

Moonshot AI์˜ Kimi ์„œ๋น„์Šค๋ฅผ ๋– ๋ฐ›์น˜๋Š” ์„œ๋น™ ํ”Œ๋žซํผ์œผ๋กœ, prefill๊ณผ decode ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  GPU ํด๋Ÿฌ์Šคํ„ฐ์˜ ์œ ํœด CPUยทDRAMยทSSDยทRDMA ์ž์›์„ ๋ฌถ์–ด ๋ถ„๋ฆฌํ˜• KVCache ํ’€(Mooncake Store)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•˜๋ฉด์„œ ์ง€์—ฐ SLO๋ฅผ ์ง€ํ‚ค๋Š” KVCache ์ค‘์‹ฌ ์Šค์ผ€์ค„๋Ÿฌ์ด๋ฉฐ, ๊ณผ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ๋Š” ์˜ˆ์ธก ๊ธฐ๋ฐ˜ ์กฐ๊ธฐ ๊ฑฐ์ ˆ(early rejection) ์ •์ฑ…์œผ๋กœ ๋‚ญ๋น„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. KVCache๋ฅผ ๋ ˆ์ด์–ด ๋‹จ์œ„๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ์ „์†กํ•ด ์ „์†ก๊ณผ ๊ณ„์‚ฐ์„ ์ค‘์ฒฉํ•˜๊ณ , CPU ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” KV๋ฅผ ํŽ˜์ด์ง€ ๋ธ”๋ก์œผ๋กœ ์ €์žฅํ•˜๋˜ ํ”„๋ฆฌํ”ฝ์Šค ํ•ด์‹œ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ธด ๋ฌธ๋งฅ์—์„œ ์ตœ๋Œ€ 525% ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ, ์‹ค์ œ ์›Œํฌ๋กœ๋“œ์—์„œ 75% ๋” ๋งŽ์€ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. '์—ฐ์‚ฐ์„ ์ €์žฅ์œผ๋กœ ๋ฐ”๊พผ๋‹ค'๋Š” ์›๋ฆฌ๋ฅผ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

CacheGen โ€” KV ์บ์‹œ ์••์ถ•ยท์ŠคํŠธ๋ฆฌ๋ฐ (SIGCOMM 2024)

์ €์žฅยท์ „์†กํ•  KV ์บ์‹œ ์ž์ฒด๋ฅผ ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. KV ์บ์‹œ์˜ ๋ถ„ํฌ ํŠน์„ฑ์„ ํ™œ์šฉํ•œ ์ปค์Šคํ…€ ํ…์„œ ์ธ์ฝ”๋”๋กœ KV๋ฅผ ๋” ์ž‘์€ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉฐ(10๊ฐœ ํ† ํฐ ๊ทธ๋ฃน์˜ ์•ต์ปค ํ† ํฐ์„ ๊ธฐ์ค€์œผ๋กœ ๋ธํƒ€๋ฅผ ๊ธฐ๋กํ•˜๋Š” change-based ์ธ์ฝ”๋”ฉ), ๊ฐ€์šฉ ๋Œ€์—ญํญ์— ๋”ฐ๋ผ ๋ถ€๋ถ„๋ณ„ ์••์ถ• ์ˆ˜์ค€์„ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜ ๋Œ€์—ญํญ์ด ๋ถ€์กฑํ•˜๋ฉด ์ฆ‰์„์—์„œ ์žฌ๊ณ„์‚ฐ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. KV ์บ์‹œ ํฌ๊ธฐ๋ฅผ 3.5~4.3๋ฐฐ ์ค„์ด๊ณ  ๋ฌธ๋งฅ fetchยท์ฒ˜๋ฆฌ ์ง€์—ฐ์„ 3.2~3.7๋ฐฐ ์ค„์ด๋ฉด์„œ ํ’ˆ์งˆ ์ €ํ•˜๋Š” ๋ฏธ๋ฏธํ•˜๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ๊ณ„ ํ†ตํ•ฉ โ€” ์ด ์‹œ์Šคํ…œ๋“ค์€ ์„œ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค. LMCache๋Š” CacheGen ์••์ถ•์„ ๋‚ด์žฅํ•˜๊ณ  Mooncake Store๋ฅผ ์›๊ฒฉ ๋ฐฑ์—”๋“œ๋กœ ์—ฐ๋™ํ•˜๋ฉฐ, NVIDIA Dynamo์˜ NIXL ์ „์†ก ๊ณ„์ธต๊ณผ๋„ KV ๋ธ”๋ก ์ด๋™ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค. ๊ณตํ†ต ๋ถ„๋ชจ๋Š” KV๋ฅผ '์–ด๋””์— ๋‘˜์ง€ยท์–ด๋–ป๊ฒŒ ์••์ถ•ยท์ „์†กํ• ์ง€ยท์–ธ์ œ ์žฌ์‚ฌ์šฉ/์žฌ๊ณ„์‚ฐํ• ์ง€' ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์‹œ์Šคํ…œ ๋น„๊ต

์‹œ์Šคํ…œ ์ฃผ๋œ ๋ฐฉ์‹ ์ €์žฅ ์œ„์น˜ ๊ฐ•์  ์ฃผ์˜์ 
LMCache ์—”์ง„ยท์งˆ์˜ ๊ฐ„ KV ๊ณต์œ  GPU ๋ฐ– CPUยทDRAMยท์Šคํ† ๋ฆฌ์ง€ยท๋„คํŠธ์›Œํฌ vLLMยทSGLang ์—ฐ๋™, batched movement, control API ์บ์‹œ hit ratio์™€ ๋ฐฑ์—”๋“œ ๋Œ€์—ญํญ์— ๋ฏผ๊ฐ
Mooncake Prefill-Decode ๋ถ„๋ฆฌ GPU ํด๋Ÿฌ์Šคํ„ฐ์˜ CPUยทDRAMยทSSDยทRDMA KVCache ์ค‘์‹ฌ ์Šค์ผ€์ค„๋ง, early rejection, ์žฅ๋ฌธ๋งฅ ์ตœ์ ํ™” ์˜ค๋ฒ„๋กœ๋“œ ์ƒํ™ฉ๊ณผ ์Šค์ผ€์ค„๋ง ํ’ˆ์งˆ์— ์˜์กด
CacheGen KV ์••์ถ•ยท์ŠคํŠธ๋ฆฌ๋ฐ ๋„คํŠธ์›Œํฌ ์ „์†ก ๊ฒฝ๋กœ ์ ์‘ํ˜• ์••์ถ•, ์žฌ๊ณ„์‚ฐ fallback ์••์ถ•๋ฅ ๊ณผ ํ’ˆ์งˆ์˜ ๊ท ํ˜• ํ•„์š”
CXL-PNM ๋ฉ”๋ชจ๋ฆฌ ๊ทผ์ฒ˜ ์—ฐ์‚ฐ CXL ๋ฉ”๋ชจ๋ฆฌ recall ์ œ๊ฑฐ, ์ดˆ์žฅ๋ฌธ๋งฅ ๋Œ€์‘ ์—ฐ๊ตฌ ๋‹จ๊ณ„, ํ•˜๋“œ์›จ์–ด ์ „์ œ ํผ

4. ํ•ต์‹ฌ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ โ€” ์žฌ๊ณ„์‚ฐ vs ์ „์†ก

์˜คํ”„๋กœ๋”ฉ์˜ ์„ฑํŒจ๋Š” ํ•˜๋‚˜์˜ ์งˆ๋ฌธ์œผ๋กœ ์••์ถ•๋ฉ๋‹ˆ๋‹ค. KV๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๋น„์šฉ๊ณผ, ์ €์žฅ๋œ KV๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ „์†ก ๋น„์šฉ ์ค‘ ๋ฌด์—‡์ด ๋” ์‹ผ๊ฐ€?

KV Cache Offloading Analysis

๊ทธ๋ฆผ 4. ์žฌ๊ณ„์‚ฐ vs ์ „์†ก์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์™€ ์ „์†ก ๋ณ‘๋ชฉ์„ ์ค„์ด๋Š” ๊ธฐ๋ฒ•๋“ค

์ „์†ก ๋ณ‘๋ชฉ์„ ์ค„์ด๋Š” ๊ธฐ๋ฒ•

๊ธฐ๋ฒ• ๋‚ด์šฉ
์••์ถ• KV๋ฅผ ์ž‘๊ฒŒ ์ธ์ฝ”๋”ฉ(CacheGenยท์–‘์žํ™”) โ†’ ์ „์†ก๋Ÿ‰ ๊ฐ์†Œ
๋ ˆ์ด์–ด๋ณ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ ˆ์ด์–ด ๋‹จ์œ„๋กœ ์ „์†กยท๊ณ„์‚ฐ์„ ์ค‘์ฒฉ(overlap) โ†’ ์ „์†ก ์ง€์—ฐ ์€๋‹‰
ํ”„๋ฆฌํŽ˜์น˜ยท์บ์‹ฑ ๊ณง ์“ธ KV๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œ, ์ž์ฃผ ์“ฐ๋Š” hot KV๋Š” ์ƒ์œ„ ํ‹ฐ์–ด์— ์œ ์ง€
ํ”„๋ฆฌํ”ฝ์Šค ํ•ด์‹œยท์ค‘๋ณต์ œ๊ฑฐ ๊ฐ™์€ ๋ฌธ๋งฅ์˜ KV๋ฅผ ํ•ด์‹œ๋กœ ์‹๋ณ„ํ•ด ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ
cache-aware ๋ผ์šฐํŒ… ํ•ด๋‹น KV๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด ์ „์†ก ์ž์ฒด๋ฅผ ์ค„์ž„

ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์˜ ํ•ต์‹ฌ

  • ์˜คํ”„๋กœ๋”ฉ์ด ํ•ญ์ƒ ์ด๋“์€ ์•„๋‹™๋‹ˆ๋‹ค โ€” ์ €์žฅ๋œ KV๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ „์†ก ์‹œ๊ฐ„์ด ์žฌ๊ณ„์‚ฐ ์‹œ๊ฐ„๋ณด๋‹ค ๊ธธ๋ฉด ์˜คํžˆ๋ ค ์†ํ•ด์ž…๋‹ˆ๋‹ค. ๊ฒฐ์ • ๋ณ€์ˆ˜๋Š” ํ‹ฐ์–ด ๋Œ€์—ญํญยทKV ํฌ๊ธฐยทํ”„๋ฆฌํ•„ ์—ฐ์‚ฐ๋Ÿ‰ยท์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ(hit ratio)์ž…๋‹ˆ๋‹ค.

  • CacheGen์˜ ์˜๋ฆฌํ•œ ์ ์€ ๋Œ€์—ญํญ์ด ๋ถ€์กฑํ•˜๋ฉด ์••์ถ•๋ฅ ์„ ๋†’์ด๊ฑฐ๋‚˜ ์•„์˜ˆ ์žฌ๊ณ„์‚ฐ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ์ ์‘์„ฑ์ž…๋‹ˆ๋‹ค. Mooncake์˜ ๋ ˆ์ด์–ด๋ณ„ ์ŠคํŠธ๋ฆฌ๋ฐ์€ ์ „์†ก๊ณผ ๊ณ„์‚ฐ์„ ๊ฒน์ณ ์ง€์—ฐ์„ ์ˆจ๊น๋‹ˆ๋‹ค.

  • ํ”„๋ฆฌํ”ฝ์Šค ์บ์‹œ hit ratio๊ฐ€ ๊ด€๊ฑด์ž…๋‹ˆ๋‹ค โ€” ์‚ฐ์—…์—์„œ ํ”ํ•œ ๋ฌธ๋งฅ truncation์ด hit ratio๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ๋–จ์–ด๋œจ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ณ„์‚ฐยท๋Œ€์—ญํญยท์šฉ๋Ÿ‰์˜ 3์ž ๊ท ํ˜•์„ ์›Œํฌ๋กœ๋“œ์— ๋งž์ถฐ ์žก๋Š” ๊ฒƒ์ด ์‹œ์Šคํ…œ์˜ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

  • ์žฅ์  โ€” ๊ฐ™์€ ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ๋ฐ˜๋ณต ์“ฐ๋Š” ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” TTFT์™€ GPU ์—ฐ์‚ฐ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , CPUยทCXLยทSSD๊นŒ์ง€ ๊ณ„์ธตํ™”ํ•˜๋ฉด ์šฉ๋Ÿ‰ ํ™•์žฅ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ํ•œ๊ณ„ โ€” ํ•˜์œ„ ํ‹ฐ์–ด๋กœ ๊ฐˆ์ˆ˜๋ก ์ „์†ก ๋Œ€์—ญํญ๊ณผ ์ง€์—ฐ์ด ๋ณ‘๋ชฉ์ด ๋˜๋ฉฐ, hit ratio๊ฐ€ ๋‚ฎ๊ฑฐ๋‚˜ ๋ฌธ๋งฅ์ด ์ž์ฃผ ๋ฐ”๋€Œ๋ฉด ์ด๋“์ด ๊ธ‰๊ฒฉํžˆ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • ์šด์˜ ๋ณต์žก์„ฑ โ€” ์บ์‹œ ์ผ๊ด€์„ฑ, ๋ฐฑ์—”๋“œ ์„ ํƒ, ์••์ถ•ยทํ”„๋ฆฌํŽ˜์น˜ ์ •์ฑ…์„ ํ•จ๊ป˜ ํŠœ๋‹ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹จ์ˆœ ์บ์‹œ๋ณด๋‹ค ์‹œ์Šคํ…œ ํ†ตํ•ฉ ๋น„์šฉ์ด ํฝ๋‹ˆ๋‹ค.

5. ํ•˜๋“œ์›จ์–ด ํ”„๋ก ํ‹ฐ์–ด โ€” CXL๊ณผ Processing-Near-Memory

์˜คํ”„๋กœ๋”ฉ์˜ ๊ทผ๋ณธ ์ œ์•ฝ์€ ํ•˜์œ„ ํ‹ฐ์–ด๋กœ ๊ฐ€๋Š” ์ „์†ก ๋Œ€์—ญํญ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ CXL์ด PCIe์˜ ํ•œ๊ณ„๋ฅผ ๋„˜๋Š” ์ƒˆ๋กœ์šด ํ‹ฐ์–ด๋กœ ์ฃผ๋ชฉ๋ฐ›๊ณ , ๋” ๋‚˜์•„๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณ์—์„œ ์—ฐ์‚ฐํ•˜๋Š” PNM์ด ์ „์†ก ์ž์ฒด๋ฅผ ์—†์• ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ตฌ๊ฐ€ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

KV Cache Offloading Analysis

๊ทธ๋ฆผ 5. ๋Œ€์—ญํญ ๋น„๊ต, CXL-PNM, ์˜คํ”„๋กœ๋”ฉ ๊ณ„๋ณด, ๊ทธ๋ฆฌ๊ณ  ์‹ ๋ขฐ์„ฑ ๊ด€์ 

์™œ CXL์ธ๊ฐ€

  • ๋Œ€์—ญํญ โ€” HBM(2TB/s ์ด์ƒ)์ด ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ ์ž‘๊ณ , ๊ธฐ์กด PCIe ์˜คํ”„๋กœ๋”ฉ์€ 8~16GB/s๋กœ ๋ณ‘๋ชฉ์ž…๋‹ˆ๋‹ค. CXL์€ 64GB/s๊ธ‰์˜ ๋” ๋„“์€ ๋Œ€์—ญํญ์— ์บ์‹œ ์ผ๊ด€์„ฑ๊ณผ byte ๋‹จ์œ„ ์ ‘๊ทผ, ๋ฉ”๋ชจ๋ฆฌ ํ’€๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • CXL ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ PCIe๋ณด๋‹ค ๋น ๋ฅด๋ฉด CPU-GPU ์ „์†ก ๋Œ€์—ญํญ์„ DDR ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ์žˆ์œผ๋ฉฐ, CXL 4.0์€ 128 GT/s์™€ ๋ž™ ๋‹จ์œ„ 100TB+ ํ’€๋ง์œผ๋กœ ์˜คํ”„๋กœ๋”ฉ ์šฉ๋Ÿ‰ ํ•œ๊ณ„๋ฅผ ํฌ๊ฒŒ ๋„“ํž™๋‹ˆ๋‹ค.

CXL-PNM (Processing-Near-Memory)

ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐ„ ๋ฐฉํ–ฅ์ž…๋‹ˆ๋‹ค. ์ „์ฒด KV ์บ์‹œ๋ฅผ CXL ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผ์‹œํ‚ค๊ณ (non-eviction, 1M ํ† ํฐ๊ธ‰ ๋ฌธ๋งฅ), CXL ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์˜ ๊ฐ€์†๊ธฐ๊ฐ€ ํ† ํฐ ํŽ˜์ด์ง€ ์„ ํƒ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด KV๋ฅผ GPU๋กœ ๋„๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋น„์‹ผ recall์„ ์—†์• ๊ณ  ๋” ํฐ ๋ฐฐ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค โ€” ๋ฐ์ดํ„ฐ ๊ณ์—์„œ ์—ฐ์‚ฐํ•จ์œผ๋กœ์จ ์ „์†ก ์ž์ฒด๋ฅผ ์—ฐ์‚ฐ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์˜คํ”„๋กœ๋”ฉ ๊ณ„๋ณด์˜ ํ˜„์žฌ ์ข…์ฐฉ์ ์ž…๋‹ˆ๋‹ค: vLLM(PagedAttention) โ†’ LMCache โ†’ Mooncake โ†’ CXL-KV โ†’ CXL-PNM.

๊ด€๋ จ ๊ธฐ์ˆ 

  • vLLM PagedAttention โ€” KV ๋ธ”๋ก์„ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•ด ์žฅ๋ฌธ๋งฅ ์„œ๋น™์˜ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • SGLang โ€” ์—”์ง„ ์ˆ˜์ค€์—์„œ KV ๊ณต์œ ยท์ „์†ก ๊ฒฝ๋กœ๋ฅผ ๋ถ™์ด๊ธฐ ์‰ฌ์šด ๋Œ€ํ‘œ ์„œ๋น™ ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค.
  • FlexGen / InfiniGen โ€” KV๋ฅผ ๋””์Šคํฌ๋‚˜ ์˜ˆ์ธก ๊ธฐ๋ฐ˜ prefetch๋กœ ๋‹ค๋ฃจ๋Š” ์ดˆ๊ธฐ ์˜คํ”„๋กœ๋”ฉ ๊ณ„์—ด๋กœ, ํ›„์† ์‹œ์Šคํ…œ์˜ ๋น„๊ต ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค.
  • CXL 4.0 โ€” ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ ํ’€๊ณผ ๋†’์€ ๋งํฌ ๋Œ€์—ญํญ์„ ์ œ๊ณตํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.

์‹ ๋ขฐ์„ฑ ๊ด€์ (์—ฐ๊ตฌ ํ™•์žฅ) โ€” ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋งˆ๋‹ค ๋น„ํŠธ ์˜ค๋ฅ˜ ํŠน์„ฑ์ด ๋‹ค๋ฅด๋ฏ€๋กœ(DRAMยทCXLยทNVMe), KV ๋ธ”๋ก์„ '์–ด๋А ํ‹ฐ์–ด์—ยท๋ช‡ ๋น„ํŠธ๋กœ(์–‘์žํ™”)ยท์–ด๋–ค ECC ๊ฐ•๋„๋กœ' ๋‘˜์ง€๋ฅผ ํ•จ๊ป˜ ์ •ํ•˜๋Š” reliability-aware ์˜คํ”„๋กœ๋”ฉ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ํ™•์žฅ์ด๋‹ค. ๋˜ํ•œ ์ด๋Š” MoE์˜ ์ „๋ฌธ๊ฐ€ ์˜คํ”„๋กœ๋”ฉ๊ณผ ๋™ํ˜• ๊ตฌ์กฐ('์–ด๋А KV๋ฅผ/์ „๋ฌธ๊ฐ€๋ฅผ ์–ด๋А ํ‹ฐ์–ด์— ๋‘˜์ง€')๋ผ, ํ”„๋ฆฌํŽ˜์น˜ยท์บ์‹ฑ ์ •์ฑ…์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ โ€” ๋ณธ๋ฌธ ์ˆ˜์น˜๋Š” ๊ฐ ๋…ผ๋ฌธยท๋ฌธ์„œ(LMCache arXiv 2510.09665, Mooncake arXiv 2407.00079ยทFAST 2025, CacheGen arXiv 2310.07240ยทSIGCOMM 2024, CXL-PNM/CXL-NDP ๋“ฑ ํ›„์† ์—ฐ๊ตฌ)์˜ ๋ณด๊ณ ๊ฐ’์œผ๋กœ, ๋ชจ๋ธยทํ•˜๋“œ์›จ์–ดยท์›Œํฌ๋กœ๋“œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. '์ตœ๋Œ€ 15๋ฐฐ/525% ์ฒ˜๋ฆฌ๋Ÿ‰', 'TTFT 6.3์ดˆโ†’0.15์ดˆ', '์••์ถ• 3.5~4.3๋ฐฐ'๋Š” ํŠน์ • ์กฐ๊ฑด์˜ ์ƒํ•œยท์‚ฌ๋ก€๊ฐ’์ด๋ฉฐ, ๋Œ€์—ญํญ ์ˆ˜์น˜(HBM 2TB/sยทCXL 64GB/s๊ธ‰ยทPCIe 8~16GB/s)๋„ ์„ธ๋Œ€ยท๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. CXL/PNM ๊ธฐ๋ฐ˜ KV ์˜คํ”„๋กœ๋”ฉ์€ ํ™œ๋ฐœํžˆ ์—ฐ๊ตฌ๋˜๋Š” ์˜์—ญ์œผ๋กœ ์ƒ์šฉํ™” ์„ฑ์ˆ™๋„๋Š” ์‹œ์Šคํ…œ๋งˆ๋‹ค ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

6. ํ•ต์‹ฌ ์ •๋ฆฌ

KV ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ์€ GPU์— ๋‹ค ๋‹ด๊ธฐ์ง€ ์•Š๋Š” KV๋ฅผ CPU DRAMยทCXLยทNVMe๋กœ ๋‚ด๋ ค ๋ณด๊ด€ยท์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, '์—ฐ์‚ฐ์„ ์ €์žฅ์œผ๋กœ ๋ฐ”๊พธ๋Š”' ๋ฐœ์ƒ์ด๋‹ค. ๋‘ ๊ฐ€์ง€ ์“ฐ์ž„(ํ”„๋ฆฌํ”ฝ์Šค ์žฌ์‚ฌ์šฉยทPD ๋ถ„๋ฆฌ) ๋ชจ๋‘ KV๋ฅผ GPU ๋ฐ–์— ๋‘๊ณ  ์˜ฎ๊ธด๋‹ค. LMCache(KV ์บ์‹ฑ ๋ ˆ์ด์–ด, ์ตœ๋Œ€ 15๋ฐฐ ์ฒ˜๋ฆฌ๋Ÿ‰), Mooncake(KVCache ์ค‘์‹ฌ ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜, ์ตœ๋Œ€ 525% ์ฒ˜๋ฆฌ๋Ÿ‰), CacheGen(KV ์••์ถ•ยท์ŠคํŠธ๋ฆฌ๋ฐ, ํฌ๊ธฐ 3.5~4.3๋ฐฐโ†“)์ด ๋Œ€ํ‘œ ์‹œ์Šคํ…œ์ด๋ฉฐ ์„œ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค. ์„ฑํŒจ๋Š” ์žฌ๊ณ„์‚ฐ vs ์ „์†ก์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋กœ ๊ท€๊ฒฐ๋˜์–ด, ์••์ถ•ยท๋ ˆ์ด์–ด๋ณ„ ์ŠคํŠธ๋ฆฌ๋ฐยทํ”„๋ฆฌํŽ˜์น˜ยท์ค‘๋ณต์ œ๊ฑฐยทcache-aware ๋ผ์šฐํŒ…์œผ๋กœ ์ „์†ก ๋ณ‘๋ชฉ์„ ์ค„์ธ๋‹ค. ํ•˜๋“œ์›จ์–ด๋กœ๋Š” CXL(PCIe๋ณด๋‹ค ๋„“์€ ๋Œ€์—ญํญยทํ’€๋ง)์ด ์ƒˆ ํ‹ฐ์–ด๋กœ, CXL-PNM(๋ฉ”๋ชจ๋ฆฌ ๊ณ ์—ฐ์‚ฐ์œผ๋กœ recall ์ œ๊ฑฐ)์ด ํ”„๋ก ํ‹ฐ์–ด๋กœ ๋ถ€์ƒํ•˜๊ณ  ์žˆ๋‹ค.