説明

バス接続回路、半導体装置及びバス接続回路の動作方法

【課題】直接転送をする場合と直接転送をしない場合とが混在しても、MEMC設定等の追加の動作を行うことなく、1サイクル転送することを可能とする。
【解決手段】バス接続回路は、バスマスタ10と複数のバススレーブ12、15とを接続する。バス接続回路は、ミラー領域アクセス検出回路13と、処理回路21、22、14とを具備する。ミラー領域アクセス検出回路13は、バスマスタ10が複数のバススレーブ12、15のうちの第1バススレーブ12のミラー領域へアクセスすることを検出して、検出信号35を出力する。処理回路21、22、14は、検出結果35に基づいて、当該検出結果35に対応して予め設定されている処理を、アクセスの対象としての領域又はデータに対して実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路(LSI)内部のバス接続回路に関する。
【背景技術】
【0002】
近年、LSI(Large Scale Integration)で扱う情報量の増大に伴い、LSI内部のバスで転送されるデータ量が増加している。そのため、バススレーブ同士のデータ転送をより高速に行う技術が望まれている。従来の情報処理装置では、スレーブデバイス同士のデータ転送時にバスマスタを経由する。その場合、転送元スレーブデバイスからバスマスタへのデータ転送とバスマスタから転送先スレーブデバイスへのデータ転送とを実行するという2サイクル転送を行う。そのため、転送性能は最高でも2サイクルの転送サイクルにしかならない。
【0003】
データ転送をより高速に行う技術として、特開2006−146817号公報(特許文献1)に、バスマスタを経由せず転送元スレーブデバイスから転送先スレーブデバイスへ直接データを転送する1サイクル転送の技術が開示されている。図1は、特許文献1のメモリ制御システムにおける回路構成を示すブロック図である。図1に示すように、LSI100は、CPU110、メモリコントローラ(MEMC)160及びシステムバス150を備えている。CPU110は、システムバス150に接続されている。MEMC160は、外部ROMデバイス200及び外部DRAMデバイス300をそれぞれ制御する。このMEMC160は共通の外部端子を経由した同一のアドレスバス161により外部ROMデバイス200と外部DRAMデバイス300とに接続されている。同様に、MEMC160は共通の外部端子を経由した同一のデータバス162により外部ROMデバイス200と外部DRAMデバイス300とに接続されている。更に、MEMC160は独立した外部端子を経由して、外部ROMデバイス200を制御するROMデバイス制御信号163を出力する。同様に、MEMC160は独立した外部端子を経由して、外部DRAMデバイス300を制御するDRAMデバイス制御信号164を出力する。これらの制御信号163、164は、一般的なROMデバイス及びDRAMデバイスを制御するために必要な最低限の信号を有しており、CPU110からのメモリアクセスに応じてそれぞれ独立して外部ROMデバイス200或いは外部DRAMデバイス300を制御することが可能である。
【0004】
図2は、特許文献1のメモリ制御システムにおけるLSI100と外部ROMデバイス200及び外部DRAMデバイス300との具体的な接続形態を示すブロック図である。ここで、外部ROMデバイス200は16MビットのページROM(1Mワード×16ビット)である。20ビット幅で構成されるアドレスバス161がそのまま20ビットの物理アドレスとして供給される。一方、外部DRAMデバイス300は64MビットDRAM(4Mワード×16ビット)である。カラムアドレス12ビット、ロウアドレス10ビットで構成されている。アドレスバス161の下位12ビットのみが物理アドレスとして供給される。またデータバス162は16ビット幅で構成されており、外部ROMデバイス200と外部DRAMデバイス300に共に接続されている。ROMデバイス制御信号163はCS#、RD#信号からなり独立して外部ROMデバイス200と接続されている。また同様に、DRAMデバイス制御信号164はRAS#,LCAS#、UCAS#、WE#、OE#信号からなり独立して外部DRAMデバイス300と接続されている。
【0005】
図3は、特許文献1のメモリ制御システムにおけるメモリマップの一例を示す図である。図3に示すように、外部ROMデバイス200はメモリマップの0xF000_0000番地から0xFFFF_FFFF番地にマッピングされている。また外部DRAMデバイス300はメモリマップの0x0000_0000番地から0x3FFF_FFFF番地にマッピングされている。ここで説明を容易にするために、この外部ROMデバイス200は、システムを初期化する初期化コードが0xF000_0000番地から0xF000_FFFF番地までの64KBに、実際にシステムを制御する命令コードが0xF001_0000番地から0xF010_FFFF番地までの1MBにそれぞれ書き込まれているものとする。更に、外部ROMデバイス200から外部DRAMデバイス300へ複製する命令コードは前述した実際にシステムを制御する命令コードの1MBだけであり、この命令コードは絶対アドレスに非依存なメモリアロケータブルな内容で記述されているものとする。
【0006】
次に、特許文献1のメモリ制御システムにおいて、システム起動時に外部デバイスROM200の命令コードを外部デバイスDRAM300へ複製する動作について説明する。
【0007】
まず初めに、外部からのパワーオンリセット等の初期リセットが解除されると、CPU110は、内部のリセットベクタに応じたメモリ空間に対して最初の命令コードのフェッチを行う。このとき、初期状態で命令コードを保持できるのは不揮発性メモリであるROMデバイスのみである。そのため、CPU110のリセットベクタは外部ROMデバイス200の先頭アドレス0xF000_0000番地を指し示しており、命令コードも予めリセットベクタが指し示すアドレスから順番に外部ROMデバイス200に書き込まれているものとする。
【0008】
従って、リセット解除後、CPU110は、システムバス150とMEMC160を経由して外部ROMデバイス200にアクセスし、メモリマップの0xF000_0000番地からシステムを初期化するための初期化コードを順次フェッチする。この初期化コードのフェッチ後、CPU110は、その初期化コードの内容に従ってシステムの初期化を実施する。ここで、外部DRAMデバイス300に対しても外部ROMデバイス200にアクセスするためのアドレスと、外部ROMデバイス200から読み出されたデータが同時にドライブされるが、DRAMデバイス制御信号164によるアクセス許可が実行されていないため何ら影響を及ぼさない。
【0009】
システムの初期化が完了すると、CPU110は、MEMC160に対して外部ROMデバイス200に書き込まれている命令コードを外部DRAMデバイス300へ複製するように要求する。この時点では、CPU110の動作は全て外部ROMデバイス200からフェッチした命令コードの内容に従って実施されている。以下、MEMC160により命令コードを複製する手順を示す。
【0010】
まず、CPU110は、外部ROMデバイス200に書き込まれている命令コードの最初のアドレス0xF001_0000番地を転送元アドレス、外部DRAMデバイス300へ書き込むための最初のアドレス0x0000_0000番地を転送先アドレス、複製する命令コードの総バイト数(1MB)を転送長としてMEMC160に設定する。但し、命令コードの複製は外部DRAMデバイス300のカラムアドレスと外部ROMデバイス200のアドレスのカラムアドレスに相当する下位12ビットが等しくなる必要があるため、予め転送アドレスの下位12ビットを等しく設定しておくか、或いは転送先アドレス又は転送元アドレスの何れかの下位12ビットのみが有効になるものとする。これらの設定値は、予め命令コードと一緒に外部ROMデバイス200に書き込まれており、CPU110が外部ROMデバイス200から読み出すことによりMEMC160に設定することが可能である。
【0011】
上述した各設定が完了すると、CPU110がMEMC160に対して開始を指示することで、CPU110とは独立して外部ROMデバイス200から外部DRAMデバイス300へ命令コードを複製することが可能となる。
【0012】
ここで、外部ROMデバイス200のアドレス0xF001_1234番地の命令コードを外部DRAMデバイス300のアドレス0x0000_1234番地へ複製する動作について説明する。
【0013】
図4は、特許文献1のメモリ制御システムにおける命令コードを複製する際のタイミングチャートを示す図である。まず、MEMC160は、時刻T2で外部DRAMデバイス300に対するロウアドレス0x001をアドレスバス161にドライブし、時刻T3でRAS#をアサートすることによりこのロウアドレスを有効にする。この時、アドレスバス161の下位10ビットのみが有効である。その後、時刻T4から外部ROMデバイス200と外部DRAMデバイス300に対して同一のアドレス0x11234をアドレスバス161上にドライブする。図2に示すように、外部ROMデバイス200に対してはアドレスバス161の20ビット全てが有効となるが、外部DRAMデバイス300に対してはカラムアドレスに相当する下位12ビットのみが有効となる。従って、この場合の外部DRAMデバイス300に対するカラムアドレスは0x234である。
【0014】
次に、時刻T6でCS#とRD#をアサートすることにより外部ROMデバイス200に対してアドレス0x11234からの読み出し要求を行う。規定時間後、外部ROMデバイス200はデータバス162上にリードデータをドライブする。このとき、MEMC160は同時に時刻T8で外部DRAMデバイス300に対してもUCAS#、LCAS#、WE#をアサートすることによりアドレス0x01234への書き込み要求を行う。これにより、データバス162上にドライブされた命令コードは、直接外部DRAMデバイス300に書き込まれる。以降、転送元アドレスと転送先アドレスをインクリメントして同様に命令コードの読み出しと書き込みを繰り返す。
【0015】
DMA転送が完了すると、MEMC160はCPU110に対してDMA転送の完了を通知する。このDMA転送の完了通知を受けると、CPU110は外部DRAMデバイス300へ複製した命令コードの最初のアドレス0x0000_0000番地に分岐する。これにより、CPU110は順次外部DRAMデバイス300からの命令コードをフェッチする。これ以降、CPU110は外部DRAMデバイス300に対してのみ命令コードをフェッチすることで、命令コードのフェッチを含む外部メモリアクセスのレイテンシーが削減され、システム全体の処理速度を高速化することが可能となる。
【0016】
関連する技術として特開2008−146773号公報(特許文献2)に不揮発性半導体記憶装置が開示されている。この不揮発性半導体記憶装置は、第1のメモリが搭載された第1の半導体チップと、第2のメモリが搭載された第2の半導体チップとを備えている。コピー先である前記第2のメモリにおいて、リードイネーブル動作をライトイネーブル動作と認識させるコマンドを起動した後、前記リードイネーブル動作を行い、コピー元である前記第1のメモリのデータを前記第2のメモリにコピーする。
【0017】
また、特開2007−164895号公報(特許文献3:対応米国特許7486569(B2))に不揮発性半導体記憶装置が開示されている。この不揮発性半導体記憶装置は、複数のメモリチップを有する。この不揮発性半導体記憶装置は、複数のメモリチップ間でデータのコピーを行うとき、コピー先のメモリチップにおいてリードイネーブル動作をライトイネーブル動作と認識させるコマンドを起動した後、前記リードイネーブル動作を行う。
【先行技術文献】
【特許文献】
【0018】
【特許文献1】特開2006−146817号公報
【特許文献2】特開2008−146773号公報
【特許文献3】特開2007−164895号公報
【発明の概要】
【発明が解決しようとする課題】
【0019】
特許文献1に記載の技術では、外部ROMから外部DRAMへの直接転送をする場合(1サイクル転送の場合)と直接転送をしない場合(例示:2サイクル転送の場合)とが混在するためバス転送性能が低下するという問題点がある。その理由は、以下のとおりである。外部ROMから外部DRAMへの直接転送を実行するためには、例えば、CPU110は外部ROMデバイス200に書き込まれている命令コードの最初のアドレス0xF001_0000番地を転送元アドレス、外部DRAMデバイス300へ書き込むための最初のアドレス0x0000_0000番地を転送先アドレス、複製する命令コードの総バイト数(1MB)を転送長としてMEMC160に設定する必要がある。そのため、外部ROMからのデータ読み出しにおいて、外部DRAMへの直接転送をする場合(1サイクル転送の場合)と直接転送をしない場合(例示:2サイクル転送の場合)とが混在すると、その直接転送をする度に、MEMCの動作を切り替えるためのMEMCの設定が必要となる。そのようなMEMCの設定はオーバーヘッドとなるため、バス転送性能が低下する。
直接転送をする場合(1サイクル転送の場合)と直接転送をしない場合(例示:2サイクル転送の場合)とが混在しても、MEMC設定等の追加の動作を行うことなく、1サイクル転送する技術が望まれている。
【課題を解決するための手段】
【0020】
以下に、発明を実施するための形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【0021】
本発明のバス接続回路は、バスマスタ(10)と複数のバススレーブ(12、15)とを接続する。このバス接続回路は、ミラー領域アクセス検出回路(13/63)と、処理回路(21+22+14/21+60+61)とを具備している。ミラー領域アクセス検出回路(13/63)は、バスマスタ(10)が複数のバススレーブ(12、15)のうちの第1バススレーブ(12/15)のミラー領域へアクセスすることを検出して、検出信号(35/62)を出力する。処理回路(21+22+14/21+60+61)は、検出結果(35/62)に基づいて、当該検出結果(35/62)に対応して予め設定されている処理を、アクセスの対象としての領域又はデータに対して実行する。
【0022】
本発明の半導体装置は、バスマスタ(10)と、複数のバススレーブ(12、15)と、バス接続回路(2、2a〜2c)とを具備している。バス接続回路(2、2a〜2c)は、バスマスタ(10)と複数のバススレーブ(12、15)とを接続され、上記段落に記載されている。
【0023】
本発明のバス接続回路の動作方法は、バスマスタ(10)と複数のバススレーブ(12、15)とを接続するバス接続回路の動作方法である。バス接続回路の動作方法は、バスマスタ(10)が複数のバススレーブ(12、15)のうちの第1バススレーブ(12/15)のミラー領域へアクセスすることを検出して、検出信号(35/62)を出力するステップと、検出結果(35/62)に基づいて、当該検出結果(35/62)に対応して予め設定されている処理を、アクセスの対象としての領域又はデータに対して実行するステップとを具備している。
【発明の効果】
【0024】
本発明により、直接転送をする場合と直接転送をしない場合とが混在しても、MEMC設定等の追加の動作を行うことなく、1サイクル転送することが可能となる。
【図面の簡単な説明】
【0025】
【図1】図1は、特許文献1のメモリ制御システムの回路構成を示すブロック図である。
【図2】図2は、特許文献1のメモリ制御システムのLSIと外部ROMデバイス及び外部DRAMデバイスとの具体的な接続形態を示すブロック図である。
【図3】図3は、特許文献1のメモリ制御システムのメモリマップの一例を示す図である。
【図4】図4は、特許文献1のメモリ制御システムの命令コードを複製する際のタイミングチャートを示す図である。
【図5】図5は、本発明の第1の実施の形態に係るバス接続回路を備える半導体装置の構成を示すブロック図である。
【図6】図6は、本発明の第1の実施の形態に係る半導体装置のメモリマップの例を示す図である。
【図7】図7は、本発明の第1の実施の形態に係るバス接続回路の制御方法を示すタイミングチャートである。
【図8】図8は、本発明の第1の実施の形態に係るバス接続回路を備える半導体装置の構成の変形例を示すブロック図である。
【図9】図9は、本発明の第2の実施の形態に係るバス接続回路を備える半導体装置の構成を示すブロック図である。
【図10】図10は、本発明の第2の実施の形態に係るバス接続回路のWriteRead変換回路の構成の一例を示すブロック図である。
【図11】図11は、本発明の第2の実施の形態に係るバス接続回路の制御方法を示すタイミングチャートである。
【図12】図12は、本発明の第2の実施の形態に係るバス接続回路においてWriteRead変換回路を用いない場合での制御方法を示すタイミングチャートである。
【図13】図13は、本発明の第3の実施の形態に係るバス接続回路を備える半導体装置の構成を示すブロック図である。
【発明を実施するための形態】
【0026】
以下、本発明のバス接続回路、半導体装置及びバス接続回路の動作方法の実施の形態に関して、添付図面を参照して説明する。
【0027】
(第1の実施の形態)
本発明の第1の実施の形態に係るバス接続回路を備える半導体装置について説明する。
図5は、本発明の第1の実施の形態に係るバス接続回路を備える半導体装置の構成の一例を示すブロック図である。半導体装置1は、半導体集積回路(LSI:Large Scale Integration)に例示され、バスマスタ(10)と、複数のバススレーブ(12、15)と、バスマスタ(10)と複数のバススレーブ(12、15)とを接続するバス接続回路(2)とを具備している。この図の例では、バスマスタ10と、複数のバススレーブとしての転送元バススレーブ12と転送先バススレーブ15とが互いにバス接続回路2を介して接続されている。バス接続回路2は、バス回路11と直接転送ライトストローブ信号生成回路13とセレクタ14とを備えている。
【0028】
バスマスタ10は、例えばCPU(Central Processing Unit)やMEMC(Memory Controller)である。以下では、バスマスタ10はCPUであるとして説明する(CPU10)。ただし、本発明はバスマスタ10がCPU10である場合に限定されるものではない。CPU10は、バススレーブに対してリードリクエストやライトリクエストを発行する。CPU10は、バス回路11へ、スレーブ選択信号40、アドレス信号31、CPUライトデータ38、転送イネーブル信号34及びライトストローブ信号41を出力し、CPUリードデータ39を受信する。
【0029】
バス回路11は、スレーブ選択信号40を受信した時に、アドレス信号31によって選択されたバススレーブに対してセレクト信号(30、37)を出力する。例えば、アドレス信号31により転送元バススレーブ12が選択されたときは、転送元セレクト信号30を出力する。アドレス信号31により転送先バススレーブ15が選択されたときは、転送元セレクト信号37を出力する。転送元セレクト信号30が出力された場合、転送元バススレーブ12からの転送元リードデータ33を読み出し、CPUリードデータ39とする。直接転送ライトストローブ信号35(後述)がハイレベルのときは、そのCPUリードデータ39をスレーブライトデータ32とする。直接転送ライトストローブ信号35(後述)がロウレベルのときは、CPUライトデータ38をスレーブライトデータ32とする。アドレス信号31と転送イネーブル信号34とライトストローブ信号41はバス回路11を通過するだけである。バス回路11は、アドレスデコーダ20とライトデータセレクタ21とリードデータセレクタ22とを備えている。
【0030】
アドレスデコーダ20は、スレーブ選択信号40を受信した時に、アドレス信号31によって選択されたバススレーブ(12、15)に対してセレクト信号(30、37)を出力する。リードデータセレクタ22は、バススレーブ(12、15)からのリードデータ(33、36)を読み出し、CPUリードデータ39とする(例示:リードデータ(33、36)用配線をCPUリードデータ(39)用配線に接続する)。ライトデータセレクタ21は、直接転送ライトストローブ信号35(後述)がハイレベルのときは、そのCPUリードデータ39をスレーブライトデータ32とする(例示:CPUリードデータ(39)用配線をスレーブライトデータ(32)用配線に接続する)。直接転送ライトストローブ信号35(後述)がロウレベルのときは、CPUライトデータ38をスレーブライトデータ32とする(例示:CPUライトデータ(38)用配線をスレーブライトデータ(32)用配線に接続する)。
【0031】
転送元バススレーブ12は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)である。転送元バススレーブ12は、バス回路11から転送元セレクト信号30とアドレス信号31とスレーブライトデータ32と転送イネーブル信号34とライトストローブ信号41を受信し、転送元リードデータ33をバス回路11に出力する。
【0032】
直接転送ライトストローブ信号生成回路13は、転送元セレクト信号30とアドレス信号31と転送イネーブル信号34とを受信し、予め設定されたアドレス値の場合には直接転送ライトストローブ信号35をハイレベルにして出力する。直接転送ライトストローブ信号生成回路13は、アドレスデコーダ23と3入力AND回路24とを備えている。
【0033】
アドレスデコーダ23は、アドレス信号31の所定ビットが予め設定されたアドレス値の場合にはハイレベルの結果信号を出力する。所定ビットは、後述のミラー領域を示すビットである。3入力AND回路24は、その結果信号と転送元セレクト信号30と転送イネーブル信号34とのAND演算結果を直接転送ライトストローブ信号35として出力する。
【0034】
セレクタ14は、転送先バススレーブ15の直前に接続されている。直接転送ライトストローブ信号35がロウレベルのときは、バス回路11の信号(転送先セレクト信号37、アドレス信号31、転送イネーブル信号34、ライトストローブ信号41)を転送先バススレーブ15に出力する。しかし、直接転送ライトストローブ信号35がハイレベルのときは、転送先セレクト信号37と転送イネーブル信号34とライトストローブ信号41をアクティブにし、アドレス信号31を予めセレクタ14内に設定された値にして、転送先バススレーブ15に出力する。
【0035】
予めセレクタ14内に設定されたアドレス信号の値は、転送先バススレーブ15内のレジスタを表す値であり、その設定方法は、ハードウェアとしてセレクタ14内に埋め込む方法と、バスインターフェースを持ちCPU10から設定可能なレジスタとする方法がある。本実施の形態では、ハードウェアとしてセレクタ14内に埋め込む方法として説明している。
【0036】
転送先バススレーブ15は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)である。転送先バススレーブ15は、バス回路11からスレーブライトデータ32を受信し、セレクタ14を介して転送先セレクト信号37、アドレス信号31、転送イネーブル信号34及びライトストローブ信号41を受信し、転送元リードデータ36をバス回路11に出力する。
【0037】
図6は、本発明の第1の実施の形態に係る半導体装置のメモリマップ70の一例を示す図である。
次の条件の元で、以下の説明を行う。その条件は以下のとおりである。アドレス信号31は8ビットで構成されている。転送元バススレーブ12内に実装したレジスタの数は16個以下である。転送元バススレーブ12はレジスタの選択にアドレス信号31のbit[3:0](下位の4ビット)のみを用いる。バス回路11内のアドレスデコーダ20はCPU10が出力するアドレス信号31のbit[7:6](上位2ビット)が「10」である場合に、転送元バススレーブ選択信号30をアクティブにする。この条件下、以下に説明を行う。
【0038】
bit[7:6]が「10」のとき、転送元バススレーブ12の最初の一つのレジスタ(オフセットアドレス:+0000)は、「10000000」、「10010000」、「10100000」、「10110000」の4つのアドレスのいずれを用いてもアクセスすることが可能である。bit[3:0](下位の4ビット)のみでレジスタが選択されるからである。このアドレスのうち、「10010000」、「10100000」、「10110000」の3つをミラー領域という。従って、これら4つのアドレスで示される領域(3つのミラー領域を含む)は、同一の領域(同一のレジスタ)を示している。
【0039】
上述のように、アドレス信号31において、bit[7:6]は転送元バススレーブ12の選択に用いられ、bit[3:0]は転送元バススレーブ12内のレジスタの選択に用いられているが、bit[5:4]はミラー領域を表すだけで、実体的には何も用いられていない。そこで、本実施の形態では、転送元バススレーブ12から転送先バススレーブ15に直接転送を行う場合(1サイクル転送の場合)、CPU10でアドレス信号31のbit[5:4]に、「01」、「10」、「11」のいずれかを設定するものとする。一方、直接転送をしない場合(例示:2サイクル転送の場合)、CPU10でアドレス信号31のbit[5:4]に、「00」を設定するものとする。すなわち、アドレス信号でミラー領域(bit[5:4]=01」、「10」、「11」)を指定するか否かにより、直接転送をするか否かを指定している。
【0040】
このように、本実施の形態では、これまで実体的には何ら用いられていなかったミラー領域へアクセスすること(ミラー領域をアドレス信号で指定すること)に対して、単にデータを指定するだけでなく、一つの命令(動作)を実行するように設定している。それにより、ミラー領域を有効に活用している。ここでは、その命令(動作)として、直接転送(1サイクル転送)を設定している。その結果、直接転送をする場合(1サイクル転送の場合)と直接転送をしない場合(例示:2サイクル転送の場合)とを、アドレス信号31のbit[5:4]の変更だけで対応することができる。その結果、直接転送をする度に1サイクル転送の動作と2サイクル転送の動作とを切り替えるための特許文献1に記載のような設定を行う、という手順が不要となる。
【0041】
この図の例では、メモリマップ70は、転送先バススレーブ15のメモリ領域71と、転送元バススレーブ12のメモリ領域72とを備えている。ここで、転送元バススレーブ12のメモリ領域72では、メモリ領域72a〜72dの4つの領域が存在する。しかし、現実には1つのメモリ領域72しか存在せず、他の3つはミラー領域を示している。ここでは、上述のように、bit[5:4]が「00」のときは直接転送をしない場合(例示:2サイクル転送の場合)とし、bit[5:4]が「01」、「10」、「11」のいずれかのときは直接転送をする場合(1サイクル転送の場合)としている。従って、アドレス信号が「10000000」の場合、bit[5:4]は「00」なので、メモリ領域72aを示し、直接転送をしない(例示:2サイクル転送をする)ことになる。また、アドレス信号が「10010000」の場合、bit[5:4]は「01」なので、メモリ領域72bを示し、直接転送をする(1サイクル転送をする)ことになる。
【0042】
このとき、例えば、bit[5:4]の値が「01」(メモリ領域72bにアクセス)の場合に直接転送と設定されているとする。その場合、アドレスデコーダ23は、アドレス信号31をデコードしたとき、bit[5:4]の値が「01」の場合に、ハイレベルの信号を出力する。その結果、直接転送ライトストローブ信号生成回路13は、直接転送ライトストローブ信号35をアクティブにする。一方、bit[5:4]の値が「00」(メモリ領域72aにアクセス)の場合、ロウレベルの信号を出力する。その結果、直接転送ライトストローブ信号生成回路13は、直接転送ライトストローブ信号35をロウレベルにする。なお、bit[5:4]の値が「10」、「11」(それぞれメモリ領域72c、72dにアクセス)については、直接転送する場合としても良いし、直接転送しない場合としても良いし、異なる他の命令としても良い。
【0043】
このようなアドレス信号31が示す値は、CPU10のプログラムコードに埋め込まれている。したがって、アドレス信号31が示す値をミラー領域に変更したこと(bit[5:4]を[00]から「01」、「10」、「11」のいずれかに変更したこと)によるオーバーヘッドはない。
【0044】
なお、図6に示すメモリマップ70は例示であり、本実施の形態がこの例に限定されることはない。すなわち、アドレス信号31で示されるミラー領域の少なくとも一つを、直接転送(1サイクル転送)に対応させておけば、メモリマップの構成は任意に設定することができる。
【0045】
以上のように、ミラー領域へのリードアクセスという命令に対して、追加的に他の命令(動作)を含ませることができる。例えば、上記実施の形態では、リードアクセスに対して更に「直接転送」を含ませることができる。すなわち、追加的な設定を何ら行うことなく、アドレス信号の変更(ミラー領域の指定)を行うことで、単なるリードアクセススだけでなく、追加的な他の命令(動作)を行わせることが可能となる。
【0046】
また、Read命令を検出してCPU10から転送元バススレーブ12にリードを行う構成にしたため、転送元バススレーブ12のアクセスするアドレス(読み出し先のアドレス)をCPU10から制御することが可能となる。
【0047】
次に、本発明の第1の実施の形態に係るバス接続回路の制御方法(バス接続回路(半導体装置)の動作)について説明する。図7は、本発明の第1の実施の形態に係るバス接続回路の制御方法を示すタイミングチャートである。(a)はクロック信号、(b)はスレーブ選択信号40、(c)は転送元セレクト信号30、(d)は転送元リードデータ33、(e)はアドレス信号31、(f)はCPUリードデータ39、(g)は転送イネーブル信号34、(h)は直接転送ライトストローブ信号35である。ここでは、CPU10が転送元バススレーブ12のミラー領域にリードアクセスをすることにより、直接転送(1サイクル転送)をする場合を考える。
【0048】
T1のタイミングにおいて、CPU10が転送元バススレーブ12のミラー領域にリードアクセスをする(バス回路11上にリードリクエストを発行する)。すなわち、CPU10は、スレーブ選択信号40(b)をハイレベルとし、アドレス信号31(e)を出力する。アドレスデコーダ20は、スレーブ選択信号40及びアドレス信号31に基づいて、転送元セレクト信号30(c)をハイレベルとして、アドレス信号31によって選択された転送元バススレーブ12にリードアクセス要求を行う。
【0049】
T2のタイミングにおいて、転送元バススレーブ12は、アドレス信号31によって指定された領域から転送元リードデータ33(d)を出力する。セレクタ22は、転送元セレクト信号30に基づいて、転送元リードデータ33をCPUリードデータ39とする(例示:転送元リードデータ用の配線をCPUリードデータ用の配線に接続する)。転送元リードデータ33はリードレスポンスとなる。
【0050】
また、T2のタイミングにおいて、CPU10は、転送イネーブル信号34(g)をハイレベルとする。直接転送ライトストローブ信号生成回路13は、アドレス信号31、転送元セレクト信号30及び転送イネーブル信号34に基づいて、直接転送ライトストローブ信号35(h)を生成する。このとき、転送元セレクト信号30がハイレベルであり、転送イネーブル信号34がハイレベルであり、ミラー領域を示すアドレス信号31のbit[5:4]をアドレスデコーダ23でデコードした結果がハイレベルとなったとき、直接転送ライトストローブ信号35がハイレベルとなる。
【0051】
また、T2のタイミングにおいて、ライトデータセレクタ21は、直接転送ライトストローブ信号35がハイレベルであることから、CPUリードデータ39をスレーブライトデータ32とする(例示:CPUリードデータ用の配線をスレーブライトデータ用の配線に接続する)。
【0052】
また、T2のタイミングにおいて、セレクタ14は、直接転送ライトストローブ信号35がハイレベルであることから、バス回路11からの転送先セレクト信号37、アドレス信号31、転送イネーブル信号34及びライトストローブ信号41のうち、転送先セレクト信号37と転送イネーブル信号34とライトストローブ信号41をアクティブにし、アドレス信号31を予めセレクタ14内に設定された値にして、転送先バススレーブ15に出力する。その結果、転送先バススレーブ15は、転送先セレクト信号37と転送イネーブル信号34とライトストローブ信号41と、予め設定されたアドレス信号31とに基づいて、スレーブライトデータ32を書き込むことができる。
【0053】
本実施の形態により、1サイクル転送する場合としない場合とが混在した場合でのバス転送性能の低下を防ぐことができる。その理由は、転送元バススレーブに対する通常のアクセスと1サイクル転送との区別を、ミラー領域を示すアドレス信号31から生成した直接転送ライトストローブ信号35で行うことが可能であり、メモリコントローラ(MEMC)の設定を行なわずに1サイクル転送が可能となるからである。このとき、アドレス信号31が示す値はCPU10のプログラムコードに埋め込まれており、この値をミラー領域に変更したことによるオーバーヘッドはない。
【0054】
図8は、本発明の第1の実施の形態に係るバス接続回路を備える半導体装置の構成の変形例を示すブロック図である。この図の半導体装置1aは複数の転送先バススレーブ15a、15b、15cを備え、バス接続回路2aは複数の直接転送ライトストローブ信号生成回路13a、13b、13cを備えている点で、図5の半導体装置1及びバス接続回路2と相違している。複数の直接転送ライトストローブ信号生成回路13a、13b、13cは、複数の転送先バススレーブ15a、15b、15cに対応している。
【0055】
図5の例では、直接転送の対象となる転送先バススレーブ15が一つであるため、bit[5:4]が「01」、「10」、「11」のいずれかのときは直接転送とすれば良い。一方、この図の例では、直接転送の対象として複数の転送先バススレーブ15a、15b、15cが設けられている。この場合、bit[5:4]により各転送先を指定することができる。例えば、bit[5:4]が「01」の場合には第1の転送先バススレーブ15aに直接転送するとし、「10」の場合には第2の転送先バススレーブ15bに直接転送するとし、「11」の場合には第3の転送先バススレーブ15cに直接転送するとすることができる。
【0056】
直接転送ライトストローブ信号生成回路13a、13b、13cは、アドレス信号31、転送元セレクト信号30及び転送イネーブル信号34に基づいて、直接転送ライトストローブ信号35a、35b、36cを出力する。例えば、直接転送ライトストローブ信号生成回路13aにおいて、転送元セレクト信号30がハイレベルであり、転送イネーブル信号34がハイレベルであり、ミラー領域を示すアドレス信号31のbit[5:4]が「01」でアドレスデコーダ23aの出力がハイレベルとなったとき、直接転送ライトストローブ信号35aがハイレベルとなる。また、直接転送ライトストローブ信号生成回路13bにおいて、転送元セレクト信号30がハイレベルであり、転送イネーブル信号34がハイレベルであり、ミラー領域を示すアドレス信号31のbit[5:4]が「10」でアドレスデコーダ23bの出力がハイレベルとなったとき、直接転送ライトストローブ信号35bがハイレベルとなる。また、直接転送ライトストローブ信号生成回路13cにおいて、転送元セレクト信号30がハイレベルであり、転送イネーブル信号34がハイレベルであり、ミラー領域を示すアドレス信号31のbit[5:4]が「11」でアドレスデコーダ23cの出力がハイレベルとなったとき、直接転送ライトストローブ信号35cがハイレベルとなる。接転送ライトストローブ信号35a、35b、35cは、3入力OR回路28で束ねられ、ライトデータセレクタ21に入力される。
【0057】
また、転送先バススレーブ15、15a、15b、15cからのリードデータ36a、36b、36cは、3入力OR回路29で束ねられ、セレクタ22に入力される。
その他の動作は、図5の場合と同様である。
【0058】
この変形例のように、アドレス信号31のミラー領域を示すビット(例示:bit[5:4])を用いることにより、直接転送するか否かという命令(動作)だけでなく、直接転送の転送先を指定するという命令(動作)も同時に実行することも可能となる。
【0059】
以上のように、ミラー領域へのリードアクセスという命令に対して、追加的に他の命令(動作)を含ませることができる。例えば、上記変形例では、リードアクセスに対して更に「転送先選択」及び「直接転送」を含ませることができる。すなわち、追加的な設定を何ら行うことなく、アドレス信号の変更(ミラー領域の指定)を行うことで、単なるリードアクセスだけでなく、追加的な他の命令(動作)を行わせることが可能となる。
【0060】
(第2の実施の形態)
次に、本発明の第2の実施の形態に係るバス接続回路を備える半導体装置について説明する。
図9は、本発明の第2の実施の形態に係るバス接続回路を備える半導体装置の構成の一例を示すブロック図である。本実施の形態の半導体装置1b及びバス接続回路2bは、バス回路50、51、バスブリッジ回路53、54、及びWriteRead変換回路55を更に具備している点で第1の実施の形態の半導体装置1及びバス接続回路2と相違している。以下では、主に相違点について説明する。
【0061】
CPU10はバス回路50に接続されている。バスブリッジ53は、バス回路50とバス回路51とのデータの受け渡しを行う。バスブリッジ54は、バス回路51とバス回路11とのデータの受け渡しを行う。バスブリッジ53とバスブリッジ54は一般的なバスブリッジ回路である。また、バスブリッジ54とバス回路11との間のデータの受け渡しはWriteRead変換回路55を介して行う。WriteRead変換回路55は、そのデータの受け渡しの時、CPU10からのライトアクセス信号をリードアクセス信号に変換する。
【0062】
図10は、本発明の第2の実施の形態に係るバス接続回路のWriteRead変換回路の構成の一例を示すブロック図である。WriteRead変換回路55は、バスブリッジ54から受信したバススレーブ選択信号40とアドレス信号31と転送イネーブル信号34に基づいて、CPU10のアクセスがミラー領域へのアクセス(直接転送)か否かを検出する。当該ミラー領域へのアクセス(直接転送)の場合、バスブリッジ54から受信したライトストローブ信号41を反転しライトストローブ信号42としてバス回路11に出力する。また、バスブリッジ54からのバススレーブ選択信号40とアドレス信号31と転送イネーブル信号34は、更にバス回路11へも出力される。CPUリードデータ39及びCPUライトデータ38は、WriteRead変換回路55を通過するだけである。WriteRead変換回路55は、アドレスデコーダ83と3入力AND回路84とマルチプレクサ85とを備えている。
【0063】
アドレスデコーダ83は、バスブリッジ54から受信したアドレス信号31の所定ビットが予め設定されたアドレス値の場合(直接転送の場合)にはハイレベルの結果信号を出力する。所定ビットは、第1の実施の形態で説明されたミラー領域を示すビットである。図6の例では、bit[5:4]である。すなわち、ミラー領域へのアクセスの場合(直接転送の場合)には、ハイレベルの結果信号を出力する。3入力AND回路84は、その結果信号とバスブリッジ54から受信したバススレーブ選択信号40及び転送イネーブル信号34とのAND演算結果をマルチプレクサ85の制御信号として出力する。すなわち、ミラー領域へのアクセスの場合には、ハイレベルの制御信号を出力する。マルチプレクサ85は、制御信号に基づいて、ミラー領域へのアクセスの場合には、ライトストローブ信号41を反転したストローブ信号42としてバス回路11に出力する。このストローブ信号42はライトストローブ信号41を反転しているのでリードストローブ信号となる。一方、ミラー領域へのアクセスでない場合には、ロウレベルの制御信号を出力する。マルチプレクサ85は、制御信号に基づいて、ミラー領域へのアクセスでない場合には、ライトストローブ信号41を反転せずにそのままの状態のストローブ信号42としてバス回路11に出力する。このストローブ信号42はライトストローブ信号41そのままなのでライトストローブ信号となる。
【0064】
次に、本発明の第2の実施の形態に係るバス接続回路の制御方法(バス接続回路(半導体装置)の動作)について説明する。
【0065】
転送元バススレーブ12へのリードリクエストの場合、CPU10がリードリクエストを発行すると、リードリクエストは、バスブリッジ53、バスブリッジ54、転送元バススレーブ12に伝播する。転送元バススレーブ12がリードリクエストに応答してリードデータを発行すると、リードデータは、バスブリッジ54、バスブリッジ53、CPU10と伝播する。それにより、リードリクエストが完了する。そして、バスブリッジ53は、リードリクエストと対応するリードデータの転送完了をもってデータ転送完了通知(リードレスポンス)をCPU10へ発行することになる。それにより、リードリクエストの処理が完了する。
【0066】
一方、転送元バススレーブ12へのライトリクエストの場合、CPU10がライトリクエストを発行すると、ライトリクエストは、バスブリッジ53、バスブリッジ54、転送元バススレーブ12に伝播する。しかし、バスブリッジ53は、ライトリクエストの発行の次のクロックのタイミングでデータ転送完了通知(ライトレスポンス)をCPU10へ発行することができる。バスブリッジ53がライトデータ転送完了を待つ必要は無い。
【0067】
以上のことから、本実施の形態では、第1の実施の形態のようにリードリクエストで直接転送を行うのではなく、ライトリクエストで直接転送を行うことしている。それにより、複数のバスブリッジを経由して直接転送のリクエストを伝搬させる場合であっても、CPU10は短期間でデータ転送完了通知を得ることができる。ただし、リードリクエストを用いる第1の実施の形態のバス接続回路の構成を用いるべく、ライトリクエストをWriteRead変換回路55でリードリクエストに変更する。以下、詳細に説明する。
【0068】
図11は、本発明の第2の実施の形態に係るバス接続回路の制御方法を示すタイミングチャートである。ここでは、CPU10が転送元バススレーブ12のミラー領域にライトアクセスをすることにより、直接転送(1サイクル転送)をする場合を考える。
【0069】
T1のタイミングにおいて、CPU10は、バス回路50上にライトリクエスト(W)を発行する。そのライトリクエスト(W)は、転送元バススレーブ12のミラー領域へのライトリクエストである。バスブリッジ53は、バス回路50からライトリクエスト(W)を受け取る。
T2のタイミングにおいて、バスブリッジ53は、ライトリクエスト(W)に応答して、バス回路50上にライトレスポンス(WR)を返しバス転送が完了する。CPU10は、バス転送が完了したため、T3のタイミングで次のライトリクエスト(W)を発行することができる。
【0070】
T2のタイミングにおいて、バスブリッジ53は、ライトリクエスト(W)に応答して、バス回路51上にライトリクエスト(W)を発行する。バスブリッジ54は、バス回路51からライトリクエスト(W)を受け取る。
T3のタイミングにおいて、バスブリッジ54は、ライトリクエスト(W)に応答して、バス回路51上にライトレスポンス(WR)を返しバス転送が完了する。バスブリッジ53は、バス転送が完了したため、T4のタイミングで次のライトリクエスト(W)を発行することができる。
【0071】
T3のタイミングにおいて、バスブリッジ54は、ライトリクエスト(W)に応答して、転送元バススレーブ12に対してライトリクエスト(W)を発行する。それに対応して、WriteRead変換回路55は、そのライトリクエスト(W)をリードリクエスト(R)に変換し、バス回路11上に発行する。バス回路11は、WriteRead変換回路55からリードリクエスト(R)を受け取る。加えて、バス回路11は、バスブリッジ54(CPU10)からのバススレーブ選択信号40とアドレス信号31と転送イネーブル信号34を受け取る。その後、第1の実施の形態と同様の動作を行い、直接転送を実行する。この場合、この図のT3が、第1の実施の形態のT1に対応する。また、この図のT4が、第1の実施の形態のT2に対応する。また、その結果、T4において、転送元バススレーブ12がリードデータをバス回路11上に出力することにより、バス回路11上にリードレスポンス(RR;CPUリードデータ39)が返信され、バス転送が完了する。
【0072】
図12は、本発明の第2の実施の形態に係るバス接続回路においてWriteRead変換回路を用いない場合(Offにした場合)での制御方法を示すタイミングチャートである。WriteRead変換回路55をOffにして用いない場合、WriteRead変換回路55によるライトリクエストからリードリクエストへの変換が行われない。従って、CPU10は、転送元バススレーブ12へリードリクエスト(R)を発行する必要がある。その場合の動作は以下のようになる。
【0073】
T1のタイミングにおいて、CPU10は、バス回路50上にリードリクエスト(R)を発行する。そのリードリクエスト(R)は、転送元バススレーブ12のミラー領域へのライトリクエストである。バスブリッジ53は、バス回路50からリードリクエスト(R)を受け取る。
T2のタイミングにおいて、バスブリッジ53は、リードリクエスト(R)に応答して、バス回路51上にリードリクエスト(R)を発行する。バスブリッジ54は、バス回路51からリードリクエスト(R)を受け取る。
T3のタイミングにおいて、バスブリッジ54は、リードリクエスト(R)に応答して、バス回路11上にリードリクエスト(R)を発行する。加えて、バス回路11は、バスブリッジ54(CPU10)からのバススレーブ選択信号40とアドレス信号31と転送イネーブル信号34を受け取る。
その後、第1の実施の形態と同様の動作を行い、直接転送を実行する。この場合、この図のT3が、第1の実施の形態のT1に対応する。また、この図のT4が、第1の実施の形態のT2に対応する。また、その結果、T4において、転送元バススレーブ12がリードデータをバス回路11上に出力することにより、バス回路11上にリードレスポンス(RR;CPUリードデータ39)が返信される。
T5のタイミングにおいて、バスブリッジ54は、リードレスポンス(RR)に応答して、バス回路51上にリードレスポンス(RR)を発行する。バスブリッジ53は、バス回路51からリードレスポンス(RR)を受け取る。
T6のタイミングにおいて、バスブリッジ53は、リードレスポンス(RR)に応答して、バス回路50上にリードリクエスト(R)を発行する。CPU10は、バス回路50からードレスポンス(RR)を受け取る。以上のプロセスにより、バス転送が完了する。
【0074】
以上のように、WriteRead変換回路55をOffにした場合(図12)、T1のタイミングでCPU10から転送元バススレーブ12へ発生したリードリクエストは、T6のタイミングでバスブリッジ53からCPU10へリードレスポンスが返るまでリードデータ転送を完了することができない。すなわち、WriteRead変換回路55をOffにした場合、CPU10としては、1回の直接転送を完了するのにT1からT6の6クロックを必要とする。しかし、WriteRead変換回路55をOnにした場合(図11)、CPU10としては、1回の直接転送を完了するのにT1からT2の2クロックでよい。このように、WriteRead変換回路55を用いることで、CPU10は短期間でデータ転送完了通知を得ることができる。
【0075】
本実施の形態のバス接続回路においても、第1の実施の形態の効果を得ることができる。その理由は、WriteRead変換回路55によりライトリクエストがリードリクエストに変換されるため、第1の実施の形態と同様の構成及び方法により、転送元バススレーブ12から転送先バススレーブ15への直接転送を行うことができるからである。
【0076】
本実施の形態のバス接続回路では、更に、バスブリッジを介した多段構成バス回路の場合の1サイクル転送のスループットを向上することが可能となる。その理由は、ライトリクエストの場合には、バスブリッジは転送元バススレーブ12からの応答を待たずにバスマスタにライトレスポンスを返すことができ、バスマスタは次のライトリクエスト発行を開始することができるためである。
【0077】
以上のように、ミラー領域へのライトアクセスという命令に対して、追加的に他の命令(動作)を含ませることができる。例えば、上記実施の形態では、ライトアクセスに対して更に「ライトアクセスのリードアクセスへの変換」及び「直接転送」を含ませることができる。すなわち、追加的な設定を何ら行うことなく、アドレス信号の変更(ミラー領域の指定)を行うことで、単なるライトアクセスだけでなく、追加的な他の命令(動作)を行わせることが可能となる。
【0078】
(第3の実施の形態)
次に、本発明の第3の実施の形態に係るバス接続回路を備える半導体装置について説明する。
図13は、本発明の第3の実施の形態に係るバス接続回路を備える半導体装置の構成の一例を示すブロック図である。本実施の形態の半導体装置1c及びバス接続回路2cは、転送元バススレーブ12のミラー領域にリードアクセスするのではなく、転送先バススレーブ15のミラー領域にライトアクセスすることで直接転送を実現する点で第1の実施の形態の半導体装置1及びバス接続回路2と相違している。以下では、主に相違点について説明する。
【0079】
バス接続回路2cは、第1の実施の形態のバス接続回路2と比較して、リードデータセレクタ22がセレクタ60に置き換えられ、セレクタ14がセレクタ61に置き換えられ、直接転送ライトストローブ信号生成回路13が直接転送リードストローブ信号生成回路63に置き換えられている。
【0080】
アドレスデコーダ20は、スレーブ選択信号40入力時に、アドレス信号31によって選択されたバススレーブ(12、15)に対してセレクト信号(30、37)を出力する。
セレクタ60は、直接転送リードストローブ信号62(後述)がロウレベルのとき、かつ、転送先セレクト信号37がハイレベルのときは転送先リードデータ36をCPUリードデータ39として出力する(例示:リードデータ(36)用配線をCPUリードデータ(39)用配線に接続する)。また、直接転送リードストローブ信号62がロウレベルのとき、かつ、転送元セレクト信号30がハイレベルのときは転送元リードデータ33をCPUリードデータ39として出力する(例示:リードデータ(33)用配線をCPUリードデータ(39)用配線に接続する)。一方、セレクタ60は、直接転送リードストローブ信号62がハイレベルのとき、かつ、転送先セレクト信号37がハイレベルのときは転送元リードデータ33をCPUリードデータ39として出力する(例示:リードデータ(33)用配線をCPUリードデータ(39)用配線に接続する)。また、直接転送リードストローブ信号62がハイレベルのとき、かつ、転送元セレクト信号30がハイレベルのときは転送先リードデータ36をCPUリードデータ39として出力する(例示:リードデータ(36)用配線をCPUリードデータ(39)用配線に接続する)。
ライトデータセレクタ21は、直接転送リードストローブ信号62(後述)がハイレベルのときは、そのCPUリードデータ39をスレーブライトデータ32とする(例示:CPUリードデータ(39)用配線をスレーブライトデータ(32)用配線に接続する)。直接転送ライトストローブ信号35がロウレベルのときは、CPUライトデータ38をスレーブライトデータ32とする(例示:CPUライトデータ(38)用配線をスレーブライトデータ(32)用配線に接続する)。
【0081】
直接転送リードストローブ信号生成回路63は、転送先セレクト信号37とアドレス信号31と転送イネーブル信号34とを受信し、予め設定されたアドレス値の場合には直接転送リードストローブ信号62にハイレベルを出力する。直接転送リードストローブ信号生成回路63は、アドレスデコーダ23と3入力AND回路24とを備えている。
【0082】
アドレスデコーダ23は、アドレス信号31の所定ビットが予め設定されたアドレス値の場合にはハイレベルの結果信号を出力する。所定ビットは、第1の実施の形態で説明されたミラー領域(図6)を示すビットである。3入力AND回路24は、その結果信号と転送元セレクト信号30と転送イネーブル信号34とのAND演算結果を直接転送リードストローブ信号62として出力する。
【0083】
セレクタ61は、転送元バススレーブ12の直前に接続されている。直接転送リードストローブ信号62がロウレベルのときは、バス回路11の信号(転送元セレクト信号30、アドレス信号31、転送イネーブル信号34、ライトストローブ信号41)を転送元バススレーブ12に出力する。しかし、直接転送リードストローブ信号62がハイレベルのときは、転送元セレクト信号30と転送イネーブル信号34とをアクティブにし、アドレス信号31を予めセレクタ61内に設定された値にして、転送元バススレーブ12に出力する。
【0084】
本実施の形態において、CPU10は、転送先バススレーブ15のミラー領域に対してライトアクセスを行う。ミラー領域の設定方法については、図6の方法が例示される。ただし、本実施の形態では、例えば、図6において、転送元バススレーブの領域と転送先バススレーブの領域とを入れ替える。すなわち、メモリマップ70において、転送先バススレーブ15に対してメモリ領域72を割り当て、転送元バススレーブ12に対してメモリ領域71を割り当てる。
【0085】
次に、本発明の第3の実施の形態に係るバス接続回路の制御方法(バス接続回路(半導体装置)の動作)について説明する。
【0086】
T1のタイミングにおいて、CPU10が転送先バススレーブ15のミラー領域にライトアクセスをする(バス回路11上にライトリクエストを発行する)。すなわち、CPU10は、スレーブ選択信号40をハイレベルとし、アドレス信号31を出力する。アドレスデコーダ20は、スレーブ選択信号40及びアドレス信号31に基づいて、転送元セレクト信号37をハイレベルとして、アドレス信号31によって選択された転送先バススレーブ15にライトアクセス要求を行う。
【0087】
T2のタイミングにおいて、CPU10は、転送イネーブル信号34をハイレベルとする。直接転送リードストローブ信号生成回路63は、ミラー領域へのアクセスを検出し、直接転送リードストローブ信号62にハイレベルにする。具体的には、直接転送リードストローブ信号生成回路63は、アドレス信号31、転送先セレクト信号37及び転送イネーブル信号34に基づいて、直接転送リードストローブ信号62を生成する。このとき、転送元セレクト信号37がハイレベルであり、転送イネーブル信号34がハイレベルであり、ミラー領域を示すアドレス信号31のbit[5:4]をアドレスデコーダ23でデコードした結果がハイレベルとなったとき、直接転送リードストローブ信号62がハイレベルとなる。
【0088】
セレクタ61は、直接転送リードストローブ信号62がハイレベルのとき、転送元セレクト信号30と転送イネーブル信号34とをアクティブにし、アドレス信号31を予めセレクタ61内に設定された値にして、転送元バススレーブ12に出力する。転送元バススレーブ12は、アドレス信号31によって指定された領域から転送元リードデータ33を出力する。
【0089】
セレクタ60は、直接転送リードストローブ信号62がハイレベルのとき、かつ、転送先セレクト信号37がハイレベルのとき、転送元リードデータ33をCPUリードデータ39として出力する(例示:リードデータ(33)用配線をCPUリードデータ(39)用配線に接続する)。転送元リードデータ33はリードレスポンスとなる。ライトデータセレクタ21は、直接転送リードストローブ信号62がハイレベルのときは、そのCPUリードデータ39をスレーブライトデータ32とする(例示:CPUリードデータ(39)用配線をスレーブライトデータ(32)用配線に接続する)。
【0090】
転送先バススレーブ15は、転送先セレクト信号37と転送イネーブル信号34とライトストローブ信号41とアドレス信号31とに基づいて、スレーブライトデータ32を書き込むことができる(CPU10のライトアクセス)。
【0091】
本実施の形態においても、第1の実施の形態と同様の効果を得ることができる。また、この場合にも、第1の実施の形態のような変形例が可能である。また、第2の実施の形態の場合にはWriteRead変換回路55が不要となる。また、Write命令を検出して転送先バススレーブ15から転送元バススレーブ12にリードを行う構成にしたため、転送先バススレーブ15のアクセスするアドレス(書き込み先のアドレス)をCPU10から制御することが可能となる。
【0092】
以上のように、ミラー領域へのライトアクセスという命令に対して、追加的に他の命令(動作)を含ませることができる。例えば、上記実施の形態では、ライトアクセスに対して更に「直接転送」を含ませることができる。すなわち、追加的な設定を何ら行うことなく、アドレス信号の変更(ミラー領域の指定)を行うことで、単なるリードアクセス又はライトアクセスだけでなく、追加的な他の命令(動作)を行わせることが可能となる。
【0093】
以上説明されたように、上記各実施の形態により、直接転送をする場合(1サイクル転送の場合)と直接転送をしない場合(例示:2サイクル転送の場合)とが混在しても、MEMC設定等の追加の動作を行うことなく、1サイクル転送することが可能となる。
【0094】
また、上記各実施の形態により、ミラー領域へのリードアクセス又はライトアクセスという命令に対して、追加的に他の命令(動作)を含ませることができる。例えば、上記実施の形態では、リードアクセスに対して更に「直接転送」を含ませたり(図5)、リードアクセスに対して更に「転送先選択」及び「直接転送」を含ませたり(図8)、ライトアクセスに対して更に「ライトアクセスのリードアクセスへの変換」及び「直接転送」を含ませたり(図9、図10)、ライトアクセスに対して更に「直接転送」(図13)を含ませたりすることができる。すなわち、追加的な設定を何ら行うことなく、アドレス信号の変更(ミラー領域の指定)を行うことで、単なるリードアクセス又はライトアクセスだけでなく、追加的な他の命令(動作)を行わせることが可能となる。
【0095】
ミラー領域へのアクセス命令に対して追加的に含ませる他の命令(動作)としては、上記各実施の形態の例の他に種々の命令が考えられる。すなわち、例えば、第1の実施の形態における直接転送ライトストローブ信号35は、以下のような種々の用途に用いることが可能である。ただし、以下では、直接転送ライトストローブ信号35のことをミラー領域検出信号と呼ぶ。ミラー領域検出信号は、ミラー領域へのアクセスを検出することでハイレベルとなる信号である。
【0096】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのレジスタインターフェース回路を制御する。それにより、バススレーブ内のリードオンリーレジスタにライトできるようになる。このとき、アドレス信号は、例えば、ミラー領域(リードオンリーレジスタにライトする命令に対応)+リードオンリーレジスタ内のアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0097】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのレジスタインターフェース回路を制御する。それにより、バススレーブ内のライトオンリーレジスタをリードできるようになる。このとき、アドレス信号は、例えば、ミラー領域(ライトオンリーレジスタをリードする命令に対応)+ライトオンリーレジスタ内のアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0098】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのレジスタインターフェース回路を制御する。それにより、バススレーブの隠しレジスタ(リードしてもレジスタ値に関わらず0が読み出せる)の値をリードできるようになる。このとき、アドレス信号は、例えば、ミラー領域(隠しレジスタをリードする命令に対応)+隠しレジスタ内のアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0099】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのリードデータ・ライトデータの接続を変更する。それにより、リードデータ・ライトデータのエンディアンを変換できるようになる。このとき、アドレス信号は、例えば、ミラー領域(リードデータ・ライトデータの接続を変更する命令に対応)+リードデータ又はライトデータのアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0100】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのリードデータ・ライトデータに接続した型変換回路を制御する。それにより、リードデータ・ライトデータの型変換(Signed/Unsigned、固定小数点−浮動小数点)ができるようになる。このとき、アドレス信号は、例えば、ミラー領域(リードデータ・ライトデータの型変換命令に対応)+リードデータ又はライトデータのアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0101】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのレジスタインターフェース回路を制御する。それにより、リードデータ・ライトデータのパッキング(複数のbyteデータを1回で纏めてアクセスする)ができるようになる。このとき、アドレス信号は、例えば、ミラー領域(リードデータ・ライトデータのパッキング命令に対応)+リードデータ又はライトデータのアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0102】
ミラー領域検出信号をバススレーブに入力し、ミラー領域検出信号に基づいてバススレーブのリードデータ・ライトデータに接続した画像フォーマット変換回路を制御する。それにより、リードデータ・ライトデータの画像フォーマット変換(YUV422,YUV420,YUV411,RGB etc.)ができるようになる。このとき、アドレス信号は、例えば、ミラー領域(リードデータ・ライトデータの画像フォーマット変換命令に対応)+リードデータ又はライトデータのアドレスである。
【0103】
ミラー領域検出信号をバススレーブに入力することで、ミラー領域検出信号に基づいてバススレーブの機能を変更する(ex.UARTの送信FIFO領域の場合、ミラー領域ごとに出力フォーマットが変わる)ことができるようになる。このとき、アドレス信号は、例えば、ミラー領域(機能を変更する命令に対応)+バススレーブのアドレスである。通常は、モード設定(変更)のためにレジスタアクセスが必要となるが、本発明では不要である。
【0104】
本発明は上記各実施の形態に限定されるものではなく、発明の範囲及び精神を逸脱しない変形や変更が可能であることは明らかである。また、各実施の形態に用いられている各技術は、技術的矛盾の発生しない限り、他の実施の形態や応用例において適用可能である。
【0105】
本発明はいくつかの実施の形態と併せて上述されたが、これらの実施の形態は本発明を説明するために単に提供されたものであることは当業者にとって明らかであり、意義を限定するように添付のクレームを解釈するために頼ってはならない。
【符号の説明】
【0106】
1、1a、1b、1c 半導体装置
2、2a、2b、2c バス接続回路
10 バスマスタ(CPU)
11 バス回路
12 転送元バススレーブ
13、13a、13b、13c 直接転送ライトストローブ信号生成回路
14 セレクタ
15、15a、15b、15c 転送先バススレーブ
20 アドレスデコーダ
21 ライトデータセレクタ
22 セレクタ
23、23a、23b、23c アドレスデコーダ
24、24a、24b、24c 3入力AND回路
28 3入力OR回路
29 3入力OR回路
30 転送元セレクト信号
31 アドレス信号
32 スレーブライトデータ
33 転送元リードデータ
34 転送イネーブル信号
35、35a、35b、35c 直接転送ライトストローブ信号
36、36a、36b、36c リードデータ
37 セレクト信号
38 CPUライトデータ
39 CPUリードデータ
40 スレーブ選択信号
41 ライトストローブ信号
42 ライトストローブ信号
50、51 バス回路
53、54 バスブリッジ
55 WriteRead変換回路
60 セレクタ
61 セレクタ
62 直接転送リードストローブ信号
63 直接転送リードストローブ信号生成回路
70 メモリマップ
71 メモリ領域
72 メモリ領域
72a〜72d メモリ領域
83 アドレスデコーダ
84 3入力AND回路
85 マルチプレクサ

【特許請求の範囲】
【請求項1】
バスマスタと複数のバススレーブとを接続するバス接続回路であって、
前記バスマスタが前記複数のバススレーブのうちの第1バススレーブのミラー領域へアクセスすることを検出して、検出信号を出力するミラー領域アクセス検出回路と、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理を、前記アクセスの対象としての領域又はデータに対して実行する処理回路と
を具備する
バス接続回路。
【請求項2】
請求項1に記載のバス接続回路において、
前記ミラー領域アクセス検出回路は、
前記第1バススレーブとしての転送元バススレーブのミラー領域へのアクセスを検出して、前記検出信号を出力し、
前記処理回路は、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理として、前記アクセスに基づく前記転送元バススレーブからのリードデータを、前記バスマスタを介さずに、前記複数のバススレーブのうちの転送先バススレーブに転送する
バス接続回路。
【請求項3】
請求項2に記載のバス接続回路において、
前記処理回路は、
前記検出信号に応答して、前記リードデータを、前記バスマスタを介さずに、前記バスマスタからのライトデータ出力線へ出力する第1のセレクタと、
前記検出信号に応答して、前記転送先バススレーブに、前記ライトデータ出力線の前記リードデータと予め設定されたアドレスと転送イネーブル信号を入力する第2のセレクタと
を備え、
前記転送先バススレーブにおいて前記予め設定されたアドレスに前記リードデータが格納される
バス接続回路。
【請求項4】
請求項2又は3に記載のバス接続回路において、
前記バスマスタは、前記転送元バススレーブから前記転送先バススレーブへの直接転送の際に、前記転送元バススレーブの前記ミラー領域へのアクセス及びライト要求を設定し、
前記処理回路は、
前記バスマスタからの前記転送元バススレーブの前記ミラー領域へのアクセスを検出した場合、前記ライト要求をリード要求に変換するWriteRead変換回路を更に備える
バス接続回路。
【請求項5】
請求項1に記載のバス接続回路において、
前記ミラー領域アクセス検出回路は、
前記第1バススレーブとしての転送先バススレーブのミラー領域へのアクセスを検出して、前記検出信号を出力し、
前記処理回路は、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理として、前記複数のバススレーブのうちの転送元バススレーブの所定の領域にアクセスし、当該アクセスに基づくリードデータを、前記バスマスタを介さずに、前記転送先バススレーブに転送する
バス接続回路。
【請求項6】
請求項5に記載のバス接続回路において、
前記処理回路は、
前記検出信号に応答して、前記転送元バススレーブの前記所定の領域にアクセスして、前記転送元バススレーブに前記リードデータを出力させる第2のセレクタと、
前記リードデータを、前記バスマスタを介さずに、前記バスマスタからのライトデータ出力線へ出力する第1のセレクタと、
を備え、
前記転送先バススレーブにおいて前記ミラー領域へ前記リードデータが格納される
バス接続回路。
【請求項7】
バスマスタと、
複数のバススレーブと、
前記バスマスタと前記複数のバススレーブとを接続する、請求項1乃至6のいずれか一項に記載のバス接続回路と
を具備する
半導体装置。
【請求項8】
バスマスタと複数のバススレーブとを接続するバス接続回路の動作方法であって、
前記バスマスタが前記複数のバススレーブのうちの第1バススレーブのミラー領域へアクセスすることを検出して、検出信号を出力するステップと、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理を、前記アクセスの対象としての領域又はデータに対して実行するステップと
を具備する
バス接続回路の動作方法。
【請求項9】
請求項8に記載のバス接続回路の動作方法において、
前記検出信号を出力するステップは、
前記第1バススレーブとしての転送元バススレーブのミラー領域へのアクセスを検出して、前記検出信号を出力するステップを備え、
前記処理を実行するステップは、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理として、前記アクセスに基づく前記転送元バススレーブからのリードデータを、前記バスマスタを介さずに、前記複数のバススレーブのうちの転送先バススレーブに転送する
バス接続回路の動作方法。
【請求項10】
請求項9に記載のバス接続回路の動作方法において、
前記処理を実行するステップは、
前記検出信号に応答して、前記リードデータを、前記バスマスタを介さずに、前記バスマスタからのライトデータ出力線へ出力するステップと、
前記検出信号に応答して、前記転送先バススレーブに、前記ライトデータ出力線の前記リードデータと予め設定されたアドレスと転送イネーブル信号を入力するステップと、
前記転送先バススレーブにおいて前記予め設定されたアドレスに前記リードデータを格納するステップと
を備える
バス接続回路の動作方法。
【請求項11】
請求項9又は10に記載のバス接続回路の動作方法において、
前記バスマスタが前記転送元バススレーブから前記転送先バススレーブへの直接転送の際に、前記転送元バススレーブの前記ミラー領域へのアクセス及びライト要求を設定するステップを更に具備し、
前記処理を実行するステップは、
前記バスマスタからの前記転送元バススレーブの前記ミラー領域へのアクセスを検出した場合、前記ライト要求をリード要求に変換するステップを更に備える
バス接続回路の動作方法。
【請求項12】
請求項8に記載のバス接続回路の動作方法において、
前記検出信号を出力するステップは、
前記第1バススレーブとしての転送先バススレーブのミラー領域へのアクセスを検出して、前記検出信号を出力するステップを備え、
前記処理を実行するステップは、
前記検出結果に基づいて、当該検出結果に対応して予め設定されている処理として、前記複数のバススレーブのうちの転送元バススレーブの所定の領域にアクセスし、当該アクセスに基づくリードデータを、前記バスマスタを介さずに、前記転送先バススレーブに転送するステップを備える
バス接続回路の動作方法。
【請求項13】
請求項12に記載のバス接続回路の動作方法において、
前記処理を実行するステップは、
前記検出信号に応答して、前記転送元バススレーブの前記所定の領域にアクセスして、前記転送元バススレーブに前記リードデータを出力させるステップと、
前記リードデータを、前記バスマスタを介さずに、前記バスマスタからのライトデータ出力線へ出力するステップと、
前記転送先バススレーブにおいて前記ミラー領域へ前記リードデータを格納するステップと
を備える
バス接続回路の動作方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate