JPH08314733A - 2つのエンディアンをサポートするコンピュータシステム及び方法 - Google Patents
2つのエンディアンをサポートするコンピュータシステム及び方法Info
- Publication number
- JPH08314733A JPH08314733A JP8026324A JP2632496A JPH08314733A JP H08314733 A JPH08314733 A JP H08314733A JP 8026324 A JP8026324 A JP 8026324A JP 2632496 A JP2632496 A JP 2632496A JP H08314733 A JPH08314733 A JP H08314733A
- Authority
- JP
- Japan
- Prior art keywords
- endian
- data
- task
- computer system
- bit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
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)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】 1つのコンピュータシステムで異なる情報形
式を有するタスクが共存し且つタスク毎に実行できる、
混合エンディアンコンピュータシステムの提供。 【解決手段】従来の両エンディアンコンピュータシステ
ムの機能を高め、前記コンピュータシステムにそのエン
ディアンモードを動的に変更することを可能にする混合
エンディアン回路を備えるようにする。混合エンディア
ンコンピュータシステムは、必要なら、タスク毎にエン
ディアンモードを変更できる。混合エンディアン機構
は、タスクが大エンディアンフォーマットのデータを期
待するか小エンディアンフォーマットのデータを期待す
るかに関係なく、実行中のタスクが期待する形式で自動
的にデータをフォーマット化する。混合エンディアン回
路はまた大エンディアン命令及び小エンディアン命令が
同じコンピュータシステムで実行できるようにそれらを
フォーマット化する。
式を有するタスクが共存し且つタスク毎に実行できる、
混合エンディアンコンピュータシステムの提供。 【解決手段】従来の両エンディアンコンピュータシステ
ムの機能を高め、前記コンピュータシステムにそのエン
ディアンモードを動的に変更することを可能にする混合
エンディアン回路を備えるようにする。混合エンディア
ンコンピュータシステムは、必要なら、タスク毎にエン
ディアンモードを変更できる。混合エンディアン機構
は、タスクが大エンディアンフォーマットのデータを期
待するか小エンディアンフォーマットのデータを期待す
るかに関係なく、実行中のタスクが期待する形式で自動
的にデータをフォーマット化する。混合エンディアン回
路はまた大エンディアン命令及び小エンディアン命令が
同じコンピュータシステムで実行できるようにそれらを
フォーマット化する。
Description
【0001】
【発明の属する技術分野】本発明は一般にデータ処理シ
ステムに、より詳しくは、エンディアン指向コンピュー
タシステムに関する。
ステムに、より詳しくは、エンディアン指向コンピュー
タシステムに関する。
【0002】
【従来の技術】1940年代後期に製造された最も初期のデ
ィジタルコンピュータは簡単な設計及び構成素子を有し
た。長年にわたる技術の多くの進歩にもかかわらず、大
抵の今日のコンピュータは情報の記憶及び処理について
依然として同じ基本的な素子を用いて同じ基本的なタス
クを実行する。
ィジタルコンピュータは簡単な設計及び構成素子を有し
た。長年にわたる技術の多くの進歩にもかかわらず、大
抵の今日のコンピュータは情報の記憶及び処理について
依然として同じ基本的な素子を用いて同じ基本的なタス
クを実行する。
【0003】これらの基本的な素子のうちの2つはコン
ピュータメモリ及びプロセッサである。コンピュータメ
モリはそのコンピュータで用いられる情報を記憶し、そ
して多くの点で人間の記憶と同じように働く。例えば、
人々が異なる話題及び事象に関する着想を記憶できるの
と全く同じように、コンピュータシステムのメモリは文
字、数字、絵及びその他の形式の情報を記憶するのに使
用できる。
ピュータメモリ及びプロセッサである。コンピュータメ
モリはそのコンピュータで用いられる情報を記憶し、そ
して多くの点で人間の記憶と同じように働く。例えば、
人々が異なる話題及び事象に関する着想を記憶できるの
と全く同じように、コンピュータシステムのメモリは文
字、数字、絵及びその他の形式の情報を記憶するのに使
用できる。
【0004】コンピュータプロセッサはコンピュータシ
ステムの能動素子である。プロセッサはコンピュータシ
ステムのメモリに記憶された情報を操作し、コンピュー
タシステムに割当てられたタスクを実行する。コンピュ
ータシステムにより処理されるタスクは時にはジョブ、
プログラム又はプロセスとも呼ばれる。
ステムの能動素子である。プロセッサはコンピュータシ
ステムのメモリに記憶された情報を操作し、コンピュー
タシステムに割当てられたタスクを実行する。コンピュ
ータシステムにより処理されるタスクは時にはジョブ、
プログラム又はプロセスとも呼ばれる。
【0005】ジョブを実行するコンピュータプロセッサ
は、コンピュータメモリに記憶された情報を、多くの点
で、人間が本のページに印刷された文字を読んで処理す
るのと同じように、読取って処理する。それゆえ、ペー
ジ上の文字の配列がそれを読む人にとって重要であるの
と全く同じように、コンピュータシステムのメモリでの
情報の配列はコンピュータシステムにとって重要であ
る。例えば、英語の文字は左から右に書かれ、そしてヘ
ブライ語の文字は右から左に書かれる。英語のみを読む
人々は左から右に書かれる英語の文字を理解でき、そし
てヘブライ語のみを読む人々は右から左に書かれるヘブ
ライ語の文字を理解できる。英語の文字がページ上で左
から右に書かれることは、文字を、右から左に配列する
代わりに、このように配列する方がよいことを意味しな
い。英語の文字が左から右に書かれるのは、単に、文字
が左から右に書かれることを英語の読者が期待するから
である。この意味で、コンピュータシステムのメモリ内
の情報の配列はページ上の文字の配列と異なるものでは
ない。情報を配列する1つの方法は情報を配列する他の
任意の方法よりもすぐれてはいない。しかしながら、も
し情報がコンピュータシステムが期待する方法で配列さ
れなければ、コンピュータシステムは情報を理解できな
いという意味では、コンピュータシステムも人々と全く
同様である。
は、コンピュータメモリに記憶された情報を、多くの点
で、人間が本のページに印刷された文字を読んで処理す
るのと同じように、読取って処理する。それゆえ、ペー
ジ上の文字の配列がそれを読む人にとって重要であるの
と全く同じように、コンピュータシステムのメモリでの
情報の配列はコンピュータシステムにとって重要であ
る。例えば、英語の文字は左から右に書かれ、そしてヘ
ブライ語の文字は右から左に書かれる。英語のみを読む
人々は左から右に書かれる英語の文字を理解でき、そし
てヘブライ語のみを読む人々は右から左に書かれるヘブ
ライ語の文字を理解できる。英語の文字がページ上で左
から右に書かれることは、文字を、右から左に配列する
代わりに、このように配列する方がよいことを意味しな
い。英語の文字が左から右に書かれるのは、単に、文字
が左から右に書かれることを英語の読者が期待するから
である。この意味で、コンピュータシステムのメモリ内
の情報の配列はページ上の文字の配列と異なるものでは
ない。情報を配列する1つの方法は情報を配列する他の
任意の方法よりもすぐれてはいない。しかしながら、も
し情報がコンピュータシステムが期待する方法で配列さ
れなければ、コンピュータシステムは情報を理解できな
いという意味では、コンピュータシステムも人々と全く
同様である。
【0006】もちろん、1つのコンピュータシステム情
報配列方法が他の任意の情報配列方法よりもすぐれては
いないことは、コンピュータシステムメモリ内での情報
の構成に対する異なるアプローチに "門戸を開放" して
いる。そして、コンピュータシステム設計者が少なくと
も幾つかの形式のコンピュータシステム情報を構成する
異なる方式をいつか開発するであろうことは驚くにあた
らない。少し以前に1つの前記変化がコンピュータシス
テム情報の2つの特定の形式 (浮動小数点情報及び2進
整数情報と呼ばれる) について起きた。現在、これらの
タイプのコンピュータシステム情報を配列する2つの共
通の方式がある。この2つの方式はJonathan Swiftの有
名な作品 "ガリヴァー旅行記" の相容れない部族の名を
とって "小エンディアン" 及び "大エンディアン" と呼
ばれた。用語は派手であるが、それらはコンピュータシ
ステムにとっては、これらのタイプの情報が特定のコン
ピュータシステムに配列される方法を示すこと以外は重
要ではない。
報配列方法が他の任意の情報配列方法よりもすぐれては
いないことは、コンピュータシステムメモリ内での情報
の構成に対する異なるアプローチに "門戸を開放" して
いる。そして、コンピュータシステム設計者が少なくと
も幾つかの形式のコンピュータシステム情報を構成する
異なる方式をいつか開発するであろうことは驚くにあた
らない。少し以前に1つの前記変化がコンピュータシス
テム情報の2つの特定の形式 (浮動小数点情報及び2進
整数情報と呼ばれる) について起きた。現在、これらの
タイプのコンピュータシステム情報を配列する2つの共
通の方式がある。この2つの方式はJonathan Swiftの有
名な作品 "ガリヴァー旅行記" の相容れない部族の名を
とって "小エンディアン" 及び "大エンディアン" と呼
ばれた。用語は派手であるが、それらはコンピュータシ
ステムにとっては、これらのタイプの情報が特定のコン
ピュータシステムに配列される方法を示すこと以外は重
要ではない。
【0007】1970年代の後期及び1980年代の初期に、イ
ンテル社が導入したプロセッサは、IBM PC及び互換性パ
ーソナルコンピュータの標準になった。これらのコンピ
ュータシステムはいわゆる小エンディアン配列を用い
た。これと同じ時機に、いわゆる大エンディアン配列を
用いる他のコンピュータシステムが設計された。これら
の後のコンピュータシステムはモトローラ社製のプロセ
ッサを備え、そしてアップル社製のコンピュータシステ
ムで用いられた。
ンテル社が導入したプロセッサは、IBM PC及び互換性パ
ーソナルコンピュータの標準になった。これらのコンピ
ュータシステムはいわゆる小エンディアン配列を用い
た。これと同じ時機に、いわゆる大エンディアン配列を
用いる他のコンピュータシステムが設計された。これら
の後のコンピュータシステムはモトローラ社製のプロセ
ッサを備え、そしてアップル社製のコンピュータシステ
ムで用いられた。
【0008】以前は、1つのコンピュータシステムに2
つ以上の方法で情報を配列することは利点とは考えられ
なかったので、コンピュータシステムがそれらのメモリ
内に(大エンディアン又は小エンディアン形式で) 情報
を構築した方法は重要な問題ではなかった。
つ以上の方法で情報を配列することは利点とは考えられ
なかったので、コンピュータシステムがそれらのメモリ
内に(大エンディアン又は小エンディアン形式で) 情報
を構築した方法は重要な問題ではなかった。
【0009】しかしながら、今日、業務及び家庭で用い
られるコンピュータの巨大な成長は異なるタイプのコン
ピュータシステムの間の互換性の深刻な必要性を生じて
いる。例えば、一般にIBM PC又は互換性のコンピュータ
を用いる人はアップル社のマッキントッシュコンピュー
タを用いる人とプログラム及び情報を共有できない。そ
の逆の場合もある。両タイプのコンピュータを用いる大
会社は従業員間の情報の分配に困難を生じている。小会
社は同じタイプのコンピュータを保有しない供給者又は
購買者と容易に情報を共有できないことがよくある。そ
の結果、コンピュータソフトウェア開発者は、異なるタ
イプのコンピュータシステムをサポートするために同じ
ソフトウェアの複数のバージョンを開発する余分な時間
及び資源の投入をしばしば強制される。要するに、1つ
のコンピュータシステムにおいて一定のタイプの情報を
2つ以上の方法で配列する能力の欠如は大体において生
産の遅延、生産性の下落、効率の低下及び資本経費の増
大をもたらす。
られるコンピュータの巨大な成長は異なるタイプのコン
ピュータシステムの間の互換性の深刻な必要性を生じて
いる。例えば、一般にIBM PC又は互換性のコンピュータ
を用いる人はアップル社のマッキントッシュコンピュー
タを用いる人とプログラム及び情報を共有できない。そ
の逆の場合もある。両タイプのコンピュータを用いる大
会社は従業員間の情報の分配に困難を生じている。小会
社は同じタイプのコンピュータを保有しない供給者又は
購買者と容易に情報を共有できないことがよくある。そ
の結果、コンピュータソフトウェア開発者は、異なるタ
イプのコンピュータシステムをサポートするために同じ
ソフトウェアの複数のバージョンを開発する余分な時間
及び資源の投入をしばしば強制される。要するに、1つ
のコンピュータシステムにおいて一定のタイプの情報を
2つ以上の方法で配列する能力の欠如は大体において生
産の遅延、生産性の下落、効率の低下及び資本経費の増
大をもたらす。
【0010】既存のコンピュータシステムのなかには、
限定的に過ぎないが、エンディアン問題の処理を試みる
ものがある。これらのコンピュータシステムは2エンデ
ィアン機能と呼びうるものを備える。本質的には、2エ
ンディアン機能は、同じコンピュータシステムが大エン
ディアンタスク又は小エンディアンタスクのどちらかを
実行できるが、両者を同時には実行できないことを意味
する。すなわち、コンピュータシステムは、先ず始動さ
れたとき、大エンディアンタスクを実行するか又は小エ
ンディアンタスクを実行するかを問われる (即ち、コン
ピュータシステムは大エンディアン又は小エンディアン
のどちらのモードでも実行できるようにしうる)。 既存
の2エンディアンコンピュータシステムのエンディアン
モードの切換え (即ち、大エンディアンモードから小エ
ンディアンモードに、又はその逆の切換え) は、コンピ
ュータの初期化サイクルで極めて早期に (即ち、始動に
極めて接近して) 実行する特別な目的のソフトウェアを
必要とする。その後、全てのタスクは指定されたエンデ
ィアンで実行する。そして、実際には、2エンディアン
コンピュータシステムは、それらがひとたびそれらのブ
ートプロセスを終了したならば、通常の "単エンディア
ン" コンピュータシステムに全く等しい。
限定的に過ぎないが、エンディアン問題の処理を試みる
ものがある。これらのコンピュータシステムは2エンデ
ィアン機能と呼びうるものを備える。本質的には、2エ
ンディアン機能は、同じコンピュータシステムが大エン
ディアンタスク又は小エンディアンタスクのどちらかを
実行できるが、両者を同時には実行できないことを意味
する。すなわち、コンピュータシステムは、先ず始動さ
れたとき、大エンディアンタスクを実行するか又は小エ
ンディアンタスクを実行するかを問われる (即ち、コン
ピュータシステムは大エンディアン又は小エンディアン
のどちらのモードでも実行できるようにしうる)。 既存
の2エンディアンコンピュータシステムのエンディアン
モードの切換え (即ち、大エンディアンモードから小エ
ンディアンモードに、又はその逆の切換え) は、コンピ
ュータの初期化サイクルで極めて早期に (即ち、始動に
極めて接近して) 実行する特別な目的のソフトウェアを
必要とする。その後、全てのタスクは指定されたエンデ
ィアンで実行する。そして、実際には、2エンディアン
コンピュータシステムは、それらがひとたびそれらのブ
ートプロセスを終了したならば、通常の "単エンディア
ン" コンピュータシステムに全く等しい。
【0011】これらの2エンディアンコンピュータシス
テムは、大エンディアン又は小エンディアンのタスクの
どちらも実行する能力を提供することにより、更に柔軟
性を与えるが、それらは、1つのコンピュータシステム
で、異なる情報形式期待 (即ち、大エンディアン対小エ
ンディアン) を有するタスクの共存及びタスク毎に可能
な実行の要求に関連した問題を解決するものではない。
テムは、大エンディアン又は小エンディアンのタスクの
どちらも実行する能力を提供することにより、更に柔軟
性を与えるが、それらは、1つのコンピュータシステム
で、異なる情報形式期待 (即ち、大エンディアン対小エ
ンディアン) を有するタスクの共存及びタスク毎に可能
な実行の要求に関連した問題を解決するものではない。
【0012】小エンディアン環境で生成されたプログラ
ム、及び大エンディアン環境で生成された他のプログラ
ムを同時に実行できるコンピュータシステムなしには、
今日の非互換性問題はコンピュータ産業を苦しめ続ける
であろう。
ム、及び大エンディアン環境で生成された他のプログラ
ムを同時に実行できるコンピュータシステムなしには、
今日の非互換性問題はコンピュータ産業を苦しめ続ける
であろう。
【0013】
【発明が解決しようとする課題】本発明の第1の目的
は、再初期化を必要とせずに異なるエンディアンのタス
クをサポートする高機能コンピュータシステムを提供す
ることにある。
は、再初期化を必要とせずに異なるエンディアンのタス
クをサポートする高機能コンピュータシステムを提供す
ることにある。
【0014】本発明の第2の目的は、1つのコンピュー
タシステムで、異なる (即ち、大エンディアン対小エン
ディアン) 情報形式期待を有するタスクが共存し且つタ
スク毎に実行できる高機能コンピュータシステムを提供
することにある。
タシステムで、異なる (即ち、大エンディアン対小エン
ディアン) 情報形式期待を有するタスクが共存し且つタ
スク毎に実行できる高機能コンピュータシステムを提供
することにある。
【0015】本発明の第3の目的は、1つのコンピュー
タシステムで、専用のハードウェアを必要とせずに、異
なる (即ち、大エンディアン対小エンディアン) 情報フ
ォーマット期待を有するタスクが共存し且つタスク毎に
実行しうる高機能コンピュータシステムを提供すること
にある。
タシステムで、専用のハードウェアを必要とせずに、異
なる (即ち、大エンディアン対小エンディアン) 情報フ
ォーマット期待を有するタスクが共存し且つタスク毎に
実行しうる高機能コンピュータシステムを提供すること
にある。
【0016】本発明の第4の目的は、大エンディアンデ
ータ又は小エンディアンデータを1つのコンピュータシ
ステムに記憶し、それを大エンディアンデータ又は小エ
ンディアンデータを期待するタスクがそれぞれアクセス
できる高機能コンピュータシステムを提供することにあ
る。
ータ又は小エンディアンデータを1つのコンピュータシ
ステムに記憶し、それを大エンディアンデータ又は小エ
ンディアンデータを期待するタスクがそれぞれアクセス
できる高機能コンピュータシステムを提供することにあ
る。
【0017】本発明の第5の目的は、入出力データの流
れが大エンディアンバイアスされるか又は小エンディア
ンバイアスされるように調整される高機能コンピュータ
システムを提供することにある。
れが大エンディアンバイアスされるか又は小エンディア
ンバイアスされるように調整される高機能コンピュータ
システムを提供することにある。
【0018】本発明の第6の目的は、1つのコンピュー
タシステムで、専用のハードウェアを必要とせずに、異
なる (即ち、大エンディアン対小エンディアン) 情報フ
ォーマット期待を有するタスクが共存し且つタスク毎に
実行し、そのうえ更に、代わりのエンディアンでフォー
マット化されたデータをアクセスしうる高機能コンピュ
ータシステムを提供することにある。
タシステムで、専用のハードウェアを必要とせずに、異
なる (即ち、大エンディアン対小エンディアン) 情報フ
ォーマット期待を有するタスクが共存し且つタスク毎に
実行し、そのうえ更に、代わりのエンディアンでフォー
マット化されたデータをアクセスしうる高機能コンピュ
ータシステムを提供することにある。
【0019】
【課題を解決するための手段】1つのコンピュータシス
テムで、異なる (即ち、大エンディアン対小エンディア
ン) 情報形式期待を有するタスクが共存し且つタスク毎
に実行できる新規の装置及び方法が本明細書で開示され
る。以降、このコンピュータシステムは混合エンディア
ンコンピュータシステムと呼ばれる。
テムで、異なる (即ち、大エンディアン対小エンディア
ン) 情報形式期待を有するタスクが共存し且つタスク毎
に実行できる新規の装置及び方法が本明細書で開示され
る。以降、このコンピュータシステムは混合エンディア
ンコンピュータシステムと呼ばれる。
【0020】本発明の混合エンディアンコンピュータシ
ステムは既存の2エンディアンコンピュータシステムの
高機能型である。混合エンディアン機構が付加され、既
存の2エンディアンプロセッサはそのエンディアンモー
ドを動的に変更できる。その機構は混合エンディアンコ
ンピュータシステムが必要ならタスク毎にエンディアン
モードを変更できる。混合エンディアン機構は、タスク
が大エンディアンフォーマットのデータを期待するか又
は小エンディアンフォーマットのデータを期待するかに
関係なく、自動的に、実行中のタスクにより期待された
形式にデータをフォーマット化する。また、混合エンデ
ィアン機構は、大エンディアン命令及び小エンディアン
命令を、同じコンピュータシステムで実行できるように
フォーマット化する。
ステムは既存の2エンディアンコンピュータシステムの
高機能型である。混合エンディアン機構が付加され、既
存の2エンディアンプロセッサはそのエンディアンモー
ドを動的に変更できる。その機構は混合エンディアンコ
ンピュータシステムが必要ならタスク毎にエンディアン
モードを変更できる。混合エンディアン機構は、タスク
が大エンディアンフォーマットのデータを期待するか又
は小エンディアンフォーマットのデータを期待するかに
関係なく、自動的に、実行中のタスクにより期待された
形式にデータをフォーマット化する。また、混合エンデ
ィアン機構は、大エンディアン命令及び小エンディアン
命令を、同じコンピュータシステムで実行できるように
フォーマット化する。
【0021】本発明の混合エンディアンコンピュータシ
ステムは、その入出力(I/O) データの流れが大エンディ
アンバイアスされるか又は小エンディアンバイアスされ
るように、このシステムを調整できる機構も備える。
ステムは、その入出力(I/O) データの流れが大エンディ
アンバイアスされるか又は小エンディアンバイアスされ
るように、このシステムを調整できる機構も備える。
【0022】
【発明の実施の形態】 [概説]前述のように、本発明は1つのコンピュータシ
ステムでの大エンディアン情報及び小エンディアン情報
の記憶及び使用に関する。より詳しくは、本発明は、異
なるエンディアン (即ち、大エンディアン又は小エンデ
ィアン) 期待を有するタスクが1つのコンピュータシス
テムに共存するのみならず、1つのコンピュータシステ
ムでタスク毎に実行することもできる、高機能コンピュ
ータシステムである。
ステムでの大エンディアン情報及び小エンディアン情報
の記憶及び使用に関する。より詳しくは、本発明は、異
なるエンディアン (即ち、大エンディアン又は小エンデ
ィアン) 期待を有するタスクが1つのコンピュータシス
テムに共存するのみならず、1つのコンピュータシステ
ムでタスク毎に実行することもできる、高機能コンピュ
ータシステムである。
【0023】本発明の利点及び長所を読者が完全に理解
できるように問題及び解法の基本的な概要をここに示
す。本発明の内部の働きの詳細な記述は本明細書の[詳
細な説明]の項に記載される。
できるように問題及び解法の基本的な概要をここに示
す。本発明の内部の働きの詳細な記述は本明細書の[詳
細な説明]の項に記載される。
【0024】図3に示すように、大エンディアンデータ
フォーマットは、最下位メモリアドレスに、ワードの最
上位バイトを、最下位プラス1のメモリアドレスに、ワ
ードの次の最上位バイトを記憶する必要がある。以下同
様である。例えば、50,000の10進値を表わす32ビット整
数は16進数の0000C350として昇順バイトで記憶される。
ここで、アドレスオフセット0は00であり、そしてオフ
セット3は50である。対照的に、小エンディアンフォー
マットは、最下位バイトの記憶が最下位メモリアドレス
に、次の最下位バイトは最下位プラス1のメモリアドレ
スに記憶されることを必要とする。以下同様である。例
えば、50,000の10進値を表わす32ビット整数は16進数の
50C30000として昇順バイトで記憶される。ここで、アド
レスオフセット0は50であり、そしてオフセット3は00で
ある。
フォーマットは、最下位メモリアドレスに、ワードの最
上位バイトを、最下位プラス1のメモリアドレスに、ワ
ードの次の最上位バイトを記憶する必要がある。以下同
様である。例えば、50,000の10進値を表わす32ビット整
数は16進数の0000C350として昇順バイトで記憶される。
ここで、アドレスオフセット0は00であり、そしてオフ
セット3は50である。対照的に、小エンディアンフォー
マットは、最下位バイトの記憶が最下位メモリアドレス
に、次の最下位バイトは最下位プラス1のメモリアドレ
スに記憶されることを必要とする。以下同様である。例
えば、50,000の10進値を表わす32ビット整数は16進数の
50C30000として昇順バイトで記憶される。ここで、アド
レスオフセット0は50であり、そしてオフセット3は00で
ある。
【0025】エンディアン問題のために、小エンディア
ンマシン上で走行するように記述されたコンピュータプ
ログラムは一般に大エンディアンマシン上では走行しな
い。その逆も同じである。例えば、最初に1つのエンデ
ィアンのためにコンパイルされ、そして他のエンディア
ンのためにコンパイルし直されたときは、たとえ完全に
標準化された言語が用いられるときでも、無変更で動作
するプログラムの設計は現在は困難である。これは、言
語標準がデータに関してエンディアンを指定せず、そし
てプログラマはコンパイルするコンピュータシステムの
基礎をなすエンディアンを常に用いるためである。プロ
グラマはしばしば所与の記憶片を代わりの定義で重ね書
きするから、下記の表(以降、表中に現れる英文字の列
はコマンドなどを表す記号であり、翻訳できない)のC
コードのセグメントが示すように、基礎をなすエンディ
アンが異なるマシンのために変化するとき、記憶を再定
義するソースコードは同じ結果を生ずるように変更せね
ばならないことがある:
ンマシン上で走行するように記述されたコンピュータプ
ログラムは一般に大エンディアンマシン上では走行しな
い。その逆も同じである。例えば、最初に1つのエンデ
ィアンのためにコンパイルされ、そして他のエンディア
ンのためにコンパイルし直されたときは、たとえ完全に
標準化された言語が用いられるときでも、無変更で動作
するプログラムの設計は現在は困難である。これは、言
語標準がデータに関してエンディアンを指定せず、そし
てプログラマはコンパイルするコンピュータシステムの
基礎をなすエンディアンを常に用いるためである。プロ
グラマはしばしば所与の記憶片を代わりの定義で重ね書
きするから、下記の表(以降、表中に現れる英文字の列
はコマンドなどを表す記号であり、翻訳できない)のC
コードのセグメントが示すように、基礎をなすエンディ
アンが異なるマシンのために変化するとき、記憶を再定
義するソースコードは同じ結果を生ずるように変更せね
ばならないことがある:
【表1】
【0026】小エンディアンコンピュータでは、情報は
メモリに16進数として下記のように記憶される:
メモリに16進数として下記のように記憶される:
【表2】
【0027】大エンディアンコンピュータでは、情報は
メモリに16進数として下記のように記憶される:
メモリに16進数として下記のように記憶される:
【表3】
【0028】ここで下記について考慮する:
【表4】 INT64 timestamp_whole; typedef struct { INT32 upper, /* 秒単位の時間 */ INT32 lower, /* 下位32ビットの時間(秒の端数) */ } timestamp_split; timestamp_split X = *(&(timestamp_split) timestamp_whole); timestamp New; New = X;
【0029】データ構造 "timestamp_split"は大エンデ
ィアンである。なぜなら、それは2つの32ビット整数に
より64ビット整数に重ね書きするからである。変数X及
びNew の設定のみが大エンディアンの規則の下に正しく
働く。上位の32ビットが秒単位の時間である場合、多く
の時間のスタンプフォーマットで、その秒をアクセスす
る必要性は便宜的に前記構造を必要とする。しかしなが
ら、プログラムが小エンディアンのタイムスタンプとと
もに小エンディアン環境に移る場合、このデータ構造の
参照はどれもアプリケーションを通じて変更する必要が
ある。これは、上記のプログラムが大エンディアンの順
序付けを想定してダブルワード内のワードを絶対的に順
序付けるからである。そしてこの順序付けは、たとえ小
エンディアンの目的マシンのために再コンパイルされた
場合でも、同じ順序のままである。なぜなら、上記の表
4で "timestamp_split" は形式的に2つの隣接する4
バイト整数としての順序付けを記述するからである。
ィアンである。なぜなら、それは2つの32ビット整数に
より64ビット整数に重ね書きするからである。変数X及
びNew の設定のみが大エンディアンの規則の下に正しく
働く。上位の32ビットが秒単位の時間である場合、多く
の時間のスタンプフォーマットで、その秒をアクセスす
る必要性は便宜的に前記構造を必要とする。しかしなが
ら、プログラムが小エンディアンのタイムスタンプとと
もに小エンディアン環境に移る場合、このデータ構造の
参照はどれもアプリケーションを通じて変更する必要が
ある。これは、上記のプログラムが大エンディアンの順
序付けを想定してダブルワード内のワードを絶対的に順
序付けるからである。そしてこの順序付けは、たとえ小
エンディアンの目的マシンのために再コンパイルされた
場合でも、同じ順序のままである。なぜなら、上記の表
4で "timestamp_split" は形式的に2つの隣接する4
バイト整数としての順序付けを記述するからである。
【0030】それはこの種の順序付け関係の符号化であ
り、多くの外観を有するので、プログラムはそのプログ
ラムの最初の目標にされるエンディアンに広く分散した
従属状態を有する。予め注意深く計画されない限り、1
つのエンディアン環境を有するシステムで開発されたプ
ログラムは他のエンディアン環境を有するシステムに移
植するすることは困難であり且つ費用がかかる。よっ
て、1つのエンディアン環境を用いるシステムで実行す
るために設計されたプログラムは他のエンディアン環境
のコンピュータシステムで実行するために変換されるこ
とは稀である。
り、多くの外観を有するので、プログラムはそのプログ
ラムの最初の目標にされるエンディアンに広く分散した
従属状態を有する。予め注意深く計画されない限り、1
つのエンディアン環境を有するシステムで開発されたプ
ログラムは他のエンディアン環境を有するシステムに移
植するすることは困難であり且つ費用がかかる。よっ
て、1つのエンディアン環境を用いるシステムで実行す
るために設計されたプログラムは他のエンディアン環境
のコンピュータシステムで実行するために変換されるこ
とは稀である。
【0031】説明のために、この概要を通じて32ビット
のワードサイズが用いられ、そして対応するワードの部
分が図3に示される。しかしながら、他のワードサイ
ズ、例えば16ビット及び64ビットを用いるコンピュータ
システムは、本発明により一般性を失わずに使用できる
ことが分かる。
のワードサイズが用いられ、そして対応するワードの部
分が図3に示される。しかしながら、他のワードサイ
ズ、例えば16ビット及び64ビットを用いるコンピュータ
システムは、本発明により一般性を失わずに使用できる
ことが分かる。
【0032】前述のように、あるコンピュータシステム
は、2エンディアンコンピュータシステムと呼ばれ、そ
れらの外部のエンディアンモードを変更できる。しかし
ながら、内部的には、2エンディアンコンピュータシス
テムは1つの特定のエンディアンの方にバイアスされる
コンピュータシステムとみなしうるが、同時に代わりの
エンディアンモードを提供する回路を有する。この回路
は、そのコンピュータシステムのエンディアンモードを
制御するために特別な目的のソフトウェアにより初期化
される。代わりのエンディアンモードで動作するように
この回路が初期化されると、データの反映が起きる。反
映の必要性は単に、2エンディアンコンピュータシステ
ムが大エンディアン及び小エンディアンのデータフォー
マットの間の相違をいかに処理するかの結果である。そ
れゆえ、ひとたび2エンディアンコンピュータシステム
が始動され走行すれば、もちろん、そのコンピュータシ
ステムがその代わりのエンディアンモードで走行するよ
うに告げられているかどうかにより、反映は常に起きる
か又は決して起きない。
は、2エンディアンコンピュータシステムと呼ばれ、そ
れらの外部のエンディアンモードを変更できる。しかし
ながら、内部的には、2エンディアンコンピュータシス
テムは1つの特定のエンディアンの方にバイアスされる
コンピュータシステムとみなしうるが、同時に代わりの
エンディアンモードを提供する回路を有する。この回路
は、そのコンピュータシステムのエンディアンモードを
制御するために特別な目的のソフトウェアにより初期化
される。代わりのエンディアンモードで動作するように
この回路が初期化されると、データの反映が起きる。反
映の必要性は単に、2エンディアンコンピュータシステ
ムが大エンディアン及び小エンディアンのデータフォー
マットの間の相違をいかに処理するかの結果である。そ
れゆえ、ひとたび2エンディアンコンピュータシステム
が始動され走行すれば、もちろん、そのコンピュータシ
ステムがその代わりのエンディアンモードで走行するよ
うに告げられているかどうかにより、反映は常に起きる
か又は決して起きない。
【0033】本発明の良好なプロセッサは高機能IBM パ
ワーPCプロセッサである。パワーPCアーキテクチャは P
owerPC Architecture Manual, May, 1993, IBM Corpora
tion, Pub. No. SR28-5124-00 に記述されている。パワ
ーPCの2エンディアンプロセッサ (例えば、モデル620)
ファミリは大エンディアンの方にバイアスされる。パワ
ーPC2エンディアンプロセッサは良好な実施例として選
択されているが、本発明はどの特定の2エンディアンプ
ロセッサにも且ついかなる特定のエンディアンバイアス
にも限定されないことを当業者は理解するであろう。
ワーPCプロセッサである。パワーPCアーキテクチャは P
owerPC Architecture Manual, May, 1993, IBM Corpora
tion, Pub. No. SR28-5124-00 に記述されている。パワ
ーPCの2エンディアンプロセッサ (例えば、モデル620)
ファミリは大エンディアンの方にバイアスされる。パワ
ーPC2エンディアンプロセッサは良好な実施例として選
択されているが、本発明はどの特定の2エンディアンプ
ロセッサにも且ついかなる特定のエンディアンバイアス
にも限定されないことを当業者は理解するであろう。
【0034】IBM 2エンディアンパワーPCプロセッサは
大エンディアンの方にバイアスされるので、それらは2
ステッププロセスを介して小エンディアンタスクを処理
する。第1のステップは前述の反映である。反映ステッ
プは本質的にはデータを再配列し、それが所与のプロセ
ッサの大エンディアンバイアスを正しくアクセスできる
ようにする。第2のステップは、アドレス変更と呼ば
れ、大エンディアンアドレスから小エンディアンアドレ
スにデータを参照するために用いられるアドレスを変換
する。この点で、繰り返して言えば、本発明はいかなる
特定のエンディアンバイアスにも限定されないことであ
る。従って、小エンディアンバイアスのために、あるタ
イプの反映及びアドレス変更を通じて大エンディアンタ
スクを処理する2エンディアンプロセッサのどれにも、
本発明は等しく適用されることが理解されるべきであ
る。
大エンディアンの方にバイアスされるので、それらは2
ステッププロセスを介して小エンディアンタスクを処理
する。第1のステップは前述の反映である。反映ステッ
プは本質的にはデータを再配列し、それが所与のプロセ
ッサの大エンディアンバイアスを正しくアクセスできる
ようにする。第2のステップは、アドレス変更と呼ば
れ、大エンディアンアドレスから小エンディアンアドレ
スにデータを参照するために用いられるアドレスを変換
する。この点で、繰り返して言えば、本発明はいかなる
特定のエンディアンバイアスにも限定されないことであ
る。従って、小エンディアンバイアスのために、あるタ
イプの反映及びアドレス変更を通じて大エンディアンタ
スクを処理する2エンディアンプロセッサのどれにも、
本発明は等しく適用されることが理解されるべきであ
る。
【0035】前述のように、混合エンディアン処理環境
で走行するときに存在する2つの可能なエンディアン状
況がある。第1の可能性はプロセッサの内部のエンディ
アンがソフトウェアタスクのエンディアンに一致する場
合である。このケースでは、ソフトウェアデータの変換
は不要である。なぜなら、データバイト順位及びデータ
アドレスオフセットはプロセッサにより直に読取りうる
からである。第2の可能性はプロセッサの内部のエンデ
ィアンがソフトウェアタスクのエンディアンと一致しな
い場合である。この後者のケースでは、前述の2ステッ
ププロセスはパワーPCコンピュータシステム内で用いら
れる。これらのステップは図4及び図5に示されたテー
ブルに示されている。第1のステップはデータダブルワ
ード又はその一部分を含むバイトで実行すべき反映であ
る (図4参照)。 第2のステップは、第1のステップで
実行された反映の後のバイトの新しいロケーションを提
供するための、データダブルワードを含むバイトのメモ
リアドレスオフセットの変更である (図5参照)。
で走行するときに存在する2つの可能なエンディアン状
況がある。第1の可能性はプロセッサの内部のエンディ
アンがソフトウェアタスクのエンディアンに一致する場
合である。このケースでは、ソフトウェアデータの変換
は不要である。なぜなら、データバイト順位及びデータ
アドレスオフセットはプロセッサにより直に読取りうる
からである。第2の可能性はプロセッサの内部のエンデ
ィアンがソフトウェアタスクのエンディアンと一致しな
い場合である。この後者のケースでは、前述の2ステッ
ププロセスはパワーPCコンピュータシステム内で用いら
れる。これらのステップは図4及び図5に示されたテー
ブルに示されている。第1のステップはデータダブルワ
ード又はその一部分を含むバイトで実行すべき反映であ
る (図4参照)。 第2のステップは、第1のステップで
実行された反映の後のバイトの新しいロケーションを提
供するための、データダブルワードを含むバイトのメモ
リアドレスオフセットの変更である (図5参照)。
【0036】反映ステップは種々の場所で実行できるの
で、完全に機械的であり且つ取出されるデータエレメン
トのサイズとは無関係である。反映は代わりのエンディ
アンの "真" のエンディアンフォーマットであると想定
される記憶から開始し、その後に反映される。この反映
は、第2のステップのアドレス変更前の取出し/記憶経
路に沿った取出し又は記憶の一部として、本来のアドレ
ス指定されたページ、実際のアドレス指定されたペー
ジ、又は位置合わせされたダブルワードないしその明確
な一部分のような関連したキャッシュ行内のその相対的
なオフセットに基づく。図4に示されたテーブルで、バ
イト0はバイト7と交換され、バイト1はバイト6と交
換され、バイト2はバイト5と交換され、そしてバイト
3はバイト4と交換される。その結果は、この時点で1
つのエンディアンから他のエンディアンに記憶が変更さ
れているが、プログラマが期待したものと異なるオフセ
ットで存在していることである。他の、64ビットと異な
るワードサイズの反映は本発明により一般性を失わずに
実行できる。
で、完全に機械的であり且つ取出されるデータエレメン
トのサイズとは無関係である。反映は代わりのエンディ
アンの "真" のエンディアンフォーマットであると想定
される記憶から開始し、その後に反映される。この反映
は、第2のステップのアドレス変更前の取出し/記憶経
路に沿った取出し又は記憶の一部として、本来のアドレ
ス指定されたページ、実際のアドレス指定されたペー
ジ、又は位置合わせされたダブルワードないしその明確
な一部分のような関連したキャッシュ行内のその相対的
なオフセットに基づく。図4に示されたテーブルで、バ
イト0はバイト7と交換され、バイト1はバイト6と交
換され、バイト2はバイト5と交換され、そしてバイト
3はバイト4と交換される。その結果は、この時点で1
つのエンディアンから他のエンディアンに記憶が変更さ
れているが、プログラマが期待したものと異なるオフセ
ットで存在していることである。他の、64ビットと異な
るワードサイズの反映は本発明により一般性を失わずに
実行できる。
【0037】図4に示され、そして本発明の機構により
実行された反映は時にはダブルワード反映と呼ばれる
が、ワード "反映" が無条件で現われるときは必ず、そ
れは図4に示されたダブルワード反映を指すと考えるべ
きである。
実行された反映は時にはダブルワード反映と呼ばれる
が、ワード "反映" が無条件で現われるときは必ず、そ
れは図4に示されたダブルワード反映を指すと考えるべ
きである。
【0038】第2のステップはプロセッサが参照してい
るデータワードのサイズによるアドレス変更を実行す
る。図5で、良好なシステムは、8ビットバイトメモリ
参照中にはXOR(排他的論理和) 7 の演算、16ビットワー
ドメモリ参照中にはXOR 6 の演算、32ビットワードメモ
リ参照中にはXOR 4 の演算、そして64ビットメモリ参照
中にはXOR 0 の演算を実行する。本発明の16ビット、32
ビット又は64ビットワードプロセッサのどれかの良好な
実施例では、アドレスオフセット変更は、アドレスオフ
セットの3つの最下位ビットに関する適切なXOR 演算の
実行により一般化される。
るデータワードのサイズによるアドレス変更を実行す
る。図5で、良好なシステムは、8ビットバイトメモリ
参照中にはXOR(排他的論理和) 7 の演算、16ビットワー
ドメモリ参照中にはXOR 6 の演算、32ビットワードメモ
リ参照中にはXOR 4 の演算、そして64ビットメモリ参照
中にはXOR 0 の演算を実行する。本発明の16ビット、32
ビット又は64ビットワードプロセッサのどれかの良好な
実施例では、アドレスオフセット変更は、アドレスオフ
セットの3つの最下位ビットに関する適切なXOR 演算の
実行により一般化される。
【0039】図6〜図9は小エンディアンフォーマット
から大エンディアンフォーマットへの変換を下記の例で
示す:
から大エンディアンフォーマットへの変換を下記の例で
示す:
【表5】
【0040】例えば、図8で、小エンディアンフォーマ
ットから大エンディアンフォーマットに反映された32ビ
ットワードが示され、そしてそのロケーションが32ビッ
トワード取出し中にオフセット0からオフセット4に変
更されている。プロセッサがメモリからの取出しを終了
するために、最初にソフトウェアにより提示されたとき
のアドレスに関してアドレス変更が実行される。この32
ビットワードの取出しのケースでは、最初のアドレスは
0のオフセットを有する。プロセッサは提示されたアド
レスを取ってXOR 4 を実行し、対応する大エンディアン
ワードをオフセット4から取出す。8ビットバイトメモ
リ参照中のXOR 7 の演算、16ビット半ワードメモリ参照
中のXOR 6 の演算、32ビットワードメモリ参照中のXOR
4 の演算、そして64ビットメモリ参照中のXOR 0 の演算
を実行することにより、第1のステップの前に小エンデ
ィアンフォーマットで開始されたのち最初に上記のよう
に反映される記憶は、最初のオフセットを最初のソフト
ウェア指定のオフセットから、内部的に正しいオフセッ
トに訂正して反映を考慮することが分かる。これらのス
テップはパワーPCコンピュータシステムにより隠される
から、プログラマは環境が真の小エンディアン以外の何
物であるかを判別できない。8ビット、16ビット及び64
ビットメモリ参照に対応する、小エンディアンフォーマ
ットから大エンディアンフォーマットへの2ステップ変
換の別の例は、図6、図7及び図9に示される。
ットから大エンディアンフォーマットに反映された32ビ
ットワードが示され、そしてそのロケーションが32ビッ
トワード取出し中にオフセット0からオフセット4に変
更されている。プロセッサがメモリからの取出しを終了
するために、最初にソフトウェアにより提示されたとき
のアドレスに関してアドレス変更が実行される。この32
ビットワードの取出しのケースでは、最初のアドレスは
0のオフセットを有する。プロセッサは提示されたアド
レスを取ってXOR 4 を実行し、対応する大エンディアン
ワードをオフセット4から取出す。8ビットバイトメモ
リ参照中のXOR 7 の演算、16ビット半ワードメモリ参照
中のXOR 6 の演算、32ビットワードメモリ参照中のXOR
4 の演算、そして64ビットメモリ参照中のXOR 0 の演算
を実行することにより、第1のステップの前に小エンデ
ィアンフォーマットで開始されたのち最初に上記のよう
に反映される記憶は、最初のオフセットを最初のソフト
ウェア指定のオフセットから、内部的に正しいオフセッ
トに訂正して反映を考慮することが分かる。これらのス
テップはパワーPCコンピュータシステムにより隠される
から、プログラマは環境が真の小エンディアン以外の何
物であるかを判別できない。8ビット、16ビット及び64
ビットメモリ参照に対応する、小エンディアンフォーマ
ットから大エンディアンフォーマットへの2ステップ変
換の別の例は、図6、図7及び図9に示される。
【0041】上記のパワーPCの2ステップ変換プロセス
は部分的なデータ読取りにも適応する。例えば、図10
は32ビット整数 00 00 C3 50の下位16ビット C3 50の取
出しを示す。32ビット整数は小エンディアンであるの
で、ソフトウェアは通常は標準の小エンディアン規則を
用いてオフセット0の半ワードを取出す。32ビットワー
ドの16ビットメモリ参照は、前に図8で説明したよう
に、最初に32ビットワードを小エンディアンフォーマッ
トから大エンディアンフォーマットに反映することによ
り適応する。現在のメモリ参照は16ビット値に関するの
で、XOR 6 は図5で説明したように実行され、オフセッ
ト6から正しい大エンディアン半ワードを取出す。
は部分的なデータ読取りにも適応する。例えば、図10
は32ビット整数 00 00 C3 50の下位16ビット C3 50の取
出しを示す。32ビット整数は小エンディアンであるの
で、ソフトウェアは通常は標準の小エンディアン規則を
用いてオフセット0の半ワードを取出す。32ビットワー
ドの16ビットメモリ参照は、前に図8で説明したよう
に、最初に32ビットワードを小エンディアンフォーマッ
トから大エンディアンフォーマットに反映することによ
り適応する。現在のメモリ参照は16ビット値に関するの
で、XOR 6 は図5で説明したように実行され、オフセッ
ト6から正しい大エンディアン半ワードを取出す。
【0042】アドレスオフセット変更の上記説明は16ビ
ット、32ビット、64ビットのワードサイズでは正しく、
そして他のワードサイズに容易に拡張することが分か
る。例えば、128 ビットワードサイズを有するプロセッ
サは第1のステップで16バイトワード反映を実行する。
この場合、バイト0はバイト15と交換され、バイト1は
バイト14と交換され、バイト2はバイト13と交換され、
バイト3はバイト12と交換され、バイト4はバイト11と
交換され、バイト5はバイト10と交換され、バイト6は
バイト9と交換され、そしてバイト7はバイト8と交換
される。第2のステップの間に、プロセッサは16進数で
8ビット参照のXOR F、 16ビット参照のXOR E、 32ビッ
ト参照のXOR C、 64ビット参照のXOR 8 及び128 ビット
参照のXOR0 を用いて、アドレスオフセットの最下位4
ビットのXOR 演算を実行する。
ット、32ビット、64ビットのワードサイズでは正しく、
そして他のワードサイズに容易に拡張することが分か
る。例えば、128 ビットワードサイズを有するプロセッ
サは第1のステップで16バイトワード反映を実行する。
この場合、バイト0はバイト15と交換され、バイト1は
バイト14と交換され、バイト2はバイト13と交換され、
バイト3はバイト12と交換され、バイト4はバイト11と
交換され、バイト5はバイト10と交換され、バイト6は
バイト9と交換され、そしてバイト7はバイト8と交換
される。第2のステップの間に、プロセッサは16進数で
8ビット参照のXOR F、 16ビット参照のXOR E、 32ビッ
ト参照のXOR C、 64ビット参照のXOR 8 及び128 ビット
参照のXOR0 を用いて、アドレスオフセットの最下位4
ビットのXOR 演算を実行する。
【0043】従来の2エンディアンコンピュータシステ
ムで混合エンディアン計算環境の生成にかかわる1つの
複雑さは、従来の2エンディアンアーキテクチャにより
課されるデータ及びアドレス調整に直面してメインメモ
リのイメージの管理に関連した問題点である。本発明
は、異なる (即ち、大エンディアン対小エンディアン)
情報フォーマット期待を有するタスクが1つのコンピュ
ータシステムに共存し且つタスク毎に実行しうるよう
に、メインメモリを管理する機構を提供する。より詳し
くは、本発明の機構は、データが種々の段階の処理によ
り移動するにつれてそのデータが反映されているか否か
を示すためにそのデータをマークすることにより、パワ
ーPCアーキテクチャのデータ反映状況を制御し追跡す
る。
ムで混合エンディアン計算環境の生成にかかわる1つの
複雑さは、従来の2エンディアンアーキテクチャにより
課されるデータ及びアドレス調整に直面してメインメモ
リのイメージの管理に関連した問題点である。本発明
は、異なる (即ち、大エンディアン対小エンディアン)
情報フォーマット期待を有するタスクが1つのコンピュ
ータシステムに共存し且つタスク毎に実行しうるよう
に、メインメモリを管理する機構を提供する。より詳し
くは、本発明の機構は、データが種々の段階の処理によ
り移動するにつれてそのデータが反映されているか否か
を示すためにそのデータをマークすることにより、パワ
ーPCアーキテクチャのデータ反映状況を制御し追跡す
る。
【0044】第1の代替実施例で、本発明は、大エンデ
ィアンデータの流れを有利にする標準的なI/O バイアス
の代わりに、小エンディアンI/O データの流れの方に、
既存のパワーPCコンピュータシステムをバイアスする機
構を提供する。標準的なパワーPCコンピュータシステム
が大エンディアンバイアスのI/O の流れを有するのは、
小エンディアンタスクが要求するデータは補助記憶装置
からメインメモリに持込まれるとき常に反映されるよう
に要求されるのに対し、大エンディアンタスクが要求す
るデータは単に直接メモリアクセス(DMA) により直にメ
インメモリにコピーされるように要求されるためであ
る。
ィアンデータの流れを有利にする標準的なI/O バイアス
の代わりに、小エンディアンI/O データの流れの方に、
既存のパワーPCコンピュータシステムをバイアスする機
構を提供する。標準的なパワーPCコンピュータシステム
が大エンディアンバイアスのI/O の流れを有するのは、
小エンディアンタスクが要求するデータは補助記憶装置
からメインメモリに持込まれるとき常に反映されるよう
に要求されるのに対し、大エンディアンタスクが要求す
るデータは単に直接メモリアクセス(DMA) により直にメ
インメモリにコピーされるように要求されるためであ
る。
【0045】1つの可能な解決は、大エンディアンデー
タを直にメインメモリにコピーすると同時に、それをメ
インメモリにコピーする前に、小エンディアンデータを
反映する、専用I/O DMA ハードウェアを用いることであ
る。しかしながら、この実施例の機構は、情報をバイト
毎に補助記憶装置からメインメモリにコピーする普通の
既製のI/O DMA ハードウェアを用いる。
タを直にメインメモリにコピーすると同時に、それをメ
インメモリにコピーする前に、小エンディアンデータを
反映する、専用I/O DMA ハードウェアを用いることであ
る。しかしながら、この実施例の機構は、情報をバイト
毎に補助記憶装置からメインメモリにコピーする普通の
既製のI/O DMA ハードウェアを用いる。
【0046】パワーPCプロセッサ101 が調べるデータフ
ォーマットを変更せずに、既存のパワーPCコンピュータ
システムのI/O バイアスを変更するために、第1の代替
実施例の機構は小エンディアンデータを直にメインメモ
リにコピーし、そして大エンディアンデータを、メイン
メモリに記憶する前に、反映する。そして、最終的にメ
インメモリ及びキャッシュメモリの間でデータを移動す
るとき、そのデータが小エンディアンデータ又は大エン
ディアンデータであると分かっているかどうかに関係な
く、それは図4〜図10に示すように常に反映される。
ォーマットを変更せずに、既存のパワーPCコンピュータ
システムのI/O バイアスを変更するために、第1の代替
実施例の機構は小エンディアンデータを直にメインメモ
リにコピーし、そして大エンディアンデータを、メイン
メモリに記憶する前に、反映する。そして、最終的にメ
インメモリ及びキャッシュメモリの間でデータを移動す
るとき、そのデータが小エンディアンデータ又は大エン
ディアンデータであると分かっているかどうかに関係な
く、それは図4〜図10に示すように常に反映される。
【0047】その結果、第2の反映は大エンディアン処
理の第1の反映の正味の効果を無効にするが、小エンデ
ィアン処理に要した1つの正味の反映を提供するので、
キャッシュメモリ内のデータイメージは大エンディアン
処理又は小エンディアン処理に対するパワーPC要求に正
確に対応する。
理の第1の反映の正味の効果を無効にするが、小エンデ
ィアン処理に要した1つの正味の反映を提供するので、
キャッシュメモリ内のデータイメージは大エンディアン
処理又は小エンディアン処理に対するパワーPC要求に正
確に対応する。
【0048】[詳細な説明]図1は本発明のコンピュー
タシステムのブロック図を示す。良好な実施例のコンピ
ュータシステムは高機能のIBM AS/400中型コンピュータ
システムである。しかしながら、本発明の機構及び装置
はどのコンピュータシステムにも、そのコンピュータシ
ステムが複雑な多重ユーザ計算装置であるか又は単一ユ
ーザ装置、例えばパーソナルコンピュータないしはワー
クステーションであるかに関係なく、等しく当てはまる
ことを当業者は理解するであろう。図1の分解組立図に
示すように、コンピュータシステム100はプロセッサ101
を有し、プロセッサ101 はキャッシュメモリ103 及び反
映回路121 を介してシステムバス150 に接続される。メ
インメモリ 109、反映回路 121、補助記憶装置インタフ
ェース 140、端末インタフェース 145、及び通信インタ
フェース147もシステムバス150に接続される。
タシステムのブロック図を示す。良好な実施例のコンピ
ュータシステムは高機能のIBM AS/400中型コンピュータ
システムである。しかしながら、本発明の機構及び装置
はどのコンピュータシステムにも、そのコンピュータシ
ステムが複雑な多重ユーザ計算装置であるか又は単一ユ
ーザ装置、例えばパーソナルコンピュータないしはワー
クステーションであるかに関係なく、等しく当てはまる
ことを当業者は理解するであろう。図1の分解組立図に
示すように、コンピュータシステム100はプロセッサ101
を有し、プロセッサ101 はキャッシュメモリ103 及び反
映回路121 を介してシステムバス150 に接続される。メ
インメモリ 109、反映回路 121、補助記憶装置インタフ
ェース 140、端末インタフェース 145、及び通信インタ
フェース147もシステムバス150に接続される。
【0049】プロセッサ101はアドレス変更回路119及び
マシン状態レジスタ(MSR)105を有する。プロセッサ101
は高機能のIBM 2エンディアンパワーPCプロセッサであ
るが、2エンディアンプロセッサはどの2ステップでも
使用できる。アドレス変更回路119 は図5のアドレス変
更を実行する責任を有するが、その機能はソフトウェア
でも実現できる。MSR 105 は、プロセッサ101 に関連し
た現在のタスク情報を含むとともに、小エンディアン(L
E)状況ビット129 及び割込み小エンディアン(ILE) 状況
ビット127 も含む。LEビット129 はメモリ参照中にアド
レス変更を実行すべきかどうかを示す。LEビット129 の
値はオペレーティングシステム165 によりセットされ、
プロセッサ101 で実行中の現在のタスクのエンディアン
を反映する。本発明の混合エンディアン環境では、LEビ
ット129 の値はプロセッサ101 が異なるエンディアンの
ソフトウェアタスクを実行するとき実時間で変化する。
マシン状態レジスタ(MSR)105を有する。プロセッサ101
は高機能のIBM 2エンディアンパワーPCプロセッサであ
るが、2エンディアンプロセッサはどの2ステップでも
使用できる。アドレス変更回路119 は図5のアドレス変
更を実行する責任を有するが、その機能はソフトウェア
でも実現できる。MSR 105 は、プロセッサ101 に関連し
た現在のタスク情報を含むとともに、小エンディアン(L
E)状況ビット129 及び割込み小エンディアン(ILE) 状況
ビット127 も含む。LEビット129 はメモリ参照中にアド
レス変更を実行すべきかどうかを示す。LEビット129 の
値はオペレーティングシステム165 によりセットされ、
プロセッサ101 で実行中の現在のタスクのエンディアン
を反映する。本発明の混合エンディアン環境では、LEビ
ット129 の値はプロセッサ101 が異なるエンディアンの
ソフトウェアタスクを実行するとき実時間で変化する。
【0050】ILE ビット127 は、LEビット129 がプロセ
ッサ割込みを受取るときの状態を示す。ILE ビット127
はソフトウェア割込みハンドラとして選択されたエンデ
ィアンを反映する。アプリケーションプログラムエンデ
ィアン (即ち、大エンディアンプログラム155 又は小エ
ンディアンプログラム 160) から割込み処理エンディア
ンに変更するとき、エンディアンの変更は、もしあれ
ば、割込みプロセスの一部分でなければならない。割込
みハンドラエンディアンの選択を反映するために、ILE
ビット127 の値はコンピュータシステム100 の初期始動
時にオペレーティングシステムにより一度だけセットす
ればよいことが望ましい。割込みハンドラのエンディア
ンバイアスは一般に初期始動後は変更されないので、IL
E ビット127 の値は一般に実時間では変更されない。IL
E ビット127 の値は一般性を失わずに恒久的に一定値に
固定できる。しかしながら、これは割込みハンドラを強
制する副作用を有するので、システムソフトウェアはで
きれば特定のエンディアンに属すべきである。
ッサ割込みを受取るときの状態を示す。ILE ビット127
はソフトウェア割込みハンドラとして選択されたエンデ
ィアンを反映する。アプリケーションプログラムエンデ
ィアン (即ち、大エンディアンプログラム155 又は小エ
ンディアンプログラム 160) から割込み処理エンディア
ンに変更するとき、エンディアンの変更は、もしあれ
ば、割込みプロセスの一部分でなければならない。割込
みハンドラエンディアンの選択を反映するために、ILE
ビット127 の値はコンピュータシステム100 の初期始動
時にオペレーティングシステムにより一度だけセットす
ればよいことが望ましい。割込みハンドラのエンディア
ンバイアスは一般に初期始動後は変更されないので、IL
E ビット127 の値は一般に実時間では変更されない。IL
E ビット127 の値は一般性を失わずに恒久的に一定値に
固定できる。しかしながら、これは割込みハンドラを強
制する副作用を有するので、システムソフトウェアはで
きれば特定のエンディアンに属すべきである。
【0051】キャッシュメモリ103 はキャッシュアレイ
123 及び125 を有する。キャッシュメモリ103 は両方向
結合、再コピーキャッシュであるが、本発明は特定のキ
ャッシュ機構に限定されないことを当業者は理解するで
あろう。キャッシュアレイ123 及び125 の各々は複数の
キャッシュアレイ素子を有する。技術的に知られている
ように、キャッシュアレイ素子の各々は実際のデータを
含むキャッシュ行及び一定の制御情報を含む。
123 及び125 を有する。キャッシュメモリ103 は両方向
結合、再コピーキャッシュであるが、本発明は特定のキ
ャッシュ機構に限定されないことを当業者は理解するで
あろう。キャッシュアレイ123 及び125 の各々は複数の
キャッシュアレイ素子を有する。技術的に知られている
ように、キャッシュアレイ素子の各々は実際のデータを
含むキャッシュ行及び一定の制御情報を含む。
【0052】バイアスビット156 を有する反映回路121
は、本明細書の概説セクション及び図4〜図10での説
明のようにメインメモリ109 からキャッシュメモリ103
に読取られたデータの反映を実行できる。キャッシュメ
モリ103 に関連したキャッシュメモリ制御装置(図示せ
ず)で走行するソフトウェアで反映回路121 を一般性を
失わずに実現できることを当業者は認めるであろう。早
期にコンピュータシステム100 の初期化サイクルで一度
セットされることが望ましいバイアスビット156は、コ
ンピュータシステム100 のI/O バイアスをセットするの
に用いられる。一般性を失わずにバイアスビット156 の
値を恒久的に固定できるが、これは、コンピュータシス
テム100 で実行するタスクの数が1つのエンディアンか
ら別のエンディアンに変更したかどうかに関係なく、常
に特定のI/O バイアスを維持するようにコンピュータシ
ステム100 に強制する副作用を有する。
は、本明細書の概説セクション及び図4〜図10での説
明のようにメインメモリ109 からキャッシュメモリ103
に読取られたデータの反映を実行できる。キャッシュメ
モリ103 に関連したキャッシュメモリ制御装置(図示せ
ず)で走行するソフトウェアで反映回路121 を一般性を
失わずに実現できることを当業者は認めるであろう。早
期にコンピュータシステム100 の初期化サイクルで一度
セットされることが望ましいバイアスビット156は、コ
ンピュータシステム100 のI/O バイアスをセットするの
に用いられる。一般性を失わずにバイアスビット156 の
値を恒久的に固定できるが、これは、コンピュータシス
テム100 で実行するタスクの数が1つのエンディアンか
ら別のエンディアンに変更したかどうかに関係なく、常
に特定のI/O バイアスを維持するようにコンピュータシ
ステム100 に強制する副作用を有する。
【0053】ページメモリとして技術的に知られている
メインメモリ109 は大エンディアンプログラム 155、小
エンディアンプログラム 160、サーバー 190、オペレー
ティングシステム 165及びその他のプログラム (図示せ
ず) を含む。大エンディアンプログラム155 は大エンデ
ィアンデータ 177を期待し且つ操作するように設計され
ているプログラムであるが、小エンディアンプログラム
160 は小エンディアンデータ 179を期待し且つ操作する
ように設計されている。しかしながら、特別なケースで
は、プログラムは代わりのエンディアンのデータを期待
し且つ操作するようにも設計できる。
メインメモリ109 は大エンディアンプログラム 155、小
エンディアンプログラム 160、サーバー 190、オペレー
ティングシステム 165及びその他のプログラム (図示せ
ず) を含む。大エンディアンプログラム155 は大エンデ
ィアンデータ 177を期待し且つ操作するように設計され
ているプログラムであるが、小エンディアンプログラム
160 は小エンディアンデータ 179を期待し且つ操作する
ように設計されている。しかしながら、特別なケースで
は、プログラムは代わりのエンディアンのデータを期待
し且つ操作するようにも設計できる。
【0054】混合エンディアン処理機構167 を有するこ
とも示されているオペレーティングシステム 165は高機
能のIBM マイクロカーネルに基づいた多重タスク処理オ
ペレーティングシステムであるが、適切な多重タスク処
理オペレーティングシステムはどれも使用できる。混合
エンディアン処理機構167 は割込みハンドラ 171、ペー
ジ不在ハンドラ 173及びリフレクタ174 を有する。混合
エンディアン処理機構167 は、本来、パワーPCプロセッ
サ101 の2ステッププロセスを動的に制御し且つ追跡す
る責任を有する。しかしながら、本発明の意図及び範囲
は2エンディアン、パワーPCコンピュータシステムで用
いられる特定の2ステッププロセスに限定されないこと
を当業者は理解するであろう。実際、本明細書に開示さ
れた機構は、選択されたステップの数又は細部に関係な
く、データ及びアドレスのいかなる調整にも等しく適用
できる。
とも示されているオペレーティングシステム 165は高機
能のIBM マイクロカーネルに基づいた多重タスク処理オ
ペレーティングシステムであるが、適切な多重タスク処
理オペレーティングシステムはどれも使用できる。混合
エンディアン処理機構167 は割込みハンドラ 171、ペー
ジ不在ハンドラ 173及びリフレクタ174 を有する。混合
エンディアン処理機構167 は、本来、パワーPCプロセッ
サ101 の2ステッププロセスを動的に制御し且つ追跡す
る責任を有する。しかしながら、本発明の意図及び範囲
は2エンディアン、パワーPCコンピュータシステムで用
いられる特定の2ステッププロセスに限定されないこと
を当業者は理解するであろう。実際、本明細書に開示さ
れた機構は、選択されたステップの数又は細部に関係な
く、データ及びアドレスのいかなる調整にも等しく適用
できる。
【0055】メインメモリ109 も大エンディアンデータ
177、小エンディアンデータ 179及びページテーブルエ
ントリ175 を含む。ページテーブルエントリ175 の各々
は、とりわけ、仮想アドレス (例えば、仮想アドレス17
6)、エンディアンビット (例えば、177)及び実アドレス
(例えば、実アドレス178)を含む。現にメモリ109 にあ
るメモリページ毎に1つのページテーブルエントリがあ
る。ページテーブルエントリ175 に含まれたエンディア
ンビット177 はそのページのエンディアン (即ち、小エ
ンディアンには1、そして大エンディアンには0) を示
す。
177、小エンディアンデータ 179及びページテーブルエ
ントリ175 を含む。ページテーブルエントリ175 の各々
は、とりわけ、仮想アドレス (例えば、仮想アドレス17
6)、エンディアンビット (例えば、177)及び実アドレス
(例えば、実アドレス178)を含む。現にメモリ109 にあ
るメモリページ毎に1つのページテーブルエントリがあ
る。ページテーブルエントリ175 に含まれたエンディア
ンビット177 はそのページのエンディアン (即ち、小エ
ンディアンには1、そして大エンディアンには0) を示
す。
【0056】補助記憶装置インタフェース140 は、コン
ピュータシステム100 と補助記憶装置、例えば磁気又は
光記憶装置とのインタフェースに用いられる。
ピュータシステム100 と補助記憶装置、例えば磁気又は
光記憶装置とのインタフェースに用いられる。
【0057】端末インタフェース145 はシステム管理者
及びコンピュータプログラマが、通常はプログラマブル
ワークステーションにより、コンピュータシステム100
と通信することを可能にする。
及びコンピュータプログラマが、通常はプログラマブル
ワークステーションにより、コンピュータシステム100
と通信することを可能にする。
【0058】通信インタフェース147 は、コンピュータ
システム100 と、ローカルエリアネットワーク(LAN) 及
び広域ネットワーク(WAN) のような外部通信ネットワー
クとのインタフェースに用いられる。図1に示されたシ
ステムは1つのメインCPU 及び1つのシステムバスのみ
を有するが、本発明は複数のメインCPU 及び複数のI/O
バスを有するコンピュータシステムにも等しく適用され
ることが理解されるべきである。同様に、良好な実施例
のバスは典型的なハードワイヤであるが、両方向性通信
をサポートする接続手段はどれも使用できる。
システム100 と、ローカルエリアネットワーク(LAN) 及
び広域ネットワーク(WAN) のような外部通信ネットワー
クとのインタフェースに用いられる。図1に示されたシ
ステムは1つのメインCPU 及び1つのシステムバスのみ
を有するが、本発明は複数のメインCPU 及び複数のI/O
バスを有するコンピュータシステムにも等しく適用され
ることが理解されるべきである。同様に、良好な実施例
のバスは典型的なハードワイヤであるが、両方向性通信
をサポートする接続手段はどれも使用できる。
【0059】[混合エンディアン動作] [主要な実施例−概論]図11及び図12は本発明の機
構が良好な実施例のステップをいかに実行するかを示す
論理流れ図である。図13は図11及び図12に記述さ
れた機構により行われたステップの結果の例を示すデー
タの流れの例を示す図である。
構が良好な実施例のステップをいかに実行するかを示す
論理流れ図である。図13は図11及び図12に記述さ
れた機構により行われたステップの結果の例を示すデー
タの流れの例を示す図である。
【0060】ブロック650 で、オペレーティングシステ
ム165 は前に生成されたタスクをプロセッサ101 で実行
するためにスケジュールし、そしてアドレス空間をタス
クに割当てる。アドレス空間はその関連タスクのエンデ
ィアンを示すようにマークされる。本発明は "シングル
アライアシング" 形式の共有アドレス指定を用いる。シ
ングルアライアシングは図16〜図19に関連したテキ
ストで説明する。取出し又はデータ記憶動作の前に、オ
ペレーティングシステム165 は特定のタスク及びその関
連タスク制御ブロック(TCB) を生成する。当業者はタス
ク生成を熟知しているから、前記ステップの詳細は本明
細書では示さない。そしてオペレーティングシステム16
5 はスケジュールされたタスクの実行を開始する (ブロ
ック662)。オペレーティングシステム165 のタスクスケ
ジューリング機能はそれ自身がある種の割込みハンドラ
であるので、タスクスケジューリング機能は割込みから
の復帰命令(RFI) を介してタスクの実行を開始する。RF
I のような命令は割込みハンドラの最後の命令であるこ
とが技術的に知られている。本発明のRFI は2つのオペ
ランドを含む。第1のオペランドはMSR 105 の新しい値
及び、割込まれたタスク (即ち、このケースではスケジ
ュールされるタスク) が実行を再開始するとき最初に実
行されるべきタスク内のアドレスを含む。MSR 105 の新
しい値 (即ち、新しいLEビット129 及び新しいILE ビッ
ト127)がTCB のエンディアンビット及びLEビット129 の
現在の値 (即ち、オペレーティングシステム165 の値)
からそれぞれ取出される。
ム165 は前に生成されたタスクをプロセッサ101 で実行
するためにスケジュールし、そしてアドレス空間をタス
クに割当てる。アドレス空間はその関連タスクのエンデ
ィアンを示すようにマークされる。本発明は "シングル
アライアシング" 形式の共有アドレス指定を用いる。シ
ングルアライアシングは図16〜図19に関連したテキ
ストで説明する。取出し又はデータ記憶動作の前に、オ
ペレーティングシステム165 は特定のタスク及びその関
連タスク制御ブロック(TCB) を生成する。当業者はタス
ク生成を熟知しているから、前記ステップの詳細は本明
細書では示さない。そしてオペレーティングシステム16
5 はスケジュールされたタスクの実行を開始する (ブロ
ック662)。オペレーティングシステム165 のタスクスケ
ジューリング機能はそれ自身がある種の割込みハンドラ
であるので、タスクスケジューリング機能は割込みから
の復帰命令(RFI) を介してタスクの実行を開始する。RF
I のような命令は割込みハンドラの最後の命令であるこ
とが技術的に知られている。本発明のRFI は2つのオペ
ランドを含む。第1のオペランドはMSR 105 の新しい値
及び、割込まれたタスク (即ち、このケースではスケジ
ュールされるタスク) が実行を再開始するとき最初に実
行されるべきタスク内のアドレスを含む。MSR 105 の新
しい値 (即ち、新しいLEビット129 及び新しいILE ビッ
ト127)がTCB のエンディアンビット及びLEビット129 の
現在の値 (即ち、オペレーティングシステム165 の値)
からそれぞれ取出される。
【0061】説明のために、要求元のタスクは補助記憶
装置インタフェース140 を介して補助記憶装置に現に記
憶されているデータのアクセスを試みると仮定する (ブ
ロック665)。この仮定の下に、実行中のユーザ状態タス
クは、データを参照するとき、ページ不在割込みを受け
る。オペレーティングシステム165 は、前述のRFI で、
オペレーティングシステム165 のエンディアン値にILE
ビット127 を取得するのに慎重であるから、それはそれ
自身のエンディアンで、古いMSR 105 の値、割込み命令
のアドレス及び、ページ不在をパワーPCアーキテクチャ
要求により全て使用可能にするアドレスとともに制御を
取得する。オペレーティングシステム165 が要求元のタ
スクにより提示された仮想アドレス (即ち、要求された
データのアドレス) とページテーブルエントリ175 の1
つとの関連付けを試みるとき (即ち、提示されたアドレ
スが特定のメモリページ内にあると判定することによ
り)、 それは要求された情報が現在はメインメモリ109
に存在しないと判定する。よって、ページ不在はブロッ
ク667 で確認される。そしてオペレーティングシステム
165 は要求元のタスクにメインメモリ109 のページを割
当て、そして適切なページテーブルエントリを生成する
(ブロック670)。とりわけ、ページテーブルエントリは
メモリページの仮想及び実アドレスならびに要求元タス
クのエンディアンビットを含む。アドレス空間のエンデ
ィアンビットは、オペレーティングシステム165 により
実行中のタスクのTCB の参照を通じてページテーブルエ
ントリに組込まれる。このステップが終了した後、オペ
レーティングシステム165 は、ページを、データアクセ
スが終了できる前にスワップアウトできないように、メ
インメモリ109 に "ワイヤ" する、即ちロックする (ブ
ロック675)。
装置インタフェース140 を介して補助記憶装置に現に記
憶されているデータのアクセスを試みると仮定する (ブ
ロック665)。この仮定の下に、実行中のユーザ状態タス
クは、データを参照するとき、ページ不在割込みを受け
る。オペレーティングシステム165 は、前述のRFI で、
オペレーティングシステム165 のエンディアン値にILE
ビット127 を取得するのに慎重であるから、それはそれ
自身のエンディアンで、古いMSR 105 の値、割込み命令
のアドレス及び、ページ不在をパワーPCアーキテクチャ
要求により全て使用可能にするアドレスとともに制御を
取得する。オペレーティングシステム165 が要求元のタ
スクにより提示された仮想アドレス (即ち、要求された
データのアドレス) とページテーブルエントリ175 の1
つとの関連付けを試みるとき (即ち、提示されたアドレ
スが特定のメモリページ内にあると判定することによ
り)、 それは要求された情報が現在はメインメモリ109
に存在しないと判定する。よって、ページ不在はブロッ
ク667 で確認される。そしてオペレーティングシステム
165 は要求元のタスクにメインメモリ109 のページを割
当て、そして適切なページテーブルエントリを生成する
(ブロック670)。とりわけ、ページテーブルエントリは
メモリページの仮想及び実アドレスならびに要求元タス
クのエンディアンビットを含む。アドレス空間のエンデ
ィアンビットは、オペレーティングシステム165 により
実行中のタスクのTCB の参照を通じてページテーブルエ
ントリに組込まれる。このステップが終了した後、オペ
レーティングシステム165 は、ページを、データアクセ
スが終了できる前にスワップアウトできないように、メ
インメモリ109 に "ワイヤ" する、即ちロックする (ブ
ロック675)。
【0062】図12のブロック685 で、オペレーティン
グシステム165 は要求されたページが大エンディアンペ
ージであるか又は小エンディアンページであるかを決定
する。ここで、本発明の機構は要求されたページのエン
ディアンにより異なる動作を実行する。図13は大エン
ディアン及び小エンディアンが大エンディアンページ及
び小エンディアンページをそれぞれロードされる例を示
す。最初に、大エンディアンデータ604 を要求する大エ
ンディアンタスクの例を考える。大エンディアンデータ
604 は補助記憶装置に HEX 0000C350 F1F2F3F4として記
憶されることが示される。ブロック685 でページテーブ
ルエントリ621 の検査結果がノーの場合、オペレーティ
ングシステム165 はブロック680 に進み、大エンディア
ンデータ604 がメインメモリ109 のメモリページ609 に
直に (即ち、DMA により) コピーされる。
グシステム165 は要求されたページが大エンディアンペ
ージであるか又は小エンディアンページであるかを決定
する。ここで、本発明の機構は要求されたページのエン
ディアンにより異なる動作を実行する。図13は大エン
ディアン及び小エンディアンが大エンディアンページ及
び小エンディアンページをそれぞれロードされる例を示
す。最初に、大エンディアンデータ604 を要求する大エ
ンディアンタスクの例を考える。大エンディアンデータ
604 は補助記憶装置に HEX 0000C350 F1F2F3F4として記
憶されることが示される。ブロック685 でページテーブ
ルエントリ621 の検査結果がノーの場合、オペレーティ
ングシステム165 はブロック680 に進み、大エンディア
ンデータ604 がメインメモリ109 のメモリページ609 に
直に (即ち、DMA により) コピーされる。
【0063】このステップが終了した後、割込まれた命
令はRFI 命令を介して再開始される(ブロック681)。一
般に、割込まれた命令は最近に "ページイン" されたデ
ータのアクセスを直ちに試みる。これはキャッシュアレ
イ素子123 又は125 の1つのキャッシュ行に大エンディ
アンデータ604 を直にコピーする。
令はRFI 命令を介して再開始される(ブロック681)。一
般に、割込まれた命令は最近に "ページイン" されたデ
ータのアクセスを直ちに試みる。これはキャッシュアレ
イ素子123 又は125 の1つのキャッシュ行に大エンディ
アンデータ604 を直にコピーする。
【0064】対照的に、小エンディアンタスクにより取
出された小エンディアンデータ603の例を考える。小エ
ンディアンデータは図13に HEX 50C30000 F2F1F4F3と
して示される。小エンディアンデータ603 は大エンディ
アンデータ604 の小エンディアン形式である (即ち、デ
ータの各片は同じものを意味するが、それらの記憶は全
く異なる)。 650 から675 までの処理は、TCB 及びアド
レス空間が小エンディアンとマークされ、従ってブロッ
ク670 のページテーブルエントリが小エンディアンとセ
ットされる外は、大エンディアンのケースに似ている。
この例では、ブロック685 でページテーブルエントリ62
2 の検査結果はイエスである。よって、オペレーティン
グシステム165 は (ブロック687 で) 追加のメモリペー
ジ606 を割振る。そしてオペレーティングシステム165
は小エンディアンデータ603 を追加メモリページ606 に
直に (即ち、DMA により) コピーする (ブロック689)。
次に、オペレーティングシステム165 はブロック691 で
リフレクタ174 を呼出す。リフレクタ174 は、図4〜図
10及び付随するテキストに記述されたパワーPCの規則
により、小エンディアンデータ603 の適切な反映を実行
する。小エンディアンデータ603 は、それが反映された
後、メインメモリページ608 に直にコピーされる (ブロ
ック697)。ここで、RFI 命令が同様に実行され、そして
制御は (正しいエンディアンで) 割込まれた小エンディ
アンタスクに戻る。タスクは、一般に、実行を再開始す
ると、割込まれた命令を直ちに実行する。よって、608
にあるデータ603 はキャッシュアレイ素子123 又は125
の1つにコピーされる (ブロック693)。
出された小エンディアンデータ603の例を考える。小エ
ンディアンデータは図13に HEX 50C30000 F2F1F4F3と
して示される。小エンディアンデータ603 は大エンディ
アンデータ604 の小エンディアン形式である (即ち、デ
ータの各片は同じものを意味するが、それらの記憶は全
く異なる)。 650 から675 までの処理は、TCB 及びアド
レス空間が小エンディアンとマークされ、従ってブロッ
ク670 のページテーブルエントリが小エンディアンとセ
ットされる外は、大エンディアンのケースに似ている。
この例では、ブロック685 でページテーブルエントリ62
2 の検査結果はイエスである。よって、オペレーティン
グシステム165 は (ブロック687 で) 追加のメモリペー
ジ606 を割振る。そしてオペレーティングシステム165
は小エンディアンデータ603 を追加メモリページ606 に
直に (即ち、DMA により) コピーする (ブロック689)。
次に、オペレーティングシステム165 はブロック691 で
リフレクタ174 を呼出す。リフレクタ174 は、図4〜図
10及び付随するテキストに記述されたパワーPCの規則
により、小エンディアンデータ603 の適切な反映を実行
する。小エンディアンデータ603 は、それが反映された
後、メインメモリページ608 に直にコピーされる (ブロ
ック697)。ここで、RFI 命令が同様に実行され、そして
制御は (正しいエンディアンで) 割込まれた小エンディ
アンタスクに戻る。タスクは、一般に、実行を再開始す
ると、割込まれた命令を直ちに実行する。よって、608
にあるデータ603 はキャッシュアレイ素子123 又は125
の1つにコピーされる (ブロック693)。
【0065】従って、データは要求元のタスクがアクセ
スするためにキャッシュメモリ103で入手できる。しか
しながら、それぞれのデータは、実行中のタスクがたま
たま大エンディアンタスクであるか又は小エンディアン
タスクであるかに関係なく、適切な (即ち、小エンディ
アンデータのケースでは反映され、そして大エンディア
ンデータのケースでは反映されない) フォーマットで現
われる。これは更に後述のシングルアライアシングで増
幅される。
スするためにキャッシュメモリ103で入手できる。しか
しながら、それぞれのデータは、実行中のタスクがたま
たま大エンディアンタスクであるか又は小エンディアン
タスクであるかに関係なく、適切な (即ち、小エンディ
アンデータのケースでは反映され、そして大エンディア
ンデータのケースでは反映されない) フォーマットで現
われる。これは更に後述のシングルアライアシングで増
幅される。
【0066】[代替実施例−小エンディアンI/Oバイア
ス]図14は本発明の機構がこの代替実施例のステップ
を実行する論理流れ図である。図15に示すデータの流
れ図の例は、図14に記述された機構により行われたス
テップの結果の例を示す。
ス]図14は本発明の機構がこの代替実施例のステップ
を実行する論理流れ図である。図15に示すデータの流
れ図の例は、図14に記述された機構により行われたス
テップの結果の例を示す。
【0067】図14のブロック775 は図11のブロック
650〜675で行われたステップを表わすものとする。これ
らのステップはこの代替実施例のものと同一であるか
ら、それらの詳細の記述は反復しない。図11〜図13
の説明で述べたように、良好な実施例の機構は小エンデ
ィアンを反映してから最終的にメインメモリ109 からキ
ャッシュメモリ103 にコピーされるが、大エンディアン
データはバイト毎に補助記憶装置からメインメモリ109
に、そしてメインメモリ109 からキャッシュメモリ103
に直にコピーされる。この設計は、補助記憶装置及びメ
インメモリ間のデータ経路上の反映ペナルティを小エン
ディアンタスクに支払わせる作用を有するが、大エンデ
ィアンタスクには同じことを要求しない。このために、
良好な実施例のI/O 機構は "大エンディアンバイアス"
とみなされる。新しい機能 (即ち、反映回路121)の使用
は、この代替実施例のI/O 機構を "大エンディアンバイ
アス" 又は "小エンディアンバイアス" のどちらにもセ
ットできるように、コンピュータシステムを調整するこ
とを可能にする。コンピュータシステム100 のI/O バイ
アスはオペレーティングシステム165 により早期にブー
トプロセスで決定できる。反映回路121 のバイアスビッ
ト156 が論理値0にセットされた場合は、コンピュータ
システム100 は大エンディアンバイアスにセットされ、
そしてコンピュータシステム100 は図11〜図13及び
関連テキストで記述されているように動作する。代わり
に、オペレーティングシステム165 がバイアスヒット15
6 を論理値1にセットした場合、コンピュータシステム
100 は第1の代替実施例に従って小エンディアンバイア
スされたI/O により動作する。
650〜675で行われたステップを表わすものとする。これ
らのステップはこの代替実施例のものと同一であるか
ら、それらの詳細の記述は反復しない。図11〜図13
の説明で述べたように、良好な実施例の機構は小エンデ
ィアンを反映してから最終的にメインメモリ109 からキ
ャッシュメモリ103 にコピーされるが、大エンディアン
データはバイト毎に補助記憶装置からメインメモリ109
に、そしてメインメモリ109 からキャッシュメモリ103
に直にコピーされる。この設計は、補助記憶装置及びメ
インメモリ間のデータ経路上の反映ペナルティを小エン
ディアンタスクに支払わせる作用を有するが、大エンデ
ィアンタスクには同じことを要求しない。このために、
良好な実施例のI/O 機構は "大エンディアンバイアス"
とみなされる。新しい機能 (即ち、反映回路121)の使用
は、この代替実施例のI/O 機構を "大エンディアンバイ
アス" 又は "小エンディアンバイアス" のどちらにもセ
ットできるように、コンピュータシステムを調整するこ
とを可能にする。コンピュータシステム100 のI/O バイ
アスはオペレーティングシステム165 により早期にブー
トプロセスで決定できる。反映回路121 のバイアスビッ
ト156 が論理値0にセットされた場合は、コンピュータ
システム100 は大エンディアンバイアスにセットされ、
そしてコンピュータシステム100 は図11〜図13及び
関連テキストで記述されているように動作する。代わり
に、オペレーティングシステム165 がバイアスヒット15
6 を論理値1にセットした場合、コンピュータシステム
100 は第1の代替実施例に従って小エンディアンバイア
スされたI/O により動作する。
【0068】図14のブロック782 で、オペレーティン
グシステム165 はバイアスビット156 を検査し、コンピ
ュータシステム100 のI/O バイアスを判定する。オペレ
ーティングシステム165 は、コンピュータシステム100
が大エンディアンI/O バイアスのコンピュータシステム
として動作すべきであると決定した場合、図12のブロ
ック685(図14のブロック783)に進む。これらのステッ
プはこの代替実施例では同じであるから、それらの詳細
な説明は反復しない。
グシステム165 はバイアスビット156 を検査し、コンピ
ュータシステム100 のI/O バイアスを判定する。オペレ
ーティングシステム165 は、コンピュータシステム100
が大エンディアンI/O バイアスのコンピュータシステム
として動作すべきであると決定した場合、図12のブロ
ック685(図14のブロック783)に進む。これらのステッ
プはこの代替実施例では同じであるから、それらの詳細
な説明は反復しない。
【0069】この代替実施例を説明するために、オペレ
ーティングシステム165 はコンピュータシステム100 が
小エンディアンI/O バイアスのコンピュータシステムと
してセットされていると仮定する。そして制御の流れは
ブロック785 に進み、オペレーティングシステム165 は
関連したページが大エンディアンページであるか又は小
エンディアンページであるかを判定する。ここで、この
代替実施例の機構は問題のメモリページのエンディアン
により異なる動作を実行する。図15は大エンディアン
データ及び小エンディアンデータが大エンディアンタス
ク及び小エンディアンタスクにそれぞれロードされる方
法を示す。最初に、小エンディアンデータ703 を要求す
る小エンディアンタスクの例を考える。小エンディアン
データ703 は補助記憶装置に HEX 50C30000 F2F1F4F3と
して記憶されることが示される。ブロック785 でページ
テーブルエントリ722 の検査結果はノーであるから、オ
ペレーティングシステム165 はブロック780 に進み、小
エンディアンデータ703 がDMA によりメインメモリ109
のメモリページ708 に直にコピーされる。前述のよう
に、RFI 命令の実行 (ブロック781)により、延期された
タスクはそのタスクのエンディアンで実行を再開始す
る。そしてタスクは最初にページ不在を起こした命令を
再実行し、最終的にはページ709 にある原因データ703
が反映回路121 によりキャッシュ行712 に反映される。
ーティングシステム165 はコンピュータシステム100 が
小エンディアンI/O バイアスのコンピュータシステムと
してセットされていると仮定する。そして制御の流れは
ブロック785 に進み、オペレーティングシステム165 は
関連したページが大エンディアンページであるか又は小
エンディアンページであるかを判定する。ここで、この
代替実施例の機構は問題のメモリページのエンディアン
により異なる動作を実行する。図15は大エンディアン
データ及び小エンディアンデータが大エンディアンタス
ク及び小エンディアンタスクにそれぞれロードされる方
法を示す。最初に、小エンディアンデータ703 を要求す
る小エンディアンタスクの例を考える。小エンディアン
データ703 は補助記憶装置に HEX 50C30000 F2F1F4F3と
して記憶されることが示される。ブロック785 でページ
テーブルエントリ722 の検査結果はノーであるから、オ
ペレーティングシステム165 はブロック780 に進み、小
エンディアンデータ703 がDMA によりメインメモリ109
のメモリページ708 に直にコピーされる。前述のよう
に、RFI 命令の実行 (ブロック781)により、延期された
タスクはそのタスクのエンディアンで実行を再開始す
る。そしてタスクは最初にページ不在を起こした命令を
再実行し、最終的にはページ709 にある原因データ703
が反映回路121 によりキャッシュ行712 に反映される。
【0070】対照的に、ここで大エンディアンデータ70
4 の例を考える。大エンディアンデータは HEX 0000C35
0 F1F2F3F4として図15に示される。大エンディアンデ
ータ704 は小エンディアンデータ703 の大エンディアン
形式である (即ち、データの各片は同じものを意味する
が、それらの記憶は全く異なる)。 この例では、ブロッ
ク785 でページテーブルエントリ721 の検査の結果はイ
エスである。よって、オペレーティングシステム165 は
(ブロック787 で) 新しいメモリページ706 を割振る。
そしてオペレーティングシステム165 は大エンディアン
データ704 を新しいメモリページ706 に直にコピーする
(ブロック789)。次にオペレーティングシステム165 は
ブロック791 でリフレクタ174 を呼出す。リフレクタ17
4 は、図4に記述されたパワーPC規則及び付随するテキ
ストにより、大エンディアンデータ704 の適切な反映を
実行する。大エンディアンデータ704 は、それが反映さ
れた後、メインメモリページ709 に直にコピーされる
(ブロック797)。RFI 命令 (ブロック782A) は延期され
たタスクの実行をそのタスクのエンディアンで再開始す
る。そしてタスクは、最初にページ不在を起こした命令
を再実行し、メモリページ709 にある大エンディアンデ
ータ704 は反映回路121 によりキャッシュ行713 に反映
される。最後の反映は、大エンディアンデータ704 がキ
ャッシュメモリ103 のキャッシュ行713 に、パワーPCア
ーキテクチャで要求されるのと同じ形式(即ち、補助記
憶装置内と同じ形式) で現われるように、前の反映を逆
転させる作用を有する。同様に、キャッシュ行712 の内
容は補助記憶装置の形式が反映された形式である。これ
もパワーPCアーキテクチャが要求した形式である。
4 の例を考える。大エンディアンデータは HEX 0000C35
0 F1F2F3F4として図15に示される。大エンディアンデ
ータ704 は小エンディアンデータ703 の大エンディアン
形式である (即ち、データの各片は同じものを意味する
が、それらの記憶は全く異なる)。 この例では、ブロッ
ク785 でページテーブルエントリ721 の検査の結果はイ
エスである。よって、オペレーティングシステム165 は
(ブロック787 で) 新しいメモリページ706 を割振る。
そしてオペレーティングシステム165 は大エンディアン
データ704 を新しいメモリページ706 に直にコピーする
(ブロック789)。次にオペレーティングシステム165 は
ブロック791 でリフレクタ174 を呼出す。リフレクタ17
4 は、図4に記述されたパワーPC規則及び付随するテキ
ストにより、大エンディアンデータ704 の適切な反映を
実行する。大エンディアンデータ704 は、それが反映さ
れた後、メインメモリページ709 に直にコピーされる
(ブロック797)。RFI 命令 (ブロック782A) は延期され
たタスクの実行をそのタスクのエンディアンで再開始す
る。そしてタスクは、最初にページ不在を起こした命令
を再実行し、メモリページ709 にある大エンディアンデ
ータ704 は反映回路121 によりキャッシュ行713 に反映
される。最後の反映は、大エンディアンデータ704 がキ
ャッシュメモリ103 のキャッシュ行713 に、パワーPCア
ーキテクチャで要求されるのと同じ形式(即ち、補助記
憶装置内と同じ形式) で現われるように、前の反映を逆
転させる作用を有する。同様に、キャッシュ行712 の内
容は補助記憶装置の形式が反映された形式である。これ
もパワーPCアーキテクチャが要求した形式である。
【0071】ここで、データは要求元のタスクによるア
クセスのためにキャッシュメモリ103 で入手できる。し
かしながら、それぞれのデータは、実行中のタスクがた
またま大エンディアンタスクであるか又は小エンディア
ンタスクであるかに関係なく、キャッシュメモリ103 に
適切な (即ち、小エンディアンデータのケースでは反映
され、そして大エンディアンデータのケースでは反映さ
れない) フォーマットで現われる。
クセスのためにキャッシュメモリ103 で入手できる。し
かしながら、それぞれのデータは、実行中のタスクがた
またま大エンディアンタスクであるか又は小エンディア
ンタスクであるかに関係なく、キャッシュメモリ103 に
適切な (即ち、小エンディアンデータのケースでは反映
され、そして大エンディアンデータのケースでは反映さ
れない) フォーマットで現われる。
【0072】[共有アドレス指定のシングルアライアシ
ング形式]これまでに説明した実施例はどちらもデータ
共有の問題を明白には説明していない。しかしながら、
それらは暗に図17のモデルを仮定する。始めに、最も
簡単な可能な抜取りで、システム内の各タスクはそれ自
身の、別個のアドレス空間を有するであろう (図16参
照)。 即ち、各タスクはそれ自身の、別個の仮想アドレ
ス空間を有し、そのページは、システム内の全ての他の
タスクと完全に分離する。しかしながら、図16の単純
化された方式は今日のコンピュータシステムでは全く実
際的ではない。理由を1つだけ挙げると、多くの、さも
なければ大抵の今日のプログラムは再入可能である。こ
れは (オペレーティングシステムにより正しくセットア
ップされた場合)、 所与のプログラムの1つのコピー
は、同じプログラムを実行する任意の数のタスクにより
使用できることを意味する。それによる節約は非常に大
きいので、殆ど全ての既存のオペレーティングシステム
はそれら自身で再入可能能力を利用するように組織化す
る。データを共有することもできる。
ング形式]これまでに説明した実施例はどちらもデータ
共有の問題を明白には説明していない。しかしながら、
それらは暗に図17のモデルを仮定する。始めに、最も
簡単な可能な抜取りで、システム内の各タスクはそれ自
身の、別個のアドレス空間を有するであろう (図16参
照)。 即ち、各タスクはそれ自身の、別個の仮想アドレ
ス空間を有し、そのページは、システム内の全ての他の
タスクと完全に分離する。しかしながら、図16の単純
化された方式は今日のコンピュータシステムでは全く実
際的ではない。理由を1つだけ挙げると、多くの、さも
なければ大抵の今日のプログラムは再入可能である。こ
れは (オペレーティングシステムにより正しくセットア
ップされた場合)、 所与のプログラムの1つのコピー
は、同じプログラムを実行する任意の数のタスクにより
使用できることを意味する。それによる節約は非常に大
きいので、殆ど全ての既存のオペレーティングシステム
はそれら自身で再入可能能力を利用するように組織化す
る。データを共有することもできる。
【0073】ずっと多く起こりうるのは "図17"の状
況である。各タスクが有するアドレス空間は、マシンア
ーキテクチャにより定義された完全な "仮想アドレス"
空間(601パワーPCプロセッサの2番目から32番目までの
バイト) を含む。タスクのコードの大部分はなお、それ
がそれ自身への完全なアドレス空間を有するという思い
違いの下に動作することがある。しかしながら、タスク
のコードの幾つかは、記憶装置の一部の下位セットがタ
スク間で共有されることを認めて引き続き管理する。こ
れには多くの変形があるが、説明のためのみには、最大
16の仮想アドレスセグメントを含むタスクのアドレス空
間を記述すれば十分である。従って、所与のタスクはそ
の中に最大16の論理的に分離したエンティティを有する
アドレス空間を有することができ、その幾つかはこのタ
スクに特有であり、そしてその幾つかはシステム内の全
てのタスクと、又はタスクの幾つかの協同する下位セッ
トと共有できる。
況である。各タスクが有するアドレス空間は、マシンア
ーキテクチャにより定義された完全な "仮想アドレス"
空間(601パワーPCプロセッサの2番目から32番目までの
バイト) を含む。タスクのコードの大部分はなお、それ
がそれ自身への完全なアドレス空間を有するという思い
違いの下に動作することがある。しかしながら、タスク
のコードの幾つかは、記憶装置の一部の下位セットがタ
スク間で共有されることを認めて引き続き管理する。こ
れには多くの変形があるが、説明のためのみには、最大
16の仮想アドレスセグメントを含むタスクのアドレス空
間を記述すれば十分である。従って、所与のタスクはそ
の中に最大16の論理的に分離したエンティティを有する
アドレス空間を有することができ、その幾つかはこのタ
スクに特有であり、そしてその幾つかはシステム内の全
てのタスクと、又はタスクの幾つかの協同する下位セッ
トと共有できる。
【0074】本発明の混合エンディアンシステムでは、
小エンディアンタスクが大エンディアンの仮想アドレス
セグメント内のデータのアクセスを要するときに何が起
きるかについて問題が起きる。
小エンディアンタスクが大エンディアンの仮想アドレス
セグメント内のデータのアクセスを要するときに何が起
きるかについて問題が起きる。
【0075】写像と呼ばれるプロセスにより、所与の仮
想アドレスセグメントは、あるセグメントの存在を発見
した要求元タスクのアドレス空間内の所与のセグメント
と関連づけられ、そしてそれをアドレス指定することを
許される。写像が実行された後、そのセグメントはその
タスクのアドレス空間の一部であり、そして通常のアド
レス変換機構によりアクセスできるので、通常のデータ
参照が実行される。
想アドレスセグメントは、あるセグメントの存在を発見
した要求元タスクのアドレス空間内の所与のセグメント
と関連づけられ、そしてそれをアドレス指定することを
許される。写像が実行された後、そのセグメントはその
タスクのアドレス空間の一部であり、そして通常のアド
レス変換機構によりアクセスできるので、通常のデータ
参照が実行される。
【0076】同じエンディアンで動作するタスクにより
所与の仮想アドレスセグメントが常に参照されるように
オペレーティングシステムが仕事を制限する場合、図1
7のモデルはタスク間で共有するデータを吟味するのに
全く十分であり、データは常に正しく反映される (又は
反映されない) ので、動作は正常に進行する。例示で
は、2つの小エンディアンアドレス空間は小エンディア
ン仮想アドレスセグメント (例えば、827)を共有し、又
はそれら自身の処理に専用されるセグメント (例えば、
821 又は822)を有する。同じエンディアンのタスクの間
にのみデータ共有が起きる。オペレーティングシステム
はセグメントの制御構造にあるエンディアンビットを単
にセグメント毎に関連付ける必要があることに留意する
だけでよい。これは容易に行われる。セグメントが生成
されたとき、それを生成したタスクのMSR にあるLE値に
注目するだけでよい。この環境では、どちらのエンディ
アンにおいてもタスクを指名できるが、エンディアンを
横切って (即ち、異なったエンディアンのアドレス空間
を横切って) データを直に共有できないような非常に制
限された混合エンディアン環境がある。ページテーブル
ビットはページテーブル内のそれらの関連セグメントビ
ットから正しく記録できるが、これは主として、低レベ
ルI/O コードがI/O DMA 動作でデータを反映するか否か
を決定できることを保証するために、I/O 処理を支援す
るためである。
所与の仮想アドレスセグメントが常に参照されるように
オペレーティングシステムが仕事を制限する場合、図1
7のモデルはタスク間で共有するデータを吟味するのに
全く十分であり、データは常に正しく反映される (又は
反映されない) ので、動作は正常に進行する。例示で
は、2つの小エンディアンアドレス空間は小エンディア
ン仮想アドレスセグメント (例えば、827)を共有し、又
はそれら自身の処理に専用されるセグメント (例えば、
821 又は822)を有する。同じエンディアンのタスクの間
にのみデータ共有が起きる。オペレーティングシステム
はセグメントの制御構造にあるエンディアンビットを単
にセグメント毎に関連付ける必要があることに留意する
だけでよい。これは容易に行われる。セグメントが生成
されたとき、それを生成したタスクのMSR にあるLE値に
注目するだけでよい。この環境では、どちらのエンディ
アンにおいてもタスクを指名できるが、エンディアンを
横切って (即ち、異なったエンディアンのアドレス空間
を横切って) データを直に共有できないような非常に制
限された混合エンディアン環境がある。ページテーブル
ビットはページテーブル内のそれらの関連セグメントビ
ットから正しく記録できるが、これは主として、低レベ
ルI/O コードがI/O DMA 動作でデータを反映するか否か
を決定できることを保証するために、I/O 処理を支援す
るためである。
【0077】図17のこれらの比較的簡単な機構を用い
るソフトウェアは図16の環境もサポートしうることに
も注目されたい。
るソフトウェアは図16の環境もサポートしうることに
も注目されたい。
【0078】この代替形式では、図13でのみ必要な変
更はアドレス空間の代わりにセグメントのLEビットから
ページテーブルエントリLEビット177 を取出すことであ
ることにも注目されたい。ページ仮想アドレス176 は暗
にセグメントアドレスを含むから、これを実行すること
は自明である。
更はアドレス空間の代わりにセグメントのLEビットから
ページテーブルエントリLEビット177 を取出すことであ
ることにも注目されたい。ページ仮想アドレス176 は暗
にセグメントアドレスを含むから、これを実行すること
は自明である。
【0079】ここで、本発明では、更に前進する要求が
あるものとする。代わりに、大エンディアンタスク及び
小エンディアンタスクの間で共有されるセグメントの要
求があるものとする。その場合、 "シングルアライアシ
ング" モデルが用いられる。このモードでは、図18の
環境が用いられる。生成するタスクのLE値により所与の
セグメントが生成される (特別なインタフェースがエン
ディアンビットを直に指定できる限り、単エンディアン
環境から持込まれた典型的なインタフェースはそうしな
くてもよい)。 図17の場合のように、そのセグメント
に関連したエンディアンビットが記憶される。しかしな
がら、図17の環境と異なり、他のエンディアンのタス
クを表わすアドレス空間にセグメントを写像することが
できる。セグメントの "仮想アドレス" は普通のパワー
PC仮想アドレスであるから、それはアーキテクチャが要
求する通常の方法でリンクされ、アドレス指定可能にな
る。大エンディアンタスク及び小エンディアンタスクの
両者はいまセグメント内のどのロケーションでもアドレ
ス指定でき、そして共有セグメント内のデータをアクセ
スする。しかしながら、それが正確に行われる方法は説
明を要する。
あるものとする。代わりに、大エンディアンタスク及び
小エンディアンタスクの間で共有されるセグメントの要
求があるものとする。その場合、 "シングルアライアシ
ング" モデルが用いられる。このモードでは、図18の
環境が用いられる。生成するタスクのLE値により所与の
セグメントが生成される (特別なインタフェースがエン
ディアンビットを直に指定できる限り、単エンディアン
環境から持込まれた典型的なインタフェースはそうしな
くてもよい)。 図17の場合のように、そのセグメント
に関連したエンディアンビットが記憶される。しかしな
がら、図17の環境と異なり、他のエンディアンのタス
クを表わすアドレス空間にセグメントを写像することが
できる。セグメントの "仮想アドレス" は普通のパワー
PC仮想アドレスであるから、それはアーキテクチャが要
求する通常の方法でリンクされ、アドレス指定可能にな
る。大エンディアンタスク及び小エンディアンタスクの
両者はいまセグメント内のどのロケーションでもアドレ
ス指定でき、そして共有セグメント内のデータをアクセ
スする。しかしながら、それが正確に行われる方法は説
明を要する。
【0080】パワーPCアーキテクチャでは、付録Dに記
載のように、明確な帰結がある。このアーキテクチャは
"パワーPCエンディアン" と呼ばれるフォーマットを記
述する。それは、小エンディアン規則 (LE 129が1であ
る) の下に生成されたデータが単にLEビットを0にする
ことによりアクセスされる場合に、その結果が単にアド
レス変更をオフにすることを記述する方法である。従っ
て、これらのアドレス指定規則の下で小エンディアンモ
ードで生成されたデータをアクセスする大エンディアン
タスクは小エンディアンデータを調べず、それはそのダ
ブルワードの反映されたフォーマットのデータ、実際に
は、間違ったオフセットの大エンディアンデータを調べ
る。これらの規則の下に交差エンディアンアクセスを行
うために、プログラマの、小エンディアンデータをアク
セスする大エンディアンコードは、位置合わせされたデ
ータに関するアドレス変更及び他の、位置合わせされて
いないデータに関する類似の既知の動作 (説明せず) を
手動で実行する (即ち、図5の動作を実行する) 必要が
ある。実際、プログラマはデータがダブルワードの反映
されたフォーマットであることを "手動で" 考慮しなけ
ればならない。
載のように、明確な帰結がある。このアーキテクチャは
"パワーPCエンディアン" と呼ばれるフォーマットを記
述する。それは、小エンディアン規則 (LE 129が1であ
る) の下に生成されたデータが単にLEビットを0にする
ことによりアクセスされる場合に、その結果が単にアド
レス変更をオフにすることを記述する方法である。従っ
て、これらのアドレス指定規則の下で小エンディアンモ
ードで生成されたデータをアクセスする大エンディアン
タスクは小エンディアンデータを調べず、それはそのダ
ブルワードの反映されたフォーマットのデータ、実際に
は、間違ったオフセットの大エンディアンデータを調べ
る。これらの規則の下に交差エンディアンアクセスを行
うために、プログラマの、小エンディアンデータをアク
セスする大エンディアンコードは、位置合わせされたデ
ータに関するアドレス変更及び他の、位置合わせされて
いないデータに関する類似の既知の動作 (説明せず) を
手動で実行する (即ち、図5の動作を実行する) 必要が
ある。実際、プログラマはデータがダブルワードの反映
されたフォーマットであることを "手動で" 考慮しなけ
ればならない。
【0081】アドレス空間802 に関連したタスクの下に
実行中であり且つ共有セグメントVa505(827)のアクセス
を望んでいる大エンディアンプログラムを考える(図1
8)。仮想アドレスセグメントVa505(827)は小エンディ
アンセグメントであり(835でle=1) 且つそのページは前
述の小エンディアンデータページのように管理される。
従って、Va505 を写像するアドレス空間で任意のオフセ
ットの参照を実行する大エンディアンプログラムにより
参照されたとき (アドレスマップリスト820 に暗に示さ
れているように、801 で16進数の仮想アドレス範囲3000
0000〜3FFFFFFFにそれを写像することによりアクセスさ
れたとき)、 それはダブルワードが反映されたフォーマ
ットで調べられる。
実行中であり且つ共有セグメントVa505(827)のアクセス
を望んでいる大エンディアンプログラムを考える(図1
8)。仮想アドレスセグメントVa505(827)は小エンディ
アンセグメントであり(835でle=1) 且つそのページは前
述の小エンディアンデータページのように管理される。
従って、Va505 を写像するアドレス空間で任意のオフセ
ットの参照を実行する大エンディアンプログラムにより
参照されたとき (アドレスマップリスト820 に暗に示さ
れているように、801 で16進数の仮想アドレス範囲3000
0000〜3FFFFFFFにそれを写像することによりアクセスさ
れたとき)、 それはダブルワードが反映されたフォーマ
ットで調べられる。
【0082】対照的に、図18の環境でアドレス空間80
1 に関連したタスクの下に実行中の小エンディアンプロ
グラムは正規の小エンディアンデータを調べるので、従
来の参照を行う。これは、前のように、仮想アドレスセ
グメント827 に関連した全てのページのleビット1に等
しく(835参照)、 そしてパワーPCアーキテクチャが要求
したように小エンディアンページが期待したダブルワー
ドが反映したフォーマットであるためである。これは、
各ページが生成されているとき、 (最初にアドレス空間
801 に関連したタスクの下に実行中の小エンディアンプ
ログラムの命令であってもアドレス空間802 に関連した
タスクの下に実行中の大エンディアンプログラムの命令
であっても) 835 のleビット値1が全てのページテーブ
ルエントリに伝達されるためである。
1 に関連したタスクの下に実行中の小エンディアンプロ
グラムは正規の小エンディアンデータを調べるので、従
来の参照を行う。これは、前のように、仮想アドレスセ
グメント827 に関連した全てのページのleビット1に等
しく(835参照)、 そしてパワーPCアーキテクチャが要求
したように小エンディアンページが期待したダブルワー
ドが反映したフォーマットであるためである。これは、
各ページが生成されているとき、 (最初にアドレス空間
801 に関連したタスクの下に実行中の小エンディアンプ
ログラムの命令であってもアドレス空間802 に関連した
タスクの下に実行中の大エンディアンプログラムの命令
であっても) 835 のleビット値1が全てのページテーブ
ルエントリに伝達されるためである。
【0083】ここで、写像されないVa505 及び代わりに
写像されたエンディアンセグメントVa504(847)を有する
ことを除いて、同じアドレス空間801 及び802 を有する
図19を考える。
写像されたエンディアンセグメントVa504(847)を有する
ことを除いて、同じアドレス空間801 及び802 を有する
図19を考える。
【0084】これは "エンディアン" 状況を逆にする。
845 でのle=0の変更値により、オペレーティングシステ
ムは、この時点で、801 及び802 の両ページの16進アド
レス30000000〜3FFFFFFF の範囲にある全てのページ
を、大エンディアン規則の下にページングする。従っ
て、アドレス空間802 の下に大エンディアンプログラム
を実行するタスクは通常の大エンディアンデータを調
べ、そして従来の参照を行う。しかし、小エンディアン
についてはどうか?。
845 でのle=0の変更値により、オペレーティングシステ
ムは、この時点で、801 及び802 の両ページの16進アド
レス30000000〜3FFFFFFF の範囲にある全てのページ
を、大エンディアン規則の下にページングする。従っ
て、アドレス空間802 の下に大エンディアンプログラム
を実行するタスクは通常の大エンディアンデータを調
べ、そして従来の参照を行う。しかし、小エンディアン
についてはどうか?。
【0085】対称的に、小エンディアンプログラマはア
ドレス変更の手動による "取消し"を、手動でそれを実
行することにより、行わなければならないのは、ハード
ウェアがなおそれを実行するからである。この変更は対
称的な排他的OR機能であるから、その結果に正味の変更
はない。よって、le値がそれらのMSR LEビット(129)の
値と異なるデータをアクセスするとき、両プログラムは
同じ変更を実行し且つ異なるオフセットで正しいデータ
をアクセスする。
ドレス変更の手動による "取消し"を、手動でそれを実
行することにより、行わなければならないのは、ハード
ウェアがなおそれを実行するからである。この変更は対
称的な排他的OR機能であるから、その結果に正味の変更
はない。よって、le値がそれらのMSR LEビット(129)の
値と異なるデータをアクセスするとき、両プログラムは
同じ変更を実行し且つ異なるオフセットで正しいデータ
をアクセスする。
【0086】これはたぶん、図13のキャッシュ行612
からの小エンディアンデータをアクセスする大エンディ
アンプログラムが考慮された場合には、最も明白に調べ
られる。これは図18で仮想アドレスセグメントVa505
(827)の特定のキャッシュ行における状況を調べる別の
方法である。XOR 4 を実行することにより、16進数の値
0000C350は正しくアクセスされる。XOR 6 を実行するこ
とにより、16進数の値F1F2は正しくアクセスされる (図
13の612 にある603 と606 にある603 を比較する)。
セグメント及びページテーブルにあるエンディアンビッ
トは正しく追跡されるから、たとえ大エンディアンによ
り参照されたときでも、図11乃至図13の処理は同じ
結果を生ずるので、データは、この交差エンディアン参
照を除き、同じであると見られ、アドレス変更はない。
同様に、(図19で説明した)大エンディアンデータを読
取ることを望む小エンディアンタスクはその期待された
アドレス(オフセット0)によりXOR 4 を実行する。これ
はハードウェアで再びXOR 4を実行し、キャッシュ行613
にある604から 0000C350 をアクセスし、そしてプログ
ラムはXOR 6 を実行し、612にある603からF1F2をアクセ
スするが、ハードウェアは提示されたアドレスでXOR 6
を再実行する(609にある604を613にある604 と比較し、
そしてハードウェアもプログラマが提示したアドレスで
XOR 4 又はXOR6 を実行することも考慮することを想起
されたい−図13参照)。
からの小エンディアンデータをアクセスする大エンディ
アンプログラムが考慮された場合には、最も明白に調べ
られる。これは図18で仮想アドレスセグメントVa505
(827)の特定のキャッシュ行における状況を調べる別の
方法である。XOR 4 を実行することにより、16進数の値
0000C350は正しくアクセスされる。XOR 6 を実行するこ
とにより、16進数の値F1F2は正しくアクセスされる (図
13の612 にある603 と606 にある603 を比較する)。
セグメント及びページテーブルにあるエンディアンビッ
トは正しく追跡されるから、たとえ大エンディアンによ
り参照されたときでも、図11乃至図13の処理は同じ
結果を生ずるので、データは、この交差エンディアン参
照を除き、同じであると見られ、アドレス変更はない。
同様に、(図19で説明した)大エンディアンデータを読
取ることを望む小エンディアンタスクはその期待された
アドレス(オフセット0)によりXOR 4 を実行する。これ
はハードウェアで再びXOR 4を実行し、キャッシュ行613
にある604から 0000C350 をアクセスし、そしてプログ
ラムはXOR 6 を実行し、612にある603からF1F2をアクセ
スするが、ハードウェアは提示されたアドレスでXOR 6
を再実行する(609にある604を613にある604 と比較し、
そしてハードウェアもプログラマが提示したアドレスで
XOR 4 又はXOR6 を実行することも考慮することを想起
されたい−図13参照)。
【0087】[オペレーティングシステム]オペレーテ
ィングシステム (実際には一定のエンディアンである)
はそれに反対のエンディアンのタスクから来るデータの
参照も管理しなければならない。
ィングシステム (実際には一定のエンディアンである)
はそれに反対のエンディアンのタスクから来るデータの
参照も管理しなければならない。
【0088】われわれは (図18及び図19の討議のお
かげで) オペレーティングシステムはどちらかのエンデ
ィアンであることを想定できるから、図18又は図19
の状況はこの関係を記述するのに十分である。従って、
(エラーにより又はオペレーティングシステムサービス
のアクセスを意味するある監視プログラム呼出しによ
り) アプリケーションプログラムが監視プログラムの開
始を望むときはいつでも、オペレーティングシステム
は、1つの方法又は別の方法で、要求 (即ちエラーの場
合には失敗した命令) の詳細を有するセグメントを、そ
れ自身のアドレス空間に写像する。よって、それは "賛
成できない" エンディアンの役割 (例えば、図18でア
プリケーションの小エンディアンデータを操作する大エ
ンディアンオペレーティングシステムの前述のアドレス
空間802 に割当てられたタスク、又は図19で大エンデ
ィアンデータを操作するアドレス空間801 に割当てられ
たタスクの役割) を引受けることができる。
かげで) オペレーティングシステムはどちらかのエンデ
ィアンであることを想定できるから、図18又は図19
の状況はこの関係を記述するのに十分である。従って、
(エラーにより又はオペレーティングシステムサービス
のアクセスを意味するある監視プログラム呼出しによ
り) アプリケーションプログラムが監視プログラムの開
始を望むときはいつでも、オペレーティングシステム
は、1つの方法又は別の方法で、要求 (即ちエラーの場
合には失敗した命令) の詳細を有するセグメントを、そ
れ自身のアドレス空間に写像する。よって、それは "賛
成できない" エンディアンの役割 (例えば、図18でア
プリケーションの小エンディアンデータを操作する大エ
ンディアンオペレーティングシステムの前述のアドレス
空間802 に割当てられたタスク、又は図19で大エンデ
ィアンデータを操作するアドレス空間801 に割当てられ
たタスクの役割) を引受けることができる。
【0089】たとえ仮想アドレス指定が禁止される "
実" モードでオペレーティングシステムが動作している
場合でも、この同じ役割が当業者に明白な方法で当ては
まるのは、それがなお上記賛成できないエンディアンに
関して説明したように動作する必要があるためである。
実" モードでオペレーティングシステムが動作している
場合でも、この同じ役割が当業者に明白な方法で当ては
まるのは、それがなお上記賛成できないエンディアンに
関して説明したように動作する必要があるためである。
【0090】オペレーティングシステムは、非常に複雑
な場合には、たぶんオペレーティングシステムの一部に
異なるエンディアンのものを含む非常に多様な内部関係
を持ちうることを当業者は理解するであろう。それにも
かかわらず、当業者は前記状況に適合するように上記機
構を拡張する方法を理解するであろう。
な場合には、たぶんオペレーティングシステムの一部に
異なるエンディアンのものを含む非常に多様な内部関係
を持ちうることを当業者は理解するであろう。それにも
かかわらず、当業者は前記状況に適合するように上記機
構を拡張する方法を理解するであろう。
【0091】[サーバー動作]従来のサーバー (例え
ば、サーバー190 の少なくとも1つ) は1つのエンディ
アンの下に動作するこれらの環境でも書込むことができ
る。即ち、それらは、任意の適切な手段により、擬似I/
O 動作のような要求を、任意の数の顧客要求者から受取
ることができる。従来のサーバーは単に全ての前記要求
がそのサーバーの同じエンディアンを共有するタスクか
ら来ることを要求する。
ば、サーバー190 の少なくとも1つ) は1つのエンディ
アンの下に動作するこれらの環境でも書込むことができ
る。即ち、それらは、任意の適切な手段により、擬似I/
O 動作のような要求を、任意の数の顧客要求者から受取
ることができる。従来のサーバーは単に全ての前記要求
がそのサーバーの同じエンディアンを共有するタスクか
ら来ることを要求する。
【0092】しかしながら、拡張サーバーは図18及び
図19の規則を利用すること、そして反対のエンディア
ンの顧客にも役立つことを望むであろう。そのために、
顧客も前述のオペレーティングシステムの全く同じ呼出
しを用いるであろう。オペレーティングシステムは顧客
及びサーバーのエンディアンを調べ、そしてダブルワー
ドは、前記2つが同じエンディアン (単にバイト毎のコ
ピー) に属するか又は異なるエンディアン (顧客記憶装
置からサーバーへのオペランドのダブルワード反映) に
属するか否かに基づいて、到来する顧客メッセージのコ
ピーをサーバーのアドレス空間に反映する (又は反映し
ない)。
図19の規則を利用すること、そして反対のエンディア
ンの顧客にも役立つことを望むであろう。そのために、
顧客も前述のオペレーティングシステムの全く同じ呼出
しを用いるであろう。オペレーティングシステムは顧客
及びサーバーのエンディアンを調べ、そしてダブルワー
ドは、前記2つが同じエンディアン (単にバイト毎のコ
ピー) に属するか又は異なるエンディアン (顧客記憶装
置からサーバーへのオペランドのダブルワード反映) に
属するか否かに基づいて、到来する顧客メッセージのコ
ピーをサーバーのアドレス空間に反映する (又は反映し
ない)。
【0093】サーバーが要求を持った後、それは通常の
動作でそれ自身の記憶装置に応答を形成する。データを
引渡すときが来て、通常要求されるように、オペレーテ
ィングシステムを用いてアドレス空間の間でデータを移
動したとき、検査を行う必要がある。データが "他の"
エンディアンに送られる場合、サーバー及び顧客の間で
ダブルワード反映が行われ、顧客の結果がメモリページ
に保存される。
動作でそれ自身の記憶装置に応答を形成する。データを
引渡すときが来て、通常要求されるように、オペレーテ
ィングシステムを用いてアドレス空間の間でデータを移
動したとき、検査を行う必要がある。データが "他の"
エンディアンに送られる場合、サーバー及び顧客の間で
ダブルワード反映が行われ、顧客の結果がメモリページ
に保存される。
【0094】この単純化されたサーバーの流れで、サー
バー及び顧客から見たデータは "逆転" した形式であ
る、即ち、メッセージ内の個々の整数が逆転される (即
ち、反対のエンディアンになる)。 従って、混合エンデ
ィアンサーバーは "エンディアンを知る" ことが必要が
ありので、オペレーティングシステムに、その動作前に
データを送った顧客の種類を尋ねる。
バー及び顧客から見たデータは "逆転" した形式であ
る、即ち、メッセージ内の個々の整数が逆転される (即
ち、反対のエンディアンになる)。 従って、混合エンデ
ィアンサーバーは "エンディアンを知る" ことが必要が
ありので、オペレーティングシステムに、その動作前に
データを送った顧客の種類を尋ねる。
【0095】しかしながら、サーバー及び正しい形式の
インタフェースが真に拡張された場合、新たな拡張が可
能である。多くの場合、サーバーは (それがデータ構造
について必要な知識を有するであろうから) 個々の応答
のフィールドを逆転できるであろう。この場合、サーバ
ーは顧客のエンディアンを調べる必要があり、そして顧
客は異なるエンディアンのサーバーを明白にアクセスし
うるであろう。
インタフェースが真に拡張された場合、新たな拡張が可
能である。多くの場合、サーバーは (それがデータ構造
について必要な知識を有するであろうから) 個々の応答
のフィールドを逆転できるであろう。この場合、サーバ
ーは顧客のエンディアンを調べる必要があり、そして顧
客は異なるエンディアンのサーバーを明白にアクセスし
うるであろう。
【0096】"顧客" 及び "サーバー"は本明細書では産
業規格の意味を持つが、上記開示された機構は異なるエ
ンディアンのタスク間の多くの他の関係にも当てはまる
ことを当業者は容易に理解するであろう。
業規格の意味を持つが、上記開示された機構は異なるエ
ンディアンのタスク間の多くの他の関係にも当てはまる
ことを当業者は容易に理解するであろう。
【0097】[割込み処理]上記のように、LEビット
は、現在のソフトウェアタスクのエンディアンが小エン
ディアンである場合には常にセットされており、現在の
ソフトウェアタスクが大エンディアンである場合には常
にクリアされる。
は、現在のソフトウェアタスクのエンディアンが小エン
ディアンである場合には常にセットされており、現在の
ソフトウェアタスクが大エンディアンである場合には常
にクリアされる。
【0098】初期化に際し、コンピュータシステム100
は既知のエンディアンで開始する。初期化中、オペレー
ティングシステムは一般に割込みハンドラ171 が要求し
たエンディアンを (割込みハンドラ171 が大エンディア
ンタスクであるか又は小エンディアンタスクであるかに
関係なく) 示すためにILE ビット127 をセットする。プ
ロセッサ101 はいつでも割込み処理を要求できるので、
ILE ビット127 は割込み処理のために必要である。現在
のソフトウェアタスクから割込みハンドラ171への状況
切換えの間に、現在のソフトウェアタスクは割込みハン
ドラ171 のものと異なるエンディアンで実行しているか
どうかの問題が起きる。状況切換えの間、制御はアトミ
ック的に現在のソフトウェアタスクから割込みハンドラ
171 に引渡されるので、プロセッサ101 もデータエンデ
ィアン変換が実行されるか否かに関係なくアトミック的
に変化する。本発明のILE ビット127 により、プロセッ
サは、割込みハンドラ171 がプロセッサ101 の制御を有
する間の状況切換え中にメインメモリ内のデータを正し
く解釈できる。
は既知のエンディアンで開始する。初期化中、オペレー
ティングシステムは一般に割込みハンドラ171 が要求し
たエンディアンを (割込みハンドラ171 が大エンディア
ンタスクであるか又は小エンディアンタスクであるかに
関係なく) 示すためにILE ビット127 をセットする。プ
ロセッサ101 はいつでも割込み処理を要求できるので、
ILE ビット127 は割込み処理のために必要である。現在
のソフトウェアタスクから割込みハンドラ171への状況
切換えの間に、現在のソフトウェアタスクは割込みハン
ドラ171 のものと異なるエンディアンで実行しているか
どうかの問題が起きる。状況切換えの間、制御はアトミ
ック的に現在のソフトウェアタスクから割込みハンドラ
171 に引渡されるので、プロセッサ101 もデータエンデ
ィアン変換が実行されるか否かに関係なくアトミック的
に変化する。本発明のILE ビット127 により、プロセッ
サは、割込みハンドラ171 がプロセッサ101 の制御を有
する間の状況切換え中にメインメモリ内のデータを正し
く解釈できる。
【0099】本発明の混合エンディアンコンピュータシ
ステムの良好な割込み処理方法が図20に示される。プ
ロセッサ101 はブロック903 で割込み要求を受取る。状
況切換えの部分として、MSR 105 が一時的にロケーショ
ンに記憶される (ブロック905)。高度にパイプラインさ
れたマシンでデータ取出し及び記憶がうまく変換されて
いるが、実際の処理 (例えば、図12のブロック693参
照)は少なくとも1つの動作についてなお保留されてい
ることがある。もしそうなら、プロセッサ101 は前記動
作が終了するのを待つ (ブロック906)。ILE ビット127
はLEビット129 にコピーされる (ブロック907)。そして
任意の前のメモリ動作はILE ビット127 がLEビット129
にコピーされる前に終了しているべきであり、そしてLE
ビット129の新しい値が次のメモリ取出しを制御しなけ
ればならないことにも再び注目されたい。即ち、LEビッ
ト129 の値の変更はアトミック的である。これは、2エ
ンディアン及び非混合エンディアン規則を設計する設計
者がプロセッサを、故意に又は偶然にこれらの混合エン
ディアン要求に適合しないように、ある経路で設計する
ことがあるという重要な観察のほかは、現在のプロセッ
サにより共通に処理される他の典型的な割込みのための
割込み処理に類似する。信頼できる混合エンディアンコ
ンピュータシステムは全ての経路及びキャッシュ最適化
が上記のアトミック性要求に適合することを保証しなけ
ればならない。2エンディアンは1つの良好に与えられ
た割込みについてのみこれらの要求に適合する必要があ
る。ひとたび割込みルーチンが走行すれば、取出し及び
記憶はLEビット129 の新しい値を用いて上記のように
(即ち、図11乃至図13で説明したように) 行われ
る。
ステムの良好な割込み処理方法が図20に示される。プ
ロセッサ101 はブロック903 で割込み要求を受取る。状
況切換えの部分として、MSR 105 が一時的にロケーショ
ンに記憶される (ブロック905)。高度にパイプラインさ
れたマシンでデータ取出し及び記憶がうまく変換されて
いるが、実際の処理 (例えば、図12のブロック693参
照)は少なくとも1つの動作についてなお保留されてい
ることがある。もしそうなら、プロセッサ101 は前記動
作が終了するのを待つ (ブロック906)。ILE ビット127
はLEビット129 にコピーされる (ブロック907)。そして
任意の前のメモリ動作はILE ビット127 がLEビット129
にコピーされる前に終了しているべきであり、そしてLE
ビット129の新しい値が次のメモリ取出しを制御しなけ
ればならないことにも再び注目されたい。即ち、LEビッ
ト129 の値の変更はアトミック的である。これは、2エ
ンディアン及び非混合エンディアン規則を設計する設計
者がプロセッサを、故意に又は偶然にこれらの混合エン
ディアン要求に適合しないように、ある経路で設計する
ことがあるという重要な観察のほかは、現在のプロセッ
サにより共通に処理される他の典型的な割込みのための
割込み処理に類似する。信頼できる混合エンディアンコ
ンピュータシステムは全ての経路及びキャッシュ最適化
が上記のアトミック性要求に適合することを保証しなけ
ればならない。2エンディアンは1つの良好に与えられ
た割込みについてのみこれらの要求に適合する必要があ
る。ひとたび割込みルーチンが走行すれば、取出し及び
記憶はLEビット129 の新しい値を用いて上記のように
(即ち、図11乃至図13で説明したように) 行われ
る。
【0100】ブロック921 で割込み処理が終了したの
ち、ブロック923 でMSR 105 が復元される。そしてプロ
セッサ101 はブロック925 で未終了の取出し及び記憶の
終了を待つ。そして現在のソフトウェアタスクの実行は
状況切換え前の点で続行する。上記のように、LEの古い
値から新しい値への変更はどれもアトミック的でなけれ
ばならない。記憶されたMSR を復元し、割込まれた命令
の割込み処理からアトミック的に再開始する割込み命令
からの復帰があることが想定される。
ち、ブロック923 でMSR 105 が復元される。そしてプロ
セッサ101 はブロック925 で未終了の取出し及び記憶の
終了を待つ。そして現在のソフトウェアタスクの実行は
状況切換え前の点で続行する。上記のように、LEの古い
値から新しい値への変更はどれもアトミック的でなけれ
ばならない。記憶されたMSR を復元し、割込まれた命令
の割込み処理からアトミック的に再開始する割込み命令
からの復帰があることが想定される。
【0101】[一般的な適用可能性]重要なことは、上
記の例は回転ディスクのような補助記憶装置に記憶され
たデータの使用を要したが、本発明はその適用可能性が
このタイプの記憶装置に限定されないことである。実
際、本発明は1つのコンピュータシステムで又はこのシ
ステムに大エンディアン及び小エンディアンの両者のデ
ータを記憶し又は伝達するどの手段にも等しく適用され
ることを当業者は認識し理解するであろう。
記の例は回転ディスクのような補助記憶装置に記憶され
たデータの使用を要したが、本発明はその適用可能性が
このタイプの記憶装置に限定されないことである。実
際、本発明は1つのコンピュータシステムで又はこのシ
ステムに大エンディアン及び小エンディアンの両者のデ
ータを記憶し又は伝達するどの手段にも等しく適用され
ることを当業者は認識し理解するであろう。
【0102】例えば、本明細書に開示された混合エンデ
ィアンコンピュータシステムの実施例は、バス接続され
たコンピュータシステム又はプロセッサ間でデータが引
渡された環境でも同様に実行するのは、結局は、引渡さ
れたデータが大エンディアンプログラム155及び(又は)
小エンディアンプログラム160によりキャッシュメモリ1
03及びメインメモリ109にもロードされるためである。
同様に、通信インタフェース147を介して外部のコンピ
ュータネットワークから受取られたデータも大エンディ
アンプログラム155及び(又は)小エンディアンプログラ
ム160によりキャッシュメモリ103及びメインメモリ109
にロードされる必要があるであろう。
ィアンコンピュータシステムの実施例は、バス接続され
たコンピュータシステム又はプロセッサ間でデータが引
渡された環境でも同様に実行するのは、結局は、引渡さ
れたデータが大エンディアンプログラム155及び(又は)
小エンディアンプログラム160によりキャッシュメモリ1
03及びメインメモリ109にもロードされるためである。
同様に、通信インタフェース147を介して外部のコンピ
ュータネットワークから受取られたデータも大エンディ
アンプログラム155及び(又は)小エンディアンプログラ
ム160によりキャッシュメモリ103及びメインメモリ109
にロードされる必要があるであろう。
【0103】図示を簡単にするために、この明細書に示
された整数データの例は位置合わせ済のデータのみを使
用するが、本明細書に記述された着想及び手法は位置合
わせ未了のデータ (例えば、奇数アドレス境界で始まる
16ビット整数) に容易に拡張でき、そして位置合わせ未
了のデータのケースは本発明の意図及び範囲内にあるこ
とを当業者は理解するであろう。
された整数データの例は位置合わせ済のデータのみを使
用するが、本明細書に記述された着想及び手法は位置合
わせ未了のデータ (例えば、奇数アドレス境界で始まる
16ビット整数) に容易に拡張でき、そして位置合わせ未
了のデータのケースは本発明の意図及び範囲内にあるこ
とを当業者は理解するであろう。
【0104】[大エンディアン及び小エンディアンの命
令]本明細書を通じて暗示されているが、本発明の機構
を用いることにより、コンピュータシステム100 で異な
るエンディアンのタスクをどちらも実行できることが明
示されるべきである。パワーPC及び他の同様なコンピュ
ータシステムでは、大エンディアンプログラムの命令は
大エンディアンフォーマットであり、そして小エンディ
アンプログラムの命令は小エンディアンフォーマットで
あるから、小エンディアンタスクが本発明の高機能のパ
ワーPCプロセッサで実行することを可能にするために、
上記の反映及びアドレス変更が必要である。
令]本明細書を通じて暗示されているが、本発明の機構
を用いることにより、コンピュータシステム100 で異な
るエンディアンのタスクをどちらも実行できることが明
示されるべきである。パワーPC及び他の同様なコンピュ
ータシステムでは、大エンディアンプログラムの命令は
大エンディアンフォーマットであり、そして小エンディ
アンプログラムの命令は小エンディアンフォーマットで
あるから、小エンディアンタスクが本発明の高機能のパ
ワーPCプロセッサで実行することを可能にするために、
上記の反映及びアドレス変更が必要である。
【0105】メモリの将来の見通しから命令が実際には
データであると仮定すれば、大エンディアン及び小エン
ディアンの命令が本発明の機構により処理される方法
は、大エンディアン及び小エンディアンのデータが本発
明の機構により処理される方法と論理的に同じことを当
業者は理解するであろう。従って、大エンディアン及び
小エンディアンの命令の一般的な処理の細部は本明細書
では繰り返さない。しかしながら、図1には示されない
がパワーPCコンピュータシステムに含まれることが知ら
れているコンピュータシステム100 の命令キャッシュが
命令を処理するためにキャッシュメモリ103 の代わりに
用いられることは示す価値がある。命令は常に1ワード
のサイズであるから、図5に示されたXOR 4 アドレス変
更は、使用したアドレス変更のみであることも示す価値
がある。もちろん、この後者のアドレス変更ステートメ
ントは実際に使用するものの1つであり、本発明が適用
できるものの1つではない。たとえ命令のサイズが図5
に示されたサイズよりも小さいか又は大きい場合でも、
そしてたとえ命令が一定のエレメント、大エンディアン
又は小エンディアンで用いられるように設計された場合
でも、本発明は、同等のLEビットにより暗示されたエン
ディアンにあるデータのアクセスを除いて、異なるサイ
ズの命令に等しく適用されることを当業者は理解するで
あろう。
データであると仮定すれば、大エンディアン及び小エン
ディアンの命令が本発明の機構により処理される方法
は、大エンディアン及び小エンディアンのデータが本発
明の機構により処理される方法と論理的に同じことを当
業者は理解するであろう。従って、大エンディアン及び
小エンディアンの命令の一般的な処理の細部は本明細書
では繰り返さない。しかしながら、図1には示されない
がパワーPCコンピュータシステムに含まれることが知ら
れているコンピュータシステム100 の命令キャッシュが
命令を処理するためにキャッシュメモリ103 の代わりに
用いられることは示す価値がある。命令は常に1ワード
のサイズであるから、図5に示されたXOR 4 アドレス変
更は、使用したアドレス変更のみであることも示す価値
がある。もちろん、この後者のアドレス変更ステートメ
ントは実際に使用するものの1つであり、本発明が適用
できるものの1つではない。たとえ命令のサイズが図5
に示されたサイズよりも小さいか又は大きい場合でも、
そしてたとえ命令が一定のエレメント、大エンディアン
又は小エンディアンで用いられるように設計された場合
でも、本発明は、同等のLEビットにより暗示されたエン
ディアンにあるデータのアクセスを除いて、異なるサイ
ズの命令に等しく適用されることを当業者は理解するで
あろう。
【0106】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1) 従来の2エンディアンプロセッサと、前記従来の
2エンディアンプロセッサでタスク毎に大エンディアン
タスクを実行する大エンディアンプログラム及び小エン
ディアンタスクを実行する小エンディアンプログラムを
含むメモリとを備えるコンピュータシステム。
の事項を開示する。 (1) 従来の2エンディアンプロセッサと、前記従来の
2エンディアンプロセッサでタスク毎に大エンディアン
タスクを実行する大エンディアンプログラム及び小エン
ディアンタスクを実行する小エンディアンプログラムを
含むメモリとを備えるコンピュータシステム。
【図1】本発明のコンピュータシステムを示すブロック
図である。
図である。
【図2】IBM パワーPCアーキテクチャで用いるデータワ
ードサイズを示すデータ図である。
ードサイズを示すデータ図である。
【図3】大エンディアン及び小エンディアンのデータフ
ォーマットを示すデータ図である。
ォーマットを示すデータ図である。
【図4】IBM パワーPCアーキテクチャでデータがいかに
反映されるかを表わすテーブルを示す図である。
反映されるかを表わすテーブルを示す図である。
【図5】IBM パワーPCアーキテクチャで小エンディアン
アドレスがいかに変更されるかを示すデータ図である。
アドレスがいかに変更されるかを示すデータ図である。
【図6】2エンディアン、パワーPCコンピュータシステ
ムで用いる2ステップの小エンディアンプロセスを介し
て8ビットデータアイテムがいかに取出されるかを示す
データ図である。
ムで用いる2ステップの小エンディアンプロセスを介し
て8ビットデータアイテムがいかに取出されるかを示す
データ図である。
【図7】2エンディアン、パワーPCコンピュータシステ
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた16ビットデータアイテムがいか
に取出されるかを示すデータ図である。
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた16ビットデータアイテムがいか
に取出されるかを示すデータ図である。
【図8】2エンディアン、パワーPCコンピュータシステ
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた32ビットデータアイテムがいか
に取出されるかを示すデータ図である。
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた32ビットデータアイテムがいか
に取出されるかを示すデータ図である。
【図9】2エンディアン、パワーPCコンピュータシステ
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた64ビットデータアイテムがいか
に取出されるかを示すデータ図である。
ムで用いる2ステップの小エンディアンプロセスを介し
て、位置合わせされた64ビットデータアイテムがいか
に取出されるかを示すデータ図である。
【図10】2エンディアン、パワーPCコンピュータシス
テムで用いる2ステップの小エンディアンプロセスを介
して、32ビットの小エンディアン整数の下位の16ビ
ットをいかに取出しうるかを示す図である。
テムで用いる2ステップの小エンディアンプロセスを介
して、32ビットの小エンディアン整数の下位の16ビ
ットをいかに取出しうるかを示す図である。
【図11】本発明の機構が良好な実施例のステップをい
かに実行するかを示す論理流れ図である。
かに実行するかを示す論理流れ図である。
【図12】本発明の機構が良好な実施例のステップをい
かに実行するかを示す論理流れ図である。
かに実行するかを示す論理流れ図である。
【図13】図11及び図12で説明した機構により実行
されたステップの結果のデータ流れ図の例を示す図であ
る。
されたステップの結果のデータ流れ図の例を示す図であ
る。
【図14】この代替実施例のステップを本発明の機構が
いかに実行するかを示す論理流れ図である。
いかに実行するかを示す論理流れ図である。
【図15】図14で説明した機構により実行したステッ
プの結果のデータ流れ図の例を示す図である。
プの結果のデータ流れ図の例を示す図である。
【図16】良好な代替実施例で用いた共有アドレス指定
のシングルアライアシング形式を示すデータ図である。
のシングルアライアシング形式を示すデータ図である。
【図17】良好な代替実施例で用いた共有アドレス指定
のシングルアライアシング形式を示すデータ図である。
のシングルアライアシング形式を示すデータ図である。
【図18】良好な代替実施例で用いた共有アドレス指定
のシングルアライアシング形式を示すデータ図である。
のシングルアライアシング形式を示すデータ図である。
【図19】良好な代替実施例で用いた共有アドレス指定
のシングルアライアシング形式を示すデータ図である。
のシングルアライアシング形式を示すデータ図である。
【図20】良好な実施例の混合エンディアン回路が良好
な実施例の割込みハンドラーといかに対話するかを記述
する高レベルロジック図である。
な実施例の割込みハンドラーといかに対話するかを記述
する高レベルロジック図である。
100 コンピュータシステム 101 プロセッサ 103 キャッシュメモリ 105 マシン状態レジスタ(MSR) 109 メインメモリ 119 アドレス変更回路 121 反映回路 123 キャッシュアレイ 125 キャッシュアレイ 127 ILE(状況)ビット 129 LE(状況)ビット 140 補助記憶装置インタフェース 145 端末インタフェース 147 通信インタフェース 150 システムバス 155 大エンディアンプログラム 156 バイアスビット 160 小エンディアンプログラム 165 オペレーティングシステム 167 混合エンディアン処理機構 171 割込みハンドラ 173 ページ不在ハンドラ 174 リフレクタ 175 ページテーブルエントリ 176 仮想アドレス 177 大エンディアンデータ/エンディアンビット 178 実アドレス 179 小エンディアンデータ 190 サーバー
───────────────────────────────────────────────────── フロントページの続き (72)発明者 エドワード・ジョン・シルハ アメリカ合衆国テキサス州、オースティ ン、ピレニーズ11509
Claims (1)
- 【請求項1】2エンディアンプロセッサと、 前記2エンディアンプロセッサでタスク毎に大エンディ
アンタスクを実行する大エンディアンプログラム及び小
エンディアンタスクを実行する小エンディアンプログラ
ムを含むメモリとを備えるコンピュータシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/393,968 US5928349A (en) | 1995-02-24 | 1995-02-24 | Mixed-endian computing environment for a conventional bi-endian computer system |
| US393968 | 1995-02-24 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08314733A true JPH08314733A (ja) | 1996-11-29 |
Family
ID=23556991
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8026324A Pending JPH08314733A (ja) | 1995-02-24 | 1996-02-14 | 2つのエンディアンをサポートするコンピュータシステム及び方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (3) | US5928349A (ja) |
| EP (1) | EP0729094A1 (ja) |
| JP (1) | JPH08314733A (ja) |
| KR (1) | KR100239028B1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011186545A (ja) * | 2010-03-04 | 2011-09-22 | Nec Corp | メモリデータベースシステム、高速化方法、および、プログラム |
| JP2014179107A (ja) * | 2008-09-12 | 2014-09-25 | Renesas Electronics Corp | 半導体集積回路装置 |
Families Citing this family (57)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5778406A (en) * | 1995-06-30 | 1998-07-07 | Thomson Consumer Electronics, Inc. | Apparatus for delivering CPU independent data for little and big endian machines |
| US6021275A (en) * | 1996-08-05 | 2000-02-01 | General Magic, Inc. | Object code structure and method for translation of architecture independent program implementations |
| US6061779A (en) * | 1998-01-16 | 2000-05-09 | Analog Devices, Inc. | Digital signal processor having data alignment buffer for performing unaligned data accesses |
| US6295561B1 (en) * | 1998-06-30 | 2001-09-25 | At&T Corp | System for translating native data structures and specific message structures by using template represented data structures on communication media and host machines |
| EP1119805B8 (en) * | 1998-10-10 | 2006-05-03 | Transitive Limited | Endian transformation |
| KR100283412B1 (ko) * | 1998-12-15 | 2001-03-02 | 김영환 | 프레임버퍼의 인터페이스 제어장치 |
| FR2795573B1 (fr) * | 1999-06-25 | 2001-11-30 | Inst Nat Rech Inf Automat | Dispositif de gestion d'echanges de donnees entre materiels informatiques |
| US6850990B1 (en) * | 1999-07-14 | 2005-02-01 | Landesk Software Limited | Transfer of synchronized data from 16-bit code to a 32-bit process |
| US6691307B2 (en) * | 1999-08-03 | 2004-02-10 | Sun Microsystems, Inc. | Interpreter optimization for native endianness |
| US6477699B1 (en) * | 2001-06-19 | 2002-11-05 | Xilinx, Inc. | Electronic circuit designs adaptable for applications having different binary data formats |
| US6725369B1 (en) * | 2000-04-28 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Circuit for allowing data return in dual-data formats |
| GB0026363D0 (en) | 2000-10-27 | 2000-12-13 | Sgs Thomson Microelectronics | Bi-endian libraries |
| US6725364B1 (en) * | 2001-03-08 | 2004-04-20 | Xilinx, Inc. | Configurable processor system |
| US20030014616A1 (en) * | 2001-07-02 | 2003-01-16 | Thavatchai Makphaibulchoke | Method and apparatus for pre-processing a data collection for use by a big-endian operating system |
| US7565509B2 (en) * | 2002-04-17 | 2009-07-21 | Microsoft Corporation | Using limits on address translation to control access to an addressable entity |
| US6986006B2 (en) * | 2002-04-17 | 2006-01-10 | Microsoft Corporation | Page granular curtained memory via mapping control |
| US6886067B2 (en) | 2002-05-23 | 2005-04-26 | Seiko Epson Corporation | 32 Bit generic asynchronous bus interface using read/write strobe byte enables |
| US6904486B2 (en) | 2002-05-23 | 2005-06-07 | Seiko Epson Corporation | 32 bit generic bus interface using read/write byte enables |
| US6895489B2 (en) * | 2002-08-07 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | System and method for operating in endian independent mode |
| JP4446373B2 (ja) * | 2003-03-19 | 2010-04-07 | パナソニック株式会社 | プロセッサ、データ共有装置 |
| US20040221274A1 (en) * | 2003-05-02 | 2004-11-04 | Bross Kevin W. | Source-transparent endian translation |
| US20050066146A1 (en) * | 2003-09-19 | 2005-03-24 | Intel Corporation | Endian conversion |
| US20050069138A1 (en) * | 2003-09-25 | 2005-03-31 | Sun Microsystems, Inc., A Delaware Corporation | Application program obfuscation |
| US7415618B2 (en) * | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
| US8220058B2 (en) * | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
| US7363620B2 (en) * | 2003-09-25 | 2008-04-22 | Sun Microsystems, Inc. | Non-linear execution of application program instructions for application program obfuscation |
| US7353499B2 (en) | 2003-09-25 | 2008-04-01 | Sun Microsystems, Inc. | Multiple instruction dispatch tables for application program obfuscation |
| US7424620B2 (en) * | 2003-09-25 | 2008-09-09 | Sun Microsystems, Inc. | Interleaved data and instruction streams for application program obfuscation |
| US7330959B1 (en) | 2004-04-23 | 2008-02-12 | Transmeta Corporation | Use of MTRR and page attribute table to support multiple byte order formats in a computer system |
| US7139905B2 (en) * | 2004-04-29 | 2006-11-21 | Microsoft Corporation | Dynamic endian switching |
| US20060106988A1 (en) * | 2004-11-16 | 2006-05-18 | Charbel Khawand | Method and system for exchanging data |
| US7552427B2 (en) * | 2004-12-13 | 2009-06-23 | Intel Corporation | Method and apparatus for implementing a bi-endian capable compiler |
| KR100743126B1 (ko) * | 2005-02-25 | 2007-07-27 | 한국동서발전(주) | 발전용 분산제어 시스템의 운전을 위한 운전 장치 |
| JP4437464B2 (ja) | 2005-06-01 | 2010-03-24 | 株式会社ルネサステクノロジ | 半導体装置及びデータ処理システム |
| US7865884B1 (en) | 2005-06-03 | 2011-01-04 | Apple Inc. | Typed-data translation for platform independence |
| US7640553B2 (en) * | 2005-09-30 | 2009-12-29 | Intel Corporation | Mechanisms to support use of software running on platform hardware employing different endianness |
| US8595452B1 (en) | 2005-11-30 | 2013-11-26 | Sprint Communications Company L.P. | System and method for streaming data conversion and replication |
| US7721077B2 (en) * | 2006-12-11 | 2010-05-18 | Intel Corporation | Performing endian conversion |
| KR101437962B1 (ko) * | 2007-06-26 | 2014-09-15 | 삼성전자주식회사 | 데이터 처리 장치 및 데이터 처리 방법 |
| CN101324868B (zh) * | 2008-07-11 | 2010-06-16 | 中兴通讯股份有限公司 | 处理器与boot flash间的连接装置及实现方法 |
| US8145804B2 (en) * | 2009-09-21 | 2012-03-27 | Kabushiki Kaisha Toshiba | Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor |
| JP5622429B2 (ja) | 2010-04-20 | 2014-11-12 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ |
| US8972821B2 (en) * | 2010-12-23 | 2015-03-03 | Texas Instruments Incorporated | Encode and multiplex, register, and decode and error correction circuitry |
| US8953782B2 (en) | 2011-05-09 | 2015-02-10 | Bae Systems Information And Electronic Systems Integration Inc. | Crypto arrangement with mixed endian |
| US10120682B2 (en) | 2014-02-28 | 2018-11-06 | International Business Machines Corporation | Virtualization in a bi-endian-mode processor architecture |
| US10671387B2 (en) * | 2014-06-10 | 2020-06-02 | International Business Machines Corporation | Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data |
| US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
| US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
| US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
| US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
| US9594668B1 (en) | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
| US10691453B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector load with instruction-specified byte count less than a vector size for big and little endian processing |
| US10691456B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing |
| US9904595B1 (en) * | 2016-08-23 | 2018-02-27 | Texas Instruments Incorporated | Error correction hardware with fault detection |
| US20180232427A1 (en) * | 2017-02-13 | 2018-08-16 | Raytheon Company | Data structure endian conversion system |
| US11934332B2 (en) * | 2022-02-01 | 2024-03-19 | Mellanox Technologies, Ltd. | Data shuffle offload |
| US11775399B1 (en) * | 2022-03-28 | 2023-10-03 | International Business Machines Corporation | Efficient recovery in continuous data protection environments |
Family Cites Families (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4999808A (en) * | 1986-09-26 | 1991-03-12 | At&T Bell Laboratories | Dual byte order data processor |
| JPS63217416A (ja) | 1987-03-05 | 1988-09-09 | Nec Corp | デ−タ配列変換装置 |
| US5132898A (en) * | 1987-09-30 | 1992-07-21 | Mitsubishi Denki Kabushiki Kaisha | System for processing data having different formats |
| JP2633331B2 (ja) * | 1988-10-24 | 1997-07-23 | 三菱電機株式会社 | マイクロプロセッサ |
| GB2229832B (en) * | 1989-03-30 | 1993-04-07 | Intel Corp | Byte swap instruction for memory format conversion within a microprocessor |
| US5237672A (en) * | 1989-07-28 | 1993-08-17 | Texas Instruments Incorporated | Dynamically adaptable memory controller for various size memories |
| US5287470A (en) * | 1989-12-28 | 1994-02-15 | Texas Instruments Incorporated | Apparatus and method for coupling a multi-lead output bus to interleaved memories, which are addressable in normal and block-write modes |
| US5261077A (en) * | 1990-06-29 | 1993-11-09 | Digital Equipment Corporation | Configurable data path arrangement for resolving data type incompatibility |
| EP0470570B1 (en) * | 1990-08-09 | 1997-01-29 | Silicon Graphics, Inc. | Method and apparatus for byte order switching in a computer |
| US5191581A (en) * | 1990-12-07 | 1993-03-02 | Digital Equipment Corporation | Method and apparatus for providing high performance interconnection between interface circuits coupled to information buses |
| JP2763207B2 (ja) * | 1991-04-25 | 1998-06-11 | 株式会社東芝 | 情報処理装置 |
| US5446482A (en) * | 1991-11-13 | 1995-08-29 | Texas Instruments Incorporated | Flexible graphics interface device switch selectable big and little endian modes, systems and methods |
| US5251312A (en) * | 1991-12-30 | 1993-10-05 | Sun Microsystems, Inc. | Method and apparatus for the prevention of race conditions during dynamic chaining operations |
| US5313231A (en) * | 1992-03-24 | 1994-05-17 | Texas Instruments Incorporated | Color palette device having big/little endian interfacing, systems and methods |
| US5408664A (en) * | 1992-06-19 | 1995-04-18 | Silicon Graphics, Incorporated | System and Method for booting computer for operation in either of two byte-order modes |
| EP0629303A1 (en) * | 1992-12-21 | 1994-12-21 | Olivetti Advanced Technology Center, Inc. | Apparatus, system and method for facilitating communication between components having different byte orderings |
| US5519842A (en) * | 1993-02-26 | 1996-05-21 | Intel Corporation | Method and apparatus for performing unaligned little endian and big endian data accesses in a processing system |
| US5524256A (en) * | 1993-05-07 | 1996-06-04 | Apple Computer, Inc. | Method and system for reordering bytes in a data stream |
| US5574923A (en) * | 1993-05-10 | 1996-11-12 | Intel Corporation | Method and apparatus for performing bi-endian byte and short accesses in a single-endian microprocessor |
| US5432937A (en) * | 1993-08-20 | 1995-07-11 | Next Computer, Inc. | Method and apparatus for architecture independent executable files |
| GB9402470D0 (en) * | 1994-02-09 | 1994-03-30 | Texas Instruments Ltd | Improvements in or relating to mask generation |
| US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
| US5687337A (en) * | 1995-02-24 | 1997-11-11 | International Business Machines Corporation | Mixed-endian computer system |
| US5640545A (en) * | 1995-05-03 | 1997-06-17 | Apple Computer, Inc. | Frame buffer interface logic for conversion of pixel data in response to data format and bus endian-ness |
-
1995
- 1995-02-24 US US08/393,968 patent/US5928349A/en not_active Expired - Lifetime
- 1995-06-07 US US08/475,669 patent/US6341345B1/en not_active Expired - Fee Related
- 1995-12-29 KR KR1019950067122A patent/KR100239028B1/ko not_active Expired - Fee Related
-
1996
- 1996-01-23 EP EP96480014A patent/EP0729094A1/en not_active Withdrawn
- 1996-02-14 JP JP8026324A patent/JPH08314733A/ja active Pending
-
1998
- 1998-07-15 US US09/116,050 patent/US5968164A/en not_active Expired - Fee Related
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014179107A (ja) * | 2008-09-12 | 2014-09-25 | Renesas Electronics Corp | 半導体集積回路装置 |
| JP2011186545A (ja) * | 2010-03-04 | 2011-09-22 | Nec Corp | メモリデータベースシステム、高速化方法、および、プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| KR960032172A (ko) | 1996-09-17 |
| US6341345B1 (en) | 2002-01-22 |
| EP0729094A1 (en) | 1996-08-28 |
| KR100239028B1 (ko) | 2000-01-15 |
| US5928349A (en) | 1999-07-27 |
| US5968164A (en) | 1999-10-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100239028B1 (ko) | 컴퓨터 시스템 | |
| JP3758732B2 (ja) | エンディアンタスクを実行するシステム及び方法 | |
| US4742450A (en) | Method to share copy on write segment for mapped files | |
| KR0170565B1 (ko) | 메모리 관리 방법, 마이크로커널 구조 데이타 프로세싱 시스템, 운영 체제 퍼스낼리티 시스템 동작 방법, 퍼스낼리티 뉴트럴 서비스 프로그램 실행 방법 및 응용 프로그램 실행방법 | |
| US5727211A (en) | System and method for fast context switching between tasks | |
| US6363409B1 (en) | Automatic client/server translation and execution of non-native applications | |
| US5640528A (en) | Method and apparatus for translating addresses using mask and replacement value registers | |
| JP2741594B2 (ja) | I/oプロセツサ用の実行装置 | |
| US5490256A (en) | Method and mechanism for calling 32-bit functions from 16-bit functions | |
| US8386750B2 (en) | Multiprocessor system having processors with different address widths and method for operating the same | |
| US5781763A (en) | Independent control of DMA and I/O resources for mixed-endian computing systems | |
| US20030126587A1 (en) | Controlling compatibility levels of binary translations between instruction set architectures | |
| US7496917B2 (en) | Virtual devices using a pluarlity of processors | |
| JP2007534066A (ja) | 複製メモリフィールドを備えたマルチコンピュータアーキテクチャ | |
| WO1998019238A1 (en) | Heterogeneous symmetric multi-processing system | |
| US6260191B1 (en) | User controlled relaxation of optimization constraints related to volatile memory references | |
| US5734910A (en) | Integrating multi-modal synchronous interrupt handlers for computer system | |
| KR20050058240A (ko) | 프로세서를 코프로세서에 인터페이싱하기 위한 방법 및 장치 | |
| US5649142A (en) | Method and apparatus for translating addresses using mask and replacement value registers and for accessing a service routine in response to a page fault | |
| US6684395B2 (en) | Multiple image dynamic bind and load procedure for a multi-processor | |
| US7558724B2 (en) | Operation region describing a virtual device | |
| US11385927B2 (en) | Interrupt servicing in userspace | |
| JPH04309135A (ja) | 異なるモードで動作する2個のプログラム・セグメント間でコンピューターがコントロールを転送することを可能にする方法及び装置 | |
| US5689710A (en) | Protected mode C binding for PCMCIA card services interface | |
| US5117491A (en) | Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding |