(57)【要約】【課題】  プロセッサ内の未使用回路を削除し、必要な機能と性能を備えたプロセッサを安価なコストで提供する。【解決手段】  記憶装置から命令を読み出し、その命令をデコーダで解釈し、その解釈に基づいて処理を順次進める専用プロセッサを生成するための設計記述されたプロセッサにおいて、プロセッサは、少なくとも命令を対象としたコンフィギュレーション定義記述と、専用プロセッサ内の回路を定義する回路記述とを有し、プロセッサは、予め備えている命令のうち任意の命令を削除可能、かつ該削除によって不要となる回路を削除可能になされたプロセッサである。【選択図】図２
2012003339.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置から命令を読み出し、その命令をデコーダで解釈し、その解釈に基づいて処理を順次進める専用プロセッサを生成するための設計記述されたプロセッサにおいて、
前記プロセッサは、少なくとも命令を対象としたコンフィギュレーション定義記述と、前記専用プロセッサ内の回路を定義する回路記述とを有し、
前記プロセッサは、予め備えている命令のうち任意の命令を削除可能、かつ該削除によって不要となる回路を削除可能になされたこと
を特徴とするプロセッサ。
【請求項２】
前記プロセッサは、予め備えている機能のうち特定の機能の一部もしくは全部に係わる回路を削除可能になされ、
削除可能な前記特定の機能は、レジスタに係わる機能、又は特定の演算器に係わる機能、又は割込み・例外の処理に係わる機能、又は特定範囲のメモリ空間を指し示す機能、又はメモリアドレスのインデックス計算に係わる機能であることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
請求項１又は２に記載のプロセッサから新たなプロセッサを生成するプロセッサ生成装置において、
前記専用プロセッサを動作させるためのソフトウェアプログラムからアセンブラ、コンパイラを含むソフトウェア開発ツールによって生成された命令コードに基づいて少なくとも命令の使用状況を静的に解析する解析部と、
この解析結果に基づいて前記プロセッサから削除可能な命令を抽出する抽出部と、
抽出した命令を前記プロセッサから削除するとともに、該命令の削除によって不要となる回路を前記プロセッサから削除して新たなプロセッサを生成する生成部と
を備えたことを特徴とするプロセッサ生成装置。
【請求項４】
請求項１又は２に記載のプロセッサから新たなプロセッサを生成するプロセッサ生成装置において、
前記プロセッサから削除する少なくとも命令を定義した定義ファイルに基づいて、前記定義された命令を前記プロセッサから削除するとともに、該命令の削除によって不要となる回路を前記プロセッサから削除して新たなプロセッサを生成する生成部を備えたことを特徴とするプロセッサ生成装置。
【請求項５】
請求項１又は２に記載のプロセッサから新たなプロセッサを生成するプロセッサ生成装置において、
前記専用プロセッサを動作させるためのソフトウェアプログラムからアセンブラ、コンパイラを含むソフトウェア開発ツールによって生成された命令コードに基づいて少なくとも命令の使用状況を静的に解析する解析部と、
この解析結果に基づいて前記プロセッサから削除可能な命令を抽出する第１抽出部と、
前記プロセッサから削除する少なくとも命令を定義した定義ファイルに基づいて、前記プロセッサから削除可能な命令を抽出する第２抽出部と、
前記第１及び第２抽出部が抽出した命令を前記プロセッサから削除するとともに、該命令の削除によって不要となる回路を前記プロセッサから削除して新たなプロセッサを生成する生成部と
を備えたことを特徴とするプロセッサ生成装置。
【請求項６】
請求項１又は２に記載のプロセッサと、
前記専用プロセッサを動作させるためのソフトウェアプログラムから命令コードを生成するアセンブラ、コンパイラを含むソフトウェア開発ツールと、
請求項３又は５に記載のプロセッサ生成装置と
を備えたことを特徴とするプロセッサ生成システム。
【請求項７】
前記プロセッサ生成装置の解析結果に基づいて、前記ソフトウェア開発ツールに対して前記回路を更に削減するための指示を行う変更指示部を更に備えたことを特徴とする請求項６に記載のプロセッサ生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、プロセッサ、プロセッサ生成装置及びプロセッサ生成システムに関する。
【背景技術】
【０００２】
近年、ＦＰＧＡ（Field Programmable Gate Array）の普及により、システム開発において、カスタムＬＳＩを用いた回路設計が一般的になってきている。ＦＰＧＡは、利用者が回路構成を定義・変更できるように構成されたカスタムＬＳＩの一種である。
【０００３】
システム開発者はシステムの用途に応じた様々な設計を担当するが、プロセッサ自体の回路を設計することはほとんど無い。プロセッサを開発するとなれば、回路設計のみならず、そのプロセッサ用のアセンブラ・コンパイラ・デバッガなどの開発ツールを用意することも含めて、高度な専門知識・膨大なリソース・コストを必要とするからである。
【０００４】
従ってシステム開発において、カスタムＬＳＩにプロセッサを搭載する場合、システム開発者は、いくつかあるプロセッサＩＰコア (Intellectual Property Core) の中から必要な機能と十分な性能を備え、かつ開発ツールやコストなどの条件を満たすプロセッサＩＰコアを選択し、それを搭載することになる。そのため、ベンダーなどが提供しているプロセッサＩＰコアは、多様なシステムに対応できるように標準的なアーキテクチャを採用した汎用プロセッサＩＰコアであることが多い。
【０００５】
しかしながら、汎用プロセッサＩＰコアは多様なシステムに適応できるように設計されているため、システム開発者からすると、使用することの無い不要な機能を備え、それによって無駄なコストがかかっていると不満に感じる場合がある。例えば、超高速に整数演算処理をするシステムを開発する案件があり、この案件を満たす高性能プロセッサが必要だとする。高性能な汎用プロセッサＩＰコアはややもすると不必要な機能を備えている場合が多い。例えば、汎用プロセッサＩＰコアが整数演算処理機能の他に浮動小数点数演算機能を備えている場合、この浮動小数点数演算機能は整数演算処理をするシステムでは不必要である。しかしながら、使用することのない浮動小数点数演算に係わる余分な回路コストは、無駄であると認識していても削除することができない。
【０００６】
そこで、汎用プロセッサＩＰコアにはカスタム命令を追加・削除できるように構成されたものも存在する。もし浮動小数点数演算命令がカスタマイズ機能によって削除することが可能であれば、上述の例における浮動小数点数演算に係わる余分な回路コストを削減することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２５００１０号公報
【特許文献２】特開２００９−０１５８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、カスタマイズ機能を備えた汎用プロセッサＩＰコアでは、選択できる命令や機能の自由度が少ない。汎用プロセッサＩＰコアがカスタマイズ機能を備えているのは、主として性能のアップを指向しているためであり、回路コストの削減はそれほど重視していないためであると考えられる。即ち、カスタムＬＳＩの全回路規模に占める未使用回路規模は小さいため、カスタマイズによって未使用回路を削除してもコスト削減の効果が低いと判断しているものと推測する。実際、半導体プロセスの微細化が進むと微々たる回路は載せても載せなくてもカスタムＬＳＩの製造コストは変わらなくなる、という背景がある。
【０００９】
しかしこのような状況は現在すでに変化している。その理由として、ひとつのカスタムＬＳＩに複数のプロセッサを搭載する、いわゆるマルチプロセッサ化が進んでいることが挙げられる。ひとつのカスタムＬＳＩに搭載するプロセッサの数はシステム案件によっても異なるが数個から十数個程度のものが多い。しかし最近では、ひとつのカスタムＬＳＩに数百個やそれ以上ものプロセッサを搭載する例も見られる。シングルプロセッサでは問題にならなかった僅かな回路コストが、マルチプロセッサではプロセッサの個数分累積していく。そのため、上述の回路コストの増加が無視できなくなっている。
【００１０】
上述の説明ではプロセッサのカスタマイズ対象を演算命令だけに絞ったが、プロセッサを構成する回路は命令を処理する回路だけではない。それ以外の回路、例えば、演算レジスタに係わる回路、割り込みに係わる回路なども、使用しないのであれば削除できることが望ましい。
【００１１】
また消費電力の観点で見ると未使用回路の存在は回路コストだけでなく様々なコストを押し上げる可能性がある。具体的には無駄な電力を消費する未使用回路が余計な熱を発生するため、冷却コスト、パッケージコスト、基板実装コスト、電源コストなどに影響を与える。
【００１２】
従って、プロセッサ内の未使用回路を削除し、必要な機能と性能を備えたプロセッサを安価なコストで提供するニーズがある。
【課題を解決するための手段】
【００１３】
上記課題を解決するための本発明の実施の形態によれば、記憶装置から命令を読み出し、その命令をデコーダで解釈し、その解釈に基づいて処理を順次進める専用プロセッサを生成するための設計記述されたプロセッサにおいて、前記プロセッサは、少なくとも命令を対象としたコンフィギュレーション定義記述と、前記専用プロセッサ内の回路を定義する回路記述とを有し、前記プロセッサは、予め備えている命令のうち任意の命令を削除可能、かつ該削除によって不要となる回路を削除可能になされたプロセッサが提供される。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係る従来のカスタマイズ可能なプロセッサの構成と動作を説明するための図。
【図２】本発明の実施形態に係るプロセッサ生成システムの構成と動作を説明するための図。
【図３】本発明の実施形態に係るＣＳプロセッサの記述の例を示す図。
【図４】本発明の実施形態に係るプロセッサ生成システムの構成と動作を説明するための図。
【図５】本発明の実施形態に係るレジスタに係る回路のカスタマイズ例を示す図。
【図６】本発明の実施形態に係るカスタマイズ方法を説明するための図。
【図７】本発明の実施形態に係るＳプロセッサのカスタマイズを例示する図。
【発明を実施するための形態】
【００１５】
（第１の実施形態）  
本発明の実施の形態のプロセッサを説明する前に、一般的なカスタマイズ可能なプロセッサについて説明する。  
図１は、従来のカスタマイズ可能なプロセッサ１の構成と動作を説明するための図である。図１の上段には、プロセッサ１の機能ブロック図を示し、下段には、カスタマイズ可能な演算回路例を示している。
【００１６】
プロセッサ１は、コントローラ１１、デコーダ１２、切替器１３、演算器１４、レジスタファイル１５を備えている。そしてプロセッサ１は、命令メモリ２、データメモリ３との間で情報の授受を行って処理動作を実行する。
【００１７】
命令メモリ２には、プロセッサ１の動作を制御するプログラムの命令（Instruction）が格納されている。この命令メモリ２から命令が順次取り出されてデコーダ１２に送られる。デコーダ１２は、取り出された命令を解釈してプロセッサ１の動きを制御するための信号を生成する。デコーダ１２からの信号はコントローラ１１に入力され、コントローラ１１は、デコーダ１２で解釈された命令に従って、プロセッサ１の各部の動作を制御する。また、デコーダ１２からの信号はプロセッサ１内の各部に出力される。
【００１８】
デコーダ１２からの信号は切替器１３を介して演算器１４に入力する。また、デコーダ１２からの信号はレジスタファイル１５で一時的に保存された後、切替器１３を介して演算器１４に入力する。演算器１４は、入力した信号に対して算術演算あるいは論理演算を実行するＡＬＵ（Arithmetic Logical Unit）である。切替器１３が演算の種類に対応して信号を切り替えて演算器１４に出力する。演算結果は、データメモリ３に格納される。演算の種類に応じて、演算結果は切替器１３及びレジスタファイル１５にフィードバックされる。
【００１９】
なお、データメモリ３はデータの保存と共に外部との信号の入出力機能を備えている。即ち、プロセッサ１からの信号はデータメモリ３を介して外部に出力され、外部からの信号はデータメモリ３を介してプロセッサ１に取り込まれる。なお、図１では命令メモリ２とデータメモリ３とを分離して構成しているが、これらを一体にまとめて構成することもできる。
【００２０】
続いてプロセッサ１のカスタマイズ機能について演算器１４を例として説明する。  
演算器１４が基本演算機能として四則演算（加算、減算、乗算、除算）と論理演算（積、和）機能を備えている場合、プロセッサ１を構築する際、カスタマイズ機能を用いて基本演算機能に加えて複素数演算、浮動小数点数演算、ＤＳＰ (Digital Signal Processing) 演算、ＳＩＭＤ (Single Instruction Multiple Data) 演算、ユーザ定義演算を適宜選択して追加することができる。
【００２１】
このようにカスタマイズが可能な汎用プロセッサＩＰコアは、一般的に次のような命令構成を備えている。  
［基本命令］＋［オプション命令］＋［ユーザ定義命令］  
即ち、基本命令をベースとして必要に応じて、オプション命令、ユーザ定義命令を追加していく構成である。
【００２２】
このうち基本命令は制御命令・データ転送命令・論理演算命令・単純な整数演算命令から成り、カスタマイズすなわち削除することができない。オプション命令は複雑な整数演算命令・浮動小数点数演算命令・ＤＳＰ演算命令・ＳＩＭＤ演算命令などから成り、基本命令に追加する形でカスタマイズが可能である。
【００２３】
ユーザ定義命令もオプション命令と同様にカスタマイズ可能である。オプション命令とユーザ定義命令の違いは、前者が専用の演算回路が予め用意されているのに対し、後者は演算回路をユーザ自ら用意しなければならない点にある。いずれにしてもオプション命令とユーザ定義命令はその演算回路の提供元が異なるだけでカスタマイズ機能を実現する上でプロセッサの構造上の違いはない。
【００２４】
ここで問題となるのは、カスタマイズ機能を備えているプロセッサが実際にカスタマイズできるのは、図１でも示すように特定の演算命令に限定していることである。カスタマイズの対象を演算命令に限定しているのは、演算命令がプロセッサ内部の制御機構の影響を受けにくいからである。例えば、分岐命令やデータ転送命令などの制御系命令はプロセッサの根幹を成す命令であり、プロセッサ内部の様々な制御回路と密接に連動して働く。演算命令のカスタマイズがプロセッサ内のデータパスを３〜４箇所ほど切り換えるだけで済むのに対し、制御系命令ではデータパスだけでなく制御パスも切り換える必要がある上に個々の命令で切り換えるポイントやタイミングが変わってくる。また制御系命令はコンパイラをはじめとする開発ツールと連携していることが多く、これらの命令のカスタマイズは開発ツールに対して多大な影響を与える。それ故にこれらの命令は基本命令として位置づけられカスタマイズの対象から外されている。
【００２５】
また、カスタマイズが可能な演算命令であってもその自由度は大きくない。例えば、オプション命令として浮動小数点数演算命令を選択しようとするとき、その選択の単位は「単精度浮動小数点数演算に関係する命令群」、「倍精度浮動小数点数演算に関係する命令群」といったように命令群単位となる。特定の命令のみを使う場合であっても、関係する命令を含む命令群単位で選択せざるを得ない。
【００２６】
このように、従来のカスタマイズ機能では、カスタマイズできる命令が特定の命令に制限されている。
【００２７】
図２は、本発明の実施の形態のプロセッサ生成システム２０の構成と動作を説明するための図である。  
プロセッサ生成システム２０の作用について説明する。プロセッサ生成システム２０は、ユーザプログラム３０のソースコードから専用プロセッサ３５が処理するコードである実行コードを生成し、その実行コードをシステムボードもしくはシステムＬＳＩ内のＲＯＭ／ＲＡＭ３４に出力する。ここで、専用プロセッサ３５とは、ユーザプログラム３０を実行するために専用品として生成されたプロセッサである。
【００２８】
更に、プロセッサ生成システム２０は、再構成プロセッサ３１（詳細は後述する）を生成する。この再構成プロセッサ３１はユーザプログラム３０を実行するために必要な回路のみについての回路記述を備えている。逆に言うと、そのユーザプログラム３０が必要としない回路についての回路記述は含まれていない。シンセサイザ３２は、再構成プロセッサ３１をシンセサイズ（論理合成）して専用プロセッサ３５を生成する。
【００２９】
生成された専用プロセッサ３５はシステムボードもしくはＬＳＩ内に設けられる。そして、専用プロセッサ３５は、ＲＯＭ／ＲＡＭ３４に格納された実行コードに従って動作する。なお、図２の専用プロセッサ３５は、図１のプロセッサ１に対応し、ＲＯＭ／ＲＡＭ３４は、図１の命令メモリ２、データメモリ３に対応する。
【００３０】
プロセッサ生成システム２０は、ソフトウェア開発ツール２１、実行コードファイル２２、リストファイル２３、マップファイル２４、コンフィギュアブル＆シンセサイザブルプロセッサ２５（以下「ＣＳプロセッサ」という。）、プロセッサコンフィギュレーションツール２６（以下「プロセッサ生成装置」という。）及びユーザ定義ファイル２７を備えている。
【００３１】
ソフトウェア開発ツール２１は、アセンブラ、コンパイラ、リンカーなどを備え、ユーザプログラム３０をアッセンブルあるいはコンパイルして実行コードを生成する。この生成された実行コードがシステムボードもしくはシステムＬＳＩ内のＲＯＭ／ＲＡＭ３４に出力される。実行コードファイル２２は、ソフトウエア開発ツールが生成した実行コードを格納するためのファイルである。リストファイル２３は、リストを格納するためのファイルである。マップファイル２４は、レジスタなどメモリの使用状態を表すデータを格納するファイルである。
【００３２】
ＣＳプロセッサ２５は、ＨＤＬ（hardware Description Language）などで設計記述され、専用プロセッサ３５をコンフィギュレーション（生成）する際の礎となる。即ち、ＣＳプロセッサ２５は、コンフィギャブル（構成可能）であり、シンセサイザブル（論理合成可能）なように構成されたプロセッサである。そして、ＣＳプロセッサ２５は、専用プロセッサ３５を構成する回路についての全ての設計記述を含む。プロセッサ生成装置２６は、実行コードファイル２２、リストファイル２３、マップファイル２４に格納されているデータに基づいて、命令や各種リソースの使用状況を調査する。その調査結果に基づいて、プロセッサ生成装置２６は、ＣＳプロセッサ２５を加工してユーザプログラム３０に適合した再構成プロセッサ３１を生成する。
【００３３】
続いて、プロセッサ生成装置２６とＣＳプロセッサ２５について詳細に説明する。  
プロセッサ生成装置２６は、ソフトウェア開発ツール２１が生成した実行コードファイル２２、リストファイル２３、マップファイル２４などから、ユーザプログラム３０で使用している命令の種類、使用しているレジスタの種類や範囲、使用している割り込みの種類や範囲、使用しているアドレス空間の種類や範囲などを調べる。そしてプロセッサ生成装置２６は、その結果に基づいてコンフィギュレーションを定義して、再構成プロセッサ３１を生成する。
【００３４】
ＣＳプロセッサ２５はＨＤＬ（hardware Description Language）などで設計記述されたコンフィギュレーションの礎となる。図３は、ＣＳプロセッサ２５の記述の例を示す図である。
【００３５】
00001行目の`ifdef INST_SLEEPは「sleep命令が必要であればその後の記述を有効にする」という意味のディレクティブである。INST_SLEEPは先述のコンフィギュレーション定義のひとつであり、プロセッサ生成装置２６によって専用プロセッサ３５にsleep命令が必要と判断した場合に定義される。00002行目のstatement1が実際にsleep命令の実行に必要な回路記述を示している。同様に00005行目の`ifdef INST_JUMP_JUMPF_LINK_LINKFは「jump、jumpf、link、linkf命令のいずれかが必要であればその後の記述を有効にする」という意味のディレクティブである。このINST_JUMP_JUMPF_LINK_LINKFもプロセッサ生成装置２６が定義するコンフィギュレーション定義のひとつであり、00006行目以降の記述が実際にjump、jumpf、link、linkf命令の実行に必要な回路記述を示している。
【００３６】
このようにプロセッサ生成装置２６は、ユーザプログラム３０が使用する命令やリソースの種類などに応じて各種コンフィギュレーション定義を行う。その定義をもとに、ＣＳプロセッサ２５の記述の中から必要な回路と不要な回路とを仕分けて、再構成プロセッサ３１を生成する。
【００３７】
一般的なカスタマイズプロセッサの場合、コンフィギュレーションの対象となる命令は一部の演算命令に限られているのに対し、本実施の形態の専用プロセッサ３５を生成する方法ではすべての命令をコンフィギュレーションの対象にすることが可能である。さらに、命令だけに限らずレジスタ、割り込み、アドレス空間などのリソースについても同様にしてコンフィギュレーションの対象にすることも可能である。
【００３８】
例えば、レジスタの使用状況は図２の実行コードファイル２２を参照することで調べることができる。プロセッサ生成装置２６は実際に使用されているレジスタをもとにして、REG_LINK、REG_3、REG_4...といったコンフィギュレーション定義を行う。これら定義は例えば図３の00006行目の`ifdef REG_LINKのように参照される。この例では、リンクレジスタが使用されている場合はstatement2の回路記述を、リンクレジスタが使用されていない場合はstatement3の回路記述を有効にする。このような定義と回路記述によって必要なレジスタ回路のみを実装することができる。
【００３９】
以上のようにして、ユーザプログラム３０の内容に応じて必要最小限の回路で済む専用プロセッサ３５を生成することができる。本実施の形態のプロセッサの基本構成は次の通りである。  
［高機能プロセッサ］−［未使用命令］−［未使用リソース］  
即ち、高機能プロセッサをベースとして、未使用の命令、未使用のリソースを削除していく構成である。
【００４０】
なお、本実施の形態では、ユーザプログラム３０のみを対象とするのではなく、ユーザが予め削除する命令や機能、ないしは削除しない命令や機能を直接定義して、その定義に基づいて専用プロセッサ３５内の不要となる回路を除去したり、将来使用する可能性がある回路を残したりすることもできる。例えば、図２に示すように、ユーザが削除する命令や機能を直接定義したユーザ定義ファイル２７を設ける。プロセッサ生成装置２６は、実行コードファイル２２、リストファイル２３、マップファイル２４に加えてこのユーザ定義ファイル２７を参照して再構成プロセッサ３１を生成する。
【００４１】
多くの一般的なカスタマイズプロセッサの場合、ソフトウェア開発とプロセッサのカスタマイズはそれぞれ独立に行われる。そのためユーザは常に、ユーザプログラムの内容とカスタマイズ内容とが合致するようにシステム設計を進める必要があった。これに対して本実施の形態では、ソフトウェア開発とプロセッサ生成とを一連の業務の流れの中で関連付けて実行することができるという特徴がある。従って、ユーザプログラムを新たに作成した場合に限られず、作成したユーザプログラムに変更があった場合でもその変更に応じた専用プロセッサの生成をその都度実施することができる。この結果、ユーザはプロセッサのカスタマイズに長時間の検討を行う必要はなくなり、業務の飛躍的な効率を図ることができる。
【００４２】
（第１の実施形態のバリエーション）  
図２に記した第１の実施の形態では、ＲＯＭ／ＲＡＭ３４と専用プロセッサ３５とが別体となっているが、これらを一体として構成することができる。具体的には、実行コードファイル２２からＲＯＭ／ＲＡＭ３４への書き込み／ダウンロードを行う手段、およびＲＯＭ／ＲＡＭ３４がなくなり、代わりに再構成プロセッサ３１および専用プロセッサ３５は、内部にＲＯＭ／ＲＡＭ３４相当の回路を含んだ形態となる。プロセッサ生成装置２６は実行コードファイル２２、リストファイル２３、マップファイル２４に格納されているデータに基づいてＲＯＭ／ＲＡＭの構成を決定し、ＲＯＭ／ＲＡＭ一体型の専用プロセッサを生成する。
【００４３】
ＲＯＭ／ＲＡＭ３４を別体とした場合は、使用するＲＯＭ／ＲＡＭ３４の容量などに制約が生じる。これに対して、バリエーションの形態では、ＲＯＭ／ＲＡＭ３４の容量はユーザプログラム３０に対応して大容量から小容量まで、フレキシブルに構成することが可能である。従って、システム開発における設計の自由度が大きくなるという顕著な効果を得ることができる。
【００４４】
（第２の実施形態）  
図４は、本発明の第２の実施の形態のプロセッサ生成システム２０の構成と動作を説明するための図である。  
第２の実施の形態では、プロセッサ生成装置２６からソフトウェア開発ツール２１へのフィードバックルートを追加した点が第１の実施の形態と異なっている。従って、第１の実施の形態と同一の部位には同一の符号を付して、その詳細の説明は省略する。
【００４５】
第２の実施の形態では、カスタマイズ対象を命令以外の対象、例えば、演算レジスタに係る回路、割り込みに係る回路などを対象とする。
【００４６】
例えば、標準で３２個の演算レジスタを備えるプロセッサがあったとする。実際に使用する演算レジスタが２０個で済むのであれば残りの１２個の演算レジスタは無駄でしかない。また、標準で２５６個の割り込みに対応したプロセッサがあったとする。実際には１０個で済むのであれば残りの２４６個分の回路は無駄になる。システム案件によっては割り込み機能すら不要な場合もある。ほかにも３２ビットのアドレス空間のうち実際に使用するのが１２ビットで済むのであれば残りの２０ビット分の回路は無駄になる。
【００４７】
第１の実施の形態で示すプロセッサ生成システム２０では、このような場合についても不要レジスタの削減をある程度実施することができるが、第２の実施の形態では、更なる削減を図ることができる。
【００４８】
図５は、第２の実施の形態における、レジスタに係る回路のカスタマイズ例を示す図である。  
例えば０番から３１番までのレジスタが３２個存在し、ユーザプログラム３０がそのうちの０番〜５番および１５番を使用していると仮定する。使用レジスタの最小番号と最大番号をみるとそれぞれ０番と１５番となり、レジスタの回路としては０番〜１５番の１６個があれば十分ということになる。そこで０番〜１５番のレジスタの回路を残し、他のレジスタを除去することになるが、実際に使用しているレジスタは７個であるため、６番〜１４番のレジスタ９個は未使用であるにも関わらず無駄な回路として残ってしまう。
【００４９】
図４に示すプロセッサ生成装置２６は、実行コードファイル２２、リストファイル２３、マップファイル２４に基づいて、リソース（レジスタ）の使用状況を把握してその結果をレポートファイル４１に記録する。解析部４２は、レポートファイル４１を参照してどのようにリソースを変更すれば回路の削減を図ることができるかを調べる。上述の例であれば、１５番レジスタを６番レジスタに番号変更すれば、無駄な回路を削減することができる。
【００５０】
そこで、解析部４２は、１５番レジスタを６番レジスタに番号変更するようソフトウェア開発ツール２１へ指示を与える。ソフトウェア開発ツール２１はそのフィードバックの指示に従ってレジスタの番号を変更して実行コードなどの生成をやり直す。その結果、使用レジスタの最小番号と最大番号はそれぞれ０番と６番となり、第１の実施の形態で説明したプロセッサ生成システム２０の動作によって、０番〜６番のレジスタの回路を残し他の回路は除去される。
【００５１】
第２の実施の形態によれば、さらに無駄な回路を削減することが可能になる。なお、第１及び第２の実施の形態においても、削減できる回路は、レジスタ自体の回路のみに限られずレジスタと関連する回路も含まれることは当然である。即ち、上述の例では、レジスタとレジスタに関連する機能との少なくとも一部を削減することが可能となる。
【００５２】
なお、同様のことはレジスタに限らず、特定範囲のメモリ、割り込みやＩ／Ｏの割り当て、例外処理（例えば、０デバイド等）回路、メモリアドレスのインデックス処理回路についても該当する。
【００５３】
なお、第２の実施形態においても、第１の実施形態のバリエーションで記載した、ＲＯＭ／ＲＡＭ３４と専用プロセッサ３５とを一体として構成する形態を採用することができる。
【００５４】
（第３の実施形態）  
第１の実施の形態では、ユーザプログラム３０の使用命令や使用リソースを静的に調べ、この結果に基づいてカスタマイズを行った。これに対して第３の実施の形態では使用命令や使用リソースを動的に調べ、この結果に基づいてカスタマイズする。その方法について説明する。なお、第１の実施の形態と同一の部位には同一の符号を付して、その詳細の説明は省略する。
【００５５】
図６は、第３の実施の形態のカスタマイズ方法を説明するための図である。  
カスタマイズの対象となるプロセッサは記述変更が許されたシンセサイザブルプロセッサ５０（以下、「Ｓプロセッサ」という。）を前提としている。Ｓプロセッサ５０は図２に示すＣＳプロセッサ２５のようにコンフィギュアブルである必要はなく、図３に示すような記述も必要としない。
【００５６】
プロセッサの選択とユーザプログラムの開発が終了した後、シミュレータ上もしくは実機上でユーザプログラム３０を実行する。その際、図６に示すように、Ｓプロセッサ５０内の制御信号の一部または全部をカスタマイズモニタ５１に接続する。このカスタマイズモニタ５１はＳプロセッサ５０をカスタマイズするときだけ接続すれば良い。
【００５７】
カスタマイズモニタ５１は、ユーザプログラムを実行中のＳプロセッサ５０の各制御信号を記録する。カスタマイズモニタ５１によって記録された各制御信号の変化（遷移）を調べることで、Ｓプロセッサ５０の回路の使用状況を把握することができる。具体的には、もし信号遷移があればその制御信号が活性化していたことを意味し、その制御信号で制御される回路がユーザプログラム３０によって利用されたことを示す。逆に信号遷移がなければその制御信号で制御される回路はユーザプログラム３０を実行する上で何も機能しなかった無駄な回路であることを示す。
【００５８】
十分にユーザプログラム３０の実行とカスタマイズモニタ５１による信号記録が終わった後で、Ｓプロセッサ５０を用いてカスタマイズを行う。具体的にはＳプロセッサ５０の制御信号のうち、カスタマイズモニタ５１によって得られた記録中に遷移がない制御信号を切断し、代わりに０または１の固定値に置き換える。
【００５９】
図７は、Ｓプロセッサ５０のカスタマイズを例示する図である。図７Ａは、Ｓプロセッサ５０のオリジナル記述、図７Ｂは、カスタマイズ後の記述である。  
図７では、カスタマイズモニタ５１での記録上で制御信号BBBの遷移がなく１のまま変化しなかった場合の例を示している。制御信号BBBが常時１であったことから図７Ｂでは00009行目のBBBを参照していた部分が'b1（バイナリで１）に置き換わっている。Ｓプロセッサ５０のカスタマイズとは、遷移しなかった制御信号を参照している部分を固定値に置き換えることである。
【００６０】
Ｓプロセッサ５０のカスタマイズが完了した後は、一般的な論理合成手順を踏むことでカスタマイズされたプロセッサを得ることができる。論理合成の段階で固定値を与えられた回路記述は論理最適化されて消滅し、ユーザプログラム３０を実行する上で必要最小限の回路にカスタマイズされたプロセッサを得ることができる。
【００６１】
第３の実施の形態では、カスタマイズを実行するにあたり、使用している命令、レジスタ、割り込み、アドレス空間などを詳細に把握する必要はない。単に制御信号が活性化しているか否かで、その先の回路の必要／不要を決定するので、全ての回路がカスタマイズの対象となり得る。
【００６２】
なお、本実施の形態で用いるＳプロセッサ５０は記述変更が許されるタイプのプロセッサで足りる。即ち、記述変更が許されたタイプのプロセッサであればカスタマイズが可能である。そのようなタイプのプロセッサは多数存在しているため、本カスタマイズ方法は広く適用することが可能である。
【００６３】
[発明の効果]  
以上説明した実施の形態によれば、種々の効果を奏することができる。
【００６４】
本実施の形態によれば、システム開発上で必要とする機能を備えつつ、無駄な回路を排除して回路コストを最小限に抑えたプロセッサを提供できる。これにより本プロセッサを搭載するカスタムＬＳＩの製造コストを削減することが可能になる。またマルチプロセッサ構成を採る場合はより多くのプロセッサを搭載することができ、性能向上に繋がる。
【００６５】
併せて近年、半導体プロセスの微細化によりひとつのカスタムＬＳＩに多くの回路を搭載できるようになったおかげで、ＬＳＩの消費電力・発熱が増加したことがシステム開発上の問題になってきている。本実施の形態のプロセッサは無駄な回路を排除することでその分の消費電力を削減できるため、冷却コスト、パッケージコスト、基板実装コスト、電源コストなどの削減も期待できる。特にマルチプロセッサ構成を採る場合は無駄な回路の蓄積がなくなるため、その効果は顕著となる。
【００６６】
なお、上述の各実施の形態で説明した機能は、ハードウェアを用いて構成するに留まらず、ソフトウェアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウェア、ハードウェアのいずれかを選択して構成するものであっても良い。
【００６７】
尚、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。  
上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００６８】
１…プロセッサ、２…命令メモリ、３…データメモリ、９…レジスタ、１１…コントローラ、１２…デコーダ、１３…切替器、１４…演算器、１５…レジスタファイル、２０…プロセッサ生成システム、２１…ソフトウェア開発ツール、２２…実行コードファイル、２３…リストファイル、２４…マップファイル、２５…シンセサイザブルプロセッサ、２６…プロセッサコンフィギュレーションツール（プロセッサ生成装置）、２７…ユーザ定義ファイル、３０…ユーザプログラム、３１…再構成プロセッサ、３２…シンセサイザ、３４…ＲＡＭ／ＲＯＭ、３５…専用プロセッサ、４１…レポートファイル、４２…解析部、５０…シンセサイザブルプロセッサ、５１…カスタマイズモニタ。
【図１】
2012003339.tif 000003
【図２】
2012003339.tif 000004
【図３】
2012003339.tif 000005
【図４】
2012003339.tif 000006
【図５】
2012003339.tif 000007
【図６】
2012003339.tif 000008
【図７】
2012003339.tif 000009