(57)【要約】【課題】低消費電力のレジスタファイルを提供する。【解決手段】各レジスタＦｉに配設される入力ポート選択部１３０は、入力ポートに対応した数の論理積回路と、論理積回路の出力の論理和をとる論理和回路とで構成される。入力ポート選択部１３０の各論路積回路は、対応する書き込みポートＷＲ＿ＤＡＴＡｊのデータと、そのデータを記憶部１４０に入力するか否かを指定する選択信号Ｓｉｊとを受信している。各論理積回路は、更に、当該論理積回路に対応する書き込みポートＷＲ＿ＤＡＴＡｊよりも優先順位が高く設定された書き込みポートＷＲ＿ＤＡＴＡｊのデータを書き込むか否かを指定する選択信号Ｓｉｊの反転信号を受信し、それら受信した信号の論理積を論理和回路に出力する。【選択図】　　図１
2004102799.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力ポートと、複数のレジスタとを備え、各入力ポートから入力するデータを、書き込みアドレスで指定されたレジスタに書き込むレジスタファイルであって、
前記レジスタのそれぞれは、前記入力ポートに対応する論理積回路と該論理積回路の出力の論理和をとる論理和回路とを有する入力ポート選択部と、該入力ポート選択部の出力を記憶する記憶部とを備え、
前記論理積回路のそれぞれは、対応する入力ポートから入力する書き込みデータを書き込むか否かを指定する書き込み指令信号を受信しており、前記書き込みデータと、前記書き込み指令信号と、当該論理積回路に対応する入力ポートよりも優先順位が高い入力ポートに対応する論理積回路に入力する書き込み指令信号の反転信号との論理積をとることを特徴とするレジスタファイル。
【請求項２】
複数の出力ポートと、該出力ポートに対応して配設される読み出しデータ選択回路とを更に備え、該読み出しデータ選択回路が、各レジスタに対応して配設され各レジスタが記憶する記憶データと指定されたレジスタに対応してアクティブになるアクティブ信号との論理積をとる論理積回路と、該論理積回路の出力の論理和をとる論理和回路とを備える、請求項１に記載のレジスタファイル。
【請求項３】
前記記憶部は、前記論理和回路の出力をラッチするマスタラッチと、該マスタラッチに後続するスレーブラッチとを有する同期型のＤ型フリップフロップを備える、請求項１又は２に記載のレジスタファイル。
【請求項４】
前記書き込み指令信号が、入力ポート毎に指定される書き込みアドレスをレジスタ数に対応した数にデコードした信号と、前記入力ポート毎に書き込み許可又は不許可を指定する書き込み許可信号との論理積に基づいて生成される、請求項１〜３の何れかに記載のレジスタファイル。
【請求項５】
複数のレジスタと、複数の出力ポートとを備え、各出力ポートが、読み出しアドレスで指定されたレジスタからデータを出力するレジスタファイルであって、
前記出力ポートに対応して配設される読み出しデータ選択回路を備え、該読み出しデータ選択回路が、各レジスタに対応して配設され各レジスタが記憶する記憶データと、指定されたレジスタに対応してアクティブになるアクティブ信号との論理積をとる論理積回路と、該論理積回路の出力の論理和をとる論理和回路とを備えることを特徴とするレジスタファイル。
【請求項６】
請求項５に記載のレジスタファイルを設計する方法であって、前記読み出しデータ選択回路を、論理和回路と論理積回路との組み合わせでハードウェア化されるように記述することを特徴とするレジスタファイルの設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、レジスタファイル及びレジスタファイルの設計方法に関し、更に詳しくは、モジュール化されたセルを配置するセルベース設計によって設計されるレジスタファイル及びレジスタファイルの設計方法に関する。
【０００２】
【従来の技術】
一般に、ＡＳＩＣ（特定用途向けＩＣ）やＬＳＩなどの半導体装置の設計では、セルベース設計が採用され、このセルベース設計では、設計済みの回路がモジュール化されて記憶されるセルライブラリを使用する。セルライブラリには、ＡＮＤ（論理積）回路やＯＲ（論理和）回路、フリップフロップなどの基本的な回路ブロック（プリミティブセル）から、ＡＬＵや加算器などの中規模な回路ブロック（マクロセル）、ＣＰＵやＲＡＭなどの大規模な回路ブロック（メガセル）まで、さまざまな回路規模のハードウェアマクロ（セル）が記憶されており、半導体装置は、セルベース設計でこれらのセルを組み合わせて設計される。このように、セルライブラリを活用することで、半導体装置の設計や検証に要する時間を短縮することができる。
【０００３】
例えば、プロセッサを組み込んだ半導体装置を設計する場合には、半導体装置の設計者は、回路規模や処理能力などを勘案して、セルライブラリから使用するプロセッサコアを選択する。一般に、プロセッサコアは、それを専門に開発する部門により、基本アーキテクチャが最適化構成で設計され、半導体装置に組み込み可能な状態で提供される。半導体装置の設計者は、プロセッサコアに、半導体装置に要求される周辺資源を設定して半導体装置に組み込む。周辺資源を半導体装置に応じて設定することで、同じ基本アーキテクチャを有するプロセッサコアを、異なる周辺資源を有するプロセッサとして、半導体装置に組み込むことができる。
【０００４】
図７は、従来の手法で設計した半導体装置の一部を構成するレジスタファイルの構成例を示している。レジスタファイルは、技術文献１に記載されているように、複数のレジスタを備え、指定されたレジスタにデータを書き込む、或いは、指定されたレジスタからデータを読み出す機能を有する。例えば、プロセッサコアでは、レジスタファイルとのインタフェースが規定されており、半導体装置の設計者は、自身の設計に応じて、レジスタ数や、書き込みポート数、読み込みポート数などを設定する。
【０００５】
【非特許文献１】
「コンピュータの構成と設計　下」　ジョン・Ｌ・ヘネシー、デイビット・Ａ・パターソン　著、成田光彰　訳、日経ＢＰ社　発行、　１９９６年　ＩＳＢＮ４−８２２２−８００２−０、ｐ６７８−ｐ６８０
【０００６】
図７に示す例では、レジスタファイル２００は、４ビットのレジスタＦｉ（ｉ：レジスタ番号０〜３）、選択信号生成部２１０、及び、出力ポート選択部２２０から構成され、書き込みポートＷＲ＿ＤＡＴＡｊ（ｊ：書き込みポート番号０〜３）、及び、読み出しポートＲＤ＿ＤＡＴＡｋ（ｋ：読み出しポート番号０〜３）を備える。
【０００７】
選択信号生成部２１０は、書き込みポートＷＲ＿ＤＡＴＡｊに対応した４つのデコーダＤＥＣｊ及び論理積回路ＡＮＤｊと、ＡＮＤｊの論理和をとる論理和回路ＯＲとで構成される。各デコーダＤＥＣｊは、２ビットの書き込みアドレス信号ＷＲ＿ＡＤＲＳｊを４ビットの信号にデコードする。各論理積回路ＡＮＤｊは、デコードされた信号と、図示しないプロセッサコアから送信される書き込みイネーブル信号ＷＲ＿ＥＮｉとの論理積を、選択信号としてレジスタＦｉに向けて送信する。論理和回路ＯＲは、同じレジスタＦｉに向けた論理積回路ＡＮＤｊからの出力の論理和をとり、何れかの書き込みアドレス信号ＷＲ＿ＡＤＲＳｊによって選択されたレジスタＦｉに、アクティブ信号αｉを送信する。
【０００８】
出力ポート選択部２２０は、各レジスタＦｉが記憶するデータＱｉのうち、何れかのデータを出力するマルチプレクサＭＵＸを、読み出しポートＲＤ＿ＤＡＴＡｋ数に対応して配設する。各マルチプレクサＭＵＸは、各レジスタＦｉが記憶するデータＱｉを入力し、２ビットの読み出しアドレス信号ＲＤ＿ＡＤＲＳｋに基づいて、読み出しポートＲＤ＿ＤＡＴＡｋから読み出すべきレジスタＦｉのデータＱｉを選択する。
【０００９】
各レジスタＦｉは、入力ポート選択部２３０、及び、記憶部２４０を備える。入力ポート選択部２３０は、３つのマルチプレクサ２３１、２３２、２３３を有し、優先順位が設定されたセレクタとして構成される。入力ポート選択部２３０は、選択信号生成部２１０からの選択信号に基づいて、記憶部２４０に接続する書き込みポートＷＲ＿ＤＡＴＡｊを選択する。このとき、複数の書き込みアドレスＷＲ＿ＡＤＲＳｊが、同じレジスタＦｉを同時に指定するときには、入力ポート選択部２３０は、ポート番号が小さい方（ＷＲ＿ＤＡＴＡ０側）を優先して選択する。また、書き込みアドレスＷＲ＿ＡＤＲＳｊが何れのポートも指定しないときには、優先度が最も高い又は低い書き込みポートＷＲ＿ＤＡＴＡｊからのデータが選択される。
【００１０】
記憶部２４０は、データ保持部２４１及びクロックゲート２４２を有する。データ保持部２４１は、記憶するデータのビット数に対応した同期型のＤフリップフロップ（Ｄ−ＦＦ）を有し、各Ｄ−ＦＦは、書き込みポートＷＲ＿ＤＡＴＡｊの何れかのポートから入力された４ビットのデータを、クロック信号ＣＬＫに同期して、１ビットずつ記憶する。クロックゲート２４２は、クロック信号ＣＬＫと、アクティブ信号αｉとの論理積回路として構成される。書き込みポートＷＲ＿ＤＡＴＡｊは、図示しないデータライン（バス）に接続するため、レジスタＦｉへの書き込みが指定されないときでも、各レジスタＦｉのＤ−ＦＦのデータ入力端子Ｄにはデータラインからのデータが入力される。このとき、書き込みが行われないレジスタＦｉでは、クロックゲート２４２が、Ｌレベルのアクティブ信号αｉに基づいてＤ−ＦＦのクロック入力端子ＣＬＫをＬレベルに固定するため、データ保持部２４１が記憶しているデータが変更されない。
【００１１】
ここで、出力ポート選択部２２０のマルチプレクサＭＵＸの設計について説明する。図８は、出力ポート選択部２２０のマルチプレクサＭＵＸの記述例を示している。図９は、４入力−１出力のマルチプレクサの構成例を示している。また、図１０は、プリミティブセルとしてセルライブラリに記憶される２入力−１出力のマルチプレクサのゲートレベルの回路構成例を示している。
【００１２】
一般に、セルベース設計では、ハードウェア記述言語（ＨＤＬ）を用いて回路ブロックの機能を記述し、その記述を基に論理合成して、プリミティブセルを組み合わせたゲートレベルの回路構成を得る手法を採用する。図７に示す半導体装置を設計する際には、出力ポート選択部２２０の各マルチプレクサＭＵＸを、図８の記述例のようにｃａｓｅ文を用いて記述する。セルライブラリには、図１０に示すゲートレベルの回路構成を有する２入力−１出力のマルチプレクサがプリミティブセルとして用意されており、図８の記述例から得られる機能は、図９に示すような２入力−１出力のマルチプレクサ２２１〜２２３の組み合わせによって実現する。図９に示す各マルチプレクサ２２１〜２２３は、論理合成ツールによって、図１０に示す回路構成で、設計される半導体装置に組み込まれる。なお、各マルチプレクサ２２１〜２２３のゲートレベルの回路構成は、使用する論理合成ツールやセルライブラリによっては、図１０に示す構成とは異なる回路構成となる場合がある。
【００１３】
【発明が解決しようとする課題】
ところで、半導体装置をセルベース設計手法を用いて設計する際には、半導体装置の設計者は論理合成ツールを使用してゲートレベルの回路構成を得るため、回路構成が必ずしも最適な構成とはならないことがあった。例えば、出力ポート選択部２２０のマルチプレクサＭＵＸが、論理合成によって図１０に示すゲートレベルの回路を組み合わせて、図９に示すように構成された場合には、読み出しアドレスＲＤ＿ＡＤＲＳｋが変化した際に、各レジスタＦｉが記憶するデータＱｉの組み合わせによっては、以下に示すように、消費電力が大きくなる。
【００１４】
レジスタＦ０〜Ｆ３が記憶するデータＱ０〜Ｑ３の０ビット目のデータが、Ｑ０から順に（０、１、０、１）であり、読み出しアドレスＲＤ＿ＡＤＲＳ０が（００）であった場合には、１段目のマルチプレクサ２２１、２２２では、読み出しアドレス信号ＲＤ＿ＡＤＲＳ０の下位ビットに基づいて、一方のマルチプレクサ２２１はデータＱ０を出力し、他方のマルチプレクサ２２２はデータＱ２を出力する。２段目のマルチプレクサ２２３は、読み出しアドレス信号ＲＤ＿ＡＤＲＳ０の上位ビットに基づいて、データＱ０を選択し、「０」を出力する。
【００１５】
読み出しアドレス信号ＲＤ＿ＡＤＲＳ０が（１１）に遷移した場合には、１段目の双方のマルチプレクサ２２１、２２２は、データＱ１、Ｑ３をそれぞれ出力し、２段目のマルチプレクサ２２３は、データＱ３を選択して「１」を出力する。この例では、選択されないデータＱ１を入力する１段目のマルチプレクサ２２２においても、その出力が「０」から「１」に変化する。各マルチプレクサ２２１〜２２３は、出力が「０」から「１」に変化する際には電流が流れるため、図９に示すマルチプレクサＭＵＸは、無駄に電力が消費されるという問題が生じる。
【００１６】
ここで、図１１は、レジスタＦｉのデータ保持部２４１で使用される同期型のＤ−ＦＦの構成例を示している。Ｄ−ＦＦは、マスタスレーブ型のＤ−ＦＦとして構成され、マスタラッチ２４３及びスレーブラッチ２４４を備える。Ｄ−ＦＦは、クロック信号ＣＬＫの立ち上がりに同期してＤ端子から入力されたデータを記憶する。マスタラッチ２４３では、クロック信号ＣＬＫがＬレベルの期間に、Ｄ端子から入力されるデータに従って、スレーブラッチ２４４への出力ノードの電位が変化する。スレーブラッチ２４４は、クロック信号ＣＬＫがＨレベルに立ち上がると、マスタラッチ２４３の出力ノードの電位に従ってデータを記憶し、記憶したデータを出力端子Ｑから出力する。
【００１７】
データ保持部２４１のＤ−ＦＦのＤ端子には、前述のように、書き込みが行われないときにも、何れかの書き込みポートＷＲ＿ＤＡＴＡｊが選択されて、そのポートに接続するデータラインのデータが入力される。この場合、クロックゲート２４２がクロック入力端子をＬレベルに固定した場合であっても、マスタラッチ２４３では、変動するデータラインのデータに従って、スレーブラッチ２４４への出力ノードの電位が変化する。このため、スレーブラッチ２４４の記憶状態が変化しないにもかかわらず、マスタラッチ２４３の出力ノードの電位が「０」から「１」、又は、「１」から「０」に変化し、無駄に電力が消費されるという問題があった。
【００１８】
本発明は、上記問題を解消し、無駄な消費電力を低減したレジスタファイル及びレジスタファイルの設計方法を提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するために、本発明のレジスタファイルは、複数の入力ポートと、複数のレジスタとを備え、各入力ポートから入力するデータを、書き込みアドレスで指定されたレジスタに書き込むレジスタファイルであって、前記レジスタのそれぞれは、前記入力ポートに対応する論理積回路と該論理積回路の出力の論理和をとる論理和回路とを有する入力ポート選択部と、該入力ポート選択部の出力を記憶する記憶部とを備え、前記論理積回路のそれぞれは、対応する入力ポートから入力する書き込みデータを書き込むか否かを指定する書き込み指令信号を受信しており、前記書き込みデータと、前記書き込み指令信号と、当該論理積回路に対応する入力ポートよりも優先順位が高い入力ポートに対応する論理積回路に入力する書き込み指令信号の反転信号との論理積をとることを特徴とする。
【００２０】
本発明のレジスタファイルでは、各レジスタは、何れの入力ポートからのデータを記憶するかを選択するための入力ポート選択部と、データを記憶するための記憶部とを備える。各入力ポート選択部は、優先度付きのセレクタとして構成され、入力ポートに対応した数の論理積回路と、論理和回路とを備える。各論理積回路は、入力ポートからのデータと、そのデータを記憶部に入力するか否かを指定する書き込み指令信号とを受信しており、更に、その論理積回路に対応する入力ポートよりも優先順位が高く設定された入力ポートに対応する論理積回路に入力する書き込み指令信号の反転信号を受信する。各論理積回路は、受信したデータ及び信号の論理積をとり、その論理積を論理和回路へ出力する。従って、同じレジスタにおいて、２以上の書き込み指令信号がＨレベルに活性化されているときでも、優先順位が低い方の入力ポートに対応する論理回路の出力はＬレベルに非活性化される。論理和回路は、各論路積回路の出力の論理和ととり、その論理和を、つまり、何れかの入力ポートから入力されたデータを記憶部に入力する。入力ポート選択部は、何れの書き込み指令信号もＬレベルであるとき、言い換えると、何れの入力ポートのデータも記憶部に入力するように指定されないときには、その出力はＬレベルに固定される。このため、レジスタにデータの書き込みが行われないときに、入力ポートのデータが変動することによって生じていた記憶部の入力ノードの電位の変動を防ぐことができ、記憶部で無駄に消費される電力を低減することができる。
【００２１】
本発明のレジスタファイルは、複数の出力ポートと、該出力ポートに対応して配設される読み出しデータ選択回路とを更に備え、該読み出しデータ選択回路が、各レジスタに対応して配設され各レジスタが記憶する記憶データと、指定されたレジスタに対応してアクティブになるアクティブ信号との論理積をとる論理積回路と、該論理積回路の出力の論理和をとる論理和回路とを備えることが好ましい。アクティブ信号は、例えば、出力ポート毎に指定される、その出力ポートから読み出すべきレジスタを指定する読み出しアドレスに基づいて、何れか１つのみがアクティブとなる。読み出しデータ選択回路は、アクティブ信号と記憶データとの論理積をとり、その論理和を出力することで、読み出しポートから読み出すべきレジスタのデータを選択する。読み出しポートから出力されないデータが入力される論理積回路の出力は、常にＬレベルに固定されるため、２入力−１出力のマルチプレクサを複数段設けることで構成した多入力−１出力のマルチプレクサを使用する場合に比べて、レジスタの読み出し側で消費する電力を削減することができる。
【００２２】
本発明のレジスタファイルでは、前記記憶部に、前記論理和回路の出力をラッチするマスタラッチと、該マスタラッチに後続するスレーブラッチとを有する同期型のＤ型フリップフロップを使用することができる。一般に、同期型のＤ−ＦＦ（Ｄ型フリップフロップ）は、クロックがＬレベルの期間に記憶状態が入力ノードに基づいて変化するマスタラッチと、クロックがＨレベルになるとマスタラッチの出力ノードの電位に基づいて記憶状態を変化させるスレーブラッチで構成される。記憶部に、このようなＤ−ＦＦを使用した場合には、レジスタにデータの書き込みが指示されないときには、Ｄ−ＦＦに入力するクロック信号をＬレベルに固定して、スレーブラッチを動作させないようにする。このとき、記憶部の入力ノードの電位もＬレベルに固定することで、入力ポートのデータ（電位）が変動しても、マスタラッチの記憶状態が変化せず、電力が無駄に消費されない。
【００２３】
本発明のレジスタファイルでは、前記書き込み指令信号を、入力ポート毎に指定される書き込みアドレスをレジスタ数に対応した数にデコードした信号と、前記入力ポート毎に書き込み許可又は不許可を指定する書き込み許可信号との論理積に基づいて生成することができる。この場合、書き込み指令信号は、外部から入力される書き込み許可信号が書き込みを指示したときに、アクティブとなる信号として構成することができる。
【００２４】
本発明のレジスタファイルは、複数のレジスタと、複数の出力ポートとを備え、各出力ポートが、読み出しアドレスで指定されたレジスタからデータを出力するレジスタファイルであって、前記出力ポートに対応して配設される読み出しデータ選択回路を備え、該読み出しデータ選択回路が、各レジスタに対応して配設され各レジスタが記憶する記憶データと、指定されたレジスタに対応してアクティブになるアクティブ信号との論理積をとる論理積回路と、該論理積回路の出力の論理和をとる論理和回路とを備えることを特徴とする。
【００２５】
本発明のレジスタファイルでは、読み出しデータ選択回路は、複数入力−１出力のセレクタとして構成され、読み出しポートから読み出すべきレジスタのデータを選択する。アクティブ信号は、例えば、出力ポート毎に指定される、その出力ポートから読み出すべきレジスタを指定する読み出しアドレスに基づいて、何れか１つのみがアクティブとなる。読み出しデータ選択回路は、アクティブ信号とレジスタの記憶データとの論理積をとったもの論理和を出力する。読み出しポートから出力されないデータが入力される論理積回路の出力は、常にＬレベルに固定されるため、２入力−１出力のマルチプレクサを複数段設けることで構成した多入力−１出力のマルチプレクサを使用する場合に比べて、レジスタの読み出し側で消費する電力を削減することができる。
【００２６】
本発明のレジスタファイルの設計方法は、上記レジスタファイルを設計する方法であって、前記読み出しデータ選択回路を、論理和回路と論理積回路との組み合わせでハードウェア化されるように記述することを特徴とする。
【００２７】
本発明のレジスタファイルの設計方法では、セルベース設計において、ハードウェア記述言語などを用いてＲＴ（レジスタ転送）レベルで設計する際に、読み出しデータ選択回路の部分が、論理合成された際に論理和回路と論理積回路との組み合わせでハードウェア化されるように記述する。一般に、セレクタの機能をｃａｓｅ分などを用いて記述すると、セルライブラリに登録されたマルチプレクサを使用してハードウェア化されるが、そのゲートレベルの回路構成は、使用するセルライブラリや論理合成ツールによっては、必ずしも論理和回路と論理積回路との組み合わせで構成されない。読み出しデータ選択回路部分のハードウェア記述を、論理和回路と論理積回路とが使用されるように明示して記述することで、これらの回路の組み合わせでハードウェアかされた読み出しデータ選択回路を得ることができる。
【００２８】
【発明の実施の形態】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を更に詳細に説明する。図１は、本発明の一実施形態例のレジスタファイルの構成例をブロック図として示している。レジスタファイル１００は、入力ポート選択部１３０及び出力ポート選択部１２０の構成が、図７に示す従来のレジスタファイル２００と相違する。レジスタファイル１００は、４ビットのレジスタＦｉ（ｉ：レジスタ番号０〜３）、選択信号生成部１１０、出力ポート選択部１２０を備え、図示しないプロセッサコアと共に半導体装置に組み込まれる。また、レジスタファイル１００は、４ビットのデータを入力する複数の書き込みポートＷＲ＿ＤＡＴＡｊ（ｊ：書き込みポート番号０〜３）と、４ビットのデータを出力する複数の読み出しポートＲＤ＿ＤＡＴＡｋ（ｋ：読み出しポート番号０〜３）とを備える。
【００２９】
選択信号生成部１１０は、書き込みポート数ｊに対応したデコーダＤＥＣｊ及び論理積回路ＡＮＤｊと、アクティブ信号生成回路１１１とを有し、何れかの書き込みポートＷＲ＿ＤＡＴＡｊからのデータを、何れのレジスタＦｉに書き込むかを選択するための信号を生成する。各デコーダＤＥＣｊは、書き込みアドレス信号ＷＲ＿ＡＤＲＳｊを、何れかのビットのみが１となる、レジスタ数に対応したビット数の信号にデコードする。例えば、２ビットのアドレスとして（０１）が指定されたとき、デコーダＤＥＣｊは、レジスタＦ１を選択するための４ビットの信号（００１０）を出力する。
【００３０】
図２は、選択信号生成部１１０の一部詳細を示している。各論理積回路ＡＮＤｊは、レジスタ数に対応した数の論理積回路ＡＮＤｉｊで構成され、デコーダＤＥＣｊによってデコードされた信号と、プロセッサコアから送信される書き込みイネーブル信号ＷＲ＿ＥＮｊとの論理積を、選択信号ＳｉｊとしてレジスタＦ０〜Ｆ３に向けて送信する。例えば、同図に示したデコーダＤＥＣ０からの信号がＡＮＤ００側から順に（０、１、０、０）であり、書き込みポートＷＲ＿ＤＡＴＡ０からのデータを何れかのレジスタＦｉに書き込むことを許可する書き込みイネーブル信号ＷＲ＿ＥＮ０が１であったときには、論理積回路ＡＮＤ０からは、レジスタＦ１に向けた選択信号Ｓ１０のみが１となった選択信号Ｓｉ０（＝０、１、０、０）が送信される。
【００３１】
アクティブ信号生成回路１１１は、レジスタ数に対応して配設され、同じレジスタ番号について選択信号Ｓｉｊの論理和をとり、書き込みアドレス信号ＷＲ＿ＡＤＲＳｊによって選択されたレジスタＦｉに、アクティブ信号αｉを送信する。例えば、レジスタＦ１に、何れかの書き込みポートＷＲ＿ＤＡＴＡｊからのデータを書き込むべきときには、論理積回路ＡＮＤｊから出力される選択信号Ｓ１０〜Ｓ１３までの論理和が「１」となり、アクティブ信号生成回路１１１は、これをアクティブ信号α１としてレジスタＦ１に送信する。
【００３２】
図３は、レジスタＦ０の構成をブロック図として示している。各レジスタＦｉは、同図に示すレジスタＦ０と同様な構成を有し、入力ポート選択部１３０、及び、記憶部１４０を備える。入力ポート選択部１３０は、書き込みポートＷＲ＿ＤＡＴＡｊから入力されたデータを、選択信号生成部１１０が生成した選択信号Ｓｉｊに基づいて、記憶部１４０に入力する。記憶部１４０は、記憶するデータのビット数に対応したデータ保持部１４１及びクロックゲート１４２を有し、データＱｉを出力する。なお、同図におけるカッコ内の数字は、データのビット番号を示している。
【００３３】
入力ポート選択部１３０は、データのビット数に対応したＡＮＤ回路１３１〜１３４及びＯＲ回路１３５で構成される。各ＡＮＤ回路１３１は、選択信号Ｓ００と書き込みポートＷＲ＿ＤＡＴＡ０からのデータとの論理積を出力する。各ＡＮＤ回路１３２は、選択信号Ｓ００の反転信号と、選択信号Ｓ０１と、書き込みポートＷＲ＿ＤＡＴＡ１からのデータとの論理積を出力し、各ＡＮＤ回路１３３は、選択信号Ｓ００の反転信号と、選択信号Ｓ０１の反転信号と、選択信号Ｓ０２と、書き込みポートＷＲ＿ＤＡＴＡ２からのデータとの論理積を出力し、各ＡＮＤ回路１３４は、選択信号Ｓ００の反転信号と、選択信号Ｓ０１の反転信号と、選択信号Ｓ０２の反転信号と、選択信号Ｓ０３と、書き込みポートＷＲ＿ＤＡＴＡ３からのデータとの論理積を出力する。各ＯＲ回路１３５は、各ＡＮＤ回路１３１〜１３４の出力の論理和を記憶部１４０に出力する。
【００３４】
入力ポート選択部１３０は、図７に示す従来のレジスタファイル２００における入出力ポート選択部２３０と同様に優先度付きのセレクタとして構成される。例えば、選択信号Ｓ００がＨレベルのときには、各ＡＮＤ回路１３２〜１３４の出力はＬレベルに固定されるため、常に、書き込みポートＷＲ＿ＤＡＴＡ０からのデータがＯＲ回路１３５を介して記憶部１４０に入力される。また、ＡＮＤ回路１３４には選択信号Ｓ００〜Ｓ０２の反転が入力されるため、書き込みポートＷＲ＿ＤＡＴＡ０〜２の何れかのポートからのデータを記憶部１４０に入力するように指定されているときには、選択信号Ｓ０３がＨレベルであっても、書き込みポートＷＲ＿ＤＡＴＡ３からのデータは記憶部１４０に入力されない。
【００３５】
データ保持部１４１は、レジスタＦｉが記憶するデータのビット数に対応した数の同期型のＤフリップフロップ（Ｄ−ＦＦ）を有する。各Ｄ−ＦＦは、何れかの書き込みポートＷＲ＿ＤＡＴＡｊから入力されたデータを、クロックゲート１４２を介して入力するクロック信号ＣＬＫに同期して、１ビットずつ記憶する。
【００３６】
図４（ａ）は、クロックゲート１４２の構成例を、同図（ｂ）はその動作例を示している。同図（ａ）に示すように、クロックゲート１４２は、ラッチ回路１４３と、論理積回路１４４とを備える。ラッチ回路１４３は、同図（ｂ）に示すように、クロック信号ＣＬＫの立ち下りで、アクティブ信号αｉをラッチし、ラッチされたアクティブ信号βｉを出力する。論理積回路１４４は、クロック信号ＣＬＫと、ラッチされたアクティブ信号βｉとの論理積を取り、ラッチされたアクティブ信号βｉがＨレベルの期間に、クロック信号ＣＬＫを記憶部１４１の各Ｄ−ＦＦのクロック端子に供給する。
【００３７】
例えばレジスタＦ０では、何れかの選択信号Ｓ０ｊがＨレベルであるときには、アクティブ信号α０がＨレベルとなって、データ保持部１４１の各Ｄ−ＦＦのクロック端子には、クロック信号ＣＬＫが有効に入力される。このとき、入力ポート選択部１３０は、書き込みが指定された書き込みポートＷＲ＿ＤＡＴＡｊからのデータを各Ｄ−ＦＦのＤ端子に入力する。一方、選択信号Ｓ０ｊの何れもがＬレベルであるときには、各Ｄ−ＦＦのクロック端子、及び、Ｄ端子から入力される信号は共にＬレベルに固定され、各Ｄ−ＦＦが記憶するデータは更新されない。
【００３８】
図１に戻り、出力ポート選択部１２０は、読み出しポートＲＤ＿ＤＡＴＡｋ数に対応する数の選択回路１２１を備え、図７に示す従来のレジスタファイル２００における出力ポート選択部２２０と同様な機能を有する。各選択回路１２１は、従来の出力ポート選択部２２０のマルチプレクサＭＵＸと同様に、レジスタＦｉが記憶するデータＱｉを入力し、読み出しアドレスＲＤ＿ＡＤＲＳｋに基づいて、読み出しポートＲＤ＿ＤＡＴＡｋから読み出すべきデータＱｉを選択する。
【００３９】
図５は、選択回路１２１の構成を示している。各選択回路１２１は、レジスタＦｉが記憶するデータのビット数に対応した数のＡＮＤ回路１２２〜１２５及びＯＲ回路１２６〜１２８と、デコーダ１２９とを備える。デコーダ１２９は、読み出しポートＲＤ＿ＤＡＲＡｋから読み出すレジスタＦｉを選択するために、読み出しアドレスＲＤ＿ＡＤＲＳｋに基づいて、レジスタ数に対応した出力信号線のうち、何れかの信号線のみがＨレベルとなる信号を生成する。例えば、２ビットのアドレスとして（０１）が指定されたとき、デコーダ１２９は、レジスタＦ１を選択するための４ビットの信号（００１０）を出力する。
【００４０】
各ＡＮＤ回路１２２〜１２５は、レジスタＦｉのデータＱｉと、対応するデコーダ１２９の出力信号との論理積を、ＯＲ回路１２６又は１２７に出力する。デコーダ１２９からは何れか一のみがＨレベルとなる信号が入力されるため、各ＡＮＤ回路１２２〜１２５は、その何れか１つのみを除いて、Ｌレベルに固定された信号を出力する。１段目のＯＲ回路１２６、１２７は、ＡＮＤ回路１２２、１２３、又は、ＡＮＤ回路１２４、１２５の出力の論理和を、２段目のＯＲ回路は、１段目のＯＲ回路１２６、１２７の論理和を出力する。
【００４１】
例えば、レジスタＦ０〜Ｆ３のデータＱ０〜Ｑ３の０ビット目のデータが、Ｑ０から順に（０、１、０、１）であり、読み出しアドレスＲＤ＿ＡＤＲＳ０が（００）であった場合には、読み出しポートＲＤ＿ＤＡＴＡ０に対応する選択回路１２１では、デコーダ１２９からＡＮＤ回路１２２にＨレベルの信号が送信されるが、データＱ０（０）が０（Ｌレベル）であるため、各ＡＮＤ回路１２２〜１２５の出力は全て０（Ｌレベル）となり、読み出しポートＲＤ＿ＤＡＴＡ０からデータＱ０（０）のデータである「０」が出力される。ここで、読み出しアドレスＲＤ＿ＡＤＲＳ０が（１１）に遷移した場合には、デコーダ１２９からＡＮＤ回路１２５にＨレベルの信号が送信され、ＡＮＤ回路１２５、及び、ＯＲ回路１２７、１２８の出力が「０」から「１」に遷移して、読み出しポートＲＤ＿ＤＡＴＡ０からデータＱ３（０）のデータである「１」が出力される。
【００４２】
図６は、選択回路１２１の記述例を示している。本実施形態例における選択回路１２１の記述例は、ｃａｓｅ分を用いないで、論理和及び論理積を用いて機能が記述される点で、図８に示す従来のマルチプレクサＭＵＸの記述例と相違する。同図において、「＆」は論理積としてハードウェア化される部分を示し、「｜」は論理和としてハードウェア化される部分を示している。本実施形態例では、マルチプレクサの機能を、マルチプレクサとして用意されているプリミティブセルを使用しないように、選択回路１２１を論理回路の組み合わせで記述する。このため、選択回路１２のゲートレベルの回路が、使用する論理合成ツールやセルライブラリに依存せず、ＡＮＤやＯＲなどの論理回路の組み合わせで構成できる。
【００４３】
本実施形態例の半導体装置で使用される選択回路１２１は、デコーダ１２９を備えるため、その分の回路が必要となり、入力される読み出しアドレスＲＤ＿ＡＤＲＳｋが変化したときにはデコーダで電流が流れる。しかし、デコーダ１２９は、レジスタＦｉのデータＱｉの全てのビットに共通して使用されるため、その他の部分と比較してデコーダ１２９の回路規模は相対的に小さく、読み出しアドレスＲＤ＿ＡＤＲＳｋが変化したときに流れる電力の消費も少ない。図９に示す従来のマルチプレクサＭＵＸでは、選択されないデータを入力する１段目のマルチプレクサの出力が変化すると無駄に電力が消費されたが、本実施形態例では、選択されないデータが入力されるＡＮＤ回路１２２〜１２５４の出力は変化しないため、この部分での電力の消費が抑えられる。
【００４４】
本実施形態例の半導体装置では、優先度付きのセレクタとして構成される入力ポート選択部１３０を、論理積回路と論理和回路との組み合わせで構成する。図７に示す従来の入力ポート選択部２３０では、クロックがＬレベルに固定されているときでも、データ保持部２４１の入力が変化したが、本実施形態例では、入力ポート選択部１３０は、データの書き込みが行われないときには、データ保持部１４１への出力をＬレベルに固定する。このため、書き込みが行われないときに、データ保持部１４１のＤ−ＦＦのマスタラッチが動作せず、無駄に電力が消費されない。
【００４５】
また、選択回路１２１の設計に際しては、プリミティブセルとして用意されているマルチプレクサを用いてゲートレベルの回路が構成されないように、敢えて、その機能を論理積と論理和との組み合わせで記述する。このため、選択回路１２１のゲートレベルの回路構成は、論理合成ツールやセルライブラリに依存せず、常に、論理積回路と論理和回路との組み合わせによって実現する。このため、従来の出力ポート選択部１２０で発生した無駄な電力の消費を抑えることができる。
【００４６】
なお、上記実施形態例では、レジスタ数、レジスタが記憶するデータのビット長、書き込みポート数、及び、読み出しポート数が４の場合について説明したが、これらは、設計する半導体装置の仕様に応じて、それぞれ所望の値とすることができる。その場合、書き込みアドレス、及び、読み出しアドレスは、ポート数に応じたビット長のアドレスとして構成される。
【００４７】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明のレジスタファイル及びレジスタファイルの設計方法は、上記実施形態例にのみ限定されるものでなく、上記実施形態例の構成から種々の修正及び変更を施したレジスタファイル及びレジスタファイルの設計方法も、本発明の範囲に含まれる。
【００４８】
【発明の効果】
以上説明したように、本発明のレジスタファイル及びレジスタファイルの設計方法は、レジスタへの書き込みが行われないときには、優先度付きのセレクタの出力が変動しないため、記憶部にＤ−ＦＦを使用した場合には、Ｄ−ＦＦで発生する無駄な電力の消費を抑えることができる。また、レジスタのデータを読み出す部分の選択回路を、論理回路の組み合わせでハードウェア化されるように設計することで、この部分における無駄な電力の消費を抑えることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態例の半導体装置の構成の一部を示すブロック図。
【図２】図１の選択信号生成部１１０の構成例の一部詳細を示すブロック図。
【図３】図１のレジスタＦ０の構成を示すブロック図。
【図４】図３に示すクロックゲート１４２の、（ａ）は構成例を示すブロック図、（ｂ）は動作例を示すタイミングチャート。
【図５】図１の選択回路１２１の構成例を示すブロック図。
【図６】図５に示す選択回路１２１のＨＤＬによる記述例。
【図７】従来の半導体装置の構成の一部を示すブロック図。
【図８】図７の出力ポート選択部２２０におけるマルチプレクサＭＵＸの記述例。
【図９】図７の入出力ポート選択部２２０で使用される４入力−１出力のマルチプレクサの構成例を示すブロック図。
【図１０】セルライブラリに記憶される２入力−１出力のマルチプレクサのゲートレベルの回路構成例を示す回路図。
【図１１】同期型のＤ−ＦＦの構成例を示す回路図。
【符号の説明】
１１０：選択信号生成部
１１１：アクティブ信号生成回路
１２０：出力ポート選択部
１３０：入力ポート選択部
１４０：記憶部
１４１：データ記憶部（Ｄ−ＦＦ）
１４２：クロックゲート
２１０：選択信号生成部
２２０：出力ポート選択部
２３０：入力ポート選択部
２４０：記憶部
２４１：データ記憶部（Ｄ−ＦＦ）
２４２：クロックゲート
【図１】
2004102799.tif 000003
【図２】
2004102799.tif 000004
【図３】
2004102799.tif 000005
【図４】
2004102799.tif 000006
【図５】
2004102799.tif 000007
【図６】
2004102799.tif 000008
【図７】
2004102799.tif 000009
【図８】
2004102799.tif 000010
【図９】
2004102799.tif 000011
【図１０】
2004102799.tif 000012
【図１１】
2004102799.tif 000013