JP4986431B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP4986431B2
JP4986431B2 JP2005284145A JP2005284145A JP4986431B2 JP 4986431 B2 JP4986431 B2 JP 4986431B2 JP 2005284145 A JP2005284145 A JP 2005284145A JP 2005284145 A JP2005284145 A JP 2005284145A JP 4986431 B2 JP4986431 B2 JP 4986431B2
Authority
JP
Japan
Prior art keywords
instruction
processor
codes
code
packed
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.)
Active
Application number
JP2005284145A
Other languages
English (en)
Other versions
JP2007094813A (ja
Inventor
雅美 中島
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2005284145A priority Critical patent/JP4986431B2/ja
Priority to US11/520,616 priority patent/US7473293B2/en
Publication of JP2007094813A publication Critical patent/JP2007094813A/ja
Priority to US12/292,799 priority patent/US20090138685A1/en
Application granted granted Critical
Publication of JP4986431B2 publication Critical patent/JP4986431B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、複数の命令を並列に処理するプロセッサに関し、特に、複数の命令をまとめて1つのコードにパックした命令セットを処理するプロセッサに関する。
近年、携帯端末機器の普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。一般に、このようなデジタル信号処理には、専用の半導体装置としてDSP(Digital Signal Processor)が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用DSPを用いたとしても性能を飛躍的に向上させることは難しい。たとえば、演算対象のデータが1万組ある場合には、1つ1つのデータに対する演算を1マシンサイクルで実行できたとしても、演算のために最低でも1万サイクルが必要になる。すなわち、1つ1つのデータに対する処理は高速であるが、データ処理が直列であるため、データ量が多くなるとそれに比例して処理時間が長くなってしまう。
処理対象のデータが多い場合には、並列演算によって処理性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることで複数のデータ処理を同時に行なうことが可能である。このとき、複数のデータに対して同じ演算を行なう場合には、SIMD(Single Instruction stream-Multiple Data stream)と呼ばれる方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通にすることで、小さい面積で高い性能を発揮させることができる。
また、下記の非特許文献1には、命令メモリを小さくするために命令コードを短くすることが記載されている。
また、下記の非特許文献2には、1サイクルあたりに実行できる命令数を多くするために、VLIW(Very Long Instruction Word)方式により1つの命令フォーマットの中に複数のスロットを設け、複数の命令を並列に実行することが記載されている。
パターソン&ヘネシー著、「コンピュータの構成と設計」、日経BP社 中森章著、「マイクロプロセッサ・アーキテクチャ入門」、CQ出版社
しかしながら、非特許文献1に記載された命令メモリを小さくすることと、非特許文献2に記載された1サイクルあたりに実行できる命令数を多くすることとは、いわゆるトレードオフの関係にある。
すなわち、非特許文献1により命令メモリを小さくすることができるが、複数の命令がシリアルに実行されるため、命令実行に多くのサイクル数を要するといった問題点がある。たとえば、命令コード長が16ビットの場合、命令長は短いが4つの命令を実行するためには4サイクルを必要とする。
一方、非特許文献2により1サイクルあたりに実行できる命令が多くなるが、命令長が長くなり命令メモリのサイズも大きくなるといった問題点がある。たとえば、16ビットの4つのスロットを有するとすると、1サイクルで4つの命令を同時に実行することができるが、命令コード長は64ビットと長くなる。
本発明は、上記問題点を解決するためになされたものであり、その目的は、1サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリの容量を小さくすることが可能なプロセッサを提供することである。
本発明のある局面に従えば、並列に実行する複数の命令コードを含む長命令をデコードし、実行するプロセッサであって、長命令は、複数の命令からなる第1の部分と命令の状態を示す第2の部分とからなり、第1の部分の特定の1つの命令コードが、複数の命令コードが1つのコードにパックされたパック命令である場合に、第2の部分を第1の状態としてエンコードされ、第1の部分の特定の1つの命令コードが、パック命令以外の1つの命令コードである場合に、第2の部分を第2の状態としてエンコードされるものであり、プロセッサは、パック命令を複数の命令コードに変換する変換手段と、第2の部分が第1の状態である場合に、変換手段によって変換された複数の命令コードを選択し、第2の状態である場合に、パック命令以外の1つの命令コードを選択する選択手段と、特定の1つの命令コード以外の命令コードと選択手段によって選択された命令コードとをデコードするデコード手段と、デコード手段によるデコード結果に応じて、命令コードのそれぞれに対応する演算処理を並列に行なう複数の演算処理手段と、を含むことを特徴とする。
選択手段が、第2の部分が第1の状態である場合に、変換手段によって変換された複数の命令コードを選択し、第2の状態である場合に、パック命令以外の1つの命令コードを選択し、デコード手段が、特定の1つの命令コード以外の命令コードと選択手段によって選択された命令コードとをデコードし、複数の演算処理手段が、デコード手段によるデコード結果に応じて、命令コードのそれぞれに対応する演算処理を並列に行なうので、1サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリの容量を小さくすることが可能となる。
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるプロセッサによって用いられる命令コードの構成例を示す図である。この命令コードは、図1(a)に示すように、パックされた命令であることを示すパック有効ビット(V)と、パック命令と、命令1のオペコードおよびオペランドMpと、命令2のオペコードおよびオペランドApと、プロセッサの動作モードを示すモードビット(M)とを含む。なお、“ld @p1”命令はレジスタp1によって示されるアドレスからデータをロードする命令であり、“add @p2”命令はレジスタp2によって示されるアドレスに格納されるデータと、たとえばアキュムレータに格納されるデータとを加算する命令である。
パック有効ビットが有効“1”の場合、後述するように4ビットのパック命令によって複数の命令が選択される。たとえば、パック命令が“0100”の場合、図1(b)に示すように、“mv r1,r5”、“inc r5,2”、“mv r2,r3”および“inc r4,1”の4つの命令が選択される。なお、mv命令は、レジスタ間のデータ転送命令であり、inc命令は、レジスタの内容をインクリメントする命令である。
また、パック有効ビットが無効“0”の場合、4ビットのパック命令が1つの命令として処理される。
図2は、本発明の第1の実施の形態におけるプロセッサの概略構成を示すブロック図である。このプロセッサは、命令メモリ11と、命令キュー12と、パック命令を複数の命令コードに変換して出力する変換テーブル13と、パック有効ビットに応じて変換テーブル13から出力される変換後の複数命令コードと命令キュー12から出力されるパック命令とを選択的に出力する命令セレクタ14と、命令デコーダ15と、レジスタファイル16と、ALU17−1〜17−4とを含む。
命令メモリ11は、プロセッサによって実行されるプログラムを格納する。命令キュー12は、命令メモリ11からフェッチされた命令コードを一時的に記憶する。命令キュー12に記憶された16ビットの命令コードのうち、パック命令が4ビットの変換前コードとして変換テーブル13に与えられると共に、命令セレクタ14にも与えられる。残りの12ビットは直接命令デコーダ15に与えられる。
変換テーブル13は、データバス23に接続される複数のフリップフロップ21−1〜21−nと、命令キュー12から受けた4ビットの変換前コードに応じて、フリップフロップ21−1〜21−nの出力を選択するセレクタ22とを含む。
フリップフロップ21−1〜21−nのそれぞれには、データバス23を介して複数命令を含んだ32ビットの変換後コードが格納される。データバス23は、たとえば図示しないコンピュータの出力ポートに接続され、ユーザが外部から変換テーブル13の内容を書込むことが可能である。なお、フリップフロップの個数は任意であり、それぞれが4ビットの変換前コードに対応して設けられる。すなわち、変換前コードが4ビットであれば、フリップフロップを16個まで設けることができる。また、変換前コードは4ビットに限られるものではなく、ビット数を増やすことによって対応するフリップフロップの数を増やすことができる。
セレクタ22によって選択された32ビットの変換後コードは、命令セレクタ14に与えられる。命令セレクタ14は、パック有効ビットが有効“1”の場合には、セレクタ22から受けた32ビットの変換後コードを選択して命令デコーダ15に出力し、パック有効ビットが無効“0”の場合には、4ビットのパック命令を選択して命令デコーダ12に出力する。この場合、4ビットのパック命令は1つの命令コードとして処理される。
命令デコーダ15は、複数のデコードブロック151〜156を含む。ブロック151は、パック有効ビットが有効“1”の場合には、命令セレクタ14から受けた4つの命令コードをそれぞれ個別にデコードし、そのデコード結果をALU17−1〜17−4に与える。また、パック有効ビットが無効“0”の場合には、命令セレクタ14から受けた1つの命令コードのデコード結果をALU17−1〜17−4のいずれかに与えて1つのALUのみに演算処理を行なわせる。
ブロック152および153は、それぞれ命令1のオペコードおよび命令2のオペコードをデコードし、デコード結果を図示しない演算アレイに制御信号として出力する。また、ブロック154および155は、それぞれ命令1のオペランド部分および命令2のオペランド部分をデコードし、デコード結果を図示しない演算アレイに制御信号として出力する。
ブロック156は、パック有効ビット(v)およびモードビット(M)をデコードし、デコード結果を制御信号としてプロセッサの各ブロックに与える。
レジスタファイル16は、演算対象データや演算結果データなどを保持するレジスタ群である。ALU17−1〜17−4は、命令デコーダ15からのデコード結果を受け、共有バス18−1および18−2を介してレジスタファイル16に保持されるデータを参照しながら並列に演算処理を実行する。ALU17−1〜17−4は、共有バス18−1および18−2を介してレジスタファイル16から同時にデータを読出すことができる。
レジスタファイル16は、ALU17−1〜17−4による演算結果を共有バス19および20を介して受けて記憶する。なお、命令デコーダ15からALU17−1〜17−4に与えられるデコード結果には、図1(b)に示すようにオペランドも含まれる。
以上説明したように、本実施の形態におけるプロセッサによれば、パック有効ビットが有効“1”の場合に、変換テーブル13がパック命令に応じて複数の命令コードを選択し、命令セレクタ14が変換テーブル13から出力される複数の命令コードを含んだ変換後コードを選択して出力し、命令デコーダ15がその複数の命令コードをデコードして複数のALUに演算処理を行なわせるようにしたので、複数の命令を1つの命令コードにパックすることができ、命令メモリを小さくすることができると共に、1サイクルで実行できる命令数を多くすることが可能となった。
また、これによって演算処理を高速に実行でき、命令コードのフェッチに要する消費電力を削減することも可能となった。
また、フリップフロップ21−1〜21−nのそれぞれに格納される複数命令を、実行するプログラムに応じて変更することができるので、プログラムに適した命令セットをフリップフロップ21−1〜21−nに設定することにより、演算処理をより高速に実行することが可能となる。
(第2の実施の形態)
本発明の第1の実施の形態においては、ユーザが外部から変換テーブル13に命令セットを書込むものであったが、本実施の形態においてはコンピュータによって実行されるコンパイラが変換テーブル13に命令セットを書込むものである。
本実施の形態におけるプロセッサの概略構成は、図2に示す第1の実施の形態におけるプロセッサの概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
図3は、本発明の第2の実施の形態におけるプロセッサの変換テーブル13に命令セットを書込むコンパイラの処理手順を説明するためのフローチャートである。まず、コンパイラは、プログラムに記述された命令コードからパック命令(並列に実行される複数の命令コード)をリストアップする(S11)。そして、パック命令の発生頻度によってヒストグラムを作成する(S12)。
図3のステップS12においては、“mv r1,r5;inc r1,2;・・・”の発生頻度が26であり、“mv r2,r3;mv r3,r4;・・・”の発生頻度が154であり、“inc r3,2;inc r5,1;・・・”の発生頻度が3であることを示している。
次に、パック命令の発生頻度に応じてソーティングを行ない(S13)、発生頻度の高い複数の命令コードから順番に、フリップフロップ21−1〜21−nに転送して(S14)、処理を終了する。これらの複数の命令コードは、実施の形態1と同様に、たとえばデータバス23に接続された図示しないコンピュータの出力ポートを介して変換テーブル13に転送される。
なお、コンパイラは、複数の命令コードをフリップフロップ21−1〜21−nのどのフリップフロップに転送したかによって、複数の命令コードにパック命令を割付け、そのパック命令を用いてプログラムの命令を機械語に変換する。
以上説明したように、本実施の形態におけるプロセッサによれば、コンパイラによって発生頻度が高いと判定された複数の命令コードをパックし、複数の命令コードを変換テーブル13に書込むようにしたので、第1の実施の形態において説明した効果に加えて、圧縮効率が高い命令群をパックすることができ、命令メモリをさらに小さくすることが可能となった。
(第3の実施の形態)
図4は、本発明の第3の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、変換テーブル13の内部構成のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
変換テーブル13は、SRAM(Static Random Access Memory)、連想メモリなどのメモリ24を含む。命令キュー12から出力される4ビットの変換前コードがメモリ24のアドレスとして与えられる。メモリ24は、32ビット幅を有しており、それぞれのメモリ領域には複数の命令コードが格納される。
なお、図示しないコンピュータがデータバス23を介してメモリ24に複数の命令コードを順次書込む際、アドレスを制御しながらデータバス23に複数の命令コードを出力して、順次複数の命令コードをメモリ24に書込むものとする。
以上説明したように、本実施の形態におけるプロセッサによれば、変換テーブル13をメモリ24によって構成するようにしたので、第1の実施の形態において説明した効果に加えて、ハードウェア構成を簡略化および小型化することが可能となった。
(第4の実施の形態)
本発明の第4の実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、データバス23にプロセッサ自身のデータバスが接続される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
プロセッサはリセット時などの所定タイミングで、プロセッサ自身がバスマスタとなってデータバス23を介して変換テーブル13に複数命令の書込みを行なう。このとき、変換テーブル13への複数命令の書込みが終了するまで、プログラムによってプロセッサはパック有効ビットを無効“0”にして処理を行ない、変換テーブル13に対する複数命令の書込みが終了した時点でパック命令の実行を可能にする。
以上説明したように、本実施の形態におけるプロセッサによれば、プロセッサ自身がバスマスタとなって変換テーブル13に複数の命令コードを書込むようにしたので、第1の実施の形態において説明した効果に加えて、外部から変換テーブル13に複数の命令コードを転送する必要がなくなり、プロセッサ単独で処理を行なうことが可能となった。
(第5の実施の形態)
第1の実施の形態においては、図1に示すように命令コードにパック命令とパックされていない命令とが含まれる構成であったが、本実施の形態においては命令コードにパック命令のみが含まれる構成である。したがって、命令コードにパック有効ビットを含まない構成となっている。
図5は、本発明の第5の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、命令セレクタ14が削除され、セレクタ22の出力が直接命令デコーダ15に与えられる点と、命令デコーダ15内のパックされていない命令をデコードするブロックが削除されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
以上説明したように、本実施の形態におけるプロセッサによれば、命令コードがパック命令のみを含むようにしたので、第1の実施の形態において説明した効果に加えて、パック命令のビット数を増やすことができ、より多くの命令の組合わせをパックすることでき、より多くの命令を並列に実行することが可能となった。
(第6の実施の形態)
第1の実施の形態においては、変換テーブル13に書込まれる複数の命令にはオペランドを含んでいたが、本実施の形態においては変換テーブル13に書込まれる命令にはオペランドを含まず、オペコードのみをパックするものである。
本実施の形態におけるプロセッサの概略構成は、図2に示す第1の実施の形態におけるプロセッサの概略構成と同様である。ただし、パックされる命令のオペランドは、命令キュー12に格納される命令コードに含まれ、命令デコーダ15がそのオペランドをデコードし、デコード結果をALU17−1〜17−4に与える。
変換テーブル13は、オペコードのみを含んだ複数の命令コードを命令セレクタ14に出力する。命令デコーダ14は、命令セレクタ14から受けた命令コードのオペコードをデコードし、デコード結果をALU17−1〜17−nに与える。
以上説明したように、本実施の形態におけるプロセッサによれば、オペランドが変換テーブル13内のフリップフロップ21−1〜21−nに格納されないので、第1の実施の形態において説明した効果に加えて、変換テーブル13の回路規模をさらに小さくすることが可能となった。
(第7の実施の形態)
図6は、本発明の第7の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、変換テーブル13が命令メモリ11と命令キュー12との間に設けられる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
命令メモリ11からフェッチされた命令のうち、パック命令が4ビットの変換前コードとして変換テーブル13に与えられると共に、命令セレクタ14にも与えられる。残りの12ビットは直接命令キュー12に与えられる。
セレクタ22によって選択された32ビットの変換後コードは、命令セレクタ14に与えられる。命令セレクタ14は、パック有効ビットが有効“1”の場合には、セレクタ22から受けた32ビットの変換後コードを選択して命令キュー12に出力し、パック有効ビットが無効“0”の場合には、4ビットのパック命令を選択して命令キュー12に出力する。
命令キュー12は、保持する命令コードを所定のタイミングで命令デコーダ15に出力し、命令デコーダ15にデコードさせる。
以上説明したように、本実施の形態におけるプロセッサによれば、変換テーブル13を命令メモリ11と命令キュー12との間に設けるようにしたので、第1の実施の形態において説明した効果に加えて、命令キュー12から命令デコーダ15に命令コードが転送されて、命令コードがデコードされるまでの遅延時間を小さくすることが可能となる。たとえば、命令キュー12から命令デコーダ15に命令コードが転送されて、命令コードがデコードされるまでの遅延時間がプロセッサ全体のクリティカルパスである場合、プロセッサ全体の動作周波数を向上させることが可能となる。
(第8の実施の形態)
図7は、本発明の第8の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、命令キュー12が削除されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
命令メモリ11からフェッチされた命令のうち、パック命令が4ビットの変換前コードとして変換テーブル13に与えられると共に、命令セレクタ14にも与えられる。残りの12ビットは直接命令デコーダ15に与えられる。
セレクタ22によって選択された32ビットの変換後コードは、命令セレクタ14に与えられる。命令セレクタ14は、パック有効ビットが有効“1”の場合には、セレクタ22から受けた32ビットの変換後コードを選択して命令デコーダ15に出力し、パック有効ビットが無効“0”の場合には、4ビットのパック命令を選択して命令デコーダ15に出力する。
以上説明したように、本実施の形態におけるプロセッサによれば、命令キュー12を削除したので、第1の実施の形態において説明した効果に加えて、プロセッサ全体の回路規模を縮小することが可能となった。
(第9の実施の形態)
第1の実施の形態においては、パック化された複数の命令コードを並列に処理するものであったが、本実施の形態においてはパック化された複数の命令コードをシリアルに処理するものである。
本実施の形態におけるプロセッサの概略構成は、図2に示す第1の実施の形態におけるプロセッサの概略構成と同様である。ただし、パック命令の所定ビットが並列実行かシリアル実行かを示し、命令セレクタ14はその所定ビットを参照して処理を変更する。
命令セレクタ14は、パック命令が並列実行で処理されることを示す場合には、セレクタ22から出力される32ビットの変換後コードを一度に命令デコーダ15に出力する。また、命令セレクタ14は、パック命令がシリアル実行で処理されることを示す場合には、セレクタ22から出力される32ビットの変換後コードを複数のサイクルでシリアルに出力する。
たとえば、セレクタ22から4つの命令コードが出力される場合には、4サイクルで順次命令コードを命令デコーダ15に出力し、命令デコーダ15は4つの命令を順次でデコードする。デコード結果は、ALU17−1〜17−4のいずれか1つのALUに連続して与えられる。
以上説明したように、本実施の形態におけるプロセッサによれば、パック化された複数の命令コードをシリアルに処理できるようにしたので、第1の実施の形態において説明した効果に加えて、シリアルに実行する命令もパック化できるようになり、命令の圧縮効率をさらに高めることが可能となった。
(第10の実施の形態)
図8は、本発明の第10の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図2に示す第1の実施の形態におけるプロセッサと比較して、ジャンプ先の命令を登録するジャンプ先命令保存部31と、ジャンプ先のアドレスを保持するフリップフロップ32とを含む。
プロセッサがプログラムを実行中に、命令デコーダ15がペナルティのないジャンプ命令をデコードすると、命令登録制御信号をジャンプ先命令保存部31に出力する。ここで、ペナルティのないジャンプ命令とは、無条件分岐命令や、分岐条件を満たした場合の条件分岐命令を含むものとする。
ジャンプ先命令保存部31は、命令キュー12にジャンプ先命令が格納されたときに、そのジャンプ先命令を保存する。また、フリップフロップ32は、命令デコーダ15がペナルティのないジャンプ命令をデコードすると、命令デコーダ15から出力されるジャンプ先アドレスを保持する。命令セレクタ14は、フリップフロップ32に保持されるジャンプ先アドレスを参照して、ジャンプ先アドレスとジャンプ先命令保存部31に保存されるジャンプ先命令との対応関係を記憶する。ペナルティのないジャンプ命令が命令デコーダ15によってデコードされたときに、ジャンプ先命令保存部31にそのジャンプ先命令が保存されていなければ、同様の処理を行なう。
次に、命令デコーダ15がペナルティのないジャンプ命令をデコードしたときに、命令セレクタ14はフリップフロップ32に保持されるジャンプ先アドレスに対応するジャンプ先命令がジャンプ先命令保存部31に保存されていると判定すると、ジャンプ先命令保存部31からそのジャンプ先命令を読出して命令デコーダ15に出力する。なお、このとき図示しないプログラムカウンタには、ジャンプ先命令の次の命令のアドレスが与えられる。
図9は、本発明の第10の実施の形態におけるプロセッサのジャンプ時のパイプライン処理を説明するための図である。図9の上半分は、本実施の形態におけるジャンプ処理を示しており、サイクルT1において命令1のアドレスが発行され、サイクルT2において命令2のアドレスが発行されると共に、命令1のフェッチが行なわれる。なお、命令1はペナルティのないジャンプ命令である。
サイクルT3において、命令デコーダ15によってペナルティのないジャンプ命令がデコードされ、命令セレクタ14はフリップフロップ32に保持されるジャンプ先アドレスを参照して、ジャンプ先命令保存部31からジャンプ先命令を読出して命令デコーダ15に出力する。このとき、図示しないプログラムカウンタにはジャンプ先命令の次の命令のアドレスが与えられ、このアドレスが発行される。
サイクルT4においては、ジャンプ先命令が実行され、ジャンプ先命令の次の命令がフェッチされると共に、ジャンプ先命令の次の次の命令のアドレスが発行される。サイクルT5以降においては、同様のパイプライン処理が行なわれる。
なお、条件分岐命令の分岐条件を満たさない場合でも、命令キュー12にはジャンプ命令の次の命令が格納されているので、その命令を命令デコーダ15に与えることによって、図9の上半分に示すのと同様のパイプライン処理が可能である。
一方、図9の下半分は、従来のジャンプ処理を示しており、サイクルT1において命令1のアドレスが発行され、サイクルT2において命令2のアドレスが発行されると共に、命令1のフェッチが行なわれる。なお、命令1は分岐予測が必要なジャンプ命令である。
サイクルT3において、命令デコーダ15によってジャンプ命令がデコードされる。ここでは、分岐予測に失敗して分岐先の命令を再度フェッチしなければならないものとする。このサイクルにおいては、命令キュー12に格納される命令が無効となり、NOP(Non-OPeration)命令として処理される。
サイクルT4においては、NOP命令が実行され、ジャンプ先命令がフェッチされると共に、ジャンプ先命令の次の命令のアドレスが発行される。サイクルT5以降においては、同様のパイプライン処理が行なわれる。このように、ペナルティのないジャンプ命令と比較して、1サイクルだけ遅延が発生することになる。
なお、ペナルティのないジャンプ命令の場合であっても、ジャンプ先命令保存部31に保存されていなければ、図9の下半分に示すように、ジャンプ先命令をフェッチする必要がある場合があり、1サイクルの遅延が発生することになる。
以上説明したように、本実施の形態におけるプロセッサによれば、ジャンプ先命令保存部31にジャンプ先命令が保存されている場合には、そのジャンプ先命令を命令デコーダ15に与えるようにしたので、ジャンプにおけるサイクルのペナルティをなくすことができ、パイプラインの乱れによる遅延を防止することが可能となった。
すなわち、分岐予測をしていた従来技術においては、分岐予測に失敗した場合には再度命令フェッチを行なう必要があるためジャンプペナルティが発生することになるが、本実施の形態におけるプロセッサにおいてはジャンプ先命令保存部31にジャンプ先命令が保存されていればジャンプペナルティが発生することはない。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明の第1の実施の形態におけるプロセッサによって用いられる命令コードの構成例を示す図である。 本発明の第1の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第2の実施の形態におけるプロセッサの変換テーブル13に命令セットを書込むコンパイラの処理手順を説明するためのフローチャートである。 本発明の第3の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第5の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第7の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第8の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第10の実施の形態におけるプロセッサの概略構成を示すブロック図である。 本発明の第10の実施の形態におけるプロセッサのジャンプ時のパイプライン処理を説明するための図である。
符号の説明
11 命令メモリ、12 命令キュー、13 変換テーブル、14 命令セレクタ、15 命令デコーダ、16 レジスタファイル、17−1〜17−4 ALU、18−1,18−2,19,20 共有バス、21−1〜21−n,32 フリップフロップ、22 セレクタ、23 データバス、24 メモリ、31 ジャンプ先命令保存部、151〜156 デコードブロック。

Claims (11)

  1. 並列に実行する複数の命令コードを含む長命令をデコードし、実行するプロセッサであって、
    前記長命令は、
    複数の命令からなる第1の部分と命令の状態を示す第2の部分とからなり、
    前記第1の部分の特定の1つの命令コードが、複数の命令コードが1つのコードにパックされたパック命令である場合に、前記第2の部分を第1の状態としてエンコードされ、
    前記第1の部分の特定の1つの命令コードが、前記パック命令以外の1つの命令コードである場合に、前記第2の部分を第2の状態としてエンコードされるものであり、
    該プロセッサは、
    前記パック命令を複数の命令コードに変換する変換手段と、
    前記第2の部分が第1の状態である場合に、前記変換手段によって変換された複数の命令コードを選択し、第2の状態である場合に、前記パック命令以外の1つの命令コードを選択する選択手段と、
    前記特定の1つの命令コード以外の命令コードと前記選択手段によって選択された命令コードとをデコードするデコード手段と、
    前記デコード手段によるデコード結果に応じて、前記命令コードのそれぞれに対応する演算処理を並列に行なう複数の演算処理手段と、
    を含むことを特徴とするプロセッサ。
  2. 前記変換手段は、それぞれが異なる複数の命令コードの組を格納する複数のフリップフロップと、
    前記パック命令に応じて、前記複数のフリップフロップに格納された複数の命令コードの組を選択し、選択された複数の命令コードの組を前記デコード手段に出力するセレクタとを含む、請求項1記載のプロセッサ。
  3. 前記変換手段は、それぞれの領域に異なる複数の命令コードの組を格納し、前記パック命令をアドレスとして複数の命令コードの組を選択的に出力するメモリを含む、請求項1記載のプロセッサ。
  4. 前記変換手段は、外部装置が接続されるデータバスに接続され、該データバスを介して前記外部装置により複数の命令コードが書込まれる、請求項1〜3のいずれかに記載のプロセッサ。
  5. 前記変換手段は、前記外部装置によって実行されるコンパイラによって使用頻度が高いと判定された複数の命令コードの組が書込まれる、請求項4記載のプロセッサ。
  6. 前記変換手段は、前記プロセッサのデータバスに接続され、前記プロセッサによって複数の命令コードの組が書込まれる、請求項1〜3のいずれかに記載のプロセッサ。
  7. 前記プロセッサはさらに、前記命令メモリと前記変換手段との間に設けられる命令キューを含む、請求項1〜6のいずれかに記載のプロセッサ。
  8. 前記プロセッサはさらに、前記選択手段と前記デコード手段との間に設けられる命令キューを含む、請求項1記載のプロセッサ。
  9. 前記選択手段は、前記変換手段によって変換された複数の命令コードを前記デコード手段にシリアルに出力し、
    前記デコード手段は、前記複数の命令コードを1つずつデコードしてデコード結果を前記複数の演算処理手段のうち所定の演算処理手段に出力する、請求項1または8記載のプロセッサ。
  10. 前記フェッチされた命令コードは、並列実行を行なうかシリアル実行を行なうかを示す情報を含み、
    前記選択手段は、前記情報に応じて前記複数の命令コードを並列に前記デコード手段に出力するか、シリアルに前記デコード手段に出力するかを決定する、請求項1または8〜9のいずれかに記載のプロセッサ。
  11. 前記変換手段は、前記複数の命令コードのオペレーションコードのみを変換し、
    前記複数の命令コードのオペランドは、前記命令メモリからフェッチされる命令コードに含まれる、請求項1記載のプロセッサ。
JP2005284145A 2005-09-29 2005-09-29 プロセッサ Active JP4986431B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005284145A JP4986431B2 (ja) 2005-09-29 2005-09-29 プロセッサ
US11/520,616 US7473293B2 (en) 2005-09-29 2006-09-14 Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator
US12/292,799 US20090138685A1 (en) 2005-09-29 2008-11-26 Processor for processing instruction set of plurality of instructions packed into single code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005284145A JP4986431B2 (ja) 2005-09-29 2005-09-29 プロセッサ

Publications (2)

Publication Number Publication Date
JP2007094813A JP2007094813A (ja) 2007-04-12
JP4986431B2 true JP4986431B2 (ja) 2012-07-25

Family

ID=37895576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005284145A Active JP4986431B2 (ja) 2005-09-29 2005-09-29 プロセッサ

Country Status (2)

Country Link
US (2) US7473293B2 (ja)
JP (1) JP4986431B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4444305B2 (ja) * 2007-03-28 2010-03-31 株式会社東芝 半導体装置
JP2009288967A (ja) * 2008-05-28 2009-12-10 Fujitsu Ten Ltd 信号処理装置、表示制御装置、及び、信号処理装置のレジスタ設定方法
US20110283089A1 (en) * 2009-01-28 2011-11-17 Harshal Ingale modularized micro processor design
US9275491B2 (en) * 2010-04-05 2016-03-01 Nvidia Corporation GPU work creation and stateless graphics in OPENGL
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9672041B2 (en) * 2013-08-01 2017-06-06 Andes Technology Corporation Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table
JP2019095952A (ja) 2017-11-21 2019-06-20 ソニーセミコンダクタソリューションズ株式会社 プロセッサ、情報処理装置および処理方法
JP7506718B2 (ja) * 2022-08-05 2024-06-26 たけおかラボ株式会社 ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348490A (ja) * 1993-06-08 1994-12-22 Hitachi Ltd 演算処理方法、及びマイクロコンピュータ
US5636352A (en) * 1994-12-16 1997-06-03 International Business Machines Corporation Method and apparatus for utilizing condensed instructions
JPH10116229A (ja) * 1996-10-09 1998-05-06 Toshiba Corp データ処理装置
JP3585800B2 (ja) * 1999-01-13 2004-11-04 株式会社東芝 情報処理装置
JP2002215387A (ja) * 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
JP4502532B2 (ja) * 2001-02-23 2010-07-14 株式会社ルネサステクノロジ データ処理装置
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
KR20040064713A (ko) * 2001-11-26 2004-07-19 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법
JP2004220188A (ja) * 2003-01-10 2004-08-05 Sony Corp データ処理装置
JP4761808B2 (ja) * 2005-04-11 2011-08-31 株式会社東芝 マイクロプロセッサおよびその制御方法

Also Published As

Publication number Publication date
US20090138685A1 (en) 2009-05-28
JP2007094813A (ja) 2007-04-12
US20070074010A1 (en) 2007-03-29
US7473293B2 (en) 2009-01-06

Similar Documents

Publication Publication Date Title
JP4986431B2 (ja) プロセッサ
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
US7051190B2 (en) Intra-instruction fusion
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
JP2019032859A (ja) 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
WO2021249054A1 (zh) 一种数据处理方法及装置、存储介质
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
US20040255097A1 (en) Instruction encoding within a data processing apparatus having multiple instruction sets
US20200326940A1 (en) Data loading and storage instruction processing method and device
KR20130045276A (ko) 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법
CN116339832A (zh) 数据处理装置、方法及处理器
CN112559037B (zh) 一种指令执行方法、单元、装置及系统
JP4444305B2 (ja) 半導体装置
US11210091B2 (en) Method and apparatus for processing data splicing instruction
US6988121B1 (en) Efficient implementation of multiprecision arithmetic
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
US8255672B2 (en) Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit
US20130290677A1 (en) Efficient extraction of execution sets from fetch sets
JP4382076B2 (ja) データ処理装置
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
KR20000003447A (ko) 무조건 분기 명령어의 수행 시간을 줄이기 위한 분기 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080603

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111228

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: 20120417

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120424

R150 Certificate of patent or registration of utility model

Ref document number: 4986431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350