JP2007316859A - マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 - Google Patents

マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 Download PDF

Info

Publication number
JP2007316859A
JP2007316859A JP2006144501A JP2006144501A JP2007316859A JP 2007316859 A JP2007316859 A JP 2007316859A JP 2006144501 A JP2006144501 A JP 2006144501A JP 2006144501 A JP2006144501 A JP 2006144501A JP 2007316859 A JP2007316859 A JP 2007316859A
Authority
JP
Japan
Prior art keywords
data
buffer
processor
graphics processor
gpu
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
JP2006144501A
Other languages
English (en)
Other versions
JP4439491B2 (ja
Inventor
Nobuo Sasaki
伸夫 佐々木
Masao Shimizu
正朗 清水
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
Priority to JP2006144501A priority Critical patent/JP4439491B2/ja
Priority to US11/805,165 priority patent/US8730248B2/en
Publication of JP2007316859A publication Critical patent/JP2007316859A/ja
Application granted granted Critical
Publication of JP4439491B2 publication Critical patent/JP4439491B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Abstract

【課題】マルチグラフィックスシステムにおいてデータ転送の効率化を図ることが必要である。
【解決手段】マルチグラフィックスプロセッサシステム400は、CPU300と、CPU300と入出力インタフェース180を介して接続された第1GPU100と、第1GPU100に第2GPU用インタフェース140を介して接続された第2GPU200とを含む。第1GPU100内に、CPU300が第2GPU用インタフェース140を経由して第2GPU200と通信するための第2GPU用バス170が設けられる。CPU300は、第1GPU100内の第2GPU用バス170を経由して第2GPU200とデータ通信を行う際、データ通信のタイミングを通知するための信号の受信を待ってから、データ通信を行う。
【選択図】図8

Description

この発明は、マルチプロセッサシステム、特に描画データを演算処理するマルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法に関する。
パーソナルコンピュータやゲーム専用機において、高品質な3次元コンピュータグラフィックスを用いたゲームやシミュレーションなどのアプリケーションを実行したり、実写とコンピュータグラフィックスを融合させた映像コンテンツの再生を行うなど、高画質のグラフィックスの利用が広がっている。
パーソナルコンピュータやゲーム専用機に搭載されるグラフィックスチップの性能が描画品質を左右するため、メーカー各社は、さらなる性能を競って新世代のグラフィックスチップの開発に力を注いでおり、グラフィックスチップをめぐる開発競争は激化している。また、高度なグラフィックスは、ハードウエア技術のみならず、ソフトウエア技術が融合することにより実現される。グラフィックスチップのもつ高性能の描画処理機能をソフトウエア技術を駆使して有効に活用することが描画品質を高める上で重要である。
グラフィックスチップの開発競争が激しい中、高度な描画処理機能を採り入れたグラフィックスチップが次々に開発され、グラフィックスシステムの将来的な発展性や拡張性が確保されている。その一方で、グラフィックスシステムの発展性を確保しつつ、旧世代のプログラミング言語との互換性をもたせたり、さまざまなビデオ出力フォーマットやプロトコルに対応するといった柔軟性もグラフィックスチップの開発には求められている。
柔軟性や拡張性をもたせるために複数のグラフィックスチップを含むマルチグラフィックスプロセッサシステムが提供され、CPUに接続されて用いられることがある。このようなマルチグラフィックスプロセッサシステムにおいては、CPUが複数のグラフィックスチップとデータのやりとりをすることになり、データ通信の効率化を図ることがシステムの処理性能を向上させる上で重要となる。
ほとんどの汎用プロセッサは、アウトオブオーダー(順不同;out of order)で命令を実行することができる。すなわち、互いに依存関係がない複数の命令は、与えられたプログラムコードにおける順序通りには実行されず、より効率的な順序で実行される。一方、グラフィックスプロセッサには、アウトオブオーダーの命令実行モードをサポートせず、インオーダー(順序通り;in order)の命令実行を前提とするアーキテクチャが採用されているものもある。汎用プロセッサとグラフィックスプロセッサが入出力インタフェースを介して互いに接続され、両者の間でデータの読み書きがなされる場合、データ転送の効率を犠牲にすることなく、このような命令実行モードの違いを吸収する必要が生じる。
本発明はこうした課題に鑑みてなされたものであり、その目的は、各種の環境に対応できる柔軟性のあるマルチグラフィックスプロセッサシステムを提供し、描画処理の効率化を図ることにある。また、別の目的は、入出力インタフェースを介して接続されたプロセッサ間でデータ転送の効率化を図ることにある。
上記課題を解決するために、本発明のある態様のマルチプロセッサシステムは、アウトオブオーダーまたはインオーダーで命令を処理可能な汎用プロセッサユニットと、インオーダーで命令を処理する専用プロセッサユニットと、前記汎用プロセッサユニットと前記専用プロセッサユニットとを互いに通信可能に接続するインタフェースユニットとを含む。前記インタフェースユニットは、前記汎用プロセッサユニットが前記専用プロセッサユニットに対してインオーダーで発行する書き込み命令によって書き込まれるべきデータを前記書き込み命令の発行順にキューイングし、キューイングされたデータをFIFO順で取り出して前記専用プロセッサユニットに供給するFIFOキューと、前記汎用プロセッサユニットが前記専用プロセッサユニットに対してアウトオブオーダーで発行する読み出し命令を受けて前記専用プロセッサユニットから読み出されたデータをダブルバッファ方式でバッファリングし、バッファリングされたデータが前記汎用プロセッサユニットからアウトオブオーダーで読み出されるダブルバッファとを含む。前記汎用プロセッサユニット内に前記インタフェースユニットとの間でデータを受け渡しするための中間バッファを設け、前記汎用プロセッサユニットは、インオーダーで発行した前記書き込み命令が前記中間バッファにバッファされたことを通知するアクノレッジ信号を受け取り次第、前記書き込み命令によって書き込まれるべきデータを前記中間バッファに転送してもよい。
本発明の別の態様は、マルチグラフィックスプロセッサシステムである。このマルチグラフィックスプロセッサシステムは、メインプロセッサと、入出力インタフェースを介して前記メインプロセッサに接続された第1のグラフィックスプロセッサと、外部接続用インタフェースを介して前記第1のグラフィックスプロセッサに接続された第2のグラフィックスプロセッサとを含む。前記第1のグラフィックスプロセッサ内に、前記メインプロセッサが前記外部接続用インタフェースを経由して前記第2のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、前記メインプロセッサは、前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を行う際、前記データ通信のタイミングを通知するための信号の受信を待ってから、前記データ通信を行う。
この態様によると、メインプロセッサからのデータ通信のリクエストが第1のグラフィックスプロセッサ内のバッファに滞留して内部バスを圧迫するのを避けることができる。
前記第1のグラフィックスプロセッサ内の前記中継インタフェースに、前記メインプロセッサが前記第2のグラフィックスプロセッサに対してデータを書き込むための書き込みバッファが設けられ、前記書き込みバッファに空きが生じた場合に、バッファ空き通知信号が前記メインプロセッサに通知され、前記メインプロセッサは前記バッファ空き通知信号の受信を待ってから、前記書き込みバッファにデータを書き込んでもよい。
前記第1のグラフィックスプロセッサ内の前記中継インタフェースに、前記メインプロセッサが前記第2のグラフィックスプロセッサからデータを読み出すための読み出しバッファが設けられ、前記読み出しバッファが一杯になった場合に、バッファフル通知信号が前記メインプロセッサに通知され、前記メインプロセッサは前記バッファフル通知信号の受信を待ってから、前記読み出しバッファに蓄積されたデータを読み出してもよい。
前記第2のグラフィックスプロセッサは、プロセッサコアとビデオメモリを1つのチップ上に集積したメモリ混載型プロセッサチップであってもよい。これによれば、第2のグラフィックスプロセッサにおいて、メモリへの高速なアクセスが可能であり、メモリの読み書きが頻繁になされる処理を高速に行い、その処理結果を第1のグラフィックスプロセッサに供給することができる。
前記第1のグラフィックスプロセッサは、フレームバッファとバス結合したプロセッサコアを含んでもよい。これによれば、第1のグラフィックスプロセッサは、第2のグラフィックスプロセッサから描画データを受け取り、容量の大きいフレームバッファにいったん記憶し、外部のメモリに記憶された描画データに対して、さらに描画処理を施すことができる。
本発明のさらに別の態様もまた、マルチグラフィックスプロセッサシステムである。このマルチグラフィックスプロセッサシステムは、入出力インタフェースを介してメインプロセッサに接続された第1のグラフィックスプロセッサと、外部接続用インタフェースを介して前記第1のグラフィックスプロセッサに接続された第2のグラフィックスプロセッサとを含む。前記第1のグラフィックスプロセッサ内に、前記メインプロセッサが前記外部接続用インタフェースを経由して前記第2のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、前記メインプロセッサが前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を開始する前に、前記データ通信のタイミングを通知するための信号を前記メインプロセッサに送信する。
本発明のさらに別の態様は、グラフィックスプロセッサである。このグラフィックスプロセッサは、メインプロセッサと接続するための入出力インタフェースと、他のグラフィックスプロセッサと接続するための外部接続用インタフェースとを含む。前記メインプロセッサが前記外部接続用インタフェースを経由して前記他のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、前記メインプロセッサが前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記他のグラフィックスプロセッサとデータ通信を開始する前に、前記データ通信のタイミングを通知するための信号を前記メインプロセッサに送信する。
本発明のさらに別の態様は、データ転送方法である。この方法は、汎用プロセッサユニットと専用プロセッサユニットが相互に通信可能に接続されたマルチプロセッサシステムにおけるデータ転送方法であって、前記汎用プロセッサユニットにより前記専用プロセッサユニットに対してインオーダーで書き込み命令が発行された場合に、前記書き込み命令によって書き込まれるべきデータを前記書き込み命令の発行順にFIFOキューにキューイングしてFIFO順で前記専用プロセッサユニットに供給するステップと、前記汎用プロセッサユニットにより前記専用プロセッサユニットに対してアウトオブオーダーで読み出し命令が発行された場合に、前記読み出し命令によって前記専用プロセッサユニットから読み出されたデータをダブルバッファにバッファリングするステップと、前記汎用プロセッサユニットが前記ダブルバッファにバッファリングされたデータをアウトオブオーダーで読み出すステップとを含む。
本発明のさらに別の態様もまた、データ転送方法である。この方法は、メインプロセッサの入出力インタフェースに第1のグラフィックスプロセッサが接続され、前記第1のグラフィックスプロセッサの外部接続用インタフェースに第2のグラフィックスプロセッサが接続されたマルチグラフィックスプロセッサシステムにおけるデータ転送方法であって、前記メインプロセッサは、前記第1のグラフィックスプロセッサ内に設けられた中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を行う際、前記第1のグラフィックスプロセッサ内の前記データ通信用に設けられたバッファから前記データ通信のタイミングを通知するための信号が発信されるのを待ってから、前記データ通信を行う。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、プロセッサ、装置、システム、コンピュータプログラム、プログラム製品、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、柔軟性に富んだマルチグラフィックスプロセッサシステムを提供することができる。また、マルチプロセッサシステムにおいてプロセッサ間の効率の良いデータ転送を実現することができる。
実施の形態1
実施の形態1において、汎用プロセッサとグラフィックスプロセッサが入出力インタフェースを介して相互に通信可能に接続されたマルチプロセッサシステムにおいて、汎用プロセッサがグラフィックスプロセッサに対してリード(読み出し;read)/ライト(書き込み;write)命令を発行するときのデータ転送の仕組みを説明する。
図1および図2において、汎用プロセッサシステム500の構成を説明する。図3A〜3Dを参照して、汎用プロセッサシステム500がターゲットデバイス710に対してライト命令を発行するときの処理の流れを説明する。図4A〜4Cを参照して、汎用プロセッサシステム500がターゲットデバイス710に対してリード命令を発行するときの処理の流れを説明する。図5〜図7を参照して、汎用プロセッサシステム500とグラフィックスプロセッシングユニット(GPU)700を接続するインタフェースにおいて命令実行方式の違いを吸収する機構を説明する。
図1は、実施の形態1に係る汎用プロセッサシステム500の構成図である。汎用プロセッサシステム500は、マルチプロセッサシステムであり、1つのプロセッシングエレメント(PE)520と、複数のサブプロセッシングエレメント(SPE)530a、530b、…、530n(以下、これらを総称するときは添え字a、bなどを省略して符号530で代表する)と、メインメモリ510と、I/Oコントローラ560とがバス550で結合されている。汎用プロセッサシステム500は、これらの構成を一つのパッケージに集積したマルチコアプロセッサシステムであってもよい。
PE520は、汎用プロセッサシステム500全体を統括的に制御する。複数のSPE530は非同期で動作する。汎用プロセッサシステム500は、入出力インタフェース(以下、「IOIF」と呼ぶ)580を介して外部デバイスと接続可能であり、I/Oコントローラ560は、PE520、SPE530と外部デバイスとの間のデータの読み書きを制御する。
図2は、SPE530の構成図である。SPE530は、プロセッサユニット532と、ローカルメモリ534と、DMAコントローラ536とを含む。プロセッサユニット532は、DMAコントローラ536にDMA命令を発行する。DMAコントローラ536の命令制御部538は、プロセッサユニット532からのDMA命令を128バイト単位のバス上の転送命令に分解し、コマンドキュー539にキューイングする。
SPE530はローカルメモリ534を内部にもち、DMA転送されるデータはローカルメモリ534に設けられたデータバッファ535に格納される。命令制御部538が外部デバイスにライトコマンドを発行し、ライトOKのACK(アクノレッジ、acknowledge)信号が外部デバイスから返ってくると、命令制御部538は、ローカルメモリ534にアクセスしてライトすべきデータを読み出し、DMA転送する。また、命令制御部538は、外部デバイスからリードコマンドにしたがってDMA転送されたデータをローカルメモリ534のデータバッファ535に格納する。
同図では、コマンドキュー539にはDMA転送命令としてコマンド1からコマンド8が格納されており、データバッファ535にはそれぞれコマンド1からコマンド8により転送されるデータ1からデータ8が格納される。これらのコマンドは、具体的にはリードコマンドやライトコマンドである。
命令制御部538は、命令の実行モードをアウトオブオーダー実行モードあるいはインオーダー実行モードに切り替え設定する実行モード切替部を含む。実行モード切り替えは、レジスタにアウトオブオーダー実行モードまたはインオーダー実行モードを指定するための値を書き込むことでなされる。アウトオブオーダー実行モードでは、コマンドの発行順序に制約されることなく、効率の良い順序でデータが転送され、インオーダー実行モードでは、コマンドの発行順序通りにデータが転送される。
汎用プロセッサシステム500と外部デバイスを接続するIOIF580は、上りと下りの2つのチャネルをもち、メモリバスに匹敵する高いバンド幅、たとえば、数十ギガバイト/秒を実現している。また、非同期動作する複数のSPE530からの同時データ転送を実現するために、バス上でのデータパケットの最大サイズは128バイトと小さくしている。したがって、1つのパケットによるバスの占有時間は非常に短い。
この短い占有時間内に、ライトコマンドを例に説明すると、SPE530からのアドレスコマンドの送出、外部デバイスからのACKの返送、SPE530からのデータの送出、外部デバイスにおけるデータの受け取りなどを完了することは不可能である。そこで、汎用プロセッサシステム500は、アドレスコマンドパケットとデータパケットの転送を複数、同時に行うスプリットトランザクション(split transaction)を採用している。以下では、アドレスコマンドパケット、データパケットをそれぞれ単に「コマンド」、「データ」と呼ぶ。
図3A〜3Dおよび図4A〜4Cを参照して、スプリットトランザクションの基本的な動作を説明する。実際のシステムでは、後に述べるようにIOIF580などに内部バッファが介在するので、実際のデータ転送はより複雑になるが、ここでは途中のバッファリングは省略して、汎用プロセッサシステム500とターゲットデバイス710間のデータ転送動作を説明する。
図3A〜図3Cは、スプリットトランザクションによるライトコマンドの実行過程を説明する図である。ここでは、汎用プロセッサシステム500内に2つのSPE530a、530bがあり、それぞれがライトコマンドを発行する。第1のSPE530aのコマンドキュー539aにはコマンド1からコマンド4がキューイングされており、各コマンドで転送すべきデータ1からデータ4がデータバッファ535aに格納されている。第2のSPE530bのコマンドキュー539bにはコマンド5からコマンド8がキューイングされており、各コマンドで転送すべきデータ5からデータ8がデータバッファ535bに格納されている。各コマンドは、ライトコマンドであり、ライト先のアドレスが格納されている。以下、第1のSPE530aを「SPE0」、第2のSPE530bを「SPE1」と呼ぶ。
汎用プロセッサシステム500はIOIF580を介して2つのターゲットデバイス710a、710bを接続している。以下、第1のターゲットデバイス710aを「ターゲットデバイス1」、第2のターゲットデバイス710bを「ターゲットデバイス2」と呼ぶ。汎用プロセッサシステム500が送出するコマンドは、コマンドに含まれるアドレスに応じていずれかのターゲットデバイスに送られる。
図3Aに示すように、SPE0のコマンドキュー539aの先頭からコマンド1が、SPE1のコマンドキュー539bの先頭からコマンド5がそれぞれIOIF580に送出される。コマンド1、コマンド5に含まれるアドレスはともにターゲットデバイス1を指しており、これらのコマンドは、ターゲットデバイス1のコマンドバッファに送られる。
図3Bに示すように、ターゲットデバイス1のコマンドバッファにはコマンド1、コマンド5が格納される。ターゲットデバイス1のデータバッファにはそれぞれのコマンドで転送されるデータを保持するだけの空きがあり、ターゲットデバイス1は、コマンド1に対するACK1、コマンド5に対するACK5をそれぞれIOIF580を介して汎用プロセッサシステム500に返信する。
図3Cに示すように、ターゲットデバイス1からACK1を受け取ったSPE0は、データバッファ535aからコマンド1に対応するデータ1を読み出して、IOIF580に送出する。また、ターゲットデバイス1からACK5を受け取ったSPE1は、データバッファ535bからコマンド5に対応するデータ5を読み出して、IOIF580に送出する。IOIF580に送出されたデータ1、データ5はターゲットデバイス1のデータバッファに格納される。
図3Dを参照して、スプリットトランザクションの効果を説明する。SPE0のコマンドキュー539aから既にコマンド1、コマンド2が送出されており、ターゲットデバイス1のコマンドバッファに到着した。SPE0はその後、コマンドキュー539aからコマンド3をIOIF580に送出した。ターゲットデバイス1はコマンド1に対するACK1を既にSPE0に返送し終わっており、ACK1を受け取ったSPE0は現在、コマンド1に対するデータ1をIOIF580に送出しているところである。
ところが、ターゲットデバイス1は、コマンド2を受け取ったとき、データバッファに空きがなかったため、すぐにはコマンド2に対してACK2を返さなかったとする。このとき、SPE0が発行したコマンド2に対するACK2の返送を待つことなく、SPE1のコマンドキュー539bからはコマンド5が送出される。ターゲットデバイス2は、その後、データバッファに空きが生じたため、コマンド2に対するACK2を返信する。
このように、スプリットトランザクションでは、複数のSPE530がIOIF580を共有してデータ転送を行う際、あるSPEがACK待ちであっても、別のSPEによるデータ転送がブロックされることがない。非同期に動作する複数のSPE530がIOIF580の帯域を共有しながらコマンドを実行して、複数のターゲットデバイス710にデータを書き込むことができるから、IOIF580の帯域を最大限に利用してデータ転送効率の向上を図ることができる。
図4A〜図4Cは、リードコマンドの場合のスプリットトランザクションの動作を説明する図である。SPE0のコマンドキュー539aにはコマンド1からコマンド4がキューイングされており、転送されたデータを格納するデータバッファ535aは空である。SPE1のコマンドキュー539bにはコマンド5からコマンド8がキューイングされており、転送されたデータを格納するデータバッファ535bは空である。各コマンドは、リードコマンドであり、リード先のアドレスが格納されている。
図4Aに示すように、SPE0のコマンドキュー539aの先頭からコマンド1が、SPE1のコマンドキュー539bの先頭からコマンド5がそれぞれIOIF580に送出される。コマンド1に含まれるアドレス1はターゲットデバイス1を指しており、ターゲットデバイス1のコマンドバッファに送られる。コマンド5に含まれるアドレス5はターゲットデバイス2を指しており、ターゲットデバイス2のコマンドバッファに送られる。
図4Bに示すように、ターゲットデバイス1のコマンドバッファにはコマンド1が格納され、ターゲットデバイス1は、コマンド1に含まれるアドレス1で指定されたデータ1を読み出して、IOIF580に送出する。また、ターゲットデバイス2のコマンドバッファにはコマンド5が格納され、ターゲットデバイス2は、コマンド5に含まれるアドレス5で指定されたデータ5を読み出して、IOIF580に送出する。
図4Cに示すように、SPE0はターゲットデバイス1から受け取ったデータ1をデータバッファ535aに格納し、SPE1はターゲットデバイス2から受け取ったデータ5をデータバッファ535bに格納する。
リードコマンドの場合も、ライトコマンドと同様に、スプリットトランザクションにより、あるSPEがリードコマンドに対するデータを待っている間も、別のSPEがリードコマンドを実行することができる。
IOIF580は、複数のリクエスタ(ここでは、SPE0とSPE1)と複数のターゲットデバイス(ここでは、ターゲットデバイス1とターゲットデバイス2)間のデータ転送をスプリットトランザクションの仕組みによりサポートしている。たとえば、SPE0とターゲットデバイス2の通信と、SPU1とターゲットデバイス1の通信を同時に並行して実行することができる。スプリットトランザクションは、複数の通信ペアが同時に並行して通信を実行する場合、一方の通信ペアのデータ通信が何らかの事情で滞っている場合に、他方の通信ペアのデータ通信がブロックされないことを保証している。
ライトコマンドやリードコマンドはバスの帯域に適したパケット単位に分割されて実行される。データ転送の効率化のためには、コマンドパケットを受け取ったターゲットデバイスが、発行されたコマンドパケットの順序に制約されることなく、転送すべきデータが準備され次第、次々に転送することができるアウトオブオーダー通信の仕組みが必要になる。IOIF580は、このアウトオブオーダー通信をサポートしている。
アウトオブオーダー通信は、複数のリクエスタと複数のターゲットデバイス間で同時に通信する場合に効率が良い方式であるが、既存のターゲットデバイスの中には、インオーダーで命令を実行するアーキテクチャが採用されているものも多く、そのようなターゲットデバイスにはコマンドとデータをインオーダーで転送する必要がある。リクエスタが、インオーダーで命令を実行することを前提とするターゲットデバイスとの間でデータ転送を行う場合、リクエスタとターゲットデバイス間のインタフェースにバッファを設け、命令の実行方式の違いを吸収する必要がある。
以下、アウトオブオーダー方式、インオーダー方式のいずれによる命令実行も可能な汎用プロセッサユニットと、インオーダー方式でしか命令を実行できないグラフィックスプロセッサユニットとが接続されたマルチプロセッサシステムにおいて、命令実行方式の違いを吸収しつつ、データ転送効率を高める仕組みを説明する。
図5は、汎用プロセッサシステム500とGPU(Graphic Processing Unit)700がIOIF580を介して接続されたマルチプロセッサシステムの構成図である。汎用プロセッサシステム500は、アウトオブオーダー方式、インオーダー方式のいずれかのモードに切り替えて命令を実行可能である。一方、GPU700は、インオーダー方式でのみ命令を実行可能であり、汎用プロセッサシステム500からGPU700へ命令を供給する場合、インオーダーで命令を転送する必要がある。
汎用プロセッサシステム500内にはIOIF580に対するデータの受け渡しのためにI/Oバッファ570が設けられる。I/Oバッファ570内には、各SPE530から発行されるコマンドを蓄積するコマンドバッファ572と、GPU700との間で転送されるデータを蓄積するデータバッファ574とが設けられる。
汎用プロセッサシステム500とGPU700の間には、両者の間でやりとりされるデータを中継するためのバッファを備えたインタフェースユニット600が設けられ、インタフェースユニット600において、アウトオブオーダー方式とインオーダー方式という命令実行方式の違いを吸収する。汎用プロセッサシステム500はIOIF580を介してインタフェースユニット600と接続され、GPU700はバス590を介してインタフェースユニット600と接続される。
汎用プロセッサシステム500の各SPE530は、アウトオブオーダー方式による命令実行を基本とするが、GPU700に対してライトコマンドを実行する場合は、インオーダー方式に切り替える。各SPE530の命令制御部538は、インオーダー方式に切り替えるために、ガーデッド(guarded)転送というモードを指定してコマンドを発行する。
インタフェースユニット600内には、ライトコマンドとライトコマンドにより書き込まれるべきデータをFIFO(First In First Out)順でバッファするためのライトFIFO620が設けられる。各SPE530によりインオーダーモードで発行されたコマンドは、I/Oバッファ570のコマンドバッファ572にいったんバッファリングされた後、ライトFIFO620に発行順にキューイングされ、FIFO順で取り出されてGPU700に供給される。また、ライトコマンドにより書き込まれるべきデータは、I/Oバッファ570のデータバッファ574にいったんバッファリングされた後、コマンドの発行順と同じ順序でライトFIFO620にキューイングされ、FIFO順で取り出されてGPU700に供給される。
これにより、GPU700は、汎用プロセッサシステム500からインオーダーでライトコマンドとデータを受け取り、インオーダー方式にしたがってメモリへの書き込みを実行することができる。すなわち、GPU700において、メモリ領域にデータを書き込むためのコマンドの列とデータの列を見た場合、両者の順序が一致しており、コマンド列の順序とは異なる順序でデータ列が供給されることはない。
各SPE530は、GPU700に対してリードコマンドをインオーダー方式ではなく、アウトオブオーダー方式で実行する。汎用プロセッサシステム500がGPU700に対してコマンドを転送するとき、リードコマンドとライトコマンドで命令実行モードを異ならせる理由は後述する。
インタフェースユニット600内には、汎用プロセッサシステム500から転送されたリードコマンドに応じてGPU700がプッシュするデータをバッファするためのリードダブルバッファ610が設けられる。リードダブルバッファ610は、2つのリードバッファ0とリードバッファ1を含むダブルバッファ方式で構成されており、一つのリードバッファがいっぱいになると、他方のリードバッファにデータが蓄積される。GPU700はインオーダー方式でリードコマンドを処理して、読み出したデータをリードダブルバッファ610のリードバッファ0またはリードバッファ1に転送する。
汎用プロセッサシステム500は、リードダブルバッファ610内のいっぱいになった方のリードバッファからアウトオブオーダー方式でデータを読み取り、I/Oバッファ570内のデータバッファ574に格納する。データバッファ574に格納されたデータは、リードコマンドを発行したSPE0またはSPE1にアウトオブオーダーで供給される。
図6は、図5の構成において、ライトコマンドの実行手順を説明する図である。汎用プロセッサシステム500がGPU700に対してライトコマンドを発行する際、ライト動作をインオーダーで実行するために、メモリマッピングされたGPU700のメモリ領域をガーデッド領域(guarded area)に設定し、ライトコマンドにガーデッド属性を指定する。ライトコマンドの実行手順は次のようになる。
(A1)SPE0がコマンドキュー539aからコマンド1を取り出し、I/Oバッファ570内のコマンドバッファ572へコマンド1を転送する。
(A2)I/Oバッファ570からSPE0へコマンド1に対するACKが返信される。
(A3)ACKを受け取ったSPE0がデータバッファ535aからデータ1を取り出し、I/Oバッファ570内のデータバッファ574に転送する。
(A4)SPE0がコマンドキュー539aからコマンド2を取り出し、I/Oバッファ570内のコマンドバッファ572へコマンドを転送する。
(A5)I/Oバッファ570からSPE0へコマンド2に対するACKが返信される。
(A6)ACKを受け取ったSPE0がデータバッファ535aからデータ2を取り出し、I/Oバッファ570内のデータバッファ574に転送する。
SPE0からはライトコマンドがインオーダーで実行されるため、コマンド1について(A1)コマンド発行、(A2)ACK返信、(A3)データ送出の一連の動作が完了するまでは、コマンド2について(A4)〜(A6)の動作は開始されない。より正確に説明すれば、インオーダーモードでは、(A3)においてコマンド1に対するデータ1が転送され、I/Oバッファ570からそのデータ転送に対するACKが返信されるまでは、(A4)以降のコマンド2についての処理を開始することができない。もっとも、スプリットトランザクションを採用しているため、SPE1がGPU700と行う通信は、SPE0がGPU700と行う通信からは独立しており、SPE0とGPU700の間の通信がACK待ちであっても、SPE1とGPU700の間の通信がブロックされることはない。
(A1)〜(A6)で述べたSPE0とI/Oバッファ570の間のコマンド転送、ACK返信、およびデータ転送の一連の通信と並行して、I/Oバッファ570とインタフェースユニット600の間でも同様に、コマンド転送、ACK返信、およびデータ転送の一連の通信が以下のように行われる。
(B1)I/Oバッファ570がコマンドバッファ572からコマンド1を取り出し、インタフェースユニット600内のライトFIFO620へコマンドを転送する。
(B2)ライトFIFO620からI/Oバッファ570へコマンド1に対するACKが返信される。
(B3)ACKを受け取ったI/Oバッファ570がデータバッファ574からデータ1を取り出し、インタフェースユニット600内のライトFIFO620に転送する。
I/Oバッファ570内に中間バッファを設けたことで、(A1)〜(A3)で述べたSPE0とI/Oバッファ570間の通信と、(B1)〜(B3)で述べたI/Oバッファ570とインタフェースユニット600間の通信とを独立して行えるため、SPE0はIOIF580から先の通信の状況に制約されることなく、コマンドを次々に発行することができ、データ転送効率を高めることができる。
仮に、I/Oバッファ570内の中間バッファが存在せず、各SPE530が、インタフェースユニット600のライトFIFO620にコマンドが蓄積されたことを知らせるACKがインタフェースユニット600から返信されるのを待ってから、次のコマンドを発行するなら、IOIF580のレーテンシーのために、次のコマンドの発行が遅延することになる。コマンドの発行に遅延が生じるとIOIF580の帯域を使い切れず、データ転送効率が低下する。本実施の形態では、ライトコマンドがI/Oバッファ570のコマンドバッファにキューイングされた時点で直近のI/Oバッファ570からACKを受け取るため、コマンドが発行されてからACKを受け取るまでの時間が短い。したがって、ライトコマンドにインオーダー方式を採用しても、非常に短いレーテンシーでライトコマンドを次々と発行することができ、データ転送効率が低下することがなく、IOIF580の帯域を有効活用することができる。
図7は、図5の構成において、リードコマンドの実行手順を説明する図である。まず、比較のために、リードコマンドをインオーダー方式で実行する手順を説明し、インオーダー方式ではデータ転送効率が低下する問題を指摘する。その後、リードコマンドをアウトオブオーダーで実行することでデータ転送効率を高める仕組みを説明する。
(C1)SPE1がコマンドキュー539bからコマンド5を取り出し、I/Oバッファ570内のコマンドバッファ572へコマンド5を転送する。
(C2)I/Oバッファ570からインタフェースユニット600を経由してGPU700にコマンド5が転送され、GPU700がコマンド5に対応するデータ5をインタフェースユニット600内のリードダブルバッファ610に転送する。
(C3)インタフェースユニット600内のリードダブルバッファ610からI/Oバッファ570内のデータバッファ574にデータ5が転送される。
(C4)I/Oバッファ570内のデータバッファ574からSPE1のデータバッファ535bへデータ5が転送される。
(C5)SPE1がコマンドキュー539bからコマンド6を取り出し、I/Oバッファ570内のコマンドバッファ572へコマンド6を転送する。
(C6)I/Oバッファ570からインタフェースユニット600を経由してGPU700にコマンド6が転送され、GPU700がコマンド6に対応するデータ6をインタフェースユニット600内のリードダブルバッファ610に転送する。
(C7)インタフェースユニット600内のリードダブルバッファ610からI/Oバッファ570内のデータバッファ574にデータ6が転送される。
(C8)I/Oバッファ570内のデータバッファ574からSPE1のデータバッファ535bへデータ6が転送される。
SPE1からはリードコマンドがインオーダーで実行されるため、コマンド5について、(C1)SPE1からI/Oバッファ570へのコマンド転送、(C2)I/Oバッファ570からインタフェースユニット600を経由してGPU700へのコマンド転送とGPU700からインタフェースユニット600へのデータ転送、(C3)インタフェースユニット600からI/Oバッファ570へのデータ転送、(C4)I/Oバッファ570からSPE1へのデータ転送という一連の動作が完了するまでは、コマンド2についての(C5)〜(C8)の一連の動作を開始することができない。
このように、リードコマンドをインオーダーで実行すると、各SPE530は発行したリードコマンドに対応したデータを自分自身で受け取ってからでないと、次のリードコマンドを発行できないため、リードコマンドの発行に遅延が生じる。IOIF580は外部デバイスを接続するインタフェースであるから、メモリに対するアクセスとは違って、リードコマンドを発行してからデータが転送されてくるまでのレーテンシーは大きく、先のリードコマンドに対するデータの到着を待っていたのでは、リードコマンドによるデータ転送効率が著しく低下し、また、高速なIOIF580の帯域幅を有効に活用することができない。
汎用プロセッサシステム500からリードコマンドを転送されたGPU700はインオーダーで命令を処理するため、GPU700は、インタフェースユニット600のリードダブルバッファ610にインオーダーでデータを転送することになる。しかしながら、汎用プロセッサシステム500の各SPE530は、アウトオブオーダーでリードコマンドを処理するため、発行したリードコマンドの順でデータを読み出す必要はない。そこで、汎用プロセッサシステム500は、リードダブルバッファ610のいずれかのリードバッファがいっぱいになった時点でリードバッファからアウトオブオーダーでデータを読み出すことにする。このようにコマンドの発行順に制約されずに、アウトオブオーダーでリードバッファを読み出すならば、各SPE530は、先に発行されたリードコマンドに対してデータが転送されるのを待つことなく、次のリードコマンドを発行することができ、リードコマンドの発行が遅延することはない。
以上述べたように、汎用プロセッサシステム500にインオーダー命令実行を前提としたGPU700が接続されたマルチプロセッサシステムにおいて、汎用プロセッサシステム500からGPU700にライトコマンドを転送する場合、インタフェースユニット600にFIFOキューを設け、インオーダー方式で発行されるライトコマンドによって書き込まれるべきデータをライトコマンドと同じ順序でFIFOキューにキューイングし、FIFO順でGPU700に転送するように構成した。インオーダー実行方式のため、先に発行されたライトコマンドに対してACK信号が返送され、書き込みデータの転送が完了するまでは次のライトコマンドを発行することができないが、ACK信号を直近の中間バッファであるI/Oバッファ570から受け取るため、ライトコマンドの発行に大きな遅延は生じない。
また、リードコマンドの場合は、インタフェースユニット600にダブルバッファを設け、汎用プロセッサシステム500からリードコマンドの転送を受けたGPU700がインオーダーでリードコマンドを実行し、読み出したデータをダブルバッファにインオーダーで転送するようにした。アウトオブオーダー方式でリードコマンドを発行した汎用プロセッサシステム500は、このダブルバッファからアウトオブオーダーでデータを読み出すため、先に発行されたリードコマンドに対するデータの読み出し完了を待たずに、次のリードコマンドを発行することができ、リードコマンドの発行に遅延が生じることがなく、データ転送効率を高めることができる。
インタフェースユニット600にライト用にはFIFOキューを、リード用にはダブルバッファを設けた理由として、さらに次の点を挙げることができる。
まず、FIFOキューとダブルバッファの特性の違いを説明すると、バッファのために用意するSRAMのサイズと転送帯域幅について考えた場合、ダブルバッファよりもFIFOキューの方が面積効率が良い。また、ダブルバッファの場合は、通常の動作では、片方のバッファがいっぱいになるまではデータが送出されないが、FIFOキューでは到着した順にデータが送出される。
汎用プロセッサシステム500からGPU700へ転送されるデータは、描画コマンドやテクスチャデータなどであり、データサイズや転送頻度が頻繁に変化する。このようなサイズや発生頻度が定常的でないデータを転送する場合は、データが到着次第、GPU700へ転送されるFIFOキューを用いるのが適している。
一方、GPU700から汎用プロセッサシステム500へ転送されるデータは、描画された画像データであることが多いので、あらかじめデータサイズが決まっており、また、転送頻度も一定である。このようなサイズや発生頻度が定常的なデータを転送する場合は、一定量のデータがバッファされるのを待ってからデータ転送が起こるダブルバッファを用いても効率良くデータ転送することができる。転送開始時にデータの大きさが確定するため、ダブルバッファにデータを転送してもダブルバッファの片方のバッファがいっぱいにならない場合であっても、バッファに蓄積されたデータの大きさを調べてデータを読み出すことができる。また、汎用プロセッサシステム500からデータをアウトオブオーダーで読み取ることを可能にするためには、FIFOキューではなく、メモリにマップされるバッファでなければならない。
実施の形態1では、ターゲットデバイスとしてGPU700を取り上げて説明したが、ターゲットデバイスはインオーダーで命令を処理する他のプロセッシングユニット、たとえば、通信処理や音声処理などを専用に行う専用プロセッシングユニットであってもよい。
実施の形態2
実施の形態2では、実施の形態1で説明した技術を前提として、汎用プロセッサに複数のグラフィックスプロセッサを接続したマルチグラフィックスプロセッサシステムを説明する。汎用プロセッサに接続される複数のグラフィックスプロセッサにインオーダーのメモリアクセスしか実行できないものがある場合、実施の形態1で述べた技術を応用してそのグラフィックスプロセッサに対するインタフェースを設計することができる。
図8は、実施の形態2に係るマルチグラフィックスプロセッサシステム400の構成図である。マルチグラフィックスプロセッサシステム400は、第1GPU100と、第2GPU200と、フレームバッファ110と、CPU(Central Processing Unit)300と、メインメモリ310とを含む。
CPU300は、メインメモリ310に記憶されたプログラムをロードして実行し、メインメモリ310に対してデータの読み書きを行う。また、CPU300は、マルチグラフィックスプロセッサシステム400全体を統括的に制御する。
CPU300は、ここでは、単一のメインプロセッサとして説明するが、CPU300は、実施の形態1で説明したような複数のプロセッサを含むマルチプロセッサシステムであってもよく、複数のプロセッサコアを1個のパッケージに集積したマルチコアプロセッサであってもよい。マルチプロセッサシステムの場合、各プロセッサは非同期で動作する。
第1GPU100および第2GPU200は、それぞれグラフィックスプロセッサコアを搭載したグラフィックスチップである。第1GPU100と第2GPU200は、同種のグラフィックスチップであってもよく、互いに異なる処理機能を有する異種のグラフィックスチップであってもよい。
第1GPU100と第2GPU200は、1枚のグラフィックボード等の基板上に搭載されてもよく、第1GPU100と第2GPU200がそれぞれ別個の基板上に搭載され、2つの基板がコネクタにより接続される形態であってもよい。あるいは、CPU300が搭載されるマザーボード等の基板上に第1GPU100および第2GPU200の少なくとも一つが搭載される形態であってもよい。
第1GPU100は、入出力インタフェース180を介してCPU300と接続している。この入出力インタフェース180を介して、第1GPU100とCPU300は互いにデータのやりとりをすることができる。入出力インタフェース180は、実施の形態1で説明したIOIF580に相当する。
第1GPU100とCPU300は並列に処理を進めてもよく、第1GPU100とCPU300の間で逐次的に処理が実行されてもよい。第1GPU100により処理されたデータがCPU300に渡され、CPU300がさらに処理を施してもよく、CPU300により処理されたデータが第1GPU100に渡され、第1GPU100がさらに処理を施してもよい。
第1GPU100は、第1GPUコア120と、調停部130と、第2GPU用インタフェース140とを含む。
第1GPUコア120は、描画処理機能をもつグラフィックスエンジンであり、バス結合されたフレームバッファ110に対して描画データを読み書きすることができる。フレームバッファ110は、第1GPUコア120により読み書きされるメモリであり、テクスチャ、描画された画像データなどを保持する。第1GPUコア120は、描画データを外部に出力する端子を有し、出力された描画データはディスプレイに供給され、3次元グラフィックスが表示される。
調停部130は、CPU300からのデータを図示しないバッファに蓄積しながら、データに付随するアドレスに応じて第2GPU用インタフェース140と第1GPUコア120に振り分け、それぞれに供給する。第2GPU用バス170は、調停部130が第2GPU用インタフェース140との間で制御信号やデータをやりとりするための内部バスであり、第1GPU用バス160は、調停部130が第1GPUコア120との間で制御信号やデータをやりとりするための内部バスである。
第2GPU用インタフェース140は、第1GPU100の外部に第2GPU200を接続し、CPU300からのデータを第2GPU200のインタフェースプロトコルに変換し、第2GPU200に受け渡しするための中継インタフェースである。第1GPU100と第2GPU200は、第2GPU接続バス190によって相互接続される。
CPU300から第2GPU200に供給されるべきデータは、第1GPU100の第2GPU用インタフェース140に入力され、第2GPU用インタフェース140により第2GPU接続バス190を経由して第2GPU200に渡される。
CPU300は、メインメモリ310から読み出されたデータを第2GPU用インタフェース140を介して第2GPU200に供給してもよく、第1GPUコア120により描画演算処理されたフレームバッファ110内のデータを読み出して、第2GPU用インタフェース140を介して第2GPU200に供給してもよい。後者の場合は、第1GPUコア120による描画処理結果に対して第2GPU200がさらに描画演算処理を施すことができる。
また、第2GPU200からCPU300へ供給されるべきデータは、第2GPU接続バス190を経由して第1GPU100の第2GPU用インタフェース140に入力され、第2GPU用インタフェース140によりCPU300へ転送される。CPU300は、第2GPU200から供給される第2GPU用メモリ210内の描画データを第1GPU用バス160を経由して第1GPUコア120に供給してもよい。これにより、第2GPU200による描画処理結果に対して第1GPUコア120がさらに描画演算処理を施し、その処理結果をフレームバッファ110に保持することができる。
図9は、調停部130と第2GPU用インタフェース140の詳細な構成を説明する図である。同図では、調停部130が既にCPU300と第1GPUコア120の間で通信されるデータの分岐を終え、CPU300と第2GPU用インタフェース140の間で通信されるデータを処理する段階における構成のみを示している。
調停部130は、通知部132とバスインタフェース134を含む。第2GPU用インタフェース140は、汎用リードダブルバッファ(General-purpose Read Double Buffer)172、汎用ライトFIFO(General-purpose Write FIFO)174、カウンタ176、レジスタアクセス制御部142、ステータスレジスタ144、特権リード用レジスタ(Privileged Read Register)146、特権ライト用レジスタ(Privileged Write Register)148、専用リードFIFO152、および専用ライトFIFO154を含む。
汎用リードダブルバッファ172、汎用ライトFIFO174、およびカウンタ176は、調停部130のデータバス136と第2GPU用インタフェース140のデータバス150をブリッジする部分に設けられたバッファであり、CPU300と第2GPU200の間でデータの読み書きのタイミングを調整するために用いられる。
調停部130のバスインタフェース134は、CPU300から供給されたデータをデータバス136を経由して汎用ライトFIFO174に書き込み、汎用リードダブルバッファ172からデータバス136を経由して読み出されたデータをCPU300に供給するためのインタフェースである。
通知部132は、汎用リードダブルバッファ172がフルになった場合にシグナルを受け取り、CPU300に汎用リードダブルバッファ172がフルであることを通知し、CPU300にデータの読み出しを指示する。また、通知部132は、汎用ライトFIFO174に空きが生じた場合にシグナルを受け取り、CPU300に汎用ライトFIFO174に空きがあることを通知し、CPU300にデータの書き込みを指示する。
CPU300と第2GPU200の間でなされる通信内容は、第2GPU200の制御レジスタを読み書きするための特権リード用レジスタ146および特権ライト用レジスタ148へのアクセス命令、第2GPU200に供給する描画コマンドのパケットデータ、および第2GPU200の第2GPU用メモリ210から読み出される描画データに分かれる。
第2GPU200がCPU300と通信するためのハンドシェーク情報が通知部132を経由してCPU300に伝達され、CPU300はそのハンドシェーク情報をもとにソフトウエア制御でデータ通信を行う。CPU300は通知部132から通知を受け取るための専用レジスタをもち、通知部132はこの専用レジスタに書き込むことで通知信号をCPU300に送信することができる。
ステータスレジスタ144は、第2GPU用インタフェース140の状態を保持する。特権リード用レジスタ146は、第2GPU200の制御レジスタの状態を読み出すためのレジスタである。特権ライト用レジスタ148は、第2GPU200の制御レジスタに書き込みをするためのレジスタである。レジスタアクセス制御部142は、調停部130のバスインタフェース134からレジスタアクセスバス138経由でこれらのレジスタのアクセス要求を受け取り、これらのレジスタに対して値を読み書きする。
専用リードFIFO152および専用ライトFIFO154は、第2GPU200内部の周波数と第2GPU用インタフェース140の周波数の違いを吸収するために第2GPU用インタフェース140に設けられたFIFO形式のバッファであり、一例として256バイトの容量をもつ。
汎用リードダブルバッファ172は、第2GPU200により描画演算処理され、第2GPU用メモリ210に保持されたデータを読み出すためのバッファであり、2つのバッファA、バッファBを含む。一例として、2つのバッファA、バッファBは2キロバイトの容量のSRAMである。第2GPU用メモリ210から読み出されたデータは、第2GPU用インタフェース140の専用リードFIFO152にFIFO形式で蓄積され、データバス150を経由して順次、2つのバッファA、バッファBのいずれかに交互に書き込まれる。2つのバッファA、バッファBのいずれかが一杯になると、通知部132にバッファがフルであることを通知する信号(以下、「バッファフル通知信号」という)182、184が送られる。
汎用ライトFIFO174は、CPU300から第2GPU200へデータを送るためのFIFO形式のバッファであり、一例として8キロバイトの容量のFIFOである。汎用ライトFIFO174にキューイングされたデータは順次取り出され、データバス150を経由して専用ライトFIFO154に書き込まれる。汎用ライトFIFO174に空きが生じると、通知部132に汎用ライトFIFO174に空きがあることを通知する信号(以下、「バッファ空き通知信号」という)186が送られる。
カウンタ176は、汎用ライトFIFO174から取り出されたデータ量をカウントし、汎用ライトFIFO174のキューの空き状態に関する信号を通知部132に通知する。カウンタ176は、一例として、128バイトの単位でデータ送出量をカウントし、N*128バイトに達すると信号を発行し、カウントされた値をリセットする「N*128バイトカウンタ」である。N=32の場合は、4キロバイト読み出される度に信号が発行され、カウンタがリセットされる。
ここで、汎用リードダブルバッファ172には、第2GPU200によって、CPU300により発行されるリードコマンドに対するデータがインオーダーで転送される。汎用リードダブルバッファ172内のいずれかのバッファA、Bが一杯になり、CPU300がバッファフル通知信号182、184を受け取ると、CPU300は、汎用リードダブルバッファ172内のバッファからアウトオブオーダーでデータを読み出す。
また、汎用ライトFIFO174には、CPU300から発行されるライトコマンドとライトされるべきデータがインオーダーでキューイングされ、第2GPU200にインオーダーで転送される。
第2GPU用インタフェース140に汎用リードダブルバッファ172および汎用ライトFIFO174を設ける理由は、実施の形態1においてインタフェースユニット600においてリードダブルバッファ610とライトFIFO620を設けた理由と同じである。これにより、CPU300は、インオーダーの命令実行機構をもつ第2GPU200にインオーダーでコマンドとデータを転送することにより、命令実行機構の違いを吸収することができる。また、インオーダー実行による処理効率の低下を防ぐために実施の形態1で述べたように、実施の形態2においても、CPU300はライトコマンドのACKは、入出力インタフェース180に設けられる直近のバッファから受け取る。また、CPU300は、リードコマンドに対するデータを汎用リードダブルバッファ172からアウトオブオーダーで読み出す。これにより、インオーダー実行を前提とする第2GPU200が第1GPU100に接続されたマルチグラフィックスプロセッサシステム400においても、データ転送効率を低下させることなく、CPU300は第1GPU100および第2GPU200と連携してグラフィックス処理を効率良く実行することができる。
以上の構成のマルチグラフィックスプロセッサシステム400において、CPU300と第2GPU200が通信する手順を図10および図11のフローチャートを用いて説明する。
図10は、CPU300が第2GPU200にデータを書き込む際のパケットの転送手順を示すフローチャートである。
カウンタ176を初期化する(S10)。ここでは、汎用ライトFIFO174は8キロバイトの容量をもち、カウンタ176はN*128バイトカウンタであるとし、Nを32に設定する。これにより、汎用ライトFIFO174から第2GPU用インタフェース140の専用ライトFIFO154へ4キロバイトのデータが転送されるたびに、バッファに空きが生じたことを通知するためのバッファ空き通知信号がカウンタ176から通知部132を介してCPU300に送信される。
CPU300は汎用ライトFIFO174へ最初の8キロバイト分のデータを書き込み(S12)、カウンタ176からバッファ空き通知信号が送られるまで待つ(S14のN)。
カウンタ176からのバッファ空き通知信号を受け取ると(S14のY)、CPU300は、次の4キロバイト分のデータを汎用ライトFIFO174へ転送する(S16)。
転送すべきデータの末尾に達すると(S18のY)、パケットの転送を終了し、まだ転送すべきデータが残っている場合(S18のN)、ステップS14に戻り、CPU300は次のバッファ空き通知信号を待ってパケットの転送を続行する。
上記のようにCPU300は、汎用ライトFIFO174に空きが生じるのを待ってから次のパケットを汎用ライトFIFO174に転送する。このようなデータ転送手順を採用したのは以下の理由による。
仮に汎用ライトFIFO174が常にいっぱいになるようにCPU300からデータを転送すると、汎用ライトFIFO174にキューイングできない転送データは調停部130のバッファにキューイングされることになり、調停部130のバッファがあふれてしまう。調停部130のバッファには第1GPUコア120へ転送すべきデータもキューイングされるから、第2GPU200に転送すべきデータとの間で競合が生じ、第1GPUコア120へのデータ転送が妨げられる結果となる。そこで、汎用ライトFIFO174に空きが生じるのを待ってからCPU300からデータを転送することで、調停部130のバッファに転送データが滞留するのを防ぎ、第1GPUコア120へのデータ転送に遅延が生じないようにしている。
図11は、CPU300が第2GPU200の第2GPU用メモリ210からデータを読み出す際のパケットの転送手順を示すフローチャートである。
CPU300が第2GPU200の第2GPU用メモリ210からデータを読み出す際、第2GPU200は自らがマスタになってCPU300に対してデータをプッシュ転送する。第2GPU用インタフェース140は、第2GPU200にプッシュ転送を開始させるための設定を行う(S30)。
第2GPU200によりプッシュされたデータが汎用リードダブルバッファ172(以下、単にダブルバッファ172という)のバッファAに蓄積される(S32)。ダブルバッファ172のバッファAが一杯でないなら(S34のN)、ステップS32に戻り、バッファAにデータがさらにプッシュされる。
ダブルバッファ172のバッファAが一杯になると(S34のY)、バッファが一杯になったことを通知するためのバッファフル通知信号が通知部132を介してCPU300に送信される(S36)。ダブルバッファ172において、データのプッシュ転送先がバッファAからバッファBに切り替わる(S38)。
CPU300は、通知部132からのバッファフル通知信号により、ダブルバッファ172のバッファAが一杯になったことを確認し、バッファAに蓄積されたデータを読み出す(S40)。
CPU300がダブルバッファ172のバッファAに蓄積されたデータを読み終えると、バッファAがクリアされる(S42)。ここでバッファのクリアとは、バッファAのデータを消去することではなく、単にバッファAのデータを無効化するためのフラグを設定することである。
転送すべきデータの末尾に達すると(S44のY)、パケットの転送を終了し、まだ転送すべきデータが残っている場合(S44のN)、ステップS46に進む。
第2GPU200によりプッシュされたデータがダブルバッファ172のバッファBに蓄積される(S46)。ダブルバッファ172のバッファAが一杯でないなら(S48のN)、ステップS46に戻り、バッファBにデータがさらにプッシュされる。ダブルバッファ172のバッファBが一杯になると(S48のY)、バッファフル通知信号が通知部132を介してCPU300に送信される(S50)。ダブルバッファ172において、データのプッシュ転送先がバッファBからバッファAに切り替わる(S52)。
CPU300は、通知部132からのバッファフル通知信号により、ダブルバッファ172のバッファBが一杯になったことを確認し、バッファBに蓄積されたデータを読み出す(S54)。CPU300が汎用リードダブルバッファ172のバッファBに蓄積されたデータを読み終えると、バッファBがクリアされる(S56)。
転送すべきデータの末尾に達すると(S58のY)、パケットの転送を終了し、まだ転送すべきデータが残っている場合(S58のN)、ステップS32に戻り、以降、バッファAとバッファBを切り替えながらデータのプッシュ転送が繰り返される。
上記のようにCPU300は、ダブルバッファ172の2つのバッファA、バッファBのいずれかが一杯になるのを待ってから、ダブルバッファ172からデータをまとめて読み込む。このようなデータ転送手順を採用したのは以下の理由による。
仮にダブルバッファ172が一杯になる前にCPU300がリードコマンドを発行すると、データがバッファに蓄積されるまで待つことになり、リードコマンドが調停部130のバッファ内に滞留することになる。調停部130のバッファには第1GPUコア120からデータを読み出すためのリードコマンドもキューイングされるから、第2GPU200からデータを読み出すためのリードコマンドとの間で競合が生じ、第1GPUコア120に対するリードコマンドの実行が遅延する結果となる。そこで、ダブルバッファ172にデータが蓄積するのを待ってからCPU300からデータを読み込むようにすることで、リードコマンドがデータを待つことなく直ちに実行され、調停部130のバッファに滞留するのを防いでいる。
以上、マルチグラフィックスプロセッサシステム400の構成とデータ転送手順を説明した。CPU300と第2GPU200の間のデータ通信において、汎用リードダブルバッファ172や汎用ライトFIFO174を設け、第2GPU200にデータの読み出しや書き込みのタイミングをシグナルで通知するようにしたことによる作用効果を説明する。
第2GPU200は第1GPU100に外部接続されるため、CPU300から見た場合、第2GPU200は、サウスブリッジに接続された第1GPU100のさらに向こう側に接続された外部装置である。そのため、CPU300は第2GPU200と直接通信することができず、第2GPU200と通信するためのレーテンシーが長くなる。よって、CPU300から第2GPU200のレジスタに対してポーリングして第2GPU200のステータスを知ることは非効率的である。そこで、第2GPU200からCPU300へシグナリングすることでCPU300にデータの読み出しや書き出しのタイミングを知らせることにしてデータ転送の効率化を図っている。これにより、リードコマンドやライトコマンドが調停部130や入出力インタフェース180のバッファに滞留するのを避けることができ、CPU300と第1GPUコア120のデータ通信の妨げにならない。
特に、入出力インタフェース180が、バンド幅が大きい高速インタフェースであるが、バンド幅に比べて、データ転送のレーテンシーは長い場合に、本実施の形態はさらなる効果を奏する。CPU300が第1GPU100を経由して第2GPU200によるデータの読み書き状況を調べようとすると、入出力インタフェース180のレーテンシーが長いため、データの読み出しや書き込みが開始されるまでに時間がかかってしまう。そこで、本実施の形態のように、第2GPU200側からデータの読み出しや書き込みのタイミングをCPU300に通知し、CPU300が通知信号を受けてから、高速な入出力インタフェース180を介してデータをまとめて読み出したり、書き込んだりする方が効率が良い。
調停部130の働きにより、CPU300と第2GPU200の間のデータ転送と、CPU300と第1GPUコア120の間のデータ転送とは並行して実行することができる。これにより、第1GPUコア120により描画されたHD(High Definition)表示の画面に対して、第2GPU200により描画された画面を重ね合わせる(superimpose)ことができる。また、第2GPU200により描画された画面に対して、第1GPUコア120で画像処理したものを出力することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、いくつかの変形例を説明する。
第1GPU100と第2GPU200の処理性能や機能が異なり、第1GPU100と第2GPU200の間で処理の役割分担が行われてもよい。第2GPU200は、一例として、DRAM混載型のグラフィックスチップである。DRAM混載型とは、DRAMとロジック回路を単一の半導体チップ上に集積したものであり、チップ上に搭載できるDRAMの容量には制限があるが、個別チップでは実現できない大きなメモリバンド幅を確保することができる。したがって、第2GPU200は、チップに搭載されたDRAMをビデオメモリとして利用することで、ビデオメモリに対する高速な読み書きが可能であり、たとえば、テクスチャの重ね描きなどビデオメモリへの読み書きを頻繁に行う描画処理に適する。
一方、第1GPU100は、大容量のフレームバッファ110とバス結合しており、メモリバンド幅は小さいが、容量が十分に大きいメモリを利用することができる。したがって、第1GPU100は、メモリを消費する処理に適する。また、第1GPU100は、メモリアクセスよりも計算パワーの方がより要求されるシェーダプログラムなどの描画処理に適する。
このような第1GPU100と第2GPU200のメモリ構成の違いを利用して、第1GPU100と第2GPU200の間で描画処理の各種の役割分担を行うことができる。たとえば、第1GPU100は、複雑な光の反射計算や陰影処理などを含み、演算量の多いピクセルシェーディングを行い、第2GPU200はメモリへの読み書きが頻繁に発生するラスタライズ処理やテクスチャマッピング処理、モーションブラーやアルファブレンディングなどの描画処理を行う。
メモリバンド幅の要求される処理を第2GPU200に実行させるためには、第1GPU100から第2GPU200に処理の中間結果を投げ、第2GPU200にメモリ集中型の処理を実行させ、処理結果だけを第1GPU100に戻せばよい。したがって、第1GPU100と第2GPU200の間のインタフェースのバンド幅は狭くてもかまわない。
また、第1GPU100と第2GPU200は、異なるグラフィック処理機能を有してもよい。たとえば、いずれか一方のグラフィックスチップにはジオメトリ演算器が含まれ、他方のグラフィックスチップはピクセル演算器が含まれるという構成や、いずれか一方のグラフィックスチップには、テクスチャマッピングの専用ユニットが含まれる構成など、2つのグラフィックスチップの間で搭載される処理機能の違いがあってもよい。また、2つのグラフィックスチップが同じグラフィック処理機能を有していて、描画処理性能だけが異なる構成であってもよい。
第1GPU100をマスタGPUとし、第2GPU200をスレーブGPUとして、マスタGPUが主たる描画処理を行い、スレーブGPUがマスタGPUの制御のもと、副次的な描画処理を行うという主従関係のある役割分担がなされてもよい。
このように、処理機能やメモリ帯域が異なる第1GPU100および第2GPU200にそれぞれのグラフィックスプロセッサが得意とする処理を分担させることにより、全体の描画処理を効率良く実行することができる。
また、一方のグラフィックスプロセッサにおいて処理のボトルネックが発生する場合でも、他方のグラフィックスプロセッサにおいて並列に処理を進めることができる。2つのグラフィックスプロセッサの仕様をプログラマに提供することで、デュアルチップ構成のマルチグラフィックスプロセッサシステム400において、適宜、グラフィックスプロセッサを使い分けて描画処理の効率化を図るプログラミングが可能となる。
マルチグラフィックスプロセッサシステム400のさらに別の構成例として、第1GPU100は、第2GPU200の後継チップであってもよい。この場合、第1GPU100だけを搭載したシステムを提供すると、第2GPU200で動作するゲームなどのアプリケーションが互換性がないために実行できなくなることがある。そこで、新世代の第1GPU100と旧世代の第2GPU200の両方を搭載したマルチグラフィックスプロセッサシステム400を提供する。
これにより、旧世代のアプリケーションは第2GPU200において実行され、第2GPU200のビデオデータを第1GPU100に渡して、第1GPU100から出力することで、アプリケーションの互換性を保つことができる。また、旧世代のアプリケーションが利用されなくなり、互換性を保つ必要がなくなると、第2GPU200を外し、第1GPU100のみの構成でシステムを提供することができる。デュアルグラフィックスチップの構成を取って互換性をもたせておき、必要に応じて旧世代のグラフィックスチップを外すことで、製品の提供時期やユーザのニーズなどに合わせた柔軟性のある製品構成を取ることができる。
実施の形態1に係る汎用プロセッサシステムの構成図である。 図1のサブプロセッシングエレメントの構成図である。 スプリットトランザクションによるライトコマンドの実行過程を説明する図である。 スプリットトランザクションによるライトコマンドの実行過程を説明する図である。 スプリットトランザクションによるライトコマンドの実行過程を説明する図である。 スプリットトランザクションによるライトコマンドの実行過程を説明する図である。 スプリットトランザクションによるリードコマンドの実行過程を説明する図である。 スプリットトランザクションによるリードコマンドの実行過程を説明する図である。 スプリットトランザクションによるリードコマンドの実行過程を説明する図である。 汎用プロセッサシステムとグラフィックスプロセッシングユニットが入出力インタフェースを介して接続されたマルチプロセッサシステムの構成図である。 図5の構成において、ライトコマンドの実行手順を説明する図である。 図5の構成において、リードコマンドの実行手順を説明する図である。 実施の形態2に係るマルチグラフィックスプロセッサシステムの構成図である。 図8の調停部と第2GPU用インタフェースの詳細な構成を説明する図である。 図8のCPUが第2GPUにデータを書き込む際のパケットの転送手順を示すフローチャートである。 図8のCPUが第2GPUの第2GPU用メモリからデータを読み出す際のパケットの転送手順を示すフローチャートである。
符号の説明
100 第1GPU、 110 フレームバッファ、 120 第1GPUコア、 130 調停部、 132 通知部、 140 第2GPU用インタフェース、 152 専用リードFIFO、 154 専用ライトFIFO、 160 第1GPU用バス、 170 第2GPU用バス、 172 汎用リードダブルバッファ、 174 汎用ライトFIFO、 176 カウンタ、 180 入出力インタフェース、 190 第2GPU接続バス、 200 第2GPU、 210 第2GPU用メモリ、 300 CPU、 310 メインメモリ、 400 マルチグラフィックスプロセッサシステム、 500 汎用プロセッサシステム、 510 メインメモリ、 520 PE、 530 SPE、 570 I/Oバッファ、580 IOIF、 600 インタフェースユニット、 610 リードダブルバッファ、 620 ライトFIFO、 700 GPU。

Claims (10)

  1. メインプロセッサと、
    入出力インタフェースを介して前記メインプロセッサに接続された第1のグラフィックスプロセッサと、
    外部接続用インタフェースを介して前記第1のグラフィックスプロセッサに接続された第2のグラフィックスプロセッサとを含み、
    前記第1のグラフィックスプロセッサ内に、前記メインプロセッサが前記外部接続用インタフェースを経由して前記第2のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、
    前記メインプロセッサは、前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を行う際、前記データ通信のタイミングを通知するための信号の受信を待ってから、前記データ通信を行うことを特徴とするマルチグラフィックスプロセッサシステム。
  2. 前記第1のグラフィックスプロセッサ内の前記中継インタフェースに、前記メインプロセッサが前記第2のグラフィックスプロセッサに対してデータを書き込むための書き込みバッファが設けられ、前記書き込みバッファに空きが生じた場合に、バッファ空き通知信号が前記メインプロセッサに通知され、前記メインプロセッサは前記バッファ空き通知信号の受信を待ってから、前記書き込みバッファにデータを書き込むことを特徴とする請求項1に記載のマルチグラフィックスプロセッサシステム。
  3. 前記第2のグラフィックスプロセッサは、インオーダーで命令を処理するプロセッサであり、
    前記書き込みバッファは、前記メインプロセッサが前記第2のグラフィックスプロセッサに対してインオーダーで発行する書き込み命令によって書き込まれるべきデータを前記書き込み命令の発行順にキューイングし、キューイングされたデータをFIFO順で取り出して前記第2のグラフィックスプロセッサに供給するFIFOキューであることを特徴とする請求項2に記載のマルチグラフィックスプロセッサシステム。
  4. 前記第1のグラフィックスプロセッサ内の前記中継インタフェースに、前記メインプロセッサが前記第2のグラフィックスプロセッサからデータを読み出すための読み出しバッファが設けられ、前記読み出しバッファが一杯になった場合に、バッファフル通知信号が前記メインプロセッサに通知され、前記メインプロセッサは前記バッファフル通知信号の受信を待ってから、前記読み出しバッファに蓄積されたデータを読み出すことを特徴とする請求項1から3のいずれかに記載のマルチグラフィックスプロセッサシステム。
  5. 前記第2のグラフィックスプロセッサは、インオーダーで命令を処理するプロセッサであり、
    前記読み出しバッファは、前記メインプロセッサが前記第2のグラフィックスプロセッサに対してアウトオブオーダーで発行する読み出し命令を受けて前記メインプロセッサから読み出されたデータをダブルバッファ方式でバッファリングし、バッファリングされたデータが前記メインプロセッサからアウトオブオーダーで読み出されるダブルバッファであることを特徴とする請求項4に記載のマルチグラフィックスプロセッサシステム。
  6. 前記第2のグラフィックスプロセッサは、プロセッサコアとビデオメモリを1つのチップ上に集積したメモリ混載型プロセッサチップであることを特徴とする請求項1から5のいずれかに記載のマルチグラフィックスプロセッサシステム。
  7. 前記第1のグラフィックスプロセッサは、フレームバッファとバス結合したプロセッサコアを含むことを特徴とする請求項1から6のいずれかに記載のマルチグラフィックスプロセッサシステム。
  8. 入出力インタフェースを介してメインプロセッサに接続された第1のグラフィックスプロセッサと、
    外部接続用インタフェースを介して前記第1のグラフィックスプロセッサに接続された第2のグラフィックスプロセッサとを含み、
    前記第1のグラフィックスプロセッサ内に、前記メインプロセッサが前記外部接続用インタフェースを経由して前記第2のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、
    前記メインプロセッサが前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を開始する前に、前記データ通信のタイミングを通知するための信号を前記メインプロセッサに送信することを特徴とするマルチグラフィックスプロセッサシステム。
  9. メインプロセッサと接続するための入出力インタフェースと、
    他のグラフィックスプロセッサと接続するための外部接続用インタフェースとを含み、
    前記メインプロセッサが前記外部接続用インタフェースを経由して前記他のグラフィックスプロセッサと通信するための中継インタフェースが設けられ、
    前記メインプロセッサが前記第1のグラフィックスプロセッサ内の前記中継インタフェースを介して前記他のグラフィックスプロセッサとデータ通信を開始する前に、前記データ通信のタイミングを通知するための信号を前記メインプロセッサに送信することを特徴とするグラフィックスプロセッサ。
  10. メインプロセッサの入出力インタフェースに第1のグラフィックスプロセッサが接続され、前記第1のグラフィックスプロセッサの外部接続用インタフェースに第2のグラフィックスプロセッサが接続されたマルチグラフィックスプロセッサシステムにおけるデータ転送方法であって、
    前記メインプロセッサは、前記第1のグラフィックスプロセッサ内に設けられた中継インタフェースを介して前記第2のグラフィックスプロセッサとデータ通信を行う際、前記第1のグラフィックスプロセッサ内の前記データ通信用に設けられたバッファから前記データ通信のタイミングを通知するための信号が発信されるのを待ってから、前記データ通信を行うことを特徴とするデータ転送方法。
JP2006144501A 2006-05-24 2006-05-24 マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 Active JP4439491B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006144501A JP4439491B2 (ja) 2006-05-24 2006-05-24 マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US11/805,165 US8730248B2 (en) 2006-05-24 2007-05-22 Multi-graphics processor system, graphics processor and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006144501A JP4439491B2 (ja) 2006-05-24 2006-05-24 マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2007316859A true JP2007316859A (ja) 2007-12-06
JP4439491B2 JP4439491B2 (ja) 2010-03-24

Family

ID=38749101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006144501A Active JP4439491B2 (ja) 2006-05-24 2006-05-24 マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法

Country Status (2)

Country Link
US (1) US8730248B2 (ja)
JP (1) JP4439491B2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010063082A (ja) * 2008-07-30 2010-03-18 Nvidia Corp 複数のグラフィックプロセッサ間での通信を暗号化するためのビデオ処理システム、方法、及びコンピュータプログラム製品
US7737981B2 (en) 2007-12-21 2010-06-15 Kabushiki Kaisha Toshiba Information processing apparatus
JP2012504835A (ja) * 2008-10-03 2012-02-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 多重プロセッサアーキテクチャ及び方法
JP2013524342A (ja) * 2010-04-02 2013-06-17 マイクロソフト コーポレーション Rdmaセマンティクスの高速記憶装置へのマッピング
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2015507804A (ja) * 2012-01-06 2015-03-12 アセルサン・エレクトロニク・サナイ・ヴェ・ティジャレット・アノニム・シルケティAselsan Elektronik Sanayi veTicaret Anonim Sirketi 分散型画像生成システム
US9135210B2 (en) 2012-01-27 2015-09-15 Tops Systems Corporation Processor core and multi-core processor system
KR20160047367A (ko) * 2014-10-22 2016-05-02 기가 바이트 테크놀러지 컴퍼니 리미티드 외부 접속 디스플레이 포트를 전환 가능한 디스플레이 회로
US9977756B2 (en) 2008-10-03 2018-05-22 Advanced Micro Devices, Inc. Internal bus architecture and method in multi-processor systems
CN109690512A (zh) * 2016-10-18 2019-04-26 超威半导体公司 具有触发操作的gpu远程通信
JP2020513631A (ja) * 2016-12-13 2020-05-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated アウトオブオーダキャッシュリターン
JP2020109619A (ja) * 2018-12-31 2020-07-16 バイドゥ ユーエスエー エルエルシーBaidu USA LLC 柔軟なホスト及びクライアント構成を備える自動運転コンピューティング及びストレージ拡張デバイス

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8749561B1 (en) 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
US8743019B1 (en) 2005-05-17 2014-06-03 Nvidia Corporation System and method for abstracting computer displays across a host-client network
US8775704B2 (en) 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
US8115773B2 (en) * 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
JP5209933B2 (ja) * 2007-10-19 2013-06-12 ルネサスエレクトロニクス株式会社 データ処理装置
US9047421B2 (en) * 2008-04-30 2015-06-02 Alcatel Lucent Serial link buffer fill-level compensation using multi-purpose start of protocol data unit timing characters
US8319780B2 (en) * 2008-07-30 2012-11-27 Nvidia Corporation System, method, and computer program product for synchronizing operation of a first graphics processor and a second graphics processor in order to secure communication therebetween
US8736617B2 (en) * 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
GB2462860B (en) * 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8799425B2 (en) 2008-11-24 2014-08-05 Nvidia Corporation Configuring display properties of display units on remote systems
WO2010064293A1 (ja) * 2008-12-01 2010-06-10 パイオニア株式会社 データ処理装置、そのシステム、その方法、そのプログラム、そのプログラムを記録した記録媒体、データ転送装置、その方法、そのプログラム、および、そのプログラムを記録した記録媒体
US9075559B2 (en) 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8451281B2 (en) 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US8766989B2 (en) 2009-07-29 2014-07-01 Nvidia Corporation Method and system for dynamically adding and removing display modes coordinated across multiple graphics processing units
US8400458B2 (en) * 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
US8933947B2 (en) * 2009-09-10 2015-01-13 Ati Technologies Ulc Reading a local memory of a processing unit
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9111325B2 (en) * 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
CN102236628B (zh) * 2010-05-05 2013-11-13 英业达股份有限公司 支持多个图形处理单元的图形处理装置
US20120147015A1 (en) * 2010-12-13 2012-06-14 Advanced Micro Devices, Inc. Graphics Processing in a Multi-Processor Computing System
US8941655B2 (en) 2011-09-07 2015-01-27 Qualcomm Incorporated Memory copy engine for graphics processing
US9509292B2 (en) * 2011-09-29 2016-11-29 Intel Corporation Method and apparatus for improving a load independent buffer
US9035956B1 (en) * 2012-05-08 2015-05-19 Apple Inc. Graphics power control with efficient power usage during stop
WO2014040003A1 (en) * 2012-09-07 2014-03-13 Carnegie Mellon University Methods for hybrid gpu/cpu data processing
US9971710B2 (en) * 2013-02-07 2018-05-15 Microsoft Technology Licensing, Llc Optimizing data transfers between heterogeneous memory arenas
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
US9547496B2 (en) 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue
US20150145875A1 (en) * 2013-11-27 2015-05-28 Aashish Pangam Command scheduler for a display device
US8924596B1 (en) * 2013-12-06 2014-12-30 Concurrent Ventures, LLC System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware
US9696999B2 (en) 2013-12-17 2017-07-04 Intel Corporation Local closed loop efficiency control using IP metrics
US10073784B2 (en) 2014-06-27 2018-09-11 International Business Machines Corporation Memory performance when speculation control is enabled, and instruction therefor
US9658961B2 (en) * 2014-06-27 2017-05-23 International Business Machines Corporation Speculation control for improving transaction success rate, and instruction therefor
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
US10453445B2 (en) * 2016-02-16 2019-10-22 Carnegie Mellon University System and method for multi-user GPU-accelerated speech recognition engine for client-server architectures
US10503546B2 (en) 2017-06-02 2019-12-10 Apple Inc. GPU resource priorities based on hardware utilization
US10402937B2 (en) 2017-12-28 2019-09-03 Nvidia Corporation Multi-GPU frame rendering
CN112154408A (zh) * 2018-04-12 2020-12-29 美光科技公司 重放受保护存储器块命令队列
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US10795730B2 (en) 2018-09-28 2020-10-06 Apple Inc. Graphics hardware driven pause for quality of service adjustment
US11354254B2 (en) 2018-10-19 2022-06-07 Nippon Telegraph And Telephone Corporation Data processing system, central arithmetic processing apparatus, and data processing method
US11841803B2 (en) * 2019-06-28 2023-12-12 Advanced Micro Devices, Inc. GPU chiplets using high bandwidth crosslinks
US11734005B2 (en) 2021-07-04 2023-08-22 Mellanox Technologies, Ltd. Processor with split read
US20220351326A1 (en) * 2021-07-06 2022-11-03 Intel Corporation Direct memory writes by network interface of a graphics processing unit
US11755336B2 (en) * 2021-09-29 2023-09-12 Advanced Micro Devices, Inc. Distributed geometry
US11847461B2 (en) * 2022-05-19 2023-12-19 Mellanox Technologies, Ltd. Out-of-order input / output write

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6027976A (ja) 1983-07-26 1985-02-13 Matsushita Electric Ind Co Ltd 先入先出メモリ装置
JPS63240663A (ja) 1987-03-27 1988-10-06 Nec Corp プロセツサ
JPH01269150A (ja) 1988-04-20 1989-10-26 Nec Eng Ltd バッファリング装置
US6078336A (en) * 1998-05-12 2000-06-20 Hewlett-Packard Company Graphics memory system that utilizes look-ahead paging for reducing paging overhead
US6339427B1 (en) * 1998-12-15 2002-01-15 Ati International Srl Graphics display list handler and method
US6707457B1 (en) * 1999-09-30 2004-03-16 Conexant Systems, Inc. Microprocessor extensions for two-dimensional graphics processing
US6557065B1 (en) * 1999-12-20 2003-04-29 Intel Corporation CPU expandability bus
US6734862B1 (en) * 2000-06-14 2004-05-11 Intel Corporation Memory controller hub
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7737981B2 (en) 2007-12-21 2010-06-15 Kabushiki Kaisha Toshiba Information processing apparatus
JP2010063082A (ja) * 2008-07-30 2010-03-18 Nvidia Corp 複数のグラフィックプロセッサ間での通信を暗号化するためのビデオ処理システム、方法、及びコンピュータプログラム製品
US9977756B2 (en) 2008-10-03 2018-05-22 Advanced Micro Devices, Inc. Internal bus architecture and method in multi-processor systems
JP2012504835A (ja) * 2008-10-03 2012-02-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 多重プロセッサアーキテクチャ及び方法
JP2013524342A (ja) * 2010-04-02 2013-06-17 マイクロソフト コーポレーション Rdmaセマンティクスの高速記憶装置へのマッピング
US8984084B2 (en) 2010-04-02 2015-03-17 Microsoft Technology Licensing, Llc Mapping RDMA semantics to high speed storage
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2015507804A (ja) * 2012-01-06 2015-03-12 アセルサン・エレクトロニク・サナイ・ヴェ・ティジャレット・アノニム・シルケティAselsan Elektronik Sanayi veTicaret Anonim Sirketi 分散型画像生成システム
US9135210B2 (en) 2012-01-27 2015-09-15 Tops Systems Corporation Processor core and multi-core processor system
KR20160047367A (ko) * 2014-10-22 2016-05-02 기가 바이트 테크놀러지 컴퍼니 리미티드 외부 접속 디스플레이 포트를 전환 가능한 디스플레이 회로
KR101641311B1 (ko) * 2014-10-22 2016-07-21 기가 바이트 테크놀러지 컴퍼니 리미티드 외부 접속 디스플레이 포트를 전환 가능한 디스플레이 회로
CN109690512A (zh) * 2016-10-18 2019-04-26 超威半导体公司 具有触发操作的gpu远程通信
JP2019532427A (ja) * 2016-10-18 2019-11-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated トリガ動作を用いたgpuリモート通信
US10936533B2 (en) 2016-10-18 2021-03-02 Advanced Micro Devices, Inc. GPU remote communication with triggered operations
CN109690512B (zh) * 2016-10-18 2023-07-18 超威半导体公司 具有触发操作的gpu远程通信
JP2020513631A (ja) * 2016-12-13 2020-05-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated アウトオブオーダキャッシュリターン
JP7282675B2 (ja) 2016-12-13 2023-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド アウトオブオーダキャッシュリターン
JP2020109619A (ja) * 2018-12-31 2020-07-16 バイドゥ ユーエスエー エルエルシーBaidu USA LLC 柔軟なホスト及びクライアント構成を備える自動運転コンピューティング及びストレージ拡張デバイス
US11353870B2 (en) 2018-12-31 2022-06-07 Baidu Usa Llc Autonomous driving computing and storage expansion device with flexible host and client configuration

Also Published As

Publication number Publication date
US20070273699A1 (en) 2007-11-29
JP4439491B2 (ja) 2010-03-24
US8730248B2 (en) 2014-05-20

Similar Documents

Publication Publication Date Title
JP4439491B2 (ja) マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US10169080B2 (en) Method for work scheduling in a multi-chip system
US7478189B2 (en) Deadlock avoidance in a bus fabric
JP4275085B2 (ja) 情報処理装置、情報処理方法、およびデータストリーム生成方法
TWI434182B (zh) 外部記憶體快進快出裝置
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
US20070079044A1 (en) Packet Combiner for a Packetized Bus with Dynamic Holdoff time
EP1880277B1 (en) Command execution controlling apparatus, command execution instructing apparatus and command execution controlling method
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
EP0908826A2 (en) Packet protocol and distributed burst engine
US8928677B2 (en) Low latency concurrent computation
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
US20060236032A1 (en) Data storage system having memory controller with embedded CPU
US20140082120A1 (en) Efficient cpu mailbox read access to gpu memory
US7409486B2 (en) Storage system, and storage control method
US7660924B2 (en) Semiconductor integrated circuit device which executes data transfer between a plurality of devices connected over network, and data transfer method
US6466993B1 (en) Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations
JPH06274425A (ja) ネットワークアダプタ装置
US11010114B2 (en) Read/write direction-based memory bank control for imaging
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP2004318628A (ja) 演算処理装置
JP2003348184A (ja) 通信制御装置
US20060224806A1 (en) Multi CPU system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080521

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090911

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20091014

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

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

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4439491

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140115

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