JPH07505972A - 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法 - Google Patents

異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法

Info

Publication number
JPH07505972A
JPH07505972A JP6515373A JP51537393A JPH07505972A JP H07505972 A JPH07505972 A JP H07505972A JP 6515373 A JP6515373 A JP 6515373A JP 51537393 A JP51537393 A JP 51537393A JP H07505972 A JPH07505972 A JP H07505972A
Authority
JP
Japan
Prior art keywords
byte
information
endian
byte order
order
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.)
Pending
Application number
JP6515373A
Other languages
English (en)
Inventor
タム,スティーヴン・ユー−ミン
Original Assignee
オリヴェッティ・アドヴァンスト・テクノロジー・センター・インコーポレーテッド
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 オリヴェッティ・アドヴァンスト・テクノロジー・センター・インコーポレーテッド filed Critical オリヴェッティ・アドヴァンスト・テクノロジー・センター・インコーポレーテッド
Publication of JPH07505972A publication Critical patent/JPH07505972A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 異なるバイト順序を有する要素間の通信を容易にする装置、システム及び方法発 明の背景 10発明の分野 本発明は、第1のバイト順序(byte ordering)を有するコンピュ ータ関連の要素が第2のバイト順序を有するコンピュータ関連の要素と効率的に 通信することを可能にするシステム及び方法に関する。本発明の実施例は、2つ の要素が同じバイト順序を有しているかどうかを判定し、その2つの要素が相互 に通信するのを可能にする条件を作成するシステム及び方法をも視野に入れてい る。更に、本発明の実施例は、その2つの要素が相互に通信することを可能にす る条件が動的に管理され得ることを考慮している。
■ 関連技術 過去数十年の間に、種々のタイプのコンピュータ・アーキテクチャが展開してき た。多(のコンピュータ製造業者は、それぞれ独自のスキームとプロトコルとを 発展させ、しばしば、異なるスキームとプロトコルとを用いている装置の間での 通信を妨げてきた。その結果として、近年、コンピュータ産業の内部では、その ままでは互換性のない装置を相互に通信可能にしようとする努力が多く費やされ てきている。
コンピュータ製造業者の間で生じてきたそのようなプロトコルの差異の1つとし て、コンピュータ・システム内での「バイト順序」がある。バイト順序は、最下 位から最上位まで(典型的には「ワード」又はその一部の内部で)バイトがラン クされている順序に関し、ビット順序(これは、ビットがランクされる順序に関 する)に対するものである。
プロセッサ・インターフェース、メモリ装置、I10インターフェース等の要素 は、典型的には、特定のバイト順序を利用するためには予め構成しておくことが 必要である。こうして、これらの要素は、従来型のコンピュータ・システム内で 効率的に通信を行うことができる。オペレーティング・システムやアプリケーシ ョン・プログラムなどのソフトウェア要素は、典型的には、それらが組み立てら れているハードウェアのバイト順序を内在的に利用している(そして、そのハー ドウェアを「有している」といわれる)。バイト順序は、プロセッサ自体のレジ スタの問題ではない。これは、レジスタ内のバイトは、典型的には、選択的にア クセスされ得ない(従って、最下位バイトは、最も低いオーダーのビットから成 るものである)からである。
コンピュータ・アーキテクチャの大部分は、バイト順序の型(scheme)の 2つの異なるタイプの中の1つを用いている。第1のタイプでは、最下位バイト は、1ワードの8最下位ビットから成る。同様に、最下位バイトは、8最上位ビ ットから成る。各バイトの地位(s 1gn1 f 1cance)は、従って 、包含するビットの地位に比例する。
この第1のタイプのバイト順序は、この産業では、「リトル・エンディアン(l ittle endian)Jバイト順序として知られている。この用語は、D anny Cohen、+On Ho1y Wars And A PleaF or Peace+ (IEEE Computer、 0ctober、19 81)と題する文献に由来するものである。リトル・エンディアン型のバイト順 序は、マサチューセッツ州メイナードのDigital Equipement 社の製造によるVAX型のコンピュータや、カリフォルニア州すンタクララのイ ンテル社の製造によるプロセッサを用いたコンピュータで採用されている。
第2のタイプのバイト順序においては、最下位バイトは、1ワードの8最上位ビ ットから成る。従って、各バイトの地位は、従って、包含するビットの地位に反 比例している。このタイプのバイト順序は、この産業では、「ビッグ・エンディ アン(big endian)J/<イト順序として知られ、ニューヨーク州ア ーモンクの18M社の製造による370メインフレーム・コンピュータや、イリ ノイ州ショーンバーグのモトローラ社の製造による68000型のプロセッサを 用いたコンピュータで採用されている。注意すべきは、ビッグ・エンディアン型 とリトル・エンディアン型とのどちらのタイプのバイト順序でも、ビットの地位 (すなわち、ピント・オーダー)は、バイト順序には影響されない点である。
特定のコンピュータ・システム内の要素が用いるバイト順序のタイプは、特に、 任意の与えられた時刻において1ワ一ド未満が送信される場合に、これらの要素 の間で情報が送信される態様に影響する。この情報が(通常は何らかのタイプの バスを介して)送信される特定の態様は、慣行によって決定されており、明白な パターンには従わない。この理由により、ビッグ・エンディアン型のコンピュー タ・システム(すなわち、ビッグ・エンディアン型のバイト順序を有する要素を 用いるコンピュータ・システム)と、リトル・エンディアン型のコンピュータ・ システムとにおける情報通信の例を、以下で図1〜図3を参照して説明する。
最初に図1を参照すると、この図には、2つの異なるコンピュータ・システム( それぞれがプロセッサ及びレジスタ102を有しているとする)のバスを介して プロセッサ(図示せず)内のレジスタ102から送信される1バイトの情報の効 果を示しである。詳しくは、リトル・エンディアン型のコンピュータ・システム 内では32ビツトのバス104を介して、また、ビッグ・エンディアン型のコン ピュータ・システム内では32ビツトのバス106を介して、情報が送信されて いる。1バイトだけが送信されているので、情報は、レジスタ102の8最下位 ビット内に位置している。よって、レジスタ102は、バス104を用いた例の リトル・エンディアン型バイト順序を有するプロセッサと、バス106を用いた 例のビッグ・エンディアン型バイト順序を有するプロセッサとの内部にあるもの と仮定する。
図1では、バス104.106に、「バイト0」〜「バイト3」のラベルが付け られている。これは、バスを介して送信される各バイトの地位を表す(バイト0 を最下位バイトとする)。ここでは、レジスタ102からの1バイトの情報(情 報(A))が、各バスを介してバイト1で、成る要素(図示せず)の「バイト1 」を表す位置に送信される様子が(各コンピュータ・システムに関して)示され ている。バス104.106は、従って、バイトが要素によって受信されるバイ ト順序を反映する。結果的に、バイト情報がバス104.106上を送信される 態様は、ビッグ・エンディアン型、リトル・エンディアン型のバイト順序の使用 の間の差異を的確に図解するものとして用いられ得る。
バス104によって示されるリトル・エンディアン型のバイト順序とバス106 によって示されるビッグ・エンディアン型のバイト順序との間の最も明白な差異 は、リトル・エンディアン型のバイト順序ではバイトOは8最下位ビットから成 るのに対して、ビッグ・エンディアン型のバイト順序ではバイト0は8最上位ビ ットから成る点である。よって、上述のように、リトル・エンディアン型のバイ ト順序ではバイト順序はビット順序に正比例するのに対して、ビッグ・エンディ アン型のバイト順序ではバイト順序とビット順序とは反比例の関係にある。
従って、バス104によって示されるリトル・エンディアン型のバイト順序の例 では、情報(A)のバイトは、バス104に沿ったバイト1の位置に現れる。
ここでは、バイト1は、ビット8〜15から成っている。バス106によって示 されるビッグ・エンディアン型のバイト順序の例では、情報(A)のバイトは、 バス106に沿ったバイト1の位置に現れる。しかし、今回は、バイト1は、ビ ット16〜23から成っている。結果的に、リトル・エンディアン型のバイト順 序とビッグ・エンディアン型のバイト順序とは、この例では入れ替わって(フリ ップして)現れる。
次に、図2を用いて、レジスタ102からの情報の半ワード(2バイト)がバス 104.106を介して送信される場合の効果を説明する。図2では、レジスタ 102には、それぞれのコンピュータ・システムでバス104.106を介して 成る要素(図示せず)のバイト0とバイト1とに送信される半ワードの情報が含 まれている。バス104で表されるリトル・エンディアン型のコンピュータ・シ ステムでは、レジスタ内の第1のバイト(情報(A))はバイト0に現れ、レジ スタ内の第2のバイト(情報(B))はバイト1に現れる。従って、情報(A) は8最下位ビットを介して送信され、情報(B)は8つの次の下位ビット(ビッ ト8〜15)を介して送信される。
これと対照的に、ビッグ・エンディアン型のコンピュータ・システム(バス10 6で示しである)では、情報(A)はバイト1(ビット23〜16)に現れ、情 報(B)はバイト0(8最上位ビットから成る)に現れている。バス106を介 する情報は、バス104を介した場合と比較して、フリップされているのではな く、シフトされていることに注意すべきである(すなわち、リトル・エンディア ン型のバイト順序のバイトOは情報(A)を含み、これに対して、ビッグ・エン ディアン型のコンピュータ・システムでは、バイト0ではなくバイト1が情報( A)を含む)。
図3は、バス104.106を介して送信される1ワード(この例では4バイト )の情報の効果を示している。図3を参照すると、レジスタ102内の情報の順 序は、リトル・エンディアン型のバイト順序を表すバス104を介しての情報の 順序と同じであることがわかる。従って、情報(A)は、レジスタ102でもバ ス104を介しても両方で8最下位ビットを含む。
バス106を介してのビッグ・エンディアン型のバイト順序では、1ワードの情 報は、バス104を介してのリトル・エンディアン型のバイト順序の場合と同じ ビット・シーケンスで送信される。従って、1ワードがバス106を介して送信 される場合には、たとえば情報(A)は、バス104の場合と同様に8最下位ビ ットを介して送信される。しかし、各バイト順序が、バイト0、ノくイト1等と 考える順序は変化しないことに注意すべきである。
リトル・エンディアン型及びビッグ・エンディアン型のプロトコルのノくイト順 序に関するこれ以上の説明は、上述の”On Ho1y Wars And A Plea For Peace”に与えられている。また、以上の例では32ビ ツトのコンピュータ・アーキテクチャを示したが、説明した種々の概念は、他の サイズのアーキテクチャにも同様に適用できる。
すべての要素(プロセッサ、メモリなど)が同じバイト順序を用いるような従来 型の計算環境で操作している場合には、バイト順序は、典型的には、日々の操作 においては、平均的なユーザやプログラマにとっては、関心対象ではない。これ は、バイト・サイズの情報は、特定のアドレスに書き込まれれば、典型的には同 じアドレスにおいてアクセスされ得るからである。これは基本的な原理であって 、これなしにはコンピュータはほとんど機能し得ないであろう。
2つのバイト順序スキーム(これは以下で説明する)の間で生じる非互換性問題 のために、特定のコンピュータのバイト順序は、ユーザがどちらのタイプのソフ トウェアを購入すべきかを決める際に下すことのできる決定を制限している。
更に詳しくは、オペレーティング・システムは、典型的には、一方のノくイト順 序又は他方のバイト順序に対して書かれている。たとえば、Microsoft NTはリトル・エンディアン型のコンピュータ・システムでの使用のために設計 されてお一す、他方で、Unixオペレーティング・システムの大部分はビッグ ・エンディアン型のコンピュータ・システムでの使用のために設計されている。
結果的に、ユーザが使用しようとしているオペレーティング・システムのタイプ が、ユーザが購入できるコンピュータ・システムのタイプを決定することになる 。別の見方をすれば、ユーザが既に成るコンピュータを購入していれば、オペレ ーティング・システム購入に関する選択肢は限定されてしまう。
従って、ビッグ・エンディアン型又はリトル・エンディアン型のどちらの7(イ ト順序を用いても、オペレーティング・システム(及びその上で動く任意のソフ トウェア)をランすることができるコンピュータ・システムに対するニーズが生 じてきた。そうであれば、ユーザは、そのようなコンピュータ・システムを購入 できるし、いずれのバイト順序のソフトウェアも使用できる。よって、そのコン ピュータ・システムはどちらのバイト順序スキームを使っても動作することが可 能であるから、ユーザは、ビッグ・エンディアン又はリトル・エンディアン型の どちらのオペレーティング・システムでも用いることができる。
ビッグ・エンディアン又はリトル・エンディアン型のどちらのノくイト順序を用 いてもソフトウェアを動かせるコンピュータ・システムを設計する際のキーとな るステップは、ビッグ・エンディアン又はリトル・エンディアン型のどちらのモ ードでも動作するプロセッサを設計することである。カリフォルニア州すニーベ ールのMIPSコンピュータ・システムズ社は、パイエンディアン型の(すなわ ち、ビッグ・エンディアン又はリトル・エンディアン型のどちらのモードでも動 作し得る)マイクロプロセッサ(R−4000)を設計した。結果的に、ビ・ソ ゲ・エンディアン又はリトル・エンディアン型のどちらのバイト順序を用いたオ ペレーティング・システムでもこのマイクロプロセッサを用いて動かすことがで きる。
しかし、パイエンディアンであるプロセッサを単に製作するだけでは十分ではな い。これは、従来型のコンピュータの要素は、ビッグ・エンディアン又はリトル ・エンディアン型のどちらかのバイト順序を用いるように設計されているからで ある。すなわち、メモリ装置等の要素は、ビッグ・エンディアン型のノくイト順 序スキーム又はリトル・エンディアン型のバイト順序スキームのどちらかにおい て適切にアドレス指定が可能であるように構成されているのである。
すべての要素がパイエンディアンであるようなコンピュータ・システムを構築す ることも可能かも知れないが、パイエンディアン型のプロセッサと既存の要素を 用いてコンピュータ・システムを作ることのほうが費用効果的にみて優れている だろう。そのようなコンピュータ・システムを作るためには、コンピュータ・シ ステムの設計者は、ビッグ・エンディアン又はリトル・エンディアン型のどちら かの要素(すなわち、ビッグ・エンディアン又はリトル・エンディアン型のどち らかのバイト順序を有する要素)を選択しなければならないであろう。パイエン ディアン型のプロセッサが第1のバイト順序モードで動作するように設定されて おり、そのプロセッサが情報を交換する要素が第2のバイト順序モードを有して いる場合に問題が生じる。この状況において遭遇する問題の例は、図4に示した 例を参照すると、最も的確に説明され得る。
図4を参照すると、パイエンディアン型のプロセッサ402が、ビッグ・エンデ ィアン型のモードで動作しているように示されている。よって、パイエンディア ン型プロセッサ402のバス・インターフェース408では、バイトOは8最下 位ビットを含んでいる。この特定の例では、1バイトの情報(A)が、バス40 ・4を介して送信されている。
また、バス404には、リトル・エンディアン型の要素が付随している。この要 素は、たとえば、メモリ装置でかまわない。
パイエンディアン型のプロセッサ402がバス404上にバイト0で情報(A) を送信する場合には、信号もまたバイトOて受信要素406に送られる。受信要 素・406がビッグ・エンディアン型のバイト順序を有しているならば、この処 理によって予想される結果は、情報(A)を受信する要素406の部分がイネー ブルされることである。しかし、この例では、要素406のバイトOがイネーブ ルされる(情報を受信できる)が、情報(A)はバイト3(イネーブルされてい ない)で受信される。
更に詳しくは、産業界で標準的な設計(indus t ry−s tanda rddesigns)により、1バイトがバス上を特定のバイト位置(たとえば 、バイト0)から送信される際には、受信する側の要素の対応するバイト位置が イネーブルされる。これと産業界で標準的な設計とのために、情報(A)は、リ トル・エンディアン型の要素406のどの部分にも全(受信されないことになる 。
上述のものと同じタイプの問題は、半ワードがリトル・エンディアン型の要素4 06に送信された場合にも生じる。しかし、1ワ一ド全体が送信される場合には 、図3をも参照することによって予想できるように、リトル・エンディアン型の 要素406の4バイトすべてがイネーブルされ、よって、すべての情報が受信さ れる。特に、パイエンディアン型プロセッサ402のバイト0のバス・インター フェース408にある情報はリトル・エンディアン型の要素406のバイト3に よって受信され、バス・インターフェース408のバイト1はリトル・エンディ アン型の要素406のバイト2に書き込まれる等である。ワード全体が次にリト ル・エンディアン型の要素406から読み出される場合には、それは、送信され た際と同じ順序でパイエンディアン型プロセッサ402のバス・インターフェー ス402によって受信される。
ビッグ・エンディアン又はリトル・エンディアン型のバイト順序スキームの有す る複雑な性質から理解されるように、ビッグ・エンディアン型要素がリトル・エ ンディアン型要素と、多数の生じ得るバイト送信状況に対して、効率的に通信す ることを可能にする解決策を作り出すことは容易ではない。この問題に対する1 つの解答は、MIPSコンピュータ・システムズ社による欧州特許出願第470 57082号に開示されている。この出願では、ターゲット要素(すなわち、情 報を受信する要素)のバイト・アドレスが、情報が受信可能であるように翻訳さ れる。更に詳しく図4に示した例を用いると、バイト0から情報(A)がデータ ・バス404を介して送信される場合には、リトル・エンディアン型要素の受信 側バイト・アドレスはバイトOからバイト3に翻訳される。その結果、リトル・ エンディアン型要素406の(バイトOではなく)バイト3がイネーブルされて 、バイト3がパイエンディアン・プロセッサ402のバス・インターフェース4 08のバイトOから情報(A)を受信する。
MIPSによるアプローチに伴う問題は、それを既存のコンピュータ・システム 内に設置することが困難であるという点である。特に、すべてのターゲット要素 に対するアドレス・コントローラを設計し直さなければならない。これによって 、既存のコンピュータ・システムの内部的な機構を更に修正することが必要にな る。
MIPSによるアプローチでは適切に解決されない別の問題は、情報が、第1の バイト順序を有する要素から何らかの外部の媒体に送信され、次にその媒体から 第2のバイト順序を有する別の要素に送信されるという状況に関する。この問題 を、以下で、図5と図6とを参照して説明する。
最初に図5を参照すると、この図は、メモリ装置内の1ワードの情報のバイトが 、その情報がビッグ・エンディアン型プロセッサから受信された後で、どのよう な状態になっているかという例を示している。更に詳しくは、図5は、ビッグ・ エンディアン型メモリ506とリトル・エンディアン型メモリ512との中の1 ワードの情報の、この情報がビッグ・エンディアン型プロセッサ502から受信 された後でのバイト順序を示している。情報のバイト順序は、バイトの[地位( s ign i f i cance)Jは逆になっている(既に図3に関して 説明したように)にもかかわらず、両方のメモリ装置に関して同じであることに 注意すべきである。また、リトル・エンディアン型のメモリ512は、1ワ一ド 全体の情報が送信されるという理由だけによってビッグ・エンディアン型プロセ ッサ502から情報を受信できることに注意すべきである。
次に図6を参照すると、媒体602上に示したバイト順序は、媒体602が、図 5のビッグ・エンディアン型プロセッサ502から(図示していないが、何らか のI10装置を介して)情報を受信したことの結果である。媒体602かられか るように、ビッグ・エンディアン型メモリ506のバイトO(これは、ここでは 、バイト・アドレスを表し、情報(D)を含む)は、位置0において媒体602 上に書き込まれ、次に、増加した地位のバイトがその後で媒体602の次の位置 に書き込まれる。これは、情報がそのような媒体上に書き込まれる従来型の態様 を表す。
媒体602上の情報がビッグ・エンディアン型メモリ506に再度読み出される のならば、媒体602の位置Oはビッグ・エンディアン型メモリ506のバイト Oによって、位置1はバイト1によって、のように受信される。従って、媒体6 02からビッグ・エンディアン型のメモリ上への情報読みだしは、結果として、 ビッグ・エンディアン型メモリ506によって示される順序を有する情報を生じ る。
媒体602上の情報がリトル・エンディアン型メモリ604が示すようなリトル ・エンディアン型のメモリに送信される場合には、やはり、媒体602の位置0 はリトル・エンディアン型メモリ604のバイトOに、位置1はバイト1に読み 出される。ワード全体が媒体602から読み出される場合には、情報は、リトル ・エンディアン型メモリ604によって示されるような順序になる。しかし、バ イトの順序は、図5でリトル・エンディアン型メモリ512によって示されたも のとは逆であることに注意すべきである。結果として、リトル・エンディアン型 メモリ604におけるバイト情報は、あるべき順序とは逆になっている。
上述の問題は、情報がバスを介して適切に並ばないのであるから、MIPSによ る解答のアドレス・スキームを操作しても解決され得ない。別言すれば、情報は 、示したようにバス608を介するとビッグ・エンディアン型プロセッサ606 によって不正確に受信され、バイト・アドレスのイネーブル方法を操作しても、 この状況を変えることはできない。
上述の問題の1つの解決策は、リトル・エンディアン型メモリ604内の情報の すべてのバイトを、ビッグ・エンディアン型プロセッサ606がその情報にアク セスできる前に、適切に並ぶように(すなわち、この例では、情報(D)をバイ ト3に、情報(A)をバイトOに、など)スイッチングすることである。しかし 、情報の量が多い(ワード数が多い)場合には時間がかかるために、このスキー ムはあまり有効ではない。
ある形式の媒体を用いて情報をリトル・エンディアン型メモリ604とビッグ・ エンディアン型プロセッサ606とによって示されるような混合型のコンピュー タ・システムに送信する可能性があるので、図5、図6に示したような問題は重 大であることを強調したい。また、上述の例は、プロセッサ/メモリの関係だけ ではな(、コンピュータ・システム内の2つの要素間の関係にも当てはまること も強調したい。
発明の概要 本発明は、転送されるのが1バイト、半ワード、1ワード(又はバス幅のよって は、その整数倍)のいずれであるかにかかわらず、異なるバイト順序を有する要 素が情報を相互に効率的な態様で通信することを可能にするシス斗ム及び方法を 提供することによって従来の装置の欠点を克服する。本発明は、2.、っの要素 が異なるバイト順序を有する場合に、要素間に通信リンク(たとえば、バス)内 に情報のクロスオーバー・バイト・ラインの実施例を提供することによって、こ れらの結果を優れた態様で達成する。ある実施例によれば、2つの要素が同じバ イト順序を有しているとの指示を受信した場合には、バイト・ラインはクロスオ ーバーを停止する。
本発明の実施例によれば、既存のシステムにおける使用が構想されており、その 場合には、コンピュータ・システム内の他の要素とは異なるバイト順序を有する 1つ又は複数の要素が既存のシステム内に挿入される。本発明は、次に、異なる バイト順序を有するこれらの要素の間の通信を可能にする。
本発明の実施例によれば、ビッグ・エンディアン又はリトル・エンディアン型の どちらのバイト順序を有するオペレーティング・システム(更にそのほかのコン ピュータ・プログラム)でも使用できるように、パイエンディアン型のプロセッ サを有するコンピュータ・システム(あるいは、コンピュータ・システム内での 使用)が構想されている。このような状況では、本発明がパイエンディアン型の プロセッサ上で動いているコンピュータ・プログラムとそのコンピュータ・プロ グラムとは異なるバイト順序を有する要素との間を通信するようにおかれている 場合には、本発明は、バイト・ラインを交差(クロスオーバー)させ、要素が同 じバイト順序を有する場合には、交差させない。
また別の実施例によれば、本発明がいったんオペレーティング・システムの動作 中に設定された場合には、その動作中には再設定(すなわち、クロスオーバーか ら非クロスオーバーへ、またその逆へのモードの変更)はおこなわれない。また 、別の実施例によれば、その時点で動いているコンピュータ・プログラムのバイ ト順序に応じて、本発明を動的に再設定することができる。この後者の実施例に よれば、第1のバイト順序を有するコンピュータ・プログラムは、第2のバイト 順序を有する別のコンピュータ・プログラムに連絡(call)することができ る。それにより、パイエンディアン型プロセッサのモード変更が必要になるし、 同時に、バイト・ラインがクロスオーバーされるかされないかを再設定すること も必要になる。
図面の簡単な説明 本発明の種々の目的、特徴、達成される効果は、添付の図面と共に以下の発明の 詳細な説明を参照することによってよりよく理解されるであろう。
図1は、レジスタから、リトル・エンディアン型のバイト順序を有する要素とビ ッグ・エンディアン型のバイト順序を有する要素とへの、1バイトの情報の転送 を示すブロック図である。
図2は、レジスタから、リトル・エンディアン型のバイト順序を有する要素とビ ッグ・エンディアン型のバイト順序を有する要素とへの、半ワードの情報の転送 を示すブロック図である。
図3は、レジスタから、リトル・エンディアン型のバイト順序を有する要素とビ ッグ・エンディアン型のバイト順序を有する要素とへの、1ワードの情報の転送 を示すブロック図である。
図4は、異なるバイト順序を有する2つの要素の間の情報の転送を示すブロック 図である。
図5は、ビッグ・エンディアン型プロセッサから、ビッグ・エンディアン型メモ リとリトル・エンディアン型メモリとに書き込まれる情報のシーケンスを示すブ ロック図である。
図6は、媒体からリトル・エンディアン型メモリに書き込まれ、更にその後にビ ッグ・エンディアン型プロセッサに送信されるバイトのシーケンスを示すブロッ ク図である。
図7Aは、ビッグ・エンディアン型要素を用いた従来型のコンピュータ・システ ムと、リトル・エンディアン型要素を用いた従来型のコンピュータ・システムと を示すブロック図である。
図7Bは、リトル・エンディアン型プロセッサとビッグ・エンディアン型要素と を有する本発明の実施例によるコンピュータ・システムと、ビッグ・エンディア ン型プロセッサとリトル・エンディアン型要素とを有する本発明の実施例による コンピュータ・システムとのブロック図である。
図8は、パイ・エンディアン型プロセッサとビッグ・エンディアン型要素とを有 する本発明の実施例によるコンピュータ・システムと、パイ・エンディアン型プ ロセッサとリトル・エンディアン型要素とを有する本発明の実施例によるコンピ ュータ・システムとのブロック図である。
図9は、活性モードにある本発明の実施例を示す図である。
図10Aは、本発明の実施例による不活性モードにあるスイッチの図である。
図10Bは、本発明の実施例による活性モードにあるスイッチである。
図11は、本発明の実施例によるスイッチの回路図である。
図12Aは、本発明の実施例による不活性モードにあるスイッチの使用を示す図 である。
図12Bは、本発明の実施例による活性モードにあるスイッチの使用を示す図で ある。
図13は、情報をスワップする本発明の実施例による方法のフローチャートであ る。
図14は、第1のバイト順序を有する要素から第2のバイト順序を有する要素へ 、1バイトの情報を転送する本発明の動作の例である。
図15は、第1のバイト順序を有する要素から第2のバイト順序を有する要素へ 、半ワードの情報を転送する本発明の動作の例である。
図16は、当初は第1のバイト順序を有する要素から生じた情報を、媒体から第 2のバイト順序を有する要素へ、更に、第1のバイト順序を有する要素へと転送 する本発明の実施例による例である。
図17は、第1のバイト順序を有するコンピュータ・プログラムの使用と第2の バイト順序を有するコンピュータ・プログラムの使用との間の動的なスイッチン グの本発明の実施例によるブロック図である。
図18は、プロセッサのバイト順序を動的に変更して種々のバイト順序を有する コンピュータ・プログラムに適応させる本発明の実施例による方法のフローチャ ートである。
好適実施例の詳細な説明 ■、全体像及び構成例 本発明は、第1のバイト順序を有するコンピュータ関連要素が、第2のバイト順 序を有するコンピュータ関連要素と有効に通信することを可能にするシステム及 び方法に関する。本発明の実施例によれば、2つの要素が同じバイト順序を有し ているかどうかを判定し、次に、その2つの要素が通信することを可能にするシ ステム及び方法が提供される。更に、本発明の実施例によれば、2つの要素相互 の通信を可能にするこれらの方策の動的な管理がなされる。
一般に、本発明は、従来の装置の欠点を克服するのにニレガントなスキームを用 いる。特に、本発明は、第1のバイト順序を有するコンピュータ関連要素が、第 2のバイト順序を有するコンピュータ関連要素と通信することを可能にするのに 、情報スワップ・スキームを用いる。2つのバイト順序スキーム内でのバイト管 理に関して上述した込み入った事情と、それらの間での相互作用を容易にするこ との困難とにもかかわらず、本発明によるスワップ・スキームは、所望の結果を 達成する。
情報の実際のスワップの実施に用いるスキームの詳細を説明する前に、スワップ が生じる本発明の実施例による種々の構成例と想定される状況とに関して説明す る。これらの実施例は、既存のコンピュータ・システムの内部での使用と、また 同時に、コンピュータ・システム全体を含むそれ自体での使用とを考慮している 。これらの実施例を図7A〜図70を参照して説明する。
最初に図7Aを参照すると、この図には、それぞれが1つの「マスク」及び2つ の「スレーブ」要素を有する2つの従来型のコンピュータ・システムが示されて いる。特に、これらのコンピュータ・システムは、それぞれが、プロセッサ(マ スク)と、メモリ及びI10装置(スレーブ)とを備えている。更に詳しくは、 コンピュータ・システム702Aは、ビッグ・エンディアン型メモリとビッグ・ エンディアン型I10とを備えたビッグ・エンディアン型プロセッサ(たとえば 、モトローラ68000)を有している。同様に、コンピュータ・システム70 4Aは、リトル・エンディアン型メモリとリトル・エンディアン型I10とを備 えたリトル・エンディアン型プロセッサ(たとえば、インテル80486)を有 している。コンピュータ・システム702A上では、ビッグ・エンディアン型の 環境で機能するように設計されたオペレーティング・システムや他のコンピュー タ・プログラムだけが動く。同様に、コンピュータ・システム704A上では、 リトル・エンディアン型の環境で機能するように設計されたオペレーティング・ システムや他のコンピュータ・プログラムだけが動(。
図7Aの従来型のコンピュータ・システムが元来動かす(ランする)ことを意図 しているものとは異なるバイト順序のソフトウェアを動かすことを可能にするた めには、そのプロセッサが、オペレーティング・システムの同じバイト順序を用 いて動作しなければならない。つまり、たとえば、ビッグ・エンディアン型のコ ンピュータ・システムにリトル・エンディアン型のオペレーティング・システム を使わせるためには、プロセッサが、どうにかして、リトル・エンディアン型モ ードで動く必要がある。そのための1つの方法としては、単純にコンピュータ・ システムのプロセッサを、逆のバイト順序(すなわち、オペレーティング・シス テムのバイト順序)を有するプロセッサと交換する方法がある。しかし、これだ けでは、図4との関係で上述した問題が存在するために不十分である。この問題 の解決策を、次に図7Bを参照しながら説明する。
図7Bを参照すると、コンピュータ・システム702Bは、ビッグ・エンディア ン型メモリ712とビッグ・エンディアン型110714を、図7Aのコンピュ ータ・システム702Aと同様に備えている。また、リトル・エンディアン型プ ロセッサ706とバス710を含むコンピュータ・システム702Bの残りの要 素との間には、スワップ装置708が通信をするように置かれている。このスワ ップ装置708によって、情報は、リトル・エンディアン型プロセッサ706と ビッグ・エンディアン型メモリ712等のビッグ・エンディアン型要素との間で 有効に通信される。これにより、実際、リトル・エンディアン型オペレーティン グ・システムとリトル・エンディアン型プロセッサ706上で動いているコンピ ュータ・プログラムとが、ビッグ・エンディアン型メモリ712とビッグ・エン ディアン型110714と通信することが可能になる。
スワップ装置708は、以下で説明する態様でバイトを「スワップ」する(継続 的にスイッチングする(swi tch around))ことによって、上述 の仕事を行う。しかし、種々の要素のバイト・アドレスは修正されず、また、情 報はその目的地点に移動するにつれてスワップ装置708によってスワップされ ることに注意されたい。
コンピュータ・システム702Bと同様に、コンピュータ・システム704Bで は、ビッグ・エンディアン型プロセッサ716がコンピュータ・システム704 Aのリトル・エンディアン型プロセッサを代替している。やはり、スワップ装置 708の存在によって、ビッグ・エンディアン型オペレーティング・システムと ビッグ・エンディアン型プロセッサ716上で動いているコンピュータ・システ ムとが、リトル・エンディアン型メモリ722やリトル・エンディアン型■10 724と通信することが可能になる。
本発明の実施例によれば、プロセッサを逆のバイト順序を有するものと交換する にはコンピュータ・システムの中へのプロセッサのインターフェースをいくらか 修正する必要がある。よって、[グルー・ロジック(glue logic)J の修正が必要である。そのような修正は、当業者には明らかである。
図7Bのコンピュータ・システムに示したようにスワップ装置708をプロセッ サや他の要素と通信できるように配置することに加えて、本発明の実施例によれ ば、スワップ装置708を図7Bに示した態様とは別の態様で要素の間に通信可 能に配置することができる。たとえば、コンピュータ・システム702Aを参照 すると、ビッグ・エンディアン型メモリは、スワップ装置708及びリトル・エ ンディアン型メモリと代替できる。その結果として、第2のバイト順序を有する 任意の1つ又は複数の要素を、第1のバイト順序の要素を有するコンピュータ・ システムに導入することができるし、スワップ装置708を用いることでそのコ ンピュータ・システム内で機能させることができる。
本発明の実施例によれば、各プロセッサがスワップ装置708と通信する並列処 理アーキテクチャを有するコンピュータ・システムも可能である。
コンピュータ・システムのプロセッサを交換するのではなく、本発明の実施例( 及びそこで用いられる環境)によれば、上述のMIPS R−4000などのパ イエンディアン型プロセッサの使用も考慮される。このR−4000は、ビッグ ・エンディアン又はリトル・エンディアン型のモードで動作し得るので、ビッグ ・エンディアン又はリトル・エンディアン型のどちらのオペレーティング・シス テム(及び任意の他のコンピュータ・プログラム)でもこのプロセッサによって 使用可能である。
要素(たとえば、メモリ及びI 10)の大部分はビッグ・エンディアン又はリ トル・エンディアン型のどちらか一方用に(両方ではな(て)設計されているの で、すべてがビッグ・エンディアン又はリトル・エンディアン型のどちらか一方 のバイト順序を有する要素を伴い、パイエンディアン型のプロセッサを用いるコ ンピュータ・システムを設計するのが典型的には最も有効である。本発明の実施 例ではそうではない場合も含んでいるが、図8には、そのような状況が開示され ている。
次に図8を参照すると、パイエンディアン型プロセッサ806と、ビッグ・エン ディアン型メモリ712と、ビッグ・エンディアン型110714と、バス71 0とを備えたコンピュータ・システム802が示されている。スワップ装置70 8は、パイエンディアン型プロセッサ806やコンピュータ・/ステム802の 他の要素と通信する。ビッグ・エンディアン型のオペレーティング・システムが パイエンディアン型プロセッサ806(ビッグ・エンディアン型モードに設定さ れ得る)上で動いている場合には、スワップ装置708は不活性モードにある( すなわち、バイトのスワップは生じない)が、これは、コンピュータ・システム 802内のすべての要素がビッグ・エンディアン型のバイト順序を有しているか らである。しかし、リトル・エンディアン型のオペレーティング・システムがパ イエンディアン型プロセッサ806(この場合は、リトル・エンディアン型モー ドに設定される)上で動いている場合には、スワップ装置708は活性モードに あり、情報がリトル・エンディアン型オペレーティング・システムとコンピュー タ・システム802のビッグ・エンディアン型要素との間を通過する際に有効に 用いられることが可能になる。同じ概念が、コンピュータ・システム804にも 適用でき、そこでは、ビッグ・エンディアン型要素ではな(てリトル・エンディ アン型要素が用いられている。
図8に示した要素に関しては、ある実施例によれば、パイエンディアン型プロセ ッサ806は特定のオペレーティング・システムのバイト順序に従って設定され ており、動作の最中に再設定はされない。本発明の他の実施例では、パイエンデ ィアン型プロセッサ806は適当な状況では再設定が可能であり、これはビッグ ・エンディアン型のオペレーティング・システムがリトル・エンディアン型ソフ トウェアのルーチンを呼び出した場合(又はその逆)などである。その場合には 、スワップ装置708は、同様にその時刻に、(活性から不活性、又はその逆に )状態を変更する。コンピュータ・システム804の例では、スワップ装置70 8は、ビッグ・エンディアン型オペレーティング・システムがリトル・エンディ アン型ソフトウェアのルーチンを呼び出した場合には、不活性から活性に変化す るつ 本発明の実施例によれば、いずれかのバイト順序を有するメモリ要素は、DRA MやCM OSなどを含む任意のタイプのコンピュータ・メモリ装置でかまわな い。別の実施例では、メモリは、直接メモリ・アクセス等のスキームによって制 御され得る。本発明の実施例によれば、I10要素は、I10装置への(ハード ディスク・コントローラや、LANコントローラなどの)インターフェースであ る。
また、別の実施例では、スワップ装置708は、独立した存在ではなく、コンピ ュータ・システムの(バスやメモリ装置などの)1つ又は複数の要素の統合部分 である。
■、考察される構成 本発明の実施例によれば、上述の特徴を容易にする情報のスワップを構成するこ とが構想される。第1に、本発明の種々の実施例で想定されているスワップ装f 1708を図9を参照して概念的に説明する。
図9を参照すると4本のライン(A、B、C,D)がスワップ装置708を通過 しその内部で交差している様子が示されている。これらの各ラインは、幅が1バ イトである。図9ではライン(以下では、「バイト・ライン」と称する)は4本 であるが、本発明の種々の実施例での使用においては、本数は任意である。
図9からは、最も外側のバイト・ライン(A及びD)が相互に位置をスワップし ている様子がわかる。内側のバイト・ライン(B及びC)もまた相互に位置をス ワップしている。更に多くのバイト・ラインが用いられた場合でも、同様のパタ ーンが生じる。たとえば、更に2本のバイト・ラインが、バイト・ラインA、B の間に1本とC,Dの間に1本存在する場合であれば、これらの2本のバイト・ ラインはスワップ装置708を通過する際に相互に位置をスワップする。
図9のスワップ装置t708は、活性モード(バイト・ラインはスワップされる )として表示されている。上述のように、このスワップ装置708を不活性モー ドすなわちバイト・ラインがスワップされないモード(スワップ装置708が全 く存在しないかのような状態)に設定することも可能である。スワップ装置70 8を構成する実施例は、以下て説明する。
スワップ装置708を構成する本発明の実施例のいくつかでは、1つ又は複数の スイッチを用いる。これらの各スイッチは、スワップ装置が活性モードに設定さ れている場合には、2本のバイト・ラインをクロスオーバー(すなわち、スワ・ ツブ)する。これらのスイッチの例が、図10A及び図10Bに示されている。
これらの図におけるバイト・ラインのラベル付けは、(図11や、以下で述べる 図12A及び図12Bでも同様であるが)図9でのバイト・ラインのラベル付け と、明瞭さのために関連している。
最初に図10Aを参照すると、スイッチ1002が示されており、バイト・ライ ンA、Dがそれを通過している。非クロスオーバー信号(たとえば、図10Aで 示したように0であり、これは、スワップ装置708が不活性モードにあること を示す)がクロスオーバー人力1004に送信された場合には、スイッチ100 2は不活性であり、バイト・ラインA、Dはスワップされない。しかし、クロス オーバー信号(たとえば、1)がクロスオーバー人力1004に送信された場合 には、スイッチ1002は活性であり、バイト・ラインA、Dは図10Bに示す ようにスワップされる。もちろん、本発明の実施例では、図1OA1図10Bに 関連してここで述べた以外の値を用いてスイッチ1002の活性、不活性を表す のは自由である。
図11に示した例を用いて更に詳細なスイッチ1002の実施例を説明する。
図11を参照すると、スイッチ1002は、示されているように構成された4つ のスイッチ1104を有している。これらのスイッチ1104は、たとえば、ト ランジスタでよい。また、インバータ1102が図のように構成されている。こ の特定の例では、クロスオーバー人力1004がヒー(たとえば、デジタル0で 表される)ならば、バイト・ライン1.2はスワップされない。しかし、クロス オーバー人力1004がノ\イ(たとえば、デジタル1で表される)ならば、/ くイト・ライン1.2はスワップされる。
本発明では、この図11に示した以外の態様でスイッチ1002を構成すること が可能であることを理解されたい。
本発明の実施例によればスワップ装置708においてスイッチ1002がどのよ うに用いられるかという例を、次に図12A及び図12Bを参照して説明する。
最初に図12Aを参照すると、2つのスイッチ(1002A、1002B)がス ワップ装置708において用いられている。それぞれのスイッチは2本のバイト ・ラインを制御するので、スワップ装置708は、(図9の場合と同様に)4バ イト(つまり32ビツト)の情報を制御する。
図12Aに示されているように、バイト・ラインAは、8最下位ビット(すなわ ち、ビット0〜7)を含み、バイト・ラインDは、8最上位ビット(すなわち、 ビット24〜31)を含む。これらの2本のバイト・ラインは、スワップ装置7 08内の同じスイッチ1002Aを共用する。換言すれば、クロスオーバー人力 1004がクロスオーバー信号を受信する場合には、これらの2本のバイト・ラ インがスワップされる。スワップ装置708を通過する残りの2本のバイト・ラ イン(バイト・ラインBSC)は、ビット8〜15、ビット16〜23をそれぞ れ有し、スイッチ1002Bを共用する。スワップ装置708の両側で、バイト ・ラインA−Dは、それぞれビッグ・エンディアン又はリトル・エンディアン型 のどちらかのバイト順序を有する何らかの要素(図示せず)と通信する。図12 Aの例では、非クロスオーバー信号(この例ではO)が、クロスオーバー人力1 004によって受信される様子が示されている。結果的に、バイト・ラインはス ワップされない。図12Aは、よって、スワップ装置708の両側の要素が同じ バイト順序を有している状況を表す。すなわち、スワップ装置708のバイト・ ラインが通信する両方の要素がビッグ・エンディアン又はリトル・エンディアン 型のどちらかのバイト順序を有していることになる。
これとは逆に図12Bには、スワップ装置708の両側の要素が同じバイト順序 を有していない状況が示されている。これは、クロスオーバー人力召号(この例 では1)をクロスオーバー人力1004が受信している事実によって示されてい る。よって、スイッチ1002A、1002Bは活性であり、示されているよう に、バイト・ラインをスワップする。具体的には、バイト・ラインA、Dがスワ ップされ、バイト・ラインBSCがスワップされる。これにより、既に図9との 関係で説明した効果が生じる。
クロスオーバー人力信号は、実際には、ソース要素(情報を送信する側の要素) がターゲット要素とは異なるバイト順序を有する旨の指示として作用することに 注意すべきである。
本発明の実施例によれば、図12A1図12Bのスワップ装置708を含む2つ のスイッチ1002A、1002Bの組み合わせは、カリフォルニア州すンタク ララのクォリティ・セミコンダクタ社製造による[クイック・スイッチ」 (部 品番号74QST3383)と呼ばれる製品を用いて実現できる。しかし、本発 明では、これとは別のたとえばASIC技術を用いてスワップ装置708を実現 することも可能であることを理解すべきである。これらの他のスキームでは、ス イッチを利用する場合も利用しないばあいもある(すなわち、マルチプレクサを 用いる)。
本発明では、クロスオーバー人力信号は、種々の刺激の結果として発生すること ができて、バイト・ラインがどの場合にスワップされるべきなのかをスワップ装 置708に知らせる。1つの例は、プロセッサが、クロスオーバー人力1004 が応答する何らかのアドレス・ポートに書き込みをすることである。スワップ装 fit 708が活性化されるべきかどうかは、ユーザによっであるいは活性/ 不活性の設定を何らかの不揮発性メモリに記憶することによって、相互作用的に 設定される。この方法で、スワップ装置708は、コンピュータ・システムの要 素のバイト順序状態に基づいて適切に設定できる。
図9、図12A1図12Bではスワップ装置708が4バイトの情報が扱われて いたが、これは単に例示であり、本発明では任意の数のバイトをスワップする実 施例が可能であることを理解されたい。また、本発明の実施例では、スワップ装 置の両側通信するように置かれた要素が常に異なるバイト順序を有する場合には 、当該スワップ装置708は恒久的に活性である場合もある。
本発明による動作方法の実施例を、次に図13を参照して説明する。図13を参 照すると、第1のステップはコンピュータ・システム内の第1の要素が用いるバ イト順序を判断することである。これは、ブロック13o2に示されている。
次に、(第1の要素と通信する)第2の要素が用いるバイト順序に関する判断が なされる。これはブロック13o4に示されている。
次には、第1の要素が用いるバイト順序が第2の要素が用いるバイト順序と同じ かどうかに関する判断がなされる。これは決定ブロック13o6によって示され る。これらが同じ場合には、更なる作用は必要なく、2つの要素の間の通信は直 ちに開始され得る。これは、決定ブロック1306と接続されているブロック1 310で示されている。
しかし、第1の要素と第2の要素で用いているバイト順序が同じではない場合に は、スワップ装置708が付勢されなければならない。これはブロック1308 に示されている。いったん付勢されると、第1及び第2の要素の間の通信が開始 するが、これはブロック131oに示されている。
■、動作の図解 本発明の実施例の有効な動作を示す例が、図14を参照して説明される。図14 を参照すると、ビッグ・エンディアン型プロセッサ14o2とリトル・エンディ アン型メモリ1406を有するコンピュータ・システムを示す例が与えられてい る。この例では、情報はビッグ・エンディアン型プロセッサ14o2とリトル・ エンディアン型メモリ1406との間の4バイトのバス141oを介して送信さ れる。スワップ装置708は(2つの要素のバイト順序が異なるから)活性状態 として示されており、ビッグ・エンディアン型プロセッサ14o2とリトル・エ ンディアン型メモリ1406との間のバス141oに接続されている。
この特定の例では、レジスタ14o8は、1バイトの情報(情報(A))を含む 。バス・インターフェース14o4を介してバス141o上に送信される場合に は、情報(A)は図のようにバイト0において送信される。スワップ装置7゜8 が介在しない場合には、情報(A)は、発明の背景において図4に関連して説明 したように、リトル・エンディアン型メモリ1406 (これは情報を受信する ようにイネーブルされていない)のバイト3において受信される。これは、本発 明の実施例で(及び、それと共に用いられる環境で)用いられることが想定され ているコンピュータ・システムのメモリ管理スキームと共に用いられる標準的な プロトコルの結果である。このプロトコルのために、情報が送信側の要素(この 場合はビッグ・エンディアン型プロセッサ1402)のバイト0の位置で送信さ れる場合には、受信側要素(この場合はリトル・エンディアン型メモリ1406 )のバイトOがイネーブルされる。
従って、本発明では、活性なスワップ装置708が、情報(A)を適切な位置に 送られるようにスワップする。具体的には、情報(A)は、イネーブルされるリ トル・エンディアン型メモリのバイト・アドレス(すなわち、バイトO)によっ て受信される。
図15は、前の図で説明した場合の1バイトではなく半ワード(つまり、2バイ ト)の情報が送信される場合の例を示している。図15を参照すると、情報(A )及び情報(B)がレジスタ1408の内部に存在するとされている。この情報 は、バス・インターフェース1404を介してバス1410上に送信され、情報 (A)はバイト0において、情報(B)はバイト1において送信される。上述の メモリ管理スキームを考慮すると、この情報をリトル・エンディアン型メモリ1 406に書き込むことによって、リトル・エンディアン型メモリ1406のバイ ト0及び1がイネーブルされる。図15に示されるように、スワップ装置708 により、情報は、リトル・エンディアン型メモリ1406のイネーブルされた部 分によって受信されることが可能になる。
本発明は、図14及び図15の例には限定されない。たとえば、任意の数のバイ トのバス幅が考慮できるし、上述の概念は、送信されるバイト数やターゲット要 素のどのバイト位置(バイト・アドレス)に送信されるかには関係なく適用可能 である。また、この例では、ビッグ・エンディアン型のマスク要素(ここでは、 プロセッサ)がリトル・エンディアン型のスレーブ要素(ここでは、メモリ)と 通信する様子が示されているが、他の組み合わせ、たとえば、スレーブとスレー ブ、マスクとマスタなどの組み合わせも想定され得る。
本発明は、また、発明の詳細な説明において図5及び図6を参照して述べた媒体 からの情報の受信に関する問題も解決する。この例を、次に図16を参照して述 べる。
図16を参照すると、媒体1602 (これは、フロッピィ・ディスク、テープ 、更にはLANなどの任意のタイプの移動可能な媒体でよい)が、既に図5及び 図6に関して説明したのと同様にビッグ・エンディアン型要素から4バイトの情 報を受信する様子が示されている。よって、ビッグ・エンディアン型要素のバイ ト0から送信される情報(D)が、媒体1602の位置0に示されている。情報 (C)は位置1にと順次水されている。
情報がリトル・エンディアン型メモリ1406によって媒体1602がら(図示 してないが何らかのI10装置を介して)受信された場合には、バイト位置は整 合される。換言すれば、媒体1602の位置0にある情報はどれでもリトル・エ ンディアン型メモリ1406のバイト0に置かれ、位置1のものはバイト1に置 かれ、等である。これは、上述の産業界での標準的プロトコルに起因する。
情報が、上述のようにリトル・エンディアン型メモリ1406内に置かれた場合 には、その情報のバイト順序は、図6に示したリトル・エンディアン型メモリ6 04で示したものと同じになる。図6に関連して説明したように、リトル・エン ディアン型メモリ604内の情報は、そのままでは、ビッグ・エンディアン型の プロセッサ606が用いることができない。使用するためには、この情報は、当 初に発生したフォーマット(これは、図5のビッグ・エンディアン型プロセッサ 502とビッグ・エンディアン型メモリ506が示すフォーマット)でなければ ならない。
再び図16を参照すると、スワップ装置708によって、本発明の実施例によっ て構想されるように、ビッグ・エンディアン型プロセッサ1402がリトル・エ ンディアン型メモリ1406からの情報を受信し使用することが可能になる。具 体的には、スワップ装置708は、情報をスワップして、たとえば、(リトル・ エンディアン型メモリ1406からバイト0の位置で送信される)情報(D)が 、図6の例で生じたようにビッグ・エンディアン型プロセッサ1402のバイト 3ではなくバイトOで受信される。よって、スワップ装置708の結果としてビ ッグ・エンディアン型プロセッサ1402によって受信される情報は、当該情報 が図5のビッグ・エンディアン型プロセッサ502によって当初に送信されたフ ォーマットにある。このようにして、情報がメモリ内にある場合にはスワップす る必要がなく、よって、時間を著しく節約できる。
本発明の実施例では、I10要素(図示せず)を用いることで媒体1602とリ トル・エンディアン型メモリ1406との間の情報送信が容易にされている。
一般的に、上述のように本発明の実施例での使用が想定されているI10要素は 、情報が1バイト幅の態様(a byte−wide fashon)でI10 要素へ、またI10要素から送信されることを考えている。情報が並列法で送信 される(すなわち、複数バイトの幅を用いて送信される)場合には、情報は、I 10要素へ、またI10要素から受信するのに先立ってスワップされる必要があ る。
本発明の実施例では、並列法を用いる場合には、データをI10要素に書き込む (又はそこから読み出す)前にスワップする装置ドライバを用いることで行う。
そのような装置ドライバの設計及び構成は、当業者に知られている。また、付加 的なスワップ装置708を、代わりに、I10要素とコンピュータ・システムの その他の要素との間に置(ことも可能である。
■、動的なスワップ装置の具体例 上述のように、本発明の種々の実施例で構想されるコンピュータ・システムで用 いられるパイエンディアン型プロセッサのバイト順序モードは、動的に変更する ことが可能であり、スワップ装置708によって、オペレーティング・システム のバイト順序と異なるバイト順序を有するソフトウェアのルーチンも使用できる 。そのスキームの例が図17に示されている。
図17を参照すると、パイエンディアン型プロセッサ1708は第1のバイト順 序モード(ビッグ・エンディアン又はリトル・エンディアン型のどちらか)にあ り、第1のバイト順序を有するオペレーティング・システム(図示せず)を用い て動作するように構成されているとする。共に第1のバイト順序を有するメモリ 1702内のコンピュータ・プログラム1704が、結果的にアクセスされ、パ イエンディアン型プロセッサ1708によって、スワップ装置708を使用する 必要なく(すなわち、スワップ装ff1708は不活性であり、バイト・ライン はスワップされないで)ランされる。
コンピュータ・システム1704内にソフトウェアのルーチン1706への呼び 出しがある場合には(ソフトウェアのルーチン1706は、第2のバイト順序を 有するプロセッサを用いて当初発生されている)、2つのことが起こる。第1に 、パイエンディアン型プロセッサ17o8は、そのバイト順序モードを第2のバ イト順序モードにスイッチし、このソフトウェアのルーチン1706に対応する 。第2に、パイエンディアン型プロセッサ17o8は今ではメモリ17o2とは 異なるバイト順序を用いているので、スワップ装置708が活性になる(すなわ ち、活性モードに再設定される)。結果的に、スワップ装置708内のバイト・ ラインは、上述したように情報のバイトをスワップする。
いったんパイエンディアン型プロセッサ1708とスワップ装置708とがソフ トウェアのルーチン1706に対応するように再設定されると、ソフトウェアの ルーチン1706は、次に、パイエンディアン型プロセッサ1708によって受 信される。ルーチンの実行が完了した際には(または、ソフトウェアのルーチン 1706自身が第1のバイト順序を有する別のソフトウェアのルーチンを呼び出 した場合には)、パイエンディアン型プロセッサ17o8とスワップ装置7゜8 とは、その当初のモードに戻る。
本発明の実施例によれば、コンピュータ・システム1フ02内にソフトウェアの ルーチン1706への呼び出しと関連してパイエンディアン型プロセッサ170 8とスワップ装置708とを別の状態に設定するようにとの指示があることが想 定される。しかし、本発明は、また、状態を他の方法で設定できる実施例も含む 。
図18は、本発明の動作方法の実施例を示している。図18を参照すると、第1 のステップでは、コンピュータ・プログラム1704が、第1のバイト順序モー ドで動いているパイエンディアン型プロセッサ1708において実行される。
これは、ブロック1802に示されている。コンピュータ・プログラム1704 は、次に、第2のバイト順序モードで実行されるように構成されたソフトウェア のルーチン1706を呼び出す。これは、ブロック1804によって示されてい る。
次のステップは、パイエンディアン型プロセッサ1708とスワップ装置708 とを、第2のバイト順序モードで動くように再構成することである。すなわち、 パイエンディアン型プロセッサ1708のバイト順序はスイッチされ、スワップ 装置708は活性化される。これは、ブロック1806に示されている。いった んこれが行われれば、ブロック1808によって示されているように、ソフトウ ェアのルーチン1706がロードされ、パイエンディアン型プロセッサ1708 において実行される。
図17、図18によって示された本発明の実施例では、ソフトウェアのルーチン 1706は別のバイト順序を有しているものの、コンピュータ・プログラム17 04とメモリ1702とが同じバイト順序を有すると想定されているが、本発明 の実施例では、コンピュータ・プログラム1704がメモリ1702と異なるバ イト順序を有し、ソフトウェアのルーチン1706とメモリ1702とが同じバ イト順序を有するとすることもできる。その場合には、スワップ装置708は、 コンピュータ・プログラム1704の実行の間には活性であり、ソフトウェア1 706の実行の間には不活性である。
本発明は、スワップ装置708の活性/不活性状態を動的に変更することが必要 あるいは効果的であるような池の状況や例における使用も想定していることを理 解されたい。
本発明の実施例の種々の要素はハードウェア、ソフトウェア、その組み合わせに おいて実現可能であることは強調されるべきである。そのような実施例では、種 々の要素及びステソブカい一ドウエア及び(又は)ソフトウェアにおいて実現さ れ、本発明の機能を実行する。現在使用可能である又は将来開発され得るコンピ ュータ・ソフトウェアの言語及び(又は)ハードウェア要素は、本発明のそのよ うな実施例において用いられ得る。
本発明は上述の実施例に限定されず、用いた例は単に説明のためのものであるこ とを理解すべきである。本発明の範囲は、従って、以上の詳細な説明と図面とに よって定義される請求の範囲に従って解釈されるべきである。
〜 つ ビッグ・エンディアン型フォーマット(媒体上)FIG、7A FIG、 7B Fi(1,9 f:”i(1,l0A f:iQ、 IOB Fig、 12A Fil、 73 Fill、 14 ビッグ・エンディアン型フォーマット(媒体上)手続補正書 平成 6年 9月とiv

Claims (1)

  1. 【特許請求の範囲】 1.コンピュータ・システム内のバイトから成る情報の送信を容易にする装置に おいて、 第1のバイト順序を有し、前記コンピュータ・システムに情報を提供することが できる第1の要素と、 前記第1の要素から前記情報を受信することができる第2の要素と、前記第1の 要素と前記第2の要素との間に通信可能に配置され、前記第2の要素のバイト順 序が第2のバイト順序である場合には、前記第2の要素による受信に先立って前 記情報の前記バイトをスワップするスワップ手段と、を備えていることを特徴と する装置。 2.請求の範囲1記載の装置において、前記第1の要素は第1のバイト順序モー ドを用いて当初構成されたバイエンディアン・プロセッサであり、 該バイエンディアン・プロセッサが、前記第1のバイト順序を有する第1のコン ピュータ・プログラムをランしていることを特徴とする装置。 3.請求の範囲2記載の装置において、第2のバイト順序を有する第2のコンピ ュータ・プログラムをランするという前記第1のコンピュータ・プログラムによ る要求を受信した際には、前記バイエンディアン・プロセッサは第2のバイト順 序を用いて再構成され、前記スワップ手段は、前記バイエンディアン・プロセッ サが前記第1のコンピュータ・プログラムをランしている場合に情報のバイトが スワップされる位置で情報のバイトのスワップを停止し、前記スワップ手段は、 前記バイエンディアン・プロセッサが前記第1のコンピュータ・プログラムをラ ンしている場合に情報のバイトがスワップされない位置で情報のバイトをスワッ プすることを特徴とする装置。 4.請求の範囲1記載の装置において、前記スワップ手段は2バイトのラインが その内部を通過する少なくとも1つのスイッチ手段を備えており、 前記少なくとも1つのスイッチ手段は、前記スイッチが活性化するように指示す るクロスオーバー入力信号を受信した際に、2バイトのラインを接続的にスワッ プすることを特徴とする装置。 5.請求の範囲1記載の装置において、前記スワップ手段は、前記第1の要素又 は前記第2の要素の統合部分であることを特徴とする装置。 6.バイトから成りバイト順序を有するソース要素によって送信される、コンピ ュータ・システム内の情報の送信を容易にする装置において、第1のバイト順序 を有し、前記情報を受信するターゲット要素と、前記ターゲット要素と通信し、 前記ソース要素の前記バイト順序に関する指示を受信するスワップ手段と、を備 えており、前記ソース要素が前記ターゲット要素の前記第1のバイト順序と異な るバイト順序を有するとの指示を受信した際には、前記スワップ手段は、前記情 報が前記ターゲット要素によって受信されるのに先立って前記情報の前記バイト がスワップされる活性モードに設定され、 前記ソース要素が前記第1のバイト順序を有するとの指示を受信した際には、前 記スワップ手段は、前記情報が前記ターゲット要素によって受信されるのに先立 って前記情報の前記バイトがスワップされない不活性モードに設定されることを 特徴とする装置。 7.請求の範囲6記載の装置において、前記ターゲット要素がメモリ装置である ことを特徴とする装置。 8.請求の範囲6記載の装置において、前記ソース要素は第1のバイト順序モー ドを用いて当初構成されたパイエンディアン・プロセッサであり、 該バイエンディアン・プロセッサが、前記第1のバイト順序を有する第1のコン ピュータ・プログラムをランしていることを特徴とする装置。 9.請求の範囲8記載の装置において、第2のバイト順序を有する第2のコンピ ュータ・プログラムをランするという前記第1のコンピュータ・プログラムによ る要求を受信した際には、前記バイエンディアン・プロセッサは第2のバイト順 序を用いて再構成され、前記スワップ手段は、不活性モードに設定されている場 合には、活性モードに再設定され、また、前記スワップ手段は、活性モードに設 定されている場合には、不活性モードに再設定されることを特徴とする装置。 10.バイトから成りバイト順序を有するコンピュータ・プログラムを利用する コンピュータ・システムにおいて、 第1のバイト順序モード又は第2のバイト順序モードのどちらかで動作し、前記 コンピュータ・プログラムの前記バイト順序モードを用いて動作するように構成 されているプロセッサ手段と、 バイト順序を有しており、前記コンピュータ・プログラムを記憶し、前記プロセ ッサ手段が前記コンピュータ・プログラムにアクセスすることを可能にする要素 と、 前記プロセッサ手段と前記要素との間に通信可能に配置され、前記プロセッサ手 段の前記バイト順序モードの指示を受信し、前記要素の前記バイト順序が前記プ ロセッサ手段の前記バイト順序と異なる場合には、前記コンピュータ・プログラ ムの前記バイトをスワップするスワップ手段と、を備えていることを特徴とする コンピュータ・システム。 11.請求の範囲10記載の装置において、前記スワップ手段は2バイトのライ ンがその内部を通過する少なくとも1つのスイッチ手段を備えており、 前記少なくとも1つのスイッチ手段は、前記スイッチが活性化するように指示す るクロスオーバー入力信号を受信した際に、2バイトのラインを接続的にスワッ プすることを特徴とする装置。 12.請求の範囲10記載の装置において、前記要素がメモリ装置であることを 特徴とする装置。 13.コンピュータ・システム内で、それぞれがバイト順序を有している第1の 要素と第2の要素との間の情報の送信を容易にする方法において、(1)前記第 1の要素の前記バイト順序が、前記第2の要素の前記バイト順序と同じかどうか を判定するステップと、(2)前記第1の要素の前記バイト順序が前記第2の要 素の前記バイト順序と同じではないと前記ステップ(1)で判定された場合に、 バイト・スワップ装置を付勢するステップと、 (3)前記第1の要素の前記バイト順序が前記第2の要素の前記バイト順序と同 じであると判定された場合に、前記バイト・スワップ装置を消勢するステップと 、 を有することを特徴とする方法。 14.請求の範囲13記載の方法において、前記第1の要素の前記バイト順序に 関する情報を受信するステップと、前記第2の要素の前記バイト順序に関する情 報を受信するステップと、を、前記ステップ(1)に先立って、有することを特 徴とする方法。
JP6515373A 1992-12-21 1993-12-17 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法 Pending JPH07505972A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US99440592A 1992-12-21 1992-12-21
US994,405 1992-12-21
PCT/US1993/012416 WO1994015269A2 (en) 1992-12-21 1993-12-17 Apparatus, system and method for facilitating communication between components having different byte orderings

Publications (1)

Publication Number Publication Date
JPH07505972A true JPH07505972A (ja) 1995-06-29

Family

ID=25540637

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6515373A Pending JPH07505972A (ja) 1992-12-21 1993-12-17 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法

Country Status (3)

Country Link
EP (1) EP0629303A1 (ja)
JP (1) JPH07505972A (ja)
WO (1) WO1994015269A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627975A (en) * 1994-08-02 1997-05-06 Motorola, Inc. Interbus buffer for use between a pseudo little endian bus and a true little endian bus
US5687337A (en) * 1995-02-24 1997-11-11 International Business Machines Corporation Mixed-endian computer system
US5928349A (en) * 1995-02-24 1999-07-27 International Business Machines Corporation Mixed-endian computing environment for a conventional bi-endian computer system
US5778406A (en) * 1995-06-30 1998-07-07 Thomson Consumer Electronics, Inc. Apparatus for delivering CPU independent data for little and big endian machines
US5819117A (en) * 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
WO1997044739A1 (en) * 1996-05-23 1997-11-27 Advanced Micro Devices, Inc. Apparatus for converting data between different endian formats and system and method employing same
US6351750B1 (en) * 1998-10-16 2002-02-26 Softbook Press, Inc. Dynamic conversion of byte ordering for use on different processor platforms
FR2795573B1 (fr) * 1999-06-25 2001-11-30 Inst Nat Rech Inf Automat Dispositif de gestion d'echanges de donnees entre materiels informatiques
EP2177987A1 (en) * 2008-10-17 2010-04-21 Alcatel Lucent A method for handling different types of data, corresponding device, storage means, and software program therefore
US10025555B2 (en) 2016-08-31 2018-07-17 Mettler-Toledo, LLC Byte order detection for control system data exchange

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0282969A3 (en) * 1987-03-18 1989-03-15 Hitachi, Ltd. Computer system having byte sequence conversion mechanism
JP2633331B2 (ja) * 1988-10-24 1997-07-23 三菱電機株式会社 マイクロプロセッサ
EP0470570B1 (en) * 1990-08-09 1997-01-29 Silicon Graphics, Inc. Method and apparatus for byte order switching in a computer

Also Published As

Publication number Publication date
WO1994015269A2 (en) 1994-07-07
EP0629303A1 (en) 1994-12-21
WO1994015269A3 (en) 1994-11-24

Similar Documents

Publication Publication Date Title
JP3732197B2 (ja) 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置
FR2752466A1 (fr) Dispositif processeur integre de signaux numeriques
JP5709775B2 (ja) 選択演算を実行するプロセッサ
JPH10232788A (ja) 信号処理装置及びソフトウェア
JP2006079652A (ja) 多重命令セットによるデータ処理
KR100381076B1 (ko) 인터버스버퍼
US4338663A (en) Calling instructions for a data processing system
JP3940435B2 (ja) ダイレクト・メモリ・アクセス(dma)バイト・スワッピングを実行する方法および装置
JPH07505972A (ja) 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法
JP3319764B2 (ja) ソフトウェアシステム間でソフトウェア機能を同期化させるための方法および装置
JP3110230B2 (ja) データアクセス命令解読方法及び装置
FR2752629A1 (fr) Traitement de donnees multiples a une seule instruction avec operations scalaires/vectorielles combinees
JP3431941B2 (ja) データ処理システムにおける命令の実行順序を決定する方法および装置
JPH0650863B2 (ja) 直接データ転送のためのインターフエース
US7251248B2 (en) Connection device
JP2008512754A (ja) 複数のエンディアン・モード・バス・マッチングのための装置及び方法
CN114025013A (zh) 一种信息处理方法、装置及设备
JP2004355432A (ja) エンディアン変換回路
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
KR20080112165A (ko) 기입 동작들을 브로드캐스트하기 위한 시스템, 방법 및 컴퓨터 판독가능 기록 매체
KR100395311B1 (ko) 프로세스 제어 방법
JP2848297B2 (ja) マルチプロセッサ割り込み制御システム
JP2531080B2 (ja) バスアダプタ切り換え方式
JP2821176B2 (ja) 情報処理装置
JPS6043784A (ja) 2重化プロセツサシステム