Open Design Computer Project

     ○伊藤 剛浩 川田 裕貴
      http://open-arch.org/
@cpu_labs
伊藤 剛浩 (いとう たかひろ)
筑波大学情報学群情報科学類2++ AC
システム情報工学科産学間連携推進室

Verilog HDL
回路屋
@hktechno
川田 裕貴(かわた ひろたか)

筑波大学 情報学群 情報科学類 2++年生
産学間連携推進室

使える言語 : C, Python, x86 asm
好きなGNU/Linux : Debian
好きなエディタ : Emacs
アンチ Apple
Open Design Computerとは
• Open Design
  – 仕様, 開発ツール,OS,ハードウェアを公開
  – 全て自由に利用可能(2次利用が可能)
  – 様々な製品へ転用可能
• ユーザ視点からみた Open Design Computer
  – より高速に動作するコンピュータ
  – なおかつ低消費電力動作
このプロジェクトでの提案

• ハードウェアとソフトウェアの協調設計

 – ハードウェアとソフトウェアの機能整理


 – ゼロからのコンピュータシステム設計
ハードウェアとソフトウェアの連携

•   レジスタ退避におけるキャッシュの有効活用
•   コンテキストスイッチのハードウェア実装
•   割り込みを複数用意してレベルを設ける
•   既存システムにあるムダを無くす

     クロックの向上に拠らない性能向上
ハードウェアの支援による解決
• 割り込みシステムの設計を見直す
 – 割り込みレベルを設ける
 – 割り込み実行タイミングの制御


• 積極的なコンテキストスイッチの支援
 – ハードウェア処理によるオーバーヘッドの削減
 – 同一プロセスのスレッド切り替えを高速化
ハードウェアの開発
• コンピュータシステムに必要なハードウェアの
  開発
 – プロセッサコア
 – IO/割り込み管理
 – メモリ管理
 – 各外部デバイスコントローラ

• 市販されているFPGAボード上に構築
 – シミュレータのみならず実動作可能
ハードウェアの開発 : 苦労編

• ハンドアセンブル & ハンド逆アセンブルの嵐

• シミュレータが高価

• FPGAが高価
ソフトウェアの開発について
• OSに必要なソフトウェア群の移植
 – オープンソースソフトウェアとして開発

• アセンブラ
 – GNU binutils (gas, ld)を採用
• コンパイラ
 – GNU Compiler Collection (gcc)を採用
• オペレーティングシステム
 – ハードウェアの機能を最大限に活用する
ソフトウェアの開発 : 苦労編
• OSを動かすための機能に関する資料が少ない
  – MMU,割り込み,IO周りなど
  – (個人レベルでは)誰もやってない…
• GNU binutils (gas), gccが汚い
  – レガシーコードの山。格闘戦
  – 移植に関する資料も少ない
• プロセッサができないとデバッグ・評価できない
  – 資料を考えている時が一番楽しい。実装は…
ロードマップ
2012年8月             その後
• 各仕様のリリース          • プロセッサ/OSのチューニン
• ハードウェア              グ
 –   プロセッサコア        • マルチコア化への対応
 –   IO/割り込み管理      • 多彩なデバイスへの対応
 –   メモリ管理
                    • チップ化や専用ボードの製
 –   外部デバイスコントローラ
                      作
• オペレーティングシステム
 – 基本的な外部デバイスとの
   通信
 – マルチタスクに対応

Open design computer project(boost)

  • 1.
    Open Design ComputerProject ○伊藤 剛浩 川田 裕貴 http://open-arch.org/
  • 2.
    @cpu_labs 伊藤 剛浩 (いとうたかひろ) 筑波大学情報学群情報科学類2++ AC システム情報工学科産学間連携推進室 Verilog HDL 回路屋
  • 3.
    @hktechno 川田 裕貴(かわた ひろたか) 筑波大学情報学群 情報科学類 2++年生 産学間連携推進室 使える言語 : C, Python, x86 asm 好きなGNU/Linux : Debian 好きなエディタ : Emacs アンチ Apple
  • 4.
    Open Design Computerとは •Open Design – 仕様, 開発ツール,OS,ハードウェアを公開 – 全て自由に利用可能(2次利用が可能) – 様々な製品へ転用可能 • ユーザ視点からみた Open Design Computer – より高速に動作するコンピュータ – なおかつ低消費電力動作
  • 6.
    このプロジェクトでの提案 • ハードウェアとソフトウェアの協調設計 –ハードウェアとソフトウェアの機能整理 – ゼロからのコンピュータシステム設計
  • 7.
    ハードウェアとソフトウェアの連携 • レジスタ退避におけるキャッシュの有効活用 • コンテキストスイッチのハードウェア実装 • 割り込みを複数用意してレベルを設ける • 既存システムにあるムダを無くす クロックの向上に拠らない性能向上
  • 8.
    ハードウェアの支援による解決 • 割り込みシステムの設計を見直す –割り込みレベルを設ける – 割り込み実行タイミングの制御 • 積極的なコンテキストスイッチの支援 – ハードウェア処理によるオーバーヘッドの削減 – 同一プロセスのスレッド切り替えを高速化
  • 11.
    ハードウェアの開発 • コンピュータシステムに必要なハードウェアの 開発 – プロセッサコア – IO/割り込み管理 – メモリ管理 – 各外部デバイスコントローラ • 市販されているFPGAボード上に構築 – シミュレータのみならず実動作可能
  • 12.
    ハードウェアの開発 : 苦労編 •ハンドアセンブル & ハンド逆アセンブルの嵐 • シミュレータが高価 • FPGAが高価
  • 13.
    ソフトウェアの開発について • OSに必要なソフトウェア群の移植 –オープンソースソフトウェアとして開発 • アセンブラ – GNU binutils (gas, ld)を採用 • コンパイラ – GNU Compiler Collection (gcc)を採用 • オペレーティングシステム – ハードウェアの機能を最大限に活用する
  • 14.
    ソフトウェアの開発 : 苦労編 •OSを動かすための機能に関する資料が少ない – MMU,割り込み,IO周りなど – (個人レベルでは)誰もやってない… • GNU binutils (gas), gccが汚い – レガシーコードの山。格闘戦 – 移植に関する資料も少ない • プロセッサができないとデバッグ・評価できない – 資料を考えている時が一番楽しい。実装は…
  • 15.
    ロードマップ 2012年8月 その後 • 各仕様のリリース • プロセッサ/OSのチューニン • ハードウェア グ – プロセッサコア • マルチコア化への対応 – IO/割り込み管理 • 多彩なデバイスへの対応 – メモリ管理 • チップ化や専用ボードの製 – 外部デバイスコントローラ 作 • オペレーティングシステム – 基本的な外部デバイスとの 通信 – マルチタスクに対応