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

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

Info

Publication number
JPH02287741A
JPH02287741A JP8507490A JP8507490A JPH02287741A JP H02287741 A JPH02287741 A JP H02287741A JP 8507490 A JP8507490 A JP 8507490A JP 8507490 A JP8507490 A JP 8507490A JP H02287741 A JPH02287741 A JP H02287741A
Authority
JP
Japan
Prior art keywords
data
microprocessor
address
bit
program
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.)
Granted
Application number
JP8507490A
Other languages
English (en)
Other versions
JP3055031B2 (ja
Inventor
J H Crawford
ジヨン・エイチ・クロフオード
Ashish B Dixit
アシシユ・ビイ・デイクシツト
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は半導体マイクロプロセッサの分野に関する。
〔従来の技術及び発明が解決しようとする問題点〕
本発明は、マイクロプロセッサの内部で「モードビット
」によ多制御される整列検査機能を実行する方式を扱う
。この概念を使用すると、プログラマ−は、メモリ参照
が整列されていないアドレスに対するものである場合に
故障が発生されるか否かを選択することがきる。本発明
の現時点で好tLい実施例は、486 TMプロセッサ
としても知られているIntel 80486マイクロ
プロセツサのアーキテクチャに組込まれる。486  
マイクロプロセッサは、同じように386  プロセッ
サと呼ばれているIntelの80386マイクロプロ
セツサを改良したものである。(Intel +803
86.386.80486及び486はIntelCo
rporationの商標である。)80486マイク
ロプロセツサは、X86シリーズのプロセッサの中の1
つの型である32ビツト高性能プロセツサである。これ
は、オブジェクトコードに関し、80386プロセツサ
と互換性ヲ有する。従って、80486プロセツサは、
このシリーズの以前のプロセッサ用として開発されたコ
ドを実行することができる。概して、80486マイク
ロプロセツサは、命令1つ当1)の平均クロック数によ
シ測定したときに性能を少なくとも2.5倍に向上させ
ることを目的として、80386アキテクチヤを再実現
したものである。本発明は、この性能向上を助ける80
486マイクロプロセツサのそのような1つの特徴を表
わす。
上述のように、本発明は、プログラム中のメモリ参照が
整列されていないアドレスに対するものである場合に故
障を発生するか否かを選択することができるという能力
を、マイクロプロセッサに付加スる。従来、1つのデー
タのアドレスは、アドレスがデータの長さの倍数である
場合に、整列していると考えられる。1バイトのデータ
は常に整列している。2バイトのデータは、そのアドレ
スが2の倍数であれば、整列している。4バイトのデー
タは、そのアドレスが4の倍数であれば、整列している
。その他の長さをもつデータの場合も同様である。従っ
て、アドレスがデータのサイズの倍数であるときには、
データは一般に整列している。
マイクロプロセッサの内部メモリアーキテクチャを考え
ると、整列メモリ参照の重要性は明白になる。多くのコ
ンピュータにおいては、メモIJ ハ、データサイズが
メモリの幅と等しくなるように編成されている。32ビ
ツトにより編成されたメモリであれば、40倍数である
アドレスを有する32ビツトの項目を、1つのメモリク
ロックサイクルの中でアクセスすることができる。(3
2ビツト語は倍長語又はd語と呼ばれる場合が多い−1
つのd語は4つの別個のバイト、たとえば、0゜1.2
及び3から構成されている。)80386CPUと、8
0486 CPUは、共に、任意のアドレスでデータを
参照することができる。参照が整列されていない場合に
は、マイクロプロセッサは、性能の上で不利になる。こ
れは、データをアクセスする、すなわち、参照するため
に、追加のメモリサイクルを必要とするという状況とな
って現われる。
アドレス3で始まる32ビツトd語をメモリ参照する場
合を考える。従来の方法においては、プロセッサは2つ
のd語を参照する。すなわち、まず、バイト3を取出す
ためにアドレス0で始まるd語を参照し、次に、残るバ
イト4.5及び6を取出すためにアドレス4で始まるd
語を参照することになるであろう。必要なバイトをアク
セスした後、プロセッサは、何らかの方法によって、そ
れらのバイトを一体に接合して、データ項目、すなわち
、メモリ参照を再構成する。すなわち、従来の方法は、
少なくとも2つの点で、すなわち、(1)少なくとも2
つの付加メモリサイクルが必要である点と、(2)デー
タ項目を新たな記憶場所に再構成、す力わち「接合」す
るという点で不利である。
この欠点を回避するために、この方法に代わるいくつか
の方法が試みられている。たとえば、80386におい
ては、メモリ参照ごとに、それを進行するインラインコ
ードを挿入することによシ、整列検査を実行することが
できる。このコードはレジスタへアドレスを発生し、次
に、レジスタの下位ビットをマスキングする。マスキン
グ動作は、同じレジスタコンポーネントを取出し且つ整
列変位を加えることによシ、実現される。基本的には、
この方法を使用して各メモリ参照を進行するには、一連
の3つの別個の命令が実行されなければならない。通常
のプログラムでは、それらの命令の半分が何らかの方法
によシメモリを参照するので、これは許容しえないオー
バヘッドを表わす。すなわち、性能は20から30パー
セントも劣化してしまう。
機械の中には、全てのメモリ参照を整列させなければな
らないものもあシ、その中で最も顕著なのが新しいRI
 SCプロセッサである。このような機械は、整列され
ていないデータへの参照に際して、必ず故障を起こす。
しかしながら、故障は選択可能ではないので、常に必ず
故障が発生されることになる。非人工知能環境の多く(
特にC0BOL)は整列されていないデータを参照する
能力から利益を受けているので、これは問題である。
別の種類の機械では、整列されていない参照が可能であ
るが、上述のような性能の低下を伴なう。
そのような機械はIntel 80386 、Digi
talの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は最上位の特権レベル
である。コードセグメント(C8)レジスタにおけるセ
レクタの特権レベルは現在実行中のルーチンの優先を識
別するもので、現在特権レベル(CVL)  と呼ばれ
る。信頼性を保つため、オペレーティングシステムの最
も信頼しうるコードのみが最上位特権レベル(CPL=
0)でランする。故障を生じるおそれのあるアプリケー
ションは最下位レベル(CPL=3) でランされる。
第1図では、様々な特権レベルを一連の同心リングとし
て示している。(4!権という用語は、通常では許可さ
れない権利又は利益を示唆する。
80486マイクロプロセツサにおいては、最も内側の
リングでランする手順は外側のリングにあるデータオブ
ジェクトをアクセスすることができるが、外側のリング
の手順はよシ大きな特権をもつ内側のリングのオブジェ
クトをアクセスできない。)以下にさらに詳細に説明す
るが、本発明では、整列検査機能をアプリケーションレ
ベル(たとえ11’f、CPL=3 )ト、オペレーテ
ィングシステムレベル(たとえば、CPL=0)の双方
でマスキングすることができる。このように、2つの異
なる特権レベルでマスキングを選択可能である念め、本
発明は、整列していないデータの参照時に常にトラップ
するか、全くトラップしないかのいずれかである機械と
も互換性をもっている。1例を挙げれば、オペレーティ
ングシステムレベルで、整列検査機能をリセット時にデ
ィスエーブルすることによシ、それに80386マイク
ロプロセツサとの互換性を与えても良い。
C又はPa5calのようなある種のプログラミング言
語においては、コンパイル時にデータの型が宣言された
とき、セレクタにはそのデータの型が永久的にタグ付け
される。言いかえれば、プログラムの実行中に、データ
の型は変化しない。しかしながら、LISP又はPro
logなどのいくつかのAI言語では、ラン/時間の型
の割当てにさらに融通性が盛シ込まれている。そのよう
な言語の場合には、プログラムの実行につれて、データ
の型は変化する可能性がある。そのため、ユーザは、複
数の型に作用する関数(たとえば、Xを整数、短精度実
数、長精度実数、複索数などとしたときの〆Y)を規定
することができる。従って、プログラム中の特定の1点
におけるデータの型に応じて、複数の機能を実行できる
LISPプログラム又はPrologプログラムにおい
ては、ポインタフィールドはアドレスと、データの型の
双方を指示する。データの型を識別する項目はタグと呼
ばれる。プログラマ−は、32ビツトポインタの最下位
2ビツトを最上位タグピットとして使用する。データの
型がある1つの盤でなければならないか又は演算が無効
である場合、あるいは、プログラマ−がデータの型を圧
倒的に多い頻度である1つの型であると予期する場合に
は、ユーザーは、タグが所与の値であると仮定するコー
ドを発生することができる。このコードは下位タグピッ
トを取消す。たとえば、タグが2の値を有するならば、
コードは、タグピットを相殺するために、−2の値を加
算すると考えられる。
このオフセット又は取消しは変位としても知られている
。変位が正しければ、メモリ項目は整列しており、故障
又はトラップを受けずにデータを参照することができる
本発明を使用してAIプログラムを実行する場合、変位
がタグと整合している限ムメモリ参照は整列している。
しかしながら、変位がタグと整合しない場合には、本発
明の整列検査装置は、任意に、トラップ又は故障を発生
する。これが起こると、現在実行場所(C8:EIP)
と、フラグレジスタの内容(EFLAGS) とはスタ
ックにセーフ東れ、制御は、割込みハンドラとして知ら
れるソフトウェアルーチンへ移行する。それぞれの故障
条件と関連する1つの特定の割込み番号がある。
スタックにセーブされた命令ポインタは、故障が起こつ
念後、その故障の原因となった命令を指示する。そこで
、オペレーティングシステムはその条件を修正すること
ができ、プログラムの実行を再開することができる。
マイクロプロセッサの全体ブロック線図第4図に関して
説明する。第4図には、以上説明した整列検査機能を組
込んだ本発明によるマイクロプロセッサが全体ブロック
線図の形で示されている。マイクロプロセッサは、32
ビット外部データバス30に結合されると共に、アドレ
スバス31及びいくつかの別の制御線にさらに結合され
ているバスインタフェース装置10を含む。バスインタ
フェース装置10が扱うのは物理(ハードウェア)アド
レスのみであるので、オペランドアドレスは、まず、セ
グメンテーション装置14と、ベージング装置13とを
通過しなければならない。また、バスインタフェース装
置10には、キャッシュ装置12と、先取シ装置11も
結合されている。先取シ装置は、次の命令アドレスのメ
モリの内容を取出すために、絶えずバスインタフェース
装置に対し間合せしている。先取り装置は、データを受
信すると、直ちにそのデータを待ち行列の中に挿入し、
待ち行列が一杯でなければ、さらに別の32ビツトのメ
モリ内容を要求する。
キャッシュ装置12は、データキャッシュと、キャッシ
ュメモリのアクセツシングlt制御tルコントローラと
を含む。先取シ装置11と、キャッシュ装置12とは、
共に、32ビツトバスを介してセグメンテーション装置
14に結合されている。
セグメンテーション装置14は区分化アドレスを線形ア
ドレスに変換する。
セグメンテーション装置14は、「LA(すなわち、L
inear Address  (線形アドレス))バ
ス」とも呼ばれる32ビツト線形アドレスバス20を介
して、ベージング装置13と、キャッシュ装置12とに
結合されている。ベージング装置13は、セグメンテー
ション装置14によ多発生された線形アドレスを取出し
、それらを物理アドレスに変換する。ページングがディ
スエーブルされた場合には、セグメンテーション装置の
線形アドレスが物理アドレスになる。ベージングがイネ
ーブルされると、80486マイクロプロセツサの線形
アドレスはページと呼ばれる複数の4096バイトブロ
ツクに分割される。それぞれのページを全く異なるアド
レスにマツピングすることができる。
本発明を理解するために、便宜上、セグメンテーション
装置14は市販のIntel 80386マイクロプロ
セツサに使用されているのと同じ装置であると仮定して
も良い。Int、el 80386マイクロプロセツサ
のセグメンテーション装置及びベージング装置は、19
85年6月13日に出願された同時係属出願−出願番号
744,389.  名称rMemor7 Manag
ement for MicroprocessorJ
譲受人は本発明と同じである−に説明されている。
マイクロプロセッサ内で、命令は命令デコーダ装置15
に結合される。デコーダ装置は先取シ装置と同じように
動作し、先取シ待ち行列から個々のバイトを取出して、
次の命令を完了するために必要なバイトの数を決定する
。デコーダ装置は制御装置19と共に動作するが、制御
装置19は、マイクロコード命令を記憶しておシ、マイ
クロプロセッサに対して複数の制御信号シーケンスを供
給する。命令デコーダ装置15は制御装置19に結合さ
れるものとして示され、その制御装置19はセグメンテ
ーション装置14と、データ装置18と、浮動小数点装
置17とに結合されるものとして示されている。データ
装置18は、Inte180386プロセツサによシ実
行されるALU機能と同様にしてALU機能を実行する
演算論理装置(ALU)である。
マイクロプロセッサは、浮動小数点演算を実行する浮動
小数点装置17をさらに含む。浮動小数点装置17並び
にマイクロプロセッサのその他の装置の厳密な構成は、
本発明を理解する上で重要では外い。以下、本発明を理
解するために必要である場合に限シ、マイクロプロセッ
サの様々な装置の間の信号の流れを説明する。
好ましい実施例の説明 本発明の選択可能整列検査装置は、外部からは、プログ
ラマ−には2つの断状態(モード)ビットとして現われ
ているように見える。−万のビットはEFLAGSレジ
スタ内に位置し、AC(整列検査)ビットと呼ばれる。
EFLAGS レジスタは現在命令流れに関する状態情
報を保持する(EIPレジスタは現在実行中の命令のア
ドレスを記憶している)と共に、異なる様々な命令に関
連するいくつかのフィールドを保持する。AM(整列マ
スキング)ビットと呼ばれる他方のビットは、制御レジ
スタCRO内に位置している。
次に、第2図を参照して、EFLAGS  レジスタの
詳細を説明する。(尚、フラグピッ)1,3゜5.15
及び19から31は「不定」である。)ACビットはビ
ット位置18に位置している。ACビットは、メモリ参
照が整列していないアドレスである場合に、故障の発生
をイネーブルする。たとえば、これは、奇数アドレスに
対する語アクセス、又は0M0D4ではないアドレスに
対するd語アクセス、又はO!1liOD8ではないア
ドレスに対する8バイト参照によシ引起こされると考え
ることができる。整列の故障はレベル3でのみ発生され
る。すなわち、レベル0.1及び2では、ACビットの
設定は無視される(暗示的に0)。
記述子衣に対する(セレクタロードに関する)参照は、
記述子衣を「出現させている」命令がレベル3で実行さ
れている場合でも、暗示的にレベル0の参照である。好
ましい実施例では、整列の故障は、誤シコード0を伴な
って、割込みビット17を介して報告される。(ビット
1γは、1に設定されたとき、現在実行中の命令流れが
X86コードでちることを示す仮想モード(VM)ビッ
トである。) 以下の表は、マイクロプロセッサの様々なデータの型に
ついて要求される整列を示したものである。
第1表 整列検査機能はタスクごとに別個にイネーブルされなけ
ればならないので、各タスクが独自のFEFLAGSJ
  の「コピー」を有していることから、この機能はE
FLAGSレジスタに含まれている。
次に第3図に関して説明する。第3図には、整列マスク
制御ピッ)(AM)を記憶する制御レジスタ(CRO)
が示されている。制御レジスタCROは、マイクロプロ
セッサのページング及び数値コプロセッサ動作を調整す
るいくつかの制御レジスタの中の1つである。第3図に
示すように、整列マスク制御ビットはCROのビット位
[18にある。AMビットは、EFLAGSにおけるA
Cビットが整列故障を許容できるか否かを制御する。A
M=0のとき、検査はディスエーブルされる(たと、t
ば、80386マイクロプロセツサの互換性)が、AM
=1のときには検査はイネーブルされる。届ビットは、
特権レベル0でだけ、おそらくはオペレーティングシス
テムによってのみアクセス可能である。オペレーティン
グシステムは、それが適切な割込みハンドラを含んでい
る場合に限シ、整列故障をイネーブルするために、この
ビットを1に設定する。
整列検査をイネーブルするために2つのビットを使用す
ることにより、大きな融通性が得られる。
入Mビットは、全てのタスクに対して大域的であるレジ
スタCROの中に位置しているので、大域的にオペレー
ティングシステムを制御し、オペレーティングシステム
によってのみ参照可能である。
オペレーティングシステムが適切な割込みノ1ンドラ(
たとえば、CROのビット17)を含んでいるならば、
AMビットは、通常、オペレーティングシステムが初期
設定される゛ときにセットされる。
ACビットはアプリケーションレベルの制御を実行する
。このビットは、タスクスイッチでスワップされ且つレ
ベル3で実行中のアプリケーションによシアクセス可能
であるEFAGSレジスタにある。EFLAGSはタス
クスイッチにおいてスワップされるので、各タスクが専
用のEFLAGSのコピーを有するかのように、従って
、独自の整列検査器のコピーを有するかのように見える
。通常、AIプログラムはレベル3、すなわち、アプリ
ケーションレベルでのみ整列検査を実行させれば良い。
2つのマスクビットに対するアクセスを可能にすること
によシ、プログラマ−はC整列検査が実行されるか否か
を選択するための2つの機会、すなわち、アプリケーシ
ョンレベルにおける機会(EFLAG8 レジスタをプ
ログラムによシフリア又はセットすることができる)と
、オペレーティングシステムレベルにおける機会(AM
ビットがクリア又はセットされる)とを有することにな
る。
尚、2つのビットは共に全てのレベルでマスキングを実
行する。しかしながら、ACはレベル3以外の全てのレ
ベルで暗示的にマスクされるが、AMビットはレベル0
でセット/リセット(すなわち、制御)可能となるだけ
である。
本発明の整列検査器は、整列していないデータへのアク
セスを認識することを中心として実現されている。これ
は、32ビツト線形アドレスバス20(第4図を参照)
の下位3ビツトと、バスサイクルの長さとを使用して、
命令デコーダ装置15又は制御装置19による命令に従
って実行される。
整列していないデータの参照による故障は、線形アドレ
スも発生するセグメンテーション装置14の中で発生さ
れる。故障は制御装置19によシサービスされる。
以下の表は、異なる長さのバスサイクルについて、整列
していないデータのアクセスをLAババス0の下位3ビ
ツトの値との関係で規定したものである。バスサイクル
の長さは、命令デコーダ装置15又は制御装置19から
の1バス要求型」フィールドを復号することによシ決定
される。
第2表 整列していないアクセスが起こったことが判定されてし
まえば、故障を発生するために必要な他の条件を判定す
るのは比較的簡単である。第5図に関して説明すると、
第5図には、整列検査論理回路の回路図が示されている
。論理ゲート40〜44と、ラッチ41及び45とは、
セグメンテーション装置14がLAババス0を駆動して
おり且つバスサイクルは打切りとならないことを確実に
保証するために、セグメンテーション装置14から受信
した信号を復号する目的で使用される。
LAババス0の最下位の3ビツトは信号線51〜53に
現われる。それらの信号は、命令デコーダ装置15又は
制御装置19からのバス要求型フィルド信号と、ゲート
46及び69の入力端子において組合される。概して、
ゲー)46.4B。
49及び67〜72は組合されて、第2表に従って整列
していない参照のバイト長さを示す一連の信号を発生す
る。たとえば、ゲート46は、2バイトの整列していな
い参照を意味する信号を信号線80に発生し;ゲート6
7は、4バイトの整列していない参照を意味する信号を
信号線81に発生しニゲ−ドア1は、8バイトの整列し
ていない参照を意味する信号を信号線82に発生し;ゲ
ート49は、4NDの整列していない参照を意味する信
号を信号線83に発生する。信号線80〜83のそれぞ
れの信号はゲート47によりORされ、その結果はラッ
チ50に蓄積される。(第5図のラッチと関連する記号
P1及びP2は、それぞれのラッチがクロックされる位
相を示す。たとえば、ラッチ41及び59がシステムク
ロックの位相2でクロックされるのに対し、ラッチ45
.50及び62は次のクロックパルスの位相1でクロッ
クされる。) 信号線54及び55に現われるAMビットとACビット
は、ANDゲート57に入力される。整列していないと
きの故障を発生するためには、それらのビットは共に「
1」でなけれはならない。
ゲート57の出力は、信号線56に供給されるプログラ
ムの特権レベルと共に、ラッチ45及び50の出力とゲ
ート63においてANDされる。現時点で好ましい実施
例における特権レベルは、制御装置19のCPLビット
による決定に従って、レベル3でなければならない。ゲ
ート58〜62は、バスサイクルの型がAC違反を許容
する型であることを確実に保証するために、ANDゲー
ト63にさらに入力を供給する。(あるサイクルでは、
AC違反が許容されない。たとえば、分岐サイクルは、
定義上、1バイトのサイクルであるので、分岐サイクル
ではAC違反は許されない。)ゲート63の出力はAN
Dゲート65の一万の入力端子に結合される。ゲート6
5に対する他方の入力は、故障信号が発生される前にマ
イクロプロセッサのパイプラインが解放されていること
を示す信号を供給する信号線66から得られる。要する
に、ACビットとAMビットとのAND演算に加えて、
第5図の論理は、いずれのシステムセグメントに対して
もアクセスが実行されていないこと及び適正なバスサイ
クルが実行されていることを確実に保証するように設計
されている。ANDゲート65は、5INTR(セグメ
ンテーション装置割込み)と呼ばれる信号を信号線67
に発生する。この信号は、上記の条件の全てに適合した
とき、必ず制御装置19に結合される。
制御装置は、5INTRを受信すると、直ちに全ての実
行を停止させ、この整列検査故障をサービスするために
措置を構じる。制御装置は2つのノー・オペレーション
(NOP)フロックを挿入し、次に、整列検査故障に関
する入口点にマイクロコードを押入れる。その後、マイ
クロコードは、戻シアドレスを記憶し且つユーザープロ
グラムに故障を報知するために必要であることの全ての
実行を引継ぐ。
以上、選択可能な整列検査を実行するマイクロプロセッ
サを開示した。
【図面の簡単な説明】
第1図は、本発明によるマイクロプロセッサによシ提供
される4つの特権レベルを、最も保護性の高いレベルを
レベルOとして、また、最も保護性の低いレベルをレベ
ル3として示す図、第2図は、本発明によるマイクロプ
ロセッサの内部に配置され、特権レベル3における整列
していないデータへのアクセス時の故障を支援するため
の、上位16ビツト中に規定された余分のビット(AC
ビット)を有するEFLAGSレジスタを示す図、第3
図は、EFLAGS中のAC′とットが整列故障を許容
できるか否かを制御する整列マスキングピッ)(AM)
を蓄積する機械状態制御レジスタ(CRO)を示す図、
第4図は、本発明のマイクロプロセッサの全体ブロック
線図、第5図は、本発明の現時点で好ましい実施例にお
いて整列検査がどメンテ−ジョン装置、15・・・・命
令デコーダ装置、17・・・・浮動小数点装置、18・
・・・データ装置、19・・・・制御装置、20・・・
拳32ビット線形アドレスバス、30・・・・32ビッ
ト外部データバス、31・・・・アドレスバス。

Claims (3)

    【特許請求の範囲】
  1. (1)データを記憶するメモリと; プログラムを実行する制御装置と; 前記メモリの内部の任意のアドレスに記憶されているデ
    ータを参照する参照手段と; 整列していないデータの参照を検出し、イネーブルされ
    た時且つ前記参照手段が整列されていないデータを参照
    した時に、前記プログラムを中断する故障を発生するよ
    うに選択可能である検出手段を具備するマイクロプロセ
    ッサ。
  2. (2)データを記憶するメモリと; プログラムを実行する制御装置と; 前記メモリの内部の任意のアドレスに記憶されているデ
    ータを参照する参照手段と; 前記プログラムの特権レベルに従つてデータオブジェク
    トに対して選択されたアクセスを許可する保護メカニズ
    ムと; 整列していないデータの参照を検出し、イネーブルされ
    た時且つ前記参照手段が整列されていないデータを参照
    した時に、前記プログラムを中断する故障を発生するよ
    うに、任意にイネーブルされる検出手段を含み、区分化
    アドレスを線形アドレスに変換するセグメンテーシヨン
    装置とを具備するマイクロプロセッサ。
  3. (3)任意のアドレスでデータオブジェクトに対しアド
    レスを許可するマイクロプロセッサにおいて、ある特権
    レベルでデータオブジェクトに対するアドレスを許可す
    る保護メカニズムと、整列していないデータの参照を検
    出し、イネーブルされた時且つ整列されていないデータ
    オブジェクトに対して参照が実行された時に、故障を発
    生するように、選択可能である検出手段と、最下位特権
    レベルで前記故障をマスキングする第1のモードビット
    と、最上位特権レベルで前記故障をマスキングする第2
    のモードビットとを含み、前記検出手段をイネーブル/
    ディスエーブルする制御手段とを具備するマイクロプロ
    セッサ。
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 true JPH02287741A (ja) 1990-11-27
JP3055031B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013536504A (ja) * 2010-08-12 2013-09-19 アーム・リミテッド アラインメント制御

Families Citing this family (2)

* 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

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013536504A (ja) * 2010-08-12 2013-09-19 アーム・リミテッド アラインメント制御
US9760374B2 (en) 2010-08-12 2017-09-12 Arm Limited Stack pointer and memory access alignment control

Also Published As

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

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
US4442484A (en) Microprocessor memory management and protection mechanism
US3970999A (en) Memory expansion apparatus
KR0185988B1 (ko) 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법
US3916385A (en) Ring checking hardware
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US4177510A (en) Protection of data in an information multiprocessing system by implementing a concept of rings to represent the different levels of privileges among processes
US5944816A (en) Microprocessor configured to execute multiple threads including interrupt service routines
US5659679A (en) Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US6631460B1 (en) Advanced load address table entry invalidation based on register address wraparound
CA1324671C (en) Decoding multiple specifiers in a variable length instruction architecture
EP0381469B1 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
JPS5911943B2 (ja) デ−タ処理装置の為のトラツプ機構
US5838897A (en) Debugging a processor using data output during idle bus cycles
EP0747808A2 (en) Processor capable of supporting two distinct instruction set architectures
WO1994027214A1 (en) Method for decoding sequences of guest instructions for a host computer
MX2014015353A (es) Instalación auxiliar del procesador.
Heller et al. Millicode in an IBM zSeries processor
NL2030804B1 (en) Flexible return and event delivery
CN116893894A (zh) 同步微线程化
US6742110B2 (en) Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
JPH02287741A (ja) メモリ参照について選択可能整列検査を実行するマイクロプロセツサ
US5742755A (en) Error-handling circuit and method for memory address alignment double fault
EP0509558A2 (en) Information processing system with support means responsive to an overall system control

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