JP2007004475A - プロセッサ及びプログラム実行方法 - Google Patents

プロセッサ及びプログラム実行方法 Download PDF

Info

Publication number
JP2007004475A
JP2007004475A JP2005183814A JP2005183814A JP2007004475A JP 2007004475 A JP2007004475 A JP 2007004475A JP 2005183814 A JP2005183814 A JP 2005183814A JP 2005183814 A JP2005183814 A JP 2005183814A JP 2007004475 A JP2007004475 A JP 2007004475A
Authority
JP
Japan
Prior art keywords
instruction
program
processor
correspondence
operation 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.)
Pending
Application number
JP2005183814A
Other languages
English (en)
Inventor
Kiyoko Nishikawa
清子 西川
Nobuhiko Akasaka
伸彦 赤坂
Naoyuki Tsuno
直幸 津野
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005183814A priority Critical patent/JP2007004475A/ja
Priority to US11/222,853 priority patent/US20070022271A1/en
Publication of JP2007004475A publication Critical patent/JP2007004475A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Abstract

【課題】 本発明は、各命令とそれに割当てられるオペコードとの関係を変更可能な構成としたプロセッサ及びそのようなプロセッサで実行するプログラムを生成し実行する方法を提供することを目的とする。
【解決手段】 プロセッサは、オペコードを格納する命令バッファと、複数のオペコードと複数の命令との一対一の対応関係を保持し、命令バッファから入力として受け取ったオペコードに対応する命令を対応関係に基づいて特定し、特定された命令を示す信号を出力する命令デコーダと、命令デコーダが出力する信号に応じて命令動作を実行する制御回路を含み、命令デコーダは対応関係が可変に設定可能なように構成されることを特徴とする。
【選択図】 図3

Description

本発明は、一般にプロセッサ及びプログラム実行方法に関し、詳しくは可変長の命令をデコードして実行するプロセッサ及びそのようなプロセッサを用いたプログラム実行方法に関する。
CPU(Central Processing Unit)に対しては、例えばオペコード・テーブル等の形で所定の命令セットが規定されており、各命令のビットパターン(オペコード)とそれに割当てられたCPUの動作内容との対応関係は固定である。この命令セットから命令を選択して順番に並べることで、所定のタスクを実行するプログラムが構成される。CPUは、プログラムを構成する各命令をメモリから順次フェッチしてデコードし、デコード結果に応じて指定された動作を実行する。
CPUの命令セットにおいて命令数が少なければ、各命令は1バイトで表現することができる。しかしCPUの命令セットの命令数が多い場合、多数の命令を表現するために1つのオペコードあたり複数バイトが必要になり、各命令の長さが可変の長さであるようなオペコード体系となる。この場合、全ての命令が複数バイトとなるわけではなく、主要な命令は1バイトで定義され、1バイトで表現しきれない命令(257個目以降の命令)が2バイトで定義される。この場合、フェッチしたオペコードの1バイトが所定のコードであれば、このオペコードは2バイト命令である等の規定がされている。
1バイト命令はメモリ格納に必要な容量が小さく、命令フェッチの際のデータ転送量も少なくてすむので、頻繁に使用する命令には一般に1バイトのオペコードが割当てられる。それに対して使用頻度の少ない命令は、実行可能形式モジュール内でのメモリ占有率が低く、命令フェッチされる回数も少ないので、一般に2バイトのオペコードが割当てられる。
しかしCPUの命令セットに規定される命令のうちで、どの命令の使用頻度が高いかは、そのCPUを実際に使用するユーザのニーズにより異なる。従って、あるユーザの使用形態では、ある種の命令を頻繁に使用するのにも関わらず、それらの命令が2バイト命令として規定されている等ということがあり得る。このような場合、実行可能形式モジュールの格納に必要なメモリ容量が大きくなる、実行時の速度が遅くなるなどの問題がある。しかし従来のCPUの構成では、各命令とそれに割当てられるオペコードとの関係は固定であり、変化することができない。
図1は、従来のCPUの構成の一例を示す図である。図1に示すCPU10は、バス14を介して、プログラムを格納するプログラムメモリ11、データRAM12、及び周辺リソース13に接続されている。CPU10は、命令デコーダ21、シーケンサ(制御回路)22、命令バッファ23、ALU24、レジスタ群25、プログラムカウンタ26、及びバス制御部27を含む。
プログラムカウンタ26は、実行するプログラムが格納されている記憶領域から順次命令をフェッチするフェッチ先のアドレスを示すレジスタである。CPU10が、プログラムカウンタ26の示すアドレスから命令をフェッチすると、命令はバス制御部27を介して命令バッファ23に取り込まれる。命令デコーダ21は、命令バッファ23に格納された命令をデコードして、デコード結果をシーケンサ22に供給する。シーケンサ22は、命令デコーダ21が示すデコード結果に応じて、指定されたALUモードの設定、指定されたレジスタの選択、指定されたデータのアクセス、指定されたレジスタへの書き込み等の動作を実行する。
命令デコーダ21内では、模式的に図1に示されるように、固定値として設けられた複数のオペコードの各々と命令バッファ23の内容との比較が実行される。命令バッファ23の内容が固定値の何れか1つと一致すると、複数の比較結果出力のうちで対応する1つが一致を示す信号状態となる。この一致を示す比較結果出力により、命令バッファ23の内容であるフェッチされた命令が特定され、この命令に対応する所定の動作シーケンスがシーケンサ22により実行される。命令デコーダ21において、フェッチされた命令を識別するための比較対象であるオペコードは、固定値として提供されるものであり変更することはできない。
図2は、従来のCPUの構成の別の一例を示す図である。図2において、図1と同一の構成要素は同一の番号で参照し、その説明は省略する。
図2のCPU10Aにおいては、命令デコーダ21AがマイクロROMで構成される。命令がフェッチされ命令バッファ23に格納されると、この命令バッファ23の内容をアドレスとして、マイクロROMをアクセスする。マイクロROMの各アドレスはオペコードに対応し、各アドレスの内容はそのオペコードに対応するシーケンサ22への指示である。例えば図2に示されるように、命令バッファ23から供給されるオペコードが“03”のとき、マイクロROMの出力は“7155”となる。このとき例えば、先頭の“7”はALU24の加算モードへの設定、“15”がオペランドフェッチの指示、最後の“5”がレジスタへの書き込みの指示を意味する。命令デコーダ21Aにおいて、フェッチされた命令を識別するためのテーブルは、ROMとして提供されるものであり変更することはできない。
特開2003−22180号公報
以上を鑑みて、本発明は、各命令とそれに割当てられるオペコードとの関係を変更可能な構成としたプロセッサ及びそのようなプロセッサで実行するプログラムを生成し実行する方法を提供することを目的とする。
本発明によるプロセッサは、オペコードを格納する命令バッファと、複数のオペコードと複数の命令との一対一の対応関係を保持し、該命令バッファから入力として受け取った該オペコードに対応する命令を該対応関係に基づいて特定し、該特定された命令を示す信号を出力する命令デコーダと、該命令デコーダが出力する該信号に応じて命令動作を実行する制御回路を含み、該命令デコーダは該対応関係が可変に設定可能なように構成されることを特徴とする。
また本発明によるプログラム実行方法は、命令とオペコードとの対応関係が可変に設定可能なプロセッサによりプログラムを実行する方法であって、第1のプログラムに含まれる命令の出現頻度を判定し、命令とオペコードとの対応関係が該判定された出現頻度に応じた所望の対応関係になるように該プロセッサを設定する第2のプログラムを生成し、該プロセッサにより該第2のプログラムを実行することにより該プロセッサにおいて該対応関係を設定し、該対応関係が設定された該プロセッサにより該第1のプログラムを実行する各段階を含むことを特徴とする。
本発明の少なくとも1つの実施例によれば、プロセッサの命令解析部分である命令デコーダにおけるオペコードと命令との対応関係を可変に設定可能とすることにより、実行可能形式バイナリデータにおいて、使用頻度の高い命令には1バイトのオペコードを割り当て、使用頻度の低い命令には2バイトのオペコードを割当てることが可能となる。従って、実行可能形式バイナリデータの格納に必要なメモリ容量が小さくなると共に、実行時の命令フェッチ速度が速くなる。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
本発明によるプロセッサでは、命令デコーダにおける命令解析部分において、オペコードと命令との対応関係を可変に設定可能な構成とする。更に、この命令デコーダの命令解析部分におけるオペコードと命令との対応関係を所望の対応関係に設定するために、実行するプログラムをコンパイル、アセンブル、及びリンクして実行可能形式のバイナリデータを生成する際に、命令解析部を所望の設定にするための設定プログラムをバイナリデータに含めるように実行可能形式プログラムを生成する。
具体的には、まず実行対象であるユーザ・アプリケーション・プログラムにおいて、使用頻度(出現頻度)の高い命令を特定する。次に、特定された使用頻度の高い命令に1バイトのオペコードを割り当て、使用頻度の低い命令に2バイトのオペコードを割当てるように、オペコードと命令との対応関係を設定する設定プログラムを生成する。この設定プログラムを、ユーザ・アプリケーション・プログラムとリンクしてアセンブルすることで、実行可能形式バイナリデータを生成する。このバイナリデータを実行すると、バイナリデータ中の各命令がプロセッサにフェッチされ、プロセッサ中の命令デコーダにより各命令がデコードされ実行される。
まず、最初に設定プログラム部分が実行され、設定プログラムの命令に従って、命令デコーダの命令解析部分におけるオペコードと命令との対応関係が所望の対応関係に設定される。なお全ての命令とオペコードとの対応関係を可変に設定可能とするのではなく、一部の命令とオペコードとの対応関係は固定のものとしておく。この固定のオペコードの命令だけを用いて、上記設定プログラムを構成する。これにより、命令解析部分におけるオペコードと命令との可変な対応関係が未設定の状態であっても、固定の対応関係に基づいて設定プログラムを実行することができる。このようにして設定されたオペコードと命令との対応関係に従って、その後、ユーザ・アプリケーション・プログラム部分が実行される。
このように本発明では、プロセッサの命令解析部分におけるオペコードと命令との対応関係を可変に設定可能とすることにより、実行可能形式バイナリデータにおいて、使用頻度の高い命令には1バイトのオペコードを割り当て、使用頻度の低い命令には2バイトのオペコードを割当てることが可能となる。従って、実行可能形式バイナリデータの格納に必要なメモリ容量が小さくなると共に、実行時の命令フェッチ速度が速くなる。
図3は、本発明によるプロセッサであるCPUの構成の一例を示す図である。図3に示すCPU30は、バス14を介して、プログラムを格納するプログラムメモリ11、データRAM12、及び周辺リソース13に接続されている。CPU30は、命令デコーダ31、シーケンサ(制御回路)32、命令バッファ33、ALU34、レジスタ群35、プログラムカウンタ36、バス制御部37、及び内部バス38を含む。
プログラムカウンタ36は、実行するプログラムの実行可能形式バイナリデータが格納されている記憶領域(プログラムメモリ11)から順次命令をフェッチするためのフェッチ先アドレスを示すレジスタである。CPU30が、プログラムカウンタ36の示すアドレスから命令をフェッチすると、命令はバス制御部37を介して命令バッファ33に取り込まれる。命令デコーダ31は、命令バッファ33に格納された命令をデコードして、デコード結果をシーケンサ32に供給する。シーケンサ32は、命令デコーダ31が示すデコード結果に応じて、フェッチした命令に対応する所定の動作シーケンスを実行するための制御回路であり、指定されたALUモードの設定、指定されたレジスタの選択、指定されたデータのアクセス、指定されたレジスタへの書き込み等の動作を実行する。
ALU34は、算術論理演算ユニットであり、シーケンサ32の制御下で動作し、加算や減算等の算術演算、反転、AND論理、OR論理等の論理演算を実行する。レジスタ群35は、ALU34における演算の対象となるデータやALU34における演算の結果のデータ等を格納するレジスタ群である。
命令デコーダ31は、複数の可変レジスタ41、複数の固定値回路42、及び複数の比較器43を含む。複数の可変レジスタ41は、オペコードを設定可能な命令に対して設けられており、前述の設定プログラムをCPU30により実行することにより、オペコードがその内容として設定される。複数の固定値回路42は、オペコードが固定である命令に対して設けられており、固定のオペコードを比較器43に対して出力する。比較器43は、可変レジスタ41及び固定値回路42の各々に対応して1つずつ設けられており、対応オペコードと命令バッファ33の内容とを比較する。
命令バッファ33の内容がオペコードの何れか1つと一致すると、複数の比較器43の出力のうちで、対応する1つが一致を示す信号状態となる。この一致を示す比較器出力により、命令バッファ33の内容であるフェッチされた命令が特定され、この命令に対応する所定の動作シーケンスがシーケンサ32により実行される。
複数の可変レジスタ41は、メモリ空間に割り当てた領域として、周辺リソース13のレジスタへのアクセスと同様に、CPU30からバス14及び内部バス38を介して読み書き可能な構成としてよい。このような構成とすれば、通常の命令セットに対して特別な命令を追加することなく、レジスタ転送命令或いはレジスタ格納命令等を使用することにより、上記設定プログラムが可変レジスタ41の内容を設定して、命令デコーダ31におけるオペコードと命令との対応関係を所望の関係に設定することができる。
この場合、設定プログラムが使用するレジスタ転送命令或いはレジスタ格納命令等は、固定値回路42に固定のオペコードとして割り当てられていることになる。このようなレジスタ転送命令等の単純なデータ転送系の命令などは、ユーザ・アプリケーション・プログラムの内容に関わらず高い頻度で使用されるので、固定値回路42に固定のコードとして割当てておいて何ら問題はない。
図4は、ユーザ・アプリケーション・プログラムに対応する実行可能形式バイナリデータを生成する処理を示すフローチャートである。図4のステップS1において、ユーザ・アプリケーション・プログラムのソースプログラム51をコンパイラによりコンパイルして、アセンブリ言語で記述されたアセンブラファイル52を生成する。
次にステップS2において、アセンブラファイル52のプログラムに出現する命令の頻度をカウントし、使用頻度が高い命令を特定する。ステップS3において、各命令について、使用頻度の高い順に可変レジスタ41にオペコードを設定する可変レジスタ設定プログラム53を生成する。この際、1バイトのオペコードを先に割り当てていき、1バイトのオペコードを使いきった後に、2バイトのオペコードを割当てるようにすればよい。これにより、使用頻度が比較的高い命令には1バイトのオペコードが割当てられ、使用頻度が比較的低い命令には2バイトのオペコードが割当てられることになる。
ステップS4において、アセンブラファイル52と可変レジスタ設定プログラム53とを連結して、アセンブラファイルと可変レジスタ設定プログラムとが連結されたファイル54を生成する。更に、ステップS5において、アセンブラによるアセンブル作業及びリンカによるリンク作業を実行して、実行可能形式のバイナリデータ55を生成する。なおこの実行可能形式バイナリデータ55においては、使用頻度が比較的高い命令には1バイトのオペコードが割当てられ、使用頻度が比較的低い命令には2バイトのオペコードが割当てられている。
このバイナリデータ55を実行することで、バイナリデータ55中の命令がCPU30にフェッチされ、命令バッファ33に順次格納される。更に命令デコーダ31が、命令バッファ33に格納された命令をデコードする。このデコード結果に応じて、シーケンサ32が命令の実行を制御する。
まず、最初に可変レジスタ設定プログラム53に対応する部分が実行され、可変レジスタ設定プログラム53の命令に従って、命令デコーダ31の可変レジスタ41にオペコードが設定される。これにより、オペコードと命令との対応関係が、命令の使用頻度に応じた所望の対応関係に設定される。このようにして設定されたオペコードと命令との対応関係に従って、その後、ユーザ・アプリケーション・プログラムに対応するアセンブラファイル52の部分が実行される。
図5は、命令実行処理の詳細を示すフローチャートである。図5のステップS1において、CPU30にリセットが設定される。ステップS2において、CPU30のリセットが解除される。リセットが解除されると、ステップS3において、CPU30がリセットベクタをフェッチする。この場合のリセットベクタは、フェッチ先のアドレスとして可変レジスタ設定プログラムの先頭番地を示している。
ステップS4において、リセットベクタのフェッチにより、プログラム実行が可変レジスタ設定プログラムに分岐する。可変レジスタ設定プログラムは、単純なデータ転送系の命令のみで構成されており、可変レジスタ41とは無関係に固定値回路42だけに基づいて実行することができる。
具体的には、例えばプログラムメモリ11からバス14及びバス制御部37を介して可変レジスタ設定プログラムの命令を順次読込み、命令バッファ33に格納することにより、可変レジスタ設定プログラムに対する命令フェッチ動作が実行される。デコード動作においては、命令デコーダ31の比較器43が、命令バッファ33に格納された命令と、可変レジスタ41及び固定値回路42に設定されているオペコードとを比較する。この場合、可変レジスタ設定プログラムの命令は、固定値回路42に設定されている単純なデータ転送系の命令のみで構成されているので、可変レジスタ41の内容が未設定であっても問題はない。
複数の比較器43のうち1つが、命令バッファ33に格納されたデータ転送系の命令に応答して、比較結果の一致を示す出力信号をアサートする。この一致を示す信号に応答して、シーケンサ32がデータ転送命令を実行する。このデータ転送命令により、可変レジスタ設定プログラムに含まれる設定用のオペコードを、オペランドとしてプログラムメモリ11から読み出して、バス14及びバス制御部37を介してレジスタ群35の中のレジスタに一時的に格納し、更にこのレジスタに格納された内容を、バス制御部37、バス14、及び内部バス38を介して命令デコーダ31内の指定された可変レジスタ41に格納する。或いはデータ転送命令により、プログラムメモリ11から可変レジスタ41に直接にオペコードを転送して設定してもよい。
可変レジスタ41への全てのオペコードの設定が完了すると、ステップS6において、プログラム実行がユーザプログラムの先頭番地に分岐する。分岐した後、S7において、従来と同様にユーザプログラムが実行される。
図6は、本発明によるプロセッサであるCPUの構成の別の一例を示す図である。図6に示すCPU30Aは、バス14を介して、プログラムを格納するプログラムメモリ11、データRAM12、及び周辺リソース13に接続されている。CPU30Aは、命令デコーダ31A、シーケンサ32、命令バッファ33、ALU34、レジスタ群35、プログラムカウンタ36、バス制御部37、及び内部バス38を含む。図6において、図3と同一の構成要素は同一の番号で参照し、その説明は省略する。
図6に示すCPU30Aは、図3に示すCPU30に対して、命令デコーダの構成が異なる。CPU30Aの命令デコーダ31Aは、マイクロROM61とマイクロRAM62を含む。マイクロROM61及びマイクロRAM62の各アドレスはオペコードに対応し、各アドレスの内容はそのオペコードに対応するシーケンサ22への指示である。マイクロROM61は、オペコードが固定である命令に対して設けられており、供給される固定のオペコードに対応する命令動作指示をシーケンサ22に対して出力する。マイクロRAM62は、オペコードを設定可能な命令に対して設けられており、指定されるアドレス(指定されるオペコード)に所望の命令動作指示を格納することにより、そのオペコードとその格納内容とが対応付けされる。
命令がフェッチされ命令バッファ23に格納されると、この命令バッファ23の内容をアドレスとして、マイクロROM61又はマイクロRAM62をアクセスする。図6の例ではオペコード00〜EFがマイクロROM61のアドレスとして割当てられ、オペコードF0〜FFがマイクロRAM62のアドレスとして割当てられている。例えば図6に示すように、命令バッファ23から供給されるオペコードが“F0”のとき、マイクロRAM62がアクセスされて“8142”が出力される。この出力“8142”が指示する命令動作を実現するように、シーケンサ32が各動作ステップを制御する。
マイクロRAM62は、メモリ空間に割り当てた領域として、CPU30Aからバス14及び内部バス38を介して読み書き可能な構成としてよい。このような構成とすれば、通常の命令セットに対して特別な命令を追加することなく、レジスタ転送命令或いはレジスタ格納命令等を使用することにより、設定プログラムがマイクロRAM62の内容を設定して、命令デコーダ31Aにおけるオペコードと命令との対応関係を所望の関係に設定することができる。
この場合、設定プログラムが使用するレジスタ転送命令或いはレジスタ格納命令等は、マイクロROM61に固定のオペコードとして割り当てられていることになる。このようなレジスタ転送命令等の単純なデータ転送系の命令などは、ユーザ・アプリケーション・プログラムの内容に関わらず高い頻度で使用されるので、マイクロROM61に固定のコードとして割当てておいて何ら問題はない。
図7は、図6のCPUで実行可能な形式のバイナリデータを生成する処理を示すフローチャートである。図7のステップS1において、ユーザ・アプリケーション・プログラムのソースプログラム51をコンパイラによりコンパイルして、アセンブリ言語で記述されたアセンブラファイル52を生成する。
次にステップS2において、アセンブラファイル52のプログラムに出現する命令の頻度をカウントし、使用頻度が高い命令を特定する。ステップS3において、各命令について、使用頻度の高い順にマイクロRAM62に命令を設定するマイクロRAM設定プログラム53Aを生成する。この際、1バイトのオペコードに命令を先に割り当てていき、1バイトのオペコードを使いきった後に、2バイトのオペコードに命令を割当てるようにすればよい。これにより、使用頻度が比較的高い命令には1バイトのオペコードが割当てられ、使用頻度が比較的低い命令には2バイトのオペコードが割当てられることになる。
ステップS4において、アセンブラファイル52とマイクロRAM設定プログラム53Aとを連結して、アセンブラファイルとマイクロRAM設定プログラムとが連結されたファイル54Aを生成する。更に、ステップS5において、アセンブラによるアセンブル作業及びリンカによるリンク作業を実行して、実行可能形式のバイナリデータ55を生成する。なおこの実行可能形式バイナリデータ55においては、使用頻度が比較的高い命令には1バイトのオペコードが割当てられ、使用頻度が比較的低い命令には2バイトのオペコードが割当てられている。
このバイナリデータ55を実行することで、バイナリデータ55中の命令がCPU30Aにフェッチされ、命令バッファ33に順次格納される。更に命令デコーダ31Aが、命令バッファ33に格納された命令をデコードする。このデコード結果に応じて、シーケンサ32が命令の実行を制御する。
まず、最初にマイクロRAM設定プログラム53Aに対応する部分が実行され、マイクロRAM設定プログラム53Aの命令に従って、命令デコーダ31AのマイクロRAM62に命令が設定される。これにより、オペコードと命令との対応関係が、命令の使用頻度に応じた所望の対応関係に設定される。このようにして設定されたオペコードと命令との対応関係に従って、その後、ユーザ・アプリケーション・プログラムに対応するアセンブラファイル52の部分が実行される。
図8は、命令実行処理の詳細を示すフローチャートである。図8のステップS1において、CPU30Aにリセットが設定される。ステップS2において、CPU30Aのリセットが解除される。リセットが解除されると、ステップS3において、CPU30Aがリセットベクタをフェッチする。この場合のリセットベクタは、フェッチ先のアドレスとしてマイクロRAM設定プログラムの先頭番地を示している。
ステップS4において、リセットベクタのフェッチにより、プログラム実行がマイクロRAM設定プログラムに分岐する。マイクロRAM設定プログラムは、単純なデータ転送系の命令のみで構成されており、マイクロRAM62とは無関係にマイクロROM61だけに基づいて実行することができる。
具体的には、例えばプログラムメモリ11からバス14及びバス制御部37を介してマイクロRAM設定プログラムの命令を順次読込み、命令バッファ33に格納することにより、命令フェッチ動作が実行される。デコード動作においては、命令デコーダ31AのマイクロROM61が、命令バッファ33に格納された命令(オペコード)をアドレスとして受け取り、そのアドレスに格納されている内容(命令実行指示)を出力する。この場合、マイクロRAM設定プログラムの命令は、マイクロROM61に設定されている単純なデータ転送系の命令のみで構成されているので、マイクロRAM62の内容が未設定であっても問題はない。
命令実行指示に応答して、シーケンサ32がデータ転送命令を実行する。このデータ転送命令により、マイクロRAM設定プログラムに含まれる設定用の命令実行指示を、オペランドとしてプログラムメモリ11から読み出して、バス14及びバス制御部37を介してレジスタ群35の中のレジスタに一時的に格納し、更にこのレジスタに格納された内容を、バス制御部37、バス14、及び内部バス38を介して命令デコーダ31A内のマイクロRAM62の指定されたアドレス(オペランド)に格納する。或いはデータ転送命令により、プログラムメモリ11からマイクロRAM62に直接に命令実行指示を転送して設定してもよい。
マイクロRAM62への命令の設定が完了すると、ステップS6において、プログラム実行がユーザプログラムの先頭番地に分岐する。分岐した後、S7において、従来と同様にユーザプログラムが実行される。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
従来のCPUの構成の一例を示す図である。 従来のCPUの構成の別の一例を示す図である。 本発明によるプロセッサであるCPUの構成の一例を示す図である。 ユーザ・アプリケーション・プログラムに対応する実行可能形式バイナリデータを生成する処理を示すフローチャートである。 命令実行処理の詳細を示すフローチャートである。 本発明によるプロセッサであるCPUの構成の別の一例を示す図である。 図6のCPUで実行可能な形式のバイナリデータを生成する処理を示すフローチャートである。 命令実行処理の詳細を示すフローチャートである。
符号の説明
11 プログラムメモリ
12 データRAM
13 周辺リソース
14 バス
30 CPU
31 命令デコーダ
32 シーケンサ
33 命令バッファ
34 ALU
35 レジスタ群
36 プログラムカウンタ
37 バス制御部
38 内部バス

Claims (10)

  1. オペコードを格納する命令バッファと、
    複数のオペコードと複数の命令との一対一の対応関係を保持し、該命令バッファから入力として受け取った該オペコードに対応する命令を該対応関係に基づいて特定し、該特定された命令を示す信号を出力する命令デコーダと、
    該命令デコーダが出力する該信号に応じて命令動作を実行する制御回路と
    を含み、該命令デコーダは該対応関係が可変に設定可能なように構成されることを特徴とするプロセッサ。
  2. 該命令デコーダは、該対応関係を規定するデータを格納する書き換え可能な記憶回路を含むことを特徴とする請求項1記載のプロセッサ。
  3. 該命令デコーダは、
    該対応関係の一部を規定するデータを格納する書き換え可能な記憶回路と、
    該対応関係の残りの部分を規定するデータを格納する内容固定の記憶回路と
    を含むことを特徴とする請求項1記載のプロセッサ。
  4. 該記憶回路は、外部からのアクセスにより書き込み可能に構成されることを特徴とする請求項2記載のプロセッサ。
  5. 該命令デコーダは、
    該複数のオペコードを格納するレジスタと、
    該レジスタに格納される該複数のオペコードの各々と該命令バッファから入力として受け取った該オペコードとを比較する複数の比較器と
    を含むことを特徴とする請求項1記載のプロセッサ。
  6. 該命令デコーダは、該複数のオペコードをアドレスとし、該複数の命令を記憶内容として格納するRAMを含むことを特徴とする請求項1記載のプロセッサ。
  7. 命令とオペコードとの対応関係が可変に設定可能なプロセッサによりプログラムを実行する方法であって、
    第1のプログラムに含まれる命令の出現頻度を判定し、
    命令とオペコードとの対応関係が該判定された出現頻度に応じた所望の対応関係になるように該プロセッサを設定する第2のプログラムを生成し、
    該プロセッサにより該第2のプログラムを実行することにより該プロセッサにおいて該対応関係を設定し、
    該対応関係が設定された該プロセッサにより該第1のプログラムを実行する
    各段階を含むことを特徴とするプログラム実行方法。
  8. 該第2のプログラムを生成する段階は、該判定に応じて該出現頻度が相対的に高い命令に1バイトのオペコードを割り当て、該出現頻度が相対的に低い命令に2バイトのオペコードを割り当てるように該所望の対応関係を定めることを特徴とする請求項7記載のプログラム実行方法。
  9. 該第1のプログラムを該所望の対応関係に従って実行可能形式データに変換する段階を更に含み、該該第1のプログラムを実行する段階は、該対応関係が設定された該プロセッサにより該実行可能形式データを実行することを特徴とする請求項7記載のプログラム実行方法。
  10. 該第2のプログラムを生成する段階は、該プロセッサにおいて命令とオペコードとの対応関係が固定である命令のみを用いて該第2のプログラムを生成することを特徴とする請求項7記載のプログラム実行方法。
JP2005183814A 2005-06-23 2005-06-23 プロセッサ及びプログラム実行方法 Pending JP2007004475A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005183814A JP2007004475A (ja) 2005-06-23 2005-06-23 プロセッサ及びプログラム実行方法
US11/222,853 US20070022271A1 (en) 2005-06-23 2005-09-12 Processor with changeable correspondences between opcodes and instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005183814A JP2007004475A (ja) 2005-06-23 2005-06-23 プロセッサ及びプログラム実行方法

Publications (1)

Publication Number Publication Date
JP2007004475A true JP2007004475A (ja) 2007-01-11

Family

ID=37680382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005183814A Pending JP2007004475A (ja) 2005-06-23 2005-06-23 プロセッサ及びプログラム実行方法

Country Status (2)

Country Link
US (1) US20070022271A1 (ja)
JP (1) JP2007004475A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028543A (ja) * 2009-07-27 2011-02-10 Renesas Electronics Corp 情報処理システム及びその情報処理方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170005329A (ko) * 2015-07-03 2017-01-12 삼성전자주식회사 번인 릴랙싱 기능을 갖는 디스플레이 구동회로 및 디스플레이 구동회로를 포함하는 디스플레이 구동 시스템
GB2586258A (en) * 2019-08-15 2021-02-17 1Inspiries Tech Ltd Efficient processor machine instruction handling

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61165134A (ja) * 1985-01-17 1986-07-25 Matsushita Electronics Corp シングルチツプマイクロコンピユ−タの命令デコ−ダ回路
JPH0612253A (ja) * 1992-06-25 1994-01-21 Rohm Co Ltd マイクロコンピュータ
JPH09330219A (ja) * 1996-06-12 1997-12-22 Matsushita Electric Ind Co Ltd 命令解読器切替型プロセッサ及び翻訳装置
JPH1011289A (ja) * 1996-06-19 1998-01-16 Mitsubishi Electric Corp 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
JPH10133871A (ja) * 1996-07-19 1998-05-22 Philips Electron Nv シグナルプロセッサ
JP2001043082A (ja) * 1999-07-30 2001-02-16 Nec Corp 情報処理装置並びに命令コーディング方法及び命令デコーディング方法
JP2001184209A (ja) * 1999-12-24 2001-07-06 Nec Ic Microcomput Syst Ltd 命令コード復号装置及びその復号方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1332429B1 (en) * 2000-11-06 2011-02-09 Broadcom Corporation Reconfigurable processing system and method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61165134A (ja) * 1985-01-17 1986-07-25 Matsushita Electronics Corp シングルチツプマイクロコンピユ−タの命令デコ−ダ回路
JPH0612253A (ja) * 1992-06-25 1994-01-21 Rohm Co Ltd マイクロコンピュータ
JPH09330219A (ja) * 1996-06-12 1997-12-22 Matsushita Electric Ind Co Ltd 命令解読器切替型プロセッサ及び翻訳装置
JPH1011289A (ja) * 1996-06-19 1998-01-16 Mitsubishi Electric Corp 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
JPH10133871A (ja) * 1996-07-19 1998-05-22 Philips Electron Nv シグナルプロセッサ
JP2001043082A (ja) * 1999-07-30 2001-02-16 Nec Corp 情報処理装置並びに命令コーディング方法及び命令デコーディング方法
JP2001184209A (ja) * 1999-12-24 2001-07-06 Nec Ic Microcomput Syst Ltd 命令コード復号装置及びその復号方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028543A (ja) * 2009-07-27 2011-02-10 Renesas Electronics Corp 情報処理システム及びその情報処理方法

Also Published As

Publication number Publication date
US20070022271A1 (en) 2007-01-25

Similar Documents

Publication Publication Date Title
US7069423B2 (en) Microcomputer
JP2816248B2 (ja) データプロセッサ
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH0810428B2 (ja) データ処理装置
US6687808B2 (en) Data processor using indirect register addressing
KR100995269B1 (ko) 프로세서 장치 및 복합 조건 처리 방법
JPH1049369A (ja) データ処理装置
US5966514A (en) Microprocessor for supporting reduction of program codes in size
TWI335532B (en) Computer having dynamically-changeable instruction set in real time
JPH1165839A (ja) プロセッサの命令制御機構
JP2007004475A (ja) プロセッサ及びプログラム実行方法
JP2000200196A (ja) 拡張命令語を有する中央処理装置
JP2007122626A (ja) マイクロプロセッサ
US20220113972A1 (en) Microprocessor, and operation method therefor
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
JP2556182B2 (ja) デ−タ処理装置
JP2006053830A (ja) 分岐予測装置および分岐予測方法
JPH04199331A (ja) マイクロコンピュータ
JP2006092158A (ja) デジタル信号処理回路
JP2004005738A5 (ja)
JP2004005738A (ja) データ処理装置及び命令セット拡張方法
JPH06149563A (ja) データ処理装置
JP2006302324A (ja) データ処理装置
JP4702004B2 (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080514

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100907

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110111