open design computer project
TRANSCRIPT
Open Design Computer Project
○伊藤 剛浩 川田 裕貴
http://open-arch.org/
Open Design Computerとは
• Open Design
–仕様, 開発ツール,OS,ハードウェアを公開
–全て自由に利用可能(2次利用が可能)
–様々な製品へ転用可能
• ユーザ視点からみた Open Design Computer
–より高速に動作するコンピュータ
–なおかつ低消費電力動作
このプロジェクトでの提案
• ハードウェアとソフトウェアの協調設計
–ハードウェアとソフトウェアの機能整理
–ゼロからのコンピュータシステム設計
開発動機
1, 既存のコンピュータシステムの問題点
ハードウェアとソフトウェアの連携による解決
2, 既存のプロセッサコアの問題点と解決方法
既存のコンピュータシステムへの不満
• プロセッサ
–高速化を妨げる要因を排除したい
–全く使用されない命令や機能が多く存在
• オペレーティングシステム
– ソフトウェア側で実行している機能をハードウェア側に持たせたい
– もっと柔軟にハードウェアの機能を工夫・変更したい
既存のコンピュータシステムの問題点
• ハードウェアの仕様による性能低下
– x86 : タスク切り替え機能の実装が難有り
– MIPS : MMUがほぼソフトウェアにて実装
• 割り込み処理による処理の中断
• マルチスレッドアプリの増加によるコンテキストスイッチのオーバーヘッドの問題
ハードウェアとソフトウェアの連携
• レジスタ退避におけるキャッシュの有効活用
• コンテキストスイッチのハードウェア実装
• 割り込みを複数用意してレベルを設ける
• 既存システムにあるムダを無くす
クロックの向上に拠らない性能向上
ハードウェアの支援による解決
• 割り込みシステムの設計を見直す
–割り込みレベルを設ける
–割り込み実行タイミングの制御
• 積極的なコンテキストスイッチの支援
–ハードウェア処理によるオーバーヘッドの削減
–同一プロセスのスレッド切り替えを高速化
既存のプロセッサコアの問題点
• ミドルエンド~ハイエンドプロセッサコアの問題 – ARM : 複雑なCC実行
– SPARC : レジスタウインドウ
– x86 : 現在では不要な命令群
– MIPS : ディレイドブランチ
– SuperH : ディレイドブランチ
• 高速実行に不向きな命令セット –アウトオブオーダに不向き
製作中のプロセッサコアでの解決方法
• アウトオブオーダ実行に適した設計
–命令セットの最適化
–汎用レジスタ・システム系レジスタを命令レベルで区別
• アウトオブオーダ実行の弱点を克服
–比較的小さい回路規模で実現可能
–低消費電力動作で性能向上を実現
開発と方針について
1, 開発担当
ハードウェア開発の詳細
ソフトウェア開発の詳細
2, 現状と今後の予定
開発担当
• ハードウェア(伊藤 剛浩) – プロセッサ
– コンピュータとして必要な周辺デバイス
• ソフトウェア(川田 裕貴) – オペレーティングシステム
– コンパイラ, アセンブラ, シミュレータ
共にゼロからの協調設計
ハードウェアの開発
• コンピュータシステムに必要なハードウェアの開発 –プロセッサコア
– IO/割り込み管理
– メモリ管理
–各外部デバイスコントローラ
• 市販されているFPGAボード上に構築 –シミュレータのみならず実動作可能
ソフトウェアの開発について
• OSに必要なソフトウェア群の移植 – オープンソースソフトウェアとして開発
• アセンブラ – GNU binutils (gas, ld)を採用
• コンパイラ – GNU Compiler Collection (gcc)を採用
• オペレーティングシステム – ハードウェアの機能を最大限に活用する
現状
ハードウェア
• 開発中
– 仕様の策定
– プロセッサコアの改良
– IO管理ユニット
• 今後
– メモリ管理ユニット
– 割り込み管理ユニット
ソフトウェア
• 開発中
– アセンブラ
– シミュレータ
• 今後
– コンパイラ
– オペレーティングシステム
ロードマップ
2012年8月
• 各仕様のリリース
• ハードウェア – プロセッサコア
– IO/割り込み管理
– メモリ管理
– 外部デバイスコントローラ
• オペレーティングシステム
– 基本的な外部デバイスとの通信
– マルチタスクに対応
その後
• プロセッサ/OSのチューニング
• マルチコア化への対応
• 多彩なデバイスへの対応
• チップ化や専用ボードの製作