吉田/日誌/2009-02-23
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[吉田/日誌]]
*何気に来週はもう3月ですぜ*
&size(18){>[[パルテノンなアレ>第14回ASICデザインコンテスト]]};
-現状改良案(2009年2月23日-11:42)
++負値の展開(a+(-b)→a-bとか)
++再帰時(レジスタ退避時)の無駄なST&LDを消したい。
---むしろ再帰を展開できないか。
++比較演算の書式の見直し('>',LE)
---比較を「0 or 1」ではなく「0 or !0」に変えた。
---「0∈bpl」らしいので'、'<','>',をbmiで、GE,LEをbplで記述。
++比較処理後、対象変数の値を復帰、もしくは始めから保護したい。
---forなどのループ内での比較は比較対象文字をループ内で使うことが多いので。
++同スタック位置にある値を複数回呼び出すときの書式を以下略
---スタックロード時、addi→ld→subi→addi→ld→subi・・・とかがウザい。
---解決法は未定。
++配列アドレスの添字の最適化。
---変数を[a-z]ではなく、[0-25]だとコンパイラ内で処理するイメージ?
---例:z[i-1] → *z-1[i]→ y[i] < 配列内のインデックス計算が省ける
++ループアンローリング
---良い展開法が浮かんだら。
-今日?の成果
--*r15に不備があったようなのでしばらくはr14ベースで進行
--比較の書式改良(sortのクロックが17066→16686に)
---A<B → A-B<0
---A>B → B-A<0
---A<=B → B-A>=0
---A>=B → A-B>=0
--*r15は論理合成はできるがシミュレーションができないだけだった(zxp005では不可なのか
--配列アドレス添字最適化
---うまく動かないので保留。なーぜだー
Pnode *aid(int i, Pnode *c, int adsb);
expr:
...
| VARIABLE '[' const ']'
{ $$ = opr( ARD, 2, $3, id($1) ) ;}
| VARIABLE '[' VARIABLE ']'
{ $$ = opr( ARD, 2, id($3), id($1) ) ;}
| VARIABLE '[' VARIABLE '+' const ']'
{ $$ = opr( ARD, 2, id($3), aid($1,$5,1) ) ;}
| VARIABLE '[' VARIABLE '-' const ']'
{ $$ = opr( ARD, 2, id($3), aid($1,$5,0) ) ;}
--比較処理後に上書きされた比較用変数の値を復帰。
---新たに追加した変数ロード用命令(ldvl)のおかげでやってもやらなくてもクロック変わらず。
--再帰時の、レジスタ数x2回のスタックロード・ストアを専用命令で命令数半分とか
---新命令x2に伴う消費電力増加に見合う効果があるかどうか
--Bo有頂天で脳が溶ける。
--再帰の展開
---やりかたはこれかーらー
a=foo(5);
halt;
int foo(int arg) {
if(arg < 1) return arg;
return arg + foo(arg-1);
}
これが、
a = 5+4+3+2+1+0;
こうだから、
arg=5;
a=arg;
for(i=a-1;i>=0;i--)
a = a + i;
こんなん。
---仮にこの形になるとクロック508→164(厄3倍)に。なんという皮算用。
--無為に過ぎる時間にも、きっと意味はありますとも。
--
--
-空もこんなに明るいから、
--
#comment
終了行:
[[吉田/日誌]]
*何気に来週はもう3月ですぜ*
&size(18){>[[パルテノンなアレ>第14回ASICデザインコンテスト]]};
-現状改良案(2009年2月23日-11:42)
++負値の展開(a+(-b)→a-bとか)
++再帰時(レジスタ退避時)の無駄なST&LDを消したい。
---むしろ再帰を展開できないか。
++比較演算の書式の見直し('>',LE)
---比較を「0 or 1」ではなく「0 or !0」に変えた。
---「0∈bpl」らしいので'、'<','>',をbmiで、GE,LEをbplで記述。
++比較処理後、対象変数の値を復帰、もしくは始めから保護したい。
---forなどのループ内での比較は比較対象文字をループ内で使うことが多いので。
++同スタック位置にある値を複数回呼び出すときの書式を以下略
---スタックロード時、addi→ld→subi→addi→ld→subi・・・とかがウザい。
---解決法は未定。
++配列アドレスの添字の最適化。
---変数を[a-z]ではなく、[0-25]だとコンパイラ内で処理するイメージ?
---例:z[i-1] → *z-1[i]→ y[i] < 配列内のインデックス計算が省ける
++ループアンローリング
---良い展開法が浮かんだら。
-今日?の成果
--*r15に不備があったようなのでしばらくはr14ベースで進行
--比較の書式改良(sortのクロックが17066→16686に)
---A<B → A-B<0
---A>B → B-A<0
---A<=B → B-A>=0
---A>=B → A-B>=0
--*r15は論理合成はできるがシミュレーションができないだけだった(zxp005では不可なのか
--配列アドレス添字最適化
---うまく動かないので保留。なーぜだー
Pnode *aid(int i, Pnode *c, int adsb);
expr:
...
| VARIABLE '[' const ']'
{ $$ = opr( ARD, 2, $3, id($1) ) ;}
| VARIABLE '[' VARIABLE ']'
{ $$ = opr( ARD, 2, id($3), id($1) ) ;}
| VARIABLE '[' VARIABLE '+' const ']'
{ $$ = opr( ARD, 2, id($3), aid($1,$5,1) ) ;}
| VARIABLE '[' VARIABLE '-' const ']'
{ $$ = opr( ARD, 2, id($3), aid($1,$5,0) ) ;}
--比較処理後に上書きされた比較用変数の値を復帰。
---新たに追加した変数ロード用命令(ldvl)のおかげでやってもやらなくてもクロック変わらず。
--再帰時の、レジスタ数x2回のスタックロード・ストアを専用命令で命令数半分とか
---新命令x2に伴う消費電力増加に見合う効果があるかどうか
--Bo有頂天で脳が溶ける。
--再帰の展開
---やりかたはこれかーらー
a=foo(5);
halt;
int foo(int arg) {
if(arg < 1) return arg;
return arg + foo(arg-1);
}
これが、
a = 5+4+3+2+1+0;
こうだから、
arg=5;
a=arg;
for(i=a-1;i>=0;i--)
a = a + i;
こんなん。
---仮にこの形になるとクロック508→164(厄3倍)に。なんという皮算用。
--無為に過ぎる時間にも、きっと意味はありますとも。
--
--
-空もこんなに明るいから、
--
#comment
ページ名: