MIPSから新しいISAが発表された。nanoMIPS。ISA仕様書Rev1.01が公開されたのは2018/4/27とごく最近。
MIPS、初のnanoMIPS命令セット対応CPUコア「I7200」(PCwatch)
MIPS Announces I7200 32-bit CPU with new nanoMIPS ISA(A…
以下をもうちょっと考えてみたもの。
ぼくのかんがえたさいきょうCPU:連鎖性言語の特徴を取り入れてみる
乗算を使わずに%r1の値を3倍するコードを考えてみる。
SLL %r1,1,%r2 ; ADD %r2,%r1,%r3
SLL命令で%r2には%r1の2倍がはいり、ADDでもとの%r1と加算されて%r3に…
ベクトルデータどうしの演算について
https://speakerdeck.com/houmei/bokufalsekangaetasaikiyoucpu-2018-bekutoruyan-suan
【富士電機】FRN0.4C2S-2J インバーター FRENIC-Mini 三相 200V (三相モーター制…
スカラデータどうしの演算について
https://speakerdeck.com/houmei/bokufalsekangaetasaikiyoucpu-2018-sukarayan-suan
スカラ座の序曲・前奏曲・間奏曲集リッカルド・シャイー ユニバーサル ミュージック 2017-09-19売り上げラ…
扱うデータと型について。
https://speakerdeck.com/houmei/bokufalsekangaetasaikiyoucpu-2018-data
異なる型どうしの演算については別スライドを作ります。
命令フォーマットでは汎用レジスタの番号指定を6bit用意している。64本が指定可能で、RISC系プロセッサの汎用レジスタ31(32)本+浮動小数点レジスタ32本をカバーできると考えた。
で、常に64本必要だろうか?インタラプトが発生した時は割り込み処理用に8本くらいでも良さそうだし、数値計算向けに大量に必要になるかもしれない。とい…
1バイト単位の可変長命令についてドバッと思いついたのをメモ。Wikiサービスを探して整理する予定。
8bit可変長命令フォーマット
命令列 := {CO|CO OP}*
CO := 0_xxxxxxx オペコード
OP := 1_xxxxxxx オペランド
CO := {CO1|CO2|CO3}
CO1 :…
可変長8bit単位の命令フォーマットのうち、オペランド部分を変更。
ぼくのかんがえたさいきょうCPU 8bit可変長命令フォーマット続き
ぼくのかんがえたさいきょうCPU 8bit可変長命令フォーマット
オペコードは 0xxxxxxx で始まり、オペランドは 1xxxxxxx で始まる。
オペランドは以下の2種類…
ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが仮に実現したとして演算器をどうするか。もうなんかドリフのコント「もし汎用レジスタが異常に長かったら」みたいなタイトルになってきてるが。
レジスタの領域をチップ内に持つのはそう難しくないだろうが、32Kバイト長と32Kバイト長を入力として演算…
ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが実現性はさておきどんな問題が起こるか。
シフト命令のシフト量が最大262144になってしまう。18bit必要だ。こんなものバレルシフタで作ったらとんでもないことになってしまうし分割して複数サイクルでシフトするにしてもそもそもそんなにシフト量…
ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが実現性はさておきこれをどう活用するか。
レジスタに命令列を入れて実行させるEVAL命令というのはどうか。
EVAL レジスタ番号,実行ステップ数
この命令に当たると、レジスタ番号で指定された汎用レジスタの内容をフェッチする直…
演算に定数をつかうときは 1. レジスタに即値を代入する または 2. 即値をオペランドに指定する という感じになるのだけれども、1, はいったん即値を代入する操作が必要になり、2.はオペランドのフォーマットが長くなってしまう。ではどうしようか。
64本の汎用レジスタを使うことを考えると、これを表現するためには6bitあればよ…
前回の続き。
CHAPTER 3 DATA MANIPULATION
3.4命令
命令はオペレータとオペランドの組み合わせでオペランドは最大3つ。命令列はハードウェアで認識されるメモリ上のInstruction Segments内にある。命令は可変長ビット(バイトじゃないよ!)で現在の実装では32bit単位で読み込…
iAPX432のマニュアルを読もうとしてさっぱりわからないのでとっかかりになりそうな所からメモ。
Introduction to the iAPX432 Architecture(PDF)
CHAPTER 3 DATA MANIPULATION
3.1章から3.3章まで
iAPX432は以下のデータ型を持…
年始早々に高性能プロセッサが内在するセキュリティ脆弱性について報道があり、セキュリティパッチも配布された。
Today's CPU vulnerability: what you need to know (Google Security Blog)
Reading privileged memory with a side-…
気がつけば2006年からCPUアーキテクチャについて色々調べては考えていたのだった。ということで現在までの私自身の理解をスライドにしてみました。こんなパワポ資料を作るのも十年ぶりだろうか。Keynoteだけど。
https://speakerdeck.com/houmei/2017-cpu-architeciture
…
割り込みはパイプラインのどのステージで起こるかの続き。
TRONCHIPでは割り込みをEITという言葉で整理している。EITとは
・Exception (例外)
・Interrupt (割り込み)
・Trap (トラップ)
で、Exceptionはハードウェア障害など深刻度が大きい割り込み、Interruptは外部信号…
きっかけは次の記事を読んで、SPARC64でのFMA(Fused Multiply Add : 積和演算)の実装がSPARC64VIという記述に「いやSPARC64IIIからあったはず」と思ったので確認してみようと思ったこと。
FMA (Fused Multiply-Add) について色んな観点でまとめてみた(小清水さんとコンピ…
命令拡張の余地がなくなった場合に、従来未定義だった命令から始めることで続く命令列に機能を追加できる。これをプリフィックス命令という。プリフィックス命令は次の命令に対する1回だけの指示と考えることもできる。プリフィックス命令は短いほどよいので1バイト命令フォーマットから空いているところを探す。今回はメモリ操作命令の1バイトフォーマットを…