JPH0769794B2 - デ−タ・ストア方式 - Google Patents
デ−タ・ストア方式Info
- Publication number
- JPH0769794B2 JPH0769794B2 JP61150608A JP15060886A JPH0769794B2 JP H0769794 B2 JPH0769794 B2 JP H0769794B2 JP 61150608 A JP61150608 A JP 61150608A JP 15060886 A JP15060886 A JP 15060886A JP H0769794 B2 JPH0769794 B2 JP H0769794B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- register
- data
- byte
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 7
- 230000004044 response Effects 0.000 claims 3
- 238000006073 displacement reaction Methods 0.000 claims 2
- 230000010365 information processing Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 4
- 101100150905 Caenorhabditis elegans ham-3 gene Proteins 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/35—Indirect addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Description
【発明の詳細な説明】 〔発明の技術分野〕 本発明はバイト列転送を高速に行なうことができ、かつ
装置の構成を簡単にすることができるデータ・ストア方
式に関する。
装置の構成を簡単にすることができるデータ・ストア方
式に関する。
〔従来技術およびその問題点〕 マイクロプログラムを用いた従来のコンピュータにおい
ては、その制御ユニットは一般には自律的なリード・オ
ンリ・メモリを含んでいる。プログラムの各命令の実行
を始める毎に、制御ユニットは命令の命令コードから生
成されたリード・オンリ・メモリのアドレスを発生す
る。今処理されている命令を実行するためにコンピュー
タに制御信号を供給する一連のマイクロ命令語の先頭ア
ドレスを指定する。各命令は実際、その命令に対応する
マイクロルーチンへの転送を起こさせる。その結果得ら
れるステップ毎のコンピュータ動作は、極めて詳細なレ
ベルでのプログラムの実行に対応する。このような従来
のコンピュータにおいては、一般的にプログラム命令は
命令コードとオペランド、すなわち、演算されるべきデ
ータの位置に関する情報とを含む。これらのオペランド
は付加的な動作を指定する情報を含むこともある。この
プログラム命令の長さは、扱かうデータ量に従って相対
的に長くすることもできるし、あるいは、短くすること
もできる。命令コードは実行すべき動作を指示する。一
旦、命令コードの長さを定めると、ある固定組の相異な
る命令コードおよびそれらに関連したプログラム命令だ
けがあるようにできる。しかしながら、ある個数のビッ
トにより理論的に表わせる命令コードすなわち前記固定
組の命令コードの全てを、マイクロプログラム化された
リソースを備えたコンピュータのプログラム命令の特定
のために使用することはない。一般には、上述の固定組
の一部、すなわちサブセットのみしか使用されておら
ず、この結果、プログラミング効率の低下が生じてい
る。
ては、その制御ユニットは一般には自律的なリード・オ
ンリ・メモリを含んでいる。プログラムの各命令の実行
を始める毎に、制御ユニットは命令の命令コードから生
成されたリード・オンリ・メモリのアドレスを発生す
る。今処理されている命令を実行するためにコンピュー
タに制御信号を供給する一連のマイクロ命令語の先頭ア
ドレスを指定する。各命令は実際、その命令に対応する
マイクロルーチンへの転送を起こさせる。その結果得ら
れるステップ毎のコンピュータ動作は、極めて詳細なレ
ベルでのプログラムの実行に対応する。このような従来
のコンピュータにおいては、一般的にプログラム命令は
命令コードとオペランド、すなわち、演算されるべきデ
ータの位置に関する情報とを含む。これらのオペランド
は付加的な動作を指定する情報を含むこともある。この
プログラム命令の長さは、扱かうデータ量に従って相対
的に長くすることもできるし、あるいは、短くすること
もできる。命令コードは実行すべき動作を指示する。一
旦、命令コードの長さを定めると、ある固定組の相異な
る命令コードおよびそれらに関連したプログラム命令だ
けがあるようにできる。しかしながら、ある個数のビッ
トにより理論的に表わせる命令コードすなわち前記固定
組の命令コードの全てを、マイクロプログラム化された
リソースを備えたコンピュータのプログラム命令の特定
のために使用することはない。一般には、上述の固定組
の一部、すなわちサブセットのみしか使用されておら
ず、この結果、プログラミング効率の低下が生じてい
る。
更に従来のコンピュータにおいては、使用されるメモリ
が最大のハードウェア・コストを占めているため、ハー
ドウェア・スピードの向上およびハードウェアの最小化
のためにはそのメモリの使用効率の向上の達成が肝要で
ある。固定命令長コンピュータにおいては、夫々の命令
で実行すべき動作が簡単か複雑かに無関係に全ての命令
に対して同一のビット数を割当てる必要がある。このた
め、たとえば、多くのビットが簡単な動作を指定するた
めに浪費される一方では、命令語長によって命令の能力
が制限される局面においては複雑な動作を行なうために
多くの命令が浪費されている。従って、全てのアプリケ
ーションを最も効率的に実行できる命令セットを有する
コンピュータを設計することが望ましい。
が最大のハードウェア・コストを占めているため、ハー
ドウェア・スピードの向上およびハードウェアの最小化
のためにはそのメモリの使用効率の向上の達成が肝要で
ある。固定命令長コンピュータにおいては、夫々の命令
で実行すべき動作が簡単か複雑かに無関係に全ての命令
に対して同一のビット数を割当てる必要がある。このた
め、たとえば、多くのビットが簡単な動作を指定するた
めに浪費される一方では、命令語長によって命令の能力
が制限される局面においては複雑な動作を行なうために
多くの命令が浪費されている。従って、全てのアプリケ
ーションを最も効率的に実行できる命令セットを有する
コンピュータを設計することが望ましい。
従来のマイクロプログラム方式コンピュータの効率を向
上させるために最適化コンパイラの概念が採用され実現
された。ここで目指されたことは、(1)プログラム言
語を大きな仮想アドレス空間におけるマイクロ命令と同
様な複雑でない命令レベルまでコンパイルし、また、
(2)技術が許す限り、命令サイクル時間をできるだけ
短くすること、である。そのような最適化コンパイラを
有するコンピュータは、以前のものよりも少ない命令を
持つように設計される。これらの少ない命令は単純なも
のであり、1サイクル内で実行される。そのようなコン
ピュータは縮少命令セット・コンピュータ(reduced in
struction set computer,以下RISCと称する)と呼ばれ
ている。RISCにおける少数の命令セットの一部分であ
り、新規なやり方で効率を向上させる命令が本願で提示
される。
上させるために最適化コンパイラの概念が採用され実現
された。ここで目指されたことは、(1)プログラム言
語を大きな仮想アドレス空間におけるマイクロ命令と同
様な複雑でない命令レベルまでコンパイルし、また、
(2)技術が許す限り、命令サイクル時間をできるだけ
短くすること、である。そのような最適化コンパイラを
有するコンピュータは、以前のものよりも少ない命令を
持つように設計される。これらの少ない命令は単純なも
のであり、1サイクル内で実行される。そのようなコン
ピュータは縮少命令セット・コンピュータ(reduced in
struction set computer,以下RISCと称する)と呼ばれ
ている。RISCにおける少数の命令セットの一部分であ
り、新規なやり方で効率を向上させる命令が本願で提示
される。
特に、コンピュータで行なわれる最も普通の動作のひと
つは、語あるいはバイトの列をメモリ中のあるアドレス
から他のアドレスへと転送することである。これは、頻
繁に行なわれる動作であるので、効率的に実行すること
が重要である。しかし、この動作の厳密な形態の多様
性、転送対象の長さやアドレスが固定であるか可変であ
るかという多様性、また、転送対象の長さやワード・ア
ラインメント等の多様性により、たとえこのような多様
性のうちの極く一部分のものしか実際には多少なりとも
頻繁に使用されないとしても、この動作を効率的に行な
う一様なメカニズムを見い出すのは困難である。
つは、語あるいはバイトの列をメモリ中のあるアドレス
から他のアドレスへと転送することである。これは、頻
繁に行なわれる動作であるので、効率的に実行すること
が重要である。しかし、この動作の厳密な形態の多様
性、転送対象の長さやアドレスが固定であるか可変であ
るかという多様性、また、転送対象の長さやワード・ア
ラインメント等の多様性により、たとえこのような多様
性のうちの極く一部分のものしか実際には多少なりとも
頻繁に使用されないとしても、この動作を効率的に行な
う一様なメカニズムを見い出すのは困難である。
従来技術においては、ひとつのアプローチはソースから
デスティネーションへ何バイトかを転送するためのひと
つあるいは2つの命令を設けることである。しかし、こ
のような命令で使用できるオプションは非常に限定され
ている。また、オペランドの指定についても同様に限定
されている。指定されなければならないオプション、す
なわち、ソース、デスティネーションのアドレスおよび
長さ、の情報量が多いので、このような命令は非常に大
きなものになる。これらの命令は実行するのに何サイク
ルも必要としたり、また、制御のため雑多なマイクロコ
ードを必要とする。このような命令は実行時間が長いの
で、入出力割込みによりこれらの動作がロック・アウト
されるという問題がしばしば発生する。従って、これら
の動作は、更に、割込み可能および/または再開可能で
ある必要がある。このような必要性があることにより、
明らかに命令の複雑さが増す。
デスティネーションへ何バイトかを転送するためのひと
つあるいは2つの命令を設けることである。しかし、こ
のような命令で使用できるオプションは非常に限定され
ている。また、オペランドの指定についても同様に限定
されている。指定されなければならないオプション、す
なわち、ソース、デスティネーションのアドレスおよび
長さ、の情報量が多いので、このような命令は非常に大
きなものになる。これらの命令は実行するのに何サイク
ルも必要としたり、また、制御のため雑多なマイクロコ
ードを必要とする。このような命令は実行時間が長いの
で、入出力割込みによりこれらの動作がロック・アウト
されるという問題がしばしば発生する。従って、これら
の動作は、更に、割込み可能および/または再開可能で
ある必要がある。このような必要性があることにより、
明らかに命令の複雑さが増す。
更に、実行時間が長いため、仮想記憶システムで用いら
れるときにも同様な問題がおこる。つまり、この場合に
は割込みのかわりにページ・フォルトの問題が起こる。
これらの問題を解消するための制御上の必要性より、ハ
ードウェアのコストおよび複雑性が増す。
れるときにも同様な問題がおこる。つまり、この場合に
は割込みのかわりにページ・フォルトの問題が起こる。
これらの問題を解消するための制御上の必要性より、ハ
ードウェアのコストおよび複雑性が増す。
要するに、たとえ最も頻繁に用いられるいくつかの形態
の動作だけ最適化するとしても、このような動作の最適
化を行なうと、データ・パスおよび制御が複雑化するこ
とは不可避である。そのかわりに、非ハードウェア的な
支援をこれらの問題の解決のために用いることもでき
る。しかし、このような状況では、命令動作は受け入れ
難い程に長くなってしまう。
の動作だけ最適化するとしても、このような動作の最適
化を行なうと、データ・パスおよび制御が複雑化するこ
とは不可避である。そのかわりに、非ハードウェア的な
支援をこれらの問題の解決のために用いることもでき
る。しかし、このような状況では、命令動作は受け入れ
難い程に長くなってしまう。
本発明は上述した従来技術の問題点を解消し、多様な条
件下でバイト列等をハードウェアを複雑にしなくても、
効率的に転送することができるデータ・ストア方式を提
供することを目的とする。
件下でバイト列等をハードウェアを複雑にしなくても、
効率的に転送することができるデータ・ストア方式を提
供することを目的とする。
本発明の好適な実施例によれば、上述した問題点を解消
するため、バイト列を転送するための基本命令が与えら
れる。この命令のオプションは基本的なものであるた
め、操作対象の長さや可変性の多様性に対応するために
は極く少数のバリエーションしか必要とされない。これ
らの動作を行なう命令はコード列中に埋め込まれる。従
ってコンパイラは、必要な動作を行なうために必要な正
に最小のシーケンスを生成し、また、オペランドの多く
をコンパイル時点で前以って計算しておくことができ
る。転送動作の最適化に必要とされる制御は、かくてハ
ードウェアではなく、コンパイラによって行なわれる。
これにより、上に列挙したようにな、ハードウェア面か
らの解決法に見られる問題を回避している。これら全て
の要因からの帰結として、この命令は1サイクル動作で
実現できる。言い換えれば、この命令の開始から、1サ
イクル以内に妨害やロック・アウトをおこすことなく別
の命令を開始することができる。
するため、バイト列を転送するための基本命令が与えら
れる。この命令のオプションは基本的なものであるた
め、操作対象の長さや可変性の多様性に対応するために
は極く少数のバリエーションしか必要とされない。これ
らの動作を行なう命令はコード列中に埋め込まれる。従
ってコンパイラは、必要な動作を行なうために必要な正
に最小のシーケンスを生成し、また、オペランドの多く
をコンパイル時点で前以って計算しておくことができ
る。転送動作の最適化に必要とされる制御は、かくてハ
ードウェアではなく、コンパイラによって行なわれる。
これにより、上に列挙したようにな、ハードウェア面か
らの解決法に見られる問題を回避している。これら全て
の要因からの帰結として、この命令は1サイクル動作で
実現できる。言い換えれば、この命令の開始から、1サ
イクル以内に妨害やロック・アウトをおこすことなく別
の命令を開始することができる。
本発明の実施例におけるバイト列転送動作はコード列に
よって実行される。従って入出力割込やページ・フォル
トを処理するための特別な制御は必要ない。バイト転送
を行なうこの基本命令には、他の命令のために既に必要
なもの以上のハードウェアは極くわずかしかいらない。
よって、本命令を用いることにより、最も頻繁に行なわ
れるバイト列転送動作について、従来のハードウェア支
援を受けた命令と同程度あるいはそれ以上の速度で実行
できる。
よって実行される。従って入出力割込やページ・フォル
トを処理するための特別な制御は必要ない。バイト転送
を行なうこの基本命令には、他の命令のために既に必要
なもの以上のハードウェアは極くわずかしかいらない。
よって、本命令を用いることにより、最も頻繁に行なわ
れるバイト列転送動作について、従来のハードウェア支
援を受けた命令と同程度あるいはそれ以上の速度で実行
できる。
この基本命令の動作は、ソース・レジスタからメモリ
へ、デスティネーション側バイト列の語境界に対するア
ラインメント合わせに必要なバイトをストアする。この
ストア動作は、ソース・レジスタ中の語の中の1命令で
指示されたバイト・アドレス位置から始まりその語の末
尾バイトまでの部分をストアするか、あるいは、語の先
頭バイトから指示されたバイト・アドレスまでの部分を
ストアする。
へ、デスティネーション側バイト列の語境界に対するア
ラインメント合わせに必要なバイトをストアする。この
ストア動作は、ソース・レジスタ中の語の中の1命令で
指示されたバイト・アドレス位置から始まりその語の末
尾バイトまでの部分をストアするか、あるいは、語の先
頭バイトから指示されたバイト・アドレスまでの部分を
ストアする。
他のストア命令でも見られるオプション、たとえばキャ
ッシュ制御、アドレス変更等は、この命令でも使用でき
る。この命令は、バイト転送動作のうちの最初と最後の
部分を取り扱う。しかし、ソース側バイト列とデスティ
ネーション側バイト列がアラインされていない場合には
(すなわち語のバイト長をn、ソース側バイト列とデス
ティネーション側バイト列の先頭アドレスを夫々As、Ad
とするとき、modnAsmodnAdの場合)、バイト列中の各語
について更にアラインメント合わせを行なう命令が必要
になる。これは具体的にはアラインメントのずれに応じ
たシフト動作であるが、以下に説明する本基本命令の動
作を理解すれば、この更にアラインメント合わせを行な
うための動作は当業者にとって明らかであろう。本基本
命令すなわちSTBYS(STore BYtes Short)命令は以下の
ようになっている。
ッシュ制御、アドレス変更等は、この命令でも使用でき
る。この命令は、バイト転送動作のうちの最初と最後の
部分を取り扱う。しかし、ソース側バイト列とデスティ
ネーション側バイト列がアラインされていない場合には
(すなわち語のバイト長をn、ソース側バイト列とデス
ティネーション側バイト列の先頭アドレスを夫々As、Ad
とするとき、modnAsmodnAdの場合)、バイト列中の各語
について更にアラインメント合わせを行なう命令が必要
になる。これは具体的にはアラインメントのずれに応じ
たシフト動作であるが、以下に説明する本基本命令の動
作を理解すれば、この更にアラインメント合わせを行な
うための動作は当業者にとって明らかであろう。本基本
命令すなわちSTBYS(STore BYtes Short)命令は以下の
ようになっている。
アセンブラ表現で修飾子“,B"を付けることにより「先
頭」が指定されれば(これは命令中の先頭/末尾指示子
aを0とすることによって指定される)、命令で指示さ
れるソース側の汎用レジスタ“t"の下位側の何バイトか
が、命令によって与えられる実効アドレスで指示される
バイト位置から始まるメモリにストアされる。
頭」が指定されれば(これは命令中の先頭/末尾指示子
aを0とすることによって指定される)、命令で指示さ
れるソース側の汎用レジスタ“t"の下位側の何バイトか
が、命令によって与えられる実効アドレスで指示される
バイト位置から始まるメモリにストアされる。
逆に、アセンブラ表現で修飾子、“,E"を付けることに
より「末尾」であることが指定されれば(これは命令中
の先頭/末尾指示子a=1とすることによって指定され
る)、汎用レジスタ“t"の上位側の何バイトかを、メモ
リ中で実効アドレスで指示された語中にその最上位バイ
ト位置からストアする。このストア動作の対象となる最
後のバイト位置は実効アドレスで指示されるバイト位置
のひとつ手前である。従って、実効アドレスが語の最上
位バイトを指示している場合には上述のストアは全く行
なわれない。しかし、指示された語に対する記憶保護関
係のチェック動作は行なわれる。
より「末尾」であることが指定されれば(これは命令中
の先頭/末尾指示子a=1とすることによって指定され
る)、汎用レジスタ“t"の上位側の何バイトかを、メモ
リ中で実効アドレスで指示された語中にその最上位バイ
ト位置からストアする。このストア動作の対象となる最
後のバイト位置は実効アドレスで指示されるバイト位置
のひとつ手前である。従って、実効アドレスが語の最上
位バイトを指示している場合には上述のストアは全く行
なわれない。しかし、指示された語に対する記憶保護関
係のチェック動作は行なわれる。
「アドレス変更」が指定された場合は、変更結果のアド
レスは語境界にそろうように下位ビットがマスクされ
る。
レスは語境界にそろうように下位ビットがマスクされ
る。
本発明の実施例に基づくバイト列転送用の基本命令の一
例のSTBYS命令140のフォーマットおよび動作は以下のよ
うになっている。
例のSTBYS命令140のフォーマットおよび動作は以下のよ
うになっている。
STBYS命令はアセンブラでは以下のように表記される。
STBYS、ma、cc t、i(s、b) また命令のフォーマットは第1図にも示すように、 03/b/t/s/a/1/cc/C/m/i、 である。ここにおいて、 03は命令クラス“Index Mem"を指示する命令コード110
である。この命令コードは、命令コード拡張フィールド
C126とともにSTBYS命令140を表している。
である。この命令コードは、命令コード拡張フィールド
C126とともにSTBYS命令140を表している。
bはアドレス・レジスタを指示する5ビットのフィール
ド112である。
ド112である。
tは、データ・レジスタを指示する5ビットのフィール
ド114である。
ド114である。
sは使用するアドレス空間番号が入っているスペース・
レジスタSRを指示する2ビットのスペース・レジスタ指
示フィールド116である。
レジスタSRを指示する2ビットのスペース・レジスタ指
示フィールド116である。
aは、アドレス変更を実効アドレス生成前に行なう(事
前変更)か後に行なう(事後変更)かを指示する1ビッ
トの指示子120であり、先頭/末尾指示子として使われ
る。
前変更)か後に行なう(事後変更)かを指示する1ビッ
トの指示子120であり、先頭/末尾指示子として使われ
る。
ccは、2ビットのキャッシュ制御ビット124である。
Cは4ビットの命令コード拡張フィールド126である。
mは、アドレス変更を行なうか否かを示す1ビットの指
示子128である。また、 iは、5ビットの符号付き直接値フィールド130であ
る。
示子128である。また、 iは、5ビットの符号付き直接値フィールド130であ
る。
STBYS命令140は以下のように動作する。
1.48ビットの一時的な値“addr"は以下のようにして計
算される。
算される。
a.直接値フィールド130“i"の最下位ビットを取り去
る。この最下位ビットが実は符号ビットになっている。
“i"の残りの部分をこの符号ビットで左側に符号拡張す
ることにより32ビットの値“immediate"を計算する。こ
こでもし、アドレス変更および事後変更が指定されてい
たならば(つまり、指示子m128の値が1でかつ指示子a1
20の値が0であれば)、値0を“ind"に割当てる。さも
なければ、“immediate"を“ind"に割当てる。
る。この最下位ビットが実は符号ビットになっている。
“i"の残りの部分をこの符号ビットで左側に符号拡張す
ることにより32ビットの値“immediate"を計算する。こ
こでもし、アドレス変更および事後変更が指定されてい
たならば(つまり、指示子m128の値が1でかつ指示子a1
20の値が0であれば)、値0を“ind"に割当てる。さも
なければ、“immediate"を“ind"に割当てる。
b.次に、“ind"をアドレス・レジスタ“b"の内容に加
え、その結果を32ビット長の“offset"に割当てる。
え、その結果を32ビット長の“offset"に割当てる。
c.もし、スペース・レジスタ指示フィールドs116が0で
あれば、アドレス・レジスタ“b"の最上位2ビット、す
なわちビット0およびビット1からなる2ビットの数に
4を加算して得られる数によりアドレス指定されるスペ
ース・レジスタの内容を16ビット長の“space"に割当て
る。スペース・レジスタ指示フィールドs116が0でなけ
れば、その値によってアドレス指定されるスペース・レ
ジスタの内容を16ビット長の“space"に割当てる。(つ
まり、スペース・レジスタは1番から7番まである。)
そして、 d.“space"と“offset"を“space"を上位として連結し
て得られる値を“addr"に割当てる。
あれば、アドレス・レジスタ“b"の最上位2ビット、す
なわちビット0およびビット1からなる2ビットの数に
4を加算して得られる数によりアドレス指定されるスペ
ース・レジスタの内容を16ビット長の“space"に割当て
る。スペース・レジスタ指示フィールドs116が0でなけ
れば、その値によってアドレス指定されるスペース・レ
ジスタの内容を16ビット長の“space"に割当てる。(つ
まり、スペース・レジスタは1番から7番まである。)
そして、 d.“space"と“offset"を“space"を上位として連結し
て得られる値を“addr"に割当てる。
2.第1サークルTの間に以下の動作を行なう。
a.8×mod4“addr"を“pos"に割当てる。
b.アドレス変更指示のための指示子m128が1の場合は、
アドレス・レジスタ“b"に(“b"+“immediate")&
X′FFFFFFFCの値を割当てる。ここでX′は16進数を表
す記号、+は加算、&はビット毎の論理積を表わす。
アドレス・レジスタ“b"に(“b"+“immediate")&
X′FFFFFFFCの値を割当てる。ここでX′は16進数を表
す記号、+は加算、&はビット毎の論理積を表わす。
c.また、仮想記憶変換がオン状態の場合、すなわちPSW
(Program Status Word)のDビットが1の場合、であ
ってかつ事前変更/事後変更の指示のための指示子a120
が1である場合は、メモリ・ストアはデータ・レジスタ
“t"の最上位ビットすなわちビット0からビット“pos"
−1までを、“addr"で指示されるメモリ・ロケーショ
ンのビット0からビット“pos"−1までに書込むことに
よって行なわれる。また、上述の条件中の前者がそのま
まで、後者がa=0である場合には、メモリ・ストアは
データ・レジスタ“t"のビット“pos"から最下位である
ビット31までをロケーション“addr"のビット“pos"か
らビット31までにストアすることによって行なわれる。
(Program Status Word)のDビットが1の場合、であ
ってかつ事前変更/事後変更の指示のための指示子a120
が1である場合は、メモリ・ストアはデータ・レジスタ
“t"の最上位ビットすなわちビット0からビット“pos"
−1までを、“addr"で指示されるメモリ・ロケーショ
ンのビット0からビット“pos"−1までに書込むことに
よって行なわれる。また、上述の条件中の前者がそのま
まで、後者がa=0である場合には、メモリ・ストアは
データ・レジスタ“t"のビット“pos"から最下位である
ビット31までをロケーション“addr"のビット“pos"か
らビット31までにストアすることによって行なわれる。
d.仮想記憶変換が行なわれないようになっている場合、
すなわち、PSWのDビットが0の場合は、a=1であれ
ばメモリ・ストアはデータ・レジスタ“t"のビット0か
らビット“pos"−1までを、“addr"のビット16からビ
ット47(すなわち“addr"の下位32ビット)で指示され
るアドレスを持つ物理メモリのビット0からビット“po
s"−1へストアすることによって行なわれる。また、こ
の場合、a=0であれば、メモリ・ストアはデータ・レ
ジスタ“t"のビット“pos"からビット31を“addr"のビ
ット16からビット47で指示されるアドレスを持つ物理メ
モリのビット“pos"からビット31までにストアすること
によって行なわれる。なおここでひとつ注意しておくこ
とは、c.,d.では、一見ビット単位でレジスタの読出し
/メモリへの書込みをやっているように見えるが、a.に
おける“pos"の値の作り方からわかるように、これらの
読出し/書込みは皆バイト単位で行なわれているのであ
る。
すなわち、PSWのDビットが0の場合は、a=1であれ
ばメモリ・ストアはデータ・レジスタ“t"のビット0か
らビット“pos"−1までを、“addr"のビット16からビ
ット47(すなわち“addr"の下位32ビット)で指示され
るアドレスを持つ物理メモリのビット0からビット“po
s"−1へストアすることによって行なわれる。また、こ
の場合、a=0であれば、メモリ・ストアはデータ・レ
ジスタ“t"のビット“pos"からビット31を“addr"のビ
ット16からビット47で指示されるアドレスを持つ物理メ
モリのビット“pos"からビット31までにストアすること
によって行なわれる。なおここでひとつ注意しておくこ
とは、c.,d.では、一見ビット単位でレジスタの読出し
/メモリへの書込みをやっているように見えるが、a.に
おける“pos"の値の作り方からわかるように、これらの
読出し/書込みは皆バイト単位で行なわれているのであ
る。
このSTBYS命令は、バイト列転送ルーチン中でバイト列
の先頭および末尾の処理に用いられる。バイト列中間部
分の転送は、ロード→(もし必要があればシフト)→ス
トアのくり返しによって行なわれることは明らかであろ
う。
の先頭および末尾の処理に用いられる。バイト列中間部
分の転送は、ロード→(もし必要があればシフト)→ス
トアのくり返しによって行なわれることは明らかであろ
う。
上述のSTBYS命令では、バイト単位のメモリの書込み可
否の制御を行なっているので、メモリの書込み回路が複
雑化するようにも思われるが、たとえば、以下で説明す
るようなバイト単位の構成を持ったキャッシュ・メモリ
を備えたコンピュータにおいては、何ら問題にならな
い。
否の制御を行なっているので、メモリの書込み回路が複
雑化するようにも思われるが、たとえば、以下で説明す
るようなバイト単位の構成を持ったキャッシュ・メモリ
を備えたコンピュータにおいては、何ら問題にならな
い。
第2図は、本発明の実施例によるバイト列転送用の命令
を実行するためのコンピュータ中のシステムの一部分と
してのキャッシュ・メモリを示す。
を実行するためのコンピュータ中のシステムの一部分と
してのキャッシュ・メモリを示す。
そもそもキャッシュ・メモリとは、基本的には、メイン
・メモリ中にある情報のうちの限られた量をストアする
高速のバッファである。キャッシュ・メモリは通常はコ
ンピュータの処理ユニットに近接した領域内にあり、す
ばやくアクセスされることができるようになっている。
キャッシュ・メモリはメイン・メモリよりもかなり小さ
く、そのため、コンピュータに関するデータの極くわず
かの部分しか保持していない。処理ユニットが、メイン
・メモリに対して指令を発する都度、キャッシュ・メモ
リをチェックして今参照されているデータは実際、キャ
ッシュ・メモリ中に存在するか否か確かめる。このチェ
ックは、アドレス内のタグと呼ばれる部分をキャッシュ
・メモリ中のタグ部分と比較することにより行なわれ
る。もし両者が一致すれば、参照されているデータは実
際にキヤッシュ中に存在する。これがキャッシュ・ヒッ
トである。もし、アドレスのタグ部分がキャッシュ・メ
モリ中のタグと一致しなければ、参照されているデータ
はキャッシュ・メモリ中には存在しない。この場合はこ
の参照はメイン・メモリに対して行なわれなければなら
ない。この状況がキャッシュ・ミスである。
・メモリ中にある情報のうちの限られた量をストアする
高速のバッファである。キャッシュ・メモリは通常はコ
ンピュータの処理ユニットに近接した領域内にあり、す
ばやくアクセスされることができるようになっている。
キャッシュ・メモリはメイン・メモリよりもかなり小さ
く、そのため、コンピュータに関するデータの極くわず
かの部分しか保持していない。処理ユニットが、メイン
・メモリに対して指令を発する都度、キャッシュ・メモ
リをチェックして今参照されているデータは実際、キャ
ッシュ・メモリ中に存在するか否か確かめる。このチェ
ックは、アドレス内のタグと呼ばれる部分をキャッシュ
・メモリ中のタグ部分と比較することにより行なわれ
る。もし両者が一致すれば、参照されているデータは実
際にキヤッシュ中に存在する。これがキャッシュ・ヒッ
トである。もし、アドレスのタグ部分がキャッシュ・メ
モリ中のタグと一致しなければ、参照されているデータ
はキャッシュ・メモリ中には存在しない。この場合はこ
の参照はメイン・メモリに対して行なわれなければなら
ない。この状況がキャッシュ・ミスである。
第2図において、データ・レジスタ211からのデータが
キャッシュ・メモリ220のバイト入力223に接続されるも
のとする。特に、データ・レジスタ221のバイト“0"255
がキャッシュ・メモリ220のバイト“0"226のデータ入力
ポート224へ接続されるものとする。同様に、データ・
レジスタ221のバイト“1"227はバイト“1"228のデータ
入力ポート229へ接続される。同様にして、バイト“2"2
30はキャッシュ・メモリ220のバイト“2"233の入力ポー
ト231に接続され、またバイト“3"234はキャッシュ・メ
モリ220のバイト“3"241の入力ポート235に接続され
る。命令により生成されるアドレス236は、キャッシュ
・メモリ220によりいくつかの部分237、238、239に分解
される。語内のバイト・アドレスを示す部分239は書込
み制御ユニット240に与えられる。アドレス236中でその
上位側に隣接する部分238はキャッシュ・メモリ220のタ
グ部242にアクセスしてタグ248を読出するためのインデ
クスである。このインデクスとして用いられる部分238
はまたバイト226、228、233、241の各々へのアドレス24
3を指定するためにも用いられる。このアドレス243で固
定されたバイトは書込みイネーブル・パルスが与えられ
れば、書込みが行なわれる。アドレス236の最上位の部
分237は、アドレス236から得られるタグ246である。こ
のタグ246は、キャッシュ・メモリ220のタグ部242から
読出されたタグ248とキャッシュ・メモリ220内のコンパ
レータ250で比較される。もしこの比較の結果、2つの
タグ246と248が一致していることが示されると、キャッ
シュ・ヒットとなる。もしキャッシュ・ヒットではなか
ったら、すなわち、キャッシュ・ミスであったら、デー
タの書込みは行なわれず、キャッシュ・メモリの動作は
終結される。ここで,メイン・メモリにデータのアクセ
スが行なわれる(図示せず)。
キャッシュ・メモリ220のバイト入力223に接続されるも
のとする。特に、データ・レジスタ221のバイト“0"255
がキャッシュ・メモリ220のバイト“0"226のデータ入力
ポート224へ接続されるものとする。同様に、データ・
レジスタ221のバイト“1"227はバイト“1"228のデータ
入力ポート229へ接続される。同様にして、バイト“2"2
30はキャッシュ・メモリ220のバイト“2"233の入力ポー
ト231に接続され、またバイト“3"234はキャッシュ・メ
モリ220のバイト“3"241の入力ポート235に接続され
る。命令により生成されるアドレス236は、キャッシュ
・メモリ220によりいくつかの部分237、238、239に分解
される。語内のバイト・アドレスを示す部分239は書込
み制御ユニット240に与えられる。アドレス236中でその
上位側に隣接する部分238はキャッシュ・メモリ220のタ
グ部242にアクセスしてタグ248を読出するためのインデ
クスである。このインデクスとして用いられる部分238
はまたバイト226、228、233、241の各々へのアドレス24
3を指定するためにも用いられる。このアドレス243で固
定されたバイトは書込みイネーブル・パルスが与えられ
れば、書込みが行なわれる。アドレス236の最上位の部
分237は、アドレス236から得られるタグ246である。こ
のタグ246は、キャッシュ・メモリ220のタグ部242から
読出されたタグ248とキャッシュ・メモリ220内のコンパ
レータ250で比較される。もしこの比較の結果、2つの
タグ246と248が一致していることが示されると、キャッ
シュ・ヒットとなる。もしキャッシュ・ヒットではなか
ったら、すなわち、キャッシュ・ミスであったら、デー
タの書込みは行なわれず、キャッシュ・メモリの動作は
終結される。ここで,メイン・メモリにデータのアクセ
スが行なわれる(図示せず)。
キャッシュ・ヒットが起った場合には、アドレス236の
うちのワード内のバイト位置を示す部分239を調べ、ま
た、手元の特定の動作と組合わせて、上述のようにして
先頭コピーなのかそれとも末尾コピーなのかチェックす
る。これによりどのバイト226、228、233、241へ書込み
イネーブル256が送られるかを決定する。このようなに
して、キャッシュ・メモリ中の語の一部分への書込みが
アドレス236の関数として行なわれる。
うちのワード内のバイト位置を示す部分239を調べ、ま
た、手元の特定の動作と組合わせて、上述のようにして
先頭コピーなのかそれとも末尾コピーなのかチェックす
る。これによりどのバイト226、228、233、241へ書込み
イネーブル256が送られるかを決定する。このようなに
して、キャッシュ・メモリ中の語の一部分への書込みが
アドレス236の関数として行なわれる。
キャッシュ・ミスが起った場合には、データがメイン・
メモリからフェッチされてキャッシュ・メモリ220の中
に置かれる。そして、2つ手前の段落で説明された全動
作がリトライされる。今度は、キャッシュ・ヒットが起
こることが保障されており、コンピュータは通常動作を
続ける。
メモリからフェッチされてキャッシュ・メモリ220の中
に置かれる。そして、2つ手前の段落で説明された全動
作がリトライされる。今度は、キャッシュ・ヒットが起
こることが保障されており、コンピュータは通常動作を
続ける。
以上説明したように本発明によれば、バイト列転送の最
初と最後の処理を簡単に行なうことができるので、単純
な命令体系でも高い実行効率を維持するのに有効であ
る。
初と最後の処理を簡単に行なうことができるので、単純
な命令体系でも高い実行効率を維持するのに有効であ
る。
第1図は、本発明の一実施例において与えられる命令の
フォーマットを示す図,第2図は本発明の一実施例中で
用いられるキャッシュ・メモリのブロック図である。14
0:STBYS命令; 220:キャッシュ・メモリ; 221:データ・レジスタ; 236:アドレス; 240書込み制御ユニット; 242:タグ部; 250:コンパレータ。
フォーマットを示す図,第2図は本発明の一実施例中で
用いられるキャッシュ・メモリのブロック図である。14
0:STBYS命令; 220:キャッシュ・メモリ; 221:データ・レジスタ; 236:アドレス; 240書込み制御ユニット; 242:タグ部; 250:コンパレータ。
Claims (3)
- 【請求項1】アドレス・レジスタを指定するアドレス・
レジスタ・フィールドと、データ・レジスタを指定する
データ・レジスタ・フィールドを有する命令を使用する
情報処理装置のデータ・ストア・方式において、 前記データ・レジスタの上位側を選択するか下位側を選
択するかを指定する上位/下位選択フィールドを設け、 前記アドレス・レジスタの内容に応答して前記データ・
レジスタ中の境界位置を定め、前記上位/下位選択フィ
ールドの内容に応答して前記境界の上位側あるいは下位
側をメモリに移動すべき部分として選択する選択手段
と、 前記選択された部分を前記アドレス・レジスタで指定さ
れる前記メモリ・ロケーションに移動させる移動手段 を設けたことを特徴とするデータ・ストア方式。 - 【請求項2】前記命令は変更フィールドを有し、前記変
更フィールドに応答して前記アドレス・レジスタの内容
を書き換える変更手段を設けたことを特徴とする特許請
求の範囲第1項記載のデータ・ストア方式。 - 【請求項3】前記命令は、前記変更手段が前記アドレス
・レジスタの内容の書き換えに当たって使用するディス
プレースメントが入るディスプレースメント・フィール
ドを有することを特徴とする特許請求の範囲第2項記載
のデータ・ストア方式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US750701 | 1985-06-28 | ||
US06/750,701 US4739471A (en) | 1985-06-28 | 1985-06-28 | Method and means for moving bytes in a reduced instruction set computer |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS623337A JPS623337A (ja) | 1987-01-09 |
JPH0769794B2 true JPH0769794B2 (ja) | 1995-07-31 |
Family
ID=25018862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61150608A Expired - Lifetime JPH0769794B2 (ja) | 1985-06-28 | 1986-06-26 | デ−タ・ストア方式 |
Country Status (8)
Country | Link |
---|---|
US (1) | US4739471A (ja) |
EP (1) | EP0207666B1 (ja) |
JP (1) | JPH0769794B2 (ja) |
KR (1) | KR870000642A (ja) |
CN (1) | CN1009588B (ja) |
AU (1) | AU600442B2 (ja) |
CA (1) | CA1264861A (ja) |
DE (1) | DE3650006T2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5133072A (en) * | 1986-11-13 | 1992-07-21 | Hewlett-Packard Company | Method for improved code generation in reduced instruction set computers |
US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
WO1991011765A1 (en) * | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
US5442769A (en) * | 1990-03-13 | 1995-08-15 | At&T Corp. | Processor having general registers with subdivisions addressable in instructions by register number and subdivision type |
CA2045735A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Computer performance by eliminating branches |
CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
US5706460A (en) * | 1991-03-19 | 1998-01-06 | The United States Of America As Represented By The Secretary Of The Navy | Variable architecture computer with vector parallel processor and using instructions with variable length fields |
CN1045674C (zh) * | 1992-04-27 | 1999-10-13 | 北京市大兴县多思软件有限公司 | 一种宏指令集的指令体系 |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
JP3644959B2 (ja) | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
EP1164479B1 (en) | 1993-05-27 | 2007-05-09 | Matsushita Electric Industrial Co., Ltd. | Program converting unit |
WO1994029790A1 (en) * | 1993-06-14 | 1994-12-22 | Apple Computer, Inc. | Method and apparatus for finding a termination character within a variable length character string or a processor |
US5815695A (en) * | 1993-10-28 | 1998-09-29 | Apple Computer, Inc. | Method and apparatus for using condition codes to nullify instructions based on results of previously-executed instructions on a computer processor |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5572267A (en) * | 1978-11-27 | 1980-05-30 | Hitachi Ltd | Data processor |
JPS5798030A (en) * | 1980-12-12 | 1982-06-18 | Oki Electric Ind Co Ltd | Data processing system |
JPS59221746A (ja) * | 1983-05-31 | 1984-12-13 | Citizen Watch Co Ltd | マイクロコンピユ−タ |
US4569016A (en) * | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
-
1985
- 1985-06-28 US US06/750,701 patent/US4739471A/en not_active Expired - Lifetime
-
1986
- 1986-06-02 CN CN86103694A patent/CN1009588B/zh not_active Expired
- 1986-06-12 EP EP86304501A patent/EP0207666B1/en not_active Expired - Lifetime
- 1986-06-12 DE DE3650006T patent/DE3650006T2/de not_active Expired - Lifetime
- 1986-06-20 CA CA000512068A patent/CA1264861A/en not_active Expired - Lifetime
- 1986-06-24 AU AU59166/86A patent/AU600442B2/en not_active Expired
- 1986-06-26 JP JP61150608A patent/JPH0769794B2/ja not_active Expired - Lifetime
- 1986-06-27 KR KR1019860005175A patent/KR870000642A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
JPS623337A (ja) | 1987-01-09 |
AU5916686A (en) | 1988-01-07 |
EP0207666A2 (en) | 1987-01-07 |
DE3650006D1 (de) | 1994-09-08 |
US4739471A (en) | 1988-04-19 |
CA1264861A (en) | 1990-01-23 |
AU600442B2 (en) | 1990-08-16 |
EP0207666A3 (en) | 1988-10-26 |
EP0207666B1 (en) | 1994-08-03 |
CN86103694A (zh) | 1986-12-24 |
DE3650006T2 (de) | 1994-11-17 |
CN1009588B (zh) | 1990-09-12 |
KR870000642A (ko) | 1987-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2931890B2 (ja) | データ処理装置 | |
US5077657A (en) | Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor | |
JP3615770B2 (ja) | アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ | |
US5781758A (en) | Software emulation system with reduced memory requirements | |
EP0071028B1 (en) | Instructionshandling unit in a data processing system with instruction substitution and method of operation | |
US5406644A (en) | Apparatus and method for emulating a computer instruction set using a jump table in the host computer | |
US5249280A (en) | Microcomputer having a memory bank switching apparatus for accessing a selected memory bank in an external memory | |
JPH0769794B2 (ja) | デ−タ・ストア方式 | |
JPH01201729A (ja) | デコード方法 | |
JPH025140A (ja) | シミュレーシヨン方法 | |
JPS6339931B2 (ja) | ||
JP3203401B2 (ja) | データ処理装置 | |
US5940876A (en) | Stride instruction for fetching data separated by a stride amount | |
JPS5811654B2 (ja) | デ−タシヨリシステム | |
US6687808B2 (en) | Data processor using indirect register addressing | |
JP2840604B2 (ja) | マイクロコード式cpuで実行される命令用のオペランドを指定する方法および装置 | |
EP0310600B1 (en) | Arrangement for software emulation | |
EP0010197B1 (en) | Data processing system for interfacing a main store with a control sectron and a data processing section | |
KR19990036893A (ko) | 다중 어드레싱 모드를 실행하는 프로세서 구조 및 그 설계방법 | |
US4812971A (en) | Central processing unit for a digital computer | |
JPS645330B2 (ja) | ||
EP0206653A2 (en) | Method and means for loading and storing data in a reduced instruction set computer | |
EP0013291B1 (en) | Instruction fetch control system in a computer | |
JPS623336A (ja) | 条件付きブランチ方式 | |
US4812989A (en) | Method for executing machine language instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |