(57)【要約】【課題】プロセッサから入出力バスを介して周辺デバイスに複数のデータバイトを転送するためのデータ転送方法及びそのシステムを提供する。【解決手段】入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段とを備える。【選択図】図５
2008198218.tif 000002
【特許請求の範囲】
【請求項１】
入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、
前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、
を含むコンピュータシステム。
【請求項２】
入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、
前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含み
前記制御ヘッダは、前記転送されるデータバイトの回転とその方向に係る情報を有し、
前記整合手段は、前記制御ヘッダを解釈する手段と有し、前記転送されたデータバイトの回転による整合処理を行なうことを特徴とするコンピュータシステム。
【請求項３】
前記制御ヘッダは、前記転送されるデータバイトのソースアドレス、デスティネーションアドレス、バイト長及び制御ワードを含むことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
コンピュータシステムにおけるデータ転送方法であって、
プロセッサから周辺デバイスに対して出入力バスを介して複数のデータバイトを転送するステップと、
前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なうステップと、
転送された前記データバイトの整合処理を行なうステップと、の各ステップを有し、
前記整合処理を行なうステップは、
前記プロセッサから、前記転送されるデータバイトを受信するステップと、
当該転送されたデータバイトが再整合を必要とするか否かを決定するステップと、
前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうステップと、の各ステップを含むことを特徴とするデータ転送方法。
【請求項５】
前記整合手段は、
前記プロセッサから送信されてくる転送データを格納するための第１の回路と、
前記プロセッサから送信されてくる転送データと前記第１の回路に既に格納されている転送データとを選択的に組み合わせることにより、整合されたグループのデータバイトを作成するための第２の回路と、
前記整合されたグループのデータバイトが、先に整合されたグループのデータバイトとの間で正しく配置されるように前記整合されたグループのデータバイトを選択的に再配置するための第３の回路と、
の各回路を備えることを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記制御ヘッダは、前記転送されるデータバイトのソースアドレスと、デスティネーションアドレスと、バイト長と、整合制御ワードと、マスク情報と、を含み、
前記整合手段は、前記マスク情報に基づいて前記転送データをマスキングするための手段を備えた、ことを特徴とする請求項３に記載のコンピュータシステム。
【請求項７】
前記再整合を行なうステップは、
前記プロセッサから送信されてくる転送データと既に送信されてきた転送データとを選択的に組み合わせることにより、整合されたグループのデータバイトを作成するステップと、
前記整合されたグループのデータバイトが、先に整合されたグループのデータバイトとの間で正しく配置されるように前記整合されたグループのデータバイトを選択的に再配置するするステップと、の各ステップを含むことを特徴とする請求項４に記載のコンピュータシステムにおけるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピューターメモリ内のデータ転送に関し、特にメモリへデータを疑似整合して転送（以下、データ疑似整合転送という）する方法および装置に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては入出力バス（Ｉ／Ｏバス）を介してしばしばプロセッサ、メモリおよび周辺デバイス間でデータが転送される。従来はＩＳＡ、ＥＩＳＡあるいはマイクロチャンネル（登録商標）バスの様な標準化されたバスを使っていろいろのプラットフォームおよびいろいろのプロセッサにまたがる周辺デバイスに一つの共通Ｉ／Ｏインターフェースを与えていた。しかしながらこれらのバスにまたがるデータ転送には多くの問題がある。
【０００３】
バスにまたがるデータ転送に関わる問題の一つは、データの未整合転送（unalignment transfer of data）である。未整合転送は一ブロックのデータバイトがソースおよびまたはデスティネーション（目標）における一ワードもしくはダブルワードの境界（boudary）に整合されていないときに起きる。そのような不整合は転送中にバイトブロックをシフトし、およびまたはマスキングを行なう点でプロセッサまたはデバイスに著しいオーバーヘッドを起こしかねない。例えばインテル（登録商標）３８６および４８６プロセッサ内の未整合転送は等価な整合転送に比べて５０％ないし２５０％遅くなることがある。したがって、メモリへの未整合データ転送を最適化するための方法および装置を与える必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の先行技術における限界を克服するため、かつ本明細書の以下の記載から明らかになる他の制限を克服するため、本発明はメモリへのデータの疑似整合転送を与える方法および装置を与える。
【課題を解決するための手段】
【０００５】
このため、本発明は、入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含むコンピュータシステムを提供するものである。
【０００６】
また、本発明は、入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含み、前記制御ヘッダは、前記転送されるデータバイトの回転とその方向に係る情報を有し、前記整合手段は、前記制御ヘッダを解釈する手段と有し、前記転送されたデータバイトの回転による整合処理を行なうことを特徴とするコンピュータシステムを提供するものである。
【０００７】
さらに、本発明は、コンピュータシステムにおけるデータ転送方法であって、プロセッサから周辺デバイスに対して出入力バスを介して複数のデータバイトを転送するステップと、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なうステップと、転送された前記データバイトの整合処理を行なうステップと、の各ステップを有し、前記整合処理を行なうステップは、前記プロセッサから、前記転送されるデータバイトを受信するステップと、当該転送されたデータバイトが再整合を必要とするか否かを決定するステップと、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうステップと、の各ステップを含むことを特徴とするデータ転送方法を提供するものである。
【発明の効果】
【０００８】
本発明はデータが未整合である場合でも本発明で追加するソフトウェアおよびハードウェアを使用して、あたかもデータが整合されているかのごとくに未整合データの転送を行なう。この場合このソフトウェアは周辺デバイス内のハードウェアに命令を発生し、この命令によって当該周辺デバイスが未整合転送されたバイトを結合し、回転し、マスクして確実にそれらのバイトが周辺デバイス内に適切に整合させる。このため、本発明によりメモリへの高速なデータ転送が可能となる。
【０００９】
表ＩＡ
SEL = + DIR_RIGHT NOR (- ROTATE[0] AND - ROTATE[1])
BLOCK 32A = (DIN[7:0] AND - SEL OR (BLOCK 30A AND + SEL)
表ＩＢ
SEL = （+ DIR_RIGHT NAND + ROTATE[0] NAND - ROTATE[1]) NAND (+ ROTATE[1] NAND - DIR_RIGHT)
BLOCK 32B = (DIN[15:8] AND - SEL) OR (BLOCK 30B AND + SEL)
表ＩＣ
SEL = (- ROTATE[1] NAND + ROTATE[0] NAND + DIR_RIGHT) NAND (+ ROTATE[1] NAND - ROTATE[0] NAND + DIR_RIGHT) NAND (+ ROTATE[1] NAND + ROTATE[0] NAND - DIR_RIGHT)
BLOCK 32C = (DIN[23:16] AND - SEL) OR (BLOCK 30C AND + SEL)
表ＩＤ
SEL = (- DIR_RIGHT NOR (- ROTATE[1] AND - ROTATE[0]))
BLOCK 32D = (DIN[31:24] AND - SEL) OR (BLOCK 30D AND + SEL)
表ＩＩ
SEL[0] = + ROTATE[0] NOR + ROTATE[1]
SEL[1] = - ROTATE[0] NOR + ROTATE[1]
SEL[2] = + ROTATE[0] NOR - ROTATE[1]
SEL[3] = - ROTATE[0] NOR - ROTATE[1]
BLOCK 36A = (BLOCK 32A AND SEL[0]) OR (BLOCK 32B AND SEL[1]) OR (BLOCK 32C AND SEL[2]) OR (BLOCK 32D AND SEL[3])
BLOCK 36B = (BLOCK 32B AND SEL[0]) OR (BLOCK 32C AND SEL[1]) OR (BLOCK 32D AND SEL[2]) OR (BLOCK 32A AND SEL[3])
BLOCK 36C = (BLOCK 32C AND SEL[0]) OR (BLOCK 32D AND SEL[1]) OR (BLOCK 32A AND SEL[2]) OR (BLOCK 32BD AND SEL[3])
BLOCK 36D = (BLOCK 32D AND SEL[0]) OR (BLOCK 32A AND SEL[1]) OR (BLOCK 32B AND SEL[2]) OR (BLOCK 32C AND SEL[3])
【発明を実施するための最良の形態】
【００１０】
好ましい実施例に関する以下の説明では添付の図面を参照して本発明を実施した特定の実施例を示す。本発明の範囲を逸脱することなく他の実施例を実施しうること、および構造上の変更をなしうることを了解されたい。
【００１１】
引用する図面において類似の参照番号は対応する部分を表す。
【００１２】
データ転送を行なうための最も効率的なインテル３８６／４８６（登録商標）のインストラクション（命令）は「REP MOVSD」であるが、これは「REPeat MOVeString Double word」を意味する略号である。この命令が最も効率的に実行されるためにはソースおよびデスティネーションの両アドレスがダブルワードに整合されていること、すなわち３２ビット境界に整合されていることが必要である。バイト（８−ビット）およびワード（１６−ビット）の転送も許容されており、サポートされているが、それほど効率的ではない。その理由はＩ／Ｏバスが３２ビット幅であるからである。しかしながら多くのアプリケーションは必ずしもデータブロックをダブルワードに整合させていない。なぜならば多くのアプリケーションは通常、データブロックにこれをストリングバイトとしてアクセスするからである。
【００１３】
本発明はデータが未整合である場合でもメモリへの高速な整合データ転送を可能にする。すなわち本発明はデータを疑似整合してメモリへ転送する方法と装置を与える。その場合、本発明で追加するソフトウェアおよびハードウェアがあたかもデータが整合されているかのごとくに未整合データの転送を行なう。このソフトウェアは周辺デバイス内のハードウェアに命令を発生する。この命令は当該周辺デバイスが未整合転送されたバイトを結合し、回転し、マスクして確実にそれらのバイトが周辺デバイス内に適切に整合させる。
【００１４】
整合転送および未整合転送図１および図２はデータの整合転送とデータの未整合転送の相異を示す例である。図１は整合した転送を示し、図２は未整合の転送を示す。図１および図２の両方とも、各ブロックは一バイトのデータを表し、四バイトからなる各水平グループによりダブルワードに整合された境界を示す。
【００１５】
図１は典型的なダブルワードの整合転送を示す。図示するようにソースメモリ内における各データワードＳ０-Ｓ３、Ｓ４-Ｓ７、Ｓ８-Ｓ１１、Ｓ１２-Ｓ１５はデスティネーションメモリ内の対応するダブルワードＤ０-Ｄ３、Ｄ４-Ｄ７、Ｄ８-Ｄ１１、Ｄ１２-Ｄ１５に転送されるときに変更を受けない。従ってこの転送は転送の際にデータのダブルワード整合を維持する。
【００１６】
図２はデータの未整合転送を示す。図に示すようにソースメモリ内の各バイトＳ０-Ｓ１５はデスティネーションメモリ内の対応するバイトＤ０-Ｄ１５に転送される際にダブルワードの相対位置を変更する。典型的な場合、整合上の変化を処理するため、バイトの結合、回転およびマスキングが必要となろう。しかしながらこれらの機能は通常、プロセッサにより非常に非能率的な方法で行なわれる。
【００１７】
ハードウェア環境図３は本発明の一般的なハードウェア環境を例示するブロック線図である。プロセッサ１０は例えばインテル３８６もしくは４８６プロセッサであるが、これはＩ／Ｏバス１４を介してビデオ回路１２に結合される。このＩ／Ｏバス１４はプロセッサ１０とビデオ回路１２との間のアドレスデータおよび制御信号の転送を行なう。ビデオ回路１２の主な目的はビデオメモリ１６とＣＲＴ１８を制御することである。ビデオメモリ１６はプロセッサ１０から送られるデータを格納する。このデータは後でＣＲＴ１８に書き込まれる。ビデオ回路１２はプロセッサ１０からビデオメモリ１６へのデータ転送とビデオメモリ１６からＣＲＴ１８へのデータ転送との間の調停（arbitration）を行なう。
【００１８】
ビデオ回路図４はビデオ回路１２を拡大して示すブロック線図である。ビデオ回路１２は調停論理回路２０、ＣＲＴコントローラ論理回路２２、マルチプレクサ２４および整合論理回路（alignment logic）２６を含む。調停論理回路２０はマルチプレクサ２４を制御して調停論理回路２０とプロセッサ１０との間を調停し、それによりプロセッサ１０、ビデオメモリ１６およびＣＲＴ１８へのデータ転送およびこれらからのデータ転送を制御する。ＣＲＴコントローラ論理回路２２はＣＲＴ１８上にデータを表示するため、ビデオメモリ１６からデータの読み出しに必要なアドレスを与える。整合論理回路２６はプロセッサ１０からの転送データを確実にビデオメモリ１６内に正しく整合させる。整合転送には結合も回転もマスキングも必要ないが、何らかの整合が実際に必要とされるか否かに関わらず、各データ転送について整合論理回路２６が使用される。すべてのデータ転送が整合論理回路２６を通して行なわれるというこの条件がすべてのタイミング問題を解決し、制御論理回路を簡単化する。
【００１９】
整合論理回路図５は本発明の整合論理回路２６のコンポーネントを例示するブロック線図である。データは図５の左側にある四つのバスDATA IN（DIN）で整合論理回路２６に入る。この場、各DINバスは８ビットバイトのデータを含む。マスク情報は図５の左側にあるバスMask In（MIN）で整合論理回路２６に入る。この場、MINバスの各四つの信号は対応するMINバス上の８ビットバイトデータに対するマスクビットを含む。このマスクビットは当該バイトが所望のデータの一部であるか、あるいは単に疑似整合転送に伴って担持される余分のバイトであるか否かを示すためのものである。制御信号もまた図５の左側にあるALIGN LAT LO、DIR_RIGHT、およびROTATE[1:0]信号線から整合論理回路２６に入る。
【００２０】
ブロック２８ａ-２８ｄはタイミングをとる目的で設けられた遅延ブロックである。ブロック３０ａ-３０ｄはそれぞれのDINバスから来る各８ビットデータバイトおよびMIN信号線から来る単一マスクビットをラッチングすることができる９ビットレジスタで、このラッチングはビデオ回路１２により発生されたALIGNLAT LO信号によりクロックされるときに行なわれる。ブロック３２ａ-３２ｄはDINバス上にある現在のデータと、DINバス上に前回あったデータを表すブロック３０ａ-３０ｄとの間の選択を行なう２：１マルチプレクサである。この選択により、二つのシーケンシャルダブルワードからデータバイトを選択的に組み合わせて出力ダブルワードとすることが可能となる。ブロック３２ａ-３２ｄに対して設けられた選択論理回路３４は、表ＩＡ-ＩＤに示すブール代数論理で記述されるDIR_RIGHT信号およびROTATE[1:0]信号で駆動されるＮＡＮＤゲートおよびＮＯＲゲートで構成される。ブロック３６ａ-３６ｄは、出力ダブルワード内のバイトを回転するため、四つのマルチプレクサ３２ａ-３２ｄの任意の一出力から負荷することができる９ビットレジスである。ブロック３６ａ-３６ｄに対して設けられた選択論理回路３８は、表IIに示すブール代数により記述されるROTATE[1:0]制御信号により駆動されるＮＯＲゲートで構成される。ブロック３６ａ-３６ｄに対する選択論理回路３８は、「バレルシフティング（barrel shifting）」の機能を果たす。この場合、各ブロック３２ａ-３２ｄから得られるバイトを任意のブロック３６ａ-３６ｄの中に格納することができる。ROTATE[1:0]信号はバイトの回転、すなわちいずれのブロック３２ａ-３２ｄのバイトを各ブロック３６ａ-３６ｄ中に格納されるべきか、を示す。
【００２１】
データは図５の右側にある四つのバスData Out（DOUTバス）において整合論理回路２６から出る。この場合、各DOUTバスは８ビットデータバイトを含む。マスク情報もまた図５の右側にあるMask Outバス（MOUTバス）から整合論理回路２６を出る。この場合、MOUTバス内の四つの信号は各々、対応するDOUTバス上の８ビットデータバスをビデオメモリ１６内に格納すべきか否かを示す。
【００２２】
ソフトウェア ドライバ モジュール図６は、本発明のソフトウェア・ドライバモジュールが使用する論理を例示するブロック線図である。このソフトウェア・ドライバモジュールは、プロセッサ１０上で実行され、プロセッサ１０から送られるデータの疑似整合転送を制御する。ブロック４０はデータブロックをプロセッサ１０からビデオメモリ１６に移動させる旨のアプリケーションリクエストを受信するドライバモジュールを表す。この場合、当該データブロックはその開始バイトアドレスとバイト長により同定される。
【００２３】
ブロック４２は当該転送のための制御ヘッダを計算しフォーマット化するドライバモジュールを表す。この制御ヘッダは当該ソースアドレス、デスティネーションアドレス、バイト長、および制御ワードを含む。各整合制御ワードは対応するダブルワードに対するROTATE[1:0]、DIR_RIGHTおよびMIN[3:0]信号を表す７ビットを含む。上述したように、制御ヘッダ中のROTATE[1:0]ビット、DIR_RIGHTビットおよびMIN[3:0]ビットは整合論理回路２６に、転送の真性、すなわち当該バイトが回転されるべきか否か、回転の方向、および余分のバイトのマスキング、を通知する。例えば図２に示すデータの転送は五つのシーケンシャルダブルワードを転送することと、一バイトの右回転が必要であろう。さらに、Ｓ15の左の二つの余分のバイトおよびＳ0の右の余分の二バイトがマスクされることになろう。
【００２４】
ブロック４４は整合した転送が確実に行われるように、プロセッサ１０に与えられるソースアドレス、デスティネーションアドレスおよびバイト長を修正するドライバモジュールを表す。ブロック４６は、プロセッサ１０に命令してプロセッサ１０がビデオ回路１２に制御ヘッダおよび疑似整合データブロック（pseudo-aligned data block）を転送させるドライバモジュールを表す。
【００２５】
ビデオ回路１２はステートマシン（state machine）とＦＩＦＯとを含む。これらのＦＩＦＯは、プロセッサ１０からの転送を緩衝（buffer）してからALIGNLAT LO信号、DIR_RIGHT信号およびROTATE[1:0]制御信号線のみならずDINバス信号およびMINバス信号を整合論理回路２６中に送る。そのようなステートマシンおよびＦＩＦＯの設計は本技術分野でよく知られているのでここには之以上詳細に述べない。
【００２６】
結論要約すると、本発明はメモリへデータを疑似整合して転送する方法および装置を開示する。通常、周辺デバイスに結合される整合論理回路がプロセッサから複数のデータバイトを受信する。この整合論理回路は、当該データバイトが再整合を必要とするか否かを決定するためのデータバイトと共に転送される制御ヘッダを使用する。再整合を実行するため、整合論理回路は制御ヘッダにより示される通りに当該データバイトを結合し、回転し、マスキングする。
【００２７】
本発明の好ましい実施例に関する上記の説明は例示および説明のために示したに過ぎない。上記説明が本発明を言い尽したものではなく、また開示した通りのものに本発明を限定するものでもない。上の教示に照らして多数の設計変更および修正が可能である。例えば以下の節は本発明を達成する代わりの方法および装置を記述している。
【００２８】
当業者はメモリを有する任意のデバイスに本発明を適用することができ、ビデオコントローラに限定されないことが認識できよう。本明細書で引用したビデオをコントローラは単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【００２９】
当業者はいろいろの構成のデバイスおよび諸コンポーネントを具備したシステムに本発明を適用することができることが認識できよう。本明細書で引用した構成のデバイスおよび諸コンポーネントは単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【００３０】
当業者はいろいろのバット幅のＩ／Ｏバスに本発明を適用することができることが認識できよう。本明細書で引用したビット幅は単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【００３１】
当業者はいろいろのインストラクションの集合を具備したいろいろのプロセッサに本発明を適用することができることが認識できよう。本明細書で引用したプロセッサおよびインストラクションの集合は単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【図面の簡単な説明】
【００３２】
【図１】プロセッサとビデオメモリ間の整合した転送の一例である。
【図２】プロセッサとビデオメモリ間の未整合転送の一例である。
【図３】本発明の一般的なハードウェア環境を例示するブロック線図である。
【図４】本発明のビデオ回路を拡大したブロック線図である。
【図５】本発明の整合論理回路の諸コンポーネントを例示するブロック線図である。
【図６】本発明のソフトウェア・ドライバーモジュールで使用する論理回路を例示するブロック線図である。
【符号の説明】
【００３３】
１０  プロセッサ
１２  ビデオ回路
１４  Ｉ／Ｏバス
１６  ビデオメモリ
１８  ＣＲＴ
２０  調停論理回路
２２  ＣＲＴコントローラ論理回路
２４  マルチプレクサ
２６  整合論理回路
２８  遅延ブロック
３０  ９ビットレジスタ
３２  ２：１マルチプレクサ
３４  選択論理回路
３６  ９ビットレジス
３８  選択論理回路
【図１】
2008198218.tif 000003
【図２】
2008198218.tif 000004
【図３】
2008198218.tif 000005
【図４】
2008198218.tif 000006
【図５】
2008198218.tif 000007
【図６】
2008198218.tif 000008