(57)【要約】【課題】複数のデータ入力経路を有するメモリセルを備えたメモリ回路において、複数のデータ入力経路の２つ以上を介して供給される複数のデータによる同時書き込みに起因するメモリセルのデータ更新のタイミングのずれを抑制する。【解決手段】メモリ回路は、複数のデータ入力経路を有するメモリセルと、複数のデータ入力経路のうちのいずれか２つ以上を介してメモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によってメモリセルに同時に供給されるデータの各々を、対応するデータ入力経路の各々に出力する駆動力調整回路と、を含む。【選択図】図２
2018018566.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ入力経路を有するメモリセルと、
前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によって前記メモリセルに同時に供給されるデータの各々を、対応するデータ入力経路の各々に出力する駆動力調整回路と、
を含むメモリ回路。
【請求項２】
前記駆動力調整回路は、前記複数のデータ入力経路の各々に接続された複数のドライバ回路を含み、
前記複数のドライバ回路の各々は、互いに並列接続され且つ出力端が対応するデータ入力経路に接続された複数のインバータ回路を含み、
前記複数のインバータ回路のうち有効化されるインバータ回路の数によって前記駆動力を調整する
請求項１に記載のメモリ回路。
【請求項３】
前記複数のデータ入力経路のいずれか２つ以上を介して前記メモリセルに同時に供給される複数のデータの各々が同一値となるようにデータ変換処理を行うデータ変換回路を更に含む
請求項１または請求項２に記載のメモリ回路。
【請求項４】
前記メモリセルを含む複数のメモリセルのうち、データの書き込み先となるメモリセルを、前記複数のデータ入力経路の各々に供給されるデータ毎に指定するアドレス信号に基づいて、前記複数のデータ入力経路のうちの１つに供給されるデータの書き込み先が他のデータ入力経路に供給されるデータの書き込み先と一致する場合の一致数を、前記複数のデータ入力経路の各々について示す判定信号を生成する判定回路を更に含み、
前記駆動力調整回路は、前記判定信号に基づいて前記駆動力を調整する
請求項１から請求項３のいずれか１項に記載のメモリ回路。
【請求項５】
前記複数のデータ入力経路の各々に接続され、前記メモリセルにデータを書き込む場合にオン状態とされる複数のトランジスタと、
前記複数のトランジスタのうち、前記メモリセルを書き込み先とするデータが供給されるデータ入力経路に接続されたトランジスタのゲートにクロック信号を供給するクロックドライバと、
を更に含む請求項１から請求項４のいずれか１項に記載のメモリ回路。
【請求項６】
複数のデータ入力経路を有するメモリセルと、
前記メモリセルに接続され、前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って静電容量が増加する可変容量回路と、
を含むメモリ回路。
【請求項７】
複数のデータ入力経路を有するメモリセルを含むメモリ回路の制御方法であって、
前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によって前記メモリセルに同時に供給されるデータの各々を対応するデータ入力経路に出力する
メモリ回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、メモリ回路およびメモリ回路の制御方法に関する。
【背景技術】
【０００２】
１つのメモリセルに対してデータ入力経路であるポートを複数有するマルチポートメモリセルを備えたメモリ回路に関する技術として、以下の技術が知られている。
【０００３】
例えば、特許文献１には、第１および第２のポートのワード線と第１および第２のポートのビット線とに接続され、クロック信号に同期して読み出し動作が行われるメモリセルを備えたメモリ回路が記載されている。このメモリ回路は、第１および第２のポートのロウアドレス同士を比較し、ロウアドレスの一致を検出するアドレス一致検出回路と、アドレス一致検出回路の検出結果に応じて調整されたタイミングを有するクロック信号を生成するタイミング生成回路とを備える。
【０００４】
また、特許文献２には、複数のポートから同一アドレスのメモリセルに書き込みが重複する場合に、他のポートに優先してメモリセルに所望のデータを書き込む書込回路を含むメモリ回路が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２３４５９４号公報
【特許文献２】特開２００３−９１９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、プロセッサ内の演算器において使用されるデータを一時的に保持するレジスタは、演算器の演算結果を複数のメモリセルに同時に書きこむことができるように、マルチポートメモリセルが使用される。それぞれのデータ信号に対して、どのメモリセルに書き込むかを決めるアドレス信号は、一つのデータ信号に対して一つ存在する。
【０００７】
複数のデータの各々の書き込み先となるメモリセルが全て異なる場合は、各データは対応するアドレス信号で定められたメモリセルに書き込まれる。しかしながら、各データに対応するアドレス信号によって指定される書き込み先のメモリセルが重複する場合には、１つのメモリセルに対して複数のデータ入力経路から供給される複数のデータによる同時書き込みを試みることとなる。１つのメモリセルに同時に書き込まれる複数のデータが互いに異なる場合には、バスファイトを生じ、書き込むデータの値が不定になることにより、論理の保証ができないばかりでなく、メモリ回路の破壊に至るおそれがある。
【０００８】
バスファイトを防止するための手法として、同一のメモリセルに複数のデータ入力経路から同時にデータの書き込みが起こらないように制御する手法が考えられる。具体的には、アドレス値に優先順位を付与し、付与した優先順位に基づき、いずれか１つのデータ入力経路を介して供給されるデータのみをメモリセルに書き込む。しかしながら、この手法によれば、アドレス信号をデコードするアドレスデコーダの後段に優先順位を調整するための回路を設ける必要がある。また、優先順位の調整に時間を要するため、メモリ回路の動作速度が低下するという問題がある。
【０００９】
バスファイトを防止するための他の手法として、複数のアドレス信号に基づいて書き込みアドレスの重複を検出した場合に、重複したアドレスに対応するメモリセルに対する書き込みデータを同一値に変更するという手法が考えられる。すなわち、この手法では、複数のデータ入力経路を介して同一のメモリセルに同時に供給される複数のデータを同一値に変更することで、バスファイトを回避するというものである。しかしながらこの手法によれば、アドレスが重複する場合（１つのメモリセルに複数のデータを同時に書き込む場合）には、アドレスが重複しない場合（１つのメモリセルに１つのデータを書き込む場合）と比較して、メモリセルにデータを書き込むために作用するトランジスタの数が増加する。これにより、アドレスが重複する場合には、アドレスが重複しない場合と比較して、データ書き込みのための駆動力が大きくなり、データ書き込みによるメモリセルのデータの更新（遷移）のタイミングが早まる場合がある。
【００１０】
例えば、マルチポートメモリセルをパイプライン処理に組み込んだ場合には、メモリセルのデータ更新のタイミングにずれが生じることにより、設計時に想定したタイミングでのパイプライン動作が実施されないおそれがある。従って、このようなタイミングのずれを考慮したタイミング設計を行う必要があるが、タイミングのずれが大きくなる場合にはタイミング設計が困難になる。
【００１１】
開示の技術は、複数のデータ入力経路を有するメモリセルを備えたメモリ回路において、複数のデータ入力経路の２つ以上を介して供給される複数のデータによる同時書き込みに起因するメモリセルのデータ更新のタイミングのずれを抑制することを目的とする。
【課題を解決するための手段】
【００１２】
開示の技術に係るメモリ回路は、複数のデータ入力経路を有するメモリセルと、駆動力調整回路と、を含む。駆動力調整回路は、前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によって前記メモリセルに同時に供給されるデータの各々を、対応するデータ入力経路の各々に出力する。
【発明の効果】
【００１３】
開示の技術は、一つの側面として、複数のデータ入力経路の２つ以上を介して供給される複数のデータによる同時書き込みに起因するメモリセルのデータ更新のタイミングのずれを抑制するという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】開示の技術の実施形態に係るマルチポートメモリセル１０の構成を示す図である。
【図２】開示の技術の実施形態に係るメモリ回路の概念的な構成を示す回路ブロック図である
【図３】開示の技術の実施形態に係るメモリ回路の具体的な構成を示す回路ブロック図である。
【図４】開示の技術の実施形態に係るクロックドライバの詳細な構成を示す回路図である。
【図５】開示の技術の実施形態に係る同時書き込み判定回路の構成を示す回路ブロック図である。
【図６】開示の技術の実施形態に係るデータ変換回路の詳細な構成を示す回路図である。
【図７】開示の技術の実施形態に係る駆動力調整回路の構成を示す回路ブロック図である。
【図８】開示の技術の実施形態に係るドライバ回路の詳細な構成を示す回路図である。
【図９】比較例に係るメモリ回路の構成を示す回路ブロック図である。
【図１０】パイプライン処理の流れに沿って並べられたマルチポートメモリセルおよび演算器を示す図である。
【図１１Ａ】パイプライン処理において、比較例に係るメモリ回路のマルチポートメモリセルに単一のデータによる通常書き込みがなされた場合の各要素の動作タイミングの一例を示すタイムチャートである。
【図１１Ｂ】パイプライン処理において、比較例に係るメモリ回路のマルチポートメモリセルに複数のデータによる同時書き込みがなされた場合の各要素の動作タイミングの一例を示すタイムチャートである。
【図１２】開示の技術の実施形態に係るメモリ回路および比較例に係るメモリ回路における、マルチポートメモリセルに対する同時書き込み数とデータ書き込み時の駆動力との関係を示すグラフである。
【図１３】開示の技術の実施形態に係るメモリ回路の制御方法を示すフローチャートである。
【図１４】プロセッサ内に設けられたマルチポートメモリセルの使用例を示す図である。
【図１５】開示の技術の他の実施形態に係るマルチポートメモリセル１０ａの構成を示す図である。
【図１６】開示の技術の他の実施形態に係るメモリ回路の構成を示す回路ブロック図である。
【図１７】開示の技術の他の実施形態に係る可変容量回路の構成を示す回路図である。
【発明を実施するための形態】
【００１５】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一または等価な構成要素および部分には同一の参照符号を付与している。
【００１６】
[第１の実施形態]
図１は、開示の技術の実施形態に係るマルチポートメモリセル１０の構成を示す図である。マルチポートメモリセル１０は、１ビットのデータを記憶するメモリセル１１と、メモリセル１１に接続された複数のデータ入力経路ｄ１〜ｄ５と、を含んで構成されている。メモリセル１１は、一例として、入力端と出力端とが相互に接続された２つのインバータ１１Ａおよび１１Ｂを有するスタティックメモリである。なお、マルチポートメモリセル１０は、メモリセル１１に記憶されたデータを読み出すための複数のデータ出力経路も含み得るが、図１において、データ出力経路の図示は省略されている。
【００１７】
データ入力経路ｄ１〜ｄ５には、メモリセル１１にデータを書き込む場合にオン状態とされるトランジスタＴ１０〜Ｔ１５がそれぞれ接続されている。また、データ入力経路ｄ１〜ｄ５には、メモリセル１１にデータを書き込む場合にオン状態とされるトランジスタＴ２０〜Ｔ２５が、トランジスタＴ３０〜Ｔ３５を介してそれぞれ接続されている。トランジスタＴ１０〜Ｔ１５、Ｔ２０〜Ｔ２５、Ｔ３０〜３５は、それぞれｎチャネル型であり、ゲートにハイレベルの信号が供給された場合にオン状態となる。
【００１８】
トランジスタＴ１０〜Ｔ１５は、ゲートがクロック入力信号経路ｃ０〜ｃ５にそれぞれ接続され、ソースがデータ入力経路ｄ０〜ｄ５にそれぞれ接続され、ドレインがメモリセル１１の一方のノードｎ１にそれぞれ接続されている。トランジスタＴ２０〜Ｔ２５は、ゲートがクロック入力信号経路ｃ０〜ｃ５にそれぞれ接続され、ドレインがメモリセル１１の他方のノードｎ２にそれぞれ接続され、ソースがトランジスタＴ３０〜Ｔ３５のドレインにそれぞれ接続されている。トランジスタＴ３０〜Ｔ３５は、ゲートがデータ入力経路ｄ０〜ｄ５にそれぞれ接続され、ソースが接地電位にそれぞれ接続されている。メモリセル１１の一方のノードｎ１には、ＮＯＴ回路１２が接続され、ＮＯＴ回路１２の出力端が、マルチポートメモリセル１０の出力端１３とされている。
【００１９】
トランジスタＴ１０〜Ｔ１５およびＴ２０〜Ｔ２５は、それぞれ、クロック入力経路ｃ０〜ｃ５を介して供給されるクロック信号ＸＣＫ０〜ＸＣＫ５がハイレベルを呈する場合にオン状態となる。トランジスタＴ１０〜Ｔ１５およびＴ２０〜Ｔ２５はオン状態とされた場合に、対応するデータ入力経路ｄ０〜ｄ５を介して供給されるデータＸＤ０〜ＸＤ５によるデータ書き込みを行う。なお、ノードｎ１にＮＯＴ回路１２が接続されているため、出力端１３から出力されるデータの論理はデータ入力経路ｄ０〜ｄ５を介して供給されるデータＸＤ０〜ＸＤ５の論理とは逆となる。
【００２０】
マルチポートメモリセル１０において、例えば、メモリセル１１に、データＸＤ０によるデータ書き込みを行う場合には、クロック信号ＸＣＫ０がハイレベルとされ、他のクロック信号ＸＣＫ１〜ＸＣＫ５はローレベルとされる。これにより、トランジスタＴ１０およびＴ２０がオン状態とされ、メモリセル１１にデータＸＤ０によるデータの書き込みが行われる。このように、複数のデータ入力経路ｄ０〜ｄ５を介してそれぞれ供給される複数のデータＸＤ０〜ＸＤ５のうち、どのデータによってメモリセル１１にデータの書き込みを行うのかがクロック信号ＸＣＫ０〜ＸＣＫ５によって定められる。なお、本実施形態ではマルチポートメモリセル１０が、６つのデータ入力経路ｄ０〜ｄ５および６つのクロック入力経路ｃ０〜ｃ５を備える構成を例示したが、データ入力経路およびクロック入力経路の数は、適宜増減することが可能である。
【００２１】
マルチポートメモリセル１０においては、例えば、クロック信号ＸＣＫ０とクロック信号ＸＣＫ１とが同時にハイレベルとなる可能性がある。この場合、トランジスタＴ１０およびＴ２０からなる対と、トランジスタＴ１１およびＴ２１からなる対とが同時にオン状態となり、データ入力経路ｄ０およびｄ１を介してデータＸＤ０およびＸＤ１が同時にメモリセル１１に供給されることとなる。すなわち、メモリセル１１に対して、データＸＤ０による書き込みと、データＸＤ１による書き込みとが同時に行われることとなる。
【００２２】
以下に説明する開示の技術の実施形態に係るメモリ回路は、メモリセル１１に複数のデータによる同時書き込みがなされる場合に、当該複数のデータを同一値とすることで、バスファイトの発生を回避する機能を有する。更に、開示の技術の実施形態に係るメモリ回路は、メモリセル１１に複数のデータによる同時書き込みされる場合でも、メモリセル１１のデータ更新のタイミングのずれを抑制する機能を有する。
【００２３】
図２は、開示の技術の実施形態に係るメモリ回路１の概念的な構成を示す回路ブロック図である。図３は、メモリ回路１のより具体的な構成を示す回路ブロック図である。図３に示すように、メモリ回路１は、一例として、８つのマルチポートメモリセル１０＜０＞、１０＜１＞、・・・、１０＜７＞を備える。マルチポートメモリセル１０＜０＞〜１０＜７＞は、それぞれ、図１に示すマルチポートメモリセル１０と同じ構成である。また、メモリ回路１は、マルチポートメモリセル１０＜０＞〜１０＜７＞の各々に対応して設けられた８つのクロックドライバ３０＜０＞、３０＜１＞、・・・、３０＜７＞を備える。なお、図２においては、８つのマルチポートメモリセル１０＜０＞〜１０＜７＞のうち、マルチポートメモリセル１０＜０＞のみが図示され、８つのクロックドライバ３０＜０＞〜３０＜７＞のうち、クロックドライバ３０＜０＞のみが図示されている。
【００２４】
アドレス信号WA0[2:0]〜WA5[2:0]は、それぞれ、データ入力経路ｄ０〜ｄ５に供給されるデータの各々の書き込み先を指定する信号であり、データＤ０〜Ｄ５にそれぞれ対応している。例えば、アドレス信号WA0［2:0］は、データＤ０の書き込み先を指定し、アドレス信号WA5[2:0]は、データＤ５の書き込み先を指定する。データの書き込み先はマルチポートメモリセル１０＜０＞〜１０＜７＞のうちのいずれかである。アドレス信号WA0[2:0]〜WA5[2:0]は、アドレスデコーダ２０および同時書き込み判定回路４０にそれぞれ供給される。
【００２５】
アドレスデコーダ２０は、アドレス信号WA0[2:0]〜WA5[2:0]が個別に入力される６つのデコーダ２１を備える。６つのデコーダ２１は、マルチポートメモリセル１０＜０＞〜１０＜７＞の６つのクロック入力経路ｃ０〜ｃ５にそれぞれ対応している。６つのデコーダ２１は、自身に入力されたアドレス信号WA0[2:0]〜WA5[2:0]に基づいてクロックイネーブル信号CE0[7:0]〜CE5[7:0]をそれぞれ生成する。クロックイネーブル信号CE0[7:0]〜CE5[7:0]は、それぞれ、対応するクロック入力経路ｃ０〜ｃ５にクロック信号ＸＣＫ０〜ＸＣＫ５を供給するか否かを示す信号である。例えば、クロックイネーブル信号CE0[7:0]は、マルチポートメモリセル１０＜０＞〜１０＜７＞の各々に対応する８つのクロックイネーブル信号CE0［0］〜CE0［7］によって構成されている。例えば、CE0[0]は、マルチポートメモリセル１０＜０＞のクロック入力経路ｃ０にクロック信号ＸＣＫ０を供給する否かを示し、CE0[1]は、マルチポートメモリセル１０＜１＞のクロック入力経路ｃ０にクロック信号ＸＣＫ０を供給する否かを示す。クロックイネーブル信号CE0[0]〜CE0[7]は、それぞれ対応するクロックドライバ３０＜０＞〜３０＜７＞に供給される。他のクロックイネーブル信号CE1[7:0]〜CE5[7:0]についても同様である。
【００２６】
クロックドライバ３０＜０＞〜３０＜７＞は、マルチポートメモリセル１０＜０＞〜１０＜７＞にそれぞれ対応している。クロックドライバ３０＜０＞〜３０＜７＞は、それぞれ、対応するマルチポートメモリセル１０＜０＞〜１０＜７＞のクロック入力経路ｃ０〜ｃ５のうち、クロックイネーブル信号によって指定された経路に、対応するクロック信号ＸＣＫ０〜ＸＣＫ５を供給する。
【００２７】
図４は、クロックドライバ３０＜０＞の詳細な構成を示す回路図である。クロックドライバ３０＜０＞は、ＮＯＴ回路３１およびクロック入力経路ｃ０〜ｃ５にそれぞれ対応する６つのＡＮＤ回路３００〜３０５を含んで構成されている。ＮＯＴ回路３１の入力端には基本クロック信号ＣＫが入力される。ＡＮＤ回路３００〜３０５の一方の入力端には、それぞれ、複数のデコーダ２１の各々から出力されたクロックイネーブル信号CE0[0]〜CE5[0]が入力される。ＡＮＤ回路３００〜３０５の他方の入力端は、ＮＯＴ回路３１の出力端に接続されている。ＡＮＤ回路３００〜３０５の出力端は対応するクロック入力経路ｃ１〜ｃ５に接続されている。例えば、ＡＮＤ回路３００は、クロックイネーブル信号CE0[0]がハイレベルを呈する場合に基本クロック信号ＣＫを論理反転させたクロック信号ＸＣＫ０をマルチポートメモリセル１０＜０＞のクロック入力経路ｃ０に供給する。同様に、ＡＮＤ回路３０１〜３０５は、入力されるクロックイネーブル信号CE1[0]〜CE5[0]がハイレベルを呈する場合に、クロック信号ＸＣＫ１〜ＸＣＫ５をマルチポートメモリセル１０＜０＞のクロック入力経路ｃ１〜ｃ５にそれぞれ供給する。
【００２８】
このように、クロックドライバ３０＜０＞は、マルチポートメモリセル１０＜０＞のクロック入力経路ｃ０〜ｃ５のうち、クロックイネーブル信号CE0[0]〜CE5[0]によって指定された経路に、対応するクロック信号ＸＣＫ０〜ＸＣＫ５を供給する。
【００２９】
クロックドライバ３０＜１＞〜３０＜７＞は、クロックドライバ３０＜０＞と同様の構成を有する。クロックドライバ３０＜１＞〜３０＜７＞は、対応するマルチポートメモリセル１０＜１＞〜１０＜７＞のクロック入力経路ｃ０〜ｃ５のうち、クロックイネーブル信号によって指定された経路に、対応するクロック信号ＸＣＫ０〜ＸＣＫ５を供給する。
【００３０】
同時書き込み判定回路４０は、アドレス信号WA0［2:0］〜WA5［2:0］に基づいて、同一のマルチポートメモリセルに対するデータの同時書き込みに関する情報を含む第１の判定信号MATCH[0:5]および第２の判定信号MATCH0[4:0]〜MATCH5[4:0]を生成する。
【００３１】
第１の判定信号MATCH[0:5]は、データ入力経路ｄ０〜ｄ５にそれぞれ供給されるデータのうち、同一のマルチポートメモリセルを書き込み先とするデータを、データ入力経路毎に特定する信号である。第１の判定信号MATCH[0:5]は、データ入力経路ｄ０〜ｄ５の各々に対応する６つの判定信号MATCH［0］〜MATCH［5］により構成されている。例えば、判定信号MATCH［0］は、データ入力経路ｄ０に供給されるデータの書き込み先が、他のデータ入力経路ｄ１〜ｄ５に供給されるデータのうちのいずれかの書き込み先と一致する場合にハイレベルを呈し、それ以外の場合にローレベルを呈する。判定信号MATCH［1］は、データ入力経路ｄ１に供給されるデータの書き込み先が、他のデータ入力経路ｄ０、ｄ２〜ｄ５に供給されるいずれかのデータの書き込み先と一致する場合にハイレベルを呈し、それ以外の場合にローレベルを呈する。判定信号MATCH［2］〜MATCH［5］についても同様である。
【００３２】
第２の判定信号MATCH0[4:0]〜MATCH5[4:0]は、それぞれ、データ入力経路ｄ０〜ｄ５に対応している。例えば、第２の判定信号MATCH0[4:0]は、データ入力経路ｄ０に対応し、データ入力経路ｄ０に供給されるデータの書き込み先が、他のデータ入力経路ｄ１〜ｄ５のいずれかに供給されるデータの書き込み先と一致数する場合の一致数を示す信号である。例えば、データ入力経路ｄ０に供給されるデータの書き込み先が、データ入力経路ｄ１に供給されるデータの書き込み先と一致する場合に、一致数が１であることが第２の判定信号MATCH0[4:0]によって示される。また、データ入力経路ｄ０に供給されるデータの書き込み先が、データ入力経路ｄ１およびｄ２に供給されるデータの書き込み先と一致する場合に、一致数が２であることが第２の判定信号MATCH0[4:0]によって示される。なお、第２の判定信号MATCH0[4:0]は、判定信号MATCH0[0]〜MATCH0[4]により構成されており、これらによって一致数が示される。
【００３３】
第２の判定信号MATCH1[4:0]〜MATCH5[4:0]は、それぞれデータ入力経路ｄ１〜ｄ５を判定対象としている点を除き、MATCH0[4:0]と同様である。第２の判定信号MATCH0[4:0]〜MATCH5[4:0]は、駆動力調整回路６０に供給される。
【００３４】
図５は、同時書き込み判定回路４０の構成を示す回路ブロック図である。同時書き込み判定回路４０は、複数のアドレス比較回路４０１〜４１５と、複数のＯＲ回路４２０〜４２５と、を含んで構成されている。
【００３５】
アドレス信号WA0[2:0]〜WA5[2:0]は、複数のアドレス比較回路４０１〜４１５によって総当りで比較される。例えば、アドレス比較回路４０１は、アドレス信号WA0[2:0]によって示されるデータＤ０の書き込み先と、アドレス信号WA1[2:0]によって示されるデータＤ１の書き込み先とを比較する。アドレス比較回路４０１は、両者の書き込み先が一致する場合にハイレベルの判定信号Ｍ０１を出力し、一致しない場合にローレベルの判定信号Ｍ０１を出力する。また、例えば、アドレス比較回路４０２は、アドレス信号WA0[2:0]によって示されるデータＤ０の書き込み先と、アドレス信号WA2[2:0]によって示されるデータＤ２の書き込み先とを比較する。アドレス比較回路４０２は、両者の書き込み先が一致する場合にハイレベルの判定信号Ｍ０２を出力し、一致しない場合にローレベルの判定信号Ｍ０２を出力する。アドレス比較回路４０３〜４１５についても同様である。複数のアドレス比較回路４０１〜４１５によって判定信号Ｍ０１〜Ｍ０５、Ｍ１２〜Ｍ１５、Ｍ２３〜Ｍ２５、Ｍ３４、Ｍ３５およびＭ４５が生成される。
【００３６】
判定信号Ｍ０１〜Ｍ０５は、それぞれ、判定信号MATCH0[0]〜MATCH0[4]に対応し、これらをまとめた第２の判定信号MATCH0[4:0]として出力される。判定信号Ｍ０１、Ｍ１２〜Ｍ１５は、それぞれ、判定信号MATCH1[0]〜MATCH1[4]に対応し、これらをまとめた第２の判定信号MATCH1[4:0]として出力される。判定信号Ｍ０２、Ｍ１２、Ｍ２３〜Ｍ２５は、それぞれ、判定信号MATCH2[0]〜MATCH2[4]に対応し、これらをまとめた第２の判定信号MATCH2[4:0]として出力される。判定信号Ｍ０３、Ｍ１３、Ｍ２３、Ｍ３４およびＭ３５は、それぞれ、判定信号MATCH3[0]〜MATCH3[4]に対応し、これらをまとめた第２の判定信号MATCH3[4:0]として出力される。判定信号Ｍ０４、Ｍ１４、Ｍ２４、Ｍ３４およびＭ４５は、それぞれ、判定信号MATCH4[0]〜MATCH4[4]に対応し、これらをまとめた第２の判定信号MATCH4[4:0]として出力される。判定信号Ｍ０５、Ｍ１５、Ｍ２５、Ｍ３５およびＭ４５は、それぞれ、判定信号MATCH5[0]〜MATCH5[4]に対応し、これらをまとめた第２の判定信号MATCH5[4:0]として出力される。
【００３７】
ＯＲ回路４２０は、判定信号Ｍ０１〜Ｍ０５の論理和を演算した結果を第１の判定信号MATCH[0]として出力する。ＯＲ回路４２１は、判定信号Ｍ０１、Ｍ１２〜Ｍ１５の論理和を演算した結果を第１の判定信号MATCH[1]として出力する。ＯＲ回路４２２は、判定信号Ｍ０２、Ｍ１２、Ｍ２３〜Ｍ２５の論理和を演算した結果を第１の判定信号MATCH[2]として出力する。ＯＲ回路４２３は、判定信号Ｍ０３、Ｍ１３、Ｍ２３、Ｍ３４およびＭ３５の論理和を演算した結果を第１の判定信号MATCH[3]として出力する。ＯＲ回路４２４は、判定信号Ｍ０４、Ｍ１４、Ｍ２４、Ｍ３４およびＭ４５の論理和を演算した結果を第１の判定信号MATCH[4]として出力する。ＯＲ回路４２５は、判定信号Ｍ０５、Ｍ１５、Ｍ２５、Ｍ３５およびＭ４５の論理和を演算した結果を第１の判定信号MATCH[5]として出力する。
【００３８】
データ変換回路５０は、第１の判定信号MATCH[0:5]に基づいて、入力されるデータＤ０〜Ｄ５のうち、書き込み先が一致するデータを特定する。データ変換回路５０は、書き込み先が一致するデータの各々が互いに同一値となるようにデータ変換処理を行う。
【００３９】
図６は、データ変換回路５０の詳細な構成を示す回路図である。データ変換回路５０は、ＮＯＴ回路５１およびデータ入力経路ｄ０〜ｄ５にそれぞれ対応する６つのＮＡＮＤ回路５００〜５０５を含んで構成されている。ＮＯＴ回路５１の入力端には第１の判定信号MATCH[0:5]（MATCH[0]〜MATCH[5]）が入力される。ＮＡＮＤ回路５００〜５０５の一方の入力端には、それぞれ、データＤ０〜Ｄ５が入力され、ＮＡＮＤ回路５００〜５０５の他方の入力端は、ＮＯＴ回路５１の出力端に接続されている。
【００４０】
例えば、ＮＡＮＤ回路５００は、第１の判定信号MATCH[0]の論理反転信号とデータＤ０との否定論理積を演算する。ＮＡＮＤ回路５００は、第１の判定信号MATCH[0]がハイレベルを呈する場合、データＤ０の値を固定値“１”に変換し、これをデータＸＤＯ０として出力する。一方、ＮＡＮＤ回路５００は、第１の判定信号MATCH[0]がローレベルを呈する場合、データＤ０を論理反転したものをデータＸＤＯ０として出力する。
【００４１】
同様に、ＮＡＮＤ回路５０１〜５０５は、それぞれ第１の判定信号MATCH[1]〜MATCH[5]の論理反転信号とデータＤ１〜Ｄ５との否定論理積を演算する。ＮＡＮＤ回路５０１〜５０５は、第１の判定信号MATCH[1]〜MATCH[5]がそれぞれハイレベルを呈する場合、データＤ１〜Ｄ５の値を、固定値“１”に変換し、これらをデータＸＤＯ１〜ＸＤＯ５としてそれぞれ出力する。一方、ＮＡＮＤ回路５０１〜５０５は、第１の判定信号MATCH[1]〜MACH[5]がそれぞれローレベルを呈する場合、データＤ１〜Ｄ５をそれぞれ論理反転したものをデータＸＤＯ１〜ＸＤＯ５としてそれぞれ出力する。
【００４２】
例えば、データＤ０の書き込み先とデータＤ１の書き込み先が同一である場合、データ変換回路５０は、データＤ０およびＤ１をそれぞれ固定値“１”に変換し、これらをデータＸＤＯ０およびＸＤＯ１として出力する。データ変換回路５０は、書き込み先が互いに異なるデータＤ２〜Ｄ５については、これらを論理反転したものをデータＸＤＯ２〜ＸＤＯ５として出力する。このようにデータ変換回路５０によって書き込み先が同一であるデータの値を同一値に変換することで、マルチポートメモリセル１０＜０＞〜１０＜７＞においてバスファイトの発生を回避することができる。データ変換回路５０から出力されるデータＸＤＯ０〜ＸＤＯ５は、それぞれ、駆動力調整回路６０に供給される。
【００４３】
駆動力調整回路６０は、第２の判定信号MATCH0[4:0]〜MATCH5[4:0]に基づいて、データ変換回路５０から出力されるデータＸＤＯ０〜ＸＤＯ５の書き込み先の一致数をデータ入力経路毎に特定する。駆動力調整回路６０は、データＸＤＯ０〜ＸＤＯ５の書き込み先の一致数に応じて、データＸＤＯ０〜ＸＤＯ５を対応するデータ入力経路ｄ１〜ｄ５に出力する際の駆動力を調整する。
【００４４】
図７は、駆動力調整回路６０の構成を示す回路ブロック図である。駆動力調整回路６０は、データ入力経路ｄ０〜ｄ５にそれぞれ対応する６つのドライバ回路６００〜６０５を含んで構成されている。ドライバ回路６００〜６０５は、それぞれ、データ入力端Ｄ、信号入力端Ｓおよびデータ出力端ＤＯを有する。ドライバ回路６００〜６０５のデータ入力端Ｄには、データ変換回路５０から出力されるデータ変換処理後のデータＸＤＯ０〜ＸＤＯ５がそれぞれ入力される。ドライバ回路６００〜６０５の信号入力端Ｓには、第２の判定信号MATCH0[4:0]〜MATCH5[4:0]がそれぞれ入力される。
【００４５】
例えば、ドライバ回路６００は、第２の判定信号MATCH0[4:0]に基づいて、自身に入力されるデータＸＤＯ０と、他のドライバ回路６０１〜６０５にそれぞれ入力されるデータＸＤＯ１〜ＸＤＯ５との間での書き込み先の一致数を特定する。ドライバ回路６００は、特定した書き込み先の一致数に応じて、自身に入力されたデータＸＤＯをＸＤ０として対応するデータ入力経路ｄ０に出力する際の駆動力を調整する。ドライバ回路６００は、書き込み先の一致数が多い程、小さい駆動力によってデータＸＤＯを出力する。換言すれば、ドライバ回路６００は、書き込み先の一致数の増加に伴って低下する駆動力によってデータＸＤ０を出力する。
【００４６】
同様に、ドライバ回路６０１〜６０５は、それぞれ、第２の判定信号MATCH1[4:0]〜MATCH5[4:0]に基づいて、自身に入力されるデータＸＤＯ１〜ＸＤＯ５と他のドライバ回路に入力されるデータとの間での書き込み先の一致数を特定する。ドライバ回路６０１〜６０５は、特定した書き込み先の一致数に応じて、自身に入力されたデータＸＤＯ１〜ＸＤＯ５をそれぞれＸＤ１〜ＸＤ５として対応するデータ入力経路ｄ１〜ｄ５に出力する際の駆動力をそれぞれ調整する。ドライバ回路６０１〜６０５は、書き込み先の一致数が多い程、小さい駆動力によってデータＸＤ１〜ＸＤ５をそれぞれ出力する。換言すれば、ドライバ回路６０１〜６０５は、書き込み先の一致数の増加に伴って低下する駆動力によってデータＸＤ１〜ＸＤ５をそれぞれ出力する。
【００４７】
図８は、ドライバ回路６００のより詳細な構成を示す回路図である。ドライバ回路６００は、入力段インバータ回路１１０、６つの出力段インバータ回路１００〜１０５およびＮＯＴ回路１２０を含んで構成されている。入力段インバータ回路１１０の入力端は、ドライバ回路６００のデータ入力端Ｄに接続されており、データＸＤＯ０が入力される。入力段インバータ回路１１０の出力端は、出力段インバータ回路１００〜１０５の各々の入力端に接続されている。出力段インバータ回路１００〜１０５の各々の出力端は、ドライバ回路６００の出力端ＤＯに接続されている。すなわち、出力段インバータ回路１００〜１０５の各々は、互いに並列接続されている。
【００４８】
出力段インバータ回路１００〜１０５は、それぞれ、直列接続されたｐチャネル型のトランジスタＱ１、Ｑ２およびｎチャネル型のトランジスタＱ３、Ｑ４を含んで構成されている。
【００４９】
出力段インバータ回路１００〜１０４の各々において、トランジスタＱ１のゲートは信号入力端Ｓに接続され、トランジスタＱ４のゲートはＮＯＴ回路１２０の出力端に接続されている。一方、出力段インバータ回路１０５において、トランジスタＱ１のゲートは接地電位に接続され、トランジスタＱ４のゲートは電源電位に接続されている。
【００５０】
出力段インバータ回路１００において、トランジスタＱ１のゲートには第２の判定信号MATCH0[0]が入力され、トランジスタＱ４のゲートには第２の判定信号MATCH0[0]の論理反転信号が入力される。出力段インバータ回路１００は、第２の判定信号MATCH0[0]がローレベルを呈する場合に有効化され、インバータとしての機能を発揮し、第２の判定信号MATCH0[0]がハイレベルを呈する場合に無効化され、停止状態となる。
【００５１】
同様に、出力段インバータ回路１０１〜１０４において、トランジスタＱ１のゲートには第２の判定信号MATCH0[1]〜MTCH0[4]がそれぞれ入力され、トランジスタＱ４のゲートには第２の判定信号MATCH0[1]〜MATCH0[4]の論理反転信号がそれぞれ入力される。出力段インバータ回路１０１〜１０４は、それぞれ、第２の判定信号MATCH0[1]〜MATCH0[4]がローレベルを呈する場合に有効化され、インバータとしての機能を発揮し、第２の判定信号MATCH0[1]〜MATCH0[4]がハイレベルを呈する場合に無効化され、停止状態となる。一方、出力段インバータ回路１０５は、電源投入により有効化される。
【００５２】
ドライバ回路６００は、出力段インバータ回路１００〜１０５のうち有効化されたものによって、データ入力端Ｄに入力されたデータＸＤＯをＸＤ０として出力端ＤＯから出力し、これをデータ入力経路ｄ０に供給する。ドライバ回路６００において、有効化された出力段インバータの数が多い程、データ出力時の駆動力が大きくなる。ドライバ回路６００がデータ入力経路ｄ０にデータＸＤ０を出力する際の駆動力は、第２の判定信号MATCH0[4:0]によって定められる。
【００５３】
ドライバ回路６００は、入力されるデータＸＤＯ０の書き込み先が、他のデータＸＤＯ１〜ＸＤＯ５の書き込み先と一致する場合の一致数が増加する程、有効化させる出力段インバータの数を減少させ、データ出力時の駆動力を低下させる。例えば、書き込み先が、データＸＤＯ０と一致する他のデータが存在しない場合（書き込み先の一致数が０である場合）、ドライバ回路６００は、６つの出力段インバータ回路１００〜１０５の全てを有効化させる。この場合、ドライバ回路６００の駆動力は最大となる。また、例えば、データＸＤＯ０およびデータＸＤＯ１の書き込み先が一致する場合（書き込み先の一致数が１である場合）、ドライバ回路６００は有効化させる出力段インバータの数を５つとし、駆動力を上記の場合よりも低下させる。また、例えば、データＸＤＯ０、ＸＤＯ１およびＸＤＯ２の書き込み先が一致する場合（書き込み先の一致数が２である場合）、ドライバ回路６００は有効化させる出力段インバータの数を４つとし、駆動力を更に低下させる。
【００５４】
ドライバ回路６０１〜６０５は、ドライバ回路６００と同じ構成を有する。ドライバ回路６０１〜６０５が、それぞれ、データ入力経路ｄ１〜ｄ５にデータＸＤ１〜ＸＤ５を出力する際の駆動力は、対応する第２の判定信号MATCH1[4:0]〜MATCH5[4:0]によってそれぞれ定められる。ドライバ回路６０１〜６０５は、それぞれ、入力されるデータＸＤＯ１〜ＸＤＯ５の書き込み先と他のデータの書き込み先との一致数が増加する程、有効化させる出力段インバータの数を減少させ、データ出力時の駆動力を低下させる。
【００５５】
以下に、メモリ回路１の動作について説明する。以下では、データ入力経路ｄ０およびｄ１に供給される各データの書き込み先が、共にマルチポートメモリセル１０＜０＞であり、データ入力経路ｄ２〜ｄ５に供給される各データの書き込み先がマルチポートメモリセル１０＜０＞以外である場合を例に説明する。なお、データ入力経路ｄ２〜ｄ５に供給される各データの書き込み先は、互いに一致しないものとする。この場合、データＤ０の書き込み先がマルチポートメモリセル１０＜０＞であることがアドレス信号WA0[2:0]によって示され、データＤ１の書き込み先がマルチポートメモリセル１０＜０＞であることがアドレス信号WA1[2:0]によって示される。
【００５６】
アドレスデコーダ２０は、アドレス信号WA0[2:0]〜WA5[2:0]によってデータＤ０〜Ｄ５のそれぞれの書き込み先を特定し、クロックイネーブル信号CE0[7:0]〜CE5[7:0]を生成し、これらをクロックドライバ３０＜０＞〜３０＜７＞に供給する。
【００５７】
クロックドライバ３０＜０＞に供給されるクロックイネーブル信号CE0[0]〜CE5[0]のうち、CE0[0]およびCE1[0]はハイレベルを呈し、CE2[0]〜CE5[0]はローレベルを呈する。クロックドライバ３０＜０＞は、クロックイネーブル信号CE0[0]〜CE5[0]に基づいて、クロック入力経路ｃ０にクロック信号ＸＣＫ０を供給するとともにクロック入力経路ｃ１にクロック信号ＸＣＫ１を供給する。クロックドライバ３０＜０＞は、他のクロック入力経路ｃ２〜ｃ５にはクロック信号を供給しない。マルチポートメモリセル１０＜０＞は、クロック入力経路ｃ０およびｃ１にそれぞれクロック信号ＸＣＫ０およびＸＣＫ１が供給されることにより、トランジスタＴ１０、Ｔ１１、Ｔ２０、Ｔ２１（図１参照）がオン状態となる。これにより、マルチポートメモリセル１０＜０＞において、データ入力経路ｄ０およびｄ１の各々を介してメモリセル１１にデータが同時に供給されることとなる。
【００５８】
同時書き込み判定回路４０は、アドレス信号WA0[2:0]〜WA5[2:0]に基づいて、データ入力経路ｄ０に対応するデータＤ０の書き込み先とデータ入力経路ｄ１に対応するデータＤ１の書き込み先が一致していることを特定する。同時書き込み判定回路４０は、データＤ０の書き込み先とデータＤ１の書き込み先が一致していることを示す第１の判定信号MATCH[0:5]を生成し、これをデータ変換回路５０に供給する。
【００５９】
また、同時書き込み判定回路４０はアドレス信号WA0[2:0]〜WA5[2:0]に基づいて、データ入力経路ｄ０およびｄ１にそれぞれ供給されるデータの書き込み先と、書き込み先が一致するデータの数（一致数）がそれぞれ１であることを特定する。同時書き込み判定回路４０は、データ入力経路毎のデータの書き込み先の一致数を示す第２の判定信号MATCH0[4:0]〜MATCH5[4:0]を生成し、これを駆動力調整回路６０に供給する。
【００６０】
データ変換回路５０は、第１の判定信号MATCH[0:5]に基づいて、データ入力経路ｄ０に対応するデータＤ０の書き込み先とデータ入力経路ｄ１に対応するデータＤ１の書き込み先が一致していることを特定する。データ変換回路５０は、入力されたデータＤ０〜Ｄ５のうち、書き込み先が一致するデータＤ０およびＤ１の値をそれぞれ固定値“１”に変換し、これらをそれぞれデータＸＤＯ０、ＸＤＯ１として出力する。データ変換回路５０は、他のデータＤ２〜Ｄ５についてはそれぞれ論理反転させ、データＸＤＯ２〜ＸＤＯ５として出力する。
【００６１】
駆動力調整回路６０は、第２の判定信号MATCH0[4:0]〜MATCH5[4:0]に基づいて、データ入力経路ｄ０に供給されるデータの書き込み先についての一致数が１であり、データ入力経路ｄ１に供給されるデータの書き込み先についての一致数が１であることを特定する。
【００６２】
駆動力調整回路６０は、第２の判定信号MATCH0[4:0]に基づいて、ドライバ回路６００を構成する６つの出力段インバータ回路１００〜１０５のうちの５つを有効化させる。ドライバ回路６００は、有効化された出力段インバータ回路の各々によってデータＸＤＯ０をＸＤ０として出力し、これをデータ入力経路ｄ０に供給する。
【００６３】
駆動力調整回路６０は、第２の判定信号MATCH1[4:0]に基づいて、ドライバ回路６０１を構成する６つの出力段インバータ回路１００〜１０５のうちの５つを有効化させる。ドライバ回路６０１は、有効化された出力段インバータ回路の各々によってデータＸＤＯ１をＸＤ１として出力し、これをデータ入力経路ｄ１に供給する。
【００６４】
駆動力調整回路６０は、第２の判定信号MATCH2[4:0]〜MATCH5[4:0]に基づいて、ドライバ回路６０２〜６０５をそれぞれ構成する６つの出力段インバータ回路１００〜１０５の全てを有効化させる。ドライバ回路６０２〜６０５は、それぞれ、有効化された出力段インバータ回路の各々によってデータＸＤＯ２〜ＸＤＯ５をそれぞれＸＤ２〜ＸＤ５として出力し、これらをデータ入力経路ｄ２〜ｄ５にそれぞれ供給する。データ入力経路ｄ０に供給された固定値“１”に変換されたデータＸＤ０およびデータ入力経路ｄ１に供給された固定値“１”に変換されたデータＸＤ１は、それぞれ、マルチポートメモリセル１０＜０＞のメモリセル１１に同時に書き込まれる。
【００６５】
マルチポートメモリセル１０＜０＞に同時に供給されるデータＸＤ０およびＸＤ１が同一値に変換されることで、バスファイトの発生を回避することができる。また、マルチポートメモリセル１０＜０＞においては、複数のデータＸＤ０およびＸＤ１による同時書き込みがなされることにより、単一のデータによる通常書き込みの場合と比較してデータ書き込み時の駆動力が増大する。これは、マルチポートメモリセル１０＜０＞を構成するトランジスタＴ１０〜Ｔ１５、Ｔ２０〜Ｔ２５のうち、オン状態となるトランジスタの数が、通常書き込み時よりも同時書き込み時の方が多くなるからである。これにより、同時書き込み時には、メモリセル１１におけるデータ更新のタイミングが、通常書き込み時よりも早まる方向にずれるおそれがある。開示の技術の実施形態に係るメモリ回路１によれば、駆動力調整回路６０が、データの書き込み先の一致数（以下、同時書き込み数ともいう）の増加に伴って低下する駆動力によって同時書き込みを行うデータを出力するので、同時書き込みによる駆動力の増大が抑制される。これにより、同時書き込み時と通常書き込み時との間でのメモリセル１１のデータ更新タイミングのずれを抑制することができる。
【００６６】
図９は、比較例に係るメモリ回路１Ｘの構成を示す回路ブロック図である。比較例に係るメモリ回路１Ｘは、開示の技術の実施形態に係るメモリ回路１が備える駆動力調整回路６０を有しない。従って、比較例に係るメモリ回路１Ｘによれば、同一のマルチポートメモリセルに複数のデータが同時に書き込まれる場合の同時書き込み数の増加に伴って、データ書き込み時の駆動力はリニアに増大する。
【００６７】
ここで、図１０は、プロセッサ内部において実施されるパイプライン処理の一例を示す図である。図１０には、パイプライン処理の流れに沿って並べられたマルチポートメモリセル１０＜０＞、演算器２００、マルチポートメモリセル１０＜１＞および演算器２０１が例示されている。
【００６８】
図１１Ａは、図１０に示すパイプライン処理において、比較例に係るメモリ回路１Ｘのマルチポートメモリセル１０＜０＞に単一のデータによる通常書き込みがなされた場合の各要素の動作タイミングの一例を示すタイムチャートである。図１１Ａに示す各要素の動作タイミングは、設計時の想定に従う適正なタイミングであるものとする。
【００６９】
時刻ｔ１においてクロック信号ＸＣＫがハイレベルに遷移すると、前段のマルチポートメモリセル１０＜０＞は自身に入力されたデータによってデータ書き込みを行い、出力データＭ１を更新させる。演算器２００は、マルチポートメモリセル１０＜０＞の出力データＭ１を用いて所定の演算を行い、クロック信号ＸＣＸがローレベルに遷移する時刻ｔ２よりも後のタイミングで演算結果ＤＩを出力する。後段のマルチポートメモリセル１０＜１＞は、時刻ｔ３においてクロック信号ＸＣＸがハイレベルに遷移することで、演算結果ＤＩによってデータ書き込みを行い、出力データＭ２を更新させる。演算器２０１は、マルチポートメモリセル１０＜１＞の出力データＭ２を用いて所定の演算を行う。
【００７０】
図１１Ｂは、図１０に示すパイプライン処理において、比較例に係るメモリ回路１Ｘのマルチポートメモリセル１０＜０＞に複数のデータによる同時書き込みがなされた場合の各要素の動作タイミングの一例を示すタイムチャートである。比較例に係るメモリ回路１Ｘにおいてマルチポートメモリセル１０＜０＞に同時書き込みが行われると、データ書き込み時の駆動力の増大により出力データＭ１の更新タイミングが通常書き込み時（図１１Ａ参照）と比較して早まるおそれがある。これに伴って、演算器２００による演算結果ＤＩの出力タイミングが、クロック信号ＸＣＫがローレベルに遷移する時刻ｔ２よりも前になると、後段のマルチポートメモリセル１０＜１＞の出力データＭ２の更新タイミングも時刻ｔ２よりも前となるおそれがある。この場合、出力データＭ２の更新タイミングが正規のタイミングに対して大幅にずれ、演算器２０１は、誤ったデータで演算を行うこととなる。
【００７１】
このように、比較例に係るメモリ回路１Ｘによれば、マルチポートメモリセルに複数のデータによる同時書き込みがなされると、単一のデータによる通常書き込みの場合と比較して駆動力が増大し、データ更新のタイミングが早まる方向にずれるおそれがある。従って、比較例に係るメモリ回路１Ｘのマルチポートメモリセルをパイプライン処理に組み込んだ場合には、正規のタイミングに従うパイプライン処理がなされないおそれがある。
【００７２】
一方、開示の技術の実施形態に係るメモリ回路１によれば、マルチポートメモリセルに複数のデータによる同時書き込みがなされる場合でも、駆動力調整回路６０によって駆動力の増大が抑制されるので、データ更新のタイミングのずれを抑制することができる。
【００７３】
図１２は、開示の技術の実施形態に係るメモリ回路１および比較例に係るメモリ回路１Ｘのそれぞれについて、マルチポートメモリセルにおける同時書き込み数と、データ書き込み時の駆動力との関係を示したグラフである。図１２に示すグラフにおいて、横軸はマルチポートメモリセルにおける同時書き込み数を示し、縦軸は駆動力比を示す。駆動力比とは、単一のデータによる通常書き込み時（同時書き込み数０）の駆動力Ｆ１に対する各同時書き込み数における駆動力Ｆ２の比率（Ｆ２／Ｆ１）を意味する。開示の技術の実施形態に係るメモリ回路１においては、駆動力調整回路６０を構成するドライバ回路６００〜６０５において、データ書き込み時に有効化されるインバータ回路の総数が駆動力に相当するものとする。
【００７４】
図１２に示すように、比較例に係るメモリ回路１Ｘによれば、同時書き込み数の増加に伴って駆動力比はリニアに増大する。比較例に係るメモリ回路１Ｘによれば、例えば、同時書き込み数が３の場合、駆動力は通常書き込み時の４倍となり、同時書き込み数が５の場合、駆動力は通常書き込み時の６倍となる。一方、開示の技術の実施形態に係るメモリ回路１によれば、駆動力調整回路６０を構成するドライバ回路６００〜６０５において、同時書き込み数の増加に伴って有効化されるインバータ回路の数が減少する。従って、同時書き込み数の増加に伴って駆動力比がリニアに増大することを防止できる。開示の技術の実施形態に係るメモリ回路１によれば、例えば、同時書き込み数が３の場合の駆動力を通常書き込み時の２倍に抑えることができ、同時書き込み数が５の場合の駆動力を通常書き込み時と同等（１倍）にすることができる。
【００７５】
図１３は、開示の技術の実施形態に係るメモリ回路１によって実現されるメモリ回路の制御方法の一例を示すフローチャートである。
【００７６】
ステップＳ１において、注目データ入力経路ｄｎの経路番号ｎを初期値である０にセットする（ｎ＝０）。
【００７７】
ステップＳ２において、同時書き込み判定回路４０が、アドレス信号WA0[2:0]〜WA5[2:0]に基づいて、注目データ入力経路ｄｎに供給されるデータの書き込み先と、書き込み先が一致するデータの有無を判定する。同時書き込み判定回路４０は、注目データ入力経路ｄｎに供給されるデータの書き込み先と、書き込み先が一致するデータの有無を示す第１の判定信号MATCH[n]を生成する。また、同時書き込み判定回路４０は、注目データ入力経路ｄｎに供給されるデータの書き込み先が、他のデータ入力経路に供給されるデータの書き込み先と一致する場合の一致数を示す第２の判定信号MATCHn[4:0]を生成する。注目データ入力経路ｄｎに供給されるデータの書き込み先と、書き込み先が一致するデータが存在する場合には処理はステップＳ３に移行され、存在しない場合には処理はステップＳ４に移行される。
【００７８】
ステップＳ３において、データ変換回路５０は、第１の判定信号MATCH[n]に基づいて、注目データ入力経路ｄｎに供給されるデータを固定値に変換する。
【００７９】
ステップＳ４において、駆動力調整回路６０は、第２の判定信号MATCHn[4:0]に基づいて、注目データ入力経路ｄｎに供給されるデータの書き込み先と、書き込み先が一致するデータの数（一致数）を特定する。駆動力調整回路６０は、特定した一致数に応じて、注目データ入力経路ｄｎにデータを出力する際の駆動力を調整する。
【００８０】
ステップＳ５において、注目データ入力経路ｄｎの経路番号ｎを１つインクリメントする。
【００８１】
ステップＳ６において、注目データ入力経路ｄｎの経路番号ｎが最終値ｎＭＡＸ（メモリ回路１の場合には、最終値ｎＭＡＸ=５）以下であるか否かを判定する。注目データ入力経路ｄｎの経路番号ｎが最終値ｎＭＡＸ以下である場合には、処理はステップＳ２に戻され、注目データ入力経路ｄｎの経路番号ｎが最終値ｎＭＡＸよりも大となるまで、ステップＳ２〜Ｓ５の処理が繰り返し実行される。これにより、データ入力経路ｄ０〜ｄ５の各々について、各データ入力経路に供給されるデータの変換処理がなれるとともに、各データ入力経路にデータを出力する際の駆動力が調整される。
【００８２】
ステップＳ７において、駆動力調整回路６０は、調整された駆動力により、データ入力経路の各々にデータを出力する。これにより、アドレス信号WA0[2:0]〜WA5[2:0]によって指定されたマルチポートメモリセルに各データが書き込まれる。
【００８３】
図１４は、プロセッサ内に設けられたマルチポートメモリセルの使用例を示す図である。プロセッサ内には、複数のマルチポートメモリセルからなるマルチポートメモリセル群１０００、複数の演算器２０１〜２０３および複数のラッチ回路７０１〜７０９が設けられている。なお、図１４では各要素間でのデータの流れが矢印で示され、アドレスの流れは図示が省略されている。
【００８４】
図１４には、マルチポートメモリセル群１０００から読み出したデータを演算器２０１〜２０３に同時に供給し、演算器２０１〜２０３による演算結果をマルチポートメモリセル群１０００に書き込む様子が示されている。すなわち、マルチポートメモリセル群１０００をプロセッサ内で実施されるパイプライン処理に組み込んだ場合の態様が例示されている。なお、マルチポートメモリセル群１０００から読み出されるデータは、例えば別演算器による演算結果であってもよい。
【００８５】
ラッチ回路７０１〜７０９は、マルチポートメモリセル群１０００と演算器２０１〜２０３との間に介在し、マルチポートメモリセル群１０００と演算器２０１〜２０３との間でやりとりされるデータを一時的に保持する。マルチポートメモリセル群１０００におけるデータの読み出しおよび書き込みは、図示しないクロック信号に同期して行われる。各処理サイクルにおいて、マルチポートメモリセル群１０００に対する書き込みアドレスおよび読み出しアドレスを独立に指定することによって、複数の演算器２０１〜２０３に同時且つ連続的に演算を行わせることができる。
【００８６】
マルチポートメモリセルを、図１４に例示するような態様で使用する場合、マルチポートメモリセルにおいて、同時書き込みに起因してデータ更新のタイミングにずれが生じると、想定したタイミングで演算器にデータが入力されない場合がある。この場合、演算器は、誤ったデータで演算を行うこととなり、システムが誤動作を起こしてしまうことがある。これを回避するために、マルチポートメモリセルにおけるデータ更新のタイミングのずれを考慮してタイミング設計を行うことも考えられるが、タイミングのずれが大きくなってしまう場合ではタイミング設計が困難になる。
【００８７】
開示の技術の実施形態に係るメモリ回路１によれば、駆動力調整回路６０がメモリセル１１に同時に供給されるデータの数（同時書き込み数）の増加に伴って低下する駆動力によってメモリセル１１に同時に供給されるデータの各々を、対応するデータ入力経路の各々に出力する。これにより、メモリセル１１のデータ更新のタイミングのずれを抑制することが可能となる。従って、パイプライン処理におけるタイミング設計が容易となる。
【００８８】
［第２の実施形態］
図１５は、開示の技術の第２の実施形態に係るマルチポートメモリセル１０ａの構成を示す図である。第２の実施形態に係るマルチポートメモリセル１０ａは、可変容量回路１４を更に含む点が、第１の実施形態に係るマルチポートメモリセル１０（図１参照）と異なる。可変容量回路１４は、メモリセル１１のノードｎ１とノードｎ２との間に設けられている。すなわち、可変容量回路１４はメモリセル１１に並列接続されている。可変容量回路１４は、入力端１５に入力される、同時書き込み判定回路４０からの第１の判定信号MATCH[0:5]によって静電容量の大きさを変化させることが可能である。
【００８９】
図１６は、開示の技術の第２の実施形態に係るメモリ回路１Ａの構成を示す回路ブロック図である。メモリ回路１Ａは、一例として、８つのマルチポートメモリセル１０ａ＜０＞Ａ、１０ａ＜１＞、・・・、１０ａ＜７＞を備える。マルチポートメモリセル１０ａ＜０＞〜１０ａ＜７＞は、それぞれ、図１５に示すマルチポートメモリセル１０ａと同じ構成であり、それぞれ、可変容量回路１４を備えている。メモリ回路１Ａは、第１の実施形態に係るメモリ回路１（図３参照）が備える駆動力調整回路６０を有していない。
【００９０】
図１７は、可変容量回路１４の構成を示す回路図である。可変容量回路１４は、メモリセル１１のノードｎ１に一端がそれぞれ接続された複数のトランスファーゲート８０１〜８０６と、トランスファーゲート８０１〜８０６の他端に入力端がそれぞれ接続された複数のＮＯＴ回路８２１〜８２６とを備える。また、可変容量回路１４は、メモリセル１１のノードｎ２に一端がそれぞれ接続された複数のトランスファーゲート８１１〜８１６と、トランスファーゲート８１１〜８１６の他端に入力端がそれぞれ接続された複数のＮＯＴ回路８３１〜８３６とを備える。トランスファーゲート８０１〜８０６、８１１〜８１６は、それぞれｎチャネル型トランジスタとｐチャネル型トランジスタとを組み合わせて構成されている。
【００９１】
トランスファーゲート８０１および８１１において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE0が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE0をＮＯＴ回路８４１により論理反転した信号が入力される。トランスファーゲート８０１および８１１は、クロックイネーブル信号CE0がハイレベルを呈する場合にオン状態となる。
【００９２】
トランスファーゲート８０２および８１２において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE1が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE1をＮＯＴ回路８４２により論理反転した信号が入力される。トランスファーゲート８０２および８１２は、クロックイネーブル信号CE1がハイレベルを呈する場合にオン状態となる。
【００９３】
トランスファーゲート８０３および８１３において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE2が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE2をＮＯＴ回路８４３により論理反転した信号が入力される。トランスファーゲート８０３および８１３は、クロックイネーブル信号CE2がハイレベルを呈する場合にオン状態となる。
【００９４】
トランスファーゲート８０４および８１４において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE3が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE3をＮＯＴ回路８４４により論理反転した信号が入力される。トランスファーゲート８０４および８１４は、クロックイネーブル信号CE3がハイレベルを呈する場合にオン状態となる。
【００９５】
トランスファーゲート８０５および８１５において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE4が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE4をＮＯＴ回路８４５により論理反転した信号が入力される。トランスファーゲート８０５および８１５は、クロックイネーブル信号CE4がハイレベルを呈する場合にオン状態となる。
【００９６】
トランスファーゲート８０６および８１６において、ｎチャネル型トランジスタのゲートにはクロックイネーブル信号CE5が入力され、ｐチャネル型トランジスタのゲートにはクロックイネーブル信号CE5をＮＯＴ回路８４６により論理反転した信号が入力される。トランスファーゲート８０６および８１６は、クロックイネーブル信号CE5がハイレベルを呈する場合にオン状態となる。
【００９７】
可変容量回路１４は、オン状態となるトランスファーゲートの数が増加する程、静電容量が大きくなる。可変容量回路１４の静電容量を、クロックイネーブル信号CE0〜CE5によって制御することで、メモリセル１１に同時に供給されるデータの数（同時書き込み数）が増加する程、可変容量回路１４の静電容量が大きくなる。これにより、同時書き込みに起因するメモリセル１１のデータ更新のタイミングのずれを抑制することが可能となる。
【００９８】
なお、メモリ回路１および１Ａは、開示の技術におけるメモリ回路の一例である。データ入力経路ｄ０〜ｄ５は、開示の技術におけるデータ入力経路の一例である。マルチポートメモリセル１０＜０＞のメモリセル１１は、開示の技術におけるメモリセルの一例である。駆動力調整回路６０は、開示の技術における駆動力調整回路の一例である。ドライバ回路６００〜６０１は、開示の技術におけるドライバ回路の一例である。出力段インバータ回路１００〜１０５は、開示の技術におけるインバータ回路の一例である。データ変換回路５０は、開示の技術におけるデータ変換回路の一例である。同時書き込み判定回路４０は、開示の技術における判定回路の一例である。トランジスタＴ１０〜Ｔ１５、Ｔ２０〜Ｔ２５は、開示の技術におけるトランジスタの一例である。可変容量回路１４は、開示の技術における可変容量回路の一例である。トランスファーゲート８０１〜８０６は、開示の技術における第１ノード側トランスファーゲートの一例である。トランスファーゲート８１１〜８１６は、開示の技術における第２ノード側トランスファーゲートの一例である。ＮＯＴ回路８２１〜８２６は、開示の技術における第１ノード側ＮＯＴ回路の一例である。ＮＯＴ回路８３１〜８３６は、開示の技術における第２ノード側ＮＯＴ回路の一例である。
【００９９】
以上の第１および第２の実施形態に関し、更に以下の付記を開示する。
【０１００】
（付記１）
複数のデータ入力経路を有するメモリセルと、
前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によって前記メモリセルに同時に供給されるデータの各々を、対応するデータ入力経路の各々に出力する駆動力調整回路と、
を含むメモリ回路。
【０１０１】
（付記２）
前記駆動力調整回路は、前記複数のデータ入力経路の各々に接続された複数のドライバ回路を含み、
前記複数のドライバ回路の各々は、互いに並列接続され且つ出力端が対応するデータ入力経路に接続された複数のインバータ回路を含み、
前記複数のインバータ回路のうち有効化されるインバータ回路の数によって前記駆動力を調整する
付記１に記載のメモリ回路。
【０１０２】
（付記３）
前記複数のデータ入力経路のいずれか２つ以上を介して前記メモリセルに同時に供給される複数のデータの各々が同一値となるようにデータ変換処理を行うデータ変換回路を更に含む
付記１または付記２に記載のメモリ回路。
【０１０３】
（付記４）
前記メモリセルを含む複数のメモリセルのうち、データの書き込み先となるメモリセルを、前記複数のデータ入力経路の各々に供給されるデータ毎に指定するアドレス信号に基づいて、前記複数のデータ入力経路のうちの１つに供給されるデータの書き込み先が他のデータ入力経路に供給されるデータの書き込み先と一致する場合の一致数を、前記複数のデータ入力経路の各々について示す判定信号を生成する判定回路を更に含み、
前記駆動力調整回路は、前記判定信号に基づいて前記駆動力を調整する
付記１から付記３のいずれか１つに記載のメモリ回路。
【０１０４】
（付記５）
前記複数のデータ入力経路の各々に接続され、前記メモリセルにデータを書き込む場合にオン状態とされる複数のトランジスタと、
前記複数のトランジスタのうち、前記メモリセルを書き込み先とするデータが供給されるデータ入力経路に接続されたトランジスタのゲートにクロック信号を供給するクロックドライバと、
を更に含む付記１から付記４のいずれか１つに記載のメモリ回路。
【０１０５】
（付記６）
複数のデータ入力経路を有するメモリセルと、
前記メモリセルに接続され、前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って静電容量が増加する可変容量回路と、
を含むメモリ回路。
【０１０６】
（付記７）
前記可変容量回路は、
前記メモリセルの第１ノードに各々の一端が接続された複数の第１ノード側トランスファーゲートと、
前記複数の第１ノード側トランスファーゲートの各々の他端に各々の入力端が接続された複数の第１ノード側ＮＯＴ回路と、
前記メモリセルの第２ノードに各々の一端が接続された複数の第２ノード側トランスファーゲートと、
前記複数の第２ノード側トランスファーゲートの各々の他端に各々の入力端が接続された複数の第２ノード側ＮＯＴ回路と、
を含み、
前記複数の第１ノード側トランスファーゲートおよび前記複数の第２ノード側トランスファーゲートのうち、オン状態とされるトランスファーゲートの数によって静電容量を変化させる
付記６に記載のメモリ回路。
【０１０７】
（付記８）
前記複数のデータ入力経路のいずれか２つ以上を介して前記メモリセルに同時に供給される複数のデータの各々が同一値となるようにデータ変換処理を行うデータ変換回路を更に含む
付記６または付記７に記載のメモリ回路。
【０１０８】
（付記９）
前記メモリセルを含む複数のメモリセルのうち、データの書き込み先となるメモリセルを、前記複数のデータ入力経路の各々に供給されるデータ毎に指定するアドレス信号に基づいて、前記複数のデータ入力経路のうちの１つに供給されるデータの書き込み先と、他のデータ入力経路に供給されるデータの書き込み先とが一致しているか否かを、前記複数のデータ入力経路の各々について示す判定信号を生成する判定回路を更に含み、
前記可変容量回路は、クロックイネーブル信号に基づいて静電容量を変化させる
付記６から付記８のいずれか１つに記載のメモリ回路。
【０１０９】
（付記１０）
前記複数のデータ入力経路の各々に接続され、前記メモリセルにデータを書き込む場合にオン状態とされる複数のトランジスタと、
前記複数のトランジスタのうち、前記メモリセルを書き込み先とするデータが供給されるデータ入力経路に接続されたトランジスタのゲートにクロック信号を供給するクロックドライバと、
を更に含む付記６から付記９のいずれか１つに記載のメモリ回路。
【０１１０】
（付記１１）
複数のデータ入力経路を有するメモリセルを含むメモリ回路の制御方法であって、
前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って低下する駆動力によって前記メモリセルに同時に供給されるデータの各々を対応するデータ入力経路に出力する
メモリ回路の制御方法。
【０１１１】
（付記１２）
複数のデータ入力経路を有するメモリセルを含むメモリ回路の制御方法であって、
前記複数のデータ入力経路のうちのいずれか２つ以上を介して前記メモリセルに同時に供給されるデータの数の増加に伴って前記メモリセルに接続された可変容量回路の静電容量を増加させる
メモリ回路の制御方法。
【符号の説明】
【０１１２】
１、１Ａ  メモリ回路
１０、１０＜０＞〜１０＜７＞  マルチポートメモリセル
１０ａ、１０ａ＜０＞〜１０ａ＜７＞  マルチポートメモリセル
１１  メモリセル
２０  アドレスデコーダ
３０＜０＞〜３０＜７＞  クロックドライバ
４０  同時書き込み判定回路
５０  データ変換回路
６０  駆動力調整回路
１００〜１０５  出力段インバータ回路
６００〜６０５  ドライバ回路
ｃ０〜ｃ５  クロック入力経路
ｄ０〜ｄ５  データ入力経路
Ｔ１０〜Ｔ１５、Ｔ２０〜Ｔ２５  トランジスタ
【図１】
2018018566.tif 000003
【図２】
2018018566.tif 000004
【図３】
2018018566.tif 000005
【図４】
2018018566.tif 000006
【図５】
2018018566.tif 000007
【図６】
2018018566.tif 000008
【図７】
2018018566.tif 000009
【図８】
2018018566.tif 000010
【図９】
2018018566.tif 000011
【図１０】
2018018566.tif 000012
【図１１Ａ】
2018018566.tif 000013
【図１１Ｂ】
2018018566.tif 000014
【図１２】
2018018566.tif 000015
【図１３】
2018018566.tif 000016
【図１４】
2018018566.tif 000017
【図１５】
2018018566.tif 000018
【図１６】
2018018566.tif 000019
【図１７】
2018018566.tif 000020