JP3055031B2 - メモリ参照について選択可能整列検査を実行するマイクロプロセツサ - Google Patents

メモリ参照について選択可能整列検査を実行するマイクロプロセツサ

Info

Publication number
JP3055031B2
JP3055031B2 JP2085074A JP8507490A JP3055031B2 JP 3055031 B2 JP3055031 B2 JP 3055031B2 JP 2085074 A JP2085074 A JP 2085074A JP 8507490 A JP8507490 A JP 8507490A JP 3055031 B2 JP3055031 B2 JP 3055031B2
Authority
JP
Japan
Prior art keywords
bit
level
program
memory
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2085074A
Other languages
English (en)
Other versions
JPH02287741A (ja
Inventor
ジヨン・エイチ・クロフオード
アシシユ・ビイ・デイクシツト
Original Assignee
インテル・コーポレーシヨン
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル・コーポレーシヨン filed Critical インテル・コーポレーシヨン
Publication of JPH02287741A publication Critical patent/JPH02287741A/ja
Application granted granted Critical
Publication of JP3055031B2 publication Critical patent/JP3055031B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は半導体マイクロプロセツサの分野に関する。
〔従来の技術及び発明が解決しようとする問題点〕
本発明は、マイクロプロセツサの内部で「モードビツ
ト」により制御される整列検査機能を実行する方式を扱
う。この概念を使用すると、プログラマーは、メモリ参
照が整列されていないアドレスに対するものである場合
に故障(フォルト)が発生されるか否かを選択すること
がきる。本発明の現時点で好ましい実施例は、486TM
ロセツサとしても知られているIntel 80486マイクロプ
ロセツサのアーキテクチヤに組込まれる。486TMマイク
ロプロセツサは、同じように386TMプロセツサと呼ばれ
ているIntelの80386マイクロプロセツサを改良したもの
である。(Intel,80386,386,80486及び486はIntel Corp
orationの商標である。) 80486マイクロプロセツサは、X86シリーズのプロセツ
サの中の1つの型である32ビツト高性能プロセツサであ
る。これは、オブジエクトコードに関し、80386プロセ
ツサと互換性を有する。従つて、80486プロセツサは、
このシリーズの以前のプロセツサ用として開発されたコ
ードを実行することができる。概して、80486マイクロ
プロセツサは、命令1つ当たりの平均クロツク数により
測定したときに性能を少なくとも2.5倍に向上させるこ
とを目的として、80386アーキテクチヤを再実現したも
のである。本発明は、この性能向上を助ける80486マイ
クロプロセツサのそのような1つの特徴を表わす。
上述のように、本発明は、プログラム中のメモリ参照
が整列されていないアドレスに対するものである場合に
故障(フォルト)を発生するか否かを選択することがで
きるという能力を、マイクロプロセツサに付加する。従
来、1つのデータのアドレスは、アドレスがデータの長
さの倍数である場合に、整列していると考えられる。1
バイトのデータは常に整列している。2バイトのデータ
は、そのアドレスが2の倍数であれば、整列している。
4バイトのデータは、そのアドレスが4の倍数であれ
ば、整列している。その他の長さをもつデータの場合も
同様である。従つて、アドレスがデータのサイズの倍数
であるときには、データは一般に整列している。
マイクロプロセツサの内部メモリアーキテクチヤを考
えると、整列メモリ参照の重要性は明白になる。多くの
コンピュータにおいては、メモリは、データサイズがメ
モリの幅と等しくなるように編成されている。32ビツト
により編成されたメモリであれば、4の倍数であるアド
レスを有する32ビツトの項目を、1つのメモリクロツク
サイクルの中でアクセスすることができる。(32ビツト
語は倍長語又はd語と呼ばれる場合が多い−1つのd語
は4つの別個のバイト、たとえば、0,1,2及び3から構
成されている。)80386CPUと、80486CPUは、共に、任意
のアドレスでデータを参照することができる。参照が整
列されていない場合には、マイクロプロセツサは、性能
の上で不利になる。これは、データをアクセスする、す
なわち、参照するために、追加のメモリサイクルを必要
とするという状況となつて現われる。
アドレス3で始まる32ビツトd語をメモリ参照する場
合を考える。従来の方法においては、プロセツサは2つ
のd語を参照する。すなわち、まず、バイト3を取出す
ためにアドレス0で始まるd語を参照し、次に、残るバ
イト4,5及び6を取出すためにアドレス4で始まるd語
を参照することになるであろう。必要なバイトをアクセ
スした後、プロセツサは、何らかの方法によつて、それ
らのバイトを一体に接合して、データ項目、すなわち、
メモリ参照を再編成する。すなわち、従来の方法は、少
なくとも2つの点で、すなわち、(1)少なくとも2つ
の付加メモリサイクルが必要である点と、(2)データ
項目を新たな記憶場所に再構成、すなわち「接合」する
という点で不利である。
この欠点を回避するために、この方法に代わるいくつ
かの方法が試みられている。たとえば、80386におい
て、メモリ参照ごとに、それを進行するインラインコー
ドを挿入することにより、整列検査を実行することがで
きる。このコードはレジスタへアドレスを発生し、次
に、レジスタの下位ビツトをマスキングする。マスキン
グ動作は、同じレジスタコンポーネントを取出し且つ整
列変位を加えることにより、実現される。基本的には、
この方法を使用して各メモリ参照を進行するには、一連
の3つの別個の命令が実行されなければならない。通常
のプログラムでは、それらの命令の半分が何らかの方法
によりメモリを参照するので、これは許容しえないオー
バヘツドを表わす。すなわち、性能は20から30パーセン
トも劣化してしまう。
機械(マシン)の中には、全てのメモリ参照を整列さ
せなければならないものもあり、その中で最も顕著なの
が新しいRISCプロセツサである。このような機械(マシ
ン)は、整列されていないデータへの参照に際して、必
ず故障を起こす。しかしながら、故障は選択可能ではな
いので、常に必ず故障が発生されることになる。非人工
知能環境の多く(特にCOBOL)は整列されていないデー
タを参照する能力から利益を受けているので、これは問
題である。別の種類の機械では、整列されていない参照
が可能であるが、上述のような性能の低下を伴なう。そ
のような機械はIntel 80386,DigitalのVAX及びIBM370を
含む。従つて、この分野で必要とされているのは、上述
のような性能上の不利がなく、任意に整列されていない
アドレスに対し故障を発生する新たな方法である。
以下の説明から明らかであるように、本発明は、ユー
ザーにより選択可能であり且つ追加命令を必要としない
整列検査を実行する手段を提供する。さらに、本発明
は、整列検査手順に関して2つのマスキングレベル、す
なわち、アプリケーションレベルと、オペレーテイング
システムレベルとにおけるマスキンクを支援する。トラ
ツプ又は故障自体をマスクすることが可能であるので、
本発明は、ユーザーに、整列検査を制御する2つの機会
を与えることになる。
従つて、本発明の目的は、偶発的にデータが整列して
いない状態を検出する手段を提供することである。プロ
グラムデバツクのために、データを整列させることは性
能を相当に向上させる。
本発明の別の目的は、ポインタの種類を識別するため
に下位のアドレスビツトを使用し、続いて、整列アドレ
スを得るためにそれらのタグビツトを「調整する」よう
に小さな変位を使用するある種の人工知能(AI)プログ
ラムにおいて、整列故障(整列フォルト)を発生する手
段を提供することである。本発明は、性能の大きな低下
を伴なわずに、ポインタの型の検査を実行する。実験測
定によれば、本発明は、80386マイクロプロセツサで実
行される平均的なAIプログラムについて、30パーセント
の性能向上を実現することがわかつている。別の研究で
は、他の機械において20パーセントの向上が示されてい
る。
〔問題点を解決するための手段〕
整列していないデータの参照を検出する手段を含むマ
イクロプロセツサを説明する。検出手段は、それがイネ
ーブルされ且つ整列していないデータオブジエクトに対
して参照が実行されたときに、現在プログラムの実行を
中断する故障が発生されるように、選択可能である。検
出手段は、ここで説明するマイクロプロセツサのセグメ
ンテーシヨン装置の一部である。好ましい実施例におい
ては、マイクロプロセツサは、様々な特権レベルである
いくつかのデータオブジエクトに対するアクセスを許可
する保護メカニズムをさらに有する。
検出手段は、マイクロプロセツサ内に記憶されている
2つのモードビツトを含む。第1のモードビツトは、最
下位の特権をもつ実行レベル(すなわち、アプリケーシ
ヨンレベル)で故障のマスキングを実行し、第2のモー
ドビツトは、最上位の特権レベル(すなわち、オペレー
テイングシステムレベル)で故障のマスキングを実行す
る。従つて、モードビツト、すなわち、マスクビツトに
対するアクセスは2つの異なるレベルで行われることに
なる。2つのモードビツトは、検出手段をイネーブルさ
せるべきときには、共に、「1」にセツトされなければ
ならない。整列検査を任意にイネーブルするために2つ
の別個のモードビツトを使用することにより、プログラ
ミングに関して最良の融通性が得られる。
〔実施例〕
本発明は、以下に挙げる本発明の好ましい実施例の詳
細な説明及び添付の図面から、さらに十分に理解される
であろう。ただし、好ましい実施例の説明と、それを示
す図面は、本発明を特定の実施例に限定するものと解釈
されてはならず、単に説明と理解を助けるために提示さ
れるにすぎない。
整列していないメモリ参照が検出されるたびに、故障
を発生すべきか否かを選択する手段を含むマイクロプロ
セツサを説明する。以下の説明中、本発明を完全に理解
させるために、特定のビツト長さ、レジスタ内容、論理
図などの多数の事項を特定して詳細に挙げるが、本発明
を実施する際に、そのような特定の詳細な事項を採用す
る必要はないことは、当業者には自明であろう。また、
本発明を無用にわかりにくくするのを避けるため、周知
の構造や回路を詳細に示さない場合もある。
詳細な実施例を説明する前に、まず、80486マイクロ
プロセツサのいくつかのアーキテクチヤ上の特徴を考え
てみることは、本発明を理解するためには有益である。
基本マイクロプロセツサのアーキテクチヤ コンピュータが我々の社会で果たす役割がますます重
要になるにつれて、保護仮想アドレスモード(保護モー
ド)を実現するマイクロプロセツサは多くなつている。
80486マイクロプロセツサに組込まれた保護モードによ
れば、複数のアプリケーシヨンを同時に実行することが
できるが、1つのアプリケーシヨンにおける故障が他の
アプリケーシヨンに影響を及ぼさないように、アプリケ
ーシヨンを互いに隔離している。保護メカニズムの中心
を成す特徴はセレクタである。プログラムは、システム
のいずれかの部分を直接アクセスするのではなく、1つ
のシステムオブジエクトに対するアクセスを許可するセ
レクタを扱う。各オブジエクトに対し、それと関連する
情報、たとえば、そのオブジエクトの場所、サイズ、使
用制限などに関する情報が存在している。80486マイク
ロプロセツサにおいては、記述子と呼ばれるセレクタに
より参照されたデータを、オペレーテイングシステムの
みがアクセスする。
記述子はシステムオブジエクトを詳細に記述する。メ
モリセグメントはシステムオブジエクトの一種である。
その他のシステムオブジエクトとしては、保護メカニズ
ムを支援する表、プロセツサ状態を記憶する特殊セグメ
ントなどがある。ハードウエアは、セレクタを検査する
ことにより、そのセレクタがどの記述子と関連している
かを判定し、記述子が指示しているオブジエクトを判定
する。記述子が指示する項目の1つは、オブジエクトの
特権レベルである。プログラムがセレクタによつてオブ
ジエクトに対するアクセスを要求したとき、アクセスは
否定される(要求が保護メカニズムの規則に違反してい
る場合には、制御は、そのプログラムから、オペレーテ
イングシステム中の指定ルーチンへ移行する)か、アク
セスは認められはするが許可されない(たとえば、オブ
ジエクトが、現在、メモリにない場合には、オペレーテ
イングシステムのルーチンはオブジエクトをメモリ内へ
スワツプし、制御をプログラムに戻す)か、要求された
特権レベルでアクセスが許可される。
80486プロセツサは、第1図に示すように3,2,1,0と番
号付けされた、徐々に大きくなる4つの特権レベルを支
援する。特権レベル0は最上位の特権レベルである。コ
ードセグメント(cs)レジスタにおけるセレクタの特権
レベルは現在実行中のルーチンの優先度を識別するもの
で、現在特権レベル(CPL)と呼ばれる。信頼性を保つ
ため、オペレーテイングシステムの最も信頼しうるコー
ドのみが最上位特権レベル(CPL=0)でランする。故
障を生じるおそれのあるアプリケーシヨンは最下位レベ
ル(CPL=3)でランされる。第1図では、様々な特権
レベルを一連の同心リングとして示している。(特権と
いう用語は、通常では許可されない権利又は利益を示唆
する。80486マイクロプロセツサにおいては、最も内側
のリンクでランする手順は外側のリングにあるデータオ
ブジエクトをアクセスすることができるが、外側のリン
クの手順はより大きな特権をもつ内側のリングのオブジ
エクトをアクセスできない。) 以下にさらに詳細に説明するが、本発明では、整列検
査機能をアプリケーシヨンレベル(たとえば、CPL=
3)と、オペレーテイングシステムレベル(たとえば、
CPL=0)の双方でマスキングすることができる。この
ように、2つの異なる特権レベルでマスキングを選択可
能であるため、本発明は、整列していないデータの参照
時に常にトラツプするか、全くトラツプしないかのいず
れかである機械とも互換性をもつている。1例を挙げれ
ば、オペレーテイングシステムレベルで、整列検査機能
をリセツト時にデイスエーブルすることにより、それに
80386マイクロプロセツサとの互換性を与えても良い。
C又はPascalのようなある種のプログラミング言語に
おいては、コンパイル時にデータの型が宣言されたと
き、セレクタにはそのデータの型が永久的にタグ付けさ
れる。言いかえれば、プログラムの実行中に、データの
型は変化しない。しかしながら、LISP又はPrologなどの
いくつかのAI言語では、ラン/時間の型の割当てにさら
に融通性が盛り込まれている。そのような言語の場合に
は、プログラムの実行につれて、データの型は変化する
可能性がある。そのため、ユーザーは、複数の型に作用
する関数(たとえば、Xを整数,短精度実数,長精度実
数,複素数などとしたときの を規定することができる。従つて、プログラム中の特定
の1点におけるデータの型に応じて、複数の機能を実行
できる。
LISPプログラム又はPrologプログラムにおいては、ポ
インタフイールドはアドレスと、データの型の双方を指
示する。データの型を識別する項目はタグと呼ばれる。
プログラマーは、32ビツトポインタの最下位2ビツトを
最上位タグビツトとして使用する。データの型がある1
つの型でなければならないか又は演算が無効である場
合、あるいは、プログラマーがデータの型を圧倒的に多
い頻度である1つの型であると予期する場合には、ユー
ザーは、タグが所与の値であると仮定するコードを発生
することができる。このコードは下位タグビツトを取消
す。たとえば、タグが2の値を有するならば、コード
は、タグビツトを相殺するために、−2の値を加算する
と考えられる。このオフセツト又は取消しは変位として
も知られている。変位が正しければ、メモリ項目は整列
しており、故障又はトラツプを受けずにデータを参照す
ることができる。
本発明を使用してAIプログラムを実行する場合、変位
がタグと整合している限り、メモリ参照は整列してい
る。しかしながら、変位がタグと整合しない場合には、
本発明の整列検査装置は、任意に、トラツプ又は故障を
発生する。これが起こると、現在実行場所(CS:EIP)
と、フラグレジスタの内容(EFLAGS)とはスタツクにセ
ーブされ、制御は、割込みハンドラとして知られるソフ
トウエアルーチンへ移行する。それぞれの故障条件と関
連する1つの特定の割込み番号がある。スタツクにセー
ブされた命令ポインタは、故障が起こつた後、その故障
の原因となつた命令を指示する。そこで、オペレーテイ
ングシステムはその条件を修正することができ、プログ
ラムの実行を再開することができる。
マイクロプロセツサの全体ブロツク線図 第4図に関して説明する。第4図には、以上説明した
整列検査機能を組込んだ本発明によるマイクロプロセツ
サが全体ブロツク線図の形で示されている。マイクロプ
ロセツサは、32ビツト外部データバス30に結合されると
共に、アドレスバス31及びいくつかの別の制御線にさら
に結合されているバスインタフエース装置10を含む。バ
スインタフエース装置10が扱うのは物理(ハードウエ
ア)アドレスのみであるので、オペランドアドレスは、
まず、セグメンテーシヨン装置14と、ページング装置13
とを通過しなければならない。また、バスインタフエー
ス装置10には、キヤツシユ装置12と、先取り装置11も結
合されている。先取り装置は、次の命令アドレスのメモ
リの内容を取出すために、絶えずバスインタフエース装
置に対し間合せしている。先取り装置は、データを受信
すると、直ちにそのデータを待ち行列の中に挿入し、待
ち行列が一杯でなければ、さらに別の32ビツトのメモリ
内容を要求する。
キヤツシユ装置12は、データキヤツシユと、キヤツシ
ユメモリのアクセツシングを制御するコントローラとを
含む。先取り装置11と、キヤツシユ装置12とは、共に、
32ビツトバスを介してセグメンテーシヨン装置14に結合
されている。セグメンテーシヨン装置14は区分化アドレ
ス(セグメント化されたアドレス)を線形アドレスに変
換する。
セグメンテーシヨン装置14は、「LA(すなわち、Line
ar Address(線形アドレス))バス」とも呼ばれる32ビ
ツト線形アドレスバス20を介して、ページング装置13
と、キヤツシユ装置12とに結合されている。ページング
装置13は、セグメンテーシヨン装置14により発生された
線形アドレスを取出し、それらを物理アドレスに変換す
る。ページングがデイスエーブルされた場合には、セグ
メンテーシヨン装置の線形アドレスが物理アドレスにな
る。ページングがイネーブルされると、80486マイクロ
プロセツサの線形アドレスはページと呼ばれる複数の40
96バイトブロツクに分割される。それぞれのページを全
く異なるアドレスにマツピングすることができる。本発
明を理解するために、便宜上、セグメンテーシヨン装置
14は市販のIntel 80386マイクロプロセツサに使用され
ているのと同じ装置であると仮定しても良い。Intel 80
386マイクロプロセツサのセグメンテーシヨン装置及び
ページング装置は、1985年6月13日に出願された同時係
属出願−出願番号744,389,名称「Memory Management fo
r Microprocessor」,譲受人は本発明と同じである−に
説明されている。
マイクロプロセツサ内で、命令は命令デコーダ装置15
に結合される。デコーダ装置は先取り装置と同じように
動作し、先取り待ち行列から個々のバイトを取出して、
次の命令を完了するために必要なバイトの数を決定す
る。デコーダ装置は制御装置19と共に動作するが、制御
装置19は、マイクロコード命令を記憶しており、マイク
ロプロセツサに対して複数の制御信号シーケンスを供給
する。命令デコーダ装置15は制御装置19に結合されるも
のとして示され、その制御装置19はセグメンテーシヨン
装置14と、データ装置18と、浮動小数点装置17とに結合
されるものとして示されている。データ装置18は、Inte
l 80386プロセツサにより実行されるALU機能と同様にし
てALU機能を実行する演算論理装置(ALU)である。
マイクロプロセツサは、浮動小数点演算を実行する浮
動小数点装置17をさらに含む。浮動小数点装置17並びに
マイクロプロセツサのその他の装置の厳密な構成は、本
発明を理解する上で重要ではない。以下、本発明を理解
するために必要である場合に限り、マイクロプロセツサ
の様々な装置の間の信号の流れを説明する。
好ましい実施例の説明 本発明の選択可能整列検査装置は、外部からは、プロ
グラマーには2つの新状態(モード)ビツトとして現わ
れているように見える。一方のビツトはEFLAGASレジス
タ内に位置し、AC(整列検査)ビツトと呼ばれる。EFLA
GSレジスタは現在命令流れに関する状態情報を保持する
(EIPジスタは現在実行中の命令のアドレスを記憶して
いる)と共に、異なる様々な命令に関連するいくつかの
フイールドを保持する。AM(整列マスキング)ビツトと
呼ばれる他方のビツトは、制御レジスタCRO内に位置し
ている。
次に、第2図を参照して、EFLAGSレジスタの詳細を説
明する。(尚、フラグビツト1,3,5,15及び19から31は
「不定」である。)ACビツトはビツト位置18に位置して
いる。ACビツトは、メモリ参照が整列していないアドレ
スである場合に、故障の発生をイネーブルする。たとえ
ば、これは、奇数アドレスに対する語アクセス、又はO
MOD4ではないアドレスに対するd語アクセス、又はO MO
D8ではないアドレスに対する8バイト参照により引起こ
されると考えることができる。整列の故障はレベル3で
のみ発生される。すなわち、レベル0,1及び2では、AC
ビツトの設定は無視される(暗示的に0)。記述子表に
対する(セレクタロードに関する)参照は、記述子表を
「出現させている」命令がレベル3で実行されている場
合でも、暗示的にレベル0の参照である。好ましい実施
例では、整列の故障は、誤りコード0を伴なつて、割込
みビツト17を介して報告される。(ビツト17は、1に設
定されたとき、現在実行中の命令流れがX86コードであ
ることを示す仮想モード(VM)ビツトである。) 以下の表は、マイクロプロセツサの様々なデータの型
について要求される整列を示したものである。
整列検査機能はタスクごとに別個にイネーブルされな
ければならないので、各タスクが独自の「EFLAGS」の
「コピー」を有していることから、この機能はEFLAGSレ
ジスタに含まれている。
次に第3図に関して説明する。第3図には、整列マス
ク制御ビツト(AM)を記憶する制御レジスタ(CRO)が
示されている。制御レジスタCROは、マイクロプロセツ
サのページング及び数値コプロセツサ動作を調整するい
くつかの制御レジスタの中の1つである。第3図に示す
ように、整列マスク制御ビツトはCROのビツト位置18に
ある。AMビツトは、EFLAGSにおけるACビツトが整列故障
を許容できるか否かを制御する。AM=0のとき、検査は
デイスエーブルされる(たとえば、80386マイクロプロ
セツサの互換性)が、AM=1のときには検査はイネーブ
ルされる。AMビツトは、特権レベル0でだけ、おそらく
はオペレーテイングシステムによつてのみアクセス可能
である。オペレーテイングシステムは、それが適切な割
込みハンドラを含んでいる場合に限り、整列故障をイネ
ーブルするために、このビツトを1に設定する。
整列検査をイネーブルするために2つのビツトを使用
することにより、大きな融通性が得られる。AMビツト
は、全てのタスクに対して大域的(グローバル)である
レジスタCROの中に位置しているので、大域的(グロー
バル)にオペレーテイングシステムを制御し、オペレー
テイングシステムによつてのみ参照可能である。オペレ
ーテイングシステムが適切な割込みハンドラ(たとえ
ば、CROのビツト17)を含んでいるならば、AMビツト
は、通常、オペレーテイングシステムが初期設定される
ときにセツトされる。
ACビツトはアプリケーシヨンレベルの制御を実行す
る。このビツトは、タスクスイツチでスワツプされ且つ
レベル3で実行中のアプリケーシヨンによりアクセス可
能であるEFAGSレジスタにある。EFLAGSはタスクスイツ
チにおいてスワツプされるので、各タスクが専用のEFLA
GSのコピーを有するかのように、従つて、独自の整列検
査器のコピーを有するかのように見える。通常、AIプロ
グラムはレベル3、すなわち、アプリケーシヨンレベル
でのみ整列検査を実行させれば良い。2つのマスクビツ
トに対するアクセスを可能にすることにより、プログラ
マーは、整列検査が実行されるか否かを選択するための
2つの機会、すなわち、アプリケーシヨンレベルにおけ
る機会(EFLAGSレジスタをプログラムによりクリア又は
セツトすることができる)と、オペレーテイングシステ
ムレベルにおける機会(AMビツトがクリア又はセツトさ
れる)とを有することになる。尚、2つのビツトは共に
全てのレベルでマスキングを実行する。しかしながら、
ACはレベル3以外の全てのレベルで暗示的にマスクされ
るが、AMビツトはレベル0でセツト/リセツト(すなわ
ち、制御)可能となるだけである。
本発明の整列検査器は、整列していないデータへのア
クセスを認識することを中心として実現されている。こ
れは、32ビツト線形アドレスバス20(第4図を参照)の
下位3ビツトと、バスサイクルの長さとを使用して、命
令デコーダ装置15又は制御装置19による命令に従つて実
行される。整列していないデータの参照による故障は、
線形アドレスも発生するセグメンテーシヨン装置14の中
で発生される。故障は制御装置19によりサービスされ
る。
以下の表は、異なる長さのバスサイクルについて、整
列していないデータのアクセスをLAバス20の下位3ビツ
トの値との関係で規定したものである。バスサイクルの
長さは、命令デコーダ装置15又は制御装置19からの「バ
ス要求型」フイールドを復号することにより決定され
る。
整列していないアクセスが起こつたことが判定されて
しまえば、故障を発生するために必要な他の条件を判定
するのは比較的簡単である。第5図に関連して説明する
と、第5図には、整列検査論理回路の回路図が示されて
いる。論理ゲート40〜44と、ラツチ41及び45とは、セグ
メンテーシヨン装置14がLAバス20を駆動しており且つバ
スサイクルは打切りとならないことを確実に保証するた
めに、セグメンテーシヨン装置14から受信した信号を復
号する目的で使用される。LAバス20の最下位の3ビツト
は信号線51〜53に現われる。それらの信号は、命令デコ
ーダ装置15又は制御装置19からのバス要求型フイールド
信号と、ゲート46及び69の入力端子において組合され
る。概して、ゲート46,48,49及び67〜72は組合されて、
第2表に従つて整列していない参照のバイト長さを示す
一連の信号を発生する。たとえば、ゲート46は、2バイ
トの整列していない参照を意味する信号を信号線80に発
生し;ゲート67は、4バイトの整列していない参照を意
味する信号を信号線81に発生し;ゲート71は、8バイト
の整列していない参照を意味する信号を信号線82に発生
し;ゲート49は、4NDの整列していない参照を意味する
信号を信号線83に発生す9。信号線80〜83のそれぞれの
信号はケート47によりORされ、その結果はラツチ50に蓄
積される。(第5図のラツチと関連する記号P1及びP2
は、それぞれのラツチがクロツクされる位相を示す。た
とえば、ラツチ41及び59がシステムクロツクの位相2で
クロツクされるのに対し、ラツチ45,50及び62は次のク
ロツクパルスの位相1でクロツクされる。) 信号線54及び55に現われるAMビツトとACビツトは、AN
Dゲート57に入力される。整列していなときの故障を発
生するためには、それらのビツトは共に「1」でなけれ
ばならない。ゲート57の出力は、信号線56に供給される
プログラムの特権レベルと共に、ラツチ45及び50の出力
とゲート63においてANDされる。現時点で好ましい実施
例における特権レベルは、制御装置19のCPLビツトによ
る決定に従つて、レベル3でなければならない。ゲート
58〜62は、バスサイクルの型がAC違反を許容する型であ
ることを確実に保証するために、ANDゲート63にさらに
入力を供給する。(あるサイクルでは、AC違反が許容さ
れない。たとえば、分岐サイクルは、定義上、1バイト
のサイクルであるので、分岐サイクルではAC違反は許さ
れない。) ゲート63の出力はANDゲート65の一方の入力端子に結
合される。ゲート65に対する他方の入力は、故障信号が
発生される前にマイクロプロセツサのパイブラインが解
放されていることを示す信号を供給する信号線66から得
られる。要するに、ACビツトとAMビツトとのAND演算に
加えて、第5図の論理は、いずれのシステムセグメント
に対してもアクセスが実行されていないこと及び適正な
バスサイクルが実行されていることを確実に保証するよ
うに設計されている。ANDゲート65は、SINTR(セグメン
テーシヨン装置割込み)と呼ばれる信号を信号線67に発
生する。この信号は、上記の条件の全てに適合したと
き、必ず制御装置19に結合される。
制御装置は、SINTRを受信すると、直ちに全ての実行
を停止させ、この整列検査故障をサービスするために措
置を構じる。制御装置は2つのノー・オペレーシヨン
(NOP)フロツクを挿入し、次に、整列検査故障に関す
る入口点にマイクロコードを押入れる。その後、マイク
ロコードは、戻りアドレスを記憶し且つユーザープログ
ラムに故障を報知するために必要であることの全ての実
行を引継ぐ。
以上、選択可能な整列検査を実行するマイクロプロセ
ツサを開示した。
【図面の簡単な説明】
第1図は、本発明によるマイクロプロセツサにより提供
される4つの特権レベルを、最も保護性の高いレベルを
レベル0として、また、最も保護性の低いレベルをレベ
ル3として示す図、第2図は、本発明によるマイクロプ
ロセツサの内部に配置され、特権レベル3における整列
していないデータへのアクセス時の故障を支援するため
の、上位16ビツト中に規定された余分のビツト(ACビツ
ト)を有するEFLAGSレジスタを示す図、第3図は、EFLA
GS中のACビツトが整列故障を許容できるか否かを制御す
る整列マスキンクビツト(AM)を蓄積する機械状態制御
レジスタ(CRO)を示す図、第4図は、本発明のマイク
ロプロセツサの全体ブロツク線図、第5図は、本発明の
現時点で好ましい実施例において整列検査がどのように
して論理的に実現されるかを示す図である。 10……バスインターフエース装置、11……先取り装置、
12……キヤツシユ装置、13……ページング装置、14……
セグメンテーシヨン装置、15……命令デコーダ装置、17
……浮動小数点装置、18……データ装置、19……制御装
置、20………32ビツト線形アドレスバス、30……32ビツ
ト外部データバス、31……アドレスバス。
フロントページの続き (56)参考文献 特開 昭54−129934(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/14

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータシステムのオペレーションを
    制御するオペレーティングシステムを備え、 最上位特権レベルから最下位特権レベルまでの複数の特
    権レベルを有する保護メカニズムに従ってプログラムを
    実行するプロセシングユニットを備え、前記コンピュー
    タシステム内での前記プログラムの優先度を特定する現
    在特権レベルで前記プログラムは実行され、 前記プロセシングユニットに結合されてデータを記憶す
    るメモリ手段を備え、 前記メモリ手段において前記プログラムにより定められ
    るアドレスに記憶されているデータを参照する参照手段
    を備え、この参照手段は前記プロセシングユニットによ
    って制御され、 前記プログラムによって定められるメモリ参照が不整列
    のアドレスに向けられているときにおける整列フォルト
    の発生を制御する手段であって、最下位特権レベルから
    アクセスできて整列フォルトの発生を選択的に可能とす
    る第1ビットと、最上位特権レベルのみからアクセスで
    きてグローバルな整列フォルトの発生を選択的に可能と
    する第2ビットとを含んでいる、整列フォルトの発生を
    制御する手段を備える ことを特徴とするコンピュータシステム。
  2. 【請求項2】オペレーションレベルからアプリケーショ
    ンレベルまでの特権レベルの階層を含んでいて、オブジ
    ェクトへの選択的なアクセスを許可する保護レベルに従
    ってプログラムを実行する制御ユニットを備え、前記コ
    ンピュータシステム内での前記プログラムの優先度を特
    定する現在特権レベルで前記プログラムは実行され、 前記制御ユニットに結合されてデータを記憶するメモリ
    手段を備え、 前記メモリ手段において前記プログラムにより定められ
    るアドレスに記憶されているデータを参照する参照手段
    を備え、この参照手段は前記制御手段に結合されてお
    り、 前記制御ユニットに結合されていて、セグメント化され
    たアドレスを線形アドレスに変換するセグメンテーショ
    ンユニットを備え、このセグメンテーションユニットに
    は、不整列のデータに対する参照を検出する手段が含ま
    れており、 不整列のデータに対する参照が検出されたときに、整列
    フォルトの発生を制御する手段であって、アプリケーシ
    ョンレベルからアクセスできて整列フォルトの発生を選
    択的に可能とする第1ビットと、オペレーションレベル
    のみからアクセスできてグローバルな整列フォルトの発
    生を選択的に可能とする第2ビットとを含んでいる、整
    列フォルトの発生を制御する手段を備える ことを特徴とするコンピュータシステム。
  3. 【請求項3】命令を実行する特権レベルとしてレベル0
    〜レベル3を有しているマイクロプロセッサ装置であっ
    て、メモリ要求を発生するメモリ要求発生システムを含
    んでおり、このメモリ要求発生システムはメモリ要求に
    ついての整列検査も行うものであり、 特権レベル3で実行されている命令によって書き込み得
    るフラグレジスタを備え、前記フラグレジスタには、整
    列フォルトの発生を可能とする整列検査ビットが含まれ
    ており、 特権レベル0で実行されている命令によって書き込み得
    るが、特権レベル3で実行されている命令によっては書
    き込み得ない制御レジスタを備え、前記制御レジスタに
    は、マスキングビットが含まれ、 前記フラグレジスタおよび前記制御レジスタの双方の内
    容を受けるよう結合されていて、前記フラグレジスタお
    よび前記制御レジスタの双方がセットされているときに
    のみイネーブル信号を生じる論理回路を備え、このイネ
    ーブル信号は前記メモリ要求発生システムに結合され
    て、整列していないメモリ要求が発生され且つ前記イネ
    ーブル信号が生じた場合において整列フォルトが発生さ
    れるよう構成されている ことを特徴とするマイクロプロセッサ装置。
JP2085074A 1989-04-05 1990-04-02 メモリ参照について選択可能整列検査を実行するマイクロプロセツサ Expired - Lifetime JP3055031B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US33407489A 1989-04-05 1989-04-05
US334.074 1989-04-05

Publications (2)

Publication Number Publication Date
JPH02287741A JPH02287741A (ja) 1990-11-27
JP3055031B2 true JP3055031B2 (ja) 2000-06-19

Family

ID=23305466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2085074A Expired - Lifetime JP3055031B2 (ja) 1989-04-05 1990-04-02 メモリ参照について選択可能整列検査を実行するマイクロプロセツサ

Country Status (6)

Country Link
JP (1) JP3055031B2 (ja)
DE (1) DE4010733C2 (ja)
FR (1) FR2645664B1 (ja)
GB (1) GB2230118B (ja)
HK (1) HK107393A (ja)
SG (1) SG55493G (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9716240D0 (en) * 1997-07-31 1997-10-08 Tricorder Technology Plc Scanning apparatus and methods
US6772372B2 (en) * 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
GB2482710A (en) * 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data

Also Published As

Publication number Publication date
SG55493G (en) 1993-08-06
FR2645664A1 (fr) 1990-10-12
HK107393A (en) 1993-10-22
GB2230118A (en) 1990-10-10
GB2230118B (en) 1992-12-23
JPH02287741A (ja) 1990-11-27
GB9003354D0 (en) 1990-04-11
FR2645664B1 (fr) 1993-12-17
DE4010733C2 (de) 1995-08-31
DE4010733A1 (de) 1990-10-11

Similar Documents

Publication Publication Date Title
US5201043A (en) System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US9524163B2 (en) Computer processor employing hardware-based pointer processing
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US6295600B1 (en) Thread switch on blocked load or store using instruction thread field
US5659679A (en) Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
JP6095682B2 (ja) プログラム・イベント記録イベントのランタイム計装イベントへの変換
US10747536B2 (en) Program loop control
US6631460B1 (en) Advanced load address table entry invalidation based on register address wraparound
US5838897A (en) Debugging a processor using data output during idle bus cycles
KR100190252B1 (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
US5148528A (en) Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US7962729B2 (en) Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
JPS63193230A (ja) 高性能マイクロプロセッサ集積回路とメモリ参照を行なう方法
US10768938B2 (en) Branch instruction
US20130246769A1 (en) Run-time instrumentation monitoring for processor characteristic changes
KR20080028827A (ko) 마이크로프로세서에서 복수의 인스트럭션 스트림/복수의데이터 스트림 확장을 인에이블링하는 방법, 시스템 및기계-판독 가능한 기록 매체
US20070118696A1 (en) Register tracking for speculative prefetching
NL2030804B1 (en) Flexible return and event delivery
JP3055031B2 (ja) メモリ参照について選択可能整列検査を実行するマイクロプロセツサ
US5742755A (en) Error-handling circuit and method for memory address alignment double fault
Ryan Intel's 80960: An architecture optimized for embedded control
JP4978914B2 (ja) マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
US20230281016A1 (en) Software-controlled flag to require a stack switch during execution
US20230315444A1 (en) Synchronous microthreading

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 10

EXPY Cancellation because of completion of term