| デザイナー | マイクロプロセッサ研究開発センター |
|---|---|
| ビット | 32ビット |
| 紹介された | 1999 |
| デザイン | RISC |
| エンコーディング | 修理済み |
| 分岐 | 条件コード |
| エンディアン | 少し |
| ページサイズ | 4 KB |
| レジスター | |
| 汎用 | 31 |
| 浮動小数点 | 32 |
Unicoreは、中国の北京大学のマイクロプロセッサ研究開発センター(MPRC)によって設計されたコンピュータ命令セットアーキテクチャです。このアーキテクチャに基づいて構築されたコンピュータはUnity-863と呼ばれています。[1] CPUは完全に機能するSoCに統合され、PCのようなシステムを形成します。[2]
このプロセッサはARMアーキテクチャと非常に似ていますが、異なる命令セットを使用します。[3] [より良い情報源が必要]
これはLinuxカーネルのバージョン2.6.39以降でサポート されています。 [4 ] Linuxカーネルバージョン5.9では、誰もメンテナンスを行っておらず、コードがカーネルコードやコンパイラの要件の残りの部分から遅れているため、サポートが削除される予定です。[5]
命令セット
命令は標準のARM形式とほぼ同じですが、条件付き実行が削除され、すべてのレジスタ指定子が5ビットに拡張されるようにビットが再割り当てされています。[6] [7] 同様に、即値形式は9ビットを5ビットずつ回転したもの(8ビットを4ビットずつ回転するのではなく)で、ロード/ストアのオフセットサイズはバイト/ワードの場合は14ビット、符号付きバイトまたはハーフワードの場合は10ビットです。条件付き移動は、MOVおよびMVN命令の(ARMでは使用されない)2番目のソースレジスタフィールドRnに条件をエンコードすることによって提供されます。
さまざまなフラグ ビットの意味 (S=1 で条件コードの設定が可能など) は、ARM 命令セットと同じです。ロード/ストア マルチプル命令は、H ビットに応じてレジスタ セットの半分にしかアクセスできません。H=0 の場合、16 ビットは R0~R15 を示し、H=1 の場合、R16~R31 を示します。
参考文献
- ^ 「MPRC の紹介」。北京大学マイクロプロセッサ研究開発センター。
- ^ 徐成;シャオイン・ワン;ルー・ジュンリン。ジャンファン・イー。ドントン;シュエタオ・グアン。フォン・リウ;劉仙華。チュンヤン。 Yi Feng (2010 年 3 月)、「UniCore CPU および PKUnity SoC の研究の進捗状況」(PDF)、Journal of Computer Science and Technology (JCST)、25 (2): 200–213、doi :10.1007/s11390-010-9317- 1、S2CID 7083916 、取得済み2012-07-11
- ^ Bergmann, Arnd (2012-07-09). 「Re: [PATCH 00/36] AArch64 Linux kernel port」. linux-kernel (メーリング リスト) . 2012-07-11取得。
もう 1 つの興味深い例は unicore32 です。これは、提案されている arch/aarch64 よりも多くのコードを arch/arm と共有しています。unicore32 コード ベースは、第 3 の命令セットとして arch/arm にマージし直すことでメリットが得られると思いますが、ARM で作業するすべての人にとって追加のメンテナンス コストがかかるため、現実的ではありません。
- ^ 「マージウィンドウが閉じられました - 2.6.39-rc1 がリリースされました」。Linus Torvalds。
- ^ 「unicore32 サポートを削除」。Mike Rapoport。
- ^ Hsu-Hung Chiang、Huang-Jia Cheng、Yuan-Shin Hwan (2012-02-25)、「ARM プロセッサのレジスタ数を倍増」(PDF)、第 16 回コンパイラとコンピュータ アーキテクチャの相互作用に関するワークショップ (INTERACT)、pp. 1– 8、doi :10.1109/INTERACT.2012.6339620、ISBN 978-1-4673-2613-1、S2CID 6832041
- ^ Unicore プロセッサ シミュレータ ソース コード。命令形式は decode.c、逆アセンブリは interpretty.c、エミュレーションは instEx.c にあります。
- ^ QEMU Unicore32 エミュレーター ソースコード
