フォト
2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

« Propeller始めました(5) Parallax社純正ボードを購入 | トップページ | Propeller始めました(7) DIP版 最小構成の実装 »

2015年11月19日 (木)

Propeller始めました(6) 演算用レジスタが存在しない

Propeller のデータシートを読んでいて演算用レジスタが無いことに衝撃を受けました。

8コアのそれぞれにあるRAM(2kバイト)領域において、
   mov アドレス1,  アドレス2
   add  アドレス1,  5

      ・・・・

といった具合に、レジスタを介さずに領域間で処理できます。

実際にはアセンブラではラベルを利用するので、
   mov my_value,  your_value
   add 
my_value,  5
     ・・・・
my_value   res 1
your_value res 1

と可読性が良くなります。
発想を変えると無いのではなく、各コア上のRAM領域が全てレジスタとも言えます。
32ビットCPUなので512個がレジスタとなります。
メインRAM間での直接演算や転送は出来ず、必ずコア上のRAMを経由しないと
いけないようです。

レジスタが512個もあるので、値を退避する必要がなく、POP/PUSH命令が存在しません。
レジスタを意識する必要もなしです。

では、割り込み処理等はどんな挙動になるのか(通常ならレジスタ退避とかやるので)
疑問に思い調べてみると、なんと、このプロセッサは割り込み機構を持っていません。
その変わり異常に高機能なwait命令群や、同期をとる命令やレジスタが存在します。
まだ勉強不足ですが割り込みのようなイベント処理は、高度な条件付きwaitを使って
別コアの実行の停止・再開を制御して実装しているのだと思われます。

精度の高いwait命令使ってループさせればインターバル処理や、ポーリングによる
データ受信や変化の検出が可能ですね。処理は別コアに振れば分けですし。
他のコアにイベントを発生させられますね。
色々と斬新なプロセッサです。

« Propeller始めました(5) Parallax社純正ボードを購入 | トップページ | Propeller始めました(7) DIP版 最小構成の実装 »

Propeller」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/62704444

この記事へのトラックバック一覧です: Propeller始めました(6) 演算用レジスタが存在しない:

« Propeller始めました(5) Parallax社純正ボードを購入 | トップページ | Propeller始めました(7) DIP版 最小構成の実装 »