JP6011194B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6011194B2
JP6011194B2 JP2012208692A JP2012208692A JP6011194B2 JP 6011194 B2 JP6011194 B2 JP 6011194B2 JP 2012208692 A JP2012208692 A JP 2012208692A JP 2012208692 A JP2012208692 A JP 2012208692A JP 6011194 B2 JP6011194 B2 JP 6011194B2
Authority
JP
Japan
Prior art keywords
store instruction
flag
write
cache
instruction
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.)
Expired - Fee Related
Application number
JP2012208692A
Other languages
English (en)
Other versions
JP2014063385A (ja
Inventor
英喜 大河原
英喜 大河原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012208692A priority Critical patent/JP6011194B2/ja
Priority to US13/950,333 priority patent/US20140089599A1/en
Publication of JP2014063385A publication Critical patent/JP2014063385A/ja
Application granted granted Critical
Publication of JP6011194B2 publication Critical patent/JP6011194B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/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
    • 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/3824Operand accessing
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
従来、連続したアドレスのデータ領域に対する連続アクセスであるストリームアクセスの性能向上のための技術に、ハードウェアプリフェッチ技術がある。ハードウェアプリフェッチ技術は、キャッシュライン単位(例えば128バイトなど)で連続アクセスがあることをハードウェアで検出し、将来必要になるであろうデータを事前にキャッシュメモリに登録すべくプリフェッチを行う技術である。
マイクロプロセッサに書き込みバッファを配置し、メモリへの書き込みを書き込みバッファに記憶し、メモリバスやキャッシュメモリが使用できるときに書き込みバッファの内容をキャッシュメモリ又はメインメモリに非同期で書き込む技術が提案されている(例えば、特許文献1参照)。また、ストアデータを保持するストアバッファ及びライトバッファを有し、ストアバッファからライトバッファへストアデータを転送させる際に、ストアデータのマージ処理を行う技術が提案されている(例えば、特許文献2参照)。
特開平7−152566号公報 特開2006−48163号公報
ハードウェアプリフェッチ技術は、キャッシュメモリにキャッシュミスが発生するキャッシュミスケースにおける主記憶装置等へのアクセスレーテンシによる性能オーバーヘッドを隠蔽することが可能である。しかし、ハードウェアプリフェッチ技術は、キャッシュメモリにヒットするキャッシュヒットケースにおけるストリームアクセスの性能向上の効果はない。
また、ストリームアクセスが完了したことをハードウェアにより検出することは難しい。そのため、ハードウェアプリフェッチ技術を用いると、ストリームアクセスの最後には不要なデータまでプリフェッチしてしまうのが一般的であり、ハードウェアプリフェッチと同様な手法では、より細かい数命令単位でストリームアクセスを高精度に検出するのは難しいという課題があった。さらに、キャッシュメモリへの書き込み回数を低減することは行われなかったため、消費電力を低減させるという発想がなかった。
1つの側面では、本発明の目的は、演算処理装置におけるストリームアクセスの性能を向上させるとともに消費電力を低減することにある。
演算処理装置の一態様は、プログラムをデコードしデコード結果に応じて命令を発行する命令発行部と、キャッシュ書込み抑止フラグを設けた複数のエントリを有し、キャッシュメモリに対するストア命令による書き込み処理要求をエントリに登録し、登録されている書き込み処理要求の内からキャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力するバッファ部と、バッファ部から出力された書き込み処理要求を受けて、キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行うパイプライン処理部とを備える。バッファ部は、供給されるストア命令に付加されている第1のフラグが設定されているとともに第2のフラグが設定されてなく、かつ当該ストア命令に示されるアクセスアドレス及びデータ長に基づいて、当該ストア命令が1回のパイプライン処理で書き込み可能な連続データ長における最後のデータに係るストア命令でないと判断した場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、キャッシュ書込み抑止フラグを設定状態にしストア命令による書き込み処理要求をエントリに登録する。また、バッファ部は、同一のデータ領域に対するストア命令による書き込み処理要求を1つの書き込み処理要求にまとめて保持する。
発明の一態様においては、同一のデータ領域に対するストア命令による書き込み処理要求が1つの書き込み処理要求にまとめられ、キャッシュメモリに対する書き込み回数を削減して性能を向上させることができるとともに消費電力を低減することができる。
本発明の実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるキャッシュ書き込み処理キューの構成例を示す図である。 本実施形態におけるストア命令のキャッシュ書き込み処理キューへの登録処理を示すフローチャートである。 本実施形態におけるキャッシュアクセスのパイプライン動作の一例を示す図である。 従来技術でのキャッシュアクセスのパイプライン動作の一例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
演算処理装置では、ロード命令やストア命令が実行されると、その命令単位でキャッシュメモリに対する読み書きを行っていた。そのため、ストリームアクセスでは、連続したデータ領域に対して、キャッシュパイプライン処理やキャッシュメモリに対する読み書き処理が命令単位で繰り返すように行われていた。
以下に説明する本実施形態における演算処理装置は、ストリームアクセスにおける複数のストア命令によるキャッシュメモリへの複数の書き込み処理を1つの書き込み処理にまとめて実行する。キャッシュメモリに対する複数の書き込み処理を1つの書き込み処理にまとめて実行することで、キャッシュメモリに対する書き込み回数を削減して、性能を向上させるとともに消費電力を低減する。
図1は、本実施形態における演算処理装置の構成例を示すブロック図である。本実施形態における演算処理装置は、命令発行部11、ロード・ストア命令キュー12、キャッシュ書き込み処理キュー(Write Buffer)13、パイプライン処理発行部・調停部14、パイプライン実行制御部15、及びキャッシュメモリ部16を有する。
命令発行部11は、主記憶装置等から読み出されたプログラムをデコードして命令を発行する。命令発行部11から発行された命令が、メモリ等からデータを読み出すロード命令LDIやメモリ等にデータを書き込むストア命令STIであれば、その命令LDI/STIがロード・ストア命令キュー12に入る。なお、図1においては、ロード命令LDI及びストア命令STIでない命令については省略しているが、命令発行部11からは演算器等の各機能部に対する演算処理命令等の他の処理命令も発行される。
ロード・ストア命令キュー12は、ロード命令LDIが命令発行部11から入ると、そのロード命令LDIに応じたキャッシュ読み出し処理要求RDREQをパイプライン処理発行部・調停部14に出力する。また、ロード・ストア命令キュー12は、ストア命令STIが命令発行部11から入って実行することが確定される、すなわちコミット(commit)されると、そのコミット済みストア命令CSTIをキャッシュ書き込み処理キュー13に出力する。
キャッシュ書き込み処理キュー13は、コミット済みストア命令CSTIを、演算器等から供給される書き込みデータ(ストアデータ)とともに、キャッシュ書き込み待ちのキャッシュ書き込み処理要求として滞留させる。また、キャッシュ書き込み処理キュー13は、滞留しているキャッシュ書き込み処理要求がキャッシュ書き込み可能な状態になると、キャッシュ書き込み処理要求WRREQをパイプライン処理発行部・調停部14に出力する。例えば、キャッシュ書き込み処理キュー13は、キャッシュミスなどの要因で即座にキャッシュ書き込み処理が起動できない場合には、キャッシュ書き込み可能な状態になるまで要求を滞留させ続ける。そして、キャッシュ書き込み可能な状態になった時点で、キャッシュ書き込み処理キュー13は、キャッシュ書き込み処理要求WRREQを出力する。
さらに、本実施形態ではキャッシュ書き込み処理キュー13のエントリ毎にストリームウェイト(stream_wait)フラグを設け、キャッシュ書き込み処理キュー13は、登録されているキャッシュ書き込み処理要求の出力を、ストリームウェイトフラグに応じて制御する。キャッシュ書き込み処理キュー13は、ストリームウェイトフラグが立っている(値が“1”である)場合には、キャッシュ書き込み可能な状態であってもキャッシュ書き込み処理要求の出力を抑止して滞留させ続ける。また、入力された後続のストア命令のアクセス先が、滞留している先行のストア命令によるキャッシュ書き込み処理要求でアクセス可能なデータ領域に含まれる場合には、キャッシュ書き込み処理キュー13は、先行のキャッシュ書き込み処理要求と後続のストア命令をマージして1つのキャッシュ書き込み処理要求にまとめた状態で保持する。
パイプライン処理発行部・調停部14は、ロード・ストア命令キュー12からのキャッシュ読み出し処理要求RDREQ及びキャッシュ書き込み処理キュー13からのキャッシュ書き込み処理要求WRREQを受ける。パイプライン処理発行部・調停部14は、キャッシュ読み出し処理要求RDREQやキャッシュ書き込み処理要求WRREQに基づいて、一次キャッシュメモリへのアクセスに係るパイプライン処理PLを発行する。また、パイプライン処理発行部・調停部14は、パイプライン処理の発行に際し、キャッシュメモリ部16におけるキャッシュミス等に応じて内部的な処理の調停を行う。
パイプライン実行制御部15は、パイプライン処理発行部・調停部14から発行されたパイプライン処理PLに応じて、キャッシュメモリ部16に対してデータを読み出すキャッシュ読み出し処理RDやデータを書き込むキャッシュ書き込み処理WRを実行する。キャッシュメモリ部16は、複数のRAM(Random Access Memory)を有する。
図2は、本実施形態におけるキャッシュ書き込み処理キューの内部構成例を示すブロック図である。図2において、図1に示した構成要素と同一の構成要素には同一の符号を付し、重複する説明は省略する。キャッシュ書き込み処理キュー13は、フラグ設定部21、エントリ部22、及びパイプライン投入要求選択部28を有する。
フラグ設定部21は、コミット済みストア命令CSTIに付加されているストリーム(stream)フラグSFLG及びストリーム完了(stream_complete)フラグSCFLGを参照し、フラグSFLG、SCFLGの値に応じてストリームウェイトフラグの設定を行う。なお、ロード・ストア命令キュー12から出力されるコミット済みストア命令CSTIには、ストアデータ、アクセスアドレス、データ長(データ幅)の情報が含まれる。
ここで、本実施形態において、ストア命令には、ストリームフラグSFLG及びストリーム完了フラグSCFLGが付加されている。ストリームフラグSFLG及びストリーム完了フラグSCFLGは、先行のストア命令によりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があるか否かを判断するために、ストア命令単位でストリームアクセスに係る状態をソフトウェア(プログラム側)からハードウェアに指示するためのものである。
ストリームアクセスであることを示すストリームフラグSFLGは、ストリームアクセスである場合には値が“1”であり、非ストリームアクセスである場合には値が“0”である。また、ストリームアクセスの完了を示すストリーム完了フラグSCFLGは、ストリームアクセスの最後のストア命令STIでは値が“1”であり、それ以外(非ストリームアクセスを含む)のストア命令STIでは値が“0”である。
すなわち、ストリームアクセス継続中のストア命令は、プログラム側で、ストリームフラグSFLGの値が“1”にされ、ストリーム完了フラグSCFLGの値が“0”にされて発行される。ストリームアクセス完了時、つまりストリームアクセスの最後のストア命令は、プログラム側で、ストリームフラグSFLGの値が“1”にされ、ストリーム完了フラグSCFLGの値が“1”にされて発行される。また、非ストリームアクセスにおけるストア命令は、プログラム側で、ストリームフラグSFLG及びストリーム完了フラグSCFLGの値がともに“0”にされて発行される。
フラグ設定部21は、コミット済みストア命令CSTIに付加されたストリームフラグSFLG及びストリーム完了フラグSCFLGに基づいて、このストア命令CSTIによりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があるか否かを判定する。フラグ設定部21は、その判定結果と、ストア命令CSTIで示されるアクセスアドレス及びデータ長に応じて、以下のようにストリームウェイトフラグの設定を行う。以下に説明するフラグ設定部21によるストリームウェイトフラグの設定は、例えばストリームフラグSFLG、ストリーム完了フラグSCFLG、データ長に応じたアクセスアドレスの下位ビット値を用いた論理演算回路を用いて実現される。
(A)コミット済みストア命令CSTIに付加されたストリームフラグSFLGの値が“1”かつストリーム完了フラグSCFLGの値が“0”である場合
(A−1)フラグ設定部21は、ストア命令CSTIで示されるアクセスアドレス及びデータ長に基づいて、キャッシュ書き込み可能な連続データ長での最後のデータに対するストア命令でない場合には、同一のデータ領域に対する後続のストア命令があると判定する。このストア命令CSTIによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー13のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を抑止するために、フラグ設定部21は、当該エントリのストリームウェイトフラグの値を“1”に設定する。
例えば、同時キャッシュ書き込み可能な連続データ長が16バイトである場合、ストア命令CSTIで示されるデータ長が1バイトのときには、アクセスアドレスの下位4ビットの値が“0xF”以外であれば16バイト幅での最後のストア命令ではない。同様に、ストア命令CSTIで示されるデータ長が4バイトのときには、アクセスアドレスの下位4ビットの値が“0xC”以外であれば16バイト幅での最後のストア命令ではない。そのため、フラグ設定部21は、ストリームウェイトフラグの値を“1”に設定し、キャッシュ書き込み処理要求の出力を抑止し滞留させる。同時キャッシュ書き込み可能な連続データ長は、WriteBuffer部のエントリ構成や、キャッシュメモリ部のRAM構成などの、ハードウェア実装によって決まる。
(A−2)フラグ設定部21は、ストア命令CSTIで示されるアクセスアドレス及びデータ長に基づいて、キャッシュ書き込み可能な連続データ長での最後のデータに対するストア命令である場合には、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令CSTIによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー13のエントリに登録するとき、フラグ設定部21は、当該エントリのストリームウェイトフラグの値を“0”に設定する。この状態は、ストリーム完了フラグSCFLGの値が“0”であるが、ハードウェア制御上、キャッシュ書き込み処理要求をこれ以上滞留させても性能は改善されないため、ストリームウェイトフラグの値を“0”に設定する。
例えば、同時キャッシュ書き込み可能な連続データ長が16バイトである場合、ストア命令CSTIで示されるデータ長が1バイトのときには、アクセスアドレスの下位4ビットの値が“0xF”であれば16バイト幅での最後のストア命令である。同様に、ストア命令CSTIで示されるデータ長が4バイトのときには、アクセスアドレスの下位4ビットの値が“0xC”であれば16バイト幅での最後のストア命令である。そのため、フラグ設定部21は、ストリームウェイトフラグの値を“0”に設定し、キャッシュ書き込み処理要求の出力を可能にする。
(B)コミット済みストア命令CSTIに付加されたストリームフラグSFLGの値が“1”かつストリーム完了フラグSCFLGの値が“1”である場合
フラグ設定部21は、ストリームアクセスが完了し、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令CSTIによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー13のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を可能にするために、フラグ設定部21は、当該エントリのストリームウェイトフラグの値を“0”に設定する。
(C)コミット済みストア命令CSTIに付加されたストリームフラグSFLGの値が“0”である場合
フラグ設定部21は、ストリームアクセスではなく、同一のデータ領域に対する後続のストア命令がないと判定する。このストア命令CSTIによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー13のエントリに登録するとき、当該エントリからのキャッシュ書き込み処理要求の出力を可能にするために、フラグ設定部21は、当該エントリのストリームウェイトフラグの値を“0”に設定する。
エントリ部22は、ストア命令CSTIによるキャッシュ書き込み処理要求が登録される複数のエントリを有する。図2には、エントリ0〜エントリ3の4つのエントリを有するエントリ部22を一例として示しているが、エントリの数は任意である。各エントリは、書き込むデータであるストアデータ23、書き込み先を示すアドレス24、書き込むデータのバイト位置を示すストアバイト情報25、各種制御に用いられる制御フラグ26、及びストリームウェイトフラグ27を有する。キャッシュ書き込み処理キュー13では、ストリームフラグSFLGの値が“1”のストア命令CSTIを受けると、ストア命令CSTIに示されるアクセスアドレスと各エントリのアドレス24とを比較し、同一のデータ領域に対するエントリがあればストア命令CSTIをマージして1つにまとめる。
パイプライン投入要求選択部28は、エントリ部22の各エントリのストリームウェイトフラグ27を参照し、その値に応じてエントリに基づくキャッシュ書き込み処理要求WRREQをパイプライン処理発行部・調停部14に出力する。パイプライン投入要求選択部28は、キャッシュ書き込み可能な状態であるストリームウェイトフラグ27の値が“0”であるエントリがあると、そのエントリに基づくキャッシュ書き込み処理要求WRREQをパイプライン処理発行部・調停部14に出力する。
図3は、本実施形態におけるストア命令のキャッシュ書き込み処理キュー13への登録処理を示すフローチャートである。
ストリームフラグSFLG及びストリーム完了フラグSCFLGが付加されたコミット済みストア命令CSTIがキャッシュ書き込み処理キュー13に入力されると、フラグ設定部21がストリームフラグSFLGの値を確認する(S11)。ストリームフラグSFLGの値が“0”であれば、フラグ設定部21が非ストリームアクセスであると判定してストリームウェイトフラグの値が“0”に設定され、ストア命令CSTIによるキャッシュ書き込み処理要求がエントリに登録される(S12)。
一方、ストリームフラグSFLGの値が“1”の場合には、次にフラグ設定部21がストリーム完了フラグSCFLGの値を確認する(S13)。ストリーム完了フラグSCFLGの値が“1”であれば、フラグ設定部21がストリームアクセスの完了であると判定してストリームウェイトフラグの値が“0”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令CSTIによるキャッシュ書き込み処理要求がマージされてエントリに登録される(S14)。
ステップS13での判定の結果、ストリーム完了フラグSCFLGの値が“0”の場合には、次にフラグ設定部21がストア命令CSTIで示されるアクセスアドレス及びデータ長に基づいてキャッシュ書き込み可能な連続データ長での最後のデータであるか否かを確認する(S15)。ストア命令CSTIがキャッシュ書き込み可能な連続データ長での最後のデータのものであれば、フラグ設定部21によりストリームウェイトフラグの値が“0”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令CSTIによるキャッシュ書き込み処理要求がマージされてエントリに登録される(S14)。一方、ストア命令CSTIがキャッシュ書き込み可能な連続データ長での最後のデータのものでなければ、フラグ設定部21によりストリームウェイトフラグの値が“1”に設定され、先行のストア命令によるキャッシュ書き込み処理要求とストア命令CSTIによるキャッシュ書き込み処理要求がマージされてエントリに登録される(S16)。
本実施形態によれば、ストア命令CSTIによりアクセスされるデータ領域と同一のデータ領域に対する後続のストア命令があると判定した場合には、ストリームウェイトフラグを設定して(値を“1”にして)、ストア命令CSTIによるキャッシュ書き込み処理要求をキャッシュ書き込み処理キュー13のエントリに登録する。ストリームウェイトフラグを設定することにより、キャッシュ書き込み可能な状態であっても、そのエントリからのキャッシュ書き込み処理要求の出力を抑止してキャッシュ書き込み処理キュー13に滞留させ続ける。そして、同一のデータ領域に対する後続のストア命令がコミットされると、滞留されている先行のキャッシュ書き込み処理要求と後続のストア命令をマージして1つのキャッシュ書き込み処理要求にまとめて保持する。これにより、ストリームアクセスのストア命令により出力されるキャッシュ書き込み処理要求が減少し、キャッシュアクセスに係るパイプラインの使用数及びキャッシュメモリに対する書き込み回数が削減できる。したがって、演算処理装置におけるストリームアクセスの性能を向上させるとともに消費電力を低減することが可能になる。
例えば、1サイクルにキャッシュ書き込み可能な連続データ長が16バイトである場合に、16進数表記でアドレス0x000〜0x012をアクセス先とする1バイトのストア命令によるストリームアクセスと、アドレス0x110、0x111をアクセス先とする1バイトのロード命令を実行するとする。この場合、ストア命令毎にキャッシュ書き込み処理要求が出力されると、図5に示すように各サイクルにおいてパイプライン処理が投入される。
一方、本実施形態によれば、図4に示すように、アドレス0x000〜0x00Fをアクセス先とする16個の1バイトのストア命令、及びアドレス0x010〜0x012をアクセス先とする3個の1バイトのストア命令を、それぞれを1回のキャッシュ書き込み処理要求にまとめてパイプライン処理が投入される。したがって、キャッシュアクセスに係るパイプラインの使用効率を向上させることができるとともに、キャッシュメモリに対する書き込み回数を削減することができる。
なお、図4及び図5においては、キャッシュアクセスに係るパイプラインが、「P(Priority)」、「T(Tag)」、「M(Match)」、「B(BufferRead)」、及び「R(Result)」の5段パイプラインである例を示している。Pステージではプライオリティ論理回路が実行する命令の優先順位を決定し、Tステージではキャッシュメモリにアクセスしてタグの読み出しを行い、Mステージではタグのマッチング処理を行う。また、Bステージではデータを選択してバッファに格納し、Rステージではデータの転送を行う。
また、例えば、1サイクルにキャッシュ書き込み可能な連続データ長が32バイトである場合に、1バイトのストア命令によるストリームアクセスでは32個のストア命令を、4バイトのストア命令によるストリームアクセスでは8個のストア命令を、1回のキャッシュ書き込み処理要求にまとめることができる。
なお、前述した本実施形態では、フラグ設定部21が、ストリーム完了フラグSCFLGの値や、ストア命令CSTIで示されるアクセスアドレス及びデータ長に基づいて、ストリームウェイトフラグの値を“0”に設定する。これ以外にも、ストリームウェイトフラグの値が“1”のままである一定の数の命令数を受けた場合や、キャッシュ書き込み処理キュー13のエントリに空きがなくなった場合に、フラグ設定部21がストリームウェイトフラグの値を強制的に“0”に設定するようにしても良い。このようにした場合には、プログラムミスにより、ストリームアクセスの最後のストア命令においてストリーム完了フラグSCFLGの値が“0”とされても、キャッシュ書き込み処理キュー13にキャッシュ書き込み処理要求が滞留し続けることを防止することができる。
また、キャッシュ書き込み処理キュー13のフラグ設定部21において、同一のデータ領域に対する後続のストア命令があるか否かを判定する手法として、以下のような手法を適用しても良い。プログラム側では、ストア命令に対してストリームアクセスであることを示すストリームフラグSFLGのみを付加させる。命令発行部11として機能するハードウェアが、実行しているプログラムでのループ処理が最内のループを回っている間(例えば、分岐予測TAKENが続いている間)を同様の処理が続いていると判断して、命令発行部11が値“0”のストリーム完了フラグSCFLGの情報を生成しストア命令を発行する。また、そのハードウェアが、最内のループの処理が完了したと判断した場合(例えば、分岐予測NOT−TAKENの場合)に、命令発行部11が値“1”のストリーム完了フラグSCFLGの情報を生成しストア命令を発行する。
また、プログラムとは命令の実行順序が入れ違う可能性のある、いわゆるアウトオブオーダーの演算処理装置の場合には、ストリームウェイトフラグの値を“1”から“0”に変更するようなストア命令は、同一のデータ領域に対する他のストア命令のすべてが実行された後に実行するようにすれば良い。これにより、同一のデータ領域に対するストア命令のすべてが実行される前に、ストリームウェイトフラグの値が“1”から“0”に変更されてキャッシュ書き込み処理要求が出力されてしまうことを防止することができる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
11 命令発行部
12 ロード・ストア命令キュー
13 キャッシュ書き込み処理キュー
14 パイプライン処理発行部・調停部
15 パイプライン実行制御部
16 キャッシュメモリ部
21 フラグ設定部
22 エントリ部
23 ストアデータ
24 アドレス
27 ストリームウェイトフラグ
28 パイプライン投入要求選択部

Claims (7)

  1. プログラムをデコードし、デコード結果に応じて命令を発行する命令発行部と、
    キャッシュ書込み抑止フラグを設けた複数のエントリを有し、前記命令発行部から発行された前記命令がストア命令である場合に、キャッシュメモリに対する当該ストア命令による書き込み処理要求を前記エントリに登録し、登録されている書き込み処理要求の内からキャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力するバッファ部と、
    前記バッファ部から出力された書き込み処理要求を受けて、前記キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行うパイプライン処理部とを備え、
    前記バッファ部は、供給される前記ストア命令に付加されている第1のフラグが設定されているとともに第2のフラグが設定されてなく、かつ当該ストア命令に示されるアクセスアドレス及びデータ長に基づいて、当該ストア命令が1回の前記パイプライン処理で書き込み可能な連続データ長における最後のデータに係るストア命令でないと判断した場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、前記キャッシュ書込み抑止フラグを設定状態にし前記ストア命令による書き込み処理要求を前記エントリに登録するとともに、同一のデータ領域に対する前記ストア命令による書き込み処理要求を1つの書き込み処理要求にまとめて保持することを特徴とする演算処理装置。
  2. 前記バッファ部は、供給される前記ストア命令に付加されている前記第1のフラグ及び前記第2のフラグがともに設定されている場合には、当該ストア命令が同一のデータ領域に対する前記ストア命令の内の最後のストア命令であると判断して、前記ストア命令による書き込み処理要求を前記エントリに登録するときに前記キャッシュ書込み抑止フラグを非設定状態にすることを特徴とする請求項1記載の演算処理装置。
  3. 前記バッファ部は、供給される前記ストア命令に付加されている第1のフラグが設定されているとともに第2のフラグが設定されてなく、かつ当該ストア命令に示されるアクセスアドレス及びデータ長に基づいて、当該ストア命令が1回の前記パイプライン処理で書き込み可能な連続データ長における最後のデータに係るストア命令であると判断した場合には、前記ストア命令による書き込み処理要求を前記エントリに登録するときに前記キャッシュ書込み抑止フラグを非設定状態にすることを特徴とする請求項2記載の演算処理装置。
  4. 前記第1のフラグは、連続したデータ領域に対する連続アクセスであるストリームアクセスを示すフラグであることを特徴とする請求項1〜3の何れか1項に記載の演算処理装置。
  5. 前記第1のフラグは、連続したデータ領域に対する連続アクセスであるストリームアクセスを示すフラグであり、
    前記第2のフラグは、前記ストリームアクセスの完了を示すフラグであることを特徴とする請求項2又は3記載の演算処理装置。
  6. 演算処理装置の命令発行部がプログラムをデコードしてデコード結果に応じた命令を発行し、
    前記発行された命令がストア命令である場合に、キャッシュ書込み抑止フラグを設けた複数のエントリを有する前記演算処理装置のバッファ部が、キャッシュメモリに対する当該ストア命令による書き込み処理要求を前記エントリに登録し、
    前記バッファ部が、前記エントリに登録されている書き込み処理要求の内から前記キャッシュ書込み抑止フラグが非設定状態の書き込み処理要求を出力し、
    前記演算処理装置のパイプライン処理部が、前記出力された書き込み処理要求を受けて、前記キャッシュメモリに対しデータ書き込みに係るパイプライン処理を行い、
    前記バッファ部が、前記エントリに前記書き込み処理要求を登録する際、前記ストア命令に付加されている第1のフラグが設定されているとともに第2のフラグが設定されてなく、かつ当該ストア命令に示されるアクセスアドレス及びデータ長に基づいて、当該ストア命令が1回の前記パイプライン処理で書き込み可能な連続データ長における最後のデータに係るストア命令でないと判断した場合には、当該ストア命令と同一のデータ領域に対する後続のストア命令があると判断して、前記キャッシュ書込み抑止フラグを設定状態にし、同一のデータ領域に対する前記ストア命令による書き込み処理要求を1つの書き込み処理要求にまとめて保持することを特徴とする演算処理装置の制御方法。
  7. 前記演算処理装置のバッファ部が、前記キャッシュ書込み抑止フラグが設定状態で登録された場合であって、前記書き込み処理要求が前記キャッシュ書込み抑止フラグが設定状態のまま所定期間が経過したとき、又は、前記演算処理装置のバッファ部のエントリに空きがなくなったとき、前記キャッシュ書込み抑止フラグを初期化することを特徴とする請求項6記載の演算処理装置の制御方法。
JP2012208692A 2012-09-21 2012-09-21 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP6011194B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012208692A JP6011194B2 (ja) 2012-09-21 2012-09-21 演算処理装置及び演算処理装置の制御方法
US13/950,333 US20140089599A1 (en) 2012-09-21 2013-07-25 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012208692A JP6011194B2 (ja) 2012-09-21 2012-09-21 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2014063385A JP2014063385A (ja) 2014-04-10
JP6011194B2 true JP6011194B2 (ja) 2016-10-19

Family

ID=50340088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012208692A Expired - Fee Related JP6011194B2 (ja) 2012-09-21 2012-09-21 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20140089599A1 (ja)
JP (1) JP6011194B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320460A (zh) * 2014-06-27 2016-02-10 中兴通讯股份有限公司 一种写性能优化方法、装置及存储系统
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US9858189B2 (en) * 2015-06-24 2018-01-02 International Business Machines Corporation Hybrid tracking of transaction read and write sets
JP6680978B2 (ja) * 2016-04-15 2020-04-15 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10031810B2 (en) * 2016-05-10 2018-07-24 International Business Machines Corporation Generating a chain of a plurality of write requests
US10067717B2 (en) 2016-05-10 2018-09-04 International Business Machines Corporation Processing a chain of a plurality of write requests
US10613771B2 (en) 2017-02-27 2020-04-07 International Business Machines Corporation Processing a write of records to maintain atomicity for writing a defined group of records to multiple tracks
US10606719B2 (en) * 2017-02-27 2020-03-31 International Business Machines Corporation Mirroring writes of records to maintain atomicity for writing a defined group of records to multiple tracks
CN107239237A (zh) * 2017-06-28 2017-10-10 阿里巴巴集团控股有限公司 数据写入方法及装置和电子设备
US20210055954A1 (en) * 2018-02-02 2021-02-25 Dover Microsystems, Inc. Systems and methods for post cache interlocking
US11409530B2 (en) * 2018-08-16 2022-08-09 Arm Limited System, method and apparatus for executing instructions
JP7151439B2 (ja) * 2018-12-06 2022-10-12 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN109918043B (zh) * 2019-03-04 2020-12-08 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
US11921637B2 (en) 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
JP2021015384A (ja) * 2019-07-10 2021-02-12 富士通株式会社 情報処理回路、情報処理装置、情報処理方法及び情報処理プログラム
CN110688155A (zh) * 2019-09-11 2020-01-14 上海高性能集成电路设计中心 一种访问不可缓存区域的存储指令的合并方法
US11321354B2 (en) * 2019-10-01 2022-05-03 Huawei Technologies Co., Ltd. System, computing node and method for processing write requests
CN114637609B (zh) * 2022-05-20 2022-08-12 沐曦集成电路(上海)有限公司 基于冲突检测的gpu的数据获取系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130519T2 (de) * 1990-06-29 1999-06-10 Digital Equipment Corp Hochleistungsfähiger Multiprozessor mit Gleitkommaeinheit und Verfahren zu seinem Betrieb
DE69130495T2 (de) * 1990-06-29 1999-06-24 Digital Equipment Corp Umwandlung der Befehle von internen Prozessorregistern in I/O-Adressraum
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5860107A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
JP2006048163A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd ストアデータ制御装置およびストアデータ制御方法
US8458282B2 (en) * 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
JP2009134391A (ja) * 2007-11-29 2009-06-18 Renesas Technology Corp ストリーム処理装置、ストリーム処理方法及びデータ処理システム
JP4569628B2 (ja) * 2007-12-28 2010-10-27 日本電気株式会社 ロードストアキューの制御方法及びその制御システム
US9201655B2 (en) * 2008-03-19 2015-12-01 International Business Machines Corporation Method, computer program product, and hardware product for eliminating or reducing operand line crossing penalty
JP2010134628A (ja) * 2008-12-03 2010-06-17 Renesas Technology Corp メモリコントローラおよびデータ処理装置

Also Published As

Publication number Publication date
US20140089599A1 (en) 2014-03-27
JP2014063385A (ja) 2014-04-10

Similar Documents

Publication Publication Date Title
JP6011194B2 (ja) 演算処理装置及び演算処理装置の制御方法
US11853763B2 (en) Backward compatibility by restriction of hardware resources
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US10235219B2 (en) Backward compatibility by algorithm matching, disabling features, or throttling performance
KR101183651B1 (ko) 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법
US8984261B2 (en) Store data forwarding with no memory model restrictions
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
JP4230504B2 (ja) データプロセッサ
US11132202B2 (en) Cache control circuitry and methods
JP2009099097A (ja) データ処理装置
JPH0496825A (ja) データ・プロセッサ
JP2008107983A (ja) キャッシュメモリ
JP2532300B2 (ja) 並列処理装置における命令供給装置
GB2540940A (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
JP4243271B2 (ja) データ処理装置およびデータ処理方法
JPH04153734A (ja) 並列処理装置
JP7020304B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20150052306A1 (en) Processor and control method of processor
US20080282033A1 (en) Processing function connected to processor memory hierarchy
JP5229383B2 (ja) プリフェッチ要求回路
JP6344022B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6340887B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2021166010A (ja) 演算処理装置
JP2001243066A (ja) パイプライン処理方法並びにその方法を利用するパイプライン処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160801

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160905

R150 Certificate of patent or registration of utility model

Ref document number: 6011194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees