コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2022年12月14日 >>> 2022年12月1日
link もっと後

2022年12月14日

自作OSの紹介その2 - デザイン

目次: 独自OS

最近、趣味&趣味からの発展で仕事でも独自OSを作成しています。独自OSの設計目標は下記の通りです。

  • できるだけ軽く、速くしたい
  • できるだけ便利、手軽にしたい
  • アクセラレータ向けに割り切る(汎用OSは目指さない)

最初の2つの項目は大抵トレードオフですが、3つ目の項目を活かして軽く&便利を両立させることが狙いです。

アプローチ(アクセラレータ側)

「便利、手軽」の実現のため、ソースコードレベルの互換性の確保を目指します。具体的にはLinux用に書かれたソースコードをそのままアクセラレータ用にコンパイル&実行できれば、プログラマから見てLinuxの使い勝手を実現できている、と言えるはずです。

一方で「軽く、速く」を実現するため、Linuxとのソース互換を目指しつつも、アクセラレータ向けに割り切った制限をいくつか設けます。

単一バイナリを実行
ユースケースに由来する制約です。別の仕事をしたいときはアクセラレータで実行するバイナリを切り替えます。
プロセスは未対応(常に1プロセス)
上記とほぼ同じ理由です。アクセラレータ上でマルチプロセスが連携するようなサーバーやGUIを動かしたい人はいないでしょう。
スレッドは対応
アクセラレータはマルチコアであることが多いため、スレッドの対応は必須です。
スレッド数はハードウェアスレッド数を上限とする
ソフトウェアのソースコード互換を大きく壊す可能性がありますが、機能と速度のバランスを目指しました。アクセラレータは計算が仕事であり、コア数以上のスレッド生成はオーバーヘッドが増え性能が下がるだけです。スレッド数の制御が困難な場合は、スレッドを自動的に扱うライブラリ(OpenMPなど)の利用もありでしょう。
ファイルシステム、言語対応などの機能は対応しない
コードサイズの縮小、実装期間の短縮のためです。対応すること自体に問題はないです、が、おそらく要らないと思います。
MMUや特権モードは使わない
連動して動的リンクなども未対応です。将来的には対応するかもしれませんが、必須ではありません。

これらの制限が妥当かどうか?について今は結論は出ないので、実装して使って問題があれば今後修正したいと思います。アクセラレータやOSに詳しい方々の意見も聞いてみたいです。

アプローチ(ホスト側)

アクセラレータに処理を依頼する際のインタフェースはいくつかありますが、いずれも定番ではなさそうです。今回はOpenCL風のAPIを採用しました。OpenCL規格に準拠はしませんが、ある程度(例えばclinfoに応答できる程度)のOpenCL APIを実装します(ホスト側のソースコードのリンク)。

ホストとアクセラレータ間のデータ移動や実行制御の方法も考える必要があります。ホスト側からアクセラレータ側に何か計算を依頼するケースと、もう一つアクセラレータ側のスタンドアローン実行(ホスト側から制御なしでアクセラレータ側のみ単独実行するモード)はデバッグの利便性を考えると、必須に近い機能です。

またホスト側に過度に依存しないように、ホスト側のAPIが気に入らなくなったら別のAPIを実装することができるように、アクセラレータ側の独自OSとは別のリポジトリに分離して実装します。

実現方法

独自にOSを実装する道を選びました。既存のOSSを改造するより実装期間が短く済むと思ったくらいで、独自実装しなければならない強力な理由はないです。個人的な理由も入れて良ければ、独自OS実装に対する興味があったことが大きいです。

RTOSにLinux互換レイヤを積む方法、Linuxをダウンサイズする方法、などでも実現できるのではないでしょうか。Linuxをダウンサイズする方法だとスレッド周りの制約実現が難しいですかね……?やったことがないので何とも言えません。

そんなの簡単にできるよ、という方はぜひOS作成フレンズになりましょう。

編集者:すずき(2023/01/09 05:17)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年12月13日

独自OS - まとめリンク

目次: 独自OS

一覧が欲しくなったので作りました。

編集者:すずき(2024/06/30 15:38)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年12月12日

自作OSの紹介その1 - 概要

目次: 独自OS

最近、趣味&趣味からの発展で仕事でも独自OSを作成しています。OSと呼ぶほどの機能はありませんが、位置的にはCライブラリよりハード寄りのいわゆるOSレイヤーです(ソースコードへのリンク)。

目的、目標

想定する動作環境は、複数プロセッサで構成されたシステムにおいて、片方がホスト、もう片方がアクセラレータとして動作する環境です。想定する制御方法は、ホスト側で実行したくない、時間がかかる処理をアクセラレータ側に任せて終わるのを待つ、シンプルなユースケースで下記のようになります。


アクセラレータの制御方法

このようなシステムにおいてPC系のプログラマが気軽にアクセラレータ側のソフトウェアを書ける環境が欲しい、という発想から、アクセラレータのプログラマの補助となるようなOSの作成が目的です。

独自OSの設計目標は下記の通りです。

  • できるだけ軽く、速くしたい
  • できるだけ便利、手軽にしたい
  • アクセラレータ向けに割り切る(汎用OSは目指さない)

最初の2つの項目は大抵トレードオフですが、3つ目の項目を活かして軽く&便利を両立させることが狙いです。

既存手法との違い

アクセラレータを動作させるという観点で見れば、わざわざ独自OSを作成せずとも既存のアクセラレータ用言語を使ったり、既存OSの転用でも動作させることができます。

既存のアクセラレータ用言語、CUDAやOpenCLですね。速度は最高だと思います。プログラマ視点から見ると、これら言語の習得には若干手間が掛かります。

LinuxなどPC系OSを転用する場合、使い勝手はPCそのものなので最高でしょう。しかしアクセラレータ向けとしては大規模で大げさでもあり、ハードウェアのリソース特にメモリがかなり必要です。

RTOSを転用するの場合、省メモリかつ大抵の実装は速度も速いです。しかし目的が違う(リアルタイム処理を記述するためのOS)ため、色々なOS独自ルールが存在します。PC系のプログラマには馴染みが薄いです。

手法速度メモリ手軽さ
アクセラレータ用言語×
PC系OS(Linuxなど)×
RTOS

独自OSでは使い慣れたC/C++ 言語が使えて、速さを殺さず、Linuxの使い勝手を可能な限り両立させることを目指します。

編集者:すずき(2023/01/09 04:59)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年12月9日

個人で自社製品RISC-V CPUを買うことはできるか?その6 - 受領書と付属DVDの謎

目次: RISC-V

NS31A Entry Kitを受け取ったら受領書を送り返してほしい、と言われているのですが、受領書は不思議な書類で、

  • B2B方式(納品書兼検査票、納品荷札、受領書の3つ)のまま来た、何を送り返せば良いか?
  • 受領書の送付先に名古屋(私は東京在住)の住所が印字されている、おかしくないか?
  • 印鑑をつくところがたくさん(検査、受入、受領印)あるが、どれが必要なのか?
  • 受け渡し「場所」に私の個人名が印字されているが、これで正しいのか?

受領書に関係していそうな前者2つについて質問したところ「あなたの住所を書いてくれ」という意味が分からん回答が返ってきました。質問の仕方が悪いのか、的の外し方から察するに「私に何を送ったか把握していない」可能性もありそうです。

  • メールのやり取りで「関係者」という単語が何度か出ていた → 窓口担当以外に、少なくとも発送担当が別に居る
  • 発送担当はいつもの相手(デンソーかなんか)と勘違いしていた
  • 窓口担当者は荷物をノーチェックで発送した

と推理すると包装の問題とか、個人向け販売なのに受領書がB2B向け販売の仕様(検査票+受領票とセット)が少しは理解できます。

さておき質問を文章で説明するのは厳しそうなので、送られてきた書類をスキャンし赤い字で「ここですけど、どうしたら?」と書いて送ってみました。これならご理解いただけるはず。

中身が

付属していたDVDに書かれたデータも欠けていた(サンプルプログラムが入っていない)ので、問い合わせたら「内容が間違ってた、ごめん」的な返事とともに、後日DVDがもう1枚家に送られてきました。

個人向け販売チャネル第一号ってのはなかなか大変ですね。デバッグをしているような気分です。

編集者:すずき(2022/12/19 16:27)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年12月7日

個人で自社製品RISC-V CPUを買うことはできるか?その5 - ボード到着、包装が……

目次: RISC-V

ついにAkaria NS31AのEntry Kitの回路データが書き込まれたFPGAボード(DIGILENT ARTY A7ボード)が到着しました。やったー。

中身はボードとドキュメント類が書き込まれたDVDが入っているだけのシンプルなものです。受領書を返してくれと言われているのですが、返し方が良くわからないのでメールで質問中です。

DVDの中身はまた後日確認したいと思います。

包装

送られてきた荷物を見てビックリしたんですけど、ちょっと包装に問題がありました。自社商品でもあるし、せっかく拓いてもらった個人向け販売チャネルを潰したくないので、忖度全開で詳しいことは書きませんけども……。

私は細かいことは気にしないですが「さすがにこれはダメでしょ?〇〇社に怒られますよ?」と思ったレベルのミス、とだけ添えておきます。

編集者:すずき(2022/12/19 16:27)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2022年12月14日 >>> 2022年12月1日
link もっと後

管理用メニュー

link 記事を新規作成

<2022>
<<<12>>>
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事3件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/19 01:04