CPUアーキテクチャについて語れ 53
■ このスレッドは過去ログ倉庫に格納されています
!extend:checked:vvvvv:1000:512 ↑ 次のスレを立てる時に上の文字をコピーしてください 前スレ CPUアーキテクチャについて語れ 52 http://egg.5ch.net/test/read.cgi/jisaku/1623126064/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured こっちなの? 結局再利用はしない? その方がいいかもしれんが。 スレの終わりに質問しだす奴、ネタじゃなくてマジで居るんだって草生えた >>9 >PowerのSIMDであるVSXがAVX2/SSE2にかなりの差をつけられてる 「イントラ予測」って何。。。という話わ置いておくと、横軸わC言語版コードからの改善度なので速度比較とわ違うす SRAMの3D積層、RDNA3でもやるみたいね。(仮にAMDが何も特許抑えてないとして)TSMC利用者ならどこでも出来るとすると、Appleも使うかな? ところでMacオタは富士通の本車田氏が参加した勉強会には参加しなかったの? してれば、普通に話聞けたでしょ? もしかて、今のAVX系のSIMDに対抗できるRISC系SIMDってSVE系ぐらい? >>13 そうかもしれんが、実装にも依るしそんなのわからんでしょう。 まあSVEはXeon phiと戦わなきゃならなかったので。 SVE系→レジスタ可変&本数少なめ HPC-ACE2 →レジスタ128bit止まり&本数128 方向性が反対だな SVE系はHPC-ACE系よりレジスタ少ないから省レジスタと称されてるけど レジスタって本数だけでなく、ビット幅も含めて見た方が良さそう CPU内部の一時的な記憶領域なわけだし AVX512 512bit×32本 これと真逆に32bitレジスタ512本のx86SIMDを 出したら? AVX512で32bit4*4の行列を1つのレジスタに格納できるところを 32bitのレジスタを16個使うことで同様のことが可能なはず 当然、AVX512と違い、行列のデータはレジスタ16個分に分割されて 処理されるがCPUの演算回路がその16個のレジスタの同時にアクセスすれば 理論上のパフォーマンスはAVX512と同じ >>16 命令長がクソ長くなります。 512本なら9bitでレジスタ番地を指定できるわけだが、それを16本指定するとなると 9 * 16 = 144bit さらに四則演算には最低2オペランド必要なので 144 * 2 = 288bit とレジスタ指定部分だけでクソ長い命令になる。 現実的に復活の可能性ないからな。 もちろんごく一部の市場向けには可能性あるだろうけど広がる可能性がない。 >>17 それだと 京のSparc64-[FXは悪手ってことになるな SIMD HPC-ACE 64bitレジスタ*256本 ループアンローリングのためにこのレジスタ 本数にしたらしいけど、後継のFX10/FX100 SIMDレジスタ構成も128bit×128本 SPARK64VIIIfxは倍精度レジスタとは言うもののbasic側とextebded側があり、一つの指定で2つの倍精度が使えたらしい。 256本のレジスタアドレス8bitのうち3bitは前置命令でセットできるらしく、5bitで指定できたようだ。 FMAでも 5bit * 4op = 20bit なので32bit命令に収まるかな? 悪手って程ではないのでは? 突貫で調べたから間違ってたらゴメンね >>17 使うレジスタを新しいレジスタ群を用意して、演算して格納した順番をバッファなりメモリーなりに入れておく。 で、格納した順にAVX命令はそれをオペランドとして使用すればいいんじゃね? 割り込みには全く対応出来なくなるから、レジスタ使った順の保存先格納先は自然とスタックになるね。 どうでもいいけどプログラム空間を分割してオペランド、オペコード用とか、RISC部分、CISC部分(左が入りきらなかった分)というのもありかと思った。ダブルプログラムカウンターモデルw 名前だけは商用的に少しインパクトあるw >>12 引用の仕方が悪かったから誤解させたようだけど本車田氏がいた訳じゃないよ >>24 たぶんすげー早いよwだってデコーダ2つ同時実行だもんw オペコードとオペランドを別々のプログラムRAM から直接読んで、デコード同時実行だから単純性能では40%ぐらい加速するw オペランドは2つ強制固定になるんじゃないかな。 でも割り込み時の退避レジスタ増えるし、超不安定なシステムになるし、現行のキャッシュシステムとは特に相性悪いだろうから、用途を特に限定したDSPとか動画処理とかになるのかな? どうせ誰もこんなん作らないっしょw >>13 厳密にはSIMDでなくベクトル命令だけどRISC-VのVector拡張があるよ ttps://github.com/riscv/riscv-v-spec 9/20にVersion 1.0が出て規格がfrozenになり、問題なければratifiedされて2.0になるはず >>26 あぁ、命令確定しないと必要なオペランド数が分からないんだね。じゃあ駄目だねこれ。 っていうか従来とバイナリ互換ねぇからよく考えたら駄目だね。バスも2つなきゃ駄目っていうのは良くない。 汎用性が低い物は商用民生量産には向かないし。 nextplatform.com のこの記事によると、AMD わ Zen 5 世代でも高電力効率版 “c” コア製品を用意しているとのコトす https://www.nextplatform.com/2021/11/10/amd-deepens-its-already-broad-epyc-server-chip-roadmap/ ーーー After that, comes kickers to Genoa and Bergamo, and it is looking like the Bergamo kicker is in fact the rumored 256-core “Turin” processor based on the future Zen 5c core that has been rumored recently. ーーー AMD も当分の間 P-core / E-core 二頭立て体制で進む模様 http://3s81si1s5ygj3mzby34dq6qf-wpengine.netdna-ssl.com/wp-content/uploads/2021/11/amd-epyc-roadmap-enhanced-2.jpg >>27 いつのまにかVersion 1.0か ディッツェルのところがRISC-Vに独自SIMDとか追加してたような気がする。 決まってないから、と。 使ってない回路を別の回路に動的に入れ換えて最適化する技術がありゃなぁ。人間の脳みそみたく、使わない機能は消えて新しいニューロンネットワークに.... PLDFPGAなんてでかすぎて入る訳ねぇし ぐちぐち。ぐちぐち。ぐち >>16 4オペランドでもなかなら無いのに 32〜64オペランド? 頭悪すぎる 連番指定としても依存関係が複雑すぎる レジスタの分割書き換えも依存関係が複雑になるのでダメ >>27 結局拡張を繰り返してCISC化する どうせ足すんだからはじめからSIMD前提で命令セットを作れと思う 高速なCPUを作る前提なら 命令はリッチでなくてはならない 高速になればなるほどフロントエンドが肥大化するので それに見合った命令にする必要がある 複合可能な処理は命令に追加しておくべき 小数演算なら積和に比べて指数部への小さい値の加算などゴミみたいな規模の回路で実現出来るのだから 2bit程度の即値指定で出来るようにしておけば良い 2倍4倍1/2倍などわりと使うことが多い計算が コード的にほぼ無コストで出来るようになる >>16 SIMDの性能を出したければ SoA形式でデータを保持する 1個のレジスタで行列を保持しようとする考え方は SIMDに適さない SIMDサイズが変わると破綻するので ただし現実問題としてSoAに出来ない事が多い だからAVX512にはリッチなシャッフル命令がある SoAしか効率的に処理出来ないA64FXみたいなのは スーパーコンピューターだから成り立つのであって コンシューマー用には向かない >>36 一つの解決策わ CELL BE の SPE の様にローカルメモリと SIMD プロセッサ、そしてメインメモリからローカルメモリへのコピーを司るプログラム可能な MFC (memory flow controller) という構成にして、メインメモリ上の AoS データをローカルメモリで SoA に並べ替えるコトかと アセンブラ数命令〜数百命令をMD5化してハードウェアレジスターに格納し、入力とMD5値に対する結果をネットワーク上やDB上にに問い合わせて結果をもらうというのは? ネットワークアクセスやDBアクセスが爆速である事が前提になるけど。 世界中で無駄な同じ演算やらせるぐらいなら結果をネットワーク上やDB上にキャッシュして誰かが一回だけ実行すればいいw こんなの出来ればとっくの昔に誰か作ってるよね。 >>34-35 Vector拡張は規格がfixしたのが最近なだけでRISC-V最初期から存在する拡張 そもそも命令数の多さや複合可能な命令を1命令にすることやSIMDとCISCは関係ない CISCvsRISCは、1980-1990年代のCPU内バスとマイクロコードによる制御を前提とする マルチサイクルのマイクロアーキテクチャと、ワイヤードロジックによるパイプライン処理の マイクロアーキテクチャの対立であって、すでにRISCのマイクロアーキテクチャが 勝利し、現行のCPUはすべてパイプライン化されている >>40 一般的な定義と君の定義は違う まずは略語を展開して意味を考えてくれ >>40 >Vector拡張は規格がfixしたのが最近なだけでRISC-V最初期から存在する拡張 x86-64 の経緯を思い出せば明らかな様に普通わ、 ISA 仕様/シミュレータ公開 →プロセッササンプル品 → プロセッサ発売/ソフト開発 という順番なので、規格が固まる前から開発とか評価とかしろと言うのわ無理だと思うすけど。。。 >>41 歴史的な経緯わ>>40 で間違って無いと思うす そもそも CISC って用語が RISC 側から命名した蔑称だし、可変長命令だけが定義って訳でも無いし。。。 げ ネットワークアクセス10usもかかんのかよ。 じゃ無理だな うーむ。 配線を飛び越える技術がありゃなぁ。 AB間配線をC配線が飛び越えられればなぁ。 核磁気共鳴とかじゃなくトランジスタやゲート組み合わせれば出来るかもしんないなこれw でみどーせ遅くて使い物になんねーだろーしなぁ。 >>43 定義と特徴の区別くらいつけなさい まずは単語を直訳 まあ定義はどうでもいいとして 命令がチープだと高性能CPUにはならない 高性能CPUならそれに見合った命令が必要 逆に PICのような超チープなCPUには 超チープな命令セットが似合う >>47 当時のRISC/CISCの特徴 と RISC/CISCの単語の定義 とがぐちゃぐちゃ >>48 >PICのような超チープなCPUには >超チープな命令セットが似合う そのチープな 8-bit CPU の世界でも PIC vs. AVR の様な CISC vs. RISC 論争があるのわご存じ無いすか? >>47 う〜んこの上から目線。リサ・スーをも見下す気位の高いMacオタ。一体どんな華々しい実績があるんですかねぇ 言葉の意味は 単純な命令セットのCPU 複雑な命令セットのCPU これだけ 単純か複雑かは相対的なもの >>46 チップ間磁石通信とはまたド派手だねー。 いやぁ、単に立体的で無くて信号線をバスと交差出来れば回路に自由度が上がるんではと思ったんだけど。 40hzとか0n05Hz とかの遅い信号線だったら無線で飛ばすのも平気だろうけど6MHz とかだと難しそうな感じだねっぽいね。 >>53 磁界結合は昔から知られてる技術だし 原理試作まではできてもその先の製品化までは高い壁があるんだと思うよ。 大手半導体メーカーの多くは既に検討して諦めたんじゃないかな。 わりと最近だとPEZYが製品化にチャレンジして敗北してる。 >>48 RISCの原点にたちかえってシンプルな aarch64 の Apple M1 が Intel越えのシングルスレッド性能を達成してるわけで その主張は明らかな間違い。 シンプルとチープも違う気がするが、まあそこに比例関係はないというのは間違いない http://egg.2ch.net/test/read.cgi/jisaku/1631949760/994 前スレ994で言及した AMD の E-core, Zen 4c “BERGAMO” わ初出の噂を辿ると今年6月末のこの動画に行き着くす https://www.youtube.com/watch?v=kiOUUY_zrIE& ;t=410s ソケットあたり 128-core の制限わ AGESA (AMD の BIOS CPU driver) によるとのコトすから、GENOA (P-core) と BERGAMO (E-core) の面積比が 4:3 という訳でわ無い模様す。 そう言う意味でも大原氏の予想 (https://news.mynavi.jp/article/20211109-2182109/ ) わ外れてると言うのが私の見立てす ーーー ラフに言ってZen 4cコアのエリアサイズはZen 4の半分にはならない様に思える。そもそも96コア vs 128コアという事だから、単純に言って3/4のサイズということになり、Alder Lake的に混ぜてもそれほどダイサイズが減らない割に、性能が今一つという事になりかねない。 ーーー >>55 適しているかどうか に修正すればいいか? aarch64がシンプルかというと 多少疑問ではあるが x86の汎用整数命令はチープだから それに勝っても明らかな間違いでもないけど 今となっては主要な違いは命令長が可変か固定かくらいじゃね? 知らんけど >>54 そりゃ磁石で飛ばしてもねぇ。 互換性を保ちつつ高速化するってのは難しいねぇ。 じゃーこーゆーのはどうだろうw データ挿入削除が可能なインデックス型めもりぃw 従来のメモリーに加えてインデックステーブルをワイアロジック化w 文字ハッシュ値算出用の加算しつづける命令w 高速論理演算用メモリーウィンドウとかw WinProcのメッセージ高速処理用、巨大switch文のテーブルヒット検索命令w 役に立たない事しか思い浮かばない。 >>59 x86の整数演算命令ぜんぜんチープじゃないぞ。 メモリオペランドについて直接演算可能なんてRISC CPUじゃ考えられない高級命令だ。 でもそれって内部ではロード命令と演算命令に分割されてて、性能には寄与しなくね? >>63 その通りで高性能CPUの場合、命令セットがよほどアホでない限り性能とはほぼ無関係になる。 なので>>48 は誤り。 x86の場合はあまりに命令が複雑すぎるせいで ごく稀に性能の足を引っ張ることもあるらしいが。 RISCが出た背景の一つに「CISCにおいて、複雑な命令は たいして使われてないから、それらを省いてRISCが登場したって のがあるな」 後、複雑な命令とリッチな命令も違うかと 例えば、一昔前のマルチメディア系処理向けや、今のAI深層学習で SIMD系命令を拡張するのは、命令をリッチにすることであって 複雑にするのとは方向が違うかと >>62 x86のアドレッシングは強力 でも肝心の演算の中身がチープ いまだにLEAを多用するのもその証拠 ゼロから命令を作り直せば確実に性能は上がる 複雑とリッチ 基本は同じ リッチ、チープは洗練具合の比重が高くはなるが まあ少なくともRISC/CISCの言葉の定義に >>40 のような実装方法の意味は含まれない x86の汎用整数の命令は 今のCPUの規模に全く合ってない 洗練もされてないし演算の種類も少ない 2オペランドが時代に合ってない ソフト資産が重要で今さら変えられない 変えるタイミングがない 64bit化が良いチャンスだったのに 逃したのはAMDにも大きな責任がある >>67 >まあ少なくともRISC/CISCの言葉の定義に >>>40 のような実装方法の意味は含まれない ソコに異常に固執する理由わ何故?あなたの英語解釈以外の学術的なソースがあるなら、ぜひ紹介していただきたいす。 ところで ISA における『リッチ』という表現を高機能という意味で皆さん使っている様すけど、普通わ命令数が多いという意味で使わないすか? 古典的にわ良い ISAわ直交性があるとされていたために、サポートするデータ型全てで同じ演算・関数用の命令を規定すると必然的に命令数が増えて『リッチ』になる。。。というコトすけど 命令数は数え方でいくらでも変わるからあまり意味がない 内部的に変換されるから命令セットは大して重要じゃない というような風潮があるけどそんな事はない 命令セットは非常に重要 x86が刷新してくれたら良いなあなんて思ってる 1命令をリッチにする これが(効率良く)性能を伸ばすのに必要だと思ってる RISCとは対極の考え方 >>71 >1命令をリッチにする 上でも書いたすけど、この業界で ”rich instruction set” という用語わあるすけど、”rich instruction” の方は聞かないす ご自慢の英語力わどこへ? 例えば2項論理演算 AND/OR/ANDN/NAND/NOR/... 演算部分の回路規模は全命令の中でも最低レベルの演算なんだから はじめから全パターン用意するべき 全パターン前提であれば 即値4bitによる汎用2項論理演算命令が1個あれば良い 命令数的には減るが出来ることは増える 私はこちらの方がリッチな命令セットだと思う 単純に命令数を比べるのは意味がない 当然汎用3項論理演算命令1個の方が応用範囲が広い 3オペランドでsrcとdestが一部共通な命令であったとしても 演算順やdestの選択は即値8bitに全て含まれる 一般的に 命令のスループットは上げやすいが レイテンシを下げるのは難しい どんなに簡単な命令でも レイテンシ1クロック未満にはならない 2命令使うとどんなに簡単な命令でも レイテンシは2クロックかかる 論理演算の回路規模は非常に小さいので はじめから汎用3項論理演算を用意しておくべきと思う 頭の悪い人は 即値の中からいくつか取り出して AND/OR/...とする方が命令数が増えるからリッチだと言う >>73 プロセッサのマニュアル読んだコトあるすか? “AND” という論理演算一つの取っても、引数が64-bit/32-bit/16-bit/8-bit で異なり、さらにそれぞれが符号付きか符号無しかで別の命令IDが割り付けられるす。 更にわ引数がレジスタであるか、直値であるか、レジスタで指定するメモリアドレスであるか、メモリアドリスの直値であるか、等で命令IDわ分ける必要があるす。そしてメモリアドレス指定にはオフセット付きやら無しやらが有り、そのオフセットもレジスタに入っていたり直値だったり。。。と、数学的表現で単一の論理演算だけで必要な命令IDビットフィールドわ際限なく増えていくす 特にメモリアドレスを引数に取る CISC ISA の命令数が増えるのわ後半の理由によるモノす FMA4よりFMA3の方が命令数が多いから FMA3の方がリッチである なんて主張する人がいるかな? >>76 それらを同じ命令と数えるか 違う命令と数えるか それだけでも命令数は変わる >>77 >>72 を読めばわかるすけど、そもそも「そんな言い回しわ無い」というのが回答す >>78 命令を解釈するのわ人間で無くデコーダー回路なので、オペコードとオプションビットが異なれば違う命令す 人間側から見ても違うニーモニックだし。。。 >>66 Apple M1と比較すればどう見てもリッチじゃん。 今以上にリッチにしても命令体系がさらにグシャグシャになるだけで高速化には寄与しない >>73 > はじめから全パターン用意するべき 高級言語にある演算はすべて既に存在するわけで それ以上増やしたところで利用率ゼロの命令が増えるだけで無意味 >>79 リッチの単語の意味を知らないなら辞書をみなさい >>80 君にとってはXOR AX, AXとXOR AX, BXは違う命令かな? >>81 本当にそう思う? 色々なCPUの命令を見た方良いよ >>82 現在も少しずつ増えたりしている 論理演算は複数合わせて使われる事が多く コンパイラは最適化によって適切な命令にすることが出来る 命令数的に増えない、回路規模も全く大した事がない、論理演算は非常に良く使われる Intel : Sapphire Rapids + Ponte Vecchio AMD : EPYC + Instinct MI200 (MI250X) NVIDIA : GRACE + Hopper どこもCPUもGPUも手出してるが CPU:AMD×GPU:NVIDIAの組み合わせがサーバーもPCも安定感あるな >君にとってはXOR AX, AXとXOR AX, BXは違う命令かな? うん違う命令だな nopとxchg ax,bx位違う 命令セットの命令数は実装依存 命令セットの仕様の段階では命令数は決まらん てことになるね VCMPEQPDとVCMPLTPDは同じ命令?違う命令? 命令数は数え方次第でいくらでも変わる 命令数でリッチさなんてわからない たった○○命令とデータシートで自虐的に語ってる例のCPUの命令セットは間違いなくチープてはあるが つか命令増やしまくった結果使わない命令が多数出て 設計費材料費製造費無駄だからRISCが作られたんだが 車輪の再発明すんの 8086が設計された時代は8bit CPUの過渡期で 開発ツールもアセンブラからコンパイラへと 移りつつあった。当時のCPUエンジニアは、 コンパイラはレジスタを上手に使えないって 考えていたせいで86の設計にもそれは現れた。 ループカウンタはCX メモリコピーのソースがSI デスティネーションがDI コピーがREP MOVSB 比較がREP CMPSB などなど。 今となっては互換性を保つための足かせも 当時のエンジニアは大まじめに設計したのだ。 REP MOVSは今でも良く使われる 非常に高速 現在のレジスタの縛りは 乗算除算のRAX, RDX シフト数指定のCL スタック操作のRSP くらい? 8bitの8080の拡張だから 出た当時から命令セットは多少いびつ Power9関連でこんな記事が https://news.ycombinator.com/item?id=18534352 訳して、一部コピペ >Power9に装備されている4x64ビットのベクトルユニットが弱いため、 >多くの「弱点」があります これはSIMDのVSXの演算器のことだな 後はこれ https://en.wikichip.org/wiki/ibm/microarchitectures/power9 >4x FP + FX-MUL + Complex (64b) Zenのブロックダイアグラム https://pc.watch.impress.co.jp/video/pcw/docs/1192/135/p03.pdf AVX2の128bitSIMD演算器が4つある つまりhttps://www.phoronix.com/scan.php?page=article& ;item=blackbird-power9-4c&num=3 このベンチ結果は、命令セットやレジスタの構成以前のマイクロアーキテクチャの違いが 出たわけか というか、Power9の64bitSIMD演算器って、、x86はCoreアーキの時点でSIMD演算器は 128bit化してなかった? 殆どSIMD系の強化はしてこなかったんだな IBM-Power PowerPC970がこけて、通常のコンシューマー市場への足掛かりを失ってから SIMD強化しても仕方ないで放置状態だな >>93 IBM系も128bitのはずだ 直系子孫じゃないけどAltivecの時点で128bitでしょう いや、今日日128bitじゃ弱いんだけどさ。 PowerMac 箱360 PS3 ここら辺な、SIMD128bitだな 鯖系は128bit化してないが Power10は128bitSIMD採用じゃなくAI用行列アクセラレーターに トランジスタ使ってる? まあ演算粒度を上げたくないというのがあるのかもしれないが、 それでx86の方が売れるのであれば、市場の読み間違いなのか。 演算粒度でしばらくぐぐったら、関連がありそうな資料が これ https://www.ieice-hbkb.org/files/06/06gun_05hen_02.pdf ここの (2) 細粒度マルチスレッドと粗粒度マルチスレッド という項目に > 細粒度方式の利点として,メインとなるスレッドの性能を低下させないことがあげられる とあるな。 ってことはスレッド性能のために演算粒度を上げないようにしてるってことか? Power系 それだからSIMDも64-128bit止まり。 命令が増え過ぎたら滅多に使わない命令は削って未定義命令実行例外割り込みでソフトウェアシミュレーションするしかないね。 ソフトウェアエミュレート出来る命令だけは何とか一応w 逆に言えば最新CPU向けのソフトも一応動かせるw 命令過不足はソフト命令単位エミュ。 極端に命令系統が変わり果てたCPUはインストラクションエミュ上で実行w これで命令過不足出ても客からクレーム起きにくくなるw(ぉぃ.... ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる