JP2020035264A - メモリアクセス制御装置 - Google Patents
メモリアクセス制御装置 Download PDFInfo
- Publication number
- JP2020035264A JP2020035264A JP2018162491A JP2018162491A JP2020035264A JP 2020035264 A JP2020035264 A JP 2020035264A JP 2018162491 A JP2018162491 A JP 2018162491A JP 2018162491 A JP2018162491 A JP 2018162491A JP 2020035264 A JP2020035264 A JP 2020035264A
- Authority
- JP
- Japan
- Prior art keywords
- address
- descriptor information
- memory access
- memory
- dma master
- 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
Links
Landscapes
- Bus Control (AREA)
Abstract
【課題】DMAマスタのメモリアクセス順序をアドレス領域の切り換え回数が少なくなるよう並び替え、効率的なDMA転送を行うメモリアクセス制御装置を提供すること。【解決手段】DMAマスタと、前記DMAマスタがアクセス可能なアドレス空間より大きいアドレス空間を有するメモリと、前記DMAマスタがアクセス可能なアドレス空間から前記メモリのアドレス空間へアドレスを拡張するアドレス拡張部と、を備え、前記アドレス拡張部は、DMAマスタのメモリアクセスの順番を並び替えるメモリアクセスソート部を有し、前記メモリアクセスソート部は、前記ディスクリプタ情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とする。【選択図】図1
Description
本発明は、メモリアクセス制御装置に関する。
半導体集積回路において、画像データ等の処理を行うデータ処理モジュールや、半導体集積回路外部のデバイスと通信を行うI/Oモジュール等が、DRAM(Dynamic Random Access Memory)に代表されるメモリにアクセスする場合、DMA(Direct Memory Access)が多く用いられる。さらに、DMAによってメモリ上の非連続的なアドレスにアクセスする場合、ディスクリプタ情報を用いたDMAが多く用いられる。ディスクリプタ情報には、メモリ上の転送開始アドレスおよびデータ転送量が所定の形式で記載されている。
DMAマスタはデータ転送に先立ってディスクリプタ情報をメモリから読み出し、読み出したディスクリプタ情報に記載された転送開始アドレスおよびデータ転送量に従って、DMAによるデータ転送を行う。ディスクリプタ情報の読み出しとデータ転送を繰り返すことで、メモリ上の非連続的なアドレスに対しても、CPUが介在することなくDMAが可能となる。また、ディスクリプタ情報はCPUによって所定のメモリアドレスに配置されるのが一般的である。
一方で、近年の半導体プロセスの微細化による半導体集積回路の高性能化により、半導体集積回路が処理するデータ量が増加傾向にある。また、処理するデータ量の増加に伴い、半導体集積回路が備えるメモリ容量も増加傾向にある。すると、例えばDMAマスタが過去の設計資産の流用であった場合などにおいて、DMAマスタが指定可能なアドレス空間に対し、メモリの持つアドレス空間の方が大きい構成となる場合がある。
その場合、メモリの持つアドレス空間を複数のアドレス領域に分割し、DMAマスタとメモリコントローラ間に、DMAマスタがアクセス可能なアドレス領域を選択するアドレス拡張部を挿入する。ここでのアドレス領域の容量は、DMAマスタの持つアドレス空間の容量と等しい。アドレス拡張部は、DMAマスタがデータ転送の際にメモリへ発行するアドレスに対してアドレス領域を選択する信号を付与することで、DMAマスタがメモリの持つアドレス空間全てにアクセス可能となる。
しかしながら、DMAマスタがアクセスするアドレス領域がメモリアクセスの度に異なる場合、DMAマスタはアドレス拡張部にて選択されているアドレス領域にのみアクセス可能である。そのため、データ転送が行われているアドレス領域とは異なるアドレス領域へデータ転送の要求を発行できない。
特に、DMAマスタがメモリより読み出したディスクリプタ情報に基づいて、複数のメモリアクセス要求をメモリに対して先行発行したい場合、各アドレス領域へのメモリアクセスが完了するまで異なるアドレス領域へのメモリアクセス要求の先行発行が行えない。従って、アドレス領域が頻繁に切り替わるデータ転送を行うと、アドレス領域切り換えの際にデータ転送の要求が待たされてしまうため、メモリの帯域が劣化してしまう。
そこで、特許文献1に参照されるように、DMAマスタのメモリアクセス順序を入れ替え、転送効率の劣化を防ぐ発明がなされている。
しかしながら、特許文献1では、DMAマスタが指定可能なアドレス空間に対してメモリの持つアドレス空間の方が大きい構成においては、ディスクリプタ情報に基づいたメモリアクセス要求を、データ転送が行われているアドレス領域と異なるアドレス領域へ先行発行することができないため、転送効率は依然として劣化してしまう。
本発明は、上記の問題点に鑑み、DMAマスタのメモリアクセス順序をアドレス領域の切り換え回数が少なくなるよう並び替えるメモリアクセス制御装置を提供することを目的とする。
上記の目的を達成するために、本発明に係るメモリアクセス制御装置は、
DMAマスタと、前記DMAマスタがアクセス可能なアドレス空間より大きいアドレス空間を有するメモリと、前記DMAマスタがアクセス可能なアドレス空間から前記メモリのアドレス空間へアドレスを拡張するアドレス拡張部と、を備え、前記アドレス拡張部は、前記DMAマスタが前記メモリより取得するデータがディスクリプタ情報であるか否かを判別するディスクリプタ情報判別部と、前記ディスクリプタ情報判別部にて判別されたディスクリプタ情報を格納するディスクリプタ情報格納部と、前記DMAマスタがメモリアクセスの際に発行するアドレス信号に前記ディスクリプタ情報格納部に格納した前記ディスクリプタ情報内のアドレス領域情報を付与し、前記DMAマスタがアクセスする前記メモリ上のアドレス領域を選択するアドレス領域制御部と、DMAマスタのメモリアクセスの順番を並び替えるメモリアクセスソート部と、を有し、前記メモリアクセスソート部は、前記ディスクリプタ情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とする。
DMAマスタと、前記DMAマスタがアクセス可能なアドレス空間より大きいアドレス空間を有するメモリと、前記DMAマスタがアクセス可能なアドレス空間から前記メモリのアドレス空間へアドレスを拡張するアドレス拡張部と、を備え、前記アドレス拡張部は、前記DMAマスタが前記メモリより取得するデータがディスクリプタ情報であるか否かを判別するディスクリプタ情報判別部と、前記ディスクリプタ情報判別部にて判別されたディスクリプタ情報を格納するディスクリプタ情報格納部と、前記DMAマスタがメモリアクセスの際に発行するアドレス信号に前記ディスクリプタ情報格納部に格納した前記ディスクリプタ情報内のアドレス領域情報を付与し、前記DMAマスタがアクセスする前記メモリ上のアドレス領域を選択するアドレス領域制御部と、DMAマスタのメモリアクセスの順番を並び替えるメモリアクセスソート部と、を有し、前記メモリアクセスソート部は、前記ディスクリプタ情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とする。
本発明に係るメモリアクセス制御装置によれば、メモリアクセスの転送効率を劣化させることなく、DMAマスタが持つアドレス空間以上のメモリアドレス空間にアクセスすることが可能となる。
以下、発明を実施するための形態について、図面を参照しながら説明する。
図1は、本発明の第1の実施形態に係るメモリアクセス制御装置の構成例を示す図である。メモリアクセス制御装置100は、メモリ104と、メモリコントローラ103と、メモリ104にアクセス可能なDMAマスタ101と、アドレス拡張部102を備える。DMAマスタ101は、メモリ104からディスクリプタ情報を読み、読み出したディスクリプタ情報に記載されている、メモリ104上の転送開始アドレスとデータ転送量に従って、CPUを介すことなくメモリ104へアクセスする。
また、本実施形態において、メモリ104の持つアドレス空間は、DMAマスタ101が指定可能なアドレス空間より大きい構成である。そこで、メモリ104の持つアドレス空間を、DMAマスタ101の持つアドレス空間と等しい容量のアドレス領域ごとに分割する。さらに、アドレス拡張部102は、DMAマスタ101が発行するアドレス信号に、メモリ104上の上記アドレス領域を選択するアドレス領域情報を付与することで、DMAマスタ101は、メモリ104の持つアドレス空間全てにアクセス可能な構成である。
アドレス拡張部102において、ディスクリプタ情報判別部105は、DMAマスタ101がメモリ104より読み出すデータがディスクリプタ情報であるか否かを判別する。ディスクリプタ情報の判別手段は、ディスクリプタ情報判別部105が、DMAマスタ101がメモリアクセスの際に発行するアドレスを監視することにより可能となる。当該アドレスがディスクリプタ情報の配置されているアドレスであれば、DMAマスタ101が次に読み出すデータはディスクリプタ情報であるとディスクリプタ情報判別部105は判断する。
また、このときディスクリプタ情報判別部105は、DMAマスタ101の次のメモリアクセスが、ディスクリプタ情報の配置されているアドレス領域へのアクセスとなることをアドレス領域制御部108へ通知する。アドレス領域制御部108は、DMAマスタ101が発行するアドレスに、ディスクリプタ情報が配置されているアドレス領域情報を付与する。ディスクリプタ情報の配置されているアドレスは、例えばCPUによって、DMAマスタ101、ディスクリプタ情報判別部105、アドレス領域制御部108へ設定されている。
ディスクリプタ情報格納部106は、ディスクリプタ情報判別部105によって判別されたディスクリプタ情報を格納する。このとき、通常のメモリアクセス通りDMAマスタ101もディスクリプタ情報を取得する。アドレス領域制御部108は、ディスクリプタ情報格納部106に格納されているディスクリプタ情報内のアドレス領域情報を、DMAマスタ101がメモリアクセスの際に発行するアドレスに付与し、アドレス領域を選択する。
メモリアクセスソート部107は、ディスクリプタ情報格納部106に格納されているディスクリプタ情報内のアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようDMAマスタ101のメモリアクセス順序を並び替える。
メモリアクセスソート部107の構成を述べる。通常メモリアクセスは、DMAマスタ101がディスクリプタ情報を読み出した順(すなわち、ディスクリプタ情報がディスクリプタ情報格納部106に格納された順)に行われ、先頭のディスクリプタ情報に対するメモリアクセスが完了すると、先頭のディスリプタ情報はディスクリプタ情報格納部106から消去され、ひとつ後ろに格納されているディスリプタ情報が先頭となるよう順番が前詰めされる。
ただし、ディスクリプタ情報格納部106の先頭に格納されたディスクリプタ情報に対するメモリアクセスの際、先頭より後ろに格納されたディスクリプタ情報の中に先頭のディスクリプタ情報と同じアドレス領域にアクセスするディスクリプタ情報がある場合、メモリアクセスソート部107は、そのディスクリプタ情報が次のメモリアクセスとなるよう、ディスクリプタ情報格納部106内のディスクリプタ情報の順番を並び替える。また、メモリアクセスソート部107は、並び替えたディスクリプタ情報の順番に従って、DMAマスタ101から発行されたアドレス信号をメモリ104に対して発行する。その際、アドレス領域制御部108も、並び替えられたディスクリプタ情報の順番に従って、アドレス信号にアドレス領域情報を付与する。
図2は、メモリ104の持つアドレス空間を示す図である。また、メモリアドレス空間上にディスクリプタ情報およびデータが配置される一例を示す図である。図2において、メモリアドレス空間はアドレス領域(1)〜(n)に分割され、それぞれのアドレス領域の容量は、DMAマスタ101の持つアドレス空間の容量と等しい。ただし、アドレス拡張部102が、DMAマスタ101がメモリ104へ発行するアドレスに対してアドレス空間を選択する信号を付与することで、DMAマスタ101は複数のアドレス領域にアクセス可能となる。
図2において、アドレス領域(1)には、ディスクリプタ情報(1)〜(3)、データ(1)、データ(3)が配置されており、アドレス領域(2)には、データ(2)が配置されている例を示す。また、ディスクリプタ情報(1)にはデータ(1)のメモリ104上のアドレスが、ディスクリプタ情報(2)にはデータ(2)のメモリ104上のアドレスが、ディスクリプタ情報(3)にはデータ(3)のメモリ104上のアドレスが、それぞれ記載されているとする。
図3は、ディスクリプタ情報を用いたDMAのシーケンスを示す図であり、特に、図2のようにディスクリプタ情報およびデータがメモリ上104に配置される場合の例である。
図3において、シーケンス301〜303は、DMAマスタ101がメモリ104からディスクリプタ情報(1)〜(3)を読み出すため、ディスクリプタ情報が配置されているアドレスに対する読み出し要求をメモリ104に発行するシーケンスを示す。このとき、DMAマスタ101がディスクリプタ情報の取得を待たずして、先行的にディスクリプタ情報(2)〜(3)の読み出し要求をメモリ104に発行可能であるのは、メモリコントローラ103が複数のメモリアクセス要求を格納するバッファを備えている(すなわちメモリアクセス要求のアウトスタンディングに対応している)ためである。
また、このときディスクリプタ情報判別部105は、DMAマスタ101の次のメモリアクセスが、ディスクリプタ情報の配置されているアドレス領域へのアクセスとなることをアドレス領域制御部108へ通知し、アドレス領域制御部108は、DMAマスタ101が発行するアドレスに、ディスクリプタ情報が配置されているアドレス領域情報を付与する。
シーケンス304〜306は、シーケンス301〜303にて発行したアドレスにあるディスクリプタ情報が、メモリ104からDMAマスタ101に返されるシーケンスを示す。このとき、ディスクリプタ情報(1)〜(3)は全てアドレス領域(1)に置かれているため、アドレス拡張部102がDMAマスタ101から発行されるアドレス信号に付与するアドレス領域情報は、アドレス領域(1)を選択している。また、シーケンス304〜306において、DMAマスタ101だけでなくアドレス拡張部102もディスクリプタ情報を格納している。
このとき、アドレス拡張部内102のディスクリプタ情報判別部105においてディスクリプタ情報は判別され、ディスクリプタ情報格納部106にて格納される。また、アドレス拡張部102のメモリアクセスソート部107は、ディスクリプタ情報格納部106に格納されているディスクリプタ情報内のアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようディスクリプタ情報を並び替える。また、メモリアクセスソート部107は、DMAマスタ101が発行するアドレスを、並び替えられたディスクリプタ情報の順序に従って発行する。
ディスクリプタ情報に記載されているアドレス領域は、データ(1)がアドレス領域(1)、データ(2)がアドレス領域(2)、データ(3)がアドレス領域(1)であるため、アドレス領域切り換え回数が少なくなるようメモリアクセス順序を並び替えた場合、データのアクセス順序は、データ(1)、データ(3)、データ(2)の順となる。
シーケンス307〜309は、DMAマスタ101がメモリ104からデータ(1)〜(3)を読み出すため、データが配置されているアドレスに対する読み出し要求をメモリに発行するシーケンスを示す。このときDMAマスタ101が発行するアドレスは、DMAマスタ101が読み出したディスクリプタ情報(1)〜(3)に記載されているアドレスから、メモリ104内のアドレス領域の選択に使用するアドレス領域情報を除いた、DMAマスタ101が持つアドレス空間内のアドレスである。
また、アドレス拡張部102内のアドレス領域制御部108は、シーケンス304〜306にて読み出したディスクリプタ情報内のアドレス領域情報を、DMAマスタ101が発行するアドレスに付与する。このとき、データ(1)はアドレス領域(1)に配置されており、データ(2)はアドレス領域(2)に配置されている。従って、シーケンス307とシーケンス308は異なるアドレス領域に対するアクセスとなるため、DMAマスタ101がシーケンス307にて発行したアドレスに対するデータ取得が完了するまでアドレス拡張部102はアドレス領域(1)を選択しており、シーケンス308はメモリ104に対して発行できない。
従って、データ(2)のアドレスは、アドレス拡張部102で待たされている。ただし、データ(3)はアドレス領域(1)に配置されており、データ(1)と同一のアドレス領域に配置されている。従って、メモリアクセスソート部107で並び替えられた通り、シーケンス309は、シーケンス308に先立ってメモリ104へ発行することが可能となる。
シーケンス310は、シーケンス307にて発行したアドレスにあるデータ(1)が、メモリ104からDMAマスタ101に返されるシーケンスを示す。シーケンス311は、シーケンス309にて発行したアドレスにあるデータ(3)が、メモリ104からDMAマスタ101に返されるシーケンスを示す。
ここで、アドレス領域(1)へのデータアクセスが完了したため、アドレス拡張部102はDMAマスタ101の次のメモリアクセスのアドレス領域を、ディスクリプタ情報格納部106に格納されているディスクリプタ情報に基づいて、アドレス領域(1)からアドレス領域(2)へと切り替える。すると、シーケンス312において、アドレス拡張部102にて待たせていたデータ(2)のアドレスをメモリ104に発行可能となる。シーケンス313は、シーケンス308および312にて発行したアドレスにあるデータ(2)が、メモリ104からDMAマスタ101に返されるシーケンスを示す。
図3のシーケンスより、アドレス領域の切り換え回数が少なくなるようデータアクセス順序を並び替えたことにより、シーケンス309がアドレス拡張部102にて待たされることなくメモリ104へ発行可能なため、DMAマスタ101がメモリアクセスする際のレイテンシを少なくすることが可能となる。
また、図3のシーケンスには、データ読み出しのシーケンスのみ示しているが、データ書き込みのシーケンスも同様に、アドレス領域が異なるデータのアドレス発行はアドレス拡張部102にて待たされることとなるため、アドレス領域の切り換え回数が少なくなるようメモリアクセスを並び替える手段は有効である。
図4は、本発明の第1の実施形態に係るDMAマスタ101が発行するメモリアクセス信号のタイミングチャートを示す図であり、特にメモリアクセスソート部107にてメモリアクセスの順序が並び替えられた場合におけるデータ読み出しの順序保証に関する図である。DMAマスタ101が、所望するデータのアドレスを指定する信号であるアドレス(1)〜(3)を発行する際、DMAマスタ101は、それぞれのアドレスに対して割り振った識別信号(1)〜(3)を、アドレス信号と同時に発行する。このとき、アドレス(1)、アドレス(2)、アドレス(3)の順序で発行したアドレス信号を、メモリアクセスソート部107にてアドレス(1)、アドレス(3)、アドレス(2)のような順序に並び替える場合、メモリアクセスソート部107は、識別信号もアドレスと併せて並び替えてメモリコントローラ103へ発行する。
メモリ104は、メモリアクセスソート部107にて並び替えて発行したアドレス信号と同じ順序でデータをDMAマスタ101へ返すため、データ(1)、データ(3)、データ(2)の順序となる。また、メモリコントローラ103は、アドレスと共に受信した識別信号を、アドレス信号に対応したデータに付与してDMAマスタ101へ返す。従って、DMAマスタ101は識別信号の順序によって、DMAマスタ101が発行したアドレスの順序通りにデータの順序を復元することが可能である。
以上で説明した第1の実施形態によれば、アドレス領域の切り換え回数が少なくなるようメモリアクセス順序を並び替えたことにより、メモリアクセスの転送効率を劣化させることなく、DMAマスタ101が持つアドレス空間以上のメモリアドレス空間にアクセスすることが可能となる。
図5は、本発明の第2の実施形態に係るメモリアクセス制御装置の構成例を示す図である。図5における、DMAマスタ501と、メモリコントローラ503と、メモリ504は、図1のDMAマスタ101と、メモリコントローラ103と、メモリ104と同等の機能であるため説明を省略する。アドレス拡張部502内のディスクリプタ情報判別部505は、DMAマスタ501がディスクリプタ情報を取得するため、ディスクリプタ情報が配置されているメモリ504上のアドレスを発行した際、該アドレスがディスクリプタ情報の配置されているメモリ504上のアドレスであることを判別し、ディスクリプタ情報が配置されているアドレス領域情報を、ディスクリプタアクセス情報格納部509へと転送する。
ディスクリプタアクセス情報格納部509は、DMAマスタ501が指定するディスクリプタ情報が配置されているアドレス領域情報を格納する。メモリアクセスソート部507は、ディスクリプタ情報格納部506に格納されているディスクリプタ情報内のアドレス領域情報と、ディスクリプタアクセス情報格納部509に格納されているアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるよう、DMAマスタ501のデータおよびディスクリプタ情報の転送におけるメモリアクセス順序を並び替える。尚、アドレス領域制御部508は、図1のアドレス領域制御部108と同等の機能であるため説明を省略する。
図6は、メモリ504の持つアドレス空間を示す図である。また、メモリアドレス空間上にディスクリプタ情報およびデータが配置される一例を示す図である。図6において、メモリアドレス空間はアドレス領域(1)〜(n)に分割され、それぞれのアドレス領域の容量は、DMAマスタ501の持つアドレス空間の容量と等しい。ただし、アドレス拡張部502が、DMAマスタ501からメモリ504へ発行するアドレスに対してアドレス空間を選択する信号を付与することで、DMAマスタ501は複数のアドレス領域にアクセス可能となる。
図5において、アドレス領域(1)には、ディスクリプタ情報(1)〜(5)、データ(1)〜(2)が配置されており、アドレス領域(2)には、データ(3)〜(4)が配置されており、アドレス領域(n)には、データ(5)が配置されている例を示す。また、ディスクリプタ情報(1)にはデータ(1)のメモリ504上のアドレスが、ディスクリプタ情報(2)にはデータ(2)のメモリ504上のアドレスが、ディスクリプタ情報(3)にはデータ(3)のメモリ504上のアドレスが、ディスクリプタ情報(4)にはデータ(4)のメモリ504上のアドレスが、ディスクリプタ情報(5)にはデータ(5)のメモリ504上のアドレスが、それぞれ記載されているとする。
図7は、ディスクリプタ情報を用いたDMAのシーケンスを示す図であり、特に、図6のようにディスクリプタ情報およびデータがメモリ504上に配置される場合において、DMAマスタ501が既にディスクリプタ情報を取得しており、取得したディスクリプタ情報に対応したデータのアドレスの発行が行われている際に、DMAマスタ501がディスクリプタ(5)を読み出す例である。
図7において、シーケンス701〜704は、DMAマスタ501がメモリ504からディスクリプタ情報(1)〜(4)を読み出すため、ディスクリプタ情報が配置されているアドレスに対する読み出し要求をメモリ504に発行するシーケンスを示す。このとき、DMAマスタ501がディスクリプタ情報の取得を待たずして、先行的にディスクリプタ情報(2)〜(4)の読み出し要求をメモリ504に発行可能であるのは、メモリコントローラ503が複数のメモリアクセス要求を格納するバッファを備えている(すなわちメモリアクセス要求のアウトスタンディングに対応している)ためである。
また、このときディスクリプタ情報判別部505は、DMAマスタ501の次のメモリアクセスが、ディスクリプタ情報の配置されているアドレス領域へのアクセスとなることをアドレス領域制御部508へ通知し、アドレス領域制御部508は、DMAマスタ501が発行するアドレスに、ディスクリプタ情報が配置されているアドレス領域情報を付与する。ディスクリプタ情報の配置されているアドレスは、例えばCPUによって、DMAマスタ501、ディスクリプタ情報判別部505、アドレス領域制御部508へ設定されている。
シーケンス705〜708は、シーケンス701〜704にて発行したアドレスにあるディスクリプタ情報が、メモリ504からDMAマスタ501に返されるシーケンスを示す。このとき、ディスクリプタ情報(1)〜(4)は全てアドレス領域(1)に置かれているため、アドレス拡張部502がDMAマスタ501から発行されるアドレス信号に付与するアドレス領域情報は、アドレス領域(1)を選択している。
また、シーケンス705〜708において、DMAマスタ501だけでなくアドレス拡張部502もディスクリプタ情報を格納している。このとき、アドレス拡張部502内のディスクリプタ情報判別部505においてディスクリプタ情報は判別され、ディスクリプタ情報格納部506にて格納される。
また、アドレス拡張部502のメモリアクセスソート部507は、ディスクリプタ情報格納部506に格納されているディスクリプタ情報内のアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようディスクリプタ情報を並び替える。また、メモリアクセスソート部507は、DMAマスタ501が発行するアドレスを、並び替えられたディスクリプタ情報の順序に従って発行する。
ディスクリプタ情報に記載されているアドレス領域は、データ(1)がアドレス領域(1)、データ(2)がアドレス領域(1)、データ(3)がアドレス領域(2)、データ(4)がアドレス領域(2)であるため、アドレス領域切り換え回数は既に最少であり、データのアクセス順序は並び替えられない。
シーケンス709〜711およびシーケンス713は、DMAマスタ501がメモリ504からデータ(1)〜(4)を読み出すため、データが配置されているアドレスに対する読み出し要求をメモリ504に発行するシーケンスを示す。このときDMAマスタ501が発行するアドレスは、DMAマスタ501が読み出したディスクリプタ情報(1)〜(4)に記載されているアドレスから、メモリ504内のアドレス領域の選択に使用するアドレス領域情報を除いた、DMAマスタ501が持つアドレス空間内のアドレスである。
また、アドレス拡張部502内のアドレス領域制御部508は、シーケンス705〜708にて読み出したディスクリプタ情報内のアドレス領域情報を、DMAマスタ501が発行するアドレスに付与する。
図7では、シーケンス711におけるデータ(3)のアドレスがアドレス拡張部502で待たされたのち、シーケンス712においてさらにDMAマスタ501がメモリ504からディスクリプタ情報(5)を読み出すため、ディスクリプタ情報が配置されているアドレスに対する読み出し要求をメモリ504に発行するシーケンスを示す。
ここでディスクリプタ情報判別部505は、DMAマスタ501が発行したアドレスがディスクリプタ情報の配置されているメモリ504上のアドレスであることを判別し、ディスクリプタ情報が配置されているアドレス領域情報を、ディスクリプタアクセス情報格納部509へと転送する。このときアドレス拡張部502のメモリアクセスソート部507は、ディスクリプタ情報格納部506に格納されているディスクリプタ情報に加えて、ディスクリプタアクセス情報格納部509に格納されているアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようディスクリプタ情報およびアドレス領域情報を並び替える。
また、メモリアクセスソート部507は、DMAマスタ501が発行するアドレスを、並び替えられたディスクリプタ情報およびアドレス領域情報の順序に従って発行する。ディスクリプタ情報に記載されているアドレス領域は、ディスクリプタ情報(5)がアドレス領域(1)、データ(3)がアドレス領域(2)、データ(4)がアドレス領域(2)、データ(3)がアドレス領域(2)、データ(4)がアドレス領域(n)、であるため、データおよびディスクリプタ情報のアクセス順序は、ディスクリプタ情報(5)、データ(3)、データ(4)の順に並び替えられる。
このとき、ディスクリプタ情報(5)およびデータ(1)〜(2)はアドレス領域(1)に配置されており、データ(3)〜(4)はアドレス領域(2)に配置されている。従って、シーケンス709〜710および712と、シーケンス711および713は異なるアドレス領域に対するアクセスとなるため、DMAマスタ501がシーケンス709〜710および712にて発行したアドレスに対するデータ取得が完了するまでアドレス拡張部502はアドレス領域(1)を選択しており、シーケンス711および713はメモリ504に対して発行できない。
従って、データ(3)およびデータ(4)のアドレスは、アドレス拡張部502で待たされている。シーケンス714〜716は、シーケンス709〜710および712にて発行したアドレスにあるディスクリプタ情報(5)およびデータ(1)〜(2)が、メモリ504からDMAマスタ501に返されるシーケンスを示す。
ここで、ディスクリプタ情報(5)およびデータ(1)〜(2)はアドレス領域(1)に配置されているため、アドレス拡張部502がDMAマスタ501から発行されるアドレス信号に付与するアドレス領域情報は、アドレス領域(1)を選択している。ここで、アドレス領域(1)へのデータアクセスが完了したため、アドレス拡張部502はDMAマスタ501の次のメモリアクセスのアドレス領域を、ディスクリプタ情報格納部506に格納されているディスクリプタ情報に基づいて、アドレス領域(1)からアドレス領域(2)へと切り替える。
すると、シーケンス711および713において、アドレス拡張部502にて待たせていたデータ(3)〜(4)のアドレスをメモリ504に発行可能となる。シーケンス719〜720は、シーケンス717〜718にて発行したアドレスにあるデータ(3)〜(4)が、メモリ504からDMAマスタ501に返されるシーケンスを示す。
図7のシーケンスより、アドレス領域の切り換え回数が少なくなるようデータおよびディスクリプタ情報のアクセス順序を並び替えたことにより、シーケンス712がアドレス拡張部502にて待たされることなくメモリ504へ発行可能なため、DMAマスタ501がメモリアクセスする際のレイテンシを少なくすることが可能となる。
また、図7のシーケンスには、データ読み出しのシーケンスのみ示しているが、データ書き込みのシーケンスも同様に、アドレス領域が異なるデータのアドレス発行はアドレス拡張部にて待たされることとなるため、アドレス領域の切り換え回数が少なくなるようメモリアクセスを並び替える手段は有効である。
以上で説明した第2の実施形態によれば、アドレス領域の切り換え回数が少なくなるようデータおよびディスクリプタ情報のメモリアクセス順序を並び替えたことにより、メモリアクセスの転送効率を劣化させることなく、DMAマスタ501が持つアドレス空間以上のメモリアドレス空間にアクセスすることが可能となる。
図8は、本発明の第3の実施形態に係るメモリアクセス制御装置の構成例を示す図である。図8における、DMAマスタ801と、メモリコントローラ803と、メモリ804は、図1のDMAマスタ101と、メモリコントローラ103と、メモリ104と同等の機能であるため説明を省略する。アドレス拡張部802内のメモリアクセス分割部810は、ディスクリプタ情報格納部806に格納されているディスクリプタ情報の中に、複数のアドレス領域を跨るデータのアクセス情報が記載されているディスクリプタ情報がある場合、該ディスクリプタ情報を分割し、アドレス領域を跨らないアクセスとなるよう複数のディスクリプタ情報として生成する。その際、アドレス領域ごとのアクセスとなるよう、転送開始アドレスおよびデータ転送量が分割される。また、分割されたディスクリプタ情報に従って、DMAマスタ801から発行されるメモリ804上のアドレスも、アドレス領域を跨らない複数のメモリアクセスへと変換する。
メモリアクセスソート部807は、ディスクリプタ情報格納部806に格納されている、各アドレス領域へのアクセスごとに分割されたディスクリプタ情報を含むディスクリプタ情報内のアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようDMAマスタ801のメモリアクセス順序を並び替える。また、メモリアクセス分割部810にてメモリアクセスが分割されるため、メモリ804から取得するデータもメモリアクセスごとに分割される。
DMAマスタ801がアドレス拡張部802にてメモリアクセスが分割されたことを認知できない構成である場合、アドレス拡張部802にて分割されたデータを再びひとつのデータへと変換する必要がある。そのため、アドレス拡張部802はデータ格納部809を備え、分割されたデータ全てがメモリ804から転送されるのをデータ格納部809にて待ち、分割されたデータ全てがデータ格納部809にて格納された時点で、ひとつのデータとしてDMAマスタ801へと転送する。尚、ディスクリプタ情報判別部806と、アドレス領域制御部808は、図1のディスクリプタ情報判別部106と、アドレス領域制御部108と同等の機能であるため説明を省略する。
図9は、本発明の第3の実施形態に係るメモリ804の持つアドレス空間を示す図である。また、メモリアドレス空間上にディスクリプタ情報およびデータが配置される一例を示す図である。図9において、メモリアドレス空間はアドレス領域(1)〜(n)に分割され、それぞれのアドレス領域の容量は、DMAマスタ801の持つアドレス空間の容量と等しい。ただし、アドレス拡張部802が、DMAマスタ801からメモリ804へ発行するアドレスに対してアドレス空間を選択する信号を付与することで、DMAマスタ801は複数のアドレス領域にアクセス可能となる。
図9において、アドレス領域(1)には、ディスクリプタ情報(1)〜(3)、データ(1)が配置されており、アドレス領域(2)には、データ(3)とデータ(2)−1が配置されており、アドレス領域(3)には、データ(2)−2が配置されている例を示す。ここで、データ(2)−1とデータ(2)−2は、DMAマスタ801がひとつのディスクリプタ情報(2)によって複数のアドレス領域を跨ったデータアクセスをする場合を示しており、データ(2)−1はデータ(2)のうちアドレス領域(2)に配置されているデータであり、データ(2)−2はデータ(2)のうちアドレス領域(3)に配置されているデータであることを示す。
また、ディスクリプタ情報(1)にはデータ(1)のメモリ804上のアドレスが、ディスクリプタ情報(2)にはデータ(2)のメモリ804上のアドレス(転送開始アドレスであるアドレス領域(2)のアドレス)が、ディスクリプタ情報(3)にはデータ(3)のメモリ804上のアドレスが、それぞれ記載されているとする。
図10は、本発明の第3の実施形態に係るディスクリプタ情報を用いたDMAのシーケンスを示す図であり、特に、図9のようにディスクリプタ情報およびデータがメモリ804上に配置される場合において、DMAマスタ801から発行されるアドレス領域(2)〜(3)に跨るデータ(2)のアクセスを、アドレス拡張部802にて各アドレス領域に対するアクセスに分割し、メモリ804へ発行する例である。
図10において、シーケンス1001〜1003は、DMAマスタ801がメモリ804からディスクリプタ情報(1)〜(3)を読み出すため、ディスクリプタ情報が配置されているアドレスに対する読み出し要求をメモリ804に発行するシーケンスを示す。このとき、DMAマスタ801がディスクリプタ情報の取得を待たずして、先行的にディスクリプタ情報(2)〜(3)の読み出し要求をメモリ804に発行可能であるのは、メモリコントローラ803が複数のメモリアクセス要求を格納するバッファを備えている(すなわちメモリアクセス要求のアウトスタンディングに対応している)ためである。
また、このときディスクリプタ情報判別部805は、DMAマスタ801の次のメモリアクセスが、ディスクリプタ情報の配置されているアドレス領域へのアクセスとなることをアドレス領域制御部808へ通知し、アドレス領域制御部808は、DMAマスタ801が発行するアドレスに、ディスクリプタ情報が配置されているアドレス領域情報を付与する。ディスクリプタ情報の配置されているアドレスは、例えばCPUによって、DMAマスタ801、ディスクリプタ情報判別部805、アドレス領域制御部808へ設定されている。
シーケンス1004〜1006は、シーケンス1001〜1003にて発行したアドレスにあるディスクリプタ情報が、メモリ804からDMAマスタ801に返されるシーケンスを示す。このとき、ディスクリプタ情報(1)〜(3)は全てアドレス領域(1)に置かれているため、アドレス拡張部802がDMAマスタ801から発行されるアドレス信号に付与するアドレス領域情報は、アドレス領域(1)を選択している。また、シーケンス1004〜1006において、DMAマスタ801だけでなくアドレス拡張部802もディスクリプタ情報を格納している。
このとき、アドレス拡張部802内のディスクリプタ情報判別部806においてディスクリプタ情報は判別され、ディスクリプタ情報格納部808にて格納される。また、ドレス拡張部802のメモリアクセスソート部807は、ディスクリプタ情報格納部806に格納されているディスクリプタ情報内のアドレス領域情報に基づき、アドレス領域切り換え回数が少なくなるようディスクリプタ情報を並び替える。
また、メモリアクセスソート部807は、DMAマスタ801が発行するアドレスを、並び替えられたディスクリプタ情報の順序に従って発行する。このときディスクリプタ情報格納部806に、ひとつのディスクリプタ情報において複数のアドレス領域に跨るデータ転送が存在する場合、当該ディスクリプタ情報を各アドレス領域へのアクセスに分割する。複数のアドレス空間に跨るデータ転送とは、図9においてはデータ(2)に該当し、アドレス領域(2)へのアクセスとなるデータ(2)−1と、アドレス領域(3)へのアクセスとなるデータ(2)−2へ分割される。
このときメモリアクセスソート部807は、分割されたディスクリプタ情報を含めて、アドレス領域切り換え回数が少なくなるようメモリアクセスを並び替える。ディスクリプタ情報に記載されているアドレス領域は、データ(1)がアドレス領域(1)、データ(2)−1がアドレス領域(2)、データ(2)−2がアドレス領域(3)、データ(3)がアドレス領域(2)、であるため、アドレス領域切り換え回数が少なくなるようメモリアクセス順序を並び替えた場合、データのアクセス順序は、データ(1)、データ(2)−1、データ(3)、データ(2)−2の順となる。
シーケンス1007〜1009は、DMAマスタ801がメモリ804からデータ(1)〜(3)を読み出すため、データが配置されているアドレスに対する読み出し要求をメモリ804に発行するシーケンスを示す。このときDMAマスタ801が発行するアドレスは、DMAマスタ801が読み出したディスクリプタ情報(1)〜(3)に記載されているアドレスから、メモリ804内のアドレス領域の選択に使用するアドレス領域情報を除いた、DMAマスタ801が持つアドレス空間内のアドレスである。
また、アドレス拡張部802内のアドレス領域制御部808は、シーケンス1004〜1006にて読み出したディスクリプタ情報内のアドレス領域情報を、DMAマスタ801が発行するアドレスに付与する。図10では、シーケンス1007におけるデータ(1)のアドレス発行ののち、シーケンス1008におけるデータ(2)のアドレス発行および、シーケンス1009におけるデータ(3)のアドレス発行が行われる。
ここで、アドレス拡張部802は、DMAマスタからシーケンス1008におけるデータ(2)のアドレスを受けた際、メモリアクセス分割部810にて、データ(2)のアドレスを、アドレス領域(2)へのアクセスとなるデータ(2)−1のアドレスと、アドレス領域(3)へのアクセスとなるデータ(2)−2のアドレスへとアクセスを分割する。このとき、データ(1)はアドレス領域(1)に、データ(2)−1およびデータ(3)はアドレス領域(2)に、データ(2)−2はアドレス領域(3)に配置されている。従って、シーケンス1007、シーケンス1008、シーケンス1009は異なるアドレス領域に対するアクセスとなるため、DMAマスタ801がシーケンス1007にて発行したアドレスに対するデータ取得が完了するまでアドレス拡張部802はアドレス領域(1)を選択しており、シーケンス1008はメモリ804に対して発行できない。
従って、データ(2)のアドレスは、アドレス拡張部802で待たされている。シーケンス1010は、シーケンス1007にて発行したアドレスにあるデータ(1)が、メモリ804からDMAマスタ801に返されるシーケンスを示す。ここで、アドレス領域(1)へのデータアクセスが完了したため、アドレス拡張部802はDMAマスタ801の次のメモリアクセスのアドレス領域を、ディスクリプタ情報格納部806に格納されているディスクリプタ情報に基づいて、アドレス領域(1)からアドレス領域(2)へと切り替える。
すると、シーケンス1011において、アドレス拡張部802にて待たせていたデータ(2)−1のアドレスをメモリ804に発行可能となる。データ(2)−1はアドレス領域(2)に配置されており、データ(3)と同一のアドレス領域に配置されている。従って、メモリアクセスソート部807で並び替えられた通り、シーケンス1012は、シーケンス1015に先立ってメモリ804へ発行することが可能となる。シーケンス1013は、シーケンス1011にて発行したアドレスにあるデータ(2)−1が、メモリ804からアドレス拡張部802に返されるシーケンスを示す。
ここで、データ(2)−1は、データ(2)−2がメモリ804から転送されるまでアドレス拡張部802内のデータ格納部809に格納される。シーケンス1014は、シーケンス1012にて発行したアドレスにあるデータ(3)が、メモリ804からDMAマスタ801に返されるシーケンスを示す。ここで、アドレス領域(2)へのデータアクセスが完了したため、アドレス拡張部802はDMAマスタ801の次のメモリアクセスのアドレス領域を、ディスクリプタ情報格納部806に格納されているディスクリプタ情報に基づいて、アドレス領域(2)からアドレス領域(3)へと切り替える。
すると、シーケンス1015において、アドレス拡張部802にて待たせていたデータ(2)−2のアドレスをメモリ804に発行可能となる。シーケンス1016は、シーケンス1015にて発行したアドレスにあるデータ(2)−2が、メモリ804からアドレス拡張部802に返されるシーケンスを示す。ここで、データ格納部809にてデータ(2)−1およびデータ(2)−2が揃ったため、シーケンス1017において、データ(2)としてDMAマスタへ転送される。
図10のシーケンスより、アドレス領域の切り換え回数が少なくなるようデータアクセスの分割およびデータアクセス順序を並び替えたことにより、シーケンス1012がアドレス拡張部802にて待たされることなくメモリ804へ発行可能なため、DMAマスタ801がメモリアクセスする際のレイテンシを少なくすることが可能となる。
また、図10のシーケンスには、データ読み出しのシーケンスのみ示しているが、データ書き込みのシーケンスも同様に、アドレス領域が異なるデータのアドレス発行はアドレス拡張部802にて待たされることとなるため、アドレス領域の切り換え回数が少なくなるようメモリアクセスを並び替える手段は有効である。
以上で説明した第3の実施形態によれば、アドレス領域の切り換え回数が少なくなるよう複数のアドレス領域に跨るデータを含めてメモリアクセス順序を並び替えたことにより、メモリアクセスの転送効率を劣化させることなく、DMAマスタ801が持つアドレス空間以上のメモリアドレス空間にアクセスすることが可能となる。
100 メモリアクセス制御装置、101 DMAマスタ、
102 アドレス拡張部、103 メモリコントローラ、104 メモリ
102 アドレス拡張部、103 メモリコントローラ、104 メモリ
Claims (7)
- DMAマスタと、
前記DMAマスタがアクセス可能なアドレス空間より大きいアドレス空間を有するメモリと、
前記DMAマスタがアクセス可能なアドレス空間から前記メモリのアドレス空間へアドレスを拡張するアドレス拡張部と、を備え、
前記アドレス拡張部は、前記DMAマスタが前記メモリより取得するデータがディスクリプタ情報であるか否かを判別するディスクリプタ情報判別部と、
前記ディスクリプタ情報判別部にて判別されたディスクリプタ情報を格納するディスクリプタ情報格納部と、
前記DMAマスタがメモリアクセスの際に発行するアドレス信号に前記ディスクリプタ情報格納部に格納した前記ディスクリプタ情報内のアドレス領域情報を付与し、前記DMAマスタがアクセスする前記メモリ上のアドレス領域を選択するアドレス領域制御部と、
DMAマスタのメモリアクセスの順番を並び替えるメモリアクセスソート部と、を有し、
前記メモリアクセスソート部は、前記ディスクリプタ情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とするメモリアクセス制御装置。 - 前記メモリアクセスソート部は、前記ディスクリプタ情報格納部に、同一の前記アドレス領域情報が記載されている前記ディスクリプタ情報がある場合、前記同一の前記アドレス領域情報が記載されている前記ディスクリプタ情報が連続するようメモリアクセスの順序を並び替えることを特徴とする請求項1に記載のメモリアクセス制御装置。
- 前記ディスクリプタ情報には、前記DMAマスタが転送するデータの、前記メモリ上のアドレスおよび転送量が含まれていることを特徴とする請求項1又は2に記載のメモリアクセス制御装置。
- 前記アドレス拡張部は、前記DMAマスタが前記ディスクリプタ情報の配置されているアドレスを発行した場合、前記ディスクリプタ情報のアドレス領域情報を格納するディスクリプタアクセス情報格納部をさらに有し、
前記メモリアクセスソート部は、前記ディスクリプタ情報格納部に格納されている前記ディスクリプタ情報と、前記ディスクリプタアクセス情報格納部に格納されている前記アドレス領域情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とする請求項1乃至3の何れか1項に記載のメモリアクセス制御装置。 - 前記アドレス拡張部は、前記DMAマスタがひとつの前記ディスクリプタ情報を用いて複数の前記アドレス領域に跨るメモリアクセスを行う場合、前記メモリアクセスおよび前記ディスクリプタ情報をアドレス領域ごとに分割するメモリアクセス分割部をさらに有し、前記メモリアクセスソート部は、前記ディスクリプタ情報格納部に格納されている前記メモリアクセス分割部にて分割された前記ディスクリプタ情報を含む前記ディスクリプタ情報に応じて、DMAマスタのメモリアクセスの順番を並び替えることを特徴とする請求項1乃至4の何れか1項に記載のメモリアクセス制御装置。
- 前記DMAマスタは、前記メモリアクセスの際に発行するアドレス信号に識別番号を付与するアドレス識別番号付与部を有し、
前記メモリは、前記DMAマスタから発行されたアドレス情報に付与されている識別番号を、前記DMAマスタへ転送するデータへ付与するデータ識別番号付与部を有し、
前記DMAマスタは、アドレス識別番号とデータ識別番号によって、前記アドレス情報と前記データの順序が関連付けられることを特徴とする請求項1乃至5の何れか1項に記載のメモリアクセス制御装置。 - 前記ディスクリプタ情報判別部は、前記DMAマスタから発行されるアドレス信号が前記ディスクリプタ情報を示すアドレスであった場合、前記メモリアクセスによって前記DMAマスタが取得するデータが、前記ディスクリプタ情報であると判別することを特徴とする請求項1乃至6の何れか1項に記載のメモリアクセス制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018162491A JP2020035264A (ja) | 2018-08-31 | 2018-08-31 | メモリアクセス制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018162491A JP2020035264A (ja) | 2018-08-31 | 2018-08-31 | メモリアクセス制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020035264A true JP2020035264A (ja) | 2020-03-05 |
Family
ID=69668236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018162491A Pending JP2020035264A (ja) | 2018-08-31 | 2018-08-31 | メモリアクセス制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020035264A (ja) |
-
2018
- 2018-08-31 JP JP2018162491A patent/JP2020035264A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4835734A (en) | Address translation apparatus | |
US9223712B2 (en) | Data cache method, device, and system in a multi-node system | |
JP5365336B2 (ja) | メモリ制御装置およびメモリ制御方法 | |
US8868835B2 (en) | Cache control apparatus, and cache control method | |
US20060218315A1 (en) | Memory access control circuit | |
JP6880402B2 (ja) | メモリアクセス制御装置及びその制御方法 | |
JP2009518753A (ja) | メモリアクセス要求のアービトレーション | |
US6377268B1 (en) | Programmable graphics memory apparatus | |
US7484070B1 (en) | Selective memory block remapping | |
US6625673B1 (en) | Method for assigning addresses to input/output devices | |
CN114816240A (zh) | 一种数据写入方法及一种数据读取方法 | |
JP4855864B2 (ja) | ダイレクトメモリアクセスコントローラ | |
US6321309B1 (en) | Memory arbitration scheme with circular sequence register | |
US8966159B2 (en) | Flash storage device and data writing method thereof | |
JP2020035264A (ja) | メモリアクセス制御装置 | |
CN107797757B (zh) | 影像处理系统中的快取存储器管理方法及装置 | |
JP2011076497A (ja) | 情報処理装置、半導体記憶装置、及びプログラム | |
US10997087B2 (en) | Direct memory access | |
JP3789132B2 (ja) | メモリシステムのデータ項目の書込みと読出しの方法及び装置 | |
US6414688B1 (en) | Programmable graphics memory method | |
US6742077B1 (en) | System for accessing a memory comprising interleaved memory modules having different capacities | |
US11609861B1 (en) | Method and apparatus for efficient address decoding and address usage reduction | |
JP2000284996A (ja) | メモリ管理装置及びメモリ管理方法 | |
US20240126443A1 (en) | Memory controller including arbiter, memory system and operation method of the memory controller | |
US20080229030A1 (en) | Efficient Use of Memory Ports in Microcomputer Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20191125 |