JP2010066893A - データプロセッサ - Google Patents

データプロセッサ Download PDF

Info

Publication number
JP2010066893A
JP2010066893A JP2008231148A JP2008231148A JP2010066893A JP 2010066893 A JP2010066893 A JP 2010066893A JP 2008231148 A JP2008231148 A JP 2008231148A JP 2008231148 A JP2008231148 A JP 2008231148A JP 2010066893 A JP2010066893 A JP 2010066893A
Authority
JP
Japan
Prior art keywords
instruction
code
prefix
data processor
instructions
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
JP2008231148A
Other languages
English (en)
Other versions
JP5357475B2 (ja
Inventor
Fumio Arakawa
文男 荒川
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 Technology Corp
Original Assignee
Renesas Technology 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 Technology Corp filed Critical Renesas Technology Corp
Priority to JP2008231148A priority Critical patent/JP5357475B2/ja
Priority to US12/546,809 priority patent/US8402256B2/en
Publication of JP2010066893A publication Critical patent/JP2010066893A/ja
Priority to US13/782,271 priority patent/US9116688B2/en
Application granted granted Critical
Publication of JP5357475B2 publication Critical patent/JP5357475B2/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/30181Instruction operation extension or modification
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/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 or 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 or 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

【課題】プレフィックス付の命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にする。
【解決手段】命令コードタイプを判定するデコーダ(PD0〜PD3)による判定結果に基づいてプレフィックス以外の各命令コードタイプ毎の命令を探索し、探索された各命令に、直前の命令を付加して、命令実行手段に出力する回路(EX−ISD,LS−ISD、BR-ISD)を採用する。この回路は、探索対象とする複数命令単位中で目的命令コードタイプの命令を検出したとき当該検出命令と共にその直前の目的命令コードタイプ以外の命令をプレフィックスコード候補として出力し、探索対象の複数命令単位の後端で目的命令コードタイプの命令を検出できなかったときは当該後端の命令をプレフィックスコード候補として出力し、命令コード探索の先頭で目的命令コードタイプの命令を検出したときは当該先頭の命令を出力する。
【選択図】図4

Description

本発明は、マイクロプロセッサやマイクロコンピュータ等のデータプロセッサに係り、データ転送頻度を低減することによる性能向上と消費電力低減を可能にする技術に関する。
今日のプロセッサは性能最優先のPC/サーバ用プロセッサと高効率と高性能の両立が求められる組込プロセッサに大別される。そして、高効率が求められる組込プロセッサでは、高コード効率の実現可能な16ビット固定長命令セットのRISC(Reduced Instruction Set Computer)型の組込プロセッサが普及している。高コード効率は、オフチップメモリの大容量化が進んだ現在においても、オンチップのキャッシュ、RAMやROMの有効活用には欠かせないものである。しかしながら、16ビット固定長命令セットでは、プログラムサイズを小さく出来る反面、命令数が増加する。特に、オペランド指定の制約から、レジスタ間転送、即値転送命令の命令数が増加する。また、増加した転送命令のレイテンシを隠蔽するために、転送先レジスタの代わりに転送元レジスタの値をフォワーディングするソースフォワーディングも一般的に使われている。命令数の増加は、性能低下や電力増加の原因となる。また、性能低下を補うソースフォワーディングはクリティカルパス及び論理規模の増加を通じて、動作周波数の低下及び電力増大の一因となっている。
こうした問題は16ビット固定長命令セットの命令コード空間が216B=64kBと、32ビット固定長命令セットの命令コード空間232B=4GBに比べて非常に小さいことに起因する。このため、例えば、非特許文献1のARM Thumb-2命令セットでは、16ビット固定長命令と32ビット固定長命令を混在させて命令コード空間を広げている。一方、特許文献1のプロセッサでは、16ビット固定長命令セットに16ビットプレフィックスを追加することにより命令コード空間を広げている。ここでいうプレフィックスとは、後続命令コードの意味を変えたり、後続命令コードに情報を追加したりする機能を持つ命令コードであり、プレフィックス単独では命令にはならない。尚、プレフィックスは1985年に発表されたインテル社のi386プロセッサが、それまで16ビットアーキテクチャであったプロセッサを、上位互換性を維持しつつ32ビットアーキテクチャにする際に使用しており、20年以上前から公知である。そして、i386プロセッサでは、後続命令コードのオペランドサイズの意味を変えるためにプレフィックスを使用している。また、i386プロセッサやその後継機種は全て可変長命令セットのCISC(Complicated Instruction Set Computer)型のプロセッサであるため、元々命令デコード回路が複雑であり、プレフィックス追加に伴う実現回路への影響は相対的に小さいといえる。
特許文献1におけるプレフィックスは、2オペランド命令にオペランドを追加して3オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、及び、2オペランドのモディファイ型命令のソースオペランドを変更して3オペランド型の命令に変えることに使われている。また、特許文献1では、命令コードを16ビットずつデコードするスカラプロセッサを例に、実現方式を開示している。プレフィックスも1命令コードであるため、プレフィックス付き命令のデコードには2サイクルかかり、実行も2サイクルかかる。
特許文献2では、特許文献1のプロセッサを改良したプロセッサが開示されている。プレフィックスの機能としては、2オペランドのモディファイ型命令のデスティネーションオペランドを変更して3オペランド型に変えること、及び、リテラルオペランドのビット幅を拡張することを開示している。また、特許文献1において2サイクルかかっていたプレフィックス付き命令のデコードのうち、プレフィックスのデコードを先行命令と同時に行うことにより、プレフィックスのデコードサイクルを隠蔽し、プレフィックス付き命令の1サイクル実行を実現している。
16ビット固定長命令セットで、レジスタ指定フィールドが確保できないという問題に対処するための方式として、暗黙の固定レジスタ指定がある。非特許文献2記載のSH-4Aでは、16本の汎用レジスタのうちの1本であるR0を暗黙の固定レジスタとして使用する命令を定義している。そして、コンパイラのレジスタアロケーション時にこうした暗黙の固定レジスタ使用命令に優先的にR0を割り当てて、こうした命令を活用することにより、固定レジスタであることのデメリットを緩和している。しかし、固定オペランド指定によるレジスタ指定の自由度の低下を十分隠蔽できるとは限らない。特に、種々の命令セットアーキテクチャを同じコンパイル方式で扱おうとする複数プロセッサ向けコンパイラの提供者は、特定のアーキテクチャの長所は使用しない傾向が強い。このため、固定レジスタ使用命令の活用が不十分な場合がある。即ち、固定レジスタ使用命令は、レジスタ指定フィールドが確保できないという問題に対する十分な対応策とはいえず、更なる改善が必要であるといえる。
Markus Levy, "ARM Grows More Thumbs," Microprocessor Report, 6/17/03-02, June 2003. SH-4Aソフトウェアマニュアル、Internet URL http://documentation.renesas.com/jpn/products/mpumcu/rjj09b0090_sh4a.pdf 、p.3-9〜p.3-19、表3.4,3.5, 3.6, 3.9, 3.10, 3.13(SH-4A Software Manual、Internet URL http://documentation.renesas.com/eng/products/mpumcu/rej09b0003_sh4a.pdf、pp.33-42、Table 3.4,3.5, 3.6, 3.9, 3.10, 3.13) 特開2000−284962号公報 特開2004−030015号公報
前述のように、16ビット固定長命令コードの命令コード空間小ささを補うための命令コード空間拡張方式として、16ビット固定長命令と32ビット固定長命令を混在させて命令コード空間を広げる方式と、16ビット固定長命令セットに16ビットプレフィックスを追加することにより命令コード空間を広げる方式とが開示されている。そして、後者では具体的に、2オペランド命令にオペランドを追加して3オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、2オペランドのモディファイ型命令のソースオペランドまたはデスティネーションオペランドを変更して3オペランド型の命令に変えること、及び、リテラルオペランドのビット幅を拡張することが開示されている。また、命令コード空間を拡張せずにオペランド数を確保する方式として、暗黙の固定オペランド指定方式がある。
本発明が解決しようとする第1の課題は、命令コード空間を拡張せずにオペランド数を確保することが可能であるという固定レジスタ使用命令の長所を生かしつつ、命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減し、性能向上や電力削減を実現することである。
前述の第1の課題を解決して命令コード空間を拡張すると、その実現方法が問題となる。背景技術の特許文献1及び特許文献2の例では、命令コード空間を広げるためにプレフィックスを定義し、その実現手段についても開示している。しかしながら、その実現方式は命令を1命令ずつ発行するスカラプロセッサを前提としたものであり、複数命令の同時発行が可能なスーパースカラ方式に対応していない。
本発明が解決しようとする第2の課題は、プレフィックス付の命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にすることである。特に、プレフィクス付の命令もプレフィックスなしの命令と同等の発行効率とすることである。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
第1の課題を解決するために、本発明では、固定レジスタ使用命令を定義した上でプレフィックスコードによって下記機能変換または機能拡張をする。プレフィックスコードは、前記固定レジスタ使用命令の固定レジスタを他のレジスタ又は即値に置換する機能を有する。別の第2のプレフィックスコードにおいては、固定レジスタ使用命令の定義においてサイズの直交性を維持せずに、使用頻度の低いサイズの命令は固定レジスタ使用命令、使用頻度の高いサイズの命令はレジスタフィールドでレジスタを指定する命令として命令コードサイズを圧縮し、プレフィックスによって使用頻度の高いサイズの命令のサイズを使用頻度の低いサイズに置換して、命令定義の直交性を確保する機能を備える。更に、サイズ置換に要するオペランドフィールドは少ないため、他の拡張、例えば、データの符号拡張/ゼロ拡張、即値やディスプレースメントのビット幅の拡張を、前記サイズ変更機能に加えて、一つのプレフィックスコードとすることにより、プレフィックスコードによる命令定義拡張機能を強化するものである。さらに別の観点によるプレフィックスコードは、プレフィックスコードを後続する命令の付加情報と位置づけることにより、同一のプレフィックスコードの意味を後続する命令の種別によって変えるものである。
上記手段によれば、例えば、レジスタ相対間接ロード命令として、使用頻度の高い32ビットサイズの命令は、ベースアドレスレジスタ及びロードデータ格納レジスタの双方をレジスタフィールドでレジスタを指定する命令として定義し、使用頻度の低い8、16及び64ビットサイズの命令は、ロードデータ格納レジスタを固定レジスタとする命令として定義する。そして、32ビットサイズの命令に8ビットオペランドフィールドのプレフィックスを付けると、プレフィックスはサイズ指定に2ビット、残りの6ビットをレジスタ相対間接アドレッシングのディスプレースメントを伸ばすために使用する。この結果、プレフィックスを使用しない場合に必要となることの多かった固定レジスタから任意のレジスタへの転送命令が不要となり、転送命令の出現頻度が低減される。また、ディスプレースメントを伸ばすことによりプレフィックスを使用しない場合にベースアドレスから届かなかったアドレスにも届くようになる。そして、届かなかった場合に対応するために、ディスプレースメント設定のための即値転送命令とインデックス相対ロード命令の2命令を使用する場合が削減され、転送命令の出現頻度が低減される。
第2の課題を解決するために、命令プリフェッチ後に命令コードタイプを判定するデコーダと、前記判定結果に基づく、プレフィックスを除く各命令コードタイプ毎の命令コードを探索し、探索によって検出した各命令コードに、直前の命令コードを付加して、各命令コードタイプの命令実行手段にディスパッチするディスパッチ回路を採用する。ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
前記第1の課題を解決するための手段により、命令コード空間を拡張せずにオペランド数を確保することが可能なであるという固定レジスタ使用命令の長所を生かしつつ、更に命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減することが可能となる。
前記第2の課題を解決するための手段により、各命令タイプ毎に、プレフィクス付の命令もプレフィックスなしの命令も毎サイクル発行することが可能となり、プレフィックス付の命令を含む命令セットにおける効率的なスーパースカラ命令発行が可能となる。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャを有すると共にスーパースカラによる複数命令の並列的発行を行なう。このデータプロセッサは、並列的にフェッチされた複数命令コードの命令コードタイプを判定するデコーダ(PD0〜PD3)と、前記デコーダによる判定結果を伴って前記並列的にフェッチされた複数命令コードの単位で順次蓄積する命令キュー(GIQ0〜GIQ15)と、前記命令キューから出力される複数命令コード単位でプレフィックスコードを除く命令コードタイプ毎の命令コードを探索し、探索結果に基づいて対応する命令コードタイプの命令デコード及び実行部(EXU)に命令コードを出力するディスパッチ回路(EX−ISD,LS−ISD,BR−ISD)とを有する。前記ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する。
〔2〕項1のデータプロセッサにおいて、前記命令デコード及び実行部は、プレフィックスコード候補として供給された命令コードがプレフィックスコードでないときはこれを無視する。
〔3〕項2のデータプロセッサにおいて、前記命令デコード及び実行部は、プレフィックスコード候補として出力された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された目的命令コードタイプの命令コードのプレフィックスコード候補として用いる。
〔4〕項1のデータプロセッサにおいて、前記直前の命令コード及び後端の命令コードは、夫々複数の命令コードである。プレフィックスコードは複数命令コードであってもよいからである。
〔5〕本発明に係るデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令(図8の命令(6)、(7)、(8))を含み、前記プレフィックスコードは前記固定レジスタ使用命令に前置されて、前記固定レジスタを、命令で指定可能な他のレジスタに置換するように、前記固定レジスタ使用命令を修飾する(図7のプレフィックスコード(1)、(2))。
〔6〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令(図8の命令(6)、(7)、(8))を含み、前記プレフィックスコードは前記固定レジスタ使用命令に前置されて、前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する(図7のプレフィックスコード(2))。
〔7〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットは、オペランドに関しデータサイズを有する命令を含み(図8の命令(8))、前記プレフィックスコードは前記オペランドサイズを有する命令に前置されて、前記命令のオペランドサイズを前記プレフィックスコードのオペランドサイズ指定フィールドで指定されるオペランドサイズの命令に変換するように、前記オペランドサイズを有する命令を修飾する(図7のプレフィックスコード(4))。
〔8〕項7のデータプロセッサにおいて、前記プレフィックスコードは前記オペランドサイズを有する命令に対してそのリテラルフィールドを拡張する修飾を併せて行う。
〔9〕項7のデータプロセッサにおいて、前記プレフィックスコードは前記オペランドサイズを有する命令に対して前記指定フィールドで指定されたサイズのオペランドの上位側を符号付き又は符号無しで拡張する修飾を併せて行う。
〔10〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、同じオペレーションコードを持つ前記プレフィックスコード(図7のプレフィックスコード(1)、(4))の定義が前記プレフィックスコードによって修飾される後続命令の種類によって変化する。
〔11〕項10のデータプロセッサにおいて、前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令であるとき前記プレフィックスコード(図7のプレフィックスコード(2))は前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する。前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令でないとき前記プレフィックスコード(図7のプレフィックスコード(4))はオペランドサイズを変更又はリテラルを拡張するように、前記後続命令を修飾する。
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
《実施形態1》
図1には本発明に係るデータプロセッサMPUが例示される。データプロセッサMPUは複数個のプロセッサコアCPUを中心に、これに内部バスで接続されたメモリMEM、外部インタフェース回路EIF、及び内蔵周辺モジュールPER等を一個又は複数個備える。データプロセッサMPUは、特に制限されないが、単結晶シリコンのような1個の半導体基板に相補型MOS集積回路製造技術等によって形成される。
図2には、本発明の実施形態に係るプロセッサコアCPUのブロック構成が概略的に例示される。命令キャッシュIC近傍には、命令フェッチユニットIFUが配置され、その中には、プリデコーダPD、グローバル命令キューGIQ、及び分岐制御部BRCが含まれる。また、データキャッシュDC近傍には、ロードストアユニットLSUが配置され、その中には、ロードストア命令を保持するロードストア命令キューLSIQ、ロードストア命令デコーダLSID、及びロードストア命令実行部LSEが含まれる。更に、演算命令実行ユニットEXUには、演算命令を保持する実行命令キューEXIQ、演算命令デコーダEXID、及び演算命令実行部EXEが含まれる。そして、バスインタフェースユニットBIUはプロセッサコアとコア外のバスとのインタフェースである。
図3には、本発明の実施形態に係るプロセッサのパイプライン構成が概略的に例示される。まず、全命令共通の命令キャッシュアクセスIC1及びIC2、並びに、グローバル命令バッファGIBステージがあり、演算命令用には、ローカル命令バッファEXIB、ローカルレジスタリードEXRR、演算EX、並びにレジスタライトバックWBステージがある。また、ロードストア命令用には、ローカル命令バッファLSIB、ローカルレジスタリードLSRR、アドレス計算LSA、データキャッシュアクセスDC1及びDC2、並びにレジスタライトバックWBステージがある。更に、分岐命令用には分岐BRステージがある。
命令キャッシュアクセスIC1及びIC2ステージでは、命令フェッチユニットIFUが命令キャッシュICから命令コードをフェッチしてプリデコーダPDでプリデコードした後、続くグローバル命令バッファGIBステージのグローバル命令キューGIQに格納する。グローバル命令バッファGIBステージでは、ロードストア、演算、並びに、分岐の各カテゴリの命令を1命令ずつ抽出してディスパッチし、それぞれローカル命令バッファLSIB及びEXIB、並びに、分岐BRステージで、それぞれロードストアユニットLSUの命令キューLSIQ、命令実行ユニットEXUの命令キューEXIQ、並びに、命令フェッチユニットIFUの分岐制御部BRCに格納する。そして、分岐BRステージでは、分岐命令を受取った場合には直ちに分岐処理が開始される。
演算命令用パイプラインでは、命令実行ユニットEXUがローカル命令バッファEXIBステージで演算命令を1サイクルに最大1命令ずつ命令キューEXIQに受け取って、演算命令デコーダEXIDで最大1命令ずつデコードし、次のローカルレジスタリードEXRRステージでレジスタリードを行い、演算EXステージで演算命令実行部EXEを用いて演算を行い、レジスタライトバックWBステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
ロードストア命令用のパイプラインでは、ロードストアユニットLSUがローカル命令バッファLSIBステージでロードストア命令を1サイクルに最大1命令ずつ命令キューLSIQに受け取って、ロードストア命令デコーダLSIDで最大1命令ずつデコードし、次のローカルレジスタリードLSRRステージでレジスタリードを行い、アドレス計算LSAステージでロードストアアドレスを計算し、データキャッシュアクセスDC1及びDC2ステージでロードストア処理を行い、レジスタライトバックWBステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
図4には、本発明の実施形態に係るプロセッサのグローバル命令キューGIQの構造が例示される。図4の例では、グローバル命令キューGIQは、4命令分の命令プリデコーダPD0〜3、16命令分の命令キューエントリGIQ0〜15、書込み位置を指定するグローバル命令キューポインタGIQP、グローバル命令キューポインタGIQPをデコードするグローバル命令キューポインタデコーダGIQP−DEC、演算、ロードストア、及び分岐の各カテゴリの命令の進捗に合せて進められ、読出し位置を指定する演算命令ポインタEXP、ロードストア命令ポインタLSP、分岐命令ポインタBRP、及びそれぞれのポインタに従って、それぞれ演算命令、ロードストア命令、分岐命令を探索してディスパッチする演算命令探索ディスパッチ回路EX−ISD、ロードストア命令探索ディスパッチ回路LS−ISD、分岐命令探索ディスパッチ回路BR−ISD、命令フェッチ要求生成部IREQ−GENから成る。
グローバル命令キューGIQは、グローバル命令キューポインタGIQP及び命令キャッシュ出力有効信号ICOVから、グローバル命令キューポインタデコーダGIQP−DECによって生成されるグローバル命令キュー更新信号GIQU0〜3に従って、命令キャッシュICからフェッチした4命令コードICO0〜3をグローバル命令キューエントリグループGIQ0〜3、GIQ4〜7、GIQ8〜11、又はGIQ12〜15にラッチする。グローバル命令キュー更新信号GIQU0〜3は命令キャッシュ出力有効信号ICOVがアサートされている場合にグローバル命令キューポインタGIQPの指している命令キューエントリグループの更新信号をアサートする。また、命令キャッシュ出力有効信号ICOVがアサートされて、フェッチした命令コードICO0〜3がグローバル命令キューGIQにラッチされた場合、グローバル命令キューポインタGIQPを更新する。このために、グローバル命令キューポインタGIQPに+1した値を新グローバル命令キューポインタGIQP−NEWとして出力しておき、命令キャッシュ出力有効信号ICOVがアサートされたらこの値でグローバル命令キューポインタGIQPを更新する。
演算命令探索ディスパッチ回路EX−ISDは、グローバル命令キューエントリGIQ0〜15のそれぞれの出力であるグローバル命令キュー出力GIQO0〜15から、演算命令ポインタEXPの指す命令コードを先頭とする4個の命令コードを入力して演算命令コードを探索し、その先頭以外の命令に演算命令コードがあった場合は演算命令コード有効信号EX−IVをアサートし、当該演算命令コード及びその直前の命令コードを選択して、演算命令EX−INSTとして出力する。直前の命令コードを選択すると、それがプレフィックスコードであったときには当該プレフィックスコードとこれが修飾する命令コードとを共に出力することができる。このとき演算プレフィックス候補有効信号EX−PVはアサートされる。演算実行ユニットEXUは、演算命令コード有効信号EX−IVがアサートされ、且つ演算プレフィックス候補有効信号EX−PVがアサートされることにより、そのときの演算命令コードの直前に供給される命令即ちプレフィックスコード候補がプレフィックスコードであるかを判別し、そうでなければ当該命令を無視する。プレフィックスコードであれば直後の演算命令を修飾して実行する。
演算命令探索ディスパッチ回路EX−ISDは、探索対象の前記4命令の後端で演算命令を検出できなかったときは、演算プレフィックス候補有効信号EX−PVをアサートし、且つ演算命令コード有効信号EX−IVをネゲートして、当該後端の命令をプレフィックスコード候補として演算実行ユニットEXUに出力する。演算実行ユニットEXUは演算プレフィックス候補有効信号EX−PVがアサートされ、且つ演算命令コード有効信号EX−IVがネゲートされることにより、そのとき供給されるプレフィックスコード候補として前記後端の命令を受取り、その処理を次のサイクルまで待つ。
演算命令探索ディスパッチ回路EX−ISDは、探索対象の前記4命令の先頭で演算命令コードを発見した場合は演算プレフィックス候補有効信号EX−PVをネゲートし、且つ演算命令コード有効信号EX−IVをアサートして、当該演算命令コードを演算実行ユニットEXUに出力する。演算実行ユニットEXUは演算プレフィックス候補有効信号EX−PVがネゲートされ、且つ演算命令コード有効信号EX−IVがアサートされることにより、その直前の探索処理の最後で前記後端の命令を演算プレフィックス候補として先に受取っているとき、当該後端の命令がプレフィックスコードであるかを判別し、そうでなければ当該命令を無視する。プレフィックスコードであれば今回受取った演算命令を当該プレフィックスコードで修飾して実行する。
尚、探索対象の4命令に無効な命令が含まれるのは、グローバル命令キューエントリグループGIQ0〜3、GIQ4〜7、GIQ8〜11、又はGIQ12〜15のうち、無効な命令コードのグループを含む範囲が探索対象となった場合である。
以上の制御の結果、演算命令コード有効信号EX−IV及び演算プレフィックス候補有効信号EX−PVが共にアサ−トされれば演算命令コードと一緒にその直前の演算プレフィックス候補が出力され、それぞれネゲート及びアサ−トであれば後端の非演算命令が演算プレフィックス候補として先行的に出力され、それぞれアサ−ト及びネゲートであれば先頭の演算命令コードだけが出力されて前記先行的に出力された演算プレフィックス候補と共に使用され、共にネゲートされれば命令コードは何も出力されない。尚、演算プレフィックス候補としてデコードされたコードが演算プレフィックスではない場合は、演算命令コードのみを使用して命令が実行される。
同様に、ロードストア命令探索ディスパッチ回路LS−ISDも、グローバル命令キュー出力GIQO0〜15から、ロードストア命令ポインタLSPに従って、ロードストア命令コード有効信号LS−IV、ロードストア命令LS−INST、ロードストアプレフィックス候補有効信号LS−PV、及び新ロードストア命令ポインタLSP−NEWを出力する。また、分岐命令探索ディスパッチ回路BR−ISDも、グローバル命令キュー出力GIQO0〜15から、分岐命令ポインタBRPに従って、分岐命令コード有効信号BR−IV、分岐命令BR−INST、分岐プレフィックス候補有効信号BR−PV、及び新分岐命令ポインタBRP−NEWを出力する。
命令フェッチ要求生成部IREQ−GENは、各ポインタGIQP、EXP、LSP、及びBRPの値から、グローバル命令キューエントリグループGIQ0〜3、GIQ4〜7、GIQ8〜11、又はGIQ12〜15のいずれかに1エントリグループ以上の空きがあるかどうかを判断し、空きがあれば命令フェッチ要求信号IREQをアサートする。空きがない状態は、グローバル命令キューポインタGIQPの指している、次にフェッチした命令コードICO0〜3をラッチするグローバル命令キューエントリグループを、各ポインタEXP、LSP、及びBRPの何れも指していない状態である。尚、各ポインタの代わりに各新ポインタGIQP−NEW、EXP−NEW、LSP−NEW、及びBRP−NEW、グローバル命令キューポインタGIQPの更新信号でもある命令キャッシュ出力有効信号ICOV、及び各ポインタの更新制御信号EX−OK、LS−OK、及びBR−OKとから命令フェッチ要求信号IREQを生成すれば、1サイクル早く命令フェッチ要求信号IREQを生成することが可能である。尚、命令フェッチ要求信号IREQを受ける命令キャッシュICとの信号タイミング次第で、ポインタから作る方式、新ポインタから作る方式、作った後にラッチしてから命令キャッシュICに送る方式等、種々のタイミングの方式が考えられる。
図5にはプレフィックスコードを含む命令コードフォーマットが例示される。命令コード数は命令タイプによって異なる場合が一般的であるため、本例では、ロードストア命令コードが全命令コード空間の半分を使用し、残りの半分を演算命令コードが使用し、更に残りの半分ずつを分岐命令コードとプレフィックスが使用することを想定している。そして、16ビット固定長命令コードの最上位ビットが1ならばロードストア命令コード、上位2ビットが01ならば演算命令コード、上位3ビットが001ならば分岐命令コード、上位3ビットが000ならばプレフィックスコードとする。そして、図4に例示したグローバル命令キューGIQの命令プリデコーダPD0〜3によって16ビット固定長命令コードの上位3ビットをデコードし、命令コードタイプが、ロードストア、演算、分岐、またはプレフィックスのいずれであるかを判定し、命令タイプが分岐命令であるときにアサートする分岐命令ビットB及び命令タイプが演算命令であるときにアサートする演算命令ビットEを付加する。また、16ビット固定長命令コードの最上位ビットは、そのままロードストア命令ビットLとして使用することができる。この結果、演算命令探索ディスパッチ回路EX−ISD、ロードストア命令探索ディスパッチ回路LS−ISD、及び分岐命令探索ディスパッチ回路BR−ISDの命令探索が容易となる。
図6には、図4に例示したグローバル命令キューGIQの演算命令探索ディスパッチ回路EX−ISDの構造が例示される。ポインタデコーダP−DEC、命令コードマルチプレクサM0〜M3、プライオリティエンコーダPE、出力命令コードマルチプレクサMOUT、ポインタ更新回路P−ADVから成る。ポインタデコーダP−DECは、演算命令ポインタEXPをデコードし、演算命令ポインタEXPの指す命令コードを先頭とする4命令コードが選択されるように、命令コードマルチプレクサM0〜M3の制御信号M0−CNTL〜M3−CNTLを生成する。命令コードマルチプレクサM0〜M3はそれぞれ制御信号M0−CNTL〜M3−CNTLに従い、それぞれGIQO0、4、8、及び12、GIQO1、5、9、及び13、GIQO2、6、10、及び14、GIQO3、7、11、及び15から1命令コードを選択し、それぞれ探索対象命令コードC0〜C3として出力する。この結果、探索対象命令コードC0〜C3には固定の順序が与えられず、先頭命令コードからサイクリックに命令順序が付く。プライオリティエンコーダPEは、プライオリティエンコーディングによって探索対象命令コードC0〜C3のそれぞれの演算命令ビットEを演算命令ポインタEXPの指す先頭命令コードから探索を開始し、演算命令コードを探索する。探索による演算命令EX−INST等の出力制御内容は上述の通りである。
尚、以上の説明では、演算命令探索ディスパッチ回路EX−ISDに4命令単位で入力される命令は全てグローバル命令キューGIQにおいて有効な命令という前提に立っている。グローバル命令キューGIQにおいて無効な命令、例えば、命令フェッチが間に合わずに既にリードされた命令が含まれている場合を想定する。このとき、演算命令探索ディスパッチ回路EX−ISDは以下の制御を行う。例えば、4命令に対して演算コードの探索を行い、発見した場合はその命令コードを選択し、発見しなかった場合は探索した4命令が全て有効ならば後端の命令コードを選択し、無効な命令があったときは最初の無効な命令コードを選択し、更に選択した命令コードの直前の命令コードも選択するように、出力命令コードマルチプレクサ制御信号MOUT−CNTLを出力する。探索対象命令コードC0〜C3の順序はサイクリックであるため、発見しなかった場合に上記の命令コードを選択すると、直前の命令コードとして最後の有効な命令コードが選択され、これが演算命令のプレフィックスであっても適切に選択されて出力される。また、選択制御が、演算命令コードを発見した場合との一つと同一になり、簡素化される。前述と同様に、新たな探索対象命令を選択した際に先頭命令コードが演算命令であった場合は、演算プレフィックス候補有効信号EX−PVをネゲートし、演算命令コードEX−INSTの一部として同時に出力される演算プレフィックス候補は使用せずに、演算実行ユニットが既に保持している演算プレフィックス候補を使用するように指示する。
ロードストア命令探索ディスパッチ回路LS−ISD及び分岐命令探索ディスパッチ回路BR−ISDも上記演算命令探索ディスパッチ回路EX−ISDと同様に構成される。
以上の制御により、第2の課題が解決され、各命令タイプ毎に、プレフィクス付の命令もプレフィックスなしの命令も毎サイクル発行することが可能となり、プレフィックス付の命令を含む命令セットにおける効率的なスーパースカラ命令発行が可能となる。また、発見した命令コードに付加する直前の命令コードを1個から複数に変えれば、複数個のプレフィックスコードを許す命令セットアーキテクチャに対しても、本制御方式を適用することが可能となり、効率的なスーパースカラ命令発行が可能となる。
《実施形態2》
図7には本発明の第1の課題を解決するためのプレフィックスコード定義が例示される。また、図8にはプレフィックスコードが修飾する命令が例示される。
図7の(1)のコードR0CHG Rn,#LIT4は固定レジスタ使用命令の固定レジスタを他のレジスタに置換し、更にリテラルを4ビット拡張するプレフィックスコードである。上位3ビットが000であることは、図5に示したようにプレフィックスコードであることを示す。また、置換するレジスタを指定するレジスタフィールドRnを持つ。Rnは4ビットフィールドであり、汎用レジスタ0〜15の一つを指定することができる。また、OPはプレフィックスの種類を示すオペレーションコードである。このコードを図8の(6)の命令に適用した場合を考える。(6)の命令MOV.B/W/D @(Rm,DISP4),R0はロード命令であり、レジスタRmをベースアドレスとし、これに4ビットディスプレースメントDISP4を加算した値をメモリアクセスアドレスとして、このアドレスからロードしたバイトB、ワード(16ビット)W、又はダブルロング(64ビット)Dサイズの値をR0に格納する命令である。この命令を(1)のプレフィックスコードで修飾すると、R0をRnに変えることができ、4ビットディスプレースメントDISP4を4ビット拡張して8ビットとすることができて、命令MOV.B/W/D @(Rm,DISP8),Rnに変換でき、レジスタR0を使用しない命令になる。そして、レジスタアサインの汎用性が増すと共に、ディスプレースメントが8ビットのDISP8に拡張されアドレス指定の汎用性が増す。また、R0への転送及びR0の読み出しがなくなり、性能向上及び電力低減が達成される。
図7の(2)のコードR0CHG #LIT8は固定レジスタ使用命令の固定レジスタを即値に置換するプレフィックスコードである。置換する即値を指定するリテラルフィールドLIT8を持つ。このコードを図8の(7)の命令に適用した場合を考える。(7)の命令MOV.B/W/D R0,@(Rm,DISP4)はストア命令であり、レジスタRmをベースアドレスとし、これに4ビットディスプレースメントDISP4を加算した値をメモリアクセスアドレスとして、このアドレスにレジスタR0の下位1バイト、下位1ワード、又はダブルロングサイズの値を格納する命令である。この命令を(2)のプレフィックスコードで修飾すると、レジスタR0をリテラルに変えることができ、命令MOV.B/W/D #LIT8,@(Rm,DISP4)に変換でき、レジスタR0を使用しない命令になる。そして、(1)のコードと同様に、レジスタアサインの汎用性が増すと共に、性能向上及び電力低減が達成される。
図7の(3)のコードR0RDCHG Rm、Rdは固定レジスタ使用命令の固定レジスタをRmに置換し、モディファイオペランドをリードオペランドとし、新たにデスティネーションオペランドRdを追加するプレフィックスコードである。置換するレジスタ及び追加するレジスタを指定するレジスタフィールドRm及びRdを持つ。このコードを図8の(8)の命令に適用した場合を考える。(8)の命令DIV.L R0,Rnは除算命令であり、レジスタRnの値をレジスタR0の値で割って、その結果をレジスタRnに格納する命令である。この命令を図7の(3)のプレフィックスコードで修飾すると、レジスタR0をレジスタRmに変え、更にデスティネーションをレジスタRdに変えることができ、レジスタRnの値をレジスタRmの値で割って、その結果をレジスタRdに格納するR0を使用しない3オペランド命令DIV.L Rm,Rn,Rdとなり、レジスタアサインの汎用性が増すと共に、性能向上及び電力低減が達成される。
図7の(4)のコードSZCHG.BU/B/W/D #LIT6はデータサイズロング(32ビット)Lの命令のデータサイズをバイトB、ワードW又はダブルロングDに変換すると共に、リテラルを6ビット拡張するプレフィックスコードである。また、バイトサイズへの変換ではバイトサイズデータのレジスタ上での上位ビットへの拡張を符号なしか符号付かを選択でき、バイトサイズ符号なしはBU、バイトサイズ符号付はBと指定する。これらの4通りを2ビットのサイズフィールドSZで指定する。そしてリテラル拡張用のリテラルフィールドLIT6を持つ。このコードを図8の(9)の命令に適用した場合を考える。(9)の命令MOV.L @(Rm,DISP4),Rnはロード命令であり、レジスタRmをベースアドレスとし、これに4ビットディスプレースメントDISP4を加算した値をメモリアクセスアドレスとして、このアドレスからロードしたロングサイズの値をRnに格納する命令である。この命令を図7の(4)のプレフィックスコードで修飾すると、データサイズをBU、B、W、又はDに変えることができ、命令MOV.BU/B/W/D @(Rm,DISP10),Rnとなり、データサイズの汎用性が増すと共に、ディスプレースメントが10ビットのDISP10に拡張され、性能向上及び電力低減が達成される。尚、図8の(9)の命令MOV.L @(Rm,DISP4),Rnに対応する他のサイズの16ビット固定長命令は図8(6)の命令MOV.B/W/D @(Rm,DISP4),R0である。これに図7の(1)のプレフィックスコードR0CHG Rn,#LIT4を適用しても固定レジスタR0の制約を外すことができる。しかし、ディスプレースメントの拡張は4ビットと少ないため、図7の(4)のプレフィックスコードよりは効果が小さい。
図7の(1)のコードR0CHG Rn,#LIT4は固定オペランドR0を持つ命令にのみ適用する意味がある。一方、図7の(4)のコードSZCHG.BU/B/W/D #LIT6は固定オペランドR0を持たない汎用性の高い命令にのみ適用する意味がある。したがって、これら2つのプレフィックスコードに同一の命令コードOPを割り当てても、修飾される後続命令によって使い分けることが出来る。このように、プレフィックスコードを後続する命令の付加情報と位置づけ、その解釈を修飾される後続命令に委ねることにより、プレフィックスコードの命令コードOPの種類を減らし、プレフィックスコード空間を縮小することができる。図7の例では命令コードOPに5ビット割り当てており、32種類定義可能であるが、これほど多くのプレフィックスは不要と考えられるので、例えばプレフィックスは上位6ビットが0と定めると、プレフィックスコード空間が縮小される。8ビットオペランドであれば4種類定義可能となる。逆に、プレフィックスは上位3ビットが0という定義は変えずに、オペランドを8ビットより大きくするという選択肢もある。
図7の(5)のコードLITEXT#LIT8はこれが前置された命令のリテラルを8ビット拡張するプレフィックスコードである。固定オペランドR0を持つ命令と持たない命令の双方に適用され、何れの場合もプレフィックスコードの意義に変わりはない。
以上のようなプレフィックスコード定義により、命令コード空間を拡張せずにオペランド数を確保することが可能なであるという固定レジスタ使用命令の長所を生かしつつ、更に命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減することが可能となる。また、ディスプレースメントを伸ばすことによりプレフィックスを使用しない場合にベースアドレスから届かなかったアドレスにも届くようになる。そして、届かなかった場合に対応するためにディスプレースメント設定のための即値転送命令とインデックス相対ロード命令の2命令を使用する場合が削減され、転送命令の出現頻度が低減される。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、並列パイプライン数は図3に示される3並列に限定されず、命令フェッチの単位は4命令並列に限定されず、グローバル命令キューエントリは図4の4エントリ・グループの16個に限定されない。命令セットの命令は16ビット長を主体とする命令長に限定されない。
図1は本発明に係るデータプロセッサの概略的な構成を例示するブロック図である。 図2は本発明に係るデータプロセッサにおけるプロセッサコアの構成を概略的に例示するブロック図である。 図3は本発明に係るプロセッサコアのパイプライン構造を概略的に例示する説明図である。 図4は本発明に係るプロセッサコアのグローバル命令キューの構造を概略的に例示するブロック図である。 図5は本発明に係るプロセッサコアのプレフィックスコードを含む命令コードフォーマットを概略的に例示する説明図である。 図6は本発明に係るプロセッサコアのグローバル命令キューの命令探索ディスパッチ回路の構造を概略的に例示するブロック図である。 図7は本発明に係るプロセッサコアのプレフィックスコード定義を概略的に例示する説明図である。 図8は本発明に係るプロセッサコアのプレフィックスコードによって修飾される命令を概略的に例示する説明図である。
符号の説明
MPU データプロセッサ
CPU プロセッサコア
MEM メモリ
EIF 外部インタフェース回路
PER 内蔵周辺モジュール
IC 命令キャッシュ
IFU 命令フェッチユニット
PD プリデコーダ
GIQ グローバル命令キュー
BRC 分岐制御部
DC データキャッシュ
LSU ロードストアユニット
LSIQ ロードストア命令キュー
LSID ロードストア命令デコーダ
LSE ロードストア命令実行部
EXU 演算命令実行ユニット
EXIQ 実行命令キュー
EXID 演算命令デコーダ
EXE 演算命令実行部
BIU バスインタフェースユニット
IC1、IC2 命令キャッシュアクセスステージ
GIB グローバル命令バッファステージ
EXIB ローカル命令バッファステージ
EXRR ローカルレジスタリードステージ
EX 演算ステージ
WB レジスタライトバックステージ
LSIB ローカル命令バッファステージ
LSRR ローカルレジスタリードステージ
LSA アドレス計算ステージ
DC1、DC2 データキャッシュアクセスステージ
BR 分岐ステージ
GIQ0〜15 命令キューエントリ
GIQP グローバル命令キューポインタ
GIQP−DEC グローバル命令キューポインタデコーダ
EXP 演算命令ポインタ
LSP ロードストア命令ポインタ
BRP 分岐命令ポインタ
EX−ISD 演算命令探索ディスパッチ回路
LS−ISD ロードストア命令探索ディスパッチ回路
BR−ISD 分岐命令探索ディスパッチ回路
IREQ−GEN 命令フェッチ要求生成部
ICOV 命令キャッシュ出力有効信号
GIQU0〜3 グローバル命令キュー更新信号
ICO0〜3 命令キャッシュ出力命令コード
GIQU0〜3 グローバル命令キュー更新信号
GIQP−NEW 新グローバル命令キューポインタ
EX−IV 演算命令コード有効信号
EX−INST 演算命令
EXP−NEW 新演算命令ポインタ
LSP−NEW 新ロードストア命令ポインタ
BRP−NEW 新分岐命令ポインタ
EX−PV 演算プレフィックス候補有効信号
LS−PV ロードストアプレフィックス候補有効信号
BR−PV 分岐プレフィックス候補有効信号
IREQ 命令フェッチ要求信号
EX−OK 演算命令ポインタの更新制御信号
LS−OK ロードストア命令ポインタの更新制御信号
BR−OK 分岐命令ポインタの更新制御信号
E 演算命令ビット
L ロードストア命令ビット
B 分岐命令ビット
P−DEC ポインタデコーダ
M0〜M3 命令コードマルチプレクサ
PE プライオリティエンコーダ
MOUT 出力命令コードマルチプレクサ
P−ADVポインタ更新回路
M0−CNTL〜M3−CNTL 命令コードマルチプレクサ制御信号
M0〜M3 命令コードマルチプレクサ
C0〜C3 探索対象命令コード

Claims (11)

  1. 後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャを有すると共にスーパースカラによる複数命令の並列的発行を行なうデータプロセッサであって、
    並列的にフェッチされた複数命令コードの命令コードタイプを判定するデコーダと、
    前記デコーダによる判定結果を伴って前記並列的にフェッチされた複数命令コードの単位で順次蓄積する命令キューと、
    前記命令キューから出力される複数命令コード単位でプレフィックスコードを除く命令コードタイプ毎の命令コードを探索し、探索結果に基づいて対応する命令コードタイプの命令デコード及び実行部に命令を出力するディスパッチ回路とを有し、
    前記ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する、データプロセッサ。
  2. 前記命令デコード及び実行部は、プレフィックスコード候補として供給された命令コードがプレフィックスコードでないときはこれを無視する、請求項1記載のデータプロセッサ。
  3. 前記命令デコード及び実行部は、プレフィックスコード候補として出力された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された目的命令コードタイプの命令コードのプレフィックスコード候補として用いる、請求項2記載のデータプロセッサ。
  4. 前記直前の命令コード及び後端の命令コードは、夫々複数の命令コードである、請求項1記載のデータプロセッサ。
  5. 後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
    前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令を含み、
    前記プレフィックスコードは、前記固定レジスタ使用命令に前置されて、前記固定レジスタを、命令で指定可能な他のレジスタに置換するように、前記固定レジスタ使用命令を修飾する、データプロセッサ。
  6. 後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
    前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令を含み、
    前記プレフィックスコードは、前記固定レジスタ使用命令に前置されて、前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する、データプロセッサ。
  7. 後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
    前記命令セットは、オペランドに関しデータサイズを有する命令を含み、
    前記プレフィックスコードは、前記オペランドサイズを有する命令に前置されて、前記命令のオペランドサイズを前記プレフィックスコードのオペランドサイズ指定フィールドで指定されるオペランドサイズの命令に変換するように、前記オペランドサイズを有する命令を修飾する、データプロセッサ。
  8. 前記プレフィックスコードは前記オペランドサイズを有する命令に対してそのリテラルフィールドを拡張する修飾を併せて行う、請求項7記載のデータプロセッサ。
  9. 前記プレフィックスコードは前記オペランドサイズを有する命令に対して前記指定フィールドで指定されたサイズのオペランドの上位側を符号付き又は符号無しで拡張する修飾を併せて行う、請求項7記載のデータプロセッサ。
  10. 後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記プレフィックスコードの定義が前記プレフィックスコードによって修飾される後続命令の種類によって変化する、データプロセッサ。
  11. 前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令であるとき前記プレフィックスコードは前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾し、
    前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令でないとき前記プレフィックスコードはオペランドサイズを変更又はリテラルを拡張するように、前記後続命令を修飾する、請求項10記載のデータプロセッサ。
JP2008231148A 2008-09-09 2008-09-09 データプロセッサ Active JP5357475B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008231148A JP5357475B2 (ja) 2008-09-09 2008-09-09 データプロセッサ
US12/546,809 US8402256B2 (en) 2008-09-09 2009-08-25 Processing prefix code in instruction queue storing fetched sets of plural instructions in superscalar processor
US13/782,271 US9116688B2 (en) 2008-09-09 2013-03-01 Executing prefix code to substitute fixed operand in subsequent fixed register instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008231148A JP5357475B2 (ja) 2008-09-09 2008-09-09 データプロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013179225A Division JP5657760B2 (ja) 2013-08-30 2013-08-30 データプロセッサ

Publications (2)

Publication Number Publication Date
JP2010066893A true JP2010066893A (ja) 2010-03-25
JP5357475B2 JP5357475B2 (ja) 2013-12-04

Family

ID=41800162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008231148A Active JP5357475B2 (ja) 2008-09-09 2008-09-09 データプロセッサ

Country Status (2)

Country Link
US (2) US8402256B2 (ja)
JP (1) JP5357475B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014509764A (ja) * 2011-04-01 2014-04-21 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
US9910674B2 (en) 2011-04-21 2018-03-06 Renesas Electronics Corporation Data processor with extended instruction code space including a prohibition combination pattern as a separate instruction
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2486739B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
JP5832963B2 (ja) 2012-06-29 2015-12-16 株式会社東芝 メモリシステム
US9058415B1 (en) * 2013-03-15 2015-06-16 Google Inc. Counting events using hardware performance counters and annotated instructions
US10761852B2 (en) * 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US9870305B2 (en) 2015-09-30 2018-01-16 International Business Machines Corporation Debugging of prefixed code
US10877759B2 (en) 2015-09-30 2020-12-29 International Business Machines Corporation Managing the capture of information in applications with prefix instructions
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
WO2019046723A1 (en) * 2017-08-31 2019-03-07 MIPS Tech, LLC RELATED ADDRESSING OF GLOBAL POINTER IMPLICIT FOR ACCESS TO GLOBAL MEMORY
US11119775B2 (en) * 2019-12-26 2021-09-14 Texas Instruments Incorporated Methods, apparatus, and systems to replace values in a device
TWI755744B (zh) * 2020-05-28 2022-02-21 芯鼎科技股份有限公司 控制命令列隊的裝置及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0651981A (ja) * 1992-08-03 1994-02-25 Hitachi Ltd データ処理装置
JPH07182163A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパスカラ命令デコード/発行装置
JPH07182162A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc 可変バイト長命令フォーマットを有するタイプのプロセッサのための命令キャッシュ
JP2000515275A (ja) * 1996-07-16 2000-11-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ
JP2004030015A (ja) * 2002-06-24 2004-01-29 Seiko Epson Corp 情報処理装置及び電子機器
JP2006302324A (ja) * 2006-08-15 2006-11-02 Renesas Technology Corp データ処理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
US5353420A (en) * 1992-08-10 1994-10-04 Intel Corporation Method and apparatus for decoding conditional jump instructions in a single clock in a computer processor
US5586277A (en) * 1994-03-01 1996-12-17 Intel Corporation Method for parallel steering of fixed length fields containing a variable length instruction from an instruction buffer to parallel decoders
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
EP0912923A1 (en) 1996-07-16 1999-05-06 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
JP3570287B2 (ja) 1999-03-31 2004-09-29 セイコーエプソン株式会社 マイクロコンピュータ
JP2001202243A (ja) * 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
US8438367B2 (en) * 2009-05-19 2013-05-07 Via Technologies, Inc. Instruction extraction through prefix accumulation
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0651981A (ja) * 1992-08-03 1994-02-25 Hitachi Ltd データ処理装置
JPH07182163A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパスカラ命令デコード/発行装置
JPH07182162A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc 可変バイト長命令フォーマットを有するタイプのプロセッサのための命令キャッシュ
JP2000515275A (ja) * 1996-07-16 2000-11-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ
JP2004030015A (ja) * 2002-06-24 2004-01-29 Seiko Epson Corp 情報処理装置及び電子機器
JP2006302324A (ja) * 2006-08-15 2006-11-02 Renesas Technology Corp データ処理装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014509764A (ja) * 2011-04-01 2014-04-21 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
US9513917B2 (en) 2011-04-01 2016-12-06 Intel Corporation Vector friendly instruction format and execution thereof
JP2017079078A (ja) * 2011-04-01 2017-04-27 インテル コーポレイション ベクトルフレンドリ命令フォーマット及びその実行
US10795680B2 (en) 2011-04-01 2020-10-06 Intel Corporation Vector friendly instruction format and execution thereof
US11210096B2 (en) 2011-04-01 2021-12-28 Intel Corporation Vector friendly instruction format and execution thereof
US11740904B2 (en) 2011-04-01 2023-08-29 Intel Corporation Vector friendly instruction format and execution thereof
US9910674B2 (en) 2011-04-21 2018-03-06 Renesas Electronics Corporation Data processor with extended instruction code space including a prohibition combination pattern as a separate instruction
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks

Also Published As

Publication number Publication date
JP5357475B2 (ja) 2013-12-04
US20130246765A1 (en) 2013-09-19
US9116688B2 (en) 2015-08-25
US20100064119A1 (en) 2010-03-11
US8402256B2 (en) 2013-03-19

Similar Documents

Publication Publication Date Title
JP5357475B2 (ja) データプロセッサ
JP4986431B2 (ja) プロセッサ
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
JP2816248B2 (ja) データプロセッサ
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JP2616182B2 (ja) データ処理装置
USRE40509E1 (en) Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
MX2007014522A (es) Almacenamiento en memoria cache de instrucciones para un procesador de estado multiple.
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
CN113590197A (zh) 一种支持可变长向量处理的可配置处理器及其实现方法
JP4228241B2 (ja) 演算処理装置
JP5658358B2 (ja) データプロセッサ
JP4502532B2 (ja) データ処理装置
JP2002229778A (ja) 高速ディスプレースメント付きpc相対分岐方式
JP5657760B2 (ja) データプロセッサ
JP2556182B2 (ja) デ−タ処理装置
US20150095616A1 (en) Data processor
CN112559037B (zh) 一种指令执行方法、单元、装置及系统
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
Bik et al. A case study on compiler optimizations for the Intel® Core TM 2 Duo Processor
CN111813447A (zh) 一种数据拼接指令的处理方法和处理装置
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP2004152049A (ja) データ処理装置
JP2956707B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130710

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130830

R150 Certificate of patent or registration of utility model

Ref document number: 5357475

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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