JP2006190301A - 情報処理方法および装置 - Google Patents

情報処理方法および装置 Download PDF

Info

Publication number
JP2006190301A
JP2006190301A JP2006000923A JP2006000923A JP2006190301A JP 2006190301 A JP2006190301 A JP 2006190301A JP 2006000923 A JP2006000923 A JP 2006000923A JP 2006000923 A JP2006000923 A JP 2006000923A JP 2006190301 A JP2006190301 A JP 2006190301A
Authority
JP
Japan
Prior art keywords
processor
memory
local memory
information processing
shared memory
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
JP2006000923A
Other languages
English (en)
Other versions
JP4346612B2 (ja
Inventor
Takeshi Yamazaki
剛 山崎
Tsutomu Horikawa
勉 堀川
James A Kahle
ジェームズ・アラン・カーリー
Charles Ray Johns
チャールズ・レイ・ジョーンズ
Michael N Day
マイケル・ノルマン・デイ
Peter Ryuu Peichun
ペイチュン・ピーター・リュウ
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 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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006190301A publication Critical patent/JP2006190301A/ja
Application granted granted Critical
Publication of JP4346612B2 publication Critical patent/JP4346612B2/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

【課題】共有メモリとローカルメモリ間のデータ転送を効率良く行う。
【解決手段】プロセッサ102は、共有メモリ106と通信可能であり、ダイレクト・メモリ・アクセス・コントローラ(DMAC)160はローカルメモリ104と接続しうる。プロセッサ102からDMACに発行された1つのDMAコマンドに応じて、共有メモリ106とローカルメモリ104間において複数のデータブロックを転送する。
【選択図】図1

Description

本発明は、マルチプロセッサシステムにおけるデータ転送技術に関する。
リアルタイムのマルチメディアアプリケーションはますます重要になっている。これらのアプリケーションは、毎秒何千メガビットものデータ処理という非常に高速な処理を必要とする。高速処理速度を達成するのに単一プロセッサを用いる処理システムもあるが、マルチプロセッサアーキテクチャを利用して実装されるシステムもある。マルチプロセッサシステムでは、複数のサブプロセッサが、所望の処理結果を達成するために並列で(または少なくとも協調して)動作する。
最先端のコンピュータアプリケーションがますます複雑になり、処理システムに対する需要は絶えず増大しているため、近年、より速いコンピュータによる処理データスループットについて強い要望がある。そうした中、特にグラフィックスアプリケーションは、望ましい視覚結果を実現するために、比較的短い時間内で膨大な数のデータアクセス、データ計算、およびデータ操作を必要とし、処理システムに対する需要は最も高い。
一部の処理システムにおいて、ダイレクト・メモリ・アクセス(DMA)技術が用いられる。このコンピュータアーキテクチャによれば、データ転送において、プロセッサを使用せずに、デバイスとメモリ間でデータを直接転送することができる。通常、このアーキテクチャは、データの転送を行わせるデータ転送コマンドを、システムのデバイスから受信するメモリコントローラを必要とする。従来のDMAコマンドは、データブロックのサイズ、データの転送先または転送元となるシステムメモリ内の開始仮想アドレス、データ転送先または転送元となるデバイスの開始アドレスなどを指定することができる。非ダイレクトメモリアクセス技術と比較すると、従来のDMA技術は処理速度を速くすることができるが、制限もある。たとえば、マルチプロセッサシステムを用いたグラフィック処理のようなコンピュータアプリケーションの場合、所望の結果を達成するために、一つまたは複数のサブプロセッサから、多数のDMA転送が必要とされることはある。これについて、従来のアプローチでは、すべてのデータ転送を実現するための多数のDMAコマンドを発行する特定のサブプロセッサが必要とされる。これでは、プロセッサに負担がかかり、処理能力の低下を招く。
本発明は上記事情に鑑みてなされたものであり、その目的は、データ転送において有利な技術を提供することにある。
本発明の1つまたは複数の態様は、改良されたDMA技術を提供する。この技術は、処理システムにおいて、多数のDMAコマンドを発行することに起因する処理能力の不利なロスを軽減する。
本発明のある態様は、情報処理装置に関する。この装置は、動作時に共有メモリと通信可能であり、かつ命令の実行のためのローカルメモリを備えるプロセッサと、プロセッサのローカルメモリと接続されており、プロセッサにより発行された1つのDMAコマンドに応じて、共有メモリとローカルメモリ間の複数のデータブロックの転送を円滑にするダイレクト・メモリ・アクセス・コントローラ(DMAC)とを有する。
プロセッサは、好適には、ローカルメモリ内において複数のエントリを含むリストを構築可能である。それぞれのエントリは、少なくとも、転送されるデータブロックの開始アドレスとサイズとを有する。DMAコマンドは、リストにおける少なくとも1つのエントリを指定できることが望ましい。DMACは、リスト内のこの少なくとも一つのエントリ内に定義された開始アドレスとサイズを用いて、データブロックの特定、および共有メモリとローカルメモリ間の該データブロックの転送が可能であってもよい。
好適には、DMACがリスト内の一つのエントリを用いて、リスト内の別のエントリを特定することができるように、リスト内の各エントリは関連づけられている。リスト内のエントリは、エントリ間で関連づけられるための、前方ポインタと後方ポインタのうちの少なくとも一つを有する。
DMAコマンドは、複数のデータブロックが共有メモリからプロセッサのローカルメモリにコピーされることを指定するのに適用されてもよい。また、DMAコマンドは、複数のデータブロックが共有メモリの非連続領域から、プロセッサのローカルメモリの連続領域にコピーされることを指定するのに適用されてもよい。また、DMACは、DMAコマンドに応じて、共有メモリの非連続領域から、プロセッサのローカルメモリの連続領域に複数のデータブロックをコピーするように適用されてもよい。
DMAコマンドは、複数のデータブロックがプロセッサのローカルメモリから共有メモリにコピーされることを指定するのに適用されてもよい。また、DMAコマンドは、複数のデータブロックがプロセッサのローカルメモリの連続領域から共有メモリの非連続領域にコピーされることを指定するのに適用されてもよい。また、DMACは、DMAコマンドに応じて、プロセッサのローカルメモリの連続領域から、共有メモリの非連続領域に複数のデータブロックをコピーするように適用されてもよい。
本発明の別の態様も、情報処理装置に関する。この装置は、動作時に共有メモリと通信可能な、複数の並列的なプロセッサを備える。各プロセッサは、命令の実行のためのローカルメモリと、プロセッサのローカルメモリと接続されたダイレクト・メモリ・アクセス・コントローラ(DMAC)とを備える。一つのメインプロセッサは、動作時にこれらの各プロセッサと接続されるとともに、共有メモリとも接続でき、これらのプロセッサを管理することができる。各プロセッサのDMACは、プロセッサにより発行された1つのDMAコマンドに応じて、共有メモリとローカルメモリ間の複数のデータブロックの転送を円滑にすることが可能である。
本発明の別の態様は、情報処理方法に関する。この方法は、プロセッサによってダイレクト・メモリ・アクセス・コントローラ(DMAC)に発行された1つのDMAコマンドに応じて、共有メモリと、プロセッサのローカルメモリ間で複数のデータブロックを転送する手順を有し、プロセッサは、動作時に共有メモリと通信可能であり、DMACは、動作時にローカルメモリと接続可能である。
この方法は、ローカルメモリ内において、複数のエントリを含むリストを構築する手順をさらに有してもよく、それぞれのエントリは、転送されるデータブロックの開始アドレスとサイズとを含む。また、この方法は、DMAコマンドにより指定された、リスト内の少なくとも一つのエントリの開始アドレスとサイズを用いて、対応する、転送されるデータブロックを特定する手順と、このデータブロックを共有メモリとローカルメモリ間で転送する手順とをさらに有してもよい。
また、この方法は、リスト内の一つのエントリを用いて、リスト内の他のエントリを特定することができるように、リスト内のエントリを関連づける手順をさらに有することが好ましい。リスト内のエントリは、エントリ間で関連づけられるための、前方ポインタと後方ポインタのうちの少なくとも一つを有するようにしてもよい。
本発明の別の態様は、ソフトウェアプログラムを記憶した記憶媒体に関する。このプログラムは、プロセッサからDMACに発行した1つのDMAコマンドに応じて、共有メモリと、このプロセッサのローカルメモリ間で複数のデータブロックを転送する手順を含む処理をコンピュータに実行せしめる。このプロセッサは、動作時に共有メモリと通信可能であり、DMACはローカルメモリと接続可能である。
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
なお、以上の構成要素の任意の組合せ、本発明を装置、システム、プログラム、プログラムを記憶した記憶媒体として表現したものも、本発明の態様としては有効である。
本発明は、マルチプロセッサシステムにおけるデータ転送において有利である。
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
以下、図面を参照するが、図中、同一符号は同一要素を示す。図1は、本発明の1つまたは複数の特徴を実現可能なシステム100を示す。簡潔かつ明確に説明するために、図1のブロック図を、ここで装置100を示しているように参照しながら説明する。なお、下記の説明は、同じ作用を有する方法のさまざまな形態に適用することが理解されるところである。
装置100は、プロセッサ102と、ローカルメモリ104と、共有メモリ(システムメモリまたはメインメモリともいう)106(たとえばDRAM)と、バス108を備える。システム100は、デバイス1や、デバイス2のような、バス108を介して共有メモリ106を使用可能な他のデバイスを備えてもよい。
プロセッサ102は、システムメモリ106からデータをリクエストができるとともに、データを操作して所望の目的を達成することができれば、従来知られているいかなる技術により実装されてもよい。たとえば、プロセッサ102は、標準なマイクロプロセッサや、分散型マイクロプロセッサなどを含んだ、ソフトウェアおよび/またはファームウェアを実行することができるいかなるマイクロプロセッサを用いて実装されてもよい。具体的な一例としては、プロセッサ102は、グレースケール情報、カラー情報、テクスチャーデータ、ポリゴナル(polygonal)情報、ビデオフレーム情報などを含むピクセルデータのようなデータをリクエストするとともに、操作することができるグラフィックプロセッサであってもよい。
また、ローカルメモリ104はプロセッサ102と同じチップに設けられている。ローカルメモリ104は、従来のハードウェアキャッシュメモリではないことが望ましく、ローカルメモリ104には、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に置かれたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが無い。チップ上の実装面積が限られているので、ローカルメモリ104のサイズは、システムメモリ106のサイズより遥かに小さい。プロセッサ102は、プログラムの実行とデータの操作のために、バス108を介してシステムメモリ106からローカルメモリ104にデータ(プログラムデータを含む)をコピーするためのデータアクセスのリクエストを提供することが好ましい。データアクセスを手助けするメカニズムは、ダイレクト・メモリ・アクセス・コントローラ(DMAC)160によって実現される。DMAC160は、プロセッサ102および/またはローカルメモリ104と一体化されてもよいし、別体に設けられてもよい。
図1〜3を参照する。DMAC160は、プロセッサ102が発行した1つのDMAコマンドに応じて、共有メモリ106とローカルメモリ104間で多数のデータブロックの転送を円滑にするように動作可能であることが好ましい。このために、プロセッサ102は、ローカルメモリ104において少なくとも1つのリスト120(複数のリスト、たとえば120A、120B、120Cなどであってもよい)を構築するように動作可能であることが好ましい。各リストは、複数のエントリ122A−Nを有し、各エントリは、転送されるデータブロックの開始アドレスとサイズを少なくとも含む。リスト内において、開始アドレスとサイズを含む各エントリは、ローカルメモリ104または共有メモリ106内の1つのデータブロックに対応するか、このデータブロックを定義する。このアドレスは、共有メモリ106の物理アドレスに変換することを必要とする仮想アドレスでありうる。
DMAコマンドは、リスト120A内の一つのエントリ122Aのようなエントリを少なくとも一つを指定しうる。これによって、DMAコマンドの発行(ステップ304)によって、DMAC160は、このようなエントリ122Aにアクセスするとともに、データブロックの転送を開始するが可能となる。それに応じて、DMAC160は、エントリ122A内に設定された開始アドレスおよびサイズを用いて、転送するための対応するデータブロックを特定するとともに、このデータブロックを、共有メモリ106とローカルメモリ104間で転送する(ステップ306)ように動作可能であることが好ましい。
リスト120に定義されたすべてのブロックの転送を完了するために、DMAC160がリスト内の一つのエントリを用いてリスト内の別のエントリを特定することができるように、リスト内の各エントリ122は、関連づけられていることが好ましい。たとえば、リスト120Aにおけるエントリ122Aに対応するデータブロックの転送後、DMAC160は、エントリ122A内の他の情報にアクセスして、リスト120Aにおける次のエントリ122Bを見出すようにしてもよい。一例として、リスト120内の各エントリ122はそれぞれ前方ポインタを有し、この前方ポインタによって、リスト120内の他の他の一つのエントリ122と関連づけられる。したがって、上記の目的を達成するために、リスト120Aの第1のエントリ122Aは、リスト120A内の第2のエントリ122Bが対応する、ローカルメモリ104における位置を示すポインタを含むようにしてしてもよい。同じように、リスト120Aの第2のエントリ122Bは、リスト120Aの第3のエントリ122Cを示す前DMAC160がリスト120内の各エントリ122にアクセスできるように方ポインタを含むようにしてもよい。このようなプロセスは繰り返されることによって、DMAC160がリスト120内の各エントリ122にアクセスできるように、リスト120内の各エントリ122は関連づけられる。他の態様として、各エントリは、後方ポインタか、前方ポインタと後方ポインタの両方を含むことによってエントリ122間の所望する関連づけを実現するようにしてもよい。
また、他の態様として、DMAコマンドは、共有メモリ106からプロセッサ102のローカルメモリ104にコピーされる複数のデータブロックを指定することに用いられるようにしてもよい。好適には、DMAコマンドは、これらの複数のデータブロックを共有メモリ106の非連続領域から、プロセッサ102のローカルメモリ104の連続領域にコピーするように指定することに用いられる。さらに、DMAC160は、DMAコマンドへの依存を必要とせずに、共有メモリ106の非連続領域から、ローカルメモリ104の連続領域にコピーするようにしてもよい。
また好適には、DMAコマンドを、プロセッサ102のローカルメモリ104から共有メモリ106へコピーする複数のデータブロックを指定することに適用する。DMAコマンドは、データ転送が、ローカルメモリ104の連続領域から共有メモリ106の非連続領域にコピーすることによって実現されるように指定することに適用されてもよい。さらに、DMAC160は、DMAコマンドへの依存を必要とせずに、ローカルメモリ104の連続領域から、共有メモリ106の非連続領域へのデータ転送を実現するようにしてもよい。
図4は、本発明の1つまたは複数の態様を適用したマルチプロセッサシステム100Aを示す。システム100Aは、複数のプロセッサ102A〜Dと、関連するローカルメモリ104A〜Dと、バス108を介して内部的に接続された共有メモリ106を備える。以下の説明において、共有メモリ106を、メインメモリまたはシステムメモリともいう。図示の例では、プロセッサ102が4つしかないが、本発明の趣旨から逸脱しないかぎり、いかなる数のプロセッサを用いてもよい。各プロセッサ102の構造は、同じであってもよいし、異なってもよい。
ローカルメモリ104は、それぞれのプロセッサ102と同じチップ(同じ半導体基板)上に配置されることが好ましい。これらのローカルメモリ104は、従来のハードウェアキャッシュメモリではなく、それらには、ハードウェアキャッシュメモリの機能を実現するための、オン・チップまたはオフ・チップのハードウェアキャッシュ回路や、キャッシュレジスタや、キャッシュメモリコントローラなどが含まれないことが好ましい。
プロセッサ102は、プログラムの実行およびデータの処理のために、バス108を介してシステムメモリ106から、自身のローカルメモリ104にデータ(プログラムデータを含んでもよい)をコピーするデータアクセスリクエストを提供することが好ましい。データアクセスを促進するメカニズムは、図示しないダイレクト・メモリ・アクセス・コントローラ(DMAC)を用いることによって実装されることが好ましい。各プロセッサのDMACは、本発明の別の特徴について前述した機能と同じ機能を有することが好ましい。
システムメモリ106は、広帯域幅のメモリ接続(図示せず)によってプロセッサ102と接続されたダイナミック・ランダム・アクセス・メモリ(DRAM)であることが好ましい。ここで、システムメモリ106は、DRAMであることが好ましいが、スタティック・ランダム・アクセス・メモリ(SRAM)や、磁気ランダム・アクセス・メモリ(MRAM)や、光学メモリ、ホログラフィックメモリなどの他の方法を用いるメモリであってもよい。
各プロセッサ102は、論理命令がパイプライン方式で処理される処理パイプラインを用いて実装されることが好ましい。パイプラインは、任意の数の、命令が処理されるステージに分けられることができるが、通常、パイプラインは、1つまたは複数の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、命令の実行を含む。これに関連して、プロセッサ102は、命令バッファと、命令デコード回路、従属関係チェック回路、命令発行回路、実行ステージを含むようにすることができる。
各プロセッサ102のDMACは、いずれかのプロセッサ102により発行された1つのDMAコマンドに応じて、1つまたは複数のローカルメモリ104と共有メモリ106間の複数のデータブロックの転送を促進するように動作可能であることが好ましい。これを実現するために、プロセッサ102、ローカルメモリ104、DMACなどは、図1〜3を参照して上述した機能性と実質的に同じ機能性を備えることが好ましい。たとえば、各プロセッサ102は、自身のローカルメモリ104において1つまたは複数のリストを設け、DMAコマンドは、少なくとも1つのエントリたとえばリスト120内のエントリ122Aを指定し、DMACは、このようなエントリ122Aにアクセスするとともに、エントリ122Aに対して指定された開始アドレスとサイズを用いて転送されるデータブロックを特定し、その転送を開始する。
また、複数のデータブロックは、共有メモリ106からいずれか1つまたは複数のプロセッサ102のローカルメモリ104にコピーされてもよいし、いずれか1つまたは複数のプロセッサ102のローカルメモリ104から共有メモリ106にコピーされてもよい。これらのデータブロックの転送は、共有メモリ106の非連続領域から、プロセッサ102のローカルメモリ104の連続領域にコピーするようにされてもよい。また、この転送は、ローカルメモリ104の連続領域から、共有メモリ106の非連続領域にコピーするするようにされてもよい。
別の態様として、プロセッサ102と、ローカルメモリ104と、DMAC160は、同じ半導体基板上に設けられてもよい。さらに、共有メモリ106は、この半導体基板上に設けられてもよいし、別に設けられてもよい。
また別の態様として、1つまたは複数のプロセッサ102は、動作時に他のプロセッサ102と接続できるとともに、バス108を介して共有メモリ106と接続可能なメインプロセッサとして動作してもよい。メインプロセッサは、他のプロセッサ102によりデータに対して行われる処理のスケジューリングおよび統合を行ってもよい。他のプロセッサ102と異なり、メインプロセッサは、共有メモリ106と、1つまたは複数の、プロセッサ102のローカルメモリとのうちの少なくとも一方から得られたデータをキャッシュすることができるハードウェアキャッシュメモリと接続されてもよい。また、メインプロセッサは、DMA技術のような既知のいかなる技術を用いたプログラムの実行およびデータの操作のために、バス108を介してシステムメモリ106からキャッシュメモリへデータ(プログラムデータを含む)をコピーするデータアクセスリクエストを提供してもよい。
ここで、上述した1つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。1つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、PCシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および/または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち1つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
図5は、基本的な処理モジュールであるプロセッサ要素(PE)500を示す。PE500は、I/Oインターフェイス502と、処理ユニット(PU)504と、複数のサブ処理ユニット508、すなわち、サブ処理ユニット508Aと、サブ処理ユニット508Bと、サブ処理ユニット508Cと、サブ処理ユニット508Dとを含む。ローカル(すなわち内部)PEバス512は、PU504、SPU群508、およびメモリインターフェイス511間のデータおよびアプリケーションの伝送を行う。ローカルPEバス512は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE500はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE500はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる1つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE500はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
PE500は、広帯域メモリ接続516を介して共有メモリ(メインメモリ)514に密接に関連付けられる。メモリ514は好適にはダイナミックランダムアクセスメモリ(DRAM)であるが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PU504およびサブ処理ユニット508は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインターフェイス511と協働して、DRAM514、PE500におけるサブ処理ユニット508、PU504間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインターフェイス511は、サブ処理ユニット508とPU504とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、DAMCの機能および/またはメモリインターフェイス511の機能は、サブ処理ユニット508およびPU504の1つ以上(好ましくはすべて)に一体化できる。ここで、DRAM514もまた、PE500から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、DRAM514は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
PU504は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU504はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ(SIMD)プロセッサである。PU504の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU504としては、RISC(reduced instruction−set computing)技術を用いるマイクロプロセッサアーキテクチャとなるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
ここで、PU504は、サブ処理ユニット508のうちの1つとして実装されてもよい。この場合、このサブ処理ユニット508は、メイン処理ユニットPUによる処理、すなわち各々のサブ処理ユニット508によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、PE500内において、複数のPUを実装してもよい。
このモジュール構造では、あるコンピュータシステムで使用されるPE500の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE群500、ワークステーションは二つのPE群500、PDAは1つのPE500を使用しうる。あるソフトウェアセルの処理に割り当てられるPE500のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
図6は、サブ処理ユニット(SPU)508の好適な構造と機能を示す図である。サブ処理ユニット508のアーキテクチャは、汎用プロセッサ(多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(1つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。サブ処理ユニット508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット508の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
サブ処理ユニット508は、すなわちSPUコア510Aとメモリフローコントローラ(MFC)510Bという二つの基本機能ユニットを有する。SPUコア510Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC510Bは、SPUコア510Aと、システムのDRAM514との間のデータ転送に関連する機能を担うものである。
SPUコア510Aはローカルメモリ550と、命令(インストラクション)ユニット(IU)552と、レジスタ554と、1つ以上の浮動小数点実行ステージ556と、1つ以上の固定小数点実行ステージ558とを有する。ローカルメモリ550は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア510Aは、キャッシュよりも、比較的小さいローカルメモリ550を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット508A内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うDMA転送をオーバーラップすることで、ローカルメモリSRAM550内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きいかつ十分予測可能なとき(例えばデータが要求される前にDMAコマンドを発行することができるとき)において優位性を提供する。
サブ処理ユニット508のうちのいずれか1つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ550を参照する。なお、ローカルメモリ550の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス(RA)が付与されている。これは、特権レベルのソフトウェアがローカルメモリ550を1つの処理における実効アドレス(EA)にマッピングすることを可能とし、それによって二つのローカルメモリ550間のDMA転送が容易になる。PU504は、実効アドレスを用いてローカルメモリ550に直接アクセスすることもできる。ローカルメモリ550は、256キロバイトの容量を有し、レジスタ554の容量は128×128ビットであることが望ましい。
SPUコア510Aは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、1つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット552は、命令バッファと、命令デコード回路と、従属関係チェック回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ550と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が1つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるようにするサイズであることが好ましい。
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ550へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
従属関係チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタルロジックを含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが(例えば、これらの他の命令の実行の完了を許可することによって)更新されるまで、実行されるべきではない。従属関係チェック回路は、デコード回路から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
命令発行回路は、浮動小数点実行ステージ556および/または固定小数点実行ステージ558に命令を発行することができる。
レジスタ554は、128―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
SPUコア510Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア510Aは、命令バッファから同時に送信される命令の数、例えば2と3の間(クロックサイクル毎に二つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点実行ステージ556と固定小数点実行ステージ558を用いることができる。好適な実施の形態では、浮動小数点実行ステージ556と固定小数点実行ステージ558の望ましいスピードは、それぞれ、毎秒32ギガ浮動小数点オペレーション(32 GFLOPS)と毎秒32ギガオペレーション(32 GOPS)である。
MFC510Bは、バスインターフェースユニット(BIU)564と、メモリマネジメントユニット(MMU)562と、ダイレクトメモリアクセスコントローラ(DMAC)560とを有することが望ましい。低電力消費の設計目的を達成するために、MFC510Bは、DMAC560を除いて、SPUコア510Aおよびバス512の半分の周波数(半分のスピード)で動作することが好ましい。MFC510Bは、バス512からサブ処理ユニット508に入るデータと命令を操作することができ、DMACのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。BIU564は、バス512とMMU562とDMAC560との間のインターフェースを提供する。したがって、サブ処理ユニット508(SPUコア510AとMFC510Bを含む)とDMAC560は、物理的および/または論理的にバス512と接続されている。
MMU562は、メモリアクセスのために実効アドレス(DMAコマンドから取得される)をリアルアドレスへ変換することができるようにすることが望ましい。例えば、MMU562は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、MMU562は、64ビットのメモリマネジメントモジュールをベースにして実装でき、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264のバイトの実効アドレス空間を提供することができる。MMU562は、DMAコマンドのために、265までの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU562のハードウェアは、8−エントリの完全連想SLB、256−エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC560は、SPUコア510AからのDMAコマンドと、1つ以上の、PU504および/または他のSPUのような他のデバイスからのDMAコマンドとを管理することができることが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ550から共有メモリ514へデータを移動させるPutコマンド、共有メモリ514からローカルメモリ550へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。DMAコマンドに応じて、MMU562は実効アドレスをリアルアドレスに変換し、このリアルアドレスはBIU564に転送される。
SPUコア510Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC560内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア510Aは、チャンネルインターフェースを介してDMAコマンドをDMAC560内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC560内の発行ロジックと完了ロジックにより操作される。1つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、1つの完了信号がSPUコア510Aに返送される。
図7は、PU504の好ましい構造と機能を示す図である。PU504は、PUコア504Aとメモリフローコントローラ、すなわちMFC504Bとの二つの基本機能ユニットを有する。PUコア504Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC504Bは、PUコア504Aと、システム100のメモリ空間との間のデータ転送に関連する機能を担うものである。
PUコア504Aは、L1キャッシュ570と、命令ユニット572と、レジスタ574と、少なくとも1つの浮動小数点実行ステージ576と、少なくとも1つの固定小数点実行ステージ578とを有する。L1キャッシュ570は、共有メモリ106、プロセッサ102、あるいはMFC504Bにおけるほかの部分のメモリ空間から受信したデータのキャッシング機能を提供する。PUコア504Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット572は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア504Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット572から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点実行ステージ576と固定小数点実行ステージ578とを用いることができる。
MFC504Bは、バスインターフェースユニット(BIU)580と、L2キャッシュ582と、キャッシュ不可ユニット(NCU)584と、コアインターフェースユニット(CIU)586と、メモリマネジメントユニット(MMU)588とを有する。低電力消費の設計目的を達成するために、MFC504Bのほとんどは、PUコア504Aとバス108の半分の周波数(半分のスピード)で動作することが好ましい。
BIU580は、バス108と、L2キャッシュ582と、NCU584のロジックブロックとの間のインターフェースを提供する。BIU580は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス108上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU580は、L2キャッシュ582とNCU584の代わりに、バス108へのロードリクエストとストアリクエストを発信する。BIU580は、バス108へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス108上のデータオペレーションは、8ビートになるように設計されることができ、そして、BIU580は、キャッシュラインが128バイト前後であり、一貫性と同期の精度が128KBであるように設計されることが好ましい。
L2キャッシュ582(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ582は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ582は、8ウエイセットアソシエイティブシステムであることが好ましい。L2キャッシュ582は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ582は、L1キャッシュ570の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときの、復元状況において有用である。この構成は、L1キャッシュ570が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ582で止まることができるから)。この構成は、L2キャッシュ582にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
NCU584はインターフェースによってCIU586と、L2キャッシュ582と、BIU580と接続されており、通常、PUコア504Aとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。NCU584は、PUコア504Aとの通信のうちの、L2キャッシュ582によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ582によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU584は、半分のスピードで動作することが好ましい。
CIU586は、MFC504BとPUコア504Aとの境界線上に配置され、浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、MMU588から、L2キャッシュ582とNCU584へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア504AとMMU588はフルスピードで動作し、L2キャッシュ582とNCU584は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU586に周波数境界線が存在することになり、この境界線は、その1つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
CIU586は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU586により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU586は、下記の動作を実行可能であることが好ましい:(i)PUコア504AとMMU588からのロードリクエストとストアリクエストを受信する、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれL2キャッシュ582とNCU584へルーティングする、(iv)L2キャッシュ582とNCU584へのリクエストが均等になるように調整する、(v)リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、L2キャッシュ582とNCU584へ送信するリクエストのフローコントロールを提供する、(vi)ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へルーティングする、(vii)スヌープリクエストを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へ転送する、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU588は、第2レベルアドレス変換手段のごとく、PUコア504Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア504A内において、セパレート命令と、MMU588より遥かに小さくてかつ速いデータERAT(実効アドレスからリアルアドレスへの変換)アレイとにより提供されることが好ましい。
PU504は64ビットで実装され、4〜6GHz、10F04(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための1つまたはより多くのレジスタが64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット572、レジスタ574、浮動小数点実行ステージ576と固定小数点実行ステージ578はRISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のPEを含め、さらに、このPEに、PU、DMACおよび8個のAPUを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ(VS)の構造を有してもよく、この場合、VSに、PU、DMACおよび4つのAPUを含めてもよい。
本発明の少なくとも1つの特徴に基づいて、図中に示されるような適切なハードウェアを用いて上述した方法及び装置を実現することができる。これらのハードウェアは、例えば、標準のデジタル回路や、ソフトウェアおよび/またはファームウェアプログラムを実行することができる任意の既知のプロセッサや、プログラムで制御可能なリード・オンリメモリ(PROM)とアレイ・ロジックデバイス(PAL)等のような、1つまたはより多くの、プログラムで制御可能なデジタルデバイスまたはシステムなど、従来の任意の技術を適用して実装することができる。さらに、図面に示される装置は、所定の機能ブロックに分けられているが、これらのブロックは、別々の回路により構成されたり、1つ以上の機能ユニットに一体化されたりしてもよい。さらに、本発明の各態様は、搬送や配布のために、適切な記憶媒体(フロッピ(登録商標)ディスク、メモリチップなど)に記録されるソフトウェアや、ファームウェアプログラムとして提供されてもよい。
以上において本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、本発明の主旨から逸脱しない限り、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
本発明の1つまたは複数の態様に適用可能な処理システムの構成を示す図である。 ダイレクト・メモリ・アクセス(DMA)データ転送リストの例を示す図である。 図1に示す処理システムにより実行しうる処理手順を示すフローチャートである。 本発明の1つまたは複数の態様に適用可能であり、2つ以上のプロセッサを備えるマルチプロセッサシステムの構成を示す図である。 本発明の1つ以上の特徴を実現可能な、望ましいプロセッサ要素(PE)を示す図である。 図5に示すシステムにおけるサブ処理ユニット(SPU)の典型例の構成を示す図である。 図5に示すシステムにおける処理ユニット(PU)の典型例の構成を示す図である。
符号の説明
100 システム、 102 プロセッサ、 104 ローカルメモリ、 106 共有メモリ、 108 バス、 120 リスト、 122 エントリ、 500 プロセッサ要素(PE)、 502 I/Oインターフェイス、 504 処理ユニット(PU)、 504A PUコア、 504B メモリ・フロー・コントローラ(MFC)、 508 サブ処理ユニット(SPU)、 510A SPUコア、 510B メモリ・フロー・コントローラ(MFC)、 511 メモリインターフェイス、 512 PEバス、 514 共有メモリ、 516 広帯域メモリ接続、 550 ローカルメモリ、 552 命令ユニット(IU)、 554 レジスタ、 556 浮動小数点実行ステージ、 558 固定小数点実行ステージ、 560 ダイレクト・メモリ・アクセス・コントローラ(DMAC)、 562 メモリ・マネジメント・ユニット(MMU)、 564 バス・インターフェイス・ユニット(BIU)、 570 L1キャッシュ、 572 命令ユニット(IU)、 574 レジスタ、 576 浮動小数点実行ステージ、 578 固定小数点実行ステージ、 580 バス・インターフェイス・ユニット(BIU)、 582 L2キャッシュ、 584 キャッシュ不可ユニット(NCU)、 586 コア・インターフェイス・ユニット(CIU)、 588 メモリ・マネジメント・ユニット(MMU)。

Claims (26)

  1. 動作時に共有メモリと通信可能であり、かつ、命令の実行のためのローカルメモリを備えたプロセッサと、
    該プロセッサの前記ローカルメモリと接続されており、前記プロセッサにより発行された1つのDMAコマンドに応じて、前記共有メモリと前記ローカルメモリ間における複数のデータブロックの転送を担うDMAコントローラとを備えたことを特徴とする情報処理装置。
  2. 前記プロセッサは、前記ローカルメモリ内において複数のエントリを有するリストを構築可能であり、それぞれの前記エントリが、転送されるデータブロックの開始アドレスおよびサイズを少なくとも含むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記DMAコマンドは、前記リストにおける少なくとも1つのエントリを指定することを特徴とする請求項2に記載の情報処理装置。
  4. 前記DMAコントローラは、前記リスト内の前記少なくとも一つのエントリ内に指定された前記開始アドレスと前記サイズを用いて、データブロックの特定、および共有メモリとローカルメモリ間の該データブロックの転送が可能であることを特徴とする請求項3に記載の情報処理装置。
  5. DMAコントローラがリスト内の一つのエントリを用いて、リスト内の別のエントリを特定可能になるように、前記リスト内の各エントリは関連づけられていることを特徴とする請求項2から4のいずれか1項に記載の情報処理装置。
  6. 前記リスト内のエントリは、前方ポインタと後方ポインタのうちの少なくとも一つを有し、これによって各前記エントリは互いに関連づけられていることを特徴とする請求項5に記載の情報処理装置。
  7. 前記DMAコマンドは、前記複数のデータブロックを共有メモリからプロセッサのローカルメモリにコピーすることの指定に用いられることを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
  8. 前記DMAコマンドは、前記複数のデータブロックを共有メモリの非連続領域から、プロセッサのローカルメモリの連続領域にコピーすることの指定に用いられることを特徴とする請求項7に記載の情報処理装置。
  9. 前記DMAコマンドは、前記複数のデータブロックをプロセッサのローカルメモリから共有メモリにコピーすることの指定に用いられることを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
  10. 前記DMAコマンドは、前記複数のデータブロックをプロセッサのローカルメモリの連続領域から共有メモリの非連続領域にコピーすることの指定に用いられることを特徴とする請求項9に記載の情報処理装置。
  11. 前記ローカルメモリは、ハードウェアキャッシュメモリではないことを特徴とする請求項1から10のいずれか1項に記載の情報処理装置。
  12. 複数の前記プロセッサと接続可能な主プロセッサをさらに備え、
    該主プロセッサは、前記共有メモリと接続可能であり、前記複数のプロセッサを管理可能であることを特徴とする請求項1に記載の情報処理装置。
  13. 動作時に共有メモリと通信可能な複数の並列的なプロセッサを備え、
    各該プロセッサは、
    命令の実行のためのローカルメモリと、
    プロセッサの前記ローカルメモリと接続されたDMAコントローラとを有し、
    各プロセッサの前記DMAコントローラは、前記プロセッサにより発行された1つのDMAコマンドに応じて、共有メモリとローカルメモリ間の複数のデータブロックの転送を担うことが可能であることを特徴とする情報処理システム。
  14. 各前記プロセッサ、ローカルメモリ、DMAコントローラは同じ半導体基板に設けられていることを特徴とする請求項13に記載の情報処理システム。
  15. 前記共有メモリは、バスを介して前記複数のプロセッサと接続されていることを特徴とする請求項13に記載の情報処理システム。
  16. 各前記プロセッサ、関連するローカルメモリ、DMAコントローラ、共有メモリは同じ半導体基板に設けられていることを特徴とする請求項15に記載の情報処理システム。
  17. 動作時に前記複数のプロセッサと接続され、前記共有メモリと接続可能であり、前記複数のプロセッサを管理可能である主プロセッサをさらに備えることを特徴とする請求項13から16のいずれか1項に記載の情報処理システム。
  18. 命令の実行のための、ハードウェアキャッシュメモリではないローカルメモリと、
    前記ローカルメモリと接続されたDMAコントローラとを有し、共有メモリと通信可能な複数の並列的なプロセッサと、
    動作時に複数の前記プロセッサと接続され、前記共有メモリと接続可能であり、前記複数のプロセッサを管理可能である主プロセッサとを備え、
    各プロセッサのそれぞれの前記DMAコントローラは、前記プロセッサにより発行された1つのDMAコマンドに応じて、共有メモリとローカルメモリ間の複数のデータブロックの転送を担うことが可能であることを特徴とする情報処理システム。
  19. 前記主プロセッサと接続されており、
    共有メモリと、1つ以上の前記ローカルメモリとのうちのすくなくとも一方から取得されたデータをキャッシュデータとして格納可能なハードウェアキャッシュメモリをさらに備えることを特徴とする請求項18に記載の情報処理システム。
  20. プロセッサによってDMAコントローラに発行された1つのDMAコマンドに応じて、共有メモリと、前記プロセッサのローカルメモリ間で複数のデータブロックを転送する手順を有し、
    前記プロセッサは、動作時に前記共有メモリと通信可能であり、
    前記DMAコントローラは、動作時に前記ローカルメモリと接続可能であることを特徴とする情報処理方法。
  21. 前記ローカルメモリ内において複数のエントリを含むリストを構築する手順を有し、
    それぞれの前記エントリは、転送されるデータブロックの開始アドレスおよびサイズを少なくとも含むことを特徴とする請求項20に記載の情報処理方法。
  22. 前記DMAコマンドは、前記リストにおける少なくとも1つのエントリを指定することを特徴とする請求項21に記載の情報処理方法。
  23. 前記リスト内の前記少なくとも一つのエントリ内に指定された前記開始アドレスと前記サイズを用いて、対応するデータブロックを転送のために特定する手順と、
    このデータブロックを共有メモリとローカルメモリ間で転送する手順とを有することを特徴とする請求項22に記載の情報処理方法。
  24. 一つのエントリを用いて、リスト内の別のエントリを特定可能になるように、前記リスト内のエントリを関連づける手順をさらに有することを特徴とする請求項21から23のいずれか1項に記載の情報処理方法。
  25. ローカルメモリを有しており、動作時に共有メモリと通信可能なプロセッサと、
    動作時に前記ローカルメモリと接続されるDMAコントローラとを有するシステムにおいて、
    前記プロセッサによって前記DMAコントローラに発行された1つのDMAコマンドに応じて、共有メモリと、プロセッサのローカルメモリ間で複数のデータブロックの転送をコンピュータに実行せしめることを特徴とするプログラム。
  26. 請求項25に記載のプログラムを記憶したことを特徴とする記憶媒体。
JP2006000923A 2005-01-05 2006-01-05 情報処理方法および装置 Active JP4346612B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/029,891 US7698473B2 (en) 2005-01-05 2005-01-05 Methods and apparatus for list transfers using DMA transfers in a multi-processor system

Publications (2)

Publication Number Publication Date
JP2006190301A true JP2006190301A (ja) 2006-07-20
JP4346612B2 JP4346612B2 (ja) 2009-10-21

Family

ID=36641981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006000923A Active JP4346612B2 (ja) 2005-01-05 2006-01-05 情報処理方法および装置

Country Status (8)

Country Link
US (1) US7698473B2 (ja)
EP (1) EP1834245B1 (ja)
JP (1) JP4346612B2 (ja)
KR (1) KR100938942B1 (ja)
CN (1) CN100524270C (ja)
DE (1) DE602006007944D1 (ja)
TW (1) TWI352905B (ja)
WO (1) WO2006073204A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071054A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd データ転送制御方法、データ処理装置及び画像処理装置
JP2012508428A (ja) * 2008-12-22 2012-04-05 インテル コーポレイション 単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステム
JP2021520566A (ja) * 2018-06-27 2021-08-19 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070156947A1 (en) * 2005-12-29 2007-07-05 Intel Corporation Address translation scheme based on bank address bits for a multi-processor, single channel memory system
JP2007207026A (ja) * 2006-02-02 2007-08-16 Matsushita Electric Ind Co Ltd Dma転送装置
US8041847B1 (en) * 2007-05-10 2011-10-18 Marvell International Ltd. Periodic and conditional execution of DMA operations
KR100959136B1 (ko) 2008-07-16 2010-05-25 한국전자통신연구원 직접 메모리 접근 제어기 및 직접 메모리 접근 채널의데이터 전송 방법
JP5423483B2 (ja) * 2010-03-04 2014-02-19 株式会社リコー データ転送制御装置
US10678744B2 (en) * 2010-05-03 2020-06-09 Wind River Systems, Inc. Method and system for lockless interprocessor communication
KR101706201B1 (ko) 2010-12-15 2017-02-15 한국전자통신연구원 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
KR102306359B1 (ko) * 2015-01-28 2021-09-30 삼성전자주식회사 복수의 프로세서들을 이용한 데이터 운용 방법 및 장치
KR102075086B1 (ko) 2018-11-13 2020-02-07 현대오트론 주식회사 Dma를 활용한 epm 마이크로틱 생성 긴급 중단 방법
US11385820B2 (en) * 2020-03-04 2022-07-12 Micron Technology, Inc. Command batching for a memory sub-system
CN113849433B (zh) * 2021-09-14 2023-05-23 深圳市昂科技术有限公司 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2559792B2 (ja) * 1988-02-17 1996-12-04 日産自動車株式会社 Cadスケッチ入力作図方法
JPH01293431A (ja) 1988-05-23 1989-11-27 Toshiba Corp メモリアクセス方式
JPH0736820A (ja) 1993-07-23 1995-02-07 Oki Electric Ind Co Ltd I/o制御装置
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5634099A (en) * 1994-12-09 1997-05-27 International Business Machines Corporation Direct memory access unit for transferring data between processor memories in multiprocessing systems
US5644784A (en) * 1995-03-03 1997-07-01 Intel Corporation Linear list based DMA control structure
US5691984A (en) 1995-08-15 1997-11-25 Honeywell Inc. Compact, adaptable brouting switch
JPH1091571A (ja) 1996-09-19 1998-04-10 Fujitsu Ltd Dmaコントローラのチェーン外れ検出方法及びdmaコントローラ
JP3484056B2 (ja) 1996-10-18 2004-01-06 松下電器産業株式会社 データ転送装置及びデータ転送システム
JP3712842B2 (ja) * 1997-08-05 2005-11-02 株式会社リコー データ転送制御方法、データ転送制御装置及び情報記録媒体
US6128674A (en) * 1997-08-08 2000-10-03 International Business Machines Corporation Method of minimizing host CPU utilization in driving an adapter by residing in system memory a command/status block a soft interrupt block and a status block queue
US6782465B1 (en) * 1999-10-20 2004-08-24 Infineon Technologies North America Corporation Linked list DMA descriptor architecture
US6529968B1 (en) * 1999-12-21 2003-03-04 Intel Corporation DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
JP2002163239A (ja) 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP3878508B2 (ja) 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6804741B2 (en) * 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
JP2004094452A (ja) * 2002-08-30 2004-03-25 Fujitsu Ltd Dmaコントローラおよびdma転送方法
US6981072B2 (en) * 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071054A (ja) * 2006-09-13 2008-03-27 Ricoh Co Ltd データ転送制御方法、データ処理装置及び画像処理装置
JP2012508428A (ja) * 2008-12-22 2012-04-05 インテル コーポレイション 単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステム
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
JP2021520566A (ja) * 2018-06-27 2021-08-19 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
JP7053891B2 (ja) 2018-06-27 2022-04-12 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム

Also Published As

Publication number Publication date
TW200641624A (en) 2006-12-01
CN101099141A (zh) 2008-01-02
DE602006007944D1 (de) 2009-09-03
US7698473B2 (en) 2010-04-13
EP1834245B1 (en) 2009-07-22
WO2006073204A3 (en) 2007-02-08
KR100938942B1 (ko) 2010-01-26
EP1834245A2 (en) 2007-09-19
CN100524270C (zh) 2009-08-05
WO2006073204A2 (en) 2006-07-13
US20060149861A1 (en) 2006-07-06
JP4346612B2 (ja) 2009-10-21
TWI352905B (en) 2011-11-21
KR20070098900A (ko) 2007-10-05

Similar Documents

Publication Publication Date Title
JP4346612B2 (ja) 情報処理方法および装置
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
JP3802042B2 (ja) キャッシュメモリ実装方法および装置、キャッシュメモリシステム
JP4219369B2 (ja) プロセッサシステム内においてスタックを分離して管理する方法および装置
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
JP4386373B2 (ja) ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置
JP4243318B2 (ja) ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
KR100881810B1 (ko) 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구
JP4645973B2 (ja) 命令セットのエミュレーションのための方法、装置及びシステム
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
JP4134182B2 (ja) タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置
JP2006260556A (ja) ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
JP4583327B2 (ja) 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置
JP2006260555A (ja) 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081106

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090302

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090415

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090420

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090714

R150 Certificate of patent or registration of utility model

Ref document number: 4346612

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

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

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