JP2003518280A - 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法 - Google Patents

構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法

Info

Publication number
JP2003518280A
JP2003518280A JP2000597714A JP2000597714A JP2003518280A JP 2003518280 A JP2003518280 A JP 2003518280A JP 2000597714 A JP2000597714 A JP 2000597714A JP 2000597714 A JP2000597714 A JP 2000597714A JP 2003518280 A JP2003518280 A JP 2003518280A
Authority
JP
Japan
Prior art keywords
user
processor
instruction
instructions
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000597714A
Other languages
English (en)
Other versions
JP2003518280A5 (ja
Inventor
キリアン、アール・エー
ゴンザレス、リカルド・イー
ディキシット、アシシュ・ビー
ラム、モニカ
リヒテンシュタイン、ワルター・ディー
ローエン、クリストファー
ルッテンバーグ、ジョン
ウィルソン、ロバート・ピー
ワン、アルバート・レン−ルイ
メイダン、ドロール・エリーザー
ジアン、ウェン・キアン
ルデル、リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tensilica Inc
Original Assignee
Tensilica Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/246,047 external-priority patent/US6477683B1/en
Priority claimed from US09/323,161 external-priority patent/US6701515B1/en
Priority claimed from US09/322,735 external-priority patent/US6477697B1/en
Application filed by Tensilica Inc filed Critical Tensilica Inc
Publication of JP2003518280A publication Critical patent/JP2003518280A/ja
Publication of JP2003518280A5 publication Critical patent/JP2003518280A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法 【解決手段】 構成可能なRISCプロセッサは、高性能固定および可変長符号化を有するユーザ定義の命令を実行する。新しい命令セットを規定する処理は、ユーザが新しい命令を付加し、迅速に評価し、複数の命令セットを保有し、容易に切り換えることができるツールによってサポートされる。標準化言語は、ターゲット命令セットの構成可能な定義、命令セットを実行するのに必要なハードウエアのHDL記述、および検証およびアプリケーション開発のための開発ツールを開発するために使用されるので、設計処理の高度の自動化を可能にする。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本発明は、マイクロプロセッサシステムに向けられ、より詳細には、本発明は
、このシステムのプロセッサは、特定のアプリケーションに対するプロセッサの
適性を改善するためにプロセッサの設計時点で構成され、機能強化される、1つ
あるいはそれ以上のプロセッサを含むアプリケーションソリューションの設計に
向けられる。本発明は、アプリケーション開発者がユーザ定義のプロセッサ状態
を操作し、アプリケーション実行時間およびプロセッササイクル時間までの拡張
の影響を直ちに評価する新しい命令を含む、既存の命令セットアーキテクチャま
での新しい命令のような命令拡張を迅速に開発できるシステムに向けられている
【0002】 (背景技術) プロセッサは、従来は設計し、変更するのが困難であった。この理由で、プロ
セッサを含む大部分システムは、汎用使用のために一度設計され、検証され、次
に時間にわたる複数のアプリケーションによって使用されたプロセッサを使用す
る。それ自体、特定のアプリケーションに対するプロセッサの適性は常に理想的
でない。特定のアプリケーションのコードを有益に実行するためにプロセッサを
変更する(例えば、より速く実行する、より少ない電力を消費する、より少ない
コストを要する)ことはしばしば適切である。しかしながら、既存のプロセッサ
設計を変更する困難、したがって時間、コストおよびリスクさえ高く、これは一
般的には行われない。
【0003】 従来のプロセッサを構成可能にする際の困難をより良く理解するために、この
プロセッサの開発を考察する。先ず第一に、命令セットアーキテクチャ(ISA
)が開発される。これは、本来は1回行われ、多数のシステムによって10年間
使用された対策である。例えば、インテルペンティウム(登録商標)プロセッサ
は、セットされたプロセッサの命令のレガシーを1970年代の中頃に導入され
た8008マイクロプロセッサおよび8080マイクロプロセッサにまで溯るこ
とができる。この変遷において、所定のISA設計基準に基づいて、ISA命令
、シンタックス等が開発され、アセンブラ、デバッガ、コンパイラ等のようなこ
のISAのためのソフトウエア開発ツールが開発されている。次に、この特定の
ISAのためのシミュレータが開発され、様々なベンチマークは、ISAの効率
を評価するために実行され、ISAは評価の結果に従って改訂される。ある点で
は、ISAは申し分なく考察され、ISA処理は、例えば、アセンブラ、デバッ
ガ、コンパイラ等を含む十分に開発されたISA使用、ISAシミュレータ、I
SA検証スイートおよび開発スイートで終了する。
【0004】 次に、プロセッサ設計は開始する。プロセッサは多数の年数の有用な寿命を有
することができ、この変遷もかなりたまに行われ、一般的には、プロセッサは1
回設計され、数年間いくつかのシステムによって使用される。ISA、ISAの
検証スイートおよびシミュレータならびに様々なプロセッサ開発目標を与えられ
ると、プロセッサのマイクロアーキテクチャが、設計され、シミュレートされ、
改訂される。一旦マイクロアーキテクチャが完成されると、マイクロアーキテク
チャはハードウエア記述言語(HDL)で実行され、マイクロアーキテクチャ検
証スイートが開発され、HDLインプリメンテーション(この後でより多く)を
検証するために使用される。次に、この点まで記載されるマニュアル処理とは著
しく違って、自動設計ツールは、HDL記述に基づいて回路を統合し、回路の構
成要素を配置し、経路選択してもよい。したがって、このレイアウトは、チップ
領域使用およびタイミングを最適化するために改訂される。それとは別に、付加
マニュアル処理は、HDL記述に基づいてフロアプランを形成し、HDLを回路
に変換し、それから回路を手動および自動の両方で検証し、レイアウトしてもよ
い。最後に、このレイアウトは、自動ツールを使用してこの回路に一致すること
が確実であることを検証され、この回路はレイアウトパラメータに従って検証さ
れる。
【0005】 プロセッサ開発が完了した後、全システムは設計される。ISAおよびプロセ
ッサの設計とは違って、システム設計(現在プロセッサを含むチップの設計を含
んでもよい)は、全く一般的であり、システムは一般的には連続して設計される
。各システムは、特定のアプリケーションによって比較的短い時間(1年あるい
は2年)使用される。コスト、性能、電力および機能性のような所定のシステム
目的、予め存在しているプロセッサの仕様、チップファンドリ(通常プロセッサ
ベンダーと密接に結合されている)の仕様に基づいて、全システムアーキテクチ
ャは設計され、プロセッサは設計目的に合わせるように選択され、チップファン
ドリは、選択される(これはプロセッサ選択に密接に結合される)。
【0006】 次に、選択プロセッサ、ISAおよびファンドリならびにシミュレーション、
検証および予め開発された開発ツール(ならびに選択されたファンドリのための
標準セルライブラリ)が与えられると、システムのHDLインプリメンテーショ
ンは設計され、検証スイートは、システムHDLインプリメンテーションために
開発され、このインプリメンテーションが検証される。次に、システム開発は統
合され、回路板上に配置され、経路選択され、レイアウトおよびタイミングは再
最適化される。最後に、この回路板は設計され、レイアウトされ、このチップは
製造され、この回路板は組み立てられる。
【0007】 任意の所与のアプリケーションだけが特定の機能のセットを必要とし、アプリ
ケーションによって必要とされない機能を有するプロセッサは、非常に高価で、
より多くの電力を消費し、製造することはより困難であるために、従来のプロセ
ッサ設計に関する他の困難は、全アプリケーションをカバーするためにより多く
の機能を有する従来のプロセッサを単に設計することは適切でないという事実か
ら生じる。さらに、プロセッサが最初に設計される場合、アプリケーションの目
標の全てを知ることはできない。プロセッサ変更処理が自動化され、信頼性があ
るようにすることができる場合、アプリケーションソリューションを形成するシ
ステム設計者の能力は著しく高められる。
【0008】 一例として、複雑なプロトコルを使用してチャネルを介してデータを送受信す
るように設計される装置を考察する。プロトコルは複雑であるために、処理は、
完全にハードワイヤドで、例えば、組合せ、ロジックで適度に行うことができな
く、その代わりにプログラマブルプロセッサはプロトコル処理のためにシステム
に導入される。プログラム可能性は、バグ固定も可能にし、後で命令メモリを新
しいソフトウエアでロードすることによって行われるプロトコルまでアップグレ
ードする。しかしながら、従来のプロセッサは、おそらくこの特定のアプリケー
ションのために設計されなかった(アプリケーションは、プロセッサが設計され
た場合、存在さえしなくてもよい)、実行する必要があり、付加プロセッサロジ
ックに対する1つあるいはわずかな命令で行うことができる、実行するのに多数
の命令を必要とする操作があり得る。
【0009】 プロセッサは容易に機能強化できないために、多数のシステム設計者は、この
ように機能強化をしようと試みなくて、その代わりに、使用可能な汎用プロセッ
サで役に立たない純ソフトウエアソリューションを実行することを選択する。非
能率は、より遅くてもよいし、あるいはより多くの電力を必要としてもよいし、
あるいはより高価であってもよいソリューションを生じる(例えば、このソリュ
ーションは、十分な速度でプログラムを実行するためにより大きく、より強力な
プロセッサを必要とし得る)。他の設計者は、コプロセッサのようなアプリケー
ションのために設計する専用ハードウエアの処理要求のいくつかを提供するよう
に選択し、次にプログラムの様々な点で専用ハードウエアに対するプログラマコ
ードアップアクセスを有する。しかしながら、かなり大きな作業ユニットだけが
十分スピードアップできるので、専用ハードウエアを使用することによって保存
される時間は、データを専用ハードウエアへおよび専用ハードウエアから転送す
るのに必要とされる付加時間よりも大きいために、プロセッサとこのような専用
ハードウエアとの間でデータを転送する時間はシステムに対するこの方式のユー
ティリティを制限する。
【0010】 通信チャネルアプリケーション例では、プロトコルは、暗号化、エラー訂正、
あるいは圧縮/伸長を必要としてもよい。この処理は、しばしばプロセッサのよ
り大きいワードよりもむしろ個別のビットで作動する。計算のための回路は、む
しろ普通であってもよいが、各ビットを抽出するプロセッサに対する要求は、逐
次各ビットを処理し、次にビット加算のかなりのオーバーヘッドを再パックする
。非常に特有な例として、表1に示された規則を使用するハフマン復号化を考察
する(同様な符号化はMPEG圧縮規格で使用される)。値および長さの両方が
計算されねばならないので、長さのビットは、ストリームで復号化される次の要
素の始めを探すためにシフトオフできる。
【表1】
【0011】 従来の命令セットのためのこれを符号化する多数の方法があるが、この方法の
全ては、行われる多数のテストがあるために、多数の命令を要し、組合せロジッ
クのための単一のゲート遅延とは著しく違って、各ソフトウエアインプリメンテ
ーションは複数のプロセッササイクルを要する。例えば、MIPS命令セットを
使用する有効な従来のインプリメンテーションは、6つの論理演算、6つの条件
付分岐、算術演算、および関連レジスタロードを必要とし得る。有利に設計され
た命令セットを使用して、符号化は、いっそうよいが、時間すなわち1つの論理
演算、6つの条件付分岐、算術演算および関連レジスタロードに関して高価であ
る。
【0012】 プロセッサ資源に関して、これは非常に高価であるので、256エントリルッ
クアップテーブルは、一般的には一連のビット毎の比較として処理を符号化する
代わりに使用される。しかしながら、256エントリルックアップテーブルは、
著しいペースをとり、アクセスするのにはまた数サイクルであり得る。より長い
ハフマン符号化の場合、テーブルサイズは法外になり、より複雑で、遅いコード
をもたらす。
【0013】 プロセッサの特有のアプリケーション要求を受け入れる問題の可能な解決策は
、命令セットおよびプロセッサの機能性を高め、この機能性をカストマイズする
ために容易に変更し、拡張できるアーキテクチャを有する構成可能なプロセッサ
を使用することにある。最も簡単な種類の構成可能性は2進選択である。すなわ
ち、機能が有るか無しかのいずれかである。例えば、プロセッサは浮動小数点ハ
ードウエアを有しているか有していないかのいずれかで提供されてもよい。
【0014】 汎用性は、より細かい等級づけを有する構成選択によって改良されてもよい。
例えば、このプロセッサによって、システム設計者は、レジスタファイルのレジ
スタ数、メモリ幅、キャッシュサイズ、キャッシュ関連性等を指定できる。しか
しながら、これらのオプションは、システム設計者によってカスタム化可能性の
レベルになお達しない。例えば、上記のハフマン符号化例において、従来技術に
おいて公知でないけれども、システム設計者は、特有の命令を含み、例えば、 huff8t1,t0 を復号化を実行することを好んでもよい。 ここで、この結果の最上位の8ビットは復号化値であり、最下位の8ビットは長
さである。前述されたソフトウエアインプリメンテーションとは著しく違って、
ハフマン復号化の直接ハードウエアインプリメンテーションは全く簡単であり、
命令を復号化するロジックは、命令復号化をまさに相容れない組合せロジック機
能等に対して約30のゲート、あるいは典型的なプロセッサのゲート総数の0.
1%未満を示し、専用プロセッサ命令によって単一サイクルで計算できるので、
汎用命令だけを使用することに関して4〜20の改善率を示す。
【0015】 構成可能なプロセッサ生成の従来の試みは、一般に2つのカテゴリーに属する
。すなわち、パラメータ化ハードウエア記述と併用されたロジック統合および抽
象マシン記述からのコンパイラおよびアセンブラの自動再ターゲットである。第
1のカテゴリーには、SynopsysDW8051プロセッサ、ARM/Sy
nopsysARM7−S、LexraLX−4080、ARC構成可能RIS
Cコアおよびある程度までSynopsys統合可能/構成可能なPCIバスイ
ンタフェースのような統合可能なプロセッサハードウエア設計が属する。
【0016】 上記の中で、SynopsysDW8051は、既存のプロセッサアーキテク
チャの2進コンパチブルインプリメンテーション、少数の統合パラメータ、例え
ば、128あるいは256バイトの内部RAM、パラメータrom addr sizeによって決定されたROMアドレス範囲、オプショナル内部タイマ、可
変数(0〜2)の直列ポート、および6個あるいは13個のソースのいずれかを
サポートする割り込み装置を含んでいる。DW8051アーキテクチャは幾分変
更できるけれども、DW8051の命令セットアーキテクチャの変更は全然でき
ない。
【0017】 ARM/SynopsysARM7−Sプロセッサは、既存のアーキテクチャ
およびマイクロアーキテクチャの2進コンパチブルインプリメンテーションを含
む。このプロセッサは、2つの構成可能なパラメータ、すなわち、高性能あるい
は低性能の乗算器およびデバッグおよび回路内エミュレーションロジックの包含
を有する。ARM7−Sの命令セットアーキテクチャの変更は可能であるけれど
も、この変更は、既存の非構成可能なプロセッサインプリメンテーションのサブ
セットであるので、新しいソフトウエアは全然必要とされない。
【0018】 LexraLX−4080プロセッサは、標準MIPSアーキテクチャの構成
可能な変形を有し、命令セット拡張に対してソフトウエアサポートを全然有しな
い。このプロセッサのオプションは、特定用途用演算に対してMIPS ALU
操作符号の拡張を可能にするカスタムエンジンインタフェースと、レジスタソー
スおよびレジスタあるいは16ビット幅即値ソースならびにディスティネーショ
ン信号およびをストール信号含む内部ハードウエアインタフェースと、簡単なメ
モリ管理装置オプションと、3MIPSコプロセッサインタフェースと、キャッ
シュ、スクラッチパッドRAMあるいはROMへのフレキシブルローカルメモリ
インタフェースと、周辺機能およびメモリをプロセッサ専用のローカルバスを接
続するバスコントローラと、構成可能な深さの書き込みバッファとを含んでいる
【0019】 ARC構成可能なRISCコアは、ターゲット技術およびクロック速度に基づ
いたオンザフライゲート総数概算、命令キャッシュ構成、命令セット拡張、タイ
マオプション、スクラッチパッドメモリオプション、およびメモリコントローラ
オプションに対するユーザインタフェースと、メモリへのブロック移動を有する
ローカルスクラッチパッドRAM、専用レジスタ、最高16の余分の条件付コー
ド選択、32×32ビットスコアボード乗算ブロック、単一サイクル32ビット
バレルシフタ/ローテトブロック、正規化(第1のビットを探す)命令、結果の
(レジスタファイルでなく)コマンドバッファへの直接書き込み、16ビットM
UL/MACブロックおよび36ビットアキュムレータ、および線形算術を使用
するローカルSRAMへのスライドポインタアクセスのような選択可能なオプシ
ョンを命令セットと、VHDLソースコードの手動編集によって規定されたユー
ザ命令とを有する。ARC設計は、命令セット記述言語を実行する機能を全然有
しもしないしまた構成プロセッサに特有のソフトウエアツールも生成しない。
【0020】 Synopsys構成可能なPCIインタフェースは、設置、構成および統合
の活動のためのGUIあるいはコマンドラインインタフェースと、前以て必要な
ユーザ活動が各ステップで行われることの検査と、構成に基づいた選択設計ファ
イル(Verilog対VHDL)の設置と、組合せ有効性の検査に対する構成
値のためのユーザのパラメータ設定およびプロンプトおよびHDLソースコード
のユーザ更新およびHDLソースファイルの無編集に対するHDL生成のような
選択構成と、I/Oパッド、技術に左右されない制約および統合スクリプト、パ
ッド挿入を選択するために技術ライブラリを解析し、技術専用パッドおよび技術
に左右されない式の技術に依存するスクリプトへの変換のためにプロンプトする
ユーザインタフェースのような統合機能とを含んでいる。構成可能なPCIバス
インタフェースは、パラメータの一貫性の検査、構成に基づいた設置、HDLフ
ァイルの自動変更を実行するために重要である。
【0021】 さらに、従来の統合技術は、ユーザ目的仕様に基づいて異なるマッピングを選
択し、マッピングが速度、電力、領域、目標構成要素に対して最適化することが
できる。この点で、従来技術では、全マッピング処理によってこの設計を行わな
いで、プロセッサをこれらの方法で再構成する効果のフィードバックを得ること
ができない。このようなフィードバックは、システム設計目的が達成されるまで
、プロセッサの更なる再構成を行うために使用できる。
【0022】 構成可能なプロセッサ生成の分野の従来技術の研究の第2のカテゴリー、すな
わちコンパイラおよびアセンブラの自動目標は、大学の研究の恵まれている分野
を包含する。例えば、Hanonoらの「AVIV再目標可能なコード生成器の
命令選択、資源割当ておよびスケジューリング」(コード生成器の自動作成のた
めに使用される機械命令の表示);Fauthらの「nMLを使用する命令セッ
トプロセッサを述べる」;Ramseyらの「埋め込まれたシステムのためのツ
ールを形成するマシン記述」;Ahoらの「ツリーマッチングおよびダイナミッ
クプログラミングを使用するコード生成」(各機械命令に関連した変換を組合わ
せるアルゴリズム、例えば、加算、ロード、ストア、ブランチ等、一連のプログ
ラム操作は、パターンマッチングのような方法を使用するある機械に左右されな
い中間形式によって示される;およびCattellの「コード生成器の形式化
および自動導出」(コンパイラ研究のために使用されるマシンアーキテクチャの
抽象記述)を参照せよ。
【0023】 一旦プロセッサが設計されたとすると、プロセッサの作動が検証されねばなら
ない。すなわち、プロセッサは、通常、命令実行の1つのフェーズに適する各段
を有するパイプラインを使用して記憶プログラムから命令を実行する。したがっ
て、命令を変えるかあるいは加算するかもしくは構成を変えることはプロセッサ
ロジックの広範囲に及ぶ変化を必要とし得るので、複数のパイプライン段は各々
のこのような命令の適切な動作を実行できる。プロセッサの構成は、プロセッサ
が再検証されるべきであり、この検証が変更および加算に適応することを要求す
る。これは簡単な仕事ではない。プロセッサは、広範囲にわたる内部および制御
状態を有する複雑なロジック装置であり、制御およびデータならびにプログラム
の連結解析は検証を要求の厳しい技術にする。プロセッサ検証の困難に付け加え
ることは適切な検証ツールを開発する際の困難である。検証は従来技術で自動化
されないので、検証の汎用性、速度および信頼性はあまり最適でない。
【0024】 さらに、一旦プロセッサが設計され、検証されると、プロセッサが容易にプロ
グラム化できない場合、プロセッサは特に役に立たない。プロセッサは、通常、
コンパイラ、アセンブラ、リンカ、デバッガ、シミュレータおよびプロフィーラ
を含む広範囲に及ぶソフトウエアツールを使ってプログラム化される。プロセッ
サが変わる場合、ソフトウエアツールもまた変更されねばならない。この命令が
コンパイルし、アセンブルし、シミュレートあるいはデバッグすることができな
い場合、命令を付加することは全然役に立たない。プロセッサ修正および機能強
化に関連するソフトウエア変更のコストは従来技術の汎用プロセッサ設計の主要
な障害であった。
【0025】 したがって、従来のプロセッサ設計は、プロセッサが通常特定用途のために一
般的には設計あるいは変更されない困難のレベルのものであることが分かる。さ
らに、プロセッサが特定用途のために構成あるいは拡張できる場合、システム効
率のかなりの改善は可能であることが分かる。さらに、万一プロセッサ設計を改
良する際に電力消費、速度等のようなインプリメンテーション特性のフィードバ
ックを使用できる場合、設計処理の効率および有効性を高めることができる。さ
らに、従来技術では、一旦プロセッサが変更されると、多くの努力が変更後プロ
セッサの正確な動作を検証するために必要である。最後に、従来技術は限られた
プロセッサ構成可能性のために提供しているけれども、この技術は、構成プロセ
ッサと併用するために合わせられたソフトウエア開発ツールの生成のために提供
できない。
【0026】 上記の基準に合うシステムは確かに従来技術に対する改善であるが、改善を行
うことができ、例えば、特殊レジスタに記憶された情報、すなわち得ることがで
きる命令の範囲を著しく制限するプロセッサ状態をアクセスあるいは変更、した
がって達成可能な性能改善量を制限する命令を有するプロセッサシステムに対す
る要求がある。
【0027】 さらに、新しい特定用途用命令を発明することは、サイクル総数削減、付加ハ
ードウエア資源およびCPUサイクル時間影響間の複雑なトレードオフを必要と
する。他の挑戦は、高性能マイクロプロセッサインプリメンテーションのしばし
ば扱いにくい詳細にアプリケーション開発者を従事させないで新しい命令に対す
る有効なハードウエアインプリメンテーションを得ることにある。
【0028】 上記のシステムは、ユーザのアプリケーションに最適なプロセッサを設計する
融通性をユーザに与える。この問題をより十分に理解するために、多数のソフト
ウエア設計者のソフトウエアプリケーションの性能に合わせるように多数のソフ
トウエア設計者によって使用された典型的な方式を考察する。多数のソフトウエ
ア設計者は、一般的には、可能性のある改善のことを考え、この可能性のある改
善を用いるためにこの設計者のソフトウエアを変更し、この設計者のソフトウエ
アソースを再コンパイルし、この可能性のある改善を含む実行可能なアプリケー
ションを生成し、次にこの可能性のある改善を評価する。この評価の結果に応じ
て、多数のソフトウエア設計者はこの可能性ある改善を保持あるいは捨ててもよ
い。一般的には、全処理は2、3分だけで完了できる。これによって、ユーザは
、自由に実験し、アイディアを迅速に試用し、保持あるいは捨てることができる
。いくつかの場合、可能性のあるアイディアを厳密に評価することは複雑である
。ユーザは、非常に多様な状況でアイディアを試したいかもしれない。このよう
な場合、ユーザは、コンパイルされたアプリケーションの多数のバージョン、す
なわち一方の元のバージョンおよび可能性のある改善を含む他方のバージョンを
所有する。いくつかの場合、可能性のある改善は互いに影響し合うかもしれなく
、ユーザはアプリケーションの2つ以上のコピーを所有してもよく、各々のコピ
ーは異なるサブセットの可能性のある改善を使用する。多数のバージョンを保持
することによって、ユーザは異なる環境の下で異なるバージョンを繰り返して容
易にテストできる。
【0029】 構成可能なプロセッサは、ソフトウエア開発者が従来のプロセッサのソフトウ
エアを解決する方法と同様にハードウエアおよびソフトウエアを共同で対話して
開発することを望む。カスタム命令を構成可能なプロセッサに付加するユーザの
場合を考察する。ユーザは、対話して可能性のある命令を自分のプロセッサに加
え、自分の特定のアプリケーションでこれらの命令をテストし、評価することを
望む。従来のシステムの場合、これは3つの理由のために困難である。
【0030】 先ず第一に、可能性のある命令を提案した後、ユーザは、命令を利用できるコ
ンパイラおよびシミュレータを得る前に一時間あるいはそれ以上待たなければな
らない。
【0031】 第二に、ユーザが多数の可能性のある命令で実験したい場合、ユーザは、各々
の命令に対してソフトウエア開発システムを形成し、保持しなければならない。
ソフトウエア開発システムは非常に大きくてもよい。多数のバージョンを保持す
ることは管理できなくなり得る。
【0032】 最後に、ソフトウエア開発システムは全プロセッサのために構成される。これ
は、異なる技術者の中で開発処理を分離することを困難にする。2人の開発者が
特定のアプリケーションで作業する例を考察する。一方の開発者は、プロセッサ
のキャッシュ特性を決定する責任を負うべきであり、他方の開発者はカストマイ
ズされた命令を付加する責任を負うべきであり得る。2人の開発者の作業は関連
しているが、各作業は十分分離可能であるので、各開発者は隔離して自分の仕事
を作業できる。キャッシュ開発者は特定の構成を最初に提案し得る。他方の開発
者は、この構成で開始し、いくつかの命令を試用し、各可能性のある命令に対す
るソフトウエア開発システムを形成する。次に、キャッシュ開発者は提案された
キャッシュ構成を変更する。開発者の構成の各々は最初のキャッシュ構成をとる
ので、他方の開発者は開発者の構成の中のあらゆる構成を再形成しなければなら
ない。プロジェクトで作業する多数の開発者に関して、異なる構成を編成するこ
とは直ぐに管理できないことになり得る。
【0033】 (発明の簡単な概要) 本発明は、従来技術のこれらの問題を解決し、プロセッサのハードウエアイン
プリメンテーションの記述および同じ構成仕様からプロセッサをプログラミング
するソフトウエア開発ツールのセットの両方を生成することによってプロセッサ
を自動的に構成できるシステムを提供する目的を有する。
【0034】 本発明の他の目的は、ハードウエアインプリメンテーションおよび様々な性能
基準のためのソフトウエアツールを最適化できるこのようなシステムを提供する
ことにある。
【0035】 本発明のもう一つの目的は、伸長性、2進選択およびパラメータ変更を含む、
プロセッサのための様々な種類の構成可能性を可能にするこのようなシステムを
提供することにある。
【0036】 本発明のもう一つの目的は、ハードウエアで容易に実行できる言語でプロセッ
サの命令セットアーキテクチャを示すことができるこのようなシステムを提供す
ることにある。
【0037】 本発明の他の目的は、プロセッサ状態を変更する命令セット拡張を開発し、実
行するシステムおよび方法を提供することにある。
【0038】 本発明の他の目的は、プロセッサレジスタを変更する命令セット拡張を開発し
、実行するシステムおよび方法を提供することにある。
【0039】 本発明のもう一つの目的は、ユーザが新しい命令をこの特性を評価できる数分
内に付加することによってプロセッサ構成をカストマイズすることができること
にある。
【0040】 上記の目的は、カストマイズされたプロセッサ命令セットオプションおよび標
準化言語の拡張の記述を使用し、ターゲット命令セットの構成定義、命令セット
を実行するのに必要な回路のハードウエア記述言語記述、およびプロセッサのた
めのソフトウエアを生成し、プロセッサを検証するために使用できるコンパイラ
、アセンブラ、デバッガおよびシミュレータのような開発ツールを開発する自動
プロセッサ生成システムを提供することによって達成される。プロセッサ回路の
インプリメンテーションは、領域、電力消費および速度のような様々な基準に対
して最適化できる。一旦プロセッサ構成が開発されると、プロセッサ構成は、試
験でき、プロセッサインプリメンテーションを繰り返して最適化するように変更
されるシステムに対して入力する。
【0041】 本発明による自動プロセッサ生成システムを開発するために、命令セットアー
キテクチャ記述言語が定義され、アセンブラ、リンカ、コンパイラおよびデバッ
ガのような構成可能なプロセッサ/システム構成ツールおよび開発ツールが開発
される。このことは、大部分のツールは標準であるけれども、ISA記述から自
動的に構成されるようにされなければならないために開発処理の一部である。こ
の設計処理の一部は、一般的には自動プロセッサ設計ツールそのものの設計者あ
るいは製造者によって行われる。
【0042】 本発明による自動プロセッサ生成システムは下記のように作動する。ユーザ、
例えばシステム設計者は構成命令セットアーキテクチャを開発する。すなわち、
ISA定義および予め開発されたツールを使用して、所定のISA設計目的に従
う構成可能な命令セットアーキテクチャが開発される。次に、開発ツールおよび
シミュレータはこの命令セットアーキテクチャのために構成される。構成される
シミュレータを使用して、ベンチマークは、構成可能な命令セットアーキテクチ
ャの効率を評価するために実行され、この中心部は評価結果に基づいて改訂され
る。一旦、構成可能な命令セットアーキテクチャは満足な状態であると、検証ス
イートはそのために開発される。
【0043】 この処理のこれらのソフトウエア態様とともに、このシステムは、構成可能な
プロセッサを開発することによってハードウエア態様に付随する。したがって、
コスト、性能、電力および機能性のようなシステム目的および使用可能なプロセ
ッサ製作の情報を使用して、このシステムは、構成可能なISAオプション、拡
張およびプロセッサ機能選択を考慮する全システムアーキテクチャを設計する。
全システムアーキテクチャ、開発ソフトウエア、シミュレータ、構成可能な命令
セットアーキテクチャおよびプロセッサHDLインプリメンテーションを使用し
て、プロセッサISA、HDLインプリメンテーション、ソフトウエアおよびシ
ミュレータは、システムによって構成され、システムHDLはシステムオンアチ
ップ設計のために設計される。さらに、システムアーキテクチャおよびチップフ
ァンドリーの仕様に基づいて、チップファンドリーは、システムHDL(従来技
術のようにプロセッサ選択に関連しない)に関するファンドリー機能の評価に基
づいて選択される。最後に、ファンドリーの標準電池ライブラリを使用して、構
成システムは、回路を統合し、この回路を配置し、経路選択し、レイアウトおよ
びタイミングを再最適化する能力を与える。したがって、この設計が単一チップ
型のものでない場合、回路板レイアウトは設計され、チップが製造され、回路板
が組み立てられる。
【0044】 上記で分かるように、いくつかの技術がプロセッサ設計処理の広範囲に及ぶ自
動化を容易にするために使用される。これらの問題を取り組むために使用される
第1の技術は、任意の変更あるいは拡張ほど柔軟でなく、それにもかかわらず著
しい機能性改善を可能にする特定の機構を設計し、実現することにある。変更の
任意性を抑制することによって、それに関連した問題が抑制される。
【0045】 第2の技術は、変更のただ一つの記述を行い、全ての影響を及ぼされた構成要
素の変更および拡張を自動的に生成することにある。手動で1回何かを行うこと
は、ツールを記述し、このツールを自動的に行い、このツールを1回使用するこ
とよりもしばしば安価であるために、従来技術で設計されたプロセッサはこれを
行わなかった。タスクが数回繰り返される場合、自動化の長所を用いる。
【0046】 使用される第3の技術は、その後のユーザ評価のための推定および自動構成を
補助するためにデータベースを形成することにある。
【0047】 最後に、第4の技術は、構成に役に立つ形式でハードウエアおよびソフトウエ
アを提供することにある。本発明の実施例では、ハードウエアおよびソフトウエ
アのいくつかは標準ハードウエアおよびソフトウエア言語で直接記述されないで
、構成データベースの照会および置換、条件付、複製および他の修正を有する標
準ハードウエアおよびソフトウエア言語コードの生成を可能にするプリプロセッ
サの付加によって強化された言語で記述される。したがってコアプロセッサ設計
は、強化がリンクインできるフックで行われる。
【0048】 これらの技術を示すために、特定用途用命令の付加を考察する。この方法をレ
ジスタおよび一定のオペランドを有し、レジスタ結果を生じる命令に抑制するこ
とによって、命令の操作は組合せ(無状態、自由フィードバック)ロジックだけ
で指定できる。この入力は、操作符号割当、命令名、アセンブラシンタックスお
よび命令のための組合せロジックを指定する。この命令からツールは、 ・ プロセッサが新しい操作符号を認識する命令復号化ロジック; ・ レジスタオペランドで組合せロジック機能を実行する機能ユニットの付加; ・ そのオペランドが有効である場合だけ命令発行を確認するプロセッサの命令
スケジューリングロジックの入力; ・ 新しい操作符号およびそのオペランドを受け取り、正しいマシンコードを生
成するアセンブラ変更; ・ 新しい命令をアクセスする新しい固有の機能を付加するコンパイラ変更; ・ マシンコードを新しい命令として受け取り、指定ロジック機能を実行するシ
ミュレータ変更;および ・ 付加命令の結果を含み、この結果を検査する直接コードシーケンスおよびラ
ンダムコードシーケンスの両方を生成する診断生成器を生成する。
【0049】 上記の技術の全ては特定用途用命令を付加するために使用される。入力は、入
力オペランドおよび出力オペランドおよびこれらのオペランドを評価するロジッ
クに抑制される。この変更は1つの場所に記述され、全ハードウエア変更および
ソフトウエア変更はこの記述から得られる。この機能は、いかに単一入力が複数
の構成要素を高めるために使用できることを示している。
【0050】 プロセッサとシステムロジックの他の部分との間のトレードオフは設計処理で
非常に遅れて行うことができるために、この処理の結果は、システムのアプリケ
ーション要求をかなえることで従来の技術よりも非常に優れたシステムである。
このシステムは、システムの構成は多数のより多くの表示形式に適用されてもよ
い点で前述の従来の方式の多くより優れている。単一ソースは、全ISA符号化
ために使用されてもよく、ソフトウエアツールおよび高レベルシミュレーション
は構成可能パッケージに含められてもよく、流れは、構成値の最適結合を探すた
めに反復のために設計されてもよい。さらに、前述の方法は、制御のための単一
ユーザインタフェースあるいはユーザ向けの再定義のための測定システムなしだ
けでハードウエア構成あるいはソフトウエア構成だけに焦点を合わせていたが、
本発明は、プロセッサハードウエアおよびソフトウエアの構成のための流れを完
成することに寄与し、最適構成の選択を助けるハードウエア設計結果およびソフ
トウエア性能からフィードバックを含む。
【0051】 これらの目的は、カストマイズされたプロセッサ命令セット拡張の記述を標準
化言語で使用し、ターゲット命令セットの構成可能な定義、命令セットを実行す
るのに必要な回路のハードウエア記述言語、およびプロセッサのためのアプリケ
ーションを開発し、検証するために使用できるコンパイラ、アセンブラ、デバッ
ガおよびシミュレータのような開発ツールを開発する自動プロセッサ設計を提供
することによって本発明の態様により達成される。標準化言語は、プロセッサ状
態を変更するかあるいは構成可能なプロセッサを使用する命令セット拡張を処理
できる。拡張および最適化の抑制領域を与えることによって、処理は高度まで自
動化でき、それによって高速で、信頼性のある開発を容易にする。
【0052】 上記の目的は、さらにユーザが複数の可能性のある命令のセットあるいは状態
(以下、可能性のある構成可能な命令あるいは状態の組合せは、ひとまとめにし
て「プロセッサエンハンスメント」と呼ばれる)を保持し、プロセッサエンハン
スメントのアプリケーションを評価できる場合、プロセッサエンハンスメント間
で容易に切り換えることができるシステムを提供する本発明の他の態様により達
成される。
【0053】 ユーザは、ここに示された方法を使用してベースプロセッサ構成を選択し、形
成する。ユーザは、新しいセットのユーザ定義のプロセッサエンハンスメントを
形成し、このプロセッサエンハンスメントをファイルディレクトリに入れる。次
に、ユーザは、ユーザエンハンスメントを処理し、ベースソフトウエア開発ツー
ルによって使用可能な形式に変換するツールを呼び出す。この変換は、ユーザ定
義のエンハンスメントだけを含み、全ソフトウエアシステムを形成しないので、
非常に速い。次にユーザは、ベースソフトウエア開発ツールを呼び出し、新しい
ディレクトリで形成されたプロセッサエンハンスメントを動的に使用することを
ツールに知らせる。好ましくは、ディレクトリの位置は、コマンドラインオプシ
ョンあるいは環境のいずれかによってツールに与えられる。処理をさらに簡単に
するために、ユーザは標準ソフトウエアメークファイルを使用できる。これらに
よって、ユーザは、そのプロセッサ命令を変更し、次に単一のメークコマンドに
よってエンハンスメントを処理し、新しいプロセッサエンハンスメントに関して
そのアプリケーションを再形成し、評価するためにベースソフトウエア開発シス
テムを使用できる。
【0054】 本発明は、従来の方式の3つの制限を克服する。新しいセットの可能性のある
エンハンスメントを与えると、ユーザは瞬間の問題で新しいエンハンスメントを
評価できる。ユーザは、各セットに対する新しいディレクトリを形成することに
よって可能性のあるエンハンスメントの多数のバージョンを保持できる。ディレ
クトリは新しいエンハンスメントの記述を含むだけで全ソフトウエアシステムを
含まないので、必要とされる記憶空間は最少である。最後に、新しいエンハンス
メントは構成の他の部分から切り離される。一旦ユーザが可能性のあるセットの
新しいエンハンスメントを有するディレクトリで作成したとすると、ユーザは、
このディレクトリを任意のベース構成と併用できる。
【0055】 (現在好ましい実施例の詳細な説明) 一般に、自動プロセッサ生成処理は、構成可能なプロセッサ定義およびそれの
ユーザ指定変更、ならびにプロセッサが構成されるべきユーザ指定アプリケーシ
ョンで始まる。この情報は、ユーザ変更を考慮する構成済プロセッサを生成し、
ソフトウエア開発ツール、例えば、このツールのためのコンパイラ、シミュレー
タ、アセンブラ、逆アセンブラ等を生成するために使用される。さらに、このア
プリケーションは、新しいソフトウエア開発ツールを使用して再コンパイルされ
る。再コンパイル済アプリケーションは、アプリケーションを実行する構成済プ
ロセッサの性能を記述するソフトウエアプロフィールを生成するためにシミュレ
ータを使用してシミュレートされ、構成済プロセッサは、プロセッサ回路インプ
リメンテーションを特徴とするハードウエアプロフィールを生成するためにシリ
コンチップエリア使用、電力消費、速度等に対して評価される。ソフトウエアお
よびハードウエアプロフィールはフィードバックされ、プロセッサがこの特定の
アプリケーションのために最適化できるように他の反復構成を可能にするように
ユーザに供給される。
【0056】 本発明の好ましい実施例による自動プロセッサ生成システム10は、図1に示
されるように4つの主要構成要素を有する。すなわち、4つの主要構成要素は、
プロセッサを設計することを望むユーザがユーザの構成可能性および伸長性オプ
ションおよび他の設計抑制を入力するユーザ構成インタフェース20と、ユーザ
によって選択された基準のために設計されたプロセッサのためにカストマイズす
ることができる一連のソフトウエア開発ツール30と、プロセッサ40のハード
ウエアインプリメンテーションのパラメータ化伸長記述と、および入力データを
ユーザインタフェースから受信し、要求されたプロセッサのカストマイズされた
統合可能なハードウエア記述を生成し、ソフトウエア開発ツールを変更し、選択
された設計を受け入れる形成システム50である。好ましくは、形成システム5
0は、さらに診断ツールを生成し、ハードウエアおよびソフトウエア設計および
推定器を検証し、ハードウエアおよびソフトウエア特性を推定する。
【0057】 ここで使用され、かつ添付された特許請求の範囲に使用されるような「ハード
ウエアインプリメンテーション記述」は、プロセッサ設計の物理的インプリメン
テーションの態様を記述し、1つあるいはそれ以上の他の記述だけあるいはこの
記述とともにこの設計に従ってチップの製造を容易にする1つあるいはそれ以上
の記述を意味する。したがって、ハードウエアインプリメンテーション記述の構
成要素は、記述をマスクするネットリストおよびマイクロコーティングによるハ
ードウエア記述言語のような比較的高レベルから変化する抽象概念のレベルにあ
ってもよい。しかしながら、本実施例では、ハードウエアインプリメンテーショ
ン記述の主構成要素は、HDL、ネットリストおよびスクリプトで記述される。
【0058】 さらに、ここで使用され、添付された特許請求の範囲で使用されるようなHD
Lは、マイクロアーキテクチャ等を記述するために使用される一般クラスのハー
ドウエア記述言語を示すことを意図し、このHDLはこのような言語の任意の特
定の例を示すことを示すことを意図する。
【0059】 この実施例では、プロセッサ構成のための基本は図2に示されたアーキテクチ
ャ60である。多数のアーキテクチャの要素は、ユーザによって直接変更できな
い基本機能である。これらは、プロセッサ制御部62と、整列・復号化部64(
ただし、この部分の一部はユーザ指定構成に基づいている)と、ALU・アドレ
ス生成部66と、ブランチロジック・命令フェッチ68と、プロセッサインタフ
ェース70とを含む。他の装置は、基本プロセッサの一部であるが、ユーザ構成
可能可能である。これらは、割り込み制御部72と、データおよび命令アドレス
監視部74および76と、ウィンドウレジスタファイル78と、データおよび命
令キャッシュおよびタグ部80と、書き込みバッファ82と、タイマ84とを含
む。図2に示された残りの部分は任意にはユーザによって含まれる。
【0060】 プロセッサ構成システム10の中央構成要素はユーザ構成インタフェース20
である。これは、好ましくはコンパイラの再構成およびアセンブラ、逆アセンブ
ラおよび命令セットシミュレータ(ISS)の再生と、全プロセッサ統合、配置
およびルーチングを始める入力の作成を含むプロセッサ機能性を選択できるグラ
フィックユーザインタフェース(GUI)をユーザに提供するモジュールである
。それによって、ユーザも、プロセッサエリア、電力消費、サイクル時間、アプ
リケーション性能およびプロセッサ構成の他の反復およびエンハンスメントのた
めのコードサイズの迅速な推定を利用できる。好ましくは、GUIも、構成デー
タベースにアクセスし、デフォルト値を得て、ユーザ入力のエラーチェックを行
う。
【0061】 プロセッサ60を設計するために本実施例による自動プロセッサ生成システム
10を使用するために、ユーザは、設計パラメータをユーザ構成インタフェース
20に入力する。自動プロセッサ生成システム10は、ユーザの制御の下でコン
ピュータシステムで実行するスタンドアロンシステムであってもよい。すなわち
、しかしながら、このシステム10は、好ましくは自動プロセッサ生成システム
10の製造の制御の下で主にシステムで実行する。次に、ユーザアクセスは、通
信ネットワークを介して提供されてもよい。例えば、GUIは、HTMLおよび
ジャバで記述されているデータ入力スクリーンを有するウェバブラウザを使用し
て提供されてもよい。これは、任意の所有権を主張できるバックエンドソフトウ
エアの機密性を保有し、保守を簡単にし、バックエンドソフトウエア等を更新す
るようないくつかの長所を有する。この場合、GUIにアクセスするために、ユ
ーザは、自分のIDを証明するためにシステム10に最初のログオンをしてもよ
い。
【0062】 一旦ユーザがアクセス権を有すると、システムは図3に示されるように構成マ
ネージャスクリーン86を表示する。構成マネージャ86は、ユーザによってア
クセスできる構成の全てをリストするディレクトリである。図3の構成マネージ
ャ86は、ユーザが2つの構成、「just intr」および「high p
rio」、を有し、最初のものは既に形成された、すなわち製造のために終了さ
れ、第2番目のものは依然として形成されるべきであることを示している。この
スクリーン86から、ユーザは選択構成を形成し、削除し、編集し、どの構成お
よび拡張がこの構成のために選択されるかあるいは新しい構成を形成するかを指
定するリポートを生成してもよい。「just intr」のような形成された
これらの構成の場合、それのためにカストマイズされた一連のソフトウエア開発
ツール30はダウンロードできる。
【0063】 新しい構成を作成するかあるいは既存の構成を編集することは、図4に示され
た構成エディタ88を持ち出す。構成エディタ88は、構成および拡張できるプ
ロセッサ60の様々な一般的な態様を示す左側に「オプション」セクションメニ
ューを有する。オプションセクションが選択される場合、このセクションのため
の構成セクションを有するスクリーンが右側に表示され、これらのオプションは
、当該技術分野で公知であるようにプルダウンメニュー、メモメニュー、メモボ
ックス、チェックボックス、ラジオボタン等でセットできる。ユーザは、オプシ
ョンを選択し、データをランダムに入力できるけれども、好ましくは、セクショ
ン間に論理従属関係があるので、データは各々に逐次入力される。例えば、「割
り込み」セクションにオプションを適切に表示するために割り込み数は「ISA
Options」セクションで選択されねばならない。
【0064】 本実施例では、下記の構成オプションは各セクションに対して使用可能である
。 目的 推定のための技術 ターゲットASIC技術:.18,.25..35ミクロン ターゲット作動状態:典型的な、最悪の場合 インプリメンテーション目標 ターゲット速度:任意 ゲート総数:任意 ターゲット電力:任意 目的優先化:速度、領域電力、速度、電力、領域 ISAオプション 数値オプション 40ビットアキュムレータを有するMAC16:イエス、ノー 16ビット乗算器:イエス、ノー 例外オプション 割り込み数:0〜32 高優先順位割り込みレベル:0〜14 イネーブルデバッギング:イエス、ノー タイマ数:0〜3 その他 バイト配列:リトル・エンディアン、ビッグ・エンディアン ウィンドウズ(登録商標)を呼び出すために使用可能なレジスタ数:32、
64プロセッサキャッシュ&メモリ プロセッサインタフェース読み出し幅(ビット):32、64、128 書き込みバッファエントリ(アドレス/値対):4、8、16、32 プロセッサキャッシュ 命令/データキャッシュサイズ(kB):1、2、4、8、16 命令/データキャッシュラインサイズ(kB):16、32、64 周辺構成要素 タイマ タイマ割り込み数 タイマ割り込みレベル デバッギングサポート 命令アドレスブレークポイントレジスタ数:0〜2 データアドレスブレークポイントレジスタ数:0〜2 デバッグ割り込みレベル トレースポート:イエス、ノー オンチップデバッグモジュール:イエス、ノー 全走査:イエス、ノー 割り込み ソース:外部、ソフトウエア 優先順位レベル システムメモリアドレス ベクトルおよびアドレス計算法:XTOS、マニュアル 構成パラメータ RAMサイズ、開始アドレス:任意 ROMサイズ、開始アドレス:任意 XTOS:任意 構成特定アドレス ユーザ例外ベクトル:任意 カーネル例外ベクトル:任意 レジスタウィンドウオーバーフロー/アンダーフローベクトルベース: 任意 リセットベクトル:任意 XTOS開始アドレス:任意 アプリケーション開始アドレス:任意 TIE命令 (ISA拡張を規定する) ターゲットCAD環境 シミュレーション Verilog(登録商標):イエス、ノー 統合 Design Compiler(登録商標):イエス、ノー 場所&ルート Apollo(登録商標):イエス、ノー さらに、システム10は、32ビット整数乗算/除算装置あるいは浮動小数点演
算装置、メモリ管理装置、オンチップRAMおよびROMオプション、キャッシ
ュ連想性、機能拡張DSPおよびコプロセッサ命令セット、ライトバックキャッ
シュ、マルチプロセッサ同期化、コンパイラ指向推測、および付加CADパッケ
ージのためのサポートのような他の付加装置を追加するためのオプションを提供
する。たとえどんな構成オプションが所与の構成プロセッサのために使用可能で
あっても、この構成オプションは好ましくは、一旦ユーザが適切なオプションを
選択したとしてもシステム10がシンタックスチェック等のために使用する定義
ファイル(例えば、付録Aに示された定義ファイル)に列挙される。
【0065】 前述から、自動プロセッサ構成システム10は、図5に示されるようにユーザ
に2つの一般的な種類の構成性300、すなわちユーザがスクラッチからの任意
の機能および構造を規定できる伸長性302およびユーザが所定の制約されたオ
プションのセットから選択できる変更可能性304を提供する。変更可能性内で
、システムは、所定の機能、例えばMAC16あるいはDSPが、プロセッサ6
0に付加されるべきであるかどうかおよび他のプロセッサの機能、例えば割り込
み数およびキャッシュサイズのパラメータ仕様308の2進選択306を可能に
する。
【0066】 上記の構成オプションの多くは当業者にはよく知られている。しかしながら、
他のものは特別の注意に値する。例えば、RAMおよびROMオプションによっ
て、設計者は、プロセッサ10そのものにスクラッチパッドあるいはファームウ
エアを含めることができる。プロセッサ10は、命令を取り出し、これらのメモ
リからのデータを読み出し、書き込む。メモリのサイズおよび配置は構成可能で
ある。この実施例では、これらのメモリの各々は、セットアソシアティブキャッ
シュの付加セットとしてアクセスされる。メモリのヒットは単一のタグメモリと
比較することによって検出できる。
【0067】 システム10は、割り込みのための別個の構成オプション(レベル1割り込み
を実行する)および高優先順位割り込みオプション(レベル2〜15の割り込み
およびノンマスカブル割り込みを実行する)を行う。何故ならば、各高優先順位
割り込みレベルは3つの特別レジスタを必要とするので、これらのレジスタはよ
り高価であるためである。
【0068】 40ビットアキュームレータオプションを有するMAC16(図2の90に示
されている)は、40ビットアキュームレータを有する16ビット乗算器/加算
機能、8つの16ビットオペランドレジスタおよび乗算、累算、オペランドロー
ドおよびアドレス更新の命令を結合する複合命令のセットを付加する。オペラン
ドレジスタには、乗算/累算演算と並列にメモリから16ビット値の対がロード
できる。この装置は、サイクル毎の2つのロードおよび乗算/累算を有するアル
ゴリズムを持続できる。
【0069】 オンチップデバッグモジュール(図2の92に示されている)は、JTAGポ
ート94を介してプロセッサ60の内部ソフトウエアビジブルステートをアクセ
スするために使用される。モジュール92は、プロセッサ60をデバッグモード
にする例外生成のためのサポート、全プロセッサビジブルレジスタあるいはメモ
リロケーションへのアクセス、プロセッサ60が実行するために構成される任意
の命令の実行、コードの所望の位置にジャンプするPCの変更、およびJTAG
ポート94を介するプロセッサ60の外部から作動される通常の動作モードに戻
ることができるユーティリティ、を行う。
【0070】 一旦プロセッサ10がデバッグモードに入ると、プロセッサ10は、有効命令
がJTAGポート94を介してスキャンインされたことの外部領域からの指示を
待つ。次に、このプロセッサは、この命令を実行し、次の有効命令を待つ。一旦
プロセッサ10のハードウエアインプリメンテーションが製造されたとすると、
このモジュール92はシステムをデバッグするために使用できる。プロセッサ1
0の実行は、遠隔ホストで実行するデバッガを介して制御できる。このデバッガ
は、JTAGポート94を介してプロセッサとインタフェースし、オンチップデ
バッグモジュール92の機能を使用し、命令の実行を制御するのと同様にプロセ
ッサ10の状態を決定し、制御する。
【0071】 最高32ビットのカウンタ/タイマ84が構成されてもよい。これは、割り込
み機能および同様な機能と併用するために、(各構成タイマに対して)比較レジ
スタおよび比較レジスタ内容と現クロックレジスタカウントとを比較する比較器
と同様に各クロックサイクルを増分する32ビットのレジスタの使用を必要とす
る。このカウンタ/タイマはエッジトリガされるものとして構成でき、通常ある
いは高優先順位の内部割り込みを発生できる。
【0072】 推測オプションは、ロードが必ずしも実行されない場合、ロードがフローを制
御するために推測して移動できることによってより大きいコンパイラスケジュー
リング融通性を提供する。ロードは例外を生じてもよいために、このロード移動
は、例外を最初に生じなかった有効プログラムに導入できる。ロードが実行され
ない場合、推測ロードは、これらの例外が生じることを防止するが、このデータ
が必要とされる場合、例外を与える。ロードエラーに対する例外を生じる代わり
に、推測ロードは、ディスティネーションレジスタの有効ビットをリセットする
(このオプションに関連した新しいプロセッサ状態)。
【0073】 複数のプロセッサがシステムで使用される場合、コアプロセッサ60は好まし
くは若干の基本パイプライン同期機能を有するけれども、プロセッサ間のある種
の通信および同期が必要である。いくつかの場合、入出力待ち行列のような自己
同期通信技術が使用される。他の場合、共有メモリモデルは通信のために使用さ
れ、共有メモリは必要とされるセマンティックスを提供するために、同期のため
の命令セットサポートを行うことが必要である。例えば、セマンティックスを得
て、解除する場合の付加ロード命令およびストア命令を付加できる。これらは、
同期基準間の正確な配列が保持されなければならないようにメモリロケーション
が同期およびデータのために使用されてもよいマイクロプロセッサシステムでメ
モリ参照の配列を制御するために役に立つ。
【0074】 いくつかの場合、共有メモリモデルは通信のために使用され、共有メモリは必
要とされるセマンティックスを提供しないために同期に対する命令セットサポー
トを行う必要がある。これはマイクロプロセッサ同期オプションによって行われ
る。
【0075】 おそらく構成オプションの中で最も顕著なものは、設計者定義の命令実行装置
96が形成されるTIE命令定義である。カリフォルニア州のサンタクララ市の
テンシリカ社によって開発されたTIE(登録商標)(Tensilica Instruction
Set Extensions)言語によって、ユーザは、拡張および新しい命令の形でアプリ
ケーションのためのカスタム機能を記述し、ベースISAを拡張できる。さらに
、TIEの汎用性のために、TIEは、ユーザによって変更できないISAの部
分を記述するために使用されてもよい。このように、全ISAは、ソフトウエア
開発ツール30およびハードウエアインプリメンテーション記述40を均一に生
成するために使用できる。TIE技術は、多数の形成ブロックを使用し、下記の
ように新しい命令の属性を記述する。
【0076】 ‥命令フィールド ‥命令クラス ‥命令操作符号 ‥命令セマンティックス ‥命令オペランド ‥一定テーブル 命令フィールドステートメントfieldは、TIEコードの可読性を改善す
るために使用される。フィールドは、一緒にグループ化され、名前によって参照
される他のフィールドの連結のサブセットである。命令のビットの全セットは、
最高レベルスパーセットフィールドinstであり、このフィールドはより小さ
いフィールドに分割できる。例えば、
【数1】
【0077】 は、2つの4ビットフィールドを規定し、xおよびyは、最高レベルフィールド
instのサブフィールド(ビット8〜11および12〜15のそれぞれ)とし
て、8ビットフィールドxyはxフィールドおよびyフィールドの連結として規
定する。
【0078】 ステートメント操作符号は特定のフィールドを符号化する操作符号を規定する
。このように規定された操作符号によって使用されるオペランド、例えば、レジ
スタあるいは即値定数を指定することを目的とする命令フィールドは、最初にフ
ィールドステートメントで規定され、次にオペランドステートメントで規定され
ねばならない。 例えば、
【数2】
【0079】 は、予め規定された操作符号CUSTO(4,b|0000は4ビットの長さの
2進定数0000を示す)に基づいて2つの新しい操作符号、acsおよびad
selを規定する。好ましいコアISAのTIE仕様はそのベース定義の一部と
して下記のステートメントを有する。
【数3】
【0080】 したがって、acsおよびadselの定義によって、TIEコンパイラは、下
記によってそれぞれ示される命令復号化ロジックを生成する。
【数4】
【0081】 命令オペランドステートメントオペランドは、レジスタおよび即値定数を識別
する。しかしながら、フィールドをオペランドとして規定する前に、このオペラ
ンドは前述のようなフィールドとして予め規定されねばならかった。オペランド
が即値定数である場合、定数の値はオペランドから生成できるかあるいは定数の
値は後述されるように規定された予め規定された定数テーブルからとることがで
きる。例えば、即値オペランドを符号化するために、下記のTIEコードは、
【数5】
【0082】 符号付数字およびオフセットフィールドに記憶された数の4倍であるオペランド
offset4を保有する18ビットフィールド名オフセットを規定する。オペ
ランドステートメントの最後の部分は、当業者に明らかであるように、組合せ回
路を記述するVerilog(登録商標)HDLのサブセットの計算を実行する
ために使用される回路を実際に記述する。
【0083】 ここで、wireステートメントは、tの名前の32ビット幅の論理ワイヤの
セットを規定する。wireステートメント後の最初のassignステートメ
ントは、論理ワイヤを駆動する論理信号は右にシフトされたoffset4定数
であることを指定し、第2番目のassignステートメントは、tの下部18
ビットがoffsetフィールドに入れられることを指定する。まさしく最初の
assignステートメントは、offset4オペランドの値をoffset
の連結および2ビットの左シフトが続くその符号ビット(ビット17)の14の
複製として直接指定する。
【0084】 定数テーブルオペランドに関しては、TIEコード
【数6】
【0085】 は、テーブルステートメントの使用を行い、定数のアレイプライム(テーブル名
に続く数はテーブルの要素の数である)を規定し、オペランドをインデックスと
して使用し、テーブルプライムとし、オペランドprime sのための値を符
号化する(インデクシングを規定する際のVerilog(登録商標)ステート
メントの使用を注目せよ)。
【0086】 命令クラスステートメントiclassは、操作符号を共通フォーマットのオ
ペランドに関連付ける。iclassステートメントで規定された全命令は、同
じフォーマットおよびオペランド使用を有する。命令クラスを規定する前に、そ
の構成要素は、最初にフィールドとして、次に操作符号およびオペランドとして
規定されねばならない。例えば、オペランドacsおよびadselを規定する
前述の例で使用されるコードで形成すると、下記の付加ステートメント
【数7】
【0087】 は、3つのレジスタオペランドart、arsおよびarrを規定するためにオ
ペランドステートメントを使用する(定義のVerilog(登録商標)ステー
トメントの使用を再び注目せよ)。したがって、iclassステートメント
【数8】
【0088】 は、オペランドadselおよびacsが2つのレジスタオペランドartおよ
びarsを入力として扱う普通のクラスの命令viterbiに属することを指
定し、出力をレジスタオペランドarrに書き込む。
【0089】 命令セマンティックステートメントsemanticは、オペランドを符号化
するために使用される同じサブセットのVerilog(登録商標)を使用して
1つあるいはそれ以上の命令の働きを記述する。単一セマンティックステートメ
ントで複数命令を規定することによって、いくつかの共通式が共有でき、ハード
ウエアインプリメンテーションはより有効にされることができる。セマンティッ
クステートメントで許可された変数は、ステートメントの操作符号リストに規定
された操作符号のためのオペランドおよび操作符号リストで指定された各操作符
号のための単一ビット変数である。この変数は操作符号と同じ名前を有し、操作
符号が検出される場合、1に対する数値を求める。この変数は、対応する命令の
存在を示すために計算部(Verilog(登録商標)サブセットセクション)
で使用される。
【0090】 例えば、他の32ビットワードのそれぞれの8ビットオペランドとともに32
ビットワードの4つの8ビットオペランドの加算を実行する新しい命令ADD8 4および32ビットワードの2つの16ビットオペランドと他の32ビットワ
ードのそれぞれの16ビットオペランドとの間で最少値選択を実行する新しい命
令MIN16 2を規定するTIEコードは、下記を読み取ってもよい。
【数9】
【0091】 ここで、op2、CUSTO、arr、artおよびarsは、前述のような予
め規定されたオペランドおよび前述のようなopcodeおよびiclassス
テートメント関数である。
【0092】 セマンティックステートメントは、新しい命令によって実行される計算を指定
する。当業者に容易に明らかであるように、セマンティックステートメント内の
第2行は、新しいADD8 4命令によって実行された計算を指定し、その中の
第3行および第4行は、新しいMIN16 2命令によって実行された計算を指
定し、このセクション内の最後の行はarrレジスタに書き込まれた結果を指定
する。
【0093】 ユーザ入力インタフェース20の議論に戻ると、一旦ユーザが望む構成および
拡張オプションの全てを入力したとすると、形成システム50が引き継ぐ。図5
に示されるように、形成システム50は、ユーザによってセットされたパラメー
タによって構成された構成仕様およびユーザによって設計された伸長機能を受け
取り、これらをコアプロセッサアーキテクチャを規定する付加パラメータ、例え
ば、ユーザによって変更可能な機能と結合し、全プロセッサを記述する単一構成
仕様100を形成する。例えば、ユーザによって選択された構成設定に加えて、
形成システム50は、プロセッサの物理的アドレス空間のための物理アドレスビ
ット数を指定するパラメータ、リセット後のプロセッサ60によって実行される
第1の命令の位置等を加算してもよい。
【0094】 テンシリカ社によるXtensa(登録商標)命令セットアーキテクチャ(I
SA)基準マニュアル改訂1.0は、構成可能なプロセッサ内でコア命令として
実行できる命令および構成オプションの選択によって使用可能である命令の例を
示す目的のために参照してここに組み込まれている。
【0095】 構成仕様100は、ベースISAを指定するTIE言語ステートメントを含む
ISAパッケージ、コプロセッサパッケージ96(図2を参照)あるいはDSP
パッケージのようなユーザによって選択された任意の付加パッケージ、およびユ
ーザによって供給された任意のTIE拡張も含む。さらに、構成仕様100は、
所定の構造機能がプロセッサ60に含まれるべきであるかどうかを示すフラグを
セットする多数のステートメントを有してもよい。例えば、
【数10】
【0096】 は、プロセッサが、オンチップデバッギングモジュール92、割り込み機能72
および例外処理を含むが、高優先順位割り込み機能を含まないことを示す。
【0097】 構成仕様100を使用すると、下記は、後記に示されるように自動的に生成で
きる。 ・ プロセッサ60の命令復号化ロジック ・ プロセッサ60のための不正命令検出ロジック ・ アセンブラ110の特定ISA用部分 ・ コンパイラ108のための特定ISA用サポートルーチン ・ 逆アセンブラ100(デバッガによって使用される)の特定ISA用部分 ・ シミュレータ112の特定ISA用部分 重要な構成機能は命令のパッケージの包含を指定することにあるために、これ
らのことを自動的に生成することは有用である。いくつかのことに関して、命令
が構成された場合、これをツールの各々において条件付コードで実行し、命令を
処理することができるが、これは扱いにくい。より重要なことには、命令によっ
てシステム設計者は設計者のシステムのための命令を容易に加えることができる
【0098】 構成仕様100を設計者からの入力として扱うことに加えて、目標を受け入れ
、形成システム50を有し、構成を自動的に決定することもできる。設計者はプ
ロセッサ60のための目標を指定できる。例えば、クロック速度、面積、コスト
、典型的な電力消費、および最大電力消費は目標であってもよい。目標のいくつ
かは競合するので(例えば、しばしば性能は、面積あるいは電力消費あるいは両
方を増加させることによってのみ増加させることができる)、形成システム50
は、目標に対する優先順位配列も行う。次に、形成システム50は、サーチエン
ジン106を調べ、利用可能な構成オプションのセットを決定し、入力目標を同
時に実行しようと試みるアルゴリズムから各オプションをいかにセットするかを
決定する。
【0099】 サーチエンジン106は、いろいろの距離に与える効果を記述するエントリを
有するデータベースを含む。エントリは、特定の構成設定が距離に加法的、乗法
的、あるいは制限する効果がある。エントリは、前提条件として他の構成オプシ
ョンを必要とするものとしてあるいは他のオプションと互換性がないものとして
も示すことができる。例えば、簡単なブランチ予測オプションは、命令毎のサイ
クル(CPI‥性能の決定要素)にある乗法あるいは加法の効果、クロック速度
への制限、面積への加法効果、および電力への加法効果を指定できる。このオプ
ションは、より手の込んだブランチ予測子と一致しないものとして示すことがで
き、命令フェッチ待ち行列サイズを少なくとも2つのエントリに設定することに
左右される。これらの効果の値は、ブランチ予測テーブルサイズのようなパラメ
ータの関数であってもよい。一般に、データエントリは数値を求められる関数と
して示すことができる。
【0100】 いろいろのアルゴリズムは、入力目標を達成することに最も接近する構成設定
を探すために可能である。例えば、簡単なナップザックパッキングアルゴリズム
は、コストで割られた値の分類配列の各オプションを考察し、コストを特定の制
限内に保持している間、値を増加させる任意のオプション仕様を受け入れる。そ
れで、例えば、電力を指定値以下に保持している間に性能を最少にするために、
このオプションは、電力で割られた性能によって分類され、電力制限を超えない
で構成できる性能を増加させる各オプションが受け入れられ。より込み入ったナ
ップザックアルゴリズムは若干のバックトラッキング量を提供する。
【0101】 目標および設計データベースから構成を決定する非常に異なる種類のアルゴリ
ズムはシミュレートアニーリングに基づいている。ランダム初期セットのパラメ
ータは、開始点として使用され、次に個別パラメータの変更は、グローバルユー
ティリティ関数の数値を求めることによって受け入れられるかあるいは拒否され
る。ユーティリティ関数の改良は常に、マイナスの変更は最適化が進行するとき
に低下する閾値に確率的に基づいて受け入れられている間に常に受け入れられる
。このシステムでは、ユーティリティ関数は入力目標から構成される。例えば、
目標性能>200、電力<100、面積<4が与えられる、電力、面積および性
能の優先順位に関して、電力消費が100以下で、次にニュートラルになるまで
、電力消費の減少に報い、面積が4以下で、次にニュートラルになるまで、面積
の減少に報い、性能が200以上で、次にニュートラルになるまで、性能の増加
に報いる下記のユーティリティ関数が使用できる。
【数11】
【0102】 電力が仕様外面積使用を減少させ、電力あるいは面積が仕様外である場合性能使
用を減少させる構成要素もある。
【0103】 これらのアルゴリズムおよび他のアルゴリズムは、指定された目標を満たす構
成を探すために使用できる。重要なことは、構成可能なプロセッサ設計が前提条
件、非互換性オプション仕様およびいろいろの距離に及ぼす構成オプションの影
響を有する設計データベースに記述されていることである。
【0104】 我々が示した例は、一般的であり、プロセッサ60で実行された特定のアルゴ
リズムに左右されないハードウエア目標を使用した。記述されているアルゴリズ
ムは、特定のユーザプログラムに最適の構成を選択するために使用することもで
きる。例えば、ユーザプログラムは、異なるサイズ、異なるラインサイズおよび
異なるセットアソシアティブのような異なる特性を有する、異なる種類のキャッ
シュに対するキャッシュミス数を測定するためにキャッシュの正確なシミュレー
タで実行できる。これらのシミュレーションの結果は、ハードウエアインプリメ
ンテーション記述40を選択するのに役立つように記述された検索アルゴリズム
106によって使用されるデータベースに付加できる。
【0105】 同様に、ユーザアルゴリズムは、ハードウエアで任意に実現できる所定の命令
の存在に対してプロフィールできる。例えば、ユーザアルゴリズムが乗算を行う
かなりの時間を行う。サーチエンジン106は、ハードウエア乗算器を含むこと
を自動的に示唆し得る。このようなアルゴリズムは1つのユーザアルゴリズムを
考察することに限定する必要がない。ユーザは、アルゴリズムのセットをシステ
ムに供給することができ、サーチエンジン106は、平均してユーザプログラム
のセットに役に立つ構成を選択できる。
【0106】 プロセッサ60の予め構成された特性を選択することに加えて、サーチアルゴ
リズムは、ユーザ可能TIE拡張を自動的に選択するかあるいはユーザ可能TI
E拡張に示唆するためにも使用できる。入力目標が与えられ、多分Cプログラミ
ング言語で記述されたユーザプログラムの例が与えられると、これらのアルゴリ
ズムは可能性があるTIE拡張を示唆する。状態がないTIE拡張の場合、コン
パイラのようなツールはパターン一致器で具体化される。これらのパターン一致
器は、単一命令と取り換えることができる複数の命令パターンを検索するボトム
アップ方法で式のノードを移動する。例えば、ユーザCプログラムが下記のステ
ートメントを含むことを示す。
【0107】 x=(y+z)<<2; x2=(y2+z2)<<2; パターン一致器は、2つの異なる位置のユーザが2つの数を加算し、この結果を
2ビットを左にシフトすることを見つける。このシステムは、2つの数を加算し
、この結果を2ビットを左にシフトするTIE命令を生成する可能性をデータベ
ースに加える。
【0108】 形成システム50は、TIE命令が何回現れるかのカウントとともに多数の可
能性のあるTIE命令について常に知っている。プロフィリングツールを使用す
ると、システム50は、どのくらい頻繁に各命令がアルゴリズムの全実行中実行
されるかについても常に知っている。ハードウエア推定器を使用すると、システ
ム50は、各可能性のあるTIE命令を実行するべきであるハードウエアでどれ
ほど高価であるかについても常に知っている。これらの数は、入力目標、すなわ
ち性能、コードサイズ、ハードウエア複雑さ等のような目標を最大にする可能性
のあるTIE命令のセットを選択するために発見的探索アルゴリズムに供給され
る。
【0109】 同じであるが、より強力なアルゴリズムは状態を有する可能性のあるTIE命
令を見つけるために使用される。いくつかの異なるアルゴリズムは異なる種類の
好機を検出するために使用される。1つのアルゴリズムは、コンパイラのような
ツールを使用し、ユーザプログラムを走査し、ユーザプログラムがハードウエア
で使用可能であるよりも多くのレジスタを必要とするかどうかを検出する。当該
技術の専門家に公知であるように、これは、レジスタスピルの数をカウントする
ことによって検出でき、ユーザコードのコンパイルバージョンに再記憶する。コ
ンパイルのようなツールは、付加ハードウエアレジスタ98を有するコプロセッ
サをサーチエンジンに示唆するが、多数のスピルを有し、再記憶するユーザのコ
ードの一部で使用される演算だけをサポートする。このツールは、ユーザのアル
ゴリズムがいかに改善されたかの推定と同様にコプロセッサのハードウエアコス
トの推定のサーチエンジン106によって使用されるデータベースを知らせる責
任を負う。前述のように、本サーチエンジン106は、示唆されたコプロセッサ
98が十分な構成をもたらすか否かのグローバルに決定を行う。
【0110】 それとは別にあるいはそれとともに、ユーザプログラムが、コンパイルのよう
なツールは、ユーザプログラムが所定の変数が所定の制限よりも決して大きくな
いことを保証するためにビットマスク演算を使用するかどうかを検査する。この
状況では、このツールは、ユーザ制限に合致するデータタイプ(例えば、12ビ
ットあるいは20ビットもしくは任意の他の大きさの整数)を使用するコプロセ
ッサ98をサーチエンジン106に示唆する。C++におけるユーザプログラム
ために使用される他の実施例で使用される第3のアルゴリズムでは、コンパイル
のようなツールは、ユーザ定義の抽象データタイプで演算するのに多くの時間が
費やされることが分かる。データタイプの全演算がTIEに適しているけれども
、アルゴリズムは、TIEコプロセッサによってデータタイプの全演算を実行す
ることをサーチエンジン106に示唆する。
【0111】 プロセッサ60の命令復号化ロジックを生成するために、1つの信号が構成仕
様で規定された各操作符号のために発生される。このコードは宣言
【数12】
【0112】 をHDLステートメント
【数13】
【0113】 に、および
【数14】
【0114】 を
【数15】 に単に再書き込みすることにより発生される。
【0115】 レジスタインターロックおよびパイプラインストールの信号の発生も自動化さ
れる。このロジックは構成仕様の情報に基づいても生成される。現命令のソース
オペランドが完了しなかった前の命令のディスティネーションオペランドによっ
て決まる場合、命令のiclassステートメントおよび待ち時間に含まれるレ
ジスタ使用情報に基づいて、生成されたロジックはストール(あるいはバブル)
を挿入する。このストール機能性を実行する機構はコアハードウエアの一部とし
て実現される。
【0116】 不正命令検出ロジックは、命令信号のフィールド制限とANDをとられた個別
の生成された命令信号と一緒にNORをとることにより生成される。
【数16】
【0117】 命令復号化信号および不正命令信号は、復号化モジュールの出力としておよび
手で書かれたプロセッサロジックの入力として使用可能である。
【0118】 他のプロセッサ機能を生成するために、本実施例は、ペリベースプリプロセッ
サ言語で機能強化された構成可能なプロセッサ60のVerilog(登録商標
)記述を使用する。ペリは、複合制御構造、サブルーチンおよびI/O機能を含
む全機能言語である。本発明の実施例では、TPP(付録Bに列挙するソースに
示されているように、TPPはペリプログラムそのものである)と呼ばれるプリ
プロセッサは、その入力を走査し、プリプロセッサ言語(TPPの場合はペリ)
で記述されたプリプロセッサコードとしての所定の行(これらの行は、TPPの
場合、セミコロンでプリフィックスされる)を識別し、抽出された行およびステ
ートメントからなるプログラムを構成し、他の行のテキストを生成する。非プリ
プロセッサ行は、その場所でTPP処理の結果として生成される式が代入され、
埋め込まれた式を有する。したがって、結果として生じるプログラムは、ソース
コード、すなわち詳細プロセッサロジック40を記述するVerilog(登録
商標)コード(下記で分かるように、TPPもソフトウエア開発ツール30を構
成するために使用される)を生成するように実行される。
【0119】 このコンテキストで使用される場合、TPPは、前述のようにVerilog
(登録商標)コードの構成仕様100によって決まり埋め込まれた式を実行する
のと同様に構成仕様照会、条件付式およびVerilog(登録商標)コードの
反復構造のような構成子の包含を可能にするために、強力な前処理言語である。
例えば、データベース照会に基づいたTPP割当は下記のようになりそうである
【数17】
【0120】 ここで、config get valueは、構成仕様100を照会するため
に使用されるTPP関数であり、IsaMemoryOrderは、構成仕様1
00でセットされたフラグであり、Sendianは、Verilog(登録商
標)コードを生成する際に後で使用されるべきTPP変数である。
【0121】 TPP条件付式は、
【数18】
【0122】 であってもよい。 反復ループは、下記のようなTPP構成子によって実行できる。
【数19】
【0123】 ここで、Siは、TPPループインデックス変数であり、Sninterrup
tsは、プロセッサ60のために指定された割り込み数である(config get Valueを使用して構成仕様100から得られる)。
【0124】 最後に、TPPコードは、下記のようなVerilog(登録商標)式に埋め
込むことができる。
【数20】
【0125】 ここで、Sninterruptsは、割り込み数を規定し、xtscenfl
opモジュール(フリップフロッププリミティブモジュール)の幅(ビットに関
する)を決定する。
【0126】 srInterruptEnは、適切なビット数のワイヤであると規定され
るフリップフロップの出力である。
【0127】 srDataIn Wは、フリップフロップの入力であるが、関連ビットだ
けが割り込み数に基づいて入力される。
【0128】 srInterruptEnWEnは、フリップフロップの書き込みイネー
ブルである。
【0129】 cResetは、フリップフロップのクリア入力である。
【0130】 CLKは、フリップフロップの入力クロックである。 例えば、下記の入力をTPP
【数21】
【0131】 および宣言
【数22】
【0132】 に与える。 TPPは下記を生成する。
【数23】
【0133】 このように生成されたHDL記述114は、ブロック122で例えばSyno
psys社によって製造されたデザインコンパイラ(登録商標)を使用してプロ
セッサインプリメンテーションのためのハードウエアを統合するために使用され
る。一旦構成要素が経路選択されると、この結果は、例えばSynopsys社
によるプライムタイム(登録商標)を使用してブロック132でワイヤ逆注釈お
よびタイミング検証のために使用できる。この処理の成果物は、他の構成反復の
ため構成獲得ルーチン20に他の入力を供給するようにユーザによって使用でき
るハードウエアプロファイルである。
【0134】 ロジック統合部122に関して述べられているように、プロセッサ60を構成
する結果の1つは、特定のゲートレベルインプリメンテーションが多数の商用統
合ツールのいずれかを使用することによって得ることができるカスタマイズされ
たHDLファイルのセットである。1つのこのようなツールは、Synopsy
s社からのデザインコンパイラ(登録商標)である。正確な、高性能なゲートレ
ベルインプリメンテーションを保証するために、本実施例は、顧客の環境におい
て統合処理を自動化するのに必要なスクリプトを提供する。このようなスクリプ
トを提供する際の要求は、いろいろのユーザの統合方法論および異なるインプリ
メンテーション目的をサポートすることにある。第1の要求を取り扱うために、
この実施例は、このスクリプトをより小さいスクリプトおよび機能的に完全にス
クリプトに分解する。1つのこのような例は、特定プロセッサ構成60に関連す
る全HDLファイルを読み出すことができる読み出しスクリプト、プロセッサ6
0に固有のタイミング要求をセットするタイミング抑制スクリプト、およびゲー
トレベルネットリストの配置および経路選択のために使用できる方法で統合結果
を詳しく書くスクリプトを提供することにある。第2の要求を取り扱うために、
本実施例は各インプリメンテーション目的のためのスクリプトを提供する。1つ
のこのような例は、より速いサイクルタイムを達成するスクリプト、最少シリコ
ン領域を達成するスクリプト、および最少電力消費を達成するスクリプトを提供
することにある。
【0135】 スクリプトは、他のフェーズのプロセッサ構成でもまた使用される。例えば、
一旦プロセッサ60のHDLが記述されたとすると、シミュレータは、ブロック
132に関して前述されたようにプロセッサ60の正しい動作を検証するために
使用できる。これは、シミュレートされたプロセッサ60で、多数のテストプロ
グラム、あるいは診断を実行することによってしばしば達成される。シミュレー
トプロセッサ60でテストプログラムを実行することは、テストプログラムの実
行可能な画像を生成し、シミュレータ112によって読み出すことができるこの
実行可能な画像の表示を生成し、シミュレーションの結果が将来の解析のために
収集できるこの実行可能な画像の表示を形成し、このシミュレーションの結果等
を解析するような多数のステップを必要とし得る。従来技術では、これは、多数
の廃棄スクリプトで行われた。これらのスクリプトは、どのHDLファイルが含
まれるべきであるか、これらのファイルのどの場所がディレクトリ構造にあり得
るか、どのファイルがテストベンチのために必要とされるか等のようなシミュレ
ーション環境の若干の組み込み知識を有した。最新の設計では、好ましい実施例
は、パラメータ置換によって構成されるスクリプトテンプレートを記述すること
にある。構成機構は、シミュレーションのために必要であるファイルのリストを
生成するためにTPPも使用する。
【0136】 さらに、ブロック132の検証処理では、設計者が一連のテストプログラムを
実行できる他のスクリプトを記述することがしばしば必要である。これは、HD
Lモデルの所与の変更が新しいバグを導入しないという信用を設計者に与える回
帰スイートを実行するためにしばしば使用される。これらの回帰スクリプトも、
ファイル名、ロケーション等についての多数の組み込み前提を有するようにしば
しば廃棄された。単一のテストプログラムに対する実行スクリプトの形成に対し
て前述されるように、回帰スクリプトはテンプレートとして記述される。このテ
ンプレートは、構成時パラメータを実際の値の代わりにすることによって構成さ
れる。
【0137】 RTL記述をハードウエアインプリメンテーションに変換する処理の最終ステ
ップは、抽象ネットリストを幾何学的表示に変換するために場所およびルート(
P&R)ソフトウエアを使用することにある。P&Rソフトウエアは、ネットリ
ストの結合性を解析し、セルの配置を決定する。次に、このソフトウエアは、全
セル間の接続の線を描くことを試みる。クロックネットは、通常特別の注意に値
し、最後のステップとして経路選択される。この処理は、両方とも、どのセルが
一緒に接近していると予想されるか(ソフトグルーピングとして公知である)、
セルの相対配置、どのネットがわずかな伝播遅延等を有すると予想されるかのよ
うな若干の情報をツールに提供することによって促進できる。
【0138】 この処理を容易にするためにおよび所望の性能目標、すなわちサイクル時間、
面積、電力消費が達成されることを保証するために、構成機構は、P&Rソフト
ウエアのためのスクリプトのセットあるいは入力ファイルを生成する。これらの
スクリプトは、セルのための相対配置のような前述されたような情報を含む。こ
のスクリプトは、どれくらいの数の電源接続およびアース接続が必要であるか、
いかにこれらが境界等に沿って分布されるべきであるかのような情報も含む。こ
のスクリプトは、どれくらいの数のソフトグループを形成するかおよびどんなセ
ルがソフトグループに含まれるべきであるかおよびどのネットが重要なタイミン
グであるかの情報を含むデータベースを照会することによって生成される。この
パラメータは、どのオプションが選択されたかに基づいて変わる。これらのスク
リプトは、場所およびルートを変えるために使用されるツールに応じて構成可能
でなければならない。
【0139】 任意には、構成機構は、ユーザからより多くの情報を要求し、P&Rスクリプ
トに送ることができる。例えば、インタフェースは、ユーザに最終のレイアウト
の所望のアスペクト比、どれくらいの数のバッファリングのレベルがクロックツ
リーに挿入されるべきであるか、どの側面に入出力ピンがこれらのピンの相対あ
るいは絶対の配置、電源およびアースのストラップ等にあるべきであるかを尋ね
ることができる。次に、これらのパラメータはP&Rスクリプトに送られ、所望
のレイアウトを生成する。
【0140】 例えばより込み入ったクロックツリーを可能にするより込み入ったスクリプト
さえ使用できる。電力消費を減らすために行われた1つの共通最適化はクロック
信号をゲートすることにある。しかしながら、全ブランチの遅延をバランスさせ
ることは非常に困難であるので、これは、クロックツリー統合を非常に困難にす
る。構成インタフェースは、ユーザに、正しいセルがクロックツリーのために使
用し、クロックツリー統合の一部あるいは全部を実行することを尋ねることがで
きる。構成インタフェースは、どこのゲートクロックがこの設計にあるかの若干
の知識を有し、対象となるゲートからフリップフロップのクロック入力までの遅
延を推定することによってこれを行う。したがって、このインタフェースは、ク
ロックバッファの遅延をゲートセルの遅延と一致させるためにクロックツリー統
合ツールに抑制を与える。最新のインプリメンテーションでは、これは汎用ペリ
スクリプトによって行われる。このスクリプトは、どのオプションが選択される
かに基づいて構成エージェントによって発生されたゲートクロック情報を読み出
す。一旦設計が配置され、経路選択されたとするが、最終クロックツリー統合が
行われる前に、ペリスクリプトが実行される。
【0141】 更なる改善が前述されたプロフィール処理に対して行うことができる。特に、
我々は、ユーザがこれらのCADツールを実行する時間を費やさないで殆ど同時
に同様なハードウエアプロフィール情報を得ることができる処理を記述する。こ
の処理はいくつかのステップを有する。
【0142】 この処理の第1のステップは、ハードウエアプロフィールのグループのオプシ
ョンの効果が任意の他のグループのオプションとは無関係であるように全構成オ
プションのセットを直交オプションのグループに分離することにある。例えば、
ハードウエアプロフィールに対するMAC16装置のインパクトは任意の他のオ
プションとは無関係である。それで、MACオプションだけを有するオプション
グループが形成される。より複雑な例は、ハードウエアプロフィールに対するイ
ンパクトはこれらのオプションの特定の組合せによって決定されるので、割り込
みオプション、高レベル割り込みオプションおよびタイマオプションを含むオプ
ショングループである。
【0143】 第2のステップは、各オプショングループのハードウエアプロフィールのイン
パクトを特徴とすることにある。特徴付けは、グループのいろいろのオプション
の組合せに対するハードウエアプロフィールのインパクトを得ることによって行
われる。各組合せに関して、このプロフィールは、実際のインプリメンテーショ
ンが得られ、そのハードウエアプロフィールが測定される予め記述された処理を
使用して得られる。このような情報は推定データベースに記憶されている。
【0144】 最後のステップは、曲線取り付けおよび補間技術を使用してオプショングルー
プのオプションの特定組合せによってハードウエアプロフィールを計算する特定
の式を得ることにある。オプションの名前に応じて、異なる式が使用される。例
えば、各付加割り込みベクトルは同じロジックについてハードウエアに加えるの
で、我々は、線形関数を使用し、そのハードウエアインパクトをモデル化する。
他の例では、タイマ装置を有することは高優先順位割り込みオプションを必要と
するので、タイマオプションのハードウエアのインパクトのための式は多数のオ
プションを含む条件付式である。
【0145】 いかにアーキテクチャ選択がアプリケーションの実行時間性能およびコードサ
イズに影響を及ぼすかもしれないかの迅速フィードバックを提供することは役に
立つ。複数のアプリケーション領域からのいくつかのセットのベンチマークプロ
グラムがいくつかのセットが選択される。各領域に関して、いかに異なるアーキ
テクチャ設計決定が領域内のアプリケーションの実行時間性能およびコードサイ
ズに影響を及ぼすかを推定するデータベースは、予め形成される。ユーザはアー
キテクチャ設計を変えるので、データベースは、ユーザにあるいは複数の領域の
ために興味を引き起こさせるアプリケーション領域のために照会される。評価の
結果はユーザに提示されるので、ユーザは、ソフトウエアの長所とハードウエア
のコストとの間のトレードオフの推定を得る。
【0146】 迅速な評価システムは、プロセッサをさらに最適化するためにいかに構成を変
更するかの示唆をユーザに与えるために容易に拡張できる。1つのこのような例
は、各構成オプションを面積、遅延および電力のようないろいろのコスト距離の
オプションの増分インパクトを示す一組の数と関連付けることにある。所与のオ
プションのための増分コスト影響を計算することは迅速な評価システムで容易に
行われる。それは、オプションの有無の評価システムに対する2つの呼び出しを
単に必要とする。2つの評価に対するコストの差はオプションの増分インパクト
を示す。例えば、MAC16オプションの増分領域インパクトは、MAC16の
オプションの有無で2つの構成の領域コストを評価することによって計算される
。次に、この差異は、対話構成システムのMAC16オプションで表示される。
このようなシステムは、一連の単一ステップ改善によって最適解決策の方へユー
ザを誘導できる。
【0147】 自動プロセッサ構成処理のソフトウエア側に移ると、本発明の本実施例は、ソ
フトウエア開発ツール30がプロセッサに固有であるようにソフトウエア開発ツ
ール30を構成する。構成処理は、いろいろの異なるシステムおよび命令セット
アーキテクチャに移植できるソフトウエアツール30で始める。このような目標
を変えることができるツールは、幅広く研究され、周知である。本実施例は、フ
リーソフトウエアであり、例えば、GNU Cコンパイラ、GNUアセンブラ、
GNUリンカ、GNUプロファイラ、およびいろいろのユーティリティプログラ
ムを含むGNUファミリーのツールを使用する。次に、これらのツール30は、
ISA記述からソフトウエアの一部を直接生成し、手で記述されたソフトウエア
の一部を変更するためにTPPを使用することによって自動的に構成される。
【0148】 GNU Cコンパイラはいくつかの異なる方法で構成される。コアISA記述
が与えられると、コンパイラの機械依存ロジックの多くが手で記述できる。コン
パイラのこの一部は構成可能なプロセッサ命令セットの全構成に共通であり、手
で目標を変更することは最善結果を得るための細かい調整を可能にする。しかし
ながら、コンパイラのこの手で符号された部分の場合さえ、若干のコードはIS
A記述から自動的に生成される。特に、ISA記述は、いろいろの命令の即値フ
ィールドに使用できる一定値のセットを規定する。各即値フィールドの場合、述
語関数は、特定の定数値がフィールドで符号化できるかどうかを試験するために
生成される。コンパイラは、プロセッサ60のためのコードを生成する場合、こ
れらの述語関数を使用する。コンパイラ構成のこのアスペクトを自動化すること
は、ISA記述とコンパイラとの間の不一致に対する機会を取り除き、それは、
最少の努力でISAの定数を変えることを可能にする。
【0149】 コンパイラのいくつかのアスペクトはTPPで前処理を介して構成される。パ
ラメータ選択によって制御された構成オプションの場合、コンパイラの対応する
パラメータはTPPによってセットされる。例えば、コンパイラは、ターゲット
プロセッサ60がビッグエンディアンあるいはリトルエンディアンバイト配列を
使用し、この変数は、構成仕様100からエンディアンネスを読み出すTPPコ
マンドを自動的に使用してセットされる。TPPは、対応するパッケージが構成
仕様100で使用可能であるかどうかに基づいて任意のISAパッケージのため
のコードを生成するコンパイラの手で符号化された部分を条件付で使用可能ある
いは使用禁止するためにも使用できる。例えば、乗算/累算命令を生成するコー
ドは、構成仕様がMAC16オプション90を含む場合、コンパイラにだけ含ま
れる。
【0150】 コンパイラは、TIE言語によって指定された設計者定義の命令をサポートす
るようにも構成される。このサポートには2つのレベルがある。最低レベルで、
設計者定義の命令は、コンパイルされるコードのマクロ関数、組込み関数、ある
いはインライン(外部)関数として利用可能である。本発明の本実施例は、「イ
ンラインアセンブリ」コードのようなインライン関数を規定するCヘッダ(GN
U Cコンパイラの標準機能)を生成する。設計者定義の操作符号および操作符
号の対応するオペランドが与えられると、このヘッダファイルを生成することは
、GNU Cコンパイラのインラインアセンブリシンタックスに変換する簡単な
処理である。他のインプリメンテーションは、インラインアセンブリ命令を指定
するCプリプロセッサマクロを含むヘッダファイルを形成する。さらにもう一つ
の代替は、組込み関数をコンパイラの中に加えるためにTPPを使用する。
【0151】 設計者定義の命令に対する第2のレベルのサポートは、命令を使用する機会を
コンパイラに自動的に認識させることによって提供される。これらの命令は、構
成処理中ユーザによって直接規定あるいは自動的に形成できる。ユーザアプリケ
ーションをコンパイルするより前に、TIEコードは、自動的に検査され、Cに
等しい機能に変換される。これはTIE命令の高速シミュレーションを可能にす
るために使用できる同じステップである。Cに等しい機能は、コンパイラによっ
て使用されるツリーベース中間表示に部分的にコンパイルされる。各TIE命令
に対するこの表示はデータベースに記憶される。ユーザアプリケーションがコン
パイルされる場合、コンパイル処理の一部はパターン一致器である。ユーザアプ
リケーションはツリーベース表示にコンパイルされる。パターン一致器は、ユー
ザプログラムのツリー毎にボトムアップで移動する。移動の各ステップで、パタ
ーン一致器は、現ポイントにルートされた中間表示がデータベースのTIE命令
のいずれかに一致しているかどうかを検査する。一致がある場合、一致が示され
る。各ツリーを移動することを完了した後、最大のサイズにされた一致のセット
は選択される。ツリーの各最大一致は、等価のTIE命令と取り換えられる。
【0152】 前述のアルゴリズムは、無状態TIE命令を使用する機会を自動的に認識する
。付加方式は、状態を有するTIE命令を使用する機会を自動的に認識するため
にも使用できる。前述の節は、状態を有する可能性のあるTIE命令を自動的に
選択するアルゴリズムを記載した。同じアルゴリズムは、CあるいはC++アプ
リケーションのTIE命令を自動的に使用するために使用される。TIEコプロ
セッサがより多くのレジスタであるが限られた演算のセットを有するように規定
された場合、コードの領域は、レジスタスピリングを受けるかどうかおよびこれ
らのレジスタが使用可能な演算のセットを使用するだけであるかどうかを調べる
ために走査される。このような領域が見つかった場合、これらの領域のコードは
、コプロセッサ命令およびレジスタ98を使用するために自動的に変更される。
変換動作は、データをコプロセッサ98の内外へ移動させるように領域の境界で
発生される。同様に、TIEコプロセッサが異なる大きさの整数で作動するよう
に規定された場合、コードの領域は、この領域の全データがあたかも異なる大き
さであるかのようにアクセスされるかどうかを調べるように検査される。一致領
域に関しては、このコードが変更され、グルーコードは境界に付加される。同様
に、TIEコプロセッサ98がC++抽象データタイプを実行するために規定さ
れる場合、このデータタイプの全演算は、TIEコプロセッサ命令と取り換えら
れる。
【0153】 TIE命令を自動的に暗示することおよびTIE命令を自動的に使用すること
の両方とも個別に役立つことを注目せよ。暗示されたTIE命令は、組込み機構
を介してユーザによっても手動で使用でき、アルゴリズムを利用することは手動
で設計されたTIE命令あるいはコプロセッサ98に加えることができる。
【0154】 いかに設計者定義の命令がインライン関数あるいは自動認識のいずれかによっ
て生成されたかにかかわらず、コンパイラは、これらの命令を最適化し、スケジ
ュールできるように設計者定義の命令の可能性のある副作用を知る必要がある。
性能を改良するために、従来のコンパイラは、実行時間性能、コードサイズある
いは電力消費のような所望の特性を最大にするためにユーザコードを最適化する
。当該技術分野で十分熟練した人に公知であるように、このような最適化は、命
令を再配置するかあるいは所定の命令を他の意味論的に等価な命令と取り換える
ようなものを含む。最適化を十分実行するために、コンパイラは、いかにあらゆ
る命令がマシンの異なる部分に影響を及ぼすかを知らなければならない。マシン
状態の異なる部分を読み書きする2つの命令が自由に再配列できる。従来のプロ
セッサの場合、異なる命令によって読み出しおよび/または書き込みされる状態
は、時々テーブルによってコンパイラの中にハードワイヤードされる。本発明の
一実施例では、TIE命令は、内輪に見積もってもプロセッサ60の状態全てを
読み書きするものと仮定される。これによって、コンパイラは、正しいコードを
生成するがコンパイラの能力を制限し、TIE命令がある場合のコードを最適化
できる。本発明の他の実施例では、ツールは、TIE定義を自動的に読み出し、
各TIE命令に対してどの状態が前記命令によって読み出しあるいは書き込みさ
れるかを見つける。次に、このツールは、コンパイラの最適化器によって使用さ
れるテーブルを変更し、各TIE命令の効果を正確にモデル化する。
【0155】 コンパイラのように、アセンブラ110の機械依存部は、自動的に生成された
部分およびTPPで構成された手で符号化された部分の両方とも含む。全構成に
共通の機能のいくつかは、手で記述されたコードでサポートされる。しかしなが
ら、アセンブラ110の主要タスクは、機械命令を符号化することであり、命令
符号化および復号化ソフトウエアはISA記述から自動的に生成できる。
【0156】 命令符号化および復号化は異なるソフトウエアツールで有用であるために、本
発明の本実施例は、ソフトウエアをグループ化し、これらのタスクを実行し、別
個のソフトウエアライブラリにする。このライブラリは、ISA記述の情報を使
用して自動的に生成される。このライブラリは、操作符号の一覧表、すなわち操
作符号ニーモニックのためのストリングを一覧表のメンバー上に効率的にマッピ
ングする関数(stringToOpcode)および各操作符号に対して命令長(instructio
nLength)、オペランド数(numberOfOperand)、オペランドフィールド、オペラ
ンドタイプ(すなわち、レジスタあるいは即値)(operandType)、2進符号化
(encodeOpcode)およびニーモニックストリング(opcodeName)を指定するテー
ブルを規定する。各オペランドフィールドに関しては、ライブラリは、命令ワー
ドの対応するビットを符号化するアクセスサ関数(fieldSetFunction)および復
号化するアクセスサ関数(fieldGetSetFunction)を提供する。この情報の全部
は、ISA記述で容易に利用可能である。すなわち、ライブラリソフトウエアを
生成することは、単にこの情報を実行可能なCコードに変換する問題である。例
えば、各エントリが各操作符号フィールドをISA記述のこの命令に対して指定
された値に設定することによって生成された特定の命令に対する符号化である場
合、命令符号化は、Cアレイ変数に記録される。encodeOpecode関
数は、単に所与の操作符号に対してアレイ値に戻る。
【0157】 ライブラリも、2進命令(decodeInstruction)の操作符号を復号化する関数
を提供する。この関数は、最も外側のスイッチが操作符号階層の上部でサブ操作
符号をテストする一連のネストスイッチステートメントとして生成され、ネスト
されたスイッチステートメントは操作符号階層の徐々により低いサブ操作符号を
テストする。したがって、この関数に対して生成されたコードは、操作符号その
ものと同じ構造を有する。
【0158】 命令を符号化および復号化するこのライブラリが与えられると、アセンブラ1
10は容易に実行される。例えば、アセンブラの命令符号化ロジックは全く簡単
である。すなわち
【数24】
【0159】 2進命令をアセンブリコードに非常に類似している可読形式に変換する逆アセ
ンブラ110を実行することは同様に簡単である。
【数25】
【0160】 この逆アセンブラアルゴリズムはスタンドアロン逆アセンブラツールにおいて
使用され、またマシーンコードのデバッギングをサポートするためにデバッガ1
30においても使用される。
【0161】 リンカはコンパイラやアセンブラ110程機器構成に対してあまり敏感ではな
い。リンカの多くは標準型であり、機械依存部分でさえ主としてコアISA記述
に依存しており、特定のコアISAに対して手動で符号化することができる。e
ndianness等のパラメータはTPPを使用して構成仕様書100から設
定される。ターゲットプロセッサ60のメモリマップはリンカが必要とする構成
の他の1つの局面である。このように、メモリマップを指定するパラメータは、
TPPを使用してリンカに挿入される。本発明のこの実施形態では、GNUリン
カが一組のリンカスクリプトによって駆動され、それはメモリマップ情報を含む
これらのリンカスクリプトである。このアプローチの利点は、ターゲットシステ
ムのメモリマップが、プロセッサ60を構成した時に指定されたメモリマップと
異なっている場合、プロセッサ60を再構成することなく、またリンカを再構築
することなく、付加的なリンカスクリプトを後で発生させることができることで
ある。このように、この実施形態は、異なるメモリマップパラメータを備えた新
しいリンカスクリプトを構成するツールを含んでいる。
【0162】 一度に1つの命令の実行をシングルステップ化し、ブレークポイントを導入し
、また他の標準デバッギングタスクを遂行するために、デバッガ130はプログ
ラムを実施するにつれてのプログラムの状態を観察するための機構を提供する。
デバッギングされるプログラムは、構成されたプロセッサのハードウエアインプ
リメンテーション、あるいはISS126のいずれに対しても実施することがで
きる。デバッガはいずれの場合にもユーザに対して同じインターフェイスを呈す
る。ハードウエアインプリメンテーションに対してプログラムを実施する場合、
ユーザのプログラム実行を制御し、シリアルポートを介してデバッガと通信する
ために、小さなモニタプログラムがターゲットシステムに含まれる。シミュレー
タ126に対してプログラムを実施する場合、シミュレータ126自体がこれら
の機能を果たす。デバッガ130は幾つかの方法でこの構成に依存している。デ
バッガ130内からの分解機コードをサポートする為に、デバッガ130は上述
の命令符号化・復号化ライブラリと接続される。どのレジスタがプロセッサ60
に存在するかを見出すために、ISA記述をスキャンすることによってプロセッ
サのレジスタ状態を表示するデバッガ130の部分、及びデバッガ130に対し
て情報を提供するデバッグモニタプログラムとISS126の部分が生成される
【0163】 他のソフトウエア開発ツール30は標準型であり、各プロセッサ構成のために
変更する必要はない。プロファイルビューア及び様々なユティリティプログラム
がこのカテゴリに含まれる。プロセッサ60の全ての機器構成が共有するバイナ
リフォーマットでのファイルに対して作動するために、これらのツールをもう一
度目標とすることが必要であるかもしれないが、これらのツールはISA記述あ
るいは構成仕様書100内の他のパラメータのいずれにも依存しない。
【0164】 構成仕様書はまた、図13に示すISS126と呼ばれるシミュレータを構成
するためにも使用される。ISS126は構成可能なプロセッサ命令セットの機
能的な行動をモデル化するソフトウエアアプリケーションである。Synops
ys VCSやCadence Verilog XLやNCシミュレータ等の
その対応するプロセッサハードウエアモデルシミュレータとは異なり、ISS
HDLモデルはその命令実行中はCPUの抽象化である。ISS126は各ゲー
トに対して各信号の推移をモデル化する必要がなく、また完全なプロセッサ設計
に登録する必要もないので、ハードウエアシミュレーションよりはるかに早く実
行する。
【0165】 ISS126はホストコンピュータに対して実行すべき、構成されたプロセッ
サ60のためにプログラムを生成できるようにする。ISS126はプロセッサ
のリセットを正確に再生し、デバイスドライバ等の低レベルのプログラムや初期
化コードを展開させる行動を遮る。固有のコードを埋め込まれたアプリケーショ
ンに接続する場合に、これは特に有用である。
【0166】 実際の埋め込まれたターゲットにコードをダウンロードする必要なしに、構造
上の仮定やメモリオーダリング上の問題点等の潜在的な問題を特定するためにI
SS126を使用することができる。
【0167】 この実施形態では、ISSセマンティクスは、命令を機能に変えるCオペレー
タ構築ブロックを構築するために、Cのような言語を原文通りに使用するものと
して表される。例えば、割込みレジスタやビット設定・割込みレベル・ベクトル
等の割込みに関する初歩の機能性は、この言語を使用してモデル化される。
【0168】 構成可能なISS126は、システム設計及び確証プロセスの一部として、以
下の4つの目的または目標のために使用される: - ハードウエアが利用できるようになる前にソフトウエアアプリケーションを
デバッギングすること; - システムソフトウエア(例えば、コンパイラ及びオペレーティングシステム
成分)のデバッギング; - ハードウエア設計検証のためにHDLシミュレーションと比較すること。I
SSはISAのリファレンスインプリメンテーションとして作用し、ISS及び
プロセッサHDLは共に、プロセッサ設計検証中に診断法及びアプリケーション
のために実行され、両者からのトレースが比較される;及び - ソフトウエアアプリケーション性能の分析(これは構成プロセスの一部であ
ってもよいし、あるいはプロセッサ構成が選択された後で同調する更なるアプリ
ケーションのために使用されてもよい)。
【0169】 全ての目標にとって、構成可能なアッセンブラ110及びリンカを備えて作り
出されるプログラムをISS126がロード・デコードできることが必要である
。また命令のISS実行が、対応するハードウエア実行及びコンパイラの予測に
対して意味論的に同等であることも必要である。これらの理由のために、ISS
126は、ハードウエア及びシステムソフトウエアを定義するために使用される
同じISAファイルから、そのデコード・実行行為を引き出す。
【0170】 上記した最初と最後の目標にとって、ISS126が可及的に速く必要な精度
に達することが重要である。従って、ISS126はシミュレーションの詳細レ
ベルの動的制御を可能にする。例えば、キャッシュの詳細は必要とされない限り
モデル化されず、キャッシュモデリングを動的にオン・オフに切り替えることが
できる。更に、実行時間にISS126がほとんど構成に依存した所作選択をし
ないようにISS126をコンパイルする前に、ISS126の部分(例えば、
キャッシュ及びパイプラインモデル)が構成される。
【0171】 上記した最初と最後の目標にとって、設計(ターゲット)下で、システムにと
ってオペレーティングシステムサービスがOSから利用できない場合、ISS1
26がアプリケーションに対してこれらのサービスを提供することが重要である
。また、それがデバッギングプロセスの関連する部分である場合、これらのサー
ビスがターゲットOSによって提供されることが重要である。この方法で、シス
テムはISSホストとシミュレーションターゲット間でこれらのサービスを柔軟
に動かすための設計を提供する。現在の設計はISS動的制御(SYSCALL
命令のトラッピングはオン・オフを切り替えてもよい)と、ホストOSサービス
を要求するための特別なSIMCALL命令の使用との組み合わせに頼っている
【0172】 最後の目標は、ISS126がISAによって指定されるレベル以下であるプ
ロセッサとシステムの行動のうち、一部の局面をモデル化することを必要とする
。特に、ISSキャッシュモデルは、機器構成データベース100からパラメー
タを抽出するパール(Perl)スクリプトからのモデルのためにCコードを発
生させることによって構成される。更に、命令のパイプライン行動の詳細(例え
ば、レジスタの使用及び機能ユニットの利用可能性要件に基づくインタロック)
も、機器構成データベース100から引き出される。現在のインプリメンテーシ
ョンでは、特殊なパイプライン記述ファイルがリスプ状のシンタックス内のこの
情報を指定する。
【0173】 三番目の目標は割込み行動の正確な制御を必要とする。この目的のために、I
SS126内の特殊な非構造的レジスタを使用して、割込み可能を抑制する。
【0174】 ISS126はその使用のために異なる目標をサポートするために幾つかのイ
ンターフェイスを提供する。 - バッチまたはコマンドラインモード(一般的に最初と最後の目標との関連で
使用される); - コマンドループモード、これは非象徴的なデバッグ能力、例えば、ブレーク
ポイント・ウォッチポイント・ステップ等、4つ全ての目標のために頻繁に使用
されるデバッグ能力を提供する;及び - 実行バックエンドとして、ISS126がソフトウエアデバッガにより使用
されるようにするソケットインターフェイス(これは特定の選択された構成のた
めにレジスタ状態を読み取り、書き込むように構成されなければならない); - 非常に詳細なデバッギング及び性能分析を可能にするスクリプタブルインタ
ーフェイス。特に、このインターフェイスは異なる構成に対してアプリケーショ
ン行動を比較するために使用されてもよい。例えば、どのブレークポイントにお
いても、1つの構成に対するランからの状態を別の構成に対するランからの状態
と比較してもよいし、あるいは1つの構成に対するランからの状態を別の構成に
対するランからの状態に移行させてもよい。
【0175】 またシミュレータ126は手動でコード化され、自動発生された部分を有して
いる。ISA記述言語から発生されるテーブルから作成される命令デコード及び
実行を除いて、手動でコード化された部分は従来よりのものである。これらのテ
ーブルは実行すべき命令ワードに見出される一次的操作符号から開始し、その分
野の値でテーブルへと索引付けし、一片の操作符号、つまり、他の操作符号の点
から定義されていない操作符号が見つかるまで続けることによって、命令を復号
化する。次に、テーブルはその命令に対するセマンティクス宣言書において指定
されるTIEコードから翻訳されたコードに対するポインタを与える。このコー
ドは命令をシミュレートするために実行される。
【0176】 ISS126はシミュレートされているプログラムの実行をプロファイルする
ことができる。このプロファイリングは業界で公知のプログラムカウンタサンプ
リング技術を使用する。定期的な間隔で、シミュレータ126はシミュレートさ
れているプロセッサのPC(プログラムカウンタ)をサンプリングする。シミュ
レータ126は各コード領域におけるサンプル数でヒストグラムを構築する。ま
たシミュレータ126は、1つのコール命令がシミュレートされる度にカウンタ
を増分することによって、コールグラフ内の各エッジが実行される回数をカウン
トする。シミュレーションが完了すると、シミュレータ126は、標準のプロフ
ァイルビューアによって読み出すことができるフォーマットで、ヒストグラム及
びコールグラフのエッジカウントの両方を含む出力ファイルを書く。シミュレー
トされているプログラム118は(標準のプロファイリング技術におけるように
)計測コードで修正する必要がないので、プロファイリングオーバーヘッドはシ
ミュレーション結果に影響を及ぼさないし、プロファイリングは全く非侵略的で
ある。
【0177】 システムがハードウエアプロセッサエミュレーション及びソフトウエアプロセ
ッサエミュレーションを利用できるようにすることが好ましい。この目的のため
に、本実施形態はエミュレーションボードを提供する。図6に示すように、エミ
ュレーションボード200は、ハードウエア内でプロセッサ構成60をエミュレ
ートするために、Altera Flex 10K200E等の複合プログラム
可能論理装置202を使用する。一旦システムにより発生されたプロセッサネッ
トリストでプログラムされると、CPLD装置202は機能的に最終的なASI
C製品と同等になる。それは他の(ISS126またはHDL等の)シミュレー
ション方法よりはるかに高速で稼動し、周期的に正確である、プロセッサ60の
物理的実用化を利用できるという利点を提供する。しかしながら、それは最終的
なASIC装置が達成することができる高周波数ターゲットには達することがで
きない。
【0178】 このボードはデザイナが様々なプロセッサ構成オプションを評価でき、ソフト
ウエア展開及びデバッギングを設計サイクルの初期に開始できるようにする。そ
れはまたプロセッサ構成の機能的検証のためにも使用することができる。
【0179】 平易なソフトウエア展開、デバッギング及び検証を許すために、エミュレーシ
ョンボード200はそれに対して利用できる幾つかの資源を有している。これら
の資源には、CPLD装置202自体、EPROM204、SRAM206、同
期SRAM208、フラッシュメモリ210及び2つのRS232シリアルチャ
ネル212が含まれる。シリアルチャネル212はユーザプログラムをダウンロ
ードしてデバッギングするために、UNIX(登録商標)またはPCホストに対
する通信リンクを提供する。CPLDネットリストを考慮して、装置の機器構成
ポート214に対する専用シリアルリンクを通して、あるいは専用機器構成RO
M216を通して、プロセッサ60の構成がCPLD202へとダウンロードさ
れる。
【0180】 ボード200に対して利用できる資源もある程度まで構成可能である。容易に
変更可能であるプログラム可能論理装置(PLD)217を通してマッピングが
行われるので、ボード上の様々なメモリ要素のメモリマップを容易に変更するこ
とができる。更に、プロセッサコアが利用するキャッシュ218及び228は、
より大きな記憶装置を使用して、キャッシュ218及び228に接続されるタグ
バス222及び224を適当な大きさに分けることによって拡張可能である。
【0181】 特定のプロセッサ構成をエミュレートするためのボードの使用は幾つかのステ
ップを含む。第1のステップはプロセッサの特定の構成を記述する一組のRTL
ファイルを入手することである。次のステップは多数の商業的統合ツールを使用
して、RTL記述からゲートレベルのネットリストを統合することである。1つ
のこのような例はSynopsysからのFPGAエクスプレスである。次にゲ
ートレベルのネットリストを使用して、業者により典型的に提供されるツールを
用いてCPLDインプリメンテーションを入手できる。このようなツールの1つ
は、アルテラ社(Altera Corporation)のMaxplus2である。最後のステ
ップは、再びCPLD業者により提供されるプログラマを使用して、エミュレー
ションボードのCPLDチップ上にインプリメンテーションをダウンロードする
ことである。
【0182】 エミュレーションボードの目的の1つはデバッギング目的のために迅速なプロ
トタイプ実用化をサポートすることであるので、前のパラグラフにおいて概説さ
れたCPLD実用化プロセスが自動的であることが重要である。この目的を達成
するために、1つのディレクトリに全ての関連ファイルをグループ分けすること
によって、ユーザに配送されるファイルがカストマイズされる。そして、完全に
カストマイズされた統合スクリプトが提供され、顧客が選択した特定のFPGA
装置に特定のプロセッサ構成を統合することができる。業者ツールによって使用
される完全にカストマイズされた実用化スクリプトも発生される。このような統
合及び実用化スクリプトは、最適の性能で機能的に正しい実用化を保証する。特
定のプロセッサ構成に関連する全てのRTLファイルを読み込むために、スクリ
プト内に適切なコマンドを含むことにより、またプロセッサ構成内のI/O信号
に基づいてチップピンの位置を割り当てるための適当なコマンドを含むことによ
り、またゲート型クロックにおけるようなプロセッサ論理のある重大な部分のた
めに特定の論理実用化を入手するためのコマンドを含むことにより、機能的な正
確さが達成される。更に、このスクリプトは、全てのプロセッサI/O信号に詳
細なタイミング制限を割り当てることにより、またある重大な信号の特殊処理に
より、実用化の性能を改善する。タイミング制限の1つの例は、ボード上の1つ
の信号の遅延を考慮することによって、その信号に対して特定の入力遅延を割り
当てることである。重大な信号処理の例は、CPLDチップに対して低クロック
スキューを達成するために、専用グローバルワイヤに対してクロック信号を割り
当てることである。
【0183】 好ましくは、該システムは構成されたプロセッサ60用の検証スイートも構成
する。マイクロプロセッサのような複雑な設計の検証のほとんどは以下のような
流れで構成される: ━ 設計を刺激し、テストベンチ内で、またはISS126のような外部モデル
を使用して出力を比較するために、テストベンチを構築する; ━ 刺激を発生させるための診断法を書き込む; ━ 制限された状態の機械カバレッジHDLのラインカバレッジ、下降するバッ
グ率、設計上移動するベクトルの数等のスキームを使用して、検証カバレッジを
測定する;そして ━ そのカバレッジが充分でなければ、更に診断法を書き込み、おそらく診断法
を発生させるためのツールを使用して、更に設計を実行する。
【0184】 本発明は幾分似たような流れを使用するが、設計の構成可能性を説明するため
に、この流れの全ての成分を修正する。この方法論は以下のステップより成る: ━ 特定の構成用のテストベンチを構築する。テストベンチの構成はHDLのた
めに記述したのと同様のアプローチを使用し、その中で支持される全てのオプシ
ョン及び拡張、つまり、キャッシュサイズ、バスインターフェイス、クロッキン
グ、及び割込み発生等をサポートする; ━ HDLの特定の構成に対してセルフチェッキング診断法を実行する。診断法
自体は特定のハードウエア部品に適応するように構成できる。どの診断法を実行
するかの選択も構成に応じて行う。 ━ 擬似乱数的に発生された診断法を実行し、ISS126に対する各々の命令
実行後のプロセッサ状態を比較する;そして ━ 機能的カバレッジと共にラインカバレッジを測定するカバレッジツールを使
用した、検証カバレッジの測定。更に、非合法的な状態を探すために、その診断
法に沿ってモニタ及びチェッカを動かす。これらは全て、特定の構成仕様用に構
成可能である。
【0185】 全ての検証成分が構成可能である。構成可能性はTPPを使用して実用化され
る。
【0186】 テストベンチは、構成されたプロセッサ60が置かれるシステムのVeril
og(登録商標)モデルである。本発明の場合、これらのテストベンチは以下の
ものを含む: ━ キャッシュ、バスインターフェイス及び外部メモリ; ━ 外部割込み機構及びバスエラー発生; ━ クロック発生。
【0187】 上記特徴のほとんど全てが構成可能であるので、テストベンチ自体は構成可能
性をサポートする必要がある。そこで、例えば、キャッシュサイズ及び外部割込
み機構の数は構成に基づいて自動的に調節される。
【0188】 テストベンチはテスト中の装置、プロセッサ60に刺激を提供する。それはメ
モリ内に予めロードされるアッセンブリレベルの命令を(診断法から)提供する
ことによって行われる。更にテストベンチはプロセッサ60の行動、例えば割込
み、を制御する信号を発生させる。また、これらの外部信号の周波数及びタイミ
ングは制御可能であり、テストベンチによって自動的に発生される。
【0189】 診断法には2つのタイプの構成可能性がある。まず第一に、診断法はTPPを
使用して何をテストするかを決定する。例えば、ソフトウエア割込みをテストす
るために1つの診断法が書かれている。この診断法は正しいアセンブリコードを
発生させるために、幾つのソフトウエア割り込みがあるかを知っている必要があ
る。
【0190】 第二に、プロセッサ構成システム10はこの構成にとってどの診断法が適して
いるかを決定しなければならない。例えば、MACユニットをテストするために
書かれた診断法は、このユニットを含んでいないプロセッサ60に対しては適用
できない。本実施形態では、これは各診断法についての情報を含むデータベース
の使用を通して実施される。データベースは各診断法に対して、以下の情報を含
んでいてよい: ━ 或るオプションが選択された場合、その診断法を使用する; ━ その診断法は割込みがあれば実行できないかどうか; ━ その診断法は実行するのに特別なライブラリまたはハンドラを必要とするか
否か;及び ━ ISS126とのコシミュレーションがあればその診断法を実行できないか
どうか。
【0191】 好ましくは、プロセッサハードウエア記述は3つのタイプのテストツール:テ
スト発生器ツール、モニタ及びカバレッジツール(またはチェッカ)及びコシミ
ュレーション機構を含む。テスト発生器ツールとは、知的方法で一連のプロセッ
サ命令を作り出すツールである。これらのツールは擬似乱数的なテスト発生器の
シーケンスである。本実施形態は内部的に2つのタイプ:特別に展開されたRT
PGと呼ばれるものと、VERA(VSG)と呼ばれる外部ツールに基づくもの
を使用する。両者共そのまわりに作られる構成可能性を有する。1つの構成に対
する有効な命令に基づいて、それらは一連の命令を発生させる。これらのツール
はTIEから新たに定義された命令を処理することができ、これらの新たに定義
された命令がテスト用に無作為に発生される。本実施形態は設計検証のカバレッ
ジを測定するモニタ及びチェッカを含む。
【0192】 モニタ及びカバレッジツールは、リグレッションランと並んで動かされるツー
ルである。カバレッジツールは診断法が何をしているか、それが働かせているH
DLの機能及び論理をモニタする。この情報の全てがリグレッションランを通し
て集められ、後で分析されて、論理のどの部分が更にテストを必要としているか
に関するヒントを得る。本実施形態は構成可能である幾つかの機能的カバレッジ
ツールを使用する。例えば、特定の制限された状態の機械にとって、構成に応じ
て必ずしも全ての状態が含まれているとは限らない。従って、その構成に対して
、機能的カバレッジツールはこれらの状態または遷移をチェックしようとしては
ならない。これはTPPを通してツールを構成可能にすることによって達成され
る。
【0193】 同様に、HDLシミュレーション内で発生する非合法的な条件をチェックする
モニタがある。これらの非合法的状態はバグとして現れ得る。例えば3状態バス
上で、2つのドライバが同時にオンになるべきではない。これらのモニタは構成
可能であり、その構成のために特定の論理が含まれているか否かに基づいてチェ
ックを追加または除去する。
【0194】 コシミュレーション機構はHDLをISS126に接続する。命令の終りにプ
ロセッサ状態がHDL及びISS126において同じであることをチェックする
ために、このコシミュレーション機構が使用される。更に、各構成にどのような
特徴が含まれているか、また比較のためにどのような状態が必要であるかを知る
程度まで、このコシミュレーション機構は構成可能である。従って、例えば、デ
ータブレークポイント特徴が特殊なレジスタを追加する。この機構はこの新しい
特殊なレジスタを比較するために知っていることが必要である。
【0195】 ISS126において使用するために、またテスト及び検証のために使用する
ためのシステムデザイナのために、TIEを介して指定される命令セマンティク
スを機能的に同等のC関数に翻訳することができる。機器構成データベース10
6内の命令セマンティクスは、標準のパーサツールを使用してパーサツリーを作
るツールによってC関数に翻訳され、次にそのツリーを歩き、C言語で対応する
表現を出力するコードに翻訳される。その翻訳は全ての表現にビット幅を指定し
、構文解析木を書き直して一部の翻訳を簡略化するためにプレパスを必要とする
。これらの翻訳機構は、HDLからCへの、あるいはCからアッセンブリ言語コ
ンパイラへの他の翻訳機構に比べて比較的簡単であり、TIE及びC言語仕様書
から始めて、当業者により書き換えることができる。
【0196】 機器構成ファイル100及びアッセンブラ/逆アセンブラ100を用いて構成
されるコンパイラを使用して、ベンチマークアプリケーションソースコード11
8が編纂されて組み付けられ、サンプルデータセット124を使用してシミュレ
ートされてソフトウエアプロファイル130を入手し、このソフトウエアプロフ
ァイル130はユーザへのフィードバックのためにユーザ構成捕捉ルーチンにも
設けられる。
【0197】 どの構成パラメータ選択に対してもハードウエア及びソフトウエア両方のコス
ト/利益特性記述を得る能力を有することで、デザイナによるシステムの更なる
最適化の新たな機会が開かれる。特に、これはデザイナが最適の構成パラメータ
を選択できるようにし、最適の構成パラメータはある長所の形式に従ってシステ
ム全体を最適化する。1つの可能なプロセスは、構成パラメータを繰り返し選択
する、あるいは選択を解除することによる貪欲な戦略に基づいている。各ステッ
プにおいて、システム全体の性能及びコストに最良の影響を有するパラメータが
選択される。システムの性能及びコストを改良するために1つのパラメータも変
更できなくなるまでこのステップが繰り返される。他の拡張は、一度に一群の構
成パラメータを見ること、あるいはより洗練されたサーチアルゴリズムを使用す
ることを含む。
【0198】 最適の構成パラメータ選択を得ることに加えて、このプロセスは最適のプロセ
ッサ拡張を構成するためにも使用することができる。プロセッサ拡張における多
数の可能性のために、拡張候補数を制限することが重要である。1つの技術は、
アプリケーションソフトウエアを分析し、システム性能またはコストを改善する
ことができる命令拡張だけを見ることである。
【0199】 本実施形態による自動化されたプロセッサ構成システムの操作をカバーしてき
たので、次にプロセッサマイクロアーキテクチャ構成に対するシステムのアプリ
ケーションの例について説明する。最初の例は画像圧縮に適用された場合の本発
明の利点を示している。
【0200】 モーション評価は、MPEGビデオ及びH263会議用アプリケーションを含
む多くの画像圧縮アルゴリズムの重要な成分である。ビデオ画像圧縮は、各フレ
ームのために必要な記憶量を減少させるために、1つのフレームから次のフレー
ムへの類似性を使用しようとする。最も簡単な場合、圧縮すべき画像の各ブロッ
クを基準画像(圧縮される画像のすぐ前または後の画像)の対応するブロック(
同じX、Y位置)と比較することができる。フレーム間の画像差の圧縮は、個々
の画像の圧縮より概してビット効率的である。ビデオシーケンスにおいて、明確
な画像特徴はしばしばフレームからフレームへと移動するので、異なるフレーム
間の最も近い対応関係はしばしば正確に同じX、Y位置にはなく、幾分オフセッ
トしている。画像の重大な部分がフレーム間で移動している場合、その差を計算
する前に、その動きを特定し補償することが必要であるかもしれない。この事実
は、はっきりした差異のある特徴に対しては、計算された差において使用される
サブ画像内のX、Yオフセットを含む、連続画像間の差を符号化することによっ
て最も濃厚な表示を達成できることを意味する。画像差を計算するために使用さ
れる位置でのオフセットはモーションベクトルと称される。
【0201】 この種の画像圧縮において最も計算上集中的なタスクは、各ブロックに対して
最も適切なモーションベクトルの決定である。モーションベクトルを選択するこ
とに対する共通の距離は、圧縮される画像の各ブロックと、前の画像の一組の候
補ブロック間のピクセル毎の最も低い平均差を備えたベクトルを見出すためであ
る。候補ブロックは圧縮されるブロックの位置近傍にある全てのブロックのセッ
トである。画像のサイズやブロックのサイズ及び近傍のサイズ全てがモーション
推定アルゴリズムの実行時間に影響を及ぼす。
【0202】 単純なブロックベースのモーション推定は、圧縮すべき画像の各サブ画像を基
準画像と比較する。基準画像はビデオシーケンスにおいて被写体像の前にあるか
、または後に続いているものであってよい。いずれの場合にも、被写体像がデコ
ンプレッションされる前に、減圧システムにとって基準画像を利用可能であるこ
とが知られている。圧縮下の画像の一ブロックを基準画像の候補ブロックと比較
することについて下記に説明する。
【0203】 被写体像内の各ブロックに対して、基準画像内の対応する位置付近でサーチを
実施する。通常、画像の各カラー成分(例えばYUV)が別々に分析される。時
には、モーション推定が1つの成分、特に輝度についてのみ実施される。ピクセ
ルごとの平均差はその被写体像と、基準画像のサーチゾーン内にある全ての可能
なブロック間で計算される。その差はピクセル値の大きさの差の絶対値である。
その平均は一対のブロックにおけるNのピクセル(Nはブロックの寸法)全体
の合計に比例する。最も小さい平均ピクセル差を作り出す基準画像のブロックが
、被写体像のそのブロックに対するモーションベクトルを限定する。
【0204】 以下の例は簡単な形態のモーション推定アルゴリズムを示しており、小さな特
定用途の機能単位のためにTIEを使用するアルゴリズムを最適化する。この最
適化は10の因数より大きなスピードアップを生じさせ、多くのビデオ用途のた
めにプロセッサベースの圧縮を実現可能にする。それは高レベル言語でのプログ
ラミングの容易さと、特殊目的のハードウエアの効率とを組み合わせた構成可能
なプロセッサの能力を示している。
【0205】 この例は、古い画像と新しい画像を各々表すために、2つのマトリックス、O
ldBとNewBを使用する。画像のサイズはNXとNYによって決定される。
ブロックサイズはBLOCKXとBLOCKYによって決定される。従って、画
像はNX/BLOCKX×NY/BLOCKYブロックで構成される。1つのブ
ロックのサーチ領域はSEARCHXとSEARCHYによって決定される。最
良のモーションベクトル及び値がVectX、VectY及びVectBに格納
される。ベース(基準)のインプリメンテーションによって計算される最良のモ
ーションベクトル及び値がBaseX、BaseY及びBaseBに格納される
。これらの値は命令拡張を使用するインプリメンテーションによって計算される
ベクトルをチェックするために使用される。これらの基本的な定義は以下のCコ
ードセグメントにおいてデータ捕捉される。
【数26】
【0206】 モーション推定アルゴリズムは3つの入れ子構造のループで構成される。 1.古い画像内の各ソースブロックに対して。 2.ソースブロックの周囲領域内の新しい画像の各目的ブロックに対して。 3.各ピクセルペア間の絶対差を計算する。 このアルゴリズムに対する完全なコードを下記に記す。
【0207】 基準ソフトウエアインプリメンテーション
【数27】
【0208】 基本的なインプリメンテーションが単純である一方、それはこのブロック対ブ
ロック比較の本質的な平行関係の多くを利用し損ねている。構成可能なプロセッ
サアーキテクチャは、このアプリケーションのかなりのスピードアップを許容す
るために2つの主なツールを提供する。
【0209】 第一に、命令セットアーキテクチャはメモリ内の未整列フィールドの急速抽出
を可能にするために、強力な漏斗状シフティング基関数を含む。これはピクセル
比較の内部ループがメモリから効率的に隣接するピクセル群をフェッチできるよ
うにする。このループは同時に4つのピクセル(バイト)を操作するために書き
換えることができる。特に、この例の目的のために、一度に4つのピクセルペア
の絶対差を計算するために新しい命令を定義することが望ましい。しかしながら
、この新しい命令を定義する前に、このような命令を利用できるようにアルゴリ
ズムを再実用化することが必要である。
【0210】 この命令の存在が、ループ展開が同様に魅力的になるような内部ループピクセ
ル差計算の改善を許容する。新しい絶対差合計命令と効率的なシフティングを利
用するために、内部ループに対するCコードが書き直される。基準画像の4つの
重なり合うブロックの部分を同じループにおいて比較することができる。SAD
(x、y)は付加された命令に対応する新しい組込み関数である。SRC(x、
y)は、SARレジスタに格納されているシフト量分だけ、xとyの連結状態の
右シフトを実施する。
【0211】 SAD命令を使用するモーション推定の高速バージョン
【数28】
【0212】
【数29】
【0213】 このインプリメンテーションは最後の新規命令をエミュレートするために以下
のSAD関数を使用する。
【0214】 4バイトの絶対差の合計
【数30】
【0215】 この新規インプリメンテーションをデバッグするために、以下のテストプログ
ラムを使用して、モーションベクトルと、新規インプリメンテーションとベース
インプリメンテーションによって計算された値とを比較する。
【0216】 主テスト
【数31】
【0217】 この簡単なテストプログラムは開発プロセスを通して使用される。ここで従わ
なければならない1つの重要な慣例は、エラーが検出された場合、主プログラム
が0に復帰しなければならず、その他の場合は1に復帰しなければならないこと
である。
【0218】 TIEの使用が新規命令の急速な特定化を可能にする。構成可能なプロセッサ
発生器は、ハードウエアインプリメンテーション及びソフトウエア開発ツールの
両方においてこれらの命令を完全に実行することができる。ハードウエア統合は
新しい関数のハードウエアデータパスへの最適の統合化を生じさせる。C及びC
++コンパイラ、アッセンブラ、象徴的デバッガ、プロファイラ及び正確なサイ
クルの命令セットシミュレータにおいて、構成可能なプロセッサソフトウエア環
境が新しい命令を完全にサポートする。ハードウエアとソフトウエアの急速な再
生が、特定用途の命令をアプリケーション加速用の素早く確実なツールにする。
【0219】 本例は簡単な命令を実行して、4つのピクセルに対して、ピクセル区別化、絶
対値及び累算を平行して実施するためにTIEを使用する。この簡単な命令は1
1の基本的な操作(従来のプロセスでは、別々の命令を必要とするかもしれない
)を1つの原子操作として実施する。以下はその完全な説明である。
【数32】
【0220】 この説明は新規命令を定義するのに必要な最低のステップを表している。まず
第一に、その命令のために新しい操作符号を定義する必要がある。この場合、新
しい操作符号SADは、CUST0のサブ操作符号として定義される。上記のよ
うに、CUST0は以下のように予め定義されている。
【数33】
【0221】 ORSTはトップレベルの操作符号であり、CUST0はORSTのサブ操作符
号であり、次にSADはCUST0のサブ操作符号であることが容易に解る。こ
の操作符号の階層組織が操作符号スペースの論理的グループ化と管理を許容する
。覚えておかなければならない1つの重要な事は、CUST0(及びCUST1
)はユーザが新規命令を付加するために取って置かれる操作符号スペースとして
定義されることである。ユーザはTIE記述の将来の再利用可能性を保証するた
めに、この割り当てられた操作符号スペース内に留まることが好ましい。
【0222】 このTIE記述における第2のステップは、新規命令SADを含む新規命令ク
ラスを定義することである。これはSAD命令のオペランドが定義される場合で
ある。この場合、SADは3つのレジスタオペランドと、送出先レジスタarr
と、ソースレジスタars及びartよりなる。前述のように、arrは命令の
rフィールドによって索引付けられたレジスタとして定義され、ars及びar
tは命令のs及びtフィールドによって索引付けられたレジスタとして定義され
る。
【0223】 この記述における最後のブロックは、SAD命令用の正式の意味論的定義を与
える。この記述は組み合わせ論理を説明するために、Verilog HDLの
サブセットを使用している。ISSが如何にしてSAD命令をシミュレートし、
如何にして付加的な回路が統合され、構成可能なプロセッサハードウエアに付加
されて、新規命令をサポートするかを正確に定義するのがこのブロックである。
【0224】 次に、TIE記述がデバッギングされて、前述のツールを用いて検証される。
TIE記述の正確さを確証した後、次のステップはハードウエアサイズ及び性能
に対する新規命令の影響力を推定することである。上記のように、これは、例え
ば、Design Compiler(登録商標)を使用して実施できる。De
sign Compiler(登録商標)が完了すると、ユーザは詳細な面積及
び速度に関するレポートの出力を見ることができる。
【0225】 TIE記述が正しく効率的であることを確証した後、新しいSAD命令をサポ
ートする構成可能なプロセッサを構成し組み立てる時である。これは上述のよう
にGUIを使用して実施される。
【0226】 次に、モーション推定コードが構成可能なプロセッサ用のコードに編集され、
そのプロセッサはそのプログラムの正確さを確証するために、またより重要なこ
とには、その性能を測定するために、命令セットシミュレータを使用する。これ
は3つのステップ:シミュレータを使用してテストプログラムを実行する、ベー
スインプリメンテーションだけを実行して命令カウントを得る、そして新しいイ
ンプリメンテーションだけを実行して命令カウントを得る、ステップにおいて行
われる。
【0227】 以下は第2のステップのシミュレーション出力である。
【数34】
【0228】 以下は最後のステップのシミュレーション出力である。
【数35】
【0229】 2つのレポートから、約4倍のスピードアップが発生したことが解る。構成可
能なプロセッサの命令セットシミュレータは他の多くの有用な情報を提供できる
ことに注意されたい。
【0230】 プログラムの正確さ及び性能を確証した後、次のステップは上述のようにVe
rilogシミュレータを使用してテストプログラムを実行することである。当
業者なら、アペンディクスCのメイクファイル(アペンディクスCに関連ファイ
ルも示されている)からこのプロセスの詳細を収集することができるであろう。
このシミュレーションの目的は、新しいインプリメンテーションの正確さを更に
確証し、またより重要なことは、このテストプログラムをこの構成されたプロセ
ッサ用のリグレッションテストの一部とすることである。
【0231】 最後に、プロセッサ論理は、例えば、Design Compiler(登録
商標)を使用して統合し、例えばApollo(登録商標)使用して配置及び経
路選択することができる。
【0232】 本例は、説明を明確かつ簡略にするために、ビデオ圧縮及びモーション推定の
簡略化された図を例に取ってきた。実際には、標準の圧縮アルゴリズムには多く
の付加的なニュアンスがある。例えば、MPEG2は典型的にモーション推定を
行い、サブピクセルの解像度で補正を実施する。ピクセルの2つの隣接した列ま
たは縦列を平均化して、その2つの隣接した列または行間の中間の仮想位置に対
して補間された一組のピクセルを作り出すことができる。並列したピクセル平均
化命令はTIEコードの3つまたは4つのラインで容易に実用化されるので、構
成可能プロセッサのユーザが定義する命令はここでも有用である。1つの列内に
あるピクセル間の平均化はプロセッサの標準命令セットの効率的な配列操作を使
用する。
【0233】 このように、簡単な絶対差合計命令の組込みは数百ゲートを付加するが、10
因数より大きくモーション推定性能を改善する。この加速は最終的なシステムの
コスト及び電力効率におけるかなりの改善を表す。更に、新しいモーション推定
命令を含むためのソフトウエア開発ツールの縫い目なしの拡張は、急速なプロト
タイピング及び性能分析及び完全なソフトウエアアプリケーション解決法のリリ
ースを許す。本発明の解決法は特定用途のプロセッサ構成を簡単な、確実な、そ
して完全なものにし、最終的なシステム製品のコスト、性能、機能性及び電力効
率の劇的なエンハンスメントを提供する。
【0234】 機能的なハードウエアユニットの付加に焦点を当てた例として、図6に示した
基本的な構成を考えてみよう。この構成はプロセッサ制御機能と、プログラムカ
ウンタ(PC)と、ブランチセレクションと、命令メモリまたはキャッシュ及び
命令デコーダと、主レジスタファイル、バイパスマルチプレクサ、パイプライン
レジスタ、ALU、アドレス発生器及びキャッシュ用データメモリを含む基本的
な整数データパスとを含んでいる。
【0235】 倍率器論理の存在が「倍率器」パラメータが設定されていることを条件として
、HDLが書き込まれ、図7に示すように、新しいパイプライン段階として倍率
器装置が付加される(正確な特例をサポートすべきである場合、特例処理に対す
る変更が必要であるかもしれない)。もちろん、倍率器を利用するための命令は
好ましくは新しいユニットに付随して付加される。
【0236】 第2の例として、積算・累算ユニット等のデジタル信号プロセッサのために、
完全なコプロセッサを図8に示した基本的な構成に付加してもよい。これは、拡
張された命令からのレジスタソース及び送出先の復号化と、制御信号に対する適
切なパイプライン遅延の付加と、レジスタ送出先論理の拡張と、累積レジスタか
らの動きに対するレジスタバイパスマルチプレクサ用の制御の追加と、命令結果
用の可能なソースとして積算・累算ユニットの包含とを含む、積算・累算演算用
の復号化制御信号の追加等のプロセッサ制御の変化を必然的に伴う。それに加え
て、それは付加的なアキュムレータレジスタと、積算・累算アレイと、主レジス
タソース用のソースセレクトマルチプレクサとを伴う積算・累算ユニットの追加
を必要とする。更に、コプロセッサの追加は、累積レジスタからのソースを取り
入れるために、累積レジスタからのレジスタバイパスマルチプレクサの延長と、
倍率器の結果からのソースを取り入れるために、ロード/アラインメントマルチ
プレクサの延長とを必然的に必要とする。やはり、システムは好ましくは実際の
ハードウエアと共に新しい機能ユニットを使用するための命令を付加する。
【0237】 デジタル信号プロセッサとの関連で特に有用である別のオプションは、浮動小
数点ユニットである。例えば、IEEE754単精度浮動小数点演算基準を実用
化するこのような機能単位を、それにアクセスするための命令と共に付加しても
よい。浮動小数点ユニットは、例えば、音声圧縮・減圧等のデジタル信号処理ア
プリケーションにおいて使用しても良い。
【0238】 更にシステムのフレキシビリティの別の例として、図9に示した4kBメモリ
インターフェイスを考えてみよう。本発明の構成可能性を使用して、コプロセッ
サレジスタ及びデータパスは主整数レジスタファイル及びデータパスより幅広く
ても狭くても良く、ローカルメモリ幅は、メモリ幅が最も幅広いプロセッサまた
はコプロセッサ幅に等しくなるように変化してもよい(読取及び書込みに対する
メモリのアドレス指定はそれに従って調節される)。例えば、図10は同じアレ
イにアドレス指定するプロセッサ・コプロセッサの組み合わせに対して32ビッ
トのロード動作と記憶装置をサポートするが、コプロセッサは128ビットのロ
ード動作と記憶装置をサポートする、プロセッサ用のローカルメモリシステムを
示している。これはTPPコードを使用して実用化できる。
【数36】
【0239】 但し、SBytesは、書き込み信号W1の制御下にデータバスD1を用いるバ
イトアドレスA1における幅B1バイトとして、あるいは対応するパラメータB
2、A2、D2、およびW2を使用してアクセスされる全メモリサイズである。
Selectにより定義される一組の信号だけが所定のサイクルにおいて活動し
ている。TPPコードはメモリバンクのコレクションとしてメモリを実用化する
。各バンクの幅は最小のアクセス幅によって与えられ、またバンク数は最大及び
最小のアクセス幅の比率によって与えられる。ループ用Aは各メモリバンク及び
その関連する書き込み信号、つまり書き込みイネーブル及び書込みデータを例示
するために使用される。ループ用第2は全てのバンクから読み取られたデータを
1つのバスに集めるために使用される。
【0240】 図11は基本の機器構成にユーザ限定命令を含めた例を示している。この図に
示すように、ALUのものと同様のタイミングとインターフェイスを備えたプロ
セッサパイプラインに簡単な命令を付加することができる。この方法で付加され
る命令は如何なる機能停止も特例も発生させてはならず、如何なる状態も含んで
はならず、2つの正常なソースレジスタ値と命令ワードのみを入力として使用し
、1つの出力値だけを発生させなければならない。しかしながら、TIE言語が
プロセッサ状態を指定する規定を有している場合、このような制限は必要ではな
い。
【0241】 図12はこのシステムの下でのユーザが定義したユニットのインプリメンテー
ションの別の例を示している。この図に示した機能単位、ALUの8/16パラ
レルデータユニットエクステンション、は以下のISAコードから発生される。
【数37】
【0242】 本発明の別の局面において特に関心のあることは、設計者が定義した命令実行
ユニット96である。なぜなら、これらの修正プロセッサ状態を含むTIE限定
命令が復号化され実行されるのがここにおいてであるからである。本発明のこの
局面において、多数の組立てブロックが言語に付加され、新規命令によって読取
り・書込みを実施できる付加的なプロセッサ状態を宣言することができる。これ
らの「状態」ステートメントはプロセッサ状態の付加を宣言するために使用され
る。宣言はキーワード状態で始まる。状態ステートメントの次のセクションはビ
ット及び状態のサイズと数、及び状態のビットがどのように索引付けられるかを
記述する。それに続くセクションは他の記述セクションにおける状態を特定する
ために使用される状態名である。「状態」ステートメントの最後のセクションは
その状態に関連する属性リストである。例えば、
【数38】
【0243】 は3つの新しいプロセッサ状態、DATA、KEYC及びKEYDを定義する。
状態DATAは64ビット幅であり、ビットは63から0へと索引付けられる。
KEYC及びKEYDは共に28ビット状態である。DATAはどのコプロセッ
サにデータDATAが属しているかを指示するコプロセッサ番号属性cpnを有
する。
【0244】 属性「autopack」は、DATAの値をソフトウエアツールによって読
取り、書き込むことができるように、状態DATAがユーザレジスタファイル内
にあるレジスタに自動的に配置されることを示す。
【0245】 user_registerセクションは、ユーザレジスタファイル内のレジ
スタに対する状態のマッピングを示すために定義される。1つのuser_re
gisterセクションはキーワードuser_registerで始まり、次
にレジスタ番号を示す数字が続き、レジスタ上に配置されるべき状態ビットを示
す式で終了する。例えば、
【数39】
【0246】 は、DATAの下位ワードが第1のユーザレジスタファイルにマッピングされ、
上位ワードが第2のユーザレジスタファイルにマッピングされることを明記して
いる。次の2つのユーザレジスタファイルのエントリはKEYC及びKEYDの
値を保持するために使用される。明らかに、このセクションにおいて使用される
状態情報は、stateセクションのものと一致していなければならない。ここ
で、コンピュータプログラムによって一貫性を自動的にチェックすることができ
る。
【0247】 本発明の別の実施形態では、ユーザレジスタファイルエントリに対する状態ビ
ットのこのような割り当ては、ビンパッキングアルゴリズムを使用して自動的に
引き出される。更に別の実施形態では、例えば、上向きの互換性を確実にするた
めに、手動及び自動割当の組み合わせを使用することができる。
【0248】 命令フィールドステートメントfieldはTIEコードの可読性を改良する
ために使用される。フィールドは共にグループ分けされ、1つの名前で参照符が
付けられる他のフィールドのサブセットまたは連接である。1つの命令における
完全なビットセットが最高レベルのスーパーセットフィールドinstであり、
このフィールドは更に小さなフィールドに分けることができる。例えば、
【数40】
【0249】 は、最高レベルのフィールドinstのサブフィールド(各々ビット8〜11、
12〜15)として2つの4ビットフィールド、x及びyを定義し、x及びyフ
ィールドの連接として8ビットのフィールドxyを定義する。
【0250】 ステートメントopcodeは特殊なフィールドを符号化するための操作符号
を定義する。このように定義された操作符号により使用されるオペランド、例え
ば、レジスタまたは即時定数を指定するための命令フィールドは、まずフィール
ドステートメントで定義され、次にオペランドステートメントで定義されなけれ
ばならない。
【0251】 例えば、
【数41】
【0252】 は、前に定義された操作符号CUST0(4’b000は4ビット長のバイナリ
定数0000を示す)に基づいて、2つの新しい操作符号、acs及びadse
lを定義する。好ましいコアISAのTIE仕様書は、その基本的定義として、
以下のステートメントを有する。
【数42】
【0253】 このように、acs及びadselの定義は、以下により各々表される命令復号
化論理をTIEコンパイラに発生させる。
【数43】
【0254】 命令オペランドステートメントoperandはレジスタ及び即時定数を特定す
る。しかしながら、オペランドとして1つのフィールドを定義する前に、それは
上述のように1つのフィールドとして以前に定義されていなければならない。オ
ペランドが即時定数である場合、その定数の値をオペランドから発生させること
ができるし、あるいは下記のように定義される、以前に定義された定数表からそ
の定数の値を取り出すことができる。例えば、即時オペランドを符号化するため
に、TIEコード
【数44】
【0255】 は有符号数字及びオフセットフィールドに格納された数の4倍であるオペランド
offsets4を保持する、オフセットという名前の18ビットフィールドを
定義する。operandステートメントの最後の部分は、当業者にとっては自
明であるように、組み合せの回路を説明するためのVerilog(登録商標)
HDLのサブセットにおける計算を実施するために使用されるサーキットリを実
際に説明している。
【0256】 ここで、wireステートメントは32ビット幅のtという名前の一組の論理
回線を定義している。wireステートメントの後の最初のassignステー
トメントは、論理回線を駆動する論理信号が右にシフトされたoffsets4
定数であることを明記しており、第2のassignステートメントはtの下位
18ビットがoffsetフィールドに置かれることを明記している。最初のa
ssignステートメントはoffsetの1連接としてoffsets4オペ
ランドの値と、そのサインビット(bit17)の14の反復及びそれに続く2
ビットの左シフトを直接指定している。
【0257】 1つの定数表オペランドに対して、TIEコード
【数45】
【0258】 は、定数のアレイprimeを限定するためにtableステートメントを利用
し(テーブル名に続く数字はそのテーブル内の要素の数である)、テーブルpr
imeへのインデックスとしてそのオペランドを使用してそのオペランドpri
me_sを符号化する(索引付けを定義する際にVerilog(登録商標)ス
テートメントを使用することに注意)。
【0259】 命令クラスステートメントiclassは共通のフォーマットでのオペランド
に操作符号を関連付ける。iclassステートメントにおいて定義される全て
の命令は同じフォーマットとオペランド使用法を有する。命令クラスを定義する
前に、その成分を、まずフィールドとして、次に操作符号及びオペランドとして
定義しなければならない。例えば、操作符号acs及びadselを定義する前
述の例において使用したコード上に構築する際に、付加的なステートメント
【数46】
【0260】 は3つのレジスタオペランドart・ars・arr(やはりこの場合も、この
定義においてVerilog(登録商標)ステートメントを使用することに注意
)を定義するためにoperandステートメントを使用する。次に、icla
ssステートメント
【数47】
【0261】 はオペランドadsel及びacsが、命令viterbiの共通のクラスに属
し、それは入力として2つのレジスタオペランドart及びarsを取り、レジ
スタオペランドarrに出力を書き込むことを明記している。
【0262】 本発明において、命令の状態アクセス情報の指定を許容するために命令クラス
ステートメント「iclass」が修正される。それはキーワード「iclas
s」で始まり、次に命令クラス名、続いてその命令クラスに属する操作符号のリ
スト及びオペランドアクセス情報のリストが続き、状態アクセス情報のために新
たに定義されたリストで終了する。例えば、
【数48】
【0263】 は幾つかの命令クラスと、如何に様々の新規命令がその状態にアクセスするかを
定義している。iclass内の命令によって、その状態が読み取られ、書き込
まれ、または修正(読取り及び書込み)されることを示すために、キーワード「
in」、「out」及び「inout」が使用される。この例では、状態「DA
TA」は命令「LDDATA」によって読み取られ、状態「KEYC」及び「K
EYD」は命令「STKEY」によって書き込まれ、「KEYC」と「KEYD
」と「DATA」が命令「DES」によって修正される。
【0264】 命令セマンティックステートメントsemanticはオペランドをコード化
するために使用されるVerilog(登録商標)の同じサブセットを使用して
、1つ以上の命令の所作を説明する。1つのセマンティックステートメントにお
いて多数の命令を定義することにより、一部の共通の表現が共有され、ハードウ
エアインプリメンテーションをより効率的にすることができる。セマンティック
ステートメントにおいて許容される変数は、ステートメントの操作符号リスト内
で定義される操作符号用のオペランドであり、操作符号リスト内で指定される各
操作符号用の単ビットの変数である。この変数は操作符号として同じ名前を有し
、操作符号が検出された時に1と評価する。それは対応する命令の存在を示すた
めに、計算セクション(Verilog(登録商標)サブセットセクション)に
おいて使用される。
【数49】
【0265】 上記コードの第1セクションはBYTESWAPと呼ばれる新しい命令用の操
作符号を定義する。
【数50】
【0266】 ここで、新しい操作符号BYTESWAPはCUST0のサブ操作符号として
定義される。下記において詳述するXtensa(登録商標)の命令セットアー
キテクチャ参照マニュアル(Instruction Set Archite
cture Reference Manual)から、CUST0が以下のよ
うに定義される。
【数51】
【0267】 但し、op0及びop2は命令内のフィールドであることが解る。操作符号は典
型的に階層的に組織化される。ここで、ORSTはトップレベルの操作符号であ
り、CUST0はORSTのサブ操作符号であり、次にBYTESWAPはCU
ST0のサブ操作符号である。この操作符号の階層組織は操作符号スペースの論
理的グループ分けと管理を許容する。
【0268】 第2の宣言はBYTESWAP命令が必要とする付加的なプロセッサ状態を宣
言する。
【数52】
【0269】 ここで、COUNTは32ビット状態として宣言され、SWAPは1ビット状態
と宣言される。TIE言語はCOUNT内のビットが31から0に索引付けられ
、ビット0が最下位ビットであることを明記している。
【0270】 Xtensa(登録商標) ISAは、特殊なシステムレジスタをセーブしリ
ストアするために、2つの命令、RSRとWSRを提供する。同様に、それはT
IE内で宣言される状態をセーブしリストアするために、2つの他の命令、RU
RとWUR(下記において詳述する)を提供する。TIEにおいて宣言された状
態をセーブ・リストアするために、RURとWUR命令がアクセスすることがで
きるユーザレジスタファイルへのエントリに対して、その状態のマッピングを指
定しなければならない。上記コードの以下のセクションがこのマッピングを指定
し、
【数53】
【0271】 以下の命令がa2に対するCOUNTの値とa5に対するSWAPの値をセーブ
するであろう。
【数54】
【0272】 この機構は状態の内容を検証するためにテストプログラムにおいて実際に使用さ
れる。Cでは、上記2つの命令は以下のように見えるであろう。
【数55】
【0273】 TIE記述における入れ子セクションは、新規命令BYTESWAPを含む新規
命令クラスの定義である。
【数56】
【0274】 但し、iclassはキーワードであり、bsはiclassの名前である。次
の節はこの命令クラス(BYTESWAP)における命令のリストを作成する。
thanの後の節はこのクラス内の命令によって使用されるオペランド(この場
合、入力オペランドarsと出力オペランドarr)を指定する。iclass
定義における最後の節は、このクラスにおける命令によってアクセスされる状態
を指定する(この場合、命令は状態SWAPを読み取り、状態COUNTを読み
取って書き込むであろう)。
【0275】 上記コードの最後のブロックはBYTESWAP命令のために正式の意味論的
定義を与える。
【数57】
【0276】 この記述は組合せ論理を説明するためにVerilog HDL用のサブセット
を使用する。命令セットシミュレータがBYTESWAP命令をどのようにシミ
ュレートし、付加的なサーキットリがどのように合成されてXtensa(登録
商標)プロセッサハードウエアに付け加えられ、新しい命令をサポートするかを
正確に定義するのがこのブロックである。
【0277】 本発明において、ユーザ定義状態を実用化する際に、状態に格納されている情
報にアクセスするための他の変数と同様に、宣言された状態を使用することがで
きる。式の右手側に現れる状態識別子がその状態からの読取りを示す。状態への
書込みは、状態識別子に値または式を割り当てることによって行われる。例えば
、以下のセマンティックコードセグメントは命令によって状態がどのようにして
読み取られ、書き込まれるかを示している。
【数58】
【0278】 コア命令及び構成オプションの選択を介して利用できる命令として、構成可能
プロセッサ内で実用化することができる命令の例を説明する目的のために、テン
シリカ社(Tensilica、Inc.)のXtensa(登録商標)命令セットアーキテク
チャ(Instruction Set Architecture)(ISA)参照マニュアル、改訂版1.
0がここに参照して組み込まれる。更に、このようなユーザ定義命令を実用化す
るために使用することができるTIE言語命令の例を示すために、やはりテンシ
ル社の命令エクステンション言語(TIE)参照マニュアル、改訂版1.3がこ
こに参照して組み込まれる。
【0279】 TIE記述から、例えば、付属書Dに示したものと同じようなプログラムを使
用して、命令を実行する新しいハードウエアを発生させることができる。付属書
Eは組込み関数として新しい命令をサポートするために必要なヘッダファイル用
のコードを示している。
【0280】 構成仕様書を使用して、以下のものを自動的に発生させることができる。 ・ プロセッサ60の命令デコード論理; ・ プロセッサ60用の非合法的命令検出論理; ・ アッセンブラの特定ISA用部分; ・ コンパイラのための特定ISA用サポートルーチン; ・ (デバッガにより使用される)デアッセンブラの特定ISA用部分;及び ・ シミュレータの特定ISA用部分。
【0281】 図16はこれらのソフトウエアツールの特定ISA用部分をどのように発生さ
せるかを示す図である。ユーザが作成したTIE記述ファイル400から、TI
Eパーサプログラム410が幾つかのプログラム用のCコードを発生させ、ユー
ザが定義した命令及び状態に関する情報のために、そのプログラムの各々が、ソ
フトウエア展開ツールの1つ以上によってアクセスされるファイルを作り出す。
例えば、プログラムtie2gcc420はxtensa−tie.hと呼ばれ
るCヘッダファイル470を発生させ、このファイルは新しい命令用の組込み関
数定義を含んでいる。プログラムtie2isa430は動的接続ライブラリ(
DLL)480を発生させ、これはユーザが定義した命令フォーマットに関する
情報を含み、(下記に述べるWilsonらの出願では、これは効果的にここで
論じるエンコード・デコードDLLの組み合わせである)。プログラムtie2
iss440は性能モデル化ルーチンを発生させ、命令セマンティクスを含むD
LL490を作り出し、それは、Wilsonらの出願において論じられている
ように、シミュレータにより使用されるシミュレータDLLを作り出すためにホ
ストコンパイラによって使用される。プログラムtie2ver450は適切な
ハードウエア記述言語でユーザが定義した命令に必要な記述500を作り出す。
最後に、プログラムtie2xtos460はRUR及びWUR命令が使用する
セーブ・リストアコード510を作り出す。
【0282】 命令及びそれらがどのようにして状態にアクセスするかについての正確な記述
が、既存の高性能マイクロプロセッサ設計にプラグインできる効率的な論理を作
り出すことを可能にする。本発明の本実施形態との関連で説明した方法は、特に
これらの新しい命令を処理し、それらは1つ以上の状態レジスタから/へと読み
取って、書き込む。特に、本実施形態は文脈上状態レジスタ用のハードウエア論
理を如何にして引き出すかを示しており、高性能を達成するための技術として、
全てパイプライン方式を使用するマイクロプロセッサインプリメンテーションス
タイルのクラス。
【0283】 図17に示したようなもの等のパイプライン式インプリメンテーションにおい
て、状態レジスタは典型的に何度も重複しており、各々の具体化が特定のパイプ
ライン段階における状態値を表している。本実施形態では、1つの状態が基礎を
なすコアプロセッサインプリメンテーションと矛盾しない多数のレジスタのコピ
ーに移される。やはり基礎をなすコアプロセッサインプリメンテーションと矛盾
しない方法で、付加的なバイパス及びフォワード論理も発生される。例えば、3
つの実行段階よりなるコアプロセッサインプリメンテーションを目標にするため
に、本実施形態は1つの状態を図18に示すように接続される3つのレジスタへ
と移すであろう。このインプリメンテーションでは、各レジスタ610〜630
が3つのパイプライン段階の1つにおける状態値を表す。ctrl−1と、ct
rl−2とctrl−3は、対応するフリップフロップ610〜630において
データラッチングを可能化するために使用される制御信号である。
【0284】 基礎をなすプロセッサインプリメンテーションと矛盾なく状態レジスタの多数
のコピーを動作させるために、付加的な論理と制御信号が必要である。「矛盾な
く」とは、割込みや特例・パイプラインの機能停止などの状態下で、状態が残り
のプロセッサと全く同じようにふるまうべきであることを意味する。典型的に、
所定のプロセッサインプリメンテーションは様々なパイプライン状態を表す或る
信号を限定する。このような信号はパイプライン状態のレジスタを適切に作動さ
せるために必要である。
【0285】 典型的なパイプライン式インプリメンテーションにおいて、実行ユニットは多
数のパイプライン段階よりなる。1つの命令の計算はこのパイプライン内の多数
の段階において実施される。命令ストリームは制御論理により方向付けられるよ
うなシーケンスでパイプラインを通って流れる。所定の時間に、パイプラインに
おいて実行されるn個の命令があってよく、nは段階の数である。やはり本発明
を使用して実用化できるスーパースカラープロセッサでは、パイプライン内の命
令の数はn・wであってよく、wはプロセッサのイシュー幅である。
【0286】 制御論理の役割は、命令間の依存性に従い、命令間の干渉が散らされることを
保証することである。1つの命令が初期の命令により計算されたデータを使用す
る場合、パイプラインを機能停止させることなく後の命令へとデータを進めるた
めには特殊なハードウエアが必要である。割込みが発生した場合、パイプライン
内の全ての命令を削り、後に再実行することが必要である。1つの命令が必要と
するその入力データまたは計算用ハードウエアが利用できないためにその命令を
実行できない場合、その命令は機能停止されなければならない。命令を機能停止
させる1つの費用効果的な方法は、その第1実行段階でその命令を削り、次のサ
イクルでその命令を再実行することである。この技術の結果がパイプライン内に
無効な段階(バブル)を作り出している。このバブルが他の命令と共にパイプラ
インを流れる。命令が遂行されるパイプラインの終りで、バブルが捨てられる。
【0287】 上記の3段階パイプラインの例を使用して、このようなプロセッサ状態の典型
的なインプリメンテーションは図19に示した付加的な論理と接続を必要とする
【0288】 正常な状態では、1つの段階で計算された値は、データ依存性により導入され
るパイプライン機能停止の数を減少させるために、その値がパイプラインの終り
に達するのを待つことなく、直ちに次の命令へと進められるであろう。これは、
第1のフリップフロップ610の出力を直接セマンティックブロックへと送り、
それを次の命令によって直ちに使用できるようにすることによって達成される。
割込みや特例等の異常な状態を処理するために、該インプリメンテーションは以
下の制御信号、Kill_1、Kill_all、Valid_3を必要とする
【0289】 信号「Kill_1」は、収益のために必要とするデータを有していない等の
理由のために、現在第1パイプライン段階110にある命令を削らなければなら
ないことを示している。一旦その命令が削られると、次のサイクルにおいて再度
試みられるであろう。信号「Kill_all」は、それらの前の命令が特例を
発生させたか、または割込みが発生した等の理由のために、現在第1パイプライ
ン段階110にある全ての命令を削らなければならないことを示している。信号
「Valid_3」は、現在最後の段階630にある命令が有効であるか否かを
示している。このような条件は、しばしば第1のパイプライン段階610内の命
令を削り、パイプラインにバブル(無効な命令)を生じさせた結果である。「V
alid_3」は単に3番目のパイプライン段階における命令が有効であるかバ
ブルであるかを示している。明らかに、有効な命令だけをラッチすべきである。
【0290】 図20は状態レジスタを実用化するために必要な付加的な論理及び接続を示し
ている。更に、この状態レジスタインプリメンテーションが上記の要件を満たす
ように、信号「ctrl−1」、「ctrl−2」、および「ctrl−3」を
駆動するための制御論理を如何にして構築するかも示している。以下は図19に
示したような状態レジスタを実用化するために自動的に発生されるサンプルHD
Lコードである。
【数59】
【0291】 上記パイプライン式状態レジスタモデルを使用して、セマンティックブロック
がその入力として状態を指定する場合、状態の現在の状態値が入力変数としてセ
マンティックブロックへと送られる。セマンティックブロックが1つの状態に対
する新しい値を発生させるための論理を有している場合、出力信号が作られる。
この出力信号はパイプライン式状態レジスタへの次の状態入力として使用される
【0292】 本実施形態は多数のセマンティック記述ブロックを許容し、その各々が多数の
命令に対する所作を説明する。この無制限の記述スタイルの下で、セマンティッ
クブロックの1つのサブセットだけが所定の状態に対する次の状態出力を作り出
すことができる。更に、所定の時間にそれがどの命令を実行しているかに応じて
条件付きで、所定のセマンティックブロックが次の状態出力を作り出すこともで
きる。その結果、全てのセマンティックブロックからの次の状態出力を組み合わ
せて、パイプライン式状態レジスタに対する入力を形成するために、付加的なハ
ードウエア論理が必要である。本発明の本実施形態では、このブロックがその状
態に対する新しい値を作り出したかどうかを示す各セマンティックブロックのた
めに、1つの信号が自動的に引き出される。別の実施形態では、このような信号
を、設計者が指定するように残すことができる。
【0293】 図20は幾つかのセマンティックブロックs1〜snからの状態の次の状態出
力を如何に組み合わせ、状態レジスタに入力するために如何に適切にその1つを
選択するかを示している。この図において、op1_1及びop1_2は第1の
セマンティックブロックに対する操作符号信号であり、op2_1及びop2_
2は第2のセマンティックブロックに対する操作符号信号である。セマンティッ
クブロックiの次の状態出力はsiである(多数の状態レジスタがある場合、そ
のブロックに対して多数の次の状態出力がある)。セマンティックブロックiが
その状態に対して1つの新しい値を作り出したことを示す信号がsi_weであ
る。信号s_weはいずれかのセマンティックブロックがその状態に対して1つ
の新しい値を作り出すかどうかを示しており、書込みイネーブル信号としてパイ
プライン式状態レジスタへの入力として使用される。
【0294】 多数のセマンティックブロックの表現力が1つのセマンティックブロックのも
のより低くても、それは、典型的に関連する命令を1つのブロックにグループ分
けすることにより、より多くの構造化した記述を与える1つの方法を提供する。
多数のセマンティックブロックは、命令が実行される更に制限された範囲のため
に、命令効果のより簡単な分析へと導くことができる。他方、1つのセマンティ
ックブロックが多数の命令の所作を説明することに対して、しばしば多くの理由
がある。最も頻繁に、それはこれらの命令のハードウエアインプリメンテーショ
ンが共通の論理を共有するからである。多数の命令を1つのセマンティックブロ
ックで説明することは、通常、より効率的なハードウエア設計ハードウエア設計
へと導く。
【0295】 割込み及び特例のために、ソフトウエアが状態の値をデータメモリへとリスト
アし、データメモリからロードすることが必要である。新しい状態及び新しい命
令の正式の記述に基づいて、このようなリストア・ロード命令を自動的に発生さ
せることができる。本発明の本実施形態では、リストア・ロード命令用の論理が
2つのセマンティックブロックとして自動的に発生され、それは次に他のブロッ
クと全く同様に、反復的に実際のハードウエアに移すことができる。例えば、以
下の状態宣言書から、
【数60】
【0296】 以下のセマンティックブロックを発生させて、「DATA」、「KEYC」、お
よび「KEYD」の値を汎用レジスタに読み込むことができる。
【数61】
【0297】 図21はこの種のセマンティックロジックに対応する論理のブロック線図を示
している。入力信号「st」を様々な定数と比較して様々な選択信号を形成し、
それらはuser_register仕様書と矛盾しない方法で、状態レジスタ
から或るビットを選択するために使用される。前の状態宣言書を使用して、DA
TAのビット32を第2のユーザレジスタのビット0に配置する。従って、この
図においてMUXの第2入力はDATA状態の32番目のビットに接続されるべ
きである。
【0298】 以下のセマンティックブロックを発生させて、状態「DATA」、「KEYC
」、「KEYD」に汎用レジスタからの値を書き込むことができる。
【数62】
【0299】 図22はi番目のユーザレジスタのk番目のビットに配置される場合の、状態
Sのj番目のビットに対する論理を示している。WUR命令内のuser_re
gister番号「st」が「i」である場合、「ars」のk番目のビットが
S[j]レジスタ内へとロードされ、他の場合には、S[j]の元の値が再循環
される。更に、状態Sのどのビットも再ロードされない場合、信号S_weが可
能化される。
【0300】 TIEのuser_register宣言書が、状態宣言書によって定義され
た付加的なプロセッサ状態から、これらのRUR及びWUR命令により使用され
る識別子へのマッピングを指定して、TIE命令とは別個にこの状態を読み取り
、書き込む。
【0301】 付属書FはRUR及びWUR命令を発生させるコードを示している。
【0302】 RUR及びWURの主な目的はタスク切替えのためである。多重タスク環境で
は、或るスケジューリングアルゴリズムに従って、多数のソフトウエアタスクが
プロセッサを共有する。活動的である場合、タスクの状態はプロセッサレジスタ
内にある。スケジューリングアルゴリズムが別のタスクへの切替えを決定した場
合、プロセッサレジスタに保持されている状態がメモリにセーブされ、別のタス
クの状態がメモリからプロセッサレジスタへとロードされる。Xtensa(登
録商標)命令セットアーキテクチャ(ISA)はISAによって定義される状態
を読み取り、書き込むためのRSR及びWSR命令を含む。例えば、以下のコー
ドはタスク「メモリにセーブ」の一部である。
【数63】
【0303】 また以下のコードはタスク「メモリからリストア」の一部である。
【数64】
【0304】 但し、SAR、LCOUNT、LBEG、LENDはコアXtensa(登録商
標) ISAのプロセッサ状態レジスタ部分であり、ACCLO、ACCHI、
MR_0、MR_1、MR_2、およびMR_3はMAC16 Xtensa(
登録商標) ISAオプションの一部である。(レジスタはパイプラインインタ
ーロックを避けるために、ペアでセーブ・リストアされる。) 設計者がTIEで新しい状態を定義する場合、上記の状態と同様に、タスク切
替えされなければならない。1つの可能性は、設計者が単にタスクスイッチコー
ド(その一部が上述したものである)の編集に進み、次に上記コードに類似した
RUR/S32I及びL32I/WUR命令を付加することであろう。しかしな
がら、ソフトウエアが自動的に発生され、構成によって正しい場合、構成可能プ
ロセッサが最も効果的である。このように、本発明は自動的にタスクスイッチコ
ードを増大させる機構を含んでいる。以下のトップラインが上記セーブタスクに
付加される。
【数65】
【0305】 また以下のラインが上記リストアタスクに付加される。
【数66】
【0306】 最後に、メモリ内のタスク状態エリアはユーザレジスタ記憶装置のために割り
当てられる付加的なスペースを有していなければならないし、またタスクセーブ
ポインタのベースからのこのスペースのオフセットがアッセンブラ定数UEXC
UREGとして定義される。このセーブエリアは以下のコードによって予め定義
されている。
【数67】
【0307】 これは次のように変更される。
【数68】
【0308】 このコードはユーザレジスタ番号のリストと共に、tpp変数@user_r
egistersがあることに依存する。これは単にあらゆるuser_reg
isterステートメントの最初のアーギュメントから作られるリストである。
【0309】 一部の更に複雑なマイクロプロセッサインプリメンテーションでは、異なるパ
イプライン状態で1つの状態を計算することができる。これを処理することは、
ここで説明するプロセスに幾つかのエクステンション(とはいえ簡単なもの)を
必要とする。第1に、セマンティックブロックをパイプライン段階と関連付ける
ことができるようにするために、仕様記述言語を拡張する必要がある。これは幾
つかの方法のうちの1つで達成することができる。一実施形態では、関連するパ
イプライン段階を各セマンティックブロックで明白に指定することができる。別
の実施形態では、パイプライン段階の範囲を各セマンティックブロックのために
指定することができる。更に別の実施形態では、所定のセマンティックブロック
用のパイプライン段階を、必要な計算上の遅延に応じて、自動的に引き出すこと
ができる。
【0310】 異なるパイプライン段階における状態発生をサポートする際の第2のタスクは
、割込み及び特定・機能停止を処理することである。通常これは、パイプライン
制御信号の制御下に、適切なバイパス及びフォワードロジックの追加を含む。一
実施形態では、状態が発生された時とその状態が使用される時との間の関係を示
すために、使用法発生図を発生させることができる。アプリケーション分析に基
づいて、適切なフォワードロジックを実用化して、共通の状況を処理することが
でき、インターロックロジックを発生させて、フォワーディングロジックによっ
て処理されない場合のためにパイプラインを機能停止させることができる。
【0311】 ベースプロセッサの命令発行論理を修正する方法は、ベースプロセッサにより
使用されるアルゴリズムに依存する。しかしながら、概して、ほとんどのプロセ
ッサ用の命令発行論理は、それがシングル・イッシューであろうと、あるいはス
ーパー・スカラーであろうと、シングルサイクル命令用であろうと、あるいは多
重サイクル命令用であろうと、命令が以下の信号を発行するためにテストされる
ことにのみ依存する。 1.命令がその状態をソースとして使用するか否かを各プロセッサ状態成分のた
めに指示する信号; 2.命令がその状態を送出先として使用するか否かを各プロセッサ状態成分のた
めに指示する信号;及び 3.命令が機能単位を使用するか否かを各機能単位のために指示する信号。
【0312】 これらの信号はパイプラインに対する発行及びクロス・イッシューチェックを
実施し、パイプライン依存発行論理におけるパイプライン状態を更新するために
使用される。TIEは新しい命令のために信号及びその式を増加させるために全
ての必要な情報を含んでいる。
【0313】 まず第1に、各TIE状態宣言書が命令発行論理のために新しい信号が作られ
るようにする。iclass宣言に対して第3または第4のアーギュメントに表
記される各inまたはinoutオペランドまたは状態が、指定されたプロセッ
サ状態成分に対する第1組の式に対して、第2のアーギュメントに表記される命
令に対する命令デコード信号を付加する。
【0314】 第2に、iclass宣言に対して第3または第4のアーギュメントに表記さ
れる各outまたはinoutオペランドまたは状態が、指定されたプロセッサ
状態成分に対する第2組の式に対して、第2のアーギュメントに表記される命令
に対する命令デコード信号を付加する。
【0315】 第3に、各TIEセマンティックブロックから作られた論理が新しい機能単位
を表し、新しい単位信号が作られ、セマンティックブロックのために指定された
TIE命令用のデコード信号が共にORされて、第3組の式を形成する。
【0316】 命令が発せられた時、パイプラインステータスを将来の発行決定のために更新
しなければならない。ここでも、ベースプロセッサの命令発行論理を修正する方
法は、ベースプロセッサにより使用されるアルゴリズムに依存する。しかしなが
ら、やはり幾つかの一般的な考察が可能である。パイプラインステータスは発行
論理に対して以下のステータスを戻さなければならない。 4.各々の発行された命令送出先のために、その結果がバイパスのために利用可
能になる時を指示する信号; 5.機能単位が別の命令のために実行可能状態になっていることを、各機能単位
のために示す信号。
【0317】 ここで説明した実施形態は、シングル・イッシュープロセッサであり、設計者
が定義する命令が論理計算のシングルサイクルに制限される。この場合、上記の
ことがかなり簡略化される。機能単位がチェックまたはクロス・イッシューチェ
ックをする必要がなく、如何なるシングルサイクル命令もプロセッサ状態成分を
次の命令のためにパイプレディにすることができない。このように、発行式は以
下のようになる。
【数69】
【0318】 またこの場合、src[i]pipeready信号が付加的な命令による影響
を受けず、またsrc[i]useが上記において説明したように、記述され修
正される第1組の式である。本実施形態では、第4及び第5組の信号を必要とし
ない。マルチサイクルでマルチイッシューである代替実施形態に対しては、各命
令が計算をパイプラインで送るサイクル数を与えるために、TIE仕様記述を待
ち時間仕様記述で増大させるであろう。
【0319】 第4組の信号は、仕様書に従ってその段階において完了する各命令のために、
命令デコード信号を共にORすることによって、各セマンティックブロックパイ
プ段階において発生されるであろう。
【0320】 デフォルトによって、発生された論理が完全にパイプライン化され、TIE発
生機能単位が、1つの命令を受け入れてから1サイクル後に、常にレディになっ
ているであろう。この場合、TIEセマンティックブロック用の第5組の信号が
常に主張される。多数のサイクルに亘ってセマンティックブロック内の論理を再
使用する必要がある場合、機能単位がこのような命令によって如何に多くのサイ
クルで使用されるかを更なる仕様記述が指定するであろう。この場合、その段階
において指定されたサイクルカウントで終了する各命令のために、命令デコード
信号を共にORすることによって、各セマンティックブロックパイプ段階におい
て第5組の信号が発生されるであろう。
【0321】 あるいは、更に異なる実施形態において、設計者が結果レディ信号及び機能単
位レディ信号を指定するように、それはTIEに対するエクステンションとして
残されてもよい。
【0322】 本実施形態により処理されたコードの例が添付付属書に示されている。簡潔さ
のために、これらについて詳細に説明しないが、上述の参照マニュアルを再検討
すれば、当業者によって容易に理解されるであろう。付属書GはTIE言語を用
いた命令の実行例であり、付属書Hはこれらのコードを使用するコンパイラのた
めにTIEコンパイラが発生させるものを示している。同様に、付属書Iはシミ
ュレータのためにTIEコンパイラが発生させるものを示しており、付属書Jは
ユーザアプリケーションにおけるTIE命令を拡大するマクロのためにTIEコ
ンパイラが発生させるものを示しており、付属書Kはネイティブモードにおいて
TIE命令をシミュレートするためにTIEコンパイラが発生させるものを示し
ており、付属書Lは付加的なハードウエアのためのVerilog HDL記述
としてTIEコンパイラが発生させるものを示している。また、付属書Mは上記
のVerilog HDL記述を最適化して、CPU全体のサイズ及び性能に対
するTIE命令のエリア及び速度の影響を推定するために、設計コンパイラスク
リプトとしてTIEコンパイラが発生させるものを示している。
【0323】 上記のように、プロセッサ構成手順を始めるために、ユーザは上述のGUIを
介してベースプロセッサ構成を選択することによって開始する。プロセスの一部
として、ソフトウエア展開システム30が組み立てられ、図1に示すようにユー
ザに送られる。ソフトウエア展開システム30は、図6において詳細に示される
、本発明の別の局面に関する4つの主な成分、つまり、コンパイラ108と、ア
ッセンブラ110と、命令セットシミュレータ112とデバッガ130とを含ん
でいる。
【0324】 当業者に公知であるように、コンパイラはCまたはC++等の高レベルプログ
ラミング言語で書かれたユーザアプリケーションを特定用途用アッセンブリ言語
に変換する。CまたはC++等の高レベルプログラミング言語はアプリケーショ
ンライタが正確に記載するのが容易なフォームでそれらのアプリケーションを記
載できるようにするために設計されている。これらはプロセッサによって理解さ
れる言語ではない。アプリケーションライタは必ずしも使用されるプロセッサの
特殊な特徴について心配する必要はない。多くの異なるタイプのプロセッサに対
して、典型的に同じCまたはC++プログラムをほとんど修正なしに使用するこ
とができる。
【0325】 コンパイラはCまたはC++プログラムをアッセンブリ言語に翻訳する。アッ
センブリ言語は機械言語により近く、プロセッサによって直接サポートされる。
異なるタイプのプロセッサはそれ自体のアッセンブリ言語を有するであろう。各
アッセンブリ命令はしばしば1つの機械命令を表すが、その両者は必ずしも同じ
でなくてもよい。アッセンブリ命令は人間が読むことのできる文字列であるよう
に設計されている。各命令及びオペランドは意味のある名前または簡略記憶であ
り、人間がアッセンブリ命令を読み、機械によってどの操作が行われるかを容易
に理解できるようにする。アッセンブラはアッセンブリ言語から機械言語へと変
換する。各アッセンブリ命令文字列はアッセンブラによって1つ以上の機械命令
へと効率的に符号化され、機械命令はプロセッサによって直接かつ効率的に実行
され得る。
【0326】 機械コードはプロセッサ上で直接実行することができるが、物理的なプロセッ
サは常に直ちに利用できるとは限らない。物理的プロセッサの組立ては時間のか
かる高価なプロセスである。可能性のあるプロセッサ構成を選択する場合、ユー
ザは各々の可能性のある選択のために物理的プロセッサを組み立てることができ
ない。その代わりに、ユーザにはシミュレータと呼ばれるソフトウエアプログラ
ムが提供される。シミュレータ、つまり汎用体コンピュータで実行されるプログ
ラム、はユーザが構成したプロセッサでユーザアプリケーションを実行する効果
をシミュレートすることができる。シミュレータはシミュレートされたプロセッ
サのセマンティクスを真似ることができ、また実際のプロセッサが如何に速くユ
ーザのアプリケーションを実行することができるかをユーザに告げることができ
る。
【0327】 デバッガはユーザがソフトウエアと対話形式で問題を見出すことができるよう
にするツールである。デバッガはユーザが対話形式でそのプログラムを実行する
ことができるようにする。ユーザはいつでもプログラムの実行を停止して、その
Cソースコードまたは結果的に生じるアッセンブリコードまたは機械コードを見
ることができる。また、ユーザはブレークポイントにおいて、変数またはハード
ウエアレジスタのどの値も、あるいは全ての値を調べ、または修正することがで
きる。次に、ユーザは実行を、おそらく一度に1つのステートメント、おそらく
一度に1つの機械命令を、新しいユーザが選択したおそらく1つのブレークポイ
ントまで続けることができる。
【0328】 4つ全ての成分108、110、112、および130はユーザが定義した命
令750(図3を参照)を知っている必要があり、またシミュレータ112及び
デバッガ130も付加的にユーザが定義した状態752を知っていなければなら
ない。システムは、ユーザのC及びC++アプリケーションに付加されるイント
リンシックを介して、ユーザが定義した命令750にユーザがアクセスできるよ
うにする。コンパイラ108はユーザが定義した命令750のためにイントリン
シックコールをアッセンブリ言語命令738に翻訳しなければならない。ユーザ
によって直接書かれたか、またはコンパイラ108によって翻訳された時はいつ
でも、アッセンブラ110は新しいアッセンブリ言語命令738を取り入れ、そ
れらをユーザが定義した命令750に対応する機械命令740に符号化しなけれ
ばならない。シミュレータ112はユーザが定義した機械命令740をデコード
しなければならない。シミュレータ112はその命令のセマンティクスをモデル
化し、構成されたプロセッサ上での命令の性能をモデル化しなければならない。
シミュレータ112はユーザが定義した状態の値及び性能の含意をモデル化しな
ければならない。デバッガ130はユーザが定義した命令750を含むアッセン
ブリ言語命令738をユーザが印刷できるようにしなければならない。またデバ
ッガ130はユーザが定義した状態の値をユーザが調べて修正できるようにしな
ければならない。 本発明のこの局面では、ユーザはツール、つまりTIEコンパイラ702を呼出
して、現在可能性のあるユーザが定義したエンハンスメント736を処理する。
TIEコンパイラ702はユーザアプリケーションをアッセンブリ言語738に
翻訳するコンパイラ708とは異なっている。TIEコンパイラ702は既に組
み立てられているベースソフトウエアシステム30(コンパイラ708、アッセ
ンブリ710、シミュレータ712及びデバッガ730)を可能化して、その新
しいユーザが定義したエンハンスメント736を使用できるようにする成分を組
み立てる。ソフトウエアシステム30の各要素は幾分異なる成分セットを使用す
る。 図24はこれらのソフトウエアツールの特定TIE部分が如何に発生されるかを
示す図である。ユーザが定義したエクステンションファイル736から、TIE
コンパイラ702は幾つかのプログラム用のCコードを発生させ、その各々が、
ユーザが定義した命令及び状態に関する情報のために、1つ以上のソフトウエア
展開ツールによってアクセスされるファイルを作り出す。例えば、プログラムt
ie2gcc800は、xtensa−tie.hと呼ばれるCヘッダファイル
842(下記に詳述する)を発生させ、それは新しい命令に対する組込み関数定
義を含んでいる。プログラムtie2isa810は、動的接続ライブラリ(D
LL)844/848を発生させ、これらはユーザが定義した命令フォーマット
に関する情報(下記に詳述するエンコードDLL844とデコードDLL848
の組み合わせ)を含む。プログラムtie2iss840は性能モデル化及び命
令セマンティクス用のCコード870を発生させ、それは、後述するように、ホ
ストコンパイラ846によって使用され、下記に詳述するように、シミュレータ
712により使用されるシミュレータDLL849を作り出す。プログラムti
e2ver850は適切なハードウエア記述言語でユーザが定義した命令に必要
な記述850を作り出す。最後に、プログラムtie2xtos860は、文脈
切替えのために、ユーザが定義した状態をセーブ・リストアするためのセーブ・
リストアコード810を作り出す。ユーザが定義した状態のインプリメンテーシ
ョンについての付加的な情報は、前述のWangらの出願に見ることができる。コンパイラ708 本実施形態では、コンパイラ708はユーザが定義したエンハンスメント73
6のために、ユーザのアプリケーション内のイントリンシックコールをアッセン
ブリ言語命令738に翻訳する。コンパイラ708はGNUコンパイラ等の標準
コンパイラに見出されるマクロ及びインラインアッセンブリ機構の上で、この機
構を実行する。これらの機構に関する更に詳しい情報については、GNU C及
びC++コンパイラユーザガイド、EGCSバージョン1.0.3を参照。
【0329】 2台のレジスタで操作し、結果を第3のレジスタに戻す新しい命令fooを作
りたいと望むユーザを考えてみよう。ユーザは特別なディレクトリ内のユーザが
定義した命令ファイル750に命令記述を置き、TIEコンパイラ702を呼出
す。TIEコンパイラ702はxtensa−tie.h等の標準の名前を付け
たファイルを作り出す。このファイルはfooについての以下の定義を含んでい
る。
【数70】
【0330】 ユーザがそのアプリケーションでコンパイラ708を呼出した時、ユーザは、コ
マンドラインオプションを介して、あるいは環境変数を介して、ユーザが定義し
たエンハンスメント736を備えたディレクトリの名前をコンパイラ708に告
げる。そのディレクトリはxtensa−tie.hファイル742も含んでい
る。コンパイラ708は、あたかもユーザ自身でfooの定義を書いたかのよう
に編集されているユーザのCまたはC++アプリケーションプログラム内に、フ
ァイルxtensa−tie.hを自動的に含める。ユーザはイントリンシック
コールをユーザアプリケーション内の命令fooに含んでいる。この含まれてい
る定義のために、コンパイラ708はこれらのイントリンシックコールを含まれ
た定義に対する呼出しとして処理する。コンパイラ708により提供される標準
のマクロ機構に基づいて、コンパイラ708は、あたかもユーザがマクロコール
ではなく、アッセンブリ言語ステートメント738を直接書いたかのように、そ
のマクロfooに対する呼出しを処理する。つまり、標準のインラインアッセン
ブリ機構に基づいて、コンパイラ708はその呼出しを1つのアッセンブリ命令
fooに翻訳する。例えば、ユーザはイントリンシックfooに対する呼出しを
含む関数を有しているかもしれない。
【数71】
【0331】 コンパイラはユーザが定義したイントリンシックfooを使用して、その関数を
以下のアッセンブリ言語サブルーチンに翻訳する。
【数72】
【0332】 ユーザが新しいユーザ定義エンハンスメント736のセットを作成する場合、
新しいコンパイラを再構築する必要はない。TIEコンパイラ702が単にファ
イルxtensa−tie.h742を作成し、それは予め構築されているコン
パイラ78によって、ユーザのアプリケーション内に自動的に包含される。アッセンブラ710 本実施形態では、アッセンブラ710がエンコードライブラリ744を使用し
て、アッセンブリ命令750を符号化する。このライブラリ744に対するイン
ターフェイスは以下の機能を含む: ・ 操作符号の簡略記憶文字列を内部操作符号表現に翻訳する; ・ 機械命令740内の操作符号フィールド用の各操作符号のために発生すべき
ビットパターンを提供する;そして ・ 各命令オペランドに対するオペランド値を符号化し、その符号化されたオペ
ランドビットパターンを機械命令740のオペランドフィールドに挿入する。
【0333】 一例として、イントリンシックfooを呼出すユーザ関数の以前の例を考えて
みよう。アッセンブラは「foo a2、a2、a3」命令を取り入れ、それを
16進数0x62230により表される機械命令に変換する。この場合、上位の
6と下位の0は共にfooに対する操作符号を表し、2、2、3は各々3つのレ
ジスタa2、a2、a3を表す。
【0334】 これらの関数の内部インプリメンテーションはテーブルと内部関数の組み合わ
せに基づいている。テーブルはTIEコンパイラ702によって容易に発生され
るが、その表現能力は制限される。例えば、オペランド符号化関数を表す時等、
更に柔軟性が必要である場合、TIEコンパイラ702はライブラリ744に含
まれるべき任意のCコードを発生させることができる。
【0335】 再び「foo a2、a2、a3」の例を考えてみよう。全てのレジスタフィ
ールドはレジスタ番号で単に符号化される。TIEコンパイラ702は合法的レ
ジスタ値に対してチェックする以下の関数を作り出し、その値がリーガルである
場合、そのレジスタ番号を戻す。
【数73】
【0336】 全ての符号化が簡単である場合、符号化関数は必要ではないであろう。1つの
テーブルで充分であろう。しかしながら、ユーザはもっと複雑な符号化を選ぶこ
とが許される。TIE言語で記述された以下の符号化は、1024で割られたオ
ペランドの値である数で、全てのオペランドを符号化する。このような符号化は
1024の倍数であることが必要な値を密集して符号化するのに有用である。
【数74】
【0337】 TIEコンパイラはオペランド符号化記述を以下のC関数に変換する。
【数75】
【0338】 そのオペランドにとって可能な値の領域が非常に大きいので、このような符号化
のために1つのテーブルを使用することができない。1つのテーブルは非常に大
きくなければならないであろう。
【0339】 エンコードライブラリ744の実施形態では、1つのテーブルが内部操作符号
表示に対して操作符号簡略記憶文字列を配置する。効率のために、このテーブル
は分類されてもよいし、あるいはそれはハッシュテーブルまたは効率的なサーチ
を許容する他のデータ構造であってもよい。別のテーブルが各操作符号を機械命
令のテンプレートに配置し、その操作符号フィールドがその操作符号用の適切な
ビットパターンに初期化される。同じオペランドフィールドとオペランドエンコ
ードを備えた操作符号が共にグループ分けされる。これらのグループの1つにあ
る各操作符号のために、ライブラリはオペランド値をビットパターンに符号化す
るための関数と、これらのビットを機械命令内の適切なフィールドに挿入するた
めの別の関数とを含んでいる。別の内部テーブルが各命令オペランドをこれらの
関数に対して配置する。結果レジスタ番号が命令のビット12..15に符号化
された例を考えてみよう。TIEコンパイラ702は以下の関数を発生させ、そ
れは命令のビット12..15に結果レジスタの値(番号)を設定する。
【数76】
【0340】 アッセンブラ710を再構築することなく、ユーザが定義した命令を変更でき
るようにするために、エンコードライブラリ744は動的に接続されたライブラ
リ(DLL)として実用化される。DLLはプログラムがその機能性を動的に伸
ばすことができるようにする標準的な方法である。DLL処理についての詳細は
異なるホストオペレーティングシステムに応じて変化するが、基本的なコンセプ
トは同じである。DLLはプログラムコードのエクステンションとして実行中の
プログラムに動的にロードされる。ランタイムリンカがDLLと主プログラム間
、及びDLLと既にロードされている他のDLL間の象徴的な関係を決定する。
エンコードライブラリまたはDLL744の場合、コードのほんの一部がアッセ
ンブラ710に静的に結び付けられる。このコードはDLLをロードすること、
予め組み立てられている命令セット746用の既存のエンコード情報(これは別
のDLLからロードされていてもよい)とDLL内の情報を組み合わせること、
また上述のインターフェイス機能を介してその情報をアクセス可能にすることに
対して責任がある。
【0341】 ユーザが新しいエンハンスメント736を作り出す場合、ユーザはエンハンス
メント736の記述に対してTIEコンパイラ702を呼出す。TIEコンパイ
ラ702は内部テーブルと、そのエンコードDLL744を実用化する関数とを
定義するCコードを発生させる。次にTIEコンパイラ702はホストシステム
コンパイラ746(これは構成中のプロセッサではなく、むしろホストに対して
実行するコードを編集する)を呼出して、ユーザが定義した命令750に対して
該エンコードDLL144を作成する。ユーザはユーザが定義したエンハンスメ
ント736を含むディレクトリを指摘するフラグまたは環境変数を備えたアプリ
ケーションで、予め組み立てられているアッセンブラ710を呼出す。予め組み
立てられているアッセンブラ710はそのディレクトリ内のDLL744を動的
に開く。各アッセンブリ命令に対して、予め組み立てられているアッセンブラ7
10は該エンコードDLL744を使用して操作符号簡略記憶を調べ、機械命令
内の操作符号フィールドに対するビットパターンを見つけ、各命令オペランドを
符号化する。
【0342】 例えば、アッセンブラ710がTIE命令「foo a2、a2、a3」を参
照する場合、アッセンブラ710は1つのテーブルから、「foo」操作符号が
ビット位置16〜23において数字6に訳すことを見る。1つのテーブルから、
アッセンブラ710は各レジスタ用の符号化関数を見つける。それらの関数はa
2を数字2に符号化し、もう1つのa2を数字2に、またa3を数字3に符号化
する。1つのテーブルから、アッセンブラ710は適当な集合関数を見つける。
Set_r_fieldがその結果値2を命令のビット位置12..15に置く
。同様の集合関数が他の2と3を適宜配置する。シミュレータ712 シミュレータ712は幾つかの方法でユーザが定義したエンハンスメント73
6と相互作用する。機械命令740を仮定すれば、シミュレータ712は該命令
を復号化、つまり、該命令を成分操作符号とオペランドに分解しなければならな
い。ユーザが定義したエンハンスメント736のデコーディングはデコードDL
L748内の関数を介して行われる(エンコードDLL744とデコードDLL
748は実際には1台のDLLであることも可能である)。例えば、ユーザが各
々命令ビット16〜23におけるエンコーディング0x6、0x16、0x26
及びビット0〜3における0で、3つの操作符号;foo1と、foo2とfo
o3とを定義する場合を考えてみよう。TIEコンパイラ702は以下のデコー
ド関数を発生させ、それはその操作符号を全てのユーザが定義した命令750の
操作符号と比較する。
【数77】
【0343】 ユーザが定義した多数の命令750があるので、全ての可能なユーザ定義命令
750に対して操作符号を比較することはコストがかかり、そこでTIEコンパ
イラはその代わりにスイッチステートメントの階層的セットを使用することがで
きる。
【数78】
【0344】 デコーディング命令操作符号に加えて、デコードDLL748は命令オペラン
ドをデコードするための関数を含んでいる。これはエンコードDLL744にお
けるオペランドのエンコーディングと同じ方法で行われる。まず第1に、デコー
ドDLL748は機械命令からオペランドフィールドを抽出するための関数を提
供する。前の例を続けて、TIEコンパイラ702は1つの命令のビット12〜
15から値を抽出するために以下の関数を発生させる。
【数79】
【0345】 オペランドのTIE記述はエンコーディング及びデコーディング両方の仕様記
述を含むので、エンコードDLL744がオペランドエンコード仕様記述を使用
する一方、デコードDLL748がオペランドデコード仕様記述を使用する。例
えば、以下のTIEオペランド仕様記述:
【数80】
【0346】 は以下のオペランドデコード関数を作り出す:
【数81】
【0347】 ユーザがシミュレータ712を呼出す場合、ユーザはユーザが定義したエンハ
ンスメント736に対するデコードDLL748を含むディレクトリをシミュレ
ータ712に告げる。シミュレータ712は適切なDLLを開く。シミュレータ
712が命令をデコードする時はいつでも、その命令が予め組立てられている命
令セット用のデコード関数によってうまくデコードされない場合、シミュレータ
712はDLL748内のデコード関数を呼出す。
【0348】 デコードされた命令750を仮定すると、シミュレータ712はその命令75
0のセマンティクスを解釈してモデル化しなければならない。これは機能的に行
われる。全ての命令750が対応する関数を有しており、それはシミュレータ7
12が該命令750のセマンティクスをモデル化できるようにする。シミュレー
タ712はシミュレートされたプロセッサのあらゆる状態のトラックを内部的に
保持している。シミュレータ712はプロセッサ状態を更新するか、あるいは尋
ねるために固定されたインターフェイスを有している。上述のように、ユーザが
定義したエンハンスメント736は、VerilogのサブセットであるTIE
ハードウエア記述言語で書かれる。新しいエンハンスメント736をモデル化す
るために、TIEコンパイラ702はハードウエア記述を、シミュレータ712
が使用するC関数に変換する。ハードウエア記述言語の演算子は対応するC演算
子に直接翻訳される。プロセッサ状態を更新するか、あるいは尋ねるために、状
態を読み取るか、または状態を書き込む操作がシミュレータインターフェイスに
翻訳される。
【0349】 本実施形態の一例として、ユーザが2つのレジスタに加えるために1つの命令
750を作成する場合を考えてみよう。簡略化のためにこの例を選んだ。ハード
ウエア記述言語で、ユーザは以下のように、追加のセマンティクスを記述するか
もしれない:
【数82】
【0350】 内蔵されている名前arrによって示される出力レジスタが、内蔵されている
名前arsとartによって示される2つの入力レジスタの合計に指定される。
TIEコンパイラ702はこの記述を認めて、シミュレータ712が使用するセ
マンテック関数を発生させる。
【数83】
【0351】 ハードウエア演算子「+」はC演算子「+」に直接翻訳される。ハードウエア
レジスタarsとartの読取りがシミュレータ712関数呼出し「ar」の呼
出しに翻訳される。ハードウエアレジスタarrの書込みがシミュレータ712
関数「set_ar」に対する呼出しに翻訳される。あらゆる命令がプログラム
カウンタpcを命令のサイズ分だけ明白に増分するので、TIEコンパイラ70
2は、追加(add)命令のサイズである3だけsimulatedpcを増分
するシミュレータ712関数に対する呼出しを発生させる。
【0352】 TIEコンパイラ702が呼出されると、TIEコンパイラ702は上述のよ
うにあらゆるユーザ定義命令のためにセマンティック関数を作成する。また関連
するセマンティック関数に対する全ての操作符号名を配置するテーブルも作成す
る。該テーブル及び関数は標準のコンパイラ746を使用してシミュレータDL
L749内に編集される。ユーザがシミュレータ712を呼出すと、ユーザはユ
ーザが定義したエンハンスメント736を含むディレクトリをシミュレータ71
2に告げる。シミュレータ712は適切なDLLを開く。シミュレータ712が
呼出される時はいつでも、シミュレータ712はプログラム内の全ての命令をデ
コードして、関連するセマンティック関数に対して命令を配置するテーブルを作
成する。マッピングを作成する場合、シミュレータ712はDLLを開き、適当
なセマンティック関数をサーチする。ユーザ定義命令736のセマンティクスを
シミュレートする場合、シミュレータ712はDLL内の関数を直接呼出す。
【0353】 シミュレートされたハードウエアでアプリケーションを実行するのにどの位の
時間がかかるかをユーザに告げるために、シミュレータ712は命令750の性
能効果をシミュレートすることが必要である。シミュレータ712はこの目的の
ためにパイプラインモデルを使用する。あらゆる命令が幾つかのサイクルに亘っ
て実行する。各サイクルにおいて、命令は機械の異なる資源を使用する。シミュ
レータ712は全ての命令を平行して実行しようとし始める。多数の命令が同じ
サイクルにおいて同じ資源を使用しようとすれば、遅い方の命令は資源が自由に
なるのを待って立ち往生する。遅い方の命令が後のサイクルにおいて、早い方の
命令によって書かれた状態を読む場合、遅い方の命令は書かれた値を待って立ち
往生する。シミュレータ712は各命令の性能をモデル化するために機能的イン
ターフェイスを使用する。あらゆるタイプの命令のために1つの関数が作られる
。その関数はプロセッサの性能をモデル化するシミュレータのインターフェイス
に対する呼出しを含んでいる。
【0354】 例えば、簡単な3レジスタ命令fooを考えてみよう。TIEコンパイラは以
下のシミュレータ関数を作成するかもしれない:
【数84】
【0355】 pipe_use_ifetchに対する呼出しが、命令が3バイトをフェッ
チすることを必要としていることをシミュレータ712に伝える。pipe_u
seに対する2つの呼出しが、2つの入力レジスタがサイクル1において読み取
られることをシミュレータ712に伝える。pipe_defに対する呼出しが
、出力レジスタがサイクル2において書き込まれることをシミュレータ712に
伝える。pipe_def_ifetchに対する呼出しが、この命令はブラン
チではなく、従って次の命令を次のサイクルでフェッチできることをシミュレー
タ712に伝える。
【0356】 これらの関数に対するポインタがセマンテック関数と同じテーブルに置かれる
。関数自体はセマンテック関数と同じDLL749内に編集される。シミュレー
タ712が呼出されると、シミュレータ712は命令と性能関数間のマッピング
を作成する。マッピングを作成する場合、シミュレータ712はDLL749を
開いて、適当な性能関数をサーチする。ユーザ定義命令736の性能をシミュレ
ートする場合、シミュレータ712はDLL749内の関数を直接呼出す。デバッガ730 デバッガはユーザが定義したエンハンスメント750と2つの方法で相互作用
する。これを実施するために、デバッガ730は機械命令740をアッセンブリ
命令738にデコードしなければならない。これは命令をデコードするためにシ
ミュレータ712が使用するのと同じ機構であり、デバッガ730は好ましくは
デコーディングを行うためにシミュレータ712が使用するのと同じDLLを使
用する。命令のデコーディングに加えて、デバッガはデコードされた命令を文字
列に変換しなければならない。この目的のために、デコードDLL748は各々
の内部操作符号表示を対応する簡略記憶文字列に配置するための関数を含む。こ
れは簡単なテーブルを用いて実行できる。
【0357】 ユーザはユーザが定義したエンハンスメント750を含むディレクトリを指摘
するフラグまたは環境変数を備えた予め組み立てられているデバッガを呼出すこ
とができる。予め組み立てられているデバッガは適当なDLL748を動的に開
く。
【0358】 更に、デバッガ730はユーザが定義した状態752とも相互作用する。デバ
ッガ730はその状態752を読み取り、修正できなければならない。それを実
施するために、デバッガ730はシミュレータ712と通信する。デバッガ73
0はシミュレータ712に対して、該状態がどの程度の大きさであるか、また該
状態変数の名前が何であるかを尋ねる。デバッガ730が一部のユーザ状態の値
を印刷するように求められた時はいつでも、予め定義されている状態について請
求するのと同じ方法で、デバッガ730はその値をシミュレータ712に尋ねる
。同様に、ユーザ状態を修正するために、デバッガ730は所定の値に状態を設
定するようにシミュレータ712に伝える。
【0359】 このように、本発明によるユーザが定義した命令セット及び状態に対するサポ
ートのインプリメンテーションは、コアソフトウエア展開ツールにプラグインさ
れるユーザ機能性を定義するモジュールを用いて達成することができる。このよ
うに、ユーザが定義したエンハンスメントの特定セットのためのプラグインモジ
ュールが、組織及び操作の容易さのために、システム内で1つのグループとして
維持されるシステムを開発することができる。
【0360】 更に、コアソフトウエア展開ツールは特定のコア命令セット及びプロセッサ状
態にとって特有のものであってよく、ユーザが定義したエンハンスメント用の一
組のプラグインモジュールを、システムに存在する多数組のコアソフトウエア展
開ツールとの関連で評価してもよい。
【図面の簡単な説明】
本発明の上記および他の目的は、添付図面とともに行われる上記の詳細な説明
を読む場合容易に明らかになる。
【図1】 本発明の好ましい実施例による命令セットを実行するプロセッサのブロック図
である。
【図2】 本実施例によるプロセッサで使用されるパイプラインのブロック図である。
【図3】 本実施例によるGUIの構成マネージャを示している。
【図4】 本実施例によるGUIの構成エディタを示している。
【図5】 本実施例による異なる種類の構成可能性を示している。
【図6】 本実施例のプロセッサ構成のフローを示すブロック図である。
【図7】 本実施例による命令セットシミュレータのブロック図である。
【図8】 本実施例により構成されたプロセッサと併用するためのエミュレーションボー
ドのブロック図である。
【図9】 本実施例による構成可能なプロセッサの論理アーキテクチャを示すブロック図
である。
【図10】 図9のアーキテクチャへの乗算器の付加を示すブロック図である。
【図11】 図9のアーキテクチャへの乗算‐累算装置の付加を示すブロック図である。
【図12】 本実施例のメモリの構成を示す図である。
【図13】 本実施例のメモリの構成を示す図である。
【図14】 図8のアーキテクチャのユーザ定義の機能装置の付加を示す図である。
【図15】 図8のアーキテクチャのユーザ定義の機能装置の付加を示す図である。
【図16】 他の好ましい実施例のシステム構成要素間の情報のフローを示すブロック図で
ある。
【図17】 いかにカスタムコードが本実施例のソフトウエア開発ツールのために生成され
るかを示すブロック図である。
【図18】 本発明の他の好ましい実施例で使用されるいろいろのソフトウエアモジュール
の生成を示すブロック図である。
【図19】 本実施例による構成可能なプロセッサのパイプライン構造のブロック図である
【図20】 本実施例によるゲートレジスタインプリメンテーションである。
【図21】 本実施例で状態レジスタインプリメンテーションを実行するのに必要である付
加ロジックの図である。
【図22】 本実施例によるいろいろのセマンティックブロックおよび選択ブロックから状
態レジスタの入力への状態の次の状態出力の結合を示す図である。
【図23】 本実施例によるセマンティックロジックに対応するロジックを示している。
【図24】 状態のビットが本実施例のユーザレジスタのビットにマッピングされる場合、
状態のビットのためのロジックを示している。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/322,735 (32)優先日 平成11年5月28日(1999.5.28) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,UA,UG,UZ ,VN,YU,ZA,ZW (72)発明者 ゴンザレス、リカルド・イー アメリカ合衆国、カリフォルニア州 94025 メンロ・パーク、ミドル・アベニ ュー 1026、アパートメント・ディー (72)発明者 ディキシット、アシシュ・ビー アメリカ合衆国、カリフォルニア州 94040 マウンテン・ビュー、ステイシ ー・コート 3419 (72)発明者 ラム、モニカ アメリカ合衆国、カリフォルニア州 94025 メンロ・パーク、セミナリー・ド ライブ 184 (72)発明者 リヒテンシュタイン、ワルター・ディー アメリカ合衆国、マサチューセッツ州 02478 ベルモント、エルム・ストリート 22 (72)発明者 ローエン、クリストファー アメリカ合衆国、カリフォルニア州 95060 サンタ・クルズ、ミッション・ス トリート 210 (72)発明者 ルッテンバーグ、ジョン アメリカ合衆国、マサチューセッツ州 04168 ニュートン、ホリー・ロード 8 (72)発明者 ウィルソン、ロバート・ピー アメリカ合衆国、カリフォルニア州 94303 パロ・アルト、ウインターグリー ン・ウェイ 849 (72)発明者 ワン、アルバート・レン−ルイ アメリカ合衆国、カリフォルニア州 94539 フレモント、ハンター・レーン 863 (72)発明者 メイダン、ドロール・エリーザー アメリカ合衆国、カリフォルニア州 94301 パロ・アルト、パーキンソン・ア ベニュー 1314 (72)発明者 ジアン、ウェン・キアン アメリカ合衆国、マサチューセッツ州 04168 ニュートン、ホリー・ロード 8 (72)発明者 ルデル、リチャード アメリカ合衆国、カリフォルニア州 95030 ロス・ガトス、ワイルダー・アベ ニュー 146 Fターム(参考) 5B042 GA13 HH07 HH20 HH32 5B046 AA08 BA02 5B081 AA07 AA10 CC11 CC51

Claims (136)

    【特許請求の範囲】
  1. 【請求項1】 構成仕様に基づいてプロセッサのハードウエアインプリメン
    テーションの記述を生成する手段と、 前記構成仕様に基づいて、前記ハードウエアインプリメンテーションに特有の
    ソフトウエア開発ツールを生成する手段と、 を備えている構成可能なプロセッサを設計するシステム。
  2. 【請求項2】 前記ソフトウエア開発ツールを生成する手段が、前記プロセ
    ッサで実行するコードを生成できるソフトウエア開発ツールを生成する手段を含
    む請求項1のシステム。
  3. 【請求項3】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、ア
    プリケーションを前記プロセッサによって実行可能なコードにコンパイルするコ
    ンパイラを含む請求項1のシステム。
  4. 【請求項4】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、ア
    プリケーションを前記プロセッサによって実行可能なコードにアセンブルするア
    センブラを含む請求項1のシステム。
  5. 【請求項5】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、前
    記プロセッサによって実行可能なコードをリンクするリンカを含む請求項1のシ
    ステム。
  6. 【請求項6】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、前
    記プロセッサによって実行可能なコードを逆アセンブルする逆アセンブラを含む
    請求項1のシステム。
  7. 【請求項7】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、前
    記プロセッサによって実行可能なコードをデバッグするデバッガを含む請求項1
    のシステム。
  8. 【請求項8】 前記デバッガが、命令セットシミュレータおよびハードウエ
    アインプリメンテーションのための共通インタフェースおよび構成を含む請求項
    7のシステム。
  9. 【請求項9】 前記ソフトウエア開発ツールが、構成仕様に合わせられ、前
    記プロセッサによって実行可能なコードをシミュレートする命令セットシミュレ
    ータを含む請求項1のシステム。
  10. 【請求項10】 前記命令セットシミュレータが、実行のサイクルを含む基
    本的な性能基準を測定するようにシミュレートされるコードの実行をモデル化で
    きる請求項9のシステム。
  11. 【請求項11】 前記性能基準が特定の構成可能なマイクロアーキテクチャ
    機能を基づいている請求項10のシステム。
  12. 【請求項12】 前記命令セットシミュレータが、各シミュレートされた機
    能で実行される多数のサイクルを含む基準プロファイリング統計を記録するよう
    にシミュレートされるプログラムの実行をプロファイルできる請求項10のシス
    テム。
  13. 【請求項13】 前記ハードウエアインプリメンテーション記述が、詳細H
    DLハードウエアインプリメンテーション記述、統合スクリプト、場所およびル
    ートのスクリプト、プログラム可能論理装置スクリプト、テストベンチ、検証の
    ための診断テスト、シミュレータで診断テストを実行するスクリプト、およびテ
    ストツールの少なくとも1つを含む請求項1のシステム。
  14. 【請求項14】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、 前記ハードウエアインプリメンテーション記述のハードウエア記述言語記述を
    生成する手段と、 前記ハードウエア記述言語記述に基づいて前記ハードウエアインプリメンテー
    ションのためのロジックを統合する手段と、 回路を形成するために統合ロジックに基づいて構成要素をチップ上に配置し、
    かつ経路選択する手段とを備えている請求項1のシステム。
  15. 【請求項15】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、 前記回路のタイミングを検証する手段と、 前記回路の面積、サイクル時間および電力消費を決定する手段とをさらに含む
    請求項14のシステム。
  16. 【請求項16】 前記構成仕様を生成する手段をさらに含む請求項1のシス
    テム。
  17. 【請求項17】 前記構成仕様を生成する手段が、ユーザによる構成パラメ
    ータの選択に応動する請求項16のシステム。
  18. 【請求項18】 前記構成仕様を生成する手段が、前記プロセッサのための
    設計目標に応じて前記仕様を生成するためのものである請求項16のシステム。
  19. 【請求項19】 前記構成仕様が、前記プロセッサの変更可能な特性の少な
    くとも1つのパラメータ仕様を含む請求項1のシステム。
  20. 【請求項20】 前記少なくとも1つのパラメータ仕様が、機能ユニットの
    包含および前記機能ユニットを作動させる少なくとも1つのプロセッサ命令を指
    定する請求項19のシステム。
  21. 【請求項21】 前記少なくとも1つのパラメータ仕様構成が、プロセッサ
    状態に影響を及ぼす構造の包含、除外および特性の1つを指定する請求項19の
    システム。
  22. 【請求項22】 前記構造がレジスタファイルであり、かつ前記パラメータ
    仕様が前記レジスタファイルのレジスタ数を指定する請求項21のシステム。
  23. 【請求項23】 前記構造が命令キャッシュである請求項21のシステム。
  24. 【請求項24】 前記構造がデータキャッシュである請求項21のシステム
  25. 【請求項25】 前記構造が書き込みバッファである請求項21のシステム
  26. 【請求項26】 前記構造がオンチップROMおよびオンチップRAMの1
    つである請求項21のシステム。
  27. 【請求項27】 前記少なくとも1つのパラメータ仕様が、前記プロセッサ
    のデータおよび命令の少なくとも1つの解釈を制御するセマンティック特性を指
    定する請求項19のシステム。
  28. 【請求項28】 前記少なくとも1つのパラメータ仕様が、前記プロセッサ
    の命令を制御する実行特性を指定する請求項19のシステム。
  29. 【請求項29】 前記少なくとも1つのパラメータ仕様が前記プロセッサの
    デバッグ特性を指定する請求項19のシステム。
  30. 【請求項30】 前記構成仕様が、所定の特性の選択、プロセッサ要素のサ
    イズあるいは数、および値の割当ての少なくとも1つを指定するパラメータ仕様
    を含む請求項19のシステム。
  31. 【請求項31】 前記構成仕様の適否を評価する手段をさらに含む請求項1
    のシステム。
  32. 【請求項32】 前記評価する手段が、対話型推定ツールを含む請求項31
    のシステム。
  33. 【請求項33】 前記評価する手段が、前記構成仕様によって記述されたプ
    ロセッサのハードウエア特性を評価するためのものである請求項31のシステム
  34. 【請求項34】 前記評価する手段が、前記プロセッサの推定性能特性に基
    づいて前記構成仕様の適否を評価するためのものである請求項31のシステム。
  35. 【請求項35】 前記推定性能特性に基づいて前記構成仕様の変更を可能に
    する情報を供給する手段をさらに含む請求項34のシステム。
  36. 【請求項36】 前記性能特性が、チップ上に前記プロセッサを実現するの
    に必要とされる面積、前記プロセッサによって消費される電力、および前記プロ
    セッサのクロック速度の少なくとも1つを含む請求項34のシステム。
  37. 【請求項37】 前記評価する手段が、前記プロセッサの推定ソフトウエア
    特性に基づいて前記構成仕様の適否を評価するためのものである請求項31のシ
    ステム。
  38. 【請求項38】 前記評価する手段が、コードサイズおよび前記構成仕様に
    よって記述されたプロセッサ上で一連のベンチマークプログラムを実行するのに
    必要とされるサイクルの少なくとも1つを推定することによって適否評価を対話
    してユーザに表示するためのものである請求項37のシステム。
  39. 【請求項39】 前記評価する手段が、前記構成仕様によって記述されたプ
    ロセッサのハードウエア特性およびソフトウエア特性を評価するためのものであ
    る請求項31のシステム。
  40. 【請求項40】 前記発生する手段が、さらに前記構成仕様の変更を容易に
    するためにハードウエア性能およびコストおよびソフトウエアプリケーション性
    能の特徴付けを一緒に行うためのものである請求項1のシステム。
  41. 【請求項41】 前記発生する手段が、さらに前記構成仕様の拡張を容易に
    するためにハードウエア性能およびコストおよびソフトウエアプリケーション性
    能の特徴付けを一緒に行うためのものである請求項1のシステム。
  42. 【請求項42】 前記発生する手段が、さらに前記構成仕様の拡張を容易に
    するためにハードウエア性能およびコストおよびソフトウエアプリケーション性
    能の特徴付けを一緒に行うためのものであり、かつ前記構成仕様の拡張を容易に
    するためにハードウエア性能およびコストおよびソフトウエアプリケーション性
    能の特徴付けを一緒に行うためのためのものである請求項1のシステム。
  43. 【請求項43】 拡張によって前記プロセッサの構成を生成する手段をさら
    に含む請求項1のシステム。
  44. 【請求項44】 前記構成仕様が、前記プロセッサの拡張可能な特性の少な
    くとも1つの拡張仕様を含む請求項1のシステム。
  45. 【請求項45】 前記拡張仕様が、付加命令を指定する請求項44のシステ
    ム。
  46. 【請求項46】 前記拡張仕様が、ユーザ定義の命令の包含および前記命令
    のためのインプリメンテーションを指定する請求項44のシステム。
  47. 【請求項47】 前記ソフトウエア開発ツールを生成する手段が、少なくと
    も1つのアプリケーションに特に適しているユーザポテンシャルユーザ定義の命
    令に示唆する手段を含む請求項46のシステム。
  48. 【請求項48】 前記ソフトウエア開発ツールが、ユーザ定義の命令を生成
    できるコンパイラを含む請求項46のシステム。
  49. 【請求項49】 前記コンパイラがユーザ定義の命令を含むコードを最適化
    できる請求項48のシステム。
  50. 【請求項50】 前記ソフトウエア開発ツールが、前記ユーザ定義の命令を
    生成できるアセンブラ、前記ユーザ定義の命令を使用するユーザコードの実行を
    シミュレートできるシミュレータ、および前記ユーザ定義の命令のユーザインプ
    リメンテーションを検証できるツールの少なくとも1つを含む請求項46のシス
    テム。
  51. 【請求項51】 前記コンパイラが、付加命令を自動的に生成できる請求項
    45のシステム。
  52. 【請求項52】 前記拡張仕様が、ユーザによって抽象形式で実質的に設計
    された機能性を有する新しい特性を指定し、かつ前記ハードウエアインプリメン
    テーション記述を生成する手段が、さらに前記新しい特性を再定義し、かつ前記
    詳細ハードウエアインプリメンテーション記述に統合するためのものである請求
    項44のシステム。
  53. 【請求項53】 前記拡張仕様が、演算符号割当および命令セマンティック
    を指定する命令セットアーキテクチャ言語におけるステートメントである請求項
    52のシステム。
  54. 【請求項54】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、前記命令セットアーキテクチャ言語定義から命令復号化ロジックを生成
    する手段を含む請求項53のシステム。
  55. 【請求項55】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、前記命令セットアーキテクチャ言語定義に基づいて命令インターロック
    およびストールロジックのためのレジスタオペランド使用を指定する信号を発生
    する手段を含む請求項54のシステム。
  56. 【請求項56】 前記ソフトウエア開発ツールを生成する手段が、前記構成
    仕様に合わせられた命令セットシミュレータで使用される命令復号化処理を生成
    する手段を含む請求項52のシステム。
  57. 【請求項57】 前記ソフトウエア開発ツールを生成する手段が、前記構成
    仕様に合わせられたアセンブラで使用される符号化テーブルを生成する手段を含
    む請求項52のシステム。
  58. 【請求項58】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、さらに前記新しい特性のためのデータパスハードウエアの記述を生成す
    るためのものであり、前記データパスハードウエアが、前記プロセッサの特定の
    パイプラインアーキテクチャと一致する請求項52のシステム。
  59. 【請求項59】 前記付加命令が、新しい状態を前記プロセッサに全然付加
    しない請求項44のシステム。
  60. 【請求項60】 前記付加命令が、状態を前記プロセッサに付加する請求項
    44のシステム。
  61. 【請求項61】 前記構成仕様が、命令セットアーキテクチャ記述言語記述
    によって指定される少なくとも一部を含む請求項1のシステム。
  62. 【請求項62】 前記ハードウエアインプリメンテーション記述を生成する
    手段が命令復号化ロジックを前記命令セットアーキテクチャ言語記述から自動的
    に生成する手段を含む請求項61のシステム。
  63. 【請求項63】 前記ソフトウエア開発ツールを生成する手段が、アセンブ
    ラコアを前記命令セットアーキテクチャ言語記述から自動的に生成する手段を含
    む請求項61のシステム。
  64. 【請求項64】 前記ソフトウエア開発ツールを生成する手段が、コンパイ
    ラを前記命令セットアーキテクチャ言語記述から自動的に生成する手段を含む請
    求項61のシステム。
  65. 【請求項65】 前記ソフトウエア開発ツールを生成する手段が、逆アセン
    ブラを前記命令セットアーキテクチャ言語記述から自動的に生成する手段を含む
    請求項61のシステム。
  66. 【請求項66】 前記ソフトウエア開発ツールを生成する手段が、命令セッ
    トシミュレータを前記命令セットアーキテクチャ言語記述から自動的に生成する
    手段を含む請求項61のシステム。
  67. 【請求項67】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、前記構成仕様に基づいて前記ハードウエアインプリメンテーション記述
    および前記ソフトウエアツールのそれぞれを変更するために前記ハードウエアイ
    ンプリメンテーション記述および前記ソフトウエア開発ツールの少なくとも1つ
    の一部を前処理する手段を含む請求項1のシステム。
  68. 【請求項68】 前記前処理する手段が、前記ハードウエアインプリメンテ
    ーション記述および前記ソフトウエア開発ツールの中の1つの式の数値を求め、
    かつ前記構成仕様に基づいて前記式を値と取り換えるためのものである請求項6
    7のシステム。
  69. 【請求項69】 前記式が、対話型構成子、条件付構成子およびデータベー
    ス問い合わせの少なくとも1つを含む請求項68のシステム。
  70. 【請求項70】 前記構成仕様が、前記プロセッサの変更可能な特性を指定
    する少なくとも1つのパラメータ仕様および前記プロセッサの拡張可能な特性を
    指定する少なくとも1つの拡張仕様を含む請求項1のシステム。
  71. 【請求項71】 前記変更可能な特性が、前記コア仕様の変更および前記変
    更仕様に指定されない選択機能の1つである請求項70のシステム。
  72. 【請求項72】 前記構成仕様が、前記プロセッサの2進の選択可能な特性
    を指定する少なくとも1つの仕様と、前記プロセッサの少なくとも1つのパラメ
    ータの指定可能な特性と、前記プロセッサの拡張可能特性を指定する少なくとも
    1つの拡張仕様とを含む請求項1のシステム。
  73. 【請求項73】 構成可能なプロセッサを設計する方法であって、 構成仕様に基づいて前記プロセッサのハードウエアインプリメンテーションの
    記述を生成し、 前記構成仕様に基づいて前記ハードウエアインプリメンテーションに特有のソ
    フトウエア開発ツールを生成することとを含む構成可能なプロセッサを設計する
    方法。
  74. 【請求項74】 構成可能なプロセッサを設計するシステムであって、 ユーザ定義可能な部分を有する構成仕様を生成する手段であって、前記構成仕
    様の前記ユーザ定義可能な部分が、 ユーザ定義のプロセッサ状態の仕様と、 少なくとも1つのユーザ定義の命令およびそれに関連したユーザ定義の機能と
    を含み、前記機能が、前記ユーザ定義のプロセッサ状態からの読み出しおよび前
    記ユーザ定義のプロセッサ状態への書き込みの少なくとも1つであることと、 構成仕様に基づいて前記プロセッサのハードウエアインプリメンテーションの
    記述を生成する手段とを備えているシステム。
  75. 【請求項75】 前記プロセッサの前記ハードウエアインプリメンテーショ
    ンの記述が、前記少なくとも1つのユーザ定義の命令の実行および前記ユーザ定
    義のプロセッサ状態のインプリメンテーションに必要な制御ロジックの記述を含
    む請求項74のシステム。
  76. 【請求項76】 前記プロセッサの前記ハードウエアインプリメンテーショ
    ンが、命令実行パイプラインを記述し、かつ 前記制御ロジックが、前記命令実行パイプラインの各段に関連した部分を含む
    請求項75のシステム。
  77. 【請求項77】 前記ハードウエアインプリメンテーション記述が、命令実
    行を打ち切る回路の記述を含み、かつ 前記制御ロジックが、打ち切られた命令によって前記ユーザ定義の状態の変更
    を防止する回路を含む請求項76のシステム。
  78. 【請求項78】 前記制御ロジックが、命令発行、オペランドバイパス、お
    よび前記少なくとも1つのユーザ定義の命令のためのオペランド書き込みイネー
    ブルの少なくとも1つを実行する回路を含む請求項77のシステム。
  79. 【請求項79】 前記ハードウエアインプリメンテーション記述が、複数の
    段の前記命令実行パイプラインで前記ユーザ定義の状態を実行するレジスタを含
    む請求項76のシステム。
  80. 【請求項80】 前記ハードウエアインプリメンテーション記述が、出力オ
    ペランドが発生されるパイプライン段とは異なるパイプライン段で記述される状
    態レジスタを含み、かつ 前記ハードウエアインプリメンテーションが、前記ユーザ定義のプロセッサ状
    態への書き込みがコミットされる前にこのような書き込みが前記ユーザ定義のプ
    ロセッサ状態を参照する次の命令へバイパスされる請求項76のシステム。
  81. 【請求項81】 前記構成仕様が、前記ユーザ定義の部分に加えて所定の部
    分を含み、かつ 前記仕様の所定の部分が、前記ユーザ定義の状態をメモリに保存することを容
    易にする命令および前記ユーザ定義の状態をメモリから復元することを容易にす
    る命令を含む請求項74のシステム。
  82. 【請求項82】 前記命令を使用して前記ユーザ定義の状態をコンテキスト
    切り換えるソフトウエアを生成する手段をさらに含む請求項81のシステム。
  83. 【請求項83】 前記ユーザ定義のプロセッサ状態および前記少なくとも1
    つのユーザ定義の命令をアセンブルするアセンブラ、前記ユーザ定義のプロセッ
    サ状態および前記少なくとも1つのユーザ定義の命令をコンパイルするコンパイ
    ラ、前記ユーザ定義のプロセッサ状態および前記少なくとも1つのユーザ定義の
    命令をシミュレートするシミュレータ、および前記ユーザ定義のプロセッサ状態
    および前記少なくとも1つのユーザ定義の命令をデバッグするデバッガの少なく
    とも1つを生成する手段をさらに含む請求項74のシステム。
  84. 【請求項84】 前記ユーザ定義のプロセッサ状態および前記少なくとも1
    つのユーザ定義の命令をアセンブルするアセンブラ、前記ユーザ定義のプロセッ
    サ状態および前記少なくとも1つのユーザ定義の命令をコンパイルするコンパイ
    ラ、前記ユーザ定義のプロセッサ状態および前記少なくとも1つのユーザ定義の
    命令をシミュレートするシミュレータ、および前記ユーザ定義のプロセッサ状態
    および前記少なくとも1つのユーザ定義の命令をデバッグするデバッガを生成す
    る手段をさらに含む請求項74のシステム。
  85. 【請求項85】 前記仕様の前記ユーザ定義の一部が、前記ユーザ定義の状
    態をサイズおよびインデクシングを指定する少なくとも1つのステートメントを
    含む請求項74のシステム。
  86. 【請求項86】 前記仕様の前記ユーザ定義の一部が、前記ユーザ定義の状
    態に関連し、かつプロセッサレジスタの前記ユーザ定義の状態のパッキングを指
    定する少なくとも1つの属性を含む請求項85のシステム。
  87. 【請求項87】 前記仕様の前記ユーザ定義の一部が、プロセッサレジスタ
    への前記ユーザ定義の状態のマッピングを指定する少なくとも1つのステートメ
    ントを含む請求項74のシステム。
  88. 【請求項88】 前記ハードウエアインプリメンテーション記述を生成する
    手段が、前記ユーザ定義の状態をプロセッサレジスタに自動的にマッピングする
    手段を含む請求項74のシステム。
  89. 【請求項89】 前記仕様の前記ユーザ定義の一部が、ユーザ定義の命令の
    クラスおよび前記ユーザ定義の状態に対するその効果を指定する少なくとも1つ
    のステートメントを含む請求項74のシステム。
  90. 【請求項90】 前記仕様の前記ユーザ定義の一部が、ある値を前記ユーザ
    定義の状態に割当てる少なくとも1つの割当ステートメントを含む請求項74の
    システム。
  91. 【請求項91】 構成可能なプロセッサを設計するシステムであって、 命令セットアーキテクチャ仕様に基づいて、前記仕様に特有のソフトウエア開
    発ツールを生成するコアソフトウエアツールと、 ユーザ定義の命令仕様に基づいて、前記ユーザ定義の命令を実行する際の前記
    コアソフトウエアによる使用のための少なくとも1つのモジュールを生成するユ
    ーザ定義の命令モジュールとを備えている構成可能なプロセッサを設計するシス
    テム。
  92. 【請求項92】 前記コアソフトウエアツールが前記プロセッサで実行する
    コードを生成することができるソフトウエアツールを含む請求項91のシステム
  93. 【請求項93】 前記少なくとも1つのモジュールが動的に結合されたライ
    ブラリとして実現される請求項91のシステム。
  94. 【請求項94】 前記少なくとも1つのモジュールがテーブルとして実現さ
    れる請求項91のシステム。
  95. 【請求項95】 前記コアソフトウエアツールが、前記ユーザ定義の命令モ
    ジュールを使用し、アプリケーションを前記ユーザ定義の命令を使用し、かつ前
    記プロセッサによって実行可能なコードにコンパイルするコンパイラを含む請求
    項91のシステム。
  96. 【請求項96】 前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令をコンパイルする際に前記コンパイラによって使用するためのモジュールを含
    む請求項95のシステム。
  97. 【請求項97】 前記コアソフトウエアツールが、前記ユーザ定義のモジュ
    ールを使用し、アプリケーションを前記ユーザ定義の命令を使用し、かつ前記プ
    ロセッサによって実行可能なコードにアセンブルするアセンブラを含む請求項9
    1のシステム。
  98. 【請求項98】 前記少なくとも1つのモジュールが、アセンブリ言語命令
    を前記ユーザ定義の命令にマッピングする際に前記アセンブラによって使用する
    ためのモジュールを含む請求項97のシステム。
  99. 【請求項99】 前記システムが、非ユーザ定義の命令を指定するコア命令
    セット仕様をさらに含み、かつ 前記コア命令セット仕様が、前記アプリケーションを前記プロセッサによって
    実行可能なコードにアセンブルする前記アセンブラによって使用される請求項9
    8のシステム。
  100. 【請求項100】前記コアソフトウエアツールが、前記プロセッサによって
    実行可能なコードをシミュレートする命令セットシミュレータを含む請求項91
    のシステム。
  101. 【請求項101】前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令の実行をシミュレートする際に前記シミュレータによって使用するためのシミ
    ュレータモジュールを含む請求項100のシステム。
  102. 【請求項102】前記シミュレータによって使用するための前記モジュール
    が、前記ユーザ定義の命令を復号化するデータを含む請求項101のシステム。
  103. 【請求項103】前記シミュレータが、命令が予め定義された命令として復
    号化できない場合、前記シミュレータモジュールを使用して命令を復号化するモ
    ジュールを使用する請求項102のシステム。
  104. 【請求項104】前記コアソフトウエアツールが、前記ユーザ定義の命令を
    使用し、かつ前記プロセッサによって実行可能なコードをデバッグするために前
    記ユーザ定義のモジュールを使用するデバッガを含む請求項91のシステム。
  105. 【請求項105】前記少なくとも1つのモジュールが、マシン命令をアセン
    ブリ命令に復号化するように前記デバッガによって使用可能なモジュールを含む
    請求項104のシステム。
  106. 【請求項106】前記少なくとも1つのモジュールが、アセンブリ命令をス
    トリングに変換するように前記デバッガによって使用可能なモジュールを含む請
    求項104のシステム。
  107. 【請求項107】前記コアソフトウエアツールが、前記プロセッサによって
    実行可能なコードをシミュレートする命令セットシミュレータを含み、かつ 前記デバッガが、デバッグするために前記ユーザ定義の状態の情報を得るため
    に前記シミュレータと通信するためのものである請求項104のシステム。
  108. 【請求項108】単一のユーザ定義の命令が、異なるコア命令セット仕様に
    基づいて複数のコアソフトウエアツールによって未変更されないで使用できる請
    求項91のシステム。
  109. 【請求項109】構成可能なプロセッサを設計するシステムであって、 命令セットアーキテクチャ仕様に基づいて、前記仕様に特有のソフトウエア開
    発ツールを生成するコアソフトウエアツールと、 ユーザ定義の命令仕様に基づいて、前記ユーザ定義の命令を実行する際の前記
    コアソフトウエアによる使用のための少なくとも1つのモジュールのグループを
    生成するユーザ定義の命令モジュールと、 前記ユーザ定義の命令モジュールによって生成されたグループを同時に記憶す
    るメモリ手段とを備え、前記グループの各々が異なるセットのユーザ定義の命令
    に対応する構成可能なプロセッサを設計するシステム。
  110. 【請求項110】前記少なくとも1つのモジュールが動的に結合されたライ
    ブラリとして実現される請求項109のシステム。
  111. 【請求項111】前記少なくとも1つのモジュールがテーブルとして実現さ
    れる請求項109のシステム。
  112. 【請求項112】前記コアソフトウエアツールが、前記ユーザ定義の命令モ
    ジュールを使用し、アプリケーションを前記ユーザ定義の命令を使用し、かつ前
    記プロセッサによって実行可能なコードにコンパイルするコンパイラを含む請求
    項109のシステム。
  113. 【請求項113】前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令をコンパイルする際に前記コンパイラによって使用するためのモジュールを含
    む請求項112のシステム。
  114. 【請求項114】前記コアソフトウエアツールが、前記ユーザ定義のモジュ
    ールを使用し、アプリケーションを前記ユーザ定義の命令を使用し、かつ前記プ
    ロセッサによって実行可能なコードにアセンブルするアセンブラを含む請求項1
    09のシステム。
  115. 【請求項115】前記少なくとも1つのモジュールが、アセンブリ言語命令
    を前記ユーザ定義の命令にマッピングする際に前記アセンブラによって使用する
    ためのモジュールを含む請求項114のシステム。
  116. 【請求項116】前記コアソフトウエアツールが、前記プロセッサによって
    実行可能なコードをシミュレートする命令セットシミュレータを含む請求項10
    9のシステム。
  117. 【請求項117】前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令の実行をシミュレートする際に前記シミュレータによって使用するためのモジ
    ュールを含む請求項116のシステム。
  118. 【請求項118】前記シミュレータによって使用するための前記モジュール
    が、前記ユーザ定義の命令を復号化するデータを含む請求項117のシステム。
  119. 【請求項119】前記シミュレータが、命令が予め定義された命令として復
    号化できない場合、前記シミュレータモジュールを使用して命令を復号化するモ
    ジュールを使用する請求項118のシステム。
  120. 【請求項120】前記コアソフトウエアツールが、前記ユーザ定義の命令を
    使用し、かつ前記プロセッサによって実行可能なコードをデバッグするために前
    記ユーザ定義のモジュールを使用するデバッガを含む請求項109のシステム。
  121. 【請求項121】前記少なくとも1つのモジュールが、マシン命令をアセン
    ブリ命令に復号化するように前記デバッガによって使用可能なモジュールを含む
    請求項120のシステム。
  122. 【請求項122】前記少なくとも1つのモジュールが、アセンブリ命令をス
    トリングに変換するように前記デバッガによって使用可能なモジュールを含む請
    求項120のシステム。
  123. 【請求項123】構成可能なプロセッサを設計するシステムであって、 各々のグループが、命令セットアーキテクチャ仕様に基づいて、前記仕様に特
    有のソフトウエア開発ツールを生成する複数のグループのコアソフトウエアツー
    ルと、 ユーザ定義の命令仕様に基づいて、前記ユーザ定義の命令を実行する際にコア
    ソフトウエアツールのグループによって使用するための少なくとも1つのモジュ
    ールを生成するユーザ定義の命令モジュールとを備えているシステム。
  124. 【請求項124】前記少なくとも1つのモジュールが、動的に結合されたラ
    イブラリとして実現される請求項123のシステム。
  125. 【請求項125】前記少なくとも1つのモジュールが、テーブルとして実現
    される請求項123のシステム。
  126. 【請求項126】少なくとも1つのグループのコアソフトウエアツールが、
    前記ユーザ定義の命令モジュールを使用し、アプリケーションを前記ユーザ定義
    の命令を使用し、かつ前記プロセッサによって実行可能なコードにコンパイルす
    るコンパイラを含む請求項123のシステム。
  127. 【請求項127】前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令をコンパイルする際に前記コンパイラによって使用するためのモジュールを含
    む請求項126のシステム。
  128. 【請求項128】少なくとも1つのグループのコアソフトウエアツールが、
    前記ユーザ定義のモジュールを使用し、アプリケーションを前記ユーザ定義の命
    令を使用し、かつ前記プロセッサによって実行可能なコードにアセンブルするア
    センブラを含む請求項123のシステム。
  129. 【請求項129】前記少なくとも1つのモジュールが、アセンブリ言語命令
    を前記ユーザ定義の命令にマッピングする際に前記アセンブラによって使用する
    ためのモジュールを含む請求項128のシステム。
  130. 【請求項130】少なくとも1つのグループのコアソフトウエアツールが、
    前記プロセッサによって実行可能なコードをシミュレートする命令セットシミュ
    レータを含む請求項123のシステム。
  131. 【請求項131】前記少なくとも1つのモジュールが、前記ユーザ定義の命
    令の実行をシミュレートする際に前記シミュレータによって使用するためのモジ
    ュールを含む請求項130のシステム。
  132. 【請求項132】前記シミュレータによって使用するための前記モジュール
    が、前記ユーザ定義の命令を復号化するデータを含む請求項131のシステム。
  133. 【請求項133】前記シミュレータが、命令が予め定義された命令として復
    号化できない場合、前記シミュレータモジュールを使用して命令を復号化するモ
    ジュールを使用する請求項132のシステム。
  134. 【請求項134】少なくとも1つのグループのコアソフトウエアツールが、
    前記ユーザ定義の命令を使用し、かつ前記プロセッサによって実行可能なコード
    をデバッグするために前記ユーザ定義のモジュールを使用するデバッガを含む請
    求項123のシステム。
  135. 【請求項135】前記少なくとも1つのモジュールが、マシン命令をアセン
    ブリ命令に復号化するように前記デバッガによって使用可能なモジュールを含む
    請求項134のシステム。
  136. 【請求項136】前記少なくとも1つのモジュールが、アセンブリ命令をス
    トリングに変換するように前記デバッガによって使用可能なモジュールを含む請
    求項134のシステム。
JP2000597714A 1999-02-05 2000-02-04 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法 Withdrawn JP2003518280A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US09/246,047 US6477683B1 (en) 1999-02-05 1999-02-05 Automated processor generation system for designing a configurable processor and method for the same
US09/246,047 1999-02-05
US09/323,161 1999-05-27
US09/323,161 US6701515B1 (en) 1999-05-27 1999-05-27 System and method for dynamically designing and evaluating configurable processor instructions
US09/322,735 US6477697B1 (en) 1999-02-05 1999-05-28 Adding complex instruction extensions defined in a standardized language to a microprocessor design to produce a configurable definition of a target instruction set, and hdl description of circuitry necessary to implement the instruction set, and development and verification tools for the instruction set
US09/322,735 1999-05-28
PCT/US2000/003091 WO2000046704A2 (en) 1999-02-05 2000-02-04 Automated processor generation system and method for designing a configurable processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007161932A Division JP2007250010A (ja) 1999-02-05 2007-06-19 構成可能なプロセッサを設計するための自動プロセッサ生成システム及び生成方法

Publications (2)

Publication Number Publication Date
JP2003518280A true JP2003518280A (ja) 2003-06-03
JP2003518280A5 JP2003518280A5 (ja) 2005-10-13

Family

ID=27399897

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000597714A Withdrawn JP2003518280A (ja) 1999-02-05 2000-02-04 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法
JP2007161932A Withdrawn JP2007250010A (ja) 1999-02-05 2007-06-19 構成可能なプロセッサを設計するための自動プロセッサ生成システム及び生成方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2007161932A Withdrawn JP2007250010A (ja) 1999-02-05 2007-06-19 構成可能なプロセッサを設計するための自動プロセッサ生成システム及び生成方法

Country Status (6)

Country Link
EP (1) EP1159693A2 (ja)
JP (2) JP2003518280A (ja)
KR (2) KR100874738B1 (ja)
AU (1) AU3484100A (ja)
TW (1) TW539965B (ja)
WO (1) WO2000046704A2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7168060B2 (en) 2002-04-26 2007-01-23 Kabushiki Kaisha Toshiba Method of generating development environment for developing system LSI and medium which stores program therefor using VLIW designating description
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
WO2008062768A1 (fr) 2006-11-21 2008-05-29 Nec Corporation Système de génération de code d'opération de commande
WO2009084570A1 (ja) * 2007-12-28 2009-07-09 Nec Corporation コンパイラ組み込み関数追加装置
EP2083352A2 (en) 2007-12-28 2009-07-29 Fujitsu Limited Processing unit
JP2010181942A (ja) * 2009-02-03 2010-08-19 Renesas Electronics Corp Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法
US8989242B2 (en) 2011-02-10 2015-03-24 Nec Corporation Encoding/decoding processor and wireless communication apparatus
KR20150041541A (ko) * 2013-10-08 2015-04-16 삼성전자주식회사 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치
US10426424B2 (en) 2017-11-21 2019-10-01 General Electric Company System and method for generating and performing imaging protocol simulations

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0028079D0 (en) * 2000-11-17 2001-01-03 Imperial College System and method
JP2002230065A (ja) 2001-02-02 2002-08-16 Toshiba Corp システムlsi開発装置およびシステムlsi開発方法
WO2002084538A1 (en) 2001-04-11 2002-10-24 Mentor Graphics Corporation Hdl preprocessor
DE10128339A1 (de) * 2001-06-12 2003-01-02 Systemonic Ag Verfahren zur Validierung eines Modells für eine datenverarbeitende Schaltungsanordung
US6941548B2 (en) 2001-10-16 2005-09-06 Tensilica, Inc. Automatic instruction set architecture generation
DE10205523A1 (de) * 2002-02-08 2003-08-28 Systemonic Ag Verfahren zum Bereitstellen einer Entwurfs-, Test- und Entwicklungsumgebung sowie ein System zur Ausführung des Verfahrens
JP2003316838A (ja) * 2002-04-19 2003-11-07 Nec Electronics Corp システムlsiの設計方法及びこれを記憶した記録媒体
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7346881B2 (en) 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
CN1864133A (zh) 2003-08-20 2006-11-15 日本烟草产业株式会社 程序生成***、程序生成程序和程序生成模块
US7278122B2 (en) 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
KR100722428B1 (ko) * 2005-02-07 2007-05-29 재단법인서울대학교산학협력재단 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조
US7757224B2 (en) * 2006-02-02 2010-07-13 Microsoft Corporation Software support for dynamically extensible processors
KR100793210B1 (ko) * 2006-06-01 2008-01-10 조용범 Arm 프로세서에서의 메모리 접근 횟수를 줄인 디코더구현방법
KR100813662B1 (ko) 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러
US8775125B1 (en) 2009-09-10 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for improved processing performance
TWI416302B (zh) * 2009-11-20 2013-11-21 Ind Tech Res Inst 具電源模式感知之時脈樹及其合成方法
KR101635397B1 (ko) * 2010-03-03 2016-07-04 삼성전자주식회사 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
KR20130088285A (ko) * 2012-01-31 2013-08-08 삼성전자주식회사 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법
KR102025694B1 (ko) * 2012-09-07 2019-09-27 삼성전자 주식회사 재구성 가능한 프로세서의 검증 방법
US10558437B1 (en) * 2013-01-22 2020-02-11 Altera Corporation Method and apparatus for performing profile guided optimization for high-level synthesis
US10084456B2 (en) 2016-06-18 2018-09-25 Mohsen Tanzify Foomany Plurality voter circuit
RU2631989C1 (ru) * 2016-09-22 2017-09-29 ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ КАЗЕННОЕ ВОЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "Военная академия Ракетных войск стратегического назначения имени Петра Великого" МИНИСТЕРСТВА ОБОРОНЫ РОССИЙСКОЙ ФЕДЕРАЦИИ Устройство для диагностического контроля выполнения проверок
KR102104198B1 (ko) * 2019-01-10 2020-05-29 한국과학기술원 느긋한 심볼화를 활용한 바이너리 재조립 기술의 정확도 향상 기술 및 도구
CN110096257B (zh) * 2019-04-10 2023-04-07 沈阳哲航信息科技有限公司 一种基于智能识别的设计图形自动化评判***及方法
CN111832737B (zh) * 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN111400986B (zh) * 2020-02-19 2024-03-19 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理***
JP7461181B2 (ja) * 2020-03-16 2024-04-03 本田技研工業株式会社 制御装置、システム、プログラム、及び制御方法
CN114721982B (zh) * 2022-03-22 2024-06-18 潍柴动力股份有限公司 一种可配置存储数据类型的读写处理方法及***
CN114492264B (zh) * 2022-03-31 2022-06-24 南昌大学 门级电路的转译方法、***、存储介质及设备
CN117435248B (zh) * 2023-09-28 2024-05-31 中国人民解放军国防科技大学 一种自适应指令集编码自动生成方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE505783C3 (sv) * 1995-10-03 1997-10-06 Ericsson Telefon Ab L M Foerfarande foer att tillverka en digital signalprocessor
GB2308470B (en) * 1995-12-22 2000-02-16 Nokia Mobile Phones Ltd Program memory scheme for processors
JP2869379B2 (ja) * 1996-03-15 1999-03-10 三菱電機株式会社 プロセッサ合成システム及びプロセッサ合成方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
US7168060B2 (en) 2002-04-26 2007-01-23 Kabushiki Kaisha Toshiba Method of generating development environment for developing system LSI and medium which stores program therefor using VLIW designating description
WO2008062768A1 (fr) 2006-11-21 2008-05-29 Nec Corporation Système de génération de code d'opération de commande
US8935512B2 (en) 2006-11-21 2015-01-13 Nec Corporation Instruction operation code generation system
WO2009084570A1 (ja) * 2007-12-28 2009-07-09 Nec Corporation コンパイラ組み込み関数追加装置
EP2083352A2 (en) 2007-12-28 2009-07-29 Fujitsu Limited Processing unit
US8281112B2 (en) 2007-12-28 2012-10-02 Fujitsu Limited Processor decoding extension instruction to store plural address extension information in extension register for plural subsequent instructions
JP2010181942A (ja) * 2009-02-03 2010-08-19 Renesas Electronics Corp Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法
US8989242B2 (en) 2011-02-10 2015-03-24 Nec Corporation Encoding/decoding processor and wireless communication apparatus
KR20150041541A (ko) * 2013-10-08 2015-04-16 삼성전자주식회사 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치
KR102122455B1 (ko) * 2013-10-08 2020-06-12 삼성전자주식회사 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치
US10426424B2 (en) 2017-11-21 2019-10-01 General Electric Company System and method for generating and performing imaging protocol simulations

Also Published As

Publication number Publication date
KR100874738B1 (ko) 2008-12-22
JP2007250010A (ja) 2007-09-27
EP1159693A2 (en) 2001-12-05
WO2000046704A2 (en) 2000-08-10
WO2000046704A3 (en) 2000-12-14
TW539965B (en) 2003-07-01
CN1382280A (zh) 2002-11-27
KR20020021081A (ko) 2002-03-18
KR20070088818A (ko) 2007-08-29
AU3484100A (en) 2000-08-25
KR100775547B1 (ko) 2007-11-09

Similar Documents

Publication Publication Date Title
US8875068B2 (en) System and method of customizing an existing processor design having an existing processor instruction set architecture with instruction extensions
KR100874738B1 (ko) 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법
Hoffmann et al. A methodology for the design of application specific instruction set processors (ASIP) using the machine description language LISA
Hoffmann et al. A novel methodology for the design of application-specific instruction-set processors (ASIPs) using a machine description language
Hoffmann et al. Architecture exploration for embedded processors with LISA
Mishra et al. Architecture description languages for programmable embedded systems
US20070277130A1 (en) System and method for architecture verification
Tomiyama et al. Architecture description languages for systems-on-chip design
EP1668444A2 (en) Improved computerized extension apparatus and methods
Nurvitadhi et al. Automatic pipelining from transactional datapath specifications
Qin et al. Architecture Description Languages for Retargetable Compilation.
Chattopadhyay et al. LISA: A uniform ADL for embedded processor modeling, implementation, and software toolsuite generation
Schliebusch et al. Optimized ASIP synthesis from architecture description language models
Qin Modeling and description of embedded processors for the development of software tools
Halambi et al. Automatic software toolkit generation for embedded systems-on-chip
JP4801210B2 (ja) 拡張プロセッサを設計するシステム
Yoshiya et al. Design verification methodology of pipelined RISC-V processor using C2RTL framework
August et al. A disciplined approach to the development of platform architectures
Shcherbakov et al. Bringing C++ productivity to VHDL world: From language definition to a case study
Lajolo et al. Scalable techniques for system-level cosimulation and coestimation
CN1382280B (zh) 用于设计可配置的处理器的自动处理器产生***及其方法
Meyerowitz Single and multi-cpu performance modeling for embedded systems
de Sousa Specializing RISC-V Cores for Performance and Power
Chattopadhyay et al. Processor Modeling and Design Tools
Meyr et al. Designing and modeling MPSoC processors and communication architectures

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070619

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070724

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090916