JP2005032018A - 遺伝的アルゴリズムを用いたマイクロプロセッサ - Google Patents

遺伝的アルゴリズムを用いたマイクロプロセッサ Download PDF

Info

Publication number
JP2005032018A
JP2005032018A JP2003271180A JP2003271180A JP2005032018A JP 2005032018 A JP2005032018 A JP 2005032018A JP 2003271180 A JP2003271180 A JP 2003271180A JP 2003271180 A JP2003271180 A JP 2003271180A JP 2005032018 A JP2005032018 A JP 2005032018A
Authority
JP
Japan
Prior art keywords
microprocessor
genetic algorithm
dynamic compiler
instruction
software
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
Application number
JP2003271180A
Other languages
English (en)
Other versions
JP2005032018A5 (ja
Inventor
Shoji Miyanaga
昭治 宮永
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.)
Semiconductor Energy Laboratory Co Ltd
Original Assignee
Semiconductor Energy Laboratory Co 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 Semiconductor Energy Laboratory Co Ltd filed Critical Semiconductor Energy Laboratory Co Ltd
Priority to JP2003271180A priority Critical patent/JP2005032018A/ja
Priority to US10/878,011 priority patent/US20050005085A1/en
Priority to CNA2004100634569A priority patent/CN1577275A/zh
Publication of JP2005032018A publication Critical patent/JP2005032018A/ja
Publication of JP2005032018A5 publication Critical patent/JP2005032018A5/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Genetics & Genomics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Physiology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】動的コンパイラを備えるVLIW型マイクロプロセッサにおいて、オーバーヘッドを低減することや、スケジューリング後のオブジェクト・コードを格納するためのメモリ容量を抑えること。
【解決手段】動的コンパイラを備えるVLIW型マイクロプロセッサに関するものであり、より効率的に命令の処理を行うことにより、マイクロプロセッサの演算性能を改善するものである。具体的には、動的コンパイラを備えるVLIW型マイクロプロセッサにおける命令の処理において、遺伝的アルゴリズム(GA)を用いることにより、動的コンパイラの実行に伴うオーバーヘッドの低減や、内部命令のスケジューリング後のオブジェクト・コードを格納するためのメモリ容量を抑えることを特徴とする。
【選択図】図1

Description

本発明は、動的コンパイラを備えるVLIW型マイクロプロセッサにおいて、その処理効率を向上させる技術に関する。
2000年1月に米Transmeta社のx86互換プロセッサCrusoeについてのニュースが世界中に伝えられたことによって、その後のプロセッサアーキテクチャの流れは、それまでの、CISC(Complex Instruction Set computer)からRISC(Reduced Instruction Set Computer)へのアーキテクチャ移行以来の大きな流れが登場することになった。
それまで多く使われていたx86互換プロセッサは、Out-of-Order型スーパースカラー・アーキテクチャである。ここで、Out-of-Orderとは、オブジェクト・コードで記述された命令の実行順序にかかわりなく命令を実行する機能であって、命令間に依存関係がないことを検証する機能、及び、実行済み命令の演算結果をオブジェクト・コードで記述された順番に並び直す機能を必要とする。また、スーパースカラーとは、2個以上の命令を同時に実行する機能。1サイクルで実行する平均命令数が多くなるので、1命令しか実行しないマイクロプロセッサに比べて、同じ動作周波数でも高い演算機能を発揮することが可能となる。
Crusoeのプロセッサアーキテクチャは、VLIW(Very Long Instruction Word)を採用して、x86互換性をCode Morphing Softwareと呼ばれるランタイム・ソフトウェアプログラムによりX86オブジェクト・コードを実行時にVLIWコードに変換し、VLIWプロセッサでエミュレーションすることを特徴としている。これに、付随する特徴としては、低消費電力性がある。複雑な、Out-of-Order型スーパースカラ・アーキテクチャから単純なVLIWアーキテクチャにしたことで、必要とするトランジスタ数を半減することに加えて、Transmeta社で"LongRun Technology"と呼ぶ動的電源電圧最適化を採用している。
ここで、VLIW技術とは、128ビット、或いは、256ビットといった長いフォーマットの命令で、複数の演算ユニットを使った処理を並列に記述するアーキテクチャであり、例えば、1命令で、32ビット命令を4個分、或いは、8個分の処理が可能となる。この技術は、Josh Fisherが、1978年に初めて発表した技術である。
さて、上記で述べた要素技術であるVLIW技術やソフトウェアを用いたコード変換技術は、注目には値するが、個々の技術そのものは、それほど目新しい技術ではない。Crusoeで注目されている技術的価値は、動的コンパイラを備えたVLIW型マイクロプロセッサであることが、重要である。なぜならば、VLIW技術とコード変換技術の単なる組み合わせを行う場合には、技術的問題点を抱えることになる。問題点とは、コード変換の時間的、及び、空間的オーバーヘッドである。時間的オーバーヘッドとは、例えば、x86オブジェクト・コードをネイティブのVLIWコードに変換するのに要する時間であり、空間的オーバーヘッドとは、コード変換ソフト自身が主記憶に占める大きさ、及び、変換後のVLIWコードを主記憶上にキャッシングするのに要するメモリサイズである。特に、時間的オーバーヘッドの問題は重要であり、せいぜい直接実行するプロセッサの数十%の性能しか出ないのが、通常である。
Transmeta社は、動的バイナリー・コード変換技術を採用することによって、これらのオーバーヘッドの問題解決をはかっている。これらの動的コンパイラ技術は、従来の静的コンパイラ技術による最適化を補完するものである。動的コンパイラ技術とは、あるプログラムのオブジェクト・コードに命令スケジューリングを施すことで、特定のマイクロプロセッサに対して最適化したオブジェクト・コードに変換するソフトウェアを呼ぶ。
ハードウェアのボトルネックをソフトウェアで解消するこれらの技術について、より具体的に図1を用いて説明する。図1(a)のスーパースカラー型マイクロプロセッサでは、命令スケジューリングがハードウェアで構成されており、ボトルネックとなっていた。それに対して、図1(b)の様な動的コンパイラを備えたVLIW型プロセッサは、ソフトウェアで内部命令のスケジューリングを担っているので、ハードウェアで内部命令のスケジューリングを行う回路は、不要になる。ハードウェアとしては、その分回路が単純となり、動作周波数を上げることが容易となる。ちなみにプロセッサの演算性能は、次式(1)で表現される。
〔式1〕
演算性能=動作周波数×1サイクルに実行する命令の平均数
1サイクルに実行する命令の平均数が減らせるという観点からも、動的コンパイラを備えたVLIW型プロセッサは、より優れている。最大の利点は、スケジューリングの自由度が大きいことである。このことを図2を用いて説明する。
図2(a)の様に、スーパースカラー型マイクロプロセッサでは、主記憶からフェッチした命令をリオーダ・バッファと呼ばれるバッファにいったん格納する。Out-of-order実行機能によって、格納した命令の中から同時に実行できるものを選択して演算ユニットに送り込む。ところが、リオーダ・バッファに格納できる命令数は、数十個〜百数十個程度しかないので、同時に実行出来る命令を見つけにくい。すなわち、ハードウェアによるスケジューリングでは、マイクロプロセッサに集積可能なリオーダ・バッファの容量によってスケジューリングの自由度が制限されてしまう。
これに対して、図2(b)の様に、主記憶に格納した多くの命令の中から同時に実行できる命令を選択する動的コンパイラならば、同時に実行出来る命令を発見する確率が高くなる。すなわち、同じオブジェクト・コードを実行する場合、スーパースカラー型マイクロプロセッサに比べて、動的コンパイラを備えたVLIWマイクロプロセッサでは、1サイクルに実行する命令の平均数を増やすことが可能となる。1サイクルに実行する命令の平均数は、次式(2)の様に、IPC、TCM、DCOによって表現されるが、上記で述べたことは、IPCの低減を意味する。ここで、IPCとは1命令の実行に必要なサイクル数、TCMとはトランスレーション・キャッシュのミス率、DCOとは動的コンパイラのオーバーヘッドを意味する。
〔式2〕
1サイクルに実行する命令の平均数=1/(IPC+TCM×DCO)
TCMは、キャッシュ容量の増大で低減可能である。DCOの低減も動的コンパイラにとって、有利なところである。プログラムの実行状況に応じて、繰り返し実行する命令パスを検出し、その部分を重点的にスケジューリングして最適化することで、動的コンパイラのオーバーヘッドを低減できる。しかも、一度最適化したオブジェクト・コードをキャッシュに蓄えることを行えば、次に実行する時には、動的コンパイラも使う必要が無くなり、その後のオーバーヘッドを激減することが可能となり、Crusoeでは、この辺りも考慮されている。Crusoeでは、更に、動的コンパイラの効率を上げるために幾つかのハードウェアの補助機能を追加している。シャドウ・レジスタ機能とゲート付きストア・バッファ機能である。これにより、スペキュレーション処理時の例外を正確に行うことが可能となる。詳細は、米国特許番号:6,031,992等に記載されている。また、エイリアス・ディテクションのメカニズムやトランスレイティド・ビットをもっている。
上記で述べた様に、Crusoeに代表される動的コンパイラを備えるVLIW型マイクロプロセッサにおいて、動的コンパイラは、大分工夫がされており、オーバーヘッドの低減への努力が試みられているが、スーパースカラー型マイクロプロセッサに置き換わるだけの効率には至っていない。つまり、現状の動的コンパイラには、なお、多くの課題を残しているのである。
ここで、解決しようとする課題は、更に、動的コンパイラの実行に伴うオーバーヘッドを低減することや、スケジューリング後のオブジェクト・コードを格納するためのメモリ容量を抑えることである。結果として、1サイクルに実行する命令の平均数を増加させることによって、マイクロプロセッサの演算性能を上げることにある。
本発明は、動的コンパイラを備えるVLIW型マイクロプロセッサに関するものであり、より効率的に命令の処理を行うことにより、マイクロプロセッサの演算性能を改善するものである。具体的には、動的コンパイラを備えるVLIW型マイクロプロセッサにおける命令の処理において、遺伝的アルゴリズム(GA)を用いることにより、動的コンパイラの実行に伴うオーバーヘッドの低減や、内部命令のスケジューリング後のオブジェクト・コードを格納するためのメモリ容量を抑えることを特徴とする。
従って、本発明の構成は、ハードウェア部分、およびソフトウェア部分を含むマイクロプロセッサにおいて、前記ソフトウェア部分に遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサである。
また、上記構成において、
前記ソフトウェア部分に動的コンパイラを含み、前記動的コンパイラの処理に遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサである。
また、上記構成において、
前記ソフトウェア部分に含まれる動的コンパイラは、命令分岐予測、命令パスの選択、内部命令のスケジューリング、および最適化を含む複数の処理を行い、前記複数の処理のうち少なくとも1つに遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサである。
なお、上記構成において、
前記ソフトウェア部分に動的コンパイラ、遺伝的アルゴリズムエンジンを備えており、前記遺伝的アルゴリズムエンジンが、前記動的コンパイラの一部に含まれる場合も本発明の構成に含めることとする。
また、前記遺伝的アルゴリズムエンジンは、初期集団を決定する手段と、前記初期集団を評価する手段と、評価対象を評価の適応度に応じて選択する手段と、交叉、突然変異といった遺伝的な操作を行う手段と、再度評価して、前記一連の処理を継続するか否かの評価を行う手段を少なくとも備えたことを特徴とする。
遺伝的アルゴリズム(Genetic Algorithm;GA)とは、生物の進化の過程をまねることでソフトウェアの最適化を図る手法である。考え方としては、遺伝と、自然淘汰を繰り返すことによって、より優秀な遺伝子を導き出そうというものである。遺伝的アルゴリズムは、はじめに異なった遺伝子を持ついくつかの初期集団を用意し、そのなかで、選択(selection)、交叉(crossover)、突然変異(mutation)の3つのプロセスを行う。選択とは、集団の中から優秀なものを選び出すことである。交叉とは、選び出された集団のなかでランダムに遺伝子の一部に交換を行うことである。突然変異とは、低い確率で起こり、遺伝子情報の一部をランダムに書き換えることである。具体的には、以下のような流れになる。
1.もとになるアルゴリズムをいくつか用意する。
2.個体ごとに適応度を計算する。
3.条件に合えば終了。合わなければ4へ進む。
4.優秀な個体の集団の中でランダムに選んだ個体の遺伝子の交叉を行う。
5.突然変異が起きるか判定を行い、それに従って突然変異を行う。
6.2へ戻る。
つまり、初期の集団から自然淘汰と生殖活動を行うことにより、より優秀な遺伝子を持つ個体だけを選び出していくわけである。工学的には最適解をランダムかつ速やかに探索する手法となる。遺伝的アルゴリズムの応用範囲は非常に広く、広い範囲における探索、最適化問題、機械の学習問題など実に多岐にわたる。また、他の様々な手法とも相性もよく組み合わせて使うこともできる。
本発明は、ハードウェアとソフトウェアから構成された動的コンパイラを備えるVLIW型マイクロプロセッサにおいて、遺伝的アルゴリズムの手法を用いて、命令分岐予測や内部命令のスケジューリングを含めた最適化を行うことによって、動的コンパイラのオーバーヘッドを低減させる効果がある。また、遺伝的アルゴリズムの学習機能も併用することによって、オーバーヘッドを低減することやキャッシュの内容や容量を最適化することが可能となる。
まず、本発明の動的コンパイラを備えたVLIW型マイクロプロセッサの構成について説明する。図3に本発明のマイクロプロセッサを含む周辺の構成図を示す。
図3(a)(b)に示すように、本発明のマイクロプロセッサ33は、ハードウェア部分(PHW)31とソフトウェア部分(PSW)32からなっており、ハードウェア部分は、VLIWアーキテクチャ構造を有している。ソフトウェア部分に、動的コンパイラ部分を含んでおり、本発明の主要な部分である。ソフトウェア部分の上に、オペレーションシステム(OS)34が存在し、その上に一般のアプリケーション(AP)35が存在する。場合によっては、図3(b)の様に、直接オペレーションシステムが、ハードウェア部分をアクセスする場合も考えられる。
マイクロプロセッサの基本的な動作は、一般的に、(1)Fetch;命令の読み込み、(2)Decode;命令の解析、(3)Execution;演算実行、(4)Memory;メモリの参照、(5)Write;演算結果の書き込みの5ステージ(段階)に分けられる。しかし、全ての動作が終了するまで次の命令を実行しないというのでは非効率なので、各動作に対して次々に命令を投入することによって、効率をあげることが可能である。これが、図4に示す様なパイプライン方式である。図中で、「F」は命令の読み込み、「D」は命令の解析、「E」は演算実行、「M」はメモリの参照、「W」は演算結果の書き込みを意味している。マイクロプロセッサのパイプラインを止めないためには、クロックサイクル毎に1命令をフェッチしなければならない。しかし、このパイプラインの流れを止めてしまう制御ハザードが存在する。その制御ハザードの一つに分岐に起因するものがある。なぜならば、分岐命令が実行される場合、その分岐が成立するか否かは、パイプラインでいうメモリの参照(図5中の「M」動作)のステージになるまでわからないからである。
図5では、分岐命令があったときのパイプラインの流れを示している。ここでは、3クロックのストール(図中斜線部分がストール)が発生してしまっていることがわかる。ここで、図5の例のように、分岐が完了するまでパイプラインをストールさせては速度が遅くなりすぎるので、予め分岐の結果を予測して、後続命令の実行を継続させる。予測の結果が外れれば、途中まで進めた命令をフラッシュし、命令をフェッチし直さなければならない。こうした制御ハザードのコストを低減させるためには、分岐予測の精度を高める必要があり、動的コンパイラのオーバーヘッド低減に直結する。
また、ほとんどのプログラムでは、オブジェクト・コードを構成する命令のうち実際にマイクロプロセッサで実行する命令はわずかであり、これら実際の命令から成っている命令パスを見つけ出し最適化することが、動的コンパイラのオーバーヘッドの低減につながる。図6に、選択した命令パスの一例を示す。図中のノードにおいて、61の部分は基本ブロックを、62の部分は命令分岐を意味している。
動的コンパイラは、上記の分岐予測や命令パスの選択以外に、より広範な命令スケジューリングや最適化を行っている。更には、レジスタの割当やデータアドレスの割り当てなど多くの処理をつかさどっている。
本発明では、遺伝的アルゴリズム(GA)という手法を用いて、分岐予測や命令スケジューリング等の効率を上げて、動的コンパイルのオーバーヘッドの低減を図る。具体的には、図7に示す様に、マイクロプロセッサのソフトウェア部分の中は構成されている。図7中の71は、図3中の32と同じPSWを示しており、72の動的コンパイラや74で表現されているそれ以外から構成されているが、遺伝的アルゴリズムのエンジンは、動的コンパイラの外側(図7(a))にあっても、内側(図7(b))にあってもよい。
前述したが、遺伝的アルゴリズム(GA)とは、ある問題に対する最適な解を求めるための手法である。この手法はもともと、John H. Hollandらによって提唱された生物の世界にある遺伝の法則をまねて作られたもので、複数の解を、遺伝的に変化させながら、より良い解を求めていくものである。
GAでは解を遺伝子という形で表現する。これは解の持つ特徴を一定のルールに従って記述したもので、このルールを決めて遺伝子を決定することをコーディングと呼び、抱える問題をどう表現をするかという観点から重要な作業である。 コーディングに誤りがあったり、問題に適していなかったりした場合には、効果のある結果を望めない場合もある。通常、コーディングした遺伝子表現として、バイナリー・コードが使われることも多い。本発明においては、ターゲットなる問題、及び、メモリ低減の要請から、まさに、コーディングされた形態は、バイナリーライクなものが適している。
図8に、基本的なGAのフローチャートの例を示す。ただし、これは一例であり必ずしもこの通りである必要はない。フローの最初で、まず、初期集団を用意する。初期集団とは、解の集団、つまり、コーディングされた遺伝子表現の集まりであり、GAではこれを個体群と呼ぶ。初期集団となる個体群は、決まったデータでは無く、ランダムに作り出したものであったり、何らかのデータが用意されている場合もある。ただ、一つ言えることは初期集団には多様性があったほうが良い。つまり、遺伝的操作によって最適解を求めることが目的であるため、なるべくいろいろなパターンを用意すれば、それだけ調べられる可能性も広い、つまり、ローカル解に陥ることが無いというわけである。次に評価を行う。現在の個体群の中に条件を満たす解が含まれているなど、一定の条件を満たしたときに、GAは終了する。終了条件として、解とGAの世代(計算回数)を用意しておくと、解の判定用の条件が厳しすぎたときにGAが終わらなくなるのを防ぐことが可能である。
選択では、個体群の全ての個体(解)について適合度を求めて、この適合度に基づき次の世代に残す個体を決定する。適合度というのは、解の評価の高さを示すものである。問題によって求め方は変化するが、良い解ほど高い適合度が得られるように評価関数を設定する。また、選択の方法についてもさまざまな手法が存在する。問題によって適したものを選ぶことが望まれる。一般に、解を表現型に直すと評価しやすいと思われる。交叉(crossover)と突然変異(mutation)はGAオペレータと呼ばれ、GAを特徴づけるものである。ともに、遺伝の法則をヒントに作られたもので、交叉では複数の親(一般には二つ)から遺伝子を受け継ぐ新しい個体(子)を作ります。突然変異では、低い確率で起き、遺伝子の一部が変化を受ける。
図9に交叉の概念図を示す。一般には、1点交叉を行う場合が多いが、図9(b)の様に、N点交叉(Nは正整数)がありえる。また、図10に突然変異の例を示す。
ここで、交叉の目的は、両方の親から別々の良い形質を受け継ぐことにより、より良い遺伝子を作り出すことであり、突然変異の目的は遺伝子が局所的な最適解に落ち着いてしまうことを防ぎ、より広い範囲で最適な解を探すことにある。交叉と突然変異を繰り返すだけでは、遺伝子をいろいろ変化させるだけであるが、選択により適合度の低い個体は順次淘汰される仕組みになっているため、結果的には良い方向に変化をした個体が生き残っていくことになる。まさしく、自然界における生き物の進化と同じ様な淘汰が起きているわけである。
前述した遺伝的アルゴリズムを用いて、マイクロプロセッサのソフトウェア部分PSWにおける動的コンパイラのオーバーヘッドを低減する仕組みとしては、図7の様な構成を示したが、ソース・コードが実行ユニットへオブジェクト・コード変換される具体的なフローとしては、図11の様になる。図中111と112は、オブジェクト・コードを生成するが、本発明で特に重要なのは112の方で、最適化されたオブジェクト・コードを実行状況をフィードバックしながら生成する。この場合に遺伝的アルゴリズムが用いられるが、そのエンジンは、動的コンパイラ内に存在しても良いし、図中の113の様に外側にあって、サポート機能として扱われても良い。
ここで、遺伝的アルゴリズムを用いて最適化を行う以外に、重要な機能を付加することも可能である。遺伝的アルゴリズムは、学習機能も有することが可能であり。この機能を利用することによって、個々のユーザーに適合した、または、個々の時期に適合した命令パスの選択や命令スケジューリングを行う学習機能を付加することも可能となる。
これらの機能は、図12で示される様な、変換後のオブジェクト・コードをキャッシュに置く機能を有する場合にも適用することが可能である。変換後のオブジェクト・コードをキャッシュに置く基準や消し去る基準を決める手法として、遺伝的アルゴリズムを用いるわけである。更には、キャッシュの容量がアプリケーションによってことなる場合に遺伝的アルゴリズムを用いることによって最適な基準を選択することが可能となる。図12の様なキャッシュ機能は、オーバーヘッド低減には非常に有効な機能であり、マイクロプロセッサの性能を格段に向上させる。
本実施例では、本発明の図7や図11の遺伝的アルゴリズムエンジン(GAE)について説明する。
図7は、本発明のマイクロプロセッサのソフトウェア部分について示してある。図7中の71は、図3中の32と同じPSWを示しており、72の動的コンパイラや74で表現されているそれ以外から構成されているが、遺伝的アルゴリズムエンジン73は、動的コンパイラ72の外側(図7(a)にあっても、内側(図7(b))にあってもよい。また、図11は、ソース・コードが実行ユニットへオブジェクト・コード変換される具体的な動的コンパイラと遺伝的アルゴリズムエンジンの関係を示している。遺伝的アルゴリズムエンジンのフローチャートは、代表的には、図8の様に示される。但し、遺伝的アルゴリズムは、図8がもっとも単純なアルゴリズムではあるが、多少アレンジすることによって、最適解の得られるまでの収束時間や正当性を高めている。
図8のフローについて、命令スケジューリングを行う場合を例として述べる。まず、初期集団を決める必要がある。いわゆるコーディングの作業である。命令列をプログラム内での処理に適した形に変換して、これをもとに遺伝的表現を生成する。遺伝的表現として決めた命令列を実際に実行して、その時間を評価対象とすることとした。選択で、評価した命令列の適応度に応じて優先順位を決める。交叉、突然変異といった遺伝的なオペレートを行った後に、再度実行時間を評価して、新しい命令列に世代交代させる。世代交代では古い世代でも実行時間の短いものだけは次世代にも継続して残し、それ以外はすべて新世代の個体に置き換えることとする。この後に、再びこの新世代の命令列に対して選択と遺伝的なオペレートを施す。この遺伝的なオペレートは、収束条件を満たすまで繰り返し行う。収束条件としては、あらかじめ実行時間を設定しておく場合、或いは、世代交代数を設定しておく場合がある。収束条件を満たした後に、これによって生成された命令列群中の中から実行時間のもっとも短いものを目的とする命令列とする。ここでの、フローは、最も単純な場合なので、必ずしもこの様なフローである必要はない。
遺伝的アルゴリズムを用いた動的コンパイルを備えたマイクロプロセッサは、低消費電力化にも適しているため、パーソナルコンピュータをはじめとして、様々な携帯電子機器に用いることができる。
本発明のマイクロプロセッサを用いた電子機器として、ビデオカメラ、デジタルカメラ、ゴーグル型ディスプレイ(ヘッドマウントディスプレイ)、ナビゲーションシステム、音響再生装置(カーオーディオ、オーディオコンポ等)、ノート型パーソナルコンピュータ、ゲーム機器、携帯情報端末(モバイルコンピュータ、携帯電話、携帯型ゲーム機または電子書籍等)、記録媒体を備えた画像再生装置(具体的にはDVD:Digital Versatile Disc)等の記録媒体を再生し、その画像を表示しうるディスプレイを備えた装置などが挙げられる。特に、携帯情報端末は、個々のユーザーによって使い勝手が決まってくるので、個々のユーザーに合わせて進化する動的コンパイラの仕組みは、重要視される。それら電子機器の具体例を図13に示す。
図13(A)は携帯情報端末であり、本体3001、表示部3002、操作キー3003、モデム3004等を含む。図13(A)ではモデム3004が取り外し可能な形態の携帯情報端末を示しているが、モデムが本体3001に内蔵されていても良い。本発明のマイクロプロセッサは、本体内部に構成部品として用いることができる。
図13(B)は携帯電話であり、本体3101、表示部3102、音声入力部3103、音声出力部3104、操作キー3105、外部接続ポート3106、アンテナ3107等を含む。なお、表示部3102は黒色の背景に白色の文字を表示することで携帯電話の消費電流を抑えることができる。本発明のマイクロプロセッサは、本体内部に構成部品として用いることができる。
図13(C)は電子カードであり、本体3201、表示部3202、接続端子3203等を含む。本発明のプロセッサは、本体内部に構成部品として用いることができる。なお図13(C)では接触型の電子カードを示しているが、非接触型の電子カードや、接触型と非接触型の機能を持ち合わせた電子カードにも、本発明のマイクロプロセッサを用いることができる。
図13(D)は電子ブックであり、本体3301、表示部3302、操作キー3303等を含む。またモデムが本体3301に内蔵されていても良い。本発明のマイクロプロセッサは、本体内部に構成部品として用いることができる。
図13(E)はシート型のパーソナルコンピュータであり、本体3401、表示部3402、キーボード3403、タッチパッド3404、外部接続ポート3405、電源プラグ3406等を含む。本発明のマイクロプロセッサは、本体内部に構成部品として用いることができる。
以上の様に、本発明の適用範囲は極めて広く、あらゆる分野の電子機器に用いることが可能である。
スーパースカラー型と動的コンパイラを備えたVLIW型マイクロプロセッサに関するハードウェア構成の比較。 スーパースカラー型と動的コンパイラを備えたVLIW型マイクロプロセッサに関する命令スケジューリングの比較。 動的コンパイラを備えたVLIW型マイクロプロセッサ、及び、その周辺の構成図。 パイプライン方式を示す概念図。 分岐命令を有する場合のパイプライン方式の流れを示す概念図。 プログラム中の命令パスの選択例を示す図。 プロセッサのソフトウェア部分の構成を示す図。 基本的な遺伝的アルゴリズムのフローチャート図。 遺伝的アルゴリズムの交叉の例を示す図。 遺伝的アルゴリズムの突然変異の例を示す図。 ソース・コードが実行ユニットへオブジェクト・コード変換されるフローチャート。 変換後のオブジェクト・コードのキャッシュ格納に関するフローチャート。 本発明のマイクロプロセッサを用いた電子機器の図。

Claims (12)

  1. ハードウェア部分、およびソフトウェア部分を含むマイクロプロセッサにおいて、
    前記ソフトウェア部分に遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサ。
  2. 請求項1において、
    前記ソフトウェア部分に動的コンパイラを含み、前記動的コンパイラの処理に遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサ。
  3. 請求項1において、
    前記ソフトウェア部分に含まれる動的コンパイラは、命令分岐予測、命令パスの選択、内部命令のスケジューリング、および最適化を含む複数の処理を行い、前記複数の処理のうち少なくとも1つに遺伝的アルゴリズムを用いることを特徴とするマイクロプロセッサ。
  4. 請求項1乃至請求項3のいずれか一において、
    前記ソフトウェア部分に動的コンパイラ、遺伝的アルゴリズムエンジンを備えることを特徴とするマイクロプロセッサ。
  5. 請求項4において、
    前記遺伝的アルゴリズムエンジンは、前記動的コンパイラの一部に含まれることを特徴とするマイクロプロセッサ。
  6. 請求項4または請求項5において、
    前記遺伝的アルゴリズムエンジンは、
    初期集団を決定する手段と、
    前記初期集団を評価する手段と、
    評価対象を評価の適応度に応じて選択する手段と、
    交叉、突然変異といった遺伝的な操作を行う手段と、
    再度評価して、前記一連の処理を継続するか否かの評価を行う手段を少なくとも備えたことを特徴とするマイクロプロセッサ。
  7. ハードウェア部分、およびソフトウェア部分を含むVLIW型マイクロプロセッサにおいて、
    前記ソフトウェア部分に遺伝的アルゴリズムを用いることを特徴とするVLIW型マイクロプロセッサ。
  8. 請求項7において、
    前記ソフトウェア部分に動的コンパイラを含み、前記動的コンパイラの処理に遺伝的アルゴリズムを用いることを特徴とするVLIW型マイクロプロセッサ。
  9. 請求項7において、
    前記ソフトウェア部分に含まれる動的コンパイラは、命令分岐予測、命令パスの選択、内部命令のスケジューリング、および最適化を含む複数の処理を行い、前記複数の処理のうち少なくとも1つに遺伝的アルゴリズムを用いることを特徴とするVLIW型マイクロプロセッサ。
  10. 請求項7乃至請求項9のいずれか一において、
    前記ソフトウェア部分に動的コンパイラ、遺伝的アルゴリズムエンジンを備えることを特徴とするVLIW型マイクロプロセッサ。
  11. 請求項10において、
    前記遺伝的アルゴリズムエンジンは、前記動的コンパイラの一部に含まれることを特徴とするVLIW型マイクロプロセッサ。
  12. 請求項10または請求項11において、
    前記遺伝的アルゴリズムエンジンは、
    初期集団を決定する手段と、
    前記初期集団を評価する手段と、
    評価対象を評価の適応度に応じて選択する手段と、
    交叉、突然変異といった遺伝的な操作を行う手段と、
    再度評価して、前記一連の処理を継続するか否かの評価を行う手段を少なくとも備えたことを特徴とするマイクロプロセッサ。
JP2003271180A 2003-07-04 2003-07-04 遺伝的アルゴリズムを用いたマイクロプロセッサ Withdrawn JP2005032018A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003271180A JP2005032018A (ja) 2003-07-04 2003-07-04 遺伝的アルゴリズムを用いたマイクロプロセッサ
US10/878,011 US20050005085A1 (en) 2003-07-04 2004-06-29 Microprocessor using genetic algorithm
CNA2004100634569A CN1577275A (zh) 2003-07-04 2004-07-05 使用遗传算法的微处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003271180A JP2005032018A (ja) 2003-07-04 2003-07-04 遺伝的アルゴリズムを用いたマイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2005032018A true JP2005032018A (ja) 2005-02-03
JP2005032018A5 JP2005032018A5 (ja) 2006-07-20

Family

ID=33549955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003271180A Withdrawn JP2005032018A (ja) 2003-07-04 2003-07-04 遺伝的アルゴリズムを用いたマイクロプロセッサ

Country Status (3)

Country Link
US (1) US20050005085A1 (ja)
JP (1) JP2005032018A (ja)
CN (1) CN1577275A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009141395A (ja) * 2007-12-03 2009-06-25 Yamaha Corp 制御装置、音響信号処理システムおよび音響信号処理装置並びに制御用プログラム
US9250880B2 (en) 2013-11-25 2016-02-02 International Business Machines Corporation Method for obtaining execution frequency information on execution paths in control flow graph, and computer and computer program for obtaining the information
KR20190044526A (ko) * 2017-10-20 2019-04-30 그래프코어 리미티드 컴파일러 방법
US10817459B2 (en) 2017-10-20 2020-10-27 Graphcore Limited Direction indicator
US10936008B2 (en) 2017-10-20 2021-03-02 Graphcore Limited Synchronization in a multi-tile processing array
US10963003B2 (en) 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array
US11321272B2 (en) 2017-10-20 2022-05-03 Graphcore Limited Instruction set

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
CA2670096A1 (en) * 2006-11-21 2008-05-29 The Samuel Roberts Noble Foundation, Inc. Biofuel production methods and compositions
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
EP2628076B1 (en) 2010-10-12 2017-08-30 Intel Corporation An instruction sequence buffer to store branches having reliably predictable instruction sequences
WO2012051262A2 (en) * 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US9015093B1 (en) 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US8775341B1 (en) 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9921859B2 (en) * 2014-12-12 2018-03-20 The Regents Of The University Of Michigan Runtime compiler environment with dynamic co-located code execution
CN104615484B (zh) * 2015-02-13 2017-11-07 厦门市美亚柏科信息股份有限公司 自适应沙盒构建方法及其系统
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
CN108769729B (zh) * 2018-05-16 2021-01-05 东南大学 基于遗传算法的缓存布置系统及缓存方法
CN110134215B (zh) * 2019-05-24 2021-08-13 广东中兴新支点技术有限公司 数据处理方法、装置、电子设备及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274350A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd コンパイラ装置
JPH07110768A (ja) * 1993-10-13 1995-04-25 Hitachi Ltd 命令列スケジュール方法
JPH07121102A (ja) * 1993-10-27 1995-05-12 Omron Corp プログラマブルコントローラ
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
JP2002055829A (ja) * 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd 中間オブジェクト連結方法、及び、中間オブジェクト連結装置、及び、リンカ装置、及び、コンパイラドライバ装置、並びに、中間オブジェクトを連結するプログラムを記録した記憶媒体
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841947A (en) * 1996-07-12 1998-11-24 Nordin; Peter Computer implemented machine learning method and system
US5958061A (en) * 1996-07-24 1999-09-28 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US6668201B1 (en) * 1998-11-09 2003-12-23 General Electric Company System and method for tuning a raw mix proportioning controller
US7082222B2 (en) * 2001-01-10 2006-07-25 Koninklije Philips Electronics N.V. System and method for optimizing control parameter settings in a chain of video processing algorithms

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274350A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd コンパイラ装置
JPH07110768A (ja) * 1993-10-13 1995-04-25 Hitachi Ltd 命令列スケジュール方法
JPH07121102A (ja) * 1993-10-27 1995-05-12 Omron Corp プログラマブルコントローラ
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
JP2002055829A (ja) * 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd 中間オブジェクト連結方法、及び、中間オブジェクト連結装置、及び、リンカ装置、及び、コンパイラドライバ装置、並びに、中間オブジェクトを連結するプログラムを記録した記憶媒体
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009141395A (ja) * 2007-12-03 2009-06-25 Yamaha Corp 制御装置、音響信号処理システムおよび音響信号処理装置並びに制御用プログラム
US9250880B2 (en) 2013-11-25 2016-02-02 International Business Machines Corporation Method for obtaining execution frequency information on execution paths in control flow graph, and computer and computer program for obtaining the information
KR20190044526A (ko) * 2017-10-20 2019-04-30 그래프코어 리미티드 컴파일러 방법
US10802536B2 (en) 2017-10-20 2020-10-13 Graphcore Limited Compiler method
US10817459B2 (en) 2017-10-20 2020-10-27 Graphcore Limited Direction indicator
US10936008B2 (en) 2017-10-20 2021-03-02 Graphcore Limited Synchronization in a multi-tile processing array
KR102228501B1 (ko) * 2017-10-20 2021-03-16 그래프코어 리미티드 컴파일러 방법
US10963003B2 (en) 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array
US11262787B2 (en) 2017-10-20 2022-03-01 Graphcore Limited Compiler method
US11321272B2 (en) 2017-10-20 2022-05-03 Graphcore Limited Instruction set

Also Published As

Publication number Publication date
CN1577275A (zh) 2005-02-09
US20050005085A1 (en) 2005-01-06

Similar Documents

Publication Publication Date Title
JP2005032018A (ja) 遺伝的アルゴリズムを用いたマイクロプロセッサ
JP4986431B2 (ja) プロセッサ
CN103098020B (zh) 由多个指令集使用的寄存器间映射
CN109074260A (zh) 乱序的基于块的处理器和指令调度器
CN105706050A (zh) 能量高效的多模式指令发布
US10007605B2 (en) Hardware-based array compression
CN107077321A (zh) 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑
JP2014506692A (ja) Fsmを実装するための専用要素の利用
TW201602813A (zh) 用於特徵搜尋之系統,裝置及方法
KR20160033768A (ko) 캐시 점유도 결정 및 명령어 스케줄링을 위한 방법 및 장치
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
JP5941488B2 (ja) 条件付きショート前方分岐の計算的に等価な述語付き命令への変換
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US8707013B2 (en) On-demand predicate registers
JPWO2009004709A1 (ja) 間接分岐処理プログラムおよび間接分岐処理方法
KR20130045276A (ko) 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법
Kouzinopoulos et al. A hybrid parallel implementation of the Aho–Corasick and Wu–Manber algorithms using NVIDIA CUDA and MPI evaluated on a biological sequence database
US20070245120A1 (en) Multiple microcontroller system, instruction, and instruction execution method for the same
JP4444305B2 (ja) 半導体装置
CN114647447A (zh) 基于上下文的存储器间接分支目标预测
CN114691597A (zh) 自适应远程原子操作
CN114647596A (zh) 基于上下文的循环分支预测
CN216527140U (zh) 一种分支预测的装置及处理器
US11550572B2 (en) Splitting vector instructions into microinstructions for parallel execution based on index comparisons of completed microinstructions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060601

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060601

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090918

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101014

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101025

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20101228

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20120123