(58)【調査した分野】(Int.Cl.,DB名)
前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線及び第2複数データ線の一部を、前記一辺へ出力するとともに、前記第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する、請求項1または2に記載の半導体装置。
前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える、請求項3に記載の半導体装置。
前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する、請求項3に記載の半導体装置。
前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する前記複数アドレス線に接続する、請求項1〜6の何れか1項に記載の半導体装置。
前記第1メモリセルユニット及び第2メモリセルユニットの何れかのデータ線の一部は、前記第2複数アドレス線に接続するとともに、前記第1メモリセルユニット及び第2メモリセルユニットの何れかは、前記第2複数アドレス線に出力して、前記複数の真理値表データを特定するための真理値表データを記憶する、請求項3〜7の何れか1項に記載の半導体装置。
前記メモリセルユニットから読み出された真理値表データを保持するとともに、前記保持した真理値表データを、前記再構成可能論理マルチプレクサに出力する保持部をさらに備える請求項9に記載の半導体装置。
前記再構成可能論理マルチプレクサは、前記データ入力線からのデータ入力によって、前記保持部に保持された真理値表データの何れかを、選択して出力する請求項9又は10に記載の半導体装置。
前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線及び第2複数データ線の一部を、前記一辺へ出力するとともに、前記第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する、請求項13または14に記載の制御方法。
前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える、請求項15に記載の制御方法。
前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する、請求項15に記載の制御方法。
前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する第2複数アドレス線に接続する、請求項15〜18の何れか1項に記載の制御方法。
前記第1メモリセルユニット及び第2メモリセルユニットの何れかのデータ線の一部は、前記第2複数アドレス線に接続するとともに、前記第1メモリセルユニット及び第2メモリセルユニットの何れかは、前記第2複数アドレス線に出力して、前記複数の真理値表データを特定するための真理値表データを記憶する、請求項15〜19の何れか1項に記載の制御方法。
前記メモリセルユニットから読み出された真理値表データを保持するとともに、前記保持した真理値表データを、前記再構成可能論理マルチプレクサに出力する保持部をさらに備え、
前記再構成可能論理マルチプレクサは、前記データ入力線からのデータ入力によって、前記保持部に保持された真理値表データの何れかを、選択して出力する、請求項13〜22の何れか1項に記載の制御方法。
前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1又は第2メモリセルユニットに、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える処理を実行させる、請求項25に記載のプログラム。
前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記第1又は第2メモリセルユニットに、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する処理を実行させる、請求項27に記載のプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0006】
マルチビットの演算を前提にコーディングされたデータ処理を、MLUTで実現する場合、マルチビットを小さいビット数に分割(以下、「ビット分割」と言う)し、複数のMLUTによりビット演算を実現する必要がある。多方向型MLUTは、隣接するMLUTに対して1つのデータ又はアドレス入出力しかもたないので、隣接するMLUTに対して1ビットずつのデータ伝送しかできない。そのため、マルチビット演算では、1ビット数へのビット分割が必要により、使用するMLUT数が増加する。例えば、MLUTで8ビットの加算器を実現する場合、1ビットずつ演算する加算器を実現するMLUTが8つ必要になり、それらの演算結果を足し合わせるための論理回路を実現するMLUTも必要になる。
【課題を解決するための手段】
【0007】
上記課題を解決する形態は、以下の項目セットにより示される。
1.再構成可能な半導体装置であって、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
前記複数のアドレス線の一部から入力されるアドレスをデコードする第1アドレスデコーダと、
前記複数のアドレス線の他の一部から入力されるアドレスをデコードする第2アドレスデコーダと、
前記第1アドレスデコーダのデコード線により特定される複数にメモリセルを有する第1メモリセルユニットと、
前記第2アドレスデコーダのデコード線により特定される複数のメモリセルを有する第2メモリセルユニットと、を備えることを特徴とする再構成可能な半導体装置。
上記半導体装置によれば、メモリセルユニットは、アドレス線の二乗に比例して増えるので、データ線の数は同じであっても、各メモリセルユニットのアドレス数を少なくすれば、トータルに必要なメモリセルの数を少なくすることができる。
2.前記メモリセルユニットは、マルチルックアップテーブルである、項目1に記載の半導体装置。
本半導体装置は、論理要素及び/又は接続要素としての動作を、マルチルックアップテーブルで行うため、配線接続を選択回路で実現するFPGAとは明確に異なる。
3.前記論理部は、矩形状であり、一辺から複数のアドレス線又は複数のデータ線で他の論理部と接続するとともに、前記一辺と反対側の他辺から複数のアドレス線又は複数のデータ線で他の論理部と接続する、項目1又は2に記載の半導体装置。
隣接する論理部に対して複数ビットのデータ処理が可能になるので、複数ビット演算を行うプログラムから構成させるデータ処理において、使用する論理部の数を減らすことができる。
4.前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線及び第2複数データ線の一部を、前記一辺へ出力するとともに、前記第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する、項目3に記載の半導体装置。
各メモリセルユニットのデータ数を、アドレス数より増やすとともに、各メモリセルユニットからデータ出力の方向を双方向にすることで、必要なメモリセルの数を少なくし、且つ、双方向へのデータ出力を可能にすることができる。
5.前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える、項目4に記載の半導体装置。
6.前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する、項目4に記載の半導体装置。
何れかのメモリセルユニットの帰還方向の出力を制限することで、さらに、必要なメモリセルの数を減らすことができる。
7.前記第1及び/又は第2メモリセルユニットは、
ある前記アドレス線で特定されたメモリセルに記憶される値の論理演算を、データ線に出力するための真理値表データを記憶して、論理回路として動作し、及び/又は、
ある前記アドレス線で特定されたメモリセルに記憶される値を、他の論理部のアドレス線に接続するデータ線に出力するための真理値表データを記憶して、接続回路として動作するように構成される、項目1〜6の何れか1項に記載の半導体装置。
8.前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する第2の複数アドレス線に接続する、項目1〜7の何れか1項に記載の半導体装置。
大容量メモリを活用し余剰アドレスをページ切替制御にして制御可能とした再構成可能な半導体装置が提供できる。
9. 前記第1メモリセルユニット及び第2メモリセルユニットの何れかのデータ線の一部は、前記第2の複数アドレス線に接続するとともに、前記第1メモリセルユニット及び第2メモリセルユニットの何れかは、前記第2の複数アドレス線に出力して、前記複数の真理値表データを特定するための真理値表データを記憶する、項目1〜8の何れか1項に記載の半導体装置。
大容量メモリを活用して、ページ切り替え制御をおこなうこともできる。
10.前記第2の複数のアドレス線は、外部と接続する、項目1〜8の何れか1項に記載の半導体装置。
【0008】
11.前記論理部は、
データ入力線と、
データ出力線と、
前記真理値表データに応答して選択的に前記データ入力線からのデータ入力と、前記データ出力線への前記データ出力とを結合させ、及び/又は、前記真理値表データに応答して前記データ入力に関して論理演算したデータを、前記データ出力線へデータ出力する再構成可能論理マルチプレクサと、を備え、
前記データ入力線および前記データ出力線により近接する前記論理部が接続される、項目1〜10の何れか1項に記載の半導体装置。
12.前記メモリセルユニットから読み出された真理値表データを保持するとともに、前記保持した真理値表データを、前記再構成可能論理マルチプレクサに出力する保持部をさらに備える項目11に記載の半導体装置。
13.前記再構成可能論理マルチプレクサは、前記データ入力線からのデータ入力によって、前記保持部に保持された真理値表データの何れかを、選択して出力する項目11又は12に記載の半導体装置。
【0009】
14.再構成可能な半導体装置の制御方法であって、
前記半導体装置は、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
第1アドレスデコーダと、
第2アドレスデコーダと、
複数にメモリセルを有する第1メモリセルユニットと、
複数のメモリセルを有する第2メモリセルユニットと、を備え、
前記第1アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第2アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードし、
前記第1メモリセルユニットのメモリセルは、前記第1アドレスデコーダのデコード線により特定され、
前記第2メモリセルユニットのメモリセルは、前記第2アドレスデコーダのデコード線により特定される、ことを特徴とする制御方法。
15.前記メモリセルユニットは、マルチルックアップテーブルである、項目14に記載の制御方法。
16.前記論理部は、矩形状であり、一辺から複数のアドレス線又は複数のデータ線で他の論理部と接続するとともに、前記一辺と反対側の他辺から複数のアドレス線又は複数のデータ線で他の論理部と接続する、項目14又は15に記載の制御方法。
17.前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線及び第2複数データ線の一部を、前記一辺へ出力するとともに、前記第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する、項目16に記載の制御方法。
18.前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える、項目17に記載の制御方法。
19.前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する、項目17に記載の制御方法。
20.前記第1及び/又は第2メモリセルユニットは、
ある前記アドレス線で特定されたメモリセルに記憶される値の論理演算を、データ線に出力するための真理値表データを記憶して、論理回路として動作し、及び/又は、
ある前記アドレス線で特定されたメモリセルに記憶される値を、他の論理部のアドレス線に接続するデータ線に出力するための真理値表データを記憶して、接続回路として動作するように構成される、項目14〜19の何れか1項に記載の制御方法。
21.前記第1メモリセルユニット及び第2メモリセルユニットは、複数の真理値表データを記憶し、前記複数の真理値表データの何れか1つを特定するデータを出力する第2の複数アドレス線に接続する、項目14〜20の何れか1項に記載の制御方法。
22.前記第1メモリセルユニット及び第2メモリセルユニットの何れかのデータ線の一部は、前記第2の複数アドレス線に接続するとともに、前記第1メモリセルユニット及び第2メモリセルユニットの何れかは、前記第2の複数アドレス線に出力して、前記複数の真理値表データを特定するための真理値表データを記憶する、項目14〜21の何れか1項に記載の制御方法。
23.前記第2の複数のアドレス線は、外部と接続する、項目14〜22の何れか1項に記載の制御方法。
24.前記論理部は、
データ入力線と、
データ出力線と、
再構成可能論理マルチプレクサと、を備え、
前記データ入力線および前記データ出力線により近接する前記論理部に接続し、
前記再構成可能論理マルチプレクサは、前記真理値表データに応答して選択的に前記データ入力線からのデータ入力と、前記データ出力線への前記データ出力とを結合し、
前記真理値表データに応答して前記データ入力に関して論理演算したデータを、前記データ出力線へデータ出力する、項目14〜23の何れか1項に記載の制御方法。
25.前記メモリセルユニットから読み出された真理値表データを保持するとともに、前記保持した真理値表データを、前記再構成可能論理マルチプレクサに出力する保持部をさらに備え、
前記再構成可能論理マルチプレクサは、前記データ入力線からのデータ入力によって、前記保持部に保持された真理値表データの何れかを、選択して出力する、項目25に記載の制御方法。
【0010】
26.再構成可能な半導体装置を制御するためのプログラムにおいて、
前記半導体装置は、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
第1アドレスデコーダと、
第2アドレスデコーダと、
複数にメモリセルを有する第1メモリセルユニットと、
複数のメモリセルを有する第2メモリセルユニットと、を備え、
前記第1アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第2アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードし、
前記論理部は、矩形状であり、一辺から複数のアドレス線又は複数のデータ線で他の論理部と接続するとともに、前記一辺と反対側の他辺から複数のアドレス線又は複数のデータ線で他の論理部と接続すし、
前記第1及び第2メモリセルユニットは、各々が真理値表データから構成されるプログラムを記憶して、論理要素及び/又は接続要素として構成する、半導体装置であって、
前記第1又は第2メモリセルユニットに、
一辺で接続する前記アドレス線で特定されたメモリセルに記憶される値の論理演算を、前記一辺と反対側で接続するデータ線に出力して、論理回路として動作する処理、
一辺で接続するある前記アドレス線で特定されたメモリセルに記憶される値を、前記一辺と反対側で接続するデータ線に出力して、接続回路として動作する処理、を実行させることを特徴とするプログラム。
27.前記メモリセルユニットは、マルチルックアップテーブルである、項目26に記載のプログラム。
28.第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、
前記第1又は第2メモリセルユニットに、
第1複数データ線及び第2複数データ線の一部を、前記一辺へ出力する処理、
前記第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する処理、を実行させる、項目26又は27に記載のプログラム。
29.前記第1メモリセルユニットは、前記一辺からのアドレス入力に対して、前記一辺へデータを出力する第1真理値表データと、前記他辺へデータを出力する第2真理値表データを記憶し、且つ、
前記第2メモリセルユニットは、前記他辺からのアドレス入力に対して、前記一辺へデータを出力する第3真理値表データと、前記他辺へデータを出力する第4真理値表データを記憶し、
前記第1又は第2メモリセルユニットに、
前記第1〜第4真理値表データに従って、前記データの出力方向を変える処理を実行させる、項目26に記載のプログラム。
30.前記第1メモリセルユニットは、前記一辺からの第1複数アドレス線により特定されて、前記第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、
前記第2メモリセルユニットは、前記他辺からの第2複数アドレス線により特定されて、前記第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、
前記第1又は第2メモリセルユニットに、
前記論理部は、第1複数データ線の一部及び第3複数データ線を、前記一辺へ出力するとともに、前記第1複数データ線の他の一部を、他辺へ出力する処理を実行させる、項目29に記載のプログラム。
31.前記第1メモリセルユニット及び第2メモリセルユニットの何れかのデータ線の一部は、前記第2の複数アドレス線に接続し、
前記第1メモリセルユニット及び第2メモリセルユニットの何れかに、前記第2の複数アドレス線に出力して、前記複数の真理値表データを特定する処理を実行させる、項目26〜30の何れか1項に記載のプログラム。
32.前記論理部は、
データ入力線と、
データ出力線と、
再構成可能論理マルチプレクサと、を備え、
前記メモリセルユニット
前記データ入力線および前記データ出力線により近接する前記論理部に接続し、
前記再構成可能論理マルチプレクサは、前記真理値表データに応答して選択的に前記データ入力線からのデータ入力と、前記データ出力線への前記データ出力とを結合し、
前記真理値表データに応答して前記データ入力に関して論理演算したデータを、前記データ出力線へデータ出力する処理を実行させる、項目26〜31の何れか1項に記載のプログラム。
33.項目26〜32の何れか1項に示すプログラムを格納する記憶媒体。
【発明の効果】
【0011】
本実施形態に係る半導体装置は、隣接する論理部に対して複数ビットのデータ伝送を行うとともに、論理部に含まれるメモリセルユニットへの入力アドレス数を少なくすることで、必要なメモリセルを少なくすることができる。また、大容量メモリを活用し余剰アドレスをページ切替制御にして制御可能とした再構成可能な半導体装置が提供できる。
【発明を実施するための形態】
【0013】
多方向型MLUTと異なり、双方向型MLUTは、入出力を行う辺が2つに制限され、隣接する他のMLUTと、複数ビットの入出力を行うので、ビット分割により使用するMLUT数を少なくできる。
【0014】
MLUTはメモリセルユニットで構成されるが、アドレス線と同じ数のデータ線を必要とするため、メモリセルユニットは、アドレス線の数の2乗×データ線の数のメモリセルが必要になる。したがって、アドレス線の数を減らすことで、メモリセルの数は劇的に減らすことが可能である。本実施形態に係るMLUT(Multi Look−Up−Table)は、従前のMLUTと胡遁なるメモリセルユニットの構成を有する。
【0015】
本実施形態に係る半導体装置は、隣接する論理部に対して複数ビットのデータ処理を行うとともに、論理部に含まれるメモリセルユニットへの入力アドレス数を少なくすることで、必要なメモリセルを少なくすることを目的とする。
【0016】
以下、図面を参照して、[1]MRLD、[2]多方向型MLUT、[3]双方向型MLUT、[4]2メモリセルユニット型MLUT、[5]FPGAとの比較例、[6]大容量メモリの使用例、[7]マルチプレクサを用いるMLUT、[8]MPLDの論理又は接続動作、[9]真理値表データの生成方法について順に説明する。
【0017】
[1]MRLD
図1は、本実施形態に係る半導体装置の全体構成の一例を示す図である。以下、当該再構成可能な半導体装置をMRLD(Memory based Reconfigurable Logic Device)(登録商標)と呼ぶ。MRLDは、FPGAとほぼ同等の機能を備えているデバイスであるが、その構造が異なる。FPGAはLUTとスイッチブロック、コネクションブロックなどによって構成され、論理資源と配線資源の割合は固定である。これに対し、MRLDは、MLUT呼ばれる論理素子、配線素子の双方として利用可能な素子を並べた構成となっている。この構成により、全体の面積における論理領域の割合を高めることができる。
【0018】
MRLDは、「MPLD」(登録商標)と同様に、各MLUT間が、配線要素を介在せずに直接接続する点で共通するが、メモリIPとして供給される同期SRAMの機能を有効に活用する点において、区別される。
【0019】
図1に示す20は、再構成可能な半導体装置としてのMRLDである。MRLD20は、論理部としてのMLUTを複数個、アレイ状に配置したMLUTアレイ60、MLUTのメモリ読出し動作、書込み動作を特定するデコーダ12、及び、入出力部14を有する。
【0020】
MLUT30は、メモリで構成される。メモリの記憶素子には、真理値表とみなされるデータがそれぞれ記憶されることで、MLUT30は、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。
【0021】
MRLD20の論理動作では、実線で示される論理用アドレスLA、及び論理用データLDの信号を使用する。論理用アドレスLAは、論理回路の入力信号として使用される。そして、論理用データLDは、論理回路の出力信号として使用される。MLUT30の論理用アドレスLAは、隣接するMLUTの論理動作用データLDのデータ線と接続している。
【0022】
MRLD20の論理動作により実現される論理は、MLUT30に記憶される真理値表データにより実現される。いくつかのMLUT30は、AND回路、加算器などの組み合わせ回路としての論理要素として動作する。他のMLUTは、組み合わせ回路を実現するMLUT30間を接続する接続要素として動作する。MLUT20が、論理要素、及び接続要素を実現するための真理値表データの書き換えは、メモリへの書き込み動作によりなされる。
【0023】
MRLD20の書き込み動作は、書込用アドレスAD、及び書込用データWDによりなされ、読出し動作は、書込用アドレスAD、及び読出用データRDによりなされる。
【0024】
書込用アドレスADは、MLUT30内のメモリセルを特定するアドレスである。書込用アドレスADは、m本の信号線で、2のm乗の数nのメモリセルを特定する。書込用アドレスADは、メモリの読出し動作、書き込み動作、両方の場合で使用され、m本の信号線を介して、デコーダ12でデコードされて、対象となるメモリセルを選択する。なお本実施形態においては、後述するが、論理用動作アドレスLAのデコードは、MLUT30内のデコーダにより行う。
【0025】
デコーダ12は、リード・イネーブル信号re、ライト・イネーブル信号we等の制御信号に従って、書込用アドレスADをデコードし、デコードアドレスnをMLUT30に対して出力する。デコードアドレスnは、MLUT30内のメモリセルを特定するアドレスとして使用される。
【0026】
入出力部14は、ライト・イネーブル信号weに従って、書込用データWDを書込み、リード・イネーブル信号reに従って、読出用データRDを出力する。
【0027】
図2は、MLUTアレイの一例を示す図である。なお、
図2では、MLUT30間を繋ぐ、アドレス線とデータ線の接続は明示しておらず、後述する
図3等を用いてアドレス線とデータ線は説明する。MLUTアレイ30は、図示されるように、MLUT30をアレイ状に配置したものである。各MLUTは、書込用アドレスAD、ライト・イネーブル信号we、リード・イネーブル信号re、書込用データWD、および読出用データRD用の各信号線に接続する。
【0028】
[2]多方向型MLUT
図3は、MLUT同士の接続が1つのアドレス又はデータ線で接続される構成例を示す図である。
図3に示されるMRLD20は、MLUT同士の接続が1つのアドレス又はデータ線で接続するように構成されるMLUT30a〜30fが示される。
【0029】
なお、AD対とは、上記のように、アドレス線とデータ線のセットの定義である。以下、図面において、例えば、
図3に示すように、双方向の矢印で示す場合、このAD対を示し、後述の
図12のように一方向の矢印を示す場合、アドレス線およびデータ線の何れかを示す。
【0030】
図4は、論理コーンの一例である。論理コーンを用いて、多方向型MLUTの適用が困難なケースを説明する。論理コーンとは、組合せ論理回路の一つの出力に影響を与える全ての入力及び論理回路素子によって定義される集合(回路群)を言う。
図4に示される論理コーンには、図示しないが、同一クロックで動く複数のFF(フリップフロップ)があり、FFの出力とFFのD入力の間を、組合せ論理回路が繋いでいる。C言語合成では演算において、変数をFF表現して入出力に配置して回路データを、FF間に生成する。入力端子列1010にあるクロックがFFに入ると、全FFが値を更新して、FFの値が更新されたら全組み合わせ回路が動作し、次のクロックが来るまでの間に、影響範囲が下段の回路に広がり、出力端子列1020にあるFFの入力が確定する。このようにして、1つのFF出力に影響を与える全ての入力及び論理回路素子によって定義される集合である論理コーン1000が形成される。
図4に示すMLUT段数については、
図7を用いて後述する。
【0031】
[2.1] 多方向型MLUTの問題 接続使用のMLUTの増加
多方向型MLUTでは、1つのMLUTが所望の論理コーンを構成可能である場合、接続要素として使用されるMLUTが減り、結果としてMLUT使用数が減る。しかしながら、複数のMLUTに論理コーンが渡る場合、MLUT間のデータ伝送幅が1ビットであるので、MLUT同士の接続において、データの行き分れが生じて、接続要素として使用されるメモリ領域が増える。このように、所望の論理コーンを構成するために、複数のMLUTが必要になり、各MLUTに、論理回路が分割して構成される場合を、「MLUT分割(「クラスタリング」ともいう)」と呼ぶ。また、C言語等の高位言語ではビット数は複数ビットになる。C言語等でコーディングした機能を、「多方向型MLUT」で実現する場合、複数のビットをビット分割して演算し、演算後のデータを合成するなどのデータの流れが生じるので、接続要素として使用するMLUTが増えて、MLUT使用数は増えてしまう。
【0032】
MLUTが接続するデータ線及びアドレス線を増やして、それに伴いメモリセルユニットを大型化すると、MLUT間のデータ伝送がなくなり、接続要素として使用するMLUTは減る。しかしながら、このようにデータ線及びアドレス線を増加すると、隣接するMLUTの接続数も増え、各々のMLUTが、様々な方向に入出力が増えるので、構成が困難になる。
【0033】
[2.2] 多方向型MLUTの問題 接続使用のMLUTの増加
FPGAの論理合成手法として、C言語から機能を構築する高位合成手法が発表されており、実用化されている。
図5は、FPGAにおけるC言語による論理合成の一例を示す図である。910は、C言語記述の例を示す。920は、FPGAにおけるC言語高位合成の例である。930は、ASICにおけるC言語高位合成の例である。C言語高位合成920では、C言語の変数をレジスタとしてその間の演算を組合せ回路で表現して機能を構築する。この例はFPGAに実装する例であるが、FPGAの論理表現に併せて論理を分解して動作させる。C言語高位合成930では、FPGAでなくASICで実装した例であるが、ASICでは論理表現が自由なので一括で処理してレジスタで変数データを処理する。このように、C言語の処理はデータ列を処理してレジスタに蓄え次の処理(データパス処理)をするのが一般的である。
【0034】
図5に示したように、C言語はデータの流れを記述してそれを制御して動作を構築するので一方向の流れになる。そして、そのデータ・ビットは8ビットや16ビットなどのデータ列になっている。C言語合成ツールではこのデータ列長を選択できるが、少なくとも3ビット以上のデータ列で記述するのが一般的である。
【0035】
[3]双方向型MLUT
図6は、MLUT間の接続が複数のアドレス又はデータ線で接続される構成例を示す図である。
図6に示すMLUT30A〜30Eは、データの出力端にFFを有しているが、このFFの構成については、
図15Aを用いて後述する。MLUT30Aは、隣接する他のMLUT30B〜30Eと2本のアドレス線又はアドレス線で接続されており、つまり、MLUT同士の接続が複数のアドレス又はデータ線で接続するように構成される。このような構成は、隣接するMLUTが複数のAD対で接続することになるので、隣接するMLUTに送信するデータは、複数ビット(
図6の例では、4ビット)となる。さらに、アドレス線及びデータ線は、多方向ではなく、双方向(
図6において、右側方向及び左側方向)での接続に限定されている。また、双方向とするものの、隣接するMLUTを2つに限定せず、それ以上として、構成可能性を上げるために、入力方向及び出力方向に、それぞれ2つのMLUTと接続可能となっている(「交互配置」とも言う)。例えば、MLUT30Aは、右側方向でMLUT30B及び30Cと、左側方向でMLUT30D及び30Eと接続している。このようなMLUTを「双方向型MLUT」と呼ぶ。
【0036】
本実施形態に係るMLUTは、矩形状であり、一辺から複数のアドレス線又は複数のデータ線で他の論理部と接続するとともに、一辺と反対側の他辺から複数のアドレス線又は複数のデータ線で他のMLUTと接続する、
【0037】
多方向型MLUTと異なり、双方向型MLUTは、データ線及びアドレス線複数本とすることで、マルチビットのデータ処理が可能になり、さらに、入力及び出力方向のデータの流れの方向が限定できるので、論理ライブラリの作成も容易になる。
【0038】
つまり、隣接するMLUTに対して複数ビットのデータ処理が可能になるので、複数ビット演算を行うプログラム(例えば、上記のC言語)から構成させるデータ処理において、使用するMLUTの数を減らすことができる。
【0039】
[3.1] 必要な双方向型MLUTの数の論理段数
以下では、論理コーンに対して必要になる双方向型MLUTの決定方法について、n値という定義を用いて説明する。
図7は、n値を説明する図であり、
図6で説明したMLUT30A及び30Cを用いてn値を説明する。隣接するMLUT30A及び30Cに向かい合う1辺から出るアドレス線又はデータ線の数1030を「n値」と定義する。
図3の多方向型MLUTでは、隣接するMLUTの分だけ辺があるので、1辺から出るアドレス線又はデータ線は「1」であり、n値は「1」である。
図6及び
図7の4ビット長型MLUTは、矩形であるが、複数ビット伝送を要件としているので、1辺からでるアドレス線又はデータ線は「4」であり、n値は「4」である。双方向型MLUTでは、隣接するMLUTとの関係で、データ伝送量がn値の半分となり、且つ、信号パスが1段ずれるので、最長信号パスを実現するには信号パスを(n値/2)で割った段数だけ必要である。MLUT論理段数とは、所望の回路を実現するために横に配置する必要なMLUT段数の数を示す。MLUT論理段数は、以下の式で示される。
式1: MLUT論理段数 = m/(n値/2)
なお、ここでmは、信号パス距離であり、論理コーンにする入力信号線を示す。
図7に示す例では、n値は「4」であるが、隣接するMLUTは、一方向に2つあるので、(n値/4)は「2」となる。C言語の論理演算が、8ビットで演算されており、論理コーンの入力データ線が8本であった場合、MLUT論理段数は、4となる。つまり、8ビット演算をMLUTで行う場合、4つのMLUTが必要になる。
【0040】
[3.2] 双方向型MLUTの分割例
図8〜
図10は、MLUT分割の例を示す図である。
図8は、右方向へのデータ接続を示すMLUTの図である。
図8の1040は、8ビットの入力に対して必要なMLUT論理段数を示す。
図8では、MLUTは5つ必要である。
図8に示されるように、論理コーンを構成する組み合わせ回路を、MLUT論理段数で分割することにより、MLUT分割が出来る。MLUT分割された組み合わせ回路に対して、入力の全ての組み合わせ(n値の場合は2
nになる)に対して、論理演算を実施し、その真理値表データを求めることができる。
【0041】
図9及び
図10は、双方向型MLUTによるデータの折り返し接続を示す図である。MLUTは双方向に接続されているため、複数のMLUTを使用することでデータを、右方向から、左方向へ戻す折り返しデータ接続が可能である。点線で示す例は、折り返されたデータ接続を示す。なお、右方向の流れは図示していないが、
図8の1040で示す右方向の流れを維持したまま、折り返しにより、左方向のデータの流れがある。
図9では、MLUT30B及び30Cが、データの折り返し接続を行う例を示し、
図10では、MLUT30Aが論理演算とデータの折り返し接続を行う例を示している。
【0042】
図10に示すように、双方向型MLUTにおいて、MLUT端に信号を帰還する真理値表データを書き込ませれば、折り返しが実施できる。また、この例では、往路方向の真理値表データに加えて、復路方向の真理値表データは別に設ける必要があるので、1つのMLUTは、往路用の真理値表データに加えて、復路用の真理値表データを記憶する必要があるので、MLUT数を下げることができる。従前、双方向型のMLUTは、
図9及び
図10に示すように、折り返し処理ができる構成であった。しかし、本実施形態に係るMLUTは、1つのMLUTで、それぞれが一方向のデータ流れを実現する2つの真理値表データを記憶するように構成される点で、両者は、明確に区別される。
【0043】
[3.3] 双方向型MLUTにおけるビット分割
また、C言語からの直接真理値表データを求める配置配線手法について述べる。C言語でのint演算は、例えば、16ビットである。そのため、16ビットに相当するレジスタを生成して、そのレジスタに保持されるビット値の演算により組み合わせ回路を実現する。16ビットのn値を持つMLUTがあればその結果を真理値表データにして動作を構成できるが、n値を16とするMLUTは、16本のアドレスを用いて、2の16乗のメモリセルが必要になるので、MLUTのような構成ユニットとして使用する場合、未使用メモリ領域が多くなり現実的でない。そこで、ビットを分割してMLUTにあった演算手法に記述変換をする。n値が4のMLUTであれば、16ビットを4分割したC言語記述をする。このようなことはC言語記述では一般的である。例えば、32ビット演算はflotを使い記述するが、intを使い記述することはある。
【0044】
図11は、双方向型MLUTにおけるFFの使用例を示す図である。4ビットに分割した記述をC言語合成に掛ければ、1040A及び1040Bに示すような、MLUT論理段数が決まる。60Aは、論理回路において、MLUTの各FFを使用する例であり、60Bは、論理回路において、FFを禁止する例である。60Bの各MLUTにFFがあることはクロック遅延を起こすので、中間のMLUTのFFを禁止し20Bに示すように、FFの使用を停止することにより動作を高速化できる。
【0045】
[4]2メモリセルユニット型MLUT
以下説明するMLUTは、複数のアドレス線と、複数のデータ線と、前記複数のアドレス線の一部から入力されるアドレスをデコードする第1アドレスデコーダと、前記複数のアドレス線の他の一部から入力されるアドレスをデコードする第2アドレスデコーダと、前記第1アドレスデコーダのデコード線と、前記データ線との交差する位置メモリセルを有する第1メモリセルユニットと、前記第2アドレスデコーダのデコード線と、前記データ線との交差する位置にメモリセルを有する第2メモリセルユニットと、を備える。
【0046】
MLUTは、アドレス線から入力されるアドレスで特定されるメモリセルからデータを出力するが、そのデータは、所望の論理要素及び/又は接続要素を実現する真理値表データである。以下、MLUTの構成と、そこに記憶される真理値表データについて説明するが、真理値表データによる論理要素及び/又は接続要素という「情報処理」が、MLUTというハードウエア資源を用いて実現される、例えば、真理値表データを、アドレスデコーダで読み出すことで実現される。また、半導体装置の制御方法は、アドレスデコーダ等のMLUTを構成するハードウェア、及び、真理値表データの読み出しにより実現される。
【0047】
[4.1]2つのメモリセルユニット
図12は、本実施形態に係るMLUTの一例を示す図である。
図12に示すMLUT30は、メモリセルユニット31A、31Bを有する。メモリセルユニットは、例えば、SRAM(Static Random Access Memory)である。
図12に示されるように、メモリセルユニット31Aは、一辺からの第1複数アドレス線により特定されて、第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、メモリセルユニット31Bは、他辺からの第2複数アドレス線により特定されて、第2複数アドレス線の2倍の数の第2複数データ線に出力する複数のメモリセルを有し、MLUT30は、第1複数データ線及び第2複数データ線の一部を、一辺へ出力するとともに、第1複数データ線及び第2複数データ線の他の一部を、他辺へ出力する。
【0048】
なお、
図10を用いて説明したように、各メモリセルユニットは、一方向毎に真理値表データをメモリセルに記憶する。そのため、メモリセルユニット31A及び31Bの各々には、右から左方向用の真理値表データ、及び、左から右方向用の真理値表データを記憶する。すなわち、MLUTは、それぞれが特定のデータ出力方向を規定する4つの真理値表データを記憶する。
【0049】
各メモリセルユニットのデータ数を、アドレス数より増やすとともに、各メモリセルユニットからデータ出力の方向を双方向にすることで、必要なメモリセルの数を少なくし、且つ、双方向へのデータ出力を可能にすることができる。なお、
図12は、概略図であり、メモリセルユニットの周辺回路であるデコーダ等は、示しておらず、
図15Aを用いて後述する。
【0050】
メモリセルユニット31A、31Bの各々は、あるアドレス線で特定されたメモリセルに記憶される値の論理演算を、データ線に出力するための真理値表データを記憶して、論理回路として動作し、及び/又は、あるアドレス線で特定されたメモリセルに記憶される値を、他のMLUTのアドレス線に接続するデータ線に出力するための真理値表データを記憶して、接続回路として動作するように構成される。真理値表データで所望の機能を実現するMLUTについては、[7]MRLDの論理又は接続動作で説明する。
【0051】
従前、MLUTとして用いるメモリセルユニットは、1つのメモリセルユニットから構成され、また、MLUTとして用いるメモリセルユニットはアドレス線の幅とデータ線の幅が等しい。したがって、
図12に示す8本のアドレス線を有するメモリセルユニットは、デコードされたアドレス線が、2の8乗本(256本)あり、ビット線が8本あるので、2,046(256×8)のメモリセルを必要としていた。
図12に示すMLUTは、メモリ分割しており、デコードされたアドレス線の数が、16本で済む。そのため、使用するメモリセルを、256(16×8×2)に節約できる。
【0052】
つまり、MLUTに含まれるメモリセルユニットへの入力アドレス数を少なくすることで、必要な大幅にメモリセルを少なくすることができる。なお、これにより、従前はできた一部の論理演算ができなくなるが、これに関しては、
図13を用いて後述する。
【0053】
図12に示すように、AD対は、左右2方向に入出力するので、メモリセルユニット31は、入力するアドレス信号A0〜A3の出力データD0〜D7を、入力アドレス側への出力D0〜D3、及び、他のメモリセルユニット側への出力D4〜D7に転送する。なお、信号入力方向に、出力を戻す接続構成を、以下で「帰還」と言う。メモリセルユニット31の出力D0〜D3用のメモリセルは、帰還方向の真理値表データに限定され、出力データD0〜D7用のメモリセルは、右から左方向の真理値表データに限定される。メモリセルユニット32も同様に、入力するアドレス信号A4〜A7の出力データD0〜D7を、入力アドレス側への出力D4〜D7、及び、他のメモリセルユニット側への出力D0〜D3に転送する。
【0054】
両メモリセルユニットの出力信号の接続部分は、ワイヤードORを構成する、又は、論理和(OR)回路で接続されているので所定のデータを転送できる。
【0055】
このように、本実施形態に係るMLUTは、内部に2つのメモリセルユニットを有し、MLUTに対するアドレス信号を、アドレス信号の入力方向に従って、2つのメモリセルユニットのアドレスデコーダ(
図15Aを用いて後述)に入力する。例えば、一つのアドレスデコーダは、複数のアドレス線の一部から入力されるアドレスをデコードし、他方のアドレスデコーダは、複数のアドレス線の他の一部から入力されるアドレスをデコードし、デコード信号は、各アドレスデコーダと接続するメモリセルを特定する。
【0056】
次に、
図12に示すMLUTのアドレス線と、データ線の関係について説明する。MLUT30は、双方向型MLUTであるが、原則として、往路方向(左から右への方向)では、アドレスA0〜A3を使い、復路方向(右から左への方向)では、アドレスA4〜A7を使う。往路方向に使う真理値表データと、復路方向に使う真理値表データはそれぞれ用意される。
【0057】
なお、帰還処理を行わない場合、真理値表データは、メモリセルユニット31AのD0〜D3およびメモリセルユニット31BのD4〜D7のデータを「0」とする。また、逆に帰還処理をする場合は、メモリセルユニット31AのD4〜D7およびメモリセルユニットB31のD0〜D3を「0」にする。
【0058】
ある方向から入力される信号に対して、入力側に帰還するか、出力側に出力することが可能であるが、入力方向がそれぞれ異なる2つの信号に対して、論理演算をすることができない。この状況を、
図13に示す。
【0059】
図13は、本実施形態に係るMLUTで実現される回路構成の一例である。MLUT30Aは、1つのメモリセルユニットで構成されるMLUTであり、MLUT30B、30Cは、本実施形態に係る2つのメモリセルユニットで構成されるMLUTである。MLUT30Aは、左辺側からのAアドレス信号と、右辺側からのBアドレス信号をAND回路でAND演算して、Cデータ信号を出力する。一方、MLUT30A、30Bは、入力方向がそれぞれ異なる2つの信号に対して、論理演算をすることができないので、信号入力方向に、信号を出力する接続回路を構成できない。これにより、本実施形態に係るMLUTは、MLUTを多く使う構成が生じるが、データ処理となるC言語合成では使われないので、帰還信号に対して論理演算できないことによる弊害が少ない。また、必要な場合は図にあるように本回路を構成できるので、回路的に制限されるものではない。
【0060】
図9及び
図10では、データの折り返し処理を示した。複数ビット処理によるビット分割をすると、分割されたビットのデータ処理が長くなる。そのため、所望の演算を行おうとする場合、MRLDが横長になる。そこで、右方向のデータ流れである往路に加えて、右方向のデータ流れである往路へのデータを折り返して、復路での処理を実現することで、長いデータ処理の実行が可能になる。上述のように、MLUT30は、方向性を持つが、メモリセルユニット31Aは、帰還の接続回路となり得る。したがって、末端配置されたMLUT30を帰還回路として使用することで、往路方向で論理演算した後に、末端部で、折り返して、復路方向で論理演算可能である。
【0061】
図14は、本実施形態に係るMLUTの別な例を示す図である。
図14に示されるメモリセルユニット31Aは、一辺からの第1複数アドレス線により特定されて、第1複数アドレス線の2倍の数の第1複数データ線に出力する複数のメモリセルを有し、メモリセルユニット31Bは、他辺からの第2複数アドレス線により特定されて、第2複数アドレス線の同じ数の第3複数データ線に出力する複数のメモリセルを有し、MLUT30は、第1複数データ線の一部及び第3複数データ線を、一辺へ出力するとともに、第1複数データ線の他の一部を、他辺へ出力する。何れかのメモリセルユニットの帰還方向の出力を制限することで、さらに、必要なメモリセルの数を減らすことができる。
図12に示すように、右辺に配置されたメモリセルユニット31Cは、帰還用の出力D4〜D7がなく、またそのためのメモリセルも有さない。往路側は、メモリセルユニット31Aで演算を行い、復路では、帰還動作を制限して、論理演算することで、必要なメモリセルをさらに小さくすることができる。
【0062】
[4.2]メモリセルユニット毎のアドレスデコーダ
図15Aは、本実施形態に係るMLUTの回路例を示す図である。
図15Aに示すMLUT30は、メモリセルユニット31、31B、アドレスデコーダ9A、9B、アドレスセレクタ11A、11B、I/O(入出力)バッファ12A、12B、及び、データセレクタ13A、13Bを有する。MLUT30は、メモリセルユニット31、31Bは、それぞれ、アドレスデコーダ、アドレスセレクタ、及びI/Oバッファ、及び、データセレクタを有する。
【0063】
メモリセルユニット31A、31Bはそれぞれ、左方向および右方向(折り返し方向)へ接続するための真理値表データを記憶する。アドレスデコーダ9Aは、左側から入力するアドレスA0〜A3をデコードする。アドレスデコーダ9Bは、右側から入力するアドレスA4〜A7をデコードする。本MLUTでは非同期/同期SRAM選択回路を持たせるために、アドレス・デコーダにはATD(Address Transition Detector)回路を伴わせ内部クロックを生成させている。
【0064】
アドレスセレクタ11A、11Bは、書込用アドレスAD及び論理アドレスA0〜A3、A4〜A7を選択する。この例では、書込み動作と、論理動作の何れかのみを行うシングルポートメモリセル(
図15B)である。デュアルポートメモリを使用する場合、メモリセルへの読出し及び書込みが同時にできるので、アドレスセレクタ11A、11Bは不要となる。
【0065】
I/Oバッファ12A、12Bは、外部クロック(OCrock)と内部クロック(ICrock)の何れかに同期して、メモリセルユニットのデータ線からデータを読み出すことで、FFの機能を提供している。なお、外部クロック(OCrock)と内部クロック(ICrock)は、例えば、内部クロックの周期を短周期とすることで、内部クロック同期時に動作を早めるなどの作用が得られる。外部クロックと内部クロックの切り替えは、メモリセルユニットにクロック制御用のデータを記憶する1ビット列を設けて、真理値表データにより、そのビット列を外部から書き換え可能としている。なお、I/Oバッファ12A、12Bは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。
【0066】
データセレクタ13A、13Bは、論理動作時の出力データ、又は、書込みデータWDを切り替える選択回路である。
【0067】
尚、この構造を同期SRAM/非同期SRAM重ね合わせ回路で実現しても良い。そのことにより、ファンダリィが所有しているメモリIPが使えるので、設計費の大幅削減が可能となる。但し、その場合は2倍のメモリ容量になる。
【0068】
このように、上記MLUTを有するMRLDは、隣接するMLUTに対して複数ビットのデータ処理を行うとともに、複数のメモリセルユニットで論理部を構成する。メモリセルユニットは、アドレス線の二乗に比例して増えるので、データ線の数は同じであっても、各メモリセルユニットのアドレス数を少なくすれば、トータルに必要なメモリセルの数を少なくすることができる。
【0069】
また、あるメモリセルユニットは、第1の方向からのアドレス入力に対して、第1の方向に、又は、第1の方向と反対の第2の方向にデータを出力するデータ線と接続し、及び、他のメモリセルユニットは、第2の方向からのアドレス入力に対して、第2の方向に、又は、第1の方向にデータを出力するデータ線と接続し、2つのメモリセルユニットは、真理値表データに従って、データの出力方向を変える。このように、データ出力の方向を制限することで、論理部の再構成性は制限されるものの、必要なメモリセルの数を少なくすることができる。
【0070】
[4.3]メモリセル
図15Bは、シングルポートのメモリセルの一例を示す図である。メモリセル(「記憶素子」とも言う)は、デコード信号の信号線であるワード線と、ビット線の交差点に配置される。
図15Bに示される記憶素子40では、pMOS(Metal Oxide Semiconductor)トランジスタ161、162、及び、nMOSトランジスタ163、164、165、166を備える。pMOSトランジスタ161のソースと、pMOSトランジスタ162のソースとは、VDD(電源電圧端)に接続する。nMOSトランジスタ163のドレーンと、nMOSトランジスタ164のドレーンは、VSS(接地電圧端)に接続される。
【0071】
nMOSトランジスタ165のドレーンは、ビット線bに接続される。nMOSトランジスタ165のゲートは、ワード線WLに接続される。nMOSトランジスタ166のドレーンは、ビット線/bに接続される。nMOSトランジスタ166のゲートは、ワード線WLに接続される。
【0072】
上記構成により、書き込み動作では、記憶素子40は、ワード線WLの信号レベル「H(High)」により、ビット線b及びビット線/bから伝えられた信号レベルを、pMOSトランジスタ161、162、nMOSトランジスタ163、164に保持する。読み出し動作では、記憶素子40は、ワード線WLの信号レベル「H」により、pMOSトランジスタ161、162、nMOSトランジスタ163、164に保持された信号レベルを、ビット線b、及び、ビット線/bに伝える。
【0073】
[5]FPGAとの比較例
図16は、FPGAの構成について説明する図である。FPGAは、論理LUTを持ちそれらを配線とスイッチで接続して論理回路を構成するデバイスである。940は、アイランドスタイル型FPGAである。FPGA940は、論理セルと、論理セル945を囲い込むスイッチマトリックス(SW)から構成される。960は、論理セル945とスイッチマトリックスの詳細であり、950はスイッチマトリックスの詳細である。論理セル945は、CLB(Configurable Logic Block)から構成される。CLBは、一般的に、4入力1出力のLUT(最終段にFFを活性化できるようにしてあり順序回路も構成できる)を2段持ち、且つ、それが2ページ有した4LUT構造である。それらを外部のCLBに有効に接続できる構造になっている。LUTを2段持つことから入力は8であり、それらが有効に接続されるために多くのスイッチを有している。そのスイッチは6MOSのトランスファ・ゲートからなり、それらのON/OFFはSRAMメモリ・セルの記憶ノードに接続され、SRAM情報により制御されている。
【0074】
なお、CLBは、4入力1出力LUTを2個、これを2段、2スライス構造としたものである。つまり、1CLBでの必要メモリ容量は、以下の式により得られる。
LUT:4アドレス(16bit)
8LUT×16bit = 128bit
スイッチ・アレイMOSスイッチ数
8×8×3ブロック+8×2×1ブロック =208個
スイッチ当たりのMOSスイッチ数:6MOSスイッチ
208個×6 MOSスイッチ =1,248bit
1CLBでの必要メモリ容量 =1,376bit(1.4Kbit)
Vertex XC2V3000の必要メモリ容量:3,584CLB×1,376bit
= 4,931,584b (4.9Mb)
【0075】
上述したように、メモリセルユニット1つからなるMLUTは、アドレスが8本ありデータが8本であるので2Kビットのメモリセルが必要になる。この従前のMLUTをCLB相当にするためには10個連結しなければならないので20Kビットのメモリ容量が必要である。
【0076】
図17は、CLBに相当するMLUTブロックの構成例を示す図である。上記のように、CLBは、入力が8つあり、それらの配線が再構成可能構成であるため、MLUTブロックも、8入力必要である。また、CLBは、左右上下に8本の入出力があるので、
図17に示すように、MLUTは10個必要になる。
図17に示すMLUTブロック50は、MLUTアレイ60の一部を取り出したものである。
【0077】
図示されるように、MLUTブロック50は、8入力及び8出力を有する。10個のMLUTを使用する場合、
図12に示すMLUTは、256(16×8×2)ビットであり、
図14に示すMLUTの場合、192(16×8+16×4)ビットとなる。よって、本実施形態に係るMLUTでは、CLB相当は2.5K(256×10)ビット、又は、1.9K(192×10)ビットが必要となり、FPGAのCLB:1.4Kビットにかなり近いものが構成できる。このことは、MRLDは、FPGAのような特殊回路を要することなく、汎用のメモリセルユニットで再構成可能な半導体装置を実現するとともに、FPGAと同じ論理合成効率を有するので、安価な製造コストと、高い論理合成効率の両者を実現できる。
【0078】
上記のように、本実施形態に係るMRLDは、FPGAのCLB相当に近いメモリ容量で構成でき、FPGAに比する論理構成効率を上げることができる。制限された左辺の自辺に戻す信号転送は、2個のMLUTを使うことにより実現できるので、大きな制限にはならない。元々、FPGAのCLBも4入力1出力の非対称の構造であり、このことでFPGAに劣るものとはならない。そして、MLUTは交互に接続されているので、後述のC言語搭載性が良くなり、C言語直裁型の再構成デバイスとなり得る。
【0079】
MLUTのメモリセルユニットとして使用されるSRAMはSoC(System−on−a−chip)では良く使われるデバイスである。そのSRAMを使って再構成デバイスを構成できることは、有効的なSoC搭載再構成デバイスになり得る。そして、SRAMは数層の配線層で構成されるので安価な再構成デバイスが出来る。
【0080】
[6]大容量メモリの使用例
市販のメモリデバイスは、プロセッサの処理量の増加とともに大容量化し、記憶容量あたりのコストが低下している。そのため、大容量のメモリをMLUTとして用いるほうが、MRLDコストは低下できる。
【0081】
しかし、市販のメモリデバイスはアドレス本数とデータ本数が違うことからMRLDのアドレス・データを構成すると一般にアドレスが余る。さらに、一般のメモリはシステムの要請からデータは8,16本になることが多く、アドレスはシステムのメモリ空間を表現するため20本以上のアドレスとなる。
【0082】
また、MLUTの入力アドレス数であるn値を増やすことにより、C言語のビット長に近いデータ処理も可能になり、CPUで処理するデータ処理を高速処理させるIPとして活用できる。以下では、大容量メモリを用いた場合の、MRLDの構成例を説明する。
【0083】
図18は、2メモリセルユニットからなるMLUTを横積みして構成されるMLUTを概略的に示す図である。
図18に示すMLUT30は、左方向からアドレスA0L〜A7Lの入力があり、右方向からアドレスA0R〜A7Rの入力があり、また、左方向にデータD0L〜D7Lの入力があり、右方向へデータD0R〜D7Rの入力がある。n値=8のMLUTは従来方式では1MビットとなりCLB相当が4Mビットと大規模化してしまう。それに対して本案では8K(256ワード×16ビット×MLUT2個)ビットで構成される。そのCLB相当も24K(8K×3)ビットで構成される。
【0084】
図19は、大容量メモリを用いたMLUTの一例を示す図である。
図19に示すMLUT30は、メモリセルユニット31A、31Bを有し、各メモリセルユニットは、16本のアドレス線と、16本のデータ線で構成されるので、64K×16ビットの大容量メモリである。メモリセルユニット31A、31Bの周辺には、アドレスセレクタ11A、11B、14A、14B、及び、データセレクタ13A、13Bがある。
【0085】
本実施例は、市販の大容量メモリでのMLUTの有効利用を図ったものである。
図19及び後述の
図22では、メモリセルユニット31A、31Bは、それぞれアドレスA0L〜A7L、A8〜A15、及び、アドレスアドレスA0R〜A7R、A8〜A15の入力を有する。
【0086】
なお、
図19及び後述の
図22は、概略図であり、メモリセルユニットの周辺回路であるデコーダ等は、示しておらず、デコーダは
図15Aで説明したデコーダ9A、9Bが、各メモリセルユニット毎に用意され、アドレスセレクタ11A、11Bと、メモリセルユニット31A、31Bの間に配置される。よって、デコーダは、アドレスセレクタ11A、11B、14A、14Bから出力される全てのアドレスをデコードしてもよい。
【0087】
行セレクタ32A、32Bは、論理動作用のアドレス線か、書込み用のアドレスかを切り替えるための選択回路である。メモリセルがシングルポートの場合、必要となる。メモリセルをマルチポートとする場合、行セレクタは不要である。
【0088】
アドレスセレクタ11A、11B、14A、14B、論理動作用のアドレス線か、書込み用のアドレスかを切り替えるための選択回路である。メモリセルがシングルポートの場合、必要となる。メモリセルをデュアルポートとする場合、行セレクタは不要である。データセレクタ13A、13Bは、出力データ、又は、書込みデータWDを切り替える選択回路である。
【0089】
大容量メモリでMLUTを構成するために、ページ切り替えを利用する。つまり、真理値表データの異なるページ(メモリ領域)を複数用意して、ページ切り替えして、論理状態を順次切り替える。
図19に示す例では、アドレスA0〜A7は1つのページを構成し、アドレスA8〜A15は別のページを特定する。つまり、アドレスA8〜A15で特定されるメモリセルには、アドレスA0〜A7で特定されるメモリセルとは異なる真理値表データが記憶される。
【0090】
論理動作はメモリの読み出しモードで行い、コンフィギュレーションは書き込み動作で行う。そのため、アドレスおよびデータではセレクタを使い書き込みアドレスADおよび書込みデータWDを切り替えている。この機構を持つことで、本デバイスはメモリとしても使える。また、マルチポート・メモリを使うことで、これらのセレクタを省くことも出来る。論理動作はメモリの読み出しモードで行い、コンフィギュレーションは書き込み動作で行う。そのため、アドレスおよびデータではセレクタを使い書き込みアドレスおよびデータを切り替えている。この機構を持つことで、本デバイスはメモリとしても使える。また、マルチポート・メモリを使うことで、このセレクタを省くことも出来る。
【0091】
このように、何れかのメモリセルユニットの帰還方向の出力を制限することで、さらに、必要なメモリセルの数を減らすことができる。
【0092】
図20は、
図19に示すMLUTの回路例を示す図である。
図20に示すMLUT30は、
図15Aに示すMLUT30と同様の構成を有するが、メモリセルユニット31A、31Bへの入力アドレスが、それぞれ、アドレスA0L〜A7L、A8〜A15、及び、アドレスA0R〜A7R、A8〜A15となる。そのため、メモリセルユニット31A、31Bは、2の16乗(65,536)ワード×8ビットの52Kの大容量となる。
【0093】
図21は、
図19に示すMLUTを用いたMRLDを説明する図である。
図21に示すように、あるMLUT30を外部システムからの制御により、アドレスによりページ(真理値表データ)を切り替えることができる。
【0094】
従来のMRLDでは、MRLDの状態機械は、真理値表データで定義することが必要があった。そのため、決められた条件に従って、あらかじめ決められた複数の状態を真理値表データで定義する真理値表データを設ける必要があった。MLUTで構成されるステート・マシンが制御回路になり、データ・パスとは違い論理回路まで生成して配置配線をしなければならなかった。
【0095】
図19に示すMLUT30は、ページの切替制御機能を持つことから、ステートマシンを真理値表で定義する必要がなくなる。例えば、for文は所定値がある条件になるまで、自ページのアドレスをデータに出力してページ切り替えを行わず、同じページで動作を処理する。ある条件を満たせば(例えば、i=0)、その際にページ切り替えのアドレスを、データ線に出力する。データ線は、他のメモリセルユニットにアドレス線として入力するので、当該他のメモリセルユニットのページ切り替えが可能になる。また、case文の場合は所定値の値により、飛び先番地をデータに出力してページ切り替えを行わせて動作変更させることが出来る。以上により、従来のMRLDは論理回路構成しか出来なかったものに対してC言語の動作合成も出来るようになり、C言語からMRLDのMLUTの真理値表データを生成させることが可能になり、FPGA以上の機能を持たせることができる。
【0096】
図22は、MLUT内部で状態機械を設ける例を示す図である。演算回路などのデータ・パス系は方向性があり、折り返し方式を説明した(
図8〜
図10)。
図14では、その折り返しの状況を見て分割非対称となるMLUTを説明した。
図14のMLUTは、片方のメモリセルユニットの容量を削減して、メモリ使用量を削減したが、
図22では削減せずその余ったデータを切り替え信号に利用する。このことにより、MLUT自体で演算を変える制御機能を持たせることができる。例えば、
図14のメモリセルユニット32Bは、右方向からの入力アドレスA4〜A7を、データD4〜D7として出力するメモリセルを有していない。
図22では、右方からの入力アドレスA0〜A7に対して、ページ切替判断する論理演算を行い、データD0〜D7を出力する。データD0〜D7は、アドレスA8〜A15用のアドレス信号線に接続しており、他のMLUTに対するページ切り替え信号として利用される。
【0097】
図23は、
図22に示すMLUTを用いたMRLDを説明する図である。
図23では左下のブロックを
図22のMLUT30Bとして、それ以外は
図19のMLUT30で構成している。
図22のMLUTではアドレス・データ対に所定の値が来たときに、所定のアドレスを出力させて全体をページ制御して動作を切り替える。このことにより、JUMPなどの制御ができる。
【0098】
MRLDは専用の小型のSRAMに関する半導体設計試作、製造を経なくても、従来の大容量のメモリデバイスを利用できる。MRLDをチップで構成する際、メモリIP(Intellectual Property)を使うが、従来のMLUTが求めている微小メモリ容量では、アドレスデコーダやセンスアンプの面積が大きくメモリ自体の構成比率は50%以下になる。このことは、MRLDのオーバヘッドにもなり、効率が悪い。大容量メモリになるとアドレス・デコーダやセンス・アンプに比率は下がり、メモリ使用効率が上がる。そのため、大容量メモリにあった本案はMRLDチップの場合有効になる。
【0099】
[7]再構成可能論理マルチプレクサを用いたMLUT
図24は、2方向配置のMLUTアレイの一例を説明する図である。
図24に示される矢印は、隣接する他のMLUTとつながるデータ入力線、又は、データ出力線である。
図24に示すMLUTアレイ300において、MLUT30は、隣接する他のMLUT30と2本のデータ入力線又はデータ出力線で接続されいる。つまり、MLUT同士の接続が複数のデータ入力線又はデータ出力線で接続するように構成される。また、隣接するMLUTは、構成可能性を上げるために、入力方向及び出力方向に、それぞれ2つのMLUTと接続する。この配置を、以下「交互配置」と言う。
【0100】
交互配置型MLUTは、データ線及びビット線を複数本とすることで、マルチビットのデータ処理が可能になり、さらに、入力及び出力方向のデータの流れの方向が限定できるので、論理ライブラリの作成も容易になる。
【0101】
各MLUT30は、多数の異なる論理関数を実行することが可能である。MLUT30は、メモリセルユニット40と、再構成可能論理マルチプレクサ50を有する。MLUT30によって実行される論理関数は、メモリセルユニット40内に格納された構成データによって決定される。MLUT30は、構成データ用の入力を有しており、且つ、再構成可能論理マルチプレクサ50への構成データ用の出力を有している。構成データは、MRLD20外側からメモリセルユニット40内へ、そのアドレス線及びデータ線を用いて、ロードされる。
【0102】
再構成可能論理マルチプレクサ50は、データ入力、データ出力、構成データを受取るためのコンフィギュレーション入力を有しており、且つそれに応答してデータ入力及び出力の結合状態を制御する。再構成可能論理マルチプレクサ50はさらに、構成データに応答してデータ入力に関して論理演算したデータを、データ出力線へデータ出力する。
【0103】
図25は、4方向配置のMLUTアレイの一例を説明する図である。
図25に示す方向配置では、FPGAと同様の配置である。このようにすることでFPGAに近い構成が取れ、FPGAツールで生成した論理構成された状態を使い、MRLDの構成データの作成が容易になる。例えば、図の左上及び中上、左下をスイッチ・ブロックとして、中下をLUTブロックとして、FPGAのCLB相当が表現でき、FPGAの構成された状態から真理値データが生成できる。
【0104】
図26Aは、2方向配置のMLUTの信号線の配置例を示す図である。
図26Aに示すように、左からのデータ入力は、InA0〜InA3であり、左へのデータ出力は、OutA0〜OutA3である。また、右からのデータ入力は、InB0〜InB3であり、左へのデータ出力は、OutB0〜OutB3である。
【0105】
図26Bは、2方向配置のMLUTの一例を示す図である。
図26Bに示すMLUTの信号線は、
図26Aに示すMLUTの信号線と同じである。
図26Bに示すMLUT30は、メモリセルユニット40、再構成可能論理マルチプレクサ50、及びレジスタユニット60を有する。メモリセルユニット40は、例えば、SRAMである。メモリセルユニット40は、構成データを格納するメモリセルを特定するための複数のアドレス線A0〜A8と接続する。
図25に示す例では、メモリセルユニットには、9つのアドレスにより、2の9乗である「512」のワード線があり、それに対して256個のビット線(「データ線」とも言う)がある。入力が4つありその組み合わせは16であるので、レジスタは16個必要になる。また、4ビットで16個必要で、左から左、左から右、右から左、右から右のデータが必要なので、4ビット×16×4で256個のビット線となる。よって、メモリセルユニットには、2の9乗×256個のメモリセルがある。なお、A0にはポジティブタイプのアドレス遷移検出(ATD)回路を付けてクロック入力とする(
図28で後述する)。
【0106】
[7.1]メモリセルユニット
メモリセルユニット40は、クロックA0に従って、アドレスで特定されたメモリセルから、図示されないセンスアンプによりデータを読み出して、ビット先に対応した数のレジスタ(
図24の例では、256ビット)を有するレジスタユニット60にデータを出力する。レジスタユニット60は、メモリセルユニット40から新たなデータが出力されるまで、データを保持し続ける複数のレジスタから構成される。
【0107】
図27は、メモリセルユニットの詳細である。
図27に示されるメモリセルユニット40は、各々がデータを記憶するメモリセルからなるメモリセルアレイ110と、アドレスデコーダ120と、後述の
図28Aに示すアドレス遷移検出部200と、メモリセルアレイ110へのデータ読出し又はデータ書込みを行うデータ入出力部140と、を有する。なお、本実施例において、メモリセルユニット40は、クロックに同期して読出し、又は、書込み動作を行う同期SRAMである。よって、アドレスデコーダ120及びデータ入出力部140はクロックに同期して動作する。
【0108】
メモリセルアレイ110は、m×2
n個のメモリセル(それに伴う記憶素子)を有し、m×2
n個のメモリセルは、2のm乗本のワード線と、n本のビット線(「データ線」とも言う。以下同じ)の接続部分に配置される。
【0109】
アドレスデコーダ120は、A0のアドレス遷移検出部で生成されたクロックに同期して、m本のアドレス信号線から受け取ったアドレス信号を受け取ると、それをデコードして、2のm乗本のワード線WLにデコード信号であるワード線選択信号及びデータ入出力部140で選択するデータ線選択信号を出力し、対応するメモリセルに対するデータの読み出し又は書込み処理が行なわれるようにする。
【0110】
データ入出力部140は、データ入出部140は、ライトアンプと、センスアンプとを有する。ライトアンプは、例えば、外部からライトイネーブル(WE)の立ち上がりエッジタイミング及び書込データを受け取ると、m本のデータ線b、/bにその書込データの信号レベルを伝えて、メモリセルにデータを書き込む。また、センスアンプは、データ入出力部140は、外部からリードイネーブル(RE)の立ち上がりエッジタイミングを受け取ると、m本のデータ線b、/bの信号レベルを外部に出力することで、読出データを出力する。
【0111】
なお、
図27に示すメモリセルユニットは、配線の1方向ずつ設けてもよい。例えば、
図24に示す2方向配置では、2つのメモリセルユニット、
図25に示す4方向配置では、4つのメモリセルユニットである。このように、方向毎にメモリセルユニットを設けることで、単一のメモリで構成する場合と比して、アドレスの数が減る(2の9乗×4の方が、2の36乗よりも少なくなる)ので、メモリの容量を下げることができる。
【0112】
図28Aは、本実施形態に係るアドレス遷移検出部の回路図である。
図28Aに示されるアドレス遷移検出部200は、否定論理和(NOR)回路210A、210B、論理積(AND)回路230、遅延回路240A〜240C、フリップフロップ(FF)250、インバータ260A、260B、及びDラッチ270を有する。
【0113】
図28Bは、
図28Aに示したアドレス遷移検出部の信号のタイミングチャートである。信号S1は、メモリセルユニットへのアドレス入力信号である。本実施例では、アドレスA0である。信号S2は、Dラッチの出力である。Dラッチ270は、信号S1に変化があった場合、一定期間変化しないようにラッチする。これは、ノイズ等で後続のアドレス遷移を無視するためである。信号S3は、Dラッチ270から出力される遅延信号である。遅延信号は、
図28Bに示されるように、立ち上がりおよび立ち下がりでクロックを作って、信号S4のクロック幅を生成するために、遅延回路240Bで遅延される。
【0114】
クロック信号として生成される信号S4は、AND回路230から出力される。AND回路230では、遅延回路240Bの入力と、出力とが入力されるので、両者の信号レベルが異なると、信号レベル「ハイ」を出力する。これにより、アドレス遷移を検出することができる。
【0115】
信号S5は、遅延回路240Cから出力される遅延信号であり、LAT270のイネーブル信号待ちしてクロック入力する。
【0116】
信号S6は、信号S5の信号延長であり、イネーブル信号のパルス生成である。NOR回路210Aは、信号S5とS6のNOR演算値である信号S7を出力する。そして、信号S7は、Dラッチ270のイネーブル信号となる。信号S8は、信号S5をインバータ260Aで反転した信号で、FF250で、アドレス信号のラッチのクロックとして使用される。信号S9は、メモリセルユニットのイネーブル、信号S10は、メモリセルユニットのクロック(atd_clk)、信号S11は、メモリセルユニットのアドレスとして利用される。このように、アドレスA0である信号S1により、クロック信号S10が生成されるので、メモリセルユニットとして同期SRAMの使用が可能になる。
【0117】
図28Cは、アドレスA0と生成されるクロック信号との関係を示すタイミングチャートである。
図28Cでは、信号S1とS10のみを示す。アドレスA0の「Low」から「Hi」への立ち上がりタイミングを用いて、クロックを生成し、アドレスA0「Hi」から「Low」への立下りタイミングでもクロックを生成すると、データの書込みの時、立ち上がりでデータを書き込んでも、立下りの時、最初のメモリ・データに戻ってしまいデータが保持されない。この対策として、MLUT20は、ポジティブタイプのアドレス遷移検出(ATD)部200を有する。このように、ポジティブタイプのATD回路は、A0の立ち上がりのみでCLKを生成するので、メモリ内部のアドレスをHiで保持する。Hiで保持する構成データが出力され、A0がLowになってCLKが生成されず構成データが、レジスタユニット60のレジスタに保持される。これにて、MLUT30は、フリップフロップ回路などの現実の回路を用意することなく、順序回路を構成することができる。このCLK生成は本ATF回路方式でなくとも、F/Fで実現してもよい。
【0118】
[7.2]再構成可能論理マルチプレクサ
再構成可能論理マルチプレクサ50は、データの配線経路の数だけある。例えば、再構成可能論理マルチプレクサ52A、52B、52C、及び52Dがある。
【0119】
レジスタユニット60に保持される構成データに従って、データ入力をデータ出力とに結合させるマルチプレクサであり、その接続経路は、構成データによって再構成可能である。動作としては、レジスタユニット60に保持されるデータを“入力信号”とし、データ入力を“選択制御信号”として用いて、“入力信号”を選択して、出力する。
【0120】
図29Aは、4方向配置のMLUTの信号線の配置例を示す図である。
図29Aに示すように、左右からのデータ入出力は、2方向配置と同じであるが、それに加えて、上からのデータ入力InC0〜C3、上へのデータ出力OutC0〜OutC3、及び、下からのデータ入力InD0〜InD3、下へのデータ出力OutD0〜OutD3がある。
【0121】
図29Bは、4方向配置のMLUTの一例を示す図である。なお、本例は適便に改良してもよい。
図29Bに示すMLUTの信号線は、
図29Aに示すMLUTの信号線と同じである。メモリセルユニットは表示しないが、各構成要素の動作は、2方向配置のMLUTと同じである。4方向であるため、再構成可能論理マルチプレクサの数が、2方向配置のMLUTと比して、4つ(再構成可能論理マルチプレクサ52E〜H)増え、それに伴いレジスタユニット62も増える。
【0122】
2方向配置のマルチプレクサの出力は、他の同方向への出力と論理和をしていたが、4方向配置でも原理は同じである。ただし、方向が4つとなったため、4つの論理和となっている。例えば、データ出力OutC0〜OutC3を例とすると、再構成可能論理マルチプレクサ52C、52E、52Gの出力の論理和となっている。再構成可能論理マルチプレクサ52E、52Gのデータを「0」とすることにより、52Eの出力が上に出力しうる。
【0123】
[7.3]ページ制御
図30は、ページ制御を行うMLUTの一例を示す図である。ページ制御を行うMLUTは、MLUTの一部が、他のメモリセルユニットのページ制御信号を生成する回路として動作し、そのデータ出力は、他のメモリセルユニットのページを制御する。
【0124】
図30に示すMLUT30は、大容量のメモリセルユニット40A、40Bを有し、各メモリセルユニットは、9本のアドレス線と、64本のデータ線で構成されるので、2の9乗(512)ワード×64ビットの大容量となる。本例ではA2〜A8がページ・アドレスで論理の多重化ができる。この場合は128ページの例である。また、本例では、2方向配置のMLUTアレイである。そして、メモリセルユニットは、各ページの構成データを格納するように構成されるので、記憶容量は大きくなる。そのため、2つのメモリにより、構成される。このようにすることで、左右からのクロック制御が可能になる。
【0125】
なお、
図30は、概略図であり、メモリセルユニットの周辺回路であるデコーダ等は、示しておらず、デコーダは
図5で説明したデコーダ120及びデータ入出力部140が、各メモリセルユニット毎に用意される。
【0126】
図31は、外部システムとMRLDの接続一例を示す概念図である。外部システム120は、情報処理装置、又は、SoCで実現されたデバイスである。外部システム120は、
図19に示すMRLD20と接続しており、MRLD20からのデータ出力を受け取るとともに、ページ切替判断する論理演算を行いって、その接続を介して、アドレスA8〜A15にページ切替信号を出力する。外部システムが、SoCを搭載することにより、MRLD20とともに高機能化されたデバイスが実現できる。
【0127】
[8]MRLDの論理又は接続動作
MLUTは、真理値表データをプログラムとして実行することで、論理要素及び/又は接続要素の機能を実現する。MRLDでの論理又は接続動作の説明を以下にする。なお、説明としては多方向MLUTの例で行う。
A.論理要素
図32は、論理要素として動作するMLUTの一例を示す図である。
図32では、説明を簡単にするために、アドレスセレクタ、データセレクタ、及び入出力バッファの記載は、省略される。
図32に示すMLUT30A、30Bは、4つの論理用アドレス入力LA線A0〜A3と、4つの論理動作用データ線D0〜D3と、4×16=64個の記憶素子40と、アドレスデコーダ9とをそれぞれ有する。論理動作用データ線D0〜D3は、24個の記憶素子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の論理用アドレス入力LAA0に出力する。同様に、MLUT30Bの論理動作用データ線D0は、MLUT30Bの論理用アドレス入力LA線A0〜A3に入力される信号に基づき、論理動作用データ線D0に接続される16個の記憶素子のいずれか1つに記憶される信号をMLUT30Aの論理用アドレス入力LAA2に出力する。このように、MRLD同士の連結は、1対のアドレス線とデータ線とを用いる。
【0128】
なお、
図32では、MLUT30A、30Bが有するAD対は4であるが、AD対の数は、特に後述するように4に限定されない。
【0129】
図33は、論理回路として動作するMLUTの一例を示す図である。本例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路701の入力とし、論理用アドレス入力LA線A2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を論理動作用データ線D0に出力する論理回路を構成する。
【0130】
図34は、
図33に示す論理回路の真理値表を示す図である。
図33の論理回路は、4入力のため、入力A0〜A3の全ての入力を入力として使用する。一方、出力は、1つのみなので、出力D0のみを出力として使用する。真理値表の出力D1〜D3の欄には「*」が記載されている。これは、「0」又は「1」のいずれの値でもよいことを示す。しかしながら、実際に再構成のために真理値表データをMLUTに書き込むときには、これらの欄には、「0」又は「1」のいずれかの値を書き込む必要がある。少なくとも
図12示すメモリセルユニット31Aとメモリセルユニット31Bとの関係で不必要なデータは0データにする。
【0131】
B.接続要素
図35は、接続要素として動作するMLUTの一例を示す図である。
図35では、接続要素としてのMLUTは、論理用アドレス入力LA線A0の信号を論理動作用データ線D1に出力し、論理用アドレス入力LA線A1の信号を論理動作用データ線D2に出力し、論理用アドレス入力LA線A2の信号を論理動作用データ線D3に出力するように動作する。接続要素としてのMLUTはさらに、論理用アドレス入力LA線A3の信号を論理動作用データ線D1に出力するように動作する。
【0132】
図36は、
図35に示す接続要素の真理値表を示す図である。
図35に示す接続要素は、4入力4出力である。したがって、入力A0〜A3の全ての入力と、出力D0〜D3の全ての出力が使用される。
図36に示す真理値表によって、MLUTは、入力A0の信号を出力D1に出力し、入力A1の信号を出力D2に出力し、入力A2の信号を出力D3に出力し、入力A3の信号を出力D0に出力する接続要素として動作する。
【0133】
図37は、AD0、AD1、AD2、及びAD3の4つのAD対を有するMLUTによって実現される接続要素の一例を示す図である。AD0は、論理用アドレス入力LA線A0と論理動作用データ線D0とを有する。AD1は、論理用アドレス入力LA線A1と論理動作用データ線D1とを有する。AD2は、論理用アドレス入力LA線A2と論理動作用データ線D2とを有する。そして、AD3は、論理用アドレス入力LA線A3と論理動作用データ線D3とを有する。
図37において、1点鎖線は、AD対0の論理用アドレス入力LA線A0に入力された信号がAD対1の論理動作用データ線D1に出力される信号の流れを示す。2点鎖線は、第2のAD対1の論理用アドレス入力LA線A1に入力された信号がAD対2の論理動作用データ線D2に出力される信号の流れを示す。破線は、AD対2の論理用アドレス入力LA線A2に入力された信号がAD対3の論理動作用データ線D3に出力される信号の流れを示す。実線は、AD対3の論理用アドレス入力LA線A3に入力された信号がAD対0の論理動作用データ線D0に出力される信号の流れを示す。
【0134】
なお、
図37では、MLUT30が有するAD対は4であるが、AD対の数は、特に4に限定されない。
【0135】
C.論理要素と接続要素の組合せ機能
図38は、1つのMLUTが、論理要素及び接続要素として動作する一例を示す図である。
図38に示す例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路121の入力とし、2入力NOR回路121の出力と、論理用アドレス入力LA線A2とを2入力NAND回路122の入力とし、2入力NAND回路122の出力を論理動作用データ線D0に出力する論理回路を構成する。また同時に、論理用アドレス入力LA線A3の信号を論理動作用データ線D2に出力する接続要素を構成する。
【0136】
図39に、
図38に示す論理要素及び接続要素の真理値表を示す。
図38の論理動作は、入力D0〜D3の3つの入力を使用し、1つの出力D0を出力として使用する。一方、
図39の接続要素は、入力A3の信号を出力D2に出力する接続要素が構成される。
【0137】
図40は、AD0、AD1、AD2、及びAD3の4つのAD対を有するMLUTによって実現される論理動作及び接続要素の一例を示す図である。
図37に示す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に出力する。
【0138】
D.再構成可能論理マルチプレクサを用いたMLUTの真理値表データ
図41に示す例における構成データを
図42A〜
図42Jに示す。
図41は、
図24で説明した交互配置のMLUTにより構成される論理回路と配線を示す図である。
図41で示される、2つのメモリセルユニット(左側、右側)により構成され、論理回路と配線は、MLUT30A〜30Dにより構成される。また、下記に示す
図42A〜
図42Jは、ページ制御で選択される真理値表データも含む。
【0139】
図42Aは、MLUT30Aの左側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Bは、MLUT30Aの右側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Cは、MLUT30Bの左側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Dは、MLUT30Bの右側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Eは、MLUT30Cの左側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Fは、MLUT30Cの右側のメモリセルユニットに格納される構成データの一例を示す図である。
【0140】
図42Gは、MLUT30Dの左側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Hは、MLUT30Dの右側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Iは、MLUT30Eの左側のメモリセルユニットに格納される構成データの一例を示す図である。
図42Jは、MLUT30Eの右側のメモリセルユニットに格納される構成データの一例を示す図である。
【0141】
上記したように、再構成可能論理マルチプレクサの出力は、論理和されているため、信号出力の無い経路の構成データを「0」とすることにより、所望の論理演算を結果を出力するように、構成データは構成されている。
【0142】
[9]真理値表データの生成方法
再構成可能な半導体装置の真理値表データは、論理構成用のソフトウェアプログラムを実行する情報処理装置によって生成される。
【0143】
図43に、情報処理装置のハードウェア構成の一例を示す。情報処理装置210は、プロセッサ211と、入力部212と、出力部213と、記憶部214とドライブ装置215を有する。プロセッサ211は、入力部212に入力された配置・配線用のソフトウェア、集積回路を設計するためのC言語記述またはハードウェア記述言語(HDL)などの回路記述言語、及び、上記ソフトウェアを実行することによって生成される真理値表データを記憶部214に記憶する。また、プロセッサ211は、配置・配線用のソフトウェアを実行して、記憶部214に記憶された回路記述に対して以下に示す配置・配線の処理を行い、出力部213に、真理値表データを出力する。出力部213には、再構成可能な論理デバイス20(
図34には示さず)を接続することができ、プロセッサ211が論理構成処理を実行して、生成した真理値表データを、出力部213を介して再構成可能な論理デバイス20に書き込む。出力部213は、外部ネットワークと接続していてもよい。この場合、論理構成用のソフトウェアプログラムは、ネットワークを介して送受信される。ドライブ装置215は、例えば、DVD(Digital Versatile Disc)、フラッシュメモリなどの記憶媒体217を読み書きする装置である。ドライブ装置215は、記憶媒体217を回転させるモータや記憶媒体217上でデータを読み書きするヘッド等を含む。なお、記憶媒体217は、論理構成用のプログラム、又は、真理値表データを格納することができる。ドライブ装置215は、セットされた記憶媒体217からプログラムを読み出す。プロセッサ211は、ドライブ装置215により読み出されたプログラム又は真理値表データを、記憶部214に格納する。
【0144】
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。特に、MRLDの論理又は接続動作において、双方向MLUTを、多方向MLUTの動作とすることは実施形態の変更として可能である。