JP2011090592A - 情報処理装置とその命令デコーダ - Google Patents

情報処理装置とその命令デコーダ Download PDF

Info

Publication number
JP2011090592A
JP2011090592A JP2009245013A JP2009245013A JP2011090592A JP 2011090592 A JP2011090592 A JP 2011090592A JP 2009245013 A JP2009245013 A JP 2009245013A JP 2009245013 A JP2009245013 A JP 2009245013A JP 2011090592 A JP2011090592 A JP 2011090592A
Authority
JP
Japan
Prior art keywords
instruction
execution
unit
register
operand
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.)
Abandoned
Application number
JP2009245013A
Other languages
English (en)
Inventor
Satoshi Takashima
敏 高島
Hiroichi Hanaki
博一 花木
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 JP2009245013A priority Critical patent/JP2011090592A/ja
Priority to US12/805,907 priority patent/US9164763B2/en
Priority to CN2010105173032A priority patent/CN102053819A/zh
Publication of JP2011090592A publication Critical patent/JP2011090592A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/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/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
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Abstract

【課題】VLIW型プロセッサにおけるリピート命令に伴う過渡処理を動的に行う。
【解決手段】命令保持部121は、命令供給部110から供給されたVLIW命令を一旦保持する。命令解読部122は、命令保持部121に保持された4つの命令を解読(デコード)する。発行タイミング制御部123は、解読された命令を実行部130に発行する際、レイテンシ設定レジスタ126に設定されているレイテンシに相当するタイミングだけずらして発行する。オペランド変換部124は、各命令に含まれるオペランドアドレスを、レイテンシ設定レジスタ126に設定されたレイテンシに応じて変換する。デコード制御部129は、リピート回数設定レジスタ125に設定されたリピート回数に応じて命令保持部121に命令を保持し、レイテンシ設定レジスタ126に設定されたレイテンシに応じて各命令の発行タイミングを決定する。
【選択図】図2

Description

本発明は、情報処理装置に関し、特に複数の命令を1組の命令群として供給し、実行する情報処理装置に関する。
近年、マルチメディアが一般家庭に普及し、画像処理や音声処理を行うプロセッサ性能の向上に対する要求がますます高まっている。そこで、プロセッサの高速化のため、並列処理技術の利用が図られている。例えば、データレベルの並列処理を行うものとして、SIMD(Single Instruction stream Multiple Data stream)型命令を実行するプロセッサがある。また、命令レベルの並列処理を行うものとして、VLIW型プロセッサ(Very Long Instruction Word Processor)がある。さらに、時間方向の並列処理を行うために、パイプライン段数を増やしてプロセッサ動作クロック周波数を向上させる技術が利用されている。
これらの技術の中でVLIW型プロセッサは、1組の命令群(VLIW命令)の中に含まれる複数の命令を同時に実行することによって並列度を高め、プロセッサの性能向上を図っている。例えば、1組の命令群において4つの処理を指定して並列に実行することにより、高速に演算処理を行うことができる。また、このVLIW型プロセッサにおいては、複数のデータに対して同一の処理を行う場合には、処理の繰返しを指示する命令を利用することにより、命令コードの繰返しを省いてコード効率を向上させることができる。例えば、リピートブロック内の処理を繰り返し実行するリピート命令が知られている(例えば、特許文献1参照。)。
特開2002−229779号公報(図15)
上述の従来技術によるリピート命令を利用すれば、VLIW型プロセッサにおいて複数のデータに対する処理を書き下す必要がなくなり、コード効率を向上させることができる。しかしながら、複数の命令間に依存関係がある場合には、各命令の実行タイミングをずらす必要が生じ、リピート命令による定常的な繰返し処理の前後に過渡的な処理が必要になってしまう。この過渡的な処理をコンパイル時に静的に行おうとすると、無操作(NOP)命令を繰り返し挿入することが多くなり、リピート命令により向上させたコード効率に悪影響を与える結果になってしまう。
本発明はこのような状況に鑑みてなされたものであり、VLIW型プロセッサにおけるリピート命令に伴う過渡処理を動的に行うことを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、複数の命令を1組の命令群として供給する命令供給部と、上記複数の命令に対応する複数の実行処理を並列に繰り返し実行する実行部と、所定のレイテンシに従って遅延したタイミングにより上記複数の実行処理が実行されるよう上記実行部に対する命令の発行タイミングを制御する発行タイミング制御部と、上記実行部における実行の繰り返しの度に上記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部とを具備する情報処理装置である。これにより、複数の命令のオペランドレジスタアドレスを変換しながら、各命令をレイテンシに従って遅延したタイミングにより繰り返し実行するという作用をもたらす。
また、この第1の側面において、上記オペランド変換部は、上記オペランドレジスタアドレスを変換する際には上記レイテンシに従って上記オペランドレジスタアドレスを循環させるようにしてもよい。これにより、複数の命令を繰り返し実行させる際、オペランドレジスタアドレスをレイテンシに従って循環させるという作用をもたらす。この場合、上記オペランド変換部は、上記オペランドレジスタアドレスを変換する際には上記増分値に従って上記オペランドレジスタアドレスを加算または減算した後に上記レイテンシによる剰余を算出することにより上記循環を行ってもよい。
また、この第1の側面において、上記オペランド変換部は、ワード単位に付与された上記オペランドレジスタアドレスに対してハーフワードを識別する情報を付してハーフワード単位で上記オペランドレジスタアドレスを変換するようにしてもよい。これにより、複数の命令を繰り返し実行させる際、オペランドレジスタアドレスをハーフワード単位で変換させるという作用をもたらす。
また、この第1の側面において、上記命令群の各々は繰り返し実行の要否を指示する繰り返し情報を含み、上記実行部は、上記繰り返し情報が繰り返し実行を指示している場合には上記命令群に含まれる上記複数の命令に対応する上記複数の実行処理を繰り返し実行するようにしてもよい。これにより、リピート命令やリピートフラグなどの繰り返し情報に従って複数の実行処理を繰り返し実行させるという作用をもたらす。
また、この第1の側面において、上記オペランド変換部により変換された上記オペランドレジスタアドレスによりアクセスされるレジスタと、上記レジスタから読み出されたソースデータを整形して上記実行部に供給するソースデータ整形部と、上記実行部の実行結果データを整形して上記レジスタへ書込みデータとして供給する実行結果データ整形部とをさらに具備してもよい。これにより、データ整形を行う命令を別途実行する必要性を回避し、プログラムコードの容量を低減させるという作用をもたらす。この場合において、上記ソースデータ整形部は、32ビットデータの上位16ビットまたは下位16ビットの何れか一方を上記実行部へ供給し、上記実行部は、上記上位または下位の16ビットをビット拡張した上で実行処理を行って32ビットの上記実行結果データを出力し、上記実行結果データ整形部は、上記実行部による上記実行結果データのうち下位16ビットを上記書込みデータの上位16ビットまたは下位16ビットの何れか一方として供給するようにしてもよい。
また、本発明の第2の側面は、1組の命令群として供給された複数の命令に対応する複数の実行処理が所定のレイテンシに従って遅延したタイミングにより実行されるよう命令の発行タイミングを制御する発行タイミング制御部と、上記複数の実行処理の各々が繰り返される度に上記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部とを具備する命令デコーダである。これにより、複数の命令のオペランドレジスタアドレスを変換しながら、各命令をレイテンシに従って遅延したタイミングにより繰り返し実行させるという作用をもたらす。
本発明によれば、VLIW型プロセッサにおけるリピート命令に伴う過渡処理を動的に行うことができるという優れた効果を奏し得る。
本発明の第1の実施の形態における情報処理装置100の一構成例を示す図である。 本発明の実施の形態における命令デコード部120の一構成例を示す図である。 本発明の第1の実施の形態におけるオペランド変換部124の一構成例を示す図である。 本発明の実施の形態におけるレジスタ群140のレジスタ構成例を示す図である。 本発明の実施の形態におけるVLIW命令の実行イメージの例を示す図である。 従来のVLIW命令によるコーディング例を示す図である。 本発明の実施の形態におけるVLIW命令によるコーディング例を示す図である。 本発明の実施の形態におけるレジスタ循環器440によるレジスタオフセット値の循環の例を示す図である。 本発明の第2の実施の形態における情報処理装置100の一構成例を示す図である。 本発明の第2の実施の形態におけるオペランド変換部124の一構成例を示す図である。 本発明の第2の実施の形態におけるハーフワードアクセスの態様を示す図である。 本発明の第2の実施の形態におけるソースデータ整形部150の一構成例を示す図である。 本発明の第2の実施の形態におけるソースデータ選択部151の動作の真理値表である。 本発明の第2の実施の形態における実行部130の一構成例を示す図である。 本発明の第2の実施の形態における実行結果データ整形部160の一構成例を示す図である。 本発明の第2の実施の形態における実行結果データ選択部161の動作の真理値表である。 本発明の第2の実施の形態の適用例である対称フィルタ演算におけるレジスタと配列との関係の一例を示す図である。 本発明の第2の実施の形態の適用例であるフィルタ演算のプログラムコードの例を示す図である。 本発明の実施の形態のソースデータ整形部150の第1の変形例を示す図である。 本発明の実施の形態のソースデータ整形部150の第2の変形例を示す図である。
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(ワード単位でオペランドレジスタアドレスを変換する例)
2.第2の実施の形態(ハーフワード単位でオペランドレジスタアドレスを変換する例)
3.変形例(ソースデータの整形を任意のビット位置にて行う例)
<1.第1の実施の形態>
[情報処理装置の構成例]
図1は、本発明の第1の実施の形態における情報処理装置100の一構成例を示す図である。この情報処理装置100は、複数の命令を1組の命令群として同時にフェッチして同時に実行するVLIW型プロセッサである。この実施の形態では、4つの命令を同時に実行できるものとする。この情報処理装置100は、メモリ200と接続し、命令供給部110と、命令デコード部120と、実行部130と、レジスタ群140とを備えている。
命令供給部110は、メモリ200に格納されている複数の命令を1組の命令群として同時にフェッチして命令デコード部120に供給するものである。情報処理装置100は4つの命令を同時に実行するVLIW型プロセッサであるため、この命令供給部110も4つの命令を同時にフェッチする。
命令デコード部120は、命令供給部110から供給された命令をデコードして、このデコード結果に従って実行部130に各命令の処理を実行させるものである。情報処理装置100は4つの命令を同時に実行するVLIW型プロセッサであるため、命令デコード部120も4つの命令を同時にデコードする。この命令デコード部120の内部構成については後述する。
実行部130は、命令デコード部120によるデコード結果に従って各命令の処理を並列に実行するものである。この実施の形態では、同時に動作する第1乃至4のユニットが存在するものとして、第1および第4のユニットがロードストア命令を、第2および第3のユニットが算術演算命令をそれぞれ同時に実行できるものとする。
レジスタ群140は、実行部130による命令実行の際に必要なレジスタ群である。対象となるレジスタは命令デコード部120により指定され、読み出されたデータが実行部130に供給され、また、実行部130からデータが書き込まれる。このレジスタ群140は、情報処理装置100の命令セットにより定義されている。このレジスタ群140の内訳については後述する。なお、レジスタ群140は、特許請求の範囲に記載のレジスタの一例である。
[命令デコード部の構成例]
図2は、本発明の実施の形態における命令デコード部120の一構成例を示す図である。この命令デコード部120は、命令保持部121と、命令解読部122と、発行タイミング制御部123と、オペランド変換部124と、リピート回数設定レジスタ125と、レイテンシ設定レジスタ126と、デコード制御部129とを備えている。
命令保持部121は、命令供給部110から供給されたVLIW命令を一旦保持するものである。この実施の形態では、1つのVLIW命令には上述の第1乃至第4のユニットにそれぞれ対応する4つの命令が含まれているものとする。
命令解読部122は、命令保持部121に保持された4つの命令を解読(デコード)するものである。これにより、情報処理装置100内部の制御に必要な制御信号が生成される。すなわち、アクセス対象となるレジスタのアドレスや、演算の種別などが制御信号として得られる。
発行タイミング制御部123は、解読された命令を実行部130に発行するタイミングを制御するものである。解読された4つの命令は原則として同時に発行されるが、レイテンシ設定レジスタ126に後述するレイテンシが設定されている場合には、各命令はレイテンシに相当するタイミングだけずらして発行される。
オペランド変換部124は、各命令に含まれるオペランドアドレスを所定の規則に従って変換するものである。このオペランド変換部124の内部構成については後述する。
リピート回数設定レジスタ125は、VLIW命令を繰り返す(リピートする)回数を設定するためのレジスタである。このリピート回数設定レジスタ125には、ソフトウェア命令などにより予めリピート回数が設定されているものとする。
レイテンシ設定レジスタ126は、VLIW命令に含まれる各命令の発行タイミングをずらすレイテンシを設定するためのレジスタである。このレイテンシ設定レジスタ126には、ソフトウェア命令などにより予めレイテンシが設定されているものとする。なお、このレイテンシ設定レジスタ126は、対象となる命令単位で異なる値を設定するようにしてもよい。
デコード制御部129は、命令デコード部120全体を制御するものである。例えば、デコード制御部129は、リピート回数設定レジスタ125に設定されたリピート回数に応じて命令保持部121に命令を保持し、レイテンシ設定レジスタ126に設定されたレイテンシに応じて各命令の発行タイミングを決定する。
[オペランド変換部の構成例]
図3は、本発明の第1の実施の形態におけるオペランド変換部124の一構成例を示す図である。このオペランド変換部124は、ワード単位でオペランドレジスタアドレスを変換するものであり、オフセット値レジスタ410と、オフセット増分レジスタ420と、加算器430および460と、レジスタ循環器440とを備えている。
オフセット値レジスタ410は、発行タイミング制御部123から発行された各命令のオペランドレジスタに対するオフセット値を保持するレジスタである。このオフセット値レジスタ410の値はレジスタ循環器440により更新され、加算器430および460により参照される。
オフセット増分レジスタ420は、VLIW命令の繰り返し(リピート)の際にオフセット値レジスタ410に加算する増分値を保持するレジスタである。このオフセット増分レジスタ420に保持される増分値は負の値を採りうる。このオフセット増分レジスタ420の値は、ソフトウェア命令などにより予め設定され、加算器430により参照される。
加算器430は、オフセット値レジスタ410の値とオフセット増分レジスタ420の値とを加算するものである。オフセット増分レジスタ420は、負の値を採りうるため、その場合には減算が行われる。この加算器430による加算結果は、レジスタ循環器440によるオフセット値レジスタ410の更新に用いられる。
レジスタ循環器440は、加算器430による加算結果に基づいて、オフセット値レジスタ410に保持されるオペランドレジスタのオフセット値を更新するものである。更新の際、レジスタ循環器440は、レイテンシ設定レジスタ126に設定されたレイテンシに相当するタイミング毎に、オフセット値レジスタ410の値が循環するように制御する。具体的には、このレジスタ循環器440は、モジュロ(剰余)演算器により実現することができる。なお、このレジスタ循環器440による循環の要否は、命令デコード部120において設定できるようになっている。
加算器460は、発行タイミング制御部123から発行された各命令のオペランドレジスタアドレスに対して、オフセット値レジスタ410に保持されたオフセット値を加算するものである。この加算器460の出力が、オペランドレジスタアドレスとしてレジスタ群140に供給される。したがって、レジスタ群140におけるアクセス対象となるのは、オフセット値が加算されたオペランドレジスタアドレスとなる。なお、オフセット値レジスタの更新は、各VLIW命令が発行された後のポスト処理として行われる。
このオペランド変換部124において、オフセット値レジスタ410およびオフセット増分レジスタ420は、各命令の各オペランドに対して設けられる。これにより、各オペランドについて自由度の高い更新を行うことができる。例えば、2つのソースレジスタと1つのデスティネーションレジスタを指定可能な命令セットにおいては、オフセット値レジスタ410およびオフセット増分レジスタ420を3組設けることになる。
[レジスタ群のレジスタ構成]
図4は、本発明の実施の形態におけるレジスタ群140のレジスタ構成例を示す図である。このレジスタ群140は、汎用レジスタ、係数レジスタおよびアキュムレータを含むことを想定する。
図4(a)は、汎用レジスタ141のレジスタ構成例である。この汎用レジスタ141は、実行部130による処理の際に一般用途に用いられるレジスタであり、実行部130のためのソースデータまたはメモリアクセスのためのアドレスおよびストアデータを保持するために用いられる。この例では、32ビット幅の汎用レジスタ141が24個(R0〜R23)設けられている。
図4(b)は、係数レジスタ142のレジスタ構成例である。この係数レジスタ142は、フィルタ演算等における係数(coefficient)を保持するために設けられた特殊なレジスタである。この例では、32ビット幅の係数レジスタ142が12個(KR0〜KR11)設けられている。
図4(c)は、アキュムレータ143のレジスタ構成例である。このアキュムレータ143は、実行部130における算術演算処理のためのレジスタである。この例では、32ビット幅のレジスタが5個(A0、ML0、MH0、ML1、MH1)設けられている。アキュムレータA0は算術演算処理のうち加算および減算のために用いられるレジスタである。アキュムレータA0以外の4つのレジスタは算術演算処理のうち乗算のために用いられるレジスタである。アキュムレータML0およびMH0は、下位32ビットおよび上位32ビットを合わせた64ビットのレジスタM0として用いられる。アキュムレータML1およびMH1は、下位32ビットおよび上位32ビットを合わせた64ビットのレジスタM1として用いられる。
なお、ここではレジスタを表す英文字を大文字により表記しており、後述のアセンブル表記においては小文字により表記しているが、両者は同一のレジスタを示している。
[VLIW命令の実行イメージ]
図5は、本発明の実施の形態におけるVLIW命令の実行イメージの例を示す図である。1つのVLIW命令が4つの命令を含んでいると想定した場合、これら4つの命令は同時に実行可能である。ただし、実際のプログラムでは、ある命令によって生成されたデータを他の命令で参照する等のように、データの依存関係が発生する場合があり、その場合にはデータを待ち合わせるために後続の命令の実行を遅らせる必要が生じる。
この図の例では、VLIW命令を256回繰り返し実行することを想定しているが、データ依存関係により各命令の発行を2サイクルずつ遅延させている。すなわち、第1サイクルにおいて発行された命令Aの結果は第3サイクルにおいて利用可能であるため、命令Bは第3サイクルに発行される。第3サイクルにおいて発行された命令Bの結果は第5サイクルにおいて利用可能であるため、命令Cは第5サイクルに発行される。第5サイクルにおいて発行された命令Cの結果は第7サイクルにおいて利用可能であるため、命令Dは第7サイクルに発行される。
そのため、この場合、本発明の実施の形態では、リピート回数設定レジスタ125には「256」が設定され、レイテンシ設定レジスタ126には「2」が設定される必要がある。このとき、第7サイクルから第256サイクルまでにおいては4つの命令が同時に実行されているが、それ以外のサイクルでは何れかの命令がNOP(No-OPeration:無操作)命令となっている。すなわち、第1サイクルから第6サイクルまでが開始時の移行期間であり、第257サイクルから第262サイクルまでが終了時の移行期間である。従来の手法では、これらの移行期間は明示的にコーディングされる必要があった。
図6は、従来のVLIW命令によるコーディング例を示す図である。図6(a)は、対象アルゴリズムをC言語で記載したものである。すなわち、変数iを「1」ずつ加算しながら「0」から「255」まで増加させて、乗算(a[i]×b[i])を実行し、乗算結果をcビット右シフト(m[i]>>c)するものである。
従来手法によれば、図6(b)のように、データ依存関係を考慮して開始時の移行期間(第1乃至6行)を明示的にコーディングした上で、繰り返し部(第7乃至9行)をコーディングする必要がある。そして、さらに終了時の移行期間(第10乃至15行)を明示的にコーディングする必要がある。
なお、この例において、ld命令はロード命令であり、$mem()の指すアドレスから64ビットのデータを2つの連結された汎用レジスタ(R0とR1またはR2とR3)に32ビットずつロードする。ここで、「r0:r1」は汎用レジスタR0とR1の連結を表す。mul命令は乗算命令であり、32ビット幅の2つの汎用レジスタの値を乗算して、64ビット幅のアキュムレータ(M0またはM1)に格納する。sra命令は算術右シフト命令であり、64ビット幅のアキュムレータの値を汎用レジスタr23の示す回数右シフトして、汎用レジスタ(R16またはR17)に格納する。sw命令はストア命令であり、$mem()の指すアドレスに汎用レジスタ(R16またはR17)の値をストアする。nop命令は無操作命令であり、何も処理を行わない。loop命令はループを形成するための分岐命令であり、ラベルLABELの付与された命令との間を所定回数繰り返し実行する。
図7は、本発明の実施の形態におけるVLIW命令によるコーディング例を示す図である。対象アルゴリズムは図6と同様である。図7(a)および(b)は、第1の例であり、繰り返しを指定するリピート命令を前置するタイプである。rpt命令は、VLIW命令の繰り返し実行を指定するリピート命令であり、次サイクルのVLIW命令(命令A乃至D)をリピート回数設定レジスタ125(rptr)に設定された回数実行する。すなわち、次のVLIW命令に含まれるld命令、mul命令、sra命令およびsw命令が繰り返し実行される。
このとき、リピート回数設定レジスタ125に「256」を設定し、レイテンシ設定レジスタ126に「2」を設定しておくことにより、図5と同様のタイミングにより各命令の実行が行われる。
また、ここでは、mul命令のソースオペランドのオフセット値レジスタ410の初期値として「0」、オフセット増分レジスタ420に「2」が設定される。これにより、レジスタ循環器440によってmul命令のソースオペランドのオフセット値レジスタ410の値は交互に「0」と「2」を繰り返す。したがって、mul命令のソースオペランドは、R0およびR1とR2およびR3とが交互に生成されることになる。また、mul命令のデスティネーションオペランドのオフセット値レジスタ410の初期値として「0」、オフセット増分レジスタ420に「1」が設定される。これにより、レジスタ循環器440によってmul命令のデスティネーションオペランドのオフセット値レジスタ410の値は交互に「0」と「1」を繰り返す。したがって、mul命令のデスティネーションオペランドは、M0とM1とが交互に生成されることになる。なお、レジスタ循環器440によるオフセット値レジスタ410の更新については後述する。
上述の第1の例では、リピート命令を単独の命令として実現しているため、4つの命令フィールドのうち3つがNOP命令となって無駄が生じる結果となっている。そこで、以下の第2の例では、VLIW命令内にリピートフラグを1ビット設けて、このリピートフラグの状態に応じてそのVLIW命令の繰り返し実行を制御する。
図7(c)および(d)は、第2の例であり、VLIW命令内のリピートフラグがオン状態を示していれば、そのVLIW命令を繰り返し実行する。逆にリピートフラグがオフ状態であれば、そのVLIW命令は1回しか実行されない。
なお、ここで説明したリピート命令およびリピートフラグは、特許請求の範囲に記載の繰り返し情報の一例である。
図8は、本発明の実施の形態におけるレジスタ循環器440によるレジスタオフセット値の循環の例を示す図である。VLIW命令を繰り返し実行する際には、レイテンシに相当するサイクル毎に異なるレジスタを用いることができれば、互いに独立して実行することが可能となる。例えば、図6(b)の例では、汎用レジスタR0およびR1とR2およびR3とを使用することにより、レイテンシ「2」の2つのロード命令を連続して発行することが可能となっている。もし、汎用レジスタR0およびR1のみしか使用できないとすると、ロード命令は2サイクル毎にしか発行できなくなってしまい、処理効率が低下する。そこで、レジスタ循環器440では、オフセット値レジスタ410の値が循環するように更新することにより、レジスタのリネーミングを実現する。
図8(a)は、オフセット増分レジスタ420の値が「1」、レイテンシ設定レジスタ126に設定されたレイテンシが「1」から「3」までの場合の、汎用レジスタのレジスタアドレスの循環例を示すものである。レイテンシが「1」の場合、レジスタオフセット値は「0」のままである。レイテンシが「2」の場合、レジスタオフセット値は「0」と「1」を交互に繰り返す。レイテンシが「3」の場合、レジスタオフセット値は「0」、「1」、「2」を循環する。したがって、VLIW命令における汎用レジスタR0は、レイテンシが「1」の場合はR0のままで、レイテンシが「2」の場合はR0とR1を交互に繰り返し、レイテンシが「3」の場合はR0、R1、R2を循環するように変化する。
図8(b)は、オフセット増分レジスタ420の値が「1」、レイテンシ設定レジスタ126に設定されたレイテンシが「1」から「2」までの場合の、アキュムレータのレジスタアドレスの循環例を示すものである。レイテンシが「1」の場合、レジスタオフセット値は「0」のままである。レイテンシが「2」の場合、レジスタオフセット値は「0」と「1」を交互に繰り返す。したがって、VLIW命令におけるアキュムレータM0は、レイテンシが「1」の場合はM0のままで、レイテンシが「2」の場合はM0とM1を交互に繰り返す。
このように、本発明の第1の実施の形態によれば、レイテンシ設定レジスタ126に設定されたレイテンシに応じてタイミングをずらしながらVLIW命令が動的に繰り返されるため、移行期間を明示的にコーディングすることを回避することができる。また、レイテンシ設定レジスタ126に設定されたレイテンシに応じてオフセット値レジスタ410の値が循環するように更新することにより、レジスタアドレスを変更(リネーミング)して、処理効率を向上させることができる。
<2.第2の実施の形態>
[情報処理装置の構成例]
図9は、本発明の第2の実施の形態における情報処理装置100の一構成例を示す図である。この第2の実施の形態の情報処理装置100は、ハーフワードを扱うために、実行部130に供給されるソースデータや実行部130から出力される実行結果データを整形する機能を備えるものである。そのため、この第2の実施の形態の情報処理装置100は、上述の第1の実施の形態と比べて、ソースデータ整形部150と、実行結果データ整形部160とをさらに備える点が異なっている。ソースデータ整形部150は、レジスタ群140から読み出したソースデータを、デコード結果に応じて整形するものである。実行結果データ整形部160は、実行部130から出力された実行結果データを、デコード結果に応じて整形するものである。
命令供給部110およびレジスタ群140については、第1の実施の形態と同様であるため、ここでの説明は省略する。また、命令デコード部120の全体的な構成は第1の実施の形態と同様であるが、オペランド変換部124の内部構成が異なるため、これについては後述する。また、実行部130については一部変更点があるため、これについても後述する。
[オペランド変換部の構成例]
図10は、本発明の第2の実施の形態におけるオペランド変換部124の一構成例を示す図である。この第2の実施の形態のオペランド変換部124は、ハーフワード単位でオペランドレジスタアドレスを変換するものであり、シフタ450を備える点において、図3により説明した第1の実施の形態のものと異なっており、それ以外は同様の構成を備えている。
シフタ450は、発行タイミング制御部123から供給された、オペランドのレジスタアドレスを1ビット左シフトするものである。これにより、シフタ450から出力されるレジスタアドレスはハーフワードを単位とした場合の下位1ビットを除いたものになる。下位1ビットはオフセット値レジスタ410から供給される。
図11は、本発明の第2の実施の形態におけるハーフワードアクセスの態様を示す図である。なお、ここでは汎用レジスタ141に適用した場合を例示しているが、係数レジスタ142やアキュムレータ143についても同様である。
通常のワード指定では、1ワード32ビットを単位として、命令のオペランドによって指定がなされる。これに対し、ハーフワード16ビットを指定するためには、ワード指定に加えて、ワード内指定としてMSB側またはLSB側の何れであるかを指定する必要がある。このワード内指定は、オフセット値レジスタ410の最下位ビットにより指定することができる。
[ソースデータ整形部の構成例]
図12は、本発明の第2の実施の形態におけるソースデータ整形部150の一構成例を示す図である。このソースデータ整形部150は、ソースデータ選択部151を備えている。
レジスタ群140の何れかのレジスタから供給された32ビットの入力データ301は、LSB側およびMSB側の16ビットずつのハーフワードデータとして、ソースデータ選択部151に入力される。ソースデータ選択部151は、命令デコード部120におけるデコード結果に従って、LSB側またはMSB側の16ビットデータの何れか一方を選択する。このソースデータ選択部151の出力は、出力データ309のLSB側の16ビットデータとなる。また、出力データ309のMSB側の16ビットデータは、入力データ301のMSB側の16ビットデータと同じである。すなわち、出力データ309としては、入力データ301と完全に一致する場合と、入力データ301のMSB側の16ビットデータがLSB側にも出力される場合とが考えられる。
なお、この図においては、1つのデータについてのみ図示しているが、オペランドの数に合わせて同じ回路が複数(以下の実行部130のためには、2つ)用意される。
図13は、本発明の第2の実施の形態におけるソースデータ選択部151の動作の真理値表である。命令デコード部120におけるデコードの結果、ハーフワードアクセスのためのデータ入れ換えが不要であると判断された場合には、ソースデータ選択部151は入力データ301のLSB側の16ビットデータを選択する。一方、ハーフワードアクセスのためのデータ入れ換えが必要であると判断された場合には、ソースデータ選択部151は入力データ301のMSB側の16ビットデータを選択する。これにより、出力データ309のLSB側には、デコード結果に応じて入力データ301のLSB側またはMSB側の16ビットデータが出力される。
[実行部の構成例]
図14は、本発明の第2の実施の形態における実行部130の一構成例を示す図である。この実行部130は、ソースデータ整形部150から供給された2つの入力データ310および320に対してビット拡張した上で演算を施し、出力データ330を出力するものである。この実行部130は、2つの入力データのためのビット拡張部131および132と、演算部133とを備える。
ビット拡張部131は、入力データ310のLSB側の16ビットデータを32ビット精度に、デコード結果に応じて符号拡張またはゼロ拡張するものである。ビット拡張部132は、入力データ320のLSB側の16ビットデータを32ビット精度に、デコード結果に応じて符号拡張またはゼロ拡張するものである。これらビット拡張部131および132の出力は、それぞれ32ビットデータとして演算部133に供給される。
演算部133は、命令デコード部120におけるデコード結果に従って、ビット拡張部131および132から供給された32ビットデータに対して演算を行うものである。この演算部133による演算結果は、32ビット精度の出力データ330として実行結果データ整形部160に供給される。
[実行結果データ整形部の構成例]
図15は、本発明の第2の実施の形態における実行結果データ整形部160の一構成例を示す図である。この実行結果データ整形部160は、実行結果データ選択部161を備えている。
実行部130から供給された32ビットの入力データ341は、LSB側およびMSB側の16ビットずつのハーフワードデータとして、実行結果データ選択部161に入力される。実行結果データ選択部161は、命令デコード部120におけるデコード結果に従って、LSB側またはMSB側の16ビットデータの何れか一方を選択する。この実行結果データ選択部161の出力は、出力データ349のMSB側の16ビットデータとなる。また、出力データ349のLSB側の16ビットデータは、入力データ341のLSB側の16ビットデータと同じである。すなわち、出力データ349としては、入力データ341と完全に一致する場合と、入力データ341のLSB側の16ビットデータがMSB側にも出力される場合とが考えられる。
図16は、本発明の第2の実施の形態における実行結果データ選択部161の動作の真理値表である。命令デコード部120におけるデコードの結果、ハーフワードアクセスのためのデータ入れ換えが不要であると判断された場合には、実行結果データ選択部161は入力データ341のMSB側の16ビットデータを選択する。一方、ハーフワードアクセスのためのデータ入れ換えが必要であると判断された場合には、実行結果データ選択部161は入力データ341のLSB側の16ビットデータを選択する。これにより、出力データ349のMSB側には、デコード結果に応じて入力データ341のLSB側またはMSB側の16ビットデータが出力される。
このようにして、本発明の第2の実施の形態では、ハーフワード16ビットのデータを符号拡張またはゼロ拡張して32ビットデータとして演算して、ハーフワードに戻した上でレジスタに格納することができる。
[対称フィルタ演算の適用例]
図17は、本発明の第2の実施の形態の適用例である対称フィルタ演算におけるレジスタと配列との関係の一例を示す図である。図17(a)は、ここで対象とする対称フィルタ演算の式である。配列Lはサンプリングデータであり、配列Coefはフィルタ係数である。総和演算の変数nが0から8までの値となることから、配列LはL[0]からL[16]の17個、配列CoefはCoef[0]からCoef[8]の9個の要素をそれぞれ有することになる。総和演算の後、即値NORMの示す回数分の右シフトが行われ、32ビット精度のフィルタ演算結果Resultに代入される。即値NORMは、正規化数であり、実際には「5」または「6」が用いられる。
図17(b)に示すように、配列Lは汎用レジスタ141に割り当てられ、配列Coefは係数レジスタ142に割り当てられる。各データは16ビット精度のハーフワードとして割り当てられる。これにより、同図(a)の式に必要な配列の全てを汎用レジスタ141および係数レジスタ142に割り当てることができ、プログラムコードの効率を向上させることができる。
図18は、本発明の第2の実施の形態の適用例であるフィルタ演算のプログラムコードの例を示す図である。図18(a)は、本発明の第2の実施の形態において、2命令同時実行を想定したVLIW型プロセッサによるプログラムコードの例である。
第1ステップには、rpt命令と、nop命令が記述されている。rpt命令は次ステップの繰り返し回数を指示するリピート命令である。このrpt命令により、第2ステップの2つの命令が9回繰り返される。このとき、レイテンシ設定レジスタ126に「1」を設定しておくことにより、第2ステップの右側の命令は1サイクル遅れて開始される。なお、nop命令は無操作命令であり、何も動作は行われない。
第2ステップでは、addh命令と、madd命令が記述されている。addh命令は、2つの汎用レジスタのハーフワードを32ビットに符号拡張した上で入力オペランドとして加算を行い、32ビット精度のアキュムレータA0に格納するハーフワード加算命令である。madd命令は、32ビット精度のアキュムレータA0の値に16ビット精度の係数レジスタの値を乗算し、その乗算結果を64ビット精度のアキュムレータM0に加算する積和命令である。
第3ステップでは、sra命令と、nop命令が記述されている。sra命令は64ビット精度のアキュムレータM0の値を即値NORMの示す回数だけ右シフトして、その結果を32ビット精度の汎用レジスタR9に格納する右シフト命令である。
汎用レジスタおよび係数レジスタの各アドレスは、命令コードにおけるオペランド指示およびオフセット値レジスタ410により決定される。オフセット値レジスタ410は、オペランド毎に設けられ、それぞれ対応するオフセット増分レジスタ420に応じて更新される。この例では、オフセット増分レジスタ420の値は、addh命令の2つの入力オペランドのうち、一方に対しては「+1」(ハーフワード増加)、他方に対しては「−1」(ハーフワード減少)とする。また、madd命令の入力オペランドである係数レジスタに対する設定値は「+1」(ハーフワード増加)とする。なお、ここでは、32ビット単位の増加を「+2」、32ビット単位の減少を「−2」としている。また、オフセット値レジスタ410の初期値は、addh命令の2つの入力オペランドに対してはともに「8」、出力オペランドに対しては「0」、madd命令の入力オペランドである係数レジスタに対しては「0」が設定される。
図18(b)は、図18(a)のプログラムコードを実行した際のタイミングを示す図である。すなわち、まず、第1サイクルでは、L[8](R4(LSB))とL[8](R4(LSB))の加算が行われる。第2サイクルでは、L[9](R4(MSB))+L[7](R3(LSB))の加算が行われるとともに、第1サイクルの加算結果にCoef[0](KR0(LSB))が乗算される。以下同様に処理が行われ、第9サイクルでは、L[16](R8(LSB))+L[0](R0(LSB))の加算が行われるとともに、第8サイクルの加算結果にCoef[7](KR3(MSB))が乗算される。そして、第10サイクルでは、第9サイクルの加算結果にCoef[8](KR4(LSB))が乗算される。最後に、第11サイクルでは、第10サイクルの積和結果に対して即値NORMの示す回数分の右シフトが行われ、その結果が汎用レジスタR9に格納される。
このように、本発明の第2の実施の形態によれば、ハーフワード単位でレジスタアドレスを変更しながらVLIW命令を動的に繰り返すことができ、レジスタを有効利用することができるとともに、プログラムコードを削減することができる。
<3.変形例>
上述の実施の形態では、ワード単位またはハーフワード単位でオペランドのレジスタアドレスを変換する例について説明したが、必要なデータを切り出す位置は以下のようにレジスタにおける任意のビット位置であっても構わない。
[第1の変形例]
図19は、本発明の実施の形態のソースデータ整形部150の第1の変形例を示す図である。このソースデータ整形部150の第1の変形例では、レジスタ群140から読み出された32ビットの入力データ301の第xビット目からnビット分を、抽出データ302としてデータ抽出部152によって抽出している。このnビットの抽出データ302は、ビット拡張部153によって符号拡張またはゼロ拡張され、32ビットの出力データ309となる。この出力データ309は、実行部130に供給される。
この本発明の実施の形態の第1の変形例によれば、入力データを参照する命令においてデータの抽出および拡張を実行するため、独立したデータ抽出命令やデータ拡張命令を別途実行する必要がなくなり、プログラムコードの容量を低減することができる。
[第2の変形例]
図20は、本発明の実施の形態のソースデータ整形部150の第2の変形例を示す図である。このソースデータ整形部150の第2の変形例では、レジスタ群140から読み出された32ビットの入力データ301から2つの抽出データをデータ抽出部152によって抽出している。すなわち、入力データ301の第xビット目からnビット分を抽出データ303として抽出するとともに、入力データ301の第yビット目からnビット分を抽出データ304として抽出している。
そして、nビットの抽出データ303は、ビット拡張部153によって16ビットに符号拡張またはゼロ拡張され、出力データ309のLSB側に設定される。また、nビットの抽出データ304は、ビット拡張部153によって16ビットに符号拡張され、出力データ309のMSB側に設定される。すなわち、32ビットの出力データ309は、2つの16ビットデータを含むことになる。この場合、出力データ309は、2つの入力オペランドとして実行部130に供給される。
この本発明の実施の形態の第2の変形例によれば、1つの入力データから2つの16ビットデータを抽出し、符号拡張するため、独立したデータ抽出命令やデータ拡張命令を別途実行することなく、2倍の数の演算器を並行して実行させることができる。
[その他の変形例]
なお、本発明の実施の形態において、オフセット値レジスタ410およびオフセット増分レジスタ420のビット幅を拡張することにより、プログラムコードのオペランドビット幅の増加を招くことなく、係数レジスタ142のワード数を拡張することが可能となる。これにより、多くの係数(フィルタタップ数)を必要とするフィルタ演算等のアルゴリズムにおいて、プログラムコードに記述されるオペランドを変更することなく取り扱うことができる。そのため、拡張した係数レジスタをROM化すること等が容易に可能となる。
また、オフセット値レジスタ410およびオフセット増分レジスタ420において、16ビット単位粒度だけでなく、小数点ビットを備えることにより、オペランド指示の更新を毎回の頻度よりも低減させることができる。これにより、例えば同じ係数値を続けて参照することも可能となる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
100 情報処理装置
110 命令供給部
120 命令デコード部
121 命令保持部
122 命令解読部
123 発行タイミング制御部
124 オペランド変換部
125 リピート回数設定レジスタ
126 レイテンシ設定レジスタ
129 デコード制御部
130 実行部
131、132 ビット拡張部
133 演算部
140 レジスタ群
141 汎用レジスタ
142 係数レジスタ
143 アキュムレータ
150 ソースデータ整形部
151 ソースデータ選択部
152 データ抽出部
153 ビット拡張部
160 実行結果データ整形部
161 実行結果データ選択部
200 メモリ
410 オフセット値レジスタ
420 オフセット増分レジスタ
430、460 加算器
440 レジスタ循環器
450 シフタ

Claims (8)

  1. 複数の命令を1組の命令群として供給する命令供給部と、
    前記複数の命令に対応する複数の実行処理を並列に繰り返し実行する実行部と、
    所定のレイテンシに従って遅延したタイミングにより前記複数の実行処理が実行されるよう前記実行部に対する命令の発行タイミングを制御する発行タイミング制御部と、
    前記実行部における実行の繰り返しの度に前記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部と
    を具備する情報処理装置。
  2. 前記オペランド変換部は、前記オペランドレジスタアドレスを変換する際には前記レイテンシに従って前記オペランドレジスタアドレスを循環させる請求項1記載の情報処理装置。
  3. 前記オペランド変換部は、前記オペランドレジスタアドレスを変換する際には前記増分値に従って前記オペランドレジスタアドレスを加算または減算した後に前記レイテンシによる剰余を算出することにより前記循環を行う請求項2記載の情報処理装置。
  4. 前記オペランド変換部は、ワード単位に付与された前記オペランドレジスタアドレスに対してハーフワードを識別する情報を付してハーフワード単位で前記オペランドレジスタアドレスを変換する請求項1記載の情報処理装置。
  5. 前記命令群の各々は繰り返し実行の要否を指示する繰り返し情報を含み、
    前記実行部は、前記繰り返し情報が繰り返し実行を指示している場合には前記命令群に含まれる前記複数の命令に対応する前記複数の実行処理を繰り返し実行する
    請求項1記載の情報処理装置。
  6. 前記オペランド変換部により変換された前記オペランドレジスタアドレスによりアクセスされるレジスタと、
    前記レジスタから読み出されたソースデータを整形して前記実行部に供給するソースデータ整形部と、
    前記実行部の実行結果データを整形して前記レジスタへ書込みデータとして供給する実行結果データ整形部と
    をさらに具備する請求項1記載の情報処理装置。
  7. 前記ソースデータ整形部は、32ビットデータの上位16ビットまたは下位16ビットの何れか一方を前記実行部へ供給し、
    前記実行部は、前記上位または下位の16ビットをビット拡張した上で実行処理を行って32ビットの前記実行結果データを出力し、
    前記実行結果データ整形部は、前記実行部による前記実行結果データのうち下位16ビットを前記書込みデータの上位16ビットまたは下位16ビットの何れか一方として供給する
    請求項6記載の情報処理装置。
  8. 1組の命令群として供給された複数の命令に対応する複数の実行処理が所定のレイテンシに従って遅延したタイミングにより実行されるよう命令の発行タイミングを制御する発行タイミング制御部と、
    前記複数の実行処理の各々が繰り返される度に前記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部と
    を具備する命令デコーダ。
JP2009245013A 2009-10-26 2009-10-26 情報処理装置とその命令デコーダ Abandoned JP2011090592A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009245013A JP2011090592A (ja) 2009-10-26 2009-10-26 情報処理装置とその命令デコーダ
US12/805,907 US9164763B2 (en) 2009-10-26 2010-08-24 Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction
CN2010105173032A CN102053819A (zh) 2009-10-26 2010-10-19 信息处理设备和信息处理设备的指令解码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009245013A JP2011090592A (ja) 2009-10-26 2009-10-26 情報処理装置とその命令デコーダ

Publications (1)

Publication Number Publication Date
JP2011090592A true JP2011090592A (ja) 2011-05-06

Family

ID=43899367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009245013A Abandoned JP2011090592A (ja) 2009-10-26 2009-10-26 情報処理装置とその命令デコーダ

Country Status (3)

Country Link
US (1) US9164763B2 (ja)
JP (1) JP2011090592A (ja)
CN (1) CN102053819A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015204113A (ja) * 2014-04-11 2015-11-16 富士通株式会社 ビット展開サポートを有する回転レジスタファイル

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
CN104375803B (zh) * 2013-08-13 2017-10-24 华为技术有限公司 一种数据处理的方法及装置
TWI489445B (zh) * 2014-09-23 2015-06-21 Delta Electronics Inc 即時色域映對系統與即時色域映對方法
US9747108B2 (en) * 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
CN109032665B (zh) * 2017-06-09 2021-01-26 龙芯中科技术股份有限公司 微处理器中指令输出处理方法及装置
US11409525B2 (en) * 2018-01-24 2022-08-09 Intel Corporation Apparatus and method for vector multiply and accumulate of packed words
JP7208448B2 (ja) * 2019-02-01 2023-01-19 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US20230342153A1 (en) * 2022-04-20 2023-10-26 Simplex Micro, Inc. Microprocessor with a time counter for statically dispatching extended instructions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184695A (ja) * 1997-12-19 1999-07-09 Nec Corp キャッシュメモリ及びキャッシュメモリへのアクセス方法
US6112295A (en) * 1998-09-24 2000-08-29 Intel Corporation High frequency pipeline decoupling queue with non-overlapping read and write signals within a single clock cycle
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
FR2807591B1 (fr) * 2000-04-06 2003-08-08 Gemplus Card Int Procede de contre-mesure pour un micro-controleur base sur une architecture avec "pipeline"
JP2002229779A (ja) 2001-02-02 2002-08-16 Mitsubishi Electric Corp 情報処理装置
US6970895B2 (en) * 2001-10-01 2005-11-29 Koninklijke Philips Electronics N.V. Programmable delay indexed data path register file for array processing
CN1717654A (zh) * 2002-11-28 2006-01-04 皇家飞利浦电子股份有限公司 数据处理器的循环控制电路
US7302555B2 (en) * 2003-04-29 2007-11-27 Koninklijke Philips Electronics, N.V. Zero overhead branching and looping in time stationary processors
CN1266592C (zh) * 2003-11-26 2006-07-26 中国人民解放军国防科学技术大学 依据确定延迟的动态vliw指令调度方法
US8098251B2 (en) * 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015204113A (ja) * 2014-04-11 2015-11-16 富士通株式会社 ビット展開サポートを有する回転レジスタファイル

Also Published As

Publication number Publication date
CN102053819A (zh) 2011-05-11
US20110099354A1 (en) 2011-04-28
US9164763B2 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
JP2011090592A (ja) 情報処理装置とその命令デコーダ
US5864703A (en) Method for providing extended precision in SIMD vector arithmetic operations
US8122078B2 (en) Processor with enhanced combined-arithmetic capability
US7376812B1 (en) Vector co-processor for configurable and extensible processor architecture
US7386844B2 (en) Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions
US8443170B2 (en) Apparatus and method for performing SIMD multiply-accumulate operations
US8601239B2 (en) Extended register addressing using prefix instruction
JP4986431B2 (ja) プロセッサ
JP2816248B2 (ja) データプロセッサ
TW201717037A (zh) 用於緊耦合異質計算的硬體處理器及方法
JP5607832B2 (ja) 汎用論理演算の方法および装置
CN107851013B (zh) 数据处理装置和方法
JP2013174961A (ja) ベクトルプロセッサ、ベクトルプロセッサの処理方法
US7523295B2 (en) Processor and method of grouping and executing dependent instructions in a packet
US20030037085A1 (en) Field processing unit
US8604946B2 (en) Data processing device and data processing method
JP2000322235A (ja) 情報処理装置
CN111814093A (zh) 一种乘累加指令的处理方法和处理装置
JP5327432B2 (ja) 信号処理プロセッサ及び半導体装置
WO2022121090A1 (zh) 支持高吞吐多精度乘法运算的处理器
US20090031117A1 (en) Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
KR100636596B1 (ko) 고에너지 효율 병렬 처리 데이터 패스 구조
JP5786719B2 (ja) ベクトルプロセッサ
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
US20100115239A1 (en) Variable instruction width digital signal processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120925

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20130416