JP2013205928A - 半導体集積回路およびそのdma制御方法 - Google Patents

半導体集積回路およびそのdma制御方法 Download PDF

Info

Publication number
JP2013205928A
JP2013205928A JP2012071729A JP2012071729A JP2013205928A JP 2013205928 A JP2013205928 A JP 2013205928A JP 2012071729 A JP2012071729 A JP 2012071729A JP 2012071729 A JP2012071729 A JP 2012071729A JP 2013205928 A JP2013205928 A JP 2013205928A
Authority
JP
Japan
Prior art keywords
dma controller
transfer
dma
dmac
integrated circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012071729A
Other languages
English (en)
Other versions
JP2013205928A5 (ja
JP5888050B2 (ja
Inventor
Masatoshi Tanabata
雅俊 七夕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2012071729A priority Critical patent/JP5888050B2/ja
Priority to US13/770,645 priority patent/US9323700B2/en
Publication of JP2013205928A publication Critical patent/JP2013205928A/ja
Publication of JP2013205928A5 publication Critical patent/JP2013205928A5/ja
Application granted granted Critical
Publication of JP5888050B2 publication Critical patent/JP5888050B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/376Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Microcomputers (AREA)

Abstract

【課題】ハードウェアを簡略化して半導体集積回路の開発期間の短縮や再利用を可能にすると共に、様々な条件に対しても柔軟に対応することができる半導体集積回路およびそのDMA制御方法の提供を図る。
【解決手段】バス10と、前記バスに接続されたメモリ12と、前記バスに接続された演算処理装置11と、前記バスに接続された第1DMAコントローラ13と、所定の機能を実現する機能マクロ5,前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラ4,および,前記メモリと前記機能マクロのDMA転送に関するアクセス条件を設定するアクセス条件設定部(41,43)を含む、前記バスに接続された少なくとも1つの機能ブロック14と、を有する。
【選択図】図13

Description

本明細書で言及する実施例は、半導体集積回路およびそのDMA制御方法に関する。
近年、デジタルスチルカメラ(DSC:Digital Still Camera)を始めとする様々な電子機器において、SoC(Silicon on Chip:半導体集積回路)が利用されている。ところで、SoCの各機能マクロ(機能ブロック、モジュール)間のデータ転送方式として、一般的に、次の3つが利用されている。
すなわち、第1のデータ転送方式は、SoC上のCPU(Central Processing Unit:中央演算処理装置)による転送であり、第2のデータ転送方式は、SoCのシステムバス上のDMA(Direct Memory Access)コントローラによるDMA転送である。なお、DMAコントローラによるDMA転送において、各機能マクロは、DMAスレーブになる。
さらに、第3のデータ転送方式は、SoCの機能マクロ内部にDMA転送を行うマスタ回路(DMAマスタ)を実装して行うDMA転送を行うものである。なお、データ転送方式としては、さらに、他の方式も提案されている。
ところで、従来、DMAコントローラを使用したシステムとしては、様々なものが提案されている。
特開2005−011287号公報 特開平11−041297号公報 国際公開第08/026273号パンフレット
上述したように、従来、SoCの各機能マクロ間のデータ転送方式としては、第1〜第3のデータ転送方式といった様々なものが利用されているが、これらのデータ転送方式には、次のような問題がある。
すなわち、第1のデータ転送方式では、CPUによってデータ転送を制御するため、CPUが主たる処理行うためのリソースが消費され、本来、CPUが行う処理を妨げることになってしまう。
また、第2のデータ転送方式では、SoCのシステムバスに接続されたDMAコントローラによって複数の機能マクロ間のデータ転送を制御するため、DMAコントローラの仕様が複雑になり、開発に伴う期間が長期化することになってしまう。
この開発期間の長期化の問題は、例えば、SoCの仕様作成時点において、全ての機能マクロのDMA転送に関する仕様、並びに、全ての機能マクロ間での処理の優先度といったものが決定済みでなければならないことに起因する。
また、第2のデータ転送方式は、優先順位管理(QoS:Quality on Service)機構を使用する場合にはハードウェアの複雑さが増大し、また、QoS機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
さらに、第3のデータ転送方式では、上述した第2のデータ転送方式と同様の問題が存在する。すなわち、SoCの仕様作成時点において、ソフトウェアも含めたDMAの転送仕様が明確でなければならない。
また、第3データ転送方式は、QoS機構を使用する場合にはハードウェアの複雑さが増大し、さらに、QoS機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。そして、別品種を開発する際には、再利用できる部分が少ないといった不都合も同様に存在する。
一実施形態によれば、バスと、前記バスに接続されたメモリと、前記バスに接続された演算処理装置と、前記バスに接続された第1DMAコントローラと、前記バスに接続された少なくとも1つの機能ブロックと、を有する半導体集積回路が提供される。
前記機能ブロックは、所定の機能を実現する機能マクロ,前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラ,および,前記メモリと前記機能マクロのDMA転送に関するアクセス条件を設定するアクセス条件設定部を含む。
開示の半導体集積回路およびそのDMA制御方法は、ハードウェアを簡略化して半導体集積回路の開発期間の短縮や再利用を可能にすると共に、様々な条件に対しても柔軟に対応することができるという効果を奏する。
図1は、半導体集積回路(SoC)が適用されるデジタルスチルカメラの一例を示すブロック図である。 図2は、半導体集積回路におけるデータ転送方式の第1例を説明するためのブロック図である。 図3は、半導体集積回路におけるデータ転送方式の第2例を説明するためのブロック図である。 図4は、半導体集積回路におけるデータ転送方式の第3例を説明するためのブロック図である。 図5は、図4におけるDMAC(モジュール)の一例を示すブロック図である。 図6は、半導体集積回路におけるデータ転送方式の第4例を説明するためのブロック図である。 図7は、本実施例の半導体集積回路(SoC)が適用されるデジタルスチルカメラの一例を示すブロック図である。 図8は、図7に示す半導体集積回路におけるサブDMAC(プログラマブルDMAC)の一例を示すブロック図である。 図9は、図8に示すサブDMACにおけるプログラマブルコアの一例を示すブロック図である。 図10は、第1実施例の半導体集積回路におけるデータ転送方式の一例を説明するためのブロック図である。 図11は、第1実施例の半導体集積回路におけるデータ転送方式の他の例を説明するためのブロック図である。 図12は、第1実施例の半導体集積回路において、リソース競合時の処理の一例を、サブDMACに注目して説明するためのブロック図である。 図13は、第1実施例の半導体集積回路において、リソース競合時の処理の一例を、半導体集積回路全体に注目して説明するためのブロック図である。 図14は、図13に示す半導体集積回路のサブDMACにおけるリソース競合がない時の処理の一例を示すフローチャートである。 図15は、図13に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。 図16は、第1実施例の半導体集積回路の変形例におけるデータ転送方式の一例を説明するためのブロック図である。 図17は、図16に示す半導体集積回路の第1サブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。 図18は、図16に示す半導体集積回路の第2サブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。 図19は、バスの使用率とサブDMACによるDMA転送の関係を説明するためのタイミング図である。 図20は、第2実施例の半導体集積回路の一例を示すブロック図である。 図21は、図20に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。 図22は、図20に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の他の例を示すフローチャートである。
まず、半導体集積回路およびそのDMA制御方法の実施例を詳述する前に、図1〜図6を参照して、半導体集積回路が適用される一例としてのデジタルスチルカメラ、半導体集積回路の各機能マクロ(モジュール)間のデータ転送方式、並びに、その問題点を説明する。
図1は、半導体集積回路(SoC)が適用されるデジタルスチルカメラの一例を示すブロック図である。図1において、参照符号101は、画像処理装置(半導体集積回路:SoC)、102は撮像部、131は外部メモリ、132は表示部、そして、133は記録メディアを示す。
撮像部102は、被写体の情報を画像処理装置101が扱える形式に変換して出力するもので、撮影レンズ121、撮像素子122およびA/D変換回路123を含む。撮影レンズ121は、被写体の情報を入射光として撮像素子122に出力する。
撮像素子122は、撮影レンズ121から入力された光を電気信号(画像データ)に変換してA/D変換回路123に出力する。ここで、撮像素子122としては、例えば、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等のイメージセンサが使用される。
画像処理装置101は、撮像部102から入力された画像データを処理し、各機能マクロ(インターフェースモジュール)115〜117にデータ転送するもので、システムバス110、CPU(メインCPU)111および内部メモリ(システムメモリ)112を含む。
さらに、画像処理装置101は、メインDMAC113、メモリインターフェース(I/F)115、表示用I/F116、メディア用I/F117、プリプロセス処理部118および画像処理部119を含む。
システムバス110は、画像処理装置101内部の各モジュールを接続するための共有バスであり、メインCPU111は、各回路(モジュール)の統括制御を行う部分であり、例えば、データや画像の解析および解析結果に基づく各回路への設定等の制御を行う。
内部メモリ112は、画像処理装置101内部に配置されるメモリモジュールであり、処理前および処理途中の画像データなどを保持するために使用される。メインDMAC113は、画像処理装置101内部に配置され、CPU111からの設定に従って、画像処理装置101内部の各モジュール間のデータ転送を行う。
メモリI/F115は、外部メモリ131へのアクセスの調停を行うインターフェースモジュールである。表示用I/F116は、内部メモリ112および外部メモリ131から転送された画像データを表示部132に対応した形式のデータに変換し、表示部132に出力する。メディア用I/F117は、記録メディア133に対するデータ入出力を実行するモジュールである。
プリプロセス処理部118は、撮像部102のA/D変換回路123からの画像データを受け取り、CPU111の命令に従って処理し、その処理されたデータを内部メモリ112または外部メモリ131に格納する。画像処理部119は、内部メモリ112または外部メモリ131の画像データを所定の方式(例えば、JPEGなど)に変換する。
外部メモリ131は、画像処理装置101の外部に設けられたメモリで、例えば、SDRAM/DDR(Synchronous Dynamic Random Access Memory/Double-Data-Rate)等のメモリが使用される。表示部132は、画像処理装置101内で処理された画像データを表示する部分であり、液晶ディスプレイなどが用いられる。
記録メディア133は、画像処理装置101内で処理された画像データを保存するための外部の記録用デバイスであり、コンパクトフラッシュ(登録商標)(CFカード)やSD(登録商標)カードなどの携帯型メモリーカードが使用される。
図2は、半導体集積回路におけるデータ転送方式の第1例(第1のデータ転送方式)を説明するためのブロック図であり、メインCPU111によりシステムメモリ(メモリ)112のデータを機能マクロ(例えば、暗号マクロ)140に転送するものを示す。なお、機能マクロ(機能ブロック)140は、暗号マクロに限定されないのはもちろんである。
図2に示されるように、システムメモリ112のデータは、システムバス(バス)110を介して、一旦、メインCPU111(演算処理装置)内部のレジスタに格納される(経路(処理)P111)。そして、そのメインCPU111内部のレジスタに格納されたデータは、システムバス110を介して機能マクロ140に書き込まれる(P112)。
この図2に示すデータ転送方式では、メインCPU111の処理がデータ転送のために停止することになり、また、データの転送単位は、例えば、メインCPU111のバス幅に制限されるため、比較的小さく(32bit/64bit)なる。その結果、メインCPU111の処理が遅延し、或いは、データ転送速度が低下するといった問題が発生する。
図3は、半導体集積回路におけるデータ転送方式の第2例(第2のデータ転送方式)を説明するためのブロック図であり、システムバス110上のDMAC(メインDMAC)113によりシステムメモリ112のデータを機能マクロ140に転送するものを示す。
図3に示されるように、メインCPU111は、DMAC113に対して転送要求を出力(P121)し、これを受けてDMAC113は、システムメモリ112からデータ(転送データ)を読み出す(P122)。さらに、DMAC113は、その読み出したデータを機能マクロ140に書き込む(P123)。
ここで、DMAC113は、一度に扱える転送データサイズが、例えば、512bitのように、メインCPU111が処理するサイズよりも大きいため、高速のデータ転送を行うことができ、転送効率を向上させることが可能になる。さらに、データ転送は、DMAC113により行うため、メインCPU111の処理を停止させなくてもよい。
しかしながら、図3に示すデータ転送方式では、DMAC113によって複数の機能マクロ(機能マクロ140、並びに、図1の機能マクロ115〜117等)間のデータ転送を制御するため、DMAC113の仕様が複雑になり、開発に伴う期間が長期化する。
この開発期間の長期化の問題は、例えば、半導体集積回路(SoC)の仕様作成時点において、全ての機能マクロのDMA転送に関する仕様、並びに、全ての機能マクロ間での処理の優先度といったものが決定済みでなければならないことに起因する。
また、図3に示すデータ転送方式は、優先順位管理(QoS)機構を実装する場合にはハードウェアの複雑さが増大し、また、QoS機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
図4は、半導体集積回路におけるデータ転送方式の第3例(第3のデータ転送方式)を説明するためのブロック図であり、DMAC(モジュール)150を機能マクロ140のインターフェースとして取り込み、DMAC150によりデータ転送を行うものを示す。
図4に示されるように、メインCPU111は、機能マクロ140のために設けられたDMAC150に対して転送要求を出力(P131)し、これを受けてDMAC150は、システムメモリ112からデータ(転送データ)を読み出す(P132)。
さらに、DMAC150で読み出したデータは、そのまま機能マクロ140で処理され(P133)、そして、処理されたデータは、DMAC150を介してシステムメモリ112に書き込まれる(P134)。
ここで、DMAC150は、前述した図3のDMAC113と同様に、一度に扱える転送データサイズが大きいため、データ転送効率を向上させることができ、さらに、メインCPU111の処理を停止させなくてもよい。
図5は、図4におけるDMAC(モジュール)の一例を示すブロック図である。図5に示されるように、DMAC150は、例えば、システムバスインターフェース151、制御レジスタ152、転送制御部153、ステートマシン154、および、優先制御部155を含む。
システムバスインターフェース151は、システムバス110と機能マクロ140(DMAC150)とのインターフェースを取るための回路であり、制御レジスタ152は、転送制御部153によるDMA転送を行うための制御レジスタである。
ステートマシン154は、入力条件と現在の状態によって次の状態を決める論理回路(順序回路)であり、優先制御部155は、QoS機構の制御を行うためのものである。ここで、ステートマシン154および優先制御部155は、ハードウェアとされている。
上述した図4および図5に示すデータ転送方式においても、データ処理を担当する機能マクロの処理内容に合わせて適切な形でのデータ転送を行うために、マクロの機能数に応じて、DMAC150の転送チャネルが増える。
また、図3を参照して説明したのと同様に、図4および図5に示すデータ転送方式においても、開発期間の長期化の問題や、QoS機構を実装する場合のハードウェアの複雑さといった問題がある。
すなわち、ステートマシン154および優先制御部155のハードウェアが増大し、QoS機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクもある。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
図6は、半導体集積回路におけるデータ転送方式の第4例を説明するためのブロック図である。この図6に示すデータ転送方式は、システムバス110に対してメインDMAC(DMAC)113、および、機能マクロ140のためのサブDMAC150を含む。ここで、サブDMAC150は、上述した図4のDMAC(モジュール)に対応し、メインDMAC113は、図3のDMACに対応する。なお、図6では、転送要求およびデータ転送を簡略化して示している。
メインDMAC113は、メインCPU111からの転送要求に従ってメインDMAC113を介してシステムメモリ112と他のスレーブ回路160(メインCPU111)の間のDMA転送を制御(P141,P142)する。サブDMAC150は、メインCPU111からの転送要求に従って機能マクロ140とシステムメモリ112の間のDMA転送を制御(P143)する。
上述したように、図6に示すデータ転送方式は、図3のDMAC(メインDMAC)113と図4のDMAC(サブDMAC)150を設けたものであるが、この場合も、上述した図4および図5のデータ転送方式と同様の問題がある。
具体的に、図1を参照して説明した半導体集積回路101に対して、新たにネットワーク機能(機能マクロ140)を搭載する場合、システムバス110上の他のスレーブ回路(別の機能マクロ115〜117)160のDMA転送はメインDMAC113が制御する。そして、システムバス110上のネットワーク機能マクロ140のDMA転送はサブDMAC150が制御する。
ここで、例えば、メインDMAC113によるDMA転送処理と、サブDMAC150によるDMA転送処理が競合することがあり得る。具体的に、メインDMAC113によるDMA転送処理は、例えば、撮像部102から入力された画像データをプリプロセス処理部118からシステムメモリ112に書き込む処理(撮影時のDMA転送処理)である。また、サブDMAC150によるDMA転送処理は、例えば、ネットワーク機能マクロ140によるデータ転送処理である。
この場合、例えば、メインDMAC113による撮影時のDMA転送処理を最優先で連続的に行い、サブDMAC150によるネットワーク機能マクロ140のデータ転送処理を停止して競合を避ける機能をもたせるのが好ましい。
そのためには、例えば、サブDMAC150に対して、メインDMAC113またはシステムバス110の動作状況を確認するためのハードウェアを別途実装することになる。この場合、例えば、上述したQoS機構を実装する場合と同様に、専用論理の追加によるハードウェア規模の増加やハードウェア実装期間の長期化といった問題が生じることになる。
さらに、QoS機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しい、或いは、別品種を開発する際には、再利用できる部分が少ないといった問題も存在する。これは、例えば、転送チャネル数の増大や接続されるシステムへの影響を考慮した設計を行う際には、さらに顕著なものとなる。
なお、仕様によっては、メインDMAC113による撮影時のDMA転送処理を停止して、サブDMAC150によるネットワーク機能マクロ140のデータ転送処理を最優先で連続的に行う場合も考えられるが、同様の問題が生じることになる。
以下、半導体集積回路およびそのDMA制御方法の実施例を、添付図面を参照して詳述する。図7は、本実施例の半導体集積回路が適用されるデジタルスチルカメラの一例を示すブロック図であり、前述した半導体集積回路(画像処理装置:SoC)101に対して、ネットワークブロック(機能ブロック)14を追加したものに相当する。
なお、図7では、サブDMAC(プログラマブルDMAC)4およびイーサネット(登録商標)インターフェース(I/F)5が設けられた機能ブロック14の一例として、ネットワークブロックを示しているが、これに限定されるものではない。さらに、サブDMAC4を設けた機能ブロック14は、1つに限定されるものではなく、例えば、図16を参照して後述するように、2つ、或いは、それ以上であってもよい。
すなわち、図7に示されるように、デジタルスチルカメラは、画像処理装置(半導体集積回路:SoC)1、は撮像部2、外部メモリ31、表示部32および記録メディア33を含む。
撮像部2は、被写体の情報を画像処理装置1が扱える形式に変換して出力するもので、撮影レンズ21、撮像素子22およびA/D変換回路23を含む。撮影レンズ21は、被写体の情報を入射光として撮像素子22に出力する。
撮像素子22は、撮影レンズ21から入力された光を電気信号(画像データ)に変換してA/D変換回路23に出力する。ここで、撮像素子22としては、例えば、CCDやCMOS等のイメージセンサが使用される。
画像処理装置1は、撮像部2から入力された画像データを処理し、各インターフェースモジュール15〜17に対してデータ転送するもので、システムバス(バス)10、CPU(メインCPU)11および内部メモリ(システムメモリ)12を含む。
さらに、画像処理装置1は、メインDMAC(第1DMAコントローラ)13、ネットワークブロック14、メモリI/F15、表示用I/F16、メディア用I/F17、プリプロセス処理部18および画像処理部19を含む。
ネットワークブロック14は、サブDMAC(第2DMAコントローラ)4およびイーサネット(登録商標)I/F(機能マクロ)5を含む。なお、サブDMAC4は、図8以降を参照して、後に詳述する。
システムバス10は、画像処理装置1内部の各モジュールを接続するための共有バスであり、メインCPU11は、各回路(モジュール)の統括制御を行う部分であり、例えば、データや画像の解析および解析結果に基づく各回路への設定等の制御を行う。
内部メモリ12は、画像処理装置1内部に配置されるメモリモジュールであり、処理前および処理途中の画像データなどを保持するために使用される。メインDMAC13は、画像処理装置1内部に配置され、CPU11からの設定に従って、画像処理装置1内部の各モジュール間のデータ転送を行う。
メモリI/F15は、外部メモリ31へのアクセスの調停を行うインターフェースモジュールである。表示用I/F16は、内部メモリ12および外部メモリ31から転送された画像データを表示部32に対応した形式のデータに変換し、表示部132に出力する。メディア用I/F17は、記録メディア33に対するデータ入出力を実行するモジュールである。
プリプロセス処理部18は、撮像部2のA/D変換回路23からの画像データを受け取り、CPU11の命令に従って処理し、その処理されたデータを内部メモリ12または外部メモリ31に格納する。画像処理部19は、内部メモリ12または外部メモリ31の画像データを所定の方式(例えば、JPEGなど)に変換する。
外部メモリ31は、画像処理装置1の外部に設けられたメモリで、例えば、SDRAM/DDR等のメモリが使用され、表示部32は、画像処理装置1内で処理された画像データを表示する部分であり、液晶ディスプレイなどが用いられる。
記録メディア33は、画像処理装置1内で処理された画像データを保存するための外部の記録用デバイスであり、コンパクトフラッシュ(登録商標)(CFカード)やSD(登録商標)カードなどの携帯型メモリーカードが使用される。
図8は、図7に示す半導体集積回路におけるサブDMAC(プログラマブルDMAC)の一例を示すブロック図である。図8に示されるように、サブDMAC4は、機能マクロ5に接続され、DMACコア40、DMACチャネルレジスタ43、データバッファ44およびシステムバスインターフェース45を含む。
DMACコア40は、命令RAM41およびプログラマブルコア42を含み、DMACチャネルレジスタ43は、DMA転送を行うためのデータを保持する複数(n+1個)のレジスタCH.0〜CH.nを含む。
ここで、プログラマブルコア42は、命令RAM41にロードされたプログラム(命令)に従ってDMA転送の制御を行う。また、DMACチャネルレジスタ43の各レジスタは、例えば、それぞれアドレスレジスタ、転送要求レジスタおよび優先順位制御レジスタ等を含む。
なお、命令RAM(命令メモリ、制御コード格納部)41およびDMACチャネルレジスタ(レジスタ)43は、システムメモリ12と機能マクロ5のDMA転送に関するアクセス条件を設定するアクセス条件設定部に対応する。
アドレスレジスタは、システムメモリ(メモリ)12のアドレスを格納するためのレジスタであり、転送要求レジスタは、処理するデータをサブDMAC4に指示するためのレジスタであり、優先順位制御レジスタは、QoS制御時の設定を行うレジスタである。なお、サブDMAC4に割り込み通知に使用するタイマーを設けることもできる。
ここで、図8に示す本実施例のサブDMAC4は、図5を参照して説明したDMAC(モジュール)150とは異なり、プログラマブルコア42が命令RAM41にロードされたプログラムを実行することにより、システムに応じたDMA転送を行うことができる。
具体的に、QoS制御に関して、ラウンドロビン機構のみのサポート、重みつきラウンドロビン(WRR:Weighted Round Robin)+ラウンドロビン、最優先転送キュー+ラウンドロビン、或いは、優先順位制御なしといったシステムに対応することができる。
すなわち、本実施例によれば、命令RAM41にロードする専用コードによりQoS制御の実装を行うため、上述のような様々なQoS制御方式の柔軟な変更が可能になり、例えば、実際のシステム動作を確認しながら調整することができる。
例えば、図1〜図6を参照して説明した半導体集積回路において、このような様々なQoS制御方式の制御は、ステートマシンをハードウェアで実装することによって実現するため、QoS制御方式の変更は、ハードウェアの変更を伴う。これに対して、本実施例によれば、命令RAM41にロードする専用コードの変更により様々なQoS制御方式の柔軟な変更が可能になる。
図9は、図8に示すサブDMACにおけるプログラマブルコアの一例を示すブロック図である。図9において、参照符号421はコアインターフェース、422はコアデコーダ、423はコア制御部、424はコア演算部、そして、425はコアレジスタを示す。
図9に示されるように、プログラマブルコア42は、コアインターフェース421、コアデコーダ422、コア制御部423、コア演算部424およびコアレジスタ425を含む。
命令RAM41は、専用コード(制御コード)を格納するRAM領域を含み、DMAとしての仕様を満たすように設計したコードを、例えば、システムの電源投入時等の初期化時にロードする。
コアインターフェース421は、命令RAM41からのコマンド、例えば、コピー,読み出しおよび書き込みコマンドに従って、プログラマブルコア42の外部へのアクセスを実行する。
コアデコーダ422は、命令RAM41からのコマンドをデコードし、コア制御部423、そのデコードされたコマンドに従って、コアインターフェース421,コア演算部424およびコアレジスタ425を制御する。
コア演算部424は、各種演算命令(例えば、加算,減算および論理積等)を実行する。ここで、コアレジスタ425は、コードを使用してアクセス可能なレジスタを纏めたもので、データ保持に使用する汎用レジスタと設定値自体が意味を持つ専用レジスタを含む。
なお、DMACコア40(プログラマブルコア42)は、例えば、DMA転送に使用するレジスタが実装されているDMACチャネルレジスタ43との間のバス(内部バス)を介して接続されている。また、命令RAM41に格納されたコマンドを使用してDMACチャネルレジスタ43のデータをロードし、或いは、DMACチャネルレジスタ43へデータをストアすることが可能である。
この図9に示すようなプログラマブルコア42を搭載しておくことにより、DMA転送時に使用する各種パラメータ(ホストのアドレスや転送データサイズ等)を、専用コードを使用して内部のコアレジスタ425に格納して使用することが可能になる。
また、システムメモリ12(ホスト)へのアクセスの際に使用するアドレスを管理するレジスタをコアレジスタ425の内部に搭載することで、専用コードによる制御が可能になる。
これにより、DMA転送動作時に使用する一連の処理を、専用コードによるソフトウェアのリソースによって記述することが可能になる。すなわち、命令RAM41に格納するコードによって制御することができる。
なお、命令RAM41は、例えば、半導体集積回路(SoC)1、或いは、SoC1が搭載された電子機器の電源投入時に、メインCPU(演算処理装置)11により所定のコード(コマンド)がロードされることになる。
以上において、命令RAM41に格納されるデータ(ロードされる制御コード)を書き替えることにより、サブDMAC4で制御するシステムメモリ12と機能マクロ5のDMA転送に関するアクセス条件を様々に変更することができる。これは、SoC(半導体集積回路)を、例えば、デジタルスチルカメラ(製品)に適用した後において、仕様の変更やファームウェアアップデート等を行うことを可能にする。
図10は、第1実施例の半導体集積回路におけるデータ転送方式の一例を説明するためのブロック図である。なお、図10では、メインDMAC(13)および他のスレーブ回路(15’)は省略されている。
図10に示されるように、メインCPU11は、例えば、電源投入時に、専用コードをサブDMAC4(命令RAM41)に書き込む(P11)。なお、メインCPU11によるサブDMAC4への専用コードの書き込みは、例えば、上述した電源投入時等の初期化時のみ行う。
さらに、メインCPU11により、サブDMAC4に対して転送要求を出力(P12)し、これを受けてサブDMAC4は、システムメモリ12からデータ(転送データ)を読み出す(P13)。
さらに、サブDMAC4で読み出したデータは、そのまま機能マクロ5で処理され(P14)、そして、処理されたデータは、サブDMAC4を介してシステムメモリ12に書き込まれる(P15)。
ここで、例えば、サブDMAC4が初期化時に専用コードを読み込んだ後は、メインCPU11からの転送要求(P12)に従って、P13〜P15の動作を繰り返す。なお、サブDMAC4は、メインDMAC13と同様に、一度に扱える転送データサイズが大きいため、データ転送効率を向上させることができ、さらに、メインCPU11の処理を停止させなくてもよい。
図11は、第1実施例の半導体集積回路におけるデータ転送方式の他の例を説明するためのブロック図であり、サブDMACは、ハードワイヤード(回路接続)とされている。図11に示されるように、メインCPU11は、システムメモリ12上にディスクリプタ12aを配置する(P21)。
ここで、システムメモリ12上に配置されるディスクリプタ12aとしては、例えば、0x0:データ転送サイズ、0x4:転送元アドレス、0x8:転送先アドレスといった情報が含まれる。さらに、システムメモリ12は、転送元データ領域12bおよび転送先データ領域12cを含む。
メインCPU11が機能ブロック14のサブDMAC4に対して処理要求を行う(P22)と、サブDMAC4は、ディスクリプタ12aを読み出す(P23)。さらに、サブDMAC4は、そのディスクリプタ12aの情報に従い、機能マクロ5に対してシステムメモリ12からのデータを転送(DMA転送)する(P24)。
そして、機能マクロ5において、所定のデータ処理が行われ(P25)、サブDMAC4は、その処理後のデータをディスクリプタ12aに従ってシステムメモリ12に転送する(P26)。
ここで、メインCPU11は、上述したP21およびP22の処理のみを行い、後の処理(P23,P24,P26)をサブDMAC4に任せることができるため、メインCPU11のリソースの消費を低減することが可能になる。
図12は、第1実施例の半導体集積回路において、リソース競合時の処理の一例を、サブDMAC4に注目して説明するためのブロック図であり、メインCPU11がサブDMAC(プログラマブルDMAC)4にDMA転送指示を出した後の処理を示す。
すなわち、図12は、図11におけるP23およびP24の処理を説明するためのものであり、図12に示す処理(P31〜P39)は、例えば、システムの電源投入時等の初期化時に命令RAM41にロードされた制御コード(専用コード)に従って実行される。
ここで、図12は、図8および図9を参照して説明したDMACコア40(命令RAM41およびプログラマブルコア42)、DMACチャネルレジスタ43、データバッファ(内部バッファ)44をシステムメモリ12と共に示す。なお、サブDMAC4によるデータ転送の全体的な手順は、図11を参照して説明したのと同様である。
図12に示されるように、例えば、DMACチャネルレジスタ43におけるチャネル00のレジスタBのデータ(スタートアドレス)をコアレジスタ425の第1レジスタにロードする(P31)。
次に、コア制御部423により、バッファアドレス(命令RAM41上の定数)をコアレジスタ425の第2レジスタにロードする(P32)。さらに、コアレジスタ425の第2レジスタ上の定数値であるディスクリプタ12aのワード数をコアレジスタ425の第3レジスタにロードする(P33)。これにより、コアレジスタ425の第3レジスタには、例えば、上述した0x0〜0x8の3ワード分のデータが格納される。
さらに、コアレジスタ425の第1レジスタの指すレジスタから、その第3レジスタ設定ワード数分、ディスクリプタ12aのデータをコアレジスタ425(内部レジスタ)に読み出す(P34)。これにより、例えば、3ワード分のデータ(0x0:データ転送サイズ、0x4:転送元アドレス、0x8:転送先アドレス)が内部レジスタに格納される。
また、処理P34で読み出したデータ転送サイズ(0x0)に基づいて、例えば、ブロックコピー発行回数を計算してコアレジスタ425の第3レジスタに格納(上書き)する(P35)。
さらに、処理P34で読み出した転送元アドレス(0x4)をコアレジスタ425の第1レジスタにロードする(P36)。そして、ブロックコピー(DMAによるデータのブロック転送)を実行する(P37)。
なお、P38は、コア演算部424により、処理P35で計算した発行回数から1を差し引く処理を示し、また、P39は、コピーコマンド発行回数が0でない(≠0)ならば、処理P34にジャンプする処理を示す。
このように、本実施例によれば、例えば、DMA転送に使用するシステムメモリ(ホスト)のアドレスおよび転送するデータサイズ等のパラメータとなる部分は、ハードワイヤードだけでなく、命令RAM41上の制御コード(コマンド)により制御する。
これにより、命令単位でのアクセスが可能になり、その他の分岐命令や演算命令と組み合わせることで、転送データサイズの細かな調整や転送のタイミングの調整等を、ハードウェア(回路)を変更せずに実現することができる。
次に、メインDMAC13とサブDMAC4のリソースの競合時の処理を説明する。まず、第1のリソース競合時の処理は、メインDMAC13の転送を阻害することなく、そのメインDMAC11の動作状況を確認することでサブDMAC4の動作を変更するものである。また、第2のリソース競合時の処理は、例えば、内蔵タイマーを使用してシステムバス(バス)10の利用状況を判断するものである。
上述した第1のリソース競合時の処理は、図13〜図15(図13〜図18)を参照して以下に詳述し、また、第2のリソース競合時の処理は、図13および図19〜図22を参照して後に詳述する。
ここで、第1のリソース競合時の処理の前提として、サブDMAC4(例えば、コアレジスタ425の第1レジスタ)に対して、システムメモリ12に格納されているメインDMAC13のステイタスレジスタのアドレスを設定しておく。そして、サブDMAC4(DMACコア40)の命令RAM41にロードするコードを変更することにより、リソース競合時の処理を行う。
この場合、例えば、サブDMAC4のチャネルレジスタ43の使用していないチャネルのレジスタを利用して行う、或いは、命令RAM41にロードするコードに対してメインDMAC13のステイタスレジスタのアドレスを直接記載して行うことができる。
具体的に、例えば、チャネルレジスタ43のレジスタBのデータをコアレジスタ425の第1レジスタにロードし、或いは、システムメモリ12からコアレジスタ425の第1レジスタに直接ロードする。
そして、コアレジスタ425の第2レジスタに対して第1レジスタの指すデータを読み出し、その第1レジスタの値を確認(条件分岐コマンド)する。すなわち、条件が成立ならば、メインDMAC13のステイタスレジスタのアドレスを第1レジスタに対してロードし、条件が不成立ならば、転送処理コードに従った処理を行う。
すなわち、第1のリソース競合時の処理は、ハードウェアに変更を加えることなく制御コードを追加し、メモリマップ上に存在するメインDMAC13等のモジュールのステイタスを確認することで、サブDMAC4の動作タイミングを変更することができる。
図13は、第1実施例の半導体集積回路において、リソース競合時の処理の一例を、半導体集積回路全体に注目して説明するためのブロック図である。
ここで、図13は、前述した図10或いは図11に示す半導体集積回路に対して、メインDMAC13および他のスレーブ回路15’を明示したものに相当する。なお、図13において、参照符号P41は、サブDMAC4によるDMA転送処理を示し、また、P42およびP43は、メインDMAC13によるDMA転送処理を示す。
ところで、メインDMAC13のステイタス情報として、例えば、DMA転送を行う際のデータサイズ(TC(Transfer Count)フィールドが挙げられる。例えば、メインDMAC13がTCフィールドを備えており、DMA転送中には0以外の値を示している場合、そのTCフィールドを参照することでメインDMAC13の動作状況を確認することが可能になる。
図14は、図13に示す半導体集積回路のサブDMACにおけるリソース競合がない時の処理の一例を示すフローチャートである。
図14に示されるように、サブDMAC4におけるリソース競合がない場合、サブDMAC4は、アイドル状態(ST11)から、転送要求の判断を行う(ST12)。そして、転送要求がないと判断する(ST12:A)と、アイドル状態(ST11)に戻り、転送要求があると判断する(ST12:B)と、転送準備を行う(ST13)。ここで、ステップST13の転送準備の処理としては、例えば、前述したディスクリプタ12aの取得や転送データサイズの計算といったものがある。
転送準備が整うと、データ転送(DMA転送)を行い(ST14)、残り転送データサイズが0になるまでデータ転送を続ける(ST15:NoおよびST14)。そして、残り転送データサイズが0になる(ST15:Yes)と、データ転送を終了してアイドル状態(ST11)に戻る。
ここで、図14に示すサブDMAC4の処理は、ST11〜ST15の処理を実行させる専用コードを作成して命令RAM41にロードすることによって実行される。次に、サブDMACにおけるリソース競合時の処理を説明する。
図15は、図13に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。
図15に示されるように、サブDMAC4におけるリソース競合がある場合、サブDMAC4は、アイドル状態(ST21)から、転送要求の判断を行う(ST22)。そして、転送要求がないと判断する(ST22:A)と、アイドル状態(ST21)に戻り、転送要求があると判断する(ST22:B)と、メインDMAC13のTCフィールドを読み出す(ST23)。
さらに、メインDMAC13の処理状況を判断し(ST24)、メインDMAC13が転送処理を実行中であると判断する(ST24:A)と、サブDMAC4による転送を行わずに、メインDMAC13のTCフィールドを読み出す(ST23)。ここで、メインDMAC13によるDMA転送が行われているか否かは、メインDMAC13のTCフィールドにより確認することができる。
メインDMAC13が転送処理を完了してアイドル状態にあると判断する(ST24:B)と、サブDMAC4の転送準備を行う(ST25)。さらに、転送準備が整うと、サブDMAC4によるデータ転送を行い(ST26)、残りの転送データのサイズが0になるまでデータ転送を続ける(ST27:No、ST26)。そして、残りの転送データのサイズが0になる(ST27:Yes)と、データ転送を終了してアイドル状態(ST21)に戻る。
ここで図15における処理ST21,ST22およびST25〜ST27は、図14における処理ST11,ST12およびST13〜ST15に対応する。すなわち、図15では、メインDMAC13による転送処理とサブDMAC5による転送処理が競合する場合、メインDMAC13のTCフィールドを読み出し(ST23)、メインDMAC13の転送処理の状況を判断して(ST24)行う。
すなわち、本実施例では、メインDMAC13のステイタスを確認するための専用コード追加し、TCフィールドを読み出してメインDMAC13のDMA転送が完了するまで、サブDMAC4によるDMA転送を行わないようにする。これにより、サブDMAC4の動作タイミングを調整することが可能になる。
図16は、第1実施例の半導体集積回路の変形例におけるデータ転送方式の一例を説明するためのブロック図であり、サブDMAC4a,4bおよび機能マクロ5a,5bが設けられた機能ブロックが2つ(14a,14b)設けられているものを示す。
すなわち、図16と前述した図13との比較から明らかなように、図16に示す第1実施例の変形例では、第1機能ブロック14aおよび第2機能ブロック14bの2つの機能ブロックが設けられている。第1機能ブロック14aには、第1サブDMAC4aが設けられ、第2機能ブロック14bには、第2サブDMAC4bが設けられている。
ここで、第1機能ブロック14aは、例えば、図7におけるネットワークブロック14であり、また、第2機能ブロック14bは、例えば、図7におけるメモリブロック(メモリI/F)15である。なお、サブDMACおよび機能マクロを含む機能ブロックは、3つ以上であってもよいのはもちろんである。なお、図16において、他の機能マクロは、他のスレーブ回路15’に含まれる。
図16において、参照符号P51は、サブDMAC4aによるDMA転送処理を示し、P52は、サブDMAC4bによるDMA転送処理を示し、また、P53およびP54は、メインDMAC13によるDMA転送処理を示す。
図17は、図16に示す半導体集積回路の第1サブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。
図17と前述した図15の比較から明らかなように、第1サブDMAC4aにおけるリソース競合がある場合の処理は、図15と同様である。すなわち、図17における処理ST31〜ST37は、図15における処理ST21〜ST27に対応し、その説明は省略する。
図18は、図16に示す半導体集積回路の第2サブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。
図18に示されるように、第2サブDMACにおけるリソース競合がある場合、第1サブDMAC4aは、アイドル状態(ST41)から、転送要求の判断を行う(ST42)。そして、転送要求がないと判断する(ST42:A)と、アイドル状態(ST41)に戻り、転送要求があると判断する(ST42:B)と、第1サブDMAC4aのTCフィールドを読み出す(ST43)。
さらに、第1サブDMAC4aの処理状況を判断し(ST44)、第1サブDMAC4aが転送処理を実行中であると判断する(ST44:A)と、第2サブDMAC4bによる転送を行わずに、第1サブDMAC4aのTCフィールドを読み出す(ST43)。ここで、第1サブDMAC4aによるDMA転送が行われているか否かは、第1サブDMAC4aのTCフィールドにより確認することができる。
なお、処理ST43およびST44において、第2サブDMAC4bでは、メインDMA13の処理状況を確認する前に、第2サブDMAC4bの処理状況を確認するコード(制御コード:コマンド)が追加される。
次に、第1サブDMAC4aが転送処理を完了したと判断する(ST44:B)と、メインDMAC13のTCフィールドを読み出し(ST45)、メインDMAC13の転送処理の状況を判断する(ST46)。
メインDMAC13が転送処理を完了してアイドル状態にあると判断する(ST46:B)と、第2サブDMAC4bの転送準備を行う(ST47)。さらに、転送準備が整うと、第2サブDMAC4bによるデータ転送を行い(ST48)、残りの転送データのサイズが0になるまでデータ転送を続ける(ST49:No、ST48)。そして、残りの転送データのサイズが0になる(ST49:Yes)と、データ転送を終了してアイドル状態(ST41)に戻る。
上述したように、本第1実施例の半導体集積回路によれば、ハードウェアを簡略化することができ、ハードウェアの開発期間を短縮することができる。また、サブDMAC4内部の命令RAM41にロードする専用コードを変更することで、様々なQoS制御方式の柔軟な変更が可能になる。
図19は、バスの使用率とサブDMACによるDMA転送の関係を説明するためのタイミング図であり、上半分は、バス使用率が低い場合(A)を示し、下半分は、バス使用率が高い場合(B)を示す。
図19の上半分に示されるように、バス使用率が低い場合(A)、タイミングTs において、コマンド CMD READ に従ってサブDMAC4によるDMAの読み出し(リード)要求が行われる。
これにより、システムバス10のアドレスは、例えば、タイミングT0 からサブDMAC4によるリードアドレスになり、その後、システムバス10のデータは、サブDMAC4によるリードアドレスに対応したDMAのリードデータになる。そして、このサブDMAC4によるDMAのリードデータは、タイミングTendAで完了する。
これに対して、図19の下半分に示されるように、バス使用率が高い場合(B)、タイミングTs において、コマンド CMD READ に従ってサブDMAC4によるDMAのリード要求が行われるが、システムバス10が混んでいるため期間Td だけ遅延する。
これは、サブDMAC4によるDMA転送よりも優先度の高い、例えば、メインDMAC13によるDMA転送が続いている場合、その処理が終了してシステムバス10が開放されるまで、サブDMAC4によるDMA転送を待つことに起因する。
システムバス10のアドレスは、例えば、メインDMAC13によるDMA転送が終了したタイミングT1 からサブDMAC4によるリードアドレスになる。その後、システムバス10のデータは、サブDMAC4によるリードアドレスに対応したDMAのリードデータになり、タイミングTendBで完了する。
このように、バス使用率が低い場合(A)、サブDMAC4によるDMA転送(読み出しデータ転送)は、DMAのリード要求(コマンド CMD READ)が行われるタイミングTs からDMA転送が完了するタイミングTendAまでの通常のアクセス時間(Tnom)になる。
一方、バス使用率が高い場合(B)、サブDMAC4によるDMA転送は、DMAのリード要求(コマンド CMD READ)が行われるタイミングTs からDMA転送が完了するタイミングTendBまでの混んでいる場合のアクセス時間(Tbusy)になる。
本第2実施例の半導体集積回路におけるデータ転送方式は、上述したサブDMAC4が接続されるシステムバス10の負荷によりアクセス時間がTnomとTbusyのように異なることを利用するものである。
本第2実施例の半導体集積回路におけるデータ転送方式は、上記アクセス時間を、例えば、サブDMACに内蔵されたタイマーを使用して間接的に確認することで、リソースの競合を回避する。
すなわち、システムバス上の負荷を確認するために、システムバス側へのアクセスを実施し、1回のアクセスにかかる時間が、想定しているサイクルを超えた場合には、サブDMACによるデータ転送を行わないようにする。
図20は、第2実施例の半導体集積回路の一例を示すブロック図であり、図21は、図20に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の一例を示すフローチャートである。
図20に示されるように本第2実施例において、サブDMAC4は、機能マクロ5に接続され、DMACコア40、DMACチャネルレジスタ43、データバッファ44および内蔵タイマー46を含む。なお。図20において、図8のシステムバスインターフェース45は省略されている。
すなわち、本第2実施例のサブDMAC4(DMACコア40)は、タイマー46を含み、このタイマー46を使用して、サブDMAC4におけるリソース競合時の処理を行うようになっている。
ここで、図20における参照符号ST51〜ST61は、図21のフローチャートにおける処理ST51〜ST61に対応し、プログラマブルコア42により実行される。すなわち、プログラマブルコア42は、処理ST51を命令RAM41のアイドルとして実行し、処理ST59〜ST61を命令RAM41のダミーウェイトループとして実行する。
また、プログラマブルコア42は、処理ST52をDMACチャネルレジスタ43から命令RAM41へのデータ読み込みとして実行し、処理ST53を内蔵タイマー46へのアクセスとして実行し、処理ST55を内蔵タイマー46からの応答として実行する。
さらに、プログラマブルコア42は、処理ST54およびST56をシステムメモリ12のディスクリプタデータ12aからのデータ読み出しとして実行する。そして、プログラマブルコア42は、処理ST57およびST58を転送データ12b,12cと内蔵データバッファ44の間のDMAデータ転送として実行する。
すなわち、図20および図21に示されるように、サブDMAC4におけるリソース競合がある場合、サブDMAC4は、アイドル状態(ST51)から、転送要求の判断を行う(ST52)。
ここで、転送要求の処理は、例えば、DMACチャネルレジスタ43におけるチャネルnの転送要求レジスタからのデータを命令RAM41に読み込んでプログラマブルコア42が転送要求の有無の判断を行う。そして、転送要求がないと判断する(ST52:A)と、アイドル状態(ST51)に戻り、転送要求があると判断する(ST52:B)と、内蔵タイマーのクリアを行う(ST53)。
すなわち、サブDMAC4が実行する命令(制御コード) を使用することで現在のタイマー値をクリアして、タイマーを再スタートする。具体的に、サブDMAC4のデータ転送に使用しないチャネルモジュールに搭載されたタイマーに対して、通常のアクセスサイクルを閾値として書き込む(ライトする)ことにより実現する。このように、タイマー(46)は、サブDMAC4に内蔵したものを使用してもよいが、他のタイマーを流用することもできる。
さらに、サブDMAC4により、バス使用率の確認を行う(ST54)。すなわち、システムメモリ12のディスクリプタ12aを1ワード読み出し、タイマーのステイタスを確認する(ST55)。
すなわち、処理ST55では、処理ST53による読み出しを開始する直前にタイマーをクリアしてから、による読み出し完了後のタイマーのステイタスを確認することで、読み出しに要した時間と想定しているアクセス時間との比較判定を行う。
タイマーのステイタスがTnomを超えていないと判断すると(ST55:B)、すなわち、バス使用率が低い、例えば、メインDMAC13によるリソース競合がないと判断すると、サブDMAC4の転送準備を行う(ST56)。このサブDMAC4によるDMAデータ転送の準備としては、例えば、ディスクリプタ12aを取得して転送データサイズの計算を行うことが含まれる。
さらに、転送準備が整うと、サブDMAC4によるデータ転送を行い(ST57)、残りの転送データのサイズが0になるまでデータ転送を続ける(ST58:No、ST57)。そして、残りの転送データのサイズが0になる(ST58:Yes)と、データ転送を終了してアイドル状態(ST51)に戻る。
一方、タイマーのステイタスがTnomを超えたと判断すると(ST55:A)、すなわち、バス使用率が高い、例えば、メインDMAC13によるリソース競合があると判断すると、内部レジスタにウェイト時間(Tw)を設定(ST61)する。
さらに、ウェイト時間を1減らし(ST60、Tw=Tw−1)、ウェイト時間が0になるまでウェイト時間を1減らす(ST59:No、ST60)。そして、ウェイト時間が0になる(ST59:Yes)と、内蔵タイマーをクリアして同様の処理(ST53〜ST58)を繰り返す。すなわち、ウェイト時間が0になる(ST59:Yes)と判断した後、再度、バス使用率の確認を行って(ST54)、処理を実行する。
このように、例えば、サブDMAC4が実行する制御コード(命令)により図20のフローチャートを実行可能とすることで、ハードウェアの変更を行うことなく、システムバス10のリソースの状況を確認してデータ転送を行うかどうかを判断することができる。
図22は、図20に示す半導体集積回路のサブDMACにおけるリソース競合時の処理の他の例を示すフローチャートである。
図22と上述した図21の比較から明らかなように、図22における処理ST71〜ST78は、図21における処理ST51〜ST58に対応するので、その説明は省略する。
すなわち、タイマーのステイタスがTnomを超えたと判断すると(ST75:A)、すなわち、バス使用率が高い、例えば、メインDMAC13によるリソース競合があると判断すると、内部レジスタにウェイト時間(Tw)を設定(ST81)する。
さらに、ウェイト時間を1減らし(ST80、Tw=Tw−1)、ウェイト時間が0になるまでウェイト時間を1減らす(ST79:No、ST80)。そして、ウェイト時間が0になる(ST79:Yes)と、バス使用率が低くなった、例えば、メインDMAC13によるリソース競合が終了したとみなして、サブDMAC4の転送準備を行う(ST76)。
このサブDMAC4によるDMAデータ転送の準備としては、例えば、ディスクリプタ12aを取得して転送データサイズの計算を行うことが含まれる。さらに、転送準備が整うと、サブDMAC4によるデータ転送を行い(ST77)、残りの転送データのサイズが0になるまでデータ転送を続ける(ST78:No、ST57)。そして、残りの転送データのサイズが0になる(ST78:Yes)と、データ転送を終了してアイドル状態(ST71)に戻る。
このように、図22に示すサブDMACにおけるリソース競合時の処理は、タイマーのステイタスがTnomを超えたと判断した場合(ST75:A)、バス使用率の確認を行う(ST74)処理を行うことなく、リソース競合が終了したと判断する。
従って、図21の例よりも高速な処理が可能となり得るが、例えば、タイマーによる設定値(推定値)が適したものでないと、サブDMAC4とメインDMAC13の処理が競合状態になる。この場合には、他の処理、例えば、メインCPU11による調停処理で解決することになる。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第1DMAコントローラと、
所定の機能を実現する機能マクロ,前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラ,および,前記メモリと前記機能マクロのDMA転送に関するアクセス条件を設定するアクセス条件設定部を含む、前記バスに接続された少なくとも1つの機能ブロックと、
を有する、ことを特徴とする半導体集積回路。
(付記2)
前記アクセス条件設定部は、
前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含む、
ことを特徴とする付記1に記載の半導体集積回路。
(付記3)
前記制御コード格納部は、
前記第2DMAコントローラに設けられた命令メモリであり、
前記命令メモリには、初期設定時に、前記命令単位で設定される前記アクセス条件を規定する制御コードが書き込まれる、
ことを特徴とする付記2に記載の半導体集積回路。
(付記4)
前記命令メモリには、電源投入時に、前記演算処理装置によって前記制御コードが書き込まれる、
ことを特徴とする付記3に記載の半導体集積回路。
(付記5)
前記第2DMAコントローラは、
前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記第1DMAコントローラのステイタス情報,前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第2DMAコントローラによるアクセスを制御する、
ことを特徴とする付記2乃至付記4のいずれか1項に記載の半導体集積回路。
(付記6)
前記第1DMAコントローラのステイタス情報は、前記メモリに格納され、
前記第2DMAコントローラは、前記メモリに格納された前記第1DMAコントローラのステイタス情報を使用して前記第2DMAコントローラによるアクセスを制御する、
ことを特徴とする付記5に記載の半導体集積回路。
(付記7)
前記第1DMAコントローラのステイタス情報は、
前記第1DMAコントローラによるDMA転送のデータサイズフィールドを含む、
ことを特徴とする付記5または付記6に記載の半導体集積回路。
(付記8)
さらに、時間を計測するタイマーを含み、
前記第2DMAコントローラは、
前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定し、前記第2DMAコントローラによるアクセスを制御する、
ことを特徴とする付記2乃至付記4のいずれか1項に記載の半導体集積回路。
(付記9)
前記第2DMAコントローラは、
前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定すると共に、前記バスの使用率をチェックして、前記第2DMAコントローラによるアクセスを制御する、
ことを特徴とする付記8に記載の半導体集積回路。
(付記10)
前記タイマーは、前記第2DMAコントローラに内蔵されている、
ことを特徴とする付記8または付記9に記載の半導体集積回路。
(付記11)
前記少なくとも1つの機能ブロックは、
それぞれが、付記1〜10のいずれか1項に記載の第2DMAコントローラを有する第1機能ブロックおよび第2機能ブロックを含む、
ことを特徴とする半導体集積回路。
(付記12)
前記第1機能ブロックの第2DMAコントローラは、
前記メモリに対するアクセスが前記第2機能ブロックの第2DMAコントローラによるアクセスと競合するとき、前記第2機能ブロックの第2DMAコントローラの処理状況を確認して、前記第2機能ブロックの第2DMAコントローラによるアクセスを制御する、
ことを特徴とする付記11に記載の半導体集積回路。
(付記13)
前記少なくとも1つの機能ブロックは、
付記1〜10のいずれか1項に記載の第2DMAコントローラを有する第3機能ブロック、および、前記第2DMAコントローラを持たない第4機能ブロックを含む、
ことを特徴とする半導体集積回路。
(付記14)
前記半導体集積回路を製品に適用した後、前記アクセス条件設定部に格納するデータを書き替えて、前記メモリと前記機能マクロのDMA転送に関するアクセス条件を変更する、
ことを特徴とする付記1乃至付記13のいずれか1項に記載の半導体集積回路。
(付記15)
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第1DMAコントローラと、
所定の機能を実現する機能マクロ、および、前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラを含む、前記バスに接続された少なくとも1つの機能ブロックと、
を有する半導体集積回路のDMA制御方法であって、
前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、
前記第1DMAコントローラのステイタス情報により前記第1DMAコントローラによるDMA転送の状態を確認し、或いは、
時間を計測するタイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定し、
前記第2DMAコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路のDMA制御方法。
1,101 画像処理装置(半導体集積回路:SoC)
2,102 撮像部
4 サブDMAC(プログラマブルDMAC:第2DMAコントローラ)
5 機能マクロ(イーサネット(登録商標)I/F)
10,110 システムバス(バス)
11,111 CPU(メインCPU、演算処理装置)
12,112 内部メモリ(システムメモリ、メモリ)
13,113 メインDMAC(第1DMAコントローラ)
14 機能ブロック
15,115 メモリインターフェース(I/F)
15’,160 他のスレーブ回路
16,116 表示用I/F
17,117 メディア用I/F
18,118 プリプロセス処理部
19,119 画像処理部
21,121 撮影レンズ
22,122 撮像素子
23,123 A/D変換回路
31,131 外部メモリ
32,132 表示部
33,133 記録メディア
40 DMACコア
41 命令RAM(命令メモリ、制御コード格納部)
42 プログラマブルコア
43 DMACチャネルレジスタ(レジスタ)
44 データバッファ
45 システムバスインターフェース

Claims (10)

  1. バスと、
    前記バスに接続されたメモリと、
    前記バスに接続された演算処理装置と、
    前記バスに接続された第1DMAコントローラと、
    所定の機能を実現する機能マクロ,前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラ,および,前記メモリと前記機能マクロのDMA転送に関するアクセス条件を設定するアクセス条件設定部を含む、前記バスに接続された少なくとも1つの機能ブロックと、
    を有する、ことを特徴とする半導体集積回路。
  2. 前記アクセス条件設定部は、
    前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含む、
    ことを特徴とする請求項1に記載の半導体集積回路。
  3. 前記第2DMAコントローラは、
    前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記第1DMAコントローラのステイタス情報,前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする請求項2に記載の半導体集積回路。
  4. 前記第1DMAコントローラのステイタス情報は、前記メモリに格納され、
    前記第2DMAコントローラは、前記メモリに格納された前記第1DMAコントローラのステイタス情報を使用して前記第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする請求項3に記載の半導体集積回路。
  5. さらに、時間を計測するタイマーを含み、
    前記第2DMAコントローラは、
    前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定し、前記第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする請求項2に記載の半導体集積回路。
  6. 前記第2DMAコントローラは、
    前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定すると共に、前記バスの使用率をチェックして、前記第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする請求項5に記載の半導体集積回路。
  7. 前記少なくとも1つの機能ブロックは、
    それぞれが、請求項1〜6のいずれか1項に記載の第2DMAコントローラを有する第1機能ブロックおよび第2機能ブロックを含む、
    ことを特徴とする半導体集積回路。
  8. 前記第1機能ブロックの第2DMAコントローラは、
    前記メモリに対するアクセスが前記第2機能ブロックの第2DMAコントローラによるアクセスと競合するとき、前記第2機能ブロックの第2DMAコントローラの処理状況を確認して、前記第2機能ブロックの第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする請求項7に記載の半導体集積回路。
  9. 前記半導体集積回路を製品に適用した後、前記アクセス条件設定部に格納するデータを書き替えて、前記メモリと前記機能マクロのDMA転送に関するアクセス条件を変更する、
    ことを特徴とする請求項1乃至請求項8のいずれか1項に記載の半導体集積回路。
  10. バスと、
    前記バスに接続されたメモリと、
    前記バスに接続された演算処理装置と、
    前記バスに接続された第1DMAコントローラと、
    所定の機能を実現する機能マクロ、および、前記メモリと前記機能マクロ間のデータ転送を制御する第2DMAコントローラを含む、前記バスに接続された少なくとも1つの機能ブロックと、
    を有する半導体集積回路のDMA制御方法であって、
    前記メモリに対するアクセスが前記第1DMAコントローラによるアクセスと競合するとき、
    前記第1DMAコントローラのステイタス情報により前記第1DMAコントローラによるDMA転送の状態を確認し、或いは、
    時間を計測するタイマーを使用して前記第1DMAコントローラによるDMA転送の状態を推定し、
    前記第2DMAコントローラによるアクセスを制御する、
    ことを特徴とする半導体集積回路のDMA制御方法。
JP2012071729A 2012-03-27 2012-03-27 半導体集積回路およびそのdma制御方法 Active JP5888050B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012071729A JP5888050B2 (ja) 2012-03-27 2012-03-27 半導体集積回路およびそのdma制御方法
US13/770,645 US9323700B2 (en) 2012-03-27 2013-02-19 Semiconductor integrated circuit and DMA control method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012071729A JP5888050B2 (ja) 2012-03-27 2012-03-27 半導体集積回路およびそのdma制御方法

Publications (3)

Publication Number Publication Date
JP2013205928A true JP2013205928A (ja) 2013-10-07
JP2013205928A5 JP2013205928A5 (ja) 2015-01-22
JP5888050B2 JP5888050B2 (ja) 2016-03-16

Family

ID=49236620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012071729A Active JP5888050B2 (ja) 2012-03-27 2012-03-27 半導体集積回路およびそのdma制御方法

Country Status (2)

Country Link
US (1) US9323700B2 (ja)
JP (1) JP5888050B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159437A (ja) * 2018-03-08 2019-09-19 富士通株式会社 情報処理装置、転送制御方法および転送制御プログラム
JP2022547730A (ja) * 2019-09-17 2022-11-15 マイクロン テクノロジー,インク. データ移動のためのプログラム可能なエンジン
JP7492511B2 (ja) 2018-11-09 2024-05-29 ザイリンクス インコーポレイテッド ストリーミングプラットフォームフローおよびアーキテクチャ

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3026869B1 (fr) * 2014-10-07 2016-10-28 Sagem Defense Securite Systeme embarque sur puce a haute surete de fonctionnement
KR20200065762A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 메모리 시스템
KR20200059493A (ko) 2018-11-21 2020-05-29 에스케이하이닉스 주식회사 데이터 처리 시스템
US10761999B1 (en) * 2019-05-30 2020-09-01 Western Digital Technologies, Inc. Storage device with predictor engine of host turnaround time
US11604748B2 (en) * 2020-10-30 2023-03-14 Microsoft Technology Licensing, Llc Interconnect for direct memory access controllers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308287A (ja) * 2002-04-12 2003-10-31 Seiko Epson Corp 制御装置および制御方法
JP2005107820A (ja) * 2003-09-30 2005-04-21 Kyocera Mita Corp データ転送装置
JP2005293435A (ja) * 2004-04-05 2005-10-20 Konica Minolta Business Technologies Inc データ転送装置およびその設定方法
JP2006126938A (ja) * 2004-10-26 2006-05-18 Canon Inc データ転送システム及びそのデータ転送方法
JP2009025896A (ja) * 2007-07-17 2009-02-05 Ricoh Co Ltd データ処理装置及びデータ処理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212795A (en) * 1988-10-11 1993-05-18 California Institute Of Technology Programmable DMA controller
JP3481087B2 (ja) 1997-07-22 2003-12-22 沖電気工業株式会社 音声通信ゆらぎ吸収方法
JPH1141297A (ja) 1997-07-23 1999-02-12 Sony Corp プログラマブルシーケンサーを使用したdmaコントローラ
US6412027B1 (en) * 1998-02-11 2002-06-25 Globespanvirata, Inc. Direct memory access controller having on-board arbitration circuitry
JP2003281078A (ja) * 2002-03-22 2003-10-03 Ricoh Co Ltd Dmaコントローラ
JP2005011287A (ja) 2003-06-23 2005-01-13 Konica Minolta Holdings Inc コンピュータシステム及びデータ転送方法
TW200612251A (en) * 2004-10-12 2006-04-16 Uli Electronics Inc Method used to access data between devices
JPWO2008026273A1 (ja) 2006-08-31 2010-01-14 富士通株式会社 Dmaコントローラ
JP2010282352A (ja) * 2009-06-03 2010-12-16 Renesas Electronics Corp Dma転送制御装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308287A (ja) * 2002-04-12 2003-10-31 Seiko Epson Corp 制御装置および制御方法
JP2005107820A (ja) * 2003-09-30 2005-04-21 Kyocera Mita Corp データ転送装置
JP2005293435A (ja) * 2004-04-05 2005-10-20 Konica Minolta Business Technologies Inc データ転送装置およびその設定方法
JP2006126938A (ja) * 2004-10-26 2006-05-18 Canon Inc データ転送システム及びそのデータ転送方法
JP2009025896A (ja) * 2007-07-17 2009-02-05 Ricoh Co Ltd データ処理装置及びデータ処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159437A (ja) * 2018-03-08 2019-09-19 富士通株式会社 情報処理装置、転送制御方法および転送制御プログラム
JP7492511B2 (ja) 2018-11-09 2024-05-29 ザイリンクス インコーポレイテッド ストリーミングプラットフォームフローおよびアーキテクチャ
JP2022547730A (ja) * 2019-09-17 2022-11-15 マイクロン テクノロジー,インク. データ移動のためのプログラム可能なエンジン

Also Published As

Publication number Publication date
US20130262732A1 (en) 2013-10-03
JP5888050B2 (ja) 2016-03-16
US9323700B2 (en) 2016-04-26

Similar Documents

Publication Publication Date Title
JP5888050B2 (ja) 半導体集積回路およびそのdma制御方法
CN104520932B (zh) 闪存存储器控制器
EP1286248B1 (en) Semiconductor device with hardware mechanism for proper clock control
KR100733943B1 (ko) 프로세서 시스템, dma 제어 회로, dma 제어 방법,dma 제어기의 제어 방법, 화상 처리 방법, 및 화상처리 회로
US7263572B2 (en) Bus bridge and data transfer method
CN109901890A (zh) 一种控制器加载多核固件的方法、装置、计算机设备及存储介质
KR20090007412A (ko) 저장 용량이 큰 멀티 미디어 카드
US9015272B2 (en) Microcomputer
US20200264924A1 (en) Electronic device and control method thereof
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
JP5456434B2 (ja) パイプ調停回路、パイプ調停方法
JP2003150395A (ja) プロセッサとそのプログラム転送方法
JP2010003151A (ja) データ処理装置
US20130111181A1 (en) Methods and apparatus for increasing device access performance in data processing systems
KR101574406B1 (ko) 묘화 제어 장치
RU2579949C2 (ru) Компьютерная система
US20070234098A1 (en) Self-timed clock-controlled wait states
EP3460671B1 (en) Semiconductor device and program used in the semiconductor device
JPH1185673A (ja) 共有バスの制御方法とその装置
JP2005276104A (ja) マイクロコンピュータ
JP2002278753A (ja) データ処理システム
JP2020035263A (ja) メモリコントローラ
JP2008129672A (ja) プロセッサ
JP2016206863A (ja) 制御装置
JP2009289269A6 (ja) バッファメモリにおけるメモリの割り当て方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141202

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160201

R150 Certificate of patent or registration of utility model

Ref document number: 5888050

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150