**ユーザースペースにおけるPCIeデバイス仮想化を実現するLinuxカーネルフレームワーク**

2026/01/20 16:51

**ユーザースペースにおけるPCIeデバイス仮想化を実現するLinuxカーネルフレームワーク**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

PCIem は、開発者がユーザー空間で完全に合成された PCI Express デバイスを作成・テストできる Linux カーネルフレームワークです。
これらの仮想デバイスは

/dev/pciem
を介してホスト OS に公開され、完全な PCI 設定空間、プログラム可能なベースアドレスレジスタ(BAR)管理、割り込み処理(INTx、MSI、MSI‑X)、IOMMU 対応 DMA の原子操作、およびホワイトリスト制御されたピア・ツー・ピア(P2P)DMA を実装します。

PCIem のコアはリンクドリストとして実装されたモジュラー PCI キャパビリティシステムを使用しており、開発者がデバイス機能を動的に拡張できます。ユーザー空間コンポーネントが実際の PCIe ロジックを提供し、物理ハードウェアなしでプロトタイピングが可能です。
現在のユースケースは、QEMU で完全にプログラムされた ProtoPCIem カードです。このカードはソフトウェアレンダリングされた DOOM と OpenGL 1.X ゲームを実行し、コマンドリストをユーザー空間で処理します。

フレームワークのライセンスは、コアファイル(

pciem_framework.c
protopciem_driver.c
)が MIT/GPL‑v2 の二重ライセンスであり、残りのコードベースは MIT です。ドキュメントは https://cakehonolulu.github.io/docs/pciem/ にあり、ブログ紹介は https://cakehonolulu.github.io/introducing-pciem/ にあります;PCI Express 仕様は https://pcisig.com/specifications を参照しています。

物理ハードウェアを不要にすることで、PCIem はコストを削減し、PCIe デバイスドライバのプロトタイピング、デバッグ、およびテストを迅速化します。これにより、学術機関、組み込みベンダー、およびオープンソースカーネル貢献者が恩恵を受けます。

本文

ユーザー空間のみで動作する合成PCIeデバイスエミュレーション用Linuxカーネルフレームワーク


PCIemとは?

PCIemは、Linuxカーネル内に仮想PCIeデバイスを作成し、ホストOSが正規のPCIデバイスとして認識できるようにする新しい手法を用いたフレームワークです。
簡単に言えば、開発者やテスターは実際のハードウェアを必要とせずにPCIeデバイスドライバを扱うことができます。


アーキテクチャ

┌───────────────────────────────────────────┐
│                                           │
│ ──► ホスト Linux カーネル                 │
│                                           │
│     ┌─────────────────────────────────────┐
│     │      PCIem フレームワーク             │
│     │                                       │
│     │  - PCI 設定空間                       │
│     │  - BAR マッピング                     │
│     │  - INT/MSI/MSI‑X 割り込み              │
│     │  - DMA(IOMMU 有無)                   │
│     │  - P2P DMA                             │
│     └─────────────────────────────────────┘
│                                           │
│   /dev/pciem                                 │
│                                           │
└───────────────────────────────────────────┘
          ▲
          │
          ▼
┌───────────────────────────────────────────────────┐
│                                                   │
│                Linux ユーザー空間                 │
│                                                   │
│     ┌───────────────────────────────────────┐    │
│     │  ユーザー空間 PCI シム                  │    │
│     │  - PCIe デバイスロジックをエミュレート   │    │
│     └───────────────────────────────────────┘    │
│                                                   │
└───────────────────────────────────────────────────┘

*実際のPCIeドライバはPCIemを認識せず、変更されていない本番ロジックをそのまま使用します。*

---

## 現在の機能

- **BARサポート** – BAR をプログラムで登録・管理。  
- **ウォッチポイント** – CPU ウォッチポイントを用いたイベント駆動型アクセス検出。  
- **レガシー IRQ/MSI/MSI‑X サポート** – 動的トリガリングに対応した完全割り込みサポート。  
- **PCI キャパビリティフレームワーク** – モジュール化された PCI 能力システム(リンクリスト実装)。  
- **DMA システム** – IOMMU 対応 DMA 操作と原子メモリアクセスのサポート。  
- **P2P DMA** – デバイス間のピアツーピア DMA、ホワイトリストベースのアクセス制御付き。  
- **ユーザー空間定義** – PCIe プロトタイプを任意の場所で実装可能。

---

## 例

### ProtoPCIem カード
このカードは QEMU 内だけで完全にプログラムされ、ホスト上で動作する実際のドライバからのユーザー空間初期化とコマンド処理をすべて担当します。  
ソフトウェアレンダリングされた DOOM(フレーム完了時に DMA でカードへ転送して QEMU ディスプレイへ表示)や、**tyr-glquake**・**xash3d** のような OpenGL 1.x ゲームを実行できます。これはすべて QEMU 内で実装されたカスタム OpenGL ステートマシンがコマンドリストをソフトウェアレンダリングし、内部状態を更新することで実現しています。

---

## ライセンス

- Dual MIT/GPLv2(`pciem_framework.c` と `protopciem_driver.c`)  
- MIT(その他のファイル)

---

### 参考資料

- ブログ記事: https://cakehonolulu.github.io/introducing-pciem/  
- ドキュメント: https://cakehonolulu.github.io/docs/pciem/  
- PCI Express 仕様書: https://pcisig.com/specifications

同じ日のほかのニュース

一覧に戻る →

2026/01/21 3:16

**2019年 「見えないままに隠された26000年前の天文モニュメント」**

## Japanese Translation: **概要:** フーバーダムの西側にあるモニュメント・プラザは、地球の25,772年周期の軸進動をタレーズ床にマッピングした芸術的な敬意表現です。設計の中心には旗竿があり、これは進動円の中心として機能します。その周囲には巨大な翼付きブロンズ像が配置されています。床はダム開業時(1936年)のポラリス、ピラミッド建設中のトゥバン、そして将来の北極星としてプロジェクトされたベガを示しており、技術図面には惑星位置が正確に配置されているため、1日単位での日付計算が可能です。1931年に米国再利用局(U.S. Bureau of Reclamation)から委託され、1936年に完成したモニュメントは後にモニュメント・プラザと名付けられました。アーティストのオスカー J. W. ハンセン氏の意図表明は抽象的であり、歴史家エメー・ウッドワードが提供したアーカイブ写真には「セーフティアイランド」という早期建設名が示されています。デザインはロング・ナウ(Long Now)の10,000年時計コンセプトを反映しており、天体周期の公衆展示に類似するものとしてインスピレーションを与える可能性があります。米国再利用局が計画図をInternet Archiveへ公開したことは、ダム文書へのオープンアクセス化の動向を示しています。訪問者には短い音声解説のみが提供されるため、詳細な科学内容はほぼ隠蔽されており、教育的広報は限定的です。それでもプラザは20世紀初頭の大規模インフラプロジェクトにおける芸術と科学の統合を示す具体例として、歴史家・天文学者・エンジニアに貴重な実証を提供します。

2026/01/21 6:34

**日本のスナックバーの秘密世界へようこそ** 「おかかん」と呼ばれることもある日本のスナックバーは、地元ならではの味と創造性を堪能できる隠れた宝石です。小さな飲食店が揃うこれらのお店では、フライドライスボール(おにぎり)や塩気のあるペストリー、甘いスイーツなど、手軽で美味しい一口料理を提供しつつ、親切なサービスも楽しめます。 - **雰囲気**:街角の居心地の良い隅っこや静かな路地裏が主流です。 - **メニューの見どころ**: - 海苔と醤油をトッピングしたフライドライスボール - 蜂蜜でコーティングされた甘いかぼちゃロール - 豚肉と竹笹の餡が入った塩味の餃子 - **特徴**: - 多くのお店では、新鮮な地元産食材を使用しています。 - 季節ごとにメニューが変わるローテーションもあります。 おかかんへ足を踏み入れることは、単なるスナックの取得以上の体験です。便利さと伝統が交差する日本の食文化を垣間見る瞬間なのです。

## Japanese Translation: スナックバー―第二次世界大戦後に厳しい酒類法を回避するために登場した、女性が経営する小規模カフェ―は、日本独自の社会的ハブとして確立しました。全国には約10万店舗が存在し、コンビニエンスストアの数を2倍以上上回ります。これらは「ママさん」と呼ばれる年配女性によって運営され、家庭的な雰囲気でシンプルなお菓子や飲み物を提供します。主目的は食べ物や飲み物だけでなく、会話と個人的つながりを得られる居心地の良い空間を提供することです。 このコンセプトは日本の戦後経済成長期に急速に広がりました。1960年代後半には全国的にスナックバーが普及し、コミュニティのハブとなり、その後1980年代中頃から1990年代初頭まで存続しました。特徴として「ボトルキープ」システムがあります:常連客は自分のウイスキーや焼酎をラベル付けして保管し、次回訪問時に利用できます。伊良谷真由子(Mayuko Igarashi)氏などの研究者は2021年以降、1200件以上の店舗を巡り、旅行者とこれまで地元住民限定だった場所を結びつけています。 スナックバーはCOVID-19以前から人気低下やホスト人口の高齢化、カラオケバーやチェーン居酒屋との競争など課題に直面していますが、新しいトレンドが存続を支えています。アニメテーマのスナック、SNSプロモーション、LGBTQ+来客へのより包括的な対応などです。著名例として新橋の「Aeru」のウララ氏は14年間でタロットリーディングと現代のマッチメイキング手法を用いて90組以上のカップルを紹介しています。 デジタルライフの圧力にもかかわらず、スナックバーはママさんとの真の人間関係や親密な会話が評価され続けています。旅行者は、豪華ホテルや寿司教室など高価な観光活動よりも、これらの場所での思い出深い体験を重視しており、地元経済と伝統的ホスピタリティ慣行の保存に対する継続的な関連性を示しています。

2026/01/21 1:48

**UNIXパイプ・カードゲーム**

## Japanese Translation: 記事は、子どもに Unix パイプコマンドチェーンの構築方法を教えるカードベースのボードゲームについて説明しています。デッキには、`cat`、`grep`、`tail`、**`head`、`wc`、`sort`、`uniq`** などの主要な Unix コマンドを表すカードと、特定行の表示、出現回数のカウント、非表示コマンドチェーンの作成といったタスクが含まれています。ローカルの Unix システムが利用できない場合は、ブラウザベースの jslinux を使用できます。 ゲームプレイは時計回りに進行します:プレイヤーはカードを引き、最短または最長の有効パイプラインを目指すかどうかを選択し、タスクを完了した最初のプレイヤーがポイントを獲得します。例として、最も頻出する行を見つけるチェーンを示すラウンドがあります: ``` cat 03.txt | sort | uniq -c | sort -n | tail -1 ``` ゲームは €5,00 EUR(現在完売)で販売されており、印刷可能な PDF(`unix-pipe-cards.pdf`、`unix-pipe-box.pdf`)も入手できます。 GitHub 上のソースコードリポジトリ(`github.com/jackdoe`)、共著者 Jackie、連絡メールアドレス (`b0000@fastmail.com`) と CC BY 4.0 ライセンスが製品に付属しています。 「UNIX Pipe Game – Process Substitution」という拡張パックでは、プロセス置換用のコマンド(`paste`、`tr`、`cut`、`bc`)を追加します。 著者は Python の基礎、C ポインタ、機械語、ランレングス符号化、関数合成、RISCV アセンブラなどをカバーする追加のカードゲームも公開しており、子ども向けにプログラミング概念をゲーミフィケーションする広範な取り組みを示しています。