JPWO2008155826A1 - キャッシュ制御装置およびキャッシュ制御方法 - Google Patents

キャッシュ制御装置およびキャッシュ制御方法 Download PDF

Info

Publication number
JPWO2008155826A1
JPWO2008155826A1 JP2009520180A JP2009520180A JPWO2008155826A1 JP WO2008155826 A1 JPWO2008155826 A1 JP WO2008155826A1 JP 2009520180 A JP2009520180 A JP 2009520180A JP 2009520180 A JP2009520180 A JP 2009520180A JP WO2008155826 A1 JPWO2008155826 A1 JP WO2008155826A1
Authority
JP
Japan
Prior art keywords
request
processing
thread
unit
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.)
Granted
Application number
JP2009520180A
Other languages
English (en)
Other versions
JP4621292B2 (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
Publication of JPWO2008155826A1 publication Critical patent/JPWO2008155826A1/ja
Application granted granted Critical
Publication of JP4621292B2 publication Critical patent/JP4621292B2/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/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
    • 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/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上すること。この課題を解決するために、サイクルT処理部(142a)からサイクルR処理部(142d)までの各処理部は、ストールしたスレッドのリクエストに関する処理中である場合に、対応するウェイトポート(143a〜143d)においてストールしたスレッドのバリッドビットを1にセットする。リクエスト記憶部(148)は、いずれかのスレッドに関するバリッドビットに1となったものが検出されると、このバリッドビットに対応するリクエストを順次レジスタ部(149)へ出力する。プライオリティ決定部(144)は、バリッドビットに基づいてセレクタ(141)における出力の優先度を決定する。セレクタ(141)は、プライオリティ決定部(144)からのセレクト信号に従い、いずれか1つのリクエストを出力する。

Description

本発明は、複数のスレッドに属するリクエストに対してパイプライン処理を実行し、リクエストに応じたキャッシュデータを出力させるキャッシュ制御装置およびキャッシュ制御方法に関し、特に、確実に処理効率を向上することができるキャッシュ制御装置およびキャッシュ制御方法に関する。
従来、キャッシュメモリを備えたCPU(Central Processing Unit)などのプロセッサにおいては、例えばキャッシュメモリから命令を読み出す命令フェッチなどの処理の高速化を図るために、パイプライン処理が行われることがある。パイプライン処理は、1つの命令の読み出しを要求するリクエストに関する処理を複数のサイクル(またはステージともいう)に分け、各サイクルの処理を独立して実行する処理である。すなわち、先行するリクエストに対する1サイクルの処理が完了すると、すぐに次のリクエストに対して同じサイクルの処理が実行され、同時に、先行するリクエストに対しては、後段のサイクルの処理が実行される。したがって、パイプライン処理が行われる場合には、複数のリクエストに対して、流れ作業のように各サイクルの処理が実行されるため、同時に複数のリクエストに関する処理を進行させることができ、処理時間を大幅に短縮することができる。
このようなパイプライン処理が実行される際には、パイプラインにリクエストが投入された順序でリクエストに対する応答を出力する必要がある。具体的には、例えば命令フェッチのための複数のリクエストがパイプライン処理される場合、パイプラインにリクエストが投入された順序で、それぞれのリクエストに対応する命令をキャッシュメモリから出力する必要がある。これは、キャッシュメモリに対してリクエストを送出する命令制御部では、リクエストを送出した順序で命令が読み出されなければ、一連の処理を正常に実行できない虞があるからである。
ところで、キャッシュメモリは、CPUの外部に設けられるメインメモリなどと比較すると、高速に動作する一方で容量が小さいため、リクエストによって読み出しを要求された命令が必ずしもキャッシュメモリに格納されているとは限らない。このため、キャッシュメモリに格納されていない命令が要求されるとキャッシュミスが生じ、すぐには要求された命令がキャッシュメモリから出力されないことがある。このような場合、リクエストに関する処理を実行するパイプラインでは、処理を一旦中断(以下「ストール」という)する必要がある。
そこで、例えば特許文献1には、パイプライン処理がストールすると、パイプラインへの新たなリクエストの投入を停止させ、ストール発生時に既にパイプライン処理中であったリクエストをパイプラインへ再投入することが記載されている。こうすることにより、パイプラインへ投入されたリクエストの順序を崩すことなく、リクエストに対する応答を出力することができる。
特開2007−26392号公報
上述したように、パイプライン処理は、プロセッサにおける処理の高速化を図ることができるが、近年では、さらに処理効率を向上するため、一連のリクエストからなる複数のスレッドが並列にパイプライン処理されることがある。すなわち、例えば2つのスレッドに属するリクエストを交互に1つのパイプラインへ投入し、2つのスレッドの処理を同時に進行させて、処理効率を高めることができる。
しかしながら、このようなパイプライン処理において1つのスレッドに関するストールが発生すると、処理効率の向上に一定の限界があるという問題がある。すなわち、例えば2つのスレッドに属するリクエストが交互にパイプラインへ投入されている場合、上記特許文献1に記載の技術を利用すると、一方のスレッドに属するリクエストのみについてキャッシュミスなどが生じた際には、両方のスレッドに属するすべてのリクエストがパイプラインに再投入されることになる。つまり、キャッシュミスが生じておらず、処理が続行可能であったスレッドのリクエストもパイプラインに再投入され、このスレッドの処理が遅延してしまう。
本発明はかかる点に鑑みてなされたものであり、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上することができるキャッシュ制御装置およびキャッシュ制御方法を提供することを目的とする。
上記課題を解決するために、本発明は、複数のスレッドに属するリクエストに対してパイプライン処理を実行し、リクエストに応じたキャッシュデータを出力させるキャッシュ制御装置であって、複数のスレッドに属するリクエストに対して、キャッシュデータを出力するパイプライン処理を構成する個々の処理を互いに独立して実行する複数の処理手段と、前記複数の処理手段それぞれに対応して設けられ、個々の処理手段において処理中のリクエストに対応し当該リクエストが属するスレッドのパイプライン処理が停止したか否かを示すスレッド別のバリッドビットを保持する複数の保持手段と、パイプライン処理の停止を示すバリッドビットが保持された保持手段に対応する処理手段において処理中のリクエストを順次レジスタに格納する格納手段と、前記格納手段によってレジスタに格納されたリクエストおよび外部から新たに入力されるリクエストの優先度を決定して、いずれか1つのリクエストを前記複数の処理手段へ投入する投入手段とを有する構成を採る。
この構成によれば、パイプライン処理のストールが発生した際に、パイプライン処理がストールしたことをリクエストに対応するバリッドビットによってスレッド別に記憶し、スレッド別のバリッドビットによって、パイプライン処理を再実行するリクエストを決定する。このため、1つのスレッドのパイプライン処理がストールしても、他のスレッドの処理を続行することができ、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上することができる。
また、本発明は、上記構成において、前記格納手段は、前記複数の保持手段によって保持されたバリッドビットに基づいて、パイプライン処理が停止したスレッドに属するリクエストを前記複数の処理手段に投入された順序でレジスタに格納する構成を採る。
この構成によれば、バリッドビットに基づいて、パイプライン処理が停止したスレッドに属するリクエストに対してパイプライン処理が開始された順序でパイプライン処理を再実行することになる。このため、スレッド内でのリクエストの順序を崩すことなくストールしたスレッドのリクエストに対して再度パイプライン処理することができる。
また、本発明は、上記構成において、前記投入手段は、前記複数の保持手段によって保持されたバリッドビットをスレッドごとにラッチするラッチ手段と、前記ラッチ手段によってラッチされたバリッドビットおよび前記複数の処理手段へ前回投入されたリクエストに応じて今回前記複数の処理手段へ投入するリクエストを決定する決定手段とを含む構成を採る。
この構成によれば、バリッドビットをスレッドごとにラッチし、バリッドビットと前回パイプライン処理が開始されたリクエストとに応じて今回パイプライン処理を開始するリクエストを決定する。このため、ストールしたスレッドのリクエストおよび外部から新たに入力されたリクエストの中から確実に1つのリクエストを選択することができる。
また、本発明は、上記構成において、前記決定手段は、前記ラッチ手段によってラッチされたスレッドごとのバリッドビットがすべてパイプライン処理の停止を示していない場合に、外部から新たに入力されるリクエストを前記複数の処理手段へ投入すると決定する構成を採る。
この構成によれば、いずれのスレッドのパイプライン処理もストールしていない場合に、外部から新たに入力されるリクエストに対してパイプライン処理を開始させるため、処理中のリクエストに対して正常にパイプライン処理が実行されている間は、次々に新たなリクエストに対する処理を開始することができる。
また、本発明は、上記構成において、前記決定手段は、前記ラッチ手段によってラッチされた1つのスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該スレッドに属するリクエストであって前記格納手段によってレジスタに格納されたリクエストを前記複数の処理手段へ投入すると決定する構成を採る。
この構成によれば、1つのスレッドのパイプライン処理がストールした場合に、このスレッドに属するリクエストに対してパイプライン処理を開始させるため、パイプライン処理の再実行対象としてレジスタに格納されたリクエストに対して最優先でパイプライン処理を開始させることができ、ストールが発生したスレッドのリクエストに対して早急にパイプライン処理を実行することができる。
また、本発明は、上記構成において、前記決定手段は、前記ラッチ手段によってラッチされた複数のスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該複数のスレッドのうち前記複数の処理手段へ前回投入されたリクエストが属するスレッドとは異なるスレッドに属するリクエストを前記複数の処理手段へ投入すると決定する構成を採る。
この構成によれば、複数のスレッドのパイプライン処理がストールした場合に、前回パイプライン処理が開始されたスレッドとは異なるスレッドに属するリクエストに対してパイプライン処理を開始させる。このため、複数のスレッドが同時にストールした場合でも、1つのスレッドに属するリクエストのみに偏ってパイプライン処理の再実行が行われることがない。
また、本発明は、上記構成において、前記決定手段は、前記ラッチ手段によってラッチされた複数のスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該複数のスレッドのうち前記複数の処理手段へ前回リクエストが投入されてからの経過時間が最も長いスレッドに属するリクエストを前記複数の処理手段へ投入すると決定する構成を採る。
この構成によれば、複数のパイプライン処理がストールした場合に、前回パイプライン処理の再実行が行われてからの経過時間が最も長いスレッドに属するリクエストに対してパイプライン処理を開始させる。このため、複数のスレッドが同時にストールした場合でも、各スレッドのリクエストに対して公平にパイプライン処理を再実行させることができる。
また、本発明は、上記構成において、前記格納手段は、前記複数の処理手段に投入されたリクエストをスレッド別に前記複数の処理手段の数ずつ記憶する記憶手段を含み、対応するバリッドビットがパイプライン処理の停止を示すリクエストであって、最初に前記複数の処理手段に投入されたリクエストから順に前記記憶手段から出力してレジスタに格納する構成を採る。
この構成によれば、それぞれのスレッドについてパイプライン処理のサイクル数ずつリクエストを記憶し、ストールしたスレッドに属するリクエストのうち、最初にパイプライン処理が開始されたリクエストから順にレジスタに格納する。このため、パイプライン処理が実行中のリクエストを確実に記憶しておくことができ、パイプライン処理の再実行時に、スレッドごとにパイプライン処理が開始されたリクエストの順序を再現することができる。
また、本発明は、複数のスレッドに属するリクエストに対してパイプライン処理を実行し、リクエストに応じたキャッシュデータを出力させるキャッシュ制御方法であって、複数のスレッドに属するリクエストに対して、キャッシュデータを出力するパイプライン処理を構成する個々の処理を互いに独立して実行する複数の処理ステップと、1つのリクエストが前記複数の処理ステップの最終ステップに到達した際に当該リクエストが属するスレッドのパイプライン処理が停止する場合、前記複数の処理ステップのそれぞれに対応するウェイトポートのうちパイプライン処理が停止したスレッドに属するリクエストに対して処理中である処理ステップに対応するウェイトポートに、パイプライン処理が停止したことを示すバリッドビットをスレッド別に設定する設定ステップと、前記設定ステップにてパイプライン処理の停止を示すバリッドビットが設定されると、当該バリッドビットが設定されたウェイトポートに対応する処理ステップにおいて処理中のリクエストを順次レジスタに格納する格納ステップと、前記格納ステップにてレジスタに格納されたリクエストおよび外部から新たに入力されるリクエストの優先度を決定して、いずれか1つのリクエストに対して前記複数の処理ステップを開始させる制御ステップとを有するようにした。
この方法によれば、パイプライン処理のストールが発生した際に、パイプライン処理がストールしたことをリクエストに対応するバリッドビットによってスレッド別に記憶し、スレッド別のバリッドビットによって、パイプライン処理を再実行するリクエストを決定する。このため、1つのスレッドのパイプライン処理がストールしても、他のスレッドの処理を続行することができ、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上することができる。
本発明によれば、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上することができる。
図1は、一実施の形態に係る情報処理装置の要部構成を示すブロック図である。 図2は、一実施の形態に係る命令キャッシュ部の内部構成を示すブロック図である。 図3は、パイプライン処理に係るTLB処理部、タグRAM処理部、およびデータRAM処理部の具体的構成を示すブロック図である。 図4は、一実施の形態に係るバリッドビットと再投入リクエストの出力ポートとの対応を示す図である。 図5は、一実施の形態に係るプライオリティ決定部の内部構成を示すブロック図である。 図6は、一実施の形態に係る優先度の決定処理を説明する図である。 図7は、一実施の形態に係るパイプライン処理を示すフロー図である。 図8は、一実施の形態に係る優先度決定処理を示すフロー図である。 図9は、一実施の形態に係るパイプライン処理のタイムチャートの一例を示す図である。 図10は、ストール発生時のリクエストおよびバリッドビットの状態を模式的に示す図である。 図11は、図10に続く図である。 図12は、図11に続く図である。 図13は、図12に続く図である。 図14は、図13に続く図である。 図15は、図14に続く図である。 図16は、図15に続く図である。
符号の説明
130 命令制御部
140 命令キャッシュ部
141 セレクタ
142a サイクルT処理部
142b サイクルM処理部
142c サイクルB処理部
142d サイクルR処理部
143a、143b、143c、143d ウェイトポート
144 プライオリティ決定部
144a−0 TH0用レジスタ更新部
144a−1 TH1用レジスタ更新部
144b−0 TH0用レジスタ部
144b−1 TH1用レジスタ部
144c 前回出力用レジスタ部
144d 優先度決定部
145 TLB処理部
146 タグRAM処理部
147 データRAM処理部
148 リクエスト記憶部
149 レジスタ部
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。本実施の形態の骨子は、パイプライン処理のストールが発生した場合に、複数のスレッドそれぞれについて各サイクルにおけるリクエストの有無を記録し、ストールの発生原因となったスレッドのリクエストのみをパイプラインに再投入し、他のスレッドのリクエストについては処理を続行することである。
図1は、本実施の形態に係る情報処理装置の要部構成を示すブロック図である。同図に示す情報処理装置は、CPU100、二次キャッシュ部200、および主記憶部300を有している。
CPU100は、二次キャッシュ部200または主記憶部300から命令やデータを読み出したり、読み出された命令に従ってデータに対する演算処理を行ったり、演算処理されたデータを二次キャッシュ部200または主記憶部300に書き込んだりする。具体的には、CPU100は、演算処理部110、データキャッシュ部120、命令制御部130、および命令キャッシュ部140を有している。
演算処理部110は、命令制御部130から命令を受け取り、命令に従ってデータキャッシュ部120からデータを読み出したり、データに対する演算処理を実行したり、演算処理後のデータをデータキャッシュ部120に書き込んだりする。
データキャッシュ部120は、データを一時的に記憶するキャッシュメモリを備えており、演算処理部110によって使用されるデータを格納する。また、データキャッシュ部120は、必要に応じて二次キャッシュ部200からデータを読み出したり、二次キャッシュ部200へデータを書き込んだりする。
命令制御部130は、命令のフェッチを要求するリクエストを命令キャッシュ部140へ送出し、リクエストに応じた命令を命令キャッシュ部140から取得する。このとき、命令制御部130は、複数のスレッドごとにリクエストを管理しており、それぞれのスレッドに属するリクエストを順番に命令キャッシュ部140へ送出する。そして、命令制御部130は、命令キャッシュ部140から取得された命令を演算処理部110へ受け渡す。
命令キャッシュ部140は、命令を一時的に記憶するキャッシュメモリを備えており、命令制御部130から送出されたリクエストを受け取ると、パイプライン処理を実行して要求された命令をキャッシュメモリから命令制御部130へ出力する。また、命令キャッシュ部140は、必要に応じて二次キャッシュ部200から命令を読み出したり、二次キャッシュ部200へ命令を書き込んだりする。なお、命令キャッシュ部140の具体的な構成および動作については、後に詳述する。
二次キャッシュ部200は、命令およびデータを一時的に記憶するキャッシュメモリを備えており、CPU100のデータキャッシュ部120および命令キャッシュ部140との間で命令やデータをやり取りするとともに、必要に応じて主記憶部300から命令またはデータを読み出したり、主記憶部300へ命令またはデータを書き込んだりする。
主記憶部300は、情報処理装置のメインメモリを備えており、CPU100による演算処理に必要な命令およびデータをすべて格納している。そして、これらの命令およびデータのうち、頻繁に使用されるものが二次キャッシュ部200やCPU100内のデータキャッシュ部および命令キャッシュ部140に格納されている。
図2は、本実施の形態に係る命令キャッシュ部140の内部構成を示すブロック図である。同図に示す命令キャッシュ部140は、セレクタ141、サイクルT処理部142a、サイクルM処理部142b、サイクルB処理部142c、サイクルR処理部142d、ウェイトポート143a〜143d、プライオリティ決定部144、TLB(Transfer look-aside buffer)処理部145、タグRAM(random access memory)処理部146、データRAM処理部147、リクエスト記憶部148、およびレジスタ部149を有している。なお、図2は、スレッドTH0およびスレッドTH1の2つのスレッドに属するリクエストが命令制御部130から送出される場合の命令キャッシュ部140の構成を示している。また、図2は、命令キャッシュ部140内の機能ブロックを示しており、実際に情報処理装置に実装される命令キャッシュの具体的構成を限定するものではない。
セレクタ141は、命令制御部130から送出されるスレッドごとのリクエスト、およびレジスタ部149に保持されているスレッドごとのリクエスト(図中「S0」および「S1」で示す)のいずれかを出力する。具体的には、セレクタ141は、プライオリティ決定部144から出力されるセレクト信号に従い、3つのリクエストのうち最も優先されるリクエストをサイクルT処理部142aへ出力する。
サイクルT処理部142aは、セレクタ141によって選択されたリクエストの仮想アドレスでTLB処理部145をアクセスし、対応する物理アドレス情報を取得する。そして、サイクルT処理部142aは、リクエストと共に物理アドレス情報をサイクルM処理部142bへ出力する。同時に、サイクルT処理部142aは、リクエストをリクエスト記憶部148の1つのポートに記憶させる。このとき、サイクルT処理部142aは、リクエスト記憶部148に設けられたスレッドごとの複数のポートを順番に使用してリクエストを記憶させる。すなわち、サイクルT処理部142aは、前回リクエストが記憶されてからの経過時間が最も長いポートを入力されたリクエストの記憶用のポートとする。また、後述するように、サイクルT処理部142aは、セレクタ141において選択されたリクエストのアドレスでタグRAMをアクセスし、ウェイごとに登録されているデータの物理アドレスを次サイクルの処理部へ出力させる。同様に、サイクルT処理部142aは、セレクタ141において選択されたリクエストのアドレスでデータRAMをアクセスし、ウェイごとのデータを次サイクルの処理部へ出力させる。
サイクルM処理部142bは、TLB処理部145から取得された物理アドレス情報とタグRAM処理部146におけるタグRAMの物理アドレスとを比較し、ウェイを決定する。すなわち、サイクルM処理部142bは、データRAM処理部147に設けられた複数のウェイのいずれかに要求された命令がキャッシュされているか否かを物理アドレスのマッチングにより判定し、命令がキャッシュされている場合には、命令がキャッシュされたウェイを特定する。そして、サイクルM処理部142bは、リクエストと共に命令がキャッシュされたウェイの情報をサイクルB処理部142cへ出力する。
なお、入力された物理アドレス情報に一致する物理アドレスがタグRAM処理部146に格納されていなければ、要求された命令がデータRAM処理部147に格納されていないことになり、キャッシュミスが生じる。
サイクルB処理部142cは、サイクルM処理部142bにおけるウェイの決定に従って、データRAM処理部147におけるデータRAMから出力されたデータをウェイセレクトして命令制御部130へ出力させる。このとき、サイクルB処理部142cは、命令制御部130へ出力される命令に、対応するリクエストの識別情報を付加する。そして、サイクルB処理部142cは、リクエストと共にデータRAM処理部147からの命令の出力が正常に実行されたか否かを示す結果情報をサイクルR処理部142dへ出力する。
サイクルR処理部142dは、リクエストおよび結果情報が入力されると、結果情報を参照してデータRAM処理部147から正常に命令が出力されたか否かを確認し、正常に処理が完了した場合には、その旨の完了信号を制御信号として命令制御部130へ送出する。また、サイクルR処理部142dは、例えばキャッシュミスの発生などにより処理をストールさせる必要がある場合には、その旨のビジー信号を制御信号として命令制御部130へ送出する。
これらのセレクタ141、サイクルT処理部142a、サイクルM処理部142b、サイクルB処理部142c、およびサイクルR処理部142dは、本実施の形態に係るパイプライン処理部を形成する。また、サイクルT処理部142aからサイクルR処理部142dまでの各処理部は、例えばキャッシュミスなどによりストールが発生する際、ストールの原因となったリクエストがサイクルR処理部142dへ入力された時点で処理を中断する。そして、それぞれの処理部は、ストールの原因となったリクエストと同一スレッドのリクエストに関する処理中である場合に、それぞれ対応するウェイトポート143a〜143dにおいてストールしたスレッドのバリッドビットを1にセットする。同様に、それぞれの処理部は、ストールの原因となったリクエストと同一スレッドのリクエストに関する処理中でない場合に、それぞれ対応するウェイトポート143a〜143dにおいてストールしたスレッドのバリッドビットを0にセットする。
具体的には、例えばスレッドTH0のリクエストに関してキャッシュミスが発生し、このリクエストがサイクルR処理部142dへ入力された時点で、サイクルT処理部142aがスレッドTH0に属するリクエストの処理中である場合、サイクルT処理部142aは、ウェイトポート143aにおけるスレッドTH0のバリッドビットTW0を1にセットし、サイクルR処理部142dは、ウェイトポート143dにおけるスレッドTH0のバリッドビットRW0を1にセットする。このように、バリッドビットが1にセットされたスレッドのリクエストは、再度パイプライン処理部に投入されることになる。
また、サイクルT処理部142aからサイクルR処理部142dまでの各処理部は、バリッドビットに1をセットするのと同時に、実行中の処理に対応するリクエストが記憶されているリクエスト記憶部148のポートの識別情報をウェイトポート143a〜143dにセットする。すなわち、上述した例では、サイクルT処理部142aおよびサイクルR処理部142dがそれぞれのリクエストを記憶するポートの識別情報をウェイトポート143aおよびウェイトポート143dにセットする。ポートの識別情報は、サイクルT処理部142aがリクエストをリクエスト記憶部148のポートに記憶する際に取得され、各処理部にリクエストと共に入力される。
ウェイトポート143a〜143dは、それぞれスレッドごとのバリッドビットを記憶しており、対応するサイクルの処理部142a〜142dにおける処理状況によってスレッドごとに1または0を取り得るバリッドビットを保持する。具体的には、ウェイトポート143a〜143dは、それぞれスレッドTH0およびスレッドTH1に対応する2つのバリッドビットを記憶している。すなわち、例えばウェイトポート143aは、スレッドTH0に対応するバリッドビットTW0とスレッドTH1に対応するバリッドビットTW1とを保持する。その他のウェイトポート143b〜143dも同様に、それぞれスレッドに対応するバリッドビットMW0、MW1、BW0、BW1、RW0、およびRW1を保持している。これらのバリッドビットは、初期状態ではすべて0にセットされている。
そして、いずれかのスレッドに対するパイプライン処理のストールが発生すると、ウェイトポート143a〜143dは、このスレッドのリクエストを処理中であった処理部142a〜142dに対応する2つのバリッドビットのうちストールが発生したスレッドのバリッドビットを1にセットする。このとき、ウェイトポート143a〜143dは、バリッドビットが1にセットされたリクエストを記憶するリクエスト記憶部148のポートの識別情報を同時に記憶する。すなわち、ウェイトポート143a〜143dは、ストールの発生によりパイプライン処理部への再投入が必要となったリクエストに対応するバリッドビットを1にセットする。このバリッドビットのセットは、スレッドごとに行われる。
さらに、ウェイトポート143a〜143dは、セレクタ141において選択されたリクエストに対応するバリッドビットを1から0に変更する。すなわち、セレクタ141において選択されたリクエストは、パイプライン処理部への再投入が実行されたため、対応するバリッドビットが初期状態の0に戻される。
プライオリティ決定部144は、ウェイトポート143a〜143dに保持されるバリッドビットからセレクタ141における出力の優先度を決定し、どのリクエストを出力させるかを示すセレクト信号をセレクタ141へ出力する。このとき、プライオリティ決定部144は、スレッドTH0に関するバリッドビットTW0、MW0、BW0、およびRW0のいずれかが1であったり、スレッドTH1に関するバリッドビットTW1、MW1、BW1、およびRW1のいずれかが1であったりする場合は、レジスタ部149に格納された再投入用のリクエストS0、S1を優先させる。なお、プライオリティ決定部144の具体的な構成および動作については、後に詳述する。
TLB処理部145は、命令制御部130が要求する命令の仮想アドレスと実際に命令が記憶されている物理アドレスとの対応関係を記憶している。そして、TLB処理部145は、サイクルT処理部142aからアクセスされることにより、サイクルT処理部142aに入力されたリクエストによって要求される命令の物理アドレス情報をサイクルT処理部142aへ提供する。
タグRAM処理部146は、データRAM処理部147にキャッシュされた命令の主記憶部300における物理アドレスを記憶している。そして、タグRAM処理部146は、サイクルT処理部142aによってアクセスされたラインの物理アドレスをウェイごとにサイクルM処理部142bへ提供する。すなわち、タグRAM処理部146は、データRAM処理部147に格納されている命令の物理アドレスをサイクルM処理部142bへ提供する。
データRAM処理部147は、例えばセットアソシアティブ方式のキャッシュメモリを備えており、命令制御部130によって頻繁に要求される命令を複数のウェイそれぞれに記憶している。そして、データRAM処理部147は、サイクルB処理部142cによってウェイセレクトされた命令を命令制御部130へ出力する。
ここで、図3を参照して、パイプライン処理におけるTLB処理部145、タグRAM処理部146、およびデータRAM処理部147の具体的構成および処理内容について説明しておく。図3においては、各サイクルの処理部142a〜142dの下に、各サイクルに関連する構成を図示している。
まず、サイクルTにおいては、仮想アドレスと物理アドレスの対応関係を記憶するTLB201から、リクエストに付随する仮想アドレス情報に対応する物理アドレス情報がレジスタ202へ出力される。同時に、リクエストによって指定されるラインの命令の物理アドレスがタグRAM205からレジスタ206へ出力される。さらに、複数のウェイ(図3においては2ウェイ)にそれぞれ命令を格納するデータRAM209からすべてのウェイの命令がレジスタ210へ出力される。
次に、サイクルMにおいては、レジスタ202に格納された物理アドレス情報とレジスタ206に格納されたウェイごとの物理アドレスとが比較部207によってマッチングされ、レジスタ202に格納された物理アドレス情報に一致する物理アドレスの命令を保持するデータRAM209のウェイ情報がレジスタ208へ出力される。このウェイ情報は、命令制御部130が要求する命令が格納されたデータRAM209のウェイを示している。また、サイクルMにおいては、レジスタ210に保持されたウェイごとの命令がレジスタ211へ出力される。
そして、サイクルBにおいては、レジスタ211に格納されたウェイごとの命令のうち、レジスタ208に格納されたウェイ情報に対応する命令がセレクタ212から出力される。これにより、データRAM209の複数のウェイそれぞれに格納された命令のうち、リクエストによって要求された命令が命令制御部130によって取得されることになる。また、サイクルBにおいては、レジスタ202に格納されていた物理アドレス情報がレジスタ203に格納され、続くサイクルRにおいては、この物理アドレス情報がレジスタ204に格納される。
このように、各サイクルにおいては、要求された命令の物理アドレス情報、タグRAM205に保持されたすべての物理アドレスのうちアクセスされたラインの物理アドレス、およびデータRAM209に保持されたすべての命令のうちアクセスされたラインの命令が各サイクルに対応するレジスタに格納された上で、それぞれのサイクルの処理が実行されるため、各サイクルの処理を互いに独立して実行することが可能であり、同時に複数のリクエストに対する処理を流れ作業のように実行するパイプライン処理が可能となる。本実施の形態においては説明を簡略化するため、以上のような処理が図2に示すパイプライン処理部、TLB処理部145、タグRAM処理部146、およびデータRAM処理部147によって実行されるものとする。
リクエスト記憶部148は、パイプライン処理部におけるサイクルTからサイクルRに対応する4つのポートをスレッドごとに備えており、サイクルT処理部142aから出力されるすべてのリクエストをスレッドごとのいずれかのポートに一時的に記憶する。そして、リクエスト記憶部148は、ウェイトポート143a〜143dにおけるバリッドビットを監視し、いずれかのスレッドに関するバリッドビットに1となったものが検出されると、このバリッドビットに対応するリクエストを順次ポートからレジスタ部149へ出力する。
具体的には、リクエスト記憶部148は、スレッドごとの4つのバリッドビットを監視し、図4に示す表に従ってリクエストを出力するポートを決定する。図4は、スレッドTH0およびスレッドTH1に関して共通に使用される表を示しており、TWからRWまでの4つのバリッドビットの値とリクエストを出力する出力ポートの識別情報を格納するウェイトポート143a〜143dとの対応関係を示している。なお、図中Sは、レジスタ部149にリクエストが格納されているか否かを示し、Sが1の時にはレジスタ部149がリクエストを保持中であることを示し、Sが0の時にはレジスタ部149が空いていることを示す。また、図4において、「*」は、その値が出力ポートの決定に無関係であることを示し、例えばバリッドビットRWが1、かつレジスタ部149が空いていれば、他のバリッドビットの値とは無関係に、バリッドビットRWを格納するウェイトポート143dに識別情報が格納されたポートが出力ポートに決定される。
図4から明らかなように、レジスタ部149が空いているときには、最も先行してパイプライン処理部へ投入されたリクエストがレジスタ部149へ出力される。また、レジスタ部149がリクエストを保持中であるときには、レジスタ部149に保持されたリクエストの次にパイプライン処理部へ投入されたリクエストが、レジスタ部149が空くのと同時に出力されることになる。すなわち、例えばバリッドビットBW、RWが1でレジスタ部149がリクエストを保持中である場合、レジスタ部149に保持されているリクエストはバリッドビットRWに対応するリクエストであり、このリクエストがパイプライン処理部へ再投入されていないことから、まだバリッドビットRWが0に戻されていないと考えられる。そこで、図4においては、バリッドビットBWを格納するウェイトポート143cに識別情報が格納されたポートが出力ポートに決定され、レジスタ部149が空き次第、バリッドビットBWに対応するリクエストがリクエスト記憶部148から出力される。結果として、レジスタ部149に格納されるリクエストの順序は、パイプライン処理部へ投入された順序通りとなる。
その後、プライオリティ決定部144は、出力ポートから出力されてパイプライン処理部へ再投入されるリクエストに対応するウェイトポート143a〜143dのバリッドビットを0に変更する。すなわち、上記の例では、リクエスト記憶部148がバリッドビットRWを格納するウェイトポート143dに格納された識別情報の出力ポートからリクエストを出力した後、プライオリティ決定部144は、このリクエストがセレクタ141において選択される際に、バリッドビットRWを1から0に変更する。また、このとき、レジスタ部149が空くことから、バリッドビットBWに対応するリクエストがリクエスト記憶部148からレジスタ部149へ出力される。
他の例を挙げると、スレッドTH0に関するパイプライン処理のストールが発生した際に、スレッドTH0のリクエストが例えばサイクルT処理部142aおよびサイクルR処理部142dに入力されている場合、バリッドビットTW0、RW0が1にセットされている。そして、バリッドビットRW0が1であることから、リクエスト記憶部148は、図4の表に従って、バリッドビットRW0に対応して記憶された識別情報のポートからリクエストを出力する。そして、このリクエストがセレクタ141を経由してパイプライン処理部へ再投入される際に、プライオリティ決定部144は、バリッドビットRW0を0に変更する。これにより、バリッドビットTW0のみが1となることから、リクエスト記憶部148は、図4の表に従って、バリッドビットTW0に対応して記憶された識別情報のポートからリクエストを出力する。
このように、リクエスト記憶部148は、いずれかのスレッドに関してパイプライン処理のストールが発生すると、図4の表に従ってリクエストを出力する出力ポートを決定することにより、後段のサイクルまでパイプライン処理が進行していたリクエストほど早くレジスタ部149へ出力する。したがって、先行してパイプライン処理部に投入されたリクエストほど早くパイプライン処理部への再投入の対象となり、それぞれのスレッドにおけるリクエストの投入順序が崩れることがない。
レジスタ部149は、リクエスト記憶部148から出力されるリクエストをスレッド別に保持し、セレクタ141へ出力する。レジスタ部149にリクエストが保持されている期間は、プライオリティ決定部144によってリクエストの出力の優先度が決定されているサイクルであり、パイプライン処理のサイクルPに相当する。したがって、本実施の形態におけるパイプライン処理は、サイクルP、サイクルT、サイクルM、サイクルB、およびサイクルRがこの順序で繰り返される処理である。
図5は、本実施の形態に係るプライオリティ決定部144の内部構成を示すブロック図である。図5に示すプライオリティ決定部144は、TH0用レジスタ更新部144a−0、TH1用レジスタ更新部144a−1、TH0用レジスタ部144b−0、TH1用レジスタ部144b−1、前回出力用レジスタ部144c、および優先度決定部144dを有している。
各スレッド用のレジスタ更新部144a−0、144a−1は、それぞれスレッドごとの4つのバリッドビットのうち1つでも値が1(すなわち「バリッド」)のバリッドビットがあれば、それぞれのスレッド用のレジスタ部144b−0、144b−1に1をセットする。また、いずれかのスレッドがセレクト信号により選択された場合に、該当するスレッドのレジスタ更新部144a−0、144a−1は、対応するレジスタ部144b−0、144b−1を0にリセットする。なお、レジスタ更新部144a−0、144a−1は、レジスタ部144b−0、144b−1に対する1のセットと0へのリセットとが競合した場合には、1のセットを優先する。
したがって、レジスタ更新部144a−0、144a−1は、対応するスレッドのパイプライン処理がストールしてリクエストの再投入が必要となった場合に、ストールしたスレッドに対応するレジスタ部144b−0、144b−1に1をセットすることになる。
スレッドごとのレジスタ部144b−0、144b−1は、対応するレジスタ更新部144a−0、144a−1によって更新され、保持した0または1を1サイクルの処理時間に対応する1クロックごとに優先度決定部144dへ出力する。
前回出力用レジスタ部144cは、優先度決定部144dから前回出力されたセレクト信号がスレッドTH0のリクエストの再投入を選択する信号であった場合に0を保持し、前回出力されたセレクト信号がスレッドTH1のリクエストの再投入を選択する信号であった場合に1を保持する。また、前回出力用レジスタ部144cは、前回出力されたセレクト信号が命令制御部130からの新たなリクエストの投入を選択する信号であった場合は、既に保持された値を継続して保持する。
優先度決定部144dは、スレッドごとのレジスタ部144b−0、144b−1および前回出力用レジスタ部144cに保持されたビットに基づいて、セレクタ141に入力されるリクエストの優先度を決定し、どのリクエストを出力させるかを示すセレクト信号をセレクタ141へ出力する。
具体的には、優先度決定部144dは、図6に示す表に従ってリクエストの優先度を決定し、セレクト信号を出力する。図6は、TH0用レジスタ部144b−0、TH1用レジスタ部144b−1、および前回出力用レジスタ部144cに保持されたそれぞれのビットの値とセレクト信号との対応関係を示している。ここで、図6中のセレクト信号Eは、命令制御部130から新たに入力されたリクエストをセレクタ141から出力させ、セレクト信号TH0は、レジスタ部149から再投入されるスレッドTH0のリクエストをセレクタ141から出力させ、セレクト信号TH1は、レジスタ部149から再投入されるスレッドTH1のリクエストをセレクタ141から出力させる。また、図6において、「*」は、その値がリクエストの優先度の決定に無関係であることを示し、例えばスレッドごとのレジスタ部144b−0、144b−1内に保持されたビットがいずれも0であれば、前回出力用レジスタ部144c内に保持されたビットの値とは無関係に、命令制御部130から出力されたリクエストを優先するセレクト信号Eが優先度決定部144dから出力される。
図6に示す表から明らかなように、優先度決定部144dは、スレッドごとのレジスタ部144b−0、144b−1の双方に0が保持されていれば、命令制御部130からの新たなリクエストを優先させ、スレッドごとのレジスタ部144b−0、144b−1の一方に1が保持されていれば、1を保持しているレジスタ部に対応するスレッドのリクエストを優先させる。これは、パイプライン処理がストールしたスレッドがある場合には、このスレッドのリクエストが最優先されることになり、レジスト部149からサイクルT処理部142aへ再投入されることを意味している。
また、スレッドごとのレジスタ部144b−0、144b−1の双方に1が保持されていれば、優先度決定部144dは、前回出力用レジスタ部144cに保持されたビットを参照し、前回とは異なるスレッドのリクエストを選択するセレクト信号を出力する。すなわち、スレッドTH0、TH1の双方のパイプライン処理がストールしていれば、優先度決定部144dは、2つのスレッドのリクエストを交互にサイクルT処理部142aに再投入させる。
なお、本実施の形態においては、スレッドTH0およびスレッドTH1の2つのスレッドのリクエストが並行して命令キャッシュ部140に入力されるものとしたが、3つ以上のスレッドのリクエストが並行して命令キャッシュ部140に入力される場合には、これらのスレッドのリクエストが順番にサイクルT処理部142aに再投入されるようにすれば良い。このとき、優先度決定部144dは、前回リクエストが再投入されてからの経過時間が最も長いスレッドのリクエストを再投入するLRU(Least Recently Used)方式を採用しても良い。また、優先度決定部144dは、スレッドごとのレジスタ部144b−0、144b−1のいずれかに1が保持されてから所定時間経過した後にセレクト信号を出力する。
次いで、上記のように構成された命令キャッシュ部140におけるパイプライン処理について、図7に示すフロー図を参照しながら説明する。なお、図7に示すフロー図は、1つのリクエストに対する命令キャッシュ部140内での処理を示しており、このリクエストに対する処理が実行されている間にも、同じスレッドのリクエストや異なるスレッドのリクエストに対する処理が流れ作業のように実行されている。
まず、命令制御部130からスレッドごとのリクエストがパイプライン処理部へ投入され(ステップS101)、セレクタ141を経てサイクルT処理部142aに入力される。このとき、プライオリティ決定部144によって、セレクタ141における優先度を決定する処理が実行されているが、ここでは、命令制御部130からの新たなリクエストが優先されたものとして、優先度決定処理の説明を省略する。セレクタ141における優先度決定処理は、パイプライン処理の最初のサイクルPの処理に相当する。
リクエストがサイクルT処理部142aに入力されると、サイクルT処理部142aによって、リクエストと共に入力された仮想アドレス情報に対応する物理アドレス情報をTLB処理部145から取得する(ステップS102)。サイクルT処理部142aによって取得される物理アドレス情報は、命令制御部130が要求する命令の主記憶部300における物理アドレスである。そして、取得された物理アドレス情報およびリクエストは、サイクルT処理部142aからサイクルM処理部142bへ出力される。また、サイクルT処理部142aによって、リクエスト記憶部148におけるリクエストが属するスレッド用のいずれかのポートが選択され、リクエストが格納されてポートの識別情報が取得される。このとき、サイクルT処理部142aによって選択されるポートは、該当するスレッド用のポートのうち前回リクエストを記憶してからの経過時間が最も長いポートである。以上の処理がサイクルTの処理に相当する。
リクエストおよび物理アドレス情報がサイクルM処理部142bに入力されると、サイクルM処理部142bによって、入力された物理アドレス情報に一致する物理アドレスがタグRAM処理部146に記憶されているか否かが判定される(ステップS103)。そして、サイクルM処理部142bによって、命令制御部130が要求する命令が格納されたデータRAM処理部147内のウェイが特定される。そして、命令が格納されたデータRAM処理部147のウェイ情報およびリクエストは、サイクルM処理部142bからサイクルB処理部142cへ出力される。このとき、サイクルM処理部142bに入力された物理アドレス情報に一致する物理アドレスがタグRAM処理部146に記憶されていなければ、命令制御部130が要求する命令がデータRAM処理部147に格納されていないことになり、キャッシュミスが発生することになる。このため、サイクルM処理部142bからサイクルB処理部142cへ、キャッシュミスの発生が通知される。以上の処理がサイクルMの処理に相当する。
リクエストおよびウェイ情報がサイクルB処理部142cに入力されると、サイクルB処理部142cの制御によって、ウェイ情報によって示されるデータRAM処理部147のウェイから命令が命令制御部130へ出力される(ステップS104)。キャッシュミスが発生していなければ、命令制御部130が要求する命令がデータRAM処理部147から出力され、この命令は、命令制御部130によって取得され、演算処理部110へ受け渡される。また、キャッシュミスが発生していれば、データRAM処理部147から命令制御部130へ命令が出力されることはない。このようなデータRAM処理部147からの命令の出力が正常に実行されたか否かを示す結果情報とリクエストは、サイクルB処理部142cからサイクルR処理部142dへ出力される。
リクエストおよび結果情報がサイクルR処理部142dに入力されると、サイクルR処理部142dによって、例えばキャッシュミスの発生などに伴うパイプライン処理の一時中断が必要か否かが結果情報に基づいて判定される(ステップS105)。この判定の結果、サイクルBまでの処理が正常に完了し、命令がデータRAM処理部147から命令制御部130へ出力されていれば(ステップS105No)、パイプライン処理の完了を通知する完了信号が制御信号として、サイクルR処理部142dから命令制御部130へ送出される(ステップS107)。この場合には、以上の処理がサイクルRの処理に相当し、1つのリクエストに対するパイプライン処理が終了したことになる。
一方、例えばキャッシュミスの発生などにより、いずれかのスレッドのパイプライン処理にストールが発生する場合は(ステップS105Yes)、命令キャッシュ部140内のパイプライン処理がビジー状態であることを通知するビジー信号が制御信号として、サイクルR処理部142dから命令制御部130へ送出される(ステップS106)。このビジー信号は、パイプライン処理がストールしたスレッドの情報を含んでおり、ビジー信号が命令制御部130によって受信されると、以後、パイプラインがストールしたスレッドのリクエストが命令制御部130から命令キャッシュ部140へ出力されなくなる。
また、パイプライン処理部においては、ストールが発生したことにより、サイクルT処理部142aからサイクルR処理部142dまでの各処理部によって、処理中のリクエストが属するスレッドが確認され、処理中のリクエストがストール発生スレッドに属するものである場合には、対応するウェイトポート143a〜143dのバリッドビットが1に設定される(ステップS108)。すなわち、例えばスレッドTH0に対するパイプライン処理にストールが発生し、サイクルR処理部142dにスレッドTH0のリクエストが到達した時点でサイクルM処理部142bがスレッドTH0のリクエストに関する処理中である場合には、サイクルM処理部142bおよびサイクルR処理部142dに対応するウェイトポート143b、143dのスレッドTH0に対応するバリッドビットTW0、RW0が1に設定される。同時に、処理中のリクエストがストール発生スレッドに属するものでない場合には、対応するウェイトポート143a〜143dのバリッドビットが0に設定される。ストールが発生した場合には、以上の処理がサイクルRの処理に相当する。
以上のパイプライン処理において、ストールが発生したスレッドに関しては処理が中断されるが、この間、ストールが発生していないスレッドに関しては処理が続行される。すなわち、例えばスレッドTH0のパイプライン処理にストールが発生しても、スレッドTH1のパイプライン処理が正常に実行されていれば、既に実行中であるスレッドTH1のパイプライン処理はスレッドTH0のパイプライン処理に関係なく続行される。したがって、複数のスレッドに対するパイプライン処理が並行して実行される場合に、いずれかのスレッドのパイプライン処理がストールしても、他のスレッドのパイプライン処理が続行され、確実に処理効率を向上することができる。
そして、パイプライン処理がストールしたスレッドのバリッドビットが1に設定されると、所定時間の間処理が待機状態となり(ステップS109)、所定時間経過後(ステップS109Yes)、バリッドビットを監視しているリクエスト記憶部148によって、パイプライン処理部へ再投入するリクエストが決定される(ステップS110)。具体的には、リクエスト記憶部148によって図4に示した表が用いられることにより、バリッドビットに1が設定されているリクエストが順次パイプライン処理部へ再投入されることになる。すなわち、ウェイトポート143a〜143dは、スレッドごとのバリッドビットを記憶しているため、ストール発生スレッドのリクエストが順次再投入対象のリクエストに決定される。このとき、図4から明らかなように、パイプライン処理が先行しているリクエストほど先に再投入対象となるため、ストール発生スレッド内のリクエストの処理順番が崩れることはない。
そして、各ウェイトポート143a〜143dのスレッドごとのバリッドビットには、リクエスト記憶部148においてリクエストが記憶されたポートの識別情報が対応付けられており、図4に示した表が使用されて再投入対象に決定されたバリッドビットに対応するポートからリクエストがレジスタ部149へ出力される。このリクエストは、レジスタ部149によって保持される。同時に、リクエスト記憶部148によって、レジスタ部149へ出力されたリクエストに対応するウェイトポート143a〜143dのバリッドビットが0に戻される。
レジスタ部149に再投入対象のリクエストが保持されると、プライオリティ決定部144によって、セレクタ141における出力の優先度を決定する優先度決定処理が実行される(ステップS111)。この優先度決定処理の間は、レジスタ部149にリクエストが保持されており、優先度決定処理はサイクルPの処理に相当する。ここでの優先度決定処理は、再投入対象のリクエストに対する優先度決定処理であるため、図7において最後の処理となっているが、実際の優先度決定処理は、パイプライン処理部へ投入されるリクエストを決定する処理であり、パイプライン処理の最初の工程である。優先度決定処理の内容については、後に詳述する。
プライオリティ決定部144による優先度決定処理によってセレクタ141からの出力が再投入対象のリクエストに決定されると、レジスタ部149に保持されたリクエストがセレクタ141を介してサイクルT処理部142aに再投入される(ステップS112)。以後、上述したステップS102のサイクルT処理から順番にパイプライン処理が実行され、ストール発生スレッドのパイプライン処理がリクエストの順番を崩すことなく再実行される。
次に、本実施の形態に係る優先度決定処理について、図8に示すフロー図を参照しながら説明する。
まず、レジスタ更新部144a−0によって、ウェイトポート143a〜143dにおけるスレッドTH0のバリッドビット(TW0、MW0、BW0、およびRW0)の中に1が設定されているものがあるか否かが判定され(ステップS201)、1つでも1が設定されているバリッドビットがあれば(ステップS201Yes)、TH0用レジスタ部144b−0に値が1のビットを格納する(ステップS202)。また、1が設定されているバリッドビットがなければ(ステップS201No)、TH0用レジスタ部144b−0には、値が0のビットが初期状態のまま格納されている(ステップS203)。
同様に、レジスタ更新部144a−1によって、ウェイトポート143a〜143dスレッドTH1のバリッドビット(TW1、MW1、BW1、およびRW1)の中に1が設定されているものがあるか否かが判定され(ステップS204)、1つでも1が設定されているバリッドビットがあれば(ステップS204Yes)、TH1用レジスタ部144b−1に値が1のビットを格納する(ステップS205)。また、1が設定されているバリッドビットがなければ(ステップS204No)、TH1用レジスタ部144b−1には、値が0のビットが初期状態のまま格納されている(ステップS206)。
そして、優先度決定部144dによって、スレッドごとのレジスタ部144b−0、144b−1および前回出力用レジスタ部144cに格納されたビットからセレクタ141における出力の優先度が判定され、セレクト信号が決定される(ステップS207)。セレクト信号の決定は、図6に示した表を用いて実行され、決定されたセレクト信号は、セレクタ141へ送出される(ステップS208)。
すなわち、スレッドごとのレジスタ部144b−0、144b−1に格納されたビットの値がいずれも0である場合には、命令制御部130からの新たなリクエストを優先させる旨のセレクト信号Eがセレクタ141へ送出される。また、スレッドごとのレジスタ部144b−0、144b−1に格納されたビットの値のいずれか一方のみが1である場合には、1が格納されたレジスタ部に対応するスレッドに属するリクエストを優先させる旨のセレクト信号TH0またはセレクト信号TH1がセレクタ141へ送出される。
さらに、スレッドごとのレジスタ部144b−0、144b−1に格納されたビットの値がいずれも1である場合には、前回出力用レジスタ部144cの内容が確認され、前回優先されたリクエストが属するスレッドとは異なるスレッドに属するリクエストを優先させる旨のセレクト信号TH0またはセレクト信号TH1がセレクタ141へ送出される。具体的には、例えば前回はスレッドTH0のリクエストを優先させる旨のセレクト信号TH0が送出されていれば、今回はスレッドTH1のリクエストを優先させる旨のセレクト信号TH1が送出される。これにより、複数のスレッドに関するパイプライン処理が同時にストールしている場合に、これらのスレッドのリクエストを公平にパイプライン処理部へ再投入させ、スレッド間での処理時間の偏りを排除することができる。
セレクト信号がセレクタ141へ送出されると、選択されたスレッドに対応するレジスタ部144b−0、144b−1がリセットされ(ステップS209)、優先度決定処理が終了する。この優先度決定処理は、それぞれのリクエストに対するサイクルPの処理に相当し、パイプライン処理部へリクエストが投入(または再投入)されるか否かが決定される処理である。
次に、本実施の形態に係るパイプライン処理の具体例について、図9〜16を参照して説明する。図9は、スレッドTH0に属するリクエスト0−1、0−2と、スレッドTH1に属するリクエスト1−1、1−2とが本実施の形態に係る命令キャッシュ部140に投入された場合の、各レジスタ部におけるビットおよびビジー信号の状態を示すタイムチャートである。
ここでは、スレッドTH0に属するリクエストとスレッドTH1に属するリクエストとが交互に命令キャッシュ部140に投入されるものとする。すなわち、クロック2においてリクエスト0−1に対するサイクルPの処理が開始され、クロック3においてリクエスト1−1に対するサイクルPの処理が開始され、クロック4においてリクエスト0−2に対するサイクルPの処理が開始され、クロック5においてリクエスト1−2に対するサイクルPの処理が開始される。
これらのリクエストに対するパイプライン処理は並行して実行されるが、スレッドTH0に属するリクエスト0−1に関してキャッシュミスが発生すると、スレッドTH0については、リクエスト0−1がサイクルRの処理まで進行したクロック6の時点でストールが発生する。このとき、同じスレッドTH0に属するリクエスト0−2は、サイクルMの処理まで進行している。したがって、図10に示すように、クロック6の完了時には、リクエスト0−1が入力されているサイクルR処理部142dに対応するウェイトポート143dのバリッドビットRW0が1に設定され、リクエスト0−2が入力されているサイクルM処理部142bに対応するウェイトポート143bのバリッドビットMW0が1に設定される。同時に、サイクルR処理部142dからは、スレッドTH0に関してストールが発生したことを示すビジー信号0が命令制御部130へ送出される。
一方、この時点では、スレッドTH1に関してはストールが発生しておらず、スレッドTH1に属するリクエストに対する処理は続行される。しかし、スレッドTH1に属するリクエスト1−1に関してキャッシュミスが発生すると、スレッドTH1については、リクエスト1−1がサイクルRの処理まで進行したクロック7の時点でストールが発生する。このとき、同じスレッドTH1に属するリクエスト1−2は、サイクルMの処理まで進行している。したがって、図11に示すように、クロック7の完了時には、リクエスト1−1が入力されているサイクルR処理部142dに対応するウェイトポート143dのバリッドビットRW1が1に設定され、リクエスト1−2が入力されているサイクルM処理部142bに対応するウェイトポート143bのバリッドビットMW1が1に設定される。同時に、サイクルR処理部142dからは、スレッドTH1に関してストールが発生したことを示すビジー信号1が命令制御部130へ送出される。
そして、スレッドTH0に関するストールが発生してから所定の時間(ここでは5クロック)が経過すると、リクエスト記憶部148によって、ウェイトポート143a〜143dに保持されたバリッドビットTW0、MW0、BW0、およびRW0が参照され、ストールしたスレッドTH0に属し、最初にパイプライン処理部に投入されたリクエスト0−1がレジスタ部149へ格納される。また、ウェイトポート143a〜143dに保持されたバリッドビットTW1、MW1、BW1、およびRW1が参照され、ストールしたスレッドTH1に属し、先にパイプライン処理部に投入されたリクエスト1−1がレジスタ部149へ格納される。すなわち、図12に示すように、クロック12においては、バリッドビットMW0、RW0、MW1、およびRW1が1であるため、図4に示す表からバリッドビットRW0およびRW1に対応するリクエスト0−1および1−1がレジスタ部149に格納される。
また、クロック12においては、ウェイトポート143a〜143dにおけるバリッドビットMW0、RW0、MW1、およびRW1が1であることから、スレッドごとのレジスタ部144b−0、144b−1の双方に値が1のビットが格納される。ここでは、前回出力用レジスタ部144cに1が格納されているものとすると、クロック12における優先度決定処理では、スレッドTH0に属するリクエストをパイプライン処理部へ再投入することが決定され、クロック13においては、リクエスト0−1に対するサイクルTの処理が開始されることになる(図13参照)。
そして、レジスタ部149にはスレッドTH0に対応するリクエストが格納されていないことになるため、リクエスト記憶部148によって、ウェイトポート143a〜143dに保持されたバリッドビットTW0、MW0、BW0、およびRW0が参照され、MW0が1であることから、リクエスト0−2がレジスタ部149へ格納される。すなわち、図13に示すように、クロック13においては、バリッドビットMW0、MW1、およびRW1が1であるため、図4に示す表からバリッドビットMW0およびRW1に対応するリクエスト0−2およびリクエスト1−1がレジスタ部149に格納される。
また、クロック13においては、ウェイトポート143a〜143dにおけるバリッドビットMW0、MW1、およびRW1が1であることから、スレッドごとのレジスタ部144b−0、144b−1の双方に値が1のビットが格納される。また、クロック12においてスレッドTH0を選択するセレクト信号TH0が出力されているため、前回出力用レジスタ部144cには、値が0のビットが格納されている。このため、クロック13における優先度決定処理では、スレッドTH1に属するリクエストをパイプライン処理部へ再投入することが決定され、クロック14においては、リクエスト1−1に対するサイクルTの処理が開始されることになる(図14参照)。このように、クロック13においてスレッドTH1のリクエストがパイプライン処理部へ再投入されることにより、プライオリティ決定部144によって、ウェイトポート143dのバリッドビットRW1が0に戻される。
その後、レジスタ部149にはスレッドTH1に対応するリクエストが格納されていないことになるため、リクエスト記憶部148によって、ウェイトポート143a〜143dに保持されたバリッドビットTW1、MW1、BW1、およびRW1が参照され、MW1が1であることから、リクエスト1−2がレジスタ部149へ格納される。すなわち、図14に示すように、クロック14においては、バリッドビットMW0およびMW1が1であるため、図4に示す表からバリッドビットMW0およびMW1に対応するリクエスト0−2およびリクエスト1−2がレジスタ部149に格納される。
また、クロック14においては、ウェイトポート143a〜143dにおけるバリッドビットMW0およびMW1が1であることから、スレッドごとのレジスタ部144b−0、144b−1の双方に値が1のビットが格納される。また、クロック13においてスレッドTH1を選択するセレクト信号TH1が出力されているため、前回出力用レジスタ部144cには、値が1のビットが格納されている。このため、クロック14における優先度決定処理では、スレッドTH0に属するリクエストをパイプライン処理部へ再投入することが決定され、クロック15においては、リクエスト0−2に対するサイクルTの処理が開始されることになる(図15参照)。このように、クロック14においてスレッドTH0のリクエストがパイプライン処理部へ再投入されることにより、プライオリティ決定部144によって、ウェイトポート143bのバリッドビットMW0が0に戻される。
そして、クロック15においては、ウェイトポート143a〜143dにおけるバリッドビットMW1が1であることから、TH1用レジスタ部144b−1のみに値が1のビットが格納される。このため、クロック15における優先度決定処理では、スレッドTH1に属するリクエストをパイプライン処理部へ再投入することが決定され、クロック16においては、リクエスト1−2に対するサイクルTの処理が開始されることになる(図16参照)。このように、クロック15においてスレッドTH1のリクエストがパイプライン処理部へ再投入されることにより、プライオリティ決定部144によって、ウェイトポート143bのバリッドビットMW1が0に戻される。
こうして、図16に示すように、ウェイトポート143a〜143dに保持されるバリッドビットがすべて0になるとともに、順序を崩すことなくストール発生時に処理中であったリクエストがパイプライン処理部へ再投入されたことになる。このため、複数のスレッドに属するリクエストが並行して処理されるパイプライン処理にストールが発生した場合にも、それぞれのスレッドにおいてリクエストの順序を遵守して正常にリクエストに応じた命令を命令制御部130へ出力することができる。また、ウェイトポート143a〜143dにおいては、スレッドごとのバリッドビットを保持するため、いずれかのスレッドのパイプライン処理にストールが発生しても、他のスレッドに関してはパイプライン処理部へ投入済みのリクエストに対する処理を続行することができ、処理効率を向上することができる。
以上のように、本実施の形態によれば、パイプライン処理を構成する複数の処理それぞれについて、複数のスレッドのパイプライン処理がストールしたか否かを示すスレッドごとのバリッドビットをウェイトポートが保持し、バリッドビットに基づいてパイプライン処理部へ再投入するスレッド内でのリクエストの順序を決定するとともに、複数のスレッドのリクエストおよび外部から新たに入力されるリクエストのいずれを優先させるかを決定する。このため、スレッドごとにリクエストの再投入に関する管理を行うことができ、1つのスレッドのパイプライン処理がストールしても、既にパイプライン処理が開始されている他のスレッドの処理を続行することができ、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上することができる。
本発明は、複数のスレッドに対するパイプライン処理が実行される場合に、確実に処理効率を向上する際に適用することができる。

Claims (9)

  1. 複数のスレッドに属するリクエストに対してパイプライン処理を実行し、リクエストに応じたキャッシュデータを出力させるキャッシュ制御装置であって、
    複数のスレッドに属するリクエストに対して、キャッシュデータを出力するパイプライン処理を構成する個々の処理を互いに独立して実行する複数の処理手段と、
    前記複数の処理手段それぞれに対応して設けられ、個々の処理手段において処理中のリクエストに対応し当該リクエストが属するスレッドのパイプライン処理が停止したか否かを示すスレッド別のバリッドビットを保持する複数の保持手段と、
    パイプライン処理の停止を示すバリッドビットが保持された保持手段に対応する処理手段において処理中のリクエストを順次レジスタに格納する格納手段と、
    前記格納手段によってレジスタに格納されたリクエストおよび外部から新たに入力されるリクエストの優先度を決定して、いずれか1つのリクエストを前記複数の処理手段へ投入する投入手段と
    を有することを特徴とするキャッシュ制御装置。
  2. 前記格納手段は、
    前記複数の保持手段によって保持されたバリッドビットに基づいて、パイプライン処理が停止したスレッドに属するリクエストを前記複数の処理手段に投入された順序でレジスタに格納することを特徴とする請求項1記載のキャッシュ制御装置。
  3. 前記投入手段は、
    前記複数の保持手段によって保持されたバリッドビットをスレッドごとにラッチするラッチ手段と、
    前記ラッチ手段によってラッチされたバリッドビットおよび前記複数の処理手段へ前回投入されたリクエストに応じて今回前記複数の処理手段へ投入するリクエストを決定する決定手段と
    を含むことを特徴とする請求項1記載のキャッシュ制御装置。
  4. 前記決定手段は、
    前記ラッチ手段によってラッチされたスレッドごとのバリッドビットがすべてパイプライン処理の停止を示していない場合に、外部から新たに入力されるリクエストを前記複数の処理手段へ投入すると決定することを特徴とする請求項3記載のキャッシュ制御装置。
  5. 前記決定手段は、
    前記ラッチ手段によってラッチされた1つのスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該スレッドに属するリクエストであって前記格納手段によってレジスタに格納されたリクエストを前記複数の処理手段へ投入すると決定することを特徴とする請求項3記載のキャッシュ制御装置。
  6. 前記決定手段は、
    前記ラッチ手段によってラッチされた複数のスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該複数のスレッドのうち前記複数の処理手段へ前回投入されたリクエストが属するスレッドとは異なるスレッドに属するリクエストを前記複数の処理手段へ投入すると決定することを特徴とする請求項3記載のキャッシュ制御装置。
  7. 前記決定手段は、
    前記ラッチ手段によってラッチされた複数のスレッドのバリッドビットの中にパイプライン処理の停止を示すバリッドビットがある場合に、当該複数のスレッドのうち前記複数の処理手段へ前回リクエストが投入されてからの経過時間が最も長いスレッドに属するリクエストを前記複数の処理手段へ投入すると決定することを特徴とする請求項3記載のキャッシュ制御装置。
  8. 前記格納手段は、
    前記複数の処理手段に投入されたリクエストをスレッド別に前記複数の処理手段の数ずつ記憶する記憶手段を含み、
    対応するバリッドビットがパイプライン処理の停止を示すリクエストであって、最初に前記複数の処理手段に投入されたリクエストから順に前記記憶手段から出力してレジスタに格納することを特徴とする請求項1記載のキャッシュ制御装置。
  9. 複数のスレッドに属するリクエストに対してパイプライン処理を実行し、リクエストに応じたキャッシュデータを出力させるキャッシュ制御方法であって、
    複数のスレッドに属するリクエストに対して、キャッシュデータを出力するパイプライン処理を構成する個々の処理を互いに独立して実行する複数の処理ステップと、
    1つのリクエストが前記複数の処理ステップの最終ステップに到達した際に当該リクエストが属するスレッドのパイプライン処理が停止する場合、前記複数の処理ステップのそれぞれに対応するウェイトポートのうちパイプライン処理が停止したスレッドに属するリクエストに対して処理中である処理ステップに対応するウェイトポートに、パイプライン処理が停止したことを示すバリッドビットをスレッド別に設定する設定ステップと、
    前記設定ステップにてパイプライン処理の停止を示すバリッドビットが設定されると、当該バリッドビットが設定されたウェイトポートに対応する処理ステップにおいて処理中のリクエストを順次レジスタに格納する格納ステップと、
    前記格納ステップにてレジスタに格納されたリクエストおよび外部から新たに入力されるリクエストの優先度を決定して、いずれか1つのリクエストに対して前記複数の処理ステップを開始させる制御ステップと
    を有することを特徴とするキャッシュ制御方法。
JP2009520180A 2007-06-19 2007-06-19 キャッシュ制御装置およびキャッシュ制御方法 Expired - Fee Related JP4621292B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/062339 WO2008155826A1 (ja) 2007-06-19 2007-06-19 キャッシュ制御装置およびキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JPWO2008155826A1 true JPWO2008155826A1 (ja) 2010-08-26
JP4621292B2 JP4621292B2 (ja) 2011-01-26

Family

ID=40155992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520180A Expired - Fee Related JP4621292B2 (ja) 2007-06-19 2007-06-19 キャッシュ制御装置およびキャッシュ制御方法

Country Status (4)

Country Link
US (1) US20100095071A1 (ja)
EP (1) EP2159701A4 (ja)
JP (1) JP4621292B2 (ja)
WO (1) WO2008155826A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135087B1 (en) * 2012-12-27 2015-09-15 Altera Corporation Workgroup handling in pipelined circuits
US10474365B2 (en) * 2013-01-25 2019-11-12 Stroz Friedberg, LLC System and method for file processing from a block device
JP6384380B2 (ja) 2015-03-27 2018-09-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7318203B2 (ja) * 2018-12-12 2023-08-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001195301A (ja) * 2000-01-07 2001-07-19 Japan Advanced Inst Of Science & Technology Hokuriku パイプラインキャッシュメモリの更新回路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7719540B2 (en) * 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001195301A (ja) * 2000-01-07 2001-07-19 Japan Advanced Inst Of Science & Technology Hokuriku パイプラインキャッシュメモリの更新回路

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
CSNG199800666010, 伊藤 英治 Eiji ITOH, "関数型プログラムの実行に適したマルチスレッド型プロセッサ・アーキテクチャの提案 A Multithreaded Proc", 情報処理学会研究報告 Vol.96 No.121 IPSJ SIG Notes, 19961212, 第96巻, p.81−88, JP, 社団法人情報処理学会 Information Processing Socie *
CSNG199800846014, 平田 博章 Hiroaki HIRATA, "マルチスレッドプロセッサおよび1チップマルチプロセッサのための命令キャッシュ構成・命令フェッチ方式の", 電子情報通信学会論文誌 (J81−D−I) 第6号 THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, 19980625, 第J81−D−I巻,第6号, p.718−727, JP, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO *
CSNG200000542010, 木村 浩三 Kozo Kimura, "マルチスレッドプロセッサのデータキャッシュ制御方式 Contorl method of Data Cache for Multithreaded P", 映像情報メディア学会誌 第52巻 第5号 THE JOURNAL OF THE INSTITUTE OF IMAGE INFORMATION AND TELE, 19980520, 第52巻, p.742−749, JP, 社団法人映像情報メディア学会 THE INSTITUTE OF IM *
CSNG200600108004, Poonacha KONGETIRA, "新世代マイクロプロセッサアーキテクチャ(後編) New Generation Microprocessor Architecture (2)", 情報処理 第46巻 第11号 IPSJ MAGAZINE, 20051115, 第46巻, p.1236−1243, JP, 社団法人情報処理学会 Information Processing Socie *
JPN6010043844, 木村 浩三 Kozo Kimura, "マルチスレッドプロセッサのデータキャッシュ制御方式 Contorl method of Data Cache for Multithreaded P", 映像情報メディア学会誌 第52巻 第5号 THE JOURNAL OF THE INSTITUTE OF IMAGE INFORMATION AND TELE, 19980520, 第52巻, p.742−749, JP, 社団法人映像情報メディア学会 THE INSTITUTE OF IM *
JPN6010043845, 伊藤 英治 Eiji ITOH, "関数型プログラムの実行に適したマルチスレッド型プロセッサ・アーキテクチャの提案 A Multithreaded Proc", 情報処理学会研究報告 Vol.96 No.121 IPSJ SIG Notes, 19961212, 第96巻, p.81−88, JP, 社団法人情報処理学会 Information Processing Socie *
JPN6010043846, Poonacha KONGETIRA, "新世代マイクロプロセッサアーキテクチャ(後編) New Generation Microprocessor Architecture (2)", 情報処理 第46巻 第11号 IPSJ MAGAZINE, 20051115, 第46巻, p.1236−1243, JP, 社団法人情報処理学会 Information Processing Socie *
JPN6010043847, 平田 博章 Hiroaki HIRATA, "マルチスレッドプロセッサおよび1チップマルチプロセッサのための命令キャッシュ構成・命令フェッチ方式の", 電子情報通信学会論文誌 (J81−D−I) 第6号 THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, 19980625, 第J81−D−I巻,第6号, p.718−727, JP, 社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO *

Also Published As

Publication number Publication date
EP2159701A1 (en) 2010-03-03
JP4621292B2 (ja) 2011-01-26
US20100095071A1 (en) 2010-04-15
WO2008155826A1 (ja) 2008-12-24
EP2159701A4 (en) 2011-08-10

Similar Documents

Publication Publication Date Title
JP4973730B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9367472B2 (en) Observation of data in persistent memory
JP4208895B2 (ja) キャッシュメモリ装置および処理方法
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US8984261B2 (en) Store data forwarding with no memory model restrictions
US7073026B2 (en) Microprocessor including cache memory supporting multiple accesses per cycle
US8954681B1 (en) Multi-stage command processing pipeline and method for shared cache access
JP2007133456A (ja) 半導体装置
US11099849B2 (en) Method for reducing fetch cycles for return-type instructions
JP4621292B2 (ja) キャッシュ制御装置およびキャッシュ制御方法
US6898671B2 (en) Data processor for reducing set-associative cache energy via selective way prediction
KR20210018415A (ko) 예측 실패 복구에 대한 레이턴시를 줄이기 위한 이차적 분기 예측 저장
JP2002229852A (ja) キャッシュシステムの制御回路
US7111127B2 (en) System for supporting unlimited consecutive data stores into a cache memory
KR101122180B1 (ko) 명령 제어 장치 및 명령 제어 방법
JP2016062513A (ja) プロセッサおよびプロセッサシステム
JP3577049B2 (ja) 分岐予測回路
US8631173B2 (en) Semiconductor device
JP6016689B2 (ja) 半導体装置
JP2013210853A (ja) 情報処理装置、同期処理実行管理方法、及びプログラム
JP3767521B2 (ja) キャッシュフィル制御方法及びcpu
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP2004005710A (ja) 情報処置装置
JP2783285B2 (ja) 情報処理装置
WO2012077516A1 (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101001

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101029

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees