Open6

1命令アーキテクチャMAXQのメモ

okuokuokuoku

https://twitter.com/okuoku/status/1147833921389727744

この後2021年にMaximはAnalog Devicesに買収され、その後はMAXQの新製品は出ていない。

MAXQはTransport Triggeredアーキテクチャで、CPU的な命令は move の1命令しかない。このため、命令ストリームにオペコードフィールドが無い。ただし、標準的なALUをペリフェラルとして備え、アセンブラはALUアクセスや特殊なアドレッシングをより直接的に記述できるようにしている。

okuokuokuoku

アーキテクチャの説明

個人的には命令フォーマットがかしこいと思った。 move 命令のターゲットは "モジュール"(4bit) + "レジスタ"(5bit) で表現されるが、実際の命令ストリームには

  • リード側: 4bit
  • ライト側: 3bit

しか確保されていない。 Read onlyレジスタはライト側には表われないため 、ライト側の指定ビットは短くても良い可能性が高い。不足しているビットは、それを補うための専用ハードウェア(モジュール)がある。

モジュールは普通のマイコンで言うところのペリフェラルの事で、MAXQではALUやA/Dコンバータ、USB I/Fのような様々なペリフェラルが同列に並ぶことになる。この特徴により、演算結果をペリフェラルのレジスタに突っ込む操作が(理想状況なら)1サイクルで行えることになる。

いわゆる即値のためにリード側の8bit部分を潰して使えるようになっている。この操作のために命令ストリームの1bitが予約されている。 ...即値を一般的なペリフェラルに突っ込むことはあんまり無い気もするがそこを犠牲にしてもあんまり有効bitが増えるわけでもないので仕方ないか。

MAXQアーキテクチャの紹介

サイトには英語版が載っているが、PDFをDLすると日本語版になっている。

世界的に評価の高いアナログチップメーカー、マキシムが、業界をリードする高性能マイクロコントローラサプライヤ、ダラスセミコンダクタと一緒になったとき、最先端のマイクロコントローラと高度なアナログ機能を組みあわせることが可能になりました。その結果生まれたのが、MAXQ RISCアーキテクチャです。これは新開発のマイクロコントローラコアで、高性能・低消費電力で数多くの複雑なアナログ機能を実現します。

そういやDallas Semiconductorあったな(2001年にMaximが買収)。。ここは8051ベースのマイクロコントローラをラインナップしていて、おそらくその次世代コアとして企図されたのがMAXQなのではないだろうか。現行製品には存在しないが、MAXQのラインには当初8bitコアも存在した。

この結果、とても「静かな」環境が得られ(MAXQの"Q"はQuietを意味します)、アナログとの混在をする上でメリットになります。

そうだったのか。。

MAXQアーキテクチャは、マイクロコントローラ業界における真の革新だといえます。

自信まんまんだな。。

ユーザーマニュアル

同様の内容は個々のMAXQプロダクトのユーザーガイドにも入っている。また標準ペリフェラルのドキュメントも含む。

MAXQ®の秘密の解明

(買収後はあんまりWebサイトの引き継ぎがうまくいっていないようで、例えばMAXQ製品の多くが日本語だと未だにRecommended for New Designになっていたりする。)

okuokuokuoku

比較

既存のマイコンとの比較は2つのアーティクルが出ていて、特にTIのMSP430をライバル視しているようだ。MSP430も16bit RISCという点で狙っているマーケットは近い。

MAXQ命令セットアーキテクチャとRISCのベンチマーク比較

本稿では、MAXQ命令セットと他のマイクロコントローラとの比較を行います。比較対象は、PIC16CXXX(ミッドレンジデバイス)とAVR、MSP430です。

自身がMAXQの短所として挙げているポイントが興味深い。

  • ALU演算のデスティネーションが、常に暗黙的にアクティブアキュムレータ
  • シングルポートのシンクロナスSRAMデータメモリのため、データポインタを使う前にアクティブにする(選択する)必要がある
  • デフォルトスタック深さ = 16。ただし、データメモリにソフトウェアスタックを実現しやすいデータポインタハードウェアを持つ

最後のが地味にポイントで、MAXQもPIC同様ハードウェアスタックを持っている。有ると嬉しいのは確かだがRTOSを載せたりする上では障がいになる。

ここで比較されていないポイントとして、MAXQは最大クロックがかなり低い(現行製品では12MHz製品までしかラインナップにない)。アーキテクチャ的な問題というよりは製品展開の都合だとは思うけど。

MAXQ Competitive Analysis Study

元になったTIのベンチマークはTIのWebサイトで発見できなかった。

TIはこのアプリケーションノートで(他のRISCマイコンと同時に)MAXQも評価していて、Maximは逆の結論を得ようとしている 。Maximが指摘するTIのベンチマークの問題点は:

  1. コンパイラで最適化を行っていないこと
  2. コンパイラを1種類しか使っていないこと (IARだけではなくRowleyのコンパイラCrossWorksを追加している)

となっていて、さらに重要な要件変更として、 乗算器を使うように変更 している。

で、結論としては "Rowleyのコンパイラを使えばMAXQはMSP430よりもコード密度、パフォーマンスで勝り、更に最大周波数(20MHz)も勝っている" 。 ... これは今やあまり妥当な結論ではなく、

  • 現行MAXQ製品の最大周波数は12MHz止まりであり、片やMSP430は現在は25MHzまでラインナップにある
  • RowleyはMAXQ向けのツールチェインを 既にディスコンにしている (MSP430向けのコンパイラは現行製品)

という厳しい感じになっている。

okuokuokuoku

乗算器

PIC24におけるdsPICのような信号処理バリアントはMAXQのラインナップには存在しない。標準ただしオプショナルのペリフェラルとして、48bitアキュムレーター付き16bit乗算器があり、一般的なMAC操作を行える。

Using MAXQ's Multiplier Module

MAXQ2000を用いたオーディオフィルタリング

MACユニットを内蔵することによって、MAXQ2000は、DSP (µC)の領域に踏み込むことになります。

... そうか。。?例えばdsPICは専用のループ機構やbit reversed addressingのようなFFTのための配慮を含んでいる。

まぁでもここで説明されているオーディオのFIRフィルタリングはDSPの領域と言えなくもない。

MAXQ積和演算ユニット(MAC)を使った信号処理

DTMFデコードの説明。