JP7070384B2 - 演算処理装置、メモリ装置、及び演算処理装置の制御方法 - Google Patents

演算処理装置、メモリ装置、及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP7070384B2
JP7070384B2 JP2018231101A JP2018231101A JP7070384B2 JP 7070384 B2 JP7070384 B2 JP 7070384B2 JP 2018231101 A JP2018231101 A JP 2018231101A JP 2018231101 A JP2018231101 A JP 2018231101A JP 7070384 B2 JP7070384 B2 JP 7070384B2
Authority
JP
Japan
Prior art keywords
data
unit
instruction
tag
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018231101A
Other languages
English (en)
Other versions
JP2020095345A (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 JP2018231101A priority Critical patent/JP7070384B2/ja
Priority to US16/706,900 priority patent/US11327768B2/en
Publication of JP2020095345A publication Critical patent/JP2020095345A/ja
Application granted granted Critical
Publication of JP7070384B2 publication Critical patent/JP7070384B2/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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/3001Arithmetic 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本願開示は、演算処理装置、メモリ装置、及び演算処理装置の制御方法に関する。
近年の汎用プロセッサでは、オペランド及び命令を格納するためのキャッシュメモリ(以下、単に「キャッシュ」という)をプロセッサコア内に設けることが一般的である。短レイテンシでアクセス可能なコア内キャッシュにアクセス頻度の高いデータを格納することにより、メモリアクセスに掛かる時間を短縮し、プロセッサの性能を向上することができる。
キャッシュメモリでは、複数のインデックスの各々に対応してキャッシュ内のデータ格納領域が設けられる。アクセス先アドレスの全ビットのうちで下位側の所定数のビットがインデックスとして用いられ、当該アクセス先アドレスのデータが当該インデックスに対応するキャッシュ領域に格納される。
キャッシュへのデータ格納方式としては、キャッシュヒット率(アクセスしたデータがキャッシュに格納されている確率)とキャッシュ構造の複雑度のバランスに優れるセットアソシアティブ方式が多く用いられる。セットアソシアティブ方式では、各々が独立したキャッシュ内のデータ格納領域である複数のブロックを1つのセットにまとめ、1つのセットを1つのインデックスに対応させる。ある1つのインデックスに対応するメモリ空間内の複数のデータを、当該インデックスに対応するセット内の対応する複数のブロックにそれぞれ格納する。1つのセットの複数のブロックにはそれぞれ対応するキャッシュタグ(以下、単に「タグ」という)が設けられており、1つのブロックに着目した場合、当該ブロックに格納されているデータに対応するアクセス先アドレスの全ビットのうちの上位側ビットが、当該ブロックに対応するタグに格納されている。
1セットに含まれる各ブロックをキャッシュウェイ(cache way)またはウェイ(way)と呼び、ブロックに含まれるウェイの数をウェイ数と呼ぶ。インデックスはセットの識別子となる。セットアソシアティブ方式のキャッシュは、データを格納するデータ部と、各インデックスのどのウェイにどのデータが格納されているかを記録するタグ部とを含む。
キャッシュはコア内及びコア外を通して階層構造をとることが一般的であり、演算器に直接接続するキャッシュをL1(Level 1)キャッシュと呼ぶ。セットアソシアティブ方式を採用したL1キャッシュでは、メモリアクセスの際、データ部とタグ部とに同時にアクセスし、データ部から該当インデックスに対応する全ウェイ分のデータを読み出しつつ、タグ部を検索した結果確定したウェイ番号によりデータを選択するという方法を取る。このようにデータ部アクセスとタグ部アクセスとを並列実行することにより、L1キャッシュアクセスのレイテンシを短縮することができる。
プロセッサの高速化手法として、SIMD(Single Instruction Multiple Data)がある。SIMDは、単一の命令を複数のデータに並列に適用することにより当該命令の演算を並列同時に実行する方法であり、主にハイパフォーマンスコンピューティングの分野において高い性能改善効果を発揮する。汎用プロセッサがサポート可能なSIMD長(=同時に処理可能なデータ数)は増大傾向にあり、64バイト幅のSIMD演算をサポートした汎用プロセッサも近年登場してきている。SIMD長の増加に伴い、演算器が一度の演算で必要とするデータ量も増えており、データ供給元であるL1キャッシュはより高いスループットを出すことが必要となってきている。例えば、最大SIMD長として64バイトをサポートするプロセッサの場合、ロード・ストア命令もSIMD化されており、L1キャッシュから毎サイクル64バイトの読み出し処理を行う必要がある。
L1キャッシュの読み出しにおいて、タグ部の検索と全ウェイ分のデータ読み出しとを同時並列に行う手法では、一度にSIMD長×ウェイ数のデータを読み出さなければならない。例えばSIMD長=64バイト、ウェイ数=4のL1キャッシュの場合、キャッシュのデータ部から一度に読み出すことが必要なデータの幅は256バイトになってしまう。このように一度に読み出し可能なデータ幅を増加させるためには、L1キャッシュを実装するRAMマクロ(Random Access Memory Macro)の個数を増加させる必要があり、同時に動作するRAMマクロの増加につながり、面積及び電力の大幅な増加を引き起こす。プロセッサコアにおいてL1キャッシュが占める面積及び電力の割合は大きく、L1キャッシュの面積及び電力が増加することはプロセッサとして好ましくない。
上記の問題は、タグ部の検索を先に実行し、確定したウェイのデータのみをデータ部から読み出すことにより解決可能である(例えば特許文献1及び2参照)。しかしながら、この手法ではタグ部の検索とデータ部の読み出しとが逐次的に行われることになり、レイテンシが増加してしまう。このレイテンシの増加は、SIMDが効果を発揮するデータ並列度が高いプログラムでは問題にならないが、データ並列度が低くてSIMD処理が出来ない或いはSIMD処理出来てもSIMD長が短いようなプログラムでは性能に対する影響が大きい。
汎用プロセッサでは、様々な種類のプログラムに対して良好な性能を示すことが好ましい。従って、L1キャッシュは、SIMD長の大きいアクセスための高スループットと、SIMD長の小さいアクセス又は非SIMDアクセスのための短レイテンシとを、面積及び電力の増加を抑えつつ両立させることが好ましい。
特開2003-150446号公報 特表2003-519836号公報
以上を鑑みると、キャッシュにおける回路面積及び電力の増加とレイテンシの増加とを異なるSIMD長に対して適切に抑制することが望まれる。
命令を発行する命令発行部と、第1のデータ長のデータを演算可能であると共に、前記第1のデータ長より長い第2のデータ長のデータの各部分に対して単一の命令を並列に実行可能な演算部と、データを保持するキャッシュメモリとを含む演算処理装置において、前記キャッシュメモリは、複数のウェイに対応する複数のタグを格納するタグ部と、前記複数のウェイに対応する複数のデータを格納するデータ部と、前記命令発行部から発行された命令によりアクセスするデータが前記第1のデータ長及び前記第2のデータ長のいずれであるのかに関して前記命令の種別を判定する判定部と、前記タグ部と前記データ部とを並列にアクセスする第1のパイプライン動作と、前記タグ部をアクセスした後にタグ判定結果に応じて前記データ部をアクセスする第2のパイプライン動作とを、前記判定部による判定結果に応じて選択的に実行する管理部とを含む。
少なくとも1つの実施例によれば、キャッシュにおける回路面積及び電力の増加とレイテンシの増加とを異なるSIMD長に対して適切に抑制することができる。
演算処理システムの構成の一例を示す図である。 第1のパイプライン動作の概略を示す図である。 第2のパイプライン動作の概略を示す図である。 第1のパイプライン動作について各パイプラインステージにおける動作の一例を示す図である。 第2のパイプライン動作について各パイプラインステージにおける動作の一例を示す図である。 第1のパイプライン動作におけるデータ部31からのデータ読み出しの様子を示す図である。 第2のパイプライン動作におけるデータ部31からのデータ読み出しの様子を示す図である。 判定回路が実行する判定処理の一例を示すフローチャートである。 選択回路が実行する選択処理の一例を示すフローチャートである。 衝突予測回路が実行する処理の一例を示すフローチャートである。 データ部への書き込み処理とデータ部からの読み出し処理とが衝突する様子を示す図である。 パイプラインステージ管理部の構成の一例を示す図である。 パイプライン管理レジスタに格納されるデータの遷移を示すタイミングチャートである。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、演算処理システムの構成の一例を示す図である。図1の演算処理システムは、命令発行部10、演算部11、L1キャッシュであるキャッシュメモリ12、及びL2キャッシュであるキャッシュメモリ13を含む。キャッシュメモリ13の先には更に主記憶装置(図示せず)が接続される。命令発行部10、演算部11、及びキャッシュメモリ12を含む部分が演算処理装置であり、この演算処理装置が、主記憶装置から読み出されキャッシュメモリ13を介してキャッシュメモリ12に一時的に格納されたデータに基づいて演算処理を行う。
図1において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
命令発行部10は、一連の命令シーケンスに含まれる各命令のデコード処理を行い、デコード結果に従ってリクエスト(命令実行リクエスト)を発行する。発行されるリクエストは、命令の種別を示すデータを含み、命令識別子IIDにより識別されてよい。命令発行部10が発行するロード命令及びストア命令等のメモリアクセス命令に対するリクエストは、アクセス先のアドレスと共にキャッシュメモリ12に供給される。
また命令発行部10が発行する演算命令に対するリクエストは、演算部11に供給される。演算部11は、第1のデータ長のデータを演算可能であると共に、第1のデータ長より長い第2のデータ長のデータの各部分に対して単一の命令を並列に適用可能である。具体的には、演算部11は、SIMD演算に対応可能なように第0演算器乃至第7演算器の8個の演算器を含む。図1の構成に示す演算器の個数は一例であり、演算器の個数は特定の数に限定されない。第0演算器乃至第7演算器の各々は、第1のデータ長のデータを演算するよう設計されてよい。通常の演算を実行する場合には、第1のデータ長のデータを演算対象として例えば第0演算器が、命令発行部10からのリクエストに対応する所望の演算を実行してよい。SIMD演算を実行する場合には、第1のデータ長より長い第2のデータ長のデータを分割して得られる各データ部分に対して単一の命令を第0演算器乃至第7演算器により並列に適用してよい。例えば、命令発行部10が発行した1つのリクエストに対応する同一の演算を、複数8個のデータ部分に対して第0演算器乃至第7演算器それぞれが並列に実行してよい。ここで並列処理される各データ部分は第1のデータ長であってよい。例えば第1のデータ長は16バイトであってよく、第2のデータ長は64バイトであってよいが、特定の長さに限定されない。
図1に示すキャッシュメモリ12は、判定回路21、パイプライン投入リクエスト選択部22、フェッチポート23、選択回路24、衝突予測回路25、パイプラインステージ管理部26、完了判定部27、及びデータ部アクセスアドレス生成部28を含む。キャッシュメモリ12は更に、TLB(Translation Look-aside Buffer)29、タグ部30、データ部31、タグマッチ判定回路32、及びウェイ選択回路33を含む。
タグ部30は、複数のウェイ(例えば4個のウェイ)に対応する複数のタグ(例えば4個のタグ)をインデックス毎に格納する。データ部31は、複数のウェイ(例えば4個のウェイ)に対応する複数のデータ(例えば4個のテータ)をインデックス毎に格納する。キャッシュメモリ12は、タグ部30とデータ部31とを並列にアクセスする第1のパイプライン動作と、タグ部30をアクセスした後にタグ判定結果に応じてデータ部31をアクセスする第2のパイプライン動作とを、選択的に実行可能なように設計されている。第1のパイプライン動作において、タグ部30とデータ部31とを並列にアクセスする際、タグ部30からの読み出し動作とデータ部31からの読み出し動作とは同時に実行されてもよいし、異なる時間に実行されてもよい。第1のパイプライン動作は、タグ判定の結果を待たずにデータ部31からデータを読み出す点において、第2のパイプライン動作と異なる。
図2は、第1のパイプライン動作の概略を示す図である。図2において、アクセス先アドレス35のインデックスINDEX(この例では2)が、タグ部30及びデータ部31に供給される。タグ部30において、当該インデックスINDEXに対応する複数のウェイWAY0乃至WAY3のタグが読み出される。またこのタグの読み出しと並行して、データ部31において、当該インデックスINDEXに対応する複数のウェイWAY0乃至WAY3のデータが読み出される。この例ではウェイの個数は4個であるが、ウェイの個数は特定の数に限定されない。
また更に、アクセス先アドレス35のタグTAG(この例ではA)が、TLB29により仮想アドレスから物理アドレスに変換されてから、タグマッチ判定回路32に供給される。タグマッチ判定回路32は、タグ部30から読み出された複数のタグとアクセス先アドレス35のタグTAGとを比較し、一致するタグ(この場合はウェイWAY0のタグ)を特定する。タグマッチ判定回路32は、一致したウェイWAY0を示すデータをウェイ選択回路33に供給する。ウェイ選択回路33は、データ部31から読み出された複数のウェイWAY0乃至WAY3のデータのうち、一致したウェイWAY0に対応するデータを選択して出力する。
図3は、第2のパイプライン動作の概略を示す図である。図3において、アクセス先アドレス35のインデックスINDEX(この例では2)が、タグ部30及びデータ部31に供給される。また更に、アクセス先アドレス35のタグTAG(この例ではA)が、TLB29により仮想アドレスから物理アドレスに変換されてから、タグマッチ判定回路32に供給される。タグ部30において、当該インデックスINDEXに対応する複数のウェイWAY0乃至WAY3のタグが読み出される。タグマッチ判定回路32は、タグ部30から読み出された複数のタグとアクセス先アドレス35のタグTAGとを比較し、一致するタグ(この場合はウェイWAY0のタグ)を特定する。その後、タグマッチ判定回路32によるタグ判定結果の情報に基づいて、データ部31から、インデックスINDEXに対応する複数のウェイWAY0乃至WAY3のうちで一致したウェイWAY0のデータが読み出される。
なお図1に示すキャッシュメモリ12では、後述するデータ部アクセスアドレス生成部28により、第1のパイプライン動作及び第2のパイプライン動作においてデータ部31をアクセスするためのアドレスを生成する。上述した図2及び図3に示されるのは概略の構成及び動作であり、データ部アクセスアドレス生成部28は示していない。
図4は、第1のパイプライン動作について各パイプラインステージにおける動作の一例を示す図である。Pステージにおいて、パイプラインに投入するリクエストが選択される。選択対象としては、図1において命令発行部10から新規に発行されたリクエスト又はフェッチポート23に登録されている未実行(再実行を含む)のリクエストであり、選択動作はパイプライン投入リクエスト選択部22により実行される。その後のTステージにおいて、タグ部30からの読み出し及びTLB29による変換動作が実行される。更にMステージにおいて、タグマッチ判定回路32によるタグ照合動作が実行されると共に、データ部31からの読み出し動作が実行される。なおデータ部31からの読み出し動作は、ステージTにおいて実行するように設計してもよい。
ステージBで、後述する図1の完了判定部27による処理完了判定が実行されると共に、ウェイ選択回路33によるウェイ選択処理が実行される。最後のステージRにおいて、命令発行部10への完了通知及び演算部11へのデータ供給が実行される。以上のステージP乃至ステージRの5個のステージにより、第1のパイプライン動作が実行される。
図5は、第2のパイプライン動作について各パイプラインステージにおける動作の一例を示す図である。Pステージにおいて、パイプラインに投入するリクエストが選択される。その後のTステージにおいて、タグ部30からの読み出し及びTLB29による変換動作が実行される。更にMステージにおいて、タグマッチ判定回路32によるタグ照合動作が実行される。その後のBステージ及びXTステージでは処理は実行されず、続くXMステージにおいて、タグ判定結果に基づいてデータ部31からの読み出し動作が実行される。なおデータ部31からの読み出し動作は、例えばステージXTにおいて実行するように設計してもよい。
ステージXBで、図1の完了判定部27による処理完了判定が実行される。最後のステージRにおいて、命令発行部10への完了通知及び演算部11へのデータ供給が実行される。以上のステージP乃至ステージRの8個のステージにより、第2のパイプライン動作が実行される。タグマッチ判定回路32によるタグ判定処理を実行してから、当該タグ判定処理の結果に基づいてデータ部31からデータを読み出すので、第2のパイプライン動作のステージ数は、第1のパイプライン動作のステージ数よりも多くなっている。即ち、第1のパイプライン動作に比較して第2のパイプライン動作はレイテンシが長くなっている。
図1に戻り、判定回路21は、命令発行部から発行された命令によりアクセスするデータが前記第1のデータ長及び前記第2のデータ長のいずれであるのかに関して命令の種別を判定する。この判定結果に応じて、当該命令を第1のパイプライン動作で実行するのか又は第2のパイプライン動作で実行するのかが選択される。具体的には、パイプラインステージ管理部26が、実行対象の命令が前記第1のデータ長のアクセスである場合には第1のパイプライン動作を実行し、実行対象の命令が前記第2のデータ長のアクセスである場合には第2のパイプライン動作を実行する。即ち、例えば16バイトの短いデータ長のアクセスの場合には、タグ部30とデータ部31とを並列にアクセスして短レイテンシ動作を実現する。また例えば64バイトの長いデータ長のアクセスの場合には、タグ部30をアクセスして得られたタグ判定結果に応じてデータ部31から1つの確定ウェイのデータのみを読み出すことにより、データ部31のRAMを実装する面積及び消費電力の増加を抑制できる。
また判定回路21によりリクエスト毎に第1のパイプライン処理の対象か或いは第2のパイプラインの対象かを判定することで、リクエスト種に応じてパイプライン処理を切り替えることが可能となる。その結果、SIMD長の大きいアクセスための高スループットと、SIMD長の小さい又は非SIMDアクセスのための短レイテンシとを両立することが可能となる。
データ部アクセスアドレス生成部28は、第1のパイプライン動作及び第2のパイプライン動作においてデータ部31をアクセスするためのアドレスを生成する。具体的には、データ部アクセスアドレス生成部28は、第1のパイプライン動作においては第1のデータ長でデータ部31をアクセスし、第2のパイプライン動作においては第2のデータ長でデータ部31をアクセスするようにアドレスを生成する。例えば、第1のパイプライン動作においては、データ部31から、16バイトのデータ長のデータが複数のウェイの各々に対して読み出されてよい。また第2のパイプライン動作においては、データ部31から、64バイトのデータ長のデータが1つの確定したウェイに対して読み出されてよい。これにより、データ部31においてRAMを実装する面積及び消費電力の増加を抑制しながら、各命令について適切なデータ長のデータを読み出すことが可能となる。
図6は、第1のパイプライン動作におけるデータ部31からのデータ読み出しの様子を示す図である。図7は、第2のパイプライン動作におけるデータ部31からのデータ読み出しの様子を示す図である。図6及び図7において、データ部31には、各々が32バイトの容量を有する8個のRAM(RAM0乃至RAM7)が設けられている。各RAMは、各々が8バイトである4個のデータを別個に格納可能である。各RAMにおける表記において先頭の数字は16進で示したバイト位置であり、例えば「00way0」はウェイway0の0バイト目、「08way0」はウェイway0の8バイト目、「10way0」はウェイway0の16バイト目、等を意味する。例えばRAM0において「00way0」と記載されている格納箇所には、ウェイway0の第0バイトから第7バイトのデータが格納されている。また例えばRAM1において「08way0」と記載されている格納箇所には、ウェイway0の第8バイトから第15バイトのデータが格納されている。データ部31では、4個のウェイway0乃至way3の各々が64バイトのデータを有しており、4個のウェイに対して合計256バイトのデータが格納されている。
図6に示される第1のパイプライン動作の場合には、4個のウェイway0乃至way3の各々について、第0バイト目から第15バイト目までの16バイトのデータが読み出されている。この場合、データ部アクセスアドレス生成部28が、各RAM(RAM0乃至RAM7)の先頭の8バイトのデータを読み出すように、アクセスアドレスを生成することになる。
図7に示される第2のパイプライン動作の場合には、1個のウェイway0について、第0バイト目から第63バイト目までの64バイトのデータが読み出されている。この場合、データ部アクセスアドレス生成部28が、8個のRAM(RAM0乃至RAM7)のそれぞれについて、ウェイway0のデータが格納されている位置の8バイト分のデータを読み出すように、アクセスアドレスを生成することになる。
図1に戻り、ウェイ選択回路33は、第1のパイプライン動作においては、データ部31から読み出された複数のウェイのデータのうち1つのウェイのデータをタグ判定結果に応じて選択して出力してよい。またウェイ選択回路33は、第2のパイプライン動作においては、データ部31から読み出された1つのウェイのデータを全て出力してよい。これにより、各命令について適切なデータ長のデータをキャッシュメモリ12から出力し、演算部11における演算に供することが出来る。
第1のパイプライン動作と第2のパイプライン動作とはパイプラインの長さが異なるために、両方のパイプライン動作を混在させる構成では、リソースの衝突が発生する可能性がある。キャッシュメモリ12では、衝突予測回路25により、そのようなリソースの衝突を回避することが可能である。
前述のように第1の命令が第1のデータ長のアクセスであることが判定回路21による判定結果により示される場合、即ち、判定結果が第1の命令に対して第1のパイプライン動作の実行を示している場合、通常は第1のパイプライン動作が実行されてよい。しかしながら、第1の命令に対して実行する第1のパイプライン動作が、第1の命令より先行する第2の命令に対して実行している第2のパイプライン動作と衝突するならば、第1の命令に対して第1のパイプライン動作を実行しなくともよい。衝突予測回路25は、このように第1の命令に対して実行する第1のパイプライン動作が、先行して実行している第2のパイプライン動作と衝突するのか否かを検出する。衝突予測回路25により当該衝突が検出(予測)された場合に、パイプラインステージ管理部26は、第1の命令に対して第1のパイプライン動作ではなく第2のパイプライン動作を実行させてよい。
なお上記の説明では、衝突が予測される場合には第1の命令に対して第1のパイプライン動作ではなく第2のパイプライン動作を実行させているが、衝突を厭わずにそのまま第1の命令に対して第1のパイプライン動作を実行させてもよい。この場合、衝突が発生した時点で第1の命令又は第2の命令のいずれかの命令が実行不能となり、実行出来なかった方の命令は、実行未完了の命令として再実行対象となる。その後当該命令は再実行されることになる。このようなやり方でも、第1のパイプライン動作と第2のパイプライン動作とを実装して、面積及び電力の削減及びレイテンシの短縮という所望の効果を得ることが可能である。しかしながら効率的なパイプライン処理を実現するためには、最初に説明したように、衝突が予測される場合には第1の命令に対して第1のパイプライン動作ではなく第2のパイプライン動作を実行させることが好ましい。このように2つのパイプライン処理の衝突を事前に予測して回避することにより、処理の衝突によるパイプラインストールを防ぐことが可能となる。
以下に、図1に示すキャッシュメモリ12の構成及び動作について更に詳細に説明する。
命令発行部10が発行したリクエストは、まず判定回路21に入力される。判定回路21は、リクエストが長レイテンシのパイプライン処理(第2のパイプライン動作)の対象であることを示すフラグを出力する回路である。判定回路21は内部にテーブルを持ち、このテーブルには各リクエスト種について長レイテンシのパイプライン処理の対象であるか否かが記録されている。このテーブルを参照することにより、受信リクエストが長レイテンシのパイプライン処理の対象であると判定した場合、判定回路21は、長レイテンシ指示フラグFLG_LONG_REQをアサートする(1に設定する)。判定回路21は、リクエストと長レイテンシ指示フラグFLG_LONG_REQとを、パイプライン投入リクエスト選択部22及びフェッチポート23に供給する。
図8は、判定回路21が実行する判定処理の一例を示すフローチャートである。図8及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
図8のステップS1において、判定回路21は、リクエストが長レイテンシのパイプライン処理の対象であるか否かを判定する。対象である場合には、ステップS2において、判定回路21が、長レイテンシ指示フラグFLG_LONG_REQを1に設定する。対象でない場合には、ステップS3において、判定回路21が、長レイテンシ指示フラグFLG_LONG_REQを0に設定する。
判定回路21による判定後、リクエストに対してフェッチポート23に新たにポートを確保する。フェッチポート23には、例えば最大で40個のポートが設けられており、各ポートは識別子により識別可能である。新たなリクエストが到来すると、当該リクエストに空きポートが割り当てられ、当該割り当てられたポートに当該リクエストのデータが格納される。この際、リクエストと共に長レイテンシ指示フラグFLG_LONG_REQも当該ポートに格納されてよい。フェッチポート23のポートに登録された情報は、各命令についての実行の完了及び未完了を管理するために用いられる。
パイプライン投入リクエスト選択部22は、命令発行部10から新規に発行されたリクエスト及びフェッチポート23からのパイプラインへの再投入リクエストのいずれかをパイプライン投入命令として選択する。基本的に、再投入リクエストの方が優先して選択され、再投入リクエストが存在しない場合のみ新規リクエストが選択される。なおフェッチポート23からの再投入リクエストの対象には、実行したが何らかの事情で未完了となった命令及び未だ一度も実行されずに待ち状態となっている命令とが含まれる。
衝突予測回路25は、パイプライン処理状況を示す情報をパイプラインステージ管理部26から入力として受け取り、新規にパイプラインに投入する命令に対して衝突が発生するか否かを予測する。ここでパイプライン処理状況を示す情報は、パイプライン上で実行されている短レイテンシ処理及び/又は長レイテンシ処理についていずれのパイプラインステージを実行中であるかを示す情報であってよい。衝突予測回路25は、衝突発生を予測すると、新規にパイプラインに投入するリクエストに対して、長レイテンシ強制指示信号FRC_LONGをアサートする(1に設定する)。長レイテンシ強制指示信号FRC_LONGがアサートされた場合、対象リクエストは、強制的に長レイテンシのパイプライン処理として実行される。
選択回路24は、パイプライン投入リクエスト選択部22により選択されたリクエストについて、短レイテンシのパイプライン処理と長レイテンシのパイプライン処理とのいずれにより実行するのかを選択する。短レイテンシのパイプライン処理を選択する場合には、選択回路24は、短レイテンシ選択信号SHORT_VALをアサートする(1に設定する)。長レイテンシのパイプライン処理を選択する場合には、選択回路24は、長レイテンシ選択信号LONG_VALをアサートする(1に設定する)。この選択は、図4及び図5に示されるように、パイプラインのPステージにおいて行われる。
図9は、選択回路24が実行する選択処理の一例を示すフローチャートである。ステップS11において、選択回路24は、衝突予測回路25により生成された長レイテンシ強制指示信号FRC_LONGが1であるか否かを判定する。長レイテンシ強制指示信号FRC_LONGが1でない場合、ステップS12において、選択回路24は、判定回路21により生成された長レイテンシ指示フラグFLG_LONG_REQが1であるか否かを判定する。長レイテンシ指示フラグFLG_LONG_REQが1でない場合、ステップS13において、選択回路24は、短レイテンシ選択信号SHORT_VALを1に設定する。長レイテンシ強制指示信号FRC_LONG及び長レイテンシ指示フラグFLG_LONG_REQのいずれか一方でも1である場合、ステップS14において、選択回路24は、長レイテンシ選択信号LONG_VALを1に設定する。
図10は、衝突予測回路25が実行する処理の一例を示すフローチャートである。ステップS21において、衝突予測回路25は、パイプライン処理の衝突が発生するか否かを判定する。衝突が発生すると判定した場合、ステップS22において、衝突予測回路25は長レイテンシ強制指示信号FRC_LONGを1に設定する。衝突が発生しないと判定した場合、ステップS23において、衝突予測回路25は長レイテンシ強制指示信号FRC_LONGを0に設定する。
なお、パイプライン処理の衝突にはいくつかのパターンがある。1つの例は、2つのデータ部読み出しリクエストにおけるデータ部アクセス同士の衝突である。長レイテンシのパイプライン読み出し処理においてBステージ(図5に示すBステージ)が現在実行されているタイミングにおいて、短レイテンシのパイプライン読み出し処理をPステージ(図4に示すPステージ)から開始するとする。このとき、長レイテンシのパイプライン読み出し処理におけるXMステージでのデータ部31へのアクセスと、短レイテンシのパイプライン読み出し処理におけるMステージでのデータ部31へのアクセスとが互いに衝突する。
パイプライン処理の衝突の別の例として、データ部への書き込み処理とデータ部からの読み出し処理との衝突がある。図11は、データ部への書き込み処理とデータ部からの読み出し処理とが衝突する様子を示す図である。
図11(a)に示されるように、アドレスAに対する先行書き込みリクエストが、長レイテンシのパイプライン処理として実行されている。この書き込みリクエストは、データ部の特定のアドレスのメモリ値を更新するリクエストであり、XMステージにおいてデータ部にアクセスしてアドレスAにおけるメモリ値を更新する。図11(b)には、メモリ値更新によるアドレスAにおけるメモリ値の変化が示される。
図11(c)には、同一のアドレスAに対する4個の後続読み出しリクエストR1乃至R4が示されており、これらの4個のリクエストは、短レイテンシのパイプライン処理として順次実行される。このとき、読み出しリクエストR1乃至R3は、Mステージでデータ部にアクセスしてデータを読み出すので、図11(a)に示す先行書き込みリクエストの後にパイプライン処理を開始したにも関わらず、更新前のメモリ値OLDを読み出すことになる。これを回避するためには、これから実行する読み出しリクエストのPステージの時点において、先行する長レイテンシの書き込みリクエストのT、M、又はBステージが実行されている場合、当該読み出しリクエストは長レイテンシで実行させることが好ましい。即ち、衝突予測回路25は長レイテンシ強制指示信号FRC_LONGを1にアサートすることが好ましい。
図11(d)には、アドレスAに対する4個の後続読み出しリクエストR1’乃至R3’及びR4が示されている。リクエストR1’乃至R3’は長レイテンシ強制指示信号FRC_LONGのアサートに応答して長レイテンシのパイプライン処理として順次実行され、それ以外のリクエストR4は短レイテンシのパイプライン処理として実行されている。読み出しリクエストR1’乃至R3’は、XMステージでデータ部にアクセスしてデータを読み出すので、更新後のメモリ値NEWを読み出すことになる。
このように衝突が予測されるリクエストについては、長レイテンシ指示フラグFLG_LONG_REQの値に関わらず、長レイテンシのパイプライン処理を実行する。これにより、短レイテンシのパイプライン処理のMステージと長レイテンシのパイプライン処理のXMステージとが衝突(データが矛盾する場合も含む)するのを防ぐことができる。なお、上記2例以外の衝突が発生する場合も、適宜それらを衝突予測回路25における衝突予測に組み込んでよい。
選択回路24による選択後、リクエストのパイプライン上での処理を開始する。パイプラインの実行は、パイプラインステージ管理部26が制御及び管理する。
図12はパイプラインステージ管理部26の構成の一例を示す図である。パイプラインステージ管理部26は、ステージ毎にパイプラインの実行状況を管理するためのパイプライン管理レジスタを有する。図12には、1つのステージに対して設けられたパイプライン管理レジスタの一例が示されている。パイプライン管理レジスタとしては、ステージ有効信号VLDを格納するレジスタ41、短レイテンシ選択信号SHORT_VALを格納するレジスタ42、長レイテンシ選択信号LONG_VALを格納するレジスタ43が設けられてよい。また更に、書き込みリクエストRDと読み出しリクエストWTとのいずれかを示すパイプライン識別子PIPE_IDを格納するレジスタ44、及び複数の読み出しリクエスト同士を区別する識別子IIDを格納するレジスタ45が設けられてよい。これら以外に更に別の管理レジスタを設けてもよい。
図13は、パイプライン管理レジスタに格納されるデータの遷移を示すタイミングチャートである。図13の上段に示す3つのリクエストR1乃至R3が連続してパイプラインを流れた場合の例である。リクエストR1は短レイテンシのパイプライン処理対象である読み出しリクエストであり、識別子IIDは「1」である。リクエストR2は長レイテンシのパイプライン処理対象である書き込みリクエストである。リクエストR3は長レイテンシのパイプライン処理対象である読み出しリクエストであり、識別子IIDは「2」である。
図13の下段には、Pステージ、Bステージ、XTステージ、及びRステージにおける各パイプライン管理レジスタの格納値を示してある。その他のT、M、XM、及びXBステージについては図13には示していない。
一例としてPステージにおける各レジスタ値を説明すると、図13の上段に示す3つのリクエストR1乃至R3のいずれかがPステージであるタイミングにおいて、ステージ有効信号VLDを格納するレジスタの値がハイになっている。また短レイテンシのパイプライン処理されるリクエストR1がPステージであるタイミングにおいて、短レイテンシ選択信号SHORT_VALを格納するレジスタの値(SHORT_VALレジスタ値)がハイとなっている。長レイテンシのパイプライン処理されるリクエストR2又はR3がPステージであるタイミングにおいては、長レイテンシ選択信号LONG_VALを格納するレジスタの値(LONG_VALレジスタ値)がハイとなっている。読み出しリクエストであるリクエストR1及びR3がそれぞれPステージであるタイミングにおいて、パイプライン識別子PIPE_IDを格納するレジスタの値は読み出しリクエストRDを示している。書き込みリクエストであるリクエストR2がPステージであるタイミングにおいて、パイプライン識別子PIPE_IDを格納するレジスタの値は書き込みリクエストWTを示している。また読み出しリクエストであるリクエストR1及びR3がそれぞれPステージであるタイミングにおいて、読み出しリクエスト同士を区別する識別子IIDはそれぞれ「1」及び「2」となっている。
その他のステージについても同様に、3つのリクエストR1乃至R3のいずれかが当該ステージであるタイミングにおいて、各パイプライン管理レジスタの値が各リクエストに対応する値となる。なおXT、XM、及びXBステージは長レイテンシのパイプライン処理に専用のステージであるため、これらのステージは短レイテンシ選択信号SHORT_VALを格納するレジスタを有しない。
上記説明したパイプラインステージ管理部26のパイプライン管理レジスタに基づいて、パイプライン動作の制御及び管理が行われる。例えば、衝突予測回路25は、BステージにおけるLONG_VALレジスタ値を参照することにより、Bステージを実行中である長レイテンシのパイプライン読み出し処理が存在するか否かを判定できる。
パイプラインステージ管理部26の管理下において、図1に示されるデータ部アクセスアドレス生成部28、TLB29、タグ部30、データ部31、タグマッチ判定回路32、及びウェイ選択回路33が動作することにより、パイプライン処理が実行される。データ部31は、短レイテンシのパイプライン処理のMステージ及び長レイテンシのパイプライン処理のXMステージにおいて、アクセスされる。その際、データ部アクセスアドレス生成部28が、データ部31を構成するRAM毎に、アクセスアドレスACC_ADRSを生成する。このデータ部アクセスアドレス生成部28は、リクエストのアクセス先アドレスADRS、MステージのSHORT_VALレジスタ値、XMステージのLONG_VALレジスタ値、及びタグマッチ判定回路32が出力するタグ判定結果WAY_IDを入力とする。データ部アクセスアドレス生成部28は、MステージのSHORT_VALレジスタ値が有効な場合(ハイである場合)、連続16バイトのデータを全てのウェイについて読み出すようにアクセスアドレスACC_ADRSを生成する。またデータ部アクセスアドレス生成部28は、XMステージのLONG_VALレジスタ値が有効な場合(ハイである場合)、タグ判定結果WAY_IDが示すウェイの連続64バイトのデータを読み出すようにアクセスアドレスACC_ADRSを生成する。
データ部31からデータを読み出した後、短レイテンシのパイプライン処理のBステージでは、タグ判定結果により特定された1つのウェイのデータのみを選択する。この処理はウェイ選択回路33で行われる。ウェイ選択回路33は、データ部31からの出力データ、BステージのSHORT_VALレジスタ値、XBステージのLONG_VALレジスタ値、及びタグ判定結果WAY_IDを入力とする。ウェイ選択回路33は、BステージのSHORT_VALレジスタ値が有効な場合、データ部31から読み出した全ウェイ分のデータのうちでタグ判定結果WAY_IDが示すウェイのデータのみを選択して出力する。ウェイ選択回路33は、XBステージのLONG_VALレジスタ値が有効な場合、データを選択することなく、データ部31から読み出されたデータをそのまま出力する。ウェイ選択回路33の出力データが演算部11に供給される。
以上の処理が正常に完了した場合、完了判定部27がリクエストの完了通知を生成し、完了通知を命令発行部10に送信する。例えばキャッシュミス等の何らかの理由でパイプライン処理が中断した場合、完了判定部27は該当リクエストが未完了であると判定し、リクエストはフェッチポート23に戻される。フェッチポート23に戻されたリクエストは、再投入リクエストとして再実行される。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 命令発行部
11 演算部
12 キャッシュメモリ
13 キャッシュメモリ
21 判定回路
22 パイプライン投入リクエスト選択部
23 フェッチポート
24 選択回路
25 衝突予測回路
26 パイプラインステージ管理部
27 完了判定部
28 データ部アクセスアドレス生成部
29 TLB
30 タグ部
31 データ部
32 タグマッチ判定回路
33 ウェイ選択回路

Claims (6)

  1. 命令を発行する命令発行部と、
    第1のデータ長のデータを演算可能であると共に、前記第1のデータ長より長い第2のデータ長のデータの各部分に対して単一の命令を並列に実行可能な演算部と、
    データを保持するキャッシュメモリと
    を含む演算処理装置であって、前記キャッシュメモリは、
    複数のウェイに対応する複数のタグを格納するタグ部と、
    前記複数のウェイに対応する複数のデータを格納するデータ部と、
    前記命令発行部から発行された命令によりアクセスするデータが前記第1のデータ長及び前記第2のデータ長のいずれであるのかに関して前記命令の種別を判定する判定部と、
    前記タグ部と前記データ部とを並列にアクセスする第1のパイプライン動作と、前記タグ部をアクセスした後にタグ判定結果に応じて前記データ部をアクセスする第2のパイプライン動作とを、前記判定部による判定結果に応じて選択的に実行する管理部と
    を含む演算処理装置。
  2. 前記判定結果が第1の命令に対して前記第1のパイプライン動作の実行を示している場合に、前記第1の命令に対して実行する前記第1のパイプライン動作が、前記第1の命令より先行する第2の命令に対して実行している前記第2のパイプライン動作と衝突することを検出する衝突予測回路を更に含み、前記衝突予測回路により当該衝突が検出された場合に、前記管理部は前記第1の命令に対して前記第2のパイプライン動作を実行させる、請求項1記載の演算処理装置。
  3. 前記第1のパイプライン動作においては前記第1のデータ長で前記データ部をアクセスし、前記第2のパイプライン動作においては前記第2のデータ長で前記データ部をアクセスするよう、前記データ部をアクセスするためのアドレスを生成するアドレス生成部を前記キャッシュメモリが更に含む、請求項1又は2記載の演算処理装置。
  4. 前記第1のパイプライン動作においては前記データ部から読み出された複数のウェイのデータのうち1つのウェイのデータをタグ判定結果に応じて選択して出力し、前記第2のパイプライン動作においては前記データ部から読み出された1つのウェイのデータを全て出力するウェイ選択回路を前記キャッシュメモリが更に含む、請求項1乃至3いずれか一項記載の演算処理装置。
  5. 複数のウェイに対応する複数のタグを格納するタグ部と、
    前記複数のウェイに対応する複数のデータを格納するデータ部と、
    命令によりアクセスするデータの長さに関して前記命令の種別を判定する判定部と、
    前記タグ部と前記データ部とを並列にアクセスする第1のパイプライン動作と、前記タグ部をアクセスした後にタグ判定結果に応じて前記データ部をアクセスする第2のパイプライン動作とを、前記判定部による判定結果に応じて選択的に実行する管理部と
    を含むメモリ装置。
  6. 命令発行部と、第1のデータ長のデータを演算可能であると共に、前記第1のデータ長より長い第2のデータ長のデータの各部分に対して単一の命令を並列に実行可能な演算部と、複数のウェイに対応する複数のタグを格納するタグ部及び前記複数のウェイに対応する複数のデータを格納するデータ部を有するキャッシュメモリとを含む演算処理装置において、
    前記命令発行部が、命令を発行し、

    前記キャッシュメモリが有する判定部が、前記命令発行部から発行された命令によりアクセスするデータが前記第1のデータ長及び前記第2のデータ長のいずれであるのかに関して前記命令の種別を判定し、
    前記キャッシュメモリが有する管理部が、前記タグ部と前記データ部とを並列にアクセスする第1のパイプライン動作と、前記タグ部をアクセスした後にタグ判定結果に応じて前記データ部をアクセスする第2のパイプライン動作とを、前記判定による判定結果に応じて選択的に実行する演算処理装置の制御方法。
JP2018231101A 2018-12-10 2018-12-10 演算処理装置、メモリ装置、及び演算処理装置の制御方法 Active JP7070384B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018231101A JP7070384B2 (ja) 2018-12-10 2018-12-10 演算処理装置、メモリ装置、及び演算処理装置の制御方法
US16/706,900 US11327768B2 (en) 2018-12-10 2019-12-09 Arithmetic processing apparatus and memory apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018231101A JP7070384B2 (ja) 2018-12-10 2018-12-10 演算処理装置、メモリ装置、及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020095345A JP2020095345A (ja) 2020-06-18
JP7070384B2 true JP7070384B2 (ja) 2022-05-18

Family

ID=70970173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018231101A Active JP7070384B2 (ja) 2018-12-10 2018-12-10 演算処理装置、メモリ装置、及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11327768B2 (ja)
JP (1) JP7070384B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法
US20240004792A1 (en) * 2022-06-29 2024-01-04 Ampere Computing Llc Data l2 cache with split access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171177A (ja) 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
JP2017517065A (ja) 2014-05-27 2017-06-22 クアルコム,インコーポレイテッド 再構成可能フェッチパイプライン

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321321B1 (en) * 1999-06-21 2001-11-20 Vlsi Technology, Inc. Set-associative cache-management method with parallel and single-set sequential reads
US6629206B1 (en) 1999-12-31 2003-09-30 Koninklijke Philips Electronics N.V. Set-associative cache-management using parallel reads and serial reads initiated during a wait state
JP2003150446A (ja) 2001-11-16 2003-05-23 Matsushita Electric Ind Co Ltd キャッシュメモリ
US20060236074A1 (en) * 2005-04-14 2006-10-19 Arm Limited Indicating storage locations within caches
US20120303897A1 (en) * 2011-05-28 2012-11-29 Sakthivel Komarasamy Pullagoundapatti Configurable set associative cache way architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171177A (ja) 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
JP2017517065A (ja) 2014-05-27 2017-06-22 クアルコム,インコーポレイテッド 再構成可能フェッチパイプライン

Also Published As

Publication number Publication date
US11327768B2 (en) 2022-05-10
JP2020095345A (ja) 2020-06-18
US20200183702A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
US7461209B2 (en) Transient cache storage with discard function for disposable data
JP3512678B2 (ja) キャッシュメモリ制御装置および計算機システム
US8984261B2 (en) Store data forwarding with no memory model restrictions
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
JP4417715B2 (ja) キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
KR20150016278A (ko) 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치
US20090138680A1 (en) Vector atomic memory operations
US20080098174A1 (en) Cache memory having pipeline structure and method for controlling the same
JP2005533295A5 (ja)
US7260674B2 (en) Programmable parallel lookup memory
US8707014B2 (en) Arithmetic processing unit and control method for cache hit check instruction execution
JP7070384B2 (ja) 演算処理装置、メモリ装置、及び演算処理装置の制御方法
JP5954112B2 (ja) メモリ装置、演算処理装置、及びキャッシュメモリ制御方法
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
JP2001195304A (ja) キャッシュ記憶装置
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
US9223714B2 (en) Instruction boundary prediction for variable length instruction set
US6434670B1 (en) Method and apparatus for efficiently managing caches with non-power-of-two congruence classes
US20200012514A1 (en) Systems, Methods, and Apparatuses for Resource Monitoring
JP2010102623A (ja) キャッシュメモリ及びその制御方法
US20030196072A1 (en) Digital signal processor architecture for high computation speed
KR101076815B1 (ko) 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
CN112395000A (zh) 一种数据预加载方法和指令处理装置
JP4068828B2 (ja) 統合型分離型切替えキャッシュメモリ及び該キャッシュメモリを備えたプロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220322

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220418

R150 Certificate of patent or registration of utility model

Ref document number: 7070384

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150