(57)【特許請求の範囲】
【請求項１】
１以上のコアを１チップ上に備え、所定機能を起動するメッセージと、この機能に必要となる演算データと演算精度とを含むパラメータとを受けて上記機能を行なう集積回路であって、
上記コアは複数のユニットを備えると共に、各ユニットは上記機能を実行する複数のモジュールを備え、
上記複数のユニットおよび上記複数のモジュールは、それぞれカスケード接続され、
上記各ユニットは、
上記メッセージが自己宛てのメッセージであるか否かを判断し、
上記メッセージが自己宛てであると判断した際、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールにて所定順序で上記演算データを取り込むことにより、上記機能に必要となるモジュールの数を決定すること、
を特徴とする集積回路。
【請求項２】
上記各ユニットは、演算データラッチ機構を備え、
上記演算データラッチ機構は、
上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールに対して所定順序でデータラッチ操作を行ない、
上記モジュールの数が不足する場合には、他のユニットの演算データラッチ機構に対して、ラッチ操作のメッセージを伝送すること、
を特徴とする請求項１に記載の集積回路。
【請求項３】
上記各ユニットは、上記機能が減算または除算である場合、演算結果０を出力する上記モジュールの数を上位のモジュールから下位のモジュールに至り計数することにより、演算結果の精度範囲を算定すること、
を特徴とする請求項１または２に記載の集積回路。
【請求項４】
１以上のコアを１チップ上に備え、上記コアは複数のユニットを備えると共に、各ユニットは上記機能を実行する複数のモジュールを備え、上記複数のユニットおよび上記複数のモジュールは、それぞれカスケード接続されて構成され、所定機能を起動するメッセージと、この機能に必要となる演算データと演算精度とを含むパラメータとを受けて上記機能を行なう集積回路、に対する制御方法であって、
上記各ユニットにおいて、上記送られたメッセージが自己宛てのメッセージであるか否かを判断するメッセージ判断工程と、
上記メッセージ判断工程において自己宛てであると判断した際、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールにて所定順序で上記演算データを取り込むことにより、上記機能に必要となるモジュールの数を決定するモジュール数決定工程と、
を備えることを特徴とする集積回路の制御方法。
【請求項５】
上記モジュール数決定工程において、
上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールに対して所定順序でデータラッチ操作を行なうデータラッチ操作工程と、
上記モジュールの数が不足する場合には、他のユニットの演算データラッチ機構に対して、ラッチ操作のメッセージを伝送するラッチメッセージ伝送工程と、
を備えることを特徴とする請求項４に記載の集積回路の制御方法。
【請求項６】
上記モジュール数決定工程において、上記機能が減算または除算である場合、演算結果０を出力する上記モジュールの数を上位のモジュールから下位のモジュールに至り計数することにより、演算結果の精度範囲を決定する精度範囲決定工程、
を備えることを特徴とする請求項４または５に記載の集積回路の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、１以上のコアを１チップ上に備える集積回路およびその制御方法に関し、特に、オブジェクト指向技術を適用した集積回路およびその制御方法に関するものである。
【０００２】
【従来の技術】
近年、集積回路技術が飛躍的に向上していることに伴い、より多数の回路ブロックをシングルチップ上に実現できるようになってきた。このような流れを受け、メモリ等のサブシステムをプリント基板上に配置してシステムを構築するシステムボードから、サブシステムを一つのチップ上に内蔵してシステムを構築するシステムオンチップ（System On Chip：ＳＯＣ）への移行が加速されている。このようなＳＯＣの応用範囲は、コンピュータ、ファックス、携帯電話、および、多目的機器等と広範囲に及んでおり、その重要性が益々高まっている。
【０００３】
ここで、一つのチップ上に内蔵する多数の機能ブロックの各々を、最初から設計することは極めて困難である。このため、大規模マクロセル（コア、メガセル）の標準化を図ることにより、開発元の異なるそれぞれのコアを自由に選択して一つのチップ上に集積できるようにする、コアの新しい流通形態が注目されている。
【０００４】
【発明が解決しようとする課題】
しかしながら、ＳＯＣの現状には次のような課題が指摘されている。
まず、ＳＯＣが益々高集積化する一方で、ＳＯＣの開発期間は益々短期化することが求められている。
また、複数のＶＣ（Virtual Component）を接続したＳＯＣを設計するためには、全てのＶＣの使用法を理解している必要がある。しかしながら、これらＶＣは複数の異なった開発元から提供されたものであるため、ＡＳＩＣ(Application Specified IC)の提供側は、多様なＶＣに関する専門知識を通常持っていない。
さらに、開発元の異なるＶＣの再利用法は、未だ定まっていない。
【０００５】
このような課題を解決するためには、過去に開発されたＶＣのインタフェースを標準化し、このＶＣを再利用可能にすることが考えられるが、多様な環境下で開発されたＶＣのインタフェースを標準化することは、その知的財産権（Intellectual Property:：ＩＰ）の保持を行なう必要性があることもあり、容易ではない。
また、特に、ＶＳＩ（Virtual Socket Interface)のように用途が特定されないＶＣについては、その標準化が困難である。
【０００６】
本発明は上記問題に鑑みてなされたもので、ソフトウェア分野において用いられているオブジェクト指向技術をハードウェアである集積回路に適用することにより、コアの再利用や機能拡張を容易に行なうことができる、集積回路およびその制御方法を提供することを目的としている。
【０００７】
【課題を解決するための手段】
このような目的を達成するため、請求項１に記載の集積回路は、１以上のコアを１チップ上に備え、所定機能を起動するメッセージと、この機能に必要となる演算データと演算精度とを含むパラメータとを受けて上記機能を行なう集積回路であって、上記コアは複数のユニットを備えると共に、各ユニットは上記機能を実行する複数のモジュールを備え、上記複数のユニットおよび上記複数のモジュールは、それぞれカスケード接続され、上記各ユニットは、上記メッセージが自己宛てのメッセージであるか否かを判断し、上記メッセージが自己宛てであると判断した際、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールにて所定順序で上記演算データを取り込むことにより、上記機能に必要となるモジュールの数を決定することを特徴とする。
【０００８】
この集積回路によれば、送られたメッセージが自己宛てのメッセージであるか否かを判断し、自己宛てのメッセージである場合には、機能に必要となるモジュールの数を自動的に決定する。このことにより、各コアは、演算に必要となる制御を自律的に行なうことができる。したがって、コア（ＶＣ）の使用者は抽象的に部品化されたＶＣの内部を知る必要がなく、またＶＣが他のＶＣの動作によって破壊（変更）される危険性がない。したがって、コアの再利用や拡張を容易に行なうことができる。
【０００９】
また、請求項２に記載の集積回路は、請求項１に記載の集積回路において、上記各ユニットは、演算データラッチ機構を備え、上記演算データラッチ機構は、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールに対して所定順序でデータラッチ操作を行ない、上記モジュールの数が不足する場合には、他のユニットの演算データラッチ機構に対して、ラッチ操作のメッセージを伝送することを特徴とする。
【００１０】
これは、モジュール数を決定するための構成を一層具体的に示すものである。この集積回路は、演算データを取り込んだモジュールの数が演算精度に対応する迄、データラッチ操作を行い、モジュールの数が不足する場合には、他のユニットにおいて、同様にデータラッチ操作を行なう。このようにデータラッチを動的に順次行なうことにより、演算精度に応じたモジュール数を決定することができる。
【００１１】
また、請求項３に記載の集積回路は、請求項１または２に記載の集積回路において、上記各ユニットは、上記機能が減算または除算である場合、演算結果０を出力する上記モジュールの数を上位のモジュールから下位のモジュールに至り計数することにより、演算結果の精度範囲を算定することを特徴とする。
【００１２】
これは、減算または除算を行なう際に演算結果の精度範囲を決定するための構成を一層具体的に示すものである。この集積回路は、演算結果０を出力するモジュールの数を計数することにより、演算結果の精度範囲を算定する。このように特定の演算結果を出力するモジュールの数を計数することにより、演算結果の精度範囲を算定することができる。
【００１５】
また、本発明は集積回路の制御方法に関するものであり、請求項４に記載の集積回路の制御方法は、１以上のコアを１チップ上に備え、上記コアは複数のユニットを備えると共に、各ユニットは上記機能を実行する複数のモジュールを備え、上記複数のユニットおよび上記複数のモジュールは、それぞれカスケード接続されて構成され、所定機能を起動するメッセージと、この機能に必要となる演算データと演算精度とを含むパラメータとを受けて上記機能を行なう集積回路、に対する制御方法であって、上記各ユニットにおいて、上記送られたメッセージが自己宛てのメッセージであるか否かを判断するメッセージ判断工程と、上記メッセージ判断工程において自己宛てであると判断した際、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールにて所定順序で上記演算データを取り込むことにより、上記機能に必要となるモジュールの数を決定するモジュール数決定工程とを備えることを特徴とする。
【００１６】
この制御方法によれば、送られたメッセージが自己宛てのメッセージであるか否かが判断され、自己宛てのメッセージである場合には、機能に必要となるモジュールの数が自動的に決定される。このことにより、コアでは演算に必要となる制御を自律的に行なうことができる。したがって、コア（ＶＣ）の使用者は抽象的に部品化されたＶＣの内部を知る必要がなく、またＶＣが他のＶＣの動作によって破壊（変更）される危険性がない。したがって、コアの再利用や拡張を容易に行なうことができる。
【００１７】
また、請求項５に記載の集積回路の制御方法は、請求項４に記載の集積回路の制御方法において、上記モジュール数決定工程において、上記演算データを取り込んだ上記モジュールの数が上記演算精度に対応する迄、上記複数のモジュールに対して所定順序でデータラッチ操作を行なうデータラッチ操作工程と、上記モジュールの数が不足する場合には、他のユニットの演算データラッチ機構に対して、ラッチ操作のメッセージを伝送するラッチメッセージ伝送工程とを備えることを特徴とする。
【００１８】
これは、モジュール数を決定するための構成を一層具体的に示すものである。この制御方法によれば、演算データを取り込んだモジュールの数が演算精度に対応する迄、データラッチ操作が行なわれ、モジュールの数が不足する場合には、他のユニットにおいて、同様にデータラッチ操作が行なわれる。このようにデータラッチを動的に順次行なうことにより、演算精度に応じたモジュール数を決定することができる。
【００１９】
また、請求項６に記載の集積回路の制御方法は、請求項４または５に記載の集積回路の制御方法において、上記モジュール数決定工程において、上記機能が減算または除算である場合、演算結果０を出力する上記モジュールの数を上位のモジュールから下位のモジュールに至り計数することにより、演算結果の精度範囲を決定する精度範囲決定工程を備えることを特徴とする。
【００２０】
これは、減算または除算を行なう際に演算結果の精度範囲を決定するための構成を一層具体的に示すものである。この制御方法によれば、演算結果０を出力するモジュールの数を計数することにより、演算結果の精度範囲が算定される。このように特定の演算結果を出力するモジュールの数を計数することにより、演算結果の精度範囲を算定することができる。
【００２３】
【発明の実施の形態】
以下に、本発明にかかる集積回路およびその制御方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
以下では、まず、実施の形態１において、本発明の概要と、本発明を算術演算機構に適用した例と、さらに算術演算機構のうちの加算／減算機構に適用した例を示す。また、実施の形態２において、本発明を除算器に適用した例を示す。そして、最後に、実施の形態３において、本発明をRSA暗号に組み込む乗除算機構に適用した例を示す。
【００２４】
（実施の形態１）
（概要）
まず、実施の形態１について説明する。
最初に、本実施の形態１における集積回路およびモジュールの制御方法の概要について説明する。本集積回路およびモジュールの制御方法は、概略的に、ソフトウェアにおいて用いられているオブジェクト指向技術の考え方をハードウェアであるＶＣに適用し、あたかもオブジェクト指向技術でのオブジェクト内のデータ処理装置のように働かせられる機能を持ったＶＣを提供するものである。
【００２５】
このオブジェクト指向技術は、機能毎の部品化を図り、内部を隠蔽してカプセル化するものであり、再利用性や拡張性などのメリットから普及してきている。これをＶＣに適用することにより、ＶＣの使用者は抽象的に部品化されたＶＣの内部（後述するユニットや演算モジュールの数、演算精度、クロック数等）を知る必要がなく、またＶＣが他のＶＣの動作によって破壊（変更）される危険性がない。したがって、コアの再利用や拡張を容易に行なうことができる。また、オブジェクト化することにより、処理データの規模に左右されないソフトウェアのような柔軟性を持ったコアが実現できる。この結果、メッセージとパラメータに関することが主な標準化となり、様々な制約からなる項目から解放され、標準化がし易くなる。
【００２６】
（概要−オブジェクト指向技術の適用の基本的概念）
このような利点を有するオブジェクト指向技術は、概略的に、下記のように集積回路に適用することができる。
図１は、オブジェクト指向技術を適用した複数のＶＣから構成されるＳＯＣを示すブロック図である。この図１において、ＳＯＣ１は、複数のＶＣ２を備えて構成されており、これら各ＶＣ２はバス３を介して相互に接続されている。これら各ＶＣ２は、相互に同一または異なる各種の演算機能や制御機能を実現するコンポーネントである。
【００２７】
ここで、使用者は、複数のＶＣ２の全てに対して、必要なメッセージ（必要とするＶＣ２の機能を特定するための情報であり、例えば、加減乗除算のいずれかを指示する情報）と、パラメータ（ＶＣ２が処理を行なう対象となるデータおよびその際に必要となるデータ）とをバス３を介して送る。このメッセージは、例えば、各ＶＣ２の実装時にアドレスコードのようなビットパターンを割り振り、コード変換表を介する等して、そのビットパターンを除算や暗号といったメッセージとして送ることができる。
そして、各ＶＣ２には、このメッセージを判断するための回路を付加しておき、この回路の判断結果に応じて、コアの起動を制御する。すなわち、各ＶＣ２は、メッセージを自己宛てのメッセージか否か判断し、自己宛てのメッセージであると判断した場合にはパラメータを取り込み、処理した結果をバス３を介して返す。これが、本集積回路におけるオブジェクト指向技術の基本概念である。
【００２８】
次に、この基本概念を、より具体的に説明する。特に、図１に示した概念では各ＶＣ２がバス３を介してメッセージの通信を行なっているが、各ＶＣ２の機能によっては、各ＶＣ２が相互にメッセージを通信する必要が生じ、バス３の調停機構が必要になるため、このような場合を考慮した基本概念について説明する。
図２は、オブジェクト指向技術を適用した複数のＶＣから構成されるＳＯＣを示すブロック図である。この図２において、ＳＯＣ１は、相互にメッセージの通信を行なう必要がない複数のＶＣ２ａと、相互にメッセージの通信を行なう必要がある複数のＶＣ２ｂ（ＶＣ２ｂ１〜ＶＣ２ｂ４）とを備えて構成されている。ここで、ＶＣ２ａについては、図１と同様に、バス３ａを介してメッセージの通信を行なうことができる。
【００２９】
一方、ＶＣ２ｂに関しては、やはりバス３ａを介してメッセージの通信を行なうが、ＶＣ２ｂの相互間で通信を行なうためにバス３ａの調停を行なう必要が生じる。このような調停機構としては公知のものを適用することもできるが、図２においては、新規な調停機構を用いている。この調停機構は、バス３ａの使用権通知線３ｂと、バス３ａの使用終了通知線３ｃとを備えて構成されている。
バス３ａの使用権通知線３ｂは、複数のＶＣ２ｂを、ＶＣ２ｂ１、ＶＣ２ｂ２．．．ＶＣ２ｄ４の如く、順次的に巡回接続する。また、バス３ａの使用終了通知線３ｃは、各ＶＣ２ｂの出力を当該ＶＣ２ｂの上流のＶＣ２ｂに入力するものであり、例えば、ＶＣ２ｂ２の出力はＶＣ２ｂ１、ＶＣ２ｂ３の出力はＶＣ２ｂ２に入力される。
【００３０】
このような構成において各ＶＣ２ｂは、自己の上流のＶＣ２ｂから上記使用権通知線３ｂを介して行なわれた出力がＬｏｗである場合には、バス３ａの使用が可能であると判断し、自己のバス３ａの使用が終了した際には、自己の使用権通知線３ｂを介して行なう出力をＬｏｗとし、使用終了通知線３ｃを介してＬｏｗの出力が入力された場合には、自己の使用権通知線３ｂを介して行なう出力をＨｉｇｈとする（なお、ＬｏｗとＨｉｇｈを逆転させてもよい）。
【００３１】
例えば、図２の状態において、ＶＣ２ｂ２は、自己の上流のＶＣ２ｂ１から上記使用権通知線３ｂを介して行なわれた出力がＬｏｗであるため、バス３ａの使用が可能であると判断し、このバス３ａを介してメッセージを受け渡す。そして、この受け渡しが終了することにより、バス３ａの使用が終了した場合、ＶＣ２ｂ２は、自己の出力をＬｏｗとする。
すると、このＬｏｗ出力を使用終了通知線３ｃを介して受けたＶＣ２ｂ１は、自己の使用権通知線３ｂを介して行なう出力をＨｉｇｈとするので、これによってＶＣ２ｂ２のバス３ａの使用権が失われる。また、同時に、ＶＣ２ｂ２の出力がＬｏｗになることにより、その下流のＶＣ２ｂ３にバス３ａの使用権が与えられ、バス３ａの使用が可能となる。
以降、この制御を同様に繰り返すことにより、ＶＣ２ｂ１〜ＶＣ２ｄ４がバス３ａを順次使用することができる。この制御では、使用権に関する情報が使用権通知線３ｂと使用終了通知線３ｃを用いて受け渡されており、バス３ａを用いる必要がない。
【００３２】
（概要−適用上の課題）
このようなオブジェクト指向技術を集積回路に具体的に適用するためには、新たな技術的課題が生ずる。すなわち、ＶＣ２内での処理に必要となる後述するユニット数やモジュール数（演算器やメモリ等の数）、演算精度、あるいは、クロック数を、このＶＣ２自身で判断させる必要がある。
【００３３】
（概要−課題解決のための手段）
このように任意精度に対応する必要があるという問題に対しては、ＶＣ２をチップスライス化することが有効である。このチップスライス化とは、乗算回路や除算回路等の演算部（モジュール）を１または複数単位でユニット化し、各ユニットを複数個設けて相互にカスケード接続することによって、各ユニットをチップ単位とする演算処理を行なうものである。この時、各ユニット内の制御回路により、演算精度に合わせて必要なモジュールおよびユニットが用いられて演算データが分散処理される。
【００３４】
しかし、チップスライス化する場合においても、近年の高精度化傾向を考慮すると、必要なユニット数やモジュール数の選定等が問題となる。すなわち、予め必要と思われるチップ（ユニット）数をシステム内部に用意しておくが、それでも不足する場合はシステム外部に設置されたモジュールまでも制御する必要が生じる。このような場合、一つの制御部から全モジュールを制御する中央制御形では制御信号の追増加および信頼性に関して問題がある。
そこで、本願においては、各ユニット内に、演算に必要なモジュール数とクロック数の制御機能を持たせることによって、上記の問題を解決している。これにより、新たに回路を用意したり変更することなく、必要とされるユニット数、モジュール数、および、全クロック数を演算機構が判断し、結果を返すことが可能になる。
【００３５】
（算術演算機構への適用例）
次に、上述のような課題解決手段の内容について一層具体的に説明する。ここでは、この課題解決手段を、各種の処理に不可欠な算術演算機構に適用した場合を例に挙げて説明する。チップスライス化された演算機構の概要を図３に示す。この図３において、システム内部４と、システム外部５には、それぞれ複数のユニットＵ１〜Ｕｎが設けられている。
【００３６】
各ユニットＵ１〜Ｕｎは、オブジェクト指向技術を取り入れてチップスライス化したもので、その内部には、それぞれ１または複数のモジュールＭ１〜Ｍｎがカスケード接続されている。
また、ユニットＵ１〜Ｕｎはカスケード接続されており、さらに、各々のユニットＵ１〜Ｕｎはバス３に接続された状態で演算機構を構成している。
ここで、各ユニットＵ１〜Ｕｎおよび各モジュールＭ１〜Ｍｎは、そのカスケード接続の順序に対応して、最下位〜最上位まで処理順序が決定されている。図３においては、ユニットＵ１が最下位ユニット、ユニットＵｎが最上位ユニット、各ユニット内においてはモジュールＭ１が最下位モジュール、モジュールＭｎが最上位モジュールである。
【００３７】
（算術演算機構への適用例−メッセージの判断）
このような演算機構に対して、使用者は、演算を指示するメッセージ（ここでは、加減乗除算のいずれかを指示する情報）と、パラメータ（演算精度および演算データ）とをバス３を介して順次送る。すると、各ユニットＵ１〜Ｕｎの各モジュールＭ１〜Ｍｎは、まず、メッセージを自己宛てのメッセージか否か判断し、自己宛てのメッセージである場合には、パラメータを取り込んでその演算精度を記憶する。そして、最下位ユニットＵ１の最下位モジュールＭ１から、その場合に必要となる最も上位のユニットＵ２〜Ｕｎの最も上位のモジュールＭ１〜Ｍｎに至るまで、順次、演算データを取り込む。
【００３８】
（算術演算機構への適用例−モジュール数の判断）
このように演算データを取り込む際、各モジュールＭ１〜Ｍｎは、演算に必要となるモジュール数を判断する。以下、このモジュール数の判断機構について説明する。
図４はモジュール数の判断と演算データのラッチ機構を示す図である。この図４において、ユニットＵｘと、このユニットに対する下位ユニットＵx-1および上位ユニットＵx+1とが示されており、各ユニットＵx-1〜Ｕx+1には、それぞれ、演算データラッチ機構Ｒと、複数の演算モジュールＭ１〜Ｍｎとが設けられている。そして、各ユニットＵx-1〜Ｕx+1の演算データラッチ機構Ｒがカスケード接続され、各ユニットＵx-1〜Ｕx+1の演算モジュールＭ１〜Ｍｎがカスケード接続され、演算データラッチ機構Ｒと各演算モジュールＭ１〜Ｍｎとが接続されている。
【００３９】
このような構成において、まず最初に、ユニットＵｘは、下位のユニットＵx-1の演算データラッチ機構Ｒからラッチ操作のメッセージを受けて、演算精度と比較しながら、自己のユニットＵｘの内部の演算モジュールＭ１〜Ｍｎについてデータラッチ操作を繰り返す。そして、演算精度に対して演算モジュールＭ１〜Ｍｎの数が不足する場合、演算データラッチ機構Ｒは、自己の直近上位のユニットＵx+1の演算データラッチ機構Ｒにラッチ操作のメッセージを伝える。
【００４０】
このようなラッチ操作を、図３の最下位ユニットＵ１から始めて、演算精度と演算モジュールの数とが対応する迄、順次、直近上位のユニットＵにデータラッチ操作のメッセージを伝える。このようなラッチ操作を行なうことにより、任意の精度に対応した演算モジュール数を動的に決めることができる。
また、このラッチ操作と同時に、最下位モジュールから順に演算データを取り込む。そして、必要な演算データが全て取り込まれると、演算機構内では演算精度にあったクロックを用いて演算が実行され、演算結果がバスを介して返送される。
【００４１】
（算術演算機構への適用例−モジュール数の判断−減算と除算機構の場合）
上記のように、演算モジュール数の判断は、各ユニットＵに記憶された演算精度によって判断される。しかしながら、算術演算機構が減算機構である場合には、その演算結果である「差」の精度範囲が、「０」〜「減数データのビット数」と不定になる。あるいは、算術演算機構が除算機構である場合には、その演算結果である「商と剰余」の精度範囲が、やはり「０」〜「除数データのビット数」と不定になる。
この場合におけるモジュール数の判断は、上記判断とは逆に、最上位モジュールから下位モジュールに向かって、「０」がどのモジュールまで続いているかを知らせる同様な情報伝搬機構によって実現できる。
【００４２】
（加算／減算機構への適用例）
次に、このようなオブジェクト技術指向について、さらに具体的に説明する。ここでは、算術演算機構のうち、加算／減算機構に適用した場合を例に挙げて説明する。
まず、ここで想定している加算／減算機構について説明する。この加算／減算機構は、ある演算精度の加算／減算器（モジュール）を複数備えて構成されている。そして、各モジュールはカスケード接続されており、使用するモジュール数を変更することで、1モジュールの演算精度の整数倍に演算精度を拡張することが可能である。また、各モジュールは、自己に送られた演算精度に基づいて、必要なモジュール数とクロック数およびクロック周波数等を判断し、演算結果を返す。この判断機構は中央制御形とならないよう、各モジュール間のメッセージ通信の伝搬により行なう自己判断機構とする。また、パラメータに演算精度を付加することにより、演算精度の制限を受けず、任意精度に対応可能となる。
【００４３】
このような加算／減算機構におけるモジュールのブロック図を図５に示す。また、この際の各モジュールの処理のフローチャートを図６に示す。
この図５においてモジュールＭは、ｎビット加／減算器１０、分周器１１、演算精度の記憶部１２、および、演算の種類の記憶部１３を備えて構成されており、これら各部は図示のようにバス１４にて接続されている。
【００４４】
（加算／減算機構への適用例−メッセージ判断の詳細）
このような構成においてモジュールＭは、加減乗除演算を指示するメッセージをバス１４を介して受け取る。このメッセージは、例えば、その上位２ビットが、加算であれば「００」、減算であれば「０１」のように所定方法に従って構成されており、モジュールＭは、このようなメッセージを記憶部１３の記憶内容と比較することにより、メッセージが自己宛てか否かを判断する（ステップＳ−１）。
そして、モジュールＭは、メッセージが自己宛てである場合には、その内容に応じて、nビット加／減算器１０を加算器あるいは減算器に切り替える（ステップＳ−２）。
【００４５】
その後、モジュールＭは、メッセージに続けて送られてきたパラメータに含まれる演算精度を、記憶部１２に記憶する（ステップＳ−３）。
そして、この記憶部１２に記憶した演算精度を用いて、演算に最適なクロック周波数を分周器１１を通して選定する（ステップＳ−４）。
次いで、モジュールＭは、演算に必要な演算モジュール数の決定と、パラメータに含まれる演算データの取り込みとを、上述の図３と図４で示したように、記憶部１２に記憶した演算精度と比較しながら行なう（ステップＳ−５）。また、このため、上位モジュールと下位モジュール伝搬用メッセージとして、図示のようにデータラッチ信号を設ける。また、nビット加／減算器１０の接続は、図示のように桁上げ／桁借りデータを下位桁から入力して、上位桁へ出力することにより、容易に実現できる。
そして、全ての演算データを取り込んだ後で演算を実行し（ステップＳ−６）、この演算結果をバス１４を介して返送して（ステップＳ−７）、演算処理を終了する。
【００４６】
（加算／減算機構への適用例−クロック数の判断の詳細）
ここで、ステップＳ−４におけるクロック数の判断について、一層詳細に説明する。この判断は、記憶部１２に記憶してある演算精度と比較しながら、分周器１１の出力のクロック数をカウントし、必要なクロック数を制御する。例えば、演算精度がｎビット×ｎビットである場合、分周器１１の出力の必要なクロック数はｎとなる。
【００４７】
ここで、多精度演算時は、多くのモジュールのカスケード接続になる。従来の一系統クロックに同期した演算では多精度時のクロックスキューが問題になるが、本機構では各モジュールＭ分のクロック用として考えればよく、精度増に対するクロックスキューは問題とならない。一つ前の演算結果を半クロック間ラッチしておくことにより、各モジュールＭ間のクロックの位相差は半クロック以内であればよく、演算結果の更新（ラッチ）はその半クロック後であることによる。
【００４８】
（加算／減算機構への適用例−減算時の演算結果の精度の判断の詳細）
次に、メッセージの内容が減算である場合の演算結果の精度判断について詳細に説明する。なお、除算の場合も同様である。
減算結果（あるいは除算結果）のビット数は最大、「減数（あるいは除数）のビット数」〜「０」と不定になる。そこで演算結果が上位モジュールからどのモジュールまで「０」が続いているかを伝えるデージーチェーンを構成することにより、演算結果の精度を判断することができる。そのための信号が、図５に示す、演算結果の精度判断信号（ARIとARO）である。
【００４９】
図７に演算結果の精度判断機構を示す。この図７においては、複数のモジュール間の精度判断信号の接続関係と出力状態とを示す。この図７において、デージーチェーン用の精度判断信号ARIとAROの関係は、ARIがLowでかつ自モジュールの演算結果が「０」のときAROをLow出力する。
すなわち、
【数１】
0004328905.tif 000002
である。
したがって、図７のように、最上位モジュールＭｎのARIはプルダウンし、ARIがLowでAROをHigh出力しているモジュールＭn-2以降の結果を有効桁数と判断することができる。
【００５０】
（実施の形態２）
次に、実施の形態２について説明する。この実施の形態２は、概略的に、オブジェクト指向技術を除算器に適用した例を示すものである。
実施の形態１で示した内容は、チップスライス化が実現できることを前提にしている。したがって、除算器のように、チップスライス化が最も困難とされてきたものについても、このチップスライス化を行なった上で、オブジェクト指向技術を適用することが必要となる。
以下、除算器のチップスライス化について説明した後、オブジェクト指向技術を適用した除算器について説明する。
【００５１】
本願出願人は、これまでに、特に演算に多くの時間を要する乗除算に関し、演算精度に応じて演算機構を構成することによって効率的な演算を実行する分散処理アーキテクチャの開発を行ってきた（１−中村次男、笠原宏：「任意精度の演算が可能な並列除算器のアーキテクチャ」、信学論（C-II）、Vol.J75-C-II、No.5、pp.185-192（1992-5）、２−中村次男、笠原宏：「任意の精度に被除数を拡張できる並列除算器の提案」、電学論（C）、Vol.111-C、No.7、pp.273-278（1991-7）、３−中村次男、笠原宏：「任意の精度に拡張容易な除算器の提案」、電学論（C）、Vol.111-C、No.3、pp.123-128（1991-3）、４−中村次男、笠原宏：「拡張容易な乗算器モジュールとそのワンチップ化の提案」、電学論（C）、Vol.110-C、No.2、pp.95−100（1990-2））。
【００５２】
特に、除算器はこれまで演算桁数を越えた使用が不可能であったが、本願出願人は、数モジュールの除算器に除算データを振り分けて除算を分散処理するチップスライス化の実現に成功した。その結果、演算精度に対し、ダイナミックに除算モジュールの結合が行われ、要求された任意の精度で除算実行を容易に行なうことが可能となった。本方式は完全なハードウェア化で実現でき、ソフトウェアのような柔軟性と開発効率の問題が解決され、しかもチップスライス化により低コストでの実現が期待できる。
【００５３】
ここで、並列形はクロックや制御回路を必要とせず高速演算向きであるが、多精度演算においては集積度とファンイン／ファンアウト増の問題が伴う。一方、順序回路形はクロックを用いる分、並列形よりは演算速度が低下するが構成ゲート数が少なく、多精度演算向きであるといえる。
【００５４】
次に、本願出願人が開発した順序回路形チップスライス機構について述べる。
本除算器のアルゴリズムは減算シフト方式に基づいたものである。本除算モジュ−ルを図８に示す。自モジュール内nビットの除数Ｙn-1〜Ｙ０と被除数との減算は、被除数が1ビットシフトされるごとに行われ、n回（ステップ）繰り返されて1除算モジュ−ル分の除算が終了する。このシフトされる被除数、減算結果および部分剰余の伝搬入出力をそれぞれ以下のような各記号で定義する。
データ伝搬の入出力
ＱＩ：被除数のシフト入力
ＱＯ：被除数のシフト出力
ＢＩ：減算結果の桁借り入力
ＢＯ：減算結果の桁借り出力
ＲＩ：部分剰余のシフト入力
ＲＯ：部分剰余のシフト出力
【００５５】
ここで、あるステップ時の被除数をＸn-1〜Ｘ０、その1ステップ前の部分剰余をＤkn-1〜Ｄk0および減算抑止信号をPとしたとき、減算結果の差Ｄn-1〜Ｄ０は各減算時の桁借り出力をＢn-1〜Ｂ０とすると、以下の論理式で示される。
【００５６】
【数２】
0004328905.tif 000003
【数３】
0004328905.tif 000004
【００５７】
以下、同様に、
【数４】
0004328905.tif 000005
【００５８】
【数５】
0004328905.tif 000006
以上のＤn-1〜Ｄ０が新部分剰余Ｄkn-1〜Ｄk0になる。また、各減算結果の桁借り出力は以下の論理式で示される。
【００５９】
【数６】
0004328905.tif 000007
【００６０】
【数７】
0004328905.tif 000008
【００６１】
以下、同様に、
【数８】
0004328905.tif 000009
【００６２】
【数９】
0004328905.tif 000010
【００６３】
上式は、初段の入力ＲＩには被除数のＭＳＢが1ビットシフトした状態での演算操作開始を意味している。つまり、最上位モジュールの被除数はＭＳＢから最下位モジュールのＲＩに伝搬し、1除算操作終了時にはＲＩにＸ０が与えられる。Ｄkn-1と最終段の減算結果のDn-1は減算抑止信号Pによって選択され、出力ＲＯから上位モジュールの入力ＲＩに自モジュールの部分剰余として伝搬する。
【００６４】
【数１０】
0004328905.tif 000011
また、モジュール内最上位桁借りＢn-1は、出力ＢＯから上位モジュールの入力ＢＩに桁借り出力として伝搬する。
【００６５】
最上位モジュールのBn-1が減算抑止信号Pとして、全モジュールにフィードバックされる（全モジュールを連結して減算した結果、負のときPは「１」）と同時に商としてＱＩに伝搬する。
例えば、４ビット除算器の場合、除算データの被除数と除数および除算結果の商と剰余はそれぞれ４ビットで、以下のように各記号を定義する。
被除数    Ｘ３、Ｘ２、Ｘ１、Ｘ０
除数      Ｙ３、Ｙ２、Ｙ１、Ｙ０
商        Ｑ３、Ｑ２、Ｑ１、Ｑ０
剰余      Ｒ３、Ｒ２、Ｒ１、Ｒ０
【００６６】
１モジュールの各ステップを図９に示す。図９において、各ステップではＢＩも含めて除数Ｙ３〜Ｙ０との減算を行い、その結果の桁借り出力がＢＯになる。除算のオーバーフローを避け、すべての演算を可能とするため、被除数の上位４ビットＸ７〜Ｘ４は初期設定ですべて「０」にイニシャライズされる。従って、1モジュールの被除数は８ビットであるが、実際の演算は４ビット÷４ビットである。
【００６７】
図９から、kステップにおけるｉ桁目の部分剰余Ｒｉは次式で示される。
【数１１】
0004328905.tif 000012
各ステップにおいて最終桁借り出力が正（「０」も含む）で商は「１」（負で「０」）になり、Ｑ３から順にＱ０へと商が求まる。
【００６８】
上述のチップスライス化理論によって、今まで不可能視されていた除算の分散処理が可能になり、nビット除算にはnクロックで効率的に除算を実行する分散処理アーキテクチャが実現できる。
図１０は、８ビットの精度のｍ個の除算器（モジュール）Ｍ１〜Ｍｍを設け、８〜８mビット精度の除算機構を示したものである。これらＭ１〜Ｍｍは、その間に設けたSW1、SW2、SW3……によって、必要に応じて接続される。例えば、８ビット精度ではすべてのスイッチはオフ、１６ビット精度ではSW１だけがオン、そして８mビット精度ではすべてのスイッチがオン状態になる。当然、被除数と除数は図１０の下位８ビットから８ビット単位に、左側の除算器Ｍ１から順次それぞれの除算器Ｍ２〜Ｍｍに与えられる。実際に８ビット除算器Ｍをワンチップ化し、ボード上に４チップ実装し、８〜３２ビット除算の実験を行った。
【００６９】
次に、図１０の除算機構を内蔵した任意精度除算ユニットの試作について報告する。先に開発した除算器Ｍのチップスライス化とボード上での試作は、予め用意しておいたシステム内部で処理できる程度の演算精度を想定し、従来のような中央制御形によるものであった。しかし、前述したような超高精度化対応やVSIのVCを考慮し、これまでの中央制御形ではなく、各演算チップがオブジェクト指向手法を取り入れ、演算精度に合わせて複数の同一演算チップだけの動的な接続で任意の精度に対応可能な機構を本願出願人は新たに開発し、試作実験を行った。
【００７０】
基本的には、上述のように、カスケード接続した数モジュールをメッセージとパラメータに応じて制御する処理機構組込形のユニット構成になる（図１１）。1ユニットの処理能力を超えたパラメータに対しては、更にカスケード接続したユニット間のメッセージ通信により必要なユニット数が用いられて、処理結果を返す。
【００７１】
（除算オブジェクトへの適用）
次に、本願出願人が提案するオブジェクト指向ハードウェア設計法について、試作を通してその動作確認を行ったので、この内容について以下説明する。
本除算オブジェクトは計算機（ホスト）の高速で任意精度対応補助除算機構としてのものである。ただ大きな障害としてはシステムへの実装の問題が挙げられる。優れた機能をPLDやFPGAなどでチップ化しても、例えば、計算機内に組み込んだり、システムバスに接続するにはハードウェアの知識は不可欠であり、だれにでも容易に行えるものではない。
【００７２】
そのため、PCIバス接続用のインタフェース基板などが市販されているが、どの機種の計算機にも簡単に接続できる実装の容易性を考慮し、先ず演算速度よりもシステムの動作確認を目的に、ＲＳ−２３２Ｃ端子に直接接続するタイプの除算ユニットを試作した。1ユニットは順序回路形８ビット除算器４個構成とした。従って、本除算ユニットはひとつで８から３２ビットの可変精度除算を効率よく行い、更に同除算ユニットをカスケード接続することにより、任意の精度に対応可能である。
【００７３】
必要な可変長除算データをホスト側から入力し、精度に比例したクロック数で除算を実行後、結果をホスト側に返送する。本除算ユニットの構成図を図１２に示す（遊佐敦史、笠原宏、中村次男：「ＲＳ−２３２Ｃで接続可能な任意精度補助除算ユニットの試作」、信学総全大、A-51（1995-3））。
【００７４】
ここでは、ＲＳ−２３２Ｃ機能も含めた本除算ユ二ニットのワンチップ化を想定し、ＲＳ−２３２Ｃインタフェースは必要最小限の機能に限定した。図１２に示すように、本除算ユニット２０のＲＳ−２３２Ｃコネクタ２１を、ホストコンピュータ３０のＲＳ−２３２Ｃコネクタ３１に直接差し込むことで、両者を接続する。なお、試作では動作確認を目的にＲＳ−２３２Ｃインタフェースとしたが、SOCやシステム内部に実装する場合はバスインタフェースが適している。
【００７５】
図１２の可変精度除算機構２２は、８〜３２ビットの除算を、演算精度に比例したクロック数を用いて実行する。また、バッファ機構２３には、ホストコンピュータ３０からの演算精度を付加した、８〜３２ビットの除算データを格納する。このバッファ機構２３は、８除算データまで格納できるバッファとして試作したが、ホストコンピュータ３０からの送信要求がなくなった場合か、バッファが満杯になった場合には、可変精度除算機構２２で演算精度に合わせて順次除算を実行し、この除算結果をバッファに蓄えた後、演算精度を付加して全除算結果をホストコンピュータ３０に返送する。
【００７６】
ここで、可変精度除算機構２２は任意精度対応可能であるため、この除算ユニット２０を更にカスケード接続することによって、1ユニットの整数倍に精度を拡張することが可能である。このため、本願出願人は、1ユニットをFPGA（Xilinx社製、XC5210、84ピンPLCC）にワンチップ化し、それを４チップカスケード接続して、８から１２８ビットの可変精度除算を実験により検証した（大石博朗、杉山寿男、鈴木領、笠原宏、中村次男：「精度にあわせて効率的な除算を行なう補助ユニットの開発」、信学総全大、C-12-42（1997））。
【００７７】
（実施の形態３）
最後に、本発明を、情報セキュリティ技術として公開鍵暗号システムの標準となっているRSA暗号に組み込む乗除算機構に適用した例を示す。
本願出願人は、オブジェクト指向手法を取り入れた乗除算機構組み込んでワンチップ化し、試作実験を行った。
ここで、RSA暗号では、暗号化と復号において
Am ≡ R mod n
の剰余演算を行なう。この鍵のnの精度は、容易に解読できないよう、現在では１、０２４ビットが必要とされ、コンピュータの性能向上により更なる高精度化が進むと考えられている。
【００７８】
このような超高精度演算においては多くの演算時間を要するため、RSA暗号は主に秘密鍵の配送やディジタル署名といった短いデータ用に使われている。そこで、効率的なアルゴリズムあるいは専用ハードウェアでの高速化が重要課題となっており、実際にワンチップ化した例も報告されている（１−森田光：「暗号技術と高速算法」、情報処理、Vol.3４、No.3、pp.336-342(1993-3) 、２−Brickel、E.F.:“A Survey of Hardware Implementations of RSA”、 Advances in Cryptology-CRYPTO'89、 Lecture Notes in Computer Science 435、 pp.368-370、 Springer-Verlag(1990)、３−石井晋司、大山勝一、山中喜義：「高速公開鍵暗号プロセッサ」、信学論、D-I、Vol.J80-D-I、No.8、pp.725- 735 (1997-8)、４−日本IBM（株）「1024ビットRSA暗号アクセラレータ」、NIKKEI  BYTE (1999-2)）。
【００７９】
しかし、複雑な演算機構の分散処理化を実現するのは容易ではないため、チップスライス化を考慮したものはなく、更なる精度増には再開発が必要となり、またワンチップに実装するには極めて高集積なものとなる。
本願出願人が試作したRSA公開鍵暗号システム（中村次男、大石博朗、笠原宏：「RSA公開鍵暗号システム実装におけるビットスライス化の一方式」、電学論（C）、Vol.118-C、No.7/8、pp.1073−1081（199８-7/8））の1チップは１６ビットと３２ビット乗除算器をそれぞれ４モジュール内蔵（乗算１６〜６４ビット、除算３２〜１２８ビットの可変精度）で、制御回路も含めてゲート規模は約１万６千ゲート（CMOSゲートアレイ、100ピンQFP）である。このRSA公開鍵暗号システムを適用したチップの概要を図１３に示す。
【００８０】
試作したチップをボード上に４個実装し、１６〜２５６ビット長の鍵に対する暗号化／復号の実験を行いチップスライス化が正常に動作することを確認した。図１４に示すように、実験用ボードはＰＣＩバスインタフェースボード（GPIO-100MN）を介してホストコンピュータ（MMX Pentium、 233MHz）に接続される。例えば、暗号化ではホストコンピュータから、平文Aそして公開鍵n、mのデータが順に実験用ボードに送られる。実験用ボードでは精度に合わせたべき乗剰余演算が実行され、結果の暗号文Rがホストコンピュータに返送される。
1、０２４ビットのべき乗剰余演算時は１６チップのカスケード接続になるが、これらの制御は完全ハードウェア化によって実行される。電子機器の性能向上により、要求される演算精度数も更に高くなるといわれているが、オブジェクト指向手法を取り入れることによりカスケード数の追加だけで容易に対応可能である。
【００８１】
さて、これまで本発明の実施の形態について説明したが、本発明は、上述した実施の形態以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてよいものである。
例えば、上記実施の形態においては、本発明を主として加減乗除機構に適用した例を示したが、任意の演算を行なうための集積回路において同様に適用することができる。
【００８２】
【発明の効果】
以上に説明したように、請求項１または５に記載の本発明によれば、送られたメッセージが自己宛てのメッセージであるか否かを判断し、自己宛てのメッセージである場合には、機能に必要となるモジュールの数が自動的に決定される。このことにより、コアでは演算に必要となる制御を自律的に行なうことができる。したがって、コア（ＶＣ）の使用者は抽象的に部品化されたＶＣの内部を知る必要がなく、またＶＣが他のＶＣの動作によって破壊（変更）される危険性がない。したがって、コアの再利用や拡張を容易に行なうことができる。
【００８３】
また、請求項２または６に記載の本発明によれば、演算データを取り込んだモジュールの数が演算精度に対応する迄、データラッチ操作が行なわれ、モジュールの数が不足する場合には、他のユニットにおいて、同様にデータラッチ操作が行なわれる。このようにデータラッチを動的に順次行なうことにより、演算精度に応じたモジュール数を決定することができる。
【００８４】
また、請求項３または７に記載の本発明によれば、演算結果０を出力するモジュールの数を計数することにより、演算結果の精度範囲が算定される。このように特定の演算結果を出力するモジュールの数を計数することにより、演算結果の精度範囲を算定することができる。
【００８５】
また、請求項４または８に記載の本発明によれば、バスの使用権は使用権通知線を介して受け渡され、また、バスの使用終了通知は終了通知線を介して受け渡される。したがって、トークンリング方式のように使用権情報をバス自体を用いて受け渡す方式とは異なり、バスを用いることなく使用権情報を受け渡すことができるので、バスの使用効率を高めることができる。すなわち、複数コア間のバス調停機構をバスの使用権通知線とバスの使用終了通知線で構成することにより、トークンリング方式のようなバスの使用権情報をバスを介さずに行えるので、バスの使用効率を高めることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態における、オブジェクト指向技術を適用した複数のＶＣから構成されるＳＯＣを示すブロック図である。
【図２】オブジェクト指向技術を適用した複数のＶＣから構成されるＳＯＣを示すブロック図である。
【図３】チップスライス化された演算機構の概要を示す図である。
【図４】モジュール数の判断と演算データのラッチ機構を示す図である。
【図５】加算／減算機構におけるモジュールのブロック図である。
【図６】各モジュールの処理のフローチャートである。
【図７】演算結果の精度判断機構を示す図である。
【図８】本除算モジュ−ルを示す図である。
【図９】１モジュールの各ステップを示す図である。
【図１０】除算機構を示す図である。
【図１１】処理機構組込形のユニット構成を示す図である。
【図１２】除算ユニットの構成図である。
【図１３】  RSA公開鍵暗号システムを適用したチップの概要を示す図である。
【図１４】実験用ボードの構成を示す図である。
【符号の説明】
１  ＳＯＣ
２  ＶＣ（コア）
３、１４  バス
１０  nビット加／減算器
１１  分周器
１２  演算精度の記憶部
１３  演算の種類の記憶部
Ｕ１〜Ｕｎ、Ｕx-1〜Ｕx+1  ユニット
Ｍ１〜Ｍｎ、Ｍ１〜Ｍｍ  モジュール
Ｒ  演算データラッチ機構
【図１】
0004328905.tif 000013
【図２】
0004328905.tif 000014
【図３】
0004328905.tif 000015
【図４】
0004328905.tif 000016
【図５】
0004328905.tif 000017
【図６】
0004328905.tif 000018
【図７】
0004328905.tif 000019
【図８】
0004328905.tif 000020
【図９】
0004328905.tif 000021
【図１０】
0004328905.tif 000022
【図１１】
0004328905.tif 000023
【図１２】
0004328905.tif 000024
【図１３】
0004328905.tif 000025
【図１４】
0004328905.tif 000026