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

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

Info

Publication number
JP6127907B2
JP6127907B2 JP2013220675A JP2013220675A JP6127907B2 JP 6127907 B2 JP6127907 B2 JP 6127907B2 JP 2013220675 A JP2013220675 A JP 2013220675A JP 2013220675 A JP2013220675 A JP 2013220675A JP 6127907 B2 JP6127907 B2 JP 6127907B2
Authority
JP
Japan
Prior art keywords
controller
access
cache
request
issued
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
JP2013220675A
Other languages
English (en)
Other versions
JP2014112360A (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 JP2013220675A priority Critical patent/JP6127907B2/ja
Priority to US14/075,211 priority patent/US20140136796A1/en
Publication of JP2014112360A publication Critical patent/JP2014112360A/ja
Application granted granted Critical
Publication of JP6127907B2 publication Critical patent/JP6127907B2/ja
Active 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本願開示は、演算処理装置及び演算処理装置の制御方法に関する。
CPUが備えるコマンドとして、ノンキャッシュ空間へのアクセス命令がある。ノンキャッシュ空間とは、キャッシュメモリを介在せずにアクセスされるメモリ空間をいう。ノンキャッシュ空間へのアクセス命令は、キャッシュメモリを介さないで、アクセス対象のデバイスに割り当てされているメモリ空間にアクセスするための命令である。ノンキャッシュ命令によるノンキャッシュ空間へのアクセスは、ノンキャッシャブル空間として定義されたアドレス空間への読み書きとして定義される。
ノンキャッシュ空間へのアクセスの動作は、レジスタの読み書きをしたり、I/O装置への動作を指示したりするものである。例えば、メモリコントローラへのノンキャッシュリクエストにより、メモリコントローラ内にあるレジスタにアクセスできる。また例えば、PCIe(Peripheral Component Interconnect Express)コントローラへのノンキャッシュリクエストにより、PCIeコントローラ内のレジスタ、又は、例えばPCIeカード等の外部装置内のレジスタにアクセスすることができる。また例えば、CPUインタフェースコントローラへのノンキャッシュリクエストにより、他CPUに繋がっているメモリコントローラやPCIeコントローラ等の装置へアクセスすることができる。
デバイスのドライバからの割り込み処理として、当該デバイスに対してノンキャッシュライト動作を複数回実行し、その後同期をとるためにノンキャッシュリード動作を1回実行するアクセスパターンがよくある。従って、ノンキャッシュリクエストを連続発行する際に効率的に発行できることが望ましい。
従来のノンキャッシュ制御において、命令コントローラから発行されたリクエストを受けた1次キャッシュコントローラは、TLB(Translation Lookaside Buffer)を用いて、アクセス先の仮想アドレスを物理アドレスへと変換する。この物理アドレス内のNCビット(キャッシャブル空間かノンキャッシャブル空間かを表すビット)がノンキャッシュ空間を示す場合、1次キャッシュコントローラは、ノンキャッシュリクエストを2次キャッシュコントローラへ発行する。2次キャッシュコントローラは、このノンキャッシュリクエストを、リクエスト宛先のシステムコントローラ(メモリコントローラ、PCIeコントローラ、CPUインタフェースコントローラ等)に発行する。
命令コントローラから発行される次のリクエストがノンキャッシュリクエストの場合、このリクエストは1次キャッシュコントローラにおいて待機する。システムコントローラにおいて最初のリクエストの処理が完了すると、当該システムコントローラは、2次キャッシュコントローラに完了通知を発行する。完了通知を受け取った2次キャッシュコントローラは、1次キャッシュコントローラに完了通知を通知する。完了通知を受け取った1次キャッシュコントローラは、待機させておいた次のノンキャッシュリクエストを2次キャッシュコントローラに発行することができる。
上述の説明のように従来技術では、デバイスからの完了通知を待たなければ、1次キャッシュコントローラを内蔵するCPUコアから、2次キャッシュコントローラに対して、次のノンキャッシュリクエストを発行することができない。しかしながら、CPUコアからデバイスの完了通知を待たずに、連続でノンキャッシュリクエストを発行できる場合があるにも関わらず、一律にデバイスの完了通知を待つ方式としたのでは、ノンキャッシュリクエストの処理効率が悪くなってしまう。
特開2007−172609号公報
以上を鑑みると、効率よくノンキャッシュリクエストを発行できる演算処理装置が望まれる。
演算処理装置は、キャッシュメモリと、前記キャッシュメモリを制御する第1のコントローラと、前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第2のコントローラを含み、前記第1のコントローラは、前記ノンキャッシュ空間への第1及び第2のアクセスリクエストの処理順序が追い越し可能であり且つ前記第1及び第2のアクセスリクエストのアクセス先が同一である条件が満される場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待たずに前記第2のアクセスリクエストを前記第2のコントローラに発行し、前記条件が満たされない場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待ってから前記第2のアクセスリクエストを前記第2のコントローラに発行することを特徴とする。
少なくとも1つの実施例によれば、効率よくノンキャッシュリクエストを発行できる演算処理装置が提供される。
演算処理装置及び周辺デバイス等を含む演算処理システムの構成の一例を示す図である。 IU−REQのフォーマットの一例を示す図である。 NC−REQのフォーマットの一例を示す図である。 アクセスリクエスト発行処理の流れを示すフローチャートである。 アクセスリクエスト発行処理の動作の一例を示す図である。 アクセスリクエスト発行処理の動作の別の一例を示す図である。 アクセスリクエスト発行処理の動作の更に別の一例を示す図である。 TLBのTTEのフォーマットを示す図である。 アクセスリクエスト発行処理の回路構成を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、演算処理装置及び周辺デバイス等を含む演算処理システムの構成の一例を示す図である。図1の演算処理システムは、演算処理装置であるCPU10、メインメモリ11、外部装置12、及び他CPU13を含む。CPU10は、複数のCPUコア21−1乃至21−n、2次キャッシュコントローラ22、システムコントローラ23、及び2次キャッシュメモリ24を含む。複数のCPUコア21−1乃至21−nの各々は同一の構成を有しており、CPUコア21−1に代表して示されるように、演算器30、命令コントローラ31、1次キャッシュメモリ32、1次キャッシュコントローラ33、及びTLB34を含む。また、2次キャッシュコントローラ内には、各CPUコアに対応するアドレス判断部38−1乃至38−nを含む。システムコントローラ23は、メモリコントローラ35、PCIeコントローラ36、及びCPUインタフェースコントローラ37を含む。
なお図1において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
CPUコア21−1乃至21−nは、2次キャッシュメモリ24を共有し、2次キャッシュコントローラ22を介して2次キャッシュメモリ24にアクセスする。またCPUコア21−1乃至21−nは、2次キャッシュコントローラ22を介してシステムコントローラ23の各コントローラにアクセスする。メモリコントローラ35は、外部メモリであるメインメモリ11を制御するコントローラである。PCIeコントローラ36は、PCIeカード等の外部装置12を制御するコントローラである。CPUインタフェースコントローラ37は、CPU10と同様の構成及び機能を有する他CPU13との情報のやり取りを制御する。システムコントローラ23のこれらのコントローラには、キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられている。
命令コントローラ31は、1次キャッシュメモリ32からフェッチした命令をデコードし、デコード結果に応じて演算器30による演算命令の実行を制御する。また命令コントローラ31は、ロード命令やストア命令等のアクセスリクエスト(IU−REQ: Instruction Unit-Request)を1次キャッシュコントローラ33に発行し、1次キャッシュメモリ32に対するデータのロードやデータのストアを実行する。
命令コントローラ31から発行されたアクセスリクエスト(IU−REQ)を受けた1次キャッシュコントローラ33は、TLB34を参照して、アクセスリクエスト中の仮想アドレスを物理アドレスへと変換する。図8よりTLB34のTTE(Translation Table Entry)には、アクセス空間にサイドエフェクトがあるかないかを示すEビット50(TTEe)と物理ページ番号を示すPA51がある。アクセスリクエスト中のアクセス先のアドレスが、インオーダー処理を要件とするデバイスのメモリ空間に対応する場合には、TLB34を参照することによりTTEe=1が得られる。またアクセスリクエスト中のアクセス先のアドレスが、アクセスリクエストの処理順序が追い越し可能であるデバイスのメモリ空間に対応する場合には、TLB34を参照することによりTTEe=0が得られる。
またTLB34を参照して仮想アドレスとPA51から得られた物理アドレスには、当該アドレスがキャッシャブル空間かノンキャッシャブル空間かを示すビットであるNCビットが含まれる。1次キャッシュコントローラ33は、NCビットがノンキャッシュ空間を示す場合、ノンキャッシュリクエスト(NC−REQ: NonCache-Request)を、2次キャッシュコントローラ22へ発行する。1次キャッシュコントローラ33は、NCビットがキャッシュ空間を示す場合、1次キャッシュメモリ32に対するアクセスを実行する。1次キャッシュメモリ32と2次キャッシュメモリ24とは階層構造となっており、1次キャッシュメモリ32においてアクセスがヒットしない場合、2次キャッシュコントローラ22を介して2次キャッシュメモリ24へのアクセスが実行される。1次キャッシュコントローラ33と2次キャッシュコントローラ22とは、キャッシュメモリ(1次キャッシュメモリ32及び2次キャッシュメモリ24)を制御するコントローラである。
図2は、IU−REQのフォーマットの一例を示す図である。図2に示されるように、命令コントローラ31から1次キャッシュコントローラ33に発行するアクセスリクエストであるIU−REQは、命令コード41と仮想アドレス42とを含む。命令コード(オペコード)41は、当該命令の種類を示すコードであり、例えばストア命令(書き込み命令)であることを示すコードやロード命令(読み出し命令)であることを示すコードである。仮想アドレス42は、ストア命令やロード命令等においてアクセスする先を示す仮想アドレスである。
図3は、NC−REQのフォーマットの一例を示す図である。図3に示されるように、1次キャッシュコントローラ33から2次キャッシュコントローラ22へ発行するアクセスリクエストであるNC−REQは、ノンキャッシュ命令コード(オペコード)43と物理アドレス44とCORE−ID49を含む。ノンキャッシュ命令コード43は、当該命令の種類を示すコードであり、例えば当該命令が例えばノンキャッシュストア命令(書き込み命令)であることを示すコードや、ノンキャッシュロード命令(読み出し命令)であることを示すコードである。物理アドレス44は、NCビット45、CPU識別子であるCPU−ID46、コントローラ識別子であるCTL−ID47、及びアドレス48を含む。また、CORE−ID49はCPUコア識別子である。
NCビット45は、前述のように、アクセス先のアドレス(アドレス48が指し示す先)がキャッシャブル空間かノンキャッシャブル空間かを示すビットである。またCPU−ID46は、当該NC−REQがアクセスする先のCPUを識別する識別子である。例えばNC−REQが、図1に示すCPU10内のPCIeコントローラ36にアクセスする場合、CPU−ID46は、図1に示す当該CPU10を識別する識別子となる。またNC−REQが、図1に示す他CPU13のPCIeコントローラにアクセスする場合、CPU−ID46は、図1に示す他CPU13を識別する識別子となる。CTL−ID47は、アクセス先のコントローラを識別する識別子である。例えばNC−REQが、図1に示すCPU10内のPCIeコントローラ36にアクセスする場合、CTL−ID47は、図1に示すPCIeコントローラ36を識別する識別子となる。アドレス48は、メモリ空間中のアクセス先の物理アドレスである。例えばNC−REQが、図1に示すCPU10内のPCIeコントローラ36にアクセスする場合、アドレス48は、PCIeコントローラ36に割り当てられたメモリ空間中の特定のアドレスとなる。CORE−ID49は各CPUコア21−1乃至21−nからのNC−REQから作成され、NC−REQのリクエスト元であるCPUコアを識別する識別子となる。
図4は、アクセスリクエスト発行処理の流れを示すフローチャートである。図4を参照して、アクセスリクエスト発行処理について説明する。
ステップS1において、命令コントローラ31がリクエスト(IU−REQ)を発行する。ステップS2において、1次キャッシュコントローラ33が、リクエスト(IU−REQ)を受け付け、リクエスト中の仮想アドレスに基づきTLB34を参照することにより、仮想アドレスに対応する物理アドレスを得る。1次キャッシュコントローラ33は更に、物理アドレス中のNCビットを確認することにより、当該リクエストがノンキャッシュ空間へのアクセスであるか否かを判断する。当該リクエストがキャッシュ空間へのアクセスである場合には、1次キャッシュメモリ32や2次キャッシュメモリ24に対する通常のキャッシュアクセス制御が実行される。当該リクエストがノンキャッシュ空間へのアクセスである場合には、ステップS3以降の処理が実行される。
ステップS3で、1次キャッシュコントローラ33は、TLB34を参照することにより得られたTTEeの値が0であるか否かを判定する。TTEe=0でない場合(TTEe=1の場合)、アクセス先のメモリ空間がインオーダー処理を要件とするデバイスであることを意味する。この場合、ステップS4で、1次キャッシュコントローラ33は、当該リクエストの直前のリクエストに対するアクセス先のデバイス又はコントローラからの完了通知(リクエストされた処理の実行の完了を知らせる通知)を既に受領しているか否かを判定する。既に完了通知を受領していれば、1次キャッシュコントローラ33は、2次キャッシュコントローラ22にリクエスト(NC−REQ)を発行する(ステップS8)。完了通知を受領していない場合、ステップS5で、1次キャッシュコントローラ33は、デバイスからの完了通知が到来するまで待機する。完了通知が到来すると、1次キャッシュコントローラ33は、2次キャッシュコントローラ22にリクエスト(NC−REQ)を発行する(ステップS8)。
このように1次キャッシュコントローラ33は、ノンキャッシュ空間へのアクセスリクエストの処理順序が追い越し可能でないと判定した場合、2次キャッシュコントローラ22へ先に発行したアクセスリクエストに対する完了通知を待つ。この完了通知は、アクセス先のデバイスからシステムコントローラ23を介して、又はシステムコントローラ23から到来する。1次キャッシュコントローラ33は、先に発行したアクセスリクエストに対する完了通知を待ってから(即ち完了通知が到来すると)、現在処理中のアクセスリクエストを2次キャッシュコントローラ22に発行する。
ステップS3の判定結果がTTEe=0である場合、アクセス先のメモリ空間がアクセスリクエストの処理順序が追い越し可能であるデバイスに対応することを意味する。この場合、ステップS6で、直前のリクエストについて2次キャッシュコントローラ22からの応答(NC−TKN)があるか否かを確認する。この応答(NC−TKN)は、2次キャッシュコントローラ22が、アクセスリクエストをシステムコントローラ23に発行すると、上記の完了通知を待つことなく1次キャッシュコントローラ33に送信するものである。
応答を受領していない場合(ステップS6でNo)、ステップS7で、1次キャッシュコントローラ33は応答が到来するまで待機する。応答を受領すると(ステップS6でYes)、ステップS8で、1次キャッシュコントローラ33は、2次キャッシュコントローラ22にリクエスト(NC−REQ)を発行する。
このように1次キャッシュコントローラ33は、ノンキャッシュ空間へのアクセスリクエストの処理順序が追い越し可能であると判定した場合、2次キャッシュコントローラ22へ先に発行したアクセスリクエストに対する応答を待つ。この応答は、2次キャッシュコントローラ22が、アクセスリクエストをシステムコントローラ23に発行すると、完了通知を待つことなく1次キャッシュコントローラ33に送信するものである。1次キャッシュコントローラ33は、先に発行したアクセスリクエストに対する応答を待ってから(即ち応答が到来すると)、現在処理中のアクセスリクエストを2次キャッシュコントローラ22に発行する。
ステップS9で、2次キャッシュコントローラ22は、1次キャッシュコントローラ33からのアクセスリクエストを受け付ける。ステップS10で、2次キャッシュコントローラ22は、システムコントローラ23へのリクエストの発行数を確認する。ここでリクエストの発行数とは、2次キャッシュコントローラ22からシステムコントローラ23へ発行したリクエストであって、その完了通知がシステムコントローラ23から届いていないリクエストの数である。
ステップS10での判定結果が発行数=0を示す場合、ステップS11で、2次キャッシュコントローラ22はシステムコントローラ23にアクセスリクエストを発行し、且つ、1次キャッシュコントローラ33に応答NC−TKNを送信する。2次キャッシュコントローラ22は更に、発行したリクエストのアドレスを保持し(記憶し)、発行数のカウントを1増加する。
ステップS10での判定結果が発行数が0より大きく且つfull未満であることを示す場合、ステップS12で、2次キャッシュコントローラ22は、直前のアクセスリクエストの記憶してあるアドレスと現在処理中のアクセスリクエストのアドレスとを比較する。この比較はアクセス先(「宛先」)を確認するために行われる。
直前と現在との2つのアクセスリクエストのアクセス先が同一である条件が満される場合(ステップS12で「同一宛先」)、ステップS11で、2次キャッシュコントローラ22は、システムコントローラ23にアクセスリクエストを発行する。この際、2次キャッシュコントローラ22は、システムコントローラ23へ先に発行したアクセスリクエストに対するシステムコントローラ23からの完了通知を待たずに、現在処理中のアクセスリクエストをシステムコントローラ23に発行する。なおシステムコントローラ23は複数のコントローラ(35,36,37)を含んでいる。従って、2次キャッシュコントローラ22がシステムコントローラ23にアクセスリクエストを発行する場合には、NC−REQの物理アドレス(図3参照)のCTL−ID47が示す1つのコントローラにアクセスリクエストが発行されることになる。また、2つのアクセスリクエストがこれら複数のコントローラのうちの1つの同一のコントローラにアクセスする場合に、2次キャッシュコントローラ22は、2つのアクセスリクエストのアクセス先が同一であると判定する。より具体的には、図3に示す物理アドレス44のうち、上位ビット側のCPU−ID46、及びCTL−ID47が2つのアクセスリクエストにおいて一致している場合に、2つのアクセスリクエストのアクセス先が同一であると判定する。下位ビット側のアドレス48が2つのアクセスリクエストにおいて異なっていても、2つのアクセスリクエストのアクセス先が同一であると判定する。
直前と現在との2つのアクセスリクエストのアクセス先が同一である条件が満されない場合(ステップS12で「別宛先」)、ステップS13で、2次キャッシュコントローラ22は、発行数が0になるまで待機する。発行数は、システムコントローラ23へ既に発行したアクセスリクエストに対するシステムコントローラ23からの完了通知(リクエストされた処理実行が完了したことを知らせる通知:NC−END)が到来するたびに、1減少する。発行数が0になると、2次キャッシュコントローラ22は、現在処理中のアクセスリクエストをシステムコントローラ23に発行する(ステップS11)。このようにして、アクセス先が同一である条件が満されない場合、2次キャッシュコントローラ22は、システムコントローラ23へ先に発行したアクセスリクエストに対するシステムコントローラ23からの完了通知を待機する。2次キャッシュコントローラ22は、先に発行したアクセスリクエストに対するシステムコントローラ23からの完了通知を待ってから、現在処理中のアクセスリクエストをシステムコントローラ23に発行する。この際、システムコントローラ23へ先に発行したアクセスリクエストが複数有る場合には、全てのアクセスリクエストに対するシステムコントローラ23からの完了通知を待ってから、現在処理中のアクセスリクエストをシステムコントローラ23に発行する。
ステップS10での判定結果が発行数=fullを示す場合、ステップS13で、2次キャッシュコントローラ22は、発行数<fullになるまで待機する。ここでfullとは、2次キャッシュコントローラ22が受け付けることのできるリクエストの数であり、例えば、受け付けたリクエストを保持する2次キャッシュコントローラ22に内蔵のバッファの容量に依存する。
ステップS14で、システムコントローラ23(メモリコントローラ35、PCIeコントローラ36、又はCPUインタフェースコントローラ37)がリクエストを受け付け、必要に応じてデバイス側にリクエストを発行する。即ち、メインメモリ11や、外部装置12や、他CPU13等にリクエストを発行する。なお、例えばPCIeコントローラ36がリクエストを受け付けた場合、当該リクエストがPCIeコントローラ36内部のレジスタにアクセスするリクエストである場合には、外部装置12にリクエストを発行することはない。一方、当該リクエストが外部装置12にアクセスするリクエストである場合には、PCIeコントローラ36から外部装置12にリクエストが発行される。
ステップS15で、デバイス側或いはシステムコントローラ23によりリクエスト処理が完了すると、処理完了を示す完了通知(NC−END)がシステムコントローラ23から2次キャッシュコントローラ22に送信される。前述のように、完了通知(NC−END)が到来するたびに、2次キャッシュコントローラ22側では、発行数を1減少する処理を行う。
図5は、アクセスリクエスト発行処理の動作の一例を示す図である。まず命令コントローラ31から1次キャッシュコントローラ33にリクエストIU−REQ1が発行される。このリクエストIU−REQ1に対応するTTEeが0である場合、ノンキャッシュリクエストNC−REQ1が、1次キャッシュコントローラ33から2次キャッシュコントローラ22へと発行される。ここで、次のリクエストIU−REQ2及びIU−REQ3が命令コントローラ31から発行され、対応するTTEeが0である場合、対応するノンキャッシュリクエストNC−REQ2及びNC−REQ3は、1次キャッシュコントローラ33で待機する。
1次キャッシュコントローラ33からノンキャッシュリクエストNC−REQ1を受け取った2次キャッシュコントローラ22は、初期状態での発行数が0であるので、直ちにシステムコントローラ23にノンキャッシュリクエストNC−REQ1を発行する。この際、発行数は1増加される(ステップS51)。またNC−REQ1の発行と同時に、又は並行して、又は直前若しくは直後に、2次キャッシュコントローラ22は、NC−REQ1の発行を示す通知として、1次キャッシュコントローラ33に応答NC−TKN1を発行する。NC−TKN1を受け取った1次キャッシュコントローラ33は、次のノンキャッシュリクエストNC−REQ2を2次キャッシュコントローラ22に発行する。
NC−REQ2を受け取った2次キャッシュコントローラ22は、NC−REQ1のアクセス先とNC−REQ2のアクセス先とを比較して、同一アクセス先(同一宛先)ならば、直ちにシステムコントローラ23にNC−REQ2を発行する。この際、発行数は1増加される(ステップS52)。またNC−REQ2の発行と同時に、又は並行して、又は直前若しくは直後に、2次キャッシュコントローラ22は、NC−REQ2の発行を示す通知として、1次キャッシュコントローラ33に応答NC−TKN2を発行する。NC−TKN2を受け取った1次キャッシュコントローラ33は、次のノンキャッシュリクエストNC−REQ3を2次キャッシュコントローラ22に発行する。
NC−REQ3を受け取った2次キャッシュコントローラ22は、NC−REQ2のアクセス先とNC−REQ3のアクセス先とを比較して、同一アクセス先(同一宛先)ならば、直ちにシステムコントローラ23にNC−REQ3を発行する。この際、発行数は1増加される(ステップS53)。またNC−REQ3の発行と同時に、又は並行して、又は直前若しくは直後に、2次キャッシュコントローラ22は、NC−REQ3の発行を示す通知として、1次キャッシュコントローラ33に応答NC−TKN3を発行する。
リクエスト完了通知NC−END1及びNC−END2がシステムコントローラ23から2次キャッシュコントローラ22に送信されると、2次キャッシュコントローラ22では各完了通知毎に発行数を1減算する(ステップS54、S56)。
図6は、アクセスリクエスト発行処理の動作の別の一例を示す図である。まず命令コントローラ31から1次キャッシュコントローラ33にリクエストIU−REQ1が発行される。このリクエストIU−REQ1に対応するTTEeが0である場合、ノンキャッシュリクエストNC−REQ1が、1次キャッシュコントローラ33から2次キャッシュコントローラ22へと発行される。ここで、次のリクエストIU−REQ2及びIU−REQ3が命令コントローラ31から発行され、対応するTTEeが0である場合、対応するノンキャッシュリクエストNC−REQ2及びNC−REQ3は、1次キャッシュコントローラ33で待機する。
1次キャッシュコントローラ33からノンキャッシュリクエストNC−REQ1を受け取った2次キャッシュコントローラ22は、初期状態での発行数が0であるので、直ちにシステムコントローラ23にノンキャッシュリクエストNC−REQ1を発行する。この際、発行数は1増加される(ステップS61)。またNC−REQ1の発行と同時に、又は並行して、又は直前若しくは直後に、2次キャッシュコントローラ22は、NC−REQ1の発行を示す通知として、1次キャッシュコントローラ33に応答NC−TKN1を発行する。NC−TKN1を受け取った1次キャッシュコントローラ33は、次のノンキャッシュリクエストNC−REQ2を2次キャッシュコントローラ22に発行する。
NC−REQ2を受け取った2次キャッシュコントローラ22は、NC−REQ1のアクセス先とNC−REQ2のアクセス先とを比較する。アクセス先が異なる(別宛先)であるので(ステップS62)、2次キャッシュコントローラ22は、先にシステムコントローラ23へ発行したNC−REQ1に対する完了通知NC−END1が到来するまでNC−REQ2を待機させる。NC−REQ1に対する完了通知NC−END1がシステムコントローラ23から到来すると、2次キャッシュコントローラ22は、発行数を1減算する(ステップS63)。これにより発行数が0となるので、2次キャッシュコントローラ22は、システムコントローラ23にNC−REQ2を発行する。これに応じて、発行数は1増加される(ステップS63)。またNC−REQ2の発行と同時に、又は並行して、又は直前若しくは直後に、2次キャッシュコントローラ22は、NC−REQ2の発行を示す通知として、1次キャッシュコントローラ33に応答NC−TKN2を発行する。NC−TKN2を受け取った1次キャッシュコントローラ33は、次のノンキャッシュリクエストNC−REQ3を2次キャッシュコントローラ22に発行する。
NC−REQ3を受け取った2次キャッシュコントローラ22は、NC−REQ2のアクセス先とNC−REQ3のアクセス先とを比較する。アクセス先が異なる(別宛先)であるので(ステップS64)、2次キャッシュコントローラ22は、先にシステムコントローラ23へ発行したNC−REQ2に対する完了通知NC−END2が到来するまでNC−REQ3を待機させる。
リクエスト完了通知NC−END2がシステムコントローラ23から2次キャッシュコントローラ22に送信されると、2次キャッシュコントローラ22では発行数を1減算する(ステップS65)。
図7は、アクセスリクエスト発行処理の動作の更に別の一例を示す図である。図7に示す例では、命令コントローラ31、1次キャッシュコントローラ33、及び2次キャッシュコントローラ22の動作は、図5に示す動作と同じである。図7においては、図5の場合と異なり、システムコントローラ23又はデバイスによるリクエスト処理が、NC−REQ1よりもNC−REQ2に対して先に完了している。その結果、NC−REQ2に対する完了通知NC−END2が、NC−REQ1に対する完了通知NC−END1よりも先に、システムコントローラ23から2次キャッシュコントローラ22に発行されている。NC−REQ1及びNC−REQ2は、TTEeが0であり、アクセス先のメモリ空間がアクセスリクエストの処理順序が追い越し可能であるデバイスに対応している。従って、図7に示す動作例の場合のように、後にリクエストが発行されたNC−END2が、先にリクエストが発行されたNC−REQ1を追い越して、先に処理が完了してしまってもよい。このようにアクセスリクエストの処理順序が追い越し可能である場合、後に発行されたアクセスリクエストが、先に発行されたアクセスリクエストよりも、先に処理が開始されて先に処理が完了したり、後に処理が開始されて先に処理が完了したりしてよい。即ち、アクセスリクエストの処理順序が追い越し可能である場合、処理順序がリクエスト発行順序と異なってもよく、処理順序がリクエスト発行順序と異なったことによる結果として、処理結果に支障が生じることがない。
図9はアクセスリクエスト発行処理の回路構成を示す図である。複数のCPUコア21−1乃至21−nからそれぞれ2次キャッシュコントローラ22にNC−REQが発行される。2次キャッシュコントローラ22には各CPUコア21−1乃至21−nに対応したアドレス判断部38−1乃至38−nを有しており、それぞれのアドレス判断部38−1乃至38−nで宛先確認を行う。アドレス判断部38−1乃至38−nでは、CPUコア21−1乃至21−nからNC−REQが来た場合、そのリクエストのアドレスを保持しておく。宛先確認は、現在処理中のNC−REQと保持していた直前のNC−REQのCPU−ID46、及びCTL−ID47を比較して同一宛先かどうかを判定する。システムコントローラ23へリクエスト発行後もアドレスは保持しておく。選択部39では発行可能となったCPUコア21−1乃至21−nからのリクエストを任意に選択してシステムコントローラ23へとNC−REQを発行する。また、システムコントローラ23からのリクエスト完了通知を受けた2次キャッシュコントローラ22は、応答部40で完了通知に付随されたCORE−IDを確認して、リクエスト発行元のCPUコアへとNC−ENDを返す。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 CPU
11 メインメモリ
12 外部装置
13 他CPU
21−1乃至21−n CPUコア
22 2次キャッシュコントローラ
23 システムコントローラ
24 2次キャッシュメモリ
30 演算器
31 命令コントローラ
32 1次キャッシュメモリ
33 1次キャッシュコントローラ
34 TLB
35 メモリコントローラ
36 PCIeコントローラ
37 CPUインタフェースコントローラ
38−1乃至38−n アドレス判断部
39 選択部
40 応答部

Claims (7)

  1. キャッシュメモリと、
    前記キャッシュメモリを制御する第1のコントローラと、
    前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第2のコントローラと、
    を含み、前記第1のコントローラは、前記ノンキャッシュ空間への第1及び第2のアクセスリクエストの処理順序が追い越し可能であり且つ前記第1及び第2のアクセスリクエストのアクセス先が同一である条件が満される場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待たずに前記第2のアクセスリクエストを前記第2のコントローラに発行し、前記条件が満たされない場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待ってから前記第2のアクセスリクエストを前記第2のコントローラに発行することを特徴とする演算処理装置。
  2. 前記第2のコントローラは複数のコントローラを含み、前記第1及び第2のアクセスリクエストが前記複数のコントローラのうちの1つの同一のコントローラにアクセスする場合に、前記第1のコントローラは、前記第1及び第2のアクセスリクエストのアクセス先が同一であると判定することを特徴とする請求項1記載の演算処理装置。
  3. 前記第1のコントローラは、1次キャッシュコントローラと2次キャッシュコントローラとを含み、
    前記1次キャッシュコントローラは、前記ノンキャッシュ空間への前記第1及び第2のアクセスリクエストの処理順序が追い越し可能であると判定した場合、前記2次キャッシュコントローラへ先に発行した前記第1のアクセスリクエストに対する前記2次キャッシュコントローラからの応答を待ってから前記第2のアクセスリクエストを前記2次キャッシュコントローラに発行し、前記ノンキャッシュ空間への前記第1及び第2のアクセスリクエストの処理順序が追い越し可能でないと判定した場合、前記2次キャッシュコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待ってから前記第2のアクセスリクエストを前記2次キャッシュコントローラに発行し、
    前記2次キャッシュコントローラは、前記第1のアクセスリクエストを前記第2のコントローラに発行すると、前記完了通知を待つことなく前記応答を前記1次キャッシュコントローラに送信する
    ことを特徴とする請求項1又は2記載の演算処理装置。
  4. 前記第1のコントローラは、前記ノンキャッシュ空間への複数のアクセスリクエストの処理順序が追い越し可能であるが前記複数のアクセスリクエストのアクセス先が同一でない場合、前記第2のコントローラへ先に発行した全てのアクセスリクエストに対する前記第2のコントローラからの完了通知を待ってから、次のアクセスリクエストを前記第2のコントローラに発行することを特徴とする請求項1乃至3何れか一項記載の演算処理装置。
  5. 論理アドレスを物理アドレスに変換するために用いるTLBを更に含み、
    前記第1のコントローラは、前記TLBに含まれる情報に基づいて、前記ノンキャッシュ空間への前記第1及び第2のアクセスリクエストの処理順序が追い越し可能であるか否かを判定することを特徴とする請求項1乃至4何れか一項記載の演算処理装置。
  6. キャッシュメモリと、前記キャッシュメモリを制御する第1のコントローラと、前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第2のコントローラとを含む演算処理装置において、
    前記ノンキャッシュ空間への第1及び第2のアクセスリクエストの処理順序が追い越し可能である第1の条件が満たされるか否かを判定し、
    前記第1及び第2のアクセスリクエストのアクセス先が同一である第2の条件が満たされるか否かを判定し、
    前記第1の条件及び前記第2の条件の両方が満たされる場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待たずに、前記第2のアクセスリクエストを前記第1のコントローラから前記第2のコントローラに発行し、
    前記第1の条件及び前記第2の条件の少なくとも一方が満たされない場合、前記第2のコントローラへ先に発行した前記第1のアクセスリクエストに対する前記第2のコントローラからの完了通知を待ってから、前記第2のアクセスリクエストを前記第1のコントローラから前記第2のコントローラに発行する
    ことを特徴とする演算処理装置の制御方法。
  7. 前記第2のコントローラは複数のコントローラを含み、前記第1及び第2のアクセスリクエストが前記複数のコントローラのうちの1つの同一のコントローラにアクセスする場合に、前記第1のコントローラは、前記第2の条件が満たされると判定することを特徴とする請求項6記載の演算処理装置の制御方法。
JP2013220675A 2012-11-12 2013-10-23 演算処理装置及び演算処理装置の制御方法 Active JP6127907B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013220675A JP6127907B2 (ja) 2012-11-12 2013-10-23 演算処理装置及び演算処理装置の制御方法
US14/075,211 US20140136796A1 (en) 2012-11-12 2013-11-08 Arithmetic processing device and method for controlling the same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012248661 2012-11-12
JP2012248661 2012-11-12
JP2013220675A JP6127907B2 (ja) 2012-11-12 2013-10-23 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2014112360A JP2014112360A (ja) 2014-06-19
JP6127907B2 true JP6127907B2 (ja) 2017-05-17

Family

ID=50682873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013220675A Active JP6127907B2 (ja) 2012-11-12 2013-10-23 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20140136796A1 (ja)
JP (1) JP6127907B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102002901B1 (ko) * 2013-01-28 2019-07-23 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 이의 제어 방법
US9864694B2 (en) * 2015-05-04 2018-01-09 Arm Limited Tracking the content of a cache using a way tracker having entries with a cache miss indicator

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339399A (en) * 1991-04-12 1994-08-16 Intel Corporation Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus
JPH0724043B2 (ja) * 1993-01-20 1995-03-15 株式会社日立製作所 データ処理装置
US5557769A (en) * 1994-06-17 1996-09-17 Advanced Micro Devices Mechanism and protocol for maintaining cache coherency within an integrated processor
ZA954460B (en) * 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
US5642494A (en) * 1994-12-21 1997-06-24 Intel Corporation Cache memory with reduced request-blocking
US5659710A (en) * 1995-11-29 1997-08-19 International Business Machines Corporation Cache coherency method and system employing serially encoded snoop responses
US6014737A (en) * 1997-11-19 2000-01-11 Sony Corporation Of Japan Method and system for allowing a processor to perform read bypassing while automatically maintaining input/output data integrity
US6038642A (en) * 1997-12-17 2000-03-14 International Business Machines Corporation Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system
JP3391315B2 (ja) * 1999-10-20 2003-03-31 日本電気株式会社 バス制御装置
JP3564343B2 (ja) * 1999-11-25 2004-09-08 エヌイーシーコンピュータテクノ株式会社 キャッシュバイパス時のデータ転送装置と方法
JP4264422B2 (ja) * 2005-03-16 2009-05-20 富士通株式会社 負荷制御機能付き速度変換装置
US20090119361A1 (en) * 2007-11-02 2009-05-07 International Business Machines Corporation Cache management for parallel asynchronous requests in a content delivery system
TW201015579A (en) * 2008-09-18 2010-04-16 Panasonic Corp Buffer memory device, memory system, and data readout method
JP6183049B2 (ja) * 2013-08-15 2017-08-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20140136796A1 (en) 2014-05-15
JP2014112360A (ja) 2014-06-19

Similar Documents

Publication Publication Date Title
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
EP2568389B1 (en) Coherence switch for i/o traffic
TWI466060B (zh) 轉譯單元、顯示管與在顯示管中之串流轉譯之方法與裝置
US9280290B2 (en) Method for steering DMA write requests to cache memory
TW201905714A (zh) 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體
EP3335124B1 (en) Register files for i/o packet compression
JP5703378B2 (ja) アラインメント制御
WO2016078307A1 (zh) 可配置片上互联系统及其实现方法、装置和存储介质
WO2018038856A1 (en) Dynamically determining memory attributes in processor-based systems
US9990294B2 (en) Methods for performing a memory resource retry
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
JP6127907B2 (ja) 演算処理装置及び演算処理装置の制御方法
CN108027726B (zh) 用于在远程处理器上实施原子动作的硬件机制
US11886340B1 (en) Real-time processing in computer systems
US10346328B2 (en) Method and apparatus for indicating interrupts
JP2010061220A (ja) データ転送装置、データ転送方法およびプロセッサ
EP1704487B1 (en) Dmac issue mechanism via streaming id method
JP6183049B2 (ja) 演算処理装置及び演算処理装置の制御方法
WO2017172334A1 (en) Providing memory bandwidth compression using compression indicator (ci) hint directories in a central processing unit (cpu)-based system
JP5668573B2 (ja) マイクロプロセッサ、メモリアクセス方法
US20220261355A1 (en) Performing speculative address translation in processor-based devices
EP3353660B1 (en) Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols
JP4583981B2 (ja) 画像処理装置
JP2006268734A (ja) メモリアクセス制御装置
JP2008509470A (ja) プロセッサと外部周辺装置との間の通信を制御するコントローラおよび方法

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20160401

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170327

R150 Certificate of patent or registration of utility model

Ref document number: 6127907

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150