【CISC】CPUアーキテクチャと論理合成方法【RISC】
1 :
名無しさん@お腹いっぱい。:
2 :
名無しさん@お腹いっぱい。:03/12/23 19:07 ID:gjnP0NFF
あややの合成方法も知りたいです
3ゲッツ
折角だから2chオリジナルのCPUでも作るか?
ゴルァ命令セットとか名前付けて遊んだら面白いかもよ。
じゃあ、核心部の命令デコーダからいってみようよ。
命令セットは最小単位でよいかな。(究極のRISC)
他は、レジスタのカタマリだし、ALUは確立してるし。
命令ってどの程度に絞り込む?
ロードストア系、演算だけあれば良いのかな。
分岐は、PCに直接アドレスをロードで問題ないだろうし。
うん、条件JMPはプログラムカウンタに直接アドレス流し込めばいいと思う。
ただし、フラグ、ステータスの構成は?
ペリフェラルの構成とも関わってくるでしょ。
>>7 命令に実行ステータスを付けたらどうだろうか?
ってARMがこれだっけ?
全ての命令に同じ実行ステータスがあれば条件ロードが
分岐命令の変わりに使えるね。
>>8 スマソ。この部分でチョイと
>>5=
>>7の俺はつまずいた。
実行ステータスは例えば、状況が違うけど、86系のMOVZX,MOVSB,MOVSWのようなイメージかな。
ARMでいうと例えば、どのような使われ方?
スマソ、ARM勉強してくる・・・。
>>10 読んでみた。でも、まだ理解できてないから、勉強してくる。
条件コード部というのは、その文章で
>代表的なサブ命令セットは、「T」付きで呼ばれるThumb命令である。
のところでしょ?
命令デコーダ、制御回路は高速だしスキューがシビアだから、布線論理のワイヤードロジックで組もうという頭があったのだけれど、
条件JMPに使うフラグ、ステータスの問題がでてきた。
文章を読むと、条件コードをつけることで、いろいろなペリフェラル構成にフレキシブルに対応できるようだし、
フラグレジスタ、ステータスレジスタ、を作らなくて良い(のかな?)という利点もあるかもしれない。
そのかわり、命令デコーダ、制御回路がやや複雑になり、布線論理でもプログラムで組まなきゃならなくなるかもしれない。(スキューとかどうか)
この辺どうだろ?
とりあえず、またARM勉強してきます。
>>11 高速性に関してはARMの弱みでもあったから仕方が無いと言う消極的な見方も
出来るんで、高速性を取るか、命令単体の機能を取るかのどちらかを選択する
ことになると思うんだわさ。
機能を比較的高めに設定することで、全体的に命令を絞り込んで少なくする
と言う考えはどうかなと思うのだが。
命令を単純にして更に絞り込めと言う話もあるんだけどね。(w
これに関しては、偶にしか使わないブロックが勿体ないから常に使うように
したいなと言う私の趣味ですが。
13 :
名無しさん@お腹いっぱい。:03/12/25 15:30 ID:CYT3jpqd
>>12 自分は標準的なRISC派です。(命令セットはできるだけ少なく)
とりあえず、最初は両方路線でいいのではないでしょか。
話が進んでいった方を作るという方向で。
せっかく、いろんな人が参加できるプロジェクト(whh,,,)なので
いろんな人の意見も聞いてみたいし、開発期限も無制限だし。
とりあえず、
・ARMで作りたい!へのレス
・RISCで作りたい!へのレス
を頭につけて、進めるのはどうでしょう。
ふむ、ではこの辺りは自由な発想で進めるのが良いでしょう。(w
最初は、あれだねどんな命令が必要かって辺りからスタートかな。
>>12 話を戻してっと、
>>12さんの考えているARMでは条件ジャンプの場合、
命令コードの条件コード部によって、判断がゆだねられて、フラグが全く要らず、
アセンブラで人間により完全にフレキシブルにできるということになりますか?、
あるいは、フラグは弱冠噛んでくるのでしょか?、また、そうだとして、フラグの数はいかほどでしょ?
>>14 はい。
ARMでは、どんな命令セットを考えてますか?
レスが遅くなっても構わないので、並べてみてください。
また、ARM勉強してきます。
>>16 実際はなんも考えてません。(w
もう一つ言うと、ARMに関しては全ての命令に条件があると言う
アーキテクチャが面白いなーと思ってただけで特に詳しいわけでは
ありませんですスマヌ。
>>17 どうもです。
自分もARMの命令セット考えてみようと思います。
命令デコードで一番複雑かつメインの条件JMPにフラグを使わなくてよいとなると、アーキテクチャもかなりやりやすくなる利点がARMにあると思います。
あと、まだ話題に出してないですが、割り込みのレベルと、どうロジック組むか、更に、システムマネージメント割り込み以外(マスク割り込み、ノンマスク割り込み)は
割り込みコントローラに任せるか(割り込み命令を受け取って振り分けてコントロール信号に載せて、処理を割り込みコントローラ任せるか。
更にペリフェラルデバイスからの割り込みも割り込みコントローラ経由でCPUに入れるか、それともCPUにそれぞれの割り込みpin作るか)も徐々に考えてゆきましょ。
割り込みに関しては、いきなりやらなくとも良いと思いますが、あまり遅れると高速ロジックのスキューがきつくなると思います。
19 :
素朴な疑問:03/12/25 23:32 ID:87ANrBxT
オリジナルのCPUを作るのは非常に面白いと思うけど、
どうやって実装するの?
そのへんに売ってるFPGAだと、せいぜい10kゲートくらい
だろうから大した回路は入らないしピン数の制約もきついと
思うんだけど。それとも、論理合成したらそれでおしまい?
個人的には適当な理由つけて、VDECで作ってくれる神きぼんw
>>19 DWMのおまけに実装するのが第一目標です。
ただしツール関係は全然考えてないな。
21 :
名無しさん@お腹いっぱい。:03/12/26 00:32 ID:9U7IG84v
>>19 レイアウトして、ガーバ、GDSUにすれば後は、マスク焼けるよ。
描画装置に入れるマスクデータは主にMEBESだけど、すぐに変換できて、MEBES用のレイアウト画面がでる。(色フィルムを重ねたような。n層p層をそれぞれ表す)
MEBES以外の形式の描画装置でもすぐ変換できる。
マスクができれば、後はステッパにかけて、ダイボンダされたシリコンウェハにレジスト、露光、エッチングを何回も繰り返して焼きこむ。
その後の、ワイヤボンダ、マウンタが残っているけど、これらは一連の工場内の流れでできる。
マスク製造装置なら、大日本印刷とか、ガラスで有名なHOYAなんかでも焼いてくれる。
CQ誌のStratixボードなら30万ゲートくらいあるね
23 :
18:03/12/26 00:55 ID:B7D6zUoX
>>20 DWMは買ってないし、FPGAの事も詳しくないからよく知らないけど、
前に付録で付いてたのってEP1C3ってやつでしょ。データシート
見たら2910LEって書いてあったけど、1LE=1NANDだとするとARM7は
とてもじゃないけど入らないよ。
バス幅削ったりしてサブセットにすれば何とかなるかもしれないけど。
それとも、単純なRISCなら32bitでも入るか?
>>21 で、テストランで1ロッドいくらかかるの?
プロセスはお好みのでいいからさ。
>>22 それくらいが現実的だろうなあ。
>>23 1LE=17ゲートと言われてるよ。
DWMの付録は、約3000LEなので昔風に言うと51000ゲートってことになります。
で、ARMの実装と言ってもアーキテクチャを頂くだけで極小で良いと思うから
高価なFPGAを使って実装するよりは小さいところから試して積み上げればいい。
とりあえずハードルを高く設定すると頓挫の可能性が高いからね。
ついでに書くと、ユニバーサル基板にQFPのFPGAを実装して手作りした場合でも
一万を切るくらいにしたいとは思ってる。
でないと気軽に試す気にはなれないし。
脳内妄想だが、mips2 くらいだったら、
1S10あたりに実装できるんじゃないかなー?
8080互換あたりからでもはじめてみては?
昔の8ビットパソコンのCPU引っこ抜いてFPGAで動いている
というのも面白いと思うが。
・・・・とら技で6502ではやっていたけどね・・・・
あっ、「パソコン」時代になったらZ80が主流だね。
29 :
18:03/12/26 09:56 ID:B7D6zUoX
>>24-25 なるほど、それくらいだったら出来そうだね。
それに回路が単純な方が周波数を上げやすいから、
見かけ上のスペックも上昇するだろうなw
すると、あとはピン数の問題かな。
DWMの付録の基板って有効なピンは何本?
32bitにすると、アドレスとデータのバスだけで60本くらいは
使わないといけないだろうから、デバッグ用の信号を余計に
引き出したりするのは難しいんじゃない?
あと高周波で動かしたとき、電源回りとかは大丈夫なの?
ツールは合成とレイアウトができて、あとシミュレーションで内部の
波形が見れれば、とりあえずは何とかなるかと。
>高周波で動かしたとき、電源回りとかは大丈夫なの?
電源ライン、クロックライン、バスラインともPC/ATの資料ひっぱって来れば大丈夫。
コントロールラインは、激しくH/Lする訳じゃないから、遅延、反射、クロストークなどは余り考えなくとも良いと思うけど、あえて言うならスキューの違いによるセットアップ時間の方が問題じゃないかな。
まあ、この辺は実装する段階で、ある程度どうにでもなるよ。
ただ、pinアサインは気をつけないとだめだろう。clockpinの両側はもちろんGNDではさんだ方が良いし。
それ以外の場所でも頻繁にGNDpin、V+pin設けて、バスラインのZを一定に保つ効果と、ノイズによる電源ラインの電位上昇を分散させるべき。
この辺のpinアサインはPENTIUMでも参考にしてみれば良いんじゃないかな。
>>29 とりあえず、命令フィールドを、8or16、データフィールドを同じく、8or16として
16or32固定で行くとすれば、バスをアドレス16、データ16辺りと考えて、使える
ピンが、60ピン程度でも問題ないと思います。
ま、アドレス、データをマルチプレクスにすれば32ピン+αでも問題ないですね。
>>30 FPGAを使うことを大前提にしてるのでピン配置は望むべくもないですがその辺りは
評価基板でも比較的問題は無いと思われます。ま、極限性能は出ないけど評価する
分には問題ないでしょう。
基板に関しては比較的経験があるのである程度なら経験則で応答できますです。
32 :
名無しさん@お腹いっぱい。:03/12/31 09:02 ID:JwIYdoNM
>>31 DWMの1月号ではをあの基板にPDP11互換CPUのせてUNIXを動作させてるから、
あの基板のFPGA自体はかなりのことができる潜在力はあるな。
33 :
名無しちん:04/01/01 02:29 ID:TLeDKD5h
cpuアーキテクチャと論理合成の間にどんな関係があるのかねぇ
それにARMの条件実行命令があるからといってステータスレジスタ
がいらなくなるわけではないぞ。(ステータスレジスタがないのは
mipsアーキテクチャ)
あの時期のRISCはステータスレジスタみたいの無いよね。SPARCも。
単純なステータスレジスタを作ると出力依存(WAWハザード)ができちゃう
からね。
ただ、そのOoOになると出力依存は消せるし、たかがステータスにレジスタ
消費する方が問題だよな。そういうわけでPowerPC(これしかしらん)では
復活してるけど。
ARMは速度性能のことはあまり考えていないと思う。(偏見か)
>>33 ステータスレジスタの存在って話題に上った?
36 :
名無しさん@お腹いっぱい。:04/01/04 02:45 ID:IpMXLIiC
>11 あたりか。
ARMも32ビット固定長で潔いとおもっていたら、Thumbモードの追加に、
16/32ビット混載モードのサポートと節操がなくなってしまったね。
>>36 ゴルァアーキテクチャで採用するのは、この手のコテコテな継ぎ足しではなく
簡素で解りやすいアーキテクチャで良いと思うよ。
38 :
名無しさん@お腹いっぱい。:04/01/04 11:55 ID:S2x/fFiN
シンプルさならmipsじゃね?
MIPSも MIPS-II, -III, -IV, ... とだんだん複雑になっている。
実は MIPS16という Thumbと同様のものも発表されていたりもする。
40 :
◆mKitty.T22 :04/01/04 18:16 ID:OP3p/mVZ
いろんなラベルの香具師が居て楽しいね。
漏れも問題提起するよ。
命令セットをどうするのか?
完全オリジナルか? GCCをポーティングする手間が最低限必要になるぞ。
既存のコンピューターの命令セットを丸ごとぱくれば、手間は大分減る。
タイミングも合わせればバイナリ互換もねらえる。
既存もコンピューターの命令セットを改造したりすると、オリジナルの場合と
大差ない手間になる。
コンピュータの命令セットについては、これまで何回か新規作成がなされたが、結局趣味の問題になっちまうってことが経験則としてわかったわけで、
蓄積されたソフト資産を捨ててまで乗り換えるような命令セットは最早
出てこないだろう。
32bitのマイクロプロセッサが結局86系しか残らなかった事実。
>>40 端から趣味のCPU設計って話だからごちゃごちゃした末節の話は
後からでも十分。
てかつまらん揚げ足取りで無いなら頭を使うことを楽しんでくれ。
それだけでも十分意義がある。
>GCCをポーティングする手間が最低限必要になるぞ。
必要最低限の命令セットで、デコードはCPUの中でも高速だし、スキューを考えてストアドロジックでなく、ワイヤードロジックで組むという話はどうなっちゃったの?
つーかスレも読まずに適当にレスしてるように見受けられる
>>40にうってつけのテーマがあるぞ。
「命令セットレスコンピュータ」
命令セットという概念そのものを持たないコンピュータだ。
さぁ、ガンガレ!
GCCのポーティングなんてたいしたことないだろ。
CPU作成+GCCポーティングなんて学部実験+αの時代だよ。
学生みたいに時間が有り余るほどあればいいんだけどな・・シミジミ
48 :
◆mKitty.T22 :04/01/04 21:54 ID:7MAtgzbp
>41
コンピュータ作ることが目的であって、完成したらそのコンピュータに用は無いって?
ま、好き好きだからね。
>完成したらそのコンピュータに用は無いって?
そんなことはないだろう。
どんな小さな命令セットであっても、プログラムに負荷が掛かるだろうが用が立たないってことはない。
確かにOSを載せたりするにはx86等と命令セットをそろえなければいけないけれど。
ところで、MMUも必要だよね?
MMUは上位アドレスすなはちセグメント切り替えレジスタがあればよいでしょう。
それを基にオフセットアドレスをくっ付けて、プログラムコントローラに放り込む。
制御回路部の一環としてロジック組めば良いと思う。
極小なシステムには必要あるまい。>MMU
作るとしても、余り複雑でない物がいいね。
訂正
プログラムコントローラ→プログラムカウンタ
なんだか、8086みたいだなぁ。
てか、リニアでない空間は正直使いにくいからやめたいな。
リニアでないとは?
パイプラインは何段? キャッシュは無いのか?
あんまり単純な構造だとDLXになっちゃうぞ。
初手はパイプライン無しでもOKでないの?
そろそろ命令セットを考えるところに来たか。
キャッシュに関しては、キャッシュというより、そう呼ばれる前のデコーダで良いんじゃないかな。
CPU側で、オペコードとオペランドをフェッチサイクルでしっかりラッチして、割り込み等に対応して保留しておく為にCPU側で、ペリフェラルを反映したメモリ空間が要る事だし。
>>60 前スレにも第一番目に命令セット。最小単位で。って書いてあるし、そろそろ命令セットの一覧各自で出してみるときじゃん。
63 :
◆mKitty.T22 :04/01/05 21:54 ID:KJ/a1VNJ
>>60 無理無理。
イロイロなラベルの奴が混ざっているから、話が収束する気配はない。
仮想コンピューターを実現できるようなCPUを考えている奴と
組み込みなんかで使える程度の8080時代のマイコンみたいなCPUを考えている奴
仮想コンピューターというと、その昔アスキーに長々と仮想マシンについて解説してた奴がいた。
日本語ではどっちも仮想だが、英語だとバーチャルとスドーとで別物。
バーチャルマシンはバーチャルメモリよりも上位の概念だ。
で、命令セットの最小な物は、サブジェクトジャンプ命令である。
これ一個あればよい。
命令一個だと命令デコーダーが要らないというものすごいメリットがある。
上げんなよ、ウザコテハンはこれだから。
>>63 話が進展しないし、具体的な方向に進むためにも、命令セットの稟議案というか、その手前のたたき台を皆それぞれだして、長所短所を洗ってみるのが進める道じゃないか?
つーか、揚げ足取りに来るだけなら現れんなっての。
おれは、x86系の命令セットで行きたいな。
理由は、DOS、LINUXが載せられる物を作りたいから。
>>67 悪くはないけど、極小、最低限の命令数に反しますよ。
てか、小さいFPGA等で実現を考えると命令のチョイスが大変ではないかな。
漏れは、命令なんて32個もあれば多いくらいだと思うが。(w
名前: 59=61=62=65
E-mail: sage
内容:
スマソ
>>66。俺じゃなかた。今の名前で正。
>極小、最低限の命令数に反しますよ。
全くそうですねェ。(頭ポンポンの図)
ただ、命令セットに関しては最低限でなくとも、遅くても良いから、パイプライン、キャッシュをデコーダに、で分かりやすいアーキにしたいなと。
>小さいFPGA等で実現を考えると命令のチョイスが大変ではないかな。
そうかぁ。x86のセットだときついかな。
70 :
69:04/01/05 22:26 ID:JMQYg/R8
訂正
パイプライン→パイプラインは用いず
キャッシュ→デコーダで・・・。
>>69 >>47のURLと、DWM10月号のCPUを見て内蔵RAMと外部クロックで頑張れるなら
とことんケチるのは有りなんじゃないかとそっち方面に傾倒してるわけです。(w
H8からよさげな命令だけを抜き出してアセンブラも使い回すってのを数年前に
やりましたが、その時はたしか32程度の命令と、パイプライン無しだったと思います。
>>71 なるほど。x86だと全命令何個くらいでしたっけ。
8086、386辺りとPentiumになってからではどれくらい違うのだろう。
>>72 8086と386は別物だけど、386とpentiumはほとんど同じだ。
ゴラァアーキテクチャは、RISCで行きたいから命令長固定って事になると思うけど
そうなるとチョイスが面倒かも知れないな。
と、
>>4を見たら、ゴルァ命令セットとなってるわ。(w
>>76 あまりデカいと命令デコーダーがデカくなるからね。
命令のビットフィールドが変になってたり、何バイトにも渡るコードは
速度低下を招くからやだな。(w
確かにx86のレジスタ構造ややこしいと思います。
自分のx86がイイ!ゴネゴネは却下してください。(w
他の人で居るかは分かりませんが。
79 :
名無しさん@お腹いっぱい。:04/01/06 01:36 ID:c7voq+yX
命令長固定ってのはやっぱ楽だよね。
Linuxが走るとなるとSHかARMかMIPSかM32あたり?
でもMMUが必須になるね。
uClinuxならMMUいらないけど、ARMとH8くらいしかポートされてなかった気がする。
資料の豊富さだとどうなんだろ?
>>79 sageてくれると嬉しい。(w
OSの移植を考えるとMMUが必要と言うのは解るんだけど、
MMUってどんな仕様のが良いですか?
I/OにするかMMUのコントロールを直接命令に組み込みか
で設計が変わるからね。
あと、スタック操作は面倒だからレジスタをバンクにしたいな。(w <これは漏れの趣味だが
>>79 MMU付きのM32Rって表に出てたっけ?
uClinuxはほかにm68k/v850/NIOS/blackfin版がある。
ただ、資料は皆無ですな。開発者に質問するかソース嫁って事になるでせう。
>>80 I/Oの方が仕様変更の自由度が高いような気がしますな。
82 :
◆mKitty.T22 :04/01/06 03:34 ID:aYm4OfYY
MMUの仕様つうのは、可変長セグメントをオンデマンドでページングできれば良い。
しかし、自作となるとスゲー大変だぜぃ。
漏れをアオリだ揚げ足鳥だというが、そうでもなんだぞ。
63でも命令一コからなる命令セットつうのを提案した積もりなのだが。
提案といっても出所は潰れたbitって雑誌からだけどさ。
引き算した結果の+0−で3分岐する命令だよ。
せっかく独自の命令セットなんだから既存のRISCの真似しなくてもよいのに。
命令も固定長じゃなくて任意ビット長にするのはどうだろう(9ビット命令とか22ビット命令とか。)
命令の切れ目はデコードしてみないとわからないがコード長は最小になるという変なアーキテクチャ。
>>82 sage一つも出来ない奴を信用できない
>>83 しかしよく考えると現状あるRISCが理にかなっている事が解る。
変に独自性を追求しても実装する段になって実際に邪魔になる
事は実際作ってみると思い知らされますよ。
>>83 ジャンプ先はバイト境界でつか?ビット単位なら、オフセット部が長くなりそうだな。
どちらにしろ、アセンブラでジャンプ先のオフセットを計算するのが大変そうだな。
果たして何パスでコード生成が終了するかのぅ。
>>82 なんでわざわざ可変長にするよ?
>>85 やっぱり収束するまでひたすら繰り返しですかね。
今のCPUパワーなら非常識に遅くなる事もないでせう。
>やっぱり収束するまでひたすら繰り返しですかね。
ヴぁ〜、なかなか進まんなぁ。
まず、I/OにするかMMUのコントロールを直接命令に組み込みか、
で、MMU用の命令があるとすればかなり変わったCPUだけど命令セットが多くなる。
>>82の言う様に、通常の
>MMUの仕様つうのは、可変長セグメントをオンデマンドでページングできれば良い。
でよいと自分は思う。
I/Oというのはコプロセッサみたいにして使うという意味かな。(ちょっとコプロとは意味合いが違うし、MMUのI/O化だと、ペリフェラルのクッションレジスタて感じだけど)。
これも変わった案だけど、CPUの内部MMUメモリ空間が他のロジックできつくなってきたら、外部に出せばよいと自分は思う。
他の案としては、
>>8のARMを使った
>全ての命令に同じ実行ステータスがあれば条件ロードが
分岐命令の変わりに使えるね。
という、ステータスレジスタ、フラグをシンプルにして、条件分岐をプログラマがフレキシブルにできるようにしよう、という案。
>>63の
>命令セットの最小な物は、サブジェクトジャンプ命令である。
これ一個あればよい。
という案。
>>71の
>
>>47のURLと、DWM10月号のCPUを見て内蔵RAMと外部クロックで頑張れるなら
とことんケチるのは有りなんじゃないかとそっち方面に傾倒してるわけです。
という案。DWM10月号見てないから、自分分からなかった。
こんなところかな。どれが話が進んでゆくのだろう。
あと
>>80 >スタック操作は面倒だからレジスタをバンクにしたいな。
通常、MMUでもデコーダでもバンクでだからダイジョブじゃないかな。
ただ、多重割り込みとか掛かったときにLIFOで戻り番地を出せるようにスタックは要ると思うけれど。
言ってる意味が違うかな。
>>84 CPU作る側の実装効率云々つうのもあるだろうけど、プログラム実行する際の安全性の問題もある。
命令コードの可変長ってのは、汎用機の時代に否定されたような気もする。
つうか、キャラクタマシンってまさに可変長だろ?
従来の可変長ってのは、ハードウエアを少なくすることが目的だったわけで
別の存在理由があっての可変長なら試す意義はあるんだろね。
コード最小化ってアプローチは実際問題ワンチップがやってるわけで、現存の
命令セットが各社の主張だよ。
コード実行の安全性についてはPICが一番だ。データ領域をコードと解釈して実行することが出来ない構造になっている。しかも命令を取り違えることもないので、暴走しても、プログラムの中のどこかを実行していくので、ハングアップする可能性も低い。
あとは、用途だな。
UNIX系のOSが動いて「わぁ〜ぃ!」で終わりか?
クリプト計算とか、円周率計算とか?
まさかの漏貧?
一番カッコいいのは、2chのサーバーに採用されることだな。
LINUXが載っちゃえば、いろいろアプリが載せられるじゃん。
>>79にもあるように、
LINUX載せるならSHかARMかMIPSかM32あたりから命令セット引っ張ってきてアーキ組めばいいんじゃないかな。
>>90 下げて欲しいだけどな。
使い方等は、
>>47辺りが良い線行ってるね。
漏れ的には、自由に使えて開発環境もへぼいながらあって遊べるなら
只のCPUには非常に魅力を感じる。
コンピュータを目的とするなら、外部インターフェースは
┏━━━━━━━┓
┃ ┃
シリアルポート. ┃ ┃========== シリアルATA
(コンソール用) ┃ ┃
┃ ┃
┃ ┃≡≡≡≡≡≡SD-RAM
┌┐______________ ┃ ┃
└┘---------.┃ ┃
LAN ┗━━━━━━━┛
FPGA
な感じか?
SD-RAMのピン数が支配的だな。BGAのパーツを使うしかないか?
208ピンで収まるか?
DWM10月のオマケからスタートで十分
BGAでgoogったら、こんなの出てきた。
http://www.shindo-jp.com/tbga.html テープで、BGAタイプのパターン貼っつける椰子。
評価用(基準)ボード作れるかな。
ATA使うの?それこそ、バスブリッジ要るし、x86になっちゃうんじゃ・・・。
そんな図見せられると、pinアサイン、バスタイミングも決めたくなるけど、命令セット決めて、何ビット命令か決めないことには始まらない。
>>95 TBGAってパッケージがテープ状ってだけで実装手順は変わらんから
普通のBGAと大差なしなんだがこれで何をしようと?
どっちにしろ一般人が試作等で遊ぶこと考えたらQFPパッケージの
FPGAでしかも市販の評価ボードがあることが前提になるね。
>>94 その場合は、組み込み用のマイコンがせいぜいという事になるわけだよ。
用途、スペックを考えて、中身を考えないといけない。
>>95 やったことはないが、スルーホールタイプのユニバーサル基板で
ワイヤーを繋ぐことになるだろうね。PCB起こすとなると4層以上でなければ
どうにもならないから、おいそれとは作れない。
OSを動かすとなるとOSそのもののチューニングとかを他のマシンで行わざるを得ないから、
現在ATA使うしか実際問題方法がないよ。なによりATA以外のHDDなんてSCSIでもバカ高いし、それ以外なんて電気街では買えないぞ。
ま、全体像をある程度具体化しておかないと命令セット決めるたって収束しないだろう。
>>97 >> その場合は、組み込み用のマイコンがせいぜいという事になるわけだよ。
十分だね。実現できない、出来ても金がかかりすぎる事が解ってる
遊びは絶対頓挫する。
つーかさ、得意になってageるのはなんか意味あるのか?
厨を呼び込みやすい環境を作らないで欲しいよ。
>出来ても金がかかりすぎる事が解ってる
ガーバを基にマスク作ってもらってウェハに露光して、ワイヤボンド、マウントすると費用が掛かるからFPGAで実現できるものにしようってことじゃなかったっけ?
ぐるぐる回ってるけど、
そのために、LINUX等のOS載せるならSHかARMかMIPSかM32あたりから命令セット引っ張ってきてアーキテクチャは組もうという話もでたんでしょ。
>>100 てか、FPGAでとか極小でって話は変わってないよ。
現実的な話をするとこれはどうしようもない部分ではあるよね。
特に趣味人には大きな出費や特別な実装は大きな負担になるのだから
考慮は必要でしょう。
ということで、
(1)とにかく、一本化!
(2)OS稼動を目指すタスクと打倒H8マイコンボードのタスクの並立
(3)その他
この辺りで方向性をとりあえず纏め様としてみるかい?
あのな、上げアラシっていうのは、誰もカキコしないで下に落ちたスレに
空カキコして、延命を図る類の事をいうのだろうが。
2chでは、何もせずにカキコすれば上げになるという事実を考えてもらいたい。
活発なスレは常に上位にあることになり、新規参加者を誘う効果も高いだろ。
面白い話をするのに、仲間を増やせば、より面白くなるだろう?
そう思わないって奴が2chに少なくないのが漏れには理解できない。
閉鎖的にやるのなら、自分でWEB開くなり、MLでやるなりしたらいいさ。
>>105 別に荒らしとは言っていないぞ。
頻繁に書き込みがあるスレッドはsageでも切られない。
漏れは単に厨防止のためageはやめて欲しいと言っただけだが?
それともスネに傷でもあるか?
てか煽りコテですか貴方は?
108 :
名無しさん@お腹いっぱい。:04/01/06 23:03 ID:OlPbCrrs
おいおい、痴話げんかはやめとけよ。(www
>>104 なんだよソレ。(w
>>102 メール欄に「下げ」っ・・・て、ガn・・・(ry&w
(1)(2)(3)に関しては、エイエイオー!
109 :
108:04/01/06 23:05 ID:OlPbCrrs
スマン!アゲチャッタ。わざとじゃないです、ゴメソ。
さて・・・静かになったところで。(w
昨日休みを利用して色々と資料漁りをしてみた。
で、利用できそうで且つ公開されてる命令セットを見てみたのだけど
候補は、MIPS、SPARCって所でしょうか。
とりあえずはライセンス問題があるので命令の一部流用って事で
アーキテクチャ名は付けないって事ならOKかもね。
111 :
◆ro/FPGA/X2 :04/01/13 10:16 ID:Uh+C16h+
下げ進行に拘る理由は、他人の権利侵害の相談かよ
>>111 そんなつまらんことばかり言ってるから、あぼーん推奨にされるんだよ。
研究目的なら、知的財産権の侵害にはあたらんのでは?
そうでなければ、特許の有効性の検証すらできなくなる。
いや、そもそもバイナリコードに互換性があるだけでは権利侵害にならん。
ほら〜、折角
>>110が使えそうな命令セットの候補
>昨日休みを利用して色々と資料漁りをしてみた。
で、利用できそうで且つ公開されてる命令セットを見てみたのだけど
候補は、MIPS、SPARCって所でしょうか。
を調べてくれたのに、巻花がはじまる〜。
堂々巡りになるから、やめなさい!メッ!(ww
良いんだよ、馬鹿一匹2chブラウザであぼーん設定するだけだから。(w
117 :
◆ro/FPGA/X2 :04/01/13 17:44 ID:mACV2Qs2
あのね、命令セットって何を意味しているか不明だけど
ニモニックとオペランドの文法と、動作説明だけをパクっても
バイナリ互換にはならないからね。
あぼーんだ。(w
以降無視。
>>118 いや、命令セットをひっぱって来こようという時点で、俺も次の問題として
>>117を考えていた。
互換にするにはレジスタ値、フラグを加味して結果として同様の動作をさせなくちゃいけないし、
バスタイミングがきっちりそろえられるかが難しいところじゃないかと思う。
>>119 単純にOPコードを引っ張ってくるだけで後は独自って事であれば
(しかも命令は一部のみ流用なら)クリーンルームで設計している
のと同じ事になるとおもうが。
当然その過程で出来たものが特許技術である場合は何らかの
回避方を模索する必要はある。
この辺りは調査する必要はあるだろうが実に難しいと思う。
そう言う意味では、パイプラインの深さが変わる可能性がある時点で
バイナリ互換とは言い難いな、確かに。
>引っ張ってくるだけで後は独自って事
最初から互換にしようなどと考えずに命令は一緒で、バスは独自のにすべきかな。
クリーンルームで設計しているって表現があったけど、この方がはるかに自由度が効くし、設計も格段にしやすい。
特許・既得権益等にぶつかるか、の問題は難しい・・・。
販売をしなければ良いって考えじゃまずいのかな、互換じゃなければ・・・。
一部まずいのがあったりするのかな、それとも全般的にまずいのかな、作って公開や配布することが。
>>122 実際OPコードのみ互換で行くか・・・と言うのは悩んでたんだけどね。
開発ツールを少々作る必要があるから余計ね。
OPコード云々は考えるのが面倒と言うのもあったけどね。(w
>>122 設定用レジスタ、フラグはどうすればいいだろ。
これが互換じゃないと命令の組み合わせでの動作が一緒でなくなる。
OS載せたときとか、OPコードがそろってるだけじゃ、トータルとして同じ動作じゃなくなるなぁ。
125 :
124:04/01/13 18:23 ID:j6MaT2vk
>>124 OPコードを一部流用って時点で捨てる部分は多い・・・だから全く同じ動作
と言うのは難しいでしょうね。こればかりはいかんともしがたい。
実際は、
>>123に書いた通りOPコードのbit配列を考えるのが単に面倒だった
だけで深く考えた訳じゃない。(w
>>122 「既得権益」が全て法律で保護される訳ではない。
コード(回路)をスクラッチから書けば、例え既存の製品と同一の
コードになっても、著作権や半導体回路配置利用権の侵害には
ならない。
だが既存のコードを流用したら、改変していてもダメ。
一方、特許権は、その手法を使った時点でダメ。特許の存在を
知らなくてもダメ。権利者が損をしたら侵害した事になる。
無料配布でもダメ(有料にしとけば、権利者が儲かったから)。
命令セットとかバスの仕様が独自(or改変)かどうかは全く問題では
なく、その設計に使った技術が特許に抵触するかどうかが問題。
これはハードウェアに限った話ではなく、
フリーソフト等でも全く同じ。
いじょ
128 :
◆ro/FPGA/X2 :04/01/13 19:44 ID:mACV2Qs2
ソーユー訳で、昔のスーパーミニコン辺りがかなりメデタイわけだね。
パテントは切れてるから問題なし。BSD系のサポートもあるし。
とりあえず実用的に使える可能性のあるものが作れる。
うざ
>>123 そうか?
OPコード考えるのは楽しいぞ。4bitマイコンで、BCD16桁加減算を1命令でやる
ようなふざけたOPコードなんてのもみたことあるけど、そういう尖ったのがみたいな。
つか、流用とかを考える時点で、激しくオリジナリティがないのでつまらん。
互換CPU作って何が面白いんだ?
>>130 答えは、仕事で色々と似たようなことしてると色々と面倒になるんだなこれが。(w
ま、色々と意見を出してめいめい遊べばいいと思ってるのでもっと提案して欲しいな。
漏れは、有り物は使って楽をしよう派なので上の通り。強制はせんよ。
オマケだけど、どっちにしろアセンブラ等開発ツールの使い回しは無理っぽいので
OPコードの流用には大きな意味は無いと言うのも事実ですね。
133 :
◆ro/FPGA/X2 :04/01/14 00:16 ID:bGbGRXkI
8bitマイコン程度なら、個人の思いつきでもなんとか纏まるでしょう。
実際8ビットマイコンは沢山の製品がありました。
しかし、16ビット化への段階で大半が脱落しました。
32ビット化の段階でRISCが出て、64ビットの勝負はこれから。
ま、設計作業の常だけど、目的を明確にしなければ、迷走のハテに立ち消えとなるわけですね。
世には色々と参考になるCPUが転がってますしOPENCORESなんて只の
例もたくさんあるんだから参考にしてみるのも手だね。
とりあえずは人様のRTLを見る機会を作って勉強から入らないとね。
とりあえず、個人的には16ビット拡張されただけの6502のFPGA版作ってます。65816とはちまう。
あとはld h,(de)とか欠落部分をインプリメントしたz80を作ってみたいなと。
手持ちの開発ツールの関係上Virtex2上に焼きこんでいます(PPC載ってるのに馬鹿っぽ)
136 :
MyDoom被害者:04/01/30 22:53 ID:zRLd7Vgo
前に中国人の学生がARM7不完全コンパチIPを無償Web公開していたって
聞いたんだが、そのハナシはどう片付いたのだろうか?
噂では、もう公開していないそうなので、その学生、「こいつは有望だ!」って事で
ARM社に入社したのかな?
>>136 OPENCORESに公開していた互換コアのことだと思うけど
クレームがついて引っ込めて以来二度と表に出てません。
138 :
774ワット発電中さん:04/02/28 10:43 ID:JwoEROVH
/* デンキ板ってあったんですね。しらなかった。 */
これからはマルチコア on the chipじゃないでしょうか。
なるたけシンプルなRISCコアをFGPAにどれだけ詰め込めるか、みたいなチップがいいです。
トンガってくるのではないでしょうか。
電気の速度の限界を並列化でクリアするのは良い考えだと。
140 :
774ワット発電中さん:04/02/28 12:31 ID:BRuHHix3
>>12 >>13 最近のAMDの発表などを見ても、もうすでにPC用CPUでは命令セットと処理速度はあまり関係ない
時代になってきてると思うけどね
命令セット自体がそのままハードウェアロジックに対応する時代じゃないからね
まあ、PC用ほど市場規模が大きくなく、消費電力も価格も限られる組み込み型なら
まだそうなる時代にはなってないが、
将来的には、組み込みCPUも、命令セットはx86互換になっていくとおもうな
組み込み機器もどんどんソフトウェアが大きくなり、OSやTCPIP、GUIをつむ物も多くなるから、
そうなればソフトで優位に立っている、すでに市場で優位を占めている命令セットに集約され、
市場シェアを取れないメーカーは互換命令セットのプロセッサを出すしかなくなるでしょう
C/C++合成とFPGAの組み合わせっていう
のが意外と大化けするんじゃないかと思っ
てる。
命令セットに意味がなくなるどころか、
「命令セットを持たないコンピュータ」
になるけどね。
142 :
774ワット発電中さん:04/02/29 15:41 ID:KC/Q1hTg
>>141 組み込み系では、ありそうだけど、いつごろ実現するやら。
1チップマイコン屋はあぼーんか。
>>141 それはアイディアとしてちょっと盲点でした。
ただ、そんな用途にもC,C++?
>>141 FPGAだと中身RAMが多いけどという
野暮な突っ込みは止めるとしても。
消費電力とか、結局はゲート数&クロック勝負に
ならない?とか問題があるからなー。
それならばプロが真剣に論理圧縮や消費電力の
削減に取り組んでいる標準回路(つまりCPU)の方が、
いいんじゃないのか?と言う事になり…結局は昔からある、
ソフトか?ハードか?という命題に行き着くのね。
ちょっと昔は、ちょっとした低速ロジックをソフトウェアで
置き換えるという話で、PICやAVRなんかがある訳だけれど。
SXマイコンなんてのは特にそうだけれど。
ここら辺でまたハードウェアに戻るなんてのもありかもねー。
FPGAと聞いたら「ハード」と思ってしまうのがいけない
んじゃないかという気になってるんだけどね。
単に山ほど並列演算処理をさせることができるCPU
なのだと思えばいいだけじゃないかな?
あるいは、ストアードプログラム方式じゃなくて
ワイヤードプログラム方式の計算機だと見なせば、
これはENIACの直系の子孫かも?(笑
今のFPGAはこういう用途はあまり考えてないから無駄
も多いけど、コンパイラと一体にしたCPUと考えて
最適化していったら、結構イケるものができるんじゃ
ないかなぁ。
コストメリットがあれば意外にいけるかもしれない。
ただし、マイコンに特有のアナログI/Oをどう扱うか等
クリアしなければならない問題は多いだろうね。
アイデアとしては非常に興味深いが、実装面をどうするか
に尽きるかと。 ・・・アメリカならこの手のアイデアに投資する
人が居るかもしれない。
>>145 GRAPEですでにやってるべ>単に山ほど並列演算処理をさせることができるCPU
>>147 そういや今年のフォーラムで発表があったようだけど結局TFLOPSは
達成したのでしょうかね。
>>147 でもそんなこと言い出すとノイマン型なんて
腐るほどやってる。
今月のデザインウェーブはCベース設計事例で、
ブロック崩しとワイヤーフレーム3D
FPGAはプロセッサ・・だね。
151 :
774ワット発電中さん:04/03/19 16:30 ID:mBsulQAk
そろそろアメリカ勢がCPUにMMXやSSEのようにベクトル命令を入れてくるころかな?
そうなれば国産ベクトルマシン全滅?
152 :
MyDoom被害者(深刻):04/03/23 23:35 ID:4hl+gKAy
2ちゃんで皆で意見を出し合って無償のアーキを創出できたら
素晴らしいな。チップの開発コードネーム「リアル厨房」とか。
コテハンや荒しの意見にも耳を傾けて、オープンな設計思想を
育むんだヨ。
まずは俺からだ。AE86アーキをベースに、FR駆動方式で
どうでしょうか?後半がちとマイナーなんて言われそうだけど、
俺的には気に入ってます。
やっぱり、マーチのスーパーターボがすごかったと思う。
154 :
774ワット発電中さん:04/03/24 04:14 ID:c7jQOPNR
155 :
MyDoom被害者(深刻):04/03/24 22:26 ID:XKvu+r+w
2ちゃんねる専用ブラウザに特化した2ちゃんねる専用プロセッサーを
皆のオープンな自由な意見集めて開発しよう。
何も知らない素人の発想だが直列の演算子の並列化及び超並列化ではどうか。既存の延長上の並列の演算子の拡大ではタイミングを合わせる上で限界があるように感じる。もうあるのならすまん。
中の人がとにかく必死に働くチップにしましょう
CISC=>RISCときたんだから、次は
NISC(Non Instruction Set Computer)
| Hit!!
|
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ
_ ム::::(,,゚Д゚)::| おまいら釣れますか?
ヽツ.(ノ:::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
160 :
774ワット発電中さん:04/06/08 15:44 ID:2+x/gTXD
カレン
hosyu
専用ちp、隅にセリフ付きAA入れたいね
解析必死だな( ´,_ゝ`)プッ …とか。
/`i /~ヽ
,,/ "''"'` "`;,
(ヽ;" ´ ∀ ` * ,;/) ポィン
`ミ "ミ ポィン
ミ ミ ハ、_,ハ、
彡 ミ ;'´∀`* ';
(⌒";',,,.,(⌒";'彡 ミc c ,;彡
`'"' `"'' `゛''''"
ヽ / ヽ
ヽ / ヽ γ⌒ヽ
Y Y ヽ
>>163 というコードの入ったROMの方がよかろう
AAそのままのパターンじゃ見たらすぐわかる
166 :
774ワット発電中さん:04/11/25 16:09:05 ID:5UVLzEHw
age
漏れはi4004をいじってみたい。回路とかもう公開されてもいいはず。
あとレプリカを出して欲しい。クロックがGHzだったりして
漏れはi4004をいじってみたい。回路とかもう公開されてもいいはず。
あとレプリカを出して欲しい。クロックがGHzだったりして
漏れはi4004をいじってみたい。回路とかもう公開されてもいいはず。
あとレプリカを出して欲しい。クロックがGHzだったりして
174 :
ガバチョ:2005/06/23(木) 17:31:44 ID:bTPcQgtZ
ヽ( ゚д゚) ヽ< ガバチョ !
ESECにいったら、H8SコアがFPGAに乗ったらしいな。
でもツールは安いE7が使えないようだ。
SH4はALTERAのStratix用ネットリストで提供されているよ
今更買わなくても自分でFPGAとかで作れる時代だ死ね
MSX-IP だけ抜き出して 5000円 くらいで売る
ハードは回路図公開しておいて、
基板のみ 5000円
部品付キットが 10000円
完成品が 15000円
(上記3つに MSX-IP を追加で購入すると完成)
みたいな構成にすればもう少し需要はあると思う
ASCII は売り方間違えてるよ
>>181 VDPのIPは同人で作られていて公開されてる。
他のスロット機構なんかは正直、難しい内容ではない。
後はPSGとZ80コアだが…
最終的に3400台の予約にすぎず、商品化はできなかったとよ。
それでも3400台は集められるんだなw
液晶が付いていて乾電池駆動が可能だったなら、MorphyOneに引っかかったやつなら84000円で即買いだったのにな。
,,,,.,.,,,,
ミ・д・ミ <ほっしゅほっしゅ!
""""
188 :
1:2006/02/21(火) 07:22:13 ID:IFoSl6qo
h
189 :
774ワット発電中さん:2006/03/26(日) 06:35:23 ID:wuBU92/u
FPGAでCPU作るならFUJIC(日本発のコンピュータ)作らんか。
RISCみたいな命令セットで1語33bitで256語のブラウン管メモリ。
ロジックが真空管18000本だから9Kゲートであとはメモリ分だから
1万行いかないかな。
190 :
774ワット発電中さん:2006/03/26(日) 10:05:50 ID:WlBVHRW/
一番簡単なCPUならFPGAを使うまでもない、メモリとレジスタ数個で完成。
プログラムカウンタもALUもないけど立派にプロセッサとして機能する。
>>189 いいねえ。作ってみたい。
簡単なCPUなら数百行だからな。
FUJICでLEDちかちか。
>>189 あれ、FUJICの記憶って水銀遅延線だったよな。
(国立科学博物館で説明文を見たキヲクが)
確か命令は17種類しかないんだよね。
CPUとプログラム込みで論理合成掛けたらどんな回路が出来るだろう。
>>194 どっかからCPUコア拾って来て実際にやってみればいいじゃないか
プログラムはRAMに放り込んでおけばいいんでないかね
そういう意図じゃないと思う
たぶん例えばCPUとMPEGデコードプログラムをいっしょにして合成したら、
MPEGデコードハードができあがるとか期待してるんじゃなかろうか?
SystemCも真っ青なハイクォリティだな
ループとかテーブルジャンプみたいなのは
ハードウェアでは具体的にどう実現するんでしょうか?
アルテラからプログラムのハード化ツールが発表された。
キャッシュの実際のRTL設計の参考になる
おすすめの資料はありますか?
メモリウェイトが掛かるとCPUは停止するのですか?
止まる訳じゃないです
CPUメーカは嘘ばっかり。ストールしまくりじゃないか。
止まる訳じゃないです
CPUによってちゃうし。
素直にメモリ待っているやつもおるし、メモリ待たんでも他にやることやろうとするやつもおるし。
とりあえずパイプラインの中でできるやつはやる。
キャッシュのなかで実行できるやつは実行する。
別のバスがあってそっちでできることはやる。
ってくらい?
でも、ウェイトがかかっているメモリのアクセスが本当にいるんだったら、そこで待っちゃうね。
68000だっけ?
外部タイマで規定した時間以上アクノリッジが戻らないとバスタイムアウトエラーにできたよね?
(このごろ68000系触っていないから忘れたけど)
外部バス使わなくても動ける所は動きますな。
68Kはそういう場合/BERRをアサートするんでなかったかのう。
一般に割り込みは命令の切れ目で判定される。
メモリアクセスが終わっていないっつーことは、命令が終わっていないことだからな。
他にできる命令があって、それの切れ目で判断されるかどうかはアーキ次第。
リセットも割り込みの一種と考えるとこれはかかっちゃうかな?
昔、CPUのリセットはフリップフロップのリセットと同じだと考えていた香具師がいた。
そいつの育った時代はそうだったかもしれないが、かなり早い時期にそうじゃなくなったんだよって半日かけて説明してやった。
客だったが正直疲れた。
>>213 >昔、CPUのリセットはフリップフロップのリセットと同じだと考えていた香具師がいた。
>そいつの育った時代はそうだったかもしれないが、かなり早い時期にそうじゃなくなったん
>だよって半日かけて説明してやった。
>客だったが正直疲れた。
「CPUのリセット」とかって大ざっぱに説明されてもねえ。。。
リセットには種類があるんだけど。
>「CPUのリセット」とかって大ざっぱに説明されてもねえ。。。
>リセットには種類があるんだけど。
そのとおり。
それを理解していないやつが案外多い。
しょうがないなw
リセットしたらロジックも全部リセットされますた
世間もリセットしたかった
CPUのリセットと周辺系のリセットがちょいと違うことがある。
リセットにノイズがのったときいやなことになる。
補修
リセットよりリセッシュが必要です
いや、我が社はファブリーズが指定です。
リセットは掛けるより解除が難しい。
225 :
774ワット発電中さん:2006/08/20(日) 12:43:55 ID:w1Cb5syo
ファミコンのリセットと同じだろ。
HLHで終わり
おぃおぃ、このスレの書き込みとはとても思えないな
今俺が作ってる回路はレジスタを強制的に全部0にするだけだぜ!
そういうCPUもあるけど、世の中それだけじゃーないよ
おう、だから俺が作ってる奴の話だぜ!
おう、ならばノープロブレムだ。がんばってくれ!
軽いリセット。強いリセット。優しいリセット。激しいリセット。など
割り込み50個あるプログラム書いた
動かなかった
まぁ、原因はいろいろ考えられるが。
デバッグがんばってな。
234 :
774ワット発電中さん:2006/08/25(金) 22:32:33 ID:oYFeaT5Y
レジスタ操作か…
ハイレベルなスレだな。
ソフトとハード両方最適化すると仕事が終らない。
まずは仕事を最適化汁
ERRORとWARNINGがたくさん出て最適化できません
その会社に最適化オプションは実装されていないか、あるいはバグだらけです。
あー、ちょっとバージョンが古すぎますね。
サポートとバージョンアップサービスは終了しています。
242 :
FAQ:2006/09/12(火) 00:37:46 ID:bzUvPqTY
Q:新しいバージョンは購入できますか?
A:残念ながら、開発中止になっています。
ところで、割り込み50個はその後どうなったかな?
244 :
774ワット発電中さん:2006/09/21(木) 04:09:37 ID:+0s9rHO5
age
論理記述はVelilogがよいのでしょうか?
ヤリなれたのがあるならそれが一番だ
これからやるなら、回りで何使っているかも見てみて
他人の知見を使えるのは楽だからな
247 :
774ワット発電中さん:2006/10/29(日) 22:21:00 ID:jKvnFCeh
RISCとCISCってハードウェア量どっちが多いの?
>>247 一概にどちらとは言えないよ。
最近のコアはRISCが多そうなんで、結果的にRISCの方が多いかね。
PowerPC は intel に比べて本当に優秀なんですか?
>>249 何を持って優秀とするか?をまず定義してからじゃね?
一連の馬鹿っぽい質問は釣りですか?
>>249 ソフトの開発環境が同じならPowerPCが速くて安い。
PowerPC は、プロセッサ。Intel は、会社名だ。
「PowerPC は、8086 と比べて、本当に優秀なんですか?」
と聞こう。
ペケ86なぁ
メモリバスが3系統あってもいいじゃないか
都営バスと西武バスと京王バス
各駅停車用と快速・急行・特急用とかで複々線化するのは良いことだね
インターロックを外したCPUはないですか?
古来のMIPS
sage
262 :
掲示板初心者です。:2007/05/10(木) 10:26:55 ID:C3oZViuW
はじめまして。
メーカ勤務組み込み技術者です。
どなたかRISCとCISCの明確な違いってご存知ですか?
どうしても、メーカの自主宣言のような気がします。
いまのところの大まかな認識では、
パイプライン処理、そのための固定長命令、レジスタ-レジスタ間のみの演算、ワイヤードロジックでのコア内部シーケンサ構成。
などでしょうか、、、。
けど、多種の疑問点が、、
パイプライン処理を行うx86系CPUの存在。
16ビット固定命令+32ビット命令を持つSH2の存在。
水平マイクロプログラムとワイヤードロジックの差。
(最終的にはどちらも1ビットに1線のような気がします。)
一応、「Computer Architecture A Quantitative Approach」
は読んだことありません。また歴史的側面はくわしくないです。
これを踏まえてどなたか明確な差異について教えてください。
CISC/RISCと分けるのって10年以上前の感覚で、
今はそんな単純に分けられるレベルじゃねーぞ!
って思うのだが。
264 :
技術奴隷:2007/05/10(木) 15:07:54 ID:Y5JNISzD
X86はC-RISCと言われる事もあるし、「RISCとCISC」なんて今時「歴史的側面」
くらいの意味しかない事が多いので、その辺を勉強される事をお勧めする。
見分け方
0レジスタがあればRISC
明確な違いというか、線引きは宗教論争だけどなぁ。
歴史的経緯というか、コンパイラとCPUの関係とか、メモリ帯域の有効利用とか
そっちの方だけ認識してれば十分じゃないかと…。
一応、固定長命令辺りに一票。
ARMみたいなのもあるし、明確にわける必要もないのではと
思ったりするわけですが。
VLIWくらい特徴があればわけてもいいかもしれんが。
ttp://ja.wikipedia.org/wiki/RISC 「これがアドレッシングモードの削減と命令の削減であり、
縮小命令セット (Reduced Instruction Set)という用語が生まれた。
RISCデザインのプロセッサは巨大な命令セットを持つこともあるので、これは正確な用語ではない。
本当の違いは、全ての演算をレジスタ間で行い、
メモリへの読み書きもレジスタとメモリの間でのみ行う点である。
このためRISCはload-storeとも呼ばれる。」
この説明を100%信じている自分はいったいどうすれば……
クロックジェネレーターまで勉強が進んだ。めちゃめちゃむずいなCPU。
物理を履修しておいてよかった。
メーカーがRISCだ!といえばそれはRISCだ。
そしてRISCの定義はトートロジ的に拡大していくのだ。
RISCはCISCの5倍の性能
274 :
掲示板初心者です。:2007/05/10(木) 23:32:24 ID:qeGNAw7h
皆様
ご回答・ご見解ありがとうございます。
もともとは、RISCという響きがなんかかっこいいので、てごろに実装できるSHを触ってみました。
ところが自分なり深く勉強するうち明確な境界が判らなくなり、おもわず聞いてみた次第です。
世間知らずで恐縮ですが、10年前の感覚、ということは結構あたりまえに議論されていることのようですね。
その議論されている状態を認識した上で各メーカは製品郡を分けているのでしょうか?
私は言葉に弱いので、すぐ食いついちゃいますね。RISCはなんか新しくていいんだろうと。
では、失礼します。
>>274 SHは…いつぞやのHotchipで発表された時、パターソンだかヘネシーだか忘れたが大御所に
「それRISCじゃないだろ?」と突っ込まれた経歴があるのだ(w
もっとも、命令密度の低さ、コードサイズの肥大化は当時は誰もが気にしていた訳で
その後、ARM ThumbやMIPS16等、組み込み向けが16bit化コードを取り込んだ訳だが。
>私は言葉に弱いので、すぐ食いついちゃいますね。
歴史的意義は大きいけれど、既にイメージ狙いのマーケティングトーク化してる。
なんとか2.0と言う奴と一緒で、言った物勝ちって事だな。
国がが軍隊ではない!といえばそれは軍隊ではないのだ。
そして集団的自衛権の定義はトートロジ的に拡大していくのだ。
MIPSやPowerPCなどが出てきて広く注目されただけで、非武装憲法と
自衛隊の違憲問題と同様、RISC/CISC論争は、それ以前からあった。
> 歴史的意義は大きいけれど、既にイメージ狙いのマーケティングトーク化してる。
> なんとか2.0と言う奴と一緒で、言った物勝ちって事だな。
ファジー制御とか、遠赤外線とか、マイナスイオンとか、トルマリン
なんかと似たようなモンだな。
SPARCを忘れんでください。
まんまな名前のPA-RISCは、忘れてください。
Alphaも思い出してあげてください。
つ FRV400
281 :
774ワット発電中さん:2007/05/13(日) 20:57:42 ID:bNwvEOSd
>>272 それ、たるさんが考えたように書いてあるけれど、嶋正利氏によると
命令セットの設計で当然考慮することらしいよ。
ところで、なんでRISC風の命令セットを圧縮したものを直接実行する
プロセッサがないんだろう。ハフマン圧縮一族なんて所詮テーブル参照だから
x86のデコードよりもずっと展開しやすいはずだし内部コードが
既知である分コンパイラの最適化が直接効きやすいと思うんだけど。
テーブル参照に時間がかかるからだろ。
>>281 RISCとCISCの本質を理解していたら、RISC風の命令セットを圧縮したもの
なんて馬鹿な発想は出てこないはずだ。
>>281 の言う「RISC風の命令セット」って具体的にどんな命令セットだ?
RISCの特徴として、パイプライン処理の効率化とバスアクセスの単純化の
ため、固定命令長を採用している場合が多く、また関数を呼び出しの際に、
コンパイラが多くの引数をレジスタを渡しにできるよう、汎用レジスタを
多くしているため、命令コード中に占めるレジスタを指定するビットフィ
ールドが多くなり、CISCに比べ命令長が長くなる傾向がある。
それに比べ、x86は頻繁に登場するMOV系の命令を中心に、多くは2バイト
命令で、1バイトや3バイトといった奇数バイトの命令もある。
レジスタの少なさと、汎用性のなさ(特定の命令は特定のレジスタを使う)
が欠点と言われてきたが、一次キャッシュの大容量化と、レジスタリマップ
など内部の改良でこれらの欠点は克服されてきた。
CISCの代表である、Z80のブロック転送命令やx86系のストリング系の命令
を採用せず、それらは複数の単純な命令として実行するという発想が本来の
RISCの考え方で、
>>272 は、RISCなら複数命令に展開されるこれらのCISC
固有の命令を「圧縮された命令」と称している。
RISCには存在しないのだから、圧縮のしようがない。
ハフマン圧縮は「圧縮された命令」の比喩であり、ハフマン圧縮それ自体
の処理速度や速度比較ではない点をまったく理解していない、
>>281 の
理解力のなさだけが、とても痛い。
いいこと言った
今日一番感動した
パイプライン25段
それくらい深ければクロックは5GHzくらいいけるかのう。
288 :
281:2007/05/15(火) 00:19:53 ID:Z9YeJ4I2
x86 に限らず最近のプロセッサでは内部でより小さな(RISC風)命令に
変換されて実行されていることを
>>283 は知らないようだが大丈夫
だろうか。
>>272 の引用先に詳しく書いてあるので参照しておくれ。
>>281 は、仮に x86 内部で使用されているμOPをコンパイラで直接
合成してしまい、それを例えばハフマン圧縮したものを直接プロセッサに
食わせたらどうだろうかという話なんだよね。もちろんそのまんまだと
ジャンプ命令などで問題が出て来るけれど、その辺はおいとくとして、
メモリ上のバイナリが x86 デコーダを経由してμOPに変換されるのと、
ハフマンデコーダを経由してμOPに変換されるのとではどっちが効率が
いいだろう。
試したわけではないので単なる推定だけれど、ロジックの規模は
「所詮テーブル参照」であるハフマンデコーダの方が小さいだろう。
最適化はどうかというと、最終行に書いたようにハードで動的に最適化
するよりもソフトで最適化した方が一般的には効率がいいだろう。
メモリの使用効率はというと、「圧縮された命令セット」とはいっても
専用の圧縮アルゴリズムにはかなわないだろう。
にもかかわらずそんなプロセッサが実験的にも存在しないということは
これらのメリットを全く帳消しにしてしまうような大きなデメリットが
あるからで、それは何だろうというお話なんだよね。分かってもらえた?
>>288 RISC的にしろなんにしろ、高速に実行可能な命令セットを下手に人の手等でx86の様に纏めず、
何らかの数学的圧縮するというアイデア自体は悪くないと思うのだが…
一つだけ。
そこでx86を持ち出すのは意味が無い。
x86のメリットは、x86である事、その事実に尽きるから。
どうでもいいが、レジスタリネーミングは
x86の恥ずかしい部分だと思ってるぞ。
論理レジスタがたくさんあれば、そもそも必要ないという意味でね。
別に恥ずかしくなんかないじゃん。
過去の資産を活かす現実的な解でしょ。
もちろんRISC系の命令セットだったら
もっと有意義なことにリソース使えるのにというもったいない感はあるが。
>>291 いや、それは分かっているんだが、
これのせいでトランジスタとある程度のクロック数
(レジスタリネーミングそのものを行うクロック数ね)
が犠牲になることを考えると、
なんだかなぁ、という感じ。
命令セットの関係で論理レジスタが増やせないとか、
過去の負債を引きずってるだけだろ。
もちろん、それが現実的な解決策だってことは十分分かっているんだが
「命令セットのせいで、それくらいしか解決方法が無いんだろ」
と、いつも思ってしまう。
CPUとプログラムまとめて論理合成しちゃってFPGAに食わせる
普通にCPUとプログラム入りメモリが合成される悪寒
295 :
281:2007/05/15(火) 09:09:46 ID:Z9YeJ4I2
>>290-292 確かに x86 の場合は設計の悪さをカバーするためのテクニックという印象が
強いけれど、レジスタが腐るほどたくさんある IA-64 みたいなプロセッサでも
レジスタリネーミングは有効な場合があるよ。例えばレジスタ r1 を使用する
場所に複数の所からジャンプしてくる場合において、ジャンプ元で r1 を使って
いる可能性がある、
move r1,address1・・・*1
jump L1
〜〜〜〜
move r2,address2・・・*2
jump L1
〜〜〜〜
L1: move address3,r1・・・*3
move r1,address4
というようなコードがあった場合、*2 と *3 は並列実行が可能だが、*1 と *3 は
レジスタリネーミングがないと並列実行は出来ない。*3 の直前に実行されるのが
*1 か *2 かは実行時にならないと分からないのでコンパイラでの最適化はあまり
期待できない。(jump は遅延分機命令で *1,2 と *3 はパイプライン上で隣接して
いると思ってください)
P.S.
>>282 テーブル参照にかかる時間は一時キャッシュの読み書きにかかる時間と
同程度だからデコードと参照にそれぞれ 1〜2 クロックぐらいのレイテンシが
つくぐらいだと思うんだけどどうだろう。
>>289 確かに x86 のメリットは x86 だから、ということに尽きるんだけど、
>>272 の参照先で x86 の圧縮された云々という解説をしていたもので…。
>>281 そういったコードで、本当にレジスタが腐るほどあるなら、
最近のコンパイラではほぼ間違いなく
L1: move address3,r1・・・*3
move r3, address4
というふうにコンパイルされるから、
あまり問題にはならないはず。
(8つの論理レジスタを適切にレジスタ割付すようような
コンパイラがこんなコードを生成するはずがない)
もちろん、インラインアセンブラで書いてるとかなら別だけど、
その効果はほんとにわずかなものだと思う。
その証拠にIA-64では実際にレジスタリネーミングをしない。
>>281 あと、デコードのテーブル参照にそれぞれ1〜2クロックのペナルティがつくのは
addのレイテンシが1〜2、movが1〜3だということを考えると
全然話にならないと数字だと思う。
>>296 一度にコンパイルするならそうだろうけれど、分割コンパイルやライブラリ化されてると無理なんじゃ?
リンクする時に入れ替える手もあるけど、それじゃ静的な物に留まる訳で…
OSがロードする時にレジスタ再割付でもしてくれるなら…
>>295の言うテーブルって例えばコンテキストごとに異なる動的なテーブル?
だとしたらコンテキストスイッチ遅そうだね。
静的なテーブルだったらマイクロプログラムみたいなもんだし。
>>298 IA-64だとレジスタスタックなるものを用意して、
関数の呼び出し元と関数本体で
レジスタ名がバッティングしないような工夫がされているらしいです。
>>300 > レジスタリネーミングを行うCPUは物理レジスタを、
> プログラミングモデルが提供する論理レジスタよりたくさん用意することによって、
> 積極的なレジスタ名の変更を可能にします。
x86の場合、この比が 8 : 128 とかだよ。
ちょっと積極的すぎやしないかい?
>>296-298 自分で書いといてなんだけど、
>その効果はほんとにわずかなものだと思う。
これはそう思う。静的に解析できるものは可能な限りコンパイラで
やるべきだと思うけれど静的解析が出来ない一例ということで。
>>297 デコードはパイプラインハザードを発生しないのでレイテンシは
キャッシュミスと分岐予測ミス時にしか見えないと思う。
>>299 圧縮率を上げようとするとキャッシュのラインごととか、もっと
細かい単位になると思う。コンテキストスイッチに限らず遠くへ
分岐した際にテーブルのリフィルにはコストがかかる(
>>288 で
置いといた問題)。これをどの程度まで低減できるかはよく分から
ないが、合計したコードサイズが減るのなら収支は黒字のはず?(怪)。
もっとも期待はコードサイズ削減よりもスケジューリングを
コンパイラでやることによるパイプラインの簡素化なんだけどね。
>>301 リネーミングのロジックにかかる負担をレジスタの多さでカバー
しているのかも(根拠なし)。
RISC のレジスタ数はコストのかかるメモリアクセスを避けるために
ローカル変数をほぼ十分割り付けられる数が根拠になっているので
レジスタを無駄なく使うと余りまくると思う。
MIPSの32個程度じゃローカル変数全部入れるには足りないと思うが。
規約で実質半分ぐらいしか汎用に使えないし。
>>302 論旨をあまり理解していないのでこれは的外れかもしれないが、
>>288でいっているような、
> μOPをコンパイラで直接合成してしまい、
> それを例えばハフマン圧縮したものを直接プロセッサに
> 食わせたらどうだろうかという話なんだよね。
という話だったら、それは間違いなく愚か。
μOPの仕様はIntelのプロセッサによっても違うし、
当然AMDやTransmetaのCPUとは互換性はない。
すべてのCPUを識別して、適切な命令を合成するの?
>>303 演算に使えるのは実質4〜5程度なので、
それ以上の値を同時に扱おうとするとL1様に登場して頂くしか無くなる。
これはレジスタリネーミングが無力化するいい例だと思う。
レジスタは、足りないよりは余った方がいいに決まっている。
306 :
283:2007/05/17(木) 10:32:56 ID:AxPVNF9k
ムダに論理レジスタ数が多いRISCアーキテクチャは、命令コードに占める
レジスタ指定のビットフィールドが広くなり、固定命令長にこだわるため
CISCなら1バイトや2バイトで済む命令コードが4バイトになる。
CISCもRISCも一時キャッシュや二次キャッシュの容量は、大差ないので、
命令長が短いCISCの方が、より多くの命令数(プログラムステップ数)を
キャッシュに格納でき、その分ヒット率も上がり、RISCに比べてキャッ
シュの利用効率が高い。
外部バスへのアクセスで比較しても、バスの転送レートはRISC/CISCに関係
なく、メモリアーキテクチャに依存し、同じメモリならRISCもCISCも、バス
の転送レートは同等なので、命令長が短いCISCの方が、少ないバスアクセス
で、効率よく命令を取り込むことができる。
どこまで将来のことを考えていたかは不明だが、x86はよくできたCPUだよ。
>>305 途中が欠損したLZHファイルから、欠損ブロック以降のデータを復元でき
ないのと同様、任意の場所から復元可能な効率の良い圧縮方法など存在し
ない。
それに、出現度の高い命令のコードが短くなるようにOPコードマップを設計
するのはごく当たり前。だから、最適化されたOPコードをハフマンごときで
圧縮する効果はない。
それは、複数の圧縮方法を組み合わせるLZHやZIPを使ってさえも、EXEファ
イルは圧縮後のサイズが小さくならないことからも明らか。
>>306 今のx86は内部でCISCなコードをRISCなコードに展開して(例外的に展開しない場合もありますが^^)
つまり固定長バイトの命令として実行&キャッシュに保存しています。
これはいいですよね?
RISCのレジスタがなぜ多いかというと、アウトオブオーダー実行や
並列実行させやすくなるためというのが主な理由だと思うのですが、
当然x86も内部ではそれと同じことをしているわけです。
つまり、「RISC=レジスタ数が多い方がいい」という説を信じるのであれば
今のx86でも論理レジスタ数は多い方が自然だと考えるのでは無いでしょうか?
命令のバイト数が少し増えてもデコーダの拡張により将来的な速度アップが期待できますが
命令フォーマットの関係でレジスタ数が制限されてしまうと、どうしようもありません。
また、物理レジスタの数がいかに多くても、
論理レジスタ:物理レジスタが8:128のようないびつな環境では
>>305のようにレジスタリネーミングだけでは対応できない場面というのが当然出てきます。
また、x86も内部では固定長バイトとして命令をキャッシュしているため
特に命令1次キャッシュの効率は他のRISCプロセッサと大して変わりません。
あと、ちょっと気になったのですが、
lzhやzipは圧縮方法としてはかなり効率が悪い方です。
実際にupxなどを使えば実行ファイルでもある程度は圧縮できますよ。
>>306 >EXEファイルは圧縮後のサイズが小さくならないことからも明らか。
UPXとか既に使われてるんじゃ?
DOS時代だとDIETとかLZEXEとかそれなりに使われていたし
x86でも一定の効果はあるよ?
それはともかく、今利用されているARMとかは、レジスタ数とか命令セットの制限をした上で圧縮してる訳だから
利用可能なレジスタ数等を制限せずに圧縮できるのなら意味はあるんじゃないかな?
>>307 >つまり固定長バイトの命令として実行&キャッシュに保存しています。
x86だと展開した命令をキャッシュに保存してるのは、トランスメタを除けば
トレースキャッシュを公言していたネットバースト系アーキテクチャだけじゃないかな。
309 :
283:2007/05/17(木) 15:26:20 ID:AxPVNF9k
RISC優位論者が、あくまでRISC優位という方向に論点を持っていきたい
だけの気がするなぁ。
「古臭い」「時代遅れ」「いびつ」などというx86アーキテクチャを超える
RISCプロセッサが出現しないことが、RISCこそが「古臭い」「時代遅れ」
の考え方だということを証明している。
RISCのレジスタが多いのは、今ほどコンパイラの最適化が進んでいなかった
時代に、てんこもりの汎用レジスタを用意すれば、コンパイラによる最適化
なしでも高速化できるだろうという安易な発想が原点にある。
論理レジスタ数は、CPUアーキテクチャに依存する。32bitモードの導入で
レジスタ自体の汎用化は進んだが、バイナリ互換のx86は、論理レジスタ数
は今も昔も変わっていない。
x86で固定長なのは命令デコーダを通った実行ユニットのパイプラインの
中だけ。命令キャッシュや二次キャッシュは、x86のコードのままのはずだ。
そうでなければ、キャッシュのヒット率や利用効率が大幅に下がる。
FPU命令を除外しても、x86の命令は最小で1バイト、プリフィックスを含め
れば最大で10バイト以上になるんだが、命令キャッシュに固定長で記憶され
ていると言うなら、何バイトだと?
整数系の命令だと、たぶん32bitのイミディエイト値を、オフセット付きで
レジスタ間接参照されるメモリに書き込んだり、演算したりする命令あたり
が一番長くなるはず。
310 :
283:2007/05/17(木) 15:39:36 ID:AxPVNF9k
308
> DOS時代だとDIETとかLZEXEとかそれなりに使われていたし
DIETや、LZEXEが効くのは ...
static int buf[3000];
のように、スタティックに大量のデータ領域を宣言した場合、昔のリンカ
は、0x00で埋めつくされたデータ領域を含むEXEファイルを吐いていたので、
そうした領域が多いプログラムが圧縮できただけ。
純粋な実行コードに対しては、ほとんど圧縮は効きません。
初期化してない変数にアクセスしても、初期値は0x00と保証されていると
勘違いしているプログラマもいたな。今でも居そうだが。
>>309 x86アーキが生き残って、のさばっているのはx86アーキがすばらしいからじゃない。
IBM-PCからのソフト資産の問題でしょ。
312 :
283:2007/05/17(木) 22:49:39 ID:AxPVNF9k
RISCの数を揃えた汎用レジスタって、まるで社員数ばかり多けど能無し
揃いで、上から指示された単純命令しかこなせない、日本の大企業みたい。
社員あたりの生産性の低さを数でカバー?
エミュの技術も進歩した現在、x86を超えるアーキテクチャのRISCが出現
しないのはなぜ? それに、IBM-PCのハードに依存するようなソフト
なんて、今じゃほとんど使われていないでしょ。
313 :
281:2007/05/18(金) 00:08:54 ID:IdCkByK1
>>312 まあ、落ち着けって。
まず、x86 のファイルをさらに圧縮して実行なんて話はしていないぞ。
μOP を持ち出したから混乱したのかなあ。じゃあ例えば SPARC のコードを
L2 cache までは圧縮して格納し、L1 からは元の SPARC コードに展開して
実行するといったら分かるかな。NetBurst と同じ構造だ。SPARC の
コードは x86 よりも圧縮が効くということに同意していただければ
キャッシュに圧縮したまま格納することによるキャッシュやバスの有効
利用にも同意してもらえると思う。
それから、
>>306 の任意の場所から復元できる圧縮方法なら存在するぞ。
完全に任意ではないが。例えば 100 個のファイルを tar してから gzip
すると任意のファイルをそのまま復元することは出来ないが、100 個の
ファイルを圧縮してから tar でまとめると任意のファイルを復元できる。
圧縮率は悪くなるが分割単位を大きく取ればとてつもなく悪くなるわけ
ではない。簡単に実験できるので色々試してみればよい。だから
>>302 で
キャッシュのラインごととか、と書いたわけ。
あと、
>>309 >RISCのレジスタが多いのは、今ほどコンパイラの最適化が進んでいなかった
:
>なしでも高速化できるだろうという安易な発想が原点にある。
ちがいます。
なんかx86マンセーなのが多いな(あるいは声がでかいだけか)
先祖の遺産があったから巨額の投資ができてまだ生き残ってるってだけでしょ
たぶんまだかなり生き続けると思うけど
315 :
307:2007/05/18(金) 00:37:13 ID:DqGnMCjI
>>309 自分には、x86優位論者がx86は他のRISCプロセッサよりもすばらしいという
結論に持って行きたいだけのように見えます。
> RISC優位論者が、あくまでRISC優位という方向に論点を持っていきたい
> だけの気がするなぁ。
そもそも、今のx86が内部で命令をμOP単位で実行していることから見ても
多くの技術者がRISCの優位性をある程度認めているということでは?
少なくともx86自体は、決してすばらしいといえるものではないと思うのですが。
> 「古臭い」「時代遅れ」「いびつ」などというx86アーキテクチャを超える
> RISCプロセッサが出現しないことが、RISCこそが「古臭い」「時代遅れ」
> の考え方だということを証明している。
二つ言いたいことがあります。
まず一つ目は、今のx86はほぼRISCみたいなものなので、
言っていることが微妙に的外れということです。
IntelやAMDがRISC的なものを取り入れたことから考えても、
RISCにはある程度の優位性があるのでは無いでしょうか?
またもう一つは、例えば最近作られたCELLはRISC型プロセッサですし
IBMが作っているPower6もクロック数4〜5GHzで動くRISC型アーキテクチャです。
これらが完全にx86系CPU(x86が動くどのCPUでも構いません)に
劣っているという根拠はいったいどこから出てくるのでしょうか?
x86の場合だって過去のソフトウェア資産があったからこそ今があるようなものですし、
一般PC市場を席捲しなければその実力が認められない、と言った見方はあまりにも狭量です。
> RISCのレジスタが多いのは、今ほどコンパイラの最適化が進んでいなかった
> 時代に、てんこもりの汎用レジスタを用意すれば、コンパイラによる最適化
> なしでも高速化できるだろうという安易な発想が原点にある。
Intel自身でさえも、これから新規アーキテクチャを作る場合は
レジスタ数を8などにはしないでしょう。
実際、IA-64のレジスタ数は128です。
CELLのレジスタ数も同じです。
それはいったい何故なのでしょうか?
コンパイラ技術のせいなのでしょうか?
> x86で固定長なのは命令デコーダを通った実行ユニットのパイプラインの
> 中だけ。命令キャッシュや二次キャッシュは、x86のコードのままのはずだ。
> そうでなければ、キャッシュのヒット率や利用効率が大幅に下がる。
ネットバースト系のアーキテクチャを調べてみてください。
「トレースキャッシュ」という単語が出てくるはずです。
キャッシュ効率が下がるのは事実ですが、
2回目以降の実行ではデコードの必要が無くなります。
> FPU命令を除外しても、x86の命令は最小で1バイト、プリフィックスを含め
> れば最大で10バイト以上になるんだが、命令キャッシュに固定長で記憶され
> ていると言うなら、何バイトだと?
それ、自分も書こうと思ったのですが10バイト以上の命令はかなり稀なものなので
例外的に扱って構わないと思います。
というか、Intelの次期CPU,Penrynでもフェッチ帯域は16バイト/クロックなので
そんな命令が頻発されたら、キャッシュ能力の如何にかかわらずほとんど性能が出ません。
(Pentium4のμOPのサイズは、調べたのですが分かりませんでした。すいません)
IA-64とかCELLとかのゴミを例に出さんも
CELLはともかく、IA-64って駄目CPUなんですか?
なんかRadeonHD 2900もVLIW採用でイマイチらしいので、
VLIW技術自体が無謀なんでしょうか?
>>317 IA64自体はダメって訳じゃ無い。
最初のモデルはIA32代替としては期待外れな性能だったがFPU性能は強力。
数値演算目的だったら強力なCPUだ。
古いIA32ソフトが高速に動くCPUでは無いから、
単純なIA32の置き換え、という目的には意味無いけど…。
VLIWだからダメ、というのは意味が薄い議論だ。
まだ周辺技術がこなれてないというのはあるんでないかい。
命令詰め込むための静的解析とか。
>>317 おそらく
>>319 が正しい。ハードが楽するのならその分ソフトが
苦労しなければなりません。VLIW は RISC よりもハードの負担を
減らした方式だからコンパイラの最適化が極めて重要だが数値計算の
ようなある程度決まりきったパターンの命令列ではない一般アプリの
場合まだ十分な最適化技術が確立していないと聞いています。その点
GPU などの用途では比較的性能を出しやすいでしょう。
またコンパイラの最適化がしやすい命令セットというのもありますから、
将来最適化の技術が進んだ場合 IA-64 の命令セットに不満が出てくる
可能性は十分あります。
論理合成前のシミュレーションでは正常に動作したのですが
その後のはまともに動かないんじゃあ
誰かボスケテ
あ
あるある。
>>321 クロック周波数を落としても大丈夫な回路なら(DRAM などはクロックを
落とすとリフレッシュ間隔がのびて×)ぎりぎりまでクロックを落として
みたら? それで動くならタイミングシミュレーションで何か見落としが
あるか、バスが重すぎてシミュレートした仮定条件を満たしていないなどを
疑う。クロックを落としても動かないならそもそもボードにバグや配線
ミスなどがあるとか。
さんくす
がんばってみます
やっとMIPS I命令真似た自作CPUがFPGAで動かせたよ
このスレのレベルからしたら低レベルだけど
嬉しかったので記念カキコw
いまならV850が200円
タダでもいらね
ハードウェアシミュレータをハード化すると現物より速いのか?
最適化次第
>>329 そいつは用途次第じゃないかな。
ソフト書き直しじゃ不味いって用途向けに実装する場合は、
速度だけじゃなくて実行タイミングなんかも現物と一緒じゃないと不味いって場合も多いだろう。
名前が思い出せないのでソースが提示できませんが、算術的に圧縮された
命令ストリームを読み取って、内部的に元の命令ストリームに展開しつつ実行する
MPUは過去に存在しました。
すごいな
334 :
774ワット発電中さん:2008/01/02(水) 15:26:42 ID:FtIUkHRq
遅延分岐がパイプライン処理にとってどういう利益があるのかよくわからないのですが
どなたか解説お願いします。
JUMP a
LOAD b,x
こんな場合、JUMPを実行する前にLOADを実行しちゃうんでしょうか?
無条件分岐なら遅延分岐はしない。
条件付JUMPなら、分岐するって解ったらLOAD命令の実行を途中で中止する。
ともかく実行しちゃうタイプのCPUもあるよねぇ。
>>334 JUMP命令のデコードをした時点で、既にLOAD命令が実行にとりかかっている
んで、待った!をかけるよりも
「やりかけた仕事は最後までやってしまえ」というほうが設計上楽ができるわけ
>>334 利益???それは思考の順序が違う。
パイプライン動作を導入すると遅延分岐動作になる実装設計があり、
その場合、遅延分岐にならないようするには追加の回路が必要になるので
回路規模が大きくなって、ついでに速度が落ちるかもね、という事。
(遅延分岐にならないようにする回路を用意せず)遅延分岐をそのままにしておいても、
遅延分岐動作そのものは不都合にならないケースが多いので
追加回路を入れるか入れないかはトレードオフであり心情の問題でもある。
>追加回路を入れるか入れないかはトレードオフ
つまり、何らかの不利益と引き換えに何らかの利益があるわけだな。
340 :
334:2008/01/03(木) 01:16:35 ID:xJxcwfVZ
皆さんどうもです
ソフトから入ってきてるんで順序が逆だったみたいですね
有益<回路が楽
と考えると自ずと答えが出るわけですかw
要するに遅延分岐はパイプラインバブルの有益な解決方法じゃなく設計が楽になるだけで
エレガントに実行したい場合は分岐予測なんかと組み合わせなさい ってことなんでしょうか
そもそも、そのあたりはコンパイラとセットであって、アセンブラで書く
ことは二の次なんよ。
ハードウェアは単純化して性能/コスト(ロジックの量)がなるべく
大きくなるようにして、その単純なハードウェアをうまく動かすように
コード生成する(遅延分岐もそうだし、実行順序の入れ替えなんかも)
というのがコンパイラのお仕事。
そもそも分岐なんかいらんわ
>>339 >つまり、何らかの不利益と引き換えに何らかの利益があるわけだな。
遅延分岐動作をさせない、最大のメリットはアセンブラソースが見やすくなる事でしょう。
大抵の人は普通の動作に慣れてる訳だから。
ソースっか
ソースっと?
CPUは、分岐時、分岐先の命令がCPUに到着するまで、
パイプラインが停止(ストール)しちゃうのね。
このCPUストールの無駄時間がもったいないから、
この間、なにか命令を実行しちゃえってのが遅延分岐の考え。
でも昨今のCPUは優柔な分岐予測を備えてるから、
遅延分岐はもはやアーキテクチャ的な盲腸ともいえる。
遅延分岐なしのCPU
(1)分岐命令を実行
(2)CPUストール
(3)分岐ターゲット命令を実行
遅延分岐ありのCPU
(1)分岐命令を実行
(2)遅延分岐スロットの命令を実行
(3)分岐ターゲット命令を実行
ninja
nanja
monjya
× monjya
○ monja
monja-yaki
おまえらopensparcのソース読んだりするの??
役目を終えたCPUに用は無い
Oh, is the CPU it in your brain?
学習の為に16bit固定長命令(OPコード5bitオペランド11bit)のCPU作ってみようと思うんだけど、
普通のCPUの命令セットってどの辺揃えておけばいいのかな?
x86みたいにごっちゃごちゃにはしたくないし。
レジスタ間コピー、加減算、AND、OR、XOR、NOT、
左右論理シフト、左右算術シフト、即値格納、メモリ読み書き、
レジスタ間比較、条件ジャンプ(A>B,A<B,ZFlag=1,ZFlag=0)、無条件ジャンプ、停止
あと何か必要?
それと、符号付演算って必要だと思う?
現段階の案では正確に言うと左右算術シフトじゃなくてキャリー付き左右論理シフト
だった
call return は?
PCが汎用レジスタ扱いなのかどうか、
スタックポインタやリンクレジスタがあるのかどうか、など
プログラミングモデルの構想も聞きたい。
分岐命令やメモりアクセス命令は
プログラミングモデルと合わせて考える必要があると思う。
割り込み
命令体系を単純化してオペコードを縮小するには、
PCとSPも汎用レジスタにするのが良いんじゃないの。
レジスタ間コピーとかロード命令でジャンプできる。
もっとも、条件分岐命令に関しては逆に深刻な制限になってしまうから
むしろ薦めにくいのかも。
数ビットの小さなオフセットだけ対応の近距離条件分岐しか条件分岐を装備しないなら良いが。
って、PICの条件分岐命令がこんな感じだっけ?
SPが汎用レジスタ、ってのは結構いろいろあった気はする。68kもそれに近い。
条件成立したら次の命令をスキップする命令てのがあって
無条件分岐と組み合わせると条件分岐できます
てのがどこかにあったな。
>362
H8もそーだお
いっそ、みんな条件付実行にしちゃえ、っていうARMみたいなのもある。
16ビットじゃきついだろw
脱線スマソw
条件付き実行するかしないか指定するだけなら
1ビットで足りるから、命令長16ビットでも実現可能。
>365-366
それ、ARMの基本命令セットが32ビット固定だったから可能になったんだよな。
16ビットに縮小したThumb命令セットでは条件分岐命令以外の命令は条件判断しないよ。
>368
どういうフラグの組み合わせで実行するかどうかを決める関係上、条件フィールドは4ビットぐらい使うのが普通だし。
>>369 SHみたく比較の方にフラグ立てる条件をいれてしまえば、
判断する方は1ビットですむべ。
>>369 >>368
>どういうフラグの組み合わせで実行するかどうかを決める関係上、条件フィールドは4ビット
>ぐらい使うのが普通だし。
コンディションコードがNZCVあるARMだからそうなのであって
1ビットコンディションフラグで済ませれば条件フィールドは不要。
>370-371
俺が知ってる限られた数のCPUアーキテクチャでは、
どれも4〜5ビットぐらいのフラグがあったから、それが普通だと思ってたよ。
だが確かに、370の考え方なら1ビットのフラグでも足りそうだな。
今までは俺の世界が狭く、頭が固かったってことか、dクス
じゃあほっといて、学習用16bitアーキテクチャ作ってみないか
40ピンにこだわる?
今日日の学習用なら多少リッチなほうがいいんじゃないか
>>360みたいなのは最適化の第一歩くらい
>>357から半月近くも経っているし
RTLが既に完成していてもおかしくないわけだが
このスレ、初めて来たんだが、誰か実際に作った人はいるの?
シミュレーションだけでも良いから。
>>378 RTLシミュレーションとFPGAで動作検証して
チップもかれこれ5種類くらい作りましたよ
180nと90nで。
CPU作ること自体は大したことではないです。
どちらかというとソフト開発環境を整備する方が手間。
380 :
774ワット発電中さん:2009/09/05(土) 01:39:53 ID:SSedFLo2
勉強になる。
>>379 GNU のアセンブラー・デバッガー (gas, gdb) なんかは、
カスタム CPU 対応が可能です。「GNU gas custom CPU」とかで Web 検索。
そこまで進めたら gcc も、もう一息かな?
一人で全部やるのはスゲたいへんそう。何人かのグループでやれば可能だろうね。
アセンブラーだけならゼロから作ってもいいし、
awk なんかの力も借りて、それでは困難な部分は pre-process, post-process
する方法もアリかなぁ。
まっ,>381ががんばることに期待しておく
383 :
379:2009/09/08(火) 10:06:24 ID:1CexsLJf
>>381 もちろんGNUの開発ツール群をカスタマイズして使っています。
eclipseにも対応させました。
>>383 じゃあ、さしあたって、なにが困っているの? それを聞きたい。
385 :
774ワット発電中さん:2009/09/15(火) 16:06:19 ID:6T8L9u8d
もしか「し」 (shi) て「早く動かない」のかなー。
バカすぎて、とてもごめん。でもいちおうは、一応はレスしておく。
>>384 383=379 は困っているとは一言も書いていないのだが。
378 の呼びかけに答えただけで。
387 :
774ワット発電中さん:2009/09/15(火) 20:19:44 ID:jc/i8Gze
CPU造ってみたい。
どうやるのかな。
リスクはレジスタたくさん作るの?
実用性考えないなら、レジスタ4個ぐらいでも動くんじゃない?
レジスタ無しでも制御系には十分使える。
金銭登録機無しでも商売はできる。ホンと、だじゃれが多いな。
391 :
774ワット発電中さん:2009/09/16(水) 03:57:43 ID:c6ST0QLd
なぜレジスターを一本二本とか数えるのだろうか。その起源を知ってる人、ぜひ教えて下さい。
長いからじゃね?
>>389 387はRISCって言ってるからな。レジスタ無しはちょっと
>393
レジスターはメモリー割り付ける。何が困るの。
その昔、N 社の次期 CPU の概念図を見せられたことがあった。
当人はすげー革新的だと思ったんだろうが、
この板的には、異論がごうごうだろな。
>>394 なんとなくわかるような。命令デコーダーをどうするか。
多段パイプラインを使えば、どーでもよくなるような。もっとぶってね。
>>レジスターはメモリー割り付ける。何が困るの。
それをRISCと呼ぶと苦情が殺到して困るんだろう。
多分だけどな。
もっと単純に、マニュアルに棒で描かれてたからか
>394
レジスタをメモリとして実装する。
古く懐かしい、「縮小命令コンピュータ」(と呼ぶのかね? 命令体系ではなく。)たる、
初期の組み込み用CPUの典型じゃないの。
たとえば、256バイトぐらいのオンチップメモリを積んで、その先頭もしくは末尾の数バイトがレジスタ。
アーキテクチャによっては、裏レジスタを実装してる例もあった。
もちろん、あくまでもローカルメモリであるから、インデックスレジスタを用いた間接アドレシングでのアクセスもできる。
今でも、小規模向けのマイコンの中には、そういうローカルメモリが付いてるヤツが残ってるかも。
現役バリバリの AVRは 基本CPI=1 の RISCで、汎用レジスタ32本が
データメモリ先頭 0x0000-0x001F にも割り付けられてるから、
LD/ST命令で間接アクセスできるよ
>>399 それもうEDSAC/Manchester Mark Iあたりからのデザイン
>>399 >今でも、小規模向けのマイコンの中には、そういうローカルメモリが付いてるヤツが残ってるかも。
8051は未だに改良品が作られ新規採用される現役です。
403 :
774ワット発電中さん:2009/09/18(金) 12:39:53 ID:HuLFLbLd
誰かデータフローマシンについて詳しい奴はいないか?
原理的に最高の並列性が出せるらしいが、古い研究なのであまり資料がない。
特に欠点について知りたい。
>>399 > レジスタをメモリとして実装する。
そもそも、ミニコンのPDP-11あたりとか、データゼネラルとか、そうでは
なかったかと。 マイコンの世界でもTIの初期のTMS9900だったかの16bit
なんかも。 あと、昔AMDが得意だったビットスライスとか。
>>402 > 8051は未だに改良品が作られ新規採用される現役です。
昔は12MHzそこらで、1命令実行するのに、最低でも4クロックくらい掛かっ
ていたのが、今じゃ100MHzで1クロックだもんな。 あくまでバイナリ互換
ってだけで中身はまったく別物。
所詮、最新マイクロプロセッサに実装される技術の多くは、大型やミニコン
で実用化されていた技術をシリコン上に取り込んでいるだけでそ。
>>403 弓場敏嗣 山口喜教 「データ駆動型並列計算機」
説明すんのメンドクサイから↑でも読め。
それで足りなきゃ、巻末のリファレンスから文献拾え。
>>405 これだけ外しているのも珍しいよな
>>403 >>406の人たちの作ったものでいうと
演算ユニット→ネットワーク→演算ユニットとデータが回るわけだが、ネットワークの遅延が大きい
マッチングストアというレジスタと命令キューを兼ねたようなユニットがあるんだが、高コストにつく
基本的に副作用のない関数型言語を動かすことしか考えていなくて、
Cのように自由にメモリに書き込みを出来る言語では制御トークンを用いて逐次化しないといけない。これならPCで制御したほうがいいじゃんとなる
使用済みのリソースを解放するのにやっぱり制御トークンを用いて逐次化する。これならPCで以下略
基本的に例外処理ができない
そのままでは欠点だらけで到底実用的ではないけど、今のスーパースカラプロセッサはデータフローマシンにとても近いよ
> 所詮、最新マイクロプロセッサに実装される技術の多くは、大型やミニコン
> で実用化されていた技術をシリコン上に取り込んでいるだけでそ。
大型機由来の技術はいろいろあるが、ミニコン由来のってなんかあったかな
貧弱なバスくらいか
なんにしろ「取り込んでいるだけ」ってこたぁない
409 :
403:2009/09/18(金) 17:46:14 ID:e2pw7NAm
だが、データフローマシンに関してまとまった内容の日本語の成書は多分それしかない。
基本的に著者が関わった機械についての簡単な解説なんだが、DFMとしてそんなに癖の
あるアーキテクチャじゃないから理解するのにそれほど苦労しないと思うし、(NECの画像
処理用LSIは酷かったw)、自分たちの機械に関連してDF全体についても触れてるから、
最初に読むには今のところそれが一番いいと思う。で、興味を持ったら巻末の書誌からCiNii
ででも論文をあさればいいと思う。
つか、多分この本が出て以降DFについてはあまり進展が無いと思う。まあ、アマチュアだし
サーベイをちゃんとしてるわけじゃないから確約は出来ないが。
だって(狭義の)データフローなんて80年代で滅びたんだもん
マルチスレッドに移行してこれも滅びた
>>410 馬場先生のがある
洋書はGaoとGaudiotのくらい
俺にアンカーつけられても困る。
つか、
>>403にその本紹介してやれよ。
その昔、タイトルに"データフロー"と付いた本を読んだ記憶があるが、
ざっと検索するにたぶん
曽和将容『データフローマシンと言語』
かな。 >406より古い本だ。
415 :
774ワット発電中さん:2009/09/18(金) 20:00:43 ID:HuLFLbLd
>>413 東大の坂井先生に、その著者は癖があるので気をつけろと
言われたことがある。過去に何かあったんだろうか?
曽和先生は変人という話だが、実物は見たことない(←小ネタ)のでわからない
417 :
774ワット発電中さん:2009/09/19(土) 15:17:46 ID:oOkTRHIN
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
なぜサポート窓口に質問しないのか不思議だ。
そのために馬鹿高い保守料払ってるのに。
何か不自由な人の可能性が高い
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
貼ると幸せになるコピペか?
おれも貼ってみよ
【質問1】
RTL compiler で論理合成をしています。
クロックラインへのバッファー挿入ケアが全くされず
に困っています。クロックラインへファンアウト調整
用のバッファーを挿入させたネットリストを生成する
にはどのようにすればよいでしょうか?
勝手にset_dont_touck_network clock がかかっていて
どうしても解除できません。
不可能であるなら、design compiler へ移行いたします。
【質問2】
RTL compiler で論理合成をしています。
データラインへのホールド調整を行うにはどのように
すればよいでしょうか。
set_fix_hold ができません。
不可能であるなら、design compiler へ移行いたします。
コピペしてたくさんレスすれば、声がデカイと思っている人がいるようだ。
同じ2chでも、ある種の板ではそんな気もする。さあね。
>>417 質問1へのコメント
うろ覚えで恐縮だけど、
Cadenceはバッファー挿入は配置配線段階でケアする思想とか営業ゆーてた希ガス。
配置配線の状況次第で決まってくるし、合成段階で精度追求してもという考えからだろう。
まあ、微細化傾向では妥当性のある考えではある。
質問2へのコメント
質問1と同様だった希ガス。
(やっとアク禁解除なってコメント遅くなった)
でんす でんす けいでんす
これじゃベリ・ベリ・ドント・ケア
最近はマグマばっかだな
けいでんすマンボ、自信作だったのにしくしく
ビルドゲイツは好きだったよ、
おやじギャグっぽいネーミングにはひいたが。
Jobs が 仕事 をする。
Bill gates は 金を取る。
機械翻訳するとbill gatesは請求門になるから。
434 :
774ワット発電中さん:2010/06/11(金) 15:18:20 ID:Ac7/sAi4
ビルドベースを思い出すやつはおっさん確定保守