JP2006163566A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2006163566A JP2006163566A JP2004351003A JP2004351003A JP2006163566A JP 2006163566 A JP2006163566 A JP 2006163566A JP 2004351003 A JP2004351003 A JP 2004351003A JP 2004351003 A JP2004351003 A JP 2004351003A JP 2006163566 A JP2006163566 A JP 2006163566A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- circuit
- instruction code
- break
- code
- 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.)
- Withdrawn
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】 プリフィックス命令を含む命令セットを有する情報処理装置におけるパイプライン制御を簡略化して高速実行可能な情報処理装置を提供する。
【解決手段】 情報処理装置1は、フェッチ回路12の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを命令選択回路15に選択させる命令コードセレクト信号を発生するセレクト信号発生回路26と、命令選択回路15で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路17と、プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路18と、フェッチ回路12の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも1つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路13とを具備する。
【選択図】 図1
【解決手段】 情報処理装置1は、フェッチ回路12の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを命令選択回路15に選択させる命令コードセレクト信号を発生するセレクト信号発生回路26と、命令選択回路15で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路17と、プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路18と、フェッチ回路12の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも1つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路13とを具備する。
【選択図】 図1
Description
本発明は、命令のフェッチ、命令のデコード及び各種の演算処理をパイプライン制御で行う情報処理装置に関する。
本出願人は、ターゲット命令の前に置かれ、かつターゲット命令の機能を修飾(拡張)するプリフィックス命令を含む命令セットを用いるマイクロコンピュータ(広義には、情報処理装置)を開発している。このようなプリフィックス命令として、例えば、ターゲット命令が即値を含む場合に、この即値の上位ビットをプリフィックス命令で与えてターゲット命令の即値を拡張する即値拡張プリフィックス命令等を有している。
本出願人は、下記の特許文献1において、プリフィックス命令で修飾されたターゲット命令の機能を高速で実行できる、命令コードのフェッチ、命令コードのデコード及び各種の演算処理をパイプライン制御で行うマイクロコンピュータ(情報処理装置)を提案した。
しかしながら、このようなパイプライン制御を行うマイクロコンピュータの動作開始時には、命令コードを一旦格納するための命令キューが空であるため、実行回路の処理を中止させる制御信号を命令キューからデコード回路に出力して、デコード回路が実行回路における処理を止めるようにしている。その結果、パイプライン制御が複雑になるという問題があった。
また、実行回路においてジャンプ命令が実行されると、ジャンプ命令後に命令キューに残っている命令コードはすべて無効となり、ジャンプ後の命令コードを命令キューに順次格納する必要があるため、上述したマイクロコンピュータの動作開始時と同様の問題があった。
さらに、命令キューにプリフィックス命令コードしか格納されていない場合にも、実行回路における処理を中止させる制御信号を命令キューからデコード回路に出力して、デコード回路が実行回路における処理を止めるようにしているため、上述したマイクロコンピュータの動作開始時と同様の問題があった。
さらに、マイクロコンピュータにデバッグ機能を付加した場合には、ブレーク処理において1クロックの遅れが生じるため、ブレーク処理の対象となる命令が実行回路において実行されないようにデコード回路で処理する必要があり、パイプライン制御が複雑になるという問題があった。
特開2004−30015号公報(段落0005)
そこで、上記の点に鑑み、本発明は、プリフィックス命令を含む命令セットを用いる情報処理装置におけるパイプライン制御を簡略化して高速実行可能な情報処理装置を提供することを目的とする。
上記課題を解決するため、本発明に係る情報処理装置は、パイプライン制御により命令を処理し、プログラムにおいてターゲット命令の前に置かれたときにターゲット命令の機能を修飾するプリフィックス命令が使用可能な情報処理装置であって、プログラムに含まれている複数の命令をそれぞれ表す複数の命令コードが格納された命令コードメモリと、命令コードメモリから特定の命令コードを読み出すための命令アドレスを発生する命令アドレスジュネレータと、命令コードメモリから順次読み出された複数の命令コードを複数の命令キューにそれぞれフェッチするフェッチ回路と、フェッチ回路の複数の命令キューに接続された命令選択回路と、フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを命令選択回路に選択させる命令コードセレクト信号を発生するセレクト信号発生回路と、命令選択回路で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路と、プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路と、フェッチ回路の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも1つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路とを具備する。
ここで、デバッグ時にブレーク処理の対象となる命令を表す命令コードの命令アドレスが命令アドレスジュネレータから入力されると、ブレーク条件成立信号を発生するブレーク条件判定回路と、ブレーク条件成立信号がブレーク条件判定回路から入力されたときにブレークビットを発生するデバッグ回路と、フェッチ回路と命令コード変換回路との間に接続されたブレーク選択回路とをさらに具備し、フェッチ回路が、デバッグ回路から入力されるブレークビットを命令コードに対応させてブレークビット用キューにフェッチし、命令選択回路が、セレクト信号発生回路から入力される命令コードセレクト信号に従って、フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを選択し、ブレーク選択回路が、セレクト信号発生回路から入力されるブレークセレクト信号に従って、フェッチ回路のブレークビット用キューにフェッチされた、命令選択回路によって選択された命令コードに対応するブレークビットを選択し、命令コード変換回路が、ブレーク選択回路によって選択されたブレークビットが入力されると、命令選択回路によって選択された命令コードをプリフィックス命令コードに変換し、デコード回路が、プリフィックス命令コードが命令コード変換回路から入力されると、プリフィックス命令コードをノンオペレーション命令コードとみなしても良い。
また、セレクト信号発生回路が、フェッチ回路の複数の命令キューがすべて空である場合に、命令コード変換回路に命令変換信号を出力しても良い。
さらに、デコード回路からの制御信号に従って動作する実行回路をさらに具備し、セレクト信号発生回路が、実行回路からジャンプ命令成立信号が入力されると、命令コード変換回路に命令変換信号を出力しても良い。
さらに、デコード回路からの制御信号に従って動作する実行回路をさらに具備し、セレクト信号発生回路が、実行回路からジャンプ命令成立信号が入力されると、命令コード変換回路に命令変換信号を出力しても良い。
本発明によれば、以下に示す効果が得られる。
(1)情報処理装置の動作開始時やジャンプ命令後には、プリフィックス命令コードをデコード回路に出力すると共に、デコード回路においてプリフィックス命令をノーオペレーション命令として処理することにより、デコード回路において実行回路の処理を中止させる処理を行う必要がなくなるので、パイプライン制御の簡略化を図ることができる。
(2)命令キューにプリフィックス命令コードしか格納されていない場合にデコード回路にプリフィックス命令コードが出力されても、デコード回路はプリフィックス命令をノーオペレーション命令として処理するだけであり、実行回路の処理を中止させる処理を行う必要はないので、パイプライン制御の簡略化を図ることができる。
(3)情報処理装置にデバッグ機能を付加した場合でも、ブレークビットが立った命令コードをプリフィックス命令コードに変換してデコード回路に入力させて、デコード回路がプリフィックス命令をノーオペレーション命令として処理することにより、実行回路におけるブレーク処理の対象となる命令の実行を防ぐことができるので、ブレーク処理における1クロック遅延に起因するパイプライン制御の複雑化を解消することができる。
(1)情報処理装置の動作開始時やジャンプ命令後には、プリフィックス命令コードをデコード回路に出力すると共に、デコード回路においてプリフィックス命令をノーオペレーション命令として処理することにより、デコード回路において実行回路の処理を中止させる処理を行う必要がなくなるので、パイプライン制御の簡略化を図ることができる。
(2)命令キューにプリフィックス命令コードしか格納されていない場合にデコード回路にプリフィックス命令コードが出力されても、デコード回路はプリフィックス命令をノーオペレーション命令として処理するだけであり、実行回路の処理を中止させる処理を行う必要はないので、パイプライン制御の簡略化を図ることができる。
(3)情報処理装置にデバッグ機能を付加した場合でも、ブレークビットが立った命令コードをプリフィックス命令コードに変換してデコード回路に入力させて、デコード回路がプリフィックス命令をノーオペレーション命令として処理することにより、実行回路におけるブレーク処理の対象となる命令の実行を防ぐことができるので、ブレーク処理における1クロック遅延に起因するパイプライン制御の複雑化を解消することができる。
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図1は、本発明の一実施形態によるマイクロコンピュータ1(広義には、情報処理装置)の構成を示す図である。図1に示すように、本実施形態によるマイクロコンピュータ1は、CPU10(広義には、処理回路)と、命令コードメモリ30と、ブレーク条件判定回路41と、デバッグ回路42と、BCU(バスコントローラユニット)100とを含む。
なお、マイクロコンピュータ1は、これ以外にも、ROM(Read Only Memory)、RAM(Random Access Memory)、MMU(Memory Management Unit)、DMAC(Direct Access Memory Controller)、LCD(Liquid Crystal Display)ドライバ又はSIO(Serial Input Output)等の各種周辺回路を含むことができる。
図1は、本発明の一実施形態によるマイクロコンピュータ1(広義には、情報処理装置)の構成を示す図である。図1に示すように、本実施形態によるマイクロコンピュータ1は、CPU10(広義には、処理回路)と、命令コードメモリ30と、ブレーク条件判定回路41と、デバッグ回路42と、BCU(バスコントローラユニット)100とを含む。
なお、マイクロコンピュータ1は、これ以外にも、ROM(Read Only Memory)、RAM(Random Access Memory)、MMU(Memory Management Unit)、DMAC(Direct Access Memory Controller)、LCD(Liquid Crystal Display)ドライバ又はSIO(Serial Input Output)等の各種周辺回路を含むことができる。
命令コードメモリ30には、各種の命令、ターゲット命令、及び、ターゲット命令の前に置かれてターゲット命令の機能を修飾するプリフィックス命令を表す命令コードが格納されている。
BCU100は、図示しない32ビットの命令データバスや、命令データアクセスのための命令アドレスバスや、32ビットのデータバスや、データアクセスのためのデータアドレスバスや、コントロール信号のためのコントロールバス等の各種バスのバスコントロール処理を行う。CPU10は、このような各種バスを介して外部と信号のやり取りを行う。
CPU10は、ROMやRAMに記憶されたプログラムに従って、命令のフェッチ、命令のデコード、演算処理、レジスタへの書き込み等をパイプライン制御で行う。CPU10は、32ビット幅のデータを扱うが、16ビットの命令コードを処理するよう構成されている。
CPU10は、命令アドレスジェネレータ11と、フェッチ回路12と、プリフィックスデータ生成回路13と、ブレーク選択回路14と、命令選択回路15と、セレクト信号発生回路16と、命令コード変換回路17と、デコード回路18と、実行回路19とを含んでいる。
命令アドレスジェネレータ11は、プログラムカウンタ等を用いて命令アドレスを生成して、命令コードメモリ30に命令アドレスを出力することにより、必要な命令コードをBCU100を介してフェッチ回路12の命令キューに入力する。
フェッチ回路12は、命令コードメモリ30から入力されてくる命令コードを命令キュー0から命令キュー5にフェッチすると共に、デバッグ回路42から入力される1ビットのブレークビットを、命令コードメモリ30から入力されてくる命令コードと対応させてブレークビット用キューbrk0からbrk5にフェッチする。フェッチ回路12は、命令キュー0から命令キュー5にフェッチされた命令コードを命令選択回路15に出力すると共に、ブレークビット用キューbrk0からbrk5にフェッチされたブレークビットをブレーク選択回路14に出力する。
プリフィックスデータ生成回路13は、プリフィックス命令を表す命令コードがフェッチ回路12から入力されてくると、このプリフィックス命令を表す命令コードと、その後にフェッチ回路12から入力されてくるターゲット命令を表す命令コードとに基づいて、このプリフィックス命令によって修飾されたターゲット命令のデコードを行う。プリフィックスデータ生成回路13の出力信号は実行回路19に出力される。
例えば、図2に示すように、プリフィックス命令の1つである即値拡張プリフィックス命令(以下、「ext命令」と称する。)を表す命令コード(以下、「ext命令コード」と称する。)220は、ビット15からビット13に3ビットのオペコード指定領域222を有し、ビット12からビット0に13ビットの即値を指定する即値指定領域224を有している。オペコード指定領域212は、ext命令コードであることを示すオペコード「110」が格納されている。即値指定領域224には、13ビットの即値(imm13)の値が格納されている。
また、図3に示すように、ext命令のターゲット命令を表す16ビットの命令コード(以下、「ターゲット命令コード」と称する。)210は、ビット15からビット10に6ビットのオペコード指定領域212を有し、ビット9からビット4に6ビットの即値指定領域216を有し、ビット3からビット0に4ビットのレジスタ指定領域218を有している。オペコード指定領域212は、オペレーションの内容を特定するためのオペコードが格納されている。即値指定領域216には、6ビットの即値(imm6)の値が格納されており、レジスタ指定領域218には、いずれかの汎用レジスタ(rd)を示すコードが格納されている。
ここで、ext命令のターゲット命令は、即値(imm6)と汎用レジスタ(rd)の値に対してオペコードで示される演算を行い、その演算結果を汎用レジスタ(rd)に対して書き込む動作を行う命令である。
また、ext命令のターゲット命令は、単独で実行することもできるし、直前の1つ又は複数のext命令と組み合わせて実行することもできる。
ここで、ext命令のターゲット命令は、即値(imm6)と汎用レジスタ(rd)の値に対してオペコードで示される演算を行い、その演算結果を汎用レジスタ(rd)に対して書き込む動作を行う命令である。
また、ext命令のターゲット命令は、単独で実行することもできるし、直前の1つ又は複数のext命令と組み合わせて実行することもできる。
ext命令はプリフィックス命令であるため、単独ではCPU10におけるALU(データ演算回路)での演算等の実行を何ら伴わないが、後続のターゲット命令が実行される際に、そのターゲット命令の実行に使用する即値を拡張する機能を有する。例えば、図3の命令コードのように命令コードに即値を含んでいる命令がext命令のターゲット命令となった場合に、このターゲット命令の実行時には、ターゲット命令コード210に含まれる即値(imm6)を、ext命令コード220に含まれている13ビットの即値(imm13)を用いて拡張する機能を有する。
図4は、ターゲット命令を2個のext命令と組み合わせて実行する場合のオペレーションを表した式と、このオペレーションの実行に使用される拡張された即値のビットフィールドを示す図である。同図に示すように、1回目のext命令コードに含まれている13ビットの即値(imm13)がビット31からビット19のフィールド252にセットされ、2回目のext命令コードに含まれている13ビットの即値(imm13)がビット18からビット6のフィールド254にセットされ、ターゲット命令コードの6ビットの即値(imm6)がビット5からビット0のフィールド256にセットされることにより、32ビットの即値(imm32)250がプリフィックスデータ生成回路13において生成される。
図3のターゲット命令コード210のオペコード指定領域212において指定されたオペコードと、ターゲット命令コード210のレジスタ指定領域218において指定された汎用レジスタ(rd)を示すコードと、図4の32ビットの即値とは、図1に示すプリフィックスデータ生成回路13から実行回路19に出力される。実行回路19は、オペコードにより表されるオペレーションの内容(演算)を32ビットの即値を用いて行い、その結果を汎用レジスタ(rd)に格納する。
命令選択回路15は、フェッチ回路12の命令キュー0から命令キュー5の出力信号(命令コード)の内のいずれか1つを、セレクト信号発生回路16から入力される命令コードセレクト信号に従って選択する。
ブレーク選択回路14は、フェッチ回路12のブレークビット用キューbrk0からブレークビット用キューbrk5にフェッチされた、かつ、命令選択回路15によって選択された命令コードに対応するブレークビットを、セレクト信号発生回路16から入力されるブレークセレクト信号に従って選択する。ブレーク選択回路14は、選択したブレークビットを命令コード変換回路17及びデコード回路18に出力する。
セレクト信号発生回路16は、フェッチ回路12の命令キュー0から命令キュー5に命令コードが格納されていない場合、及び、実行回路19からジャンプ命令成立信号が入力された場合には、命令コード変換回路17に命令コードをext命令コードに変換させる命令変換信号を発生する。その他の場合には、フェッチ回路12の命令キュー0から命令キュー5の出力信号(命令コード)をキューの順番に選択するように命令選択回路15を制御する命令コードセレクト信号を発生する。
また、セレクト信号発生回路16は、デバッグ時にブレーク処理を行う際に、命令選択回路15によって選択された命令コードに対応するブレークビットを選択するようにブレーク選択回路14を制御するブレークセレクト信号を発生する。
また、セレクト信号発生回路16は、デバッグ時にブレーク処理を行う際に、命令選択回路15によって選択された命令コードに対応するブレークビットを選択するようにブレーク選択回路14を制御するブレークセレクト信号を発生する。
命令コード変換回路17は、セレクト信号発生回路16から命令変換信号が入力されると、命令選択回路15から入力される命令コードの上位3ビットを「110」に変更することにより、この命令コードをext命令コードに変換したのち、変換したext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力される命令コードの上位3ビットの値が「110」であるか否かを判定し、上位3ビットの値が「110」でない場合には、この命令コードはext命令コードではないと判断して、この命令コードをデコードした後、デコードされた命令を実行するように実行回路19を制御する制御信号を実行回路19に出力する。一方、命令コード変換回路17から入力される命令コードの上位3ビットの値が「110」である場合には、デコード回路18は、この命令コードはext命令コードであると判断して、ext命令コードをノンオペレーション命令コード(nop命令コード)とみなすことにより、ノンオペレーション命令として処理する。
また、デコード回路18は、ブレークビットがブレーク選択回路14から入力されると、所定のブレーク処理を行う。
また、デコード回路18は、ブレークビットがブレーク選択回路14から入力されると、所定のブレーク処理を行う。
実行回路19は、デコード回路18から入力される制御信号及びプリフィックスデータ生成回路13の出力信号に従って、データ演算処理やアドレス演算処理等を行う。実行回路19の出力信号は、BCU100を介して外部に出力される。
ブレーク条件判定回路41は、CPU10のデバッグ時に外部の入力装置(図示せず)から入力される、CPU10をブレークさせる命令アドレス(以下、「ブレークアドレス」と称する。)と、命令アドレスジェネレータ11から入力される命令アドレスとを比較して、両者が一致した場合には、ブレーク条件成立信号をデバッグ回路42に出力する。
デバッグ回路42は、CPU10のデバッグ動作を制御すると共に,ブレーク条件成立信号がブレーク条件判定回路41から入力されると、ブレークビットをフェッチ回路12に出力する。
次に、本実施形態によるマイクロコンピュータ1の通常動作時の動作について、図1を参照しながら説明する。なお、以下に説明する動作は、パイプライン制御で行われる。
動作開始時には、CPU10のフェッチ回路12に命令コードが何も入っていないため、セレクト信号発生回路16は、命令変換信号を発生して、命令コード変換回路17に出力する。また、セレクト信号発生回路16は、フェッチ回路12の命令キュー0の出力信号を選択させる命令コードセレクト信号を命令選択回路15に出力する。
このとき、命令キュー0には命令コードがフェッチされていないため、ランダムなデータが命令選択回路15によって選択されて、命令コード変換回路17に入力される。命令コード変換回路17は、命令選択回路15から入力されるランダムなデータの上位3ビットを「110」に変更することにより、ランダムなデータをext命令コードに変換する。その後、命令コード変換回路17は、変換したext命令コードをデコード回路18に出力する。
動作開始時には、CPU10のフェッチ回路12に命令コードが何も入っていないため、セレクト信号発生回路16は、命令変換信号を発生して、命令コード変換回路17に出力する。また、セレクト信号発生回路16は、フェッチ回路12の命令キュー0の出力信号を選択させる命令コードセレクト信号を命令選択回路15に出力する。
このとき、命令キュー0には命令コードがフェッチされていないため、ランダムなデータが命令選択回路15によって選択されて、命令コード変換回路17に入力される。命令コード変換回路17は、命令選択回路15から入力されるランダムなデータの上位3ビットを「110」に変更することにより、ランダムなデータをext命令コードに変換する。その後、命令コード変換回路17は、変換したext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるext命令コードをnop命令コードとみなす。その結果、デコード回路18から実行回路19に実行させる命令を示す制御信号は出力されず、実行回路19は、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つだけであるので、パイプライン処理の複雑化を防ぐことができる。
その後、プログラムに従って命令アドレスジェネレータ11からBCU100を介して命令アドレスを命令コードメモリ30に出力することにより、例えば、sub命令コードと、2つのext命令(即値拡張プリフィックス命令)を表す命令コード(以下、「第1及び第2のext命令コード」と称する。)と、この2つのext命令(即値拡張プリフィックス命令)のターゲット命令となり得るadd命令を表すadd命令コードとが、命令コードメモリ30からBCUバス100を介してフェッチ回路12に入力される。ここで、これらの命令コードは、32ビット単位でフェッチ回路12に入力される。
フェッチ回路12は、BCU100から入力される命令コードを16ビット単位で命令キュー0から順番にフェッチする。
セレクト信号発生回路16は、フェッチ回路12の命令キュー0にsub命令コードがフェッチされると、フェッチ回路12の命令キュー0から出力されるsub命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路15に出力する。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー0から出力されるsub命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力されるsub命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるsub命令コードをデコードし、それによって得たsub命令を実行させる制御信号を実行回路19に出力する。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー0から出力されるsub命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力されるsub命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるsub命令コードをデコードし、それによって得たsub命令を実行させる制御信号を実行回路19に出力する。
続いて、セレクト信号発生回路16は、フェッチ回路12の命令キュー1から入力される第1のext命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路15に出力する。また、フェッチ回路12の命令キュー1にフェッチされた第1のext命令コードは、プリフィックスデータ生成回路13にも出力される。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー1から入力される第1のext命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力される第1のext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力される第1のext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー1から入力される第1のext命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力される第1のext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力される第1のext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。
続いて、セレクト信号発生回路16は、フェッチ回路12の命令キュー2から出力される第2のext命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路15に出力する。また、フェッチ回路12の命令キュー2にフェッチされた第2のext命令コードは、プリフィックスデータ生成回路13にも出力される。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー2から入力される第2のext命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力される第2のext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力される第2のext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー2から入力される第2のext命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力される第2のext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力される第2のext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。
続いて、フェッチ回路12の命令キュー3にフェッチされたadd命令コードが、プリフィックスデータ生成回路13に入力される。プリフィックスデータ生成回路13は、第1及び第2のext命令コードとadd命令コードとをデコードして、add命令コードに含まれているオペコード(図3参照)と、add命令コードに含まれている汎用レジスタ(rd)を示すコード(図3参照)を得ると共に、第1のext命令コードに含まれる13ビットの即値(図2参照)と、第2のext命令コードに含まれる13ビットの即値(図2参照)と、add命令コードに含まれている6ビットの即値とを組み合わせて、32ビットの即値(図4参照)を生成する。
オペコードと汎用レジスタ(rd)を示すコードと32ビットの即値とは、プリフィックスデータ生成回路13から実行回路19に出力される。実行回路19は、オペコードにより表されるオペレーションの内容(add演算)を32ビットの即値を用いて行い、その結果を汎用レジスタ(rd)に格納する。
オペコードと汎用レジスタ(rd)を示すコードと32ビットの即値とは、プリフィックスデータ生成回路13から実行回路19に出力される。実行回路19は、オペコードにより表されるオペレーションの内容(add演算)を32ビットの即値を用いて行い、その結果を汎用レジスタ(rd)に格納する。
次に、実行回路19においてジャンプ命令が実行された後のマイクロコンピュータ1の動作について、図1を参照しながら説明する。
例えば、フェッチ回路12の命令キュー2にフェッチされた命令コードがジャンプ命令コードであった場合には、このジャンプ命令コードは、上述したsub命令コードと同様に、命令選択回路15及び命令コード変換回路17を介してデコード回路18に入力され、デコード回路18においてデコードされることにより、ジャンプ命令を実行させる制御信号がデコード回路18から実行回路19に出力される。これにより、実行回路19においてジャンプ命令が実行される。また、実行回路19は、ジャンプ命令成立信号をセレクト信号発生回路16に出力する。
例えば、フェッチ回路12の命令キュー2にフェッチされた命令コードがジャンプ命令コードであった場合には、このジャンプ命令コードは、上述したsub命令コードと同様に、命令選択回路15及び命令コード変換回路17を介してデコード回路18に入力され、デコード回路18においてデコードされることにより、ジャンプ命令を実行させる制御信号がデコード回路18から実行回路19に出力される。これにより、実行回路19においてジャンプ命令が実行される。また、実行回路19は、ジャンプ命令成立信号をセレクト信号発生回路16に出力する。
実行回路19においてジャンプ命令が実行されると、フェッチ回路12の命令キュー3から命令キュー5にフェッチされている命令コードはすべて無効とされ、ジャンプ命令実行後に命令コードメモリ30からBCU100を介してフェッチ回路12に入力される命令コードは、命令キュー0から順番にフェッチされる。
従って、ジャンプ命令実行後には、フェッチ回路12の命令キュー0から命令キュー5に有効な命令コードが存在しない事態が生じるので、セレクト信号発生回路16は、ジャンプ命令成立信号が実行回路19から入力されると、命令変換信号を発生して、命令コード変換回路17に出力する。命令コード変換回路17は、命令選択回路15から入力される命令コードの上位3ビットを「110」に変更することにより、この命令コードをext命令コードに変換する。その後、命令コード変換回路17は、このext命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるext命令コードをnop命令コードとみなす。その結果、実行回路19は、何の処理もすることなく次の制御信号がデコード回路18から入力されるのを待つだけであるので、パイプライン処理の複雑化を防ぐことができる。
次に、CPU10のデバッグ時におけるマイクロコンピュータ1の動作について、図1を参照しながら説明する。
例えば、デバッグ時に、load命令、sub命令、及び、nop命令を実行回路19に順次実行させる場合に、sub命令でブレーク処理を行いたいときには、操作者は、デバッグ開始前に、ブレーク処理を行いたいsub命令を表すsub命令コードが格納されている命令コードメモリ30の命令アドレス(以下、「ブレークアドレス」と称する。)を、入力装置を用いてブレーク条件判定回路41に入力する。
例えば、デバッグ時に、load命令、sub命令、及び、nop命令を実行回路19に順次実行させる場合に、sub命令でブレーク処理を行いたいときには、操作者は、デバッグ開始前に、ブレーク処理を行いたいsub命令を表すsub命令コードが格納されている命令コードメモリ30の命令アドレス(以下、「ブレークアドレス」と称する。)を、入力装置を用いてブレーク条件判定回路41に入力する。
その後、デバッグ処理が開始されると、命令アドレスジェネレータ11から出力される命令アドレスに従って、まず、load命令コード(16ビット)及びsub命令コード(16ビット)が命令コードメモリ30から順番に出力されて、BCU100(32ビット命令データバス)を介してフェッチ回路12に入力され、命令キュー0及び命令キュー1にそれぞれフェッチされる。
このとき、ブレーク条件判定回路41においては、load命令を表すload命令コードの命令アドレスを命令アドレスジェネレータ11が出力したときには、入力装置から入力されたブレークアドレスと、命令アドレスジェネレータ11から入力される命令アドレスとが一致しないので、ブレーク条件成立信号が発生されない。
一方、sub命令を表すsub命令コードの命令アドレス(即ち、ブレークアドレス)を命令アドレスジェネレータ11が出力したときには、入力装置から入力されたブレークアドレスと、命令アドレスジェネレータ11から入力される命令アドレスとが一致するので、ブレーク条件成立信号が発生される。その結果、デバッグ回路42は、ブレークビットをフェッチ回路12に出力する。このブレークビットは、sub命令コードに対応してフェッチ回路12のブレークビット用キューbrk1にフェッチされる。
まず、セレクト信号発生回路16は、load命令コードがフェッチ回路12の命令キュー0にフェッチされると、フェッチ回路12の命令キュー0から出力されるload命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路15に出力する。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー0から入力されるload命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力されるload命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるload命令コードをデコードすることにより得たload命令を実行させる制御信号を実行回路19に出力する。
命令選択回路15は、この命令コードセレクト信号に従って、命令キュー0から入力されるload命令コードを選択して、命令コード変換回路17に出力する。
命令コード変換回路17は、命令選択回路15から入力されるload命令コードをデコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるload命令コードをデコードすることにより得たload命令を実行させる制御信号を実行回路19に出力する。
続いて、セレクト信号発生回路16は、フェッチ回路12の命令キュー1から出力されるsub命令コードを選択させる命令コードセレクト信号を発生して、命令選択回路15に出力する。
また、セレクト信号発生回路16は、フェッチ回路12のブレークビット用キューbrk1から出力されるブレークビットを選択させるブレークセレクト信号を発生して、ブレーク選択回路14に出力する。ブレーク選択回路14は、このブレークセレクト信号に従って、ブレークビット用キューbrk1から入力されるブレークビットを選択して、命令コード変換回路17に出力する。
ブレークビットがブレーク選択回路14から入力されると、命令コード変換回路17は、命令選択回路15で選択されたsub命令コードの上位3ビットを「110」に変換することにより、sub命令コードをext命令コードに変換して、デコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。これにより、ブレーク処理における1クロック分の遅延に起因する実行回路19でのsub命令の実行を防ぐことができる。
また、セレクト信号発生回路16は、フェッチ回路12のブレークビット用キューbrk1から出力されるブレークビットを選択させるブレークセレクト信号を発生して、ブレーク選択回路14に出力する。ブレーク選択回路14は、このブレークセレクト信号に従って、ブレークビット用キューbrk1から入力されるブレークビットを選択して、命令コード変換回路17に出力する。
ブレークビットがブレーク選択回路14から入力されると、命令コード変換回路17は、命令選択回路15で選択されたsub命令コードの上位3ビットを「110」に変換することにより、sub命令コードをext命令コードに変換して、デコード回路18に出力する。
デコード回路18は、命令コード変換回路17から入力されるext命令コードをnop命令コードとみなす。その結果、実行回路19は、デコード回路18から命令を実行させる制御信号が入力されてこないので、何の処理もすることなく、次の制御信号がデコード回路18から入力されるのを待つ。これにより、ブレーク処理における1クロック分の遅延に起因する実行回路19でのsub命令の実行を防ぐことができる。
以上の説明では、プリフィックス命令として即値拡張プリフィックス命令(ext命令)を用いたが、本出願人が上記の特許文献1で提案しているシフトプリフィックス命令、レジスタ拡張プリフィックス命令、又は、実行制御プリフィックス命令を用いてもよい。
1 マイクロコンピュータ(広義には、情報処理装置)、10 CPU(広義には、処理回路)、11 命令アドレスジェネレータ、12 フェッチ回路、13 プリフィックスデータ生成回路、14 ブレーク選択回路、15 命令選択回路、16 セレクト信号発生回路、17 命令コード変換回路、18 デコード回路、19 実行回路、30 命令コードメモリ、41 ブレーク条件判定回路、42 デバッグ回路、100 BCU(バスコントローラユニット)、220 ext命令コード(即値拡張プリフィックス命令コード)、222 オペコード指定領域、224 即値指定領域、210 命令コード、212 オペコード指定領域、216 即値指定領域、218 レジスタ指定領域、250 即値、252、254及び256 フィールド
Claims (4)
- パイプライン制御により命令を処理し、プログラムにおいてターゲット命令の前に置かれたときにターゲット命令の機能を修飾するプリフィックス命令が使用可能な情報処理装置であって、
プログラムに含まれている複数の命令をそれぞれ表す複数の命令コードが格納された命令コードメモリと、
前記命令コードメモリから特定の命令コードを読み出すための命令アドレスを発生する命令アドレスジュネレータと、
前記命令コードメモリから順次読み出された複数の命令コードを複数の命令キューにそれぞれフェッチするフェッチ回路と、
前記フェッチ回路の複数の命令キューに接続された命令選択回路と、
前記フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを前記命令選択回路に選択させる命令コードセレクト信号を発生するセレクト信号発生回路と、
前記命令選択回路で選択された命令コードを条件によってプリフィックス命令に変換する命令コード変換回路と、
プリフィックス命令コードをノンオペレーション命令コードとみなすデコード回路と、
前記フェッチ回路の複数の命令キューにそれぞれフェッチされたターゲット命令を表す命令コード及びプリフィックス命令を表す少なくとも1つの命令コードに基づいて、ターゲット命令のデコードを行うプリフィックスデータ生成回路と、
を具備する、情報処理装置。 - デバッグ時にブレーク処理の対象となる命令を表す命令コードの命令アドレスが前記命令アドレスジュネレータから入力されると、ブレーク条件成立信号を発生するブレーク条件判定回路と、
ブレーク条件成立信号が前記ブレーク条件判定回路から入力されたときにブレークビットを発生するデバッグ回路と、
前記フェッチ回路と前記命令コード変換回路との間に接続されたブレーク選択回路と、
をさらに具備し、
前記フェッチ回路が、前記デバッグ回路から入力されるブレークビットを命令コードに対応させてブレークビット用キューにフェッチし、
前記命令選択回路が、前記セレクト信号発生回路から入力される命令コードセレクト信号に従って、前記フェッチ回路の複数の命令キューにそれぞれフェッチされた複数の命令コードの内のいずれか1つを選択し、
前記ブレーク選択回路が、前記セレクト信号発生回路から入力されるブレークセレクト信号に従って、前記フェッチ回路のブレークビット用キューにフェッチされた、前記命令選択回路によって選択された命令コードに対応するブレークビットを選択し、
前記命令コード変換回路が、前記ブレーク選択回路によって選択されたブレークビットが入力されると、前記命令選択回路によって選択された命令コードをプリフィックス命令コードに変換し、
前記デコード回路が、プリフィックス命令コードが前記命令コード変換回路から入力されると、プリフィックス命令コードをノンオペレーション命令コードとみなす、
請求項1記載の情報処理装置。 - 前記セレクト信号発生回路が、前記フェッチ回路の複数の命令キューがすべて空である場合に、前記命令コード変換回路に命令変換信号を出力する、請求項1又は2記載の情報処理装置。
- 前記デコード回路からの制御信号に従って動作する実行回路をさらに具備し、
前記セレクト信号発生回路が、前記実行回路からジャンプ命令成立信号が入力されると、前記命令コード変換回路に命令変換信号を出力する、請求項1から3のいずれか1項記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004351003A JP2006163566A (ja) | 2004-12-03 | 2004-12-03 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004351003A JP2006163566A (ja) | 2004-12-03 | 2004-12-03 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006163566A true JP2006163566A (ja) | 2006-06-22 |
Family
ID=36665544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004351003A Withdrawn JP2006163566A (ja) | 2004-12-03 | 2004-12-03 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006163566A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011060129A (ja) * | 2009-09-11 | 2011-03-24 | Nec Corp | アウトオブオーダー実行プロセッサ |
-
2004
- 2004-12-03 JP JP2004351003A patent/JP2006163566A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011060129A (ja) * | 2009-09-11 | 2011-03-24 | Nec Corp | アウトオブオーダー実行プロセッサ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3856737B2 (ja) | データ処理装置 | |
JP2554050B2 (ja) | デ−タ処理方法 | |
JP2000222206A (ja) | データ処理装置 | |
JPH0766324B2 (ja) | データ処理装置 | |
JP2006227777A (ja) | データ処理装置 | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
KR20020073233A (ko) | 코프로세서 명령 실행 장치 및 방법 | |
JPH01214932A (ja) | データ処理装置 | |
JP2004030015A (ja) | 情報処理装置及び電子機器 | |
JP6073392B2 (ja) | 命令としてデータ値を評価するシステムおよび方法 | |
JP2007102333A (ja) | データ処理装置およびデータ処理方法 | |
CN106775587B (zh) | 计算机指令的执行方法以及使用此方法的装置 | |
JP2009526300A (ja) | マイクロプロセッサ用の命令セット | |
JP2006163566A (ja) | 情報処理装置 | |
JP2008299729A (ja) | プロセッサ | |
JP2007257349A (ja) | プロセッサ及びその処理方法 | |
US5361338A (en) | Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand | |
JPH10124312A (ja) | 中央処理装置 | |
JP5292831B2 (ja) | プログラマブルコントローラ | |
JP2583506B2 (ja) | データ処理装置 | |
JP2005038203A (ja) | メモリ制御方法及び装置 | |
JP2006302324A (ja) | データ処理装置 | |
JP2005134987A (ja) | パイプライン演算処理装置 | |
JP3147884B2 (ja) | 記憶装置及び情報処理装置 | |
US20100153688A1 (en) | Apparatus and method for data process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071120 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090611 |