JP2012059163A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2012059163A
JP2012059163A JP2010203910A JP2010203910A JP2012059163A JP 2012059163 A JP2012059163 A JP 2012059163A JP 2010203910 A JP2010203910 A JP 2010203910A JP 2010203910 A JP2010203910 A JP 2010203910A JP 2012059163 A JP2012059163 A JP 2012059163A
Authority
JP
Japan
Prior art keywords
instruction
instructions
vliw
program counter
fixed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010203910A
Other languages
English (en)
Other versions
JP5565228B2 (ja
Inventor
Hirokazu Hanaki
博一 花木
Satoshi Takashima
敏 高島
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2010203910A priority Critical patent/JP5565228B2/ja
Priority to EP11175053.5A priority patent/EP2428889B1/en
Priority to US13/137,134 priority patent/US9841978B2/en
Priority to CN201110265352.6A priority patent/CN102402418B/zh
Publication of JP2012059163A publication Critical patent/JP2012059163A/ja
Application granted granted Critical
Publication of JP5565228B2 publication Critical patent/JP5565228B2/ja
Priority to US15/612,247 priority patent/US11200059B2/en
Expired - Fee Related 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】逐次実行部(RISCプロセッサ100)の処理と並列実行部(VLIWコプロセッサ200)の処理とを効率良く融合させる。
【解決手段】RISCプロセッサ100において同時にフェッチされた4つの命令のうち第2番目と第4番目の命令の特定フィールドが命令プリデコーダ170によってプリデコードされる。この特定フィールドはオペコードフィールドと同時発行命令数フィールドを含む。オペコードフィールドがVLIWコプロセッサ命令を示す場合、プログラムカウンタ管理部110は同時発行命令数フィールドに応じてプログラムカウンタの増分値を制御する。VLIWコプロセッサ200では同時発行命令数フィールドに応じた並列度によりVLIWコプロセッサ命令が実行される。
【選択図】図2

Description

本発明は、プロセッサに関し、特にVLIW(Very Long Instruction Word)型などの並列実行部を想定したプロセッサに関する。
RISCプロセッサ等の逐次実行プロセッサは、汎用的な制御処理に向いている。一方、VLIWプロセッサ等の並列実行プロセッサは、特定用途向けの単純かつ多くの並列演算処理を得意としている。通常、この2つのプロセッサはそれぞれが独立に命令キャッシュまたはRAMを備え、それぞれ独立に動作(命令発行および実行)している。つまり、RISC側の処理とVLIWプロセッサ側の処理は入り混じることなく、上位階層の共有しているメモリ上でのみ情報交換できる構造となっており、両者の処理を細かい単位で融合することは困難である。
そこで、従来、RISCプロセッサ命令のサブルーチン命令コードによってVLIW制御ユニットを動作させるプロセッサが提案されている(例えば、特許文献1参照。)。この従来技術では、サブルーチン命令コードによってプログラム番号を指定し、VLIW制御ユニットにおけるプログラムの実行を起動している。これにより、VLIW制御ユニットにおける並列実行を可能としている。
特開2002−032218号公報(図1)
上述の従来技術によれば、RISCプロセッサ命令からVLIW制御ユニットの並列実行を起動することができる。しかしながら、この従来技術では予めサブルーチンプログラムを準備して、その中からプログラム番号によって指定しなければならない。これは、一般的に32ビット幅のRISCプロセッサ命令によって、全てのVLIW制御ユニットを並列動作させることに起因するものである。また、この場合、サブルーチンプログラムの終了を待って、次のRISCプロセッサ命令を実行することになるため、RISCプロセッサの処理とVLIW制御ユニットの処理とを排他的に動作させることになる。したがって、両者の処理を細かい単位で融合することは困難であり、また、モードを頻繁に切替える必要があるため、処理効率の悪化を招く。
一方、RISC命令セットとVLIW命令を完全に融合した新しいRISC命令セットを定義しようとした場合は、過去のRISC命令セットによるソフトウェア資産およびソフトウェア開発環境に対する互換性を保つことが困難である。
本発明はこのような状況に鑑みてなされたものであり、逐次実行部(RISCプロセッサ)の処理と並列実行部(VLIW制御ユニット)の処理とを効率良く融合させることを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、プログラムカウンタに従って複数の固定長命令を同時にフェッチする命令フェッチ部と、上記複数の固定長命令のうち一部の固定長命令における特定フィールドをプリデコードする命令プリデコーダと、上記プリデコード結果に従って上記プログラムカウンタの増分を制御するプログラムカウンタ管理部とを具備するプロセッサである。これにより、命令デコードより前にプログラムカウンタの増分値を確定させて制御を容易にするという作用をもたらす。
また、この第1の側面において、上記特定フィールドは、上記一部の固定長命令において共通する特定のビット位置に設けられてもよい。また、上記特定フィールドは、上記複数の固定長命令における同時発行可能な命令数を示す同時発行命令数フィールドを含んでもよい。
また、本発明の第2の側面は、プログラムカウンタに従って4つの固定長命令を同時にフェッチする命令フェッチ部と、上記4つの固定長命令のうち第2番目と第4番目の固定長命令における共通する特定のビット位置に設けられる特定フィールドをプリデコードする命令プリデコーダと、上記プリデコード結果に従って上記プログラムカウンタの増分値が上記固定長命令の1命令分、2命令分または4命令分の何れかになるように制御するプログラムカウンタ管理部とを具備するプロセッサである。これにより、4つの固定長命令をフェッチした後、命令デコードより前にプログラムカウンタの増分値を1命令分、2命令分または4命令分の何れかに確定させて制御を容易にするという作用をもたらす。
また、本発明の第3の側面は、プログラムカウンタに従って複数の固定長命令を同時にフェッチする命令フェッチ部と、上記複数の固定長命令のうちオペコードフィールドにより指定された特定の命令を逐次実行する逐次実行部と、上記複数の固定長命令のうちオペコードフィールドにより指定された特定の命令を特定フィールドに示された情報に基づく並列度により実行する並列実行部と、上記複数の固定長命令のうち上記並列実行部による実行対象となる固定長命令における上記特定フィールドをプリデコードする命令プリデコーダと、上記プリデコード結果に従って上記プログラムカウンタの増分を制御するプログラムカウンタ管理部とを具備するプロセッサである。これにより、命令デコードより前にプログラムカウンタの増分値を確定させるとともに、特定フィールドに示された情報に基づく並列度により並列実行させるという作用をもたらす。
また、この第3の側面において、上記特定フィールドは、上記並列実行部による実行対象となる固定長命令において共通する特定のビット位置に設けられてもよい。また、上記特定フィールドは、上記複数の固定長命令における同時発行可能な命令数を示す同時発行命令数フィールドを含んでもよい。
また、本発明の第4の側面は、プログラムカウンタに従って4つの固定長命令を同時にフェッチする命令フェッチ部と、上記4つの固定長命令のうちオペコードフィールドにより指定された特定の命令を逐次実行する逐次実行部と、上記4つの固定長命令のうちオペコードフィールドにより指定された特定の命令を特定フィールドに示された情報に基づく並列度により実行する並列実行部と、上記4つの固定長命令のうち上記並列実行部による実行対象となる第2番目と第4番目の固定長命令における共通する特定のビット位置に設けられる上記特定フィールドをプリデコードする命令プリデコーダと、上記プリデコード結果に従って上記プログラムカウンタの増分値が上記固定長命令の1命令分、2命令分または4命令分の何れかになるように制御するプログラムカウンタ管理部とを具備するプロセッサである。これにより、4つの固定長命令をフェッチした後、命令デコードより前にプログラムカウンタの増分値を1命令分、2命令分または4命令分の何れかに確定させるとともに、特定フィールドに示された情報に基づく並列度により並列実行させるという作用をもたらす。
本発明によれば、RISCプロセッサ等の逐次実行部の処理とVLIW制御ユニット等の並列実行部の処理とを効率良く融合させることができるという優れた効果を奏し得る。
本発明の実施の形態におけるプロセッサシステムの構成例を示す図である。 本発明の実施の形態におけるRISCプロセッサ100の命令発行機構の概要構成例を示す図である。 本発明の実施の形態におけるRISCプロセッサ100の命令発行機構の詳細構成例を示す図である。 本発明の実施の形態における命令フォーマットの例を示す図である。 本発明の実施の形態における命令発行タイミングの例を示す図である。 本発明の実施の形態における命令発行タイミングに応じた同時発行命令数フィールドの値の例を示す図である。 本発明の実施の形態におけるプログラムカウンタの増分制御の例を示す図である。 本発明の実施の形態におけるインラインアセンブラマクロ命令の例を示す図である。 本発明の実施の形態におけるインラインアセンブラマクロ命令と同時発行命令数の関係例を示す図である。 本発明の実施の形態におけるアセンブラマクロ命令によるプログラム例を示す図である。
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(プログラムカウンタ増分制御)
2.第2の実施の形態(アセンブラマクロ命令による同時発行命令数設定)
3.まとめ
<1.第1の実施の形態>
[プロセッサシステムの構成]
図1は、本発明の実施の形態におけるプロセッサシステムの構成例を示す図である。このプロセッサシステムは、RISCプロセッサ100と、VLIWコプロセッサ200と、通常コプロセッサ300と、メインメモリ400とを備える。この実施の形態では、1サイクルで32ビット長の命令を最大4命令ずつフェッチして、VLIWコプロセッサ200により並列に実行し、または、RISCプロセッサ100とVLIWコプロセッサ200の組合せにより並列に実行することを想定する。なお、命令フォーマットの具体例については後述する。
RISCプロセッサ100は、プロセッサシステムの主となるプロセッサであり、一例としてRISC(Reduced Instruction Set Computer)アーキテクチャを採用する。このRISCプロセッサ100は、メモリバス409を介してメインメモリ400に接続しており、メインメモリ400から必要な命令やデータを取得して命令の実行処理を行う。このRISCプロセッサ100は、命令キャッシュ101と、命令セレクタ102と、命令デコーダ103と、逐次実行部104と、レジスタファイル105、データキャッシュ106とを備える。
命令キャッシュ101は、メインメモリ400から読み出された命令を一時的に保持するキャッシュメモリである。メインメモリ400から命令キャッシュ101へのデータ供給は1サイクルで最大4命令ずつを想定する。また、命令キャッシュ101から各部への命令供給も1サイクルで最大4命令ずつを想定する。このとき、4つの命令のうち先頭の命令以外、すなわち第2番目、第3番目および第4番目の3つの命令は、命令長96ビット幅の拡張命令パス191を介してVLIWコプロセッサ200に供給される。なお、命令キャッシュ101は、特許請求の範囲に記載の命令フェッチ部の一例である。
命令セレクタ102は、命令キャッシュ101から供給された4つの命令の中から1つの命令を選択して出力するものである。この命令セレクタ102によって選択された命令は、RISCプロセッサ100内の逐次実行部104、VLIWコプロセッサ200または通常コプロセッサ300の何れかにおける処理対象となる。命令セレクタ102によって選択された命令が、外部のVLIWコプロセッサ200または通常コプロセッサ300へ供給される際には、命令長32ビット幅の通常命令パス192が用いられる。
命令デコーダ103は、命令セレクタ102によって選択された命令をデコード(解読)するデコーダである。この命令デコーダ103のデコード結果によって、RISCプロセッサ100の処理対象命令であることが判明すると、その命令は逐次実行部104に供給される。
逐次実行部104は、RISCプロセッサ100における命令実行部である。この逐次実行部104は、命令デコーダ103によるデコード結果に従って、レジスタファイル105に保持されたオペランドデータを用いた処理を行う。そして、必要に応じてその実行結果をレジスタファイル105に書き戻す。また、この逐次実行部104は、命令デコーダ103によるデコード結果に従って、メインメモリ400またはデータキャッシュ106からデータを読み出してレジスタファイル105にオペランドデータをロードする。また、この逐次実行部104は、命令デコーダ103によるデコード結果に従って、レジスタファイル105に保持されたデータをメインメモリ400にストアする。その際、データキャッシュ106がコピーバック方式を採用する場合には、メインメモリ400にライトスルーせずに、データキャッシュ106のみに保持される。この逐次実行部104では、1サイクルあたり1命令ずつ処理されることが原則である。ただし、パイプライン処理による命令間のオーバラップ実行についてはこの限りではなく、見かけ上、複数の命令が同時に処理されているように観測される場合がある。
レジスタファイル105は、逐次実行部104による命令実行に必要なオペランドデータを保持するゼネラルレジスタである。このレジスタファイル105に保持されたオペランドデータは、逐次実行部104によるリードまたはライトの対象となる。また、このレジスタファイル105は、メインメモリ400からのロードまたはメインメモリ400へのストアの対象となる。また、このレジスタファイル105は、他のコプロセッサのレジスタファイルとの間でレジスタ間転送を行う。このレジスタ間転送は、パス195により行われる。
データキャッシュ106は、メインメモリ400から読み出されたデータを一時的に保持するキャッシュメモリである。このデータキャッシュ106は、コピーバック方式を採用する場合には、メインメモリ400との間で見かけ上の不一致が生じることがあるが、論理的には内容の整合性(コンシステンシ)は維持されるように制御される。また、このデータキャッシュ106は、VLIWコプロセッサ200や通常コプロセッサ300によっても利用され、それぞれのデータを一時的に保持する。データキャッシュ106からレジスタファイル105または通常コプロセッサ300へのデータ供給は、1サイクルで1データ(32ビット)ずつを想定する。一方、データキャッシュ106からVLIWコプロセッサ200へのデータ供給は、1サイクルで4データ(128ビット)ずつを想定する。
VLIWコプロセッサ200は、RISCプロセッサ100のコプロセッサとしてVLIW制御による並列実行を行うものである。このVLIWコプロセッサ200は、並列命令デコーダ203と、並列実行部204と、レジスタファイル205とを備えている。
並列命令デコーダ203は、RISCプロセッサ100から供給された命令をデコードするデコーダである。RISCプロセッサ100からは通常命令パス192の1命令分の信号に加えて、拡張命令パス191による3命令分の信号が供給され得る。すなわち、この並列命令デコーダ203には1サイクルあたり最大4命令分の信号が供給される。そして、この並列命令デコーダ203も1サイクルあたり最大4命令分をデコードする能力を有している。
並列実行部204は、VLIWコプロセッサ200における命令実行部である。この並列実行部204は、1サイクルあたり最大4命令分を同時に並列に実行する能力を有している。この並列実行部204は、後述するように、オペコードフィールドがVLIWコプロセッサ命令を示している場合に、同時発行命令数フィールドに示された情報に基づく並列度によりVLIWコプロセッサ命令を実行する。
レジスタファイル205は、並列実行部204による命令実行に必要なオペランドデータを保持するレジスタである。このレジスタファイル205には、パス196を介してデータキャッシュ106から1サイクル最大4命令(128ビット)が供給され得る。このレジスタファイル205に保持されたオペランドデータは、並列実行部204よるリードまたはライトの対象となる。また、このレジスタファイル205は、RISCプロセッサ100または通常コプロセッサ300のレジスタファイルとの間でレジスタ間転送を行う。このレジスタ間転送は、パス195により行われる。
通常コプロセッサ300は、RISCプロセッサ100のコプロセッサとして他の処理を行うものである。この通常コプロセッサ300としては、例えば浮動小数点コプロセッサが想定される。この通常コプロセッサ300は、命令デコーダ303およびレジスタファイル305等を備える。
命令デコーダ303は、RISCプロセッサ100から供給された命令をデコードするデコーダである。RISCプロセッサ100からは通常命令パス192を介して1命令分の信号が供給される。
レジスタファイル305は、通常コプロセッサ300内の(図示しない)実行部による命令実行に必要なオペランドデータを保持するレジスタである。このレジスタファイル305には、パス196の一部であるパス197を介して、データキャッシュ106から1サイクル1命令(32ビット)が供給され得る。
[命令発行機構の構成]
図2は、本発明の実施の形態におけるRISCプロセッサ100の命令発行機構の概要構成例を示す図である。このRISCプロセッサ100は、図1に示した命令キャッシュ101と命令デコーダ103の間に2つの命令プリデコーダ170を備えている。また、このRISCプロセッサ100は、プログラム実行のためのプログラムカウンタを管理するプログラムカウンタ管理部110を備えている。
命令プリデコーダ170は、命令キャッシュ101から同時に読み出された(フェッチされた)4つの命令のうち、第2番目と第4番目の命令における特定フィールド701をプリデコードするものである。第1番目と第3番目の命令においては特定フィールド701を設けてもよいが、それらをプリデコードする必要はない。ここで、プリデコードとは、命令デコーダ103による命令デコードよりも前に行われるデコードである。
プリデコードの対象となる特定フィールド701は、オペコードフィールドおよび同時発行命令数フィールドを含む。オペコードフィールドは命令種別を示すフィールドであり、その命令種別にはVLIWコプロセッサ命令が含まれる。VLIWコプロセッサ命令は、その命令がVLIWコプロセッサ200において処理される命令であることを示す。同時発行命令数フィールドは、VLIWコプロセッサ命令の場合、VLIWコプロセッサ200に対して同時発行可能な命令数を示すフィールドである。この同時発行命令数フィールドに従って、プログラムカウンタ管理部110におけるプログラムカウンタ制御や、VLIWコプロセッサ200の並列実行部204における並列実行制御が行われる。命令プリデコーダ170によるプリデコード結果は、信号線179を介してプログラムカウンタ管理部110に供給される。
命令キャッシュ101から同時に読み出された4つの命令は、4つの命令スロット#0乃至3として管理される。すなわち、第1番目の命令が命令スロット#0、第2番目の命令が命令スロット#1、第3番目の命令が命令スロット#2、第4番目の命令が命令スロット#3となる。これらの命令は命令スロットレジスタに一旦保持されるものとしてもよく、また、そのようなレジスタを設けることなく管理されてもよい。命令スロット#1乃至3の3つの命令は拡張命令パス191を介してVLIWコプロセッサ200に供給される。また、命令スロット#0乃至3の4つの命令は命令セレクタ102によって何れか1つの命令が選択され、通常命令パス192を介してRISCプロセッサ100自身、VLIWコプロセッサ200または通常コプロセッサ300の命令デコーダに供給される。
プログラムカウンタ管理部110は、命令プリデコーダ170によるプリデコード結果に従ってRISCプロセッサ100のプログラムカウンタの増分を制御するものである。オペコードフィールドがVLIWコプロセッサ命令以外の通常の命令を示している場合には、プログラムカウンタの増分は1命令分となる。オペコードフィールドがVLIWコプロセッサ命令を示している場合には、命令スロット#1および#3の同時発行命令数フィールドに従ってプログラムカウンタの増分値が決定される。このプログラムカウンタ管理部110によって管理されるプログラムカウンタの値は命令キャッシュ101に供給され、このプログラムカウンタが示すアドレスを先頭とする4つの命令の命令フェッチが行われる。
また、このプログラムカウンタ管理部110は、プリデコード結果に従って命令セレクタ102における選択制御を行う。プログラムカウンタの増分制御と同様に、オペコードフィールドがVLIWコプロセッサ命令以外の通常の命令を示している場合には、命令スロット#0から順番に1つずつ命令を選択させる。オペコードフィールドがVLIWコプロセッサ命令を示している場合には、命令スロット#1および#3の同時発行命令数フィールドに従って何れかの命令を選択させる。
図3は、本発明の実施の形態におけるRISCプロセッサ100の命令発行機構の詳細構成例を示す図である。ここでは、RISCプロセッサ100の命令パイプラインのうち命令キャッシュステージ、命令フェッチステージ、レジスタファイルステージを示している。命令キャッシュステージは、プログラムカウンタに従って命令キャッシュのメモリ部にアクセスするステージである。命令フェッチステージは、メモリ部から読み出された命令を選択するステージである。レジスタファイルステージは、フェッチされた命令をデコードして、オペランドデータを取得するステージである。命令キャッシュ101およびプログラムカウンタ管理部110は、命令キャッシュステージおよび命令フェッチステージに跨る。命令プリデコーダ170は命令フェッチステージに属する。一方、命令デコーダ103はレジスタファイルステージに属する。
なお、この構成例では、同時発行する命令グループの命令アドレスはソフトウェア開発時にアラインされていることを想定する。すなわち、2命令同時発行の際には2ワード境界、4命令同時発行の際には4ワード境界にアラインされているものとする。したがって、この構成例では、異なるサイクルにおいてフェッチされた命令同士を同時に発行することはできない。
プログラムカウンタ管理部110は、プログラムカウンタラッチ114、115、121乃至123および133と、加算器111乃至113と、プログラムカウンタマルチプレクサ116および124と、論理積ゲート132とを備えている。
加算器111は、現在のプログラムカウンタに1命令分の増分を表す値「1」を加算するものである。加算器112は、現在のプログラムカウンタに2命令分の増分を表す値「2」を加算するものである。加算器113は、現在のプログラムカウンタに4命令分の増分を表す値「4」を加算するものである。
プログラムカウンタラッチ114は、加算器111の出力または分岐先アドレスもしくは例外処理プログラムアドレス等を選択的に保持するラッチである。プログラムカウンタラッチ115は、加算器113の出力を保持するラッチである。プログラムカウンタラッチ121は、プログラムカウンタラッチ114の値を命令キャッシュステージのラッチとして保持するものである。プログラムカウンタラッチ122は、加算器112の出力を命令キャッシュステージのラッチとして保持するものである。プログラムカウンタラッチ123は、プログラムカウンタラッチ115の値を命令キャッシュステージのラッチとして保持するものである。プログラムカウンタラッチ133は、プログラムカウンタマルチプレクサ124の出力を命令フェッチステージのラッチとして保持するものである。
論理積ゲート132は、命令プリデコーダ170のプリデコード結果(信号線179)をmask信号によりマスクするものである。この論理積ゲート132の出力はプログラムカウンタマルチプレクサ124の選択信号入力に供給される。プログラムカウンタマルチプレクサ124は、プログラムカウンタラッチ121乃至123の何れかの値を選択信号入力に従って選択して、現在のプログラムカウンタの値として出力するものである。プログラムカウンタマルチプレクサ116は、命令種別に従ってプログラムカウンタラッチ114または115の何れかの出力を選択して、命令キャッシュ101に供給するものである。
命令キャッシュ101は、命令キャッシュタグメモリ141と、命令キャッシュウェイメモリ142および143と、バスインターフェース144と、マルチプレクサ145および146とを備えている。また、この命令キャッシュ101は、キャッシュタグラッチ151と、キャッシュデータラッチ152および153と、比較器154および155と、マルチプレクサ161乃至164とを備えている。
命令キャッシュタグメモリ141は、命令キャッシュ101のキャッシュタグであり、命令アドレスのタグ部分を保持するメモリである。この命令キャッシュタグメモリ141は、プログラムカウンタマルチプレクサ116から供給されたプログラムカウンタに従って該当するエントリを出力する。命令キャッシュウェイメモリ142および143は、メインメモリ400からの命令を保持するメモリであり、ここでは2ウェイセットアソシアティブメモリを想定している。命令キャッシュウェイメモリ142および143がメインメモリ400からの命令を記憶する際には、命令キャッシュタグメモリ141は対応するエントリにタグ部分を記憶する。
バスインターフェース144は、メモリバス409に接続してメインメモリ400からの命令を取得するものである。このバスインターフェース144は、命令キャッシュミス時に命令キャッシュウェイメモリ142または143へ命令をフィルする際、その命令を命令パイプラインへ伝達するために用いられる。また、マルチプレクサ145はタグ部分を選択し、マルチプレクサ146は命令を選択するために用いられる。
キャッシュタグラッチ151は、マルチプレクサ145の出力を保持するラッチである。キャッシュデータラッチ152は、命令キャッシュウェイメモリ142の出力を保持するラッチである。キャッシュデータラッチ153は、マルチプレクサ146の出力を保持するラッチである。
比較器154および155は、命令キャッシュタグメモリ141に保持されたタグ部分とプログラムカウンタとを比較する比較器である。これら比較器154および155の何れかにおいて一致が検出されればキャッシュヒットの可能性があり、何れにおいても不一致であればキャッシュミスヒットとなる。
マルチプレクサ161および162は、それぞれキャッシュデータラッチ152および153に保持された4命令(128ビット)から1命令(32ビット)を選択するものである。これらマルチプレクサ161および162は、図1および図2における命令セレクタ102に相当する。
マルチプレクサ163は、マルチプレクサ161または162の何れか一方の出力を、比較器154および155による比較結果に応じて選択するものである。マルチプレクサ164は、キャッシュデータラッチ152または153の出力の後方96ビットの何れか一方を、比較器154および155による比較結果に応じて選択するものである。すなわち、これらマルチプレクサ163および164は、2ウェイ命令キャッシュの一方のウェイを選択するものである。マルチプレクサ163は1命令分(32ビット)を選択し、マルチプレクサ164は3命令分(96ビット)を選択する。
命令プリデコーダ170は、上述のとおり、4つの命令のうち第2番目と第4番目の命令における特定フィールド701をプリデコードする。この特定フィールド701は、マルチプレクサ164の出力に含まれる。命令プリデコーダ170は、プリデコード結果としてプログラムカウンタの増分値(sel_PC)をプログラムカウンタ管理部110に信号線179を介して供給する。また、命令プリデコーダ170は、VLIWコプロセッサ命令を検出した場合には、VLIWコプロセッサ200への命令発行を有効にする信号(enable)を出力する。論理積ゲート166は、命令プリデコーダ170からのenable信号によってマルチプレクサ164の出力(3つの命令)をマスクするものである。すなわち、VLIWコプロセッサ命令が検出された場合には3つの命令がそのまま出力され、VLIWコプロセッサ命令以外が検出された場合には3つの命令はマスクされる。
ラッチ181は、フェッチされた4命令のうち後方3命令を保持するラッチである。ラッチ182は、フェッチされた4命令のうち先頭1命令を保持するラッチである。ラッチ183は、プログラムカウンタを保持するラッチである。ラッチ181の出力は拡張命令パス191に接続され、ラッチ182の出力は通常命令パス192に接続される。また、ラッチ182の出力は命令デコーダ103にも供給される。すなわち、上述の命令プリデコーダ170は、命令デコーダ103よりも手前に配置されることになる。
[命令フォーマット]
図4は、本発明の実施の形態における命令フォーマットの例を示す図である。図4(a)に示すように、この実施の形態では32ビット長の命令を想定する。第31ビット目から第25ビット目の7ビットは、オペコードを示すフィールドである。ここでは、VLIWコプロセッサ命令(コプロセッサ2命令)が指定された様子を示している。すなわち、VLIWコプロセッサ200はRISCプロセッサ100が元来接続可能な2番目のコプロセッサとして位置付けられ、そのためのコプロセッサ2命令をVLIWコプロセッサ命令として定義することで実行制御が行われる。なお、VLIWコプロセッサ命令の本体(第24ビット目から第0ビット目の25ビット)は、原則としてコプロセッサ2、すなわちVLIWコプロセッサ200のみによって解釈される。ただし、以下に示すように、この実施の形態では、第24ビット目および第23ビット目の2ビットも、RISCプロセッサ100において参照される。また、ここでは、VLIWコプロセッサ200を2番目のコプロセッサとして定義したが、これは一例に過ぎない。
第24ビット目および第23ビット目の2ビットfmtは、同時発行命令数を示すフィールドである。すなわち、この同時発行命令数フィールドが「00」であれば1命令の単独発行、「01」であれば2命令同時発行、「10」であれば4命令同時発行されることを示している。この同時発行命令数フィールドの値に基づいて、プログラムカウンタ管理部110におけるプログラムカウンタの増分制御が行われ、また、VLIWコプロセッサ200における実行の並列度が決定される。VLIWコプロセッサ命令のみが同時発行される場合には同時発行命令数フィールドの値がVLIWコプロセッサ200における実行の並列度と等しくなる。一方、RISC命令と同時にVLIWコプロセッサ命令が発行される場合には同時発行命令数フィールドの値から「1」減じた値がVLIWコプロセッサ200における実行の並列度になる。命令を同時発行する命令グループ中のVLIWコプロセッサ命令は、同時発行命令数フィールドにおいて同じ値を示す。ただし、後述するように、命令グループ中の一部の命令の値から他の命令の値を推定することができるため、必ずしもそれら全てを参照する必要はない。なお、以下の説明では簡単のために、1命令を示す「00」を「1」、2命令を示す「01」を「2」、4命令を示す「10」を「4」と表現することがある。
第22ビット目の1ビットcfは条件フラグであり、先行比較命令の結果に応じて当該命令を実行するか否かを指定するためのものである。例えば、当該命令のcfビットが「1」の場合、先行比較命令の結果が「真」であったならば当該命令は実行され、先行命令の結果が「偽」であったならば当該命令は実行されずNOPとなる。cfビットが「0」の場合、当該命令は必ず実行される。第21ビット目の1ビットimmは、第9ビット目から第5ビット目が即値であるか第2ソースオペランドrtであるかを示すものであり、immが「1」の場合、5ビットの即値であることを示す。
第20ビット目および第19ビット目の2ビットopcは、VLIWコプロセッサ命令の演算種別の大分類を示すものである。例えば、opcが「00」または「01」であればALU演算(ALU_X,Y)を表す。また、opcが「10」であれば、ビットシフト演算(BSF)、移動(MOV)、パック演算(PACK)などを表す。また、opcが「11」であれば、乗算(MPY)、比較(CMP_X)を表す。例えば、このopcが「11」の場合、図4(a)のように第4ビット目が命令小分類を示すことになる。
第18ビット目から第15ビット目の4ビットfunctは、機能を示すものである。このfunctの扱いは演算種別によって異なる。
第14ビット目から第10ビット目の5ビットは、第1ソースオペランドrsを示すものである。第9ビット目から第5ビット目の5ビットは、第2ソースオペランドrtまたは即値immを示すものである。第4ビット目から第0ビット目の5ビットは、デスティネーションオペランドrdを示すものである。
これらのビットフィールドのうち、命令プリデコーダ170によるプリデコード対象となるのは、第31ビット目から第23ビット目の9ビット分である。すなわち、命令プリデコーダ170は、各命令において共通する特定のビット位置に設けられるオペコードフィールドと同時発行命令数フィールドをプリデコード対象とする。これ以外のフィールドはVLIWコプロセッサ200においてデコードされるフィールドであり、RISCプロセッサ100は関与しないフィールドである。
[命令発行タイミング]
図5は、本発明の実施の形態における命令発行タイミングの例を示す図である。図5(a)は4命令同時発行の3パターンを示し、図5(b)は2命令同時発行の3パターンを示し、図5(c)は1命令発行の3パターンを示している。
4命令同時発行となるのは、まず、4つの命令スロット全てがVLIWコプロセッサ命令のパターンである。このとき、通常命令パス192により先頭の1命令が発行され、拡張命令パス191により残る3つの命令が発行される。これにより、VLIWコプロセッサ200において4命令が並列に実行される。
他に4命令同時発行となるのは、先頭スロットのみがRISC命令で後方3スロットがVLIWコプロセッサ命令のパターンである。このとき、拡張命令パス191によりVLIWコプロセッサ200に後方3命令が発行される。そして、RISCプロセッサ100において1つの命令が実行されるのと同時に、VLIWコプロセッサ200において残る3つの命令が並列に実行される。
4命令同時発行の変形パターンとして、先頭スロットのみがRISC−VLIW間転送命令で後方3スロットがVLIWコプロセッサ命令のパターンも考えられる。このとき、RISCプロセッサ100においてRISC−VLIW間転送命令が実行されるのと同時に、VLIWコプロセッサ200において残る3つの命令が並列に実行される。
2命令同時発行となるのは、まず、前方の2つの命令スロットがVLIWコプロセッサ命令のパターンである。このとき、通常命令パス192により先頭の1命令が発行され、拡張命令パス191により後続の1命令が発行される。これにより、VLIWコプロセッサ200において2命令が並列に実行される。
他に2命令同時発行となるのは、先頭スロットがRISC命令で後続の1スロットがVLIWコプロセッサ命令のパターンである。このとき、拡張命令パス191によりVLIWコプロセッサ200に後続の1命令が発行される。そして、RISCプロセッサ100において1つの命令が実行されるのと同時に、VLIWコプロセッサ200において残る1つの命令が実行される。
2命令同時発行の変形パターンとして、先頭スロットがRISC−VLIW間転送命令で後続1スロットがVLIWコプロセッサ命令のパターンも考えられる。このとき、RISCプロセッサ100においてRISC−VLIW間転送命令が実行されるのと同時に、VLIWコプロセッサ200において1つの命令が実行される。
1命令発行となるのは、まず、先頭の命令スロットが単独実行されるVLIWコプロセッサ命令のパターンである。このとき、通常命令パス192により先頭の1命令が発行される。これにより、VLIWコプロセッサ200において1命令が実行される。
他に1命令発行となるのは、先頭スロットがRISC命令であって、かつ、後続スロットの命令が同時に実行できないパターンである。この場合、後続の命令は次のサイクルにおいて実行対象となる。1命令発行の変形パターンとして、RISC−VLIW間転送命令の場合も同様である。
これらから理解されるように、本発明の実施の形態においては、RISC命令とVLIW命令とを同時発行する場合には、RISC命令は命令スロット#0に配置されていることが前提となる。このような前提を設けることにより、命令プリデコーダ170の構成を簡略化することができる。
図6は、本発明の実施の形態における命令発行タイミングに応じた同時発行命令数フィールドの値の例を示す図である。
フェッチされた4命令を全て同時に発行する場合、図6(a)に示すように、命令スロット#1および#3の両者の同時発行命令数フィールドの値が「4」となる。この場合、命令スロット#1の同時発行命令数フィールドを参照するだけで十分であり、命令スロット#1の同時発行命令数フィールドは特に参照する必要はない。また、命令スロット#0および#2の両者の同時発行命令数フィールドの値も「4」となっていると推定されるが、これらについても特に参照する必要はない。
フェッチされた4命令のうち、前半2命令を同時に発行し、続いて後半2命令を同時に発行する場合、図6(b)に示すように、命令スロット#1および#3の両者の同時発行命令数フィールドの値が「2」となる。命令スロット#1の同時発行命令数フィールドは前半2命令が同時に発行されることを示し、命令スロット#3の同時発行命令数フィールドは後半2命令が同時に発行されることを示している。なお、命令スロット#0および#2の両者の同時発行命令数フィールドの値も「2」となっていると推定されるが、これらについては特に参照する必要はない。
フェッチされた4命令のうち、前半2命令を同時に発行し、続く2命令を逐次に発行する場合、図6(c)に示すように、命令スロット#1の同時発行命令数フィールドの値は「2」となり、命令スロット#1の同時発行命令数フィールドの値は「1」となる。命令スロット#1の同時発行命令数フィールドは前半2命令が同時に発行されることを示し、命令スロット#3の同時発行命令数フィールドは後半2命令が逐次発行されることを示している。なお、命令スロット#0の同時発行命令数フィールドの値は「2」、命令スロット#2の同時発行命令数フィールドの値は「1」となっていると推定されるが、これらについては特に参照する必要はない。
フェッチされた4命令のうち、前半2命令を逐次に発行し、後半2命令を同時に発行する場合、図6(d)に示すように、命令スロット#1の同時発行命令数フィールドの値は「1」となり、命令スロット#1の同時発行命令数フィールドの値は「2」となる。命令スロット#1の同時発行命令数フィールドは前半2命令が逐次発行されることを示し、命令スロット#3の同時発行命令数フィールドは後半2命令が同時に発行されることを示している。なお、命令スロット#0の同時発行命令数フィールドの値は「1」、命令スロット#2の同時発行命令数フィールドの値は「2」となっていると推定されるが、これらについては特に参照する必要はない。
[プログラムカウンタの増分制御]
図7は、本発明の実施の形態におけるプログラムカウンタの増分制御の例を示す図である。
命令スロット#1または#3の同時発行命令数フィールドの値が「4」を示す場合、プログラムカウンタの増分値は4命令分である。これにより、次の4命令が同時にフェッチされることになる。なお、命令スロット#1または#3の同時発行命令数フィールドの何れか一方の値が「4」を示しているときには、他方も必ず「4」を示す。したがって、この場合、何れか一方のみを検知すれば十分である。
命令スロット#1および#3の同時発行命令数フィールドの値がともに「2」を示す場合、プログラムカウンタの増分値は、最初のサイクルで2命令分、次のサイクルで2命令分となる。これに続いて、次の4命令が同時にフェッチされることになる。
命令スロット#1の同時発行命令数フィールドの値が「2」を示し、命令スロット#3の同時発行命令数フィールドの値が「1」を示す場合、プログラムカウンタの増分値は、最初のサイクルで2命令分、次のサイクルで1命令分、次のサイクルで1命令分となる。これに続いて、次の4命令が同時にフェッチされることになる。
命令スロット#1の同時発行命令数フィールドの値が「1」を示し、命令スロット#3の同時発行命令数フィールドの値が「2」を示す場合、プログラムカウンタの増分値は、最初のサイクルで1命令分、次のサイクルで1命令分、次のサイクルで2命令分となる。これに続いて、次の4命令が同時にフェッチされることになる。
命令スロット#1および#3の同時発行命令数フィールドの値がともに「1」を示す場合、4つの命令が1命令ずつ発行されるため、プログラムカウンタの増分値は1命令分を4サイクル繰り返す。そして、これに続いて、次の4命令が同時にフェッチされることになる。
このように、本発明の第1の実施の形態によれば、命令プリデコーダ170によってVLIWコプロセッサ命令の同時発行命令数フィールドをプリデコードすることにより、プログラムカウンタの増分を容易に制御することができる。これにより、RISC命令とVLIWコプロセッサ命令をサイクル単位で複数同時発行することができ、RISCプロセッサ100とVLIWコプロセッサ200を同時に実行させることができる。
<2.第2の実施の形態>
上述の第1の実施の形態では同時発行命令数フィールドをプリデコードすることによってプログラムカウンタの増分を制御する手法を示したが、以下の第2の実施の形態ではアセンブラマクロ命令を利用して同時発行命令数フィールドを設定する手法について説明する。なお、ハードウェア構成や機械語レベルの命令セットについては第1の実施の形態と共通である。また、このアセンブラマクロ命令を利用した機械語コード生成方法はあくまで一例にすぎない。例えば、純粋なCプログラム等から、Cコンパイラ等により並列演算可能な部分を自動抽出してVLIW命令に自動マッピングし、上記同時発行命令数フィールドを含んだ機械語コードを自動生成することも可能である。
[インラインアセンブラマクロ命令]
図8は、本発明の実施の形態におけるインラインアセンブラマクロ命令の例を示す図である。ここでは本発明の実施の形態に利用される代表的なインラインアセンブラマクロ命令を挙げており、これら以外にも様々なインラインアセンブラマクロ命令を想定し得る。
VliwAlign4インラインアセンブラマクロ命令は、4ワードアライメントのためのインラインアセンブラマクロである。このインラインアセンブラマクロにより、後続のアセンブラ命令が4ワード境界にアラインされる。その際、コンパイラは必要に応じてNOP(No OPeration)命令を挿入する。
VliwAlign2インラインアセンブラマクロ命令は、2ワードアライメントのためのインラインアセンブラマクロである。このインラインアセンブラマクロにより、後続のアセンブラ命令が2ワード境界にアラインされる。VliwAlign4インラインアセンブラマクロ命令と同様に、コンパイラは必要に応じてNOP命令を挿入する。
VliwQ4インラインアセンブラマクロ命令は、VLIWコプロセッサ命令を4命令同時に発行するためのVLIWコプロセッサ命令マクロである。このVLIWコプロセッサ命令マクロにより、指定された4つのVLIWコプロセッサ命令の同時発行命令数フィールドには4命令を示す「10」が設定される。
VliwQ3インラインアセンブラマクロ命令は、1つのRISC命令と3つのVLIWコプロセッサ命令の計4命令を同時に発行するためのVLIWコプロセッサ命令マクロである。このVLIWコプロセッサ命令マクロにより、指定された3つのVLIWコプロセッサ命令の同時発行命令数フィールドには4命令を示す「10」が設定される。なお、RISC命令に代えてRISC−VLIW間通信インラインアセンブラマクロ命令を同時に発行してもよい。
VliwD2インラインアセンブラマクロ命令は、VLIWコプロセッサ命令を2命令同時に発行するためのVLIWコプロセッサ命令マクロである。このVLIWコプロセッサ命令マクロにより、指定された2つのVLIWコプロセッサ命令の同時発行命令数フィールドには2命令を示す「01」が設定される。
VliwD1インラインアセンブラマクロ命令は、1つのRISC命令と1つのVLIWコプロセッサ命令の計2命令を同時に発行するためのVLIWコプロセッサ命令マクロである。このVLIWコプロセッサ命令マクロにより、指定された1つのVLIWコプロセッサ命令の同時発行命令数フィールドには2命令を示す「01」が設定される。なお、RISC命令に代えてRISC−VLIW間通信インラインアセンブラマクロ命令を同時に発行してもよい。
Vliwインラインアセンブラマクロ命令は、1つのVLIWコプロセッサ命令を単独で発行するためのVLIWコプロセッサ命令マクロである。このVLIWコプロセッサ命令マクロにより、指定された1つのVLIWコプロセッサ命令の同時発行命令数フィールドには1命令を示す「00」が設定される。
RISC−VLIW間通信インラインアセンブラマクロ命令には、例えば、Vliw_LD、Vliw_ST、Vliw_MT、Vliw_MFなどのインラインアセンブラマクロ命令がある。Vliw_LDインラインアセンブラマクロ命令は、RISCのデータキャッシュからVliwコプロセッサレジスタへデータを直接ロードする1命令に置き換えられる。Vliw_STインラインアセンブラマクロ命令は、RISCのデータキャッシュへVliwコプロセッサレジスタからデータを直接ストアする1命令に置き換えられる。Vliw_MTインラインアセンブラマクロ命令は、RISCのレジスタファイルからVliwコプロセッサレジスタへデータを移動する1命令に置き換えられる。Vliw_MFインラインアセンブラマクロ命令は、RISCのレジスタファイルへVliwコプロセッサレジスタからデータを移動する1命令に置き換えられる。このRISC−VLIW間通信インラインアセンブラマクロ命令により、RISCプロセッサ100とVLIWコプロセッサ200との間でデータ通信が行われる。
__addu__インラインアセンブラマクロ命令は、加算演算を指示する1つのRISC命令のインラインアセンブラマクロである。この__addu__インラインアセンブラマクロ命令は、RISC命令のインラインアセンブラマクロの一つとして例示したものであり、これ以外にも様々なRISC命令のインラインアセンブラマクロを想定し得る。
[インラインアセンブラマクロ命令と同時発行命令数]
図9は、本発明の実施の形態におけるインラインアセンブラマクロ命令と同時発行命令数の関係例を示す図である。なお、ここでは全ての命令スロット#0乃至3の同時発行命令数を設定しているが、実際に参照されるのは命令スロット#1および#3である。
VliwQ4インラインアセンブラマクロ命令の場合、命令スロット#0乃至#3の同時発行命令数には4命令を示す「10」が設定される。また、RISC命令とVliwQ3インラインアセンブラマクロ命令との組合せの場合、命令スロット#1乃至#3の同時発行命令数には4命令を示す「10」が設定される。ただし、命令スロット#0のRISC命令には該当するフィールドが存在しないため何も設定されない。
VliwD2インラインアセンブラマクロ命令の場合、命令スロット#0および#1の同時発行命令数には2命令を示す「01」が設定される。また、RISC命令とVliwD1インラインアセンブラマクロ命令との組合せの場合、命令スロット#1の同時発行命令数には2命令を示す「01」が設定されるが、命令スロット#0のRISC命令には該当するフィールドが存在しないため何も設定されない。これらの場合において、命令スロット#2および#3の同時発行命令数には、後続の命令に従って2命令を示す「01」または1命令を示す「00」が設定される。すなわち、後続の命令がVliwD2インラインアセンブラマクロ命令であれば2命令を示す「01」が設定され、Vliwインラインアセンブラマクロ命令であれば1命令を示す「00」が設定される。
Vliwインラインアセンブラマクロ命令の場合、命令スロット#0および#1の同時発行命令数には1命令を示す「00」が設定される。命令スロット#2および#3の同時発行命令数には、後続の命令に従って2命令を示す「01」または1命令を示す「00」が設定される。すなわち、後続の命令がVliwD2インラインアセンブラマクロ命令であれば2命令を示す「01」が設定され、Vliwインラインアセンブラマクロ命令であれば1命令を示す「00」が設定される。
[インラインアセンブラマクロ命令によるプログラム]
図10は、本発明の実施の形態におけるインラインアセンブラマクロ命令によるプログラム例を示す図である。このプログラム例は、C言語の形式によりインラインアセンブラマクロ命令を記述したものである。冒頭のinclude文はインラインアセンブラマクロの定義ファイルを呼び出すためのものである。これに続いてサンプルコードが記述されている。ここでは、for文による繰り返しループの本体について1行ずつ説明する。
ループ本体の第1行目はVliwAlign4インラインアセンブラマクロ命令であり、これにより第2行目の命令が4ワード境界にアラインされる。第2行目はRISC命令(__addu__インラインアセンブラマクロ命令)とVliwQ3インラインアセンブラマクロ命令である。VliwQ3インラインアセンブラマクロ命令では、VLIWコプロセッサ命令として、Vliw_SUB命令、Vliw_ADD命令、Vliw_nop命令の3命令が指定されている。これにより、1つのRISC命令と3つのVLIWコプロセッサ命令が同時に発行される。
第3行目はVliwQ4インラインアセンブラマクロ命令であり、VLIWコプロセッサ命令として、Vliw_ADD命令、Vliw_SUB命令、Vliw_nop命令、Vliw_nop命令の4命令が指定されている。これにより、4つのVLIWコプロセッサ命令が同時に発行される。
第4行目はVliw_STインラインアセンブラマクロ命令とVliwQ3インラインアセンブラマクロ命令である。VliwQ3インラインアセンブラマクロ命令では、VLIWコプロセッサ命令として、Vliw_SUB命令、Vliw_ADD命令、Vliw_nop命令の3命令が指定されている。これにより、1つのRISC−VLIW間通信命令と3つのVLIWコプロセッサ命令が同時に発行される。
第5行目はC言語による加算処理であり、CコンパイラによってRISCの加算命令に自動マッピングされることが予想され、この加算命令はRISCプロセッサ100内の逐次実行部104により実行される。
第6および7行はVliwインラインアセンブラマクロ命令である。これらVliwインラインアセンブラマクロ命令はそれぞれ単独でVLIWコプロセッサ200に発行される。
第8行目はVliwAlign2インラインアセンブラマクロ命令であり、これにより第9行目の命令が2ワード境界にアラインされる。第9行目はVliwD2インラインアセンブラマクロ命令であり、VLIWコプロセッサ命令として、Vliw_vsrami命令およびVliw_MUL命令の2命令が指定されている。これにより、2つのVLIWコプロセッサ命令が同時に発行される。
第10行目はRISC命令(__addu__インラインアセンブラマクロ命令)とVliwD1インラインアセンブラマクロ命令である。VliwD1インラインアセンブラマクロ命令では、VLIWコプロセッサ命令として、Vliw_MUL命令が指定されている。これにより、1つのRISC命令と1つのVLIWコプロセッサ命令が同時に発行される。
このように、本発明の第2の実施の形態によれば、インラインアセンブラマクロ命令を用いて命令の配置(アライン)や同時発行される命令群を明示することにより、VLIWコプロセッサ命令の同時発行命令数フィールドの値の設定を容易にすることができる。
<3.まとめ>
以上説明したように、本発明の実施の形態によれば、命令プリデコーダ170におけるプリデコードにより、プログラムカウンタの増分を容易に制御することができる。これにより、RISC命令とVLIWコプロセッサ命令をサイクル単位で複数同時発行することができるため、RISCプロセッサ100とVLIWコプロセッサ200のそれぞれの得意な処理を同時に実行させることができる。例えば、VLIWコプロセッサ200において並列データ演算をしながら、RISCプロセッサ100において次のVLIW演算に必要なデータのメモリアドレス(ポインタ)の計算をすることができる。また、RISCに転送済のVLIW演算結果を加工もしくは判断し、または、全く別の処理を行うことができる。
さらに、RISC−VLIW間通信命令とVLIWコプロセッサ命令とをサイクル単位で複数同時発行することができる。そのため、当該サイクルのVLIWコプロセッサ演算と、後続のVLIWコプロセッサ演算が必要とするデータの供給(RISCのデータキャッシュやRISCのレジスタファイルから)とを、同時に実行することができる。これにより、VLIWコプロセッサはRISCからのデータの供給を待つことなく演算を毎サイクル連続して実行し続け得る。
ただし、実際には、1個のRISC命令(またはRISC−VLIW間通信命令)と最大3個のVLIW命令という比率では、VLIWコプロセッサを「全く止めることなく」動かすことは容易ではない。その意味では、本発明の発展形として、RISC命令N個とVLIW命令N個の同時発行というのもさらに有効な方法となり得る。
また、本発明の実施の形態では、同時に発行可能なVLIWコプロセッサ命令の数が1命令、2命令または4命令の可変長であるため、固定長VLIWプロセッサよりも空きスロットを削減することができ、命令密度を向上させることができる。
また、本発明の実施の形態によれば、同時発行命令数フィールドをVLIWコプロセッサ命令の本体において指定することにより、RISC命令のみを使用した過去のソフトウェア資産との互換性を維持することができる。
また、本発明の実施の形態によれば、同時発行命令数フィールドを利用することによりプログラムカウンタの増分制御が簡素化されるため、命令プリデコーダ170を新たに設けた状態において動作周波数の低下を招くことがなく、高速動作が可能である。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
100 RISCプロセッサ
101 命令キャッシュ
102 命令セレクタ
103 命令デコーダ
104 逐次実行部
105 レジスタファイル
106 データキャッシュ
110 プログラムカウンタ管理部
141 命令キャッシュタグメモリ
142、143 命令キャッシュウェイメモリ
170 命令プリデコーダ
179 信号線(sel_pc)
191 拡張命令パス
192 通常命令パス
200 VLIWコプロセッサ
203 並列命令デコーダ
204 並列実行部
205 レジスタファイル
300 通常コプロセッサ
303 命令デコーダ
305 レジスタファイル
400 メインメモリ
701 特定フィールド

Claims (8)

  1. プログラムカウンタに従って複数の固定長命令を同時にフェッチする命令フェッチ部と、
    前記複数の固定長命令のうち一部の固定長命令における特定フィールドをプリデコードする命令プリデコーダと、
    前記プリデコード結果に従って前記プログラムカウンタの増分を制御するプログラムカウンタ管理部と
    を具備するプロセッサ。
  2. 前記特定フィールドは、前記一部の固定長命令において共通する特定のビット位置に設けられる請求項1記載のプロセッサ。
  3. 前記特定フィールドは、前記複数の固定長命令における同時発行可能な命令数を示す同時発行命令数フィールドを含む請求項2記載のプロセッサ。
  4. プログラムカウンタに従って4つの固定長命令を同時にフェッチする命令フェッチ部と、
    前記4つの固定長命令のうち第2番目と第4番目の固定長命令における共通する特定のビット位置に設けられる特定フィールドをプリデコードする命令プリデコーダと、
    前記プリデコード結果に従って前記プログラムカウンタの増分値が前記固定長命令の1命令分、2命令分または4命令分の何れかになるように制御するプログラムカウンタ管理部と
    を具備するプロセッサ。
  5. プログラムカウンタに従って複数の固定長命令を同時にフェッチする命令フェッチ部と、
    前記複数の固定長命令のうちオペコードフィールドにより指定された特定の命令を逐次実行する逐次実行部と、
    前記複数の固定長命令のうちオペコードフィールドにより指定された特定の命令を特定フィールドに示された情報に基づく並列度により実行する並列実行部と、
    前記複数の固定長命令のうち前記並列実行部による実行対象となる固定長命令における前記特定フィールドをプリデコードする命令プリデコーダと、
    前記プリデコード結果に従って前記プログラムカウンタの増分を制御するプログラムカウンタ管理部と
    を具備するプロセッサ。
  6. 前記特定フィールドは、前記並列実行部による実行対象となる固定長命令において共通する特定のビット位置に設けられる請求項5記載のプロセッサ。
  7. 前記特定フィールドは、前記複数の固定長命令における同時発行可能な命令数を示す同時発行命令数フィールドを含む請求項6記載のプロセッサ。
  8. プログラムカウンタに従って4つの固定長命令を同時にフェッチする命令フェッチ部と、
    前記4つの固定長命令のうちオペコードフィールドにより指定された特定の命令を逐次実行する逐次実行部と、
    前記4つの固定長命令のうちオペコードフィールドにより指定された特定の命令を特定フィールドに示された情報に基づく並列度により実行する並列実行部と、
    前記4つの固定長命令のうち前記並列実行部による実行対象となる第2番目と第4番目の固定長命令における共通する特定のビット位置に設けられる前記特定フィールドをプリデコードする命令プリデコーダと、
    前記プリデコード結果に従って前記プログラムカウンタの増分値が前記固定長命令の1命令分、2命令分または4命令分の何れかになるように制御するプログラムカウンタ管理部と
    を具備するプロセッサ。
JP2010203910A 2010-09-13 2010-09-13 プロセッサ Expired - Fee Related JP5565228B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010203910A JP5565228B2 (ja) 2010-09-13 2010-09-13 プロセッサ
EP11175053.5A EP2428889B1 (en) 2010-09-13 2011-07-22 RISC processor with a VLIW coprocessor
US13/137,134 US9841978B2 (en) 2010-09-13 2011-07-22 Processor with a program counter increment based on decoding of predecode bits
CN201110265352.6A CN102402418B (zh) 2010-09-13 2011-09-08 处理器
US15/612,247 US11200059B2 (en) 2010-09-13 2017-06-02 Processor with a program counter increment based on decoding of predecode bits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010203910A JP5565228B2 (ja) 2010-09-13 2010-09-13 プロセッサ

Publications (2)

Publication Number Publication Date
JP2012059163A true JP2012059163A (ja) 2012-03-22
JP5565228B2 JP5565228B2 (ja) 2014-08-06

Family

ID=44681028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010203910A Expired - Fee Related JP5565228B2 (ja) 2010-09-13 2010-09-13 プロセッサ

Country Status (4)

Country Link
US (2) US9841978B2 (ja)
EP (1) EP2428889B1 (ja)
JP (1) JP5565228B2 (ja)
CN (1) CN102402418B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910124B1 (en) * 2011-10-31 2014-12-09 Google Inc. Low-overhead method and apparatus for collecting function call trace data
CN102799418B (zh) * 2012-08-07 2014-10-08 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
WO2015035306A1 (en) * 2013-09-06 2015-03-12 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with token-based very long instruction word architecture
WO2015035330A1 (en) * 2013-09-06 2015-03-12 Futurewei Technologies, Inc. Method and apparatus for asynchronous processor removal of meta-stability
GB2536658B (en) * 2015-03-24 2017-03-22 Imagination Tech Ltd Controlling data flow between processors in a processing system
US11042462B2 (en) * 2019-09-04 2021-06-22 International Business Machines Corporation Filtering based on instruction execution characteristics for assessing program performance
US20230315473A1 (en) * 2022-04-02 2023-10-05 Intel Corporation Variable-length instruction steering to instruction decode clusters

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03129433A (ja) * 1989-07-07 1991-06-03 Hitachi Ltd 並列処理装置および並列処理方法
JPH0520067A (ja) * 1991-07-12 1993-01-29 Mitsubishi Electric Corp 並列演算処理装置における分岐命令処理方式
JPH06161753A (ja) * 1992-08-12 1994-06-10 Advanced Micro Devicds Inc プロセッサ内で用いられるための命令デコーダ、命令発行構成およびマイクロプロセッサ
JPH07121371A (ja) * 1993-10-25 1995-05-12 Nkk Corp 複数命令同時取込み機構
JPH0926878A (ja) * 1995-07-12 1997-01-28 Mitsubishi Electric Corp データ処理装置
JPH09212358A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd データ処理装置及びマイクロプロセッサ
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
JP2001034471A (ja) * 1999-07-19 2001-02-09 Mitsubishi Electric Corp Vliw方式プロセッサ
JP2001297002A (ja) * 2000-04-14 2001-10-26 Hitachi Ltd データ処理装置
JP2003005958A (ja) * 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USH1970H1 (en) * 1971-07-19 2001-06-05 Texas Instruments Incorporated Variable function programmed system
JPS59135888A (ja) 1983-01-24 1984-08-04 Yakult Honsha Co Ltd スタフイロキナ−ゼ産生遺伝子を組み込んだ組み換え体dnaおよびその組み換え体dnaを含有する枯草菌ならびにスタフイロキナ−ゼの製造法
US5623621A (en) * 1990-11-02 1997-04-22 Analog Devices, Inc. Apparatus for generating target addresses within a circular buffer including a register for storing position and size of the circular buffer
JPH10161899A (ja) * 1996-11-27 1998-06-19 Advantest Corp シーケンス制御回路
US6292845B1 (en) * 1998-08-26 2001-09-18 Infineon Technologies North America Corp. Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JP3616556B2 (ja) * 1999-06-29 2005-02-02 株式会社東芝 拡張命令を処理する並列プロセッサ
JP4640880B2 (ja) 2000-07-14 2011-03-02 国立大学法人東京工業大学 マイクロプロセッサシステム
FR2812417A1 (fr) * 2000-07-27 2002-02-01 St Microelectronics Sa Processeur dsp a architecture parallele
JP4502532B2 (ja) * 2001-02-23 2010-07-14 株式会社ルネサステクノロジ データ処理装置
US6874081B2 (en) * 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
JP2009026136A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置
JP2010203910A (ja) 2009-03-03 2010-09-16 Stanley Electric Co Ltd 電流センサ及びその製造方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03129433A (ja) * 1989-07-07 1991-06-03 Hitachi Ltd 並列処理装置および並列処理方法
JPH0520067A (ja) * 1991-07-12 1993-01-29 Mitsubishi Electric Corp 並列演算処理装置における分岐命令処理方式
JPH06161753A (ja) * 1992-08-12 1994-06-10 Advanced Micro Devicds Inc プロセッサ内で用いられるための命令デコーダ、命令発行構成およびマイクロプロセッサ
JPH07121371A (ja) * 1993-10-25 1995-05-12 Nkk Corp 複数命令同時取込み機構
JPH0926878A (ja) * 1995-07-12 1997-01-28 Mitsubishi Electric Corp データ処理装置
JPH09212358A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd データ処理装置及びマイクロプロセッサ
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
JP2001034471A (ja) * 1999-07-19 2001-02-09 Mitsubishi Electric Corp Vliw方式プロセッサ
JP2001297002A (ja) * 2000-04-14 2001-10-26 Hitachi Ltd データ処理装置
JP2003005958A (ja) * 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6014010410; Atsushi Mizuno et al.: 'Design Methodology and System for a Configurable Media Embedded Processor Extensible to VLIW Archite' Proceedings of the 2002 IEEE International Conference on Computer Design : VLSI in Computers and Pro , 2002, Pages:2-7, IEEE *

Also Published As

Publication number Publication date
US20120066480A1 (en) 2012-03-15
CN102402418A (zh) 2012-04-04
EP2428889A1 (en) 2012-03-14
US11200059B2 (en) 2021-12-14
US9841978B2 (en) 2017-12-12
EP2428889B1 (en) 2014-04-30
US20170277540A1 (en) 2017-09-28
CN102402418B (zh) 2017-10-10
JP5565228B2 (ja) 2014-08-06

Similar Documents

Publication Publication Date Title
JP5565228B2 (ja) プロセッサ
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US7694109B2 (en) Data processing apparatus of high speed process using memory of low speed and low power consumption
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
JPH09311786A (ja) データ処理装置
KR20130016246A (ko) 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑
JPH11194939A (ja) データ処理装置
US6629234B1 (en) Speculative generation at address generation stage of previous instruction result stored in forward cache for use by succeeding address dependent instruction
JPH08137688A (ja) データ処理装置
JP2009508180A (ja) マイクロプロセッサにおける効率的なサブプログラムリターン
JP2008146544A (ja) 演算処理装置
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
US10437598B2 (en) Method and apparatus for selecting among a plurality of instruction sets to a microprocessor
US20020116599A1 (en) Data processing apparatus
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
JP2008299729A (ja) プロセッサ
JP3182591B2 (ja) マイクロプロセッサ
TWI238352B (en) Register move operations
US6260133B1 (en) Processor having operating instruction which uses operation units in different pipelines simultaneously
JPH063583B2 (ja) 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JPH04506878A (ja) データ処理装置
JP2002073329A (ja) プロセッサ
JPH11119997A (ja) Liw命令実行方法、スカラプロセッサ及びliwプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130719

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140430

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140602

R151 Written notification of patent or utility model registration

Ref document number: 5565228

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees