説明

半導体集積回路

【課題】内部プロセッサ、メインメモリ用のメモリI/F、外部プロセッサを有するデバイス用の外部I/F、及びレジスタを備えた半導体集積回路において、内部プロセッサからレジスタ制御を行った場合と外部プロセッサからレジスタ制御を行った場合との応答性能差異を少なくすると共に、外部プロセッサからメインメモリへのアクセス制御を行う場合の応答性能を向上させる。
【解決手段】半導体集積回路(SoC1cで例示)は、プロセッサ11及びメモリコントローラ15がバス接続された第1の内部バス(バス10で例示)とレジスタ31がバス接続された第2の内部バス(バス30で例示)とを含む複数の内部バスを備える。外部I/F16は、第1の内部バスと第2の内部バスとの間に多重バス接続され、メインメモリにメモリコントローラ15を介してアクセスする場合とレジスタ31にアクセスする場合とで、利用する内部バスを切り替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路に関し、より詳細には、プロセッサ、メインメモリ用のメモリI/F(Interface)、外部プロセッサを有するデバイス用の外部I/F、及びレジスタを備えた半導体集積回路に関する。
【背景技術】
【0002】
近年のLSI(Large Scale Integration)のプロセス微細化により、LSIに搭載可能な回路規模はどんどん増加し、LSIが処理する機能や性能は加速度的に向上している。なお、回路規模によっては、その半導体集積回路をVLSI(Very LSI)、ULSI(Ultra-LSI)などと呼ぶこともある。
【0003】
機能向上の1つとして、プロセッサ機能をLSIの中に取り込むと、LSI内部のプロセッサがLSI全体を内部から制御することが可能となり、LSI内部にあたかも一つのシステムを構築できる。このように、半導体集積回路であって、その内部にプロセッサを内蔵してシステムを構築するデバイスは、SoC(System on a Chip)と呼ばれている。
【0004】
SoCと呼ばれる半導体集積回路には、様々なデバイスがある。非常に高性能なプロセッサを搭載し、SoCの外部に接続される全てのデバイスを統合的に管理できるものや、複数のプロセッサを内蔵し、さらに処理能力や演算能力を高めたもの、また、外部デバイスの制御は他のプロセッサに任せて、自身はSoC内部の制御のみを行うものなど様々である。
【0005】
このようなSoCのシステム構成方法の1つとして、以下のような要求がある。SoC内部のプロセッサは内部のモジュール群を制御することが可能であるが、SoC外部に接続されたプロセッサからもSoCの制御を可能にする機能が要求されている。用途として、例えば、基本的にはSoC内部のプロセッサによってシステム全体の処理を実施するが、さらなる性能を求められた場合、高性能なプロセッサを有する外部デバイスを用意して、外部からSoCを制御することにより、さらなるシステム性能向上を実現するものである。
【0006】
このようなSoCでは、外部プロセッサに接続するための外部I/Fを備える構成とするだけでなく、内部及び外部のプロセッサの両方がシステムを制御するためのレジスタ群にアクセスできるように構成し、さらにシステムの状態変化を通知するための割り込み処理などを内部及び外部のプロセッサの両方が処理できるように構成することが必要不可欠となる。
【0007】
さらに、外部プロセッサからのレジスタやメインメモリへのアクセス性能については、内部プロセッサからのアクセス性能と比較すると劣る構成となってしまうため、何らかの工夫や性能検証を実施しなければ、システム性能向上のために外部プロセッサを増設しても、処理速度の高速化を含めたシステム全体の性能の向上を図ることができない。
【0008】
なお、システム構成に際し、システムバスは多重化されることがあり、その方式として、バス使用権の調停を行うバスアービタを設ける技術が開示されている(例えば特許文献1を参照)。また、バスアービタを必要としないシステムバスの多重化技術も開示されている(例えば特許文献2を参照)。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開昭61−117649号公報
【特許文献2】特開2008−181424号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、従来の技術では、SoCにおいて、例えば高速バスと低速バスとを具備するなど複数のバスを含めるような構成を採用する場合で、且つ外部プロセッサを増設可能なように外部I/Fを付加する構成とする場合、処理速度を含めたシステム全体の性能を向上させることができない。
【0011】
本発明は、上述のような実状に鑑みてなされたものであり、その目的は、内部プロセッサ、メインメモリ用のメモリI/F、外部プロセッサを有するデバイス用の外部I/F、及びレジスタを備えた半導体集積回路において、内部プロセッサからレジスタ制御を行った場合と外部プロセッサからレジスタ制御を行った場合との応答性能差異を少なくすると共に、外部プロセッサからメインメモリへのアクセス制御を行う場合の応答性能を向上させ、それにより、処理速度を含めたシステム全体の性能を向上させることにある。
【課題を解決するための手段】
【0012】
上記課題を解決するために、本発明の第1の技術手段は、プロセッサ、メインメモリ用のメモリI/F、外部プロセッサを有するデバイス用の外部I/F、及びレジスタを備えた半導体集積回路において、該半導体集積回路は、前記プロセッサ及び前記メモリI/Fがバス接続された第1の内部バスと前記レジスタがバス接続された第2の内部バスとを含む複数の内部バスを備え、且つ前記プロセッサ及び前記外部プロセッサの両方から前記レジスタにアクセス可能なように構成され、前記外部I/Fは、前記第1の内部バスと前記第2の内部バスとの間に多重バス接続され、前記メインメモリに前記メモリI/Fを介してアクセスする場合と前記レジスタにアクセスする場合とで、利用する内部バスを切り替えることを特徴としたものである。
【0013】
第2の技術手段は、第1の技術手段において、前記外部I/Fは、前記半導体集積回路の外部からアクセス要求されたアドレスが、前記メインメモリについて予め割り当てられたアドレスであれば前記第1の内部バスを利用し、前記レジスタについて予め割り当てられたアドレスであれば前記第2の内部バスを利用することを特徴としたものである。
【発明の効果】
【0014】
本発明に係る半導体集積回路によれば、内部プロセッサからレジスタ制御を行った場合と外部プロセッサからレジスタ制御を行った場合との応答性能差異を少なくすると共に、外部プロセッサからメインメモリへのアクセス制御を行う場合の応答性能を向上させることができ、それにより、処理速度を含めたシステム全体の性能を向上させることができる。
【図面の簡単な説明】
【0015】
【図1】SoC及びそれに接続されたデバイスでなるシステム構成例を示す図である。
【図2】SoC及びそれに接続されたデバイス(外部プロセッサを含む)でなるシステム構成例を示す図である。
【図3】図1及び図2のSoCの内部構成例を示すブロック図である。
【図4】図3のSoCの一部のみを抽出したブロック図である。
【図5】図3の代わりに適用可能なSoCの内部構成例を示すブロック図である。
【図6】図5のSoCの一部のみを抽出したブロック図である。
【図7】図3の代わりに適用可能な、本発明に係るSoCの内部構成例を示すブロック図である。
【図8】図7のSoCの一部のみを抽出したブロック図である。
【図9】図7のSoCにおける外部I/Fのアドレスマップの一例を示す図である。
【発明を実施するための形態】
【0016】
本発明に係る半導体集積回路は、プロセッサ(内部プロセッサ)、メインメモリ用のメモリI/F、外部プロセッサを有するデバイス(外部プロセッサそのものでもよい)用の外部I/F、及びレジスタを備えたLSI等の回路であり、以下、内部プロセッサを有するため、SoCとして説明する。
【0017】
図1は、SoC及びそれに接続されたデバイスでなるシステムの構成例を示す図で、図2は、SoC及びそれに接続されたデバイス(外部プロセッサを含む)でなるシステムの構成例を示す図である。
【0018】
図1で例示するシステムでは、SoC1は内部プロセッサ11を備えると共に、図示しない内部モジュールとして、外部端子を利用してデバイスと接続するための各種I/Fを備える。図1の例では、それらI/Fにより、メインメモリとして機能するメモリモジュール2、ROM(Read Only Memory)3、液晶ディスプレイ(LCD;Liquid Crystal Display)4、及びHDD(Hard Disk Drive)5といったデバイスに接続されている。なお、各種I/Fについては図3等を参照しながら後述する。また、内部プロセッサ11や後述の外部プロセッサとしては、例えばCPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processor Unit)など、様々なプロセッサが適用できる。
【0019】
一方、図2で例示するシステムでは、図1で例示したシステムに加えて外部プロセッサ6が接続されている。外部プロセッサ6は図示しない外部I/Fのモジュールによって接続されており、外部からレジスタアクセスが可能な状態にバスが構成されている。つまり、SoC1は、内部プロセッサ11及び外部プロセッサ6の両方がシステムを制御するためのレジスタ群にアクセスできるように構成されている。外部プロセッサ6からSoC1を制御するためにはメインメモリへのアクセスも必須となるため、外部プロセッサ6が外部I/Fのモジュールを介してメインメモリ用のI/Fに命令を出すことも可能に構成されている。無論、SoC1は、システムの状態変化を通知するための割り込み処理などを、内部プロセッサ11及び外部プロセッサ6の両方が処理できるように構成しておく。
【0020】
従って、図1のシステムでは内部プロセッサ11がSoC1を制御するシステムとなるが、図2のシステムでは外部プロセッサ6についてもSoC1を制御することが可能となる。このとき、内部プロセッサ11は停止し、外部プロセッサ6がSoC1の内部全てを制御する構成でもよいし、内部プロセッサ11及び外部プロセッサ6の両方が分担してSoC1を制御する構成でも実現可能である。このように、SoC1は、内部プロセッサ11のみで制御される構成として実装することも、外部プロセッサを有するデバイス(例えばASIC[Application Specific Integrated Circuit]や他のSoCなど)を接続した構成として実装することもできる。
【0021】
図3は、図1及び図2のSoCの内部構成例を示すブロック図である。図3で例示するSoC1aは、図1や図2で例示したSoC1として適用可能なシステムであり、高速バスA(10)、高速バスB(20)、及び低速バスC(30)を備えている。これらのバスは、図示しないバスブリッジなどの接続手段で連結しておけばよい。
【0022】
高速バスA(10)には、内部プロセッサ11、DMA(Direct Memory Access)12,14、及びメモリコントローラ15がバス接続されている。高速バスB(20)には、DMA21〜23がバス接続されており、DMA21にはHDDコントローラ24が、DMA22にはLCDコントローラ25がそれぞれ接続されている。また、低速バスC(30)には、レジスタ31とROM I/F32とがバス接続されている。
【0023】
高速バス(高速バスA,B)は、複数のマスタ及びスレーブモジュールを接続し、高速なデータ転送処理を実現することを目的としたバスである。高速バスは、低速バスと比べ非常に多くのデータを処理することが可能なため、高速バスA(10)の例を挙げると内部プロセッサ11、メモリコントローラ15、複数のDMA12,14など、多くのモジュールが接続される。接続するモジュール数が多い場合には、複数の高速バスを準備し、高速バス間をバスブリッジなどで接続することによって、さらに多くのモジュールを接続することが可能となる。図3の例では、2つの高速バスA(10),B(20)を準備し、高速バスA(10)と高速バスB(20)との間を接続することで、より多くのモジュール(内部プロセッサ11、メモリコントローラ15、複数のDMA12,14,21〜23など)を接続している。
【0024】
低速バスは、高速バスに比べ、比較的転送パフォーマンスを要求しないモジュール群を接続するバスであり、上述のように、レジスタ31やROM I/F32、UART(Universal Asynchronous Receiver Transmitter)、USART(Universal Synchronous Asynchronous Receiver Transmitter)やI2C(Inter-Integrated Circuit)などのシリアルインターフェースなどが接続される。なお、高速バスA(10)と高速バスB(20)との転送速度は同じであっても差があってもよく、無論、レジスタ31が接続されたバスも高速バスA(10)又は高速バスB(20)と同等の高速なバスを採用しておいてもよい。
【0025】
内部プロセッサ11は、図3に示すSoC1aがもつ全モジュールを制御し、加えてSoC1aに接続される周辺デバイスを制御することでシステムを制御することを可能にするモジュールである。SoC1aの内部モジュールを制御する場合は、レジスタ31へアクセスすることによって各モジュールの動作を決定する。
【0026】
DMA12,14,21〜23や後述するDMA13a,13bは、内部プロセッサ11や外部プロセッサ(図2の外部プロセッサ6)からの指示により、様々なメモリに対してアクセスを行うモジュールであり、DMAコントローラとも言える。各DMA12,13a,13b,14,21〜23は、メインメモリ(図2のメモリモジュール2)等のメモリから取得したデータを処理する機能をもち、例えば外部I/F16とデータを送受信する機能や画像処理を行う機能、暗号化/復号化を行う機能など、メモリアクセスと機能とを結びつけることによりデータ処理を実現する。DMA転送を可能に構成することで、内部プロセッサ11自身や外部プロセッサ6自身がメモリアクセスを行う負荷を減らすことができるため、プロセッサの仕事量を減らしシステムパフォーマンスを上げることができる。
【0027】
外部I/F16は、SoC1aに接続される外部デバイスとデータ転送やメッセージ転送を行うためのI/Fモジュールである。外部デバイスとは、例えば基板上で接続された別のSoCやASICなどであり、プロセッサ(図2の外部プロセッサ6)を備える。また、このインターフェース規格としては、PCI(Peripheral Component Interconnect)やPCI Expressなどがある。
【0028】
外部I/Fは、高速バスA(10)、高速バスB(20)、低速バスC(30)のいずれか1つにバス接続することでも搭載可能であるが、ここでは2つのバスの双方へのアクセス経路を短くするために、多重バス接続するものとする。このような3つ以上のバスがブリッジ等により接続されたシステムにおいて、外部I/Fを2つのバスに多重バス接続する際には、図3の例のように外部I/F16が隣り合う高速バスA(10)と高速バスB(20)との間に多重バス接続することが考えられる。図3のSoC1aでは、この多重バス接続のために、高速バスA(10)にDMA13aがバス接続され、高速バスB(20)にDMA13bがバス接続され、それらDMA13a,13bの双方に外部I/F16が接続されている。なお、多重バス接続の方式としては例えば特許文献2,3に記載の技術など既存の技術を適用すればよく、このことは図3の例に限らず後述する各図の例においても同様である。
【0029】
メモリコントローラ15は、メインメモリ(図2のメモリモジュール2)を接続するためのメモリI/Fの一例であって、SDRAM(Synchronous Dynamic Random Access Memory)やDDR SDRAM(Double-Data-Rate SDRAM)など、基板上で接続されたメインメモリとのデータ送受信を行うモジュールである。メモリコントローラ15は、内部プロセッサ11、外部プロセッサ6、各種DMA12,13a,14などからのデータ送受信要求を、高速バスA(10)経由で受け付け、指示に従ってメインメモリに対してデータ送受信要求を行う。また、その結果を、指示元であるプロセッサや各種DMAに対して戻す。無論、上記データ送受信要求は、その指示元が他のバスB(20),C(30)を介したものであってもよい。
【0030】
HDDコントローラ24は、図2のHDD5のようなHDDデバイスとのデータ送受信を実現するモジュールである。また、LCDコントローラ25は、メインメモリに保存された液晶画面表示用イメージデータをSoC1aに接続している図2のLCD4に対して転送するモジュールである。
【0031】
レジスタ31は、SoC1aの各モジュールの動作を決定したり、各モジュールの状態(ステータス)を内部プロセッサ11や外部プロセッサ6に伝える目的のモジュールである。レジスタ31は、主に内部プロセッサ11や外部プロセッサ6が各モジュールを制御するために利用される。レジスタ31は、例えばフリップフロップ群で構成されており、各フリップフロップの値をプロセッサから書き換えることにより、モジュールに対して指示を出す。
【0032】
上述のように、レジスタ31にアクセス可能なモジュール及びデバイスはSoC1aの内部モジュールを制御することが可能になる。言い換えれば、レジスタ31にアクセスできなければSoC1aの機能全体を制御することができない。そこで、レジスタ31へのアクセス可能なモジュールやデバイスは予め決定する必要があり、SoC1aの内部プロセッサ11と外部I/F16に接続された外部プロセッサ6との両方からアクセス可能に構成されている必要がある。アクセス可能にするためには、各プロセッサ11,6からレジスタ31へのアクセス経路が存在すること、各プロセッサ11,6からレジスタ31に割り当てられたアドレス空間に対してアクセス要求があると、各バスがその要求を受け付けるように構成されている必要がある。このようにして、レジスタ31は、SoC1aの内部のプロセッサ11と外部のプロセッサ6から制御可能となっている。
【0033】
ROM I/F32は、SoC1aの外部に接続している不揮発性のROM(図2のROM3)に対してアクセスするために、ROM3からデータを取得するためのI/Fモジュールである。電源起動時、ROM3に保存しているプログラムデータを取得し、メインメモリに展開する。展開されたプログラムデータを読み出すことによって各プロセッサ11,6は動作する。
【0034】
本発明に係るSoCは、上述したようなSoC1aにおいて、外部I/F16の配置を改良したものである。より具体的には、本発明に係るSoCは、内部プロセッサ11及びメモリコントローラ15がバス接続された第1の内部バス(高速バスAで例示)とレジスタ31がバス接続された第2の内部バス(低速バスCで例示)とを含む複数の内部バスを備え、且つ内部プロセッサ11及び外部プロセッサ6の両方からレジスタ31にアクセス可能なようにバス及びシステムが構成されている。
【0035】
そして、本発明の主たる特徴として、外部I/F16は、上記第1の内部バスと上記第2の内部バスとの間に多重バス接続される。つまり、本発明では、外部I/F16の配置を、アクセス経路的にメインメモリの傍、レジスタ31の傍といった両方の条件を満足するように決めている。
【0036】
外部I/F16(及びDMA13a,13b)の配置の具体的な例やこのような配置がよい理由の詳細については後述するが、このような接続により、外部I/F16を第1の内部バスに設けるよりも外部プロセッサ6におけるレジスタ31へのアクセス性能を向上させ、外部I/F16を第2の内部バスに設けるよりも外部プロセッサ6におけるメインメモリ(メモリモジュール2)へのアクセス性能を向上させることができる。つまり、本発明によれば、内部プロセッサ11からレジスタ制御を行った場合と外部プロセッサ6からレジスタ制御を行った場合との応答性能差異を少なくすると共に、外部プロセッサ6からメインメモリへのアクセス制御を行う場合の応答性能を向上させることができる。そして、本発明によれば、結果的に、処理速度を含めたシステム全体の性能を向上させることができる。
【0037】
図4〜図8を参照しながら、多重バス接続を行う場合について外部I/F16のバス接続位置とシステムパフォーマンスとの関係について検証を行う。簡単のため、主に図3(図4)、図5(図6)、図7(図8)の3種類のバス接続位置について検討を進める。
【0038】
図4は、図3のSoCの一部のみを抽出したブロック図である。また、図5は、図3の代わりに適用可能なSoCの内部構成例を示すブロック図で、図6は図5のSoCの一部のみを抽出したブロック図である。図7は、図3の代わりに適用可能な、本発明に係るSoCの内部構成例を示すブロック図で、図8は、図7のSoCの一部のみを抽出したブロック図である。
【0039】
なお、図5及び図6で例示するSoC1bや本発明に関して図7及び図8で例示するSoC1cは、図1や図2で例示したSoC1として適用可能なシステムであり、外部I/F16及びDMA13a,13bの接続位置以外は、図3で例示した通りの例が同様に適用できる。つまり、図5のSoC1b又は図7のSoC1cの内部構成例については、基本的に、図3の説明におけるSoC1aをSoC1b又はSoC1cと読み替えれば済む。よって、SoC1b,SoC1cについては、変更箇所以外の説明を省略する。
【0040】
図4で例示したSoC1aは、外部I/F16(ここではDMA転送を行う例を挙げているため、実際には外部I/F16及びDMA13a,13bでなる外部I/Fモジュール)を、内部プロセッサ11やメインメモリ用のメモリコントローラ15を含むバスである高速バスA(10)と、高速バスB(20)との間に多重バス接続した構成をもつ。
【0041】
この位置に接続すると、外部I/F16はメモリコントローラ15に近い位置に配置することができ、最も近い位置に配置することもできることからメモリアクセスのレイテンシを最も小さくすることができる。また、この配置では、外部I/F16が高速なデータ転送が可能なバスである高速バスA(10)への接続となるため、レイテンシが小さくなることと合わせ、外部I/F16とのデータ転送を非常に高速に実施することができる。次に、外部I/F16に外部プロセッサ6が接続され、SoC1aの外部からレジスタ31に対してアクセスするシステムを考える。この場合、外部プロセッサ6からレジスタ31のブロックへのアクセス経路は、「高速バスB(20)→低速バスC(30)→レジスタ31」となり、レジスタアクセスするためのアクセスレイテンシがやや長くなってしまう。
【0042】
このように、図4のような配置では、メモリアクセス性に着目すると、アクセス経路が高速バスAのみとなる最短経路での配置が可能となるため、メモリアクセス性は高いものとなるが、レジスタアクセス性に着目すると、アクセス経路が高速バスB(20)から低速バスC(30)へと続くやや長い経路となり、レジスタアクセス性はあまり良いとは言えない。以上のような理由から、本発明は、図4(図3)のような配置を採用しない。
【0043】
図5で例示したSoC1bは、図6で図示した一部抽出部分から明らかなように、外部I/F16(実際には外部I/Fモジュール)を、レジスタ31を含むバスである低速バスC(30)と、高速バスB(20)との間に多重バス接続した構成をもつ。
【0044】
この位置に接続すると、レジスタ31のブロックへのアクセス経路が非常に短くなり、外部I/F16を経由してアクセスする外部プロセッサ6は、レジスタアクセス性能、つまりシステム制御性能を高めることができる。一方、SoC1bの構成では、メインメモリへのアクセス性能は、アクセス経路が「高速バスB(20)→高速バスA(10)→メモリコントローラ15」とやや長くなるため、悪くなる。このように、図6(図5)のような配置では、レジスタアクセス性に着目すると、アクセス経路が低速バスC(30)のみとなり、最短経路での配置が可能となるため、レジスタアクセス性は高いものとなるが、メモリアクセス性に着目すると、アクセス経路が高速バスB(20)から高速バスA(10)へと続くため、メモリアクセス性は低いものとなる。以上のような理由から、本発明は、図6(図5)のような配置を採用しない。
【0045】
なお、多重バス接続ではなく、例えば高速バスAのみに属するように外部I/Fモジュールを配置した場合には、レジスタへのアクセス経路が長くなり、レジスタアクセス性が低いものとなる。さらに、高速バスAは、内部プロセッサをはじめとしてメインメモリや周辺モジュールへ頻繁に若しくは大量にデータアクセスするモジュールが多いバスであるため、他のバスと比べてバス内部が非常に混雑する状態となる。このような状態で外部プロセッサがレジスタへアクセスを行うと、他のモジュールのメモリアクセスに邪魔をされる形となり、レジスタアクセスレイテンシがさらに悪化することとなる。また、高速バスBのみに外部I/Fモジュールを配置した場合には、メモリ、レジスタ双方についてのアクセス経路に高速バスBが追加されるため、やや長くなる。また、低速バスCのみに外部I/Fモジュールを配置した場合には、メモリへのアクセス経路が長くなり、メモリアクセス性が低いものとなる。
【0046】
これらの構成に対し、本発明に係るSoCでは、図7及び図8で例示するような構成を採用する。図7で例示したSoC1cは、図8で図示した一部抽出部分から明らかなように、外部I/F16(実際には外部I/Fモジュール)を、内部プロセッサ11やメモリコントローラ15を含むバスである高速バスA(10)と、レジスタ31を含むバスである低速バスC(30)との間に多重バス接続した構成、つまり外部I/F16を上記第1の内部バスと上記第2の内部バスとの間に多重バス接続した構成をもつ。つまり、この例では、外部I/F16は高速バスA(10)と低速バスC(30)の双方に属するように接続される。
【0047】
この位置に接続すると、外部I/F16はメモリコントローラ15に近い位置に配置することができ、最も近い位置に配置することもできることからメモリアクセスのレイテンシを最も小さくすることができる。また、この配置では、外部I/F16が高速なデータ転送が可能なバスである高速バスA(10)への接続となるため、レイテンシが小さくなることと合わせ、外部I/F16とのデータ転送を非常に高速に実施することができる。さらに、この例ではバス10,20としていずれも高速バスを採用しているため、高速バスA(10)及び高速バスB(20)はどちらもバスアクセス性能は高く、外部I/Fモジュールは十分なデータ転送性能を確保できるようになる。
【0048】
また、外部プロセッサ6からのレジスタアクセスを考えても、レジスタ31のブロックへのアクセス経路が低速バスC(30)のみとなって非常に短くなり、外部I/F16を経由してアクセスする外部プロセッサ6は、レジスタアクセス性能、つまりシステム制御性能を高めることができる。
【0049】
実際、このような性能を得るため、SoC1cでは、メインメモリにメモリコントローラ15を介してアクセスする場合とレジスタ31にアクセスする場合とで、利用する内部バスを、高速バスA(10)と低速バスC(30)との間で切り替えている。図7及び図8の例では、DMA転送を可能にしているため、2つのDMAコントローラを用いて、DMA13aを介して高速バスA(10)にバス接続し、DMA13bを介して低速バスC(30)にバス接続した構成を採用し、さらに、利用する内部バスを切り替え可能にしている。無論、DMA転送を採用しない場合にも、外部I/F16に高速バスA(10)側と低速バスC(30)側との2つのインターフェース、つまり2つのバス接続機能をもたせておき、且つ利用するバスを切り替え可能にしておけばよい。
【0050】
切り替えは、メインメモリ、レジスタ31それぞれのアクセスに最適なバスを選択的に利用可能にすればよく、図7及び図8の例では、メインメモリにアクセスする場合にはDMA13a側、レジスタ31にアクセスする場合にはDMA13b側を、それぞれ利用可能にすればよい。
【0051】
このような制御により、メインメモリへのアクセス経路は「高速バスA(10)→メモリコントローラ15」、レジスタ31へのアクセス経路は「低速バスC(30)→レジスタ31」となり、どちらも最短経路でアクセスが可能となり、メモリアクセス性、レジスタアクセス性ともに高いものとなる。
【0052】
このように、SoC1cは、外部I/F16に2つのバス接続機能をもたせ、高速バスA(10)と低速バスC(30)の両方に外部I/F16を接続し、メインメモリへのアクセスの場合は高速バスA(10)の接続を利用することでメインメモリへのアクセスパフォーマンスを向上させ、レジスタ31へのアクセスの場合は低速バスC(30)の接続を利用することでレジスタ31へのアクセス性能を向上させることができる。
【0053】
ここで、図7及び図8のSoC1cでは、レジスタ31へのアクセスか、それ以外のアクセスかを判断して、利用するバスを選択する必要があるが、その具体的な方法について、図9を併せて参照しながら説明する。図9は、図7のSoCにおける外部I/Fのアドレスマップの一例を示す図である。
【0054】
図9で例示する外部I/F16のメモリ空間アドレスマップ90では、メモリコントローラ15に接続されるメインメモリについてアドレスが予め割り当てられており、且つレジスタ31についてもアドレスが予め割り当てられている。メモリ空間アドレスマップ90では、レジスタ31への割り当て領域は0xF000〜0xFFFFの範囲(レジスタ領域92という)に、メインメモリへの割り当て領域は0x0000〜0xAFFFの範囲(メインメモリ領域91という)に割り当てている。無論、外部プロセッサ6はこのルールに基づきアドレスを発して命令すればよい。なお、メインメモリ領域91とレジスタ領域92とを離間させた例を示しているが、隣接させてもよい。
【0055】
そして、外部I/F16は、外部プロセッサ6からアドレスを受信したとき、メモリ空間アドレスマップ90を参照して、外部プロセッサ6から受信したアドレスがメインメモリについて予め割り当てられたアドレスであれば上記第1の内部バス(高速バスAで例示)を利用し、レジスタ31について予め割り当てられたアドレスであれば上記第2の内部バス(低速バスCで例示)を利用する。
【0056】
図9の例では、外部プロセッサ6から外部I/F16に対して、0x0000のアドレスなどメインメモリ領域91内のアドレスにアクセス要求があれば、外部I/F16はメインメモリへのアクセス要求と判断して、高速バスA(10)側からメモリコントローラ15に対してアクセス要求を発行する。一方で、外部プロセッサ6から外部I/F16に対して、0xFFFFのアドレスなどレジスタ領域92内のアドレスにアクセス要求があれば、外部I/F16はレジスタ31へのアクセス要求と判断して、低速バスC(30)側からレジスタ31に対してアクセス要求を発行する。
【0057】
このように、外部I/F16は、利用する内部バスを切り替える手段として、レジスタ31の割り当てアドレスとメインメモリの割り当てアドレスとを、受信した要求アドレスを利用するバスの判断基準にし、要求アドレスに応じて利用するバスを切り替えることにより、容易に利用バスを選択することができ、レジスタ31とメインメモリのいずれへのアクセス性能をも向上させることが可能となる。
【0058】
以上、本発明に係るSoC1cについて主に図7〜図9を参照しながら説明したが、図8で例示したSoC1cにおいて、外部I/F16の属する高速バスA(10)又は低速バスC(30)に、各マスタからのアクセス優先度を設定可能なようなバスシステムを設けるように構成してもよい。これにより、外部プロセッサ6からのレジスタ変更の応答性能を上げ下げすることができる。
【0059】
また、上記第1の内部バス、上記第2の内部バスの例としてそれぞれ高速バスA(10)、低速バスC(30)を備えた例を挙げたが、低速バスC(30)の代わりに高速バスA(10)と同等又はそれより高速のバスを設けてもよい。
【0060】
また、SoC1cでは、バスが3つ以上で構成されたとしても内部プロセッサ11及びメインメモリ側のバスとレジスタ側のバスとの2つのバスに外部I/Fモジュールを接続することで、メインメモリへのアクセス性能とレジスタへのアクセス性能両方を向上することが可能になる。例えば図8のSoC1cにおいて、例えば外部I/F16にさらに別のDMAを介して高速バスB(20)にも接続し、合計3つのバスに多重バス接続されるように構成してもよい。このように、本発明では、外部I/F16が少なくとも、内部プロセッサ11やメモリI/F(メモリコントローラ15で例示)がバス接続された高速バスA(10)とレジスタ31がバス接続された低速バスC(30)との双方に接続されていればよい。また、本発明は、SoC1cにおいて高速バスB(20)を設けない構成を採用しても、上記第1の内部バスと上記第2の内部バスとが設けられていればよい。
【符号の説明】
【0061】
1,1a,1b,1c…SoC、2…メモリモジュール、3…ROM、4…LCD、5…HDD、6…外部プロセッサ、10…高速バスA、11…内部プロセッサ、12,13a,13b,14,21,22,23…DMA、15…メモリコントローラ、16…外部I/F、20…高速バスB、24…HDDコントローラ、25…LCDコントローラ、30…低速バスC、31…レジスタ、32…ROM I/F、90…メモリ空間アドレスマップ、91…メインメモリ領域、92…レジスタ領域。

【特許請求の範囲】
【請求項1】
プロセッサ、メインメモリ用のメモリI/F、外部プロセッサを有するデバイス用の外部I/F、及びレジスタを備えた半導体集積回路において、
該半導体集積回路は、前記プロセッサ及び前記メモリI/Fがバス接続された第1の内部バスと前記レジスタがバス接続された第2の内部バスとを含む複数の内部バスを備え、且つ前記プロセッサ及び前記外部プロセッサの両方から前記レジスタにアクセス可能なように構成され、
前記外部I/Fは、前記第1の内部バスと前記第2の内部バスとの間に多重バス接続され、前記メインメモリに前記メモリI/Fを介してアクセスする場合と前記レジスタにアクセスする場合とで、利用する内部バスを切り替えることを特徴とする半導体集積回路。
【請求項2】
前記外部I/Fは、前記半導体集積回路の外部からアクセス要求されたアドレスが、前記メインメモリについて予め割り当てられたアドレスであれば前記第1の内部バスを利用し、前記レジスタについて予め割り当てられたアドレスであれば前記第2の内部バスを利用することを特徴とする請求項1に記載の半導体集積回路。

【図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


【公開番号】特開2012−177966(P2012−177966A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−39225(P2011−39225)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】