JPH06202850A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH06202850A
JPH06202850A JP5258348A JP25834893A JPH06202850A JP H06202850 A JPH06202850 A JP H06202850A JP 5258348 A JP5258348 A JP 5258348A JP 25834893 A JP25834893 A JP 25834893A JP H06202850 A JPH06202850 A JP H06202850A
Authority
JP
Japan
Prior art keywords
overflow
arithmetic
unsigned
instruction
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5258348A
Other languages
English (en)
Inventor
Kevin J Brewer
ケビン・ジェイ・ブリューワー
Scott L Linke
スコット・リー・リンク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Delco Electronics LLC
Original Assignee
Delco Electronics LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Delco Electronics LLC filed Critical Delco Electronics LLC
Publication of JPH06202850A publication Critical patent/JPH06202850A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 単一命令の範囲検査および制限動作を構成す
る、数学的に一貫した条件コード・アーキテクチャを有
するデータ処理装置を提供する。 【構成】 データ処理装置は、ディジタル処理システム
内部の算術論理演算装置(ALU)20により実施する
ことができるあり得る算術演算の全てに対して、演算桁
溢れの起生とこの演算桁溢れの方向とを提供する条件コ
ード・フラッグ・セットを含む。表示された演算桁溢れ
の起生とこの桁溢れの方向とに基いて、変数が演算桁溢
れの起生により生じたか、あるいは前記値が前記桁溢れ
が生じずに生じたが受入れ得る値の範囲外であったなら
ば、算術演算の1つにより生じるソフトウエアの変数値
は予め定めた受入れ得る値の範囲の適当な上限または下
限に制限される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理装置、例え
ば単一命令範囲検査および制限動作を実行するための機
械的に一貫した条件コード・アーキテクチャを有する装
置に関する。
【0002】
【従来の技術】マイクロプロセッサの出現により、ディ
ジタル・データ・プロセッサを用いる用途数は急速に拡
がってきた。それらの速度および多能性により、マイク
ロプロセッサは、最近のマイクロプロセッサに基くエン
ジン制御システムにおける如き制御機能を実施する上で
特に有効であることが判った。このような用途において
は、ソフトウエアの変数についての範囲検査および制限
動作を行ってそれらの値が受入れ得る限度を越えないこ
とを保証することがしばしば必要である。
【0003】過去においては、このような形式の範囲検
査および限度動作は、典型的には格納された制限値(上
限または下限の拘束)とソフトウエアの変数値を比較す
ることにより行われ、変数値が制限値を越えた(上限拘
束より大きいか、あるいは下限拘束より小さい)なら
ば、変数値はこの制限値により置換されるものであっ
た。このようなプロセスは、単一の範囲検査および制限
動作を実施するための幾つかの機械命令シーケンスの実
行を必要とする。これらの動作は制御用途において用い
られるプログラムにおいて頻繁に要求されるため、これ
らシーケンスは大量のプログラム・メモリーを消費して
プログラム実行時間を増加させる傾向がある。
【0004】一般に問題とされない別の問題は、従来の
範囲検査および制限動作の実施の際、演算の桁溢れの問
題である。桁溢れは、演算により生じる数値結果(符号
の有無を問わず)がマイクロプロセッサの算術論理演算
装置(ALU)におけるデータ・オブジェクトの表示の
許容し得る大きさを越える時に生じ、この場合、結果は
数学的に定義されない。その結果、1つのソフトウエア
の変数についての範囲検査および制限動作を正しく行う
ためには、第1に、変数値が演算の桁溢れの結果である
かどうかが知られなければならず、第2に、桁溢れの方
向(正か負のいずれか)もまた知られなければならな
い。範囲検査および制限動作の実施時にこのような情報
が得られなければ、ソフトウエアの変数は、実際にそう
あるべき時には制限されないかも知れず、あるいは間違
った制限値に設定されるかも知れない(即ち、下限値に
設定されるべき時に上限値に設定されるか、またはその
反対)。
【0005】従来のマイクロプロセッサ・システムで
は、ALUにおける算術演算の実行の結果生じる演算の
桁溢れ条件は、典型的に状態レジスタにおいて条件コー
ドビット(フラッグ)により表示される。現在ある条件
コード・アーキテクチャは、通常は条件コードの繰上げ
ビット(C−ビット)を設定することにより符号なし演
算桁溢れの表示を行う。このビットは、算術演算がAL
U内部で繰出し(carry−out)または借入れ
(borrow−in)を生じる時は常に設定され、こ
れがそれぞれ正または負の方向に符号なし演算桁溢れを
生じる。しかし、繰上げビットは一般に、専ら符号なし
桁溢れ標識として用いられるものではない。この繰上げ
ビットはまた、ALUの桁送りおよび回転操作の間にビ
ット・アキュムレータとしても使用される。桁送り操作
は、一般に(2の冪乗による)最適化乗算および除算時
に使用され、そのように使用される時、C−ビットが常
に符号なし桁溢れ標識ではない(行われる桁送り操作の
種類に依存して)。また、あるデータ・プロセッサはそ
の命令セットにおける符号なし乗算および除算を含み、
これは一般にC−ビットを符号なし桁溢れ標識として取
扱わない。
【0006】符号つき演算桁溢れの表示は、典型的には
条件コードの桁溢れビット(V−ビット)により行われ
る。このビットは、通常は、算術演算がALUにおける
2の補数形態では正しく表わすことができない結果を生
じる時に設定される。2の補数が正または負であり得る
ため、符号つき演算桁溢れもまた正または負のいずれか
の方向に起生する。
【0007】歴史的には、加算、減算および比較の如き
単純な演算では、V−ビットの状態、および条件コード
の負のビット(N−ビット)は符号つき桁溢れとその方
向の両方を表わすため使用されてきた。例えば、V−ビ
ットおよびN−ビットが共に論理値1に設定される時、
符号つき桁溢れは正の方向にあると言われ、V−ビット
が論理値1に設定されN−ビットが論理値0に設定さる
時は、符号つき桁溢れは負の方向にあると言われる。こ
こで再び、伝統的な条件コード・アーキテクチャは、桁
送り、乗算および除算のための方向により符号つき桁溢
れを正しく表示するため条件コードを設定することを行
わない。このため、現在の条件コード・アーキテクチャ
は、種々の算術演算に対する桁溢れの起生を表わす時、
系統的に挙動するものではない。
【0008】範囲検査および制限動作を正しく行うため
には、算術演算により生じる演算桁溢れを一貫して取扱
う条件コード・アーキテクチャが要求される。特定の算
術演算の実施において用いられる正確な演算命令を確認
することは常に可能でも実際的でもない(例えば、桁送
りは2の冪乗による乗算あるいは除算のため用いられ
る)ため、算術演算の実施に用いることができるマイク
ロプロセッサの命令セットにおける全ての命令は、一貫
した方法で必要な演算桁溢れおよび演算桁溢れの方向の
情報を提供しなければならない。このことは、基本的な
算術演算(加算、減算、および論理的桁送りを含む算術
的な桁送り演算)の実施のための命令、ならびに基本的
な算術演算(乗算および除算の如き)シーケンスへ分解
し得る演算を実施する命令に妥当する。
【0009】以降の記述において、用語「数学的に一貫
した」とは、算術演算を実施可能なマイクロプロセッサ
の命令セットにおける全ての命令を実行する際に、一貫
した方法で演算桁溢れの起生を取扱う条件コードおよび
条件コード・アーキテクチャを指す時使用される。マイ
クロプロセッサがこのような条件コード・アーキテクチ
ャを含まなければ、種々の演算命令の取扱いのため必要
とされる例外的および特殊な場合は範囲検査および制限
シーケンスを複雑かつ長くし、かつ1つの命令フォーマ
ットにおける実現を略々不可能にする。
【0010】本発明は、改善されたデータ処理装置の提
供を目的とする。本発明の特徴によれば、特許請求の範
囲項1に記載される如きデータ処理装置が提供される。
本発明の別の特徴によれば、特許請求の範囲項9に記載
される如きデータ処理装置が提供される。
【0011】ある実施態様においては、単一命令範囲の
範囲検査および制限動作が実施可能であるように、一貫
した方法で演算桁溢れを取扱うデータ処理装置を提供す
ることが可能である。望ましい実施態様においては、デ
ータ処理装置により生成されるソフトウエアの変数の数
値について演算して、数値が上限の拘束と下限の拘束と
により確立される予め定めた範囲の受入れ得る値の範囲
内にあることを保証するデータ処理装置が提供される。
別の実施態様においては、数学的に一貫した条件コード
・アーキテクチャを備えたデータ処理装置が提供され
る。この条件コード・アーキテクチャは、データ処理装
置に対する1組の定義された演算命令から選択された各
命令の実行のため一貫した方法で算術論理演算装置にお
いて実施される各算術演算のための状態を許容する。各
算術演算の状態は、算術論理演算装置における算術演算
を実施することができる全てのデータ処理装置命令に対
して、演算桁溢れ(符号なしおよび(または)符号つ
き)の起生の表示を行うように設定されるレジスタ保有
条件コード・フラッグと、演算桁溢れに対する方向とに
より提供される。
【0012】データ処理装置は、算術論理演算装置にお
いて実施される算術演算により生成されるソフトウエア
の変数の数値についての範囲検査および制限動作を行う
ように構成されることが望ましい。これらの動作は、条
件コード・フラッグの設定に基くことができる。これら
の動作に従って、ソフトウエアの変数の数値は、望まし
くは、(A)この数値が正の保有における演算桁溢れの
起生により生成された時か、あるいはこの数値が上限度
より大きく演算桁溢れの起生を伴わずに生成された時
に、その上限度に制限され、(B)前記数値が負の方向
における演算桁溢れの起生と共に生成されたか、あるい
は下限度より小さく演算桁溢れの起生を伴わずに生成さ
れた時に、その下限度に制限される。
【0013】全ての演算命令に対して上記のように演算
桁溢れを一貫して取扱うことにより、最小限のセットの
単一命令の範囲検査および制限動作が可能となるが、こ
れは異なる各算術演算に対する特別な演算シーケンスを
有する必要がないためである。
【0014】また、符号なしあるいは符号つきの如何を
問わず演算桁溢れの起生と、演算桁溢れの方向の両方を
表示することにより、ソフトウエアの変数の数値を生成
するため実行された特定の符号なしまたは符号つきの演
算命令を予め知っていることは必要でない。本発明の一
実施例については、単なる例示として添付図面に関して
以下に記述する。
【0015】
【実施例】以降の記述においては、公知の回路および装
置の構造、制御および構成は、容易に理解し得るブロッ
ク図および概略図を用いることにより図面に示される。
【0016】まず図1において、命令レジスタ12、命
令デコーダ14、制御装置16の動作シーケンス、状態
レジスタ18、算術論理演算装置(ALU)20、汎用
レジスタ・ファイル22、バス制御論理回路24および
メモリー装置26を含む範囲において従来通りであるマ
イクロプロセッサ構造10がブロック図形態において示
される。しかし、制御装置16の動作シーケンス、状態
レジスタ18およびALU20は、単一命令の範囲検査
および制限動作の実行を可能にする数学的に一貫した条
件コード・アーキテクチャをマイクロプロセッサ10に
提供するように構成されている。
【0017】また、図1のブロック図には、上記の構成
要素を結合する種々の信号経路が示される。これらの信
号経路は、内部データ・バス30、外部アドレス・バス
32、外部データ・バス34、および外部制御バス36
と、幾つかの番号を付した制御およびデータ線を含む。
1本の線として略図的に示した構成要素間の信号経路は
一般に構成要素間の必要な制御およびデータ信号の転送
を許容する多数の経路を含んでいることが理解されよ
う。
【0018】次に、マイクロプロセッサ10の個々の構
成要素について述べれば、汎用レジスタ・ファイル22
は、プログラム・カウンタ、ゼロ資源、スタック・ポイ
ンタ、スタック・フレーム・ポインタ、および他のデー
タ、アドレスおよび指標レジスタの如きマイクロプロセ
ッサにおいて慣例的に用いられる幾つかの特殊な目的の
レジスタを含む。これらレジスタの内容は、線40に沿
って送られる制御信号を介して制御装置16の動作シー
ケンスの制御下で、バス制御論理回路24または内部デ
ータ・バス30へ送ることができる。同様に、内部デー
タ・バス30からのデータはまた、汎用レジスタ・ファ
イル22内部のレジスタへロードことができる。
【0019】ALU20は、内部データ・バス30から
1つ以上のオペランド(オペランドA、またはオペラン
ドAおよびB)を受取るように構成される。線42を介
して制御装置16の動作シーケンスにより提供される制
御信号に応答して、ALU20は、オペランドAあるい
はオペランドAおよびBについて算術および(または)
論理演算を実施して結果Cを生じる。記述を簡単にする
目的のため、ALU20は、オペランドA、オペランド
Bおよび結果Cを記憶するための個々のレジスタを含む
如くに示されるが、これらレジスタは汎用レジスタ・フ
ァイル22に置くことができまた典型的にはこれに置か
れている。状態レジスタ18は、通常は汎用レジスタ・
ファイル22に含まれるが、この場合も明瞭にする目的
のため、状態レジスタ18は汎用レジスタ・ファイル2
2から切り離される如く示される。
【0020】状態レジスタ18は、ALU20により実
施される算術および(または)論理演算の状態を提供す
るように設定される条件コード・ビット(フラッグ)を
含む。この条件コードは、線44に送られる制御信号を
介してALU20により直接セットまたはリセットする
ことができ、あるいは条件コードに対する値は、線50
を介して制御装置16の動作シーケンスから受取られる
制御信号に応答して、内部データ・バス30からロード
されこれに対して駆動されることができる。また、AL
U20および制御装置16の動作シーケンスは、データ
線46、48により条件コードの値をそれぞれ読出す直
接アクセスを行うことを知るべきである。
【0021】望ましい実施例においては、状態レジスタ
18は、実際には汎用レジスタ・ファイル22に含まれ
るが、本文の記述では汎用レジスタ・ファイル22から
切り離される如くに示される。
【0022】バス制御論理回路24の動作もまた、制御
装置16の動作シーケンスにより制御される。基本的に
は、バス制御論理回路24は、内部データ・バス30
と、線52、54によりそれぞれ送られる制御信号およ
び確認信号を介して制御装置16の動作シーケンスによ
り制御される如き、汎用レジスタ・ファイル22におけ
るレジスタ(あるいは、ALU20における簡単な加算
または減算に続く内部データ・バス30に入れられる前
記レジスタ内容)の内部に含まれるアドレスにより指定
されるメモリー装置26内部の記憶場所との間に、デー
タを転送するように機能する。
【0023】動作中、マイクロプロセッサ10は、外部
データ・バス34および内部データ・バス30により慣
例的方法で制御装置16の動作シーケンスの制御下でメ
モリー装置26から機械命令を取出す。この取出された
命令は命令レジスタ12に格納されて、実行を待機す
る。
【0024】図2に略図的に示されるように、格納され
た機械命令ワードは、命令コード・フィールド(即ち、
opコード)60と、オペランド・フィールド62とを
含んでいる。命令コード・フィールド60におけるop
コードのビット・パターンは、マイクロプロセッサ10
により行われるべき動作を定義し、命令により用いられ
るアドレス指定モードを定義する。オペランド・フィー
ルド62は、汎用レジスタ・ファイル22におけるレジ
スタを識別するデータ、データを記憶するためのアドレ
ス、検索データ、あるいは変化するプログラムの流れ、
およびある場合にはマイクロプロセッサ10において使
用されるデータそのものを含み得る。大半の機械命令に
対しては、オペランド・フィールド62が、ソース・オ
ペランド・フィールド64と宛て先オペランド・フィー
ルド66として示される部分に細分割される。図2に示
される命令ワード・フォーマットのみが考察されるが、
マイクロプロセッサが一般に図2に示される如き命令ワ
ードの後に別のデータまたはアドレスの変位情報を含む
拡張ワードが続く種々のアドレス指定モードを提供する
ことが認識されよう。
【0025】命令レジスタに格納された機械命令のフィ
ールドのビット・パターンは、線56、58でそれぞれ
送られる制御信号を介して、制御装置16の動作シーケ
ンスにより制御される如く、命令デコーダ14によって
復号される。復号された結果は、次に制御装置16の動
作シーケンスに対する入力として指令される。この復号
された入力に基いて、制御装置16の動作シーケンス
は、命令レジスタ12に格納された機械命令を実行する
ため必要なシーケンスで適当な出力制御信号を生成す
る。算術演算または論理演算に対しては、これは典型的
に、(1)復号命令のオペランド・フィールド62(典
型的には、宛て先オペランド・フィールド66とソース
・オペランド・フィールド64によりそれぞれ指定され
る)に基いてALU20に対する適当なオペランドAま
たはオペランドAおよびBを取出し、(2)復号された
命令コード・フィールド60(opコード)に従って、
ALU20を制御して出力結果Cを生じるのに必要な内
部動作を行い、(3)再び復号命令コード・フィールド
(典型的には宛て先オペランド・フィールド66により
指定される)に基いてモリー装置26における記憶場所
または汎用レジスタ・ファイル22におけるアドレス指
定可能なレジスタに結果Cを格納することを含む。
【0026】当技術において周知のように、制御装置1
6の動作シーケンスは、ハードワイヤド・ランダム・ロ
ジック、プログラム可能ロジック・アレイ、あるいは望
ましくはマイクロプログラムされた動作シーケンサとし
て構成することができる。このようなマイクロプログラ
ムされた動作シーケンサにおいては、出力制御信号の選
択および順序付けは、マイクロエンジン(即ち、マイク
ロシーケンサ)によりマイクロ命令ストア(制御メモリ
ー)から取出されるマイクロ命令により決定される。各
機械命令は次に、命令デコーダ14により与えられる復
号命令出力に応答して必要な出力制御信号を生じるため
連続的に取出されるマイクロプログラムまたはマイクロ
命令セットとして実行される。
【0027】あるマイクロプロセッサ用途においては、
値がALU20で行われた算術演算により生成されるソ
フトウエアの変数についての範囲検査および制限動作を
実行することがしばしば望ましい。これは、ソフトウエ
アの変数値が受入れ得る限度を越えないことを保証する
ために必要である。このような範囲検査および制限動作
を正しく実行するためには、マイクロプロセッサ10
は、算術演算から生じるソフトウエアの変数値がALU
20における演算桁溢れを結果として生じたかどうかに
ついての表示が与えられなければならず、またこの演算
桁溢れの方向(正か負か)もまた知られなければならな
い。
【0028】現在のマイクロプロセッサの条件コードお
よび条件コード・アーキテクチャが、符号なしおよび符
号つき加算(ADD)、減算(SUB)、およびこれら
演算の誘導結果である比較(CMP)などの諸命令を実
施する基本的機械命令に対してのみ、所要の桁溢れおよ
び桁溢れの方向の表示を行うことが知られている。伝統
的な条件コード・アーキテクチャは、通常、従来のマイ
クロプロセッサにおいて行われる算術演算の種類の状態
を示すためのゼロ即ちz−ビット・フラッグ、繰上げビ
ット即ちC−ビット、符号つき桁溢れ即ちV−ビット・
フラッグ、および負の即ちN−ビット・フラッグを含む
状態レジスタを含んでいる。
【0029】ゼロ即ちZ−ビット・フラッグは、通常、
生成された数値結果がゼロの値を持たなければ、算術演
算により(ここでは論理値ローを表わすものとする)論
理値「0」にセットされ、この場合、Z−ビット・フラ
ッグは論理値「1」にセットされる(ここでは論理値ハ
イを表わすものとする)。これは、典型的には、生成さ
れた数値結果の全てのビットについてNOR演算を行う
ことにより行われ、これが数値結果の全てのビットが論
理値0を持つ場合にのみ論理値1を生じる。このNOR
演算により生じる出力は、算術演算の完了後に状態レジ
スタにおけるZ−ビット・フラッグに対する値としてラ
ッチされる。
【0030】繰上げビット即ちC−ビット・フラッグ
は、慣例的に符号なし桁溢れを表示するため使用され、
即ち、このビットは、算術演算がALU内で繰出しある
いは借入れを生成する時は常にセットされ、これがそれ
ぞれ正または負の方向における符号なし桁溢れを生じ
る。しかし、繰上げビットは、一般に符号なし桁溢れ標
識として専ら使用されない。また、これはALU桁送り
および回転操作の間ビット・アキュムレータとして用い
られる。桁送り操作は一般に、(2の冪乗による)最適
化乗算および除算として用いられ、これが使用される
時、C−ビットは常に有効な符号なし桁溢れ標識ではな
い(行われた桁送り操作の種類に依存する)。また、あ
るデータ・プロセッサは、その命令セットに符号なし乗
算および除算を含み、これは一般に符号なし桁溢れ標識
としてC−ビットを取扱わない。
【0031】符号つき桁溢れの表示は、典型的にはV−
ビット・フラッグにより行われる。このビットは、通常
は、算術演算が2の補数形態で適正に表わすことができ
ない結果を生じる時にセットされる。2の補数は正また
は負であり得るため、符号つき桁溢れは正および負の両
方向に生じ得る。歴史的には、加算、減算および比較の
如き簡単な演算の場合は、V−ビットおよびN−ビット
の状態が、符号つき桁溢れとその方向の両方を表示する
ために使用されていた。例えば、V−ビットおよびN−
ビットが共に論理値1にセットされる時は、符号つき桁
溢れは正の方向にあると言われ、またV−ビットが論理
値1にセットされN−ビットが論理値0にセットされる
時は、符号つき桁溢れは負の方向である言われる。ここ
で再び、伝統的な条件コード・アーキテクチャは、桁送
り、乗算および除算のための方向により符号つき桁溢れ
を正しく示すため条件コードをセットすることはない。
【0032】上記のことから、伝統的な条件コード・ビ
ットおよび条件コード・アーキテクチャがマイクロプロ
セッサにおける算術演算を実施するため用いられる全て
の機械命令により生じる桁溢れを一貫して取扱わないこ
とが明らかである。その結果、桁溢れの起生および桁溢
れの方向は、伝統的な条件コード・セッティングからは
信頼性を以て決定することができない。
【0033】本例では、マイクロプロセッサ10は、算
術演算を実行するため用いられるマイクロプロセッサの
命令セットにおける全ての命令に対して、数学的に一貫
した方法で桁溢れを取扱う条件コード・アーキテクチャ
が提供される。明らかなように、これはマイクロプロセ
ッサ10における単一命令の範囲検査および制限動作の
実現を可能にする。
【0034】次に図3において図1のALU20および
状態レジスタ18の更に詳細なブロック図が示され、こ
れらはマイクロプロセッサ10に第1の実施例による数
学的に一貫したコードを提供する。このアーキテクチャ
は、状態レジスタ18におけるZ′−ビット・フラッグ
70、C′−ビット・フラッグ72、V′−ビット・フ
ラッグ74、およびN′−ビット・フラッグ76として
示される条件コードが、符号なしおよび符号つき桁溢れ
と、(2の冪乗による乗算および除算のため一般に用い
られる算術および論理桁送り命令を含む)加算、減算、
乗算および除算を行う全ての機械命令に対する符号つき
桁溢れと、これから構成され得る他の演算命令または算
術演算との起生を正しく表示することを保証する。
【0035】制御装置16の動作シーケンスからの線4
2における制御信号は、オペランドAまたはオペランド
AおよびBについてALU20により行われる算術演算
を選択して、命令レジスタ12に存在する機械命令の復
号されたopコード60により指定される如き結果Cを
生じる。オペランド値、この結果の値および行われた算
術演算の種類に基いて、状態レジスタ18における条件
コード・フラッグZ′、C′、V′およびN′が、符号
なしおよび符号つき桁溢れの起生および符号つき桁溢れ
の方向を表示するため適当にセットされる。
【0036】以下において、第1の実施例に対する数学
的に一貫した条件コード・アーキテクチャの構成につい
ては、主として算術演算を行うため用いられる機械命令
の定義されたセットに対する適当な条件コード値を生じ
るALU20内部の機能的論理回路に照らして記述す
る。この特定の論理回路が単に例示であること、および
当業者は同じ機能を達成するための異なる論理的構成を
容易に実現することができることが認識されよう。更
に、選択された算術演算を実行するためALU20の制
御、および機械命令の実行中の条件コード値の適正なゲ
ートおよびラッチ動作において用いられる特定の構造お
よび回路の細部は、当技術において周知であり、本文で
はこれ以上詳細に論述しない。
【0037】条件コード・ビットZ′、C′、V′およ
びN′に対する値は、図3においてはALU20から生
じるものとして示され、これからこれらは状態レジスタ
18におけるその関連するフラッグをセットするため線
44に沿って送られる。条件コード・ビットの値を生成
するための論理回路もまたALU20に対して外部に置
くことができ、あるいはまた、ある場合には、条件コー
ド値が制御装置16の動作シーケンスにハードワイヤド
されたランダム・ロジックにより、あるいは内部のマイ
クロ命令の実行によって決定されセットできることは容
易に理解されよう。条件コード・ビットに対する値は、
ALU20と関連するハードワイヤド・ロジック構成要
素により、また制御装置16の動作シーケンス内のマイ
クロ命令の実行によって決定され設定されることが望ま
しい。
【0038】次に図4乃至図13において、算術演算を
実施するため使用されるマイクロプロセッサ10の命令
セット内の種々の命令に対する第1の実施例の数学的に
一貫した条件コード・アーキテクチャを構成するための
機能的論理図が示される。第1の実施例では、条件コー
ド・ビットZ′、C′、V′およびN′が、符号なしお
よび符号つき加算(ADD)および減算(SUB)を実
施する命令に関して、伝統的条件コード・ビットZ、
C、VおよびNと機能的に対応するように構成された。
しかし、条件コード・ビットZ′、C′、V′および
N′の設定のための修正が、符号なし乗算(MUL
U)、符号つき乗算(MULS)、符号なし除算(DI
VU)、符号つき除算(DIVS)、算術的左桁送り
(ASL)、論理的右桁送り(LSR)および算術的右
桁送り(ASR)演算を実施する命令に対する桁溢れ条
件の一貫した取扱いを保証することが要求された。マイ
クロプロセッサの命令セットもまた、算術的右桁送り演
算を介して2の冪乗による負の値の除算を行う時、符号
つき除算命令と一貫した演算結果が生成できるようにゼ
ロへの丸めにより算術的右桁送りを行うための別の命令
で増補される。
【0039】図4は、命令レジスタ12に格納されたA
DD命令の実行中にALU20が符号なしおよび符号つ
き加算を行う時、を機能的に示している。
【0040】ADD命令は、命令においてフィールド6
4で示されるソース・オペランドをフィールド66で示
される宛て先オペランドに加算する。制御装置16の動
作シーケンスが、最初にソース・オペランドをBレジス
タ100へ、また宛て先オペランドをAレジスタ102
へ送ることによりADD命令を実行し、この両者ともA
LU20内に配置されている。次いで、ALU20にお
ける標準加算ユニット104が選択されて、Bレジスタ
100の内容(加数)をAレジスタ102の内容(被加
数)に加算し、これもALU20に配置されるCレジス
タ106に数値の結果C(和)を格納する。この付加的
なプロセスの完了と同時に、制御装置16の動作シーケ
ンスが宛て先オペランド(フィールド66により指定)
を106の内容即ち数値結果Cと置換する。以下におい
ては、レジスタ100、102および106の各々は、
特にそうでない旨が表示されなければ、mビットのデー
タ幅を有するものとする。従って、各レジスタにおける
最下位ビット(LSB)は最初のビットとして表示さ
れ、最上位ビット(MSB)はm番目のビットとして表
示される。
【0041】条件コードZ′−ビット・フラッグ70に
対する値は、NORゲート108からの出力として周知
の方法で決定され、このゲートはCレジスタ106にお
ける各ビット値(最初の値、、、、(m−1)番目の
値、m番目の値)を入力として有する。その結果、Cレ
ジスタ106における各ビットが論理値0を有する場合
にのみ状態レジスタ18に配置されるZ′−ビット・フ
ラッグ70が論理値1にセットされ、さもなければ、
Z′−ビット・フラッグ70は論理値0にセットされ
る。このため、Z′−ビット・フラッグ70のセッティ
ングは、伝統的条件コードZ−ビットのセッティングと
正確に対応している。
【0042】Z′−ビット・フラッグ70の値を決定す
るためのこの構成は、Cレジスタ106に数値結果を生
成して格納する望ましい実施例における全ての機械命令
に対して用いられ、これ以上は記述せずあるいは以降の
図面には示さない。類似の構成はAレジスタ102に対
して存在し、これにより、桁送り演算を実施する命令の
実行後にAレジスタにおける全てのビットが論理値0に
等しい時、Z′−ビット・フラッグ70が論理値1にセ
ットされる。Z′−ビットの値が陽極条件コード値を決
定するため要求される時は、図面はZ′−ビット値を
Z′−ビット・フラッグ70からの出力として得られる
ものとして示すことになる。
【0043】別の動作において、C′−ビット・フラッ
グ72のセッティングは、伝統的C−ビットのセッティ
ングと正確に対応し、即ち、符号なし桁溢れが検出され
る時にのみC′−ビットは値1にセットされ、さもなけ
ればクリヤ(値0にセット)される。定義により、符号
なし桁溢れは、結果Cに対して生じるべき理論的値がC
レジスタ106の許容データ幅(即ち、2m−1)を越
える時は常に起生する。この文脈において用いられる語
句「理論値」とは、算術演算により生じる結果Cに対す
る理想値(即ち、数学的に正しい、即ち無限精度値)を
指すことが理解されよう。
【0044】当業者は、加算中の符号なし桁溢れの起生
が加算ユニット104の生じる繰出し(正の方向におけ
る符号なし桁溢れ)と対応することを認識しよう。慣例
におけるように、符号なし桁溢れの検出はオペランド
A、オペランドBおよび結果CのMSBの論理値と、A
NDゲート116、118、120に関するORゲート
114の演算に基いている。更に、C′−ビット・フラ
ッグ72は、(1)オペランドAのMSBが1に等し
く、結果CのMSBが0に等しいか、あるいは(2)オ
ペランドBのMSBが1に等しく、結果CのMSBが0
に等しいか、あるいは(3)オペランドAおよびオペラ
ンドBの両方のMSBが1に等しい時は常に、論理値1
にセットされる。論理ゲート入力における小さな〇記号
を用いる標準的な慣例が、関連する入力信号がゲートに
入る前に反転されることを示すため用いられることに注
意されたい。
【0045】V′−ビット・フラッグ74のセッティン
グもまた、加算に対する伝統的V−ビットのセッティン
グと正確に対応する、即ち、2の補数の桁溢れ(符号つ
き桁溢れ)が生じる時は常にV′−ビットが値1にセッ
トされ、さもなければクリヤされる。定義により、2の
補数の桁溢れは、結果Cに対して生じるべき理論値がC
レジスタ106のデータ幅(mビット)において表わす
ことができる最も大きな正の符号つき数(即ち、正の方
向における符号つき桁溢れ)である2(m-1)−1を越え
る時、あるいは結果Cの数値が、Cレジスタ106のデ
ータ幅で表わすことができない負の符号を持つ最も大き
い結果(即ち、負の方向における符号つき桁溢れ)であ
るー2(m-1)より小さい時に常に生じる。伝統的に、加
算に対する2の補数の桁溢れの検出は、オペランドA、
オペランドBおよび結果CのMSBの論理値、およびA
NDゲート126、128と関連するORゲート124
の演算に基く。従って、V′−ビット・フラッグ74
は、(1)オペランドAおよびBのMSBが1に等し
く、結果CのMSBが値0を持つ(即ち、オペランドA
およびBが負であり、結果Cが正となる)か、あるいは
(2)オペランドAおよびBのMSBが0に等しく、結
果CのMSBが値1を持つ(即ち、オペランドAおよび
Bが正であり、結果Cが負となる)時に常に論理値1に
セットされ、このことは加算中2の補数の桁溢れの起生
を示す従来の慣例と一致している。
【0046】N′−ビット・フラッグ76のセッティン
グもまた、加算のための伝統的なN−ビットの条件コー
ドのセッティングと一致している。先に述べたように、
N′−ビット・フラッグ76は、結果CのMSB(Cレ
ジスタ106のm番目のビット)が値1を有する時は常
に値1にセットされ、さもなければクリヤされる。この
ため、N′−ビットは、ALU20により行われる加算
により生じる結果Cの符号の表示である。
【0047】簡潔の目的のため、共通の2の補数フォー
マットが符号つき数を表わすための現在仕様の全てにわ
たって用いられてきた。当業者は、異なる符号つき数の
表示、例えば1の補数または符号の大きさを用いるマイ
クロプロセッサに対して本文に述べた実施例を適応させ
るため要求される開示された論理回路に対するこれらの
修正を容易に認識しよう。
【0048】図5は、命令レジスタ12に格納されたS
UB命令の実行中にALU20が符号なしおよび符号つ
き減算を行う時、条件コード・ビットをセットするため
の数学的に一貫した条件コード・アーキテクチャの該等
部分を機能的に示している。
【0049】SUB命令は、フィールド66により示さ
れる宛て先オペランドから、命令におけるフィールド6
4により示されるソース・オペランドを差引く。制御装
置16の動作シーケンスは、最初にソース・オペランド
をBレジスタ100へ、また宛て先オペランドをAレジ
スタ102へ送ることによりSUB命令を実行する。次
いで、ALU20における標準減算ユニット140が選
択されて、Aレジスタ102の内容(被減数)からBレ
ジスタ100の内容(減数)を差引き、数値結果C
(差)をCレジスタ106に格納する。差引きプロセス
の完了と同時に、制御装置16の動作シーケンスが宛て
先オペランド(フィールド66により指定される)をC
レジスタ106の内容、即ち数値結果Cで置換する。
【0050】減算においては、C′−ビット・フラッグ
72のセッティングは、伝統的C−ビットのセッティン
グと再び正確に対応し、即ち、負の方向における符号な
し桁溢れが検出される時にのみC′−ビットが値1にセ
ットされ、さもなければクリヤ(論理値0にセット)さ
れる。定義により、負の方向における符号なし桁溢れ
(時に、下位桁溢れ(underflow)と呼ぶ)
は、結果Cに対して生じるべき理論値がゼロより小さい
(即ち、オペランドBの値がオペランドAより大きい場
合における如き負である)ために符号なし数として表わ
すことができない時は常に起生する。当業者は、減算中
の負の符号なし桁溢れの起生が加算ユニット104が要
求する借入れと対応することを認識しよう。加算におけ
る如く、減算に対する符号なし桁溢れの検出は、オペラ
ンドA、オペランドBおよび結果CのMSBの論理値、
およびANDゲート134、136、138と関連する
ORゲート132の演算に基いている。従って、C′−
ビット・フラッグ72は、(1)オペランドAのMSB
が0に等しく、結果CのMSBが1に等しいか、あるい
は(2)オペランドAのMSBが0に等しく、オペラン
ドBのMSBが1に等しいか、あるいは(3)オペラン
ドBと結果Cの両方のMSBが1に等しい時は常に論理
値1にセットされる。
【0051】V′−ビット・フラッグ74のセッティン
グもまた、減算に対する伝統的V−ビットのセッティン
グと対応し、即ち、2の補数の桁溢れ(符号つき桁溢
れ)が生じる時は常にV′−ビットが値1にセットさ
れ、さもなければクリヤされる。伝統的に、減算に対す
る2の補数の桁溢れ(符号つき桁溢れ)の検出は、AN
Dゲート142、144と関連してORゲート144を
用いて、オペランドA、オペランドBおよび結果CのM
SBの論理値に基いている。従って、V′−ビット・フ
ラッグ74は、(1)オペランドAのMSBが0に等し
く、オペランドBおよび結果CのMSBが1に等しい
(即ち、オペランドAが正であり、オペランドBが負で
あり、結果Cが負となる)か、あるいは(2)オペラン
ドAのMSBが1に等しく、オペランドBおよび結果C
のMSBが0に等しい(即ち、オペランドAが負であ
り、オペランドが正であり、結果Cが正となる)時は常
に論理値1にセットされ、このことは減算中2の補数の
桁溢れの起生を示すための従来の慣例と一致している。
【0052】N′−ビット・フラッグ76のセッティン
グもまた、減算に対する伝統的なN−ビットのセッティ
ングと一致している。先に述べたように、N′−ビット
・フラッグ76は、結果CのMSB(Cレジスタ106
のm番目のビット)が値1を持つ時は常に値1にセット
され、さもなければクリヤされる。その結果、N′−ビ
ット・フラッグ76は、減算により生じる結果Cの符号
を示す。
【0053】先に述べたように、この第1の実施例にお
いては、加算、減算(およびこれらの演算の誘導結果で
ある比較の如き命令)に対する条件コード・ビット
Z′、C′、V′およびN′のセッティングが、これら
演算に対する伝統的な伝統的条件コード・ビットZ、
C、VおよびNのセッティングと正確に対応させられ
た。これは、この第1の実施例の数学的に一貫した条件
コード・アーキテクチャが、比較および条件つき分岐命
令に対する伝統的な条件コードのセッティングを利用す
る現在のマイクロプロセッサのソフトウエアおよびプロ
グラミングの慣例と対比し得るように、従来の目的のた
め行われた。
【0054】従って、符号なし加算および減算に対し
て、C′−ビット・フラッグ72は、それぞれ繰出しが
正の方向における桁溢れを生じ借入れが負の方向におけ
る桁溢れ(下位桁溢れ)を生じる時は常に論理値1にセ
ットされる。その結果、C′−ビット・フラッグ72
は、桁溢れの方向を表示することなく符号なし桁溢れの
表示を生じる。
【0055】符号つき加算および減算に対して、V′−
ビット・フラッグ74は、符号つき桁溢れが(正または
負の)生じる時は常に論理値1にセットされ、またN′
−ビット・フラッグ76は、Cレジスタ106に格納さ
れた結果CのMSBの値に等しくセットされる。加算ま
たは減算中(V′−ビットが論理値1に等しい時)符号
つき桁溢れが生じると、伝統的な条件コードの挙動か
ら、N′−ビット・フラッグ76が符号つき桁溢れの方
向を示す、即ち、N′−ビットは正の桁溢れに対して論
理値1を、また負の桁溢れに対して論理値0を持つこと
になる。その結果、符号つき加算および減算に対して
は、V′−ビット・フラッグ74およびN′−ビット・
フラッグ76は、符号つき桁溢れおよび符号つき桁溢れ
の方向の表示を生じる。
【0056】出願人は、N′−ビットが前述のようにセ
ットされると、符号つき加算および減算(および比較の
如きそれらの微分演算)に対する結果CのMSBの値と
なる如き、N′−ビットの値が実際にV′−ビットの値
および結果の理論的な符号の排他的OR(EOR)を表
わすことを認識した。このコンテキストにおいて用いら
れる語句「理論的符号」とは、算術演算を実行中結果と
して生じるはずの理想的即ち数学的に正しい符号を指
す。従って、発明者たちは、N′−ビットがV′−ビッ
トの値および算術演算により生じる結果の理想的符号の
EORにより生じる値に等しくセットされるならば、
N′−ビットが算術演算に対する符号つき桁溢れの方向
を示すため用い得ることを認識した。以下に述べるよう
に、このような認識は、算術演算を行うADDおよびS
UB、およびその誘導結果に加えて、全ての機械命令に
対する数学的に一貫した方法で符号つき桁溢れを取扱う
ための基盤を構成する。
【0057】図6は、ALU20が命令レジスタ12に
格納されたMULU命令の実行中に符号なし乗算を行う
時、条件コード・ビットをセットする数学的に一貫した
条件コード・アーキテクチャの該当部分を示している。
【0058】MULU命令は、符号なしソース・オペラ
ンド(フィールド64で示す)により符号なし宛て先オ
ペランド(フィールド66で示す)の符号なし乗算を実
施し、最初にソース・オペランドをBレジスタ100
へ、また宛て先オペランドをAレジスタ102へ送るこ
とによって実行される。次にALU20における標準的
な符号なし乗算ユニット150が選択されて、Bレジス
タ100の内容(乗数)によりAレジスタ102の内容
(被乗数)を乗じ、数値の結果C(積)がCレジスタ1
06に格納される。乗算プロセスの完了と同時に、制御
装置16の動作シーケンスは宛て先オペランド(フィー
ルド66により指定)をCレジスタ106の内容で置換
する。
【0059】結果Cに対して生じる理論値がCレジスタ
106の許容データ幅を越える時、即ち、積に対する理
論値が2m−1を越える(正の桁溢れのみが符号なし乗
算に対して生じ得る)時は常に、、C′−ビット・フラ
ッグ72の値は符号なし乗算ユニット150により論理
値1にセットされる。Cレジスタ106のデータ幅が乗
算に対する慣例である2mビットまで増加されるものと
すれば、符号なし桁溢れが決して生じることがなく、
C′−ビット・フラッグ72が常にクリヤされることが
認識されよう。
【0060】先に示したように、V′−ビット・フラッ
グ74は符号なし乗算に対して常に論理値0にクリヤさ
れるが、これは符号つき桁溢れが符号なし算術演算に対
して不可能であるためである。また、慣例における如
く、N′−ビット・フラッグ76は、Cレジスタ106
に格納された結果C(積)のMSBの値に等しくセット
される。
【0061】符号なし乗算に対しては、正の方向におけ
る桁溢れのみが起生し得、この正の符号なし桁溢れが論
理値1を持つC′−ビット・フラッグ72により表示さ
れることに注目されたい。符号なし乗算の場合は、V′
−ビット・フラッグ74およびN′−ビット・フラッグ
76のセッティングは関連しないが、これはこれらが符
号つき算術演算に対してのみ適用し得るためである。
【0062】図7は、命令レジスタ12に格納されたM
ULS命令の実行中にALU20が符号つき乗算を行う
時に、条件コード・ビットをセットする数学的に一貫し
た条件コード・アーキテクチャの該当部分を機能的に示
している。
【0063】MULS命令は、符号つきソース・オペラ
ンド(フィールド64で示される)により符号つき宛て
先オペランド(フィールド66で示される)の符号つき
乗算を行い、最初にソース・オペランドをBレジスタ1
00へ、また宛て先オペランドをAレジスタ102へ送
ることによって実行される。次いでALU20における
標準的な符号つき乗算ユニット152が選択されて、B
レジスタ100の内容(乗数)によりAレジスタ102
の内容(被乗数)を乗じ、数値の結果(積)がCレジス
タ106に格納される。乗算プロセスの完了と同時に、
制御装置16の動作シーケンスが宛て先オペランド(フ
ィールド66により示される)をCレジスタ106の内
容で置換する。
【0064】符号つき乗算が行われるため、条件コード
のC′−ビット・フラッグ72が論理値0にセットさ
れ、C′−ビットのセッティングは符号つき算術演算に
対しては関連しない。
【0065】符号つき乗算ユニット152は、2の補数
桁溢れが生じる時、即ち、生じた積の理論値が2(m-1)
−1を越えるか、あるいは−2(m-1)より小さい時は常
に、V′−ビット・フラッグ74を論理値1にセットす
る。Cレジスタのデータ幅が乗算の慣例である2mビッ
トまで増加されるとすれば、符号つき桁溢れが生じて
V′−ビット・フラッグ74は常にクリヤされることが
認識されよう。
【0066】符号つき乗算に対するN′−ビットのセッ
ティングが符号つき加算および減算に対するN′−ビッ
トのセッティングと一致することを保証するため、N′
−ビット・フラッグ76は、入力としてV′−ビット値
と、符号つきオペランドAが符号つきオペランドBで乗
じられる時に生じる積の理論的符号を表わす線156に
おける値とを持つEORゲート154により出力におけ
る値と等しくセットされる。
【0067】線156において生じる理論的符号に対す
る値は、V′−ビット・フラッグ74およびZ′−ビッ
ト・フラッグ70の論理値と共に、Aレジスタ102に
おけるオペランドAとBレジスタ100におけるオペラ
ンドBのMSBの値により決定される。EORゲート1
58の出力は、オペランドAおよびオペランドBの符号
が等しくない時にのみ論理値1を持ち、これがオペラン
ドAまたはオペランドBの一方がゼロに等しい特別な場
合を除いて積の理論的符号の値を表わすことに注目され
たい。EORゲート158の出力は、オペランドAおよ
びBがその各々のレジスタ102および100に入れら
れると直ちにラッチ160によりラッチされる。これ
は、乗算の終りにN′−ビット・フラッグ76をセット
するためEORゲート158からの出力の値をセーブす
るために行われる。Z′−ビット・フラッグ70が論理
値0にセットされる(即ち、結果Cがゼロの数値を持た
ない)時は、ORゲート164からの出力線162が論
理値1を有することになる。その結果、EORゲート1
58からのラッチ出力がANDゲート168を通って送
られて線156における理論的符号に対する値となる。
【0068】オペランドAおよびBの一方がゼロであり
他方が負の値を有する(即ち、そのMSBが論理値1に
セットされる)特別な場合に、理論的結果がゼロとな
り、ゼロの結果の理論的符号が慣例的に正として定義さ
れる。この場合、ラッチ160によりラッチされるEO
Rゲート158からの出力は論理値1となり、これは線
156における理論的符号に対する正しい値を提供する
ものではない。Cレジスタ106における結果Cが桁溢
れの結果ではないゼロの値を持つ(即ち、V′−ビット
がクリヤされてZ′−ビットが論理値1にセットされ
る)時、ORゲート164の出力線162は論理値0を
持ち、これがEORゲート158のラッチ出力が線15
6に達することを阻止する。その代わり、線156にお
ける理論的符号の値が正しい論理値0を与えられること
になる。Cレジスタ106における結果Cが値ゼロを持
つがこれが桁溢れにより生じた(即ち、Z′−ビットお
よびV′−ビットの両方が論理値1を持つ)ならば、O
Rゲート164の出力線162は論理値1を持つことに
なり、その結果ラッチ160からの値をANDゲート1
68に通すことができることに注目されたい。
【0069】図8は、命令レジスタ12に格納されたD
IVU命令の実行中にALU20が符号なし除算を行う
時、条件コード・ビットをセットするための数学的に一
貫した条件コード・アーキテクチャの該当部分を機能的
に示している。
【0070】このDIVU命令は、符号なしソース・オ
ペランド(フィールド64により示される)により符号
なし宛て先オペランド(フィールド66による示され
る)を除し、最初にソース・オペランドをBレジスタ1
00へ、また宛て先オペランドをAレジスタ102へ送
ることによって実行される。次いでALU20における
標準的な符号なし除算ユニット170が選択されて、B
レジスタ100の内容(除数)によりAレジスタ102
の内容(被除数)を除し、数値結果C(商)がCレジス
タ106に格納される。この除算プロセスの完了と同時
に、制御装置16の動作シーケンスが宛て先オペランド
(フィールド66により示される)をCレジスタ106
の内容で置換する。
【0071】図8に示されるように、C′−ビット・フ
ラッグ72、V′−ビット・フラッグ74、およびN′
−ビット・フラッグ76の値は、Cレジスタ106に入
れられる商を生じる時に符号なし除算ユニット170が
符号なし桁溢れを検出する時は常にC′−ビット・フラ
ッグ72が論理値1にセットされることを除いて、これ
らが符号なし乗算命令MULU(図6参照)に対して生
じたのと正確に同じ方法で生成される。符号なし除算に
対して、符号なし桁溢れは正の方向にのみあり得、また
Bレジスタ100における除数が2進値ゼロを持つ時に
生じることが認識されよう。
【0072】図9は、命令レジスタ12に格納されたD
IVS命令の実行中にALU20が符号つき除算を行う
時、条件コード・ビットをセットするための数学的に一
貫した条件コード・アーキテクチャの該当部分を機能的
に示している。
【0073】このDIVS命令は、符号つきソース・オ
ペランド(フィールド64により示される)により符号
つき宛て先オペランド(フィールド66により示され
る)を除し、最初にソース・オペランドをBレジスタ1
00へ、また宛て先オペランドをAレジスタ102へ送
ることによって実行される。次いでALU20における
標準的な符号つき除算ユニット172が選択されて、B
レジスタ100の内容(除数)によりAレジスタ102
の内容(被除数)を除し、数値結果C(商)がCレジス
タ106に格納される。この除算プロセスの完了と同時
に、制御装置16の動作シーケンスが宛て先オペランド
(フィールド66により示される)をCレジスタ106
の内容で置換する。
【0074】図9に示されるように、C′−ビット・フ
ラッグ72、V′−ビット・フラッグ74およびN′−
ビット・フラッグ76に対する値は、符号つき除算ユニ
ット172がCレジスタに入れられるべき商を生じる際
に符号つき桁溢れを検出する時は常に、V′−ビット・
フラッグ74が論理値1にセットされることを除いて、
符号つき乗算命令MULS(図7参照)に対して生じた
と正確に同じ方法で生成される。従って、図9に示され
る論理ゲートは全て、図7に示されたものとちょうど同
じ方法で同じ参照番号と機能を有する。
【0075】図10は、ASL命令の実行中ALU20
が2の冪乗による符号なしおよび符号つき乗算を行う時
に、条件コード・ビットをセットするための数学的に一
貫した条件コード・アーキテクチャの該当部分を機能的
に示している。
【0076】このASL命令は、ソース・オペランド
(フィールド64により示される)により与えられる桁
送りカウントとして指定される2の冪乗である乗数によ
り宛て先オペランド(フィールド66により示される)
を乗じる。このASL命令は、最初にソース・オペラン
ドをBレジスタ100へ、また宛て先オペランドをAレ
ジスタ102へ送ることによって実行される。次いでA
レジスタ102におけるオペランドAの内容は、ゼロを
Aレジスタ102における空のLSB位置へ桁送りしな
がら、Bレジスタ100に保持されたオペランドBによ
り与えられるビット位置数だけ左方へ桁送りされる。各
左方桁送りはAレジスタ102の内容を2で乗じ、この
操作は2の冪乗による符号なしおよび符号つき数の乗算
をエミュレートするため用いられる。桁送り操作が完了
した後、制御装置16の動作シーケンスが宛て先オペラ
ンド(フィールド66による示される)をAレジスタ1
02の内容で置換する。
【0077】これまで、ASL命令中にAレジスタ10
2から繰出された最も後のMSBが伝統的なC−ビット
の条件コードに対する値として保持されていた。多重ビ
ット桁送りにより、桁溢れの起生後に、即ち、論理値1
が既にAレジスタ102のMSB位置から繰出された後
に、C−ビットがクリヤされることが可能である。その
結果、ASL命令が2の冪乗による符号なし乗算のため
用いられる時、伝統的なC−ビットは符号なし桁溢れに
対する信頼し得る表示を提供することがない。
【0078】第1の実施例の条件コード・アーキテクチ
ャは、論理値1がAレジスタ102のMSB位置から桁
送りされるならば、C′−ビット・フラッグ72を論理
値1にセットして符号なしの正の桁溢れの起生を表示す
る。ラッチ174は最初クリヤされ、次いでORゲート
176の出力をオペランドAの各左方桁送りによりラッ
チする。Aレジスタ102のMSBおよびラッチ174
の出力が共にORゲート176に対する入力として働く
ため、論理値1がAレジスタ102のMSB位置から繰
出されるならば、C′−ビット・フラッグ72がその時
論理値1にセットされることが理解されよう。ラッチ1
74が最初クリヤされるため、オペランドBにより与え
られる桁送りカウントがゼロ(即ち、1による乗算)で
ある時にC′−ビットが適当にクリヤされることにな
る。
【0079】V′−ビット・フラッグ74に対する値
は、ASL命令に対する伝統的なV−ビットの条件コー
ドと同じ方法で決定される。Aレジスタ102のMSB
が桁送り操作中に値を変化させ、これが符号つき桁溢れ
の起生を示すならば、V′−ビット・フラッグ74が論
理値1にセットされる。EORゲート178が、m番目
のビット(MSB)の値とAレジスタ102の(m−
1)番目のビットとを比較して、ビットが異なる値を持
つ場合にのみ、ORゲート182に論理値1を提供す
る。ラッチ184は最初クリヤされ、ORゲート182
の出力をオペランドAの各左方桁送りによりラッチす
る。ラッチ184の出力がORゲート182に対する第
2の入力として働くため、桁送り操作中のAレジスタ1
02のMSBにおける変化は、桁送り操作の残りにおい
てV′−ビットを論理値1にセットすることになる。
【0080】一般に、伝統的な条件コードN−ビットは
ASL演算のためAレジスタ102におけるMSBの値
(即ち、桁送りの生成された結果の明瞭な符号)にセッ
トされる。その結果、符号つき桁溢れの方向は、これが
このようにセットされる時N−ビット値から信頼性を以
て決定することができない。
【0081】本実施例においては、N′−ビット・フラ
ッグ76の値は、桁送り操作により生じる結果の理論的
符号に対する値によりV′−ビット・フラッグ74の値
のEORから決定される。これは、N′−ビット・フラ
ッグ76が符号つき桁溢れに対する適正な方向を表示す
ることを保証する。ASL命令が2の冪乗による乗算を
エミュレートするため、この種の演算命令により生じる
結果の理論的符号は、桁送り操作に先立ちオペランドA
と同じ符号を持つことになる。従って、結果の理論的符
号に対する値は、桁送りが生じる前に、オペランドAの
MSBをラッチ186へラッチすることにより保持され
る。この時、EORゲート188を用いて、V′−ビッ
ト・フラッグ74の値およびラッチ186により与えら
れる理論的符号の値とをEORすることによりN′−ビ
ット・フラッグ76に対する適当な値を生じる。
【0082】図11は、LSR命令の実行中にALU2
0が2の冪乗による符号なし除算を行う時に、条件コー
ド・ビットをセットするための一貫した条件コード・ア
ーキテクチャの該当部分を機能的に示している。
【0083】LSR命令は、ソース・オペランド(フィ
ールド64により示される)により与えられる桁送りカ
ウントとして指定される2の冪乗である除数により、宛
て先オペランド(フィールド66により示される)を除
す。LSR命令は、最初にソース・オペランドをBレジ
スタ100へ、また宛て先オペランドをAレジスタ10
2へ送ることによって実行される。次にAレジスタ10
2におけるオペランドAの内容は、Aレジスタ102に
おける空のMSB位置へゼロを桁送りしながら、Bレジ
スタ100に保持されるオペランドBにより与えられる
ビット位置数だけ右方へビット単位に桁送りされる。各
右方桁送りは、Aレジスタ102の内容を2で除し、そ
の結果この操作を用いて2の冪乗による符号なし数の除
算をエミュレートする。桁送り操作が完了した後、制御
装置16の動作シーケンスが、宛て先オペランド(フィ
ールド66により示される)をAレジスタ102の内容
で置換する。
【0084】LSR命令の実行中において、従来の慣例
は、V−ビットがクリヤされる間、伝統的なC−ビット
の値としてAレジスタ102から繰出された最も後のL
SBの値を保持することである。また、慣例における如
く、N−ビットは、桁送り操作に続いてAレジスタ10
2のMSBの値に等しくセットされる。LSB命令の実
行中は符号なしまたは符号つき桁溢れのいずれも生じ得
ないため、V−ビットの条件コードの伝統的なセッティ
ングが符号つき桁溢れが生じなかったことを正しく表示
するが、Aレジスタ102から最後に繰出されたLSB
が論理値1を持つならば論理値1にセットされ得るた
め、伝統的なC−ビットは符号なし桁溢れの起生を不当
に表示し得る。
【0085】上記の矛盾は、LSB命令の実行中に桁送
り操作が一旦完了すると、伝統的なC−ビットを論理値
0へ自動的にクリヤするため、制御装置16の動作シー
ケンスを実現することにより解決することが可能であ
る。このことは、Aレジスタ102から繰出された最後
のLSBの保持(この繰出された最後のLSBに基く除
算の後の繰上げ丸めの如き)が必要である2の冪乗によ
る単純な符号なし除算に加えて、LSB命令が他のプロ
グラミング用途を持つため完全には受入れられることが
判らなかった。その結果、C−ビットは、マイクロプロ
セッサの実現された命令セットに関してより有利である
2つの方法のどちらかにセットすることができる。
【0086】本例においては、条件コードのC′−ビッ
ト・フラッグ72、V′−ビット・フラッグ74および
N′−ビット・フラッグ76がLSR命令に対して図1
1に示される如くセットされ、これは伝統的な条件コー
ド・アーキテクチャと一致している。LSR命令が用い
られて範囲検査および制限が行われる2の冪乗による除
算を行う時、他の条件コード・フラッグの値を変更する
ことなくC′−ビット・フラッグ72をクリヤする機械
命令が後に続かねばならない。このソフトウエア解決策
は、LSR命令が用いられて2の冪乗による単純な除算
を行う時、他の従来のプログラミング機能に対しても用
いることを許しながら、条件コードを正しくセットす
る。
【0087】図12は、ASR命令の実行中にALU2
0が2の冪乗による符号つき除算を行う時、条件コード
・ビットをセットするための条件コード・アーキテクチ
ャの該当部分を機能的に示している。
【0088】ASR命令は、ソース・オペランド(フィ
ールド64により示される)により与えられる桁送りカ
ウントとして指定される2の冪乗である除数により宛て
先オペランド(フィールド66により示される)を除
す。ASR命令は、最初にソース・オペランドをBレジ
スタ100へ、また宛て先オペランドをAレジスタ10
2へ送ることによって実行される。次いで、Aレジスタ
102におけるオペランドAの内容は、Aレジスタ10
2のMSB位置を一定に保持しながら、Bレジスタ10
0に保持されたオペランドBにより与えられるビット位
置数だけビット単位に右方に桁送りされる。各右方桁送
りは、Aレジスタ102の内容を2で除し、その結果こ
の演算を用いて符号つき数の2の冪乗による除算をエミ
ュレートする。桁送り操作が完了した後、制御装置16
の動作シーケンスが宛て先オペランド(フィールド66
により示される)をAレジスタ102の内容で置換す
る。
【0089】ASR命令の実行中に、従来の慣例は、V
−ビットがクリヤされN−ビットがAレジスタ102の
MSBの値にセットされる間、Aレジスタ102から伝
統的なC−ビットの値として繰出された最も後のLSB
の値(即ち、これもこの命令に対する結果の理論的符号
であるオペランドAの符号)を保持することである。A
SR命令の実行中は符号なしあるいは符号つき桁溢れが
いずれも生じ得ないため、V−ビットおよびN−ビット
の条件コードの伝統的なセッティングが符号つき桁溢れ
が生じなかったことを正しく表示するが、ちょうどLS
R命令(図11参照)における如く、Aレジスタ102
から繰出された最後のLSBが論理値1であり得るた
め、伝統的なC−ビットは符号なし桁溢れの起生を不当
に表示し得る。
【0090】再び、この矛盾は、ASR命令の実行中に
この桁送り操作が一旦完了すると、伝統的なC−ビット
を論理値0へ自動的にクリヤするように制御装置16の
動作シーケンスを実現することにより解決することが可
能である。その結果、C−ビットはAレジスタ102か
ら繰出されたLSBの値にセットすることができ、論理
値0にセットすることも、あるいは更に以降の図13の
記述において詳細に述べる如くラッチ190の出力値に
基いてセットすることさえできる。LSR命令の記述に
際して先に述べたものと同様な理由により、本例におけ
る条件コードのC′−ビット・フラッグ72、V′−ビ
ット・フラッグ74およびN′−ビット・フラッグ76
は、ASR命令に対する伝統的な条件コード・ビットの
セッティングと一致するようにセットされる。LSR命
令におけるように、ASR命令が範囲検査および制限動
作を受けることになる2の冪乗での除算を行うため使用
される時は常に、Z′−ビット・フラッグ70、V′−
ビット・フラッグ74およびN′−ビット・フラッグ7
6の値を変更することなく、C′−ビット・フラッグ7
2をクリヤする機械命令が後続し得る。
【0091】ASR命令を用いて負のオペランドAにつ
いて2の冪乗で除算を行う時、論理値1を持つビットが
Aレジスタ102のLSB位置から繰出されるならば、
生じる結果はDIVS命令を用いることにより生じた商
とは値−1だけ異なることになる。これは、右方の桁送
り操作を介して2の冪乗による除算を行う時、2の補数
形態における負の数が間違った方向に丸められる故であ
る。
【0092】このような矛盾を正すため、右方の桁送り
演算を介して2の冪乗による負の値の除算を行う時に符
号つき除算命令(DIVS)と一致する数値が生成され
得るように、マイクロプロセッサの命令セットがゼロへ
の丸めによる右桁送り(ASR0)を行うための別の命
令で増補された。
【0093】図13は、ASR0命令の実行中ゼロへ丸
めことにより2の冪乗での符号つき除算を行う時、条件
コード・ビットをセットするための条件コード・アーキ
テクチャの該当部分を機能的に示している。
【0094】ちょうどASR命令におけるように、AS
R0命令は、ソース・オペランド(フィールド64によ
り示される)により与えられる桁送りカウントとして指
定される2の冪乗により、宛て先オペランド(フィール
ド66により示される)を除算する。このASR0命令
は、最初にソース・オペランドをBレジスタ100へ、
また宛て先オペランドをAレジスタ102へ送ることに
よって実行される。次いで、Aレジスタ102のMSB
位置を一定に保持しながら、Aレジスタ102における
オペランドAの内容がBレジスタ100に保持されたオ
ペランドBにより与えられるビット位置数だけ右方へビ
ット単位に桁送りされる。
【0095】このプロセスを用いて2の冪乗で負の数を
除す時に生じ得る不当な丸めを補償するため、論理値1
を持つビットが桁送りプロセスの間Aレジスタ102の
LSB位置から繰出されるならば、結果が値1だけ増や
される。これは、ALU20における標準加算ユニット
104と関連して、ラッチ190、ORゲート192お
よびANDゲート194の動作により行われる。
【0096】ラッチ190は最初クリヤされて、Aレジ
スタ102におけるオペランドAの各右桁送り毎にOR
ゲート192からの出力をラッチする。Aレジスタ10
2におけるLSBの値およびラッチ190により保持さ
れるラッチされた値は共に、ORゲート192に対する
入力として働く。その結果、論理値1を持つビットがA
レジスタ102のLSBから繰出されるならば、ラッチ
190の出力が桁送り操作の残りにおいて論理値1へセ
ットされる。
【0097】ラッチ190の出力は、2つの入力のAN
Dゲート194の一方の入力へ与えられ、オペランドA
のMSBの値が他方の入力へ与えられる。これは、オペ
ランドAが負の数を表わす(即ち、MSBが論理値1に
セットされる)時にのみ、また論理値1を持つビットが
オペランドAの右桁送りの1つにおいてAレジスタ10
2におけるLSB位置から繰出されるならば、ANDゲ
ート194の出力が論理値1を持つことが認識されよ
う。
【0098】桁送りプロセスの完了時に、ANDゲート
194の出力は標準加算ユニット104の加数入力へ与
えられ、桁送り操作後にオペランドAが被加数入力へ与
えられる。加算ユニット104からの結果として得る和
はCレジスタ106に格納される。この加算が完了した
後、制御装置16の動作シーケンスが宛て先オペランド
(フィールド66により示される)をCレジスタ106
の内容、即ち数値結果Cで置換する。その結果、オペラ
ンドAが負の数を表わし、また論理値1を持つビットが
右桁送り操作中Aレジスタ102のLSB位置から繰出
される特別な場合には、Aレジスタ102で生じる結果
(負の状態を維持する)は1だけ増やされてゼロへの正
しい丸めを達成する。
【0099】ASR0命令が2の冪乗による符号つき除
算を行うため、符号なし桁溢れが生じ得ないためにC′
−ビット・フラッグ72のセッティングはいかなる結果
でもなく、このため、そのセッティングは図13に示さ
れる如く割当て可能な命令セット(ISA)(即ち、プ
ログラミングの観点から受入れ得る如何なる方法におい
て定義される)と見做すことができる。例えば、C′−
ビット・フラッグ72は符号なし桁溢れの無発生を正し
く表示するように論理値0に設定することができ、これ
はAレジスタ102から繰出されるLSBの値に基いて
セットすることができ、また論理値1を持つビットがA
レジスタ102から繰出されたことを表示するりょうに
ラッチ190の出力値に基いてセットすることができ、
あるいはマイクロプロセッサのアーキテクチャまたはそ
の実現された命令セットに関して有利であり得る他の方
法でセットすることもできる。
【0100】ASR0命令に対しては、符号つき桁溢れ
が2の冪乗による除算の間は生じないため、V′−ビッ
ト・フラッグ74が自動的にクリヤされる(結果は常に
除算されるオペランドより小さいかこれと等しい)。
【0101】N′−ビット・フラッグ76はCレジスタ
106に格納された結果CのMSBに等しくセットさ
れ、これはまた結果の理論的符号をも表わす。
【0102】ASRおよびASR0命令(図12および
図13参照)における如くV′−ビットが自動的に論理
値0にセットされる時、N′−ビット・フラッグ76は
単に、V′−ビットの論理値0で理論的符号値をEOR
することにより得られる値と等価である、算術演算によ
り生じる結果の理論的符号の値にセットすることができ
ることが理解されよう。
【0103】上記の演算命令が先に述べたように用いら
れる時、実現される条件コード・アーキテクチャは、演
算命令のどれかの実行中溢流の起生の表示を行うように
数学的に一貫した方法で取扱されることを保証し、符号
つき演算命令の場合は、符号つき桁溢れの方向(正また
は負のいずれか)の表示もまた行われる。
【0104】条件コードのZ′−ビット・フラッグ70
は、算術演算の結果がゼロの数値を持つことを表示する
ため論理値1にセットされる。Z′−ビットは先に述べ
たように桁溢れまたは桁溢れの方向を表示するためには
用いられないが、その値は、ゼロによる乗算または除算
(図7および図9参照)の際に結果に対する正しい符号
を表示するようにN′−ビット・フラッグ76をセット
する時に用いられる。
【0105】符号なし算術演算を実施する命令の実行
中、即ち、符号なし算術演算により生じる結果がこの結
果を保持するレジスタに対して割付けられたデータ幅に
おける符号なし数値として正しく表わすことができない
時は常に、条件コードのC′−ビット・フラッグ72は
論理値1にセットされて、符号なし桁溢れの起生を表示
する。
【0106】符号つき算術演算を実施する命令の実行
中、即ち、符号つき算術演算により生じる結果がこの結
果を保持するレジスタに対して割付けられたデータ幅に
おける符号つき数値により正しく表わすことができない
時は常に、条件コードV′−ビット・フラッグ74は論
理値1にセットされて、符号つき桁溢れの起生を表示す
る。
【0107】符号つき算術演算の場合は、条件コード
N′−ビット・フラッグ76の値がV′−ビット・フラ
ッグ74の値のEORからの結果および算術演算により
生じる結果の理論的符号を表わす。
【0108】以下に述べるように、V′−ビット・フラ
ッグ74はまた、符号つき算術演算により生じるソフト
ウエアの変数の値が1つの範囲検査および制限命令の実
行中は制限されたことを表示するために用いられる。同
様に、V′−ビット・フラッグ74は、符号なし算術演
算により生じるソフトウエアの変数の値が範囲検査およ
び制限命令の実行中は制限されたことを表示するために
用いられる。
【0109】C′−ビット・フラッグ72、V′−ビッ
ト・フラッグ74およびN′−ビット・フラッグ76に
対する値がこのように決定される時、先に述べた条件コ
ード・アーキテクチャが、結果として得る条件コードが
数学的に一貫したものであることを保証する。符号なし
桁溢れ(および下位桁溢れ)の起生は、C′−ビット・
フラッグ72が論理値1を持つ時に表示される。V′−
ビット・フラッグ74およびN′−ビット・フラッグ7
6が共に論理値1にセットされる時は、符号つき算術演
算に対する正の方向における桁溢れの起生が表示される
が、V′−ビット・フラッグ74が論理値1を持ちかつ
N′−ビット・フラッグ76が論理値0を持つ時は、負
の保持における符号つき桁溢れの起生が表示される。
【0110】次に図14乃至図17において、第1の実
施例に従って決定された条件コードの値を用いる1つの
命令の範囲検査および制限動作を実行する時、制御装置
16の動作シーケンスにより行われるステップ即ち動作
シーケンスを表わすフロー図が示される。各範囲検査お
よび制限命令に対して要求されるステップのシーケンス
を実施するように制御装置16の動作シーケンスをマイ
クロプログラミングすることは、マイクロプロセッサ技
術の範囲内に充分に含まれ、従ってこのようなマイクロ
プログラミング(即ち、ハードワイヤリング)について
は本明細書において記述しない。
【0111】前記範囲検査および制限命令は、種々の算
術演算により計算されるソフトウエアの変数の数値が予
め定めた受入れ得る値から外れるかかどうかを判定する
ため、また範囲外であることが判るソフトウエアの変数
の数値を予め定めた範囲の適当な上限または下限に制限
するために用いられる。
【0112】符号なし算術演算により計算された値を持
つソフトウエアの変数の場合は、上限に対する範囲の検
査および制限のためLIMHU命令が提供され、下限に
対する範囲検査および制限のためLIMHU命令が提供
される。同様に、符号つき算術演算により計算される値
を持つソフトウエアの変数に対しては、それぞれ上限お
よび下限に対する範囲の検査および制限のためLIMH
SおよびLIMLS命令が提供される。
【0113】以降の記述を簡単にするため、上記範囲検
査および制限命令は、符号なしまたは符号つき算術演算
のいずれか一方により生じるその数値VARとして示さ
れる汎用ソフトウエア変数へ与えられ、それぞれUSお
よびLBとして示されるその受入れ得る範囲に対する予
め定めた上下の限度をもつことになる。ソフトウエアの
変数VARの数値は、上限値UBおよび下限値LBに対
する予め定めた数値と同じように、マイクロプロセッサ
10の汎用レジスタ・ファイル22内のレジスタ内に保
持されるか、あるいはメモリー装置26の指定されたア
ドレス指定な記憶場所に保持されることが理解されよ
う。
【0114】図14は、命令レジスタ12に格納された
LIMLU命令の復号に応答して制御装置16の動作シ
ーケンスにより行われるステップのシーケンスを示して
いる。このLIMLU命令は、ソフトウエアの変数に割
当てられるアドレス指定可能な記憶場所に格納されるV
ARの如きソフトウエアの変数に対する符号なし数値を
計算するため用いられる前記の演算命令の1つの後にソ
フトウエア・プログラムに挿入される。
【0115】LIMLU動作シーケンスは、命令デコー
ダ14により与えられる復号された命令opコードに基
いて制御装置16の動作シーケンスがLIMLU命令が
命令レジスタ12へロードされたことを判定する時、ス
テップ200において入る。
【0116】ステップ200から、動作シーケンスは制
御ステップ202へ進み、ここでLIMLU命令のフィ
ールド64の内容により示されるソース・オペランドが
ALU20のBレジスタ100へ送られ、フィールド6
6の内容により示される宛て先オペランドがALU20
のAレジスタ102へ送られる。LIMLU命令に対し
て、宛て先オペランド・フィールド66は、ソフトウエ
アの変数VARに対して計算された数値を含む汎用レジ
スタ・ファイル22におけるレジスタを指定する。LI
MLU命令により用いられるアドレス指定モードに従っ
て、そのソース・オペランド・フィールド64が、VA
Rに対して予め定めた下限値LBを含むメモリー装置2
6におけるアドレスを指定し、あるいはまた、ソース・
フィールドが、下限値LB即ち、下限値LBを表わす即
時データを含む汎用レジスタ・ファイル22内のレジス
タを指定することができる。その結果、数値VARがA
レジスタ102にオペランドAとして格納され、数値L
BはBレジスタ100にオペランドBとして格納され
る。
【0117】制御ステップ202から、動作シーケンス
は判断制御ステップ204へ進み、ここで条件コード
C′−ビットの値(線48を介して与えられる)がテス
トされてC′−ビット・フラッグ72が論理値1にセッ
トされたかどうかを判定する。C′−ビットが論理値1
を持つならば、これは、数値VARを計算するため用い
られる符号なし算術演算の実行中に符号なし桁溢れが生
じたことを表わす。その結果、オペランドAとしてその
時格納された数値VARは数学的に定義されず、動作シ
ーケンスは制御ステップ206へ送られる。反対に、
C′−ビットが論理値0を持つならば、これは、数値V
ARの計算のため用いられる符号なし算術演算中に符号
なし桁溢れが生じなかったことを示す。従って、オペラ
ンドAはVARに対する有効数値を表わし、動作シーケ
ンスは判断制御ステップ208へ進む。
【0118】判断ステップ208において、オペランド
Aとして格納されたVARに対する有効数値が、符号な
し比較演算によりオペランドBとして格納された下限値
LBに対してテストされる。オペランドAがオペランド
Bより小さければ、VARに対する数値は下限値LBよ
り小さく、ソフトウエアの変数VARが負の方向に範囲
外にある。その結果、制御シーケンスは制御ステップ2
06へ送られる。オペランドAがオペランドBより小さ
くなければ、VARに対する数値はLBより小さくな
く、VARは負の方向に範囲から外れない。その結果、
動作シーケンスは制御ステップ210へ送られる。
【0119】制御ステップ210において、オペランド
Aとして格納されるVARに対する数値は、結果Cとし
て格納されるべくCレジスタ106へ送られる。その
時、動作シーケンスは制御ステップ218へ進む。
【0120】次に、制御ステップ206へ戻り、このス
テップは、C′−ビットが論理値1を持つ時制御ステッ
プ204から達するか、あるいはVARに対する有効値
がその受入れ得る下限値LBより小さい時制御ステップ
208から達する。この制御ステップにおいて、VAR
に対する下限値LBを含むオペランドBがCレジスタ1
06へ送られて結果Cとして格納される。更に、条件コ
ードC′−ビット・フラッグ72がクリヤされ、V′−
ビット・フラッグ74が論理値1にセットされ、N′−
ビット・フラッグ76は、結果Cを含むCレジスタ10
6のMSB位置の値に等しくセットされる。これらの特
定動作を実施するための論理的根拠については、相手の
LIMHU命令の論議が終った後に、以下において述べ
ることにする。
【0121】制御ステップ206から、LIMLU動作
シーケンスは制御ステップ212へ進み、ここでCレジ
スタ106に格納された結果Cがテストされてこれが2
進値ゼロを持つかどうかを判定する。結果Cが2進値ゼ
ロと等しければ、動作シーケンスは制御ステップ214
へ送られて、ここでZ′−ビット・フラッグ70が論理
値1にセットされる。しかし、結果Cが制御ステップ2
12において2進値ゼロに等しくなければ、動作シーケ
ンスは制御ステップ216へ進み、ここでZ′−ビット
・フラッグ70は論理値0にセットされる。当業者に
は、制御ステップ212、214、216のシーケンス
により表わされるZ′−ビット・フラッグ70のセッテ
ィングが伝統的な慣例に従い、また図4に示されるよう
に、Cレジスタ106に接続されるNORゲート108
により実際に実施されることが理解されよう。
【0122】制御ステップ210、214、または21
6から、LIMLU動作シーケンスは制御ステップ21
8へ送られる。ここで、Cレジスタ106における結果
Cは、LIMLU命令の宛て先オペランド・フィールド
66により指定されるレジスタに格納される。このレジ
スタがソフトウエアの変数VARの数値を含むことを想
起されたい。
【0123】ステップ218から、LIMLU動作シー
ケンスはステップ220へ進み、ここでこのシーケンス
は励起され、制御装置16の動作シーケンスはこの時、
命令レジスタ12に格納された次の機械命令に対する必
要な制御ステップを実行する用意がある。
【0124】LIMLU動作シーケンスが制御ステップ
210から制御ステップ218へ進む時、制御ステップ
204および208において、VARの数値を計算する
時符号なし桁溢れが生じず数値が受入れ得る下限値LB
より小さくなかったことが判定されたため、ソフトウエ
アの変数VARに対する元の数値は単に汎用レジスタ・
ファイル22におけるVARへ再び割当てられることが
認識されよう。
【0125】LIMLU動作シーケンスが制御ステップ
206により制御ステップ218へ進むと、オペランド
Bは結果Cとして格納され、これが次にLIMLU命令
の宛て先オペランド・フィールド66により指定される
レジスタに格納される。この動作シーケンスは、汎用レ
ジスタ・ファイル22におけるソフトウエアの変数VA
Rの元の数値をVARに対する下限値で置換する。この
ため、ソフトウエアの変数VARはその下限値LBに限
定されるが、これはその数値が符号なし桁溢れの起生に
より最初に計算されたか、あるいはVARの数値がその
受入れ得る下限値LBより小さかったためである。
【0126】図15は、命令レジスタ12に格納された
LIMHU命令の復号に応答して、制御装置16の動作
シーケンスにより行われるステップのシーケンスを示
す。LIMLU命令と同様に、LIMHU命令は、VA
Rに割当てられたアドレス指定可能な記憶場所に格納さ
れるソフトウエアの変数VARに対する符号なし数値を
計算するため用いられる演算命令後に、ソフトウエア・
プログラムに挿入される。
【0127】LIMHU動作シーケンスにはステップ2
30において入り、制御ステップ232へ進み、ここで
LIMHU命令のフィールド64の内容により示される
ソース・オペランドがALU20のBレジスタ100へ
送られ、LIMHU命令のフィールド66の内容により
示される宛て先オペランドがALU20のAレジスタ1
02へ送られる。LIMHU命令の場合は、宛て先オペ
ランド・フィールド66が、ソフトウエアの変数VAR
に対して計算された数値を含む汎用レジスタ・ファイル
22におけるレジスタを指定する。LIMHU命令によ
り用いられるアドレス指定モードに従って、そのソース
・フィールド64がVARに対する予め定めた上限値U
Bを含むメモリー装置26におけるアドレスを指定し、
あるいはソース・フィールドは、上限値UBまたは上限
値UBを表わす即時データを含む汎用レジスタ・ファイ
ル22内部のレジスタを指定することができる。その結
果、数値VARはAレジスタ102にオペランドAとし
て格納され、UBに対する数値がBレジスタ100にオ
ペランドBとして格納される。
【0128】制御ステップ232から、動作シーケンス
は判断制御ステップ234へ進み、ここで条件コード
C′−ビットの値がテストされてC′−ビット・フラッ
グ72が論理値1にセットされたかどうかを判定する。
C′−ビットが論理値1を持つならば、これはVARに
対する数値の計算のため用いられた符号なし算術演算の
実行中に符号なし桁溢れが生じたことを示す。その結
果、オペランドAとしてその時格納されたVARに対す
る数値は数学的には定まらず、動作シーケンスが制御ス
テップ236へ送られる。その結果、C′−ビットが論
理値0を持つならば、これは、VARに対する数値の計
算のため用いられた符号なし算術演算中は符号なし桁溢
れが生じなかったことを示す。この場合、オペランドA
はVARに対する有効値を表わし、動作シーケンスは判
断制御ステップ238へ送られる。
【0129】判断制御ステップ238において、オペラ
ンドAとして格納されたVARに対する有効値が、符号
なし比較操作によりオペランドBとして格納された上限
値UBに対する値に対してテストされる。オペランドA
がオペランドBより大きければ、VARに対する数値が
正の方向に範囲から外れており、動作シーケンスは制御
ステップ236へ送られる。オペランドAがオペランド
Bより大きくなければ、VARに対する数値はその受入
れ得る上限値UBより大きくなく、動作シーケンスは制
御ステップ240へ送られる。
【0130】制御ステップ240において、オペランド
Aとして格納されたVARに対する数値は、結果Cとし
て格納されるようにCレジスタ106へ送られる。次い
で、動作シーケンスは制御ステップ248へ送られる。
【0131】次に制御ステップ236へ戻り、このステ
ップへは、C′−ビットが論理値1を持つ時判断制御ス
テップ234から達し、あるいはVARに対する数値が
その受入れ得る上限値UBより大きい時に判断制御ステ
ップ238から達する。この制御ステップにおいて、V
ARに対する上限値UBを含むオペランドBはCレジス
タ106へ送られて、結果Cとして格納される。更に、
条件コードC′−ビット・フラッグ72がクリヤされ、
V′−ビット・フラッグ74が論理値1にセットされ、
N′−ビット・フラッグ76は、結果Cを含むCレジス
タ106のMSB位置の値に等しくセットされる。これ
らの特定操作を行う論理的根拠については、LIMHU
命令における残りの制御ステップの論議が終るまで遅ら
せることにする。
【0132】制御ステップ236から、LIMHU動作
シーケンスは制御ステップ242へ進み、ここでCレジ
スタ106に格納された結果Cがテストされてこれが2
進値ゼロを持つかどうかを判定する。結果Cが2進値ゼ
ロに等しければ、動作シーケンスは制御ステップ244
へ進み、ここでZ′−ビット・フラッグ70が論理値1
にセットされる。しかし、結果Cが2進値ゼロに等しく
なければ、動作シーケンスは制御ステップ246へ進
み、ここでZ′−ビット・フラッグ70が論理値0にセ
ットされる。LIMLU命令について先に述べたよう
に、制御ステップのこのシーケンスによるZ′−ビット
・フラッグ70のセッティングは、伝統的な慣例による
ものであり、図4に示されるように、Cレジスタ106
に接続されるNORゲート108によって実際に実施さ
れる。
【0133】制御ステップ240、244または246
から、LIMHU動作シーケンスは制御ステップ248
へ送られる。ここで、Cレジスタ106における結果C
は、LIMHU命令の宛て先オペランド・フィールド6
6により指定されるレジスタに格納される。このレジス
タがソフトウエアの変数VARの数値を保有することを
想起されたい。
【0134】制御ステップ248から、LIMHU動作
シーケンスはステップ250へ進み、ここでこのシーケ
ンスが励起され、その時制御装置16の動作シーケンス
は、命令レジスタ12に格納された次の機械命令に対す
る必要な制御ステップを実行する用意がある。
【0135】LIMHU動作シーケンスが制御ステップ
240から制御ステップ248へ進み、制御ステップ2
34、238においてVARに対する数値の計算時に符
号なし桁溢れが生じず、またこの数値が受入れ得る上限
値UBより大きくなかったことが判定されたため、ソフ
トウエアの変数VARに対する元の数値が単に汎用レジ
スタ・ファイル22においてVARへ再び割当てられる
ことが認識されよう。
【0136】LIMHU動作シーケンスが制御ステップ
236により制御ステップ248へ進むと、オペランド
Bが結果Cとして格納され、これは次に、LIMHU命
令の宛て先オペランド・フィールド66により指定され
るレジスタに格納される。この動作シーケンスは、汎用
レジスタ・ファイル22におけるソフトウエアの変数V
ARの元の数値をVARに対する上限値UBで置換す
る。このため、ソフトウエアの変数VARはその上限値
UBに限定されるが、これはその数値が符号なし桁溢れ
の起生により最初に計算されたか、あるいはVARに対
する元の数値がその受入れ得る上限値UBより大きかっ
た故である。
【0137】両方の範囲限度を調べるため、LIMLU
およびLIMHU機械命令がこの場合範囲が検査されお
そらくは制限されるべきソフトウエアの変数の符号なし
数値を計算する演算命令に続いて逐次ソフトウエア・プ
ログラムに入れられる。LIMLUおよびLIMHU命
令が演算命令により生じる条件コードのセッティングに
依存するため、C′−ビット・フラッグ72をクリヤす
ることを要求する如き命令を除いて、条件コードのセッ
ティングを変更する他の機械命令を演算命令とLIML
UおよびLIMLU命令対の間に介挿することはできな
い(LSR命令についての図11に関する論議参照)。
【0138】LIMLUおよびLIMHU命令が1つの
プログラムにおいて用いられる順序もまた、範囲検査さ
れおそらくは制限されるべきソフトウエアの変数の数値
の計算に用いられる演算命令の種類に依存する。これ
は、この第1の実施例の条件コード・アーキテクチャが
C′−ビット・フラッグ72をセットして符号なし桁溢
れの起生を表示するが、符号なし桁溢れの方向に関する
情報は得られないという事実によるものである。C′−
ビット・フラッグ72がセットされて符号なし桁溢れの
起生を表示するならば、LIMLU命令は検査されるソ
フトウエアの変数の値を制御ステップ204、206お
よび218を介してその下限値LBに制限する。反対
に、C′−ビット・フラッグ72が符号なし桁溢れの起
生を表示するようにセットされるならば、LIMHU命
令はソフトウエアの変数の値をその上限値UBに制限す
る。従って、範囲検査および制限動作が、減算(SU
B)および比較(CMP)命令の如き負の方向のみにお
ける符号なし桁溢れを生じることができる演算命令によ
り計算される値を持つソフトウエアの変数について行わ
れる前に、LIMLU命令が現れるはずである。あるい
はまた、正の方向のみにおける符号なし桁溢れを生じ得
る演算命令、即ち、加算(ADD)、符号なし乗算(M
ULU)、符号なし除算(DIVU)および算術的左桁
送り(ASL)命令により計算される値を持つソフトウ
エアの変数について範囲検査および制限動作が行われる
時、プログラムにおけるLIMLU命令の前にLIMH
U命令が現れるはずである。
【0139】LIMLUおよびLIMHU命令のこのよ
うな順序は、符号なし桁溢れが負の方向において生じる
時にはソフトウエアの変数値が正しくその下限値に限定
され、符号なし桁溢れが負の方向に生じる時はその上限
値に限定されることを保証する。当業者は、LIMLU
およびLIMHU命令の実行により行われる上下の限度
値と関連する動作が2つの修正された命令にマージする
ことができ、この場合修正命令の一方におけるLIMH
Uの命令前に、また修正命令の他方においてはその逆に
LIMLUと関連する動作が行われることが認識されよ
う。
【0140】LIMHU動作シーケンスにおける制御ス
テップ206において、またLIMHU動作シーケンス
における制御ステップ236においては、C′−ビット
・フラッグ72が論理値0にセットされることが認識さ
れよう。これは、1つのプログラムにおける前記命令の
最初のものの実行中に検出される符号なし桁溢れが2番
目のものの実行中には検出されないように行われ、これ
により不正な限度値に対してソフトウエアの変数が2回
目に制限されることを阻止する。
【0141】また、LIMLUおよびLIMHU動作シ
ーケンスにおける制御ステップ206、236におい
て、V′−ビット・フラッグ74が論理値1にセットさ
れることも認識されよう。V′−ビット・フラッグ74
のこのようなセッティングは、検査されるソフトウエア
の変数値が範囲制限されたことの表示を行う。この表示
は、例えば、マイクロプロセッサ10が制御システム・
アプリケーションにおいて使用される時に制御パラメー
タが範囲外にあるという警報を提供し、あるいは後で検
索するためメモリー装置26に格納することができるソ
フトウエアの変数についての診断情報を提供するために
使用することもできる。V′−ビット・フラッグ74の
このような使用が、V′−ビットのセッティングが非論
理的である符号なし算術演算と関連させられるため、L
IMLUおよびLIMHU命令により行われる範囲検査
および制限動作と干渉しないことに注目されたい。
【0142】また、先に述べたように、N′−ビット・
フラッグ76はLIMLUおよびLIMHUの各動作シ
ーケンスの制御ステップ206および236における結
果Cを含むCレジスタ106のMSB位置の値と等しい
はずである。このことは、符号なし数値に関わる演算の
ためN′−ビット・フラッグ76の伝統的セッティング
と一致している。
【0143】図16は、命令レジスタ12に格納される
LIMLS命令の復号に応答して制御装置16の動作シ
ーケンスにより行われるステップのシーケンスを示して
いる。このLIMLS命令は、VARに割当てられるア
ドレス指定可能な記憶場所に格納されるソフトウエアの
変数VARに対する符号つき数値の計算のため用いられ
る演算命令後にソフトウエア・プログラムに挿入され
る。
【0144】LIMLS動作シーケンスにはステップ2
60において入り、制御ステップ262へ進み、ここで
LIMLS命令のフィールド64の内容により示される
ソース・オペランドがALU20のBレジスタ100へ
送られ、LIMLS命令のフィールド66の内容により
示される宛て先オペランドはALU20のAレジスタ1
02へ送られる。LIMLS命令に対しては、宛て先オ
ペランド・フィールド66が、ソフトウエアの変数VA
Rに対して計算された数値を含む汎用レジスタ・ファイ
ル22におけるレジスタを指定する。LIMLS命令に
より用いられるアドレス指定モードに従って、そのソー
ス・オペランド・フィールド64が、VARに対して予
め定めた下限値LBを含むメモリー装置26におけるア
ドレスを指定し、あるいはまた、このソース・フィール
ドは、下限値LBまたは下限値LBを表わす即時データ
を含む汎用レジスタ・ファイル22内部のレジスタを指
定することができる。その結果、VARの数値はAレジ
スタ102にオペランドAとして格納され、LBの数値
はBレジスタ100にオペランドBとして格納される。
【0145】制御ステップ262から、動作シーケンス
は判断制御ステップ264へ進み、ここで条件コードの
V′−ビットおよびN′−ビットの値がテストされて、
V′−ビット・フラッグ74が論理値1にセットされか
N′−ビット・フラッグ76が論理値0にセットされた
かを判定する。V′−ビットが論理値1を持ちN′−ビ
ットが論理値0を持つならば、前の論議から、このこと
がVARに対する数値の計算のため用いられた符号つき
算術演算の実行中に負の方向における符号つき桁溢れが
生じたことを示すことを想起されたい。その結果、オペ
ランドAとしてその時格納されているVARに対する数
値は数学的に定まらず、動作シーケンスは制御ステップ
266へ送られる。条件コードのV′−ビットおよび
N′−ビットがこれらの値にセットされなければ、VA
Rに対する数値が計算された時には負の方向における符
号つき桁溢れは生じず、動作シーケンスは判断制御ステ
ップ268へ送られる。
【0146】判断制御ステップ268において、V′−
ビットの値がテストされて、V′−ビット・フラッグ7
4が論理値0にセットされたかどうかを判定し、オペラ
ンドAとして格納されたVARに対する数値は、符号つ
き比較操作によりオペランドBとして格納された下限値
LBに対してテストされる。V′−ビットが論理値0を
持ち、オペランドAがオペランドBより小さければ、こ
れは、VARに対する数値が計算された時には符号つき
桁溢れが生じなかったが、VARが負の方向においては
範囲外にあることを示す。その結果、動作シーケンスは
制御ステップ266へ送られる。V′−ビットが論理値
0に等しくないかあるいはオペランドAがオペランドB
より小さくなければ、動作シーケンスは制御ステップ2
70へ送られる。
【0147】制御ステップ270において、オペランド
Aとして格納されたVARに対する数値は結果Cとして
格納されるべくCレジスタ106へ送られる。次いで、
動作シーケンスは制御ステップ278へ送られる。
【0148】次に制御ステップ266へ戻り、このステ
ップには、負の方向における符号つき桁溢れの起生が検
出された判断制御ステップ264から達し、あるいはV
ARの数値が(符号つき桁溢れの起生により計算されな
い)有効であるが負の方向では範囲外であることが判っ
た判断制御ステップ268から達する。いずれの場合
も、VARに対する数値はその受入れ得る下限値LBへ
の制限を必要とし、そのためVARに対するLB値を含
むオペランドBがCレジスタ106へ送られて結果Cと
して格納される。更に、条件コードC′−ビット・フラ
ッグ72は論理値1にセットされ、V′−ビット・フラ
ッグ74は論理値0にクリヤされ、N′−ビット・フラ
ッグ76は結果Cを含むCレジスタ106のMSB位置
の値と等しくセットされる。これらの特定動作を実施す
るための論理的根拠については、相手のLIMHS命令
に対する論議の終了後に述べることにする。
【0149】制御ステップ266から、LIMLS動作
シーケンスは制御ステップ272へ進み、ここでCレジ
スタ106に格納されていた結果Cがテストされてこれ
が2進値ゼロを持つかどうか判定する。結果Cが2進値
ゼロに等しければ、動作シーケンスは制御ステップ27
4へ進み、ここでZ′−ビット・フラッグ70が論理値
1にセットされる。しかし、結果Cが2進値ゼロに等し
くなければ、動作シーケンスは制御ステップ276へ進
み、ここでZ′−ビット・フラッグ70が論理値0にセ
ットされる。先にLIMLU命令について述べたよう
に、この制御ステップ・シーケンスによるZ′−ビット
・フラッグ70のセッティングは、伝統的手法に従うも
のであり、図4に示されるように、Cレジスタ106と
接続されるNORゲート108によって実際に実行され
る。
【0150】制御ステップ270、274、または27
6から、LIMLS動作シーケンスは制御ステップ27
8へ送られる。ここで、Cレジスタ106における結果
CはLIMLS命令の宛て先オペランド・フィールド6
6により指定されるレジスタに格納される。このレジス
タがソフトウエアの変数VARに対する数値を保持する
ことを想起されたい。
【0151】制御ステップ278から、LIMLS動作
シーケンスはステップ280へ進んでここで励起され、
その時制御装置16の動作シーケンスの動作シーケンス
は、命令レジスタ12に格納される次の機械命令に対し
て必要な制御ステップを実行する用意がある。
【0152】LIMLS動作シーケンスが制御ステップ
270から制御ステップ278へ進むと、制御ステップ
264、268においてVARに対する数値の計算中に
符号つき桁溢れが生じなかったこと、およびこの数値が
受入れ得る下限値LBより小さくなかったことが判定さ
れたため、ソフトウエアの変数VARに対する元の数値
が単に汎用レジスタ・ファイル22におけるVARに再
び割当てされることが認識されよう。
【0153】LIMLS動作シーケンスが制御ステップ
266により制御ステップ278へ進むと、オペランド
Bが結果Cとして格納され、これは次にLIMLS命令
の宛て先オペランド・フィールド66により指定される
レジスタに格納される。この動作シーケンスは、汎用レ
ジスタ・ファイル22におけるソフトウエアの変数VA
Rの元の数値をVARに対する下限値LBで置換する。
このため、ソフトウエアの変数VARはその下限値LB
に制限されるが、これはその数値が最初に負の方向にお
ける符号つき桁溢れの起生により計算されたため、ある
いはVARに対する元の数値が有効であることが判った
がその受入れ得る下限値LBよりも小さくなかった故で
ある。
【0154】図17は、命令レジスタ12に格納された
LIMHS命令の復号に応答して、制御装置16の動作
シーケンスの動作シーケンスにより行われるステップの
シーケンスを示す。LIMLS命令における如く、LI
MHS命令は、VARに割当てられたアドレス指定可能
な記憶場所に格納されるソフトウエアの変数VARに対
する符号つき数値の計算に用いられる演算命令後にソフ
トウエア・プログラムに挿入される。
【0155】LIMHS動作シーケンスにはステップ2
90で入って制御ステップ292へ進み、ここでLIM
HS命令のフィールド64の内容により示されるソース
・オペランドがALU20のBレジスタ100へ送ら
れ、LIMHS命令のフィールド66の内容により示さ
れる宛て先オペランドがALU20のAレジスタ102
へ送られる。LIMHS命令に対しては、宛て先オペラ
ンド・フィールド66が、ソフトウエアの変数VARに
対して計算された数値を保持する汎用レジスタ・ファイ
ル22におけるレジスタを指定する。LIMHS命令に
より用いられるアドレス指定モードに従って、そのソー
ス・フィールド64がメモリー装置26におけるアドレ
スかあるいはVARに対して予め定めた上限値UBを保
持する汎用レジスタ・ファイル22内部のレジスタのい
ずれか一方を指定することができ、あるいはソース・フ
ィールド64は、VARに対して予め定めた上限値UB
に対する値を表わす即時データを指定することができ
る。その結果、VARの数値はAレジスタ102にオペ
ランドBとして格納され、UBの数値はBレジスタ10
0にオペランドBとして格納される。
【0156】制御ステップ292から、動作シーケンス
は判断制御ステップ294へ進み、ここで条件コード
V′−ビットおよびN′−ビットの値がテストされて、
V′−ビット・フラッグ74が論理値1にセットされた
か、N′−ビット・フラッグ76が論理値1にセットさ
れたかを判定する。V′−ビットが論理値1を持ち、
N′−ビットが論理値1を持つならば、前の論議から、
このことが、正の方向における符号つき桁溢れがVAR
に対する数値の計算に用いられた符号つき算術演算の実
行中に生じたことを示すことを想起されたい。その結
果、その時オペランドAとして格納されていたVARに
対する数値は数学的に定義されず、動作シーケンスが制
御ステップ296へ送られる。条件コードV′−ビット
およびN′−ビットがこれらの値にセットされなけれ
ば、正の方向における符号つき桁溢れは、VARに対す
る数値が計算された時は生じず、動作シーケンスが判断
制御ステップ298へ送られる。
【0157】判断制御ステップ298において、V′−
ビットの値がテストされてV′−ビット・フラッグ74
が論理値0にセットされたかどうかを判定し、オペラン
ドAとして格納されたVARに対する数値は、符号つき
比較桁溢れによりオペランドBとして格納された上限値
UBに対する値に対してテストされる。V′−ビットが
論理値0を持ちオペランドAがオペランドBより大きけ
れば、これは、VARに対する数値が計算された時には
符号つき桁溢れが生じなかったがVARが正の方向にお
いて範囲外であることを示す。その結果、動作シーケン
スは制御ステップ296へ送られる。V′−ビットが論
理値0に等しくないか、あるいはオペランドAがオペラ
ンドBより大きくなければ、動作シーケンスは制御ステ
ップ300へ送られる。
【0158】制御ステップ300において、オペランド
Aとして格納されたVARに対する数値は結果Cとして
格納されるべくCレジスタ106へ送られる。次いで、
動作シーケンスは制御ステップ308へ送られる。
【0159】次に制御ステップ296へ戻り、このステ
ップには、正の方向における符号つき桁溢れの起生が検
出された制御ステップ294から達するか、あるいはV
ARに対する数値が有効であり(符号つき桁溢れの起生
により計算されない)が正の方向には範囲外である(上
限値UBより大きい)ことが判った判断制御ステップ2
98から達する。いずれの場合も、VARに対する数値
はその受入れ得る上限値UBに対する制限を必要とし、
そのためVARに対する値UBを含むオペランドBがC
レジスタ106へ転送されて結果Cとして格納される。
更に、条件コードC′−ビット・フラッグ72は論理値
1にセットされ、V′−ビット・フラッグ74は論理値
0にクリヤされ、N′−ビット・フラッグ76は結果C
を含むCレジスタ106のMSB位置の値に等しくセッ
トされる。これらの特定動作を実施するための論理的根
拠については、LIMHS動作シーケンスにおける残り
の制御ステップの論議が終了するまで延ばすことにす
る。
【0160】制御ステップ302から、動作シーケンス
は制御ステップ302へ進み、ここでCレジスタ106
に格納された結果Cがテストされて2進値ゼロを持つか
どうか判定する。結果Cが2進値ゼロに等しければ、動
作シーケンスは制御ステップ304へ進み、ここでZ′
−ビット・フラッグ70が論理値1にセットされる。し
かし、結果Cが2進値ゼロに等しくなければ、動作シー
ケンスは制御ステップ306へ進み、ここで709が論
理値0にセットされる。LIMLU命令について先に述
べたように、この制御ステップ・シーケンスによるZ′
−ビット・フラッグ70のセッティングは伝統的手法に
従うものであり、図4に示されるように、Cレジスタ1
06と接続されるNORゲート108により実際に実行
される。
【0161】制御シーケンス300、304または30
6から、LIMHS動作シーケンスは制御ステップ30
8へ送られる。ここで、Cレジスタ106における結果
Cは、LIMHS命令の宛て先オペランド・フィールド
66により指定されるレジスタに格納される。このレジ
スタがソフトウエアの変数VARに対する数値を保持す
ることを想起されたい。
【0162】制御ステップ308から、LIMHS動作
シーケンスはステップ310へ進んでここで励起され、
その時制御装置16の動作シーケンスの動作シーケンス
は、命令レジスタ12に格納される次の機械命令に対す
る必要な制御ステップを実行する用意がある。
【0163】LIMHS動作シーケンスが制御ステップ
300から制御ステップ308へ進むと、ソフトウエア
の変数VARに対する元の数値が単に汎用レジスタ・フ
ァイル22におけるVARに再び割当てられるが、これ
は制御ステップ294、298において、VARに対す
る数値を計算中には符号つき桁溢れが生じなかったこ
と、およびこの数値が受入れ得る上限値UBより大きく
なかったことが判定されたためであることが認識されよ
う。
【0164】LIMHS動作シーケンスが制御ステップ
296により制御ステップ308へ進むと、オペランド
Bは結果Cとして格納され、このステップはこの時、L
IMHS命令の宛て先オペランド・フィールド66によ
り指定されるレジスタに格納される。この動作シーケン
スは、汎用レジスタ・ファイル22におけるソフトウエ
アの変数VARの元の数値をVARに対する上限値UB
で置換する。このため、ソフトウエアの変数VARはそ
の上限値UBに制限されるが、これはその数値が最初に
正の方向における符号つき桁溢れの起生により計算され
たか、あるいはVARに対する元の数値が有効であるが
その受入れ得る上限値UBより大きいことが判ったため
である。
【0165】範囲の両方の限度を調べるため、この場合
LIMLSおよびLIMHS機械命令は、範囲検査さ
れ、おそらくは制限される範囲であるべきソフトウエア
の変数の符号つき値を計算する演算命令の後に逐次ソフ
トウエア・プログラムに入れられる。LIMLSおよび
LIMHS命令が演算命令により生じる条件コードのセ
ッティングに依存するため、条件コードのセッティング
を変更する他の機械命令は、演算命令とLIMLSおよ
びLIMHS命令の対との間には介挿することはできな
い。
【0166】LIMLSおよびLIMHS命令が1つの
プログラムにおいて用いられる順序は、範囲が検査され
おそらくは制限されるべきソフトウエアの変数の数値の
計算に用いられる演算命令の種類には依存しない。これ
は、この第1の実施例の条件コード・アーキテクチャが
符号つき桁溢れの起生を示すようにV′−ビット・フラ
ッグ74をセットし、N′−ビット・フラッグ76が符
号なし桁溢れの方向を表示するようにセットされる、即
ち、N′−ビットが、符号つき桁溢れが正の方向に生じ
る時は論理値1を持ち、また符号つき桁溢れが負の方向
に生じる時は論理値0を持つという事実による。その結
果、LIMLSおよびLIMHS命令がソフトウエア・
プログラムに現れる順序の如何に拘わらず、符号つき桁
溢れが正の方向に生じる時は範囲外の符号つき数値を持
つソフトウエアの変数が正しくその上限値UBに制限さ
れ、また符号つき桁溢れが負の方向に生じる時はその下
限値に制限されることになる。当業者には、動作が行わ
れる順序は重要ではないため、LIMLSおよびLIM
HS命令の実行により行われる上下の限度と関連する動
作が1つの命令に組合わされ得ることが認識されよう。
【0167】LIMLS動作シーケンスにおける制御ス
テップ266およびLIMHS動作シーケンスにおける
ステップ296においては、V′−ビット・フラッグ7
4が論理値0にセットされることが認識されよう。これ
は、オペランドB(上限または下限の)が制御ステップ
266または制御ステップ296のいずれかにおいて一
旦Cレジスタ106へ転送されると、制限の動作(オペ
ランドBをCレジスタ106へ転送する)がその値を受
入れ得る範囲内に置くため、ソフトウエアの変数VAR
の数値はもはや桁溢れの状態にはないことを示すために
行われる。
【0168】また、LIMLSおよびLIMHS動作シ
ーケンスにおける制御ステップ266および296にお
いて、C′−ビット・フラッグ72が論理値1にセット
されることも認識されよう。C′−ビット・フラッグ7
2のこのセッティングは、調べられるソフトウエアの変
数の符号つき値が範囲制限されたことの表示を行う。先
に述べたように、この種の表示は、例えば、マイクロプ
ロセッサが制御システム用途において用いられる時は制
御パラメータが範囲外にあることの警報を提供し、ある
いは後の検索のためメモリー装置26に格納することが
できるソフトウエア変数に関する診断情報を提供するた
めに使用することができる。C′−ビット・フラッグ7
2のこのような使用は、C′−ビットのセッティングが
非論理的である符号つき算術演算と関連させらるため、
LIMLSおよびLIMHS命令により行われる範囲検
査および制限動作と干渉しないことに注目されたい。
【0169】N′−ビット・フラッグ76の値は、LI
MLSおよびLIMHS動作シーケンスの各々の制御ス
テップ266および296における結果Cを保有するC
レジスタ106のMSB位置の値に等しくセットされ
る。このことは、符号つき数値に関わる演算に対する
N′−ビット・フラッグ76の伝統的なセッティングと
一致し、理論的符号および論理値0のV′−ビットのE
ORとちょうど同じになる。
【0170】上記の実施例は、マイクロプロセッサ10
に対する演算命令の定義されたセットにより行われる全
ての算術演算に対する符号なしおよび符号つき桁溢れの
起生に関する一貫した条件コードのセッティングを提供
する。実現された条件コード・アーキテクチャは、符号
なし桁溢れの起生、および符号つき桁溢れの起生をその
方向と共に表示するように条件コード・フラッグをセッ
トする。条件コードなるのセッティングは、符号なしお
よび符号つきの加算および減算に対する伝統的な手法と
一致させられたが、このため、符号なし桁溢れの方向の
表示は提供されないない。その結果、符号なし算術演算
により生じるその数値を持つソフトウエアの変数につい
て範囲検査および制限動作を行うため用いられる命令の
順序は、実施される符号なし算術演算の種類に依存して
いる。
【0171】次に、算術演算の実施中の符号なしおよび
符号つき桁溢れの起生の表示を行うと共に、符号なしお
よび符号つきの両方の桁溢れの方向の表示を行うよう
に、条件コード・フラッグをセットする一貫した条件コ
ード・アーキテクチャを実現する第2の実施例について
記述する。その結果、ソフトウエアの変数について範囲
検査および制限動作を行うため用いられる命令は、第1
の実施例のLIMLUおよびLIMHU命令に対して必
要とされた如くソフトウエアの変数の数値を生じるため
用いられる算術演算と関連する特定の順序で実行される
必要がない。
【0172】次に図18には、図1のALU20および
状態レジスタ18のブロック図が示され、これらは第2
の実施例による数学的に一貫した条件コード・アーキテ
クチャを提供するよう構成されている。この特定のアー
キテクチャは、条件コードが、第1の実施例(図4乃至
図13に関する論議参照)に対して先に述べた全ての算
術演算に対する符号なしおよび符号つき桁溢れ、および
符号なしおよび符号つき桁溢れの両方の方向表示を行う
ことを保証する。
【0173】第1の実施例に対する図3に関する論議は
また、状態レジスタ18が、Z″−ビット・フラッグ5
00、C″−ビット・フラッグ502、B″−ビット・
フラッグ504、pV″−ビット・フラッグ506、n
V″−ビット・フラッグ508、N″−ビット・フラッ
グ510およびL″−ビット・フラッグ512として示
される条件コード・フラッグの新しいセットを含むよう
に拡張されることを除いて、図18に示される第2の実
施例にも適用する。再び、図3における如く、条件コー
ド・ビットに対する値がALU20から始まる如くに示
されるが、先に述べたように、これらの値は、ALU2
0に対して外部に配置された回路により、ハードワイヤ
ド・ロジックまたは制御装置16の動作シーケンス内の
マイクロ命令の実行により、あるいはこれらの技法のど
れかの組合わせによってALU20内部に生成すること
ができる。
【0174】この第2の実施例においては、条件コード
・ビットは、ALU20における算術演算の実行中の符
号なしおよび符号つき桁溢れの起生、およびこのような
桁溢れの(正または負の)方向の表示を行うように構成
される。
【0175】第1の実施例の伝統的な条件コードZ−ビ
ットおよびZ′−ビットにおける如く、2進値ゼロの結
果CがALU20における算術演算により生じる時、
Z″−ビットの値は論理値1にセットされ、さもなけれ
ば、Z″−ビットは論理値0にクリヤされる(図4に関
する論議参照)。以下においては、Z″−ビットの値は
Z′−ビットに対して先に述べたと同じように生成さ
れ、従って、その生成のため用いられる特定の回路につ
いては繰返さない。
【0176】C″−ビットは、符号なし算術演算中の正
の方向における符号なし桁溢れの起生の標識である。
C″−ビットは、ALU20における算術演算が結果を
格納すべきALU20における記憶レジスタのデータ幅
における符号なし数として表わすことができない結果を
生じる時は常に、論理値1にセットされる。前の実施例
における如く、ALU20におけるAレジスタ102、
Bレジスタ100およびCレジスタ106は、そうでな
い旨の記述がない限り、それぞれmビットのデータ幅を
持つものとする。従って、正の方向における符号なし桁
溢れは、符号なし算術演算により生じる結果の理論的数
値が2m-1の値を越えるならば生じることになる。
【0177】B″−ビットは、符号なし算術演算中の負
の方向における符号なし桁溢れ(時に、下位桁溢れと呼
ばれる)の起生の標識である。このB″−ビットは、A
LU20における算術演算がその値がゼロより小さい
(即ち、負である)ゆえに符号なし数として表わすこと
ができない結果を生じる時は常に、論理値1にセットさ
れる。例えば、結果が0から1を差引くことにより生成
されたものとすれば、結果は値−1を持つことになり、
これは符号なし数として表わすことができず、従って
B″−ビットは論理値1にセットされることになる。
【0178】pV″−ビットは、符号つき算術演算中の
正の方向における符号つき桁溢れの起生の標識である。
pV″−ビットは、ALU20における算術演算が結果
を保持する格納レジスタに対して割付けられたデータ幅
内の正の符号の数として表わすことができない結果を生
じる時は常に論理値1に設定される。mビットのデータ
幅を持つ記憶レジスタの場合は、正の符号の桁溢れp
V″−ビットをセットすることなく表わすことができる
最も大きな正の値は2(m-1)−1である(2の補数フォ
ーマットが第1の実施例における如く負の数を表わすた
めに用いられるものと仮定して)。
【0179】nV″−ビットは、符号つき算術演算中の
負の方向における符号つき桁溢れの起生の標識である。
このnV″−ビットは、ALU20における算術演算
が、結果を保持する記憶レジスタに対して割付けられた
データ幅における負の符号つき数として表わすことがで
きない結果を生じる時は常に論理値1にセットされる。
mビットのデータ幅を持つ記憶レジスタの場合は、負の
符号つき桁溢れnV″−ビットをセットすることなく表
わすことができる最も大きな負の値はー2(m-1)であ
る。
【0180】第2の実施例の場合は、N″−ビットは、
符号つき算術演算により生じる数値結果の理論的符号の
標識である。このN″−ビットは、例え結果の明らかな
符号(MSB位置)が結果を保持する記憶レジスタの不
充分なデータ幅により不当に表わされることがある場合
でも、理論的に負の符号を持つはずである結果を生じる
時は常に、論理値1にセットされる。
【0181】L″−ビットは、範囲検査および制限命令
の宛て先オペランド・フィールド66により示されるソ
フトウエアの変数値が各限度の方向における桁溢れの起
生により、あるいはソフトウエアの変数値がそれぞれ上
限値より大きいか下限値より小さい故に、その予め定め
られた上下の限度に制限されたことの表示である。
【0182】次に図19乃至図28において、第1の実
施例(図4乃至図13参照)の記述において用いられた
同じセットの演算命令に対する本発明の第2の実施例の
数学的に一貫した条件コード・アーキテクチャを実現す
るための機能的論理図が示される。以下においては、図
19乃至図28に関する論議は、これら演算命令の実行
中のALU20の動作について図4乃至図13に関する
記述において前に述べたため、種々の演算命令に対する
条件コードのセッティングに限定される。また、図4乃
至図13および図19乃至図28の両セットに共通であ
りかつ同じ機能を行う論理構成要素は同じ番号で示さ
れ、かかる構成要素については図4乃至図13の前のセ
ットに関して既に論述した場合は、記述は図19乃至図
28の論議においては繰返されない。
【0183】図19は、ALU20がADD命令の実行
中に符号なしおよび符号つき加算を行う時、条件コード
・ビットをセットするための第2の実施例の条件コード
・アーキテクチャの該当部分を機能的に示している。
Z″−ビット・フラッグ500は、前の実施例のZ′−
ビット・フラッグ70と同じようにセットされ、このた
め、第2の実施例の構成を述べる時ごく簡単に述べるこ
とにする。
【0184】符号なし桁溢れの起生を示すため第1の実
施例(図4参照)におけるC′−ビット・フラッグ72
の値をセットするため使用されたORゲート114、お
よびANDゲート116、118および120の組合わ
せはまた、正の方向における符号なし桁溢れのみが符号
なし加算に対して生じ得るため、C″−ビット・フラッ
グ502をセットするため第2の実施例においても用い
られる。
【0185】B″−ビット・フラッグ504は、符号な
し加算中には負の方向における符号なし桁溢れ(下位桁
溢れ)が生じ得ないため、論理値0にクリヤされる。第
1の実施例では、ANDゲート126からの出力が論理
値1であったかあるいはANDゲート128からの出力
が論理値1であった時(図4参照)、(正または負のい
ずれかの方向に)符号つき桁溢れの起生を表示するよう
に論理値1にセットされた。本例では、ANDゲート1
26からの出力はnV″−ビット・フラッグ508をセ
ットするため用いられ、ANDゲート128からの出力
はpV″−ビット・フラッグ506をセットするため用
いられる。nV″−ビットは、オペランドAおよびオペ
ランドBの符号(MSB)が共に負であり、かつ結果C
の明らかな符号(MSB)が正である時に、負の方向に
おける符号つき桁溢れの起生を示すように論理値1にセ
ットされる。ここで、結果Cの符号もまた負であるはず
であるが、符号つき桁溢れの起生により正に変更される
ことが認識されよう。pV″−ビットは、オペランドA
およびオペランドBの符号(MSB)が共に正であり、
かつ結果Cの明らかな符号(MSB)が負である時、正
の方向における符号つき桁溢れの起生を表わすように論
理値1にセットされる。ここで、結果Cの符号もまた正
であるはずであるが、符号つき桁溢れの起生により負に
変更されることが認識されよう。
【0186】ORゲート526およびANDゲート52
0、522、524の組合わせを用いて、N″−ビット
・フラッグ510の値をセットする。このN″−ビット
は、結果の理論的符号が負である時のみ論理値1にセッ
トされ、さもなければ、論理値0へクリヤされる。結果
の理論的符号が、(1)オペランドAおよび結果Cが共
に負である、(2)オペランドBおよび結果Cが共に負
である、あるいは(3)オペランドAおよびオペランド
Bが共に負である時にのみ負になり得るという用途が発
見された。
【0187】図20は、SUB命令の実行中にALU2
0が符号なしおよび符号つき減算を行う時、条件コード
・ビットをセットするための第2の実施例の条件コード
・アーキテクチャの該当部分を機能的に示している。
【0188】符号なし桁溢れの起生を表示する第1の実
施例(図5参照)におけるC′−ビット・フラッグ72
の値をセットするため用いられたORゲート132およ
びANDゲート134、136、138の組合わせはま
た、負の方向における符号なし桁溢れ(下位桁溢れ)の
みが符号なし減算に対して生じ得るため、B″−ビット
・フラッグ504をセットするため第2の実施例におい
ても用いられる。
【0189】C″−ビット・フラッグ502は、正の方
向における符号なし桁溢れが符号なし減算中は生じ得な
いため、論理値0にクリヤされる。
【0190】第1の実施例においては、ANDゲート1
42からの出力が論理値1であるかあるいはORゲート
144の出力が論理値1であった時(図5参照)、(正
または負のいずれかの方向における)符号つき桁溢れの
起生を示すため符号つき桁溢れV′−ビットが論理値1
にセットされた。本例では、ANDゲート142からの
出力はnV″−ビット・フラッグ508のセットのため
用いられ、ORゲート144からの出力はpV″−ビッ
ト・フラッグ506のセットのために用いられる。n
V″−ビットは、オペランドAの符号が負、オペランド
Bの符号が正、および結果Cが正として現れる時、負の
方向における符号つき桁溢れの起生を示すため論理値1
にセットされる。ここで、結果Cの符号もまた負である
はずであるが、符号つき桁溢れの起生により正に変更さ
れることが認識されよう。pV″−ビットは、オペラン
ドAの符号が正、オペランドBの符号が負および結果C
の符号が負として現れる時、正の方向における符号つき
桁溢れの起生を示すため論理値1にセットされる。ここ
で、結果Cの符号は正であるはずであるが、符号つき桁
溢れの起生により負に変更されることが認識されよう。
【0191】ORゲート536およびANDゲート53
0、532、534の組合わせが、N″−ビット・フラ
ッグ510の値をセットするため用いられる。N″−ビ
ットは、結果の理論的符号が負である時のみ論理値1に
セットされ、さもなければ、論理値0にクリヤされる。
結果の理論的符号は、(1)オペランドAおよび結果C
が共に負である、(2)オペランドBが正であり結果C
が負である、または(3)オペランドAが負でありオペ
ランドBが正である時にのみ、負であり得るという用途
が発見された。
【0192】図21は、ALU20がMULU命令の実
行中に符号なし乗算を行う時、条件コード・ビットをセ
ットする第2の実施例の条件コード・アーキテクチャの
該当部分を機能的に示している。
【0193】ALU20における符号なし乗算ユニット
150からの桁溢れ出力は、第2の実施例においては
C″−ビット・フラッグ502のセットのために用いら
れるが、これは正の方向における符号なし桁溢れのみが
符号なし乗算に対して生じ得るためである。再び、第1
の実施例における如く、ALU20におけるAレジスタ
102、Bレジスタ100およびCレジスタ106がそ
れぞれmビットのデータ幅を持つものと仮定する。
【0194】B″−ビット・フラッグ504は、負の方
向における符号なし桁溢れ(下位桁溢れ)が符号なし乗
算中は生じ得ないため、論理値0にクリヤされる。ま
た、符号なし算術演算中は符号つき桁溢れが生じ得ない
ため、正および負の符号つき桁溢れ標識、pV″−ビッ
ト・フラッグ506およびnV″−ビット・フラッグ5
08は共に論理値0にセットされる。
【0195】先に述べたように、MULU命令が符号な
し算術演算を行うため、N″−ビット・フラッグ510
の値は割当て可能命令セット(ISA)であり、このた
め、N″−ビットのセッティングは非論理的である。例
えば、N″−ビットは、Cレジスタ106のMSBの値
に等しくセットすることができ、これは伝統的手法であ
り、全ての符号なし値が定義により正であるため、N″
−ビットは論理値0にセットされ得、また符号情報は符
号なし算術演算中は生成されず、あるいはN″−ビット
はマイクロプロセッサの実現された命令セットに関して
有利である他の方法でセットすることもできる。
【0196】図22は、ALU20がMULS命令の実
行中に符号つき乗算を行う時に、条件コード・ビットを
セットする第2の実施例の条件コード・アーキテクチャ
の該当部分を機能的に示している。
【0197】実施中の算術演算が符号つきであるため、
符号なし桁溢れは生じ得ない。その結果、C″−ビット
・フラッグ502およびB″−ビット・フラッグ504
は共に論理値0にセットされる。
【0198】第1の実施例の図7に関する論述から、符
号つき乗算により生じる結果Cに対する理論的符号に対
する値が線156におけるANDゲート168の出力に
与えられたことを想起されたい。図7において結果Cの
理論的符号に対する値を生成するため用いられたEOR
ゲート158、ラッチ160またはORゲート164お
よびANDゲート168を含む同じ回路は図22におい
て反復され、ここでは(Z′−ビット・フラッグ70の
値の代わりに)Z″−ビット・フラッグ500の値がO
Rゲート164に対する入力(反転)として働く。この
ため、符号つき乗算では、N″−ビット・フラッグ51
0の理論的符号がANDゲート168から線156に現
れる論理値によりセットされる。
【0199】N″−ビット・フラッグ510のセッティ
ングおよび符号つき乗算ユニット152からの符号つき
桁溢れ出力は、それぞれ負および正の符号つき桁溢れ標
識であるnV″−ビット・フラッグ508およびpV″
−ビット・フラッグ506の値をセットするためAND
ゲート550、552により用いられる。nV″−ビッ
ト・フラッグ508は、符号つき桁溢れが生じる時にA
NDゲート550の出力により論理値1にセットされ、
N″−ビット・フラッグ510は、符号つき桁溢れが負
の方向である(即ち、結果Cが負の理論値であった)こ
とを示す論理値1にセットされる。pV″−ビット・フ
ラッグ506は、符号つき桁溢れが生じる時ANDゲー
ト552の出力により論理値1にセットされ、N″−ビ
ット・フラッグ510は、符号つき桁溢れが正の方向で
ある(即ち、結果Cの理論値が正であった)ことを示す
論理値0にクリヤされる。
【0200】図23は、ALU20がDIVU命令の実
行中符号なし除算を行う時、条件コード・ビットをセッ
トする第2の実施例の条件コード・アーキテクチャの該
当部分を機能的に示している。ALU20における符号
なし除算ユニット170からの桁溢れ出力は、正の方向
における符号なし桁溢れのみが符号なし除算に対して生
じ得るため、C″−ビット・フラッグ502をセットす
る第2の実施例において用いられる。
【0201】B″−ビット・フラッグ504は、負の方
向における符号なし桁溢れ(下位桁溢れ)が符号なし除
算中は生じ得ないため、論理値0にクリヤされる。ま
た、正および負の符号つき桁溢れ標識であるpV″−ビ
ット・フラッグ506およびnV″−ビット・フラッグ
508は、符号つき桁溢れが符号なし算術演算中は生じ
得ない故に、共に論理値0にセットされる。
【0202】先に述べたように、N″−ビット・フラッ
グ510の値は、DIVU命令が符号なし算術演算を行
うため割当て可能な命令セット(ISA)であり、この
ため、N″−ビットのセッティングは非論理的である。
例えば、N″−ビットはCレジスタ106のMSBの値
に等しくセットすることができ、これは伝統的手法であ
り、N″−ビットは、全ての符号なし値が定義により正
であり符号情報が符号なし算術演算中は生成されないた
め、論理値0にセットすることができ、あるいはN″−
ビットはマイクロプロセッサの実現された命令セットに
関して有利である他の方法でセットすることもできる。
【0203】図24は、ALU20がDIVS命令の実
行中に符号つき除算を行う時、条件コード・ビットをセ
ットするための第2の実施例の条件コード・アーキテク
チャの該当部分を機能的に示している。
【0204】実施中の算術演算が符号つきであるため、
符号なし桁溢れは起り得ない。その結果、C″−ビット
・フラッグ502およびB″−ビット・フラッグ504
が共に論理値0にセットされる。
【0205】第1の実施例の図9に関する論議から、符
号つき除算により生じる結果Cに対する理論的符号に対
する値が線156におけるANDゲート168の出力に
与えられたことを想起されたい。結果Cに対する理論的
符号に対する値を生成するため図9において使用された
EORゲート158、ラッチ160、ORゲート164
およびANDゲート168を含む同じ回路が図24にお
いても反復され、この時Z″−ビット・フラッグ500
の値が(Z′−ビット・フラッグ70の値の代わりに)
ORゲート164に対する入力(反転)として働く。こ
のため、符号つき除算では、N″−ビット・フラッグ5
10の理論的符号がANDゲート168から線156に
現れる論理値によりセットされる。
【0206】pV″−ビット・フラッグ506およびn
V″−ビット・フラッグ508の値は、符号つき乗算命
令に対して図22において前に示された同じANDゲー
ト550およびANDゲート552を用いて、N″−ビ
ット・フラッグ510のセッティング、および符号つき
除算ユニット172からの符号つき桁溢れ出力により決
定される。nV″−ビット・フラッグ508は、符号つ
き桁溢れが生じる時ANDゲート550の出力により論
理値1にセットされ、N″−ビット・フラッグ510
は、符号つき桁溢れが負の方向にある(即ち、結果Cの
理論値が負である)ことを示す論理値1にセットされ
る。pV″−ビット・フラッグ506は、符号つき桁溢
れが生じる時ANDゲート552の出力により論理値1
にセットされ、N″−ビット・フラッグ510は論理値
0にクリヤされ、このことは符号つき桁溢れが正の方向
にある(即ち、結果Cの理論値が正であった)ことを示
す。
【0207】図25は、ASL命令の実行中、ALU2
0が2の冪乗による符号なしおよび符号つき乗算を行う
時、条件コード・ビットをセットする第2の実施例の条
件コード・アーキテクチャの該当部分を機能的に示して
いる。
【0208】第1の実施例(図10参照)における如
く、ラッチ174およびORゲート176は、論理値1
がAレジスタ102のMSB位置から繰出されるなら
ば、C″−ビット・フラッグ502をセットするため用
いられ、これにより正の方向における符号なし桁溢れの
起生を表示する。
【0209】B″−ビット・フラッグ504は論理値0
にセットされるが、これは算術的左桁送り演算が正の方
向における符号なし桁溢れを生じ得るに過ぎない故であ
る。
【0210】N″−ビット・フラッグ510は、桁送り
操作の開始に先立ちCレジスタ106におけるオペラン
ドAのMSBの値にセットされる。このMSBの値は、
桁送り操作により生じることになる結果の理論的符号を
表わす。
【0211】また、EORゲート178、ORゲート1
82およびラッチ184は、Aレジスタ102のMSB
が桁送り操作中に値を変更するならば、符号つき桁溢れ
の起生を表示するラッチ184からの出力値を生じる第
1の実施例(図10参照)におけると同じように接続さ
れる。第2の実施例においては、148の出力が論理値
1でありかつN″−ビット・フラッグ510が論理値1
にセットされる時、ANDゲート570がnV″−ビッ
ト・フラッグ508フラッグを論理値1にセットして、
負の方向における符号つき桁溢れの起生を表示する。ラ
ッチ184の出力が論理値1を持ち、N″−ビット・フ
ラッグ510が論理値0にセットされる時、pV″−ビ
ット・フラッグ506は論理値1にセットされて正の方
向における符号つき桁溢れの起生を表示する。
【0212】図26は、ALU20がLSR命令の実行
中、2の冪乗による符号なし除算を行う時、条件コード
・ビットをセットする第2の実施例の条件コード・アー
キテクチャの該当部分を機能的に示している。
【0213】符号なし桁溢れは、2の冪乗による符号な
し除算中は生じ得ない。その結果、C″−ビット・フラ
ッグ502およびB″−ビット・フラッグ504の双方
が論理値0にセットされる。同様に、符号つき桁溢れは
符号なし操作中は生じ得ないため、pV″−ビット・フ
ラッグ506およびnV″−ビット・フラッグ508は
共に論理値0にセットされる。
【0214】図26に示されるように、符号なし操作か
ら生じる結果が符号ビットを持たないため、N″−ビッ
ト・フラッグ510は割当て可能な命令セットである値
にセットすることができる。例えば、全ての符号なし値
は定義により正であり符号情報は符号なし算術演算中は
生じないため、N″−ビット・フラッグ510は論理値
0にセットされ、これは伝統的手法における如く桁送り
操作が完了した後にAレジスタ102のMSB位置の値
にセットすることができ、あるいはマイクロプロセッサ
の実現された命令セットに関して有利である他の方法で
セットすることもできる。
【0215】図27は、ALU20がASR命令の実行
中に2の冪乗による符号つき除算を行う時、条件コード
・ビットをセットする第2の実施例の条件コード・アー
キテクチャの該当部分を機能的に示している。
【0216】符号なしおよび符号つき桁溢れがASR命
令の実行中に行われる2の冪乗による符号つき除算中は
生じ得ないため、C″−ビット・フラッグ502、B″
−ビット・フラッグ504、pV″−ビット・フラッグ
506およびnV″−ビット・フラッグ508は全て論
理値0にセットされる。これは符号つき演算であるた
め、N″−ビット・フラッグ510は結果の理論的符号
を表わし、これはこの場合Aレジスタ102に格納され
たオペランドAのMSBの値である。
【0217】図28は、ASR0命令の実行中、ALU
20がゼロになるよう丸めにより2の冪乗での符号つき
除算を行う時、条件コード・ビットをセットする第2の
実施例の条件コード・アーキテクチャの該当部分を機能
的に示している(図13に関する前の論議を参照)。
C″−ビット・フラッグ502、B″−ビット・フラッ
グ504、pV″−ビット・フラッグ506、およびn
V″−ビット・フラッグ508は全て論理値0にセット
されるが、これは算術的右桁送り演算での2の冪乗によ
る除算を実施する時NIHA符号なしおよび符号つき桁
溢れが生じ得ない故である。
【0218】N″−ビット・フラッグ510はCレジス
タ106のMSBの値にセットされ、これはASR0命
令を実行することにより生じる結果Cの理論的符号を表
わすCレジスタ106のMSBの値にセットされる。
【0219】次に図29乃至図32において、第2の実
施例に従って決定される条件コードの値を利用した単一
命令の範囲検査および制限動作を実行する時、制御装置
16の動作シーケンスの動作シーケンスにより実施され
る制御ステップのシーケンスを示すフロー図が示され
る。
【0220】第1の実施例における如く、符号なし算術
演算により計算される値を持つソフトウエアの変数の場
合は、LIMHU命令が上限値に対して範囲検査および
制限を行い(図14参照)、LIMLU命令は下限値に
対して範囲検査および制限を行う(図15参照)。同様
に、符号つき算術演算により計算される値を持つソフト
ウエアの変数の場合は、LIMHUおよびLIMLS命
令は、ちょうど第1の実施例(図16および図17参
照)における如くそれぞれ上限値および下限値に対して
範囲検査および制限を行う。
【0221】以降の記述を簡単にするため、第2の実施
例と関連するフロー図における制御ステップ(図29乃
至図32に示される)は、プライムを付した番号で示さ
れ、これは第1の実施例(前に図14乃至図17に示さ
れる)と関連するフロー図において対比し得る制御ステ
ップの表示に用いたプライムを付さない番号と対応す
る。明細書におけるスペースを残すため、図14乃至図
17における対応するプライムを付さない番号で示した
制御ステップにより行われるものと同じ動作を行う図2
9乃至図32にプライム付き番号を付した制御ステップ
について更に詳細に記述する。
【0222】図29は、第2の実施例に対するLIML
U命令の復号に応答して制御装置16の動作シーケンス
の動作シーケンスにより行われるステップ・シーケンス
を示している。LIMLU動作シーケンスには、命令デ
コーダ14により与えられる復号された命令opコード
に基いて、制御装置16の動作シーケンスがLIMLU
命令が命令レジスタ12に対してロードされたと判定す
る時、ステップ200′で入る。
【0223】ステップ200′から、動作シーケンスは
ステップ202′へ進み、ここでソフトウエアの変数V
ARの数値がオペランドAとしてAレジスタ102に格
納され、VARに対する下限値LBの数値はオペランド
BとしてBレジスタ100に格納される。
【0224】ステップ202′から、動作シーケンスは
判断制御ステップ204′へ進み、ここで条件コードの
B″−ビットの値がテストされてB″−ビット・フラッ
グ504が論理値1にセットされたかどうかを判定す
る。B″−ビットが論理値1を持つならば、これは負の
方向における符号なし桁溢れが、VARに対する数値の
計算に用いられた符号なし算術演算の実行中に生じたこ
とを示す。その結果、オペランドAとしてその時格納さ
れていた数値VARは数学的に定義されず、動作シーケ
ンスは制御ステップ206′へ送られる。反対に、B″
−ビットが論理値0を持つならば、これはVARに対す
る数値の計算に用いられた符号なし算術演算中には負の
符号なし桁溢れが生じなかったことを示し、動作シーケ
ンスは判断制御ステップ208′へ送られる。
【0225】判断ステップ208′において、C″−ビ
ットの値がテストされて、C″−ビット・フラッグ50
2が論理値0にセットされたかどうか判定し、オペラン
ドAとして格納されたVARに対する数値は、符号なし
比較操作によりオペランドBとして格納された下限値L
Bの値に対してテストされる。C″−ビットが論理値0
を持ち、オペランドAがオペランドBより小さければ、
これはVARに対する数値が計算された時に正の符号な
し桁溢れが生じなかったが、VARが負の方向において
範囲外にあることを示す。その結果、動作シーケンスは
制御ステップ206′へ送られる。C″−ビットが論理
値0に等しいか、あるいはオペランドAがオペランドB
より小さくなければ、動作シーケンスは制御ステップ2
10′へ送られる。
【0226】制御ステップ210′においては、オペラ
ンドAとして格納されたVARに対する数値は結果Cと
して格納されるべくCレジスタ106へ送られる。次
に、動作シーケンスは制御ステップ218′へ送られ
る。
【0227】次に制御ステップ206′に戻り、このス
テップには、B″−ビットが論理値1を持つ時は制御ス
テップ204′から達し、あるいはVARに対する有効
数値がその受入れ得る下限値LBより小さい時は制御ス
テップ208′から達する。この制御ステップにおいて
は、オペランドBはCレジスタ106へ転送され、結果
Cとして格納される。条件コードのC″−ビット・フラ
ッグ502、B″−ビット・フラッグ504、pV″−
ビット・フラッグ506およびnV″−ビット・フラッ
グ508は全て論理値0にクリヤされる。更に、条件コ
ードL″−ビット・フラッグ512は論理値1にセット
され、N″−ビット・フラッグ510は割当て可能な命
令セット(ISA)である値にセットされる。第1の実
施例の論議における如く、これら特定の動作を実施する
ための論理的根拠については、相手のLIMHU命令の
論議が終了した後に述べることにする。
【0228】Cレジスタ106に格納された結果Cが2
進値ゼロと等しければ、制御ステップ206′から、L
IMLU動作シーケンスは、制御ステップ212′、2
14′および216′のセットを経てZ″−ビット・フ
ラッグ500の値を論理値1にセットし、さもなけれ
ば、Z″−ビット・フラッグ500は論理値0にセット
される。Z″−ビット・フラッグ500のこのセッティ
ングは、図14に示される対応する制御ステップ21
2、214、216により行われるZ′−ビット・フラ
ッグ70のセッティングと正確に対比する。
【0229】制御ステップ210′、214′または2
16′から、LIMLU動作シーケンスは制御ステップ
218′へ送られる。ここで、Cレジスタ106に格納
された結果Cは、LIMLU命令の宛て先オペランド・
フィールド66により指定されるレジスタに格納され
る。このレジスタがソフトウエアの変数VARに対する
数値を保持することを想起されたい。ステップ218′
から、LIMLU動作シーケンスはステップ220′へ
進んでここで励起され、この時制御装置16の動作シー
ケンスは、命令レジスタ12に格納された次の機械命令
に対する必要な制御ステップを実行する用意がある。
【0230】図30は、第2の実施例に対するLIMH
U命令の復号に応答して制御装置16の動作シーケンス
により行われるステップ・シーケンスを示している。こ
のLIMHU動作シーケンスには、命令デコーダ14に
より与えられる復号された命令opコードに基いて、制
御装置16の動作シーケンスがLIMHU命令が命令レ
ジスタ12にロードされたと判定する時にステップ23
0′で入る。
【0231】ステップ230′から、動作シーケンスは
制御ステップ232′へ進み、ここでソフトウエアの変
数VARの数値がオペランドAとしてAレジスタ102
に格納され、VARに対する上限値UBの数値はオペラ
ンドBとしてBレジスタ100に格納される。
【0232】制御ステップ232′から、動作シーケン
スは判断制御ステップ234′へ進み、ここで条件コー
ドのC″−ビットの値がテストされてC″−ビット・フ
ラッグ502が論理値1にセットされたかどうかを判定
する。C″−ビットが論理値1を持つならば、これは、
正の方向における符号なし桁溢れがVARに対する数値
の計算に用いられた符号なし算術演算の実行中に生じた
ことを示す。その結果、オペランドAとしてその時格納
されていた数値VARは数学的に定義されず、動作シー
ケンスは制御ステップ236′へ送られる。反対に、
C″−ビットが論理値0を持つならば、これは、VAR
に対する数値の計算に用いられた符号なし算術演算中に
は正の符号なし桁溢れが生じなかったことを示し、動作
シーケンスは判断制御ステップ238′へ送られる。
【0233】判断ステップ238′において、B″−ビ
ットの値がテストされてB″−ビット・フラッグ504
が論理値0にセットされたかどうか判定し、オペランド
Aとして格納されたVARに対する数値は、符号なし比
較動作によりオペランドBとして格納された上限値UB
の値に対してテストされる。B″−ビットが論理値0を
持ち、オペランドAがオペランドBより大きければ、こ
れは、VARに対する数値が計算された時には負の符号
なし桁溢れが生じなかったが、VARが正の方向におい
て範囲外であることを示す。その結果、動作シーケンス
は制御ステップ236′へ送られる。B″−ビットが論
理値0と等しくないか、あるいはオペランドAがオペラ
ンドBより大きくなければ、動作シーケンスは制御ステ
ップ240′へ送られる。
【0234】制御ステップ240′において、オペラン
ドAとして格納されたVARに対するVLは結果Cとし
て格納されるべくCレジスタ106へ送られる。次に、
動作シーケンスは制御ステップ248′へ送られる。
【0235】この時制御ステップ236′に戻り、この
ステップには、C″−ビットが論理値1を持つ時制御ス
テップ234′から達し、あるいはVARに対する有効
数値がその受入れ得る上限値UBより大きい時は制御ス
テップ238′から達する。この制御ステップにおい
て、オペランドBはCレジスタ106へ転送されて結果
Cとして格納される。条件コードのC″−ビット・フラ
ッグ502、B″−ビット・フラッグ504、pV″−
ビット・フラッグ506、およびnV″−ビット・フラ
ッグ508は全て論理値0にクリヤされる。更に、条件
コードL″−ビット・フラッグ512は論理値1にセッ
トされ、N″−ビット・フラッグ510は割当て可能な
命令セット(ISA)である値にセットされる。第1の
実施例の論議における如く、これらの特定動作の実施の
ための論理的根拠については、LIMHU命令における
残りの制御ステップの論議が終った後に延ばすことにす
る。
【0236】制御ステップ236′から、Cレジスタ1
06に格納された結果Cが2進値ゼロに等しければ、L
IMHU動作シーケンスは、制御ステップ242′、2
44′および246′のセットを経て、Z″−ビット・
フラッグ500値を論理値1にセットし、さもなけれ
ば、Z″−ビット・フラッグ500は論理値0にセット
される。Z″−ビット・フラッグ500のこのセッティ
ングは、図15に示された対応する制御ステップ24
2、244、246により行われるZ′−ビット・フラ
ッグ70のセッティングと正確に対比する。
【0237】対応する240′、244′または246
から、LIMHU動作シーケンスは制御ステップ24
8′へ送られる。ここで、Cレジスタ106に格納され
た結果Cが、LIMHU命令の宛て先オペランド・フィ
ールド66により指定されるレジスタに格納される。こ
のレジスタがソフトウエアの変数VARに対する数値を
保持することを想起されたい。ステップ248′から、
LIMHU動作シーケンスはステップ250′へ進んで
ここで励起され、次いで制御装置16の動作シーケンス
は、命令レジスタ12に格納された次の機械命令に対す
る必要な制御ステップを実行する用意がある。
【0238】第1の実施例における如く、符号なしソフ
トウエアの変数の範囲の両限度を調べるため、この場合
LIMLUおよびLIMHU機械命令は、範囲が検査さ
れおそらくは制限されるべきソフトウエアの変数の符号
なし数値を計算する演算命令に続いて逐次ソフトウエア
・プログラムに入れられる。しかし、第2の実施例にお
いては、LIMLUおよびLIMHU命令が1つのプロ
グラムで用いられる順序は、ソフトウエアの変数の数値
の計算に用いられた演算命令の種類には依存しない。こ
れは、第2の実施例の条件コード・アーキテクチャが、
正の符号なし桁溢れの起生を示すためC″−ビット・フ
ラッグ502をセットすることにより負および正の方向
における符号なし桁溢れを弁別し、負の符号なし桁溢れ
(下位桁溢れとしても知られる)の起生を示すためB″
−ビット・フラッグ504をセットするという事実によ
る。第2の実施例のLIMLUおよびLIMHU命令
は、LIMLUおよびLIMHU命令がソフトウエア・
プログラムに現れる順序の如何に拘わらず、この情報を
利して、符号なし桁溢れの起生により生成されたソフト
ウエアの変数の数値を正しい限度に制限する。
【0239】当業者は、演算が行われる順序は重要でな
いため、LIMLUおよびLIMHU命令の実行により
行われる上下の両限度と関連する演算が1つの命令にマ
ージすることが可能であることを認識されよう。
【0240】図29および図30におけるLIMLUお
よびLIMHU動作シーケンスの制御ステップ206′
および236′において、結果CとしてオペランドBを
Cレジスタ106に格納した後、C″−ビット・フラッ
グ502、B″−ビット・フラッグ504、pV″−ビ
ット・フラッグ506およびnV″−ビット・フラッグ
508が全て論理値0にセットされた。オペランドBの
Cレジスタ106への転送がVARの値をその受入れ得
る範囲に制限するよう働く故に、これらのフラッグは全
て論理値0にクリヤされて、ソフトウエアの変数VAR
がもはや符号なしまたは符号つき桁溢れにより範囲外に
ないことを示す。
【0241】また、LIMLUおよびLIMHU動作シ
ーケンスにおける制御ステップ206′および236′
において、L″−ビット・フラッグ512が論理値1に
セットされることが認識されよう。このL″−ビットの
セッティングは、検査されるソフトウエアの変数値が範
囲制限されたことを示す。先に述べたように、この表示
は、例えば、マイクロプロセッサ10が制御システム用
途において用いられる時制御パラメータが範囲外にある
ことの警告を与え、あるいは後の検索のためメモリー装
置26に格納することができるソフトウエアの変数に関
する診断情報を与えるために使用することもできる。
【0242】また示されるように、N″−ビット・フラ
ッグ510は、LIMLUおよびLIMHU動作シーケ
ンスの各々の制御ステップ206′および236におい
て、割当て可能な命令セット(ISA)と等しくセット
される。通常は、範囲検査されつつあるソフトウエアの
変数値が符号なし操作により生成されたため、N″−ビ
ット・フラッグ510は論理値0にセットされることに
なるが、Cレジスタ106に格納された結果CのMSB
の値に、あるいはマイクロプロセッサの実現された命令
セットに関して有効な他の方法でセットすることもでき
る。
【0243】図31は、第2の実施例に対するLIML
S命令の復号に応答して制御装置16の動作シーケンス
の動作シーケンスにより行われる一連のステップを示し
ている。制御装置16の動作シーケンスが、命令デコー
ダ14により提供される復号命令opコードにに基いて
LIMLS命令が命令レジスタ12へロードされたと判
定する時、このLIMLS動作シーケンスにはステップ
260′で入る。
【0244】ステップ260′から、動作シーケンスは
制御ステップ262′へ進み、ここでソフトウエアの変
数値VARがオペランドAとしてAレジスタ102に格
納され、VARに対する下限値LBの数値はオペランド
BとしてBレジスタ100に格納される。
【0245】制御ステップ262′から、動作シーケン
スは判断制御ステップ264′へ進んでここで条件コー
ドnV″−ビットがテストされて、nV″−ビット・フ
ラッグ508が論理値1にセットされたかどうかを判定
する。nV″−ビットが論理値1であれば、これは、V
ARに対する数値の計算に用いられた符号つき算術演算
の実行中に符号つき桁溢れが負の方向で生じたことを示
す。その結果、その時オペランドAとして格納されてい
た数値は数学的に定義されず、動作シーケンスは制御ス
テップ266′へ送られる。反対に、nV″−ビットが
論理値0であれば、これは、VARに対する数値の計算
に用いられた符号つき算術演算中に、負の符号つき桁溢
れは生じなかったことを示し、動作シーケンスは判断制
御ステップ268′へ送られる。
【0246】判断ステップ268′において、pV″−
ビットの値がテストされて、pV″−ビット・フラッグ
506が論理値0にセットされたかどうかを判定し、オ
ペランドAとして格納されたVARに対する数値は、符
号つき比較操作によりオペランドBとして格納された下
限値LBの値に対してテストされる。pV″−ビットが
論理値0を持ち、オペランドAがオペランドBより小さ
ければ、これは、VARに対する数値が計算された時は
正の符号つき桁溢れが生じなかったが、VARが負の方
向に範囲外にあることを示す。その結果、動作シーケン
スは制御ステップ266′へ送られる。pV″−ビット
が論理値0に等しくないか、あるいはオペランドAがオ
ペランドBより小さくなければ、動作シーケンスは制御
ステップ270′へ送られる。
【0247】制御ステップ270′において、オペラン
ドAとして格納されたVARに対する数値は、結果Cと
して格納されるべくCレジスタ106へ送られる。次い
で、動作シーケンスは制御ステップ278′へ送られ
る。次に制御ステップ266′へ戻り、このステップに
は、nV″−ビットが論理値1を持つ時には制御ステッ
プ264′から達するか、あるいはVARに対する数値
がその受入れ得る下限値LBより小さい時は制御ステッ
プ268′から達する。この制御ステップにおいて、オ
ペランドBがCレジスタ106へ転送され、結果Cとし
て格納される。条件コードC″−ビット・フラッグ50
2、B″−ビット・フラッグ504、pV″−ビット・
フラッグ506およびnV″−ビット・フラッグ508
は全て、論理値0にクリヤされる。更に、条件コード
L″−ビット・フラッグ512は論理値1にセットさ
れ、N″−ビット・フラッグ510はCレジスタ106
に格納された結果CのMSBの値に等しくセットされ
る。第1の実施例の論議におけるように、これらの特定
操作を実施するための論理的根拠については、相手のL
IMHS命令の論議が終った後に述べることにする。
【0248】制御ステップ266′から、LIMLS動
作シーケンスは、Cレジスタ106に格納された結果C
が2進値ゼロに等しければ、制御ステップ272′、2
74′および276′のセットを経てZ″−ビット・フ
ラッグ500の値を論理値1にセットし、さもなけれ
ば、Z″−ビット・フラッグ500は論理値0にセット
される。Z″−ビット・フラッグ500のこのようなセ
ッティングは、図16に示した対応する制御ステップ2
72、274、276により行われるZ′−ビット・フ
ラッグ70のセッティングと正確に対比する。
【0249】制御ステップ270′、274′または2
76′からは、LIMLS動作シーケンスが制御ステッ
プ278′へ送られる。ここで、Cレジスタ106に格
納された結果Cは、LIMLU命令の宛て先オペランド
・フィールド66により指定されるレジスタに格納され
る。このレジスタがソフトウエアの変数VARに対する
数値を保持することを想起されたい。ステップ278′
から、LIMLS動作シーケンスはステップ280′へ
進んでここで励起され、その時制御装置16の動作シー
ケンスは、命令レジスタ12に格納された次の機械命令
に対して必要な制御ステップを実行する用意がある。
【0250】図32は、第2の実施例に対するLIMH
S命令の復号に応答して、制御装置16の動作シーケン
スにより行われる一連のステップを示している。LIM
HS動作シーケンスにはステップ290′で入り、この
時制御装置16の動作シーケンスは、命令デコーダ14
により与えられる復号された命令opコードに基いて、
LIMHS命令が命令レジスタ12にロードされたこと
を判定する。
【0251】ステップ290′から、動作シーケンスは
制御ステップ292′へ進み、ここでソフトウエアの変
数VARの数値がオペランドAとしてAレジスタ102
に格納され、VARに対する上限値UBの数値はオペラ
ンドBとしてBレジスタ100に格納される。
【0252】制御ステップ292′から、動作シーケン
スは判断制御ステップ294′へ進み、ここで条件コー
ドpV″−ビットの値がテストされてpV″−ビット・
フラッグ506が論理値1にセットされたかどうかを判
定する。pV″−ビットが論理値1であれば、これは、
VARに対する数値の計算にも地いられた符号つき算術
演算の実行中に正の方向における符号つき桁溢れが生じ
たことを示す。その結果、その時オペランドAとして格
納されていた数値VARは数学的には定義されず、動作
シーケンスは制御ステップ296′へ送られる。反対
に、pV″−ビットが論理値0であれば、これは、VA
Rに対する数値の計算に用いられた符号つき算術演算中
には正の符号つき桁溢れが生じなかったことを示す、動
作シーケンスは判断制御ステップ298′へ送られる。
【0253】判断ステップ298′において、nV″−
ビットの値がテストされてnV″−ビット・フラッグ5
08が論理値0にセットされたかどうか判定し、オペラ
ンドAとして格納されたVARに対する数値は、符号つ
き比較操作によりオペランドBとして格納された上限値
UBの値に対するテストされる。nV″−ビットが論理
値0であり、オペランドAがオペランドBより大きけれ
ば、これは、VARに対する数値が計算された時には負
の符号つき桁溢れが生じなかったが、VARが正の方向
において範囲外であることを示す。その結果、動作シー
ケンスは制御ステップ296′へ送られる。nV″−ビ
ットが論理値0に等しくないか、あるいはオペランドA
がオペランドBより大きくなければ、動作シーケンスは
制御ステップ300′へ送られる。制御ステップ30
0′において、オペランドAとして格納されたVARに
対する数値が結果Cとして格納されるべくCレジスタ1
06へ送られる。次いで、動作シーケンスは制御ステッ
プ308′へ送られる。
【0254】次に制御ステップ296′へ戻り、このス
テップには、pV″−ビットが論理値1を持つ時には制
御ステップ294′から達するか、あるいはVARに対
する数値がその受入れ得る上限値UBより大きい時は制
御ステップ298′から達する。この制御ステップにお
いて、オペランドBはCレジスタ106へ転送されて結
果Cとして格納される。条件コードC″−ビット・フラ
ッグ502、B″−ビット・フラッグ504、pV″−
ビット・フラッグ506およびnV″−ビット・フラッ
グ508は全て論理値0にクリヤされる。更に、条件コ
ードL″−ビット・フラッグ512は論理値1にセット
され、N″−ビット・フラッグ510はCレジスタ10
6における結果CのMSBの値と等しくセットされる。
第1の実施例の論議におけるように、これらの特定操作
の実施のための論理的根拠については、LIMHS命令
における残りの制御ステップの論議が終った後まで送
る。
【0255】制御ステップ296′から、LIMHS動
作シーケンスは、Cレジスタ106に格納された結果C
が2進値ゼロに等しくなければ、制御ステップ30
2′、304′および306′のセットを経て進み、
Z″−ビット・フラッグ500の値を論理値1にセット
し、さもなければ、Z″−ビット・フラッグ500は論
理値0にセットされる。Z″−ビット・フラッグ500
のこのようなセッティングは、図17に示した対応する
制御ステップ302、304、306により行われた
Z′−ビット・フラッグ70のセッティングと正確に対
比する。
【0256】制御ステップ300′、304′または3
06′から、LIMHS動作シーケンスは制御ステップ
308′へ送られる。ここで、Cレジスタ106に格納
された結果Cは、LIMHS命令の宛て先オペランド・
フィールド66により指定されるレジスタに格納され
る。このレジスタがソフトウエアの変数VARに対する
数値を保持することを想起されたい。ステップ308′
から、LIMHS動作シーケンスはステップ310′へ
進んでここで励起され、次いで制御装置16の動作シー
ケンスの動作シーケンスは、命令レジスタ12に格納さ
れた次の機械命令に対して必要な制御ステップを実行す
る用意がある。
【0257】範囲の両限度を調べるため、LIMLSお
よびLIMHS機械命令はこの場合、範囲が検査されお
そらくは制限されるべきソフトウエアの変数の符号つき
数値を計算する演算命令に続いて逐次ソフトウエア・プ
ログラムに入れられる。第1の実施例における如く、L
IMLSおよびLIMHS命令がプログラムにおいて用
いられる順序は、範囲が検査されおそらくは制限される
べきソフトウエアの変数に対する値の計算のため用いら
れる演算命令の種類には依存しない。当業者は、LIM
LSおよびLIMHS命令の実行により行われる上下の
限度と関連する操作は、この操作が行われる順序は重要
ではないため、1つの命令に組合わせできることを認識
しよう。
【0258】nV″−ビット・フラッグ508およびp
V″−ビット・フラッグ506をそれぞれ介して負また
は正の符号つき桁溢れの起生に対するここの標識を提供
することにより、第2の実施例の条件コード・アーキテ
クチャが符号つき桁溢れの方向の決定を簡素化すること
が認識されよう。その結果、符号つき桁溢れの起生およ
び方向は、第1の実施例により必要とされる如き2つの
フラッグのセッティングを設定する(図6および図7の
LIMLSおよびLIMHSの各動作シーケンスにおけ
るステップ264および294参照)のではなく、1つ
の条件コード・フラッグのセッティングのテストにより
決定することができる(図31および図32のLIML
SおよびLIMHSの各動作シーケンにおけるステップ
264′および294′参照)。
【0259】図31および図32におけるLIMLSお
よびLIMHS動作シーケンの制御ステップ266′お
よび296′において、結果CとしてCレジスタ106
にオペランドBを格納した後、C″−ビット・フラッグ
502、B″−ビット・フラッグ504、pV″−ビッ
ト・フラッグ506およびnV″−ビット・フラッグ5
08が全て論理値0にセットされた。これらのフラッグ
は全て論理値0にクリヤされて、Cレジスタ106に対
するオペランドBの転送がVARの値をその受入れ得る
範囲に制限するよう働く故に、ソフトウエアの変数VA
Rはもはや符号なしおよび符号つき桁溢れにより範囲外
にないことを示す。
【0260】LIMLSおよびLIMHSの各動作シー
ケンスにおける制御ステップ266′および296′に
おいて、L″−ビット・フラッグ512が論理値1にセ
ットされることが認識されよう。第2の実施例が別個の
条件コードL″−ビット・フラッグ512を提供して、
ソフトウエアの変数値が制限された時を示すことが認識
されよう。これは、第1の実施例において必要とされた
如き限度を示す機能をC′−ビット・フラッグ72と
V′−ビット・フラッグ74間に共有することよりもは
るかに簡単である。
【0261】当業者には、第2の実施例において記述し
た条件コード・フラッグおよび関連するアーキテクチャ
の全てが同時に実現される必要はないことが理解されよ
う。例えば、第1の実施例に述べたC′−ビット・フラ
ッグ72は、正および負の符号なし桁溢れの表示を行う
ため、(関連する条件コード・アーキテクチャを含む)
第2の実施例のC″−ビット・フラッグ502および
B″−ビット・フラッグ504で置き換えることができ
る。あるいはまた、第1の実施例のV′−ビット・フラ
ッグ74は、正および負の符号つき桁溢れの起生の表示
を簡単にするため、(関連する条件コード・アーキテク
チャを含む)第2の実施例のpV″−ビット・フラッグ
506およびnV″−ビット・フラッグ508で置き換
えることもできる。また、第1の実施例のN′−ビット
・フラッグ76は、符号つき算術演算の理論的符号を更
に簡単に示すため、かつマイクロプロセッサの命令セッ
トにおける慣例的な分岐命令数を減少するため、(関連
する条件コード・アーキテクチャを含む)第2の実施例
のN″−ビット・フラッグ510により置き換えること
もできる。
【0262】更に、制御装置16の動作シーケンスは、
マイクロプロセッサの命令セットにおける全ての演算命
令に対する数学的に一貫した方法で条件コード・フラッ
グがセットされる限り、本文に述べた全ての演算命令を
実行するように構成する必要はない。実際には、第1お
よび第2の実施例の条件コード・アーキテクチャの符号
なしおよび符号つき部分は、符号なし算術演算のみ、あ
るいは符号つき算術演算のみをマイクロプロセッサが実
行するように個々に構成することもできる。
【0263】ソフトウエアの変数の数値が桁溢れの起生
なく生成されたものについて演算されつつある時、LI
MLUおよびLIMLS命令は、それぞれ符号なしおよ
び符号つきMAX関数として働き、LIMHUおよびL
IMHS命令は、それぞれ符号なしおよび符号つきMI
N関数として働く。
【0264】符号つき桁溢れの表示から切離された符号
つき算術演算によ生じる結果の理論的符号の表示の提供
は、条件コードのセッティングを用いるマイクロプロセ
ッサの命令セット内の伝統的な分岐命令の数および複雑
さを低減することができる。
【0265】本願の優先権の基礎となる米国特許出願第
964,138号、および本願に付随する要約書におけ
る開示内容が参考のため本文に援用される。
【図面の簡単な説明】
【図1】単一命令の範囲検査および制限動作を実行する
ための数学的に一貫した条件コード・アーキテクチャの
一実施例を含むマイクロプロセッサ構成を示すブロック
図である。
【図2】図1のマイクロプロセッサにより使用される機
械命令に対するフォーマットを示す概略図である。
【図3】数学的に一貫した条件コード・アーキテクチャ
を提供するよう構成された図1のALUおよび状態レジ
スタに対する更に詳細なブロック図である。
【図4】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図5】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図6】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図7】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図8】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図9】種々の数学的機械命令の第1の実施例の数学的
に一貫した条件コード・アーキテクチャを実現するため
の機能的論理図である。
【図10】種々の数学的機械命令の第1の実施例の数学
的に一貫した条件コード・アーキテクチャを実現するた
めの機能的論理図である。
【図11】種々の数学的機械命令の第1の実施例の数学
的に一貫した条件コード・アーキテクチャを実現するた
めの機能的論理図である。
【図12】種々の数学的機械命令の第1の実施例の数学
的に一貫した条件コード・アーキテクチャを実現するた
めの機能的論理図である。
【図13】種々の数学的機械命令の第1の実施例の数学
的に一貫した条件コード・アーキテクチャを実現するた
めの機能的論理図である。
【図14】第1の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを示すフローチャートである。
【図15】第1の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを示すフローチャートである。
【図16】第1の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを示すフローチャートである。
【図17】第1の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを示すフローチャートである。
【図18】第2の実施例による数学的に一貫した条件コ
ード・アーキテクチャを提供するように構成される図1
のALUおよび状態レジスタに対する更に詳細なブロッ
ク図である。
【図19】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図20】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図21】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図22】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図23】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図24】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図25】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図26】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図27】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図28】種々の数学的機械命令に対する第2の実施例
の数学的に一貫した条件コード・アーキテクチャを構成
する機能的論理図である。
【図29】第2の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを表わすフローチャートである。
【図30】第2の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを表わすフローチャートである。
【図31】第2の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを表わすフローチャートである。
【図32】第2の実施例により用いられる単一命令の範
囲検査および制限動作を実行する際、図1の制御装置の
動作シーケンスにより実施される制御ステップのシーケ
ンスを表わすフローチャートである。
【符号の説明】
10 マイクロプロセッサ 12 命令レジスタ 14 命令デコーダ 16 制御装置 18 状態レジスタ 20 算術論理演算装置(ALU) 22 汎用レジスタ・ファイル 24 バス制御論理回路 26 メモリー装置 30 内部データ・バス 60 命令コード・フィールド 62 オペランド・フィールド 64 ソース・オペランド・フィールド 66 宛て先オペランド・フィールド 70 条件コードZ′−ビット・フラッグ 72 条件コードC′−ビット・フラッグ 74 条件コードV′−ビット・フラッグ 76 条件コードN′−ビット・フラッグ 100 Bレジスタ 102 Aレジスタ 104 標準加算ユニット 106 Cレジスタ 140 標準減算ユニット 150 符号なし乗算ユニット 152 符号つき乗算ユニット 154 EORゲート 158 EORゲート 160 ラッチ 170 符号なし除算ユニット 172 符号つき除算ユニット 174 ラッチ 178 EORゲート 184 ラッチ 186 ラッチ 190 ラッチ 500 Z″−ビット・フラッグ 502 C″−ビット・フラッグ 504 B″−ビット・フラッグ 506 pV″−ビット・フラッグ 508 nV″−ビット・フラッグ 510 N″−ビット・フラッグ 512 L″−ビット・フラッグ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット・リー・リンク アメリカ合衆国インディアナ州46929,フ ローラ,アールアール ナンバー 1 ボ ックス 117

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 変数が上限と下限との間の範囲内にある
    かどうか判定するデータ処理装置において、該データ処
    理装置に対する1組の演算命令から選択された演算命令
    の実行に応答して変数を生成する算術論理演算装置(2
    0)と、条件コード・フラッグを含むレジスタ(18)
    と、実行された演算命令の状態を表示するよう前記条件
    コード・フラッグをセットするセット手段(20)と、
    前記変数が実行された演算命令の表示された状態に基い
    て範囲外にあるかどうかを判定し、かつ該実行された演
    算命令の表示された状態に基いて前記変数を上限と下限
    の一方にセットする制限手段とを設けてなるデータ処理
    装置。
  2. 【請求項2】 前記セット手段は、演算桁溢れの起生と
    該演算桁溢れの方向とを表示するよう前記条件コード・
    フラッグをセットするためのものであり、前記制限手段
    は、演算桁溢れが正の方向に生じる時または演算桁溢れ
    が生じない時に前記変数を上限に制限し、かつ演算桁溢
    れが負の方向に生じる時または演算桁溢れが生じずかつ
    前記変数が前記下限より小さい時に変数を下限に制限す
    るためのものである請求項1記載のデータ処理装置。
  3. 【請求項3】 符号なし算術演算を行うことにより前記
    算術論理演算装置により生じる変数に対して、前記セッ
    ト手段は符号なし演算桁溢れの起生と符号なし演算桁溢
    れの方向とを表示するよう前記下限時に条件コード・フ
    ラッグをセットするためのものである請求項2記載のデ
    ータ処理装置。
  4. 【請求項4】 前記レジスタが、負の方向における符号
    なし桁溢れの起生を表示する負の符号なし桁溢れフラッ
    グと、正の方向における符号なし桁溢れの起生を表示す
    る正の符号なし桁溢れフラッグとを含む請求項3記載の
    データ処理装置。
  5. 【請求項5】 前記制限手段は、正の方向における符号
    なし演算桁溢れのみを生じる符号なし桁溢れ演算命令の
    実行に応答して符号なし演算桁溢れが生じる時、または
    符号なし演算桁溢れが生じずかつ前記変数が上限より大
    きい時に、変数を上限に制限し、かつ符号なし演算桁溢
    れが負の方向における符号なし演算桁溢れのみを生じる
    符号なし演算命令の実行に応答して符号なし演算桁溢れ
    が生じる時、または符号なし演算桁溢れが生じずかつ前
    記変数が前記下限より小さい時に、変数を下限に制限す
    るためのものである請求項3または4に記載のデータ処
    理装置。
  6. 【請求項6】 符号つき演算桁溢れを実施することによ
    り生じる変数に対して、前記セット手段は、符号つき演
    算桁溢れの起生と符号つき演算桁溢れの方向とを表示す
    るよう前記条件コード・フラッグをセットするためのも
    のである請求項2記載のデータ処理装置。
  7. 【請求項7】 前記レジスタが、符号つき桁溢れの起生
    を表示するための負の符号つき桁溢れフラッグと、正の
    方向における符号つき桁溢れの起生を表示するための正
    の符号つき桁溢れフラッグとを含む請求項6記載のデー
    タ処理装置。
  8. 【請求項8】 前記制限手段が、前記変数の上限への制
    限を行う第1の命令と、前記変数の下限への制限を行う
    第2の命令とを生じる生成手段を含む請求項1乃至7の
    いずれかに記載のデータ処理装置。
  9. 【請求項9】 数学的に一貫した条件コード・アーキテ
    クチャを有するデータ処理装置において、該データ処理
    装置に対する1組の演算命令から選択された命令を実行
    する処理手段(14、16、18)と、前記1組の演算
    命令から選択された命令の実行に応答して算術演算を実
    施する算術論理演算装置(20)と、条件コード・フラ
    ッグを含むレジスタ(18)と、(A)前記算術論理演
    算装置が符号なし算術演算を実施する時に符号なし桁溢
    れの起生と、(B)前記算術論理演算装置が符号つき算
    術演算を実施する時に符号つき桁溢れの起生と該符号つ
    き桁溢れの方向とを表示するよう前記1組の演算命令に
    おける各命令毎に条件コード・フラッグをセットするセ
    ット手段(20)とを設けてなるデータ処理装置。
  10. 【請求項10】 前記データ処理装置に対する1組の演
    算命令が、前記算術論理演算装置における乗算および除
    算を行う演算命令グループから選択された少なくとも1
    つの命令を含む請求項9記載のデータ処理装置。
  11. 【請求項11】 前記データ処理装置に対する前記1組
    の演算命令が、前記算術論理演算装置における符号なし
    加算を行う少なくとも1つの命令と、符号なし減算を行
    う少なくとも1つの命令とを含む請求項9または10に
    記載のデータ処理装置。
  12. 【請求項12】 前記セット手段が、前記算術論理演算
    装置が符号なし算術演算を実施する時、符号なし桁溢れ
    の起生と符号なし桁溢れの方向とを表示するよう前記1
    組の演算命令における各命令毎に条件コード・フラッグ
    をセットするためのものである請求項9乃至11のいず
    れかに記載のデータ処理装置。
  13. 【請求項13】 前記レジスタが、負の方向における符
    号なし桁溢れの起生を表示するための負の符号なし桁溢
    れフラッグと、正の方向における符号なし桁溢れの起生
    を表示するための正の符号なし桁溢れフラッグとを含む
    請求項12記載のデータ処理装置。
  14. 【請求項14】 前記レジスタが、負の方向における符
    号つき桁溢れの起生を表示するための負の符号つき桁溢
    れフラッグと、正の方向における符号つき桁溢れの起生
    を表示するための正の符号つき桁溢れフラッグとを含む
    請求項9乃至13のいずれかに記載のデータ処理装置。
JP5258348A 1992-10-16 1993-10-15 データ処理装置 Pending JPH06202850A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/964,138 US5440702A (en) 1992-10-16 1992-10-16 Data processing system with condition code architecture for executing single instruction range checking and limiting operations
US964138 1992-10-16

Publications (1)

Publication Number Publication Date
JPH06202850A true JPH06202850A (ja) 1994-07-22

Family

ID=25508173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5258348A Pending JPH06202850A (ja) 1992-10-16 1993-10-15 データ処理装置

Country Status (3)

Country Link
US (1) US5440702A (ja)
EP (1) EP0593107A1 (ja)
JP (1) JPH06202850A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905662A (en) * 1996-09-13 1999-05-18 Kabushiki Kaisha Toshiba Digital processing system for binary addition/subtraction

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JP2847688B2 (ja) * 1993-05-27 1999-01-20 松下電器産業株式会社 プログラム変換装置およびプロセッサ
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric Co Ltd プログラム実行方法およびその方法を利用した装置
US5930159A (en) * 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US6292814B1 (en) * 1998-06-26 2001-09-18 Hitachi America, Ltd. Methods and apparatus for implementing a sign function
US6237085B1 (en) * 1998-12-08 2001-05-22 International Business Machines Corporation Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
GB2355085A (en) * 1999-10-05 2001-04-11 Sharp Kk Translating a source operation to a target operation
US6792543B2 (en) 2001-08-01 2004-09-14 Networks Associates Technology, Inc. Virus scanning on thin client devices using programmable assembly language
US7540031B2 (en) * 2001-08-01 2009-05-26 Mcafee, Inc. Wireless architecture with malware scanning component manager and associated API
US7401359B2 (en) * 2001-12-21 2008-07-15 Mcafee, Inc. Generating malware definition data for mobile computing devices
GB0202728D0 (en) * 2002-02-06 2002-03-27 Transitive Technologies Ltd Condition code flag emulation for program code conversion
US7331040B2 (en) * 2002-02-06 2008-02-12 Transitive Limted Condition code flag emulation for program code conversion
US8452945B2 (en) * 2002-09-17 2013-05-28 Hewlett-Packard Development Company, L.P. Indirect indexing instructions
US20060095713A1 (en) * 2004-11-03 2006-05-04 Stexar Corporation Clip-and-pack instruction for processor
TWI444021B (zh) * 2007-09-17 2014-07-01 Htc Corp 解譯串列傳輸訊號之方法
US7962729B2 (en) * 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
JP2010160622A (ja) * 2009-01-07 2010-07-22 Toshiba Corp シミュレータ
US8069339B2 (en) * 2009-05-20 2011-11-29 Via Technologies, Inc. Microprocessor with microinstruction-specifiable non-architectural condition code flag register
US20150227366A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor with granular add immediates capability & methods
US20220197595A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Efficient multiply and accumulate instruction when an operand is equal to or near a power of two

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5941057A (ja) * 1982-09-01 1984-03-07 Toshiba Corp デ−タ比較回路
JPS6136727A (ja) * 1984-07-30 1986-02-21 Canon Inc 露出制御装置
JPS62288936A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd 十進数演算における条件コ−ド生成方式
JPH01311320A (ja) * 1988-06-10 1989-12-15 Nec Corp オーバーフロー補正回路
JPH02249025A (ja) * 1989-03-23 1990-10-04 Matsushita Electric Ind Co Ltd 信号処理プロセッサ
JPH03286225A (ja) * 1990-03-30 1991-12-17 Matsushita Electric Ind Co Ltd 乗算装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5548597Y2 (ja) * 1976-03-17 1980-11-13
JPS5918761Y2 (ja) * 1978-09-12 1984-05-30 日本電気株式会社 Fm受信機のミュ−ティング回路
JPS5723009U (ja) * 1980-07-14 1982-02-05
JPS5754409A (en) * 1980-09-18 1982-03-31 Toshiba Corp Signal interruption circuit
DE3108407A1 (de) * 1981-03-06 1982-09-16 Robert Bosch Gmbh, 7000 Stuttgart "tonaudiometer"
US4589087A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Condition register architecture for a primitive instruction set machine
NL8304442A (nl) * 1983-12-27 1985-07-16 Koninkl Philips Electronics Nv Geintegreerde en programmeerbare processor voor woordsgewijze digitale signaalbewerking.
JPS60142735A (ja) * 1983-12-29 1985-07-27 Matsushita Electric Ind Co Ltd オ−バ−フロ−検出補正回路
JPS61122747A (ja) * 1984-11-14 1986-06-10 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ処理装置
US4722066A (en) * 1985-07-30 1988-01-26 Rca Corporation Digital signal overflow correction apparatus
US4792894A (en) * 1987-03-17 1988-12-20 Unisys Corporation Arithmetic computation modifier based upon data dependent operations for SIMD architectures
US4967346A (en) * 1988-03-14 1990-10-30 Advanced Micro Devices, Inc. Universal microprocessor interface circuit
US5031135A (en) * 1989-05-19 1991-07-09 Hitachi Micro Systems, Inc. Device for multi-precision and block arithmetic support in digital processors
DE3930068A1 (de) * 1989-09-09 1991-03-21 Rheydt Kabelwerk Ag Informationsuebertragungssystem
JPH04160910A (ja) * 1990-10-25 1992-06-04 Pioneer Electron Corp 保護回路

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5941057A (ja) * 1982-09-01 1984-03-07 Toshiba Corp デ−タ比較回路
JPS6136727A (ja) * 1984-07-30 1986-02-21 Canon Inc 露出制御装置
JPS62288936A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd 十進数演算における条件コ−ド生成方式
JPH01311320A (ja) * 1988-06-10 1989-12-15 Nec Corp オーバーフロー補正回路
JPH02249025A (ja) * 1989-03-23 1990-10-04 Matsushita Electric Ind Co Ltd 信号処理プロセッサ
JPH03286225A (ja) * 1990-03-30 1991-12-17 Matsushita Electric Ind Co Ltd 乗算装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905662A (en) * 1996-09-13 1999-05-18 Kabushiki Kaisha Toshiba Digital processing system for binary addition/subtraction

Also Published As

Publication number Publication date
EP0593107A1 (en) 1994-04-20
US5440702A (en) 1995-08-08

Similar Documents

Publication Publication Date Title
JPH06202850A (ja) データ処理装置
US6742012B2 (en) Apparatus and method for performing multiplication operations
US20170139677A1 (en) Multiplication of first and second operands using redundant representation
JP3418460B2 (ja) 倍精度除算回路および方法
JP5307202B2 (ja) 精度制御反復算術論理演算ユニット
JPH05250146A (ja) 整数累乗処理を行なうための回路及び方法
US20060184594A1 (en) Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
US4893267A (en) Method and apparatus for a data processor to support multi-mode, multi-precision integer arithmetic
EP0356996B1 (en) Digital division circuit using N/2-Bit subtractor for N subtractions
US4373182A (en) Indirect address computation circuit
US6499046B1 (en) Saturation detection apparatus and method therefor
US4817048A (en) Divider with quotient digit prediction
US5867413A (en) Fast method of floating-point multiplication and accumulation
US5805489A (en) Digital microprocessor device having variable-delay division hardware
US5317531A (en) Apparatus for reducing the size of an arithmetic and logic unit necessary to practice non-restore division
JPH0479015B2 (ja)
US5386534A (en) Data processing system for generating symmetrical range of addresses of instructing-address-value with the use of inverting sign value
CN110688153A (zh) 一种指令分支执行控制方法及相关设备、指令结构
US5748518A (en) Data processing divider
JPH1091395A (ja) プロセッサ
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
JPH10187416A (ja) 浮動小数点演算装置
US11080054B2 (en) Data processing apparatus and method for generating a status flag using predicate indicators
US7237000B2 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
US6035310A (en) Method and circuit for performing a shift arithmetic right operation