JP5254710B2 - データ転送装置、データ転送方法およびプロセッサ - Google Patents

データ転送装置、データ転送方法およびプロセッサ Download PDF

Info

Publication number
JP5254710B2
JP5254710B2 JP2008223698A JP2008223698A JP5254710B2 JP 5254710 B2 JP5254710 B2 JP 5254710B2 JP 2008223698 A JP2008223698 A JP 2008223698A JP 2008223698 A JP2008223698 A JP 2008223698A JP 5254710 B2 JP5254710 B2 JP 5254710B2
Authority
JP
Japan
Prior art keywords
transfer
user
memory space
user program
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.)
Active
Application number
JP2008223698A
Other languages
English (en)
Other versions
JP2010061220A (ja
Inventor
祐二 河村
剛 山崎
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
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 Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2008223698A priority Critical patent/JP5254710B2/ja
Priority to US12/550,936 priority patent/US8719542B2/en
Publication of JP2010061220A publication Critical patent/JP2010061220A/ja
Application granted granted Critical
Publication of JP5254710B2 publication Critical patent/JP5254710B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

この発明は、データ処理技術に関し、特に、データ転送技術に関する。
ゲーム機を始めとするマルチメディア端末では、画像データや音声データを頻繁にメモリに読み書きする必要がある。そこで、CPU(Central Processing Unit)の負荷を軽減するため、メモリと外部の入出力装置との間のデータ転送はDMA(Direct Memory Access)転送によって行われることが多い。DMA転送は、CPUを介することなく、メモリと入出力装置間でデータの受け渡しを高速に実行する方法である。
DMA転送は、CPUがその必要性を判断し、DMAコントローラに指示を出すことにより実行される。すなわち、このCPUにより実行されるユーザプログラム、例えばマルチメディア端末のユーザにより作成されたプログラムによってDMA転送を直接的に制御することはできなかった。また、文字列コピーのような一般的なデータ転送については、演算回路等を含むCPUコアがユーザプログラムの要求に応じて主体的に実行するため、CPUコアに比較的大きな負荷をかけることがあった。
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、ユーザプログラムの制御に基づくデータ転送を、CPUコアの処理とは非同期な処理として実現する技術を提供することである。
上記課題を解決するために、本発明のある態様のデータ転送装置は、特定の記憶領域のデータを別の記憶領域へ転送する装置であって、CPUコアにおいて実行されるユーザプログラムからの要求であって、ユーザプログラムに対して割り当てられたメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求を、メモリ空間の所定領域を介して、CPUコアの処理とは非同期に取得する取得部と、転送要求において指定された仮想アドレスに対応する物理アドレスを特定する特定部と、特定部において特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記する転記部と、を備える。
本発明の別の態様は、データ転送方法である。この方法は、特定の記憶領域のデータを別の記憶領域へ転送する方法であって、CPUコアにおいて実行されるユーザプログラムからの要求であって、ユーザプログラムに対して割り当てられたメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求を、メモリ空間の所定領域を介して、CPUコアの処理とは非同期に取得するステップと、転送要求において指定された仮想アドレスに対応する物理アドレスを特定するステップと、特定するステップにおいて特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記するステップと、を備える。
本発明のさらに別の態様は、プロセッサである。このプロセッサは、ユーザプログラムを実行するCPUコアと、特定の記憶領域のデータを別の記憶領域へ転送するデータ転送装置と、を備える。CPUコアは、ユーザプログラムからの要求であって、ユーザプログラムに対して割り当てられたメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求を、メモリ空間の所定領域に記憶させ、データ転送装置は、メモリ空間の所定領域を参照して、CPUコアの処理とは非同期に転送要求を取得する取得部と、転送要求において指定された仮想アドレスに対応する物理アドレスを特定する特定部と、特定部において特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記する転記部とを有する。
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、ユーザプログラムの制御に基づくデータ転送を、CPUコアの処理とは非同期な処理として実現できる。
図1は、本発明の実施の形態である情報処理装置1000のハードウェア構成を示す。情報処理装置1000は、プロセッサ100とメインメモリ300とを備え、これらは外部バス200を介して相互に接続される。プロセッサ100は、情報処理装置1000の全体を制御するとともに、外部記憶装置や記録媒体からメインメモリ300にロードされたプログラムにしたがって、各種の処理を実行する。メインメモリ300には、プロセッサ100が各種の処理を実行する上で必要となるデータなども適宜記憶される。なお、情報処理装置1000には、情報処理装置1000を効率よく利用するための機能および環境を提供して当該装置の全体を統括的に制御するOS(Operating System)がインストールされ、実行されている。
プロセッサ100は、マルチコアプロセッサであり、2つのCPUコア10と、キャッシュメモリ20と、メモリインタフェース40と、データ転送装置50とを有する。これらの構成要素は、各構成要素から他の構成要素に送出されるデータのコヒーレンスを維持可能な内部バス30を介して相互に接続される。プロセッサ100では、これらの構成要素が1チップ上に一体化して形成されている。また、プロセッサ100に集積されるCPUコア10、キャッシュメモリ20、データ転送装置50の個数に制限はなく、マルチコアプロセッサの性能要件等に応じて適宜決定されればよい。
CPUコア10は、ユーザプログラムに記載された命令を実行するための演算装置や各種レジスタを含む。キャッシュメモリ20は、メインメモリ300に記憶されたデータの一部を、公知のキャッシュアルゴリズムにしたがって一時的にキャッシュし、CPUコア10に対して高速のデータアクセスを提供する。メモリインタフェース40は、プロセッサ100の各構成要素がメインメモリ300にアクセスするためのインタフェース機能を提供する。
CPUコア10は、必要とするデータがキャッシュメモリ20に存在するときは、そのデータをキャッシュメモリ20から取得する。必要とするデータがキャッシュメモリ20に存在しなければ、メモリインタフェース40を介して、そのデータをメインメモリ300から取得する。
データ転送装置50は、CPUコア10で実行されるユーザプログラムからの要求(以下、適宜「転送要求」ともいう)に応じて、CPUコア10の処理とは非同期に、転送要求に応じたデータ転送を実行する。本実施の形態のデータ転送装置50は、メインメモリ300に記憶されたデータのうち、転送要求において指定されたデータをキャッシュメモリ20に転送する。
図2は、転送要求のデータ構造を示す。図2(a)は基本的な転送要求(以下、適宜「基本転送要求」ともいう)のデータ構造を示している。基本転送要求では、ユーザプログラムに対して割り当てられたメモリ空間(以下、「ユーザメモリ空間」ともいう)における転送元および転送先の先頭位置を示す仮想アドレス(以下、適宜「転送元仮想アドレス」、「転送先仮想アドレス」ともいう)が指定される。さらに、転送元仮想アドレスの位置から転送すべきデータ量を示す「データサイズ」も指定される。
本実施の形態における「仮想アドレス」は、OSにより提供される仮想記憶上の特定位置を指定する情報である。なお、仮想記憶は、情報処理装置1000内外のメモリ等の記憶手段の物理的な記憶領域の一部同士を論理的に結合させ、ユーザプログラム等には連続的な記憶領域として見せるための、記憶領域管理手段である。
図2(b)は、基本転送要求を拡張した転送要求(以下、適宜「拡張転送要求」ともいう)の構造を示している。拡張転送要求では、データ転送装置50において転送要求を識別するための付加情報(以下、適宜「タグ」ともいう)が基本転送要求のデータ構造に追加して指定される。以下、単に「転送要求」と呼ぶ場合には、基本転送要求および拡張転送要求の両方が含まれる。
図3は、図1の情報処理装置1000の論理的な機能構成を示す。同図において実線で示す各ブロックは、ハードウェア的には、素子や電子回路、機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
CPUコア10は、CPUスレッド12を有する。CPUスレッド12は、第1のユーザプログラム14および第2のユーザプログラム16の実行主体であり、典型的にはハードウェアスレッドである。1つのCPUコア10上で複数のCPUスレッド12が生成されてもよい。CPUスレッド12は、ユーザプログラムの実行にあたり、このユーザプログラムに割り当てられたユーザメモリ空間の後述するリクエストキューに対して、このユーザプログラムから発行された転送要求をエンキューする。また、このユーザプログラムに割り当てられたユーザメモリ空間の後述するリプライキューから、データ転送の完了を示す通知をデキューする。
図3の第1のユーザプログラム14および第2のユーザプログラム16は、CPUスレッド12における実行単位を示しており、例えばプロセスやユーザスレッドである。一のユーザプログラムに関する複数のユーザスレッドが時分割に実行されてもよい、すなわちマルチスレッドで実行されてもよいのはもちろんである。
キャッシュメモリ20は、その記憶領域の一部に専用記憶部22を有する。専用記憶部22は、データ転送装置50以外のアクセスが制限された記憶領域である。ここでは、専用記憶部22に対して、CPUスレッド12はアクセスできず、後述するデータ転送スレッド52にのみアクセスが許容されることとする。
メインメモリ300は、カーネルメモリ空間310と、第1のユーザメモリ空間320と、第2のユーザメモリ空間330とを有する。カーネルメモリ空間310は、OSに割り当てられたメモリ空間である。第1のユーザメモリ空間320および第2のユーザメモリ空間330のそれぞれは、第1のユーザプログラム14および第2のユーザプログラム16のそれぞれに対して割り当てられたメモリ空間である。以下、単にユーザメモリ空間と呼ぶ場合、第1のユーザメモリ空間320および第2のユーザメモリ空間330の両方が含まれる。
第1のユーザメモリ空間320は、リクエストキュー322およびリプライキュー324を含む。これらは、FIFO(First-In First-Out)型の記憶領域である。リクエストキュー322には、第1のユーザプログラム14からの転送要求がCPUスレッド12によってエンキューされる。リクエストキュー322は、後述するデータ転送スレッド52によってデキューされるまで、その転送要求を保持する。リプライキュー324には、転送要求に応じて実行されたデータ転送の完了を示す通知(以下、適宜「転送済通知」ともいう)がデータ転送スレッド52によってエンキューされる。リプライキュー324は、CPUスレッド12によってデキューされるまで、その転送済通知を保持する。
なお、第1のユーザプログラム14がマルチスレッドで実行されるときには、第1のユーザメモリ空間320におけるリクエストキューおよびリプライキューの組が複数存在してもよい。また、第1のユーザプログラム14の各スレッドと、リクエストキューおよびリプライキューの各組は、1対1で対応づけられてもよく、N対1で対応づけられてもよい。
第2のユーザメモリ空間330もまた、リクエストキュー332およびリプライキュー334を含み、これらはそれぞれリクエストキュー322およびリプライキュー324と同様である。以下、単に「リクエストキュー」と呼ぶ場合、リクエストキュー322およびリクエストキュー332が含まれ、単に「リプライキュー」と呼ぶ場合、リプライキュー324およびリプライキュー334が含まれる。また、単に「キュー」と呼ぶ場合には、リクエストキューおよびリプライキューが含まれる。
カーネルメモリ空間310は、現在情報記憶部312およびキュー情報記憶部314を含む。現在情報記憶部312には、CPUスレッド12が現在実行中のユーザプログラムに対応づけられたキューのアドレスが保持される。キュー情報記憶部314には、CPUスレッド12にて実行される1以上のユーザプログラムのそれぞれに対応づけられたキューのアドレスが保持される。CPUコア10は、ユーザプログラムの実行に際して、キュー情報記憶部314を参照して、そのユーザプログラムに対応づけられたキューのアドレスを特定し、そのアドレスを現在情報記憶部312に記憶させる。
データ転送装置50は、データ転送スレッド52を有する。データ転送スレッド52は、データ転送処理の実行主体であり、典型的にはハードウェアスレッドである。データ転送スレッド52は、CPUスレッド12と対応づけて生成される。すなわち、CPUスレッド12が複数存在するときには、それぞれのCPUスレッド12に対応づけられた複数のデータ転送スレッド52が生成される。データ転送スレッド52は、取得部54と、特定部56と、転記部58と、通知部60とを含む。
取得部54は、現在情報記憶部312を参照して、CPUスレッド12が現在実行中のユーザプログラムに対応づけられたリクエストキューのアドレスを取得し、そのリクエストキューを参照して転送要求を取得する。
そのリクエストキューに転送要求が存在しないとき、取得部54は、キュー情報記憶部314を参照して、CPUスレッド12にて実行される1以上のユーザプログラムのそれぞれに対応づけられたキューのアドレスを取得する。続いて、それぞれのリクエストキューに対する参照を時分割で実行して転送要求を取得する。すなわち、取得部54は、CPUスレッド12が現在実行中のユーザプログラムからの転送要求を優先して取得し、そのユーザプログラムからの転送要求を取得しないときに、他のユーザプログラムからの転送要求を取得する。
特定部56は、ユーザメモリ空間における仮想アドレスをメインメモリ300における物理アドレスに変換するためのアドレス変換テーブル、例えばTLB(Translation Lookaside Buffer)を保持する。特定部56は、このアドレス変換テーブルを参照して、転送要求において転送元および転送先を指定した仮想アドレスから物理アドレスを特定する。以下、転送元仮想アドレスに対応する物理アドレスと、転送先仮想アドレスに対応する物理アドレスとを、それぞれ、「転送元物理アドレス」および「転送先物理アドレス」と適宜呼ぶこととする。
転記部58は、メインメモリ300における転送元物理アドレスから転送要求にて指定されたデータサイズ分のデータを転記対象の原本データとして特定し、転送先物理アドレスに対応づけられた記憶領域に原本データを転記する。本実施の形態では、キャッシュメモリ20の専用記憶部22にアクセスして、転送先物理アドレスに対応づけられた記憶領域に原本データを転記する。変形例としては、転送先物理アドレスが示すメインメモリ300の記憶領域そのものに原本データを転記してもよい。
転記部58は、原本データをキャッシュメモリ20の特定領域にキャッシュインさせるにあたり、その特定領域に既に記憶されたデータを、その特定領域に対応するメインメモリ300の記憶領域へ待避、すなわちキャッシュアウトさせてもよい。これにより、キャッシュメモリ20とメインメモリ300とに記憶されるデータの整合性を維持できる。特に、キャッシュメモリ20とメインメモリ300とのデータ更新が非同期であるとき、例えばデータ更新方式がライトバック方式であるときには、事前にキャッシュアウトさせることが好ましい。
転送要求が拡張転送要求であり、そのタグ情報として、転記部58において一の拡張転送要求を他の拡張転送要求と対応づけるための識別情報である転記IDが含まれる場合の処理を説明する。このとき、転記部58は同一の転記IDが含まれる複数の拡張転送要求を同一グループの転送要求として取り扱う。具体的には、これらの拡張転送要求の要求順序、すなわちリクエストキューにエンキューされた順序を維持して、これらの拡張転送要求を順次処理する。
例えば、取得部54がこれらの拡張転送要求を同時に取得するときでも、転記部58はこれらの拡張転送要求のそれぞれをリクエストキューに並んだ順序にしたがって図示しない転記待ちキューにエンキューしておき、転記処理の実行時に順次デキューしてもよい。また、一の拡張転送要求に関する処理がメインメモリ300の入出力待ちとなったときでも、その拡張転送要求に関する処理が完了するまでは他の拡張転送要求に関する処理を実行しない。これにより、要求順序にしたがった順次処理が実現される。
通知部60は、転記部58により原本データが転記されたとき、転送要求の処理が終了したことをユーザプログラムに対して通知するための転送済通知を、そのユーザプログラムに対して割り当てられたユーザメモリ空間のリプライキューにエンキューする。例えば、リクエストキュー322からデキューされた転送要求に応じたデータ転送が終了したときには、そのデータ転送に関する転送済通知をリプライキュー324にエンキューする。
転送要求が拡張転送要求であり、そのタグ情報として、通知部60において一の拡張転送要求を他の拡張転送要求と対応づけるための識別情報である通知IDが含まれる場合の処理を説明する。このとき、通知部60は同一の通知IDが含まれる複数の拡張転送要求を同一グループの転送要求として取り扱う。具体的には、これらの拡張転送要求のそれぞれが終了したときに、リクエストキューおよび図示しない転記待ちキューを参照して、その通知IDを有する拡張転送要求が残存するか否かを検出する。通知部60は、通知IDが含まれる拡張転送要求の全てが処理されたと判定したとき、その通知IDに関する処理が終了したことを示す通知(以下、適宜「グループ処理済通知」ともいう)をリプライキューにエンキューする。
通知部60は、同一の通知IDを含む拡張転送要求それぞれに対する個別の転送済通知に代えて、グループ処理済通知だけをエンキューしてもよい。または、個別の転送済通知に加えて、すなわち最後の転送済通知の後にグループ処理済通知をさらにエンキューしてもよい。本実施の形態では、前者の態様であることとする。
以上の構成による動作を以下説明する。
図4は、図1の情報処理装置1000の動作を示すフローチャートである。ユーザプログラムを実行するCPUスレッド12は、ユーザプログラムからの転送要求をユーザメモリ空間のリクエストキューにエンキューする(S10)。データ転送スレッド52の取得部54は、現在情報記憶部312およびキュー情報記憶部314を参照してキューのアドレスを特定する。取得部54は、CPUスレッド12において処理中のユーザプログラムに対応づけられたリクエストキューを優先して参照し、また、他のリクエストキューも時分割で参照し、各リクエストキューに保持された転送要求をデキューする(S12)。
特定部56は、転送要求で指定された転送元仮想アドレスおよび転送先仮想アドレスに対応する転送元物理アドレスおよび転送先物理アドレスを特定する(S14)。転送要求に転記IDの設定がないとき(S16のN)、転記部58は、転送元物理アドレスが示すメインメモリ300の原本データを、転送先物理アドレスに対応づけられたキャッシュメモリ20の専用記憶部22に転記する(S18)。転送要求に転記IDが設定されているとき(S16のY)、転記部58は、その転記IDが設定された複数の転送要求について、各転送要求の要求順序にしたがって原本データを転記する(S20)。
転送要求に通知IDの設定がないとき(S22のN)、通知部60は、ユーザメモリ空間のリプライキューに転送済通知をエンキューする(S24)。CPUスレッド12は、そのリプライキューから転送済通知をデキューし(S26)、ユーザプログラムにデータ転送の終了が通知される。
通知部60は、転送要求に通知IDが設定されており(S22のY)、かつ、その通知IDで識別されるグループの転送要求が全て処理されたことを検出したとき(S28のY)、リプライキューにグループ処理済通知をエンキューする(S30)。CPUスレッド12は、そのリプライキューからグループ処理済通知をデキューし(S32)、その通知IDが設定された転送要求に関する処理の終了がユーザプログラムに通知される。その通知IDで識別されるグループにおいて、いずれかの転送要求が未処理であるとき(S28のN)、S12の処理に戻る。
プロセッサ100によれば、ユーザプログラムの指示に基づくデータ転送を、そのユーザプログラムを実行するCPUコア10とは非同期に実行できる。CPUコア10は、リクエストキューに転送要求をエンキューすれば、要求したデータ転送の終了を待つことなく、他の処理を実行できる。これにより、プロセッサ100のスループットを向上できる。言い換えれば、ユーザプログラムは、必要なデータ転送をCPUコアに負荷をかけることなく実行させることができる。
また、転送要求をエンキューおよびデキューする際にOSが介在しないため、CPUコア10とデータ転送装置50との間で転送要求を高速に受け渡しできる。また、一のユーザプログラムからの転送要求はそのユーザプログラムのユーザメモリ空間に記憶される。これにより、不正な転送要求があっても、その影響はその転送要求を実行したユーザプログラムのユーザメモリ空間に限定され、その影響が他に伝播することを防止できる。また、仮想アドレスから物理アドレスへの変換処理もデータ転送装置50で実行されるため、CPUコア10の処理負荷を軽減できる。
また、プロセッサ100によれば、ユーザプログラムからの指示に基づき、メインメモリ300の原本データをキャッシュメモリ20の専用記憶部22に転送できる。これにより、CPUコア10はユーザプログラムの処理において必要なデータに高速にアクセスできるようになる。言い換えれば、ユーザプログラムの開発者は、ユーザプログラムを介して、必要なデータのキャッシュインを制御でき、ユーザプログラムの実行速度の高速化を図ることができる。
また、転記部58によりキャッシュインされたデータが専用記憶部22に保持されることにより、キャッシュメモリ20にアクセスする他の主体からの影響を排除できる。例えば、CPUコア10の別の処理においてストリーミングデータが取得されるときでも、その影響によってユーザプログラムが必要とするデータがキャッシュアウトしてしまうこと、言い換えればキャッシュポリューションを防止できる。
さらに、データ転送装置50では、CPUコア10により実行中のユーザプログラムからの転送要求が優先して処理される。これにより、実行中のユーザプログラムが必要とするデータが優先してキャッシュメモリ20に転送されるため、実行中のユーザプログラムの処理速度を優先して向上できる。一方で、実行中のユーザプログラムからの要求がないときには、時分割にリクエストキューが参照されて要求処理が取得されるため、CPUコア10により実行中でないユーザプログラムからのデータ転送も適宜実行される。
さらにまた、プロセッサ100によれば、データ転送装置50においてキャッシュメモリ20へのデータ転送が終了したことを、ユーザプログラムにおいて検出できる。したがって、ユーザプログラムの開発者は、転送済通知やグループ処理済通知を検出した後は、必要なデータがキャッシュメモリ20に存在すること、言い換えればキャッシュアウト・キャッシュインのコストが不要であることを前提としてプログラムコードを記述できる。
例えば、あるデータに対する繰り返しアクセスが必要な処理に先立って、そのデータを指定する転送要求を実行し、転送済通知を待つ間はそのデータを必要としない別の処理を実行する。そして、転送済通知検出後にそのデータを必要とする処理を実行するようにコードを記述することで、キャッシュメモリ20を最大限に活用した、高速に実行されるユーザプログラムを作成できる。
さらにまた、転送要求に転記IDおよび/または通知IDを付加することにより、転記部58および/または通知部60の動作を制御できる。転記IDを付加した複数の転送要求を発行したユーザプログラムでは、これら複数の転送要求のそれぞれが要求順序にしたがって実行されることを前提とする処理を実行できる。例えば、ユーザプログラムからアクセスすべきデータの順序が規定されているとき、各データへのアクセス速度を順次向上できる。また、通知IDを付加した複数の転送要求を発行したユーザプログラムでは、グループ処理済通知を受信したとき、その通知IDに関連づけた複数のデータ転送が全て完了したことを前提とする処理を実行できる。例えば、ユーザプログラムから同時にアクセスすべき複数のデータがあるとき、ユーザアドレス空間に分散したこれらのデータをキャッシュインさせ、各データに対するアクセス速度を向上できる。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
変形例を説明する。上記の実施の形態では、データ転送スレッド52の転記部58は、メインメモリ300の転送先物理アドレスに基づいてキャッシュメモリ20の記憶領域にアクセスした。変形例として、キャッシュメモリ20の記憶領域に仮想アドレスでアクセス可能なときには、転記部58は転送先仮想アドレスに基づいてキャッシュメモリ20の記憶領域にアクセスしてもよい。この場合、特定部56において転送先仮想アドレスに対応する転送先物理アドレスを特定する処理は不要となる。
別の変形例を説明する。転送要求には、データ転送の内容を指定するための転送種別がさらに含まれてもよい。様々な処理種別を指定できることで、ユーザプログラムによるデータ転送制御の幅が広がる。言い換えれば、ユーザプログラムの開発者は様々な処理種別を使い分け、また組み合わせることで、高い実行速度を実現するユーザプログラムや、キャッシュメモリの内容を柔軟に変更するユーザプログラムを作成できる。
以下、転送種別の例を示す。
転送種別「1」:
メインメモリ300内のデータ転送であって、転送元仮想アドレスに基づいて特定される記憶領域から転送先仮想アドレスに基づいて特定される記憶領域へのデータ転送処理が指定される。転送要求では、転送元仮想アドレスおよび転送先仮想アドレスが少なくとも指定される。なお、実施の形態と同様にデータサイズがさらに指定されてもよい。以下の転送種別についても同様である。
転送種別「2」:
実施の形態で説明した処理、すなわち転送元と転送先の両方が指定されたキャッシュイン処理が指定される。転送要求では、転送元仮想アドレスおよび転送先仮想アドレスが少なくとも指定される。
転送種別「3」:
メインメモリ300の特定の記憶領域からその記憶領域に対応づけられたキャッシュメモリ20の記憶領域に対するデータ転送、すなわちあらかじめ対応づけられた記憶領域間でのキャッシュイン処理が指定される。転送要求では、その特定の記憶領域を指定するための仮想アドレスが少なくとも指定される。データ転送装置50の特定部56は、その仮想アドレスに対応する物理アドレスを特定する。転記部58は、その物理アドレスが示すメインメモリ300の記憶領域からその仮想アドレスまたは物理アドレスに対応づけられたキャッシュメモリ20の記憶領域へデータを転記する。
転送種別「4」:
処理種別「2」と反対の処理、すなわち転送元と転送先の両方が指定されたキャッシュアウト処理が指定される。転送要求では、転送元仮想アドレスおよび転送先仮想アドレスが少なくとも指定される。データ転送装置50の特定部56は、その仮想アドレスに対応する物理アドレスを特定する。転記部58は、転送元仮想アドレスまたは転送元物理アドレスに対応づけられたキャッシュメモリ20の記憶領域から転送先物理アドレスが示すメインメモリ300の記憶領域へデータを転記する。
転送種別「5」:
処理種別「3」と反対の処理、すなわちあらかじめ対応づけられた記憶領域間でのキャッシュアウト処理が指定される。転送要求では、特定の記憶領域を指定するための仮想アドレスが少なくとも指定される。データ転送装置50の特定部56は、その仮想アドレスに対応する物理アドレスを特定する。転記部58は、その仮想アドレスまたは物理アドレスに対応づけられたキャッシュメモリ20の記憶領域からその物理アドレスが示すメインメモリ300の記憶領域へデータを転記する。
キャッシュメモリ20の記憶容量はメインメモリ300より小さいため、キャッシュメモリ20の一の記憶領域に対してメインメモリ300の複数の記憶領域が対応づけられる。したがって、キャッシュメモリ20とメインメモリ300との整合性維持のために、転記部58によるキャッシュイン処理に先立って、キャッシュアウト処理が必要な場合がある。その結果、データ転送までの時間が比較的長くなることがある。処理種別「2」、[3]を要求する前に、処理種別「4」[5]を要求することで、処理種別「2」、[3]に伴うキャッシュアウト処理は不要になる。この結果、処理種別「2」[3]に基づくキャッシュイン処理の完了に要する時間が短縮される。例えば、処理種別[4]の転送元仮想アドレス、処理種別[5]の仮想アドレスが、後続の処理種別[2]の転送先仮想アドレス、処理種別[3]の仮想アドレスとして指定されてもよい。
さらに別の変形例を説明する。本発明の技術思想は、ハードディスクやUSB(Universal Serial Bus)メモリ等の外部記憶装置とメインメモリ300間、外部記憶装置とキャッシュメモリ20間のデータ転送においても適用可能である。すなわち、このようなデータ転送についても、ユーザプログラムの制御に基づいて、CPUコアの処理とは非同期に実行できる。
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
本発明の実施の形態である情報処理装置のハードウェア構成を示す図である。 転送要求のデータ構造を示す図である。 図1の情報処理装置の論理的な機能構成を示す図である。 図1の情報処理装置の動作を示すフローチャートである。
符号の説明
10 CPUコア、 12 CPUスレッド、 14 第1のユーザプログラム、 16 第2のユーザプログラム、 20 キャッシュメモリ、 22 専用記憶部、 30 内部バス、 40 メモリインタフェース、 50 データ転送装置、 52 データ転送スレッド、 54 取得部、 56 特定部、 58 転記部、 60 通知部、 100 プロセッサ、 200 外部バス、 300 メインメモリ、 310 カーネルメモリ空間、 312 現在情報記憶部、 314 キュー情報記憶部、 320 第1のユーザメモリ空間、 322 リクエストキュー、 324 リプライキュー、 330 第2のユーザメモリ空間、 332 リクエストキュー、 334 リプライキュー、 1000 情報処理装置。

Claims (8)

  1. 特定の記憶領域のデータを別の記憶領域へ転送する装置であって、
    CPUコアにおいて実行されるユーザプログラムからの要求であって、前記ユーザプログラムに対して割り当てられたユーザメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求を取得する取得部と、
    前記取得部により取得された転送要求において指定された仮想アドレスに対応する物理アドレスを特定する特定部と、
    前記特定部により特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記する転記部と、
    を備え、
    前記CPUコアは、あるユーザプログラムの実行に際し、そのユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を示すアドレスをカーネルメモリ空間に格納しつつ、複数のユーザプログラムが要求する複数の転送要求を、前記複数のユーザプログラムに対して割り当てられた複数の異なるユーザメモリ空間のうち、要求元のユーザプログラムに対して割り当てられたユーザメモリ空間の前記所定領域に格納し、格納した転送要求によるデータ転送の終了を待つことなく、他の処理を実行するものであり、
    前記取得部は、
    前記カーネルメモリ空間に格納されたアドレスにしたがって、前記複数のユーザプログラムのうち前記CPUコアで現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を参照し、その領域に転送要求が格納されている場合に、その転送要求を他のユーザプログラムからの転送要求より優先して、前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域から取得する一方、
    前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域に転送要求が格納されていない場合に、前記他のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域の参照を時分割で実行し、前記他のユーザプログラムからの転送要求を取得することを特徴とするデータ転送装置。
  2. 前記転記部は、キャッシュメモリにおける記憶領域であって、前記転送先の仮想アドレスまたは物理アドレスに対応づけられた記憶領域に前記原本データを転記することを特徴とする請求項1に記載のデータ転送装置。
  3. 前記転記部は、前記キャッシュメモリにおける記憶領域のうち当該データ転送装置以外からのアクセスが制限される記憶領域であって、前記転送先の仮想アドレスまたは物理アドレスに対応づけられた記憶領域に前記原本データを転記することを特徴とする請求項2に記載のデータ転送装置。
  4. 前記転送要求には、その転送要求を他の転送要求と対応づけて前記転記部に処理させるための転記IDが含まれ、
    前記転記部は、特定の転記IDを含む複数の転送要求について、各転送要求をその要求順序にしたがって順次処理することを特徴とする請求項1から3のいずれかに記載のデータ転送装置。
  5. 前記転記部により前記原本データが転記されたとき、前記転送要求の処理が終了したことを前記ユーザプログラムに対して通知するための転送済通知を、前記ユーザプログラムを実行するCPUコアにおいて非同期に取得させるために、前記ユーザメモリ空間の所定領域に記憶させる通知部をさらに備えることを特徴とする請求項1から4のいずれかに記載のデータ転送装置。
  6. 前記転送要求には、その転送要求を他の転送要求と対応づけて前記通知部に処理させるための通知IDが含まれ、
    前記通知部は、特定の通知IDを含む複数の転送要求が前記転記部において全て処理されたとき、前記通知IDに関する処理が終了したことを示す通知を前記転送済通知として前記ユーザメモリ空間の所定領域に記憶させることを特徴とする請求項5に記載のデータ転送装置。
  7. 特定の記憶領域のデータを別の記憶領域へ転送する装置が実行する方法であって、
    CPUコアにおいて実行されるユーザプログラムからの要求であって、前記ユーザプログラムに対して割り当てられたユーザメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求を取得するステップと、
    前記取得するステップで取得された転送要求において指定された仮想アドレスに対応する物理アドレスを特定するステップと、
    前記特定するステップで特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記するステップと、
    を備え、
    前記CPUコアは、あるユーザプログラムの実行に際し、そのユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を示すアドレスをカーネルメモリ空間に格納しつつ、複数のユーザプログラムが要求する複数の転送要求を、前記複数のユーザプログラムに対して割り当てられた複数の異なるユーザメモリ空間のうち、要求元のユーザプログラムに対して割り当てられたユーザメモリ空間の前記所定領域に格納し、格納した転送要求によるデータ転送の終了を待つことなく、他の処理を実行するものであり、
    前記取得するステップは、
    前記カーネルメモリ空間に格納されたアドレスにしたがって、前記複数のユーザプログラムのうち前記CPUコアで現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を参照し、その領域に転送要求が格納されている場合に、その転送要求を他のユーザプログラムからの転送要求より優先して、前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域から取得する一方、
    前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域に転送要求が格納されていない場合に、前記他のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域の参照を時分割で実行し、前記他のユーザプログラムからの転送要求を取得することを特徴とするデータ転送方法。
  8. ユーザプログラムを実行するCPUコアと、
    特定の記憶領域のデータを別の記憶領域へ転送するデータ転送装置と、
    を備え、
    前記CPUコアは、前記ユーザプログラムの実行に際し、前記ユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を示すアドレスをカーネルメモリ空間に格納しつつ、前記ユーザプログラムからの要求であって、前記ユーザプログラムに対して割り当てられたユーザメモリ空間における転送元および転送先の仮想アドレスを少なくとも指定する転送要求について、複数のユーザプログラムが要求する複数の転送要求を、前記複数のユーザプログラムに対して割り当てられた複数の異なるユーザメモリ空間のうち、要求元のユーザプログラムに対して割り当てられたユーザメモリ空間の前記所定領域に格納し、格納した転送要求によるデータ転送の終了を待つことなく、他の処理を実行し、
    前記データ転送装置は、
    前記カーネルメモリ空間に格納されたアドレスにしたがって、前記複数のユーザプログラムのうち前記CPUコアで現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域を参照し、その領域に転送要求が格納されている場合に、その転送要求を他のユーザプログラムからの転送要求より優先して、前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域から取得する一方、前記現在実行中のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域に転送要求が格納されていない場合に、前記他のユーザプログラムに対して割り当てられたユーザメモリ空間の所定領域の参照を時分割で実行し、前記他のユーザプログラムからの転送要求を取得する取得部と、
    前記取得部により取得された転送要求において指定された仮想アドレスに対応する物理アドレスを特定する特定部と、
    前記特定部により特定された転送元の物理アドレスが示す記憶領域の原本データを、転送先の仮想アドレスまたは物理アドレスが示す記憶領域に転記する転記部とを有することを特徴とするプロセッサ。
JP2008223698A 2008-09-01 2008-09-01 データ転送装置、データ転送方法およびプロセッサ Active JP5254710B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008223698A JP5254710B2 (ja) 2008-09-01 2008-09-01 データ転送装置、データ転送方法およびプロセッサ
US12/550,936 US8719542B2 (en) 2008-09-01 2009-08-31 Data transfer apparatus, data transfer method and processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008223698A JP5254710B2 (ja) 2008-09-01 2008-09-01 データ転送装置、データ転送方法およびプロセッサ

Publications (2)

Publication Number Publication Date
JP2010061220A JP2010061220A (ja) 2010-03-18
JP5254710B2 true JP5254710B2 (ja) 2013-08-07

Family

ID=41727020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008223698A Active JP5254710B2 (ja) 2008-09-01 2008-09-01 データ転送装置、データ転送方法およびプロセッサ

Country Status (2)

Country Link
US (1) US8719542B2 (ja)
JP (1) JP5254710B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201008965D0 (en) 2010-05-28 2010-10-20 Qinetiq Ltd ROV terrain disruptor
JP5417387B2 (ja) * 2011-07-12 2014-02-12 日本電信電話株式会社 加入者データ管理方法及び呼制御システム
CN102567278A (zh) * 2011-12-29 2012-07-11 中国科学院计算技术研究所 一种片上多核数据传输方法和装置
US10191672B2 (en) * 2015-10-16 2019-01-29 Google Llc Asynchronous copying of data within memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63108448A (ja) * 1986-10-25 1988-05-13 Nec Corp 入出力要求制御方式
JPH0520201A (ja) * 1991-07-12 1993-01-29 Toshiba Corp 仮想記憶管理システム
JPH0750453B2 (ja) * 1992-11-04 1995-05-31 日本電気株式会社 入出力制御システム
JPH0877062A (ja) * 1994-09-02 1996-03-22 Fuji Xerox Co Ltd アドレス管理装置
JP3206458B2 (ja) * 1996-10-18 2001-09-10 日本電気株式会社 Dma転送方式
JP3484056B2 (ja) * 1996-10-18 2004-01-06 松下電器産業株式会社 データ転送装置及びデータ転送システム
JP2000235542A (ja) * 1999-02-16 2000-08-29 Sony Corp データ処理装置及び記録媒体
JP2005182538A (ja) * 2003-12-19 2005-07-07 Toshiba Corp データ転送装置
JP2005258509A (ja) * 2004-03-09 2005-09-22 Fujitsu Ltd ストレージ装置
US7930484B2 (en) * 2005-02-07 2011-04-19 Advanced Micro Devices, Inc. System for restricted cache access during data transfers and method thereof
JP4785637B2 (ja) * 2006-06-16 2011-10-05 キヤノン株式会社 データ転送装置及びその制御方法
US8949569B2 (en) * 2008-04-30 2015-02-03 International Business Machines Corporation Enhanced direct memory access

Also Published As

Publication number Publication date
US20100058024A1 (en) 2010-03-04
US8719542B2 (en) 2014-05-06
JP2010061220A (ja) 2010-03-18

Similar Documents

Publication Publication Date Title
US11334262B2 (en) On-chip atomic transaction engine
US9594521B2 (en) Scheduling of data migration
US9760386B2 (en) Accelerator functionality management in a coherent computing system
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
JP4531890B2 (ja) 原子的更新処理を実行する方法
US9280290B2 (en) Method for steering DMA write requests to cache memory
EP2466474A1 (en) Streaming translation in display pipe
CN111684427A (zh) 高速缓存控制感知的存储器控制器
US11995351B2 (en) DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine
US20170315915A1 (en) Leases for Blocks of Memory in a Multi-Level Memory
US8930596B2 (en) Concurrent array-based queue
US20180276128A1 (en) Methods for performing a memory resource retry
EP1139222A1 (en) Prefetch for TLB cache
CN113641596A (zh) 缓存管理方法、缓存管理装置、处理器
CN107250995B (zh) 存储器管理设备
GB2581836A (en) Handling ring buffer updates
JP5254710B2 (ja) データ転送装置、データ転送方法およびプロセッサ
JP4266629B2 (ja) ページ・テーブル属性によるバス・インタフェース選択
JP5213485B2 (ja) マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム
US7451274B2 (en) Memory control device, move-in buffer control method
JP2007207249A (ja) ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ
US10169235B2 (en) Methods of overriding a resource retry
US8244919B2 (en) Data transfer apparatus, system and method using the same
GB2502858A (en) A method of copying data from a first memory location and storing it in a cache line associated with a different memory location
US20240345774A1 (en) Information processing system

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110128

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130319

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: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130418

R150 Certificate of patent or registration of utility model

Ref document number: 5254710

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160426

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250