ํŽ˜์ด์Šค๋ถ, F14 ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ตฌํ˜„ ๊ฐœ์‹œ

ํŽ˜์ด์Šค๋ถ ํšŒ์‚ฌ ๋ฐœํ‘œํ–ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ตฌํ˜„์— ๋Œ€ํ•ด F14, ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์œ„ํ•ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. F14๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์œ ํ˜•์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด Facebook ์ธํ”„๋ผ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. F14๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์—ˆ๋˜ google::sparse_hash_map ํ•ด์‹œ ํ…Œ์ด๋ธ”๋ณด๋‹ค ๋ˆˆ์— ๋„๊ฒŒ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ฆฌ์„์€ ํ–‰๋™.

F14๋Š” 14์˜ ์ด์ค‘ ํ•ด์‹ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ถฉ๋Œ ํ•ด๊ฒฐ ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ์‹œํ€€์Šค (ํ•˜๋‚˜์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์…€์—๋Š” 14๊ฐœ์˜ ์Šฌ๋กฏ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ฒด์ธ์ด ์ €์žฅ๋˜๋ฉฐ, ๋ณด์กฐ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์…€ ๊ฐ„์˜ ๊ฐ„๊ฒฉ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.) ์…€ ํ•„ํ„ฐ๋ง ์ž‘์—… ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„์—์„œ๋Š” x2_86 ์‹œ์Šคํ…œ์šฉ ๋ฒกํ„ฐ ๋ช…๋ น์–ด SSE64์™€ Aarch64์šฉ NEON์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ‚ค ์ฒด์ธ์ด ์žˆ๋Š” ์Šฌ๋กฏ์„ ์„ ํƒํ•˜๊ณ  ์ฒด์ธ ๋‚ด์—์„œ ํ‚ค๋ฅผ ์„ ๋ณ„ํ•˜๋Š” ์ž‘์—… ์‹คํ–‰์„ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 14๊ฐœ ์Šฌ๋กฏ์˜ ๋ธ”๋ก์ด ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์„œ ์บ์‹œ ์‚ฌ์šฉ ํšจ์œจ์„ฑ๊ณผ ์ถฉ๋Œ ํšŸ์ˆ˜ ๊ฐ„์˜ ์ตœ์  ๊ท ํ˜•์ž…๋‹ˆ๋‹ค.

F14์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ „๋žต์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • F14NodeMap - ๋Œ€ํ˜• ๋ฐ ์ค‘๊ฐ„ ํฌ๊ธฐ ํ‚ค์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฝ์ž…ํ•  ๋•Œ๋งˆ๋‹ค malloc์„ ํ˜ธ์ถœํ•˜์—ฌ ์š”์†Œ๊ฐ€ ๊ฐ„์ ‘์ ์œผ๋กœ ์ €์žฅ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • F14ValueMap - ์ž‘์€ ํ‚ค์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ๋Š” ์…€ ์ž์ฒด(์ธ๋ผ์ธ)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๋ฐ ํฐ ํ‚ค์˜ ๊ฒฝ์šฐ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • F14VectorMap - ํฐ ํ…Œ์ด๋ธ”๊ณผ ๋ณต์žกํ•œ ํ‚ค์—์„œ๋Š” ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ํ‚ค์™€ ์ž‘์€ ํ…Œ์ด๋ธ”์—์„œ๋Š” ๋” ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์š”์†Œ๋Š” ์—ฐ์†์ ์œผ๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด๋กœ ์••์ถ•๋˜๊ณ  32๋น„ํŠธ ์ธ๋ฑ์Šค ํฌ์ธํ„ฐ๋กœ ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
  • F14FastMap์€ ๊ฒฐํ•ฉ๋œ ์ „๋žต์ž…๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ 24๋ฐ”์ดํŠธ ๋ฏธ๋งŒ์ด๋ฉด F14ValueMap์ด ์„ ํƒ๋˜๊ณ , ๊ทธ๋ณด๋‹ค ํฌ๋ฉด F14VectorMap์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์Šค๋ถ, F14 ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ตฌํ˜„ ๊ฐœ์‹œ

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€