So you think AMD extended the register file just for fun?
I think the AMD register file extension was unnecessary, yes. They did it because they could, and it wasn't a big deal.
Hell, the "PAE crud" is the *same* problem as the tiny register file. Insufficient virtual address space leading to physical > virtual kludges.
Nope. The small register file is a non-issue. Trust me. I do work for transmeta, and we do the register renaming in software, and it doesn't matter in the end.
Mantleは当て馬? (スコア:0)
MSの発表を見る限り、中身はほぼAMDのMantleにしか聞こえないのだけど
MantleのAPIは未定義 [impress.co.jp]で開発任せな現状らしいので
AMDは始めからMSにDX12を作らせる目的でMantleを発表したのではないか、と思ってしまう。
DX12の後ろにいるのはAMDのようだし。
Re: (スコア:0)
リンク先には
Mantleはやっかいで、何も定義されてない。ゲーム機のAPIと似てはいるけど互換じゃない。
とは書いてありますが、APIが未定義とは書いてないように思いますが…。
実際、Wikipediaには
Mantle is a graphics API specification developed by AMD as an alternative to Direct3D and OpenGL, primarily for use on the PC platform.
とあります。
「Mantleはやっかいで、何も定義されてない」という記載は意味不明です。
というか、専門家気取りの半可通がいいかげんなことを言ってる記事で、ARM 32-bitの箇所とか、読んでてこっちが気恥ずかしくなってきますね。
Re: (スコア:0)
確かにこれはひどいね。素人以下。
Re: (スコア:2)
なるほどわからん。
レジスタ不足だから、主記憶に退避でもしているのだろうか。
Re: (スコア:0)
レジスタに割り付けられないローカル変数はスタックフレーム(主記憶)に割り付けられる、が、ARM の仕様でそれほと問題になることは実際大してない。thumb ならまた別だが。
Re: (スコア:0)
確かに生成されたコードを見ると、レジスタが足りなくてロード、ストアが頻出するってことは少ない気はする。
ただ、x86-64の例を見ると、汎用レジスタが増えるのはやっぱり効いてくるんではないかと思う。
Apple A7の性能向上も64-bit化自体が効いてるとは考え難いし。
Re: (スコア:0)
ただ、x86-64の例を見ると、汎用レジスタが増えるのはやっぱり効いてくるんではないかと思う。
IA-32 → x86-64 で汎用レジスタが何個から何個になったかご存知?
Re: (スコア:0)
知ってるけど、それが何か?
もともとCISCの設計思想、かつスタックベースの命令が多いx86と、
RISCの流れのARMとのレジスタの絶対数を比較してもあんまり意味が無いんじゃない?
PPCやMIPSは32本のGPRを持ってるよね?
あとA7については憶測だけど、レジスタの増加がパフォーマンスに全く効いてないとは考え難い。
コンパイラで使うレジスタの数を制限するフラグでもあれば比較できて面白いかも。
Re: (スコア:0)
もともとCISCの設計思想、かつスタックベースの命令が多いx86と、
RISCの流れのARMとのレジスタの絶対数を比較してもあんまり意味が無いんじゃない?
汎用レジスタはいくつくらいあればまあ不足はないかというのを判断するのにRISCもCISCもあんま関係ないのでは?
「スタックベースの命令が多いx86」ということだけど、汎用レジスタ上にデータ置くのとスタックフレーム上に置くのとで違いがないのであれば(あり得ないが)、x86-64 で汎用レジスタの数を増やしたメリットはないですね。
Re: (スコア:0)
x86のシステムレベルのアセンブリコード書いたことある?
オフトピだからこれで最後にするけど、x86はメモリアクセスの遅延の影響を避けるために相当の資源を割いているよね。
レジスタリネーミングはご存じ?
実際のレジスタの数は、その辺のRISCよりよほど多いんじゃなかろうか。
Re: (スコア:0)
アセンブリコードとか言いながらレジスタリネーミングとか片腹痛い
レジスタリネーミングでマシン語プログラミングが楽になったら驚きだ。
あなたの行っている「x86のシステムレベルのアセンブリコード」が プロセッサの実装で、
レジスタリネーミングのついでに命令発行をバイパスしてやったぜ!とか言うなら脱帽ですが。
そうじゃないならレジスタ退避で命令発行ポートストールされてろ
Re: (スコア:0)
アセンブリコードとか言いながらレジスタリネーミングとか片腹痛い
レジスタリネーミングでマシン語プログラミングが楽になったら驚きだ。
アセンブリコードの件は、x86の作法で書けばそんなにレジスタが要らない理由が分かるはずと思ったんだけどね。
まあ、それでもレジスタリネーミングで楽にはなるよ。適当に書いてもそれなりのパフォーマンスが出るからね。
Re: (スコア:0)
コードサイズと実行効率の両方でどの程度レジスタ数があれば適当かというアーキテクチャデザインの話と、少ないレジスタ数でも実行効率を引き出せるよう仕組みを実装するという話はそもそも話題として噛み合ってないことは理解できるかな?
x86-64で汎用レジスタが追加された事実を思い出せば、
アセンブリコードの件は、x86の作法で書けばそんなにレジスタが要らない理由が分かるはずと思ったんだけどね。
まあ、それでもレジスタリネーミングで楽にはなるよ。適当に書いてもそれなりのパフォーマンスが出るからね。
自分がどれだけ馬鹿なこと言ってるかも理解できると思うけどね。
Re: (スコア:0)
コードサイズと実行効率の両方でどの程度レジスタ数があれば適当かというアーキテクチャデザインの話と、少ないレジスタ数でも実行効率を引き出せるよう仕組みを実装するという話はそもそも話題として噛み合ってないことは理解できるかな?
Linusの発言は読んでくれたかな?
重要なのは実際の性能であって、どんなテクニックを使ってでも、
結果的に少ないレジスタで最高の性能が出せるなら、それが現時点での適切なレジスタ数じゃないのかい?
x86-64で汎用レジスタが追加された事実を思い出せば、
アセンブリコードの件は、x86の作法で書けばそんなにレジスタが要らない理由が分かるはずと思ったんだけどね。
まあ、それでもレジスタリネーミングで楽にはなるよ。適当に書いてもそれなりのパフォーマンスが出るからね。
自分がどれだけ馬鹿なこと言ってるかも理解できると思うけどね。
自分はGPRを増やすのが無駄だとは一言も言ってないけどね。(Linusはx86-64には不要だったと言ってるけど。)
ただ、x86-64の例を見ると、汎用レジスタが増えるのはやっぱり効いてくるんではないかと思う。
Re: (スコア:0)
x86は8→16だからものすごく意味があるけど、ARMの15→31は意味が薄いと言いたいです。
必須レジスタ数(アキュムレータ、スタック、ベース、ついでにインデックスとか)除いた残りレジスタ数へのインパクトが違う。
だから、ARMの話にx86 の例を関連づけてほしくない。
あなたの反論は当を得ていない様に思う。なので以下は枝葉の話題。
レジスタ数が少なくてもやっていけるのは豊富なアドレッシング(メモリ直接とか、有り余るほどの間接アドレッシングとか)のおかげであって、
その辺は ISAとか CISC/RISC の話。
レジスタリネーミングはアウトオブオーダ実行を効率よく行うための実装
Re: (スコア:0)
x86は8→16だからものすごく意味があるけど、ARMの15→31は意味が薄いと言いたいです。
それでは、なぜ64-bit ARMではISAを変えてまでレジスタを増やしたの?
他のRISCの多く(PPC, MIPS, Alpha, etc.)が32本のGPRを提供してるのに、なぜ32-bit ARMは15本で足りるの?
SHが16本って話が出てたけど、その記事にはこう書かれている:
すなわち組み込み用途で使われるほとんどのプログラムの実行にはレジスタが16本あれば足りる,よりたくさんのレジスタを必要とするマルチスレッド処理は多くないといった事実である。
これは逆に、組み込み用途以外では16本では足りないってことじゃないの?
必須レジスタ数(アキュムレータ、スタック、ベース、ついでにインデックスとか)除いた残りレジスタ数へのインパクトが違う。
ってことはさ、IA-32の純粋なGPRは8本より更に少ないんだよね。それでもデスクトップからサーバーまでトップクラスの性能を保ってきたわけだ。その理由は考えた?
だから、ARMの話にx86 の例を関連づけてほしくない。
自分からすれば、これは逆。x86は少ない(ISA上の)レジスタでもやり繰りできるように改良されてきた。Linusの言葉を借りれば、
So you think AMD extended the register file just for fun?
I think the AMD register file extension was unnecessary, yes. They did it because they could, and it wasn't a big deal.
Hell, the "PAE crud" is the *same* problem as the tiny register file. Insufficient virtual ad
Re: (スコア:0)
レジスタ数増加によるレジスタ待避のための命令割合の削減が、x86 の場合と ARM の場合では
ドラスティックに違うんじゃないか、質として別物なので同レベルで比べる物ではないと主張しているつもりで
「あなたの反論は当を得ていない様に思う」と書いたのに、IA-32のレジスタは足りていると言われても論点がずれているとしか。
今時のx86の実行性能を否定する気はこれっぽっちもありませんし、各論はそのとおりだと思いますが
他サイトの話までもってきた SH のレジスタ数 16本。
あれ組み込み用なので、コードサイズ削減のために 16本にする必要があったし、それこそが他との差別化になった。
ARMv8 は組み込み用途以外もねらうので、15本にとどめる理由はないじゃないですか。
ROMやメモリ空間が足りない時代じゃないですよ。
だから、ARMの話にx86 の例を関連づけてほしくない。
自分からすれば、これは逆。x86は少ない(ISA上の)レジスタでもやり繰りできるように改良されてきた。Linusの言葉を借りれば、
So you think AMD extended the register file just for fun?
I think the AMD register file extension was unnecessary, yes. They did it because they could, and it wasn't a big deal.
Hell, the "PAE crud" is the *same* problem as the tiny register file. Insufficient virtual address space leading to physical > virtual kludges.
Nope. The small register file is a non-issue. Trust me. I do work for transmeta, and we do the register renaming in software, and it doesn't matter in the end.
Linusの意見はちょっと極端だとは思うが、少ない(ISA上の)レジスタでも様々な用途のアプリケーションを十分こなしてきたのは紛
Re:Mantleは当て馬? (スコア:0)
レジスタ数増加によるレジスタ待避のための命令割合の削減が、x86 の場合と ARM の場合では
ドラスティックに違うんじゃないか、質として別物なので同レベルで比べる物ではないと主張しているつもりで
「あなたの反論は当を得ていない様に思う」と書いたのに、IA-32のレジスタは足りていると言われても論点がずれているとしか。
質が違うのはそうだろうけど、
汎用レジスタはいくつくらいあればまあ不足はないかというのを判断するのにRISCもCISCもあんま関係ないのでは?
x86は8→16だからものすごく意味があるけど、ARMの15→31は意味が薄いと言いたいです。
は、単純化しすぎて一面しか見てないでしょう。だから自分は、まずISAの違いとして、
メモリ上の値を(見かけ上は)直接変更できる命令セットと、
レジスタ上にロードしないと何もできないRISCで必要となるレジスタ数が同じと考える方がおかしい。
それから実装上の最適化として、
レジスタリネーミングはご存じ?実際のレジスタの数は、その辺のRISCよりよほど多いんじゃなかろうか。
を挙げ、またLinusの発言を引用し、レジスタ数がISA上少ないことが既にあまり問題でないことを述べてます。
ただ、IA-32→x86-64でのレジスタ増加の影響が、ARMとは条件が違いすぎて参考にならないというのであればそれはそうかもしれません。
他サイトの話までもってきた SH のレジスタ数 16本。あれ組み込み用なので、コードサイズ削減のために 16本にする必要があったし、それこそが他との差別化になった。
SHの話は、このタレコミのコメントで、
既存のプログラムを調査した結果、汎用レジスタは16個あれば大抵の用途では足りないことはない
http://developers.srad.jp/comments.pl?sid=627062&cid=2569047 [srad.jp]
というのがあったので、16本で足りるのは組み込み用途に関してということだったことを述べただけです。
ARMv8 は組み込み用途以外もねらうので、15本にとどめる理由はないじゃないですか。
ROMやメモリ空間が足りない時代じゃないですよ。
ARMのGPRが15本で足りたのは組み込み用途だったからというのであれば、特に異論はありません。
だから、ARMの話にx86 の例を関連づけてほしくない。
ですから、
x86は8→16だからものすごく意味があるけど、ARMの15→31は意味が薄いと言いたいです。
こんなことは言わずに、ただx86の事例は参考にならないというのであれば、納得します。
ただ、x86-64の例を見ると、汎用レジスタが増えるのはやっぱり効いてくるんではないかと思う。
のACさんですよね?なんで x86はレジスタが少なくてもいい、ARM は必要だっていいながら、
A7 のパフォーマンスアップにx86-64 のレジスタ増加の例を引いてくるの?
偉そうな事書いてますが、あなたの主張はどこにあるのですか?
x86-64とA7の話はつながってません。単にレジスタ増加の影響の事例として2つを挙げただけです。
私はLinusの話は引用してますが、x86-64に関してもレジスタの増加が無駄だったとは言ってません。
ただLinusの発言からその効果は限定的だろうと予想され、また実際に、純粋なGPRの数としては3倍になったのに、
特定のアプリケーションで大幅な性能向上はあったかもしれませんが、平均的にはそこまで大きな影響は確か無かったかと。
A7に関しては、ISAの変更もあるので、あまり参考にはならないとは思ってます。
ARMに関しては、同じISAでローエンドからハイエンドまでカバーしなければならないので、
バランスのとれたISAを定義することは重要なんでしょう。
ハイエンドであれば、x86と同様に、OoOを用い多数の物理レジスタを持てば、
ISA上のレジスタが少なくても影響は少ないでしょうが、
ローエンドでin-order実行の場合それが大きなボトルネックになりかねませんから。
x86も、Silvermontが出るまではATOMで同じ問題がありましたし。
Re: (スコア:0)
ARMに関しては、同じISAでローエンドからハイエンドまでカバーしなければならないので、
バランスのとれたISAを定義することは重要なんでしょう。
ARMについて無知であることは分かった。
Re: (スコア:0)
ああ失礼、ARMにハイエンドはなかったね。
まあそれは置いといて、普通に読んだらCortex-A5、Cortex-A15等の話ってわかると思うけど。
Re: (スコア:0)
ARMに関しては、同じISAでローエンドからハイエンドまでカバーしなければならないので、
バランスのとれたISAを定義することは重要なんでしょう。
ARMについて無知であることは分かった。
ああ失礼、ARMにハイエンドはなかったね。
まあそれは置いといて、普通に読んだらCortex-A5、Cortex-A15等の話ってわかると思うけど。
ローエンドのARMについて無知であることは分かった。
Re: (スコア:0)
ローエンドのARMについて無知であることは分かった。
親指だけは腕とは認めません。
Re: (スコア:0)
IA-32 から x86-64 でレジスタを増加させた影響は、ARM の事例では参考にならないと思うよ。
「汎用レジスタが何個から何個になったかご存知?」は自分ではないけれど、反論はそこから始まっている。
RISC/CISC とか、システムレベルアセンブリコードとか関係ない反論すると判ってない人と判断するよ。
反論の趣旨をとらえられてなかった訳で。
偉そうな口調で書いていると突っつきたくなるし(本音)
技術動向の認識としては一致した気がするので終了。公知の事項をなぞってるだけだけどね。