スーパーハーバードアーキテクチャシングルチップコンピュータ(SHARC )は、アナログ・デバイセズ社製の高性能浮動小数点および固定小数点DSPです。SHARCは、音声処理から、単一CPUによる誘導砲弾、1000CPUを搭載した超水平線レーダー処理コンピュータまで、幅広い信号処理アプリケーションで使用されています。オリジナルの設計は1994年1月頃に遡ります。
SHARCプロセッサは通常、近くにある他のSHARCプロセッサとのシリアルリンクを多数備え、SMPの低コストな代替手段として使用されることを想定して設計されています。
SHARCはハーバードアーキテクチャのワードアドレス指定型VLIWプロセッサです。各アドレスはオクテットではなく32ビットワード全体を指すため、8ビット値や16ビット値については何も認識しません。したがって、リトルエンディアンでもビッグエンディアンでもありませんが、コンパイラが64ビットデータを実装する場合や、複数の8ビット値または16ビット値を1つの32ビットワードにパックする方法を実装する場合は、どちらの規約も使用できます。C言語では、文字は32ビットです。これは、文字がアーキテクチャ内でアドレス指定可能な最小ワードであるためです。
ワードサイズは、命令の場合は48ビット、整数と通常の浮動小数点数の場合は32ビット、拡張浮動小数点数の場合は40ビットです。コードとデータは通常、オンチップメモリからフェッチされますが、ユーザーは必要に応じてオンチップメモリを異なるワードサイズの領域に分割する必要があります。小さなデータ型はより広いメモリに格納できますが、余分なスペースが無駄になります。40ビット拡張浮動小数点数を使用しないシステムでは、オンチップメモリを2つのセクションに分割し、1つはコード用の48ビット、もう1つはそれ以外のすべてのデータ用の32ビットとすることができます。ほとんどのメモリ関連のCPU命令は48ビットメモリのすべてのビットにアクセスできませんが、この目的のために特別な48ビットレジスタが用意されています。この特別な48ビットレジスタは、2つの小さなレジスタとしてアクセスでき、通常のレジスタとの間でデータの移動が可能です。
SHARCでは、オフチップメモリを使用できます。このメモリは、単一のサイズにしか構成できません。無駄を避けるためにオフチップメモリを32ビットワードに構成した場合、コード実行と拡張浮動小数点演算にはオンチップメモリのみを使用できます。オペレーティングシステムは、この問題を回避するためにオーバーレイを使用し、実行に必要なときに48ビットデータをオンチップメモリに転送します。このためにDMAエンジンが提供されています。外部MMUがないと、真のページングは不可能です。
SHARCは32ビットワードアドレス空間を持つ。ワードサイズに応じて、これは16GB、20GB、または24GBとなる(8ビットの「バイト」という一般的な定義を使用した場合)。
SHARC命令には32ビットの即値オペランドが含まれる場合があります。このオペランドを持たない命令は、一般的に2つ以上の演算を同時に実行できます。多くの命令は条件付きであり、アセンブリ言語では「if条件」を前に付けることができます。条件には、 x86フラグレジスタで提供される選択肢と同様に、いくつかの選択肢があります。
遅延スロットは2つあります。ジャンプ命令の後、通常はジャンプ命令に続く2つの命令が実行されます。
SHARCプロセッサはループ制御を内蔵しています。最大6レベルのループ制御が可能で、通常の分岐命令やループ終了に関する通常の処理が不要になります。
SHARCには汎用レジスタが2セット搭載されています。コードはこれらのレジスタ間を瞬時に切り替えることができ、アプリケーションとOS間、あるいは2つのスレッド間での高速なコンテキストスイッチが可能になります。
コンパイラ: