JP2013542499A - データ処理装置のデバッグ処理 - Google Patents

データ処理装置のデバッグ処理 Download PDF

Info

Publication number
JP2013542499A
JP2013542499A JP2013529705A JP2013529705A JP2013542499A JP 2013542499 A JP2013542499 A JP 2013542499A JP 2013529705 A JP2013529705 A JP 2013529705A JP 2013529705 A JP2013529705 A JP 2013529705A JP 2013542499 A JP2013542499 A JP 2013542499A
Authority
JP
Japan
Prior art keywords
data processing
debug
instruction set
processing apparatus
circuit
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
JP2013529705A
Other languages
English (en)
Other versions
JP5778283B2 (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 JP2013542499A publication Critical patent/JP2013542499A/ja
Application granted granted Critical
Publication of JP5778283B2 publication Critical patent/JP5778283B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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
    • 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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Abstract

データ処理回路とデバッグ回路を含むデータ処理装置を提供する。デバッグ回路は、デバッグモードで動作するときに、処理回路の動作を制御する。データ処理回路は、デバッグモードに入ると、データ処理装置の現在の動作状態を判定する。データ処理回路は、判定された現在の動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの1つを割り当てる。

Description

本発明は、データ処理に関する。更に詳しくは、本発明は、データ処理装置のデバッグ処理に関する。
データ処理装置のデバッグ処理は、データ処理装置上で作動するコンピュータプログラムまたはデータ処理装置を備える一つの電子ハードウェア内のバグまたは欠陥を発見し、これらの数量を低減する系統的なプロセスである。これらは時間の経過とともに発展していて、データ処理装置等に関して作動するように設計されるマイクロプロセッサやソフトウェアは更に複雑になっていて、デバッグ処理のプロセスは作動時の欠陥を検出するための効率的な方法やシステムを考案する点では益々困難となってきている。デバッグ作業を実施するために、データ処理装置を切り替えるデータ処理装置のデバッグモードを設けることが知られている。
最近のマイクロプロセッサが複雑になるに伴い、現在では、所与のマイクロプロセッサでは、複数の命令セットを実施することができることが珍しくない。例えば、ARM7TDRI(登録商標)プロセッサコアは、32ビット幅オペレーションコードを含む通常の「A32」命令セット(「ARM」命令セットとしても知られる)と、16ビット幅オペレーションコードに圧縮された最も一般的に使用されるA32命令のサブセットを提供する「T32」で表記される更にコンパクトな命令セット(「サム」命令セットとしても知られる)との両方を実行することができる。実行時には、16ビット幅命令をフル32ビット幅A32命令へ展開できるか、または専用の復号ユニットを直接使用して、実行できる。したがって、所与のデータ処理装置は複数の異なる命令セットを実行することができる。A32命令セットとT32命令セットとの両方とも32ビット幅データ上で動作する。
複数の異なる命令セットを実行することができる所与のデータ処理装置に加えて、多くの最近のデータ処理装置は、複数の異なる動作状態で、または複数の異なる「特権レベル」で動作することができる。異なる特権レベルにおいて、データ処理装置はメモリおよびレジスタのセットのうちの少なくとも1つに対する異なるアクセス許可をプログラム命令に与える。例えば、標準特権レベルで処理回路へアクセス可能な制御レジスタのセットは、典型的には、更に高い特権レベルで動作時、例えば、データ処理装置がユーザーモードではなくシステムモードで動作しているときには、データ処理装置へアクセス可能な制御レジスタのセットより更に制限される。異なる特権レベルでの動作時には、データ処理装置は、典型的には、プログラム命令のメモリアドレスを変換するために、異なる仮想から物理へのメモリアドレス変換スキームを適用する。
例えば、仮想化を実行し、複数の異なるゲストオペレーティングシステムが同じデータ処理装置上で作動できるようにするハイパーバイザを動作させるデータ処理システム内においては、ハイパーバイザの特権レベルの下に位置する(即ち、ハイパーバイザの監視の下で動作する)データ処理装置の任意の特権レベルは、仮想化プロセスに対応したアドレス変換の追加レベルを有する。アドレス変換の追加レベルは、「仮想変換表ベースレジスタ」を利用する。しかし、ハイパーバイザ層自体に対応する特権レベルは、仮想変換表ベースレジスタへの参照を必要としないが、変換表ベースレジスタのみを参照するので、1つのより小さい変換ステージが関与する。
複数の命令セットを実行することができるプロセッサにおいては、データ処理装置がデバッグモードであるときに使用するためのデフォルトデバック命令を課すことが知られている。例えば、ARM10、ARM11およびARM Cortexプロセッサにおいては、デフォルト状態は、データ処理装置がデバッグモードに切り替わっている場合には、必ず、A32命令セットを使用することであった。例えば、ARM7TDMI(登録商標)およびARM9プロセッサにおいて使用される別の公知の手法は、デバッグモードへ入ったときに、命令セットの状態はデバッグモードへ入ったときの状態とし、デバッグモードへ入ったときにデータ処理装置がT32命令を実行していた場合に、T32命令がデバッグプロセスに使用されることになるか、または一方で、データ処理装置がデバッグモードに入ったときにA32命令を実行していた場合には、A32命令を使用して、デバッグプロセスが実行されることになる。
しかし、データ処理装置の動作状態、即ち、デバッグ動作が実施される場合にデータ処理装置が動作している特権レベルと、データ処理装置のデバッグモードでの使用のために割り当てられる命令セットとの間で発生し得る不整合のために、問題が発生する可能性がある。したがって、例えば、プロセッサの現在の特権レベルに適した仮想から物理へのアドレス変換スキームは、選択されたデバッグ命令セットと互換性がない可能性がある。この場合には、更に大きいオペランドビット幅を有する命令がデバッグプロセスに使用されなければならない可能性があるので、命令のための可変幅レジスタを有するように構成可能なデータ処理装置において特定の問題を呈し、一方で、プロセッサの動作状態は、32ビットの仮想から物理へのアドレス変換スキームがデバッグモードで実行されることを意味する。データ処理装置によって実行可能な複数の命令セットの各々に対応する多くのビットパターンに対応するように、デバッグモジュールハードウェアが設計されていなければならないので、プロセッサ動作状態とデバッグ命令セットとの間の、この潜在的な不整合により、デバッグ作業が更に複雑になる。したがって、デバッグ回路の複雑さを低減し、更に複数の異なる特権レベルで動作できて、ならびに/または複数の異なる命令セットを実行できるデータ処理装置をデバッグする柔軟性を提供する必要性がある。
第1の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路と、
前記データ処理回路と前記データ処理回路の外部デバッガユニットとの間にインターフェースを提供するように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作する場合に前記データ処理回路の動作を制御するように構成されるデバッグ回路と、を備えるデータ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの1つをデバッグ命令セットとして使用するように割り当てるように、前記データ処理回路が構成されるデータ処理装置を提供する。
本発明では、データ処理回路がデバッグモードに入ると、データ処理装置の現在の動作状態を判定し、現在の動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの1つを割り当てることによって、良好な柔軟性レベルの余裕ができると認識している。これは、本発明が、デバッグモードでは、単一デフォルト命令セットより多くの命令セットを使用し、データ処理装置の現在の動作状態に応じて、選択された命令セットを適切に選択する機会を提供するからである。これにより、データ処理回路の現在の動作状態と割り当てられたデバッグ命令セットとの間の互換性の可能性が改善される。
デバッグモードに入ると単に現在の命令セットを選択しないことにより、デバッグモードで対応する必要がある命令の合計数を低減することができる。実際には、データ処理装置によって実行できる全体の複数の命令セットのサブセットのみを、デバッグモードで実施する必要がある。これは、デバッグ命令の検証を簡略化し、デバッグ処理回路のコストを低減する。効果的には、デバッグモードに入ると、データ処理回路の現在の動作状態に応じて複数の命令セットを割り当てることができるので、デバッグモードで復号される命令は、必ず、現在の動作状態のメモリ構成(即ち、権限レベル)に適したものになる。
データ処理装置は、データ処理ハードウェアの異なる表示に関係する多くの異なる動作状態のいずれかの1つで動作するように構成され、適切なデバッグ命令セットは現在の動作状態の特定の特性に従って割り当てられることが理解される。しかし、ある実施形態においては、データ処理回路は、複数の特権レベルで動作するように構成可能であり、異なる特権レベルにおいて、データ処理回路はメモリおよびレジスタセットのうちの少なくとも1つに対する異なるアクセス許可をプログラム命令に与える。例えば、高位の特権レベルにおいては、データ処理装置は下位の特権レベルにおけるよりも多くの制御レジスタセットにアクセスできる。異なる特権レベルに適用可能なメモリおよび/またはレジスタの異なる表示により、デバッグ命令セットとプロセッサの現在の動作状態との間の互換性は更に重要になる。現在の特権レベルに応じて複数の代替デバッグ命令セットからデバッグ命令セットを割り当てる能力により、デバッグ動作の効率が改善される。
異なる特権レベルにおいて、データ処理装置には、メモリおよびレジスタのうちの少なくとも1つへのアクセス許可の差は別にして、動作状態の様々な差がある可能性があることが理解される。しかし、1つの実施形態においては、異なる特権レベルにおいては、データ処理回路は物理メモリアドレス変換規則に各々異なる仮想メモリアドレスを適用する。異なる動作状態において、異なる仮想メモリアドレスから物理メモリアドレスへの変換規則がデータ処理装置によって使用されるときには、デバッグモードで不適切なデバッグ命令セットが割り当てられれば、デバッグ動作は極度に複雑になる。例えば、現在の動作状態が32ビット仮想アドレスを物理アドレスに変換するように構成されるゲストオペレーティングシステムであり、一方、デフォルト命令セットが64ビット仮想アドレスを生成する命令を備える場合には、問題が発生する可能性がある。この場合には、64ビットデバッグ命令から生成される32ビット仮想アドレスか、または32ビット仮想アドレスを変換するように構成されるシステム内で64ビット仮想アドレスを変換する手段を必要とする。したがって、プロセッサの現在の動作状態に応じてデバッグ命令セットを適切に割り当てる能力は、現在で実装された仮想メモリアドレスから物理メモリアドレスへの変換スキームとデバッグ動作のために実行される命令との間の非互換性を避けるためには有用である。
ある実施形態においては、データ処理装置は、複数の特権レベルの各々に対応する、複数の異なるソフトウェア階層レベルに対応するプログラム命令を実行するように構成される。したがって、例えば、1つの特権レベルはゲストオペレーティングシステムに対応し、一方で、他の特権レベルはユーザーアプリケーションに対応してもよい。本来は64ビット命令を実行可能なデータ処理装置上で32ビット動作システムを実行できる要件等のソフトウェアに関して後方互換性があるデータ処理装置についての一般的な要件により、問題が発生する可能性がある。現在の動作状態に応じ、かつ現在のソフトウェア階層レベルに従って適切なデバッグ命令セットを割り当てる能力により、後方互換性を併せ持ったシステム内でデバッグ処理に充分に対処するデバッグシステム内で柔軟性が提供される。
異なるソフトウェア階層レベルに対応する複数の特権レベルは、ソフトウェア層の多くの変形した組合せを備える可能性があることが理解される。しかし、1つの実施形態においては、複数のソフトウェア階層は、アプリケーション層および動作システム層に加えて、ハイパーバイザ層を備える。これにより、都合良くシステムは仮想化に対処できる。
更なる実施形態においては、アプリケーションシステム層およびハイパーバイザ層付き、または無しの動作システム層に加えて、セキュリティ監視層が提供される。セキュアモードでの動作時に確実に適切なデバッグ命令セットが選択されることは、データ処理装置の整合性を維持するために、特に重要である。
最初にデバッグモードに入ると、単一のデバッグ命令セットが、デバッグモードに入る場合に現在の動作状態に応じて割り当てられることが理解される。しかし、ある実施形態においては、データ処理装置は、複数の特権レベルの異なるレベル間で切り換えるために、デバッグモード自体内から構成可能であり、データ処理回路は判定の現在の動作状態の判定を繰り返すように、またデータ処理装置の新規に切り換えられた動作状態に応じてデバッグ命令セットの割当を繰り返すように構成される。これにより、デバッグ動作が行われている間での現在の動作状態の切り換えに関わらず、このような場合でも、適切なデバッグ命令セットが割り当てられる。これにより、可能性があるシステムバグを更に調査するために、1つの動作状態から他の動作状態へ切り換えるようにデバッグ回路を制御できる更なる柔軟性が提供されるとともに、この柔軟性に関わらず、デバッグ命令セットと現在の動作状態との間の互換性が確実に維持されるようになる。
データ処理装置の現在の動作状態は、同一のオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択され得ることが理解される。しかし、1つの実施形態においては、現在の動作状態は、各々異なるオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択される。異なるオペランドビット幅を有する命令を実行できるデータ処理装置においては、例えば、2つの異なるオペランドビット幅等の間で異なる仮想メモリアドレスから物理メモリアドレスへの変換スキームのために、互換性の問題が発生する恐れがある。したがって、現在の動作状態により適切にデバッグ命令セットを割り当てる能力は、デバッグモードの場合に極めて面倒な変換プロセスを実行しなければならないことを避ける際には有用である。いくつかのこのような種類の実施形態においては、複数のオペランドビット幅を有する動作状態は、少なくとも32ビット動作状態と64ビット動作状態とを備える。
メモリからオペランドを読み取ることによって、命令を実行するデータ処理装置等のいずれかのデータ処理装置へ、本技術を適用し得ることが理解される。しかし、ある実施形態においては、データ処理装置は、プログラム命令のオペランドを記憶するための複数のレジスタを備え、異なるオペランドビット幅は処理回路によって使用される異なるレジスタ幅に対応する。可変レジスタ幅を使用するように構成可能なデータ処理装置においては、デバッグ命令セットの割当は、可変幅レジスタの現在の設定に応じて、適切に選択できるので、現在の動作状態に応じて適切なデバッグ命令セットを割り当てることができることは有用である。このようなある実施形態においては、異なるオペランドビット幅を有する複数のレジスタのサブセットは、可変幅レジスタとして構成される。
ある実施形態においては、データ処理回路は、デバッグ回路にとってアクセス可能な少なくとも1つのレジスタへ書き込むことにより、現在の動作状態に応じて、デバッグ回路へ割り当てられたデバッグ命令セットを表示するように構成される。これにより、デバッグ回路による使用のために、適切なデバッグ命令セットを表示する便利な方法が提供される。別に実施形態においては、データ処理回路は、制御コマンドをデバッガユニットへ送信することにより、デバッガユニットへのデバッグ命令セットを表示するように構成される。これにより、レジスタ上のスペースが節約される。
データ処理装置は、多くの異なる方法のいずれか1つで現在の動作状態を判定できることが理解される。しかし、ある実施形態においては、データ処理装置は、デバッガユニットにとってアクセス可能な所与の位置で現在の動作状態の記憶された値を維持するように構成される。いつデータプロセッサが非デバッグモードからデバッグモードへ切り換わるかに関わらず、必要な場合には必ず、デバッガユニットによって現在の動作状態に対して実行するのは簡単であり、また容易なアクセスを可能にする。
データ処理装置が、複数の異なる特権レベルで動作するように構成可能なある実施形態においては、現在の動作状態は、各々のオペランドビット幅を有する複数のプロセッサ動作状態から選択され、データ処理装置は、デバッグ回路にとってアクセス可能な第1の位置の複数の特権レベルの各々に関連付けられたオペランドビット幅の記録を維持するように構成される。異なるプロセッサ動作状態のオペランドビット幅は、全てが必ずしも異なっておらず、例えば、4つの特権レベルと2つのビット幅は、2つ以上の特権レベルのために同じオペランドビット幅を使用できる。これにより、対応するオペランドビット幅にそれぞれ可能な特権レベルのための記憶の便利な手段が提供され、これは、適切なデバッグ命令セットが容易に判定され得ることを意味する。異なる時間において、データ処理装置は、例えば、異なるプログラム動作または異なるオペレーティング動作システムを実行する場合があり、これにともない、所与の特権レベルに関連付けられたオペランドビット幅は異なる時間では異なる場合があることが理解されるので、維持された記録内に現在で記憶されるオペランドビット幅は現在の時間に依存することに留意する必要がある。
複数の特権レベルの各々に関連付けられたオペランドビット幅の記録が第1の位置に記憶される、このようなある実施形態においては、データ処理装置は、データ処理回路が、デバッガユニットにとってアクセス可能な第2の位置で動作している現在の特権レベルの記録を維持するようにも構成される。第1の位置と第2の位置の両方を参照することにより、デバッガユニットは、現在の特権レベルに対応するオペランドビット幅を容易に判定することができ、したがって、現在のオペランドビット幅に応じて、データ処理回路が割り当てたデバッグ命令セットを適切に判定することができる。
ある実施形態においては、データ処理回路は、前記各々のオペランドビット幅を有する複数の前記プロセッサ動作状態から前記デバッグ命令セット判定するために現在の前記特権レベルを使用する。このようなある実施形態においては、データ処理装置は、現在のプロセッサ動作状態に対応する現在のオペランドビット幅の記録を維持するように構成される。
別の実施形態においては、デバッガユニットは、デバッグ命令セットを推定するために、また、少なくとも1つのプログラム命令がデータ処理回路によって実行されて、データ処理回路が動作している現在の特権レベルを判定するために、現在の前記オペランドビット幅の前記記録を使用するように構成される。複数の可能な特権レベルの各々についてのオペランドビット幅の記憶位置を設けるよりも使用するレジスタスペースは少ないので、これは実行するのがより安価である。使用するスペースが少ないという事実により、現在の例外レベルを判定するために必要な論理に関して追加コストが相殺される。デバッガユニットは、この場合のデバッグ命令セットを推定するが、データ処理回路は適切なデバッグ命令セットの最初の判定を行い(即ち、デバッグ命令セットを実際に割り当てる)、次いでデバッガユニットは、レジスタの内容に基づいて、データ処理回路が何を実行したかを算定する。
一方、現在の特権レベルの記録と、少なくとも複数の特権レベルに関連付けられたオペランドビット幅の記録の両方を使用する実施形態においては、記憶位置のこれら2つのセットの状態は、プロセッサ内のいずれかの位置で、例えば、レジスタの状態を都合よく反映しやすく、更に情報をデバッガへ提供し、適切なデバッグ命令セットを判定するために実行されるプログラム命令の数を低減する。
割り当てられたデバッグ命令セットは、非デバッグモードのデータ処理装置による実行のために使用可能な全命令セットを提供し得ることが理解される。しかし、ある実施形態においては、割り当てられたデバッグ命令セットは全命令セットのサブセットを備える。このようなある実施形態においては、サブセットは、A32命令セット、T32命令セット、T32EE命令セット、およびA64命令セットのうち1つのサブセットである。したがって、デバッグモードで実行するためには望ましくない、および/または有用でない全命令セットのこれらの命令を、容易に、デバッグモードでの使用のために割り当てられる全命令のサブセットから除外することができる。例えば、所与の全命令セットの分岐命令を、デバッグモードのときに未定義にさせることができる。
第2の態様により、本発明は、
少なくとも動作モードおよびデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成されることと、
前記データ処理回路が前記デバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの1つを割り当てることを備える、データ処理方法を提供する。
第3の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
前記データ処理を実施するための手段と前記データ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、前記データ処理を実施するための手段が前記デバッグモードで動作するときに、前記データ処理を実施するための手段の動作を制御するように構成されるデバッグ処理のための手段と、を備え、
前記データ処理を実施するための手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの1つを割り当てるように構成された、データ処理装置を提供する。
本発明の様々な各々の態様および特徴は、添付の請求項において明確にされる。従属請求項の特徴の組合せは、適宜独立請求項の特徴と組み合わせられてもよく、単に請求項には明示的に規定されていないのみである。
以降、添付の図面を参照して、実施例のみとして、本発明の好ましい実施形態が説明される。
プロセッサが可変レジスタ幅を実行し、デバッグモジュールが設けられ、外部デバッグインターフェースレジスタを備える、本発明の第1の実施形態に係るデータ処理装置を概略的に示す図である。 図1のデータ処理装置の複数の異なる動作状態、および、それらの動作状態がどのように複数の異なる特権レベルと各々の複数のソフトウェア階層レベルに対応するかを概略的に示す図である。 4つの異なる特権レベル、どのように異なる特権レベル間の切り換えがデータ処理装置によって実行されるか、およびどのように異なる特権レベルが仮想アドレスから物理アドレスへの変換のための異なるスキームを実行するかを概略的に示す図である。 図1の外部デバッグインターフェースレジスタ(EDIFR)内のビット割当のサブセットを概略的に示す図である。 図1のEDIFRの特権レベルインジケータビットについてのビットパターンおよび各々の特権レベルを概略的に示す図である。 複数のレジスタ幅ビットパターンの各々で、4つの特権レベルの各々の対応するプロセッサ状態を概略的に示す図である。 32ビットプロセッサ動作状態および64ビットプロセッサ動作状態の両方について、プロセッサ動作状態と使用可能な対応する命令セットとの間のマッピングを概略的に示す図である。 どのように図1のデータ処理装置によって適切なデバッグ命令セットが割り当てられるかを概略的に示すフローチャートである。 仮想マシン実装を概略的に示す図である。
図1は、本発明の実施形態に係るデータ処理装置を概略的に示す。データ処理装置は、「システムオンチップ」を形成する複数の回路コンポーネントを備える集積回路100を備える。集積回路100は、実行パイプライン110、1組の汎用レジスタ120、1組の制御レジスタ160、デバッグモジュール130、デバッグポート132、メモリ管理ユニット(MMU)およびオンチップメモリ142を備える。更に、データ処理装置100は、オフチップメモリ144へのアクセスを有する。データ処理装置100のデバッグポート132は、データ処理回路100のデバッグを補助するために、1組のデバッガソフトウェア152を実行するように構成されるホストパーソナルコンピュータ150へ接続される。
図1のデータ処理装置100は、RISC(短縮命令セット演算)アーキテクチャを有し、これは、データを処理する命令がレジスタ上でのみ動作し、メモリへアクセスする命令から分離しているロードストアアーキテクチャである。データ処理装置100は、パイプライン化されたデータ処理装置であり、実行パイプライン110は、フェッチステージ、復号ステージ、および実行ステージ(図示しない)を備える。レジスタの組は、汎用レジスタ120、更に制御レジスタ160を備える。この特定の実施形態においては、レジスタ120の組は、複数の64ビットレジスタを備え、これらは、可変幅レジスタとして動作するように構成可能であり、データ処理回路100が32ビットレジスタ幅動作状態で動作しているとき、即ち、実質的に32ビットデータを処理し仮想アドレスの32ビット(32ビットプログラムと称する、32ビットプログラム命令を備える)を使用するときには、レジスタ120の組は、データ処理装置によって32ビットレジスタとして見なされ、一方、データ処理回路100が64ビットレジスタ幅動作状態で動作しているとき、即ち、実質的に64ビットデータを処理し仮想アドレスの32ビットを超えるビットを使用するプログラム(64ビットプログラムと称する、64ビットプログラム命令を備える)を実行するときには、レジスタ120の組の各レジスタのフル64ビット幅が利用されるように構成される。しかし、処理回路100が32ビットレジスタ幅動作状態で動作しているときには、ある64ビット動作(即ち、64ビット値の広い乗算およびロード/ストア)を実行できることに留意する。同様に、処理回路100が64ビットレジスタ幅動作状態で動作しているときには、ある32ビット動作が更に実施されてもよい。
動作の非デバッグモードのときには、データ処理回路100は、システムメモリから、即ち、オンチップメモリ142またはオフチップメモリ144からの実行命令を実行する。メモリ管理ユニット140は、データ処理装置100の現在の動作状態に従ってメモリ142、144へのアクセスを制御し、例えば、ユーザーモードでは、システムモードでアクセス可能であるよりも、データ処理回路100にとってアクセス可能であるメモリ位置のサブセットは少なくなる。
メモリ管理ユニット140は、実行パイプライン110によるメモリへの全てのアクセス要求の取扱いを担い、その機能は、仮想メモリアドレスから物理メモリアドレスへの変換、メモリ保護、キャッシュ制御およびバスアービトレーションを含む。データ処理装置100がデバッグモードに入ると、実行パイプラインは、直接、デバッグモジュール130の命令伝達レジスタ(ITR)134からの命令を実行する。命令伝達レジスタ134は、ホストPC150上で実行するデバッガソフトウェア152の制御の下で、デバッグ命令がロードされ、これは、デバッグモードで、デバッグポート132を介してデータ処理回路100を制御する。この実施形態においては、デバッガソフトウェア152およびその上で実行するホストPC150は、デバッガユニットを表わす。しかし、別の実施形態においては、デバッガユニットはデータ処理回路と同じ集積回路上に組み立てられる。
制御レジスタ160は、データ処理装置100の態様の制御を担う制御値を記憶する。特に、データ処理装置100の複数の「特権レベル」の各々については(図2を参照して、詳細に記載する)、レジスタは、当該特権レベルに関連付けられた対応するオペランドビット幅動作状態を記憶する。
デバッグモジュール130は、更に、複数の特権レベルの各々に関連付けられたレジスタ幅状態(即ち、オペランドビット幅状態)の記録およびデータ処理装置100が動作している現在の特権レベルの記録を維持する外部デバッグインターフェースレジスタ(EDIFR)136を備える。EDIFR136は、デバッガソフトウェア152にとって可視である。
データ処理装置100が標準動作モード(または、いずれかの非デバッグモード)からデバッグモードへ切り換わると、データ処理装置100は、制御レジスタ160内に記憶されたデータから、データ処理装置の現在の動作状態を判定し、この状態に応じて、デバッグ動作を実施するために実行する複数の異なるデバッグ命令セットのうちの1つを選択し、それに従って、EDIFR136内の記録を更新する。デバッガソフトウェア152は、デバッグモードの間に、1つの動作状態から他の異なる動作状態へデータ処理装置100の切り換えを開始することができる。例えば、デバッグ命令の第1のグループ実行する第1の特権レベルでの動作からデバッグ命令の第2のグループを実行する第2の特権レベルでの動作へデータ処理装置を切り換えることができる。したがって、デバッグモジュール130は、動作状態切り換えのときに、制御レジスタ160内の情報に基づいてデータ処理回路100の現在の動作状態の判定を繰り返し、デバッグ動作のために更新されたデバッグ命令セットを割り当て、それに伴って、EDIFR136内の記録を更新するように構成される。この場合には、実行されるデバッグ命令セットは、動作状態切り換えに対応して変化する場合があり、または、この代わりに同じ状態で保持されることもできる。
図1の実施形態においては、EDIFR136はデバッグモジュール130内に配置され、別の実施形態においては、EDIFR136はデータ処理装置100の外部のホストパーソナルコンピュータ150内に、即ち、デバッガユニット内に配置される。更に別の実施形態においては、EDIFRは実装されないが、これに含まれる情報はメインシステムレジスタ、即ち、制御レジスタ160から状態値を読み取ることによって、デバッガユニットによって得られる。ハードウェアレベルにおいては、EDIFRレジスタ136をラッチ回路(図1の実施形態のように)またはシステムレジスタからの簡単な組合せパスとして実装することができる。更に、図1の実施形態においては、ホストPC(デバッガユニット)は、データ処理回路100に対してオフチップに位置し、別の実施形態においては、データ処理装置100およびデバッグ動作を制御し、デバッガソフトウェア152(即ち、デバッグユニット)を実行するための回路は、同じ集積回路上に組み立てられ、データ処理回路100はシステムオンチップ全体を形成しない。このような実施形態においては、論理的に、デバッグ回路を、デバッグされるプロセッサの一部と見なすことができ、デバッグユニットは同じシステムオンチップ上に配置された第2の異なるプロセッサである。図1の実施形態においては、デバッガユニット150へインターフェース(例えば、アドバンストマイクロコントローラバスアーキテクチャバスインターフェース:AMBA)を提供するデバッグモジュール30のデバッグ回路は、システムオンチップ100のデータ処理回路と同じ「マクロセル」の一部である。
図2は、各々の複数の特権レベルに対応する図1のデータ処理装置100の複数の異なる動作状態を概略的に示す。各々の特権レベルは、図1のデータ処理装置100上で実行するソフトウェアの各々の異なる階層に対応する。図2の最上列は、最低特権レベルPL0に対応し、一方、図2の最低列は最高特権レベルPL3に対応する。最低特権レベルPL0と最高特権レベルPL3との間では、2つの中間特権レベルPL1とPL2がある。
最低特権レベルPL0は、アプリケーションソフトウェア層に対応する。この例の実施形態においては、処理リソースの時分割多重によって、データ処理装置100上で6つの異なるアプリケーションプログラムが実行していて、任意の瞬間では6つのアプリケーションプログラムのうちの1つのみがデータ処理回路100の制御を有する。
第1のプログラムアプリケーション202は、32ビットプログラム命令を備える32ビットプログラムであり、したがって、この第1のアプリケーション202を実行する場合には、データ処理装置100は32ビット動作状態である。第2のアプリケーションプログラム204も、実行しているときに32ビットプロセッサ動作状態を必要とする32ビットプログラムアプリケーションである。第3のプログラムアプリケーション206は64ビットプログラム命令を備える64ビットプログラムであり、したがって、このアプリケーションを実行する場合には、データ処理装置は64ビット動作状態になる。第4のプログラムアプリケーション208は、32ビットプロセッサ動作状態を必要とする32ビットプログラムアプリケーションである。最下位特権レベルPL0は、第1のセキュア64ビットプログラムアプリケーション209と第2のセキュア32ビットプログラムアプリケーション210も備える。データ処理装置がセキュアモードの動作である場合のみに、これらのセキュアアプリケーションを実行することができる。
第1の特権レベルPL1(2番目に最低の特権レベル)は、オペレーティングシステムソフトウェア層に対応する。図1および図2の実施形態においては、データ処理装置は、3つの異なるゲストオペレーティングシステムをホスティングする能力を備えて設定される。第1のゲストオペレーティングシステム222は、32ビットオペレーティングシステムであり、32ビット仮想アドレス付きの32ビットプログラムを備えることを意味する。第2のゲストオペレーティングシステム224は、64ビットオペレーティングシステムであり、32ビットを超える仮想アドレス付きの64ビットプログラムを備えることを意味する。64ビットセキュアオペレーティングシステム226もプロセッサ動作のセキュアモードでの専用使用のために第1の特権レベルPL1に位置する。
オペレーティングシステムは、アプリケーションの管理、特には、下位のデータ処理システム100へのアプリケーションのアクセスの制御を担い、またマルチプロセッサおよびマルチスレッドプロセッサにおいては、異なるプロセッサおよびスレッドへのアプリケーションプログラムの割当を含む、異なるアプリケーション間での時分割多重を担う。図1および図2の実施形態においては、32ビットオペレーティングシステムは32ビットプログラムアプリケーションのみを管理することができるので、第1のゲストオペレーティングシステム222によって管理される2つのアプリケーション、つまり、第1のプログラムアプリケーション202と第2のプログラムアプリケーション204とは、両方とも32ビットプログラムアプリケーションである。しかし、64ビットオペレーティングシステムは、64ビットおよび32ビットプログラムアプリケーションの両方を管理することができるので、第2のゲストオペレーティングシステム224によって、またセキュアオペレーティングシステム226によって管理されるアプリケーションは、32ビットプログラムアプリケーションおよび64ビットプログラムアプリケーションの混合を備える。オペレーティングシステム222、224および226は、特権レベルPL0で実行するアプリケーションの各々について、また特権レベルPL1で実行するオペレーティングシステム自体について、どのように仮想メモリアドレスから物理メモリアドレスへの変換を実施するかに影響する一対の変換表基準レジスタ(TTBR0_PL1およびTTBR1_PL1)の制御を担う。
第2の特権レベルPL2は、ハイパーバイザソフトウェア層に対応する。図2において、ハイパーバイザ230は、データ処理装置100上で実行し、第1のゲストオペレーティングシステム222、第2のゲストオペレーティングシステム224を同じデータ処理装置100上で実行させる、64ビットプログラム命令を備える64ビットプログラムである。ハイパーバイザ230は、第1のゲストオペレーティングシステム222、および第2のゲストオペレーティングシステム224が、他のゲストオペレーティングシステムがそこで同時に実行していることを知らずに、同一のデータ処理装置100上で実行できるようにする仮想化システムの一部である。
ハイパーバイザは、オペレーティングシステムの管理、特には、下位のデータ処理システム100へのオペレーティングシステムのアクセスの制御を担い、またマルチプロセッサおよびマルチスレッドプロセッサにおいては、異なるプロセッサおよびスレッドへのオペレーティングシステムの割当を含む、異なるオペレーティングシステム間での時分割多重を担う。64ビットハイパーバイザは、32ビットおよび64ビットオペレーティングシステムの両方を管理することができるので、ハイパーバイザ230によって管理されるオペレーティングシステムは32ビットおよび64ビットオペレーティングシステムの混合を備える。ハイパーバイザ230は、特権レベルPL1で実行するオペレーティングシステムの各々について、また特権レベルPL0で実行するこれらのオペレーティングシステムによって管理されるアプリケーションについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかに更に影響する仮想変換表基準レジスタ(VTTBR_PL2)の実装を制御する。また、ハイパーバイザ230は、特権レベルPL2で実行するハイパーバイザについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかを制御する第3の仮想変換表基準レジスタ(TTBR_PL2)の実装を制御する。したがって、PL2における仮想アドレスから物理アドレスへの変換は、PL0およびPL1における仮想アドレスから物理アドレスへの変換と独立している。
最高特権レベルはPL3であり、これは、セキュアモニタ240ソフトウェア層に対応し、この場合には、ソフトウェア層は64ビットプログラム命令を備える64ビットプログラムである。セキュアモニタ240は、非セキュアモードで実行するソフトウェア、即ち、ハイパーバイザ230、オペレーティングシステム222、224、およびアプリケーション、202、204、206および208、更にセキュアモードで実行するソフトウェア、即ち、セキュアオペレーティングシステム226、またアプリケーション209、210の対との間のゲートキーパーとして動作する。図2に示されるように、データ処理装置がセキュアモードである場合には、ハイパーバイザ230は使用されない。したがって、セキュアモードにおいては、3つの特権レベルPL0、PL1およびPL3のみが有効である。セキュアモニタ240は、特権レベルPL3で実行するセキュアモニタについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかを制御する第4の変換表基準レジスタ(TTBR_PL3)の実装も制御する。したがって、PL3における仮想アドレスから物理アドレスへの変換は、PL0、PL1およびPL2における仮想アドレスから物理アドレスへの変換と独立している。
単一スレッド動作のみを行うことができる単一実行パイプライン110を備えるデータ処理装置100については、単一のプログラムアプリケーションがいずれかの時点でセキュアまたは非セキュアモードで制御時にのみ、単一のオペレーティングシステムを実行する。図2に示される4つの特権レベルの各々については、図1のデバッグモジュール130のEDIFR136は対応するオペランドビット幅を記憶する。この実施形態においては、4つの可能な特権レベルがあるので、フィールドRW[3:0]、即ち、32ビットEDIFR136の4ビットフィールドを使用して、各例外レベルに対応するオペランドビット幅(または同様にレジスタ幅)を表示する。
データ処理装置の可能な動作状態の各々についてのフィールドRW[3:0]の内容は、図2の上部に示される。第1のプログラムアプリケーション202がハイパーバイザ230の制御の下での第1のゲストオペレーティングシステム222上で、またセキュアモニタ240を有するシステム内で実行している場合には、4ビットレジスタフィールドRW[3:0]は「1100」の値を有する。これは、この実施形態においては、「0」の値を使用して32ビットアーキテクチュア状態を表示する場合に、「1」の値を使用して、64ビットプロセッサ状態を表示するからである。RWレジスタフィールドの4つのビットは、各々、PL3、PL2、PL1、およびPL0に対応する。同様に、第2のプログラムアプリケーション204がハイパーバイザ230およびセキュアモニタ240の上部での第1のゲストオペレーティングシステム222上で実行している場合には、4ビットレジスタフィールドRW[3:0]は「1100」の値を有する。一方、(64ビットアプリケーションである)第3のプログラムアプリケーション206が64ビットの第2のゲストオペレーティングシステム224上で実行している場合には、アプリケーション、オペレーティングシステム、ハイパーバイザおよびセキュアモニタの全ては64ビットプログラムコードに対応するので、レジスタフィールドRW[3:0]は「1111」の値を有する。第4のプログラムアプリケーション208が第2のゲストオペレーティングシステム上で実行する場合には、最下位特権レベル(即ち、第4のプログラムアプリケーション208)以外の全ては64ビットコードに対応するので、4ビットレジスタフィールドRW[3:0]は「1110」の値を有する。
データ処理装置がセキュアモードで動作しているときには、PL2に対応するハイパーバイザ層230が無いので、4つではなく3つの特権レベルのみがある。したがって、RW[2]に対する値の選択は、ある程度任意に行われる。図1のデータ処理装置においては、セキュアモードで動作しているときには、RW[2]はRW[1]と同じ値に設定される。したがって、図2においては、第1の64ビット、セキュアアプリケーション209がセキュアオペレーティングシステム226上で動作しているときには、レジスタフィールドRW[3:0]は「1111」の値を有し、第2の32ビット、セキュアアプリケーション210が実行している場合には、レジスタフィールドRW[3:0]は「1110」の値を有する。
マルチプルプロセッサ、つまり、多重実行パイプライン、および/または、いずれかの時点で同時に多重スレッドを実行できるプロセッサを備える他の実施形態においては、多重プログラムアプリケーションを、ことによると多重オペレーティングシステムの制御の下で、またことによるとセキュアおよび非セキュアの混合状態で実行できることが理解される。このような実施形態においては、EDIFRの制御フィールドを二重化して、各ハードウェアスレッドごとに一度ずつ同じ情報を提示することができる。
図3は、図1のデータ処理装置がプログラム命令の実行中に複数の異なる特権レベルの異なるレベル間で切り換える能力を有するように、どのように構成されるか、また異なる特権レベルにおいて、どのように仮想アドレスから物理アドレスへの変換スキームが異なるかを概略的に示す。
図3は、最下位特権レベルPL0での32ビットプログラムアプリケーション410、次の最高特権レベルPL1での32ビットオペレーティングシステム420、次の特権レベルPL2での64ビットハイパーバイザ430、更に最高特権レベルPL3での64ビットセキュアモニタ440を示す。データ処理回路100が非デバッグまたはデバッグモードでプログラム命令を実行している場合には、図1のデータ処理装置100の動作状態は、4つの特権レベルPL0、PL1、PL02、PL3の異なるレベル間で入り、切りを切り換えることができる。データ処理装置がこれらの特権レベル間で切り換わるので、動作状態は変化する。
データ処理装置が特権レベルPL0からのプログラム命令を実行している場合には、プログラムコードによって生成された32ビット仮想メモリアドレスは、ゲストオペレーティングシステム420が属する特権レベルに固有の変換表基準レジスタ(TTBR0_PL1およびTTBR1_PL1)を使用して中間の物理アドレスへ変換される。今度は、中間の物理アドレスは、ハイパーバイザ430の特権レベルPL2に対応する仮想変換表基準レジスタ(VTTBR_PL2)を使用して、最終物理アドレスへ変換される。
同様に、32ビットゲストオペレーティングシステム420のプログラム命令を実行している場合には、実行されているゲストオペレーティングシステム命令に対応する32ビット仮想アドレスは、ゲストオペレーティングシステム420の特権レベルPL1に対応する変換表基準レジスタTTBR0_PL1およびTTBR1_PL2を使用して、中間の物理アドレスへ変換され、今度は、中間の物理アドレスは、ハイパーバイザ430に関連する仮想変換表基準レジスタを参照して最終物理アドレスへ変換される。
対比すると、64ビットハイパーバイザ430のプログラム命令が、特権レベルPL2に対応して実行されると、単一ステージの仮想メモリアドレスから物理メモリアドレス変換のみが行われる必要があり、ハイパーバイザ特権レベル(TTBR_PL2)に関連する変換表基準レジスタを参照して、64ビット仮想アドレスは直接的に物理アドレスへ変換される。この場合には、仮想変換表基準レジスタは必要ない。
図3の異なる特権レベルでの仮想アドレスサイズと仮想メモリアドレスから物理メモリアドレスへの変換との間の差に加えて、異なる特権レベルでシステムレジスタおよび/またはメモリ位置へのアクセス性にも差がある。特に、最高特権レベルにおいては、全てのシステムレジスタを見ることができるようになり、特権レベルが順次に低くなると、利用できるシステムレジスタが順次に少なくなる。
更に、システム制御レジスタが特には動作状態にリンクされている場合には、32ビット状態でアクセスすると、32ビットシステムレジスタとして表示される場合があるが、64ビット状態でアクセスすると、64ビットシステムレジスタとして表示される。例えば、不良アドレスレジスタ(FAR)(図示無し)が、仮想アドレスを含み、これは32ビット状態で32ビット幅であるが、64ビット状態で64ビット幅である。他のシステムレジスタは、当然ながら、64ビット幅であり、32ビット動作状態でアクセスされると一対の32ビット汎用レジスタ上で動作するが、64ビット動作状態でアクセスされると、64ビット汎用レジスタ上で動作するレギュラーシステムレジスタ命令でアクセスすることができる特殊なシステム命令を使用して、アクセスしなければならない。例えば、TTBRレジスタは変換表の物理基準アドレスを含んでいて、物理アドレスはサイズが32ビットより大きいので、32ビット動作状態と64ビット動作状態の両方において、64ビット幅である。他のシステムレジスタは、1つの状態でアクセス可能であるが、他の状態ではアクセスできない。
仮想メモリアドレスから物理メモリアドレスへの変換スキームはプロセッサの動作状態に依存し、図3の場合には、データ処理システムが現在で動作している特権レベルに対応するので、任意の所与の特権レベルでデバッグ動作を行うようにデバッグ命令セットを恣意的に割り当てることができない。例えば、データ処理装置が図3のPL1に対応する動作状態にあるときに、64ビットデバッグ命令セットが割り当てられると、問題が発生する恐れがある。これは、この特権レベルで動作するゲストオペレーティングシステム420は、64ビットデバッグ命令から生成される32ビット仮想アドレスを必要とする仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する32ビットゲストオペレーティングシステムであるからである。TTBRレジスタを読むように設定された64ビットデバッグ命令が、図3のPL1に対応する動作状態で実行された場合には、更なる問題が発生する恐れがある。これは、この命令は通常は64ビットシステムレジスタと単一の64ビット汎用レジスタとの間でデータを転送するが、32ビット命令セット相当は64ビットシステムレジスタと一対の32ビット汎用レジスタとの間で転送するからである。
図4Aは、図1のEDIFRレジスタ136のビット割当を概略的に示す。図4Aで示されるように、EDIFRは、ビットEDIFR[9:8]は、データ処理装置がデバッグ状態になっているときに、現在の特権レベルを指定するように割り当てられる32ビットレジスタであり、一方、ビットEDIFR[13:10]は、図2の実施形態の4つの特権レベルの各々について、その特権レベルに関連付けられた対応するオペランドビット幅を表示するように割り当てられる。各特権レベルのオペランドビット幅は、代わりに、図1の実施形態についてのレジスタ幅とも称することができ、これは可変レジスタ幅(32ビットまたは64ビット構成)を有する。したがって、EDIFRのオペランドビット幅またはレジスタ幅フィールドはRW[13:10]で表わされ、一方、現在の特権レベルを指定するために割り当てられるビットはPL[9:8]で表わされる。オペランドビット幅インジケータビットRW[13:10]は、ビット13が最高特権レベルに対応し、一方で、ビット10は最低特権レベルに対応するように、即ち、ビット13から10は、各々、PL3、PL2、PL1およびPL0に対応するように割り当てられる。フィールドRW[13:10]は、読取専用フィールドであり、一方、フィールドPL[9:8]は現在の特権レベルを更新するために、データ処理装置によって書込み可能である。
図4Bの表は、2ビットフィールドPL[9:8]の4つの可能な値の各々について、表示される対応する特権を示す。特に、PL[9:8]=00は最低特権レベルPL0に対応し、PL[9:8]=01はPL1に対応し、PL[9:8]=10はPL2に対応し、PL[9:8]=11はPL3に対応する。デバッグ回路に関する限りは、これら2つのビットPL[9:8]は読取専用である。データ処理装置100がデバッグモードにあると、2つのビットPL[9:8]はプロセッサの現在の特権レベルを表わし、一方、データ処理装置が非デバッグモードにある場合には、2つのビットフィールドPL[9:8]は「00」に設定される。
図4Cの表は、EDIFRフィールドRW[13:10]の異なるビット値について、4つのRWビットに各々対応する4つの特権レベルの各々の対応するプロセッサレジスタ幅動作状態(または等価なオペランドビット幅動作状態)を指定する。RW[13:10]=1111の値は、64ビットレジスタ幅状態になる4つの特権レベル全てに対応する。RW[13:10]=1110の値は、64ビットレジスタ幅状態にある最上位の特権レベルPL3、PL2、PL1および32ビットレジスタ幅状態にある最下位特権レベルPL0に対応する。RW[13:10]=1100の値は、64ビットレジスタ幅状態にある最上位の2つの特権レベルPL3、PL2に対応する一方で、32ビットレジスタ幅状態にある最下位の2つの特権レベルPL1、PL0に対応する。データ処理装置が現在でセキュアモードで動作しているときには、この特定の値、RW[13:10]=1100は見られないことに留意する必要がある。これは、図2に示されるように、PL2に対応するハイパーバイザ層はセキュアモードに対して見えないからである。RW[13:10]=1000の値は、64ビットレジスタ幅状態にある最上位の特権レベルPL3に対応し、一方で、残りの下位の3つの特権レベルPL2、PL1、PL0は32ビットレジスタ幅状態である。この特定のビットパターンRW[13:10]=1000は、PL3が64ビットレジスタ幅状態であり、一方で、PL1およびPL0が32ビットレジスタ幅状態であるセキュアモードについて表示するように選択されている(この状態では、PL2は存在しない)。RW[13:10]=0000のビットパターンは、4つ全ての特権レベルが32ビットレジスタ幅状態に対応していることを示す。RW[13:10]の他の値は許可されない。
この特定の実施形態については、都合上、レジスタ幅状態インジケータRWおよび特権レベル状態インジケータPLのためにある予め設定された値が選択された。例えば、データ処理装置がデバッグモードでない場合には、フィールドRW[13:10]は「1111」に設定される。現在の特権レベルがPL0以外であれば、低いビットレジスタ幅フィールドの最下位ビットRW[10]は同様にRW[11]に等しく設定される。セキュアモードでは、PL2は存在しないので、RW[12]はRW[11]と同様に設定される。
図5は、「AArch32」のラベルが付いた32ビットレジスタ幅状態および「AArch64」のラベルが付いた64ビットレジスタ幅状態について、プロセッサが所定のレジスタ幅状態にあるときに実行され得る対応する命令セットを概略的に示す。図5においては、第1の設定ラベル510は「AArch32」、即ち、32ビットオペランド幅または32ビットレジスタ幅状態に対応する。このプロセッサ状態においては、データ処理装置は3つの異なる命令セットを実行することができる。第1の命令セット522は、32ビット幅データ上で動作する高性能32ビット幅命令に対応する「A32」命令セットである。第2の命令セット524は、16ビット幅フォーマットに圧縮され最も頻繁に使用されるA32命令のサブセットを備える更にコンパクトな命令セットを表わす「T32」命令セットであるが、これらの命令は32ビット幅データ上でも動作する。第3の命令セット526は、T32に類似するコンパクトな命令セットを表わすが、Java(登録商標)命令およびT32EE命令等のオブジェクト指向プログラムコード間の変換を実施する能力を提供する仮想マシンに適した拡張子を組み込む「T32EE」命令セット(「ThumbEE」命令セットとしても知られる)である。したがって、プロセッサが32ビットレジスタ幅状態(即ち、32ビット幅データ上で動作している)に従って動作しているときには、命令セットについては、実行できる3つの選択肢、A32、T32、T32EEがある。
図5においては、第2のセット550は、単一の「A64」命令セット562を実行できる64ビットレジスタ幅状態「AArch64」を表わす。「A64」命令セットは、64ビット幅データ上で動作する。特には、この実施形態においては、AArch64命令セット550のセットとAArch32命令セット510のセットの間に交差点がない。本技術によると、データ処理装置100が現在でAArch64レジスタ幅状態550にあると判断される場合には、A64命令セット562はデバッグ命令セットとして割り当てられ、一方で、デバッグモードに入ると、プロセッサがAArch32レジスタ幅状態になる場合には、T32命令セット524は、プロセッサがデバッグモードに入ったときにA32命令セット522、T32命令セット524またはT32EE命令セット526を実行していたかどうかに関わらず、デバッグ命令セットとして選択される。明らかに、32ビットレジスタ幅状態AArch32についてのT32命令セット524の特定の選択は、この特定の実施形態に固有のものである。別の実施形態においては、3つの可能なAArch32命令セット522、524、526のうちのいずれか1つはデバッグ命令セットとして選択され得る。更なる別の実施形態においては、全非デバッグモード命令セットのうちの1つのサブセットは、デバッグモード命令セットとして選択される。
図6は、デバッグ処理モジュール130による実装のために適切なデバッグ命令セットを判定するために、図1のデータ処理装置によって実施される動作を概略的に示すフローチャートである。
実行パイプライン110がオンチップメモリ142またはオフチップメモリ144のいずれかから得られた命令を処理するステージ610で、プロセスが開始する。つまり、ステージ610において、データ処理装置はデバッグモードではなく標準動作モードで命令を実行する。次に、プロセスは、ステージ620へ進み、ここで、デバッグイベントが発生したかどうかが判定される。ステージ620でデバッグイベントが発生していない場合には、プロセッサはステージ610へ戻って、ここで、実行パイプラインが継続してメモリ142、144から命令をフェッチ、復号し実行する。しかし、ステージ620でデバッグイベントが実際に検出された場合には、プロセスはステージ630へ進み、同時に、データ処理装置(データ処理回路)はデバッグモードに入る。ステージ630の後で、プロセスはステージ640へ進み、ここで、データ処理装置が64ビットプロセッサ状態になっているかどうか判定される。データ処理装置がステージ640で32ビットプロセッサ状態であることが分かると、プロセスはステージ650へ進み、ここで、データ処理回路はT32命令セットをデバッグ命令セットとして割り当てる。次に、プロセスはステージ670へ進む。一方、ステージ640で、データ処理装置が、図5の状態550に対応する64ビットプロセッサ状態であることが判定される場合には、プロセスはステージ660へ進み、ここで、データ処理回路はデバッグ動作のためにA64命令セットを割り当てる。図5に示されるように、A64命令セットは、64ビットプロセッサ状態でデータ処理回路が実行できる命令セットであり、一方、T32命令セットは、データ処理回路が非デバッグモードで32ビットプロセッサ動作状態において実行できる3つの異なる命令セットのうちの1つである。
図6の実施形態においては、A64またはT32命令セットはステージ650および660でプロセッサによって割り当てられるが、別の実施形態においては、割り当てられたデバッグ命令セットは全命令セットのサブセットを備える。例えば、A64命令セット、A32命令セット、T32命令セットまたはT32EE命令セットのうちの1つのサブセット。デバッグモードでの使用に適した全命令セットのサブセットは、例えば、デバッグ、モードで望ましくない分岐命令等の命令の実行を排除するように適切に選択されてもよい。つまり、T32またはA64命令セットのサブセットにおいては、分岐命令等を強制的に定義させないようにすることができる。
ステージ650および660の両方に続いて、プロセスはステージ670へ進み、ここで、デバッグ回路130はどの命令セットを使用するかをデバッガ152(即ち、デバッガユニット)へ表示する。このステージにおいては、データ処理回路はデバッグモジュール130でレジスタを更新して、どの命令セットが現在使用中であるかを表示する。ステージ670で適切なデバッグ命令セットが表示されると、プロセスはステージ680へ進み、ここで、デバッグ命令の実行が開始する。このステージでは、プロセッサがデバッグモードであるので、実行パイプライン110はメモリから命令をフェッチしないが、この代わりに、図1のデバッグモジュール130の命令転送レジスタ134から直接命令をフェッチする。
ステージ680の後で、プロセスはステージ690へ進み、ここで、データ処理装置がデバッグモードを終了するかどうかが判定される。デバッガソフトウェア152によって制御されているデバッグ動作が完了する場合には、ステージ690でデバッグモードは終了し、終了する場合には、プロセスはステージ610へ戻り、ここで、プロセッサはデバッグモードから標準動作モードへ切り換わり、同時に、命令がメモリ142、144から実行パイプライン110へ送られる。一方で、ステージ690で、更なるデバッグ動作が必要であり、データ処理装置がデバッグモードになっている必要があることが判定されると、プロセスはステージ700へ進み、ここで、デバッグモード中にデータプロセッサが動作している現在の特権レベルへ変更が行われたかどうが確定される。
最新に確定された特権レベルの後で特権レベルへ変更が行われなかった場合には、プロセスはステージ680へ戻る。したがって、現在の特権レベルに変更が行われていなくて、データ処理装置がまだデバッグ状態にある場合には、命令転送レジスタ134からの命令は継続して処理される。しかし、ステージ700で特権レベルに変更がある場合には、プロセスはステージ640へ戻り、ここで、割り当てられたデバッグ命令セットは現在の特権レベルに従って更新される。
図7は、使用され得る仮想マシンの実装を示す。前述した実施形態は、関連する技術に対応する固有の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム720に対応するホストオペレーティングシステム730を実行するホストプロセッサ740上で作動する。典型的には、妥当な速度で実行する仮想マシン実装を提供するためには、大型の強力なプロセッサが必要であるが、互換性または再利用の理由により、他のプロセッサ固有のコードを実行することが望ましい場合等の特定の環境においては上記の手法が妥当とされてもよい。仮想マシンプログラム720は、仮想マシンプログラム720によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同じであるアプリケーションプログラム710に対してアプリケーションプログラムインターフェースを提供する。したがって、上記で説明されたメモリアクセスの制御を含めて、プログラム命令は、仮想マシンハードウェアとの相互関係をモデル化する仮想マシンプログラム720を使用して、アプリケーションプログラム710内から実行されてもよい。
100 集積回路
110 実行パイプライン
120 汎用レジスタ
130 デバッグモジュール
132 デバッグポート
134 命令伝達レジスタ(ITR)
136 外部デバッグインターフェースレジスタ(EDIFR)
140 メモリ管理ユニット(MMU)
142 オンチップメモリ
144 オフチップメモリ
150 ホストパーソナルコンピュータ
152 デバッガソフトウェア
160 制御レジスタ
第1の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路と、
前記データ処理回路と前記データ処理回路の外部デバッガユニットとの間にインターフェースを提供するように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作する場合に前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されるデバッグ回路と、を備えるデータ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの1つをデバッグ命令セットとして使用するように判定するように、前記データ処理回路が構成されるデータ処理装置を提供する。
第2の態様により、本発明は、
少なくとも動作モードおよびデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されることと、
前記データ処理回路が前記デバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの1つを判定することを備える、データ処理方法を提供する。
第3の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
前記データ処理を実施するための手段と前記データ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、前記データ処理を実施するための手段が前記デバッグモードで動作するときに、前記データ処理を実施するための手段の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されるデバッグ処理のための手段と、を備え、
前記データ処理を実施するための手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの1つを判定するように構成された、データ処理装置を提供する。

Claims (36)

  1. プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードおよびデバッグモードで動作するように構成される、データ処理回路と、
    前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間にインターフェースを設けるように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成される、デバッグ回路と、を備える、データ処理装置であって、
    前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの1つをデバッグ命令セットとして使用するように割り当てるように、前記データ処理回路が構成される、データ処理装置。
  2. 前記データ処理回路が、前記デバッガユニットに対して、前記データ処理回路を制御するために使用される割り当てられた前記デバッグ命令セットを表示するように構成される、請求項1に記載のデータ処理装置。
  3. 前記データ処理回路が、複数の特権レベルで動作するように構成可能であり、異なる特権レベルにおいて、前記データ処理回路は、メモリおよびレジスタセットのうちの少なくとも1つに対する異なるアクセス許可をプログラム命令に与える、請求項1に記載のデータ処理装置。
  4. 前記特権レベルの異なるレベルにおいて、前記データ処理回路は各々異なる仮想メモリアドレスから物理メモリアドレスへの変換規則を適用する、請求項3に記載のデータ処理装置。
  5. 複数の前記特権レベルの各々に対応する、複数の異なるソフトウェア階層レベルに対応するプログラム命令を実行するように構成される、請求項3または4に記載のデータ処理装置。
  6. 複数の前記特権レベルのうちの第1のレベルはアプリケーション層に対応し、複数の前記特権レベルのうちの第2のレベルは動作システム層に対応する、請求項5に記載のデータ処理装置。
  7. 複数の前記特権レベルのうちの第3のレベルはハイパーバイザ層に対応する、請求項6に記載のデータ処理装置。
  8. 更なる特権レベルがセキュリティ監視層に対応する、請求項6または7に記載のデータ処理装置。
  9. 複数の前記特権レベルの異なるレベルの間での切り換え時に、前記データ処理回路は、更新されたデバッグ命令セットを生成し、更新された前記デバッグ命令セットを前記デバッガユニットへ表示するために、現在の前記動作状態および前記デバッグ命令セットの前記判定を繰り返すように構成される、請求項3〜8のいずれか一項に記載のデータ処理装置。
  10. 現在の前記動作状態は、各々異なるオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択される、請求項1〜9のいずれか一項に記載のデータ処理装置。
  11. 複数の前記動作状態は、少なくとも32ビット動作状態および64ビット動作状態を含む、請求項10に記載のデータ処理装置。
  12. 前記プログラム命令のオペランドを記憶するための複数のレジスタを備えるデータ処理装置であって、異なる前記オペランドビット幅は、前記データ処理回路によって使用される異なるレジスタ幅に対応する、請求項10または11に記載のデータ処理装置。
  13. 複数の前記レジスタの少なくとも1つのサブセットは可変幅レジスタとして構成される、請求項12に記載のデータ処理装置。
  14. 前記データ処理回路は、前記デバッガユニットへアクセス可能な少なくとも1つのレジスタへ書き込むことによって、前記デバッガユニットへ前記デバッグ命令セットを表示するように構成される、請求項2〜13のいずれか一項に記載のデータ処理装置。
  15. 前記データ処理回路は、前記デバッガユニットへ制御コマンドを送信することによって、前記デバッガユニットへ設定された前記デバッグ命令セットを表示するように構成される、請求項2に記載のデータ処理装置。
  16. 前記デバッガユニットにとってアクセス可能な所与の位置に、現在の前記動作状態の記憶された値を維持するように構成される、請求項1〜15のいずれか一項に記載のデータ処理装置。
  17. 現在の前記動作状態は各々のオペランドビット幅を有する複数のプロセッサ動作状態から選択され、前記デバッガユニットにとってアクセス可能な第1の位置に、複数の前記特権レベルの各々と関連付けられるオペランドビット幅の記録を維持するように構成される、請求項3に記載のデータ処理装置。
  18. 前記データ処理装置が前記デバッガユニットにとってアクセス可能な第2の位置で動作する現在の特権レベルの記録を維持するように構成される、請求項17に記載のデータ処理装置。
  19. 前記データ処理回路は、前記各々のオペランドビット幅を有する複数の前記プロセッサ動作状態から前記デバッグ命令セットを判定するために、現在の前記特権レベルを使用する、請求項18に記載のデータ処理装置。
  20. 現在の前記プロセッサ動作状態に対応する現在のオペランドビット幅の記録を維持するように構成される、請求項1〜16のいずれか一項に記載のデータ処理装置。
  21. 前記デバッガユニットは、現在の前記オペランドビット幅の前記記録から、前記データ処理回路によって割り当てられる前記デバッグ命令セットを推定するように構成される、請求項20に記載のデータ処理装置。
  22. 前記デバッガユニットは、前記データ処理回路が動作している現在の特権レベルを判定するために、少なくとも1つのプログラム命令を前記データ処理回路によって実行させるように構成される、請求項21に記載のデータ処理装置。
  23. 割り当てられた前記デバッグ命令セットは、非デバッグモードで前記データ処理装置による実行のために利用可能な全命令セットのサブセットを備える、請求項1〜22のいずれか一項に記載のデータ処理装置。
  24. 前記全命令セットは、A32命令セット、T32命令セット、T32EE命令セット、およびA64命令セットのうちの1つを備える、請求項23に記載のデータ処理装置。
  25. 前記全命令セットの前記サブセットは少なくともブランチ命令を除外する、請求項23または請求項23または24に記載のデータ処理装置。
  26. データ処理装置の動作のデバッグ処理を実施するデバッグユニットであって、前記データ処理装置は少なくともデバッグモードと動作モードで、また複数の異なる動作状態において動作可能であり、
    前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態の1つを指定する現在のオペランドビット幅の記録を読み取るための読み取り回路と、
    前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定するための推定回路と、を備える、デバッグユニット。
  27. 前記推定回路は、前記データ処理装置から受信される制御コマンドに基づいて、前記デバッグ命令セットを推定するように構成される、請求項26に記載のデバッグユニット。
  28. 前記推定回路は、前記データ処理装置内の現在の前記オペランドビット幅の記録の前記読み取り内容に基づいて、前記デバッグ命令セットを推定するように構成される、請求項26に記載のデバッグユニット。
  29. 前記データ処理装置は複数の異なる特権レベルで動作可能であり、異なる特権レベルにおいて、前記データ処理装置はメモリおよびレジスタセットのうちの少なくとも1つに対する異なるアクセス許可をプログラム命令に与え、前記推定回路は、前記データ処理装置が動作している現在の特権レベルを判定するために、少なくとも1つのプログラム命令を前記データ処理装置によって実行させるように構成される、請求項27に記載のデバッグユニット。
  30. データ処理装置の動作のデバッグ処理を実施するためのデバッグ方法であって、前記データ処理装置は少なくともデバッグモードおよび動作モードで、複数の異なる動作状態で動作可能であり、
    前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態のうちの1つを指定する現在のオペランドビット幅の記録を読み取ることと、
    前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定することと、を含む、デバッグ方法。
  31. 請求項30に記載のデバッグ方法を実装するための、コンピュータプログラム。
  32. データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項1〜25のいずれか一項に記載のデータ処理装置に従って命令実行環境を提供する、仮想マシン。
  33. プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
    データ処理を実施するための前記手段とデータ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、データ処理を実施するための前記手段が前記デバッグモードで動作するときに、データ処理を実施するための前記手段の動作を制御するように構成されるデバッグ処理のための手段と、を備え、
    データ処理を実施するための前記手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの1つを割り当て、デバッグ分析のための前記手段に、データ処理を実施するための前記手段を制御するために使用される前記割り当てられたデバッグ命令セットを表示するように構成される、データ処理装置。
  34. 少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
    前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成される、デバッグインターフェースを提供することと、
    前記データ処理回路がデバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの1つを割り当てることと、を含む、データ処理方法。
  35. 請求項34の方法を実施するためのコンピュータプログラム製品。
  36. データ処理装置の動作のデバッグ処理を実施するための装置であって、前記データ処理装置は少なくともデバッグモードと動作モード、また複数の異なる動作状態において動作可能であり、デバッグユニットは、
    前記データ処理装置の複数の前記動作状態の1つを指定する現在のオペランドビット幅の記録を、前記データ処理装置内の記憶場所から読み取るための手段と、
    前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定するための手段と、を備える、装置。
JP2013529705A 2010-09-24 2011-07-25 データ処理装置のデバッグ処理 Active JP5778283B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1016077.8A GB2483906C (en) 2010-09-24 2010-09-24 Selection of debug instruction set for debugging of a data processing apparatus
GB1016077.8 2010-09-24
PCT/GB2011/051410 WO2012038710A1 (en) 2010-09-24 2011-07-25 Debugging of a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2013542499A true JP2013542499A (ja) 2013-11-21
JP5778283B2 JP5778283B2 (ja) 2015-09-16

Family

ID=43127905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013529705A Active JP5778283B2 (ja) 2010-09-24 2011-07-25 データ処理装置のデバッグ処理

Country Status (10)

Country Link
US (2) US9355014B2 (ja)
EP (1) EP2619671B1 (ja)
JP (1) JP5778283B2 (ja)
KR (1) KR101770665B1 (ja)
CN (1) CN103140837B (ja)
GB (1) GB2483906C (ja)
IL (1) IL224509A (ja)
MY (1) MY165363A (ja)
TW (1) TWI423018B (ja)
WO (1) WO2012038710A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020522769A (ja) * 2017-05-17 2020-07-30 グーグル エルエルシー オペレーティングシステムの検証

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2483906C (en) 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
US9053233B2 (en) * 2011-08-15 2015-06-09 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
KR20140083530A (ko) * 2012-12-26 2014-07-04 삼성전자주식회사 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법
US9183399B2 (en) * 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US20150019775A1 (en) * 2013-03-14 2015-01-15 Microchip Technology Incorporated Single Wire Programming and Debugging Interface
JP6086230B2 (ja) 2013-04-01 2017-03-01 日本電気株式会社 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
US9665468B2 (en) * 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
GB2527088B (en) * 2014-06-11 2021-07-14 Advanced Risc Mach Ltd Executing debug program instructions on a target apparatus processing pipeline
GB2530050B (en) * 2014-09-10 2021-07-21 Advanced Risc Mach Ltd Debugging in a data processing apparatus
US10013360B2 (en) * 2015-03-04 2018-07-03 Cavium, Inc. Managing reuse information with multiple translation stages
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
CN106779700B (zh) * 2016-11-15 2021-03-30 中国银行股份有限公司 跨行交易权限控制方法及装置
CN110383256B (zh) * 2018-02-02 2022-01-14 华为技术有限公司 一种内核完整性保护方法及装置
US11275587B2 (en) * 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
CN108710554B (zh) * 2018-05-21 2023-06-06 格兰菲智能科技有限公司 处理器侦错系统及方法
GB2582790B (en) 2019-04-03 2021-03-31 Graphcore Ltd Debugging mechanism
US11468199B2 (en) 2020-07-22 2022-10-11 Apple Inc. Authenticated debug for computing systems
CN112346783B (zh) * 2020-11-05 2022-11-22 海光信息技术股份有限公司 一种处理器及其操作方法、装置、设备和介质
CN113672554B (zh) * 2021-07-06 2023-12-29 平头哥(杭州)半导体有限公司 处理器核、处理器、片上系统和调试系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330826A (ja) * 1999-05-19 2000-11-30 Arm Ltd デバッグ命令を実行するデータ処理装置及びそのデータ処理方法
JP2008097602A (ja) * 2006-10-10 2008-04-24 Internatl Business Mach Corp <Ibm> 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム
JP2010500661A (ja) * 2006-08-09 2010-01-07 クゥアルコム・インコーポレイテッド プロセッサ命令セット動作モードを比較するデバッグ回路

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530804A (en) * 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6415382B1 (en) * 1999-04-30 2002-07-02 Adaptec, Inc. Hard disk bootstrap redirection
JP3805578B2 (ja) * 1999-09-14 2006-08-02 松下電器産業株式会社 プロセッサ
US7134116B1 (en) * 2001-04-30 2006-11-07 Mips Technologies, Inc. External trace synchronization via periodic sampling
TW591395B (en) * 2003-02-27 2004-06-11 Acer Inc Recovery method of multi-functional operating system and system thereof
US6934805B2 (en) * 2003-05-19 2005-08-23 International Business Machines Corporation Method and apparatus for managing computer storage devices for improved operational availability
US7814308B2 (en) * 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
US8769495B1 (en) * 2005-09-30 2014-07-01 Sony Computer Entertainment Inc. Systems and methods for debugging in a multiprocessor environment
US7412589B2 (en) * 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US7529916B2 (en) * 2006-08-16 2009-05-05 Arm Limited Data processing apparatus and method for controlling access to registers
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8914274B1 (en) * 2006-12-11 2014-12-16 Synopsys, Inc. Method and system for instruction set simulation with concurrent attachment of multiple debuggers
US8255203B2 (en) * 2007-04-26 2012-08-28 Hewlett-Packard Development Company, L.P. Method of debugging an executable computer program having instructions for different computer architectures
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
GB2483906C (en) 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330826A (ja) * 1999-05-19 2000-11-30 Arm Ltd デバッグ命令を実行するデータ処理装置及びそのデータ処理方法
JP2010500661A (ja) * 2006-08-09 2010-01-07 クゥアルコム・インコーポレイテッド プロセッサ命令セット動作モードを比較するデバッグ回路
JP2008097602A (ja) * 2006-10-10 2008-04-24 Internatl Business Mach Corp <Ibm> 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020522769A (ja) * 2017-05-17 2020-07-30 グーグル エルエルシー オペレーティングシステムの検証
JP7082981B2 (ja) 2017-05-17 2022-06-09 グーグル エルエルシー オペレーティングシステムの検証

Also Published As

Publication number Publication date
US20120079254A1 (en) 2012-03-29
CN103140837A (zh) 2013-06-05
US20160239405A1 (en) 2016-08-18
KR20130112033A (ko) 2013-10-11
EP2619671B1 (en) 2016-04-20
GB2483906B (en) 2018-06-27
JP5778283B2 (ja) 2015-09-16
TW201224740A (en) 2012-06-16
IL224509A (en) 2017-05-29
GB201016077D0 (en) 2010-11-10
MY165363A (en) 2018-03-21
KR101770665B1 (ko) 2017-08-23
GB2483906A (en) 2012-03-28
GB2483906C (en) 2019-10-09
US10318407B2 (en) 2019-06-11
EP2619671A1 (en) 2013-07-31
US9355014B2 (en) 2016-05-31
TWI423018B (zh) 2014-01-11
WO2012038710A1 (en) 2012-03-29
CN103140837B (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
JP5778283B2 (ja) データ処理装置のデバッグ処理
US8261047B2 (en) Qualification of conditional debug instructions based on address
US8874883B2 (en) Debugging of a data processing apparatus
KR101253454B1 (ko) 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리
US7213125B2 (en) Method for patching virtually aliased pages by a virtual-machine monitor
US9804851B2 (en) Operand size control
US7725894B2 (en) Enhanced un-privileged computer instruction to store a facility list
US9720704B2 (en) Data driven hardware chips initialization via hardware procedure framework
GB2514882A (en) Instruction emulation processors, methods, and systems
US20060026577A1 (en) Method and system for replacing instructions and instruction blocks in computer code
JP7445431B2 (ja) 命令の実行を制御する装置および方法
GB2438228A (en) Move data facility with user selectable storage access keys
US8205032B2 (en) Virtual machine control structure identification decoder
US10409602B2 (en) Vector operand bitsize control
CN113474754A (zh) 有条件退让给管理程序指令
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150515

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150522

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150608

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150708

R150 Certificate of patent or registration of utility model

Ref document number: 5778283

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250