goo blog サービス終了のお知らせ 

組み込まれたエンジニア

我輩は石である。名前はまだ無い。

EEEPCのキーボード

2008-08-29 08:55:09 | Weblog
106キーボードを「日本語キーボード」など誤称する連中がPC業界の大半を占める状況のため、一般ユーザーが英語より日本語として誤った選択をするため、日本で販売されるPCの大部分は106系のキーボードが搭載されるというお馬鹿な状況である。

EEEPCもHP2133も同じであり、日本販売分は106系のキーボードになってしまった。
では、海外のものを買ってくればいいかというと、EEEPCはワールドワイド保証ではないという罠が待っている。

EEEPCの901Xは良さそうなのに、106というノートPCとしては致命的に使いづらいキーボードなので手が出せないでいたが、昨日、「US配列のキーボードが売っているようだ」という情報をK氏から得た。

早速、見に行くと、確かに6千円ほどで売られている。この値段なら・・と思ったが、本体の1割というのはちょっと高価か?と躊躇。

利用者の話はないかと、検索してみたら、あるブログでEbayから購入したという話が出ていた。

そこで、Ebayに見に行ったら、EEEPCのUS配列キーボードが$7.8である。
これで、送料が高かったら意味ないが、送料を見ると、$9.0ということで、結局、$16.8で手に入る。

ぉぉ、すばらしい~!

と、思わず、Ebayの業者に応札してしまった :0

本体を持っていないのに・・

この業者、対応が早く、即日に「発送完了」のメールが着た。

LSI/CPU設計の講習会開催

2008-08-21 14:10:17 | Weblog
第16回Parthenon講習会の開催案内

下記のとおりSFL/Parthenon入門者向け講習会を開催します。
皆様のご参加をお待ちいたします。
また知人・関係者にご回覧いただけますようお願いいたします。


Parthenon講習会の開催案内


日時;平成20年8月27日(水)~29日(金)
会場;東海大学高輪キャンパス
参加費;学生は無料、会員は1万円
懇親会;8月28日(参加費・実費相当)
詳細はWebをご覧下さい。


SS版 SN/X更新

2008-07-31 22:44:37 | Weblog
今週で一連の講義は一応終了したのだが、Qパイプの分岐予測が気持ち悪かったし、少なくともQパイプのBZ命令の予測ミスの処理はバグっていることを確信していたので、多少修正。

修正のポイントは、分岐予測を同一クロックスロットでの予測と考えることで対応。(つまり、同一読み出し単位に二つの分岐が入ると、エントリの競合による性能低下を起こすが、普通はないことなの無視)


1)QパイプBZ命令not takenのtaken予測ミスの処理は、PCとの比較対照をQパイプの次命令アドレスとする(Pパイプと同一)

2)Qパイプのtaken予測ミス時にも、分岐予測バッファへの登録を行う。

これによって、ソートの例題で、11256クロックから10838クロックと400クロック以上の大幅な性能向上を得た。(もちろん、実行結果は同一)

先日のファイルに上書きしたので、ダウンロードは、ここ(IP ARCH, Inc.)から。

VISTAのWindowsディレクトリ

2008-07-25 11:34:57 | Weblog
sfl2vlのライセンスファイルをWindowsディレクトリに入れたが、なぜか古いファイルに置き換えられて、新しく入れたものにならない?
何度、古いファイルを消して入れなおしても同じように、古いファイルが復活する。

おそらく、何かしらの保護機能が働いているのかもしれないが、付き合っていられないので、古いファイルの中身を編集し、新しい内容に入れ替えて使っている。

VISTAって・・・

SN/X スーパースケーラ版

2008-07-24 21:20:25 | Weblog
そもそも、SN/Xはレジスタが少ないので、ほとんど2つのパイプがぶつかり、あまりスーパースケーラの効果はないのだが、サンプルとして作ってみた。

サンプルなので、とりあえず、やっつけ仕事で作ってみたが、まだバグが取りきれていない。アセンブラにも手を入れないと、PパイプでHLTしたときに、Qパイプにハザードデータが読まれて安全に停止できない・・

来週まであまり時間が取れないので、デバッグしていただける方がいたら、ご協力お願いします。


分岐予測と、ロードサプレスの条件が問題でした。とりあえず、解決したつもり。
その他のバグがないとは言い切れませんが・・
(コンパイルには20080717版のsfl2vlが必要です)

スーパースケーラ版 SN/X SFLファイル

同 テストベクトル


分岐予測はPパイプ(メイン側)しかしません。Qパイプでの分岐は必ず予測ミスとして分岐ストールを発行します。メモリはどちらのパイプも任意のアドレスから実行可能としてます。(普通は、アドレス固定するのですが、簡単のため。)
Pパイプでメモリ参照するときには、Qパイプはストールします。
等々、相当サボった実装なので、性能向上の役にはあまり立ちません。

sortの例題でパイプラインのデータキャッシュ付きに比べて、150クロック程度の
向上にとどまっています。

レジスタは4R3Wに変更しています。
LD/STがぶつからないようにしているので、キャッシュは2本のパイプで共用。

SN/Xの割込み、少々変更

2008-07-21 21:13:55 | Weblog
外部信号の同期化はいずれにせよ必要なので、論理修正を行う。
また、メモリ間接分岐で割込み復帰を行うときに、割込みイネーブルは用意したが、同じ枠組みで割込み禁止もできるようにする。

BRI $1, target_vector : 割込み許可
BRI $2, target_vector : 割込み禁止

とした。

例によって、パッチはここ

sfl2vl小変更

2008-07-17 22:45:46 | Weblog
先日、分岐予測のユニットを設計しているときに、SFLの仕様として、

submodule.control_output_term

を論理として参照することは許されているが、

submodule.control_input_term().control_output_term

を参照することが許されていないことに気が付いた。
これ、案外不便なので、この形を許容するようにsfl2vlを変更した。
20080717版からのサポートである。

SN/Xにおける割込みサポート

2008-07-16 16:17:46 | Weblog
テキストの巻末付録にはこっそり割込みをサポートしたパイプラインCPUのソースコードを掲載しているが、それとは、少し違うアーキテクチャで割込みをサポートしてみよう。


  1. 割込みベクタ、割込み時PCの格納先をデータメモリ1,0番地とする
  2. 割込み復帰用にメモリ間接分岐命令(BRI)を作り、この命令で割込み許可を可能とする
  3. ソフトウェア割込み命令(EXR)を追加
  4. 割込み入力信号ピンを追加
  5. リセット時は割込み禁止
  6. アドレス最上位ビットが1のアドレスをIO空間とし、キャッシュしない
  7. 割込み刈取りはソフト責任


などの特徴を持たせる。

割込みピンが追加されていたりするので、テストベンチも変更する必要があるし、命令追加に対応するため、アセンブラにも手を入れなくてはならないが、必要な人は個別に連絡をいただくとして、とりあえず、

SN/Xに割込みを追加するパッチ

と、

割込み付きパイプラインSN/Xのソース

をアップしておこう。

追記:このソースは、割込みがクロック同期であることを前提としています。
実用的にするには、CPU内部で割込み信号を同期化しましょう。

SN/Xデータキャッシュパッチ

2008-07-14 09:45:05 | Weblog
本来ならば明日某所で解説を行った後にブログに載せるのだけれど、一日前倒しで掲載して、明日はこのパッチを用いて解説してしまおう。

SN/Xをパイプライン化したときに、制御ハザードは分岐予測で押さえたが、ロード命令に起因する真のデータハザードは対処していなかった。命令実行のステージで、キャッシュを引くことができれば、他の命令と同じタイミングでレジスタ書き込みが行えるので、データハザードを起こさなくなる。

例題では元々メモリへのアクセス頻度が局所的なので、比較的小容量のキャッシュでOKであり、アドレス計算をしたとしても、小容量のキャッシュアクセスは実行ステージで実施しても遅延の問題は少ないだろう。

フルのキャッシュを用意するのは大変なので、分岐予測ユニットを流用して、ストアデータキャッシュとして利用できるようにしておく。

パイプランSN/X データキャッシュパッチ


snxp.patch~snxp4.patchまで、全てターゲットは snx.sfl にしているが、各パッチはインクリメンタリに作成しているので、順を追って差分を読んでいく方が分かりやすいかもしれない。

7/16追記:
受講生のI氏がロード時にもキャッシュ登録して効果があったので、ロード時登録をするデータキャッシュパッチを作成しておいた。(自分のサンプルはメモリデータはすべてストア命令で作っていたので、あまりロード時登録の効果は多くないかと思っていたが、何しろエントリ数が極少なので、十分な効果が得られる)


パイプランSN/X データキャッシュパッチ2



高円寺:とんかつ&ステーキ 宕(HIRO)

2008-07-09 13:13:09 | Weblog
学生のころ、高円寺に住んでいた。

このところ毎週東京に出ているので、
そのころ(ウン十年前)に訪れた店を訪ねてみた。
宕は私がいた当時はステーキ系のメニューしかなかったが、
とんかつも始めたらしい。もっとも、前の店は、「とんかつ とんき」の
目の前だったので、とんかつでわざわざ競争する必要はなかったのだろう。

そのころ、宕では、サービスステーキ定食が1000円で、
かなりやわらかくてよい肉を使っていたが、再び訪れてみると、
今でもステーキ定食は1000円のままだ。

まるで時間が止まっているかのように、同じ値段で、しかも、
肉もそのころと同じくおいしい♪

そのころ、高円寺に数店展開していたニューバーグは1店だけに
なってしまっているけれど、まだ健在だ。
ローズ亭も店の前まで行って見てきたが、おばちゃんは相変わらずらしい。

高円寺という街、まるで時間が進んでいないかのように懐かしい。

高円寺銀座が「純情商店街」になってしまったのは、いまいちだったが・・

SN/X分岐予測パッチ

2008-07-08 18:39:10 | Weblog
パイプライン化したSN/Xの制御ハザードを低減するために、分岐予測が有効である。

分岐予測は、単純な仕組みで効果がある。

分岐ターゲットバッファをダイレクトマップ4エントリ用意した、分岐予測パッチを作成した。

パッチを当てるときには、

patch -l snx.sfl snxp3.patch -o snxp.sfl


のように、空白の解釈で失敗しないようにオプション設定をすることに注意。

LSIレイアウトソフト:GNU Electric

2008-07-03 20:50:44 | Weblog
LSIレイアウトのフリーソフトで有名なものとして、Magicがある。これは、とても便利だし、軽快なのだけれど、UNIXとXwindowが必須なので、環境によっては実習に使うことが難しい場合がある。

前々からGNU Electricには興味を持っていたが、今年度、ようやく、このソフトでLSIレイアウトの演習にトライしてみた。

演習の内容を大槻氏に演習指導書としてまとめてもらったので、色々と活用できそうだ。


SN/X レジスタ書込みポート 2ポート化パッチ

2008-07-02 19:19:57 | Weblog
レジスタの書込みポートを2ポート化することで、LD命令と後続の演算命令が異なるレジスタに書込みを行うときには同時に実行可能で、ストールを減らせる。

ただ、普通のプログラムを実行するときには関係ないが、LD命令と後続の演算命令が同一のレジスタに書き込もうとすると、レジスタの同時更新となって、データが破壊される。

この場合、先行するLD命令の結果は使わない(後続命令によって上書きされる)ので、LD命令の実行をキャンセルする必要がある。

もちろん、普通はコンパイラはこんなコードを出さないので、チェックの必要性があるのかどうかも疑問だが・・


とりあえず、レジスタ競合の回避パッチを含めた、2ポート化のパッチを用意した。

SN/Xパイプライン化 その2

2008-06-30 14:22:16 | Weblog
パルテノン研究会のASICデザインコンテストの発表が土曜日に行われた。
このコンテストの規定課題は初心者向き課題としてSN/Xの例題パッケージをベースとした課題を出している。

参加者はかなり高度なことを行うようになったので、前回のパイプラインパッチに続き、多少の情報追加をブログベースで行っていく。

今回は、前回のパイプラインよりも、パイプラインストール条件をもう少し厳密にチェックするバージョンのSN/Xパッチファイルを用意した。(前回のパッチは、ロード命令がきたら無条件でストールさせるというかなり乱暴なものだったのだ)
本来は、ロード命令のターゲットを使わない演算はとめる必要がないのだが、もうひとつ、考慮すべきところとして、リソース競合がある。ロードはレジスタ書込みがR型命令に比べ1クロック遅いので、後続命令のレジスタ書込みがロードのレジスタ書込みとぶつかるケースがあるのだ。

SN/X 1.4.2版から1.4.2p1版へのパッチ

対策としては、ぶつからないケースだけを実行するというのもありだが、Eステージの後ろでレジスタに書き込まない命令は少数なので、汎用レジスタを2R2W型にすることで、競合ケースを解消でき、もっと性能向上する。

もちろん、2Wのレジスタポートは多少性能に悪影響が与えられるので、トレードオフを考えて採否を決めるべきである。

本質的なデータハザード(ロード命令の結果を本当に必要とする演算命令によるストール)は避けようがないので、これらの対策を行うと、ハードウェア上の性能向上策としては、コントロールハザードの低減に目を向けるのが正しい。

Drawソフト

2008-06-30 13:04:41 | Weblog
普段、UNIX環境で絵を描くときには、Tgifを使用している。
これでほとんど問題なく利用できているが、Windows環境では相当するDrawソフトがなく、Windowsで仕事を強いられるときには苦しい思いをさせられていた。
Cygwin+XでTgifを動かしていたときもあるが、この環境では使い勝手がいまひとつだったのだ。

TgifはMacDrawとよく似た操作性で、軽快に詳細な図を描く気になるソフトであるが、私の要求は、まともなEPSファイルが出せるDrawソフトで、操作性がまともだったら何でもよいという敷居の低い要件なのに、Windowsで対応するソフトがないのはどういうわけだろう?と不思議に思いながら、そのままにしていた。

再び、Windows環境で絵を描く必要があって、さすがに、もうちょっと何とかしたいと検索したら、どうやらInkscapeというのが良いらしい。

まだダウンロード中で、これから使うつもりだが、使い物になるといいなぁ・・