JP2008009817A - 半導体装置及びデータ転送方法 - Google Patents

半導体装置及びデータ転送方法 Download PDF

Info

Publication number
JP2008009817A
JP2008009817A JP2006180952A JP2006180952A JP2008009817A JP 2008009817 A JP2008009817 A JP 2008009817A JP 2006180952 A JP2006180952 A JP 2006180952A JP 2006180952 A JP2006180952 A JP 2006180952A JP 2008009817 A JP2008009817 A JP 2008009817A
Authority
JP
Japan
Prior art keywords
input
transfer
controller
control unit
data
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.)
Pending
Application number
JP2006180952A
Other languages
English (en)
Inventor
Kohei Mutaguchi
浩平 牟田口
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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2006180952A priority Critical patent/JP2008009817A/ja
Priority to US11/706,983 priority patent/US7725621B2/en
Publication of JP2008009817A publication Critical patent/JP2008009817A/ja
Pending legal-status Critical Current

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

Abstract

【課題】効率のよいDMA転送処理が可能な半導体装置を提供する。
【解決手段】転送中のデータを一時記憶するセクタバッファ104の入出力ポートP1をシステムバス108とのDMA転送に用い、入出力ポートP2をI/Oコントローラ107とのデータ転送に用い、切替部105はシステムバス108とI/Oコントローラ107を接続するか、セクタバッファ104とI/Oコントローラ107またはシステムバス108を接続するかを切り替え、セクタバッファコントローラ106は入出力ポートP1、P2によるデータ転送を別々に起動し、セクタバッファ104とI/Oコントローラ107間での転送単位分のデータの転送の終了を検出すると、セクタバッファ104とI/Oコントローラ107とのデータ転送を遮断しシステムバス108とI/Oコントローラ107とを接続するための制御信号を切替部105に送出する。
【選択図】図1

Description

本発明は半導体装置及びデータ転送方法に関し、特に、DMA転送を行う半導体装置及びデータ転送方法に関する。
デジタルカメラや携帯電話などの情報端末において、データの記録媒体として、フラッシュメモリなどの不揮発性メモリを内蔵するメモリカードが使われている。
メモリカードは、情報端末に搭載されるシステムLSI(Large Scale Integrated circuit)に組み込まれているカードコントローラにより制御される。
メモリカードにデータを転送する場合、システムLSI内のCPU(Central Processing Unit)が、カードコントローラを介してI/O(Input/Output)デバイスとしてカードにアクセスする方法(PIO:Program I/O transfer)がある。PIOでデータ転送を行う場合、データ転送を行っている間、CPUが占有されるため、大きなデータを転送する場合にはシステムの処理能力が低下してしまう。
一方、CPUを使わずにI/Oデバイスとメモリの間で直接データ転送を行う、DMA(Direct Memory Access)転送が知られている。DMA転送を用いることで、CPUの処理を妨げることなく、大きなデータを転送することができる。
ところで、一般的に、DMA転送を行うためには、I/OデバイスがDMAインターフェースを備えている必要がある。DMAインターフェースは、DMAコントローラとの間で送受信されるDMA転送要求信号や、DMA転送許可信号などの信号を解釈するのに必要となるからである。これに対して、DMAインターフェースなしでもDMA転送が可能なDMA転送方法が、例えば、特許文献1に開示されている。
図12は、DMAインターフェースを持たないI/Oデバイスとの間でDMA転送を行う従来の半導体装置の構成を示す図である。
半導体装置500は、CPU501、メモリ502、DMAコントローラ503、切替部504、リクエスト生成部505を有し、これらはシステムバス506に接続されている。図12では、I/Oデバイスとして、メモリカード507aを用いた場合について示しており、半導体装置500は、カードコントローラ507を内蔵している。カードコントローラ507は、切替部504を介してシステムバス506に接続されている。CPU501及びDMAコントローラ503は、システムバス506のマスタであり、カードコントローラ507はスレーブである。
ここで、切替部504は、CPU501とカードコントローラ507を接続するか、DMAコントローラ503とカードコントローラ507を接続するかを切り替える。具体的には、CPU501がマスタの場合、CPU501とカードコントローラ507とを接続し、アドレス信号や、チップセレクト信号などの制御信号、あるいはデータがカードコントローラ507に伝わるようにする。
一方、DMAコントローラ503がマスタの場合、切替部504は、CPU501からの制御信号などを遮断し、DMAコントローラ503から入力されるDMA転送許可信号から新たに生成したチップセレクト信号、固定のアドレス信号(I/Oポートアドレス)及びシステムバス506に接続したメモリ502のデータをカードコントローラ507に伝える。
リクエスト生成部505は、間隔設定部508に設定された一定の間隔で、DMA転送要求信号を、DMAコントローラ503に送出する。
図13は、従来の半導体装置のデータ転送時の信号の様子を示すタイミングチャートである。
システムバス506を伝わるバスクロック、CPU501が出力するチップセレクト信号/CSa、DMAコントローラ503が切替部504に対して発行するDMA転送許可信号、リクエスト生成部505がDMAコントローラ503に伝えるDMA転送レディ信号及びDMA転送要求信号、カードコントローラ507に入力されるチップセレクト信号/CSb、システムバス506のデータの様子を示している。
なお、図13の例では、カードコントローラ507のアクセスサイクルが3クロックサイクルである場合を示している。
PIO転送中は、CPU501が発行するチップセレクト信号/CSaがカードコントローラ507のチップセレクト信号/CSbとして使用される。すなわち、切替部504は、CPU501からの制御信号をカードコントローラ507に伝える。これにより、CPU501の制御のもと、データ(図13のvalid)がメモリ502とカードコントローラ507との間でPIO転送される。
続いて、リクエスト生成部505によって生成されるDMA転送要求信号が、アサート(図13では“H(High)”)になると、DMAコントローラ503によって生成されるDMA転送許可信号がアサートして、転送が許可されるまでアイドルサイクルとなる。
DMA転送中、切替部504は、DMAコントローラ503が発行するDMA転送許可信号をもとにカードコントローラ507のチップセレクト信号/CSbを生成する。すなわち、切替部504は、DMAコントローラ503からの制御信号をカードコントローラ507に伝える。これにより、DMAコントローラ503の制御のもと、データがメモリ502とカードコントローラ507との間でDMA転送される。
ところで、DMA転送においても、カードコントローラ507のアクセスサイクルが、PIO転送のアクセスサイクルと同じになるように、カードコントローラ507に入力されるチップセレクト信号/CSbを生成する必要がある。DMA転送許可信号のみをもとに、チップセレクト信号/CSbを生成する場合には、DMAコントローラ503から発行されるDMA転送許可信号を、カードコントローラ507のアクセスサイクルの期間(ここでは3クロックサイクル)アクティブとする必要がある。例えば、リクエスト生成部505は、DMA転送レディ信号を“L(Low)”にして転送レディ状態であることをDMAコントローラ503に伝えることで、DMA転送許可信号を必要なサイクルだけアクティブとすることができる。また、DMA転送レディ信号が使えない場合には、切替部504は、DMA転送許可信号の立ち上がりに応じて、カードコントローラ507に入力するチップセレクト信号/CSbを“L”にしてアサートし始め、アクセスサイクル分アクティブにしてから“H”にしてネゲートする。
リクエスト生成部505からDMAコントローラ503に対して発行されるDMA転送要求信号は、DMA転送許可信号の立ち上がりを検出してネゲートにする。DMA転送要求信号をネゲートしてから、次にアサートするまでのサイクル数は間隔設定部508にて設定することができる。図13では、アクセスサイクルと等しい3クロックサイクルを設定した場合について示している。
図14は、従来の半導体装置によるメモリカードへのDMA転送時の動作を示すフローチャートである。
まず、CPU501から、切替部504を介して、カードコントローラ507に対して転送モードの設定や転送コマンドの発行を行う(ステップS50)。
次に、DMAコントローラ503を起動し、DMA転送を開始する(ステップS51)。DMA転送が開始されると、リクエスト生成部505は、間隔設定部508に設定された値をもとに、一定間隔でDMAコントローラ503に対して転送要求を発行し続ける。
データ転送の際には、一般に、データが正常に転送されたかどうかを一定のデータ量を転送するごとにチェックする必要がある(以下これをステータスチェックという。)。転送単位分の転送が完了したか否かが判定され(ステップS52)、転送単位分の転送が完了した場合には、このステータスチェックが行われる(ステップS53)。ステータスチェックは、CPU501からカードコントローラ507あるいはメモリカード507aにアクセスしてステータスをリードすることで行われる。
ステータスチェックが行われた後、データの転送が完了したか否かが判定され(ステップS54)、転送したいデータがまだ残っている場合には、ステップS51の処理に戻り、再びDMAコントローラ503を起動して転送を再開し、全てのデータを転送し終わるまで、ステップS51〜S54の処理を繰り返す。
このような従来の半導体装置500によれば、DMAインターフェースを持たないI//OデバイスでもDMA転送を行うことが可能となる。
特開平8−194660号公報
しかし、図12で示したような従来の半導体装置500では、リクエスト生成部505がDMA転送要求を発行している間、切替部504は、DMAコントローラ503からの制御信号をカードコントローラ507に対して伝えているため、CPU501からカードコントローラ507あるいはメモリカード507aに対してアクセスすることができない。CPU501からアクセスするためにはDMA転送を終了させる必要がある。そのため、従来の半導体装置500では、図14のように、ステータスチェックごとに、DMAコントローラ503を再起動しなければならず、オーバーヘッドが大きな処理となってしまう問題があった。
本発明はこのような点に鑑みてなされたものであり、効率のよい転送処理が可能な半導体装置を提供することを目的とする。
本発明の他の目的は、効率のよい転送処理が可能なデータ転送方法を提供することである。
本発明では上記問題を解決するために、DMA転送処理を行う半導体装置において、図1に示すように、入出力装置(I/Oデバイス107a)とのデータ転送を制御する入出力制御部(I/Oコントローラ107)と、転送中のデータを一時記憶し、入出力ポートP1をシステムバス108とのDMA転送に用い、入出力ポートP2をI/Oコントローラ107とのデータ転送に用いる一時記憶部(図1ではセクタバッファ104としている。)と、システムバス108とI/Oコントローラ107を接続するか、一時記憶部とI/Oコントローラ107またはシステムバス108を接続するかを切り替える切替部105と、入出力ポートP1、P2によるデータ転送を別々に起動し、一時記憶部とI/Oコントローラ107間での転送単位分のデータの転送の終了を検出すると、一時記憶部とI/Oコントローラ107とのデータ転送を遮断しシステムバス108とI/Oコントローラ107とを接続するための制御信号を切替部105に送出する記憶制御部(図1ではセクタバッファコントローラ106としている。)と、を有することを特徴とする半導体装置が提供される。
上記の構成によれば、I/Oコントローラ107はI/Oデバイス107aとのデータ転送を制御し、一時記憶部は転送中のデータを一時記憶し、入出力ポートP1をシステムバス108とのDMA転送に用い、入出力ポートP2をI/Oコントローラ107とのデータ転送に用い、切替部105はシステムバス108とI/Oコントローラ107を接続するか、一時記憶部とI/Oコントローラ107またはシステムバス108を接続するかを切り替え、記憶制御部は入出力ポートP1、P2によるデータ転送を別々に起動し、一時記憶部とI/Oコントローラ107間での転送単位分のデータの転送の終了を検出すると、一時記憶部とI/Oコントローラ107とのデータ転送を遮断しシステムバス108とI/Oコントローラ107とを接続するための制御信号を切替部105に送出する。
また、DMA転送処理を行うデータ転送方法において、第1の入出力ポートをシステムバスとのDMA転送に用い、第2の入出力ポートを入出力装置とのデータ転送を制御する入出力制御部とのデータ転送に用いる一時記憶部の、前記第1及び前記第2の前記入出力ポートによるデータ転送を別々に起動し、切替部によって前記システムバスと前記入出力制御部を接続するか、前記一時記憶部と前記入出力制御部または前記システムバスを接続するかを切り替え、前記一時記憶部と前記入出力制御部間での転送単位分のデータの転送の終了を検出すると、前記切替部によって前記一時記憶部と前記入出力制御部とのデータ転送を遮断し、前記システムバスと前記入出力制御部とを接続することを特徴とするデータ転送方法が提供される。
上記の方法によれば、第1の入出力ポートをシステムバスとのDMA転送に用い、第2の入出力ポートを入出力装置とのデータ転送を制御する入出力制御部とのデータ転送に用いる一時記憶部の、第1及び第2の入出力ポートによるデータ転送が別々に起動され、切替部によってシステムバスと入出力制御部を接続するか、一時記憶部と入出力制御部またはシステムバスを接続するかが切り替えられ、一時記憶部と入出力制御部間での転送単位分のデータの転送の終了を検出すると、切替部によって一時記憶部と入出力制御部とのデータ転送が遮断され、システムバスと入出力制御部とが接続される。
本発明は、2つの入出力ポートを有する一時記憶部を用いて、第1の入出力ポートをシステムバスとのDMA転送に用い、第2の入出力ポートを入出力装置とのデータ転送を制御する入出力制御部とのデータ転送に用いる。そして、入出力ポートによるデータ転送を別々に起動し、切替部によってシステムバスと入出力制御部を接続するか、一時記憶部と入出力制御部またはシステムバスを接続するか切り替え、一時記憶部と入出力制御部間での転送単位分のデータの転送の終了を検出すると、切替部によって一時記憶部と入出力制御部とのデータ転送を遮断し、システムバスと入出力制御部とを接続するようにしたので、ステータスチェックの最中にも、第1の入出力ポートを用いたDMA転送を行うことができ、DMAコントローラをステータスチェックのたびに再起動する必要がなくなり、効率のよいデータ転送が可能になる。
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、第1の実施の形態の半導体装置の構成を示す図である。
第1の実施の形態の半導体装置100は、CPU101、メモリ102、DMAコントローラ103、セクタバッファ104、切替部105、セクタバッファコントローラ106、I/Oコントローラ107を有している。また、CPU101、メモリ102、DMAコントローラ103、切替部105、セクタバッファコントローラ106は、システムバス108と接続されている。なお、以下では、システムバス108は、アドレスを伝送するアドレスバス、データを伝送するデータバス、制御信号を伝送する制御線を含むものとする。CPU101及びDMAコントローラ103は、システムバス108のマスタであり、I/Oコントローラ107はスレーブである。
CPU101は、システムバス108を介して半導体装置100の各部を制御する。
メモリ102は、I/Oコントローラ107に接続されたI/Oデバイス107aにライトするデータや、I/Oデバイス107aからリードされたデータなどを記憶する。
DMAコントローラ103は、DMA転送を制御する。
セクタバッファ104は、転送中のデータを一時記憶する一時記憶部である。そして、システムバス108とのDMA転送に用いる入出力ポートP1と、I/Oコントローラ107とのデータ転送に用いる入出力ポートP2とを有している。図1では、この2つの入出力ポートP1、P2を切替部105に接続している。このようなセクタバッファ104は、デュアルポートRAM(Random Access Memory)を用いることで実現可能である。また、2つのシングルポートRAMを用いるようにしてもよい。
切替部105は、システムバス108とI/Oコントローラ107を接続するか、セクタバッファ104とI/Oコントローラ107またはシステムバス108を接続するかを切り替える。
セクタバッファコントローラ106は、セクタバッファ104の、2つの入出力ポートP1、P2によるデータ転送を別々に起動する。そして、セクタバッファ104とI/Oコントローラ107間での転送したデータの量に応じて、切替部105でパスの接続を切り替えるための制御信号(以下セクタバッファビジー信号という。)を出力する。その他、セクタバッファコントローラ106は、切替部105を介して、I/Oコントローラ107に対し、チップセレクト信号、リードストローブ信号、ライトストローブ信号、バイトイネーブル信号などの制御信号やアドレス信号を、I/Oコントローラ107のアクセスサイクルに合わせて送出する。
I/Oコントローラ107は、I/Oデバイス107aとのデータ転送を制御する。本実施の形態の半導体装置100において、I/Oコントローラ107は、DMAインターフェースを必要としていない。
なお、I/Oデバイス107aとしては、例えば、フラッシュメモリなどの不揮発性メモリを内蔵するメモリカードや、HDD(Hard Disk Drive)、またはプリンタなど、データ転送を必要とする様々な機器が挙げられる。I/Oコントローラ107は、カードコントローラやIDE(Integrated Drive Electronics)コントローラなどである。
図2は、第1の実施の形態の半導体装置における切替部の一例の回路構成図である。
切替部105は、アドレスデコーダ201、セレクタ202、203、204、AND回路205を有している。
アドレスデコーダ201は、システムバス108経由でアドレス信号を入力してアドレスデコード信号を生成する。
セレクタ202は、I/Oデバイス107aへのライトデータとして、システムバス108からのデータか、セクタバッファ104の入出力ポートP2からのデータを用いるかを、セクタバッファコントローラ106で生成される制御信号の1つであるセクタバッファビジー信号に応じて切り替える。
セレクタ203は、I/Oデバイス107aからのリードデータとして、I/Oコントローラ107からのデータか、セクタバッファ104の入出力ポートP1からのデータを用いるかを、セクタバッファビジー信号に応じて切り替える。
セレクタ204は、システムバス108からの制御信号か、セクタバッファコントローラ106で生成されたチップセレクト信号などの制御信号のいずれかを、セクタバッファビジー信号に応じて選択する。
AND回路205は、セレクタ204から出力された制御信号と、アドレスデコード信号とを入力する。I/Oコントローラ107を起動しない場合には、アドレスデコード信号は“0”となり、制御信号をマスクする。
図3は、第1の実施の形態の半導体装置におけるセクタバッファコントローラの一例の構成を示す図である。
セクタバッファコントローラ106は、システムバス108側とのDMA転送用の起動レジスタ131、I/Oコントローラ107側とのデータ転送用の起動レジスタ132、DMA転送要求信号生成部133、制御信号生成部134、転送単位設定レジスタ135、ステータスレジスタ136、バッファ制御部137を有する。
起動レジスタ131には、システムバス108とセクタバッファ104との間でDMA転送を起動する際に起動ビットがセットされる。起動ビットは、CPU101の制御のもと、システムバス108を介してセットされる。
起動レジスタ132には、I/Oコントローラ107とセクタバッファ104との間でデータ転送を起動する際に起動ビットがセットされる。起動ビットは、CPU101の制御のもと、システムバス108を介してセットされる。
DMA転送要求信号生成部133は、起動レジスタ131に起動ビットがセットされると、DMA転送要求信号を生成し、システムバス108を介してDMAコントローラ103に送出する。
制御信号生成部134は、起動レジスタ132に起動ビットがセットされると、I/Oコントローラ107に送出するチップセレクト信号、リードストローブ信号や、ライトストローブ信号、バイトイネーブル信号などの制御信号をI/Oコントローラ107のアクセスサイクルに合わせて生成し、切替部105に送出する。なお、転送するデータを記憶するI/Oデバイス107aのアドレスを指定するアドレス信号をアクセスサイクルに合わせて生成して、制御信号とともに切替部105に送出するようにしてもよい。以下では、このアドレス信号については説明を省略する。
転送単位設定レジスタ135には、CPU101がステータスチェックを行う転送単位が、システムバス108を介してCPU101により設定される。
ステータスレジスタ136は、転送単位分の転送が終了したか否かの状態を記憶する。
バッファ制御部137は、セクタバッファ104の転送を制御するとともに、起動レジスタ131、132に起動ビットがセットされると、セクタバッファ104の入出力ポートP1、P2によるデータ転送を起動する。また、ステータスレジスタ136の状態を検出し、転送単位分の転送が終了した場合には、CPU101とI/Oコントローラ107間を接続させるためのセクタバッファビジー信号を生成して、切替部105に送出する。
以下、第1の実施の形態の半導体装置100の動作を説明する。
図4は、第1の実施の形態の半導体装置による転送処理を示すフローチャートである。
まずCPU101は、システムバス108から切替部105を介してI/Oコントローラ107に、転送コマンドを発行する(ステップS1)。このときセクタバッファコントローラ106は、図2の切替部105のセレクタ202、203、204に対して、システムバス108と、I/Oコントローラ107を接続させるセクタバッファビジー信号(例えば、“0”)を入力している。これにより転送コマンド(制御信号)は、セレクタ204を介して、AND回路205に入力される。I/Oコントローラ107へ制御信号を送出する際、アドレスデコード信号は、“1”となり、転送コマンドは、AND回路205から出力され、I/Oコントローラ107に入力される。
次に、DMAコントローラ103に転送モードなどを設定し起動する(ステップS2)。転送モードとして、例えばライト動作、リード動作、転送データ数などを設定する。
DMAコントローラ103を起動すると、セクタバッファコントローラ106の転送単位設定レジスタ135に、ステータスチェックを行う転送単位を設定する(ステップS3)。
次に、セクタバッファ104の入出力ポートP1によるシステムバス108側とのDMA転送を開始するために、CPU101は、セクタバッファコントローラ106の起動レジスタ131に起動ビットをセットする(例えば、“1”を書き込む。)(ステップS4)。起動ビットがセットされるとセクタバッファコントローラ106の、DMA転送要求信号生成部133は、DMA転送要求信号を、システムバス108を介してDMAコントローラ103に送出してDMAコントローラ103を起動する。例えば、ライト動作の場合、DMAコントローラ103にて転送要求が受け付けられると、メモリ102からDMAコントローラ103を介して、セクタバッファ104へのDMA転送が開始する。
システムバス108側の転送が開始されると、セクタバッファコントローラ106のバッファ制御部137は、セクタバッファビジー信号をアサートする(例えば、“1”とする。)。これにより、図2の切替部105のセレクタ202、203、204は、システムバス108と、I/Oコントローラ107との接続を遮断し、セクタバッファ104の入出力ポートP1とシステムバス108、及び、入出力ポートP2とI/Oコントローラ107間を接続させる。ライト動作の場合には、システムバス108を介して、入出力ポートP1によりセクタバッファ104へのDMA転送が開始する。
次に、セクタバッファの入出力ポートP2によるI/Oコントローラ107側の転送を開始するために、CPU101は、セクタバッファコントローラ106の起動レジスタ132に起動ビットをセットする(例えば、“1”を書き込む。)(ステップS5)。起動ビットがセットされると、セクタバッファコントローラ106の制御信号生成部134は、I/Oコントローラ107のアクセスサイクルに合わせて制御信号を生成し、切替部105に送出する。そして、例えばライト動作の場合には、セクタバッファコントローラ106は、セクタバッファ104に蓄積されたデータを入出力ポートP2からI/Oコントローラ107に転送する。リード動作の場合には、I/Oデバイス107aからI/Oコントローラ107を介してリードデータが切替部105に入力され、入出力ポートP2からセクタバッファ104に蓄積される。このとき、入出力ポートP1から蓄積されたデータがシステムバス108側に転送される。
セクタバッファ104とI/Oコントローラ107間でのデータ転送の間、セクタバッファコントローラ106では、転送単位設定レジスタ135に設定された転送単位の転送が終了したか否かを監視している(ステップS6)。そして、転送単位の転送が完了すると、ステータスレジスタ136には、転送が完了した旨の情報がセットされる。これにより、セクタバッファコントローラ106は、セクタバッファ104の入出力ポートP2による転送を停止させ、セクタバッファビジー信号をネゲートする(例えば、“0”にする。)。これにより、システムバス108とI/Oコントローラ107とを接続する。さらに、起動レジスタ132の起動ビットをクリアする。
なお、ライト動作の場合、セクタバッファ104とI/Oコントローラ107との接続が遮断されても、セクタバッファコントローラ106は、入出力ポートP1、P2によるデータ転送を別々に起動しているので、入出力ポートP1によるライトデータのセクタバッファ104への蓄積は続行される。
システムバス108とI/Oコントローラ107とが接続されると、CPU101はI/Oコントローラ107にアクセスしてステータスチェックを行う(ステップS7)。ステータスチェックが正常に終わると、CPU101は、全データの転送が終了したか否かを判断し、転送が完了した場合には起動レジスタ131の起動ビットをクリアし、転送処理を終了する(ステップS8)。未転送分のデータがある場合には、起動レジスタ132の起動ビットを再びセットし、ステップS5からの処理を繰り返す。例えば、転送単位512バイトで、4096バイトのデータをI/Oデバイス107aに転送したい場合、上記の処理を8回繰り返すことで転送が完了する。
このように、第1の実施の形態の半導体装置100によれば、全データを転送し終わるまで、ステップS4で、DMA転送要求信号をDMAコントローラ103に送出してDMAコントローラ103を1回だけ起動すればよいので、図14に示したような従来の転送処理よりもオーバーヘッドの少ないDMA転送処理を、DMAインターフェースを搭載していないI/Oコントローラ107を用いた場合でも実現できる。
次に、図4のようなDMA転送処理により、I/Oデバイス107aへデータをライトする際の信号の様子を、タイミングチャートで示す。
図5は、第1の実施の形態の半導体装置の転送処理時における信号の様子を示すタイミングチャートである。
図5では、上から、システムバス108を伝わるバスクロック、CPU101が出力するチップセレクト信号/CS1、DMAコントローラ103が発行するDMA転送許可信号、セクタバッファコントローラ106がDMAコントローラ103に伝えるDMA転送要求信号、セクタバッファコントローラ106が生成する制御信号であるチップセレクト信号/CS2、I/Oコントローラ107に入力されるチップセレクト信号/CS3を示している。さらに、CPU101のデータ、セクタバッファ104のシステムバス108側及びI/Oコントローラ107側のデータ、I/Oコントローラ107のデータを示している。
なお、図5では、I/Oコントローラ107のアクセスサイクルが3クロックサイクルである場合を示している。
まず、図4のステップS1の転送コマンド発行のために、CPU101によるI/Oコントローラ107へのアクセスが行われる。このとき、CPU101から出力されたチップセレクト信号/CS1がI/Oコントローラ107のチップセレクト信号/CS3として使用され、CPU101からの発行されたコマンドがI/Oコントローラ107に転送される。
続いて、セクタバッファコントローラ106の起動レジスタ131に起動ビットがセットされると、DMA転送要求信号がアサートされる。このとき、DMAコントローラ103が起動してDMA転送許可信号がアサートされるまでアイドルサイクルとなる。
DMA許可信号がアサートされると、DMAコントローラ103から、システムバス108を介してセクタバッファ104にデータが転送される。このとき例えば、1クロックサイクルあたりに1アドレス分のデータ転送を行う。
続いて、起動レジスタ132がセットされると、セクタバッファコントローラ106は、チップセレクト信号/CS2をアサートする(“L”となる。)。このとき、前述した切替部105の動作により、この制御信号がI/Oコントローラ107に伝わり、チップセレクト信号/CS3もアサートされる。これによって、セクタバッファ104のデータが、入出力ポートP2から切替部105を介してI/Oコントローラ107に転送される。
転送単位のデータの転送が終わると、CPU101は再びチップセレクト信号/CS1をアサートする。転送単位のデータの転送が完了している場合、切替部105は前述の動作により、システムバス108とI/Oコントローラ107を接続するので、I/Oコントローラ107のチップセレクト信号/CS3もアサートされる。これにより、CPU101は、I/Oコントローラ107にアクセスして、ステータスをリードすることで、ステータスチェックを行う。
全てのデータの転送が終わると、DMAコントローラ103は、DMA転送許可信号をネゲートして転送処理を終了する。また、セクタバッファ104が一杯になった場合に、セクタバッファコントローラ106が、DMAコントローラ103にDMA転送を停止させるための信号を送出するようにしてもよい。
第1の実施の形態の半導体装置100では、セクタバッファ104とシステムバス108側とのデータ転送と、I/Oコントローラ107側とのデータ転送を、セクタバッファコントローラ106により別々に起動するので、図5のように、セクタバッファ104からI/Oコントローラ107にデータ転送や、ステータスチェックを行っている最中にも、セクタバッファ104にデータをDMA転送することができる。
また、図13で示したように、従来の半導体装置500では、PIO転送のアクセスサイクルと、DMA転送のアクセスサイクルとが同じであり、DMA転送の転送効率はPIO転送と同程度でしかなかったが、第1の実施の形態の半導体装置500では、システムバス108側のアクセスサイクルを、I/Oコントローラ107側のアクセスサイクルに合わせる必要がないため、システムバス108のバス効率を向上させることができる。
次に、第2の実施の形態の半導体装置を説明する。
図6は、第2の実施の形態の半導体装置の構成を示す図である。
図1で示した第1の実施の形態の半導体装置100と同一の構成要素については同一符号とし、説明を省略する。
第2の実施の形態の半導体装置100aは、第1の実施の形態の半導体装置100と異なり、2つのI/Oデバイス107a−1、107a−2に対応した、I/Oコントローラ107−1、107−2を有している。切替部105aは、この2つのI/Oコントローラ107−1、107−2とのデータ転送を切り替える必要があり、図2で示した第1の実施の形態の切替部105と異なっている。
図7は、第2の実施の形態の半導体装置における切替部の一例の構成を示す図である。
なお、図2で示した第1の実施の形態の半導体装置100の切替部105と同様の構成要素については同一符号としている。
第2の実施の形態の半導体装置100aの切替部105aは、2つのI/Oコントローラ107−1、107−2に対応して、セレクタ204から出力される制御信号を2つのAND回路205−1、205−2に入力している。また、図2の構成の他に、AND回路211、切替レジスタ212、セレクタ213を有している。
AND回路211は、システムバス108からの制御信号(チップセレクト信号など)と、アドレスデコード信号を入力して、2つのI/Oコントローラ107−1、107−2のいずれかを選択する情報を生成して切替レジスタ212に記憶する。
切替レジスタ212は、記憶された情報をもとに、I/Oコントローラ107−1、107−2のいずれかを選択するための選択信号を出力する。
選択信号は、セレクタ213に入力される。そして、セレクタ213は、リード動作時に、I/Oコントローラ107−1、107−2のリードデータのいずれかを選択信号に応じて選択してセレクタ203に入力する。
また、AND回路205−1にも選択信号が入力され、AND回路205−2には、反転された選択信号が入力される。これによって、選択されないI/Oコントローラ107−1、107−2には制御信号が入力されないようにしている。
ところで、第2の実施の形態の半導体装置100aにおいて、2つのI/Oコントローラ107−1、107−2が異なるアクセスサイクルの場合には、セクタバッファコントローラ106aは、それぞれに応じたアクセスサイクルの制御信号やアドレス信号を生成する必要がある。
図8は、第2の実施の形態の半導体装置におけるセクタバッファコントローラの一例の構成を示す図である。
図3で示した第1の実施の形態の半導体装置100のセクタバッファコントローラ106と同様の構成要素については同一符号としている。
第2の実施の形態の半導体装置100aのセクタバッファコントローラ106aは、アクセスサイクル設定レジスタ138を有している。ここには、システムバス108経由で、それぞれのI/Oコントローラ107−1、107−2に対応したアクセスサイクルが設定される。これによって、制御信号生成部134は、アクセスサイクル設定レジスタ138に設定されたアクセスサイクルで制御信号を生成する。また、アクセスサイクル設定レジスタ138に設定されたアクセスサイクルで、アドレス信号も同様に生成できるが、図示を省略している。
以下、第2の実施の形態の半導体装置100aの動作を説明する。
図9は、第2の実施の形態の半導体装置による転送処理を示すフローチャートである。
まず、切替部105aの切替レジスタ212に、例えば、“1”をセットする。これにより、AND回路205−1の出力は有効になり、AND回路205−2の出力は無効(“0”)となる。すなわち、I/Oコントローラ107−1のパスが有効になる(ステップS11)。
次に、セクタバッファコントローラ106aのアクセスサイクル設定レジスタ138に、I/Oコントローラ107−1のアクセスサイクルを設定する(ステップS12)。
そして、図4で示したような転送処理で、I/Oデバイス107a−1との転送処理を行う(ステップS13)。
I/Oデバイス107a−1との転送処理を終えると、今度は、切替レジスタ212に“0”をセットする。これにより、AND回路205−1の出力は無効になり、AND回路205−2の出力が有効となる。すなわち、I/Oコントローラ107−2のバスが有効になる(ステップS14)。
次に、セクタバッファコントローラ106aのアクセスサイクル設定レジスタ138に、I/Oコントローラ107−2のアクセスサイクルを設定する(ステップS15)。
そして、図4で示したような転送処理で、I/Oデバイス107a−2との転送処理を行う(ステップS16)。
次に、図9のようなDMA転送処理により、I/Oデバイス107a−1、107a−2へデータをライトする際の信号の様子を、タイミングチャートで示す。
図10、図11は、第2の実施の形態の半導体装置の転送処理時における信号の様子を示すタイミングチャートである。
図10、図11では、上から、システムバス108を伝わるバスクロック、CPU101が出力するチップセレクト信号/CS1、DMAコントローラ103が発行するDMA転送許可信号、セクタバッファコントローラ106がDMAコントローラ103に伝えるDMA転送要求信号、セクタバッファコントローラ106が生成する制御信号であるチップセレクト信号/CS2、I/Oコントローラ107−1に入力されるチップセレクト信号/CS3、I/Oコントローラ107−2に入力されるチップセレクト信号/CS4を示している。さらに、CPU101のデータ、セクタバッファ104のシステムバス108側及びI/Oコントローラ107−1、107−2側のデータ、I/Oコントローラ107−1、107−2のデータを示している。
なお、I/Oコントローラ107−1のアクセスサイクルが3クロックサイクル、I/Oコントローラ107−2のアクセスサイクルが2クロックサイクルである場合を示している。
まず、始めに切替部105aによって、I/Oコントローラ107−1のパスが有効になっており、セクタバッファコントローラ106aのアクセスサイクル設定レジスタ138には、I/Oコントローラ107−1のアクセスサイクルである3クロックサイクルが設定されているとする。
これにより、図5で示したタイミングチャートと同様に、CPU101による3クロックサイクルのチップセレクト信号/CS1をI/Oコントローラ107−1のチップセレクト信号/CS3として入力し、I/Oコントローラ107−1への転送コマンド発行を行う。その後、1クロックサイクルでのDMA転送を開始する。
セクタバッファコントローラ106aで生成される3クロックサイクルのチップセレクト信号/CS2がアサートすると、セクタバッファ104に蓄積されたデータが、入出力ポートP2から切替部105aを介してI/Oコントローラ107−1に転送される。
転送単位のデータの転送が終わると、CPU101は再びチップセレクト信号/CS1をアサートすることで、I/Oコントローラ107−1のチップセレクト信号/CS3をアサートする。これにより、CPU101は、I/Oコントローラ107−1にアクセスして、ステータスをリードすることで、ステータスチェックを行う。
その後、切替処理を行う。ここでは、切替部105aの切替レジスタ212を設定して、I/Oコントローラ107−2のパスを有効にする。さらに、セクタバッファコントローラ106aのアクセスサイクル設定レジスタ138に、I/Oコントローラ107−2のアクセスサイクルである、2クロックサイクルを設定する。
その後、図11に示すように、CPU101による2クロックサイクルのチップセレクト信号/CS1をI/Oコントローラ107−2のチップセレクト信号/CS4として入力し、I/Oコントローラ107−2への転送コマンド発行を行う。その後、同様に1クロックサイクルでのDMA転送を開始する。
セクタバッファコントローラ106aで生成される2クロックサイクルのチップセレクト信号/CS2がアサートすると、セクタバッファ104に蓄積されたデータが、入出力ポートP2から切替部105aを介してI/Oコントローラ107−2に転送される。
転送単位のデータが終わると、CPU101は再びチップセレクト信号/CS1をアサートすることで、I/Oコントローラ107−2のチップセレクト信号/CS4をアサートする。これにより、CPU101は、I/Oコントローラ107−2にアクセスして、ステータスをリードすることで、ステータスチェックを行う。
全てのデータの転送が終わると、DMAコントローラ103は、DMA転送許可信号をネゲートして転送処理を終了する。また、セクタバッファ104が一杯になった場合に、セクタバッファコントローラ106aが、DMAコントローラ103にDMA転送を停止させるための信号を送出するようにしてもよい。
このように、第2の実施の形態の半導体装置100aでは、異なるアクセスサイクルのI/Oコントローラ107−1、107−2が混在しても、第1の実施の形態の半導体装置100と同様に、効率のよい転送処理が可能となる。また、1つのセクタバッファ104を2つのI/Oコントローラ107−1、107−2で共有することができるため、コストパフォーマンスの向上が期待できる。
なお、上記の第2の実施の形態の半導体装置100aでは、I/Oコントローラ107−1、107−2が2つの場合について示したが、3つ以上のI/Oコントローラを切替部で切り替えるようにしてもよい。また、それに対応してアクセスサイクルも3以上設定するようにしてもよい。
また、上記のアクセスサイクル設定レジスタ138は、図3で示した第1の実施の形態の半導体装置100におけるセクタバッファコントローラ106に搭載するようにしてもよい。
第1の実施の形態の半導体装置の構成を示す図である。 第1の実施の形態の半導体装置における切替部の一例の回路構成図である。 第1の実施の形態の半導体装置におけるセクタバッファコントローラの一例の構成を示す図である。 第1の実施の形態の半導体装置による転送処理を示すフローチャートである。 第1の実施の形態の半導体装置の転送処理時における信号の様子を示すタイミングチャートである。 第2の実施の形態の半導体装置の構成を示す図である。 第2の実施の形態の半導体装置における切替部の一例の構成を示す図である。 第2の実施の形態の半導体装置におけるセクタバッファコントローラの一例の構成を示す図である。 第2の実施の形態の半導体装置による転送処理を示すフローチャートである。 第2の実施の形態の半導体装置の転送処理時における信号の様子を示すタイミングチャートである(その1)。 第2の実施の形態の半導体装置の転送処理時における信号の様子を示すタイミングチャートである(その2)。 DMAインターフェースを持たないI/Oデバイスとの間でDMA転送を行う従来の半導体装置の構成を示す図である。 従来の半導体装置のデータ転送時の信号の様子を示すタイミングチャートである。 従来の半導体装置によるメモリカードへのDMA転送時の動作を示すフローチャートである。
符号の説明
100 半導体装置
101 CPU
102 メモリ
103 DMAコントローラ
104 セクタバッファ
105 切替部
106 セクタバッファコントローラ
107 I/Oコントローラ
107a I/Oデバイス
108 システムバス
P1、P2 入出力ポート

Claims (8)

  1. DMA転送処理を行う半導体装置において、
    入出力装置とのデータ転送を制御する入出力制御部と、
    転送中のデータを一時記憶し、第1の入出力ポートをシステムバスとのDMA転送に用い、第2の入出力ポートを前記入出力制御部とのデータ転送に用いる一時記憶部と、
    前記システムバスと前記入出力制御部を接続するか、前記一時記憶部と前記入出力制御部または前記システムバスを接続するかを切り替える切替部と、
    前記第1及び前記第2の入出力ポートによるデータ転送を別々に起動し、前記一時記憶部と前記入出力制御部間での転送単位分の前記データの転送の終了を検出すると、前記一時記憶部と前記入出力制御部とのデータ転送を遮断し前記システムバスと前記入出力制御部とを接続するための制御信号を前記切替部に送出する記憶制御部と、
    を有することを特徴とする半導体装置。
  2. 前記記憶制御部は、起動ビットをセットすることで、前記第1及び前記第2の入出力ポートによるデータ転送を別々に起動させる2つのレジスタを有していることを特徴とする請求項1記載の半導体装置。
  3. 前記記憶制御部は、前記転送単位を設定するレジスタを有していることを特徴とする請求項1記載の半導体装置。
  4. 前記記憶制御部は、前記転送単位の前記データの転送が終了したか否かの情報を記憶するステータスレジスタを有していることを特徴とする請求項1記載の半導体装置。
  5. 前記記憶制御部は、前記入出力制御部のアクセスサイクルを記憶するレジスタを有し、前記アクセスサイクルに応じた制御信号またはアドレス信号を前記入出力制御部に送出することを特徴とする請求項1記載の半導体装置。
  6. 複数の前記入出力制御部を有し、
    前記切替部は、複数の前記入出力制御部のいずれか1つを選択するための情報を記憶するレジスタを有していることを特徴とする請求項1記載の半導体装置。
  7. 前記一時記憶部は、デュアルポートRAMであることを特徴とする請求項1記載の半導体装置。
  8. DMA転送処理を行うデータ転送方法において、
    第1の入出力ポートをシステムバスとのDMA転送に用い、第2の入出力ポートを入出力装置とのデータ転送を制御する入出力制御部とのデータ転送に用いる一時記憶部の、前記第1及び前記第2の入出力ポートによるデータ転送を別々に起動し、
    切替部によって前記システムバスと前記入出力制御部を接続するか、前記一時記憶部と前記入出力制御部または前記システムバスを接続するかを切り替え、
    前記一時記憶部と前記入出力制御部間での転送単位分のデータの転送の終了を検出すると、前記切替部によって前記一時記憶部と前記入出力制御部とのデータ転送を遮断し、前記システムバスと前記入出力制御部とを接続することを特徴とするデータ転送方法。
JP2006180952A 2006-06-30 2006-06-30 半導体装置及びデータ転送方法 Pending JP2008009817A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006180952A JP2008009817A (ja) 2006-06-30 2006-06-30 半導体装置及びデータ転送方法
US11/706,983 US7725621B2 (en) 2006-06-30 2007-02-16 Semiconductor device and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006180952A JP2008009817A (ja) 2006-06-30 2006-06-30 半導体装置及びデータ転送方法

Publications (1)

Publication Number Publication Date
JP2008009817A true JP2008009817A (ja) 2008-01-17

Family

ID=38878167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006180952A Pending JP2008009817A (ja) 2006-06-30 2006-06-30 半導体装置及びデータ転送方法

Country Status (2)

Country Link
US (1) US7725621B2 (ja)
JP (1) JP2008009817A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5277562B2 (ja) * 2007-04-19 2013-08-28 株式会社ニコン 電子機器、電子カメラおよびデータ転送プログラム
TWI389030B (zh) * 2008-05-07 2013-03-11 Mstar Semiconductor Inc 於微處理器下載並執行程式碼的方法與電腦程式產品以及包含該微處理器之通訊裝置
US8949486B1 (en) * 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11886369B1 (en) * 2023-09-14 2024-01-30 Qualcomm Incorporated Apparatus and methods for burst communications within die architectures

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03290750A (ja) * 1990-04-09 1991-12-20 Matsushita Electric Ind Co Ltd Dma転送方法
JPH08106363A (ja) * 1994-10-07 1996-04-23 Hitachi Ltd マルチディスク装置
JPH1091570A (ja) * 1996-09-13 1998-04-10 Matsushita Electric Ind Co Ltd データ転送装置
JPH10214237A (ja) * 1997-01-30 1998-08-11 Nec Corp バス制御装置
JP2005316700A (ja) * 2004-04-28 2005-11-10 Sony Corp データ転送方法および装置
JP2006126938A (ja) * 2004-10-26 2006-05-18 Canon Inc データ転送システム及びそのデータ転送方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173938A (ja) * 1991-10-08 1993-07-13 Fujitsu Ltd 間欠dma制御方式
US5889776A (en) * 1997-01-31 1999-03-30 Alpnet Corporation Physical layer switch system for ethernet local area network communication system
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03290750A (ja) * 1990-04-09 1991-12-20 Matsushita Electric Ind Co Ltd Dma転送方法
JPH08106363A (ja) * 1994-10-07 1996-04-23 Hitachi Ltd マルチディスク装置
JPH1091570A (ja) * 1996-09-13 1998-04-10 Matsushita Electric Ind Co Ltd データ転送装置
JPH10214237A (ja) * 1997-01-30 1998-08-11 Nec Corp バス制御装置
JP2005316700A (ja) * 2004-04-28 2005-11-10 Sony Corp データ転送方法および装置
JP2006126938A (ja) * 2004-10-26 2006-05-18 Canon Inc データ転送システム及びそのデータ転送方法

Also Published As

Publication number Publication date
US20080005387A1 (en) 2008-01-03
US7725621B2 (en) 2010-05-25

Similar Documents

Publication Publication Date Title
US6950910B2 (en) Mobile wireless communication device architectures and methods therefor
US7171526B2 (en) Memory controller useable in a data processing system
JP2008009817A (ja) 半導体装置及びデータ転送方法
US7162556B2 (en) Matrix type bus connection system and power reduction method therefor
JP4768697B2 (ja) 記憶システム、およびデータ転送方法
KR20070003515A (ko) 메모리 장치들과의 통신을 위한 시스템 및 방법
US8850086B2 (en) SD switch box in a cellular handset
CN104238957A (zh) 串行外围接口控制器、串行外围接口快闪存储器及其存取方法和存取控制方法
CN107851076B (zh) 用于控制存储器访问的装置、系统及方法
JP2005293596A (ja) データ要求のアービトレーション
TWI471731B (zh) 記憶體存取方法、記憶體存取控制方法、spi快閃記憶體裝置以及spi控制器
JP2005303718A (ja) マトリックス状バス接続システム
US8060676B2 (en) Method of hot switching data transfer rate on bus
JP4723334B2 (ja) Dma転送システム
JP2004192051A (ja) 共用端子制御装置
JP2008287557A (ja) バスシステム及びマイクロコンピュータ
JP2007108858A (ja) ピン共有装置およびピン共有方法
JP2007334600A (ja) 半導体集積回路装置
JP4190969B2 (ja) バスシステム及びambaにおけるバス調停システム
WO2016053146A1 (ru) Компьютерная система
JP2005010966A (ja) Lsi装置
JP2007305073A (ja) データ処理装置及びメモリコントローラチップ
JP4062478B2 (ja) デバイスアクセス方法
JP2008077389A (ja) データ処理装置
JPH0449460A (ja) Dmaコントローラ

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111108