(58)【調査した分野】(Int.Cl.,DB名)
前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する第2の複数アドレス線に接続する、請求項3に記載の再構成可能デバイス。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記のような、データ処理の遅延は、演算処理自体は、単純な演算の繰り返しであるにもかかわらず、データが大量にあるときにその傾向が強い。そのため、プロセッサが行うほどの高度な処理は、必要ない。そのため、CPUにデータを転送せず、メモリ側でデータ処理を行い、CPUはより高度な演算処理が必要なときに使用することで、データ処理の高速化が図れる。
【0007】
本実施形態に係る半導体装置は、メインメモリの側に配置され、単純な演算の繰り返しを担当することで、CPUからのメインメモリアクセスを減らし、データ処理の高速化を図る。上記課題を解決する形態は、以下の項目セットにより示されるように、半導体装置が実現される。
【0008】
1.メインメモリと、接続する再構成可能デバイスであって、
前記再構成可能デバイスは、互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
前記複数のアドレス線の一部から入力されるアドレスをデコードするアドレスデコーダと、
前記アドレスデコーダのデコード線により特定される複数のメモリセルを有し、前記特定されたメモリセルから読み出されたデータを前記データ線に出力するメモリセルアレイユニットと、を有し、
前記メモリセルアレイユニットのアドレス線が、前記メインメモリのデータ出力線と接続されている、再構成可能デバイス。
【0009】
2.前記メモリセルユニットは、マルチルックアップテーブルである、項目1に記載の再構成可能デバイス。
【0010】
本半導体装置は、論理要素及び/又は接続要素としての動作を、マルチルックアップテーブルで行うため、配線接続を選択回路で実現するFPGAとは明確に異なる。
【0011】
3.前記各論理部は、
前記複数のアドレス線の一部から入力されるアドレスをデコードする第1アドレスデコーダと、
前記複数のアドレス線の他の一部から入力されるアドレスをデコードする第2アドレスデコーダと、
前記第1アドレスデコーダのデコード線により特定される複数にメモリセルを有する第1メモリセルユニットと、
前記第2アドレスデコーダのデコード線により特定される複数のメモリセルを有する第2メモリセルユニットと、を備える項目1又は2に記載の再構成可能デバイス。
【0012】
4.前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する第2の複数アドレス線に接続する、項目3に記載の半導体装置。
【0013】
大容量メモリを活用し余剰アドレスをページ切替制御にして制御可能とした再構成可能な半導体装置が提供できる。
【0014】
5.メインメモリと、
前記メインメモリと接続する再構成可能デバイスであって、
前記再構成可能デバイスは、互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
前記複数のアドレス線の一部から入力されるアドレスをデコードするアドレスデコーダと、
前記アドレスデコーダのデコード線により特定される複数のメモリセルを有し、前記特定されたメモリセルから読み出されたデータを前記データ線に出力するメモリセルアレイユニットと、を有し、
前記メモリセルアレイユニットのデータ出力が、前記メインメモリのアドレス線と接続されている、再構成可能デバイスと、を備える半導体装置。
【0015】
6.第2の再構成可能デバイスをさらに備え、
前記第2の再構成可能デバイスは、互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
前記複数のアドレス線の一部から入力されるアドレスをデコードするアドレスデコーダと、
前記アドレスデコーダのデコード線により特定される複数のメモリセルを有し、前記特定されたメモリセルから読み出されたデータを前記データ線に出力するメモリセルアレイユニットと、を有し、
前記メモリセルアレイユニットのデータ出力が、前記メインメモリのアドレス線と接続されている、
項目6に記載の半導体装置。
【0016】
7.前記メインメモリと、前記再構成可能デバイスの間に、両者の回路規模を調整する規模調整回路をさらに備える項目5又は6に記載の半導体装置。
【発明の効果】
【0017】
本実施形態は、CPUからのメインメモリアクセスを減らし、データ処理の高速化できる。
【発明を実施するための形態】
【0019】
以下、図面を参照して、1.コンピュータ装置及び半導体装置、2.MRLD、3.MLUT、4.MLUTの論理動作、5.真理値表データの生成方法について、順に説明する。
【0020】
1.コンピュータ装置及び半導体装置
プロセッサにとってメインメモリ上のデータは、逐次アドレスを照合しながら情報探しを実行することになるので極めて大きな時間と負担を伴う処理となる。従って効率的に情報処理を行うためには通常メモリ上のどのアドレスにどのような情報が存在するかなどを事前に整理加工し、プロセッサの情報探しの負担が軽減できるようにメタデータを用意する。例えば、ハッシュテーブルである。しかし、メタデータの準備には多大な時間を要するため、データメンテナンスを繰り返す必要があり、プロセッサを並列化するなど、装置を大型化して大電力を与える必要がある。以下に示す、コンピュータ装置又は半導体装置は、メタデータを要することなく、メモリに様々な機能を実現することができる。
【0021】
1.1 コンピュータ装置
図1は、本実施形態に係るコンピュータ装置の全体構成の第1例を示す図である。
図1に示すように、コンピュータ装置10は、プロセッサ510、メインメモリ600、通信部530、外部記憶装置540、ドライブ装置550、及びI/Oコントローラ560を有する。
【0022】
プロセッサ510は、プロセッサコア511、L2キャッシュコントローラ512、L2キャッシュメモリ514、及びメモリコントローラ516を有する。また、プロセッサ510は、I/Oコントローラ560を介して、通信部530、及び外部記憶装置540に接続する。プロセッサ510は、メインメモリ600に記憶されたプログラムを実行することで、メインメモリ600からデータをロードし、ロードしたデータを演算して、メインメモリ600に演算結果をストアする装置である。
【0023】
メモリコントローラ516は、コンピュータ装置10上でメインメモリ600への、データの読み出し、書き出し、メインメモリ600がDRAMであれば、それのリフレッシュなど、メインメモリのインタフェースを行う。例えば、メインメモリ600からL2キャッシュメモリ514へのデータのロード、L2キャッシュコントローラ512からメインメモリ600へのデータのストア等を行う。
【0024】
L2キャッシュメモリ514は、メインメモリ600が記憶するデータの一部を保持する。また、L2キャッシュメモリ514は、プロセッサコア511が有するL1キャッシュメモリ(L1 Cache Memory)が保持するデータを包含する。
【0025】
L2キャッシュコントローラ512は、プロセッサコア511からのアクセス頻度が高いデータをL2キャッシュメモリ514に格納し、アクセス頻度が低いデータをL2キャッシュメモリ514からメインメモリ600に追い出すように動作する。
【0026】
プロセッサコア511は、例えばプロセッサコアであり、上記したプロセッサ510の演算機能を有する。なお、
図1に示されるプロセッサコアの個数は、1個であるが、複数でもよい。プロセッサ510が複数のプロセッサコアを有する場合、1つのプロセッサコアがマスターとして動作し、プログラムを実行するとともに、スレーブとしての他のプロセッサコアに、プログラムを分担して実行させるように動作する。このようなマスターの動作は、プログラム内に命令列として記述され、その命令列を実行することで実現してもよい。
【0027】
I/Oコントローラ560は、プロセッサ510と、他のユニットとの接続を制御する入出力制御装置である。I/Oコントローラ560は、例えば、PCI Express(Peripheral Component Interconnect Express)などの規格に従って動作する。
【0028】
メインメモリ600は、データやプログラムを記憶する装置である。プロセッサ510は、I/Oコントローラ560を介することなく、メインメモリ600にアクセスすることができる。メインメモリ600は、例えば、DRAM(Dynamic Random
Access Memory)である。
【0029】
外部記憶装置540は、メインメモリ600に格納されるプログラム及びデータを記憶する不揮発性の記憶装置である。外部記憶装置540は、磁気ディスクを用いたディスクアレイ、又は、フラッシュメモリを用いたSSD(Solid State Drive)等である。
【0030】
通信部530は、通信経路としてのネットワーク1100と接続し、ネットワーク1100に接続された他のコンピュータ装置と、コンピュータ装置10との間で、データを送受信する。通信部530は、例えば、NIC(Network Interface Controller)である。
【0031】
ドライブ装置550は、例えば、フロッピー(登録商標)ディスクやCD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)などの記憶媒体1200を読み書きする装置である。ドライブ装置550は、記憶媒体1200を回転させるモータや記憶媒体1200上でデータを読み書きするヘッド等を含む。なお、記憶媒体1200は、プログラムを格納することができる。例えば、記憶媒体1200は、演算処理を規定するプログラムに加え、集積回路を設計するためのC言語記述またはハードウェア記述言語(HDL)などの回路記述言語1210、真理値表データ1230を生成するための論理構成用プログラム1220を格納することができる。真理値表データ1230は、プロセッサコア511により生成されるが、図示されるように、記憶媒体1200に格納され、運ばれてもよい。この場合、真理値表データ1230は、図示されない他のコンピュータ装置で生成される。ドライブ装置550は、ドライブ装置550にセットされた記憶媒体1200からプログラムを読み出す。プロセッサ510は、ドライブ装置550により読み出されたプログラムを、メインメモリ600又は外部記憶装置540に格納する。なお、真理値表データ1230は、再構成可能デバイス20に書き込まれて、再構成可能デバイス20に所望の演算処理を実行させるが、他のプログラムは、プロセッサコアにより実行される点で、両者は区別される。
【0032】
1.1 半導体装置
16は、メインメモリと再構成可能デバイスで少なくとも構成される半導体装置である。メインメモリ600のデータ出力には、再構成可能デバイス20が接続されている。再構成可能デバイスは、単純な演算を行う回路が実現されている。例えば、シーケンシャル比較機やオートマトンである。
【0033】
メモリコントローラ516が、アドレスADにより、所定のアドレス空間の読出しを行うと、再構成可能デバイス20は、メインメモリ600のアドレス空間から出力されるデータRD1に対して、演算を行い、必要なデータRD2をメモリコントローラ516に出力する。このとき、データRD1に対して、演算処理を施したデータRD2のデータ量は、従前のプロセッサが行うデータ処理を施した後のデータであるため、プロセッサ510の処理負荷を下げることができる。
【0034】
プロセッサコア511は、図示しないL1キャッシュメモリから読み出した命令にしたがって、命令により特定される処理を、図示しないレジスタに保持されるデータに対して実行する。命令には、浮動小数点演算、整数演算、アドレス生成、分岐命令実行、及びストア又はロード動作などがある。つまり、プロセッサコア511は、プログラムに従って、どのような命令も動的に実行可能である。一方で、再構成可能デバイス20は、後述するように、MLUT(Multi Look up Table)で構成され、再構成にはメモリの書き換え処理を要するため、所定の命令に従って回路構成されているプロセッサコア511より、複数の演算処理を高速に実行することはできない。しかしながら、例えば、画像処理でのデータ検索処理や、データ検索処理の並列動作を行うことで、プロセッサ510からのメインメモリアクセスを劇的に低減し、コンピュータ装置10のスループットを大幅に向上させることができる。
【0035】
メインメモリ600のデータ出力線は、再構成可能デバイス20のアドレス入力線と接続される。メインメモリ600は、高集積化されているため、再構成可能デバイス20も同様に高集積化される方が好ましい。そのため、再構成可能デバイス20のメモリも、メインメモリを構成するDRAMで構成されるのが好ましい。
【0036】
図2は、本実施形態に係るコンピュータ装置の全体構成の第2例を示す図である。
図1と異なり、メインメモリ600のアドレス入力の前段に、再構成可能デバイス20Aが搭載されている。
【0037】
メモリコントローラ516が、アドレスAD1により、所定のアドレス空間の読出しを行うと、再構成可能デバイス20Aは、アドレスAD1をアドレスAD2に変換する。アドレスAD2により、メインメモリ600のアドレス空間から出力されるデータRD1に対して、再構成可能デバイス20Bは、演算を行い、データRD2をメモリコントローラ516に出力する。
【0038】
再構成可能デバイス20A及び20Bは、メモリ不良救済や、CAM(Content
Addressable Memory)等を実現する。メモリ不良救済とは、歩留向上のため、不良ビットを冗長ビットに置き換え不良を良品にするものである。メインメモリは、一般的に固定の救済回路を持つが、このメモリ不良救済を、再構成可能デバイス20Aでも実現できる。これにより、テストして不良を他のアドレスに切り替え、自立的に救済できる。
【0039】
図3は、構成される演算器の一例を示す。再構成可能デバイス20は、
図3の演算器を、データ出力ごとに並列に構成することができる。メインメモリ600から、選択され読み出されたワードアドレスのメモリデータは、フリップフロップに直接代入、フリップフロップの過去フラグとの論理積、論理和、排他論理、そしてメモリデータ並びにフリップフロップ出力の過去データの双方の論理否定が自由に選択されnビット並列に任意の1ビット演算が出来る構成である。例えば8ビットのデータを演算する場合、1ビット演算を所定回繰り返すことにより実施する。現在の情報処理のデータは1ビットデータの集合体である、各1ビットが定義された情報であればこの演算方式で全ての情報処理が可能になる。
【0040】
また、後述されるように、再構成可能デバイスは、MLUTという論理ユニットで構成され、これらは、真理値表データを格納することで、論理要素及び/又は接続要素として構成されるので、構成可能な回路は、
図3に示す演算器に限定されない。
【0041】
また、再構成可能デバイス20A及び20Bは、CAMを実現できる。CAMはメモリセル1つ1つに一致回路を持つので回路構成が極めて大掛かりになり、特殊なメモリで回路設計から作らなければならなく、メモリIPが使えない。しかし、再構成可能デバイス20Aが、メインメモリ600にデータ登録の際に、索引のような形で登録すれば、データワードを格納するメインメモリ600のアドレスを出力することも可能になる。
【0042】
2.MRLD
以下、再構成可能な論理デバイスを、MRLD(Memory based Reconfigurable Logic Device)(登録商標)とも呼び、同一の参照符号20を用いて説明する。MRLDは、各MLUT間が、配線要素を介在せずに直接接続するとともに、メモリIPとして供給される同期SRAMの機能を有効に活用される。尚、以下の記述でのMLUTでは図示していないが、アドレス遷移検出部を備え、同期SRAMでも非同期化している。これにより、非同期化すると同時に、論理を構成しないブロックには入力信号が入力されず、アドレス遷移が起こらず、電力が削減できる。論理を構成するブロックは入力信号が入力されるので、クロック生成がなされ、所定の論理値を出力できる。
【0043】
図4に示す20は、MRLDの一例である。MRLD20は、同期SRAMを利用したMLUT30を複数個、アレイ状に配置したMLUTアレイ60、MLUT30のメモリ読出し動作、書込み動作対象となるメモリセルを特定する行デコーダ61、及び、列デコーダ62を有する。
【0044】
MLUT30は、同期SRAMで構成される。メモリの記憶素子には、真理値表とみなされるデータがそれぞれ記憶されることで、MLUT30は、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。
【0045】
MRLD20の論理動作では、実線で示される論理用アドレスLA、及び論理用データLDの信号を使用する。論理用アドレスLAは、論理回路の入力信号として使用される。そして、論理用データLDは、論理回路の出力信号として使用される。MLUT30の論理用アドレスLAは、隣接するMLUTの論理動作用データLDのデータ線と接続している。
【0046】
MRLD20の論理動作により実現される論理は、MLUT30に記憶される真理値表データにより実現される。いくつかのMLUT30は、AND回路、加算器などの組み合わせ回路としての論理要素として動作する。他のMLUTは、組み合わせ回路を実現するMLUT30間を接続する接続要素として動作する。MLUT30が、論理要素、及び接続要素を実現するための真理値表データの書き換えは、メモリへの書き込み動作によりなされる。
【0047】
MRLD20の書き込み動作は、書込用アドレスAD、及び書込用データWDによりなされ、読出し動作は、書込用アドレスAD、及び読出用データRDによりなされる。
【0048】
書込用アドレスADは、MLUT30内のメモリセルを特定するアドレスである。書込用アドレスADは、m本の信号線で、2のm乗の数nのメモリセルを特定する。行デコーダ61は、m本の信号線を介してMLUTアドレスを受け取るとともに、MLUTアドレスをデコードして、メモリ動作の対象となるMLUT30を選択し特定する。メモリ動作用アドレスは、メモリの読出し動作、書き込み動作、両方の場合で使用され、m本の信号線を介して、行デコーダ61、列デコーダ62でデコードされて、対象となるメモリセルを選択する。なお本実施形態においては、後述するが、論理用アドレスLAのデコードは、MLUT内のデコーダにより行う。
【0049】
行デコーダ61は、リード・イネーブル信号re、ライト・イネーブル信号we等の制御信号に従って、書込用アドレスADのmビットのうちxビットをデコードし、デコードアドレスnをMLUT30に対して出力する。デコードアドレスnは、MLUT30内のメモリセルを特定するアドレスとして使用される。
【0050】
列デコーダ62は、書込用アドレスADのmビットのうちyビットをデコードし、行デコーダ61と同様の機能を有して、デコードアドレスnをMLUT30に対して出力するとともに、書込用データWDの出力、及び、読出用データRDを入力する。
【0051】
なお、MLUTのアレイがs行t列である場合、MLUTアレイ60からはn×tビットのデータが行デコーダ61に入力される。ここで、各行毎のMLUTを選択するために行デコーダはo行分のre,weを出力する。つまり、o行は、MLUTのs行に相当する。ここでoビットのうち、1ビットだけをアクティブにすることで、特定のメモリセルのワード線が選択される。そしてt個のMLUTがnビットのデータを出力するため、n×tビットのデータがMLUTアレイ60から選択され、そのうち1列を選択するのに列デコーダ62が使われる。
【0052】
図1に示した再構成可能デバイス20の場合、
図4のADは、
図1のRD1に相当し、
図4のRDは、
図1のRD2に相当する。
【0053】
図2に示した20Aの場合、
図4のADは、
図2のAD1に相当し、
図4のRDは、
図2のAD2に相当する。
図2に示した20Bの場合、
図4のADは、
図2のRD1に相当し、
図4のRDは、
図2のRD2に相当する。
【0054】
3.MLUT
図7は、
図9に示す2メモリセルユニットからなるMLUTを横積みして構成されるMRLDを概略的に示す図である。
図8は、MLUTの入出力線を示す図である。
図7に示すMLUT30は、左方向から
図8に示すアドレスA0L〜A7Lの入力があり、及び、右方向から
図8に示すアドレスA0R〜A7Rの入力があり、また、左方向へ
図8に示すデータD0L〜D7Lの出力があり、右方向へ
図8に示すデータD0R〜D7Rの出力がある。n値=8のMLUTは従来方式では1MビットとなりCLB相当が4Mビットと大規模化してしまう。それに対して本案では後述するように、8K(256ワード×16ビット×MLUT2個)ビットで構成される。
【0055】
図9は、
図8に示すMLUTの回路例を示す図である。
図9に示すMLUT30は、メモリセルユニット31A、31Bを有する。メモリセルユニットは、例えば、SRAMである。
【0056】
図9に示されるように、メモリセルユニット31Aは、一辺からの第1複数アドレス線により特定されて、第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、メモリセルユニット31Bは、他辺からの第2複数アドレス線により特定されて、第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、MLUT30は、第1複数データ線及び第2複数データ線の一部を、一辺へ出力するとともに、第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する。
【0057】
各メモリセルユニットは、一方向毎に真理値表データをメモリセルに記憶する。そのため、メモリセルユニット31A及び31Bの各々には、右から左方向用の真理値表データ、及び、左から右方向用の真理値表データを記憶する。すなわち、MLUTは、それぞれが特定のデータ出力方向を規定する2つの真理値表データを記憶する。
【0058】
各メモリセルユニットのデータ数を、アドレス数より増やすとともに、各メモリセルユニットからデータ出力の方向を双方向にすることで、必要なメモリセルの数を少なくし、且つ、双方向へのデータ出力を可能にすることができる。
【0059】
図10は、
図9に示すMLUTより詳細な回路例を示す。
図10に示すMLUT30は、メモリセルユニット31A、31B、アドレスデコーダ11A、11B、アドレスセレクタ15A、15B、I/O(入出力)バッファ12A、12B、及び、データセレクタ13A、13Bを有する。MLUT30のメモリセルユニット31A、31Bは、それぞれ、アドレスデコーダ、アドレスセレクタ、及びI/Oバッファ、及び、データセレクタを有する。メモリセルユニット31A、31Bへの入力アドレスが、それぞれ、アドレスA0L〜A7L、A8〜A15、及び、アドレスA0R〜A7R、A8〜A15となる。そのため、メモリセルユニット31A、31Bは、2の16乗(65,536)ワード×8ビットの512Kの大容量となる。
【0060】
図9では、メモリセルユニット31A、31Bは、それぞれアドレスA0L〜A7L、A8〜A15、及び、アドレスアドレスA0R〜A7R、A8〜A15の入力を有する。
【0061】
なお、
図9は、概略図であり、メモリセルユニットの周辺回路であるデコーダ等は、示しておらず、デコーダは
図10で説明したアドレスデコーダ11A、11Bが、各メモリセルユニット毎に用意され、アドレスセレクタ15A、15Bと、メモリセルユニット31A、31Bの間に配置される。よって、アドレスデコーダは、アドレスセレクタ15A、15Bから出力される全てのアドレスをデコードしてもよい。
【0062】
アドレスセレクタ15A、15Bは、論理動作用のアドレス線か、書込み用のアドレスかを切り替えるための選択回路であり、メモリセルがシングルポートの場合、必要となる。メモリセルをデュアルポートとする場合、アドレスセレクタは不要である。データセレクタ13A、13Bは、出力データ、又は、書込みデータWDを切り替える選択回路である。
【0063】
MRLDは専用の小型のSRAMに関する半導体設計試作、製造を経なくても、従来の大容量のメモリデバイスを利用できる。MRLDをチップで構成する際、メモリIP(Intellectual Property)を使うが、従来のMLUTが求めている微小メモリ容量では、アドレスデコーダやセンスアンプの面積が大きくメモリ自体の構成比率は50%以下になる。このことは、MRLDのオーバヘッドにもなり、効率が悪い。大容量メモリになるとアドレスデコーダやセンスアンプの比率は下がり、メモリ使用効率が上がる。そのため、大容量メモリにあった本案はMRLDチップの場合有効になる。
【0064】
3.2 同期/非同期動作用のメモリセルユニットを有するMLUT
ここで説明するMLUTは、双方向配置MLUTであり、
図7及び
図8で説明したMLUTと同じ機能構成を有する。しかし、上記の双方向配置MLUTと異なり、同期動作用のメモリセルユニットと、非同期動作用のメモリセルユニットを備える。同期動作用のメモリセルユニット又は非同期動作用のメモリセルユニットは、ペアを構成するが、論理要素及び/又は接続要素として動作するメモリセルユニットは、何れか1つである。両者のデータ出力を、ワイヤードオア接続、又は、OR回路で接続されるため、動作しないメモリセルユニットには、全て「0」のデータが格納される。
【0065】
図11は、同期非同期切り替え可能なMLUTの回路例を示す図である。
図11に示すMLUT30は、メモリセルユニット31A〜31D、アドレスデコーダ11A〜11D、I/O(入出力)バッファ13A〜13D、選択回路32A〜32D、データ選択回路33、及びアドレス遷移検出部35を有する。アドレス遷移検出部35は、ATD(Address Transition Detector)回路を含み、クロックとともに、送信される論理アドレスが、前回送信の論理アドレスと比較して、アドレス遷移を検出する。
【0066】
図5は、アドレス遷移検出部の一例を示す回路図である。
図6は、アドレス遷移検出部のタイミングチャートである。アドレス遷移検出部35は、否定論理和(NOR)回路110A、110B、論理和(OR)回路120、排他的論理和(EOR)回路130、遅延回路140A〜140C、フリップフロップ(FF)150、インバータ160A、160B、及びDラッチ170を有する。
【0067】
信号S1は、プロセッサから出力されるアドレス入力信号である。信号S2は、Dラッチの出力である。Dラッチ170は、信号S1に変化があった場合、一定期間変化しないようにラッチする。これは、ノイズ等で後続のアドレス遷移を無視するためである。
【0068】
信号S3は、Dラッチ170から出力される遅延信号である。遅延信号は、
図5に示されるように、立ち上がりおよび立ち下がりでクロックを作って、信号S4のクロック幅を生成するために、遅延回路140Bで遅延される。
【0069】
クロック信号として生成される信号S4は、変化を検出して、EOR130から出力される。EOR130では、遅延回路140Bの入力と、出力とが入力されるので、両者の信号レベルが異なると、信号レベル「ハイ」を出力する。これにより、アドレス遷移を検出することができる。
図6に示すS4の時間T1は、論理アドレスの変化検出からFF取り込みでの時間を示し、時間T2は、論理アドレス変化検出からメモリセルユニット読出しまでの時間を示す。
【0070】
OR回路120では、信号S4とともに、他のアドレス遷移の信号が入力され、OR演算値を出力する。OR回路120の出力は、遅延回路140Cで遅延されて、信号S5が出力される。
【0071】
信号S5は、遅延回路140Cから出力される遅延信号であり、Dラッチ170のイネーブル信号待ちしてクロック入力する。
【0072】
信号S6は、信号S5の信号延長であり、イネーブル信号のパルス生成である。NOR回路110Aは、信号S5とS6のNOR演算値である信号S7を出力する。そして、信号S7は、Dラッチ170のイネーブル信号となる。信号S8は、信号S5をインバータ160Aで反転した信号で、FF150で、アドレス信号のラッチのクロックとして使用される。信号S9は、後段にあるメモリセルユニット31のイネーブル、信号S10は、メモリセルユニット31のクロック(atd_clk)、信号S11は、メモリセルユニット31のアドレスとして利用される。
図5の信号S10は、論理アドレスの変化検出からメモリからのリードまでの時間を示す。
【0073】
このように、例えば、
図1又は
図2に示すプロセッサコア511がデータ要求をした場合、そのデータ要求の対象となるアドレスの変化を持ってクロックを生成し、メモリを駆動するので、必要なときにメモリが動作して、不必要なときにメモリ駆動させず、自律的に低消費電力化できる。
【0074】
A.信号線
図11に示す信号線を、下記表1に説明する。
【0076】
B.同期/非同期メモリセルユニット
メモリセルユニット31A〜31Dは、同期SRAMである。メモリセルユニット31A〜31Dはそれぞれ、左方向および右方向へ接続するための真理値表データを記憶する。メモリセルユニット31B及び31Dは、システムクロックに同期して動作する。一方、メモリセルユニット31A及び31Cは、後述するアドレス遷移回路35が生成するATD生成クロック(「内部クロック信号」とも言う)に同期して動作するために、クロック(システムクロック)に対して、非同期で動作する。ATD生成クロックが、システムクロック信号より、高周波数で動作するために、メモリセルユニット31A、31Cは、MLUT30外部からは、非同期動作するようにみえることで、非同期の機能を提供する。
【0077】
同期の機能要件を除けば、メモリセルユニット31A及び31Cは、
図9及び
図10に示すメモリセルユニット31A及び31Bと同じ機能を有する。メモリセルユニット31B及び31Dも、同様である。
【0078】
アドレスデコーダ11A及び11Bはともに、左側から入力するアドレスA0〜A3をデコードして、デコード信号を、それぞれ、メモリセルユニット31A及び31Bに出力して、メモリセルユニット31A及び31Bのワード線をアクティブにする。
【0079】
アドレスデコーダ11C及び11Dは、右側から入力するアドレスA4〜A7をデコードして、デコード信号を、それぞれ、メモリセルユニット31C及び31Dに出力して、メモリセルユニット31C及び31Dのワード線をアクティブにする。
【0080】
また、アドレスデコーダ11A及び11Cは、SRAMアドレス非同期信号(sram_address(async))をデコードし、アドレスデコーダ11A及び11Cは、SRAMアドレス同期信号(sram_address(sync))をデコードして、デコード信号により特定されるメモリセルユニットのワード線を活性化する。
【0081】
図11に示す例では、各メモリセルユニットは、16wordx8bitのメモリブロックである。メモリセルユニット31A及び31Bは、16wordx8bitx2は同期モードで使用し、16wordx8bitx2は非同期モードで使用が可能である。同期と非同期は同時動作はできず、例えば同期動作メモリセルユニットに論理データをライトした場合、非同期動作メモリセルユニットには全て「0」を書き込む必要がある。
【0082】
なお、メモリセルユニットのデータ出力は、図示のように、ワイヤードORとしてもよいし、OR論理回路を設けてもよい。
【0083】
C.選択回路
選択回路の選択条件を、以下の表に示す。
【表2】
【0084】
選択回路32A〜32Dは、非同期動作用のメモリセルユニット31A及び31C、又は、同期動作用のメモリセルユニット31B及び31Dの動作を選択する回路である。
【0085】
選択回路32Aは、選択信号(Select)により、非同期動作が選択されると、アドレス遷移回路35で生成されるatd_adラッチアドレス(
図3に示すS11)を選択して、SRAMアドレス非同期信号(sram_address(async))として出力する。非同期動作が選択されない場合、論理アドレスをそのまま出力する。
【0086】
選択回路32Bは、選択信号(Select)により、非同期動作が選択されると、アドレス遷移回路35で生成されるATD生成クロックを選択して、出力する。非同期動作が選択されない場合、クロックをそのまま出力する。
【0087】
選択回路32Cは、選択信号(Select)により、非同期動作が選択されると、アドレス遷移回路35で生成されるATD生成チップセレクトを選択して、出力する。非同期動作が選択されない場合、SRAMチップイネーブルをそのまま出力する。
【0088】
選択回路32Dは、選択信号(Select)により、同期動作が選択されると、論理アドレスをそのまま出力する。
【0089】
D.禁止論理
また、メモリ分割の特性として、禁止論理構成がある。表2に示す2つの真理値表を用いて、禁止論理の必要性を説明する。
【0091】
真理値表1では、A0,A1を使用してAND回路を構成し、D0に出力する真理値表が示される。真理値表2では、A0,A4を使用してAND回路を構成し、D0に出力する真理値表が示される。真理値表1の場合の論理は、A3−A0使用のメモリセルユニット31Aだけで論理演算可能なので、他のメモリセルユニットに“0”を書き込んでいれば、OR演算により、他のメモリセルユニットの出力値の影響を受けないので、禁止論理の問題は生じない。
【0092】
一方、真理値表2の論理の場合、A3−A0使用のメモリセルユニットはc、dの識別ができない。A7−A4使用のSRAMは、b、dの識別がつかない。このように、2つのメモリセルユニットをまたがる論理演算は、2つの真理値表では正しい値を得られないため、2つのメモリセルユニットを跨ぐ論理演算を、禁止論理としている。よって、論理構成する場合、各メモリセルユニット内部で、論理を実現する必要がある。そのため、本実施形態に係る真理値表データでは、上記禁止論理を生成しないように生成される。
【0093】
E.I/Oバッファ
I/O(入出力)バッファ13A〜13Dは、クロックとATD生成クロックの何れかに同期して、メモリセルユニットのデータ線からデータを読み出すことで、FFの機能を提供している。なお、I/O(入出力)バッファ13A〜13Dは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。
【0094】
選択回路32は、SRAMデータ出力(O_mdata)を、選択信号に従って、SRAMデータ出力、及び、論理データ出力の何れかとして出力する。
【0095】
3.3 回路規模調整回路
MRLD20は、小さなメモリセルユニットで構成されるため、メインメモリ600と比べて集積回路の規模が大きくなり、合わない。
図12は、規模調整回路の一例を示す図である。規模調整回路21Aは、メインメモリ600とMRLD20Aの間に配置され、回路規模調整回路21Bは、メインメモリ600とMRLD20Bの間に配置される。
【0096】
4.MLUTの論理動作
A.論理要素
図13は、MLUTの一例を示す図である。
図13では、論理動作の説明を行うために、アドレスセレクタ、I/Oバッファ及びデータセレクタの表記は、省略される。
図13に示すMLUT30a、30bは、4つの論理用アドレス入力LA線A0〜A3と、4つの論理動作用データ線D0〜D3と、4×16=64個の記憶素子40と、アドレスデコーダ9とをそれぞれ有する。論理動作用データ線D0〜D3は、16個の記憶素子40をそれぞれ直列に接続する。アドレスデコーダ9は、論理用アドレス入力LA線A0〜A3に入力される信号に基づき、16本のワード線のいずれかに接続される4つの記憶素子を選択するように構成される。この4つの記憶素子はそれぞれ、論理動作用データ線D0〜D3に接続され、記憶素子に記憶されるデータを論理動作用データ線D0〜D3に出力する。例えば、論理用アドレス入力LA線A0〜A3に適当な信号が入力される場合は、4つの記憶素子40A、40B、40C、及び40Dを選択するように構成することができる。ここで、記憶素子40Aは、論理動作用データ線D0に接続され、記憶素子40Bは、論理動作用データ線D1に接続され、記憶素子40Dは、論理動作用データ線D2に接続され、記憶素子40Dは、論理動作用データ線D3に接続される。そして、論理動作用データ線D0〜D3には、記憶素子40A〜40Dに記憶される信号が出力される。このように、MLUT30A、30Bは、論理用アドレス入力LA線A0〜A3から論理用アドレス入力LAを受け取り、その論理用アドレス入力LAによってアドレスデコーダ9が選択する4つの記憶素子40に記憶される値を、論理動作用データ線D0〜D3に論理動作用データとしてそれぞれ出力する。なお、MLUT30Aの論理用アドレス入力LA線A2は、隣接するMLUT30Bの論理動作用データ線D0と接続しており、MLUT30Aは、MLUT30Bから出力される論理動作用データを、論理用アドレス入力LAとして受け取る。また、MLUT30Aの論理動作用データ線D2は、MLUT30Bの論理用アドレス入力LA線A0と接続しており、MLUT30Aが出力する論理動作用データは、MLUT30Bで論理用アドレス入力LAとして受け取られる。例えば、MLUT30Aの論理動作用データ線D2は、MLUT30Aの論理用アドレス入力LA線A0〜A3に入力される信号に基づき、論理動作用データD2に接続される16個の記憶素子のいずれか1つに記憶される信号をMLUT30Bの論理用アドレス入力LA線A0に出力する。同様に、MLUT30Bの論理動作用データ線D0は、MLUT30Bの論理用アドレス入力LA線A0〜A3に入力される信号に基づき、論理動作用データ線D0に接続される16個の記憶素子のいずれか1つに記憶される信号をMLUT30Aの論理用アドレス入力LA線A2に出力する。このように、MLUT同士の連結は、1対のアドレス線とデータ線とを用いる。以下、MLUT30Aの論理用アドレス入力LA線A2と、論理動作用データ線D2のように、MLUTの連結に使用されるアドレス線とデータ線の対を「AD対」という。
【0097】
なお、
図13では、MLUT30A、30Bが有するAD対は4であるが、AD対の数は、特に後述するように4に限定されない。
【0098】
図14は、論理回路として動作するMLUTの一例を示す図である。本例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路701の入力とし、論理用アドレス入力LA線A2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路701の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を論理動作用データ線D0に出力する論理回路を構成する。
【0099】
図15は、
図14に示す論理回路の真理値表を示す図である。
図14の論理回路は、4入力のため、入力A0〜A3の全ての入力を入力として使用する。一方、出力は、1つのみなので、出力D0のみを出力として使用する。真理値表の出力D1〜D3の欄には「*」が記載されている。これは、「0」又は「1」のいずれの値でもよいことを示す。しかしながら、実際に再構成のために真理値表データをMLUTに書き込むときには、これらの欄には、「0」又は「1」のいずれかの値を書き込む必要がある。
【0100】
B.接続要素
図16は、接続要素として動作するMLUTの一例を示す図である。
図16では、接続要素としてのMLUTは、論理用アドレス入力LA線A0の信号を論理動作用データ線D1に出力し、論理用アドレス入力LA線A1の信号を論理動作用データ線D2に出力し、論理用アドレス入力LA線A2の信号を論理動作用データ線D3に出力するように動作する。接続要素としてのMLUTはさらに、論理用アドレス入力LA線A3の信号を論理動作用データ線D0に出力するように動作する。
【0101】
図17は、
図16に示す接続要素の真理値表を示す図である。
図16に示す接続要素は、4入力4出力である。したがって、入力A0〜A3の全ての入力と、出力D0〜D3の全ての出力が使用される。
図17に示す真理値表によって、MLUTは、入力A0の信号を出力D1に出力し、入力A1の信号を出力D2に出力し、入力A2の信号を出力D3に出力し、入力A3の信号を出力D0に出力する接続要素として動作する。
【0102】
図18は、AD対0、AD対1、AD対2、及びAD対3の4つのAD対を有するMLUTによって実現される接続要素の一例を示す図である。AD0は、論理用アドレス入力LA線A0と論理動作用データ線D0とを有する。AD1は、論理用アドレス入力LA線A1と論理動作用データ線D1とを有する。AD2は、論理用アドレス入力LA線A2と論理動作用データ線D2とを有する。そして、AD3は、論理用アドレス入力LA線A3と論理動作用データ線D3とを有する。
図18において、2点鎖線は、AD対0の論理用アドレス入力LA線A0に入力された信号がAD対1の論理動作用データ線D1に出力される信号の流れを示す。破線は、AD対1の論理用アドレス入力LA線A1に入力された信号がAD対2の論理動作用データ線D2に出力される信号の流れを示す。実線は、AD対2の論理用アドレス入力LA線A2に入力された信号がAD対3の論理動作用データ線D3に出力される信号の流れを示す。1点鎖線は、AD対3の論理用アドレス入力LA線A3に入力された信号がAD対0の論理動作用データ線D0に出力される信号の流れを示す。
【0103】
なお、
図18では、MLUT30が有するAD対は4であるが、AD対の数は、特に4に限定されない。
【0104】
C.論理要素と接続要素の組合せ機能
図19は、1つのMLUTが、論理要素及び接続要素として動作する一例を示す図である。
図19に示す例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路121の入力とし、2入力NOR回路121の出力と、論理用アドレス入力LA線A2とを2入力NAND回路122の入力とし、2入力NAND回路122の出力を論理動作用データ線D0に出力する論理回路を構成する。また同時に、論理用アドレス入力LA線A3の信号を論理動作用データ線D2に出力する接続要素を構成する。
【0105】
図20に、
図19に示す論理要素及び接続要素の真理値表を示す。
図19の論理動作は、入力D0〜D3の3つの入力を使用し、1つの出力D0を出力として使用する。一方、
図20の接続要素は、入力A3の信号を出力D2に出力する接続要素が構成される。
【0106】
図21は、AD0、AD1、AD2、及びAD3の4つのAD対を有するMLUTによって実現される論理動作及び接続要素の一例を示す図である。
図18に示すMLUTと同様に、AD0は、論理用アドレス入力LA線A0と論理動作用データ線D0とを有する。AD1は、論理用アドレス入力LA線A1と論理動作用データ線D1とを有する。AD2は、論理用アドレス入力LA線A2と論理動作用データ線D2とを有する。そして、AD3は、論理用アドレス入力LA線A3と論理動作用データ線D3とを有する。上述のように、MLUT30は、3入力1出力の論理動作と、1入力1出力の接続要素との2つの動作を1つのMLUT30で実現する。具体的には、論理動作は、AD対0の論理用アドレス入力LA線A0と、AD対1の論理用アドレス入力LA線A1と、AD対2の論理用アドレス入力LA線A2とを入力として使用する。そして、AD対0の論理動作用データ線D0のアドレス線を出力と使用する。また、接続要素は、破線で示すようにAD対3の論理用アドレス入力LA線A3に入力された信号をAD対2の論理動作用データ線D2に出力する。
【0107】
5.真理値表データの生成方法
第1及び第2実施形態を用いて説明した再構成可能な半導体装置に適用される真理値表データは、論理構成用のソフトウェアプログラムを実行する情報処理装置によって生成される。例えば、当該情報処理装置は、コンピュータ装置10であってもよいし、また、コンピュータ装置10と同様のハードウェア資源を有し、ネットワーク1100に接続される他のコンピュータ装置であってもよい。
【0108】
図1又は
図2を参照して、真理値表データを生成するコンピュータ装置の一例を説明する。コンピュータ装置10は、プロセッサ510と、メインメモリ600とドライブ装置550を有する。プロセッサ510は、通信部530や、ドライブ装置550からロードされた論理構成用のソフトウェア1210を実行後、集積回路を設計するためのC言語記述またはハードウェア記述言語(HDL)などの回路記述言語1220から真理値表データ1230を生成し、メインメモリ600に記憶する。プロセッサ510が、生成した真理値表データ1230を、再構成可能デバイス20に書き込む。
【0109】
ドライブ装置550は、例えば、DVD(Digital Versatile Disc)、フラッシュメモリなどの記憶媒体1200を読み書きする装置である。ドライブ装置550は、記憶媒体1200を回転させるモータや記憶媒体1200上でデータを読み書きするヘッド等を含む。ドライブ装置550は、セットされた記憶媒体1200からプログラムを読み出す。プロセッサ510は、ドライブ装置550により読み出されたプログラム又は真理値表データを、メインメモリ600に格納する。
【0110】
真理値表データ1230が再構成可能デバイス20に読み込まれることにより、真理値表データとハードウェア資源とが協働した具体的手段によって、論理要素及び/又は接続要素としての機能が構築される。また、真理値表データは、真理値表という論理的構造を示す構造を有するデータともいえる。
【0111】
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。