(57)【要約】  このマイクロプロセッサ（１）では、命令アドレス信号（ＣＡ）およびデータアドレス信号（ＤＡ）の各々のアドレス選択用のＹビットの信号をマスクし、命令アドレス信号（ＣＡ）およびデータアドレス信号（ＤＡ）のバンク選択用のＸビットの信号を比較する。その結果、両者が一致しない場合は、アドレス信号（ＣＡ，ＤＡ）によって選択された２つのアドレスに並列にアクセスし、両者が一致する場合は、選択された２つのアドレスに１つずつ順番にアクセスする。したがって、共用メモリ（４）のバンク数やバンク容量が変更されても競合判定回路（９）を新たに設計する必要が無い。
2012137599.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンク（Ｂ１〜Ｂｎ）に分割され、各バンクが複数のアドレスを含む共用メモリ（４）と、
命令アドレス信号に従って前記複数のバンク（Ｂ１〜Ｂｎ）のうちの選択されたバンクに属する複数のアドレスのうちの選択されたアドレスにアクセスするとともに、データアドレス信号に従って前記複数のバンク（Ｂ１〜Ｂｎ）のうちの選択されたバンクに属する複数のアドレスのうちの選択されたアドレスにアクセスするメモリコントローラ（３）とを備え、
前記命令アドレス信号および前記データアドレス信号の各々は、各バンクに予め割り当てられたＸビット（ただし、Ｘは２以上の整数である）の第１の信号と、各バンクの各アドレスに予め割り当てられたＹビット（ただし、Ｙは２以上の整数である）の第２の信号とを含み、
前記メモリコントローラ（３）は、
前記Ｙビットの第２の信号をマスクするためのマスク情報に基き、前記命令アドレス信号および前記データアドレス信号の各々の前記Ｙビットの第２の信号をマスクして、前記命令アドレス信号の前記Ｘビットの第１の信号と前記データアドレス信号の前記Ｘビットの第１の信号とを比較し、両者が一致した場合に一致検出信号を出力するアドレス比較部（１１）と、
前記アドレス比較部（１１）から前記一致検出信号が出力されていない場合は、前記命令アドレス信号によって選択されたアドレスと前記データアドレス信号によって選択されたアドレスとに並列にアクセスし、前記アドレス比較部（１１）から前記一致検出信号が出力されている場合は、前記命令アドレス信号および前記データアドレス信号のうちのいずれか一方のアドレス信号によって選択されたアドレスにアクセスした後に他方のアドレス信号によって選択されたアドレスにアクセスするアクセス実行部（１５）とを含む、半導体装置。
【請求項２】
さらに、各バンクのメモリ容量を含むバンク情報を設定するための設定部（１３）と、
前記設定部（１３）で設定された前記バンク情報に基いて前記マスク情報を生成するマスク生成部（１０）とを備え、
前記アドレス比較部（１１）は、前記マスク生成部（１０）で生成された前記マスク情報に基いて、前記命令アドレス信号および前記データアドレス信号の各々の前記Ｙビットの第２の信号をマスクする、請求項１に記載の半導体装置。
【請求項３】
前記マスク生成部（１０）は、前記設定部（１３）で設定された前記バンク情報に含まれる各バンクのメモリ容量から１だけ減算して前記マスク情報を生成する、請求項２に記載の半導体装置。
【請求項４】
さらに、前記マスク情報を設定するための設定部（１３）を備え、
前記アドレス比較部（１１）は、前記設定部（１３）で設定された前記マスク情報に基いて、前記命令アドレス信号および前記データアドレス信号の各々の前記Ｙビットの第２の信号をマスクする、請求項１に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は半導体装置に関し、特に、命令アクセスとデータアクセスを並列に行なう半導体装置に関する。
【背景技術】
【０００２】
従来より、複数のバンクに分割された共用メモリを備え、命令アドレス信号とデータアドレス信号によって選択された２つのバンクの２つのアドレスに並列にアクセスするマイクロプロセッサがある。このマイクロプロセッサでは、１つのバンクの２つのアドレスに並列にアクセスすることはできない。このため、同じバンクに対して命令アクセスとデータアクセスが競合しているか否かを判定する競合判定回路が設けられ、競合する場合はアクセス要求が調停される（たとえば、特開２００１−４３１８０号公報（特許文献１）参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−４３１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来のマイクロプロセッサでは、共用メモリのバンク数やバンク容量が変更される毎に競合判定回路を設計し直す必要があったので、設計コストが高くなると言う問題があった。【０００５】
それゆえに、この発明の主たる目的は、設計コストが低い半導体装置を提供することである。
【課題を解決するための手段】
【０００６】
この発明に係る半導体装置は、複数のバンクに分割され、各バンクが複数のアドレスを含む共用メモリと、命令アドレス信号に従って複数のバンクのうちの選択されたバンクに属する複数のアドレスのうちの選択されたアドレスにアクセスするとともに、データアドレス信号に従って複数のバンクのうちの選択されたバンクに属する複数のアドレスのうちの選択されたアドレスにアクセスするメモリコントローラとを備えたものである。命令アドレス信号およびデータアドレス信号の各々は、各バンクに予め割り当てられたＸビット（ただし、Ｘは２以上の整数である）の第１の信号と、各バンクの各アドレスに予め割り当てられたＹビット（ただし、Ｙは２以上の整数である）の第２の信号とを含む。メモリコントローラは、Ｙビットの第２の信号をマスクするためのマスク情報に基き、命令アドレス信号およびデータアドレス信号の各々のＹビットの第２の信号をマスクして、命令アドレス信号のＸビットの第１の信号とデータアドレス信号のＸビットの第１の信号とを比較し、両者が一致した場合に一致検出信号を出力するアドレス比較部と、アドレス比較部から一致検出信号が出力されていない場合は、命令アドレス信号によって選択されたアドレスとデータアドレス信号によって選択されたアドレスとに並列にアクセスし、アドレス比較部から一致検出信号が出力されている場合は、命令アドレス信号およびデータアドレス信号のうちのいずれか一方のアドレス信号によって選択されたアドレスにアクセスした後に他方のアドレス信号によって選択されたアドレスにアクセスするアクセス実行部とを含む。
【発明の効果】
【０００７】
この発明に係る半導体装置では、マスク情報に基いて命令アドレス信号およびデータアドレス信号のアドレス選択用のＹビットの第２の信号をマスクし、命令アドレス信号およびデータアドレス信号のバンク選択用のＸビットの第１の信号を比較する。その結果、両者が一致しない場合は、命令アドレス信号およびデータアドレス信号によって選択された２つのアドレスに並列にアクセスし、両者が一致した場合は、選択された２つのアドレスに１つずつ順番にアクセスする。したがって、共用メモリのバンク数やバンク容量が変更されても競合判定回路を新たに設計する必要が無いので、設計コストが低くなる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１によるマイクロプロセッサの構成を示すブロック図である。
【図２】図１に示したメモリコントローラの構成をより詳細に示すブロック図である。
【図３】図１に示したマイクロプロセッサの動作を示す図である。
【図４】図１に示したマイクロプロセッサの動作を示す他の図である。
【図５】この発明の実施の形態２によるマイクロプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【０００９】
［実施の形態１］
本発明の実施の形態１によるマイクロプロセッサ１は、図１に示すように、プロセッサコア２、メモリコントローラ３、および共用メモリ４を備える。
【００１０】
共用メモリ４は、命令とデータを格納するメモリであり、ｎ個（ただし、ｎは２以上の整数である）のバンクＢ１〜Ｂｎに分割されている。共用メモリ４は、たとえばＭＲＡＭ（Magnetoresistive  Random  Access  Memory）である。この共用メモリ４では、バンクＢ１〜Ｂｎのうちの所望の２つのバンクＢに並列にアクセスして、命令とデータを並列に書込または読出することが可能となっている。同一バンクＢ内に命令とデータの両方を格納することも可能である。ただし、同一バンクＢへ命令とデータを同時に書込または読出することはできない。そのため命令アクセスとデータアクセスの競合判定をメモリコントローラ３で行ない、競合時は一方のアクセスを待たせて２つのアクセスを１つずつ順番に行なわせる。
【００１１】
プロセッサコア２とメモリコントローラ３の間には、命令バス５とデータバス６が並列接続されている。命令バス５は、プロセッサコア２が共用メモリ４に対して命令を書込または読出する際に使用される。データバス６は、プロセッサコア２が共用メモリ４に対してデータを書込または読出する際に使用される。
【００１２】
また、メモリコントローラ３と共用メモリ４の間には、命令メモリバス７とデータメモリバス８が並列接続されている。命令メモリバス７は、プロセッサコア２の命令アクセスに応答して、メモリコントローラ３が共用メモリ４にアクセスする際に使用される。データメモリバス８は、プロセッサコア２のデータアクセスに応答して、メモリコントローラ３が共用メモリ４にアクセスする際に使用される。
【００１３】
メモリコントローラ３は競合判定回路９を含み、競合判定回路９はマスク生成部１０、汎用アドレス比較部１１、および競合判定部１２を含む。また、マスク生成部１０に対応してパラメータ設定部１３が設けられている。
【００１４】
競合判定回路９は、プロセッサコア２が共用メモリ４に対して、同一バンクに命令とデータのアクセスを同時に要求したか否かを判定する。パラメータ設定部１３は、共用メモリ４の構成に従い、共用メモリ４の１バンク当たりのバンク容量を示す情報をマスク生成部１０へ与える。パラメータ設定部１３からマスク生成部１０に情報を与える方法としては、パラメータ設定部１３とマスク生成部１０の間の複数本の信号線の各々の論理レベルを固定する方法や、レジスタ設定により与える方法がある。
【００１５】
マスク生成部１０は、パラメータ設定部１３からの情報に基づいて、競合判定を行なうアドレス比較部分のマスク情報Ｍを生成する。汎用アドレス比較部１１は、命令バス５からの命令アドレス信号ＣＡ、データバス６からのデータアドレス信号ＤＡ、マスク生成部１０からのマスク情報Ｍに基いて、同一バンクＢのアドレスにアクセスしているか否かを判定する。
【００１６】
競合判定部１２は、命令バス５からの命令リクエスト、データバス６からのデータリクエスト、汎用アドレス比較部１１のアドレス比較結果から、同一バンクＢにアクセス要求があるか否かを判定する。
【００１７】
図２は、競合判定回路９と、その周辺回路の接続関係をより詳細に示すブロック図である。図２において、メモリコントローラ３には、メモリＩ／Ｆ部１５およびコアＩ／Ｆ部１６が設けられる。メモリＩ／Ｆ部１５は、メモリコントローラ３と共用メモリ４の間の命令メモリバス７およびデータメモリバス８の制御を行なうＩ／Ｆブロックである。メモリＩ／Ｆ部１５は、同一バンクに対して命令とデータのアクセス競合が発生した場合、一方のアクセスリクエストのアサートを抑止して待たせ、２つのアクセスを１つずつ順番に実行させる。
【００１８】
コアＩ／Ｆ部１６は、プロセッサコア２とメモリコントローラ３の間の命令バス５、データバス６の制御を行なうＩ／Ｆブロックである。コアＩ／Ｆ部１６は、同一バンクに対して命令とデータのアクセス競合が発生した場合、一方のアクセスを待たせ、２つのアクセスを１つずつ順番に実行させる。
【００１９】
次に、動作について説明する。共用メモリ４が８個（すなわちｎ＝８）のバンクＢ１〜Ｂ８に分割されており、１バンク当たりのメモリ容量（バンク容量）が１Ｋバイトである場合について説明する。この場合、各バンクは２１０個のアドレスを含む。各バンクには３ビットのアドレス信号が予め割り当てられ、各バンクの各アドレスには１０ビットのアドレス信号が予め割り当てられている。１３ビットのアドレス信号のうちの上位３ビットのアドレス信号によって８個のバンクＢ１〜Ｂ８のうちのいずれか１つのバンクが選択される。また、１３ビットのアドレス信号のうちの下位１０ビットのアドレス信号によって、上位３ビットのアドレス信号によって選択されたバンクに属する２１０個のアドレスのうちの１つのアドレスが選択される。各アドレスには、１バイト（８ビット）のデータが格納される。
【００２０】
この場合、共用メモリ４のバンク容量を示す情報をパラメータ設定部１３に設定する。ここでは、共用メモリ４のバンク容量は１Ｋバイト（１０２４バイト）であるため、「100  0000  0000b」をパラメータ設定部１３に設定する。パラメータ設定部１３に設定された情報は、メモリコントローラ３に与えられる。バンク容量を示す情報をパラメータ設定部１３からメモリコントローラ３に与える方法としては、たとえば、バンク容量を示す３２本の信号線ＳＬ［３１:０］に対して、１Ｋバイトの値を固定値で与える方法が採用される。この場合、メモリ容量を示す情報は、３２ビットの信号ＢＣ［３１:０］からなるデータコードで表わされる。なお、パラメータ設定部１３をレジスタで構成し、レジスタ設定によりバンク容量を与えてもよい。
【００２１】
バンク容量が１Ｋバイトであることを示す信号ＢＣ［３１:０］を受けたマスク生成部１０では、図３（ａ）に示すように３２ビットの信号Ｍ［３１:０］を含むマスク情報を生成する。たとえば、バンク容量情報ＢＣ［３１:０］から１差し引いた値を求める回路を実装することにより、図３（ａ）に示すようなマスク情報Ｍ［３１:０］（0000  0000  0000  0000  0000  0011  1111  1111b）を生成することができる。マスク情報Ｍ［３１:０］において値が「１」のビットはマスクすることを示しており、値が「０」のビットはマスクしないことを示している。よって、バンク容量が１Ｋバイトである場合は、マスク情報Ｍ［９:０］に対応する下位の１０ビットがマスク対象となる。
【００２２】
プロセッサコア２において命令アドレス信号ＣＡ［１２:０］（0  0000  1111  0000b）を含む命令アクセスとデータアドレス信号ＤＡ［１２:０］（0  0111  0000  1111b）を含むデータアクセスとが同時に発生した場合、汎用アドレス比較部１１では、図３（ｂ）に示すようにマスク情報Ｍ［３１:０］を用いてアドレス比較を行なう。マスク情報Ｍ［９:０］に対応する下位の１０ビットがマスク対象となるため、アドレス比較対象は、命令アドレス信号ＣＡ［１２:１０］とデータアドレス信号ＤＡ［１２:１０］の３ビットになる。
【００２３】
図３（ｂ）においては、命令アドレス信号ＣＡ［１２:１０］（000b）とデータアドレス信号ＤＡ［１２:１０］（001b）とが比較され、それらが不一致であるため、汎用アドレス比較部１１が出力するアドレス比較結果は不一致（０ｂ）となる。なお、命令アドレス信号ＣＡ［１２:１０］とデータアドレス信号ＤＡ［１２:１０］が一致するケースでは、汎用アドレス比較部１１が出力するアドレス比較結果は一致（１ｂ）となる。
【００２４】
プロセッサコア２によって命令アクセスとデータアクセスが同時に発生した場合、競合判定部１２では、図３（ｃ）に示すようにアドレス比較結果を用いて競合判定を行なう。命令アクセスとデータアクセスが同時に発生した場合は、命令リクエストＣＲと、データリクエストＤＲの値がともに「１ｂ」となり、アドレス比較結果の値が「１ｂ」であれば判定結果は一致（１ｂ）となり、アドレス比較結果の値が「０ｂ」であれば判定結果は不一致（０ｂ）となる。図３（ｃ）においては、アドレス比較結果は不一致（０ｂ）であるため、判定結果は不一致（０ｂ）となる。
【００２５】
以上のように、バンク容量が１Ｋバイトのバンクを８個備えた共用メモリ４に対して、メモリコントローラ３は命令とデータのアクセス競合の有無を判定することができる。
【００２６】
次に、共用メモリ４が４個（すなわちｎ＝４）のバンクＢ１〜Ｂ４に分割されており、１バンク当たりのメモリ容量（バンク容量）が２Ｋバイトである場合について説明する。この場合、各バンクは２１１個のアドレスを含む。各バンクには２ビットのアドレス信号が予め割り当てられ、各バンクの各アドレスには予め１１ビットのアドレス信号が予め割り当てられている。１３ビットのアドレス信号のうちの上位２ビットのアドレス信号によって４個のバンクＢ１〜Ｂ４のうちのいずれか１つのバンクが選択される。また、１３ビットのアドレス信号のうちの下位１１ビットのアドレス信号によって、上位２ビットのアドレス信号によって選択されたバンクに属する２１１個のアドレスのうちの１つのアドレスが選択される。各アドレスには、１バイト（８ビット）のデータが格納される。
【００２７】
この場合、共用メモリ４のバンク容量を示す情報をパラメータ設定部１３に設定する。ここでは、共用メモリ４のバンク容量は２Ｋバイト（２０４８バイト）であるため、「1000  0000  0000b」をパラメータ設定部１３に設定する。
【００２８】
バンク容量が２Ｋバイトであることを示す信号ＢＣ［３１：０］を受けたマスク生成部１０では、図４（ａ）に示すように、３２ビットの信号Ｍ［３１：０］を含むマスク情報を生成する。たとえば、バンク容量情報ＢＣ［３１：０］から１差し引いた値を求める回路を実装することにより、図４（ａ）に示すようなマスク情報Ｍ［３１：０］（0000  0000  0000  0000  0000  0111  1111  1111b）を生成することができる。マスク情報Ｍ[31:0]において値が「１」のビットはマスクすることを示しており、値が「０」のビットはマスクしないことを示している。よって、バンク容量が２Ｋバイトである場合は、マスク情報Ｍ[10:0]に対応する下位の１１ビットがマスク対象となる。
【００２９】
プロセッサコア２によって命令アドレス信号ＣＡ［１２:０］（0  0000  1111  0000b）を含む命令アクセスと、データアドレス信号ＤＡ［１２:０］（0  0111  0000  1111b）を含むデータアクセスの両方が同時に発生した場合、汎用アドレス比較部１１では、図４（ｂ）に示すようにマスク情報Ｍ［３１:０］を用いてアドレス比較を行なう。マスク情報Ｍ［１０:０］がマスク対象となるため、アドレス比較対象は命令アドレス信号ＣＡ［１２:１１］とデータアドレス信号ＤＡ［１２:１１］の２ビットになる。
【００３０】
図４（ｂ）においては、命令アドレス信号ＣＡ［１２:１１］（00b）とデータアドレス信号ＤＡ［１２:１１］（00b）を比較した結果が一致であるため、汎用アドレス比較部１１が出力するアドレス比較結果は一致（１ｂ）となる。なお、命令アドレス信号ＣＡ［１２:１１］とデータアドレス信号ＤＡ［１２:１１］の比較が不一致となるケースでは、汎用アドレス比較部１１が出力するアドレス比較結果は不一致（０ｂ）となる。
【００３１】
プロセッサコア２によって命令アクセスとデータアクセスが同時に発生した場合、競合判定部１２では、図４（ｃ）に示すように、アドレス比較結果を用いて競合判定を行なう。命令アクセスとデータアクセスが同時に発生した場合は、命令リクエストＣＲと、データリクエストＤＲの値がともに「１ｂ」となり、アドレス比較結果の値が「１ｂ」であれば判定結果は一致（１ｂ）となり、アドレス比較結果の値が「０ｂ」であれば判定結果は不一致（０ｂ）となる。図４（ｃ）においては、アドレス比較結果は一致（１ｂ）であるため、判定結果は一致（１ｂ）となる。
【００３２】
判定結果は、メモリＩＰ／Ｆ部１５とコアＩ／Ｆ部１６に入力される。判定結果が一致（１ｂ）となり競合が発生した場合、メモリＩ／Ｆ部１５では命令メモリリクエストとデータメモリリクエストの一方のアクセスリクエストのアサートを抑止して待たせ、命令アクセスとデータアクセスを１つずつ順番に行なわせる。また、コアＩ／Ｆ部１６では、命令リクエストとデータリクエストの一方のアクセスを待たせる処理を実施し、命令アクセスとデータアクセスが１つずつ順番に行なわれるように制御する。
【００３３】
共用メモリ４では、命令アドレス信号ＣＡによって選択されたバンクの選択されたアドレスに命令の書込が行なわれるか、そのアドレスから命令が読み出される。また、データアドレス信号ＤＡによって選択されたバンクの選択されたアドレスにデータの書込が行なわれるか、そのアドレスからデータが読み出される。
【００３４】
以上のように、従来では、共用メモリ４のバンク容量やバンク数が変わる度に、アドレス比較を行なうビット位置やビット幅を変更して競合判定回路９を再設計および再検証していた。これに対して本実施の形態１では、パラメータ設定部１３からメモリコントローラ３にバンク容量を示す情報を与えることによりスケーラブルに競合判定を行なうので、共用メモリ４の構成が変更される毎に競合判定回路９を変更せずに済む。したがって、メモリコントローラ３をＩＰコア（Ｉntellectual  Property  Core）として利用することができ、設計検証コストを抑えることができる。
【００３５】
［実施の形態２］
図５は、この発明の実施の形態２によるマイクロプロセッサの構成を示すブロック図であって、図２と対比される図である。図５において、このマイクロプロセッサが図２のマイクロプロセッサと異なる点は、競合判定回路９からマスク生成部１０が除去され、パラメータ設定部１３から汎用アドレス比較部１１にマスク情報が直接与えられる点である。
【００３６】
次に、動作について説明する。共用メモリ４が４個（すなわちｎ＝４）のバンクＢ１〜Ｂ４に分割されており、１バンク当たりのメモリ容量（バンク容量）が２Ｋバイトである場合について説明する。
【００３７】
共用メモリ４のバンク容量の情報からマスク情報Ｍ［３１：０］を予め求め、そのマスク情報Ｍ［３１：０］をパラメータ設定部１３に設定する。図４（ａ）〜（ｃ）で示したように、共用メモリ４のバンク容量が２Ｋバイトであるため、マスク情報Ｍ［３１：０］は「0000  0000  0000  0000  0000  0111  1111  1111b」となる。パラメータ設定部１３に設定されたマスク情報Ｍ［３１：０］は、汎用アドレス比較部１１に与えられる。汎用アドレス比較部１１では、マスク情報Ｍ［１０：０］がマスク対象となり、アドレス比較対象は命令アドレス信号ＣＡ［１２：１１］とデータアドレス信号ＤＡ［１２：１１］の２ビットになる。他の構成および動作は実施の形態１と同じであるので、その説明は繰り返さない。
【００３８】
この実施の形態２では、実施の形態１と同じ効果が得られる他、パラメータ設定部１３がマスク情報を与えるので、マスク生成部１０のハードウェア回路を削減することができ、ハードウェア実装コストや設計検証コストを抑えることができる。
【００３９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００４０】
１  マイクロプロセッサ、２  プロセッサコア、３  メモリコントローラ、４  共用メモリ、５  命令バス、６  データバス、７  命令メモリバス、８  データメモリバス、９  競合判定回路、１０  マスク生成部、１１  汎用アドレス比較部、１２  競合判定部、１３  パラメータ設定部、１５  メモリＩ／Ｆ部、１６  コアＩ／Ｆ部、Ｂ１〜Ｂｎ  バンク。
【図１】
2012137599.tif 000003
【図２】
2012137599.tif 000004
【図３】
2012137599.tif 000005
【図４】
2012137599.tif 000006
【図５】
2012137599.tif 000007
【国際調査報告】
2012137599.tif 000008
2012137599.tif 000009
2012137599.tif 000010
2012137599.tif 000011