【解決手段】マイクロプロセッサ101は、第1メモリバス1と、第2メモリバス2と、第1メモリバスに接続される第1メモリ201から命令をフェッチするフェッチ部3と、第2メモリバスを制御するバスコントローラ6と、バスコントローラから出力されるアドレスが第1メモリの領域であるか否かを判定するアドレスデコーダ7、スイッチ8及びORゲート9から構成される判定部と、判定部の出力を用いて、バスコントローラから出力されるアドレスが第1メモリの領域である場合に第1メモリのアクセス先をバスコントローラにするANDゲート10、11、ORゲート12及びセレクタ14から構成される第1論理回路部と、を備える。
前記判定部の出力を用いて、前記バスコントローラが前記第1メモリにアクセス可能な期間に前記フェッチ部が前記第1メモリにアクセスすることを禁止する禁止信号を前記フェッチ部に出力する第2論理回路部を備える、請求項1に記載のマイクロプロセッサ。
前記バスコントローラが前記第1メモリにアクセス可能な期間になると、前記禁止信号に基づいて前記フェッチ部のステートがフェッチステートからプリフェッチステートに遷移する、請求項2に記載のマイクロプロセッサ。
前記フェッチ部のカウンタ値及びレジスタ値の退避が完了してから、前記フェッチ部のステートが前記プリフェッチステートに遷移する、請求項3に記載のマイクロプロセッサ。
前記判定部は、前記バスコントローラから出力されるアドレスが第1範囲内であるときと第2範囲内であるときとで異なる論理の信号を出力するアドレスデコーダを有する、請求項1〜4のいずれか一項に記載のマイクロプロセッサ。
前記判定部は、前記アドレスデコーダの出力信号を前記判定部の出力とする第1の状態と、所定の論理の信号を前記判定部の出力とする第2の状態と、を切り替える切替部を有する、請求項5に記載のマイクロプロセッサ。
前記バスコントローラから出力されるライトデータは、前記第1論理回路部を介さずに前記第1メモリに供給される、請求項1〜6のいずれか一項に記載のマイクロプロセッサ。
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来のマイクロプロセッサは、フォンノイマン型を採用するプロセッサ(以下、フォンノイマン型プロセッサと称す)、ハーバード型を採用するプロセッサ(ハーバード型プロセッサ)のいずれかである。例えば、ARM社のCortex−M0/M0+はフォンノイマン型プロセッサであり、ARM社のCortex−M3/M4/M7はハーバード型プロセッサである。そして、従来のマイクロプロセッサでは、フォンノイマン型とハーバード型とで回路を共通化することができていなかった。
【0007】
ここで、フォンノイマン型とハーバード型とで回路の共通化を実現する方法について考察する。具体的には、フォンノイマン型プロセッサにハーバード型を適用する方法、及び、ハーバード型プロセッサにフォンノイマン型を適用する方法について考察する。
【0008】
フォンノイマン型プロセッサにハーバード型を適用する方法に関しては、フォンノイマン型プロセッサがメモリバスを一つしか使用していないため、フォンノイマン型プロセッサにメモリバスを二つ使用するハーバード型を適用することは不可能である。
【0009】
ハーバード型プロセッサにフォンノイマン型を適用する方法に関しては、伝統的なハーバード型プロセッサではプログラムとデータの双方が同じメモリバスにアクセスすることができないため、伝統的なハーバード型プロセッサにフォンノイマン型を適用することは不可能である。
【0010】
一方、バス調停回路を有する改良型のハーバード型プロセッサ(例えば特許文献1参照)ではプログラムとデータの双方が同じメモリバスにアクセスすることができる。しかしながら、特許文献1のハーバード型プロセッサにフォンノイマン型を適用するためには、バス調停回路(アービトレーションユニット)の修正が必要となる。つまり、特許文献1で開示されている技術を用いても、フォンノイマン型とハーバード型とで回路を共通化することができない。
【0011】
さらに、特許文献1のハーバード型プロセッサは、全アクセスサイクルで二つのバスの調停を行うため消費電力が大きいという問題やバス調停回路のせいでメモリアクセス回路の遅延が大きいという問題を有する。
【0012】
本発明は、上記の状況に鑑み、フォンノイマン型とハーバード型とで回路の共通化を図ることができるマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0013】
本明細書中に開示されているマイクロプロセッサは、第1メモリバスと、第2メモリバスと、前記第1メモリバスに接続される第1メモリから命令をフェッチするフェッチ部と、前記第2メモリバスを制御するバスコントローラと、前記バスコントローラから出力されるアドレスが前記第1メモリの領域であるか否かを判定する判定部と、前記判定部の出力を用いて、前記バスコントローラから出力されるアドレスが前記第1メモリの領域である場合に前記第1メモリのアクセス先を前記バスコントローラにする第1論理回路部と、を備える構成(第1の構成)である。
【0014】
また上記第1の構成のマイクロプロセッサにおいて、前記判定部の出力を用いて、前記バスコントローラが前記第1メモリにアクセス可能な期間に前記フェッチ部が前記第1メモリにアクセスすることを禁止する禁止信号を前記フェッチ部に出力する第2論理回路部を備える構成(第2の構成)であってもよい。
【0015】
また上記第2の構成のマイクロプロセッサにおいて、前記バスコントローラが前記第1メモリにアクセス可能な期間になると、前記禁止信号に基づいて前記フェッチ部のステートがフェッチステートからプリフェッチステートに遷移する構成(第3の構成)であってもよい。
【0016】
また上記第3の構成のマイクロプロセッサにおいて、前記フェッチ部のカウンタ値及びレジスタ値の退避が完了してから、前記フェッチ部のステートが前記プリフェッチステートに遷移する構成(第4の構成)であってもよい。
【0017】
また上記第1〜第4いずれかの構成のマイクロプロセッサにおいて、前記判定部は、前記バスコントローラから出力されるアドレスが第1範囲内であるときと第2範囲内であるときとで異なる論理の信号を出力するアドレスデコーダを有する構成(第5の構成)であってもよい。
【0018】
また上記第5の構成のマイクロプロセッサにおいて、前記判定部は、前記アドレスデコーダの出力信号を前記判定部の出力とする第1の状態と、所定の論理の信号を前記判定部の出力とする第2の状態と、を切り替える切替部を有する構成(第6の構成)であってもよい。
【0019】
また上記第1〜第6いずれかの構成のマイクロプロセッサにおいて、前記バスコントローラから出力されるライトデータは、前記第1論理回路部を介さずに前記第1メモリに供給される構成(第7の構成)であってもよい。
【0020】
また上記第1〜第7いずれかの構成のマイクロプロセッサにおいて、前記第1メモリを内蔵する構成(第8の構成)であってもよい。
【0021】
また上記第8の構成のマイクロプロセッサにおいて、前記第2メモリバスに接続される第2メモリを内蔵する構成(第9の構成)であってもよい。
【0022】
本明細書中に開示されている電源制御ICは、入力電圧を出力電圧に変換する変換部を制御する制御部と、上記第1〜第9いずれかの構成のマイクロプロセッサと、を備える電源制御ICであって、前記マイクロプロセッサは、前記電源制御ICの動作シーケンスを規定する構成(第10の構成)である。
【0023】
本明細書中に開示されている電源装置は、上記第10の構成の電源制御ICと、前記変換部と、を備える構成(第11の構成)である。
【発明の効果】
【0024】
本明細書中に開示されているマイクロプロセッサは、フォンノイマン型とハーバード型とで回路の共通化を図ることができる。
【発明を実施するための形態】
【0026】
<1.ハーバード型マイクロプロセッサ>
図1はハーバード型マイクロプロセッサの一構成例を示す図である。ハーバード型マイクロプロセッサ101は、第1メモリバス1と、第2メモリバス2と、を備える。第1メモリバス1にはプログラムメモリ201が接続され、第2メモリバス2にはデータメモリ202が接続される。ハーバード型マイクロプロセッサ101の各部はクロック信号clkに同期して動作する。
【0027】
プログラムメモリ201には、ROM(Read Only Memory)、OTP(One Time Programmable)−ROM、Flash−ROM等の不揮発メモリ、SRAM(Static Random Access Memory)等の揮発メモリのいずれか又は複数の組み合わせが一般的に用いられる。データメモリ202には、SRAMが一般的に用いられる。
【0028】
ハーバード型マイクロプロセッサ101は、フェッチステートマシン3と、命令レジスタ4と、プログラムカウンタ5と、データバスコントローラ6と、をさらに備える。
【0029】
フェッチステートマシン3、命令レジスタ4、及びプログラムカウンタ5によって構成されるフェッチ部は、プログラムメモリ201から命令をフェッチする。データバスコントローラ6は、第2メモリバス2を制御する。
【0030】
フェッチステートマシン3は、フェッチ実行サイクルfetch_cycle及び命令データロードload_instを出力する。フェッチ実行サイクルfetch_cycleの論理は、上述したフェッチ部のステートがプリフェッチである場合、又は、上述したフェッチ部のステートがフェッチであって上述したフェッチ部の次回ステートもフェッチである場合に「1」になり、それ以外の場合に「0」になる。なお、上述したフェッチ部のステートがプリフェッチになる条件については後述する。命令データロードload_instの論理は、上述したフェッチ部のステートがフェッチであって上述したフェッチ部の次回ステートもフェッチである場合に「1」になり、それ以外の場合に「0」になる。
【0031】
命令レジスタ4は、命令データロードload_instの論理が「1」である場合にのみプログラムメモリ201から読み出したデータをロードする。プログラムカウンタ5はカウンタ値をインクリメントして出力する。
【0032】
ハーバード型マイクロプロセッサ101は、アドレスデコーダ7と、スイッチ8と、ORゲート9と、をさらに備える。アドレスデコーダ7、スイッチ8、及びORゲート9によって構成される判定部は、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrが第1メモリバス1に接続されているメモリの領域であるか否かを判定する。
【0033】
本実施形態ではプログラムメモリ201とデータメモリ202が1元化したメモリマップを用いている。換言すると、本実施形態ではプログラムメモリ201のアドレス範囲とデータメモリ202のアドレス範囲とに重複する部分がない。これにより、アドレスデコーダ7は、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrに基づいて、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrがプログラムメモリ201の領域であるか否かを判定できる。
【0034】
また例えば、
図2に示すようにプログラムメモリ201のアドレス範囲を0×0000〜0×7FFFとし、データメモリ202のアドレス範囲を0×8000〜0×FFFFとすれば、アドレスデコーダ7は、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrの最上位ビットのみに基づく判定ができ、回路規模を小さくすることができる。
【0035】
第1メモリバス1に接続されているメモリがプログラムメモリ201であれば、アドレスデコーダ7の判定結果をそのまま上述した判定部の判定結果として用いることができる。したがって、ハーバード型マイクロプロセッサ101では、スイッチ8が論理「0」を選択する。そして、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrがプログラムメモリ201の領域である場合、アドレスデコーダ7の判定結果であるプログラムメモリデータアクセス信号prbus_selの論理を「1」とする。逆に、データバスコントローラ6から出力されるデータバスアドレスdtbus_addrがプログラムメモリ201の領域でない場合、アドレスデコーダ7の判定結果であるプログラムメモリデータアクセス信号prbus_selの論理を「0」とする。
【0036】
ハーバード型マイクロプロセッサ101は、ANDゲート10及び11と、ORゲート12と、セレクタ13及び14と、をさらに備える。ANDゲート10及び11、ORゲート12、並びにセレクタ13及び14によって構成される論理回路部は、上述した判定部の出力を用いて、データバスコントローラ6から出力されるアドレスがプログラムメモリ201の領域である場合にプログラムメモリ201のアクセス先をデータバスコントローラ6にする。
【0037】
ANDゲート10は、データバスコントローラ6から出力されるデータバスライトイネーブル信号dtbus_weの論理が「1」であって且つプログラムメモリデータアクセス信号prbus_selの論理が「1」である場合、すなわちデータバスコントローラ6がプログラムメモリ201にライトアクセスする場合にライトアクセス信号prbus_dtwriteの論理を「1」にして、プログラムメモリ201を書き込み可能な状態にする。
【0038】
ANDゲート11は、データバスコントローラ6から出力されるデータバスリードイネーブル信号dtbus_reの論理が「1」であって且つプログラムメモリデータアクセス信号prbus_selの論理が「1」である場合、すなわちデータバスコントローラ6がプログラムメモリ201にリードアクセスする場合にリードアクセス信号prbus_dtreadの論理を「1」にする。
【0039】
ORゲート12は、フェッチ実行サイクルfetch_cycleの論理が「1」である場合、又は、リードアクセス信号prbus_dtreadの論理が「1」である場合にプログラムメモリ201を読み出し可能な状態にする。
【0040】
セレクタ13は、フェッチ実行サイクルfetch_cycleの論理が「1」である場合にプログラムカウンタ5のカウンタ値をアドレスprbus_addrとしてプログラムメモリ201に出力する。一方、セレクタ13は、フェッチ実行サイクルfetch_cycleの論理が「0」である場合にデータバスコントローラ6から出力されるデータバスアドレスdtbus_addrをアドレスprbus_addrとしてプログラムメモリ201に出力する。
【0041】
セレクタ14は、リードアクセス信号prbus_dtreadの論理が「1」である場合にプログラムメモリ201から読み出されるリードデータをデータバスリードデータdtbus_rddataとしてデータバスコントローラ6に出力する。一方、セレクタ14は、リードアクセス信号prbus_dtreadの論理が「0」である場合にデータメモリ202から読み出されるリードデータをデータバスリードデータdtbus_rddataとしてデータバスコントローラ6に出力する。
【0042】
プログラムメモリ201にデータを書き込むのはデータバスコントローラ6だけであるため、データバスコントローラ6から出力されるデータバスライトデータdtbus_wrdataは上述した論理回路部を介さずにプログラムメモリ201に供給される。
【0043】
なお、データバスコントローラ6から出力されるデータバスアドレスdtbus_addr、データバスライトデータdtbus_wrdata、データバスライトイネーブル信号dtbus_we、及びデータバスリードイネーブル信号dtbus_reは、上述した論理回路部を介さずにデータメモリ202に供給される。
【0044】
ハーバード型マイクロプロセッサ101は、ORゲート15をさらに備える。ORゲート15は、上述した判定部の出力を用いて、データバスコントローラ6がプログラムメモリ201にアクセス可能な期間に上述したフェッチ部がプログラムメモリ201にアクセスすることを禁止する禁止信号を上述したフェッチ部に出力する。具体的には、ORゲート15は、リードアクセス信号prbus_dtreadの論理又はライトアクセス信号prbus_dtwriteの論理が「1」である場合、すなわちデータバスコントローラ6がプログラムメモリ201にアクセスする場合に上述した禁止信号(論理が「1」である信号)をフェッチステートマシン3に出力する。フェッチステートマシン3は、上述した禁止信号を受け取ると、上述したフェッチ部のステートをフェッチステートからプリフェッチステートに遷移させる。これにより、バス調停回路を用いることなく、プログラムメモリ201のアクセス先を上述したフェッチ部とデータバスコントローラ6とに振り分けることができる。
【0045】
図3は上述したフェッチ部のステート遷移を示す図である。マイクロプロセッサに電源が投入されると、上述したフェッチ部は、アイドルステートを経て、プリフェッチステートでプログラムメモリ201へのアクセスを行う。そして、上述したフェッチ部は、次のサイクル(クロック周期)からフェッチステートになり、プログラムメモリ201から読み出したデータを命令レジスタ4に取り込み、命令を実行し続ける。そして、フェッチステートマシン3が禁止信号を受信すると、上述したフェッチ部のステートは、フェッチステートからプリフェッチステートに遷移する。なお、割り込み発生については後述する。
【0046】
図4からも分かるように、リードアクセス信号prbus_dtreadの論理又はライトアクセス信号prbus_dtwriteの論理が「1」である場合に、上述したフェッチ部のステートがプリフェッチステートに遷移し、プリフェッチステートである期間にデータバスコントローラ6がプログラムメモリ201にアクセスする。これにより、バス調停回路を用いることなく、プログラムメモリ201のアクセス先を上述したフェッチ部とデータバスコントローラ6とに振り分けることができる。なお、
図4中の12outputはORゲート12の出力信号を意味しており、
図4中のinstrucitonにおけるffffは命令を実行していないことを意味している。
【0047】
<2.フォンノイマン型マイクロプロセッサ>
図5はフォンノイマン型マイクロプロセッサの一構成例を示す図である。フォンノイマン型マイクロプロセッサ102はハーバード型マイクロプロセッサ101と同一の回路構成であり、スイッチ8の選択状態のみがハーバード型マイクロプロセッサ101と異なる。フォンノイマン型マイクロプロセッサ102では、スイッチ8が論理「1」を選択する。
【0048】
フォンノイマン型マイクロプロセッサ102の第1メモリバス1には共通メモリ203が接続され、フォンノイマン型マイクロプロセッサ102の第2メモリバス2にはメモリが接続されない。共通メモリ203のアドレス範囲は例えば
図6に示すように0×0000〜0×FFFFにすればよい。一方、共通メモリ203のアドレス範囲を例えば
図7に示すように0×0000〜0×7FFFとし、共通メモリ203のアドレス範囲の全てがプログラムメモリ201のアドレス範囲に包含されるように設定すれば、スイッチ8及びORゲート9を取り除くことができる。
【0049】
<3.利点>
例えば性能を優先する場合はハーバード型マイクロプロセッサ101を選択し、チップ面積を小さくする場合はフォンノイマン型マイクロプロセッサ102を選択することができる。また、ハーバード型マイクロプロセッサ101とフォンノイマン型マイクロプロセッサ102とで回路が共通しているため、ハーバード型マイクロプロセッサ101とフォンノイマン型マイクロプロセッサ102を同じソースコードで動作させることもできる。つまり、ハーバード型マイクロプロセッサ101とフォンノイマン型マイクロプロセッサ102の開発環境を共通化することができる。
【0050】
ハーバード型マイクロプロセッサ101及びフォンノイマン型マイクロプロセッサ102は、バス調停を行っていないため、バス調停による消費電力の増大やメモリアクセス回路の遅延の増大が発生しない。
【0051】
なお、
図1に示すハーバード型マイクロプロセッサ101は外部のプログラムメモリ201及びデータメモリ202に接続される構成であったが、
図8に示すハーバード型マイクロプロセッサ103のようにプログラムメモリ201及びデータメモリ202を内蔵する構成であってもよい。同様に、
図5に示すフォンノイマン型マイクロプロセッサ102は外部の共通メモリ203に接続される構成であったが、
図9に示すフォンノイマン型マイクロプロセッサ104のように共通メモリ203を内蔵する構成であってもよい。
【0052】
図8や
図9に示すようなメモリを内蔵する構成のマイクロプロセッサであっても、フォンノイマン型とハーバード型とでメモリ以外の部分における回路の共通化を図ることで開発環境の共通化を図ることができる。
【0053】
<4.割り込みレイテンシ>
割り込みが発生すると、割り込みレイテンシが発生する。ここで、割り込みレイテンシとは、割り込みが発生してから割り込みルーチンの実行が開始されるまでの時間をいう。ハーバード型マイクロプロセッサ101とフォンノイマン型マイクロプロセッサ102とで割り込みレイテンシを一致させることで、ハーバード型マイクロプロセッサ101とフォンノイマン型マイクロプロセッサ102の開発環境をより一層共通化することができる。
【0054】
そこで、本実施形態では、フェッチステートにおいて割り込みが発生すると、
図3に示すようにフェッチステートからウエイトステートに遷移し、レジスタの退避が完了するまでウエイトステートを維持(キープ)し、レジスタの退避が完了すると、キープしていたウエイトステートからプリフェッチステートに遷移するようにしている。したがって、本実施形態では、ハーバード型マイクロプロセッサ101において
図10に示すようにプログラムカウンタ5のカウンタ値の退避及び命令レジスタ4のレジスタ値の退避が完了してから、フェッチ部のステートがウエイトステートからプリフェッチステートに遷移し、プリフェッチステートにおいて命令レジスタ4が割り込みベクタから命令をロードし、ロードされたベクタアドレスの命令をフェッチステートにおいてプログラムメモリ201からフェッチすることになる。これにより、割り込み発生後にプログラムメモリ201へのアクセスとデータメモリ202へのアクセスとが同時に発生しないことになる。その結果、
図10に示すハーバード型マイクロプロセッサ101の割り込みレイテンシT1と、
図11に示すフォンノイマン型マイクロプロセッサ101の割り込みレイテンシT2とが一致する。
【0055】
<5.用途>
上述したマイクロプロセッサ101〜104は例えば
図12に示すボトム検出オン時間固定方式スイッチング電源装置に用いることができる。
図12に示すボトム検出オン時間固定方式スイッチング電源装置は、入力電圧Vinを降圧して所望の出力電圧Voutを生成する降圧型DC/DCコンバータである。
【0056】
図12に示すボトム検出オン時間固定方式スイッチング電源装置では、帰還電圧Vfbが基準電圧Vrefまで下がったことをコンパレータ21が検出すると、ドライバ22は、所定のオン時間Tonを設定するオン時間設定回路23からの出力に基づいて、所定のオン時間Tonだけスイッチ電圧Vswがハイレベルになるように上側トランジスタN1をオン状態にする。なお、ドライバ22は、所定のオン時間Ton以外では上側トランジスタN1をオフ状態にする。また、上側トランジスタN1及び下側トランジスタN2はドライバ22によって相補的にスイッチングされる。
【0057】
また、
図12に示すボトム検出オン時間固定方式スイッチング電源装置では、過電流保護機能や過熱保護機能等を実現するために、ドライバ22が電流センサや温度センサ等の出力に応じた動作を実行する。
【0058】
ドライバ22はボトム検出オン時間固定方式スイッチング電源装置のステートを制御する電源制御回路であり、ドライバ22の少なくとも一部として上述したマイクロプロセッサ101〜104のいずれかを用いることができる。
【0059】
なお、上述したマイクロプロセッサ101〜104はボトム検出オン時間固定方式以外の電源装置に用いることもできる。また、上述したマイクロプロセッサ101〜104は電源装置に限らず例えば各種センサのステートを制御するために用いたり、発光素子を駆動する発光素子駆動装置のステートを制御するために用いたりすることができる。
【0060】
<6.その他>
なお、本発明の構成は、上記実施形態のほか、発明の主旨を逸脱しない範囲で種々の変更を加えることが可能である。
【0061】
例えばスイッチ8をマイクロプロセッサの外部に設け、スイッチ8から出力される論理信号をマイクロプロセッサに外部入力してもよい。また例えば、ハードウェアであるスイッチ8を用いる代わりに、プログラムの先頭でビットを設定することにより、ソフトウェア的にハーバード型の場合は「0」の論理信号、フォンノイマン型の場合は「1」の論理信号をORゲート9に供給するようにしてもよい。また例えば、スイッチ8は1回選択を実行した後は選択を変更できないスイッチ(例えばトリミング素子を用いたスイッチ)であってもよい。
【0062】
このように、上記実施形態は、全ての点で例示であって、制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。