JPH0135366B2 - - Google Patents
Info
- Publication number
- JPH0135366B2 JPH0135366B2 JP59115647A JP11564784A JPH0135366B2 JP H0135366 B2 JPH0135366 B2 JP H0135366B2 JP 59115647 A JP59115647 A JP 59115647A JP 11564784 A JP11564784 A JP 11564784A JP H0135366 B2 JPH0135366 B2 JP H0135366B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- mask
- bit
- bits
- instruction
- 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
Links
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
[産業上の利用分野]
本発明は、通常の計算機アーキテクチヤにおけ
る命令セツトよりずつと小規模の命令セツト(以
下、基本命令セツトという)しか持たない計算機
システムに係る。 [従来技術] 最近のVLIS技術の発達により、マイクロプロ
セツサの設計に関しては、相反する2つのアプロ
ーチが可能になつてきた。第1のアプローチは、
VLISを十二分に利用して、これまではソフトウ
エアで実現されていた機能をハードウエアで実現
させるものである。当然の結果として、マイクロ
プロセツサの物理的な構成は複雑になる。これに
対して第2のアプローチは、これまでより多くの
機能をソフトウエアで実現させることによつて、
簡単で且つ高速のマイクロプロセツサを構成しよ
うとするものである。後者のアプローチの代表的
な例が下記の文献に記載されている。 (1) George Radin“The801Minicomputer”
ACM SIGPLAN NOTICES、第17巻、第4
号、1982年4月、39〜47頁 (2) Patterson、Sequin“RISC1:a Reduced
Instruction Set VLSI Computer”IEEE
Computer、1982年9月、8〜20頁 第1のアプローチは、ソフトウエアの開発費用
及びその実行速度を考えた場合、年ごとに安くな
つているVLSI回路を用いてシステムを構成した
方が全体として価格性能比を上げることができ
る、という考えに基いている。従つて、第1のア
プローチをとるシステム設計者は、VLSI回路の
潜在能力に合わせてアーキテクチヤをより複雑に
している。これは、最近の計算機とその前の計算
機、例えばVAX11とPDP−11、IBMシステム/
38とIBMシステム/3、インテルAPX−432と
8036、などを比較してみれば明らかである。ただ
しアーキテスチヤが複雑になると、それだけシス
テム計設に要する時間が長くなり、設計ミスの可
能性も増える。この型のシステムは大規模命令セ
ツト計算機システム、略してCISCシステムと呼
ばれている。 これに対して、前記の文献に記載されているよ
うな第2のアプローチに従つて構成されたシステ
ムは小規模命令セツト計算機(RISC)システム
あるいは基本命令セツト計算機システム(以下、
PRISMシステムという)と呼ばれる。PRISMシ
ステムの中心はCPUである。システム設計の大
部分は、ユーザに対してCPUの基本能力を使用
可能にする、ということに向けられている。全体
的な構成は従来のCPUとは幾分異なつている。 本発明もPRISMシステムを対象にしているの
で、以下前記の文献に記載されているCPUの設
計原理及び従来のCPUとの違いについて、本発
明に関係する範囲内で少し詳しく説明する。 小型ないし中型の汎用計算機システムにおける
通常のCPUは、アーキテクチヤを“解釈”する
布線式マイクロプロセツサで構成されている。こ
のようなCPUでは、1つのCPU命令を実行する
ために、制御記憶装置にある幾つかのマイクロ命
令が実行される。1つの平均的なCPU命令を実
行するのに必要なマイクロ命令(マシンサイク
ル)の数は、使用されているマイクロプロセツサ
の能力(従つて価格)、CPUアーキテクチヤの複
雑さ、及び実行中のアプリケーシヨン(即ち命令
ミツクス)によつて左右される。例えば、IBM
システム/370モデル168は1つのシステム/370
命令当り3〜6サイクルを要し、モデル148は10
〜15サイクルを要し、システム/360モデル30は
30サイクル以上になる。 CPUの設計によつては、ルツクアヘツド、並
列処理及び分岐の記録といつた技術を用いること
により、1命令当りのマシンサイクル数を1に近
づけることができる。 アプリケーシヨンによる相違については、例え
ば一般に科学技術計算は浮動小数点命令を使用す
るが、事務計算は10進演算を使用する。ところ
が、アプリケーシヨン・コードの代りに走行シス
テム全体を追跡してみると、最も頻繁に使用され
る命令に顕著な類似性があることがわかる。これ
らの命令は、ロード、記憶、分岐、比較、整数演
算、論理桁送りといつた比較的簡単な命令であ
り、基礎となるマイクロプロセツサの命令セツト
にもこれらと同じ機能を持つた命令がある。従つ
て、マイクロプロセツサのアーキテクチヤが
CPUのアーキテクチヤと正確には一致しない場
合であつても、そのような機能についてまで
CPUアーキテクチヤをマイクロプロセツサで
“解釈”することは無駄であると考えられた。 従つて、PRISMシステムのために設計された
基本命令セツトはハードウエアで直接実行するこ
とができる。即ち、各々の基本命令は1マシンサ
イクルしか必要としない。複雑な機能は、通常の
CPUの場合と同じく、マイクロコードで実現さ
れる。ただし、PRUSMシステムにおけるマイク
ロコードは正にコードであつて、関連する機能は
基本命令セツト上で走行するソフトウエア・サブ
ルーチンによつて実現される。 高速の制御記憶装置に記憶されていることから
生じるマイクロコードの利点は、キヤツシユをデ
ータ用と命令用とに分けた記憶階相では、事実上
消滅する。命令キヤツシユは“ページ可能”制御
記憶装置として動く。通常のCPUでは、全ての
アプリケーシヨンにわたつてどの機能が最も頻繁
に使用されるかは、設計者が前もつて決める。従
つて、例えば倍精度の浮動小数点除算命令は常に
高速の制御記憶装置にあるが、第1レベル割込み
ハンドラは主記憶装置にある。命令キヤツシユを
用いた場合は、最近の使用状況によつて、どの機
能がより速く使用できるかが決まる。 このアプローチによれば、特定のジヨブを実行
するのに要するサイクル数は、最悪の場合であつ
ても、複雑な命令がマイクロプログラムされてい
る通常の小型ないし中型CPUにおけるサイクル
数以下である。更に、基本命令の定義づけをうま
く行なえば、必要なサイクル数がより少なくなる
ことがわかつた。 大部分の命令ミツクスによれば、データの書込
みまたは読取りに関する命令が全体の20〜40%を
占め、分岐命令が15〜30%を占めている。更に、
多くのアプリケーシヨンにおいては、記憶装置帯
域幅のかなりの部分がI/Oのためにさかれてい
る。記憶装置アクセスのためにCPUが多くのサ
イクルにわたつて待ち状態へ強制されると、その
間の処理時間が無駄になる。 従つて、PRISMシステムの第2の目的は、記
憶装置アクセスに起因するCPUの遊休時間をで
きるだけ短くするように記憶階層及びシステム・
アーキテクチヤを構築することであつた。まず、
CPUのマシンサイクルに匹敵するアクセス時間
を持つたキヤツシユが必要なことは明らかであ
る。次に、記憶命令が出されても直ちに主記憶装
置への記憶を行なわなくてもよいということか
ら、ストア・イン方式のキヤツシユが採用され
た。仮に1つのワードを記憶するのに10サイクル
を要し、且つ命令全体の10%が記憶命令であると
すると、記憶命令及びそれに続く命令を並行して
実行できない限り、CPUの遊休時間は全体の約
半分に達する。 しかし、サイクルごとに新しい命令を必要と
し、且つ2サイクルおきにデータをアクセスする
CPU構成においては、サイクルごとにワードを
供給する通常のキヤツシユを用いると、性能が低
下する。従つて、キヤツシユはデータを含む部分
と命令を含む部分とに分けられた。このようにし
てキヤツシユへの帯域幅は実質的に倍にされ、外
部記憶装置からの命令及びデータの非同期的取出
しが可能になつた。 通常のアーキテクチヤでは、データの記憶は命
令を変更することがあるため、2つのキヤツシユ
が適切に同期していることをハードウエアが保証
しなければならない。これはコスト高になり、又
性能の低下にもつながる。命令先取り機構でさ
え、記憶有効アドレスと命令アドレスレジスタの
内容を比較しなければならないので、複雑にな
る。 ところが指標レジスタが計算機に導入されるよ
うになつて、命令を変更する頻度が大幅に減少さ
れ、今日に至るまで事実上命令が変更されること
はなくなつた。従つてPRISMアーキテクチヤは、
上述のようなハードウエア同報通信を必要としな
い。その代りに分割キヤツシユの存在がソフトウ
エアに対して明示され、必要なときにキヤツシユ
を同期させるための命令がソフトウエアに与えら
れた。同期が必要なのは、例えばプログラム取出
しのような特別の機能の場合だけである。 同様に、キヤツシユの存在がソフトウエア側か
らはわからない通常のシステムにおいては、I/
Oオペレーシヨンもキヤツシユを介して行なう必
要がある。その間CPUは待機していなければな
らず、またI/Oオペレーシヨンが終了した後の
キヤツシユの内容は、実行中のプロセスの実効ペ
ージセツトではなくなるので、キヤツシユを強制
的に一時モードへ戻さなければならない。高価な
システムにおいてすら、デイレクトリを重複して
設けると性能の低下を招く。 現在のシステムでは、I/Oオペレーシヨンを
開始する責任は、サブシステム・バツフアとユー
ザ領域との間で固定ブロツク転送を行なうシステ
ム・アクセス方式(IMS、VSAM、VTAM、ペ
ージングなど)に移つてきている。これは、アク
セス方式がバツフアの位置及び範囲だけでなく、
I/O転送が処理される時も知つていることを意
味する。従つて、このソフトウエアはキヤツシユ
を適切に同期させることができ、チヤネル
(PRISMシステムにおける直接メモリアダプタ)
は外部記憶装置との間で直接転送を行なうことが
できる。この結果、記憶装置帯域幅の半分がI/
Oのために使用中であつても、CPUの性能が低
下することはない。 これまでの説明でいえることは、実現させるの
に費用がかかるか、または低速のシステム機能が
あり、且つソフトウエアが頻繁に生じる性能低下
要因を認識できる(あるいは機能全体を走行時間
からコンパイル時間へ移すことができる)場合に
は、その機能はハードウエアからソフトウエアへ
移され、それによつてコスト低減及び性能改善が
達成され、ということである。 上述の設計原理をキヤツシユ自身の管理に適用
した例について説明する。PRISMシステムにお
いては、キヤツシユの各データ・ブロツク(ライ
ンと呼ばれている)は32バイトであり、これに対
して最大記憶単位は4バイトである。ラインの大
きさが記憶単位よりも大きいストア・イン式のキ
ヤツシユでいわゆるキヤツシユ・ミスが生じる
と、要求されたワードを含むライン全体を外部記
憶装置からキヤツシユへ取出さなければならな
い。これは、同じラインに含まれる別のワードが
続いて要求される可能性が高いためである。とこ
ろが記憶動作の場合は、プログラムが新しく獲得
したスペースへの1回の記憶で終ることが多い。
このようなスペースの例としては、プロシージヤ
呼出し時にプツシユされたプロセス・スタツク、
ゲツトメイン要求によつて得られた領域、第1レ
ベル割込みハンドラによつて使用されるレジスタ
記憶域などがある。いずれの場合も、ハードウエ
アは当該ラインの再度のアクセスが不要であるこ
とを知り得ないが、ソフトウエアにとつては、こ
の状況は極めて明白である。 従つて、PRISMシステムでは、要求されたラ
インをキヤツシユのデイレクトリ中で確立する
が、外部記憶装置からはそのラインの内容を取出
さないデータ・キヤツシユ・ライン設定命令が定
義されている。記憶のために新しいラインが必要
なときは常にこの命令を実行するようにすると、
外部記憶装置からの不必要な取出しは避けられる
が、今度は命令実行のための余分のマシンサイク
ルが必要になる。従つて、全体的にみれば、この
命令の実行には一長一短がある。 同様に、スクラツチ記憶域が不要となつたとき
にデータ・キヤツシユ・ライン無効化命令を実行
して、デイレクトリ中の指定されたラインに対応
するエントリの変更ビツトをターンオフすると、
不必要な書戻しが避けられる。詳細は1982年12月
30日付のPCT出願U.S.82/01830に記載されてい
る。 PRISMシステムの優れた特性は前述のとおり
であるが、その潜在的な設計目標を十分に実現す
るためには、単一マシンサイクルで実行可能な多
数の命令を利用することができるようにハードウ
エアを変更するのが有利であることが判つた。し
かしながら、前掲の文献(1)及び(2)には、本発明に
従つた単一マシンサイクルで実行可能な特別のマ
スク・回転命令は記載されておらず、またこれら
の命令を実現するためのハードウエアについても
記載されていない。 さらに、米国特許第3982229号には、本発明と
同様の或る種の機能を遂行するための命令セツト
及び論理回路手段が開示されているが、これらの
命令は指定された算術オペレーシヨンをその論理
回路手段で遂行するにあたり複数のマシンサイク
ルを要する。たとえば、マスクの右端の内容を決
定するには、値P1とP2の加算(または減算)を
行なわねばならず、しかもこれらの指定されたオ
ペレーシヨンを遂行する前に専用の作業レジスタ
へそれぞれの内容を別個にロードしなければなら
ないのである。 [発明が解決しようとする問題点] 前述のように、従来技術のシステムでは、桁送
り機能、組合せ機能、挿入機能、及びビツト境界
合せ機能を遂行する場合、これらの機能を単一マ
シンサイクル遂行することができない。 従つて、本発明のこの問題点を解決するため、
単一マシンサイクルで実行可能なマスク・回転命
令セツト及び該命令セツトを実現するためのハー
ドウエア機能を提供することを目的とする。 [問題点を解決するための手段] 前記目的を達成するため、本発明の命令処理装
置は、単一マシンサイクルで実行可能なマスク・
回転命令を遂行するための機構を、 前記命令で指定されたマスクパターン遷移アド
レスからNビツト(Nは1より大きい整数)のマ
スクを生成する手段と、 Nビツトのソースオペランドを前記命令で指定
された量だけ回転する手段と、 前記命令で指定される情報に基づいてNビツト
の目的オペランドを選択する手段と、 前記マスクの所与のビツトが第1の論理値を有
する場合は前記目的オペランドの対応ビツトを維
持し、前記マスクの所与のビツトが第2の論理値
を有する場合は前記回転されたソースオペランド
の対応ビツトを維持するように、前記回転された
ソースオペランドと前記目的オペランドとを前記
マスクの制御下で組み合わせる手段と、 Nビツトの前記組合わせ結果を前記命令によつ
て指定されたレジスタへ戻す手段とから構成し、 前記手段の各々を並行に動作させるようにした
ことを特徴とする。 [実施例] (a) PRISMシステム・アーキテクチヤの概要 前述のように、PRISMシステムの中心は
CPUであるが、PRISMシステムはCPUの他
に、主記憶装置、キヤツシユ機構、再配置機構
及びシステムI/Oを含んでいる(第1図参
照)。キヤツシユ機構はデータ部と命令部に分
かれている。 CPUアーキテクチヤは従来のものに比べて
非常に簡単である。本PRISMシステムの特徴
として、各々の命令はハードウエアにより単一
マシンサイクルで実行される。このような命令
を基本命令という。基本命令は記憶装置アクセ
ス(普通は並行処理される)を除くと、マシン
サイクルを1つしか必要としない。ここで“基
本”という語は、簡単さというよりもむしろ時
間、即ち単一マシンサイクルに関係している。
基本命令自体は単一マシンサイクル内で実行可
能であるが、それに伴う実際の機能は複雑なこ
とがある。 “単一マシンサイクル”という語も幾つかの
定義が可能である。例えば、単一マシンサイク
ルは“継続的に繰返される基本システムクロツ
クの期間であつて、その間に基本システム・オ
ペレーシヨンが遂行されるもの”である。もう
少し別のいい方をすれば、単一マシンサイクル
は“基本クロツク期間に含まれる全てのクロツ
ク・パルスをシステムが1回完全に使用するの
に必要な時間”である。従つて、単一マシンサ
イクル内でCPUの全てのデータフロー機構を
1回使用することができる。 単一マシンサイクルで実行可能な本発明のマ
スク・回転命令は新しく追加された基本命令の
代表的な例であり、これらの命令は以下で詳述
するように多くのデータ再構成状況において相
当量の時間を節約することを可能にするもので
ある。 PRISMシステムのアーキテクチヤ及びその
命令セツトは下記の3つを達成するものであ
る。 (1) 命令当り1サイクルの高速CPUをコンパ
イルに適した命令セツトを用いて定義する。 (2) 記憶階層、I/O、再配置及びソフトウエ
アの活動がCPUでの命令実行と並行して行
なわれる。これにより待ち時間が短くなる。 (3) 全てのプログラムをうまくコンパイルでき
るコードを生成する最適化コンパイラを開発
する。 単一マシンサイクルで実行可能であるという
ことに加えて、命令に関する重要なテーマにそ
の規則性がある。これはハードウエアによる実
現を容易にしていた。例えば、全てのオペラン
ドは自分の大きさに合つた境界を持つていなけ
ればならない(半ワードの場合は半ワード境
界、ワードの場合はワード境界)。命令は全て
フルワードであり、従つてその境界もフルワー
ド境界である。 レジスタ名フイールドはシステム/370の4
ビツトに対し、1ビツト増えて5ビツトであ
る。これによりレジスタを32個まで装備でき
る。従つて、PRISMシステムを用いて、例え
ばシステム/370のように16個の汎用レジスタ
を備えた他のアーキテクチヤをエミユレートす
ることができる。システム/370の命令セツト
における基本命令サブセツトを用いて複雑な命
令をエミユレートする場合は、レジスタ名フイ
ールドの長さ(4ビツト)がネツクになる。 更に、命令の長さが4バイトあるので、各命
令の目的レジスタを明示指定することができ、
従つて入力オペランドを壊す必要はない。これ
は一般に“3アドレス”形式と呼ばれている。 PRISMシステムは真の32ビツト・アーキテ
クチヤであり、16ビツト・アーキテクチヤに拡
張レジスタを加えたものではない。アドレスは
32ビツト長であり、算術演算には32ビツトの2
の補数が使用され、論理命令及び桁送り命令な
32ビツトのワードを取扱う。桁送りは31ビツト
まで可能である。 第2A図及び第2B図に示すように、
PRISMシステムのCPUの主構成要素は、2入
力のALU、2つの入力ポート及び3つの出力
ポートを持つた汎用レジスタ・フアイル(32ビ
ツトのレジスタを32個含む)、ならびに32ビツ
トの条件レジスタを含む条件論理である。条件
レジスタはオペレーシヨンに関する種々の条件
を示すもので、検査及び分岐を可能にする。条
件レジスタの各ビツトの意味は下記の表1のと
おりである。ただし、条件レジスタのビツトの
うち極く僅かなものだけが本発明に従つてマス
ク・回転命令の実行に関係するにすぎない。
る命令セツトよりずつと小規模の命令セツト(以
下、基本命令セツトという)しか持たない計算機
システムに係る。 [従来技術] 最近のVLIS技術の発達により、マイクロプロ
セツサの設計に関しては、相反する2つのアプロ
ーチが可能になつてきた。第1のアプローチは、
VLISを十二分に利用して、これまではソフトウ
エアで実現されていた機能をハードウエアで実現
させるものである。当然の結果として、マイクロ
プロセツサの物理的な構成は複雑になる。これに
対して第2のアプローチは、これまでより多くの
機能をソフトウエアで実現させることによつて、
簡単で且つ高速のマイクロプロセツサを構成しよ
うとするものである。後者のアプローチの代表的
な例が下記の文献に記載されている。 (1) George Radin“The801Minicomputer”
ACM SIGPLAN NOTICES、第17巻、第4
号、1982年4月、39〜47頁 (2) Patterson、Sequin“RISC1:a Reduced
Instruction Set VLSI Computer”IEEE
Computer、1982年9月、8〜20頁 第1のアプローチは、ソフトウエアの開発費用
及びその実行速度を考えた場合、年ごとに安くな
つているVLSI回路を用いてシステムを構成した
方が全体として価格性能比を上げることができ
る、という考えに基いている。従つて、第1のア
プローチをとるシステム設計者は、VLSI回路の
潜在能力に合わせてアーキテクチヤをより複雑に
している。これは、最近の計算機とその前の計算
機、例えばVAX11とPDP−11、IBMシステム/
38とIBMシステム/3、インテルAPX−432と
8036、などを比較してみれば明らかである。ただ
しアーキテスチヤが複雑になると、それだけシス
テム計設に要する時間が長くなり、設計ミスの可
能性も増える。この型のシステムは大規模命令セ
ツト計算機システム、略してCISCシステムと呼
ばれている。 これに対して、前記の文献に記載されているよ
うな第2のアプローチに従つて構成されたシステ
ムは小規模命令セツト計算機(RISC)システム
あるいは基本命令セツト計算機システム(以下、
PRISMシステムという)と呼ばれる。PRISMシ
ステムの中心はCPUである。システム設計の大
部分は、ユーザに対してCPUの基本能力を使用
可能にする、ということに向けられている。全体
的な構成は従来のCPUとは幾分異なつている。 本発明もPRISMシステムを対象にしているの
で、以下前記の文献に記載されているCPUの設
計原理及び従来のCPUとの違いについて、本発
明に関係する範囲内で少し詳しく説明する。 小型ないし中型の汎用計算機システムにおける
通常のCPUは、アーキテクチヤを“解釈”する
布線式マイクロプロセツサで構成されている。こ
のようなCPUでは、1つのCPU命令を実行する
ために、制御記憶装置にある幾つかのマイクロ命
令が実行される。1つの平均的なCPU命令を実
行するのに必要なマイクロ命令(マシンサイク
ル)の数は、使用されているマイクロプロセツサ
の能力(従つて価格)、CPUアーキテクチヤの複
雑さ、及び実行中のアプリケーシヨン(即ち命令
ミツクス)によつて左右される。例えば、IBM
システム/370モデル168は1つのシステム/370
命令当り3〜6サイクルを要し、モデル148は10
〜15サイクルを要し、システム/360モデル30は
30サイクル以上になる。 CPUの設計によつては、ルツクアヘツド、並
列処理及び分岐の記録といつた技術を用いること
により、1命令当りのマシンサイクル数を1に近
づけることができる。 アプリケーシヨンによる相違については、例え
ば一般に科学技術計算は浮動小数点命令を使用す
るが、事務計算は10進演算を使用する。ところ
が、アプリケーシヨン・コードの代りに走行シス
テム全体を追跡してみると、最も頻繁に使用され
る命令に顕著な類似性があることがわかる。これ
らの命令は、ロード、記憶、分岐、比較、整数演
算、論理桁送りといつた比較的簡単な命令であ
り、基礎となるマイクロプロセツサの命令セツト
にもこれらと同じ機能を持つた命令がある。従つ
て、マイクロプロセツサのアーキテクチヤが
CPUのアーキテクチヤと正確には一致しない場
合であつても、そのような機能についてまで
CPUアーキテクチヤをマイクロプロセツサで
“解釈”することは無駄であると考えられた。 従つて、PRISMシステムのために設計された
基本命令セツトはハードウエアで直接実行するこ
とができる。即ち、各々の基本命令は1マシンサ
イクルしか必要としない。複雑な機能は、通常の
CPUの場合と同じく、マイクロコードで実現さ
れる。ただし、PRUSMシステムにおけるマイク
ロコードは正にコードであつて、関連する機能は
基本命令セツト上で走行するソフトウエア・サブ
ルーチンによつて実現される。 高速の制御記憶装置に記憶されていることから
生じるマイクロコードの利点は、キヤツシユをデ
ータ用と命令用とに分けた記憶階相では、事実上
消滅する。命令キヤツシユは“ページ可能”制御
記憶装置として動く。通常のCPUでは、全ての
アプリケーシヨンにわたつてどの機能が最も頻繁
に使用されるかは、設計者が前もつて決める。従
つて、例えば倍精度の浮動小数点除算命令は常に
高速の制御記憶装置にあるが、第1レベル割込み
ハンドラは主記憶装置にある。命令キヤツシユを
用いた場合は、最近の使用状況によつて、どの機
能がより速く使用できるかが決まる。 このアプローチによれば、特定のジヨブを実行
するのに要するサイクル数は、最悪の場合であつ
ても、複雑な命令がマイクロプログラムされてい
る通常の小型ないし中型CPUにおけるサイクル
数以下である。更に、基本命令の定義づけをうま
く行なえば、必要なサイクル数がより少なくなる
ことがわかつた。 大部分の命令ミツクスによれば、データの書込
みまたは読取りに関する命令が全体の20〜40%を
占め、分岐命令が15〜30%を占めている。更に、
多くのアプリケーシヨンにおいては、記憶装置帯
域幅のかなりの部分がI/Oのためにさかれてい
る。記憶装置アクセスのためにCPUが多くのサ
イクルにわたつて待ち状態へ強制されると、その
間の処理時間が無駄になる。 従つて、PRISMシステムの第2の目的は、記
憶装置アクセスに起因するCPUの遊休時間をで
きるだけ短くするように記憶階層及びシステム・
アーキテクチヤを構築することであつた。まず、
CPUのマシンサイクルに匹敵するアクセス時間
を持つたキヤツシユが必要なことは明らかであ
る。次に、記憶命令が出されても直ちに主記憶装
置への記憶を行なわなくてもよいということか
ら、ストア・イン方式のキヤツシユが採用され
た。仮に1つのワードを記憶するのに10サイクル
を要し、且つ命令全体の10%が記憶命令であると
すると、記憶命令及びそれに続く命令を並行して
実行できない限り、CPUの遊休時間は全体の約
半分に達する。 しかし、サイクルごとに新しい命令を必要と
し、且つ2サイクルおきにデータをアクセスする
CPU構成においては、サイクルごとにワードを
供給する通常のキヤツシユを用いると、性能が低
下する。従つて、キヤツシユはデータを含む部分
と命令を含む部分とに分けられた。このようにし
てキヤツシユへの帯域幅は実質的に倍にされ、外
部記憶装置からの命令及びデータの非同期的取出
しが可能になつた。 通常のアーキテクチヤでは、データの記憶は命
令を変更することがあるため、2つのキヤツシユ
が適切に同期していることをハードウエアが保証
しなければならない。これはコスト高になり、又
性能の低下にもつながる。命令先取り機構でさ
え、記憶有効アドレスと命令アドレスレジスタの
内容を比較しなければならないので、複雑にな
る。 ところが指標レジスタが計算機に導入されるよ
うになつて、命令を変更する頻度が大幅に減少さ
れ、今日に至るまで事実上命令が変更されること
はなくなつた。従つてPRISMアーキテクチヤは、
上述のようなハードウエア同報通信を必要としな
い。その代りに分割キヤツシユの存在がソフトウ
エアに対して明示され、必要なときにキヤツシユ
を同期させるための命令がソフトウエアに与えら
れた。同期が必要なのは、例えばプログラム取出
しのような特別の機能の場合だけである。 同様に、キヤツシユの存在がソフトウエア側か
らはわからない通常のシステムにおいては、I/
Oオペレーシヨンもキヤツシユを介して行なう必
要がある。その間CPUは待機していなければな
らず、またI/Oオペレーシヨンが終了した後の
キヤツシユの内容は、実行中のプロセスの実効ペ
ージセツトではなくなるので、キヤツシユを強制
的に一時モードへ戻さなければならない。高価な
システムにおいてすら、デイレクトリを重複して
設けると性能の低下を招く。 現在のシステムでは、I/Oオペレーシヨンを
開始する責任は、サブシステム・バツフアとユー
ザ領域との間で固定ブロツク転送を行なうシステ
ム・アクセス方式(IMS、VSAM、VTAM、ペ
ージングなど)に移つてきている。これは、アク
セス方式がバツフアの位置及び範囲だけでなく、
I/O転送が処理される時も知つていることを意
味する。従つて、このソフトウエアはキヤツシユ
を適切に同期させることができ、チヤネル
(PRISMシステムにおける直接メモリアダプタ)
は外部記憶装置との間で直接転送を行なうことが
できる。この結果、記憶装置帯域幅の半分がI/
Oのために使用中であつても、CPUの性能が低
下することはない。 これまでの説明でいえることは、実現させるの
に費用がかかるか、または低速のシステム機能が
あり、且つソフトウエアが頻繁に生じる性能低下
要因を認識できる(あるいは機能全体を走行時間
からコンパイル時間へ移すことができる)場合に
は、その機能はハードウエアからソフトウエアへ
移され、それによつてコスト低減及び性能改善が
達成され、ということである。 上述の設計原理をキヤツシユ自身の管理に適用
した例について説明する。PRISMシステムにお
いては、キヤツシユの各データ・ブロツク(ライ
ンと呼ばれている)は32バイトであり、これに対
して最大記憶単位は4バイトである。ラインの大
きさが記憶単位よりも大きいストア・イン式のキ
ヤツシユでいわゆるキヤツシユ・ミスが生じる
と、要求されたワードを含むライン全体を外部記
憶装置からキヤツシユへ取出さなければならな
い。これは、同じラインに含まれる別のワードが
続いて要求される可能性が高いためである。とこ
ろが記憶動作の場合は、プログラムが新しく獲得
したスペースへの1回の記憶で終ることが多い。
このようなスペースの例としては、プロシージヤ
呼出し時にプツシユされたプロセス・スタツク、
ゲツトメイン要求によつて得られた領域、第1レ
ベル割込みハンドラによつて使用されるレジスタ
記憶域などがある。いずれの場合も、ハードウエ
アは当該ラインの再度のアクセスが不要であるこ
とを知り得ないが、ソフトウエアにとつては、こ
の状況は極めて明白である。 従つて、PRISMシステムでは、要求されたラ
インをキヤツシユのデイレクトリ中で確立する
が、外部記憶装置からはそのラインの内容を取出
さないデータ・キヤツシユ・ライン設定命令が定
義されている。記憶のために新しいラインが必要
なときは常にこの命令を実行するようにすると、
外部記憶装置からの不必要な取出しは避けられる
が、今度は命令実行のための余分のマシンサイク
ルが必要になる。従つて、全体的にみれば、この
命令の実行には一長一短がある。 同様に、スクラツチ記憶域が不要となつたとき
にデータ・キヤツシユ・ライン無効化命令を実行
して、デイレクトリ中の指定されたラインに対応
するエントリの変更ビツトをターンオフすると、
不必要な書戻しが避けられる。詳細は1982年12月
30日付のPCT出願U.S.82/01830に記載されてい
る。 PRISMシステムの優れた特性は前述のとおり
であるが、その潜在的な設計目標を十分に実現す
るためには、単一マシンサイクルで実行可能な多
数の命令を利用することができるようにハードウ
エアを変更するのが有利であることが判つた。し
かしながら、前掲の文献(1)及び(2)には、本発明に
従つた単一マシンサイクルで実行可能な特別のマ
スク・回転命令は記載されておらず、またこれら
の命令を実現するためのハードウエアについても
記載されていない。 さらに、米国特許第3982229号には、本発明と
同様の或る種の機能を遂行するための命令セツト
及び論理回路手段が開示されているが、これらの
命令は指定された算術オペレーシヨンをその論理
回路手段で遂行するにあたり複数のマシンサイク
ルを要する。たとえば、マスクの右端の内容を決
定するには、値P1とP2の加算(または減算)を
行なわねばならず、しかもこれらの指定されたオ
ペレーシヨンを遂行する前に専用の作業レジスタ
へそれぞれの内容を別個にロードしなければなら
ないのである。 [発明が解決しようとする問題点] 前述のように、従来技術のシステムでは、桁送
り機能、組合せ機能、挿入機能、及びビツト境界
合せ機能を遂行する場合、これらの機能を単一マ
シンサイクル遂行することができない。 従つて、本発明のこの問題点を解決するため、
単一マシンサイクルで実行可能なマスク・回転命
令セツト及び該命令セツトを実現するためのハー
ドウエア機能を提供することを目的とする。 [問題点を解決するための手段] 前記目的を達成するため、本発明の命令処理装
置は、単一マシンサイクルで実行可能なマスク・
回転命令を遂行するための機構を、 前記命令で指定されたマスクパターン遷移アド
レスからNビツト(Nは1より大きい整数)のマ
スクを生成する手段と、 Nビツトのソースオペランドを前記命令で指定
された量だけ回転する手段と、 前記命令で指定される情報に基づいてNビツト
の目的オペランドを選択する手段と、 前記マスクの所与のビツトが第1の論理値を有
する場合は前記目的オペランドの対応ビツトを維
持し、前記マスクの所与のビツトが第2の論理値
を有する場合は前記回転されたソースオペランド
の対応ビツトを維持するように、前記回転された
ソースオペランドと前記目的オペランドとを前記
マスクの制御下で組み合わせる手段と、 Nビツトの前記組合わせ結果を前記命令によつ
て指定されたレジスタへ戻す手段とから構成し、 前記手段の各々を並行に動作させるようにした
ことを特徴とする。 [実施例] (a) PRISMシステム・アーキテクチヤの概要 前述のように、PRISMシステムの中心は
CPUであるが、PRISMシステムはCPUの他
に、主記憶装置、キヤツシユ機構、再配置機構
及びシステムI/Oを含んでいる(第1図参
照)。キヤツシユ機構はデータ部と命令部に分
かれている。 CPUアーキテクチヤは従来のものに比べて
非常に簡単である。本PRISMシステムの特徴
として、各々の命令はハードウエアにより単一
マシンサイクルで実行される。このような命令
を基本命令という。基本命令は記憶装置アクセ
ス(普通は並行処理される)を除くと、マシン
サイクルを1つしか必要としない。ここで“基
本”という語は、簡単さというよりもむしろ時
間、即ち単一マシンサイクルに関係している。
基本命令自体は単一マシンサイクル内で実行可
能であるが、それに伴う実際の機能は複雑なこ
とがある。 “単一マシンサイクル”という語も幾つかの
定義が可能である。例えば、単一マシンサイク
ルは“継続的に繰返される基本システムクロツ
クの期間であつて、その間に基本システム・オ
ペレーシヨンが遂行されるもの”である。もう
少し別のいい方をすれば、単一マシンサイクル
は“基本クロツク期間に含まれる全てのクロツ
ク・パルスをシステムが1回完全に使用するの
に必要な時間”である。従つて、単一マシンサ
イクル内でCPUの全てのデータフロー機構を
1回使用することができる。 単一マシンサイクルで実行可能な本発明のマ
スク・回転命令は新しく追加された基本命令の
代表的な例であり、これらの命令は以下で詳述
するように多くのデータ再構成状況において相
当量の時間を節約することを可能にするもので
ある。 PRISMシステムのアーキテクチヤ及びその
命令セツトは下記の3つを達成するものであ
る。 (1) 命令当り1サイクルの高速CPUをコンパ
イルに適した命令セツトを用いて定義する。 (2) 記憶階層、I/O、再配置及びソフトウエ
アの活動がCPUでの命令実行と並行して行
なわれる。これにより待ち時間が短くなる。 (3) 全てのプログラムをうまくコンパイルでき
るコードを生成する最適化コンパイラを開発
する。 単一マシンサイクルで実行可能であるという
ことに加えて、命令に関する重要なテーマにそ
の規則性がある。これはハードウエアによる実
現を容易にしていた。例えば、全てのオペラン
ドは自分の大きさに合つた境界を持つていなけ
ればならない(半ワードの場合は半ワード境
界、ワードの場合はワード境界)。命令は全て
フルワードであり、従つてその境界もフルワー
ド境界である。 レジスタ名フイールドはシステム/370の4
ビツトに対し、1ビツト増えて5ビツトであ
る。これによりレジスタを32個まで装備でき
る。従つて、PRISMシステムを用いて、例え
ばシステム/370のように16個の汎用レジスタ
を備えた他のアーキテクチヤをエミユレートす
ることができる。システム/370の命令セツト
における基本命令サブセツトを用いて複雑な命
令をエミユレートする場合は、レジスタ名フイ
ールドの長さ(4ビツト)がネツクになる。 更に、命令の長さが4バイトあるので、各命
令の目的レジスタを明示指定することができ、
従つて入力オペランドを壊す必要はない。これ
は一般に“3アドレス”形式と呼ばれている。 PRISMシステムは真の32ビツト・アーキテ
クチヤであり、16ビツト・アーキテクチヤに拡
張レジスタを加えたものではない。アドレスは
32ビツト長であり、算術演算には32ビツトの2
の補数が使用され、論理命令及び桁送り命令な
32ビツトのワードを取扱う。桁送りは31ビツト
まで可能である。 第2A図及び第2B図に示すように、
PRISMシステムのCPUの主構成要素は、2入
力のALU、2つの入力ポート及び3つの出力
ポートを持つた汎用レジスタ・フアイル(32ビ
ツトのレジスタを32個含む)、ならびに32ビツ
トの条件レジスタを含む条件論理である。条件
レジスタはオペレーシヨンに関する種々の条件
を示すもので、検査及び分岐を可能にする。条
件レジスタの各ビツトの意味は下記の表1のと
おりである。ただし、条件レジスタのビツトの
うち極く僅かなものだけが本発明に従つてマス
ク・回転命令の実行に関係するにすぎない。
【表】
【表】
条件レジスタの各ビツトは命令によつて変更
されない限り、前の値を保つ。 ビツト0(SO)は合計あふれビツトで、次の
あふれビツトが命令によつてセツトされるとき
は常に“1”にセツトされる。除算ステツプに
おける特別の標識としてあふれを使用する場合
は、合計あふれは変更されない。 ビツト1(OV)はあふれビツトで、命令実
行中にあふれが生じたときにセツトされる。あ
ふれビツトは、加算及び減算においてビツト0
からの桁上げとビツト1からの桁上げとが異な
つていると“1”にセツトされ、さもなければ
“0”にセツトされる。これは除算ステツプの
ための専用標識としても使用される。ただし比
較命令によつて変更されることはない。 ビツト2〜6は実行された命令の計算結果
(大小関係)を示す。そのうちビツト2(LT)、
ビツト3(GT)、及びビツト4(EQ)は、2つ
のオペランドを2の補数形式の符号付き整数と
考えてセツトされ、ビツト5(LL)及びビツト
6(LG)は、2つのオペランドを32ビツトの無
符号整数と考えてセツトされる。ビツト2〜6
は比較及び論理命令によつてもセツトされる。
またビツト2〜6はマスク・回転命令によつて
セツトされ、そのマスクまたは回転オペレーシ
ヨンによつて影響されるレジスタの符号及び大
小関係を示す。 ビツト7〜15はいずれも桁上げビツトであ
る。そのうちビツト7(CA)は、加算及び減算
においてビツト0からの桁上げがあると“1”
にセツトされ、さもなければ“0”にセツトさ
れる。これは除算及び乗算命令のための専用標
識としても使用されるが、比較命令によつて変
更されることはない。これに対して、ビツト8
〜14はALUにおける各ニブルの桁上げを示す。
例えばビツト8(C4)はビツト4からの桁上げ
があると“1”にセツトされ、さもなければ
“0”にセツトされる。ビツト9〜14も同様で
ある。これらの桁上げは10進演算で使用され
る。ビツト15(CD)は任意の4ビツト・ニブル
において桁上げが生じると“1”にセツトさ
れ、さもなければ“0”にセツトされる。これ
を利用すれば、10進デイジツトの有効性を検証
することができる。 ビツト16(PZ)は常時ゼロ・ビツトであつ
て、“1”にセツトされることはない。これは、
常時ゼロ・ビツトを参照する分岐命令による無
条件分岐を可能にする。 ビツト17〜25は予約ビツトである。これらは
本実施例では使用されないが、将来の使用に備
えて設けられている。 ビツト26〜29(EC0〜EC3)は外部条件ビツ
トであり、外部条件が有効なときにCPUへの
対応する外部条件入力の値にセツトされる。 ビツト30(BB)は母線使用中ビツトであり、
母線ユニツトが使用中のためにそこで母線オペ
レーシヨンに関する命令を実行できないときに
“1”にセツトされ、さもなければ“0”にセ
ツトされる。 ビツト31(HO)は半ワードあふれビツトで
あり、下位の16ビツトのあふれ状態を示す。こ
れは、加算及び減算においてビツト15及び16の
桁上げが異なつていると“1”にセツトされ、
さもなければ“0”にセツトされる。このビツ
トは比較命令によつて変更されることはない。 前述のように、命令は全て4バイト長であ
り、ワード境界に置かれる。PRISMシステム
では、D形式、UL形式、M形式及びX形式の
命令が使用される。これらの命令形式を下記の
表2に示す。
されない限り、前の値を保つ。 ビツト0(SO)は合計あふれビツトで、次の
あふれビツトが命令によつてセツトされるとき
は常に“1”にセツトされる。除算ステツプに
おける特別の標識としてあふれを使用する場合
は、合計あふれは変更されない。 ビツト1(OV)はあふれビツトで、命令実
行中にあふれが生じたときにセツトされる。あ
ふれビツトは、加算及び減算においてビツト0
からの桁上げとビツト1からの桁上げとが異な
つていると“1”にセツトされ、さもなければ
“0”にセツトされる。これは除算ステツプの
ための専用標識としても使用される。ただし比
較命令によつて変更されることはない。 ビツト2〜6は実行された命令の計算結果
(大小関係)を示す。そのうちビツト2(LT)、
ビツト3(GT)、及びビツト4(EQ)は、2つ
のオペランドを2の補数形式の符号付き整数と
考えてセツトされ、ビツト5(LL)及びビツト
6(LG)は、2つのオペランドを32ビツトの無
符号整数と考えてセツトされる。ビツト2〜6
は比較及び論理命令によつてもセツトされる。
またビツト2〜6はマスク・回転命令によつて
セツトされ、そのマスクまたは回転オペレーシ
ヨンによつて影響されるレジスタの符号及び大
小関係を示す。 ビツト7〜15はいずれも桁上げビツトであ
る。そのうちビツト7(CA)は、加算及び減算
においてビツト0からの桁上げがあると“1”
にセツトされ、さもなければ“0”にセツトさ
れる。これは除算及び乗算命令のための専用標
識としても使用されるが、比較命令によつて変
更されることはない。これに対して、ビツト8
〜14はALUにおける各ニブルの桁上げを示す。
例えばビツト8(C4)はビツト4からの桁上げ
があると“1”にセツトされ、さもなければ
“0”にセツトされる。ビツト9〜14も同様で
ある。これらの桁上げは10進演算で使用され
る。ビツト15(CD)は任意の4ビツト・ニブル
において桁上げが生じると“1”にセツトさ
れ、さもなければ“0”にセツトされる。これ
を利用すれば、10進デイジツトの有効性を検証
することができる。 ビツト16(PZ)は常時ゼロ・ビツトであつ
て、“1”にセツトされることはない。これは、
常時ゼロ・ビツトを参照する分岐命令による無
条件分岐を可能にする。 ビツト17〜25は予約ビツトである。これらは
本実施例では使用されないが、将来の使用に備
えて設けられている。 ビツト26〜29(EC0〜EC3)は外部条件ビツ
トであり、外部条件が有効なときにCPUへの
対応する外部条件入力の値にセツトされる。 ビツト30(BB)は母線使用中ビツトであり、
母線ユニツトが使用中のためにそこで母線オペ
レーシヨンに関する命令を実行できないときに
“1”にセツトされ、さもなければ“0”にセ
ツトされる。 ビツト31(HO)は半ワードあふれビツトで
あり、下位の16ビツトのあふれ状態を示す。こ
れは、加算及び減算においてビツト15及び16の
桁上げが異なつていると“1”にセツトされ、
さもなければ“0”にセツトされる。このビツ
トは比較命令によつて変更されることはない。 前述のように、命令は全て4バイト長であ
り、ワード境界に置かれる。PRISMシステム
では、D形式、UL形式、M形式及びX形式の
命令が使用される。これらの命令形式を下記の
表2に示す。
【表】
命令中の各フイールドの意味は次のとおりで
ある。 OPCD(0〜5):命令のOPコード。 RT(6〜10):命令の実行結果を受取る目的レ
ジスタの名前。 RS(6〜10):命令実行のためのソース・レジ
スタの名前。 RA(11〜15):第1オペランド・レジスタ、ま
たは回転命令の場合は目的レジスタとして使
用されるレジスタの名前。 RB(16〜20):第2オペランド・レジスタの名
前。 BI(6〜10):レジスタ・ビツトまたはトラツ
プ・マスクを指定する即値フイールド。 SH(16〜20):桁送り量を指定する即値フイー
ルド。 D(16〜31):16ビツトの符号付き整数を2の補
数形式で指定する即値フイールド。拡張のた
め32ビツトの長さを持つた別のフイールドと
組合わせて使用することができる。 MASK(21〜31):“0”によつて囲まれた
“1”のサブストリングまたは“1”によつ
て囲まれた“0”のサブストリングから成る
32ビツトのマスクを指定する即値フイール
ド。ビツト21が“0”であれば前者のサブス
トリングが指定され、“1”であれば後者の
サブストリングが指定される。ビツト22〜26
はサブストリングの左端ビツトへのインデツ
クス、ビツト27〜31はサブストリングの右端
ビツトへのインデツクスである。
“10000011111”のマスクフイールドは全て
“0”のマスクを発生し、“00000011111”の
マスクフイールドは全て“1”のマスクを発
生する。 EO(21〜31):拡張OPコード。 (B) マスク・回転命令の命令セツトとこれを実行
する機構の説明 これから説明する豊富な命令セツト(単一マ
シンサイクルで実行できるマスク・回転命令)
によりPRISMシステムのアーキテクチヤを一
層強力なものにできる。これらの命令セツト
は、ビツト桁送り機能、バイト境界合せ機能、
組合せ機能、及び挿入機能を高速かく効率よく
遂行する手段を提供するためだけでなく、
IBMシステム/370の桁送り命令、移動命令、
及び種々の記憶域間命令をエミユレートできる
強力な基本命令セツトを提供するものである。 単一マシンサイクルで実行できる以下の全て
の機能は後で説明するハードウエアによつて使
用可能となる。所与のレジスタの内容は最高31
個までの位置を循環桁送りできる(桁送りの量
は即値フイールドまたは別のレジスタで指定さ
れる)。マスク(即値フイールドまたは別のレ
ジスタで指定される)を用いて、桁送りされた
ワードは、全ゼロとの組合せ(即ちフイールド
の分離)、他のレジスタとの組合せ、または前
の桁送り結果との組合せ(すなわち長桁送り)
ができる。こうして組み合わされた結果は他の
レジスタまたは主記憶装置へ戻すことができる
(即ち文字ストリングの移動)。この最後の機能
によつて、境界の合つていないソース文字スト
リング及び目的文字ストリングの移動を、1マ
シンサイクル当り2文字ストリングの速度で実
行できる。 [マスク使用回転命令] プロセツサは汎用レジスタからのデータに対し
回転オペレーシヨンを遂行し、その結果又は結果
の一部を、汎用レジスタ又は主記憶装置へ戻す。
回転オペレーシヨンは指定されたビツト数の左移
動を行なうものである。ビツト位置0から出たピ
ツトはビツト位置31へ入る(即ち循環桁送り)。 マスク使用回転命令はその命令の完了時に、レ
ジスタRAの値に基づいて条件レジスタCRのビ
ツトをセツトする。条件レジスタCRは、あたか
もレジスタRAと値0との比較が遂行されたかの
ようにしてセツトされる。 マスク使用回転命令の結果は付与されるマスク
の制御の下でレジスタへ挿入されるか、またはマ
スクとの論理積(AND)がとられてからレジス
タへロードされる。このオペレーシヨンは、本実
施例では、全ゼロのストリングを組み合わせる
(挿入する)ことによつて行なわれる。 挿入を伴う回転の場合は、回転オペレーシヨン
の結果は、付与されるマスクの制御の下でレジス
タRAに置かれる。もし所与のマスクビツトが1
であれば、回転されたデータの関連するビツト
(0または1)がレジスタRAに置かれる。一方、
このマスクビツトが0であれば、レジスタRAの
関連するビツト(0または1)は変更されず元の
ままである。 これらの左回転命令は、(32−N)ビツトの左
回転をすることにより実質的に左回転命令にでき
る。この場合、Nが右回転の桁送り数である。 即値回転・マスク挿入(RIMI RS、RA、SH、
MASK)、M形式 レジスタRSの内容がSH位置分だけ左へ回転さ
れる。回転されたデータは、生成されたマスクの
制御の下で、レジスタRAに挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 回転・マスク挿入(RMI、RS、RA、RB、
MASK)、M形式 レジスタRSの内容がレジスタRBのビツト27〜
31で指定される位置数分だけ左へ回転される。回
転されたデータは、生成されたマスクの制御の下
で、レジスタRAに挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 即値回転・マスクAND(RINM RS、RA、
SH、MASK)、M形式 レジスタRSの内容がSH位置分だけ左へ回転さ
れる。回転されたデータは生成されたマスクと論
理積(AND)がとられ、その結果がレジスタ
RAに置かれる。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 回転・マスクAND(RNM RS、RA、RB、
MASK)、M形式 レジスタRSの内容がレジスタRBのビツト27〜
31で指定される位置数分だけ左へ回転される。回
転されたデータは生成されたマスクと論理積
(AND)がとられ、その結果がレジスタRAに置
かれる。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [ビツト回転命令] 右回転・ビツト挿入(RRIB RS、RA、RB)、
X形式 レジスタRSのビツト0がレジスタRBのビツト
27〜31で指定される量だけ右へ回転される。この
ビツト0は次にレジスタRAへ挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [桁送り命令] このグループの命令は左への桁送り及び右への
桁送りを論理的に遂行する。各命令の結果はそれ
ぞれ生成されたマスクの制御の下でレジスタRA
に置かれる。マスクビツトが1のところは、回転
されたワードの関連するビツトがレジスタRAに
置かれる。一方、マスクビツトが0のところは、
レジスタMQ、32個0から成るワード、または32
個の符号ビツトの関連ビツトがレジスタRAに置
かれる。 桁送り命令はその命令の完了時に、レジスタ
RAの値に基づいて条件レジスタCRのビツトを
セツトする。条件レジスタCRは、あたかもレジ
スタRAと値0との比較が遂行されたかのように
してセツトされる。 左桁送り(SL RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。一方、レジスタRB
のビツト26が1の場合は、全て0のマスクが生成
される。回転されたワードと生成されたマスクと
の論理積(AND)がとられ、それがレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用即値左桁送り(SLIQ RS、RA、SH) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはSHで指定される桁送り量である)。
(32−N)個の1の後にN個の0が続くマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードと生成されたマス
クとの論理積(AND)がとられ、それがレジス
タRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用左桁送り(SLQ RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。回転されたワードはレジ
スタMQに記憶される。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。レジスタRBのビツ
ト26が1の場合は全て0のマスクが生成される。
回転されたワードと生成されたマスクとの論理績
(AND)がとられそれがレジスタRAに記憶され
る。 条件コード: LT、EQ、GT及びLGがセツトされ、LLが0
にセツトされる。 MQ使用即値長左桁送り(LSLIQ RS、RA、
SH) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはSHで指定される桁送り量である)。
(32−N)個の1の後のN個の0が続くマスクが
生成される。回転されたワードは生成されたマス
クの制御の下でレジスタMQの前の内容と組み合
せられる(マスクビツトが1のところは回転され
たワードのビツトが使用され、マスクビツトが0
のところはレジスタMQの前の内容のビツトが使
用される)。組み合せられたワードはレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用長左桁送り(LSLQ RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。回転されたワードはレジ
スタMQに記憶される。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。回転されたワードは
生成されたマスクの制御の下でレジスタMQの前
の内容と組み合わせられる(マスクビツトが1の
ところは回転されたワードのビツトが使用され、
マスクビツトが0のところはレジスタMQの前の
内容のビツトが使用される)。レジスタRBのビ
ツト26が1の場合は(32−N)個の1の後にN個
の1が続くマスクが生成される。回転されたワー
ドの代わりに全て0のワードが使用される。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGはセツトされ、LLが
0にセツトされる。 右桁送り(SR RS、RA、RB) レジスタRBの内容は(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードと生成されたマスクとの
論理積(AND)がとられそれがレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用即値右桁送り(SRIQ RS、RA、SH) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。回転されたワードはレジスタMQに記憶
される。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードと生成さ
れたマスクとの論理積(AND)がとられそれが
レジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされLLが0
にセツトされる。 MQ使用右桁送り(SRQ RS、RA、RB) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。回転されたワー
ドはレジスタMQに記憶される。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードと生成されたマスクとの
論理積(AND)がとられそれがレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0セツトされる。 MQ使用即値長右桁送り(LSRIQ RS、RA、
SH) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。回転されたワードはレジスタMQに記憶
される。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードは生成さ
れたマスクの制御の下でレジスタMQの前の内容
と組み合わされる(マスクビツトが1のところは
回転されたワードのビツトが使用され、マスクビ
ツトが0のところはレジスタMQの前の内容のビ
ツトが使用される)。組み合わされたワードはレ
ジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 長右桁送り(LSRQ RS、RA、RB) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。回転されたワー
ドはレジスタMQに記憶される。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。回転されたワ
ードは生成されたマスクの制御の下でレジスタ
MQの前の内容と組み合わせられる(マスクビツ
トが1のところは回転されたワードのビツトが使
用され、マスクビツトが0のところはレジスタ
MQの前の内容のビツトが使用される)。レジス
タRBのビツト26が1の場合はN個の1の後に
(32−N)個の0が続くマスクが生成される。回
転されたワードの代わりに全て0のワードが使用
される。組み合わされたワードはレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 代数的即値右桁送り(SRAI RS、RA、SH) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードは生成さ
れたマスクの制御の下でレジスタRSの32個の符
号ビツトから成るワードと組み合わせられる(マ
スクビツトが0のところは関連する符号ビツトが
使用される)。組み合わされたワードはレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 代数的右桁送り(SRA RS、RA、RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定されるシフト量である)。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードは生成されたマスクの制
御の下でレジスタRSの32個の符号ビツトから成
るワードと組み合わせられる(マスクビツトが0
のところは符号ビツトが使用される)。組み合わ
されたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的右桁送り(SRAQ RS、RA、
RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(レジスタRBのビツト27〜31で指
定される桁送り量である)。N個の0の後に(32
−N)個の1が続くマスクが生成される。レジス
タRBのビツト26が1の場合は全て0のマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードは生成されたマス
クの制御の下でレジスタRSの32個の符号ビツト
から成るワードと組み合わされる(マスクビツト
が0のところは符号ビツトが使用される)。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的右桁送り(SRAQ RS、RA、
RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(レジスタRBのビツト27〜31で指
定される桁送り量である)。N個の0の後に(32
−N)個の1が続くマスクが生成される。レジス
タRBのビツト26が1の場合は全て0のマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードは生成されたマス
クの制御の下でレジスタRSの32個の符号ビツト
から成るワードと組み合わされる(マスクビツト
が0のところは符号ビツトが使用される)。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的即値右桁送り(SRAIQ RS、
RA、SH) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードはレジス
タMQに記憶される。回転されたワードは生成さ
れたマスクの制御の下でレジスタRSの32個の符
号ビツトから成るワードと組み合わされる(マス
クビツトが0のところは符号ビツトが使用され
る)。組み合わされたワードはレジスタRAに記
憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [回転・記憶命令] 回転・記憶命令を用いれば、データをソースフ
イールドから目的フイールドへ移動できる。これ
らのフイールドはどんなアドレスのところからで
も開始できる。 各命令の結果は生成されたマスクの制御の下で
主記憶装置に置かれる。マスクビツトが1である
場合、回転されたワードの関連ビツトが主記憶装
置に置かれる。マスクビツトが0である場合は、
レジスタMQからの関連ビツトが主記憶装置に置
かれる。 右回転・更新記憶(RRSU RS、RA、RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わせされ
たワードはRA+4で指定される場所で記憶され
る。RA+4の値は、さらにレジスタRAに戻さ
れる。 この場合は設定すべき条件コードはない。 右回転・右マーク記憶(RRSRM RS、RA、
RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わされた
ワードは、下記の表に従つて生成されるバイトマ
ークを有するレジスタRAで指定される場所に記
憶される。 RA(30:31) マーク 00 1111 01 0111 10 0011 11 0001 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 右回転・左マーク記憶(RRSLM RS、RA、
RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わされる。組み合わされたワ
ードは、下記の表に従つて生成されるバイトマー
クを有するレジスタRAで指定される場所に記憶
される。 RA(30:31) マーク 00 1000 01 1100 10 1110 11 1111 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 左回転・更新記憶(RLSU RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。(32−N)個の1の後にN個
の0が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わされる。組み合わされたワ
ードはRA−4で指定される場所に記憶される。
RA中のアドレスは4だけ減分されてレジスタ
RAに戻される。 この場合は設定すべき条件コードはない。 左回転・右マーク記憶(RLSRM RS、RA、
RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。(32−N)個の1の後にN個の0
が続くマスクが生成される。回転されたワードは
生成されたマスクの制御の下でレジスタMQの前
の内容と組み合わせられる。組み合わせられたワ
ードは、下記の表に従つて生成されるバイトマー
クを有するレジスタRAで指定される場所に記憶
される。 RA(30:31) マーク 00 1111 01 0111 10 0011 11 0001 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1は
組み合わされたワードからの対応するバイトが主
記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 左回転・左マーク記憶(RLSLM RS、RA、
RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。(32−N)個の1の後にN個
の0が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わせられ
たワードは、下記の表に従つて生成されるバイト
マークを有するレジスタRAで指定される場所に
記憶される。 RA(30:31) マーク 00 1000 01 1100 10 1110 11 1111 マークの中0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 以上に説明した命令は全て特別なものであり、
データ・フイールドにせよアドレス・フイールド
にせよ全ての命令フイールドは厳密に指定されな
ければならない。コンパイラまたはプラグラマが
これらの基本命令を適切に使用するには、シフテ
ムアーキテクチヤに関する詳細な知識が必要であ
る。もちろん、これはどんな命令セツトについて
もいえることであるので、当業者には本発明を容
易に理解することができるであろう。 マスク・回転命令の用途及び利点 PRISMシステムの前記命令セツト(以下では
PRISM命令ともいう)は、レジスタの内容を指
定された量だけ回転し、マスクの制御の下で別の
ソースのビツトと回転されたワードとを組み合わ
せて、その結果を目的の場所へ挿入する。あるい
は、回転された(ただし変更はされない)ワード
を特別のレジスタに記憶し、それを、次に実行す
べきマスク・回転命令の結果と組み合わすことも
できる。共通の計算タスクにおいて、これらの命
令は広範囲に適用できる。以下では、PRISM命
令システム/370命令を例にとつて、マスク・回
転命令があれば計算タスクがいかに簡単でしかも
短くなるかということを対比的に説明する。マス
ク・回転命令はかなり複雑な機能を遂行するとい
うことを強調しておく;マスク・回転命令は現在
の技術水準における回路を用いても単一マシンサ
イクルで実現できるという意味において“基本
的”である。 よく知られたタスクに、レジスタ内のフイール
ドを分離し、それを適切に境界合わせし、さらに
計算を行なうというものがある。たとえば、浮動
小数計算をシミユレートする場合、ワードのビツ
ト1〜7(指標部)を分離し、それを正規化桁送
り量として用いるためにレジスタの右端から2ビ
ツトの位置に置かねばならない。RPISM命令な
らば、これは以下のように達成される。 RINM P、X、10、‘000001FC'X この命令はXの内容を10ビツトだけ左へ回転
し、それとマスク‘000001FC'との論理積
(AND)をとり、その結果をレジスタPに記憶す
る(必要ならばPとXは同じレジスタでもよい)。
これをシステム/370命令で達成しようとすると、
以下のようになる。 SLL X、1 左側の不要ビツトを除去 SRL X、25 右側の不要ビツトを除去 SLL X、2 指標部を右端から2ビツトの位
置に置く。 この場合、Xの内容を壊すことなく結果を別
のレジスタへ記憶するときは、このシーケンス
にさらにもう1つ命令が必要である。 次にこれと逆の問題、すなわち、或るレジス
タに或るフイールドを挿入する場合を考えてみ
よう。例として、レジスタXのビツト23〜29を
レジスタRのビツト1〜7へ、レジスタRの他
のビツトを壊すことなく、コピーすることを考
える。PRISM命令ならば、これは以下のよう
に達成される。 RIMI R、X、22、‘7F000000'X この命令はレジスタXの内容を左に22ビツト
だけ回転し、回転されたワードのうち、マスク
ビツトが1のところのビツトを全てレジスタR
へコピーする。これをシステム/370の命令又
は他の機械で達成しようとすると以下のように
なる。 N X、=X‘000001FC' 保管すべきビツトの分離 N R、=X‘80FFFFFF' 置換されるゼロビツト SLL X、22 ワードの整列 OR R、X このシーケンスはレジスタXの内容を破壊し
てしまうが、PRISM命令の場合、レジスタR
は元のままである。 複数のレジスタにおよぶ長いフイールドを桁
送りする場合、RPISM命令ならばこれが簡単
にできる。ここでは、レジスタ2,3,4、及
び5から成る128ビツトのフイールドを右へ7
ビツトだけ桁送りする場合を考える。PRISM
命令ならば、これは以下のように達成できる。 SQIQ 2、2、7 上位ワードの桁送り。食み出たビツトはMQ
へ。 LSRIQ 3、3、7 次の位のワードの桁送り。食み出たビツトは
MQから得る。 LSRIQ 4、4、7 LSRIQ 5、5、7 初めのSRIQ命令はレジスタ2を7ビツトだ
け右へ桁送りして、回転されたワードをレジス
タMQに保管し、回転されたワードの下位25ビ
ツトをレジスタ2に記憶し、上位7ビツトに0
を埋める。残りのそれぞれの命令は、次のレジ
スタを7ビツトだけ回転させる。レジスタMQ
の上位7ビツト及び回転されたワードの下位25
ビツトを当該レジスタへ記憶し、回転されたワ
ードをレジスタMQへ記憶する。 IBMシステム/370においてレジスタの桁送
り(倍)は非常に有益なものであるが、レジス
タ3からレジスタ4へ移動するビツトを獲得す
る場合は、余分に3つの命令が必要である。 OR 0、3 レジスタ3からレジスタ4へ移動するビツト
を獲得する。 SLL 0、25 SRLL 2、7 レジスタ2及びレジスタ3を共に7ビツトだ
け桁送りする。 SRLL 4、7 レジスタ4及びレジスタ5を共に7ビツトだ
け桁送りする。 OR 4、0 レジスタ0の右端4ビツトをレジスタ4へ移
動する。 比較例の最後として、レジスタRAの内容で
示されるバイトのところから始まるフイールド
を、レジスタRBで示されるバイトのところか
ら始まるフイールドへ移動する際、レジスタ
RCの下位5ビツトで指定されるビツト数だけ
右に桁送りする場合を考える。この場合におい
て、レジスタRDは、移動すべきフイールドを
越えたところの最初のバイトのアドレスを含む
ものとする。PRISM命令の場合は以下のよう
になる。 AI RA、RA、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ AI RB、RB、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ AI RD、RD、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ LI RT、0 レジスタMQのセツトアツプ MTMQ MT LOOP LU、RA、RA、4 有効アドレス>RA、メモリワードをRT
へ RRSU RT、RB、RC 桁送り、MQとの組合せ、記憶、インデツ
クス更新 C RA、RD BL LOOP 主ループでLU命令が、レジスタRAの内容
+4として有効アドレスを計算する。有効アド
レスはRAに記憶され、RAでアドレス指定さ
れるメモリワードがRTに記憶される。RRSU
命令は、このジヨブの中の困難な部分を遂行す
る。レジスタRTの内容はレジスタRCで指定
されるビツト数だけ右に回転され、有効アドレ
スはRAの内容に4を加えることによつて計算
される。レジスタRAの(新しい)有効アドレ
スのところに記憶されるべきワードは、MQの
上位nビツト及び回転されたワードの下位(32
−n)ビツトで構成される。nは回転されたワ
ードの右への桁送りビツト数である。最後に、
回転されたワードがMQに記憶される。最後の
2つの命令は単にループを閉じるためのもので
ある。 以上をIBMシステム/370の命令で達成しよ
うとすれば、次のようになる。 LA RE、0 偶数レジスタの幾つかをゼロに初期設定す
る。 LA RA+1、4 BXL命令のためのセツトアツプ LOOP L RE+1、0(RA) メモリワードをロードする。 LR RT、RE+1 メモリワードのコピーを保管する。 LRS RE、0(RC) ワードの桁送り、偶数レジスタの上位ビツ
トの桁送り。 ST RE+1、0(RB) 桁送りされたワードの記憶 LR RE、RT 次のサイクルのための上位ビツトをREへ
移動する。 AR RB、RA+1 次のワードを記憶すべきアドレスを更新す
る。 BXLE LOOP、RA、RC IBMシステム/370の内部ループのシーケン
スは7命令要するが、PRISM命令のシーケン
スならば、このシーケンスは4命令でよい。し
かも、IBMシステム/370の場合、BXLEでル
ープを閉じるために偶数レジスタにはRAフイ
ールドが必要であり(そうでないときはシーケ
ンスはさらに2つの命令が必要であろう)、
IBMシステム/370の64ビツト・シフタを利用
するには、さらにREも偶数であることが必要
である。 単一のサイクルで実行できるマスク・回転命
令の威力と融通性は以上の比較により明らかで
ある。これらは、最近の回路技術を用いて単一
のマシンサイクルで実現できるという意味から
いえば、“基本的”であるが、その機能的な能
力は非常に強力である。 (C) ハードウエア 代表的なPRISMシステムの構成を第1図に
示す。システムの内部母線10には、CPU1
2、複数の母線ユニツト14,16(浮動小数
点ユニツトなど)、命令キヤツシユ機構18、
データ・キヤツシユ機構20、及びシステム母
線ユニツト22が接続されている。キヤツシユ
機構18,20はいずれもキヤツシユ、デイレ
クトリ及び変換索引緩衝機構(TLB)を含ん
でいる。システム母線ユニツト22は主として
I/Oオペレーシヨンを制御するもので、主記
憶装置24にも接続されている主記憶装置24
と命令キヤツシユ機構18及びデータ・キヤツ
シユ機構20との間だけ命令及びデータが別々
にやりとりされる。CPU12は命令母線26
を介して命令キヤツシユ機構18から命令を取
出す。 第2A図及び第2B図はCPU12の内部構
成を示したものである。主要構成要素の1つで
ある汎用レジスタ・フアイル30は32個の汎用
レジスタを含んでいる。汎用レジスタ・フアイ
ル30の2つの入力RA及びRT並びに3つの
出力RA、RB及びRSはいずれも命令によつて
指定されるオペラントを示す。汎用レジスタ・
フアイル30のアドレス指定は、命令レジスタ
32にロードされた命令の各種レジスタ・フイ
ールドによつてなされる。命令レジスタ32の
ボツクス内及びその下側に示されている記号の
意味については表2のところを参照されたい。 命令は命令アドレスレジスタ(IAR)34に
より命令キヤツシユ機構18から取出される。
IAR34は極く普通のもので、プログラムの開
始時に初期設定され、プログラムの進行につれ
て順次に増分されたり、分岐アドレスをロード
されたりする。表2に示したように、命令は32
ビツト(4バイト)であるから、IAR34の増分
単位は4である。ボツクス36は次命令アドレ
スを含む。 汎用レジスタ・フアイル30、命令レジスタ
32及びIAR34の選択された内容はマルチプ
レクサ38及び40を通つてALU42へ供給
される。マルチプレクサ38は命令アドレスま
たは指定されたレジスタRAの内容を通し、マ
ルチプレクサ40は即値オペランドD又は指定
されたレジスタRBの内容を通す。AXU42の
演算結果は出力バツフア・レジスタ44にロー
ドされたり、IAR34、条件レジスタを含む条
件論理50、またはデータ・キヤツシユ機構20
へアドレスを送るためのアドレスゲート54へ
直接供給されたりする。 ALU42の演算結果を汎用レジスタ・フア
イル30に書戻す場合は、命令がレジスタRA
及びRTのいずれを指定しているかに応じて、
出力バツフア・レジスタ44の内容がマルチプ
レクサ46または48を通つて汎用レジスタ・
フイアル30へ転送される。 分岐/トラツプ検査論理52は、命令のBI
フイールド、条件レジスタ及び指定されたレジ
スタRAの内容に応じて、分岐又はトラツプを
行なうべきか否かを検査する。前述のように、
変更前の条件レジスタの内容が特定の汎用レジ
スタに保管されているときに、その中に特定の
ビツト(例えばEQビツト)の値に応じて分岐
するか否かを決めるような場合にこの分岐/ト
ラツプ検査論理52が使用される。その場合、
条件レジスタの内容を保管している汎用レジス
タは分岐命令中のRAフイールドにより指定さ
れ、分岐条件となるビツトは5ビツトのBIフ
イールドにより指定される。 内部レジスタR2及び拡張用レジスタMQを
含む本発明に係るマスク・回転論理56は、要
約すれば、指定されたレジスタの内容を指定さ
れた量(最高31ビツト)だけ回転(循環桁送
り)するものである。回転された内容はマスク
の制御のもとに、他のレジスタの内容又は全ゼ
ロ等の特別のワードと組合されたり、32ビツト
長のMQレジスタに保持されている前の回転結
果と組合されたりする。これは通常の桁送りだ
けでなく、例えば10進数のパツク及びアンパツ
ク、浮動小数点演算の場合の事前桁送り及び正
規化などを行なうときに使用できる。マスク回
転論理56の出力はマルチプレクサ46(R
2)又は48(MQ)を通つて汎用レジスタ・
フアイル30へ転送されるか、あるいは出力ゲ
ート55を通つてデータ・キヤツシユ機構20
へ転送される。 MQレジスタはマスク・回転操作で使用され
る他に、乗算及び除算の如き算術演算において
32ビツトよりも長いデータが生成された時にあ
ふれ分を記憶するのにも使用される。 データ・キヤツシユ機構20から取出された
データは、入力ゲート58及びマルチプレクサ
48を通つて汎用レジスタ・フアイル30へ転
送される。 次に、第3図を説明する前に、このハードウ
エア機構全体の構成及びオペレーシヨンについ
て概説する。 PRISMアーキテクチヤにおいては、マス
ク・回転論理56はALU42と並列に走行す
る。ALU42が汎用レジスタ・フアイル30
の最初の2つのオペランドを操作する間、マス
ク・回転論理56は第3のオペランドを操作す
る。その出力をALU42で計算された主記憶
装置アドレスへ送つたり、或いは汎用レジス
タ・フアイル30へ送り返すこともできる。 マスク・回転論理56の主要部は回転部60
(第3図、後出)である。回転部60は2ない
し5の論理レベルを用いて32ビツトの入力オペ
ランドを任意のビツト位置数だけ回転できる。
回転部60の動作と並列して、その出力のフイ
ールドをブランクにする為にマスクが生成され
る。桁送り命令の場合は、このマスクを用い
て、オペランドフイールド外から0を送り込
む。回転命令の場合は、その命令で特定のマス
クが直接に指定される。マスクの生成も2乃至
5の論理レベルで遂行できる。 又、回転部60の動作と並行して、4つの入
力のうちの1つから挿入オペランドが生成され
る。4つの入力とは、(1)汎用レジスタ・フアイ
ル30からの第1オペランド、(2)レジスタMQ
の内容、(3)汎用レジスタ・フアイル30の第3
オペランドの符号ビツトから成るワード、(4)全
ゼロのワード、である。この操作は1又は2の
論理レベルの多重化で達成される。 最後の段階は挿入/組合せ段階である。マス
クが1のところのビツト位置には回転されたワ
ードの対応ビツトが使用され、マスクが0のと
ころのビツト位置には挿入されたワードのビツ
トが使用される。 マスク・回転論理56全体のハードウエアの
設計要件は、マスク・回転論理56の各種構成
要素の主要な経路をALU42のものと等しく
する事である。従つて、これまでに説明した命
令は、他のPRISM命令の場合と全く同様に、
単一マシンサイクルで実行できる。 マスク・回転論理56の詳細を第3図に示
す。汎用レジスタフアイル30からマスク・回
転論理56への主な入力はRA、RB、及びRS
である。この他には、特定のオペレーシヨンの
ために、命令レジスタ32のSHフイールド又
はRBフイールド(ビツト16〜20)がある。桁
送り量は命令レジスタ32のSHフイールドま
たはRBフイールドから得られる。各構成要素
への特定の入力を選択するマルチプレクサ
(MUX)への各種入力は命令デコーダ(図示
せず)で決定される。命令デコーダは各種構成
要素で使用されるオペランドをそれぞれ選択す
る。各種オペレーシヨンでこうした構成要素へ
ゲートされるべきデータの特定のセグメントは
表2のところで説明した。命令デコーダがOP
コード・フイールドを監視し特別な場合はさら
に拡張OPコード(EO)フイールドも監視する
ことは当業者には容易に理解されるであろう。
マスク・回転命令の多くはこのEOフイールド
を含む(他のPRISM命令もEOフイールドを含
むものは多い)。 マスク・回転論理56の主構成要素は4つあ
る。すなわち、回転部60と、マスク生成ユニ
ツト62と、挿入/組合せオペレーシヨンの目
的オペランドを取り出すためのマルチプレクサ
64と、挿入/組合せ部66である。挿入/組
合せ部66はマスク生成ユニツト62で生成さ
れたマスクの制御の下で、回転部60及びマル
チプレクサ64から得られるオペランドを組み
合わせる。 前にも説明したように回転部60は循環桁送
りを遂行する(ビツト位置0からシフトアウト
するビツトはビツト位置31へ再び挿入され
る)。回転部60への入力は2つあり、1つは
回転されるべき実際のオペランドであり、これ
はマスク・回転命令については全て汎用レジス
タ・フアイル30のレジスタRSに記憶されて
いる。回転部60へのもう1つの入力は桁送り
量である。したがつてこの入力が、所望のビツ
ト境界合せを達成するのに必要なオペランドの
桁送りビツト数を示す。桁送り量は、即値桁送
りオペレーシヨンの場合は命令レジスタ32の
SHフイールドに記憶され、そうでないときは
命令のRBフイールドで指定される汎用レジス
タのビツト27〜31に記憶されている。所与のオ
ペレーシヨンにおいて桁送り量を示すこれら2
つの領域のどちらをアクセスするかは、命令デ
コーダ及びマルチプレクサ63で決定される。
マルチプレクサ63は命令デコーダからの適切
な信号で付勢されて、ケーブル61を介して所
望の桁送り量を回転部60へゲートする。 第3図からわかるように、回転部60の出力
はレジスタMQに記憶することもできるし、挿
入/組合せ部66へ直接送ることもできる。挿
入/組合せ部66においては、回転部60の出
力がマスクの制御の下で、4つのオペランドの
うち、マルチプレクサ64から挿入/組合せ部
へ入力される1つのオペランドと組み合わされ
るか、またはそれに挿入される。前にも説明し
たように、回転部60の出力をレジスタMQま
たは挿入/組合せ部66のいずれに送るかは、
OPマスク・回転命令のそれぞれの特定の定義
(コード)を検査することによつて容易に決定
できる。 次にマスク生成ユニツト62について説明す
る。マスク生成ユニツト62は主に左端定義部
と右端定義部から成る。こうした一般的な回路
構成により、大きく分けて2つの異なるタイプ
のマスクを構成できる。1つのタイプはマスク
使用回転命令で使用されるもので、それは次の
ような3つの部分から成る。すなわち、複数個
の1を両側に有する複数個の0、または複数個
の0を両側に有する複数個の1である。このタ
イプのマスクは、マスク使用回転命令に遭遇し
たときに、命令レジスタ32のビツト21〜31の
マスク(M)フイールドで指定される。これら
のビツトの定義及び用途については表2のとこ
ろで説明した。マスク定義ビツト(MDB)で
あるビツト21は、そのマスクが複数個の1を両
側に有する複数個の0から成るのか、または複
数個の0を両側に有する複数個の1から成るの
かを示す。Mフイールドの残りの10ビツトはマ
スクの中央部の左端及び右端をそれぞれ指定す
る。 マスク生成ユニツト62で生成される第2の
タイプのマスクは2つの部分から成り、これは
桁送命令と、回転・記憶命令に使用される。 第2のタイプのマスクは複数個の0の後に複
数個の1が続くものと、複数個の1の後に複数
個の0が続くものがある。これらの命令を用い
てSHフイールドまたはレジスタRBからマス
クが指定される。第1のタイプ及び第2のタイ
プのマスクは挿入/組合せ部66においてはい
ずれも全く同様にして使用される。こうしてマ
スクが1のところは全て、回転部60のビツト
(ソースオペランド)がその出力に挿入され、
マスクが0のところは全て、マルチプレクサ6
4のビツト(目的オペランド)がその出力に置
かれる。 マスク生成オペレーシヨンは他と比べれば直
接的である。実際のマスクの端部の指定は、コ
ンパイラを介するオペレーテイング・システム
またはプログラムによつて行なわれる。この指
定に関する情報が適切に生成されれば、それは
命令レジスタ32のSHフイールドまたはレジ
スタRBにロードされる。所与の命令において
マスクデータの源はOPコードで決定され、そ
れに応じてマルチプロクサ70のラインが適切
に付勢される。第1のタイプのマスク(3つの
部分から成る)の場合は、この情報は命令レジ
スタ32のMフイールドから得られ、それがマ
スクの左端と右端を指定する。回転・記憶命令
で使用される第2のタイプのマスク(2つの部
分から成る)の場合は、OPコードで決まるマ
ルチプレクサ70の1本のラインだけが付勢さ
れる。 マスク生成ユニツト62の左端定義デコーダ
72はマスクの左端のビツト位置を定義するた
めにマスクフイールドのうちの5ビツト(左端
定義用)を復号する。復号された情報は左方マ
スク生成物74へ送られてそこで左端の指定さ
れたマスクが生成される。左方マスク生成部7
4の出力は32ビツトフイールドである。それは
たとえば、複数の0の後に複数の1が続くスト
リングであつて、その左端のビツト位置が左端
定義デコーダ72で指定されているものであ
る。 右端定義デコーダ76及び右方マスク生成部
78もこれと全く同様に機能し、右方マスク生
成部78は、たとえば、複数の1の後に複数の
0が続くストリングであつて、その右端のビツ
ト位置が右端定義デコーダ76で指定されてい
るもの、を出力する。したがつて左方マスク生
成部74及び右方マスク生成部78の出力は第
2のタイプのマスク(2つの部分から成る)で
ある。左方マスク生成部74及び右方マスク生
成部78の出力はマスク合成部80で組み合わ
せられる。マスク合成部80は32ビツトAND
回路程度の簡単なもので、これにより所望のマ
スクを生成する。複数の0を両側に有する複数
の1から複数の1を両側に有する複数の0へ変
更を行なう場合、単にインバータを通過させる
だけでよいので、これは簡単にできる。しか
も、出力を反転させる必要があるかどうかは命
令自身のOPコードで指定されるので命令デコ
ーダが容易にその決定を下すことができる。 左端定義用の回路または右端定義用の回路の
いずれか一方を活動化し、その出力と全て1ま
たは全て0とを組み合わせるだけで、容易に第
2のタイプのマスクが生成できる。こうして所
望の第2のタイプのマスクがマスク合成部80
(したがつてマスク生成ユニツト62)から出
力される。 マスク生成ユニツト62の各構成要素の機能
は当業者にはよく知られたものである。最終的
に完成したマスクの生成は、回転部60の機能
と同様、2ないし5の論理レベルで達成できる
ことに留意されたい。こうして、回転部60で
遂行される機能とマスク生成ユニツト62で遂
行される機能とを並列して進行させることがで
き、その結果、これに係る命令は単一のマシン
サイクルで実行できる。 次に第3図のマルチプレクサ64について説
明する。マルチプレクサ64は図に示すように
4つの入力を有する。命令デコーダに供給され
るOPコードによつてこれら4つの入力のうち
の1つが選択される。したがつて、回転された
データをレジスタRAの前の内容に挿入するよ
うな命令の場合は、マルチプレクサ64の
(RA)入力が活動される。 回転されたデータをレジスタMQの前の内容
と組み合わせるような命令の場合は、そのため
の特定の入力が活動化される。挿入/組合せオ
ペレーシヨンの目的オペランドが複数の1から
成るフイールドであるのか複数の0から成るフ
イールドであるのかを、レジスタRSの状況ビ
ツト“0”が決定する様な命令(代数的桁送り
等)の場合は、マルチプレクサ64のRSO入
力が活動化される。 回転されたワードを全て1のワードと組み合
わせるような命令の場合は、全ゼロ入力が活動
化される。 挿入/組合せ部66は3入力の論理回路であ
る。これにより、ケーブル82のビツト構成か
らは、マスクが1のところのビツト位置のビツ
トを出力し、ケーブル84のビツト構成から
は、マスクが0のところのビツト位置のビツト
を出力することができる。この機能は2つの入
力(すなわちケーブル82及びケーブル84)
を有する32要素のマルチプレクサで遂行でき
る。このマルチプレクサにおいては、マスクの
制御の下でビツトに基づいて所望の選択が行な
われる。もちろん別なやり方でこれを行なうこ
ともできる。 レジスタR2は挿入/組合せ部66の出力を
受諾する。オペレーシヨンの結果は、ほとん
ど、汎用レジスタ・フアイル30のレジスタ
RAに送り返される。 第3図に示すマスク・回転論理56はこれま
でに説明した命令を全て遂行できる。第3図の
マスク・回転論理56の動作を容易に理解でき
るよう、以下に3つの基本的な命令に分類して
これを説明する。 初めに、マスク使用回転命令のうちの1つに
ついて説明する。マスク使用回転命令の代表的
なものは“即値回転・マスク挿入命令(M形
式)”である。この命令(以下RIMI命令とい
う)については前に詳しく説明した。RIMI命
令で与えられる制御フイールドはOPコードで
あつて、それは遂行すべき機能の項目及び各種
パラメータ(すなわちRSフイールド、RAフイ
ールド、SHフイールド、及びMASK)を定義
する。RIMI命令は、レジスタRSに記憶されて
いるデータ内の所与のフイールド(SHで指定
される)を、レジスタRAに現に記憶されてい
るワードの、MASKで定められるフイールド
へ挿入すべきことを指定するものである。 これは次のようにして達成される。汎用レジ
スタ・フアイル30のレジスタRSがアクセス
されて回転部60へ直接ゲートされる。これと
同時にSHフイールドが命令レジスタ32から
アクセスされ、同様にケーブル61を介して回
転部60へゲートされる。前にも述べたように
ビツト21はマスク定義ビツト(MDB)であ
り、これはマスクの特性を指定する。ビツト22
〜31は5ビツトが左端定義用、残りの5ビツト
が右端定義用である。これらのビツトはマルチ
プレクサ70を介してマスク生成ユニツト62
へゲートされる。これらのオペレーシヨンにさ
らに並列して生じる第3のオペレーシヨンは汎
用レジスタ・フアイル30のレジスタRAのア
クセスである。 レジスタRAの内容(RA)はマルチプレク
サ64へゲートされる。これは前に説明した。
この時点での3つのオペランド(レジスタRA
の内容、回転部60の出力、及びマスク生成ユ
ニツト62で生成されるマスク)が、挿入/組
合せ部66への入力である。挿入/組合せ部6
6の力はレジスタR2へ一時的に記憶され、次
に汎用レジスタ・フアイル30のレジスタRA
へ戻される。 次に2番目の分類として桁送り命令の代表的
な命令である“左桁送り命令”について説明す
る。。この命令(以下SL命令という)の有効な
フイールドは基本OPコードフイールド、拡張
OPコードフイールド、RSフイールド、RAフ
イールド、及びRBフイールドである。基本OP
コードフイールド及び拡張オペコードフイール
ドは、遂行すべきオペレーシヨンが何であるか
を命令デコーダに示す。RSフイールドは桁送
りの対象となるワード(ソースオペランド)を
定める。RAフイールドは対象となるワードが
桁送りされるところの汎用レジスタを定める。
SL命令のRBフイールドで定められるRBレジ
スタのビツト27〜31のRBフイールドは桁送り
量を定める。 SL命令のオペレーシヨンはマスク・回転論
理56では次のようにして遂行される。レジス
タRSに記憶されているデータが回転部60へ
ゲートされ、レジスタRBに記憶されている桁
送り量がマルチプレクサ36によつてケーブル
61を介して回転部60へゲートされる。この
桁送り量はケーブルを介してマスク生成ユニツ
ト62にも送られる。この桁送り量はマスク生
成ユニツト62のマルチプレクサ701の入力
の1つである。マルチプレクサ70の2つの入
力のうちいずれを選択するかは、OPコードで
決定される。たとえばOPコードが左端の定義
されたマスク生成を要求するときは、この桁送
り量によつてマスク生成ユニツト62で前述の
第2のタイプのマスク(2つの部分から成る)
が生成される。これらのオペレーシヨンと同時
に、レジスタRAの内容がマルチプレクサ64
によつて選択され、挿入/組合せ部66への3
つの入力が再び使用可能となる。即ち、レジス
タRAの内容、回転部60の出力(レジスタRS
の前の内容を指定されたビツト数だけ桁送りし
たもの)、及びマスク生成ユニツト56の生成
するマスクである。レジスタRSの内容を指定
されたビツト数だけシフトアウトされた分は、
挿入/組合せ部66により、レジスタRAに入
れられる。こうしてオペレーシヨンの結果はレ
ジスタR2を介して汎用レジスタフアイル30
のレジスタRAに戻される。 桁送り命令の場合は一般に、マルチプレクサ
64の4つの入力は何れかがケーブル84に出
力されそれが挿入/組合せに係るオペレーシヨ
ンの目的オペランドとなる。従つてそのワード
に、ケーブル82のソースオペランドの指定部
分が挿入される。 最後3番目の分類として回転・記憶命令の1
つを例にとつて説明する。回転・記憶命令は前
にも説明した様に主記憶装置のデータの移動に
対して効果的なものであり、これを使用すれ
ば、CPUのタスク自身は働かないので、条件
コードをいちいち設定する必要もない。
ADRESSビツト RA+4、及びMARKビツ
トの生成及び使用のような命令に必要なオペレ
ーシヨンの数はメモリ制御に当てはまり、マス
ク使用回転命令のオペレーシヨンには当てはま
らないが、回転及び記憶命令は、マスク・回転
論理56を用いて達成できるシステムの機能の
1つのタイプである。 回転・記憶命令の代表的なものは“右回転・
更新記憶命令”であるこの命令(以下RRSU命
令という)は以下に示す有効なフイールドを提
供する。即ち、OPコード・フイールド、拡張
OPコードフイールド、RSフイールド、RAフ
イールド、及びRBフイールドである。OPコー
ドフイールド及び拡張OPコードフイールドは
夫々ビツト0〜5及びビツト21〜31である。こ
れらのOPコードフイールドが他の全ての命令
と同じように、マスク・回転論理56のオペレ
ーシヨンシーケンスを制御する。レジスタRS
の内容は回転部60にゲートされる。桁送り量
は汎用レジスタRBに記憶されているデータの
ビツト27〜31で決まる。桁送り量はケーブル6
1を介して回転部60と、または命令デコータ
の制御の下で左端定義用もしくは右端定義用の
マルチプレクサ70と、に同時にゲートされ
る。回転されたワードはレジスタMQに記憶さ
れる。この時点で、後の挿入/組合せオペレー
シヨンに備えて、レジスタMQの前の内容は何
らかの補助レジスタに保持される。 回転部60の桁送りオペレーシヨンと並列し
て、桁送り量の制御の下でマスクが生成され
る。回転部60から出力される回転されたワー
ドがケーブル82を介して挿入/組合せ部66
に送られると同時に、レジスタMQの前の内容
がケーブル84を介して、マスクがケーブル8
6を介して、それぞれ挿入/組合せ部66に送
られる。挿入/組合せ部66の出力はレジスタ
R2に記憶される。しかしながら今度は、この
出力はレジスタRAには戻されないで代わり
に、命令デコーダの制御の下でアドレス生成回
路によつてレジスタRA+4へ戻される。この
オペレーシヨンは本発明を構成するものではな
い。これと同時に更新されたアドレスRA+4
自身はレジスタRAに記憶される。 回転及び記憶命令のグループの命令を複数組
み合わせて、主記憶装置内で、データストリン
グの長移動及びデータの再境界合せを行なう。
回転・記憶命令はマスク回転論理56を使用す
る。 マークの記憶、使用及び解釈(従つて回転・
記憶命令のうちのあるものがこれに該当する)
は本発明を構成するものではない。前に説明し
た特定の命令に伴う定義(OPコード)で示さ
れるシステムメモリ制御によつてこうした特定
のマークが生成され、記憶され、利用される。 以上に説明した3つのタイプの命令は、マス
ク・回転論理56の動作を説明するための例で
あり、マスク・回転論理56は、勿論、他の
様々なマスク・回転命令を処理することができ
る。当業者ならば、他のあらゆる命令がマス
ク・回転論理56でいかに遂行されるかは容易
に類推できるであろう。 [発明の効果] 以上説明した様に、本発明によれば、従来の命
令に比べてより短くかつ簡単な(従つて高速で効
率のよい)命令で、桁送り機能、組合せ機能、挿
入機能、及びビツト境界合せ機能を遂行する事が
できる。
ある。 OPCD(0〜5):命令のOPコード。 RT(6〜10):命令の実行結果を受取る目的レ
ジスタの名前。 RS(6〜10):命令実行のためのソース・レジ
スタの名前。 RA(11〜15):第1オペランド・レジスタ、ま
たは回転命令の場合は目的レジスタとして使
用されるレジスタの名前。 RB(16〜20):第2オペランド・レジスタの名
前。 BI(6〜10):レジスタ・ビツトまたはトラツ
プ・マスクを指定する即値フイールド。 SH(16〜20):桁送り量を指定する即値フイー
ルド。 D(16〜31):16ビツトの符号付き整数を2の補
数形式で指定する即値フイールド。拡張のた
め32ビツトの長さを持つた別のフイールドと
組合わせて使用することができる。 MASK(21〜31):“0”によつて囲まれた
“1”のサブストリングまたは“1”によつ
て囲まれた“0”のサブストリングから成る
32ビツトのマスクを指定する即値フイール
ド。ビツト21が“0”であれば前者のサブス
トリングが指定され、“1”であれば後者の
サブストリングが指定される。ビツト22〜26
はサブストリングの左端ビツトへのインデツ
クス、ビツト27〜31はサブストリングの右端
ビツトへのインデツクスである。
“10000011111”のマスクフイールドは全て
“0”のマスクを発生し、“00000011111”の
マスクフイールドは全て“1”のマスクを発
生する。 EO(21〜31):拡張OPコード。 (B) マスク・回転命令の命令セツトとこれを実行
する機構の説明 これから説明する豊富な命令セツト(単一マ
シンサイクルで実行できるマスク・回転命令)
によりPRISMシステムのアーキテクチヤを一
層強力なものにできる。これらの命令セツト
は、ビツト桁送り機能、バイト境界合せ機能、
組合せ機能、及び挿入機能を高速かく効率よく
遂行する手段を提供するためだけでなく、
IBMシステム/370の桁送り命令、移動命令、
及び種々の記憶域間命令をエミユレートできる
強力な基本命令セツトを提供するものである。 単一マシンサイクルで実行できる以下の全て
の機能は後で説明するハードウエアによつて使
用可能となる。所与のレジスタの内容は最高31
個までの位置を循環桁送りできる(桁送りの量
は即値フイールドまたは別のレジスタで指定さ
れる)。マスク(即値フイールドまたは別のレ
ジスタで指定される)を用いて、桁送りされた
ワードは、全ゼロとの組合せ(即ちフイールド
の分離)、他のレジスタとの組合せ、または前
の桁送り結果との組合せ(すなわち長桁送り)
ができる。こうして組み合わされた結果は他の
レジスタまたは主記憶装置へ戻すことができる
(即ち文字ストリングの移動)。この最後の機能
によつて、境界の合つていないソース文字スト
リング及び目的文字ストリングの移動を、1マ
シンサイクル当り2文字ストリングの速度で実
行できる。 [マスク使用回転命令] プロセツサは汎用レジスタからのデータに対し
回転オペレーシヨンを遂行し、その結果又は結果
の一部を、汎用レジスタ又は主記憶装置へ戻す。
回転オペレーシヨンは指定されたビツト数の左移
動を行なうものである。ビツト位置0から出たピ
ツトはビツト位置31へ入る(即ち循環桁送り)。 マスク使用回転命令はその命令の完了時に、レ
ジスタRAの値に基づいて条件レジスタCRのビ
ツトをセツトする。条件レジスタCRは、あたか
もレジスタRAと値0との比較が遂行されたかの
ようにしてセツトされる。 マスク使用回転命令の結果は付与されるマスク
の制御の下でレジスタへ挿入されるか、またはマ
スクとの論理積(AND)がとられてからレジス
タへロードされる。このオペレーシヨンは、本実
施例では、全ゼロのストリングを組み合わせる
(挿入する)ことによつて行なわれる。 挿入を伴う回転の場合は、回転オペレーシヨン
の結果は、付与されるマスクの制御の下でレジス
タRAに置かれる。もし所与のマスクビツトが1
であれば、回転されたデータの関連するビツト
(0または1)がレジスタRAに置かれる。一方、
このマスクビツトが0であれば、レジスタRAの
関連するビツト(0または1)は変更されず元の
ままである。 これらの左回転命令は、(32−N)ビツトの左
回転をすることにより実質的に左回転命令にでき
る。この場合、Nが右回転の桁送り数である。 即値回転・マスク挿入(RIMI RS、RA、SH、
MASK)、M形式 レジスタRSの内容がSH位置分だけ左へ回転さ
れる。回転されたデータは、生成されたマスクの
制御の下で、レジスタRAに挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 回転・マスク挿入(RMI、RS、RA、RB、
MASK)、M形式 レジスタRSの内容がレジスタRBのビツト27〜
31で指定される位置数分だけ左へ回転される。回
転されたデータは、生成されたマスクの制御の下
で、レジスタRAに挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 即値回転・マスクAND(RINM RS、RA、
SH、MASK)、M形式 レジスタRSの内容がSH位置分だけ左へ回転さ
れる。回転されたデータは生成されたマスクと論
理積(AND)がとられ、その結果がレジスタ
RAに置かれる。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 回転・マスクAND(RNM RS、RA、RB、
MASK)、M形式 レジスタRSの内容がレジスタRBのビツト27〜
31で指定される位置数分だけ左へ回転される。回
転されたデータは生成されたマスクと論理積
(AND)がとられ、その結果がレジスタRAに置
かれる。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [ビツト回転命令] 右回転・ビツト挿入(RRIB RS、RA、RB)、
X形式 レジスタRSのビツト0がレジスタRBのビツト
27〜31で指定される量だけ右へ回転される。この
ビツト0は次にレジスタRAへ挿入される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [桁送り命令] このグループの命令は左への桁送り及び右への
桁送りを論理的に遂行する。各命令の結果はそれ
ぞれ生成されたマスクの制御の下でレジスタRA
に置かれる。マスクビツトが1のところは、回転
されたワードの関連するビツトがレジスタRAに
置かれる。一方、マスクビツトが0のところは、
レジスタMQ、32個0から成るワード、または32
個の符号ビツトの関連ビツトがレジスタRAに置
かれる。 桁送り命令はその命令の完了時に、レジスタ
RAの値に基づいて条件レジスタCRのビツトを
セツトする。条件レジスタCRは、あたかもレジ
スタRAと値0との比較が遂行されたかのように
してセツトされる。 左桁送り(SL RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。一方、レジスタRB
のビツト26が1の場合は、全て0のマスクが生成
される。回転されたワードと生成されたマスクと
の論理積(AND)がとられ、それがレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用即値左桁送り(SLIQ RS、RA、SH) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはSHで指定される桁送り量である)。
(32−N)個の1の後にN個の0が続くマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードと生成されたマス
クとの論理積(AND)がとられ、それがレジス
タRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用左桁送り(SLQ RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。回転されたワードはレジ
スタMQに記憶される。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。レジスタRBのビツ
ト26が1の場合は全て0のマスクが生成される。
回転されたワードと生成されたマスクとの論理績
(AND)がとられそれがレジスタRAに記憶され
る。 条件コード: LT、EQ、GT及びLGがセツトされ、LLが0
にセツトされる。 MQ使用即値長左桁送り(LSLIQ RS、RA、
SH) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはSHで指定される桁送り量である)。
(32−N)個の1の後のN個の0が続くマスクが
生成される。回転されたワードは生成されたマス
クの制御の下でレジスタMQの前の内容と組み合
せられる(マスクビツトが1のところは回転され
たワードのビツトが使用され、マスクビツトが0
のところはレジスタMQの前の内容のビツトが使
用される)。組み合せられたワードはレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用長左桁送り(LSLQ RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる桁送り量である)。回転されたワードはレジ
スタMQに記憶される。レジスタRBのビツト26
が0の場合は、(32−N)個の1の後にN個の0
が続くマスクが生成される。回転されたワードは
生成されたマスクの制御の下でレジスタMQの前
の内容と組み合わせられる(マスクビツトが1の
ところは回転されたワードのビツトが使用され、
マスクビツトが0のところはレジスタMQの前の
内容のビツトが使用される)。レジスタRBのビ
ツト26が1の場合は(32−N)個の1の後にN個
の1が続くマスクが生成される。回転されたワー
ドの代わりに全て0のワードが使用される。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGはセツトされ、LLが
0にセツトされる。 右桁送り(SR RS、RA、RB) レジスタRBの内容は(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードと生成されたマスクとの
論理積(AND)がとられそれがレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用即値右桁送り(SRIQ RS、RA、SH) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。回転されたワードはレジスタMQに記憶
される。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードと生成さ
れたマスクとの論理積(AND)がとられそれが
レジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされLLが0
にセツトされる。 MQ使用右桁送り(SRQ RS、RA、RB) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。回転されたワー
ドはレジスタMQに記憶される。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードと生成されたマスクとの
論理積(AND)がとられそれがレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0セツトされる。 MQ使用即値長右桁送り(LSRIQ RS、RA、
SH) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。回転されたワードはレジスタMQに記憶
される。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードは生成さ
れたマスクの制御の下でレジスタMQの前の内容
と組み合わされる(マスクビツトが1のところは
回転されたワードのビツトが使用され、マスクビ
ツトが0のところはレジスタMQの前の内容のビ
ツトが使用される)。組み合わされたワードはレ
ジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 長右桁送り(LSRQ RS、RA、RB) レジスタRSの内容が(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定される桁送り量である)。回転されたワー
ドはレジスタMQに記憶される。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。回転されたワ
ードは生成されたマスクの制御の下でレジスタ
MQの前の内容と組み合わせられる(マスクビツ
トが1のところは回転されたワードのビツトが使
用され、マスクビツトが0のところはレジスタ
MQの前の内容のビツトが使用される)。レジス
タRBのビツト26が1の場合はN個の1の後に
(32−N)個の0が続くマスクが生成される。回
転されたワードの代わりに全て0のワードが使用
される。組み合わされたワードはレジスタRAに
記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 代数的即値右桁送り(SRAI RS、RA、SH) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードは生成さ
れたマスクの制御の下でレジスタRSの32個の符
号ビツトから成るワードと組み合わせられる(マ
スクビツトが0のところは関連する符号ビツトが
使用される)。組み合わされたワードはレジスタ
RAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 代数的右桁送り(SRA RS、RA、RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはレジスタRBのビツト27〜31
で指定されるシフト量である)。レジスタRBの
ビツト26が0の場合はN個の0の後に(32−N)
個の1が続くマスクが生成される。レジスタRB
のビツト26が1の場合は全て0のマスクが生成さ
れる。回転されたワードは生成されたマスクの制
御の下でレジスタRSの32個の符号ビツトから成
るワードと組み合わせられる(マスクビツトが0
のところは符号ビツトが使用される)。組み合わ
されたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的右桁送り(SRAQ RS、RA、
RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(レジスタRBのビツト27〜31で指
定される桁送り量である)。N個の0の後に(32
−N)個の1が続くマスクが生成される。レジス
タRBのビツト26が1の場合は全て0のマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードは生成されたマス
クの制御の下でレジスタRSの32個の符号ビツト
から成るワードと組み合わされる(マスクビツト
が0のところは符号ビツトが使用される)。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的右桁送り(SRAQ RS、RA、
RB) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(レジスタRBのビツト27〜31で指
定される桁送り量である)。N個の0の後に(32
−N)個の1が続くマスクが生成される。レジス
タRBのビツト26が1の場合は全て0のマスクが
生成される。回転されたワードはレジスタMQに
記憶される。回転されたワードは生成されたマス
クの制御の下でレジスタRSの32個の符号ビツト
から成るワードと組み合わされる(マスクビツト
が0のところは符号ビツトが使用される)。組み
合わされたワードはレジスタRAに記憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 MQ使用代数的即値右桁送り(SRAIQ RS、
RA、SH) レジスタRSの内容は(32−N)ビツトだけ左
に回転される(NはSHで指定される桁送り量で
ある)。N個の0の後に(32−N)個の1が続く
マスクが生成される。回転されたワードはレジス
タMQに記憶される。回転されたワードは生成さ
れたマスクの制御の下でレジスタRSの32個の符
号ビツトから成るワードと組み合わされる(マス
クビツトが0のところは符号ビツトが使用され
る)。組み合わされたワードはレジスタRAに記
憶される。 条件コード: LT、EQ、GT、及びLGがセツトされ、LLが
0にセツトされる。 [回転・記憶命令] 回転・記憶命令を用いれば、データをソースフ
イールドから目的フイールドへ移動できる。これ
らのフイールドはどんなアドレスのところからで
も開始できる。 各命令の結果は生成されたマスクの制御の下で
主記憶装置に置かれる。マスクビツトが1である
場合、回転されたワードの関連ビツトが主記憶装
置に置かれる。マスクビツトが0である場合は、
レジスタMQからの関連ビツトが主記憶装置に置
かれる。 右回転・更新記憶(RRSU RS、RA、RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わせされ
たワードはRA+4で指定される場所で記憶され
る。RA+4の値は、さらにレジスタRAに戻さ
れる。 この場合は設定すべき条件コードはない。 右回転・右マーク記憶(RRSRM RS、RA、
RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わされた
ワードは、下記の表に従つて生成されるバイトマ
ークを有するレジスタRAで指定される場所に記
憶される。 RA(30:31) マーク 00 1111 01 0111 10 0011 11 0001 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 右回転・左マーク記憶(RRSLM RS、RA、
RB) レジスタRSの内容はNビツトだけ右に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。N個の0の後に(32−N)個
の1が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わされる。組み合わされたワ
ードは、下記の表に従つて生成されるバイトマー
クを有するレジスタRAで指定される場所に記憶
される。 RA(30:31) マーク 00 1000 01 1100 10 1110 11 1111 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 左回転・更新記憶(RLSU RS、RA、RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。(32−N)個の1の後にN個
の0が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わされる。組み合わされたワ
ードはRA−4で指定される場所に記憶される。
RA中のアドレスは4だけ減分されてレジスタ
RAに戻される。 この場合は設定すべき条件コードはない。 左回転・右マーク記憶(RLSRM RS、RA、
RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。(32−N)個の1の後にN個の0
が続くマスクが生成される。回転されたワードは
生成されたマスクの制御の下でレジスタMQの前
の内容と組み合わせられる。組み合わせられたワ
ードは、下記の表に従つて生成されるバイトマー
クを有するレジスタRAで指定される場所に記憶
される。 RA(30:31) マーク 00 1111 01 0111 10 0011 11 0001 マーク中の0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1は
組み合わされたワードからの対応するバイトが主
記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 左回転・左マーク記憶(RLSLM RS、RA、
RB) レジスタRSの内容はNビツトだけ左に回転さ
れる(NはレジスタRBのビツト27〜31で指定さ
れる量である)。回転されたワードはレジスタ
MQに記憶される。(32−N)個の1の後にN個
の0が続くマスクが生成される。回転されたワー
ドは生成されたマスクの制御の下でレジスタMQ
の前の内容と組み合わせられる。組み合わせられ
たワードは、下記の表に従つて生成されるバイト
マークを有するレジスタRAで指定される場所に
記憶される。 RA(30:31) マーク 00 1000 01 1100 10 1110 11 1111 マークの中0は、主記憶装置中の対応するバイ
トが変更されないことを意味し、マーク中の1
は、組み合わされたワードからの対応するバイト
が主記憶装置に置かれることを意味する。 この場合は設定すべき条件コードはない。 以上に説明した命令は全て特別なものであり、
データ・フイールドにせよアドレス・フイールド
にせよ全ての命令フイールドは厳密に指定されな
ければならない。コンパイラまたはプラグラマが
これらの基本命令を適切に使用するには、シフテ
ムアーキテクチヤに関する詳細な知識が必要であ
る。もちろん、これはどんな命令セツトについて
もいえることであるので、当業者には本発明を容
易に理解することができるであろう。 マスク・回転命令の用途及び利点 PRISMシステムの前記命令セツト(以下では
PRISM命令ともいう)は、レジスタの内容を指
定された量だけ回転し、マスクの制御の下で別の
ソースのビツトと回転されたワードとを組み合わ
せて、その結果を目的の場所へ挿入する。あるい
は、回転された(ただし変更はされない)ワード
を特別のレジスタに記憶し、それを、次に実行す
べきマスク・回転命令の結果と組み合わすことも
できる。共通の計算タスクにおいて、これらの命
令は広範囲に適用できる。以下では、PRISM命
令システム/370命令を例にとつて、マスク・回
転命令があれば計算タスクがいかに簡単でしかも
短くなるかということを対比的に説明する。マス
ク・回転命令はかなり複雑な機能を遂行するとい
うことを強調しておく;マスク・回転命令は現在
の技術水準における回路を用いても単一マシンサ
イクルで実現できるという意味において“基本
的”である。 よく知られたタスクに、レジスタ内のフイール
ドを分離し、それを適切に境界合わせし、さらに
計算を行なうというものがある。たとえば、浮動
小数計算をシミユレートする場合、ワードのビツ
ト1〜7(指標部)を分離し、それを正規化桁送
り量として用いるためにレジスタの右端から2ビ
ツトの位置に置かねばならない。RPISM命令な
らば、これは以下のように達成される。 RINM P、X、10、‘000001FC'X この命令はXの内容を10ビツトだけ左へ回転
し、それとマスク‘000001FC'との論理積
(AND)をとり、その結果をレジスタPに記憶す
る(必要ならばPとXは同じレジスタでもよい)。
これをシステム/370命令で達成しようとすると、
以下のようになる。 SLL X、1 左側の不要ビツトを除去 SRL X、25 右側の不要ビツトを除去 SLL X、2 指標部を右端から2ビツトの位
置に置く。 この場合、Xの内容を壊すことなく結果を別
のレジスタへ記憶するときは、このシーケンス
にさらにもう1つ命令が必要である。 次にこれと逆の問題、すなわち、或るレジス
タに或るフイールドを挿入する場合を考えてみ
よう。例として、レジスタXのビツト23〜29を
レジスタRのビツト1〜7へ、レジスタRの他
のビツトを壊すことなく、コピーすることを考
える。PRISM命令ならば、これは以下のよう
に達成される。 RIMI R、X、22、‘7F000000'X この命令はレジスタXの内容を左に22ビツト
だけ回転し、回転されたワードのうち、マスク
ビツトが1のところのビツトを全てレジスタR
へコピーする。これをシステム/370の命令又
は他の機械で達成しようとすると以下のように
なる。 N X、=X‘000001FC' 保管すべきビツトの分離 N R、=X‘80FFFFFF' 置換されるゼロビツト SLL X、22 ワードの整列 OR R、X このシーケンスはレジスタXの内容を破壊し
てしまうが、PRISM命令の場合、レジスタR
は元のままである。 複数のレジスタにおよぶ長いフイールドを桁
送りする場合、RPISM命令ならばこれが簡単
にできる。ここでは、レジスタ2,3,4、及
び5から成る128ビツトのフイールドを右へ7
ビツトだけ桁送りする場合を考える。PRISM
命令ならば、これは以下のように達成できる。 SQIQ 2、2、7 上位ワードの桁送り。食み出たビツトはMQ
へ。 LSRIQ 3、3、7 次の位のワードの桁送り。食み出たビツトは
MQから得る。 LSRIQ 4、4、7 LSRIQ 5、5、7 初めのSRIQ命令はレジスタ2を7ビツトだ
け右へ桁送りして、回転されたワードをレジス
タMQに保管し、回転されたワードの下位25ビ
ツトをレジスタ2に記憶し、上位7ビツトに0
を埋める。残りのそれぞれの命令は、次のレジ
スタを7ビツトだけ回転させる。レジスタMQ
の上位7ビツト及び回転されたワードの下位25
ビツトを当該レジスタへ記憶し、回転されたワ
ードをレジスタMQへ記憶する。 IBMシステム/370においてレジスタの桁送
り(倍)は非常に有益なものであるが、レジス
タ3からレジスタ4へ移動するビツトを獲得す
る場合は、余分に3つの命令が必要である。 OR 0、3 レジスタ3からレジスタ4へ移動するビツト
を獲得する。 SLL 0、25 SRLL 2、7 レジスタ2及びレジスタ3を共に7ビツトだ
け桁送りする。 SRLL 4、7 レジスタ4及びレジスタ5を共に7ビツトだ
け桁送りする。 OR 4、0 レジスタ0の右端4ビツトをレジスタ4へ移
動する。 比較例の最後として、レジスタRAの内容で
示されるバイトのところから始まるフイールド
を、レジスタRBで示されるバイトのところか
ら始まるフイールドへ移動する際、レジスタ
RCの下位5ビツトで指定されるビツト数だけ
右に桁送りする場合を考える。この場合におい
て、レジスタRDは、移動すべきフイールドを
越えたところの最初のバイトのアドレスを含む
ものとする。PRISM命令の場合は以下のよう
になる。 AI RA、RA、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ AI RB、RB、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ AI RD、RD、−4 アドレス指定の更新形式を用いるためのセ
ツトアツプ LI RT、0 レジスタMQのセツトアツプ MTMQ MT LOOP LU、RA、RA、4 有効アドレス>RA、メモリワードをRT
へ RRSU RT、RB、RC 桁送り、MQとの組合せ、記憶、インデツ
クス更新 C RA、RD BL LOOP 主ループでLU命令が、レジスタRAの内容
+4として有効アドレスを計算する。有効アド
レスはRAに記憶され、RAでアドレス指定さ
れるメモリワードがRTに記憶される。RRSU
命令は、このジヨブの中の困難な部分を遂行す
る。レジスタRTの内容はレジスタRCで指定
されるビツト数だけ右に回転され、有効アドレ
スはRAの内容に4を加えることによつて計算
される。レジスタRAの(新しい)有効アドレ
スのところに記憶されるべきワードは、MQの
上位nビツト及び回転されたワードの下位(32
−n)ビツトで構成される。nは回転されたワ
ードの右への桁送りビツト数である。最後に、
回転されたワードがMQに記憶される。最後の
2つの命令は単にループを閉じるためのもので
ある。 以上をIBMシステム/370の命令で達成しよ
うとすれば、次のようになる。 LA RE、0 偶数レジスタの幾つかをゼロに初期設定す
る。 LA RA+1、4 BXL命令のためのセツトアツプ LOOP L RE+1、0(RA) メモリワードをロードする。 LR RT、RE+1 メモリワードのコピーを保管する。 LRS RE、0(RC) ワードの桁送り、偶数レジスタの上位ビツ
トの桁送り。 ST RE+1、0(RB) 桁送りされたワードの記憶 LR RE、RT 次のサイクルのための上位ビツトをREへ
移動する。 AR RB、RA+1 次のワードを記憶すべきアドレスを更新す
る。 BXLE LOOP、RA、RC IBMシステム/370の内部ループのシーケン
スは7命令要するが、PRISM命令のシーケン
スならば、このシーケンスは4命令でよい。し
かも、IBMシステム/370の場合、BXLEでル
ープを閉じるために偶数レジスタにはRAフイ
ールドが必要であり(そうでないときはシーケ
ンスはさらに2つの命令が必要であろう)、
IBMシステム/370の64ビツト・シフタを利用
するには、さらにREも偶数であることが必要
である。 単一のサイクルで実行できるマスク・回転命
令の威力と融通性は以上の比較により明らかで
ある。これらは、最近の回路技術を用いて単一
のマシンサイクルで実現できるという意味から
いえば、“基本的”であるが、その機能的な能
力は非常に強力である。 (C) ハードウエア 代表的なPRISMシステムの構成を第1図に
示す。システムの内部母線10には、CPU1
2、複数の母線ユニツト14,16(浮動小数
点ユニツトなど)、命令キヤツシユ機構18、
データ・キヤツシユ機構20、及びシステム母
線ユニツト22が接続されている。キヤツシユ
機構18,20はいずれもキヤツシユ、デイレ
クトリ及び変換索引緩衝機構(TLB)を含ん
でいる。システム母線ユニツト22は主として
I/Oオペレーシヨンを制御するもので、主記
憶装置24にも接続されている主記憶装置24
と命令キヤツシユ機構18及びデータ・キヤツ
シユ機構20との間だけ命令及びデータが別々
にやりとりされる。CPU12は命令母線26
を介して命令キヤツシユ機構18から命令を取
出す。 第2A図及び第2B図はCPU12の内部構
成を示したものである。主要構成要素の1つで
ある汎用レジスタ・フアイル30は32個の汎用
レジスタを含んでいる。汎用レジスタ・フアイ
ル30の2つの入力RA及びRT並びに3つの
出力RA、RB及びRSはいずれも命令によつて
指定されるオペラントを示す。汎用レジスタ・
フアイル30のアドレス指定は、命令レジスタ
32にロードされた命令の各種レジスタ・フイ
ールドによつてなされる。命令レジスタ32の
ボツクス内及びその下側に示されている記号の
意味については表2のところを参照されたい。 命令は命令アドレスレジスタ(IAR)34に
より命令キヤツシユ機構18から取出される。
IAR34は極く普通のもので、プログラムの開
始時に初期設定され、プログラムの進行につれ
て順次に増分されたり、分岐アドレスをロード
されたりする。表2に示したように、命令は32
ビツト(4バイト)であるから、IAR34の増分
単位は4である。ボツクス36は次命令アドレ
スを含む。 汎用レジスタ・フアイル30、命令レジスタ
32及びIAR34の選択された内容はマルチプ
レクサ38及び40を通つてALU42へ供給
される。マルチプレクサ38は命令アドレスま
たは指定されたレジスタRAの内容を通し、マ
ルチプレクサ40は即値オペランドD又は指定
されたレジスタRBの内容を通す。AXU42の
演算結果は出力バツフア・レジスタ44にロー
ドされたり、IAR34、条件レジスタを含む条
件論理50、またはデータ・キヤツシユ機構20
へアドレスを送るためのアドレスゲート54へ
直接供給されたりする。 ALU42の演算結果を汎用レジスタ・フア
イル30に書戻す場合は、命令がレジスタRA
及びRTのいずれを指定しているかに応じて、
出力バツフア・レジスタ44の内容がマルチプ
レクサ46または48を通つて汎用レジスタ・
フイアル30へ転送される。 分岐/トラツプ検査論理52は、命令のBI
フイールド、条件レジスタ及び指定されたレジ
スタRAの内容に応じて、分岐又はトラツプを
行なうべきか否かを検査する。前述のように、
変更前の条件レジスタの内容が特定の汎用レジ
スタに保管されているときに、その中に特定の
ビツト(例えばEQビツト)の値に応じて分岐
するか否かを決めるような場合にこの分岐/ト
ラツプ検査論理52が使用される。その場合、
条件レジスタの内容を保管している汎用レジス
タは分岐命令中のRAフイールドにより指定さ
れ、分岐条件となるビツトは5ビツトのBIフ
イールドにより指定される。 内部レジスタR2及び拡張用レジスタMQを
含む本発明に係るマスク・回転論理56は、要
約すれば、指定されたレジスタの内容を指定さ
れた量(最高31ビツト)だけ回転(循環桁送
り)するものである。回転された内容はマスク
の制御のもとに、他のレジスタの内容又は全ゼ
ロ等の特別のワードと組合されたり、32ビツト
長のMQレジスタに保持されている前の回転結
果と組合されたりする。これは通常の桁送りだ
けでなく、例えば10進数のパツク及びアンパツ
ク、浮動小数点演算の場合の事前桁送り及び正
規化などを行なうときに使用できる。マスク回
転論理56の出力はマルチプレクサ46(R
2)又は48(MQ)を通つて汎用レジスタ・
フアイル30へ転送されるか、あるいは出力ゲ
ート55を通つてデータ・キヤツシユ機構20
へ転送される。 MQレジスタはマスク・回転操作で使用され
る他に、乗算及び除算の如き算術演算において
32ビツトよりも長いデータが生成された時にあ
ふれ分を記憶するのにも使用される。 データ・キヤツシユ機構20から取出された
データは、入力ゲート58及びマルチプレクサ
48を通つて汎用レジスタ・フアイル30へ転
送される。 次に、第3図を説明する前に、このハードウ
エア機構全体の構成及びオペレーシヨンについ
て概説する。 PRISMアーキテクチヤにおいては、マス
ク・回転論理56はALU42と並列に走行す
る。ALU42が汎用レジスタ・フアイル30
の最初の2つのオペランドを操作する間、マス
ク・回転論理56は第3のオペランドを操作す
る。その出力をALU42で計算された主記憶
装置アドレスへ送つたり、或いは汎用レジス
タ・フアイル30へ送り返すこともできる。 マスク・回転論理56の主要部は回転部60
(第3図、後出)である。回転部60は2ない
し5の論理レベルを用いて32ビツトの入力オペ
ランドを任意のビツト位置数だけ回転できる。
回転部60の動作と並列して、その出力のフイ
ールドをブランクにする為にマスクが生成され
る。桁送り命令の場合は、このマスクを用い
て、オペランドフイールド外から0を送り込
む。回転命令の場合は、その命令で特定のマス
クが直接に指定される。マスクの生成も2乃至
5の論理レベルで遂行できる。 又、回転部60の動作と並行して、4つの入
力のうちの1つから挿入オペランドが生成され
る。4つの入力とは、(1)汎用レジスタ・フアイ
ル30からの第1オペランド、(2)レジスタMQ
の内容、(3)汎用レジスタ・フアイル30の第3
オペランドの符号ビツトから成るワード、(4)全
ゼロのワード、である。この操作は1又は2の
論理レベルの多重化で達成される。 最後の段階は挿入/組合せ段階である。マス
クが1のところのビツト位置には回転されたワ
ードの対応ビツトが使用され、マスクが0のと
ころのビツト位置には挿入されたワードのビツ
トが使用される。 マスク・回転論理56全体のハードウエアの
設計要件は、マスク・回転論理56の各種構成
要素の主要な経路をALU42のものと等しく
する事である。従つて、これまでに説明した命
令は、他のPRISM命令の場合と全く同様に、
単一マシンサイクルで実行できる。 マスク・回転論理56の詳細を第3図に示
す。汎用レジスタフアイル30からマスク・回
転論理56への主な入力はRA、RB、及びRS
である。この他には、特定のオペレーシヨンの
ために、命令レジスタ32のSHフイールド又
はRBフイールド(ビツト16〜20)がある。桁
送り量は命令レジスタ32のSHフイールドま
たはRBフイールドから得られる。各構成要素
への特定の入力を選択するマルチプレクサ
(MUX)への各種入力は命令デコーダ(図示
せず)で決定される。命令デコーダは各種構成
要素で使用されるオペランドをそれぞれ選択す
る。各種オペレーシヨンでこうした構成要素へ
ゲートされるべきデータの特定のセグメントは
表2のところで説明した。命令デコーダがOP
コード・フイールドを監視し特別な場合はさら
に拡張OPコード(EO)フイールドも監視する
ことは当業者には容易に理解されるであろう。
マスク・回転命令の多くはこのEOフイールド
を含む(他のPRISM命令もEOフイールドを含
むものは多い)。 マスク・回転論理56の主構成要素は4つあ
る。すなわち、回転部60と、マスク生成ユニ
ツト62と、挿入/組合せオペレーシヨンの目
的オペランドを取り出すためのマルチプレクサ
64と、挿入/組合せ部66である。挿入/組
合せ部66はマスク生成ユニツト62で生成さ
れたマスクの制御の下で、回転部60及びマル
チプレクサ64から得られるオペランドを組み
合わせる。 前にも説明したように回転部60は循環桁送
りを遂行する(ビツト位置0からシフトアウト
するビツトはビツト位置31へ再び挿入され
る)。回転部60への入力は2つあり、1つは
回転されるべき実際のオペランドであり、これ
はマスク・回転命令については全て汎用レジス
タ・フアイル30のレジスタRSに記憶されて
いる。回転部60へのもう1つの入力は桁送り
量である。したがつてこの入力が、所望のビツ
ト境界合せを達成するのに必要なオペランドの
桁送りビツト数を示す。桁送り量は、即値桁送
りオペレーシヨンの場合は命令レジスタ32の
SHフイールドに記憶され、そうでないときは
命令のRBフイールドで指定される汎用レジス
タのビツト27〜31に記憶されている。所与のオ
ペレーシヨンにおいて桁送り量を示すこれら2
つの領域のどちらをアクセスするかは、命令デ
コーダ及びマルチプレクサ63で決定される。
マルチプレクサ63は命令デコーダからの適切
な信号で付勢されて、ケーブル61を介して所
望の桁送り量を回転部60へゲートする。 第3図からわかるように、回転部60の出力
はレジスタMQに記憶することもできるし、挿
入/組合せ部66へ直接送ることもできる。挿
入/組合せ部66においては、回転部60の出
力がマスクの制御の下で、4つのオペランドの
うち、マルチプレクサ64から挿入/組合せ部
へ入力される1つのオペランドと組み合わされ
るか、またはそれに挿入される。前にも説明し
たように、回転部60の出力をレジスタMQま
たは挿入/組合せ部66のいずれに送るかは、
OPマスク・回転命令のそれぞれの特定の定義
(コード)を検査することによつて容易に決定
できる。 次にマスク生成ユニツト62について説明す
る。マスク生成ユニツト62は主に左端定義部
と右端定義部から成る。こうした一般的な回路
構成により、大きく分けて2つの異なるタイプ
のマスクを構成できる。1つのタイプはマスク
使用回転命令で使用されるもので、それは次の
ような3つの部分から成る。すなわち、複数個
の1を両側に有する複数個の0、または複数個
の0を両側に有する複数個の1である。このタ
イプのマスクは、マスク使用回転命令に遭遇し
たときに、命令レジスタ32のビツト21〜31の
マスク(M)フイールドで指定される。これら
のビツトの定義及び用途については表2のとこ
ろで説明した。マスク定義ビツト(MDB)で
あるビツト21は、そのマスクが複数個の1を両
側に有する複数個の0から成るのか、または複
数個の0を両側に有する複数個の1から成るの
かを示す。Mフイールドの残りの10ビツトはマ
スクの中央部の左端及び右端をそれぞれ指定す
る。 マスク生成ユニツト62で生成される第2の
タイプのマスクは2つの部分から成り、これは
桁送命令と、回転・記憶命令に使用される。 第2のタイプのマスクは複数個の0の後に複
数個の1が続くものと、複数個の1の後に複数
個の0が続くものがある。これらの命令を用い
てSHフイールドまたはレジスタRBからマス
クが指定される。第1のタイプ及び第2のタイ
プのマスクは挿入/組合せ部66においてはい
ずれも全く同様にして使用される。こうしてマ
スクが1のところは全て、回転部60のビツト
(ソースオペランド)がその出力に挿入され、
マスクが0のところは全て、マルチプレクサ6
4のビツト(目的オペランド)がその出力に置
かれる。 マスク生成オペレーシヨンは他と比べれば直
接的である。実際のマスクの端部の指定は、コ
ンパイラを介するオペレーテイング・システム
またはプログラムによつて行なわれる。この指
定に関する情報が適切に生成されれば、それは
命令レジスタ32のSHフイールドまたはレジ
スタRBにロードされる。所与の命令において
マスクデータの源はOPコードで決定され、そ
れに応じてマルチプロクサ70のラインが適切
に付勢される。第1のタイプのマスク(3つの
部分から成る)の場合は、この情報は命令レジ
スタ32のMフイールドから得られ、それがマ
スクの左端と右端を指定する。回転・記憶命令
で使用される第2のタイプのマスク(2つの部
分から成る)の場合は、OPコードで決まるマ
ルチプレクサ70の1本のラインだけが付勢さ
れる。 マスク生成ユニツト62の左端定義デコーダ
72はマスクの左端のビツト位置を定義するた
めにマスクフイールドのうちの5ビツト(左端
定義用)を復号する。復号された情報は左方マ
スク生成物74へ送られてそこで左端の指定さ
れたマスクが生成される。左方マスク生成部7
4の出力は32ビツトフイールドである。それは
たとえば、複数の0の後に複数の1が続くスト
リングであつて、その左端のビツト位置が左端
定義デコーダ72で指定されているものであ
る。 右端定義デコーダ76及び右方マスク生成部
78もこれと全く同様に機能し、右方マスク生
成部78は、たとえば、複数の1の後に複数の
0が続くストリングであつて、その右端のビツ
ト位置が右端定義デコーダ76で指定されてい
るもの、を出力する。したがつて左方マスク生
成部74及び右方マスク生成部78の出力は第
2のタイプのマスク(2つの部分から成る)で
ある。左方マスク生成部74及び右方マスク生
成部78の出力はマスク合成部80で組み合わ
せられる。マスク合成部80は32ビツトAND
回路程度の簡単なもので、これにより所望のマ
スクを生成する。複数の0を両側に有する複数
の1から複数の1を両側に有する複数の0へ変
更を行なう場合、単にインバータを通過させる
だけでよいので、これは簡単にできる。しか
も、出力を反転させる必要があるかどうかは命
令自身のOPコードで指定されるので命令デコ
ーダが容易にその決定を下すことができる。 左端定義用の回路または右端定義用の回路の
いずれか一方を活動化し、その出力と全て1ま
たは全て0とを組み合わせるだけで、容易に第
2のタイプのマスクが生成できる。こうして所
望の第2のタイプのマスクがマスク合成部80
(したがつてマスク生成ユニツト62)から出
力される。 マスク生成ユニツト62の各構成要素の機能
は当業者にはよく知られたものである。最終的
に完成したマスクの生成は、回転部60の機能
と同様、2ないし5の論理レベルで達成できる
ことに留意されたい。こうして、回転部60で
遂行される機能とマスク生成ユニツト62で遂
行される機能とを並列して進行させることがで
き、その結果、これに係る命令は単一のマシン
サイクルで実行できる。 次に第3図のマルチプレクサ64について説
明する。マルチプレクサ64は図に示すように
4つの入力を有する。命令デコーダに供給され
るOPコードによつてこれら4つの入力のうち
の1つが選択される。したがつて、回転された
データをレジスタRAの前の内容に挿入するよ
うな命令の場合は、マルチプレクサ64の
(RA)入力が活動される。 回転されたデータをレジスタMQの前の内容
と組み合わせるような命令の場合は、そのため
の特定の入力が活動化される。挿入/組合せオ
ペレーシヨンの目的オペランドが複数の1から
成るフイールドであるのか複数の0から成るフ
イールドであるのかを、レジスタRSの状況ビ
ツト“0”が決定する様な命令(代数的桁送り
等)の場合は、マルチプレクサ64のRSO入
力が活動化される。 回転されたワードを全て1のワードと組み合
わせるような命令の場合は、全ゼロ入力が活動
化される。 挿入/組合せ部66は3入力の論理回路であ
る。これにより、ケーブル82のビツト構成か
らは、マスクが1のところのビツト位置のビツ
トを出力し、ケーブル84のビツト構成から
は、マスクが0のところのビツト位置のビツト
を出力することができる。この機能は2つの入
力(すなわちケーブル82及びケーブル84)
を有する32要素のマルチプレクサで遂行でき
る。このマルチプレクサにおいては、マスクの
制御の下でビツトに基づいて所望の選択が行な
われる。もちろん別なやり方でこれを行なうこ
ともできる。 レジスタR2は挿入/組合せ部66の出力を
受諾する。オペレーシヨンの結果は、ほとん
ど、汎用レジスタ・フアイル30のレジスタ
RAに送り返される。 第3図に示すマスク・回転論理56はこれま
でに説明した命令を全て遂行できる。第3図の
マスク・回転論理56の動作を容易に理解でき
るよう、以下に3つの基本的な命令に分類して
これを説明する。 初めに、マスク使用回転命令のうちの1つに
ついて説明する。マスク使用回転命令の代表的
なものは“即値回転・マスク挿入命令(M形
式)”である。この命令(以下RIMI命令とい
う)については前に詳しく説明した。RIMI命
令で与えられる制御フイールドはOPコードで
あつて、それは遂行すべき機能の項目及び各種
パラメータ(すなわちRSフイールド、RAフイ
ールド、SHフイールド、及びMASK)を定義
する。RIMI命令は、レジスタRSに記憶されて
いるデータ内の所与のフイールド(SHで指定
される)を、レジスタRAに現に記憶されてい
るワードの、MASKで定められるフイールド
へ挿入すべきことを指定するものである。 これは次のようにして達成される。汎用レジ
スタ・フアイル30のレジスタRSがアクセス
されて回転部60へ直接ゲートされる。これと
同時にSHフイールドが命令レジスタ32から
アクセスされ、同様にケーブル61を介して回
転部60へゲートされる。前にも述べたように
ビツト21はマスク定義ビツト(MDB)であ
り、これはマスクの特性を指定する。ビツト22
〜31は5ビツトが左端定義用、残りの5ビツト
が右端定義用である。これらのビツトはマルチ
プレクサ70を介してマスク生成ユニツト62
へゲートされる。これらのオペレーシヨンにさ
らに並列して生じる第3のオペレーシヨンは汎
用レジスタ・フアイル30のレジスタRAのア
クセスである。 レジスタRAの内容(RA)はマルチプレク
サ64へゲートされる。これは前に説明した。
この時点での3つのオペランド(レジスタRA
の内容、回転部60の出力、及びマスク生成ユ
ニツト62で生成されるマスク)が、挿入/組
合せ部66への入力である。挿入/組合せ部6
6の力はレジスタR2へ一時的に記憶され、次
に汎用レジスタ・フアイル30のレジスタRA
へ戻される。 次に2番目の分類として桁送り命令の代表的
な命令である“左桁送り命令”について説明す
る。。この命令(以下SL命令という)の有効な
フイールドは基本OPコードフイールド、拡張
OPコードフイールド、RSフイールド、RAフ
イールド、及びRBフイールドである。基本OP
コードフイールド及び拡張オペコードフイール
ドは、遂行すべきオペレーシヨンが何であるか
を命令デコーダに示す。RSフイールドは桁送
りの対象となるワード(ソースオペランド)を
定める。RAフイールドは対象となるワードが
桁送りされるところの汎用レジスタを定める。
SL命令のRBフイールドで定められるRBレジ
スタのビツト27〜31のRBフイールドは桁送り
量を定める。 SL命令のオペレーシヨンはマスク・回転論
理56では次のようにして遂行される。レジス
タRSに記憶されているデータが回転部60へ
ゲートされ、レジスタRBに記憶されている桁
送り量がマルチプレクサ36によつてケーブル
61を介して回転部60へゲートされる。この
桁送り量はケーブルを介してマスク生成ユニツ
ト62にも送られる。この桁送り量はマスク生
成ユニツト62のマルチプレクサ701の入力
の1つである。マルチプレクサ70の2つの入
力のうちいずれを選択するかは、OPコードで
決定される。たとえばOPコードが左端の定義
されたマスク生成を要求するときは、この桁送
り量によつてマスク生成ユニツト62で前述の
第2のタイプのマスク(2つの部分から成る)
が生成される。これらのオペレーシヨンと同時
に、レジスタRAの内容がマルチプレクサ64
によつて選択され、挿入/組合せ部66への3
つの入力が再び使用可能となる。即ち、レジス
タRAの内容、回転部60の出力(レジスタRS
の前の内容を指定されたビツト数だけ桁送りし
たもの)、及びマスク生成ユニツト56の生成
するマスクである。レジスタRSの内容を指定
されたビツト数だけシフトアウトされた分は、
挿入/組合せ部66により、レジスタRAに入
れられる。こうしてオペレーシヨンの結果はレ
ジスタR2を介して汎用レジスタフアイル30
のレジスタRAに戻される。 桁送り命令の場合は一般に、マルチプレクサ
64の4つの入力は何れかがケーブル84に出
力されそれが挿入/組合せに係るオペレーシヨ
ンの目的オペランドとなる。従つてそのワード
に、ケーブル82のソースオペランドの指定部
分が挿入される。 最後3番目の分類として回転・記憶命令の1
つを例にとつて説明する。回転・記憶命令は前
にも説明した様に主記憶装置のデータの移動に
対して効果的なものであり、これを使用すれ
ば、CPUのタスク自身は働かないので、条件
コードをいちいち設定する必要もない。
ADRESSビツト RA+4、及びMARKビツ
トの生成及び使用のような命令に必要なオペレ
ーシヨンの数はメモリ制御に当てはまり、マス
ク使用回転命令のオペレーシヨンには当てはま
らないが、回転及び記憶命令は、マスク・回転
論理56を用いて達成できるシステムの機能の
1つのタイプである。 回転・記憶命令の代表的なものは“右回転・
更新記憶命令”であるこの命令(以下RRSU命
令という)は以下に示す有効なフイールドを提
供する。即ち、OPコード・フイールド、拡張
OPコードフイールド、RSフイールド、RAフ
イールド、及びRBフイールドである。OPコー
ドフイールド及び拡張OPコードフイールドは
夫々ビツト0〜5及びビツト21〜31である。こ
れらのOPコードフイールドが他の全ての命令
と同じように、マスク・回転論理56のオペレ
ーシヨンシーケンスを制御する。レジスタRS
の内容は回転部60にゲートされる。桁送り量
は汎用レジスタRBに記憶されているデータの
ビツト27〜31で決まる。桁送り量はケーブル6
1を介して回転部60と、または命令デコータ
の制御の下で左端定義用もしくは右端定義用の
マルチプレクサ70と、に同時にゲートされ
る。回転されたワードはレジスタMQに記憶さ
れる。この時点で、後の挿入/組合せオペレー
シヨンに備えて、レジスタMQの前の内容は何
らかの補助レジスタに保持される。 回転部60の桁送りオペレーシヨンと並列し
て、桁送り量の制御の下でマスクが生成され
る。回転部60から出力される回転されたワー
ドがケーブル82を介して挿入/組合せ部66
に送られると同時に、レジスタMQの前の内容
がケーブル84を介して、マスクがケーブル8
6を介して、それぞれ挿入/組合せ部66に送
られる。挿入/組合せ部66の出力はレジスタ
R2に記憶される。しかしながら今度は、この
出力はレジスタRAには戻されないで代わり
に、命令デコーダの制御の下でアドレス生成回
路によつてレジスタRA+4へ戻される。この
オペレーシヨンは本発明を構成するものではな
い。これと同時に更新されたアドレスRA+4
自身はレジスタRAに記憶される。 回転及び記憶命令のグループの命令を複数組
み合わせて、主記憶装置内で、データストリン
グの長移動及びデータの再境界合せを行なう。
回転・記憶命令はマスク回転論理56を使用す
る。 マークの記憶、使用及び解釈(従つて回転・
記憶命令のうちのあるものがこれに該当する)
は本発明を構成するものではない。前に説明し
た特定の命令に伴う定義(OPコード)で示さ
れるシステムメモリ制御によつてこうした特定
のマークが生成され、記憶され、利用される。 以上に説明した3つのタイプの命令は、マス
ク・回転論理56の動作を説明するための例で
あり、マスク・回転論理56は、勿論、他の
様々なマスク・回転命令を処理することができ
る。当業者ならば、他のあらゆる命令がマス
ク・回転論理56でいかに遂行されるかは容易
に類推できるであろう。 [発明の効果] 以上説明した様に、本発明によれば、従来の命
令に比べてより短くかつ簡単な(従つて高速で効
率のよい)命令で、桁送り機能、組合せ機能、挿
入機能、及びビツト境界合せ機能を遂行する事が
できる。
第1図は本発明を実施し得るPRISMシステム
の構成例を示すブロツク図、第2図は第2A図及
び第2B図の結合様式を示すブロツク図、第2A
図及び第2B図はCPU12の内部構成を示すブ
ロツク図、第3図はマスク・回転論理の内部構成
を示す図である。
の構成例を示すブロツク図、第2図は第2A図及
び第2B図の結合様式を示すブロツク図、第2A
図及び第2B図はCPU12の内部構成を示すブ
ロツク図、第3図はマスク・回転論理の内部構成
を示す図である。
Claims (1)
- 【特許請求の範囲】 1 単一マシンサイクルで実行できる基本命令の
命令セツトを有し、前記基本命令を記憶する記憶
手段と、該記憶手段から基本命令を取出すための
アドレス手段と、該アドレス手段によつて取出さ
れた基本命令を実行するためのALUと、該ALU
で使用されるオペランドを記憶し且つ同時にアク
セス可能な複数の汎用レジスタとを備えた計算機
システムにおいて、 オペコード・フイールド、ソースオペランドを
記憶するレジスタを規定するソースオペランド・
フイールドおよび上記ソースオペランドをシフト
するシフト量に関する情報を記憶するレジスタを
規定するシフト量フイールドを少なくとも含む、
単一マシンサイクルで実行可能なマスク・回転命
令を、遂行するための機構を、 前記シフト量フイールドから、または、前記マ
スク・回転命令に含まれる、マスクパターンを規
定する固有のマスク・フイールドから、Nビツト
(Nは1より大きい整数)のマスク・ワードを生
成する手段と、 Nビツトの前記ソース・オペランドを前記シフ
ト量だけ回転する回転手段と、 前記汎用レジスタのうちの1つからの入力、前
記ALUに関連するレジスタであつて、前回のマ
シンサイクルにおける前記回転手段の出力を記憶
するものからの入力、およびオール・ゼロまたは
オール1のNビツト・ワードの入力を含む複数の
入力から、前記オペコード・フイールドに基づい
て、1つの入力を目的オペランドとして選択する
手段と、 前記マスクの所与のビツトが第1の論理値を有
する場合は前記目的オペランドの対応ビツトを維
持し、前記マスクの所与のビツトが第2に論理値
を有する場合は前記回転されたソースオペランド
の対応ビツトを維持するように、前記回転された
ソースオペランドと前記目的オペランドとを前記
マスクの制御下で組み合わせる手段と、 前記オペコード・フイールドに基づいて、Nビ
ツトの前記組合せ結果を、前記汎用レジスタのう
ちの1つ、または前記マスク・回転命令の固有の
戻しアドレス・フイールドによつて指定されたレ
ジスタに戻す手段とから構成し、 前記手段の各々を並行に動作させるようにした
ことを特徴とする命令処理装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/509,836 US4569016A (en) | 1983-06-30 | 1983-06-30 | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
| US509836 | 1995-08-01 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS6014336A JPS6014336A (ja) | 1985-01-24 |
| JPH0135366B2 true JPH0135366B2 (ja) | 1989-07-25 |
Family
ID=24028276
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP59115647A Granted JPS6014336A (ja) | 1983-06-30 | 1984-06-07 | 命令処理装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US4569016A (ja) |
| EP (1) | EP0130380A3 (ja) |
| JP (1) | JPS6014336A (ja) |
Families Citing this family (108)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH063584B2 (ja) * | 1983-12-19 | 1994-01-12 | 株式会社日立製作所 | 情報処理装置 |
| US5179734A (en) * | 1984-03-02 | 1993-01-12 | Texas Instruments Incorporated | Threaded interpretive data processor |
| US4896259A (en) * | 1984-09-07 | 1990-01-23 | International Business Machines Corporation | Apparatus for storing modifying data prior to selectively storing data to be modified into a register |
| JPS6167156A (ja) * | 1984-09-07 | 1986-04-07 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | デ−タ読取り/変更装置 |
| EP0211179A3 (en) * | 1985-06-28 | 1990-09-05 | Hewlett-Packard Company | Apparatus for performing variable shift |
| US4747046A (en) * | 1985-06-28 | 1988-05-24 | Hewlett-Packard Company | Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch |
| JPS623333A (ja) * | 1985-06-28 | 1987-01-09 | Yokogawa Hewlett Packard Ltd | ビツト群置数方式 |
| US4739471A (en) * | 1985-06-28 | 1988-04-19 | Hewlett-Packard Company | Method and means for moving bytes in a reduced instruction set computer |
| JPS6266377A (ja) * | 1985-09-19 | 1987-03-25 | Fujitsu Ltd | マスクパタ−ン生成方式 |
| US5070445A (en) * | 1986-07-02 | 1991-12-03 | Woodward Thomas R | Programmably controlled partially distributed masking mechanism in a programmable unit having variable data path widths |
| US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
| US4992934A (en) * | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
| US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
| US4833602A (en) * | 1987-06-29 | 1989-05-23 | International Business Machines Corporation | Signal generator using modulo means |
| JPS6476220A (en) * | 1987-09-17 | 1989-03-22 | Ibm | Bit mask generation circuit |
| US5129066A (en) * | 1987-09-17 | 1992-07-07 | International Business Machines Corporation | Bit mask generator circuit using multiple logic units for generating a bit mask sequence |
| US4933847A (en) * | 1987-11-17 | 1990-06-12 | International Business Machines Corporation | Microcode branch based upon operand length and alignment |
| US4974146A (en) * | 1988-05-06 | 1990-11-27 | Science Applications International Corporation | Array processor |
| US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
| DE68925666T2 (de) * | 1988-10-07 | 1996-09-26 | Ibm | Prozessoren für wortorganisierte Daten |
| US5222225A (en) * | 1988-10-07 | 1993-06-22 | International Business Machines Corporation | Apparatus for processing character string moves in a data processing system |
| US4903228A (en) * | 1988-11-09 | 1990-02-20 | International Business Machines Corporation | Single cycle merge/logic unit |
| JPH02190930A (ja) * | 1988-12-29 | 1990-07-26 | Internatl Business Mach Corp <Ibm> | ソフトウエア命令実行装置 |
| US5179691A (en) * | 1989-04-12 | 1993-01-12 | Unisys Corporation | N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M |
| JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
| US5167029A (en) * | 1989-12-13 | 1992-11-24 | International Business Machines Corporation | Data processing system and associated process using memory cards having data modify functions utilizing a data mask and an internal register |
| AU7305491A (en) * | 1990-01-29 | 1991-08-21 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
| CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
| JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
| US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
| EP0544083A3 (en) * | 1991-11-26 | 1994-09-14 | Ibm | Interleaved risc-type parallel processor and processing methods |
| 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 |
| US5410719A (en) * | 1992-05-27 | 1995-04-25 | Hewlett-Packard Company | Field compositor for merging data and including cells each receiving three control and two data inputs and generating one control and one data output therefrom |
| US5471628A (en) * | 1992-06-30 | 1995-11-28 | International Business Machines Corporation | Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode |
| US5590348A (en) * | 1992-07-28 | 1996-12-31 | International Business Machines Corporation | Status predictor for combined shifter-rotate/merge unit |
| 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 |
| US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
| JP3637922B2 (ja) * | 1993-06-14 | 2005-04-13 | アップル コンピュータ インコーポレイテッド | プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置 |
| 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 |
| US5961635A (en) * | 1993-11-30 | 1999-10-05 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator and mask generator |
| US6098163A (en) * | 1993-11-30 | 2000-08-01 | Texas Instruments Incorporated | Three input arithmetic logic unit with shifter |
| US5974539A (en) * | 1993-11-30 | 1999-10-26 | Texas Instruments Incorporated | Three input arithmetic logic unit with shifter and mask generator |
| US5590350A (en) * | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
| US6116768A (en) * | 1993-11-30 | 2000-09-12 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator |
| US6016538A (en) * | 1993-11-30 | 2000-01-18 | Texas Instruments Incorporated | Method, apparatus and system forming the sum of data in plural equal sections of a single data word |
| US6067613A (en) * | 1993-11-30 | 2000-05-23 | Texas Instruments Incorporated | Rotation register for orthogonal data transformation |
| US5499376A (en) * | 1993-12-06 | 1996-03-12 | Cpu Technology, Inc. | High speed mask and logical combination operations for parallel processor units |
| US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
| US5704052A (en) * | 1994-11-06 | 1997-12-30 | Unisys Corporation | Bit processing unit for performing complex logical operations within a single clock cycle |
| US5668984A (en) * | 1995-02-27 | 1997-09-16 | International Business Machines Corporation | Variable stage load path and method of operation |
| US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
| US5745744A (en) * | 1995-10-12 | 1998-04-28 | International Business Machines Corporation | High speed mask generation using selection logic |
| US5729482A (en) * | 1995-10-31 | 1998-03-17 | Lsi Logic Corporation | Microprocessor shifter using rotation and masking operations |
| WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
| US6061783A (en) * | 1996-11-13 | 2000-05-09 | Nortel Networks Corporation | Method and apparatus for manipulation of bit fields directly in a memory source |
| US6098087A (en) * | 1998-04-23 | 2000-08-01 | Infineon Technologies North America Corp. | Method and apparatus for performing shift operations on packed data |
| EP1242869B1 (en) | 1999-09-01 | 2011-11-16 | Intel Corporation | Context swap instruction for multithreaded processor |
| WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
| US6523108B1 (en) * | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
| US6449706B1 (en) * | 1999-12-22 | 2002-09-10 | Intel Corporation | Method and apparatus for accessing unaligned data |
| US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| US20020053017A1 (en) * | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a multithreaded processor |
| US7620832B2 (en) * | 2000-09-20 | 2009-11-17 | Mips Technologies, Inc. | Method and apparatus for masking a microprocessor execution signature |
| US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
| US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
| US7162621B2 (en) * | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
| US7318145B1 (en) | 2001-06-01 | 2008-01-08 | Mips Technologies, Inc. | Random slip generator |
| US7216204B2 (en) | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
| US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
| US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
| US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
| US7051168B2 (en) * | 2001-08-28 | 2006-05-23 | International Business Machines Corporation | Method and apparatus for aligning memory write data in a microprocessor |
| US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
| US7685212B2 (en) | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
| US7340495B2 (en) | 2001-10-29 | 2008-03-04 | Intel Corporation | Superior misaligned memory load and copy using merge hardware |
| US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
| US7272622B2 (en) * | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
| US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
| US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
| US7337275B2 (en) * | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
| US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
| GB2411978B (en) * | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
| US7739434B2 (en) * | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
| US20090182982A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Rotate Then Insert Selected Bits Facility and Instructions Therefore |
| US7734900B2 (en) | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
| US20090182988A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare Relative Long Facility and Instructions Therefore |
| US7895419B2 (en) * | 2008-01-11 | 2011-02-22 | International Business Machines Corporation | Rotate then operate on selected bits facility and instructions therefore |
| US7870339B2 (en) * | 2008-01-11 | 2011-01-11 | International Business Machines Corporation | Extract cache attribute facility and instruction therefore |
| US20090182992A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Load Relative and Store Relative Facility and Instructions Therefore |
| US20090182984A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Execute Relative Long Facility and Instructions Therefore |
| US9280480B2 (en) | 2008-01-11 | 2016-03-08 | International Business Machines Corporation | Extract target cache attribute facility and instruction therefor |
| US20090182985A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Move Facility and Instructions Therefore |
| US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
| US8504807B2 (en) * | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
| US20130151820A1 (en) * | 2011-12-09 | 2013-06-13 | Advanced Micro Devices, Inc. | Method and apparatus for rotating and shifting data during an execution pipeline cycle of a processor |
| CN104081342B (zh) * | 2011-12-23 | 2017-06-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
| US9405534B2 (en) | 2013-01-21 | 2016-08-02 | Tom Yap | Compound complex instruction set computer (CCISC) processor architecture |
| US9110657B2 (en) | 2013-01-21 | 2015-08-18 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture |
| US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
| US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
| US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
| US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
| US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
| US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
| US10255462B2 (en) | 2016-06-17 | 2019-04-09 | Arm Limited | Apparatus and method for obfuscating power consumption of a processor |
| US10678540B2 (en) * | 2018-05-08 | 2020-06-09 | Arm Limited | Arithmetic operation with shift |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3906459A (en) * | 1974-06-03 | 1975-09-16 | Control Data Corp | Binary data manipulation network having multiple function capability for computers |
| US3982229A (en) * | 1975-01-08 | 1976-09-21 | Bell Telephone Laboratories, Incorporated | Combinational logic arrangement |
| JPS537770A (en) * | 1976-07-09 | 1978-01-24 | Nippon Poriesuteru Kk | Method of manufacture of frp |
| US4139899A (en) * | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
| US4276596A (en) * | 1979-01-02 | 1981-06-30 | Honeywell Information Systems Inc. | Short operand alignment and merge operation |
| US4180861A (en) * | 1978-03-31 | 1979-12-25 | Ncr Corporation | Selectively operable mask generator |
| US4224682A (en) * | 1979-01-02 | 1980-09-23 | Honeywell Information Systems Inc. | Pointer for defining the data by controlling merge switches |
| US4246644A (en) * | 1979-01-02 | 1981-01-20 | Honeywell Information Systems Inc. | Vector branch indicators to control firmware |
| US4240144A (en) * | 1979-01-02 | 1980-12-16 | Honeywell Information Systems Inc. | Long operand alignment and merge operation |
| US4467444A (en) * | 1980-08-01 | 1984-08-21 | Advanced Micro Devices, Inc. | Processor unit for microcomputer systems |
-
1983
- 1983-06-30 US US06/509,836 patent/US4569016A/en not_active Expired - Lifetime
-
1984
- 1984-05-30 EP EP84106177A patent/EP0130380A3/en not_active Withdrawn
- 1984-06-07 JP JP59115647A patent/JPS6014336A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| EP0130380A3 (en) | 1987-11-11 |
| JPS6014336A (ja) | 1985-01-24 |
| EP0130380A2 (en) | 1985-01-09 |
| US4569016A (en) | 1986-02-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0135366B2 (ja) | ||
| KR100230105B1 (ko) | 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템 | |
| KR100231380B1 (ko) | 감소된 명령 세트 프로세서 내부 레지스터의 데이타를 조작하는 방법 및 장치 | |
| US4589087A (en) | Condition register architecture for a primitive instruction set machine | |
| KR100218572B1 (ko) | 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치 | |
| KR100230643B1 (ko) | 고성능 프로세서의 브랜치 예상 동작 방법 및 장치 | |
| KR0185988B1 (ko) | 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법 | |
| US6061783A (en) | Method and apparatus for manipulation of bit fields directly in a memory source | |
| RU2292581C2 (ru) | Команды загрузки/перемещения и копирования для процессора | |
| KR100190252B1 (ko) | 고속 프로세서에서의 브랜치 처리 방법 및 장치 | |
| JP3554342B2 (ja) | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア | |
| US5995746A (en) | Byte-compare operation for high-performance processor | |
| US5790821A (en) | Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor | |
| US5675758A (en) | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations | |
| JPS6014341A (ja) | 基本命令セツト計算機システムにおけるトラツプ割込み方式 | |
| JPH0926878A (ja) | データ処理装置 | |
| US6061781A (en) | Concurrent execution of divide microinstructions in floating point unit and overflow detection microinstructions in integer unit for integer divide | |
| CN108292220A (zh) | 用于加速图形分析的装置和方法 | |
| JPS60142743A (ja) | 内部母線システム | |
| CN110321165A (zh) | 复数向量融合乘加和复数向量乘法的高效实现 | |
| JPS6014338A (ja) | 計算機システムにおける分岐機構 | |
| Paap et al. | PowerPC: a performance architecture | |
| EP0772818A1 (en) | Apparatus and method for executing pop instructions |