忍者ブログ

ひま人の活動報告

ゲームやアニメなど、手当たり次第いろいろ綴っていきます。ジャンルがバラバラなのでカテゴリー別で見てください。カテゴリ毎に新着記事を表示します。

HOME • Admin • Write • Comment
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ブログランキング・にほんブログ村へ
応援お願いします。
前回に浮動小数点演算について説明したのは除算のためでした。
実数でないといろいろ問題があるんで

SPUには除算命令ってのがありません。
そのため、複数の命令を使って除算を実現します。

後、浮動小数点を即値でロードする際ですが、0.5とか1.0とか入力しても駄目です。
(何かやる方法があればなぁと思い調査中)
通常(コンパイラ)は、浮動小数点で表した数値と同じbit配置の数値で入力しています。
これも、前もって説明しておけばよかったと反省。
今回は、そんな細かいことは無視して実数をそのまま入力するようにします。
その方が分かりやすいので。

除算プログラムですが、
一度簡単なプログラムを見せてから説明したほうが早いと思うので、
とりあえず見てください。

a = 1.0
b = 0.4
c = a / b を考えます。

il            $5   1.0
il            $6.  0.4
frest      $7,$6
fi            $7,$6,$7
fm         $8,$5,$7

ってな感じで、答えは$8に入ります。
ilってのは単にロードで、
今回は、レジスタ5に1.0を、レジスタ6に0.4をロードしました。
frestですが、これは0.4の逆数を求めています。
つまり、1/0.4です。
しかし、この計算では若干精度が悪いといった問題があります。
そこでfiという命令を使って
より精度の高い逆数を求めます。
$6には元々の実数の値を、$7にはfrestで求めた逆数を入力します。
逆数を求めた結果が$7に格納されます。

fmは前回にも説明した
浮動小数点の乗算命令です。
要は
c = a * (1/b)
を計算しているんですね。

なんで、除算をするのにこんなことをしているのか
これはちょっと、自分も自身はないのですが、
コンピュータには割り算命令がないってのは、最初に説明しましたが
(全部がそうとは限らない(?)自分も分からないのですがPentium 4にもないと聞きました。)

そのため、逆数を求めるテーブルってのがありまして、
そこから逆数の値を求めます。
でもそれだと精度が悪いため、
ニュートンラプソン法を使って、より精度の高い値に収束させます。
恐らく一回しか、計算してないようですが・・・
元々、それなりの値を初期値を入力しているので
1回でも、精度の高い値に収束するみたいです。
このように、精度の高い逆数を求めるのが、fi命令だと思われます。
これを複数回行えばより精度の高い値も出せそうですが
1回でも十分な結果は得られます。

拍手

PR
ブログランキング・にほんブログ村へ
応援お願いします。
浮動小数点とは、
コンピュータの中で実数(小数点)をどのように表現するかの方法で
固定小数点、浮動小数点の2種類がある。
要は実数とだけ思っていただければ問題ないです。
まぁ細かいことは自分で調べてみてください。
実数の加算・減算・乗算は
整数値の場合のときの命令がちょっと変わっただけの

fa      rt,   ra,   rb      加算
fs      rt,   ra,   rb      減算
fm     rt,   ra,   rb      乗算

という感じで、特に整数値の時の命令とレジスタの使い方は大きく変わりません。
命令も先頭に「f」がついて、最後の方の文字が減ってる感じです。

拍手

ブログランキング・にほんブログ村へ
応援お願いします。
前回のおまけ的な感じで
減算と乗算について説明します。
除算はちょっと特殊なのでまたの機会に・・・

減算は
sf   rt,   ra,   rb

乗算は
mpy   rt,   ra, rb

c = a-b,   c=a*bを考えると
a = 1,   b = 2だとすると
li        $4,   1
li        $5,   2
sf       $6,   $4,   $5

li         $4,   1
li         $5,   2
mpy   $6,   $4,   $5

と、それぞれ$6に演算結果がはいる。

ここで注意して欲しいのが
sf, mpyも整数同士の演算用の命令なので、
浮動小数点演算は計算できません。
浮動小数点演算の命令に関しては機会があれば書きたいと思います。
また、今回の命令はワード(32bit)の演算なのでハーフワードでは命令も異なります。

拍手

ブログランキング・にほんブログ村へ
応援お願いします。
PS3にFedora 8をインストールしてから
ほとんど何もしてなかったけど
最近勉強を始めたので少しずつ復習のつもりで書いていきたいと思います。

簡単な命令を説明する前の表記法と規則について説明しておきます。
詳しくはSony Computer Entertainment Inc.より
SPU Assembly Language Specificationを読んでください。

命令の例として
li      rt,   ra,   rb,     rc

ってのがあった場合、
liは命令
rtはターゲットレジスタ。大体はここに演算結果が入る。
演算結果をストアするときには逆になる。
ra,rb,rcはソースレジスタ。これらは演算するときに参照するレジスタとなる。
Cellにはレジスタが128個あります。
レジスタは$で指定して0~127まで使えます。

また、
s3,6,7,10,11,14,16は各ビットの符号拡張される値。
s16の場合、16ビットの値で、正負のどちらも入る。
u7,14,16,18は各ビットの符号なしの値。
u18だと、18ビットの正の値のみ。
同じビット数で正の値しか使わないなら符号なしの方が
より大きい値を使用することが可能。

liは即値のロードで
li   rt,   s16    となっています。
aはワードの加算
a   rt,   ra,   rb

なので、
s = a + bとして
s = 1+2なら

li   $4,   1
li   $5,   2
a   $6,   $4,   $5

とすると、$3に演算結果が入ります。
ちなみに
aiはレジスタの値と即値の加算なので、
計算の値が定数値ならば
li   $4,   1
ai  $6,   $4,2
とすれば、上の演算と同じ結果が入ります。

まだ、この段階では
レジスタに格納されただけで
LS上には格納されてはいないので注意してください。

拍手

ブログランキング・にほんブログ村へ
応援お願いします。
PLAYSTATION®3 Linux Information Siteでの記事で載っていましたが、
PS3のシステムソフトウェア2.1をインストールしてから
20071023版のADDON (Distro Kit 1.5.0)に含まれるLinuxカーネルのkbootが起動しないという問題が発生しているそうです。

すでにFedora 8をインストールしているので問題ないけど
知り合いが、kbootがおかしいと調べてみたらこんな記事があった。
ただkboot自体が動作していたがLinux(Fedora 8)が起動しなった。
これとは別の問題かもしれないけど。

不具合が直るまでは先にkbootをインストールしてからアップデートをした方がいいです。

追記
20071220版のADDON CD が公開されこれなら問題は解消しているそうです。

拍手

ブログランキング・にほんブログ村へ
応援お願いします。
最新記事
プログラム
---------------------------------------------
広告
カレンダー
04 2024/05 06
S M T W T F S
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 31
最新コメント
[12/10 ゴリックス]
[11/27 まよ]
[11/27 まよ]
[05/13 山野たけ]
[04/23 HGG]
最新TB
ブログ内検索
ついったー
GAME
Rewrite 初回限定版
Rewrite 初回限定版
メーカー:KEY
参考価格:¥9,240
価格:¥6,506
OFF : ¥2,734 (30%)


モンスターハンターポータブル 3rd
モンスターハンターポータブル 3rd
メーカー:カプコン
参考価格:¥5,800
価格:¥4,602
OFF : ¥1,198 (21%)


魔界戦記ディスガイア4(通常版) 特典 堕天使フロン プロダクトコード付き特製カード&トレーディングカード「ヴァイスシュヴァルツ」限定PRカード付き
魔界戦記ディスガイア4(通常版) 特典 堕天使フロン プロダクトコード付き特製カード&トレーディングカード「ヴァイスシュヴァルツ」限定PRカード付き
メーカー:日本一ソフトウェア
参考価格:¥7,140
価格:¥5,661
OFF : ¥1,479 (21%)

広告
ランキング
クリックお願いします。 ブログランキング・にほんブログ村へ ブログランキング【くつろぐ】
バーコード
アクセス解析
Copyright ©  -- ひま人の活動報告 --  All Rights Reserved
Designed by CriCri / Material by もずねこ
忍者ブログ  / Powered by [PR]