@pepepepePekoe SHは定数テーブルをPC参照の-128/+127で拾いにゆくのでサブルーチンの切り方に独特のコツがあったとか知りません(´・Д・`)
2015-04-23 11:50:08@pepepepePekoe MIPSの遅延分岐スロットだとか予測分岐命令だとか、ARMの定数オフセット+シフト演算命令だとか、Am29000のレジスタバンクだとか…固定長命令のRISCは変態アーキテクチャが多くて楽しかった(仕事でやるのは地獄だけど)。
2015-04-23 11:56:24@pepepepePekoe RISCアセンブラの究極はi860のVLIW命令かもしれません。さすがに自分で使った経験はないですが…。
2015-04-23 12:01:00@pepepepePekoe 90年代のRISCに比べれば、ARM Cortexは呆れるくらい普通のプロセッサですよ。可変長命令、2オペランド命令、定数オペランド、遅延スロットなしの条件分岐命令。ARMみたいにADDEQ R15,R1+16なんて変なことはやりません。
2015-04-23 12:11:32ゼロ・レジスタと3オペランド命令も流行ったんだよなー。MIPS,Sparc,PowerPCが備えていたはず。皮肉なことに21世紀まで生き延びたARM Cortexとx86はどちらも備えていない(笑)
2015-04-23 12:12:43R0は読んでも書いても常にゼロのレジスタ。3オペランドというのはA=B+Cのように演算対称と格納先を別に指定できる命令体型。こういったRISCでは例えばR1がゼロかどうかを判定するのにADD R0,R1,R0なんて命令を使った。CMP命令なんて無いのよ。
2015-04-23 12:14:50RISCアーキテクチャが意地みたいにして命令の種類を減らしたのは、固定長命令に占めるインストラクションビットの割合を減らし、より多くの修飾ビットを詰め込もうとしたため。ARMは2オペランドにした代わり全ての命令に条件ビットと8bitの定数修飾と4bitのシフト演算子を含めた。
2015-04-23 12:17:27もう一つの理由は命令種類を減らせば命令を直接演算回路に渡すハードワイヤード・アキュムレータの実装が容易になり、回路規模が小さくなって半導体上の占有面積が縮小し、安上がりになるうえ実行クロック上限も上がるメリットがあったこと。
2015-04-23 12:19:15命令は減らせばよいというわけでもなく、例えばARM6はやりすぎてメモリ読み書き命令が1種類だけ、オペランド修飾ビットも1ビットだけ(8bit/32bitの切り替え)にしてしまい、short型構造体を持つソースコードの実行効率が悪くなってしまった。
2015-04-23 12:21:57この反省からARM7では16bitメモリを扱うハーフワード命令が追加された。ARMというアーキテクチャは純粋RISCに近いところからスタートして現実の壁にぶつかり、次々と場当たり的な拡張を取り入れてきたところが面白いね。
2015-04-23 12:23:25ARM7Tで導入された16bit幅のTHUMB命令も凄まじく汚い代物で、リセットベクタや割り込みハンドラは32bitARMで書かなきゃならなかったし、ARM<=>THUMBの切り替えはジャンプのついでにはできる(奇数アドレスに飛ぶ!)けどサブルーチンコールではできなかった。
2015-04-23 12:24:46これも後のARM9Eでは改良されるんだけど、しばらくの間はインターワーク(Interwork)と称するARM<=>THUMB間の中継を司るジャンプテーブルを使わなければならなかった。でも16bit固定長命令によるコスト削減効果はコードの汚さを上回って普及したのだ。
2015-04-23 12:26:11THUMBモードでコンパイルすると1命令あたりの占有メモリは半分になるけど1命令あたりの機能も減るので、占有メモリ量は32bit ARMコードとそんなに変わらない。しかし価格削減のためメモリバスを16bit幅にしたシステム上では実効MIPS数が2倍弱になる。
2015-04-23 12:28:32これは特に命令キャッシュを持たないARM7Tにおいて決定的な性能差となった。ちょうどそれまで組み込みシステムに多用されていた16bitの8051が性能限界に直面していたため、ARM7Tは安くて速くて旨い牛丼的なプロセッサとして普及した。
2015-04-23 12:31:04ARMは回路規模が小さく論理回路としてのソフト売り(IP売り)でも他のアーキテクチャより先行し、特に台湾系ファブレスLSIメーカーによるASSP SoCのコアとして重宝された。
2015-04-23 12:32:59@pepepepePekoe ARM6は3DOとApple Newtonで華麗なデビューを飾って大ゴケしました(笑)。でも組み込み制御用のARM7TDMIになって隙間風的に普及し、気が付いたらx86に並ぶ2大アーキテクチャを張るようになっていました。
2015-04-23 12:34:22スマートフォンの祖先であるPDAはApple NewtonがコケたあとにPalmPilotが一世を風靡した。PalmのCPUはモトローラ(Freescale)のColdFire、68000の簡略型。
2015-04-23 12:36:10ColdFireも一時期は流行し、ColdFire上でLinuxを動かすためにuC-Linuxなんてプロジェクトができたりもした。でも長続きはせず、Palm社はTungstenと称する次世代PalmにARM(TI OMAP)を採用した。
2015-04-23 12:38:41Freescaleはだいぶ長いことColdFire/DragonBallのサポートを続けてきたけれど、長いものには巻かれろ式にi.MXシリーズでARM陣営になびき、後にはKinetisシリーズでARM-Cortexも採用した。
2015-04-23 12:42:37ARM以外のRISCアーキテクチャはHP PA-RISCの血を引くintel ItaniumとMIPSが細々と生き残っている程度かなぁ。SPARCは富士通の「京」スーパーコンピューターで花道を飾ったけど、商用プロセッサとしては後が無い。
2015-04-23 12:48:15PowerPCはとうの昔にAppleから見捨てられ、PlayStationのCellで脚光を浴びたけれども長続きしなかった。PS4はAmdのx86に日和ったんだね。
2015-04-23 12:49:23ARM CortexはApple(Aシリーズ)・Qualcomm(Snapdragon)の2大巨頭とインド・中国で猛威を振るうMediatekのコアなので携帯系では無敵に強い。
2015-04-23 12:54:29intelもMIPSもGoogleにかけあってAndroidのx86/MIPSサポートを公約させたけど、ほとんど「言ってみただけ」に近い。ノウハウとライブラリと対応チップの充実したARM Cortexをわざわざ捨ててintelやMIPSを採用する物好きは多くない。
2015-04-23 12:55:26とはいえ、かつて無敵を誇ったintel x86+Microsoft Windowsん「Wintel連合」が斜陽を迎えているように、ARM Cortexの天下も未来永劫続くわけはないんだけどね(´・Д・`)
2015-04-23 12:57:28