説明

コンピュータシステム及びデータ転送方法

【課題】プロセッサから入出力バスを介して周辺デバイスに複数のデータバイトを転送するためのデータ転送方法及びそのシステムを提供する。
【解決手段】入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピューターメモリ内のデータ転送に関し、特にメモリへデータを疑似整合して転送(以下、データ疑似整合転送という)する方法および装置に関する。
【背景技術】
【0002】
コンピュータシステムにおいては入出力バス(I/Oバス)を介してしばしばプロセッサ、メモリおよび周辺デバイス間でデータが転送される。従来はISA、EISAあるいはマイクロチャンネル(登録商標)バスの様な標準化されたバスを使っていろいろのプラットフォームおよびいろいろのプロセッサにまたがる周辺デバイスに一つの共通I/Oインターフェースを与えていた。しかしながらこれらのバスにまたがるデータ転送には多くの問題がある。
【0003】
バスにまたがるデータ転送に関わる問題の一つは、データの未整合転送(unalignment transfer of data)である。未整合転送は一ブロックのデータバイトがソースおよびまたはデスティネーション(目標)における一ワードもしくはダブルワードの境界(boudary)に整合されていないときに起きる。そのような不整合は転送中にバイトブロックをシフトし、およびまたはマスキングを行なう点でプロセッサまたはデバイスに著しいオーバーヘッドを起こしかねない。例えばインテル(登録商標)386および486プロセッサ内の未整合転送は等価な整合転送に比べて50%ないし250%遅くなることがある。したがって、メモリへの未整合データ転送を最適化するための方法および装置を与える必要がある。
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記の先行技術における限界を克服するため、かつ本明細書の以下の記載から明らかになる他の制限を克服するため、本発明はメモリへのデータの疑似整合転送を与える方法および装置を与える。
【課題を解決するための手段】
【0005】
このため、本発明は、入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含むコンピュータシステムを提供するものである。
【0006】
また、本発明は、入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含み、前記制御ヘッダは、前記転送されるデータバイトの回転とその方向に係る情報を有し、前記整合手段は、前記制御ヘッダを解釈する手段と有し、前記転送されたデータバイトの回転による整合処理を行なうことを特徴とするコンピュータシステムを提供するものである。
【0007】
さらに、本発明は、コンピュータシステムにおけるデータ転送方法であって、プロセッサから周辺デバイスに対して出入力バスを介して複数のデータバイトを転送するステップと、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なうステップと、転送された前記データバイトの整合処理を行なうステップと、の各ステップを有し、前記整合処理を行なうステップは、前記プロセッサから、前記転送されるデータバイトを受信するステップと、当該転送されたデータバイトが再整合を必要とするか否かを決定するステップと、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうステップと、の各ステップを含むことを特徴とするデータ転送方法を提供するものである。
【発明の効果】
【0008】
本発明はデータが未整合である場合でも本発明で追加するソフトウェアおよびハードウェアを使用して、あたかもデータが整合されているかのごとくに未整合データの転送を行なう。この場合このソフトウェアは周辺デバイス内のハードウェアに命令を発生し、この命令によって当該周辺デバイスが未整合転送されたバイトを結合し、回転し、マスクして確実にそれらのバイトが周辺デバイス内に適切に整合させる。このため、本発明によりメモリへの高速なデータ転送が可能となる。
【0009】
表IA
SEL = + DIR_RIGHT NOR (- ROTATE[0] AND - ROTATE[1])
BLOCK 32A = (DIN[7:0] AND - SEL OR (BLOCK 30A AND + SEL)
表IB
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)
表IC
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)
表ID
SEL = (- DIR_RIGHT NOR (- ROTATE[1] AND - ROTATE[0]))
BLOCK 32D = (DIN[31:24] AND - SEL) OR (BLOCK 30D AND + SEL)
表II
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])
【発明を実施するための最良の形態】
【0010】
好ましい実施例に関する以下の説明では添付の図面を参照して本発明を実施した特定の実施例を示す。本発明の範囲を逸脱することなく他の実施例を実施しうること、および構造上の変更をなしうることを了解されたい。
【0011】
引用する図面において類似の参照番号は対応する部分を表す。
【0012】
データ転送を行なうための最も効率的なインテル386/486(登録商標)のインストラクション(命令)は「REP MOVSD」であるが、これは「REPeat MOVeString Double word」を意味する略号である。この命令が最も効率的に実行されるためにはソースおよびデスティネーションの両アドレスがダブルワードに整合されていること、すなわち32ビット境界に整合されていることが必要である。バイト(8−ビット)およびワード(16−ビット)の転送も許容されており、サポートされているが、それほど効率的ではない。その理由はI/Oバスが32ビット幅であるからである。しかしながら多くのアプリケーションは必ずしもデータブロックをダブルワードに整合させていない。なぜならば多くのアプリケーションは通常、データブロックにこれをストリングバイトとしてアクセスするからである。
【0013】
本発明はデータが未整合である場合でもメモリへの高速な整合データ転送を可能にする。すなわち本発明はデータを疑似整合してメモリへ転送する方法と装置を与える。その場合、本発明で追加するソフトウェアおよびハードウェアがあたかもデータが整合されているかのごとくに未整合データの転送を行なう。このソフトウェアは周辺デバイス内のハードウェアに命令を発生する。この命令は当該周辺デバイスが未整合転送されたバイトを結合し、回転し、マスクして確実にそれらのバイトが周辺デバイス内に適切に整合させる。
【0014】
整合転送および未整合転送図1および図2はデータの整合転送とデータの未整合転送の相異を示す例である。図1は整合した転送を示し、図2は未整合の転送を示す。図1および図2の両方とも、各ブロックは一バイトのデータを表し、四バイトからなる各水平グループによりダブルワードに整合された境界を示す。
【0015】
図1は典型的なダブルワードの整合転送を示す。図示するようにソースメモリ内における各データワードS0-S3、S4-S7、S8-S11、S12-S15はデスティネーションメモリ内の対応するダブルワードD0-D3、D4-D7、D8-D11、D12-D15に転送されるときに変更を受けない。従ってこの転送は転送の際にデータのダブルワード整合を維持する。
【0016】
図2はデータの未整合転送を示す。図に示すようにソースメモリ内の各バイトS0-S15はデスティネーションメモリ内の対応するバイトD0-D15に転送される際にダブルワードの相対位置を変更する。典型的な場合、整合上の変化を処理するため、バイトの結合、回転およびマスキングが必要となろう。しかしながらこれらの機能は通常、プロセッサにより非常に非能率的な方法で行なわれる。
【0017】
ハードウェア環境図3は本発明の一般的なハードウェア環境を例示するブロック線図である。プロセッサ10は例えばインテル386もしくは486プロセッサであるが、これはI/Oバス14を介してビデオ回路12に結合される。このI/Oバス14はプロセッサ10とビデオ回路12との間のアドレスデータおよび制御信号の転送を行なう。ビデオ回路12の主な目的はビデオメモリ16とCRT18を制御することである。ビデオメモリ16はプロセッサ10から送られるデータを格納する。このデータは後でCRT18に書き込まれる。ビデオ回路12はプロセッサ10からビデオメモリ16へのデータ転送とビデオメモリ16からCRT18へのデータ転送との間の調停(arbitration)を行なう。
【0018】
ビデオ回路図4はビデオ回路12を拡大して示すブロック線図である。ビデオ回路12は調停論理回路20、CRTコントローラ論理回路22、マルチプレクサ24および整合論理回路(alignment logic)26を含む。調停論理回路20はマルチプレクサ24を制御して調停論理回路20とプロセッサ10との間を調停し、それによりプロセッサ10、ビデオメモリ16およびCRT18へのデータ転送およびこれらからのデータ転送を制御する。CRTコントローラ論理回路22はCRT18上にデータを表示するため、ビデオメモリ16からデータの読み出しに必要なアドレスを与える。整合論理回路26はプロセッサ10からの転送データを確実にビデオメモリ16内に正しく整合させる。整合転送には結合も回転もマスキングも必要ないが、何らかの整合が実際に必要とされるか否かに関わらず、各データ転送について整合論理回路26が使用される。すべてのデータ転送が整合論理回路26を通して行なわれるというこの条件がすべてのタイミング問題を解決し、制御論理回路を簡単化する。
【0019】
整合論理回路図5は本発明の整合論理回路26のコンポーネントを例示するブロック線図である。データは図5の左側にある四つのバスDATA IN(DIN)で整合論理回路26に入る。この場、各DINバスは8ビットバイトのデータを含む。マスク情報は図5の左側にあるバスMask In(MIN)で整合論理回路26に入る。この場、MINバスの各四つの信号は対応するMINバス上の8ビットバイトデータに対するマスクビットを含む。このマスクビットは当該バイトが所望のデータの一部であるか、あるいは単に疑似整合転送に伴って担持される余分のバイトであるか否かを示すためのものである。制御信号もまた図5の左側にあるALIGN LAT LO、DIR_RIGHT、およびROTATE[1:0]信号線から整合論理回路26に入る。
【0020】
ブロック28a-28dはタイミングをとる目的で設けられた遅延ブロックである。ブロック30a-30dはそれぞれのDINバスから来る各8ビットデータバイトおよびMIN信号線から来る単一マスクビットをラッチングすることができる9ビットレジスタで、このラッチングはビデオ回路12により発生されたALIGNLAT LO信号によりクロックされるときに行なわれる。ブロック32a-32dはDINバス上にある現在のデータと、DINバス上に前回あったデータを表すブロック30a-30dとの間の選択を行なう2:1マルチプレクサである。この選択により、二つのシーケンシャルダブルワードからデータバイトを選択的に組み合わせて出力ダブルワードとすることが可能となる。ブロック32a-32dに対して設けられた選択論理回路34は、表IA-IDに示すブール代数論理で記述されるDIR_RIGHT信号およびROTATE[1:0]信号で駆動されるNANDゲートおよびNORゲートで構成される。ブロック36a-36dは、出力ダブルワード内のバイトを回転するため、四つのマルチプレクサ32a-32dの任意の一出力から負荷することができる9ビットレジスである。ブロック36a-36dに対して設けられた選択論理回路38は、表IIに示すブール代数により記述されるROTATE[1:0]制御信号により駆動されるNORゲートで構成される。ブロック36a-36dに対する選択論理回路38は、「バレルシフティング(barrel shifting)」の機能を果たす。この場合、各ブロック32a-32dから得られるバイトを任意のブロック36a-36dの中に格納することができる。ROTATE[1:0]信号はバイトの回転、すなわちいずれのブロック32a-32dのバイトを各ブロック36a-36d中に格納されるべきか、を示す。
【0021】
データは図5の右側にある四つのバスData Out(DOUTバス)において整合論理回路26から出る。この場合、各DOUTバスは8ビットデータバイトを含む。マスク情報もまた図5の右側にあるMask Outバス(MOUTバス)から整合論理回路26を出る。この場合、MOUTバス内の四つの信号は各々、対応するDOUTバス上の8ビットデータバスをビデオメモリ16内に格納すべきか否かを示す。
【0022】
ソフトウェア ドライバ モジュール図6は、本発明のソフトウェア・ドライバモジュールが使用する論理を例示するブロック線図である。このソフトウェア・ドライバモジュールは、プロセッサ10上で実行され、プロセッサ10から送られるデータの疑似整合転送を制御する。ブロック40はデータブロックをプロセッサ10からビデオメモリ16に移動させる旨のアプリケーションリクエストを受信するドライバモジュールを表す。この場合、当該データブロックはその開始バイトアドレスとバイト長により同定される。
【0023】
ブロック42は当該転送のための制御ヘッダを計算しフォーマット化するドライバモジュールを表す。この制御ヘッダは当該ソースアドレス、デスティネーションアドレス、バイト長、および制御ワードを含む。各整合制御ワードは対応するダブルワードに対するROTATE[1:0]、DIR_RIGHTおよびMIN[3:0]信号を表す7ビットを含む。上述したように、制御ヘッダ中のROTATE[1:0]ビット、DIR_RIGHTビットおよびMIN[3:0]ビットは整合論理回路26に、転送の真性、すなわち当該バイトが回転されるべきか否か、回転の方向、および余分のバイトのマスキング、を通知する。例えば図2に示すデータの転送は五つのシーケンシャルダブルワードを転送することと、一バイトの右回転が必要であろう。さらに、S15の左の二つの余分のバイトおよびS0の右の余分の二バイトがマスクされることになろう。
【0024】
ブロック44は整合した転送が確実に行われるように、プロセッサ10に与えられるソースアドレス、デスティネーションアドレスおよびバイト長を修正するドライバモジュールを表す。ブロック46は、プロセッサ10に命令してプロセッサ10がビデオ回路12に制御ヘッダおよび疑似整合データブロック(pseudo-aligned data block)を転送させるドライバモジュールを表す。
【0025】
ビデオ回路12はステートマシン(state machine)とFIFOとを含む。これらのFIFOは、プロセッサ10からの転送を緩衝(buffer)してからALIGNLAT LO信号、DIR_RIGHT信号およびROTATE[1:0]制御信号線のみならずDINバス信号およびMINバス信号を整合論理回路26中に送る。そのようなステートマシンおよびFIFOの設計は本技術分野でよく知られているのでここには之以上詳細に述べない。
【0026】
結論要約すると、本発明はメモリへデータを疑似整合して転送する方法および装置を開示する。通常、周辺デバイスに結合される整合論理回路がプロセッサから複数のデータバイトを受信する。この整合論理回路は、当該データバイトが再整合を必要とするか否かを決定するためのデータバイトと共に転送される制御ヘッダを使用する。再整合を実行するため、整合論理回路は制御ヘッダにより示される通りに当該データバイトを結合し、回転し、マスキングする。
【0027】
本発明の好ましい実施例に関する上記の説明は例示および説明のために示したに過ぎない。上記説明が本発明を言い尽したものではなく、また開示した通りのものに本発明を限定するものでもない。上の教示に照らして多数の設計変更および修正が可能である。例えば以下の節は本発明を達成する代わりの方法および装置を記述している。
【0028】
当業者はメモリを有する任意のデバイスに本発明を適用することができ、ビデオコントローラに限定されないことが認識できよう。本明細書で引用したビデオをコントローラは単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【0029】
当業者はいろいろの構成のデバイスおよび諸コンポーネントを具備したシステムに本発明を適用することができることが認識できよう。本明細書で引用した構成のデバイスおよび諸コンポーネントは単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【0030】
当業者はいろいろのバット幅のI/Oバスに本発明を適用することができることが認識できよう。本明細書で引用したビット幅は単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【0031】
当業者はいろいろのインストラクションの集合を具備したいろいろのプロセッサに本発明を適用することができることが認識できよう。本明細書で引用したプロセッサおよびインストラクションの集合は単に例示の目的のための物であって、これですべての適用対象を言い尽したのではなく、また開示した形態のものに限定されるものではない。
【図面の簡単な説明】
【0032】
【図1】プロセッサとビデオメモリ間の整合した転送の一例である。
【図2】プロセッサとビデオメモリ間の未整合転送の一例である。
【図3】本発明の一般的なハードウェア環境を例示するブロック線図である。
【図4】本発明のビデオ回路を拡大したブロック線図である。
【図5】本発明の整合論理回路の諸コンポーネントを例示するブロック線図である。
【図6】本発明のソフトウェア・ドライバーモジュールで使用する論理回路を例示するブロック線図である。
【符号の説明】
【0033】
10 プロセッサ
12 ビデオ回路
14 I/Oバス
16 ビデオメモリ
18 CRT
20 調停論理回路
22 CRTコントローラ論理回路
24 マルチプレクサ
26 整合論理回路
28 遅延ブロック
30 9ビットレジスタ
32 2:1マルチプレクサ
34 選択論理回路
36 9ビットレジス
38 選択論理回路

【特許請求の範囲】
【請求項1】
入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、
前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、
を含むコンピュータシステム。
【請求項2】
入出力バスを介して周辺デバイスに複数のデータバイトを転送するための手段と、前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なう手段と、を備えたプロセッサと、
前記周辺デバイスに接続され、前記プロセッサから転送された前記データバイトと前記制御ヘッダを受信して当該転送されたデータバイトが再整合を必要とするか否かを決定し、前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうための整合手段と、を含み
前記制御ヘッダは、前記転送されるデータバイトの回転とその方向に係る情報を有し、
前記整合手段は、前記制御ヘッダを解釈する手段と有し、前記転送されたデータバイトの回転による整合処理を行なうことを特徴とするコンピュータシステム。
【請求項3】
前記制御ヘッダは、前記転送されるデータバイトのソースアドレス、デスティネーションアドレス、バイト長及び制御ワードを含むことを特徴とする請求項2に記載のコンピュータシステム。
【請求項4】
コンピュータシステムにおけるデータ転送方法であって、
プロセッサから周辺デバイスに対して出入力バスを介して複数のデータバイトを転送するステップと、
前記転送されるデータバイトの整合情報を有する制御ヘッダのフォーマット化と送信を行なうステップと、
転送された前記データバイトの整合処理を行なうステップと、の各ステップを有し、
前記整合処理を行なうステップは、
前記プロセッサから、前記転送されるデータバイトを受信するステップと、
当該転送されたデータバイトが再整合を必要とするか否かを決定するステップと、
前記制御ヘッダに基づいて前記再整合を実行するために前記転送されたデータバイトの擬似整合を行なうステップと、の各ステップを含むことを特徴とするデータ転送方法。
【請求項5】
前記整合手段は、
前記プロセッサから送信されてくる転送データを格納するための第1の回路と、
前記プロセッサから送信されてくる転送データと前記第1の回路に既に格納されている転送データとを選択的に組み合わせることにより、整合されたグループのデータバイトを作成するための第2の回路と、
前記整合されたグループのデータバイトが、先に整合されたグループのデータバイトとの間で正しく配置されるように前記整合されたグループのデータバイトを選択的に再配置するための第3の回路と、
の各回路を備えることを特徴とする請求項1に記載のコンピュータシステム。
【請求項6】
前記制御ヘッダは、前記転送されるデータバイトのソースアドレスと、デスティネーションアドレスと、バイト長と、整合制御ワードと、マスク情報と、を含み、
前記整合手段は、前記マスク情報に基づいて前記転送データをマスキングするための手段を備えた、ことを特徴とする請求項3に記載のコンピュータシステム。
【請求項7】
前記再整合を行なうステップは、
前記プロセッサから送信されてくる転送データと既に送信されてきた転送データとを選択的に組み合わせることにより、整合されたグループのデータバイトを作成するステップと、
前記整合されたグループのデータバイトが、先に整合されたグループのデータバイトとの間で正しく配置されるように前記整合されたグループのデータバイトを選択的に再配置するするステップと、の各ステップを含むことを特徴とする請求項4に記載のコンピュータシステムにおけるデータ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2008−198218(P2008−198218A)
【公開日】平成20年8月28日(2008.8.28)
【国際特許分類】
【出願番号】特願2008−52554(P2008−52554)
【出願日】平成20年3月3日(2008.3.3)
【分割の表示】特願平6−139236の分割
【原出願日】平成6年6月22日(1994.6.22)
【出願人】(595131536)ハイニックス セミコンダクター アメリカ インコーポレイテッド (1)
【出願人】(592089054)エヌシーアール インターナショナル インコーポレイテッド (21)
【氏名又は名称原語表記】NCR International,Inc.
【出願人】(595026416)シンバイオス・インコーポレイテッド (2)
【Fターム(参考)】