Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
Software Development
>
Open MGL
>
Wiki
>
開発メモ/アセンブラ/その他
Open MGL
Fork
open-mgl
msl
test
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Git
open-mgl
msl
test
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
Forums
List of Forums
討論フォーラム (0)
質問フォーラム (0)
Mailing Lists
list of ML
News
edit
|
Title Index
|
Recent Changes
|
Recent Changes
2014-02-12
パスの設定
AF2_tutorial2
2011-04-20
Memo
2010-06-01
Roast
2009-12-12
Roast_License
2009-12-04
Roast/math
Latest File Release
open-mgl-dev (開発バージョン) (0.7.9.80)
2009-11-02 22:25
open-mgl (DirectX9, VC++2008) (0.7.9)
2009-09-27 20:32
roast-dev (開発バージョン) (0.0.1.40-dev)
2009-11-02 23:09
Wiki Guide
Wiki Syntax
Wiki Links
Block Processor
Plugins
Sidebar
Affiliate Setting
Side Bar
About this Sidebar
Edit Sidebar
>
FrontPage
>
開発メモ
開発メモ/アセンブラ/その他
共通
大体の最近のx86プロセッサ(少なくともIntel系)。ALUが3つ(Pen4は4つ)、Load/Storeが1つ。詳しくは
ここ
を見て。
AMD系に関しては調べてないが、一部の資料を見る限り、そんなに変んねーんじゃねーかなー。と言う気がする。(基本的に追随状態?)
普通のアセンブラ
nopってALUで処理されるらしい。面白い。
「mov edx, a; nop; nop; nop」が1命令辺り0.25クロック(つまり左のコード全てが1クロックで終わる)、それに対し「mov edx, eax; nop; nop; nop」が0.33クロック。・・・かと思えば、「mov edx, a」の連続が1クロック、に対し「mov edx, eax;」の連続が0.33クロックで終わる・・・よくわからない・・・
ふと思った。もしかしてレジスタ同士のmovってALUでやってる・・・?そうか。「mov edx, a;」はLoad。「mov edx, eax」はALUでやってALUは3基あるから最大0.33か・・・なるほどなるほど。
「mov esi, a; mov eax, edx; mov ebx, edx; mov ecx, edx;」これが全部1クロック(つまり一つ辺り0.25クロック)で終わった。やっぱ↑で正しいっぽい。
SIMD命令
movapsは1クロックだがmovupsは2クロック
movapsの場合も、普通のアセンブラのmov同様、XMMレジスタ同士の場合にはALUで処理されるらしく、最小0.33CPIいける。
最小でも1クロック掛る命令(試してみた奴)
mulps(パックド浮動小数点乗算x4), addps(パックド浮動小数点加算x4), pmuludq(パックド符号なしダブルワード整数を乗算)
最小0.5クロック
paddb(パックド整数加算x4)
難しい奴は1クロック。簡単な奴であれば0.5クロックで行けるのもある・・・ってことかな・・・?(難しい奴はALU3つを駆使して計算するとかかもしれない)
二つ目の引数としてメモリ上の変数を指定できる命令。
・・・絶対メモリ上の変数を指定する事無かれ。180clockくらい掛るwwww
(mov系は除く)(なんでこんな掛るんだろね・・・幾らなんで掛りすぎだろ・・・)一度xmmに入れてから計算すべし・・・