(57)【要約】【課題】高速化が可能な演算装置を提供すること。【解決手段】本演算装置は、２ｎビットのデータＡおよびｎビットのデータｋを入力するデータ入力手段２０、２２と、データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ番目のビットのみが第２所定ビット値であり他の全てのビット値が第２所定ビット値の反対のビット値である２ｎビットのデータＢを演算する演算手段と、データＢの各ビット値を同時並行的に出力するデータ出力手段２４と、を具備する。【選択図】図５
2010049430.tif 000002
【特許請求の範囲】
【請求項１】
２ｎビットのデータＡおよびｎビットのデータｋを入力するデータ入力手段と、
前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢを演算する演算手段と、
前記データＢの各ビット値を同時並行的に出力するデータ出力手段と、
を具備することを特徴とする演算装置。
【請求項２】
前記演算手段は、
前記データＡの前記所定方向に数えたｉ番目のビットのビット値が前記第１所定ビット値の場合、ｎビットのデータｋから１を減ずるｉビットデクリメント回路と、
前記データＡのｉ番目のビットが前記第１所定ビット値であり、かつ、ｉが１以上の場合はｉ−１ビットデクリメント回路の出力データｋ、またはｉが０の場合は入力されたデータｋの値のが０の場合、前記データＢのｉ番目のビットのビット値を前記第２所定ビット値とし、他の場合、前記データＢのｉ番目のビットのビット値を前記第２所定ビット値の反対のビット値とするｉビット判定回路と、
を具備することを特徴とする請求項１記載の演算装置。
【請求項３】
前記演算装置はマイクロプロセッサであって、
前記データＡ、前記データｋおよび前記データＢを記憶するレジスタを具備し、
前記データ入力手段およびデータ出力手段は内部バスであり、
前記演算手段は、前記レジスタから前記データ入力手段を介し前記データＡおよびデータｋを取得し、前記データ出力手段を介し前記レジスタに前記データＢの各ビット値を同時並行的に出力することを特徴とする請求項１または２記載の演算装置。
【請求項４】
前記演算手段は、１つの命令に対応し前記データＢを演算することを特徴とする請求項３記載の演算装置。
【請求項５】
２ｎ桁からなる階乗進数Ｐを入力するデータ入力手段と、
自然数ｉが前記階乗進数Ｐの最大桁のとき、２ｎビットのデータＡのビットを全て第１所定ビット値とし、
前記階乗進数Ｐのｉ桁目をｎビットのデータｋとし、
前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が前記第１所定ビット値であるｋ番目のビットのみが１であり他の全てのビット値が０である２ｎビットのデータＢを演算し、
前記データＢを２ｎ×２ｎ行列Ｍのｉ行のデータとし、
前記データＡおよび前記データＢの同じビットを比較し、前記データＡのビットが前記第１所定ビット値の反対のビット値である場合および前記データＢの対応するビットが１である場合の少なくとも一方の場合、前記データＡの対応するビットを前記第１所定ビット値の反対のビット値とし、他の場合、前記データＡの対応するビットを前記第１所定ビット値とする、
ことを前記階乗進数Ｐの前記最大桁から最小桁まで繰り返す演算手段と、
を具備することを特徴とする行列演算装置。
【請求項６】
各ビットが複数の資源のうち対応する資源の使用未使用を示す２ｎビットのデータＡ１と複数の第１演算手段毎に異なる値であるｎビットのデータｋ１とが入力し、前記データＡ１の最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ１番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢ１を並列に演算する前記複数の第１演算手段と、
複数の前記データＢ１の前記第２所定ビット値の対応する資源を、資源の割当を要求する複数のプロセッサにそれぞれ割り当てる割当手段と、
を具備することを特徴とする資源割当装置。
【請求項７】
前記複数の第１演算手段と対応し設けられ、各ビットが前記資源の割当を要求する複数のプロセッサのうち対応するプロセッサを示す２ｍビットのデータＡ２と対応する前記第１演算手段の前記データｋ１と同じ値であるｍビットのデータｋ２とが入力し、前記データＡ２の最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ２番目のビットのみが第２所定ビット値であり他の全てのビット値が前期第２所定ビット値の反対のビット値である２ｍビットのデータＢ２を演算する前記複数の第２演算手段を具備し、
前記割当手段は、前記データｋ１に対応する前記第１演算手段が演算したデータＢ１の前記第２所定ビット値の対応する資源を、前記データｋと同じ値の前記データｋ２に対応する前記第２演算手段が演算したデータＢ１の前記第２所定ビット値の対応するプロセッサに割り当てることを特徴とする請求項６記載の資源割当装置。
【請求項８】
レジスタを備えるマイクロプロセッサを用い、２ｎビットのデータＡおよびｎビットのデータｋから２ｎビットのデータＢを演算する演算方法であって、
前記レジスタから前記データＡおよび前記データｋを取得するステップと、
前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢを演算するステップと、
前記レジスタに前記データＢの各ビットを同時並行的に出力するステップと、
を具備することを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算装置、行列演算装置、資源割当装置および演算方法に関する。
【背景技術】
【０００２】
デジタル無線通信分野においては、同一の装置で複数の通信方式に対応する技術として、無線処理を専用ハードウェアではなくプロセッサによるソフトウェア実行によって実現する、いわゆるソフトウェア無線（Software Defined Radio; SDR）技術が知られている。この技術では、通信処理に含まれるビット並び替えは、プロセッサにより処理される。またデジタル情報処理分野における暗号技術である、ＤＥＳ(Data Encryption Standard)などのブロック暗号においても、置換と呼ばれるビット並び替え処理が行われる。
【０００３】
またプロセッサなどの実行主体が複数協調動作する情報処理システムにおいて、実行主体が記憶域や外部演算装置などの共通の資源集合を共有しながら処理を進める。このようなシステムにおいては、各実行主体が処理の進行に従い、必要となった資源の割当を受けてから処理を進め、かつ不要となった資源は解放するという、いわゆる資源の実行時管理が行われる。この場合、資源の二重割当によるシステムの壊滅的障害を回避するため、各資源の割当状況を表現する管理情報を一元管理し、この管理情報に対する更新は排他制御により逐次的に行われるよう制御される（非特許文献１）。
【０００４】
前記ビット並び替え処理では、与えられたビット列を所定の順序に従って並び替えた列に変換され、所定の順序の表現が必要である。任意の順序を一意に表現する方法として階乗進法という記数法が知られている。階乗進法はｍを自然数として最下位桁０から最上位桁（ｍ−１）までのｍ桁の数字の列により、０〜（ｍ！−１）の範囲のｍ！個の整数を一意に表現する方法である。階乗進法により表現された数を階乗進数と呼ぶ。階乗進数の最下位桁から数えてｉ番目の桁（桁ｉ）が取り得る数は、０〜ｉである。この規則により最下位桁は０に固定されるため、最下位桁は表現から省略することもできる。一般に桁ｉの数がｄ（ｉ）である階乗進数は
ｄ（ｍ−１）（ｍ−1）！＋ｄ（ｍ−２）（ｍ−２）！＋…＋ｄ１（１！）＋ｄ０（０！）
で計算される整数を表現する。この表現方法は、付番された相異なるｍ個の要素からなる任意の順列を一意に表現する。すなわち、ｄ（ｍ−１）からｄ（０）に向けて順にｄ（ｉ）を調べて、番号ｉの要素の順列における位置を割り当てる手順を繰り返せば、順列を構成できる。ここでｄ（ｉ）を調べて位置を割り当てる手順は、桁ｉより上位桁の手順で割り当てられた位置を除いた位置のうちのｄ（ｉ）番目を選択すればよい（非特許文献２）。
【０００５】
ｍ桁の階乗進数の情報のサイズは
ｌｏｇ２（ｍ）＋ｌｏｇ２（ｍ−１）＋…＋ｌｏｇ２（１）
に比例する。一方、付番された相異なるｍ個の要素からなる任意の順列を、番号ｉの要素の順列における位置をすべて並べて表現した場合、そのサイズは、
ｍ×ｌｏｇ２（ｍ）
に比例する。両者のサイズを比較すると、階乗進数の方が効率的である。
【非特許文献１】山崎傑, “オペレーティング・システムの基礎,”pp.49-54, CQ出版社, 1992年, ISBN4-7898-3668-1
【非特許文献２】奥村晴彦, “C言語による最新アルゴリズム事典,” 技術評論社，1991年，ISBN4-87408-414-1
【発明の開示】
【発明が解決しようとする課題】
【０００６】
例えば、デジタル通信処理において、伝送路雑音による誤り混入の影響を拡散するなどの目的により、通信データのビット並び替え処理が行われる。前記ソフトウェア無線技術においては無線処理をプロセッサで行う。またデジタル情報暗号化技術においても、ＤＥＳなどのブロック暗号においては基本処理として置換と呼ばれるビット並び替え処理が行われる。
【０００７】
一般にプロセッサは一定ビット長のワード単位での演算処理を基本としており、ビット単位の処理が必要な並び替え処理を効率的に行うことができないという課題がある。またこの並び替え処理は、規格などによって定められた所定の並び替え順に基づいて行われるが、ソフトウェア無線技術では複数規格への対応が前提となるため、多くの並び替え順を保持する必要が生じる。このため、所定の並び替え順をコンパクトに表現することが課題となる。
【０００８】
また、情報処理システムにおいて、複数のプロセッサが複数の共通資源を使用するシステムにおいて、資源の割り当てを要求しているプロセッサに資源を割り当てる処理が行われる。この場合、要求を待ち行列化し、複数の要求を一括処理することにより割当処理を高速化することができる。しかし、資源の使用状況の管理情報の一貫性を保持するため、割当可能な空き資源を探索する処理については各要求毎に逐次的に処理する。この逐次性により、一括処理による高速化が十分発揮されないという課題がある。
【０００９】
本発明は、上記課題に鑑みなされたものであり、ビット並び替え処理や資源割当処理などの処理を効率化することを目的とする。
【課題を解決するための手段】
【００１０】
本明細書記載の演算装置は、２ｎビットのデータＡおよびｎビットのデータｋを入力するデータ入力手段と、前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢを演算する演算手段と、前記データＢの各ビット値を同時並行的に出力するデータ出力手段と、を具備する。
【００１１】
本明細書記載の行列演算装置は、２ｎ桁からなる階乗進数Ｐを入力するデータ入力手段と、自然数ｉが前記階乗進数Ｐの最大桁のとき、２ｎビットのデータＡのビットを全て第１所定ビット値とし、前記階乗進数Ｐのｉ桁目をｎビットのデータｋとし、前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が前記第１所定ビット値であるｋ番目のビットのみが１であり他の全てのビット値が０である２ｎビットのデータＢを演算し、前記データＢを２ｎ×２ｎ行列Ｍのｉ行のデータとし、前記データＡおよび前記データＢの同じビットを比較し、前記データＡのビットが前記第１所定ビット値の反対のビット値である場合および前記データＢの対応するビットが１である場合の少なくとも一方の場合、前記データＡの対応するビットを前記第１所定ビット値の反対のビット値とし、他の場合、前記データＡの対応するビットを前記第１所定ビット値とする、ことを前記階乗進数Ｐの前記最大桁から最小桁まで繰り返す演算手段と、を具備する。これらの手段によって生成された行列Mは、前記並び順による並び替え行列となるため、長さ２ｎの任意のビット列と行列Ｍとの行列ベクトル積を計算することにより、そのビット列を前記並び順に従って並び替えたビット列を求めることができる。
【００１２】
本明細書記載の資源割当装置は、各ビットが複数の資源のうち対応する資源の使用未使用を示す２ｎビットのデータＡ１と複数の第１演算手段毎に異なる値であるｎビットのデータｋ１とが入力し、前記データＡ１の最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方に向かう所定のビットの方向に数え、ビット値が第１所定ビット値であるｋ１番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢ１を並列に演算する前記複数の第１演算手段と、複数の前記データＢ１の前記第２所定ビット値の対応する資源を、資源の割当を要求する複数のプロセッサにそれぞれ割り当てる割当手段と、を具備する。これらの手段により、複数のプロセッサによる資源割当獲得要求を処理する際に、各プロセッサに割り当てる資源の探索を並列に行うことができる。
【００１３】
本明細書記載の演算方法は、レジスタを備えるマイクロプロセッサを用い、２ｎビットのデータＡおよびｎビットのデータｋから２ｎビットのデータＢを演算する演算方法であって、前記レジスタから前記データＡおよび前記データｋを取得するステップと、前記データＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かう所定の方向に数え、ビット値が第１所定ビット値であるｋ番目のビットのみが第２所定ビット値であり他の全てのビット値が前記第２所定ビット値の反対のビット値である２ｎビットのデータＢを演算するステップと、前記レジスタに前記データＢの各ビットを同時並行的に出力するステップと、を具備する。
【発明の効果】
【００１４】
ビット並び替え処理や資源割当処理などの処理を効率化することができる。
【発明を実施するための最良の形態】
【００１５】
通信システムの分野では、プログラムの交換により複数の通信方式に対応可能な通信技術であるソフトウェア無線技術の確立が求められている。このためには、デジタル・データ通信の技術におけるビット並び替えを汎用的に行う技術が求められる。また、ＤＥＳなどのデジタル情報暗号化技術においても置換と呼ばれるビット並び替え処理が必要となる。しかしながら、マイクロプロセッサのデータアクセス最小単位はワードであるため、汎用的なビット並び替えを効率的にプログラムすることが難しい。
【００１６】
この課題は、マイクロプロセッサのデータパス内にガロア素体ＧＦ（２）に基づく行列ベクトル積を行う演算器を配置し、その演算をマイクロプロセッサの命令により実行できるようにすることにより解決できる。なぜなら、任意のビット並び替え処理は、その並び順に対応するビット並び替え行列との行列ベクトル積で実現でき、かつ行列ベクトル積演算は他の処理、たとえばデジタル・データ通信の技術における畳込符号の符号化などにも汎用的に用いることができるからである。ＧＦ（２）に基づく行列ベクトル積演算器は、行列の各行とベクトルとの内積を行う演算器を行列の行数に等しい個数用意し、それらを並列に動作させることにより効率的に実現できる。各行とベクトルとの内積は、要素毎の論理積を求め、それら全ての排他的論理和を求めればよいため、ベクトルの長さｍに等しい個数の２入力論理積演算素子と、ｍに等しい入力数を持つ排他的論理和演算器により構成することができる。
【００１７】
この解決法においては、並び替え処理の並び順を行列で表現することになり、その情報のサイズは行列要素数であるｍ２に比例する。このサイズを効率化する方法として階乗進数が利用できる。すなわち、並び順を表現する行列要素全体を記憶しておくのではなく、同じ並び順を表現する階乗進数を記憶しておき、並び替え処理の事前に、その階乗進数表現から並び替え行列を再現し、並び替え処理を行う。階乗進数の情報のサイズは、
ｌｏｇ２（ｍ）＋ｌｏｇ２（ｍ−１）＋…＋ｌｏｇ２（１）
に比例するので、行列全体を保持するよりも効率が良い。このサイズ削減効果は、ソフトウェア無線のように複数の並び順を切り替えながら処理する必要がある場合には、それぞれの並び順を保持する必要があるため、より効果的である。
【００１８】
階乗進数から並び替え行列を再現する処理は、後述の実施例２のとおり実現できる。この処理においては、階乗進数Ｐの各桁ｉ（最上位桁がｉ＝０とする）の値Ｐ（ｉ）を最上位桁から順に見ていき、Ｐ（ｉ）から行列の第ｉ行の要素のうちのただ一つ１とすべきビット位置を割り当てることを繰り返す。Ｐ（ｉ）からビット位置を割り当てる処理は、まだ現れていないビット位置のうちのＰ（ｉ）番目を求めることにより実現される。
【００１９】
また、情報処理システムにおいて、資源割当装置が、複数の共通資源をプロセッサ等に割り当てる方法としては、要求の待ち行列化を用いることが考えられる。この方法では、資源割当装置が、プロセッサからの資源割当要求を待ち行列に格納する。資源割当装置は、待ち行列の先頭から順に要求を取り出し、空き資源を割り当てる。この際、資源割当装置は、割り当てられた資源の使用開始処理と同時に、次の資源割当要求を取り出す。このように使用開始処理と次の資源割当要求を、取り出しを並列処理することにより共通資源割当の高速化が図れる。しかしながら、一つの資源割当要求に対する空き資源の探索が他の要求に対する探索状況を全く考慮しない手順で行われる場合、空き資源の割り当ては、資源割当要求ごとに逐次処理しないと、資源の管理情報の一貫性が破壊される可能性がある。このような処理の逐次性のため、高速化することが難しい。
【００２０】
この課題を解決する方法として、資源に順序を付与し、かついくつかの割当要求を同時処理する際に各要求に番号ｊを付け、ｊ番目の割当要求に対しては、空き資源のうちのｊ番目を割り当てる、という手順を用いることができる。この手順によれば、各割当要求に対して割り当てられる資源が重複することがないため、空き資源の探索を並列化することが可能となる。
【００２１】
このように、ビット並び替え処理および情報処理システムにおける共有資源の割当処理は、未割当の候補のうちから、指定番目に当たるものを求める、という基本処理により、共に効率化が可能となる。
【００２２】
本演算装置においては、ｋ番目の第１所定ビット値のビット位置を探索する探索操作を行うことにより、この基本処理を実現する。以下、図面を参照して、本発明の実施例について説明する。
【実施例１】
【００２３】
図１は、実施例１に係るマイクロプロセッサを有するコンピュータのブロック図である。コンピュータはマイクロプロセッサ１０、主記憶装置２６および入出力装置２８を備えている。マイクロプロセッサ１０、主記憶装置２６および入出力装置２８は互いにバス１８で接続されている。図２は、実施例１に係るマイクロプロセッサを示すシステム図である。図２において、マイクロプロセッサ１０は、探索回路１２、レジスタ１４（レジスタファイル）、ＡＬＵ（Arithmetic Logical Unit）１６、入力バス２０、２２および出力バス２４を備えている。探索回路１２には、データ入力手段である入力内部バス２０および２２からそれぞれデータＡおよびｋが入力し、データ出力手段である出力内部バス２４にデータＢが出力される。マイクロプロセッサ１０は１つの命令に対応しデータＡおよびデータｋからデータＢを演算することができる。
【００２４】
図３は、探索回路１２の機能を説明するための図である。図３において、データＡおよびＢは各々２ｎビットのデータであり、データｋはｎビットのデータである。ここで、ｎは自然数である。図３では、データＡは１６ビット、データｋは４ビットである。データＡが「１０１１１１０１１１０１００１１」であり、データｋが３（二進数で「００１１」）の場合、探索回路１２は、データＡの右側から３番目の「０」のビット位置を探索する。図３では、右側から９ビット目が３番目の「０」のビット位置である。そこで、探索回路１２は、データＢの右側から９ビット目を「１」とし、その他のビットを「０」とする。探索回路１２は、データＢの各ビットを同時並行的に出力する。
【００２５】
図３において、探索回路１２は、データＡの右側のビットからｋ番目の「０」のビット位置を探索したが、探索回路１２は、データＡの最小有効ビット位置および最大有効ビット位置のいずれか一方のビット位置から他方のビット位置に向かう方向のうち、応用形態によって定まる所定の方向に数えればよい。
【００２６】
また、図３において、探索回路１２は、ｋ番目のビット値が「０」のビット位置を探索したが、「０」および「１」のうち、応用形態によって定まる所定の一方（第１所定ビット値）のビット位置を探索すればよい。
【００２７】
さらに、図３において、探索回路１２は、データＢのうち探索したビット位置のビット値のみを「１」とし、その他のビット位置のビット値を「０」としたが、データＢのうち探索したビット位置のビット値のみを「０」および「１」のうちの応用形態によって定まる所定のいずれか一方（第２所定ビット値）とし、他の全てのビット位置のビット値を「０」および「１」の他方（第２所定ビット値の反対のビット値）としてもよい。
【００２８】
図２のマイクロプロセッサ１０はｋ番目の第１所定ビット値のビット位置を探索する探索命令を備えることができる。図４は、探索命令が入力された場合のマイクロプロセッサ１０の処理を示すフローチャートである。レジスタ１４は、主記憶装置２６（図１参照）からデータＡおよびｋを記憶する（ステップＳ１０）。探索回路１２は、レジスタ１４から入力バス２０および２２を介しデータＡおよびｋを取得する（ステップＳ１２）。探索回路１２はデータＢを演算する（ステップＳ１４）。探索回路１２は出力バス２４を介しデータＢの各ビットを同時並行的にレジスタ１４に出力する（ステップＳ１６）。以上のように、マイクロプロセッサ１０は、データＡおよびｋからデータＢを算出する。
【００２９】
図５は、探索回路１２の回路図である。探索回路１２は、ｎ個のｉビット演算回路３０を備えている。ｎはデータＡのビット数であり、ｉは０からｎ−１の自然数である。ｉビット演算回路３０はデータＡのｉ番目のビット位置のビット値（これをビットＡ［ｉ］とする）からデータＢのｉ番目のビット位置のビット値（これをビットＢ［ｉ］とする）を演算する。ｉビット演算回路３０は、ＯＲ回路３２とデクリメント回路３４を備えている。デクリメント回路３４は、データｋのビット数に対応する全加算器３４ａ〜３４ｄを備えている。０ビット演算回路３０ａにおいては、ＯＲ回路３２は、ビットＡ［０］とデータｋの各ビットとのＯＲ処理の反転を出力する。すなわち、ビットＡ［０］が「０」でかつデータｋが全ビット「０」の場合「１」を、その他の場合「０」を出力する。デクリメント回路３４の各全加算器３４ａ〜３４ｄには、ビットＡ［０］の反転とデータｋの各ビットが入力する。これにより、デクリメント回路３４は、ビットＡ［０］が「０」の場合、データｋから１を減じ（つまりデクリメントし）、ビットＡ［０］が「１」の場合、デクリメントしない。
【００３０】
ｉビット演算回路３０においては、ＯＲ回路３２は、ビットＡ［ｉ］とｉ−１ビット演算回路３０のデクリメント回路３４の出力の各ビットとのＯＲ処理の反転を出力する。すなわち、ビットＡ［ｉ］が「０」でかつｉ−１ビット演算回路３０のデクリメント回路３４の出力が全ビット「０」の場合「１」を、その他の場合「０」を出力する。デクリメント回路３４の各全加算器３４ａ〜３４ｄには、ビットＡ［ｉ］の反転とｉ−１ビット演算回路３０のデクリメント回路３４の出力の各ビットが入力する。これにより、デクリメント回路３４は、ビットＡ［ｉ］が「０」の場合、ｉ−１ビット演算回路３０のデクリメント回路３４の出力をデクリメントし、ビットＡ［ｉ］が「１」の場合、デクリメントしない。
【００３１】
図５の回路によれば、ＯＲ回路３２の出力は、前段（ｉ−１段）のデクリメント回路３４の出力が全ビット「０」にならない限り「０」を出力する。デクリメント回路３４は、ビットＡ［ｉ］が「０」のたびにデータｋから「１」ずつデクリメントする。ビットＡ［ｉ］がｋ−１番目の「０」となったとき、デクリメント回路３４は全ビット「０」を出力する。よって、その後、ビットＡ［ｉ］が「０」となったとき、つまり、ビットＡ［ｉ］がｋ−１番目の「０」となったとき、ＯＲ回路３２は「１」を出力する。この段のデクリメント回路３４は全ビット「１」を出力する。よって、その後のｉビット演算回路３０においては、ビットＡ［ｉ］によらずビットＢ［ｉ］として「０」を出力する。
【００３２】
図５のように、ｉビットデクリメント回路３４は、ｉ番目のビットのビット値（ビットＡ［ｉ］）が第１所定ビット値の場合、データｋをデクリメントする。ここで、ｉはデータＡの最小有効ビットおよび最大有効ビットのいずれか一方のビットから他方のビットに向かうの方向のうち、応用形態によって定まる所定の方向にむけて数える。ＯＲ回路（判定回路）３２は、データＡ［ｉ］が「０」（つまり、第１所定ビット値）であり、かつ、ｉが１以上の場合ｉ−１ビットデクリメント回路３４の出力データｋ、またはｉが０の場合入力されたデータｋの全てのビットが「０」（つまり第１所定ビット値）の場合、ビットＢ［ｉ］を「１」（つまり、第２所定ビット値）とする。また、他の場合、ビットＢ［ｉ］を「０」（つまり、第２所定ビット値の反対のビット値）とする。このような回路で、図３の探索回路１２を実現することができる。
【００３３】
実施例１によれば、図３で示した探索回路を、マイクロプロセッサに備え、１つの探索命令で、データＢを演算できるため、実施例２および実施例３で説明するようにビット列並び替えや資源管理を高速に行うことができる。
【実施例２】
【００３４】
実施例２は、実施例１を用い階乗進数からビット並べ替えの変換行列を演算する演算装置の例である。２ｎビットのビット列を２ｎビットのビット列に変換する場合、変換行列Ｍは２ｎビット×２ｎビット行列となる。この行列Ｍを階乗進数Ｐで表すことにより、並べ替え順序を表現する情報のサイズを小さくすることができる。
【００３５】
図６は、ワードサイズに対する行列Ｍおよび階乗進数Ｐの表現サイズを示す図である。図６において、階乗進数Ｐを用いることにより表現サイズを削減することができる。そこで、階乗進数Ｐを変換行列Ｍの変わりに記憶することにより、記憶装置の容量を節約することができる。しかしながら、階乗進数Ｐから行列Ｍを高速に演算することは難しい。実施例２は、階乗進数Ｐから行列Ｍを高速に演算する行列演算装置を提供する。
【００３６】
図７は、実施例２のマイクロプロセッサのシステム図である。図６において、マイクロプロセッサは、実施例１の図２と比較し、行列ベクトル積回路４０および行列レジスタ４２を備えている。行列レジスタ４２は、２ｎビット×２ｎビット行列Ｍを２ｎビットの長さを有する２ｎ個のワードとして記憶し、ワード単位で入出力可能である。行列ベクトル積回路４０は、２ｎビットの長さを有するベクトルＸ、２ｎビットの長さを有するベクトルｂおよび行列レジスタ４２に記憶された行列Ｍを用い、２ｎビットの長さを有するベクトルＹ＝ＭＸ＋ｂを演算する。ただし、この行列演算は、ガロア素体ＧＦ（２）の上で行われる。すなわち要素同士の積は論理積、和は排他的論理和で行われる。この行列演算において、Ｍをビット並び替え行列とし、ｂを全ビット０のワードに設定することにより、Ｘに与えたビット列にＭが表すビット並び替えを施した結果のビット列をＹとして得ることができる。ここでビット並び替え行列とは、元の列のｊ番目の要素を結果の列のｉ番目とする並び替えを、ｉ行ｊ列要素のみ「１」としその他は「０」としたビット行列で表現したものである。行列ベクトル積回路４０は、ベクトルＹをレジスタ１４の任意のワードに書き込むことができる。
【００３７】
図８は実施例２に係る演算装置の機能ブロック図である。図７のマイクロプロセッサの探索回路１２、レジスタ１４、行列ベクトル積回路４０および行列レジスタ４２は、入出力手段５４および演算手段５２として機能する。演算手段５２は、行列演算手段５６および探索手段５８を備えている。入出力手段５４には、ｎ桁の階乗進数Ｐが入力し、２ｎビット×２ｎビット行列Ｍを出力する。行列演算手段５６は、階乗進数Ｐを行列Ｍに変換する。探索手段５８は実施例１の探索回路と同じ機能を備え、データＡおよびｋからデータＢを演算する。
【００３８】
図９は、実施例２に係る演算装置の処理を示すフローチャートである。図１０は、階乗進数Ｐから行列Ｍを演算する処理の例を示す図である。図１０の例では、行列Ｍは８×８行列であり、左より階乗進数Ｐ（ｉ）、データＡおよびデータＢを示している。階乗進数Ｐ（ｉ）は、ｉ桁目のデータ値を示している。階乗進数Ｐのｉ桁目は、行列Ｍのｉ行に対応する。図９において、行列演算手段５６は、汎用レジスタ１４のデータＡを０、データｉをｎ−１とする（ステップＳ２０）。図１０の例では、ｉ＝７とする。行列演算手段５６は、汎用レジスタのデータｋをＰ（ｉ）とする（ステップＳ２２）。図１０の例では、ｋ＝４とする。探索手段５８は、汎用レジスタ１４からデータＡおよびｋを取得し、データＢを演算し汎用レジスタ１４に格納する（ステップＳ２４）。図１０の例では、ｉ＝７でのデータＡのビットは全て「０」である。よって、データＢは、ｋ列目つまり４列目のビットが「１」であり他のビットは「０」である。行列演算手段５６は、行列Ｍのｉ行目のワードをデータＢとする（ステップＳ２６）。図１０の例では、行列Ｍの７行目は、４列目が「１」その他は「０」となる。ＡとＢのビット毎論理和を演算し、結果をデータＡとする（ステップＳ２８）。つまり、データＡおよびデータＢを比較し、少なくとも一方が「１」のデータＡのビットを「１」、他のデータＡのビットを「０」とする。図１０の例ではデータＡは、４列目のビットのみが「１」となる。行列演算手段５６は、ｉ＝ｉ−１とする（ステップＳ２９）。図１０の例では、ｉ＝６となる。
【００３９】
行列演算手段５６は、ｉが１かを判定する（ステップＳ３０）。Ｎｏの場合、ステップＳ２２に戻る。ｉ＝６のため、行列演算手段５６は、ｋ＝Ｐ（６）＝１とする（ステップＳ２２）。ステップＳ２４において、探索手段５８は、データＡおよびｋよりデータＢを演算する。ｉ＝６のデータＡの１番目が「０」のビットは１列である。よって、データＢは１列目が「１」、他のビットが「０」となる。ステップＳ２６において、行列Ｍの６行目をデータＢとする。ステップＳ２８において、データＡの１列目と４列目のビットが「１」となり、他のビットは「０」となる。ステップＳ２９において、ｉ＝ｉ−１とする。よって、ｉ＝５となる。
【００４０】
さらに、ステップＳ２２において、Ｋ＝Ｐ（５）＝５とする。ステップＳ２４において、ｉ＝５のデータＡの５番目が「０」のビットは７列目である。よって、データＢは７列目が「１」、他のビットが「０」となる。ステップＳ２６において、行列Ｍの５行目をデータＢとする。ステップＳ２８において、データＡとして１、４、７列目が「１」、その他が「０」となる。このようにして、ｉ＝１まで、ステップＳ２２からステップＳ２９を繰り返す。
【００４１】
ステップＳ３０において、ｉ＝０の場合、行列演算手段５６は、行列Ｍの０行目は、データＡの１の補数とする（ステップＳ３２）。行列演算手段５６は、行列Ｍを入出力手段５４に出力する。入出力手段５４は、行列Ｍを出力する。以上で、階乗進数Ｐの行列Ｍへの変換が完了する。
【００４２】
実施例２によれば、ステップＳ２０のように、行列演算手段５６は、ｉが階乗進数Ｐの最大桁のとき、データＡのビットを全て「０」（第１所定ビット値）とする。ステップＳ２２のように、行列演算手段５６は、階乗進数Ｐのｉ桁目をデータｋとする。ステップＳ２４のように、探索手段５８は、データＡとデータｋとから実施例１と同じようにデータＢを演算する。ステップＳ２６のように、行列演算手段５６は、データＢを行列Ｍのｉ行のデータとする。ステップＳ２８のように、データＡおよびデータＢの同じビットを比較し、データＡのビットが「１」（第１所定ビット値の反対のビット値）およびデータＢの対応するビットが「１」（第２所定ビット値）の少なくとも一方の場合、データＡの対応するビットを「１」（第１所定ビット値の反対のビット値）とし、他の場合、データＡの対応するビットを「０」（第１所定ビット値）とする。以上を階乗進数Ｐの最大桁から最小桁まで繰り返す。このように、探索手段５８が、データＡからデータＢに１命令で変換可能なため、階乗進数Ｐから行列Ｍへの変換を簡単に行うことができる。行列Ｍを用い、２ｎビットのデータＣを２ｎビットのデータＤに並び替えることができる。
【実施例３】
【００４３】
実施例３では、空き資源の割り当てに実施例１の探索回路を用いることにより、複数の資源割当要求に対する空き資源の割り当てを並列に行うことができる。以下、実施例３について説明する。
【００４４】
実施例３は、資源管理プロセッサに実施例１の演算装置を用いた例である。図１１は、実施例３の資源管理プロセッサを含むシステム図である。図１１において、システムは、資源管理プロセッサ６０、プロセッサ６２ａ〜６２ｄ、共有資源６４を備えている。プロセッサ６２ａ〜６２ｄと共有資源６４とは資源アクセスバス６５で接続されている。プロセッサ６２ａ〜６２ｄは、複数の共有資源６４（例えばプロセッサやメモリ領域）をいくつか用いて処理を行う。プロセッサ６２ａ〜６２ｄは資源管理プロセッサ６０と調停信号の送受信を行う。資源管理プロセッサ６０は管理ワードに基づき、プロセッサ６２ａ〜６２ｄに使用可能な共有資源を割り当てる。
【００４５】
図１２は、プロセッサ６２ａ〜６２ｄが共有資源６４の割り当てを要求する際の処理を示すフローチャートである。図１２において、プロセッサ６２ａ〜６２ｄは、割当完了信号が０から１になるまで待機する（ステップＳ４０）。ここで、割当完了信号が１のとき割当てが完了していることを示している。プロセッサ６２ａ〜６２ｄは、割当要求信号を１とする（ステップＳ４２）。割当要求信号＝１は割当てを要求することを示している。プロセッサ６２ａ〜６２ｄは、割当完了信号が１になるまで待機する（ステップＳ４４）。プロセッサ６２ａ〜６２ｄは、完了返値の中の割当資源ＩＤを保存し、割当要求信号を０とする（ステップＳ４６）。
【００４６】
図１３は、プロセッサ６２ａ〜６２ｄが共有資源６４の解放を要求する際の処理を示すフローチャートである。図１３において、プロセッサ６２ａ〜６２ｄは、解放完了信号が０から１になるまで待機する（ステップＳ５０）。ここで、解放完了信号が１のとき解放が完了していることを示している。プロセッサ６２ａ〜６２ｄは、解放要求信号を１とし、要求引数として解放する資源の集合を示す解放資源集合ＩＤとする（ステップＳ５２）。解放要求信号＝１は解放を要求することを示している。プロセッサ６２ａ〜６２ｄは、解放完了信号が１になるまで待機する（ステップＳ５４）。プロセッサ６２ａ〜６２ｄは、解放要求信号を０とする（ステップＳ５６）。
【００４７】
図１４は、資源管理プロセッサ６０の処理を示すフローチャートである。資源管理プロセッサ６０は、解放要求がある場合解放要求処理を行う（ステップＳ６０）。資源管理プロセッサ６０は、割当要求がある場合割当要求処理を行う（ステップＳ６２）。資源管理プロセッサ６０は、システム終了かを判定する（ステップＳ６４）。Ｙｅｓの場合終了し、Ｎｏの場合、ステップＳ６０に戻る。
【００４８】
図１５は、資源管理プロセッサのシステム図である。資源管理プロセッサ６０において、プログラム・カウンタ１４２は命令アドレスにより命令メモリ１４０から所定の命令を命令フェッチ１４４に入力する。命令フェッチ１４４は命令をレジスタに格納する。命令デコード１４６は、命令を解読し、システム各部の動作を決定する。即値生成１４８は、即値データを含む命令についてその即値データを再生し、バス１００に出力する。
【００４９】
さらに、資源管理プロセッサ６０は、４並列資源割当回路７０、応答信号結束レジスタ１０４、レジスタ１２０、演算回路１２２およびデータメモリ１２４を備えている。４並列資源割当回路７０は、バス１００から割当要求信号結束値９６を、バス１０２から管理ワード６６を取得し、応答返値１１２ａ〜１１２ｄとしてプロセッサ６２ａ〜６２ｄに出力する。ビット毎論理和演算器１０８は、４並列資源割当回路７０の出力をビット毎に論理和し、結果を総合割当資源集合ＩＤ１１０としてバス１１４に出力する。応答信号結束レジスタ１０４はバス１０２から応答信号結束値を取得し、応答信号１０６ａ〜１０６ｄをプロセッサ６２ａ〜６２ｄに出力する。レジスタ１２０は、１６ビット×１６ワードレジスタファイルであり、レジスタＲ０〜Ｒ１５を備えている。演算回路１２２はバス１００および１２２からデータを取得し、演算結果をバス１１４に出力する。データメモリ１２４は管理ワード６６を記憶しており、演算回路１２２に管理ワード６６を入出力する。
【００５０】
バス８４は、プロセッサ６２ａ〜６２ｄからの解放要求信号８２ａ〜８２ｄ（各１ビット）を４ビットの解放要求信号結束値８６に結束し、バス１００に出力する。各セレクタ７６ａ〜７６ｄは、プロセッサ６２ａ〜６２ｄからの解放要求引数（解放する資源ＩＤ）７２ａ〜７２ｄと各ビット０の１６ビット信号７４ａ〜７４ｄとを、それぞれ解放要求信号８２ａ〜８２ｄに基づき選択する。解放要求信号８２ａ〜８２ｄが「０」のとき、セレクタ７６ａ〜７６ｄは１６ビット信号７４ａ〜７４ｄを選択し、解放要求信号８２ａ〜８２ｄが「１」のとき、セレクタ７６ａ〜７６ｄは解放要求引数７２ａ〜７２ｂを選択する。ビット毎論理和演算器７８は、セレクタ７２ａ〜７２ｄの出力をビット毎に論理和し、総合解放資源集合ＩＤ８０としてバス１０２に出力する。以上により、総合解放資源集合ＩＤ８０は資源＃０〜＃１５のうちプロセッサ６２ａ〜６２ｄが解放要求する資源に対応するビットが「１」となり、他のビットは「０」となる。バス９４は、プロセッサ６２ａ〜６２ｄからの割当要求信号９２ａ〜９２ｄ（各１ビット）を４ビットの割当要求信号結束値９６に結束し、バス１０２に出力する。
【００５１】
図１６は、図１４における解放要求処理（ステップＳ６０）の詳細の処理を示す図である。演算回路１２２は、バス１００上の解放要求信号結束値８６をレジスタＲ０にセットする（ステップＳ７０）。演算回路１２２は、レジスタＲ０が「０」でないかを判定する（ステップＳ７２）。Ｎｏの場合、終了する。Ｙｅｓの場合、演算回路１２２は、バス１０２上の総合解放資源集合ＩＤ８０をレジスタＲ１にセットする。レジスタＲ１のビット毎論理否定をレジスタＲ１にセットする。演算回路１２２を経由してバス１１４に出力された管理ワード６６をレジスタＲ２にセットする。レジスタＲ１とレジスタＲ２とのビット毎論理積をレジスタＲ２にセットする。レジスタＲ２を、バス１０２および演算回路１２２を経由して管理ワード６６にセットする（以上ステップＳ７４）。以上により、総合解放資源集合ＩＤ８０が「１」のビットに対応する管理ワードのビットが「０」（不使用）になる。
【００５２】
応答信号結束レジスタ１０４に、レジスタＲ０をセットする（ステップＳ７６）。これにより、応答信号結束レジスタ１０４からプロセッサ６２ａ〜６２ｄのうち解放要求を行ったプロセッサに応答信号１１６ａ〜１１６ｄ（ビットが「１」）が送信される。演算回路１２２は、解放要求信号結束値８６をレジスタＲ２にセットし、レジスタＲ０とＲ２のビット毎論理積をレジスタＲ３にセットする（ステップＳ７８）。演算回路１２２は、Ｒ３が０かを判定する（ステップＳ８０）。Ｙｅｓの場合終了し、Ｎｏの場合、ステップＳ７８に戻る。これにより、全てのプロセッサ６２ａ〜６２ｄが解放要求信号を取り下げると、終了する。
【００５３】
図１７は、図１４における割当要求処理（ステップＳ６２）の詳細の処理を示す図である。演算回路１２２は、バス１００上の割当要求信号結束値９６をレジスタＲ０にセットする（ステップＳ９０）。演算回路１２２は、レジスタＲ０が「０」でないかを判定する（ステップＳ９２）。Ｎｏの場合、終了する。Ｙｅｓの場合、演算回路１２２は、管理ワード６６をレジスタＲ１にセットし、レジスタＲ２に「０」をセットする（ステップＳ９４）。ステップＳ９６において、４並列資源割当回路７０は、レジスタＲ０とｊ（ｊは０から３の整数）を入力に４ビット指定順ゼロビット探索を行い、結果をレジスタＲ３にセットする。４並列資源割当回路７０は、レジスタＲ１とｊ（ｊは０から３の整数）とを入力に１６ビット指定順ゼロビット探索を行い、結果をレジスタＲ４にセットする。レジスタＲ３が表す調停信号のプロセッサに対して、レジスタＲ４が表す資源を割り当てる。すなわち、レジスタR４が表す資源の使用開始処理を必要に応じて行うとともに、レジスタＲ３が表す調停信号の応答返値としてレジスタＲ４の値をセットする。レジスタＲ２とレジスタＲ４とのビット毎論理和をレジスタＲ２にセットする。ステップＳ９６は、４並列資源割当回路７０を用いることによりｊ＝０からｊ＝３について並列に実行することができる。レジスタＲ１とレジスタＲ２とのビット毎論理和をレジスタＲ１にセットする。レジスタＲ１を、バス１０２および演算回路１２２を経由して管理ワード６６にセットする（ステップＳ９７）。以上により、本割当要求処理により新たに割り当てられた各資源に対応する管理ワードのビットが「１」（使用）になる。
【００５４】
応答信号結束レジスタ１０４に、レジスタＲ０をセットする（ステップＳ９８）。演算回路１２２は、割当要求信号結束値をレジスタＲ２にセットし、レジスタＲ０とＲ２のビット毎論理積をレジスタＲ３にセットする（ステップＳ１００）。演算回路１２２は、Ｒ３が０かを判定する（ステップＳ１０２）。Ｙｅｓの場合終了し、Ｎｏの場合、ステップＳ７８に戻る。
【００５５】
図１８は、４並列資源割当回路７０を示すブロック図である。図１８において、４並列資源割当回路７０は、４ビット探索回路１３０ａ〜１３０ｄ（第２演算手段）、１６ビット探索回路１３２ａ〜１３２ｄ（第１演算手段）および一進セレクタ回路１３６ａ〜１３６ｄ（割当手段）を有している。４ビット探索回路１３０ａ〜１３０ｄと１６ビット探索回路１３２ａ〜１３２ｄとは対応して設けられている。４ビット探索回路１３０ａ〜１３０ｄはデータＡ２として４ビットが入力する探索回路であり、実施例１の探索回路と同じ機能を備えている。１６ビット探索回路１３２ａ〜１３２ｄはデータＡ１として１６ビットが入力する探索回路であり、実施例１の探索回路と同じ機能を備えている。
【００５６】
１６ビット探索回路１３２ａ〜１３２ｄには、バス１０２上の管理ワード６６がデータＡ１、それぞれｊ＝０〜３がデータｋ１として入力される。つまり、データＡ１は、各ビットが複数の共有資源６４のうち対応する資源の使用未使用を示す。また、データｋ１は複数の４ビット探索回路１３０ａ〜１３０ｄ毎に異なる値である。１６ビット探索回路１３２ａ〜１３２ｄは、ｊ番目の使用されていない共有資源６４に対応するビットを「１」とし他のビットを「０」としたデータＢ１を一進セレクタ回路１３６ａ〜１３６ｄのそれぞれ入力ＤＡ〜ＤＤに出力する。
【００５７】
図１９（ａ）は、管理ワード６６の例を示す図である。各ビットが資源＃０〜＃１５に対応しており、ビット値が「０」に対応する資源は未使用、ビット値が「１」に対応する資源は使用中を示している。図１９（ａ）の例では、未使用の資源は、資源＃１、＃４、＃６、＃７である。図１９（ｂ）は、各１６ビット探索回路１３２ａ〜１３２ｄが出力するデータＢ１を示す図である。この例では、各１６ビット探索回路１３２ａ〜１３２ｄが出力するデータＢ１は、それぞれ資源＃１、＃４、＃６、＃７〜＃１５に対応するビットが「１」、その他のビットが「０」となる。
【００５８】
４ビット探索回路１３０ａ〜１３０ｄには、バス１００上の割当要求信号結束値９６の反転（ビット毎論理否定値）９７がデータＡ２、それぞれｊ＝０〜３がデータｋ２として入力される。つまり、データＡ２は、各ビットが資源の割当を要求する複数のプロセッサのうち対応するプロセッサを示す。データｋ２は、対応する１６ビット探索回路１３２ａ〜１３２ｄのデータｋ１と同じ値である。４ビット探索回路１３０ａ〜１３０ｄは、割当要求信号を送信したプロセッサ６２ａ〜６２ｄのうちの、６２aから６２dに向かう方向に数えてｊ番目に当たるプロセッサに対応するビットを「１」とし他のビットを「０」としたデータＢ２を４ビット信号分解点１３４ａに出力する。
【００５９】
図２０（ａ）は、割当要求信号結束値の反転９７を示す図である。各ビットがプロセッサ６２ａ〜６２ｄに対応しており、ビット値が「１」に対応するプロセッサは資源の割り当てを要求していない。ビット値が「０」に対応するプロセッサは資源の割り当てを要求している。資源の割り当てを要求しているプロセッサはプロセッサ６２ａおよび６２ｃである。図２０（ｂ）は、４ビット探索回路１３０ａ〜１３０ｄがそれぞれ出力するデータＢ２を示す図である。この例では、４ビット探索回路１３０ａおよび１３０ｂが出力するデータＢ２は、それぞれプロセッサ６２ａおよび６２ｂに対応するビットが「１」、その他のビットが「０」となる。４ビット探索回路１３０ｃおよび１３０ｄが出力するデータＢ２は対応するプロセッサがないため、全てのビットが「０」である。
【００６０】
４ビット信号分解点１３４ａの０ビット目（最下位ビット）から３ビット目（最上位ビット）はそれぞれ一進セレクタ回路１３６ａ〜１３６ｄの入力ＳＤに入力する。４ビット信号分解点１３４ｂの１ビット目から３ビット目はそれぞれ一進セレクタ回路１３６ｂ〜１３６ｄの入力ＳＣに入力する。４ビット信号分解点１３４ｃの２ビット目から３ビット目はそれぞれ一進セレクタ回路１３６ｃ〜１３６ｄの入力ＳＢに入力する。４ビット信号分解点１３４ｄの３ビット目は一進セレクタ回路１３６ｄの入力ＳＡに入力する。一進セレクタ回路１３６ａの入力ＳＡ〜ＳＣ、一進セレクタ回路１３６ｂの入力ＳＡ〜ＳＢ、一進セレクタ回路１３６ｃの入力ＳＡには各々「０」が入力される。
【００６１】
一進セレクタ回路１３６は、入力ＳＡ〜ＳＤに対応し、入力ＤＡ〜ＤＤを出力する回路である。図２１は、入力ＳＡ〜ＳＤに対し出力Ｏを示す図である。図２１において、入力ＳＡのみが「１」で他が「０」のとき、一進セレクタ回路１３６は、入力ＤＡを出力Ｏとして出力する。同様に、入力ＳＢ〜ＳＤのみが「１」のとき、それぞれ入力ＤＢ〜ＤＤを出力Ｏとして出力する。
【００６２】
図１８において、一進セレクタ回路１３６ａ〜１３６ｄは、それぞれプロセッサ６２ａ〜６２ｄに、割り当てられた資源に対応するビットが「１」の応答返値１１２ａを送信する。以上により、割当要求をしているプロセッサ６２ａ〜６２ｄのうちの、６２aから６２dに向かう方向に数えてｊ番目に当たるプロセッサには、ｊ番目に未使用の資源を割り当てることができる。
【００６３】
図２２は、図１９（ａ）〜図２０（ｂ）の例における、各一進セレクタ回路１３６ａ〜１３６ｄの出力である各プロセッサ６２ａ〜６２ｄへの応答返値１１２ａ〜１１２ｄを示す図である。図２２において、資源割り当てを要求したプロセッサのうちの０番目である６２ａには、０番目に未使用の資源＃１が割り当てられる。よって、応答返値１１２ａは、資源＃１に対応する１番目のビットのみが「１」である。資源割り当てを要求したプロセッサのうちの1番目である６２ｃには、１番目に未使用の資源＃４が割り当てられる。よって、応答返値１１２ｃは、資源＃４に対応する４番目のビットのみが「１」である。プロセッサ６２ｂおよび６２ｄは、資源割り当てを要求していないため、応答返値１１２ｂおよび１１２ｄは全てのビットが「０」である。
【００６４】
実施例３によれば、１６ビット検索回路１３２ａ〜１３２ｄが並列にデータＢ１を演算する。一進セレクタ回路１３６ａ〜１３６ｄは、複数のデータＢ１の「１」（第２所定ビット値）であるビットに対応する資源を、資源の割当を要求する複数のプロセッサにそれぞれ割り当てる。これにより、管理ワード６６から並列に資源をプロセッサ６２ａ〜６２ｄに割り当てることができる。
【００６５】
また、一進セレクタ回路１３６ａ〜１３６ｄは、データｋ１に対応する１６ビット探索回路１３２ａ〜１３２ｄが演算したデータＢ１の「１」（第２所定ビット値）に対応する資源を、データｋ２と同じ値のデータｋ２に対応する４ビット探索回路１３０ａ〜１３０ｄが演算したデータＢ２の「１」（第２所定ビット値）に対応するプロセッサ６２ａ〜６２ｄに割り当てる。これにより、管理ワード６６および割当要求信号結束値９６から並列に資源をプロセッサ６２ａ〜６２ｄに割り当てることができる。
【００６６】
また、複数の探索回路１３２ａ〜１３２ｄが同一のデータＡとそれぞれ異なるデータｋを用い、それぞれデータＢを並列に演算する。これにより、資源割当を逐次実行せず、並列に実行することができる。
【００６７】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００６８】
【図１】図１は、実施例１に係るマイクロプロセッサを有するコンピュータのブロック図である。
【図２】図２は、実施例１に係るマイクロプロセッサを示すシステム図である。
【図３】図３は、探索回路の機能を説明するための図である。
【図４】図４は、マイクロプロセッサの処理を示すフローチャートである。
【図５】図５は、探索回路の回路図である。
【図６】図６は、ワードサイズに対する行列Ｍおよび階乗進数Ｐの表現サイズを示す図である。
【図７】図７は、実施例２のマイクロプロセッサのシステム図である。
【図８】図８は、実施例２に係る演算装置の機能ブロック図である。
【図９】図９は、実施例２に係る演算装置の処理を示すフローチャートである。
【図１０】図１０は、階乗進数Ｐから行列Ｍを演算する処理の例を示す図である。
【図１１】図１１は、実施例３の資源管理プロセッサを含むシステム図である。
【図１２】図１２は、プロセッサが共有資源の割り当てを要求する際の処理を示すフローチャートである。
【図１３】図１３は、プロセッサが共有資源の解放を要求する際の処理を示すフローチャートである。
【図１４】図１４は、資源管理プロセッサの処理を示すフローチャートである。
【図１５】図１５は、資源管理プロセッサのシステム図である。
【図１６】図１６は、図１４における解放要求処理の詳細の処理を示す図である。
【図１７】図１７は、図１４における割当要求処理の詳細の処理を示す図である。
【図１８】図１８は、４並列資源割当回路を示すブロック図である。
【図１９】図１９（ａ）は、管理ワードの例を示す図であり、図１９（ｂ）は、データＢ１の例を示す図である。
【図２０】図２０（ａ）は、資源要求信号結束値の反転の例を示す図であり、図２０（ｂ）は、データＢ２の例を示す図である。
【図２１】図２１は、入力ＳＡ〜ＳＤに対する出力Ｏを示す図である。
【図２２】図２２は、応答返値の例を示す図である。
【符号の説明】
【００６９】
１０          マイクロプロセッサ
１２          探索回路
１４          レジスタ
３０          ｉビット演算回路
３２          ＯＲ回路
３４          デクリメント回路
４０          行列ベクトル積回路
４２          行列レジスタ
５２          演算手段
５４          入出力手段
５６          行列演算手段
５８          探索手段
６０          資源管理プロセッサ
６２          プロセッサ
６４          共有資源
６６          管理ワード
７０          ４並列資源割当回路
１３０        ４ビット探索回路
１３２        １６ビット探索回路
１３６        一進セレクタ回路
【図１】
2010049430.tif 000003
【図２】
2010049430.tif 000004
【図３】
2010049430.tif 000005
【図４】
2010049430.tif 000006
【図５】
2010049430.tif 000007
【図６】
2010049430.tif 000008
【図７】
2010049430.tif 000009
【図８】
2010049430.tif 000010
【図９】
2010049430.tif 000011
【図１０】
2010049430.tif 000012
【図１１】
2010049430.tif 000013
【図１２】
2010049430.tif 000014
【図１３】
2010049430.tif 000015
【図１４】
2010049430.tif 000016
【図１５】
2010049430.tif 000017
【図１６】
2010049430.tif 000018
【図１７】
2010049430.tif 000019
【図１８】
2010049430.tif 000020
【図１９】
2010049430.tif 000021
【図２０】
2010049430.tif 000022
【図２１】
2010049430.tif 000023
【図２２】
2010049430.tif 000024