Open Design
Computer Project
川田裕貴
自己紹介
@hktechno
川田 裕貴 (かわた ひろたか)

筑波大学 情報学群 情報科学類 2009年度 AC
2011年度 未踏IT人材発掘・育成事業
Open Design Computer Project
  ソフトウェア開発担当
コンピューターを作った
魔法のデバイス FPGA

自由に回路を
書き換え可能な IC
ハードウェア記述言
(HDL)で回路を記述


主な用途
プロトタイプ
小ロットのチップ
Open Design
Computer Project とは

     オープンソース
 開発ツールが揃っている
    低消費電力向け
    FPGAに構築可能
mist32 アーキテクチャ

アウトオブオーダー実行
 回路規模は大きくなるが速くなる

ハードウェアとソフトウェアの協調動作
 OS を支援する機能をたくさん載せる

独自の命令セット
 アウトオブオーダー実行に最適化
アセンブラとバイナリ
00000470 <genrand_int31>:
 470:   11 00 03 c0   push rbase
 474:   11 00 03 e0   push rret
 478:   18 00 03 c0   srspr rbase
                                         32bit
 47c:   0e e0 03 a0   lih rtmp,0x0
                                         addr
 480:   0d 40 47 a0   wl16 rtmp,0x220
 484:   20 70 03 e2   movepc    rret,8
 488:   14 40 03 a0   b     rtmp,#al
                                          call
 48c:   08 30 00 01   shr r0,0x1
 490:   12 00 03 e0   pop rret
 494:   12 00 03 c0   pop rbase          return
 498:   14 40 03 e0   b     rret,#al
mist32 の位置づけ (目標)
 性能の目安→
↑ビット数
セキュリティとか

カーネル空間をページテーブルごと隔離
 プロセスページ空間全てにカーネル空間を
 マップする必要がなくなる


NX bit と同等の機能
 ページごとに実行可能フラグを持つ
 最近はあたりまえ?
いままで

PDTR
             カーネル空間は、
ユーザー空間       どのプロセスからも
- プロセスごと     見える
-----
カーネル空間       いろいろできる!
- 割り込みハンドラ
- システムコール
これからのページング

PDTR       KPDTR

ユーザー空間     カーネル空間
           - 割り込みハンドラ
- プロセスごと
           - システムコール


 メモリ空間を分離させることができる!
不用意にカーネル空間へアクセスされない
開発規模について

MIST1032SAプロセッサ + ペリフェラル
 行数 : 81,000行
 使用LE : 101,800LE

開発環境
 GCC : 3,100行
 binutils(gas, ld) : 1,800行
 シミュレータ : 1,500行
 Newlib : 1,000行
FPGA に
  入りきらない...


/(^o^)\
これから...

インオーダーコアの制作
 とりあえず規模の小さいものも作る

回路規模の縮小化
 DE2-115 デモボードに乗るようにする

OS をはやく載せられる状態に
 GCC のバグつぶし、支援機能テスト
ものの公開場所
Web サイト
 http://open-arch.org/

プロセッサ
 http://github.com/cpulabs/

ソフトウェア
 http://github.com/techno/
さいごに...
Verilog HDL 狂の CPU 好きと
OS とかいじってた人が
出会うとこんなことができます

仲間は大事です
探しましょう
出会いは大切に
ありがとうございました

seccamp2012 チューター発表