๐Ÿ› ๏ธAI ๋„๊ตฌ2026-01-28

ํ•˜๋“œ์›จ์–ด ์—†์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋งˆ๋ฒ• ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ

๐Ÿ’ก ํ•œ์ค„ ์š”์•ฝ|ํ•˜๋“œ์›จ์–ด ์—†์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋งˆ๋ฒ• ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ. ์œ ์ € ์ŠคํŽ˜์ด์Šค์—์„œ ๊ฐ€์งœ PCIe ์นด๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

Source: cakehonolulu/pciem

๐ŸŽฃ Hook: ๋ธ”๋ฃจ์Šคํฌ๋ฆฐ(Kernel Panic) ์—†๋Š” ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ?

๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์ž์˜ ์ผ์ƒ์€ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ•œ ์ค„ ์ž˜๋ชป ์งœ๋ฉด ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ”๊ณ , ์žฌ๋ถ€ํŒ…ํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ์š”. "ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„์ง ์•ˆ ๋‚˜์™”๋Š”๋ฐ ๋“œ๋ผ์ด๋ฒ„๋ถ€ํ„ฐ ์งœ์•ผ ํ•˜๋Š”" ์ƒํ™ฉ์ด๋ผ๋ฉด ๋” ๋ง‰๋ง‰ํ•ฉ๋‹ˆ๋‹ค.

PCIem์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด(Userspace)๋กœ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ, ๋ฆฌ๋ˆ…์Šค ์ปค๋„์ด "์•„, ์ง„์งœ PCIe ์นด๋“œ๊ฐ€ ๊ฝ‚ํ˜”๊ตฌ๋‚˜"๋ผ๊ณ  ์ฐฉ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ How-to: ์„ค์น˜ ๋ฐ ์‹คํ–‰

์ด ๋„๊ตฌ๋Š” ์ปค๋„ ๋ชจ๋“ˆ(pciem.ko)๊ณผ ์œ ์ € ์ŠคํŽ˜์ด์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: ๋นŒ๋“œ ๋ฐ ์ปค๋„ ๋ชจ๋“ˆ ๋กœ๋“œ

git clone https://github.com/cakehonolulu/pciem.git
cd pciem
make
sudo insmod kernel/pciem.ko

2๋‹จ๊ณ„: ๊ฐ€์งœ ๋””๋ฐ”์ด์Šค ๋งŒ๋“ค๊ธฐ (Userspace)

์œ ์ € ์ŠคํŽ˜์ด์Šค์—์„œ C ์ฝ”๋“œ๋กœ ๊ฐ€์งœ ํ•˜๋“œ์›จ์–ด์˜ ๋™์ž‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

// ๊ฐ€์งœ BAR(Base Address Register) ์„ค์ •
struct pciem_bar my_bar = {
    .size = 4096,
    .flags = PCI_BASE_ADDRESS_SPACE_MEMORY,
};

// ๊ฐ€์งœ ๋””๋ฐ”์ด์Šค ๋“ฑ๋ก
pciem_register_device(&my_dev);

์ด์ œ lspci ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ๋‹น์‹ ์ด ๋งŒ๋“  ๊ฐ€์งœ ๋””๋ฐ”์ด์Šค๊ฐ€ ๋ฆฌ์ŠคํŠธ์— ๋œน๋‹ˆ๋‹ค!

๐Ÿง  The Strategy: ์•„ํ‚คํ…์ฒ˜์˜ ๋ฏธํ•™

1. ํ•˜๋“œ์›จ์–ด ๋กœ์ง์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ฒฉ๋ฆฌ

์ผ๋ฐ˜์ ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ(QEMU ๋“ฑ)๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ฐ€์ƒํ™”ํ•˜์ง€๋งŒ, PCIem์€ Host OS ์œ„์—์„œ ํŠน์ • ๋””๋ฐ”์ด์Šค๋งŒ ๊ฐ€์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์žฅ์ : ์—๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ๋А๋ฆฐ ์†๋„ ์—†์ด, ๋„ค์ดํ‹ฐ๋ธŒ ์†๋„๋กœ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ™œ์šฉ: ์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์€ ASIC ์นฉ์„ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋ฏธ๋ฆฌ ๊ฐœ๋ฐœํ•  ๋•Œ ์ตœ์ ์ž…๋‹ˆ๋‹ค.

2. ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์ง€์›

๋‹จ์ˆœํžˆ ๋ ˆ์ง€์Šคํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋งŒ ํ‰๋‚ด ๋‚ด๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค.

  • DMA(Direct Memory Access): ๊ฐ€์งœ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ์ฒ™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (IOMMU ์ง€์›)
  • Interrupts: MSI/MSI-X ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋“œ๋ผ์ด๋ฒ„์˜ ISR(์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ)์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MAX5์˜ ์ƒ๊ฐ ๐ŸŽฏ

๐Ÿ‘จโ€๐Ÿ’ป ๋ฐ”์ด๋ธŒ ์ฝ”๋”ฉ ๋ ˆ์‹œํ”ผ

Claude์—๊ฒŒ ๊ฐ€์งœ ํ•˜๋“œ์›จ์–ด ์ŠคํŽ™์„ ๋˜์ ธ์ฃผ๊ณ  ๋“œ๋ผ์ด๋ฒ„ ์ดˆ์•ˆ์„ ์งœ๋ผ๊ณ  ํ•ด๋ด. "๊ฐ€์ƒ์˜ 10G ๋„คํŠธ์›Œํฌ ์นด๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด. PCIem ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ํŒจํ‚ท์„ ๋ฐ›์œผ๋ฉด ๋กœ๊ทธ๋ฅผ ์ฐ๊ณ  ํ๊ธฐํ•˜๋Š” ๊ฐ„๋‹จํ•œ Userspace C ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค˜."

๐Ÿ’ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด

"Driver Dojo": ์‹ค์ œ ํ•˜๋“œ์›จ์–ด ์—†์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋“œ๋ผ์ด๋ฒ„ ์ž‘์„ฑ์„ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๊ต์œก์šฉ ํ”Œ๋žซํผ. "์˜ค๋Š˜์€ ๊ฐ€์งœ ์‚ฌ์šด๋“œ์นด๋“œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”" ๊ฐ™์€ ๋ฏธ์…˜์„ ์ฃผ๋Š” ๊ฑฐ์ง€.


์นดํ…Œ๊ณ ๋ฆฌ: ai_tools, ``

์ด ๊ธ€์ด ์–ด๋• ๋‚˜์š”?

๊ด€๋ จ ๊ธ€

๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ› ๏ธAI ๋„๊ตฌ๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์˜ ์„ฑ๊ณผ๋Š” โ€œ๋” ๊ธธ๊ฒŒ ์‹œํ‚ค๊ธฐโ€๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ •๋ฆฌํ•˜๊ณ , ์ผ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๋งค ๋‹จ๊ณ„์˜ ๊ฒ€์ฆ๊ณผ ๋˜๋Œ๋ฆผ์„ ์ •ํ•˜๋Š” ๋ฐ์„œ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์˜ ์„ฑ๊ณผ๋Š” โ€œ๋” ๊ธธ๊ฒŒ ์‹œํ‚ค๊ธฐโ€๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ •๋ฆฌํ•˜๊ณ , ์ผ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๋งค ๋‹จ๊ณ„์˜ ๊ฒ€์ฆ๊ณผ ๋˜๋Œ๋ฆผ์„ ์ •ํ•˜๋Š” ๋ฐ์„œ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค. ํ˜ผ์ž ๋งŒ๋“œ๋Š” MVP๋ผ๋ฉด ์ด ๋‹ค์„ฏ ๋‹จ๊ณ„๋งŒ์œผ๋กœ๋„ ์‹คํŒจ ๋น„์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์š”.

์—๋””ํ„ฐ MAX8๋ถ„ ์†Œ์š”
๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ› ๏ธAI ๋„๊ตฌ

Anthropic์˜ ๋‚ด๋ถ€ ํŒ€ ์‚ฌ๋ก€๋Š” AI ์ฝ”๋”ฉ ๋„๊ตฌ๊ฐ€ ์‚ฌ๋žŒ์„ ํ†ต์งธ๋กœ ๋Œ€์ฒดํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค

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

์—๋””ํ„ฐ MAX7๋ถ„ ์†Œ์š”
๐Ÿ› ๏ธAI ๋„๊ตฌ๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€

AI๋กœ ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์–ด๋„, ์ •ํ™•ํ•œ ๋ฌธ์„œ๊ฐ€ ์ €์ ˆ๋กœ ๋‚˜์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค

AI๋กœ ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์–ด๋„, ์ •ํ™•ํ•œ ๋ฌธ์„œ๊ฐ€ ์ €์ ˆ๋กœ ๋‚˜์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. Google Cloud์˜ ๋ฌธ์„œ ์ œ์ž‘ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ์›๋ฌธ ๊ทผ๊ฑฐยท๋ณ„๋„ ํ‰๊ฐ€ยท์‹คํ–‰ ๊ฒ€์ฆ์„ ๋ถ„๋ฆฌํ•˜๋ฉด, ์ฝ˜ํ…์ธ  ์ž๋™ํ™”๋„ โ€˜๋งŽ์ด ์“ฐ๊ธฐโ€™๊ฐ€ ์•„๋‹ˆ๋ผ โ€˜ํ‹€๋ฆฌ์ง€ ์•Š๊ฒŒ ๊ณ ์น˜๊ธฐโ€™๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์š”.

์—๋””ํ„ฐ MAX8๋ถ„ ์†Œ์š”